Split the 2505-line god store into 13 domain modules sharing an EditorContext interface: editor/types.ts — EditorState, EditorOptions, Tool, EditorToolDef editor/create.ts — createEditor() assembler editor/viewport.ts — screenToCanvas, applyZoom, pan, zoom* editor/selection.ts — select, clearSelection, marquee, snap, hover editor/pages.ts — switchPage, addPage, deletePage, renamePage editor/shapes.ts — createShape, pen tool, adoptNodesIntoSection editor/structure.ts — group, ungroup, reorder, reparent, z-order editor/components.ts — component/instance/detach/componentSet editor/clipboard.ts — duplicate, copy, paste, delete editor/undo.ts — commitMove/Resize/Rotation, snapshot editor/text.ts — startTextEditing, commitTextEdit editor/nodes.ts — updateNode, setLayoutMode Move design constants (fills, strokes, zoom) from app to core. Largest file is structure.ts at 394 lines (was 2505). App store is now a thin Vue wrapper (747 lines) delegating to the core Editor — ready for @open-pencil/vue SDK consumption. All 955 tests pass, 0 lint errors, 1.41% duplication.
189 lines
5.1 KiB
JSON
189 lines
5.1 KiB
JSON
{
|
|
"name": "@open-pencil/core",
|
|
"version": "0.10.0",
|
|
"license": "MIT",
|
|
"type": "module",
|
|
"sideEffects": false,
|
|
"exports": {
|
|
".": {
|
|
"types": "./src/index.ts",
|
|
"bun": "./src/index.ts",
|
|
"default": "./src/index.ts"
|
|
},
|
|
"./scene-graph": {
|
|
"types": "./src/scene-graph.ts",
|
|
"bun": "./src/scene-graph.ts",
|
|
"default": "./src/scene-graph.ts"
|
|
},
|
|
"./kiwi": {
|
|
"types": "./src/kiwi/index.ts",
|
|
"bun": "./src/kiwi/index.ts",
|
|
"default": "./src/kiwi/index.ts"
|
|
},
|
|
"./tools": {
|
|
"types": "./src/tools/index.ts",
|
|
"bun": "./src/tools/index.ts",
|
|
"default": "./src/tools/index.ts"
|
|
},
|
|
"./renderer": {
|
|
"types": "./src/renderer/index.ts",
|
|
"bun": "./src/renderer/index.ts",
|
|
"default": "./src/renderer/index.ts"
|
|
},
|
|
"./render": {
|
|
"types": "./src/render/index.ts",
|
|
"bun": "./src/render/index.ts",
|
|
"default": "./src/render/index.ts"
|
|
},
|
|
"./rpc": {
|
|
"types": "./src/rpc/index.ts",
|
|
"bun": "./src/rpc/index.ts",
|
|
"default": "./src/rpc/index.ts"
|
|
},
|
|
"./figma-api": {
|
|
"types": "./src/figma-api.ts",
|
|
"bun": "./src/figma-api.ts",
|
|
"default": "./src/figma-api.ts"
|
|
},
|
|
"./canvaskit": {
|
|
"types": "./src/canvaskit.ts",
|
|
"bun": "./src/canvaskit.ts",
|
|
"default": "./src/canvaskit.ts"
|
|
},
|
|
"./layout": {
|
|
"types": "./src/layout.ts",
|
|
"bun": "./src/layout.ts",
|
|
"default": "./src/layout.ts"
|
|
},
|
|
"./color": {
|
|
"types": "./src/color.ts",
|
|
"bun": "./src/color.ts",
|
|
"default": "./src/color.ts"
|
|
},
|
|
"./render-image": {
|
|
"types": "./src/render-image.ts",
|
|
"bun": "./src/render-image.ts",
|
|
"default": "./src/render-image.ts"
|
|
},
|
|
"./profiler": {
|
|
"types": "./src/profiler/index.ts",
|
|
"bun": "./src/profiler/index.ts",
|
|
"default": "./src/profiler/index.ts"
|
|
},
|
|
"./editor": {
|
|
"types": "./src/editor/index.ts",
|
|
"bun": "./src/editor/index.ts",
|
|
"default": "./src/editor/index.ts"
|
|
}
|
|
},
|
|
"main": "./src/index.ts",
|
|
"types": "./src/index.ts",
|
|
"files": ["src", "dist", "assets"],
|
|
"scripts": {
|
|
"build": "bunx tsgo && bunx fix-esm-import-path dist",
|
|
"prepublishOnly": "bun run build"
|
|
},
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "git+https://github.com/open-pencil/open-pencil.git",
|
|
"directory": "packages/core"
|
|
},
|
|
"publishConfig": {
|
|
"access": "public",
|
|
"provenance": true,
|
|
"exports": {
|
|
".": {
|
|
"types": "./dist/index.d.ts",
|
|
"import": "./dist/index.js",
|
|
"default": "./dist/index.js"
|
|
},
|
|
"./scene-graph": {
|
|
"types": "./dist/scene-graph.d.ts",
|
|
"import": "./dist/scene-graph.js",
|
|
"default": "./dist/scene-graph.js"
|
|
},
|
|
"./kiwi": {
|
|
"types": "./dist/kiwi/index.d.ts",
|
|
"import": "./dist/kiwi/index.js",
|
|
"default": "./dist/kiwi/index.js"
|
|
},
|
|
"./tools": {
|
|
"types": "./dist/tools/index.d.ts",
|
|
"import": "./dist/tools/index.js",
|
|
"default": "./dist/tools/index.js"
|
|
},
|
|
"./renderer": {
|
|
"types": "./dist/renderer/index.d.ts",
|
|
"import": "./dist/renderer/index.js",
|
|
"default": "./dist/renderer/index.js"
|
|
},
|
|
"./render": {
|
|
"types": "./dist/render/index.d.ts",
|
|
"import": "./dist/render/index.js",
|
|
"default": "./dist/render/index.js"
|
|
},
|
|
"./rpc": {
|
|
"types": "./dist/rpc/index.d.ts",
|
|
"import": "./dist/rpc/index.js",
|
|
"default": "./dist/rpc/index.js"
|
|
},
|
|
"./figma-api": {
|
|
"types": "./dist/figma-api.d.ts",
|
|
"import": "./dist/figma-api.js",
|
|
"default": "./dist/figma-api.js"
|
|
},
|
|
"./canvaskit": {
|
|
"types": "./dist/canvaskit.d.ts",
|
|
"import": "./dist/canvaskit.js",
|
|
"default": "./dist/canvaskit.js"
|
|
},
|
|
"./layout": {
|
|
"types": "./dist/layout.d.ts",
|
|
"import": "./dist/layout.js",
|
|
"default": "./dist/layout.js"
|
|
},
|
|
"./color": {
|
|
"types": "./dist/color.d.ts",
|
|
"import": "./dist/color.js",
|
|
"default": "./dist/color.js"
|
|
},
|
|
"./render-image": {
|
|
"types": "./dist/render-image.d.ts",
|
|
"import": "./dist/render-image.js",
|
|
"default": "./dist/render-image.js"
|
|
},
|
|
"./profiler": {
|
|
"types": "./dist/profiler/index.d.ts",
|
|
"import": "./dist/profiler/index.js",
|
|
"default": "./dist/profiler/index.js"
|
|
},
|
|
"./editor": {
|
|
"types": "./dist/editor/index.d.ts",
|
|
"import": "./dist/editor/index.js",
|
|
"default": "./dist/editor/index.js"
|
|
}
|
|
},
|
|
"main": "./dist/index.js",
|
|
"types": "./dist/index.d.ts"
|
|
},
|
|
"dependencies": {
|
|
"@iconify/utils": "^3.1.0",
|
|
"canvaskit-wasm": "^0.40.0",
|
|
"culori": "^4.0.2",
|
|
"diff": "^8.0.3",
|
|
"expr-eval": "^2.0.2",
|
|
"fflate": "^0.8.2",
|
|
"fontoxpath": "^3.34.0",
|
|
"fzstd": "^0.1.1",
|
|
"nanoevents": "^9.1.0",
|
|
"sucrase": "^3.35.1",
|
|
"svgpath": "^2.6.0",
|
|
"yoga-layout": "npm:@open-pencil/yoga-layout@3.3.0-grid.2"
|
|
},
|
|
"devDependencies": {
|
|
"@types/culori": "^4.0.1",
|
|
"@types/diff": "^8.0.0",
|
|
"typescript": "~5.8.3"
|
|
}
|
|
}
|