@sparqjs/schema-designer 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/README.md +40 -0
  2. package/dist/app/root.d.ts +63 -0
  3. package/dist/app/root.d.ts.map +1 -0
  4. package/dist/app/toolbar.d.ts +36 -0
  5. package/dist/app/toolbar.d.ts.map +1 -0
  6. package/dist/canvas/adapter.d.ts +47 -0
  7. package/dist/canvas/adapter.d.ts.map +1 -0
  8. package/dist/canvas/canvas.d.ts +20 -0
  9. package/dist/canvas/canvas.d.ts.map +1 -0
  10. package/dist/canvas/node-frame.d.ts +121 -0
  11. package/dist/canvas/node-frame.d.ts.map +1 -0
  12. package/dist/canvas/sortable-list.d.ts +44 -0
  13. package/dist/canvas/sortable-list.d.ts.map +1 -0
  14. package/dist/dialogs/dialogs.d.ts +58 -0
  15. package/dist/dialogs/dialogs.d.ts.map +1 -0
  16. package/dist/dialogs/resource-tree-model.d.ts +62 -0
  17. package/dist/dialogs/resource-tree-model.d.ts.map +1 -0
  18. package/dist/extensions/context.d.ts +76 -0
  19. package/dist/extensions/context.d.ts.map +1 -0
  20. package/dist/extensions/instance.d.ts +56 -0
  21. package/dist/extensions/instance.d.ts.map +1 -0
  22. package/dist/extensions/material.d.ts +49 -0
  23. package/dist/extensions/material.d.ts.map +1 -0
  24. package/dist/index.d.ts +14 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +10190 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/inspector/boolean-checkbox.d.ts +26 -0
  29. package/dist/inspector/boolean-checkbox.d.ts.map +1 -0
  30. package/dist/inspector/capabilities/adapters.d.ts +16 -0
  31. package/dist/inspector/capabilities/adapters.d.ts.map +1 -0
  32. package/dist/inspector/capabilities/cards/color-palette.d.ts +4 -0
  33. package/dist/inspector/capabilities/cards/color-palette.d.ts.map +1 -0
  34. package/dist/inspector/capabilities/cards/component-settings.d.ts +8 -0
  35. package/dist/inspector/capabilities/cards/component-settings.d.ts.map +1 -0
  36. package/dist/inspector/capabilities/cards/input-slots.d.ts +4 -0
  37. package/dist/inspector/capabilities/cards/input-slots.d.ts.map +1 -0
  38. package/dist/inspector/capabilities/cards/interaction-rules.d.ts +4 -0
  39. package/dist/inspector/capabilities/cards/interaction-rules.d.ts.map +1 -0
  40. package/dist/inspector/capabilities/cards/option-source.d.ts +4 -0
  41. package/dist/inspector/capabilities/cards/option-source.d.ts.map +1 -0
  42. package/dist/inspector/capabilities/cards/validation-rules.d.ts +4 -0
  43. package/dist/inspector/capabilities/cards/validation-rules.d.ts.map +1 -0
  44. package/dist/inspector/capabilities/cards/value-strategy.d.ts +4 -0
  45. package/dist/inspector/capabilities/cards/value-strategy.d.ts.map +1 -0
  46. package/dist/inspector/capabilities/index.d.ts +5 -0
  47. package/dist/inspector/capabilities/index.d.ts.map +1 -0
  48. package/dist/inspector/capabilities/keys.d.ts +20 -0
  49. package/dist/inspector/capabilities/keys.d.ts.map +1 -0
  50. package/dist/inspector/capabilities/register-built-ins.d.ts +4 -0
  51. package/dist/inspector/capabilities/register-built-ins.d.ts.map +1 -0
  52. package/dist/inspector/capabilities/registry.d.ts +7 -0
  53. package/dist/inspector/capabilities/registry.d.ts.map +1 -0
  54. package/dist/inspector/capabilities/types.d.ts +44 -0
  55. package/dist/inspector/capabilities/types.d.ts.map +1 -0
  56. package/dist/inspector/color-palette-editor.d.ts +10 -0
  57. package/dist/inspector/color-palette-editor.d.ts.map +1 -0
  58. package/dist/inspector/commands/component-migration.d.ts +25 -0
  59. package/dist/inspector/commands/component-migration.d.ts.map +1 -0
  60. package/dist/inspector/commands/field-property.d.ts +51 -0
  61. package/dist/inspector/commands/field-property.d.ts.map +1 -0
  62. package/dist/inspector/commands/form-property.d.ts +25 -0
  63. package/dist/inspector/commands/form-property.d.ts.map +1 -0
  64. package/dist/inspector/component-settings-editor.d.ts +37 -0
  65. package/dist/inspector/component-settings-editor.d.ts.map +1 -0
  66. package/dist/inspector/computed-expression-editor.d.ts +20 -0
  67. package/dist/inspector/computed-expression-editor.d.ts.map +1 -0
  68. package/dist/inspector/condition-editor-model.d.ts +63 -0
  69. package/dist/inspector/condition-editor-model.d.ts.map +1 -0
  70. package/dist/inspector/condition-visual-editor.d.ts +30 -0
  71. package/dist/inspector/condition-visual-editor.d.ts.map +1 -0
  72. package/dist/inspector/container-items-editor.d.ts +42 -0
  73. package/dist/inspector/container-items-editor.d.ts.map +1 -0
  74. package/dist/inspector/date-time-format-editor.d.ts +30 -0
  75. package/dist/inspector/date-time-format-editor.d.ts.map +1 -0
  76. package/dist/inspector/default-value-editor.d.ts +30 -0
  77. package/dist/inspector/default-value-editor.d.ts.map +1 -0
  78. package/dist/inspector/field-property-view.d.ts +44 -0
  79. package/dist/inspector/field-property-view.d.ts.map +1 -0
  80. package/dist/inspector/field-schema/build-sections.d.ts +9 -0
  81. package/dist/inspector/field-schema/build-sections.d.ts.map +1 -0
  82. package/dist/inspector/field-schema/component-options.d.ts +14 -0
  83. package/dist/inspector/field-schema/component-options.d.ts.map +1 -0
  84. package/dist/inspector/field-schema/fields.d.ts +21 -0
  85. package/dist/inspector/field-schema/fields.d.ts.map +1 -0
  86. package/dist/inspector/field-schema/index.d.ts +5 -0
  87. package/dist/inspector/field-schema/index.d.ts.map +1 -0
  88. package/dist/inspector/field-schema/keys.d.ts +15 -0
  89. package/dist/inspector/field-schema/keys.d.ts.map +1 -0
  90. package/dist/inspector/field-schema/registry.d.ts +99 -0
  91. package/dist/inspector/field-schema/registry.d.ts.map +1 -0
  92. package/dist/inspector/field-schema/types.d.ts +113 -0
  93. package/dist/inspector/field-schema/types.d.ts.map +1 -0
  94. package/dist/inspector/form-property-view.d.ts +14 -0
  95. package/dist/inspector/form-property-view.d.ts.map +1 -0
  96. package/dist/inspector/form-schema.d.ts +64 -0
  97. package/dist/inspector/form-schema.d.ts.map +1 -0
  98. package/dist/inspector/input-slots-editor.d.ts +11 -0
  99. package/dist/inspector/input-slots-editor.d.ts.map +1 -0
  100. package/dist/inspector/inspector.d.ts +34 -0
  101. package/dist/inspector/inspector.d.ts.map +1 -0
  102. package/dist/inspector/interaction-rules-editor.d.ts +24 -0
  103. package/dist/inspector/interaction-rules-editor.d.ts.map +1 -0
  104. package/dist/inspector/option-source-editor.d.ts +35 -0
  105. package/dist/inspector/option-source-editor.d.ts.map +1 -0
  106. package/dist/inspector/option-source-summary.d.ts +4 -0
  107. package/dist/inspector/option-source-summary.d.ts.map +1 -0
  108. package/dist/inspector/property-commit.d.ts +23 -0
  109. package/dist/inspector/property-commit.d.ts.map +1 -0
  110. package/dist/inspector/property-section.d.ts +4 -0
  111. package/dist/inspector/property-section.d.ts.map +1 -0
  112. package/dist/inspector/property-ui-adapter.d.ts +4 -0
  113. package/dist/inspector/property-ui-adapter.d.ts.map +1 -0
  114. package/dist/inspector/required-validation.d.ts +16 -0
  115. package/dist/inspector/required-validation.d.ts.map +1 -0
  116. package/dist/inspector/validation-rule-editor.d.ts +25 -0
  117. package/dist/inspector/validation-rule-editor.d.ts.map +1 -0
  118. package/dist/inspector/value-strategy-editor.d.ts +31 -0
  119. package/dist/inspector/value-strategy-editor.d.ts.map +1 -0
  120. package/dist/services/registry.d.ts +68 -0
  121. package/dist/services/registry.d.ts.map +1 -0
  122. package/dist/shared/clone.d.ts +8 -0
  123. package/dist/shared/clone.d.ts.map +1 -0
  124. package/dist/shared/component-registry.d.ts +10 -0
  125. package/dist/shared/component-registry.d.ts.map +1 -0
  126. package/dist/shared/icons.d.ts +8 -0
  127. package/dist/shared/icons.d.ts.map +1 -0
  128. package/dist/shared/object-path.d.ts +14 -0
  129. package/dist/shared/object-path.d.ts.map +1 -0
  130. package/dist/shared/ui-adapter.d.ts +12 -0
  131. package/dist/shared/ui-adapter.d.ts.map +1 -0
  132. package/dist/shared/view-node.d.ts +9 -0
  133. package/dist/shared/view-node.d.ts.map +1 -0
  134. package/dist/sidebar/components.d.ts +24 -0
  135. package/dist/sidebar/components.d.ts.map +1 -0
  136. package/dist/sidebar/sidebar.d.ts +25 -0
  137. package/dist/sidebar/sidebar.d.ts.map +1 -0
  138. package/dist/state/component-config.d.ts +41 -0
  139. package/dist/state/component-config.d.ts.map +1 -0
  140. package/dist/state/create-state.d.ts +8 -0
  141. package/dist/state/create-state.d.ts.map +1 -0
  142. package/dist/state/draft.d.ts +12 -0
  143. package/dist/state/draft.d.ts.map +1 -0
  144. package/dist/state/field.d.ts +10 -0
  145. package/dist/state/field.d.ts.map +1 -0
  146. package/dist/state/form-actions.d.ts +17 -0
  147. package/dist/state/form-actions.d.ts.map +1 -0
  148. package/dist/state/form-view.d.ts +6 -0
  149. package/dist/state/form-view.d.ts.map +1 -0
  150. package/dist/state/history.d.ts +16 -0
  151. package/dist/state/history.d.ts.map +1 -0
  152. package/dist/state/node-actions.d.ts +66 -0
  153. package/dist/state/node-actions.d.ts.map +1 -0
  154. package/dist/state/node-permissions.d.ts +17 -0
  155. package/dist/state/node-permissions.d.ts.map +1 -0
  156. package/dist/state/output.d.ts +5 -0
  157. package/dist/state/output.d.ts.map +1 -0
  158. package/dist/state/schema.d.ts +10 -0
  159. package/dist/state/schema.d.ts.map +1 -0
  160. package/dist/state/tree.d.ts +28 -0
  161. package/dist/state/tree.d.ts.map +1 -0
  162. package/dist/state/types.d.ts +81 -0
  163. package/dist/state/types.d.ts.map +1 -0
  164. package/dist/state/visibility.d.ts +17 -0
  165. package/dist/state/visibility.d.ts.map +1 -0
  166. package/package.json +46 -0
  167. package/src/style.css +2129 -0
