{"_id":"@c-time/simple-ex-grid","_rev":"14-d8089a5efa093f175285e116c82384c4","name":"@c-time/simple-ex-grid","dist-tags":{"latest":"1.7.1"},"versions":{"1.0.0":{"name":"@c-time/simple-ex-grid","version":"1.0.0","keywords":["react","grid","excel","spreadsheet","clipboard","touch"],"author":{"name":"c-time"},"license":"MIT","_id":"@c-time/simple-ex-grid@1.0.0","maintainers":[{"name":"setoharuo","email":"haruo@ctime.jp"},{"name":"gentarooka","email":"oka@ctime.jp"}],"dist":{"shasum":"80d713112b46a4cc6f570fe138377893289e2e9d","tarball":"https://registry.npmjs.org/@c-time/simple-ex-grid/-/simple-ex-grid-1.0.0.tgz","fileCount":23,"integrity":"sha512-DsPKKtLwItJCgKt5T+y1MwhiE+YsGVE46NvNf+sP38ezVbcYyAsx42nyebLeWvLFkkCWIQLoZwyVea4NZgrHbw==","signatures":[{"sig":"MEQCIEGAKsCz+8HdibVEBu75JIDiIex2Vy8jeX9+uf4c+z43AiA38aUcqJ5C+EQjUlFe6VDiUkUAFqpl2x12aXOnnR1uug==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":97243},"main":"./dist/index.cjs","type":"module","_from":"file:c-time-simple-ex-grid-1.0.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"storybook dev -p 6006","lint":"eslint src/","test":"vitest run","build":"vite build && tsc --emitDeclarationOnly","format":"prettier --write \"src/**/*.{ts,tsx}\"","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.{ts,tsx}\"","storybook:build":"storybook build"},"_npmUser":{"name":"setoharuo","email":"haruo@ctime.jp"},"_resolved":"C:\\Users\\User\\AppData\\Local\\Temp\\39913f30cfef1b6d9cc4241b4e581225\\c-time-simple-ex-grid-1.0.0.tgz","_integrity":"sha512-DsPKKtLwItJCgKt5T+y1MwhiE+YsGVE46NvNf+sP38ezVbcYyAsx42nyebLeWvLFkkCWIQLoZwyVea4NZgrHbw==","_npmVersion":"10.9.2","description":"Excel-like grid component for React with clipboard, touch support, and cell selection","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.8","jsdom":"^29.0.2","react":"^19.2.5","eslint":"^10.2.0","vitest":"^4.1.4","prettier":"^3.8.2","react-dom":"^19.2.5","storybook":"^10.3.5","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/react":"^19.2.14","@storybook/react":"^10.3.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.1","@vitejs/plugin-react":"^6.0.1","@storybook/react-vite":"^10.3.5","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.5.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/simple-ex-grid_1.0.0_1776136160019_0.20310090819668392","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@c-time/simple-ex-grid","version":"1.1.0","keywords":["react","grid","excel","spreadsheet","clipboard","touch"],"author":{"name":"c-time"},"license":"MIT","_id":"@c-time/simple-ex-grid@1.1.0","maintainers":[{"name":"setoharuo","email":"haruo@ctime.jp"},{"name":"gentarooka","email":"oka@ctime.jp"}],"dist":{"shasum":"3e3a96a78f91190ee3f3b6fcfbd026eb052a6dad","tarball":"https://registry.npmjs.org/@c-time/simple-ex-grid/-/simple-ex-grid-1.1.0.tgz","fileCount":23,"integrity":"sha512-qz071PthgAjpY55N03hQvVEOnqauVLIvHG1PhsLg/GHrcpdAmnDZx4SmnTDl+I/3TZQoFOFFDUoW202vZZsBrA==","signatures":[{"sig":"MEQCIGf0PQcUT16VCfsSR+SaFQeByp3LwZq8fXKROPfKzKWvAiBgXXVu1DSgaE8MvTKnEvgrstVNs9yeWGMCZxJNwxKw5A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98669},"main":"./dist/index.cjs","type":"module","_from":"file:c-time-simple-ex-grid-1.1.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"dev":"storybook dev -p 6006","lint":"eslint src/","test":"vitest run","build":"vite build && tsc --emitDeclarationOnly","format":"prettier --write \"src/**/*.{ts,tsx}\"","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.{ts,tsx}\"","storybook:build":"storybook build"},"_npmUser":{"name":"setoharuo","email":"haruo@ctime.jp"},"_resolved":"C:\\Users\\User\\AppData\\Local\\Temp\\1224596a86e2e545858e64ed7f5be8be\\c-time-simple-ex-grid-1.1.0.tgz","_integrity":"sha512-qz071PthgAjpY55N03hQvVEOnqauVLIvHG1PhsLg/GHrcpdAmnDZx4SmnTDl+I/3TZQoFOFFDUoW202vZZsBrA==","_npmVersion":"10.9.2","description":"Excel-like grid component for React with clipboard, touch support, and cell selection","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.8","jsdom":"^29.0.2","react":"^19.2.5","eslint":"^10.2.0","vitest":"^4.1.4","prettier":"^3.8.2","react-dom":"^19.2.5","storybook":"^10.3.5","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/react":"^19.2.14","@storybook/react":"^10.3.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.1","@vitejs/plugin-react":"^6.0.1","@storybook/react-vite":"^10.3.5","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.5.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/simple-ex-grid_1.1.0_1776153260683_0.36453496533912166","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@c-time/simple-ex-grid","version":"1.1.1","keywords":["react","grid","excel","spreadsheet","clipboard","touch"],"author":{"name":"c-time"},"license":"MIT","_id":"@c-time/simple-ex-grid@1.1.1","maintainers":[{"name":"setoharuo","email":"haruo@ctime.jp"},{"name":"gentarooka","email":"oka@ctime.jp"}],"dist":{"shasum":"3aff5af581def24124726c085e1d77ba3b95e035","tarball":"https://registry.npmjs.org/@c-time/simple-ex-grid/-/simple-ex-grid-1.1.1.tgz","fileCount":23,"integrity":"sha512-sPwk8HGbESrY2Tpq1tpHPS5RpPCk9p1cDQZLWHHvWOTfb1r4aduqlJFN04TREYHUGHHTihtY36ukoqhFl2DWiw==","signatures":[{"sig":"MEYCIQCUwNjccyVHGptg8XEy+bEL7oV8zd8TNEAikcUYYaU45wIhAMTGeJBlXJ83lpFlPgYAnfUtOwQ1tijEudLp8kumT2zN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":98743},"main":"./dist/index.cjs","type":"module","_from":"file:c-time-simple-ex-grid-1.1.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./style.css":"./dist/index.css"},"scripts":{"dev":"storybook dev -p 6006","lint":"eslint src/","test":"vitest run","build":"vite build && tsc --emitDeclarationOnly","format":"prettier --write \"src/**/*.{ts,tsx}\"","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.{ts,tsx}\"","storybook:build":"storybook build"},"_npmUser":{"name":"setoharuo","email":"haruo@ctime.jp"},"_resolved":"C:\\Users\\User\\AppData\\Local\\Temp\\e16ee705a213e80b462add18b3f66953\\c-time-simple-ex-grid-1.1.1.tgz","_integrity":"sha512-sPwk8HGbESrY2Tpq1tpHPS5RpPCk9p1cDQZLWHHvWOTfb1r4aduqlJFN04TREYHUGHHTihtY36ukoqhFl2DWiw==","_npmVersion":"10.9.2","description":"Excel-like grid component for React with clipboard, touch support, and cell selection","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.8","jsdom":"^29.0.2","react":"^19.2.5","eslint":"^10.2.0","vitest":"^4.1.4","prettier":"^3.8.2","react-dom":"^19.2.5","storybook":"^10.3.5","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/react":"^19.2.14","@storybook/react":"^10.3.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.1","@vitejs/plugin-react":"^6.0.1","@storybook/react-vite":"^10.3.5","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.5.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/simple-ex-grid_1.1.1_1776156445916_0.20922072146997572","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@c-time/simple-ex-grid","version":"1.1.2","keywords":["react","grid","excel","spreadsheet","clipboard","touch"],"author":{"name":"c-time"},"license":"MIT","_id":"@c-time/simple-ex-grid@1.1.2","maintainers":[{"name":"setoharuo","email":"haruo@ctime.jp"},{"name":"gentarooka","email":"oka@ctime.jp"}],"dist":{"shasum":"aecea6f5c154fe1ed5b2867dbbe48fa8692cec69","tarball":"https://registry.npmjs.org/@c-time/simple-ex-grid/-/simple-ex-grid-1.1.2.tgz","fileCount":23,"integrity":"sha512-IZ3IrJKsQ0cpilPTPunXrUtsQVgWJCS+fgIcjALd7Q+46nkarlf+JewEJRbRh3Q56hsBPkWxihvrrMVIvXb0yw==","signatures":[{"sig":"MEUCIQC6IakQBCBQXS2wpe2Vixz1/yYoHSI0BtrdPyBSvF9EyQIgfbwNo0s9/TlUIlhVEzJYCJ52gvLjC2Q0ZZxeVYQxT+g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":99896},"main":"./dist/index.cjs","type":"module","_from":"file:c-time-simple-ex-grid-1.1.2.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./style.css":"./dist/index.css"},"scripts":{"dev":"storybook dev -p 6006","lint":"eslint src/","test":"vitest run","build":"vite build && tsc --emitDeclarationOnly","format":"prettier --write \"src/**/*.{ts,tsx}\"","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.{ts,tsx}\"","storybook:build":"storybook build"},"_npmUser":{"name":"setoharuo","email":"haruo@ctime.jp"},"_resolved":"C:\\Users\\User\\AppData\\Local\\Temp\\bda1906f0cc41c8385f2434ec85572ed\\c-time-simple-ex-grid-1.1.2.tgz","_integrity":"sha512-IZ3IrJKsQ0cpilPTPunXrUtsQVgWJCS+fgIcjALd7Q+46nkarlf+JewEJRbRh3Q56hsBPkWxihvrrMVIvXb0yw==","_npmVersion":"10.9.2","description":"Excel-like grid component for React with clipboard, touch support, and cell selection","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.8","jsdom":"^29.0.2","react":"^19.2.5","eslint":"^10.2.0","vitest":"^4.1.4","prettier":"^3.8.2","react-dom":"^19.2.5","storybook":"^10.3.5","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/react":"^19.2.14","@storybook/react":"^10.3.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.1","@vitejs/plugin-react":"^6.0.1","@storybook/react-vite":"^10.3.5","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.5.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/simple-ex-grid_1.1.2_1776159381049_0.2728509586740535","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@c-time/simple-ex-grid","version":"1.2.0","keywords":["react","grid","excel","spreadsheet","clipboard","touch"],"author":{"name":"c-time"},"license":"MIT","_id":"@c-time/simple-ex-grid@1.2.0","maintainers":[{"name":"setoharuo","email":"haruo@ctime.jp"},{"name":"gentarooka","email":"oka@ctime.jp"}],"dist":{"shasum":"e2b03beae6beabb5ddd8b6397df6d99cec0cb49f","tarball":"https://registry.npmjs.org/@c-time/simple-ex-grid/-/simple-ex-grid-1.2.0.tgz","fileCount":23,"integrity":"sha512-8lylKR+Onb0D9v+Oq2A5SlLc64sI/kkVDpy0XKqwq8zpFDq1cqaFlRKJmAHiThLV8xK61X9FdDObCvANqWnI0Q==","signatures":[{"sig":"MEQCIF/VnKwncQjPcTi2bpBVlWqx+VgRfMNmKBlQ0BbsmxpUAiBatery4Cz4UtGAUrRJcfFuWuHVMGurIbQu5Aem8hERkA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":100764},"main":"./dist/index.cjs","type":"module","_from":"file:c-time-simple-ex-grid-1.2.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./style.css":"./dist/index.css"},"scripts":{"dev":"storybook dev -p 6006","lint":"eslint src/","test":"vitest run","build":"vite build && tsc --emitDeclarationOnly","format":"prettier --write \"src/**/*.{ts,tsx}\"","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.{ts,tsx}\"","storybook:build":"storybook build"},"_npmUser":{"name":"setoharuo","email":"haruo@ctime.jp"},"_resolved":"C:\\Users\\User\\AppData\\Local\\Temp\\017df15d1b818bf64264a5ee8efa77e2\\c-time-simple-ex-grid-1.2.0.tgz","_integrity":"sha512-8lylKR+Onb0D9v+Oq2A5SlLc64sI/kkVDpy0XKqwq8zpFDq1cqaFlRKJmAHiThLV8xK61X9FdDObCvANqWnI0Q==","_npmVersion":"10.9.2","description":"Excel-like grid component for React with clipboard, touch support, and cell selection","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.8","jsdom":"^29.0.2","react":"^19.2.5","eslint":"^10.2.0","vitest":"^4.1.4","prettier":"^3.8.2","react-dom":"^19.2.5","storybook":"^10.3.5","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/react":"^19.2.14","@storybook/react":"^10.3.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.1","@vitejs/plugin-react":"^6.0.1","@storybook/react-vite":"^10.3.5","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.5.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/simple-ex-grid_1.2.0_1776163537324_0.31236339442834415","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@c-time/simple-ex-grid","version":"1.2.1","keywords":["react","grid","excel","spreadsheet","clipboard","touch"],"author":{"name":"c-time"},"license":"MIT","_id":"@c-time/simple-ex-grid@1.2.1","maintainers":[{"name":"setoharuo","email":"haruo@ctime.jp"},{"name":"gentarooka","email":"oka@ctime.jp"}],"dist":{"shasum":"b4438395f2d417f04f5292d86dbf0d7c485713e4","tarball":"https://registry.npmjs.org/@c-time/simple-ex-grid/-/simple-ex-grid-1.2.1.tgz","fileCount":23,"integrity":"sha512-VUpTjuKbq+Xzv6jCAxbRjmf/6PJs4nhhF37YLpqD/D2t+cYMBGUNKVvJ+ysKZhUnfqsN9HqyNVSOLD88hCxJ+w==","signatures":[{"sig":"MEQCIFtXc9CWU0wmi+XRJq7O10mFvCeY1wD5ZARnUapO2QdLAiAYnxjpuzVtnWz9HEAdoEH4VmOzhlazmyA1dV2+1eQ/Sg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":100764},"main":"./dist/index.cjs","type":"module","_from":"file:c-time-simple-ex-grid-1.2.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./style.css":"./dist/index.css"},"scripts":{"dev":"storybook dev -p 6006","lint":"eslint src/","test":"vitest run","build":"vite build && tsc --emitDeclarationOnly","format":"prettier --write \"src/**/*.{ts,tsx}\"","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.{ts,tsx}\"","storybook:build":"storybook build"},"_npmUser":{"name":"setoharuo","email":"haruo@ctime.jp"},"_resolved":"C:\\Users\\User\\AppData\\Local\\Temp\\70bc753c303e0542629fdc618ae536c4\\c-time-simple-ex-grid-1.2.1.tgz","_integrity":"sha512-VUpTjuKbq+Xzv6jCAxbRjmf/6PJs4nhhF37YLpqD/D2t+cYMBGUNKVvJ+ysKZhUnfqsN9HqyNVSOLD88hCxJ+w==","_npmVersion":"10.9.2","description":"Excel-like grid component for React with clipboard, touch support, and cell selection","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.8","jsdom":"^29.0.2","react":"^19.2.5","eslint":"^10.2.0","vitest":"^4.1.4","prettier":"^3.8.2","react-dom":"^19.2.5","storybook":"^10.3.5","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/react":"^19.2.14","@storybook/react":"^10.3.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.1","@vitejs/plugin-react":"^6.0.1","@storybook/react-vite":"^10.3.5","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.5.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/simple-ex-grid_1.2.1_1776164134606_0.0797198435292854","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@c-time/simple-ex-grid","version":"1.3.0","keywords":["react","grid","excel","spreadsheet","clipboard","touch"],"author":{"name":"c-time"},"license":"MIT","_id":"@c-time/simple-ex-grid@1.3.0","maintainers":[{"name":"setoharuo","email":"haruo@ctime.jp"},{"name":"gentarooka","email":"oka@ctime.jp"}],"dist":{"shasum":"64eb0c1b436df192ea1212b70e95a0adf6e247f6","tarball":"https://registry.npmjs.org/@c-time/simple-ex-grid/-/simple-ex-grid-1.3.0.tgz","fileCount":23,"integrity":"sha512-WO9L7xldT0qi3XrUcG4F4DAlYEPklbAMGoTJKWiArRlVTTRDXIrPd6SR9MvrHHH2hKDTMhxXbxiYlBZ8Vevxfg==","signatures":[{"sig":"MEQCIGqzEiNBgNLrOQrrtLANJtDlxVQCOKH7/WBlAw0cLOEFAiBJh1Y5KPx73XL4n9lxFj3IPoSsGXYv0/9emUy71fYn3Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108306},"main":"./dist/index.cjs","type":"module","_from":"file:c-time-simple-ex-grid-1.3.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./style.css":"./dist/index.css"},"scripts":{"dev":"storybook dev -p 6006","lint":"eslint src/","test":"vitest run","build":"vite build && tsc --emitDeclarationOnly","format":"prettier --write \"src/**/*.{ts,tsx}\"","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.{ts,tsx}\"","storybook:build":"storybook build"},"_npmUser":{"name":"setoharuo","email":"haruo@ctime.jp"},"_resolved":"C:\\Users\\User\\AppData\\Local\\Temp\\b080a7eaa59538188af53170d0827fd7\\c-time-simple-ex-grid-1.3.0.tgz","_integrity":"sha512-WO9L7xldT0qi3XrUcG4F4DAlYEPklbAMGoTJKWiArRlVTTRDXIrPd6SR9MvrHHH2hKDTMhxXbxiYlBZ8Vevxfg==","_npmVersion":"10.9.2","description":"Excel-like grid component for React with clipboard, touch support, and cell selection","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.8","jsdom":"^29.0.2","react":"^19.2.5","eslint":"^10.2.0","vitest":"^4.1.4","prettier":"^3.8.2","react-dom":"^19.2.5","storybook":"^10.3.5","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/react":"^19.2.14","@storybook/react":"^10.3.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.1","@vitejs/plugin-react":"^6.0.1","@storybook/react-vite":"^10.3.5","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.5.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/simple-ex-grid_1.3.0_1776195162435_0.19784299311146825","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@c-time/simple-ex-grid","version":"1.3.1","keywords":["react","grid","excel","spreadsheet","clipboard","touch"],"author":{"name":"c-time"},"license":"MIT","_id":"@c-time/simple-ex-grid@1.3.1","maintainers":[{"name":"setoharuo","email":"haruo@ctime.jp"},{"name":"gentarooka","email":"oka@ctime.jp"}],"dist":{"shasum":"ecf48e526a781aff19e4a442a266699b5f784d29","tarball":"https://registry.npmjs.org/@c-time/simple-ex-grid/-/simple-ex-grid-1.3.1.tgz","fileCount":23,"integrity":"sha512-eJT/dpw178MkJvyft7chLONoZjHIoxj1JwL+tCdEYX8F4ywf1ICqiND7sNIRyvmsfekhN1ykAw/bN2fi8SUdBw==","signatures":[{"sig":"MEUCIEKLHVzYkkIne0gk5n4x3nx+VlTSiSQonjyOBvqnzqCZAiEAjC9Cc7q9VdEEssky7KwoYNeLeFLSh8gjHAV/J+xMNO0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":112463},"main":"./dist/index.cjs","type":"module","_from":"file:c-time-simple-ex-grid-1.3.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./style.css":"./dist/index.css"},"scripts":{"dev":"storybook dev -p 6006","lint":"eslint src/","test":"vitest run","build":"vite build && tsc --emitDeclarationOnly","format":"prettier --write \"src/**/*.{ts,tsx}\"","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.{ts,tsx}\"","storybook:build":"storybook build"},"_npmUser":{"name":"setoharuo","email":"haruo@ctime.jp"},"_resolved":"C:\\Users\\User\\AppData\\Local\\Temp\\bf3975497c11b17b1c93588de81b72c7\\c-time-simple-ex-grid-1.3.1.tgz","_integrity":"sha512-eJT/dpw178MkJvyft7chLONoZjHIoxj1JwL+tCdEYX8F4ywf1ICqiND7sNIRyvmsfekhN1ykAw/bN2fi8SUdBw==","_npmVersion":"10.9.2","description":"Excel-like grid component for React with clipboard, touch support, and cell selection","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.8","jsdom":"^29.0.2","react":"^19.2.5","eslint":"^10.2.0","vitest":"^4.1.4","prettier":"^3.8.2","react-dom":"^19.2.5","storybook":"^10.3.5","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/react":"^19.2.14","@storybook/react":"^10.3.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.1","@vitejs/plugin-react":"^6.0.1","@storybook/react-vite":"^10.3.5","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.5.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/simple-ex-grid_1.3.1_1776196279114_0.5903647291917034","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@c-time/simple-ex-grid","version":"1.4.0","keywords":["react","grid","excel","spreadsheet","clipboard","touch"],"author":{"name":"c-time"},"license":"MIT","_id":"@c-time/simple-ex-grid@1.4.0","maintainers":[{"name":"setoharuo","email":"haruo@ctime.jp"},{"name":"gentarooka","email":"oka@ctime.jp"}],"dist":{"shasum":"174ae0b1918153c6300d14b3b7b97f81fd475637","tarball":"https://registry.npmjs.org/@c-time/simple-ex-grid/-/simple-ex-grid-1.4.0.tgz","fileCount":23,"integrity":"sha512-uj7F6AZaJvXF6lP+kylMGHhK9RzU9UqtpLLBGOT0/SRI1JzO1d5uVcRF6VLPyFHUI1xoFeOD7dQ1QYi3TpbRSw==","signatures":[{"sig":"MEQCIDBFz1n65+ca6j0JmBbpSoOUhhRp1k0Pbcx+4W9TK8uXAiB8siNiEHpowy5BJGrqHY8yzzN2RSXafIq6WwBREWobqw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":111785},"main":"./dist/index.cjs","type":"module","_from":"file:c-time-simple-ex-grid-1.4.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"},"./style.css":"./dist/index.css"},"scripts":{"dev":"storybook dev -p 6006","lint":"eslint src/","test":"vitest run","build":"vite build && tsc --emitDeclarationOnly","format":"prettier --write \"src/**/*.{ts,tsx}\"","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.{ts,tsx}\"","storybook:build":"storybook build"},"_npmUser":{"name":"setoharuo","email":"haruo@ctime.jp"},"_resolved":"C:\\Users\\User\\AppData\\Local\\Temp\\973f8e5eed8c03baeb08df11ae563718\\c-time-simple-ex-grid-1.4.0.tgz","_integrity":"sha512-uj7F6AZaJvXF6lP+kylMGHhK9RzU9UqtpLLBGOT0/SRI1JzO1d5uVcRF6VLPyFHUI1xoFeOD7dQ1QYi3TpbRSw==","_npmVersion":"10.9.2","description":"Excel-like grid component for React with clipboard, touch support, and cell selection","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"devDependencies":{"vite":"^8.0.8","jsdom":"^29.0.2","react":"^19.2.5","eslint":"^10.2.0","vitest":"^4.1.4","prettier":"^3.8.2","react-dom":"^19.2.5","storybook":"^10.3.5","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/react":"^19.2.14","@storybook/react":"^10.3.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.1","@vitejs/plugin-react":"^6.0.1","@storybook/react-vite":"^10.3.5","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.5.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/simple-ex-grid_1.4.0_1776199429265_0.4088699308867496","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@c-time/simple-ex-grid","version":"1.5.0","keywords":["react","grid","excel","spreadsheet","clipboard","touch"],"author":{"name":"c-time"},"license":"MIT","_id":"@c-time/simple-ex-grid@1.5.0","maintainers":[{"name":"setoharuo","email":"haruo@ctime.jp"},{"name":"gentarooka","email":"oka@ctime.jp"}],"dist":{"shasum":"261af51c56fb0a745b6f28df6e65e9f1f6f66039","tarball":"https://registry.npmjs.org/@c-time/simple-ex-grid/-/simple-ex-grid-1.5.0.tgz","fileCount":23,"integrity":"sha512-4Dq23JwIfKdj9PdofUp7+W7C5Uy4zAHH9mXxFrcuO4KSyI2YE4H137nVZXeDcbSp3A4pXSLkTQkNQ0zCNWcdrA==","signatures":[{"sig":"MEYCIQDJQKBnilGcit5Zgbt8kBg/T64uq5rVWxOQPnMOOgxugQIhAP5wI8rEPzRZbaoMAvu+TPTVCNWT6K35Rj2Rjc+Pmrxj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":118852},"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"},"./style.css":"./dist/index.css"},"gitHead":"666a09828a4f27f97176b3fc573e2d1afb2f17d1","scripts":{"dev":"storybook dev -p 6006","lint":"eslint src/","test":"vitest run","build":"vite build && tsc --emitDeclarationOnly","format":"prettier --write \"src/**/*.{ts,tsx}\"","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.{ts,tsx}\"","storybook:build":"storybook build"},"_npmUser":{"name":"setoharuo","email":"haruo@ctime.jp"},"_npmVersion":"10.9.4","description":"Excel-like grid component for React with clipboard, touch support, and cell selection","directories":{},"_nodeVersion":"22.21.1","_hasShrinkwrap":false,"packageManager":"pnpm@10.33.0","devDependencies":{"vite":"^8.0.8","jsdom":"^29.0.2","react":"^19.2.5","eslint":"^10.2.0","vitest":"^4.1.4","prettier":"^3.8.2","react-dom":"^19.2.5","storybook":"^10.3.5","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/react":"^19.2.14","@storybook/react":"^10.3.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.1","@vitejs/plugin-react":"^6.0.1","@storybook/react-vite":"^10.3.5","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.5.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/simple-ex-grid_1.5.0_1787802480442_0.15201236785095662","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@c-time/simple-ex-grid","version":"1.6.0","keywords":["react","grid","excel","spreadsheet","clipboard","touch"],"author":{"name":"c-time"},"license":"MIT","_id":"@c-time/simple-ex-grid@1.6.0","maintainers":[{"name":"setoharuo","email":"haruo@ctime.jp"},{"name":"gentarooka","email":"oka@ctime.jp"}],"dist":{"shasum":"21b665cbb90e7411aa796732d12eb7087bcae4f1","tarball":"https://registry.npmjs.org/@c-time/simple-ex-grid/-/simple-ex-grid-1.6.0.tgz","fileCount":26,"integrity":"sha512-PVwzKKdB3VN7ate/c/Q+GN50mm34RfTSelP4tvLta5L6mIOtRVqedcdIXbWpHiHDcrbty7gFC2056qCECcazTA==","signatures":[{"sig":"MEUCIA/bi2WrUiPg4Kl4Vbs4AQ8W+Ydwq5FcdVCQCcFQ97knAiEA3X5Fw9KzlHodIuZ+GxlN2GH6r/LgEdpFXoqXnM6Vl00=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":136109},"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"},"./style.css":"./dist/index.css"},"gitHead":"2510557f6813e3567166adccf81046d7798272a4","scripts":{"dev":"storybook dev -p 6006","lint":"eslint src/","test":"vitest run","build":"vite build && tsc --emitDeclarationOnly","format":"prettier --write \"src/**/*.{ts,tsx}\"","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.{ts,tsx}\"","storybook:build":"storybook build"},"_npmUser":{"name":"setoharuo","email":"haruo@ctime.jp"},"_npmVersion":"10.9.4","description":"Excel-like grid component for React with clipboard, touch support, and cell selection","directories":{},"_nodeVersion":"22.21.1","_hasShrinkwrap":false,"packageManager":"pnpm@10.33.0","devDependencies":{"vite":"^8.0.8","jsdom":"^29.0.2","react":"^19.2.5","eslint":"^10.2.0","vitest":"^4.1.4","prettier":"^3.8.2","react-dom":"^19.2.5","storybook":"^10.3.5","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/react":"^19.2.14","@storybook/react":"^10.3.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.1","@vitejs/plugin-react":"^6.0.1","@storybook/react-vite":"^10.3.5","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.5.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/simple-ex-grid_1.6.0_1789133581624_0.8665421350203595","host":"s3://npm-registry-packages-npm-production"}},"1.6.1":{"name":"@c-time/simple-ex-grid","version":"1.6.1","keywords":["react","grid","excel","spreadsheet","clipboard","touch"],"author":{"name":"c-time"},"license":"MIT","_id":"@c-time/simple-ex-grid@1.6.1","maintainers":[{"name":"setoharuo","email":"haruo@ctime.jp"},{"name":"gentarooka","email":"oka@ctime.jp"}],"dist":{"shasum":"a7ea72ed7abf2ea354f2a8687cf4deeca8fcb46f","tarball":"https://registry.npmjs.org/@c-time/simple-ex-grid/-/simple-ex-grid-1.6.1.tgz","fileCount":26,"integrity":"sha512-Yq0KtddcKpq6W3ykzkmY2CIjUNyrBEuFj3dfzfQ9kH5rqa749+4LO7kQsESPK8BuuWtRDoXnZiUFIejmD5vPAQ==","signatures":[{"sig":"MEUCIQDaca7eYoXSNi7fUjH03UMJYGcVWh57uwFjyH7J/UM0BgIgFqeSqkiZui0KD9dJcsXpL3ECeg5eCB7A914eizqccAc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137091},"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"},"./style.css":"./dist/index.css"},"gitHead":"98cab8f40755fd0eb191e9d8cba13dd8708c7bf7","scripts":{"dev":"storybook dev -p 6006","lint":"eslint src/","test":"vitest run","build":"vite build && tsc --emitDeclarationOnly","format":"prettier --write \"src/**/*.{ts,tsx}\"","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.{ts,tsx}\"","storybook:build":"storybook build"},"_npmUser":{"name":"setoharuo","email":"haruo@ctime.jp"},"_npmVersion":"10.9.4","description":"Excel-like grid component for React with clipboard, touch support, and cell selection","directories":{},"_nodeVersion":"22.21.1","_hasShrinkwrap":false,"packageManager":"pnpm@10.33.0","devDependencies":{"vite":"^8.0.8","jsdom":"^29.0.2","react":"^19.2.5","eslint":"^10.2.0","vitest":"^4.1.4","prettier":"^3.8.2","react-dom":"^19.2.5","storybook":"^10.3.5","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/react":"^19.2.14","@storybook/react":"^10.3.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.1","@vitejs/plugin-react":"^6.0.1","@storybook/react-vite":"^10.3.5","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.5.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/simple-ex-grid_1.6.1_1789136452556_0.7258251341324364","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"@c-time/simple-ex-grid","version":"1.7.0","keywords":["react","grid","excel","spreadsheet","clipboard","touch"],"author":{"name":"c-time"},"license":"MIT","_id":"@c-time/simple-ex-grid@1.7.0","maintainers":[{"name":"setoharuo","email":"haruo@ctime.jp"},{"name":"gentarooka","email":"oka@ctime.jp"}],"dist":{"shasum":"090f5c394e6d2cd3339b4f170192cc8ec268ab76","tarball":"https://registry.npmjs.org/@c-time/simple-ex-grid/-/simple-ex-grid-1.7.0.tgz","fileCount":26,"integrity":"sha512-vPv/J38oDVJi8jRotSqIYP1wOXy6lRLZYvsqTpn9MUWAXcqf0aTHQnfShJEIESL/ZfKXztFT+ThvxaUo/sGrQQ==","signatures":[{"sig":"MEUCIQCyGMspNPm+opQwSv+8GjTcDl0CQJKk8NGg4RufVAVfGwIgaIB9OBEBOC2oxjsywCNEgL+it0VYm/bXA2viT4nKT78=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":139945},"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"},"./style.css":"./dist/index.css"},"gitHead":"d18c09d07d335de8aab757c0ed31e37685b29526","scripts":{"dev":"storybook dev -p 6006","lint":"eslint src/","test":"vitest run","build":"vite build && tsc --emitDeclarationOnly","format":"prettier --write \"src/**/*.{ts,tsx}\"","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check \"src/**/*.{ts,tsx}\"","storybook:build":"storybook build"},"_npmUser":{"name":"setoharuo","email":"haruo@ctime.jp"},"_npmVersion":"10.9.4","description":"Excel-like grid component for React with clipboard, touch support, and cell selection","directories":{},"_nodeVersion":"22.21.1","_hasShrinkwrap":false,"packageManager":"pnpm@10.33.0","devDependencies":{"vite":"^8.0.8","jsdom":"^29.0.2","react":"^19.2.5","eslint":"^10.2.0","vitest":"^4.1.4","prettier":"^3.8.2","react-dom":"^19.2.5","storybook":"^10.3.5","@eslint/js":"^10.0.1","typescript":"^6.0.2","@types/react":"^19.2.14","@storybook/react":"^10.3.5","@types/react-dom":"^19.2.3","typescript-eslint":"^8.58.1","@vitejs/plugin-react":"^6.0.1","@storybook/react-vite":"^10.3.5","@testing-library/react":"^16.3.2","@testing-library/jest-dom":"^6.9.1","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.5.2"},"peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"_npmOperationalInternal":{"tmp":"tmp/simple-ex-grid_1.7.0_1789138419162_0.9125139764596897","host":"s3://npm-registry-packages-npm-production"}},"1.7.1":{"name":"@c-time/simple-ex-grid","version":"1.7.1","description":"Excel-like grid component for React with clipboard, touch support, and cell selection","type":"module","main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/index.js","require":"./dist/index.cjs","types":"./dist/index.d.ts"},"./style.css":"./dist/index.css"},"scripts":{"dev":"storybook dev -p 6006","build":"vite build && tsc --emitDeclarationOnly","test":"vitest run","test:watch":"vitest","lint":"eslint src/","format":"prettier --write \"src/**/*.{ts,tsx}\"","format:check":"prettier --check \"src/**/*.{ts,tsx}\"","storybook:build":"storybook build","typecheck":"tsc --noEmit"},"keywords":["react","grid","excel","spreadsheet","clipboard","touch"],"author":{"name":"c-time"},"license":"MIT","packageManager":"pnpm@10.33.0","peerDependencies":{"react":"^18.0.0 || ^19.0.0","react-dom":"^18.0.0 || ^19.0.0"},"devDependencies":{"@eslint/js":"^10.0.1","@storybook/react":"^10.3.5","@storybook/react-vite":"^10.3.5","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@types/react":"^19.2.14","@types/react-dom":"^19.2.3","@vitejs/plugin-react":"^6.0.1","eslint":"^10.2.0","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.5.2","jsdom":"^29.0.2","prettier":"^3.8.2","react":"^19.2.5","react-dom":"^19.2.5","storybook":"^10.3.5","typescript":"^6.0.2","typescript-eslint":"^8.58.1","vite":"^8.0.8","vitest":"^4.1.4"},"_id":"@c-time/simple-ex-grid@1.7.1","gitHead":"9b1b2df906ffa70187af57fd0bd5ff1d7f52729a","_nodeVersion":"22.21.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-totCWAL30LW07cigrW65bEBdS4384IDYGWb4zBOvq8KGc0k2l4UzgihzfHi6E/Xkjt7JIHNiEnINhVtP/fRWng==","shasum":"8b632d94b77b3b3e662cbccce64f6184463e2926","tarball":"https://registry.npmjs.org/@c-time/simple-ex-grid/-/simple-ex-grid-1.7.1.tgz","fileCount":26,"unpackedSize":141623,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCHW051CLbvT49FKiu0ahuB8k0WjAfEw7PtVI8jivGFZgIhANYaMed2YuK2sc6o6S0exgpdNKojMK7+NcDTOhNpQAG/"}]},"_npmUser":{"name":"setoharuo","email":"haruo@ctime.jp"},"directories":{},"maintainers":[{"name":"setoharuo","email":"haruo@ctime.jp"},{"name":"gentarooka","email":"oka@ctime.jp"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/simple-ex-grid_1.7.1_1789204439831_0.42389032091516055"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-14T03:09:19.942Z","modified":"2026-09-12T09:14:00.134Z","1.0.0":"2026-04-14T03:09:20.166Z","1.1.0":"2026-04-14T07:54:20.815Z","1.1.1":"2026-04-14T08:47:26.319Z","1.1.2":"2026-04-14T09:36:21.202Z","1.2.0":"2026-04-14T10:45:37.478Z","1.2.1":"2026-04-14T10:55:34.743Z","1.3.0":"2026-04-14T19:32:42.584Z","1.3.1":"2026-04-14T19:51:19.256Z","1.4.0":"2026-04-14T20:43:49.409Z","1.5.0":"2026-08-27T03:48:00.584Z","1.6.0":"2026-09-11T13:33:01.760Z","1.6.1":"2026-09-11T14:20:52.693Z","1.7.0":"2026-09-11T14:53:39.354Z","1.7.1":"2026-09-12T09:13:59.973Z"},"author":{"name":"c-time"},"license":"MIT","keywords":["react","grid","excel","spreadsheet","clipboard","touch"],"description":"Excel-like grid component for React with clipboard, touch support, and cell selection","maintainers":[{"name":"setoharuo","email":"haruo@ctime.jp"},{"name":"gentarooka","email":"oka@ctime.jp"}],"readme":"# @c-time/simple-ex-grid\r\n\r\nExcel-like grid component for React. Touch-first design with clipboard support, drag selection, and three operating modes.\r\n\r\n## Install\r\n\r\n```bash\r\nnpm install @c-time/simple-ex-grid\r\n# or\r\npnpm add @c-time/simple-ex-grid\r\n```\r\n\r\n**Peer dependencies:** React 19+\r\n\r\n## Quick Start\r\n\r\n```tsx\r\nimport { SimpleExGrid } from '@c-time/simple-ex-grid'\r\nimport type { ColumnDef } from '@c-time/simple-ex-grid'\r\n\r\ninterface Row {\r\n  id: number\r\n  name: string\r\n  price: number\r\n}\r\n\r\nconst columns: ColumnDef<Row>[] = [\r\n  { key: 'id', header: 'ID', width: 60, editable: false },\r\n  { key: 'name', header: 'Name', width: 200 },\r\n  { key: 'price', header: 'Price', width: 120, parser: (s) => Number(s) || 0 },\r\n]\r\n\r\nfunction App() {\r\n  const [rows, setRows] = useState<Row[]>([\r\n    { id: 1, name: 'Item A', price: 100 },\r\n    { id: 2, name: 'Item B', price: 200 },\r\n  ])\r\n\r\n  return (\r\n    <SimpleExGrid\r\n      rows={rows}\r\n      columns={columns}\r\n      mode=\"edit\"\r\n      onChange={setRows}\r\n    />\r\n  )\r\n}\r\n```\r\n\r\n## Modes\r\n\r\n| Mode | Description |\r\n|------|-------------|\r\n| `select` (default) | Selection and copy/paste only. No cell editing. |\r\n| `edit` | Re-tap active cell or press Enter/F2 to start editing. |\r\n| `readonly` | Selection and copy only. All mutations disabled. |\r\n\r\n## Props\r\n\r\n### Data\r\n\r\n| Prop | Type | Default | Description |\r\n|------|------|---------|-------------|\r\n| `rows` | `Row[]` | required | Row data array |\r\n| `columns` | `ColumnDef<Row>[]` | required | Column definitions |\r\n| `onChange` | `(rows, changes) => void` | - | Called when cell values change |\r\n\r\n### Mode & Display\r\n\r\n| Prop | Type | Default | Description |\r\n|------|------|---------|-------------|\r\n| `mode` | `'select' \\| 'edit' \\| 'readonly'` | `'select'` | Operating mode |\r\n| `showRowGripHeader` | `boolean` | `true` | Show row grip headers (left) |\r\n| `showColumnGripHeader` | `boolean` | `false` | Show column grip headers (top) |\r\n| `rowHeight` | `'single-line' \\| 'fit-content'` | `'single-line'` | `single-line`: truncate with ellipsis. `fit-content`: wrap text |\r\n| `scale` | `number` | `1` | Rendering scale of the cells and headers. See [Display Size](#display-size) |\r\n\r\n#### Display Size\r\n\r\n`scale` resizes everything that belongs to the cells together: text, padding, row height, the grip headers and drag handles, badges, and px column widths. `1` is the default size. The grid's own box keeps the size its parent gives it, so more or fewer cells fit in it. Scrollbars, the context menu, pagination and tooltips stay as they are. Values that are not a positive number fall back to `1`.\r\n\r\nThe grid has no zoom UI of its own. A slider or a responsive rule lives in the app and passes a number in:\r\n\r\n```tsx\r\nconst [scale, setScale] = useState(1)\r\n\r\n<input type=\"range\" min={0.6} max={2} step={0.05} value={scale}\r\n  onChange={(e) => setScale(Number(e.target.value))} />\r\n<SimpleExGrid rows={rows} columns={columns} scale={scale} />\r\n\r\n// or, e.g., bigger cells on touch screens\r\n<SimpleExGrid rows={rows} columns={columns} scale={isTouchScreen ? 1.4 : 1} />\r\n```\r\n\r\npx column widths are preferred widths, at any scale: when the grid is narrower than the columns add up to, they shrink to fit (down to their text) before a horizontal scrollbar appears.\r\n\r\n### Column Definition\r\n\r\n| Property | Type | Default | Description |\r\n|----------|------|---------|-------------|\r\n| `key` | `keyof Row & string` | required | Row property key |\r\n| `header` | `string` | required | Header display text |\r\n| `width` | `number \\| '${n}%' \\| 'fit-content'` | `120` | Column width. Fixed px, percentage, or auto |\r\n| `editable` | `boolean` | `true` | Set `false` to make column read-only |\r\n| `formatter` | `(value, row) => string` | - | Display formatter |\r\n| `parser` | `(input) => unknown` | - | Input parser (string to value) |\r\n| `validator` | `(value) => string \\| null` | - | Validation (return error message or null) |\r\n| `sortMark` | `'asc' \\| 'desc' \\| null` | `null` | Display sort indicator (▲/▼) in header. Display only — sorting logic is the caller's responsibility. |\r\n| `align` | `'left' \\| 'center' \\| 'right'` | - | Default text alignment for the column |\r\n| `headerAlign` | `'left' \\| 'center' \\| 'right'` | - | Header text alignment (overrides `align`) |\r\n| `color` | `string` | - | Default text color for the column (any CSS color) |\r\n| `fontStyle` | `'normal' \\| 'italic'` | - | Default font style for the column |\r\n| `fontWeight` | `'normal' \\| 'bold'` | - | Default font weight for the column |\r\n| `hidden` | `boolean` | `false` | Hide column visually. Hidden columns are still included in clipboard operations. |\r\n| `render` | `(value, row, rowIndex) => ReactNode` | - | Custom cell renderer. Returned node replaces default text display. Display only — use `editor` to customise editing. |\r\n| `editor` | `(props: CellEditorProps<Row>) => ReactNode` | - | Custom in-cell editor. Falls back to a single-line text input when omitted. |\r\n\r\n### Pagination\r\n\r\n| Prop | Type | Default | Description |\r\n|------|------|---------|-------------|\r\n| `pagination` | `boolean` | `false` | Enable pagination UI |\r\n| `pageSize` | `number` | `20` | Rows per page |\r\n| `page` | `number` | - | Controlled current page (0-indexed) |\r\n| `onPageChange` | `(page) => void` | - | Page change callback |\r\n| `onPageSizeChange` | `(pageSize) => void` | - | Page size change callback |\r\n\r\n### Selection\r\n\r\n| Prop | Type | Default | Description |\r\n|------|------|---------|-------------|\r\n| `selection` | `CellRange \\| null` | - | Controlled selection range |\r\n| `onSelectionChange` | `(range) => void` | - | Selection change callback |\r\n| `onActiveCellChange` | `(row, col) => void` | - | Active cell move callback |\r\n\r\n### Clipboard\r\n\r\n| Prop | Type | Default | Description |\r\n|------|------|---------|-------------|\r\n| `clipboard.enabled` | `boolean` | `true` | Enable clipboard operations |\r\n| `clipboard.format` | `'tsv' \\| 'html' \\| 'both'` | `'both'` | Clipboard data format |\r\n\r\nKeyboard shortcuts: `Ctrl+C` copy, `Ctrl+X` cut, `Ctrl+V` insert paste (add rows), `Ctrl+Shift+V` overwrite paste.\r\n\r\n### Cell Layout\r\n\r\n| Prop | Type | Default | Description |\r\n|------|------|---------|-------------|\r\n| `colSpan` | `(row, col) => number` | - | Return column span for a cell. Spanned cells are merged visually. |\r\n| `cellAlign` | `(row, col) => 'left' \\| 'center' \\| 'right' \\| undefined` | - | Per-cell text alignment override (takes priority over column `align`). |\r\n| `cellColor` | `(row, col) => string \\| undefined` | - | Per-cell text color override (takes priority over column `color`). |\r\n| `cellFontStyle` | `(row, col) => 'normal' \\| 'italic' \\| undefined` | - | Per-cell font style override (takes priority over column `fontStyle`). |\r\n| `cellFontWeight` | `(row, col) => 'normal' \\| 'bold' \\| undefined` | - | Per-cell font weight override (takes priority over column `fontWeight`). |\r\n\r\n### Cell Badge\r\n\r\n| Prop | Type | Default | Description |\r\n|------|------|---------|-------------|\r\n| `cellBadge` | `(row, col) => CellBadge \\| undefined` | - | Show a colored dot on the cell's top-right corner. Hover/tap to display a tooltip. |\r\n\r\n`CellBadge` has two properties: `type` (`'success'` / `'warning'` / `'error'`) and `message` (tooltip text).\r\n\r\n| Type | Color | Use case |\r\n|------|-------|----------|\r\n| `success` | Green (#27ae60) | Approved, valid, complete |\r\n| `warning` | Orange (#f39c12) | Caution, approaching limit |\r\n| `error` | Red (#e74c3c) | Validation error, over limit |\r\n\r\n```tsx\r\n<SimpleExGrid\r\n  rows={rows}\r\n  columns={columns}\r\n  cellBadge={(row, col) => {\r\n    if (col === 2 && rows[row].price >= 10000)\r\n      return { type: 'success', message: '承認済み' }\r\n    if (col === 3 && rows[row].qty >= 200)\r\n      return { type: 'error', message: `上限超過: ${rows[row].qty}` }\r\n  }}\r\n/>\r\n```\r\n\r\nBadge values are display-only and not included in clipboard operations.\r\n\r\n### Row Mutation\r\n\r\n| Prop | Type | Default | Description |\r\n|------|------|---------|-------------|\r\n| `allowRowAdd` | `boolean` | `false` | Allow adding rows (paste auto-extend, insert paste) |\r\n| `allowRowDelete` | `boolean` | `false` | Allow deleting rows (context menu) |\r\n| `onRowsAdd` | `(startRow, count) => void` | - | Fires after rows are added |\r\n| `onRowsDelete` | `(startRow, count) => void` | - | Fires after rows are deleted |\r\n\r\n### Row Reordering\r\n\r\n| Prop | Type | Default | Description |\r\n|------|------|---------|-------------|\r\n| `allowRowReorder` | `boolean` | `false` | Add \"行を上に移動\" / \"行を下に移動\" (move row up / down) to the context menu |\r\n| `rowReorderMode` | `boolean` | `false` | Drag reorder mode. Row grip headers show a handle, and dragging it moves rows instead of selecting them. The row grip header is shown while this is on, even with `showRowGripHeader={false}` |\r\n\r\nBoth move the selected rows as one block, and the selection follows them. A move calls `onChange` with the reordered rows and an empty `changes` array, since no cell value changed. One move is one undo step. Neither works in `readonly` mode.\r\n\r\n`rowReorderMode` is a switch for the app to flip, like `mode` — the grid has no built-in toggle:\r\n\r\n```tsx\r\nconst [reordering, setReordering] = useState(false)\r\n\r\n<button onClick={() => setReordering((v) => !v)}>並び順を編集</button>\r\n<SimpleExGrid rows={rows} columns={columns} onChange={setRows} allowRowReorder rowReorderMode={reordering} />\r\n```\r\n\r\n### Undo / Redo\r\n\r\n| Prop | Type | Default | Description |\r\n|------|------|---------|-------------|\r\n| `maxHistory` | `number` | - | Maximum number of history entries to keep |\r\n| `shouldRecordHistory` | `(changes, rowEvent?) => boolean` | - | Filter which mutations are recorded. `rowEvent` is `{ kind, startRow, count }` for row add/delete. |\r\n| `historyApiRef` | `React.MutableRefObject<HistoryApi<Row>>` | - | Ref to access undo/redo API externally |\r\n\r\n`HistoryApi<Row>` exposes `undo()`, `redo()`, `canUndo`, `canRedo`, and `pushHistory(before, after)`.\r\n\r\nKeyboard shortcuts: `Ctrl+Z` undo, `Ctrl+Y` / `Ctrl+Shift+Z` redo.\r\n\r\n### Context Menu\r\n\r\n| Prop | Type | Description |\r\n|------|------|-------------|\r\n| `contextMenuItems` | `(defaultItems, context) => ContextMenuItem[]` | Customize right-click menu items. Receives built-in items and context info, returns the final menu items. |\r\n\r\n`ContextMenuContext` provides `cell` (`{ row, col } | null`), `selection` (`CellRange | null`), and `mode`.\r\n\r\n```tsx\r\n<SimpleExGrid\r\n  rows={rows}\r\n  columns={columns}\r\n  contextMenuItems={(defaultItems, { cell }) => [\r\n    ...defaultItems,\r\n    { type: 'separator' },\r\n    { label: '行を複製', disabled: !cell, onClick: () => duplicateRow(cell!.row) },\r\n  ]}\r\n/>\r\n```\r\n\r\n### Editing Lifecycle\r\n\r\n| Prop | Type | Description |\r\n|------|------|-------------|\r\n| `onEditStart` | `(row, col) => boolean \\| void` | Fires when editing begins. Return `false` to cancel. |\r\n| `onEditCommit` | `(row, col, before, after) => boolean \\| void` | Fires on edit confirm. Return `false` to prevent write. |\r\n| `onEditCancel` | `(row, col) => void` | Fires when editing is cancelled (Escape). |\r\n\r\n### Clipboard Lifecycle\r\n\r\n| Prop | Type | Description |\r\n|------|------|-------------|\r\n| `onBeforeCopy` | `(context: BeforeCopyContext) => string[][] \\| false \\| void` | Fires before copy/cut. Return `false` to cancel, `string[][]` to replace data, or `void` to proceed. |\r\n| `onBeforePaste` | `(context: BeforePasteContext) => string[][] \\| false \\| void` | Fires before paste. Return `false` to cancel, `string[][]` to replace data, or `void` to proceed. |\r\n\r\n`BeforeCopyContext` provides `data` (2D string array), `source` (`{ row, col, endRow, endCol }`), `cut` (boolean), and a mutable `metadata` (`Record<string, unknown>`) for attaching custom data to the clipboard.\r\n\r\n`BeforePasteContext` provides `data` (2D string array), `target` (`{ row, col }`), `insert` (boolean — `true` for insert-paste, `false` for overwrite-paste), and `metadata` (`ClipboardMeta | null` — `null` when pasted from an external source).\r\n\r\n#### Clipboard Metadata\r\n\r\nWhen copying from the grid, a `ClipboardMeta` object is automatically written to the clipboard alongside the TSV/HTML data using a custom MIME type (`web application/x-seg-clipboard`). This metadata is available in `onBeforePaste` when pasting back into the same or another grid instance.\r\n\r\n`ClipboardMeta` contains:\r\n- `source` — the original copy range (`{ row, col, endRow, endCol }`)\r\n- `columnKeys` — column keys of the copied range\r\n- `colSpans` — per-row colspan values for owner columns\r\n- `custom` — user-defined metadata set via `onBeforeCopy`'s `context.metadata`\r\n\r\n```tsx\r\n<SimpleExGrid\r\n  rows={rows}\r\n  columns={columns}\r\n  onBeforeCopy={(ctx) => {\r\n    // Attach custom metadata to the clipboard\r\n    ctx.metadata.sourceSheet = 'Sheet1'\r\n    ctx.metadata.copiedAt = Date.now()\r\n  }}\r\n  onBeforePaste={(ctx) => {\r\n    if (ctx.metadata) {\r\n      console.log('Pasted from grid:', ctx.metadata.custom.sourceSheet)\r\n      console.log('Column keys:', ctx.metadata.columnKeys)\r\n    } else {\r\n      console.log('Pasted from external source')\r\n    }\r\n  }}\r\n/>\r\n```\r\n\r\n## Features\r\n\r\n### Selection\r\n\r\n- Click to select, Shift+Click to extend range, drag for rectangle selection\r\n- Arrow keys to navigate, Tab to move right (wraps), Shift+Tab to move left\r\n- `Ctrl+A` to select all, `Escape` to clear selection\r\n- Grip headers: click to select entire row/column, drag to extend\r\n\r\n### Editing (edit mode)\r\n\r\n- Re-tap active cell, press Enter, F2, or type a character to begin editing\r\n- Enter commits and moves down, Tab commits and moves right, Escape cancels\r\n- Double-click also starts editing in any writable mode\r\n- Shift+Click extends the range instead of editing, so multi-cell selection\r\n  works the same as in select mode\r\n- Dragging off the active cell extends the selection; releasing without leaving\r\n  the cell starts editing, so a slightly shaky tap still opens the editor\r\n- A press inside the open editor (right-click, or a tap on a touch screen) is\r\n  left to the browser, so its own paste/select menu shows and the grid's menu\r\n  never covers the editor\r\n- A long press opens the context menu rather than starting an edit\r\n\r\n#### Custom cell editors\r\n\r\n`ColumnDef.editor` replaces the built-in text input for that column. It receives\r\nthe same editing plumbing the default editor uses, so Enter/Tab/Escape keep\r\nworking as long as `onKeyDown` is wired up:\r\n\r\n```tsx\r\nconst columns: ColumnDef<Row>[] = [\r\n  {\r\n    key: 'category',\r\n    header: 'Category',\r\n    editor: ({ value, onChange, onCommit, onKeyDown }) => (\r\n      <select\r\n        autoFocus\r\n        className=\"seg-cell-editor\"\r\n        value={value}\r\n        onChange={(e) => onChange(e.target.value)}\r\n        onKeyDown={onKeyDown}\r\n        onBlur={() => onCommit()}\r\n      >\r\n        {CATEGORIES.map((c) => (\r\n          <option key={c} value={c}>{c}</option>\r\n        ))}\r\n      </select>\r\n    ),\r\n  },\r\n]\r\n```\r\n\r\n`CellEditorProps<Row>`:\r\n\r\n| Prop | Type | Description |\r\n|---|---|---|\r\n| `value` | `string` | Current editing value. `parser` converts it on commit. |\r\n| `onChange` | `(value: string) => void` | Update the value. Clears any validation error. |\r\n| `onCommit` | `() => boolean` | Commit. Returns `false` when `validator` rejected the value. |\r\n| `onCancel` | `() => void` | Discard and close. |\r\n| `onKeyDown` | `(e: React.KeyboardEvent) => void` | Grid key handling (Enter/Tab/Escape). |\r\n| `error` | `string \\| null` | Message from the last rejected commit. |\r\n| `row` | `Row` | The row being edited. |\r\n| `rowIndex` / `colIndex` | `number` | Position of the cell. |\r\n| `column` | `ColumnDef<Row>` | The column definition. |\r\n\r\nThe grid stops `pointerdown` from escaping the editor, so clicks inside a custom\r\neditor do not commit it. Focus is not managed for you — set `autoFocus` (or focus\r\nin an effect) on whatever element should receive it.\r\n\r\n#### Validation\r\n\r\n`ColumnDef.validator` runs on commit, after `parser`. Returning a message rejects\r\nthe commit: the editor stays open and is marked with `.seg-cell-editor-invalid`\r\n(the message becomes its `title`), and Enter/Tab do not move the active cell.\r\n`Escape` always cancels, so an invalid value can never trap the user in a cell.\r\n\r\n```tsx\r\n{ key: 'quantity', header: 'Qty', parser: (s) => Number(s) || 0,\r\n  validator: (v) => (Number(v) < 1 ? 'Quantity must be at least 1' : null) }\r\n```\r\n\r\n### Clipboard\r\n\r\n- Copy/cut/paste with Excel-compatible TSV + HTML table format\r\n- Paste auto-extends rows when `allowRowAdd` is enabled\r\n- Insert paste (`Ctrl+V`) inserts new rows at selection position\r\n- Overwrite paste (`Ctrl+Shift+V`) overwrites existing cells\r\n- `Ctrl+I` insert rows, `Ctrl+D` delete selected rows\r\n- Right-click context menu for all clipboard and row operations\r\n- Undo/redo (`Ctrl+Z` / `Ctrl+Y`) tracks all cell edits, paste, and row operations\r\n\r\n### Row Reordering\r\n\r\n- Context menu \"行を上に移動\" / \"行を下に移動\" moves the selected rows one step (`allowRowReorder`)\r\n- A selection that does not cover whole rows is widened to whole rows before moving\r\n- With pagination, a row moved across a page boundary is followed to its new page\r\n- Reorder mode (`rowReorderMode`): drag a row grip handle to move rows\r\n  - Grabbing a selected row drags every selected row; grabbing any other row drags just that one\r\n  - A line shows where the rows will land; dragging near the top/bottom edge auto-scrolls. When the grid runs off the screen, the screen edge counts, and the page scrolls once the grid itself cannot\r\n  - `Escape` cancels the drag; a tap without dragging just selects the row\r\n  - `Shift`+click on a handle extends the row selection, so blocks can be built up without leaving the mode\r\n  - Dragging across data cells still makes a rectangle selection\r\n\r\n### Touch Support\r\n\r\n- Pointer Events API for unified mouse/touch/pen handling\r\n- `setPointerCapture` for reliable touch drag selection\r\n- Grip headers opt out of browser panning (`touch-action: none`), so a finger drag on them selects or reorders rows instead of scrolling. Swiping over cells scrolls the grid\r\n- In edit mode the active cell opts out too (until it is being edited), so the browser cannot take a tap on it for a scroll and swallow the edit\r\n- Long-press opens context menu without losing selection (deferred selection pattern)\r\n\r\n### Layout\r\n\r\n- Sticky grip headers (row headers stick left, column headers stick top)\r\n- Custom overlay scrollbars (no layout shift from native scrollbar appearance)\r\n- Works in fixed-size containers, percentage-based layouts, and unconstrained layouts\r\n- Flex-based scroll structure handles both constrained and auto-sized parents\r\n\r\n## Development\r\n\r\n```bash\r\npnpm install\r\npnpm dev          # Storybook dev server\r\npnpm test         # Vitest\r\npnpm typecheck    # TypeScript\r\npnpm lint         # ESLint\r\npnpm build        # Vite library build\r\n```\r\n\r\n## License\r\n\r\nMIT\r\n","readmeFilename":"README.md"}