@next-core/brick-kit 2.158.1 → 2.159.0

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.
@@ -9299,9 +9299,9 @@
9299
9299
  return defaultValue;
9300
9300
  } else return {};
9301
9301
  }
9302
- function getStoryboard(datasource, result, fields, isPreview, formContextId) {
9302
+ function getStoryboard(dataSource, result, fields, isPreview, formContextId) {
9303
9303
  var _loop = function (i) {
9304
- var dataItem = datasource[i];
9304
+ var dataItem = dataSource[i];
9305
9305
  var resultItem = {};
9306
9306
  //数据初始化:根据id,字段类型获取默认属性
9307
9307
  var defaultProperties = getDefaultProperties(dataItem.id, fields);
@@ -9349,7 +9349,7 @@
9349
9349
  });
9350
9350
  result[i] = resultItem;
9351
9351
  };
9352
- for (var i = 0; i < datasource.length; i++) {
9352
+ for (var i = 0; i < dataSource.length; i++) {
9353
9353
  _loop(i);
9354
9354
  }
9355
9355
  return result;
@@ -9801,7 +9801,7 @@
9801
9801
  }
9802
9802
  tplStack.set(tplTagName, tplCount + 1);
9803
9803
  }
9804
- if (brickConf.brick === formRenderer) {
9804
+ if (brickConf.brick === formRenderer && typeof brickConf.properties.formData === "object") {
9805
9805
  brickConf.properties.formData = JSON.stringify(brickConf.properties.formData);
9806
9806
  }
9807
9807
  var brick = {};
@@ -9856,7 +9856,7 @@
9856
9856
  yield _this7.kernel.loadDynamicBricksInBrickConf(expandedBrickConf);
9857
9857
  }
9858
9858
  if (brick.type === formRenderer) {
9859
- var formData = JSON.parse(brick.properties.formData);
9859
+ var formData = typeof brick.properties.formData === "string" ? JSON.parse(brick.properties.formData) : brick.properties.formData;
9860
9860
  expandedBrickConf = yield AsyncExpandCustomForm(formData, brickConf, brick.properties.isPreview, context);
9861
9861
  yield _this7.kernel.loadDynamicBricksInBrickConf(expandedBrickConf);
9862
9862
  }
@@ -11514,8 +11514,7 @@
11514
11514
  return location;
11515
11515
  }
11516
11516
 
