{"_id":"@ek-aiot/2d-editor-core","_rev":"10-c3b93452081d632be0d5246714b587fc","name":"@ek-aiot/2d-editor-core","dist-tags":{"next":"0.1.1","latest":"0.2.5"},"versions":{"0.1.0":{"name":"@ek-aiot/2d-editor-core","version":"0.1.0","_id":"@ek-aiot/2d-editor-core@0.1.0","maintainers":[{"name":"rookielzy","email":"sqpg1994@gmail.com"}],"dist":{"shasum":"7f453687df0090ee912c6fa9759f3a922b4a0def","tarball":"https://registry.npmjs.org/@ek-aiot/2d-editor-core/-/2d-editor-core-0.1.0.tgz","fileCount":123,"integrity":"sha512-vo10p315a9RzOPIwdRIzdlwAiZeV/gfDigi/JbagpUA/NeHIjt9sOjE3miXgXDRwZkZL8rZxZwQPXSbs6zFsPQ==","signatures":[{"sig":"MEQCIBalFZ0BOMaf2Yn7YttecoVS1ggaqDtWgVDsgfDULVhNAiAoPHtl2CnIREMrwCkJgIo8nHlqHTm7lLbeEp8v2L9y/Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":306128},"main":"./dist/index.js","type":"module","_from":"file:/tmp/ek-aiot-pack.irhBLq/ek-aiot-2d-editor-core-0.1.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"vite build && tsc -p tsconfig.build.json","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"rookielzy","email":"sqpg1994@gmail.com"},"_resolved":"/tmp/ek-aiot-pack.irhBLq/ek-aiot-2d-editor-core-0.1.0.tgz","_integrity":"sha512-vo10p315a9RzOPIwdRIzdlwAiZeV/gfDigi/JbagpUA/NeHIjt9sOjE3miXgXDRwZkZL8rZxZwQPXSbs6zFsPQ==","_npmVersion":"10.9.7","description":"`@ek-aiot/2d-editor-core` 是 2D 编辑器的框架无关能力层（browser-first，ESM-only）。","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","jsdom":"^29.0.2","konva":"^10.2.0","vitest":"^4.1.5","typescript":"~5.9.3","@types/node":"^24.10.1"},"peerDependencies":{"konva":"^10.2.0"},"_npmOperationalInternal":{"tmp":"tmp/2d-editor-core_0.1.0_1777359189590_0.2874292755615966","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@ek-aiot/2d-editor-core","version":"0.1.1","_id":"@ek-aiot/2d-editor-core@0.1.1","maintainers":[{"name":"rookielzy","email":"sqpg1994@gmail.com"}],"dist":{"shasum":"63e9bfa79e399fe17c885f69124fe2d87a7a861e","tarball":"https://registry.npmjs.org/@ek-aiot/2d-editor-core/-/2d-editor-core-0.1.1.tgz","fileCount":141,"integrity":"sha512-sYEKG+G30kmVjeTsilYm411OIoOgfacPDv/FxdVrZFi+TnLJpEM0AsC6Br5nnqebXZLclqLfNhKef9qTDQZQxQ==","signatures":[{"sig":"MEYCIQC6h/T+TRPfOeMV9W4jjw3wtCbz+c3HbSH92Su2m1X8tAIhAPDwHcpyuMoqmt13hpt6iCIEGPdOvkP1vnO5h1VClfpw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":344262},"main":"./dist/index.js","type":"module","_from":"file:ek-aiot-2d-editor-core-0.1.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"vite build && tsc -p tsconfig.build.json","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"rookielzy","email":"sqpg1994@gmail.com"},"_resolved":"/tmp/4cb8b2d4bddcb007ed711cf711bf62bd/ek-aiot-2d-editor-core-0.1.1.tgz","_integrity":"sha512-sYEKG+G30kmVjeTsilYm411OIoOgfacPDv/FxdVrZFi+TnLJpEM0AsC6Br5nnqebXZLclqLfNhKef9qTDQZQxQ==","_npmVersion":"10.9.7","description":"`@ek-aiot/2d-editor-core` 是 2D 编辑器的框架无关能力层（browser-first，ESM-only）。","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"vite":"^7.3.1","jsdom":"^29.0.2","konva":"^10.2.0","vitest":"^4.1.5","typescript":"~5.9.3","@types/node":"^24.10.1"},"peerDependencies":{"konva":"^10.2.0"},"_npmOperationalInternal":{"tmp":"tmp/2d-editor-core_0.1.1_1777529605006_0.2938168490763202","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@ek-aiot/2d-editor-core","version":"0.1.2","_id":"@ek-aiot/2d-editor-core@0.1.2","maintainers":[{"name":"rookielzy","email":"sqpg1994@gmail.com"}],"dist":{"shasum":"c1b546ffbbe128cf7cd5520026419552365280b0","tarball":"https://registry.npmjs.org/@ek-aiot/2d-editor-core/-/2d-editor-core-0.1.2.tgz","fileCount":153,"integrity":"sha512-ktAxMB0kKf3jtdK+djeU6EWf4IPfcPcFpTjSohPSntHpRV72oPpWuQo249Y07mms4LluOtqCAaQ0e1UezMozrA==","signatures":[{"sig":"MEYCIQDvklYpgOO8qrIBVDzX/GcIIJe4xPqdQbcieVAYBKA+pQIhAMtvvCB6eaNz7Q7vJ3NrNefERjinjcEVrkXaJv80ErE9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":383273},"main":"./dist/index.js","type":"module","_from":"file:ek-aiot-2d-editor-core-0.1.2.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"vite build && tsc -p tsconfig.build.json","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"rookielzy","email":"sqpg1994@gmail.com"},"_resolved":"/tmp/be8f5a82cf49260ac63295b6a6769f11/ek-aiot-2d-editor-core-0.1.2.tgz","_integrity":"sha512-ktAxMB0kKf3jtdK+djeU6EWf4IPfcPcFpTjSohPSntHpRV72oPpWuQo249Y07mms4LluOtqCAaQ0e1UezMozrA==","_npmVersion":"10.9.7","description":"`@ek-aiot/2d-editor-core` 是 2D 编辑器的框架无关能力层（browser-first，ESM-only）。","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","jsdom":"^29.0.2","konva":"^10.2.0","vitest":"^4.1.5","typescript":"~5.9.3","@types/node":"^24.10.1"},"peerDependencies":{"konva":"^10.2.0"},"_npmOperationalInternal":{"tmp":"tmp/2d-editor-core_0.1.2_1778312926664_0.08048321552629445","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@ek-aiot/2d-editor-core","version":"0.2.0","_id":"@ek-aiot/2d-editor-core@0.2.0","maintainers":[{"name":"rookielzy","email":"sqpg1994@gmail.com"}],"dist":{"shasum":"ba2e5b4da9ab869b1c21a9e8fde2754feb7f68c7","tarball":"https://registry.npmjs.org/@ek-aiot/2d-editor-core/-/2d-editor-core-0.2.0.tgz","fileCount":177,"integrity":"sha512-Rwuz0S7crt1aOgNhiYesUruDVZ6UuPTFU10WAas/d0eZ68Xsog/nY/5hdvkd0/LnXfzw7X1+ubOYshDLwomsag==","signatures":[{"sig":"MEYCIQCH/GQmjLuaG2+gXOY0HJFwKFRZB8waug2V6XCL4KhNGgIhAM5wDhDeeBt1PuoWR7O2KXr/YnvDsNaex0gkeulilZY3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":972929},"main":"./dist/index.js","type":"module","_from":"file:release-artifacts/ek-aiot-2d-editor-core-0.2.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"vite build && tsc -p tsconfig.build.json","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"rookielzy","email":"sqpg1994@gmail.com"},"_resolved":"/home/runner/work/ek-aiot-2d-editor/ek-aiot-2d-editor/release-artifacts/ek-aiot-2d-editor-core-0.2.0.tgz","_integrity":"sha512-Rwuz0S7crt1aOgNhiYesUruDVZ6UuPTFU10WAas/d0eZ68Xsog/nY/5hdvkd0/LnXfzw7X1+ubOYshDLwomsag==","_npmVersion":"10.9.8","description":"`@ek-aiot/2d-editor-core` 是 2D 编辑器的框架无关能力层。它以浏览器为主要运行环境， 使用 ESM 发布，并将文档事务、无头状态、Konva 舞台、运行时数据和共享协议组合成一套 不依赖 Vue、React 或 Pinia 的编辑器内核。","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","jsdom":"^29.0.2","konva":"^10.2.0","vitest":"^4.1.5","typescript":"~5.9.3","@types/node":"^24.10.1"},"peerDependencies":{"konva":"^10.2.0"},"_npmOperationalInternal":{"tmp":"tmp/2d-editor-core_0.2.0_1786453012541_0.6201450967971003","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@ek-aiot/2d-editor-core","version":"0.2.1","_id":"@ek-aiot/2d-editor-core@0.2.1","maintainers":[{"name":"rookielzy","email":"sqpg1994@gmail.com"}],"dist":{"shasum":"c26bf01d1a356f465e395f7f4c3ba613200faa2c","tarball":"https://registry.npmjs.org/@ek-aiot/2d-editor-core/-/2d-editor-core-0.2.1.tgz","fileCount":177,"integrity":"sha512-h5erl+OiMGQ7tEoNRX3KH4l6Yol74YVWoVU4ZaMR4AGM0ydrybZqhwzLdtoD2OmFdlvyM1Nh6wYeyMXRGDQnlw==","signatures":[{"sig":"MEYCIQCL8cEn/gwr99WaM+xT7YbpAKOYnU8MdvbTALYNMoTpKQIhANlwdf28Wdcjlh2FICXzm5mpYTAtaSa77tZCzOKtTTzh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":972929},"main":"./dist/index.js","type":"module","_from":"file:release-artifacts/ek-aiot-2d-editor-core-0.2.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"vite build && tsc -p tsconfig.build.json","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"rookielzy","email":"sqpg1994@gmail.com"},"_resolved":"/home/runner/work/ek-aiot-2d-editor/ek-aiot-2d-editor/release-artifacts/ek-aiot-2d-editor-core-0.2.1.tgz","_integrity":"sha512-h5erl+OiMGQ7tEoNRX3KH4l6Yol74YVWoVU4ZaMR4AGM0ydrybZqhwzLdtoD2OmFdlvyM1Nh6wYeyMXRGDQnlw==","_npmVersion":"10.9.8","description":"`@ek-aiot/2d-editor-core` 是 2D 编辑器的框架无关能力层。它以浏览器为主要运行环境， 使用 ESM 发布，并将文档事务、无头状态、Konva 舞台、运行时数据和共享协议组合成一套 不依赖 Vue、React 或 Pinia 的编辑器内核。","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","jsdom":"^29.0.2","konva":"^10.2.0","vitest":"^4.1.5","typescript":"~5.9.3","@types/node":"^24.10.1"},"peerDependencies":{"konva":"^10.2.0"},"_npmOperationalInternal":{"tmp":"tmp/2d-editor-core_0.2.1_1786889057607_0.3907932083070702","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@ek-aiot/2d-editor-core","version":"0.2.2","_id":"@ek-aiot/2d-editor-core@0.2.2","maintainers":[{"name":"rookielzy","email":"sqpg1994@gmail.com"}],"dist":{"shasum":"e44a438775270ea8de149674ebcbab2d5dbf34ba","tarball":"https://registry.npmjs.org/@ek-aiot/2d-editor-core/-/2d-editor-core-0.2.2.tgz","fileCount":183,"integrity":"sha512-hq8R9/TXe7b/vvcIvmKT133GXnH2PsE5onoVE+9i4ql/ap4oSYpQlfTIU7agxVaDkL68KqVxh5WGhI0dlC3dpA==","signatures":[{"sig":"MEYCIQDc4o/PUGhVkfNPdypMpf8ZAktsu+EG47k5/CPpuNd1MAIhAIELZ01b/b6lUDTK+/V7p+NcIucTjre4kaiB/VcLDN3v","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":992029},"main":"./dist/index.js","type":"module","_from":"file:release-artifacts/ek-aiot-2d-editor-core-0.2.2.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"vite build && tsc -p tsconfig.build.json","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"rookielzy","email":"sqpg1994@gmail.com"},"_resolved":"/home/runner/work/ek-aiot-2d-editor/ek-aiot-2d-editor/release-artifacts/ek-aiot-2d-editor-core-0.2.2.tgz","_integrity":"sha512-hq8R9/TXe7b/vvcIvmKT133GXnH2PsE5onoVE+9i4ql/ap4oSYpQlfTIU7agxVaDkL68KqVxh5WGhI0dlC3dpA==","_npmVersion":"10.9.8","description":"`@ek-aiot/2d-editor-core` 是 2D 编辑器的框架无关能力层。它以浏览器为主要运行环境， 使用 ESM 发布，并将文档事务、无头状态、Konva 舞台、运行时数据和共享协议组合成一套 不依赖 Vue、React 或 Pinia 的编辑器内核。","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","jsdom":"^29.0.2","konva":"^10.2.0","vitest":"^4.1.5","typescript":"~5.9.3","@types/node":"^24.10.1"},"peerDependencies":{"konva":"^10.2.0"},"_npmOperationalInternal":{"tmp":"tmp/2d-editor-core_0.2.2_1787046400790_0.4497660693767165","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@ek-aiot/2d-editor-core","version":"0.2.3","_id":"@ek-aiot/2d-editor-core@0.2.3","maintainers":[{"name":"rookielzy","email":"sqpg1994@gmail.com"}],"dist":{"shasum":"14187e1b0b89b51bc6d8618352b5e5df0ba2bc2f","tarball":"https://registry.npmjs.org/@ek-aiot/2d-editor-core/-/2d-editor-core-0.2.3.tgz","fileCount":201,"integrity":"sha512-r79mfjsVzN4gFuAtueuu+iJs7BGwkZhpTq2glm6My08r879qXTnzj5NIk77rwQSeX8HAk+wQsm5hYqbr7CrCIw==","signatures":[{"sig":"MEUCIQDHrJTL7Oa/vMSQP2juB9rOOYg7ekGpWn9lNNcakNZ0uwIgaP2LjkiVyAg4bU4xtf5rFAcymiOJhZ90LgXlBT4Pi1M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1149183},"main":"./dist/index.js","type":"module","_from":"file:release-artifacts/ek-aiot-2d-editor-core-0.2.3.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"vite build && tsc -p tsconfig.build.json","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"rookielzy","email":"sqpg1994@gmail.com"},"_resolved":"/home/runner/work/ek-aiot-2d-editor/ek-aiot-2d-editor/release-artifacts/ek-aiot-2d-editor-core-0.2.3.tgz","_integrity":"sha512-r79mfjsVzN4gFuAtueuu+iJs7BGwkZhpTq2glm6My08r879qXTnzj5NIk77rwQSeX8HAk+wQsm5hYqbr7CrCIw==","_npmVersion":"10.9.8","description":"`@ek-aiot/2d-editor-core` 是 2D 编辑器的框架无关能力层。它以浏览器为主要运行环境， 使用 ESM 发布，并将文档事务、无头状态、Konva 舞台、运行时数据和共享协议组合成一套 不依赖 Vue、React 或 Pinia 的编辑器内核。","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","jsdom":"^29.0.2","konva":"^10.2.0","vitest":"^4.1.5","typescript":"~5.9.3","@types/node":"^24.10.1"},"peerDependencies":{"konva":"^10.2.0"},"_npmOperationalInternal":{"tmp":"tmp/2d-editor-core_0.2.3_1787638235098_0.15660516146597048","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@ek-aiot/2d-editor-core","version":"0.2.4","_id":"@ek-aiot/2d-editor-core@0.2.4","maintainers":[{"name":"rookielzy","email":"sqpg1994@gmail.com"}],"dist":{"shasum":"26494d00a6eb77e075b8b4bf8d0a723baa78f868","tarball":"https://registry.npmjs.org/@ek-aiot/2d-editor-core/-/2d-editor-core-0.2.4.tgz","fileCount":201,"integrity":"sha512-7xYl22TpOZu28AanaIMnC2Gw3Ef0kCyDCGDXQ2a20yMFB9iB3xHurCJEYu7mdNohI7O4rz2GfOIPOErtLN/h1g==","signatures":[{"sig":"MEQCIFLOyyee4IAXv623VDS1AtsvuUOVN3kmjtcJDzJKVPJ+AiBPTj1DfTR0I6Z+BrMAZbJLcgBkHMbbotcMaDfUjE1csw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1149205},"main":"./dist/index.js","type":"module","_from":"file:release-artifacts/ek-aiot-2d-editor-core-0.2.4.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"vite build && tsc -p tsconfig.build.json","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"_npmUser":{"name":"rookielzy","email":"sqpg1994@gmail.com"},"_resolved":"/home/runner/work/ek-aiot-2d-editor/ek-aiot-2d-editor/release-artifacts/ek-aiot-2d-editor-core-0.2.4.tgz","_integrity":"sha512-7xYl22TpOZu28AanaIMnC2Gw3Ef0kCyDCGDXQ2a20yMFB9iB3xHurCJEYu7mdNohI7O4rz2GfOIPOErtLN/h1g==","_npmVersion":"10.9.8","description":"`@ek-aiot/2d-editor-core` 是 2D 编辑器的框架无关能力层。它以浏览器为主要运行环境， 使用 ESM 发布，并将文档事务、无头状态、Konva 舞台、运行时数据和共享协议组合成一套 不依赖 Vue、React 或 Pinia 的编辑器内核。","directories":{},"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","jsdom":"^29.0.2","konva":"^10.2.0","vitest":"^4.1.5","typescript":"~5.9.3","@types/node":"^24.10.1"},"peerDependencies":{"konva":"^10.2.0"},"_npmOperationalInternal":{"tmp":"tmp/2d-editor-core_0.2.4_1787645740102_0.596626327008815","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"_id":"@ek-aiot/2d-editor-core@0.2.5","dist":{"shasum":"7e221cc7407ac838ce6ed00027467de32f6eda16","tarball":"https://registry.npmjs.org/@ek-aiot/2d-editor-core/-/2d-editor-core-0.2.5.tgz","fileCount":201,"integrity":"sha512-vFiUBYGVmQ8FTC/AmrNQkurLSzWmpvGc5ConiyVUdSDDEXsSN7giBXBTsR0CMRruVVx0AhpRaFxio11CyOX5zA==","signatures":[{"sig":"MEUCIQCoZEwmMzSmAgrJBrsjWnHBHPAKxzOUdGd0lEy3AXhzNgIgKlhLrDMg7ivZ9sW5ePoTzD7y3zMk9gWDzntlMxA2YZg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIExVoAXRMt1gK3p6U4wtktRFXO8SruH7xkoE78Bgq+b5AiEAjsxO9wF2/02SN0gNb0Jz1t81/FWnAHpkWIFlZ3wSxvk="}],"unpackedSize":1149616},"main":"./dist/index.js","name":"@ek-aiot/2d-editor-core","type":"module","_from":"file:release-artifacts/ek-aiot-2d-editor-core-0.2.5.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"test":"vitest run","build":"vite build && tsc -p tsconfig.build.json","typecheck":"tsc -p tsconfig.json --noEmit","test:watch":"vitest"},"version":"0.2.5","_npmUser":{"name":"rookielzy","email":"sqpg1994@gmail.com"},"_resolved":"/home/runner/work/ek-aiot-2d-editor/ek-aiot-2d-editor/release-artifacts/ek-aiot-2d-editor-core-0.2.5.tgz","_integrity":"sha512-vFiUBYGVmQ8FTC/AmrNQkurLSzWmpvGc5ConiyVUdSDDEXsSN7giBXBTsR0CMRruVVx0AhpRaFxio11CyOX5zA==","_npmVersion":"10.9.8","description":"`@ek-aiot/2d-editor-core` 是 2D 编辑器的框架无关能力层。它以浏览器为主要运行环境， 使用 ESM 发布，并将文档事务、无头状态、Konva 舞台、运行时数据和共享协议组合成一套 不依赖 Vue、React 或 Pinia 的编辑器内核。","directories":{},"maintainers":[{"name":"rookielzy","email":"sqpg1994@gmail.com"}],"_nodeVersion":"22.23.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.3.1","jsdom":"^29.0.2","konva":"^10.2.0","vitest":"^4.1.5","typescript":"~5.9.3","@types/node":"^24.10.1"},"peerDependencies":{"konva":"^10.2.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/2d-editor-core_0.2.5_1789703864220_0.8623188365044738"}}},"time":{"created":"2026-04-28T06:53:09.442Z","modified":"2026-09-18T03:57:44.546Z","0.1.0":"2026-04-28T06:53:09.762Z","0.1.1":"2026-04-30T06:13:25.183Z","0.1.2":"2026-05-09T07:48:46.806Z","0.2.0":"2026-08-11T12:56:52.685Z","0.2.1":"2026-08-16T14:04:17.797Z","0.2.2":"2026-08-18T09:46:40.934Z","0.2.3":"2026-08-25T06:10:35.269Z","0.2.4":"2026-08-25T08:15:40.247Z","0.2.5":"2026-09-18T03:57:44.365Z"},"description":"`@ek-aiot/2d-editor-core` 是 2D 编辑器的框架无关能力层。它以浏览器为主要运行环境， 使用 ESM 发布，并将文档事务、无头状态、Konva 舞台、运行时数据和共享协议组合成一套 不依赖 Vue、React 或 Pinia 的编辑器内核。","maintainers":[{"name":"rookielzy","email":"sqpg1994@gmail.com"}],"readme":"# @ek-aiot/2d-editor-core 功能地图\n\n`@ek-aiot/2d-editor-core` 是 2D 编辑器的框架无关能力层。它以浏览器为主要运行环境，\n使用 ESM 发布，并将文档事务、无头状态、Konva 舞台、运行时数据和共享协议组合成一套\n不依赖 Vue、React 或 Pinia 的编辑器内核。\n\n当前版本：`v0.1.2`（以 `package.json` 为准）\n\n## 架构总览\n\n```text\n宿主 UI / 框架适配层\n       |\n       v\nheadless  ----------> commands ----------> types\n   |                     |                   ^\n   | committed state     | EditorDocument    |\n   v                     v                   |\nstage <------------ document snapshot -------+\n   | preview / callbacks                     |\n   v                                         |\nruntime ------------ binding values ---------+\n   |\nmaterials + utils 为以上模块提供内置目录和纯工具\n```\n\n这里存在四类状态，集成时不要混用：\n\n- **文档状态**：`EditorDocument`，只能通过 `commands` 提交，支持撤销、重做和变更事件。\n- **会话状态**：选择、工具、吸附、剪贴板和物料目录，由 `headless` 管理，不写入文档历史。\n- **舞台预览**：拖拽、变换、文字编辑、管线绘制中的临时画面，由 `stage` 管理；完成后通过回调交给宿主提交命令。\n- **运行时状态**：绑定值、连接状态和数据集轮询结果，由 `runtime` 管理，不写回编辑文档。\n\n## 目录功能地图\n\n| 目录                                                            | 核心功能                                             | 主要边界                                   |\n| --------------------------------------------------------------- | ---------------------------------------------------- | ------------------------------------------ |\n| [`src/`](./src/README.md)                                       | 包入口、能力装配与公开导出                           | 只从 `src/index.ts` 定义公开 API           |\n| [`src/commands/`](./src/commands/README.md)                     | 同步文档命令、校验、快照、撤销/重做、历史合并        | 只处理可序列化 JSON，不持有 UI/Konva 实例  |\n| [`src/headless/`](./src/headless/README.md)                     | 无 UI 编辑器门面、会话状态、能力选择器、快捷键       | 不渲染画布，不接管宿主事件仲裁             |\n| [`src/stage/`](./src/stage/README.md)                           | Konva 场景、节点渲染、交互预览、导出 PNG             | 不拥有权威文档，完成交互后通过回调上报     |\n| [`src/stage/createStage/`](./src/stage/createStage/README.md)   | `createStage` 的场景、输入、选择、管线、视图等子系统 | 作为内部实现，不作为独立公共入口           |\n| [`src/runtime/`](./src/runtime/README.md)                       | 绑定协议、必需 key 收集、连接器和 HTTP 数据集        | 只产生运行时值，不改写 `EditorDocument`    |\n| [`src/runtime/connectors/`](./src/runtime/connectors/README.md) | HTTP 轮询与 WebSocket 绑定值连接                     | 负责生命周期、节流、错误和重连             |\n| [`src/runtime/datasets/`](./src/runtime/datasets/README.md)     | HTTP 请求模板、响应映射、冲突检测、多数据集轮询      | 冲突按数据集顺序由后者覆盖                 |\n| [`src/materials/`](./src/materials/README.md)                   | 基础图形与设备内置物料目录                           | 仅提供物料定义和 SVG URL，不含拖放协议     |\n| [`src/types/`](./src/types/README.md)                           | 文档 Schema、交互类型、运行时值类型                  | 是跨模块的数据协议层，不包含行为           |\n| [`src/utils/`](./src/utils/README.md)                           | 文档 JSON 解码、节点类型、渲染和 DOM 判断            | 保持纯函数或无状态工具                     |\n| [`src/__tests__/`](./src/__tests__/README.md)                   | 包级契约与跨模块测试                                 | 验证公共 API、协议、物料、数据集和舞台终态 |\n\n资源目录与各模块的局部测试目录也有就地说明，可从对应目录 README 继续下钻。\n\n## 公开能力\n\n包根 `src/index.ts` 公开以下能力：\n\n- `commands`：`CommandManager`、文档值工具、命令契约和各领域 command factory。\n- `headless`：`createHeadlessEditor`、快照/会话类型、能力选择器和快捷键工具。\n- `stage`：`createStage`、`StageHandle`、主题、文案和 PNG 导出选项。\n- `types`：`schema`、`interaction`、`runtime` 中的共享类型。\n- `runtime`：v1 协议、HTTP/WebSocket 连接器、HTTP 数据集工具和必需绑定 key 收集。\n- `materials`：`createBuiltinMaterials` 与 `DEFAULT_MATERIAL_ICON_URLS`。\n- `utils`：编辑器文档 JSON 解码、节点类型、渲染和 DOM 工具。\n\n## 典型集成流程\n\n```ts\nimport {\n  createHeadlessEditor,\n  createStage,\n  createTransformNodesCommand,\n} from \"@ek-aiot/2d-editor-core\";\n\nconst editor = createHeadlessEditor({ initialDocument });\n\nconst stage = createStage(container, {\n  onSelectionChange: (ids) => editor.setSelectedNodeIds(ids),\n  onNodesVisualPatch: (patches) => editor.execute(createTransformNodesCommand(patches)),\n});\n\nfunction syncStage() {\n  const snapshot = editor.getSnapshot();\n  stage.setNodes(snapshot.document.nodes);\n  stage.setSelection(snapshot.session.selectedNodeIds);\n  stage.setTool(snapshot.session.activeTool);\n}\n\nsyncStage();\nconst unsubscribe = editor.subscribe(syncStage);\n\nfunction dispose() {\n  unsubscribe();\n  stage.destroy();\n}\n```\n\n宿主卸载时调用 `dispose()`。舞台的 preview 回调只用于即时画面反馈；只有完成回调转换成\ncommand 并成功执行后，新的文档快照才应重新喂给舞台。\n\n## 非目标边界\n\n- 不包含 Vue/React 组件、Pinia store 或任何特定框架状态管理。\n- 不包含 `types/ui`、面板布局、拖放协议或壳层交互。\n- 不让 Konva 实例进入可序列化文档或 headless session。\n- 不把实时绑定值和数据集结果持久化回编辑文档。\n\n## 开发与验证\n\n```bash\npnpm --filter @ek-aiot/2d-editor-core test\npnpm --filter @ek-aiot/2d-editor-core typecheck\npnpm --filter @ek-aiot/2d-editor-core build\n```\n\n测试运行在 Vitest + jsdom 中；构建产物为 `dist/index.js` 和对应类型声明，`konva` 保持为\npeer dependency。\n","readmeFilename":"README.md"}