@next-core/brick-kit 2.158.2 → 2.159.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2910,6 +2910,8 @@
2910
2910
  app
2911
2911
  } = _yield$fetchMenuById,
2912
2912
  restMenuData = _objectWithoutProperties__default["default"](_yield$fetchMenuById, _excluded3);
2913
+ var usedActions = brickUtils.scanPermissionActionsInAny([items, restMenuData]);
2914
+ yield validatePermissions(usedActions);
2913
2915
  var appsRequireI18nFulfilled = new Set();
2914
2916
  var rootAppId = app[0].appId;
2915
2917
  if (rootAppId !== context.app.id && !restMenuData[symbolMenuI18nNamespace]) {
@@ -9299,9 +9301,9 @@
9299
9301
  return defaultValue;
9300
9302
  } else return {};
9301
9303
  }
9302
- function getStoryboard(datasource, result, fields, isPreview, formContextId) {
9304
+ function getStoryboard(dataSource, result, fields, isPreview, formContextId) {
9303
9305
  var _loop = function (i) {
9304
- var dataItem = datasource[i];
9306
+ var dataItem = dataSource[i];
9305
9307
  var resultItem = {};
9306
9308
  //数据初始化:根据id,字段类型获取默认属性
9307
9309
  var defaultProperties = getDefaultProperties(dataItem.id, fields);
@@ -9349,7 +9351,7 @@
9349
9351
  });
9350
9352
  result[i] = resultItem;
9351
9353
  };
9352
- for (var i = 0; i < datasource.length; i++) {
9354
+ for (var i = 0; i < dataSource.length; i++) {
9353
9355
  _loop(i);
9354
9356
  }
9355
9357
  return result;
@@ -11514,8 +11516,7 @@
11514
11516
  return location;
11515
11517
  }
11516
11518
 
