@next-core/brick-kit 2.178.1 → 2.178.2

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.
@@ -12602,159 +12602,163 @@
12602
12602
  return brick;
12603
12603
  };
12604
12604
 
12605
- /**
12606
- * 可以渲染单个 `useBrick` 的 React 组件。
12607
- *
12608
- * @example
12609
- *
12610
- * ```tsx
12611
- * <BrickAsComponent
12612
- * useBrick={{
12613
- * brick: "your.any-brick"
12614
- * }}
12615
- * data={yourData}
12616
- * />
12617
- * ```
12618
- *
12619
- * @param props - 属性。
12620
- */
12621
- var SingleBrickAsComponent = /*#__PURE__*/React__default["default"].memo(function SingleBrickAsComponent(_ref) {
12622
- var _internalApiGetCurren, _expandedBrickConf$br;
12623
- var {
12624
- useBrick,
12625
- data,
12626
- refCallback,
12627
- immediatelyRefCallback
12628
- } = _ref;
12629
- var firstRunRef = React.useRef(true);
12630
- var innerRefCallbackRef = React.useRef();
12631
- var elementRef = React.useRef();
12632
- var [expandedBrickConf, setExpandedBrickConf] = React.useState(null);
12633
- var tplTagName = getTagNameOfCustomTemplate(useBrick.brick, (_internalApiGetCurren = _internalApiGetCurrentContext().app) === null || _internalApiGetCurren === void 0 ? void 0 : _internalApiGetCurren.id);
12634
- var isBrickAvailable = React.useMemo(() => {
12635
- if (brickUtils.isObject(useBrick.if) && !isPreEvaluated(useBrick.if)) {
12636
- // eslint-disable-next-line
12637
- console.warn("Currently resolvable-if in `useBrick` is not supported.");
12638
- } else if (!looseCheckIfByTransform(useBrick, data, {
12639
- allowInject: true,
12640
- // useBrick 中嵌套custom-template的情况下, 会存在丢失getTplVariables的情况, 因此需要在此进行补充
12641
- tplContextId: useBrick[symbolForTplContextId]
12642
- })) {
12643
- return false;
12644
- }
12645
- return true;
12646
- }, [useBrick, data]);
12647
- var requireSuspense = React.useMemo(() => {
12648
- var context;
12649
- if (useBrick.brick === formRenderer) {
12650
- var formData = typeof useBrick.properties.formData === "string" ? JSON.parse(useBrick.properties.formData) : useBrick.properties.formData;
12651
- context = formData.context;
12652
- } else if (tplTagName) {
12653
- context = customTemplateRegistry.get(tplTagName).state;
12654
- }
12655
- return Array.isArray(context) && context.some(ctx => !!ctx.resolve);
12656
- }, [tplTagName, useBrick]);
12657
- var [suspenseReady, setSuspenseReady] = React.useState(false);
12658
- var runtimeBrick = React.useMemo( /*#__PURE__*/_asyncToGenerator__default["default"](function* () {
12659
- if (!isBrickAvailable) {
12660
- return null;
12661
- }
12662
-
12663
- // If the router state is initial, ignore rendering the sub-brick.
12664
- if (_internalApiGetRouterState() === "initial" && !window.DEVELOPER_PREVIEW) {
12665
- return;
12666
- }
12667
- var promise = _internalApiLoadDynamicBricksInBrickConf(useBrick).catch(handleHttpError);
12605
+ // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
12606
+ function SingleBrickAsComponentFactory(React) {
12607
+ function SingleBrickAsComponent(_ref) {
12608
+ var _internalApiGetCurren, _expandedBrickConf$br;
12609
+ var {
12610
+ useBrick,
12611
+ data,
12612
+ refCallback,
12613
+ immediatelyRefCallback
12614
+ } = _ref;
12615
+ var firstRunRef = React.useRef(true);
12616
+ var innerRefCallbackRef = React.useRef();
12617
+ var elementRef = React.useRef();
12618
+ var [expandedBrickConf, setExpandedBrickConf] = React.useState(null);
12619
+ var tplTagName = getTagNameOfCustomTemplate(useBrick.brick, (_internalApiGetCurren = _internalApiGetCurrentContext().app) === null || _internalApiGetCurren === void 0 ? void 0 : _internalApiGetCurren.id);
12620
+ var isBrickAvailable = React.useMemo(() => {
12621
+ if (brickUtils.isObject(useBrick.if) && !isPreEvaluated(useBrick.if)) {
12622
+ // eslint-disable-next-line
12623
+ console.warn("Currently resolvable-if in `useBrick` is not supported.");
12624
+ } else if (!looseCheckIfByTransform(useBrick, data, {
12625
+ allowInject: true,
12626
+ // useBrick 中嵌套custom-template的情况下, 会存在丢失getTplVariables的情况, 因此需要在此进行补充
12627
+ tplContextId: useBrick[symbolForTplContextId]
12628
+ })) {
12629
+ return false;
12630
+ }
12631
+ return true;
12632
+ }, [useBrick, data]);
12633
+ var requireSuspense = React.useMemo(() => {
12634
+ var context;
12635
+ if (useBrick.brick === formRenderer) {
12636
+ var formData = typeof useBrick.properties.formData === "string" ? JSON.parse(useBrick.properties.formData) : useBrick.properties.formData;
12637
+ context = formData.context;
12638
+ } else if (tplTagName) {
12639
+ context = customTemplateRegistry.get(tplTagName).state;
12640
+ }
12641
+ return Array.isArray(context) && context.some(ctx => !!ctx.resolve);
12642
+ }, [tplTagName, useBrick]);
12643
+ var [suspenseReady, setSuspenseReady] = React.useState(false);
12644
+ var runtimeBrick = React.useMemo( /*#__PURE__*/_asyncToGenerator__default["default"](function* () {
12645
+ if (!isBrickAvailable) {
12646
+ return null;
12647
+ }
12668
12648
 
12669
- // 需要等待构件加载完成,因为构件可能包含属性初始化逻辑。
12670
- // 如果先创建构件,再完成构件加载,其属性默认初始化动作会覆盖用户定义的属性。
12671
- // 另一方面,避免额外的 MicroTask,因为 graph.general-graph 构件依赖固定的 useBrick 渲染时机。
12672
- if (useBrick.brick.includes("-") && !customElements.get(useBrick.brick)) {
12673
- yield promise;
12674
- }
12675
- var brick = getCurrentRunTimeBrick(useBrick, tplTagName, data);
12676
- var expanded = useBrick.brick === formRenderer ? (requireSuspense ? AsyncExpandCustomForm : ExpandCustomForm)(typeof useBrick.properties.formData === "string" ? JSON.parse(useBrick.properties.formData) : useBrick.properties.formData, useBrick, false) : expandTemplateInUseBrick(useBrick, tplTagName, brick, requireSuspense);
12677
- if (requireSuspense) {
12678
- setExpandedBrickConf(yield expanded);
12679
- } else {
12680
- setExpandedBrickConf(expanded);
12681
- }
12682
- setSuspenseReady(true);
12649
+ // If the router state is initial, ignore rendering the sub-brick.
12650
+ if (_internalApiGetRouterState() === "initial" && !window.DEVELOPER_PREVIEW) {
12651
+ return;
12652
+ }
12653
+ var promise = _internalApiLoadDynamicBricksInBrickConf(useBrick).catch(handleHttpError);
12683
12654
 
12684
- // Let `transform` works still.
12685
- transformProperties(brick.properties, data, useBrick.transform, useBrick.transformFrom, undefined, {
12686
- allowInject: true
12687
- });
12655
+ // 需要等待构件加载完成,因为构件可能包含属性初始化逻辑。
12656
+ // 如果先创建构件,再完成构件加载,其属性默认初始化动作会覆盖用户定义的属性。
12657
+ // 另一方面,避免额外的 MicroTask,因为 graph.general-graph 构件依赖固定的 useBrick 渲染时机。
12658
+ if (useBrick.brick.includes("-") && !customElements.get(useBrick.brick)) {
12659
+ yield promise;
12660
+ }
12661
+ var brick = getCurrentRunTimeBrick(useBrick, tplTagName, data);
12662
+ var expanded = useBrick.brick === formRenderer ? (requireSuspense ? AsyncExpandCustomForm : ExpandCustomForm)(typeof useBrick.properties.formData === "string" ? JSON.parse(useBrick.properties.formData) : useBrick.properties.formData, useBrick, false) : expandTemplateInUseBrick(useBrick, tplTagName, brick, requireSuspense);
12663
+ if (requireSuspense) {
12664
+ setExpandedBrickConf(yield expanded);
12665
+ } else {
12666
+ setExpandedBrickConf(expanded);
12667
+ }
12668
+ setSuspenseReady(true);
12688
12669
 
12689
- // 设置 properties refProperty值
12690
- if (useBrick[symbolForComputedPropsFromProxy]) {
12691
- Object.entries(useBrick[symbolForComputedPropsFromProxy]).forEach(_ref3 => {
12692
- var [propName, propValue] = _ref3;
12693
- _.set(brick.properties, propName, propValue);
12670
+ // Let `transform` works still.
12671
+ transformProperties(brick.properties, data, useBrick.transform, useBrick.transformFrom, undefined, {
12672
+ allowInject: true
12694
12673
  });
12695
- }
12696
- if (useBrick.lifeCycle) {
12697
- var resolver = _internalApiGetResolver();
12698
- yield resolver.resolve({
12699
- brick: useBrick.brick,
12700
- lifeCycle: useBrick.lifeCycle
12701
- }, brick, _objectSpread__default["default"](_objectSpread__default["default"]({}, _internalApiGetCurrentContext()), {}, {
12702
- tplContextId: useBrick[symbolForTplContextId],
12703
- formContextId: useBrick[symbolForFormContextId]
12704
- }));
12705
- }
12706
- return brick;
12707
- }), [useBrick, data, isBrickAvailable, tplTagName, requireSuspense]);
12708
- var dispatchLifeCycleEvent = /*#__PURE__*/function () {
12709
- var _ref4 = _asyncToGenerator__default["default"](function* (event, handlers, brick) {
12710
- for (var handler of [].concat(handlers)) {
12711
- listenerFactory(handler, _objectSpread__default["default"](_objectSpread__default["default"]({}, _internalApiGetCurrentContext()), {}, {
12674
+
12675
+ // 设置 properties refProperty值
12676
+ if (useBrick[symbolForComputedPropsFromProxy]) {
12677
+ Object.entries(useBrick[symbolForComputedPropsFromProxy]).forEach(_ref3 => {
12678
+ var [propName, propValue] = _ref3;
12679
+ _.set(brick.properties, propName, propValue);
12680
+ });
12681
+ }
12682
+ if (useBrick.lifeCycle) {
12683
+ var resolver = _internalApiGetResolver();
12684
+ yield resolver.resolve({
12685
+ brick: useBrick.brick,
12686
+ lifeCycle: useBrick.lifeCycle
12687
+ }, brick, _objectSpread__default["default"](_objectSpread__default["default"]({}, _internalApiGetCurrentContext()), {}, {
12712
12688
  tplContextId: useBrick[symbolForTplContextId],
12713
12689
  formContextId: useBrick[symbolForFormContextId]
12714
- }), brick)(event);
12690
+ }));
12715
12691
  }
12716
- });
12717
- return function dispatchLifeCycleEvent(_x, _x2, _x3) {
12718
- return _ref4.apply(this, arguments);
12719
- };
12720
- }();
12721
- var updateBrick = React.useCallback((brick, element) => {
12722
- brick.element = element;
12723
- var {
12724
- [symbolForTplContextId]: tplContextId
12725
- } = useBrick;
12726
- var {
12727
- [symbolForFormContextId]: formContextId
12728
- } = useBrick;
12729
- if (useBrick.iid) {
12730
- element.dataset.iid = useBrick.iid;
12731
- }
12732
- setRealProperties(element, brick.properties);
12733
- unbindListeners(element);
12734
- if (brick.events) {
12735
- bindListeners(element, transformEvents(data, brick.events), _objectSpread__default["default"](_objectSpread__default["default"]({}, _internalApiGetCurrentContext()), {}, {
12736
- tplContextId,
12737
- formContextId
12738
- }));
12739
- }
12740
- // 设置proxyEvent
12741
- handleProxyOfCustomTemplate(brick);
12742
- if (!["formRenderer", "custom-template"].includes(element.$$typeof)) {
12743
- if (!useBrick.brick.includes("-")) {
12744
- element.$$typeof = "native";
12745
- } else if (!customElements.get(useBrick.brick)) {
12746
- element.$$typeof = "invalid";
12692
+ return brick;
12693
+ }), [useBrick, data, isBrickAvailable, tplTagName, requireSuspense]);
12694
+ var dispatchLifeCycleEvent = /*#__PURE__*/function () {
12695
+ var _ref4 = _asyncToGenerator__default["default"](function* (event, handlers, brick) {
12696
+ for (var handler of [].concat(handlers)) {
12697
+ listenerFactory(handler, _objectSpread__default["default"](_objectSpread__default["default"]({}, _internalApiGetCurrentContext()), {}, {
12698
+ tplContextId: useBrick[symbolForTplContextId],
12699
+ formContextId: useBrick[symbolForFormContextId]
12700
+ }), brick)(event);
12701
+ }
12702
+ });
12703
+ return function dispatchLifeCycleEvent(_x, _x2, _x3) {
12704
+ return _ref4.apply(this, arguments);
12705
+ };
12706
+ }();
12707
+ var updateBrick = React.useCallback((brick, element) => {
12708
+ brick.element = element;
12709
+ var {
12710
+ [symbolForTplContextId]: tplContextId
12711
+ } = useBrick;
12712
+ var {
12713
+ [symbolForFormContextId]: formContextId
12714
+ } = useBrick;
12715
+ if (useBrick.iid) {
12716
+ element.dataset.iid = useBrick.iid;
12717
+ }
12718
+ setRealProperties(element, brick.properties);
12719
+ unbindListeners(element);
12720
+ if (brick.events) {
12721
+ bindListeners(element, transformEvents(data, brick.events), _objectSpread__default["default"](_objectSpread__default["default"]({}, _internalApiGetCurrentContext()), {}, {
12722
+ tplContextId,
12723
+ formContextId
12724
+ }));
12747
12725
  }
12748
- }
12749
- }, [data, useBrick]);
12750
- React.useEffect(() => {
12751
- if (firstRunRef.current) {
12752
- firstRunRef.current = false;
12753
- return;
12754
- }
12755
- _asyncToGenerator__default["default"](function* () {
12756
- var element = elementRef.current;
12757
- if (element) {
12726
+ // 设置proxyEvent
12727
+ handleProxyOfCustomTemplate(brick);
12728
+ if (!["formRenderer", "custom-template"].includes(element.$$typeof)) {
12729
+ if (!useBrick.brick.includes("-")) {
12730
+ element.$$typeof = "native";
12731
+ } else if (!customElements.get(useBrick.brick)) {
12732
+ element.$$typeof = "invalid";
12733
+ }
12734
+ }
12735
+ }, [data, useBrick]);
12736
+ React.useEffect(() => {
12737
+ if (firstRunRef.current) {
12738
+ firstRunRef.current = false;
12739
+ return;
12740
+ }
12741
+ _asyncToGenerator__default["default"](function* () {
12742
+ var element = elementRef.current;
12743
+ if (element) {
12744
+ var brick;
12745
+ try {
12746
+ brick = yield runtimeBrick;
12747
+ } catch (e) {
12748
+ handleHttpError(e);
12749
+ }
12750
+ // sub-brick rendering is ignored.
12751
+ if (!brick) {
12752
+ return;
12753
+ }
12754
+ updateBrick(brick, element);
12755
+ }
12756
+ })();
12757
+ }, [runtimeBrick, updateBrick]);
12758
+ innerRefCallbackRef.current = /*#__PURE__*/function () {
12759
+ var _ref6 = _asyncToGenerator__default["default"](function* (element) {
12760
+ immediatelyRefCallback === null || immediatelyRefCallback === void 0 ? void 0 : immediatelyRefCallback(element);
12761
+ elementRef.current = element;
12758
12762
  var brick;
12759
12763
  try {
12760
12764
  brick = yield runtimeBrick;
@@ -12762,62 +12766,83 @@
12762
12766
  handleHttpError(e);
12763
12767
  }
12764
12768
  // sub-brick rendering is ignored.
12765
- if (!brick) {
12766
- return;
12767
- }
12768
- updateBrick(brick, element);
12769
- }
12770
- })();
12771
- }, [runtimeBrick, updateBrick]);
12772
- innerRefCallbackRef.current = /*#__PURE__*/function () {
12773
- var _ref6 = _asyncToGenerator__default["default"](function* (element) {
12774
- immediatelyRefCallback === null || immediatelyRefCallback === void 0 ? void 0 : immediatelyRefCallback(element);
12775
- elementRef.current = element;
12776
- var brick;
12777
- try {
12778
- brick = yield runtimeBrick;
12779
- } catch (e) {
12780
- handleHttpError(e);
12781
- }
12782
- // sub-brick rendering is ignored.
12783
- if (brick) {
12784
- if (element) {
12785
- var _useBrick$lifeCycle;
12786
- updateBrick(brick, element);
12787
- if ((_useBrick$lifeCycle = useBrick.lifeCycle) !== null && _useBrick$lifeCycle !== void 0 && _useBrick$lifeCycle.onMount) {
12788
- dispatchLifeCycleEvent(new CustomEvent("mount"), useBrick.lifeCycle.onMount, brick);
12789
- }
12790
- } else {
12791
- var _useBrick$lifeCycle2;
12792
- if ((_useBrick$lifeCycle2 = useBrick.lifeCycle) !== null && _useBrick$lifeCycle2 !== void 0 && _useBrick$lifeCycle2.onUnmount) {
12793
- dispatchLifeCycleEvent(new CustomEvent("unmount"), useBrick.lifeCycle.onUnmount, brick);
12769
+ if (brick) {
12770
+ if (element) {
12771
+ var _useBrick$lifeCycle;
12772
+ updateBrick(brick, element);
12773
+ if ((_useBrick$lifeCycle = useBrick.lifeCycle) !== null && _useBrick$lifeCycle !== void 0 && _useBrick$lifeCycle.onMount) {
12774
+ dispatchLifeCycleEvent(new CustomEvent("mount"), useBrick.lifeCycle.onMount, brick);
12775
+ }
12776
+ } else {
12777
+ var _useBrick$lifeCycle2;
12778
+ if ((_useBrick$lifeCycle2 = useBrick.lifeCycle) !== null && _useBrick$lifeCycle2 !== void 0 && _useBrick$lifeCycle2.onUnmount) {
12779
+ dispatchLifeCycleEvent(new CustomEvent("unmount"), useBrick.lifeCycle.onUnmount, brick);
12780
+ }
12794
12781
  }
12795
12782
  }
12796
- }
12797
- refCallback === null || refCallback === void 0 ? void 0 : refCallback(element);
12798
- });
12799
- return function (_x4) {
12800
- return _ref6.apply(this, arguments);
12801
- };
12802
- }();
12783
+ refCallback === null || refCallback === void 0 ? void 0 : refCallback(element);
12784
+ });
12785
+ return function (_x4) {
12786
+ return _ref6.apply(this, arguments);
12787
+ };
12788
+ }();
12803
12789
 
12804
- // ref https://reactjs.org/docs/refs-and-the-dom.html#caveats-with-callback-refs
12805
- var innerRefCallback = React__default["default"].useCallback(element => {
12806
- innerRefCallbackRef.current(element);
12807
- }, []);
12808
- var childConfs = React.useMemo(() => isBrickAvailable && suspenseReady ? slotsToChildren((expandedBrickConf !== null && expandedBrickConf !== void 0 ? expandedBrickConf : useBrick).slots) : [], [isBrickAvailable, suspenseReady, expandedBrickConf, useBrick]);
12809
- if (!isBrickAvailable || !suspenseReady) {
12810
- return null;
12811
- }
12812
- var tagName = (_expandedBrickConf$br = expandedBrickConf === null || expandedBrickConf === void 0 ? void 0 : expandedBrickConf.brick) !== null && _expandedBrickConf$br !== void 0 ? _expandedBrickConf$br : tplTagName || useBrick.brick;
12813
- return /*#__PURE__*/React__default["default"].createElement(tagName, {
12814
- ref: innerRefCallback
12815
- }, ...childConfs.map((item, index) => /*#__PURE__*/React__default["default"].createElement(SingleBrickAsComponent, {
12816
- key: index,
12817
- useBrick: item,
12818
- data: data
12819
- })));
12820
- });
12790
+ // ref https://reactjs.org/docs/refs-and-the-dom.html#caveats-with-callback-refs
12791
+ var innerRefCallback = React.useCallback(element => {
12792
+ innerRefCallbackRef.current(element);
12793
+ }, []);
12794
+ var childConfs = React.useMemo(() => isBrickAvailable && suspenseReady ? slotsToChildren((expandedBrickConf !== null && expandedBrickConf !== void 0 ? expandedBrickConf : useBrick).slots) : [], [isBrickAvailable, suspenseReady, expandedBrickConf, useBrick]);
12795
+ if (!isBrickAvailable || !suspenseReady) {
12796
+ return null;
12797
+ }
12798
+ var tagName = (_expandedBrickConf$br = expandedBrickConf === null || expandedBrickConf === void 0 ? void 0 : expandedBrickConf.brick) !== null && _expandedBrickConf$br !== void 0 ? _expandedBrickConf$br : tplTagName || useBrick.brick;
12799
+ return React.createElement(tagName, {
12800
+ ref: innerRefCallback
12801
+ }, ...childConfs.map((item, index) => /*#__PURE__*/React.createElement(SingleBrickAsComponent, {
12802
+ key: index,
12803
+ useBrick: item,
12804
+ data: data
12805
+ })));
12806
+ }
12807
+ return React.memo(SingleBrickAsComponent);
12808
+ }
12809
+
12810
+ /**
12811
+ * 可以渲染单个 `useBrick` 的 React 组件。
12812
+ *
12813
+ * @example
12814
+ *
12815
+ * ```tsx
12816
+ * <BrickAsComponent
12817
+ * useBrick={{
12818
+ * brick: "your.any-brick"
12819
+ * }}
12820
+ * data={yourData}
12821
+ * />
12822
+ * ```
12823
+ *
12824
+ * @param props - 属性。
12825
+ */
12826
+ var SingleBrickAsComponent = SingleBrickAsComponentFactory(React__default["default"]);
12827
+ function BrickAsComponentFactory(React) {
12828
+ return function BrickAsComponent(_ref7) {
12829
+ var {
12830
+ useBrick,
12831
+ data
12832
+ } = _ref7;
12833
+ if (Array.isArray(useBrick)) {
12834
+ return /*#__PURE__*/React.createElement(React.Fragment, null, useBrick.map((item, index) => /*#__PURE__*/React.createElement(SingleBrickAsComponent, {
12835
+ key: index,
12836
+ useBrick: item,
12837
+ data: data
12838
+ })));
12839
+ }
12840
+ return /*#__PURE__*/React.createElement(SingleBrickAsComponent, {
12841
+ useBrick: useBrick,
12842
+ data: data
12843
+ });
12844
+ };
12845
+ }
12821
12846
 
12822
12847
  /**
12823
12848
  * 可以渲染 `useBrick` 的 React 组件。
@@ -12837,23 +12862,7 @@
12837
12862
  *
12838
12863
  * @param props - 属性。
12839
12864
  */
12840
- function BrickAsComponent(_ref7) {
12841
- var {
12842
- useBrick,
12843
- data
12844
- } = _ref7;
12845
- if (Array.isArray(useBrick)) {
12846
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, useBrick.map((item, index) => /*#__PURE__*/React__default["default"].createElement(SingleBrickAsComponent, {
12847
- key: index,
12848
- useBrick: item,
12849
- data: data
12850
- })));
12851
- }
12852
- return /*#__PURE__*/React__default["default"].createElement(SingleBrickAsComponent, {
12853
- useBrick: useBrick,
12854
- data: data
12855
- });
12856
- }
12865
+ var BrickAsComponent = BrickAsComponentFactory(React__default["default"]);
12857
12866
  function slotsToChildren(slots) {
12858
12867
  if (!slots) {
12859
12868
  return [];
@@ -12876,138 +12885,156 @@
12876
12885
  }
12877
12886
 
12878
12887
  /* istanbul ignore next */
12879
- // eslint-disable-next-line react/display-name
12880
- var ForwardRefSingleBrickAsComponent = /*#__PURE__*/React__default["default"].memo( /*#__PURE__*/React.forwardRef(function LegacySingleBrickAsComponent(_ref9, ref) {
12881
- var _internalApiGetCurren2, _expandedBrickConf$br2;
12882
- var {
12883
- useBrick,
12884
- data,
12885
- refCallback
12886
- } = _ref9;
12887
- var firstRunRef = React.useRef(true);
12888
- var innerRefCallbackRef = React.useRef();
12889
- var elementRef = React.useRef();
12890
- var [expandedBrickConf, setExpandedBrickConf] = React.useState(null);
12891
- var tplTagName = getTagNameOfCustomTemplate(useBrick.brick, (_internalApiGetCurren2 = _internalApiGetCurrentContext().app) === null || _internalApiGetCurren2 === void 0 ? void 0 : _internalApiGetCurren2.id);
12892
- var isBrickAvailable = React__default["default"].useMemo(() => {
12893
- if (brickUtils.isObject(useBrick.if) && !isPreEvaluated(useBrick.if)) {
12894
- // eslint-disable-next-line
12895
- console.warn("Currently resolvable-if in `useBrick` is not supported.");
12896
- } else if (!looseCheckIfByTransform(useBrick, data, {
12897
- allowInject: true,
12898
- // useBrick 中嵌套custom-template的情况下, 会存在丢失getTplVariables的情况, 因此需要在此进行补充
12899
- tplContextId: useBrick[symbolForTplContextId]
12900
- })) {
12901
- return false;
12902
- }
12903
- return true;
12904
- }, [useBrick, data]);
12905
- var requireSuspense = React.useMemo(() => {
12906
- var context;
12907
- if (useBrick.brick === formRenderer) {
12908
- var formData = typeof useBrick.properties.formData === "string" ? JSON.parse(useBrick.properties.formData) : useBrick.properties.formData;
12909
- context = formData.context;
12910
- } else if (tplTagName) {
12911
- context = customTemplateRegistry.get(tplTagName).state;
12912
- }
12913
- return Array.isArray(context) && context.some(ctx => !!ctx.resolve);
12914
- }, [tplTagName, useBrick]);
12915
- var [suspenseReady, setSuspenseReady] = React.useState(false);
12916
-
12917
- /* istanbul ignore next (never reach in test) */
12918
- React.useImperativeHandle(ref, () => {
12919
- return elementRef.current;
12920
- });
12921
- var runtimeBrick = React__default["default"].useMemo( /*#__PURE__*/_asyncToGenerator__default["default"](function* () {
12922
- if (!isBrickAvailable) {
12923
- return null;
12924
- }
12925
-
12926
- // If the router state is initial, ignore rendering the sub-brick.
12927
- if (_internalApiGetRouterState() === "initial" && !window.DEVELOPER_PREVIEW) {
12928
- return;
12929
- }
12930
- var promise = _internalApiLoadDynamicBricksInBrickConf(useBrick).catch(handleHttpError);
12931
- if (useBrick.brick.includes("-") && !customElements.get(useBrick.brick)) {
12932
- yield promise;
12933
- }
12934
- var brick = getCurrentRunTimeBrick(useBrick, tplTagName, data);
12935
- var expanded = useBrick.brick === formRenderer ? (requireSuspense ? AsyncExpandCustomForm : ExpandCustomForm)(typeof useBrick.properties.formData === "string" ? JSON.parse(useBrick.properties.formData) : useBrick.properties.formData, useBrick, false) : expandTemplateInUseBrick(useBrick, tplTagName, brick, requireSuspense);
12936
- if (requireSuspense) {
12937
- setExpandedBrickConf(yield expanded);
12938
- } else {
12939
- setExpandedBrickConf(expanded);
12940
- }
12941
- setSuspenseReady(true);
12942
-
12943
- // Let `transform` works still.
12944
- transformProperties(brick.properties, data, useBrick.transform, useBrick.transformFrom, undefined, {
12945
- allowInject: true
12888
+ // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
12889
+ function ForwardRefSingleBrickAsComponentFactory(React) {
12890
+ var fn = React.forwardRef(function LegacySingleBrickAsComponent(_ref9, ref) {
12891
+ var _internalApiGetCurren2, _expandedBrickConf$br2;
12892
+ var {
12893
+ useBrick,
12894
+ data,
12895
+ refCallback
12896
+ } = _ref9;
12897
+ var firstRunRef = React.useRef(true);
12898
+ var innerRefCallbackRef = React.useRef();
12899
+ var elementRef = React.useRef();
12900
+ var [expandedBrickConf, setExpandedBrickConf] = React.useState(null);
12901
+ var tplTagName = getTagNameOfCustomTemplate(useBrick.brick, (_internalApiGetCurren2 = _internalApiGetCurrentContext().app) === null || _internalApiGetCurren2 === void 0 ? void 0 : _internalApiGetCurren2.id);
12902
+ var isBrickAvailable = React.useMemo(() => {
12903
+ if (brickUtils.isObject(useBrick.if) && !isPreEvaluated(useBrick.if)) {
12904
+ // eslint-disable-next-line
12905
+ console.warn("Currently resolvable-if in `useBrick` is not supported.");
12906
+ } else if (!looseCheckIfByTransform(useBrick, data, {
12907
+ allowInject: true,
12908
+ // useBrick 中嵌套custom-template的情况下, 会存在丢失getTplVariables的情况, 因此需要在此进行补充
12909
+ tplContextId: useBrick[symbolForTplContextId]
12910
+ })) {
12911
+ return false;
12912
+ }
12913
+ return true;
12914
+ }, [useBrick, data]);
12915
+ var requireSuspense = React.useMemo(() => {
12916
+ var context;
12917
+ if (useBrick.brick === formRenderer) {
12918
+ var formData = typeof useBrick.properties.formData === "string" ? JSON.parse(useBrick.properties.formData) : useBrick.properties.formData;
12919
+ context = formData.context;
12920
+ } else if (tplTagName) {
12921
+ context = customTemplateRegistry.get(tplTagName).state;
12922
+ }
12923
+ return Array.isArray(context) && context.some(ctx => !!ctx.resolve);
12924
+ }, [tplTagName, useBrick]);
12925
+ var [suspenseReady, setSuspenseReady] = React.useState(false);
12926
+
12927
+ /* istanbul ignore next (never reach in test) */
12928
+ React.useImperativeHandle(ref, () => {
12929
+ return elementRef.current;
12946
12930
  });
12931
+ var runtimeBrick = React.useMemo( /*#__PURE__*/_asyncToGenerator__default["default"](function* () {
12932
+ if (!isBrickAvailable) {
12933
+ return null;
12934
+ }
12935
+
12936
+ // If the router state is initial, ignore rendering the sub-brick.
12937
+ if (_internalApiGetRouterState() === "initial" && !window.DEVELOPER_PREVIEW) {
12938
+ return;
12939
+ }
12940
+ var promise = _internalApiLoadDynamicBricksInBrickConf(useBrick).catch(handleHttpError);
12941
+ if (useBrick.brick.includes("-") && !customElements.get(useBrick.brick)) {
12942
+ yield promise;
12943
+ }
12944
+ var brick = getCurrentRunTimeBrick(useBrick, tplTagName, data);
12945
+ var expanded = useBrick.brick === formRenderer ? (requireSuspense ? AsyncExpandCustomForm : ExpandCustomForm)(typeof useBrick.properties.formData === "string" ? JSON.parse(useBrick.properties.formData) : useBrick.properties.formData, useBrick, false) : expandTemplateInUseBrick(useBrick, tplTagName, brick, requireSuspense);
12946
+ if (requireSuspense) {
12947
+ setExpandedBrickConf(yield expanded);
12948
+ } else {
12949
+ setExpandedBrickConf(expanded);
12950
+ }
12951
+ setSuspenseReady(true);
12947
12952
 
12948
- // 设置 properties refProperty值
12949
- if (useBrick[symbolForComputedPropsFromProxy]) {
12950
- Object.entries(useBrick[symbolForComputedPropsFromProxy]).forEach(_ref11 => {
12951
- var [propName, propValue] = _ref11;
12952
- _.set(brick.properties, propName, propValue);
12953
+ // Let `transform` works still.
12954
+ transformProperties(brick.properties, data, useBrick.transform, useBrick.transformFrom, undefined, {
12955
+ allowInject: true
12953
12956
  });
12954
- }
12955
- if (useBrick.lifeCycle) {
12956
- var resolver = _internalApiGetResolver();
12957
- yield resolver.resolve({
12958
- brick: useBrick.brick,
12959
- lifeCycle: useBrick.lifeCycle
12960
- }, brick, _objectSpread__default["default"](_objectSpread__default["default"]({}, _internalApiGetCurrentContext()), {}, {
12961
- tplContextId: useBrick[symbolForTplContextId]
12962
- }));
12963
- }
12964
- return brick;
12965
- }), [useBrick, data, isBrickAvailable, tplTagName, requireSuspense]);
12966
- var dispatchLifeCycleEvent = /*#__PURE__*/function () {
12967
- var _ref12 = _asyncToGenerator__default["default"](function* (event, handlers, brick) {
12968
- for (var handler of [].concat(handlers)) {
12969
- listenerFactory(handler, _objectSpread__default["default"](_objectSpread__default["default"]({}, _internalApiGetCurrentContext()), {}, {
12957
+
12958
+ // 设置 properties refProperty值
12959
+ if (useBrick[symbolForComputedPropsFromProxy]) {
12960
+ Object.entries(useBrick[symbolForComputedPropsFromProxy]).forEach(_ref11 => {
12961
+ var [propName, propValue] = _ref11;
12962
+ _.set(brick.properties, propName, propValue);
12963
+ });
12964
+ }
12965
+ if (useBrick.lifeCycle) {
12966
+ var resolver = _internalApiGetResolver();
12967
+ yield resolver.resolve({
12968
+ brick: useBrick.brick,
12969
+ lifeCycle: useBrick.lifeCycle
12970
+ }, brick, _objectSpread__default["default"](_objectSpread__default["default"]({}, _internalApiGetCurrentContext()), {}, {
12970
12971
  tplContextId: useBrick[symbolForTplContextId]
12971
- }), brick)(event);
12972
+ }));
12972
12973
  }
12973
- });
12974
- return function dispatchLifeCycleEvent(_x5, _x6, _x7) {
12975
- return _ref12.apply(this, arguments);
12976
- };
12977
- }();
12978
- var updateBrick = React.useCallback((brick, element) => {
12979
- brick.element = element;
12980
- var {
12981
- [symbolForTplContextId]: tplContextId
12982
- } = useBrick;
12983
- if (useBrick.iid) {
12984
- element.dataset.iid = useBrick.iid;
12985
- }
12986
- setRealProperties(element, brick.properties);
12987
- unbindListeners(element);
12988
- if (useBrick.events) {
12989
- bindListeners(element, transformEvents(data, useBrick.events), _objectSpread__default["default"](_objectSpread__default["default"]({}, _internalApiGetCurrentContext()), {}, {
12990
- tplContextId
12991
- }));
12992
- }
12993
- // 设置proxyEvent
12994
- handleProxyOfCustomTemplate(brick);
12995
- if (element.$$typeof !== "custom-template") {
12996
- if (!useBrick.brick.includes("-")) {
12997
- element.$$typeof = "native";
12998
- } else if (!customElements.get(useBrick.brick)) {
12999
- element.$$typeof = "invalid";
12974
+ return brick;
12975
+ }), [useBrick, data, isBrickAvailable, tplTagName, requireSuspense]);
12976
+ var dispatchLifeCycleEvent = /*#__PURE__*/function () {
12977
+ var _ref12 = _asyncToGenerator__default["default"](function* (event, handlers, brick) {
12978
+ for (var handler of [].concat(handlers)) {
12979
+ listenerFactory(handler, _objectSpread__default["default"](_objectSpread__default["default"]({}, _internalApiGetCurrentContext()), {}, {
12980
+ tplContextId: useBrick[symbolForTplContextId]
12981
+ }), brick)(event);
12982
+ }
12983
+ });
12984
+ return function dispatchLifeCycleEvent(_x5, _x6, _x7) {
12985
+ return _ref12.apply(this, arguments);
12986
+ };
12987
+ }();
12988
+ var updateBrick = React.useCallback((brick, element) => {
12989
+ brick.element = element;
12990
+ var {
12991
+ [symbolForTplContextId]: tplContextId
12992
+ } = useBrick;
12993
+ if (useBrick.iid) {
12994
+ element.dataset.iid = useBrick.iid;
12995
+ }
12996
+ setRealProperties(element, brick.properties);
12997
+ unbindListeners(element);
12998
+ if (useBrick.events) {
12999
+ bindListeners(element, transformEvents(data, useBrick.events), _objectSpread__default["default"](_objectSpread__default["default"]({}, _internalApiGetCurrentContext()), {}, {
13000
+ tplContextId
13001
+ }));
13000
13002
  }
13001
- }
13002
- }, [data, useBrick]);
13003
- React.useEffect(() => {
13004
- if (firstRunRef.current) {
13005
- firstRunRef.current = false;
13006
- return;
13007
- }
13008
- _asyncToGenerator__default["default"](function* () {
13009
- var element = elementRef.current;
13010
- if (element) {
13003
+ // 设置proxyEvent
13004
+ handleProxyOfCustomTemplate(brick);
13005
+ if (element.$$typeof !== "custom-template") {
13006
+ if (!useBrick.brick.includes("-")) {
13007
+ element.$$typeof = "native";
13008
+ } else if (!customElements.get(useBrick.brick)) {
13009
+ element.$$typeof = "invalid";
13010
+ }
13011
+ }
13012
+ }, [data, useBrick]);
13013
+ React.useEffect(() => {
13014
+ if (firstRunRef.current) {
13015
+ firstRunRef.current = false;
13016
+ return;
13017
+ }
13018
+ _asyncToGenerator__default["default"](function* () {
13019
+ var element = elementRef.current;
13020
+ if (element) {
13021
+ var brick;
13022
+ try {
13023
+ brick = yield runtimeBrick;
13024
+ } catch (e) {
13025
+ handleHttpError(e);
13026
+ }
13027
+ // sub-brick rendering is ignored.
13028
+ if (!brick) {
13029
+ return;
13030
+ }
13031
+ updateBrick(brick, element);
13032
+ }
13033
+ })();
13034
+ }, [runtimeBrick, updateBrick]);
13035
+ innerRefCallbackRef.current = /*#__PURE__*/function () {
13036
+ var _ref14 = _asyncToGenerator__default["default"](function* (element) {
13037
+ elementRef.current = element;
13011
13038
  var brick;
13012
13039
  try {
13013
13040
  brick = yield runtimeBrick;
@@ -13015,61 +13042,47 @@
13015
13042
  handleHttpError(e);
13016
13043
  }
13017
13044
  // sub-brick rendering is ignored.
13018
- if (!brick) {
13019
- return;
13020
- }
13021
- updateBrick(brick, element);
13022
- }
13023
- })();
13024
- }, [runtimeBrick, updateBrick]);
13025
- innerRefCallbackRef.current = /*#__PURE__*/function () {
13026
- var _ref14 = _asyncToGenerator__default["default"](function* (element) {
13027
- elementRef.current = element;
13028
- var brick;
13029
- try {
13030
- brick = yield runtimeBrick;
13031
- } catch (e) {
13032
- handleHttpError(e);
13033
- }
13034
- // sub-brick rendering is ignored.
13035
- if (brick) {
13036
- if (element) {
13037
- var _useBrick$lifeCycle3;
13038
- updateBrick(brick, element);
13039
- if ((_useBrick$lifeCycle3 = useBrick.lifeCycle) !== null && _useBrick$lifeCycle3 !== void 0 && _useBrick$lifeCycle3.onMount) {
13040
- dispatchLifeCycleEvent(new CustomEvent("mount"), useBrick.lifeCycle.onMount, brick);
13041
- }
13042
- } else {
13043
- var _useBrick$lifeCycle4;
13044
- if ((_useBrick$lifeCycle4 = useBrick.lifeCycle) !== null && _useBrick$lifeCycle4 !== void 0 && _useBrick$lifeCycle4.onUnmount) {
13045
- dispatchLifeCycleEvent(new CustomEvent("unmount"), useBrick.lifeCycle.onUnmount, brick);
13045
+ if (brick) {
13046
+ if (element) {
13047
+ var _useBrick$lifeCycle3;
13048
+ updateBrick(brick, element);
13049
+ if ((_useBrick$lifeCycle3 = useBrick.lifeCycle) !== null && _useBrick$lifeCycle3 !== void 0 && _useBrick$lifeCycle3.onMount) {
13050
+ dispatchLifeCycleEvent(new CustomEvent("mount"), useBrick.lifeCycle.onMount, brick);
13051
+ }
13052
+ } else {
13053
+ var _useBrick$lifeCycle4;
13054
+ if ((_useBrick$lifeCycle4 = useBrick.lifeCycle) !== null && _useBrick$lifeCycle4 !== void 0 && _useBrick$lifeCycle4.onUnmount) {
13055
+ dispatchLifeCycleEvent(new CustomEvent("unmount"), useBrick.lifeCycle.onUnmount, brick);
13056
+ }
13046
13057
  }
13047
13058
  }
13048
- }
13049
- refCallback === null || refCallback === void 0 ? void 0 : refCallback(element);
13050
- });
13051
- return function (_x8) {
13052
- return _ref14.apply(this, arguments);
13053
- };
13054
- }();
13059
+ refCallback === null || refCallback === void 0 ? void 0 : refCallback(element);
13060
+ });
13061
+ return function (_x8) {
13062
+ return _ref14.apply(this, arguments);
13063
+ };
13064
+ }();
13055
13065
 
13056
- // ref https://reactjs.org/docs/refs-and-the-dom.html#caveats-with-callback-refs
13057
- var innerRefCallback = React__default["default"].useCallback(element => {
13058
- innerRefCallbackRef.current(element);
13059
- }, []);
13060
- var childConfs = React.useMemo(() => isBrickAvailable && suspenseReady ? slotsToChildren((expandedBrickConf !== null && expandedBrickConf !== void 0 ? expandedBrickConf : useBrick).slots) : [], [isBrickAvailable, suspenseReady, expandedBrickConf, useBrick]);
13061
- if (!isBrickAvailable || !suspenseReady) {
13062
- return null;
13063
- }
13064
- var tagName = (_expandedBrickConf$br2 = expandedBrickConf === null || expandedBrickConf === void 0 ? void 0 : expandedBrickConf.brick) !== null && _expandedBrickConf$br2 !== void 0 ? _expandedBrickConf$br2 : tplTagName || useBrick.brick;
13065
- return /*#__PURE__*/React__default["default"].createElement(tagName, {
13066
- ref: innerRefCallback
13067
- }, ...childConfs.map((item, index) => /*#__PURE__*/React__default["default"].createElement(SingleBrickAsComponent, {
13068
- key: index,
13069
- useBrick: item,
13070
- data: data
13071
- })));
13072
- }));
13066
+ // ref https://reactjs.org/docs/refs-and-the-dom.html#caveats-with-callback-refs
13067
+ var innerRefCallback = React.useCallback(element => {
13068
+ innerRefCallbackRef.current(element);
13069
+ }, []);
13070
+ var childConfs = React.useMemo(() => isBrickAvailable && suspenseReady ? slotsToChildren((expandedBrickConf !== null && expandedBrickConf !== void 0 ? expandedBrickConf : useBrick).slots) : [], [isBrickAvailable, suspenseReady, expandedBrickConf, useBrick]);
13071
+ if (!isBrickAvailable || !suspenseReady) {
13072
+ return null;
13073
+ }
13074
+ var tagName = (_expandedBrickConf$br2 = expandedBrickConf === null || expandedBrickConf === void 0 ? void 0 : expandedBrickConf.brick) !== null && _expandedBrickConf$br2 !== void 0 ? _expandedBrickConf$br2 : tplTagName || useBrick.brick;
13075
+ return React.createElement(tagName, {
13076
+ ref: innerRefCallback
13077
+ }, ...childConfs.map((item, index) => /*#__PURE__*/React.createElement(SingleBrickAsComponent, {
13078
+ key: index,
13079
+ useBrick: item,
13080
+ data: data
13081
+ })));
13082
+ });
13083
+ return React.memo(fn);
13084
+ }
13085
+ var ForwardRefSingleBrickAsComponent = ForwardRefSingleBrickAsComponentFactory(React__default["default"]);
13073
13086
 
13074
13087
  var Pagination$1 = {
13075
13088
  // Options.jsx
@@ -14847,14 +14860,17 @@
14847
14860
  }
14848
14861
 
14849
14862
  exports.BrickAsComponent = BrickAsComponent;
14863
+ exports.BrickAsComponentFactory = BrickAsComponentFactory;
14850
14864
  exports.BrickWrapper = BrickWrapper;
14851
14865
  exports.DisplayByFeatureFlags = DisplayByFeatureFlags;
14852
14866
  exports.EasyopsEmpty = EasyopsEmpty;
14853
14867
  exports.ErrorBoundary = ErrorBoundary;
14854
14868
  exports.FeatureFlagsProvider = FeatureFlagsProvider;
14855
14869
  exports.ForwardRefSingleBrickAsComponent = ForwardRefSingleBrickAsComponent;
14870
+ exports.ForwardRefSingleBrickAsComponentFactory = ForwardRefSingleBrickAsComponentFactory;
14856
14871
  exports.ModalElement = ModalElement;
14857
14872
  exports.SingleBrickAsComponent = SingleBrickAsComponent;
14873
+ exports.SingleBrickAsComponentFactory = SingleBrickAsComponentFactory;
14858
14874
  exports.StoryboardFunctionRegistryFactory = StoryboardFunctionRegistryFactory;
14859
14875
  exports.UpdatingElement = UpdatingElement;
14860
14876
  exports.WebsocketMessageRequest = WebsocketMessageRequest;