openxiangda 1.0.1 → 1.0.3
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.
- package/package.json +1 -1
- package/packages/sdk/dist/build/index.cjs +68 -0
- package/packages/sdk/dist/build/index.cjs.map +1 -1
- package/packages/sdk/dist/build/index.d.mts +9 -1
- package/packages/sdk/dist/build/index.d.ts +9 -1
- package/packages/sdk/dist/build/index.mjs +68 -0
- package/packages/sdk/dist/build/index.mjs.map +1 -1
- package/packages/sdk/dist/components/index.cjs +40 -13
- package/packages/sdk/dist/components/index.cjs.map +1 -1
- package/packages/sdk/dist/components/index.mjs +40 -13
- package/packages/sdk/dist/components/index.mjs.map +1 -1
- package/packages/sdk/dist/runtime/index.cjs +100 -25
- package/packages/sdk/dist/runtime/index.cjs.map +1 -1
- package/packages/sdk/dist/runtime/index.mjs +100 -25
- package/packages/sdk/dist/runtime/index.mjs.map +1 -1
- package/packages/sdk/src/build-source/scripts/build-forms.mjs +155 -36
- package/packages/sdk/src/build-source/scripts/build-pages.mjs +27 -4
- package/packages/sdk/src/build-source/scripts/utils/namespace-css.mjs +21 -5
- package/packages/sdk/src/build-source/scripts/utils/namespace-css.test.ts +29 -0
- package/packages/sdk/src/build-source/scripts/utils/tailwind-config.mjs +51 -1
- package/packages/sdk/src/build-source/scripts/utils/tailwind-config.test.ts +31 -2
- package/templates/sy-lowcode-app-workspace/postcss.config.cjs +22 -4
|
@@ -1124,55 +1124,127 @@ var antdTheme = {
|
|
|
1124
1124
|
|
|
1125
1125
|
// packages/sdk/src/runtime/react/createReactPage.tsx
|
|
1126
1126
|
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
1127
|
+
var NAMESPACE_ROOT_CLASS = "sy-app-workspace";
|
|
1128
|
+
var RUNTIME_PORTAL_ATTR = "data-sy-runtime-portal";
|
|
1129
|
+
var PORTAL_CONTAINER_STACK_GLOBAL = "__OPENXIANGDA_PORTAL_CONTAINER_STACK__";
|
|
1130
|
+
var PORTAL_CONTAINER_RESOLVER_GLOBAL = "__OPENXIANGDA_GET_PORTAL_CONTAINER__";
|
|
1127
1131
|
var createRuntimeRoot = (el) => {
|
|
1128
1132
|
return createRoot(el);
|
|
1129
1133
|
};
|
|
1134
|
+
var isShadowRoot = (rootNode) => typeof ShadowRoot !== "undefined" && rootNode instanceof ShadowRoot;
|
|
1130
1135
|
var getStyleContainer = (el) => {
|
|
1131
1136
|
const rootNode = el.getRootNode?.();
|
|
1132
|
-
if (
|
|
1137
|
+
if (isShadowRoot(rootNode)) {
|
|
1133
1138
|
return rootNode;
|
|
1134
1139
|
}
|
|
1135
1140
|
return document.head;
|
|
1136
1141
|
};
|
|
1137
|
-
var
|
|
1142
|
+
var getRuntimeRoot = (el, triggerNode) => {
|
|
1138
1143
|
const rootNode = el.getRootNode?.();
|
|
1139
|
-
|
|
1140
|
-
const
|
|
1144
|
+
if (isShadowRoot(rootNode)) return el;
|
|
1145
|
+
const triggerRoot = triggerNode?.closest?.(
|
|
1146
|
+
`.${NAMESPACE_ROOT_CLASS}`
|
|
1147
|
+
);
|
|
1148
|
+
return triggerRoot || el.closest(`.${NAMESPACE_ROOT_CLASS}`) || el.querySelector(`.${NAMESPACE_ROOT_CLASS}`) || el;
|
|
1149
|
+
};
|
|
1150
|
+
var getRuntimeOverlayContainer = (el, portalContainer) => {
|
|
1151
|
+
const getOverlayRoot = (triggerNode) => {
|
|
1152
|
+
if (portalContainer?.isConnected) return portalContainer;
|
|
1153
|
+
return getRuntimeRoot(el, triggerNode);
|
|
1154
|
+
};
|
|
1141
1155
|
return {
|
|
1142
1156
|
getPopupContainer: (triggerNode) => {
|
|
1143
|
-
|
|
1144
|
-
return namespaceRoot || triggerNode?.parentElement || document.body;
|
|
1157
|
+
return getOverlayRoot(triggerNode);
|
|
1145
1158
|
},
|
|
1146
|
-
getTargetContainer: () =>
|
|
1159
|
+
getTargetContainer: () => getRuntimeRoot(el)
|
|
1147
1160
|
};
|
|
1148
1161
|
};
|
|
1162
|
+
var createAntdConfig = (overlayContainer) => ({
|
|
1163
|
+
locale: zhCN,
|
|
1164
|
+
prefixCls: "sy-ant",
|
|
1165
|
+
iconPrefixCls: "sy-anticon",
|
|
1166
|
+
theme: antdTheme,
|
|
1167
|
+
getPopupContainer: overlayContainer.getPopupContainer,
|
|
1168
|
+
getTargetContainer: overlayContainer.getTargetContainer
|
|
1169
|
+
});
|
|
1170
|
+
var createPortalContainer = (el) => {
|
|
1171
|
+
const rootNode = el.getRootNode?.();
|
|
1172
|
+
const parent = isShadowRoot(rootNode) ? rootNode : el.ownerDocument?.body || document.body;
|
|
1173
|
+
const portalContainer = el.ownerDocument.createElement("div");
|
|
1174
|
+
portalContainer.setAttribute(RUNTIME_PORTAL_ATTR, "");
|
|
1175
|
+
portalContainer.classList.add(NAMESPACE_ROOT_CLASS);
|
|
1176
|
+
parent.appendChild(portalContainer);
|
|
1177
|
+
return portalContainer;
|
|
1178
|
+
};
|
|
1179
|
+
var installRuntimePortalContainer = (el) => {
|
|
1180
|
+
const globalScope = globalThis;
|
|
1181
|
+
const portalContainer = createPortalContainer(el);
|
|
1182
|
+
const stack = Array.isArray(globalScope[PORTAL_CONTAINER_STACK_GLOBAL]) ? globalScope[PORTAL_CONTAINER_STACK_GLOBAL] : [];
|
|
1183
|
+
stack.push(portalContainer);
|
|
1184
|
+
globalScope[PORTAL_CONTAINER_STACK_GLOBAL] = stack;
|
|
1185
|
+
globalScope[PORTAL_CONTAINER_RESOLVER_GLOBAL] = () => {
|
|
1186
|
+
for (let index = stack.length - 1; index >= 0; index -= 1) {
|
|
1187
|
+
const candidate = stack[index];
|
|
1188
|
+
if (candidate?.isConnected) {
|
|
1189
|
+
return candidate;
|
|
1190
|
+
}
|
|
1191
|
+
}
|
|
1192
|
+
return document.querySelector(`[${RUNTIME_PORTAL_ATTR}]`) || document.querySelector(`.${NAMESPACE_ROOT_CLASS}`) || document.body;
|
|
1193
|
+
};
|
|
1194
|
+
return {
|
|
1195
|
+
container: portalContainer,
|
|
1196
|
+
release: () => {
|
|
1197
|
+
const position = stack.lastIndexOf(portalContainer);
|
|
1198
|
+
if (position >= 0) {
|
|
1199
|
+
stack.splice(position, 1);
|
|
1200
|
+
}
|
|
1201
|
+
portalContainer.remove();
|
|
1202
|
+
}
|
|
1203
|
+
};
|
|
1204
|
+
};
|
|
1205
|
+
var installAntdStaticHolder = (el, portalContainer) => {
|
|
1206
|
+
ConfigProvider.config({
|
|
1207
|
+
prefixCls: "sy-ant",
|
|
1208
|
+
iconPrefixCls: "sy-anticon",
|
|
1209
|
+
theme: antdTheme,
|
|
1210
|
+
holderRender: (children) => {
|
|
1211
|
+
if (!el.isConnected) {
|
|
1212
|
+
return /* @__PURE__ */ jsx2(
|
|
1213
|
+
ConfigProvider,
|
|
1214
|
+
{
|
|
1215
|
+
prefixCls: "sy-ant",
|
|
1216
|
+
iconPrefixCls: "sy-anticon",
|
|
1217
|
+
theme: antdTheme,
|
|
1218
|
+
children
|
|
1219
|
+
}
|
|
1220
|
+
);
|
|
1221
|
+
}
|
|
1222
|
+
const overlayContainer = getRuntimeOverlayContainer(el, portalContainer);
|
|
1223
|
+
return /* @__PURE__ */ jsx2(StyleProvider, { hashPriority: "high", container: getStyleContainer(el), children: /* @__PURE__ */ jsx2(ConfigProvider, { ...createAntdConfig(overlayContainer), children }) });
|
|
1224
|
+
}
|
|
1225
|
+
});
|
|
1226
|
+
};
|
|
1149
1227
|
var createReactPage = (AppComponent) => {
|
|
1150
1228
|
let root = null;
|
|
1151
1229
|
let currentContainer = null;
|
|
1230
|
+
let releasePortalContainer = null;
|
|
1231
|
+
let portalContainer = null;
|
|
1152
1232
|
const render = (el, context) => {
|
|
1153
|
-
|
|
1154
|
-
if (!
|
|
1155
|
-
el.classList.add("sy-app-workspace");
|
|
1156
|
-
}
|
|
1157
|
-
if (!root || currentContainer !== el) {
|
|
1233
|
+
el.classList.add(NAMESPACE_ROOT_CLASS);
|
|
1234
|
+
if (!root || currentContainer !== el || !portalContainer?.isConnected) {
|
|
1158
1235
|
root?.unmount();
|
|
1236
|
+
releasePortalContainer?.();
|
|
1159
1237
|
root = createRuntimeRoot(el);
|
|
1160
1238
|
currentContainer = el;
|
|
1239
|
+
const portalHandle = installRuntimePortalContainer(el);
|
|
1240
|
+
portalContainer = portalHandle.container;
|
|
1241
|
+
releasePortalContainer = portalHandle.release;
|
|
1161
1242
|
}
|
|
1162
|
-
const overlayContainer = getRuntimeOverlayContainer(el);
|
|
1243
|
+
const overlayContainer = getRuntimeOverlayContainer(el, portalContainer);
|
|
1244
|
+
installAntdStaticHolder(el, portalContainer);
|
|
1245
|
+
const antdConfig = createAntdConfig(overlayContainer);
|
|
1163
1246
|
root.render(
|
|
1164
|
-
/* @__PURE__ */ jsx2(StyleProvider, { hashPriority: "high", container: getStyleContainer(el), children: /* @__PURE__ */ jsx2(
|
|
1165
|
-
ConfigProvider,
|
|
1166
|
-
{
|
|
1167
|
-
locale: zhCN,
|
|
1168
|
-
prefixCls: "sy-ant",
|
|
1169
|
-
iconPrefixCls: "sy-anticon",
|
|
1170
|
-
theme: antdTheme,
|
|
1171
|
-
getPopupContainer: overlayContainer.getPopupContainer,
|
|
1172
|
-
getTargetContainer: overlayContainer.getTargetContainer,
|
|
1173
|
-
children: /* @__PURE__ */ jsx2(AntdApp, { children: /* @__PURE__ */ jsx2(PageProvider, { context, children: /* @__PURE__ */ jsx2(AppComponent, {}) }) })
|
|
1174
|
-
}
|
|
1175
|
-
) })
|
|
1247
|
+
/* @__PURE__ */ jsx2(StyleProvider, { hashPriority: "high", container: getStyleContainer(el), children: /* @__PURE__ */ jsx2(ConfigProvider, { ...antdConfig, children: /* @__PURE__ */ jsx2(AntdApp, { children: /* @__PURE__ */ jsx2(PageProvider, { context, children: /* @__PURE__ */ jsx2(AppComponent, {}) }) }) }) })
|
|
1176
1248
|
);
|
|
1177
1249
|
};
|
|
1178
1250
|
return {
|
|
@@ -1184,8 +1256,11 @@ var createReactPage = (AppComponent) => {
|
|
|
1184
1256
|
},
|
|
1185
1257
|
unmount: () => {
|
|
1186
1258
|
root?.unmount();
|
|
1259
|
+
releasePortalContainer?.();
|
|
1187
1260
|
root = null;
|
|
1188
1261
|
currentContainer = null;
|
|
1262
|
+
releasePortalContainer = null;
|
|
1263
|
+
portalContainer = null;
|
|
1189
1264
|
}
|
|
1190
1265
|
};
|
|
1191
1266
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/runtime/core/client.ts","../../src/runtime/react/createReactPage.tsx","../../src/runtime/react/provider.tsx","../../src/runtime/react/store.ts","../../src/styles/antd-theme.ts","../../src/runtime/react/hooks/useCurrentUser.ts","../../src/runtime/react/hooks/usePageContext.ts","../../src/runtime/react/hooks/useDataSource.ts","../../src/runtime/react/hooks/usePageSdk.ts","../../src/runtime/react/hooks/useFormViewPermissions.ts","../../src/runtime/react/hooks/useMessage.ts","../../src/runtime/react/hooks/useModal.ts","../../src/runtime/react/hooks/useNavigation.ts","../../src/runtime/react/hooks/usePageProps.ts","../../src/runtime/react/hooks/usePageRoute.ts"],"sourcesContent":["import type {\n ApiPermissionListParams,\n ApproveTaskParams,\n AssignPermissionsParams,\n AssignRolesParams,\n BatchAddUsersToRoleParams,\n BatchSendNotificationByTypeParams,\n CreateApiPermissionParams,\n CreateFormPermissionGroupDto,\n CreatePagePermissionGroupDto,\n CreateRoleParams,\n CreateUiPermissionParams,\n CurrentUserDepartmentParents,\n DataManagementConfigParams,\n FormAdvancedSearchParams,\n FormChangeRecordParams,\n FormCreateParams,\n FormExportParams,\n FormGetDetailParams,\n FormImportParams,\n FormRemoveParams,\n FormSearchParams,\n FormUpdateParams,\n GetParentDepartmentsOptions,\n GetProcessInstanceParams,\n GetUserRolesParams,\n ImportExportRecordDownloadParams,\n ImportExportRecordQuery,\n PageApiResponse,\n PageBinaryResponse,\n PageContext,\n PageDataSourceDescriptor,\n PageDepartmentRecord,\n PageHttpMethod,\n PageListResult,\n PageOffsetListResult,\n PagePermissionGroup,\n PageRequestOptions,\n PageSdk,\n PageSdkError,\n PageTransportDownloadPayload,\n PageTransportRequestPayload,\n FormPermissionGroup,\n RoleListParams,\n RoleUsersParams,\n SaveDataManagementConfigParams,\n SearchExpression,\n SearchGroup,\n SearchRule,\n SearchSortItem,\n SubFormRule,\n SwitchAppRoleParams,\n SwitchPlatformRoleParams,\n TerminateProcessInstanceParams,\n TriggerCallbackTaskParams,\n UiPermissionListParams,\n UpdateApiPermissionParams,\n UpdateFormPermissionGroupDto,\n UpdatePagePermissionGroupDto,\n UpdateRoleParams,\n UpdateUiPermissionParams,\n UpdateUserParams,\n QueryFormPermissionGroupDto,\n QueryPagePermissionGroupDto,\n UserListParams,\n UserMenuPermissionsResponse,\n ValidateUserParams,\n CreateUserParams,\n SendNotificationByTypeParams,\n SendNotificationResult,\n ViewFieldPermissionValue,\n ViewPermissionSummary,\n} from \"./types\"\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === \"object\" && value !== null && !Array.isArray(value)\n\nconst isSearchRuleLike = (value: unknown): value is SearchRule | SubFormRule =>\n isRecord(value) &&\n typeof value.key === \"string\" &&\n (value.componentName === undefined || typeof value.componentName === \"string\")\n\nconst isBlobLike = (value: unknown): value is Blob =>\n typeof Blob !== \"undefined\" && value instanceof Blob\n\nconst normalizeMethod = (value: PageHttpMethod | string): PageHttpMethod => {\n const method = String(value || \"get\").toLowerCase()\n if (\n method === \"get\" ||\n method === \"post\" ||\n method === \"put\" ||\n method === \"delete\" ||\n method === \"patch\"\n ) {\n return method\n }\n return \"get\"\n}\n\nconst resolveAppType = (\n context: PageContext,\n explicitAppType?: string,\n): string => {\n const appType = String(explicitAppType || context.app.appType || \"\").trim()\n if (!appType) {\n throw new Error(\"appType 不能为空\")\n }\n return appType\n}\n\nconst buildAppPath = (\n context: PageContext,\n explicitAppType: string | undefined,\n suffix: string,\n) => `/${resolveAppType(context, explicitAppType)}${suffix}`\n\nconst encodePathSegment = (value: string) => encodeURIComponent(String(value))\n\nconst getHeaderValue = (\n headers: Record<string, unknown> | undefined,\n name: string,\n): string | undefined => {\n if (!headers) {\n return undefined\n }\n const target = name.toLowerCase()\n const entry = Object.entries(headers).find(\n ([key]) => key.toLowerCase() === target,\n )\n return entry ? String(entry[1]) : undefined\n}\n\nconst parseContentDispositionFileName = (\n contentDisposition?: string,\n): string | undefined => {\n if (!contentDisposition) {\n return undefined\n }\n\n const utf8Match = contentDisposition.match(/filename\\*=UTF-8''([^;]+)/i)\n if (utf8Match?.[1]) {\n try {\n return decodeURIComponent(utf8Match[1])\n } catch {\n return utf8Match[1]\n }\n }\n\n const quotedMatch = contentDisposition.match(/filename=\"([^\"]+)\"/i)\n if (quotedMatch?.[1]) {\n return quotedMatch[1]\n }\n\n const plainMatch = contentDisposition.match(/filename=([^;]+)/i)\n if (plainMatch?.[1]) {\n return plainMatch[1].trim()\n }\n\n return undefined\n}\n\nconst serializeQuery = (query?: Record<string, unknown>) => {\n if (!query) {\n return undefined\n }\n\n const params = new URLSearchParams()\n\n const appendValue = (key: string, value: unknown) => {\n if (value === undefined || value === null || value === \"\") {\n return\n }\n if (Array.isArray(value)) {\n value.forEach((item) => appendValue(key, item))\n return\n }\n if (value instanceof Date) {\n params.append(key, value.toISOString())\n return\n }\n params.append(key, String(value))\n }\n\n Object.entries(query).forEach(([key, value]) => {\n appendValue(key, value)\n })\n\n const serialized = params.toString()\n return serialized || undefined\n}\n\nconst toLegacyRules = (value: Record<string, unknown>) =>\n Object.entries(value).flatMap(([key, itemValue]) => {\n if (itemValue === undefined) {\n return []\n }\n return [\n {\n key,\n operator: Array.isArray(itemValue) ? \"IN\" : \"EQ\",\n value: itemValue,\n },\n ]\n })\n\nconst toSearchGroup = (value: unknown): SearchGroup | undefined => {\n if (value === undefined || value === null || value === \"\") {\n return undefined\n }\n\n if (typeof value === \"string\") {\n try {\n return toSearchGroup(JSON.parse(value))\n } catch {\n return undefined\n }\n }\n\n if (Array.isArray(value)) {\n const rules: Array<SearchRule | SubFormRule> = []\n const conditions: SearchGroup[] = []\n\n value.forEach((item) => {\n const group = toSearchGroup(item)\n if (group) {\n if (group.rules?.length) {\n rules.push(...group.rules)\n }\n if (group.conditions?.length) {\n conditions.push(...group.conditions)\n }\n return\n }\n\n if (isSearchRuleLike(item)) {\n rules.push(item)\n return\n }\n\n if (isRecord(item)) {\n rules.push(...(toLegacyRules(item) as SearchRule[]))\n }\n })\n\n if (rules.length === 0 && conditions.length === 0) {\n return undefined\n }\n\n return {\n logic: \"AND\",\n ...(rules.length > 0 ? { rules } : {}),\n ...(conditions.length > 0 ? { conditions } : {}),\n }\n }\n\n if (isRecord(value)) {\n if (isSearchRuleLike(value)) {\n return {\n logic: \"AND\",\n rules: [value],\n }\n }\n\n if (\"rules\" in value || \"conditions\" in value || \"logic\" in value) {\n const nextGroup: SearchGroup = {\n logic:\n value.logic === \"OR\" || value.logic === \"AND\" ? value.logic : \"AND\",\n }\n\n if (Array.isArray(value.rules)) {\n nextGroup.rules = value.rules.filter(isSearchRuleLike)\n }\n\n if (Array.isArray(value.conditions)) {\n nextGroup.conditions = value.conditions\n .map((item) => toSearchGroup(item))\n .filter((item): item is SearchGroup => Boolean(item))\n }\n\n if (!nextGroup.rules?.length && !nextGroup.conditions?.length) {\n return undefined\n }\n\n return nextGroup\n }\n\n const rules = toLegacyRules(value)\n if (rules.length === 0) {\n return undefined\n }\n return {\n logic: \"AND\",\n rules,\n }\n }\n\n return undefined\n}\n\nconst mergeSearchExpressions = (base: unknown, extra: unknown) => {\n const baseGroup = toSearchGroup(base)\n const extraGroup = toSearchGroup(extra)\n\n if (!baseGroup) {\n return extraGroup\n }\n\n if (!extraGroup) {\n return baseGroup\n }\n\n return {\n logic: \"AND\",\n conditions: [baseGroup, extraGroup],\n } satisfies SearchGroup\n}\n\nconst serializeSearchExpression = (value?: SearchExpression | string) => {\n if (value === undefined || value === null || value === \"\") {\n return undefined\n }\n if (typeof value === \"string\") {\n return value\n }\n const group = toSearchGroup(value)\n return group ? JSON.stringify(group) : undefined\n}\n\nconst normalizeAdvancedOrder = (value?: SearchSortItem | SearchSortItem[]) => {\n if (!value) {\n return undefined\n }\n const nextValue = Array.isArray(value) ? value : [value]\n return JSON.stringify(nextValue)\n}\n\nconst normalizeDynamicOrder = (value?: string | SearchSortItem) => {\n if (!value) {\n return undefined\n }\n if (typeof value === \"string\") {\n return value\n }\n return `${value.id}:${value.isAsc === \"n\" ? \"-\" : \"+\"}`\n}\n\nconst normalizeJsonResponse = <TResult = unknown, TRaw = TResult>(\n rawResponse: unknown,\n): PageApiResponse<TResult, TRaw> => {\n const topLevelCode = Number((rawResponse as { code?: number })?.code)\n const nestedCode = Number(\n (rawResponse as { data?: { code?: number } })?.data?.code,\n )\n const code = Number.isFinite(topLevelCode)\n ? topLevelCode\n : Number.isFinite(nestedCode)\n ? nestedCode\n : 200\n\n const topLevelResult =\n isRecord(rawResponse) && \"result\" in rawResponse\n ? (rawResponse.result as TResult)\n : undefined\n const nestedResult =\n isRecord((rawResponse as { data?: unknown })?.data) &&\n \"result\" in ((rawResponse as { data?: Record<string, unknown> }).data || {})\n ? ((rawResponse as { data?: Record<string, unknown> }).data\n ?.result as TResult)\n : undefined\n const topLevelData =\n isRecord(rawResponse) && \"data\" in rawResponse\n ? (rawResponse.data as TRaw)\n : undefined\n\n const result =\n topLevelResult !== undefined\n ? topLevelResult\n : nestedResult !== undefined\n ? nestedResult\n : topLevelData !== undefined\n ? (topLevelData as unknown as TResult)\n : isRecord(rawResponse)\n ? (rawResponse as TResult)\n : null\n\n const nestedSuccess =\n typeof (rawResponse as { data?: { success?: boolean } })?.data?.success ===\n \"boolean\"\n ? (rawResponse as { data?: { success?: boolean } }).data?.success\n : undefined\n\n const success =\n typeof (rawResponse as { success?: boolean })?.success === \"boolean\"\n ? Boolean((rawResponse as { success?: boolean }).success)\n : typeof nestedSuccess === \"boolean\"\n ? Boolean(nestedSuccess)\n : code >= 200 && code < 300\n\n return {\n code,\n success,\n message:\n typeof (rawResponse as { message?: string })?.message === \"string\"\n ? (rawResponse as { message?: string }).message\n : typeof (rawResponse as { data?: { message?: string } })?.data\n ?.message === \"string\"\n ? (rawResponse as { data?: { message?: string } }).data?.message\n : undefined,\n result,\n data:\n topLevelData !== undefined\n ? topLevelData\n : topLevelResult !== undefined\n ? (topLevelResult as unknown as TRaw)\n : undefined,\n raw: rawResponse,\n }\n}\n\nconst normalizeBinaryResponse = (rawResponse: unknown): PageBinaryResponse => {\n if (isRecord(rawResponse) && isBlobLike(rawResponse.blob)) {\n return rawResponse as unknown as PageBinaryResponse\n }\n\n if (isBlobLike(rawResponse)) {\n return {\n blob: rawResponse,\n raw: rawResponse,\n }\n }\n\n const responseData = (rawResponse as { data?: unknown })?.data\n const responseHeaders = isRecord(\n (rawResponse as { headers?: unknown })?.headers,\n )\n ? ((rawResponse as { headers?: Record<string, unknown> }).headers as Record<\n string,\n unknown\n >)\n : undefined\n\n if (!isBlobLike(responseData)) {\n throw new Error(\"transport.download 未返回 Blob 数据\")\n }\n\n const contentDisposition = getHeaderValue(\n responseHeaders,\n \"content-disposition\",\n )\n\n return {\n blob: responseData,\n fileName: parseContentDispositionFileName(contentDisposition),\n contentType:\n getHeaderValue(responseHeaders, \"content-type\") || responseData.type,\n headers: responseHeaders\n ? Object.fromEntries(\n Object.entries(responseHeaders).map(([key, value]) => [\n key,\n value === undefined ? undefined : String(value),\n ]),\n )\n : undefined,\n raw: rawResponse,\n }\n}\n\nconst toSdkError = (\n input: unknown,\n payload: PageTransportRequestPayload | PageTransportDownloadPayload,\n): PageSdkError => {\n const normalizedResponse = isRecord(input)\n ? normalizeJsonResponse(input)\n : undefined\n\n const nextError =\n input instanceof Error\n ? input\n : new Error(\n normalizedResponse?.message ||\n `请求失败: ${String(payload.method).toUpperCase()} ${payload.path}`,\n )\n\n const sdkError = nextError as PageSdkError\n sdkError.method = String(payload.method).toUpperCase()\n sdkError.path = payload.path\n sdkError.response = normalizedResponse\n sdkError.raw = input\n return sdkError\n}\n\nconst ensureSuccess = <TResult = unknown, TRaw = TResult>(\n response: PageApiResponse<TResult, TRaw>,\n payload: PageTransportRequestPayload,\n) => {\n if (!response.success) {\n throw toSdkError(response, payload)\n }\n return response\n}\n\nconst resolveFormInstanceId = (params: {\n formInstId?: string\n formInstanceId?: string\n}) => {\n const formInstanceId = String(\n params.formInstId || params.formInstanceId || \"\",\n ).trim()\n if (!formInstanceId) {\n throw new Error(\"formInstanceId 不能为空\")\n }\n return formInstanceId\n}\n\nconst withDefaultAppType = <\n T extends {\n appType?: string\n scope?: string\n },\n>(\n context: PageContext,\n params: T | undefined,\n) => {\n if (!params) {\n return params\n }\n\n if (params.appType) {\n return params\n }\n\n if (params.scope === \"app\") {\n return {\n ...params,\n appType: context.app.appType,\n }\n }\n\n return params\n}\n\nexport const createPageSdk = (context: PageContext): PageSdk => {\n const request = async <TResult = unknown, TRaw = TResult>(\n options: PageRequestOptions,\n ) => {\n const payload: PageTransportRequestPayload = {\n path: options.path,\n method: normalizeMethod(options.method),\n query: serializeQuery(options.query),\n body: options.body,\n headers: options.headers,\n }\n\n try {\n const rawResponse = await context.bridge.invoke<unknown>(\n \"transport.request\",\n payload,\n )\n return ensureSuccess(\n normalizeJsonResponse<TResult, TRaw>(rawResponse),\n payload,\n )\n } catch (error) {\n throw toSdkError(error, payload)\n }\n }\n\n const download = async (options: PageRequestOptions) => {\n const payload: PageTransportDownloadPayload = {\n path: options.path,\n method: normalizeMethod(options.method),\n query: serializeQuery(options.query),\n body: options.body,\n headers: options.headers,\n }\n\n try {\n const rawResponse = await context.bridge.invoke<unknown>(\n \"transport.download\",\n payload,\n )\n return normalizeBinaryResponse(rawResponse)\n } catch (error) {\n throw toSdkError(error, payload)\n }\n }\n\n const form = {\n getDetail: <T = unknown>(params: FormGetDetailParams) =>\n request<T>({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/form/getFormDataById.json\",\n ),\n method: \"get\",\n query: {\n formUuid: params.formUuid,\n formInstId: resolveFormInstanceId(params),\n },\n }),\n create: <T = unknown, TRaw = unknown>(params: FormCreateParams) =>\n request<T, TRaw>({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/form/saveFormData.json\",\n ),\n method: \"post\",\n body: {\n formUuid: params.formUuid,\n formDataJson: JSON.stringify(params.data || {}),\n },\n }),\n update: <T = unknown, TRaw = unknown>(params: FormUpdateParams) =>\n request<T, TRaw>({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/form/updateFormData.json\",\n ),\n method: \"post\",\n body: {\n formUuid: params.formUuid,\n formInstId: resolveFormInstanceId(params),\n updateFormDataJson:\n params.updateFormDataJson || JSON.stringify(params.data || {}),\n },\n }),\n remove: <T = unknown, TRaw = unknown>(params: FormRemoveParams) =>\n request<T, TRaw>({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/form/deleteFormData.json\",\n ),\n method: \"post\",\n body: {\n formUuid: params.formUuid,\n formInstId: resolveFormInstanceId(params),\n },\n }),\n getChangeRecords: <T = unknown>(params: FormChangeRecordParams) =>\n request<T>({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/form/getFormDataChangeRecords.json\",\n ),\n method: \"get\",\n query: {\n formUuid: params.formUuid,\n formInstId: resolveFormInstanceId(params),\n page: params.page,\n pageSize: params.pageSize,\n },\n }),\n search: <T = unknown>(params: FormSearchParams) =>\n request<PageListResult<T>>({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/form/searchFormDatas.json\",\n ),\n method: \"get\",\n query: {\n formUuid: params.formUuid,\n searchFieldJson: serializeSearchExpression(params.search),\n currentPage: params.currentPage,\n pageSize: params.pageSize,\n originatorId: params.originatorId,\n createFrom: params.createFrom,\n createTo: params.createTo,\n modifiedFrom: params.modifiedFrom,\n modifiedTo: params.modifiedTo,\n dynamicOrder: normalizeDynamicOrder(params.dynamicOrder),\n instanceStatus: params.instanceStatus,\n },\n }),\n searchIds: <T = string>(params: FormSearchParams) =>\n request<PageListResult<T>>({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/form/searchFormDataIds.json\",\n ),\n method: \"get\",\n query: {\n formUuid: params.formUuid,\n searchFieldJson: serializeSearchExpression(params.search),\n currentPage: params.currentPage,\n pageSize: params.pageSize,\n originatorId: params.originatorId,\n createFrom: params.createFrom,\n createTo: params.createTo,\n modifiedFrom: params.modifiedFrom,\n modifiedTo: params.modifiedTo,\n dynamicOrder: normalizeDynamicOrder(params.dynamicOrder),\n instanceStatus: params.instanceStatus,\n },\n }),\n advancedSearch: <T = unknown>(params: FormAdvancedSearchParams) =>\n request<PageListResult<T>>({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/form/advancedSearch.json\",\n ),\n method: \"get\",\n query: {\n formUuid: params.formUuid,\n filters: serializeSearchExpression(params.filters),\n conditionType: params.conditionType,\n searchKeyWord: params.searchKeyWord,\n currentPage: params.currentPage,\n pageSize: params.pageSize,\n order: normalizeAdvancedOrder(params.order),\n instanceStatus: params.instanceStatus,\n },\n }),\n advancedExport: (params: FormExportParams) =>\n download({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/form/advancedExport.xlsx\",\n ),\n method: \"get\",\n query: {\n formUuid: params.formUuid,\n filters: serializeSearchExpression(params.filters),\n conditionType: params.conditionType,\n searchKeyWord: params.searchKeyWord,\n currentPage: params.currentPage,\n pageSize: params.pageSize,\n order: normalizeAdvancedOrder(params.order),\n instanceStatus: params.instanceStatus,\n exportAll: params.exportAll,\n embedImages: params.embedImages,\n exportFields: params.exportFields?.join(\",\"),\n },\n }),\n downloadImportTemplate: (params: DataManagementConfigParams) =>\n download({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/form/advancedExportTemplate.xlsx\",\n ),\n method: \"get\",\n query: {\n formUuid: params.formUuid,\n },\n }),\n importPreview: <T = unknown>(params: FormImportParams) =>\n request<T>({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/form/importPreview.xlsx\",\n ),\n method: \"post\",\n body: {\n formUuid: params.formUuid,\n fileBase64: params.fileBase64,\n fileName: params.fileName,\n },\n }),\n importExcel: <T = unknown>(params: FormImportParams) =>\n request<T>({\n path: buildAppPath(context, params.appType, \"/v1/form/import.xlsx\"),\n method: \"post\",\n body: {\n formUuid: params.formUuid,\n fileBase64: params.fileBase64,\n fileName: params.fileName,\n },\n }),\n getImportRecords: <T = unknown>(params: ImportExportRecordQuery) =>\n request<T>({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/form/importRecords.json\",\n ),\n method: \"get\",\n query: {\n formUuid: params.formUuid,\n currentPage: params.currentPage,\n pageSize: params.pageSize,\n },\n }),\n getExportRecords: <T = unknown>(params: ImportExportRecordQuery) =>\n request<T>({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/form/exportRecords.json\",\n ),\n method: \"get\",\n query: {\n formUuid: params.formUuid,\n currentPage: params.currentPage,\n pageSize: params.pageSize,\n },\n }),\n downloadImportSource: (params: ImportExportRecordDownloadParams) =>\n download({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/form/importRecord/downloadSource.xlsx\",\n ),\n method: \"get\",\n query: {\n recordId: params.recordId,\n },\n }),\n downloadImportFailed: (params: ImportExportRecordDownloadParams) =>\n download({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/form/importRecord/downloadFailed.xlsx\",\n ),\n method: \"get\",\n query: {\n recordId: params.recordId,\n },\n }),\n downloadExportRecord: (params: ImportExportRecordDownloadParams) =>\n download({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/form/exportRecord/download.xlsx\",\n ),\n method: \"get\",\n query: {\n recordId: params.recordId,\n },\n }),\n getDataManagementConfig: <T = unknown>(\n params: DataManagementConfigParams,\n ) =>\n request<T>({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/form/dataManagement/config/get.json\",\n ),\n method: \"get\",\n query: {\n formUuid: params.formUuid,\n },\n }),\n saveDataManagementConfig: <T = unknown>(\n params: SaveDataManagementConfigParams,\n ) =>\n request<T>({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/form/dataManagement/config/save.json\",\n ),\n method: \"post\",\n body: {\n formUuid: params.formUuid,\n config: params.config,\n },\n }),\n }\n\n const user = {\n create: <T = unknown>(params: CreateUserParams) =>\n request<T>({\n path: \"/user/create\",\n method: \"post\",\n body: params,\n }),\n update: <T = unknown>(params: UpdateUserParams) =>\n request<T>({\n path: \"/user/update\",\n method: \"put\",\n body: params,\n }),\n remove: <T = boolean>(id: string) =>\n request<T>({\n path: `/user/${encodePathSegment(id)}`,\n method: \"delete\",\n }),\n get: <T = unknown>(id = \"current\") =>\n request<T>({\n path: `/user/${encodePathSegment(id)}`,\n method: \"get\",\n }),\n getCurrent: <T = unknown>() =>\n request<T>({\n path: \"/user/current\",\n method: \"get\",\n }),\n getByUsername: <T = unknown>(username: string) =>\n request<T>({\n path: `/user/username/${encodePathSegment(username)}`,\n method: \"get\",\n }),\n list: <T = unknown>(params?: UserListParams) =>\n request<T>({\n path: \"/user/list\",\n method: \"get\",\n query: {\n ids: params?.ids,\n departmentIds: params?.departmentIds,\n name: params?.name,\n username: params?.username,\n phone: params?.phone,\n email: params?.email,\n page: params?.page,\n pageSize: params?.pageSize,\n },\n }),\n search: <T = unknown>(keyword?: string) =>\n request<T>({\n path: \"/user/search\",\n method: \"get\",\n query: {\n keyword,\n },\n }),\n listAll: <T = unknown>() =>\n request<T>({\n path: \"/user/all\",\n method: \"get\",\n }),\n listByDepartment: <T = unknown>(departmentId: string) =>\n request<T>({\n path: `/user/department/${encodePathSegment(departmentId)}`,\n method: \"get\",\n }),\n validate: <T = unknown>(params: ValidateUserParams) =>\n request<T>({\n path: \"/user/validate\",\n method: \"post\",\n body: params,\n }),\n }\n\n const getParentDepartments = <T = PageDepartmentRecord[]>(\n departmentId: string,\n options: GetParentDepartmentsOptions = {},\n ) =>\n request<T>({\n path: `/department/${encodePathSegment(departmentId)}/parentDepartments`,\n method: \"get\",\n query: {\n includeSelf: options.includeSelf ?? true,\n },\n })\n\n const department = {\n getParentDepartments,\n getCurrentUserParentDepartments: async (\n options: GetParentDepartmentsOptions = {},\n ): Promise<CurrentUserDepartmentParents[]> => {\n const departments = (context.user.departments || []).filter(\n (item) => typeof item.id === \"string\" && item.id.trim(),\n )\n\n return Promise.all(\n departments.map(async (item) => {\n const response = await getParentDepartments(item.id || \"\", {\n includeSelf: options.includeSelf,\n })\n return {\n department: item,\n parents: response.result || [],\n }\n }),\n )\n },\n }\n\n const role = {\n create: <T = unknown>(params: CreateRoleParams) =>\n request<T>({\n path: \"/role/\",\n method: \"post\",\n body: params,\n }),\n update: <T = unknown>(id: string, params: UpdateRoleParams) =>\n request<T>({\n path: `/role/${encodePathSegment(id)}`,\n method: \"put\",\n body: params,\n }),\n remove: <T = boolean>(id: string) =>\n request<T>({\n path: `/role/${encodePathSegment(id)}`,\n method: \"delete\",\n }),\n get: <T = unknown>(id: string) =>\n request<T>({\n path: `/role/${encodePathSegment(id)}`,\n method: \"get\",\n }),\n list: <T = unknown>(params?: RoleListParams) =>\n request<T>({\n path: \"/role/\",\n method: \"get\",\n query: withDefaultAppType(context, params) as\n | Record<string, unknown>\n | undefined,\n }),\n listUsers: <T = unknown>(roleId: string, params?: RoleUsersParams) =>\n request<T>({\n path: `/role/${encodePathSegment(roleId)}/users`,\n method: \"get\",\n query: params as Record<string, unknown> | undefined,\n }),\n assignRoles: <T = unknown>(params: AssignRolesParams) =>\n request<T>({\n path: \"/role/assign\",\n method: \"post\",\n body: params,\n }),\n addUserRole: <T = boolean>(params: { userId: string; roleId: string }) =>\n request<T>({\n path: \"/role/add\",\n method: \"post\",\n body: params,\n }),\n removeUserRole: <T = boolean>(params: { userId: string; roleId: string }) =>\n request<T>({\n path: \"/role/remove\",\n method: \"post\",\n body: params,\n }),\n batchAddUsers: <T = unknown>(params: BatchAddUsersToRoleParams) =>\n request<T>({\n path: \"/role/batch-add-users\",\n method: \"post\",\n body: params,\n }),\n getMyRoles: <T = unknown>(params?: GetUserRolesParams) =>\n request<T>({\n path: \"/role/my/roles\",\n method: \"get\",\n query: withDefaultAppType(context, params) as\n | Record<string, unknown>\n | undefined,\n }),\n getCurrentRole: <T = unknown>(params?: GetUserRolesParams) =>\n request<T>({\n path: \"/role/my/current\",\n method: \"get\",\n query: withDefaultAppType(context, params) as\n | Record<string, unknown>\n | undefined,\n }),\n switchPlatformRole: <T = boolean>(params: SwitchPlatformRoleParams) =>\n request<T>({\n path: \"/role/switch/platform\",\n method: \"post\",\n body: params,\n }),\n switchAppRole: <T = boolean>(params: SwitchAppRoleParams) =>\n request<T>({\n path: \"/role/switch/app\",\n method: \"post\",\n body: {\n ...params,\n appType: resolveAppType(context, params.appType),\n },\n }),\n }\n\n const permission = {\n formGroup: {\n create: <T = FormPermissionGroup>(params: CreateFormPermissionGroupDto) =>\n request<T>({\n path: \"/permission/form-group/\",\n method: \"post\",\n body: {\n ...params,\n appType: resolveAppType(context, params.appType),\n },\n }),\n update: <T = FormPermissionGroup>(\n id: string,\n params: UpdateFormPermissionGroupDto,\n ) =>\n request<T>({\n path: `/permission/form-group/${encodePathSegment(id)}`,\n method: \"put\",\n body: {\n ...params,\n ...(params.appType\n ? { appType: resolveAppType(context, params.appType) }\n : {}),\n },\n }),\n remove: <T = boolean>(id: string) =>\n request<T>({\n path: `/permission/form-group/${encodePathSegment(id)}`,\n method: \"delete\",\n }),\n get: <T = FormPermissionGroup | null>(id: string) =>\n request<T>({\n path: `/permission/form-group/${encodePathSegment(id)}`,\n method: \"get\",\n }),\n list: <T = PageOffsetListResult<FormPermissionGroup>>(\n params?: QueryFormPermissionGroupDto,\n ) =>\n request<T>({\n path: \"/permission/form-group/\",\n method: \"get\",\n query: {\n ...params,\n appType: resolveAppType(context, params?.appType),\n },\n }),\n getViewFieldPermissions: <\n T = Record<string, ViewFieldPermissionValue>,\n >(params: {\n appType?: string\n formUuid: string\n }) =>\n request<T>({\n path: \"/permission/form-group/field-permissions\",\n method: \"get\",\n query: {\n appType: resolveAppType(context, params.appType),\n formUuid: params.formUuid,\n },\n }),\n getViewPermissionSummary: <T = ViewPermissionSummary>(params: {\n appType?: string\n formUuid: string\n }) =>\n request<T>({\n path: \"/permission/form-group/view-permissions\",\n method: \"get\",\n query: {\n appType: resolveAppType(context, params.appType),\n formUuid: params.formUuid,\n },\n }),\n },\n pageGroup: {\n create: <T = PagePermissionGroup>(params: CreatePagePermissionGroupDto) =>\n request<T>({\n path: \"/permission/page-group/\",\n method: \"post\",\n body: {\n ...params,\n appType: resolveAppType(context, params.appType),\n },\n }),\n update: <T = PagePermissionGroup>(\n id: string,\n params: UpdatePagePermissionGroupDto,\n ) =>\n request<T>({\n path: `/permission/page-group/${encodePathSegment(id)}`,\n method: \"put\",\n body: {\n ...params,\n ...(params.appType\n ? { appType: resolveAppType(context, params.appType) }\n : {}),\n },\n }),\n remove: <T = boolean>(id: string) =>\n request<T>({\n path: `/permission/page-group/${encodePathSegment(id)}`,\n method: \"delete\",\n }),\n get: <T = PagePermissionGroup | null>(id: string) =>\n request<T>({\n path: `/permission/page-group/${encodePathSegment(id)}`,\n method: \"get\",\n }),\n list: <T = PageOffsetListResult<PagePermissionGroup>>(\n params?: QueryPagePermissionGroupDto,\n ) =>\n request<T>({\n path: \"/permission/page-group/\",\n method: \"get\",\n query: {\n ...params,\n appType: resolveAppType(context, params?.appType),\n },\n }),\n getUserMenuPermissions: <T = UserMenuPermissionsResponse>(\n appType?: string,\n ) =>\n request<T>({\n path: \"/permission/page-group/user-menu-permissions\",\n method: \"get\",\n query: {\n appType: resolveAppType(context, appType),\n },\n }),\n },\n api: {\n create: <T = unknown>(params: CreateApiPermissionParams) =>\n request<T>({\n path: \"/permission/api\",\n method: \"post\",\n body: params,\n }),\n update: <T = unknown>(id: string, params: UpdateApiPermissionParams) =>\n request<T>({\n path: `/permission/api/${encodePathSegment(id)}`,\n method: \"put\",\n body: params,\n }),\n remove: <T = boolean>(id: string) =>\n request<T>({\n path: `/permission/api/${encodePathSegment(id)}`,\n method: \"delete\",\n }),\n list: <T = unknown>(params?: ApiPermissionListParams) =>\n request<T>({\n path: \"/permission/api\",\n method: \"get\",\n query: withDefaultAppType(context, params) as\n | Record<string, unknown>\n | undefined,\n }),\n assign: <T = boolean>(params: AssignPermissionsParams) =>\n request<T>({\n path: \"/permission/api/assign\",\n method: \"post\",\n body: params,\n }),\n getByRole: <T = unknown>(roleId: string) =>\n request<T>({\n path: `/permission/api/role/${encodePathSegment(roleId)}`,\n method: \"get\",\n }),\n getRolesByPermission: <T = unknown>(permissionId: string) =>\n request<T>({\n path: `/permission/api/${encodePathSegment(permissionId)}/roles`,\n method: \"get\",\n }),\n },\n ui: {\n create: <T = unknown>(params: CreateUiPermissionParams) =>\n request<T>({\n path: \"/permission/api/ui\",\n method: \"post\",\n body: params,\n }),\n update: <T = unknown>(id: string, params: UpdateUiPermissionParams) =>\n request<T>({\n path: `/permission/api/ui/${encodePathSegment(id)}`,\n method: \"put\",\n body: params,\n }),\n remove: <T = boolean>(id: string) =>\n request<T>({\n path: `/permission/api/ui/${encodePathSegment(id)}`,\n method: \"delete\",\n }),\n list: <T = unknown>(params?: UiPermissionListParams) =>\n request<T>({\n path: \"/permission/api/ui\",\n method: \"get\",\n query: withDefaultAppType(context, params) as\n | Record<string, unknown>\n | undefined,\n }),\n assign: <T = boolean>(params: AssignPermissionsParams) =>\n request<T>({\n path: \"/permission/api/ui/assign\",\n method: \"post\",\n body: params,\n }),\n getMyPlatform: <T = unknown>() =>\n request<T>({\n path: \"/permission/api/ui/me/platform\",\n method: \"get\",\n }),\n getMyApp: <T = unknown>(appType?: string) =>\n request<T>({\n path: \"/permission/api/ui/me/app\",\n method: \"get\",\n query: {\n appType: resolveAppType(context, appType),\n },\n }),\n },\n }\n\n const process = {\n getInstance: <T = unknown>(params: GetProcessInstanceParams) =>\n request<T>({\n path: buildAppPath(context, params.appType, \"/v1/process/instance\"),\n method: \"get\",\n query: {\n instanceId: params.instanceId,\n },\n }),\n terminateInstance: <T = unknown>(params: TerminateProcessInstanceParams) =>\n request<T>({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/process/terminateInstance.json\",\n ),\n method: \"post\",\n body: {\n processInstanceId: params.processInstanceId,\n reason: params.reason,\n },\n }),\n approveTask: <T = unknown>(params: ApproveTaskParams) =>\n request<T>({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/process/approveTask.json\",\n ),\n method: \"post\",\n body: {\n ...params,\n appType: resolveAppType(context, params.appType),\n },\n }),\n triggerCallbackTask: <T = unknown>(params: TriggerCallbackTaskParams) =>\n request<T>({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/process/triggerCallback.json\",\n ),\n method: \"post\",\n body: {\n taskId: params.taskId,\n payload: params.payload,\n },\n }),\n }\n\n const notification = {\n sendByType: <T = SendNotificationResult>(\n params: SendNotificationByTypeParams,\n ) =>\n request<T>({\n path: \"/api/notification-config/send-by-type\",\n method: \"post\",\n body: {\n ...params,\n appType: resolveAppType(context, params.appType),\n },\n }),\n batchSendByType: <T = SendNotificationResult>(\n params: BatchSendNotificationByTypeParams,\n ) =>\n request<T>({\n path: \"/api/notification-config/batch-send-by-type\",\n method: \"post\",\n body: {\n ...params,\n appType: resolveAppType(context, params.appType),\n },\n }),\n }\n\n const sdk: PageSdk = {\n context,\n request,\n download,\n transport: {\n request,\n download,\n },\n form,\n user,\n department,\n role,\n permission,\n process,\n notification,\n dataSource: {\n run: async <TResult = unknown, TRaw = TResult>(\n name: string,\n params: Record<string, unknown> = {},\n ): Promise<PageApiResponse<TResult, TRaw>> => {\n const descriptor = (context.page.dataSources || []).find(\n (item) => item.key === name,\n ) as PageDataSourceDescriptor | undefined\n\n if (!descriptor) {\n throw new Error(`未找到数据源: ${String(name || \"\")}`)\n }\n\n const runtimeParams = params\n const resolvedFormUuid = String(\n runtimeParams.formUuid || descriptor.formUuid || \"\",\n ).trim()\n\n switch (descriptor.type) {\n case \"form.list\":\n return form.advancedSearch<TResult>({\n ...(runtimeParams as unknown as Omit<\n FormAdvancedSearchParams,\n \"formUuid\"\n >),\n formUuid: resolvedFormUuid,\n filters: mergeSearchExpressions(\n descriptor.defaultFilter,\n runtimeParams.filters as SearchExpression | string | undefined,\n ),\n }) as unknown as Promise<PageApiResponse<TResult, TRaw>>\n case \"form.detail\":\n return form.getDetail<TResult>({\n ...(runtimeParams as unknown as Omit<\n FormGetDetailParams,\n \"formUuid\"\n >),\n formUuid: resolvedFormUuid,\n }) as unknown as Promise<PageApiResponse<TResult, TRaw>>\n case \"form.create\":\n return form.create<TResult>({\n ...(runtimeParams as unknown as Omit<\n FormCreateParams,\n \"formUuid\"\n >),\n formUuid: resolvedFormUuid,\n }) as unknown as Promise<PageApiResponse<TResult, TRaw>>\n case \"form.update\":\n return form.update<TResult>({\n ...(runtimeParams as unknown as Omit<\n FormUpdateParams,\n \"formUuid\"\n >),\n formUuid: resolvedFormUuid,\n }) as unknown as Promise<PageApiResponse<TResult, TRaw>>\n case \"form.delete\":\n return form.remove<TResult>({\n ...(runtimeParams as unknown as Omit<\n FormRemoveParams,\n \"formUuid\"\n >),\n formUuid: resolvedFormUuid,\n }) as unknown as Promise<PageApiResponse<TResult, TRaw>>\n default:\n throw new Error(`暂不支持的数据源类型: ${String(descriptor.type)}`)\n }\n },\n },\n navigation: context.navigation,\n ui: context.ui,\n }\n\n return sdk\n}\n","import { StyleProvider } from \"@ant-design/cssinjs\";\nimport { App as AntdApp, ConfigProvider } from \"antd\";\nimport zhCN from \"antd/locale/zh_CN.js\";\nimport React from \"react\";\nimport { createRoot } from \"react-dom/client\";\n\nimport { PageProvider } from \"./provider\";\nimport { antdTheme } from \"../../styles/antd-theme\";\n\nimport type { PageContext } from \"../core/types\";\n\ntype RootLike = {\n render: (node: React.ReactNode) => void;\n unmount: () => void;\n};\n\nconst createRuntimeRoot = (el: HTMLElement): RootLike => {\n return createRoot(el);\n};\n\nconst getStyleContainer = (el: HTMLElement): HTMLElement | ShadowRoot => {\n const rootNode = el.getRootNode?.();\n if (typeof ShadowRoot !== \"undefined\" && rootNode instanceof ShadowRoot) {\n return rootNode;\n }\n return document.head;\n};\n\nconst getRuntimeOverlayContainer = (\n el: HTMLElement,\n): {\n getPopupContainer: (triggerNode?: HTMLElement) => HTMLElement | ShadowRoot;\n getTargetContainer: () => HTMLElement | ShadowRoot;\n} => {\n const rootNode = el.getRootNode?.();\n const isShadowRoot =\n typeof ShadowRoot !== \"undefined\" && rootNode instanceof ShadowRoot;\n const namespaceRoot = el.closest<HTMLElement>(\".sy-app-workspace\");\n\n return {\n getPopupContainer: (triggerNode?: HTMLElement) => {\n if (isShadowRoot) return el;\n return namespaceRoot || triggerNode?.parentElement || document.body;\n },\n getTargetContainer: () =>\n isShadowRoot ? el : namespaceRoot || el.ownerDocument?.body || document.body,\n };\n};\n\nexport const createReactPage = (\n AppComponent: React.ComponentType,\n): {\n mount: (el: HTMLElement, context: PageContext) => void;\n update: (el: HTMLElement, context: PageContext) => void;\n unmount: () => void;\n} => {\n let root: RootLike | null = null;\n let currentContainer: HTMLElement | null = null;\n\n const render = (el: HTMLElement, context: PageContext) => {\n const rootNode = el.getRootNode?.();\n if (!(typeof ShadowRoot !== \"undefined\" && rootNode instanceof ShadowRoot)) {\n el.classList.add(\"sy-app-workspace\");\n }\n if (!root || currentContainer !== el) {\n root?.unmount();\n root = createRuntimeRoot(el);\n currentContainer = el;\n }\n const overlayContainer = getRuntimeOverlayContainer(el);\n\n root.render(\n <StyleProvider hashPriority=\"high\" container={getStyleContainer(el)}>\n <ConfigProvider\n locale={zhCN}\n prefixCls=\"sy-ant\"\n iconPrefixCls=\"sy-anticon\"\n theme={antdTheme}\n getPopupContainer={overlayContainer.getPopupContainer}\n getTargetContainer={overlayContainer.getTargetContainer}\n >\n <AntdApp>\n <PageProvider context={context}>\n <AppComponent />\n </PageProvider>\n </AntdApp>\n </ConfigProvider>\n </StyleProvider>,\n );\n };\n\n return {\n mount: (el, context) => {\n render(el, context);\n },\n update: (el, context) => {\n render(el, context);\n },\n unmount: () => {\n root?.unmount();\n root = null;\n currentContainer = null;\n },\n };\n};\n","import React, { useMemo } from \"react\"\n\nimport { ReactPageContext } from \"./store\"\nimport { createPageSdk } from \"../core/client\"\n\nimport type { PageSdkStore } from \"./store\"\nimport type { PageContext } from \"../core/types\"\n\nexport interface PageProviderProps {\n context: PageContext\n children: React.ReactNode\n}\n\nexport const PageProvider: React.FC<PageProviderProps> = ({\n context,\n children,\n}) => {\n const value = useMemo<PageSdkStore>(\n () => ({\n context,\n sdk: createPageSdk(context),\n }),\n [context],\n )\n\n return (\n <ReactPageContext.Provider value={value}>\n {children}\n </ReactPageContext.Provider>\n )\n}\n","import { createContext, useContext } from \"react\"\n\nimport type { PageContext, PageSdk } from \"../core/types\"\n\nexport interface PageSdkStore {\n context: PageContext\n sdk: PageSdk\n}\n\nexport const ReactPageContext = createContext<PageSdkStore | null>(null)\n\nexport const usePageSdkStore = () => {\n const store = useContext(ReactPageContext)\n if (!store) {\n throw new Error(\"usePageSdkStore 必须在 PageProvider 内使用\")\n }\n return store\n}\n","import type { ThemeConfig } from 'antd';\n\nexport const antdTheme: ThemeConfig = {\n cssVar: { prefix: 'sy-ant' },\n hashed: false,\n token: {\n colorPrimary: 'var(--sy-color-primary)',\n colorSuccess: 'var(--sy-color-success)',\n colorWarning: 'var(--sy-color-warning)',\n colorError: 'var(--sy-color-error)',\n colorText: 'var(--sy-color-text)',\n colorTextSecondary: 'var(--sy-color-text-secondary)',\n colorTextTertiary: 'var(--sy-color-text-tertiary)',\n colorTextDisabled: 'var(--sy-color-text-disabled)',\n colorBgContainer: 'var(--sy-color-bg-container)',\n colorBgLayout: 'var(--sy-color-bg-layout)',\n colorBgElevated: 'var(--sy-color-bg-elevated)',\n colorBorder: 'var(--sy-color-border)',\n colorBorderSecondary: 'var(--sy-color-border-secondary)',\n borderRadius: 6,\n borderRadiusSM: 4,\n borderRadiusLG: 8,\n fontSize: 14,\n controlHeight: 32,\n },\n components: {\n Form: { itemMarginBottom: 16 },\n Card: { paddingLG: 24 },\n },\n};\n\nexport default antdTheme;\n","import { useMemo } from \"react\"\n\nimport { usePageContext } from \"./usePageContext\"\n\nimport type { PageUserInfo, PageUserType } from \"../../core/types\"\n\nexport interface CurrentUserState {\n user: PageUserInfo & { userType: PageUserType; isGuest: boolean }\n isGuest: boolean\n isInternalUser: boolean\n displayName: string\n primaryDepartment: NonNullable<PageUserInfo[\"departments\"]>[number] | null\n}\n\nexport const useCurrentUser = (): CurrentUserState => {\n const { user } = usePageContext()\n\n return useMemo(() => {\n const userType: PageUserType =\n user.userType === \"guest\" || user.isGuest ? \"guest\" : \"normal\"\n const isGuest = userType === \"guest\"\n\n return {\n user: {\n ...user,\n isGuest,\n userType,\n },\n isGuest,\n isInternalUser: !isGuest,\n displayName: user.name || user.username || user.id,\n primaryDepartment: user.departments?.[0] || null,\n }\n }, [user])\n}\n","import { usePageSdkStore } from \"../store\"\n\nimport type { PageContext } from \"../../core/types\"\n\nexport const usePageContext = (): PageContext => {\n return usePageSdkStore().context\n}\n","import { useCallback, useEffect, useRef, useState } from \"react\"\n\nimport { usePageSdk } from \"./usePageSdk\"\n\nimport type { PageApiResponse } from \"../../core/types\"\nimport type { Dispatch, SetStateAction } from \"react\"\n\nconst createParamsSignature = (value: unknown): string => {\n try {\n return JSON.stringify(value || {})\n } catch {\n return \"\"\n }\n}\n\nexport interface UseDataSourceOptions<\n TResult = unknown,\n TData = TResult,\n TParams extends Record<string, unknown> = Record<string, unknown>,\n> {\n params?: TParams\n immediate?: boolean\n transform?: (result: TResult, response: PageApiResponse<TResult>) => TData\n}\n\nexport interface UseDataSourceResult<\n TResult = unknown,\n TData = TResult,\n TParams extends Record<string, unknown> = Record<string, unknown>,\n> {\n response: PageApiResponse<TResult> | null\n result: TResult | null\n data: TData | null\n loading: boolean\n error: Error | null\n refresh: (params?: TParams) => Promise<PageApiResponse<TResult> | null>\n run: (params?: TParams) => Promise<PageApiResponse<TResult> | null>\n setResponse: Dispatch<SetStateAction<PageApiResponse<TResult> | null>>\n setResult: Dispatch<SetStateAction<TResult | null>>\n setData: Dispatch<SetStateAction<TData | null>>\n}\n\nexport const useDataSource = <\n TResult = unknown,\n TData = TResult,\n TParams extends Record<string, unknown> = Record<string, unknown>,\n>(\n name: string,\n options: UseDataSourceOptions<TResult, TData, TParams> = {},\n): UseDataSourceResult<TResult, TData, TParams> => {\n const sdk = usePageSdk()\n const { params, immediate = true, transform } = options\n const paramsRef = useRef(params)\n const transformRef = useRef(transform)\n const paramsSignature = createParamsSignature(params)\n const [response, setResponse] = useState<PageApiResponse<TResult> | null>(\n null,\n )\n const [result, setResult] = useState<TResult | null>(null)\n const [data, setData] = useState<TData | null>(null)\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<Error | null>(null)\n\n paramsRef.current = params\n transformRef.current = transform\n\n const run = useCallback(\n async (overrideParams?: TParams) => {\n setLoading(true)\n setError(null)\n try {\n const response = await sdk.dataSource.run<TResult>(\n name,\n overrideParams || paramsRef.current || {},\n )\n setResponse(response)\n setResult(response.result as TResult | null)\n const activeTransform = transformRef.current\n const nextData = activeTransform\n ? activeTransform(response.result as TResult, response)\n : ((response.result ?? null) as unknown as TData | null)\n setData(nextData)\n return response\n } catch (runtimeError) {\n const nextError =\n runtimeError instanceof Error\n ? runtimeError\n : new Error(String(runtimeError))\n setError(nextError)\n setResponse(null)\n setResult(null)\n return null\n } finally {\n setLoading(false)\n }\n },\n [name, sdk.dataSource],\n )\n\n useEffect(() => {\n if (!immediate) {\n return\n }\n void run()\n }, [immediate, paramsSignature, run])\n\n return {\n response,\n result,\n data,\n loading,\n error,\n refresh: run,\n run,\n setResponse,\n setResult,\n setData,\n }\n}\n","import { usePageSdkStore } from \"../store\"\n\nimport type { PageSdk } from \"../../core/types\"\n\nexport const usePageSdk = (): PageSdk => {\n return usePageSdkStore().sdk\n}\n","import { useCallback, useEffect, useMemo, useState } from \"react\"\n\nimport { usePageSdk } from \"./usePageSdk\"\n\nimport type {\n PageApiResponse,\n ViewFieldPermissionValue,\n ViewOperationPermission,\n ViewPermissionSummary,\n} from \"../../core/types\"\n\nexport interface UseFormViewPermissionsOptions {\n appType?: string\n immediate?: boolean\n}\n\nexport interface UseFormViewPermissionsState {\n summary: ViewPermissionSummary\n response: PageApiResponse<ViewPermissionSummary> | null\n loading: boolean\n error: Error | null\n refresh: () => Promise<PageApiResponse<ViewPermissionSummary> | null>\n can: (operation: ViewOperationPermission) => boolean\n getFieldPermission: (fieldName: string) => ViewFieldPermissionValue | null\n}\n\nconst EMPTY_SUMMARY: ViewPermissionSummary = {\n fieldPermissions: {},\n operations: [],\n}\n\nconst toError = (error: unknown): Error => {\n if (error instanceof Error) {\n return error\n }\n if (\n typeof error === \"object\" &&\n error !== null &&\n \"message\" in error &&\n typeof error.message === \"string\"\n ) {\n return new Error(error.message)\n }\n return new Error(String(error || \"获取查看态权限失败\"))\n}\n\nexport const useFormViewPermissions = (\n formUuid: string,\n options: UseFormViewPermissionsOptions = {},\n): UseFormViewPermissionsState => {\n const sdk = usePageSdk()\n const [summary, setSummary] = useState<ViewPermissionSummary>(EMPTY_SUMMARY)\n const [response, setResponse] =\n useState<PageApiResponse<ViewPermissionSummary> | null>(null)\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<Error | null>(null)\n const immediate = options.immediate ?? true\n\n const refresh = useCallback(async () => {\n const normalizedFormUuid = String(formUuid || \"\").trim()\n if (!normalizedFormUuid) {\n setSummary(EMPTY_SUMMARY)\n setResponse(null)\n return null\n }\n\n setLoading(true)\n setError(null)\n\n try {\n const nextResponse =\n await sdk.permission.formGroup.getViewPermissionSummary({\n appType: options.appType,\n formUuid: normalizedFormUuid,\n })\n const nextSummary = nextResponse.result || EMPTY_SUMMARY\n setResponse(nextResponse)\n setSummary({\n fieldPermissions: nextSummary.fieldPermissions || {},\n operations: nextSummary.operations || [],\n })\n return nextResponse\n } catch (requestError) {\n const nextError = toError(requestError)\n setError(nextError)\n setResponse(null)\n setSummary(EMPTY_SUMMARY)\n return null\n } finally {\n setLoading(false)\n }\n }, [formUuid, options.appType, sdk])\n\n useEffect(() => {\n if (!immediate) {\n return\n }\n void refresh()\n }, [immediate, refresh])\n\n const operationSet = useMemo(\n () => new Set(summary.operations),\n [summary.operations],\n )\n\n const can = useCallback(\n (operation: ViewOperationPermission) => operationSet.has(operation),\n [operationSet],\n )\n\n const getFieldPermission = useCallback(\n (fieldName: string) => summary.fieldPermissions[fieldName] || null,\n [summary.fieldPermissions],\n )\n\n return {\n summary,\n response,\n loading,\n error,\n refresh,\n can,\n getFieldPermission,\n }\n}\n","import { usePageContext } from \"./usePageContext\"\n\nimport type { PageMessageApi } from \"../../core/types\"\n\nexport const useMessage = (): PageMessageApi => {\n return usePageContext().ui.message\n}\n","import { usePageContext } from \"./usePageContext\"\n\nimport type { PageModalApi } from \"../../core/types\"\n\nexport const useModal = (): PageModalApi => {\n return usePageContext().ui.modal\n}\n","import { usePageContext } from \"./usePageContext\"\n\nimport type { PageNavigationApi } from \"../../core/types\"\n\nexport const useNavigation = (): PageNavigationApi => {\n return usePageContext().navigation\n}\n","import { usePageContext } from \"./usePageContext\"\n\nexport const usePageProps = <T extends object = Record<string, unknown>>() => {\n return usePageContext().page.props as T\n}\n","import { usePageContext } from \"./usePageContext\"\n\nimport type { PageRouteInfo } from \"../../core/types\"\n\nexport const usePageRoute = (): PageRouteInfo => {\n return usePageContext().route\n}\n"],"mappings":"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","names":["jsx","useMemo","useMemo","response","useCallback","useEffect","useMemo","useState","useState","useCallback","useEffect","useMemo"]}
|
|
1
|
+
{"version":3,"sources":["../../src/runtime/core/client.ts","../../src/runtime/react/createReactPage.tsx","../../src/runtime/react/provider.tsx","../../src/runtime/react/store.ts","../../src/styles/antd-theme.ts","../../src/runtime/react/hooks/useCurrentUser.ts","../../src/runtime/react/hooks/usePageContext.ts","../../src/runtime/react/hooks/useDataSource.ts","../../src/runtime/react/hooks/usePageSdk.ts","../../src/runtime/react/hooks/useFormViewPermissions.ts","../../src/runtime/react/hooks/useMessage.ts","../../src/runtime/react/hooks/useModal.ts","../../src/runtime/react/hooks/useNavigation.ts","../../src/runtime/react/hooks/usePageProps.ts","../../src/runtime/react/hooks/usePageRoute.ts"],"sourcesContent":["import type {\n ApiPermissionListParams,\n ApproveTaskParams,\n AssignPermissionsParams,\n AssignRolesParams,\n BatchAddUsersToRoleParams,\n BatchSendNotificationByTypeParams,\n CreateApiPermissionParams,\n CreateFormPermissionGroupDto,\n CreatePagePermissionGroupDto,\n CreateRoleParams,\n CreateUiPermissionParams,\n CurrentUserDepartmentParents,\n DataManagementConfigParams,\n FormAdvancedSearchParams,\n FormChangeRecordParams,\n FormCreateParams,\n FormExportParams,\n FormGetDetailParams,\n FormImportParams,\n FormRemoveParams,\n FormSearchParams,\n FormUpdateParams,\n GetParentDepartmentsOptions,\n GetProcessInstanceParams,\n GetUserRolesParams,\n ImportExportRecordDownloadParams,\n ImportExportRecordQuery,\n PageApiResponse,\n PageBinaryResponse,\n PageContext,\n PageDataSourceDescriptor,\n PageDepartmentRecord,\n PageHttpMethod,\n PageListResult,\n PageOffsetListResult,\n PagePermissionGroup,\n PageRequestOptions,\n PageSdk,\n PageSdkError,\n PageTransportDownloadPayload,\n PageTransportRequestPayload,\n FormPermissionGroup,\n RoleListParams,\n RoleUsersParams,\n SaveDataManagementConfigParams,\n SearchExpression,\n SearchGroup,\n SearchRule,\n SearchSortItem,\n SubFormRule,\n SwitchAppRoleParams,\n SwitchPlatformRoleParams,\n TerminateProcessInstanceParams,\n TriggerCallbackTaskParams,\n UiPermissionListParams,\n UpdateApiPermissionParams,\n UpdateFormPermissionGroupDto,\n UpdatePagePermissionGroupDto,\n UpdateRoleParams,\n UpdateUiPermissionParams,\n UpdateUserParams,\n QueryFormPermissionGroupDto,\n QueryPagePermissionGroupDto,\n UserListParams,\n UserMenuPermissionsResponse,\n ValidateUserParams,\n CreateUserParams,\n SendNotificationByTypeParams,\n SendNotificationResult,\n ViewFieldPermissionValue,\n ViewPermissionSummary,\n} from \"./types\"\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === \"object\" && value !== null && !Array.isArray(value)\n\nconst isSearchRuleLike = (value: unknown): value is SearchRule | SubFormRule =>\n isRecord(value) &&\n typeof value.key === \"string\" &&\n (value.componentName === undefined || typeof value.componentName === \"string\")\n\nconst isBlobLike = (value: unknown): value is Blob =>\n typeof Blob !== \"undefined\" && value instanceof Blob\n\nconst normalizeMethod = (value: PageHttpMethod | string): PageHttpMethod => {\n const method = String(value || \"get\").toLowerCase()\n if (\n method === \"get\" ||\n method === \"post\" ||\n method === \"put\" ||\n method === \"delete\" ||\n method === \"patch\"\n ) {\n return method\n }\n return \"get\"\n}\n\nconst resolveAppType = (\n context: PageContext,\n explicitAppType?: string,\n): string => {\n const appType = String(explicitAppType || context.app.appType || \"\").trim()\n if (!appType) {\n throw new Error(\"appType 不能为空\")\n }\n return appType\n}\n\nconst buildAppPath = (\n context: PageContext,\n explicitAppType: string | undefined,\n suffix: string,\n) => `/${resolveAppType(context, explicitAppType)}${suffix}`\n\nconst encodePathSegment = (value: string) => encodeURIComponent(String(value))\n\nconst getHeaderValue = (\n headers: Record<string, unknown> | undefined,\n name: string,\n): string | undefined => {\n if (!headers) {\n return undefined\n }\n const target = name.toLowerCase()\n const entry = Object.entries(headers).find(\n ([key]) => key.toLowerCase() === target,\n )\n return entry ? String(entry[1]) : undefined\n}\n\nconst parseContentDispositionFileName = (\n contentDisposition?: string,\n): string | undefined => {\n if (!contentDisposition) {\n return undefined\n }\n\n const utf8Match = contentDisposition.match(/filename\\*=UTF-8''([^;]+)/i)\n if (utf8Match?.[1]) {\n try {\n return decodeURIComponent(utf8Match[1])\n } catch {\n return utf8Match[1]\n }\n }\n\n const quotedMatch = contentDisposition.match(/filename=\"([^\"]+)\"/i)\n if (quotedMatch?.[1]) {\n return quotedMatch[1]\n }\n\n const plainMatch = contentDisposition.match(/filename=([^;]+)/i)\n if (plainMatch?.[1]) {\n return plainMatch[1].trim()\n }\n\n return undefined\n}\n\nconst serializeQuery = (query?: Record<string, unknown>) => {\n if (!query) {\n return undefined\n }\n\n const params = new URLSearchParams()\n\n const appendValue = (key: string, value: unknown) => {\n if (value === undefined || value === null || value === \"\") {\n return\n }\n if (Array.isArray(value)) {\n value.forEach((item) => appendValue(key, item))\n return\n }\n if (value instanceof Date) {\n params.append(key, value.toISOString())\n return\n }\n params.append(key, String(value))\n }\n\n Object.entries(query).forEach(([key, value]) => {\n appendValue(key, value)\n })\n\n const serialized = params.toString()\n return serialized || undefined\n}\n\nconst toLegacyRules = (value: Record<string, unknown>) =>\n Object.entries(value).flatMap(([key, itemValue]) => {\n if (itemValue === undefined) {\n return []\n }\n return [\n {\n key,\n operator: Array.isArray(itemValue) ? \"IN\" : \"EQ\",\n value: itemValue,\n },\n ]\n })\n\nconst toSearchGroup = (value: unknown): SearchGroup | undefined => {\n if (value === undefined || value === null || value === \"\") {\n return undefined\n }\n\n if (typeof value === \"string\") {\n try {\n return toSearchGroup(JSON.parse(value))\n } catch {\n return undefined\n }\n }\n\n if (Array.isArray(value)) {\n const rules: Array<SearchRule | SubFormRule> = []\n const conditions: SearchGroup[] = []\n\n value.forEach((item) => {\n const group = toSearchGroup(item)\n if (group) {\n if (group.rules?.length) {\n rules.push(...group.rules)\n }\n if (group.conditions?.length) {\n conditions.push(...group.conditions)\n }\n return\n }\n\n if (isSearchRuleLike(item)) {\n rules.push(item)\n return\n }\n\n if (isRecord(item)) {\n rules.push(...(toLegacyRules(item) as SearchRule[]))\n }\n })\n\n if (rules.length === 0 && conditions.length === 0) {\n return undefined\n }\n\n return {\n logic: \"AND\",\n ...(rules.length > 0 ? { rules } : {}),\n ...(conditions.length > 0 ? { conditions } : {}),\n }\n }\n\n if (isRecord(value)) {\n if (isSearchRuleLike(value)) {\n return {\n logic: \"AND\",\n rules: [value],\n }\n }\n\n if (\"rules\" in value || \"conditions\" in value || \"logic\" in value) {\n const nextGroup: SearchGroup = {\n logic:\n value.logic === \"OR\" || value.logic === \"AND\" ? value.logic : \"AND\",\n }\n\n if (Array.isArray(value.rules)) {\n nextGroup.rules = value.rules.filter(isSearchRuleLike)\n }\n\n if (Array.isArray(value.conditions)) {\n nextGroup.conditions = value.conditions\n .map((item) => toSearchGroup(item))\n .filter((item): item is SearchGroup => Boolean(item))\n }\n\n if (!nextGroup.rules?.length && !nextGroup.conditions?.length) {\n return undefined\n }\n\n return nextGroup\n }\n\n const rules = toLegacyRules(value)\n if (rules.length === 0) {\n return undefined\n }\n return {\n logic: \"AND\",\n rules,\n }\n }\n\n return undefined\n}\n\nconst mergeSearchExpressions = (base: unknown, extra: unknown) => {\n const baseGroup = toSearchGroup(base)\n const extraGroup = toSearchGroup(extra)\n\n if (!baseGroup) {\n return extraGroup\n }\n\n if (!extraGroup) {\n return baseGroup\n }\n\n return {\n logic: \"AND\",\n conditions: [baseGroup, extraGroup],\n } satisfies SearchGroup\n}\n\nconst serializeSearchExpression = (value?: SearchExpression | string) => {\n if (value === undefined || value === null || value === \"\") {\n return undefined\n }\n if (typeof value === \"string\") {\n return value\n }\n const group = toSearchGroup(value)\n return group ? JSON.stringify(group) : undefined\n}\n\nconst normalizeAdvancedOrder = (value?: SearchSortItem | SearchSortItem[]) => {\n if (!value) {\n return undefined\n }\n const nextValue = Array.isArray(value) ? value : [value]\n return JSON.stringify(nextValue)\n}\n\nconst normalizeDynamicOrder = (value?: string | SearchSortItem) => {\n if (!value) {\n return undefined\n }\n if (typeof value === \"string\") {\n return value\n }\n return `${value.id}:${value.isAsc === \"n\" ? \"-\" : \"+\"}`\n}\n\nconst normalizeJsonResponse = <TResult = unknown, TRaw = TResult>(\n rawResponse: unknown,\n): PageApiResponse<TResult, TRaw> => {\n const topLevelCode = Number((rawResponse as { code?: number })?.code)\n const nestedCode = Number(\n (rawResponse as { data?: { code?: number } })?.data?.code,\n )\n const code = Number.isFinite(topLevelCode)\n ? topLevelCode\n : Number.isFinite(nestedCode)\n ? nestedCode\n : 200\n\n const topLevelResult =\n isRecord(rawResponse) && \"result\" in rawResponse\n ? (rawResponse.result as TResult)\n : undefined\n const nestedResult =\n isRecord((rawResponse as { data?: unknown })?.data) &&\n \"result\" in ((rawResponse as { data?: Record<string, unknown> }).data || {})\n ? ((rawResponse as { data?: Record<string, unknown> }).data\n ?.result as TResult)\n : undefined\n const topLevelData =\n isRecord(rawResponse) && \"data\" in rawResponse\n ? (rawResponse.data as TRaw)\n : undefined\n\n const result =\n topLevelResult !== undefined\n ? topLevelResult\n : nestedResult !== undefined\n ? nestedResult\n : topLevelData !== undefined\n ? (topLevelData as unknown as TResult)\n : isRecord(rawResponse)\n ? (rawResponse as TResult)\n : null\n\n const nestedSuccess =\n typeof (rawResponse as { data?: { success?: boolean } })?.data?.success ===\n \"boolean\"\n ? (rawResponse as { data?: { success?: boolean } }).data?.success\n : undefined\n\n const success =\n typeof (rawResponse as { success?: boolean })?.success === \"boolean\"\n ? Boolean((rawResponse as { success?: boolean }).success)\n : typeof nestedSuccess === \"boolean\"\n ? Boolean(nestedSuccess)\n : code >= 200 && code < 300\n\n return {\n code,\n success,\n message:\n typeof (rawResponse as { message?: string })?.message === \"string\"\n ? (rawResponse as { message?: string }).message\n : typeof (rawResponse as { data?: { message?: string } })?.data\n ?.message === \"string\"\n ? (rawResponse as { data?: { message?: string } }).data?.message\n : undefined,\n result,\n data:\n topLevelData !== undefined\n ? topLevelData\n : topLevelResult !== undefined\n ? (topLevelResult as unknown as TRaw)\n : undefined,\n raw: rawResponse,\n }\n}\n\nconst normalizeBinaryResponse = (rawResponse: unknown): PageBinaryResponse => {\n if (isRecord(rawResponse) && isBlobLike(rawResponse.blob)) {\n return rawResponse as unknown as PageBinaryResponse\n }\n\n if (isBlobLike(rawResponse)) {\n return {\n blob: rawResponse,\n raw: rawResponse,\n }\n }\n\n const responseData = (rawResponse as { data?: unknown })?.data\n const responseHeaders = isRecord(\n (rawResponse as { headers?: unknown })?.headers,\n )\n ? ((rawResponse as { headers?: Record<string, unknown> }).headers as Record<\n string,\n unknown\n >)\n : undefined\n\n if (!isBlobLike(responseData)) {\n throw new Error(\"transport.download 未返回 Blob 数据\")\n }\n\n const contentDisposition = getHeaderValue(\n responseHeaders,\n \"content-disposition\",\n )\n\n return {\n blob: responseData,\n fileName: parseContentDispositionFileName(contentDisposition),\n contentType:\n getHeaderValue(responseHeaders, \"content-type\") || responseData.type,\n headers: responseHeaders\n ? Object.fromEntries(\n Object.entries(responseHeaders).map(([key, value]) => [\n key,\n value === undefined ? undefined : String(value),\n ]),\n )\n : undefined,\n raw: rawResponse,\n }\n}\n\nconst toSdkError = (\n input: unknown,\n payload: PageTransportRequestPayload | PageTransportDownloadPayload,\n): PageSdkError => {\n const normalizedResponse = isRecord(input)\n ? normalizeJsonResponse(input)\n : undefined\n\n const nextError =\n input instanceof Error\n ? input\n : new Error(\n normalizedResponse?.message ||\n `请求失败: ${String(payload.method).toUpperCase()} ${payload.path}`,\n )\n\n const sdkError = nextError as PageSdkError\n sdkError.method = String(payload.method).toUpperCase()\n sdkError.path = payload.path\n sdkError.response = normalizedResponse\n sdkError.raw = input\n return sdkError\n}\n\nconst ensureSuccess = <TResult = unknown, TRaw = TResult>(\n response: PageApiResponse<TResult, TRaw>,\n payload: PageTransportRequestPayload,\n) => {\n if (!response.success) {\n throw toSdkError(response, payload)\n }\n return response\n}\n\nconst resolveFormInstanceId = (params: {\n formInstId?: string\n formInstanceId?: string\n}) => {\n const formInstanceId = String(\n params.formInstId || params.formInstanceId || \"\",\n ).trim()\n if (!formInstanceId) {\n throw new Error(\"formInstanceId 不能为空\")\n }\n return formInstanceId\n}\n\nconst withDefaultAppType = <\n T extends {\n appType?: string\n scope?: string\n },\n>(\n context: PageContext,\n params: T | undefined,\n) => {\n if (!params) {\n return params\n }\n\n if (params.appType) {\n return params\n }\n\n if (params.scope === \"app\") {\n return {\n ...params,\n appType: context.app.appType,\n }\n }\n\n return params\n}\n\nexport const createPageSdk = (context: PageContext): PageSdk => {\n const request = async <TResult = unknown, TRaw = TResult>(\n options: PageRequestOptions,\n ) => {\n const payload: PageTransportRequestPayload = {\n path: options.path,\n method: normalizeMethod(options.method),\n query: serializeQuery(options.query),\n body: options.body,\n headers: options.headers,\n }\n\n try {\n const rawResponse = await context.bridge.invoke<unknown>(\n \"transport.request\",\n payload,\n )\n return ensureSuccess(\n normalizeJsonResponse<TResult, TRaw>(rawResponse),\n payload,\n )\n } catch (error) {\n throw toSdkError(error, payload)\n }\n }\n\n const download = async (options: PageRequestOptions) => {\n const payload: PageTransportDownloadPayload = {\n path: options.path,\n method: normalizeMethod(options.method),\n query: serializeQuery(options.query),\n body: options.body,\n headers: options.headers,\n }\n\n try {\n const rawResponse = await context.bridge.invoke<unknown>(\n \"transport.download\",\n payload,\n )\n return normalizeBinaryResponse(rawResponse)\n } catch (error) {\n throw toSdkError(error, payload)\n }\n }\n\n const form = {\n getDetail: <T = unknown>(params: FormGetDetailParams) =>\n request<T>({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/form/getFormDataById.json\",\n ),\n method: \"get\",\n query: {\n formUuid: params.formUuid,\n formInstId: resolveFormInstanceId(params),\n },\n }),\n create: <T = unknown, TRaw = unknown>(params: FormCreateParams) =>\n request<T, TRaw>({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/form/saveFormData.json\",\n ),\n method: \"post\",\n body: {\n formUuid: params.formUuid,\n formDataJson: JSON.stringify(params.data || {}),\n },\n }),\n update: <T = unknown, TRaw = unknown>(params: FormUpdateParams) =>\n request<T, TRaw>({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/form/updateFormData.json\",\n ),\n method: \"post\",\n body: {\n formUuid: params.formUuid,\n formInstId: resolveFormInstanceId(params),\n updateFormDataJson:\n params.updateFormDataJson || JSON.stringify(params.data || {}),\n },\n }),\n remove: <T = unknown, TRaw = unknown>(params: FormRemoveParams) =>\n request<T, TRaw>({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/form/deleteFormData.json\",\n ),\n method: \"post\",\n body: {\n formUuid: params.formUuid,\n formInstId: resolveFormInstanceId(params),\n },\n }),\n getChangeRecords: <T = unknown>(params: FormChangeRecordParams) =>\n request<T>({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/form/getFormDataChangeRecords.json\",\n ),\n method: \"get\",\n query: {\n formUuid: params.formUuid,\n formInstId: resolveFormInstanceId(params),\n page: params.page,\n pageSize: params.pageSize,\n },\n }),\n search: <T = unknown>(params: FormSearchParams) =>\n request<PageListResult<T>>({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/form/searchFormDatas.json\",\n ),\n method: \"get\",\n query: {\n formUuid: params.formUuid,\n searchFieldJson: serializeSearchExpression(params.search),\n currentPage: params.currentPage,\n pageSize: params.pageSize,\n originatorId: params.originatorId,\n createFrom: params.createFrom,\n createTo: params.createTo,\n modifiedFrom: params.modifiedFrom,\n modifiedTo: params.modifiedTo,\n dynamicOrder: normalizeDynamicOrder(params.dynamicOrder),\n instanceStatus: params.instanceStatus,\n },\n }),\n searchIds: <T = string>(params: FormSearchParams) =>\n request<PageListResult<T>>({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/form/searchFormDataIds.json\",\n ),\n method: \"get\",\n query: {\n formUuid: params.formUuid,\n searchFieldJson: serializeSearchExpression(params.search),\n currentPage: params.currentPage,\n pageSize: params.pageSize,\n originatorId: params.originatorId,\n createFrom: params.createFrom,\n createTo: params.createTo,\n modifiedFrom: params.modifiedFrom,\n modifiedTo: params.modifiedTo,\n dynamicOrder: normalizeDynamicOrder(params.dynamicOrder),\n instanceStatus: params.instanceStatus,\n },\n }),\n advancedSearch: <T = unknown>(params: FormAdvancedSearchParams) =>\n request<PageListResult<T>>({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/form/advancedSearch.json\",\n ),\n method: \"get\",\n query: {\n formUuid: params.formUuid,\n filters: serializeSearchExpression(params.filters),\n conditionType: params.conditionType,\n searchKeyWord: params.searchKeyWord,\n currentPage: params.currentPage,\n pageSize: params.pageSize,\n order: normalizeAdvancedOrder(params.order),\n instanceStatus: params.instanceStatus,\n },\n }),\n advancedExport: (params: FormExportParams) =>\n download({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/form/advancedExport.xlsx\",\n ),\n method: \"get\",\n query: {\n formUuid: params.formUuid,\n filters: serializeSearchExpression(params.filters),\n conditionType: params.conditionType,\n searchKeyWord: params.searchKeyWord,\n currentPage: params.currentPage,\n pageSize: params.pageSize,\n order: normalizeAdvancedOrder(params.order),\n instanceStatus: params.instanceStatus,\n exportAll: params.exportAll,\n embedImages: params.embedImages,\n exportFields: params.exportFields?.join(\",\"),\n },\n }),\n downloadImportTemplate: (params: DataManagementConfigParams) =>\n download({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/form/advancedExportTemplate.xlsx\",\n ),\n method: \"get\",\n query: {\n formUuid: params.formUuid,\n },\n }),\n importPreview: <T = unknown>(params: FormImportParams) =>\n request<T>({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/form/importPreview.xlsx\",\n ),\n method: \"post\",\n body: {\n formUuid: params.formUuid,\n fileBase64: params.fileBase64,\n fileName: params.fileName,\n },\n }),\n importExcel: <T = unknown>(params: FormImportParams) =>\n request<T>({\n path: buildAppPath(context, params.appType, \"/v1/form/import.xlsx\"),\n method: \"post\",\n body: {\n formUuid: params.formUuid,\n fileBase64: params.fileBase64,\n fileName: params.fileName,\n },\n }),\n getImportRecords: <T = unknown>(params: ImportExportRecordQuery) =>\n request<T>({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/form/importRecords.json\",\n ),\n method: \"get\",\n query: {\n formUuid: params.formUuid,\n currentPage: params.currentPage,\n pageSize: params.pageSize,\n },\n }),\n getExportRecords: <T = unknown>(params: ImportExportRecordQuery) =>\n request<T>({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/form/exportRecords.json\",\n ),\n method: \"get\",\n query: {\n formUuid: params.formUuid,\n currentPage: params.currentPage,\n pageSize: params.pageSize,\n },\n }),\n downloadImportSource: (params: ImportExportRecordDownloadParams) =>\n download({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/form/importRecord/downloadSource.xlsx\",\n ),\n method: \"get\",\n query: {\n recordId: params.recordId,\n },\n }),\n downloadImportFailed: (params: ImportExportRecordDownloadParams) =>\n download({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/form/importRecord/downloadFailed.xlsx\",\n ),\n method: \"get\",\n query: {\n recordId: params.recordId,\n },\n }),\n downloadExportRecord: (params: ImportExportRecordDownloadParams) =>\n download({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/form/exportRecord/download.xlsx\",\n ),\n method: \"get\",\n query: {\n recordId: params.recordId,\n },\n }),\n getDataManagementConfig: <T = unknown>(\n params: DataManagementConfigParams,\n ) =>\n request<T>({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/form/dataManagement/config/get.json\",\n ),\n method: \"get\",\n query: {\n formUuid: params.formUuid,\n },\n }),\n saveDataManagementConfig: <T = unknown>(\n params: SaveDataManagementConfigParams,\n ) =>\n request<T>({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/form/dataManagement/config/save.json\",\n ),\n method: \"post\",\n body: {\n formUuid: params.formUuid,\n config: params.config,\n },\n }),\n }\n\n const user = {\n create: <T = unknown>(params: CreateUserParams) =>\n request<T>({\n path: \"/user/create\",\n method: \"post\",\n body: params,\n }),\n update: <T = unknown>(params: UpdateUserParams) =>\n request<T>({\n path: \"/user/update\",\n method: \"put\",\n body: params,\n }),\n remove: <T = boolean>(id: string) =>\n request<T>({\n path: `/user/${encodePathSegment(id)}`,\n method: \"delete\",\n }),\n get: <T = unknown>(id = \"current\") =>\n request<T>({\n path: `/user/${encodePathSegment(id)}`,\n method: \"get\",\n }),\n getCurrent: <T = unknown>() =>\n request<T>({\n path: \"/user/current\",\n method: \"get\",\n }),\n getByUsername: <T = unknown>(username: string) =>\n request<T>({\n path: `/user/username/${encodePathSegment(username)}`,\n method: \"get\",\n }),\n list: <T = unknown>(params?: UserListParams) =>\n request<T>({\n path: \"/user/list\",\n method: \"get\",\n query: {\n ids: params?.ids,\n departmentIds: params?.departmentIds,\n name: params?.name,\n username: params?.username,\n phone: params?.phone,\n email: params?.email,\n page: params?.page,\n pageSize: params?.pageSize,\n },\n }),\n search: <T = unknown>(keyword?: string) =>\n request<T>({\n path: \"/user/search\",\n method: \"get\",\n query: {\n keyword,\n },\n }),\n listAll: <T = unknown>() =>\n request<T>({\n path: \"/user/all\",\n method: \"get\",\n }),\n listByDepartment: <T = unknown>(departmentId: string) =>\n request<T>({\n path: `/user/department/${encodePathSegment(departmentId)}`,\n method: \"get\",\n }),\n validate: <T = unknown>(params: ValidateUserParams) =>\n request<T>({\n path: \"/user/validate\",\n method: \"post\",\n body: params,\n }),\n }\n\n const getParentDepartments = <T = PageDepartmentRecord[]>(\n departmentId: string,\n options: GetParentDepartmentsOptions = {},\n ) =>\n request<T>({\n path: `/department/${encodePathSegment(departmentId)}/parentDepartments`,\n method: \"get\",\n query: {\n includeSelf: options.includeSelf ?? true,\n },\n })\n\n const department = {\n getParentDepartments,\n getCurrentUserParentDepartments: async (\n options: GetParentDepartmentsOptions = {},\n ): Promise<CurrentUserDepartmentParents[]> => {\n const departments = (context.user.departments || []).filter(\n (item) => typeof item.id === \"string\" && item.id.trim(),\n )\n\n return Promise.all(\n departments.map(async (item) => {\n const response = await getParentDepartments(item.id || \"\", {\n includeSelf: options.includeSelf,\n })\n return {\n department: item,\n parents: response.result || [],\n }\n }),\n )\n },\n }\n\n const role = {\n create: <T = unknown>(params: CreateRoleParams) =>\n request<T>({\n path: \"/role/\",\n method: \"post\",\n body: params,\n }),\n update: <T = unknown>(id: string, params: UpdateRoleParams) =>\n request<T>({\n path: `/role/${encodePathSegment(id)}`,\n method: \"put\",\n body: params,\n }),\n remove: <T = boolean>(id: string) =>\n request<T>({\n path: `/role/${encodePathSegment(id)}`,\n method: \"delete\",\n }),\n get: <T = unknown>(id: string) =>\n request<T>({\n path: `/role/${encodePathSegment(id)}`,\n method: \"get\",\n }),\n list: <T = unknown>(params?: RoleListParams) =>\n request<T>({\n path: \"/role/\",\n method: \"get\",\n query: withDefaultAppType(context, params) as\n | Record<string, unknown>\n | undefined,\n }),\n listUsers: <T = unknown>(roleId: string, params?: RoleUsersParams) =>\n request<T>({\n path: `/role/${encodePathSegment(roleId)}/users`,\n method: \"get\",\n query: params as Record<string, unknown> | undefined,\n }),\n assignRoles: <T = unknown>(params: AssignRolesParams) =>\n request<T>({\n path: \"/role/assign\",\n method: \"post\",\n body: params,\n }),\n addUserRole: <T = boolean>(params: { userId: string; roleId: string }) =>\n request<T>({\n path: \"/role/add\",\n method: \"post\",\n body: params,\n }),\n removeUserRole: <T = boolean>(params: { userId: string; roleId: string }) =>\n request<T>({\n path: \"/role/remove\",\n method: \"post\",\n body: params,\n }),\n batchAddUsers: <T = unknown>(params: BatchAddUsersToRoleParams) =>\n request<T>({\n path: \"/role/batch-add-users\",\n method: \"post\",\n body: params,\n }),\n getMyRoles: <T = unknown>(params?: GetUserRolesParams) =>\n request<T>({\n path: \"/role/my/roles\",\n method: \"get\",\n query: withDefaultAppType(context, params) as\n | Record<string, unknown>\n | undefined,\n }),\n getCurrentRole: <T = unknown>(params?: GetUserRolesParams) =>\n request<T>({\n path: \"/role/my/current\",\n method: \"get\",\n query: withDefaultAppType(context, params) as\n | Record<string, unknown>\n | undefined,\n }),\n switchPlatformRole: <T = boolean>(params: SwitchPlatformRoleParams) =>\n request<T>({\n path: \"/role/switch/platform\",\n method: \"post\",\n body: params,\n }),\n switchAppRole: <T = boolean>(params: SwitchAppRoleParams) =>\n request<T>({\n path: \"/role/switch/app\",\n method: \"post\",\n body: {\n ...params,\n appType: resolveAppType(context, params.appType),\n },\n }),\n }\n\n const permission = {\n formGroup: {\n create: <T = FormPermissionGroup>(params: CreateFormPermissionGroupDto) =>\n request<T>({\n path: \"/permission/form-group/\",\n method: \"post\",\n body: {\n ...params,\n appType: resolveAppType(context, params.appType),\n },\n }),\n update: <T = FormPermissionGroup>(\n id: string,\n params: UpdateFormPermissionGroupDto,\n ) =>\n request<T>({\n path: `/permission/form-group/${encodePathSegment(id)}`,\n method: \"put\",\n body: {\n ...params,\n ...(params.appType\n ? { appType: resolveAppType(context, params.appType) }\n : {}),\n },\n }),\n remove: <T = boolean>(id: string) =>\n request<T>({\n path: `/permission/form-group/${encodePathSegment(id)}`,\n method: \"delete\",\n }),\n get: <T = FormPermissionGroup | null>(id: string) =>\n request<T>({\n path: `/permission/form-group/${encodePathSegment(id)}`,\n method: \"get\",\n }),\n list: <T = PageOffsetListResult<FormPermissionGroup>>(\n params?: QueryFormPermissionGroupDto,\n ) =>\n request<T>({\n path: \"/permission/form-group/\",\n method: \"get\",\n query: {\n ...params,\n appType: resolveAppType(context, params?.appType),\n },\n }),\n getViewFieldPermissions: <\n T = Record<string, ViewFieldPermissionValue>,\n >(params: {\n appType?: string\n formUuid: string\n }) =>\n request<T>({\n path: \"/permission/form-group/field-permissions\",\n method: \"get\",\n query: {\n appType: resolveAppType(context, params.appType),\n formUuid: params.formUuid,\n },\n }),\n getViewPermissionSummary: <T = ViewPermissionSummary>(params: {\n appType?: string\n formUuid: string\n }) =>\n request<T>({\n path: \"/permission/form-group/view-permissions\",\n method: \"get\",\n query: {\n appType: resolveAppType(context, params.appType),\n formUuid: params.formUuid,\n },\n }),\n },\n pageGroup: {\n create: <T = PagePermissionGroup>(params: CreatePagePermissionGroupDto) =>\n request<T>({\n path: \"/permission/page-group/\",\n method: \"post\",\n body: {\n ...params,\n appType: resolveAppType(context, params.appType),\n },\n }),\n update: <T = PagePermissionGroup>(\n id: string,\n params: UpdatePagePermissionGroupDto,\n ) =>\n request<T>({\n path: `/permission/page-group/${encodePathSegment(id)}`,\n method: \"put\",\n body: {\n ...params,\n ...(params.appType\n ? { appType: resolveAppType(context, params.appType) }\n : {}),\n },\n }),\n remove: <T = boolean>(id: string) =>\n request<T>({\n path: `/permission/page-group/${encodePathSegment(id)}`,\n method: \"delete\",\n }),\n get: <T = PagePermissionGroup | null>(id: string) =>\n request<T>({\n path: `/permission/page-group/${encodePathSegment(id)}`,\n method: \"get\",\n }),\n list: <T = PageOffsetListResult<PagePermissionGroup>>(\n params?: QueryPagePermissionGroupDto,\n ) =>\n request<T>({\n path: \"/permission/page-group/\",\n method: \"get\",\n query: {\n ...params,\n appType: resolveAppType(context, params?.appType),\n },\n }),\n getUserMenuPermissions: <T = UserMenuPermissionsResponse>(\n appType?: string,\n ) =>\n request<T>({\n path: \"/permission/page-group/user-menu-permissions\",\n method: \"get\",\n query: {\n appType: resolveAppType(context, appType),\n },\n }),\n },\n api: {\n create: <T = unknown>(params: CreateApiPermissionParams) =>\n request<T>({\n path: \"/permission/api\",\n method: \"post\",\n body: params,\n }),\n update: <T = unknown>(id: string, params: UpdateApiPermissionParams) =>\n request<T>({\n path: `/permission/api/${encodePathSegment(id)}`,\n method: \"put\",\n body: params,\n }),\n remove: <T = boolean>(id: string) =>\n request<T>({\n path: `/permission/api/${encodePathSegment(id)}`,\n method: \"delete\",\n }),\n list: <T = unknown>(params?: ApiPermissionListParams) =>\n request<T>({\n path: \"/permission/api\",\n method: \"get\",\n query: withDefaultAppType(context, params) as\n | Record<string, unknown>\n | undefined,\n }),\n assign: <T = boolean>(params: AssignPermissionsParams) =>\n request<T>({\n path: \"/permission/api/assign\",\n method: \"post\",\n body: params,\n }),\n getByRole: <T = unknown>(roleId: string) =>\n request<T>({\n path: `/permission/api/role/${encodePathSegment(roleId)}`,\n method: \"get\",\n }),\n getRolesByPermission: <T = unknown>(permissionId: string) =>\n request<T>({\n path: `/permission/api/${encodePathSegment(permissionId)}/roles`,\n method: \"get\",\n }),\n },\n ui: {\n create: <T = unknown>(params: CreateUiPermissionParams) =>\n request<T>({\n path: \"/permission/api/ui\",\n method: \"post\",\n body: params,\n }),\n update: <T = unknown>(id: string, params: UpdateUiPermissionParams) =>\n request<T>({\n path: `/permission/api/ui/${encodePathSegment(id)}`,\n method: \"put\",\n body: params,\n }),\n remove: <T = boolean>(id: string) =>\n request<T>({\n path: `/permission/api/ui/${encodePathSegment(id)}`,\n method: \"delete\",\n }),\n list: <T = unknown>(params?: UiPermissionListParams) =>\n request<T>({\n path: \"/permission/api/ui\",\n method: \"get\",\n query: withDefaultAppType(context, params) as\n | Record<string, unknown>\n | undefined,\n }),\n assign: <T = boolean>(params: AssignPermissionsParams) =>\n request<T>({\n path: \"/permission/api/ui/assign\",\n method: \"post\",\n body: params,\n }),\n getMyPlatform: <T = unknown>() =>\n request<T>({\n path: \"/permission/api/ui/me/platform\",\n method: \"get\",\n }),\n getMyApp: <T = unknown>(appType?: string) =>\n request<T>({\n path: \"/permission/api/ui/me/app\",\n method: \"get\",\n query: {\n appType: resolveAppType(context, appType),\n },\n }),\n },\n }\n\n const process = {\n getInstance: <T = unknown>(params: GetProcessInstanceParams) =>\n request<T>({\n path: buildAppPath(context, params.appType, \"/v1/process/instance\"),\n method: \"get\",\n query: {\n instanceId: params.instanceId,\n },\n }),\n terminateInstance: <T = unknown>(params: TerminateProcessInstanceParams) =>\n request<T>({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/process/terminateInstance.json\",\n ),\n method: \"post\",\n body: {\n processInstanceId: params.processInstanceId,\n reason: params.reason,\n },\n }),\n approveTask: <T = unknown>(params: ApproveTaskParams) =>\n request<T>({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/process/approveTask.json\",\n ),\n method: \"post\",\n body: {\n ...params,\n appType: resolveAppType(context, params.appType),\n },\n }),\n triggerCallbackTask: <T = unknown>(params: TriggerCallbackTaskParams) =>\n request<T>({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/process/triggerCallback.json\",\n ),\n method: \"post\",\n body: {\n taskId: params.taskId,\n payload: params.payload,\n },\n }),\n }\n\n const notification = {\n sendByType: <T = SendNotificationResult>(\n params: SendNotificationByTypeParams,\n ) =>\n request<T>({\n path: \"/api/notification-config/send-by-type\",\n method: \"post\",\n body: {\n ...params,\n appType: resolveAppType(context, params.appType),\n },\n }),\n batchSendByType: <T = SendNotificationResult>(\n params: BatchSendNotificationByTypeParams,\n ) =>\n request<T>({\n path: \"/api/notification-config/batch-send-by-type\",\n method: \"post\",\n body: {\n ...params,\n appType: resolveAppType(context, params.appType),\n },\n }),\n }\n\n const sdk: PageSdk = {\n context,\n request,\n download,\n transport: {\n request,\n download,\n },\n form,\n user,\n department,\n role,\n permission,\n process,\n notification,\n dataSource: {\n run: async <TResult = unknown, TRaw = TResult>(\n name: string,\n params: Record<string, unknown> = {},\n ): Promise<PageApiResponse<TResult, TRaw>> => {\n const descriptor = (context.page.dataSources || []).find(\n (item) => item.key === name,\n ) as PageDataSourceDescriptor | undefined\n\n if (!descriptor) {\n throw new Error(`未找到数据源: ${String(name || \"\")}`)\n }\n\n const runtimeParams = params\n const resolvedFormUuid = String(\n runtimeParams.formUuid || descriptor.formUuid || \"\",\n ).trim()\n\n switch (descriptor.type) {\n case \"form.list\":\n return form.advancedSearch<TResult>({\n ...(runtimeParams as unknown as Omit<\n FormAdvancedSearchParams,\n \"formUuid\"\n >),\n formUuid: resolvedFormUuid,\n filters: mergeSearchExpressions(\n descriptor.defaultFilter,\n runtimeParams.filters as SearchExpression | string | undefined,\n ),\n }) as unknown as Promise<PageApiResponse<TResult, TRaw>>\n case \"form.detail\":\n return form.getDetail<TResult>({\n ...(runtimeParams as unknown as Omit<\n FormGetDetailParams,\n \"formUuid\"\n >),\n formUuid: resolvedFormUuid,\n }) as unknown as Promise<PageApiResponse<TResult, TRaw>>\n case \"form.create\":\n return form.create<TResult>({\n ...(runtimeParams as unknown as Omit<\n FormCreateParams,\n \"formUuid\"\n >),\n formUuid: resolvedFormUuid,\n }) as unknown as Promise<PageApiResponse<TResult, TRaw>>\n case \"form.update\":\n return form.update<TResult>({\n ...(runtimeParams as unknown as Omit<\n FormUpdateParams,\n \"formUuid\"\n >),\n formUuid: resolvedFormUuid,\n }) as unknown as Promise<PageApiResponse<TResult, TRaw>>\n case \"form.delete\":\n return form.remove<TResult>({\n ...(runtimeParams as unknown as Omit<\n FormRemoveParams,\n \"formUuid\"\n >),\n formUuid: resolvedFormUuid,\n }) as unknown as Promise<PageApiResponse<TResult, TRaw>>\n default:\n throw new Error(`暂不支持的数据源类型: ${String(descriptor.type)}`)\n }\n },\n },\n navigation: context.navigation,\n ui: context.ui,\n }\n\n return sdk\n}\n","import { StyleProvider } from \"@ant-design/cssinjs\";\nimport { App as AntdApp, ConfigProvider } from \"antd\";\nimport zhCN from \"antd/locale/zh_CN.js\";\nimport React from \"react\";\nimport { createRoot } from \"react-dom/client\";\n\nimport { PageProvider } from \"./provider\";\nimport { antdTheme } from \"../../styles/antd-theme\";\n\nimport type { PageContext } from \"../core/types\";\n\ntype RootLike = {\n render: (node: React.ReactNode) => void;\n unmount: () => void;\n};\n\nconst NAMESPACE_ROOT_CLASS = \"sy-app-workspace\";\nconst RUNTIME_PORTAL_ATTR = \"data-sy-runtime-portal\";\nconst PORTAL_CONTAINER_STACK_GLOBAL = \"__OPENXIANGDA_PORTAL_CONTAINER_STACK__\";\nconst PORTAL_CONTAINER_RESOLVER_GLOBAL = \"__OPENXIANGDA_GET_PORTAL_CONTAINER__\";\n\ntype RuntimePortalHandle = {\n container: HTMLElement;\n release: () => void;\n};\n\nconst createRuntimeRoot = (el: HTMLElement): RootLike => {\n return createRoot(el);\n};\n\nconst isShadowRoot = (rootNode: Node | null | undefined): rootNode is ShadowRoot =>\n typeof ShadowRoot !== \"undefined\" && rootNode instanceof ShadowRoot;\n\nconst getStyleContainer = (el: HTMLElement): HTMLElement | ShadowRoot => {\n const rootNode = el.getRootNode?.();\n if (isShadowRoot(rootNode)) {\n return rootNode;\n }\n return document.head;\n};\n\nconst getRuntimeRoot = (el: HTMLElement, triggerNode?: HTMLElement) => {\n const rootNode = el.getRootNode?.();\n if (isShadowRoot(rootNode)) return el;\n const triggerRoot = triggerNode?.closest?.<HTMLElement>(\n `.${NAMESPACE_ROOT_CLASS}`,\n );\n return (\n triggerRoot ||\n el.closest<HTMLElement>(`.${NAMESPACE_ROOT_CLASS}`) ||\n el.querySelector<HTMLElement>(`.${NAMESPACE_ROOT_CLASS}`) ||\n el\n );\n};\n\nconst getRuntimeOverlayContainer = (\n el: HTMLElement,\n portalContainer: HTMLElement | null,\n): {\n getPopupContainer: (triggerNode?: HTMLElement) => HTMLElement | ShadowRoot;\n getTargetContainer: () => HTMLElement | ShadowRoot;\n} => {\n const getOverlayRoot = (triggerNode?: HTMLElement) => {\n if (portalContainer?.isConnected) return portalContainer;\n return getRuntimeRoot(el, triggerNode);\n };\n\n return {\n getPopupContainer: (triggerNode?: HTMLElement) => {\n return getOverlayRoot(triggerNode);\n },\n getTargetContainer: () => getRuntimeRoot(el),\n };\n};\n\nconst createAntdConfig = (\n overlayContainer: ReturnType<typeof getRuntimeOverlayContainer>,\n) => ({\n locale: zhCN,\n prefixCls: \"sy-ant\",\n iconPrefixCls: \"sy-anticon\",\n theme: antdTheme,\n getPopupContainer: overlayContainer.getPopupContainer,\n getTargetContainer: overlayContainer.getTargetContainer,\n});\n\nconst createPortalContainer = (el: HTMLElement) => {\n const rootNode = el.getRootNode?.();\n const parent = isShadowRoot(rootNode)\n ? rootNode\n : el.ownerDocument?.body || document.body;\n const portalContainer = el.ownerDocument.createElement(\"div\");\n portalContainer.setAttribute(RUNTIME_PORTAL_ATTR, \"\");\n portalContainer.classList.add(NAMESPACE_ROOT_CLASS);\n parent.appendChild(portalContainer);\n return portalContainer;\n};\n\nconst installRuntimePortalContainer = (el: HTMLElement): RuntimePortalHandle => {\n const globalScope = globalThis as typeof globalThis & {\n [PORTAL_CONTAINER_STACK_GLOBAL]?: HTMLElement[];\n [PORTAL_CONTAINER_RESOLVER_GLOBAL]?: () => HTMLElement;\n };\n const portalContainer = createPortalContainer(el);\n const stack = Array.isArray(globalScope[PORTAL_CONTAINER_STACK_GLOBAL])\n ? globalScope[PORTAL_CONTAINER_STACK_GLOBAL]\n : [];\n stack.push(portalContainer);\n globalScope[PORTAL_CONTAINER_STACK_GLOBAL] = stack;\n globalScope[PORTAL_CONTAINER_RESOLVER_GLOBAL] = () => {\n for (let index = stack.length - 1; index >= 0; index -= 1) {\n const candidate = stack[index];\n if (candidate?.isConnected) {\n return candidate;\n }\n }\n return (\n document.querySelector<HTMLElement>(`[${RUNTIME_PORTAL_ATTR}]`) ||\n document.querySelector<HTMLElement>(`.${NAMESPACE_ROOT_CLASS}`) ||\n document.body\n );\n };\n\n return {\n container: portalContainer,\n release: () => {\n const position = stack.lastIndexOf(portalContainer);\n if (position >= 0) {\n stack.splice(position, 1);\n }\n portalContainer.remove();\n },\n };\n};\n\nconst installAntdStaticHolder = (\n el: HTMLElement,\n portalContainer: HTMLElement | null,\n) => {\n ConfigProvider.config({\n prefixCls: \"sy-ant\",\n iconPrefixCls: \"sy-anticon\",\n theme: antdTheme,\n holderRender: (children) => {\n if (!el.isConnected) {\n return (\n <ConfigProvider\n prefixCls=\"sy-ant\"\n iconPrefixCls=\"sy-anticon\"\n theme={antdTheme}\n >\n {children}\n </ConfigProvider>\n );\n }\n const overlayContainer = getRuntimeOverlayContainer(el, portalContainer);\n return (\n <StyleProvider hashPriority=\"high\" container={getStyleContainer(el)}>\n <ConfigProvider {...createAntdConfig(overlayContainer)}>\n {children}\n </ConfigProvider>\n </StyleProvider>\n );\n },\n });\n};\n\nexport const createReactPage = (\n AppComponent: React.ComponentType,\n): {\n mount: (el: HTMLElement, context: PageContext) => void;\n update: (el: HTMLElement, context: PageContext) => void;\n unmount: () => void;\n} => {\n let root: RootLike | null = null;\n let currentContainer: HTMLElement | null = null;\n let releasePortalContainer: (() => void) | null = null;\n let portalContainer: HTMLElement | null = null;\n\n const render = (el: HTMLElement, context: PageContext) => {\n el.classList.add(NAMESPACE_ROOT_CLASS);\n if (!root || currentContainer !== el || !portalContainer?.isConnected) {\n root?.unmount();\n releasePortalContainer?.();\n root = createRuntimeRoot(el);\n currentContainer = el;\n const portalHandle = installRuntimePortalContainer(el);\n portalContainer = portalHandle.container;\n releasePortalContainer = portalHandle.release;\n }\n const overlayContainer = getRuntimeOverlayContainer(el, portalContainer);\n installAntdStaticHolder(el, portalContainer);\n const antdConfig = createAntdConfig(overlayContainer);\n\n root.render(\n <StyleProvider hashPriority=\"high\" container={getStyleContainer(el)}>\n <ConfigProvider {...antdConfig}>\n <AntdApp>\n <PageProvider context={context}>\n <AppComponent />\n </PageProvider>\n </AntdApp>\n </ConfigProvider>\n </StyleProvider>,\n );\n };\n\n return {\n mount: (el, context) => {\n render(el, context);\n },\n update: (el, context) => {\n render(el, context);\n },\n unmount: () => {\n root?.unmount();\n releasePortalContainer?.();\n root = null;\n currentContainer = null;\n releasePortalContainer = null;\n portalContainer = null;\n },\n };\n};\n","import React, { useMemo } from \"react\"\n\nimport { ReactPageContext } from \"./store\"\nimport { createPageSdk } from \"../core/client\"\n\nimport type { PageSdkStore } from \"./store\"\nimport type { PageContext } from \"../core/types\"\n\nexport interface PageProviderProps {\n context: PageContext\n children: React.ReactNode\n}\n\nexport const PageProvider: React.FC<PageProviderProps> = ({\n context,\n children,\n}) => {\n const value = useMemo<PageSdkStore>(\n () => ({\n context,\n sdk: createPageSdk(context),\n }),\n [context],\n )\n\n return (\n <ReactPageContext.Provider value={value}>\n {children}\n </ReactPageContext.Provider>\n )\n}\n","import { createContext, useContext } from \"react\"\n\nimport type { PageContext, PageSdk } from \"../core/types\"\n\nexport interface PageSdkStore {\n context: PageContext\n sdk: PageSdk\n}\n\nexport const ReactPageContext = createContext<PageSdkStore | null>(null)\n\nexport const usePageSdkStore = () => {\n const store = useContext(ReactPageContext)\n if (!store) {\n throw new Error(\"usePageSdkStore 必须在 PageProvider 内使用\")\n }\n return store\n}\n","import type { ThemeConfig } from 'antd';\n\nexport const antdTheme: ThemeConfig = {\n cssVar: { prefix: 'sy-ant' },\n hashed: false,\n token: {\n colorPrimary: 'var(--sy-color-primary)',\n colorSuccess: 'var(--sy-color-success)',\n colorWarning: 'var(--sy-color-warning)',\n colorError: 'var(--sy-color-error)',\n colorText: 'var(--sy-color-text)',\n colorTextSecondary: 'var(--sy-color-text-secondary)',\n colorTextTertiary: 'var(--sy-color-text-tertiary)',\n colorTextDisabled: 'var(--sy-color-text-disabled)',\n colorBgContainer: 'var(--sy-color-bg-container)',\n colorBgLayout: 'var(--sy-color-bg-layout)',\n colorBgElevated: 'var(--sy-color-bg-elevated)',\n colorBorder: 'var(--sy-color-border)',\n colorBorderSecondary: 'var(--sy-color-border-secondary)',\n borderRadius: 6,\n borderRadiusSM: 4,\n borderRadiusLG: 8,\n fontSize: 14,\n controlHeight: 32,\n },\n components: {\n Form: { itemMarginBottom: 16 },\n Card: { paddingLG: 24 },\n },\n};\n\nexport default antdTheme;\n","import { useMemo } from \"react\"\n\nimport { usePageContext } from \"./usePageContext\"\n\nimport type { PageUserInfo, PageUserType } from \"../../core/types\"\n\nexport interface CurrentUserState {\n user: PageUserInfo & { userType: PageUserType; isGuest: boolean }\n isGuest: boolean\n isInternalUser: boolean\n displayName: string\n primaryDepartment: NonNullable<PageUserInfo[\"departments\"]>[number] | null\n}\n\nexport const useCurrentUser = (): CurrentUserState => {\n const { user } = usePageContext()\n\n return useMemo(() => {\n const userType: PageUserType =\n user.userType === \"guest\" || user.isGuest ? \"guest\" : \"normal\"\n const isGuest = userType === \"guest\"\n\n return {\n user: {\n ...user,\n isGuest,\n userType,\n },\n isGuest,\n isInternalUser: !isGuest,\n displayName: user.name || user.username || user.id,\n primaryDepartment: user.departments?.[0] || null,\n }\n }, [user])\n}\n","import { usePageSdkStore } from \"../store\"\n\nimport type { PageContext } from \"../../core/types\"\n\nexport const usePageContext = (): PageContext => {\n return usePageSdkStore().context\n}\n","import { useCallback, useEffect, useRef, useState } from \"react\"\n\nimport { usePageSdk } from \"./usePageSdk\"\n\nimport type { PageApiResponse } from \"../../core/types\"\nimport type { Dispatch, SetStateAction } from \"react\"\n\nconst createParamsSignature = (value: unknown): string => {\n try {\n return JSON.stringify(value || {})\n } catch {\n return \"\"\n }\n}\n\nexport interface UseDataSourceOptions<\n TResult = unknown,\n TData = TResult,\n TParams extends Record<string, unknown> = Record<string, unknown>,\n> {\n params?: TParams\n immediate?: boolean\n transform?: (result: TResult, response: PageApiResponse<TResult>) => TData\n}\n\nexport interface UseDataSourceResult<\n TResult = unknown,\n TData = TResult,\n TParams extends Record<string, unknown> = Record<string, unknown>,\n> {\n response: PageApiResponse<TResult> | null\n result: TResult | null\n data: TData | null\n loading: boolean\n error: Error | null\n refresh: (params?: TParams) => Promise<PageApiResponse<TResult> | null>\n run: (params?: TParams) => Promise<PageApiResponse<TResult> | null>\n setResponse: Dispatch<SetStateAction<PageApiResponse<TResult> | null>>\n setResult: Dispatch<SetStateAction<TResult | null>>\n setData: Dispatch<SetStateAction<TData | null>>\n}\n\nexport const useDataSource = <\n TResult = unknown,\n TData = TResult,\n TParams extends Record<string, unknown> = Record<string, unknown>,\n>(\n name: string,\n options: UseDataSourceOptions<TResult, TData, TParams> = {},\n): UseDataSourceResult<TResult, TData, TParams> => {\n const sdk = usePageSdk()\n const { params, immediate = true, transform } = options\n const paramsRef = useRef(params)\n const transformRef = useRef(transform)\n const paramsSignature = createParamsSignature(params)\n const [response, setResponse] = useState<PageApiResponse<TResult> | null>(\n null,\n )\n const [result, setResult] = useState<TResult | null>(null)\n const [data, setData] = useState<TData | null>(null)\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<Error | null>(null)\n\n paramsRef.current = params\n transformRef.current = transform\n\n const run = useCallback(\n async (overrideParams?: TParams) => {\n setLoading(true)\n setError(null)\n try {\n const response = await sdk.dataSource.run<TResult>(\n name,\n overrideParams || paramsRef.current || {},\n )\n setResponse(response)\n setResult(response.result as TResult | null)\n const activeTransform = transformRef.current\n const nextData = activeTransform\n ? activeTransform(response.result as TResult, response)\n : ((response.result ?? null) as unknown as TData | null)\n setData(nextData)\n return response\n } catch (runtimeError) {\n const nextError =\n runtimeError instanceof Error\n ? runtimeError\n : new Error(String(runtimeError))\n setError(nextError)\n setResponse(null)\n setResult(null)\n return null\n } finally {\n setLoading(false)\n }\n },\n [name, sdk.dataSource],\n )\n\n useEffect(() => {\n if (!immediate) {\n return\n }\n void run()\n }, [immediate, paramsSignature, run])\n\n return {\n response,\n result,\n data,\n loading,\n error,\n refresh: run,\n run,\n setResponse,\n setResult,\n setData,\n }\n}\n","import { usePageSdkStore } from \"../store\"\n\nimport type { PageSdk } from \"../../core/types\"\n\nexport const usePageSdk = (): PageSdk => {\n return usePageSdkStore().sdk\n}\n","import { useCallback, useEffect, useMemo, useState } from \"react\"\n\nimport { usePageSdk } from \"./usePageSdk\"\n\nimport type {\n PageApiResponse,\n ViewFieldPermissionValue,\n ViewOperationPermission,\n ViewPermissionSummary,\n} from \"../../core/types\"\n\nexport interface UseFormViewPermissionsOptions {\n appType?: string\n immediate?: boolean\n}\n\nexport interface UseFormViewPermissionsState {\n summary: ViewPermissionSummary\n response: PageApiResponse<ViewPermissionSummary> | null\n loading: boolean\n error: Error | null\n refresh: () => Promise<PageApiResponse<ViewPermissionSummary> | null>\n can: (operation: ViewOperationPermission) => boolean\n getFieldPermission: (fieldName: string) => ViewFieldPermissionValue | null\n}\n\nconst EMPTY_SUMMARY: ViewPermissionSummary = {\n fieldPermissions: {},\n operations: [],\n}\n\nconst toError = (error: unknown): Error => {\n if (error instanceof Error) {\n return error\n }\n if (\n typeof error === \"object\" &&\n error !== null &&\n \"message\" in error &&\n typeof error.message === \"string\"\n ) {\n return new Error(error.message)\n }\n return new Error(String(error || \"获取查看态权限失败\"))\n}\n\nexport const useFormViewPermissions = (\n formUuid: string,\n options: UseFormViewPermissionsOptions = {},\n): UseFormViewPermissionsState => {\n const sdk = usePageSdk()\n const [summary, setSummary] = useState<ViewPermissionSummary>(EMPTY_SUMMARY)\n const [response, setResponse] =\n useState<PageApiResponse<ViewPermissionSummary> | null>(null)\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<Error | null>(null)\n const immediate = options.immediate ?? true\n\n const refresh = useCallback(async () => {\n const normalizedFormUuid = String(formUuid || \"\").trim()\n if (!normalizedFormUuid) {\n setSummary(EMPTY_SUMMARY)\n setResponse(null)\n return null\n }\n\n setLoading(true)\n setError(null)\n\n try {\n const nextResponse =\n await sdk.permission.formGroup.getViewPermissionSummary({\n appType: options.appType,\n formUuid: normalizedFormUuid,\n })\n const nextSummary = nextResponse.result || EMPTY_SUMMARY\n setResponse(nextResponse)\n setSummary({\n fieldPermissions: nextSummary.fieldPermissions || {},\n operations: nextSummary.operations || [],\n })\n return nextResponse\n } catch (requestError) {\n const nextError = toError(requestError)\n setError(nextError)\n setResponse(null)\n setSummary(EMPTY_SUMMARY)\n return null\n } finally {\n setLoading(false)\n }\n }, [formUuid, options.appType, sdk])\n\n useEffect(() => {\n if (!immediate) {\n return\n }\n void refresh()\n }, [immediate, refresh])\n\n const operationSet = useMemo(\n () => new Set(summary.operations),\n [summary.operations],\n )\n\n const can = useCallback(\n (operation: ViewOperationPermission) => operationSet.has(operation),\n [operationSet],\n )\n\n const getFieldPermission = useCallback(\n (fieldName: string) => summary.fieldPermissions[fieldName] || null,\n [summary.fieldPermissions],\n )\n\n return {\n summary,\n response,\n loading,\n error,\n refresh,\n can,\n getFieldPermission,\n }\n}\n","import { usePageContext } from \"./usePageContext\"\n\nimport type { PageMessageApi } from \"../../core/types\"\n\nexport const useMessage = (): PageMessageApi => {\n return usePageContext().ui.message\n}\n","import { usePageContext } from \"./usePageContext\"\n\nimport type { PageModalApi } from \"../../core/types\"\n\nexport const useModal = (): PageModalApi => {\n return usePageContext().ui.modal\n}\n","import { usePageContext } from \"./usePageContext\"\n\nimport type { PageNavigationApi } from \"../../core/types\"\n\nexport const useNavigation = (): PageNavigationApi => {\n return usePageContext().navigation\n}\n","import { usePageContext } from \"./usePageContext\"\n\nexport const usePageProps = <T extends object = Record<string, unknown>>() => {\n return usePageContext().page.props as T\n}\n","import { usePageContext } from \"./usePageContext\"\n\nimport type { PageRouteInfo } from \"../../core/types\"\n\nexport const usePageRoute = (): PageRouteInfo => {\n return usePageContext().route\n}\n"],"mappings":"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","names":["jsx","useMemo","useMemo","response","useCallback","useEffect","useMemo","useState","useState","useCallback","useEffect","useMemo"]}
|