11517
- var expandTemplateInUseBrick = (useBrick, tplTagName, brick) => {
11518
- var template;
11519
+ function expandTemplateInUseBrick(useBrick, tplTagName, brick, requireSuspense) {
11519
11520
  if (tplTagName) {
11520
11521
  // 如果是模板, 需要展开解析模板, 并遍历模板中的slots, 再给slots的brick绑定值给自身
11521
11522
  // 为后续ProxyRefs获取brick做值缓存
@@ -11526,12 +11527,11 @@
11526
11527
  lifeCycle: useBrick.lifeCycle,
11527
11528
  slots: useBrick.slots
11528
11529
  };
11529
- template = expandCustomTemplate(tplConf, brick, _internalApiGetCurrentContext());
11530
+ return (requireSuspense ? asyncExpandCustomTemplate : expandCustomTemplate)(tplConf, brick, _internalApiGetCurrentContext());
11530
11531
  } else if (useBrick[symbolForRefForProxy]) {
11531
11532
  useBrick[symbolForRefForProxy].brick = brick;
11532
11533
  }
11533
- return template;
11534
- };
11534
+ }
11535
11535
  var getCurrentRunTimeBrick = (useBrick, tplTagName, data) => {
11536
11536
  var trackingContextList = [];
11537
11537
  var tplContextId = useBrick[symbolForTplContextId];
@@ -11573,7 +11573,7 @@
11573
11573
  * @param props - 属性。
11574
11574
  */
11575
11575
  var SingleBrickAsComponent = /*#__PURE__*/React__default["default"].memo(function SingleBrickAsComponent(_ref) {
11576
- var _internalApiGetCurren, _templateRef$current$, _templateRef$current2;
11576
+ var _internalApiGetCurren, _brick, _ref8;
11577
11577
  var {
11578
11578
  useBrick,
11579
11579
  data,
@@ -11583,10 +11583,10 @@
11583
11583
  var firstRunRef = React.useRef(true);
11584
11584
  var innerRefCallbackRef = React.useRef();
11585
11585
  var elementRef = React.useRef();
11586
- var templateRef = React.useRef();
11587
- var formRef = React.useRef();
11586
+ var expandedBrickConfRef = React.useRef();
11587
+ var [expandedBrickConf, setExpandedBrickConf] = React.useState(null);
11588
11588
  var tplTagName = getTagNameOfCustomTemplate(useBrick.brick, (_internalApiGetCurren = _internalApiGetCurrentContext().app) === null || _internalApiGetCurren === void 0 ? void 0 : _internalApiGetCurren.id);
11589
- var isBrickAvailable = React__default["default"].useMemo(() => {
11589
+ var isBrickAvailable = React.useMemo(() => {
11590
11590
  if (brickUtils.isObject(useBrick.if) && !isPreEvaluated(useBrick.if)) {
11591
11591
  // eslint-disable-next-line
11592
11592
  console.warn("Currently resolvable-if in `useBrick` is not supported.");
@@ -11599,7 +11599,17 @@
11599
11599
  }
11600
11600
  return true;
11601
11601
  }, [useBrick, data]);
11602
- var runtimeBrick = React__default["default"].useMemo( /*#__PURE__*/_asyncToGenerator__default["default"](function* () {
11602
+ var requireSuspense = React.useMemo(() => {
11603
+ var context;
11604
+ if (useBrick.brick === formRenderer) {
11605
+ context = useBrick.properties.formData.context;
11606
+ } else if (tplTagName) {
11607
+ context = customTemplateRegistry.get(tplTagName).state;
11608
+ }
11609
+ return Array.isArray(context) && context.some(ctx => !!ctx.resolve);
11610
+ }, [tplTagName, useBrick]);
11611
+ var [suspenseReady, setSuspenseReady] = React.useState(false);
11612
+ var runtimeBrick = React.useMemo( /*#__PURE__*/_asyncToGenerator__default["default"](function* () {
11603
11613
  if (!isBrickAvailable) {
11604
11614
  return null;
11605
11615
  }
@@ -11610,11 +11620,14 @@
11610
11620
  }
11611
11621
  _internalApiLoadDynamicBricksInBrickConf(useBrick).catch(handleHttpError);
11612
11622
  var brick = getCurrentRunTimeBrick(useBrick, tplTagName, data);
11613
- templateRef.current = expandTemplateInUseBrick(useBrick, tplTagName, brick);
11614
- if (useBrick.brick === formRenderer) {
11615
- var _useBrick$properties;
11616
- formRef.current = ExpandCustomForm((_useBrick$properties = useBrick.properties) === null || _useBrick$properties === void 0 ? void 0 : _useBrick$properties.formData, useBrick, false);
11623
+ var expanded = useBrick.brick === formRenderer ? (requireSuspense ? AsyncExpandCustomForm : ExpandCustomForm)(useBrick.properties.formData, useBrick, false) : expandTemplateInUseBrick(useBrick, tplTagName, brick, requireSuspense);
11624
+ if (requireSuspense) {
11625
+ setExpandedBrickConf(yield expanded);
11626
+ setSuspenseReady(true);
11627
+ } else {
11628
+ expandedBrickConfRef.current = expanded;
11617
11629
  }
11630
+
11618
11631
  // Let `transform` works still.
11619
11632
  transformProperties(brick.properties, data, useBrick.transform, useBrick.transformFrom, undefined, {
11620
11633
  allowInject: true
@@ -11637,7 +11650,7 @@
11637
11650
  }));
11638
11651
  }
11639
11652
  return brick;
11640
- }), [useBrick, data, isBrickAvailable, tplTagName]);
11653
+ }), [useBrick, data, isBrickAvailable, tplTagName, requireSuspense]);
11641
11654
  var dispatchLifeCycleEvent = /*#__PURE__*/function () {
11642
11655
  var _ref4 = _asyncToGenerator__default["default"](function* (event, handlers, brick) {
11643
11656
  for (var handler of [].concat(handlers)) {
@@ -11734,13 +11747,13 @@
11734
11747
  innerRefCallbackRef.current(element);
11735
11748
  }, []);
11736
11749
  var childConfs = React.useMemo(() => {
11737
- var _ref7, _templateRef$current;
11738
- return slotsToChildren(((_ref7 = (_templateRef$current = templateRef.current) !== null && _templateRef$current !== void 0 ? _templateRef$current : formRef.current) !== null && _ref7 !== void 0 ? _ref7 : useBrick).slots);
11739
- }, [templateRef.current, formRef.current, useBrick]);
11740
- if (!isBrickAvailable) {
11750
+ var _ref7;
11751
+ return slotsToChildren(((_ref7 = requireSuspense ? expandedBrickConf : expandedBrickConfRef.current) !== null && _ref7 !== void 0 ? _ref7 : useBrick).slots);
11752
+ }, [expandedBrickConf, expandedBrickConfRef.current, useBrick, requireSuspense]);
11753
+ if (!isBrickAvailable || requireSuspense && !suspenseReady) {
11741
11754
  return null;
11742
11755
  }
11743
- return /*#__PURE__*/React__default["default"].createElement((_templateRef$current$ = (_templateRef$current2 = templateRef.current) === null || _templateRef$current2 === void 0 ? void 0 : _templateRef$current2.brick) !== null && _templateRef$current$ !== void 0 ? _templateRef$current$ : tplTagName || useBrick.brick, {
11756
+ return /*#__PURE__*/React__default["default"].createElement((_brick = (_ref8 = requireSuspense ? expandedBrickConf : expandedBrickConfRef.current) === null || _ref8 === void 0 ? void 0 : _ref8.brick) !== null && _brick !== void 0 ? _brick : tplTagName || useBrick.brick, {
11744
11757
  ref: innerRefCallback
11745
11758
  }, ...childConfs.map((item, index) => /*#__PURE__*/React__default["default"].createElement(SingleBrickAsComponent, {
11746
11759
  key: index,
@@ -11767,11 +11780,11 @@
11767
11780
  *
11768
11781
  * @param props - 属性。
11769
11782
  */
11770
- function BrickAsComponent(_ref8) {
11783
+ function BrickAsComponent(_ref9) {
11771
11784
  var {
11772
11785
  useBrick,
11773
11786
  data
11774
- } = _ref8;
11787
+ } = _ref9;
11775
11788
  if (Array.isArray(useBrick)) {
11776
11789
  return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, useBrick.map((item, index) => /*#__PURE__*/React__default["default"].createElement(SingleBrickAsComponent, {
11777
11790
  key: index,
@@ -11788,8 +11801,8 @@
11788
11801
  if (!slots) {
11789
11802
  return [];
11790
11803
  }
11791
- return Object.entries(slots).flatMap(_ref9 => {
11792
- var [slot, slotConf] = _ref9;
11804
+ return Object.entries(slots).flatMap(_ref10 => {
11805
+ var [slot, slotConf] = _ref10;
11793
11806
  return Array.isArray(slotConf.bricks) ? slotConf.bricks.map(child => _objectSpread__default["default"](_objectSpread__default["default"]({}, child), {}, {
11794
11807
  properties: _objectSpread__default["default"](_objectSpread__default["default"]({}, child.properties), {}, {
11795
11808
  slot
@@ -11807,19 +11820,19 @@
11807
11820
 
11808
11821
  /* istanbul ignore next */
11809
11822
  // eslint-disable-next-line react/display-name
11810
- var ForwardRefSingleBrickAsComponent = /*#__PURE__*/React__default["default"].memo( /*#__PURE__*/React.forwardRef(function LegacySingleBrickAsComponent(_ref10, ref) {
11811
- var _internalApiGetCurren2, _templateRef$current$2, _templateRef$current4;
11823
+ var ForwardRefSingleBrickAsComponent = /*#__PURE__*/React__default["default"].memo( /*#__PURE__*/React.forwardRef(function LegacySingleBrickAsComponent(_ref11, ref) {
11824
+ var _internalApiGetCurren2, _brick2, _ref18;
11812
11825
  var {
11813
11826
  useBrick,
11814
11827
  data,
11815
11828
  refCallback
11816
- } = _ref10;
11829
+ } = _ref11;
11817
11830
  var firstRunRef = React.useRef(true);
11818
11831
  var innerRefCallbackRef = React.useRef();
11819
11832
  var elementRef = React.useRef();
11820
- var templateRef = React.useRef();
11833
+ var expandedBrickConfRef = React.useRef();
11834
+ var [expandedBrickConf, setExpandedBrickConf] = React.useState(null);
11821
11835
  var tplTagName = getTagNameOfCustomTemplate(useBrick.brick, (_internalApiGetCurren2 = _internalApiGetCurrentContext().app) === null || _internalApiGetCurren2 === void 0 ? void 0 : _internalApiGetCurren2.id);
11822
- var formRef = React.useRef();
11823
11836
  var isBrickAvailable = React__default["default"].useMemo(() => {
11824
11837
  if (brickUtils.isObject(useBrick.if) && !isPreEvaluated(useBrick.if)) {
11825
11838
  // eslint-disable-next-line
@@ -11833,6 +11846,16 @@
11833
11846
  }
11834
11847
  return true;
11835
11848
  }, [useBrick, data]);
11849
+ var requireSuspense = React.useMemo(() => {
11850
+ var context;
11851
+ if (useBrick.brick === formRenderer) {
11852
+ context = useBrick.properties.formData.context;
11853
+ } else if (tplTagName) {
11854
+ context = customTemplateRegistry.get(tplTagName).state;
11855
+ }
11856
+ return Array.isArray(context) && context.some(ctx => !!ctx.resolve);
11857
+ }, [tplTagName, useBrick]);
11858
+ var [suspenseReady, setSuspenseReady] = React.useState(false);
11836
11859
 
11837
11860
  /* istanbul ignore next (never reach in test) */
11838
11861
  React.useImperativeHandle(ref, () => {
@@ -11849,10 +11872,12 @@
11849
11872
  }
11850
11873
  _internalApiLoadDynamicBricksInBrickConf(useBrick).catch(handleHttpError);
11851
11874
  var brick = getCurrentRunTimeBrick(useBrick, tplTagName, data);
11852
- templateRef.current = expandTemplateInUseBrick(useBrick, tplTagName, brick);
11853
- if (useBrick.brick === formRenderer) {
11854
- var _useBrick$properties2;
11855
- formRef.current = ExpandCustomForm((_useBrick$properties2 = useBrick.properties) === null || _useBrick$properties2 === void 0 ? void 0 : _useBrick$properties2.formData, useBrick, false);
11875
+ var expanded = useBrick.brick === formRenderer ? (requireSuspense ? AsyncExpandCustomForm : ExpandCustomForm)(useBrick.properties.formData, useBrick, false) : expandTemplateInUseBrick(useBrick, tplTagName, brick, requireSuspense);
11876
+ if (requireSuspense) {
11877
+ setExpandedBrickConf(yield expanded);
11878
+ setSuspenseReady(true);
11879
+ } else {
11880
+ expandedBrickConfRef.current = expanded;
11856
11881
  }
11857
11882
 
11858
11883
  // Let `transform` works still.
@@ -11862,8 +11887,8 @@
11862
11887
 
11863
11888
  // 设置 properties refProperty值
11864
11889
  if (useBrick[symbolForComputedPropsFromProxy]) {
11865
- Object.entries(useBrick[symbolForComputedPropsFromProxy]).forEach(_ref12 => {
11866
- var [propName, propValue] = _ref12;
11890
+ Object.entries(useBrick[symbolForComputedPropsFromProxy]).forEach(_ref13 => {
11891
+ var [propName, propValue] = _ref13;
11867
11892
  _.set(brick.properties, propName, propValue);
11868
11893
  });
11869
11894
  }
@@ -11877,9 +11902,9 @@
11877
11902
  }));
11878
11903
  }
11879
11904
  return brick;
11880
- }), [useBrick, data, isBrickAvailable, tplTagName]);
11905
+ }), [useBrick, data, isBrickAvailable, tplTagName, requireSuspense]);
11881
11906
  var dispatchLifeCycleEvent = /*#__PURE__*/function () {
11882
- var _ref13 = _asyncToGenerator__default["default"](function* (event, handlers, brick) {
11907
+ var _ref14 = _asyncToGenerator__default["default"](function* (event, handlers, brick) {
11883
11908
  for (var handler of [].concat(handlers)) {
11884
11909
  listenerFactory(handler, _objectSpread__default["default"](_objectSpread__default["default"]({}, _internalApiGetCurrentContext()), {}, {
11885
11910
  tplContextId: useBrick[symbolForTplContextId]
@@ -11887,7 +11912,7 @@
11887
11912
  }
11888
11913
  });
11889
11914
  return function dispatchLifeCycleEvent(_x5, _x6, _x7) {
11890
- return _ref13.apply(this, arguments);
11915
+ return _ref14.apply(this, arguments);
11891
11916
  };
11892
11917
  }();
11893
11918
  var updateBrick = React.useCallback((brick, element) => {
@@ -11938,7 +11963,7 @@
11938
11963
  })();
11939
11964
  }, [runtimeBrick, updateBrick]);
11940
11965
  innerRefCallbackRef.current = /*#__PURE__*/function () {
11941
- var _ref15 = _asyncToGenerator__default["default"](function* (element) {
11966
+ var _ref16 = _asyncToGenerator__default["default"](function* (element) {
11942
11967
  elementRef.current = element;
11943
11968
  var brick;
11944
11969
  try {
@@ -11964,7 +11989,7 @@
11964
11989
  refCallback === null || refCallback === void 0 ? void 0 : refCallback(element);
11965
11990
  });
11966
11991
  return function (_x8) {
11967
- return _ref15.apply(this, arguments);
11992
+ return _ref16.apply(this, arguments);
11968
11993
  };
11969
11994
  }();
11970
11995
 
@@ -11973,13 +11998,13 @@
11973
11998
  innerRefCallbackRef.current(element);
11974
11999
  }, []);
11975
12000
  var childConfs = React.useMemo(() => {
11976
- var _ref16, _templateRef$current3;
11977
- return slotsToChildren(((_ref16 = (_templateRef$current3 = templateRef.current) !== null && _templateRef$current3 !== void 0 ? _templateRef$current3 : formRef.current) !== null && _ref16 !== void 0 ? _ref16 : useBrick).slots);
11978
- }, [templateRef.current, formRef.current, useBrick]);
11979
- if (!isBrickAvailable) {
12001
+ var _ref17;
12002
+ return slotsToChildren(((_ref17 = requireSuspense ? expandedBrickConf : expandedBrickConfRef.current) !== null && _ref17 !== void 0 ? _ref17 : useBrick).slots);
12003
+ }, [expandedBrickConf, expandedBrickConfRef.current, useBrick, requireSuspense]);
12004
+ if (!isBrickAvailable || requireSuspense && !suspenseReady) {
11980
12005
  return null;
11981
12006
  }
11982
- return /*#__PURE__*/React__default["default"].createElement((_templateRef$current$2 = (_templateRef$current4 = templateRef.current) === null || _templateRef$current4 === void 0 ? void 0 : _templateRef$current4.brick) !== null && _templateRef$current$2 !== void 0 ? _templateRef$current$2 : tplTagName || useBrick.brick, {
12007
+ return /*#__PURE__*/React__default["default"].createElement((_brick2 = (_ref18 = requireSuspense ? expandedBrickConf : expandedBrickConfRef.current) === null || _ref18 === void 0 ? void 0 : _ref18.brick) !== null && _brick2 !== void 0 ? _brick2 : tplTagName || useBrick.brick, {
11983
12008
  ref: innerRefCallback
11984
12009
  }, ...childConfs.map((item, index) => /*#__PURE__*/React__default["default"].createElement(SingleBrickAsComponent, {
11985
12010
  key: index,