@next-core/react-runtime 1.0.39 → 1.0.41

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ReactUseBrick.js","names":["_react","_interopRequireWildcard","require","_runtime","ReactUseBrick","useBrick","data","renderResult","setRenderResult","useState","mountResult","useRef","renderKey","setRenderKey","IdCounterRef","useEffect","init","__secret_internals","renderUseBrick","getUniqueId","error","console","handleHttpError","refCallback","useCallback","element","current","mountUseBrick","unmountUseBrick","undefined","tagName","WebComponent","default","createElement","key","ref","ReactUseMultipleBricks","Array","isArray","Fragment","map","item","index"],"sources":["../../src/ReactUseBrick.tsx"],"sourcesContent":["import React, {\n MutableRefObject,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport type { UseSingleBrickConf } from \"@next-core/types\";\nimport { __secret_internals, handleHttpError } from \"@next-core/runtime\";\n\nexport interface ReactUseBrickProps {\n useBrick: UseSingleBrickConf;\n data?: unknown;\n}\n\n// Note: always synchronize code in LegacyUseBrick:\n// `bricks/v2-adapter/src/data-providers/legacy-brick-kit/getLegacyUseBrick.ts`\nexport function ReactUseBrick({\n useBrick,\n data,\n}: ReactUseBrickProps): React.ReactElement | null {\n const [renderResult, setRenderResult] =\n useState<__secret_internals.RenderUseBrickResult | null>(null);\n const mountResult = useRef<__secret_internals.MountUseBrickResult>();\n const [renderKey, setRenderKey] = useState<number>();\n const IdCounterRef = useRef(0);\n\n useEffect(() => {\n async function init() {\n try {\n setRenderResult(\n await __secret_internals.renderUseBrick(useBrick, data)\n );\n setRenderKey(getUniqueId(IdCounterRef));\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Render useBrick failed:\", useBrick, \"with data:\", data);\n handleHttpError(error);\n }\n }\n init();\n }, [data, useBrick]);\n\n const refCallback = useCallback(\n (element: HTMLElement | null) => {\n if (element) {\n mountResult.current = __secret_internals.mountUseBrick(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n renderResult!,\n element\n );\n } else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n __secret_internals.unmountUseBrick(renderResult!, mountResult.current!);\n mountResult.current = undefined;\n }\n },\n [renderResult]\n );\n\n if (!renderResult) {\n // Fallback when loading/\n return null;\n // return <span>🌀 Loading...</span>;\n }\n\n const { tagName } = renderResult;\n if (tagName === null) {\n return null;\n }\n\n const WebComponent = tagName as any;\n return <WebComponent key={renderKey} ref={refCallback} />;\n}\n\nfunction getUniqueId(ref: MutableRefObject<number>): number {\n return ++ref.current;\n}\n\nexport interface ReactUseMultipleBricksProps {\n useBrick: UseSingleBrickConf | UseSingleBrickConf[];\n data?: unknown;\n}\n\nexport function ReactUseMultipleBricks({\n useBrick,\n data,\n}: ReactUseMultipleBricksProps): React.ReactElement | null {\n if (Array.isArray(useBrick)) {\n return (\n <>\n {useBrick.map((item, index) => (\n <ReactUseBrick key={index} useBrick={item} data={data} />\n ))}\n </>\n );\n }\n return <ReactUseBrick useBrick={useBrick} data={data} />;\n}\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAQA,IAAAC,QAAA,GAAAD,OAAA;AAOA;AACA;AACO,SAASE,aAAaA,CAAC;EAC5BC,QAAQ;EACRC;AACkB,CAAC,EAA6B;EAChD,MAAM,CAACC,YAAY,EAAEC,eAAe,CAAC,GACnC,IAAAC,eAAQ,EAAiD,IAAI,CAAC;EAChE,MAAMC,WAAW,GAAG,IAAAC,aAAM,GAA0C;EACpE,MAAM,CAACC,SAAS,EAAEC,YAAY,CAAC,GAAG,IAAAJ,eAAQ,GAAU;EACpD,MAAMK,YAAY,GAAG,IAAAH,aAAM,EAAC,CAAC,CAAC;EAE9B,IAAAI,gBAAS,EAAC,MAAM;IACd,eAAeC,IAAIA,CAAA,EAAG;MACpB,IAAI;QACFR,eAAe,CACb,MAAMS,2BAAkB,CAACC,cAAc,CAACb,QAAQ,EAAEC,IAAI,CAAC,CACxD;QACDO,YAAY,CAACM,WAAW,CAACL,YAAY,CAAC,CAAC;MACzC,CAAC,CAAC,OAAOM,KAAK,EAAE;QACd;QACAC,OAAO,CAACD,KAAK,CAAC,yBAAyB,EAAEf,QAAQ,EAAE,YAAY,EAAEC,IAAI,CAAC;QACtE,IAAAgB,wBAAe,EAACF,KAAK,CAAC;MACxB;IACF;IACAJ,IAAI,EAAE;EACR,CAAC,EAAE,CAACV,IAAI,EAAED,QAAQ,CAAC,CAAC;EAEpB,MAAMkB,WAAW,GAAG,IAAAC,kBAAW,EAC5BC,OAA2B,IAAK;IAC/B,IAAIA,OAAO,EAAE;MACXf,WAAW,CAACgB,OAAO,GAAGT,2BAAkB,CAACU,aAAa;MACpD;MACApB,YAAY,EACZkB,OAAO,CACR;IACH,CAAC,MAAM;MACL;MACAR,2BAAkB,CAACW,eAAe,CAACrB,YAAY,EAAGG,WAAW,CAACgB,OAAO,CAAE;MACvEhB,WAAW,CAACgB,OAAO,GAAGG,SAAS;IACjC;EACF,CAAC,EACD,CAACtB,YAAY,CAAC,CACf;EAED,IAAI,CAACA,YAAY,EAAE;IACjB;IACA,OAAO,IAAI;IACX;EACF;;EAEA,MAAM;IAAEuB;EAAQ,CAAC,GAAGvB,YAAY;EAChC,IAAIuB,OAAO,KAAK,IAAI,EAAE;IACpB,OAAO,IAAI;EACb;EAEA,MAAMC,YAAY,GAAGD,OAAc;EACnC,oBAAO9B,MAAA,CAAAgC,OAAA,CAAAC,aAAA,CAACF,YAAY;IAACG,GAAG,EAAEtB,SAAU;IAACuB,GAAG,EAAEZ;EAAY,EAAG;AAC3D;AAEA,SAASJ,WAAWA,CAACgB,GAA6B,EAAU;EAC1D,OAAO,EAAEA,GAAG,CAACT,OAAO;AACtB;AAOO,SAASU,sBAAsBA,CAAC;EACrC/B,QAAQ;EACRC;AAC2B,CAAC,EAA6B;EACzD,IAAI+B,KAAK,CAACC,OAAO,CAACjC,QAAQ,CAAC,EAAE;IAC3B,oBACEL,MAAA,CAAAgC,OAAA,CAAAC,aAAA,CAAAjC,MAAA,CAAAgC,OAAA,CAAAO,QAAA,QACGlC,QAAQ,CAACmC,GAAG,CAAC,CAACC,IAAI,EAAEC,KAAK,kBACxB1C,MAAA,CAAAgC,OAAA,CAAAC,aAAA,CAAC7B,aAAa;MAAC8B,GAAG,EAAEQ,KAAM;MAACrC,QAAQ,EAAEoC,IAAK;MAACnC,IAAI,EAAEA;IAAK,EACvD,CAAC,CACD;EAEP;EACA,oBAAON,MAAA,CAAAgC,OAAA,CAAAC,aAAA,CAAC7B,aAAa;IAACC,QAAQ,EAAEA,QAAS;IAACC,IAAI,EAAEA;EAAK,EAAG;AAC1D"}
1
+ {"version":3,"file":"ReactUseBrick.js","names":["_react","_interopRequireWildcard","require","_runtime","ReactUseBrick","useBrick","data","renderResult","setRenderResult","useState","mountResult","useRef","renderKey","setRenderKey","IdCounterRef","useEffect","init","__secret_internals","renderUseBrick","getUniqueId","error","console","handleHttpError","refCallback","useCallback","element","current","mountUseBrick","unmountUseBrick","undefined","tagName","WebComponent","default","createElement","key","ref","ReactUseMultipleBricks","Array","isArray","Fragment","map","item","index"],"sources":["../../src/ReactUseBrick.tsx"],"sourcesContent":["import React, {\n MutableRefObject,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport type { UseSingleBrickConf } from \"@next-core/types\";\nimport { __secret_internals, handleHttpError } from \"@next-core/runtime\";\n\nexport interface ReactUseBrickProps {\n useBrick: UseSingleBrickConf;\n data?: unknown;\n}\n\n// Note: always synchronize code in LegacyUseBrick:\n// `bricks/v2-adapter/src/data-providers/legacy-brick-kit/getLegacyUseBrick.ts`\nexport function ReactUseBrick({\n useBrick,\n data,\n}: ReactUseBrickProps): React.ReactElement | null {\n const [renderResult, setRenderResult] =\n useState<__secret_internals.RenderUseBrickResult | null>(null);\n const mountResult = useRef<__secret_internals.MountUseBrickResult>();\n const [renderKey, setRenderKey] = useState<number>();\n const IdCounterRef = useRef(0);\n\n useEffect(() => {\n async function init() {\n try {\n setRenderResult(\n await __secret_internals.renderUseBrick(useBrick, data)\n );\n setRenderKey(getUniqueId(IdCounterRef));\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Render useBrick failed:\", useBrick, \"with data:\", data);\n handleHttpError(error);\n }\n }\n init();\n }, [data, useBrick]);\n\n const refCallback = useCallback(\n (element: HTMLElement | null) => {\n if (element) {\n mountResult.current = __secret_internals.mountUseBrick(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n renderResult!,\n element\n );\n } else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n __secret_internals.unmountUseBrick(renderResult!, mountResult.current!);\n mountResult.current = undefined;\n }\n },\n [renderResult]\n );\n\n if (!renderResult) {\n // Fallback when loading/\n return null;\n // return <span>🌀 Loading...</span>;\n }\n\n const { tagName } = renderResult;\n if (tagName === null) {\n return null;\n }\n\n const WebComponent = tagName as any;\n return <WebComponent key={renderKey} ref={refCallback} />;\n}\n\nfunction getUniqueId(ref: MutableRefObject<number>): number {\n return ++ref.current;\n}\n\nexport interface ReactUseMultipleBricksProps {\n useBrick: UseSingleBrickConf | UseSingleBrickConf[];\n data?: unknown;\n}\n\nexport function ReactUseMultipleBricks({\n useBrick,\n data,\n}: ReactUseMultipleBricksProps): React.ReactElement | null {\n if (Array.isArray(useBrick)) {\n return (\n <>\n {useBrick.map((item, index) => (\n <ReactUseBrick key={index} useBrick={item} data={data} />\n ))}\n </>\n );\n }\n return <ReactUseBrick useBrick={useBrick} data={data} />;\n}\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAQA,IAAAC,QAAA,GAAAD,OAAA;AAOA;AACA;AACO,SAASE,aAAaA,CAAC;EAC5BC,QAAQ;EACRC;AACkB,CAAC,EAA6B;EAChD,MAAM,CAACC,YAAY,EAAEC,eAAe,CAAC,GACnC,IAAAC,eAAQ,EAAiD,IAAI,CAAC;EAChE,MAAMC,WAAW,GAAG,IAAAC,aAAM,EAAyC,CAAC;EACpE,MAAM,CAACC,SAAS,EAAEC,YAAY,CAAC,GAAG,IAAAJ,eAAQ,EAAS,CAAC;EACpD,MAAMK,YAAY,GAAG,IAAAH,aAAM,EAAC,CAAC,CAAC;EAE9B,IAAAI,gBAAS,EAAC,MAAM;IACd,eAAeC,IAAIA,CAAA,EAAG;MACpB,IAAI;QACFR,eAAe,CACb,MAAMS,2BAAkB,CAACC,cAAc,CAACb,QAAQ,EAAEC,IAAI,CACxD,CAAC;QACDO,YAAY,CAACM,WAAW,CAACL,YAAY,CAAC,CAAC;MACzC,CAAC,CAAC,OAAOM,KAAK,EAAE;QACd;QACAC,OAAO,CAACD,KAAK,CAAC,yBAAyB,EAAEf,QAAQ,EAAE,YAAY,EAAEC,IAAI,CAAC;QACtE,IAAAgB,wBAAe,EAACF,KAAK,CAAC;MACxB;IACF;IACAJ,IAAI,CAAC,CAAC;EACR,CAAC,EAAE,CAACV,IAAI,EAAED,QAAQ,CAAC,CAAC;EAEpB,MAAMkB,WAAW,GAAG,IAAAC,kBAAW,EAC5BC,OAA2B,IAAK;IAC/B,IAAIA,OAAO,EAAE;MACXf,WAAW,CAACgB,OAAO,GAAGT,2BAAkB,CAACU,aAAa;MACpD;MACApB,YAAY,EACZkB,OACF,CAAC;IACH,CAAC,MAAM;MACL;MACAR,2BAAkB,CAACW,eAAe,CAACrB,YAAY,EAAGG,WAAW,CAACgB,OAAQ,CAAC;MACvEhB,WAAW,CAACgB,OAAO,GAAGG,SAAS;IACjC;EACF,CAAC,EACD,CAACtB,YAAY,CACf,CAAC;EAED,IAAI,CAACA,YAAY,EAAE;IACjB;IACA,OAAO,IAAI;IACX;EACF;;EAEA,MAAM;IAAEuB;EAAQ,CAAC,GAAGvB,YAAY;EAChC,IAAIuB,OAAO,KAAK,IAAI,EAAE;IACpB,OAAO,IAAI;EACb;EAEA,MAAMC,YAAY,GAAGD,OAAc;EACnC,oBAAO9B,MAAA,CAAAgC,OAAA,CAAAC,aAAA,CAACF,YAAY;IAACG,GAAG,EAAEtB,SAAU;IAACuB,GAAG,EAAEZ;EAAY,CAAE,CAAC;AAC3D;AAEA,SAASJ,WAAWA,CAACgB,GAA6B,EAAU;EAC1D,OAAO,EAAEA,GAAG,CAACT,OAAO;AACtB;AAOO,SAASU,sBAAsBA,CAAC;EACrC/B,QAAQ;EACRC;AAC2B,CAAC,EAA6B;EACzD,IAAI+B,KAAK,CAACC,OAAO,CAACjC,QAAQ,CAAC,EAAE;IAC3B,oBACEL,MAAA,CAAAgC,OAAA,CAAAC,aAAA,CAAAjC,MAAA,CAAAgC,OAAA,CAAAO,QAAA,QACGlC,QAAQ,CAACmC,GAAG,CAAC,CAACC,IAAI,EAAEC,KAAK,kBACxB1C,MAAA,CAAAgC,OAAA,CAAAC,aAAA,CAAC7B,aAAa;MAAC8B,GAAG,EAAEQ,KAAM;MAACrC,QAAQ,EAAEoC,IAAK;MAACnC,IAAI,EAAEA;IAAK,CAAE,CACzD,CACD,CAAC;EAEP;EACA,oBAAON,MAAA,CAAAgC,OAAA,CAAAC,aAAA,CAAC7B,aAAa;IAACC,QAAQ,EAAEA,QAAS;IAACC,IAAI,EAAEA;EAAK,CAAE,CAAC;AAC1D"}
@@ -1 +1 @@
1
- {"version":3,"file":"useCurrentApp.js","names":["_useRecentApps","require","useCurrentApp","useRecentApps","currentApp"],"sources":["../../src/useCurrentApp.ts"],"sourcesContent":["import { useRecentApps } from \"./useRecentApps.js\";\n\n/**\n * 获取当前所在微应用信息的 React hooks。\n *\n * @example\n *\n * ```tsx\n * function MyReactComponent() {\n * const app = useCurrentApp();\n * return <div>{app.id}</div>;\n * }\n * ```\n *\n * @returns 当前所在微应用的信息。\n */\nexport function useCurrentApp() {\n return useRecentApps().currentApp;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,aAAaA,CAAA,EAAG;EAC9B,OAAO,IAAAC,4BAAa,GAAE,CAACC,UAAU;AACnC"}
1
+ {"version":3,"file":"useCurrentApp.js","names":["_useRecentApps","require","useCurrentApp","useRecentApps","currentApp"],"sources":["../../src/useCurrentApp.ts"],"sourcesContent":["import { useRecentApps } from \"./useRecentApps.js\";\n\n/**\n * 获取当前所在微应用信息的 React hooks。\n *\n * @example\n *\n * ```tsx\n * function MyReactComponent() {\n * const app = useCurrentApp();\n * return <div>{app.id}</div>;\n * }\n * ```\n *\n * @returns 当前所在微应用的信息。\n */\nexport function useCurrentApp() {\n return useRecentApps().currentApp;\n}\n"],"mappings":";;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,aAAaA,CAAA,EAAG;EAC9B,OAAO,IAAAC,4BAAa,EAAC,CAAC,CAACC,UAAU;AACnC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useRecentApps.js","names":["_react","_interopRequireDefault","require","_runtime","useRecentApps","recentApps","setRecentApps","React","useState","getRuntime","getRecentApps","useEffect","listener","event","detail","window","addEventListener","removeEventListener"],"sources":["../../src/useRecentApps.ts"],"sourcesContent":["import React from \"react\";\nimport { MicroApp } from \"@next-core/types\";\nimport { getRuntime } from \"@next-core/runtime\";\n\nexport interface RecentApps {\n currentApp?: MicroApp;\n previousApp?: MicroApp;\n}\n\nexport function useRecentApps(): RecentApps {\n const [recentApps, setRecentApps] = React.useState<RecentApps>(() =>\n getRuntime().getRecentApps()\n );\n\n React.useEffect(() => {\n const listener = ((event: CustomEvent<RecentApps>) => {\n setRecentApps(event.detail);\n }) as EventListener;\n window.addEventListener(\"app.change\", listener);\n return () => window.removeEventListener(\"app.change\", listener);\n }, []);\n\n return recentApps;\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,QAAA,GAAAD,OAAA;AAOO,SAASE,aAAaA,CAAA,EAAe;EAC1C,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAGC,cAAK,CAACC,QAAQ,CAAa,MAC7D,IAAAC,mBAAU,GAAE,CAACC,aAAa,EAAE,CAC7B;EAEDH,cAAK,CAACI,SAAS,CAAC,MAAM;IACpB,MAAMC,QAAQ,GAAKC,KAA8B,IAAK;MACpDP,aAAa,CAACO,KAAK,CAACC,MAAM,CAAC;IAC7B,CAAmB;IACnBC,MAAM,CAACC,gBAAgB,CAAC,YAAY,EAAEJ,QAAQ,CAAC;IAC/C,OAAO,MAAMG,MAAM,CAACE,mBAAmB,CAAC,YAAY,EAAEL,QAAQ,CAAC;EACjE,CAAC,EAAE,EAAE,CAAC;EAEN,OAAOP,UAAU;AACnB"}
1
+ {"version":3,"file":"useRecentApps.js","names":["_react","_interopRequireDefault","require","_runtime","useRecentApps","recentApps","setRecentApps","React","useState","getRuntime","getRecentApps","useEffect","listener","event","detail","window","addEventListener","removeEventListener"],"sources":["../../src/useRecentApps.ts"],"sourcesContent":["import React from \"react\";\nimport { MicroApp } from \"@next-core/types\";\nimport { getRuntime } from \"@next-core/runtime\";\n\nexport interface RecentApps {\n currentApp?: MicroApp;\n previousApp?: MicroApp;\n}\n\nexport function useRecentApps(): RecentApps {\n const [recentApps, setRecentApps] = React.useState<RecentApps>(() =>\n getRuntime().getRecentApps()\n );\n\n React.useEffect(() => {\n const listener = ((event: CustomEvent<RecentApps>) => {\n setRecentApps(event.detail);\n }) as EventListener;\n window.addEventListener(\"app.change\", listener);\n return () => window.removeEventListener(\"app.change\", listener);\n }, []);\n\n return recentApps;\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,QAAA,GAAAD,OAAA;AAOO,SAASE,aAAaA,CAAA,EAAe;EAC1C,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAGC,cAAK,CAACC,QAAQ,CAAa,MAC7D,IAAAC,mBAAU,EAAC,CAAC,CAACC,aAAa,CAAC,CAC7B,CAAC;EAEDH,cAAK,CAACI,SAAS,CAAC,MAAM;IACpB,MAAMC,QAAQ,GAAKC,KAA8B,IAAK;MACpDP,aAAa,CAACO,KAAK,CAACC,MAAM,CAAC;IAC7B,CAAmB;IACnBC,MAAM,CAACC,gBAAgB,CAAC,YAAY,EAAEJ,QAAQ,CAAC;IAC/C,OAAO,MAAMG,MAAM,CAACE,mBAAmB,CAAC,YAAY,EAAEL,QAAQ,CAAC;EACjE,CAAC,EAAE,EAAE,CAAC;EAEN,OAAOP,UAAU;AACnB"}
@@ -1 +1 @@
1
- {"version":3,"file":"ReactUseBrick.js","names":["React","useCallback","useEffect","useRef","useState","__secret_internals","handleHttpError","ReactUseBrick","_ref","useBrick","data","renderResult","setRenderResult","mountResult","renderKey","setRenderKey","IdCounterRef","init","_init","apply","arguments","_asyncToGenerator","renderUseBrick","getUniqueId","error","console","refCallback","element","current","mountUseBrick","unmountUseBrick","undefined","tagName","WebComponent","createElement","key","ref","ReactUseMultipleBricks","_ref2","Array","isArray","Fragment","map","item","index"],"sources":["../../src/ReactUseBrick.tsx"],"sourcesContent":["import React, {\n MutableRefObject,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport type { UseSingleBrickConf } from \"@next-core/types\";\nimport { __secret_internals, handleHttpError } from \"@next-core/runtime\";\n\nexport interface ReactUseBrickProps {\n useBrick: UseSingleBrickConf;\n data?: unknown;\n}\n\n// Note: always synchronize code in LegacyUseBrick:\n// `bricks/v2-adapter/src/data-providers/legacy-brick-kit/getLegacyUseBrick.ts`\nexport function ReactUseBrick({\n useBrick,\n data,\n}: ReactUseBrickProps): React.ReactElement | null {\n const [renderResult, setRenderResult] =\n useState<__secret_internals.RenderUseBrickResult | null>(null);\n const mountResult = useRef<__secret_internals.MountUseBrickResult>();\n const [renderKey, setRenderKey] = useState<number>();\n const IdCounterRef = useRef(0);\n\n useEffect(() => {\n async function init() {\n try {\n setRenderResult(\n await __secret_internals.renderUseBrick(useBrick, data)\n );\n setRenderKey(getUniqueId(IdCounterRef));\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Render useBrick failed:\", useBrick, \"with data:\", data);\n handleHttpError(error);\n }\n }\n init();\n }, [data, useBrick]);\n\n const refCallback = useCallback(\n (element: HTMLElement | null) => {\n if (element) {\n mountResult.current = __secret_internals.mountUseBrick(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n renderResult!,\n element\n );\n } else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n __secret_internals.unmountUseBrick(renderResult!, mountResult.current!);\n mountResult.current = undefined;\n }\n },\n [renderResult]\n );\n\n if (!renderResult) {\n // Fallback when loading/\n return null;\n // return <span>🌀 Loading...</span>;\n }\n\n const { tagName } = renderResult;\n if (tagName === null) {\n return null;\n }\n\n const WebComponent = tagName as any;\n return <WebComponent key={renderKey} ref={refCallback} />;\n}\n\nfunction getUniqueId(ref: MutableRefObject<number>): number {\n return ++ref.current;\n}\n\nexport interface ReactUseMultipleBricksProps {\n useBrick: UseSingleBrickConf | UseSingleBrickConf[];\n data?: unknown;\n}\n\nexport function ReactUseMultipleBricks({\n useBrick,\n data,\n}: ReactUseMultipleBricksProps): React.ReactElement | null {\n if (Array.isArray(useBrick)) {\n return (\n <>\n {useBrick.map((item, index) => (\n <ReactUseBrick key={index} useBrick={item} data={data} />\n ))}\n </>\n );\n }\n return <ReactUseBrick useBrick={useBrick} data={data} />;\n}\n"],"mappings":";AAAA,OAAOA,KAAK,IAEVC,WAAW,EACXC,SAAS,EACTC,MAAM,EACNC,QAAQ,QACH,OAAO;AAEd,SAASC,kBAAkB,EAAEC,eAAe,QAAQ,oBAAoB;AAOxE;AACA;AACA,OAAO,SAASC,aAAaA,CAAAC,IAAA,EAGqB;EAAA,IAHpB;IAC5BC,QAAQ;IACRC;EACkB,CAAC,GAAAF,IAAA;EACnB,IAAM,CAACG,YAAY,EAAEC,eAAe,CAAC,GACnCR,QAAQ,CAAiD,IAAI,CAAC;EAChE,IAAMS,WAAW,GAAGV,MAAM,EAA0C;EACpE,IAAM,CAACW,SAAS,EAAEC,YAAY,CAAC,GAAGX,QAAQ,EAAU;EACpD,IAAMY,YAAY,GAAGb,MAAM,CAAC,CAAC,CAAC;EAE9BD,SAAS,CAAC,MAAM;IAAA,SACCe,IAAIA,CAAA;MAAA,OAAAC,KAAA,CAAAC,KAAA,OAAAC,SAAA;IAAA;IAAA,SAAAF,MAAA;MAAAA,KAAA,GAAAG,iBAAA,CAAnB,aAAsB;QACpB,IAAI;UACFT,eAAe,OACPP,kBAAkB,CAACiB,cAAc,CAACb,QAAQ,EAAEC,IAAI,CAAC,CACxD;UACDK,YAAY,CAACQ,WAAW,CAACP,YAAY,CAAC,CAAC;QACzC,CAAC,CAAC,OAAOQ,KAAK,EAAE;UACd;UACAC,OAAO,CAACD,KAAK,CAAC,yBAAyB,EAAEf,QAAQ,EAAE,YAAY,EAAEC,IAAI,CAAC;UACtEJ,eAAe,CAACkB,KAAK,CAAC;QACxB;MACF,CAAC;MAAA,OAAAN,KAAA,CAAAC,KAAA,OAAAC,SAAA;IAAA;IACDH,IAAI,EAAE;EACR,CAAC,EAAE,CAACP,IAAI,EAAED,QAAQ,CAAC,CAAC;EAEpB,IAAMiB,WAAW,GAAGzB,WAAW,CAC5B0B,OAA2B,IAAK;IAC/B,IAAIA,OAAO,EAAE;MACXd,WAAW,CAACe,OAAO,GAAGvB,kBAAkB,CAACwB,aAAa;MACpD;MACAlB,YAAY,EACZgB,OAAO,CACR;IACH,CAAC,MAAM;MACL;MACAtB,kBAAkB,CAACyB,eAAe,CAACnB,YAAY,EAAGE,WAAW,CAACe,OAAO,CAAE;MACvEf,WAAW,CAACe,OAAO,GAAGG,SAAS;IACjC;EACF,CAAC,EACD,CAACpB,YAAY,CAAC,CACf;EAED,IAAI,CAACA,YAAY,EAAE;IACjB;IACA,OAAO,IAAI;IACX;EACF;;EAEA,IAAM;IAAEqB;EAAQ,CAAC,GAAGrB,YAAY;EAChC,IAAIqB,OAAO,KAAK,IAAI,EAAE;IACpB,OAAO,IAAI;EACb;EAEA,IAAMC,YAAY,GAAGD,OAAc;EACnC,oBAAOhC,KAAA,CAAAkC,aAAA,CAACD,YAAY;IAACE,GAAG,EAAErB,SAAU;IAACsB,GAAG,EAAEV;EAAY,EAAG;AAC3D;AAEA,SAASH,WAAWA,CAACa,GAA6B,EAAU;EAC1D,OAAO,EAAEA,GAAG,CAACR,OAAO;AACtB;AAOA,OAAO,SAASS,sBAAsBA,CAAAC,KAAA,EAGqB;EAAA,IAHpB;IACrC7B,QAAQ;IACRC;EAC2B,CAAC,GAAA4B,KAAA;EAC5B,IAAIC,KAAK,CAACC,OAAO,CAAC/B,QAAQ,CAAC,EAAE;IAC3B,oBACET,KAAA,CAAAkC,aAAA,CAAAlC,KAAA,CAAAyC,QAAA,QACGhC,QAAQ,CAACiC,GAAG,CAAC,CAACC,IAAI,EAAEC,KAAK,kBACxB5C,KAAA,CAAAkC,aAAA,CAAC3B,aAAa;MAAC4B,GAAG,EAAES,KAAM;MAACnC,QAAQ,EAAEkC,IAAK;MAACjC,IAAI,EAAEA;IAAK,EACvD,CAAC,CACD;EAEP;EACA,oBAAOV,KAAA,CAAAkC,aAAA,CAAC3B,aAAa;IAACE,QAAQ,EAAEA,QAAS;IAACC,IAAI,EAAEA;EAAK,EAAG;AAC1D"}
1
+ {"version":3,"file":"ReactUseBrick.js","names":["React","useCallback","useEffect","useRef","useState","__secret_internals","handleHttpError","ReactUseBrick","_ref","useBrick","data","renderResult","setRenderResult","mountResult","renderKey","setRenderKey","IdCounterRef","init","_init","apply","arguments","_asyncToGenerator","renderUseBrick","getUniqueId","error","console","refCallback","element","current","mountUseBrick","unmountUseBrick","undefined","tagName","WebComponent","createElement","key","ref","ReactUseMultipleBricks","_ref2","Array","isArray","Fragment","map","item","index"],"sources":["../../src/ReactUseBrick.tsx"],"sourcesContent":["import React, {\n MutableRefObject,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport type { UseSingleBrickConf } from \"@next-core/types\";\nimport { __secret_internals, handleHttpError } from \"@next-core/runtime\";\n\nexport interface ReactUseBrickProps {\n useBrick: UseSingleBrickConf;\n data?: unknown;\n}\n\n// Note: always synchronize code in LegacyUseBrick:\n// `bricks/v2-adapter/src/data-providers/legacy-brick-kit/getLegacyUseBrick.ts`\nexport function ReactUseBrick({\n useBrick,\n data,\n}: ReactUseBrickProps): React.ReactElement | null {\n const [renderResult, setRenderResult] =\n useState<__secret_internals.RenderUseBrickResult | null>(null);\n const mountResult = useRef<__secret_internals.MountUseBrickResult>();\n const [renderKey, setRenderKey] = useState<number>();\n const IdCounterRef = useRef(0);\n\n useEffect(() => {\n async function init() {\n try {\n setRenderResult(\n await __secret_internals.renderUseBrick(useBrick, data)\n );\n setRenderKey(getUniqueId(IdCounterRef));\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Render useBrick failed:\", useBrick, \"with data:\", data);\n handleHttpError(error);\n }\n }\n init();\n }, [data, useBrick]);\n\n const refCallback = useCallback(\n (element: HTMLElement | null) => {\n if (element) {\n mountResult.current = __secret_internals.mountUseBrick(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n renderResult!,\n element\n );\n } else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n __secret_internals.unmountUseBrick(renderResult!, mountResult.current!);\n mountResult.current = undefined;\n }\n },\n [renderResult]\n );\n\n if (!renderResult) {\n // Fallback when loading/\n return null;\n // return <span>🌀 Loading...</span>;\n }\n\n const { tagName } = renderResult;\n if (tagName === null) {\n return null;\n }\n\n const WebComponent = tagName as any;\n return <WebComponent key={renderKey} ref={refCallback} />;\n}\n\nfunction getUniqueId(ref: MutableRefObject<number>): number {\n return ++ref.current;\n}\n\nexport interface ReactUseMultipleBricksProps {\n useBrick: UseSingleBrickConf | UseSingleBrickConf[];\n data?: unknown;\n}\n\nexport function ReactUseMultipleBricks({\n useBrick,\n data,\n}: ReactUseMultipleBricksProps): React.ReactElement | null {\n if (Array.isArray(useBrick)) {\n return (\n <>\n {useBrick.map((item, index) => (\n <ReactUseBrick key={index} useBrick={item} data={data} />\n ))}\n </>\n );\n }\n return <ReactUseBrick useBrick={useBrick} data={data} />;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useCurrentApp.js","names":["useRecentApps","useCurrentApp","currentApp"],"sources":["../../src/useCurrentApp.ts"],"sourcesContent":["import { useRecentApps } from \"./useRecentApps.js\";\n\n/**\n * 获取当前所在微应用信息的 React hooks。\n *\n * @example\n *\n * ```tsx\n * function MyReactComponent() {\n * const app = useCurrentApp();\n * return <div>{app.id}</div>;\n * }\n * ```\n *\n * @returns 当前所在微应用的信息。\n */\nexport function useCurrentApp() {\n return useRecentApps().currentApp;\n}\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,oBAAoB;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,aAAaA,CAAA,EAAG;EAC9B,OAAOD,aAAa,EAAE,CAACE,UAAU;AACnC"}
1
+ {"version":3,"file":"useCurrentApp.js","names":["useRecentApps","useCurrentApp","currentApp"],"sources":["../../src/useCurrentApp.ts"],"sourcesContent":["import { useRecentApps } from \"./useRecentApps.js\";\n\n/**\n * 获取当前所在微应用信息的 React hooks。\n *\n * @example\n *\n * ```tsx\n * function MyReactComponent() {\n * const app = useCurrentApp();\n * return <div>{app.id}</div>;\n * }\n * ```\n *\n * @returns 当前所在微应用的信息。\n */\nexport function useCurrentApp() {\n return useRecentApps().currentApp;\n}\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,oBAAoB;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,aAAaA,CAAA,EAAG;EAC9B,OAAOD,aAAa,CAAC,CAAC,CAACE,UAAU;AACnC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useRecentApps.js","names":["React","getRuntime","useRecentApps","recentApps","setRecentApps","useState","getRecentApps","useEffect","listener","event","detail","window","addEventListener","removeEventListener"],"sources":["../../src/useRecentApps.ts"],"sourcesContent":["import React from \"react\";\nimport { MicroApp } from \"@next-core/types\";\nimport { getRuntime } from \"@next-core/runtime\";\n\nexport interface RecentApps {\n currentApp?: MicroApp;\n previousApp?: MicroApp;\n}\n\nexport function useRecentApps(): RecentApps {\n const [recentApps, setRecentApps] = React.useState<RecentApps>(() =>\n getRuntime().getRecentApps()\n );\n\n React.useEffect(() => {\n const listener = ((event: CustomEvent<RecentApps>) => {\n setRecentApps(event.detail);\n }) as EventListener;\n window.addEventListener(\"app.change\", listener);\n return () => window.removeEventListener(\"app.change\", listener);\n }, []);\n\n return recentApps;\n}\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,UAAU,QAAQ,oBAAoB;AAO/C,OAAO,SAASC,aAAaA,CAAA,EAAe;EAC1C,IAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAGJ,KAAK,CAACK,QAAQ,CAAa,MAC7DJ,UAAU,EAAE,CAACK,aAAa,EAAE,CAC7B;EAEDN,KAAK,CAACO,SAAS,CAAC,MAAM;IACpB,IAAMC,QAAQ,GAAKC,KAA8B,IAAK;MACpDL,aAAa,CAACK,KAAK,CAACC,MAAM,CAAC;IAC7B,CAAmB;IACnBC,MAAM,CAACC,gBAAgB,CAAC,YAAY,EAAEJ,QAAQ,CAAC;IAC/C,OAAO,MAAMG,MAAM,CAACE,mBAAmB,CAAC,YAAY,EAAEL,QAAQ,CAAC;EACjE,CAAC,EAAE,EAAE,CAAC;EAEN,OAAOL,UAAU;AACnB"}
1
+ {"version":3,"file":"useRecentApps.js","names":["React","getRuntime","useRecentApps","recentApps","setRecentApps","useState","getRecentApps","useEffect","listener","event","detail","window","addEventListener","removeEventListener"],"sources":["../../src/useRecentApps.ts"],"sourcesContent":["import React from \"react\";\nimport { MicroApp } from \"@next-core/types\";\nimport { getRuntime } from \"@next-core/runtime\";\n\nexport interface RecentApps {\n currentApp?: MicroApp;\n previousApp?: MicroApp;\n}\n\nexport function useRecentApps(): RecentApps {\n const [recentApps, setRecentApps] = React.useState<RecentApps>(() =>\n getRuntime().getRecentApps()\n );\n\n React.useEffect(() => {\n const listener = ((event: CustomEvent<RecentApps>) => {\n setRecentApps(event.detail);\n }) as EventListener;\n window.addEventListener(\"app.change\", listener);\n return () => window.removeEventListener(\"app.change\", listener);\n }, []);\n\n return recentApps;\n}\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,UAAU,QAAQ,oBAAoB;AAO/C,OAAO,SAASC,aAAaA,CAAA,EAAe;EAC1C,IAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAGJ,KAAK,CAACK,QAAQ,CAAa,MAC7DJ,UAAU,CAAC,CAAC,CAACK,aAAa,CAAC,CAC7B,CAAC;EAEDN,KAAK,CAACO,SAAS,CAAC,MAAM;IACpB,IAAMC,QAAQ,GAAKC,KAA8B,IAAK;MACpDL,aAAa,CAACK,KAAK,CAACC,MAAM,CAAC;IAC7B,CAAmB;IACnBC,MAAM,CAACC,gBAAgB,CAAC,YAAY,EAAEJ,QAAQ,CAAC;IAC/C,OAAO,MAAMG,MAAM,CAACE,mBAAmB,CAAC,YAAY,EAAEL,QAAQ,CAAC;EACjE,CAAC,EAAE,EAAE,CAAC;EAEN,OAAOL,UAAU;AACnB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@next-core/react-runtime",
3
- "version": "1.0.39",
3
+ "version": "1.0.41",
4
4
  "homepage": "https://github.com/easyops-cn/next-core/tree/v3/packages/react-runtime",
5
5
  "license": "GPL-3.0",
6
6
  "repository": {
@@ -37,14 +37,14 @@
37
37
  "test:ci": "cross-env NODE_ENV='test' CI=true test-next"
38
38
  },
39
39
  "dependencies": {
40
- "@next-core/runtime": "^1.12.0",
40
+ "@next-core/runtime": "^1.13.0",
41
41
  "@next-core/types": "^1.3.0",
42
42
  "react": "0.0.0-experimental-ee8509801-20230117",
43
43
  "react-dom": "0.0.0-experimental-ee8509801-20230117"
44
44
  },
45
45
  "devDependencies": {
46
- "@next-core/build-next-libs": "^1.0.4",
47
- "@next-core/test-next": "^1.0.5"
46
+ "@next-core/build-next-libs": "^1.0.5",
47
+ "@next-core/test-next": "^1.0.6"
48
48
  },
49
- "gitHead": "356cc700fe17242f01c76cd77e3f8d3c4971c4d4"
49
+ "gitHead": "587d91150e8bf5fc8c0a696c43b216f405105b40"
50
50
  }