{"_id":"@designory/yamodal","_rev":"7-a656b29dc450065aff51289800864051","name":"@designory/yamodal","dist-tags":{"latest":"1.0.1"},"versions":{"0.1.0":{"name":"@designory/yamodal","version":"0.1.0","description":"Yet Another Modal","main":"dist/umd/yamodal.js","module":"dist/esm/yamodal.esm.js","scripts":{"build":"rollup -c","prebuild":"rm -rf dist","prepublishOnly":"npm run build","start":"rollup -c --watch --environment SERVE:true"},"author":{"name":"Matt Wade","email":"matt.wade@designory.com"},"license":"MIT","dependencies":{"delegate":"^3.2.0"},"devDependencies":{"@babel/core":"^7.9.0","@babel/preset-env":"^7.9.0","@rollup/plugin-babel":"^5.0.0","@rollup/plugin-commonjs":"^11.0.0","@rollup/plugin-node-resolve":"^7.1.0","rollup":"^2.9.0","rollup-plugin-filesize":"^9.0.0","rollup-plugin-livereload":"^1.0.4","rollup-plugin-serve":"^1.0.1","rollup-plugin-terser":"^5.1.3"},"keywords":["modal","overlay","vanillajs"],"gitHead":"297c4e8277f7dd39822c160314713cc7ddc98f74","_id":"@designory/yamodal@0.1.0","_nodeVersion":"10.20.1","_npmVersion":"6.14.4","dist":{"integrity":"sha512-EFp9sZLFxavhF5MF0DjgtHO3OZSEuwm4MHY4SJO8vszpo+s2YNL+IGNTCy8O2/w3EuKIkoG5YIguKHp1BkspAg==","shasum":"cc9ddf99eb9e00efee793b3fd8a25548115d035e","tarball":"https://registry.npmjs.org/@designory/yamodal/-/yamodal-0.1.0.tgz","fileCount":9,"unpackedSize":91297,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexzvtCRA9TVsSAnZWagAABbgP/jsiSD4mo79Ba+K5J5BU\naZHFMho056+HHlHcsse2ClB8coilu9N6+RtwadqFEVpZEQz90miBdZG2ZFRm\n3CSeZixgi8qhPIwm8exZRHQJohuOKI1OQlgFxw8LffT4pB2QUrKBN3PSJk/Z\nqxUoVyTRc3vEvwjj3J1zZ18Kul74oePMh04PuZ2bi+A7CMWiwrykqAeow5Kj\ntV3gIcS5VkEaAgZt+r2nGFaIiLjxnOhF/ZqXk/UeV8JmTUF6pkOhPPEC3l9b\nq8cI15LotYfHDfqcHpoYMiYI//jwuPLSkRjH8u/YAa7jpzEXCKZ0G8nODFkZ\nat59FWjlqXOVTAUtpEu4QR10umB9cQwZFj34c2A/E8//2P0/uKRfeUYXZZw1\nPoRv7PVoXGfaHloKjffEIybT6mmPoU6LvTr/n72fs6H3zAlaGSxgcWMoV/tk\nFWP7fV55EkdA61UA+NuYOU68NYpARI8XYhY+L+Pw2d4b/MpbBDspKMQPyg1n\nJuaReuFdwQxG0WA2FM29ilhlYOPy6qTZCvcnUu4gqHGkuMz74J5dVT1cf7ef\nVfPciY5HDYmyFq2bGwEF8tzm+roWc2Y02PEU9IlDe+PB7kCTo5pcY85274t1\nc3re/IWGeMFzf5JjMZu5SePVwXhAErSLpYSYNEK4LWrzsKGS5A8dqGTMH/aP\nespm\r\n=bKa4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDyP9Db0TV0+4SwkeiPohvERHV09mgknKLBv4W01WvGfwIhAIraV90IHV4OZZIG+zFrzCjX3cuRkVEDmVTXEXSeJvuD"}]},"maintainers":[{"name":"romellem","email":"romellem.git@gmail.com"},{"name":"heyitsmattwade","email":"heyitsmattwade@gmail.com"}],"_npmUser":{"name":"romellem","email":"romellem.git@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/yamodal_0.1.0_1590115309262_0.2344925700727678"},"_hasShrinkwrap":false},"0.1.1":{"name":"@designory/yamodal","version":"0.1.1","description":"Yet Another Modal","main":"dist/umd/yamodal.js","module":"dist/esm/yamodal.esm.js","scripts":{"build":"rollup -c","prebuild":"rm -rf dist","prepublishOnly":"npm run build","start":"rollup -c --watch --environment SERVE:true"},"author":{"name":"Matt Wade","email":"matt.wade@designory.com"},"license":"MIT","homepage":"https://designory.github.io/yamodal/","repository":{"type":"git","url":"git+https://github.com/Designory/yamodal.git"},"bugs":{"url":"https://github.com/Designory/yamodal/issues"},"dependencies":{"delegate":"^3.2.0"},"devDependencies":{"@babel/core":"^7.9.0","@babel/preset-env":"^7.9.0","@rollup/plugin-babel":"^5.0.0","@rollup/plugin-commonjs":"^11.0.0","@rollup/plugin-node-resolve":"^7.1.0","rollup":"^2.9.0","rollup-plugin-filesize":"^9.0.0","rollup-plugin-livereload":"^1.0.4","rollup-plugin-serve":"^1.0.1","rollup-plugin-terser":"^5.1.3"},"keywords":["modal","overlay","vanillajs"],"gitHead":"9d4d36b5cd7771d7006ed0b4f41ec0be4cc010fe","_id":"@designory/yamodal@0.1.1","_nodeVersion":"10.20.1","_npmVersion":"6.14.4","dist":{"integrity":"sha512-QDtUAvD0Tmajj5pB7JEPQiMOkgSMlPHeL0lcuLn2nMjOHfuqsgAApmf9DSgFoq55h7aKlPe8im4ennBwIxpAjA==","shasum":"4112ccc5d6a4ef35bb212dc814b944d81e77ecef","tarball":"https://registry.npmjs.org/@designory/yamodal/-/yamodal-0.1.1.tgz","fileCount":9,"unpackedSize":91731,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJex0FwCRA9TVsSAnZWagAAz7gQAJ+zw4sLDEphxqJmwRNA\nbgFhhZVhP3J05iz996x5tGhwMmSTjlEVO3ome32EouwmTBd7LXU9WoJoQJLR\nyuA8f56SYC9a/ai3kUeOpz5PxeeOnvO7qT9iTj/JwLgBH77YCycTytOna8eA\nDnxxBeHVmxkchcF/5hMpe5+gnCqbAgTYlHPc/Bb4XzWZE1E/20PMjLpcY1C2\n11/SYDfzI3p6ePaFRhsMWySopGhyJxndzT2hakLAL+PQ98yEoGQtRq+gzCKK\n/TKuhU5CZn3yoYZLisKygwdoEemmmZOK3jhdjfvgnZ+CUh/E0gPvOqipmHYq\noIwc/WBHJBJrKnwGjWcYP2kgVYn6WPf1iK9HS6zRL4eyJsCBacoeDF+VZWeU\nbdkZ1alHVJ1JC8wmGlZTj7JbA+F+3uyeIdCl4fXR7OBdrbJXqtbCP+c4KtT0\nZvSoZ+ZZtcIWiWHDFhVoGotArSVJub6h+18FKlpEN4v6Ew/CpGz+WXDCxb5S\nbf674e1t/pRfjWAtSiDkouznBU/C42YJoL9U30QX3VYnYEsArIq6kxHp/W7h\nbv8XJH3Q/jj47dzanGhoeoCdxfS8vxbx1L2cE+HMgziayq5xh6LLC7WA9/mT\nzyTR7hPrHVmujYlYf9pjU+aVzS2ne41gsOwGUxpARYlU3JB/tI7ACHr47q+Q\nzEAi\r\n=u2Yo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDTEEuwRkl1aaCJJPFVogxw3LHT/Hfbiy2VthvQomJOGQIhAP4uQujIfKfxRfEVV6sjyEJlH+rslNzF6lLnGS4pR+NM"}]},"maintainers":[{"name":"heyitsmattwade","email":"heyitsmattwade@gmail.com"},{"name":"romellem","email":"romellem.git@gmail.com"}],"_npmUser":{"name":"romellem","email":"romellem.git@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/yamodal_0.1.1_1590116719503_0.6593471244043396"},"_hasShrinkwrap":false},"0.2.0":{"name":"@designory/yamodal","version":"0.2.0","description":"Yet Another Modal","main":"dist/umd/yamodal.js","module":"dist/esm/yamodal.esm.js","scripts":{"build":"rollup -c","prebuild":"rm -rf dist","prepublishOnly":"npm run build","start":"rollup -c --watch --environment SERVE:true","test":"nyc mocha"},"author":{"name":"Matt Wade","email":"matt.wade@designory.com"},"license":"MIT","homepage":"https://designory.github.io/yamodal/","repository":{"type":"git","url":"git+https://github.com/Designory/yamodal.git"},"bugs":{"url":"https://github.com/Designory/yamodal/issues"},"dependencies":{"delegate":"^3.2.0"},"devDependencies":{"@babel/core":"^7.11.0","@babel/preset-env":"^7.11.0","@rollup/plugin-babel":"^5.1.0","@rollup/plugin-commonjs":"^11.0.0","@rollup/plugin-node-resolve":"^7.1.0","global-jsdom":"^6.1.0","jsdom":"^16.3.0","mocha":"^7.2.0","nyc":"^15.1.0","rollup":"^2.9.0","rollup-plugin-filesize":"^9.0.0","rollup-plugin-livereload":"^1.0.4","rollup-plugin-serve":"^1.0.1","rollup-plugin-terser":"^5.1.3"},"keywords":["modal","overlay","vanillajs"],"gitHead":"167db8a3abf3552a3f1a9010f8c5161e522e5d0a","_id":"@designory/yamodal@0.2.0","_nodeVersion":"10.21.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-2WNMm4KCafPp42kReL6dv2iBywjksL5aTDrxRUNjTsed971LIZqqMcYrCAPyh3brykcC0SdqPdT3ASw2lbJc5w==","shasum":"b21f84a1d46ce67d42608c143e2a6fbd850cb907","tarball":"https://registry.npmjs.org/@designory/yamodal/-/yamodal-0.2.0.tgz","fileCount":9,"unpackedSize":105942,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfJa/+CRA9TVsSAnZWagAAskcP/R0kv56FEYLeGQhcG+1C\nFtp/uQ6Hd1tphmuFEwqhCVYHfZgOcHwjUSsdOr1zRkMrKajnb4WewbiSn1jC\nGtJ6P2E74IBhjc+Zv318CqyG3BQC9GGEBfdQ3GfGjTG6tutTcB1BlrmfSMMC\n1Gf1b/aUxilM70q79dKAagWdlft5MA634tl3PR5R5NV0BAMhDElE61aR++2Z\nxRB0kAkL5tkFLCOUnCP4V6P4QGtCjHis3Ludb0ORlMsjejYMOTb965Eh1CKz\n8lm3HZZzZmrrL/iIdVWXfArwDCJI20AZ1kJl80aHoe9rASPfUP9/sxceGNiu\ny9F9sOQFqK2x834ku5X1e7Ma/eJQcY+c4Tap7VgwxS94jcIKVC0O+Lqaz3hr\nACstZT+ewJqlyWdA0TyjzMiaqSg1ToamW0Guya+tXc4jSl0rzp2Yvg/mnklD\n+wTbCWQJ73xfmLaU8YgfMG+GzTLp5FM/XZEsSNzl3KLGNmcqnWmUhahWvHkT\nQ+avZRcZ/j9T+giavc+XSBPccNmnwh4vafvkAIP5DX1+M1VYj6lmcmFwfVFO\npv1WcVsbiUJNlStjR8R8PslRBdneQ96cpACbuC65ddn+SpLYZ2ybWRGnKTwl\nErq/JO2Xo2PelfbkXyCk4k1nFPNWVhVbqpuCEg1iuN+9jR7qCoAQEAcNp+kn\nZxIB\r\n=NlI7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHAafwga+zGgbpmr76Qzqb2gP7r/cTuZRdxsv/fMKc4SAiEA8gs8Nju6p6GGppMynyOpxG1QRxZN+IRcMFIkLJCexdY="}]},"maintainers":[{"name":"heyitsmattwade","email":"heyitsmattwade@gmail.com"},{"name":"romellem","email":"romellem.git@gmail.com"}],"_npmUser":{"name":"romellem","email":"romellem.git@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/yamodal_0.2.0_1596305405615_0.86768914243498"},"_hasShrinkwrap":false},"0.2.1":{"name":"@designory/yamodal","version":"0.2.1","description":"Yet Another Modal","main":"dist/umd/yamodal.js","module":"dist/esm/yamodal.esm.js","scripts":{"build":"rollup -c","prebuild":"rm -rf dist","prepublishOnly":"npm run build","start":"rollup -c --watch --environment SERVE:true","test":"nyc mocha"},"author":{"name":"Matt Wade","email":"matt.wade@designory.com"},"license":"MIT","homepage":"https://designory.github.io/yamodal/","repository":{"type":"git","url":"git+https://github.com/Designory/yamodal.git"},"bugs":{"url":"https://github.com/Designory/yamodal/issues"},"dependencies":{"delegate":"^3.2.0"},"devDependencies":{"@babel/core":"^7.11.1","@babel/preset-env":"^7.11.0","@rollup/plugin-babel":"^5.1.0","@rollup/plugin-commonjs":"^14.0.0","@rollup/plugin-node-resolve":"^8.4.0","global-jsdom":"^6.1.0","jsdom":"^16.3.0","mocha":"^8.1.1","nyc":"^15.1.0","rollup":"^2.23.0","rollup-plugin-filesize":"^9.0.0","rollup-plugin-livereload":"^1.0.4","rollup-plugin-serve":"^1.0.1","rollup-plugin-terser":"^6.1.0"},"keywords":["modal","overlay","vanillajs"],"gitHead":"e4bcf9ab02c3cf3cbf86c98ccf7ebfc0ddf362f0","_id":"@designory/yamodal@0.2.1","_nodeVersion":"10.22.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-N61wIkaejaMLNFfCVTYapxJgZyCC7SIKnaM1YmUZq6dwxaOlg74L9NBY+CYHGSMlchpnUr//D1GeeDkJ1CP/cg==","shasum":"3fe1d5d29ce5a1dd3266bfca10c8b04edb747b8a","tarball":"https://registry.npmjs.org/@designory/yamodal/-/yamodal-0.2.1.tgz","fileCount":9,"unpackedSize":106012,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfQVzVCRA9TVsSAnZWagAAqw0P/R6SyD1ucCzhnwRDwTNS\nEvR1o/Z3hBShHDVoVZ1hM03q3MLiWjj1gEGzrsUkB4QzWhfq+yLrZM7rQbX1\n/Wdi4tLzTXcLm/4P3llk/OIXSKFYayqvvGIAiLIW/uhMejGQRtH3kooPhXzb\nDvymF64n4hVxP4LQ1gDUbP/Su+VKrkr7Ubpceaeq4Je0JF6s3IyEUusl6Wqj\nTFvyW2+CPIeuLVyxKj/Ababn2t2Js1ekBfOm1xAqZumaNoEhuAn+6TIL856t\nOlPOdCCC6tDuyeQ365AfpochyI4zcyfkDuCJV2qZSPE8Es0GMBatBebolMNl\nkg5/5i5ZzyQki1/NGFevgwfNRGqixcBrPpWe5aR89NVpiQ6UPUJzP6WXn6nv\nCzqoTsq3/Y8Tik++MI2EfVc2B1+Qk9oqlDafhgdnvSxQzs82ba2m8hBf1e3Z\nSRUR8Mv36pQrmUlO8qz1QpZ0kpK8J0mxeSD06/gWIzj67gKJQzyWj40OrbWm\npCD2WccQoaKksfTaU9PTV5gx/nlfr2PK8E2UycZdKhnbVIi0iWps5hIrqeq1\nIYesA42jrNUu+5lprCWsjnUFlv69nPP2lQv4PenISXajXmy93SuufeuQgz4L\ncPTcfNLWOnFIoU2BOau4ij5LZiu2CqTq+SZvDohIz32nziW9+02/TeE1g5kV\nto24\r\n=gPDQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDHUfABIfo/k06Pdt0SdBdM7Eo8zTRqW6wByC9at486gwIgBzmnu3mGmdH57ONwk7WHdJiL/H1KlFgPMW8Aof41i0M="}]},"maintainers":[{"name":"heyitsmattwade","email":"heyitsmattwade@gmail.com"},{"name":"romellem","email":"romellem.git@gmail.com"}],"_npmUser":{"name":"romellem","email":"romellem.git@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/yamodal_0.2.1_1598119125104_0.5059577882758197"},"_hasShrinkwrap":false},"1.0.0":{"name":"@designory/yamodal","version":"1.0.0","description":"Yet Another Modal","main":"dist/umd/yamodal.js","module":"dist/esm/yamodal.esm.js","scripts":{"build":"rollup -c","prebuild":"rm -rf dist","prepublishOnly":"npm run build","start":"rollup -c --watch --environment SERVE:true","test":"nyc mocha"},"author":{"name":"Matt Wade","email":"matt.wade@designory.com"},"license":"MIT","homepage":"https://designory.github.io/yamodal/","repository":{"type":"git","url":"git+https://github.com/Designory/yamodal.git"},"bugs":{"url":"https://github.com/Designory/yamodal/issues"},"dependencies":{"delegate":"^3.2.0"},"devDependencies":{"@babel/core":"^7.11.4","@babel/preset-env":"^7.11.0","@babel/register":"^7.10.5","@rollup/plugin-babel":"^5.2.0","@rollup/plugin-commonjs":"^15.0.0","@rollup/plugin-node-resolve":"^9.0.0","global-jsdom":"^6.1.0","jsdom":"^16.3.0","mocha":"^8.1.1","nyc":"^15.1.0","rollup":"^2.23.0","rollup-plugin-filesize":"^9.0.0","rollup-plugin-livereload":"^2.0.0","rollup-plugin-serve":"^1.0.1","rollup-plugin-terser":"^7.0.2","sinon":"^9.0.2"},"keywords":["modal","overlay","vanillajs"],"gitHead":"3bad6741235012ae9f9765b1538daf41cae15c36","_id":"@designory/yamodal@1.0.0","_nodeVersion":"10.22.0","_npmVersion":"6.14.6","dist":{"integrity":"sha512-e2r2bTiOKvpnNaWqE94+mKgeYCmE3+3xT0C3TabM4/Y5pYA7klLAD/EyEjvgZ8kuQmDjuDZA/3+QdO5U2XLb+Q==","shasum":"d3e66436de93cffbac97fc9ae301d8323472275e","tarball":"https://registry.npmjs.org/@designory/yamodal/-/yamodal-1.0.0.tgz","fileCount":9,"unpackedSize":106466,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfeIHbCRA9TVsSAnZWagAAVtsP/iaRz8yUuHInC/cQveNt\nbaHNtq+sM8+upbSkPCB2X9uSyGIgv1R7RISoj9Un29zkDf2TJAM+ISW1paJB\nFSMeVQjBHgInq5dgmgPffdh7NbTGQmlw4JgcTeNytQhmivYACKSnBksP7qHF\ndXRevuKuGnXdD7c1GW6RJgyE30i5s8dRhA4ZMlf25jOPsg8/7lkYCRg4PRvs\nCidIuNqLV+g6w7REu1ThLloXMCX4WsClm3ZpubjwEiyuqg4Evg7dh3an59Wt\n1SvK6cLHjnA3yvr3Z9lwU8efghojCkHL2VXV/b2yhlSwxxJ8CJK2cU1dy0SS\nGwt1tNm0sRTlgS4yR7pIwfB4Ntnia2IHFgH4kR72rwqgZltEsx1Fh4FGcs+k\nRMGQLKQr7se07D91QLgazNnNhCfpKy2bUgMm4xtXdKDPHh+ep44WVGLkk60A\ns1Yd3strs7yKOiqf11Vl7EOYPfefqBXF/aPH4SPCwnO9RVeNuvLIS7lLK5/p\nNCRCD73JGtmoy3yT+DBQM8HQbhhOQivtHGDt+ktIhmjgm9L9ggtmD8wT84gx\ncxM3RpYAly36+Ovp2oEog+v8Vxl79/AntKTauSTFvLm8acYE/vPd17wEeOFE\nT7alUb5IT+/WSXbc30M/w15UareBL54bCJGE0swDjo2+FeEA3KbqpSAbk0KA\nY0Yd\r\n=K/t2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCktLh9gxnX1J4N29nm7i1YxiEn02fj+x22bTNYgbjrmgIhAI51mi0ors1Dm7pRbu16PeTwECDu6obry2DscFbqphqP"}]},"maintainers":[{"name":"romellem","email":"romellem.git@gmail.com"},{"name":"heyitsmattwade","email":"heyitsmattwade@gmail.com"}],"_npmUser":{"name":"romellem","email":"romellem.git@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/yamodal_1.0.0_1601733083051_0.7619402193155216"},"_hasShrinkwrap":false},"1.0.1":{"name":"@designory/yamodal","version":"1.0.1","description":"Yet Another Modal","main":"dist/umd/yamodal.js","module":"dist/esm/yamodal.esm.js","scripts":{"build":"rollup -c","prebuild":"rm -rf dist","prepublishOnly":"npm run build","start":"rollup -c --watch --environment SERVE:true","test":"nyc mocha"},"author":{"name":"Matt Wade","email":"matt.wade@designory.com"},"license":"MIT","homepage":"https://designory.github.io/yamodal/","repository":{"type":"git","url":"git+https://github.com/Designory/yamodal.git"},"bugs":{"url":"https://github.com/Designory/yamodal/issues"},"dependencies":{"delegate":"^3.2.0"},"devDependencies":{"@babel/core":"^7.15.0","@babel/preset-env":"^7.15.0","@babel/register":"^7.15.3","@rollup/plugin-babel":"^5.2.0","@rollup/plugin-commonjs":"^15.0.0","@rollup/plugin-node-resolve":"^9.0.0","global-jsdom":"^6.1.0","jsdom":"^16.3.0","mocha":"^8.1.1","nyc":"^15.1.0","rollup":"^2.23.0","rollup-plugin-filesize":"^9.0.0","rollup-plugin-livereload":"^2.0.0","rollup-plugin-serve":"^1.0.1","rollup-plugin-terser":"^7.0.2","sinon":"^9.0.2"},"keywords":["modal","overlay","vanillajs"],"gitHead":"949191ce2a805f742655b3056009783c883ed981","_id":"@designory/yamodal@1.0.1","_nodeVersion":"16.6.2","_npmVersion":"7.20.3","dist":{"integrity":"sha512-kOd2cwP9lSYXuZa5Wfb1pQ2qiQS0OPp+3Ysek5TAAL1EZKHTZWd7/QIliS+IqPCTYt6yHPtfnIltuFgXLQEZyQ==","shasum":"4edd08deefb873e542651e8cb1103283ee441695","tarball":"https://registry.npmjs.org/@designory/yamodal/-/yamodal-1.0.1.tgz","fileCount":9,"unpackedSize":106651,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhLrs6CRA9TVsSAnZWagAAgpYQAIjC3TUwUZ7Uz0eZgsBC\nG9dGs79yw9/akDnrlS8rNQi0FOVmuNNoVH1pJui6z6xKPHNbHdxmAo+J2j10\nSFNn3owjpuYSNLajUGfL1GcW4fvHie5UcO0yFZOivhoIgM87jf3TKvBI0MpV\nvKUPL/3bORiX8L1FTz1ryUhYE1gHUJtO3ssbftbn2qrMqQhL6g7rc5oiHKtU\nS0Ub8tzyHDkhUM81ibL3R2yabfQ6M8Awiij6wNWxXBgy/63p0A2EW3fqaEDB\nWquP39UbkbfPJjLf8F666aoo8v1lsYkg7DeJtOJCeMHmPUbH5MSWRJbbZ1xc\nExoilMyG4HN4YRpv4CVop0mEUE3S3/mGocO+PwwGITWoCPaeeWWFfY9hDYKp\nNRzmSrplI5t5OAeDn8085G1iC9C4xW/+f7CFWk4R8c+fgULqBvhpipN0vi1J\nDVgul0SY6TdySatRLLeDc9fhhlbRBHQKKImJZ1KPu8R+lP33qN2SJ/TLgRrb\ntVvUF3oCyyLM93mTTpP15T9bFv3kSam6KuPENabwiG7hm8QCS0oGi1zFEA2f\nEWIexPN/tT1B/akoSpksm588ub4cbyspr+P/CBjfzrmpXhxwDZYt+MuBwxVv\nPIz4s+2Rcvg19G4k6WLcl4VYmUettqAxeZmM0cO112WIKkzg7cbMvfc+nhen\nS/DX\r\n=5BGW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDdvoEGyvo7fIR7U1oDwVntXZfg/0bsgddmFy/hGeVOVgIhAK0oh7+9u6JnYJFCLTvSmFnAaYIT+JgCRv6s2EANsseZ"}]},"_npmUser":{"name":"romellem","email":"romellem.git@gmail.com"},"directories":{},"maintainers":[{"name":"heyitsmattwade","email":"heyitsmattwade@gmail.com"},{"name":"romellem","email":"romellem.git@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/yamodal_1.0.1_1630452537872_0.21962368492102446"},"_hasShrinkwrap":false}},"time":{"created":"2020-05-22T02:41:49.055Z","0.1.0":"2020-05-22T02:41:49.373Z","modified":"2023-04-28T16:20:46.880Z","0.1.1":"2020-05-22T03:05:19.640Z","0.2.0":"2020-08-01T18:10:05.765Z","0.2.1":"2020-08-22T17:58:45.261Z","1.0.0":"2020-10-03T13:51:23.163Z","1.0.1":"2021-08-31T23:28:58.020Z"},"maintainers":[{"email":"kmiddlesworth@gmail.com","name":"kmiddlesworth"},{"email":"heyitsmattwade@gmail.com","name":"heyitsmattwade"},{"email":"romellem.git@gmail.com","name":"romellem"}],"description":"Yet Another Modal","keywords":["modal","overlay","vanillajs"],"author":{"name":"Matt Wade","email":"matt.wade@designory.com"},"license":"MIT","readme":"# (Yet Another) Modal\n\n[![npm version](https://badge.fury.io/js/%40designory%2Fyamodal.svg)](https://badge.fury.io/js/%40designory%2Fyamodal)\n\n**YaModal** is _yet another_ modal library written in vanilla javascript.\nIt aims to provide basic functionality for _injecting_ an element into the DOM\nwhen a _trigger_ is clicked, and _removing_ that same node when a relevant\n_close_ element is also clicked.\n\nTo accommodate more common features of modals (fade ins / fade outs, click outside\nto close, etc.), a variety of callback functions are exposed that execute before\nand after DOM injection / removal.\n\nEvent listeners are delegated via the excellent\n[delegate](https://www.npmjs.com/package/delegate) library.\n\n## Install\n\n```\nyarn add @designory/yamodal\n# or npm install @designory/yamodal\n```\n\n### Usage\n\n#### When using a bundler like webpack, rollup, parcel, browserify, etc.:\n\n```js\nimport yamodal from '@designory/yamodal';\n\nlet yamodal_instance = yamodal({\n    // Options here...\n});\n```\n\n#### When using the UMD bundle directly in the browser:\n\n```html\n<script src=\"https://unpkg.com/@designory/yamodal/dist/umd/yamodal.min.js\"></script>\n<script>\nvar yamodal_instance = window.yamodal({\n    // Options here...\n});\n</script>\n```\n\n### Options\n\n```js\nyamodal({\n    // @required\n    // The main template function that returns a string of HTML to be injected.\n    // Called with the passed in `context`.\n    // The return value of the template should be a single HTML node.\n    // This is the only required option. If it is not a function, an error is thrown.\n    // Additionally, if this function doesn't return a valid DOM node string, an error is thrown.\n    template: (context) => '<div>My Modal</div>',\n\n    // Optional context to be passed into our template function.\n    // If a function is passed, it will be called with `trigger_node` and `event`\n    // as its arguments and its return value will be passed to our template.\n    // Function contexts get executed each time before the modal is inserted, allowing for dynamic modal content.\n    context,\n\n    // Selector of the element(s) that when clicked, open our modal.\n    // A value of `null` means no 'click' event will be attached to open the modal.\n    // Defaults to '[data-modal-trigger=\"${template.name}\"]' or '[data-modal-trigger]' if template is an anonymous function.\n    trigger_selector,\n\n    // Selector of the element(s) that when clicked, close its open modal.\n    // A value of `null` means the modal will close when itself it clicked.\n    // Defaults to '[data-modal-close]'.\n    close_selector,\n\n    // Optional function to append our modal to the DOM.\n    // Called with three arguments: `modal_node`, `trigger_node`and the opening `event`.\n    // Defaults to `document.body.appendChild(modal_node)`.\n    onAppend(modal_node, trigger_node, event){ ... },\n\n    // Optional function that runs before inserting the modal into the DOM.\n    // If this returns `false`, will prevent the modal from being injected into the DOM.\n    // Called with three arguments: `modal_node`, `trigger_node`, and the opening `event`.\n    beforeInsertIntoDom(modal_node, trigger_node, event){ ... },\n\n    // Optional function that runs after inserting the modal into the DOM.\n    // Called with three arguments: `modal_node`, `trigger_node`, and the opening `event`.\n    afterInsertIntoDom(modal_node, trigger_node, event){ ... },\n\n    // When set, the modal is not removed until that event is fired.\n    // Otherwise modal is removed immediately from DOM.\n    // Some useful event types are 'transitionend' and 'animationend'.\n    remove_modal_after_event_type,\n\n    // Optional function that runs before removing the modal from the DOM.\n    // If this returns `false`, will prevent the modal from being removed from the DOM.\n    // Called with three arguments: `modal_node`, `close_node`, and the closing `event`.\n    beforeRemoveFromDom(modal_node, close_node, event){ ... },\n\n    // Optional function that runs after removing the modal from the DOM.\n    // Called with three arguments: `modal_node`, `close_node`, and the closing `event`.\n    afterRemoveFromDom(modal_node, close_node, event){ ... },\n\n    // Optional function that runs once after all event listeners have been setup.\n    // Called with `modal_node` and an object with `isOpen`, `open`, `close`, and `destroy` methods.\n    onAfterSetup(modal_node, { isOpen, open, close, destroy }){ ... },\n\n    // Optional function that runs additional cleanup steps if we \"destroy\" our listeners\n    // Called with `modal_node`.\n    onDestroy(modal_node){ ... },\n});\n```\n\n#### Option `template`\n\n_Type:_ `Function`\n\nThe only **required** option. It must be a function that returns an HTML string\nthat contains a _single_ DOM node. If more than one node is returned, only\nthe first node is selected as the `modal_node`.\n\n```js\nyamodal({\n    template: () => `<div>Hello world!</div>`,\n});\n```\n\nYou can use whatever templating library you want here as well. As long as the\nfunction returns an HTML string that contains a single DOM node, it'll work!\n\n##### Handlebars Template\n\n```html\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.7.6/handlebars.min.js\"></script>\n<script>\n    var template = Handlebars.compile(\"<div>Handlebars <b>{{doesWhat}}</b></div>\");\n    yamodal({\n        template: template,\n        context: { doesWhat: \"rocks!\" },\n    });\n</script>\n```\n\n##### React (ReactDOMServer) Template\n\n```html\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/react/16.13.1/umd/react.production.min.js\"></script>\n<script src=\"https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.13.1/umd/react-dom-server.browser.production.min.js\"></script>\n<script>\n    // const Modal = (props) => <div>Hello {props.name} <button data-modal-close>×</button></div>;\n    // renderToString(<Modal name=\"world!\" />);\n    var Modal = function Modal(props) {\n        return React.createElement(\n            \"div\",\n            null, \n            \"Hello \", \n            props.name, \n            \" \", \n            React.createElement(\n                \"button\",\n                { \"data-modal-close\": true },\n                \"×\"\n            )\n        );\n    };\n    var template = function(context) {\n        return ReactDOMServer.renderToString(\n            React.createElement(Modal, context)\n        );\n    };\n    yamodal({\n        template: template,\n        context: { name: \"world!\" },\n    });\n});\n</script>\n```\n\n#### Option `context`\n\n_Type:_ _`Any`_ or `Function`\n\nAny value that is passed to the `template` function. If `context` is itself\na function, it will be called with `trigger_node` and `event` arguments.\nThe return value of this call is passed to our template. Additionally, when a\n`context()` function is used, we recreate our `modal_node` just prior to opening\n(it is executed before the `beforeInsertIntoDom` callback).\n\n> Note: If a function is passed in for `context` then we don't create the modal\n> immediately. We only create it when it is opened. So, if you grab the `modal_node`\n> property from `yamodal()`s return object, it will be `undefined`.\n>\n> Also note if your `context` function relies on the `trigger_node` or `event`\n> arguments, these values will set as `undefined` and a placeholder `CustomEvent`\n> (respectively) when opening the modal with the programmatic\n> [`open()`](#return-openevent) method.\n\n```js\nyamodal({\n    template: (context) => `<div>This won't change between modal opens: ${context}</div>`,\n    context: Math.random(),\n});\n```\n\n```js\nyamodal({\n    template: (context) => `<div>This <em>will</em> change between modal opens: ${context}</div>`,\n    context: () => Math.random(),\n});\n```\n\n```js\n// <a href=\"http://example.com\" data-modal-trigger>3rd party link</a>\nyamodal({\n    template: url => `<div>Continue? <a href=\"${url}\">Link</a></div>`,\n    beforeInsertIntoDom(modal, trigger, event){\n        event.preventDefault();\n    },\n    context(trigger_node) {\n        return trigger_node.href;\n    },\n});\n```\n\n```js\nyamodal({\n    template: event => `<div>This was opened via ${event.type === 'open.yamodal' ? 'the open() API' : 'a click'}</div>`,\n    context(trigger_node, event) {\n        return event;\n    },\n});\n```\n\n#### Option `trigger_selector`\n\n_Type:_ `String` or `null`\n\nThe selector of the element(s) that will open the modal when clicked.\n\nIf no option is passed, we fall back to two defaults:\n\n1. When a non-anonymous function is passed as the `template`, the\n[name](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name)\nattribute of that `template` is used in the selector `[data-modal-trigger=\"${template.name}\"]`.\n\n```js\n// A modal opens when `<button data-modal-trigger=\"my_modal\">` is clicked!\nyamodal({\n    template: function my_modal() { return `<div>...</div>` },\n});\n```\n\n2. When an anonymous function _is_ passed as the `template`, we use `[data-modal-trigger]` as the\nfallback. Note that this should only be used if you have a **single** modal on the page. Otherwise\nthe triggers will open up multiple modals which is probably not your intended result.\n\n> Note our function will always have an [inferred name](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name#Inferred_function_names)\n> of `\"template\"` when using an anonymous function, so technically this library\n> checks for a `function.name` of `\"template\"` and assumes an anonymous\n> function was passed if it finds that.\n>\n> If you do want to use a function named `template`, just set the\n> `trigger_selector` directly rather than using a calculated default.\n\n```js\n// Careful! Both modals will opens when a `<button data-modal-trigger>` is clicked!\nyamodal({\n    template: () => `<div>1</div>`,\n});\nyamodal({\n    template: () => `<div>2</div>`,\n});\n```\n\nIf `null` is passed, no delegated 'click' event is attached to open the modal.\nInstead, the modal can only be opened via its [`open()`](#return-openevent) API\nmethod.\n\n```js\nyamodal({\n    template: () => `<div>I show on page load!</div>`,\n    onAfterSetup(modal_node, { open }) {\n        open();\n    },\n});\n```\n\n```js\nlet modal = yamodal({\n    template: () => `<div>I was opened via my 'open()' API!</div>`,\n});\n\nif (someConditional) {\n    modal.open();\n}\n```\n\n#### Option `close_selector`\n\n_Type:_ `String` or `null`\n\nThe selector of the element(s) that will close the currently opened modal when clicked.\nNote that these elements do _not_ have to be children elements of the modal. They can\nexist anywhere on the document.\n\nIf no option is passed, the modal node checks for a child that matches the selector\n`[data-modal-close]`. If no element is found or `close_selector` is `null`, then the\nmodal itself has the close handler attached to it.\n\n```js\nyamodal({\n    template: () => `<div>Click <button class=\"close\">me</button> to close the modal.</div>`,\n    close_selector: '.close',\n});\n```\n\n```js\nyamodal({\n    template: () => `<div>Click <button data-modal-close>me</button> to close the modal.</div>`,\n});\n```\n\n```js\nyamodal({\n    template: () => `<div>Click anywhere to close this modal.</div>`,\n});\n```\n\n#### Option `onAppend(modal_node, trigger_node, event)`\n\n_Type:_ `Function`\n\nBy default, this library will append the modal node at the end of the body element via\n`document.body.appendChild(modal_node)`. The `onAppend` function let's you configure\nthis in case you want to inject the modal in some other location.\n\n```js\nyamodal({\n    onAppend(modal_node) {\n        // Prepend the modal in `<body>`\n        document.body.insertBefore(modal_node, document.body.firstChild);\n    }\n})\n```\n\nGets called with `modal_node`, `trigger_node`, and the delegated click `event` as arguments.\n\n#### Option `beforeInsertIntoDom(modal_node, trigger_node, event)`\n\n_Type:_ `Function`\n\nOptional callback that runs before the modal is inserted into the DOM. Additionally,\nprovides an opportunity to _bail early_ and prevent the modal from opening.\n\nIf `beforeInsertIntoDom` returns `false`, our trigger handler exits early before\ninjecting the modal into the DOM.\n\n```js\n// <a href=\"#\" data-modal-trigger disabled>I am a disabled trigger!</a>\nyamodal({\n    beforeInsertIntoDom(modal_node, trigger_node) {\n        if (trigger_node.hasAttribute('disabled')) {\n            // Prevent the modal from opening if the trigger is disabled!\n            return false;\n        }\n    }\n})\n```\n\nGets called with `modal_node`, `trigger_node`, and the delegated click `event` as arguments.\n\n#### Option `afterInsertIntoDom(modal_node, trigger_node, event)`\n\n_Type:_ `Function`\n\nOptional callback that runs after the modal is inserted into the DOM.\n\n```js\nyamodal({\n    template: () => `<div style=\"transition: opacity 1s; opacity: 0;\">...</div>`,\n    afterInsertIntoDom(modal_node) {\n        // Force layout calc (see https://gist.github.com/paulirish/5d52fb081b3570c81e3a)\n        void modal_node.clientHeight;\n        modal_node.style.opacity = '1';\n    }\n})\n```\n\nGets called with `modal_node`, `trigger_node`, and the delegated click `event` as arguments.\n\n#### Option `remove_modal_after_event_type`\n\n_Type:_ `String`\n\nWhen a string is passed to this option, the modal will listen for this event to be emitted\nfrom the modal node before it is removed from the DOM. Otherwise, the modal node is removed\nfrom the DOM immediately.\n\nThis is useful (read: needed) if we want to perform some CSS transition (like a fade out)\non the modal before it is removed.\n\nSome typical event types you might pass in here are `'transitionend'` and `'animationend'`.\n\n#### Option `beforeRemoveFromDom(modal_node, close_node, event)`\n\n_Type:_ `Function`\n\nOptional callback that runs before the modal is removed from the DOM. Additionally,\nprovides an opportunity to _bail early_ and prevent the modal from closing.\n\nIf `beforeRemoveFromDom` returns `false`, our close handler exits early before\nremoving the modal from the DOM.\n\n> Note: If you use this to fade out your modal, you'll want to pass\n> in a event in `remove_modal_after_event_type` (e.g., `'transitionend'`).\n> Otherwise, your modal will be removed from the DOM before its transition\n> is finished!\n\n```js\nyamodal({\n    template: () => `<div style=\"transition: opacity 1s;\">...</div>`,\n    remove_modal_after_event_type: 'transitionend',\n    beforeRemoveFromDom(modal_node) {\n        modal_node.style.opacity = '0';\n        // Force layout calc (see https://gist.github.com/paulirish/5d52fb081b3570c81e3a)\n        void modal_node.clientHeight;\n    },\n});\n```\n\nGets called with `modal_node`, `close_node`, and the delegated click `event` as arguments.\n\n#### Option `afterRemoveFromDom(modal_node, close_node, event)`\n\n_Type:_ `Function`\n\nOptional callback that runs after the modal is removed from the DOM.\n\n```js\nyamodal({\n    // Scroll-lock the page when the modal is opened\n    afterInsertIntoDom() {\n        document.body.style.overflow = 'hidden';\n    },\n    \n    // Undo the scroll-lock when the modal is closed\n    afterRemoveFromDom() {\n        document.body.style.overflow = '';\n    },\n})\n```\n\n#### Option `onAfterSetup(modal_node, { isOpen, open, close, destroy })`\n\n_Type:_ `Function`\n\nA convenience function that runs after all events listeners are initialized.\nExposes `isOpen()`, `open()`, `close()`, and `destroy()` methods.\n\n```js\n// Automatically open modal if a hash param '#open' is present\nyamodal({\n    onAfterSetup(modal_node, methods) {\n        if (window.location.hash === '#open') {\n            methods.open();\n        }\n    },\n})\n```\n\nNote that this is just offered as a convenience. Often times, identical functionality\ncan be achieved by using the _return_ object from the `yamodal` call.\n\n```js\n// This gives the same functionality as the above `onAfterSetup` option\nlet my_modal = yamodal({ ... });\nif (window.location.hash === '#open') {\n    my_modal.open();\n}\n```\n\nCalled with two arguments, `modal_node` and an object that contains `isOpen()`,\n`open()`, `close()`, and `destroy()` methods. See the below section on\n[return values](#return-value) for more information on these methods.\n\n#### Option `onDestroy(modal_node)`\n\n_Type:_ `Function`\n\nThe `yamodal()` function returns an object with a [`destroy()`](#return-destroy)\nmethod to remove the event listeners we had previously set.\n\nIf `onDestroy` is also set, that is called at the end of running `destroy()`.\n\n```js\n// Close modal on ESC press\nlet closeModalOnEscPress;\nyamodal({\n    template: closeOnEscape,\n    trigger_selector: '[data-modal-trigger=\"close-on-esc\"]',\n    onAfterSetup(modal_node, { isOpen, close }) {\n        closeModalOnEscPress = function (e) {\n            // ESC_KEY === 27\n            if (e.keyCode === 27 && isOpen()) {\n                e.stopPropagation();\n                close();\n            }\n        };\n        document.addEventListener('keydown', closeModalOnEscPress);\n    },\n\n    // Clean up the 'keydown' listener if this modal is destroyed\n    onDestroy() {\n        document.removeEventListener('keydown', closeModalOnEscPress);\n    },\n});\n```\n\nGets called with `modal_node` as its only argument.\n\n### Return Value\n\nRunning `yamodal()` returns an object with several attributes for later use. They\ninclude:\n\n#### Return `modal_node`\n\n_Type:_ `Element`\n\nThis is the DOM node that was created by running your `template`.\n\n> Note, technically this is a [getter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get)\n> function since our modal could be recreated if we pass in a context function.\n\n#### Return `isOpen()`\n\n_Type:_ `Function`\n\nWhen `isOpen()` is run, it returns `true` if the current modal is open, `false` if otherwise.\n\n#### Return `open(event = new CustomEvent('open.yamodal'))`\n\n_Type:_ `Function`\n\nWhen `open()` is run it triggers the same handler that runs when a trigger is clicked.\nThis means that any `beforeInsertIntoDom`, `onAppend`, or `afterInsertIntoDom`\nfunctions will also run.\n\nSince usually the modal is opened by a click event, programmatic openings have a\n\"placeholder\" event passed in. This event will have a type of `'open.yamodal'`.\nOptionally, you can send your own custom event to the open handler.\n\n```js\n// Automatically open our modal after a 1 second delay\nvar my_modal = yamodal({ ... });\nsetTimeout(() => my_modal.open(), 1000);\n```\n\n#### Return `close(event = new CustomEvent('close.yamodal'))`\n\n_Type:_ `Function`\n\nWhen `close()` is run it triggers the same handler that runs when a close element is clicked.\nThis means that any `beforeRemoveFromDom`, or `afterRemoveFromDom` functions will also run.\n\nSince the modal is usually closed by a click event, programmatic closings have a\n\"placeholder\" event passed in. This event will have a type of `'close.yamodal'`.\nOptionally, you can send your own custom event to the close handler.\n\n#### Return `destroy()`\n\n_Type:_ `Function`\n\nWhen `destroy()` is run it closes the modal (if it is opened) and removes the\nopen and close event listeners and unsets our modal node. Also calls `onDestroy()`\nif that was set on initialization.\n\n```js\n// <button data-modal-trigger>Open Modal</button> <button data-modal-destroy>Destroy Modal</button>\nvar my_modal = yamodal({ ... });\nvar destroy_button = document.querySelector('[data-modal-destroy]');\ndestroy_button.addEventListener('click', function() {\n    my_modal.destroy();\n});\n```\n\n### Examples\n\nSee [examples.js](./examples/examples.js) (published at\n[designory.github.io/yamodal/](https://designory.github.io/yamodal/) as well)\nfor a list of common \"advanced\" modal uses, such as:\n\n- Fade in / out.\n- Animate in / out.\n- Scroll lock background.\n- Close on click outside.\n- Close on `ESC` key press.\n- Dynamic modal (from context).\n- Auto open based on some condition (hash parameter in URL).\n- Interstitial before navigating to a link.\n\n## Browser Support\n\nShould work on IE 10, and all modern browsers.\n\n## License\n\n[MIT](./LICENSE)\n","readmeFilename":"README.md","homepage":"https://designory.github.io/yamodal/","repository":{"type":"git","url":"git+https://github.com/Designory/yamodal.git"},"bugs":{"url":"https://github.com/Designory/yamodal/issues"}}