@shwfed/config 2.3.11 → 2.3.13

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 (95) hide show
  1. package/dist/mcp.mjs +1157 -733
  2. package/dist/module.json +1 -1
  3. package/dist/preview/assets/{config-BZahzuEc.js → config-0UIjgMSM.js} +1 -1
  4. package/dist/preview/assets/{config-57-v4VXo.js → config-9eu0BvKT.js} +1 -1
  5. package/dist/preview/assets/{config-BnZQO-Sp.js → config-B1jKkIYg.js} +1 -1
  6. package/dist/preview/assets/{config-DNokxY7M.js → config-BpTg08Vv.js} +1 -1
  7. package/dist/preview/assets/{config-_uPI8qV-.js → config-CDjs2Ohl.js} +1 -1
  8. package/dist/preview/assets/{config-_msO_f2R.js → config-CVS1PW6h.js} +1 -1
  9. package/dist/preview/assets/{config-Be-2ZA2R.js → config-DoQjG5TI.js} +1 -1
  10. package/dist/preview/assets/{config-Bp91DUdU.js → config-f56G9OU7.js} +1 -1
  11. package/dist/preview/assets/{definition.vue_vue_type_script_setup_true_lang-BtScXbs1.js → definition.vue_vue_type_script_setup_true_lang-DbnaeqGK.js} +1 -1
  12. package/dist/preview/assets/index-Br_eXThF.css +1 -0
  13. package/dist/preview/assets/index-DDthcoXk.js +637 -0
  14. package/dist/preview/assets/index-DhkKZ2ii.js +1 -0
  15. package/dist/preview/assets/{runtime-Dk9u-Ybw.js → runtime-BICQC6bF.js} +1 -1
  16. package/dist/preview/assets/{runtime-CfR7ZAND.js → runtime-BkZp9k_z.js} +1 -1
  17. package/dist/preview/assets/{runtime-XXqIAt53.js → runtime-BqFFtMNw.js} +1 -1
  18. package/dist/preview/assets/{runtime-BBms4myv.js → runtime-COMOofol.js} +1 -1
  19. package/dist/preview/assets/{runtime-D3EyeiyA.js → runtime-CPPOlC0F.js} +1 -1
  20. package/dist/preview/assets/{runtime-cKWSGFod.js → runtime-DejxoCBP.js} +1 -1
  21. package/dist/preview/assets/{runtime-w7V-p3t1.js → runtime-YYdaCEw3.js} +1 -1
  22. package/dist/preview/assets/{runtime-B9u14qqB.js → runtime-hKRNY9F6.js} +1 -1
  23. package/dist/preview/index.html +2 -2
  24. package/dist/runtime/components/actions/utils/resolve.js +6 -2
  25. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/schema.d.ts +1 -1
  26. package/dist/runtime/components/config/blocks/2026-05-17/com.shwfed.block.chart.xy/schema.d.ts +4 -0
  27. package/dist/runtime/components/config/blocks/2026-05-17/com.shwfed.block.chart.xy/schema.js +6 -17
  28. package/dist/runtime/components/config/utils/resolve.js +3 -1
  29. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.daterange/config.d.vue.ts +18 -18
  30. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.daterange/config.vue.d.ts +18 -18
  31. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetime/config.d.vue.ts +4 -4
  32. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetime/config.vue.d.ts +4 -4
  33. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetimerange/config.d.vue.ts +22 -22
  34. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetimerange/config.vue.d.ts +22 -22
  35. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.time/config.d.vue.ts +2 -2
  36. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.time/config.vue.d.ts +2 -2
  37. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.timerange/config.d.vue.ts +4 -4
  38. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.timerange/config.vue.d.ts +4 -4
  39. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.numberrange/config.d.vue.ts +12 -12
  40. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.numberrange/config.vue.d.ts +12 -12
  41. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.switch/config.d.vue.ts +10 -10
  42. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.switch/config.vue.d.ts +10 -10
  43. package/dist/runtime/components/form/fields/2026-05-12/com.shwfed.form.field.upload/config.d.vue.ts +12 -12
  44. package/dist/runtime/components/form/fields/2026-05-12/com.shwfed.form.field.upload/config.vue.d.ts +12 -12
  45. package/dist/runtime/components/form/fields/2026-05-23/com.shwfed.form.field.tree.multi/config.d.vue.ts +133 -0
  46. package/dist/runtime/components/form/fields/2026-05-23/com.shwfed.form.field.tree.multi/config.vue +605 -0
  47. package/dist/runtime/components/form/fields/2026-05-23/com.shwfed.form.field.tree.multi/config.vue.d.ts +133 -0
  48. package/dist/runtime/components/form/fields/2026-05-23/com.shwfed.form.field.tree.multi/runtime.d.vue.ts +8 -0
  49. package/dist/runtime/components/form/fields/2026-05-23/com.shwfed.form.field.tree.multi/runtime.vue +324 -0
  50. package/dist/runtime/components/form/fields/2026-05-23/com.shwfed.form.field.tree.multi/runtime.vue.d.ts +8 -0
  51. package/dist/runtime/components/form/fields/2026-05-23/com.shwfed.form.field.tree.multi/schema.d.ts +99 -0
  52. package/dist/runtime/components/form/fields/2026-05-23/com.shwfed.form.field.tree.multi/schema.js +129 -0
  53. package/dist/runtime/components/form/unit-config.vue +0 -23
  54. package/dist/runtime/components/form/utils/resolve.js +3 -1
  55. package/dist/runtime/components/table/config.d.vue.ts +2 -2
  56. package/dist/runtime/components/table/config.vue +5 -45
  57. package/dist/runtime/components/table/config.vue.d.ts +2 -2
  58. package/dist/runtime/components/table/schema.d.ts +9 -2
  59. package/dist/runtime/components/table/schema.js +30 -14
  60. package/dist/runtime/components/table/utils/resolve.js +3 -1
  61. package/dist/runtime/components/ui/date-range-picker/DateRangePickerDateTimePanel.d.vue.ts +1 -1
  62. package/dist/runtime/components/ui/date-range-picker/DateRangePickerDateTimePanel.vue.d.ts +1 -1
  63. package/dist/runtime/components/ui/date-range-picker/DateRangePickerTimeInput.d.vue.ts +1 -1
  64. package/dist/runtime/components/ui/date-range-picker/DateRangePickerTimeInput.vue.d.ts +1 -1
  65. package/dist/runtime/components/ui/tree/Tree.d.vue.ts +57 -0
  66. package/dist/runtime/components/ui/tree/Tree.vue +325 -0
  67. package/dist/runtime/components/ui/tree/Tree.vue.d.ts +57 -0
  68. package/dist/runtime/components/ui/tree/TreeNode.d.vue.ts +53 -0
  69. package/dist/runtime/components/ui/tree/TreeNode.vue +299 -0
  70. package/dist/runtime/components/ui/tree/TreeNode.vue.d.ts +53 -0
  71. package/dist/runtime/components/ui/tree/index.d.ts +3 -0
  72. package/dist/runtime/components/ui/tree/index.js +2 -0
  73. package/dist/runtime/components/ui/tree/types.d.ts +120 -0
  74. package/dist/runtime/components/ui/tree/types.js +0 -0
  75. package/dist/runtime/components/ui/tree/useTreeState.d.ts +95 -0
  76. package/dist/runtime/components/ui/tree/useTreeState.js +369 -0
  77. package/dist/runtime/shims.d.ts +2 -0
  78. package/package.json +1 -1
  79. package/dist/preview/assets/index-DDbl2Atj.js +0 -1
  80. package/dist/preview/assets/index-DGa3Oj3y.js +0 -1075
  81. package/dist/preview/assets/index-mbGtsgdv.css +0 -1
  82. package/dist/runtime/components/form/ai/fields-button.d.vue.ts +0 -13
  83. package/dist/runtime/components/form/ai/fields-button.vue +0 -460
  84. package/dist/runtime/components/form/ai/fields-button.vue.d.ts +0 -13
  85. package/dist/runtime/components/form/ai/fields-task.md +0 -71
  86. package/dist/runtime/components/table/ai/columns-button.d.vue.ts +0 -12
  87. package/dist/runtime/components/table/ai/columns-button.vue +0 -492
  88. package/dist/runtime/components/table/ai/columns-button.vue.d.ts +0 -12
  89. package/dist/runtime/components/table/ai/columns-task.md +0 -53
  90. package/dist/runtime/components/table/ai/data-source-button.d.vue.ts +0 -20
  91. package/dist/runtime/components/table/ai/data-source-button.vue +0 -324
  92. package/dist/runtime/components/table/ai/data-source-button.vue.d.ts +0 -20
  93. package/dist/runtime/components/table/ai/data-source-task.md +0 -17
  94. package/dist/runtime/utils/ai/cel-prompt.d.ts +0 -11
  95. package/dist/runtime/utils/ai/cel-prompt.js +0 -27
package/dist/mcp.mjs CHANGED
@@ -14094,13 +14094,13 @@ function requireDataType() {
14094
14094
  }
14095
14095
  return dataType;
14096
14096
  }
14097
- var defaults$7 = {};
14097
+ var defaults$8 = {};
14098
14098
  var hasRequiredDefaults;
14099
14099
  function requireDefaults() {
14100
- if (hasRequiredDefaults) return defaults$7;
14100
+ if (hasRequiredDefaults) return defaults$8;
14101
14101
  hasRequiredDefaults = 1;
14102
- Object.defineProperty(defaults$7, "__esModule", { value: true });
14103
- defaults$7.assignDefaults = void 0;
14102
+ Object.defineProperty(defaults$8, "__esModule", { value: true });
14103
+ defaults$8.assignDefaults = void 0;
14104
14104
  const codegen_1 = /* @__PURE__ */ requireCodegen();
14105
14105
  const util_1 = /* @__PURE__ */ requireUtil$1();
14106
14106
  function assignDefaults(it, ty) {
@@ -14113,7 +14113,7 @@ function requireDefaults() {
14113
14113
  items2.forEach((sch, i) => assignDefault(it, i, sch.default));
14114
14114
  }
14115
14115
  }
14116
- defaults$7.assignDefaults = assignDefaults;
14116
+ defaults$8.assignDefaults = assignDefaults;
14117
14117
  function assignDefault(it, prop, defaultValue) {
14118
14118
  const { gen: gen2, compositeRule, data, opts } = it;
14119
14119
  if (defaultValue === void 0)
@@ -14129,7 +14129,7 @@ function requireDefaults() {
14129
14129
  }
14130
14130
  gen2.if(condition, (0, codegen_1._)`${childData} = ${(0, codegen_1.stringify)(defaultValue)}`);
14131
14131
  }
14132
- return defaults$7;
14132
+ return defaults$8;
14133
14133
  }
14134
14134
  var keyword = {};
14135
14135
  var code$1 = {};
@@ -15509,14 +15509,14 @@ function requireCompile() {
15509
15509
  }
15510
15510
  const $id$1 = "https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#";
15511
15511
  const description = "Meta-schema for $data reference (JSON AnySchema extension proposal)";
15512
- const type$Q = "object";
15512
+ const type$R = "object";
15513
15513
  const required$1 = ["$data"];
15514
15514
  const properties$2 = { "$data": { "type": "string", "anyOf": [{ "format": "relative-json-pointer" }, { "format": "json-pointer" }] } };
15515
15515
  const additionalProperties$1 = false;
