{"_id":"o-drawing-library","_rev":"17-810736535087b64e1ef0c81591a6cc79","name":"o-drawing-library","dist-tags":{"latest":"0.3.3"},"versions":{"0.1.6":{"name":"o-drawing-library","version":"0.1.6","_id":"o-drawing-library@0.1.6","maintainers":[{"name":"hieunt7702","email":"hieunt270702@gmail.com"}],"dist":{"shasum":"e9b42d6e4d9213e00b0eefc8bbbced85df876fd0","tarball":"https://registry.npmjs.org/o-drawing-library/-/o-drawing-library-0.1.6.tgz","fileCount":34,"integrity":"sha512-0TigcTuSVA8334w7/aVWiHhX2AJUPQa3kRmaZv5VZk+S5kk4BxVEnAvlBAMbNbed2Q0smtrynePmzA+gyBEJww==","signatures":[{"sig":"MEQCICnVya8FHeYOAkLx7wydkaPTPG+AyQ4gYB3A0/MIH30FAiAxWOF/f2RnrpnGy6tsEQwDydxmhZSRKt5O6ymVAShtNA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63307},"main":"dist/index.cjs.js","style":"dist/o-drawing-library.css","types":"dist/index.d.ts","unpkg":"dist/index.umd.js","module":"dist/index.es.js","gitHead":"264a01376f170a11e8b5b3327ccc5896847bf141","scripts":{"dev":"vite","lint":"eslint .","build":"npm run build:css && vite build","preview":"vite preview","build:css":"tailwindcss -i ./src/index.css -o ./dist/index.css --minify"},"_npmUser":{"name":"hieunt7702","actor":{"name":"hieunt7702","type":"user","email":"hieunt270702@gmail.com"},"email":"hieunt270702@gmail.com"},"_npmVersion":"10.8.1","directories":{},"_nodeVersion":"20.14.0","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"jspdf":"^3.0.1","react":"^19.1.0","react-dom":"^19.1.0","typescript":"^4.9.5","web-vitals":"^2.1.4","@types/jest":"^27.5.2","react-icons":"^5.5.0","@types/react":"^19.1.6","phosphor-react":"^1.4.1","tailwind-merge":"^3.3.0","@heroicons/react":"^2.2.0","@types/react-dom":"^19.1.6","@tabler/icons-react":"^3.34.0","@testing-library/dom":"^10.4.0","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^13.5.0"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","postcss":"^8.5.4","@types/node":"^20.19.1","tailwindcss":"^3.4.17","autoprefixer":"^10.4.21","vite-plugin-dts":"^4.5.4","@vitejs/plugin-react":"^4.5.2"},"_npmOperationalInternal":{"tmp":"tmp/o-drawing-library_0.1.6_1750912602782_0.43603160535626073","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"o-drawing-library","version":"0.1.7","_id":"o-drawing-library@0.1.7","maintainers":[{"name":"hieunt7702","email":"hieunt270702@gmail.com"}],"dist":{"shasum":"07846e24c23acb73e914d949d63dd23150c5d18f","tarball":"https://registry.npmjs.org/o-drawing-library/-/o-drawing-library-0.1.7.tgz","fileCount":34,"integrity":"sha512-sTy8L2wt+YGBaFgvyzQzrLCvGtsVuLM2GqVAa87nFBuzMBEZX9TAEBU+H59gxBWCIjVuQtfIyxBHaUb+72H0fA==","signatures":[{"sig":"MEYCIQDcKKUYDohSLkweNd+ltL64z7AA+Ii/UezOWK6z8X/OsgIhAIIOVkPKr4dHvvMMBucuRTwYCFIRkVBxzRTOO4/xvyFl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137619},"main":"dist/index.cjs.js","style":"dist/o-drawing-library.css","types":"dist/index.d.ts","unpkg":"dist/index.umd.js","module":"dist/index.es.js","gitHead":"264a01376f170a11e8b5b3327ccc5896847bf141","scripts":{"dev":"vite","lint":"eslint .","build":"npm run build:css && vite build","preview":"vite preview","build:css":"tailwindcss -i ./src/index.css -o ./dist/index.css --minify"},"_npmUser":{"name":"hieunt7702","actor":{"name":"hieunt7702","type":"user","email":"hieunt270702@gmail.com"},"email":"hieunt270702@gmail.com"},"_npmVersion":"10.8.1","directories":{},"_nodeVersion":"20.14.0","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"jspdf":"^3.0.1","react":"^19.1.0","react-dom":"^19.1.0","typescript":"^4.9.5","web-vitals":"^2.1.4","@types/jest":"^27.5.2","react-icons":"^5.5.0","@types/react":"^19.1.6","phosphor-react":"^1.4.1","tailwind-merge":"^3.3.0","@heroicons/react":"^2.2.0","@types/react-dom":"^19.1.6","@tabler/icons-react":"^3.34.0","@testing-library/dom":"^10.4.0","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^13.5.0"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","postcss":"^8.5.4","@types/node":"^20.19.1","tailwindcss":"^3.4.17","autoprefixer":"^10.4.21","vite-plugin-dts":"^4.5.4","@vitejs/plugin-react":"^4.5.2"},"_npmOperationalInternal":{"tmp":"tmp/o-drawing-library_0.1.7_1750913114068_0.06863151030715464","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"o-drawing-library","version":"0.1.8","_id":"o-drawing-library@0.1.8","maintainers":[{"name":"hieunt7702","email":"hieunt270702@gmail.com"}],"dist":{"shasum":"d703853222226c88edf42ba179fafc610dfbe175","tarball":"https://registry.npmjs.org/o-drawing-library/-/o-drawing-library-0.1.8.tgz","fileCount":34,"integrity":"sha512-koEOhtjwo7hDFELzOOSm8x5NVDQoG02ubMCEjl6XhU/HaFnjG6e+SCNJxswcgB7SgcyEgCCvykii458vW3HEzA==","signatures":[{"sig":"MEQCIDvo1q5GGUdhJuErQF+uVDC4lVfQWU0Ay/NF0dR37ci8AiAUn0vF7pIiTx6o+br4Y1l/9rxaaiyYbWzqllUIsDBa2A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137733},"main":"dist/index.cjs.js","style":"dist/o-drawing-library.css","types":"dist/index.d.ts","unpkg":"dist/index.umd.js","module":"dist/index.es.js","exports":{".":{"import":"./dist/index.es.js","require":"./dist/index.cjs.js"}},"gitHead":"264a01376f170a11e8b5b3327ccc5896847bf141","scripts":{"dev":"vite","lint":"eslint .","build":"npm run build:css && vite build","preview":"vite preview","build:css":"tailwindcss -i ./src/index.css -o ./dist/index.css --minify"},"_npmUser":{"name":"hieunt7702","actor":{"name":"hieunt7702","type":"user","email":"hieunt270702@gmail.com"},"email":"hieunt270702@gmail.com"},"_npmVersion":"10.8.1","directories":{},"_nodeVersion":"20.14.0","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"jspdf":"^3.0.1","react":"^19.1.0","react-dom":"^19.1.0","typescript":"^4.9.5","web-vitals":"^2.1.4","@types/jest":"^27.5.2","react-icons":"^5.5.0","@types/react":"^19.1.6","phosphor-react":"^1.4.1","tailwind-merge":"^3.3.0","@heroicons/react":"^2.2.0","@types/react-dom":"^19.1.6","@tabler/icons-react":"^3.34.0","@testing-library/dom":"^10.4.0","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^13.5.0"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","postcss":"^8.5.4","@types/node":"^20.19.1","tailwindcss":"^3.4.17","autoprefixer":"^10.4.21","vite-plugin-dts":"^4.5.4","@vitejs/plugin-react":"^4.5.2"},"_npmOperationalInternal":{"tmp":"tmp/o-drawing-library_0.1.8_1750913912891_0.8556063816786983","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"o-drawing-library","version":"0.2.0","_id":"o-drawing-library@0.2.0","maintainers":[{"name":"hieunt7702","email":"hieunt270702@gmail.com"}],"dist":{"shasum":"312de5452c1473e0054f02285757608dc126a381","tarball":"https://registry.npmjs.org/o-drawing-library/-/o-drawing-library-0.2.0.tgz","fileCount":38,"integrity":"sha512-hQw1RT15Yvs7kDMdW8+TvdrggzbTv//aOXkG2bFrIcsdd1TUkcWi2EDLZuZU8hovTiKE9bij7pqEah3appZH7Q==","signatures":[{"sig":"MEUCIBP3MthSEdMkzfuh59ffSG4DF9aVDMj/Q5X0xnIWCR1wAiEAxbDvAfLOOMYTZHQfEFSqHSLtN0l7fL92rW2/3G6Vbp0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1898166},"main":"dist/index.cjs.js","style":"dist/o-drawing-library.css","types":"dist/index.d.ts","unpkg":"dist/index.umd.js","module":"dist/index.es.js","gitHead":"264a01376f170a11e8b5b3327ccc5896847bf141","scripts":{"dev":"vite","lint":"eslint .","build":"npm run build:css && vite build","preview":"vite preview","build:css":"tailwindcss -i ./src/index.css -o ./dist/index.css --minify"},"_npmUser":{"name":"hieunt7702","actor":{"name":"hieunt7702","type":"user","email":"hieunt270702@gmail.com"},"email":"hieunt270702@gmail.com"},"_npmVersion":"10.8.1","directories":{},"_nodeVersion":"20.14.0","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"jspdf":"^3.0.1","react":"^19.1.0","react-dom":"^19.1.0","typescript":"^4.9.5","web-vitals":"^2.1.4","@types/jest":"^27.5.2","react-icons":"^5.5.0","@types/react":"^19.1.6","phosphor-react":"^1.4.1","tailwind-merge":"^3.3.0","@heroicons/react":"^2.2.0","@types/react-dom":"^19.1.6","@tabler/icons-react":"^3.34.0","@testing-library/dom":"^10.4.0","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^13.5.0"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","postcss":"^8.5.4","@types/node":"^20.19.1","tailwindcss":"^3.4.17","autoprefixer":"^10.4.21","vite-plugin-dts":"^4.5.4","@vitejs/plugin-react":"^4.5.2"},"_npmOperationalInternal":{"tmp":"tmp/o-drawing-library_0.2.0_1750927880035_0.6270173986649756","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"o-drawing-library","version":"0.2.1","_id":"o-drawing-library@0.2.1","maintainers":[{"name":"hieunt7702","email":"hieunt270702@gmail.com"}],"dist":{"shasum":"078d0ed91e8838fa52c59cc8769ee0eecbfae50b","tarball":"https://registry.npmjs.org/o-drawing-library/-/o-drawing-library-0.2.1.tgz","fileCount":38,"integrity":"sha512-yx8qhLQFRApm3lKZIKOOXhY3tL54Urm9VgUtXRIEqrbxmBYisOinVwl49AxandSjyOyb+q3c8P2n78LAU64KRQ==","signatures":[{"sig":"MEQCIHXAvwNUMCe1qIwr+qHApyqQmgpPr1mvlGjWOihoNAnaAiB7AcJGEev5vyTth57HXKcomDjbDEvcymaFklJwutUUBg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1898154},"main":"dist/index.cjs.js","style":"dist/index.css","types":"dist/index.d.ts","unpkg":"dist/index.umd.js","module":"dist/index.es.js","gitHead":"264a01376f170a11e8b5b3327ccc5896847bf141","scripts":{"dev":"vite","lint":"eslint .","build":"npm run build:css && vite build","preview":"vite preview","build:css":"tailwindcss -i ./src/index.css -o ./dist/index.css --minify"},"_npmUser":{"name":"hieunt7702","actor":{"name":"hieunt7702","type":"user","email":"hieunt270702@gmail.com"},"email":"hieunt270702@gmail.com"},"_npmVersion":"10.8.1","directories":{},"_nodeVersion":"20.14.0","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"jspdf":"^3.0.1","react":"^19.1.0","react-dom":"^19.1.0","typescript":"^4.9.5","web-vitals":"^2.1.4","@types/jest":"^27.5.2","react-icons":"^5.5.0","@types/react":"^19.1.6","phosphor-react":"^1.4.1","tailwind-merge":"^3.3.0","@heroicons/react":"^2.2.0","@types/react-dom":"^19.1.6","@tabler/icons-react":"^3.34.0","@testing-library/dom":"^10.4.0","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^13.5.0"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","postcss":"^8.5.4","@types/node":"^20.19.1","tailwindcss":"^3.4.17","autoprefixer":"^10.4.21","vite-plugin-dts":"^4.5.4","@vitejs/plugin-react":"^4.5.2"},"_npmOperationalInternal":{"tmp":"tmp/o-drawing-library_0.2.1_1750929605097_0.4182808506629463","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"o-drawing-library","version":"0.2.2","_id":"o-drawing-library@0.2.2","maintainers":[{"name":"hieunt7702","email":"hieunt270702@gmail.com"}],"dist":{"shasum":"7bbbce3df47b58b3b84b0434ea58237ac44577b7","tarball":"https://registry.npmjs.org/o-drawing-library/-/o-drawing-library-0.2.2.tgz","fileCount":39,"integrity":"sha512-f3oqh9PFY71/m0Nisu/Wldq0MhDC13t7lRDAB63uFvahLaiunanGLfkGEnHSTLtC91Inu/J7pzQKR+l71S+Acg==","signatures":[{"sig":"MEQCIG6nBBSTLXi9T1x4Ite//KUU5xIT+3fiITIkazYt9q/xAiAbhPKTIbpK+j4Cq5gsdnXcrWmsvXhdm9pnzA9lsXykow==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1916130},"main":"dist/index.cjs.js","style":"dist/index.css","types":"dist/index.d.ts","unpkg":"dist/index.umd.js","module":"dist/index.es.js","gitHead":"264a01376f170a11e8b5b3327ccc5896847bf141","scripts":{"dev":"vite","lint":"eslint .","build":"vite build && npm run build:css","preview":"vite preview","build:css":"tailwindcss -i ./src/index.css -o ./dist/index.css --minify"},"_npmUser":{"name":"hieunt7702","actor":{"name":"hieunt7702","type":"user","email":"hieunt270702@gmail.com"},"email":"hieunt270702@gmail.com"},"_npmVersion":"10.8.1","directories":{},"_nodeVersion":"20.14.0","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"jspdf":"^3.0.1","react":"^19.1.0","react-dom":"^19.1.0","typescript":"^4.9.5","web-vitals":"^2.1.4","@types/jest":"^27.5.2","react-icons":"^5.5.0","@types/react":"^19.1.6","phosphor-react":"^1.4.1","tailwind-merge":"^3.3.0","@heroicons/react":"^2.2.0","@types/react-dom":"^19.1.6","@tabler/icons-react":"^3.34.0","@testing-library/dom":"^10.4.0","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^13.5.0"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","postcss":"^8.5.4","@types/node":"^20.19.1","tailwindcss":"^3.4.17","autoprefixer":"^10.4.21","vite-plugin-dts":"^4.5.4","@vitejs/plugin-react":"^4.5.2"},"_npmOperationalInternal":{"tmp":"tmp/o-drawing-library_0.2.2_1750930833599_0.6408919968535853","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"o-drawing-library","version":"0.2.3","_id":"o-drawing-library@0.2.3","maintainers":[{"name":"hieunt7702","email":"hieunt270702@gmail.com"}],"dist":{"shasum":"fa3b43778a1aca0e0bc8288f5dd05e8424168ce4","tarball":"https://registry.npmjs.org/o-drawing-library/-/o-drawing-library-0.2.3.tgz","fileCount":40,"integrity":"sha512-E5v991EWZsspd4KOG0aZ7pbL4vE6UOorX56teG/irfFEYx7070ABS/plID5W88y2GpUBEhCcxqtsvbNJXODEyA==","signatures":[{"sig":"MEQCIBaVQOr3A5f9jH9zCTAaj/iC2R0+Ekti3pDvrki8FR42AiAggyX+QNr02ZizCQGHnKljv90ahWxQ1xuy4DfFjxTQCg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1936040},"main":"dist/index.cjs.js","style":"dist/index.css","types":"dist/index.d.ts","unpkg":"dist/index.umd.js","module":"dist/index.es.js","gitHead":"264a01376f170a11e8b5b3327ccc5896847bf141","scripts":{"dev":"vite","lint":"eslint .","build":"vite build && npm run build:css","preview":"vite preview","build:css":"tailwindcss -i ./src/index.css -o ./dist/index.css --minify"},"_npmUser":{"name":"hieunt7702","actor":{"name":"hieunt7702","type":"user","email":"hieunt270702@gmail.com"},"email":"hieunt270702@gmail.com"},"_npmVersion":"10.8.1","directories":{},"_nodeVersion":"20.14.0","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"jspdf":"^3.0.1","react":"^19.1.0","react-dom":"^19.1.0","typescript":"^4.9.5","web-vitals":"^2.1.4","@types/jest":"^27.5.2","react-icons":"^5.5.0","@types/react":"^19.1.6","phosphor-react":"^1.4.1","tailwind-merge":"^3.3.0","@heroicons/react":"^2.2.0","@types/react-dom":"^19.1.6","@tabler/icons-react":"^3.34.0","@testing-library/dom":"^10.4.0","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^13.5.0"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","postcss":"^8.5.4","@types/node":"^20.19.1","tailwindcss":"^3.4.17","autoprefixer":"^10.4.21","vite-plugin-dts":"^4.5.4","@vitejs/plugin-react":"^4.5.2"},"_npmOperationalInternal":{"tmp":"tmp/o-drawing-library_0.2.3_1750932372383_0.2996766802384767","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"o-drawing-library","version":"0.2.4","_id":"o-drawing-library@0.2.4","maintainers":[{"name":"hieunt7702","email":"hieunt270702@gmail.com"}],"dist":{"shasum":"12d8fbf2148b5b36186fde785df62f11a4bdde3e","tarball":"https://registry.npmjs.org/o-drawing-library/-/o-drawing-library-0.2.4.tgz","fileCount":39,"integrity":"sha512-wNlJSu4kfGV0Hs1yU2WfAc+mbD4VXDrt9R1rfHZ/9gC3uPDPNvxnIjrFWjrpkQYIZlTPdiOZzf6N2MeUwjtRPw==","signatures":[{"sig":"MEUCIEy7uF/FBaCpE/oJandWBUgIiGcbmlqPB+jzMxDQYgHEAiEAh1vcp4z5VvcIJ7fhyLUU6z8WjaDWMbzTMPVZaNB2g9w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1956703},"main":"dist/index.cjs.js","style":"dist/index.css","types":"dist/index.d.ts","unpkg":"dist/index.umd.js","module":"dist/index.es.js","gitHead":"264a01376f170a11e8b5b3327ccc5896847bf141","scripts":{"dev":"vite","lint":"eslint .","build":"vite build && npm run build:css","preview":"vite preview","build:css":"tailwindcss -i ./src/index.css -o ./dist/index.css --minify"},"_npmUser":{"name":"hieunt7702","actor":{"name":"hieunt7702","type":"user","email":"hieunt270702@gmail.com"},"email":"hieunt270702@gmail.com"},"_npmVersion":"10.8.1","directories":{},"_nodeVersion":"20.14.0","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"jspdf":"^3.0.1","react":"^19.1.0","react-dom":"^19.1.0","typescript":"^4.9.5","web-vitals":"^2.1.4","@types/jest":"^27.5.2","react-icons":"^5.5.0","@types/react":"^19.1.6","phosphor-react":"^1.4.1","tailwind-merge":"^3.3.0","@heroicons/react":"^2.2.0","@types/react-dom":"^19.1.6","@tabler/icons-react":"^3.34.0","@testing-library/dom":"^10.4.0","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^13.5.0"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","postcss":"^8.5.4","@types/node":"^20.19.1","tailwindcss":"^3.4.17","autoprefixer":"^10.4.21","vite-plugin-dts":"^4.5.4","@vitejs/plugin-react":"^4.5.2","vite-plugin-css-injected-by-js":"^3.5.2"},"_npmOperationalInternal":{"tmp":"tmp/o-drawing-library_0.2.4_1750932858184_0.07455321703508089","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"o-drawing-library","version":"0.2.5","_id":"o-drawing-library@0.2.5","maintainers":[{"name":"hieunt7702","email":"hieunt270702@gmail.com"}],"dist":{"shasum":"ab58a98bf6bb2d13ad36f61116a3dfab8d19be5b","tarball":"https://registry.npmjs.org/o-drawing-library/-/o-drawing-library-0.2.5.tgz","fileCount":42,"integrity":"sha512-znTUME8lwGTezQF/aCEJaM6q+sVEavQvj+2aMbViar8oAchuIE8RixCwVA9tNFCQgxhdo7bI4I7I5lUGSaIysw==","signatures":[{"sig":"MEYCIQCeXRkSKpCeDVGPPAW7yLaz89p3f7r3S3wy5horGDVMOAIhAKZJb//P1SvO2jH+i2yc+KFN3DUs3GoZQCdrwlgU20W8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2031186},"main":"dist/index.cjs.js","style":"dist/index.css","types":"dist/index.d.ts","unpkg":"dist/index.umd.js","module":"dist/index.es.js","gitHead":"d4dcf2e3d5860db1185ecb4b58ce14c0ca262c9a","scripts":{"dev":"vite","lint":"eslint .","build":"vite build && npm run build:css","preview":"vite preview","build:css":"tailwindcss -i ./src/index.css -o ./dist/index.css --minify"},"_npmUser":{"name":"hieunt7702","email":"hieunt270702@gmail.com"},"_npmVersion":"10.8.1","description":"A React library for creating drawing applications with theme support and image manipulation capabilities.","directories":{},"_nodeVersion":"20.14.0","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"jspdf":"^3.0.1","react":"^19.1.0","fabric":"^5.5.2","react-dom":"^19.1.0","typescript":"^4.9.5","web-vitals":"^2.1.4","@types/jest":"^27.5.2","react-icons":"^5.5.0","@types/react":"^19.1.6","lucide-react":"^0.523.0","phosphor-react":"^1.4.1","tailwind-merge":"^3.3.0","@heroicons/react":"^2.2.0","@types/react-dom":"^19.1.6","@tabler/icons-react":"^3.34.0","@testing-library/dom":"^10.4.0","@testing-library/react":"^16.3.0","@testing-library/jest-dom":"^6.6.3","@testing-library/user-event":"^13.5.0"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","postcss":"^8.5.4","@types/node":"^20.19.1","tailwindcss":"^3.4.17","autoprefixer":"^10.4.21","vite-plugin-dts":"^4.5.4","@vitejs/plugin-react":"^4.5.2","vite-plugin-css-injected-by-js":"^3.5.2"},"_npmOperationalInternal":{"tmp":"tmp/o-drawing-library_0.2.5_1752488367783_0.3210473476554838","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"o-drawing-library","version":"0.2.6","_id":"o-drawing-library@0.2.6","maintainers":[{"name":"hieunt7702","email":"hieunt270702@gmail.com"}],"dist":{"shasum":"f94f7351c95a9c6ab0c06052ab78245eb8184b94","tarball":"https://registry.npmjs.org/o-drawing-library/-/o-drawing-library-0.2.6.tgz","fileCount":43,"integrity":"sha512-VaUYNxrljffZiIbyU2v2K9ZAqEFqjH/NWaM5aDNVZ/OzytUUiBsAolGHKoX9j2vt4F8Poz9zAhOIPGQ25gfkyg==","signatures":[{"sig":"MEYCIQDxbd80XAOOInD5UMQebcWLxapYehm4Sng2TaTGnlZMIQIhAMRA+i9WNvl87JXjLefo/CkQBQx+8ZrFC6LqbPjiZlUe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2084826},"main":"dist/index.cjs.js","style":"dist/index.css","types":"dist/index.d.ts","unpkg":"dist/index.umd.js","module":"dist/index.es.js","gitHead":"508eaba71ef0d79af3592087119a1d758579db3c","scripts":{"dev":"vite","lint":"eslint .","build":"vite build && npm run build:css","preview":"vite preview","build:css":"tailwindcss -i ./src/index.css -o ./dist/index.css --minify"},"_npmUser":{"name":"hieunt7702","email":"hieunt270702@gmail.com"},"_npmVersion":"10.8.1","description":"A powerful React library for creating drawing applications with theme support, extensive callback system, and image manipulation capabilities.","directories":{},"_nodeVersion":"20.14.0","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"jspdf":"^3.0.1","react":"^19.1.0","fabric":"^5.5.2","react-dom":"^19.1.0","typescript":"^4.9.5","web-vitals":"^2.1.4","@types/jest":"^27.5.2","react-icons":"^5.5.0","@types/react":"^19.1.6","lucide-react":"^0.523.0","fabricjs-react":"^2.1.0","phosphor-react":"^1.4.1","tailwind-merge":"^3.3.0","@heroicons/react":"^2.2.0","@types/react-dom":"^19.1.6","@tabler/icons-react":"^3.34.0"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","postcss":"^8.5.4","@types/node":"^20.19.1","tailwindcss":"^3.4.17","autoprefixer":"^10.4.21","@types/fabric":"^5.3.10","vite-plugin-dts":"^4.5.4","@vitejs/plugin-react":"^4.5.2","vite-plugin-css-injected-by-js":"^3.5.2"},"_npmOperationalInternal":{"tmp":"tmp/o-drawing-library_0.2.6_1752744010249_0.06401563110519293","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"o-drawing-library","version":"0.2.7","_id":"o-drawing-library@0.2.7","maintainers":[{"name":"hieunt7702","email":"hieunt270702@gmail.com"}],"dist":{"shasum":"d497cf16ede34b2409d7981ab42c0fc4a7899663","tarball":"https://registry.npmjs.org/o-drawing-library/-/o-drawing-library-0.2.7.tgz","fileCount":43,"integrity":"sha512-cG8Toye5ZrDSZyRWx6Bzx8OmQTuhxmugAb93eS8Xp8EuMPGaCHwxmGtf9hhD01cutdptfAtQWNM3fROF/epGpQ==","signatures":[{"sig":"MEQCIDDSwPE95b84aqwNVqFiKtANQxF934HHNnKFn/Bf+r/fAiAJwNm57eOatIsNlssPHoTeZnnVn/gINcU0YOafnzibhA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2077502},"main":"dist/index.cjs.js","style":"dist/index.css","types":"dist/index.d.ts","unpkg":"dist/index.umd.js","module":"dist/index.es.js","gitHead":"9bbf3048ff3b7aedddd3713bfef086b010ab451e","scripts":{"dev":"vite","lint":"eslint .","build":"vite build && npm run build:css","preview":"vite preview","build:css":"tailwindcss -i ./src/index.css -o ./dist/index.css --minify"},"_npmUser":{"name":"hieunt7702","email":"hieunt270702@gmail.com"},"_npmVersion":"10.8.1","description":"A powerful React library for creating drawing applications with theme support, extensive callback system, and image manipulation capabilities.","directories":{},"_nodeVersion":"20.14.0","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"jspdf":"^3.0.1","react":"^19.1.0","fabric":"^5.5.2","react-dom":"^19.1.0","typescript":"^4.9.5","web-vitals":"^2.1.4","@types/jest":"^27.5.2","react-icons":"^5.5.0","@types/react":"^19.1.6","lucide-react":"^0.523.0","fabricjs-react":"^2.1.0","phosphor-react":"^1.4.1","tailwind-merge":"^3.3.0","@heroicons/react":"^2.2.0","@types/react-dom":"^19.1.6","@tabler/icons-react":"^3.34.0"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","postcss":"^8.5.4","@types/node":"^20.19.1","tailwindcss":"^3.4.17","autoprefixer":"^10.4.21","@types/fabric":"^5.3.10","vite-plugin-dts":"^4.5.4","@vitejs/plugin-react":"^4.5.2","vite-plugin-css-injected-by-js":"^3.5.2"},"_npmOperationalInternal":{"tmp":"tmp/o-drawing-library_0.2.7_1752744595176_0.39570819499474164","host":"s3://npm-registry-packages-npm-production"}},"0.2.8":{"name":"o-drawing-library","version":"0.2.8","_id":"o-drawing-library@0.2.8","maintainers":[{"name":"hieunt7702","email":"hieunt270702@gmail.com"}],"dist":{"shasum":"b9042a38f17bd3e54dfd501f486781fb55a610a1","tarball":"https://registry.npmjs.org/o-drawing-library/-/o-drawing-library-0.2.8.tgz","fileCount":2,"integrity":"sha512-xerKg14SpWrRVrctfTk/XNpwqu/gC5t5bjdHSh5WQmWQ6qnVyAzdYJkghmNUrwQbMyCVL1ajsmna9RC3CO2BhQ==","signatures":[{"sig":"MEYCIQDwak742BUH3UkSHMdotYCovg3MJWMOfBwt4KaB6m73QwIhAOkhuKHsiKPslA2IiT2jO9xpECljD+O9cyBK5rywmgJJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4306},"main":"dist/index.cjs.js","style":"dist/index.css","types":"dist/index.d.ts","unpkg":"dist/index.umd.js","module":"dist/index.es.js","gitHead":"761b7c8975ae9c10d29f0a96c5ed1775a8978e4d","scripts":{"dev":"vite","lint":"eslint .","build":"vite build && npm run build:css","preview":"vite preview","build:css":"tailwindcss -i ./src/index.css -o ./dist/index.css --minify"},"_npmUser":{"name":"hieunt7702","email":"hieunt270702@gmail.com"},"_npmVersion":"10.8.1","description":"A powerful React library for creating drawing applications with theme support, extensive callback system, and image manipulation capabilities.","directories":{},"_nodeVersion":"20.14.0","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"jspdf":"^3.0.1","react":"^19.1.0","react-dom":"^19.1.0","typescript":"^4.9.5","web-vitals":"^2.1.4","@types/react":"^19.1.6","lucide-react":"^0.523.0","@types/react-dom":"^19.1.6"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","postcss":"^8.5.4","@types/node":"^20.19.1","tailwindcss":"^3.4.17","autoprefixer":"^10.4.21","vite-plugin-dts":"^4.5.4","@vitejs/plugin-react":"^4.5.2","vite-plugin-css-injected-by-js":"^3.5.2"},"_npmOperationalInternal":{"tmp":"tmp/o-drawing-library_0.2.8_1752810638111_0.684236066517188","host":"s3://npm-registry-packages-npm-production"}},"0.2.9":{"name":"o-drawing-library","version":"0.2.9","_id":"o-drawing-library@0.2.9","maintainers":[{"name":"hieunt7702","email":"hieunt270702@gmail.com"}],"dist":{"shasum":"ee7413822de7b9023a97fb47dec39bec4a0ca6d2","tarball":"https://registry.npmjs.org/o-drawing-library/-/o-drawing-library-0.2.9.tgz","fileCount":47,"integrity":"sha512-iFK2a0WIl3VgdXsgAm+Ftr19nwzRx2lzM4/NHS6FqjJIJNHECp2LmKkvJtZJzV0qjvgiGL46Q22ViEAKF9DXDg==","signatures":[{"sig":"MEYCIQDvEF36gfMAXtYHPu5o3EYO6XFiH8wKsTszNVYi9uEACwIhALQBa9AjKfSXSUkKrhXG4iY0gv5q1AjctgOfQIqPw3I1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2040625},"main":"dist/index.cjs.js","style":"dist/index.css","types":"dist/index.d.ts","unpkg":"dist/index.umd.js","module":"dist/index.es.js","gitHead":"4f68af98a7be6f036792a2134d0a5792541ab508","scripts":{"dev":"vite","lint":"eslint .","build":"vite build && npm run build:css","preview":"vite preview","build:css":"tailwindcss -i ./src/index.css -o ./dist/index.css --minify"},"_npmUser":{"name":"hieunt7702","email":"hieunt270702@gmail.com"},"_npmVersion":"10.8.1","description":"A powerful React library for creating drawing applications with theme support, extensive callback system, and image manipulation capabilities.","directories":{},"_nodeVersion":"20.14.0","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"jspdf":"^3.0.1","react":"^19.1.0","react-dom":"^19.1.0","typescript":"^4.9.5","web-vitals":"^2.1.4","@types/jest":"^27.5.2","lucide-react":"^0.523.0"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","postcss":"^8.5.4","@types/node":"^20.19.1","tailwindcss":"^3.4.17","@types/react":"^19.1.6","autoprefixer":"^10.4.21","vite-plugin-dts":"^4.5.4","@types/react-dom":"^19.1.6","@vitejs/plugin-react":"^4.5.2","vite-plugin-css-injected-by-js":"^3.5.2"},"peerDependencies":{"react":"^19.1.0"},"_npmOperationalInternal":{"tmp":"tmp/o-drawing-library_0.2.9_1752811204251_0.14554516611650414","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"o-drawing-library","version":"0.3.0","_id":"o-drawing-library@0.3.0","maintainers":[{"name":"hieunt7702","email":"hieunt270702@gmail.com"}],"dist":{"shasum":"f2a0e917bda5787e52377c778498bd22fff23367","tarball":"https://registry.npmjs.org/o-drawing-library/-/o-drawing-library-0.3.0.tgz","fileCount":47,"integrity":"sha512-vPPsXCr2UXzywxkYMtz7BMmrRbQv8Jd0gz5QeMiphS36DZR0MWdyiNv89W/rXoYlAHpIG/6grwqCG6r3n9YKLg==","signatures":[{"sig":"MEQCICVrA6VPO8GfPI9S81ATz6wwFn0QIUqQQG0khgggXURTAiB/ME/7DJLJHUDWD4pjzsSJh0u8uNM2QlKmVfawpLDwyw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2040477},"main":"dist/index.cjs.js","style":"dist/index.css","types":"dist/index.d.ts","unpkg":"dist/index.umd.js","module":"dist/index.es.js","gitHead":"cc712b3c392f4755c1dc87ba170810e295d14c3e","scripts":{"dev":"vite","lint":"eslint .","build":"vite build && npm run build:css","preview":"vite preview","build:css":"tailwindcss -i ./src/index.css -o ./dist/index.css --minify"},"_npmUser":{"name":"hieunt7702","email":"hieunt270702@gmail.com"},"_npmVersion":"10.8.1","description":"A powerful React library for creating drawing applications with theme support, extensive callback system, and image manipulation capabilities.","directories":{},"_nodeVersion":"20.14.0","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"jspdf":"^3.0.1","react":"^19.1.0","react-dom":"^19.1.0","typescript":"^4.9.5","web-vitals":"^2.1.4","@types/jest":"^27.5.2","lucide-react":"^0.523.0"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","postcss":"^8.5.4","@types/node":"^20.19.1","tailwindcss":"^3.4.17","@types/react":"^19.1.6","autoprefixer":"^10.4.21","vite-plugin-dts":"^4.5.4","@types/react-dom":"^19.1.6","@vitejs/plugin-react":"^4.5.2","vite-plugin-css-injected-by-js":"^3.5.2"},"peerDependencies":{"react":"^19.1.0"},"_npmOperationalInternal":{"tmp":"tmp/o-drawing-library_0.3.0_1752811746709_0.9395409988838996","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"o-drawing-library","version":"0.3.1","_id":"o-drawing-library@0.3.1","maintainers":[{"name":"hieunt7702","email":"hieunt270702@gmail.com"}],"dist":{"shasum":"26183ea196bb187a2ff1ca00c2c24928a38055b7","tarball":"https://registry.npmjs.org/o-drawing-library/-/o-drawing-library-0.3.1.tgz","fileCount":47,"integrity":"sha512-+zQrvk/Hpx6GWmHA1QPRKPaf1BJA5sA8lDtndjT3tEnGC13NtutJoPbTNyo5uyB6TPZX/e19L5iFiGxcl3Uj9w==","signatures":[{"sig":"MEYCIQDKQyVjsMhpHBeEEEwgJWjhBjY4teZJQTfVw7WDSC6afgIhAKvtSQqAskMm/+L2bi77h3CdQF9XmPkAvyKKpcI9xATy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2043299},"main":"dist/index.cjs.js","style":"dist/index.css","types":"dist/index.d.ts","unpkg":"dist/index.umd.js","module":"dist/index.es.js","gitHead":"5bc9a56071fe274c49d3435d9e7cfe633ef24336","scripts":{"dev":"vite","lint":"eslint .","build":"vite build && npm run build:css","preview":"vite preview","build:css":"tailwindcss -i ./src/index.css -o ./dist/index.css --minify"},"_npmUser":{"name":"hieunt7702","email":"hieunt270702@gmail.com"},"_npmVersion":"10.8.1","description":"A powerful React library for creating drawing applications with theme support, extensive callback system, and image manipulation capabilities.","directories":{},"_nodeVersion":"20.14.0","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"jspdf":"^3.0.1","react":"^19.1.0","react-dom":"^19.1.0","typescript":"^4.9.5","web-vitals":"^2.1.4","@types/jest":"^27.5.2","lucide-react":"^0.523.0"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","postcss":"^8.5.4","@types/node":"^20.19.1","tailwindcss":"^3.4.17","@types/react":"^19.1.6","autoprefixer":"^10.4.21","vite-plugin-dts":"^4.5.4","@types/react-dom":"^19.1.6","@vitejs/plugin-react":"^4.5.2","vite-plugin-css-injected-by-js":"^3.5.2"},"peerDependencies":{"react":"^19.1.0"},"_npmOperationalInternal":{"tmp":"tmp/o-drawing-library_0.3.1_1753069044161_0.1875742058975809","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"o-drawing-library","version":"0.3.2","_id":"o-drawing-library@0.3.2","maintainers":[{"name":"hieunt7702","email":"hieunt270702@gmail.com"}],"dist":{"shasum":"2900013ff74b180e46d2cecf8e82ca59b94baa88","tarball":"https://registry.npmjs.org/o-drawing-library/-/o-drawing-library-0.3.2.tgz","fileCount":48,"integrity":"sha512-fH15CdzbLqvdvQfFmtGaHn+xzJZebWEdTU4gqHns0BQx3AQuwwlTpwD2RxD+vJs/D/NaD7zhTiLlS1rCxae6zA==","signatures":[{"sig":"MEUCIQCsX/u41kIvc9L9qV3dFnA8N0CWGZIuIz6Uz+cea0ijcwIgQR3Wfn2P0tL5EqvqK1geRWOieP4GqhoB3hNxotXgHp0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2043270},"main":"dist/index.cjs.js","style":"dist/index.css","types":"dist/index.d.ts","unpkg":"dist/index.umd.js","module":"dist/index.es.js","gitHead":"c0c4dc511b759489404d1cb9a8b044962669e4ce","scripts":{"dev":"vite","lint":"eslint .","build":"vite build && npm run build:css","preview":"vite preview","build:css":"tailwindcss -i ./src/index.css -o ./dist/index.css --minify"},"_npmUser":{"name":"hieunt7702","email":"hieunt270702@gmail.com"},"_npmVersion":"10.8.1","description":"A powerful React library for creating drawing applications with theme support, extensive callback system, and image manipulation capabilities.","directories":{},"_nodeVersion":"20.14.0","browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"jspdf":"^3.0.1","react":"^19.1.0","react-dom":"^19.1.0","typescript":"^4.9.5","web-vitals":"^2.1.4","@types/jest":"^27.5.2","lucide-react":"^0.523.0"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"_hasShrinkwrap":false,"devDependencies":{"vite":"^6.3.5","postcss":"^8.5.4","@types/node":"^20.19.1","tailwindcss":"^3.4.17","@types/react":"^19.1.6","autoprefixer":"^10.4.21","vite-plugin-dts":"^4.5.4","@types/react-dom":"^19.1.6","@vitejs/plugin-react":"^4.5.2","vite-plugin-css-injected-by-js":"^3.5.2"},"peerDependencies":{"react":"^19.1.0"},"_npmOperationalInternal":{"tmp":"tmp/o-drawing-library_0.3.2_1753072391352_0.09721465344300051","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"o-drawing-library","version":"0.3.3","main":"dist/index.cjs.js","module":"dist/index.es.js","unpkg":"dist/index.umd.js","types":"dist/index.d.ts","style":"dist/index.css","scripts":{"dev":"vite","build:css":"tailwindcss -i ./src/index.css -o ./dist/index.css --minify","build":"vite build && npm run build:css","lint":"eslint .","preview":"vite preview"},"eslintConfig":{"extends":["react-app","react-app/jest"]},"browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"dependencies":{"@types/jest":"^27.5.2","jspdf":"^3.0.1","lucide-react":"^0.523.0","react":"^19.1.0","react-dom":"^19.1.0","typescript":"^4.9.5","web-vitals":"^2.1.4"},"devDependencies":{"@types/node":"^20.19.1","@vitejs/plugin-react":"^4.5.2","autoprefixer":"^10.4.21","postcss":"^8.5.4","tailwindcss":"^3.4.17","vite":"^6.3.5","vite-plugin-css-injected-by-js":"^3.5.2","vite-plugin-dts":"^4.5.4","@types/react":"^19.1.6","@types/react-dom":"^19.1.6"},"peerDependencies":{"react":"^19.1.0"},"_id":"o-drawing-library@0.3.3","gitHead":"94c5942f1109acb444bbaa845c32f84c2ee0a2f3","description":"A powerful React library for creating drawing applications with theme support, extensive callback system, and image manipulation capabilities.","_nodeVersion":"20.14.0","_npmVersion":"10.8.1","dist":{"integrity":"sha512-uvchbCevb3SV7Pw+17TC0USC4iHWQ9zaSFeefvVPtmVAhu3xDSpr2jzMmBu9pnMRbfV1ai7Tj82fqtdWC8bt2g==","shasum":"a6345646bfa6eb3da4dc530d866b5c02757d5452","tarball":"https://registry.npmjs.org/o-drawing-library/-/o-drawing-library-0.3.3.tgz","fileCount":48,"unpackedSize":2043369,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCVk7I2YnS1EkxmD+VAfApyLD8NMY7rIa0I3rJFHXEAIAIgQwB6Wds3yOP3bBI1+wcad0gzBVDYhFiCRF58gAiYoQ8="}]},"_npmUser":{"name":"hieunt7702","email":"hieunt270702@gmail.com"},"directories":{},"maintainers":[{"name":"hieunt7702","email":"hieunt270702@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/o-drawing-library_0.3.3_1753079879560_0.4331887928596627"},"_hasShrinkwrap":false}},"time":{"created":"2025-06-26T04:36:42.638Z","modified":"2025-07-21T06:37:59.933Z","0.1.6":"2025-06-26T04:36:42.951Z","0.1.7":"2025-06-26T04:45:14.266Z","0.1.8":"2025-06-26T04:58:33.107Z","0.2.0":"2025-06-26T08:51:20.249Z","0.2.1":"2025-06-26T09:20:05.415Z","0.2.2":"2025-06-26T09:40:33.800Z","0.2.3":"2025-06-26T10:06:12.603Z","0.2.4":"2025-06-26T10:14:18.399Z","0.2.5":"2025-07-14T10:19:28.027Z","0.2.6":"2025-07-17T09:20:10.524Z","0.2.7":"2025-07-17T09:29:55.437Z","0.2.8":"2025-07-18T03:50:38.275Z","0.2.9":"2025-07-18T04:00:04.490Z","0.3.0":"2025-07-18T04:09:07.074Z","0.3.1":"2025-07-21T03:37:24.345Z","0.3.2":"2025-07-21T04:33:11.624Z","0.3.3":"2025-07-21T06:37:59.756Z"},"description":"A powerful React library for creating drawing applications with theme support, extensive callback system, and image manipulation capabilities.","maintainers":[{"name":"hieunt7702","email":"hieunt270702@gmail.com"}],"readme":"# Theme Provider Drawing Library\r\n\r\nA powerful React library for creating drawing applications with theme support, extensive callback system, and image manipulation capabilities.\r\n\r\n## Features\r\n\r\n- 🎨 Rich Drawing Tools:\r\n  - Multiple Pen Types:\r\n    - Regular Pen\r\n    - Paint Pen (50% opacity)\r\n    - Memory Pen (70% opacity)\r\n    - Color Pen (70% opacity)\r\n    - Pencil (60% opacity)\r\n  - Eraser tool\r\n  - Text tool with rich formatting (bold, italic, underline)\r\n  - Geometry tools:\r\n    - Line\r\n    - Square\r\n    - Rectangle\r\n    - Circle\r\n    - Heart\r\n    - Triangle\r\n  - Image upload and editing capabilities\r\n  - LaserPointer for presentations\r\n\r\n- 🛠 Core Features:\r\n  - Zoom in/out functionality\r\n  - Canvas panning\r\n  - Undo/Redo support\r\n  - Multi-page support\r\n  - Coordinate system display\r\n  - Clear canvas option\r\n\r\n- 💾 Export Options:\r\n  - Save as PNG\r\n  - Save as PDF\r\n  - Cloud storage integration\r\n  - Copy as image\r\n\r\n- 🎯 Comprehensive Event System\r\n- 🎨 Customizable Themes\r\n- 📱 Responsive Design\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install o-drawing-library\r\n# or\r\nyarn add o-drawing-library\r\n```\r\n\r\n## Basic Usage with Callbacks\r\n\r\n```tsx\r\nimport { ThemeProvider, DrawingProvider, DrawingContent } from 'o-drawing-library';\r\nimport 'o-drawing-library/dist/index.css'\r\n\r\nconst App = () => {\r\n  const [dataCommands, setDataCommands] = React.useState<DrawingCommand[]>([]);\r\n\r\n  // Example handlers for toolbar actions\r\n  const handleSaveAsImage = (dataUrl: string) => {\r\n    console.log('Saving image:', dataUrl);\r\n    // Call your API here\r\n  };\r\n\r\n  const handleSaveAsPDF = (pdfBlob: Blob) => {\r\n    console.log('Saving PDF:', pdfBlob);\r\n    // Call your API here\r\n  };\r\n\r\n  const handleSaveToCloud = async (data: { commands: DrawingCommand[]; timestamp: number }) => {\r\n    console.log('Saving to cloud:', data);\r\n    // Call your cloud API here\r\n    // Ví dụ:\r\n    // await cloudApi.save(data);\r\n  };\r\n\r\n  const handleImageUpload = async (event: FileUploadEvent) => {\r\n    console.log('Uploading image:', event);\r\n    // Handle image upload to your server\r\n    // Ví dụ:\r\n    // const { file, position, dimensions } = event;\r\n    // await uploadApi.upload(file, { position, dimensions });\r\n  };\r\n\r\n  const handleDrawingStart = (state: DrawingState) => {\r\n    console.log('Drawing started with:', state);\r\n    // Handle drawing start\r\n    // Ví dụ lưu state để track session\r\n  };\r\n\r\n  const handleDrawingComplete = (result: DrawingResult) => {\r\n    console.log('Drawing completed:', result);\r\n    console.log('Current commands:', dataCommands);\r\n    // Update commands state with the new drawing command\r\n    setDataCommands(prev => [...prev, result.command]);\r\n    // Handle drawing completion\r\n    // Ví dụ: lưu command vào history\r\n  };\r\n\r\n  const handleExportToCloud = async (data: {\r\n    type: 'png' | 'pdf';\r\n    content: Blob | string;\r\n    timestamp: number;\r\n  }) => {\r\n    console.log('Exporting to cloud:', data);\r\n    // Handle cloud export logic\r\n    // Ví dụ:\r\n    // await cloudApi.export(data);\r\n  };\r\n\r\n  // Canvas action handlers\r\n  const handleClean = (dataCommands: DrawingCommand[]) => {\r\n    console.log('Canvas cleaned', dataCommands);\r\n    // Thêm logic xử lý sau khi xóa canvas\r\n    // Ví dụ: reset history, notify users\r\n  };\r\n\r\n  const handleUndo = (dataCommands: DrawingCommand[]) => {\r\n    console.log('Undo action performed', dataCommands);\r\n    // Thêm logic xử lý sau khi undo\r\n    // Ví dụ: update history, notify users\r\n  };\r\n\r\n  const handleRedo = (dataCommands: DrawingCommand[]) => {\r\n    console.log('Redo action performed', dataCommands);\r\n    // Thêm logic xử lý sau khi redo\r\n    // Ví dụ: update history, notify users\r\n  };\r\n\r\n  const handleErase = (area: Area) => {\r\n    console.log('Erased area:', area);\r\n    // Xử lý sau khi xóa một vùng\r\n    // Ví dụ: lưu vào history để undo\r\n  };\r\n\r\n  const handleZoomIn = () => {\r\n    console.log('Canvas zoomed in');\r\n    // Xử lý sau khi zoom in\r\n    // Ví dụ: lưu scale factor\r\n  };\r\n\r\n  const handleZoomOut = () => {\r\n    console.log('Canvas zoomed out');\r\n    // Xử lý sau khi zoom out\r\n    // Ví dụ: update viewport\r\n  };\r\n\r\n  const handleAddTable = (config: TableConfig) => {\r\n    console.log('Added table with config:', config);\r\n    // Xử lý sau khi thêm bảng\r\n    // Ví dụ: lưu table data để edit sau\r\n  };\r\n\r\n  return (\r\n    <ThemeProvider>\r\n      <DrawingProvider dataCommands={dataCommands} setDataCommands={setDataCommands}>\r\n        <DrawingContent\r\n          onSaveAsImage={handleSaveAsImage}\r\n          onSaveAsPDF={handleSaveAsPDF}\r\n          onSaveToCloud={handleSaveToCloud}\r\n          onImageUpload={handleImageUpload}\r\n          onExportToCloud={handleExportToCloud}\r\n          onDrawingStart={handleDrawingStart}\r\n          onDrawingComplete={handleDrawingComplete}\r\n          onClean={handleClean}\r\n          onErase={handleErase}\r\n          onZoomIn={handleZoomIn}\r\n          onZoomOut={handleZoomOut}\r\n          onAddTable={handleAddTable}\r\n          onUndo={handleUndo}\r\n          onRedo={handleRedo}\r\n        />\r\n      </DrawingProvider >\r\n    </ThemeProvider>\r\n  );\r\n};\r\n\r\n\r\nexport default App;\r\n\r\n\r\n## License\r\n\r\nMIT © [hieunt7702]\r\n\r\n## Changelog\r\n\r\nSee [CHANGELOG.md](./CHANGELOG.md) for details.\r\n","readmeFilename":"README.md"}