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/.
27 lines
685 B
TypeScript
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
|
|
}
|
|
})
|