{"_id":"@andynoob/move-it","_rev":"18-7239b86e18ec7591cab6d4e7896e8fd1","name":"@andynoob/move-it","dist-tags":{"latest":"1.0.0"},"versions":{"0.0.1":{"name":"@andynoob/move-it","version":"0.0.1","keywords":[],"author":{"name":"AndyNoob"},"license":"MIT","_id":"@andynoob/move-it@0.0.1","maintainers":[{"name":"andynoob","email":"thenoobies+npm@googlegroups.com"}],"dist":{"shasum":"6c0c0d913875bd1ae80a93b5a38a137f64cdf1ef","tarball":"https://registry.npmjs.org/@andynoob/move-it/-/move-it-0.0.1.tgz","fileCount":23,"integrity":"sha512-2ZJpUv+K8DFSBG8dVxGR8iP3BH3XwxRk/dxrHhKxtS4ebNRAouScis7XoeSPqhyHKpRWmwX9lqtsGBKPCffrhg==","signatures":[{"sig":"MEUCIQDdc5LJsE8vRKdnJ+6fD+MprqeO63NqIG9clB7FvHmCTgIgY8hrJHsf9x7LJyIlm6YEVfdVCWSDgvZUREbqo3NwFQ0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":111937},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./control.css":"./dist/control.css"},"gitHead":"29a362267d23e782dad47e0242fd27c8ea8e3dde","scripts":{"lint":"eslint src","test":"vitest run","build":"tsup && tsc -p tsconfig.build.json --emitDeclarationOnly","prepack":"npm run typecheck && npm run lint && npm run test && npm run build","typecheck":"tsc -p tsconfig.build.json --noEmit","dev:playground":"vite","build:playground":"vite build"},"_npmUser":{"name":"andynoob","email":"thenoobies+npm@googlegroups.com"},"_npmVersion":"11.16.0","description":"DOM rectangle transform controls","directories":{},"sideEffects":["*.css"],"_nodeVersion":"23.11.0","_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.7.0","tsup":"^8.5.1","vite":"^8.0.16","jsdom":"^27.0.1","eslint":"^9.39.4","vitest":"^3.2.6","globals":"^17.6.0","@eslint/js":"^9.39.4","typescript":"^6.0.3","@types/node":"^26.0.0","typescript-eslint":"^8.61.1"},"_npmOperationalInternal":{"tmp":"tmp/move-it_0.0.1_1782271420183_0.8369320278357155","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@andynoob/move-it","version":"0.0.2","keywords":[],"author":{"name":"AndyNoob"},"license":"MIT","_id":"@andynoob/move-it@0.0.2","maintainers":[{"name":"andynoob","email":"thenoobies+npm@googlegroups.com"}],"dist":{"shasum":"6f37a8fc6bd2b93fa40b5565f0807f0fad27719c","tarball":"https://registry.npmjs.org/@andynoob/move-it/-/move-it-0.0.2.tgz","fileCount":23,"integrity":"sha512-QcjKlAVBrZt4mArB20mTsIuTMRURcDWfXKvIE7escE6mENDn5PVz1yIfaW3sycUEICt6mZsgs3Ma68i+uVS5rg==","signatures":[{"sig":"MEQCIHTxBOtr0AF1hr5rfii6I3N6swUSGsstBZd5+4/e6BllAiARfvvpnLWn2i7fQhSKGMLzaj4X5/EPeEMKZwx3CqAp8w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":111974},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./control.css":"./dist/control.css"},"gitHead":"9ed2150a24277597d9895ed5fd3c1f0d27919724","scripts":{"lint":"eslint src","test":"vitest run","build":"tsup && tsc -p tsconfig.build.json --emitDeclarationOnly","prepack":"npm run typecheck && npm run lint && npm run test && npm run build","typecheck":"tsc -p tsconfig.build.json --noEmit","dev:playground":"vite","build:playground":"vite build"},"_npmUser":{"name":"andynoob","email":"thenoobies+npm@googlegroups.com"},"_npmVersion":"11.16.0","description":"DOM rectangle transform controls","directories":{},"sideEffects":["*.css"],"_nodeVersion":"23.11.0","_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.7.0","tsup":"^8.5.1","vite":"^8.0.16","jsdom":"^27.0.1","eslint":"^9.39.4","vitest":"^3.2.6","globals":"^17.6.0","@eslint/js":"^9.39.4","typescript":"^6.0.3","@types/node":"^26.0.0","typescript-eslint":"^8.61.1"},"_npmOperationalInternal":{"tmp":"tmp/move-it_0.0.2_1782271614091_0.07550821256544804","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@andynoob/move-it","version":"0.1.0","keywords":[],"author":{"name":"AndyNoob"},"license":"MIT","_id":"@andynoob/move-it@0.1.0","maintainers":[{"name":"andynoob","email":"thenoobies+npm@googlegroups.com"}],"dist":{"shasum":"44ac32692e40fea148dfe11d38e329de2f2c155a","tarball":"https://registry.npmjs.org/@andynoob/move-it/-/move-it-0.1.0.tgz","fileCount":23,"integrity":"sha512-7pDBSC/JSgMwzKTccVLz0GymU8L3mzcAvhMRxhQO/+h+4SNi8cSI02cST5+TWnZiwGQz9jx6gPoF6+koH+FqQw==","signatures":[{"sig":"MEUCIQCKM7HOzdGVLKS0gycbyf0W267Br0gLogdwd9AU7hmeMQIgVJylckc9dD76X80obBNgzEIB9avrhOApauXrmxTkwjM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":114699},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./control.css":"./dist/control.css"},"gitHead":"5dac3ffd9c5bab8322f3f31e380d13d9d752eb44","scripts":{"lint":"eslint src","test":"vitest run","build":"tsup && tsc -p tsconfig.build.json --emitDeclarationOnly","prepack":"npm run typecheck && npm run lint && npm run test && npm run build","typecheck":"tsc -p tsconfig.build.json --noEmit","dev:playground":"vite","build:playground":"vite build"},"_npmUser":{"name":"andynoob","email":"thenoobies+npm@googlegroups.com"},"_npmVersion":"11.16.0","description":"DOM rectangle transform controls","directories":{},"sideEffects":["*.css"],"_nodeVersion":"23.11.0","_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.7.0","tsup":"^8.5.1","vite":"^8.0.16","jsdom":"^27.0.1","eslint":"^9.39.4","vitest":"^3.2.6","globals":"^17.6.0","@eslint/js":"^9.39.4","typescript":"^6.0.3","@types/node":"^26.0.0","typescript-eslint":"^8.61.1"},"_npmOperationalInternal":{"tmp":"tmp/move-it_0.1.0_1783313385925_0.4570750485263908","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@andynoob/move-it","version":"0.2.0","keywords":[],"author":{"name":"AndyNoob"},"license":"MIT","_id":"@andynoob/move-it@0.2.0","maintainers":[{"name":"andynoob","email":"thenoobies+npm@googlegroups.com"}],"dist":{"shasum":"22e1992d1a8840a4691c5bada13dd0cc67d29c88","tarball":"https://registry.npmjs.org/@andynoob/move-it/-/move-it-0.2.0.tgz","fileCount":23,"integrity":"sha512-0RL2snQhj8p46bgk1l3sDbgV+vv+C6khKw5yXiH68Z6y1QqDhwTtak90azBliMzGTomypj+m2uTv8AuMx3oAWg==","signatures":[{"sig":"MEUCIQDtwGcepgHNx2dqdXVteEsuXPHG6wEQPq/zrNw0l3Hb9QIgEc9ej3lO82+EJfEHHyQI6QciwUHhLGhQVv5708KbjA8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":120081},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./control.css":"./dist/control.css"},"gitHead":"968667a6c893023bc05b2ca21305fdd1b08413b8","scripts":{"lint":"eslint src","test":"vitest run","build":"tsup && tsc -p tsconfig.build.json --emitDeclarationOnly","prepack":"npm run typecheck && npm run lint && npm run test && npm run build","typecheck":"tsc -p tsconfig.build.json --noEmit","dev:playground":"vite","build:playground":"vite build"},"_npmUser":{"name":"andynoob","email":"thenoobies+npm@googlegroups.com","approver":{"name":"andynoob","email":"thenoobies+npm@googlegroups.com"}},"_npmVersion":"11.16.0","description":"DOM rectangle transform controls","directories":{},"sideEffects":["*.css"],"_nodeVersion":"23.11.0","_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.7.0","tsup":"^8.5.1","vite":"^8.0.16","jsdom":"^27.0.1","eslint":"^9.39.4","vitest":"^3.2.6","globals":"^17.6.0","@eslint/js":"^9.39.4","typescript":"^6.0.3","@types/node":"^26.0.0","typescript-eslint":"^8.61.1"},"_npmOperationalInternal":{"tmp":"tmp/move-it_0.2.0_1783798732282_0.5881149268351622","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@andynoob/move-it","version":"0.2.1","keywords":[],"author":{"name":"AndyNoob"},"license":"MIT","_id":"@andynoob/move-it@0.2.1","maintainers":[{"name":"andynoob","email":"thenoobies+npm@googlegroups.com"}],"dist":{"shasum":"dec5633f5826ea91573e4375d2fd56dff5278c03","tarball":"https://registry.npmjs.org/@andynoob/move-it/-/move-it-0.2.1.tgz","fileCount":23,"integrity":"sha512-F+umO/FrhMUA20C1JRMqbe3pjaEe8TLFJsdpaXf1+W4MzaFMZDLDmPpOhHsh/SMYU4D/mwtNHIbD0GckAL+NQQ==","signatures":[{"sig":"MEYCIQDeepsi1GZ3ULTR6nfCf1HP6JcD5iUbD27gRd0SUZTjgQIhALQ8lFqUQg06CDDg3MjNM1hF2XcMT0/GrQ7dBUfCPwA7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":120820},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./control.css":"./dist/control.css"},"gitHead":"113a15763f3048f1ca7df361953a18fb15893740","scripts":{"lint":"eslint src","test":"vitest run","build":"tsup && tsc -p tsconfig.build.json --emitDeclarationOnly","prepack":"npm run typecheck && npm run lint && npm run test && npm run build","typecheck":"tsc -p tsconfig.build.json --noEmit","dev:playground":"vite","build:playground":"vite build"},"_npmUser":{"name":"andynoob","email":"thenoobies+npm@googlegroups.com"},"_npmVersion":"11.16.0","description":"DOM rectangle transform controls","directories":{},"sideEffects":["*.css"],"_nodeVersion":"23.11.0","_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.7.0","tsup":"^8.5.1","vite":"^8.0.16","jsdom":"^27.0.1","eslint":"^9.39.4","vitest":"^3.2.6","globals":"^17.6.0","@eslint/js":"^9.39.4","typescript":"^6.0.3","@types/node":"^26.0.0","typescript-eslint":"^8.61.1"},"_npmOperationalInternal":{"tmp":"tmp/move-it_0.2.1_1784004804086_0.4826268486325347","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@andynoob/move-it","version":"0.3.0","keywords":[],"author":{"name":"AndyNoob"},"license":"MIT","_id":"@andynoob/move-it@0.3.0","maintainers":[{"name":"andynoob","email":"thenoobies+npm@googlegroups.com"}],"dist":{"shasum":"99292fa27fe278cbbeafabeac11e73ac87788912","tarball":"https://registry.npmjs.org/@andynoob/move-it/-/move-it-0.3.0.tgz","fileCount":23,"integrity":"sha512-Ums0+i92a1uqyLAo4b6jt9kCtC+SXOokW8Jl82HlqkK7AzF6WWDqBsnxS96I0roAIx6uN/i4BmfqMC5YqavaSQ==","signatures":[{"sig":"MEQCIHu+RMPMeuGppmeUycqyRWVPwIEdmjxmwyHqSdMVu+C2AiAKSEyKzLpVFz0bIurnBmGwP9US43X+/5y/E9wxCxMitw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122837},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./control.css":"./dist/control.css"},"gitHead":"1c2f86a951e15d6d3ae5f5e8213957bacd99d9fd","scripts":{"lint":"eslint src","test":"vitest run","build":"tsup && tsc -p tsconfig.build.json --emitDeclarationOnly","prepack":"npm run typecheck && npm run lint && npm run test && npm run build","typecheck":"tsc -p tsconfig.build.json --noEmit","dev:playground":"vite","build:playground":"vite build"},"_npmUser":{"name":"andynoob","email":"thenoobies+npm@googlegroups.com"},"_npmVersion":"11.16.0","description":"DOM rectangle transform controls","directories":{},"sideEffects":["*.css"],"_nodeVersion":"23.11.0","_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.7.0","tsup":"^8.5.1","vite":"^8.0.16","jsdom":"^27.0.1","eslint":"^9.39.4","vitest":"^3.2.6","globals":"^17.6.0","@eslint/js":"^9.39.4","typescript":"^6.0.3","@types/node":"^26.0.0","typescript-eslint":"^8.61.1"},"_npmOperationalInternal":{"tmp":"tmp/move-it_0.3.0_1784022680035_0.8748286239157681","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@andynoob/move-it","version":"0.3.1","keywords":[],"author":{"name":"AndyNoob"},"license":"MIT","_id":"@andynoob/move-it@0.3.1","maintainers":[{"name":"andynoob","email":"thenoobies+npm@googlegroups.com"}],"dist":{"shasum":"865f295c68394a21e1752848aec502e7339ede55","tarball":"https://registry.npmjs.org/@andynoob/move-it/-/move-it-0.3.1.tgz","fileCount":23,"integrity":"sha512-WYd1hwfMo0xwXi24RatTNXL4Nb2kkbieBBrxeo4wLL7d4ZBc2zHcbS3Gnl3L7TBF0Qrg/HUSy7yHYz56wgHAPA==","signatures":[{"sig":"MEYCIQCAXyKQJGaC0SDgwL1wuT2IgLQvL6ywLVOtHAjQknTQvwIhAOe3UcirexNe/Q9K07dzqZFoaDAiTJJYA+beTIAu5PbX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122920},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./control.css":"./dist/control.css"},"gitHead":"cf5a1924a72fdad652cc14b903a779cc5d2a9687","scripts":{"lint":"eslint src","test":"vitest run","build":"tsup && tsc -p tsconfig.build.json --emitDeclarationOnly","prepack":"npm run typecheck && npm run lint && npm run test && npm run build","typecheck":"tsc -p tsconfig.build.json --noEmit","dev:playground":"vite","build:playground":"vite build"},"_npmUser":{"name":"andynoob","email":"thenoobies+npm@googlegroups.com"},"_npmVersion":"11.16.0","description":"DOM rectangle transform controls","directories":{},"sideEffects":["*.css"],"_nodeVersion":"23.11.0","_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.7.0","tsup":"^8.5.1","vite":"^8.0.16","jsdom":"^27.0.1","eslint":"^9.39.4","vitest":"^3.2.6","globals":"^17.6.0","@eslint/js":"^9.39.4","typescript":"^6.0.3","@types/node":"^26.0.0","typescript-eslint":"^8.61.1"},"_npmOperationalInternal":{"tmp":"tmp/move-it_0.3.1_1784028143058_0.9131481313086622","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@andynoob/move-it","version":"0.3.2","keywords":[],"author":{"name":"AndyNoob"},"license":"MIT","_id":"@andynoob/move-it@0.3.2","maintainers":[{"name":"andynoob","email":"thenoobies+npm@googlegroups.com"}],"dist":{"shasum":"75b1a69a06a353422c69c1e4ffa5146a44491c18","tarball":"https://registry.npmjs.org/@andynoob/move-it/-/move-it-0.3.2.tgz","fileCount":23,"integrity":"sha512-cVzpjZwDtCjiy12JoWRE4r4n53XJD0jeCzYa2W9WNSVUTUU8myJIYzWtoc3opqlqfsjve9nLk66ok0knN0HiXw==","signatures":[{"sig":"MEUCIQD/hglddDCwNCdOgBhJxKpouFxWgVlT23NbYWe5lXi3hwIgIugF2OzVrrHCtXFgwGqneQdw41C3IxNfJNw1tetcUhQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122926},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./control.css":"./dist/control.css"},"gitHead":"6ace374744c726cdae1bd7a9a796cce17fc178de","scripts":{"lint":"eslint src","test":"vitest run","build":"tsup && tsc -p tsconfig.build.json --emitDeclarationOnly","prepack":"npm run typecheck && npm run lint && npm run test && npm run build","typecheck":"tsc -p tsconfig.build.json --noEmit","dev:playground":"vite","build:playground":"vite build"},"_npmUser":{"name":"andynoob","email":"thenoobies+npm@googlegroups.com"},"_npmVersion":"11.16.0","description":"DOM rectangle transform controls","directories":{},"sideEffects":["*.css"],"_nodeVersion":"23.11.0","_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.7.0","tsup":"^8.5.1","vite":"^8.0.16","jsdom":"^27.0.1","eslint":"^9.39.4","vitest":"^3.2.6","globals":"^17.6.0","@eslint/js":"^9.39.4","typescript":"^6.0.3","@types/node":"^26.0.0","typescript-eslint":"^8.61.1"},"_npmOperationalInternal":{"tmp":"tmp/move-it_0.3.2_1784082435999_0.010781945676790139","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@andynoob/move-it","version":"0.4.1","keywords":[],"author":{"name":"AndyNoob"},"license":"MIT","_id":"@andynoob/move-it@0.4.1","maintainers":[{"name":"andynoob","email":"thenoobies+npm@googlegroups.com"}],"dist":{"shasum":"20efa86270cac2900ac73e8248c1383f70832a09","tarball":"https://registry.npmjs.org/@andynoob/move-it/-/move-it-0.4.1.tgz","fileCount":23,"integrity":"sha512-r9zJJqIxyjkLHsBkvhLHLlwtO/ZN+tZ6RXJWkIk4bLXqAmnyAi1TUHoEjB1oLf2dOU+k++EOJFiN2HxpY8BQ8w==","signatures":[{"sig":"MEUCIQCutI3wKbJKZIqNXLP1v6AVnf9U+rNzkvK6mkhtnz33fwIgK4RytANg8oc/a79G+EUdGMw2XHqPCNimopLCr367FK4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":134928},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./control.css":"./dist/control.css"},"gitHead":"2566165bf767a7abc9915b8635a134f2dbb09a42","scripts":{"lint":"eslint src","test":"vitest run","build":"tsup && tsc -p tsconfig.build.json --emitDeclarationOnly","prepack":"npm run typecheck && npm run lint && npm run test && npm run build","typecheck":"tsc -p tsconfig.build.json --noEmit","dev:playground":"vite","build:playground":"vite build"},"_npmUser":{"name":"andynoob","email":"thenoobies+npm@googlegroups.com"},"_npmVersion":"11.16.0","description":"DOM rectangle transform controls","directories":{},"sideEffects":["*.css"],"_nodeVersion":"23.11.0","_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.7.0","tsup":"^8.5.1","vite":"^8.0.16","jsdom":"^27.0.1","eslint":"^9.39.4","vitest":"^3.2.6","globals":"^17.6.0","@eslint/js":"^9.39.4","typescript":"^6.0.3","@types/node":"^26.0.0","typescript-eslint":"^8.61.1"},"_npmOperationalInternal":{"tmp":"tmp/move-it_0.4.1_1784457862745_0.3491593082253017","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@andynoob/move-it","version":"0.4.2","keywords":[],"author":{"name":"AndyNoob"},"license":"MIT","_id":"@andynoob/move-it@0.4.2","maintainers":[{"name":"andynoob","email":"thenoobies+npm@googlegroups.com"}],"dist":{"shasum":"8ade6bae0fca3fe539bf617515eeea8cda42b74d","tarball":"https://registry.npmjs.org/@andynoob/move-it/-/move-it-0.4.2.tgz","fileCount":23,"integrity":"sha512-kOkRJOKE3NQbCibKg/MXICLFbIJT1wNG2daeuAiYhWLEN+QmlFFE51PBoUMr+4mAr0F53D8Nsjo4naKO/UNZCg==","signatures":[{"sig":"MEYCIQDLmGY+YqCeZN5q8C7b2LIRz5pV4oOzkLqZcMHpOsEjcgIhAPBvzTKMCnsMp245e6VLTzo8ab+7PXrR1CJCxTLEGPM0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":135444},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./control.css":"./dist/control.css"},"gitHead":"e56aa4c80bdfcc5e5b9ec91316c0598371433b69","scripts":{"lint":"eslint src","test":"vitest run","build":"tsup && tsc -p tsconfig.build.json --emitDeclarationOnly","prepack":"npm run typecheck && npm run lint && npm run test && npm run build","typecheck":"tsc -p tsconfig.build.json --noEmit","dev:playground":"vite","build:playground":"vite build"},"_npmUser":{"name":"andynoob","email":"thenoobies+npm@googlegroups.com"},"_npmVersion":"11.16.0","description":"DOM rectangle transform controls","directories":{},"sideEffects":["*.css"],"_nodeVersion":"23.11.0","_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.7.0","tsup":"^8.5.1","vite":"^8.0.16","jsdom":"^27.0.1","eslint":"^9.39.4","vitest":"^3.2.6","globals":"^17.6.0","@eslint/js":"^9.39.4","typescript":"^6.0.3","@types/node":"^26.0.0","typescript-eslint":"^8.61.1"},"_npmOperationalInternal":{"tmp":"tmp/move-it_0.4.2_1784458454129_0.801107922107996","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@andynoob/move-it","version":"0.4.3","keywords":[],"author":{"name":"AndyNoob"},"license":"MIT","_id":"@andynoob/move-it@0.4.3","maintainers":[{"name":"andynoob","email":"thenoobies+npm@googlegroups.com"}],"dist":{"shasum":"acbeec10faa42b624eb711a50c7e8cf406d112e7","tarball":"https://registry.npmjs.org/@andynoob/move-it/-/move-it-0.4.3.tgz","fileCount":23,"integrity":"sha512-xPdIzRk9RF+OBpZeta/ZQsndiwW6OmM+WC0hdVg1GXtZQG2EW5/Pi+1yCNGCl/13bFYpO4+CIy/MCDLvZsc5bA==","signatures":[{"sig":"MEYCIQC9mKtQrXReCEnsxazjo8apTOvqY4Qo0JrLTEWeY6fOIAIhAOwfIxCkp2Trve7EHAjmg4t9MT577NSmcpizTCeu1U9C","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":135495},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./control.css":"./dist/control.css"},"gitHead":"ab9e6bc70509768511ed0f78967f428d2b6fbd10","scripts":{"lint":"eslint src","test":"vitest run","build":"tsup && tsc -p tsconfig.build.json --emitDeclarationOnly","prepack":"npm run typecheck && npm run lint && npm run test && npm run build","typecheck":"tsc -p tsconfig.build.json --noEmit","dev:playground":"vite","build:playground":"vite build"},"_npmUser":{"name":"andynoob","email":"thenoobies+npm@googlegroups.com"},"_npmVersion":"11.16.0","description":"DOM rectangle transform controls","directories":{},"sideEffects":["*.css"],"_nodeVersion":"23.11.0","_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.7.0","tsup":"^8.5.1","vite":"^8.0.16","jsdom":"^27.0.1","eslint":"^9.39.4","vitest":"^3.2.6","globals":"^17.6.0","@eslint/js":"^9.39.4","typescript":"^6.0.3","@types/node":"^26.0.0","typescript-eslint":"^8.61.1"},"_npmOperationalInternal":{"tmp":"tmp/move-it_0.4.3_1784459977202_0.494159423613697","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@andynoob/move-it","version":"0.4.4","keywords":[],"author":{"name":"AndyNoob"},"license":"MIT","_id":"@andynoob/move-it@0.4.4","maintainers":[{"name":"andynoob","email":"thenoobies+npm@googlegroups.com"}],"dist":{"shasum":"a35c4a6736ad281c2ddf4ed51b51896d8d9a74d5","tarball":"https://registry.npmjs.org/@andynoob/move-it/-/move-it-0.4.4.tgz","fileCount":23,"integrity":"sha512-UtZFSg+Kp4/d6s/30cgw/Wo37/PaW3gIgsRR2iAWagaGJ0c0Mho3R9HOjj1rv0fNY0vIN1qbdMmHscdENH+htw==","signatures":[{"sig":"MEUCIEzZS6PN/76qjVFnA/CFWR0n75MWL3j8Pi5bIyUUaDImAiEAsoq0a/A8cEFmLM25hXsYqwHTf3FeNCXFfRxI/+LvQzM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":132905},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./control.css":"./dist/control.css"},"gitHead":"2dec7b6a4d2eca194e315f8d093a7e06cc9022cb","scripts":{"lint":"eslint src","test":"vitest run","build":"tsup && tsc -p tsconfig.build.json --emitDeclarationOnly","prepack":"npm run typecheck && npm run lint && npm run test && npm run build","typecheck":"tsc -p tsconfig.build.json --noEmit","dev:playground":"vite","build:playground":"vite build"},"_npmUser":{"name":"andynoob","email":"thenoobies+npm@googlegroups.com"},"_npmVersion":"11.16.0","description":"DOM rectangle transform controls","directories":{},"sideEffects":["*.css"],"_nodeVersion":"23.11.0","_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.7.0","tsup":"^8.5.1","vite":"^8.0.16","jsdom":"^27.0.1","eslint":"^9.39.4","vitest":"^3.2.6","globals":"^17.6.0","@eslint/js":"^9.39.4","typescript":"^6.0.3","@types/node":"^26.0.0","typescript-eslint":"^8.61.1"},"_npmOperationalInternal":{"tmp":"tmp/move-it_0.4.4_1784461312645_0.19410516585334014","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@andynoob/move-it","version":"0.5.0","keywords":[],"author":{"name":"AndyNoob"},"license":"MIT","_id":"@andynoob/move-it@0.5.0","maintainers":[{"name":"andynoob","email":"thenoobies+npm@googlegroups.com"}],"dist":{"shasum":"137b79aaa79e26e1b9d9c4d0a4702bb0d2644ca9","tarball":"https://registry.npmjs.org/@andynoob/move-it/-/move-it-0.5.0.tgz","fileCount":23,"integrity":"sha512-3zYvlKSscj4hndEn7cAPToZ/ISoSS3elwHOJUJQThJctNmv5iAPEurnu4gKnXToyXwH+0ZACqtSk1zsZHenzxg==","signatures":[{"sig":"MEYCIQC9vMjy5eyl9nsxbAPI3yre3fiu0N8ZvnEuAhnyyQJo0QIhALkyH2Qxn1/bi/MtNGU39oSINr+w/j3SClSn4M/omdEg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137706},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./control.css":"./dist/control.css"},"gitHead":"e3e4cad122e197ef9baf214670727ef3c555811b","scripts":{"lint":"eslint src","test":"vitest run","build":"tsup && tsc -p tsconfig.build.json --emitDeclarationOnly","prepack":"npm run typecheck && npm run lint && npm run test && npm run build","typecheck":"tsc -p tsconfig.build.json --noEmit","dev:playground":"vite","build:playground":"vite build"},"_npmUser":{"name":"andynoob","email":"thenoobies+npm@googlegroups.com"},"_npmVersion":"11.16.0","description":"DOM rectangle transform controls","directories":{},"sideEffects":["*.css"],"_nodeVersion":"23.11.0","_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.7.0","tsup":"^8.5.1","vite":"^8.0.16","jsdom":"^27.0.1","eslint":"^9.39.4","vitest":"^3.2.6","globals":"^17.6.0","@eslint/js":"^9.39.4","typescript":"^6.0.3","@types/node":"^26.0.0","typescript-eslint":"^8.61.1"},"_npmOperationalInternal":{"tmp":"tmp/move-it_0.5.0_1784522636655_0.4313590047656357","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@andynoob/move-it","version":"0.6.0","keywords":[],"author":{"name":"AndyNoob"},"license":"MIT","_id":"@andynoob/move-it@0.6.0","maintainers":[{"name":"andynoob","email":"thenoobies+npm@googlegroups.com"}],"dist":{"shasum":"93cdd0810b599f9ec29e92b24bdcd0d58cec38f5","tarball":"https://registry.npmjs.org/@andynoob/move-it/-/move-it-0.6.0.tgz","fileCount":23,"integrity":"sha512-gyQ12vDfohhWBp89hFd5yV3h63PR0QaFF+Ecg5g9xuMygX/0GV8KcP4nTMkP7uXCFVha5lk3yiZFxWO+3zBE5g==","signatures":[{"sig":"MEUCIAxKQaNqpaAqJxCwaNr85qJucqa94GXmlstZ2ZJZc3UEAiEAyCrZlcGD84fo6p/Sy9DTMgBpYUAWlFRIm7d+zgWmoOg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":141801},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./control.css":"./dist/control.css"},"gitHead":"5018f9ee5b701f2f8110f3400aa0c1b0497ffe74","scripts":{"lint":"eslint src","test":"vitest run","build":"tsup && tsc -p tsconfig.build.json --emitDeclarationOnly","prepack":"npm run typecheck && npm run lint && npm run test && npm run build","typecheck":"tsc -p tsconfig.build.json --noEmit","dev:playground":"vite","build:playground":"vite build"},"_npmUser":{"name":"andynoob","email":"thenoobies+npm@googlegroups.com"},"_npmVersion":"11.16.0","description":"DOM rectangle transform controls","directories":{},"sideEffects":["*.css"],"_nodeVersion":"23.11.0","_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.7.0","tsup":"^8.5.1","vite":"^8.0.16","jsdom":"^27.0.1","eslint":"^9.39.4","vitest":"^3.2.6","globals":"^17.6.0","@eslint/js":"^9.39.4","typescript":"^6.0.3","@types/node":"^26.0.0","typescript-eslint":"^8.61.1"},"_npmOperationalInternal":{"tmp":"tmp/move-it_0.6.0_1784610230339_0.17511666322203978","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@andynoob/move-it","version":"0.6.1","keywords":[],"author":{"name":"AndyNoob"},"license":"MIT","_id":"@andynoob/move-it@0.6.1","maintainers":[{"name":"andynoob","email":"thenoobies+npm@googlegroups.com"}],"dist":{"shasum":"89bb07eb8314652da68b05431c8399addc252737","tarball":"https://registry.npmjs.org/@andynoob/move-it/-/move-it-0.6.1.tgz","fileCount":23,"integrity":"sha512-HyUd+hG9U8Iz0klBTxj2rvgDrMpCZ6K5dRN1U4rdORClSTfr2ya6bjsJCOrz1Xdmnm+4fa9y74o0hfjqI86mtQ==","signatures":[{"sig":"MEUCIQCElzjxEBUZLk+iDkDz+BBS69oiUrozhVb60uiEJULRLgIgAXEGpTAE+4SGwWXq9mnqP4tT9YqF5SCTXbMYW+c/pu8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":142154},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./control.css":"./dist/control.css"},"gitHead":"f9f94ad467b68a797e094ec46b207030817a3afe","scripts":{"lint":"eslint src","test":"vitest run","build":"tsup && tsc -p tsconfig.build.json --emitDeclarationOnly","prepack":"npm run typecheck && npm run lint && npm run test && npm run build","typecheck":"tsc -p tsconfig.build.json --noEmit","dev:playground":"vite","build:playground":"vite build"},"_npmUser":{"name":"andynoob","email":"thenoobies+npm@googlegroups.com"},"_npmVersion":"11.16.0","description":"DOM rectangle transform controls","directories":{},"sideEffects":["*.css"],"_nodeVersion":"23.11.0","_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.7.0","tsup":"^8.5.1","vite":"^8.0.16","jsdom":"^27.0.1","eslint":"^9.39.4","vitest":"^3.2.6","globals":"^17.6.0","@eslint/js":"^9.39.4","typescript":"^6.0.3","@types/node":"^26.0.0","typescript-eslint":"^8.61.1"},"_npmOperationalInternal":{"tmp":"tmp/move-it_0.6.1_1784610314454_0.5599382285857282","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"@andynoob/move-it","version":"0.6.2","keywords":[],"author":{"name":"AndyNoob"},"license":"MIT","_id":"@andynoob/move-it@0.6.2","maintainers":[{"name":"andynoob","email":"thenoobies+npm@googlegroups.com"}],"dist":{"shasum":"8b70fb72c62f8ffac7d4a2911b7e7680e07bc7f8","tarball":"https://registry.npmjs.org/@andynoob/move-it/-/move-it-0.6.2.tgz","fileCount":23,"integrity":"sha512-z/MnexfPsPyv97i+h/O9D6/6oBeQBqRsxk0aLYNpC9TFKnAKISu8FUabAgsltWkYwr+5bu06P4NC78Ht6a+h9Q==","signatures":[{"sig":"MEUCIHnCmY37v5BFQ7OR7r++w2iSLZWyNXpik/QaTs4HmrQdAiEA2lwuUWVIFlhlRV0RzvY4/JqSan2KORbeaRPHo0HLwY4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":142430},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./control.css":"./dist/control.css"},"gitHead":"4d1ed9598fe7a254598c37646039ed44a588c439","scripts":{"lint":"eslint src","test":"vitest run","build":"tsup && tsc -p tsconfig.build.json --emitDeclarationOnly","prepack":"npm run typecheck && npm run lint && npm run test && npm run build","typecheck":"tsc -p tsconfig.build.json --noEmit","dev:playground":"vite","build:playground":"vite build"},"_npmUser":{"name":"andynoob","email":"thenoobies+npm@googlegroups.com"},"_npmVersion":"11.16.0","description":"DOM rectangle transform controls","directories":{},"sideEffects":["*.css"],"_nodeVersion":"23.11.0","_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.7.0","tsup":"^8.5.1","vite":"^8.0.16","jsdom":"^27.0.1","eslint":"^9.39.4","vitest":"^3.2.6","globals":"^17.6.0","@eslint/js":"^9.39.4","typescript":"^6.0.3","@types/node":"^26.0.0","typescript-eslint":"^8.61.1"},"_npmOperationalInternal":{"tmp":"tmp/move-it_0.6.2_1784611681843_0.2324157395335995","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@andynoob/move-it","version":"0.7.0","keywords":[],"author":{"name":"AndyNoob"},"license":"MIT","_id":"@andynoob/move-it@0.7.0","maintainers":[{"name":"andynoob","email":"thenoobies+npm@googlegroups.com"}],"dist":{"shasum":"0893d49e6a6277dde0cd41c44c1a1f3be68ba9c2","tarball":"https://registry.npmjs.org/@andynoob/move-it/-/move-it-0.7.0.tgz","fileCount":23,"integrity":"sha512-muIFkQCO2D/5SHoDORJcL5Xf1g7dj0euPWktUPDwTbhcFdTkaEC/SnPY8uMVb3eJILhe3SQYIf506uwtWgVICQ==","signatures":[{"sig":"MEUCIFV6Onh/TrVKCWjKXnyHn9lpKa/FcdB9V3IdLFmDXAsdAiEA6N2wI7cHP3VAyvUsb5RfT3VLulGPLFAP16xud6hcmsQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":138840},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./control.css":"./dist/control.css"},"gitHead":"ae5c8ffb9fd32c4177b178e71905ef7e4160b9b8","scripts":{"lint":"eslint src","test":"vitest run","build":"tsup && tsc -p tsconfig.build.json --emitDeclarationOnly","prepack":"npm run typecheck && npm run lint && npm run test && npm run build","typecheck":"tsc -p tsconfig.build.json --noEmit","dev:playground":"vite","build:playground":"vite build"},"_npmUser":{"name":"andynoob","email":"thenoobies+npm@googlegroups.com"},"_npmVersion":"11.16.0","description":"DOM rectangle transform controls","directories":{},"sideEffects":["*.css"],"_nodeVersion":"23.11.0","_hasShrinkwrap":false,"devDependencies":{"jiti":"^2.7.0","tsup":"^8.5.1","vite":"^8.0.16","jsdom":"^27.0.1","eslint":"^9.39.4","vitest":"^3.2.6","globals":"^17.6.0","@eslint/js":"^9.39.4","typescript":"^6.0.3","@types/node":"^26.0.0","typescript-eslint":"^8.61.1"},"_npmOperationalInternal":{"tmp":"tmp/move-it_0.7.0_1784619472947_0.2814074353296887","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@andynoob/move-it","version":"1.0.0","description":"DOM rectangle transform controls","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./control.css":"./dist/control.css"},"scripts":{"build":"tsup && tsc -p tsconfig.build.json --emitDeclarationOnly","build:playground":"vite build","dev:playground":"vite","typecheck":"tsc -p tsconfig.build.json --noEmit","lint":"eslint src","test":"vitest run","prepack":"npm run typecheck && npm run lint && npm run test && npm run build"},"sideEffects":["*.css"],"keywords":[],"author":{"name":"AndyNoob"},"license":"MIT","type":"module","devDependencies":{"@eslint/js":"^9.39.4","@types/node":"^26.0.0","eslint":"^9.39.4","globals":"^17.6.0","jiti":"^2.7.0","jsdom":"^27.0.1","tsup":"^8.5.1","typescript":"^6.0.3","typescript-eslint":"^8.61.1","vite":"^8.0.16","vitest":"^3.2.6"},"gitHead":"21afec467286fee6ff69d6aaf9f12b728ff41d5f","_id":"@andynoob/move-it@1.0.0","_nodeVersion":"23.11.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-bucFykpK5UckAFTsgSwa6Akw5+QeHHXdQex97iDa6odbLklcyUGqD/wvOZMN1ARfIAiGQhVLgc1LRMR/GjhNMw==","shasum":"9b936dfae9ae0a300fa1877ce3dd6664ad78bfb5","tarball":"https://registry.npmjs.org/@andynoob/move-it/-/move-it-1.0.0.tgz","fileCount":23,"unpackedSize":139826,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGTSoLW9bS967iGLzgBrzsXB/aAf8v2v8ZQgNF1Ybq17AiEAwplATczmZlmUqw3PT4EHNq96lQvCJMY1JDv7OKV64ac="}]},"_npmUser":{"name":"andynoob","email":"thenoobies+npm@googlegroups.com"},"directories":{},"maintainers":[{"name":"andynoob","email":"thenoobies+npm@googlegroups.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/move-it_1.0.0_1784931976937_0.07346634700709309"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-24T03:23:40.043Z","modified":"2026-07-24T22:26:17.300Z","0.0.1":"2026-06-24T03:23:40.320Z","0.0.2":"2026-06-24T03:26:54.231Z","0.1.0":"2026-07-06T04:49:46.054Z","0.2.0":"2026-07-11T19:38:52.411Z","0.2.1":"2026-07-14T04:53:24.233Z","0.3.0":"2026-07-14T09:51:20.197Z","0.3.1":"2026-07-14T11:22:23.184Z","0.3.2":"2026-07-15T02:27:16.144Z","0.4.1":"2026-07-19T10:44:22.874Z","0.4.2":"2026-07-19T10:54:14.263Z","0.4.3":"2026-07-19T11:19:37.335Z","0.4.4":"2026-07-19T11:41:52.790Z","0.5.0":"2026-07-20T04:43:56.799Z","0.6.0":"2026-07-21T05:03:50.474Z","0.6.1":"2026-07-21T05:05:14.605Z","0.6.2":"2026-07-21T05:28:01.969Z","0.7.0":"2026-07-21T07:37:53.071Z","1.0.0":"2026-07-24T22:26:17.148Z"},"author":{"name":"AndyNoob"},"license":"MIT","keywords":[],"description":"DOM rectangle transform controls","maintainers":[{"name":"andynoob","email":"thenoobies+npm@googlegroups.com"}],"readme":"# Move it!\n![hackatime badge](https://hackatime.hackclub.com/api/v1/badge/U07A64GBPV1/AndyNoob/move-it)\n\nA library that adds simple PowerPoint like DOM object manipulation: resize, drag, and rotate. Pretty lightweight and comes with (very beautifully) styled controls. This library also provides the means for you to calculate collision via an implementation of oriented bounding boxes.\n\n<img alt=\"demo gif\" src=\"assets/move-it-demo.gif\" width=\"480\"/>\n\n## Installing\n\nRun `npm i @andynoob/move-it` and read on.\n\n## The lifecycle\n\n> Fully functional sample code can be found [here](playground/main.ts).\n\n> Please ensure that the moving element is absolutely positioned, relative to the control root. Otherwise, expect the transform controls to be mis-fit around the moving element.\n\nTo start, create an instance of `Moving` by calling `createMoveMe` (or `MoveIt.createMoveMe`). For example:\n```ts\nconst el = document.querySelector(/* ... */);\nconst controlRoot = el.parentElement!;\nconst snapping = {\n  // omitted... we'll get to this later\n};\n\nconst moving = createMoveMe(el, {\n  initialState: { // optional, the code will call computeState on the target (first parameter) if this is absent\n    x: 200,\n    y: 200,\n    width: 200,\n    height: 120,\n    rotation: 75,\n  },\n  format: {\n    // when asPercent = true, the x, y, width, and height values is in \n    // percentages (in decimal) relative to the control root\n    asPercent: false,\n    // when centered = true, the RectState represents the pivot of the element (which can be changed\n    // by `pivotOffset`). this can be used with usePercent. when this is paired with `autoSize`,\n    // the library will keep the element centered on the pivot point whenever resizing happens\n    centered: false\n  },\n  snapping, // optional\n  controlRoot, // required, sets the bounds for the object\n  // when autoSize = true, the library stops assigning width and height directly via CSS, but rather syncs the \n  // `RectState` automatically whenever the size changes via DOM `ResizeObserver`.   \n  // this also implicitly disables the resize feature. \n  autoSize: false,\n  // percent (expressed as decimal) of each axis to offset the pivot point of the moving element.\n  // this will impact the rotation pivot, the grid snapping location, and `autoSize` if enabled. the default pivot\n  // point is the center of the element. to make it top left, do `{x: -0.5, y: -0.5}`. this will affect `centered` states\n  pivotOffset: {x: 0, y: 0}\n});\n```\n\n> If `initialState` is not present as a part of the option parameter, `computeState` will be called to calculate a `RectState` from the target element (width, rotation, etc.).\n\nCalling the `createMoveMe` function will return an instance of the `Moving` interface: \n```ts\ninterface Moving {\n  element: HTMLElement,\n  id: string,\n  /**\n   * @description a copy of the current `RectState`. in the format option provided in the initial options\n   */\n  getState: () => RectState,\n  /**\n   * @description partial in the format option provided in the options\n   */\n  updateState: (partial: Partial<RectState>) => void,\n  destroy: () => void,\n  render: () => void,\n  select: () => void,\n  isSelected: () => boolean,\n  checkBounds: () => void,\n  updateControls: (select: boolean) => Controls,\n  getCollisionSiblings: () => Moving[],\n  /**\n   * You need to do this for both instances, the behavior is not mirrored by default\n   * For example, say you have `instanceA` and `instanceB`, you need to run both\n   * `instanceA.addCollisionSibling(instanceB)` and `instanceB.addCollisionSibling(instanceA)`\n   * for both instances to collide with the other.\n   */\n  addCollisionSibling: (sibling: Moving) => void,\n  removeCollisionSibling: (sibling: Moving) => void,\n  getOptions: () => MoveMeOpt\n}\n```\n\nCall `destroy` when you're done moving the object. \n\n## The transform controls\n\nThe transform control is added immediately when you call the `createMoveMe`. As seen in the GIF below, it consists of five lines and five dots.\n\n<img alt=\"transforms gif\" src=\"assets/move-it-transform-controls.gif\" width=\"480\"/>\n\nThe CSS for these controls can be found [here](src/dom/control.css) (the `CONTROL_ID` is `E4UKgq3cxN`, contrary to its name, it's actually a class). The style is injected into the `<head>` tag (if not present), under a `<style>` tag with id `mGW3wTwrZ6`. The `cursor` CSS property is updated accordingly to the rotation of the rectangle. Every moving element is given the `move` cursor.\n\n## The transformations\n\n1. Dragging the rectangle itself will move the rectangle.\n2. Dragging the lone dot protruding from the right side of the rectangle will start rotating.\n3. Dragging the sides of the rectangle will scale the rectangle in that direction only. Whereas the dots on the corners allow free transform. The user may hold shift to keep ratio when free transforming.\n\n## Snapping\n\nThere are two types of snapping behaviors: rotation snapping, and guideline based snapping. \n\n| Rotation Snap                                                                 | Guideline Snap                                                                  |\n|-------------------------------------------------------------------------------|---------------------------------------------------------------------------------|\n| <img alt=\"rotation snap\" src=\"assets/move-it-rotation-snap.gif\" width=\"480\"/> | <img alt=\"guideline snap\" src=\"assets/move-it-guideline-snap.gif\" width=\"480\"/> |\n\n> When `doResize` is true, the grid x & y are percentages (0-1)\n\nThe `SnappingOpt` interface is defined as follows:\n```ts\nexport interface SnappingOpt {\n  rotation?: SnappingRotation,\n  grid?: SnappingGrid\n}\n\nexport interface SnappingGrid {\n  /**\n   * number of pixels away to snap the element\n   */\n  threshold: number,\n  /**\n   * number of pixels away to display the nearest grid/guideline\n   */\n  displayThreshold: number,\n  verticalX?: number[], // relative to the control root\n  horizontalY?: number[] // also relative to the control root\n}\n\nexport interface SnappingRotation {\n  anglesDeg: number[],\n  threshold: number // degrees also\n}\n```\n\nSimply provide that in the option parameter of `createMoveMe`, like so:\n\n```ts\nconst moving = createMoveMe(el, {\n  snapping: {\n    rotation: {\n      anglesDeg: [0, 180],\n      threshold: 5\n    },\n    grid: {\n      displayThreshold: 20,\n      threshold: 5,\n      verticalX: [controlRoot.offsetWidth / 2],\n      horizontalY: [controlRoot.offsetHeight / 10 * 8]\n    }\n  },\n  controlRoot\n});\n```\n\nThe snapping behavior can be disabled by the user if they hold shift while dragging/rotating the element.\n\n## Finding overlap\n\nThe `Moving` interface allows you to add another `Moving` instance as a collision sibling. When you do so, the current instance will collide with the other instance. You must do the same on the other instance for both collisions to be enabled.\n\n<img alt=\"collision gif\" src=\"assets/move-it-collision.gif\" width=\"480\"/>\n\nYou may manually trigger collision resolution by calling `Moving.checkBounds`. The underlying function that powers this feature is [`findOverlap`](src/geometry/findOverlap.ts). It takes two `RectState` parameters. You may check a moving element against a non-moving element by calling `computeState` on the non-moving element to obtain a `RectState`.\n\n## Auto size\n\n> Enabling this feature disables resizing. \n \n![demo gif](assets/move-it-auto-size.gif)\n\nWhen enabled in `MoveItOpt`, the library will sync the `width` and `height` of the `RectSate` to the actual computed width and height of the moving element. Additionally, whenever the moving element resizes, the library will shift the element such that it's center remains anchored in the same location. You should store the `RectState` of such moving elements as `centered=true` (i.e. `moving.getState(..., true)`).  \n\n# Credits\n\nThis project was made with the help of generative AI (GPT-5.3/5.5 & Claude Sonnet & Gemini & Deepseek). The [tests](test) are currently mostly generated by AI. The `getDistanceToLine` was mostly generated by Gemini. \n\nAdditionally, code snippets were taken from StackOverflow posts and Mozilla. \n1. The `getRotation` function was taken from [here](https://stackoverflow.com/questions/19574171/how-to-get-css-transform-rotation-value-in-degrees-with-javascript). \n2. The `generateUID` function was taken from [here](https://stackoverflow.com/a/6248722). \n3. The `appendStylesheetRules` function was taken from [here](https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet/insertRule#examples). ","readmeFilename":"README.md"}