Własny interfejs edytora
Typowa aplikacja 4B Pen oparta na Vue składa się z trzech warstw:
@open-pencil/coretworzy edytor;@open-pencil/vuełączy go z composables i komponentami Vue bez narzuconego wyglądu;- aplikacja określa układ, wygląd i zachowanie właściwe dla produktu.
Dlaczego warto rozdzielić te warstwy
Gotowa aplikacja 4B Pen jest tylko jednym z możliwych interfejsów.
Na podstawie SDK można utworzyć edytor osadzony w innym produkcie, wewnętrzne narzędzie do pracy z zasobami, edytor szablonów, interfejs do adnotacji albo wyspecjalizowany edytor z obsługą AI.
Zalecana struktura
Wygodny interfejs zwykle:
- wywołuje
provideEditor()wysoko w drzewie komponentów; - umieszcza obszar roboczy pośrodku;
- pokazuje strony i warstwy na jednym panelu bocznym;
- pokazuje właściwości na drugim panelu;
- steruje menu i paskami narzędzi za pomocą composables.
Przykład
vue
<script setup lang="ts">
import { createEditor } from '@open-pencil/core/editor'
import {
provideEditor,
CanvasRoot,
CanvasSurface,
ToolbarRoot,
PageListRoot,
LayerTreeRoot,
} from '@open-pencil/vue'
const editor = createEditor({ width: 1440, height: 900 })
provideEditor(editor)
</script>
<template>
<div class="grid h-screen grid-cols-[240px_1fr_320px] grid-rows-[48px_1fr]">
<ToolbarRoot v-slot="{ tools, activeTool, setTool }">
<header class="col-span-3 flex items-center gap-2 border-b px-3">
<button
v-for="tool in tools"
:key="tool.id"
:data-active="activeTool === tool.id"
@click="setTool(tool.id)"
>
{{ tool.label }}
</button>
</header>
</ToolbarRoot>
<aside class="border-r">
<PageListRoot v-slot="{ pages, currentPageId, switchPage }">
<nav>
<button
v-for="page in pages"
:key="page.id"
:data-active="page.id === currentPageId"
@click="switchPage(page.id)"
>
{{ page.name }}
</button>
</nav>
</PageListRoot>
</aside>
<main>
<CanvasRoot>
<CanvasSurface class="size-full" />
</CanvasRoot>
</main>
<aside class="border-l">
Panel właściwości
</aside>
</div>
</template>Odpowiedzialność SDK i aplikacji
- SDK odpowiada za integrację z edytorem i logikę niezależną od wyglądu, przeznaczoną do ponownego użycia.
- Aplikacja odpowiada za układ, wygląd i operacje właściwe dla konkretnego produktu.
- Composables pozwalają podłączać menu i panele bez zbędnych komponentów opakowujących.