openpencil/packages/vue/example/vite.config.ts
Danila Poyarkov 8cdb4db7ee Add @open-pencil/vue headless SDK package
Renderless components (Reka UI-style) exposing editor logic via slots:
- OpenPencilProvider — injects editor via Vue provide/inject
- OpenPencilCanvas — CanvasKit/Skia surface with render loop
- PageList, LayerTree, ToolSelector, NodeProperties — slot-based

Composables:
- useEditor() — access editor from any descendant
- useCanvas() — low-level surface lifecycle (moved from app)

The app's use-canvas.ts is now a 2-line re-export from the SDK.
Includes example app in packages/vue/example/.
2026-03-16 17:24:45 +03:00

27 lines
685 B
TypeScript

import { resolve } from 'path'
import { copyFileSync, existsSync, mkdirSync } from 'fs'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
export default defineConfig({
plugins: [
{
name: 'copy-canvaskit-wasm',
buildStart() {
const src = resolve(__dirname, '../../../node_modules/canvaskit-wasm/bin/canvaskit.wasm')
const destDir = resolve(__dirname, 'public')
const dest = resolve(destDir, 'canvaskit.wasm')
if (existsSync(src) && !existsSync(dest)) {
mkdirSync(destDir, { recursive: true })
copyFileSync(src, dest)
}
}
},
vue()
],
server: {
port: 3333
}
})