diff --git a/docs/.vitepress/components/demos/basicRender.vue b/docs/.vitepress/components/demos/basicRender.vue
new file mode 100644
index 0000000..1577085
--- /dev/null
+++ b/docs/.vitepress/components/demos/basicRender.vue
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/.vitepress/components/demos/uiSystem.vue b/docs/.vitepress/components/demos/uiSystem.vue
new file mode 100644
index 0000000..6cf03bc
--- /dev/null
+++ b/docs/.vitepress/components/demos/uiSystem.vue
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/.vitepress/components/renderDemo.vue b/docs/.vitepress/components/renderDemo.vue
new file mode 100644
index 0000000..8ed38a8
--- /dev/null
+++ b/docs/.vitepress/components/renderDemo.vue
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts
index a4b3502..4d66cfc 100644
--- a/docs/.vitepress/config.ts
+++ b/docs/.vitepress/config.ts
@@ -1,7 +1,30 @@
import { defineConfig } from 'vitepress';
import { MermaidMarkdown, MermaidPlugin } from 'vitepress-plugin-mermaid';
+import vuejsx from '@vitejs/plugin-vue-jsx';
import { join } from 'path';
+/** 文档站内的自定义渲染标签,与主站 vite.config.ts 保持一致 */
+const custom = [
+ 'container',
+ 'custom',
+ 'text',
+ 'image',
+ 'shader',
+ 'comment',
+ 'custom-container',
+ 'map-render',
+ 'animate',
+ 'damage',
+ 'graphics',
+ 'icon',
+ 'winskin'
+];
+
+/** 判断一个标签是否为自定义渲染标签 */
+function isCustomElement(tag: string): boolean {
+ return custom.includes(tag) || tag.startsWith('g-');
+}
+
// https://vitepress.dev/reference/site-config
export default defineConfig({
title: 'HTML5 魔塔样板 V2.B',
@@ -298,9 +321,29 @@ export default defineConfig({
label: '中文'
}
},
+ vue: {
+ template: {
+ compilerOptions: {
+ isCustomElement
+ }
+ }
+ },
vite: {
// @ts-expect-error 类型错误
- plugins: [MermaidPlugin()],
+ plugins: [MermaidPlugin(), vuejsx({ isCustomElement })],
+ resolve: {
+ alias: [
+ {
+ find: /^@motajs\/(.+)$/,
+ replacement: `${process.cwd()}/packages/$1/src`
+ },
+ {
+ find: /^@user\/(.+)$/,
+ replacement: `${process.cwd()}/packages-user/$1/src`
+ }
+ ],
+ dedupe: ['vue']
+ },
optimizeDeps: {
include: ['mermaid']
},
diff --git a/docs/poc/render-demo.md b/docs/poc/render-demo.md
new file mode 100644
index 0000000..04c95ac
--- /dev/null
+++ b/docs/poc/render-demo.md
@@ -0,0 +1,26 @@
+# 渲染器内嵌演示(临时技术验证)
+
+本页是「文档内嵌可运行示例」的**临时技术验证页**,不进入导航;POC 通过后再由用户决定是否保留。
+
+## 覆盖范围
+
+- 渲染基础:容器、矩形、圆、文字,以及点击图形后计数与颜色的变化。
+- UISystem:`UIController` 打开 / 关闭一个最小 UI,页面上的栈长度与打开状态随之变化。
+
+两个示例都只在浏览器中挂载;构建期预渲染会跳过它们,因此不会触碰 `document`。
+
+
+
+
+
+ 渲染示例需要浏览器环境。
+
+
+
+
diff --git a/docs/tsconfig.json b/docs/tsconfig.json
new file mode 100644
index 0000000..07705ee
--- /dev/null
+++ b/docs/tsconfig.json
@@ -0,0 +1,16 @@
+{
+ "extends": "../tsconfig.json",
+ "compilerOptions": {
+ "baseUrl": "..",
+ "ignoreDeprecations": "6.0",
+ "paths": {
+ "@motajs/*": ["./packages/*/src"],
+ "@user/*": ["./packages-user/*/src"]
+ }
+ },
+ "include": [
+ "./.vitepress/**/*.ts",
+ "./.vitepress/**/*.vue",
+ "../src/types/vite-env.d.ts"
+ ]
+}