@nocobase/plugin-flow-engine 2.1.0-alpha.14 → 2.1.0-alpha.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/externalVersion.js +10 -10
- package/dist/locale/en-US.json +1 -0
- package/dist/locale/index.d.ts +2 -0
- package/dist/locale/zh-CN.json +1 -0
- package/dist/node_modules/ses/package.json +1 -1
- package/dist/node_modules/zod/package.json +1 -1
- package/dist/server/flow-surfaces/{compiler.d.ts → apply/compiler.d.ts} +1 -10
- package/dist/server/flow-surfaces/{compiler.js → apply/compiler.js} +41 -280
- package/dist/server/flow-surfaces/apply/layout.d.ts +34 -0
- package/dist/server/flow-surfaces/apply/layout.js +175 -0
- package/dist/server/flow-surfaces/apply/matching.d.ts +16 -0
- package/dist/server/flow-surfaces/apply/matching.js +181 -0
- package/dist/server/flow-surfaces/association-title-field.d.ts +20 -0
- package/dist/server/flow-surfaces/association-title-field.js +158 -0
- package/dist/server/flow-surfaces/blueprint/compile-blocks.d.ts +14 -0
- package/dist/server/flow-surfaces/blueprint/compile-blocks.js +706 -0
- package/dist/server/flow-surfaces/blueprint/compile-plan.d.ts +13 -0
- package/dist/server/flow-surfaces/blueprint/compile-plan.js +308 -0
- package/dist/server/flow-surfaces/blueprint/compile-reaction.d.ts +11 -0
- package/dist/server/flow-surfaces/blueprint/compile-reaction.js +72 -0
- package/dist/server/flow-surfaces/blueprint/index.d.ts +12 -0
- package/dist/server/flow-surfaces/blueprint/index.js +44 -0
- package/dist/server/flow-surfaces/blueprint/normalize-document.d.ts +10 -0
- package/dist/server/flow-surfaces/blueprint/normalize-document.js +296 -0
- package/dist/server/flow-surfaces/blueprint/private-utils.d.ts +26 -0
- package/dist/server/flow-surfaces/blueprint/private-utils.js +182 -0
- package/dist/server/flow-surfaces/blueprint/public-types.d.ts +153 -0
- package/dist/server/flow-surfaces/blueprint/public-types.js +24 -0
- package/dist/server/flow-surfaces/catalog-smart.d.ts +18 -0
- package/dist/server/flow-surfaces/catalog-smart.js +239 -0
- package/dist/server/flow-surfaces/catalog-smart.projector.d.ts +15 -0
- package/dist/server/flow-surfaces/catalog-smart.projector.js +157 -0
- package/dist/server/flow-surfaces/catalog-smart.types.d.ts +99 -0
- package/dist/server/flow-surfaces/catalog-smart.types.js +24 -0
- package/dist/server/flow-surfaces/catalog.d.ts +3 -0
- package/dist/server/flow-surfaces/catalog.js +163 -34
- package/dist/server/flow-surfaces/compose-compiler.d.ts +104 -0
- package/dist/server/flow-surfaces/compose-compiler.js +162 -0
- package/dist/server/flow-surfaces/compose-runtime.d.ts +89 -0
- package/dist/server/flow-surfaces/compose-runtime.js +338 -0
- package/dist/server/flow-surfaces/configure-options.js +12 -3
- package/dist/server/flow-surfaces/constants.d.ts +3 -2
- package/dist/server/flow-surfaces/constants.js +36 -3
- package/dist/server/flow-surfaces/default-action-popup.d.ts +52 -0
- package/dist/server/flow-surfaces/default-action-popup.js +258 -0
- package/dist/server/flow-surfaces/executor.d.ts +10 -0
- package/dist/server/flow-surfaces/executor.js +59 -24
- package/dist/server/flow-surfaces/field-binding-registry.d.ts +23 -0
- package/dist/server/flow-surfaces/field-binding-registry.js +391 -0
- package/dist/server/flow-surfaces/field-semantics.d.ts +1 -1
- package/dist/server/flow-surfaces/index.js +75 -0
- package/dist/server/flow-surfaces/node-use-sets.d.ts +15 -0
- package/dist/server/flow-surfaces/node-use-sets.js +114 -0
- package/dist/server/flow-surfaces/payload-shape.d.ts +9 -0
- package/dist/server/flow-surfaces/payload-shape.js +64 -0
- package/dist/server/flow-surfaces/placement.js +2 -6
- package/dist/server/flow-surfaces/planning/action-specs.d.ts +179 -0
- package/dist/server/flow-surfaces/planning/action-specs.js +190 -0
- package/dist/server/flow-surfaces/planning/compiler.d.ts +37 -0
- package/dist/server/flow-surfaces/planning/compiler.js +376 -0
- package/dist/server/flow-surfaces/planning/context.d.ts +30 -0
- package/dist/server/flow-surfaces/planning/context.js +139 -0
- package/dist/server/flow-surfaces/planning/created-keys.d.ts +34 -0
- package/dist/server/flow-surfaces/planning/created-keys.js +375 -0
- package/dist/server/flow-surfaces/planning/key-kind.d.ts +11 -0
- package/dist/server/flow-surfaces/planning/key-kind.js +86 -0
- package/dist/server/flow-surfaces/planning/key-persistence.d.ts +34 -0
- package/dist/server/flow-surfaces/planning/key-persistence.js +148 -0
- package/dist/server/flow-surfaces/planning/key-registry.d.ts +40 -0
- package/dist/server/flow-surfaces/planning/key-registry.js +206 -0
- package/dist/server/flow-surfaces/planning/runtime.d.ts +37 -0
- package/dist/server/flow-surfaces/planning/runtime.js +259 -0
- package/dist/server/flow-surfaces/planning/step-link.d.ts +14 -0
- package/dist/server/flow-surfaces/planning/step-link.js +104 -0
- package/dist/server/flow-surfaces/planning/types.d.ts +55 -0
- package/dist/server/flow-surfaces/planning/types.js +24 -0
- package/dist/server/flow-surfaces/reaction/errors.d.ts +20 -0
- package/dist/server/flow-surfaces/reaction/errors.js +69 -0
- package/dist/server/flow-surfaces/reaction/field-value.d.ts +34 -0
- package/dist/server/flow-surfaces/reaction/field-value.js +181 -0
- package/dist/server/flow-surfaces/reaction/fingerprint.d.ts +16 -0
- package/dist/server/flow-surfaces/reaction/fingerprint.js +71 -0
- package/dist/server/flow-surfaces/reaction/linkage.d.ts +136 -0
- package/dist/server/flow-surfaces/reaction/linkage.js +882 -0
- package/dist/server/flow-surfaces/reaction/meta.d.ts +11 -0
- package/dist/server/flow-surfaces/reaction/meta.js +451 -0
- package/dist/server/flow-surfaces/reaction/registry.d.ts +136 -0
- package/dist/server/flow-surfaces/reaction/registry.js +186 -0
- package/dist/server/flow-surfaces/reaction/resolver.d.ts +22 -0
- package/dist/server/flow-surfaces/reaction/resolver.js +202 -0
- package/dist/server/flow-surfaces/reaction/types.d.ts +241 -0
- package/dist/server/flow-surfaces/reaction/types.js +24 -0
- package/dist/server/flow-surfaces/reaction/utils.d.ts +17 -0
- package/dist/server/flow-surfaces/reaction/utils.js +67 -0
- package/dist/server/flow-surfaces/reaction/value-expr.d.ts +15 -0
- package/dist/server/flow-surfaces/reaction/value-expr.js +209 -0
- package/dist/server/flow-surfaces/reference-guards.d.ts +19 -0
- package/dist/server/flow-surfaces/reference-guards.js +103 -0
- package/dist/server/flow-surfaces/service-helpers.d.ts +42 -0
- package/dist/server/flow-surfaces/service-helpers.js +377 -0
- package/dist/server/flow-surfaces/service-utils.d.ts +105 -0
- package/dist/server/flow-surfaces/service-utils.js +760 -0
- package/dist/server/flow-surfaces/service.d.ts +189 -103
- package/dist/server/flow-surfaces/service.js +3975 -1770
- package/dist/server/flow-surfaces/template-compatibility.d.ts +42 -0
- package/dist/server/flow-surfaces/template-compatibility.js +189 -0
- package/dist/server/flow-surfaces/template-service-utils.d.ts +62 -0
- package/dist/server/flow-surfaces/template-service-utils.js +281 -0
- package/dist/server/flow-surfaces/types.d.ts +129 -37
- package/dist/swagger/flow-surfaces.d.ts +3773 -1581
- package/dist/swagger/flow-surfaces.examples.d.ts +1215 -0
- package/dist/swagger/flow-surfaces.examples.js +1363 -0
- package/dist/swagger/flow-surfaces.js +2209 -1684
- package/dist/swagger/flow-surfaces.template-action-docs.d.ts +62 -0
- package/dist/swagger/flow-surfaces.template-action-docs.js +121 -0
- package/dist/swagger/flow-surfaces.template-schemas.d.ts +239 -0
- package/dist/swagger/flow-surfaces.template-schemas.js +255 -0
- package/dist/swagger/index.d.ts +3773 -1581
- package/package.json +2 -2
|
@@ -52,6 +52,7 @@ module.exports = __toCommonJS(catalog_exports);
|
|
|
52
52
|
var import_action_scope = require("./action-scope");
|
|
53
53
|
var import_errors = require("./errors");
|
|
54
54
|
var import_field_semantics = require("./field-semantics");
|
|
55
|
+
var import_field_binding_registry = require("./field-binding-registry");
|
|
55
56
|
var import_support_matrix = require("./support-matrix");
|
|
56
57
|
const ANY_VALUE_SCHEMA = {};
|
|
57
58
|
const STRING_SCHEMA = { type: "string" };
|
|
@@ -111,7 +112,10 @@ const OPEN_VIEW_ALLOWED_PATHS = [
|
|
|
111
112
|
"openView.title",
|
|
112
113
|
"openView.uid",
|
|
113
114
|
"openView.subModelKey",
|
|
114
|
-
"openView.navigation"
|
|
115
|
+
"openView.navigation",
|
|
116
|
+
"openView.template",
|
|
117
|
+
"openView.template.uid",
|
|
118
|
+
"openView.template.mode"
|
|
115
119
|
];
|
|
116
120
|
const OPEN_VIEW_PATH_SCHEMAS = {
|
|
117
121
|
"openView.mode": OPEN_VIEW_MODE_SCHEMA,
|
|
@@ -126,7 +130,13 @@ const OPEN_VIEW_PATH_SCHEMAS = {
|
|
|
126
130
|
"openView.title": STRING_SCHEMA,
|
|
127
131
|
"openView.uid": STRING_SCHEMA,
|
|
128
132
|
"openView.subModelKey": STRING_SCHEMA,
|
|
129
|
-
"openView.navigation": BOOLEAN_SCHEMA
|
|
133
|
+
"openView.navigation": BOOLEAN_SCHEMA,
|
|
134
|
+
"openView.template": OBJECT_SCHEMA,
|
|
135
|
+
"openView.template.uid": STRING_SCHEMA,
|
|
136
|
+
"openView.template.mode": {
|
|
137
|
+
type: "string",
|
|
138
|
+
enum: ["reference", "copy"]
|
|
139
|
+
}
|
|
130
140
|
};
|
|
131
141
|
const CONFIRM_ALLOWED_PATHS = ["confirm.enable", "confirm.title", "confirm.content"];
|
|
132
142
|
const TABLE_COLUMN_ALLOWED_PATHS = ["title.title"];
|
|
@@ -264,6 +274,14 @@ const FILTER_FORM_BLOCK_SETTINGS_GROUP = {
|
|
|
264
274
|
"defaultValues.value": ARRAY_SCHEMA
|
|
265
275
|
}
|
|
266
276
|
};
|
|
277
|
+
const BLOCK_LINKAGE_CARD_SETTINGS_GROUP = {
|
|
278
|
+
allowedPaths: ["linkageRules"],
|
|
279
|
+
mergeStrategy: "deep",
|
|
280
|
+
eventBindingSteps: ["linkageRules"],
|
|
281
|
+
pathSchemas: {
|
|
282
|
+
linkageRules: ARRAY_SCHEMA
|
|
283
|
+
}
|
|
284
|
+
};
|
|
267
285
|
const TABLE_SETTINGS_GROUP = {
|
|
268
286
|
allowedPaths: [
|
|
269
287
|
"quickEdit.editable",
|
|
@@ -308,6 +326,9 @@ const FLOW_SURFACE_BLOCK_OWNER_PLUGIN_BY_USE = new Map(
|
|
|
308
326
|
);
|
|
309
327
|
const JS_EDITABLE_FIELD_USE_SET = /* @__PURE__ */ new Set(["JSEditableFieldModel"]);
|
|
310
328
|
const JS_DISPLAY_FIELD_USE_SET = /* @__PURE__ */ new Set(["JSFieldModel"]);
|
|
329
|
+
const REGISTERED_EDITABLE_FIELD_USE_SET = (0, import_field_binding_registry.getRegisteredFieldUses)("editable");
|
|
330
|
+
const REGISTERED_DISPLAY_FIELD_USE_SET = (0, import_field_binding_registry.getRegisteredFieldUses)("display");
|
|
331
|
+
const REGISTERED_FILTER_FIELD_USE_SET = (0, import_field_binding_registry.getRegisteredFieldUses)("filter");
|
|
311
332
|
const EDITABLE_FIELD_USE_SET = /* @__PURE__ */ new Set([
|
|
312
333
|
...JS_EDITABLE_FIELD_USE_SET,
|
|
313
334
|
"RecordSelectFieldModel",
|
|
@@ -360,7 +381,10 @@ const FILTER_FIELD_USE_SET = /* @__PURE__ */ new Set([
|
|
|
360
381
|
const KNOWN_FIELD_NODE_USES = /* @__PURE__ */ new Set([
|
|
361
382
|
...EDITABLE_FIELD_USE_SET,
|
|
362
383
|
...DISPLAY_FIELD_USE_SET,
|
|
363
|
-
...FILTER_FIELD_USE_SET
|
|
384
|
+
...FILTER_FIELD_USE_SET,
|
|
385
|
+
...REGISTERED_EDITABLE_FIELD_USE_SET,
|
|
386
|
+
...REGISTERED_DISPLAY_FIELD_USE_SET,
|
|
387
|
+
...REGISTERED_FILTER_FIELD_USE_SET
|
|
364
388
|
]);
|
|
365
389
|
function keyedDomain(allowedKeys, mergeStrategy = "deep") {
|
|
366
390
|
return {
|
|
@@ -508,6 +532,29 @@ const GRID_NODE_CONTRACT = createContract({
|
|
|
508
532
|
}
|
|
509
533
|
});
|
|
510
534
|
GRID_NODE_CONTRACT.domains.props = keyedDomain(["rows", "sizes", "rowOrder"], "replace");
|
|
535
|
+
const FORM_GRID_NODE_CONTRACT = createContract({
|
|
536
|
+
editableDomains: ["props", "stepParams", "flowRegistry"],
|
|
537
|
+
props: ["rows", "sizes", "rowOrder"],
|
|
538
|
+
stepParams: ["formModelSettings", "eventSettings"],
|
|
539
|
+
flowRegistry: true,
|
|
540
|
+
layoutCapabilities: GRID_LAYOUT_CAPABILITIES,
|
|
541
|
+
eventCapabilities: {
|
|
542
|
+
direct: DEFAULT_DIRECT_EVENTS
|
|
543
|
+
},
|
|
544
|
+
eventBindings: {
|
|
545
|
+
formModelSettings: {
|
|
546
|
+
stepKeys: ["layout", "assignRules"]
|
|
547
|
+
},
|
|
548
|
+
eventSettings: {
|
|
549
|
+
stepKeys: ["linkageRules"]
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
});
|
|
553
|
+
FORM_GRID_NODE_CONTRACT.domains.props = keyedDomain(["rows", "sizes", "rowOrder"], "replace");
|
|
554
|
+
FORM_GRID_NODE_CONTRACT.domains.stepParams = groupedDomain({
|
|
555
|
+
formModelSettings: FORM_MODEL_SETTINGS_GROUP,
|
|
556
|
+
eventSettings: EVENT_SETTINGS_GROUP
|
|
557
|
+
});
|
|
511
558
|
const PAGE_NODE_CONTRACT = createContract({
|
|
512
559
|
editableDomains: ["props", "stepParams", "flowRegistry"],
|
|
513
560
|
props: ["title", "displayTitle", "enableTabs", "icon", "enableHeader"],
|
|
@@ -574,7 +621,7 @@ const TABLE_BLOCK_CONTRACT = createContract({
|
|
|
574
621
|
editableDomains: ["props", "decoratorProps", "stepParams", "flowRegistry"],
|
|
575
622
|
props: ["title", "displayTitle", "height", "heightMode"],
|
|
576
623
|
decoratorProps: ["height", "heightMode"],
|
|
577
|
-
stepParams: ["resourceSettings", "tableSettings"],
|
|
624
|
+
stepParams: ["resourceSettings", "tableSettings", "cardSettings"],
|
|
578
625
|
flowRegistry: true,
|
|
579
626
|
eventCapabilities: {
|
|
580
627
|
direct: ["beforeRender", "paginationChange"],
|
|
@@ -583,13 +630,14 @@ const TABLE_BLOCK_CONTRACT = createContract({
|
|
|
583
630
|
});
|
|
584
631
|
TABLE_BLOCK_CONTRACT.domains.stepParams = groupedDomain({
|
|
585
632
|
resourceSettings: RESOURCE_SETTINGS_GROUP,
|
|
586
|
-
tableSettings: TABLE_SETTINGS_GROUP
|
|
633
|
+
tableSettings: TABLE_SETTINGS_GROUP,
|
|
634
|
+
cardSettings: BLOCK_LINKAGE_CARD_SETTINGS_GROUP
|
|
587
635
|
});
|
|
588
636
|
const FORM_BLOCK_CONTRACT = createContract({
|
|
589
637
|
editableDomains: ["props", "decoratorProps", "stepParams", "flowRegistry"],
|
|
590
638
|
props: ["title", "displayTitle", "labelWidth", "labelWrap"],
|
|
591
639
|
decoratorProps: ["labelWidth", "labelWrap"],
|
|
592
|
-
stepParams: ["resourceSettings", "formModelSettings", "eventSettings"],
|
|
640
|
+
stepParams: ["resourceSettings", "formModelSettings", "eventSettings", "cardSettings"],
|
|
593
641
|
flowRegistry: true,
|
|
594
642
|
eventCapabilities: {
|
|
595
643
|
direct: DEFAULT_DIRECT_EVENTS,
|
|
@@ -599,13 +647,14 @@ const FORM_BLOCK_CONTRACT = createContract({
|
|
|
599
647
|
FORM_BLOCK_CONTRACT.domains.stepParams = groupedDomain({
|
|
600
648
|
resourceSettings: RESOURCE_SETTINGS_GROUP,
|
|
601
649
|
formModelSettings: FORM_MODEL_SETTINGS_GROUP,
|
|
602
|
-
eventSettings: EVENT_SETTINGS_GROUP
|
|
650
|
+
eventSettings: EVENT_SETTINGS_GROUP,
|
|
651
|
+
cardSettings: BLOCK_LINKAGE_CARD_SETTINGS_GROUP
|
|
603
652
|
});
|
|
604
653
|
const CREATE_FORM_BLOCK_CONTRACT = createContract({
|
|
605
654
|
editableDomains: ["props", "decoratorProps", "stepParams", "flowRegistry"],
|
|
606
655
|
props: ["title", "displayTitle", "labelWidth", "labelWrap"],
|
|
607
656
|
decoratorProps: ["labelWidth", "labelWrap"],
|
|
608
|
-
stepParams: ["resourceSettings", "formModelSettings", "eventSettings", "formSettings"],
|
|
657
|
+
stepParams: ["resourceSettings", "formModelSettings", "eventSettings", "formSettings", "cardSettings"],
|
|
609
658
|
flowRegistry: true,
|
|
610
659
|
eventCapabilities: {
|
|
611
660
|
direct: DEFAULT_DIRECT_EVENTS,
|
|
@@ -616,13 +665,14 @@ CREATE_FORM_BLOCK_CONTRACT.domains.stepParams = groupedDomain({
|
|
|
616
665
|
resourceSettings: RESOURCE_SETTINGS_GROUP,
|
|
617
666
|
formModelSettings: FORM_MODEL_SETTINGS_GROUP,
|
|
618
667
|
eventSettings: EVENT_SETTINGS_GROUP,
|
|
619
|
-
formSettings: CREATE_FORM_SETTINGS_EVENT_ONLY_GROUP
|
|
668
|
+
formSettings: CREATE_FORM_SETTINGS_EVENT_ONLY_GROUP,
|
|
669
|
+
cardSettings: BLOCK_LINKAGE_CARD_SETTINGS_GROUP
|
|
620
670
|
});
|
|
621
671
|
const EDIT_FORM_BLOCK_CONTRACT = createContract({
|
|
622
672
|
editableDomains: ["props", "decoratorProps", "stepParams", "flowRegistry"],
|
|
623
673
|
props: ["title", "displayTitle", "labelWidth", "labelWrap"],
|
|
624
674
|
decoratorProps: ["labelWidth", "labelWrap"],
|
|
625
|
-
stepParams: ["resourceSettings", "formModelSettings", "eventSettings", "formSettings"],
|
|
675
|
+
stepParams: ["resourceSettings", "formModelSettings", "eventSettings", "formSettings", "cardSettings"],
|
|
626
676
|
flowRegistry: true,
|
|
627
677
|
eventCapabilities: {
|
|
628
678
|
direct: DEFAULT_DIRECT_EVENTS,
|
|
@@ -633,13 +683,14 @@ EDIT_FORM_BLOCK_CONTRACT.domains.stepParams = groupedDomain({
|
|
|
633
683
|
resourceSettings: RESOURCE_SETTINGS_GROUP,
|
|
634
684
|
formModelSettings: FORM_MODEL_SETTINGS_GROUP,
|
|
635
685
|
eventSettings: EVENT_SETTINGS_GROUP,
|
|
636
|
-
formSettings: EDIT_FORM_SETTINGS_GROUP
|
|
686
|
+
formSettings: EDIT_FORM_SETTINGS_GROUP,
|
|
687
|
+
cardSettings: BLOCK_LINKAGE_CARD_SETTINGS_GROUP
|
|
637
688
|
});
|
|
638
689
|
const DETAILS_BLOCK_CONTRACT = createContract({
|
|
639
690
|
editableDomains: ["props", "decoratorProps", "stepParams", "flowRegistry"],
|
|
640
691
|
props: ["title", "displayTitle", "labelWidth", "labelWrap"],
|
|
641
692
|
decoratorProps: ["labelWidth", "labelWrap"],
|
|
642
|
-
stepParams: ["resourceSettings", "detailsSettings"],
|
|
693
|
+
stepParams: ["resourceSettings", "detailsSettings", "cardSettings"],
|
|
643
694
|
flowRegistry: true,
|
|
644
695
|
eventCapabilities: {
|
|
645
696
|
direct: DEFAULT_DIRECT_EVENTS,
|
|
@@ -648,7 +699,8 @@ const DETAILS_BLOCK_CONTRACT = createContract({
|
|
|
648
699
|
});
|
|
649
700
|
DETAILS_BLOCK_CONTRACT.domains.stepParams = groupedDomain({
|
|
650
701
|
resourceSettings: RESOURCE_SETTINGS_GROUP,
|
|
651
|
-
detailsSettings: DETAILS_SETTINGS_GROUP
|
|
702
|
+
detailsSettings: DETAILS_SETTINGS_GROUP,
|
|
703
|
+
cardSettings: BLOCK_LINKAGE_CARD_SETTINGS_GROUP
|
|
652
704
|
});
|
|
653
705
|
const FILTER_FORM_BLOCK_CONTRACT = createContract({
|
|
654
706
|
editableDomains: ["props", "decoratorProps", "stepParams", "flowRegistry"],
|
|
@@ -669,7 +721,7 @@ const LIST_BLOCK_CONTRACT = createContract({
|
|
|
669
721
|
editableDomains: ["props", "decoratorProps", "stepParams", "flowRegistry"],
|
|
670
722
|
props: ["title", "displayTitle"],
|
|
671
723
|
decoratorProps: ["height", "heightMode"],
|
|
672
|
-
stepParams: ["resourceSettings", "listSettings"],
|
|
724
|
+
stepParams: ["resourceSettings", "listSettings", "cardSettings"],
|
|
673
725
|
flowRegistry: true,
|
|
674
726
|
eventCapabilities: {
|
|
675
727
|
direct: DEFAULT_DIRECT_EVENTS,
|
|
@@ -702,13 +754,14 @@ LIST_BLOCK_CONTRACT.domains.stepParams = groupedDomain({
|
|
|
702
754
|
"dataScope.filter": FILTER_GROUP_SCHEMA,
|
|
703
755
|
"layout.layout": STRING_SCHEMA
|
|
704
756
|
}
|
|
705
|
-
}
|
|
757
|
+
},
|
|
758
|
+
cardSettings: BLOCK_LINKAGE_CARD_SETTINGS_GROUP
|
|
706
759
|
});
|
|
707
760
|
const GRID_CARD_BLOCK_CONTRACT = createContract({
|
|
708
761
|
editableDomains: ["props", "decoratorProps", "stepParams", "flowRegistry"],
|
|
709
762
|
props: ["title", "displayTitle"],
|
|
710
763
|
decoratorProps: ["height", "heightMode"],
|
|
711
|
-
stepParams: ["resourceSettings", "GridCardSettings"],
|
|
764
|
+
stepParams: ["resourceSettings", "GridCardSettings", "cardSettings"],
|
|
712
765
|
flowRegistry: true,
|
|
713
766
|
eventCapabilities: {
|
|
714
767
|
direct: DEFAULT_DIRECT_EVENTS,
|
|
@@ -758,7 +811,8 @@ GRID_CARD_BLOCK_CONTRACT.domains.stepParams = groupedDomain({
|
|
|
758
811
|
"dataScope.filter": FILTER_GROUP_SCHEMA,
|
|
759
812
|
"layout.layout": STRING_SCHEMA
|
|
760
813
|
}
|
|
761
|
-
}
|
|
814
|
+
},
|
|
815
|
+
cardSettings: BLOCK_LINKAGE_CARD_SETTINGS_GROUP
|
|
762
816
|
});
|
|
763
817
|
const MARKDOWN_BLOCK_CONTRACT = createContract({
|
|
764
818
|
editableDomains: ["props", "stepParams", "flowRegistry"],
|
|
@@ -813,14 +867,15 @@ IFRAME_BLOCK_CONTRACT.domains.stepParams = groupedDomain({
|
|
|
813
867
|
}
|
|
814
868
|
});
|
|
815
869
|
const CHART_CARD_SETTINGS_GROUP = {
|
|
816
|
-
allowedPaths: ["titleDescription.title", "blockHeight.heightMode", "blockHeight.height"],
|
|
870
|
+
allowedPaths: ["titleDescription.title", "blockHeight.heightMode", "blockHeight.height", "linkageRules"],
|
|
817
871
|
clearable: true,
|
|
818
872
|
mergeStrategy: "deep",
|
|
819
|
-
eventBindingSteps: ["titleDescription", "blockHeight"],
|
|
873
|
+
eventBindingSteps: ["titleDescription", "blockHeight", "linkageRules"],
|
|
820
874
|
pathSchemas: {
|
|
821
875
|
"titleDescription.title": STRING_SCHEMA,
|
|
822
876
|
"blockHeight.heightMode": STRING_SCHEMA,
|
|
823
|
-
"blockHeight.height": NUMBER_SCHEMA
|
|
877
|
+
"blockHeight.height": NUMBER_SCHEMA,
|
|
878
|
+
linkageRules: ARRAY_SCHEMA
|
|
824
879
|
}
|
|
825
880
|
};
|
|
826
881
|
const CHART_BLOCK_CONTRACT = createContract({
|
|
@@ -846,7 +901,7 @@ CHART_BLOCK_CONTRACT.domains.stepParams = groupedDomain({
|
|
|
846
901
|
const ACTION_PANEL_BLOCK_CONTRACT = createContract({
|
|
847
902
|
editableDomains: ["props", "stepParams", "flowRegistry"],
|
|
848
903
|
props: ["title", "displayTitle", "layout", "ellipsis"],
|
|
849
|
-
stepParams: ["actionPanelBlockSetting"],
|
|
904
|
+
stepParams: ["actionPanelBlockSetting", "cardSettings"],
|
|
850
905
|
flowRegistry: true,
|
|
851
906
|
eventCapabilities: {
|
|
852
907
|
direct: DEFAULT_DIRECT_EVENTS
|
|
@@ -860,7 +915,8 @@ ACTION_PANEL_BLOCK_CONTRACT.domains.stepParams = groupedDomain({
|
|
|
860
915
|
"layout.layout": STRING_SCHEMA,
|
|
861
916
|
"ellipsis.ellipsis": BOOLEAN_SCHEMA
|
|
862
917
|
}
|
|
863
|
-
}
|
|
918
|
+
},
|
|
919
|
+
cardSettings: BLOCK_LINKAGE_CARD_SETTINGS_GROUP
|
|
864
920
|
});
|
|
865
921
|
const JS_BLOCK_CONTRACT = createContract({
|
|
866
922
|
editableDomains: ["decoratorProps", "stepParams", "flowRegistry"],
|
|
@@ -882,7 +938,7 @@ JS_BLOCK_CONTRACT.domains.stepParams = groupedDomain({
|
|
|
882
938
|
const MAP_BLOCK_CONTRACT = createContract({
|
|
883
939
|
editableDomains: ["props", "stepParams", "flowRegistry"],
|
|
884
940
|
props: ["title", "displayTitle", "height", "heightMode", "mapField", "marker", "lineSort", "zoom"],
|
|
885
|
-
stepParams: ["resourceSettings", "createMapBlock"],
|
|
941
|
+
stepParams: ["resourceSettings", "createMapBlock", "cardSettings"],
|
|
886
942
|
flowRegistry: true,
|
|
887
943
|
eventCapabilities: {
|
|
888
944
|
direct: DEFAULT_DIRECT_EVENTS,
|
|
@@ -917,12 +973,13 @@ MAP_BLOCK_CONTRACT.domains.stepParams = groupedDomain({
|
|
|
917
973
|
"lineSort.sort": ARRAY_SCHEMA,
|
|
918
974
|
"mapZoom.zoom": NUMBER_SCHEMA
|
|
919
975
|
}
|
|
920
|
-
}
|
|
976
|
+
},
|
|
977
|
+
cardSettings: BLOCK_LINKAGE_CARD_SETTINGS_GROUP
|
|
921
978
|
});
|
|
922
979
|
const COMMENTS_BLOCK_CONTRACT = createContract({
|
|
923
980
|
editableDomains: ["props", "stepParams", "flowRegistry"],
|
|
924
981
|
props: ["title", "displayTitle"],
|
|
925
|
-
stepParams: ["resourceSettings", "commentsSettings"],
|
|
982
|
+
stepParams: ["resourceSettings", "commentsSettings", "cardSettings"],
|
|
926
983
|
flowRegistry: true,
|
|
927
984
|
eventCapabilities: {
|
|
928
985
|
direct: DEFAULT_DIRECT_EVENTS,
|
|
@@ -947,6 +1004,7 @@ COMMENTS_BLOCK_CONTRACT.domains.stepParams = groupedDomain({
|
|
|
947
1004
|
"init.associationPathName": STRING_SCHEMA
|
|
948
1005
|
}
|
|
949
1006
|
},
|
|
1007
|
+
cardSettings: BLOCK_LINKAGE_CARD_SETTINGS_GROUP,
|
|
950
1008
|
commentsSettings: {
|
|
951
1009
|
allowedPaths: ["pageSize.pageSize", "dataScope.filter"],
|
|
952
1010
|
clearable: true,
|
|
@@ -1227,6 +1285,61 @@ FIELD_NODE_CONTRACT.domains.stepParams = groupedDomain({
|
|
|
1227
1285
|
pathSchemas: OPEN_VIEW_PATH_SCHEMAS
|
|
1228
1286
|
}
|
|
1229
1287
|
});
|
|
1288
|
+
const SUB_FORM_FIELD_NODE_CONTRACT = createContract({
|
|
1289
|
+
editableDomains: ["props", "decoratorProps", "stepParams", "flowRegistry"],
|
|
1290
|
+
props: [
|
|
1291
|
+
"title",
|
|
1292
|
+
"icon",
|
|
1293
|
+
"titleField",
|
|
1294
|
+
"clickToOpen",
|
|
1295
|
+
"autoSize",
|
|
1296
|
+
"allowMultiple",
|
|
1297
|
+
"multiple",
|
|
1298
|
+
"quickCreate",
|
|
1299
|
+
"allowClear",
|
|
1300
|
+
"displayStyle",
|
|
1301
|
+
"options"
|
|
1302
|
+
],
|
|
1303
|
+
decoratorProps: ["labelWidth", "labelWrap"],
|
|
1304
|
+
stepParams: ["fieldSettings", "displayFieldSettings", "popupSettings", "eventSettings"],
|
|
1305
|
+
flowRegistry: true,
|
|
1306
|
+
eventCapabilities: {
|
|
1307
|
+
direct: ACTION_DIRECT_EVENTS,
|
|
1308
|
+
object: ACTION_OBJECT_EVENTS
|
|
1309
|
+
},
|
|
1310
|
+
eventBindings: {
|
|
1311
|
+
displayFieldSettings: {
|
|
1312
|
+
stepKeys: ["displayStyle", "clickToOpen"]
|
|
1313
|
+
},
|
|
1314
|
+
popupSettings: {
|
|
1315
|
+
stepKeys: ["openView"]
|
|
1316
|
+
},
|
|
1317
|
+
eventSettings: {
|
|
1318
|
+
stepKeys: ["linkageRules"]
|
|
1319
|
+
}
|
|
1320
|
+
}
|
|
1321
|
+
});
|
|
1322
|
+
SUB_FORM_FIELD_NODE_CONTRACT.domains.stepParams = groupedDomain({
|
|
1323
|
+
fieldSettings: FIELD_SETTINGS_INIT_GROUP,
|
|
1324
|
+
displayFieldSettings: {
|
|
1325
|
+
allowedPaths: ["displayStyle.displayStyle", "clickToOpen.clickToOpen"],
|
|
1326
|
+
clearable: true,
|
|
1327
|
+
mergeStrategy: "deep",
|
|
1328
|
+
eventBindingSteps: ["displayStyle", "clickToOpen"],
|
|
1329
|
+
pathSchemas: {
|
|
1330
|
+
"displayStyle.displayStyle": STRING_SCHEMA,
|
|
1331
|
+
"clickToOpen.clickToOpen": BOOLEAN_SCHEMA
|
|
1332
|
+
}
|
|
1333
|
+
},
|
|
1334
|
+
popupSettings: {
|
|
1335
|
+
allowedPaths: OPEN_VIEW_ALLOWED_PATHS,
|
|
1336
|
+
clearable: true,
|
|
1337
|
+
mergeStrategy: "deep",
|
|
1338
|
+
eventBindingSteps: ["openView"],
|
|
1339
|
+
pathSchemas: OPEN_VIEW_PATH_SCHEMAS
|
|
1340
|
+
},
|
|
1341
|
+
eventSettings: EVENT_SETTINGS_GROUP
|
|
1342
|
+
});
|
|
1230
1343
|
const POPUP_ACTION_CONTRACT = createContract({
|
|
1231
1344
|
editableDomains: ["props", "decoratorProps", "stepParams", "flowRegistry"],
|
|
1232
1345
|
props: ACTION_PROP_KEYS,
|
|
@@ -1705,10 +1818,10 @@ const NODE_CONTRACT_ENTRIES = [
|
|
|
1705
1818
|
["RootPageTabModel", TAB_NODE_CONTRACT],
|
|
1706
1819
|
["ChildPageTabModel", TAB_NODE_CONTRACT],
|
|
1707
1820
|
["BlockGridModel", GRID_NODE_CONTRACT],
|
|
1708
|
-
["FormGridModel",
|
|
1821
|
+
["FormGridModel", FORM_GRID_NODE_CONTRACT],
|
|
1709
1822
|
["DetailsGridModel", GRID_NODE_CONTRACT],
|
|
1710
1823
|
["FilterFormGridModel", GRID_NODE_CONTRACT],
|
|
1711
|
-
["AssignFormGridModel",
|
|
1824
|
+
["AssignFormGridModel", FORM_GRID_NODE_CONTRACT],
|
|
1712
1825
|
["TableBlockModel", TABLE_BLOCK_CONTRACT],
|
|
1713
1826
|
["CreateFormModel", CREATE_FORM_BLOCK_CONTRACT],
|
|
1714
1827
|
["EditFormModel", EDIT_FORM_BLOCK_CONTRACT],
|
|
@@ -1730,6 +1843,8 @@ const NODE_CONTRACT_ENTRIES = [
|
|
|
1730
1843
|
["FormAssociationItemModel", DETAILS_ITEM_CONTRACT],
|
|
1731
1844
|
["DetailsItemModel", DETAILS_ITEM_CONTRACT],
|
|
1732
1845
|
["FilterFormItemModel", FILTER_FORM_ITEM_CONTRACT],
|
|
1846
|
+
["SubFormFieldModel", SUB_FORM_FIELD_NODE_CONTRACT],
|
|
1847
|
+
["SubFormListFieldModel", SUB_FORM_FIELD_NODE_CONTRACT],
|
|
1733
1848
|
["TableColumnModel", TABLE_COLUMN_CONTRACT],
|
|
1734
1849
|
["JSColumnModel", JS_COLUMN_CONTRACT],
|
|
1735
1850
|
["JSItemModel", JS_ITEM_CONTRACT],
|
|
@@ -1917,22 +2032,32 @@ function inferFilterFieldUse(fieldInterface) {
|
|
|
1917
2032
|
};
|
|
1918
2033
|
return map[fieldInterface] || "InputFieldModel";
|
|
1919
2034
|
}
|
|
1920
|
-
function getAllowedFieldUseSet(containerUse) {
|
|
2035
|
+
function getAllowedFieldUseSet(containerUse, enabledPackages) {
|
|
1921
2036
|
switch (normalizeFieldContainerUse(containerUse)) {
|
|
1922
2037
|
case "form":
|
|
1923
|
-
return EDITABLE_FIELD_USE_SET;
|
|
2038
|
+
return /* @__PURE__ */ new Set([...EDITABLE_FIELD_USE_SET, ...(0, import_field_binding_registry.getRegisteredFieldUses)("editable", enabledPackages)]);
|
|
1924
2039
|
case "details":
|
|
1925
2040
|
case "table":
|
|
1926
|
-
return DISPLAY_FIELD_USE_SET;
|
|
2041
|
+
return /* @__PURE__ */ new Set([...DISPLAY_FIELD_USE_SET, ...(0, import_field_binding_registry.getRegisteredFieldUses)("display", enabledPackages)]);
|
|
1927
2042
|
case "filter-form":
|
|
1928
|
-
return FILTER_FIELD_USE_SET;
|
|
2043
|
+
return /* @__PURE__ */ new Set([...FILTER_FIELD_USE_SET, ...(0, import_field_binding_registry.getRegisteredFieldUses)("filter", enabledPackages)]);
|
|
1929
2044
|
default:
|
|
1930
2045
|
return null;
|
|
1931
2046
|
}
|
|
1932
2047
|
}
|
|
1933
|
-
function inferFieldUseByContainer(containerUse, field) {
|
|
2048
|
+
function inferFieldUseByContainer(containerUse, field, options = {}) {
|
|
1934
2049
|
var _a;
|
|
1935
2050
|
const fieldInterface = (field == null ? void 0 : field.interface) || ((_a = field == null ? void 0 : field.options) == null ? void 0 : _a.interface);
|
|
2051
|
+
const registeredBinding = (0, import_field_binding_registry.resolveRegisteredFieldBinding)({
|
|
2052
|
+
containerUse,
|
|
2053
|
+
field,
|
|
2054
|
+
dataSourceKey: options.dataSourceKey,
|
|
2055
|
+
enabledPackages: options.enabledPackages,
|
|
2056
|
+
getCollection: options.getCollection
|
|
2057
|
+
});
|
|
2058
|
+
if (registeredBinding == null ? void 0 : registeredBinding.modelClassName) {
|
|
2059
|
+
return registeredBinding.modelClassName;
|
|
2060
|
+
}
|
|
1936
2061
|
if ((0, import_field_semantics.shouldUseAssociationTitleTextDisplay)({
|
|
1937
2062
|
containerUse,
|
|
1938
2063
|
fieldInterface
|
|
@@ -2023,7 +2148,11 @@ function resolveSupportedFieldCapability(input) {
|
|
|
2023
2148
|
`flowSurfaces field wrapper '${input.requestedWrapperUse}' is not allowed under '${input.containerUse}', expected '${wrapperUse}'`
|
|
2024
2149
|
);
|
|
2025
2150
|
}
|
|
2026
|
-
const inferredFieldUse = requestedRenderer === "js" ? inferJsFieldUseByContainer(input.containerUse) : input.field ? inferFieldUseByContainer(input.containerUse, input.field
|
|
2151
|
+
const inferredFieldUse = requestedRenderer === "js" ? inferJsFieldUseByContainer(input.containerUse) : input.field ? inferFieldUseByContainer(input.containerUse, input.field, {
|
|
2152
|
+
enabledPackages: input.enabledPackages,
|
|
2153
|
+
dataSourceKey: input.dataSourceKey,
|
|
2154
|
+
getCollection: input.getCollection
|
|
2155
|
+
}) : void 0;
|
|
2027
2156
|
const fieldUse = input.requestedFieldUse || inferredFieldUse;
|
|
2028
2157
|
if (!fieldUse) {
|
|
2029
2158
|
if (input.allowUnresolvedFieldUse) {
|
|
@@ -2042,7 +2171,7 @@ function resolveSupportedFieldCapability(input) {
|
|
|
2042
2171
|
`flowSurfaces fieldUse '${input.requestedFieldUse}' does not match inferred fieldUse '${inferredFieldUse}' under '${input.containerUse}'`
|
|
2043
2172
|
);
|
|
2044
2173
|
}
|
|
2045
|
-
const allowedFieldUses = getAllowedFieldUseSet(input.containerUse);
|
|
2174
|
+
const allowedFieldUses = getAllowedFieldUseSet(input.containerUse, input.enabledPackages);
|
|
2046
2175
|
if (!(allowedFieldUses == null ? void 0 : allowedFieldUses.has(fieldUse))) {
|
|
2047
2176
|
throw new import_errors.FlowSurfaceBadRequestError(
|
|
2048
2177
|
`flowSurfaces fieldUse '${fieldUse}' is not allowed under '${input.containerUse}'`
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is part of the NocoBase (R) project.
|
|
3
|
+
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
|
4
|
+
* Authors: NocoBase Team.
|
|
5
|
+
*
|
|
6
|
+
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
|
+
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
|
+
*/
|
|
9
|
+
import type { FlowSurfaceComposeMode } from './types';
|
|
10
|
+
export type FlowSurfaceComposeObject = Record<string, unknown>;
|
|
11
|
+
export type FlowSurfaceComposeTargetKey = {
|
|
12
|
+
uid?: string;
|
|
13
|
+
};
|
|
14
|
+
export type FlowSurfaceComposeNormalizedResource = {
|
|
15
|
+
kind: 'semantic' | 'raw';
|
|
16
|
+
value: FlowSurfaceComposeObject;
|
|
17
|
+
} | undefined;
|
|
18
|
+
export type FlowSurfaceComposeNormalizedFieldSpec = {
|
|
19
|
+
index?: number;
|
|
20
|
+
key: string;
|
|
21
|
+
fieldPath?: string;
|
|
22
|
+
associationPathName?: string;
|
|
23
|
+
renderer?: string;
|
|
24
|
+
type?: string;
|
|
25
|
+
target?: string | Record<string, unknown>;
|
|
26
|
+
settings?: FlowSurfaceComposeObject;
|
|
27
|
+
popup?: FlowSurfaceComposeObject;
|
|
28
|
+
};
|
|
29
|
+
export type FlowSurfaceComposeNormalizedActionSpec = {
|
|
30
|
+
key: string;
|
|
31
|
+
type: string;
|
|
32
|
+
settings?: FlowSurfaceComposeObject;
|
|
33
|
+
popup?: FlowSurfaceComposeObject;
|
|
34
|
+
};
|
|
35
|
+
export type FlowSurfaceComposeNormalizedBlockSpec = {
|
|
36
|
+
index?: number;
|
|
37
|
+
key: string;
|
|
38
|
+
type?: string;
|
|
39
|
+
catalogItem?: FlowSurfaceComposeObject | null;
|
|
40
|
+
resource?: FlowSurfaceComposeNormalizedResource;
|
|
41
|
+
template?: FlowSurfaceComposeObject;
|
|
42
|
+
settings?: FlowSurfaceComposeObject;
|
|
43
|
+
fields: FlowSurfaceComposeNormalizedFieldSpec[];
|
|
44
|
+
actions: FlowSurfaceComposeNormalizedActionSpec[];
|
|
45
|
+
recordActions: FlowSurfaceComposeNormalizedActionSpec[];
|
|
46
|
+
};
|
|
47
|
+
export type FlowSurfaceComposeBlockCreatePayload = {
|
|
48
|
+
target: {
|
|
49
|
+
uid: string;
|
|
50
|
+
};
|
|
51
|
+
type?: string;
|
|
52
|
+
resource?: FlowSurfaceComposeObject;
|
|
53
|
+
resourceInit?: FlowSurfaceComposeObject;
|
|
54
|
+
template?: FlowSurfaceComposeObject;
|
|
55
|
+
key?: string;
|
|
56
|
+
};
|
|
57
|
+
export type FlowSurfaceCompiledComposeBlockTask = {
|
|
58
|
+
key: string;
|
|
59
|
+
spec: FlowSurfaceComposeNormalizedBlockSpec;
|
|
60
|
+
payload: FlowSurfaceComposeBlockCreatePayload;
|
|
61
|
+
};
|
|
62
|
+
export type FlowSurfaceCompiledComposeFieldTask = {
|
|
63
|
+
blockKey: string;
|
|
64
|
+
spec: FlowSurfaceComposeNormalizedFieldSpec;
|
|
65
|
+
containerSource: 'block' | 'item';
|
|
66
|
+
payload: FlowSurfaceComposeObject;
|
|
67
|
+
};
|
|
68
|
+
export type FlowSurfaceCompiledComposeActionTask = {
|
|
69
|
+
blockKey: string;
|
|
70
|
+
spec: FlowSurfaceComposeNormalizedActionSpec;
|
|
71
|
+
payload: FlowSurfaceComposeObject;
|
|
72
|
+
};
|
|
73
|
+
export type FlowSurfaceCompiledComposeRecordActionTask = {
|
|
74
|
+
blockKey: string;
|
|
75
|
+
spec: FlowSurfaceComposeNormalizedActionSpec;
|
|
76
|
+
payload: FlowSurfaceComposeObject;
|
|
77
|
+
};
|
|
78
|
+
export type FlowSurfaceComposeLayoutPlan = {
|
|
79
|
+
kind: 'none';
|
|
80
|
+
} | {
|
|
81
|
+
kind: 'explicit';
|
|
82
|
+
layout?: FlowSurfaceComposeObject;
|
|
83
|
+
} | {
|
|
84
|
+
kind: 'append';
|
|
85
|
+
};
|
|
86
|
+
export type FlowSurfaceCompiledComposePlan = {
|
|
87
|
+
gridUid: string;
|
|
88
|
+
mode: FlowSurfaceComposeMode;
|
|
89
|
+
existingItemUids: string[];
|
|
90
|
+
blocks: FlowSurfaceCompiledComposeBlockTask[];
|
|
91
|
+
fields: FlowSurfaceCompiledComposeFieldTask[];
|
|
92
|
+
actions: FlowSurfaceCompiledComposeActionTask[];
|
|
93
|
+
recordActions: FlowSurfaceCompiledComposeRecordActionTask[];
|
|
94
|
+
layoutPlan: FlowSurfaceComposeLayoutPlan;
|
|
95
|
+
};
|
|
96
|
+
export declare function compileComposeExecutionPlan(input: {
|
|
97
|
+
gridUid: string;
|
|
98
|
+
mode: FlowSurfaceComposeMode;
|
|
99
|
+
normalizedBlocks: FlowSurfaceComposeNormalizedBlockSpec[];
|
|
100
|
+
existingItemUids?: string[];
|
|
101
|
+
layout?: FlowSurfaceComposeObject;
|
|
102
|
+
}): FlowSurfaceCompiledComposePlan;
|
|
103
|
+
export declare function resolveComposeFieldContainerSource(blockSpec: Pick<FlowSurfaceComposeNormalizedBlockSpec, 'type'>): 'block' | 'item';
|
|
104
|
+
export declare function resolveComposeTargetKey(targetKey: string, keyMap: Record<string, FlowSurfaceComposeTargetKey | undefined>, kind: 'field' | 'layout'): string;
|