{"_id":"@dendrityc/ngx-smart-canvas","_rev":"8-3273fa7a8cdc6d9d5bfd6e069b292fe9","name":"@dendrityc/ngx-smart-canvas","dist-tags":{"latest":"0.0.8"},"versions":{"0.0.1":{"name":"@dendrityc/ngx-smart-canvas","version":"0.0.1","peerDependencies":{"@angular/common":"^12.2.0","@angular/core":"^12.2.0"},"dependencies":{"tslib":"^2.3.0"},"main":"bundles/dendrityc-ngx-smart-canvas.umd.js","module":"fesm2015/dendrityc-ngx-smart-canvas.js","es2015":"fesm2015/dendrityc-ngx-smart-canvas.js","esm2015":"esm2015/dendrityc-ngx-smart-canvas.js","fesm2015":"fesm2015/dendrityc-ngx-smart-canvas.js","typings":"dendrityc-ngx-smart-canvas.d.ts","sideEffects":false,"description":"","_id":"@dendrityc/ngx-smart-canvas@0.0.1","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-4y06MPNXsSgGaGdLzKWkl03ZHRm2yTDNdRkJRR/lXs0gDb4hipiRYOv++qBrthR/eHUNA5T9gdqGG9xZ17rydg==","shasum":"e85d7dc44e0f43de36695fd5eafa3062fdc12693","tarball":"https://registry.npmjs.org/@dendrityc/ngx-smart-canvas/-/ngx-smart-canvas-0.0.1.tgz","fileCount":30,"unpackedSize":243455,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmq5rCRA9TVsSAnZWagAA8HYP/A0yy6caAhPp47ZKVypM\nv1/1ue/iSc4GXyUyrFXmXy5BpqEOdMR1kUDuj/KVKwxosTRJqIQwm9Fr4CX5\nAoxFvRLqYFv0zodQPlGCcHOwqz8wgR5FPAwl0N4PXKOV4xCSxyHsgfkCRCYH\nnBR2vHAFNELhys/TVu3WtAWMC6zKKqxYjE3TqWMCZcc5zxegDYRAJ5gwXpmX\njmy5Uz1lL1BURFT4+Muo1PPfoew+Aw8O1zYRyHucI6hgaIF4G4sHmABf+qH2\nm3CqpsJ4mBeEO9STQRoPUhkvxp2mRF0z2wdxnWUj7XB+M7Ygc+Gva9QoLuF2\nbL/Poib323QSowTeL+RpyxhGfdqHZ1yHmG/Sz1T4XN8ypS0d22RdjbkazFAS\nxwIrBm0MGU13o9sHowpzfs5jGd1qrBBlOoIwdp71g/6W+NJ8Waofw2cA5qVZ\n4xyYIPInwRd5mVfNIaU1i1byoNciOfFD7Yvvg4Usfl8EMC1gzkpA2E9qwij7\n1laqmOXTMv3y7N/Frs+eAKRvHcINcEXnaIfOVHw56g0UHvYfUar8NxDWgXkN\nn523M1ebY7zvSI3TdqDII2oxEoceYpWoRt6aBi2RpkDsP2Ga68DCR22JPmFA\nT0T8NmTwWg8phfdQcY9CcSvR5KIUleFtBdx2tZPUd8GsdvfUAhmih+ZMv4WC\nvPNA\r\n=RbVB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEmq7F2aWPXIRdIPN5NIby5hxYljA2ydet83aO7Oq3evAiEA4uWJJV90fygNKRdm6OieTo4fgBnK8Y/a9wv4ah0YTL4="}]},"_npmUser":{"name":"danbellard","email":"danbellard@micron.com"},"directories":{},"maintainers":[{"name":"danbellard","email":"danbellard@micron.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-smart-canvas_0.0.1_1637527147301_0.719196237106102"},"_hasShrinkwrap":false},"0.0.2":{"name":"@dendrityc/ngx-smart-canvas","version":"0.0.2","peerDependencies":{"@angular/common":"^12.2.0","@angular/core":"^12.2.0"},"dependencies":{"tslib":"^2.3.0"},"main":"bundles/dendrityc-ngx-smart-canvas.umd.js","module":"fesm2015/dendrityc-ngx-smart-canvas.js","es2015":"fesm2015/dendrityc-ngx-smart-canvas.js","esm2015":"esm2015/dendrityc-ngx-smart-canvas.js","fesm2015":"fesm2015/dendrityc-ngx-smart-canvas.js","typings":"dendrityc-ngx-smart-canvas.d.ts","sideEffects":false,"description":"","_id":"@dendrityc/ngx-smart-canvas@0.0.2","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-4rakTqsZx0RuJIUJC28HdThsVa8OYn+OgFhSuEPDbSfONrcacChXhPfrdF9/YjII5mYqX4+mvxYsoBa4HPf2IA==","shasum":"3c4836650db51796d1b9abf3433388555acafa63","tarball":"https://registry.npmjs.org/@dendrityc/ngx-smart-canvas/-/ngx-smart-canvas-0.0.2.tgz","fileCount":30,"unpackedSize":240254,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmsgECRA9TVsSAnZWagAASw8P/jJN2vtQ68X7c9gQuBGd\nQWeumBtjyXZNFmZ0jJXEp+sr83AkjyaG10HmqG/LsM75jnG5k/YeYLUud/Qx\n8Alcjshyr4VN7ppxs2cKyxWNuHf00h4SScsUNOEJ933IO765MwOo0Ujntua3\nt7kUdb9bLrLKHcaXc2piLOxYrLT31liTvieyZWoG1fZsOsKzrs/11Cg81AM6\nHMorBKpbeDMyy4RBvnoD+eUIMYnAq1S0XOKmihWSxUguT7QjqBI1ZRyukt3F\n5hVLNm8d8Tm7637OjdeG1MktpAP57Fc/X4b7uvixsEZxRIC6TaCWFsuJvSgi\nCWCtDk7GT0Q2n56QsORtrE6jUL94O4wpQe0kMmEgpFLe2xA/IdAvMq1iDPwM\nPY6xlHrgmc966hvzFZ7eCvdSJqSyIDieNwbPyVH3Jb44XqTXtzbb7/9mPjWT\nh1AnX3ajCyhZhKTEFDLukNDe+SILMQVnehp326sD+oWv1pKCBLIbAi7qj4Xo\nNYFwA8Ie+u8JKJXlJGAgvX8qAfqB847XH21k07YT22QenPmdlq55T7NMKobp\nJSKwxVZF9Ihy23CJsPEJPBzCoB+DCMx51ch2f3UBPuBLv5SsSWHmPc2XSRXU\nY0HPQ5hi+VsMR2tVekEJfwdp9qurezcsLD/TzOAlEsfqqnQrjNy9zj08OP5H\nj55w\r\n=sqGW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFdCUQUSigFGf0KhZoQz81uY7DxV7zaROHhIxGQDxwCNAiAGHtr/sBDLgInsKjmWrUwZFql3Js6j1ok4bfdV6FF7XA=="}]},"_npmUser":{"name":"danbellard","email":"danbellard@micron.com"},"directories":{},"maintainers":[{"name":"danbellard","email":"danbellard@micron.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-smart-canvas_0.0.2_1637533700834_0.6928429243485656"},"_hasShrinkwrap":false},"0.0.3":{"name":"@dendrityc/ngx-smart-canvas","version":"0.0.3","peerDependencies":{"@angular/common":"^12.2.0","@angular/core":"^12.2.0"},"dependencies":{"tslib":"^2.3.0"},"main":"bundles/dendrityc-ngx-smart-canvas.umd.js","module":"fesm2015/dendrityc-ngx-smart-canvas.js","es2015":"fesm2015/dendrityc-ngx-smart-canvas.js","esm2015":"esm2015/dendrityc-ngx-smart-canvas.js","fesm2015":"fesm2015/dendrityc-ngx-smart-canvas.js","typings":"dendrityc-ngx-smart-canvas.d.ts","sideEffects":false,"description":"","_id":"@dendrityc/ngx-smart-canvas@0.0.3","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-x51kThwGGYlxr5798tvbiHjSJ49XI8K0qzIRRAnOpLzxeBR06NYihZCEWZVhDjznyMk/mHpO6OUYzBY3KspGhw==","shasum":"3216071194f302ed0cf4349fdf4f121314b2f044","tarball":"https://registry.npmjs.org/@dendrityc/ngx-smart-canvas/-/ngx-smart-canvas-0.0.3.tgz","fileCount":30,"unpackedSize":239613,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmsrZCRA9TVsSAnZWagAAccoP/R2fBWCMYYO8uP4JpoGd\nk8WgOiygWkVZTgCyUQ2knxj2pcsRaXQ14pt8oSOjVZcxIzo5VHMxv5EDaHmx\nchaA/RhFY7vimyAEglbZ/7SPcDBVWak1wtVyBsVxZcv0689+BBxNt9IBQvpw\nAYXR8wkNcn9mnsSiUmBeh7zaoH6y9LVvEUhyAsjM0FbDw9hIf9xGv13Om7m8\nGpkFGYpnJxopMZBHLkWeH0+RHBi5bTEInGDf7J3JBa+lbc2eqwXvb5XmLohU\nHoJouMTwzY2nbPNorNfzNnemqZ+sa//0OxW7PGK84wUojzEcW+/WbtyNr7iu\n1fS67FhGKEz2Rp8PIV0rCUH8MfJluL2+vuVnRjjzMO4gHcN7b0ZTUM72JPbo\nRlf6bDyCYAZa5tTYtt9CGuG3lnHs+od4VFG8lMNPS2eq/W8nHNVgwMoCzW0b\n5AfKO3i2AXMiWzorgFDOz+eXN4Ms5+DGM7NXHHJ+A8vqw3uNw5HzSrExQp0T\nv6Wh+LRgdf3CwhAsegvnf3lTTLSWfHk58g5UrrsykVP7f+M7gssDBkjMHP5c\nAhDhV8cjc3icCXf3Ds3Lb1M3uPhqKL5fwlYzWtHEP2XpoQYsepRxA5ZbSibW\nudBjqJy48kwQ5Vn4MNiO/ZvGEEJ2jh6D/s4PCSVoti/tuiGTgAMMjMkV7u2W\nGrUJ\r\n=sd0R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFe3wcRNnFrcBr9P/x2keuUAusDArZgSsRkZMzjEc8uAAiAFgT9PClhZttWYdpHQ7Y+Lm9mfjfGrpC+fInDXaucCsw=="}]},"_npmUser":{"name":"danbellard","email":"danbellard@micron.com"},"directories":{},"maintainers":[{"name":"danbellard","email":"danbellard@micron.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-smart-canvas_0.0.3_1637534425494_0.7310025828643394"},"_hasShrinkwrap":false},"0.0.4":{"name":"@dendrityc/ngx-smart-canvas","version":"0.0.4","peerDependencies":{"@angular/common":"^12.2.0","@angular/core":"^12.2.0"},"dependencies":{"tslib":"^2.3.0"},"main":"bundles/dendrityc-ngx-smart-canvas.umd.js","module":"fesm2015/dendrityc-ngx-smart-canvas.js","es2015":"fesm2015/dendrityc-ngx-smart-canvas.js","esm2015":"esm2015/dendrityc-ngx-smart-canvas.js","fesm2015":"fesm2015/dendrityc-ngx-smart-canvas.js","typings":"dendrityc-ngx-smart-canvas.d.ts","sideEffects":false,"description":"","_id":"@dendrityc/ngx-smart-canvas@0.0.4","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-I+BP7oEkNWjRwmLopPx4komvgHIC7eRjZzuGV1nBBQJeKl0/fPGg7U+6qgtMgk2qISTwHViNU1xKch2J2Df53A==","shasum":"1fef897a4f5a83b6a56861f5497137bc600d9616","tarball":"https://registry.npmjs.org/@dendrityc/ngx-smart-canvas/-/ngx-smart-canvas-0.0.4.tgz","fileCount":30,"unpackedSize":240546,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmsuhCRA9TVsSAnZWagAAQ2cP/0qc+AXIdow/dOP7h9Ir\nJancjnf5q4hszlL9a9fK2dcRJCGdDWXy436LfGv+zEnNsqC03JVU5z3J3hkC\ndBKRo+2Re1pO9GYQi4muu1UVg0b4hyXITB/j0vevyPv3hrW4pK7xLUyVseBN\nvdPBsv/2hteLfStFvU7Y1NppEDOsSylXW3qMTRhc1EVnnKpnzBvuPi2RcwMu\nL7B6wnykSAFXHY/KgaFauYDmL0dVzuy0qcg5ROl8vvYmeTYPGfQYwL/cqxaO\nbkyNZgCYhXiWrdJmjMmfwM/tKxgbj4iamTsS+cR6wmgWLHhSH9cYATFuuXiU\npE18UHWjU4gX6azSoIVgxfVvx39llHQVMR+TPZA4WdS8oaqxxwW0CcQNtBtF\nTu2tDhXqSuCs2jkyPwn6zjRWXP9y+55gHyzyzMi8Uy+3CBqWJcoQEA8JGiOz\nvPmuOghk4wzBY/iBadsEuk3PE7dTRfgLMSnZLCV166KcOBDWNNZDjc4F3Xi2\nhjPrUxMAzIwWEQRpc/OEClEG4KiPGRw5E/xfEqw5ZMjS74r7VezZCOK8Gtbj\nWySudKnT/NO4CZXKZtY2/ip1Wpey4Xw+mT38u03MPKFcExjUZJ1rM63FGSG1\nA+ylL3xtYMBrXrL0XUyIpVkYBQGQATnTFoL5QaSTGPQK/nRDA61ise1MG9gl\ntIUx\r\n=ryVQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICm/4EAPg53Ag3ot12QUmRBj6zsh9PpmaNY/8HJ3fGjVAiBVLOL0NabiAew46iBWTdiNTE+wB/poFanNcoS98BAfWg=="}]},"_npmUser":{"name":"danbellard","email":"danbellard@micron.com"},"directories":{},"maintainers":[{"name":"danbellard","email":"danbellard@micron.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-smart-canvas_0.0.4_1637534624816_0.357811848827861"},"_hasShrinkwrap":false},"0.0.5":{"name":"@dendrityc/ngx-smart-canvas","version":"0.0.5","peerDependencies":{"@angular/common":"^12.2.0","@angular/core":"^12.2.0"},"dependencies":{"tslib":"^2.3.0"},"main":"bundles/dendrityc-ngx-smart-canvas.umd.js","module":"fesm2015/dendrityc-ngx-smart-canvas.js","es2015":"fesm2015/dendrityc-ngx-smart-canvas.js","esm2015":"esm2015/dendrityc-ngx-smart-canvas.js","fesm2015":"fesm2015/dendrityc-ngx-smart-canvas.js","typings":"dendrityc-ngx-smart-canvas.d.ts","sideEffects":false,"description":"","_id":"@dendrityc/ngx-smart-canvas@0.0.5","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-wGCE3ziBBtCOC726G3IXGyaVYUcWhNx63z4efFmnQKWkcKAVJRHOFPBFwx6L5orqTwbuF+saJszDZ9yj5M1YQg==","shasum":"798e16ea2af756113179a41c650407c512b0b13e","tarball":"https://registry.npmjs.org/@dendrityc/ngx-smart-canvas/-/ngx-smart-canvas-0.0.5.tgz","fileCount":30,"unpackedSize":234595,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmttiCRA9TVsSAnZWagAALtsP/3Imx8glEi9DzuGkOWTl\njkfTb3sgT4CSCh2X8VOJO60ZObGsWyxWtHRq1SZdCE1cJk+2tQFvxJl1rvWU\nOwUdaaZaEAYONQL+BnY7jFaTKiF5xoGO+WujdDFOX0pMq1Xllqegny6DjN9M\nwLmFGcK5Pf2nobYKob0D/O+y3VlCXyR5AivC8Mgwh3kkDsE+mLMmtKQ3jkwz\nV5biONTID990Ws4I9dlXDz3xkIYu4ChHLC2cG3WH6FUse9yb9oN8+NXPgo2A\nSD+dP397pPt0RueLqmclmf/GUBtkBF9R1IsPRVe1y0kklP97bHaKPBqWn2Pr\nB3vaF9KU2hZrrsKYMQbR3rwSbunGkC4UzhZwapRKO+G3vJSZ4wQj09VYh7Gz\nuufrMbatQ3aAH7YaxHZRX7yUhFTdDMSuRGcF35z+ruCUWz/sZUVPnRW8e5lx\nSu6Wa2bzMuSt7Q45q30rBL6J3AZoQCb1fCUtSBcs2bmqxfHp5z1HZcpflPmV\nVuSO0vW53evaov5cctBF9Vp1gmTAGXZmtjpfKRfVhXdD+CqNjjnceFt3KZR7\nlJAyA+8kDs2CamTQg2huwCY7w7dVmI5VbtMZwLhbC1kqIS5Nne+3nW74pQse\nMgzabQRHFgMmGNSOQRtJJzbJf2DxfxAAUQPfSZ9CaStr/lu1vPpBmpq7897n\n17JI\r\n=FUq0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDdbGDKGkEzzLJURjdi+/RAhv7xWt/q/PGVzZzZuNfCYAiAgpcRfv65zTfn7Osdh8HRSJ6skN7Ci9671v7OVbrJ7Tg=="}]},"_npmUser":{"name":"danbellard","email":"danbellard@micron.com"},"directories":{},"maintainers":[{"name":"danbellard","email":"danbellard@micron.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-smart-canvas_0.0.5_1637538658267_0.410251543709097"},"_hasShrinkwrap":false},"0.0.6":{"name":"@dendrityc/ngx-smart-canvas","version":"0.0.6","peerDependencies":{"@angular/common":"^12.2.0","@angular/core":"^12.2.0"},"dependencies":{"tslib":"^2.3.0"},"main":"bundles/dendrityc-ngx-smart-canvas.umd.js","module":"fesm2015/dendrityc-ngx-smart-canvas.js","es2015":"fesm2015/dendrityc-ngx-smart-canvas.js","esm2015":"esm2015/dendrityc-ngx-smart-canvas.js","fesm2015":"fesm2015/dendrityc-ngx-smart-canvas.js","typings":"dendrityc-ngx-smart-canvas.d.ts","sideEffects":false,"description":"","_id":"@dendrityc/ngx-smart-canvas@0.0.6","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-7/RwTQ/qqam5Kk4PAaev0iZdZU20617+dT16+3GOlkvU6Lcvf7bzf8vxxTpuTCf+wyNDWIJwpPoIffCSFopC/w==","shasum":"76d632bc84821c76c071dce9973996c1c86c801d","tarball":"https://registry.npmjs.org/@dendrityc/ngx-smart-canvas/-/ngx-smart-canvas-0.0.6.tgz","fileCount":30,"unpackedSize":235004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmw1RCRA9TVsSAnZWagAADXcQAIdYtDTVtQ/xsAbFx95w\nRg52x4BxjGswc2zzXqrE1jDUmFJu2fICWDc//rU74ATTmY3bj0uadaZIwIli\nf322FeOoffsMml61wzKZpiLWl8vI/rxfzFMqKPInr1UDpntB//YBEBNP7SMA\nthbBCJHkexwOQSPWWbKHyKQ2bIn3UI9udvQLPDCEn9cSoehWmUHzdanC7zl3\nzaM6Ka+t+ZtvdYDH9rcJHHyDvLoBntErSRFenUKbuZB84+8tFNp1hiDTYJJH\ngpD6DYJlSirGoJM6ntHUmFSgsHsY1IPbPRp8LjlXcd7WaGPM//WTwZgeH58f\nVJ0qP9lTwIRLmkT7KwGzVHCnbB3TznXLv5NpNDR00m54ekj7CQ3kZDgcIqy/\nDDon/YxzUWKctCbvaq3uP1gfm9ZQ10NZ+ASvTu54TiHdpKpljhm2VKIstZ1m\n/d3uPJM+7vaiF7o/GpCeBZHbf+cbmr2S7prPriQckViOiTpmYNBeAwmoDMMX\n2fPfv5ZCaF8K9g3MPV2IEh9U/ct08OLkngvcnKKtbiFg1zuZGrKTXjMniK+l\nfKjjJR5S7UrfvvrxOy15NYD9Xb4Kiux4vnmiA/5/ozAJ1qAzGfM30R/AGhq4\nD+TzdTTKz9/jK5Lb//pX8p+IK8A0sKy1yQET0gl3zzsTqP31MjXNQDg08TxQ\nD9PW\r\n=/gI1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID0Uqwd+Ode6ugLhSe32l6WMy7nBPBujtg1LLFGCcGWOAiEAzGPlK02M6a/LClePpaWt+gar2i3zEiw4hNldPtCmQV0="}]},"_npmUser":{"name":"danbellard","email":"danbellard@micron.com"},"directories":{},"maintainers":[{"name":"danbellard","email":"danbellard@micron.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-smart-canvas_0.0.6_1637551440362_0.16499039921118341"},"_hasShrinkwrap":false},"0.0.7":{"name":"@dendrityc/ngx-smart-canvas","version":"0.0.7","peerDependencies":{"@angular/common":"^12.2.0","@angular/core":"^12.2.0"},"dependencies":{"tslib":"^2.3.0"},"repository":{"type":"git","directory":"https://github.com/JerpJorp/-dendritic-ngx-smart-canvas"},"homepage":"https://github.com/JerpJorp/-dendritic-ngx-canvas-graph/blob/main/README.md","main":"bundles/dendrityc-ngx-smart-canvas.umd.js","module":"fesm2015/dendrityc-ngx-smart-canvas.js","es2015":"fesm2015/dendrityc-ngx-smart-canvas.js","esm2015":"esm2015/dendrityc-ngx-smart-canvas.js","fesm2015":"fesm2015/dendrityc-ngx-smart-canvas.js","typings":"dendrityc-ngx-smart-canvas.d.ts","sideEffects":false,"description":"","_id":"@dendrityc/ngx-smart-canvas@0.0.7","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-SJucs24dTMsMfSsH1K69HFoYWt8iwQYbJYeRhitKydHTselc9B4Zx1Pt3LCQCi+Rn5aN0DCwm4NI38xqNjnWFg==","shasum":"f77e216ba07eb25c36290d3f65fbba286fca91e8","tarball":"https://registry.npmjs.org/@dendrityc/ngx-smart-canvas/-/ngx-smart-canvas-0.0.7.tgz","fileCount":30,"unpackedSize":235215,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhm7KmCRA9TVsSAnZWagAAsy4P/1+SKXJmPjmO8kn1tm9Q\nfHXyIWsGOqY1359rFssIWquwICQLdEJCh/v8tRNEDeODBuYXg7WpOFljeb71\ncbs+SSZhqD0Y6zLHx1dqwLmsctw1dzEQZqA0dzu6FPrKqKBbRuNtV5Yagvzg\n8EGnXa9RuEzqNE2YzvzQZ0bAWUCildsJK1W8nYn5UdAQgm3TORUABvIrzh9F\nDETrdcBhFKbX7o0aZJIwbgzebq7he5HEp1BHxdqLCFHCZs5Fmc6Ygv8OW8vu\nb1wHYYTLCC1byS2L6dLeYMmooHiTxBshveY+ShnxoCfig+GBUCfKjIA1Csto\n3txZxlyiA0TnCiAyvKrQUV+5/CwgkFobUASBAk99RyXD67dUgeZ7fwNb+8oA\nQFXR5zehxZl6UF2Fv9thuwx3GreKrvXOG9BTNSYQAFnBSMqkNryAcdiYBPwA\nLQfdHpEQGBm22SUdLzj4hgCC0+ZNe4btlO+KRUjm16I4zOKZl/i/Xp1bbYq5\nLB5rsD6dpqOUd7VF6uiyacj8IhooyOy+L/It05H17ZNVsb7mFsN0h/Z3O+fP\ncqqFsYYgU1ZFVf2FQJ7o4Fb/kJl7IHpT7t7rMJoMyrfdsyLelUA/cgmPtk/t\nlubGmGBP18fQHk+5XQJE8NVvM6mzXNT4wq5zLZiFvm7I2QRTJdb2z1xCvyXZ\n3Q+Q\r\n=4HtL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCr5jte0xBDjR8RjuEot6lYabM3N9aIXP2BeBWsxHrpAgIgdNPKk6clzkEaxzHFHN/auTXCZKR+A2MaKl1LszLENRI="}]},"_npmUser":{"name":"danbellard","email":"danbellard@micron.com"},"directories":{},"maintainers":[{"name":"danbellard","email":"danbellard@micron.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-smart-canvas_0.0.7_1637593766765_0.6469249134186348"},"_hasShrinkwrap":false},"0.0.8":{"name":"@dendrityc/ngx-smart-canvas","version":"0.0.8","peerDependencies":{"@angular/common":"^12.2.0","@angular/core":"^12.2.0"},"dependencies":{"tslib":"^2.3.0"},"repository":{"type":"git","directory":"https://github.com/JerpJorp/-dendritic-ngx-smart-canvas"},"homepage":"https://github.com/JerpJorp/-dendritic-ngx-canvas-graph/blob/main/README.md","main":"bundles/dendrityc-ngx-smart-canvas.umd.js","module":"fesm2015/dendrityc-ngx-smart-canvas.js","es2015":"fesm2015/dendrityc-ngx-smart-canvas.js","esm2015":"esm2015/dendrityc-ngx-smart-canvas.js","fesm2015":"fesm2015/dendrityc-ngx-smart-canvas.js","typings":"dendrityc-ngx-smart-canvas.d.ts","sideEffects":false,"description":"","_id":"@dendrityc/ngx-smart-canvas@0.0.8","_nodeVersion":"14.16.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-GBcTld/1Ac98At6Y8MANlXezFYUwC04zYH9twDrJh1L3xZMGZQ8+Xn50ZJwrlzFCz2WwNo58TMfjj0nA1sQ35A==","shasum":"33c14abffb8c66748acef3eda06a4e14a6f8c4e7","tarball":"https://registry.npmjs.org/@dendrityc/ngx-smart-canvas/-/ngx-smart-canvas-0.0.8.tgz","fileCount":28,"unpackedSize":235834,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnBViCRA9TVsSAnZWagAADQcQAJor2shSyVKbiRcKSuR0\nyttIXlDYF8KfVx7JEJMRyRwCOl+xe1nNzRQA8TV4vts8n5nYs05/DoI2jpfM\nkYNBUXUrzTnHuk9KXbAwF1INcZ6Rzkg0x2WMfdGHW3niTYRQ1rReY74TYDx/\ntX4wVadaMO+FgRMPwF0VRN0sow47tBgBd0TvBxU0klns7VOd3Yx43bsFxCqO\n6mA9Ah3NQb+gMECCnIxTnCGRj1VibuVKTQWaL7FEXF+dYkxBh1nWBbF0TAiI\nzMZul/oyrXFAiTalJBzvcya8Hltf1ewlSHV+3574PhZHXWsp/2wCED6JmQna\nU+XfdnCpBkmwD/xTDE1RWbhNXiLxE4seztTj0Zw/Cet0IDOZY6QOPW9/ylPK\nsF1B3hWRnKf0wusR/065iwvoantlktuqYN6MMr2evQ/WgmS3dC1tBAaeHnhq\nDgejOEzGrYGMtsUjNUcuqLu8DDhrhYN529A1VUyzbjFsTHU3Veyy8f4BxREp\nuI6xlts60ZpNnu86aYdYncp3CytYmcXmw9mirFD3V1v+I81eMJk6Tpdb6mtT\nlFVpzm9W0XTcZLUm9XzSvDYHaa7m/owoWsHLCLeKzo5cV5fMb/OTc66YYDFu\nLK8X/7zp7wxRP5mpz+TygyAX+hcGaWC9vO5EChA1Cr93/MjHU+ajYRvVBMno\ne45R\r\n=1Sd1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQChNMwmPpT/1Ax4yXLYYDPxF+yiu1cBduEVhI/ftIYh3gIge5fy0Fgt3/+xcDVk1H7L5p6/7E7LCj8TnqLY3R4XfQ8="}]},"_npmUser":{"name":"danbellard","email":"danbellard@micron.com"},"directories":{},"maintainers":[{"name":"danbellard","email":"danbellard@micron.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ngx-smart-canvas_0.0.8_1637619042251_0.36038003522115525"},"_hasShrinkwrap":false}},"time":{"created":"2021-11-21T20:39:07.245Z","0.0.1":"2021-11-21T20:39:07.688Z","modified":"2022-04-05T03:44:30.968Z","0.0.2":"2021-11-21T22:28:20.960Z","0.0.3":"2021-11-21T22:40:25.683Z","0.0.4":"2021-11-21T22:43:45.123Z","0.0.5":"2021-11-21T23:50:58.418Z","0.0.6":"2021-11-22T03:24:01.628Z","0.0.7":"2021-11-22T15:09:26.957Z","0.0.8":"2021-11-22T22:10:42.393Z"},"maintainers":[{"name":"danbellard","email":"danbellard@micron.com"}],"readme":"# @dendrityc/ngx-smart-canvas\n\n\nI couldn't find any good  canvas related packages for Angular that make it easy to have multiple layers and handle zooming and panning.  \n* zoom/pan handling requires responding to user mouse wheel/drag events, transforming the canvas, and dealiing with the change in coordinate locations\n* canvas layering requires creating multiple canvases that can be individually manipulated and somehow combining them into one canvas for display.\n\nFor layering, I converted concrete.js (https://www.npmjs.com/package/concretejs) to some TypeScript classes.\nFor panning and zooming, I created a library of helper functiions to do the pan/zoom and coordinate translations to original canvas coordinates\nFor both, I created a component (lib-ngx-smart-canvas) that \n* hosts a canvas controlled by concrete.js derived viewport, that is\n* placed inside a div with mouse events for panning/zooming\n\n## Client usage example\n1. Capture viewportReady component output event\n```javascript\n@Output() viewportReady = new EventEmitter<ViewPort>();\n```\n2.  Add one or more layers to the viewport and draw on them using layer.scene.context\n```javascript\nviewportReady(viewPort: ViewPort) {\n  this.boxLayer = viewPort.AddLayer();\n  this.lineLayer = viewPort.AddLayer();\n  this.DrawBoxes(this.boxLayer);\n  this.DrawLines(this.lineLayer);\n  this.boxLayer.parentViewport.render();\n}\n``` \n3. Capture redrawRequest component output event\n```javascript\n@Output() redrawRequest = new EventEmitter<Layer>();\n```\n4. redraw whichever layer\n```javascript\nredrawRequest(layer: Layer) {\n  if (this.boxLayer && this.boxLayer.id === layer.id)   { this.DrawBoxes(this.boxLayer); }\n  if (this.lineLayer && this.lineLayer.id === layer.id) { this.DrawLines(this.lineLayer); }    \n}\n```\n**Note** Redraw requests are required when zooming and panning since the concrete.js mechanism for layering gets an image of each layer's convas and combines them.  Zooming  in makes lines/text pixelated.  This means whatever data you are using to determine your layer drawings needs to be in state for redraw later.\n\n5. Optionally handle mouse events\n```javascript\nclick(event: ILayerAndMouseInfo) {\n  const match = this.find(event.mouseToCanvas);\n  if (match) { console.log = `clicked on ${match.name}`;  }\n}\nmouseOver(event: ILayerAndMouseInfo) {\n  const match = this.find(event.mouseToCanvas);\n  if (match) { console.log = `hovered over ${match.name}`;  }\n}\ndoubleClick(event: ILayerAndMouseInfo) {\n  const match = this.find(event.mouseToCanvas);\n  if (match) { console.log = `double clicked ${match.name}`;  }\n}\n\nfind(x: MouseToCanvas): Rectangle | undefined {\n  //x.canvasXY is the actual coordinates used when drawing, adjusted from the mouse/xy based on current pan/zoom transformations\n  if (x.canvasXY) {\n    const canvasXY = x.canvasXY;\n    return this.rectangles.find(r => r.x < canvasXY.x && canvasXY.x < r.x + r.width && r.y < canvasXY.y && canvasXY.y < r.y + r.height);\n  } else {\n    return undefined;\n}\n```\n\n## other input settings \n```html\n<lib-ngx-smart-canvas \n  [canvasWidth]= \"2000\" \n  [canvasHeight]= \"1000\"\n  [zoomable] = \"true\"\n  [minimumZoom] = \"0.5\"\n  [maximumZoom]= \"2\"\n  [zoomDelta]=\"0.1\"\n  [ctrlZoomMultiplier]= \"1.5\"\n  [altZoomMultiplier]= \"2\">\n</lib-ngx-smart-canvas>\n```\ndefaults:\n```javascript\n  @Input() canvasWidth = 2500;\n  @Input() canvasHeight = 3500;\n  @Input() zoomable = true;    //  true -> wheel zooms in and out. false -> wheel is handled normally (scroll)\n  @Input() minimumZoom = 0.4;\n  @Input() maximumZoom = 5;\n  @Input() zoomDelta = 0.05;\n  @Input() ctrlZoomMultiplier = 2;\n  @Input() altZoomMultiplier = 2;\n\n```\n\n## Doing your own canvas updates\nIf your host component needs to redraw or turn layers on off, here are some examples.\n\n```javascript\ntoggle(layer: Layer) {\n  layer.visible = !layer.visible;\n  layer.parentViewport.render();\n}\ntoggleColor() {\n  this.rectColor = this.rectColor === '#FFDDEE' ? '#EEDDFF' : '#FFDDEE';   \n  this.DrawBoxes(this.boxLayer);\n  this.lineLayer.parentViewport.render();\n}\n```\n### Other things\n\nIf you want to find the nearest line to a mouse event, you can use CanvasHelper.LineHit().  In this example, it will return the closest line  within\n20 px from a point, if any.\n```javascript\nmouseOver(event: ILayerAndMouseInfo) {\n  const lineMatch = CanvasHelper.LineHit(this.lines.map(l => this.toHelperLine(l)), event.mouseToCanvas.canvasXY as IHelperPoint, 20);\n  this.lineMessage = lineMatch ? 'line ' + lineMatch.id : '';\n}\n\ntoHelperLine(rect: Rectangle): HelperLine {\n  return new HelperLine(\n    { x: rect.x, y: rect.y },\n    { x: rect.x + rect.width, y: rect.y + rect.height },\n    rect.name\n  );\n}\n```\n\n### How the concrete.js derived classes work\n### Concrete\n* Top level class initialized with a div where all the majic canvas stuff happens.\n\n### ViewPort\n* Contains and manages all canvas layers\n* Has a child 'scene', which is just a wrapper around a canvas element\n* The scene canvas element is the only real canvas element, dynamically created and appended to container div from Concrete\n* Has 0..n layers, each of which is described below\n\n### Layer \n* has a child 'scene' with a canvas element\n* The scene canvas element is never attached to DOM: you draw on them and the parent ViewPort.render() method draws all layers content to it's real canvas\n\nIn this library, panning and zooming apply to each layer's canvas instead of the parent canvas, which is the reason for the requestRedraw output event.  It is \npossible to do panning/zooming on the real canvas element, but zooming and redrawing a layer causes the results to be pixelated, especially text, since \nthe child canvas images aren't vectors\n\n\n### publishing\n```\nng build @dendrityc/ngx-smart-canvas\ncd dist/dendrityc/ngx-smart-canvas/\nnpm publish\ncd ../../..\n\n```","readmeFilename":"README.md","homepage":"https://github.com/JerpJorp/-dendritic-ngx-canvas-graph/blob/main/README.md","repository":{"type":"git","directory":"https://github.com/JerpJorp/-dendritic-ngx-smart-canvas"}}