15516
15516
  const require$$9 = {
15517
15517
  $id: $id$1,
15518
15518
  description,
15519
- type: type$Q,
15519
+ type: type$R,
15520
15520
  required: required$1,
15521
15521
  properties: properties$2,
15522
15522
  additionalProperties: additionalProperties$1
@@ -18516,14 +18516,14 @@ function requireFormat() {
18516
18516
  format$7.default = format2;
18517
18517
  return format$7;
18518
18518
  }
18519
- var metadata$P = {};
18519
+ var metadata$Q = {};
18520
18520
  var hasRequiredMetadata;
18521
18521
  function requireMetadata() {
18522
- if (hasRequiredMetadata) return metadata$P;
18522
+ if (hasRequiredMetadata) return metadata$Q;
18523
18523
  hasRequiredMetadata = 1;
18524
- Object.defineProperty(metadata$P, "__esModule", { value: true });
18525
- metadata$P.contentVocabulary = metadata$P.metadataVocabulary = void 0;
18526
- metadata$P.metadataVocabulary = [
18524
+ Object.defineProperty(metadata$Q, "__esModule", { value: true });
18525
+ metadata$Q.contentVocabulary = metadata$Q.metadataVocabulary = void 0;
18526
+ metadata$Q.metadataVocabulary = [
18527
18527
  "title",
18528
18528
  "description",
18529
18529
  "default",
@@ -18532,12 +18532,12 @@ function requireMetadata() {
18532
18532
  "writeOnly",
18533
18533
  "examples"
18534
18534
  ];
18535
- metadata$P.contentVocabulary = [
18535
+ metadata$Q.contentVocabulary = [
18536
18536
  "contentMediaType",
18537
18537
  "contentEncoding",
18538
18538
  "contentSchema"
18539
18539
  ];
18540
- return metadata$P;
18540
+ return metadata$Q;
18541
18541
  }
18542
18542
  var hasRequiredDraft7;
18543
18543
  function requireDraft7() {
@@ -18683,14 +18683,14 @@ const $schema = "http://json-schema.org/draft-07/schema#";
18683
18683
  const $id = "http://json-schema.org/draft-07/schema#";
18684
18684
  const title = "Core schema meta-schema";
18685
18685
  const definitions = { "schemaArray": { "type": "array", "minItems": 1, "items": { "$ref": "#" } }, "nonNegativeInteger": { "type": "integer", "minimum": 0 }, "nonNegativeIntegerDefault0": { "allOf": [{ "$ref": "#/definitions/nonNegativeInteger" }, { "default": 0 }] }, "simpleTypes": { "enum": ["array", "boolean", "integer", "null", "number", "object", "string"] }, "stringArray": { "type": "array", "items": { "type": "string" }, "uniqueItems": true, "default": [] } };
18686
- const type$P = ["object", "boolean"];
18686
+ const type$Q = ["object", "boolean"];
18687
18687
  const properties = { "$id": { "type": "string", "format": "uri-reference" }, "$schema": { "type": "string", "format": "uri" }, "$ref": { "type": "string", "format": "uri-reference" }, "$comment": { "type": "string" }, "title": { "type": "string" }, "description": { "type": "string" }, "default": true, "readOnly": { "type": "boolean", "default": false }, "examples": { "type": "array", "items": true }, "multipleOf": { "type": "number", "exclusiveMinimum": 0 }, "maximum": { "type": "number" }, "exclusiveMaximum": { "type": "number" }, "minimum": { "type": "number" }, "exclusiveMinimum": { "type": "number" }, "maxLength": { "$ref": "#/definitions/nonNegativeInteger" }, "minLength": { "$ref": "#/definitions/nonNegativeIntegerDefault0" }, "pattern": { "type": "string", "format": "regex" }, "additionalItems": { "$ref": "#" }, "items": { "anyOf": [{ "$ref": "#" }, { "$ref": "#/definitions/schemaArray" }], "default": true }, "maxItems": { "$ref": "#/definitions/nonNegativeInteger" }, "minItems": { "$ref": "#/definitions/nonNegativeIntegerDefault0" }, "uniqueItems": { "type": "boolean", "default": false }, "contains": { "$ref": "#" }, "maxProperties": { "$ref": "#/definitions/nonNegativeInteger" }, "minProperties": { "$ref": "#/definitions/nonNegativeIntegerDefault0" }, "required": { "$ref": "#/definitions/stringArray" }, "additionalProperties": { "$ref": "#" }, "definitions": { "type": "object", "additionalProperties": { "$ref": "#" }, "default": {} }, "properties": { "type": "object", "additionalProperties": { "$ref": "#" }, "default": {} }, "patternProperties": { "type": "object", "additionalProperties": { "$ref": "#" }, "propertyNames": { "format": "regex" }, "default": {} }, "dependencies": { "type": "object", "additionalProperties": { "anyOf": [{ "$ref": "#" }, { "$ref": "#/definitions/stringArray" }] } }, "propertyNames": { "$ref": "#" }, "const": true, "enum": { "type": "array", "items": true, "minItems": 1, "uniqueItems": true }, "type": { "anyOf": [{ "$ref": "#/definitions/simpleTypes" }, { "type": "array", "items": { "$ref": "#/definitions/simpleTypes" }, "minItems": 1, "uniqueItems": true }] }, "format": { "type": "string" }, "contentMediaType": { "type": "string" }, "contentEncoding": { "type": "string" }, "if": { "$ref": "#" }, "then": { "$ref": "#" }, "else": { "$ref": "#" }, "allOf": { "$ref": "#/definitions/schemaArray" }, "anyOf": { "$ref": "#/definitions/schemaArray" }, "oneOf": { "$ref": "#/definitions/schemaArray" }, "not": { "$ref": "#" } };
18688
18688
  const require$$3 = {
18689
18689
  $schema,
18690
18690
  $id,
18691
18691
  title,
18692
18692
  definitions,
18693
- type: type$P,
18693
+ type: type$Q,
18694
18694
  properties,
18695
18695
  "default": true
18696
18696
  };
@@ -45510,133 +45510,6 @@ function LocaleMarkdown(options) {
45510
45510
  )
45511
45511
  );
45512
45512
  }
45513
- const TrackCount = Number$.pipe(int(), positive());
45514
- const GridCoord = Number$.pipe(int(), positive());
45515
- const Corner = Tuple(GridCoord, GridCoord).annotations({
45516
- title: "Corner",
45517
- description: "[x, y] 网格线号(1 基)"
45518
- });
45519
- const Area = Tuple(Corner, Corner).pipe(filter((a) => {
45520
- if (a[1][0] <= a[0][0]) return "右下列线必须大于左上列线";
45521
- if (a[1][1] <= a[0][1]) return "右下行线必须大于左上行线";
45522
- return true;
45523
- })).annotations({
45524
- title: "Area",
45525
- description: "矩形区域:`[[x1, y1], [x2, y2]]`,左上 + 右下对角(终止线不含)"
45526
- });
45527
- const Align$1 = Literal2("start", "center", "end", "stretch").annotations({
45528
- title: "Align",
45529
- description: "网格项在单轴上的对齐方式;缺省等同于 stretch"
45530
- });
45531
- const Placement = Struct({
45532
- area: Area,
45533
- h: optional(Align$1.annotations({ title: "水平对齐", description: "水平轴对齐(justify-self)" })),
45534
- v: optional(Align$1.annotations({ title: "垂直对齐", description: "垂直轴对齐(align-self)" }))
45535
- }).annotations({
45536
- title: "Placement",
45537
- description: "块在某一布局中的位置与对齐"
45538
- });
45539
- const Layout = Struct({
45540
- columns: TrackCount.annotations({
45541
- title: "列数",
45542
- description: "总列数。每列等宽,渲染时展开为 `repeat(N, minmax(0, 1fr))` — 列会收缩以适配容器宽度"
45543
- }),
45544
- rows: optional(TrackCount.annotations({
45545
- title: "行数",
45546
- description: "总行数。每行等权,渲染时展开为 `repeat(N, minmax(0, 1fr))` — 在自然高度容器内等同于 `auto`"
45547
- })),
45548
- gap: optional(Number$.pipe(int(), nonNegative()).annotations({
45549
- title: "网格间距",
45550
- description: "非负整数;实际 CSS gap 为 `calc(n * 0.25rem)`。显式 `0` 表示无间距,未设置则取默认间距 4(即 `1rem`)"
45551
- })),
45552
- style: optional(String$.annotations({
45553
- title: "容器样式",
45554
- description: "容器的内联样式字符串"
45555
- })),
45556
- placements: Record({
45557
- key: String$,
45558
- value: Placement
45559
- }).annotations({
45560
- title: "位置",
45561
- description: "以块 `id` 为键的位置映射;未映射的块在该布局中不渲染"
45562
- })
45563
- }).annotations({
45564
- title: "Layout",
45565
- description: "一套完整的网格布局"
45566
- });
45567
- function configureMedia(configure) {
45568
- return (env) => {
45569
- env.registerFunction(
45570
- "media(string): bool",
45571
- (_self, q) => typeof window !== "undefined" && window.matchMedia(q).matches,
45572
- { description: "匹配 CSS 媒体查询,等价于 `window.matchMedia(q).matches`;SSR 上下文返回 `false`" }
45573
- );
45574
- configure(env);
45575
- };
45576
- }
45577
- function LayoutSet(configure) {
45578
- return Struct({
45579
- name: String$.annotations({
45580
- title: "名称",
45581
- description: "编辑器中区分不同布局的内部名称"
45582
- }),
45583
- media: optional(Expression({
45584
- configure: configureMedia(configure),
45585
- resultType: "bool"
45586
- }).annotations({
45587
- title: "匹配条件",
45588
- description: "返回 `bool` 的 CEL 表达式,挂载时一次性求值;空表示无条件匹配。可用 `media('(min-width: 1024px)')` 包装 CSS 媒体查询。"
45589
- })),
45590
- layout: Layout
45591
- }).annotations({
45592
- title: "LayoutSet",
45593
- description: "带匹配条件的布局集合项"
45594
- });
45595
- }
45596
- function validatePlacements(items2, layouts, label) {
45597
- const ids2 = new Set(items2.map((it) => it.id));
45598
- for (const [i, set3] of layouts.entries()) {
45599
- const nCols = set3.layout.columns;
45600
- const nRows = set3.layout.rows;
45601
- for (const [id2, placement] of Object.entries(set3.layout.placements)) {
45602
- if (!ids2.has(id2)) {
45603
- return `布局 #${i} (${set3.name}) 引用了不存在的${label} id: ${id2}`;
45604
- }
45605
- const [, [x2, y2]] = placement.area;
45606
- if (x2 > nCols + 1) {
45607
- return `布局 #${i} (${set3.name}) ${label} ${id2} 的列区域超出列定义(共 ${nCols} 列)`;
45608
- }
45609
- if (nRows !== void 0 && y2 > nRows + 1) {
45610
- return `布局 #${i} (${set3.name}) ${label} ${id2} 的行区域超出行定义(共 ${nRows} 行)`;
45611
- }
45612
- }
45613
- }
45614
- return true;
45615
- }
45616
- function Slot(BlockSchemaUnion, configure) {
45617
- return Struct({
45618
- blocks: Array$(BlockSchemaUnion).annotations({
45619
- title: "块",
45620
- description: "块列表;未绑定到任何布局的块不会被渲染"
45621
- }),
45622
- layouts: Array$(LayoutSet(configure)).pipe(minItems(1)).annotations({
45623
- title: "布局",
45624
- description: "按顺序排列的布局集合;挂载时按序求值各项 `media` CEL 表达式,使用第一个为 `true` 的布局(全部不匹配时回退到最后一项)"
45625
- })
45626
- }).pipe(filter((slot) => {
45627
- const items2 = slot.blocks.map((b) => ({ id: b.id }));
45628
- return validatePlacements(items2, slot.layouts, "块");
45629
- })).annotations({
45630
- title: "Slot",
45631
- description: "块与布局的组合:定义一组块以及它们在不同布局下的位置"
45632
- });
45633
- }
45634
- function defaultSlot() {
45635
- return {
45636
- blocks: [],
45637
- layouts: [{ name: "默认", layout: { columns: 1, placements: {} } }]
45638
- };
45639
- }
45640
45513
  var vue = { exports: {} };
45641
45514
  var vue_cjs_prod = {};
45642
45515
  var compilerDom_cjs_prod = {};
@@ -57245,12 +57118,12 @@ function requireLib() {
57245
57118
  }
57246
57119
  }
57247
57120
  finishPlaceholder(node, expectedNode) {
57248
- let placeholder = node;
57249
- if (!placeholder.expectedNode || !placeholder.type) {
57250
- placeholder = this.finishNode(placeholder, "Placeholder");
57121
+ let placeholder2 = node;
57122
+ if (!placeholder2.expectedNode || !placeholder2.type) {
57123
+ placeholder2 = this.finishNode(placeholder2, "Placeholder");
57251
57124
  }
57252
- placeholder.expectedNode = expectedNode;
57253
- return placeholder;
57125
+ placeholder2.expectedNode = expectedNode;
57126
+ return placeholder2;
57254
57127
  }
57255
57128
  getTokenFromCode(code3) {
57256
57129
  if (code3 === 37 && this.input.charCodeAt(this.state.pos + 1) === 37) {
@@ -57338,13 +57211,13 @@ function requireLib() {
57338
57211
  const type2 = isStatement ? "ClassDeclaration" : "ClassExpression";
57339
57212
  this.next();
57340
57213
  const oldStrict = this.state.strict;
57341
- const placeholder = this.parsePlaceholder("Identifier");
57342
- if (placeholder) {
57214
+ const placeholder2 = this.parsePlaceholder("Identifier");
57215
+ if (placeholder2) {
57343
57216
  if (this.match(81) || this.match(133) || this.match(5)) {
57344
- node.id = placeholder;
57217
+ node.id = placeholder2;
57345
57218
  } else if (optionalId || !isStatement) {
57346
57219
  node.id = null;
57347
- node.body = this.finishPlaceholder(placeholder, "ClassBody");
57220
+ node.body = this.finishPlaceholder(placeholder2, "ClassBody");
57348
57221
  return this.finishNode(node, type2);
57349
57222
  } else {
57350
57223
  throw this.raise(PlaceholderErrors.ClassNameIsRequired, this.state.startLoc);
@@ -57357,18 +57230,18 @@ function requireLib() {
57357
57230
  return this.finishNode(node, type2);
57358
57231
  }
57359
57232
  parseExport(node, decorators) {
57360
- const placeholder = this.parsePlaceholder("Identifier");
57361
- if (!placeholder) return super.parseExport(node, decorators);
57233
+ const placeholder2 = this.parsePlaceholder("Identifier");
57234
+ if (!placeholder2) return super.parseExport(node, decorators);
57362
57235
  const node2 = node;
57363
57236
  if (!this.isContextual(98) && !this.match(12)) {
57364
57237
  node2.specifiers = [];
57365
57238
  node2.source = null;
57366
- node2.declaration = this.finishPlaceholder(placeholder, "Declaration");
57239
+ node2.declaration = this.finishPlaceholder(placeholder2, "Declaration");
57367
57240
  return this.finishNode(node2, "ExportNamedDeclaration");
57368
57241
  }
57369
57242
  this.expectPlugin("exportDefaultFrom");
57370
57243
  const specifier = this.startNode();
57371
- specifier.exported = placeholder;
57244
+ specifier.exported = placeholder2;
57372
57245
  node2.specifiers = [this.finishNode(specifier, "ExportDefaultSpecifier")];
57373
57246
  return super.parseExport(node2, decorators);
57374
57247
  }
@@ -57401,16 +57274,16 @@ function requireLib() {
57401
57274
  node.specifiers = specifiers;
57402
57275
  }
57403
57276
  parseImport(node) {
57404
- const placeholder = this.parsePlaceholder("Identifier");
57405
- if (!placeholder) return super.parseImport(node);
57277
+ const placeholder2 = this.parsePlaceholder("Identifier");
57278
+ if (!placeholder2) return super.parseImport(node);
57406
57279
  node.specifiers = [];
57407
57280
  if (!this.isContextual(98) && !this.match(12)) {
57408
- node.source = this.finishPlaceholder(placeholder, "StringLiteral");
57281
+ node.source = this.finishPlaceholder(placeholder2, "StringLiteral");
57409
57282
  this.semicolon();
57410
57283
  return this.finishNode(node, "ImportDeclaration");
57411
57284
  }
57412
- const specifier = this.startNodeAtNode(placeholder);
57413
- specifier.local = placeholder;
57285
+ const specifier = this.startNodeAtNode(placeholder2);
57286
+ specifier.local = placeholder2;
57414
57287
  node.specifiers.push(this.finishNode(specifier, "ImportDefaultSpecifier"));
57415
57288
  if (this.eat(12)) {
57416
57289
  const hasStarImport = this.maybeParseStarImportSpecifier(node);
@@ -73378,9 +73251,9 @@ function requireRuntimeCore_cjs_prod() {
73378
73251
  queuePostRenderEffect(mountJob, parentSuspense);
73379
73252
  };
73380
73253
  if (n1 == null) {
73381
- const placeholder = n2.el = createText("");
73254
+ const placeholder2 = n2.el = createText("");
73382
73255
  const mainAnchor = n2.anchor = createText("");
73383
- insert(placeholder, container, anchor);
73256
+ insert(placeholder2, container, anchor);
73384
73257
  insert(mainAnchor, container, anchor);
73385
73258
  if (isTeleportDeferred(n2.props) || parentSuspense && parentSuspense.pendingBranch) {
73386
73259
  queuePendingMount(n2);
@@ -77380,9 +77253,9 @@ function requireRuntimeCore_cjs_prod() {
77380
77253
  if (instance.asyncDep) {
77381
77254
  parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect, optimized);
77382
77255
  if (!initialVNode.el) {
77383
- const placeholder = instance.subTree = createVNode(Comment);
77384
- processCommentNode(null, placeholder, container, anchor);
77385
- initialVNode.placeholder = placeholder.el;
77256
+ const placeholder2 = instance.subTree = createVNode(Comment);
77257
+ processCommentNode(null, placeholder2, container, anchor);
77258
+ initialVNode.placeholder = placeholder2.el;
77386
77259
  }
77387
77260
  } else {
77388
77261
  setupRenderEffect(
@@ -78664,7 +78537,7 @@ function requireRuntimeCore_cjs_prod() {
78664
78537
  if (hydratedEl) {
78665
78538
  vnode2.el = hydratedEl;
78666
78539
  }
78667
- const placeholder = !hydratedEl && instance.subTree.el;
78540
+ const placeholder2 = !hydratedEl && instance.subTree.el;
78668
78541
  setupRenderEffect(
78669
78542
  instance,
78670
78543
  vnode2,
@@ -78679,9 +78552,9 @@ function requireRuntimeCore_cjs_prod() {
78679
78552
  namespace,
78680
78553
  optimized2
78681
78554
  );
78682
- if (placeholder) {
78555
+ if (placeholder2) {
78683
78556
  vnode2.placeholder = null;
78684
- remove2(placeholder);
78557
+ remove2(placeholder2);
78685
78558
  }
78686
78559
  updateHOCHostEl(instance, vnode2.el);
78687
78560
  if (isInPendingSuspense && --suspense.deps === 0) {
@@ -81617,13 +81490,13 @@ function md(...args2) {
81617
81490
  const indent = (original.startsWith("\n") ? original.slice(1) : original).split("\n", 1)[0]?.match(/^(\s*)/)?.[1]?.length ?? 0;
81618
81491
  return original.trim().replaceAll("\\`", "`").split("\n").map((line) => line.replace(new RegExp(`^${String.raw`\s`.repeat(indent)}`), "")).join("\n");
81619
81492
  }
81620
- const type$O = "com.shwfed.actions.button.http.request.json.confirm";
81621
- const compatibilityDate$O = "2026-04-18";
81622
- const metadata$O = {
81493
+ const type$P = "com.shwfed.actions.button.http.request.json.confirm";
81494
+ const compatibilityDate$P = "2026-04-18";
81495
+ const metadata$P = {
81623
81496
  name: "网络请求(JSON + 确认)",
81624
81497
  icon: "fluent:shield-checkmark-20-regular"
81625
81498
  };
81626
- function schema$O(configure) {
81499
+ function schema$P(configure) {
81627
81500
  const CelHttpRequest = Expression({ configure, resultType: "HttpRequest" });
81628
81501
  const CelMessage = Expression({
81629
81502
  configure: (env) => {
@@ -81635,8 +81508,8 @@ function schema$O(configure) {
81635
81508
  resultType: "string"
81636
81509
  });
81637
81510
  return Struct({
81638
- type: Literal2(type$O),
81639
- compatibilityDate: Literal2(compatibilityDate$O),
81511
+ type: Literal2(type$P),
81512
+ compatibilityDate: Literal2(compatibilityDate$P),
81640
81513
  expression: CelHttpRequest.annotations({
81641
81514
  title: "请求",
81642
81515
  description: md`
@@ -81694,18 +81567,18 @@ function schema$O(configure) {
81694
81567
  }
81695
81568
  const __vite_glob_0_0$3 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
81696
81569
  __proto__: null,
81697
- compatibilityDate: compatibilityDate$O,
81698
- metadata: metadata$O,
81699
- schema: schema$O,
81700
- type: type$O
81570
+ compatibilityDate: compatibilityDate$P,
81571
+ metadata: metadata$P,
81572
+ schema: schema$P,
81573
+ type: type$P
81701
81574
  }, Symbol.toStringTag, { value: "Module" }));
81702
- const type$N = "com.shwfed.actions.button.http.request.json";
81703
- const compatibilityDate$N = "2026-04-18";
81704
- const metadata$N = {
81575
+ const type$O = "com.shwfed.actions.button.http.request.json";
81576
+ const compatibilityDate$O = "2026-04-18";
81577
+ const metadata$O = {
81705
81578
  name: "网络请求(JSON)",
81706
81579
  icon: "fluent:cloud-arrow-up-20-regular"
81707
81580
  };
81708
- function schema$N(configure) {
81581
+ function schema$O(configure) {
81709
81582
  const CelHttpRequest = Expression({ configure, resultType: "HttpRequest" });
81710
81583
  const CelMessage = Expression({
81711
81584
  configure: (env) => {
@@ -81717,8 +81590,8 @@ function schema$N(configure) {
81717
81590
  resultType: "string"
81718
81591
  });
81719
81592
  return Struct({
81720
- type: Literal2(type$N),
81721
- compatibilityDate: Literal2(compatibilityDate$N),
81593
+ type: Literal2(type$O),
81594
+ compatibilityDate: Literal2(compatibilityDate$O),
81722
81595
  expression: CelHttpRequest.annotations({
81723
81596
  title: "请求",
81724
81597
  description: md`
@@ -81764,21 +81637,21 @@ function schema$N(configure) {
81764
81637
  }
81765
81638
  const __vite_glob_0_1$3 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
81766
81639
  __proto__: null,
81767
- compatibilityDate: compatibilityDate$N,
81768
- metadata: metadata$N,
81769
- schema: schema$N,
81770
- type: type$N
81640
+ compatibilityDate: compatibilityDate$O,
81641
+ metadata: metadata$O,
81642
+ schema: schema$O,
81643
+ type: type$O
81771
81644
  }, Symbol.toStringTag, { value: "Module" }));
81772
- const type$M = "com.shwfed.actions.button.prototype";
81773
- const compatibilityDate$M = "2026-04-18";
81774
- const metadata$M = {
81645
+ const type$N = "com.shwfed.actions.button.prototype";
81646
+ const compatibilityDate$N = "2026-04-18";
81647
+ const metadata$N = {
81775
81648
  name: "原型",
81776
81649
  icon: "fluent:predictions-20-regular"
81777
81650
  };
81778
- function schema$M(_configure) {
81651
+ function schema$N(_configure) {
81779
81652
  return Struct({
81780
- type: Literal2(type$M),
81781
- compatibilityDate: Literal2(compatibilityDate$M)
81653
+ type: Literal2(type$N),
81654
+ compatibilityDate: Literal2(compatibilityDate$N)
81782
81655
  }).annotations({
81783
81656
  title: "PrototypeAction",
81784
81657
  description: "点击无副作用的原型按钮,可被一次性转换为其它类型"
@@ -81786,23 +81659,23 @@ function schema$M(_configure) {
81786
81659
  }
81787
81660
  const __vite_glob_0_2$3 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
81788
81661
  __proto__: null,
81789
- compatibilityDate: compatibilityDate$M,
81790
- metadata: metadata$M,
81791
- schema: schema$M,
81792
- type: type$M
81662
+ compatibilityDate: compatibilityDate$N,
81663
+ metadata: metadata$N,
81664
+ schema: schema$N,
81665
+ type: type$N
81793
81666
  }, Symbol.toStringTag, { value: "Module" }));
81794
- const type$L = "com.shwfed.actions.button.navigation";
81795
- const compatibilityDate$L = "2026-04-21";
81796
- const metadata$L = {
81667
+ const type$M = "com.shwfed.actions.button.navigation";
81668
+ const compatibilityDate$M = "2026-04-21";
81669
+ const metadata$M = {
81797
81670
  name: "导航",
81798
81671
  icon: "fluent:link-20-regular"
81799
81672
  };
81800
81673
  const Mode = Literal2("_self", "_blank");
81801
- function schema$L(configure) {
81674
+ function schema$M(configure) {
81802
81675
  const CelUrl = Expression({ configure, resultType: "string" });
81803
81676
  return Struct({
81804
- type: Literal2(type$L),
81805
- compatibilityDate: Literal2(compatibilityDate$L),
81677
+ type: Literal2(type$M),
81678
+ compatibilityDate: Literal2(compatibilityDate$M),
81806
81679
  url: CelUrl.annotations({
81807
81680
  title: "链接",
81808
81681
  description: "点击后将打开的链接,返回 `string`"
@@ -81818,11 +81691,138 @@ function schema$L(configure) {
81818
81691
  }
81819
81692
  const __vite_glob_0_3$3 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
81820
81693
  __proto__: null,
81821
- compatibilityDate: compatibilityDate$L,
81822
- metadata: metadata$L,
81823
- schema: schema$L,
81824
- type: type$L
81694
+ compatibilityDate: compatibilityDate$M,
81695
+ metadata: metadata$M,
81696
+ schema: schema$M,
81697
+ type: type$M
81825
81698
  }, Symbol.toStringTag, { value: "Module" }));
81699
+ const TrackCount = Number$.pipe(int(), positive());
81700
+ const GridCoord = Number$.pipe(int(), positive());
81701
+ const Corner = Tuple(GridCoord, GridCoord).annotations({
81702
+ title: "Corner",
81703
+ description: "[x, y] 网格线号(1 基)"
81704
+ });
81705
+ const Area = Tuple(Corner, Corner).pipe(filter((a) => {
81706
+ if (a[1][0] <= a[0][0]) return "右下列线必须大于左上列线";
81707
+ if (a[1][1] <= a[0][1]) return "右下行线必须大于左上行线";
81708
+ return true;
81709
+ })).annotations({
81710
+ title: "Area",
81711
+ description: "矩形区域:`[[x1, y1], [x2, y2]]`,左上 + 右下对角(终止线不含)"
81712
+ });
81713
+ const Align$1 = Literal2("start", "center", "end", "stretch").annotations({
81714
+ title: "Align",
81715
+ description: "网格项在单轴上的对齐方式;缺省等同于 stretch"
81716
+ });
81717
+ const Placement = Struct({
81718
+ area: Area,
81719
+ h: optional(Align$1.annotations({ title: "水平对齐", description: "水平轴对齐(justify-self)" })),
81720
+ v: optional(Align$1.annotations({ title: "垂直对齐", description: "垂直轴对齐(align-self)" }))
81721
+ }).annotations({
81722
+ title: "Placement",
81723
+ description: "块在某一布局中的位置与对齐"
81724
+ });
81725
+ const Layout = Struct({
81726
+ columns: TrackCount.annotations({
81727
+ title: "列数",
81728
+ description: "总列数。每列等宽,渲染时展开为 `repeat(N, minmax(0, 1fr))` — 列会收缩以适配容器宽度"
81729
+ }),
81730
+ rows: optional(TrackCount.annotations({
81731
+ title: "行数",
81732
+ description: "总行数。每行等权,渲染时展开为 `repeat(N, minmax(0, 1fr))` — 在自然高度容器内等同于 `auto`"
81733
+ })),
81734
+ gap: optional(Number$.pipe(int(), nonNegative()).annotations({
81735
+ title: "网格间距",
81736
+ description: "非负整数;实际 CSS gap 为 `calc(n * 0.25rem)`。显式 `0` 表示无间距,未设置则取默认间距 4(即 `1rem`)"
81737
+ })),
81738
+ style: optional(String$.annotations({
81739
+ title: "容器样式",
81740
+ description: "容器的内联样式字符串"
81741
+ })),
81742
+ placements: Record({
81743
+ key: String$,
81744
+ value: Placement
81745
+ }).annotations({
81746
+ title: "位置",
81747
+ description: "以块 `id` 为键的位置映射;未映射的块在该布局中不渲染"
81748
+ })
81749
+ }).annotations({
81750
+ title: "Layout",
81751
+ description: "一套完整的网格布局"
81752
+ });
81753
+ function configureMedia(configure) {
81754
+ return (env) => {
81755
+ env.registerFunction(
81756
+ "media(string): bool",
81757
+ (_self, q) => typeof window !== "undefined" && window.matchMedia(q).matches,
81758
+ { description: "匹配 CSS 媒体查询,等价于 `window.matchMedia(q).matches`;SSR 上下文返回 `false`" }
81759
+ );
81760
+ configure(env);
81761
+ };
81762
+ }
81763
+ function LayoutSet(configure) {
81764
+ return Struct({
81765
+ name: String$.annotations({
81766
+ title: "名称",
81767
+ description: "编辑器中区分不同布局的内部名称"
81768
+ }),
81769
+ media: optional(Expression({
81770
+ configure: configureMedia(configure),
81771
+ resultType: "bool"
81772
+ }).annotations({
81773
+ title: "匹配条件",
81774
+ description: "返回 `bool` 的 CEL 表达式,挂载时一次性求值;空表示无条件匹配。可用 `media('(min-width: 1024px)')` 包装 CSS 媒体查询。"
81775
+ })),
81776
+ layout: Layout
81777
+ }).annotations({
81778
+ title: "LayoutSet",
81779
+ description: "带匹配条件的布局集合项"
81780
+ });
81781
+ }
81782
+ function validatePlacements(items2, layouts, label) {
81783
+ const ids2 = new Set(items2.map((it) => it.id));
81784
+ for (const [i, set3] of layouts.entries()) {
81785
+ const nCols = set3.layout.columns;
81786
+ const nRows = set3.layout.rows;
81787
+ for (const [id2, placement] of Object.entries(set3.layout.placements)) {
81788
+ if (!ids2.has(id2)) {
81789
+ return `布局 #${i} (${set3.name}) 引用了不存在的${label} id: ${id2}`;
81790
+ }
81791
+ const [, [x2, y2]] = placement.area;
81792
+ if (x2 > nCols + 1) {
81793
+ return `布局 #${i} (${set3.name}) ${label} ${id2} 的列区域超出列定义(共 ${nCols} 列)`;
81794
+ }
81795
+ if (nRows !== void 0 && y2 > nRows + 1) {
81796
+ return `布局 #${i} (${set3.name}) ${label} ${id2} 的行区域超出行定义(共 ${nRows} 行)`;
81797
+ }
81798
+ }
81799
+ }
81800
+ return true;
81801
+ }
81802
+ function Slot(BlockSchemaUnion, configure) {
81803
+ return Struct({
81804
+ blocks: Array$(BlockSchemaUnion).annotations({
81805
+ title: "块",
81806
+ description: "块列表;未绑定到任何布局的块不会被渲染"
81807
+ }),
81808
+ layouts: Array$(LayoutSet(configure)).pipe(minItems(1)).annotations({
81809
+ title: "布局",
81810
+ description: "按顺序排列的布局集合;挂载时按序求值各项 `media` CEL 表达式,使用第一个为 `true` 的布局(全部不匹配时回退到最后一项)"
81811
+ })
81812
+ }).pipe(filter((slot) => {
81813
+ const items2 = slot.blocks.map((b) => ({ id: b.id }));
81814
+ return validatePlacements(items2, slot.layouts, "块");
81815
+ })).annotations({
81816
+ title: "Slot",
81817
+ description: "块与布局的组合:定义一组块以及它们在不同布局下的位置"
81818
+ });
81819
+ }
81820
+ function defaultSlot() {
81821
+ return {
81822
+ blocks: [],
81823
+ layouts: [{ name: "默认", layout: { columns: 1, placements: {} } }]
81824
+ };
81825
+ }
81826
81826
  const blockRefCache = /* @__PURE__ */ new WeakMap();
81827
81827
  function registerBlockRef(configure, ref2) {
81828
81828
  blockRefCache.set(configure, ref2);
@@ -81830,9 +81830,9 @@ function registerBlockRef(configure, ref2) {
81830
81830
  function lookupBlockRef(configure) {
81831
81831
  return blockRefCache.get(configure);
81832
81832
  }
81833
- const type$K = "com.shwfed.actions.button.modal.layout";
81834
- const compatibilityDate$K = "2026-05-11";
81835
- const metadata$K = {
81833
+ const type$L = "com.shwfed.actions.button.modal.layout";
81834
+ const compatibilityDate$L = "2026-05-11";
81835
+ const metadata$L = {
81836
81836
  name: "模态窗口",
81837
81837
  icon: "fluent:window-edit-20-regular",
81838
81838
  drillable: true,
@@ -81843,12 +81843,12 @@ const metadata$K = {
81843
81843
  const CssLength = String$.pipe(
81844
81844
  filter((s) => s.trim().length > 0 || "不能为空字符串")
81845
81845
  );
81846
- function schema$K(configure) {
81846
+ function schema$L(configure) {
81847
81847
  const blockUnion = lookupBlockRef(configure) ?? Unknown;
81848
81848
  const ModalSlot = Slot(blockUnion, configure);
81849
81849
  return Struct({
81850
- type: Literal2(type$K),
81851
- compatibilityDate: Literal2(compatibilityDate$K),
81850
+ type: Literal2(type$L),
81851
+ compatibilityDate: Literal2(compatibilityDate$L),
81852
81852
  modalTitle: optional(Locale.annotations({
81853
81853
  title: "弹窗标题",
81854
81854
  description: "弹窗顶部展示的本地化标题,支持行内 Markdown;不填则回退使用按钮自身的名称"
@@ -81877,22 +81877,22 @@ function defaultBody$6() {
81877
81877
  }
81878
81878
  const __vite_glob_0_4$3 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
81879
81879
  __proto__: null,
81880
- compatibilityDate: compatibilityDate$K,
81880
+ compatibilityDate: compatibilityDate$L,
81881
81881
  defaultBody: defaultBody$6,
81882
- metadata: metadata$K,
81883
- schema: schema$K,
81884
- type: type$K
81882
+ metadata: metadata$L,
81883
+ schema: schema$L,
81884
+ type: type$L
81885
81885
  }, Symbol.toStringTag, { value: "Module" }));
81886
- const type$J = "com.shwfed.actions.button.event.dispatch";
81887
- const compatibilityDate$J = "2026-05-15";
81888
- const metadata$J = {
81886
+ const type$K = "com.shwfed.actions.button.event.dispatch";
81887
+ const compatibilityDate$K = "2026-05-15";
81888
+ const metadata$K = {
81889
81889
  name: "触发事件",
81890
81890
  icon: "fluent:flash-20-regular"
81891
81891
  };
81892
- function schema$J(_configure) {
81892
+ function schema$K(_configure) {
81893
81893
  return Struct({
81894
- type: Literal2(type$J),
81895
- compatibilityDate: Literal2(compatibilityDate$J),
81894
+ type: Literal2(type$K),
81895
+ compatibilityDate: Literal2(compatibilityDate$K),
81896
81896
  // This button's entire behaviour: the op-requests it bubbles up the
81897
81897
  // component tree on click. Stored on the button itself — there is no
81898
81898
  // host-level trigger field any more.
@@ -81903,14 +81903,14 @@ function schema$J(_configure) {
81903
81903
  }
81904
81904
  const __vite_glob_0_5$3 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
81905
81905
  __proto__: null,
81906
- compatibilityDate: compatibilityDate$J,
81907
- metadata: metadata$J,
81908
- schema: schema$J,
81909
- type: type$J
81906
+ compatibilityDate: compatibilityDate$K,
81907
+ metadata: metadata$K,
81908
+ schema: schema$K,
81909
+ type: type$K
81910
81910
  }, Symbol.toStringTag, { value: "Module" }));
81911
- const type$I = "com.shwfed.actions.button.http.download";
81912
- const compatibilityDate$I = "2026-05-21";
81913
- const metadata$I = {
81911
+ const type$J = "com.shwfed.actions.button.http.download";
81912
+ const compatibilityDate$J = "2026-05-21";
81913
+ const metadata$J = {
81914
81914
  name: "下载文件",
81915
81915
  icon: "fluent:arrow-download-20-regular"
81916
81916
  };
@@ -81925,13 +81925,13 @@ function configureWithJson$2(configure) {
81925
81925
  env.registerVariable("json", JSON_VAR$2.type, { description: JSON_VAR$2.description });
81926
81926
  };
81927
81927
  }
81928
- function schema$I(configure) {
81928
+ function schema$J(configure) {
81929
81929
  const CelHttpRequest = Expression({ configure, resultType: "HttpRequest" });
81930
81930
  const CelDownloadRequest = Expression({ configure: configureWithJson$2(configure), resultType: "HttpRequest" });
81931
81931
  const CelMessage = Expression({ configure: configureWithJson$2(configure), resultType: "string" });
81932
81932
  return Struct({
81933
- type: Literal2(type$I),
81934
- compatibilityDate: Literal2(compatibilityDate$I),
81933
+ type: Literal2(type$J),
81934
+ compatibilityDate: Literal2(compatibilityDate$J),
81935
81935
  template: Struct({
81936
81936
  request: CelHttpRequest.annotations({
81937
81937
  title: "请求",
@@ -81994,25 +81994,25 @@ function schema$I(configure) {
81994
81994
  const __vite_glob_0_6$2 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
81995
81995
  __proto__: null,
81996
81996
  JSON_VAR: JSON_VAR$2,
81997
- compatibilityDate: compatibilityDate$I,
81998
- metadata: metadata$I,
81999
- schema: schema$I,
82000
- type: type$I
81997
+ compatibilityDate: compatibilityDate$J,
81998
+ metadata: metadata$J,
81999
+ schema: schema$J,
82000
+ type: type$J
82001
82001
  }, Symbol.toStringTag, { value: "Module" }));
82002
- const type$H = "com.shwfed.actions.item.markdown";
82003
- const compatibilityDate$H = "2026-05-21";
82004
- const metadata$H = {
82002
+ const type$I = "com.shwfed.actions.item.markdown";
82003
+ const compatibilityDate$I = "2026-05-21";
82004
+ const metadata$I = {
82005
82005
  name: "内联 Markdown",
82006
82006
  icon: "fluent:markdown-20-regular"
82007
82007
  };
82008
- function schema$H(_configure) {
82008
+ function schema$I(_configure) {
82009
82009
  return Struct({
82010
82010
  id: UUID.annotations({ description: "Markdown 项唯一标识" }),
82011
82011
  // Present when the item sits at group level; absent when it lives as a
82012
82012
  // dropdown sub-item (the parent is the dropdown itself).
82013
82013
  groupId: optional(UUID.annotations({ description: "所属按钮组标识" })),
82014
- type: Literal2(type$H),
82015
- compatibilityDate: Literal2(compatibilityDate$H),
82014
+ type: Literal2(type$I),
82015
+ compatibilityDate: Literal2(compatibilityDate$I),
82016
82016
  name: String$.annotations({
82017
82017
  title: "内部名称",
82018
82018
  description: "仅用于编辑器内识别该 Markdown 项,不会展示给最终用户"
@@ -82028,10 +82028,10 @@ function schema$H(_configure) {
82028
82028
  }
82029
82029
  const __vite_glob_3_0 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
82030
82030
  __proto__: null,
82031
- compatibilityDate: compatibilityDate$H,
82032
- metadata: metadata$H,
82033
- schema: schema$H,
82034
- type: type$H
82031
+ compatibilityDate: compatibilityDate$I,
82032
+ metadata: metadata$I,
82033
+ schema: schema$I,
82034
+ type: type$I
82035
82035
  }, Symbol.toStringTag, { value: "Module" }));
82036
82036
  function defineRegistry(options) {
82037
82037
  const {
@@ -82175,7 +82175,9 @@ const BUTTONS = registry$3.ENTRIES.map((e) => ({
82175
82175
  ...e.deprecationNote !== void 0 ? { deprecationNote: e.deprecationNote } : {}
82176
82176
  }));
82177
82177
  function allButtonSchemas(configure) {
82178
- return BUTTONS.map((entry) => entry.schema(configure));
82178
+ return BUTTONS.map((entry) => entry.schema(configure).annotations({
82179
+ identifier: `${entry.type}@${entry.compatibilityDate}`
82180
+ }));
82179
82181
  }
82180
82182
  const itemSchemaModules = /* @__PURE__ */ Object.assign({
82181
82183
  "../items/2026-05-21/com.shwfed.actions.item.markdown/schema.ts": __vite_glob_3_0
@@ -82214,7 +82216,9 @@ const ITEMS = itemRegistry.ENTRIES.map((e) => ({
82214
82216
  runtime: e.runtime
82215
82217
  }));
82216
82218
  function allItemSchemas(configure) {
82217
- return ITEMS.map((entry) => entry.schema(configure));
82219
+ return ITEMS.map((entry) => entry.schema(configure).annotations({
82220
+ identifier: `${entry.type}@${entry.compatibilityDate}`
82221
+ }));
82218
82222
  }
82219
82223
  const KIND$3 = "shwfed.component.action";
82220
82224
  const Variant = Literal2("default", "primary", "destructive", "ghost", "link").annotations({
@@ -82396,20 +82400,20 @@ function defaultActionsConfig() {
82396
82400
  items: []
82397
82401
  };
82398
82402
  }
82399
- const type$G = "com.shwfed.block.actions";
82400
- const compatibilityDate$G = "2026-05-06";
82401
- const metadata$G = {
82403
+ const type$H = "com.shwfed.block.actions";
82404
+ const compatibilityDate$H = "2026-05-06";
82405
+ const metadata$H = {
82402
82406
  name: "操作按钮",
82403
82407
  icon: "fluent:cursor-click-20-regular",
82404
82408
  w: { initial: 8, min: 8, max: Infinity },
82405
82409
  h: { initial: 2, min: 2, max: Infinity }
82406
82410
  };
82407
- function schema$G(configure, _blockRef) {
82411
+ function schema$H(configure, _blockRef) {
82408
82412
  const ActionsSchema = ActionsConfig(configure);
82409
82413
  return Struct({
82410
82414
  id: UUID.annotations({ description: "块唯一标识" }),
82411
- type: tag(type$G),
82412
- compatibilityDate: tag(compatibilityDate$G),
82415
+ type: tag(type$H),
82416
+ compatibilityDate: tag(compatibilityDate$H),
82413
82417
  actions: ActionsSchema.annotations({
82414
82418
  title: "操作按钮配置",
82415
82419
  description: "内嵌的 Actions 组件配置"
@@ -82424,11 +82428,11 @@ function defaultBody$5() {
82424
82428
  }
82425
82429
  const __vite_glob_0_0$2 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
82426
82430
  __proto__: null,
82427
- compatibilityDate: compatibilityDate$G,
82431
+ compatibilityDate: compatibilityDate$H,
82428
82432
  defaultBody: defaultBody$5,
82429
- metadata: metadata$G,
82430
- schema: schema$G,
82431
- type: type$G
82433
+ metadata: metadata$H,
82434
+ schema: schema$H,
82435
+ type: type$H
82432
82436
  }, Symbol.toStringTag, { value: "Module" }));
82433
82437
  function commonFieldFields(configure) {
82434
82438
  const CelBool = Expression({ configure, resultType: "bool" });
@@ -82475,18 +82479,18 @@ function derivedField(configure, resultType) {
82475
82479
  })
82476
82480
  );
82477
82481
  }
82478
- const type$F = "com.shwfed.form.field.markdown";
82479
- const compatibilityDate$F = "2026-04-22";
82480
- const metadata$F = {
82482
+ const type$G = "com.shwfed.form.field.markdown";
82483
+ const compatibilityDate$G = "2026-04-22";
82484
+ const metadata$G = {
82481
82485
  name: "Markdown",
82482
82486
  icon: "fluent:markdown-20-regular",
82483
82487
  w: { initial: 8, min: 2, max: Infinity },
82484
82488
  h: { initial: 2, min: 2, max: Infinity }
82485
82489
  };
82486
- function schema$F(configure) {
82490
+ function schema$G(configure) {
82487
82491
  return Struct({
82488
- type: Literal2(type$F),
82489
- compatibilityDate: Literal2(compatibilityDate$F),
82492
+ type: Literal2(type$G),
82493
+ compatibilityDate: Literal2(compatibilityDate$G),
82490
82494
  ...commonFieldFields(configure),
82491
82495
  content: Locale.annotations({
82492
82496
  title: "内容",
@@ -82499,24 +82503,24 @@ function schema$F(configure) {
82499
82503
  }
82500
82504
  const __vite_glob_0_0$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
82501
82505
  __proto__: null,
82502
- compatibilityDate: compatibilityDate$F,
82503
- metadata: metadata$F,
82504
- schema: schema$F,
82505
- type: type$F
82506
+ compatibilityDate: compatibilityDate$G,
82507
+ metadata: metadata$G,
82508
+ schema: schema$G,
82509
+ type: type$G
82506
82510
  }, Symbol.toStringTag, { value: "Module" }));
82507
- const type$E = "com.shwfed.form.field.text";
82508
- const compatibilityDate$E = "2026-04-22";
82509
- const metadata$E = {
82511
+ const type$F = "com.shwfed.form.field.text";
82512
+ const compatibilityDate$F = "2026-04-22";
82513
+ const metadata$F = {
82510
82514
  name: "文本输入",
82511
82515
  icon: "fluent:text-field-20-regular",
82512
82516
  w: { initial: 8, min: 4, max: Infinity },
82513
82517
  h: { initial: 2, min: 2, max: 2 }
82514
82518
  };
82515
- function schema$E(configure) {
82519
+ function schema$F(configure) {
82516
82520
  const CelBool = Expression({ configure, resultType: "bool" });
82517
82521
  return Struct({
82518
- type: Literal2(type$E),
82519
- compatibilityDate: Literal2(compatibilityDate$E),
82522
+ type: Literal2(type$F),
82523
+ compatibilityDate: Literal2(compatibilityDate$F),
82520
82524
  ...commonFieldFields(configure),
82521
82525
  label: optional(Locale.annotations({
82522
82526
  title: "标签",
@@ -82551,24 +82555,24 @@ function schema$E(configure) {
82551
82555
  }
82552
82556
  const __vite_glob_0_1$2 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
82553
82557
  __proto__: null,
82554
- compatibilityDate: compatibilityDate$E,
82555
- metadata: metadata$E,
82556
- schema: schema$E,
82557
- type: type$E
82558
+ compatibilityDate: compatibilityDate$F,
82559
+ metadata: metadata$F,
82560
+ schema: schema$F,
82561
+ type: type$F
82558
82562
  }, Symbol.toStringTag, { value: "Module" }));
82559
- const type$D = "com.shwfed.form.field.textarea";
82560
- const compatibilityDate$D = "2026-04-22";
82561
- const metadata$D = {
82563
+ const type$E = "com.shwfed.form.field.textarea";
82564
+ const compatibilityDate$E = "2026-04-22";
82565
+ const metadata$E = {
82562
82566
  name: "多行文本输入",
82563
82567
  icon: "fluent:text-description-20-regular",
82564
82568
  w: { initial: 8, min: 4, max: Infinity },
82565
82569
  h: { initial: 3, min: 2, max: Infinity, grow: true }
82566
82570
  };
82567
- function schema$D(configure) {
82571
+ function schema$E(configure) {
82568
82572
  const CelBool = Expression({ configure, resultType: "bool" });
82569
82573
  return Struct({
82570
- type: Literal2(type$D),
82571
- compatibilityDate: Literal2(compatibilityDate$D),
82574
+ type: Literal2(type$E),
82575
+ compatibilityDate: Literal2(compatibilityDate$E),
82572
82576
  ...commonFieldFields(configure),
82573
82577
  label: optional(Locale.annotations({
82574
82578
  title: "标签",
@@ -82607,25 +82611,25 @@ function schema$D(configure) {
82607
82611
  }
82608
82612
  const __vite_glob_0_2$2 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
82609
82613
  __proto__: null,
82610
- compatibilityDate: compatibilityDate$D,
82611
- metadata: metadata$D,
82612
- schema: schema$D,
82613
- type: type$D
82614
+ compatibilityDate: compatibilityDate$E,
82615
+ metadata: metadata$E,
82616
+ schema: schema$E,
82617
+ type: type$E
82614
82618
  }, Symbol.toStringTag, { value: "Module" }));
82615
- const type$C = "com.shwfed.form.field.actions";
82616
- const compatibilityDate$C = "2026-04-24";
82617
- const metadata$C = {
82619
+ const type$D = "com.shwfed.form.field.actions";
82620
+ const compatibilityDate$D = "2026-04-24";
82621
+ const metadata$D = {
82618
82622
  name: "操作",
82619
82623
  icon: "fluent:cursor-click-20-regular",
82620
82624
  w: { initial: 8, min: 4, max: Infinity },
82621
82625
  h: { initial: 2, min: 2, max: Infinity }
82622
82626
  };
82623
- function schema$C(configure) {
82627
+ function schema$D(configure) {
82624
82628
  const { fields: actionFields } = ActionSchemaFields(configure);
82625
82629
  const { size: _size, groups, items: items2, ...rest } = actionFields;
82626
82630
  return Struct({
82627
- type: Literal2(type$C),
82628
- compatibilityDate: Literal2(compatibilityDate$C),
82631
+ type: Literal2(type$D),
82632
+ compatibilityDate: Literal2(compatibilityDate$D),
82629
82633
  ...commonFieldFields(configure),
82630
82634
  ...rest,
82631
82635
  // Form's add-field factory creates new fields with only { type, compatibilityDate, id },
@@ -82639,14 +82643,14 @@ function schema$C(configure) {
82639
82643
  }
82640
82644
  const __vite_glob_0_3$2 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
82641
82645
  __proto__: null,
82642
- compatibilityDate: compatibilityDate$C,
82643
- metadata: metadata$C,
82644
- schema: schema$C,
82645
- type: type$C
82646
+ compatibilityDate: compatibilityDate$D,
82647
+ metadata: metadata$D,
82648
+ schema: schema$D,
82649
+ type: type$D
82646
82650
  }, Symbol.toStringTag, { value: "Module" }));
82647
- const type$B = "com.shwfed.form.field.combobox.single";
82648
- const compatibilityDate$B = "2026-04-24";
82649
- const metadata$B = {
82651
+ const type$C = "com.shwfed.form.field.combobox.single";
82652
+ const compatibilityDate$C = "2026-04-24";
82653
+ const metadata$C = {
82650
82654
  name: "下拉单选",
82651
82655
  icon: "fluent:chevron-down-20-regular",
82652
82656
  w: { initial: 8, min: 4, max: Infinity },
@@ -82659,14 +82663,14 @@ function configureWithOption$1(configure) {
82659
82663
  };
82660
82664
  }
82661
82665
  const isListType$2 = (actual) => actual === "dyn" || actual.startsWith("list");
82662
- function schema$B(configure) {
82666
+ function schema$C(configure) {
82663
82667
  const CelBool = Expression({ configure, resultType: "bool" });
82664
82668
  const CelOptions = Expression({ configure, resultType: isListType$2 });
82665
82669
  const CelOptionValue = Expression({ configure: configureWithOption$1(configure), resultType: "dyn" });
82666
82670
  const LocaleOptionLabel = LocaleMarkdown({ configure: configureWithOption$1(configure) });
82667
82671
  return Struct({
82668
- type: Literal2(type$B),
82669
- compatibilityDate: Literal2(compatibilityDate$B),
82672
+ type: Literal2(type$C),
82673
+ compatibilityDate: Literal2(compatibilityDate$C),
82670
82674
  ...commonFieldFields(configure),
82671
82675
  label: optional(Locale.annotations({
82672
82676
  title: "标签",
@@ -82713,14 +82717,14 @@ function schema$B(configure) {
82713
82717
  }
82714
82718
  const __vite_glob_0_4$2 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
82715
82719
  __proto__: null,
82716
- compatibilityDate: compatibilityDate$B,
82717
- metadata: metadata$B,
82718
- schema: schema$B,
82719
- type: type$B
82720
+ compatibilityDate: compatibilityDate$C,
82721
+ metadata: metadata$C,
82722
+ schema: schema$C,
82723
+ type: type$C
82720
82724
  }, Symbol.toStringTag, { value: "Module" }));
82721
- const type$A = "com.shwfed.form.field.date";
82722
- const compatibilityDate$A = "2026-04-27";
82723
- const metadata$A = {
82725
+ const type$B = "com.shwfed.form.field.date";
82726
+ const compatibilityDate$B = "2026-04-27";
82727
+ const metadata$B = {
82724
82728
  name: "日期",
82725
82729
  icon: "fluent:calendar-ltr-20-regular",
82726
82730
  w: { initial: 8, min: 4, max: Infinity },
@@ -82742,12 +82746,12 @@ function presetSchema$3(configure) {
82742
82746
  title: "DateFieldPreset"
82743
82747
  });
82744
82748
  }
82745
- function schema$A(configure) {
82749
+ function schema$B(configure) {
82746
82750
  const CelBool = Expression({ configure, resultType: "bool" });
82747
82751
  const Preset = presetSchema$3(configure);
82748
82752
  return Struct({
82749
- type: Literal2(type$A),
82750
- compatibilityDate: Literal2(compatibilityDate$A),
82753
+ type: Literal2(type$B),
82754
+ compatibilityDate: Literal2(compatibilityDate$B),
82751
82755
  ...commonFieldFields(configure),
82752
82756
  label: optional(Locale.annotations({
82753
82757
  title: "标签",
@@ -82794,14 +82798,14 @@ function schema$A(configure) {
82794
82798
  }
82795
82799
  const __vite_glob_0_5$2 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
82796
82800
  __proto__: null,
82797
- compatibilityDate: compatibilityDate$A,
82798
- metadata: metadata$A,
82801
+ compatibilityDate: compatibilityDate$B,
82802
+ metadata: metadata$B,
82799
82803
  presetSchema: presetSchema$3,
82800
- schema: schema$A,
82801
- type: type$A
82804
+ schema: schema$B,
82805
+ type: type$B
82802
82806
  }, Symbol.toStringTag, { value: "Module" }));
82803
- const type$z = "com.shwfed.form.field.daterange";
82804
- const compatibilityDate$z = "2026-04-27";
82807
+ const type$A = "com.shwfed.form.field.daterange";
82808
+ const compatibilityDate$A = "2026-04-27";
82805
82809
  const BindingPath$3 = String$.pipe(minLength(1));
82806
82810
  const SplitBinding$3 = Tuple(BindingPath$3, BindingPath$3).pipe(
82807
82811
  filter(([a, b]) => a !== b, {
@@ -82812,7 +82816,7 @@ const bindingSchema$3 = Union2(BindingPath$3, SplitBinding$3).annotations({
82812
82816
  title: "绑定路径",
82813
82817
  description: "写入表单状态的 `dot-prop` 路径;填写单个路径时写入 `[start, end]` 字符串数组,例如 `event.range`;填写 `[起始路径, 结束路径]` 元组时分别写入两端;留空则为非受控字段"
82814
82818
  });
82815
- const metadata$z = {
82819
+ const metadata$A = {
82816
82820
  name: "日期范围",
82817
82821
  icon: "fluent:calendar-arrow-right-20-regular",
82818
82822
  w: { initial: 10, min: 10, max: Infinity },
@@ -82838,12 +82842,12 @@ function presetSchema$2(configure) {
82838
82842
  title: "DateRangeFieldPreset"
82839
82843
  });
82840
82844
  }
82841
- function schema$z(configure) {
82845
+ function schema$A(configure) {
82842
82846
  const CelBool = Expression({ configure, resultType: "bool" });
82843
82847
  const Preset = presetSchema$2(configure);
82844
82848
  return Struct({
82845
- type: Literal2(type$z),
82846
- compatibilityDate: Literal2(compatibilityDate$z),
82849
+ type: Literal2(type$A),
82850
+ compatibilityDate: Literal2(compatibilityDate$A),
82847
82851
  ...commonFieldFields(configure),
82848
82852
  label: optional(Locale.annotations({
82849
82853
  title: "标签",
@@ -82897,21 +82901,21 @@ function schema$z(configure) {
82897
82901
  description: "日期范围选择输入"
82898
82902
  });
82899
82903
  }
82900
- function defaults$6() {
82904
+ function defaults$7() {
82901
82905
  return { rangeSeparatorIcon: "fluent:arrow-right-20-regular" };
82902
82906
  }
82903
82907
  const __vite_glob_0_6$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
82904
82908
  __proto__: null,
82905
- compatibilityDate: compatibilityDate$z,
82906
- defaults: defaults$6,
82907
- metadata: metadata$z,
82909
+ compatibilityDate: compatibilityDate$A,
82910
+ defaults: defaults$7,
82911
+ metadata: metadata$A,
82908
82912
  presetSchema: presetSchema$2,
82909
- schema: schema$z,
82910
- type: type$z
82913
+ schema: schema$A,
82914
+ type: type$A
82911
82915
  }, Symbol.toStringTag, { value: "Module" }));
82912
- const type$y = "com.shwfed.form.field.datetime";
82913
- const compatibilityDate$y = "2026-04-27";
82914
- const metadata$y = {
82916
+ const type$z = "com.shwfed.form.field.datetime";
82917
+ const compatibilityDate$z = "2026-04-27";
82918
+ const metadata$z = {
82915
82919
  name: "日期时间",
82916
82920
  icon: "fluent:calendar-clock-20-regular",
82917
82921
  w: { initial: 8, min: 4, max: Infinity },
@@ -82943,12 +82947,12 @@ function presetSchema$1(configure) {
82943
82947
  title: "DateTimeFieldPreset"
82944
82948
  });
82945
82949
  }
82946
- function schema$y(configure) {
82950
+ function schema$z(configure) {
82947
82951
  const CelBool = Expression({ configure, resultType: "bool" });
82948
82952
  const Preset = presetSchema$1(configure);
82949
82953
  return Struct({
82950
- type: Literal2(type$y),
82951
- compatibilityDate: Literal2(compatibilityDate$y),
82954
+ type: Literal2(type$z),
82955
+ compatibilityDate: Literal2(compatibilityDate$z),
82952
82956
  ...commonFieldFields(configure),
82953
82957
  label: optional(Locale.annotations({
82954
82958
  title: "标签",
@@ -83006,14 +83010,14 @@ const __vite_glob_0_7$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.d
83006
83010
  HOUR_CYCLE_OPTIONS: HOUR_CYCLE_OPTIONS$3,
83007
83011
  TIME_GRANULARITIES: TIME_GRANULARITIES$3,
83008
83012
  TIME_GRANULARITY_OPTIONS: TIME_GRANULARITY_OPTIONS$3,
83009
- compatibilityDate: compatibilityDate$y,
83010
- metadata: metadata$y,
83013
+ compatibilityDate: compatibilityDate$z,
83014
+ metadata: metadata$z,
83011
83015
  presetSchema: presetSchema$1,
83012
- schema: schema$y,
83013
- type: type$y
83016
+ schema: schema$z,
83017
+ type: type$z
83014
83018
  }, Symbol.toStringTag, { value: "Module" }));
83015
- const type$x = "com.shwfed.form.field.datetimerange";
83016
- const compatibilityDate$x = "2026-04-27";
83019
+ const type$y = "com.shwfed.form.field.datetimerange";
83020
+ const compatibilityDate$y = "2026-04-27";
83017
83021
  const BindingPath$2 = String$.pipe(minLength(1));
83018
83022
  const SplitBinding$2 = Tuple(BindingPath$2, BindingPath$2).pipe(
83019
83023
  filter(([a, b]) => a !== b, {
@@ -83024,7 +83028,7 @@ const bindingSchema$2 = Union2(BindingPath$2, SplitBinding$2).annotations({
83024
83028
  title: "绑定路径",
83025
83029
  description: "写入表单状态的 `dot-prop` 路径;填写单个路径时写入 `[start, end]` 字符串数组,例如 `event.range`;填写 `[起始路径, 结束路径]` 元组时分别写入两端;留空则为非受控字段"
83026
83030
  });
83027
- const metadata$x = {
83031
+ const metadata$y = {
83028
83032
  name: "日期时间范围",
83029
83033
  icon: "fluent:calendar-clock-20-regular",
83030
83034
  w: { initial: 14, min: 14, max: Infinity },
@@ -83060,12 +83064,12 @@ function presetSchema(configure) {
83060
83064
  title: "DateTimeRangeFieldPreset"
83061
83065
  });
83062
83066
  }
83063
- function schema$x(configure) {
83067
+ function schema$y(configure) {
83064
83068
  const CelBool = Expression({ configure, resultType: "bool" });
83065
83069
  const Preset = presetSchema(configure);
83066
83070
  return Struct({
83067
- type: Literal2(type$x),
83068
- compatibilityDate: Literal2(compatibilityDate$x),
83071
+ type: Literal2(type$y),
83072
+ compatibilityDate: Literal2(compatibilityDate$y),
83069
83073
  ...commonFieldFields(configure),
83070
83074
  label: optional(Locale.annotations({
83071
83075
  title: "标签",
@@ -83127,7 +83131,7 @@ function schema$x(configure) {
83127
83131
  description: "日期时间范围选择输入"
83128
83132
  });
83129
83133
  }
83130
- function defaults$5() {
83134
+ function defaults$6() {
83131
83135
  return { rangeSeparatorIcon: "fluent:arrow-right-20-regular" };
83132
83136
  }
83133
83137
  const __vite_glob_0_8$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
@@ -83135,16 +83139,16 @@ const __vite_glob_0_8$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.d
83135
83139
  HOUR_CYCLE_OPTIONS: HOUR_CYCLE_OPTIONS$2,
83136
83140
  TIME_GRANULARITIES: TIME_GRANULARITIES$2,
83137
83141
  TIME_GRANULARITY_OPTIONS: TIME_GRANULARITY_OPTIONS$2,
83138
- compatibilityDate: compatibilityDate$x,
83139
- defaults: defaults$5,
83140
- metadata: metadata$x,
83142
+ compatibilityDate: compatibilityDate$y,
83143
+ defaults: defaults$6,
83144
+ metadata: metadata$y,
83141
83145
  presetSchema,
83142
- schema: schema$x,
83143
- type: type$x
83146
+ schema: schema$y,
83147
+ type: type$y
83144
83148
  }, Symbol.toStringTag, { value: "Module" }));
83145
- const type$w = "com.shwfed.form.field.time";
83146
- const compatibilityDate$w = "2026-04-27";
83147
- const metadata$w = {
83149
+ const type$x = "com.shwfed.form.field.time";
83150
+ const compatibilityDate$x = "2026-04-27";
83151
+ const metadata$x = {
83148
83152
  name: "时间",
83149
83153
  icon: "fluent:clock-20-regular",
83150
83154
  w: { initial: 8, min: 4, max: Infinity },
@@ -83160,11 +83164,11 @@ const HOUR_CYCLE_OPTIONS$1 = [
83160
83164
  { value: 24, label: "24 小时制" },
83161
83165
  { value: 12, label: "12 小时制" }
83162
83166
  ];
83163
- function schema$w(configure) {
83167
+ function schema$x(configure) {
83164
83168
  const CelBool = Expression({ configure, resultType: "bool" });
83165
83169
  return Struct({
83166
- type: Literal2(type$w),
83167
- compatibilityDate: Literal2(compatibilityDate$w),
83170
+ type: Literal2(type$x),
83171
+ compatibilityDate: Literal2(compatibilityDate$x),
83168
83172
  ...commonFieldFields(configure),
83169
83173
  label: optional(Locale.annotations({
83170
83174
  title: "标签",
@@ -83210,13 +83214,13 @@ const __vite_glob_0_9$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.d
83210
83214
  HOUR_CYCLE_OPTIONS: HOUR_CYCLE_OPTIONS$1,
83211
83215
  TIME_GRANULARITIES: TIME_GRANULARITIES$1,
83212
83216
  TIME_GRANULARITY_OPTIONS: TIME_GRANULARITY_OPTIONS$1,
83213
- compatibilityDate: compatibilityDate$w,
83214
- metadata: metadata$w,
83215
- schema: schema$w,
83216
- type: type$w
83217
+ compatibilityDate: compatibilityDate$x,
83218
+ metadata: metadata$x,
83219
+ schema: schema$x,
83220
+ type: type$x
83217
83221
  }, Symbol.toStringTag, { value: "Module" }));
83218
- const type$v = "com.shwfed.form.field.timerange";
83219
- const compatibilityDate$v = "2026-04-27";
83222
+ const type$w = "com.shwfed.form.field.timerange";
83223
+ const compatibilityDate$w = "2026-04-27";
83220
83224
  const BindingPath$1 = String$.pipe(minLength(1));
83221
83225
  const SplitBinding$1 = Tuple(BindingPath$1, BindingPath$1).pipe(
83222
83226
  filter(([a, b]) => a !== b, {
@@ -83227,7 +83231,7 @@ const bindingSchema$1 = Union2(BindingPath$1, SplitBinding$1).annotations({
83227
83231
  title: "绑定路径",
83228
83232
  description: "写入表单状态的 `dot-prop` 路径;填写单个路径时写入 `[start, end]` 字符串数组,例如 `meeting.timeRange`;填写 `[起始路径, 结束路径]` 元组时分别写入两端;留空则为非受控字段"
83229
83233
  });
83230
- const metadata$v = {
83234
+ const metadata$w = {
83231
83235
  name: "时间范围",
83232
83236
  icon: "fluent:clock-arrow-download-20-regular",
83233
83237
  w: { initial: 14, min: 14, max: Infinity },
@@ -83243,11 +83247,11 @@ const HOUR_CYCLE_OPTIONS = [
83243
83247
  { value: 24, label: "24 小时制" },
83244
83248
  { value: 12, label: "12 小时制" }
83245
83249
  ];
83246
- function schema$v(configure) {
83250
+ function schema$w(configure) {
83247
83251
  const CelBool = Expression({ configure, resultType: "bool" });
83248
83252
  return Struct({
83249
- type: Literal2(type$v),
83250
- compatibilityDate: Literal2(compatibilityDate$v),
83253
+ type: Literal2(type$w),
83254
+ compatibilityDate: Literal2(compatibilityDate$w),
83251
83255
  ...commonFieldFields(configure),
83252
83256
  label: optional(Locale.annotations({
83253
83257
  title: "标签",
@@ -83289,7 +83293,7 @@ function schema$v(configure) {
83289
83293
  description: "时间范围选择输入"
83290
83294
  });
83291
83295
  }
83292
- function defaults$4() {
83296
+ function defaults$5() {
83293
83297
  return { rangeSeparatorIcon: "fluent:arrow-right-20-regular" };
83294
83298
  }
83295
83299
  const __vite_glob_0_10$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
@@ -83297,26 +83301,26 @@ const __vite_glob_0_10$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.
83297
83301
  HOUR_CYCLE_OPTIONS,
83298
83302
  TIME_GRANULARITIES,
83299
83303
  TIME_GRANULARITY_OPTIONS,
83300
- compatibilityDate: compatibilityDate$v,
83301
- defaults: defaults$4,
83302
- metadata: metadata$v,
83303
- schema: schema$v,
83304
- type: type$v
83304
+ compatibilityDate: compatibilityDate$w,
83305
+ defaults: defaults$5,
83306
+ metadata: metadata$w,
83307
+ schema: schema$w,
83308
+ type: type$w
83305
83309
  }, Symbol.toStringTag, { value: "Module" }));
83306
- const type$u = "com.shwfed.form.field.number";
83307
- const compatibilityDate$u = "2026-04-28";
83308
- const metadata$u = {
83310
+ const type$v = "com.shwfed.form.field.number";
83311
+ const compatibilityDate$v = "2026-04-28";
83312
+ const metadata$v = {
83309
83313
  name: "数值输入",
83310
83314
  icon: "fluent:number-symbol-20-regular",
83311
83315
  w: { initial: 8, min: 4, max: Infinity },
83312
83316
  h: { initial: 2, min: 2, max: 2 }
83313
83317
  };
83314
- function schema$u(configure) {
83318
+ function schema$v(configure) {
83315
83319
  const CelBool = Expression({ configure, resultType: "bool" });
83316
83320
  const CelNumber = Expression({ configure, resultType: "number" });
83317
83321
  return Struct({
83318
- type: Literal2(type$u),
83319
- compatibilityDate: Literal2(compatibilityDate$u),
83322
+ type: Literal2(type$v),
83323
+ compatibilityDate: Literal2(compatibilityDate$v),
83320
83324
  ...commonFieldFields(configure),
83321
83325
  label: optional(Locale.annotations({
83322
83326
  title: "标签",
@@ -83375,13 +83379,13 @@ function schema$u(configure) {
83375
83379
  }
83376
83380
  const __vite_glob_0_11$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
83377
83381
  __proto__: null,
83378
- compatibilityDate: compatibilityDate$u,
83379
- metadata: metadata$u,
83380
- schema: schema$u,
83381
- type: type$u
83382
+ compatibilityDate: compatibilityDate$v,
83383
+ metadata: metadata$v,
83384
+ schema: schema$v,
83385
+ type: type$v
83382
83386
  }, Symbol.toStringTag, { value: "Module" }));
83383
- const type$t = "com.shwfed.form.field.numberrange";
83384
- const compatibilityDate$t = "2026-04-28";
83387
+ const type$u = "com.shwfed.form.field.numberrange";
83388
+ const compatibilityDate$u = "2026-04-28";
83385
83389
  const BindingPath = String$.pipe(minLength(1));
83386
83390
  const SplitBinding = Tuple(BindingPath, BindingPath).pipe(
83387
83391
  filter(([a, b]) => a !== b, {
@@ -83392,18 +83396,18 @@ const bindingSchema = Union2(BindingPath, SplitBinding).annotations({
83392
83396
  title: "绑定路径",
83393
83397
  description: "写入表单状态的 `dot-prop` 路径;填写单个路径时写入 `[start, end]` 数值数组,例如 `score.range`;填写 `[起始路径, 结束路径]` 元组时分别写入两端;留空则为非受控字段"
83394
83398
  });
83395
- const metadata$t = {
83399
+ const metadata$u = {
83396
83400
  name: "数值范围",
83397
83401
  icon: "fluent:arrow-bidirectional-left-right-20-regular",
83398
83402
  w: { initial: 8, min: 4, max: Infinity },
83399
83403
  h: { initial: 2, min: 2, max: 2 }
83400
83404
  };
83401
- function schema$t(configure) {
83405
+ function schema$u(configure) {
83402
83406
  const CelBool = Expression({ configure, resultType: "bool" });
83403
83407
  const CelNumber = Expression({ configure, resultType: "number" });
83404
83408
  return Struct({
83405
- type: Literal2(type$t),
83406
- compatibilityDate: Literal2(compatibilityDate$t),
83409
+ type: Literal2(type$u),
83410
+ compatibilityDate: Literal2(compatibilityDate$u),
83407
83411
  ...commonFieldFields(configure),
83408
83412
  label: optional(Locale.annotations({
83409
83413
  title: "标签",
@@ -83465,30 +83469,30 @@ function schema$t(configure) {
83465
83469
  description: "数值范围输入"
83466
83470
  });
83467
83471
  }
83468
- function defaults$3() {
83472
+ function defaults$4() {
83469
83473
  return { rangeSeparatorIcon: "fluent:arrow-right-20-regular" };
83470
83474
  }
83471
83475
  const __vite_glob_0_12$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
83472
83476
  __proto__: null,
83473
- compatibilityDate: compatibilityDate$t,
83474
- defaults: defaults$3,
83475
- metadata: metadata$t,
83476
- schema: schema$t,
83477
- type: type$t
83477
+ compatibilityDate: compatibilityDate$u,
83478
+ defaults: defaults$4,
83479
+ metadata: metadata$u,
83480
+ schema: schema$u,
83481
+ type: type$u
83478
83482
  }, Symbol.toStringTag, { value: "Module" }));
83479
- const type$s = "com.shwfed.form.field.switch";
83480
- const compatibilityDate$s = "2026-04-28";
83481
- const metadata$s = {
83483
+ const type$t = "com.shwfed.form.field.switch";
83484
+ const compatibilityDate$t = "2026-04-28";
83485
+ const metadata$t = {
83482
83486
  name: "开关",
83483
83487
  icon: "fluent:toggle-left-20-regular",
83484
83488
  w: { initial: 4, min: 4, max: Infinity },
83485
83489
  h: { initial: 2, min: 2, max: 2 }
83486
83490
  };
83487
- function schema$s(configure) {
83491
+ function schema$t(configure) {
83488
83492
  const CelBool = Expression({ configure, resultType: "bool" });
83489
83493
  return Struct({
83490
- type: Literal2(type$s),
83491
- compatibilityDate: Literal2(compatibilityDate$s),
83494
+ type: Literal2(type$t),
83495
+ compatibilityDate: Literal2(compatibilityDate$t),
83492
83496
  ...commonFieldFields(configure),
83493
83497
  label: optional(Locale.annotations({
83494
83498
  title: "标签",
@@ -83526,10 +83530,10 @@ function schema$s(configure) {
83526
83530
  }
83527
83531
  const __vite_glob_0_13$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
83528
83532
  __proto__: null,
83529
- compatibilityDate: compatibilityDate$s,
83530
- metadata: metadata$s,
83531
- schema: schema$s,
83532
- type: type$s
83533
+ compatibilityDate: compatibilityDate$t,
83534
+ metadata: metadata$t,
83535
+ schema: schema$t,
83536
+ type: type$t
83533
83537
  }, Symbol.toStringTag, { value: "Module" }));
83534
83538
  const decodeCache = {};
83535
83539
  function getDecodeCache(exclude2) {
@@ -88780,9 +88784,9 @@ function interpolateMarkdown(template, $cel, context2) {
88780
88784
  }
88781
88785
  });
88782
88786
  }
88783
- const type$r = "com.shwfed.form.field.combobox.single";
88784
- const compatibilityDate$r = "2026-04-29";
88785
- const metadata$r = {
88787
+ const type$s = "com.shwfed.form.field.combobox.single";
88788
+ const compatibilityDate$s = "2026-04-29";
88789
+ const metadata$s = {
88786
88790
  name: "下拉单选(硬编码)",
88787
88791
  icon: "fluent:chevron-down-20-regular",
88788
88792
  w: { initial: 8, min: 4, max: Infinity },
@@ -88817,12 +88821,12 @@ function itemSchema$3(configure) {
88817
88821
  title: "ComboboxSingleItem"
88818
88822
  });
88819
88823
  }
88820
- function schema$r(configure) {
88824
+ function schema$s(configure) {
88821
88825
  const CelBool = Expression({ configure, resultType: "bool" });
88822
88826
  const Item = itemSchema$3(configure);
88823
88827
  return Struct({
88824
- type: Literal2(type$r),
88825
- compatibilityDate: Literal2(compatibilityDate$r),
88828
+ type: Literal2(type$s),
88829
+ compatibilityDate: Literal2(compatibilityDate$s),
88826
88830
  ...commonFieldFields(configure),
88827
88831
  label: optional(Locale.annotations({
88828
88832
  title: "标签",
@@ -88914,23 +88918,23 @@ const migrate$2 = (prev, ctx) => {
88914
88918
  } = legacy;
88915
88919
  return {
88916
88920
  ...carryover,
88917
- compatibilityDate: compatibilityDate$r,
88921
+ compatibilityDate: compatibilityDate$s,
88918
88922
  items: items2
88919
88923
  };
88920
88924
  });
88921
88925
  };
88922
88926
  const __vite_glob_0_14$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
88923
88927
  __proto__: null,
88924
- compatibilityDate: compatibilityDate$r,
88928
+ compatibilityDate: compatibilityDate$s,
88925
88929
  itemSchema: itemSchema$3,
88926
- metadata: metadata$r,
88930
+ metadata: metadata$s,
88927
88931
  migrate: migrate$2,
88928
- schema: schema$r,
88929
- type: type$r
88932
+ schema: schema$s,
88933
+ type: type$s
88930
88934
  }, Symbol.toStringTag, { value: "Module" }));
88931
- const type$q = "com.shwfed.form.field.upload";
88932
- const compatibilityDate$q = "2026-05-12";
88933
- const metadata$q = {
88935
+ const type$r = "com.shwfed.form.field.upload";
88936
+ const compatibilityDate$r = "2026-05-12";
88937
+ const metadata$r = {
88934
88938
  name: "文件上传",
88935
88939
  icon: "fluent:cloud-arrow-up-20-regular",
88936
88940
  w: { initial: 8, min: 8, max: Infinity },
@@ -88947,14 +88951,14 @@ function configureWithJson$1(configure) {
88947
88951
  env.registerVariable("json", JSON_VAR$1.type, { description: JSON_VAR$1.description });
88948
88952
  };
88949
88953
  }
88950
- function schema$q(configure) {
88954
+ function schema$r(configure) {
88951
88955
  const CelBool = Expression({ configure, resultType: "bool" });
88952
88956
  const CelHttpRequest = Expression({ configure, resultType: "HttpRequest" });
88953
88957
  const CelDownloadRequest = Expression({ configure: configureWithJson$1(configure), resultType: "HttpRequest" });
88954
88958
  const LocaleMd = LocaleMarkdown({ configure });
88955
88959
  return Struct({
88956
- type: Literal2(type$q),
88957
- compatibilityDate: Literal2(compatibilityDate$q),
88960
+ type: Literal2(type$r),
88961
+ compatibilityDate: Literal2(compatibilityDate$r),
88958
88962
  ...commonFieldFields(configure),
88959
88963
  label: optional(Locale.annotations({
88960
88964
  title: "标签",
@@ -89034,14 +89038,14 @@ function schema$q(configure) {
89034
89038
  const __vite_glob_0_15 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
89035
89039
  __proto__: null,
89036
89040
  JSON_VAR: JSON_VAR$1,
89037
- compatibilityDate: compatibilityDate$q,
89038
- metadata: metadata$q,
89039
- schema: schema$q,
89040
- type: type$q
89041
+ compatibilityDate: compatibilityDate$r,
89042
+ metadata: metadata$r,
89043
+ schema: schema$r,
89044
+ type: type$r
89041
89045
  }, Symbol.toStringTag, { value: "Module" }));
89042
- const type$p = "com.shwfed.form.field.combobox.single.remote";
89043
- const compatibilityDate$p = "2026-05-13";
89044
- const metadata$p = {
89046
+ const type$q = "com.shwfed.form.field.combobox.single.remote";
89047
+ const compatibilityDate$q = "2026-05-13";
89048
+ const metadata$q = {
89045
89049
  name: "下拉单选(远程)",
89046
89050
  icon: "fluent:cloud-arrow-down-20-regular",
89047
89051
  w: { initial: 8, min: 4, max: Infinity },
@@ -89070,15 +89074,15 @@ function configureWithJson(configure) {
89070
89074
  };
89071
89075
  }
89072
89076
  const isListType$1 = (actual) => actual === "dyn" || actual.startsWith("list");
89073
- function schema$p(configure) {
89077
+ function schema$q(configure) {
89074
89078
  const CelBool = Expression({ configure, resultType: "bool" });
89075
89079
  const CelHttpRequest = Expression({ configure, resultType: "HttpRequest" });
89076
89080
  const CelOptions = Expression({ configure: configureWithJson(configure), resultType: isListType$1 });
89077
89081
  const CelOptionValue = Expression({ configure: configureWithOption(configure), resultType: "dyn" });
89078
89082
  const LocaleOptionLabel = LocaleMarkdown({ configure: configureWithOption(configure) });
89079
89083
  return Struct({
89080
- type: Literal2(type$p),
89081
- compatibilityDate: Literal2(compatibilityDate$p),
89084
+ type: Literal2(type$q),
89085
+ compatibilityDate: Literal2(compatibilityDate$q),
89082
89086
  ...commonFieldFields(configure),
89083
89087
  label: optional(Locale.annotations({
89084
89088
  title: "标签",
@@ -89131,20 +89135,20 @@ const __vite_glob_0_16 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.de
89131
89135
  __proto__: null,
89132
89136
  JSON_VAR,
89133
89137
  OPTION_VAR,
89134
- compatibilityDate: compatibilityDate$p,
89135
- metadata: metadata$p,
89136
- schema: schema$p,
89137
- type: type$p
89138
+ compatibilityDate: compatibilityDate$q,
89139
+ metadata: metadata$q,
89140
+ schema: schema$q,
89141
+ type: type$q
89138
89142
  }, Symbol.toStringTag, { value: "Module" }));
89139
- const type$o = "com.shwfed.form.field.list";
89140
- const compatibilityDate$o = "2026-05-13";
89141
- const metadata$o = {
89143
+ const type$p = "com.shwfed.form.field.list";
89144
+ const compatibilityDate$p = "2026-05-13";
89145
+ const metadata$p = {
89142
89146
  name: "列表",
89143
89147
  icon: "fluent:list-20-regular",
89144
89148
  w: { initial: 12, min: 4, max: Infinity },
89145
89149
  h: { initial: 6, min: 4, max: Infinity, grow: true }
89146
89150
  };
89147
- function schema$o(configure) {
89151
+ function schema$p(configure) {
89148
89152
  const CelBool = Expression({ configure, resultType: "bool" });
89149
89153
  const unitConfigure = (env) => {
89150
89154
  configure(env);
@@ -89158,8 +89162,8 @@ function schema$o(configure) {
89158
89162
  };
89159
89163
  const Unit = suspend(() => FormUnit(unitConfigure));
89160
89164
  return Struct({
89161
- type: Literal2(type$o),
89162
- compatibilityDate: Literal2(compatibilityDate$o),
89165
+ type: Literal2(type$p),
89166
+ compatibilityDate: Literal2(compatibilityDate$p),
89163
89167
  ...commonFieldFields(configure),
89164
89168
  label: optional(Locale.annotations({
89165
89169
  title: "标签",
@@ -89216,7 +89220,7 @@ function schema$o(configure) {
89216
89220
  description: "可新增/删除/重排的同构子表单列表"
89217
89221
  });
89218
89222
  }
89219
- function defaults$2() {
89223
+ function defaults$3() {
89220
89224
  return {
89221
89225
  unit: {
89222
89226
  fields: [],
@@ -89226,15 +89230,15 @@ function defaults$2() {
89226
89230
  }
89227
89231
  const __vite_glob_0_17 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
89228
89232
  __proto__: null,
89229
- compatibilityDate: compatibilityDate$o,
89230
- defaults: defaults$2,
89231
- metadata: metadata$o,
89232
- schema: schema$o,
89233
- type: type$o
89233
+ compatibilityDate: compatibilityDate$p,
89234
+ defaults: defaults$3,
89235
+ metadata: metadata$p,
89236
+ schema: schema$p,
89237
+ type: type$p
89234
89238
  }, Symbol.toStringTag, { value: "Module" }));
89235
- const type$n = "com.shwfed.form.field.checkbox.group";
89236
- const compatibilityDate$n = "2026-05-17";
89237
- const metadata$n = {
89239
+ const type$o = "com.shwfed.form.field.checkbox.group";
89240
+ const compatibilityDate$o = "2026-05-17";
89241
+ const metadata$o = {
89238
89242
  name: "复选框组",
89239
89243
  icon: "fluent:checkbox-checked-20-regular",
89240
89244
  w: { initial: 8, min: 2, max: Infinity },
@@ -89269,12 +89273,12 @@ function itemSchema$2(configure) {
89269
89273
  title: "CheckboxGroupItem"
89270
89274
  });
89271
89275
  }
89272
- function schema$n(configure) {
89276
+ function schema$o(configure) {
89273
89277
  const CelBool = Expression({ configure, resultType: "bool" });
89274
89278
  const Item = itemSchema$2(configure);
89275
89279
  return Struct({
89276
- type: Literal2(type$n),
89277
- compatibilityDate: Literal2(compatibilityDate$n),
89280
+ type: Literal2(type$o),
89281
+ compatibilityDate: Literal2(compatibilityDate$o),
89278
89282
  ...commonFieldFields(configure),
89279
89283
  label: optional(Locale.annotations({
89280
89284
  title: "标签",
@@ -89308,15 +89312,15 @@ function schema$n(configure) {
89308
89312
  }
89309
89313
  const __vite_glob_0_18 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
89310
89314
  __proto__: null,
89311
- compatibilityDate: compatibilityDate$n,
89315
+ compatibilityDate: compatibilityDate$o,
89312
89316
  itemSchema: itemSchema$2,
89313
- metadata: metadata$n,
89314
- schema: schema$n,
89315
- type: type$n
89317
+ metadata: metadata$o,
89318
+ schema: schema$o,
89319
+ type: type$o
89316
89320
  }, Symbol.toStringTag, { value: "Module" }));
89317
- const type$m = "com.shwfed.form.field.radio.group";
89318
- const compatibilityDate$m = "2026-05-17";
89319
- const metadata$m = {
89321
+ const type$n = "com.shwfed.form.field.radio.group";
89322
+ const compatibilityDate$n = "2026-05-17";
89323
+ const metadata$n = {
89320
89324
  name: "单选框组",
89321
89325
  icon: "fluent:radio-button-20-regular",
89322
89326
  w: { initial: 8, min: 2, max: Infinity },
@@ -89351,12 +89355,12 @@ function itemSchema$1(configure) {
89351
89355
  title: "RadioGroupItem"
89352
89356
  });
89353
89357
  }
89354
- function schema$m(configure) {
89358
+ function schema$n(configure) {
89355
89359
  const CelBool = Expression({ configure, resultType: "bool" });
89356
89360
  const Item = itemSchema$1(configure);
89357
89361
  return Struct({
89358
- type: Literal2(type$m),
89359
- compatibilityDate: Literal2(compatibilityDate$m),
89362
+ type: Literal2(type$n),
89363
+ compatibilityDate: Literal2(compatibilityDate$n),
89360
89364
  ...commonFieldFields(configure),
89361
89365
  label: optional(Locale.annotations({
89362
89366
  title: "标签",
@@ -89390,11 +89394,11 @@ function schema$m(configure) {
89390
89394
  }
89391
89395
  const __vite_glob_0_19 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
89392
89396
  __proto__: null,
89393
- compatibilityDate: compatibilityDate$m,
89397
+ compatibilityDate: compatibilityDate$n,
89394
89398
  itemSchema: itemSchema$1,
89395
- metadata: metadata$m,
89396
- schema: schema$m,
89397
- type: type$m
89399
+ metadata: metadata$n,
89400
+ schema: schema$n,
89401
+ type: type$n
89398
89402
  }, Symbol.toStringTag, { value: "Module" }));
89399
89403
  const matchIconName = /^[a-z0-9]+(-[a-z0-9]+)*$/;
89400
89404
  const stringToIcon = (value, validate2, allowSimpleName, provider = "") => {
@@ -90878,14 +90882,14 @@ function LocaleMarkdownWithRow(configure) {
90878
90882
  function derivedRowField(configure, resultType) {
90879
90883
  return derivedField(configureWithRow(configure), resultType);
90880
90884
  }
90881
- const type$l = "com.shwfed.table.column.actions";
90882
- const compatibilityDate$l = "2026-04-14";
90883
- const metadata$l = {
90885
+ const type$m = "com.shwfed.table.column.actions";
90886
+ const compatibilityDate$m = "2026-04-14";
90887
+ const metadata$m = {
90884
90888
  name: "操作",
90885
90889
  icon: "fluent:cursor-click-20-regular"
90886
90890
  };
90887
90891
  const registerRowVariables = registerRowVariablesIfAbsent;
90888
- function schema$l(configure) {
90892
+ function schema$m(configure) {
90889
90893
  const configureWithRow2 = (env) => {
90890
90894
  configure(env);
90891
90895
  registerRowVariables(env);
@@ -90893,8 +90897,8 @@ function schema$l(configure) {
90893
90897
  const { fields: actionFields } = ActionSchemaFields(configureWithRow2);
90894
90898
  const { size: _buttonSize, ...actionFieldsForColumn } = actionFields;
90895
90899
  return Struct({
90896
- type: Literal2(type$l),
90897
- compatibilityDate: Literal2(compatibilityDate$l),
90900
+ type: Literal2(type$m),
90901
+ compatibilityDate: Literal2(compatibilityDate$m),
90898
90902
  ...columnIdentityFields(),
90899
90903
  title: optional(Locale.annotations({ title: "标题", description: "列标题" })),
90900
90904
  size: optional(Number$.pipe(finite(), positive()).annotations({
@@ -90921,23 +90925,23 @@ function toColumnDef$e(value, { getLocaleText }) {
90921
90925
  }
90922
90926
  const __vite_glob_0_0 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
90923
90927
  __proto__: null,
90924
- compatibilityDate: compatibilityDate$l,
90925
- metadata: metadata$l,
90928
+ compatibilityDate: compatibilityDate$m,
90929
+ metadata: metadata$m,
90926
90930
  registerRowVariables,
90927
- schema: schema$l,
90931
+ schema: schema$m,
90928
90932
  toColumnDef: toColumnDef$e,
90929
- type: type$l
90933
+ type: type$m
90930
90934
  }, Symbol.toStringTag, { value: "Module" }));
90931
- const type$k = "com.shwfed.table.column.date";
90932
- const compatibilityDate$k = "2026-04-14";
90933
- const metadata$k = {
90935
+ const type$l = "com.shwfed.table.column.date";
90936
+ const compatibilityDate$l = "2026-04-14";
90937
+ const metadata$l = {
90934
90938
  name: "日期",
90935
90939
  icon: "fluent:calendar-ltr-20-regular"
90936
90940
  };
90937
- function schema$k(configure) {
90941
+ function schema$l(configure) {
90938
90942
  return Struct({
90939
- type: Literal2(type$k),
90940
- compatibilityDate: Literal2(compatibilityDate$k),
90943
+ type: Literal2(type$l),
90944
+ compatibilityDate: Literal2(compatibilityDate$l),
90941
90945
  ...columnFields(configure),
90942
90946
  align: optionalWith(Align.annotations({ title: "对齐" }), { default: () => "left" }),
90943
90947
  format: String$.annotations({
@@ -90969,22 +90973,22 @@ function toColumnDef$d(value, { getLocaleText, $cel, inheritedContext }) {
90969
90973
  }
90970
90974
  const __vite_glob_0_1$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
90971
90975
  __proto__: null,
90972
- compatibilityDate: compatibilityDate$k,
90973
- metadata: metadata$k,
90974
- schema: schema$k,
90976
+ compatibilityDate: compatibilityDate$l,
90977
+ metadata: metadata$l,
90978
+ schema: schema$l,
90975
90979
  toColumnDef: toColumnDef$d,
90976
- type: type$k
90980
+ type: type$l
90977
90981
  }, Symbol.toStringTag, { value: "Module" }));
90978
- const type$j = "com.shwfed.table.column.icon";
90979
- const compatibilityDate$j = "2026-04-14";
90980
- const metadata$j = {
90982
+ const type$k = "com.shwfed.table.column.icon";
90983
+ const compatibilityDate$k = "2026-04-14";
90984
+ const metadata$k = {
90981
90985
  name: "图标",
90982
90986
  icon: "fluent:shapes-20-regular"
90983
90987
  };
90984
- function schema$j(configure) {
90988
+ function schema$k(configure) {
90985
90989
  return Struct({
90986
- type: Literal2(type$j),
90987
- compatibilityDate: Literal2(compatibilityDate$j),
90990
+ type: Literal2(type$k),
90991
+ compatibilityDate: Literal2(compatibilityDate$k),
90988
90992
  ...columnFields(configure),
90989
90993
  accessor: CelRowAccess(configure).annotations({
90990
90994
  title: "图标",
@@ -91020,25 +91024,25 @@ function toColumnDef$c(value, { getLocaleText, $cel, inheritedContext }) {
91020
91024
  }
91021
91025
  const __vite_glob_0_2$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
91022
91026
  __proto__: null,
91023
- compatibilityDate: compatibilityDate$j,
91024
- metadata: metadata$j,
91025
- schema: schema$j,
91027
+ compatibilityDate: compatibilityDate$k,
91028
+ metadata: metadata$k,
91029
+ schema: schema$k,
91026
91030
  toColumnDef: toColumnDef$c,
91027
- type: type$j
91031
+ type: type$k
91028
91032
  }, Symbol.toStringTag, { value: "Module" }));
91029
- const type$i = "com.shwfed.table.column.markdown";
91030
- const compatibilityDate$i = "2026-04-14";
91031
- const metadata$i = {
91033
+ const type$j = "com.shwfed.table.column.markdown";
91034
+ const compatibilityDate$j = "2026-04-14";
91035
+ const metadata$j = {
91032
91036
  name: "MD",
91033
91037
  icon: "fluent:markdown-20-regular"
91034
91038
  };
91035
91039
  const isCopyExpressionType$1 = (t) => t === "string" || t === "dyn" || t.startsWith("optional");
91036
- function schema$i(configure) {
91040
+ function schema$j(configure) {
91037
91041
  const cel = CelRowAccess(configure, { resultType: isCopyExpressionType$1 });
91038
91042
  const localeMarkdown = LocaleMarkdownWithRow(configure);
91039
91043
  return Struct({
91040
- type: Literal2(type$i),
91041
- compatibilityDate: Literal2(compatibilityDate$i),
91044
+ type: Literal2(type$j),
91045
+ compatibilityDate: Literal2(compatibilityDate$j),
91042
91046
  ...columnIdentityFields(),
91043
91047
  title: Locale.annotations({ title: "标题", description: "列标题" }),
91044
91048
  align: optionalWith(Align.annotations({ title: "对齐" }), { default: () => "left" }),
@@ -91077,22 +91081,22 @@ function toColumnDef$b(value, { getLocaleText }) {
91077
91081
  }
91078
91082
  const __vite_glob_0_3$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
91079
91083
  __proto__: null,
91080
- compatibilityDate: compatibilityDate$i,
91081
- metadata: metadata$i,
91082
- schema: schema$i,
91084
+ compatibilityDate: compatibilityDate$j,
91085
+ metadata: metadata$j,
91086
+ schema: schema$j,
91083
91087
  toColumnDef: toColumnDef$b,
91084
- type: type$i
91088
+ type: type$j
91085
91089
  }, Symbol.toStringTag, { value: "Module" }));
91086
- const type$h = "com.shwfed.table.column.number";
91087
- const compatibilityDate$h = "2026-04-14";
91088
- const metadata$h = {
91090
+ const type$i = "com.shwfed.table.column.number";
91091
+ const compatibilityDate$i = "2026-04-14";
91092
+ const metadata$i = {
91089
91093
  name: "数值",
91090
91094
  icon: "fluent:number-symbol-20-regular"
91091
91095
  };
91092
- function schema$h(configure) {
91096
+ function schema$i(configure) {
91093
91097
  return Struct({
91094
- type: Literal2(type$h),
91095
- compatibilityDate: Literal2(compatibilityDate$h),
91098
+ type: Literal2(type$i),
91099
+ compatibilityDate: Literal2(compatibilityDate$i),
91096
91100
  ...columnFields(configure),
91097
91101
  align: optionalWith(Align.annotations({ title: "对齐" }), { default: () => "right" }),
91098
91102
  displayMode: optionalWith(
@@ -91133,24 +91137,24 @@ function toColumnDef$a(value, { getLocaleText, $cel, inheritedContext }) {
91133
91137
  }
91134
91138
  const __vite_glob_0_4$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
91135
91139
  __proto__: null,
91136
- compatibilityDate: compatibilityDate$h,
91137
- metadata: metadata$h,
91138
- schema: schema$h,
91140
+ compatibilityDate: compatibilityDate$i,
91141
+ metadata: metadata$i,
91142
+ schema: schema$i,
91139
91143
  toColumnDef: toColumnDef$a,
91140
- type: type$h
91144
+ type: type$i
91141
91145
  }, Symbol.toStringTag, { value: "Module" }));
91142
91146
  const __vite_glob_2_5 = {};
91143
91147
  const _stubVue = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
91144
91148
  __proto__: null,
91145
91149
  default: __vite_glob_2_5
91146
91150
  }, Symbol.toStringTag, { value: "Module" }));
91147
- const type$g = "com.shwfed.table.column.select";
91148
- const compatibilityDate$g = "2026-04-14";
91149
- const metadata$g = {
91151
+ const type$h = "com.shwfed.table.column.select";
91152
+ const compatibilityDate$h = "2026-04-14";
91153
+ const metadata$h = {
91150
91154
  name: "选择",
91151
91155
  icon: "fluent:checkbox-checked-20-regular"
91152
91156
  };
91153
- function schema$g(configure) {
91157
+ function schema$h(configure) {
91154
91158
  const CelRowSelectionPredicate = Expression({
91155
91159
  configure: (env) => {
91156
91160
  configure(env);
@@ -91159,8 +91163,8 @@ function schema$g(configure) {
91159
91163
  resultType: "bool"
91160
91164
  });
91161
91165
  return Struct({
91162
- type: Literal2(type$g),
91163
- compatibilityDate: Literal2(compatibilityDate$g),
91166
+ type: Literal2(type$h),
91167
+ compatibilityDate: Literal2(compatibilityDate$h),
91164
91168
  ...columnIdentityFields(),
91165
91169
  mode: optionalWith(Literal2("radio", "checkbox").annotations({
91166
91170
  title: "模式",
@@ -91191,24 +91195,24 @@ function toColumnDef$9(value) {
91191
91195
  }
91192
91196
  const __vite_glob_0_5$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
91193
91197
  __proto__: null,
91194
- compatibilityDate: compatibilityDate$g,
91195
- metadata: metadata$g,
91196
- schema: schema$g,
91198
+ compatibilityDate: compatibilityDate$h,
91199
+ metadata: metadata$h,
91200
+ schema: schema$h,
91197
91201
  toColumnDef: toColumnDef$9,
91198
- type: type$g
91202
+ type: type$h
91199
91203
  }, Symbol.toStringTag, { value: "Module" }));
91200
- const type$f = "com.shwfed.table.column.text";
91201
- const compatibilityDate$f = "2026-04-14";
91202
- const metadata$f = {
91204
+ const type$g = "com.shwfed.table.column.text";
91205
+ const compatibilityDate$g = "2026-04-14";
91206
+ const metadata$g = {
91203
91207
  name: "文本",
91204
91208
  icon: "fluent:text-field-20-regular"
91205
91209
  };
91206
91210
  const isCopyExpressionType = (t) => t === "string" || t === "dyn" || t.startsWith("optional");
91207
- function schema$f(configure) {
91211
+ function schema$g(configure) {
91208
91212
  const cel = CelRowAccess(configure, { resultType: isCopyExpressionType });
91209
91213
  return Struct({
91210
- type: Literal2(type$f),
91211
- compatibilityDate: Literal2(compatibilityDate$f),
91214
+ type: Literal2(type$g),
91215
+ compatibilityDate: Literal2(compatibilityDate$g),
91212
91216
  ...columnFields(configure),
91213
91217
  align: optionalWith(Align.annotations({ title: "对齐" }), { default: () => "left" }),
91214
91218
  displayMode: optionalWith(
@@ -91246,19 +91250,19 @@ function toColumnDef$8(value, { getLocaleText, $cel, inheritedContext }) {
91246
91250
  }
91247
91251
  const __vite_glob_0_6 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
91248
91252
  __proto__: null,
91249
- compatibilityDate: compatibilityDate$f,
91250
- metadata: metadata$f,
91251
- schema: schema$f,
91253
+ compatibilityDate: compatibilityDate$g,
91254
+ metadata: metadata$g,
91255
+ schema: schema$g,
91252
91256
  toColumnDef: toColumnDef$8,
91253
- type: type$f
91257
+ type: type$g
91254
91258
  }, Symbol.toStringTag, { value: "Module" }));
91255
- const type$e = "com.shwfed.table.column.switch.remote";
91256
- const compatibilityDate$e = "2026-05-13";
91257
- const metadata$e = {
91259
+ const type$f = "com.shwfed.table.column.switch.remote";
91260
+ const compatibilityDate$f = "2026-05-13";
91261
+ const metadata$f = {
91258
91262
  name: "开关(远程)",
91259
91263
  icon: "fluent:toggle-left-20-regular"
91260
91264
  };
91261
- function schema$e(configure) {
91265
+ function schema$f(configure) {
91262
91266
  const CelBool = CelRowAccess(configure, { resultType: "bool" });
91263
91267
  const CelOnChange = Expression({
91264
91268
  configure: (env) => {
@@ -91276,8 +91280,8 @@ function schema$e(configure) {
91276
91280
  resultType: "string"
91277
91281
  });
91278
91282
  return Struct({
91279
- type: Literal2(type$e),
91280
- compatibilityDate: Literal2(compatibilityDate$e),
91283
+ type: Literal2(type$f),
91284
+ compatibilityDate: Literal2(compatibilityDate$f),
91281
91285
  ...columnFields(configure),
91282
91286
  align: optionalWith(Align.annotations({ title: "对齐" }), { default: () => "center" }),
91283
91287
  disabled: optional(CelBool.annotations({
@@ -91299,14 +91303,14 @@ function schema$e(configure) {
91299
91303
  }).annotations({ title: "SwitchRenderer", description: "开关渲染器(可编辑)" });
91300
91304
  }
91301
91305
  const migrateFrom$1 = [
91302
- { type: "com.shwfed.table.column.switch", compatibilityDate: compatibilityDate$e }
91306
+ { type: "com.shwfed.table.column.switch", compatibilityDate: compatibilityDate$f }
91303
91307
  ];
91304
91308
  const migrate$1 = (prev) => try_({
91305
91309
  try: () => {
91306
91310
  if (!prev || typeof prev !== "object") {
91307
91311
  throw new Error("开关(远程)迁移失败:原值不是对象");
91308
91312
  }
91309
- return { ...prev, type: type$e, compatibilityDate: compatibilityDate$e };
91313
+ return { ...prev, type: type$f, compatibilityDate: compatibilityDate$f };
91310
91314
  },
91311
91315
  catch: (e) => e instanceof Error ? e : new Error(String(e))
91312
91316
  });
@@ -91332,21 +91336,21 @@ function toColumnDef$7(value, { getLocaleText, $cel, inheritedContext }) {
91332
91336
  }
91333
91337
  const __vite_glob_0_7 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
91334
91338
  __proto__: null,
91335
- compatibilityDate: compatibilityDate$e,
91336
- metadata: metadata$e,
91339
+ compatibilityDate: compatibilityDate$f,
91340
+ metadata: metadata$f,
91337
91341
  migrate: migrate$1,
91338
91342
  migrateFrom: migrateFrom$1,
91339
- schema: schema$e,
91343
+ schema: schema$f,
91340
91344
  toColumnDef: toColumnDef$7,
91341
- type: type$e
91345
+ type: type$f
91342
91346
  }, Symbol.toStringTag, { value: "Module" }));
91343
- const type$d = "com.shwfed.table.column.switch";
91344
- const compatibilityDate$d = "2026-05-13";
91345
- const metadata$d = {
91347
+ const type$e = "com.shwfed.table.column.switch";
91348
+ const compatibilityDate$e = "2026-05-13";
91349
+ const metadata$e = {
91346
91350
  name: "开关(远程)",
91347
91351
  icon: "fluent:toggle-left-20-regular"
91348
91352
  };
91349
- function schema$d(configure) {
91353
+ function schema$e(configure) {
91350
91354
  const CelBool = CelRowAccess(configure, { resultType: "bool" });
91351
91355
  const CelOnChange = Expression({
91352
91356
  configure: (env) => {
@@ -91364,8 +91368,8 @@ function schema$d(configure) {
91364
91368
  resultType: "string"
91365
91369
  });
91366
91370
  return Struct({
91367
- type: Literal2(type$d),
91368
- compatibilityDate: Literal2(compatibilityDate$d),
91371
+ type: Literal2(type$e),
91372
+ compatibilityDate: Literal2(compatibilityDate$e),
91369
91373
  ...columnFields(configure),
91370
91374
  align: optionalWith(Align.annotations({ title: "对齐" }), { default: () => "center" }),
91371
91375
  disabled: optional(CelBool.annotations({
@@ -91408,11 +91412,11 @@ function toColumnDef$6(value, { getLocaleText, $cel, inheritedContext }) {
91408
91412
  }
91409
91413
  const __vite_glob_0_8 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
91410
91414
  __proto__: null,
91411
- compatibilityDate: compatibilityDate$d,
91412
- metadata: metadata$d,
91413
- schema: schema$d,
91415
+ compatibilityDate: compatibilityDate$e,
91416
+ metadata: metadata$e,
91417
+ schema: schema$e,
91414
91418
  toColumnDef: toColumnDef$6,
91415
- type: type$d
91419
+ type: type$e
91416
91420
  }, Symbol.toStringTag, { value: "Module" }));
91417
91421
  const isObject$1 = (value) => {
91418
91422
  const type2 = typeof value;
@@ -91611,9 +91615,9 @@ function getProperty(object2, path, value) {
91611
91615
  }
91612
91616
  return object2 === void 0 ? value : object2;
91613
91617
  }
91614
- const type$c = "com.shwfed.table.column.combobox-single";
91615
- const compatibilityDate$c = "2026-05-20";
91616
- const metadata$c = {
91618
+ const type$d = "com.shwfed.table.column.combobox-single";
91619
+ const compatibilityDate$d = "2026-05-20";
91620
+ const metadata$d = {
91617
91621
  name: "下拉单选",
91618
91622
  icon: "fluent:chevron-down-20-regular"
91619
91623
  };
@@ -91646,12 +91650,12 @@ function itemSchema(configure) {
91646
91650
  title: "ComboboxSingleItem"
91647
91651
  });
91648
91652
  }
91649
- function schema$c(configure) {
91653
+ function schema$d(configure) {
91650
91654
  const CelBool = CelRowAccess(configure, { resultType: "bool" });
91651
91655
  const Item = itemSchema(configure);
91652
91656
  return Struct({
91653
- type: Literal2(type$c),
91654
- compatibilityDate: Literal2(compatibilityDate$c),
91657
+ type: Literal2(type$d),
91658
+ compatibilityDate: Literal2(compatibilityDate$d),
91655
91659
  ...editableColumnFields(),
91656
91660
  placeholder: optional(Locale.annotations({
91657
91661
  title: "占位符",
@@ -91699,25 +91703,25 @@ function toColumnDef$5(value, { getLocaleText }) {
91699
91703
  }
91700
91704
  const __vite_glob_0_9 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
91701
91705
  __proto__: null,
91702
- compatibilityDate: compatibilityDate$c,
91706
+ compatibilityDate: compatibilityDate$d,
91703
91707
  itemSchema,
91704
- metadata: metadata$c,
91705
- schema: schema$c,
91708
+ metadata: metadata$d,
91709
+ schema: schema$d,
91706
91710
  toColumnDef: toColumnDef$5,
91707
- type: type$c
91711
+ type: type$d
91708
91712
  }, Symbol.toStringTag, { value: "Module" }));
91709
- const type$b = "com.shwfed.table.column.number-input";
91710
- const compatibilityDate$b = "2026-05-20";
91711
- const metadata$b = {
91713
+ const type$c = "com.shwfed.table.column.number-input";
91714
+ const compatibilityDate$c = "2026-05-20";
91715
+ const metadata$c = {
91712
91716
  name: "数值输入",
91713
91717
  icon: "fluent:number-symbol-20-regular"
91714
91718
  };
91715
- function schema$b(configure) {
91719
+ function schema$c(configure) {
91716
91720
  const CelBool = CelRowAccess(configure, { resultType: "bool" });
91717
91721
  const CelNumber = CelRowAccess(configure, { resultType: "number" });
91718
91722
  return Struct({
91719
- type: Literal2(type$b),
91720
- compatibilityDate: Literal2(compatibilityDate$b),
91723
+ type: Literal2(type$c),
91724
+ compatibilityDate: Literal2(compatibilityDate$c),
91721
91725
  ...editableColumnFields(),
91722
91726
  placeholder: optional(Locale.annotations({
91723
91727
  title: "占位符",
@@ -91785,23 +91789,23 @@ function toColumnDef$4(value, { getLocaleText }) {
91785
91789
  }
91786
91790
  const __vite_glob_0_10 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
91787
91791
  __proto__: null,
91788
- compatibilityDate: compatibilityDate$b,
91789
- metadata: metadata$b,
91790
- schema: schema$b,
91792
+ compatibilityDate: compatibilityDate$c,
91793
+ metadata: metadata$c,
91794
+ schema: schema$c,
91791
91795
  toColumnDef: toColumnDef$4,
91792
- type: type$b
91796
+ type: type$c
91793
91797
  }, Symbol.toStringTag, { value: "Module" }));
91794
- const type$a = "com.shwfed.table.column.switch.local";
91795
- const compatibilityDate$a = "2026-05-20";
91796
- const metadata$a = {
91798
+ const type$b = "com.shwfed.table.column.switch.local";
91799
+ const compatibilityDate$b = "2026-05-20";
91800
+ const metadata$b = {
91797
91801
  name: "开关",
91798
91802
  icon: "fluent:toggle-left-20-regular"
91799
91803
  };
91800
- function schema$a(configure) {
91804
+ function schema$b(configure) {
91801
91805
  const CelBool = CelRowAccess(configure, { resultType: "bool" });
91802
91806
  return Struct({
91803
- type: Literal2(type$a),
91804
- compatibilityDate: Literal2(compatibilityDate$a),
91807
+ type: Literal2(type$b),
91808
+ compatibilityDate: Literal2(compatibilityDate$b),
91805
91809
  ...editableColumnFields(),
91806
91810
  hidden: optional(CelBool.annotations({
91807
91811
  title: "隐藏条件",
@@ -91827,14 +91831,14 @@ function schema$a(configure) {
91827
91831
  }).annotations({ title: "SwitchRenderer", description: "开关渲染器(可编辑、本地)" });
91828
91832
  }
91829
91833
  const migrateFrom = [
91830
- { type: "com.shwfed.table.column.switch", compatibilityDate: compatibilityDate$a }
91834
+ { type: "com.shwfed.table.column.switch", compatibilityDate: compatibilityDate$b }
91831
91835
  ];
91832
91836
  const migrate = (prev) => try_({
91833
91837
  try: () => {
91834
91838
  if (!prev || typeof prev !== "object") {
91835
91839
  throw new Error("开关(本地)迁移失败:原值不是对象");
91836
91840
  }
91837
- return { ...prev, type: type$a, compatibilityDate: compatibilityDate$a };
91841
+ return { ...prev, type: type$b, compatibilityDate: compatibilityDate$b };
91838
91842
  },
91839
91843
  catch: (e) => e instanceof Error ? e : new Error(String(e))
91840
91844
  });
@@ -91860,25 +91864,25 @@ function toColumnDef$3(value, { getLocaleText }) {
91860
91864
  }
91861
91865
  const __vite_glob_0_11 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
91862
91866
  __proto__: null,
91863
- compatibilityDate: compatibilityDate$a,
91864
- metadata: metadata$a,
91867
+ compatibilityDate: compatibilityDate$b,
91868
+ metadata: metadata$b,
91865
91869
  migrate,
91866
91870
  migrateFrom,
91867
- schema: schema$a,
91871
+ schema: schema$b,
91868
91872
  toColumnDef: toColumnDef$3,
91869
- type: type$a
91873
+ type: type$b
91870
91874
  }, Symbol.toStringTag, { value: "Module" }));
91871
- const type$9 = "com.shwfed.table.column.switch";
91872
- const compatibilityDate$9 = "2026-05-20";
91873
- const metadata$9 = {
91875
+ const type$a = "com.shwfed.table.column.switch";
91876
+ const compatibilityDate$a = "2026-05-20";
91877
+ const metadata$a = {
91874
91878
  name: "开关",
91875
91879
  icon: "fluent:toggle-left-20-regular"
91876
91880
  };
91877
- function schema$9(configure) {
91881
+ function schema$a(configure) {
91878
91882
  const CelBool = CelRowAccess(configure, { resultType: "bool" });
91879
91883
  return Struct({
91880
- type: Literal2(type$9),
91881
- compatibilityDate: Literal2(compatibilityDate$9),
91884
+ type: Literal2(type$a),
91885
+ compatibilityDate: Literal2(compatibilityDate$a),
91882
91886
  ...editableColumnFields(),
91883
91887
  hidden: optional(CelBool.annotations({
91884
91888
  title: "隐藏条件",
@@ -91925,23 +91929,23 @@ function toColumnDef$2(value, { getLocaleText }) {
91925
91929
  }
91926
91930
  const __vite_glob_0_12 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
91927
91931
  __proto__: null,
91928
- compatibilityDate: compatibilityDate$9,
91929
- metadata: metadata$9,
91930
- schema: schema$9,
91932
+ compatibilityDate: compatibilityDate$a,
91933
+ metadata: metadata$a,
91934
+ schema: schema$a,
91931
91935
  toColumnDef: toColumnDef$2,
91932
- type: type$9
91936
+ type: type$a
91933
91937
  }, Symbol.toStringTag, { value: "Module" }));
91934
- const type$8 = "com.shwfed.table.column.text-input";
91935
- const compatibilityDate$8 = "2026-05-20";
91936
- const metadata$8 = {
91938
+ const type$9 = "com.shwfed.table.column.text-input";
91939
+ const compatibilityDate$9 = "2026-05-20";
91940
+ const metadata$9 = {
91937
91941
  name: "文本输入",
91938
91942
  icon: "fluent:text-field-20-regular"
91939
91943
  };
91940
- function schema$8(configure) {
91944
+ function schema$9(configure) {
91941
91945
  const CelBool = CelRowAccess(configure, { resultType: "bool" });
91942
91946
  return Struct({
91943
- type: Literal2(type$8),
91944
- compatibilityDate: Literal2(compatibilityDate$8),
91947
+ type: Literal2(type$9),
91948
+ compatibilityDate: Literal2(compatibilityDate$9),
91945
91949
  ...editableColumnFields(),
91946
91950
  placeholder: optional(Locale.annotations({
91947
91951
  title: "占位符",
@@ -91982,22 +91986,22 @@ function toColumnDef$1(value, { getLocaleText }) {
91982
91986
  }
91983
91987
  const __vite_glob_0_13 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
91984
91988
  __proto__: null,
91985
- compatibilityDate: compatibilityDate$8,
91986
- metadata: metadata$8,
91987
- schema: schema$8,
91989
+ compatibilityDate: compatibilityDate$9,
91990
+ metadata: metadata$9,
91991
+ schema: schema$9,
91988
91992
  toColumnDef: toColumnDef$1,
91989
- type: type$8
91993
+ type: type$9
91990
91994
  }, Symbol.toStringTag, { value: "Module" }));
91991
- const type$7 = "com.shwfed.table.column.drag-handle";
91992
- const compatibilityDate$7 = "2026-05-21";
91993
- const metadata$7 = {
91995
+ const type$8 = "com.shwfed.table.column.drag-handle";
91996
+ const compatibilityDate$8 = "2026-05-21";
91997
+ const metadata$8 = {
91994
91998
  name: "拖拽",
91995
91999
  icon: "fluent:re-order-dots-vertical-20-regular"
91996
92000
  };
91997
- function schema$7(_configure) {
92001
+ function schema$8(_configure) {
91998
92002
  return Struct({
91999
- type: Literal2(type$7),
92000
- compatibilityDate: Literal2(compatibilityDate$7),
92003
+ type: Literal2(type$8),
92004
+ compatibilityDate: Literal2(compatibilityDate$8),
92001
92005
  ...columnIdentityFields()
92002
92006
  }).annotations({ title: "DragHandleRenderer", description: "行拖拽手柄列" });
92003
92007
  }
@@ -92017,11 +92021,11 @@ function toColumnDef(_value) {
92017
92021
  }
92018
92022
  const __vite_glob_0_14 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
92019
92023
  __proto__: null,
92020
- compatibilityDate: compatibilityDate$7,
92021
- metadata: metadata$7,
92022
- schema: schema$7,
92024
+ compatibilityDate: compatibilityDate$8,
92025
+ metadata: metadata$8,
92026
+ schema: schema$8,
92023
92027
  toColumnDef,
92024
- type: type$7
92028
+ type: type$8
92025
92029
  }, Symbol.toStringTag, { value: "Module" }));
92026
92030
  const schemaModules$2 = /* @__PURE__ */ Object.assign({
92027
92031
  "../columns/2026-04-14/com.shwfed.table.column.actions/schema.ts": __vite_glob_0_0,
@@ -92156,7 +92160,9 @@ const COLUMNS = registry$2.ENTRIES.map((e) => ({
92156
92160
  return map2;
92157
92161
  })();
92158
92162
  function allColumnSchemas(configure) {
92159
- return COLUMNS.map((entry) => entry.schema(configure));
92163
+ return COLUMNS.map((entry) => entry.schema(configure).annotations({
92164
+ identifier: `${entry.type}@${entry.compatibilityDate}`
92165
+ }));
92160
92166
  }
92161
92167
  function getTypeLiteral(ast) {
92162
92168
  switch (ast._tag) {
@@ -92308,13 +92314,11 @@ const ColumnGroup = Struct({
92308
92314
  description: "列分组定义"
92309
92315
  });
92310
92316
  const QUERY_VAR_DESCRIPTION = "搜索条件当前状态;未配置搜索条件时为空对象";
92311
- function DataSource(configure) {
92317
+ function DataSource(configure, extras) {
92312
92318
  const CelRequest = Expression({
92313
92319
  configure: (env) => {
92314
92320
  configure(env);
92315
- env.registerVariable("pageIndex", "number", { description: "当前页码(从 0 开始);未启用分页时为 0" });
92316
- env.registerVariable("pageSize", "number", { description: "每页行数;未启用分页时为 0" });
92317
- env.registerVariable("query", "dyn", { description: QUERY_VAR_DESCRIPTION });
92321
+ extras?.request?.(env);
92318
92322
  },
92319
92323
  resultType: "HttpRequest"
92320
92324
  });
@@ -92324,10 +92328,35 @@ function DataSource(configure) {
92324
92328
  env.registerVariable("json", "optional<dyn>", {
92325
92329
  description: "HTTP 响应体(已解析 JSON);未配置 request 时为 none"
92326
92330
  });
92327
- env.registerVariable("query", "dyn", { description: QUERY_VAR_DESCRIPTION });
92331
+ extras?.data?.(env);
92328
92332
  },
92329
92333
  resultType: (type2) => type2.startsWith("list") || type2 === "dyn" || type2.startsWith("optional")
92330
92334
  });
92335
+ return Struct({
92336
+ request: optional(CelRequest).annotations({
92337
+ title: "请求",
92338
+ description: "可选的 HTTP 请求表达式;未配置时数据从 `data` 表达式中读取(通常引用上下文变量)"
92339
+ }),
92340
+ data: CelRows.annotations({
92341
+ title: "数据",
92342
+ description: "返回行数据列表(`list<dyn>`)的 CEL 表达式;在配置了 `request` 时可通过 `json` 引用响应体"
92343
+ })
92344
+ }).annotations({
92345
+ title: "DataSource",
92346
+ description: "数据源配置"
92347
+ });
92348
+ }
92349
+ function tableDataSource(configure) {
92350
+ const base2 = DataSource(configure, {
92351
+ request: (env) => {
92352
+ env.registerVariable("pageIndex", "number", { description: "当前页码(从 0 开始);未启用分页时为 0" });
92353
+ env.registerVariable("pageSize", "number", { description: "每页行数;未启用分页时为 0" });
92354
+ env.registerVariable("query", "dyn", { description: QUERY_VAR_DESCRIPTION });
92355
+ },
92356
+ data: (env) => {
92357
+ env.registerVariable("query", "dyn", { description: QUERY_VAR_DESCRIPTION });
92358
+ }
92359
+ });
92331
92360
  const CelTotal = Expression({
92332
92361
  configure: (env) => {
92333
92362
  configure(env);
@@ -92339,14 +92368,7 @@ function DataSource(configure) {
92339
92368
  resultType: (type2) => type2 === "number" || type2 === "dyn" || type2.startsWith("optional")
92340
92369
  });
92341
92370
  return Struct({
92342
- request: optional(CelRequest).annotations({
92343
- title: "请求",
92344
- description: "可选的 HTTP 请求表达式;未配置时数据从 `data` 表达式中读取(通常引用上下文变量)"
92345
- }),
92346
- data: CelRows.annotations({
92347
- title: "数据",
92348
- description: "返回行数据列表(`list<dyn>`)的 CEL 表达式;在配置了 `request` 时可通过 `json` 引用响应体"
92349
- }),
92371
+ ...base2.fields,
92350
92372
  total: optional(CelTotal).annotations({
92351
92373
  title: "总数",
92352
92374
  description: "返回总行数(`number`)的 CEL 表达式;配置后启用服务端分页,留空则走前端分页"
@@ -92379,7 +92401,7 @@ function TableConfig(configure) {
92379
92401
  const CelRowKey = CelRowAccess(configure, {
92380
92402
  resultType: (type2) => type2 === "string" || type2 === "number" || type2 === "dyn"
92381
92403
  });
92382
- const dataSourceSchema2 = DataSource(configure);
92404
+ const dataSourceSchema2 = tableDataSource(configure);
92383
92405
  const { fields: actionFields } = ActionSchemaFields((env) => {
92384
92406
  configure(env);
92385
92407
  env.registerVariable("selected", "list<dyn>", {
@@ -92465,21 +92487,21 @@ function defaultTableConfig() {
92465
92487
  : index % 2 == 1 ? { 'background-color': 'oklch(98.5% 0 0)' } : { 'background-color': 'white' }`
92466
92488
  };
92467
92489
  }
92468
- const type$6 = "com.shwfed.form.field.table";
92469
- const compatibilityDate$6 = "2026-05-18";
92470
- const metadata$6 = {
92490
+ const type$7 = "com.shwfed.form.field.table";
92491
+ const compatibilityDate$7 = "2026-05-18";
92492
+ const metadata$7 = {
92471
92493
  name: "表格",
92472
92494
  icon: "fluent:table-20-regular",
92473
92495
  w: { initial: 12, min: 6, max: Infinity },
92474
92496
  h: { initial: 10, min: 5, max: Infinity, grow: true }
92475
92497
  };
92476
- function schema$6(configure) {
92498
+ function schema$7(configure) {
92477
92499
  const Table = suspend(
92478
92500
  () => TableConfig(configure)
92479
92501
  );
92480
92502
  return Struct({
92481
- type: Literal2(type$6),
92482
- compatibilityDate: Literal2(compatibilityDate$6),
92503
+ type: Literal2(type$7),
92504
+ compatibilityDate: Literal2(compatibilityDate$7),
92483
92505
  ...commonFieldFields(configure),
92484
92506
  label: optional(Locale.annotations({
92485
92507
  title: "标签",
@@ -92503,31 +92525,31 @@ function schema$6(configure) {
92503
92525
  description: "把一个可本地编辑的表格嵌入表单,其实时数据写入绑定路径"
92504
92526
  });
92505
92527
  }
92506
- function defaults$1() {
92528
+ function defaults$2() {
92507
92529
  const { dataSource: _omit, ...rest } = defaultTableConfig();
92508
92530
  return { table: rest };
92509
92531
  }
92510
92532
  const __vite_glob_0_20 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
92511
92533
  __proto__: null,
92512
- compatibilityDate: compatibilityDate$6,
92513
- defaults: defaults$1,
92514
- metadata: metadata$6,
92515
- schema: schema$6,
92516
- type: type$6
92534
+ compatibilityDate: compatibilityDate$7,
92535
+ defaults: defaults$2,
92536
+ metadata: metadata$7,
92537
+ schema: schema$7,
92538
+ type: type$7
92517
92539
  }, Symbol.toStringTag, { value: "Module" }));
92518
- const type$5 = "com.shwfed.form.field.collapsible";
92519
- const compatibilityDate$5 = "2026-05-20";
92520
- const metadata$5 = {
92540
+ const type$6 = "com.shwfed.form.field.collapsible";
92541
+ const compatibilityDate$6 = "2026-05-20";
92542
+ const metadata$6 = {
92521
92543
  name: "可折叠区域",
92522
92544
  icon: "fluent:chevron-down-20-regular",
92523
92545
  w: { initial: 12, min: 4, max: Infinity },
92524
92546
  h: { initial: 4, min: 2, max: Infinity, grow: true }
92525
92547
  };
92526
- function schema$5(configure) {
92548
+ function schema$6(configure) {
92527
92549
  const Unit = suspend(() => FormUnit(configure));
92528
92550
  return Struct({
92529
- type: Literal2(type$5),
92530
- compatibilityDate: Literal2(compatibilityDate$5),
92551
+ type: Literal2(type$6),
92552
+ compatibilityDate: Literal2(compatibilityDate$6),
92531
92553
  id: UUID.annotations({ description: "字段唯一标识;布局通过该 id 引用字段" }),
92532
92554
  displayName: optional(String$.annotations({
92533
92555
  title: "内部名称",
@@ -92551,7 +92573,7 @@ function schema$5(configure) {
92551
92573
  description: "带 Markdown 标题的可折叠区域,仅用于视觉分组,不影响字段在表单状态中的层级"
92552
92574
  });
92553
92575
  }
92554
- function defaults() {
92576
+ function defaults$1() {
92555
92577
  return {
92556
92578
  header: [{ locale: "zh", message: "" }],
92557
92579
  unit: {
@@ -92561,6 +92583,138 @@ function defaults() {
92561
92583
  };
92562
92584
  }
92563
92585
  const __vite_glob_0_21 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
92586
+ __proto__: null,
92587
+ compatibilityDate: compatibilityDate$6,
92588
+ defaults: defaults$1,
92589
+ metadata: metadata$6,
92590
+ schema: schema$6,
92591
+ type: type$6
92592
+ }, Symbol.toStringTag, { value: "Module" }));
92593
+ const type$5 = "com.shwfed.form.field.tree.multi";
92594
+ const compatibilityDate$5 = "2026-05-23";
92595
+ const metadata$5 = {
92596
+ name: "树(多选)",
92597
+ icon: "fluent:tree-evergreen-20-regular",
92598
+ w: { initial: 8, min: 4, max: Infinity },
92599
+ h: { initial: 8, min: 4, max: Infinity, grow: true }
92600
+ };
92601
+ function schema$5(configure) {
92602
+ const CelBool = Expression({ configure, resultType: "bool" });
92603
+ const nodeConfigure = (env) => {
92604
+ configure(env);
92605
+ env.registerVariable("node", "dyn", { description: "当前节点;由 `数据` 表达式返回的每一项" });
92606
+ };
92607
+ const CelNodeKey = Expression({
92608
+ configure: nodeConfigure,
92609
+ resultType: (t) => t === "string" || t === "number" || t === "dyn"
92610
+ });
92611
+ const CelNodeChildren = Expression({
92612
+ configure: nodeConfigure,
92613
+ // Accept lists, optional lists, and `dyn` — CEL infers an empty literal
92614
+ // such as `[]` as `list<dyn>` which a strict `list<dyn>` predicate would
92615
+ // accept, but a configured expression like `has(node.kids) ? node.kids :
92616
+ // null` lands on `dyn` once one branch is `null`. The looser predicate
92617
+ // mirrors the table's `data` expression.
92618
+ resultType: (t) => t === "dyn" || t.startsWith("list") || t.startsWith("optional")
92619
+ });
92620
+ const CelNodeBool = Expression({ configure: nodeConfigure, resultType: "bool" });
92621
+ const NodeLocaleMd = LocaleMarkdown({ configure: nodeConfigure });
92622
+ const CelKeywords = Expression({
92623
+ configure: nodeConfigure,
92624
+ // Empty list literals (`[]`) check as `list<dyn>`, and a
92625
+ // `node.?keywords` access lands on `optional<dyn>` — accept either by
92626
+ // sharing the same loose predicate the data expression uses.
92627
+ resultType: (t) => t === "dyn" || t.startsWith("list") || t.startsWith("optional")
92628
+ });
92629
+ return Struct({
92630
+ type: Literal2(type$5),
92631
+ compatibilityDate: Literal2(compatibilityDate$5),
92632
+ ...commonFieldFields(configure),
92633
+ label: optional(Locale.annotations({
92634
+ title: "标签",
92635
+ description: "字段前展示的文本;留空则不渲染标签"
92636
+ })),
92637
+ tooltip: optional(Locale.annotations({
92638
+ title: "提示",
92639
+ description: "鼠标悬停在标签上时展示的说明"
92640
+ })),
92641
+ binding: optional(String$.pipe(minLength(1)).annotations({
92642
+ title: "绑定路径",
92643
+ description: "写入表单状态的 `dot-prop` 路径;写入值为已勾选节点 ID 的数组;留空则为非受控字段"
92644
+ })),
92645
+ disabled: optional(CelBool.annotations({
92646
+ title: "禁用条件",
92647
+ description: "返回 `true` 时仍渲染但不可勾选"
92648
+ })),
92649
+ readonly: optional(CelBool.annotations({
92650
+ title: "只读条件",
92651
+ description: "返回 `true` 时仅以纯文本展示当前已勾选节点的标签"
92652
+ })),
92653
+ derived: derivedField(configure, "dyn"),
92654
+ dataSource: DataSource(configure).annotations({
92655
+ title: "数据源",
92656
+ description: "返回完整树(根节点列表)的数据源;树通过 `节点子级` 表达式逐层向下读取子级"
92657
+ }),
92658
+ nodeKey: CelNodeKey.annotations({
92659
+ title: "节点 ID",
92660
+ description: "为每个节点计算稳定唯一 ID 的 CEL 表达式,可访问 `node`;运行时以字符串形式存储"
92661
+ }),
92662
+ nodeChildren: CelNodeChildren.annotations({
92663
+ title: "节点子级",
92664
+ description: "返回当前节点的子级列表的 CEL 表达式;返回 `none` / `null` 视为叶子节点"
92665
+ }),
92666
+ nodeLabel: NodeLocaleMd.annotations({
92667
+ title: "节点标签",
92668
+ description: "节点展示的本地化文本,支持 Markdown 与 `{{ node.foo }}` / `{{ form.foo }}` 插值"
92669
+ }),
92670
+ nodeTooltip: optional(NodeLocaleMd.annotations({
92671
+ title: "节点提示",
92672
+ description: "鼠标悬停在节点上时展示的本地化提示,支持 Markdown 与插值"
92673
+ })),
92674
+ nodeSelectable: optional(CelNodeBool.annotations({
92675
+ title: "节点可选条件",
92676
+ description: "返回 `true` 表示该节点可被勾选;级联选择仍尊重该条件"
92677
+ })),
92678
+ cascade: optionalWith(Literal2("independent", "cascade-down", "cascade-both"), {
92679
+ default: () => "cascade-both"
92680
+ }).annotations({
92681
+ title: "级联模式",
92682
+ description: "`独立`:仅勾选当前节点;`向下级联`:勾选父节点同时勾选所有可选后代;`双向级联`:在向下级联基础上,父节点反映后代勾选状态(部分选中显示为半选)"
92683
+ }),
92684
+ expandAll: optionalWith(Boolean$, { default: () => false }).annotations({
92685
+ title: "默认全部展开",
92686
+ description: "开启后挂载时展开所有非叶子节点"
92687
+ }),
92688
+ filter: optional(Struct({
92689
+ enabled: Boolean$.annotations({ title: "启用", description: "是否在树上方显示搜索输入框" }),
92690
+ label: optional(Locale.annotations({
92691
+ title: "标签",
92692
+ description: "搜索输入框的浮动标签;留空则使用默认值「搜索」"
92693
+ })),
92694
+ keywords: optional(CelKeywords.annotations({
92695
+ title: "额外关键词",
92696
+ description: "返回字符串列表的 CEL 表达式,可访问 `node`;匹配规则为「节点标签 或 任一关键词」包含搜索词(不区分大小写)"
92697
+ }))
92698
+ }).annotations({
92699
+ title: "过滤",
92700
+ description: "客户端过滤;过滤不会影响已选中的节点 ID"
92701
+ }))
92702
+ }).annotations({
92703
+ title: "TreeMultiField",
92704
+ description: "基于树形数据的多选输入"
92705
+ });
92706
+ }
92707
+ function defaults() {
92708
+ return {
92709
+ dataSource: { data: "[]" },
92710
+ nodeKey: "string(node.id)",
92711
+ nodeChildren: "has(node.children) ? node.children : null",
92712
+ nodeLabel: [{ locale: "zh", message: "{{ node.label }}" }],
92713
+ cascade: "cascade-both",
92714
+ expandAll: false
92715
+ };
92716
+ }
92717
+ const __vite_glob_0_22 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
92564
92718
  __proto__: null,
92565
92719
  compatibilityDate: compatibilityDate$5,
92566
92720
  defaults,
@@ -92590,7 +92744,8 @@ const schemaModules$1 = /* @__PURE__ */ Object.assign({
92590
92744
  "../fields/2026-05-17/com.shwfed.form.field.checkbox.group/schema.ts": __vite_glob_0_18,
92591
92745
  "../fields/2026-05-17/com.shwfed.form.field.radio.group/schema.ts": __vite_glob_0_19,
92592
92746
  "../fields/2026-05-18/com.shwfed.form.field.table/schema.ts": __vite_glob_0_20,
92593
- "../fields/2026-05-20/com.shwfed.form.field.collapsible/schema.ts": __vite_glob_0_21
92747
+ "../fields/2026-05-20/com.shwfed.form.field.collapsible/schema.ts": __vite_glob_0_21,
92748
+ "../fields/2026-05-23/com.shwfed.form.field.tree.multi/schema.ts": __vite_glob_0_22
92594
92749
  });
92595
92750
  const configModules$1 = /* @__PURE__ */ Object.assign({
92596
92751
  "../fields/2026-04-22/com.shwfed.form.field.markdown/config.vue": __vite_glob_2_5,
@@ -92614,7 +92769,8 @@ const configModules$1 = /* @__PURE__ */ Object.assign({
92614
92769
  "../fields/2026-05-17/com.shwfed.form.field.checkbox.group/config.vue": __vite_glob_2_5,
92615
92770
  "../fields/2026-05-17/com.shwfed.form.field.radio.group/config.vue": __vite_glob_2_5,
92616
92771
  "../fields/2026-05-18/com.shwfed.form.field.table/config.vue": __vite_glob_2_5,
92617
- "../fields/2026-05-20/com.shwfed.form.field.collapsible/config.vue": __vite_glob_2_5
92772
+ "../fields/2026-05-20/com.shwfed.form.field.collapsible/config.vue": __vite_glob_2_5,
92773
+ "../fields/2026-05-23/com.shwfed.form.field.tree.multi/config.vue": __vite_glob_2_5
92618
92774
  });
92619
92775
  const runtimeModules$1 = /* @__PURE__ */ Object.assign({
92620
92776
  "../fields/2026-04-22/com.shwfed.form.field.markdown/runtime.vue": __vite_glob_2_5,
@@ -92638,7 +92794,8 @@ const runtimeModules$1 = /* @__PURE__ */ Object.assign({
92638
92794
  "../fields/2026-05-17/com.shwfed.form.field.checkbox.group/runtime.vue": __vite_glob_2_5,
92639
92795
  "../fields/2026-05-17/com.shwfed.form.field.radio.group/runtime.vue": __vite_glob_2_5,
92640
92796
  "../fields/2026-05-18/com.shwfed.form.field.table/runtime.vue": __vite_glob_2_5,
92641
- "../fields/2026-05-20/com.shwfed.form.field.collapsible/runtime.vue": __vite_glob_2_5
92797
+ "../fields/2026-05-20/com.shwfed.form.field.collapsible/runtime.vue": __vite_glob_2_5,
92798
+ "../fields/2026-05-23/com.shwfed.form.field.tree.multi/runtime.vue": __vite_glob_2_5
92642
92799
  });
92643
92800
  const sourceKey = (type2, compatibilityDate2) => `${type2}@${compatibilityDate2}`;
92644
92801
  const registry$1 = defineRegistry({
@@ -92711,7 +92868,7 @@ function getFields() {
92711
92868
  }));
92712
92869
  return _fields;
92713
92870
  }
92714
- new Proxy([], {
92871
+ const FIELDS = new Proxy([], {
92715
92872
  get(_, prop) {
92716
92873
  const list2 = getFields();
92717
92874
  const v = list2[prop];
@@ -92728,7 +92885,9 @@ new Proxy([], {
92728
92885
  }
92729
92886
  });
92730
92887
  function allFieldSchemas(configure) {
92731
- return getFields().map((entry) => entry.schema(configure));
92888
+ return getFields().map((entry) => entry.schema(configure).annotations({
92889
+ identifier: `${entry.type}@${entry.compatibilityDate}`
92890
+ }));
92732
92891
  }
92733
92892
  const KIND$1 = "shwfed.component.form";
92734
92893
  function unitFields(configure) {
@@ -93092,32 +93251,20 @@ function numberExpression(configure) {
93092
93251
  });
93093
93252
  }
93094
93253
  function dataSourceSchema(configure) {
93095
- const CelRequest = Expression({
93096
- configure: (env) => {
93097
- configure(env);
93098
- },
93099
- resultType: "HttpRequest"
93100
- });
93101
- const CelData = Expression({
93102
- configure: (env) => {
93103
- configure(env);
93104
- env.registerVariable("json", "optional<dyn>", {
93105
- description: "HTTP 响应体(已解析 JSON);未配置 request 时为 none"
93106
- });
93107
- },
93108
- resultType: isListType
93109
- });
93254
+ const base2 = DataSource(configure);
93110
93255
  return Struct({
93111
93256
  id: UUID.annotations({ description: "数据源唯一标识" }),
93112
93257
  name: String$.pipe(pattern(/^[a-z_]\w*$/i)).annotations({
93113
93258
  title: "变量名",
93114
93259
  description: "在 X / Y 表达式中引用该数据源的 CEL 标识符(字母或下划线开头,仅含字母、数字、下划线)"
93115
93260
  }),
93116
- request: optional(CelRequest).annotations({
93261
+ // Chart-specific phrasing wins for chart UX: the `data` description ends
93262
+ // with "结果以上面的变量名暴露给 X / Y", which is chart-only context.
93263
+ request: base2.fields.request.annotations({
93117
93264
  title: "请求",
93118
93265
  description: "可选的 HTTP 请求表达式;未配置时数据直接从 `数据` 表达式读取(通常引用上下文变量)"
93119
93266
  }),
93120
- data: CelData.annotations({
93267
+ data: base2.fields.data.annotations({
93121
93268
  title: "数据",
93122
93269
  description: "返回一个列表(`list<dyn>`)的 CEL 表达式;配置了 `请求` 时可通过 `json` 引用响应体。结果以上面的变量名暴露给 X / Y"
93123
93270
  })
@@ -93303,7 +93450,9 @@ function getOrBuildUnion(configure) {
93303
93450
  }).annotations({ identifier: "PageBlock" });
93304
93451
  unionCache.set(configure, entry);
93305
93452
  registerBlockRef(configure, entry.blockRef);
93306
- entry.members = BLOCKS.map((b) => b.schema(configure, entry.blockRef));
93453
+ entry.members = BLOCKS.map((b) => b.schema(configure, entry.blockRef).annotations({
93454
+ identifier: `${b.type}@${b.compatibilityDate}`
93455
+ }));
93307
93456
  entry.union = entry.members.length === 1 ? entry.members[0] : Union2(...entry.members);
93308
93457
  return entry;
93309
93458
  }
@@ -93325,31 +93474,11 @@ function PageConfig(configure) {
93325
93474
  description: "页面组件完整配置"
93326
93475
  });
93327
93476
  }
93328
- const pageSchema = PageConfig(() => {
93329
- });
93330
- function validateConfig(input) {
93331
- const result = decodeUnknownEither(pageSchema, { errors: "all" })(input);
93332
- if (isRight(result)) return { valid: true };
93333
- const error2 = result.left;
93334
- const issues = ArrayFormatter.formatErrorSync(error2).map((i) => ({
93335
- path: i.path,
93336
- message: i.message,
93337
- tag: i._tag
93338
- }));
93339
- return {
93340
- valid: false,
93341
- message: TreeFormatter.formatErrorSync(error2),
93342
- issues
93343
- };
93344
- }
93345
- function getSchema() {
93346
- return make$2(pageSchema);
93347
- }
93348
93477
  const isObject = (v) => typeof v === "object" && v !== null && !Array.isArray(v);
93349
- const branchesOf = (node) => {
93478
+ const branchesOf = (node, root) => {
93350
93479
  const list2 = node.anyOf ?? node.oneOf;
93351
93480
  if (!Array.isArray(list2)) return void 0;
93352
- return list2.filter(isObject);
93481
+ return list2.filter(isObject).map((b) => resolveRef(b, root)).filter(isObject);
93353
93482
  };
93354
93483
  const typeEnumOf = (branch) => {
93355
93484
  const props = isObject(branch.properties) ? branch.properties : void 0;
@@ -93385,8 +93514,8 @@ const parseSegment = (raw) => {
93385
93514
  if (at >= 0) return { name: s.slice(0, at), pin: s.slice(at + 1), array: array2 };
93386
93515
  return { name: s, array: array2 };
93387
93516
  };
93388
- const describeOptions = (node) => {
93389
- const branches = branchesOf(node);
93517
+ const describeOptions = (node, root) => {
93518
+ const branches = branchesOf(node, root);
93390
93519
  if (branches) {
93391
93520
  const grouped = /* @__PURE__ */ new Map();
93392
93521
  for (const b of branches) {
@@ -93422,7 +93551,7 @@ function narrowSchema(root, path) {
93422
93551
  };
93423
93552
  }
93424
93553
  const { name, pin, array: array2 } = parseSegment(raw);
93425
- const branches = branchesOf(node);
93554
+ const branches = branchesOf(node, root);
93426
93555
  if (branches) {
93427
93556
  const matches = branches.filter((b) => typeEnumOf(b).includes(name));
93428
93557
  if (matches.length === 0) {
@@ -93430,7 +93559,7 @@ function narrowSchema(root, path) {
93430
93559
  ok: false,
93431
93560
  error: `no '${name}' branch at '${walked.join("/") || "<root>"}'`,
93432
93561
  atPath: walked.join("/"),
93433
- options: describeOptions(node)
93562
+ options: describeOptions(node, root)
93434
93563
  };
93435
93564
  }
93436
93565
  let picked;
@@ -93464,7 +93593,7 @@ function narrowSchema(root, path) {
93464
93593
  ok: false,
93465
93594
  error: `can't resolve '${name}' at '${walked.join("/") || "<root>"}'`,
93466
93595
  atPath: walked.join("/"),
93467
- options: describeOptions(node)
93596
+ options: describeOptions(node, root)
93468
93597
  };
93469
93598
  }
93470
93599
  if (array2) {
@@ -93484,17 +93613,290 @@ function narrowSchema(root, path) {
93484
93613
  node = resolveRef(node, root);
93485
93614
  return { ok: true, schema: node, resolvedPath: walked.join("/") };
93486
93615
  }
93616
+ const pageSchema = PageConfig(() => {
93617
+ });
93618
+ function validateConfig(input) {
93619
+ const result = decodeUnknownEither(pageSchema, { errors: "all" })(input);
93620
+ if (isRight(result)) return { valid: true };
93621
+ const error2 = result.left;
93622
+ const issues = ArrayFormatter.formatErrorSync(error2).map((i) => ({
93623
+ path: i.path,
93624
+ message: i.message,
93625
+ tag: i._tag
93626
+ }));
93627
+ return {
93628
+ valid: false,
93629
+ message: TreeFormatter.formatErrorSync(error2),
93630
+ issues
93631
+ };
93632
+ }
93633
+ const KIND_NAMESPACES = [
93634
+ ["com.shwfed.block.", "block"],
93635
+ ["com.shwfed.form.field.", "field"],
93636
+ ["com.shwfed.table.column.", "column"],
93637
+ ["com.shwfed.actions.button.", "button"],
93638
+ ["com.shwfed.actions.item.", "item"]
93639
+ ];
93640
+ function kindOfType(t) {
93641
+ for (const [prefix, kind] of KIND_NAMESPACES) {
93642
+ if (t.startsWith(prefix)) return kind;
93643
+ }
93644
+ return void 0;
93645
+ }
93646
+ const isObj = (v) => typeof v === "object" && v !== null && !Array.isArray(v);
93647
+ function refId(node) {
93648
+ if (!isObj(node) || typeof node.$ref !== "string") return void 0;
93649
+ if (!node.$ref.startsWith("#/$defs/")) return void 0;
93650
+ return node.$ref.slice("#/$defs/".length);
93651
+ }
93652
+ function classifyDefs(defs) {
93653
+ const leafIds = /* @__PURE__ */ new Map();
93654
+ for (const [id2, def] of Object.entries(defs)) {
93655
+ if (!isObj(def)) continue;
93656
+ const props = isObj(def.properties) ? def.properties : void 0;
93657
+ const typeProp = props && isObj(props.type) ? props.type : void 0;
93658
+ const typeEnum = typeProp?.enum;
93659
+ if (!Array.isArray(typeEnum) || typeof typeEnum[0] !== "string") continue;
93660
+ const cdProp = props && isObj(props.compatibilityDate) ? props.compatibilityDate : void 0;
93661
+ const cdEnum = cdProp?.enum;
93662
+ if (!Array.isArray(cdEnum) || cdEnum.length !== 1) continue;
93663
+ const kind = kindOfType(typeEnum[0]);
93664
+ if (kind) leafIds.set(id2, kind);
93665
+ }
93666
+ const containerIds = /* @__PURE__ */ new Map();
93667
+ for (const [id2, def] of Object.entries(defs)) {
93668
+ if (!isObj(def)) continue;
93669
+ const arr = def.anyOf ?? def.oneOf;
93670
+ if (!Array.isArray(arr) || arr.length === 0) continue;
93671
+ const kinds = /* @__PURE__ */ new Set();
93672
+ let allLeaf = true;
93673
+ for (const branch of arr) {
93674
+ const bid = refId(branch);
93675
+ const kind = bid !== void 0 ? leafIds.get(bid) : void 0;
93676
+ if (!kind) {
93677
+ allLeaf = false;
93678
+ break;
93679
+ }
93680
+ kinds.add(kind);
93681
+ }
93682
+ if (allLeaf && kinds.size === 1) containerIds.set(id2, [...kinds][0]);
93683
+ }
93684
+ return { leafIds, containerIds };
93685
+ }
93686
+ function placeholder(kind) {
93687
+ return {
93688
+ "x-shwfed-slot": kind,
93689
+ "description": `可注册的 ${kind} 槽位。先调用 search_metadata(kind='${kind}') 列出可选 (type, compatibilityDate);再调用 get_schema(path='<type>') 获取该项的详细 schema。`
93690
+ };
93691
+ }
93692
+ function rewriteNode(node, leafIds, containerIds) {
93693
+ if (Array.isArray(node)) return node.map((n) => rewriteNode(n, leafIds, containerIds));
93694
+ if (!isObj(node)) return node;
93695
+ const arr = node.anyOf ?? node.oneOf;
93696
+ if (Array.isArray(arr) && arr.length > 0) {
93697
+ const kinds = /* @__PURE__ */ new Set();
93698
+ let allLeaf = true;
93699
+ for (const branch of arr) {
93700
+ const bid = refId(branch);
93701
+ const kind = bid !== void 0 ? leafIds.get(bid) : void 0;
93702
+ if (!kind) {
93703
+ allLeaf = false;
93704
+ break;
93705
+ }
93706
+ kinds.add(kind);
93707
+ }
93708
+ if (allLeaf && kinds.size === 1) return placeholder([...kinds][0]);
93709
+ }
93710
+ const id2 = refId(node);
93711
+ if (id2 !== void 0) {
93712
+ const cKind = containerIds.get(id2);
93713
+ if (cKind) return placeholder(cKind);
93714
+ const lKind = leafIds.get(id2);
93715
+ if (lKind) return placeholder(lKind);
93716
+ }
93717
+ const out = {};
93718
+ for (const [k, v] of Object.entries(node)) out[k] = rewriteNode(v, leafIds, containerIds);
93719
+ return out;
93720
+ }
93721
+ function collectRefs(node, sink) {
93722
+ if (Array.isArray(node)) {
93723
+ for (const n of node) collectRefs(n, sink);
93724
+ return;
93725
+ }
93726
+ if (!isObj(node)) return;
93727
+ const id2 = refId(node);
93728
+ if (id2 !== void 0) sink.add(id2);
93729
+ for (const v of Object.values(node)) collectRefs(v, sink);
93730
+ }
93731
+ function postProcessSchema(node, root) {
93732
+ if (!isObj(root)) return node;
93733
+ const defs = root.$defs ?? {};
93734
+ const { leafIds, containerIds } = classifyDefs(defs);
93735
+ const inputForRewrite = isObj(node) && node.$defs !== void 0 ? Object.fromEntries(Object.entries(node).filter(([k]) => k !== "$defs")) : node;
93736
+ const rewritten = rewriteNode(inputForRewrite, leafIds, containerIds);
93737
+ const queue = [];
93738
+ const seen = /* @__PURE__ */ new Set();
93739
+ const initial = /* @__PURE__ */ new Set();
93740
+ collectRefs(rewritten, initial);
93741
+ for (const id2 of initial) {
93742
+ if (!seen.has(id2)) {
93743
+ seen.add(id2);
93744
+ queue.push(id2);
93745
+ }
93746
+ }
93747
+ const keptDefs = {};
93748
+ while (queue.length > 0) {
93749
+ const id2 = queue.shift();
93750
+ if (leafIds.has(id2) || containerIds.has(id2)) continue;
93751
+ const def = defs[id2];
93752
+ if (def === void 0) continue;
93753
+ const rewrittenDef = rewriteNode(def, leafIds, containerIds);
93754
+ keptDefs[id2] = rewrittenDef;
93755
+ const sub = /* @__PURE__ */ new Set();
93756
+ collectRefs(rewrittenDef, sub);
93757
+ for (const s of sub) {
93758
+ if (!seen.has(s)) {
93759
+ seen.add(s);
93760
+ queue.push(s);
93761
+ }
93762
+ }
93763
+ }
93764
+ if (!isObj(rewritten)) return rewritten;
93765
+ const { $defs: _omit, ...rest } = rewritten;
93766
+ if (Object.keys(keptDefs).length === 0) return rest;
93767
+ return { ...rest, $defs: keptDefs };
93768
+ }
93769
+ function getSchema() {
93770
+ return make$2(pageSchema);
93771
+ }
93772
+ function lookupLeafByType(defs, type2, date2) {
93773
+ if (date2) {
93774
+ const id22 = `${type2}@${date2}`;
93775
+ const def = defs[id22];
93776
+ if (def !== void 0) return { id: id22, def };
93777
+ return void 0;
93778
+ }
93779
+ const candidates = Object.keys(defs).filter((k) => k.startsWith(`${type2}@`));
93780
+ if (candidates.length === 0) return void 0;
93781
+ candidates.sort();
93782
+ const id2 = candidates[candidates.length - 1];
93783
+ return { id: id2, def: defs[id2] };
93784
+ }
93785
+ function getSchemaAtPath(path) {
93786
+ const root = getSchema();
93787
+ if (!path || !path.trim()) {
93788
+ return { ok: true, path: "", schema: postProcessSchema(root, root) };
93789
+ }
93790
+ const trimmed = path.trim();
93791
+ if (!trimmed.includes("/")) {
93792
+ if (!isObj(root)) {
93793
+ return { ok: false, error: "schema root is not an object" };
93794
+ }
93795
+ const defs = root.$defs ?? {};
93796
+ const atIdx = trimmed.indexOf("@");
93797
+ const type2 = atIdx >= 0 ? trimmed.slice(0, atIdx) : trimmed;
93798
+ const date2 = atIdx >= 0 ? trimmed.slice(atIdx + 1) : void 0;
93799
+ const found = lookupLeafByType(defs, type2, date2);
93800
+ if (!found) {
93801
+ return {
93802
+ ok: false,
93803
+ error: date2 ? `no leaf '${type2}@${date2}'` : `no leaf with type '${type2}'`,
93804
+ options: "call search_metadata to discover available (type, compatibilityDate) values"
93805
+ };
93806
+ }
93807
+ return {
93808
+ ok: true,
93809
+ path: found.id,
93810
+ schema: postProcessSchema(found.def, root)
93811
+ };
93812
+ }
93813
+ const r = narrowSchema(root, trimmed);
93814
+ if (!r.ok) {
93815
+ return { ok: false, error: r.error, atPath: r.atPath, options: r.options };
93816
+ }
93817
+ return {
93818
+ ok: true,
93819
+ path: r.resolvedPath,
93820
+ schema: postProcessSchema(r.schema, root)
93821
+ };
93822
+ }
93823
+ function listMetadata(opts = {}) {
93824
+ const items2 = [];
93825
+ for (const e of BLOCKS) {
93826
+ items2.push({
93827
+ kind: "block",
93828
+ type: e.type,
93829
+ compatibilityDate: e.compatibilityDate,
93830
+ name: e.metadata.name,
93831
+ icon: e.metadata.icon
93832
+ });
93833
+ }
93834
+ for (const e of FIELDS) {
93835
+ const m = {
93836
+ kind: "field",
93837
+ type: e.type,
93838
+ compatibilityDate: e.compatibilityDate,
93839
+ name: e.metadata.name,
93840
+ icon: e.metadata.icon
93841
+ };
93842
+ if (e.deprecated) m.deprecated = true;
93843
+ if (e.supersededBy) m.supersededBy = { type: e.supersededBy.type, compatibilityDate: e.supersededBy.compatibilityDate };
93844
+ items2.push(m);
93845
+ }
93846
+ for (const e of COLUMNS) {
93847
+ const m = {
93848
+ kind: "column",
93849
+ type: e.type,
93850
+ compatibilityDate: e.compatibilityDate,
93851
+ name: e.metadata.name,
93852
+ icon: e.metadata.icon
93853
+ };
93854
+ if (e.deprecated) m.deprecated = true;
93855
+ if (e.supersededBy) m.supersededBy = { type: e.supersededBy.type, compatibilityDate: e.supersededBy.compatibilityDate };
93856
+ items2.push(m);
93857
+ }
93858
+ for (const e of BUTTONS) {
93859
+ const m = {
93860
+ kind: "button",
93861
+ type: e.type,
93862
+ compatibilityDate: e.compatibilityDate,
93863
+ name: e.metadata.name,
93864
+ icon: e.metadata.icon
93865
+ };
93866
+ if (e.deprecated) m.deprecated = true;
93867
+ items2.push(m);
93868
+ }
93869
+ for (const e of ITEMS) {
93870
+ items2.push({
93871
+ kind: "item",
93872
+ type: e.type,
93873
+ compatibilityDate: e.compatibilityDate,
93874
+ name: e.metadata.name,
93875
+ icon: e.metadata.icon
93876
+ });
93877
+ }
93878
+ const q = opts.query?.trim().toLowerCase();
93879
+ return items2.filter((m) => {
93880
+ if (opts.kind && m.kind !== opts.kind) return false;
93881
+ if (q && !m.type.toLowerCase().includes(q) && !m.name.toLowerCase().includes(q)) return false;
93882
+ return true;
93883
+ });
93884
+ }
93487
93885
  const server = new McpServer({
93488
93886
  name: "@shwfed/config",
93489
93887
  version: "0.1.0"
93490
93888
  }, {
93491
93889
  instructions: [
93492
- "Tools for authoring ShwfedConfig JSON. Use `get_schema` once to learn the shape, then iterate with `validate_config` until it returns `{ valid: true }`. Optionally call `preview_config` to render the result in the user's browser via a localhost-only playground; `stop_preview` shuts it down.",
93890
+ "Tools for authoring ShwfedConfig JSON. The schema is organized so the agent never pulls every registerable at once it discovers them via `search_metadata` and fetches each one with `get_schema(path='<type>')` on demand.",
93493
93891
  "",
93494
- "Versioned types (`type` + `compatibilityDate`): the same `type` may appear at multiple `compatibilityDate`s with DIFFERENT contracts — they are not interchangeable. Rules:",
93495
- "1. When creating a new entry, ALWAYS pick the LATEST `compatibilityDate` available for that `type` in the schema. Do not select an older one because it looks simpler or familiar.",
93496
- "2. When editing an existing config that uses an older `compatibilityDate`, prefer migrating it to the latest version (translate its fields into the newer contract) and tell the user you did so, instead of preserving the old version silently.",
93497
- "3. Never mix versions of the same `type` across a single config when the latest covers the use case."
93892
+ "Typical workflow:",
93893
+ "1. `get_schema()` with no path returns the page skeleton. Union slots (`blocks[]`, `columns[]`, `fields[]`, `buttons[]`, `items[]`) appear as thin placeholders carrying `x-shwfed-slot: <kind>`. They do NOT enumerate the available types.",
93894
+ "2. `search_metadata(kind=<slot kind>)` lists every registerable for that kind: `(type, compatibilityDate, name, icon)` plus deprecation info. Optional `query` filters by substring against `type` and `name`.",
93895
+ "3. `get_schema(path='<type>')` fetches the chosen leaf's schema, with its own inner union slots also replaced by placeholders. Use `<type>@<compatibilityDate>` to pin a version; bare `<type>` picks the latest. Slash-separated paths still work for stepping through the tree (e.g. `slot/blocks[]/com.shwfed.block.form/form`).",
93896
+ "4. `validate_config` — validates a draft. Iterate until it returns `{ valid: true }`. CEL expressions are accepted as strings without evaluation.",
93897
+ "5. (Optional) `preview_config` / `stop_preview` — render the result in a localhost browser tab.",
93898
+ "",
93899
+ "Versioning rules: the same `type` may appear at multiple `compatibilityDate`s with DIFFERENT contracts — they are not interchangeable. Always pick the LATEST `compatibilityDate` for new entries (this is the default when you pass bare `<type>`). When editing an existing config that uses an older `compatibilityDate`, prefer migrating it to the latest version and tell the user you did so, instead of preserving the old version silently."
93498
93900
  ].join("\n")
93499
93901
  });
93500
93902
  server.registerTool("validate_config", {
@@ -93514,27 +93916,23 @@ server.registerTool("validate_config", {
93514
93916
  server.registerTool("get_schema", {
93515
93917
  title: "Get ShwfedConfig JSON Schema",
93516
93918
  description: [
93517
- "Returns the JSON Schema (draft-07) describing the ShwfedConfig shape. The same `type` may be published at multiple `compatibilityDate` values with incompatible contracts; for new entries always select the latest `compatibilityDate` for that `type`, and prefer migrating older entries to it.",
93919
+ "Returns a JSON Schema (draft-07) fragment for a portion of the ShwfedConfig.",
93920
+ "",
93921
+ "Without `path`, returns the page-level skeleton. Union slots collapse into thin placeholders with `x-shwfed-slot: <kind>` and a hint to call `search_metadata` and then `get_schema(path='<type>')` — the leaves themselves are not enumerated.",
93518
93922
  "",
93519
- "Pass `path` to narrow into a sub-schema and avoid pulling the full schema into context. Path syntax (`/`-separated because type names contain dots):",
93520
- " - `foo` step into `properties.foo`",
93521
- " - `foo[]` step into an array's `items` after resolving `foo`",
93522
- " - `<type>` on a union, pick the branch whose `type` discriminator matches; if multiple `compatibilityDate` versions exist, picks the latest",
93523
- " - `<type>@<date>` pin to a specific compatibilityDate",
93524
- "Example: `blocks[]/com.shwfed.block.table/columns[]/com.shwfed.table.column.switch.local`. On a bad segment the error lists the legal next steps."
93923
+ "With `path`, two syntaxes are accepted:",
93924
+ " - `<type>` or `<type>@<compatibilityDate>` (no slash) — direct leaf lookup. Bare `<type>` picks the latest `compatibilityDate`; pin with `@<date>` for an older version. Example: `com.shwfed.form.field.text`, `com.shwfed.block.table@2026-05-06`.",
93925
+ " - `<segment>/<segment>/…` — step through the tree by property name, with `[]` to enter an array's `items` and `<type>` (optionally `@<date>`) to pick a union branch. Example: `slot/blocks[]/com.shwfed.block.table/columns[]/com.shwfed.table.column.text`.",
93926
+ "",
93927
+ "Inner union slots in the returned schema are also collapsed to placeholders, so a leaf fetch is bounded in size. To explore an inner slot, fetch that slot's leaf separately with another `get_schema(path='<type>')` call.",
93928
+ "",
93929
+ "Versioning: the same `type` may be published at multiple `compatibilityDate`s with incompatible contracts. For new entries, prefer the latest. For existing configs on older dates, prefer migrating to the latest and report the migration."
93525
93930
  ].join("\n"),
93526
93931
  inputSchema: {
93527
- path: string$1().optional().describe("Optional `/`-separated path to narrow into. Omit to return the full schema.")
93932
+ path: string$1().optional().describe("Optional path or leaf shortcut. See description for syntax.")
93528
93933
  }
93529
93934
  }, async ({ path }) => {
93530
- const schema2 = getSchema();
93531
- if (!path) {
93532
- return {
93533
- content: [{ type: "text", text: JSON.stringify(schema2, null, 2) }],
93534
- structuredContent: schema2
93535
- };
93536
- }
93537
- const result = narrowSchema(schema2, path);
93935
+ const result = getSchemaAtPath(path);
93538
93936
  if (!result.ok) {
93539
93937
  const payload2 = { error: result.error, atPath: result.atPath, options: result.options };
93540
93938
  return {
@@ -93543,7 +93941,33 @@ server.registerTool("get_schema", {
93543
93941
  isError: true
93544
93942
  };
93545
93943
  }
93546
- const payload = { path: result.resolvedPath, schema: result.schema };
93944
+ const payload = { path: result.path, schema: result.schema };
93945
+ return {
93946
+ content: [{ type: "text", text: JSON.stringify(payload, null, 2) }],
93947
+ structuredContent: payload
93948
+ };
93949
+ });
93950
+ server.registerTool("search_metadata", {
93951
+ title: "List or search registerable items",
93952
+ description: [
93953
+ "Returns metadata for every registerable item (block, field, column, button, item). Use this to discover what `(type, compatibilityDate)` values are valid at a given slot before calling `get_schema(path='<type>')` to fetch the chosen leaf's detailed schema.",
93954
+ "",
93955
+ "Each result carries:",
93956
+ " - `kind`: which slot the entry plugs into (`block` | `field` | `column` | `button` | `item`).",
93957
+ " - `type`, `compatibilityDate`: identity. The same `type` may appear at multiple dates with incompatible contracts.",
93958
+ " - `name`, `icon`: human-readable label and icon name (Iconify slug).",
93959
+ " - `deprecated`: present and `true` when the entry is superseded.",
93960
+ " - `supersededBy`: when known, the `(type, compatibilityDate)` to migrate to.",
93961
+ "",
93962
+ "Filter with `kind` (single kind) and/or `query` (case-insensitive substring against `type` and `name`). Omit both to dump everything."
93963
+ ].join("\n"),
93964
+ inputSchema: {
93965
+ kind: _enum$1(["block", "field", "column", "button", "item"]).optional().describe("Restrict results to one slot kind."),
93966
+ query: string$1().optional().describe("Case-insensitive substring matched against `type` and `name`.")
93967
+ }
93968
+ }, async ({ kind, query }) => {
93969
+ const items2 = listMetadata({ kind, query });
93970
+ const payload = { count: items2.length, items: items2 };
93547
93971
  return {
93548
93972
  content: [{ type: "text", text: JSON.stringify(payload, null, 2) }],
93549
93973
  structuredContent: payload