{"_id":"@adroit-group/ng-utils","_rev":"12-2e35100c33ab7a2452226ad7e9013fdd","name":"@adroit-group/ng-utils","dist-tags":{"latest":"15.1.0"},"versions":{"0.1.0":{"name":"@adroit-group/ng-utils","version":"0.1.0","peerDependencies":{"@angular/common":"^12.1.0-","@angular/core":"^12.1.0-","@angular/flex-layout":"^12.0.0-beta.34","rxjs":"~6.6.0","@angular/cdk":"13.1.3","@angular/platform-browser-dynamic":"13.1.3"},"dependencies":{"tslib":"^2.2.0"},"module":"fesm2015/adroit-group-ng-utils.mjs","es2020":"fesm2020/adroit-group-ng-utils.mjs","esm2020":"esm2020/adroit-group-ng-utils.mjs","fesm2020":"fesm2020/adroit-group-ng-utils.mjs","fesm2015":"fesm2015/adroit-group-ng-utils.mjs","typings":"adroit-group-ng-utils.d.ts","exports":{"./package.json":{"default":"./package.json"},".":{"types":"./adroit-group-ng-utils.d.ts","esm2020":"./esm2020/adroit-group-ng-utils.mjs","es2020":"./fesm2020/adroit-group-ng-utils.mjs","es2015":"./fesm2015/adroit-group-ng-utils.mjs","node":"./fesm2015/adroit-group-ng-utils.mjs","default":"./fesm2020/adroit-group-ng-utils.mjs"},"./ngx-cdps-meter":{"types":"./ngx-cdps-meter/adroit-group-ng-utils-ngx-cdps-meter.d.ts","esm2020":"./esm2020/ngx-cdps-meter/adroit-group-ng-utils-ngx-cdps-meter.mjs","es2020":"./fesm2020/adroit-group-ng-utils-ngx-cdps-meter.mjs","es2015":"./fesm2015/adroit-group-ng-utils-ngx-cdps-meter.mjs","node":"./fesm2015/adroit-group-ng-utils-ngx-cdps-meter.mjs","default":"./fesm2020/adroit-group-ng-utils-ngx-cdps-meter.mjs"}},"sideEffects":false,"description":"<p align=\"center\">\r  <img width=\"0\" height=\"0\" src=\"https://adroitgroup.io/wp-content/uploads/2019/02/web_logo.png?sanitize=true\">\r </p>","_id":"@adroit-group/ng-utils@0.1.0","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-46bKGYRgbBkrL6nJXeUiHpjurSfITObxD2IEzkNx4JOhK60ALDkon39+69yPx3SNyFbLqKPZrtRSxOjitjDXnA==","shasum":"1fc775ebaf40ec8f6b77fd42ff01c9570ea7fb6e","tarball":"https://registry.npmjs.org/@adroit-group/ng-utils/-/ng-utils-0.1.0.tgz","fileCount":186,"unpackedSize":589756,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiFstaACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqS4A//UlmK+hNYTfyutEEyMCca1iyFea1AewZeUROIZ+pUshPstJ/2\r\n0nq1+NEkan6ZZKM4WF5XzHvlyu1eKTehZVHiV5T4rXmeyb2nJa4kNbY4eYaR\r\njZK/OsOju1uy3YOQNcVs3Rdy/BicKJYzw60w9y69c9VJZ4KYKG4MJ1eL0vYq\r\nJsrruOvwuCNurjmqJUrN2sLe8jWb9NjE+GCNrXjIomZ5QGqsRZFzr40AAl8a\r\n2rQLArvhAQagC8INMo0hhS7+wzh+7J2+qt6hn5y07q/yG5ytS2QfrRNeQR/j\r\nYsWIKd4FKBPqm5t6zwwfRtoPQngTh+Npp5CMy6v5jNoHfjUUVlvSdkgfpaZF\r\nMv4ad6+A0juTuipUP68Ni5wunptE954U4v8Nu5BeeXQ5K906X5ErrxuZVRHP\r\nwJhhSyilWDOP/1800sIcbB4y95CItLjpAHfbmRGtI0gXHCaruq9sU8JCSszU\r\n+EGpOJJGVORQDN35hwiJrYXct1OtIcdqJycTTgsgsxv3tHNXYlzZB8qatER2\r\nr/3X5Uft3wGDpyvvuxOxuTgSOzeC9JjB6vTRLRj3kVUU5okhAmH7HM/fHReN\r\nYHoTx/6AXbeQIA1t3GM61DlK9srrSqK2hwQrlHlpOLsgveaZFl50VOQLlYfz\r\nAJgTSaDyQWZh0N4IMtdtLCCRIadysGSRhlI=\r\n=yK/U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFv6jDpY5CDQiuFRj6AZPyLvGQCxjd5BYnlsDCemR+G7AiEA0d1fOBqBjQY0Obxpcj4vObQ1ZqeUmYOXfhDKRkC0gOA="}]},"_npmUser":{"name":"jonatanferenczfi","email":"jonatanferenczfi@gmail.com"},"directories":{},"maintainers":[{"name":"jonatanferenczfi","email":"jonatanferenczfi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ng-utils_0.1.0_1645661018161_0.3829061397460747"},"_hasShrinkwrap":false},"0.1.1":{"name":"@adroit-group/ng-utils","version":"0.1.1","peerDependencies":{"@angular/common":"^12.1.0-","@angular/core":"^12.1.0-","@angular/flex-layout":"^12.0.0-beta.34","rxjs":"~6.6.0","@angular/cdk":"13.1.3","@angular/platform-browser-dynamic":"13.1.3"},"dependencies":{"tslib":"^2.2.0"},"module":"fesm2015/adroit-group-ng-utils.mjs","es2020":"fesm2020/adroit-group-ng-utils.mjs","esm2020":"esm2020/adroit-group-ng-utils.mjs","fesm2020":"fesm2020/adroit-group-ng-utils.mjs","fesm2015":"fesm2015/adroit-group-ng-utils.mjs","typings":"adroit-group-ng-utils.d.ts","exports":{"./package.json":{"default":"./package.json"},".":{"types":"./adroit-group-ng-utils.d.ts","esm2020":"./esm2020/adroit-group-ng-utils.mjs","es2020":"./fesm2020/adroit-group-ng-utils.mjs","es2015":"./fesm2015/adroit-group-ng-utils.mjs","node":"./fesm2015/adroit-group-ng-utils.mjs","default":"./fesm2020/adroit-group-ng-utils.mjs"},"./ngx-cdps-meter":{"types":"./ngx-cdps-meter/adroit-group-ng-utils-ngx-cdps-meter.d.ts","esm2020":"./esm2020/ngx-cdps-meter/adroit-group-ng-utils-ngx-cdps-meter.mjs","es2020":"./fesm2020/adroit-group-ng-utils-ngx-cdps-meter.mjs","es2015":"./fesm2015/adroit-group-ng-utils-ngx-cdps-meter.mjs","node":"./fesm2015/adroit-group-ng-utils-ngx-cdps-meter.mjs","default":"./fesm2020/adroit-group-ng-utils-ngx-cdps-meter.mjs"}},"sideEffects":false,"description":"<p align=\"center\">\r  <img width=\"0\" height=\"0\" src=\"https://adroitgroup.io/wp-content/uploads/2019/02/web_logo.png?sanitize=true\">\r </p>","_id":"@adroit-group/ng-utils@0.1.1","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-kFHRVTyFB/C8ydRpZ6SwV3O+ePv3XVsN3IwpcxPFfomJW6v4r/ddERX7MOyGWAdx1UNrkicFxaNe0R4TjHrAzw==","shasum":"dc343127ab1333ba1b2228e85ea04a3db6481255","tarball":"https://registry.npmjs.org/@adroit-group/ng-utils/-/ng-utils-0.1.1.tgz","fileCount":186,"unpackedSize":587436,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiJ41oACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpf6A/+LIbbe7gE3MwodC65EH3sMxMyUNMrmxfmJWdfdm+9R4DGK63L\r\nkuc3DBO4HjPJfOPHbaXZB0CR4x/AOELfb600sNIDhkUkGOK1BLmowtsxYX5Z\r\neKzIM7+xAfTwfmH71PvGo54fXqZnuXS7raf6/Vg74Jl69wTvZJUcEBXRuREz\r\nWJe/VS3yE35Wg8RTo2ShebYPXVA4NWao7AzgyXnSCuoAHj3a268G0E9yUC0O\r\n1nxQ4X+Ic9O0ho2b4zKbSp9IBevh7jzBNol7hteIwsxHY5KjLYHPibSYW29w\r\n6rhvyNC3fuIw4OzpsGeISDkcsGAw5ffv4fYxsM60XbhY4Yp7Im8suK3Iv/hm\r\n+RimC20CfJMLVHxDRW7P5J+k/tWq5wqGDiQ2b2U+ljLJMaUJtNp6tBGYykgp\r\nOvtBczBmxsQZPMgpc3ZDdQBjxdDb7eUvKUmCCjAW6jJaCz4ukqiytnBD75Xc\r\nJR02p60dU30BelnOiVc3zCyzHfggoNq7Mm2JBiiG55eBeFYZ/LWrKRwUH6qA\r\nZtaGAsGhYhkClCILTElQLAYIIV4XYWrrpkWfagAaO7S0Bov1t6tyO3ElRJrC\r\noiPTC2hcvBEG+RzeKJhSeM3QLuBpGf8tEPGTKqJ8QLKIPAP2QDkMZ6Vw6BuL\r\nFvh9sTt/0bAE37Z8+84M/93dTqTeYk2/vss=\r\n=pWq0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD6gG0nyCv5Tq0Bfn8wEqylbeIYxRCUeXg3ZleGXDIu0wIgbhOxtTD/lLIMCH8a3KFGGCUiEsb3k4ZTRBoHfYAtaLk="}]},"_npmUser":{"name":"jonatanferenczfi","email":"jonatanferenczfi@gmail.com"},"directories":{},"maintainers":[{"name":"jonatanferenczfi","email":"jonatanferenczfi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ng-utils_0.1.1_1646759272278_0.5490880805519252"},"_hasShrinkwrap":false},"0.1.2":{"name":"@adroit-group/ng-utils","version":"0.1.2","peerDependencies":{"@angular/common":"^12.1.0-","@angular/core":"^12.1.0-","@angular/flex-layout":"^12.0.0-beta.34","rxjs":"~6.6.0","@angular/cdk":"13.1.3","@angular/platform-browser-dynamic":"13.1.3"},"dependencies":{"tslib":"^2.2.0"},"module":"fesm2015/adroit-group-ng-utils.mjs","es2020":"fesm2020/adroit-group-ng-utils.mjs","esm2020":"esm2020/adroit-group-ng-utils.mjs","fesm2020":"fesm2020/adroit-group-ng-utils.mjs","fesm2015":"fesm2015/adroit-group-ng-utils.mjs","typings":"adroit-group-ng-utils.d.ts","exports":{"./package.json":{"default":"./package.json"},".":{"types":"./adroit-group-ng-utils.d.ts","esm2020":"./esm2020/adroit-group-ng-utils.mjs","es2020":"./fesm2020/adroit-group-ng-utils.mjs","es2015":"./fesm2015/adroit-group-ng-utils.mjs","node":"./fesm2015/adroit-group-ng-utils.mjs","default":"./fesm2020/adroit-group-ng-utils.mjs"},"./ngx-cdps-meter":{"types":"./ngx-cdps-meter/adroit-group-ng-utils-ngx-cdps-meter.d.ts","esm2020":"./esm2020/ngx-cdps-meter/adroit-group-ng-utils-ngx-cdps-meter.mjs","es2020":"./fesm2020/adroit-group-ng-utils-ngx-cdps-meter.mjs","es2015":"./fesm2015/adroit-group-ng-utils-ngx-cdps-meter.mjs","node":"./fesm2015/adroit-group-ng-utils-ngx-cdps-meter.mjs","default":"./fesm2020/adroit-group-ng-utils-ngx-cdps-meter.mjs"}},"sideEffects":false,"description":"<p align=\"center\">\r  <img width=\"0\" height=\"0\" src=\"https://adroitgroup.io/wp-content/uploads/2019/02/web_logo.png?sanitize=true\">\r </p>","_id":"@adroit-group/ng-utils@0.1.2","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-buWefZT57DVfrABa5/G064XXtGuxv1YFf8bUtsEmV5in5OUC9NFkzphuC9ZkVCJc9AA/QTaIww5OGA72UEg/gA==","shasum":"dc05d13ebdc2dff8a9f09f82c179315936009126","tarball":"https://registry.npmjs.org/@adroit-group/ng-utils/-/ng-utils-0.1.2.tgz","fileCount":186,"unpackedSize":589809,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiLGDrACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpg7Q/6AwsN8xYBJKCgI8zzuEa+udiG3E8mhQJ0sl8cPApOxSfWVwnz\r\n/86udgatFrQzc5PDLEoqnaFq9Elhj82+A3/iEp90+ZEqayLtRVJF0if0qGh/\r\neHbdewJI0xCeuMkAGTsk/vRctjcqP1XrtHRkCp0DfKYjTlfQRBrdU1fCXT9Y\r\nWBCm4NKkvzqCqEsSAdFcWBALJzOjPKu+VMUYfqfSIMpbAviPs0w36Tg83GV+\r\naef/ohlR6mod6UgVhqI6fGXbGfQrQAwMHI6YFluOCxEkhpWJSit2DMkTIIqm\r\nDN5EadR1LSjGeD1bAV1cakbjppv0CXkwpp6g3pIJSJ9bfRSh6/fS/ezFPTxh\r\n1P0flUZiZDmwbBrcVcrSMwaWXjFYQfGDdvCW6DQk1tjkh7Wuchd8mgOCSpBF\r\n4us98ME4PXwjeffr6n7kTeH34TMiOKk6BYYcEgbRawDwMaKRncLbdVl2+ZM8\r\nrBQ8c7Hr0CKA7FnWPH0MU/GIvzBxOKxXfXZnjYR1qHpjoNLXzv4dk0ZVdWAz\r\nxeqbAGr5iS6DPKeapMdqjUnpxb4yfItN1kKmurOY//RKln0Kh+qLzIgu+AgO\r\nV/iT6BZ5tbv9T7GB6I2l172KOCpIxZ9y3HhI0qA6eeGOd832rj3VjAbtusny\r\nSBccy9esiHyoA9vuXYhGVlR5S8QXRT4dGy4=\r\n=SEP1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICzAOVpXxAjrjE3CyuNvcIq08t1c4o5FXVB/51LCzcZuAiEAiOT7oPEVNZFesSqAQfjIM1drRmwflx6/XTmrn8VVR5g="}]},"_npmUser":{"name":"jonatanferenczfi","email":"jonatanferenczfi@gmail.com"},"directories":{},"maintainers":[{"name":"jonatanferenczfi","email":"jonatanferenczfi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ng-utils_0.1.2_1647075563566_0.05787653418026473"},"_hasShrinkwrap":false},"0.1.3":{"name":"@adroit-group/ng-utils","version":"0.1.3","peerDependencies":{"@angular/common":"^12.1.0-","@angular/core":"^12.1.0-","@angular/flex-layout":"^12.0.0-beta.34","rxjs":"~6.6.0","@angular/cdk":"13.1.3","@angular/platform-browser-dynamic":"13.1.3"},"dependencies":{"tslib":"^2.2.0"},"module":"fesm2015/adroit-group-ng-utils.mjs","es2020":"fesm2020/adroit-group-ng-utils.mjs","esm2020":"esm2020/adroit-group-ng-utils.mjs","fesm2020":"fesm2020/adroit-group-ng-utils.mjs","fesm2015":"fesm2015/adroit-group-ng-utils.mjs","typings":"adroit-group-ng-utils.d.ts","exports":{"./package.json":{"default":"./package.json"},".":{"types":"./adroit-group-ng-utils.d.ts","esm2020":"./esm2020/adroit-group-ng-utils.mjs","es2020":"./fesm2020/adroit-group-ng-utils.mjs","es2015":"./fesm2015/adroit-group-ng-utils.mjs","node":"./fesm2015/adroit-group-ng-utils.mjs","default":"./fesm2020/adroit-group-ng-utils.mjs"},"./ngx-cdps-meter":{"types":"./ngx-cdps-meter/adroit-group-ng-utils-ngx-cdps-meter.d.ts","esm2020":"./esm2020/ngx-cdps-meter/adroit-group-ng-utils-ngx-cdps-meter.mjs","es2020":"./fesm2020/adroit-group-ng-utils-ngx-cdps-meter.mjs","es2015":"./fesm2015/adroit-group-ng-utils-ngx-cdps-meter.mjs","node":"./fesm2015/adroit-group-ng-utils-ngx-cdps-meter.mjs","default":"./fesm2020/adroit-group-ng-utils-ngx-cdps-meter.mjs"}},"sideEffects":false,"description":"<p align=\"center\">\r  <img width=\"0\" height=\"0\" src=\"https://adroitgroup.io/wp-content/uploads/2019/02/web_logo.png?sanitize=true\">\r </p>","_id":"@adroit-group/ng-utils@0.1.3","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-qhE4q+OThoIB4SfIcCnUYKMaXjkvLGMgf9x0rHjIcl/DvIIqqHQ+H53xdKPEXFIEnsohhED45vnQ4II7MMhgVw==","shasum":"3f006160cb1684e3318286b30135c9035e4ea116","tarball":"https://registry.npmjs.org/@adroit-group/ng-utils/-/ng-utils-0.1.3.tgz","fileCount":189,"unpackedSize":601680,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiPGzJACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrQOg//T8B2PR6SCNvNg8vXWsuLfbAjOZf/+DU+SZ+Kj+FXjru8ZnFV\r\nn/vLPtHDcmh5UYAPfzkrcVzqx2Joqhrhj8ODLIQXOasOFkRUskWJj7HQUC1Y\r\nAz3ZjdJvknUy4E9xIncr7GuBJOiS+lA4mCZf5/tdukelOIn6VdujLehc5vjH\r\n6nG1NYUAnLlJQ5EHXAcy6ZzMX0YqjIYL4e43I7zBwu6MlB4VASE1BhS1tqCA\r\nm0WAQ/hRKTWaCzcUiNAoQ5I16WmNUlbRH6XuoL2y588sE8/Tr23uGlFLZkxI\r\nvUonN2UNI2oypEVuR8L4zRbN8cOKU/ed9FC9x1VAERNuVYey/N6n05WFh3Fp\r\nmSBoEcH3Re0OtVYb/pY4NWJ1PD+8m6zA03x7oOjP+GOgb8YZt3DV5ZCwrzOW\r\nynn3V5zLuQEJtUvq+5V779EX6R5XH3018e7EdYEPcb7iyqEwMDbbLbmk+3fy\r\nOVokz1U2KX07pN1OEKkuKnhP2TnO9cNTGKDcBV4W3fDRnE7mL7OgW01kNyxD\r\nHLcBaTE8/oo48ThzZUwx/tyQbMMtamUoTkDnHoeEtyCO2ZIbwxeucMouxWBA\r\n8Kg4TYCD0kpGr3auzZXWotOkvAF5CpWfNDw18S5T666hLj3pVB9jy0Ewk1Ts\r\nD+OYqtJrpbetBlfk0lIMXHIK8OVb3oVPJnM=\r\n=XoDf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDi5BfmgIBMwMQpUffkHF8McpKkmGC+8qKTuHTUc4mZngIgMHQ6SYESxuHqS7tQSEgMOzK/B8aQPHAlaxWENDFkJYk="}]},"_npmUser":{"name":"jonatanferenczfi","email":"jonatanferenczfi@gmail.com"},"directories":{},"maintainers":[{"name":"jonatanferenczfi","email":"jonatanferenczfi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ng-utils_0.1.3_1648127177370_0.8347190000288334"},"_hasShrinkwrap":false},"0.2.0":{"name":"@adroit-group/ng-utils","version":"0.2.0","peerDependencies":{"@angular/common":"^12.1.0-","@angular/core":"^12.1.0-","@angular/flex-layout":"^12.0.0-beta.34","rxjs":"~6.6.0","@angular/cdk":"13.1.3","@angular/platform-browser-dynamic":"13.1.3"},"dependencies":{"tslib":"^2.2.0"},"module":"fesm2015/adroit-group-ng-utils.mjs","es2020":"fesm2020/adroit-group-ng-utils.mjs","esm2020":"esm2020/adroit-group-ng-utils.mjs","fesm2020":"fesm2020/adroit-group-ng-utils.mjs","fesm2015":"fesm2015/adroit-group-ng-utils.mjs","typings":"adroit-group-ng-utils.d.ts","exports":{"./package.json":{"default":"./package.json"},".":{"types":"./adroit-group-ng-utils.d.ts","esm2020":"./esm2020/adroit-group-ng-utils.mjs","es2020":"./fesm2020/adroit-group-ng-utils.mjs","es2015":"./fesm2015/adroit-group-ng-utils.mjs","node":"./fesm2015/adroit-group-ng-utils.mjs","default":"./fesm2020/adroit-group-ng-utils.mjs"},"./ngx-cdps-meter":{"types":"./ngx-cdps-meter/adroit-group-ng-utils-ngx-cdps-meter.d.ts","esm2020":"./esm2020/ngx-cdps-meter/adroit-group-ng-utils-ngx-cdps-meter.mjs","es2020":"./fesm2020/adroit-group-ng-utils-ngx-cdps-meter.mjs","es2015":"./fesm2015/adroit-group-ng-utils-ngx-cdps-meter.mjs","node":"./fesm2015/adroit-group-ng-utils-ngx-cdps-meter.mjs","default":"./fesm2020/adroit-group-ng-utils-ngx-cdps-meter.mjs"}},"sideEffects":false,"description":"<p align=\"center\">\r  <img width=\"0\" height=\"0\" src=\"https://adroitgroup.io/wp-content/uploads/2019/02/web_logo.png?sanitize=true\">\r </p>","_id":"@adroit-group/ng-utils@0.2.0","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-IAwb5lz95D/FH0esBjeOaCMdb0omOZZ0W8C+hFStKQjG/+qksqIuTGt7wbPbC2jCiTFIEqtjHoRBBqgE9mC6LA==","shasum":"0a0de1167e4ac034c4d6618725c2d1efab3a6cd0","tarball":"https://registry.npmjs.org/@adroit-group/ng-utils/-/ng-utils-0.2.0.tgz","fileCount":189,"unpackedSize":601519,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGXkPOpuOWRgQTRpbgmCZIfHCLOzZ1Ug/1b3tOqiMMt8AiEApUCfV6cYTmWz3Fcpne/jn4StLeBR+LYP8VMUPUCC6+s="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJii2zgACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqKzBAAmJ438SlMGkgbvxM1K8yngmlNk2WCLJBVhwt0qg+dhqiCmMgs\r\nbwMB4eJy4uqD5o42TU7iyJkZmj6cUWTb5isnWpFGcSbam7UmnCEQ3RdzJ8Ok\r\ncK2xJq5WJohmof1a75Wu7gcoNU0qS3LRwOrH3tSR9pOop00DwvW2idlJW8gc\r\nIjK6HjYPzQyozEgbKHkNuI0zKQbo4TB/2EVXsZZV37o0r3SEe0dXg1RKaWiW\r\nhuM3KlYZ+VK+YLR2IspVvFA9xPnCCMbFUUbGaazx5gJYYEF751D9sj77mcIp\r\nKGFsSvkGl2RXzHLYjdWZJEVpRNbwaAsHiIUzh/kCZl6fKLjhoKE/KqR9WVSK\r\nru/mc6RmZ/0tVGKaaSvaIujXxhWClUa4MpAefZYJz0VkrP1Lc+vsb27p3I7a\r\nNw2f4V4ipIl1a0avP2MNIuZwTlLDEtLr1M/1wbSY24Amhi9803aPwm8zGwoD\r\nykQlSbRcDTzfdVY2aZxt4Z4CQBW8TFy3dPTY5ykuc5mMnoOGL3MPNBfWFmyj\r\n9U2+LF2wSei5Z+KezO7U/8fKrvGio57pB5KXn9yFzzIG/6GyVHqZp6QlLDwy\r\ngf3Lx2trwaSHun5oWoUcijCC2BXp8mEq0Bx9fKnMfHVEQrnMFR+I50pI02A9\r\nWUEN68DfgcpI/auPFvODJ3kPuHJLm1s6xHE=\r\n=611w\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jonatanferenczfi","email":"jonatanferenczfi@gmail.com"},"directories":{},"maintainers":[{"name":"jonatanferenczfi","email":"jonatanferenczfi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ng-utils_0.2.0_1653304544588_0.8222731779486567"},"_hasShrinkwrap":false},"0.2.1":{"name":"@adroit-group/ng-utils","version":"0.2.1","peerDependencies":{"@angular/common":"^12.1.0-","@angular/core":"^12.1.0-","@angular/flex-layout":"^12.0.0-beta.34","rxjs":"~6.6.0","@angular/cdk":"13.1.3","@angular/platform-browser-dynamic":"13.1.3"},"dependencies":{"tslib":"^2.2.0"},"module":"fesm2015/adroit-group-ng-utils.mjs","es2020":"fesm2020/adroit-group-ng-utils.mjs","esm2020":"esm2020/adroit-group-ng-utils.mjs","fesm2020":"fesm2020/adroit-group-ng-utils.mjs","fesm2015":"fesm2015/adroit-group-ng-utils.mjs","typings":"adroit-group-ng-utils.d.ts","exports":{"./package.json":{"default":"./package.json"},".":{"types":"./adroit-group-ng-utils.d.ts","esm2020":"./esm2020/adroit-group-ng-utils.mjs","es2020":"./fesm2020/adroit-group-ng-utils.mjs","es2015":"./fesm2015/adroit-group-ng-utils.mjs","node":"./fesm2015/adroit-group-ng-utils.mjs","default":"./fesm2020/adroit-group-ng-utils.mjs"},"./ngx-cdps-meter":{"types":"./ngx-cdps-meter/adroit-group-ng-utils-ngx-cdps-meter.d.ts","esm2020":"./esm2020/ngx-cdps-meter/adroit-group-ng-utils-ngx-cdps-meter.mjs","es2020":"./fesm2020/adroit-group-ng-utils-ngx-cdps-meter.mjs","es2015":"./fesm2015/adroit-group-ng-utils-ngx-cdps-meter.mjs","node":"./fesm2015/adroit-group-ng-utils-ngx-cdps-meter.mjs","default":"./fesm2020/adroit-group-ng-utils-ngx-cdps-meter.mjs"}},"sideEffects":false,"description":"<p align=\"center\">\r  <img width=\"0\" height=\"0\" src=\"https://adroitgroup.io/wp-content/uploads/2019/02/web_logo.png?sanitize=true\">\r </p>","_id":"@adroit-group/ng-utils@0.2.1","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-geZZu+HpFzuIftDg13uqvk4dMoCO9gOKH2fk2R1HPq9khmkX5SH59FtpsocEsZrJ3I2VpaKunt+3BiVCJ187CA==","shasum":"f3a49e3dc3fb72347bb02f85dfd3b63bcba21224","tarball":"https://registry.npmjs.org/@adroit-group/ng-utils/-/ng-utils-0.2.1.tgz","fileCount":195,"unpackedSize":625852,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC7HxEGmIvfa9XGNyiehl8JbbwZL/Q96E29NUTJV5fDBgIhAP4P4YnvzzW9fu1txSopzv1gpz3Y8grkIKInGoyo1yUz"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjdPo8ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpGxA/9HVGokkAN7rmOrvGmc+ttdmwdAPWoE5IF1jEvJfTetdEp3Cqw\r\nAj/LopJfqTv2kGDguQYKZmaSepQRt3btF+vyVTqqsHJqoF2r0BkMTT9921mh\r\nZG8pX0KLSgAQntBkOn1q6LJblWgNPG6Qx48up6IY0Y4y7tOp+OkLK743ZGnh\r\n+kIybxJOlOuw9EatsLaskldwKMBqwon24sjSUw3szLIXwbD8yKInZ84lUzlW\r\nQt8Q3Q24V0kiJ9YEkEB3gLETl0SsmzqLRxxAiSW1aKfAWZKSQhqrMwDNXFal\r\niGYL8ROB6wchB3I8VG9ofmcKQWGA4c4fq59eK+i70dOpepl6UFQYKAtq/MhU\r\naSW0Wjher5cBviDLQQv8/eTAsmETMbTDcqMZ980CpLbx20FoNJ5Vihh4ogr1\r\nTSCktHbAeUzuF5hMzziaT/Uty6qvMSJoeOvRwthTAhm5lMHaNNGGmkoZNV/G\r\nq/zg8/3DJZw3k564Aq3rsGCu5+Fg9C+uzKEpe1+1RNRRTvYNDqVbCkcxeD98\r\nGYVBdXGSUQzjK3cKoJ0c1nF/lBN/Q0IttKT9CLA19COI0neBaC9GybEo/ZOZ\r\nXRHyVBQ8fes7mkokO69ARcFbWAuMuLSoeGI+iwb21o3Z6ViCwpitRGEMsYE9\r\n5Guqi2Ty97pJNucoqF7dohLOFb0lFEeLWEk=\r\n=OBPh\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jonatanferenczfi","email":"jonatanferenczfi@gmail.com"},"directories":{},"maintainers":[{"name":"jonatanferenczfi","email":"jonatanferenczfi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ng-utils_0.2.1_1668610620385_0.7437989217354581"},"_hasShrinkwrap":false},"0.2.2":{"name":"@adroit-group/ng-utils","version":"0.2.2","module":"fesm2015/adroit-group-ng-utils.mjs","es2020":"fesm2020/adroit-group-ng-utils.mjs","esm2020":"esm2020/adroit-group-ng-utils.mjs","fesm2020":"fesm2020/adroit-group-ng-utils.mjs","fesm2015":"fesm2015/adroit-group-ng-utils.mjs","typings":"adroit-group-ng-utils.d.ts","exports":{"./package.json":{"default":"./package.json"},".":{"types":"./adroit-group-ng-utils.d.ts","esm2020":"./esm2020/adroit-group-ng-utils.mjs","es2020":"./fesm2020/adroit-group-ng-utils.mjs","es2015":"./fesm2015/adroit-group-ng-utils.mjs","node":"./fesm2015/adroit-group-ng-utils.mjs","default":"./fesm2020/adroit-group-ng-utils.mjs"},"./ngx-cdps-meter":{"types":"./ngx-cdps-meter/adroit-group-ng-utils-ngx-cdps-meter.d.ts","esm2020":"./esm2020/ngx-cdps-meter/adroit-group-ng-utils-ngx-cdps-meter.mjs","es2020":"./fesm2020/adroit-group-ng-utils-ngx-cdps-meter.mjs","es2015":"./fesm2015/adroit-group-ng-utils-ngx-cdps-meter.mjs","node":"./fesm2015/adroit-group-ng-utils-ngx-cdps-meter.mjs","default":"./fesm2020/adroit-group-ng-utils-ngx-cdps-meter.mjs"}},"sideEffects":false,"dependencies":{"tslib":"^2.3.0"},"peerDependencies":{"@angular/core":"^13.1.3","@angular/common":"^13.1.3","rxjs":"~6.6.0","@angular/flex-layout":"^13.0.0-beta.38","@angular/cdk":"^13.1.3","@angular/platform-browser-dynamic":"^13.1.3"},"description":"<p align=\"center\">\r  <img width=\"0\" height=\"0\" src=\"https://adroitgroup.io/wp-content/uploads/2019/02/web_logo.png?sanitize=true\">\r </p>","_id":"@adroit-group/ng-utils@0.2.2","_nodeVersion":"14.15.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-y8Gm6//pQ6PxhFlxqh6wh4xK3n11rGx3KyAEYkZGmrdw/d2IqrDcgz3pfxcm3ScSGxkMFrEGTaC1AYPnKjc2cQ==","shasum":"9ea50b5cbfb59ceffc318925d503765a656260c6","tarball":"https://registry.npmjs.org/@adroit-group/ng-utils/-/ng-utils-0.2.2.tgz","fileCount":195,"unpackedSize":625852,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD6liolb4vgBMvL0nTFevUDBiAO0KkYRS4ImiWgbIruJgIgXt7MCj3RP+AVdpeT274zTj7ssF6o/r+kuk5PLRgkLz8="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjdhtiACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrKLg/8DanazOJaSUqKyatBnq2N6wu70ywK+qPYwy2NHN6JZJxxi6Yd\r\ntd0oSBM/dLcPPW0gDoEcJgOlLRCyjSh57T0Id3caBk1CbrFauuUpyscU6gTA\r\nia3X4jQturCIjU0Jcpaj7lLawq2ic0IekQQ7NUMnVyt4HRm3h61h/GgYbA31\r\nTUgDlsTK1J41nsZeqitMXldAwQzC5IuMz3ih5oZU5g8ZfBLN4YvXT36wMgDP\r\n+Vm6rHPLzz/E9EFYJuuVf77vz7SIyFDtWaYBgy8sOVaCAad01HRKBHS/ri83\r\ngnIm/2qBkdprq+XbDacu85OGr/Bolu9JcdLNbiRFSYJVnt/45OaLM/1R78H3\r\n9fPIDoRt37w59f0eH5Ro/bx9iwxFzZ5hX+prfbriGkmA06ua0nE6/p0psFCd\r\nltAXcqat2s471W54+BhOUaHuaBfHRUVOAoU4CNyusaz4Fo+q8/ULhxm6THmA\r\nEsRjZO0KBRXeZKQ7kdJbkUrquhoh2QTFrJX4X8GGGSIvN3vKAy8v2nnEkQsQ\r\n3d/O3LBWX2UirM4qVDKF+jzptRE6e0yxlvDJ62e7RIeUZmYypbLe9oZmuyKW\r\nXjU+vVk3OOcDXD2ldqtXGNJccVkxf9CDuz5tM/H+2Zmi4FqeNzfCT2kaWC/y\r\njP3QXwJF+8dR7ozdXC4LjhN0vhgn87JdJFg=\r\n=xQCv\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jonatanferenczfi","email":"jonatanferenczfi@gmail.com"},"directories":{},"maintainers":[{"name":"jonatanferenczfi","email":"jonatanferenczfi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ng-utils_0.2.2_1668684642315_0.22914248850787566"},"_hasShrinkwrap":false},"0.3.1":{"name":"@adroit-group/ng-utils","version":"0.3.1","module":"fesm2015/adroit-group-ng-utils.mjs","es2020":"fesm2020/adroit-group-ng-utils.mjs","esm2020":"esm2020/adroit-group-ng-utils.mjs","fesm2020":"fesm2020/adroit-group-ng-utils.mjs","fesm2015":"fesm2015/adroit-group-ng-utils.mjs","typings":"adroit-group-ng-utils.d.ts","exports":{"./package.json":{"default":"./package.json"},".":{"types":"./adroit-group-ng-utils.d.ts","esm2020":"./esm2020/adroit-group-ng-utils.mjs","es2020":"./fesm2020/adroit-group-ng-utils.mjs","es2015":"./fesm2015/adroit-group-ng-utils.mjs","node":"./fesm2015/adroit-group-ng-utils.mjs","default":"./fesm2020/adroit-group-ng-utils.mjs"},"./ngx-cdps-meter":{"types":"./ngx-cdps-meter/adroit-group-ng-utils-ngx-cdps-meter.d.ts","esm2020":"./esm2020/ngx-cdps-meter/adroit-group-ng-utils-ngx-cdps-meter.mjs","es2020":"./fesm2020/adroit-group-ng-utils-ngx-cdps-meter.mjs","es2015":"./fesm2015/adroit-group-ng-utils-ngx-cdps-meter.mjs","node":"./fesm2015/adroit-group-ng-utils-ngx-cdps-meter.mjs","default":"./fesm2020/adroit-group-ng-utils-ngx-cdps-meter.mjs"}},"sideEffects":false,"dependencies":{"tslib":"^2.3.0"},"peerDependencies":{"@angular/core":"^13.1.3","@angular/common":"^13.1.3","@angular/forms":"^13.1.3","rxjs":"~6.6.0","@angular/cdk":"^13.1.3","@angular/platform-browser":"^13.1.3","@angular/platform-browser-dynamic":"^13.1.3"},"gitHead":"319713b94bfb25b12a041920d5f0972716ad25c0","description":"<p align=\"center\">\r  <img width=\"0\" height=\"0\" src=\"https://adroitgroup.io/wp-content/uploads/2019/02/web_logo.png?sanitize=true\">\r </p>","_id":"@adroit-group/ng-utils@0.3.1","_nodeVersion":"16.13.0","_npmVersion":"9.1.3","dist":{"integrity":"sha512-1a7EOpL+3eP88rJIUbIW7PCj/3UvMyNPmgcrH43abdy2htNae3A9ZEDmZB0isT1LA9Mm03VsKobZCUoH/LwAHA==","shasum":"647afb7613e875ac55c698b70b17b0c5d2b6253c","tarball":"https://registry.npmjs.org/@adroit-group/ng-utils/-/ng-utils-0.3.1.tgz","fileCount":204,"unpackedSize":676269,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCbFGvGTXY/HMzbcbmExcZWIyb+tgKeyL6sZHVJxV+NawIhAKB873t24qqsw3k4qv00DXYWfx/OJoLEoPtSMryWDv3s"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj+6TyACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrnMQ//flFZ1gsU7UderZLddfxMCmH/mWecmEY/U4Pjr62ek5VX45f8\r\nBv2BFTotnYN/oEPAd54vI44bqYDWL8FwsgcqUx0jXwQkPadx8io2GKFR3k+7\r\niR6wI9qfLK66p1PfYR1NGoMVDiw3Y4zYreh608jsTC2sceevKJe+EIQ90oKy\r\nDynXNaHulXjLOEc/mybGv6TyiikVpUrUwQN9epY85LpuxG2TIHeB1iELKCbR\r\ny7yxVfxQ3ZE4T9FjVZX1BdsbatWQ21yj4ypbh+bYqHRvJFajqHYSkCM7QGE4\r\nKnQVQTSy8m5CdFk6kNfCuq0ZYk0Wonfe5JTqiLed3v4zDneSO70GaNhMrBiz\r\ngQO1sKhi0luhOyQSs40zKf4OIwk6ZE/nHBAmePl9+xNUWiabqSlvhm5vt0gO\r\nkSmdVQnZ/lmfp6QNIF0CCSdH/Fks503uT9jo/EP5z9VxkxCyTDjSXTaB1kHF\r\nRqzn3+qAgg5fXASiWYRG96e7yEmeRJZD8CNssPS8bBqOh/O2eT4ljOjUitzY\r\natWd8MYFh/DD9I5vc9R61Vgcz+yV93vYRXrlqAf1QPnQ4qZ3JzkrQcLG9vg5\r\neFmnOFueaxb2NiixY0jPEqNhV+S87Y3zJd5UfgRkqlLEFd9KiLueqASU7cK1\r\nSm8LOP/a9XfVpE2i4NKXP2/PrEbtvk+jPgQ=\r\n=wjmJ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jonatanferenczfi","email":"jonatanferenczfi@gmail.com"},"directories":{},"maintainers":[{"name":"jonatanferenczfi","email":"jonatanferenczfi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ng-utils_0.3.1_1677436145835_0.6858258453821622"},"_hasShrinkwrap":false},"14.0.0":{"name":"@adroit-group/ng-utils","version":"14.0.0","license":"MIT","private":false,"homepage":"https://github.com/Adroit-Group/ng-tools","repository":{"type":"git","url":"git+https://github.com/Adroit-Group/ng-tools.git"},"module":"fesm2015/adroit-group-ng-utils.mjs","es2020":"fesm2020/adroit-group-ng-utils.mjs","esm2020":"esm2020/adroit-group-ng-utils.mjs","fesm2020":"fesm2020/adroit-group-ng-utils.mjs","fesm2015":"fesm2015/adroit-group-ng-utils.mjs","typings":"index.d.ts","exports":{"./package.json":{"default":"./package.json"},".":{"types":"./index.d.ts","esm2020":"./esm2020/adroit-group-ng-utils.mjs","es2020":"./fesm2020/adroit-group-ng-utils.mjs","es2015":"./fesm2015/adroit-group-ng-utils.mjs","node":"./fesm2015/adroit-group-ng-utils.mjs","default":"./fesm2020/adroit-group-ng-utils.mjs"},"./ngx-cdps-meter":{"types":"./ngx-cdps-meter/index.d.ts","esm2020":"./esm2020/ngx-cdps-meter/adroit-group-ng-utils-ngx-cdps-meter.mjs","es2020":"./fesm2020/adroit-group-ng-utils-ngx-cdps-meter.mjs","es2015":"./fesm2015/adroit-group-ng-utils-ngx-cdps-meter.mjs","node":"./fesm2015/adroit-group-ng-utils-ngx-cdps-meter.mjs","default":"./fesm2020/adroit-group-ng-utils-ngx-cdps-meter.mjs"}},"sideEffects":false,"dependencies":{"tslib":"^2.3.0"},"peerDependencies":{"@angular/core":"14.0.7","@angular/common":"14.0.7","@angular/forms":"14.0.7","rxjs":"~7.8.0","@angular/cdk":"14.0.6","@angular/platform-browser":"14.0.7","@angular/platform-browser-dynamic":"14.0.7"},"gitHead":"35371e0433d3628e12a3cbb06bf03b8e504cb7ff","description":"<p align=\"center\">  <img width=\"0\" height=\"0\" src=\"https://adroitgroup.io/wp-content/uploads/2019/02/web_logo.png?sanitize=true\"> </p>","bugs":{"url":"https://github.com/Adroit-Group/ng-tools/issues"},"_id":"@adroit-group/ng-utils@14.0.0","_nodeVersion":"16.19.1","_npmVersion":"8.19.3","dist":{"integrity":"sha512-l07PL9/31NzomLoXc8/zly8nDZsyX6m3koLBOkd5gdtIro5jjgvLq8hNcUyM6GO06LXuE2MHDgf/QbHPQ7e1gA==","shasum":"9a95bd1e3363ec3bf0b4de8367944c59f812c9e4","tarball":"https://registry.npmjs.org/@adroit-group/ng-utils/-/ng-utils-14.0.0.tgz","fileCount":201,"unpackedSize":655182,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDkj6IndYLH8fDC9SrR22l0BoTzL/1hVLR9YSpNsLn9BAiBsJS9ZorXLQHXdVBMfveWW0c3nEIBJVz/RkCYDKfR+Ug=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj/JSeACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpRCxAApEH34w46Td0Qd46vvBewuR50xC5bY18+2Hi6t+fmvZZGUfLp\r\njhA96SFUExgsyjfN8j7nsKNGqCHLxjozUek8Wvc5cCuPhZmMsSSyOaBbEHsF\r\nmNNlc3fvLcwikfeE5gCbLe97Lc3Qa54/jpTH5oxvcCAnzwcl03Yb18iRS258\r\nuTyyQg9uFixlx26TiGz7+iFkJulid6haHZQqIoX5CY6wT2CcpfKkUUh9wanO\r\nYQplXphOKb77NoVZ5JmjZPjznI5sFXQ89rz9MMI78SYrdfm4vwfjRjoyV+qp\r\nm3m6qBvogZhgOKupj/5xYXBYiv12o9T7Ab4b7yfWsXR71lEjl0yFVlhZNdLG\r\nSTMUPnQ+d7MirCy7RGIVumAcWfKyvxzcLSklDtKXvnua5hAclBV9n6NQ1JuI\r\npqge1q+8BJo61mTTJgK/FqKlHSzx78dwhu725GfWLYe+ED0yZjbRiC7kSO0n\r\nhyALHiYAEsvzs2bqLmeXIxogTHcJ0hVSblVlbegN6LlVWmryQ3+QyLr0jfDL\r\nES5KL430d+pxkVA1V8fA40seVgU0DG8ywIREo0KGfRjTiD56uT07c5PZ4j5o\r\n4ZUFBUYHWdDI+mOTfwzYy73vtoIu/gB+NmzZe0BHiuKj3pnnBFYf3JR4Yjxj\r\nVj4Tm53m4bpDGQBAdnpsEr/dHIijXeZldmI=\r\n=GFDR\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jonatanferenczfi","email":"jonatanferenczfi@gmail.com"},"directories":{},"maintainers":[{"name":"jonatanferenczfi","email":"jonatanferenczfi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ng-utils_14.0.0_1677497501997_0.9781476120595392"},"_hasShrinkwrap":false},"15.0.0":{"name":"@adroit-group/ng-utils","version":"15.0.0","license":"MIT","private":false,"homepage":"https://github.com/Adroit-Group/ng-tools","repository":{"type":"git","url":"git+https://github.com/Adroit-Group/ng-tools.git"},"module":"fesm2015/adroit-group-ng-utils.mjs","es2020":"fesm2020/adroit-group-ng-utils.mjs","esm2020":"esm2020/adroit-group-ng-utils.mjs","fesm2020":"fesm2020/adroit-group-ng-utils.mjs","fesm2015":"fesm2015/adroit-group-ng-utils.mjs","typings":"index.d.ts","exports":{"./package.json":{"default":"./package.json"},".":{"types":"./index.d.ts","esm2020":"./esm2020/adroit-group-ng-utils.mjs","es2020":"./fesm2020/adroit-group-ng-utils.mjs","es2015":"./fesm2015/adroit-group-ng-utils.mjs","node":"./fesm2015/adroit-group-ng-utils.mjs","default":"./fesm2020/adroit-group-ng-utils.mjs"},"./ngx-cdps-meter":{"types":"./ngx-cdps-meter/index.d.ts","esm2020":"./esm2020/ngx-cdps-meter/adroit-group-ng-utils-ngx-cdps-meter.mjs","es2020":"./fesm2020/adroit-group-ng-utils-ngx-cdps-meter.mjs","es2015":"./fesm2015/adroit-group-ng-utils-ngx-cdps-meter.mjs","node":"./fesm2015/adroit-group-ng-utils-ngx-cdps-meter.mjs","default":"./fesm2020/adroit-group-ng-utils-ngx-cdps-meter.mjs"}},"sideEffects":false,"dependencies":{"tslib":"^2.3.0"},"peerDependencies":{"@angular/core":"15.2.0","@angular/common":"15.2.0","@angular/forms":"15.2.0","rxjs":"~7.5.0","@angular/cdk":"15.2.0","@angular/platform-browser":"15.2.0","@angular/platform-browser-dynamic":"15.2.0"},"gitHead":"9bf49948c1731081c4cb6c3b4faa85ac0143b416","description":"<p align=\"center\">  <img width=\"0\" height=\"0\" src=\"https://adroitgroup.io/wp-content/uploads/2019/02/web_logo.png?sanitize=true\"> </p>","bugs":{"url":"https://github.com/Adroit-Group/ng-tools/issues"},"_id":"@adroit-group/ng-utils@15.0.0","_nodeVersion":"16.13.2","_npmVersion":"8.1.2","dist":{"integrity":"sha512-NzCVZnF4ZxkZdneh6Ns197e++f6s7mJVjqfbW8C580T+9YD3ncPWsjLtCQwTNagGpdtRMh+m3RulSNlR998nVg==","shasum":"bae5043de32150608e802d7c596a076695e5223b","tarball":"https://registry.npmjs.org/@adroit-group/ng-utils/-/ng-utils-15.0.0.tgz","fileCount":201,"unpackedSize":655169,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQChwoK65qHf8BRiblI3/7YkE+FhgpPYUDBpBCB16w2BNwIhALDbbt0tzbL7fvYJMabCTs3A1v3npNm+5SJtjIjjgzQr"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj/MZOACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpFzA/+M0xIQ0ror4OLJmbABKJqUZrdFPwBhAnmrG799nGptnsjpxHi\r\nGC+6yRMgimdIVyCYrWp44QZJ+O5Om1jnxmfJYPliXHNmvaLWTthE9QaQTr9R\r\nWxgsLQzei10lqpFXQysZFZ/0tE5ZB06Z1BCs4TGQ7h48C1dkehmeYY/gzNXO\r\nv8J36VBQhwA6JNSrn3XuOGzt6mgQ0dfEj7v/MDOiXF5CBDHRw1j3HBC3eMAX\r\nUE+tVcu5sMO+ts79NNbwFkC3PHEr3X4yr0RR+J7UIgx/sCQ64kAXLfJVbkN2\r\n8EJ5at4h3H80DxY73EEl2KQqLm3Cfa9IJcswLmSMwxfSRVXBFUfXjTPVeUN6\r\n4715LBbyYz90u00R0nff+e1FWsNn9qdGQ7MhjHo5y3tyLi/rP0tbDVIWk4Fv\r\nlnjSqf2Cq+MZjH7FgV/Ec6FbV5kFrgdCYbDoeAeU8t0TLa5BjUeYI1e8jg0+\r\naop+h9kVjt35ocSCAFGMhTlgGz6Ji2m/+CS8LHU2GG3l5IwaeZQo53JNPbNy\r\nw/44TPYadCi/z8onmLSmAi+EkajL+4T6OymJDLY9fttpH02+SbFxV1jtJrgE\r\nUIYJgISVz01pWpNmWmQHfuxD0wSCnrDOHC2Nq+7xVzuzOMuZJT7KXm3Ss73y\r\n/KdUpJv04vaNYcmjEXZqujg/neAWAXQWiFQ=\r\n=b/BA\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jonatanferenczfi","email":"jonatanferenczfi@gmail.com"},"directories":{},"maintainers":[{"name":"jonatanferenczfi","email":"jonatanferenczfi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ng-utils_15.0.0_1677510222392_0.38163265060605034"},"_hasShrinkwrap":false},"15.0.1":{"name":"@adroit-group/ng-utils","version":"15.0.1","license":"MIT","private":false,"homepage":"https://github.com/Adroit-Group/ng-tools","repository":{"type":"git","url":"git+https://github.com/Adroit-Group/ng-tools.git"},"module":"fesm2015/adroit-group-ng-utils.mjs","es2020":"fesm2020/adroit-group-ng-utils.mjs","esm2020":"esm2020/adroit-group-ng-utils.mjs","fesm2020":"fesm2020/adroit-group-ng-utils.mjs","fesm2015":"fesm2015/adroit-group-ng-utils.mjs","typings":"index.d.ts","exports":{"./package.json":{"default":"./package.json"},".":{"types":"./index.d.ts","esm2020":"./esm2020/adroit-group-ng-utils.mjs","es2020":"./fesm2020/adroit-group-ng-utils.mjs","es2015":"./fesm2015/adroit-group-ng-utils.mjs","node":"./fesm2015/adroit-group-ng-utils.mjs","default":"./fesm2020/adroit-group-ng-utils.mjs"},"./ngx-cdps-meter":{"types":"./ngx-cdps-meter/index.d.ts","esm2020":"./esm2020/ngx-cdps-meter/adroit-group-ng-utils-ngx-cdps-meter.mjs","es2020":"./fesm2020/adroit-group-ng-utils-ngx-cdps-meter.mjs","es2015":"./fesm2015/adroit-group-ng-utils-ngx-cdps-meter.mjs","node":"./fesm2015/adroit-group-ng-utils-ngx-cdps-meter.mjs","default":"./fesm2020/adroit-group-ng-utils-ngx-cdps-meter.mjs"}},"sideEffects":false,"dependencies":{"tslib":"^2.3.0"},"peerDependencies":{"@angular/core":"15.2.0","@angular/common":"15.2.0","@angular/forms":"15.2.0","rxjs":"~7.5.0","@angular/cdk":"15.2.0","@angular/platform-browser":"15.2.0","@angular/platform-browser-dynamic":"15.2.0"},"gitHead":"2b51ef0d307ede0818b005ab1da7a80cfa69b773","description":"<p align=\"center\">  <img width=\"0\" height=\"0\" src=\"https://adroitgroup.io/wp-content/uploads/2019/02/web_logo.png?sanitize=true\"> </p>","bugs":{"url":"https://github.com/Adroit-Group/ng-tools/issues"},"_id":"@adroit-group/ng-utils@15.0.1","_nodeVersion":"16.13.2","_npmVersion":"8.1.2","dist":{"integrity":"sha512-djsUit6kc7IRFtpjgwo2YlS77ABqf20M1yvdEqz4jugE+GasY0pzV9oRX7AahtNQa8OVW+zADvHYKPGCOQPMCw==","shasum":"52277e2958634cf732f0f8453e02bfe76ab55985","tarball":"https://registry.npmjs.org/@adroit-group/ng-utils/-/ng-utils-15.0.1.tgz","fileCount":201,"unpackedSize":660247,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCgUjvjCZdP6puPlkkO5Cv9euPFihu2hqPDX9CsZN9wFwIgNUrIXlI1fQIbD2EVLmkNeMnn4mKfWXNvpJABVdFRHKw="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj/yeyACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrcdQ/+LGtfjE8LE7r6tUQ2aryQMdKtGUhrsgv3VXE1DXzW2uQTu035\r\n77WUxQvNlPsUUebeTVjuSUq6ZHiM3YZ3sXQLKKvSyu+4T2/rzqe1b8yiq95G\r\n1u3ek3oxBs7StvB1We12MLpoBRuPv8+ssZzreMHLuy+JSzt35LLU+Y6PBNBt\r\nAgbae4hIY6Feg6Yfl2pAtMI0MkYIC7JQqia+/6sgalEgMZT8TyYRQts1hAQQ\r\npNGTVx9h1I50uj8mAJbPhc7QKVIUocZVsUcV9fwO7uuaIQh4iqYtI7ZC3hHl\r\ncKfO4SDs4hXx/YQbf2CT1z0/zywgNYsferzdxFIbpUIxIWT0bPJ+3PuMMpDj\r\nEHHIhnowfxK6mUa/d+T4eUbxc/8NeVqK6evNJ/eePa1ZzI3b5eoOBQXjPjlQ\r\nn1PLK/tUDfFF1Tk4nNxnmGER9W+GyRY/Hr0lT8WwEa6hYIjGjGLrSMG/sa2d\r\negzYZbCTrBDV+IKIBETmUBRQj/aYgY46XZIt5to/jTgbNUwTeogTVM3UcGRa\r\nC+fFsu/GSWHyIuKIMHkhR2z9n0MQzTvYnWuL0Nu2/2ktMCXlXBjRgjloms4h\r\njafLSNTFUZ20w3eYKHdfvE8A/7wcIRrjWK2PTKzWT/H53JJhLVPzafdijmP+\r\nTY/gqamP1DwNsXyzC3eoZVMucb+nEuG67IE=\r\n=Ct7N\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jonatanferenczfi","email":"jonatanferenczfi@gmail.com"},"directories":{},"maintainers":[{"name":"jonatanferenczfi","email":"jonatanferenczfi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ng-utils_15.0.1_1677666226170_0.8489644558264369"},"_hasShrinkwrap":false},"15.1.0":{"name":"@adroit-group/ng-utils","version":"15.1.0","license":"MIT","private":false,"homepage":"https://github.com/Adroit-Group/ng-tools","repository":{"type":"git","url":"git+https://github.com/Adroit-Group/ng-tools.git"},"module":"fesm2015/adroit-group-ng-utils.mjs","es2020":"fesm2020/adroit-group-ng-utils.mjs","esm2020":"esm2020/adroit-group-ng-utils.mjs","fesm2020":"fesm2020/adroit-group-ng-utils.mjs","fesm2015":"fesm2015/adroit-group-ng-utils.mjs","typings":"index.d.ts","exports":{"./package.json":{"default":"./package.json"},".":{"types":"./index.d.ts","esm2020":"./esm2020/adroit-group-ng-utils.mjs","es2020":"./fesm2020/adroit-group-ng-utils.mjs","es2015":"./fesm2015/adroit-group-ng-utils.mjs","node":"./fesm2015/adroit-group-ng-utils.mjs","default":"./fesm2020/adroit-group-ng-utils.mjs"},"./di-unchained":{"types":"./di-unchained/index.d.ts","esm2020":"./esm2020/di-unchained/adroit-group-ng-utils-di-unchained.mjs","es2020":"./fesm2020/adroit-group-ng-utils-di-unchained.mjs","es2015":"./fesm2015/adroit-group-ng-utils-di-unchained.mjs","node":"./fesm2015/adroit-group-ng-utils-di-unchained.mjs","default":"./fesm2020/adroit-group-ng-utils-di-unchained.mjs"},"./ngx-cdps-meter":{"types":"./ngx-cdps-meter/index.d.ts","esm2020":"./esm2020/ngx-cdps-meter/adroit-group-ng-utils-ngx-cdps-meter.mjs","es2020":"./fesm2020/adroit-group-ng-utils-ngx-cdps-meter.mjs","es2015":"./fesm2015/adroit-group-ng-utils-ngx-cdps-meter.mjs","node":"./fesm2015/adroit-group-ng-utils-ngx-cdps-meter.mjs","default":"./fesm2020/adroit-group-ng-utils-ngx-cdps-meter.mjs"}},"sideEffects":false,"dependencies":{"tslib":"^2.3.0"},"peerDependencies":{"@angular/core":"15.2.0","@angular/platform-browser":"15.2.0","@angular/router":"15.2.0","@angular/common":"15.2.0","@angular/forms":"15.2.0","rxjs":"~7.5.0","@angular/cdk":"15.2.0","@angular/platform-browser-dynamic":"15.2.0"},"gitHead":"a612bd0443e18a5ec6792285f113edb19efdb529","description":"<p align=\"center\">  <img width=\"0\" height=\"0\" src=\"https://adroitgroup.io/wp-content/uploads/2019/02/web_logo.png?sanitize=true\"> </p>","bugs":{"url":"https://github.com/Adroit-Group/ng-tools/issues"},"_id":"@adroit-group/ng-utils@15.1.0","_nodeVersion":"16.13.2","_npmVersion":"8.1.2","dist":{"integrity":"sha512-LQt7HTMS0Rw285WnL2Z3iFGA4LcCRYlif5yFXSLhbId1BSeUKLUkZapRdt/citn5aHn4KH8wSgfzhcpxyPnaFg==","shasum":"cba4530adaa91e55fe154e324d7da55e2e8b59dd","tarball":"https://registry.npmjs.org/@adroit-group/ng-utils/-/ng-utils-15.1.0.tgz","fileCount":229,"unpackedSize":758271,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCQILib+mo3VvHU7DAfJyKCUHmm9INmkp6cd8n9bgJeaQIhAMuVwvM9CjoCE1okxiGZm7Dj2L6sie+99Dd2PhAlaxLo"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkJqS+ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoQGxAAgwpt8qB0BrkyTiVOCYRJEp/I8GQziy6WvD9+TuIPKwjbNLXe\r\n+6kUQfP2PllnrfrjnveeNL0/eivlXwd3E2CmH2bcAbc8zzf6klilxMG8DzIp\r\np6eUOdt/xmYip3TO+2imgA+KICtTsogbjI4zFdqOyPVTs38ayqKSO+VOW2nV\r\nzpRBEONbDOwx38E/viex8ZDE72jGkMLjRamhwzAas1xzKwsfShmJ56QqdoeX\r\nj2zJX+Fwrm09E8Q4DTWW0o8A1SM+oPbWd/jkYeeM2S0RMCKiiBTFTrKpP8g/\r\nCrDBqMFskkQ7b5nHhiO62vfxQe34BZVX1MTfXkvuKcGSOvpEK7ggZI+qMGtx\r\nP7DCw8RFoeRgjGaALCD2kb/JEGP+XMS/ehI0Zla311OifWljwVzEG1jVSMVH\r\ndadDwBJE3r50MIYduC2GpS7jTLkQs0z9JoI4dX+P1ui0t+N0ltxuBHfZV2PI\r\nY7quUALVi/U9SJbYDg7mKKNDzLlPAj0t8LZgTay/tzFcuhv9FVXqy/Aiwu4u\r\nwOdYpuxmJ0QY8mHPcpsHFiVdUsp4lc/GbA5/IOODzo8qDzkGvjT+Ae8H4sR6\r\nG00gj8mFkQovuXBQD58sx+MG1P1KZ+Y2LyceeI4VK6AxppSEDbmltbOnWb6d\r\nw8HpWmOaBcsHHJrlv4fkM0Oz2V9zLK65XTU=\r\n=X8D1\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"jonatanferenczfi","email":"jonatanferenczfi@gmail.com"},"directories":{},"maintainers":[{"name":"jonatanferenczfi","email":"jonatanferenczfi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ng-utils_15.1.0_1680254142497_0.3528968942885278"},"_hasShrinkwrap":false}},"time":{"created":"2022-02-24T00:03:38.096Z","0.1.0":"2022-02-24T00:03:38.344Z","modified":"2023-03-31T09:15:43.044Z","0.1.1":"2022-03-08T17:07:52.692Z","0.1.2":"2022-03-12T08:59:23.760Z","0.1.3":"2022-03-24T13:06:17.588Z","0.2.0":"2022-05-23T11:15:44.829Z","0.2.1":"2022-11-16T14:57:00.552Z","0.2.2":"2022-11-17T11:30:42.616Z","0.3.1":"2023-02-26T18:29:06.049Z","14.0.0":"2023-02-27T11:31:42.210Z","15.0.0":"2023-02-27T15:03:42.610Z","15.0.1":"2023-03-01T10:23:46.413Z","15.1.0":"2023-03-31T09:15:42.793Z"},"maintainers":[{"name":"jonatanferenczfi","email":"jonatanferenczfi@gmail.com"}],"description":"<p align=\"center\">  <img width=\"0\" height=\"0\" src=\"https://adroitgroup.io/wp-content/uploads/2019/02/web_logo.png?sanitize=true\"> </p>","readme":"<p align=\"center\">\n <img width=\"0\" height=\"0\" src=\"https://adroitgroup.io/wp-content/uploads/2019/02/web_logo.png?sanitize=true\">\n</p>\n\n[![All Contributors](https://img.shields.io/badge/all_contributors-1-orange.svg?style=flat-square)](#contributors)[![spectator](https://img.shields.io/badge/tested%20with-spectator-2196F3.svg?style=flat-square)]()[![MIT](https://img.shields.io/packagist/l/doctrine/orm.svg?style=flat-square)]()[![commitizen](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg?style=flat-square)]()[![PRs](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)]()[![styled with prettier](https://img.shields.io/badge/styled_with-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)[![Build Status](https://travis-ci.org/adroit/ng-tools.svg?branch=master)](https://travis-ci.org/adroit/ng-tools)\n\n# NG Utils\n\nHandy utilities for Angular development\n\nAll notable changes to this project are documented in [CHANGELOG.md](https://github.com/Adroit-Group/ng-tools/blob/master/CHANGELOG.md) file.\n\n## Versioning\n\n| Package version | Angular version |\n| --------------- | --------------- |\n| 0.3.x           | 13.x            |\n| 14.x            | 14.x            |\n| 15.x            | 15.x            |\n\n## Table of contents\n\n- [NG Utils](#ng-utils)\n  - [Versioning](#versioning)\n  - [Table of contents](#table-of-contents)\n  - [Installation](#installation)\n  - [Usage](#usage)\n  - [Configuration](#configuration)\n  - [Package structure](#package-structure)\n  - [Decorators](#decorators)\n    - [Auto hooks](#auto-hooks)\n      - [Quick rundown of usage:](#quick-rundown-of-usage)\n      - [Detailed introduction](#detailed-introduction)\n    - [RunIn Decorator](#runin-decorator)\n      - [RunInBrowser Decorator](#runinbrowser-decorator)\n      - [RunInServer Decorator](#runinserver-decorator)\n  - [Directives](#directives)\n    - [NgLet Directive](#nglet-directive)\n    - [NgSubscribe Directive](#ngsubscribe-directive)\n    - [NgComponentOutlet Augmentation Directive](#ngcomponentoutlet-augmentation-directive)\n    - [NgFor Augmentation Directive](#ngfor-augmentation-directive)\n    - [NgIf Augmentation Directive](#ngif-augmentation-directive)\n    - [NgRenderIn Directive](#ngrenderin-directive)\n      - [NgRenderInBrowser Directive](#ngrenderinbrowser-directive)\n      - [NgRenderInServer Directive](#ngrenderinserver-directive)\n    - [FormControlName Augmentation Directive](#formcontrolname-augmentation-directive)\n  - [Services](#services)\n    - [Platform Observer](#platform-observer)\n  - [Pipes](#pipes)\n    - [Method Invoker](#method-invoker)\n    - [Safe Pipe](#safe-pipe)\n  - [Mixins](#mixins)\n    - [Subscription Handler](#subscription-handler)\n    - [Media Observer](#media-observer)\n    - [TrackBy Handler](#trackby-handler)\n  - [DI Unchained](#di-unchained)\n    - [`WithDiContext`](#withdicontext)\n    - [`DIContextProvider`](#dicontextprovider)\n  - [Development environment](#development-environment)\n\n## Installation\n\nRun `npm install @adroit-group/ng-utils --save` to install the library.\n\n## Usage\n\nInclude `AdroitNgUtilsModule` in your module\n\n```typescript\nimport { AdroitNgUtilsModule } from 'ng-utils';\n\n@NgModule({\n  imports: [\n    AdroitNgUtilsModule.forRoot(),\n  ]\n})\n```\n\n## Configuration\n\n```typescript\nimport { AdroitNgUtilsModule } from 'ng-utils';\n\n@NgModule({\n  imports: [\n    AdroitNgUtilsModule.forRoot({\n\n    }),\n  ]\n})\n```\n\n[⬆ Back to top](#table-of-contents)\n\n## Package structure\n\nNg utils is a monorepo that contains multiple packages. The main package that contains most of the useful stuff we've developed is `@adroit-group/ng-utils`. When you use the library, you should only import from this package. No need to specify any sub-package paths.\n\nHowever there are some sub-packages that are useful on their own. These are:\n\n- `@adroit-group/ng-utils/di-unchained` - A DI library that allows you to use DI without the need to use the `@Injectable` decorator. This is useful when you want to use DI in a class that is not injectable (e.g. a mixin).\n\nWhen you want to use these make sure to import from the proper sub-package.\n\n[⬆ Back to top](#table-of-contents)\n\n## Decorators\n\n### Auto hooks\n\nA decorator which ensures that the lifecycle hooks of components and directives that use mixins are called properly.\n\n#### Quick rundown of usage:\n\n- Only one decorator per prototype chain.\n- All Angular lifecycle methods are bound automatically\n- You can bind custom methods by supplying their names in the first parameter array of the decorator\n- Don't call the super versions of the bound methods yourself\n- ngOnChanges doesn't work prior to Angular v10\n\nBasic usage:\n\n```typescript\n@Component({\n  selector: 'my-comp',\n  templateUrl: './my.component.html',\n  styleUrls: ['./my.component.scss'],\n})\n@AutoHooks()\nexport class MyComp extends SubscriptionHandlerMixin() implements OnInit { ... }\n```\n\nLinking custom methods:\n\n```typescript\n@Component({\n  selector: 'my-comp',\n  templateUrl: './my.component.html',\n  styleUrls: ['./my.component.scss'],\n})\n@AutoHooks(['initialize'])\nexport class MyComp extends SubscriptionHandlerMixin() implements OnInit { ... }\n```\n\n#### Detailed introduction\n\nThe decorator applies automatic binding for the Angular specific lifecycle hooks.\n\nThis ensures that both the components' own methods and any other method on the mixins' prototypes are called in the same order in which constructor calls would do. (Starting with the last mixin class and calling continuosly toward the actual class that extends the mixins)\n\nNor the classes decorated with AutoHooks decorator neither the mixin or base classes applied to it are allowed to manually call the super version of the methods being bound.\n\nThat would result in unintended and multiple invocation of said methods.\n\nThe ngOnChanges hook is exempt from automatic invocation binding behavior when the decorator is used with an Angular version less than v10 as binding this lifecycle hooks results in a faulty behavior where the method does not receive the changes parameter object.\n\nIf a class's prototype chain contains real classes apart from the applied mixins those classes cannot use AutoHooks in tandem with the child class's decorator.\n\n[⬆ Back to top](#table-of-contents)\n\n### RunIn Decorator\n\nA decorator that restricts the usage of methods and accessors.\n\nMethods and accessors decorated will only ran (when invoked\nfrom the client code), if the application's active platform matches those supplied to the decorator.\n\nThis makes it easy to optimize various execution scenarios\nand rid the application of execution paths that would cause problems in certain environments.\n\n```ts\nimport {\n  EApplicationPlatform,\n  RunIn,\n  RunInBrowser,\n  RunInServer\n} from '@adroit-group/ng-utils';\n\n@Component({\n  selector: 'app-root',\n  templateUrl: './app.component.html',\n  styleUrls: ['./app.component.scss']\n})\nexport class AppComponent {\n  @RunInBrowser()\n  public set setterThatUsesWindow(value: string) { ... }\n\n  @RunInServer()\n  public set setterThatSetsMetaTags(value) { ... }\n\n  @RunIn(EApplicationPlatform.Browser)\n  public methodThatUsesWindow(value: string) { ... }\n}\n```\n\n#### RunInBrowser Decorator\n\nAn Alias decorator for \\@RunIn(EApplicationPlatform.Browser)\n\n```ts\n@Component({\n  selector: 'app-root',\n  templateUrl: './app.component.html',\n  styleUrls: ['./app.component.scss']\n})\nexport class AppComponent {\n  @RunInBrowser()\n  public set setterThatUsesWindow(value: string) { ... }\n}\n```\n\n#### RunInServer Decorator\n\nAn Alias decorator for \\@RunIn(EApplicationPlatform.Server)\n\n```ts\n@Component({\n  selector: 'app-root',\n  templateUrl: './app.component.html',\n  styleUrls: ['./app.component.scss']\n})\nexport class AppComponent {\n  @RunInServer()\n  public set setterThatSetsMetaTags(value) { ... }\n}\n```\n\n[⬆ Back to top](#table-of-contents)\n\n## Directives\n\n### NgLet Directive\n\nA structural directive that allows the definition of template variables with ease.\n\n```html\n<!-- Simple case -->\n<div *ngLet=\"user.profileInfo.subscriptionInfo as userSubInfo\">...</div>\n\n<!-- With pipes -->\n<div *ngLet=\"userData$ | async as userData\">...</div>\n\n<!-- Object notation syntax -->\n<div\n  *ngLet=\"{ \n    userData: userData$ | async, \n    cartPrice: cartData.totalPrice\n  } as userAndCartData\"\n>\n  <p>{{ userAndCartData.userData.name }}</p>\n  <p>{{ userAndCartData.cartPrice | currency }}</p>\n</div>\n\n<!-- Array notation syntax -->\n<div *ngLet=\"[userData$ | async, cartData.totalPrice] as userAndCartData\">\n  <p>{{ userAndCartData[0].name }}</p>\n  <p>{{ userAndCartData[1] | currency }}</p>\n</div>\n```\n\nThe directive utilizes the Angular language service's capabilities and gives you full type checking in it's template.\n\n[⬆ Back to top](#table-of-contents)\n\n### NgSubscribe Directive\n\nA structural directive that allows the definition of template variables from async sources with ease. This directive does essentially the same as `*ngLet=\"use$ | async as user\"` without having to use the `async` pipe explicitly.\n\n```html\n<!-- Simple case -->\n<div *ngSubscribe=\"subscriptionInfo.paymentDueAt$ as paymentDueAt\">...</div>\n\n<!-- Object notation syntax -->\n<div\n  *ngSubscribe=\"{ \n    userData: userData$, \n    paymentDueAt: subscriptionInfo.paymentDueAt$\n  } as userAndSubscriptionData\"\n>\n  <p>{{ userAndSubscriptionData.userData.name }}</p>\n  <p>{{ userAndSubscriptionData.paymentDueAt | date }}</p>\n</div>\n\n<!-- Array notation syntax -->\n<div\n  *ngSubscribe=\"[\n    userData$, \n    subscriptionInfo.paymentDueAt$\n  ] as userAndSubscriptionData\"\n>\n  <p>{{ userAndSubscriptionData[0].name }}</p>\n  <p>{{ userAndSubscriptionData[1] | date }}</p>\n</div>\n```\n\nThe directive utilizes the Angular language service's capabilities and gives you full type checking in it's template.\n\n[⬆ Back to top](#table-of-contents)\n\n### NgComponentOutlet Augmentation Directive\n\nAugments the {@link NgComponentOutlet} directive to allow for binding of inputs and outputs.\n\nIn your lazy loaded component define the input and outputs you wish to bind to.\n\n```ts\n@Component({\n  selector: 'lazy-loaded-component',\n  template: `...`,\n})\nexport class LazyLoadedComponent {\n  @Input() public input1: string;\n\n  @Output() public output1 = new EventEmitter<string>();\n}\n```\n\nIn the template where you wish to use the component, use the directive to bind the inputs and outputs.\n\n```html\n<ng-container\n  *ngComponentOutlet=\"lazyLoadedComp$ | async; inputs: { input1: 'test' }\"\n></ng-container>\n```\n\nIf you want to bind to the lazy loaded components outputs' as well, then you have to use the non-micro-syntax version of the directive, as the micro-syntax version does not support binding to outputs.\n\n```html\n<ng-container\n  [ngComponentOutlet]=\"lazyLoadedComp$ | async\"\n  [ngComponentOutletInputs]=\"{ input1: 'test' }\"\n  [ngComponentOutletOutputs]=\"onComponentEvent($event)\"\n>\n</ng-container>\n```\n\nThen in your component, you can handle the event like so:\n\n```ts\nexport class MyComponentThatUsesLazyLoadedComponent {\n  public onComponentEvent(event: NgComponentOutletEvent): void {\n    if (event.key === 'output1') {\n      // do something with the received event data through event.event\n    }\n  }\n}\n```\n\n[⬆ Back to top](#table-of-contents)\n\n### NgFor Augmentation Directive\n\nA utility directive that enhances Angular's `*ngFor` directive with extra functionality.\n\nThe directive is implicitly applied every time the original `*ngFor` is used and provides two additional template options for `*ngFor`.\n\nYou can supply both a no array and an empty array template to be rendered.\n\n```html\n<p *ngFor=\"let item of items$ | async else loading empty blank\">{{item}}</p>\n```\n\ncredit: Alexander Inkin - https://medium.com/@waterplea\n\nMedium article: https://medium.com/angularwave/non-binary-ngif-cfdf7c474852\n\n[⬆ Back to top](#table-of-contents)\n\n### NgIf Augmentation Directive\n\nA utility directive that enhances Angular's `*ngIf` directive with extra functionality.\n\nThe directive is implicitly applied every time the original `*ngIf` is used and provides two additional template options for `*ngIf`.\n\nYou can supply both a loading and error template for `*ngIf`.\nThis can be particularly useful when you are working with async data\n\n```html\n<p *ngIf=\"value$ | async as value else default or loading but error\">\n  {{value}}\n</p>\n```\n\ncredit: Alexander Inkin - https://medium.com/@waterplea\nMedium article: https://medium.com/angularwave/non-binary-ngif-cfdf7c474852\n\n[⬆ Back to top](#table-of-contents)\n\n### NgRenderIn Directive\n\nA structural directive that allows the rendering on templates based on the platform the application is running on.\n\nThe typical use case of the directive is to enable the usage of different templates for different rendering modes, eg.: usae a different view when the application is ran in SSR.\n\n```html\n<app-splash-screen *appRenderIn=\"'browser'\"></app-splash-screen>\n```\n\nThere are two utility versions of this directive\nNgRenderInBrowser (*ngRenderInBrowser) and NgRenderInServer (*ngRenderServer) that do exactly what their names suggest.\n\n#### NgRenderInBrowser Directive\n\nA structural directive that only renders it's template if the application is ran in the browser.\n\n```html\n<app-splash-screen *ngRenderInBrowser></app-splash-screen>\n```\n\n#### NgRenderInServer Directive\n\nA structural directive that only renders it's template if the application is ran in the server environment (SSR).\n\n```html\n<app-splash-screen *ngRenderInServer></app-splash-screen>\n```\n\n[⬆ Back to top](#table-of-contents)\n\n### FormControlName Augmentation Directive\n\nA utility directive that exposes the `FormControlName` with `exportAs` so it can be stored in a template variable.\n\n```html\n<input formControlName=\"testControl\" #templateVariableName=\"formControlName\" />\n<span *ngIf=\"templateVariableName.invalid\">Error message</span>\n```\n\n[⬆ Back to top](#table-of-contents)\n\n## Services\n\n### Platform Observer\n\nAn Injectable service that helps to identify the platform where the application runs.\n\n## Pipes\n\n### Method Invoker\n\nA meta pipe that aims to replace most or all other pipes in your application.\nThis pipe take a function and optionally it's arguments as parameter(s) an executes it.\nA context object can be supply to the pipe through Angular's DI system\nin turn enabling the usage and reference of the this parameter of the component or directive that defined the function.\n\nWithout context\n\n```html\n<p>{{ getRelativeDateTime | invoke: orderDate }}</p>\n```\n\nWith context\n\n```ts\n@component({\n  ...\n  providers: [\n    {\n      provide: METHOD_INVOKER_PIPE_HOST,\n      useExisting: MyComponent\n    }\n  ]\n})\nexport class MyComponent {\n  ...\n\n  public title = 'My App';\n\n  public componentMethodThatUsesThis(): string {\n    return this.title;\n  }\n}\n```\n\n```html\n<p>{{ componentMethodThatUsesThis | invoke }}</p>\n```\n\n[⬆ Back to top](#table-of-contents)\n\n### Safe Pipe\n\nA pipe that bypasses Angular's built-in sanitization for the following security contexts:\n\n- HTML\n- Style\n- Script\n- URL\n- Resource URL\n\nThe pipe assumes HTML content to be sanitized by default.\n\nUsage:\n\n```html\n{{ value | safe }}\n```\n\n```html\n{{ value | safe:'html' }}\n```\n\n```html\n{{ value | safe:'style' }}\n```\n\n```html\n{{ value | safe:'script' }}\n```\n\n```html\n{{ value | safe:'url' }}\n```\n\n```html\n{{ value | safe:'resourceUrl' }}\n```\n\n[⬆ Back to top](#table-of-contents)\n\n## Mixins\n\nFactory functions that return class definitions that can be used to dynamically constructor arbitrary prototype chains allowing you to use multiple inheritance with ease.\n\n### Subscription Handler\n\nA Mixin function that provides functionality related to handling subscriptions.\nA class extending this mixin will have access to the `onDestroy` property that should be used in the various takeUntil operators throughout the streams defined by the concrete class.\nThe mixin's subscription handling logic depends on it's `ngOnDestroy` method being called by Angular. If you have to define `onDestroy$` lifecycle hook in your concrete class make sure to call `super.ngOnDestroy` as well or better yet use the [AuthHooks decorator](#autohooks) !\n\n```ts\nclass MyComp extends SubscriptionHandlerMixin() {\n  constructor() {\n    super();\n  }\n}\n```\n\n[⬆ Back to top](#table-of-contents)\n\n### Media Observer\n\nA Mixin function that provides functionality related to observing the browser viewport's size.\nA class extending this mixin will have access to various observables named after the convention followed by numerous CSS frameworks: `xs$`, `sm$`, `md$`, `lg$`, `xl$`, etc...\nThese observable stream will always emit a boolean value indicating if the browser's viewport currently has a size fitting that breakpoint size criteria.\n\n```ts\nclass MyComp extends MediaObserver() {\n  constructor() {\n    super();\n  }\n}\n```\n\n```html\n<div *ngIf=\"xs$ | async; else desktopTpl\">...</div>\n```\n\n[⬆ Back to top](#table-of-contents)\n\n### TrackBy Handler\n\nA Mixin function that provides functionality related to handling track-by functions for ngFor directives used in the component's template.\nA class extending this mixin will have access to a general purpose `trackBy` function that can be referenced in the component's template for ngFor directives' `trackBy` inputs.\nThe `trackBy` function will try to use the received objects' ids as unique keys, however this behavior can be configured in the mixin's second parameter.\n\n```ts\nclass MyComp extends TrackByHandlerMixin() {\n  constructor() {\n    super();\n  }\n}\n```\n\n```html\n<div *ngFor=\"pics of pictures; trackBy: trackBy\">...</div>\n```\n\n[⬆ Back to top](#table-of-contents)\n\n## DI Unchained\n\nA DI library that allows you to use DI without the need to use the @Injectable decorator. This is useful when you want to use DI in a class that is not injectable (e.g. a mixin).\n\nThere are TS decorators exposed by this package:\n\n- `WithDiContext`: A multi purpose decorator that allows you to use DI in any class without the need to use the @Injectable decorator.\n- `DIContextProvider`: A class decorator that marks an Angular NgModule as the DI provider for `@Unchained` classes.\n\n### `WithDiContext`\n\nDecorator that frees your classes from the shackles of Angular DI.\nAllowing them to fully utilize it without requiring Angular's class decorators: Component, Directive, Injectable, Pipe, Module.\n\nThe decorator can be used as a class, method, get/set accessor decorator.\n\n```ts\n@Unchained()\nclass MyClass {\n  router: Router;\n\n  routerFn = () => inject(Router);\n\n  static routerFn = () => inject(Router);\n\n  constructor() {\n    this.router = inject(Router);\n  }\n\n  getTitleService() {\n    const title = inject(Title);\n\n    console.log('title: ', title);\n  }\n\n  public get neta() {\n    return inject(Meta);\n  }\n\n  public static get appRef() {\n    return inject(ApplicationRef);\n  }\n\n  static getRouter() {\n    return inject(Router);\n  }\n}\n```\n\n### `DIContextProvider`\n\nAn Angular ngModule class decorator the marks an Angular NgModule as the DI provider for `@Unchained` classes.\n\nYou have to use this decorator on your root module (AppModule) in order to use `@Unchained` decorator on non Angular classes.\n\nThe normal DI resolution rules apply to `Unchained` classes and their providers as well.\ne.g.: Providers provided in their own lazy-loaded modules' providers array ARE NOT resolvable in other modules contexts.\n\n```ts\n@DI()\n@NgModule({\n  declarations: [AppComponent],\n  bootstrap: [AppComponent],\n})\nexport class AppModule {}\n```\n\n[⬆ Back to top](#table-of-contents)\n\n## Development environment\n\nRun `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.\n\nRun `npm run packagr` to build the library. The build artifacts will be stored in the `dist` directory.\n","readmeFilename":"README.md","homepage":"https://github.com/Adroit-Group/ng-tools","repository":{"type":"git","url":"git+https://github.com/Adroit-Group/ng-tools.git"},"bugs":{"url":"https://github.com/Adroit-Group/ng-tools/issues"},"license":"MIT"}