package/README.md ADDED
@@ -0,0 +1,40 @@
1
+ # @sparqjs/schema-designer
2
+
3
+ `@sparqjs/schema-designer` 提供业务无关的 Schema 可视化设计器。宿主负责加载 Schema、实现设计期服务并决定保存和发布流程;Designer 只维护当前实例的草稿、画布、属性检查器和输出。
4
+
5
+ ## 安装
6
+
7
+ ```bash
8
+ pnpm add @sparqjs/schema-designer @sparqjs/schema-vue @sparqjs/schema-ui-element-plus element-plus vue
9
+ ```
10
+
11
+ ## 使用
12
+
13
+ ```ts
14
+ import { createApp, h } from 'vue'
15
+ import { SparqDesigner } from '@sparqjs/schema-designer'
16
+ import '@sparqjs/schema-designer/style.css'
17
+ import '@sparqjs/schema-vue/style.css'
18
+ import '@sparqjs/schema-ui-element-plus/style.css'
19
+ import 'element-plus/dist/index.css'
20
+
21
+ const app = createApp({
22
+ render: () =>
23
+ h(SparqDesigner, {
24
+ schema,
25
+ onSave: async (nextSchema) => {
26
+ await saveDraft(nextSchema)
27
+ },
28
+ }),
29
+ })
30
+
31
+ app.mount('#app')
32
+ ```
33
+
34
+ `schema` 必须是 `@sparqjs/schema-protocol` 定义的 `SchemaResource`。`onSave` 只表示宿主接受当前输出;校验、发布、权限和失败反馈仍由宿主负责。
35
+
36
+ ## 扩展边界
37
+
38
+ `DesignerExtension` 可以为单个 Designer 实例提供物料、运行时组件、属性配置、能力卡和设计期服务。扩展不写入全局注册表,同一页面可以挂载不同配置的多个 Designer。
39
+
40
+ Designer 不包含 Admin transport、认证、路由、Schema Draft API 或业务模块工作流。CMS、Settings 等模块应持有自己的加载、保存和发布状态,只把 Schema 与稳定扩展传入 `SparqDesigner`。
@@ -0,0 +1,63 @@
1
+ import { type PropType } from 'vue';
2
+ import type { SchemaResource } from '@sparqjs/schema-protocol';
3
+ import type { RootProps } from '../state/types';
4
+ /**
5
+ * 设计器根组件。
6
+ *
7
+ * 它负责实例扩展解析、草稿状态生命周期和三栏工作区编排,不承载具体属性业务规则。
8
+ */
9
+ export declare const Shell: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
10
+ schema: {
11
+ type: PropType<SchemaResource>;
12
+ required: true;
13
+ };
14
+ view: {
15
+ type: StringConstructor;
16
+ default: string;
17
+ };
18
+ services: PropType<RootProps["services"]>;
19
+ components: PropType<RootProps["components"]>;
20
+ icons: PropType<RootProps["icons"]>;
21
+ richTextEditors: PropType<RootProps["richTextEditors"]>;
22
+ extensions: PropType<RootProps["extensions"]>;
23
+ materialKeys: PropType<RootProps["materialKeys"]>;
24
+ nodePermissions: PropType<RootProps["nodePermissions"]>;
25
+ outputScope: {
26
+ type: PropType<NonNullable<RootProps["outputScope"]>>;
27
+ default: string;
28
+ };
29
+ features: PropType<RootProps["features"]>;
30
+ onSave: PropType<RootProps["onSave"]>;
31
+ onSaveError: PropType<RootProps["onSaveError"]>;
32
+ onChange: PropType<RootProps["onChange"]>;
33
+ onDirtyChange: PropType<RootProps["onDirtyChange"]>;
34
+ }>, () => JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
35
+ schema: {
36
+ type: PropType<SchemaResource>;
37
+ required: true;
38
+ };
39
+ view: {
40
+ type: StringConstructor;
41
+ default: string;
42
+ };
43
+ services: PropType<RootProps["services"]>;
44
+ components: PropType<RootProps["components"]>;
45
+ icons: PropType<RootProps["icons"]>;
46
+ richTextEditors: PropType<RootProps["richTextEditors"]>;
47
+ extensions: PropType<RootProps["extensions"]>;
48
+ materialKeys: PropType<RootProps["materialKeys"]>;
49
+ nodePermissions: PropType<RootProps["nodePermissions"]>;
50
+ outputScope: {
51
+ type: PropType<NonNullable<RootProps["outputScope"]>>;
52
+ default: string;
53
+ };
54
+ features: PropType<RootProps["features"]>;
55
+ onSave: PropType<RootProps["onSave"]>;
56
+ onSaveError: PropType<RootProps["onSaveError"]>;
57
+ onChange: PropType<RootProps["onChange"]>;
58
+ onDirtyChange: PropType<RootProps["onDirtyChange"]>;
59
+ }>> & Readonly<{}>, {
60
+ view: string;
61
+ outputScope: NonNullable<import("..").DesignerOutputScope | undefined>;
62
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
63
+ //# sourceMappingURL=root.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../../src/app/root.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAyE,KAAK,QAAQ,EAAE,MAAM,KAAK,CAAA;AAC1G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAM9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAoB/C;;;;GAIG;AACH,eAAO,MAAM,KAAK;;cAIU,QAAQ,CAAC,cAAc,CAAC;;;;;;;cAOf,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;gBACtC,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;WACtC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;qBAClB,QAAQ,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;gBAC5C,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;kBAC/B,QAAQ,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;qBAC7B,QAAQ,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;;cAE/C,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;;;cAG/C,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAC/B,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;iBACxB,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;cACrC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;mBAC1B,QAAQ,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;;;cAtB3C,QAAQ,CAAC,cAAc,CAAC;;;;;;;cAOf,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;gBACtC,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;WACtC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;qBAClB,QAAQ,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;gBAC5C,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;kBAC/B,QAAQ,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;qBAC7B,QAAQ,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;;cAE/C,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;;;cAG/C,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAC/B,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;iBACxB,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;cACrC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;mBAC1B,QAAQ,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;;;;4EAuMrE,CAAA"}
@@ -0,0 +1,36 @@
1
+ import { type PropType } from 'vue';
2
+ import type { DraftState } from '../state/types';
3
+ import { type ResolvedDesignerFeatures } from '../extensions/instance';
4
+ /** 打开完整预览并锁定入口,直到 PreviewDialog 完成运行时挂载。 */
5
+ export declare function openDesignerPreview(state: DraftState): boolean;
6
+ /** 设计器顶部命令栏,统一触发保存、导入导出、预览和历史操作。 */
7
+ export declare const Toolbar: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
8
+ state: {
9
+ type: PropType<DraftState>;
10
+ required: true;
11
+ };
12
+ features: {
13
+ type: PropType<ResolvedDesignerFeatures>;
14
+ default: () => Required<import("..").DesignerFeatureOptions>;
15
+ };
16
+ }>, () => JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
17
+ save: () => true;
18
+ export: () => true;
19
+ import: () => true;
20
+ }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
21
+ state: {
22
+ type: PropType<DraftState>;
23
+ required: true;
24
+ };
25
+ features: {
26
+ type: PropType<ResolvedDesignerFeatures>;
27
+ default: () => Required<import("..").DesignerFeatureOptions>;
28
+ };
29
+ }>> & Readonly<{
30
+ onImport?: (() => any) | undefined;
31
+ onExport?: (() => any) | undefined;
32
+ onSave?: (() => any) | undefined;
33
+ }>, {
34
+ features: Required<import("..").DesignerFeatureOptions>;
35
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
36
+ //# sourceMappingURL=toolbar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolbar.d.ts","sourceRoot":"","sources":["../../src/app/toolbar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,QAAQ,EAAE,MAAM,KAAK,CAAA;AACvD,OAAO,KAAK,EAAE,UAAU,EAAc,MAAM,gBAAgB,CAAA;AAC5D,OAAO,EAA2B,KAAK,wBAAwB,EAAE,MAAM,wBAAwB,CAAA;AAI/F,4CAA4C;AAC5C,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAO9D;AAED,oCAAoC;AACpC,eAAO,MAAM,OAAO;;cAIQ,QAAQ,CAAC,UAAU,CAAC;;;;cAIpB,QAAQ,CAAC,wBAAwB,CAAC;;;;;;;;;cAJlC,QAAQ,CAAC,UAAU,CAAC;;;;cAIpB,QAAQ,CAAC,wBAAwB,CAAC;;;;;;;;;4EAgJ5D,CAAA"}
@@ -0,0 +1,47 @@
1
+ import { type VNodeChild } from 'vue';
2
+ import type { RuntimeViewNode } from '@sparqjs/schema-core';
3
+ import { type SchemaFormState, type SchemaUiAdapter } from '@sparqjs/schema-vue';
4
+ import type Sortable from 'sortablejs';
5
+ import type { DraftState } from '../state/types';
6
+ import { type NodeMoveContext } from '../state/visibility';
7
+ /** Canvas adapter 组合真实表单状态、草稿状态和可选基础渲染器所需输入。 */
8
+ export interface AdapterOptions {
9
+ state: DraftState;
10
+ form?: SchemaFormState;
11
+ base?: SchemaUiAdapter;
12
+ selectedNodeIds?: ReadonlySet<string>;
13
+ }
14
+ /**
15
+ * 创建画布专用 Schema UI adapter。
16
+ *
17
+ * 它复用真实 UI 渲染结果,并在字段和布局外包裹选中、拖放、复制和删除交互。
18
+ */
19
+ export declare function createCanvasAdapter(options: AdapterOptions): SchemaUiAdapter;
20
+ /** 渲染设计器 section,并把其 children 区域转换为可接收节点的嵌套拖放区。 */
21
+ export declare function renderDesignerSection(state: DraftState, node: RuntimeViewNode, children: VNodeChild[] | undefined, form?: SchemaFormState): VNodeChild;
22
+ /** 创建共享同一草稿拖拽会话的 Sortable 配置,供根级与嵌套放置区复用。 */
23
+ export declare function createSortableOptions(state: DraftState, parentId: string | undefined, context?: NodeMoveContext): {
24
+ group: {
25
+ name: string;
26
+ pull: boolean;
27
+ put: boolean;
28
+ };
29
+ handle: string;
30
+ draggable: string;
31
+ ghostClass: string;
32
+ chosenClass: string;
33
+ emptyInsertThreshold: number;
34
+ swapThreshold: number;
35
+ invertSwap: boolean;
36
+ onStart(event: Sortable.SortableEvent): void;
37
+ onMove(event: Sortable.MoveEvent): boolean;
38
+ onAdd(event: Sortable.SortableEvent): void;
39
+ onEnd(event: Sortable.SortableEvent): void;
40
+ };
41
+ /**
42
+ * 将可见节点索引转换为真实 siblings 索引。
43
+ *
44
+ * 条件隐藏节点仍保留在 schema 中,拖放不能因为它们不可见而插入到错误位置。
45
+ */
46
+ export declare function resolveCanvasDropIndex(state: DraftState, parentId: string | undefined, visibleIndex: number | undefined, context?: NodeMoveContext, movingNodeId?: string): number;
47
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/canvas/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,UAAU,EAAE,MAAM,KAAK,CAAA;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAKH,KAAK,eAAe,EAEpB,KAAK,eAAe,EACvB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAA;AAItC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAkBhD,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAK9E,gDAAgD;AAChD,MAAM,WAAW,cAAc;IAC3B,KAAK,EAAE,UAAU,CAAA;IACjB,IAAI,CAAC,EAAE,eAAe,CAAA;IACtB,IAAI,CAAC,EAAE,eAAe,CAAA;IACtB,eAAe,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CACxC;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,cAAc,GAAG,eAAe,CAuB5E;AAoED,mDAAmD;AACnD,wBAAgB,qBAAqB,CACjC,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,eAAe,EACrB,QAAQ,EAAE,UAAU,EAAE,GAAG,SAAS,EAClC,IAAI,CAAC,EAAE,eAAe,GACvB,UAAU,CAmBZ;AA+CD,6CAA6C;AAC7C,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,GAAE,eAAoB;;;;;;;;;;;;;mBAc7F,QAAQ,CAAC,aAAa;kBAGvB,QAAQ,CAAC,SAAS;iBAyBnB,QAAQ,CAAC,aAAa;iBAkBtB,QAAQ,CAAC,aAAa;EAsB1C;AAcD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAClC,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,OAAO,GAAE,eAAoB,EAC7B,YAAY,CAAC,EAAE,MAAM,GACtB,MAAM,CAoBR"}
@@ -0,0 +1,20 @@
1
+ import { type PropType } from 'vue';
2
+ import { type SchemaComponentRegistry, type SparqRichTextRegistry } from '@sparqjs/schema-vue';
3
+ import type { DraftState } from '../state/types';
4
+ /** 使用真实 schema renderer 展示草稿,并叠加设计器节点交互和拖放能力。 */
5
+ export declare const Canvas: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
6
+ state: {
7
+ type: PropType<DraftState>;
8
+ required: true;
9
+ };
10
+ components: PropType<SchemaComponentRegistry>;
11
+ richTextEditors: PropType<SparqRichTextRegistry>;
12
+ }>, () => JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
13
+ state: {
14
+ type: PropType<DraftState>;
15
+ required: true;
16
+ };
17
+ components: PropType<SchemaComponentRegistry>;
18
+ richTextEditors: PropType<SparqRichTextRegistry>;
19
+ }>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
20
+ //# sourceMappingURL=canvas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canvas.d.ts","sourceRoot":"","sources":["../../src/canvas/canvas.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAwD,KAAK,QAAQ,EAAmB,MAAM,KAAK,CAAA;AAE1G,OAAO,EAIH,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC7B,MAAM,qBAAqB,CAAA;AAE5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAGhD,iDAAiD;AACjD,eAAO,MAAM,MAAM;;cAIS,QAAQ,CAAC,UAAU,CAAC;;;gBAGlB,QAAQ,CAAC,uBAAuB,CAAC;qBAC5B,QAAQ,CAAC,qBAAqB,CAAC;;;cAJtC,QAAQ,CAAC,UAAU,CAAC;;;gBAGlB,QAAQ,CAAC,uBAAuB,CAAC;qBAC5B,QAAQ,CAAC,qBAAqB,CAAC;iGAyEhE,CAAA"}
@@ -0,0 +1,121 @@
1
+ import { type PropType, type VNodeChild } from 'vue';
2
+ import type { RuntimeViewNode } from '@sparqjs/schema-core';
3
+ /** 包裹单个画布节点,提供选中边框、拖动手柄和节点快捷操作。 */
4
+ export declare const NodeFrame: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
5
+ node: {
6
+ type: PropType<RuntimeViewNode>;
7
+ required: true;
8
+ };
9
+ selectedNodeIds: PropType<ReadonlySet<string>>;
10
+ selected: {
11
+ type: BooleanConstructor;
12
+ default: boolean;
13
+ };
14
+ path: {
15
+ type: StringConstructor;
16
+ required: true;
17
+ };
18
+ content: {
19
+ type: PropType<VNodeChild>;
20
+ default: undefined;
21
+ };
22
+ span: NumberConstructor;
23
+ canMoveUp: {
24
+ type: BooleanConstructor;
25
+ default: boolean;
26
+ };
27
+ canMoveDown: {
28
+ type: BooleanConstructor;
29
+ default: boolean;
30
+ };
31
+ selectable: {
32
+ type: BooleanConstructor;
33
+ default: boolean;
34
+ };
35
+ editable: {
36
+ type: BooleanConstructor;
37
+ default: boolean;
38
+ };
39
+ movable: {
40
+ type: BooleanConstructor;
41
+ default: boolean;
42
+ };
43
+ copyable: {
44
+ type: BooleanConstructor;
45
+ default: boolean;
46
+ };
47
+ deletable: {
48
+ type: BooleanConstructor;
49
+ default: boolean;
50
+ };
51
+ }>, () => JSX.Element, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
52
+ select: (_path: string) => true;
53
+ copy: () => true;
54
+ up: () => true;
55
+ down: () => true;
56
+ remove: () => true;
57
+ }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
58
+ node: {
59
+ type: PropType<RuntimeViewNode>;
60
+ required: true;
61
+ };
62
+ selectedNodeIds: PropType<ReadonlySet<string>>;
63
+ selected: {
64
+ type: BooleanConstructor;
65
+ default: boolean;
66
+ };
67
+ path: {
68
+ type: StringConstructor;
69
+ required: true;
70
+ };
71
+ content: {
72
+ type: PropType<VNodeChild>;
73
+ default: undefined;
74
+ };
75
+ span: NumberConstructor;
76
+ canMoveUp: {
77
+ type: BooleanConstructor;
78
+ default: boolean;
79
+ };
80
+ canMoveDown: {
81
+ type: BooleanConstructor;
82
+ default: boolean;
83
+ };
84
+ selectable: {
85
+ type: BooleanConstructor;
86
+ default: boolean;
87
+ };
88
+ editable: {
89
+ type: BooleanConstructor;
90
+ default: boolean;
91
+ };
92
+ movable: {
93
+ type: BooleanConstructor;
94
+ default: boolean;
95
+ };
96
+ copyable: {
97
+ type: BooleanConstructor;
98
+ default: boolean;
99
+ };
100
+ deletable: {
101
+ type: BooleanConstructor;
102
+ default: boolean;
103
+ };
104
+ }>> & Readonly<{
105
+ onSelect?: ((_path: string) => any) | undefined;
106
+ onRemove?: (() => any) | undefined;
107
+ onCopy?: (() => any) | undefined;
108
+ onUp?: (() => any) | undefined;
109
+ onDown?: (() => any) | undefined;
110
+ }>, {
111
+ selectable: boolean;
112
+ editable: boolean;
113
+ movable: boolean;
114
+ copyable: boolean;
115
+ deletable: boolean;
116
+ selected: boolean;
117
+ content: VNodeChild;
118
+ canMoveUp: boolean;
119
+ canMoveDown: boolean;
120
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
121
+ //# sourceMappingURL=node-frame.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-frame.d.ts","sourceRoot":"","sources":["../../src/canvas/node-frame.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,QAAQ,EAAE,KAAK,UAAU,EAAE,MAAM,KAAK,CAAA;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAG3D,mCAAmC;AACnC,eAAO,MAAM,SAAS;;cAIM,QAAQ,CAAC,eAAe,CAAC;;;qBAGlB,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;;;;;;;;;;cAU3B,QAAQ,CAAC,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAkCjC,MAAM;;;;;;;cA/CF,QAAQ,CAAC,eAAe,CAAC;;;qBAGlB,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;;;;;;;;;;cAU3B,QAAQ,CAAC,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4EAiJvD,CAAA"}
@@ -0,0 +1,44 @@
1
+ import Sortable, { type SortableOptions } from 'sortablejs';
2
+ import { type PropType, type VNode } from 'vue';
3
+ /** 管理 SortableJS 实例生命周期,并把 Vue children 渲染为稳定拖放容器。 */
4
+ export declare const SortableList: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
5
+ options: {
6
+ type: PropType<SortableOptions>;
7
+ required: true;
8
+ };
9
+ tag: {
10
+ type: StringConstructor;
11
+ default: string;
12
+ };
13
+ optionsKey: {
14
+ type: StringConstructor;
15
+ default: string;
16
+ };
17
+ }>, () => VNode, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
18
+ sort: (_event: Sortable.SortableEvent) => boolean;
19
+ add: (_event: Sortable.SortableEvent) => true;
20
+ start: (_event: Sortable.SortableEvent) => true;
21
+ end: (_event: Sortable.SortableEvent) => true;
22
+ }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
23
+ options: {
24
+ type: PropType<SortableOptions>;
25
+ required: true;
26
+ };
27
+ tag: {
28
+ type: StringConstructor;
29
+ default: string;
30
+ };
31
+ optionsKey: {
32
+ type: StringConstructor;
33
+ default: string;
34
+ };
35
+ }>> & Readonly<{
36
+ onSort?: ((_event: Sortable.SortableEvent) => any) | undefined;
37
+ onAdd?: ((_event: Sortable.SortableEvent) => any) | undefined;
38
+ onStart?: ((_event: Sortable.SortableEvent) => any) | undefined;
39
+ onEnd?: ((_event: Sortable.SortableEvent) => any) | undefined;
40
+ }>, {
41
+ tag: string;
42
+ optionsKey: string;
43
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
44
+ //# sourceMappingURL=sortable-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sortable-list.d.ts","sourceRoot":"","sources":["../../src/canvas/sortable-list.tsx"],"names":[],"mappings":"AAAA,OAAO,QAAQ,EAAE,EAAE,KAAK,eAAe,EAAE,MAAM,YAAY,CAAA;AAC3D,OAAO,EAA8D,KAAK,QAAQ,EAAE,KAAK,KAAK,EAAE,MAAM,KAAK,CAAA;AAE3G,sDAAsD;AACtD,eAAO,MAAM,YAAY;;cAIG,QAAQ,CAAC,eAAe,CAAC;;;;;;;;;;;UA8DpC,KAAK;mBAjDC,QAAQ,CAAC,aAAa;kBACvB,QAAQ,CAAC,aAAa;oBACpB,QAAQ,CAAC,aAAa;kBACxB,QAAQ,CAAC,aAAa;;;cAhBhB,QAAQ,CAAC,eAAe,CAAC;;;;;;;;;;;;;;;;;;;4EAgEnD,CAAA"}
@@ -0,0 +1,58 @@
1
+ import { type PropType } from 'vue';
2
+ import { type SchemaRuntime } from '@sparqjs/schema-core';
3
+ import { type SchemaComponentRegistry, type SchemaRenderer, type SparqRichTextRegistry, type SchemaUiAdapter, type UiKit } from '@sparqjs/schema-vue';
4
+ import type { DraftState } from '../state/types';
5
+ /** 展示当前草稿 JSON,只提供检查能力,不直接编辑或写回 schema。 */
6
+ export declare const JsonDialog: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
7
+ state: {
8
+ type: PropType<DraftState>;
9
+ required: true;
10
+ };
11
+ }>, () => import("vue").VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
12
+ state: {
13
+ type: PropType<DraftState>;
14
+ required: true;
15
+ };
16
+ }>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
17
+ /** 使用宿主真实渲染上下文预览草稿,并跟随设计器设备模式调整画布宽度。 */
18
+ export declare const PreviewDialog: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
19
+ state: {
20
+ type: PropType<DraftState>;
21
+ required: true;
22
+ };
23
+ components: PropType<SchemaComponentRegistry>;
24
+ richTextEditors: PropType<SparqRichTextRegistry>;
25
+ }>, () => import("vue").VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
26
+ state: {
27
+ type: PropType<DraftState>;
28
+ required: true;
29
+ };
30
+ components: PropType<SchemaComponentRegistry>;
31
+ richTextEditors: PropType<SparqRichTextRegistry>;
32
+ }>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
33
+ interface PreviewRenderContextInput {
34
+ renderer?: Pick<SchemaRenderer, 'runtime' | 'uiAdapter' | 'uiKit'>;
35
+ runtime?: SchemaRuntime;
36
+ uiAdapter?: SchemaUiAdapter;
37
+ uiKit?: UiKit;
38
+ }
39
+ /** Preview 优先复用宿主渲染上下文,仅在 Designer 独立运行时创建本地兜底。 */
40
+ export declare function resolvePreviewRenderContext(input: PreviewRenderContextInput): {
41
+ runtime: SchemaRuntime;
42
+ uiAdapter: SchemaUiAdapter;
43
+ uiKit: UiKit;
44
+ };
45
+ /** 以树结构展示并调整当前表单节点层级,移动操作仍通过统一 DraftState 事务提交。 */
46
+ export declare const ResourceTreeDialog: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
47
+ state: {
48
+ type: PropType<DraftState>;
49
+ required: true;
50
+ };
51
+ }>, () => import("vue").VNodeChild, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
52
+ state: {
53
+ type: PropType<DraftState>;
54
+ required: true;
55
+ };
56
+ }>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
57
+ export {};
58
+ //# sourceMappingURL=dialogs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialogs.d.ts","sourceRoot":"","sources":["../../src/dialogs/dialogs.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqE,KAAK,QAAQ,EAAE,MAAM,KAAK,CAAA;AACtG,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAC9E,OAAO,EAMH,KAAK,uBAAuB,EAC5B,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,KAAK,KAAK,EACb,MAAM,qBAAqB,CAAA;AAE5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAgChD,2CAA2C;AAC3C,eAAO,MAAM,UAAU;;cAIK,QAAQ,CAAC,UAAU,CAAC;;;;;cAApB,QAAQ,CAAC,UAAU,CAAC;;;iGA2B9C,CAAA;AAEF,wCAAwC;AACxC,eAAO,MAAM,aAAa;;cAIE,QAAQ,CAAC,UAAU,CAAC;;;gBAGlB,QAAQ,CAAC,uBAAuB,CAAC;qBAC5B,QAAQ,CAAC,qBAAqB,CAAC;;;cAJtC,QAAQ,CAAC,UAAU,CAAC;;;gBAGlB,QAAQ,CAAC,uBAAuB,CAAC;qBAC5B,QAAQ,CAAC,qBAAqB,CAAC;iGAoHhE,CAAA;AAEF,UAAU,yBAAyB;IAC/B,QAAQ,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC,CAAA;IAClE,OAAO,CAAC,EAAE,aAAa,CAAA;IACvB,SAAS,CAAC,EAAE,eAAe,CAAA;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAA;CAChB;AAED,mDAAmD;AACnD,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,yBAAyB,GAAG;IAC3E,OAAO,EAAE,aAAa,CAAA;IACtB,SAAS,EAAE,eAAe,CAAA;IAC1B,KAAK,EAAE,KAAK,CAAA;CACf,CAMA;AAED,mDAAmD;AACnD,eAAO,MAAM,kBAAkB;;cAIH,QAAQ,CAAC,UAAU,CAAC;;;;;cAApB,QAAQ,CAAC,UAAU,CAAC;;;iGA0H9C,CAAA"}
@@ -0,0 +1,62 @@
1
+ import type { ResourceField, ViewNode } from '@sparqjs/schema-protocol';
2
+ /** 资源树使用的节点语义分类,不替代 ViewNode.type。 */
3
+ export type ResourceTreeNodeKind = 'field' | 'container' | 'layout' | 'view';
4
+ /** 拖放命中位置;inner 表示改变父级,其余表示兄弟排序。 */
5
+ export type ResourceTreeDropPosition = 'before' | 'after' | 'inner';
6
+ /** 资源树展示模型,组合协议信息与当前可执行移动状态。 */
7
+ export interface ResourceTreeItem {
8
+ id: string;
9
+ nodeId?: string;
10
+ label: string;
11
+ type: string;
12
+ kind: ResourceTreeNodeKind;
13
+ name?: string;
14
+ dataType?: string;
15
+ component?: string;
16
+ multiple?: boolean;
17
+ virtual?: boolean;
18
+ conditional?: boolean;
19
+ childCount?: number;
20
+ parentId?: string;
21
+ index?: number;
22
+ canMoveUp?: boolean;
23
+ canMoveDown?: boolean;
24
+ canMoveIn?: boolean;
25
+ canMoveOut?: boolean;
26
+ selectable?: boolean;
27
+ editable?: boolean;
28
+ movable?: boolean;
29
+ copyable?: boolean;
30
+ deletable?: boolean;
31
+ disabled?: boolean;
32
+ children?: ResourceTreeItem[];
33
+ }
34
+ /** 将 ViewNode、字段元数据和移动状态组合成资源树展示模型。 */
35
+ export declare function createResourceTreeItem(input: {
36
+ node: ViewNode;
37
+ index: number;
38
+ label: string;
39
+ field?: ResourceField;
40
+ parentId?: string;
41
+ canMoveUp: boolean;
42
+ canMoveDown: boolean;
43
+ canMoveIn?: boolean;
44
+ canMoveOut?: boolean;
45
+ selectable?: boolean;
46
+ editable?: boolean;
47
+ movable?: boolean;
48
+ copyable?: boolean;
49
+ deletable?: boolean;
50
+ children?: ResourceTreeItem[];
51
+ }): ResourceTreeItem;
52
+ /** 判断父子节点协议是否允许嵌套,tabs 和 collapse 只接受各自的专用子节点。 */
53
+ export declare function canNestResourceTreeNode(parent: Pick<ResourceTreeItem, 'type'>, child: Pick<ResourceTreeItem, 'type'>): boolean;
54
+ /** 校验资源树拖放位置;跨父级移动必须使用 inner,兄弟排序必须保持同一父级。 */
55
+ export declare function canDropResourceTreeItem(dragging: ResourceTreeItem | undefined, drop: ResourceTreeItem | undefined, position: ResourceTreeDropPosition): boolean;
56
+ /** 判断节点能否成为指定父级的直接子节点,根级拒绝 tab 和 collapse-item。 */
57
+ export declare function canContainResourceTreeChild(parent: Pick<ResourceTreeItem, 'type'> | undefined, child: Pick<ResourceTreeItem, 'type'>): boolean;
58
+ /** 将协议节点类型归为资源树使用的字段、容器、布局或视图类别。 */
59
+ export declare function resolveResourceTreeNodeKind(node: Pick<ViewNode, 'type'>): ResourceTreeNodeKind;
60
+ /** 返回资源树节点类别的用户可读中文标签。 */
61
+ export declare function resolveResourceTreeKindLabel(kind: ResourceTreeNodeKind): string;
62
+ //# sourceMappingURL=resource-tree-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-tree-model.d.ts","sourceRoot":"","sources":["../../src/dialogs/resource-tree-model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ import { type SchemaComponent, type SchemaComponentRegistry, type SparqIconRegistry } from '@sparqjs/schema-vue';
2
+ import { type DesignerCapabilityCard, type DesignerCapabilityCardKey } from '../inspector/capabilities';
3
+ import { type DesignerComponentOption, type DesignerComponentPropertyConfig } from '../inspector/field-schema';
4
+ import { type DesignerServiceProvider, type DesignerServiceRegistry } from '../services/registry';
5
+ import type { DesignerMaterial, DesignerMaterialCategory } from './material';
6
+ import { type DesignerNodePermissionResolver, type DesignerNodePermissionPolicy } from './instance';
7
+ /** 当前 Designer 扩展上下文需要解析的宿主实例配置。 */
8
+ export interface DesignerExtensionContextOptions {
9
+ materialKeys?: readonly string[];
10
+ nodePermissions?: DesignerNodePermissionResolver;
11
+ }
12
+ /**
13
+ * 设计器插件的稳定贡献描述。
14
+ *
15
+ * 扩展只声明当前设计器需要的物料、运行时组件、属性配置、能力卡和设计期服务;插件发现、权限和远程加载由宿主负责。
16
+ */
17
+ export interface DesignerExtension {
18
+ /** 扩展稳定标识,同时作为重复贡献诊断中的 owner。 */
19
+ key: string;
20
+ /** 扩展实际提供的运行时组件,不应包含 renderer 的完整默认 registry。 */
21
+ components?: Readonly<Record<string, SchemaComponent>>;
22
+ /** 声明可从 Sidebar 拖入当前设计器实例的字段或节点物料。 */
23
+ materials?: readonly DesignerMaterial[];
24
+ /** 声明字段组件在 Inspector 中允许编辑的属性和迁移规则。 */
25
+ componentProperties?: readonly DesignerComponentPropertyConfig[];
26
+ /** 声明复杂配置的摘要、编辑器和写回边界。 */
27
+ capabilityCards?: readonly DesignerCapabilityCard[];
28
+ /** 设计期查询或动作服务;鉴权、缓存和错误归一化由 provider 自己处理。 */
29
+ services?: readonly DesignerServiceProvider[];
30
+ }
31
+ /** 扩展冲突和完整性检查的稳定诊断代码。 */
32
+ export type DesignerExtensionDiagnosticCode = 'duplicate-extension-key' | 'duplicate-component-property' | 'duplicate-capability-card' | 'duplicate-runtime-component' | 'duplicate-material' | 'duplicate-service-provider' | 'missing-component-renderer' | 'missing-capability-editor';
33
+ /** 扩展安装和完整性检查产生的可定位诊断。 */
34
+ export interface DesignerExtensionDiagnostic {
35
+ code: DesignerExtensionDiagnosticCode;
36
+ extension: string;
37
+ key: string;
38
+ message: string;
39
+ }
40
+ /**
41
+ * 当前设计器实例解析后的扩展快照。
42
+ *
43
+ * Sidebar、Canvas、Preview、Inspector 和属性命令共享该对象,避免同一扩展在不同区域得到不一致结果。
44
+ */
45
+ export interface DesignerExtensionContext {
46
+ /** 合并内置、插件和宿主覆盖后的运行时组件。 */
47
+ components: SchemaComponentRegistry;
48
+ /** 当前实例画布、预览和 Inspector 共用的宿主图标注册表。 */
49
+ icons?: SparqIconRegistry;
50
+ /** 当前实例统一使用的节点权限;UI 和命令层必须读取同一结果。 */
51
+ nodePermissions: DesignerNodePermissionPolicy;
52
+ /** 合并内置、插件和宿主覆盖后的设计期服务。 */
53
+ services: DesignerServiceProvider[];
54
+ diagnostics: DesignerExtensionDiagnostic[];
55
+ /** 按稳定 key 解析当前实例生效的物料。 */
56
+ getMaterial: (key: string) => DesignerMaterial | undefined;
57
+ /** 列出当前实例物料;传入分类时只返回对应 Sidebar 分组。 */
58
+ listMaterials: (category?: DesignerMaterialCategory) => DesignerMaterial[];
59
+ /** 按稳定 key 解析当前实例生效的设计期服务。 */
60
+ getServiceProvider: (key: string) => DesignerServiceProvider | undefined;
61
+ /** 列出当前实例最终生效的设计期服务。 */
62
+ listServiceProviders: () => DesignerServiceProvider[];
63
+ getComponentPropertyConfig: (component: string | undefined) => DesignerComponentPropertyConfig | undefined;
64
+ hasExtensionComponentProperty: (component: string | undefined) => boolean;
65
+ listComponentPropertyConfigs: () => DesignerComponentPropertyConfig[];
66
+ listComponentOptions: (group?: string) => DesignerComponentOption[];
67
+ getCapabilityCard: (key: DesignerCapabilityCardKey) => DesignerCapabilityCard | undefined;
68
+ listCapabilityCards: (keys?: DesignerCapabilityCardKey[]) => DesignerCapabilityCard[];
69
+ }
70
+ /**
71
+ * 将内置能力、宿主组件和 DesignerExtension 解析为实例级扩展快照。
72
+ *
73
+ * 每次调用都会创建隔离的 FrontendKernel,不会让同页多个设计器或测试用例共享注册状态。
74
+ */
75
+ export declare function createDesignerExtensionContext(extensions?: DesignerExtension[], hostComponents?: SchemaComponentRegistry, hostServices?: DesignerServiceProvider[] | DesignerServiceRegistry, icons?: SparqIconRegistry, options?: DesignerExtensionContextOptions): DesignerExtensionContext;
76
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/extensions/context.ts"],"names":[],"mappings":"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"}