11517
- var expandTemplateInUseBrick = (useBrick, tplTagName, brick) => {
11518
- var template;
11517
+ function expandTemplateInUseBrick(useBrick, tplTagName, brick, requireSuspense) {
11519
11518
  if (tplTagName) {
11520
11519
  // 如果是模板, 需要展开解析模板, 并遍历模板中的slots, 再给slots的brick绑定值给自身
11521
11520
  // 为后续ProxyRefs获取brick做值缓存
@@ -11526,12 +11525,11 @@
11526
11525
  lifeCycle: useBrick.lifeCycle,
11527
11526
  slots: useBrick.slots
11528
11527
  };
11529
- template = expandCustomTemplate(tplConf, brick, _internalApiGetCurrentContext());
11528
+ return (requireSuspense ? asyncExpandCustomTemplate : expandCustomTemplate)(tplConf, brick, _internalApiGetCurrentContext());
11530
11529
  } else if (useBrick[symbolForRefForProxy]) {
11531
11530
  useBrick[symbolForRefForProxy].brick = brick;
11532
11531
  }
11533
- return template;
11534
- };
11532
+ }
11535
11533
  var getCurrentRunTimeBrick = (useBrick, tplTagName, data) => {
11536
11534
  var trackingContextList = [];
11537
11535
  var tplContextId = useBrick[symbolForTplContextId];
@@ -11573,7 +11571,7 @@
11573
11571
  * @param props - 属性。
11574
11572
  */
11575
11573
  var SingleBrickAsComponent = /*#__PURE__*/React__default["default"].memo(function SingleBrickAsComponent(_ref) {
11576
- var _internalApiGetCurren, _templateRef$current$, _templateRef$current2;
11574
+ var _internalApiGetCurren, _brick, _ref8;
11577
11575
  var {
11578
11576
  useBrick,
11579
11577
  data,
@@ -11583,10 +11581,10 @@
11583
11581
  var firstRunRef = React.useRef(true);
11584
11582
  var innerRefCallbackRef = React.useRef();
11585
11583
  var elementRef = React.useRef();
11586
- var templateRef = React.useRef();
11587
- var formRef = React.useRef();
11584
+ var expandedBrickConfRef = React.useRef();
11585
+ var [expandedBrickConf, setExpandedBrickConf] = React.useState(null);
11588
11586
  var tplTagName = getTagNameOfCustomTemplate(useBrick.brick, (_internalApiGetCurren = _internalApiGetCurrentContext().app) === null || _internalApiGetCurren === void 0 ? void 0 : _internalApiGetCurren.id);
11589
- var isBrickAvailable = React__default["default"].useMemo(() => {
11587
+ var isBrickAvailable = React.useMemo(() => {
11590
11588
  if (brickUtils.isObject(useBrick.if) && !isPreEvaluated(useBrick.if)) {
11591
11589
  // eslint-disable-next-line
11592
11590
  console.warn("Currently resolvable-if in `useBrick` is not supported.");
@@ -11599,7 +11597,17 @@
11599
11597
  }
11600
11598
  return true;
11601
11599
  }, [useBrick, data]);
11602
- var runtimeBrick = React__default["default"].useMemo( /*#__PURE__*/_asyncToGenerator__default["default"](function* () {
11600
+ var requireSuspense = React.useMemo(() => {
11601
+ var context;
11602
+ if (useBrick.brick === formRenderer) {
11603
+ context = useBrick.properties.formData.context;
11604
+ } else if (tplTagName) {
11605
+ context = customTemplateRegistry.get(tplTagName).state;
11606
+ }
11607
+ return Array.isArray(context) && context.some(ctx => !!ctx.resolve);
11608
+ }, [tplTagName, useBrick]);
11609
+ var [suspenseReady, setSuspenseReady] = React.useState(false);
11610
+ var runtimeBrick = React.useMemo( /*#__PURE__*/_asyncToGenerator__default["default"](function* () {
11603
11611
  if (!isBrickAvailable) {
11604
11612
  return null;
11605
11613
  }
@@ -11610,11 +11618,14 @@
11610
11618
  }
11611
11619
  _internalApiLoadDynamicBricksInBrickConf(useBrick).catch(handleHttpError);
11612
11620
  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);
11621
+ var expanded = useBrick.brick === formRenderer ? (requireSuspense ? AsyncExpandCustomForm : ExpandCustomForm)(useBrick.properties.formData, useBrick, false) : expandTemplateInUseBrick(useBrick, tplTagName, brick, requireSuspense);
11622
+ if (requireSuspense) {
11623
+ setExpandedBrickConf(yield expanded);
11624
+ setSuspenseReady(true);
11625
+ } else {
11626
+ expandedBrickConfRef.current = expanded;
11617
11627
  }
11628
+
11618
11629
  // Let `transform` works still.
11619
11630
  transformProperties(brick.properties, data, useBrick.transform, useBrick.transformFrom, undefined, {
11620
11631
  allowInject: true
@@ -11637,7 +11648,7 @@
11637
11648
  }));
11638
11649
  }
11639
11650
  return brick;
11640
- }), [useBrick, data, isBrickAvailable, tplTagName]);
11651
+ }), [useBrick, data, isBrickAvailable, tplTagName, requireSuspense]);
11641
11652
  var dispatchLifeCycleEvent = /*#__PURE__*/function () {
11642
11653
  var _ref4 = _asyncToGenerator__default["default"](function* (event, handlers, brick) {
11643
11654
  for (var handler of [].concat(handlers)) {
@@ -11734,13 +11745,13 @@
11734
11745
  innerRefCallbackRef.current(element);
11735
11746
  }, []);
11736
11747
  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) {
11748
+ var _ref7;
11749
+ return slotsToChildren(((_ref7 = requireSuspense ? expandedBrickConf : expandedBrickConfRef.current) !== null && _ref7 !== void 0 ? _ref7 : useBrick).slots);
11750
+ }, [expandedBrickConf, expandedBrickConfRef.current, useBrick, requireSuspense]);
11751
+ if (!isBrickAvailable || requireSuspense && !suspenseReady) {
11741
11752
  return null;
11742
11753
  }
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, {
11754
+ 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
11755
  ref: innerRefCallback
11745
11756
  }, ...childConfs.map((item, index) => /*#__PURE__*/React__default["default"].createElement(SingleBrickAsComponent, {
11746
11757
  key: index,
@@ -11767,11 +11778,11 @@
11767
11778
  *
11768
11779
  * @param props - 属性。
11769
11780
  */
11770
- function BrickAsComponent(_ref8) {
11781
+ function BrickAsComponent(_ref9) {
11771
11782
  var {
11772
11783
  useBrick,
11773
11784
  data
11774
- } = _ref8;
11785
+ } = _ref9;
11775
11786
  if (Array.isArray(useBrick)) {
11776
11787
  return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, useBrick.map((item, index) => /*#__PURE__*/React__default["default"].createElement(SingleBrickAsComponent, {
11777
11788
  key: index,
@@ -11788,8 +11799,8 @@
11788
11799
  if (!slots) {
11789
11800
  return [];
11790
11801
  }
11791
- return Object.entries(slots).flatMap(_ref9 => {
11792
- var [slot, slotConf] = _ref9;
11802
+ return Object.entries(slots).flatMap(_ref10 => {
11803
+ var [slot, slotConf] = _ref10;
11793
11804
  return Array.isArray(slotConf.bricks) ? slotConf.bricks.map(child => _objectSpread__default["default"](_objectSpread__default["default"]({}, child), {}, {
11794
11805
  properties: _objectSpread__default["default"](_objectSpread__default["default"]({}, child.properties), {}, {
11795
11806
  slot
@@ -11807,19 +11818,19 @@
11807
11818
 
11808
11819
  /* istanbul ignore next */
11809
11820
  // 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;
11821
+ var ForwardRefSingleBrickAsComponent = /*#__PURE__*/React__default["default"].memo( /*#__PURE__*/React.forwardRef(function LegacySingleBrickAsComponent(_ref11, ref) {
11822
+ var _internalApiGetCurren2, _brick2, _ref18;
11812
11823
  var {
11813
11824
  useBrick,
11814
11825
  data,
11815
11826
  refCallback
11816
- } = _ref10;
11827
+ } = _ref11;
11817
11828
  var firstRunRef = React.useRef(true);
11818
11829
  var innerRefCallbackRef = React.useRef();
11819
11830
  var elementRef = React.useRef();
11820
- var templateRef = React.useRef();
11831
+ var expandedBrickConfRef = React.useRef();
11832
+ var [expandedBrickConf, setExpandedBrickConf] = React.useState(null);
11821
11833
  var tplTagName = getTagNameOfCustomTemplate(useBrick.brick, (_internalApiGetCurren2 = _internalApiGetCurrentContext().app) === null || _internalApiGetCurren2 === void 0 ? void 0 : _internalApiGetCurren2.id);
11822
- var formRef = React.useRef();
11823
11834
  var isBrickAvailable = React__default["default"].useMemo(() => {
11824
11835
  if (brickUtils.isObject(useBrick.if) && !isPreEvaluated(useBrick.if)) {
11825
11836
  // eslint-disable-next-line
@@ -11833,6 +11844,16 @@
11833
11844
  }
11834
11845
  return true;
11835
11846
  }, [useBrick, data]);
11847
+ var requireSuspense = React.useMemo(() => {
11848
+ var context;
11849
+ if (useBrick.brick === formRenderer) {
11850
+ context = useBrick.properties.formData.context;
11851
+ } else if (tplTagName) {
11852
+ context = customTemplateRegistry.get(tplTagName).state;
11853
+ }
11854
+ return Array.isArray(context) && context.some(ctx => !!ctx.resolve);
11855
+ }, [tplTagName, useBrick]);
11856
+ var [suspenseReady, setSuspenseReady] = React.useState(false);
11836
11857
 
11837
11858
  /* istanbul ignore next (never reach in test) */
11838
11859
  React.useImperativeHandle(ref, () => {
@@ -11849,10 +11870,12 @@
11849
11870
  }
11850
11871
  _internalApiLoadDynamicBricksInBrickConf(useBrick).catch(handleHttpError);
11851
11872
  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);
11873
+ var expanded = useBrick.brick === formRenderer ? (requireSuspense ? AsyncExpandCustomForm : ExpandCustomForm)(useBrick.properties.formData, useBrick, false) : expandTemplateInUseBrick(useBrick, tplTagName, brick, requireSuspense);
11874
+ if (requireSuspense) {
11875
+ setExpandedBrickConf(yield expanded);
11876
+ setSuspenseReady(true);
11877
+ } else {
11878
+ expandedBrickConfRef.current = expanded;
11856
11879
  }
11857
11880
 
11858
11881
  // Let `transform` works still.
@@ -11862,8 +11885,8 @@
11862
11885
 
11863
11886
  // 设置 properties refProperty值
11864
11887
  if (useBrick[symbolForComputedPropsFromProxy]) {
11865
- Object.entries(useBrick[symbolForComputedPropsFromProxy]).forEach(_ref12 => {
11866
- var [propName, propValue] = _ref12;
11888
+ Object.entries(useBrick[symbolForComputedPropsFromProxy]).forEach(_ref13 => {
11889
+ var [propName, propValue] = _ref13;
11867
11890
  _.set(brick.properties, propName, propValue);
11868
11891
  });
11869
11892
  }
@@ -11877,9 +11900,9 @@
11877
11900
  }));
11878
11901
  }
11879
11902
  return brick;
11880
- }), [useBrick, data, isBrickAvailable, tplTagName]);
11903
+ }), [useBrick, data, isBrickAvailable, tplTagName, requireSuspense]);
11881
11904
  var dispatchLifeCycleEvent = /*#__PURE__*/function () {
11882
- var _ref13 = _asyncToGenerator__default["default"](function* (event, handlers, brick) {
11905
+ var _ref14 = _asyncToGenerator__default["default"](function* (event, handlers, brick) {
11883
11906
  for (var handler of [].concat(handlers)) {
11884
11907
  listenerFactory(handler, _objectSpread__default["default"](_objectSpread__default["default"]({}, _internalApiGetCurrentContext()), {}, {
11885
11908
  tplContextId: useBrick[symbolForTplContextId]
@@ -11887,7 +11910,7 @@
11887
11910
  }
11888
11911
  });
11889
11912
  return function dispatchLifeCycleEvent(_x5, _x6, _x7) {
11890
- return _ref13.apply(this, arguments);
11913
+ return _ref14.apply(this, arguments);
11891
11914
  };
11892
11915
  }();
11893
11916
  var updateBrick = React.useCallback((brick, element) => {
@@ -11938,7 +11961,7 @@
11938
11961
  })();
11939
11962
  }, [runtimeBrick, updateBrick]);
11940
11963
  innerRefCallbackRef.current = /*#__PURE__*/function () {
11941
- var _ref15 = _asyncToGenerator__default["default"](function* (element) {
11964
+ var _ref16 = _asyncToGenerator__default["default"](function* (element) {
11942
11965
  elementRef.current = element;
11943
11966
  var brick;
11944
11967
  try {
@@ -11964,7 +11987,7 @@
11964
11987
  refCallback === null || refCallback === void 0 ? void 0 : refCallback(element);
11965
11988
  });
11966
11989
  return function (_x8) {
11967
- return _ref15.apply(this, arguments);
11990
+ return _ref16.apply(this, arguments);
11968
11991
  };
11969
11992
  }();
11970
11993
 
@@ -11973,13 +11996,13 @@
11973
11996
  innerRefCallbackRef.current(element);
11974
11997
  }, []);
11975
11998
  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) {
11999
+ var _ref17;
12000
+ return slotsToChildren(((_ref17 = requireSuspense ? expandedBrickConf : expandedBrickConfRef.current) !== null && _ref17 !== void 0 ? _ref17 : useBrick).slots);
12001
+ }, [expandedBrickConf, expandedBrickConfRef.current, useBrick, requireSuspense]);
12002
+ if (!isBrickAvailable || requireSuspense && !suspenseReady) {
11980
12003
  return null;
11981
12004
  }
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, {
12005
+ 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
12006
  ref: innerRefCallback
11984
12007
  }, ...childConfs.map((item, index) => /*#__PURE__*/React__default["default"].createElement(SingleBrickAsComponent, {
11985
12008
  key: index,