openxiangda 1.0.2 → 1.0.4

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.
@@ -1173,33 +1173,38 @@ var antdTheme = {
1173
1173
  // packages/sdk/src/runtime/react/createReactPage.tsx
1174
1174
  var import_jsx_runtime2 = require("react/jsx-runtime");
1175
1175
  var NAMESPACE_ROOT_CLASS = "sy-app-workspace";
1176
+ var RUNTIME_PORTAL_ATTR = "data-sy-runtime-portal";
1176
1177
  var PORTAL_CONTAINER_STACK_GLOBAL = "__OPENXIANGDA_PORTAL_CONTAINER_STACK__";
1177
1178
  var PORTAL_CONTAINER_RESOLVER_GLOBAL = "__OPENXIANGDA_GET_PORTAL_CONTAINER__";
1178
1179
  var createRuntimeRoot = (el) => {
1179
1180
  return (0, import_client2.createRoot)(el);
1180
1181
  };
1182
+ var isShadowRoot = (rootNode) => typeof ShadowRoot !== "undefined" && rootNode instanceof ShadowRoot;
1181
1183
  var getStyleContainer = (el) => {
1182
1184
  const rootNode = el.getRootNode?.();
1183
- if (typeof ShadowRoot !== "undefined" && rootNode instanceof ShadowRoot) {
1185
+ if (isShadowRoot(rootNode)) {
1184
1186
  return rootNode;
1185
1187
  }
1186
1188
  return document.head;
1187
1189
  };
1188
- var getRuntimeOverlayContainer = (el) => {
1190
+ var getRuntimeRoot = (el, triggerNode) => {
1189
1191
  const rootNode = el.getRootNode?.();
1190
- const isShadowRoot = typeof ShadowRoot !== "undefined" && rootNode instanceof ShadowRoot;
1191
- const getNamespaceRoot = (triggerNode) => {
1192
- if (isShadowRoot) return el;
1193
- const triggerRoot = triggerNode?.closest?.(
1194
- `.${NAMESPACE_ROOT_CLASS}`
1195
- );
1196
- return triggerRoot || el.closest(`.${NAMESPACE_ROOT_CLASS}`) || el.querySelector(`.${NAMESPACE_ROOT_CLASS}`) || el;
1192
+ if (isShadowRoot(rootNode)) return el;
1193
+ const triggerRoot = triggerNode?.closest?.(
1194
+ `.${NAMESPACE_ROOT_CLASS}`
1195
+ );
1196
+ return triggerRoot || el.closest(`.${NAMESPACE_ROOT_CLASS}`) || el.querySelector(`.${NAMESPACE_ROOT_CLASS}`) || el;
1197
+ };
1198
+ var getRuntimeOverlayContainer = (el, portalContainer) => {
1199
+ const getOverlayRoot = (triggerNode) => {
1200
+ if (portalContainer?.isConnected) return portalContainer;
1201
+ return getRuntimeRoot(el, triggerNode);
1197
1202
  };
1198
1203
  return {
1199
1204
  getPopupContainer: (triggerNode) => {
1200
- return getNamespaceRoot(triggerNode);
1205
+ return getOverlayRoot(triggerNode);
1201
1206
  },
1202
- getTargetContainer: () => getNamespaceRoot()
1207
+ getTargetContainer: () => getRuntimeRoot(el)
1203
1208
  };
1204
1209
  };
1205
1210
  var createAntdConfig = (overlayContainer) => ({
@@ -1210,56 +1215,89 @@ var createAntdConfig = (overlayContainer) => ({
1210
1215
  getPopupContainer: overlayContainer.getPopupContainer,
1211
1216
  getTargetContainer: overlayContainer.getTargetContainer
1212
1217
  });
1218
+ var createPortalContainer = (el) => {
1219
+ const rootNode = el.getRootNode?.();
1220
+ const parent = isShadowRoot(rootNode) ? rootNode : el.ownerDocument?.body || document.body;
1221
+ const portalContainer = el.ownerDocument.createElement("div");
1222
+ portalContainer.setAttribute(RUNTIME_PORTAL_ATTR, "");
1223
+ portalContainer.classList.add(NAMESPACE_ROOT_CLASS);
1224
+ parent.appendChild(portalContainer);
1225
+ return portalContainer;
1226
+ };
1213
1227
  var installRuntimePortalContainer = (el) => {
1214
1228
  const globalScope = globalThis;
1229
+ const portalContainer = createPortalContainer(el);
1215
1230
  const stack = Array.isArray(globalScope[PORTAL_CONTAINER_STACK_GLOBAL]) ? globalScope[PORTAL_CONTAINER_STACK_GLOBAL] : [];
1216
- stack.push(el);
1231
+ stack.push(portalContainer);
1217
1232
  globalScope[PORTAL_CONTAINER_STACK_GLOBAL] = stack;
1218
1233
  globalScope[PORTAL_CONTAINER_RESOLVER_GLOBAL] = () => {
1219
1234
  for (let index = stack.length - 1; index >= 0; index -= 1) {
1220
1235
  const candidate = stack[index];
1221
1236
  if (candidate?.isConnected) {
1222
- return candidate.closest(`.${NAMESPACE_ROOT_CLASS}`) || candidate.querySelector(`.${NAMESPACE_ROOT_CLASS}`) || candidate;
1237
+ return candidate;
1223
1238
  }
1224
1239
  }
1225
- return document.querySelector(`.${NAMESPACE_ROOT_CLASS}`) || document.body;
1240
+ return document.querySelector(`[${RUNTIME_PORTAL_ATTR}]`) || document.querySelector(`.${NAMESPACE_ROOT_CLASS}`) || document.body;
1226
1241
  };
1227
- return () => {
1228
- const position = stack.lastIndexOf(el);
1229
- if (position >= 0) {
1230
- stack.splice(position, 1);
1242
+ return {
1243
+ container: portalContainer,
1244
+ release: () => {
1245
+ const position = stack.lastIndexOf(portalContainer);
1246
+ if (position >= 0) {
1247
+ stack.splice(position, 1);
1248
+ }
1249
+ portalContainer.remove();
1231
1250
  }
1232
1251
  };
1233
1252
  };
1234
- var installAntdStaticHolder = (el) => {
1253
+ var installAntdStaticHolder = (el, portalContainer) => {
1254
+ const getMessageContainer = () => {
1255
+ if (portalContainer?.isConnected) return portalContainer;
1256
+ return getRuntimeRoot(el);
1257
+ };
1235
1258
  import_antd.ConfigProvider.config({
1236
1259
  prefixCls: "sy-ant",
1237
1260
  iconPrefixCls: "sy-anticon",
1238
1261
  theme: antdTheme,
1239
1262
  holderRender: (children) => {
1240
1263
  if (!el.isConnected) {
1241
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_antd.ConfigProvider, { prefixCls: "sy-ant", iconPrefixCls: "sy-anticon", theme: antdTheme, children });
1264
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
1265
+ import_antd.ConfigProvider,
1266
+ {
1267
+ prefixCls: "sy-ant",
1268
+ iconPrefixCls: "sy-anticon",
1269
+ theme: antdTheme,
1270
+ children
1271
+ }
1272
+ );
1242
1273
  }
1243
- const overlayContainer = getRuntimeOverlayContainer(el);
1274
+ const overlayContainer = getRuntimeOverlayContainer(el, portalContainer);
1244
1275
  return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_cssinjs.StyleProvider, { hashPriority: "high", container: getStyleContainer(el), children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_antd.ConfigProvider, { ...createAntdConfig(overlayContainer), children }) });
1245
1276
  }
1246
1277
  });
1278
+ import_antd.message.config({
1279
+ prefixCls: "sy-ant-message",
1280
+ getContainer: getMessageContainer
1281
+ });
1247
1282
  };
1248
1283
  var createReactPage = (AppComponent) => {
1249
1284
  let root = null;
1250
1285
  let currentContainer = null;
1251
1286
  let releasePortalContainer = null;
1287
+ let portalContainer = null;
1252
1288
  const render = (el, context) => {
1253
1289
  el.classList.add(NAMESPACE_ROOT_CLASS);
1254
- if (!root || currentContainer !== el) {
1290
+ if (!root || currentContainer !== el || !portalContainer?.isConnected) {
1255
1291
  root?.unmount();
1256
1292
  releasePortalContainer?.();
1257
1293
  root = createRuntimeRoot(el);
1258
1294
  currentContainer = el;
1259
- releasePortalContainer = installRuntimePortalContainer(el);
1295
+ const portalHandle = installRuntimePortalContainer(el);
1296
+ portalContainer = portalHandle.container;
1297
+ releasePortalContainer = portalHandle.release;
1260
1298
  }
1261
- const overlayContainer = getRuntimeOverlayContainer(el);
1262
- installAntdStaticHolder(el);
1299
+ const overlayContainer = getRuntimeOverlayContainer(el, portalContainer);
1300
+ installAntdStaticHolder(el, portalContainer);
1263
1301
  const antdConfig = createAntdConfig(overlayContainer);
1264
1302
  root.render(
1265
1303
  /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_cssinjs.StyleProvider, { hashPriority: "high", container: getStyleContainer(el), children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_antd.ConfigProvider, { ...antdConfig, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_antd.App, { children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(PageProvider, { context, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(AppComponent, {}) }) }) }) })
@@ -1278,6 +1316,7 @@ var createReactPage = (AppComponent) => {
1278
1316
  root = null;
1279
1317
  currentContainer = null;
1280
1318
  releasePortalContainer = null;
1319
+ portalContainer = null;
1281
1320
  }
1282
1321
  };
1283
1322
  };