openxiangda 1.0.39 → 1.0.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/openxiangda-skills/SKILL.md +6 -3
- package/openxiangda-skills/references/best-practices.md +29 -5
- package/openxiangda-skills/references/component-guide.md +79 -45
- package/openxiangda-skills/references/forms/component-registry.md +33 -1
- package/openxiangda-skills/skills/openxiangda-core/SKILL.md +2 -2
- package/openxiangda-skills/skills/openxiangda-form/SKILL.md +9 -2
- package/openxiangda-skills/skills/openxiangda-page/SKILL.md +5 -3
- package/package.json +1 -1
- package/packages/sdk/dist/runtime/index.cjs +546 -0
- package/packages/sdk/dist/runtime/index.cjs.map +1 -1
- package/packages/sdk/dist/runtime/index.mjs +546 -0
- package/packages/sdk/dist/runtime/index.mjs.map +1 -1
- package/packages/sdk/src/build-source/scripts/build-forms.mjs +5 -1
- package/templates/sy-lowcode-app-workspace/.cursor/rules/openxiangda-form.mdc +4 -0
- package/templates/sy-lowcode-app-workspace/.cursor/rules/openxiangda-page.mdc +2 -0
- package/templates/sy-lowcode-app-workspace/.cursor/rules/openxiangda.mdc +3 -0
- package/templates/sy-lowcode-app-workspace/.qoder/rules/openxiangda-form.md +4 -0
- package/templates/sy-lowcode-app-workspace/.qoder/rules/openxiangda-page.md +2 -0
- package/templates/sy-lowcode-app-workspace/.qoder/rules/openxiangda.md +3 -0
- package/templates/sy-lowcode-app-workspace/AGENTS.md +5 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/README.md +8 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/catalog.json +32 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/decision-guide.md +20 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/design-style.md +48 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/glass-home-dashboard/App.tsx +8 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/glass-home-dashboard/GlassHomeDashboard.tsx +232 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/glass-home-dashboard/index.tsx +10 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/glass-home-dashboard/page.config.ts +14 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/glass-home-dashboard/styles.css +196 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/mint-analytics-dashboard/App.tsx +8 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/mint-analytics-dashboard/MintAnalyticsDashboard.tsx +279 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/mint-analytics-dashboard/index.tsx +10 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/mint-analytics-dashboard/page.config.ts +14 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/mint-analytics-dashboard/styles.css +163 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/ops-monitor-dashboard/App.tsx +8 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/ops-monitor-dashboard/OpsMonitorDashboard.tsx +306 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/ops-monitor-dashboard/index.tsx +10 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/ops-monitor-dashboard/page.config.ts +14 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/ops-monitor-dashboard/styles.css +248 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/work-order-list-drawer/App.tsx +8 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/work-order-list-drawer/WorkOrderListDrawerPage.tsx +371 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/work-order-list-drawer/index.tsx +10 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/work-order-list-drawer/page.config.ts +14 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/pages/work-order-list-drawer/styles.css +182 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/shared/components/admin-ui-templates/DashboardPrimitives.tsx +832 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/shared/components/admin-ui-templates/chartOptions.ts +140 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/shared/components/admin-ui-templates/sampleData.ts +466 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/shared/components/admin-ui-templates/styles.css +874 -0
- package/templates/sy-lowcode-app-workspace/examples/best-practices/src/shared/components/admin-ui-templates/types.ts +150 -0
- package/templates/sy-lowcode-app-workspace/src/forms/README.md +4 -0
- package/templates/sy-lowcode-app-workspace/src/main.tsx +4 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/runtime/core/client.ts","../../src/runtime/react/createReactPage.tsx","../../src/runtime/react/provider.tsx","../../src/runtime/react/store.ts","../../src/styles/antd-theme.ts","../../src/runtime/react/hooks/useCurrentUser.ts","../../src/runtime/react/hooks/usePageContext.ts","../../src/runtime/react/hooks/useDataSource.ts","../../src/runtime/react/hooks/usePageSdk.ts","../../src/runtime/react/hooks/useFormViewPermissions.ts","../../src/runtime/react/hooks/useMessage.ts","../../src/runtime/react/hooks/useModal.ts","../../src/runtime/react/hooks/useNavigation.ts","../../src/runtime/react/hooks/usePageProps.ts","../../src/runtime/react/hooks/usePageRoute.ts"],"sourcesContent":["import type {\n ApiPermissionListParams,\n 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 DataViewStatsParams,\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 stats: <T = unknown>(code: string, params: DataViewStatsParams = {}) => {\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)}/stats.json`,\n ),\n method: \"post\",\n body: {\n fields: params.fields,\n filters: serializeSearchExpression(params.filters),\n having: serializeSearchExpression(params.having),\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 case \"dataView.stats\": {\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 having: mergeSearchExpressions(\n descriptor.defaultHaving || descriptor.having,\n runtimeParams.having as SearchExpression | string | undefined,\n ),\n } as unknown as DataViewStatsParams\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 if (descriptor.type === \"dataView.stats\") {\n return dataView.stats<TResult>(\n dataViewCode,\n queryParams,\n ) as unknown as Promise<PageApiResponse<TResult, TRaw>>\n }\n delete (queryParams as Record<string, unknown>).having\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":["React","jsx","React","useMemo","useMemo","response","useCallback","useEffect","useMemo","useState","useState","useCallback","useEffect","useMemo"]}
|
|
1
|
+
{"version":3,"sources":["../../src/runtime/core/client.ts","../../src/runtime/react/createReactPage.tsx","../../../../node_modules/dayjs/esm/constant.js","../../../../node_modules/dayjs/esm/locale/en.js","../../../../node_modules/dayjs/esm/utils.js","../../../../node_modules/dayjs/esm/index.js","../../../../node_modules/dayjs/esm/locale/zh-cn.js","../../src/runtime/react/provider.tsx","../../src/runtime/react/store.ts","../../src/styles/antd-theme.ts","../../src/runtime/react/hooks/useCurrentUser.ts","../../src/runtime/react/hooks/usePageContext.ts","../../src/runtime/react/hooks/useDataSource.ts","../../src/runtime/react/hooks/usePageSdk.ts","../../src/runtime/react/hooks/useFormViewPermissions.ts","../../src/runtime/react/hooks/useMessage.ts","../../src/runtime/react/hooks/useModal.ts","../../src/runtime/react/hooks/useNavigation.ts","../../src/runtime/react/hooks/usePageProps.ts","../../src/runtime/react/hooks/usePageRoute.ts"],"sourcesContent":["import type {\n ApiPermissionListParams,\n 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 DataViewStatsParams,\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 stats: <T = unknown>(code: string, params: DataViewStatsParams = {}) => {\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)}/stats.json`,\n ),\n method: \"post\",\n body: {\n fields: params.fields,\n filters: serializeSearchExpression(params.filters),\n having: serializeSearchExpression(params.having),\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 case \"dataView.stats\": {\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 having: mergeSearchExpressions(\n descriptor.defaultHaving || descriptor.having,\n runtimeParams.having as SearchExpression | string | undefined,\n ),\n } as unknown as DataViewStatsParams\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 if (descriptor.type === \"dataView.stats\") {\n return dataView.stats<TResult>(\n dataViewCode,\n queryParams,\n ) as unknown as Promise<PageApiResponse<TResult, TRaw>>\n }\n delete (queryParams as Record<string, unknown>).having\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 dayjs from \"dayjs\";\nimport \"dayjs/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\ndayjs.locale(\"zh-cn\");\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 locale={zhCN}\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","export var SECONDS_A_MINUTE = 60;\nexport var SECONDS_A_HOUR = SECONDS_A_MINUTE * 60;\nexport var SECONDS_A_DAY = SECONDS_A_HOUR * 24;\nexport var SECONDS_A_WEEK = SECONDS_A_DAY * 7;\nexport var MILLISECONDS_A_SECOND = 1e3;\nexport var MILLISECONDS_A_MINUTE = SECONDS_A_MINUTE * MILLISECONDS_A_SECOND;\nexport var MILLISECONDS_A_HOUR = SECONDS_A_HOUR * MILLISECONDS_A_SECOND;\nexport var MILLISECONDS_A_DAY = SECONDS_A_DAY * MILLISECONDS_A_SECOND;\nexport var MILLISECONDS_A_WEEK = SECONDS_A_WEEK * MILLISECONDS_A_SECOND; // English locales\n\nexport var MS = 'millisecond';\nexport var S = 'second';\nexport var MIN = 'minute';\nexport var H = 'hour';\nexport var D = 'day';\nexport var W = 'week';\nexport var M = 'month';\nexport var Q = 'quarter';\nexport var Y = 'year';\nexport var DATE = 'date';\nexport var FORMAT_DEFAULT = 'YYYY-MM-DDTHH:mm:ssZ';\nexport var INVALID_DATE_STRING = 'Invalid Date'; // regex\n\nexport var REGEX_PARSE = /^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/;\nexport var REGEX_FORMAT = /\\[([^\\]]+)]|YYYY|YY|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g;","// English [en]\n// We don't need weekdaysShort, weekdaysMin, monthsShort in en.js locale\nexport default {\n name: 'en',\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),\n ordinal: function ordinal(n) {\n var s = ['th', 'st', 'nd', 'rd'];\n var v = n % 100;\n return \"[\" + n + (s[(v - 20) % 10] || s[v] || s[0]) + \"]\";\n }\n};","import * as C from './constant';\n\nvar padStart = function padStart(string, length, pad) {\n var s = String(string);\n if (!s || s.length >= length) return string;\n return \"\" + Array(length + 1 - s.length).join(pad) + string;\n};\n\nvar padZoneStr = function padZoneStr(instance) {\n var negMinutes = -instance.utcOffset();\n var minutes = Math.abs(negMinutes);\n var hourOffset = Math.floor(minutes / 60);\n var minuteOffset = minutes % 60;\n return \"\" + (negMinutes <= 0 ? '+' : '-') + padStart(hourOffset, 2, '0') + \":\" + padStart(minuteOffset, 2, '0');\n};\n\nvar monthDiff = function monthDiff(a, b) {\n // function from moment.js in order to keep the same result\n if (a.date() < b.date()) return -monthDiff(b, a);\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month());\n var anchor = a.clone().add(wholeMonthDiff, C.M);\n var c = b - anchor < 0;\n var anchor2 = a.clone().add(wholeMonthDiff + (c ? -1 : 1), C.M);\n return +(-(wholeMonthDiff + (b - anchor) / (c ? anchor - anchor2 : anchor2 - anchor)) || 0);\n};\n\nvar absFloor = function absFloor(n) {\n return n < 0 ? Math.ceil(n) || 0 : Math.floor(n);\n};\n\nvar prettyUnit = function prettyUnit(u) {\n var special = {\n M: C.M,\n y: C.Y,\n w: C.W,\n d: C.D,\n D: C.DATE,\n h: C.H,\n m: C.MIN,\n s: C.S,\n ms: C.MS,\n Q: C.Q\n };\n return special[u] || String(u || '').toLowerCase().replace(/s$/, '');\n};\n\nvar isUndefined = function isUndefined(s) {\n return s === undefined;\n};\n\nexport default {\n s: padStart,\n z: padZoneStr,\n m: monthDiff,\n a: absFloor,\n p: prettyUnit,\n u: isUndefined\n};","import * as C from './constant';\nimport en from './locale/en';\nimport U from './utils';\nvar L = 'en'; // global locale\n\nvar Ls = {}; // global loaded locale\n\nLs[L] = en;\nvar IS_DAYJS = '$isDayjsObject'; // eslint-disable-next-line no-use-before-define\n\nvar isDayjs = function isDayjs(d) {\n return d instanceof Dayjs || !!(d && d[IS_DAYJS]);\n};\n\nvar parseLocale = function parseLocale(preset, object, isLocal) {\n var l;\n if (!preset) return L;\n\n if (typeof preset === 'string') {\n var presetLower = preset.toLowerCase();\n\n if (Ls[presetLower]) {\n l = presetLower;\n }\n\n if (object) {\n Ls[presetLower] = object;\n l = presetLower;\n }\n\n var presetSplit = preset.split('-');\n\n if (!l && presetSplit.length > 1) {\n return parseLocale(presetSplit[0]);\n }\n } else {\n var name = preset.name;\n Ls[name] = preset;\n l = name;\n }\n\n if (!isLocal && l) L = l;\n return l || !isLocal && L;\n};\n\nvar dayjs = function dayjs(date, c) {\n if (isDayjs(date)) {\n return date.clone();\n } // eslint-disable-next-line no-nested-ternary\n\n\n var cfg = typeof c === 'object' ? c : {};\n cfg.date = date;\n cfg.args = arguments; // eslint-disable-line prefer-rest-params\n\n return new Dayjs(cfg); // eslint-disable-line no-use-before-define\n};\n\nvar wrapper = function wrapper(date, instance) {\n return dayjs(date, {\n locale: instance.$L,\n utc: instance.$u,\n x: instance.$x,\n $offset: instance.$offset // todo: refactor; do not use this.$offset in you code\n\n });\n};\n\nvar Utils = U; // for plugin use\n\nUtils.l = parseLocale;\nUtils.i = isDayjs;\nUtils.w = wrapper;\n\nvar parseDate = function parseDate(cfg) {\n var date = cfg.date,\n utc = cfg.utc;\n if (date === null) return new Date(NaN); // null is invalid\n\n if (Utils.u(date)) return new Date(); // today\n\n if (date instanceof Date) return new Date(date);\n\n if (typeof date === 'string' && !/Z$/i.test(date)) {\n var d = date.match(C.REGEX_PARSE);\n\n if (d) {\n var m = d[2] - 1 || 0;\n var ms = (d[7] || '0').substring(0, 3);\n\n if (utc) {\n return new Date(Date.UTC(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms));\n }\n\n return new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms);\n }\n }\n\n return new Date(date); // everything else\n};\n\nvar Dayjs = /*#__PURE__*/function () {\n function Dayjs(cfg) {\n this.$L = parseLocale(cfg.locale, null, true);\n this.parse(cfg); // for plugin\n\n this.$x = this.$x || cfg.x || {};\n this[IS_DAYJS] = true;\n }\n\n var _proto = Dayjs.prototype;\n\n _proto.parse = function parse(cfg) {\n this.$d = parseDate(cfg);\n this.init();\n };\n\n _proto.init = function init() {\n var $d = this.$d;\n this.$y = $d.getFullYear();\n this.$M = $d.getMonth();\n this.$D = $d.getDate();\n this.$W = $d.getDay();\n this.$H = $d.getHours();\n this.$m = $d.getMinutes();\n this.$s = $d.getSeconds();\n this.$ms = $d.getMilliseconds();\n } // eslint-disable-next-line class-methods-use-this\n ;\n\n _proto.$utils = function $utils() {\n return Utils;\n };\n\n _proto.isValid = function isValid() {\n return !(this.$d.toString() === C.INVALID_DATE_STRING);\n };\n\n _proto.isSame = function isSame(that, units) {\n var other = dayjs(that);\n return this.startOf(units) <= other && other <= this.endOf(units);\n };\n\n _proto.isAfter = function isAfter(that, units) {\n return dayjs(that) < this.startOf(units);\n };\n\n _proto.isBefore = function isBefore(that, units) {\n return this.endOf(units) < dayjs(that);\n };\n\n _proto.$g = function $g(input, get, set) {\n if (Utils.u(input)) return this[get];\n return this.set(set, input);\n };\n\n _proto.unix = function unix() {\n return Math.floor(this.valueOf() / 1000);\n };\n\n _proto.valueOf = function valueOf() {\n // timezone(hour) * 60 * 60 * 1000 => ms\n return this.$d.getTime();\n };\n\n _proto.startOf = function startOf(units, _startOf) {\n var _this = this;\n\n // startOf -> endOf\n var isStartOf = !Utils.u(_startOf) ? _startOf : true;\n var unit = Utils.p(units);\n\n var instanceFactory = function instanceFactory(d, m) {\n var ins = Utils.w(_this.$u ? Date.UTC(_this.$y, m, d) : new Date(_this.$y, m, d), _this);\n return isStartOf ? ins : ins.endOf(C.D);\n };\n\n var instanceFactorySet = function instanceFactorySet(method, slice) {\n var argumentStart = [0, 0, 0, 0];\n var argumentEnd = [23, 59, 59, 999];\n return Utils.w(_this.toDate()[method].apply( // eslint-disable-line prefer-spread\n _this.toDate('s'), (isStartOf ? argumentStart : argumentEnd).slice(slice)), _this);\n };\n\n var $W = this.$W,\n $M = this.$M,\n $D = this.$D;\n var utcPad = \"set\" + (this.$u ? 'UTC' : '');\n\n switch (unit) {\n case C.Y:\n return isStartOf ? instanceFactory(1, 0) : instanceFactory(31, 11);\n\n case C.M:\n return isStartOf ? instanceFactory(1, $M) : instanceFactory(0, $M + 1);\n\n case C.W:\n {\n var weekStart = this.$locale().weekStart || 0;\n var gap = ($W < weekStart ? $W + 7 : $W) - weekStart;\n return instanceFactory(isStartOf ? $D - gap : $D + (6 - gap), $M);\n }\n\n case C.D:\n case C.DATE:\n return instanceFactorySet(utcPad + \"Hours\", 0);\n\n case C.H:\n return instanceFactorySet(utcPad + \"Minutes\", 1);\n\n case C.MIN:\n return instanceFactorySet(utcPad + \"Seconds\", 2);\n\n case C.S:\n return instanceFactorySet(utcPad + \"Milliseconds\", 3);\n\n default:\n return this.clone();\n }\n };\n\n _proto.endOf = function endOf(arg) {\n return this.startOf(arg, false);\n };\n\n _proto.$set = function $set(units, _int) {\n var _C$D$C$DATE$C$M$C$Y$C;\n\n // private set\n var unit = Utils.p(units);\n var utcPad = \"set\" + (this.$u ? 'UTC' : '');\n var name = (_C$D$C$DATE$C$M$C$Y$C = {}, _C$D$C$DATE$C$M$C$Y$C[C.D] = utcPad + \"Date\", _C$D$C$DATE$C$M$C$Y$C[C.DATE] = utcPad + \"Date\", _C$D$C$DATE$C$M$C$Y$C[C.M] = utcPad + \"Month\", _C$D$C$DATE$C$M$C$Y$C[C.Y] = utcPad + \"FullYear\", _C$D$C$DATE$C$M$C$Y$C[C.H] = utcPad + \"Hours\", _C$D$C$DATE$C$M$C$Y$C[C.MIN] = utcPad + \"Minutes\", _C$D$C$DATE$C$M$C$Y$C[C.S] = utcPad + \"Seconds\", _C$D$C$DATE$C$M$C$Y$C[C.MS] = utcPad + \"Milliseconds\", _C$D$C$DATE$C$M$C$Y$C)[unit];\n var arg = unit === C.D ? this.$D + (_int - this.$W) : _int;\n\n if (unit === C.M || unit === C.Y) {\n // clone is for badMutable plugin\n var date = this.clone().set(C.DATE, 1);\n date.$d[name](arg);\n date.init();\n this.$d = date.set(C.DATE, Math.min(this.$D, date.daysInMonth())).$d;\n } else if (name) this.$d[name](arg);\n\n this.init();\n return this;\n };\n\n _proto.set = function set(string, _int2) {\n return this.clone().$set(string, _int2);\n };\n\n _proto.get = function get(unit) {\n return this[Utils.p(unit)]();\n };\n\n _proto.add = function add(number, units) {\n var _this2 = this,\n _C$MIN$C$H$C$S$unit;\n\n number = Number(number); // eslint-disable-line no-param-reassign\n\n var unit = Utils.p(units);\n\n var instanceFactorySet = function instanceFactorySet(n) {\n var d = dayjs(_this2);\n return Utils.w(d.date(d.date() + Math.round(n * number)), _this2);\n };\n\n if (unit === C.M) {\n return this.set(C.M, this.$M + number);\n }\n\n if (unit === C.Y) {\n return this.set(C.Y, this.$y + number);\n }\n\n if (unit === C.D) {\n return instanceFactorySet(1);\n }\n\n if (unit === C.W) {\n return instanceFactorySet(7);\n }\n\n var step = (_C$MIN$C$H$C$S$unit = {}, _C$MIN$C$H$C$S$unit[C.MIN] = C.MILLISECONDS_A_MINUTE, _C$MIN$C$H$C$S$unit[C.H] = C.MILLISECONDS_A_HOUR, _C$MIN$C$H$C$S$unit[C.S] = C.MILLISECONDS_A_SECOND, _C$MIN$C$H$C$S$unit)[unit] || 1; // ms\n\n var nextTimeStamp = this.$d.getTime() + number * step;\n return Utils.w(nextTimeStamp, this);\n };\n\n _proto.subtract = function subtract(number, string) {\n return this.add(number * -1, string);\n };\n\n _proto.format = function format(formatStr) {\n var _this3 = this;\n\n var locale = this.$locale();\n if (!this.isValid()) return locale.invalidDate || C.INVALID_DATE_STRING;\n var str = formatStr || C.FORMAT_DEFAULT;\n var zoneStr = Utils.z(this);\n var $H = this.$H,\n $m = this.$m,\n $M = this.$M;\n var weekdays = locale.weekdays,\n months = locale.months,\n meridiem = locale.meridiem;\n\n var getShort = function getShort(arr, index, full, length) {\n return arr && (arr[index] || arr(_this3, str)) || full[index].slice(0, length);\n };\n\n var get$H = function get$H(num) {\n return Utils.s($H % 12 || 12, num, '0');\n };\n\n var meridiemFunc = meridiem || function (hour, minute, isLowercase) {\n var m = hour < 12 ? 'AM' : 'PM';\n return isLowercase ? m.toLowerCase() : m;\n };\n\n var matches = function matches(match) {\n switch (match) {\n case 'YY':\n return String(_this3.$y).slice(-2);\n\n case 'YYYY':\n return Utils.s(_this3.$y, 4, '0');\n\n case 'M':\n return $M + 1;\n\n case 'MM':\n return Utils.s($M + 1, 2, '0');\n\n case 'MMM':\n return getShort(locale.monthsShort, $M, months, 3);\n\n case 'MMMM':\n return getShort(months, $M);\n\n case 'D':\n return _this3.$D;\n\n case 'DD':\n return Utils.s(_this3.$D, 2, '0');\n\n case 'd':\n return String(_this3.$W);\n\n case 'dd':\n return getShort(locale.weekdaysMin, _this3.$W, weekdays, 2);\n\n case 'ddd':\n return getShort(locale.weekdaysShort, _this3.$W, weekdays, 3);\n\n case 'dddd':\n return weekdays[_this3.$W];\n\n case 'H':\n return String($H);\n\n case 'HH':\n return Utils.s($H, 2, '0');\n\n case 'h':\n return get$H(1);\n\n case 'hh':\n return get$H(2);\n\n case 'a':\n return meridiemFunc($H, $m, true);\n\n case 'A':\n return meridiemFunc($H, $m, false);\n\n case 'm':\n return String($m);\n\n case 'mm':\n return Utils.s($m, 2, '0');\n\n case 's':\n return String(_this3.$s);\n\n case 'ss':\n return Utils.s(_this3.$s, 2, '0');\n\n case 'SSS':\n return Utils.s(_this3.$ms, 3, '0');\n\n case 'Z':\n return zoneStr;\n // 'ZZ' logic below\n\n default:\n break;\n }\n\n return null;\n };\n\n return str.replace(C.REGEX_FORMAT, function (match, $1) {\n return $1 || matches(match) || zoneStr.replace(':', '');\n }); // 'ZZ'\n };\n\n _proto.utcOffset = function utcOffset() {\n // Because a bug at FF24, we're rounding the timezone offset around 15 minutes\n // https://github.com/moment/moment/pull/1871\n return -Math.round(this.$d.getTimezoneOffset() / 15) * 15;\n };\n\n _proto.diff = function diff(input, units, _float) {\n var _this4 = this;\n\n var unit = Utils.p(units);\n var that = dayjs(input);\n var zoneDelta = (that.utcOffset() - this.utcOffset()) * C.MILLISECONDS_A_MINUTE;\n var diff = this - that;\n\n var getMonth = function getMonth() {\n return Utils.m(_this4, that);\n };\n\n var result;\n\n switch (unit) {\n case C.Y:\n result = getMonth() / 12;\n break;\n\n case C.M:\n result = getMonth();\n break;\n\n case C.Q:\n result = getMonth() / 3;\n break;\n\n case C.W:\n result = (diff - zoneDelta) / C.MILLISECONDS_A_WEEK;\n break;\n\n case C.D:\n result = (diff - zoneDelta) / C.MILLISECONDS_A_DAY;\n break;\n\n case C.H:\n result = diff / C.MILLISECONDS_A_HOUR;\n break;\n\n case C.MIN:\n result = diff / C.MILLISECONDS_A_MINUTE;\n break;\n\n case C.S:\n result = diff / C.MILLISECONDS_A_SECOND;\n break;\n\n default:\n result = diff; // milliseconds\n\n break;\n }\n\n return _float ? result : Utils.a(result);\n };\n\n _proto.daysInMonth = function daysInMonth() {\n return this.endOf(C.M).$D;\n };\n\n _proto.$locale = function $locale() {\n // get locale object\n return Ls[this.$L];\n };\n\n _proto.locale = function locale(preset, object) {\n if (!preset) return this.$L;\n var that = this.clone();\n var nextLocaleName = parseLocale(preset, object, true);\n if (nextLocaleName) that.$L = nextLocaleName;\n return that;\n };\n\n _proto.clone = function clone() {\n return Utils.w(this.$d, this);\n };\n\n _proto.toDate = function toDate() {\n return new Date(this.valueOf());\n };\n\n _proto.toJSON = function toJSON() {\n return this.isValid() ? this.toISOString() : null;\n };\n\n _proto.toISOString = function toISOString() {\n // ie 8 return\n // new Dayjs(this.valueOf() + this.$d.getTimezoneOffset() * 60000)\n // .format('YYYY-MM-DDTHH:mm:ss.SSS[Z]')\n return this.$d.toISOString();\n };\n\n _proto.toString = function toString() {\n return this.$d.toUTCString();\n };\n\n return Dayjs;\n}();\n\nvar proto = Dayjs.prototype;\ndayjs.prototype = proto;\n[['$ms', C.MS], ['$s', C.S], ['$m', C.MIN], ['$H', C.H], ['$W', C.D], ['$M', C.M], ['$y', C.Y], ['$D', C.DATE]].forEach(function (g) {\n proto[g[1]] = function (input) {\n return this.$g(input, g[0], g[1]);\n };\n});\n\ndayjs.extend = function (plugin, option) {\n if (!plugin.$i) {\n // install plugin only once\n plugin(option, Dayjs, dayjs);\n plugin.$i = true;\n }\n\n return dayjs;\n};\n\ndayjs.locale = parseLocale;\ndayjs.isDayjs = isDayjs;\n\ndayjs.unix = function (timestamp) {\n return dayjs(timestamp * 1e3);\n};\n\ndayjs.en = Ls[L];\ndayjs.Ls = Ls;\ndayjs.p = {};\nexport default dayjs;","// Chinese (China) [zh-cn]\nimport dayjs from '../index';\nvar locale = {\n name: 'zh-cn',\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n ordinal: function ordinal(number, period) {\n switch (period) {\n case 'W':\n return number + \"\\u5468\";\n\n default:\n return number + \"\\u65E5\";\n }\n },\n weekStart: 1,\n yearStart: 4,\n formats: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日Ah点mm分',\n LLLL: 'YYYY年M月D日ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm'\n },\n relativeTime: {\n future: '%s内',\n past: '%s前',\n s: '几秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 小时',\n hh: '%d 小时',\n d: '1 天',\n dd: '%d 天',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 年',\n yy: '%d 年'\n },\n meridiem: function meridiem(hour, minute) {\n var hm = hour * 100 + minute;\n\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1100) {\n return '上午';\n } else if (hm < 1300) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n }\n\n return '晚上';\n }\n};\ndayjs.locale(locale, null, true);\nexport default locale;","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":["dayjs","padStart","padZoneStr","monthDiff","absFloor","prettyUnit","isUndefined","isDayjs","parseLocale","dayjs","wrapper","parseDate","Dayjs","instanceFactory","instanceFactorySet","locale","meridiem","getShort","get$H","matches","diff","getMonth","ordinal","React","jsx","dayjs","React","useMemo","useMemo","response","useCallback","useEffect","useMemo","useState","useState","useCallback","useEffect","useMemo"]}
|