openxiangda 1.0.37 → 1.0.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/runtime/index.ts","../../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":["export * from \"./core\"\nexport * from \"./react\"\n","import type {\n ApiPermissionListParams,\n ApproveTaskParams,\n AssignPermissionsParams,\n AssignRolesParams,\n BatchAddUsersToRoleParams,\n BatchSendNotificationByTypeParams,\n ConnectorCallParams,\n ConnectorInvokeParams,\n ConnectorInvokeResult,\n CreateApiPermissionParams,\n CreateFormPermissionGroupDto,\n CreatePagePermissionGroupDto,\n CreateRoleParams,\n CreateUiPermissionParams,\n CurrentUserDepartmentParents,\n DataManagementConfigParams,\n DataViewQueryParams,\n DataViewQueryResult,\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 PreviewNotificationTemplateParams,\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 buildOpenXiangdaAppPath = (\n context: PageContext,\n explicitAppType: string | undefined,\n suffix: string,\n) =>\n `/openxiangda-api/v1/apps/${encodePathSegment(\n resolveAppType(context, explicitAppType),\n )}${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 parseConnectorCallName = (name: string) => {\n const value = String(name || \"\").trim()\n const separatorIndex = value.indexOf(\".\")\n if (separatorIndex <= 0 || separatorIndex === value.length - 1) {\n throw new Error(\"连接器调用名必须是 connector.api 格式\")\n }\n\n return {\n connector: value.slice(0, separatorIndex),\n api: value.slice(separatorIndex + 1),\n }\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 connector = {\n invoke: <TResult = unknown, TBody = unknown>(\n params: ConnectorInvokeParams<TBody>,\n ) =>\n request<ConnectorInvokeResult<TResult>>({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/connectors/actions/invoke\",\n ),\n method: \"post\",\n body: {\n connector: params.connector,\n api: params.api,\n pathParams: params.pathParams,\n query: params.query,\n body: params.body,\n headers: params.headers,\n requestBodyType: params.requestBodyType,\n responseType: params.responseType,\n },\n }),\n call: <TResult = unknown, TBody = unknown>(\n name: string,\n params: ConnectorCallParams<TBody> = {},\n ) => {\n const target = parseConnectorCallName(name)\n return connector.invoke<TResult, TBody>({\n ...params,\n connector: target.connector,\n api: target.api,\n })\n },\n download: <TBody = unknown>(\n params: ConnectorInvokeParams<TBody>,\n ): Promise<PageBinaryResponse> =>\n download({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/connectors/actions/download\",\n ),\n method: \"post\",\n body: {\n connector: params.connector,\n api: params.api,\n pathParams: params.pathParams,\n query: params.query,\n body: params.body,\n headers: params.headers,\n requestBodyType: params.requestBodyType,\n responseType: \"binary\",\n },\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 dataView = {\n query: <T = unknown>(code: string, params: DataViewQueryParams = {}) => {\n const dataViewCode = String(code || \"\").trim()\n if (!dataViewCode) {\n throw new Error(\"数据视图 code 不能为空\")\n }\n return request<DataViewQueryResult<T>>({\n path: buildAppPath(\n context,\n params.appType,\n `/v1/data-views/${encodePathSegment(dataViewCode)}/query.json`,\n ),\n method: \"post\",\n body: {\n fields: params.fields,\n filters: serializeSearchExpression(params.filters),\n conditionType: params.conditionType,\n searchKeyWord: params.searchKeyWord,\n currentPage: params.currentPage,\n pageSize: params.pageSize,\n order: Array.isArray(params.order)\n ? params.order\n : params.order\n ? [params.order]\n : undefined,\n },\n })\n },\n }\n\n const notification = {\n sendByType: <T = SendNotificationResult>(\n params: SendNotificationByTypeParams,\n ) =>\n request<T>({\n path: buildOpenXiangdaAppPath(\n context,\n params.appType,\n \"/notifications/send-by-type\",\n ),\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: buildOpenXiangdaAppPath(\n context,\n params.appType,\n \"/notifications/batch-send-by-type\",\n ),\n method: \"post\",\n body: {\n ...params,\n appType: resolveAppType(context, params.appType),\n },\n }),\n findConfig: <T = unknown>(\n notificationType: string,\n params: { appType?: string; formUuid?: string } = {},\n ) =>\n request<T>({\n path: buildOpenXiangdaAppPath(\n context,\n params.appType,\n `/notifications/type-configs/${encodePathSegment(notificationType)}`,\n ),\n method: \"get\",\n query: params.formUuid ? { formUuid: params.formUuid } : undefined,\n }),\n previewTemplate: <T = unknown>(params: PreviewNotificationTemplateParams) =>\n request<T>({\n path: buildOpenXiangdaAppPath(\n context,\n params.appType,\n \"/notifications/templates/preview\",\n ),\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 connector,\n form,\n user,\n department,\n role,\n permission,\n process,\n notification,\n dataView,\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 \"dataView.query\": {\n const dataViewCode = String(\n runtimeParams.code ||\n runtimeParams.dataViewCode ||\n descriptor.code ||\n descriptor.dataViewCode ||\n descriptor.viewCode ||\n descriptor.key ||\n \"\",\n ).trim()\n const queryParams = {\n ...(descriptor.params && typeof descriptor.params === \"object\"\n ? (descriptor.params as Record<string, unknown>)\n : {}),\n ...runtimeParams,\n fields: runtimeParams.fields || descriptor.fields,\n filters: mergeSearchExpressions(\n descriptor.defaultFilter,\n runtimeParams.filters as SearchExpression | string | undefined,\n ),\n } as unknown as DataViewQueryParams\n delete (queryParams as Record<string, unknown>).code\n delete (queryParams as Record<string, unknown>).dataViewCode\n delete (queryParams as Record<string, unknown>).viewCode\n return dataView.query<TResult>(\n dataViewCode,\n queryParams,\n ) as unknown as Promise<PageApiResponse<TResult, TRaw>>\n }\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, message } 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, legacyAntdTheme } 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__\";\nconst MESSAGE_PROXY_GLOBAL = \"__OPENXIANGDA_ANTD_MESSAGE_PROXY__\";\nconst MESSAGE_METHODS = [\n \"open\",\n \"success\",\n \"info\",\n \"warning\",\n \"error\",\n \"loading\",\n \"destroy\",\n] as const;\n\ntype RuntimePortalHandle = {\n container: HTMLElement | null;\n release: () => void;\n};\n\ntype RuntimeCssIsolation = \"none\" | \"namespace\" | \"shadow\";\n\ntype MessageMethod = (typeof MESSAGE_METHODS)[number];\n\ntype AntdMessageProxyState = {\n apiStack: Array<Record<string, unknown>>;\n installed: boolean;\n originalMethods: Partial<Record<MessageMethod, (...args: unknown[]) => unknown>>;\n};\n\nconst createRuntimeRoot = (el: HTMLElement): RootLike => {\n return createRoot(el);\n};\n\nconst normalizeCssIsolation = (value: unknown): RuntimeCssIsolation => {\n if (value === \"namespace\" || value === \"shadow\") return value;\n return \"none\";\n};\n\nconst usesLegacyCssIsolation = (cssIsolation: RuntimeCssIsolation) =>\n cssIsolation === \"namespace\" || cssIsolation === \"shadow\";\n\nconst getRuntimeCssIsolation = (context: PageContext): RuntimeCssIsolation =>\n normalizeCssIsolation(context.page?.capabilities?.cssIsolation);\n\nconst getAntdRuntimeOptions = (cssIsolation: RuntimeCssIsolation) => {\n const legacy = usesLegacyCssIsolation(cssIsolation);\n return {\n prefixCls: legacy ? \"sy-ant\" : \"ant\",\n iconPrefixCls: legacy ? \"sy-anticon\" : \"anticon\",\n messagePrefixCls: legacy ? \"sy-ant-message\" : \"ant-message\",\n theme: legacy ? legacyAntdTheme : antdTheme,\n };\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 cssIsolation: RuntimeCssIsolation,\n) => {\n const antdOptions = getAntdRuntimeOptions(cssIsolation);\n return {\n locale: zhCN,\n prefixCls: antdOptions.prefixCls,\n iconPrefixCls: antdOptions.iconPrefixCls,\n theme: antdOptions.theme,\n ...(usesLegacyCssIsolation(cssIsolation)\n ? {\n getPopupContainer: overlayContainer.getPopupContainer,\n getTargetContainer: overlayContainer.getTargetContainer,\n }\n : {}),\n };\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 getAntdMessageProxyState = (): AntdMessageProxyState => {\n const globalScope = globalThis as typeof globalThis & {\n [MESSAGE_PROXY_GLOBAL]?: AntdMessageProxyState;\n };\n if (!globalScope[MESSAGE_PROXY_GLOBAL]) {\n globalScope[MESSAGE_PROXY_GLOBAL] = {\n apiStack: [],\n installed: false,\n originalMethods: {},\n };\n }\n return globalScope[MESSAGE_PROXY_GLOBAL];\n};\n\nconst installAntdMessageProxy = () => {\n const state = getAntdMessageProxyState();\n if (state.installed) return state;\n MESSAGE_METHODS.forEach((method) => {\n const originalMethod = (message as unknown as Record<string, unknown>)[method];\n if (typeof originalMethod !== \"function\") return;\n state.originalMethods[method] = originalMethod.bind(message) as (\n ...args: unknown[]\n ) => unknown;\n (message as unknown as Record<string, unknown>)[method] = (\n ...args: unknown[]\n ) => {\n const api = state.apiStack.at(-1);\n const apiMethod = api?.[method];\n if (typeof apiMethod === \"function\") {\n return apiMethod(...args);\n }\n return state.originalMethods[method]?.(...args);\n };\n });\n state.installed = true;\n return state;\n};\n\nconst registerAntdMessageApi = (api: Record<string, unknown>) => {\n const state = installAntdMessageProxy();\n state.apiStack.push(api);\n return () => {\n const position = state.apiStack.lastIndexOf(api);\n if (position >= 0) {\n state.apiStack.splice(position, 1);\n }\n };\n};\n\nconst installRuntimePortalContainer = (\n el: HTMLElement,\n cssIsolation: RuntimeCssIsolation,\n): RuntimePortalHandle => {\n const globalScope = globalThis as typeof globalThis & {\n [PORTAL_CONTAINER_STACK_GLOBAL]?: HTMLElement[];\n [PORTAL_CONTAINER_RESOLVER_GLOBAL]?: () => HTMLElement;\n };\n const portalContainer = usesLegacyCssIsolation(cssIsolation)\n ? createPortalContainer(el)\n : null;\n const stack = Array.isArray(globalScope[PORTAL_CONTAINER_STACK_GLOBAL])\n ? globalScope[PORTAL_CONTAINER_STACK_GLOBAL]\n : [];\n const stackTarget = portalContainer ?? el.ownerDocument?.body ?? document.body;\n stack.push(stackTarget);\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(stackTarget);\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 cssIsolation: RuntimeCssIsolation,\n) => {\n installAntdMessageProxy();\n const antdOptions = getAntdRuntimeOptions(cssIsolation);\n const getMessageContainer = () => {\n if (portalContainer?.isConnected) return portalContainer;\n return usesLegacyCssIsolation(cssIsolation) ? getRuntimeRoot(el) : document.body;\n };\n\n ConfigProvider.config({\n prefixCls: antdOptions.prefixCls,\n iconPrefixCls: antdOptions.iconPrefixCls,\n theme: antdOptions.theme,\n holderRender: (children) => {\n if (!el.isConnected) {\n return (\n <ConfigProvider\n prefixCls={antdOptions.prefixCls}\n iconPrefixCls={antdOptions.iconPrefixCls}\n theme={antdOptions.theme}\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, cssIsolation)}>\n {children}\n </ConfigProvider>\n </StyleProvider>\n );\n },\n });\n message.config({\n prefixCls: antdOptions.messagePrefixCls,\n getContainer: getMessageContainer,\n });\n};\n\nconst RuntimeMessageBridge = ({ children }: { children: React.ReactNode }) => {\n const appContext = AntdApp.useApp();\n React.useLayoutEffect(() => {\n return registerAntdMessageApi(\n appContext.message as unknown as Record<string, unknown>,\n );\n }, [appContext.message]);\n return <>{children}</>;\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 let currentCssIsolation: RuntimeCssIsolation | null = null;\n\n const render = (el: HTMLElement, context: PageContext) => {\n const cssIsolation = getRuntimeCssIsolation(context);\n if (usesLegacyCssIsolation(cssIsolation)) {\n el.classList.add(NAMESPACE_ROOT_CLASS);\n } else {\n el.classList.remove(NAMESPACE_ROOT_CLASS);\n }\n if (\n !root ||\n currentContainer !== el ||\n currentCssIsolation !== cssIsolation ||\n (usesLegacyCssIsolation(cssIsolation) && !portalContainer?.isConnected)\n ) {\n root?.unmount();\n releasePortalContainer?.();\n root = createRuntimeRoot(el);\n currentContainer = el;\n currentCssIsolation = cssIsolation;\n const portalHandle = installRuntimePortalContainer(el, cssIsolation);\n portalContainer = portalHandle.container;\n releasePortalContainer = portalHandle.release;\n }\n const overlayContainer = getRuntimeOverlayContainer(el, portalContainer);\n installAntdStaticHolder(el, portalContainer, cssIsolation);\n const antdConfig = createAntdConfig(overlayContainer, cssIsolation);\n\n root.render(\n <StyleProvider hashPriority=\"high\" container={getStyleContainer(el)}>\n <ConfigProvider {...antdConfig}>\n <AntdApp>\n <RuntimeMessageBridge>\n <PageProvider context={context}>\n <AppComponent />\n </PageProvider>\n </RuntimeMessageBridge>\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 currentCssIsolation = 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\nconst baseTheme = {\n hashed: false,\n token: {\n colorPrimary: '#1677ff',\n colorInfo: '#1677ff',\n colorSuccess: '#52c41a',\n colorWarning: '#faad14',\n colorError: '#ff4d4f',\n colorText: 'rgba(0,0,0,0.88)',\n colorTextSecondary: 'rgba(0,0,0,0.65)',\n colorTextTertiary: 'rgba(0,0,0,0.45)',\n colorTextDisabled: 'rgba(0,0,0,0.25)',\n colorBgContainer: '#ffffff',\n colorBgLayout: '#f5f5f5',\n colorBgElevated: '#ffffff',\n colorBorder: '#d9d9d9',\n colorBorderSecondary: '#f0f0f0',\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} satisfies ThemeConfig;\n\nexport const antdTheme: ThemeConfig = {\n ...baseTheme,\n cssVar: { prefix: 'ant' },\n};\n\nexport const legacyAntdTheme: ThemeConfig = {\n ...baseTheme,\n cssVar: { prefix: 'sy-ant' },\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":["import_react","import_client","import_react","import_jsx_runtime","zhCN","AntdApp","React","import_react","import_react","response","import_react"]}
1
+ {"version":3,"sources":["../../src/runtime/index.ts","../../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":["export * from \"./core\"\nexport * from \"./react\"\n","import type {\n ApiPermissionListParams,\n AuthLogoutRedirectOptions,\n ApproveTaskParams,\n AssignPermissionsParams,\n AssignRolesParams,\n BatchAddUsersToRoleParams,\n BatchSendNotificationByTypeParams,\n ConnectorCallParams,\n ConnectorInvokeParams,\n ConnectorInvokeResult,\n CreateApiPermissionParams,\n CreateFormPermissionGroupDto,\n CreatePagePermissionGroupDto,\n CreateRoleParams,\n CreateUiPermissionParams,\n CurrentUserDepartmentParents,\n DataManagementConfigParams,\n DataViewQueryParams,\n DataViewQueryResult,\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 PreviewNotificationTemplateParams,\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 buildOpenXiangdaAppPath = (\n context: PageContext,\n explicitAppType: string | undefined,\n suffix: string,\n) =>\n `/openxiangda-api/v1/apps/${encodePathSegment(\n resolveAppType(context, explicitAppType),\n )}${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 parseConnectorCallName = (name: string) => {\n const value = String(name || \"\").trim()\n const separatorIndex = value.indexOf(\".\")\n if (separatorIndex <= 0 || separatorIndex === value.length - 1) {\n throw new Error(\"连接器调用名必须是 connector.api 格式\")\n }\n\n return {\n connector: value.slice(0, separatorIndex),\n api: value.slice(separatorIndex + 1),\n }\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\nconst AUTH_LOGIN_URL_ENV_KEYS = [\n \"loginUrl\",\n \"authLoginUrl\",\n \"bathAuthUrl\",\n \"REACT_APP_VITE_BATH_AUTH_URL\",\n \"VITE_BATH_AUTH_URL\",\n \"BATH_AUTH_URL\",\n]\n\nconst normalizeOptionalString = (value: unknown) => {\n const text = typeof value === \"string\" ? value.trim() : \"\"\n return text || undefined\n}\n\nconst getCurrentHref = () => {\n if (typeof window === \"undefined\") {\n return \"\"\n }\n return window.location?.href || \"\"\n}\n\nconst resolveAuthLoginUrl = (\n context: PageContext,\n options: AuthLogoutRedirectOptions,\n) => {\n const explicitLoginUrl = normalizeOptionalString(options.loginUrl)\n if (explicitLoginUrl) {\n return explicitLoginUrl\n }\n\n for (const key of AUTH_LOGIN_URL_ENV_KEYS) {\n const loginUrl = normalizeOptionalString(context.env?.[key])\n if (loginUrl) {\n return loginUrl\n }\n }\n\n return undefined\n}\n\nconst buildAuthRedirectUrl = (\n loginUrl: string,\n callbackUrl: string | undefined,\n callbackParamName: string | undefined,\n) => {\n const paramName = normalizeOptionalString(callbackParamName) || \"callback\"\n const normalizedCallbackUrl = normalizeOptionalString(callbackUrl)\n\n if (!normalizedCallbackUrl) {\n return loginUrl\n }\n\n const baseHref = getCurrentHref() || \"http://localhost/\"\n const isAbsoluteUrl = /^[a-z][a-z\\d+.-]*:/i.test(loginUrl)\n const isProtocolRelativeUrl = loginUrl.startsWith(\"//\")\n const isRootRelativeUrl = loginUrl.startsWith(\"/\")\n\n try {\n const url = new URL(loginUrl, baseHref)\n url.searchParams.set(paramName, normalizedCallbackUrl)\n\n if (isAbsoluteUrl || isProtocolRelativeUrl) {\n return url.toString()\n }\n\n const path = `${url.pathname}${url.search}${url.hash}`\n return isRootRelativeUrl ? path : path.replace(/^\\//, \"\")\n } catch {\n const hashIndex = loginUrl.indexOf(\"#\")\n const pathAndQuery =\n hashIndex >= 0 ? loginUrl.slice(0, hashIndex) : loginUrl\n const hash = hashIndex >= 0 ? loginUrl.slice(hashIndex) : \"\"\n const separator = pathAndQuery.includes(\"?\") ? \"&\" : \"?\"\n\n return `${pathAndQuery}${separator}${encodeURIComponent(\n paramName,\n )}=${encodeURIComponent(normalizedCallbackUrl)}${hash}`\n }\n}\n\nconst performRedirect = (\n url: string,\n options: AuthLogoutRedirectOptions,\n) => {\n if (options.redirect) {\n options.redirect(url)\n return\n }\n\n if (typeof window === \"undefined\" || !window.location) {\n return\n }\n\n if (options.replace && typeof window.location.replace === \"function\") {\n window.location.replace(url)\n return\n }\n\n window.location.href = url\n}\n\nconst reloadCurrentPage = () => {\n if (\n typeof window === \"undefined\" ||\n !window.location ||\n typeof window.location.reload !== \"function\"\n ) {\n return\n }\n\n window.location.reload()\n}\n\nconst redirectAfterLogout = (\n context: PageContext,\n options: AuthLogoutRedirectOptions,\n) => {\n const loginUrl = resolveAuthLoginUrl(context, options)\n const callbackUrl = normalizeOptionalString(options.callbackUrl) || getCurrentHref()\n\n if (loginUrl) {\n performRedirect(\n buildAuthRedirectUrl(loginUrl, callbackUrl, options.callbackParamName),\n options,\n )\n return\n }\n\n if (options.fallback !== \"none\") {\n reloadCurrentPage()\n }\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 logout = <T = boolean>() =>\n request<T>({\n path: \"/api/auth/logout\",\n method: \"post\",\n })\n\n const auth = {\n logout,\n logoutAndRedirect: async <T = boolean>(\n options: AuthLogoutRedirectOptions = {},\n ) => {\n try {\n const response = await logout<T>()\n redirectAfterLogout(context, options)\n return response\n } catch (error) {\n if (options.continueOnLogoutError === false) {\n throw error\n }\n redirectAfterLogout(context, options)\n return null\n }\n },\n }\n\n const connector = {\n invoke: <TResult = unknown, TBody = unknown>(\n params: ConnectorInvokeParams<TBody>,\n ) =>\n request<ConnectorInvokeResult<TResult>>({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/connectors/actions/invoke\",\n ),\n method: \"post\",\n body: {\n connector: params.connector,\n api: params.api,\n pathParams: params.pathParams,\n query: params.query,\n body: params.body,\n headers: params.headers,\n requestBodyType: params.requestBodyType,\n responseType: params.responseType,\n },\n }),\n call: <TResult = unknown, TBody = unknown>(\n name: string,\n params: ConnectorCallParams<TBody> = {},\n ) => {\n const target = parseConnectorCallName(name)\n return connector.invoke<TResult, TBody>({\n ...params,\n connector: target.connector,\n api: target.api,\n })\n },\n download: <TBody = unknown>(\n params: ConnectorInvokeParams<TBody>,\n ): Promise<PageBinaryResponse> =>\n download({\n path: buildAppPath(\n context,\n params.appType,\n \"/v1/connectors/actions/download\",\n ),\n method: \"post\",\n body: {\n connector: params.connector,\n api: params.api,\n pathParams: params.pathParams,\n query: params.query,\n body: params.body,\n headers: params.headers,\n requestBodyType: params.requestBodyType,\n responseType: \"binary\",\n },\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 dataView = {\n query: <T = unknown>(code: string, params: DataViewQueryParams = {}) => {\n const dataViewCode = String(code || \"\").trim()\n if (!dataViewCode) {\n throw new Error(\"数据视图 code 不能为空\")\n }\n return request<DataViewQueryResult<T>>({\n path: buildAppPath(\n context,\n params.appType,\n `/v1/data-views/${encodePathSegment(dataViewCode)}/query.json`,\n ),\n method: \"post\",\n body: {\n fields: params.fields,\n filters: serializeSearchExpression(params.filters),\n conditionType: params.conditionType,\n searchKeyWord: params.searchKeyWord,\n currentPage: params.currentPage,\n pageSize: params.pageSize,\n order: Array.isArray(params.order)\n ? params.order\n : params.order\n ? [params.order]\n : undefined,\n },\n })\n },\n }\n\n const notification = {\n sendByType: <T = SendNotificationResult>(\n params: SendNotificationByTypeParams,\n ) =>\n request<T>({\n path: buildOpenXiangdaAppPath(\n context,\n params.appType,\n \"/notifications/send-by-type\",\n ),\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: buildOpenXiangdaAppPath(\n context,\n params.appType,\n \"/notifications/batch-send-by-type\",\n ),\n method: \"post\",\n body: {\n ...params,\n appType: resolveAppType(context, params.appType),\n },\n }),\n findConfig: <T = unknown>(\n notificationType: string,\n params: { appType?: string; formUuid?: string } = {},\n ) =>\n request<T>({\n path: buildOpenXiangdaAppPath(\n context,\n params.appType,\n `/notifications/type-configs/${encodePathSegment(notificationType)}`,\n ),\n method: \"get\",\n query: params.formUuid ? { formUuid: params.formUuid } : undefined,\n }),\n previewTemplate: <T = unknown>(params: PreviewNotificationTemplateParams) =>\n request<T>({\n path: buildOpenXiangdaAppPath(\n context,\n params.appType,\n \"/notifications/templates/preview\",\n ),\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 auth,\n connector,\n form,\n user,\n department,\n role,\n permission,\n process,\n notification,\n dataView,\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 \"dataView.query\": {\n const dataViewCode = String(\n runtimeParams.code ||\n runtimeParams.dataViewCode ||\n descriptor.code ||\n descriptor.dataViewCode ||\n descriptor.viewCode ||\n descriptor.key ||\n \"\",\n ).trim()\n const queryParams = {\n ...(descriptor.params && typeof descriptor.params === \"object\"\n ? (descriptor.params as Record<string, unknown>)\n : {}),\n ...runtimeParams,\n fields: runtimeParams.fields || descriptor.fields,\n filters: mergeSearchExpressions(\n descriptor.defaultFilter,\n runtimeParams.filters as SearchExpression | string | undefined,\n ),\n } as unknown as DataViewQueryParams\n delete (queryParams as Record<string, unknown>).code\n delete (queryParams as Record<string, unknown>).dataViewCode\n delete (queryParams as Record<string, unknown>).viewCode\n return dataView.query<TResult>(\n dataViewCode,\n queryParams,\n ) as unknown as Promise<PageApiResponse<TResult, TRaw>>\n }\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, message } 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, legacyAntdTheme } 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__\";\nconst MESSAGE_PROXY_GLOBAL = \"__OPENXIANGDA_ANTD_MESSAGE_PROXY__\";\nconst MESSAGE_METHODS = [\n \"open\",\n \"success\",\n \"info\",\n \"warning\",\n \"error\",\n \"loading\",\n \"destroy\",\n] as const;\n\ntype RuntimePortalHandle = {\n container: HTMLElement | null;\n release: () => void;\n};\n\ntype RuntimeCssIsolation = \"none\" | \"namespace\" | \"shadow\";\n\ntype MessageMethod = (typeof MESSAGE_METHODS)[number];\n\ntype AntdMessageProxyState = {\n apiStack: Array<Record<string, unknown>>;\n installed: boolean;\n originalMethods: Partial<Record<MessageMethod, (...args: unknown[]) => unknown>>;\n};\n\nconst createRuntimeRoot = (el: HTMLElement): RootLike => {\n return createRoot(el);\n};\n\nconst normalizeCssIsolation = (value: unknown): RuntimeCssIsolation => {\n if (value === \"namespace\" || value === \"shadow\") return value;\n return \"none\";\n};\n\nconst usesLegacyCssIsolation = (cssIsolation: RuntimeCssIsolation) =>\n cssIsolation === \"namespace\" || cssIsolation === \"shadow\";\n\nconst getRuntimeCssIsolation = (context: PageContext): RuntimeCssIsolation =>\n normalizeCssIsolation(context.page?.capabilities?.cssIsolation);\n\nconst getAntdRuntimeOptions = (cssIsolation: RuntimeCssIsolation) => {\n const legacy = usesLegacyCssIsolation(cssIsolation);\n return {\n prefixCls: legacy ? \"sy-ant\" : \"ant\",\n iconPrefixCls: legacy ? \"sy-anticon\" : \"anticon\",\n messagePrefixCls: legacy ? \"sy-ant-message\" : \"ant-message\",\n theme: legacy ? legacyAntdTheme : antdTheme,\n };\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 cssIsolation: RuntimeCssIsolation,\n) => {\n const antdOptions = getAntdRuntimeOptions(cssIsolation);\n return {\n locale: zhCN,\n prefixCls: antdOptions.prefixCls,\n iconPrefixCls: antdOptions.iconPrefixCls,\n theme: antdOptions.theme,\n ...(usesLegacyCssIsolation(cssIsolation)\n ? {\n getPopupContainer: overlayContainer.getPopupContainer,\n getTargetContainer: overlayContainer.getTargetContainer,\n }\n : {}),\n };\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 getAntdMessageProxyState = (): AntdMessageProxyState => {\n const globalScope = globalThis as typeof globalThis & {\n [MESSAGE_PROXY_GLOBAL]?: AntdMessageProxyState;\n };\n if (!globalScope[MESSAGE_PROXY_GLOBAL]) {\n globalScope[MESSAGE_PROXY_GLOBAL] = {\n apiStack: [],\n installed: false,\n originalMethods: {},\n };\n }\n return globalScope[MESSAGE_PROXY_GLOBAL];\n};\n\nconst installAntdMessageProxy = () => {\n const state = getAntdMessageProxyState();\n if (state.installed) return state;\n MESSAGE_METHODS.forEach((method) => {\n const originalMethod = (message as unknown as Record<string, unknown>)[method];\n if (typeof originalMethod !== \"function\") return;\n state.originalMethods[method] = originalMethod.bind(message) as (\n ...args: unknown[]\n ) => unknown;\n (message as unknown as Record<string, unknown>)[method] = (\n ...args: unknown[]\n ) => {\n const api = state.apiStack.at(-1);\n const apiMethod = api?.[method];\n if (typeof apiMethod === \"function\") {\n return apiMethod(...args);\n }\n return state.originalMethods[method]?.(...args);\n };\n });\n state.installed = true;\n return state;\n};\n\nconst registerAntdMessageApi = (api: Record<string, unknown>) => {\n const state = installAntdMessageProxy();\n state.apiStack.push(api);\n return () => {\n const position = state.apiStack.lastIndexOf(api);\n if (position >= 0) {\n state.apiStack.splice(position, 1);\n }\n };\n};\n\nconst installRuntimePortalContainer = (\n el: HTMLElement,\n cssIsolation: RuntimeCssIsolation,\n): RuntimePortalHandle => {\n const globalScope = globalThis as typeof globalThis & {\n [PORTAL_CONTAINER_STACK_GLOBAL]?: HTMLElement[];\n [PORTAL_CONTAINER_RESOLVER_GLOBAL]?: () => HTMLElement;\n };\n const portalContainer = usesLegacyCssIsolation(cssIsolation)\n ? createPortalContainer(el)\n : null;\n const stack = Array.isArray(globalScope[PORTAL_CONTAINER_STACK_GLOBAL])\n ? globalScope[PORTAL_CONTAINER_STACK_GLOBAL]\n : [];\n const stackTarget = portalContainer ?? el.ownerDocument?.body ?? document.body;\n stack.push(stackTarget);\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(stackTarget);\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 cssIsolation: RuntimeCssIsolation,\n) => {\n installAntdMessageProxy();\n const antdOptions = getAntdRuntimeOptions(cssIsolation);\n const getMessageContainer = () => {\n if (portalContainer?.isConnected) return portalContainer;\n return usesLegacyCssIsolation(cssIsolation) ? getRuntimeRoot(el) : document.body;\n };\n\n ConfigProvider.config({\n prefixCls: antdOptions.prefixCls,\n iconPrefixCls: antdOptions.iconPrefixCls,\n theme: antdOptions.theme,\n holderRender: (children) => {\n if (!el.isConnected) {\n return (\n <ConfigProvider\n prefixCls={antdOptions.prefixCls}\n iconPrefixCls={antdOptions.iconPrefixCls}\n theme={antdOptions.theme}\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, cssIsolation)}>\n {children}\n </ConfigProvider>\n </StyleProvider>\n );\n },\n });\n message.config({\n prefixCls: antdOptions.messagePrefixCls,\n getContainer: getMessageContainer,\n });\n};\n\nconst RuntimeMessageBridge = ({ children }: { children: React.ReactNode }) => {\n const appContext = AntdApp.useApp();\n React.useLayoutEffect(() => {\n return registerAntdMessageApi(\n appContext.message as unknown as Record<string, unknown>,\n );\n }, [appContext.message]);\n return <>{children}</>;\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 let currentCssIsolation: RuntimeCssIsolation | null = null;\n\n const render = (el: HTMLElement, context: PageContext) => {\n const cssIsolation = getRuntimeCssIsolation(context);\n if (usesLegacyCssIsolation(cssIsolation)) {\n el.classList.add(NAMESPACE_ROOT_CLASS);\n } else {\n el.classList.remove(NAMESPACE_ROOT_CLASS);\n }\n if (\n !root ||\n currentContainer !== el ||\n currentCssIsolation !== cssIsolation ||\n (usesLegacyCssIsolation(cssIsolation) && !portalContainer?.isConnected)\n ) {\n root?.unmount();\n releasePortalContainer?.();\n root = createRuntimeRoot(el);\n currentContainer = el;\n currentCssIsolation = cssIsolation;\n const portalHandle = installRuntimePortalContainer(el, cssIsolation);\n portalContainer = portalHandle.container;\n releasePortalContainer = portalHandle.release;\n }\n const overlayContainer = getRuntimeOverlayContainer(el, portalContainer);\n installAntdStaticHolder(el, portalContainer, cssIsolation);\n const antdConfig = createAntdConfig(overlayContainer, cssIsolation);\n\n root.render(\n <StyleProvider hashPriority=\"high\" container={getStyleContainer(el)}>\n <ConfigProvider {...antdConfig}>\n <AntdApp>\n <RuntimeMessageBridge>\n <PageProvider context={context}>\n <AppComponent />\n </PageProvider>\n </RuntimeMessageBridge>\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 currentCssIsolation = 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\nconst baseTheme = {\n hashed: false,\n token: {\n colorPrimary: '#1677ff',\n colorInfo: '#1677ff',\n colorSuccess: '#52c41a',\n colorWarning: '#faad14',\n colorError: '#ff4d4f',\n colorText: 'rgba(0,0,0,0.88)',\n colorTextSecondary: 'rgba(0,0,0,0.65)',\n colorTextTertiary: 'rgba(0,0,0,0.45)',\n colorTextDisabled: 'rgba(0,0,0,0.25)',\n colorBgContainer: '#ffffff',\n colorBgLayout: '#f5f5f5',\n colorBgElevated: '#ffffff',\n colorBorder: '#d9d9d9',\n colorBorderSecondary: '#f0f0f0',\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} satisfies ThemeConfig;\n\nexport const antdTheme: ThemeConfig = {\n ...baseTheme,\n cssVar: { prefix: 'ant' },\n};\n\nexport const legacyAntdTheme: ThemeConfig = {\n ...baseTheme,\n cssVar: { prefix: 'sy-ant' },\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":["import_react","import_client","import_react","import_jsx_runtime","zhCN","AntdApp","React","import_react","import_react","response","import_react"]}
@@ -742,6 +742,15 @@ interface ConnectorInvokeResult<TResult = unknown> {
742
742
  }
743
743
  interface ConnectorCallParams<TBody = unknown> extends Omit<ConnectorInvokeParams<TBody>, "connector" | "api"> {
744
744
  }
745
+ interface AuthLogoutRedirectOptions {
746
+ loginUrl?: string;
747
+ callbackUrl?: string;
748
+ callbackParamName?: string;
749
+ replace?: boolean;
750
+ continueOnLogoutError?: boolean;
751
+ fallback?: "reload" | "none";
752
+ redirect?: (url: string) => void;
753
+ }
745
754
  interface PageSdk {
746
755
  context: PageContext;
747
756
  request<TResult = unknown, TRaw = TResult>(options: PageRequestOptions): Promise<PageApiResponse<TResult, TRaw>>;
@@ -750,6 +759,10 @@ interface PageSdk {
750
759
  request<TResult = unknown, TRaw = TResult>(options: PageRequestOptions): Promise<PageApiResponse<TResult, TRaw>>;
751
760
  download(options: PageRequestOptions): Promise<PageBinaryResponse>;
752
761
  };
762
+ auth: {
763
+ logout<T = boolean>(): Promise<PageApiResponse<T>>;
764
+ logoutAndRedirect<T = boolean>(options?: AuthLogoutRedirectOptions): Promise<PageApiResponse<T> | null>;
765
+ };
753
766
  connector: {
754
767
  invoke<TResult = unknown, TBody = unknown>(params: ConnectorInvokeParams<TBody>): Promise<PageApiResponse<ConnectorInvokeResult<TResult>>>;
755
768
  call<TResult = unknown, TBody = unknown>(name: string, params?: ConnectorCallParams<TBody>): Promise<PageApiResponse<ConnectorInvokeResult<TResult>>>;
@@ -948,4 +961,4 @@ declare const usePageRoute: () => PageRouteInfo;
948
961
 
949
962
  declare const usePageSdk: () => PageSdk;
950
963
 
951
- export { type ApiPermissionListParams, type ApproveTaskParams, type AssignPermissionsParams, type AssignRolesParams, type BatchAddUsersToRoleParams, type BatchSendNotificationByTypeParams, type ChangeUserRoleParams, type ConnectorCallParams, type ConnectorInvokeParams, type ConnectorInvokeResult, type ConnectorRequestBodyType, type ConnectorResponseType, type CreateApiPermissionParams, type CreateFormPermissionGroupDto, type CreatePagePermissionGroupDto, type CreateRoleParams, type CreateUiPermissionParams, type CreateUserParams, type CurrentUserDepartmentParents, type CustomPageEntryConfig, type CustomPageEntryMode, type DataManagementConfigParams, type DataManagementFilterState, type DataPermissionConditionDto, type DataPermissionDto, type DataPermissionRuleDto, type DataViewQueryParams, type DataViewQueryResult, type FieldPermissionDto, type FindNotificationConfigParams, type FormAdvancedSearchParams, type FormChangeRecordParams, type FormCreateParams, type FormExportParams, type FormGetDetailParams, type FormImportParams, type FormPermissionGroup, type FormRemoveParams, type FormSearchParams, type FormUpdateParams, type GetParentDepartmentsOptions, type GetProcessInstanceParams, type GetUserRolesParams, type ImportExportRecordDownloadParams, type ImportExportRecordQuery, type InstanceStatus, type NotificationChannel, type NotificationChannelConfig, type NotificationChannelsConfig, type NotificationConfigLevel, type NotificationMessageRecord, type NotificationTemplate, type NotificationTemplatePreview, type NotificationTypeConfig, type PageApiPermissionRecord, type PageApiResponse, type PageAppInfo, type PageBinaryResponse, type PageBridgeApi, type PageContext, type PageDataManagementConfig, type PageDataSourceDescriptor, type PageDepartmentInfo, type PageDepartmentRecord, type PageHttpMethod, type PageInfo, type PageListResult, type PageMessageApi, type PageModalApi, type PageNavigationApi, type PageOffsetListResult, type PagePermissionGroup, type PagePermissionInfo, PageProvider, type PageQueryValue, type PageRequestOptions, type PageRoleRecord, type PageRouteInfo, type PageScope, type PageSdk, type PageSdkError, type PageSdkMeta, type PageTransportDownloadPayload, type PageTransportRequestPayload, type PageUiPermissionRecord, type PageUiPermissionType, type PageUserInfo, type PageUserRecord, type PageUserType, type PreviewNotificationTemplateParams, type ProcessApproveAction, type QueryFormPermissionGroupDto, type QueryPagePermissionGroupDto, type RoleListParams, type RoleUsersParams, type SaveDataManagementConfigParams, type SearchComponentName, type SearchExpression, type SearchFieldKey, type SearchGroup, type SearchLogic, type SearchOperator, type SearchRule, type SearchSortItem, type SearchSystemField, type SendNotificationByTypeParams, type SendNotificationResult, type SubFormRule, type SwitchAppRoleParams, type SwitchPlatformRoleParams, type TerminateProcessInstanceParams, type TriggerCallbackTaskParams, type UiPermissionListParams, type UpdateApiPermissionParams, type UpdateFormPermissionGroupDto, type UpdatePagePermissionGroupDto, type UpdateRoleParams, type UpdateUiPermissionParams, type UpdateUserParams, type UserListParams, type UserMenuPermissionsResponse, type ValidateUserParams, type ViewFieldPermissionValue, type ViewOperationPermission, type ViewPermissionSummary, createPageSdk, createReactPage, useCurrentUser, useDataSource, useFormViewPermissions, useMessage, useModal, useNavigation, usePageContext, usePageProps, usePageRoute, usePageSdk };
964
+ export { type ApiPermissionListParams, type ApproveTaskParams, type AssignPermissionsParams, type AssignRolesParams, type AuthLogoutRedirectOptions, type BatchAddUsersToRoleParams, type BatchSendNotificationByTypeParams, type ChangeUserRoleParams, type ConnectorCallParams, type ConnectorInvokeParams, type ConnectorInvokeResult, type ConnectorRequestBodyType, type ConnectorResponseType, type CreateApiPermissionParams, type CreateFormPermissionGroupDto, type CreatePagePermissionGroupDto, type CreateRoleParams, type CreateUiPermissionParams, type CreateUserParams, type CurrentUserDepartmentParents, type CustomPageEntryConfig, type CustomPageEntryMode, type DataManagementConfigParams, type DataManagementFilterState, type DataPermissionConditionDto, type DataPermissionDto, type DataPermissionRuleDto, type DataViewQueryParams, type DataViewQueryResult, type FieldPermissionDto, type FindNotificationConfigParams, type FormAdvancedSearchParams, type FormChangeRecordParams, type FormCreateParams, type FormExportParams, type FormGetDetailParams, type FormImportParams, type FormPermissionGroup, type FormRemoveParams, type FormSearchParams, type FormUpdateParams, type GetParentDepartmentsOptions, type GetProcessInstanceParams, type GetUserRolesParams, type ImportExportRecordDownloadParams, type ImportExportRecordQuery, type InstanceStatus, type NotificationChannel, type NotificationChannelConfig, type NotificationChannelsConfig, type NotificationConfigLevel, type NotificationMessageRecord, type NotificationTemplate, type NotificationTemplatePreview, type NotificationTypeConfig, type PageApiPermissionRecord, type PageApiResponse, type PageAppInfo, type PageBinaryResponse, type PageBridgeApi, type PageContext, type PageDataManagementConfig, type PageDataSourceDescriptor, type PageDepartmentInfo, type PageDepartmentRecord, type PageHttpMethod, type PageInfo, type PageListResult, type PageMessageApi, type PageModalApi, type PageNavigationApi, type PageOffsetListResult, type PagePermissionGroup, type PagePermissionInfo, PageProvider, type PageQueryValue, type PageRequestOptions, type PageRoleRecord, type PageRouteInfo, type PageScope, type PageSdk, type PageSdkError, type PageSdkMeta, type PageTransportDownloadPayload, type PageTransportRequestPayload, type PageUiPermissionRecord, type PageUiPermissionType, type PageUserInfo, type PageUserRecord, type PageUserType, type PreviewNotificationTemplateParams, type ProcessApproveAction, type QueryFormPermissionGroupDto, type QueryPagePermissionGroupDto, type RoleListParams, type RoleUsersParams, type SaveDataManagementConfigParams, type SearchComponentName, type SearchExpression, type SearchFieldKey, type SearchGroup, type SearchLogic, type SearchOperator, type SearchRule, type SearchSortItem, type SearchSystemField, type SendNotificationByTypeParams, type SendNotificationResult, type SubFormRule, type SwitchAppRoleParams, type SwitchPlatformRoleParams, type TerminateProcessInstanceParams, type TriggerCallbackTaskParams, type UiPermissionListParams, type UpdateApiPermissionParams, type UpdateFormPermissionGroupDto, type UpdatePagePermissionGroupDto, type UpdateRoleParams, type UpdateUiPermissionParams, type UpdateUserParams, type UserListParams, type UserMenuPermissionsResponse, type ValidateUserParams, type ViewFieldPermissionValue, type ViewOperationPermission, type ViewPermissionSummary, createPageSdk, createReactPage, useCurrentUser, useDataSource, useFormViewPermissions, useMessage, useModal, useNavigation, usePageContext, usePageProps, usePageRoute, usePageSdk };