{"_id":"@alekstar79/draggable-resizable-container","_rev":"10-1b55f0e6768173d3c8e0e25647dcaf64","name":"@alekstar79/draggable-resizable-container","dist-tags":{"latest":"1.0.9"},"versions":{"1.0.0":{"name":"@alekstar79/draggable-resizable-container","version":"1.0.0","keywords":["reactive","edge-docking","draggable","resizable","container","typescript","plugin-system"],"author":{"name":"Aleksey Tarasenko","email":"alekstar79@yandex.ru"},"license":"MIT","_id":"@alekstar79/draggable-resizable-container@1.0.0","maintainers":[{"name":"alekstar79","email":"alekstar79@yandex.ru"}],"homepage":"https://github.com/alekstar79/draggable-resizable-container#readme","bugs":{"url":"https://github.com/alekstar79/draggable-resizable-container/issues"},"dist":{"shasum":"1eb31181c57de70b1a78cb7a8b1364c3ee4e08a6","tarball":"https://registry.npmjs.org/@alekstar79/draggable-resizable-container/-/draggable-resizable-container-1.0.0.tgz","fileCount":27,"integrity":"sha512-PsCiwg+MvZosA9Lckkl4siQtPvbr/UMCFKdyIQP/DtYcLqCFOv7ioQYxtkYc3gYDXnKpOCY+6JZlKikf4WnHRA==","signatures":[{"sig":"MEUCIAQHY9Qn9RKyTxRoRBhSpSepeROQTvUSzpYEqxh0uegBAiEAozQeZR0OepUGAUv1cX+U19CZwC2JyLPiPmtJnQidbLc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":275939},"main":"dist/index.esm.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","engines":{"npm":">=10.0.0","node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.esm.js","require":"./dist/index.umd.js"},"./styles":{"import":"./dist/styles/base.css","require":"./dist/styles/base.css"},"./plugins":{"types":"./dist/plugins/index.d.ts","import":"./dist/plugins/index.esm.js","require":"./dist/plugins/index.umd.js"}},"gitHead":"e8252e3ca540fd43f8b666e4ce5dec62d0282796","scripts":{"dev":"vite","test":"vitest","build":"yarn build:lib && vite build --config vite.config.ts","preview":"vite preview","test:ui":"vitest --ui","coverage":"vitest run --coverage","test:run":"vitest run","build:lib":"vite build --config vite.lib.config.ts","type-check":"tsc --noEmit","prepublishOnly":"yarn build:lib"},"_npmUser":{"name":"alekstar79","email":"alekstar79@yandex.ru"},"repository":{"url":"git+https://github.com/alekstar79/draggable-resizable-container.git","type":"git"},"_npmVersion":"10.9.4","description":"A modern TypeScript library for managing draggable and resizable containers","directories":{},"_nodeVersion":"22.21.1","dependencies":{"@alekstar79/utility":"^1.1.5","@alekstar79/template-loader":"^1.0.2","@alekstar79/reactive-event-system":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.0.8","jsdom":"^27.2.0","eslint":"^9.39.1","vitest":"^4.0.13","@vitest/ui":"^4.0.13","typescript":"^5.3.3","@types/node":"^24.10.0","vite-plugin-dts":"^3.6.4","@vitest/coverage-v8":"^4.0.13","vite-plugin-static-copy":"^3.1.4","@typescript-eslint/parser":"^8.47.0","vite-plugin-generate-file":"^0.3.1","vite-plugin-lib-inject-css":"^2.2.2","@typescript-eslint/eslint-plugin":"^8.47.0"},"_npmOperationalInternal":{"tmp":"tmp/draggable-resizable-container_1.0.0_1769437196408_0.6196500167450711","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@alekstar79/draggable-resizable-container","version":"1.0.1","keywords":["reactive","edge-docking","draggable","resizable","container","typescript","plugin-system"],"author":{"name":"Aleksey Tarasenko","email":"alekstar79@yandex.ru"},"license":"MIT","_id":"@alekstar79/draggable-resizable-container@1.0.1","maintainers":[{"name":"alekstar79","email":"alekstar79@yandex.ru"}],"homepage":"https://github.com/alekstar79/draggable-resizable-container#readme","bugs":{"url":"https://github.com/alekstar79/draggable-resizable-container/issues"},"dist":{"shasum":"7f782fc396df01987c72305671357be7a5c76f92","tarball":"https://registry.npmjs.org/@alekstar79/draggable-resizable-container/-/draggable-resizable-container-1.0.1.tgz","fileCount":27,"integrity":"sha512-17l7eHEi2r8b8lxlPcmwtb80gchFGN9oI7UWt6Nfc8miC9lzkx74bGz8OdxVUw6ECRGKThHjrlOqftpOw+dnDw==","signatures":[{"sig":"MEQCIA7mK3jvAQ1NSjl89wVTtpPDW+Jypm6qiMDEuWt817oGAiA4yZn8ZlaSSpgRY7aXOsKJs7/CyTJfxMlmVOdUBQ08CQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":275607},"main":"dist/index.esm.js","type":"module","types":"dist/index.d.ts","module":"dist/index.es.js","engines":{"npm":">=10.0.0","node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.umd.js"},"./styles":{"import":"./dist/styles/base.css","require":"./dist/styles/base.css"}},"gitHead":"85f0789bf2d9cbe49feead230803e7414140fb91","scripts":{"dev":"vite","test":"vitest","build":"yarn build:lib && vite build --config vite.config.ts","preview":"vite preview","test:ui":"vitest --ui","coverage":"vitest run --coverage","test:run":"vitest run","build:lib":"vite build --config vite.lib.config.ts","type-check":"tsc --noEmit","prepublishOnly":"yarn build:lib"},"_npmUser":{"name":"alekstar79","email":"alekstar79@yandex.ru"},"repository":{"url":"git+https://github.com/alekstar79/draggable-resizable-container.git","type":"git"},"_npmVersion":"10.9.4","description":"A modern TypeScript library for managing draggable and resizable containers","directories":{},"_nodeVersion":"22.21.1","dependencies":{"@alekstar79/utility":"^1.1.5","@alekstar79/template-loader":"^1.0.2","@alekstar79/reactive-event-system":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.0.8","jsdom":"^27.2.0","eslint":"^9.39.1","vitest":"^4.0.13","@vitest/ui":"^4.0.13","typescript":"^5.3.3","@types/node":"^24.10.0","vite-plugin-dts":"^3.6.4","@vitest/coverage-v8":"^4.0.13","vite-plugin-static-copy":"^3.1.4","@typescript-eslint/parser":"^8.47.0","vite-plugin-generate-file":"^0.3.1","vite-plugin-lib-inject-css":"^2.2.2","@typescript-eslint/eslint-plugin":"^8.47.0"},"_npmOperationalInternal":{"tmp":"tmp/draggable-resizable-container_1.0.1_1769438699118_0.3086073485355778","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@alekstar79/draggable-resizable-container","version":"1.0.2","keywords":["reactive","edge-docking","draggable","resizable","container","typescript","plugin-system"],"author":{"name":"Aleksey Tarasenko","email":"alekstar79@yandex.ru"},"license":"MIT","_id":"@alekstar79/draggable-resizable-container@1.0.2","maintainers":[{"name":"alekstar79","email":"alekstar79@yandex.ru"}],"homepage":"https://github.com/alekstar79/draggable-resizable-container#readme","bugs":{"url":"https://github.com/alekstar79/draggable-resizable-container/issues"},"dist":{"shasum":"9b60971fb750b21634aadec32e71acbaacaf86fa","tarball":"https://registry.npmjs.org/@alekstar79/draggable-resizable-container/-/draggable-resizable-container-1.0.2.tgz","fileCount":27,"integrity":"sha512-s2vEep405CtlsmnUkWhqseEU23mqxF9RyqphWh/oK0TIJyvw+DRn6sduPpJ/0wpwaeXa94KwRMGa9FOH2hcCuQ==","signatures":[{"sig":"MEQCIALdrjvC6ET1a1aaBPjm8yTgOiQ3+SiJyb0+T2OeWgA8AiB2DdRD2SUAXW2p8ANTH81lgDPtD13fj2DnpZP15grqXQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":275583},"main":"dist/index.esm.js","type":"module","types":"dist/index.d.ts","module":"dist/index.es.js","engines":{"npm":">=10.0.0","node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.umd.js"},"./styles":{"import":"./dist/index.css","require":"./dist/index.css"}},"gitHead":"5255a64c2745a42d594b2351854c5580ecea80de","scripts":{"dev":"vite","test":"vitest","build":"yarn build:lib && vite build --config vite.config.ts","preview":"vite preview","test:ui":"vitest --ui","coverage":"vitest run --coverage","test:run":"vitest run","build:lib":"vite build --config vite.lib.config.ts","type-check":"tsc --noEmit","prepublishOnly":"yarn build:lib"},"_npmUser":{"name":"alekstar79","email":"alekstar79@yandex.ru"},"repository":{"url":"git+https://github.com/alekstar79/draggable-resizable-container.git","type":"git"},"_npmVersion":"10.9.4","description":"A modern TypeScript library for managing draggable and resizable containers","directories":{},"_nodeVersion":"22.21.1","dependencies":{"@alekstar79/utility":"^1.1.5","@alekstar79/template-loader":"^1.0.2","@alekstar79/reactive-event-system":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.0.8","jsdom":"^27.2.0","eslint":"^9.39.1","vitest":"^4.0.13","@vitest/ui":"^4.0.13","typescript":"^5.3.3","@types/node":"^24.10.0","vite-plugin-dts":"^3.6.4","@vitest/coverage-v8":"^4.0.13","vite-plugin-static-copy":"^3.1.4","@typescript-eslint/parser":"^8.47.0","vite-plugin-generate-file":"^0.3.1","vite-plugin-lib-inject-css":"^2.2.2","@typescript-eslint/eslint-plugin":"^8.47.0"},"_npmOperationalInternal":{"tmp":"tmp/draggable-resizable-container_1.0.2_1769439532813_0.7103755494755821","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@alekstar79/draggable-resizable-container","version":"1.0.3","keywords":["reactive","edge-docking","draggable","resizable","container","typescript","plugin-system"],"author":{"name":"Aleksey Tarasenko","email":"alekstar79@yandex.ru"},"license":"MIT","_id":"@alekstar79/draggable-resizable-container@1.0.3","maintainers":[{"name":"alekstar79","email":"alekstar79@yandex.ru"}],"homepage":"https://github.com/alekstar79/draggable-resizable-container#readme","bugs":{"url":"https://github.com/alekstar79/draggable-resizable-container/issues"},"dist":{"shasum":"ee0d8c9bd9565dc2a653b65eb9a08bd4a83fa788","tarball":"https://registry.npmjs.org/@alekstar79/draggable-resizable-container/-/draggable-resizable-container-1.0.3.tgz","fileCount":33,"integrity":"sha512-HSsjgXK5DH4EJh2NetBzydyIgpn+boLB6nXvKRFpxgZHZkjQwMVUmWXL7fLDP2pMwMIZLAJOaDNLhh0mkZXQmA==","signatures":[{"sig":"MEUCIAaXmM7WSEe8DONgP2HypEyjgMAuuejnVK6iSgcLMnRuAiEAisgpUrvwdSJkg445rHZHksPUb/MgX7emndA5e1TfKdk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":558343},"main":"dist/index.esm.js","type":"module","types":"dist/index.d.ts","module":"dist/index.es.js","engines":{"npm":">=10.0.0","node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.umd.js"},"./styles":{"import":"./dist/index.css","require":"./dist/index.css"}},"gitHead":"676aafeeb225fc6ba4c1d1670f39d3b1bce0ca7d","scripts":{"dev":"vite","test":"vitest","build":"yarn build:lib && vite build --config vite.config.ts","preview":"vite preview","test:ui":"vitest --ui","coverage":"vitest run --coverage","test:run":"vitest run","build:lib":"vite build --config vite.lib.config.ts","type-check":"tsc --noEmit","prepublishOnly":"yarn build:lib"},"_npmUser":{"name":"alekstar79","email":"alekstar79@yandex.ru"},"repository":{"url":"git+https://github.com/alekstar79/draggable-resizable-container.git","type":"git"},"_npmVersion":"10.9.4","description":"A modern TypeScript library for managing draggable and resizable containers","directories":{},"_nodeVersion":"22.21.1","dependencies":{"@alekstar79/utility":"^1.1.5","@alekstar79/template-loader":"^1.0.2","@alekstar79/reactive-event-system":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.0.8","jsdom":"^27.2.0","eslint":"^9.39.1","vitest":"^4.0.13","@vitest/ui":"^4.0.13","typescript":"^5.3.3","@types/node":"^24.10.0","vite-plugin-dts":"^3.6.4","@vitest/coverage-v8":"^4.0.13","vite-plugin-static-copy":"^3.1.4","@typescript-eslint/parser":"^8.47.0","vite-plugin-generate-file":"^0.3.1","vite-plugin-lib-inject-css":"^2.2.2","@typescript-eslint/eslint-plugin":"^8.47.0"},"_npmOperationalInternal":{"tmp":"tmp/draggable-resizable-container_1.0.3_1769441390432_0.8131698888408554","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@alekstar79/draggable-resizable-container","version":"1.0.4","keywords":["reactive","edge-docking","draggable","resizable","container","typescript","plugin-system"],"author":{"name":"Aleksey Tarasenko","email":"alekstar79@yandex.ru"},"license":"MIT","_id":"@alekstar79/draggable-resizable-container@1.0.4","maintainers":[{"name":"alekstar79","email":"alekstar79@yandex.ru"}],"homepage":"https://github.com/alekstar79/draggable-resizable-container#readme","bugs":{"url":"https://github.com/alekstar79/draggable-resizable-container/issues"},"dist":{"shasum":"62336b00faae470bf0ff5d67983822e850f6164e","tarball":"https://registry.npmjs.org/@alekstar79/draggable-resizable-container/-/draggable-resizable-container-1.0.4.tgz","fileCount":33,"integrity":"sha512-Eptd276nE7pr4RbxEFlm4+aY8ttsevUJcS1ubWfdhKAEUqubvOfFxvU9YpxFQUUQyFqhD6bJXvbWQgMYD8tAHQ==","signatures":[{"sig":"MEUCIQD9aSlCFxjLQjlgzeKIk8gaGizObs58vhk8lJA0xpgX7wIgeXSb6ppTxDl0IvsfVuz0oP2Y4I29Fqn9qp5HVwOJHLI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":570941},"main":"dist/index.esm.js","type":"module","types":"dist/index.d.ts","module":"dist/index.es.js","engines":{"npm":">=10.0.0","node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.umd.js"},"./styles":{"import":"./dist/index.css","require":"./dist/index.css"}},"gitHead":"b951d4fd1eb04037f8e3334e7814167acee2bcf1","scripts":{"dev":"vite","test":"vitest","build":"yarn build:lib && vite build --config vite.config.ts","preview":"vite preview","test:ui":"vitest --ui","coverage":"vitest run --coverage","test:run":"vitest run","build:lib":"vite build --config vite.lib.config.ts","type-check":"tsc --noEmit","prepublishOnly":"yarn build:lib"},"_npmUser":{"name":"alekstar79","email":"alekstar79@yandex.ru"},"repository":{"url":"git+https://github.com/alekstar79/draggable-resizable-container.git","type":"git"},"_npmVersion":"10.9.4","description":"A modern TypeScript library for managing draggable and resizable containers","directories":{},"_nodeVersion":"22.21.1","dependencies":{"@alekstar79/utility":"^1.1.5","@alekstar79/template-loader":"^1.0.2","@alekstar79/reactive-event-system":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.0.8","jsdom":"^27.2.0","eslint":"^9.39.1","vitest":"^4.0.13","@vitest/ui":"^4.0.13","typescript":"^5.3.3","@types/node":"^24.10.0","vite-plugin-dts":"^3.6.4","@vitest/coverage-v8":"^4.0.13","vite-plugin-static-copy":"^3.1.4","@typescript-eslint/parser":"^8.47.0","vite-plugin-generate-file":"^0.3.1","vite-plugin-lib-inject-css":"^2.2.2","@typescript-eslint/eslint-plugin":"^8.47.0"},"_npmOperationalInternal":{"tmp":"tmp/draggable-resizable-container_1.0.4_1769442349638_0.49492484781458046","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@alekstar79/draggable-resizable-container","version":"1.0.5","keywords":["reactive","edge-docking","draggable","resizable","container","typescript","plugin-system"],"author":{"name":"Aleksey Tarasenko","email":"alekstar79@yandex.ru"},"license":"MIT","_id":"@alekstar79/draggable-resizable-container@1.0.5","maintainers":[{"name":"alekstar79","email":"alekstar79@yandex.ru"}],"homepage":"https://github.com/alekstar79/draggable-resizable-container#readme","bugs":{"url":"https://github.com/alekstar79/draggable-resizable-container/issues"},"dist":{"shasum":"df788d6d2d4d234cef7eb8341a1ba1133ff45f14","tarball":"https://registry.npmjs.org/@alekstar79/draggable-resizable-container/-/draggable-resizable-container-1.0.5.tgz","fileCount":33,"integrity":"sha512-Z1m9gO1049iXo1qF7btwzwKiv191sx4BikeXKB4d27n5/Ov9yq8Go5iy408MvAZV9saoSowscrviKEGdAAOxtw==","signatures":[{"sig":"MEYCIQD1mYBYT0zlTSc/dqKL+Vdoc6CMgkl+aD7YJLL+m2pVXQIhALmeaNZme2mhPSOeCY0J9Ev/GLCYit5/4JebnU4f0GJh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":570548},"main":"dist/index.esm.js","type":"module","types":"dist/index.d.ts","module":"dist/index.es.js","engines":{"npm":">=10.0.0","node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.umd.js"},"./styles":{"import":"./dist/index.css","require":"./dist/index.css"}},"gitHead":"8e8325e9b5f699e7c4d53bf4c4b402cbf3460415","scripts":{"dev":"vite","test":"vitest","build":"yarn build:lib && vite build --config vite.config.ts","preview":"vite preview","test:ui":"vitest --ui","coverage":"vitest run --coverage","test:run":"vitest run","build:lib":"vite build --config vite.lib.config.ts","type-check":"tsc --noEmit","prepublishOnly":"yarn build:lib"},"_npmUser":{"name":"alekstar79","email":"alekstar79@yandex.ru"},"repository":{"url":"git+https://github.com/alekstar79/draggable-resizable-container.git","type":"git"},"_npmVersion":"10.9.4","description":"A modern TypeScript library for managing draggable and resizable containers","directories":{},"_nodeVersion":"22.21.1","dependencies":{"@alekstar79/utility":"^1.1.5","@alekstar79/template-loader":"^1.0.2","@alekstar79/reactive-event-system":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.0.8","jsdom":"^27.2.0","eslint":"^9.39.1","vitest":"^4.0.13","@vitest/ui":"^4.0.13","typescript":"^5.3.3","@types/node":"^24.10.0","vite-plugin-dts":"^3.6.4","@vitest/coverage-v8":"^4.0.13","vite-plugin-static-copy":"^3.1.4","@typescript-eslint/parser":"^8.47.0","vite-plugin-generate-file":"^0.3.1","vite-plugin-lib-inject-css":"^2.2.2","@typescript-eslint/eslint-plugin":"^8.47.0"},"_npmOperationalInternal":{"tmp":"tmp/draggable-resizable-container_1.0.5_1769471030810_0.9694243553200348","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@alekstar79/draggable-resizable-container","version":"1.0.6","keywords":["reactive","edge-docking","draggable","resizable","container","typescript","plugin-system"],"author":{"name":"Aleksey Tarasenko","email":"alekstar79@yandex.ru"},"license":"MIT","_id":"@alekstar79/draggable-resizable-container@1.0.6","maintainers":[{"name":"alekstar79","email":"alekstar79@yandex.ru"}],"homepage":"https://github.com/alekstar79/draggable-resizable-container#readme","bugs":{"url":"https://github.com/alekstar79/draggable-resizable-container/issues"},"dist":{"shasum":"41d2ce64e66cbabe4e9d268a378e1a2be54004cc","tarball":"https://registry.npmjs.org/@alekstar79/draggable-resizable-container/-/draggable-resizable-container-1.0.6.tgz","fileCount":33,"integrity":"sha512-HYPzBJ4IeiggpnMmHWSXksQlpoGC8N+PZHVHqN0eI4o2VAQmHNNGda2Alt8YKP1k49BBEAfULs+mQOd7JBhjzQ==","signatures":[{"sig":"MEUCIQC1z5YpRTBYrj/F6wONxqoXu5Qlu1PbjojS52emeyBhugIgDOvH4lLIoWkZ7e9mt1otZ8jDvD2jBdq3ZNNipCWWk5k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":570556},"main":"dist/index.esm.js","type":"module","types":"dist/index.d.ts","module":"dist/index.es.js","engines":{"npm":">=10.0.0","node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.umd.js"},"./styles":{"import":"./dist/index.css","require":"./dist/index.css"}},"gitHead":"a9139ffd339854412b1fd889925bd3cc7866303d","scripts":{"dev":"vite","test":"vitest","build":"yarn build:lib && vite build --config vite.config.ts","preview":"vite preview","test:ui":"vitest --ui","coverage":"vitest run --coverage","test:run":"vitest run","build:lib":"vite build --config vite.lib.config.ts","type-check":"tsc --noEmit","prepublishOnly":"yarn build:lib"},"_npmUser":{"name":"alekstar79","email":"alekstar79@yandex.ru"},"repository":{"url":"git+https://github.com/alekstar79/draggable-resizable-container.git","type":"git"},"_npmVersion":"10.9.4","description":"A modern TypeScript library for managing draggable and resizable containers","directories":{},"_nodeVersion":"22.21.1","dependencies":{"@alekstar79/utility":"^1.1.5","@alekstar79/template-loader":"^1.0.2","@alekstar79/reactive-event-system":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.0.8","jsdom":"^27.2.0","eslint":"^9.39.1","vitest":"^4.0.13","@vitest/ui":"^4.0.13","typescript":"^5.3.3","@types/node":"^24.10.0","vite-plugin-dts":"^3.6.4","@vitest/coverage-v8":"^4.0.13","vite-plugin-static-copy":"^3.1.4","@typescript-eslint/parser":"^8.47.0","vite-plugin-generate-file":"^0.3.1","vite-plugin-lib-inject-css":"^2.2.2","@typescript-eslint/eslint-plugin":"^8.47.0"},"_npmOperationalInternal":{"tmp":"tmp/draggable-resizable-container_1.0.6_1769501299433_0.6295519572719523","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@alekstar79/draggable-resizable-container","version":"1.0.7","keywords":["reactive","edge-docking","draggable","resizable","container","typescript","plugin-system"],"author":{"name":"Aleksey Tarasenko","email":"alekstar79@yandex.ru"},"license":"MIT","_id":"@alekstar79/draggable-resizable-container@1.0.7","maintainers":[{"name":"alekstar79","email":"alekstar79@yandex.ru"}],"homepage":"https://github.com/alekstar79/draggable-resizable-container#readme","bugs":{"url":"https://github.com/alekstar79/draggable-resizable-container/issues"},"dist":{"shasum":"0f2e36cce6a7782436d52d05944b38b4c3432e5a","tarball":"https://registry.npmjs.org/@alekstar79/draggable-resizable-container/-/draggable-resizable-container-1.0.7.tgz","fileCount":33,"integrity":"sha512-N4VGXVhBVGZTWqFQgFylt+8N1//2RWAa/q6r9xR48MxckRl6GDg+zHvx4KqSQMn2FwfPl+OGBxCQyLiaPPVvgg==","signatures":[{"sig":"MEQCIGpJFwCe7hnhOeaZPVYXj8SLtdYvlq2+WP7fcI1cESjlAiB0xszSNMtan1GY0lWQmPl5a0VwfNrMHvYMB60wvpX1cA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":569330},"main":"dist/index.esm.js","type":"module","types":"dist/index.d.ts","module":"dist/index.es.js","engines":{"npm":">=10.0.0","node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.umd.js"},"./styles":{"import":"./dist/index.css","require":"./dist/index.css"}},"gitHead":"592250acc9ad2b83e9022a0c778cf3b9fb87834d","scripts":{"dev":"vite","test":"vitest","build":"yarn build:lib && vite build --config vite.config.ts","preview":"vite preview","test:ui":"vitest --ui","coverage":"vitest run --coverage","test:run":"vitest run","build:lib":"vite build --config vite.lib.config.ts","type-check":"tsc --noEmit","prepublishOnly":"yarn build:lib"},"_npmUser":{"name":"alekstar79","email":"alekstar79@yandex.ru"},"repository":{"url":"git+https://github.com/alekstar79/draggable-resizable-container.git","type":"git"},"_npmVersion":"10.9.4","description":"A modern TypeScript library for managing draggable and resizable containers","directories":{},"_nodeVersion":"22.21.1","dependencies":{"@alekstar79/utility":"^1.1.5","@alekstar79/template-loader":"^1.0.2","@alekstar79/reactive-event-system":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.0.8","jsdom":"^27.2.0","eslint":"^9.39.1","vitest":"^4.0.13","@vitest/ui":"^4.0.13","typescript":"^5.3.3","@types/node":"^24.10.0","vite-plugin-dts":"^3.6.4","@vitest/coverage-v8":"^4.0.13","vite-plugin-static-copy":"^3.1.4","@typescript-eslint/parser":"^8.47.0","vite-plugin-generate-file":"^0.3.1","vite-plugin-lib-inject-css":"^2.2.2","@typescript-eslint/eslint-plugin":"^8.47.0"},"_npmOperationalInternal":{"tmp":"tmp/draggable-resizable-container_1.0.7_1769518422669_0.5383583755311088","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@alekstar79/draggable-resizable-container","version":"1.0.8","keywords":["reactive","edge-docking","draggable","resizable","container","typescript","plugin-system"],"author":{"name":"Aleksey Tarasenko","email":"alekstar79@yandex.ru"},"license":"MIT","_id":"@alekstar79/draggable-resizable-container@1.0.8","maintainers":[{"name":"alekstar79","email":"alekstar79@yandex.ru"}],"homepage":"https://github.com/alekstar79/draggable-resizable-container#readme","bugs":{"url":"https://github.com/alekstar79/draggable-resizable-container/issues"},"dist":{"shasum":"4e092d1199959b58a3836c1d05829f65e831aea5","tarball":"https://registry.npmjs.org/@alekstar79/draggable-resizable-container/-/draggable-resizable-container-1.0.8.tgz","fileCount":33,"integrity":"sha512-7xeMmNWNgG4rZuYbLqcNdMhP+WUZMnOQNyzLGyjKI+Awvkj/hswAWk1lizBYFZ4wwAoZqxOR6bILu0ETutw/Jw==","signatures":[{"sig":"MEUCIQClEeTTFBdBS2XEY1304/auHGG4jGj+4ujAmeJpIWMzVQIgaiUWdGmkCA1VR9NnpLI99wPVzFuKlZzvX8Pcfo5W5dY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":569408},"main":"dist/index.esm.js","type":"module","types":"dist/index.d.ts","module":"dist/index.es.js","engines":{"npm":">=10.0.0","node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.es.js","require":"./dist/index.umd.js"},"./styles":{"import":"./dist/index.css","require":"./dist/index.css"},"./style.css":"./dist/index.css"},"gitHead":"fd88b45433d6493dbe7e2efcd31dabc2e6d19a01","scripts":{"dev":"vite","test":"vitest","build":"yarn build:lib && vite build --config vite.config.ts","preview":"vite preview","test:ui":"vitest --ui","coverage":"vitest run --coverage","test:run":"vitest run","build:lib":"vite build --config vite.lib.config.ts","type-check":"tsc --noEmit","prepublishOnly":"yarn build:lib"},"_npmUser":{"name":"alekstar79","email":"alekstar79@yandex.ru"},"repository":{"url":"git+https://github.com/alekstar79/draggable-resizable-container.git","type":"git"},"_npmVersion":"10.9.4","description":"A modern TypeScript library for managing draggable and resizable containers","directories":{},"_nodeVersion":"22.21.1","dependencies":{"@alekstar79/utility":"^1.1.5","@alekstar79/template-loader":"^1.0.2","@alekstar79/reactive-event-system":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^5.0.8","jsdom":"^27.2.0","eslint":"^9.39.1","vitest":"^4.0.13","@vitest/ui":"^4.0.13","typescript":"^5.3.3","@types/node":"^24.10.0","vite-plugin-dts":"^3.6.4","@vitest/coverage-v8":"^4.0.13","vite-plugin-static-copy":"^3.1.4","@typescript-eslint/parser":"^8.47.0","vite-plugin-generate-file":"^0.3.1","vite-plugin-lib-inject-css":"^2.2.2","@typescript-eslint/eslint-plugin":"^8.47.0"},"_npmOperationalInternal":{"tmp":"tmp/draggable-resizable-container_1.0.8_1769519907416_0.8082588977158238","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@alekstar79/draggable-resizable-container","version":"1.0.9","description":"A modern TypeScript library for managing draggable and resizable containers","author":{"name":"Aleksey Tarasenko","email":"alekstar79@yandex.ru"},"license":"MIT","type":"module","types":"dist/index.d.ts","main":"dist/index.esm.js","module":"dist/index.es.js","exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.umd.js","import":"./dist/index.es.js"},"./styles":{"import":"./dist/index.css","require":"./dist/index.css"},"./style.css":"./dist/index.css"},"scripts":{"dev":"vite","build":"yarn build:lib && vite build --config vite.config.ts","build:lib":"vite build --config vite.lib.config.ts","test":"vitest","test:run":"vitest run","test:ui":"vitest --ui","coverage":"vitest run --coverage","type-check":"tsc --noEmit","preview":"vite preview","prepublishOnly":"yarn build:lib"},"keywords":["reactive","edge-docking","draggable","resizable","container","typescript","plugin-system"],"repository":{"type":"git","url":"git+https://github.com/alekstar79/draggable-resizable-container.git"},"bugs":{"url":"https://github.com/alekstar79/draggable-resizable-container/issues"},"homepage":"https://github.com/alekstar79/draggable-resizable-container#readme","devDependencies":{"@types/node":"^24.10.0","@typescript-eslint/eslint-plugin":"^8.47.0","@typescript-eslint/parser":"^8.47.0","@vitest/coverage-v8":"^4.0.13","@vitest/ui":"^4.0.13","eslint":"^9.39.1","jsdom":"^27.2.0","typescript":"^5.3.3","vite":"^5.0.8","vite-plugin-dts":"^3.6.4","vite-plugin-generate-file":"^0.3.1","vite-plugin-lib-inject-css":"^2.2.2","vite-plugin-static-copy":"^3.1.4","vitest":"^4.0.13"},"dependencies":{"@alekstar79/reactive-event-system":"^1.0.1","@alekstar79/template-loader":"^1.0.2","@alekstar79/utility":"^1.1.5"},"publishConfig":{"access":"public"},"engines":{"node":">=20.0.0","npm":">=10.0.0"},"_id":"@alekstar79/draggable-resizable-container@1.0.9","gitHead":"14a6d52632258b2bddb41adeb786dda1beafde16","_nodeVersion":"22.21.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-GogP9HPUjOD32iWUqYdeK40iTMjhkqbjehvpl6qDfbCDPT/NUMS5+UVgAjc68phF8Kc4sXWxl9xBrstPS/7WgA==","shasum":"5c7da0d01f673c2e630750c4320cd19737f22b4a","tarball":"https://registry.npmjs.org/@alekstar79/draggable-resizable-container/-/draggable-resizable-container-1.0.9.tgz","fileCount":33,"unpackedSize":568468,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC0ejL3N9ldhqjOTvj4SZunnHIyyKMcOkuyFgyGXlbbBwIgfMEX4vHKY2x1ckwKqGapuo05ZRaDHLYd2lUqprktZwQ="}]},"_npmUser":{"name":"alekstar79","email":"alekstar79@yandex.ru"},"directories":{},"maintainers":[{"name":"alekstar79","email":"alekstar79@yandex.ru"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/draggable-resizable-container_1.0.9_1769530380641_0.7453929945990829"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-26T14:19:56.308Z","modified":"2026-01-27T16:13:00.962Z","1.0.0":"2026-01-26T14:19:56.574Z","1.0.1":"2026-01-26T14:44:59.273Z","1.0.2":"2026-01-26T14:58:52.947Z","1.0.3":"2026-01-26T15:29:50.581Z","1.0.4":"2026-01-26T15:45:49.785Z","1.0.5":"2026-01-26T23:43:50.977Z","1.0.6":"2026-01-27T08:08:19.605Z","1.0.7":"2026-01-27T12:53:42.808Z","1.0.8":"2026-01-27T13:18:27.638Z","1.0.9":"2026-01-27T16:13:00.845Z"},"bugs":{"url":"https://github.com/alekstar79/draggable-resizable-container/issues"},"author":{"name":"Aleksey Tarasenko","email":"alekstar79@yandex.ru"},"license":"MIT","homepage":"https://github.com/alekstar79/draggable-resizable-container#readme","keywords":["reactive","edge-docking","draggable","resizable","container","typescript","plugin-system"],"repository":{"type":"git","url":"git+https://github.com/alekstar79/draggable-resizable-container.git"},"description":"A modern TypeScript library for managing draggable and resizable containers","maintainers":[{"name":"alekstar79","email":"alekstar79@yandex.ru"}],"readme":"# Draggable and Resizable Container\n\n[![npm version](https://img.shields.io/npm/v/draggable-resizable-container.svg)](https://www.npmjs.com/package/@alekstar79/draggable-resizable-container)\n[![Coverage](https://img.shields.io/badge/coverage-80%25-brightgreen.svg)](https://github.com/alekstar79/utils/actions)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.9-blue?style=flat-square)](https://www.typescriptlang.org)\n[![Node](https://img.shields.io/badge/Node-18%2B-green?style=flat-square)](https://nodejs.org)\n[![Browser](https://img.shields.io/badge/Browser-ES2018-green)]()\n[![License MIT](https://img.shields.io/badge/License-MIT-blue)](LICENSE)\n\nA modern, lightweight, and extensible TypeScript library for creating draggable and resizable containers (windows, dialogs) in your web applications. It features a reactive core, a powerful plugin system, and a clean API.\n\n![banner](banner.svg)\n\n## Features\n\n- **Draggable & Resizable**: Smooth, performant dragging and resizing of containers with multiple handle directions.\n- **Reactive Core**: Built with `@alekstar79/reactive-event-system` for efficient state management and event handling.\n- **Extensible Plugin System**: Easily add new features like snapping, docking, or state persistence.\n- **Rich Event System**: Subscribe to a wide range of events (`dragStart`, `drag`, `dragEnd`, `resize`, etc.).\n- **Boundary Constraints**: Confine containers to the viewport or a parent element.\n- **Customizable**: Control movement direction, resize handles, and more.\n- **Touch Device Support**: Works on both desktop and mobile devices.\n- **Template Loading**: A system for loading content from HTML templates.\n- **State Persistence**: Save and restore container states using `localStorage`.\n- **TypeScript First**: Written entirely in TypeScript for strong typing and better developer experience.\n\n## Installation\n\nYou can install the library using npm or yarn:\n\n```bash\nnpm install @alekstar79/draggable-resizable-container\n```\n\nor\n\n```bash\nyarn add @alekstar79/draggable-resizable-container\n```\n\nYou also need to import the base styles for the library to work correctly.\n\n```javascript\nimport '@alekstar79/draggable-resizable-container/styles.css'\n```\n\n## Quick Start\n\nHere's a simple example of how to create a draggable and resizable container.\n\n**HTML:**\n\n```html\n<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n  <title>Draggable and Resizable Container</title>\n  <link\n    href=\"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.1/css/all.min.css\"\n    rel=\"stylesheet\"\n  >\n  <script src=\"src/index.ts\" type=\"module\"></script>\n</head>\n<body></body>\n</html>\n```\n\n**TypeScript:**\n\n- See code from the [example](example)\n\n## `ContainerManager` API\n\nThe `ContainerManager` is the core class of the library.\n\n### `new ContainerManager(element, config)`\n\nCreates a new `ContainerManager` instance.\n\n- `element`: The `HTMLElement` to be managed.\n- `config` (optional): A `ContainerConfig` object for customization.\n\n### `ContainerConfig`\n\n| Property              | Type            | Description                                                                    |\n|-----------------------|-----------------|--------------------------------------------------------------------------------|\n| `mode`                | `MovementMode`  | `'smooth'` (default) or `'pinned'`.                                            |\n| `boundaries`          | `Boundaries`    | An object with `minWidth`, `minHeight`, `maxWidth`, `maxHeight`.               |\n| `draggingDirection`   | `DirectionMode` | `'all'` (default), `'horizontal'`, or `'vertical'`.                            |\n| `constrainToViewport` | `boolean`       | If `true`, constrains the container to the viewport. Default is `false`.       |\n| `constrainToParent`   | `boolean`       | If `true`, constrains the container to its parent element. Default is `false`. |\n| `resize`              | `ResizeConfig`  | Configuration for resizing.                                                    |\n\n### Methods\n\n- `getState(): ContainerState`: Returns the current state (`x`, `y`, `width`, `height`) of the container.\n- `setState(state: Partial<ContainerState>)`: Sets the state of the container.\n- `getMode(): MovementMode`: Returns the current movement mode.\n- `setMode(mode: MovementMode)`: Sets the movement mode.\n- `getDirection(): DirectionMode`: Returns the current dragging direction.\n- `setDirection(direction: DirectionMode)`: Sets the dragging direction.\n- `on(event: string, callback: (data: ContainerEvent) => void)`: Subscribes to an event.\n- `off(event: string, callback: (data: ContainerEvent) => void)`: Unsubscribes from an event.\n- `destroy()`: Cleans up the `ContainerManager` instance and removes event listeners.\n\n### Events\n\nYou can subscribe to the following events using the `on` method:\n\n- `dragStart`, `drag`, `dragEnd`\n- `resizeStart`, `resize`, `resizeEnd`\n- `modeChange`\n- `stateChange`\n- `viewportResize`\n\n## Plugin System\n\nThe library has a powerful plugin system that allows you to extend its functionality.\n\n### Using a Plugin\n\nTo use a plugin, simply import it and pass it to the `use` method of your `ContainerManager` instance.\n\n```typescript\nimport { ContainerManager, SnappingPlugin } from '@alekstar79/draggable-resizable-container'\n\nconst manager = new ContainerManager(containerElement);\n\nmanager.use(new SnappingPlugin({\n  snapStep: 20,\n  enabled: true,\n}));\n```\n\n### Included Plugins\n\n#### `SnappingPlugin`\n\nAdds snapping functionality to the container.\n\n**Options:**\n\n- `snapStep`: The size of the grid to snap to (in pixels). Default is `10`.\n- `enabled`: Whether snapping is enabled. Default is `true`.\n\n**Methods added to `ContainerManager`:**\n\n- `setSnapStep(step: number)`\n- `setSnappingEnabled(enabled: boolean)`\n- `getSnappingConfig(): SnappingPluginOptions`\n\n#### `EdgeDockingPlugin`\n\nAllows containers to be \"docked\" to the edges of the screen.\n\n**Options:**\n\n- `edgeThreshold`: The distance from the edge (in pixels) at which docking is triggered. Default is `30`.\n- `visiblePeek`: The amount of the container (in pixels) that remains visible when docked. Default is `20`.\n\n**Methods added to `ContainerManager`:**\n\n- `isContainerDocked(element: HTMLElement): boolean`\n- `getContainerDockEdge(element: HTMLElement): Edge | null`\n\n#### `StatePersistencePlugin`\n\nSaves the state of containers to `localStorage` and restores it on page load.\n\n**Options:**\n\n- `containerId`: A unique ID for the container, required for persistence.\n- `isDemo`: A flag to indicate if the container is part of the demo (for demo-specific logic).\n\n**Example:**\n\n```typescript\nimport { StatePersistencePlugin } from '@alekstar79/draggable-resizable-container'\n\nmanager.use(new StatePersistencePlugin({\n  containerId: 'my-unique-container-id',\n}))\n```\n\n## Utilities\n\nThe library also exports several utility classes that you can use.\n\n### `ContainerInitializer`\n\nA simple utility for creating a container element.\n\n```typescript\nimport { ContainerInitializer } from '@alekstar79/draggable-resizable-container'\n\nconst newContainer = ContainerInitializer.createContainerElement(400, 250, 100, 100)\ndocument.body.appendChild(newContainer)\n```\n\n### `ContentCreator` and `TemplateLoader`\n\nThese utilities help with managing the content of your containers, including loading HTML templates.\n\n```typescript\nimport { ContentCreator, getTemplateLoader, initializeTemplateSystem } from '@alekstar79/draggable-resizable-container'\n\n// Initialize the template system once in your app\nawait initializeTemplateSystem()\n\nconst templateLoader = getTemplateLoader()\nconst contentCreator = new ContentCreator(templateLoader)\n\n// Load content from a template\nawait contentCreator.createContent({ template: 'my-template-name' }, containerElement)\n```\n\n## Development\n\n```bash\n# Install dependencies\nnpm install\n\n# Start development server\nnpm run dev\n\n# Build library\nnpm run build:lib\n\n# Build demo\nnpm run build\n\n# Type checking\nnpm run type-check\n```\n\n## Browser Support\n\n- Chrome 88+\n- Firefox 78+\n- Safari 14+\n- Edge 88+\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a pull request.\n\n## License\n\nThis project is licensed under the [MIT License](LICENSE).\n","readmeFilename":"README.md"}