{"_id":"@deeby/dottmoon-media-dropzone","_rev":"13-bffe509feaaf87bf108271f2fd01d8cf","name":"@deeby/dottmoon-media-dropzone","dist-tags":{"latest":"1.0.0"},"versions":{"0.0.1":{"name":"@deeby/dottmoon-media-dropzone","version":"0.0.1","keywords":["angular","file-upload","drag-drop","paste","image-upload","video-upload","dropzone","angular-21"],"license":"MIT","_id":"@deeby/dottmoon-media-dropzone@0.0.1","maintainers":[{"name":"deeby","email":"thisisdeeby@gmail.com"}],"homepage":"https://github.com/deeby/dottmoon-media-dropzone#readme","bugs":{"url":"https://github.com/deeby/dottmoon-media-dropzone/issues"},"dist":{"shasum":"79bf8a9b3727d11ec0db6e3d7c0e3afee6b12eaf","tarball":"https://registry.npmjs.org/@deeby/dottmoon-media-dropzone/-/dottmoon-media-dropzone-0.0.1.tgz","fileCount":17,"integrity":"sha512-/6YkpsjkF/2Epayn7/kxjpaOlaHlm5aIQ3O5E0SXiuwQNbNXYe69C6+X/+FOI19ULtXpzqirJ1U82FD2tlny+Q==","signatures":[{"sig":"MEYCIQDqNHIlBnl8J+CMVHvUn7wVQGc0vnwfrwrAawlxitJlVgIhAMytqRYZX8/roLtvOrA28RizVB58nACbmmfgexIXa5Gp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41570},"_npmUser":{"name":"deeby","email":"thisisdeeby@gmail.com"},"repository":{"url":"git+https://github.com/deeby/dottmoon-media-dropzone.git","type":"git"},"_npmVersion":"10.9.3","description":"A standalone Angular library for file uploads with drag & drop, paste, and configurable validation for images, videos, and more","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":"^21.1.0","@angular/common":"^21.1.0"},"_npmOperationalInternal":{"tmp":"tmp/dottmoon-media-dropzone_0.0.1_1770923740953_0.009181297397585109","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@deeby/dottmoon-media-dropzone","version":"0.0.2","keywords":["angular","file-upload","drag-drop","paste","image-upload","video-upload","dropzone","angular-21"],"license":"MIT","_id":"@deeby/dottmoon-media-dropzone@0.0.2","maintainers":[{"name":"deeby","email":"thisisdeeby@gmail.com"}],"homepage":"https://github.com/deeby/dottmoon-media-dropzone#readme","bugs":{"url":"https://github.com/deeby/dottmoon-media-dropzone/issues"},"dist":{"shasum":"7b7ea417b110cc8ed75a0f772b2ba8fa0b15bd89","tarball":"https://registry.npmjs.org/@deeby/dottmoon-media-dropzone/-/dottmoon-media-dropzone-0.0.2.tgz","fileCount":5,"integrity":"sha512-xuFXKedqRKBqPF+QPyqp7moYoWlDsCLY+RwpZdawuWTO15VplkQOlAu5fC9rmzcxR6T8MAmSvr3VszFzARyb3A==","signatures":[{"sig":"MEYCIQC5B1vORqLbbZ8oflQFgDfFFQGr0rhztiSUadS911VIQQIhAMiUmXP4hVDZI6kxg62fq7WBvx6Np88HxjRQv1zIqStr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":109117},"module":"fesm2022/deeby-dottmoon-media-dropzone.mjs","exports":{".":{"types":"./types/deeby-dottmoon-media-dropzone.d.ts","default":"./fesm2022/deeby-dottmoon-media-dropzone.mjs"},"./package.json":{"default":"./package.json"}},"typings":"types/deeby-dottmoon-media-dropzone.d.ts","_npmUser":{"name":"deeby","email":"thisisdeeby@gmail.com"},"repository":{"url":"git+https://github.com/deeby/dottmoon-media-dropzone.git","type":"git"},"_npmVersion":"10.9.3","description":"A standalone Angular library for file uploads with drag & drop, paste, and configurable validation for images, videos, and more","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":"^21.1.0","@angular/common":"^21.1.0"},"_npmOperationalInternal":{"tmp":"tmp/dottmoon-media-dropzone_0.0.2_1770924519447_0.07591064626951138","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@deeby/dottmoon-media-dropzone","version":"0.0.3","keywords":["angular","file-upload","drag-drop","paste","image-upload","video-upload","dropzone","angular-21"],"license":"MIT","_id":"@deeby/dottmoon-media-dropzone@0.0.3","maintainers":[{"name":"deeby","email":"thisisdeeby@gmail.com"}],"homepage":"https://github.com/deeby/dottmoon-media-dropzone#readme","bugs":{"url":"https://github.com/deeby/dottmoon-media-dropzone/issues"},"dist":{"shasum":"ff93ee16872189b6e477e403ff3a2fcf204cc666","tarball":"https://registry.npmjs.org/@deeby/dottmoon-media-dropzone/-/dottmoon-media-dropzone-0.0.3.tgz","fileCount":17,"integrity":"sha512-sm72WkYUSH/RNTipjRBr7QpLc3hm5zGh5NZSRPA1+QSJdJV6r1P2fZeeCO87O3pLdFIou9r/06ukH1KIJ3xE5A==","signatures":[{"sig":"MEUCIQCqNa7tC0B8sEMYHsO59gmce68htaV4EI0gtoUvLpLfeQIgR9sCjxcXuXA6SZFt2CGc4xNduPXVMRjgWYO6GnFW2iU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41571},"_npmUser":{"name":"deeby","email":"thisisdeeby@gmail.com"},"repository":{"url":"git+https://github.com/deeby/dottmoon-media-dropzone.git","type":"git"},"_npmVersion":"10.9.3","description":"A standalone Angular library for file uploads with drag & drop, paste, and configurable validation for images, videos, and more","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":"^21.1.0","@angular/common":"^21.1.0"},"_npmOperationalInternal":{"tmp":"tmp/dottmoon-media-dropzone_0.0.3_1770924905372_0.24699330087311622","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@deeby/dottmoon-media-dropzone","version":"0.0.4","keywords":["angular","file-upload","drag-drop","paste","image-upload","video-upload","dropzone","angular-21"],"license":"MIT","_id":"@deeby/dottmoon-media-dropzone@0.0.4","maintainers":[{"name":"deeby","email":"thisisdeeby@gmail.com"}],"homepage":"https://github.com/deeby/dottmoon-media-dropzone#readme","bugs":{"url":"https://github.com/deeby/dottmoon-media-dropzone/issues"},"dist":{"shasum":"0d899fb4b0a9b3356feb0012a870f20ab3419b7e","tarball":"https://registry.npmjs.org/@deeby/dottmoon-media-dropzone/-/dottmoon-media-dropzone-0.0.4.tgz","fileCount":5,"integrity":"sha512-DHK0GzurPhue7FzXk7LmcsUsb47a4jVa07lXXA1W9p903f2FqAb5FYWkTud9KY+R+/tSJzzlEDVwU1oXB2f8eg==","signatures":[{"sig":"MEQCIAmYKelCxC4E3f2CNsOtPHbXfZNdlUEVKzbmeaobzev0AiAc8GvTIymJcuTgHSBKZQAaCyCLxvaGjNIYrwDjvdbLaw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":109119},"module":"fesm2022/deeby-dottmoon-media-dropzone.mjs","exports":{".":{"types":"./types/deeby-dottmoon-media-dropzone.d.ts","default":"./fesm2022/deeby-dottmoon-media-dropzone.mjs"},"./package.json":{"default":"./package.json"}},"typings":"types/deeby-dottmoon-media-dropzone.d.ts","_npmUser":{"name":"deeby","email":"thisisdeeby@gmail.com"},"repository":{"url":"git+https://github.com/deeby/dottmoon-media-dropzone.git","type":"git"},"_npmVersion":"10.9.3","description":"A standalone Angular library for file uploads with drag & drop, paste, and configurable validation for images, videos, and more","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":"^21.1.0","@angular/common":"^21.1.0"},"_npmOperationalInternal":{"tmp":"tmp/dottmoon-media-dropzone_0.0.4_1770925677706_0.8218393366300965","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@deeby/dottmoon-media-dropzone","version":"0.0.5","keywords":["angular","file-upload","drag-drop","paste","image-upload","video-upload","dropzone","angular-21"],"license":"MIT","_id":"@deeby/dottmoon-media-dropzone@0.0.5","maintainers":[{"name":"deeby","email":"thisisdeeby@gmail.com"}],"homepage":"https://github.com/deeby/dottmoon-media-dropzone#readme","bugs":{"url":"https://github.com/deeby/dottmoon-media-dropzone/issues"},"dist":{"shasum":"6b685144dfd020c03c4a54b0bf1a6162c664554b","tarball":"https://registry.npmjs.org/@deeby/dottmoon-media-dropzone/-/dottmoon-media-dropzone-0.0.5.tgz","fileCount":5,"integrity":"sha512-ea5yK3UmDEevZnvuia6ga0YmQXdvk7WYIEoPYpBzccrD0+tLSEjMDlVLdZXinlJS0YMP37qpdFqX4++tZHdGxg==","signatures":[{"sig":"MEUCICQntzO7cLhFAFdp/vt5evb8nC2HE/NMf917AIDU0sejAiEAm6XzOMRzILda7rYcqPFbjpq2NX83v22hdSmd2F0xI3Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":111761},"module":"fesm2022/deeby-dottmoon-media-dropzone.mjs","exports":{".":{"types":"./types/deeby-dottmoon-media-dropzone.d.ts","default":"./fesm2022/deeby-dottmoon-media-dropzone.mjs"},"./package.json":{"default":"./package.json"}},"typings":"types/deeby-dottmoon-media-dropzone.d.ts","_npmUser":{"name":"deeby","email":"thisisdeeby@gmail.com"},"repository":{"url":"git+https://github.com/deeby/dottmoon-media-dropzone.git","type":"git"},"_npmVersion":"10.9.3","description":"A standalone Angular library for file uploads with drag & drop, paste, and configurable validation for images, videos, and more","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":"^21.1.0","@angular/common":"^21.1.0"},"_npmOperationalInternal":{"tmp":"tmp/dottmoon-media-dropzone_0.0.5_1770926761884_0.5630708688136523","host":"s3://npm-registry-packages-npm-production"}},"0.0.6":{"name":"@deeby/dottmoon-media-dropzone","version":"0.0.6","keywords":["angular","file-upload","drag-drop","paste","image-upload","video-upload","dropzone","angular-21"],"license":"MIT","_id":"@deeby/dottmoon-media-dropzone@0.0.6","maintainers":[{"name":"deeby","email":"thisisdeeby@gmail.com"}],"homepage":"https://github.com/deebyy/dottmoon-media-dropzone#readme","bugs":{"url":"https://github.com/deebyy/dottmoon-media-dropzone/issues"},"dist":{"shasum":"6e3abf1465a7e42d8368f52bc1e99a849e985234","tarball":"https://registry.npmjs.org/@deeby/dottmoon-media-dropzone/-/dottmoon-media-dropzone-0.0.6.tgz","fileCount":5,"integrity":"sha512-SDC1JaWVC4y175TSG289CHuzhL3mbJ0aPlPuF5v4A9b+A19hn1reJxIVGGpisqAOZdmAbEnrjSiC1NS1Nlo7dg==","signatures":[{"sig":"MEUCIQC9Zxtd/x37uhl0EQHxJtBuB5dn3dGa6TAaL58t6hgHgwIgV+uGPYG8ppBSk4aO7QZTajtTMgtg7QuixaapzdYxXrs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":111766},"module":"fesm2022/deeby-dottmoon-media-dropzone.mjs","exports":{".":{"types":"./types/deeby-dottmoon-media-dropzone.d.ts","default":"./fesm2022/deeby-dottmoon-media-dropzone.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"f440f5dd98b3ce694366fa201be0762ac097fc2f","typings":"types/deeby-dottmoon-media-dropzone.d.ts","_npmUser":{"name":"deeby","email":"thisisdeeby@gmail.com"},"repository":{"url":"git+https://github.com/deebyy/dottmoon-media-dropzone.git","type":"git"},"_npmVersion":"10.9.3","description":"A standalone Angular library for file uploads with drag & drop, paste, and configurable validation for images, videos, and more","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":"^21.1.0","@angular/common":"^21.1.0"},"_npmOperationalInternal":{"tmp":"tmp/dottmoon-media-dropzone_0.0.6_1770928227951_0.7717808895913623","host":"s3://npm-registry-packages-npm-production"}},"0.0.7":{"name":"@deeby/dottmoon-media-dropzone","version":"0.0.7","keywords":["angular","file-upload","drag-drop","paste","image-upload","video-upload","dropzone","angular-21"],"license":"MIT","_id":"@deeby/dottmoon-media-dropzone@0.0.7","maintainers":[{"name":"deeby","email":"thisisdeeby@gmail.com"}],"homepage":"https://github.com/deebyy/dottmoon-media-dropzone#readme","bugs":{"url":"https://github.com/deebyy/dottmoon-media-dropzone/issues"},"dist":{"shasum":"b22473c45135248749f2d9c6d621e808c6dc6d96","tarball":"https://registry.npmjs.org/@deeby/dottmoon-media-dropzone/-/dottmoon-media-dropzone-0.0.7.tgz","fileCount":5,"integrity":"sha512-I0fuAwAoJLkjeUtc2XeGPBVdZXG466WIv/ds0RiPFFmKBv20BvuPDZULrUZ3NmjOY8EVO/p8r+Y980zFqjKkYQ==","signatures":[{"sig":"MEUCIHbzlOPsY2Ks41jodUSfsAd3NZW4aLR1ldTXMuNu5RIeAiEAvQhQ8B8qztvygpJh/L3CVpRnQzMiPIxm3+UJa1WAAb0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":115346},"module":"fesm2022/deeby-dottmoon-media-dropzone.mjs","exports":{".":{"types":"./types/deeby-dottmoon-media-dropzone.d.ts","default":"./fesm2022/deeby-dottmoon-media-dropzone.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"9226328ebab54a5150c1284719d0f8602701ae72","typings":"types/deeby-dottmoon-media-dropzone.d.ts","_npmUser":{"name":"deeby","email":"thisisdeeby@gmail.com"},"repository":{"url":"git+https://github.com/deebyy/dottmoon-media-dropzone.git","type":"git"},"_npmVersion":"10.9.3","description":"A standalone Angular library for file uploads with drag & drop, paste, and configurable validation for images, videos, and more","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":"^21.1.0","@angular/common":"^21.1.0"},"_npmOperationalInternal":{"tmp":"tmp/dottmoon-media-dropzone_0.0.7_1770969768276_0.6829734460709729","host":"s3://npm-registry-packages-npm-production"}},"0.0.8":{"name":"@deeby/dottmoon-media-dropzone","version":"0.0.8","keywords":["angular","file-upload","drag-drop","paste","image-upload","video-upload","dropzone","angular-21"],"license":"MIT","_id":"@deeby/dottmoon-media-dropzone@0.0.8","maintainers":[{"name":"deeby","email":"thisisdeeby@gmail.com"}],"homepage":"https://github.com/deebyy/dottmoon-media-dropzone#readme","bugs":{"url":"https://github.com/deebyy/dottmoon-media-dropzone/issues"},"dist":{"shasum":"fd6722c174f4bc4ae80fc066f5d30ecbdc27ef86","tarball":"https://registry.npmjs.org/@deeby/dottmoon-media-dropzone/-/dottmoon-media-dropzone-0.0.8.tgz","fileCount":5,"integrity":"sha512-etKsyGgsHVkvkXMJjIvbomWF7SnqHxPk/87UmdmpNwTkap5LBhxJhPjRu7MsFaIx7SOCIGhFeCCSpmdzKgoVng==","signatures":[{"sig":"MEUCIQD0TjJsF3FfhioP3oWYqQ+twEVQoQZGaBgLSMPo/9YdNgIgCe8SWvh+POqD87YmBGD4LXyK5IYOZ/y2Wm42dkQ6EsU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":115346},"module":"fesm2022/deeby-dottmoon-media-dropzone.mjs","exports":{".":{"types":"./types/deeby-dottmoon-media-dropzone.d.ts","default":"./fesm2022/deeby-dottmoon-media-dropzone.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"9056207c53b1e51152f29e2e355ee191fd60ef04","typings":"types/deeby-dottmoon-media-dropzone.d.ts","_npmUser":{"name":"deeby","email":"thisisdeeby@gmail.com"},"repository":{"url":"git+https://github.com/deebyy/dottmoon-media-dropzone.git","type":"git"},"_npmVersion":"10.9.3","description":"A standalone Angular library for file uploads with drag & drop, paste, and configurable validation for images, videos, and more","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":"^21.1.0","@angular/common":"^21.1.0"},"_npmOperationalInternal":{"tmp":"tmp/dottmoon-media-dropzone_0.0.8_1770972488361_0.8622083602571724","host":"s3://npm-registry-packages-npm-production"}},"0.0.9":{"name":"@deeby/dottmoon-media-dropzone","version":"0.0.9","keywords":["angular","file-upload","drag-drop","paste","image-upload","video-upload","dropzone","angular-21"],"license":"MIT","_id":"@deeby/dottmoon-media-dropzone@0.0.9","maintainers":[{"name":"deeby","email":"thisisdeeby@gmail.com"}],"homepage":"https://github.com/deebyy/dottmoon-media-dropzone#readme","bugs":{"url":"https://github.com/deebyy/dottmoon-media-dropzone/issues"},"dist":{"shasum":"99f2c880dab645cf52c6714385fbd16dd640b31e","tarball":"https://registry.npmjs.org/@deeby/dottmoon-media-dropzone/-/dottmoon-media-dropzone-0.0.9.tgz","fileCount":5,"integrity":"sha512-vl7wDYHPE/lGLBbCEyldWxOh5CqGnQzEr3yHJ+1W6BS7Bh0YafsakVD005DfOrMqSKm1xACEEBK8pEibuhIeqQ==","signatures":[{"sig":"MEUCICAbjsPSgWkRtONjRT07Qx2+k5BE7Y/CISdAQQkAe2YwAiEAqNwPR78wzVwEeaBqXAFsAClKzhI7VbQkMYplpgTUegI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":215858},"module":"fesm2022/deeby-dottmoon-media-dropzone.mjs","exports":{".":{"types":"./types/deeby-dottmoon-media-dropzone.d.ts","default":"./fesm2022/deeby-dottmoon-media-dropzone.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"ea49a777ad6ecd84a25cd3b157091318a17fc913","typings":"types/deeby-dottmoon-media-dropzone.d.ts","_npmUser":{"name":"deeby","email":"thisisdeeby@gmail.com"},"repository":{"url":"git+https://github.com/deebyy/dottmoon-media-dropzone.git","type":"git"},"_npmVersion":"10.9.3","description":"A standalone Angular library for file uploads with drag & drop, paste, and configurable validation for images, videos, and more","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":"^21.1.0","@angular/common":"^21.1.0"},"_npmOperationalInternal":{"tmp":"tmp/dottmoon-media-dropzone_0.0.9_1771264942759_0.18022533315768152","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@deeby/dottmoon-media-dropzone","version":"0.10.0","keywords":["angular","file-upload","drag-drop","paste","image-upload","video-upload","dropzone","angular-21"],"license":"MIT","_id":"@deeby/dottmoon-media-dropzone@0.10.0","maintainers":[{"name":"deeby","email":"thisisdeeby@gmail.com"}],"homepage":"https://github.com/deebyy/dottmoon-media-dropzone#readme","bugs":{"url":"https://github.com/deebyy/dottmoon-media-dropzone/issues"},"dist":{"shasum":"1598a2a3c9b9b36737af6856b24185facc4d24a6","tarball":"https://registry.npmjs.org/@deeby/dottmoon-media-dropzone/-/dottmoon-media-dropzone-0.10.0.tgz","fileCount":5,"integrity":"sha512-FrYxSBHNpi+0jdFlDJvV0at89K4of0aQVhqOrPQXS7ZR8M5oMxRU+fONTafvQj6UvZOXhQftqWMGjgqmhXDZWw==","signatures":[{"sig":"MEQCIGVhGS7MOseHbs/ZTFPlyDAOkt56NDsjTu2WIW64bbcKAiBZJsrmou9bpNeQRwOvvyfqiV7XVJzfO25bREC9IYUEtw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":219785},"module":"fesm2022/deeby-dottmoon-media-dropzone.mjs","exports":{".":{"types":"./types/deeby-dottmoon-media-dropzone.d.ts","default":"./fesm2022/deeby-dottmoon-media-dropzone.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"ea49a777ad6ecd84a25cd3b157091318a17fc913","typings":"types/deeby-dottmoon-media-dropzone.d.ts","_npmUser":{"name":"deeby","email":"thisisdeeby@gmail.com"},"repository":{"url":"git+https://github.com/deebyy/dottmoon-media-dropzone.git","type":"git"},"_npmVersion":"10.9.3","description":"A standalone Angular library for file uploads with drag & drop, paste, and configurable validation for images, videos, and more","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":"^21.1.0","@angular/common":"^21.1.0"},"_npmOperationalInternal":{"tmp":"tmp/dottmoon-media-dropzone_0.10.0_1771265380714_0.5774374333442012","host":"s3://npm-registry-packages-npm-production"}},"0.10.1":{"name":"@deeby/dottmoon-media-dropzone","version":"0.10.1","keywords":["angular","file-upload","drag-drop","paste","image-upload","video-upload","dropzone","angular-21"],"license":"MIT","_id":"@deeby/dottmoon-media-dropzone@0.10.1","maintainers":[{"name":"deeby","email":"thisisdeeby@gmail.com"}],"homepage":"https://github.com/deebyy/dottmoon-media-dropzone#readme","bugs":{"url":"https://github.com/deebyy/dottmoon-media-dropzone/issues"},"dist":{"shasum":"9ccd69ca06cc9f97d0c5ec100db10fbe9868d70d","tarball":"https://registry.npmjs.org/@deeby/dottmoon-media-dropzone/-/dottmoon-media-dropzone-0.10.1.tgz","fileCount":5,"integrity":"sha512-vDcDZQbxMUnr2HWFALvJXbmbcF427AkgaEDRfjWneNN3U4tdRFtqhr5XqkzXGlGahX+dxF0CCw14cV8HsgrPUg==","signatures":[{"sig":"MEYCIQCHktp9ycHGx+gNBGsz4j/QZURnvImZ2wzOb+m5xwvlhQIhAO++Ic7tYlVPLRrpQxepYO1dLpbIKHNSRTdBYk4iqdw2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":219869},"module":"fesm2022/deeby-dottmoon-media-dropzone.mjs","exports":{".":{"types":"./types/deeby-dottmoon-media-dropzone.d.ts","default":"./fesm2022/deeby-dottmoon-media-dropzone.mjs"},"./package.json":{"default":"./package.json"}},"gitHead":"ea49a777ad6ecd84a25cd3b157091318a17fc913","typings":"types/deeby-dottmoon-media-dropzone.d.ts","_npmUser":{"name":"deeby","email":"thisisdeeby@gmail.com"},"repository":{"url":"git+https://github.com/deebyy/dottmoon-media-dropzone.git","type":"git"},"_npmVersion":"10.9.3","description":"A standalone Angular library for file uploads with drag & drop, paste, and configurable validation for images, videos, and more","directories":{},"sideEffects":false,"_nodeVersion":"22.19.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"peerDependencies":{"@angular/core":"^21.1.0","@angular/common":"^21.1.0"},"_npmOperationalInternal":{"tmp":"tmp/dottmoon-media-dropzone_0.10.1_1771266798513_0.4807742352404427","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@deeby/dottmoon-media-dropzone","version":"1.0.0","description":"A standalone Angular library for file uploads with drag & drop, paste, and configurable validation for images, videos, and more","keywords":["angular","file-upload","drag-drop","paste","image-upload","video-upload","dropzone","angular-21"],"repository":{"type":"git","url":"git+https://github.com/deebyy/dottmoon-media-dropzone.git"},"license":"MIT","peerDependencies":{"@angular/common":"^21.1.0","@angular/core":"^21.1.0"},"dependencies":{"tslib":"^2.3.0"},"sideEffects":false,"module":"fesm2022/deeby-dottmoon-media-dropzone.mjs","typings":"types/deeby-dottmoon-media-dropzone.d.ts","exports":{"./package.json":{"default":"./package.json"},".":{"types":"./types/deeby-dottmoon-media-dropzone.d.ts","default":"./fesm2022/deeby-dottmoon-media-dropzone.mjs"}},"_id":"@deeby/dottmoon-media-dropzone@1.0.0","gitHead":"dc18004c27e6685aa656c813f98527526a61921c","bugs":{"url":"https://github.com/deebyy/dottmoon-media-dropzone/issues"},"homepage":"https://github.com/deebyy/dottmoon-media-dropzone#readme","_nodeVersion":"22.19.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-X0C54H+lYT3cZM9Vsep5XRLO9yjcfdY7OIfixEQT1ljPM2Q++dKPoyGDP3rU+sYrOKGtUIYuJeUE+wFNL3VVoA==","shasum":"c6797556ab623f2437c051f1717746489beaf1f5","tarball":"https://registry.npmjs.org/@deeby/dottmoon-media-dropzone/-/dottmoon-media-dropzone-1.0.0.tgz","fileCount":5,"unpackedSize":213001,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFlOag4efMrQdoN8oFaLAZqr4lJNO1aGTMCypj53/ASOAiEArOpsZYkvVaj5oeqLMsfSBDb7edwpvgzfI80X9elb/1g="}]},"_npmUser":{"name":"deebyy","email":"thisisdeeby@gmail.com"},"directories":{},"maintainers":[{"name":"deebyy","email":"thisisdeeby@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dottmoon-media-dropzone_1.0.0_1775907872717_0.7441611769820722"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-12T19:15:40.855Z","modified":"2026-04-11T11:44:32.966Z","0.0.1":"2026-02-12T19:15:41.091Z","0.0.2":"2026-02-12T19:28:39.594Z","0.0.3":"2026-02-12T19:35:05.530Z","0.0.4":"2026-02-12T19:47:57.859Z","0.0.5":"2026-02-12T20:06:02.037Z","0.0.6":"2026-02-12T20:30:28.100Z","0.0.7":"2026-02-13T08:02:48.418Z","0.0.8":"2026-02-13T08:48:08.503Z","0.0.9":"2026-02-16T18:02:22.913Z","0.10.0":"2026-02-16T18:09:40.928Z","0.10.1":"2026-02-16T18:33:18.780Z","1.0.0":"2026-04-11T11:44:32.851Z"},"bugs":{"url":"https://github.com/deebyy/dottmoon-media-dropzone/issues"},"license":"MIT","homepage":"https://github.com/deebyy/dottmoon-media-dropzone#readme","keywords":["angular","file-upload","drag-drop","paste","image-upload","video-upload","dropzone","angular-21"],"repository":{"type":"git","url":"git+https://github.com/deebyy/dottmoon-media-dropzone.git"},"description":"A standalone Angular library for file uploads with drag & drop, paste, and configurable validation for images, videos, and more","maintainers":[{"name":"deebyy","email":"thisisdeeby@gmail.com"}],"readme":"# @deeby/dottmoon-media-dropzone\n\nA standalone Angular 21+ library for file uploads with **drag & drop**, **paste from clipboard**, and **click-to-browse** functionality. Includes built-in validation, preview generation, image cropping, and full Reactive Forms support.\n\n[![npm version](https://img.shields.io/npm/v/@deeby/dottmoon-media-dropzone.svg)](https://www.npmjs.com/package/@deeby/dottmoon-media-dropzone)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n\n## Features\n\n- **Drag & Drop** — Visual drop zone with hover feedback\n- **Paste from Clipboard** — Ctrl+V/Cmd+V to paste images directly\n- **Click to Browse** — Traditional file picker support\n- **Image Crop & Rotate** — Interactive canvas-based crop tool with edge + corner handles, rule-of-thirds grid, cursor feedback, and live dimension display\n- **Multi-file Support** — Single or multiple file uploads\n- **Auto Previews** — Image and video thumbnails\n- **File Validation** — Type, size, dimensions, and duration checks\n- **Reactive Forms** — Full `ControlValueAccessor` implementation\n- **Theming** — Full CSS custom property theming (light, dark, brand)\n- **i18n Ready** — Fully customizable labels\n- **Tree-shakeable** — ESM modules for optimal bundle size\n- **Angular 21 Best Practices** — Signal-based inputs/outputs, `inject()`, `viewChild()`, OnPush change detection\n\n---\n\n## Installation\n\n```bash\nnpm install @deeby/dottmoon-media-dropzone\n```\n\n**Requirements:** Angular 21+\n\n---\n\n## Quick Start\n\n### Basic Usage\n\n```typescript\nimport { Component } from '@angular/core';\nimport { MediaDropzoneComponent, MediaFile } from '@deeby/dottmoon-media-dropzone';\n\n@Component({\n  selector: 'app-upload',\n  imports: [MediaDropzoneComponent],\n  template: `\n    <lib-media-dropzone\n      [config]=\"uploadConfig\"\n      (filesSelected)=\"onFilesSelected($event)\"\n    />\n  `\n})\nexport class UploadComponent {\n  uploadConfig = {\n    accept: 'image/*',\n    maxFileSize: 5_000_000,\n    showPreview: true\n  };\n\n  onFilesSelected(files: MediaFile[]) {\n    console.log('Selected files:', files);\n  }\n}\n```\n\n### Reactive Forms Integration\n\n```typescript\nimport { Component } from '@angular/core';\nimport { FormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MediaDropzoneComponent, MediaFile } from '@deeby/dottmoon-media-dropzone';\n\n@Component({\n  selector: 'app-form',\n  imports: [ReactiveFormsModule, MediaDropzoneComponent],\n  template: `\n    <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n      <lib-media-dropzone\n        formControlName=\"profileImage\"\n        [config]=\"uploadConfig\"\n      />\n      <button type=\"submit\" [disabled]=\"form.invalid\">Submit</button>\n    </form>\n  `\n})\nexport class FormComponent {\n  private fb = new FormBuilder();\n\n  form = this.fb.group({\n    username: ['', Validators.required],\n    profileImage: [null, Validators.required]\n  });\n\n  uploadConfig = {\n    accept: 'image/*',\n    maxFileSize: 10_000_000,\n    showPreview: true\n  };\n\n  onSubmit() {\n    if (this.form.valid) {\n      const mediaFile = this.form.value.profileImage as MediaFile;\n      console.log('Form data:', this.form.value);\n    }\n  }\n}\n```\n\n---\n\n## API Reference\n\n### Component Selector\n\n```html\n<lib-media-dropzone />\n```\n\n### Inputs\n\n| Input | Type | Description |\n|-------|------|-------------|\n| `config` | `Partial<MediaDropzoneConfig>` | Configuration object (all properties optional) |\n\n### Outputs\n\n| Output | Type | Description |\n|--------|------|-------------|\n| `filesSelected` | `MediaFile[]` | Emits when files are selected (after validation) |\n| `fileRemoved` | `MediaFile` | Emits when a file is removed |\n| `validationError` | `string[]` | Emits validation error messages |\n\n---\n\n## Configuration Options\n\n### MediaDropzoneConfig\n\n```typescript\ninterface MediaDropzoneConfig {\n  // File Type Configuration\n  accept?: string;              // MIME types (e.g., 'image/*,video/*')\n  allowedExtensions?: string[]; // Specific extensions (e.g., ['.jpg', '.png'])\n\n  // Size Limits\n  maxFileSize?: number;         // Max file size in bytes (default: 10MB)\n  maxTotalSize?: number;        // Total size limit for all files combined\n  maxFiles?: number;            // Max number of files (default: 1)\n\n  // Image Validation\n  maxImageWidth?: number;       // Max width in pixels\n  maxImageHeight?: number;      // Max height in pixels\n\n  // Crop & Rotation\n  enableCrop?: boolean;         // Enable crop modal for images (default: false)\n  cropAspectRatio?: number;     // Lock aspect ratio (e.g., 16/9, 1, 4/3)\n  cropOutputWidth?: number;     // Final output width after crop\n  cropOutputHeight?: number;    // Final output height after crop\n  enableRotation?: boolean;     // Enable 90 deg rotation in crop modal (default: true)\n\n  // Video Validation\n  maxVideoDuration?: number;    // Max duration in seconds\n\n  // Features\n  enableDragDrop?: boolean;     // Enable drag & drop (default: true)\n  enablePaste?: boolean;        // Enable paste from clipboard (default: true)\n  enableClick?: boolean;        // Enable click to browse (default: true)\n\n  // Display Options\n  showPreview?: boolean;        // Show file previews (default: true)\n  showFileSize?: boolean;       // Show file size (default: true)\n  showProgressBar?: boolean;    // Show progress bar (default: true)\n\n  // Output Format\n  outputFormat?: 'file' | 'base64' | 'both'; // Default: 'both'\n\n  // Internationalization\n  labels?: Partial<MediaDropzoneLabels>;\n}\n```\n\n### Output Formats\n\n- **`'file'`** — Returns native `File` objects\n- **`'base64'`** — Returns base64-encoded preview strings\n- **`'both'`** (default) — Returns `MediaFile` objects with both\n\n### MediaFile Interface\n\n```typescript\ninterface MediaFile {\n  id: string;                          // Unique identifier\n  file: File;                          // Original File object\n  preview?: string;                    // Base64 preview URL\n  type: 'image' | 'video' | 'other';  // Detected file type\n  isValid: boolean;                    // Validation result\n  errors: string[];                    // Validation error messages\n  progress: number;                    // Upload progress (0-100)\n}\n```\n\n### MediaDropzoneLabels (i18n)\n\n```typescript\ninterface MediaDropzoneLabels {\n  dropHere: string;              // \"Drop files here\"\n  orClickToUpload: string;       // \"or click to upload\"\n  chooseFiles: string;           // \"Choose Files\"\n  removeFile: string;            // \"Remove file\"\n  remove: string;                // \"Remove\"\n  fileTooLarge: string;          // \"File is too large\"\n  invalidFileType: string;       // \"Invalid file type\"\n  maxFilesReached: string;       // \"Maximum files reached\"\n  maxDimensionsExceeded: string; // \"Image dimensions exceed limit\"\n  maxDurationExceeded: string;   // \"Video duration exceeds limit\"\n  cropTitle: string;             // \"Crop Image\"\n  cropConfirm: string;           // \"Confirm\"\n  cropCancel: string;            // \"Cancel\"\n  rotateLeft: string;            // \"Rotate left\"\n  rotateRight: string;           // \"Rotate right\"\n}\n```\n\n---\n\n## Usage Examples\n\n### Single Image Upload\n\n```typescript\nconfig = {\n  accept: 'image/*',\n  maxFileSize: 5_000_000,\n  maxFiles: 1,\n  showPreview: true\n};\n```\n\n### Multiple Files with Size Limit\n\n```html\n<lib-media-dropzone\n  [config]=\"{\n    accept: 'image/*,application/pdf',\n    maxFiles: 5,\n    maxFileSize: 10_000_000,\n    maxTotalSize: 50_000_000\n  }\"\n  (filesSelected)=\"handleFiles($event)\"\n/>\n```\n\n### Video with Duration Limit\n\n```typescript\nconfig = {\n  accept: 'video/*',\n  maxFileSize: 100_000_000,\n  maxVideoDuration: 120,\n  showPreview: true\n};\n```\n\n### Image Crop with Aspect Ratio Lock\n\n```typescript\nconfig = {\n  accept: 'image/*',\n  enableCrop: true,\n  cropAspectRatio: 16 / 9,\n  cropOutputWidth: 1920,\n  cropOutputHeight: 1080\n};\n```\n\nThe crop modal features:\n- Interactive canvas with draggable, resizable crop rectangle\n- Corner handles (circular) and edge handles (N/S/E/W) for precise resizing\n- Edge handles hidden automatically when aspect ratio is locked\n- Rule-of-thirds grid overlay\n- Dynamic cursor feedback (resize, move, crosshair)\n- Live crop dimensions display in the toolbar\n- 90 deg rotation with buttons\n- Responsive dialog sizing that adapts to the image\n\n### Free-Form Image Crop\n\n```typescript\nconfig = {\n  accept: 'image/*',\n  enableCrop: true,\n  enableRotation: true\n};\n```\n\n### Square Crop (1:1)\n\n```typescript\nconfig = {\n  accept: 'image/*',\n  enableCrop: true,\n  cropAspectRatio: 1,\n  cropOutputWidth: 500,\n  cropOutputHeight: 500\n};\n```\n\n### Custom Labels (Internationalization)\n\n```typescript\nconfig = {\n  accept: 'image/*',\n  labels: {\n    dropHere: 'Dateien hier ablegen',\n    orClickToUpload: 'oder klicken zum Hochladen',\n    chooseFiles: 'Dateien auswaehlen',\n    removeFile: 'Datei entfernen',\n    fileTooLarge: 'Datei ist zu gross',\n    maxFilesReached: 'Maximale Dateianzahl erreicht',\n    cropTitle: 'Bild zuschneiden',\n    cropConfirm: 'Bestaetigen',\n    cropCancel: 'Abbrechen'\n  }\n};\n```\n\n---\n\n## Advanced Usage\n\n### Handling Validation Errors\n\n```html\n<lib-media-dropzone\n  [config]=\"config\"\n  (filesSelected)=\"onFiles($event)\"\n  (validationError)=\"onError($event)\"\n/>\n```\n\n```typescript\nonError(errors: string[]) {\n  errors.forEach(error => this.toastService.error(error));\n}\n\nonFiles(files: MediaFile[]) {\n  const validFiles = files.filter(f => f.isValid);\n  this.uploadService.upload(validFiles);\n}\n```\n\n### Using Directives Separately\n\nBuild custom UI with the underlying directives:\n\n```typescript\nimport {\n  DropZoneDirective,\n  PasteHandlerDirective\n} from '@deeby/dottmoon-media-dropzone';\n\n@Component({\n  template: `\n    <div\n      class=\"custom-dropzone\"\n      libDropZone\n      libPasteHandler\n      (filesDropped)=\"onDrop($event)\"\n      (filesPasted)=\"onPaste($event)\"\n      tabindex=\"0\">\n      Custom styled drop zone\n    </div>\n  `,\n  imports: [DropZoneDirective, PasteHandlerDirective]\n})\nexport class CustomDropzoneComponent {\n  onDrop(files: File[]) { console.log('Dropped:', files); }\n  onPaste(files: File[]) { console.log('Pasted:', files); }\n}\n```\n\n---\n\n## Styling & Theming\n\nThe component supports full theming via CSS custom properties. All colors have sensible defaults — override only what you need.\n\n### Available CSS Variables\n\n```css\nlib-media-dropzone {\n  /* Primary / accent */\n  --mdz-primary: #2196f3;\n  --mdz-primary-hover: #1976d2;\n\n  /* Backgrounds */\n  --mdz-bg: #fafafa;\n  --mdz-card-bg: #fff;\n  --mdz-hover-bg: #e3f2fd;\n  --mdz-drag-bg: #e8f5e9;\n  --mdz-preview-bg: #f5f5f5;\n  --mdz-error-bg: #fff5f5;\n\n  /* Borders */\n  --mdz-border-color: #bdbdbd;\n  --mdz-hover-border: var(--mdz-primary);\n\n  /* Text */\n  --mdz-text: #424242;\n  --mdz-text-secondary: #757575;\n  --mdz-icon-color: #757575;\n  --mdz-btn-text: white;\n\n  /* Feedback */\n  --mdz-error: #f44336;\n  --mdz-success: #4caf50;\n  --mdz-disabled: #bdbdbd;\n\n  /* Remove button */\n  --mdz-remove-bg: rgba(0, 0, 0, 0.5);\n  --mdz-remove-color: white;\n  --mdz-remove-hover-bg: rgba(0, 0, 0, 0.7);\n\n  /* Crop Modal */\n  --mdz-dialog-bg: #fff;\n  --mdz-toolbar-bg: #fafafa;\n  --mdz-crop-bg: #1a1a1a;\n  --mdz-btn-bg: #f0f0f0;\n  --mdz-btn-hover-bg: #e0e0e0;\n  --mdz-badge-bg: #e8e8e8;\n}\n```\n\n### Example: Dark Mode\n\n```css\n.dark-mode lib-media-dropzone {\n  --mdz-bg: #1e293b;\n  --mdz-card-bg: #1e293b;\n  --mdz-border-color: #334155;\n  --mdz-text: #f1f5f9;\n  --mdz-text-secondary: #94a3b8;\n  --mdz-error-bg: rgba(244, 67, 54, 0.1);\n  --mdz-dialog-bg: #1e293b;\n  --mdz-toolbar-bg: #1e293b;\n  --mdz-btn-bg: #334155;\n  --mdz-btn-hover-bg: #475569;\n  --mdz-crop-bg: #0f172a;\n}\n```\n\n---\n\n## Playground\n\nA built-in playground app is included for testing all features interactively:\n\n```bash\ngit clone https://github.com/deebyy/dottmoon-media-dropzone\ncd dottmoon-media-dropzone\nnpm install\nnpm run start:playground\n```\n\nOpen `http://localhost:4200` to access 8 demo sections: basic upload, multi-file, crop mode, video, reactive forms, theming, validation, and drag & drop + paste.\n\n---\n\n## Changelog\n\n### v1.0.0\n\n**Angular 21 Modernization**\n- Migrated to signal-based `input()` / `output()` APIs throughout\n- Replaced `@ViewChild` with `viewChild()` signal queries\n- Replaced constructor DI with `inject()`\n- Removed redundant `standalone: true` (default in Angular 21)\n- Replaced deprecated `::ng-deep` with scoped selectors\n- Modernized directives to use `host` metadata instead of `@HostListener` / `@HostBinding`\n- Removed `forwardRef` (unnecessary in Angular 21)\n- Fixed `any` types on `ControlValueAccessor` methods\n\n**Crop Dialog UI Overhaul**\n- Responsive dialog sizing — adapts to image dimensions instead of fixed 900px width\n- Reduced blank space — removed excessive min-height and padding\n- Added edge resize handles (N/S/E/W) for free-crop mode\n- Added dynamic cursor feedback (resize, move, crosshair)\n- Added live crop dimensions display in the toolbar\n- Circular corner handles with subtle shadows\n- Thinner crop border with refined rule-of-thirds grid\n- Compact, polished header/toolbar/footer spacing\n\n**Playground App**\n- Added interactive test application with 8 demo sections\n- Run with `npm run start:playground`\n\n### v0.10.1\n\n- Image crop and rotate support\n- File preview component\n- Rewritten media dropzone component\n\n---\n\n## License\n\nMIT (c) [Deebyy](https://github.com/deebyy)\n\n---\n\n## Contributing\n\nContributions, issues, and feature requests are welcome!\nCheck the [issues page](https://github.com/deebyy/dottmoon-media-dropzone/issues).\n\n---\n\n## Resources\n\n- [npm Package](https://www.npmjs.com/package/@deeby/dottmoon-media-dropzone)\n- [GitHub Repository](https://github.com/deebyy/dottmoon-media-dropzone)\n- [Angular Documentation](https://angular.dev)\n\n---\n\n**Made with Angular 21**\n","readmeFilename":"README.md"}