@nocobase/plugin-flow-engine 2.1.0-alpha.15 → 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.
Files changed (116) hide show
  1. package/dist/externalVersion.js +10 -10
  2. package/dist/node_modules/ses/package.json +1 -1
  3. package/dist/node_modules/zod/package.json +1 -1
  4. package/dist/server/flow-surfaces/{compiler.d.ts → apply/compiler.d.ts} +1 -10
  5. package/dist/server/flow-surfaces/{compiler.js → apply/compiler.js} +41 -280
  6. package/dist/server/flow-surfaces/apply/layout.d.ts +34 -0
  7. package/dist/server/flow-surfaces/apply/layout.js +175 -0
  8. package/dist/server/flow-surfaces/apply/matching.d.ts +16 -0
  9. package/dist/server/flow-surfaces/apply/matching.js +181 -0
  10. package/dist/server/flow-surfaces/association-title-field.d.ts +20 -0
  11. package/dist/server/flow-surfaces/association-title-field.js +158 -0
  12. package/dist/server/flow-surfaces/blueprint/compile-blocks.d.ts +14 -0
  13. package/dist/server/flow-surfaces/blueprint/compile-blocks.js +706 -0
  14. package/dist/server/flow-surfaces/blueprint/compile-plan.d.ts +13 -0
  15. package/dist/server/flow-surfaces/blueprint/compile-plan.js +308 -0
  16. package/dist/server/flow-surfaces/blueprint/compile-reaction.d.ts +11 -0
  17. package/dist/server/flow-surfaces/blueprint/compile-reaction.js +72 -0
  18. package/dist/server/flow-surfaces/blueprint/index.d.ts +12 -0
  19. package/dist/server/flow-surfaces/blueprint/index.js +44 -0
  20. package/dist/server/flow-surfaces/blueprint/normalize-document.d.ts +10 -0
  21. package/dist/server/flow-surfaces/blueprint/normalize-document.js +296 -0
  22. package/dist/server/flow-surfaces/blueprint/private-utils.d.ts +26 -0
  23. package/dist/server/flow-surfaces/blueprint/private-utils.js +182 -0
  24. package/dist/server/flow-surfaces/blueprint/public-types.d.ts +153 -0
  25. package/dist/server/flow-surfaces/blueprint/public-types.js +24 -0
  26. package/dist/server/flow-surfaces/catalog-smart.d.ts +18 -0
  27. package/dist/server/flow-surfaces/catalog-smart.js +239 -0
  28. package/dist/server/flow-surfaces/catalog-smart.projector.d.ts +15 -0
  29. package/dist/server/flow-surfaces/catalog-smart.projector.js +157 -0
  30. package/dist/server/flow-surfaces/catalog-smart.types.d.ts +99 -0
  31. package/dist/server/flow-surfaces/catalog-smart.types.js +24 -0
  32. package/dist/server/flow-surfaces/catalog.d.ts +3 -0
  33. package/dist/server/flow-surfaces/catalog.js +163 -34
  34. package/dist/server/flow-surfaces/compose-compiler.d.ts +104 -0
  35. package/dist/server/flow-surfaces/compose-compiler.js +162 -0
  36. package/dist/server/flow-surfaces/compose-runtime.d.ts +89 -0
  37. package/dist/server/flow-surfaces/compose-runtime.js +338 -0
  38. package/dist/server/flow-surfaces/configure-options.js +12 -3
  39. package/dist/server/flow-surfaces/constants.d.ts +3 -2
  40. package/dist/server/flow-surfaces/constants.js +36 -3
  41. package/dist/server/flow-surfaces/default-action-popup.d.ts +52 -0
  42. package/dist/server/flow-surfaces/default-action-popup.js +258 -0
  43. package/dist/server/flow-surfaces/executor.d.ts +10 -0
  44. package/dist/server/flow-surfaces/executor.js +59 -24
  45. package/dist/server/flow-surfaces/field-binding-registry.d.ts +23 -0
  46. package/dist/server/flow-surfaces/field-binding-registry.js +391 -0
  47. package/dist/server/flow-surfaces/field-semantics.d.ts +1 -1
  48. package/dist/server/flow-surfaces/index.js +75 -0
  49. package/dist/server/flow-surfaces/node-use-sets.d.ts +15 -0
  50. package/dist/server/flow-surfaces/node-use-sets.js +114 -0
  51. package/dist/server/flow-surfaces/payload-shape.d.ts +9 -0
  52. package/dist/server/flow-surfaces/payload-shape.js +64 -0
  53. package/dist/server/flow-surfaces/placement.js +2 -6
  54. package/dist/server/flow-surfaces/planning/action-specs.d.ts +179 -0
  55. package/dist/server/flow-surfaces/planning/action-specs.js +190 -0
  56. package/dist/server/flow-surfaces/planning/compiler.d.ts +37 -0
  57. package/dist/server/flow-surfaces/planning/compiler.js +376 -0
  58. package/dist/server/flow-surfaces/planning/context.d.ts +30 -0
  59. package/dist/server/flow-surfaces/planning/context.js +139 -0
  60. package/dist/server/flow-surfaces/planning/created-keys.d.ts +34 -0
  61. package/dist/server/flow-surfaces/planning/created-keys.js +375 -0
  62. package/dist/server/flow-surfaces/planning/key-kind.d.ts +11 -0
  63. package/dist/server/flow-surfaces/planning/key-kind.js +86 -0
  64. package/dist/server/flow-surfaces/planning/key-persistence.d.ts +34 -0
  65. package/dist/server/flow-surfaces/planning/key-persistence.js +148 -0
  66. package/dist/server/flow-surfaces/planning/key-registry.d.ts +40 -0
  67. package/dist/server/flow-surfaces/planning/key-registry.js +206 -0
  68. package/dist/server/flow-surfaces/planning/runtime.d.ts +37 -0
  69. package/dist/server/flow-surfaces/planning/runtime.js +259 -0
  70. package/dist/server/flow-surfaces/planning/step-link.d.ts +14 -0
  71. package/dist/server/flow-surfaces/planning/step-link.js +104 -0
  72. package/dist/server/flow-surfaces/planning/types.d.ts +55 -0
  73. package/dist/server/flow-surfaces/planning/types.js +24 -0
  74. package/dist/server/flow-surfaces/reaction/errors.d.ts +20 -0
  75. package/dist/server/flow-surfaces/reaction/errors.js +69 -0
  76. package/dist/server/flow-surfaces/reaction/field-value.d.ts +34 -0
  77. package/dist/server/flow-surfaces/reaction/field-value.js +181 -0
  78. package/dist/server/flow-surfaces/reaction/fingerprint.d.ts +16 -0
  79. package/dist/server/flow-surfaces/reaction/fingerprint.js +71 -0
  80. package/dist/server/flow-surfaces/reaction/linkage.d.ts +136 -0
  81. package/dist/server/flow-surfaces/reaction/linkage.js +882 -0
  82. package/dist/server/flow-surfaces/reaction/meta.d.ts +11 -0
  83. package/dist/server/flow-surfaces/reaction/meta.js +451 -0
  84. package/dist/server/flow-surfaces/reaction/registry.d.ts +136 -0
  85. package/dist/server/flow-surfaces/reaction/registry.js +186 -0
  86. package/dist/server/flow-surfaces/reaction/resolver.d.ts +22 -0
  87. package/dist/server/flow-surfaces/reaction/resolver.js +202 -0
  88. package/dist/server/flow-surfaces/reaction/types.d.ts +241 -0
  89. package/dist/server/flow-surfaces/reaction/types.js +24 -0
  90. package/dist/server/flow-surfaces/reaction/utils.d.ts +17 -0
  91. package/dist/server/flow-surfaces/reaction/utils.js +67 -0
  92. package/dist/server/flow-surfaces/reaction/value-expr.d.ts +15 -0
  93. package/dist/server/flow-surfaces/reaction/value-expr.js +209 -0
  94. package/dist/server/flow-surfaces/reference-guards.d.ts +19 -0
  95. package/dist/server/flow-surfaces/reference-guards.js +103 -0
  96. package/dist/server/flow-surfaces/service-helpers.d.ts +42 -0
  97. package/dist/server/flow-surfaces/service-helpers.js +377 -0
  98. package/dist/server/flow-surfaces/service-utils.d.ts +105 -0
  99. package/dist/server/flow-surfaces/service-utils.js +760 -0
  100. package/dist/server/flow-surfaces/service.d.ts +189 -103
  101. package/dist/server/flow-surfaces/service.js +3975 -1770
  102. package/dist/server/flow-surfaces/template-compatibility.d.ts +42 -0
  103. package/dist/server/flow-surfaces/template-compatibility.js +189 -0
  104. package/dist/server/flow-surfaces/template-service-utils.d.ts +62 -0
  105. package/dist/server/flow-surfaces/template-service-utils.js +281 -0
  106. package/dist/server/flow-surfaces/types.d.ts +129 -37
  107. package/dist/swagger/flow-surfaces.d.ts +3773 -1581
  108. package/dist/swagger/flow-surfaces.examples.d.ts +1215 -0
  109. package/dist/swagger/flow-surfaces.examples.js +1363 -0
  110. package/dist/swagger/flow-surfaces.js +2209 -1684
  111. package/dist/swagger/flow-surfaces.template-action-docs.d.ts +62 -0
  112. package/dist/swagger/flow-surfaces.template-action-docs.js +121 -0
  113. package/dist/swagger/flow-surfaces.template-schemas.d.ts +239 -0
  114. package/dist/swagger/flow-surfaces.template-schemas.js +255 -0
  115. package/dist/swagger/index.d.ts +3773 -1581
  116. 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", GRID_NODE_CONTRACT],
1821
+ ["FormGridModel", FORM_GRID_NODE_CONTRACT],
1709
1822
  ["DetailsGridModel", GRID_NODE_CONTRACT],
1710
1823
  ["FilterFormGridModel", GRID_NODE_CONTRACT],
1711
- ["AssignFormGridModel", GRID_NODE_CONTRACT],
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) : void 0;
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;