{"_id":"@botom/quill-resize-module","_rev":"10-59443dc214704a50baf78c9d0a50f14d","name":"@botom/quill-resize-module","dist-tags":{"latest":"2.2.2"},"versions":{"1.0.0":{"name":"@botom/quill-resize-module","version":"1.0.0","keywords":["quill","quill-resize-module","quill-image-resize","quill-video-resize","quill-iframe-resize"],"author":{"name":"Edwar Diaz","email":"ediaz@teravisiontech.com"},"license":"MIT","_id":"@botom/quill-resize-module@1.0.0","maintainers":[{"name":"botom","email":"eddiazr@correo.udistrital.edu.co"}],"homepage":"https://github.com/BOTOOM/quill-resize-module#readme","bugs":{"url":"https://github.com/BOTOOM/quill-resize-module/issues"},"dist":{"shasum":"ff5c7de5aafec35ba734fc6230078db5be256223","tarball":"https://registry.npmjs.org/@botom/quill-resize-module/-/quill-resize-module-1.0.0.tgz","fileCount":18,"integrity":"sha512-tbu1A3NwKEqQmCJM/m5VbPtqmgu7RdxuAuqszgMj4Gnjs9aw7/hcu7HowElhrFfsuKbDLlmM8NW3rs858l5VVA==","signatures":[{"sig":"MEQCIFLdDtL6PqGcb522zFDew9gPquzmTcSyp//6xuGwqvBvAiAKNe1mmdYNKWkQx0f3MXMb4i7lbXX9S9+pOA5rvJXxUw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":4352451,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhqO1sCRA9TVsSAnZWagAA2QkP/3RQ33Kg1dAJFnw4wO7V\n2c9n1wSy1wKT1AlYGUBNIGyONZT6DSFJgsnqd8ermXpYPSl8zIyuASMH8Kxi\nKBI7+PsFxGE8FdLFDk2a7fjOd9wjAjlSzG3i1i9B/S9FviQwuAQGUzBy/UT3\nM5DYKshKTfQdnaMwQV0qxYycWd/0HCZ1kKQYHQ2yitrt1G2Pin7InauLelqh\n1GQqbHDxZDUFrjkLKhQANJ/SwFIk4goA/hpzPG3xZcYMe/3mh0yKEedhuaiD\nJb71Dx0/miZhmKqo0ZBNVdxE0tIbCm+IIhhXlsThYr6aqTq/HjWBDRhCiaZn\n1nGMJQnEgyAp6djLd8T5v6qtFTfa2vhCt+OZ9N9P8M9kqYxiJIawWEgoYUk7\ntDl+RSNx0QIwjJSkO6fITb3GV5i7tCAjCgkGn0ShSGagWfW3ShwHOyzY1pqH\napXqOlvmSxAEU3s2HyDHAJTFkGynDfZqLpcWvkoLvvulN7auVtGEX5k9tKSG\nEmd8H3mKPjAhUFSJ4RmVMw3FusUlOmzz78uolR2FkgcbMgwrFsrvYnEm9xDO\nwtGvhbviIewe31clLI5HIV+PjJQbDjlt3Pfq4zicI4We5xSZA0xtLlbgSvSN\nC7gIg5W9jWq/e90npGjncWaZe98DbRPpBg8Vp15OTizJHZ54E8jFMpiB41Yr\nKLo0\r\n=VfaI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/quill-resize-module.js","gitHead":"2938f4896c0ba567c3de4f65e1f4dbfef3713499","scripts":{"dev":"rollup -c -w","test":"ts-node test/test.ts","build":"rollup -c","pretest":"npm run build"},"typings":"types/main.d.ts","_npmUser":{"name":"botom","email":"eddiazr@correo.udistrital.edu.co"},"repository":{"url":"git+https://github.com/BOTOOM/quill-resize-module.git","type":"git"},"_npmVersion":"6.14.15","description":"A module for Quill rich text editor to allow images to be resized.","directories":{},"_nodeVersion":"12.22.7","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^1.9.3","rollup":"^1.0.0","ts-node":"^7.0.1","@types/ms":"^0.7.30","typescript":"^3.2.2","rollup-plugin-less":"^1.1.2","rollup-plugin-uglify":"^6.0.4","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-typescript":"^1.0.0","rollup-plugin-node-resolve":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/quill-resize-module_1.0.0_1638460779781_0.030855277723248475","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"@botom/quill-resize-module","version":"1.1.0","keywords":["quill","quill-resize-module","quill-image-resize","quill-video-resize","quill-iframe-resize"],"author":{"name":"Edwar Diaz","email":"ediaz@teravisiontech.com"},"license":"MIT","_id":"@botom/quill-resize-module@1.1.0","maintainers":[{"name":"botom","email":"eddiazr@correo.udistrital.edu.co"}],"homepage":"https://github.com/BOTOOM/quill-resize-module#readme","bugs":{"url":"https://github.com/BOTOOM/quill-resize-module/issues"},"dist":{"shasum":"bb2a2b86f9046aaf20dca6fe5a1a3244aa564383","tarball":"https://registry.npmjs.org/@botom/quill-resize-module/-/quill-resize-module-1.1.0.tgz","fileCount":18,"integrity":"sha512-gapZcuxPSUwHu3m6gq1tikt+pKm3TbFuoEXPod5g756MQVaONb+R3yblXzh3IOnoJklzrOW0Ssdfoc6e5BC/XA==","signatures":[{"sig":"MEQCIDbFPf/b+y/xa5uIzJxRSAxT5pjb/Kn4C3VrE/NgBaWPAiAuA9KU5kcUK2TkiNotU2B4WOqbCMvGfTlPb0nJzKdtkQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":4354020,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhqQavCRA9TVsSAnZWagAA0LEP/3+6BpqoZ94C23ICv/Vs\nIwnB5UMAhpPEqcpLGW34ZyoXJFHimksHeisRoVd5En4W7Q+FJRTkKHiaZcnX\nALq69L/ydDELvMvegXDLQ3SC8dbg9g5BnnQSMyCoWf2D6xPj0jVORvgiUWKM\nHK9l3SQrcP4Wq/nUr27tXFHEi/MrvXjTYmkLWmTnCCsAaefZdksptazxQ3C6\n+ewbAUhEi899mf0l1CB2CKTtt12MuS6XW+f14GMusDOhy7hBez7qH2L3l1gz\n1jV1yCZ2Sbb3w31MvSUB+xF1Lg0o8FPxegFs7jT8iFFImB9gq5NlGHaXoggA\nJADUn/ur7kufE65BUPfdx+Yw0pdSQZ1J7wDsyLB1Lq5ifQZD0dy2Zjo26zYm\neBHB/PLlrTGBkEi0a4f0mSCS7WpHH6Vj/PS0SfLlWO005Pp4PSQyx1uYhuVB\nS30Jn8Cr1mMnxE+XOxqcWa0+Pj/RRJK9JQDAvzNHVWwiV26dUYzCpzFQtxA6\nySk3fCdsubHIolNmYHd83YP+HLdTFqJnMrPRK630fBZj4cGqCO2KRd7qoUgS\nazKPACBDOkG2XPaJhi6jgSXw5TaMtyrhv/tS3W43r0qWUysikBJ4scTEhcAJ\nRSIwZ5EZBk+vZnKX3hlXAy6oEofH5PPqzTC0K6/c8V4q8GV4T7XKjRW8PXpA\nPc8U\r\n=kbxN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/quill-resize-module.js","gitHead":"d0c2b5852217c00dbc0fdd1c3a6ea3bcb7317655","scripts":{"dev":"rollup -c -w","test":"ts-node test/test.ts","build":"rollup -c","pretest":"npm run build"},"typings":"types/main.d.ts","_npmUser":{"name":"botom","email":"eddiazr@correo.udistrital.edu.co"},"repository":{"url":"git+https://github.com/BOTOOM/quill-resize-module.git","type":"git"},"_npmVersion":"6.14.15","description":"A module for Quill rich text editor to allow images to be resized.","directories":{},"_nodeVersion":"12.22.7","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^1.9.3","rollup":"^1.0.0","ts-node":"^7.0.1","@types/ms":"^0.7.30","typescript":"^3.2.2","rollup-plugin-less":"^1.1.2","rollup-plugin-uglify":"^6.0.4","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-typescript":"^1.0.0","rollup-plugin-node-resolve":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/quill-resize-module_1.1.0_1638467247212_0.8991619251327634","host":"s3://npm-registry-packages"}},"1.1.1":{"name":"@botom/quill-resize-module","version":"1.1.1","keywords":["quill","quill-resize-module","quill-image-resize","quill-video-resize","quill-iframe-resize"],"author":{"name":"Edwar Diaz","email":"ediaz@teravisiontech.com"},"license":"MIT","_id":"@botom/quill-resize-module@1.1.1","maintainers":[{"name":"botom","email":"eddiazr@correo.udistrital.edu.co"}],"homepage":"https://github.com/BOTOOM/quill-resize-module#readme","bugs":{"url":"https://github.com/BOTOOM/quill-resize-module/issues"},"dist":{"shasum":"e7f617458a867f1185e16714cc1862d1e6ab6b2e","tarball":"https://registry.npmjs.org/@botom/quill-resize-module/-/quill-resize-module-1.1.1.tgz","fileCount":18,"integrity":"sha512-NxNmekR9e/qnVoY5dK2E3kwarpjh4emrALcao5j8lSNdUDcWbF7+CYY6y+rtrGbrNDDLlz7WovIlZbqlrF7lpQ==","signatures":[{"sig":"MEQCIFqlzvwEZ+7Wf848xU94ZnWasUbwkEjOB/BgZDwD468yAiAznKDD0J83dP0u+DOnUMl4uWz91tY2A/BF/ZOaRMnPHA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":4354037,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhqSSJCRA9TVsSAnZWagAA1sQQAKTZuRrNLIhhMp5Ro29r\nwKtDwKKQ6yLVoYA5lcWgSLEft+pk1M+wujkgZlepj6WJWx2wtH8W29+12FG5\nPzzAJjNfXUlJFoT5OCCGJ7zaksqIG71qSZ3Vuv3ZgttU32X57HagpavkbvkA\nXlImtDUU40KJsCH2GipVEgz580uTff2UYh6//stMwkEM6cd2eHG/2b/BbI4d\nyrXY136gsnXnXxw9egg1R1v77FYfQy7yvqg5yrhWPK4burYr/x2dw2x+1uJx\nVdrAtEMf1El6sPwwhCpAkcp/Z4ivAgzaCxarirSJC9AiU444grrQdUgK3/4p\nF7gUFCQb9dOsHoOIqsrWM3I3n2uUUGQ+qg1nXw4qJH7XPNRxXgZ9c0d6YeZw\n/tiOsiUoOvWxw8YfBE4WkABT5axN2mf5KbeUxVYw00CaQYeSh04slV9UrQeh\n8E/Bjyq+EmYTZhkQ86hcWLyZrNe5t9Vo5dzjpAwR7ZUZHRTGC4ZxOs2STfAr\nas7NCaUpbP0PBgFlNmGK0VjOgHp5OQgvu2Sx9iMpVld3aDmY4JXPEhlNJUHV\nru8tbfCg4Cdc9CsnicY7m4uN7SxxLwnCz4PYweFpDTI/i/8PiboRxG/Xc8by\npS/4DhcigWntBGbAq7M/0aXPFs7Q1WRnYKYqEvDogleju64TZJKXn6+XmUAv\nyTtd\r\n=i9G/\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/quill-resize-module.js","gitHead":"8560aec169962dae9c618871c5d5d289e2fd17c5","scripts":{"dev":"rollup -c -w","test":"ts-node test/test.ts","build":"rollup -c","pretest":"npm run build"},"typings":"types/main.d.ts","_npmUser":{"name":"botom","email":"eddiazr@correo.udistrital.edu.co"},"repository":{"url":"git+https://github.com/BOTOOM/quill-resize-module.git","type":"git"},"_npmVersion":"6.14.15","description":"A module for the Quill rich text editor that allows you to resize images and videos.","directories":{},"_nodeVersion":"12.22.7","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^1.9.3","rollup":"^1.0.0","ts-node":"^7.0.1","@types/ms":"^0.7.30","typescript":"^3.2.2","rollup-plugin-less":"^1.1.2","rollup-plugin-uglify":"^6.0.4","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-typescript":"^1.0.0","rollup-plugin-node-resolve":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/quill-resize-module_1.1.1_1638474888793_0.9779218180105687","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@botom/quill-resize-module","version":"2.0.0","keywords":["quill","quill-resize-module","quill-image-resize","quill-video-resize","quill-iframe-resize"],"author":{"name":"Edwar Diaz","email":"ediaz@teravisiontech.com"},"license":"MIT","_id":"@botom/quill-resize-module@2.0.0","maintainers":[{"name":"botom","email":"eddiazr@correo.udistrital.edu.co"}],"homepage":"https://github.com/BOTOOM/quill-resize-module#readme","bugs":{"url":"https://github.com/BOTOOM/quill-resize-module/issues"},"dist":{"shasum":"ef7dcc6ba72aad8f3487840457585d781728af01","tarball":"https://registry.npmjs.org/@botom/quill-resize-module/-/quill-resize-module-2.0.0.tgz","fileCount":18,"integrity":"sha512-IOd48il/FdGN2HmsIVWn0kqpnn52L9eYLNM7Z1ZixlmX0NAxegImpHaz0Yfvk6arH42aZW0viWa/GHc4ZPFccg==","signatures":[{"sig":"MEYCIQC6hKoa2ha6G4UU9Z3kv8G0inBNR4X+sGpbw3Lc8scPEQIhAJdpzbVmFeDKPBfyUkR2rqEkmgyZfqRseUWaIA8KZI5I","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":4360193,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhshG4CRA9TVsSAnZWagAA1MwQAJ+W2boPwPffhDsgS3HN\nSxFsJTfL214UCQVM7EcuWSTr24HvpvG72B/53sNVFzQIzW5sZtEdoxCeAFKa\n44DLer+XLzpHMr1xDDVCfcQMC2tW/9hq7ucH+Fqmgiq1bP+grf/ayJI5hARz\nwAXDf17/uCknLF5VT5HHR7LpIcr65LXYn8gsZGTV+Hp3Bb6TPE7u+A/ZOH9o\nEGhWIZrVg/Yqcm2E/ygQePFKf6KiSSIqELGaCYxOWFSNxo7Yb2QvFQ2FUTra\nGwLNed7usOxt3HGhcSOHS9WtgEESRIVIoIAlrKIsjiFA4hQ/Y3vdrWlnU3IA\n8SbJob3qf3EGlwWM9pagdTva708T9/hWQSEKvG9VqOpt6GKN06Hhe1slEUeu\n6nLf/c3XpmxT9HGdtfLrJe+K2MDTDdWiF8LSnTb3zDqJgqWn9+qeKk+oXSyj\nFTIyVwUbNUPlZGst3kS4bckVWO5Zyl5vxuNeBf0T+Yae3rD2VfShb0W/2efc\nAzBt14ud6kjRUjE9mNa2VUHx9p2INDKzcAzQPoBFULADUcBW/HwVFzUNgf/i\nPvXPJ/oI/iIXX//fXKcuDTGyjyrQ3R2xdm38iN+lGOb+pVu5BTSAOjdZvJdH\naPCBkVNexLpHNv5Fgno7Mh+OVd/jJj4bHWOthBPbwC1N8Cj/XhTdfuDcJj/K\n/fTS\r\n=K0+p\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./dist/quill-resize-module.js","gitHead":"4c1740ae0a0d3c926e12764b311a785d769e6053","scripts":{"dev":"rollup -c -w","test":"ts-node test/test.ts","build":"rollup -c","pretest":"npm run build"},"typings":"types/main.d.ts","_npmUser":{"name":"botom","email":"eddiazr@correo.udistrital.edu.co"},"repository":{"url":"git+https://github.com/BOTOOM/quill-resize-module.git","type":"git"},"_npmVersion":"6.14.15","description":"A module for the Quill rich text editor that allows you to resize images and videos.","directories":{},"_nodeVersion":"12.22.7","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^1.9.3","rollup":"^1.0.0","ts-node":"^7.0.1","@types/ms":"^0.7.30","typescript":"^3.2.2","rollup-plugin-less":"^1.1.2","rollup-plugin-uglify":"^6.0.4","rollup-plugin-commonjs":"^9.2.0","rollup-plugin-typescript":"^1.0.0","rollup-plugin-node-resolve":"^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/quill-resize-module_2.0.0_1639059896317_0.8719523499609099","host":"s3://npm-registry-packages"}},"2.0.1":{"name":"@botom/quill-resize-module","version":"2.0.1","keywords":["quill","quill-resize-module","quill-image-resize","quill-video-resize","quill-iframe-resize"],"author":{"name":"Edwar Diaz","email":"edwardiaz.dev@gmail.com"},"license":"MIT","_id":"@botom/quill-resize-module@2.0.1","maintainers":[{"name":"botom","email":"eddiazr@correo.udistrital.edu.co"}],"homepage":"https://github.com/BOTOOM/quill-resize-module#readme","bugs":{"url":"https://github.com/BOTOOM/quill-resize-module/issues"},"dist":{"shasum":"19389b2cfba586cbdd8edd38833cfc9d7f834ef3","tarball":"https://registry.npmjs.org/@botom/quill-resize-module/-/quill-resize-module-2.0.1.tgz","fileCount":10,"integrity":"sha512-qaaAApFioSjr0hCsUZt0bJJjzD6qYCgWyZ3AgswDfulqDTtOK8lvc0CSMzE+oe75oG8Z58Cyr2dEgtVmzmn6gA==","signatures":[{"sig":"MEUCIQCQiGC64ZHNu6wgFhKnKWHJVK1yDovq43ssADwIlN2PjwIgYn4JaqokAdtccO370/noar2n+sDJrpNYxQdJGJ5lrH8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":36669},"main":"./dist/quill-resize-module.js","gitHead":"0ad86ac9f363ab1bfdb10290334c632c04993938","scripts":{"dev":"rollup -c -w","test":"ts-node test/test.ts","build":"rollup -c","pretest":"npm run build","release":"standard-version","release:major":"standard-version --release-as major","release:minor":"standard-version --release-as minor","release:patch":"standard-version --release-as patch"},"typings":"types/main.d.ts","_npmUser":{"name":"botom","email":"eddiazr@correo.udistrital.edu.co"},"repository":{"url":"git+https://github.com/BOTOOM/quill-resize-module.git","type":"git"},"_npmVersion":"10.1.0","description":"A module for the Quill rich text editor that allows you to resize images and videos.","directories":{},"_nodeVersion":"20.9.0","_hasShrinkwrap":false,"devDependencies":{"tslib":"^1.9.3","rollup":"^1.0.0","ts-node":"^7.0.1","@types/ms":"^0.7.30","typescript":"^3.2.2","@commitlint/cli":"^18.2.0","standard-version":"^9.5.0","rollup-plugin-less":"^1.1.3","rollup-plugin-uglify":"^6.0.4","rollup-plugin-commonjs":"^9.3.4","rollup-plugin-typescript":"^1.0.1","rollup-plugin-node-resolve":"^4.0.0","@commitlint/config-conventional":"^18.1.0"},"_npmOperationalInternal":{"tmp":"tmp/quill-resize-module_2.0.1_1716496713237_0.1053739926428583","host":"s3://npm-registry-packages"}},"2.1.0":{"name":"@botom/quill-resize-module","version":"2.1.0","keywords":["quill","quill-editor","image-resize","video-resize","iframe-resize","quill-module","rich-text-editor","wysiwyg","editor-plugin","secure","modern","typescript","zero-vulnerabilities","semantic-release","auto-resize","drag-resize","responsive","accessibility","lightweight","performance"],"author":{"url":"https://github.com/BOTOOM","name":"Edwar Diaz","email":"edwardiaz.dev@gmail.com"},"license":"MIT","_id":"@botom/quill-resize-module@2.1.0","maintainers":[{"name":"botom","email":"edwardiaz.dev@gmail.com"}],"homepage":"https://github.com/BOTOOM/quill-resize-module#readme","bugs":{"url":"https://github.com/BOTOOM/quill-resize-module/issues"},"dist":{"shasum":"f91e10f3dea70f6aaddb53c5ef4952eae60e1181","tarball":"https://registry.npmjs.org/@botom/quill-resize-module/-/quill-resize-module-2.1.0.tgz","fileCount":11,"integrity":"sha512-7NOQx5wpOUBQbAU6K2WEbMZA7tXAjUZDHUmaCSEoScpDT89RcYo5jr2noaZjbz2aYf/pmBKVwL5hHn3T4oJnbA==","signatures":[{"sig":"MEQCIDx+MWVz53hXTPvW1FdjWhdYI8z/6RgyvB0YAG8tIHQmAiBM3lK2uH5AukOne2rvyb/acuj5iafUl7GpwGgTsP6wOA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51506},"main":"./dist/quill-resize-module.min.js","types":"./types/main.d.ts","module":"./dist/quill-resize-module.js","engines":{"node":">=14.0.0"},"exports":{".":{"types":"./types/main.d.ts","import":"./dist/quill-resize-module.js","require":"./dist/quill-resize-module.min.js"},"./package.json":"./package.json"},"gitHead":"84963eba907cac9519a108422d0abbfa23279bd5","scripts":{"dev":"rollup -c -w","lint":"eslint src --ext .ts","size":"size-limit","test":"ts-node test/test.ts","build":"rollup -c","pretest":"npm run build","release":"standard-version","lint:fix":"eslint src --ext .ts --fix","release:major":"standard-version --release-as major","release:minor":"standard-version --release-as minor","release:patch":"standard-version --release-as patch","prepublishOnly":"npm run build"},"_npmUser":{"name":"botom","email":"edwardiaz.dev@gmail.com"},"repository":{"url":"git+https://github.com/BOTOOM/quill-resize-module.git","type":"git"},"size-limit":[{"path":"./dist/quill-resize-module.min.js","limit":"15 kB"}],"_npmVersion":"11.10.0","description":"🔒 Secure & modern Quill.js module for resizing images, videos, and iframes with zero vulnerabilities and automatic releases","directories":{},"_nodeVersion":"22.22.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"less":"^4.5.1","tslib":"^2.6.0","eslint":"^9.39.2","rollup":"^3.29.0","ts-node":"^10.9.0","@types/ms":"^0.7.30","typescript":"^5.3.0","@commitlint/cli":"^18.2.0","@size-limit/file":"^11.2.0","semantic-release":"^25.0.3","standard-version":"^9.5.0","@rollup/plugin-terser":"^0.4.4","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.4","rollup-plugin-postcss":"^4.0.2","@rollup/plugin-commonjs":"^25.0.0","@semantic-release/github":"^9.2.6","@rollup/plugin-typescript":"^11.1.0","@typescript-eslint/parser":"^8.55.0","@rollup/plugin-node-resolve":"^15.2.0","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^18.1.0","@typescript-eslint/eslint-plugin":"^8.55.0"},"_npmOperationalInternal":{"tmp":"tmp/quill-resize-module_2.1.0_1771017339961_0.6165906954887213","host":"s3://npm-registry-packages-npm-production"}},"2.2.0":{"name":"@botom/quill-resize-module","version":"2.2.0","keywords":["quill","quill2","quill-editor","quilljs","image-resize","video-resize","iframe-resize","gif-resize","media-resize","quill-module","quill-plugin","rich-text-editor","wysiwyg","wysiwyg-editor","editor-plugin","secure","modern","typescript","zero-vulnerabilities","semantic-release","auto-resize","drag-resize","responsive","accessibility","a11y","keyboard-accessible","lightweight","performance","touch","mobile","pointer-events","pinch-to-resize","pinch-zoom","touch-resize","image-upload","upload-hook","image-compression","persistence","esm","framework-agnostic","react","vue","angular"],"author":{"url":"https://github.com/BOTOOM","name":"Edwar Diaz","email":"edwardiaz.dev@gmail.com"},"license":"MIT","_id":"@botom/quill-resize-module@2.2.0","maintainers":[{"name":"botom","email":"edwardiaz.dev@gmail.com"}],"homepage":"https://github.com/BOTOOM/quill-resize-module#readme","bugs":{"url":"https://github.com/BOTOOM/quill-resize-module/issues"},"dist":{"shasum":"e877e760c5b83a225b09d15936c02477f966565c","tarball":"https://registry.npmjs.org/@botom/quill-resize-module/-/quill-resize-module-2.2.0.tgz","fileCount":16,"integrity":"sha512-dt6J48ZN4XdfS131fQk9/lH/RWYWKyShcU1lgUsvXm80GwaUuT1dTzc9Ou6d9FG+Ogpgh36uGSZxL24276b7dw==","signatures":[{"sig":"MEUCIGng2ysvevAeRbxRLFgAWcIy7xoQDWRUirEjTS3PgYtAAiEA96CdW7B+6B+1e2zoqjJ/x5MtS84AkhWE8L0cbpNdB7o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":327793},"main":"./dist/quill-resize-module.min.js","types":"./types/main.d.ts","module":"./dist/quill-resize-module.esm.mjs","engines":{"node":">=14.0.0"},"exports":{".":{"types":"./types/main.d.ts","import":"./dist/quill-resize-module.esm.mjs","default":"./dist/quill-resize-module.min.js","require":"./dist/quill-resize-module.min.js"},"./package.json":"./package.json"},"gitHead":"265a8c4deb5683a989da09a847b40e92d376165b","scripts":{"dev":"rollup -c -w","lint":"eslint src test","size":"size-limit","test":"vitest run","build":"rollup -c && npm run build:types","release":"standard-version","lint:fix":"eslint src test --fix","test:watch":"vitest","build:types":"tsc -p tsconfig.json","release:major":"standard-version --release-as major","release:minor":"standard-version --release-as minor","release:patch":"standard-version --release-as patch","prepublishOnly":"npm run build"},"_npmUser":{"name":"botom","email":"edwardiaz.dev@gmail.com"},"overrides":{"yaml@1.10.2":"1.10.3"},"repository":{"url":"git+https://github.com/BOTOOM/quill-resize-module.git","type":"git"},"size-limit":[{"path":"./dist/quill-resize-module.min.js","limit":"15 kB"}],"_npmVersion":"11.18.0","description":"Modern, secure Quill.js module to resize images, GIFs, videos, and iframes — touch & pinch-to-resize, keyboard accessible, persistent sizing through Quill Deltas, upload hooks, and zero known high-severity vulnerabilities.","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"less":"^4.5.1","jsdom":"^29.1.1","quill":"^2.0.3","tslib":"^2.6.0","eslint":"^9.39.2","rollup":"^3.29.0","vitest":"^4.1.10","globals":"^17.7.0","@types/ms":"^0.7.30","@eslint/js":"^9.39.2","typescript":"^5.3.0","@commitlint/cli":"^18.2.0","@size-limit/file":"^11.2.0","semantic-release":"^25.0.3","standard-version":"^9.5.0","@rollup/plugin-terser":"^1.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.4","rollup-plugin-postcss":"^4.0.2","@rollup/plugin-commonjs":"^25.0.0","@semantic-release/github":"^9.2.6","@rollup/plugin-typescript":"^11.1.0","@typescript-eslint/parser":"^8.55.0","@rollup/plugin-node-resolve":"^15.2.0","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^18.1.0","@typescript-eslint/eslint-plugin":"^8.55.0"},"peerDependencies":{"quill":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/quill-resize-module_2.2.0_1783470694052_0.6217618706748089","host":"s3://npm-registry-packages-npm-production"}},"2.2.1":{"name":"@botom/quill-resize-module","version":"2.2.1","keywords":["quill","quill2","quill-editor","quilljs","image-resize","video-resize","iframe-resize","gif-resize","media-resize","quill-module","quill-plugin","rich-text-editor","wysiwyg","wysiwyg-editor","editor-plugin","secure","modern","typescript","zero-vulnerabilities","semantic-release","auto-resize","drag-resize","responsive","accessibility","a11y","keyboard-accessible","lightweight","performance","touch","mobile","pointer-events","pinch-to-resize","pinch-zoom","touch-resize","image-upload","upload-hook","image-compression","persistence","esm","framework-agnostic","react","vue","angular"],"author":{"url":"https://github.com/BOTOOM","name":"Edwar Diaz","email":"edwardiaz.dev@gmail.com"},"license":"MIT","_id":"@botom/quill-resize-module@2.2.1","maintainers":[{"name":"botom","email":"edwardiaz.dev@gmail.com"}],"homepage":"https://github.com/BOTOOM/quill-resize-module#readme","bugs":{"url":"https://github.com/BOTOOM/quill-resize-module/issues"},"dist":{"shasum":"025111885f596647860a788e11c810787a915553","tarball":"https://registry.npmjs.org/@botom/quill-resize-module/-/quill-resize-module-2.2.1.tgz","fileCount":16,"integrity":"sha512-HWngcy42Du2CJj9lNYQcXqdcnolkarjhMJyAf/STWt5VmBhB7pczhpTa6/JuCE6ePPRQ1BPnFnnjmgsV+eqilQ==","signatures":[{"sig":"MEYCIQDgwEiLl4W0/mYGQUlJfHq8lI9xjwus2Vi/lCmpfJR1iAIhAKLOcqOdVQPWosLQBlBQ4p+lIXc2lAEyQQdaTP7G7HRR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":329097},"main":"./dist/quill-resize-module.min.js","types":"./types/main.d.ts","module":"./dist/quill-resize-module.esm.mjs","engines":{"node":">=14.0.0"},"exports":{".":{"types":"./types/main.d.ts","import":"./dist/quill-resize-module.esm.mjs","default":"./dist/quill-resize-module.min.js","require":"./dist/quill-resize-module.min.js"},"./package.json":"./package.json"},"gitHead":"9721bc975cfe7cfe7b8d5c7f58749c2a8ec28ca5","scripts":{"dev":"rollup -c -w","lint":"eslint src test","size":"size-limit","test":"vitest run","build":"rollup -c && tsc -p tsconfig.json","release":"standard-version","lint:fix":"eslint src test --fix","test:watch":"vitest","build:types":"tsc -p tsconfig.json","release:major":"standard-version --release-as major","release:minor":"standard-version --release-as minor","release:patch":"standard-version --release-as patch","prepublishOnly":"rollup -c && tsc -p tsconfig.json"},"_npmUser":{"name":"botom","email":"edwardiaz.dev@gmail.com"},"overrides":{"yaml@1.10.2":"1.10.3"},"repository":{"url":"git+https://github.com/BOTOOM/quill-resize-module.git","type":"git"},"size-limit":[{"path":"./dist/quill-resize-module.min.js","limit":"15 kB"}],"_npmVersion":"11.18.0","description":"Modern, secure Quill.js module to resize images, GIFs, videos, and iframes — touch & pinch-to-resize, keyboard accessible, persistent sizing through Quill Deltas, upload hooks, and zero known high-severity vulnerabilities.","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"less":"^4.5.1","jsdom":"^29.1.1","quill":"^2.0.3","tslib":"^2.6.0","eslint":"^9.39.2","rollup":"^3.29.0","vitest":"^4.1.10","globals":"^17.7.0","@types/ms":"^0.7.30","@eslint/js":"^9.39.2","typescript":"^5.3.0","@commitlint/cli":"^18.2.0","@size-limit/file":"^11.2.0","semantic-release":"^25.0.3","standard-version":"^9.5.0","@rollup/plugin-terser":"^1.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.4","rollup-plugin-postcss":"^4.0.2","@rollup/plugin-commonjs":"^25.0.0","@semantic-release/github":"^9.2.6","@rollup/plugin-typescript":"^11.1.0","@typescript-eslint/parser":"^8.55.0","@rollup/plugin-node-resolve":"^15.2.0","@semantic-release/changelog":"^6.0.3","@commitlint/config-conventional":"^18.1.0","@typescript-eslint/eslint-plugin":"^8.55.0"},"peerDependencies":{"quill":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/quill-resize-module_2.2.1_1786411010228_0.14970520142240185","host":"s3://npm-registry-packages-npm-production"}},"2.2.2":{"name":"@botom/quill-resize-module","version":"2.2.2","description":"Modern, secure Quill.js module to resize images, GIFs, videos, and iframes — touch & pinch-to-resize, keyboard accessible, persistent sizing through Quill Deltas, upload hooks, and zero known high-severity vulnerabilities.","main":"./dist/quill-resize-module.min.js","module":"./dist/quill-resize-module.esm.mjs","types":"./types/main.d.ts","exports":{".":{"types":"./types/main.d.ts","import":"./dist/quill-resize-module.esm.mjs","require":"./dist/quill-resize-module.min.js","default":"./dist/quill-resize-module.min.js"},"./package.json":"./package.json"},"author":{"name":"Edwar Diaz","email":"edwardiaz.dev@gmail.com","url":"https://github.com/BOTOOM"},"repository":{"type":"git","url":"git+https://github.com/BOTOOM/quill-resize-module.git"},"bugs":{"url":"https://github.com/BOTOOM/quill-resize-module/issues"},"homepage":"https://github.com/BOTOOM/quill-resize-module#readme","license":"MIT","keywords":["quill","quill2","quill-editor","quilljs","image-resize","video-resize","iframe-resize","gif-resize","media-resize","quill-module","quill-plugin","rich-text-editor","wysiwyg","wysiwyg-editor","editor-plugin","secure","modern","typescript","zero-vulnerabilities","semantic-release","auto-resize","drag-resize","responsive","accessibility","a11y","keyboard-accessible","lightweight","performance","touch","mobile","pointer-events","pinch-to-resize","pinch-zoom","touch-resize","image-upload","upload-hook","image-compression","persistence","esm","framework-agnostic","react","vue","angular"],"devDependencies":{"@commitlint/cli":"^18.2.0","@commitlint/config-conventional":"^18.1.0","@eslint/js":"^9.39.2","@rollup/plugin-commonjs":"^25.0.0","@rollup/plugin-node-resolve":"^15.2.0","@rollup/plugin-terser":"^1.0.0","@rollup/plugin-typescript":"^11.1.0","@semantic-release/changelog":"^6.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^9.2.6","@semantic-release/npm":"^13.1.4","@size-limit/file":"^11.2.0","@types/ms":"^0.7.30","@typescript-eslint/eslint-plugin":"^8.55.0","@typescript-eslint/parser":"^8.55.0","eslint":"^9.39.2","globals":"^17.7.0","jsdom":"^29.1.1","less":"^4.5.1","quill":"^2.0.3","rollup":"^3.29.0","rollup-plugin-postcss":"^4.0.2","semantic-release":"^25.0.3","standard-version":"^9.5.0","tslib":"^2.6.0","typescript":"^5.3.0","vitest":"^4.1.10"},"peerDependencies":{"quill":"^2.0.0"},"overrides":{"yaml@1.10.2":"1.10.3"},"engines":{"node":">=14.0.0"},"scripts":{"build":"rollup -c && tsc -p tsconfig.json","build:types":"tsc -p tsconfig.json","dev":"rollup -c -w","test":"vitest run","test:watch":"vitest","prepublishOnly":"rollup -c && tsc -p tsconfig.json","size":"size-limit","lint":"eslint src test","lint:fix":"eslint src test --fix","release":"standard-version","release:minor":"standard-version --release-as minor","release:patch":"standard-version --release-as patch","release:major":"standard-version --release-as major"},"size-limit":[{"path":"./dist/quill-resize-module.min.js","limit":"15 kB"}],"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"gitHead":"b78e9afc3b93571f3493c57043c75f6530b47fb8","_id":"@botom/quill-resize-module@2.2.2","_nodeVersion":"24.18.0","_npmVersion":"11.18.0","dist":{"integrity":"sha512-q6yoqNXTPdrSb9Jdzui37m+ZU/MWOltglwQgdNheck4PDWvb7kThNM4SCy3P4HHNRXhqjhe01qyE6ViH3ZuP4Q==","shasum":"20c4da88b59106f869d08738363252e5c30189f3","tarball":"https://registry.npmjs.org/@botom/quill-resize-module/-/quill-resize-module-2.2.2.tgz","fileCount":16,"unpackedSize":329477,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDXk0nsdBi9xRv4Fym+rflchZtpmeF1w3q+4pIvFa+6dwIhAICLujvdq+MXpKrTSqR8mBouvDW1nBDc2MizfIt7Xf8G"}]},"_npmUser":{"name":"botom","email":"edwardiaz.dev@gmail.com"},"directories":{},"maintainers":[{"name":"botom","email":"edwardiaz.dev@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/quill-resize-module_2.2.2_1786412004859_0.9842490587898902"},"_hasShrinkwrap":false}},"time":{"created":"2021-12-02T15:59:39.719Z","modified":"2026-08-11T01:33:25.187Z","1.0.0":"2021-12-02T15:59:40.048Z","1.1.0":"2021-12-02T17:47:27.491Z","1.1.1":"2021-12-02T19:54:49.145Z","2.0.0":"2021-12-09T14:24:56.651Z","2.0.1":"2024-05-23T20:38:33.385Z","2.1.0":"2026-02-13T21:15:40.106Z","2.2.0":"2026-07-08T00:31:34.211Z","2.2.1":"2026-08-11T01:16:50.369Z","2.2.2":"2026-08-11T01:33:25.016Z"},"bugs":{"url":"https://github.com/BOTOOM/quill-resize-module/issues"},"author":{"name":"Edwar Diaz","email":"edwardiaz.dev@gmail.com","url":"https://github.com/BOTOOM"},"license":"MIT","homepage":"https://github.com/BOTOOM/quill-resize-module#readme","keywords":["quill","quill2","quill-editor","quilljs","image-resize","video-resize","iframe-resize","gif-resize","media-resize","quill-module","quill-plugin","rich-text-editor","wysiwyg","wysiwyg-editor","editor-plugin","secure","modern","typescript","zero-vulnerabilities","semantic-release","auto-resize","drag-resize","responsive","accessibility","a11y","keyboard-accessible","lightweight","performance","touch","mobile","pointer-events","pinch-to-resize","pinch-zoom","touch-resize","image-upload","upload-hook","image-compression","persistence","esm","framework-agnostic","react","vue","angular"],"repository":{"type":"git","url":"git+https://github.com/BOTOOM/quill-resize-module.git"},"description":"Modern, secure Quill.js module to resize images, GIFs, videos, and iframes — touch & pinch-to-resize, keyboard accessible, persistent sizing through Quill Deltas, upload hooks, and zero known high-severity vulnerabilities.","maintainers":[{"name":"botom","email":"edwardiaz.dev@gmail.com"}],"readme":"# Quill Resize Module\n\nA modern, secure module for the Quill rich text editor that allows you to resize images, videos, and iframes with comprehensive security updates and enhanced features.\n\n![npm version](https://img.shields.io/npm/v/@botom/quill-resize-module)\n![GitHub license](https://img.shields.io/github/license/BOTOOM/quill-resize-module)\n![GitHub stars](https://img.shields.io/github/stars/BOTOOM/quill-resize-module)\n![Security](https://img.shields.io/github/security-advisories/BOTOOM/quill-resize-module)\n\n## ✨ Features\n\n- 🖼️ **Image & GIF Resizing** - Resize images and animated GIFs with drag handles\n- 🎥 **Video Resizing** - Resize videos (and iframes) maintaining aspect ratio\n- 📱 **Responsive Design** - Works on all devices\n- 👆 **Touch, Pointer & Pinch Support** - Unified pointer events for mouse, touch, and pen, plus native two-finger pinch-to-resize on touch screens\n- ⌨️ **Keyboard Accessible** - Real `<button>` controls, focus management, and keyboard shortcuts\n- 💾 **Persistent Sizing** - Width, height, and alignment survive `getContents()`/`setContents()` round-trips, copy-paste, and page reloads\n- 🌐 **Multi-language Support** - Customizable locale options\n- 🔒 **Security First** - Zero vulnerabilities, modern dependencies, audited regularly\n- ⚡ **Performance Optimized** - Lightweight (≈7 kB brotli) and fast\n- 🎨 **Customizable Toolbar** - Show/hide alignment and size tools\n- 📏 **Size Display** - Optional size indicator\n- 🔔 **Typed Callbacks** - `onSelect`, `onResizeStart`, `onResize`, `onResizeEnd`, `onAlignChange`\n- 📐 **Resize Constraints** - min/max width/height, aspect-ratio locking (globally or per embed tag), and `%`/`px` size modes with configurable presets\n- 🧩 **Custom Embeds** - configure which tags trigger the overlay (`embedTags`) or resolve arbitrary wrapper elements (`resolveEmbed`) without forking\n- ✏️ **Media Attributes** - edit `alt` text and `title` from the toolbar, persisted through Quill's Delta model\n- ⬆️ **Upload Hooks & Compression** - intercept pasted/dropped images with `onImageUpload` to send them to your own upload pipeline, with optional client-side downscaling via `imageCompression`\n- 📦 **Modern Packaging** - real ESM (`.mjs`) and UMD builds with correct `exports`/`module` resolution, plus first-class TypeScript types\n- 🧪 **Framework Ready** - integration guides for Vanilla JS, React, Next.js, Vue, and Angular\n\n## 🆕 What's New in v2.1\n\n- **Pinch-to-resize on touch devices** - place a second finger anywhere on\n  the selected image/video and pinch or spread to resize proportionally,\n  no need to target the small handle.\n- **More reliable touch dragging** - the resize handle now uses Pointer\n  Events (mouse, touch, and pen unified) with pointer capture and an\n  enlarged invisible hit area.\n- **Native Quill persistence** - width/height/alignment are now backed by\n  registered Quill formats, so they survive Delta serialization instead\n  of relying only on inline styles.\n- **Upload hooks with optional compression** - wire `onImageUpload` to\n  intercept pasted/dropped images before they're inserted.\n- **Custom embed support** - resize arbitrary wrapper elements or extra\n  tags via `resolveEmbed`/`embedTags`, without forking the library.\n- **Keyboard accessibility** - arrow-key resizing, focus management, and\n  screen-reader-friendly controls.\n- **Dependency audit** - vulnerabilities reduced from 23 to 1 (a\n  documented, unfixable-upstream low-severity issue), with 100% of test\n  and lint tooling kept current.\n- **Real ESM build** - `dist/quill-resize-module.esm.mjs` fixes a\n  previous packaging bug where `import` resolved to a UMD bundle instead\n  of true ESM.\n\n## 🚀 Demo\n\n**Live Demo:** [https://botoom.github.io/quill-resize-module/](https://botoom.github.io/quill-resize-module/)\n\n![Demo](https://raw.githubusercontent.com/BOTOOM/quill-resize-module/master/demo/demo.gif)\n\nFramework-specific integration examples (Vanilla, React, Next.js, Vue,\nAngular) with lifecycle/cleanup guidance are in\n[`examples/`](./examples/README.md).\n\n## 📦 Installation\n\n```bash\nnpm install @botom/quill-resize-module\n```\n\nOr with pnpm:\n\n```bash\npnpm add @botom/quill-resize-module\n```\n\nWith Yarn, use `yarn add @botom/quill-resize-module`. `quill` is a peer\ndependency, so install it in your application as well:\n\n```bash\nnpm install quill\n# or: pnpm add quill\n# or: yarn add quill\n```\n\nThis package ships three builds so both Node/bundler resolution and\nplain `<script>` usage work correctly:\n\n| Consumer | File | Format |\n|----------|------|--------|\n| Bundlers/Node (`import`) | `dist/quill-resize-module.esm.mjs` | Real ES module (`export`/`import`) |\n| Bundlers/Node (`require`), CDN `<script>` | `dist/quill-resize-module.min.js` | UMD, minified |\n| Legacy `<script>` (unminified/debug) | `dist/quill-resize-module.js` | UMD |\n\nThe package's `exports` map resolves `import`/`require` automatically —\nyou normally don't need to reference these paths directly.\n\n## 🛠️ Usage\n\n### ES6/TypeScript\n\n```javascript\nimport Quill from \"quill\";\nimport ResizeModule from \"@botom/quill-resize-module\";\n\nQuill.register(\"modules/resize\", ResizeModule);\n\nconst quill = new Quill(\"#editor\", {\n  modules: {\n    resize: {\n      showSize: true,\n      locale: {\n        altTip: \"Hold down the alt key to zoom\",\n        floatLeft: \"Left\",\n        floatRight: \"Right\", \n        center: \"Center\",\n        restore: \"Restore\",\n      },\n    },\n  },\n});\n```\n\n### Browser (CDN)\n\n```html\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Quill Resize Module Demo</title>\n  <link href=\"https://cdn.jsdelivr.net/npm/quill@2.0.0/dist/quill.snow.css\" rel=\"stylesheet\">\n  <script src=\"https://cdn.jsdelivr.net/npm/quill@2.0.0/dist/quill.js\"></script>\n  <script src=\"https://cdn.jsdelivr.net/npm/@botom/quill-resize-module@latest/dist/quill-resize-module.js\"></script>\n</head>\n<body>\n  <div id=\"editor\"></div>\n  <script>\n    Quill.register(\"modules/resize\", window.QuillResizeModule);\n    \n    const quill = new Quill(\"#editor\", {\n      modules: {\n        toolbar: [\"bold\", \"italic\", \"image\", \"video\"],\n        resize: {\n          showSize: true,\n          locale: {}\n        }\n      },\n      theme: \"snow\"\n    });\n  </script>\n</body>\n</html>\n```\n\n## ⚙️ Configuration Options\n\n| Option | Type | Default | Description |\n|--------|------|---------|-------------|\n| `showToolbar` | boolean | `true` | Show/hide the toolbar |\n| `showSize` | boolean | `false` | Display current dimensions as a floating label |\n| `locale` | object | `{}` | Custom language strings |\n| `toolbar.sizeTools` | boolean | `true` | Show size adjustment tools |\n| `toolbar.alignTools` | boolean | `true` | Show alignment tools |\n| `toolbar.sizePresets` | number[] | `[100, 50]` | Percentages rendered as quick-size preset buttons |\n| `toolbar.sizeUnit` | `\"%\"` \\| `\"px\"` | `\"%\"` | Unit applied by preset buttons and the width input (see [Resize Constraints & Modes](#-resize-constraints--modes)) |\n| `toolbar.attributesTool` | boolean | `true` | Show the \"edit attributes\" button that opens the alt/title panel (see [Media Attributes](#️-media-attributes-alt-text--title)) |\n| `constraints` | `ResizeConstraints` | `{}` | Min/max width & height and aspect-ratio locking, applied to every target (see below) |\n| `constraintsByTag` | object | `{}` | Per-tag override of `constraints` (e.g. `{ img: {...}, video: {...}, myEmbed: {...} }`) |\n| `embedTags` | string[] | `[\"img\", \"video\"]` | Tags that trigger the resize overlay on click. **Fully replaces** the default list — set it to add custom tags (e.g. `[\"img\", \"video\", \"canvas\"]`) |\n| `resolveEmbed` | function | `undefined` | Custom resolver `(clickedTarget, event) => HTMLElement \\| null` to support arbitrary wrapper elements (see [Custom Embeds](#-custom-embeds)) |\n| `onImageUpload` | function | `undefined` | `(file: File) => Promise<string> \\| string` called for each pasted/dropped image; its resolved URL is inserted into the editor (see [Upload Hooks & Compression](#️-upload-hooks--compression)) |\n| `imageCompression` | `ImageCompressionOptions \\| false` | `undefined` | Optional client-side downscaling applied before `onImageUpload`. Only takes effect when `onImageUpload` is set |\n\n> `toolbar.alingTools` (the original, misspelled name) still works as a\n> deprecated alias for `toolbar.alignTools`, but new code should use the\n> corrected name.\n\n\n### Callbacks\n\n| Callback | Signature | Fires when |\n|----------|-----------|------------|\n| `onChange` | `(element: HTMLElement) => void` | After any change (drag, keyboard resize, toolbar click/input). Kept for backward compatibility. |\n| `onSelect` | `(element: HTMLElement) => void` | Once, when the overlay activates for a new img/video/iframe target. |\n| `onResizeStart` | `(element: HTMLElement) => void` | When a resize gesture begins (pointer drag, keyboard arrow step, or a toolbar width action). |\n| `onResize` | `(element: HTMLElement, event: ResizeChangeEvent) => void` | During a resize gesture. Fires on every `pointermove` for drags; once with the final size for keyboard/toolbar-driven resizes. |\n| `onResizeEnd` | `(element: HTMLElement) => void` | When a resize gesture ends. |\n| `onAlignChange` | `(element: HTMLElement, align: \"left\" \\| \"center\" \\| \"right\" \\| null) => void` | When alignment changes via the toolbar. |\n| `onAttributesChange` | `(element: HTMLElement, attrs: ResizeMediaAttributes) => void` | When `alt`/`title` are saved through the attributes panel. |\n\n`ResizeChangeEvent` is `{ target: HTMLElement; width: number; height: number; align: \"left\" | \"center\" | \"right\" | null }`.\n\n```typescript\nimport type { QuillResizeModuleOptions, ResizeChangeEvent } from \"@botom/quill-resize-module\";\n\nconst options: QuillResizeModuleOptions = {\n  onSelect: (element) => console.log(\"selected\", element),\n  onResizeStart: (element) => console.log(\"resize start\", element),\n  onResize: (element, event: ResizeChangeEvent) => {\n    console.log(`resizing to ${event.width}x${event.height}`, event.align);\n  },\n  onResizeEnd: (element) => console.log(\"resize end\", element),\n  onAlignChange: (element, align) => console.log(\"align changed\", align),\n};\n```\n\n### Locale Configuration\n\n```javascript\nconst quill = new Quill(\"#editor\", {\n  modules: {\n    resize: {\n      locale: {\n        altTip: \"Hold down the alt key to zoom\",\n        floatLeft: \"Left\",\n        floatRight: \"Right\",\n        center: \"Center\",\n        restore: \"Restore\",\n      },\n    },\n  },\n});\n```\n\n### Toolbar Customization\n\n```javascript\n// Hide alignment tools (e.g. for content pipelines that don't need it)\nconst quill = new Quill(\"#editor\", {\n  modules: {\n    resize: {\n      toolbar: {\n        alignTools: false, // Hide alignment\n        sizeTools: true,   // Keep size tools\n      },\n    },\n  },\n});\n```\n\n## ✏️ Media Attributes (Alt Text & Title)\n\nEvery resizable target gets an \"edit attributes\" button in the toolbar\n(hide it with `toolbar.attributesTool: false`) that opens a small panel\nfor editing `alt` text and `title`:\n\n```javascript\nconst quill = new Quill(\"#editor\", {\n  modules: {\n    resize: {\n      onAttributesChange: (element, { alt, title }) => {\n        console.log(\"attributes saved\", { alt, title });\n      },\n    },\n  },\n});\n```\n\n- The **Alt text** field is only shown for `<img>` targets, matching\n  native HTML semantics — videos and iframes don't have an `alt`\n  attribute.\n- The **Title** field is available for any target and sets a plain HTML\n  `title` attribute (shown as a native tooltip by the browser).\n- Both fields are saved into Quill's Delta model (`alt`/`title` Delta\n  attributes) when a live Quill instance is available, so they survive\n  `getContents()`/`setContents()` round trips exactly like width, height,\n  and alignment.\n- Pressing **Escape** while focused inside the panel closes just the\n  panel, leaving the resize overlay open.\n\n## 📐 Resize Constraints & Modes\n\nControl the bounds and behavior of every resize gesture (pointer drag,\nkeyboard arrow steps, and `px`-unit toolbar actions):\n\n```javascript\nconst quill = new Quill(\"#editor\", {\n  modules: {\n    resize: {\n      constraints: {\n        minWidth: 80,\n        maxWidth: 800,\n        minHeight: 60,\n        maxHeight: 600,\n        lockAspectRatio: true, // always preserve ratio, without needing Alt\n      },\n      // Override constraints for specific embed tags — per-tag fields win\n      // over the matching field in the global `constraints` above.\n      constraintsByTag: {\n        video: { lockAspectRatio: true },\n        iframe: { lockAspectRatio: true, minWidth: 320 },\n      },\n    },\n  },\n});\n```\n\n> An absolute 30px minimum always applies as a safety floor, even if a\n> smaller `minWidth`/`minHeight` is configured.\n\nToggle between relative (`%`) and absolute (`px`) sizing for the toolbar's\npreset buttons and width input, and customize which percentages are\noffered as presets:\n\n```javascript\nconst quill = new Quill(\"#editor\", {\n  modules: {\n    resize: {\n      toolbar: {\n        sizePresets: [100, 75, 50, 25], // default is [100, 50]\n        sizeUnit: \"px\", // default is \"%\"; presets/input become fixed px sizes\n      },\n    },\n  },\n});\n```\n\nIn `\"%\"` mode (the default) the preset buttons/input set a relative\n`width: N%;`, so the embed keeps resizing with its container. In `\"px\"`\nmode they compute an absolute width from the embed's original size\n(e.g. 50% of a 200px-wide image becomes `width: 100px;`) and set\n`height: auto;`, so the embed keeps a fixed size regardless of the\ncontainer's width. `minWidth`/`maxWidth` constraints are enforced on\n`px`-mode preset/input changes.\n\n## 🧩 Custom Embeds\n\nBy default, clicking an `img` or `video` attaches the resize overlay\n(iframes — e.g. YouTube embeds — are handled separately via focus\ntracking, since clicks inside cross-origin iframe content don't bubble to\nthe parent document). You can extend or completely replace this behavior\nwithout forking the library:\n\n```javascript\nconst quill = new Quill(\"#editor\", {\n  modules: {\n    resize: {\n      // Fully replaces the default [\"img\", \"video\"] list — include every\n      // tag you want to be resizable.\n      embedTags: [\"img\", \"video\", \"canvas\", \"my-custom-embed\"],\n    },\n  },\n});\n```\n\nFor embeds that aren't a single element (e.g. a wrapper `<div>` or\n`<figure>` around an inner element), use `resolveEmbed` to resolve the\nclick to the element that should actually be resized:\n\n```javascript\nconst quill = new Quill(\"#editor\", {\n  modules: {\n    resize: {\n      resolveEmbed(clickedTarget, event) {\n        // Clicking anywhere inside a \".chart-embed\" wrapper resizes the\n        // wrapper itself, not the element that was clicked.\n        return clickedTarget.closest(\".chart-embed\");\n      },\n    },\n  },\n});\n```\n\n`resolveEmbed` is checked first; if it returns `null`/`undefined`, the\nmodule falls back to `embedTags`-based matching on the clicked element's\nown tag name. Both `constraintsByTag` and persistence through Quill's\nDelta model (for blot-backed elements) work with custom embeds exactly\nas they do for `img`/`video`.\n\n## ⬆️ Upload Hooks & Compression\n\nBy default, pasting or dropping an image into the editor is handled by\nQuill/the browser's native clipboard behavior (usually inlined as a\n`data:` URL). Setting `onImageUpload` lets you intercept that flow and\nsend the file to your own upload pipeline instead — the module inserts\nwhatever URL you resolve:\n\n```javascript\nconst quill = new Quill(\"#editor\", {\n  modules: {\n    resize: {\n      async onImageUpload(file) {\n        const formData = new FormData();\n        formData.append(\"file\", file);\n        const response = await fetch(\"/api/upload\", {\n          method: \"POST\",\n          body: formData,\n        });\n        const { url } = await response.json();\n        return url;\n      },\n    },\n  },\n});\n```\n\n- `onImageUpload` is only invoked for **image** files pasted/dropped\n  directly into the editor; non-image files and drag/drop of text or\n  other content are left untouched.\n- If `onImageUpload` is **not** configured, paste/drop behavior is\n  completely unchanged — this feature is fully opt-in and backward\n  compatible.\n- Returning a falsy value (e.g. `undefined` or an empty string) skips\n  insertion for that file, which is useful if the upload fails and you\n  want to show your own error UI instead.\n- Multiple pasted/dropped files are uploaded and inserted in order.\n\nOptionally, downscale images client-side before they reach\n`onImageUpload` with `imageCompression`:\n\n```javascript\nconst quill = new Quill(\"#editor\", {\n  modules: {\n    resize: {\n      onImageUpload /* ... */,\n      imageCompression: {\n        maxWidth: 1600,\n        maxHeight: 1600,\n        mimeType: \"image/jpeg\",\n        quality: 0.8,\n      },\n    },\n  },\n});\n```\n\n`imageCompression` uses an in-memory `<canvas>` to resize/re-encode the\nimage and never upscales images that are already smaller than the\nconfigured bounds. It only has an effect when paired with\n`onImageUpload` (the paste/drop interceptor doesn't activate otherwise),\nand it degrades gracefully — if canvas 2D rendering isn't available in\nthe current environment, or the compression step throws for any\nreason, the original file is passed through unchanged instead of\nfailing the upload.\n\n## 🔧 Advanced Configuration\n\nCombine toolbar visibility with the live size label:\n\n```javascript\nconst quill = new Quill(\"#editor\", {\n  modules: {\n    resize: {\n      toolbar: {\n        alignTools: false, // Disable alignment tools\n      },\n      showSize: true,\n    },\n  },\n});\n```\n\n## ♿ Accessibility & Keyboard Shortcuts\n\nThe resize handle and every toolbar control are real `<button>` elements\n(not anchors), so they are reachable and operable with a keyboard once\nthe overlay is active, and are announced correctly by screen readers.\nWhen the overlay activates, focus moves to the resize handle automatically:\n\n| Shortcut | Action |\n|----------|--------|\n| Arrow keys | Resize by 1px |\n| Shift + Arrow keys | Resize by 10px |\n| Alt + Arrow keys | Resize while keeping the original aspect ratio |\n| `0` | Restore the original size |\n| `Escape` | Close the overlay |\n\nTouch and pen input are supported through Pointer Events, and the resize\nhandle has an enlarged (invisible) hit area for touch screens. On touch\ndevices, the whole selected media area also supports **pinch-to-resize**:\nplacing a second finger anywhere on the overlay and spreading or pinching\nscales width and height together, proportionally to how far apart the\nfingers move — no need to land precisely on the small handle. Pinching\ncancels a single-finger handle drag in progress, and respects the same\n`constraints` (min/max width/height) as every other resize gesture.\n\n## 🐛 Bug Fixes & Security\n\n### Recent Fixes\n- ✅ **Fixed positioning** when nested inside relative elements (PR #12)\n- ✅ **Security vulnerabilities** resolved (DOM Clobbering XSS, RCE)\n- ✅ **Dependencies updated** to latest secure versions\n- ✅ **Build system modernized** with Rollup v3\n\n### Security Status\n- 🔒 **0 vulnerabilities** in production dependencies (`npm audit --omit=dev --audit-level=high`)\n- 🛡️ **Modern dependencies** — dev tooling vulnerabilities are tracked and remediated conservatively (see [`MEJORAS_LIBRERIA.md`](./MEJORAS_LIBRERIA.md#auditoria-y-remediacion-de-dependencias))\n- ⚠️ One known **low-severity** issue in `quill` itself (an XSS in its HTML export feature, [GHSA-v3m3-f69x-jf25](https://github.com/advisories/GHSA-v3m3-f69x-jf25)), affecting the latest published `quill` release with no fix available yet — tracked upstream, not introduced by this module\n- ✅ **CI/CD security** with Node.js 20.x\n\n## 📱 Browser Support\n\n| Browser | Version |\n|---------|---------|\n| Chrome | 70+ |\n| Firefox | 65+ |\n| Safari | 12+ |\n| Edge | 79+ |\n\n## 🧬 Framework Compatibility\n\nThe module has no framework dependency of its own — it only needs a\nQuill 2.x instance. Like Quill itself, it reads `document`/`HTMLElement`\nat construction time, so it cannot run during server-side rendering; in\nSSR frameworks (Next.js, Nuxt, Angular Universal, etc.) always create the\neditor on the client only. See [`examples/`](./examples/README.md) for\nworked Vanilla, React, Next.js, Vue, and Angular integrations, including\nSSR guidance and cleanup/`destroy()` lifecycle wiring.\n\n## 🤝 Contributing\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'feat: add amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n### Commit Convention\nThis project follows [Conventional Commits](https://www.conventionalcommits.org/) for automated versioning:\n\n- `feat:` for new features\n- `fix:` for bug fixes  \n- `docs:` for documentation\n- `style:` for formatting\n- `refactor:` for code refactoring\n- `test:` for tests\n- `chore:` for maintenance\n\n## 📋 Development\n\n```bash\n# Clone the repository\ngit clone https://github.com/BOTOOM/quill-resize-module.git\ncd quill-resize-module\n\n# Install dependencies (choose one)\nnpm install\n# pnpm install\n# yarn install\n\n# Start development\nnpm run dev\n\n# Run tests\nnpm test\n\n# Build for production\nnpm run build\n```\n\n## 📄 License\n\nMIT © [Edwar Diaz](https://github.com/BOTOOM)\n\n## 🔗 Related Projects\n\n- [Quill.js](https://quilljs.com/) - Modern rich text editor\n- [Quill Image Resize](https://github.com/kensnyder/quill-image-resize) - Alternative image resize module\n\n## 📊 Stats\n\n![GitHub stars](https://img.shields.io/github/stars/BOTOOM/quill-resize-module?style=social)\n![GitHub forks](https://img.shields.io/github/forks/BOTOOM/quill-resize-module?style=social)\n![GitHub issues](https://img.shields.io/github/issues/BOTOOM/quill-resize-module)\n![GitHub pull requests](https://img.shields.io/github/issues-pr/BOTOOM/quill-resize-module)\n","readmeFilename":"README.md"}