{"_id":"@chasemoskal/magical","_rev":"17-fb135567445467f4c95fdd0ad63635b6","name":"@chasemoskal/magical","dist-tags":{"latest":"0.1.9"},"versions":{"0.0.0-dev.0":{"name":"@chasemoskal/magical","description":"magical lit element virtual components and more","version":"0.0.0-dev.0","license":"MIT","type":"module","author":{"name":"Chase Moskal","email":"chasemoskal@gmail.com"},"main":"x/magical.js","scripts":{"build":"run-s clean && run-p compile importly","clean":"rimraf x && mkdirp x","compile":"tsc","importly":"importly < package-lock.json > x/importmap.json","watch":"tsc -w","start":"http-server","test":"cynic node x/tests.test.js"},"keywords":["components","lit","virtual","hooks"],"dependencies":{"es-module-shims":"^1.5.5","lit":"^2.2.4"},"devDependencies":{"cynic":"0.1.0-dev.16","http-server":"^14.1.0","importly":"^0.2.0","mkdirp":"^1.0.4","npm-run-all":"^4.1.5","rimraf":"^3.0.2","typescript":"^4.7.2"},"types":"./x/magical.d.ts","gitHead":"522570a810cc35531482bf8df80c64977079e8c1","_id":"@chasemoskal/magical@0.0.0-dev.0","_nodeVersion":"17.9.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-8H8purNFi2E5BrTxgjMxNaE1LB1nywQwieIwZxWT5v7LfPjg/KKbcsej2LYTnlEPlEeH3p3feYunbb+iSDjzAw==","shasum":"07b4e9aa98a8910201e08296e2f9beb3ae69f4ae","tarball":"https://registry.npmjs.org/@chasemoskal/magical/-/magical-0.0.0-dev.0.tgz","fileCount":96,"unpackedSize":47841,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICJ4f59K48BGweBe2XE4slOVsgyJmRWWKKFB+Qkbb3QtAiEAnlB7Dt91s9UjxD3yiZhH5MJNCpxAPiQ8PuAXFrsRNaE="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJin623ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp8mg//QI53yUpvwInYhivkmEumBBtobMZsuX8hS6BG4cdmdEj1ljOe\r\nPbODJ80s5EPXwLlsbEcuFCkPbfsECBrqCC00L/o26N9ndgaqQZolaUjh1d5f\r\nd/lcFknFNtEgtX7Y/iSy8r+RX6TV/4+cZP88aO836sDLLynlnCBHIK2wF0Yn\r\nic/Na0Xx/jssNrlwonxiIeJEK1bFgbKJh3jeGikjLTJ8mNCqIaF0n6UYGRaJ\r\nh9o2giCxqVcUJfMd/UfxqNaZZzwy7BgOCfx6HisGRsehiRw1p8XExALVGjgN\r\ncDAwr8aX6q0++7Ez7JMDU00OWh/0obbromJ+U/YunNXYdI2oavfIV+IhnsVp\r\nbDyo6Ue+V5WrwoaLRNniQoP53XV6w3DHCh0D0bW0W7AMsHg5tyVHTwLFHXVf\r\nadYxYqUk0SrmSuHl6Ixu9xciyKUgVJIg0bVsV90k566XfjHuhABISNP7yJiV\r\nRL1VwUtbdKVLz3mL8xGkPUQDZfgSz0kRpDk+3YZWWChzuObpWA+4QnlvsiYz\r\n+/6LUMH3trmRGDk8C+pKgqcvDiwIJ1yVPeNMUiq23KdAqQT5mUUNrgwwwGrB\r\n9SU7ZmwiBO2vx0CTCzjIyVGh2BYyhY0CjJ6cBv1ZmQ7+fAkgFO/ye/G25eVW\r\n2bPT63I6TRe71Kg0HmcrPwlGmvwN2WLV92Y=\r\n=572K\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chasemoskal","email":"chasemoskal@gmail.com"},"directories":{},"maintainers":[{"name":"chasemoskal","email":"chasemoskal@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/magical_0.0.0-dev.0_1654631863691_0.4346575493229017"},"_hasShrinkwrap":false},"0.0.0-dev.1":{"name":"@chasemoskal/magical","description":"web toolkit for lit apps","version":"0.0.0-dev.1","license":"MIT","type":"module","author":{"name":"Chase Moskal","email":"chasemoskal@gmail.com"},"main":"x/magical.js","scripts":{"build":"run-s clean && run-p compile importly","clean":"rimraf x && mkdirp x","compile":"tsc","importly":"importly < package-lock.json > x/importmap.json","watch":"tsc -w","start":"http-server","test":"cynic node x/tests.test.js"},"keywords":["views","lit","virtual","hooks"],"dependencies":{"es-module-shims":"^1.5.5"},"peerDependencies":{"lit":"^2.2.4"},"devDependencies":{"cynic":"0.1.0-dev.16","http-server":"^14.1.0","importly":"^0.2.0","mkdirp":"^1.0.4","npm-run-all":"^4.1.5","rimraf":"^3.0.2","typescript":"^4.7.2"},"types":"./x/magical.d.ts","gitHead":"f494a3c19eb8b9ab8cd749e43165877373b8a86c","_id":"@chasemoskal/magical@0.0.0-dev.1","_nodeVersion":"17.9.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-AfthePQZteJQ/ROD5RUsU+2VqHn3shW0MnhdUu7MZNsG0N4YrEvN61gypg6ZAGOIze+IqrhgoRY/BI79T2hI9Q==","shasum":"ca2f9d7ffd351365838f5f494f2794080bc79ed4","tarball":"https://registry.npmjs.org/@chasemoskal/magical/-/magical-0.0.0-dev.1.tgz","fileCount":168,"unpackedSize":125663,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCdpS0BN7PCQ6gWQVYmyt5NX7lZVUpRTDmSIiv3Kt3D6QIgYHMHdp0BxYEXpYpiYc5LF99rne45obKxaPqVtbM6+lY="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJip3iFACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpVRg//TrRbRdfVYK7UBN81PBALl7aICo/TzPz+vY+AFobTao/+lxy2\r\n4i3u8qeuHf4NzhZUpaQj+wmVkQ+K8OZfzZDUumayIOhroWSid7iy6/lHf4f5\r\n6CSbYNZ/n61H3awOPpNcEEub/23rq9yEe5woXzIq7hRg+u7hTs+LPhDQPmfD\r\nJ15JDj9uGxR0zpCR+8jPsCu/B1HwF9Vdisomo3j3A/BQ2YMURHFKE4cq+4Aq\r\nwurTvX7Cz2O0HWu4PPlFc9iZMOWpyKbqttgRT0za1AzpEh87H+EOakoo/Vom\r\noTojIN+xNp4n0TnJdI9RB3XyFSNJKa25SbgdQVop6FoDw7uMvKSrqCNyNJ93\r\nhyQDIkcWrFH0ZkC9a9LLjeNBeR3Ce29d3Hx5mNhK/nFGNXVNsHEd0E8J99OH\r\nohlNyRJ1GOUA5uJK98gtNCSPxXZQ0FZL6yeS9H7Dxo5IyyRFaf4R1k70c6o6\r\nkm/Ccvpg5zXF1igAIz3y9Ry88CLy9aPu9DxR8fyf1lz3cuaXOOnaW73GjM8u\r\nKMcl4xlEFMvrpD7DixJuKpO0fL2KLrcf3TuAGxG3TNPV3kebHmLTCdr9m8/r\r\nmIO1hVgyTymYgs7xv7HeSuxEPUT4JdCYod13pLga4bm4b/wwOyx0Plp1WO4F\r\n3KTSxjRzzEUNLXOh6vI217xIcYDUXskGD7g=\r\n=RCsw\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chasemoskal","email":"chasemoskal@gmail.com"},"directories":{},"maintainers":[{"name":"chasemoskal","email":"chasemoskal@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/magical_0.0.0-dev.1_1655142533693_0.3205286569550867"},"_hasShrinkwrap":false},"0.0.0":{"name":"@chasemoskal/magical","description":"web toolkit for lit apps","version":"0.0.0","license":"MIT","type":"module","author":{"name":"Chase Moskal","email":"chasemoskal@gmail.com"},"main":"x/magical.js","scripts":{"build":"run-s clean && run-p compile importly","clean":"rimraf x && mkdirp x","compile":"tsc","importly":"importly < package-lock.json > x/importmap.json","watch":"tsc -w","start":"http-server","test":"cynic node x/tests.test.js"},"keywords":["views","lit","virtual","hooks"],"dependencies":{"es-module-shims":"^1.6.1"},"peerDependencies":{"lit":"^2.4.0"},"devDependencies":{"cynic":"0.1.0-dev.16","http-server":"^14.1.0","importly":"^0.2.0","mkdirp":"^1.0.4","npm-run-all":"^4.1.5","rimraf":"^3.0.2","typescript":"^4.8.4"},"types":"./x/magical.d.ts","gitHead":"fc66b8c619594d3ecca02cc0326a269f68697d87","_id":"@chasemoskal/magical@0.0.0","_nodeVersion":"17.9.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-QxmROvNaRIWEkkoKENYMeCCGyhvhWvM5pbo1uqa25XoekjmuameSutwSyf+hvAMxUea8f5l0oXt87O16+Ldovg==","shasum":"6c8c6d35969f93c5d0989f228643f353ca82e880","tarball":"https://registry.npmjs.org/@chasemoskal/magical/-/magical-0.0.0.tgz","fileCount":168,"unpackedSize":125656,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCve556ju1oYumo0ovqJxXL04jQ77iTFL+8rEFGXxEnoAIgXz+CDuTAch9VG+HWGVPuAJKkMo/MhurK12H5sva9278="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjSSrnACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrk2A//WP7J0ZQ1kmhu3rYYjnNxR25DBePKB/9XaKEq7UnpjBM7Yi96\r\neBB4pRo4TYtqN86p+jrLnIljyjMu2hCwMPCzvVw4kJ1SCtzvQ49rniWd3jgX\r\nuO9aNudiK9IUzJmvlHPxa2nI4Kbd0IKPvDu146dgg6zHdB0lJK9RTA+m8IVe\r\nCyY6y3NyddFRLQb45WKGX6AQQxJItOi7fihjOM8T6skjL8SSeXKfH8MUK62i\r\nUdPv44rJvefa9rLHL+W9oKFZs6mlPLRgraachvp1yRdKB2OV2JGQAV3U4WV6\r\nr7EuxWa5CSe23nH11y6PK6h+zsRI5bHr30SS2qTRqrPRdkq4xfKdEyigPvWu\r\ne9hgWQYf8rXWbbDsJWa7AnK5R4EjbLQADijShQTsJPsB5LvWwFzBXhZW1BvF\r\nUgITRk5rSfvraQBieihRmQy4Xlvex+3pgIc2/ZQNH9ervBhPcav+2KKL8Sy7\r\nwTwihTSbftR7bQ8jM7FxeORY+0RI7ggf0Top7NWHSORgy1okDpzbGTTzDuBk\r\nowgFBdfLfR/2nwdDb39oAF0FDk4KrAplbQOmxa5IUmrSQ3UKBvFx1KnWh/WP\r\n/665WzPnL4AUMJV9WF0RiMfcD0p3bz42OtNGYtOzVMeaKH1gwIjrya4Ub2oi\r\n8Lhg/iVdGjvVpVhvV/csCTAuRiPyVJQHQUI=\r\n=5H/c\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chasemoskal","email":"chasemoskal@gmail.com"},"directories":{},"maintainers":[{"name":"chasemoskal","email":"chasemoskal@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/magical_0.0.0_1665739495732_0.9075532298005495"},"_hasShrinkwrap":false},"0.0.1":{"name":"@chasemoskal/magical","description":"web toolkit for lit apps","version":"0.0.1","license":"MIT","type":"module","author":{"name":"Chase Moskal","email":"chasemoskal@gmail.com"},"main":"x/magical.js","scripts":{"build":"run-s clean && run-p compile importly","clean":"rimraf x && mkdirp x","compile":"tsc","importly":"importly < package-lock.json > x/importmap.json","watch":"tsc -w","start":"http-server","test":"cynic node x/tests.test.js"},"keywords":["views","lit","virtual","hooks"],"dependencies":{"es-module-shims":"^1.6.2"},"peerDependencies":{"lit":"^2.4.0"},"devDependencies":{"cynic":"0.1.0-dev.16","http-server":"^14.1.0","importly":"^0.2.0","mkdirp":"^1.0.4","npm-run-all":"^4.1.5","rimraf":"^3.0.2","typescript":"^4.8.4"},"types":"./x/magical.d.ts","gitHead":"6b4e9e1c6b0026f6c373ab227a2de86344e98e9d","_id":"@chasemoskal/magical@0.0.1","_nodeVersion":"17.9.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-GGUDN3VkmmRw96z3LgMDj17wW/ZkpbUwmWzxGmbZzBrIke9fQY1bVBL+FBDgyqld14yYy9BWr9jdjfD36N2B1Q==","shasum":"da613eb35e472f20f0ab52e401e16019556380fe","tarball":"https://registry.npmjs.org/@chasemoskal/magical/-/magical-0.0.1.tgz","fileCount":188,"unpackedSize":151239,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICWj+wHEWWQKFI/X9/np6t9B+p/EbYqKPmJ1NU64uNtuAiEA3TvbZyl+4It2RSzQc1or95FiX8oNEGMY195uRKklzuk="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjXaZnACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo0zw/9HfHmmVpoeAPqr9BiB1bMqlc7SI3EZdn/AMt2T9YmF9l/KcsR\r\nsZutRwDl9Vou+xF2gLRBjOIAcGfM4JW3rba9kwOY155WZ1v19e7sDCWe4mky\r\n0inqQJGnnnNTxARUukscdeQUIbNBpcnpn4EKeGWpBaLH7FCC09+lSw0ooYIg\r\nTJJN71HC6g9vgf0ZiTlcnf8glIH/P3ZCXA8E32K3jnmbgeXJbyxgx+0KG0dr\r\neKDjZw26pOcNCKYNdXGjvZK8Gm/Awb+cVy5rhVeIKnWGkRDcQtMthQrIn8Kk\r\nCE+pmliK6+iOdHJ57OInAAsjcHcF4pTM3TsqSkumEjMrI5NnyVUdWuqUV/Q7\r\n4e5igR2bLY9ebMz9fTzfFd55N9yoscTyVfKBIKwUtcppztlRZa/2xvJ90WIN\r\n205YBMqNbcc3QF6lT9L5nAACZMIppJF265SX02vo+GfVPSJUmKAQiZcsxGj3\r\nXsYgcoQ+Y8Woi54bnJgAhiiIFzw15S0W6ukjKHMhGNgVZo7S4O43Vz0ZZdUf\r\nGG+uyEj6DHkP8V9yThIq43p13B1Q7szMWx7pdBD6icJn0xDbQ0NIOdzzdjEg\r\ny6msKnlCawZYYeNmXtucCDMr/Fz38AXpQpxDqVQ93rZCEVRkOHAOsrHD03vK\r\nPSGsG4aMWUQNYITcVVSb6sA3DOG566y81gA=\r\n=7Qtz\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chasemoskal","email":"chasemoskal@gmail.com"},"directories":{},"maintainers":[{"name":"chasemoskal","email":"chasemoskal@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/magical_0.0.1_1667081831777_0.7304593909142794"},"_hasShrinkwrap":false},"0.0.2":{"name":"@chasemoskal/magical","description":"web toolkit for lit apps","version":"0.0.2","license":"MIT","type":"module","author":{"name":"Chase Moskal","email":"chasemoskal@gmail.com"},"main":"x/magical.js","scripts":{"build":"run-s clean && run-p compile importly","clean":"rimraf x && mkdirp x","compile":"tsc","importly":"importly < package-lock.json > x/importmap.json","watch":"tsc -w","start":"http-server","test":"cynic node x/tests.test.js"},"keywords":["views","lit","virtual","hooks"],"dependencies":{"es-module-shims":"^1.6.2"},"peerDependencies":{"lit":"^2.4.1"},"devDependencies":{"cynic":"0.1.0-dev.16","http-server":"^14.1.0","importly":"^0.2.0","mkdirp":"^1.0.4","npm-run-all":"^4.1.5","rimraf":"^3.0.2","typescript":"^4.8.4"},"types":"./x/magical.d.ts","gitHead":"9e5fe8a5fc78f5e90160c746f398af21306a2309","_id":"@chasemoskal/magical@0.0.2","_nodeVersion":"17.9.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-9PBeynkZGNjdZTlVYnxQMFEw7Bcq0giCMNxsCMDHsS1STagarSMv8SYXYO+VN68nkq+pXCVugrI7BcE8x1JXeg==","shasum":"a7eda6294834326efc1d606c7f43100340ff6c91","tarball":"https://registry.npmjs.org/@chasemoskal/magical/-/magical-0.0.2.tgz","fileCount":188,"unpackedSize":151474,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFIzViuPxXJo02c3cq/C3aQRxoNBiT+roeq7NIVKD1oXAiANNf6U36uo26xaCiE6ZJ/t+3z2Ey/BHhfSDcx/RLuZGQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjcrxhACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpRqw/9GtdOLf8kP2GUQzhl6IERsXC+I/nszl7+RzVbCpwWHwLXbLx3\r\n71f/b00DzPy21Efp8qmXqrV5qyP/Ywmn5qjicT3QVY6/l5xP4PRBzDOUsFV2\r\n9nMfpqBY/veo4gj0b85jevBo1DCnhMutj2WBHBY4TS7xqOqd2cwrkagastG3\r\n5NAy12oSFd/b4BMYErRIpI0PCNoqIgski5dtDABlFgpiD+luuUe4sOXroeKX\r\nfXUb+lI6j0HNUpcYWYxGFH5DkuezWNPYwPgYsqci3TtXIqLM6pTDIix/oiUQ\r\nvtMu8Buo2GbbhebfO51V887Fjz+Fr256NCpSjy3DeXngRKD8MygOkGLY+HJW\r\nx8OT3Z8kydx9oRwhgUsX8JXqOj0TOKDrpyIGtJzRYH12ySr2LJRg3N4/aiY+\r\nv5+sPPpD0vhgs0Dw2sTAUPIEon69VlAUEPCUrlbXnWXM3250n72B7wYgJvUz\r\n/BKzzYr+s0FB64FkBdiTgK+FXdt2dCuEsJJ7c1b69SJDiU/3G7nW+Gkn1yBy\r\nqpzCNvkH8MV1QSvtp09te9qLmPECiqBZ4eSld4qKAKjfqZTe190Hcb66yiT8\r\nnhyl4bNRB26Oc6Uty3HGop8RbXmn6t8OsJMo8d8jFGCB7qq3oT/exUIdmGS7\r\ns3dlT/qwXjIDj79LTkO4voL3PLzB+2lZzbo=\r\n=4pTc\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chasemoskal","email":"chasemoskal@gmail.com"},"directories":{},"maintainers":[{"name":"chasemoskal","email":"chasemoskal@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/magical_0.0.2_1668463713032_0.7223719333232173"},"_hasShrinkwrap":false},"0.0.3":{"name":"@chasemoskal/magical","description":"web toolkit for lit apps","version":"0.0.3","license":"MIT","type":"module","author":{"name":"Chase Moskal","email":"chasemoskal@gmail.com"},"main":"x/magical.js","scripts":{"build":"run-s clean && run-p compile importly","clean":"rimraf x && mkdirp x","compile":"tsc","importly":"importly < package-lock.json > x/importmap.json","watch":"tsc -w","start":"http-server","test":"cynic node x/tests.test.js"},"keywords":["views","lit","virtual","hooks"],"dependencies":{"es-module-shims":"^1.6.2"},"peerDependencies":{"lit":"^2.4.1"},"devDependencies":{"cynic":"0.1.0-dev.16","http-server":"^14.1.0","importly":"^0.2.0","mkdirp":"^1.0.4","npm-run-all":"^4.1.5","rimraf":"^3.0.2","typescript":"^4.9.3"},"types":"./x/magical.d.ts","gitHead":"ff4ea83e6c4a8b420f332d7921d3bb22dd98719c","_id":"@chasemoskal/magical@0.0.3","_nodeVersion":"17.9.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-spGIh2YmjHjmdTtS/2ljl9FwLxryQrHI08b9YPSrRybWQDCZrpJP3/TnN+ls+O59oLucwVP23buuxHWMdNGQ7Q==","shasum":"efb93aa181ad1bdc93292014ced388e2eed471b5","tarball":"https://registry.npmjs.org/@chasemoskal/magical/-/magical-0.0.3.tgz","fileCount":188,"unpackedSize":152887,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBl1gSui9VZcoCiM1PociJ5bOfYZE2nBr4qybuz61aTkAiAUFIE3QLwlgVrMxllnHGHUpeyQzWt1xMHfzpWGO5GRxg=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjdB39ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp6pg/9H+6zEDPItkA19z96eWSmA/CZ0tPVCodftGDe71rLi4S5d75q\r\nrtSTG35DwmOtwGy/bo8S1i5GU+jNQo/Wdf7dNpniX7aWii89ZVbcLH25nZck\r\nXyVJZzoiyLfDT7fHDTLgNS6a7q7IyyU/YUsYcfw9oCKsYvpXh0D22dueiXfd\r\nlmPzXtgPjq4V/pZaC2c/nJqwfHOxW31FL8toweOqvC3Ufytsqx7r0GLmn1lj\r\nY2Lb8z2dHE840CZClI1HvBmcAYLV/SxlHdD+ejk5EWn+XWdFJ/Xy7Pl/cCja\r\n+G7lRbi0ITgsLN26QhCNMk5iTN+4kVbemEmt2t73YfvWPCSZemY8qIBgJgMN\r\nU3nwGS5Jnb8ddwrpJBZZWMd9UhoV32v0S9MclFCvclT9mTsTH6o1SBME+x4m\r\n6QaWFrforrAgzJF2kwNXyN4e0/ZxiLhxJ+4OtOcniN/wgZE1Boui0ufqva5x\r\nxO4Mm7KZauQYlaGHX6Mkkw+MuDNMJA2U3GkGICPzECyfVNn6h8KU+7y8rd2u\r\neG27vYXv2adYg2uWk9rfiiQkgjn49qPU12Ls71nVnHyzEg/DOnygxPOqLEjA\r\ntbIa2MLJBMTha/iGEEbJAEGZg9xvTB7LLlaTrNYDuWnNvZlY5MztzSsgihbU\r\nztY+B1ZaNd13dDFPuXNj88nK5frRvhTRQKk=\r\n=CuzL\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chasemoskal","email":"chasemoskal@gmail.com"},"directories":{},"maintainers":[{"name":"chasemoskal","email":"chasemoskal@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/magical_0.0.3_1668554237065_0.35395375303605814"},"_hasShrinkwrap":false},"0.0.4":{"name":"@chasemoskal/magical","description":"web toolkit for lit apps","version":"0.0.4","license":"MIT","type":"module","author":{"name":"Chase Moskal","email":"chasemoskal@gmail.com"},"main":"x/magical.js","scripts":{"build":"run-s clean && run-p compile importly","clean":"rimraf x && mkdirp x","compile":"tsc","importly":"importly < package-lock.json > x/importmap.json","watch":"tsc -w","start":"http-server","test":"cynic node x/tests.test.js"},"keywords":["views","lit","virtual","hooks"],"dependencies":{"es-module-shims":"^1.6.2"},"peerDependencies":{"lit":"^2.4.1"},"devDependencies":{"cynic":"0.1.0-dev.16","http-server":"^14.1.0","importly":"^0.2.0","mkdirp":"^1.0.4","npm-run-all":"^4.1.5","rimraf":"^3.0.2","typescript":"^4.9.3"},"types":"./x/magical.d.ts","gitHead":"c8f011d197d87241c928dd06138712b6ed3c1077","_id":"@chasemoskal/magical@0.0.4","_nodeVersion":"17.9.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-51Acijt0xOw3PS2qC6nMQpx+FwcgJNRNl0seOHj+0zaImv1wduGpTQkoZICmf6zRn2aK6b0K5jIPPNtAIh2GNA==","shasum":"37010b245ee597fdaac400d18b6e70add2fecb51","tarball":"https://registry.npmjs.org/@chasemoskal/magical/-/magical-0.0.4.tgz","fileCount":192,"unpackedSize":154178,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC2ttuf/XSYBhmoVZoRnT1dX7O/bG1nyp62nWMSnzLFvAiBZ7o5+7dnDbQ0N0ADcaqfAw5UcE2TYfhVsPEah2S2fEQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjdX5OACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoHBQ/9FPABUAg83Ftfp5A/CpZj12aWGtMoJhhTMsjwSBZIrFQKGt5B\r\nOEvIxWDWyEbllaAQMSYaPPrOssOlgaNKW5NuUEG8JtaTVhaY16fOAqdGry/s\r\nT7SJHOxv5aqGWYq7AajOVg0gh70WQQy/jV6frJI/Sd4HtWlRJZFppIkzoPuS\r\nfQTRe656GCv56bzJMz8vQtioAV1ll36bp+7bxwC/ndcSil3C7CPEszEdGpXt\r\nT1hUGnvPmfwFhzDjwQmaU7b9ukKJiBu2uh9NvvhVbbobZm7jMz7k7oO6zFCX\r\n1/utZE4L9ePPshJDrGhHVMLEmxcjjOMg5W42YBLZcux6izKFfcAu4Jo21k4Q\r\narwe9s0a6I3qdPPgXyZ0uu2f9iVpoBoO5sKG/AAWhBIgxSXCSHDMnuBtaSZR\r\n66GZ5tbbam+YeXBXaqu5wkcsKD4huqPW5iJn4McNNsL5ys1X1PdiQRQdS3r5\r\npVUNE9Lp/iHOMPSX6Wi5UaCR++0c5SDCuOzZknaXklNnw0Th7ph7T9gHAa4V\r\nGUNWdMZSPbJIzOdEudLR9co5QgqGI/Waq4QEBNm0czLdcmfTJGkZLngKCdrd\r\nW7WIlLBD+SESfX93xSxXbKvoe7Aeey65ROc3DNamaXPVGlBSgnall0nSh2pE\r\nCW1dR9Wjjy/5r6soZErPcI4VjboL4C7N1eU=\r\n=srr/\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chasemoskal","email":"chasemoskal@gmail.com"},"directories":{},"maintainers":[{"name":"chasemoskal","email":"chasemoskal@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/magical_0.0.4_1668644430078_0.6201065641733341"},"_hasShrinkwrap":false},"0.0.5":{"name":"@chasemoskal/magical","description":"web toolkit for lit apps","version":"0.0.5","license":"MIT","type":"module","author":{"name":"Chase Moskal","email":"chasemoskal@gmail.com"},"main":"x/magical.js","scripts":{"build":"run-s clean && run-p compile importly","clean":"rimraf x && mkdirp x","compile":"tsc","importly":"importly < package-lock.json > x/importmap.json","watch":"tsc -w","start":"http-server","test":"cynic node x/tests.test.js"},"keywords":["views","lit","virtual","hooks"],"dependencies":{"es-module-shims":"^1.6.2"},"peerDependencies":{"lit":"^2.4.1"},"devDependencies":{"cynic":"0.1.0-dev.16","http-server":"^14.1.0","importly":"^0.2.0","mkdirp":"^1.0.4","npm-run-all":"^4.1.5","rimraf":"^3.0.2","typescript":"^4.9.3"},"types":"./x/magical.d.ts","gitHead":"31a03fb3904da112418daaf37a4c1c5f3563bb62","_id":"@chasemoskal/magical@0.0.5","_nodeVersion":"17.9.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-78naKVYVbbbZbeVPLEGK+DO7gHTl8kNu3A+vvneRuVVGK5pVpfvcWtHGVdXuu/Zj2+0oSuN4RPbhGRVqD3QUHA==","shasum":"27d564d16c832f93482e6c43907ce5e75c692a6f","tarball":"https://registry.npmjs.org/@chasemoskal/magical/-/magical-0.0.5.tgz","fileCount":192,"unpackedSize":154992,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC1IYWw2WKU5PL9Ib3jHxbXv7rM7wMiZ2pA/YO0C+28ZAIgPR331bQuth4OQ2g6/Q1cxQKLvl3Pp1v8dMbOESoDAzE="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjhdK6ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoYnQ/9H6Dfoomk5yYNlN5hTeDTTxFmw4attdHpqu3qswcVBWBHLu8e\r\nQJBBvVShDmEXKcGshNJN0svW3OiKIMl9UHJkTVqdFoPbFgdzDkGiAUR6iqWU\r\nEj3pNBa6OfGg4eHvbIxm78Ozd2/izTqDWjqe3LlXx4gKJUelZmGacw7QXrjz\r\nWGhiPrMpee/S+l+f9YgMLN6T3MCLy2BXS/p9UgmjwApxRu1871woawncmYAE\r\nDaxSElwtJd3UCD55jb07LDW0eTz0xk8KvPWau50DEA2+/KCOW4X+C1S7eC0z\r\nlk0ITXU5Tk6XqtRbq1hPUA7qINVtrvgmcCKJVN6W+56twhvXTILHQnj1DvXN\r\nWcZ7aJwSOWGtukZ81L4/HRtNunmvxRsG7CU9c7qeu2q8julZ8TaMf2NGEgEY\r\npRtZvapstGlbU0TQujwScf8KUIeOxuoaSUHc25kHsR+gb84XSocKIMkbgh+B\r\noV6uoQmha+VgjbhyQJRTTUaUkXdb3uCdi8R8IaAWIIOTKGqJ/AP5Ffur6lyw\r\nf8joL7efq9B+Kz4KxvbzrYkArt2eNPuKCiORYkbmfj6QLL9jYmGsG0L1xjDx\r\nLPEdelA/MLjn/Ll9a4oJEDp7Fc8sp1GhaQwqa3xv8BP2wFyrc39hiIpIg67F\r\nsYHyh+a7+uCV/yXvjHzRMVWGHBVXx9A1T2g=\r\n=EUvm\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chasemoskal","email":"chasemoskal@gmail.com"},"directories":{},"maintainers":[{"name":"chasemoskal","email":"chasemoskal@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/magical_0.0.5_1669714618567_0.05803199985668872"},"_hasShrinkwrap":false},"0.1.0":{"name":"@chasemoskal/magical","description":"web toolkit for lit apps","version":"0.1.0","license":"MIT","type":"module","author":{"name":"Chase Moskal","email":"chasemoskal@gmail.com"},"main":"x/magical.js","scripts":{"build":"run-s clean && run-p compile importly","clean":"rimraf x && mkdirp x","compile":"tsc","importly":"importly < package-lock.json > x/importmap.json","watch":"tsc -w","start":"http-server","dev":"run-p start watch","test":"cynic node x/tests.test.js"},"keywords":["views","lit","virtual","hooks"],"dependencies":{"es-module-shims":"^1.6.2"},"peerDependencies":{"lit":"^2.5.0"},"devDependencies":{"cynic":"0.1.0-dev.16","http-server":"^14.1.0","importly":"^0.2.0","mkdirp":"^1.0.4","npm-run-all":"^4.1.5","rimraf":"^3.0.2","typescript":"^4.9.4"},"types":"./x/magical.d.ts","gitHead":"c47d391c022645fc331f3b21fe701d6eabdb967a","_id":"@chasemoskal/magical@0.1.0","_nodeVersion":"17.9.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-BN0DcQ+YrCPN3VCXkFAyOCGJ9SmXHuKYHM1By+CZjrKFV67buz5QT6/nXd5zqfzfucKQARwrZJDDh5ldWGpKtQ==","shasum":"1b8a9f469f10845098d6da923bd88603bdd5077c","tarball":"https://registry.npmjs.org/@chasemoskal/magical/-/magical-0.1.0.tgz","fileCount":224,"unpackedSize":172758,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIQDJY2jMkv1ZkFDm6J81DMnRI5fhMOvZRFVx4F+0wEqgEwIfPIdjW396GPfGlLFetnMUN4jHAIGRAOeFAqarwd62HQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjl7LQACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr/gg//cGAnGeuj5ezlFGOA6YwmlohzsXdNTpGmVIzV4xyJ/qfUMCuf\r\nO9Yl8m7MTgKf+zDKvUaMQe/LLamhCgQCj4rTpJV1C6NbIy3C0fBzrXGKN3Xh\r\nqMAjgYDlllyXU4JbDTe/E2H5awPptHrzhRmvqx/qgo3FQhQl0bR8fXEuh5rp\r\nsgEHylcA6H/qBg6M1Rdv71E8Tl1by8ICq7ltdJTsT5dsm1/SPODKcOiwhgwx\r\nwybvjIxQ5QAeXzENV5zeXWmOWizPVjDIVdHfeVRv9hspeaEFNXtvCHIkHJ9T\r\nzoF8o4+uSo8wiSyjAbBKFWVzgYaeP8J5rr8KK7+dtdO/W+/ddrZf0ff0+L93\r\ngCYdSLwtk+t0Fwn54sPZGH6jgd0snGqv+oXBAVAZ4KGpa1MdN98WI0sFWELz\r\nolhuov3J5ClBCj5nb+4vAZrshkXI2hLaX1Hi+o8YIBPKzIhdJ+F5Qo9fUI4s\r\nLEuk5Mc1quOBhySK4kdg8aZUc2NxOV3AApZ9uQf0HvWt2/X13CfwB19JCVl5\r\n+6ccZm8EaXvARAQHSVDKRSv2FhBLkouVR4nl6s3g39+Ux7CTfCgWJNsZmFxb\r\nworL7VzwJ2QGOGeY88Qed6eovvCyTHA7G8LecurUB8gVIXLgH3Mn849OiQbR\r\nbQuzq80P0JxiI5moo3sr/llEqCPay95Y/s4=\r\n=gRaR\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chasemoskal","email":"chasemoskal@gmail.com"},"directories":{},"maintainers":[{"name":"chasemoskal","email":"chasemoskal@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/magical_0.1.0_1670886096685_0.7122652086153201"},"_hasShrinkwrap":false},"0.1.1":{"name":"@chasemoskal/magical","description":"web toolkit for lit apps","version":"0.1.1","license":"MIT","type":"module","author":{"name":"Chase Moskal","email":"chasemoskal@gmail.com"},"main":"x/magical.js","scripts":{"build":"run-s clean && run-p compile importly","clean":"rimraf x && mkdirp x","compile":"tsc","importly":"importly < package-lock.json > x/importmap.json","watch":"tsc -w","start":"http-server","dev":"run-p start watch","test":"cynic node x/tests.test.js"},"keywords":["views","lit","virtual","hooks"],"dependencies":{"es-module-shims":"^1.6.2"},"peerDependencies":{"lit":"^2.5.0"},"devDependencies":{"cynic":"0.1.0-dev.16","http-server":"^14.1.0","importly":"^0.2.0","mkdirp":"^1.0.4","npm-run-all":"^4.1.5","rimraf":"^3.0.2","typescript":"^4.9.4"},"types":"./x/magical.d.ts","gitHead":"c0731dee4ed504c46e35aaa22bc3438dc84d6faf","_id":"@chasemoskal/magical@0.1.1","_nodeVersion":"17.9.1","_npmVersion":"8.11.0","dist":{"integrity":"sha512-7apSd/K7qrJye4zIGWRJVXX5My2Erb/FwVnzYfPcSCVpiO6hfeSJJ2d10AFBQfK21TZCHdiFktEbfgeAZ4L76w==","shasum":"264b2f62f7369cb57a5cb29627bd9fb51bf52dc0","tarball":"https://registry.npmjs.org/@chasemoskal/magical/-/magical-0.1.1.tgz","fileCount":228,"unpackedSize":175477,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE89zkKK5LQllsgKMZi+3PzaC6ytXmZfjGS/y+KRfyC5AiEAuGwsUom3Q60M44QBuYQq7EZEU7vLABJJAJtvXeGvsmQ="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjmQSvACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmocAQ//cPSj5qR/uVdcA8KIlTdz45Y149YZMb5tmjsyc41d+zRz69dy\r\nLE3VCYH/JSpUBUpaLasFpP/nsnAzrL2R5k5d/A6ztdkx2ERY7xy9BBA1L99q\r\njeMzSR/2N44XrKp3CdB+aAGL0TOhryeZFVNpZJiCW9rbG/68eypRLkKf1OK+\r\nLEwZxXFOr41eSvyoxNs6CQ5/ElOzdraamA5fGoUMFXrDdZKJSRHAX6ghKEmg\r\nbG3uTQRbkmoQHne41cM1rZtjHqRyWHr6PCHqoJyTijLOaqG/df9A4FJUu+Om\r\nKUTnq37q8z7uhywpn6cVcZQmTL8JNadv8VtNEa0kj0jGEjaoHV8wHVuKRSrm\r\nDUXNn3qlH/Tp9Ia2ea3VN4Ed/oF1cXasn0b8kHDuUAPT0wkH7K+oYrNSFfRd\r\nNHqicLpcloCUBvnZVeVeiuW174k5MiV3lnfCMdXawx36moDo3iz2/UuXBREs\r\nUGwpujyHbdNyr76vAKnjtSI30WUxttmwkg8aH9lsZAioWZgJAru62tLDozaJ\r\n7z9dRt2BKsCZ3bh/syn1M99z0Y60BTFoe04+nid76oyk33rfSdPeGgRsl4xC\r\n6kGWlWHTx/rS8fF697hqyEBmvqOk+OSipHECOv+zE4nHOQtpC2EtRPKpFy/f\r\nPxbZ6D104ZbSiBJ1i9bTJW1QoYPG1JJ2XNA=\r\n=LIbY\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chasemoskal","email":"chasemoskal@gmail.com"},"directories":{},"maintainers":[{"name":"chasemoskal","email":"chasemoskal@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/magical_0.1.1_1670972590893_0.26169935816392775"},"_hasShrinkwrap":false},"0.1.2":{"name":"@chasemoskal/magical","description":"web toolkit for lit apps","version":"0.1.2","license":"MIT","type":"module","author":{"name":"Chase Moskal","email":"chasemoskal@gmail.com"},"main":"x/magical.js","scripts":{"build":"run-s clean && run-p compile importly","clean":"rimraf x && mkdirp x","compile":"tsc","importly":"importly < package-lock.json > x/importmap.json","watch":"tsc -w","http":"http-server","start":"run-p http watch","test":"cynic node x/tests.test.js"},"keywords":["view","views","events","element","elements","components","web-components","lit","lit-html","css","css-preprocessor","virtual","hooks"],"dependencies":{"es-module-shims":"^1.6.2"},"peerDependencies":{"lit":"^2.5.0"},"devDependencies":{"cynic":"0.1.0-dev.16","http-server":"^14.1.0","importly":"^0.2.0","mkdirp":"^1.0.4","npm-run-all":"^4.1.5","rimraf":"^3.0.2","typescript":"^4.9.4"},"types":"./x/magical.d.ts","gitHead":"391872f90e72798793dcd1622fe7f630e63c54a3","_id":"@chasemoskal/magical@0.1.2","_nodeVersion":"18.12.1","_npmVersion":"8.19.2","dist":{"integrity":"sha512-McFE8TftdctstZYHvKPoC0YfC7EY+Y58WGduok0tsQ5syhG4hUPE6EjieMKj7TTRyj/3I8ifNMXH092TdIDUjQ==","shasum":"fa86b3a92ee383355bc6d61abfeec6b8f394f292","tarball":"https://registry.npmjs.org/@chasemoskal/magical/-/magical-0.1.2.tgz","fileCount":236,"unpackedSize":178186,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDV5OW167oI4l0GqrzK/VZVPrV+GSLPgYYEtYwTCNppsgIhAOQJM1OFSUQmKY6pCwy3dG9k2vV9r2BM4J6eOQlW+qqD"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjmZjLACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpRjw//T6bVaIzrnzHwcSka73nsOleiCw8216nWf5Eq1J0+f8am0e7n\r\nFzJjVc2xcmGp36+14yJ1UeD3iMcu3KCq2C2278mWoNeWZpXWRn+/YgYQDB9J\r\nw2mloITMP0JX3whrYNkXUPSysz20nkawvAKaIGmQbnBTy+RJMod7rRrWo8/5\r\niXDGYzKDfdAHyKMLJjASUWZJjvQmcqkvVEjhIDB9WcLkM/Au4IJc88ChduOP\r\n/rWH2/qaP+/As2YMv06lT8oZCFnsvyIxicVfU9a8Nu4h8wbA5ak80FO3FamD\r\n3ufCURwTmgKQ3fUXi0Qp9zTX5BRfdSguH+9n6apnkwv+lj3Fo5pQbrtGT8/A\r\n6lFHH7G511rg3/hbUT0vSVJC1cKrkyDIbeNTMNoU6rQ0dOuI1+Aw2TpKLmPI\r\nTFYzvPDEz+2bin421yeLeixC0I32MPKbAikWsNljk7BVU4KMFOyXMysDc+/Y\r\nzCKUXg/L7Wbjcw5WC+XMUKsC44Yi92DFgPfkxe1P1J9XZ/STxeHMycD9YPGU\r\nPQ0IvnNt1Cr2g54zI0SnORZZhNVjZClxFmmiQW0o2MUYMsfiD21jieH9aVz6\r\nMCEInDWCpVgQihh7sBhB2re7ODj5Qdo8AtBjeGig41GsFQovk/wJPMqHT+aP\r\ntSr9UcqxXppMEfbCUCGXMFC75bAilz05Ru8=\r\n=mQp4\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chasemoskal","email":"chasemoskal@gmail.com"},"directories":{},"maintainers":[{"name":"chasemoskal","email":"chasemoskal@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/magical_0.1.2_1671010505865_0.8945642736431161"},"_hasShrinkwrap":false},"0.1.3":{"name":"@chasemoskal/magical","description":"web toolkit for lit apps","version":"0.1.3","license":"MIT","type":"module","author":{"name":"Chase Moskal","email":"chasemoskal@gmail.com"},"main":"x/magical.js","scripts":{"build":"run-s clean && run-p compile importly","clean":"rimraf x && mkdirp x","compile":"tsc","importly":"importly < package-lock.json > x/importmap.json","watch":"tsc -w","http":"http-server","start":"run-p http watch","test":"cynic node x/tests.test.js"},"keywords":["view","views","events","element","elements","components","web-components","lit","lit-html","css","css-preprocessor","virtual","hooks"],"dependencies":{"es-module-shims":"^1.6.3"},"peerDependencies":{"lit":"^2.6.1"},"devDependencies":{"cynic":"^0.2.0","http-server":"^14.1.0","importly":"^0.2.0","mkdirp":"^2.1.3","npm-run-all":"^4.1.5","rimraf":"^4.1.2","typescript":"^4.9.5"},"types":"./x/magical.d.ts","gitHead":"93265bfb26beff1ce2dc95a37941f3b6796140a6","_id":"@chasemoskal/magical@0.1.3","_nodeVersion":"18.13.0","_npmVersion":"8.19.3","dist":{"integrity":"sha512-C3w5XQCF70XezBN5bturYmp6d2xTX1VHRpyAa7WveSik0kDmzT6AQ5ourhrSw07CdBYmOITpcUlBU8+pHyb6mA==","shasum":"dea31a51dca34ab5f3dc8d018c856f10f8e950ae","tarball":"https://registry.npmjs.org/@chasemoskal/magical/-/magical-0.1.3.tgz","fileCount":236,"unpackedSize":178737,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCxiPYe+05tez4XzsOCAuUMM1kW9u/Yv/i69gVHvZ9/YAIgC4Bqz3WgMigd0FcVxsbHDhADKKOwRghRbYfRppwZM78="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj3ehzACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqCPBAAmcV6CMsIQu/zizGzuGjPo+fmqQ64qjJUNA63ZWAGHav6yBGm\r\namzAgtKI4mFBm+CcLaK5+f/5Z6UnBf2T8c69qbk1436FX6BnlSoBaOGqB6Y2\r\npRXriMH6mqy7NUbO4C/V/YMs9OgejSY+DPSo5SqX1mR9ZT3uyzteizrhHiHv\r\nehdVdjxoL8cGIIj/cfnginMjkEGkwJrb4bSm0PPEh3xxhx5epxxuwa+sjlBH\r\nit+lfJGNXnNARyihCZJ3yWf/i/05Cop090aBtNIZ1IssQZDs/3PWL46hQZ6J\r\nCyS4+ZDpGZqVHo9NGzOFh4ea9/4kyOJPELtTGVTZo9jOrJtop46m5hfOHucM\r\nY8tqbsxf3D3cQvNcsegwKxAFlXNtYzW60NhNYB2EqfMgXk8gHwuZIKy6YcpZ\r\nEJ8SaWBZG6O4QUAjAMTb8yPdkbyG6tWKYwlUA1eVOfrm1/+748EIEnrn2UfF\r\n777ewp9PSxgbwIxyY4PToImF04jVOF2y5CPdZl+MZcLBzy/O1aCkhSe1Xg/z\r\nGjLEUZA/aZYhkRYy7lqz/YU2/qKprO9CU0ikl+Gi1JMGma4oNWSv+7FMrvuU\r\nRqArvLTTgDqdy/tL/RS/YCV7x6vyH0Zk16VOPZeR2GRaUeJ28lC2dDRpEz8s\r\nHnsP1eReG1Sh009qvw25r2rFPRGl28O3U6o=\r\n=iWls\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"chasemoskal","email":"chasemoskal@gmail.com"},"directories":{},"maintainers":[{"name":"chasemoskal","email":"chasemoskal@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/magical_0.1.3_1675487346900_0.23245413520420466"},"_hasShrinkwrap":false},"0.1.4":{"name":"@chasemoskal/magical","description":"web toolkit for lit apps","version":"0.1.4","license":"MIT","type":"module","author":{"name":"Chase Moskal","email":"chasemoskal@gmail.com"},"main":"x/magical.js","scripts":{"build":"run-s clean && run-p compile importly","clean":"rimraf x && mkdirp x","compile":"tsc","importly":"importly < package-lock.json > x/importmap.json","watch":"tsc -w","http":"http-server","start":"run-p http watch","test":"cynic node x/tests.test.js"},"keywords":["view","views","events","element","elements","components","web-components","lit","lit-html","css","css-preprocessor","virtual","hooks"],"dependencies":{"es-module-shims":"^1.7.3"},"peerDependencies":{"lit":"^2.7.5"},"devDependencies":{"cynic":"^0.2.1","http-server":"^14.1.0","importly":"^0.2.0","mkdirp":"^3.0.1","npm-run-all":"^4.1.5","rimraf":"^5.0.1","typescript":"^5.1.3"},"types":"./x/magical.d.ts","gitHead":"93744d6e6a38419787161cf1781583a99d4ec9ef","_id":"@chasemoskal/magical@0.1.4","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-rDjWJhje1rgSwoOrmhm2RJbEkm21xCA8QulR1tqa/2soQyt0Z8EVLuUyETp44cOE30znwaBgQUOJji9gY7J/iQ==","shasum":"870432b29901b1ba045b02a43e70509fb8e0553f","tarball":"https://registry.npmjs.org/@chasemoskal/magical/-/magical-0.1.4.tgz","fileCount":236,"unpackedSize":179011,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDAWe4oshOkxsYWDLkOWl+YwEMuE0dlbcw3V5rKucYoSQIhAKpNEruV/7wkFqXQ4Lb4yx/hcKMdra+C11PUSDmUuma1"}]},"_npmUser":{"name":"chasemoskal","email":"chasemoskal@gmail.com"},"directories":{},"maintainers":[{"name":"chasemoskal","email":"chasemoskal@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/magical_0.1.4_1686676020810_0.1536080143387646"},"_hasShrinkwrap":false},"0.1.5":{"name":"@chasemoskal/magical","description":"web toolkit for lit apps","version":"0.1.5","license":"MIT","type":"module","author":{"name":"Chase Moskal","email":"chasemoskal@gmail.com"},"main":"x/magical.js","scripts":{"build":"run-s clean && run-p compile importly","clean":"rimraf x && mkdirp x","compile":"tsc","importly":"importly < package-lock.json > x/importmap.json","watch":"tsc -w","http":"http-server","start":"run-p http watch","test":"cynic node x/tests.test.js"},"keywords":["view","views","events","element","elements","components","web-components","lit","lit-html","css","css-preprocessor","virtual","hooks"],"dependencies":{"es-module-shims":"^1.7.3"},"peerDependencies":{"lit":"^2.7.5"},"devDependencies":{"cynic":"^0.2.1","http-server":"^14.1.0","importly":"^0.2.0","mkdirp":"^3.0.1","npm-run-all":"^4.1.5","rimraf":"^5.0.1","typescript":"^5.1.3"},"types":"./x/magical.d.ts","gitHead":"e50da731501625f4e8722cb479026ea63d9559c7","_id":"@chasemoskal/magical@0.1.5","_nodeVersion":"18.16.0","_npmVersion":"9.5.1","dist":{"integrity":"sha512-CLPMOuBa8FRN9k/SyDY1+ETcMXhXhKUozc+Zc8jP0P7nHf6Wxp+Re2PXDq3HZbK6fSbbzsq4AUMnMphyjtecpw==","shasum":"bb06f37d472ba0413306006ddc773d6410bf15d9","tarball":"https://registry.npmjs.org/@chasemoskal/magical/-/magical-0.1.5.tgz","fileCount":240,"unpackedSize":180663,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFrrX8deFcAkbNsjCYZmmtFFITaygrULd55aoe6v9XxJAiAGacyaL5zoqjzdZ471xGUPHUyu3iBzoQDNpcD1PPgOeg=="}]},"_npmUser":{"name":"chasemoskal","email":"chasemoskal@gmail.com"},"directories":{},"maintainers":[{"name":"chasemoskal","email":"chasemoskal@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/magical_0.1.5_1687213321880_0.39559362477279136"},"_hasShrinkwrap":false},"0.1.6":{"name":"@chasemoskal/magical","description":"web toolkit for lit apps","version":"0.1.6","license":"MIT","type":"module","author":{"name":"Chase Moskal","email":"chasemoskal@gmail.com"},"main":"x/magical.js","scripts":{"build":"run-s clean && run-p compile importly","clean":"rimraf x && mkdirp x","compile":"tsc","importly":"importly < package-lock.json > x/importmap.json","watch":"tsc -w","http":"http-server","start":"run-p http watch","test":"cynic node x/tests.test.js"},"keywords":["view","views","events","element","elements","components","web-components","lit","lit-html","css","css-preprocessor","virtual","hooks"],"dependencies":{"es-module-shims":"^1.8.0"},"peerDependencies":{"lit":"^2.8.0"},"devDependencies":{"cynic":"^0.2.1","http-server":"^14.1.0","importly":"^0.2.0","mkdirp":"^3.0.1","npm-run-all":"^4.1.5","rimraf":"^5.0.1","typescript":"^5.1.6"},"types":"./x/magical.d.ts","gitHead":"fdfa85e88b552ea068ccae639a913cfc7843e8ab","_id":"@chasemoskal/magical@0.1.6","_nodeVersion":"18.17.0","_npmVersion":"9.6.7","dist":{"integrity":"sha512-B2pHOnNCq5c/hWL06E8p+xq549YkRojZXJdtT+GJ7d8UR5OAXwvTyhWAyXz5q/qHOZepStf0ci7geVwIF9IwOQ==","shasum":"15c7ec71f43d63ce4b4500feb4c3116bace76c39","tarball":"https://registry.npmjs.org/@chasemoskal/magical/-/magical-0.1.6.tgz","fileCount":240,"unpackedSize":182599,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDw+GifPub3Yp7KtZh6SIOiwm9l++G5T7NQdLoV4qzLaAiEA1cWKp0u6bEmxJZCYGLINN2i+iphw9OQal++B/ExiL94="}]},"_npmUser":{"name":"chasemoskal","email":"chasemoskal@gmail.com"},"directories":{},"maintainers":[{"name":"chasemoskal","email":"chasemoskal@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/magical_0.1.6_1691107029417_0.9938455728609519"},"_hasShrinkwrap":false},"0.1.7":{"name":"@chasemoskal/magical","description":"web toolkit for lit apps","version":"0.1.7","license":"MIT","type":"module","author":{"name":"Chase Moskal","email":"chasemoskal@gmail.com"},"main":"x/magical.js","scripts":{"build":"run-s clean && run-p compile importly","clean":"rimraf x && mkdirp x","compile":"tsc","importly":"importly < package-lock.json > x/importmap.json","watch":"tsc -w","http":"http-server","start":"run-p http watch","test":"cynic node x/tests.test.js"},"keywords":["view","views","events","element","elements","components","web-components","lit","lit-html","css","css-preprocessor","virtual","hooks"],"dependencies":{"es-module-shims":"^1.8.0"},"peerDependencies":{"lit":"^2.8.0"},"devDependencies":{"cynic":"^0.2.1","http-server":"^14.1.0","importly":"^0.2.0","mkdirp":"^3.0.1","npm-run-all":"^4.1.5","rimraf":"^5.0.1","typescript":"^5.1.6"},"_id":"@chasemoskal/magical@0.1.7","gitHead":"ba9b52a9fd617905ce7deea22e56db9ab5bf591d","types":"./x/magical.d.ts","_nodeVersion":"20.5.0","_npmVersion":"9.8.0","dist":{"integrity":"sha512-ShN2VoStnJn5H7JrnvN51iKwVLgUIRv90VhuBoL8S+Q02xryjxXJfhTnH/25NKK5J0afYksRQEuwiRYUDMYizA==","shasum":"3011d03526fd1407ca2c7b68c36e87e7b81bb87b","tarball":"https://registry.npmjs.org/@chasemoskal/magical/-/magical-0.1.7.tgz","fileCount":240,"unpackedSize":191253,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIADvnbk3wdHc+3S2lAjWlSmdVDP3HSV7t13vwMmr/dkJAiAvJCIJfJSIBxb05A2bCE8qW2tZ6VIlEEzCNI/hZeV3xQ=="}]},"_npmUser":{"name":"chasemoskal","email":"chasemoskal@gmail.com"},"directories":{},"maintainers":[{"name":"chasemoskal","email":"chasemoskal@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/magical_0.1.7_1691216261972_0.9054480137292589"},"_hasShrinkwrap":false},"0.1.8":{"name":"@chasemoskal/magical","description":"web toolkit for lit apps","version":"0.1.8","license":"MIT","type":"module","author":{"name":"Chase Moskal","email":"chasemoskal@gmail.com"},"main":"x/magical.js","scripts":{"build":"run-s clean && run-p compile importly","clean":"rimraf x && mkdirp x","compile":"tsc","importly":"importly < package-lock.json > x/importmap.json","watch":"tsc -w","http":"http-server","start":"run-p http watch","test":"cynic node x/tests.test.js"},"keywords":["view","views","events","element","elements","components","web-components","lit","lit-html","css","css-preprocessor","virtual","hooks"],"dependencies":{"es-module-shims":"^1.8.1"},"peerDependencies":{"lit":"^3.0.2"},"devDependencies":{"cynic":"^0.2.1","http-server":"^14.1.0","importly":"^0.2.2","mkdirp":"^3.0.1","npm-run-all":"^4.1.5","rimraf":"^5.0.5","typescript":"^5.2.2"},"_id":"@chasemoskal/magical@0.1.8","gitHead":"99381a028c5a545ef170f5c84e9bf2923f223648","types":"./x/magical.d.ts","_nodeVersion":"20.9.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-AFijbD0Io1a+PjZMmXMkD/NA9EF+uwPDWyQCY+hirlT7GxCgU+A2jy47AAhC8/JPtUgvHCDYnVq96YGoBsSXbg==","shasum":"f3a69e2fc74239a3f6160deb19677e6de082ae07","tarball":"https://registry.npmjs.org/@chasemoskal/magical/-/magical-0.1.8.tgz","fileCount":240,"unpackedSize":191277,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDbPdYdFtPNFx2RVwKs0MtSodqFKPjNxP3GPzyUSH9dnwIhAJFPEm7D/GO69k+VE96T5LMx7Y4VdB+0LtidwZn5NCfp"}]},"_npmUser":{"name":"chasemoskal","email":"chasemoskal@gmail.com"},"directories":{},"maintainers":[{"name":"chasemoskal","email":"chasemoskal@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/magical_0.1.8_1699078231326_0.22467182728242108"},"_hasShrinkwrap":false},"0.1.9":{"name":"@chasemoskal/magical","description":"web toolkit for lit apps","version":"0.1.9","license":"MIT","type":"module","author":{"name":"Chase Moskal","email":"chasemoskal@gmail.com"},"main":"x/magical.js","scripts":{"build":"run-s clean && run-p compile importly","clean":"rimraf x && mkdirp x","compile":"tsc","importly":"importly < package-lock.json > x/importmap.json","watch":"tsc -w","http":"http-server","start":"run-p http watch","test":"cynic node x/tests.test.js"},"keywords":["view","views","events","element","elements","components","web-components","lit","lit-html","css","css-preprocessor","virtual","hooks"],"dependencies":{"es-module-shims":"^1.8.2","lit":"^3.1.0"},"devDependencies":{"cynic":"^0.2.1","http-server":"^14.1.0","importly":"^0.2.3","mkdirp":"^3.0.1","npm-run-all":"^4.1.5","rimraf":"^5.0.5","typescript":"^5.3.2"},"_id":"@chasemoskal/magical@0.1.9","gitHead":"83e850e8e63b4d13e5da63cef2f8ed1c8c34b3f0","types":"./x/magical.d.ts","_nodeVersion":"20.9.0","_npmVersion":"10.1.0","dist":{"integrity":"sha512-+bUONwMa03FtRs7qdHXYecBMOI/G4IA/V5b3w6/HS/IwYcb+b53hD6v3/UvmRH9WQHXv3Ru0ihSvQuVq3tibcg==","shasum":"d50386d3b81d74bb1818dc66d1cd58939cf60af1","tarball":"https://registry.npmjs.org/@chasemoskal/magical/-/magical-0.1.9.tgz","fileCount":240,"unpackedSize":191522,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICcua1iBlYJ9Iud/3OZrX/B1uvvJ7MNeM71V/4kkv5TbAiBdEe4QNerGKnohRqRr5aMXxa+OguYrOyw5pM7ko0GTgw=="}]},"_npmUser":{"name":"chasemoskal","email":"chasemoskal@gmail.com"},"directories":{},"maintainers":[{"name":"chasemoskal","email":"chasemoskal@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/magical_0.1.9_1701249094544_0.7359930980504625"},"_hasShrinkwrap":false}},"time":{"created":"2022-06-07T19:57:43.633Z","0.0.0-dev.0":"2022-06-07T19:57:43.905Z","modified":"2023-11-29T09:11:34.931Z","0.0.0-dev.1":"2022-06-13T17:48:53.876Z","0.0.0":"2022-10-14T09:24:55.912Z","0.0.1":"2022-10-29T22:17:11.955Z","0.0.2":"2022-11-14T22:08:33.326Z","0.0.3":"2022-11-15T23:17:17.297Z","0.0.4":"2022-11-17T00:20:30.331Z","0.0.5":"2022-11-29T09:36:58.683Z","0.1.0":"2022-12-12T23:01:36.879Z","0.1.1":"2022-12-13T23:03:11.080Z","0.1.2":"2022-12-14T09:35:07.001Z","0.1.3":"2023-02-04T05:09:07.119Z","0.1.4":"2023-06-13T17:07:01.080Z","0.1.5":"2023-06-19T22:22:02.117Z","0.1.6":"2023-08-03T23:57:09.657Z","0.1.7":"2023-08-05T06:17:42.247Z","0.1.8":"2023-11-04T06:10:31.525Z","0.1.9":"2023-11-29T09:11:34.752Z"},"maintainers":[{"name":"chasemoskal","email":"chasemoskal@gmail.com"}],"description":"web toolkit for lit apps","keywords":["view","views","events","element","elements","components","web-components","lit","lit-html","css","css-preprocessor","virtual","hooks"],"author":{"name":"Chase Moskal","email":"chasemoskal@gmail.com"},"license":"MIT","readme":"\n🪄 magical\n==========\n\n*web toolkit for [lit](https://lit.dev/) apps*\n\n🕹️ [**live demo — magical.chasemoskal.com**](https://magical.chasemoskal.com/)  \n📦 `npm install @chasemoskal/magical`  \n💖 *made with open source love*  \n\nmagical is a collection of tools we build, maintain, and use every day to make great [lit](https://lit.dev/) applications.\n\n<br/>\n\n## 🤖 magic `element`\n\nevery magic element is also a lit element.\n\nbut magic elements have a `realize` method instead of a *render* method.\n\nin your `realize` method, use `this.use`, to get access to a \"hooks\" interface for state management.\n\n```ts\nimport {MagicElement, mixinCss, UseElement} from \"@chasemoskal/magical\"\n\nimport {html} from \"lit\"\nimport {property} from \"lit/decorators.js\"\nimport stylesCss from \"./styles.css.js\"\n\n@mixinCss(stylesCss)\nexport class CounterElement extends MagicElement {\n\n  @property({type: Number})\n  start = 0\n\n  realize() {\n    const {use} = this\n    const [count, setCount] = use.state(this.start)\n    const increment = () => setCount(x => x + 1)\n\n    use.setup(() => {\n      const listener = () => console.log(\"resized\")\n      window.addEventListener(\"resize\", listener)\n      return () => window.removeEventListener(\"resize\", listener)\n    })\n\n    return html`\n      <div>\n        <p>count ${count}</p>\n        <button @click=${increment}>increment</button>\n      </div>\n    `\n  }\n}\n```\n\nthere are some things to know about:\n- you should never access `use` outside of `realize`\n- like any hooks interface, your `use` calls must be in the same order every time\n  - so don't put `use.state` or `use.setup` calls inside a for loop or in a callback function or anything like that\n  - best practice is to keep use calls at the top-level\n- `use.state` returns an array with four things:\n  - the current value\n  - the setter function\n    - you can pass it a new value\n    - or a function that takes the previous value and returns a new value\n  - the getter function\n    - the getter is useful getting the latest version of state in a callback\n  - the previous value\n    - you could compare current===previous to see if the value has changed\n- `use.setup`\n  - use this to run a setup routine every time the component connects to the dom\n  - the setup function you provide should return a function that tears down and cleans up any mess, called when the component disconnects from the dom\n\n<br/>\n\n## ✨ magic `view`\n\nviews have the same `use` hook interface, but views are not components or elements.\n\nthey're *lit directives.*\n\nbut like elements, views too can have a shadow dom, and their own css styles.\n\n```ts\nimport {view} from \"@chasemoskal/magical\"\n\nimport {html} from \"lit\"\nimport stylesCss from \"./styles.css.js\"\n\nexport const CounterView = view({\n    shadow: true,\n    styles: stylesCss,\n  }, use => (start: number) => {\n\n  const [count, setCount] = use.state(start)\n  const increment = () => setCount(x => x + 1)\n\n  return html`\n    <div>\n      <p>count ${count}</p>\n      <button @click=${increment}>increment</button>\n    </div>\n  `\n})\n```\n\nthe important thing to understand, is how they are used:\n- views are used like this:\n    ```ts\n    // 🧐\n    return html`\n      <div>\n        ${CounterView(2)}\n      </div>\n    `\n    ```\n    - this is great, because CounterView is fully typescript-typed\n    - and it's directly imported, so it's easy to trace where views are being used (vscode find all references)\n    - typescript will sniff out and complain about places you need to change when you update those parameters\n- whereas using an element would be like this:\n    ```ts\n    // 🤮\n    return html`\n      <div>\n        <counter-element start=2></counter-element>\n      </div>\n    `\n    ```\n    - this is OK for an html-only interface, but for real app development?\n    - this sucks, no typescript typing\n    - no imports, no vscode find all references\n    - have to worry about dom registrations\n    - views solve all of this\n\ncompared against elements:\n- views are typescript functions, so their parameters are fully typed, vscode auto-refactoring works\n- views are less cumbersome, because they don't need to be registered to the dom\n\ncompared against simple render functions:\n- views have state\n- views are independent rendering contexts\n- views can have shadow dom and their own stylesheets\n\ni think a good way to think about elements and views is like this:\n- elements are entrypoints at the html-level\n- most of our app features are implemented as views\n- our views are comprised of simple render functions\n\n<br/>\n\n## 📻 magic `event`\n\nwe have this handy helper for making custom dom events.\n\n```js\nimport {MagicEvent} from \"@chasemoskal/magical\"\n\nexport class ProfileChanged extends\n  MagicEvent<{count: number}>(\"profile_changed\") {}\n\n// dispatch the event\nMyCoolEvent\n  .target(window)\n  .dispatch({count: 1})\n\n// listen for the event\nconst unlisten = MyCoolEvent\n  .target(window)\n  .listen(event => {\n    console.log(\"profile changed\", event.detail.count)\n  })\n```\n\ninstead of extending MagicEvent, you can just use `ev` directly to listen and dispatch custom events:\n\n```js\nimport {ev} from \"@chasemoskal/magical\"\n\nev(MyCustomEvent)\n  .target(window)\n  .dispatch({lol: \"example\"})\n\nconst unlisten = ev(MyCustomEvent)\n  .target(window)\n  .listen(event => {\n    console.log(\"example event\", event.detail.lol)\n  })\n```\n\n<br/>\n\n## 🐫 camel `css`\n\nwe wanted sass-like css nesting, but in our web components.\n\nso we built a parser and compiler for a new css language.\n\nit can run serverside, as part of a build script, or our preferred method — live on the clientside, compiling stylesheets for our elements and views.\n\ncamel css can be a drop-in replacement for lit's css tagged-template function:\n\n```js\nimport {css} from \"@chasemoskal/magical\"\n\nconst styles = css`\ndiv {\n  p { color: red; }\n}\n`\n```\n\ncamel-css uses `^` instead of sass's `&`\n\n<br/>\n\n## 🪄 more magical tools\n\n### ⚙️ `registerElements` and `themeElements`\n\nfor the love of god, if you're writing a web components library, do not call `customElements.define` in those component modules.\n\nbe polite, and allow us the opportunity to augment your elements, rename them, apply a css theme, and then we can register our augmented elements.\n\nso, when we're making a library, we like to have a function like `getElements` that returns all the library's elements classes.\n\nthen it's easy for anybody to apply a css theme and register the elements:\n\n```js\nimport {registerElements, themeElements} from \"@chasemoskal/magical\"\n\nregisterElements(\n  themeElements(\n    themeCss,\n    getElements(),\n  )\n)\n```\n\n- registerElements will automatically take `CamelCaseComponent` names and convert them into `camel-case-component` names\n\n### 🎨 `mixins` for your lit elements\n\n*TODO documentation for these*\n\n- `mixinCss`\n- `mixinLightDom`\n- `mixinRefreshInterval`\n- `mixinContextRequired`\n\n### 🏀 `debounce`\n\ni've made like ten versions of this, and i think this is my masterpiece. it even has unit tests.\n\n```js\nimport {debounce} from \"@chasemoskal/magical\"\n\nconst action = () => console.log(\"action!\")\nconst debouncedAction = debounce(1000, action)\n// debouncedAction is a promise that resolves\n// after the 1000 millseconds of no activity\n\ndebouncedAction()\ndebouncedAction()\nawait debouncedAction()\n//> \"action!\"\n// the action only fires once\n```\n\nthis debouncer\n- typescript\n- works with functions or async functions\n- returns promises\n- the promises resolve with the actual value\n\n<br/>\n<br/>\n\n------\n\n&nbsp; &nbsp; 💖 *made with open source love*\n","readmeFilename":"readme.md"}