form-design-v3 1.0.0 → 1.0.1

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.
package/index.d.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  import * as vue from 'vue';
2
2
  import { Component, App } from 'vue';
3
3
 
4
- type __VLS_Props = {
4
+ type __VLS_Props$1 = {
5
5
  formId?: string;
6
6
  };
7
- declare const _default: vue.DefineComponent<__VLS_Props, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
7
+ declare const _default$1: vue.DefineComponent<__VLS_Props$1, {}, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<__VLS_Props$1> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
8
8
 
9
9
  type WidgetType = 'card' | 'label' | 'subtable' | 'slot' | 'grid' | 'text';
10
10
  type RenderMode = 'design' | 'render';
@@ -30,7 +30,10 @@ interface BaseWidgetProps {
30
30
  }
31
31
  interface LabelWidgetProps extends BaseWidgetProps {
32
32
  type: 'label';
33
- /** 绑定链接:选择表单字段中链接类型(dataType === 'link')的字段 */
33
+ /**
34
+ * 绑定链接:链接字段(dataType === 'link')的字段名。
35
+ * 绑定链接类型字段时自动带入(与 bindField 一致),其值直接作为链接地址。
36
+ */
34
37
  bindLink: string;
35
38
  /** 字体颜色(内容区文字颜色),默认 #344054 */
36
39
  color?: string;
@@ -94,7 +97,10 @@ interface ColumnConfig {
94
97
  iscompletehidecode: string;
95
98
  /** 同内容合并:本列相邻内容相同时合并单元格(默认关闭) */
96
99
  issamecolmerge?: 0 | 1;
97
- /** 绑定链接字段:选择子表字段中链接类型(dataType === 'link')的字段,作为本列点击跳转地址;为空则按文本渲染 */
100
+ /**
101
+ * 绑定链接字段:链接类型(dataType === 'link')的列字段名,作为本列点击跳转地址;
102
+ * 选择链接字段时自动带入(与列字段名一致),为空则按文本渲染
103
+ */
98
104
  bindLink?: string;
99
105
  /** 列编辑模式对象 */
100
106
  editmode: ColumnEditMode;
@@ -201,11 +207,30 @@ interface FieldMeta {
201
207
  name: string;
202
208
  /** 字段中文名 */
203
209
  label: string;
204
- /** 字段类型 */
210
+ /**
211
+ * 字段类型:
212
+ * string 文本 / date 日期 / number 数值 / money 金额 / file 文件 / link 链接。
213
+ * link 字段被控件绑定后,其值直接作为链接使用(无需单独配置链接字段)。
214
+ */
205
215
  dataType: string;
206
216
  /** 字段枚举(可选) */
207
217
  enums?: EnumItem[];
208
218
  }
219
+ /** 子表字段(决定子表默认展示列) */
220
+ interface SubtableField {
221
+ name: string;
222
+ label: string;
223
+ dataType: 'string' | 'date' | 'number' | 'money' | 'file' | 'link';
224
+ }
225
+ /** 子表定义:可绑定到子表控件的数据源(来自后端 allfields 接口) */
226
+ interface SubtableDef {
227
+ /** 子表名 / 业务对象标识(即 secondtable 取值) */
228
+ name: string;
229
+ /** 子表显示名(后端未提供时回退为 name) */
230
+ label: string;
231
+ /** 子表字段(决定默认展示列) */
232
+ fields: SubtableField[];
233
+ }
209
234
  /** 表单初始化接口返回的结构(mock,后续与后端对齐) */
210
235
  interface FormSchema {
211
236
  /** 表单标识 */
@@ -226,6 +251,36 @@ interface FormSchema {
226
251
  events: FormEvents;
227
252
  }
228
253
 
254
+ type __VLS_Props = {
255
+ widgets: WidgetNode[];
256
+ formMode?: FormMode;
257
+ formData?: Record<string, unknown>;
258
+ /** 表单级事件配置(全局事件),由宿主从 Schema 透传 */
259
+ events?: FormEvents;
260
+ /** 表单标识(透传给插槽等需要宿主上下文的控件) */
261
+ formId?: string;
262
+ };
263
+ /** 运行指定生命周期钩子 */
264
+ declare function runLifecycle(hook: LifecycleHook): void;
265
+ /** 触发自定义事件:执行对应 name 的 handler */
266
+ declare function fireEvent(name: string, payload?: unknown): void;
267
+ declare var __VLS_5: string | number;
268
+ declare var __VLS_6: any;
269
+ type __VLS_Slots = {} & {
270
+ [K in NonNullable<typeof __VLS_5>]?: (props: typeof __VLS_6) => any;
271
+ };
272
+ declare const __VLS_component: vue.DefineComponent<__VLS_Props, {
273
+ fireEvent: typeof fireEvent;
274
+ runLifecycle: typeof runLifecycle;
275
+ }, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, vue.ComponentProvideOptions, false, {}, any>;
276
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
277
+
278
+ type __VLS_WithSlots<T, S> = T & {
279
+ new (): {
280
+ $slots: S;
281
+ };
282
+ };
283
+
229
284
  /** 渲染表单所需的全部入参(供外部调用方传递) */
230
285
  interface RenderFormOptions {
231
286
  /** 挂载容器(必填)。渲染内容将挂载到该元素内部 */
@@ -240,10 +295,8 @@ interface RenderFormOptions {
240
295
  events?: FormEvents;
241
296
  /** 表单标识(透传给插槽等需要宿主上下文的控件),可选 */
242
297
  formId?: string;
243
- /** 接口模块(apiModule),可选 */
244
- apiModule?: string;
245
- /** 基础模块(baseModule),可选 */
246
- baseModule?: string;
298
+ /** 网关前缀(含环境),如 /bpmapi-uat;运行态控件如需请求接口时使用 */
299
+ baseUrl?: string;
247
300
  }
248
301
  /** 渲染实例句柄,供外部在挂载后调用 */
249
302
  interface RenderFormHandle {
@@ -258,6 +311,9 @@ interface RenderFormHandle {
258
311
  */
259
312
  declare function renderForm(options: RenderFormOptions): RenderFormHandle;
260
313
 
314
+ /** 从本地读取表单 Schema;不存在或解析失败返回 null */
315
+ declare function loadFormFromLocal(formId: string): FormSchema | null;
316
+
261
317
  interface WidgetDefinition {
262
318
  /** 控件类型 */
263
319
  type: WidgetType;
@@ -284,25 +340,33 @@ interface WidgetDefinition {
284
340
  declare function registerComponent(def: WidgetDefinition): void;
285
341
 
286
342
  /**
287
- * 接口模块动态配置(四级优先级:props > install options > setApiModule > 默认值)
343
+ * bpmapi 后端接口适配层(2026-10-19 接入)。
344
+ *
345
+ * 路径规则:{baseUrl}/api/formdesigner/v1/{action},参数走 query string。
346
+ * 接口清单与字段说明见 docs/API-backend.md;接入评估见 docs/integration-assessment.md。
347
+ *
348
+ * 打开设计器为 1+1+1 流程(与子表数量无关):
349
+ * ① opendesigner 建版本 / 取工作表单 ID(newFormID)
350
+ * ② formconfig 取模板四合一(模板内容在 json,即 FormSchema)
351
+ * ③ allfields 取主表 + 全部子表字段
288
352
  */
289
353
  interface ApiConfig {
290
- baseModule: string;
291
- apiModule: string;
354
+ /** 网关前缀(含环境),如 /bpmapi-uat;经 dev-server 代理时用相对路径 */
355
+ baseUrl: string;
292
356
  }
293
357
  declare function configureApi(options: Partial<ApiConfig>): void;
294
- declare function setApiModule(module: string): void;
358
+ /** @deprecated 兼容旧名:baseModule 即网关前缀(不带前导斜杠也可) */
295
359
  declare function setBaseModule(module: string): void;
360
+ /** @deprecated 兼容旧名:后端模块已固定为 formdesigner/v1,无需配置 */
361
+ declare function setApiModule(_module: string): void;
296
362
 
297
363
  interface InstallOptions {
298
- /** 接口模块(apiModule) */
299
- apiModule?: string;
300
- /** 基础模块(baseModule) */
301
- baseModule?: string;
364
+ /** 网关前缀(含环境),如 /bpmapi-uat;对应后端 api/formdesigner/v1 之前的部分 */
365
+ baseUrl?: string;
302
366
  }
303
367
  declare const DesignerPlugin: {
304
368
  install(app: App, options?: InstallOptions): void;
305
369
  };
306
370
 
307
- export { _default as Designer, LIFECYCLE_HOOKS, configureApi, DesignerPlugin as default, registerComponent, renderForm, setApiModule, setBaseModule };
308
- export type { BaseWidgetProps, CardWidgetProps, ColumnConfig, ColumnEditMode, CustomEvent, EditMode, EnumItem, FieldMeta, FormEvents, FormLifecycleEvents, FormMode, FormSchema, GridWidgetProps, HiddenMode, InstallOptions, LabelWidgetProps, LifecycleHook, RenderFormHandle, RenderFormOptions, RenderMode, SlotWidgetProps, SubtableWidgetProps, TextWidgetProps, WidgetNode, WidgetProps, WidgetType };
371
+ export { _default$1 as Designer, LIFECYCLE_HOOKS, _default as Renderer, configureApi, DesignerPlugin as default, loadFormFromLocal, registerComponent, renderForm, setApiModule, setBaseModule };
372
+ export type { BaseWidgetProps, CardWidgetProps, ColumnConfig, ColumnEditMode, CustomEvent, EditMode, EnumItem, FieldMeta, FormEvents, FormLifecycleEvents, FormMode, FormSchema, GridWidgetProps, HiddenMode, InstallOptions, LabelWidgetProps, LifecycleHook, RenderFormHandle, RenderFormOptions, RenderMode, SlotWidgetProps, SubtableDef, SubtableField, SubtableWidgetProps, TextWidgetProps, WidgetNode, WidgetProps, WidgetType };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "form-design-v3",
3
- "version": "1.0.0",
4
- "main": "CodeEditor-B7PzbdP9.js",
3
+ "version": "1.0.1",
4
+ "main": "CodeEditor-CJeYvarM.js",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"
7
7
  },
@@ -1 +0,0 @@
1
- {"version":3,"file":"CodeEditor-B7PzbdP9.js","sources":["../src/components/designer/CodeEditor.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, onMounted, onBeforeUnmount, watch } from 'vue'\nimport * as monaco from 'monaco-editor'\nimport { javascriptDefaults } from 'monaco-editor/language/typescript/monaco.contribution'\n\nconst props = withDefaults(\n defineProps<{\n modelValue?: string\n language?: string\n }>(),\n { modelValue: '', language: 'javascript' },\n)\n\nconst emit = defineEmits<{ 'update:modelValue': [value: string] }>()\n\nconst container = ref<HTMLDivElement | null>(null)\nlet editor: monaco.editor.IStandaloneCodeEditor | null = null\n\nonMounted(() => {\n if (!container.value) return\n // 处理函数多为运行态 ctx 等上下文变量,关闭语义校验避免误报红线\n javascriptDefaults.setDiagnosticsOptions({\n noSemanticValidation: true,\n noSyntaxValidation: false,\n })\n editor = monaco.editor.create(container.value, {\n value: props.modelValue,\n language: props.language,\n theme: 'vs-dark',\n automaticLayout: true,\n fontSize: 14,\n tabSize: 2,\n minimap: { enabled: false },\n scrollBeyondLastLine: false,\n fontFamily: \"'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace\",\n scrollbar: { verticalScrollbarSize: 8, horizontalScrollbarSize: 8 },\n })\n editor.onDidChangeModelContent(() => {\n emit('update:modelValue', editor?.getValue() ?? '')\n })\n})\n\nwatch(\n () => props.modelValue,\n (val) => {\n if (editor && val !== editor.getValue()) editor.setValue(val ?? '')\n },\n)\n\nwatch(\n () => props.language,\n (lang) => {\n const model = editor?.getModel()\n if (model) monaco.editor.setModelLanguage(model, lang)\n },\n)\n\nonBeforeUnmount(() => {\n editor?.dispose()\n editor = null\n})\n</script>\n\n<template>\n <div ref=\"container\" class=\"fd-code-editor\"></div>\n</template>\n\n<style scoped>\n.fd-code-editor {\n width: 100%;\n height: 32rem;\n border: 1px solid var(--fd-color-border);\n border-radius: var(--fd-radius-base);\n overflow: hidden;\n}\n</style>\n"],"names":["props","__props","emit","__emit","container","ref","editor","onMounted","javascriptDefaults","monaco","watch","val","lang","model","onBeforeUnmount","_createElementBlock"],"mappings":";;;;;;;;;;;;AAKA,UAAMA,IAAQC,GAQRC,IAAOC,GAEPC,IAAYC,EAA2B,IAAI;AACjD,QAAIC,IAAqD;AAEzD,WAAAC,EAAU,MAAM;AACd,MAAKH,EAAU,UAEfI,EAAmB,sBAAsB;AAAA,QACvC,sBAAsB;AAAA,QACtB,oBAAoB;AAAA,MAAA,CACrB,GACDF,IAASG,EAAO,OAAO,OAAOL,EAAU,OAAO;AAAA,QAC7C,OAAOJ,EAAM;AAAA,QACb,UAAUA,EAAM;AAAA,QAChB,OAAO;AAAA,QACP,iBAAiB;AAAA,QACjB,UAAU;AAAA,QACV,SAAS;AAAA,QACT,SAAS,EAAE,SAAS,GAAA;AAAA,QACpB,sBAAsB;AAAA,QACtB,YAAY;AAAA,QACZ,WAAW,EAAE,uBAAuB,GAAG,yBAAyB,EAAA;AAAA,MAAE,CACnE,GACDM,EAAO,wBAAwB,MAAM;AACnC,QAAAJ,EAAK,sBAAqBI,KAAA,gBAAAA,EAAQ,eAAc,EAAE;AAAA,MACpD,CAAC;AAAA,IACH,CAAC,GAEDI;AAAA,MACE,MAAMV,EAAM;AAAA,MACZ,CAACW,MAAQ;AACP,QAAIL,KAAUK,MAAQL,EAAO,SAAA,KAAYA,EAAO,SAASK,KAAO,EAAE;AAAA,MACpE;AAAA,IAAA,GAGFD;AAAA,MACE,MAAMV,EAAM;AAAA,MACZ,CAACY,MAAS;AACR,cAAMC,IAAQP,KAAA,gBAAAA,EAAQ;AACtB,QAAIO,KAAOJ,EAAO,OAAO,iBAAiBI,GAAOD,CAAI;AAAA,MACvD;AAAA,IAAA,GAGFE,EAAgB,MAAM;AACpB,MAAAR,KAAA,QAAAA,EAAQ,WACRA,IAAS;AAAA,IACX,CAAC,mBAICS,EAAkD,OAAA;AAAA,eAAzC;AAAA,MAAJ,KAAIX;AAAA,MAAY,OAAM;AAAA,IAAA;;;"}
@@ -1,56 +0,0 @@
1
- import { defineComponent as c, ref as d, onMounted as m, watch as n, onBeforeUnmount as f, openBlock as p, createElementBlock as g } from "vue";
2
- import * as r from "monaco-editor";
3
- import { javascriptDefaults as _ } from "monaco-editor/language/typescript/monaco.contribution";
4
- import { _ as V } from "./index-DCHlgXXr.js";
5
- const S = /* @__PURE__ */ c({
6
- __name: "CodeEditor",
7
- props: {
8
- modelValue: { default: "" },
9
- language: { default: "javascript" }
10
- },
11
- emits: ["update:modelValue"],
12
- setup(i, { emit: s }) {
13
- const o = i, u = s, t = d(null);
14
- let e = null;
15
- return m(() => {
16
- t.value && (_.setDiagnosticsOptions({
17
- noSemanticValidation: !0,
18
- noSyntaxValidation: !1
19
- }), e = r.editor.create(t.value, {
20
- value: o.modelValue,
21
- language: o.language,
22
- theme: "vs-dark",
23
- automaticLayout: !0,
24
- fontSize: 14,
25
- tabSize: 2,
26
- minimap: { enabled: !1 },
27
- scrollBeyondLastLine: !1,
28
- fontFamily: "'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace",
29
- scrollbar: { verticalScrollbarSize: 8, horizontalScrollbarSize: 8 }
30
- }), e.onDidChangeModelContent(() => {
31
- u("update:modelValue", (e == null ? void 0 : e.getValue()) ?? "");
32
- }));
33
- }), n(
34
- () => o.modelValue,
35
- (a) => {
36
- e && a !== e.getValue() && e.setValue(a ?? "");
37
- }
38
- ), n(
39
- () => o.language,
40
- (a) => {
41
- const l = e == null ? void 0 : e.getModel();
42
- l && r.editor.setModelLanguage(l, a);
43
- }
44
- ), f(() => {
45
- e == null || e.dispose(), e = null;
46
- }), (a, l) => (p(), g("div", {
47
- ref_key: "container",
48
- ref: t,
49
- class: "fd-code-editor"
50
- }, null, 512));
51
- }
52
- }), C = /* @__PURE__ */ V(S, [["__scopeId", "data-v-aeb9c1ee"]]);
53
- export {
54
- C as default
55
- };
56
- //# sourceMappingURL=CodeEditor-d-AMHZfA.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CodeEditor-d-AMHZfA.js","sources":["../src/components/designer/CodeEditor.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { ref, onMounted, onBeforeUnmount, watch } from 'vue'\nimport * as monaco from 'monaco-editor'\nimport { javascriptDefaults } from 'monaco-editor/language/typescript/monaco.contribution'\n\nconst props = withDefaults(\n defineProps<{\n modelValue?: string\n language?: string\n }>(),\n { modelValue: '', language: 'javascript' },\n)\n\nconst emit = defineEmits<{ 'update:modelValue': [value: string] }>()\n\nconst container = ref<HTMLDivElement | null>(null)\nlet editor: monaco.editor.IStandaloneCodeEditor | null = null\n\nonMounted(() => {\n if (!container.value) return\n // 处理函数多为运行态 ctx 等上下文变量,关闭语义校验避免误报红线\n javascriptDefaults.setDiagnosticsOptions({\n noSemanticValidation: true,\n noSyntaxValidation: false,\n })\n editor = monaco.editor.create(container.value, {\n value: props.modelValue,\n language: props.language,\n theme: 'vs-dark',\n automaticLayout: true,\n fontSize: 14,\n tabSize: 2,\n minimap: { enabled: false },\n scrollBeyondLastLine: false,\n fontFamily: \"'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace\",\n scrollbar: { verticalScrollbarSize: 8, horizontalScrollbarSize: 8 },\n })\n editor.onDidChangeModelContent(() => {\n emit('update:modelValue', editor?.getValue() ?? '')\n })\n})\n\nwatch(\n () => props.modelValue,\n (val) => {\n if (editor && val !== editor.getValue()) editor.setValue(val ?? '')\n },\n)\n\nwatch(\n () => props.language,\n (lang) => {\n const model = editor?.getModel()\n if (model) monaco.editor.setModelLanguage(model, lang)\n },\n)\n\nonBeforeUnmount(() => {\n editor?.dispose()\n editor = null\n})\n</script>\n\n<template>\n <div ref=\"container\" class=\"fd-code-editor\"></div>\n</template>\n\n<style scoped>\n.fd-code-editor {\n width: 100%;\n height: 32rem;\n border: 1px solid var(--fd-color-border);\n border-radius: var(--fd-radius-base);\n overflow: hidden;\n}\n</style>\n"],"names":["props","__props","emit","__emit","container","ref","editor","onMounted","javascriptDefaults","monaco","watch","val","lang","model","onBeforeUnmount","_createElementBlock"],"mappings":";;;;;;;;;;;;AAKA,UAAMA,IAAQC,GAQRC,IAAOC,GAEPC,IAAYC,EAA2B,IAAI;AACjD,QAAIC,IAAqD;AAEzD,WAAAC,EAAU,MAAM;AACd,MAAKH,EAAU,UAEfI,EAAmB,sBAAsB;AAAA,QACvC,sBAAsB;AAAA,QACtB,oBAAoB;AAAA,MAAA,CACrB,GACDF,IAASG,EAAO,OAAO,OAAOL,EAAU,OAAO;AAAA,QAC7C,OAAOJ,EAAM;AAAA,QACb,UAAUA,EAAM;AAAA,QAChB,OAAO;AAAA,QACP,iBAAiB;AAAA,QACjB,UAAU;AAAA,QACV,SAAS;AAAA,QACT,SAAS,EAAE,SAAS,GAAA;AAAA,QACpB,sBAAsB;AAAA,QACtB,YAAY;AAAA,QACZ,WAAW,EAAE,uBAAuB,GAAG,yBAAyB,EAAA;AAAA,MAAE,CACnE,GACDM,EAAO,wBAAwB,MAAM;AACnC,QAAAJ,EAAK,sBAAqBI,KAAA,gBAAAA,EAAQ,eAAc,EAAE;AAAA,MACpD,CAAC;AAAA,IACH,CAAC,GAEDI;AAAA,MACE,MAAMV,EAAM;AAAA,MACZ,CAACW,MAAQ;AACP,QAAIL,KAAUK,MAAQL,EAAO,SAAA,KAAYA,EAAO,SAASK,KAAO,EAAE;AAAA,MACpE;AAAA,IAAA,GAGFD;AAAA,MACE,MAAMV,EAAM;AAAA,MACZ,CAACY,MAAS;AACR,cAAMC,IAAQP,KAAA,gBAAAA,EAAQ;AACtB,QAAIO,KAAOJ,EAAO,OAAO,iBAAiBI,GAAOD,CAAI;AAAA,MACvD;AAAA,IAAA,GAGFE,EAAgB,MAAM;AACpB,MAAAR,KAAA,QAAAA,EAAQ,WACRA,IAAS;AAAA,IACX,CAAC,mBAICS,EAAkD,OAAA;AAAA,eAAzC;AAAA,MAAJ,KAAIX;AAAA,MAAY,OAAM;AAAA,IAAA;;;"}
package/form-designer.css DELETED
@@ -1 +0,0 @@
1
- .fd-label-design[data-v-b6dcc499]{display:flex;align-items:stretch;font-size:1.4rem;line-height:1.5;border:1px solid var(--fd-color-border);border-radius:var(--fd-radius-base);overflow:hidden}.fd-label-name[data-v-b6dcc499]{width:16rem;flex-shrink:0;padding:1.1rem 1.2rem;background:var(--fd-color-bg-hover);border-right:1px solid var(--fd-color-border);color:var(--fd-color-text-secondary);text-align:right;font-weight:500}.fd-label-design.is-mobile .fd-label-name[data-v-b6dcc499]{width:12rem}.fd-label-value[data-v-b6dcc499]{flex:1;min-width:0;padding:1.1rem 1.2rem;background:var(--fd-color-bg-panel);color:var(--fd-color-text);white-space:pre-wrap;word-break:break-all}.fd-label-value--link[data-v-b6dcc499]{color:var(--fd-color-primary)}.fd-label-render[data-v-7fe92042]{display:flex;align-items:stretch;font-size:1.4rem;line-height:1.5;border:1px solid var(--fd-color-border);border-radius:var(--fd-radius-base);overflow:hidden}.fd-label-name[data-v-7fe92042]{width:16rem;flex-shrink:0;padding:1.1rem 1.2rem;background:var(--fd-color-bg-hover);border-right:1px solid var(--fd-color-border);color:var(--fd-color-text-secondary);text-align:right;font-weight:500}.fd-label-render.is-mobile .fd-label-name[data-v-7fe92042]{width:12rem}.fd-label-value[data-v-7fe92042]{flex:1;min-width:0;padding:1.1rem 1.2rem;background:var(--fd-color-bg-panel);color:var(--fd-color-text);white-space:pre-wrap;word-break:break-all}.fd-label-value--link[data-v-7fe92042]{color:var(--fd-color-primary)}.fd-label-link[data-v-7fe92042]{color:inherit;text-decoration:none;cursor:pointer;word-break:break-all}.fd-label-link[data-v-7fe92042]:hover{text-decoration:underline}.fd-panel[data-v-a5d99c1e]{display:flex;flex-direction:column;gap:1.2rem}.fd-panel-item[data-v-a5d99c1e]{display:flex;flex-direction:column;gap:.4rem}.fd-panel-item label[data-v-a5d99c1e]{font-size:1.3rem;color:var(--fd-color-text-secondary)}.fd-panel-item input[data-v-a5d99c1e],.fd-panel-item select[data-v-a5d99c1e]{height:3.2rem;padding:0 1rem;border:1px solid var(--fd-color-border);border-radius:var(--fd-radius-base);font-size:1.4rem;background:var(--fd-color-bg-panel)}.fd-color-row[data-v-a5d99c1e]{display:flex;gap:.6rem;align-items:center}.fd-panel .fd-panel-item .fd-color-row input[type=color][data-v-a5d99c1e]{width:3.6rem;height:3.2rem;padding:.2rem;flex-shrink:0;border:1px solid var(--fd-color-border);border-radius:var(--fd-radius-base);background:var(--fd-color-bg-panel);cursor:pointer}.fd-color-row input[data-v-a5d99c1e]:not([type=color]){flex:1;min-width:0}.fd-card-design[data-v-6a46ee95]{border:1px solid var(--fd-color-border);border-radius:14px;background:var(--fd-color-bg-panel);box-shadow:0 2px 10px #19375f0f;overflow:hidden}.fd-card-head[data-v-6a46ee95]{display:flex;align-items:center;gap:10px;height:64px;padding:0 22px;background:transparent}.fd-card-icon[data-v-6a46ee95]{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--fd-color-primary);background:var(--fd-color-primary-light);border-radius:9px}.fd-card-title[data-v-6a46ee95]{flex:1;font-size:17px;font-weight:700;color:var(--fd-color-text)}.fd-card-arrow[data-v-6a46ee95]{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:28px;height:28px;border-radius:8px;color:var(--fd-color-text-tertiary);cursor:pointer;transition:transform .3s,background .2s}.fd-card-arrow[data-v-6a46ee95]:hover{background:var(--fd-color-bg-hover)}.fd-card-arrow svg[data-v-6a46ee95]{width:16px;height:16px;display:block}.fd-card-arrow.is-open[data-v-6a46ee95]{transform:rotate(180deg)}.fd-card-body[data-v-6a46ee95]{padding:0 22px 22px;min-height:6rem;background:var(--fd-color-bg-panel)}.fd-card-empty[data-v-6a46ee95]{border:1px dashed var(--fd-color-border);border-radius:var(--fd-radius-base);padding:1.6rem;text-align:center;color:var(--fd-color-text-tertiary);font-size:1.3rem}.fd-card-render[data-v-bc2f6273]{border:1px solid var(--fd-color-border);border-radius:14px;background:var(--fd-color-bg-panel);box-shadow:0 2px 10px #19375f0f;overflow:hidden}.fd-card-head[data-v-bc2f6273]{display:flex;align-items:center;gap:10px;height:64px;padding:0 22px;background:transparent;cursor:pointer;-webkit-user-select:none;user-select:none}.fd-card-icon[data-v-bc2f6273]{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--fd-color-primary);background:var(--fd-color-primary-light);border-radius:9px}.fd-card-title[data-v-bc2f6273]{flex:1;font-size:17px;font-weight:700;color:var(--fd-color-text)}.fd-card-arrow[data-v-bc2f6273]{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:28px;height:28px;border-radius:8px;color:var(--fd-color-text-tertiary);transition:transform .3s}.fd-card-arrow svg[data-v-bc2f6273]{width:16px;height:16px;display:block}.fd-card-arrow.is-open[data-v-bc2f6273]{transform:rotate(180deg)}.fd-card-body[data-v-bc2f6273]{padding:0 22px 22px;min-height:6rem;background:var(--fd-color-bg-panel)}.fd-switch[data-v-eac909bd]{position:relative;width:3.6rem;height:2rem;padding:0;border:none;border-radius:1rem;background:var(--fd-color-border-hover);cursor:pointer;flex-shrink:0;transition:background var(--fd-transition)}.fd-switch.is-on[data-v-eac909bd]{background:var(--fd-color-primary)}.fd-switch[data-v-eac909bd]:disabled{opacity:.5;cursor:not-allowed}.fd-switch-dot[data-v-eac909bd]{position:absolute;top:.2rem;left:.2rem;width:1.6rem;height:1.6rem;border-radius:50%;background:#fff;box-shadow:0 1px 2px #0003;transition:transform var(--fd-transition)}.fd-switch.is-on .fd-switch-dot[data-v-eac909bd]{transform:translate(1.6rem)}.fd-panel[data-v-4585a5b8]{display:flex;flex-direction:column;gap:1.2rem}.fd-panel-item[data-v-4585a5b8]{display:flex;flex-direction:column;gap:.4rem}.fd-panel-item--row[data-v-4585a5b8]{flex-direction:row;align-items:center;justify-content:space-between}.fd-panel-item label[data-v-4585a5b8]{font-size:1.3rem;color:var(--fd-color-text-secondary)}.fd-panel-item input[data-v-4585a5b8],.fd-panel-item select[data-v-4585a5b8]{height:3.2rem;padding:0 1rem;border:1px solid var(--fd-color-border);border-radius:var(--fd-radius-base);font-size:1.4rem;background:var(--fd-color-bg-panel)}.fd-panel-item select[data-v-4585a5b8]{color:var(--fd-color-text);cursor:pointer}.fd-icon-picker[data-v-4585a5b8]{position:relative}.fd-icon-trigger[data-v-4585a5b8]{width:100%;height:3.2rem;padding:0 .8rem;display:flex;align-items:center;gap:.6rem;border:1px solid var(--fd-color-border);border-radius:var(--fd-radius-base);background:var(--fd-color-bg-panel);color:var(--fd-color-text);cursor:pointer}.fd-icon-trigger[data-v-4585a5b8]:hover{border-color:var(--fd-color-border-hover)}.fd-icon-placeholder[data-v-4585a5b8]{flex:1;text-align:left;font-size:1.4rem;color:var(--fd-color-text-tertiary)}.fd-icon-caret[data-v-4585a5b8]{width:1.4rem;height:1.4rem;margin-left:auto;color:var(--fd-color-text-tertiary)}.fd-icon-popover[data-v-4585a5b8]{position:absolute;z-index:20;top:calc(100% + .4rem);left:0;right:0;padding:.8rem;border:1px solid var(--fd-color-border);border-radius:var(--fd-radius-base);background:var(--fd-color-bg-panel);box-shadow:var(--fd-shadow-pop);max-height:26rem;overflow-y:auto}.fd-icon-grid[data-v-4585a5b8]{display:grid;grid-template-columns:repeat(6,1fr);gap:.4rem}.fd-icon-option[data-v-4585a5b8]{display:inline-flex;align-items:center;justify-content:center;height:3.2rem;border:1px solid transparent;border-radius:var(--fd-radius-base);background:transparent;color:var(--fd-color-text);cursor:pointer}.fd-icon-option[data-v-4585a5b8]:hover{background:var(--fd-color-bg-hover)}.fd-icon-option.active[data-v-4585a5b8]{border-color:var(--fd-color-primary);background:var(--fd-color-bg-active);color:var(--fd-color-primary)}.fd-icon-none[data-v-4585a5b8]{font-size:1.2rem}.fd-slot-design[data-v-d3fbc11d]{display:flex;align-items:center;gap:.8rem;padding:1.2rem 1.6rem;border:1px dashed var(--fd-color-border-hover);border-radius:var(--fd-radius-base);background:var(--fd-color-bg-hover)}.fd-slot-tag[data-v-d3fbc11d]{padding:.2rem .8rem;border-radius:var(--fd-radius-base);background:var(--fd-color-primary-light);color:var(--fd-color-primary);font-size:1.2rem}.fd-slot-name[data-v-d3fbc11d]{font-weight:600;color:var(--fd-color-text)}.fd-slot-hint[data-v-d3fbc11d]{margin-left:auto;color:var(--fd-color-text-tertiary);font-size:1.2rem}.fd-slot-render[data-v-10795159]{margin:0}.fd-slot-missing[data-v-10795159]{padding:1.2rem 1.6rem;border:1px dashed var(--fd-color-border-hover);border-radius:var(--fd-radius-base);background:var(--fd-color-bg-hover);color:var(--fd-color-text-tertiary);font-size:1.3rem}.fd-panel[data-v-4c380320]{display:flex;flex-direction:column;gap:1.2rem}.fd-panel-item[data-v-4c380320]{display:flex;flex-direction:column;gap:.4rem}.fd-panel-item label[data-v-4c380320]{font-size:1.3rem;color:var(--fd-color-text-secondary)}.fd-panel-item input[data-v-4c380320],.fd-panel-item select[data-v-4c380320]{height:3.2rem;padding:0 1rem;border:1px solid var(--fd-color-border);border-radius:var(--fd-radius-base);font-size:1.4rem;background:var(--fd-color-bg-panel)}.fd-panel-item select[data-v-4c380320]{color:var(--fd-color-text);cursor:pointer}.fd-st-design[data-v-aba8caec]{border-radius:var(--fd-radius-base);background:var(--fd-color-bg-panel);overflow:hidden}.fd-st-table-wrap[data-v-aba8caec]{overflow-x:auto}.fd-st-table[data-v-aba8caec]{width:max-content;min-width:100%;border-collapse:collapse}.fd-st-table th[data-v-aba8caec]{background:var(--fd-color-bg-hover);color:var(--fd-color-text-secondary);font-weight:600}.fd-st-table th[data-v-aba8caec],.fd-st-table td[data-v-aba8caec]{border:1px solid var(--fd-color-border);padding:.8rem 1rem;font-size:1.3rem;text-align:left}.fd-st-seq[data-v-aba8caec]{width:5rem;text-align:center!important}.fd-st-cell[data-v-aba8caec]{color:var(--fd-color-text-secondary)}.fd-st-cell--link[data-v-aba8caec]{color:var(--fd-color-primary);cursor:pointer}.fd-st-cards[data-v-aba8caec]{display:flex;flex-direction:column;gap:.8rem}.fd-st-card[data-v-aba8caec]{display:flex;flex-direction:column;gap:.6rem;background:var(--fd-color-bg-panel);border-radius:var(--fd-radius-base);box-shadow:0 1px 2px #0000000f;border:1px solid var(--fd-color-border)}.fd-st-card-row[data-v-aba8caec]{display:flex;align-items:flex-start;padding:1rem 1.4rem;border-bottom:1px solid var(--fd-color-border)}.fd-st-card-row[data-v-aba8caec]:last-child{border-bottom:none}.fd-st-card-label[data-v-aba8caec]{flex:0 0 11.5rem;max-width:11.5rem;color:var(--fd-color-text-secondary);font-size:1.3rem}.fd-st-card-value[data-v-aba8caec]{flex:1 1 auto;min-width:0;color:var(--fd-color-text);font-size:1.3rem;word-break:break-all;display:flex;align-items:center}.fd-st-card-value--link[data-v-aba8caec]{color:var(--fd-color-primary);cursor:pointer}.fd-st-cards-empty[data-v-aba8caec]{text-align:center;font-size:1.3rem;color:var(--fd-color-text-tertiary);padding:2rem 1rem}.fd-st-render[data-v-a650847e]{background:var(--fd-color-bg-panel)}.fd-st-table-wrap[data-v-a650847e]{overflow-x:auto}.fd-st-table[data-v-a650847e]{width:max-content;min-width:100%;border-spacing:0;border-collapse:separate;border:1px solid #e4eaf2;border-radius:1rem;overflow:hidden;background:#fff}.fd-st-table th[data-v-a650847e],.fd-st-table td[data-v-a650847e]{border:0;border-right:1px solid #e4eaf2;border-bottom:1px solid #e4eaf2;padding:1.1rem 1.2rem;line-height:1.45;font-size:1.3rem}.fd-st-table tr[data-v-a650847e]>*:last-child{border-right:0}.fd-st-table th[data-v-a650847e]{color:#667085;background:#f8fafc;font-weight:500}.fd-st-table thead th[data-v-a650847e]{color:#475467;background:#f6f8fb;font-weight:600}.fd-st-seq[data-v-a650847e]{width:5rem;text-align:center!important}.fd-st-op[data-v-a650847e]{width:8rem;text-align:center}.fd-st-empty[data-v-a650847e]{text-align:center;color:var(--fd-color-text-secondary);padding:1.6rem}.fd-st-link[data-v-a650847e]{color:var(--fd-color-primary);cursor:pointer;text-decoration:none;word-break:break-all}.fd-st-link[data-v-a650847e]:hover{text-decoration:underline}.fd-st-add[data-v-a650847e]{margin:1rem 1.2rem}.fd-st-cards[data-v-a650847e]{display:flex;flex-direction:column;gap:.8rem}.fd-st-card[data-v-a650847e]{display:flex;flex-direction:column;background:var(--fd-color-bg-panel);border-radius:var(--fd-radius-base);box-shadow:0 .1rem .2rem #0000000f;border:1px solid var(--fd-color-border)}.fd-st-card-row[data-v-a650847e]{display:flex;align-items:flex-start;padding:1rem 1.4rem;border-bottom:1px solid var(--fd-color-border)}.fd-st-card-row[data-v-a650847e]:last-child{border-bottom:none}.fd-st-card-label[data-v-a650847e]{flex:0 0 11.5rem;max-width:11.5rem;color:var(--fd-color-text-secondary);font-size:1.3rem}.fd-st-card-value[data-v-a650847e]{flex:1 1 auto;min-width:0;color:var(--fd-color-text);font-size:1.3rem;word-break:break-all}.fd-st-card-actions[data-v-a650847e]{display:flex;justify-content:flex-end;padding:.8rem 1.4rem;border-top:1px solid var(--fd-color-border)}.fd-st-cards-empty[data-v-a650847e]{text-align:center;font-size:1.3rem;color:var(--fd-color-text-secondary);padding:2rem 1rem}.fd-panel[data-v-31bf2515]{display:flex;flex-direction:column;gap:1.2rem}.fd-panel-item[data-v-31bf2515]{display:flex;flex-direction:column;gap:.4rem}.fd-panel-item--row[data-v-31bf2515]{flex-direction:row;align-items:center;justify-content:space-between}.fd-panel-item label[data-v-31bf2515]{font-size:1.3rem;color:var(--fd-color-text-secondary)}.fd-cols-head[data-v-31bf2515]{display:flex;align-items:center;justify-content:space-between;margin-bottom:.8rem;font-weight:600}.fd-cols-empty[data-v-31bf2515]{font-size:1.3rem;color:var(--fd-color-text-placeholder);text-align:center;padding:1.6rem;border:1px dashed var(--fd-color-border);border-radius:var(--fd-radius-base)}.fd-col-card[data-v-31bf2515]{display:flex;flex-direction:column;gap:.8rem;padding:1rem 1.2rem;margin-bottom:.8rem;border:1px solid var(--fd-color-border);border-radius:var(--fd-radius-base);background:var(--fd-color-bg-panel);transition:border-color var(--fd-transition)}.fd-col-card[data-v-31bf2515]:hover{border-color:var(--fd-color-primary)}.fd-col-card-top[data-v-31bf2515]{display:flex;align-items:center;gap:.8rem}.fd-col-order[data-v-31bf2515]{flex-shrink:0;width:2.2rem;height:2.2rem;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.2rem;font-weight:600;color:var(--fd-color-primary);background:var(--fd-color-primary-light)}.fd-col-meta[data-v-31bf2515]{flex:1;display:flex;flex-direction:column;gap:.1rem;min-width:0}.fd-col-title[data-v-31bf2515]{font-size:1.4rem;font-weight:600;color:var(--fd-color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fd-col-name-sub[data-v-31bf2515]{font-size:1.1rem;color:var(--fd-color-text-tertiary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fd-col-tag[data-v-31bf2515]{flex-shrink:0;font-size:1.1rem;color:var(--fd-color-text-secondary);background:var(--fd-color-bg);border:1px solid var(--fd-color-border);padding:.2rem .6rem;border-radius:var(--fd-radius-base)}.fd-col-card-bottom[data-v-31bf2515]{display:flex;align-items:center;justify-content:space-between}.fd-col-switch[data-v-31bf2515]{display:flex;align-items:center;gap:.6rem;font-size:1.3rem;color:var(--fd-color-text-secondary)}.fd-col-actions[data-v-31bf2515]{display:flex;gap:.6rem}.fd-form-section[data-v-31bf2515]{margin-bottom:1.6rem}.fd-form-section[data-v-31bf2515]:last-child{margin-bottom:0}.fd-form-section-h[data-v-31bf2515]{margin:0 0 .8rem;font-size:1.3rem;font-weight:600;color:var(--fd-color-text-secondary)}.fd-form-grid[data-v-31bf2515]{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem 1.6rem}.fd-form-item[data-v-31bf2515]{display:flex;flex-direction:column;gap:.4rem}.fd-form-item label[data-v-31bf2515]{font-size:1.3rem;color:var(--fd-color-text-secondary)}.fd-color-row[data-v-31bf2515]{display:flex;gap:.6rem;align-items:center}.fd-form-section .fd-form-item .fd-color-row input[type=color][data-v-31bf2515]{width:3.6rem;height:3.2rem;padding:.2rem;flex-shrink:0;border:1px solid var(--fd-color-border);border-radius:var(--fd-radius-base);background:var(--fd-color-bg-panel);cursor:pointer}.fd-form-section .fd-form-item .fd-switch[data-v-31bf2515]{margin-top:.6rem}.fd-color-row input[type=text][data-v-31bf2515]{flex:1;min-width:0}.fd-btn--sm[data-v-31bf2515]{height:2.6rem;padding:0 1rem;font-size:1.2rem}.fd-btn--ghost[data-v-31bf2515]{background:transparent;color:var(--fd-color-primary);border:1px solid var(--fd-color-primary)}.fd-btn--ghost[data-v-31bf2515]:hover{background:var(--fd-color-primary-light)}.fd-dialog-mask[data-v-31bf2515]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#00000073;display:flex;align-items:center;justify-content:center}.fd-dialog[data-v-31bf2515]{width:min(56rem,92vw);max-height:82vh;display:flex;flex-direction:column;background:var(--fd-color-bg-panel);border-radius:var(--fd-radius-lg);box-shadow:var(--fd-shadow-pop);overflow:hidden}.fd-dialog-head[data-v-31bf2515]{display:flex;align-items:center;gap:1.2rem;padding:1.2rem 1.6rem;border-bottom:1px solid var(--fd-color-border);font-weight:600;font-size:1.5rem}.fd-dialog-head span[data-v-31bf2515]{margin-right:auto}.fd-dialog-close[data-v-31bf2515]{width:3rem;height:3rem;padding:0;font-size:2rem;line-height:1;border:none;border-radius:var(--fd-radius-base);background:transparent;color:var(--fd-color-text-secondary);cursor:pointer}.fd-dialog-close[data-v-31bf2515]:hover{background:var(--fd-color-bg);color:var(--fd-color-text)}.fd-dialog-body[data-v-31bf2515]{padding:1.6rem;overflow:auto}.fd-dialog-foot[data-v-31bf2515]{display:flex;justify-content:flex-end;gap:1rem;padding:1.2rem 1.6rem;border-top:1px solid var(--fd-color-border)}.fd-grid-design[data-v-25511a77]{display:grid;grid-template-columns:repeat(24,1fr);align-items:start}.fd-grid-design.is-mobile[data-v-25511a77]{grid-template-columns:1fr}.fd-grid-render[data-v-417035f9]{display:grid;grid-template-columns:repeat(24,1fr);align-items:start}.fd-grid-render.is-mobile[data-v-417035f9]{grid-template-columns:1fr}.fd-grid-cell[data-v-417035f9]{min-width:0}.fd-grid-cell[data-v-417035f9]>*{margin-bottom:0}.fd-panel[data-v-a333d2ea]{display:flex;flex-direction:column;gap:1.2rem}.fd-panel-item[data-v-a333d2ea]{display:flex;flex-direction:column;gap:.4rem}.fd-panel-item label[data-v-a333d2ea]{font-size:1.3rem;color:var(--fd-color-text-secondary)}.fd-panel-item select[data-v-a333d2ea]{height:3.2rem;padding:0 1rem;border:1px solid var(--fd-color-border);border-radius:var(--fd-radius-base);font-size:1.4rem;background:var(--fd-color-bg-panel)}.fd-grid-apply[data-v-a333d2ea]{width:100%}.fd-text-design[data-v-ba382e6c],.fd-text-render[data-v-3ed7b0f0]{display:inline-block;padding:.4rem 0;font-size:1.4rem;line-height:1.5;color:var(--fd-color-text);white-space:pre-wrap;word-break:break-word}.fd-panel[data-v-3201879c]{display:flex;flex-direction:column;gap:1.2rem}.fd-panel-item[data-v-3201879c]{display:flex;flex-direction:column;gap:.4rem}.fd-panel-item label[data-v-3201879c]{font-size:1.3rem;color:var(--fd-color-text-secondary)}.fd-panel-item textarea[data-v-3201879c],.fd-panel-item select[data-v-3201879c]{padding:.8rem 1rem;border:1px solid var(--fd-color-border);border-radius:var(--fd-radius-base);font-size:1.4rem;font-family:inherit;line-height:1.5;background:var(--fd-color-bg-panel)}.fd-panel-item textarea[data-v-3201879c]{resize:vertical}.fd-panel-item select[data-v-3201879c]{height:3.2rem}.fd-renderer[data-v-82088c12]{display:block;padding:1.6rem}.fd-tree[data-v-e38c14ec]{padding:1.2rem;height:100%;overflow:auto;display:flex;flex-direction:column}.fd-tree-head[data-v-e38c14ec]{display:flex;align-items:center;gap:.8rem;padding:0 .4rem .8rem;margin-bottom:.8rem;border-bottom:1px solid var(--fd-color-border);flex-shrink:0}.fd-tree-head-icon[data-v-e38c14ec]{width:1.6rem;height:1.6rem;color:var(--fd-color-primary);flex-shrink:0}.fd-tree-title[data-v-e38c14ec]{font-weight:600;font-size:1.5rem}.fd-tree-count[data-v-e38c14ec]{margin-left:auto;padding:.1rem .7rem;border-radius:1rem;font-size:1.2rem;color:var(--fd-color-text-tertiary);background:var(--fd-color-info-light)}.fd-tree-empty[data-v-e38c14ec]{display:flex;flex-direction:column;align-items:center;gap:.8rem;padding:4rem 2rem;color:var(--fd-color-text-tertiary);font-size:1.3rem;text-align:center}.fd-tree-empty svg[data-v-e38c14ec]{width:3.2rem;height:3.2rem;opacity:.6}.fd-tree-el[data-v-e38c14ec]{background:transparent;--el-tree-node-hover-bg-color: transparent}.fd-tree-el[data-v-e38c14ec] .el-tree-node__content{height:auto;min-height:2.8rem;border-radius:var(--fd-radius-base);padding-left:.4rem}.fd-tree-el[data-v-e38c14ec] .el-tree-node__content:hover{background:var(--fd-color-info-light)}.fd-tree-el[data-v-e38c14ec] .el-tree-node.is-current>.el-tree-node__content{background:var(--fd-color-primary-light);color:var(--fd-color-primary)}.fd-tree-el[data-v-e38c14ec] .el-tree-node__expand-icon{color:var(--fd-color-text-tertiary)}.fd-tree-el[data-v-e38c14ec] .el-tree-node.is-current>.el-tree-node__content .el-tree-node__expand-icon{color:var(--fd-color-primary)}.fd-tree-name[data-v-e38c14ec]{font-size:1.3rem}.fd-tree-sub[data-v-e38c14ec]{margin-left:.6rem;color:var(--fd-color-text-tertiary);font-size:1.2rem;max-width:12rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-tree-node.is-current>.el-tree-node__content .fd-tree-sub[data-v-e38c14ec]{color:var(--fd-color-primary);opacity:.75}.fd-toolbar[data-v-2d05aedb]{display:flex;align-items:center;justify-content:space-between;gap:1.2rem;height:var(--fd-header-height);padding:0 2rem;background:var(--fd-color-bg-panel);border-bottom:1px solid var(--fd-color-border);flex-shrink:0}.fd-toolbar-title[data-v-2d05aedb]{font-weight:600;font-size:1.8rem;color:var(--fd-color-text);white-space:nowrap}.fd-toolbar-left[data-v-2d05aedb]{gap:1.6rem}.fd-toolbar-divider[data-v-2d05aedb]{width:1px;height:2rem;background:var(--fd-color-border);flex-shrink:0}.fd-toolbar-name[data-v-2d05aedb]{height:3.2rem;width:16rem;padding:0 1.2rem;border:1px solid transparent;border-radius:var(--fd-radius-base);background:var(--fd-color-info-light);color:var(--fd-color-text-secondary);font-size:1.4rem;transition:all var(--fd-transition)}.fd-toolbar-name[data-v-2d05aedb]:hover{background:var(--fd-color-bg-panel);border-color:var(--fd-color-primary)}.fd-toolbar-name[data-v-2d05aedb]:focus{outline:none;background:var(--fd-color-bg-panel);border-color:var(--fd-color-primary);box-shadow:0 0 0 .2rem #4c8eff33}.fd-device[data-v-2d05aedb]{display:inline-flex;background:var(--fd-color-info-light);border-radius:.6rem;padding:.2rem}.fd-device button[data-v-2d05aedb]{height:2.8rem;display:inline-flex;align-items:center;gap:.4rem;padding:0 1rem;border:none;background:transparent;border-radius:var(--fd-radius-base);color:var(--fd-color-text-secondary);font-size:1.3rem;cursor:default;white-space:nowrap;transition:all var(--fd-transition)}.fd-device button.is-active[data-v-2d05aedb]{background:var(--fd-color-bg-panel);color:var(--fd-color-primary);box-shadow:var(--fd-shadow-card);font-weight:600}.fd-toolbar-right[data-v-2d05aedb]{gap:.8rem;flex-wrap:nowrap;overflow-x:auto}.fd-tool-btn[data-v-2d05aedb]{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;height:3.4rem;padding:0 1rem;border:none;border-radius:var(--fd-radius-base);background:var(--fd-color-info-light);color:#4a4f59;font-size:1.3rem;cursor:pointer;white-space:nowrap;flex-shrink:0;transition:all var(--fd-transition)}.fd-tool-btn-icon[data-v-2d05aedb]{width:1.4rem;height:1.4rem;flex-shrink:0;display:block}.fd-tool-btn[data-v-2d05aedb]:hover{background:#e8e9eb}.fd-tool-btn[data-v-2d05aedb]:disabled{opacity:.45;cursor:not-allowed}.fd-tool-btn--primary[data-v-2d05aedb]{background:var(--fd-color-primary);color:#fff}.fd-tool-btn--primary[data-v-2d05aedb]:hover{background:var(--fd-color-primary-hover);color:#fff}.fd-tool-icon-btn[data-v-2d05aedb]{width:3.4rem;padding:0}.fd-tool-icon[data-v-2d05aedb]{width:1.8rem;height:1.8rem;display:block}.fd-dialog-mask[data-v-2d05aedb]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#00000073;display:flex;align-items:center;justify-content:center}.fd-dialog[data-v-2d05aedb]{width:min(86rem,90vw);max-height:82vh;display:flex;flex-direction:column;background:var(--fd-color-bg-panel);border-radius:var(--fd-radius-lg);box-shadow:var(--fd-shadow-pop);overflow:hidden}.fd-dialog--preview[data-v-2d05aedb]{width:min(128rem,94vw)}.fd-preview-width[data-v-2d05aedb]{display:inline-flex;align-items:center;gap:.6rem;font-size:1.3rem;font-weight:400;color:var(--fd-color-text-secondary)}.fd-preview-width[data-v-2d05aedb] .el-input-number{width:11rem}.fd-preview-width[data-v-2d05aedb] .el-input-number .el-input__wrapper{background:var(--fd-color-bg);box-shadow:0 0 0 1px var(--fd-color-border) inset}.fd-preview-width[data-v-2d05aedb] .el-input-number .el-input__wrapper:hover{box-shadow:0 0 0 1px var(--fd-color-border-hover) inset}.fd-preview-width[data-v-2d05aedb] .el-input-number .el-input__wrapper.is-focus{box-shadow:0 0 0 1px var(--fd-color-primary) inset}.fd-preview-width label[data-v-2d05aedb]{white-space:nowrap}.fd-preview-width-unit[data-v-2d05aedb]{color:var(--fd-color-text-tertiary)}.fd-preview-stage[data-v-2d05aedb]{min-width:27rem;max-width:120rem;margin:0 auto}.fd-dialog-head[data-v-2d05aedb]{display:flex;align-items:center;gap:1.2rem;padding:1.2rem 1.6rem;border-bottom:1px solid var(--fd-color-border);font-weight:600;font-size:1.5rem}.fd-dialog-head span[data-v-2d05aedb]{margin-right:auto}.fd-dialog-body[data-v-2d05aedb]{padding:1.6rem;overflow:auto}.fd-dialog-code[data-v-2d05aedb]{margin:0;padding:1.6rem;overflow:auto;font-size:1.2rem;line-height:1.6;color:var(--fd-color-text)}.fd-dialog-import-text[data-v-2d05aedb]{width:100%;min-height:32rem;padding:1.2rem;border:1px solid var(--fd-color-border);border-radius:var(--fd-radius-base);font-size:1.2rem;line-height:1.6;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;background:var(--fd-color-bg);color:var(--fd-color-text);resize:vertical}.fd-tree-drawer[data-v-2d05aedb]{position:fixed;top:5.6rem;right:0;bottom:0;width:30rem;z-index:90;background:var(--fd-color-bg-panel);border-left:1px solid var(--fd-color-border);box-shadow:var(--fd-shadow-pop)}.fd-palette[data-v-6a2bab90]{padding:1.2rem;display:flex;flex-direction:column;gap:1.2rem;overflow:auto;height:100%}.fd-palette-title[data-v-6a2bab90]{font-weight:600;font-size:1.4rem;color:var(--fd-color-text);padding:0 .4rem}.fd-palette-group[data-v-6a2bab90]{display:flex;flex-direction:column;gap:.8rem}.fd-palette-group-title[data-v-6a2bab90]{font-size:1.2rem;color:var(--fd-color-text-tertiary);margin-bottom:.2rem;padding-left:.4rem}.fd-palette-item[data-v-6a2bab90]{display:flex;align-items:center;gap:1rem;padding:1rem 1.2rem;border:1px solid transparent;border-radius:var(--fd-radius-base);background:var(--fd-color-bg-hover);font-size:1.3rem;color:var(--fd-color-text);cursor:grab;-webkit-user-select:none;user-select:none;transition:all var(--fd-transition)}.fd-palette-item[data-v-6a2bab90]:hover{background:var(--fd-color-primary-bg);border-color:var(--fd-color-primary)}.fd-palette-item[data-v-6a2bab90]:active{cursor:grabbing}.fd-palette-icon[data-v-6a2bab90]{display:inline-flex;align-items:center;justify-content:center;width:2.2rem;height:2.2rem;border-radius:var(--fd-radius-base);background:var(--fd-color-icon-bg);color:var(--fd-color-icon);font-size:1.3rem;font-weight:600}.fd-form-events[data-v-7e5a3f15]{display:flex;flex-direction:column;gap:1.6rem}.fd-form-meta[data-v-7e5a3f15]{display:flex;flex-direction:column;gap:.4rem;font-size:1.2rem;color:var(--fd-color-text-secondary);padding:.8rem 1rem;background:var(--fd-color-bg);border-radius:var(--fd-radius-base)}.fd-events-section[data-v-7e5a3f15]{display:flex;flex-direction:column;gap:1rem}.fd-events-head[data-v-7e5a3f15]{display:flex;align-items:center;justify-content:space-between}.fd-events-h[data-v-7e5a3f15]{margin:0;font-size:1.4rem;font-weight:600}.fd-events-tip[data-v-7e5a3f15]{margin:0;font-size:1.2rem;color:var(--fd-color-text-tertiary)}.fd-events-empty[data-v-7e5a3f15]{font-size:1.3rem;color:var(--fd-color-text-placeholder);text-align:center;padding:1.2rem;border:1px dashed var(--fd-color-border);border-radius:var(--fd-radius-base)}.fd-event-row[data-v-7e5a3f15]{display:flex;flex-direction:column;gap:.4rem}.fd-event-head[data-v-7e5a3f15]{display:flex;align-items:center;gap:.8rem}.fd-event-row label[data-v-7e5a3f15]{font-size:1.3rem;color:var(--fd-color-text-secondary)}.fd-event-key[data-v-7e5a3f15]{font-size:1.1rem;color:var(--fd-color-primary);background:var(--fd-color-primary-light);padding:.1rem .6rem;border-radius:var(--fd-radius-base)}.fd-event-trigger[data-v-7e5a3f15]{display:flex;align-items:center;gap:.6rem;width:100%;min-height:3.2rem;padding:0 1rem;border:1px solid var(--fd-color-border);border-radius:var(--fd-radius-base);font-size:1.3rem;background:var(--fd-color-bg-panel);cursor:pointer;transition:border-color var(--fd-transition),background-color var(--fd-transition);overflow:hidden}.fd-event-trigger[data-v-7e5a3f15]:hover{border-color:var(--fd-color-primary);background:var(--fd-color-primary-light)}.fd-event-trigger-text[data-v-7e5a3f15]{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--fd-color-text);font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace}.fd-event-trigger-placeholder[data-v-7e5a3f15]{flex:1;color:var(--fd-color-text-placeholder)}.fd-event-trigger-arrow[data-v-7e5a3f15]{flex-shrink:0;color:var(--fd-color-text-tertiary);font-size:1.8rem;line-height:1}.fd-custom-card[data-v-7e5a3f15]{display:flex;flex-direction:column;gap:.8rem;padding:1.2rem;border:1px solid var(--fd-color-border);border-radius:var(--fd-radius-base);background:var(--fd-color-bg)}.fd-custom-head[data-v-7e5a3f15]{display:flex;align-items:center;justify-content:space-between}.fd-custom-index[data-v-7e5a3f15]{font-size:1.3rem;font-weight:600;color:var(--fd-color-text-secondary)}.fd-event-row input[data-v-7e5a3f15]{width:100%;height:3.2rem;font-size:1.4rem;padding:0 1rem;border:1px solid var(--fd-color-border);border-radius:var(--fd-radius-base);background:var(--fd-color-bg-panel);color:var(--fd-color-text)}.fd-event-row input[data-v-7e5a3f15]:focus{border-color:var(--fd-color-primary);outline:none}.fd-btn[data-v-7e5a3f15]{height:3.2rem;padding:0 1.4rem;border:none;border-radius:var(--fd-radius-base);font-size:1.3rem;cursor:pointer}.fd-btn--sm[data-v-7e5a3f15]{height:2.6rem;padding:0 1rem;font-size:1.2rem}.fd-btn--primary[data-v-7e5a3f15]{background:var(--fd-color-primary);color:#fff}.fd-btn--danger[data-v-7e5a3f15]{background:var(--fd-color-danger-light);color:var(--fd-color-danger)}.fd-dialog-mask[data-v-7e5a3f15]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#00000073;display:flex;align-items:center;justify-content:center}.fd-dialog[data-v-7e5a3f15]{width:min(60rem,92vw);max-height:82vh;display:flex;flex-direction:column;background:var(--fd-color-bg-panel);border-radius:var(--fd-radius-lg);box-shadow:var(--fd-shadow-pop);overflow:hidden}.fd-dialog-head[data-v-7e5a3f15]{display:flex;align-items:center;gap:1.2rem;padding:1.2rem 1.6rem;border-bottom:1px solid var(--fd-color-border);font-weight:600;font-size:1.5rem}.fd-dialog-head span[data-v-7e5a3f15]{margin-right:auto}.fd-dialog-close[data-v-7e5a3f15]{width:3rem;height:3rem;padding:0;font-size:2rem;line-height:1;border:none;border-radius:var(--fd-radius-base);background:transparent;color:var(--fd-color-text-secondary);cursor:pointer}.fd-dialog-close[data-v-7e5a3f15]:hover{background:var(--fd-color-bg);color:var(--fd-color-text)}.fd-dialog-body[data-v-7e5a3f15]{padding:1.6rem;overflow:auto}.fd-dialog-foot[data-v-7e5a3f15]{display:flex;justify-content:flex-end;gap:1rem;padding:1.2rem 1.6rem;border-top:1px solid var(--fd-color-border)}.fd-property[data-v-e89617c7]{padding:1.2rem;display:flex;flex-direction:column;gap:1.2rem;height:100%;overflow:auto}.fd-property-title[data-v-e89617c7]{font-weight:600;font-size:1.4rem}.fd-property-empty[data-v-e89617c7]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.2rem;color:var(--fd-color-text-secondary);font-size:1.3rem;text-align:center}.fd-property-empty-icon[data-v-e89617c7]{font-size:3.6rem;color:var(--fd-color-border)}.fd-property-foot[data-v-e89617c7]{display:flex;align-items:center;justify-content:space-between;margin-top:1.2rem;padding-top:1.2rem;border-top:1px solid var(--fd-color-border)}.fd-property-type[data-v-e89617c7]{font-size:1.2rem;color:var(--fd-color-text-secondary)}.fd-property-item[data-v-e89617c7]{display:flex;flex-direction:column;gap:.4rem}.fd-property-item label[data-v-e89617c7]{font-size:1.3rem;color:var(--fd-color-text-secondary)}.fd-property-item input[data-v-e89617c7],.fd-property-item select[data-v-e89617c7]{height:3.2rem;padding:0 1rem;border:1px solid var(--fd-color-border);border-radius:var(--fd-radius-base);font-size:1.4rem;background:var(--fd-color-bg-panel)}.fd-btn[data-v-e89617c7]{height:3.2rem;padding:0 1.4rem;border:none;border-radius:var(--fd-radius-base);font-size:1.3rem;cursor:pointer}.fd-btn--danger[data-v-e89617c7]{background:var(--fd-color-danger-light);color:var(--fd-color-danger)}.fd-canvas-node[data-v-3f3a43d3]{position:relative;border-radius:var(--fd-radius-base);cursor:pointer;transition:background-color var(--fd-transition),box-shadow var(--fd-transition),opacity var(--fd-transition)}.fd-canvas-node[data-v-3f3a43d3]:hover{background:var(--fd-color-bg-hover)}.fd-canvas-node.is-selected[data-v-3f3a43d3]{background:var(--fd-color-primary-bg);outline:1px solid var(--fd-color-primary);z-index:1}.fd-canvas-node.drop-before[data-v-3f3a43d3]:before{content:"";position:absolute;left:0;right:0;top:-.15rem;height:.3rem;border-radius:.15rem;background:var(--fd-color-primary);z-index:2}.fd-canvas-node.drop-target[data-v-3f3a43d3]{background:#4c8eff14!important;box-shadow:0 0 0 1px var(--fd-color-primary),0 0 .6rem #4c8eff40}.fd-canvas-node.dragging-source[data-v-3f3a43d3]{opacity:.4}.fd-canvas-node-actions[data-v-3f3a43d3]{position:absolute;top:.6rem;right:.6rem;display:none;gap:.4rem;z-index:5}.fd-canvas-node:hover>.fd-canvas-node-actions[data-v-3f3a43d3]{display:flex}.fd-canvas-node:hover:has(.fd-canvas-node:hover)>.fd-canvas-node-actions[data-v-3f3a43d3]{display:none}.fd-node-action[data-v-3f3a43d3]{width:2.6rem;height:2.6rem;display:flex;align-items:center;justify-content:center;background:var(--fd-color-bg-panel);border:1px solid var(--fd-color-border);border-radius:var(--fd-radius-base);cursor:pointer;color:var(--fd-color-text-tertiary);transition:all var(--fd-transition)}.fd-node-icon[data-v-3f3a43d3]{width:1.4rem;height:1.4rem;display:block}.fd-node-action[data-v-3f3a43d3]:hover{background:var(--fd-color-bg-hover);border-color:var(--fd-color-border-hover);color:var(--fd-color-primary)}.fd-node-action.delete[data-v-3f3a43d3]:hover{color:var(--fd-color-danger)}.fd-canvas-dropzone[data-v-3f3a43d3]{grid-column:1 / -1;border:1px dashed var(--fd-color-border);border-radius:var(--fd-radius-base);padding:.8rem;text-align:center;color:var(--fd-color-text-tertiary);font-size:1.2rem;margin-top:.6rem}.fd-designer[data-v-2f9ce87a]{display:flex;flex-direction:column;height:100vh}.fd-designer-body[data-v-2f9ce87a]{flex:1;display:flex;min-height:0}.fd-designer-left[data-v-2f9ce87a]{width:var(--fd-sidebar-width);border-right:1px solid var(--fd-color-border);background:var(--fd-color-bg-panel);overflow:hidden}.fd-designer-center[data-v-2f9ce87a]{flex:1;padding:2.4rem;overflow:auto;background:var(--fd-color-bg)}.fd-canvas[data-v-2f9ce87a]{width:100%;max-width:var(--fd-canvas-max);min-height:calc(100vh - 16rem);margin:0 auto;padding:1.6rem;background:var(--fd-color-bg-panel);border-radius:var(--fd-radius-lg);box-shadow:var(--fd-shadow-card)}.fd-canvas.is-mobile[data-v-2f9ce87a]{max-width:37.5rem}.fd-canvas.is-selected[data-v-2f9ce87a]{outline:2px solid var(--fd-color-primary);outline-offset:-2px}.fd-canvas-empty[data-v-2f9ce87a]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:8rem 2.4rem;color:var(--fd-color-text-tertiary)}.fd-canvas-empty-icon[data-v-2f9ce87a]{font-size:4.8rem;margin-bottom:1.6rem;color:var(--fd-color-text-placeholder)}.fd-canvas-empty span[data-v-2f9ce87a]:last-child{font-size:1.4rem}.fd-designer-right[data-v-2f9ce87a]{width:var(--fd-property-width);border-left:1px solid var(--fd-color-border);background:var(--fd-color-bg-panel)}:root{--fd-color-primary: #4c8eff;--fd-color-primary-hover: #3a7de8;--fd-color-primary-active: #2a6bd6;--fd-color-primary-light: #e8f1ff;--fd-color-primary-bg: #f0f6ff;--fd-color-danger: #f5523a;--fd-color-danger-light: #fef0ed;--fd-color-warning: #ff9900;--fd-color-warning-light: #fff8eb;--fd-color-info: #646a78;--fd-color-info-light: #f2f3f5;--fd-color-text: #344054;--fd-color-text-secondary: #667085;--fd-color-text-tertiary: #8a8f99;--fd-color-text-placeholder: #c9cdd4;--fd-color-border: #e5e6e8;--fd-color-border-hover: #c9cdd4;--fd-color-bg: #f5f6f7;--fd-color-bg-panel: #ffffff;--fd-color-bg-hover: #f8fafc;--fd-color-bg-active: #e8f1ff;--fd-color-bg-mask: rgba(0, 0, 0, .5);--fd-color-icon-bg: #e8f1ff;--fd-color-icon: #4c8eff;--fd-color-required: #f5523a;--fd-radius-base: .4rem;--fd-radius-lg: .8rem;--fd-shadow-card: 0 1px 3px rgba(0, 0, 0, .08);--fd-shadow-pop: 0 8px 24px rgba(0, 0, 0, .16);--fd-gap-base: 1.2rem;--fd-transition: .2s ease-in-out;--fd-header-height: 5.6rem;--fd-sidebar-width: 24rem;--fd-property-width: 30rem;--fd-canvas-max: 120rem}[data-theme=dark]{--fd-color-primary: #4c8eff;--fd-color-primary-hover: #5e9eff;--fd-color-primary-active: #3a7be8;--fd-color-primary-light: #1a3a5e;--fd-color-primary-bg: #1a2a4e;--fd-color-danger: #f5523a;--fd-color-danger-light: #3a1a1a;--fd-color-warning: #ff9900;--fd-color-warning-light: #3a2a0a;--fd-color-info: #b0b0b0;--fd-color-info-light: #333333;--fd-color-text: #344054;--fd-color-text-secondary: #667085;--fd-color-text-tertiary: #8a8a8a;--fd-color-text-placeholder: #6a6a6a;--fd-color-border: #3a3a3a;--fd-color-border-hover: #5a5a5a;--fd-color-bg: #1a1a1a;--fd-color-bg-panel: #2a2a2a;--fd-color-bg-hover: #333333;--fd-color-bg-active: #1a3a5e;--fd-color-bg-mask: rgba(0, 0, 0, .7);--fd-color-icon-bg: #1e293b;--fd-color-icon: #93c5fd;--fd-color-required: #f5523a;--fd-shadow-card: 0 1px 3px rgba(0, 0, 0, .4);--fd-shadow-pop: 0 8px 24px rgba(0, 0, 0, .6)}html{font-size:10px}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:1.4rem;color:var(--fd-color-text);background:var(--fd-color-bg)}*,*:before,*:after{box-sizing:border-box}.flex{display:flex}.flex-col{display:flex;flex-direction:column}.flex-align-center{display:flex;align-items:center}.flex-justify-between{display:flex;align-items:center;justify-content:space-between}.flex-1{flex:1}.fd-form-row{display:flex;flex-wrap:wrap;gap:var(--fd-gap-base)}.fd-form-col{display:flex;flex-direction:column;gap:var(--fd-gap-base)}.fd-btn{display:inline-flex;align-items:center;justify-content:center;gap:.6rem;height:3.4rem;padding:0 2rem;border:none;border-radius:var(--fd-radius-base);font-size:1.4rem;cursor:pointer;color:#fff;background:var(--fd-color-primary);transition:background var(--fd-transition)}.fd-btn--primary{background:var(--fd-color-primary)}.fd-btn--primary:hover{background:var(--fd-color-primary-hover)}.fd-btn--danger{background:var(--fd-color-danger-light);color:var(--fd-color-danger)}.fd-btn--warning{background:var(--fd-color-warning-light);color:var(--fd-color-warning)}.fd-btn--info{background:var(--fd-color-info-light);color:var(--fd-color-info)}.fd-btn:disabled{opacity:.5;cursor:not-allowed}input:not([type=file]):not(.fd-toolbar-name):not(.el-select__input):not(.el-input__inner),select,textarea{display:block;width:100%;height:3.4rem;padding:0 1rem;font-family:inherit;font-size:1.4rem;line-height:1.4;color:var(--fd-color-text);background:var(--fd-color-bg-panel);border:1px solid var(--fd-color-border);border-radius:var(--fd-radius-base);outline:none;transition:border-color var(--fd-transition),box-shadow var(--fd-transition)}textarea{height:auto;min-height:8rem;padding:.8rem 1rem;resize:vertical}input:not([type=file]):not(.fd-toolbar-name):not(.el-select__input):not(.el-input__inner):hover,select:hover,textarea:hover{border-color:var(--fd-color-border-hover)}input:not([type=file]):not(.fd-toolbar-name):not(.el-select__input):not(.el-input__inner):focus,select:focus,textarea:focus{border-color:var(--fd-color-primary);box-shadow:0 0 0 2px var(--fd-color-primary-light)}input::placeholder,textarea::placeholder{color:var(--fd-color-text-placeholder)}select{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M3 4.5L6 7.5L9 4.5' fill='none' stroke='%238a8f99' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 1rem center;padding-right:2.8rem}.monaco-editor textarea,.monaco-editor input{display:inline;width:auto;height:auto;min-height:0;padding:0;border:none;border-radius:0;box-shadow:none;background:transparent;outline:none;-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}.fd-canvas>*+*,.fd-card-body>*+*,.fd-renderer>*+*{margin-top:var(--fd-gap-base)}.fd-canvas>.fd-canvas-node--label+.fd-canvas-node--label,.fd-card-body>.fd-canvas-node--label+.fd-canvas-node--label,.fd-renderer>.fd-label-render+.fd-label-render,.fd-card-body>.fd-label-render+.fd-label-render{margin-top:-1px}.fd-canvas>.fd-canvas-node--label+.fd-canvas-node--label>.fd-label-design,.fd-card-body>.fd-canvas-node--label+.fd-canvas-node--label>.fd-label-design,.fd-renderer>.fd-label-render+.fd-label-render,.fd-card-body>.fd-label-render+.fd-label-render{border-top-left-radius:0;border-top-right-radius:0}.fd-canvas>.fd-canvas-node--label:not(:last-child)>.fd-label-design,.fd-card-body>.fd-canvas-node--label:not(:last-child)>.fd-label-design,.fd-renderer>.fd-label-render:not(:last-child),.fd-card-body>.fd-label-render:not(:last-child){border-bottom-left-radius:0;border-bottom-right-radius:0}.fd-grid-design>*,.fd-grid-render>*{margin-top:0;margin-bottom:0}.fd-grid-design>.fd-canvas-node--label,.fd-grid-render>.fd-grid-cell:has(.fd-label-render){margin-left:-1px;margin-top:-1px}.fd-grid-design.is-mobile>.fd-canvas-node--label+.fd-canvas-node--label,.fd-grid-render.is-mobile>.fd-grid-cell:has(.fd-label-render)+.fd-grid-cell:has(.fd-label-render){margin-left:0}.fd-grid-design>.fd-canvas-node--label>.fd-label-design,.fd-grid-render>.fd-grid-cell>.fd-label-render{border-radius:0}.fd-grid-design>.fd-canvas-node--label.is-g-corner-tl>.fd-label-design,.fd-grid-render>.fd-grid-cell.is-g-corner-tl>.fd-label-render{border-top-left-radius:1rem}.fd-grid-design>.fd-canvas-node--label.is-g-corner-tr>.fd-label-design,.fd-grid-render>.fd-grid-cell.is-g-corner-tr>.fd-label-render{border-top-right-radius:1rem}.fd-grid-design>.fd-canvas-node--label.is-g-corner-bl>.fd-label-design,.fd-grid-render>.fd-grid-cell.is-g-corner-bl>.fd-label-render{border-bottom-left-radius:1rem}.fd-grid-design>.fd-canvas-node--label.is-g-corner-br>.fd-label-design,.fd-grid-render>.fd-grid-cell.is-g-corner-br>.fd-label-render{border-bottom-right-radius:1rem}.fd-grid-design>.fd-canvas-node--label,.fd-grid-render>.fd-grid-cell:has(>.fd-label-render){align-self:stretch}.fd-grid-design>.fd-canvas-node--label>.fd-label-design,.fd-grid-render>.fd-grid-cell:has(>.fd-label-render)>.fd-label-render{height:100%}.fd-grid-design.is-mobile>.fd-canvas-node--label+.fd-canvas-node--label,.fd-grid-render.is-mobile>.fd-grid-cell:has(.fd-label-render)+.fd-grid-cell:has(.fd-label-render){margin-top:-1px}.fd-grid-design.is-mobile>.fd-canvas-node--label+.fd-canvas-node--label>.fd-label-design,.fd-grid-render.is-mobile>.fd-grid-cell:has(.fd-label-render)+.fd-grid-cell:has(.fd-label-render)>.fd-label-render{border-top-left-radius:0;border-top-right-radius:0}.fd-grid-design.is-mobile>.fd-canvas-node--label:not(:last-child)>.fd-label-design,.fd-grid-render.is-mobile>.fd-grid-cell:has(.fd-label-render):not(:last-child)>.fd-label-render{border-bottom-left-radius:0;border-bottom-right-radius:0}.fd-code-editor[data-v-aeb9c1ee]{width:100%;height:32rem;border:1px solid var(--fd-color-border);border-radius:var(--fd-radius-base);overflow:hidden}