openxiangda 1.0.0

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.
Files changed (121) hide show
  1. package/README.md +58 -0
  2. package/bin/openxiangda.js +11 -0
  3. package/lib/cli.js +2423 -0
  4. package/lib/config.js +121 -0
  5. package/lib/http.js +47 -0
  6. package/lib/skills.js +371 -0
  7. package/lib/utils.js +87 -0
  8. package/lib/workspace-init.js +139 -0
  9. package/openxiangda-skills/SKILL.md +128 -0
  10. package/openxiangda-skills/references/architecture-patterns.md +242 -0
  11. package/openxiangda-skills/references/automation-v3.md +129 -0
  12. package/openxiangda-skills/references/component-guide.md +198 -0
  13. package/openxiangda-skills/references/forms/component-registry.md +53 -0
  14. package/openxiangda-skills/references/forms/form-schema.md +109 -0
  15. package/openxiangda-skills/references/forms/layout-and-rules.md +24 -0
  16. package/openxiangda-skills/references/openxiangda-api.md +466 -0
  17. package/openxiangda-skills/references/pages/page-sdk.md +13 -0
  18. package/openxiangda-skills/references/pages/publish-flow.md +36 -0
  19. package/openxiangda-skills/references/pages/workspace-structure.md +38 -0
  20. package/openxiangda-skills/references/permissions-settings.md +147 -0
  21. package/openxiangda-skills/references/platform-data-model.md +305 -0
  22. package/openxiangda-skills/references/style-system.md +492 -0
  23. package/openxiangda-skills/references/troubleshooting.md +246 -0
  24. package/openxiangda-skills/references/workflow-v3.md +105 -0
  25. package/openxiangda-skills/references/workspace-state.md +45 -0
  26. package/openxiangda-skills/skills/openxiangda-app/SKILL.md +64 -0
  27. package/openxiangda-skills/skills/openxiangda-core/SKILL.md +143 -0
  28. package/openxiangda-skills/skills/openxiangda-form/SKILL.md +76 -0
  29. package/openxiangda-skills/skills/openxiangda-inspect/SKILL.md +40 -0
  30. package/openxiangda-skills/skills/openxiangda-page/SKILL.md +62 -0
  31. package/openxiangda-skills/skills/openxiangda-permission-settings/SKILL.md +95 -0
  32. package/openxiangda-skills/skills/openxiangda-workflow-automation/SKILL.md +97 -0
  33. package/package.json +126 -0
  34. package/packages/sdk/bin/lowcode-workspace.mjs +4 -0
  35. package/packages/sdk/dist/build/index.cjs +33 -0
  36. package/packages/sdk/dist/build/index.cjs.map +1 -0
  37. package/packages/sdk/dist/build/index.d.mts +40 -0
  38. package/packages/sdk/dist/build/index.d.ts +40 -0
  39. package/packages/sdk/dist/build/index.mjs +8 -0
  40. package/packages/sdk/dist/build/index.mjs.map +1 -0
  41. package/packages/sdk/dist/components/index.cjs +18700 -0
  42. package/packages/sdk/dist/components/index.cjs.map +1 -0
  43. package/packages/sdk/dist/components/index.d.mts +2094 -0
  44. package/packages/sdk/dist/components/index.d.ts +2094 -0
  45. package/packages/sdk/dist/components/index.mjs +18649 -0
  46. package/packages/sdk/dist/components/index.mjs.map +1 -0
  47. package/packages/sdk/dist/runtime/index.cjs +1469 -0
  48. package/packages/sdk/dist/runtime/index.cjs.map +1 -0
  49. package/packages/sdk/dist/runtime/index.d.mts +831 -0
  50. package/packages/sdk/dist/runtime/index.d.ts +831 -0
  51. package/packages/sdk/dist/runtime/index.mjs +1420 -0
  52. package/packages/sdk/dist/runtime/index.mjs.map +1 -0
  53. package/packages/sdk/dist/styles/antd-theme.cjs +60 -0
  54. package/packages/sdk/dist/styles/antd-theme.cjs.map +1 -0
  55. package/packages/sdk/dist/styles/antd-theme.d.mts +5 -0
  56. package/packages/sdk/dist/styles/antd-theme.d.ts +5 -0
  57. package/packages/sdk/dist/styles/antd-theme.mjs +35 -0
  58. package/packages/sdk/dist/styles/antd-theme.mjs.map +1 -0
  59. package/packages/sdk/dist/styles/tailwind-preset.cjs +2641 -0
  60. package/packages/sdk/dist/styles/tailwind-preset.cjs.map +1 -0
  61. package/packages/sdk/dist/styles/tailwind-preset.d.mts +75 -0
  62. package/packages/sdk/dist/styles/tailwind-preset.d.ts +75 -0
  63. package/packages/sdk/dist/styles/tailwind-preset.mjs +2618 -0
  64. package/packages/sdk/dist/styles/tailwind-preset.mjs.map +1 -0
  65. package/packages/sdk/dist/styles/tokens.css +73 -0
  66. package/packages/sdk/src/build-source/README.md +9 -0
  67. package/packages/sdk/src/build-source/bin/lowcode-workspace.mjs +7 -0
  68. package/packages/sdk/src/build-source/package.json +34 -0
  69. package/packages/sdk/src/build-source/scripts/build-forms.mjs +824 -0
  70. package/packages/sdk/src/build-source/scripts/build-forms.runtime-entry.test.ts +18 -0
  71. package/packages/sdk/src/build-source/scripts/build-pages.mjs +793 -0
  72. package/packages/sdk/src/build-source/scripts/build-workspace.mjs +64 -0
  73. package/packages/sdk/src/build-source/scripts/publish-all.mjs +127 -0
  74. package/packages/sdk/src/build-source/scripts/publish-oss.mjs +149 -0
  75. package/packages/sdk/src/build-source/scripts/register-bundle.mjs +1 -0
  76. package/packages/sdk/src/build-source/scripts/register.mjs +329 -0
  77. package/packages/sdk/src/build-source/scripts/sync-schema.mjs +301 -0
  78. package/packages/sdk/src/build-source/scripts/utils/form-api.mjs +639 -0
  79. package/packages/sdk/src/build-source/scripts/utils/form-api.test.ts +244 -0
  80. package/packages/sdk/src/build-source/scripts/utils/form-runtime-assets.mjs +57 -0
  81. package/packages/sdk/src/build-source/scripts/utils/form-runtime-assets.test.ts +135 -0
  82. package/packages/sdk/src/build-source/scripts/utils/incremental.mjs +210 -0
  83. package/packages/sdk/src/build-source/scripts/utils/load-config.mjs +257 -0
  84. package/packages/sdk/src/build-source/scripts/utils/load-config.test.ts +44 -0
  85. package/packages/sdk/src/build-source/scripts/utils/mime-types.mjs +70 -0
  86. package/packages/sdk/src/build-source/scripts/utils/namespace-css.mjs +61 -0
  87. package/packages/sdk/src/build-source/scripts/utils/oss-client.mjs +128 -0
  88. package/packages/sdk/src/build-source/scripts/utils/pages.mjs +80 -0
  89. package/packages/sdk/src/build-source/scripts/utils/progress.mjs +57 -0
  90. package/packages/sdk/src/build-source/scripts/utils/register-payload.mjs +89 -0
  91. package/packages/sdk/src/build-source/scripts/utils/register-payload.test.ts +76 -0
  92. package/packages/sdk/src/build-source/scripts/utils/runtime-css-check.mjs +44 -0
  93. package/packages/sdk/src/build-source/scripts/utils/runtime-css-check.test.ts +54 -0
  94. package/packages/sdk/src/build-source/scripts/utils/schema-transform.mjs +130 -0
  95. package/packages/sdk/src/build-source/scripts/utils/schema-transform.test.ts +141 -0
  96. package/packages/sdk/src/build-source/scripts/utils/tailwind-config.mjs +227 -0
  97. package/packages/sdk/src/build-source/scripts/utils/tailwind-config.test.ts +187 -0
  98. package/packages/sdk/src/build-source/src/cli.mjs +679 -0
  99. package/templates/sy-lowcode-app-workspace/app-workspace.config.ts +34 -0
  100. package/templates/sy-lowcode-app-workspace/examples/forms/customer/page.tsx +1 -0
  101. package/templates/sy-lowcode-app-workspace/examples/forms/customer/schema.ts +35 -0
  102. package/templates/sy-lowcode-app-workspace/index.html +12 -0
  103. package/templates/sy-lowcode-app-workspace/package.json +49 -0
  104. package/templates/sy-lowcode-app-workspace/postcss.config.cjs +6 -0
  105. package/templates/sy-lowcode-app-workspace/scripts/build-js-code.mjs +100 -0
  106. package/templates/sy-lowcode-app-workspace/src/dev/App.tsx +26 -0
  107. package/templates/sy-lowcode-app-workspace/src/forms/.gitkeep +1 -0
  108. package/templates/sy-lowcode-app-workspace/src/forms/README.md +48 -0
  109. package/templates/sy-lowcode-app-workspace/src/index.css +28 -0
  110. package/templates/sy-lowcode-app-workspace/src/js-code-nodes/.gitkeep +1 -0
  111. package/templates/sy-lowcode-app-workspace/src/js-code-nodes/types.d.ts +3 -0
  112. package/templates/sy-lowcode-app-workspace/src/main.tsx +36 -0
  113. package/templates/sy-lowcode-app-workspace/src/pages/.gitkeep +1 -0
  114. package/templates/sy-lowcode-app-workspace/src/shared/form-schema.ts +128 -0
  115. package/templates/sy-lowcode-app-workspace/src/types/app-workspace.types.ts +31 -0
  116. package/templates/sy-lowcode-app-workspace/tailwind.config.cjs +30 -0
  117. package/templates/sy-lowcode-app-workspace/tsconfig.app.json +24 -0
  118. package/templates/sy-lowcode-app-workspace/tsconfig.js-code-nodes.json +15 -0
  119. package/templates/sy-lowcode-app-workspace/tsconfig.json +7 -0
  120. package/templates/sy-lowcode-app-workspace/tsconfig.node.json +10 -0
  121. package/templates/sy-lowcode-app-workspace/vite.config.ts +32 -0
@@ -0,0 +1,1469 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // packages/sdk/src/runtime/index.ts
31
+ var runtime_exports = {};
32
+ __export(runtime_exports, {
33
+ PageProvider: () => PageProvider,
34
+ createPageSdk: () => createPageSdk,
35
+ createReactPage: () => createReactPage,
36
+ useCurrentUser: () => useCurrentUser,
37
+ useDataSource: () => useDataSource,
38
+ useFormViewPermissions: () => useFormViewPermissions,
39
+ useMessage: () => useMessage,
40
+ useModal: () => useModal,
41
+ useNavigation: () => useNavigation,
42
+ usePageContext: () => usePageContext,
43
+ usePageProps: () => usePageProps,
44
+ usePageRoute: () => usePageRoute,
45
+ usePageSdk: () => usePageSdk
46
+ });
47
+ module.exports = __toCommonJS(runtime_exports);
48
+
49
+ // packages/sdk/src/runtime/core/client.ts
50
+ var isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
51
+ var isSearchRuleLike = (value) => isRecord(value) && typeof value.key === "string" && (value.componentName === void 0 || typeof value.componentName === "string");
52
+ var isBlobLike = (value) => typeof Blob !== "undefined" && value instanceof Blob;
53
+ var normalizeMethod = (value) => {
54
+ const method = String(value || "get").toLowerCase();
55
+ if (method === "get" || method === "post" || method === "put" || method === "delete" || method === "patch") {
56
+ return method;
57
+ }
58
+ return "get";
59
+ };
60
+ var resolveAppType = (context, explicitAppType) => {
61
+ const appType = String(explicitAppType || context.app.appType || "").trim();
62
+ if (!appType) {
63
+ throw new Error("appType \u4E0D\u80FD\u4E3A\u7A7A");
64
+ }
65
+ return appType;
66
+ };
67
+ var buildAppPath = (context, explicitAppType, suffix) => `/${resolveAppType(context, explicitAppType)}${suffix}`;
68
+ var encodePathSegment = (value) => encodeURIComponent(String(value));
69
+ var getHeaderValue = (headers, name) => {
70
+ if (!headers) {
71
+ return void 0;
72
+ }
73
+ const target = name.toLowerCase();
74
+ const entry = Object.entries(headers).find(
75
+ ([key]) => key.toLowerCase() === target
76
+ );
77
+ return entry ? String(entry[1]) : void 0;
78
+ };
79
+ var parseContentDispositionFileName = (contentDisposition) => {
80
+ if (!contentDisposition) {
81
+ return void 0;
82
+ }
83
+ const utf8Match = contentDisposition.match(/filename\*=UTF-8''([^;]+)/i);
84
+ if (utf8Match?.[1]) {
85
+ try {
86
+ return decodeURIComponent(utf8Match[1]);
87
+ } catch {
88
+ return utf8Match[1];
89
+ }
90
+ }
91
+ const quotedMatch = contentDisposition.match(/filename="([^"]+)"/i);
92
+ if (quotedMatch?.[1]) {
93
+ return quotedMatch[1];
94
+ }
95
+ const plainMatch = contentDisposition.match(/filename=([^;]+)/i);
96
+ if (plainMatch?.[1]) {
97
+ return plainMatch[1].trim();
98
+ }
99
+ return void 0;
100
+ };
101
+ var serializeQuery = (query) => {
102
+ if (!query) {
103
+ return void 0;
104
+ }
105
+ const params = new URLSearchParams();
106
+ const appendValue = (key, value) => {
107
+ if (value === void 0 || value === null || value === "") {
108
+ return;
109
+ }
110
+ if (Array.isArray(value)) {
111
+ value.forEach((item) => appendValue(key, item));
112
+ return;
113
+ }
114
+ if (value instanceof Date) {
115
+ params.append(key, value.toISOString());
116
+ return;
117
+ }
118
+ params.append(key, String(value));
119
+ };
120
+ Object.entries(query).forEach(([key, value]) => {
121
+ appendValue(key, value);
122
+ });
123
+ const serialized = params.toString();
124
+ return serialized || void 0;
125
+ };
126
+ var toLegacyRules = (value) => Object.entries(value).flatMap(([key, itemValue]) => {
127
+ if (itemValue === void 0) {
128
+ return [];
129
+ }
130
+ return [
131
+ {
132
+ key,
133
+ operator: Array.isArray(itemValue) ? "IN" : "EQ",
134
+ value: itemValue
135
+ }
136
+ ];
137
+ });
138
+ var toSearchGroup = (value) => {
139
+ if (value === void 0 || value === null || value === "") {
140
+ return void 0;
141
+ }
142
+ if (typeof value === "string") {
143
+ try {
144
+ return toSearchGroup(JSON.parse(value));
145
+ } catch {
146
+ return void 0;
147
+ }
148
+ }
149
+ if (Array.isArray(value)) {
150
+ const rules = [];
151
+ const conditions = [];
152
+ value.forEach((item) => {
153
+ const group = toSearchGroup(item);
154
+ if (group) {
155
+ if (group.rules?.length) {
156
+ rules.push(...group.rules);
157
+ }
158
+ if (group.conditions?.length) {
159
+ conditions.push(...group.conditions);
160
+ }
161
+ return;
162
+ }
163
+ if (isSearchRuleLike(item)) {
164
+ rules.push(item);
165
+ return;
166
+ }
167
+ if (isRecord(item)) {
168
+ rules.push(...toLegacyRules(item));
169
+ }
170
+ });
171
+ if (rules.length === 0 && conditions.length === 0) {
172
+ return void 0;
173
+ }
174
+ return {
175
+ logic: "AND",
176
+ ...rules.length > 0 ? { rules } : {},
177
+ ...conditions.length > 0 ? { conditions } : {}
178
+ };
179
+ }
180
+ if (isRecord(value)) {
181
+ if (isSearchRuleLike(value)) {
182
+ return {
183
+ logic: "AND",
184
+ rules: [value]
185
+ };
186
+ }
187
+ if ("rules" in value || "conditions" in value || "logic" in value) {
188
+ const nextGroup = {
189
+ logic: value.logic === "OR" || value.logic === "AND" ? value.logic : "AND"
190
+ };
191
+ if (Array.isArray(value.rules)) {
192
+ nextGroup.rules = value.rules.filter(isSearchRuleLike);
193
+ }
194
+ if (Array.isArray(value.conditions)) {
195
+ nextGroup.conditions = value.conditions.map((item) => toSearchGroup(item)).filter((item) => Boolean(item));
196
+ }
197
+ if (!nextGroup.rules?.length && !nextGroup.conditions?.length) {
198
+ return void 0;
199
+ }
200
+ return nextGroup;
201
+ }
202
+ const rules = toLegacyRules(value);
203
+ if (rules.length === 0) {
204
+ return void 0;
205
+ }
206
+ return {
207
+ logic: "AND",
208
+ rules
209
+ };
210
+ }
211
+ return void 0;
212
+ };
213
+ var mergeSearchExpressions = (base, extra) => {
214
+ const baseGroup = toSearchGroup(base);
215
+ const extraGroup = toSearchGroup(extra);
216
+ if (!baseGroup) {
217
+ return extraGroup;
218
+ }
219
+ if (!extraGroup) {
220
+ return baseGroup;
221
+ }
222
+ return {
223
+ logic: "AND",
224
+ conditions: [baseGroup, extraGroup]
225
+ };
226
+ };
227
+ var serializeSearchExpression = (value) => {
228
+ if (value === void 0 || value === null || value === "") {
229
+ return void 0;
230
+ }
231
+ if (typeof value === "string") {
232
+ return value;
233
+ }
234
+ const group = toSearchGroup(value);
235
+ return group ? JSON.stringify(group) : void 0;
236
+ };
237
+ var normalizeAdvancedOrder = (value) => {
238
+ if (!value) {
239
+ return void 0;
240
+ }
241
+ const nextValue = Array.isArray(value) ? value : [value];
242
+ return JSON.stringify(nextValue);
243
+ };
244
+ var normalizeDynamicOrder = (value) => {
245
+ if (!value) {
246
+ return void 0;
247
+ }
248
+ if (typeof value === "string") {
249
+ return value;
250
+ }
251
+ return `${value.id}:${value.isAsc === "n" ? "-" : "+"}`;
252
+ };
253
+ var normalizeJsonResponse = (rawResponse) => {
254
+ const topLevelCode = Number(rawResponse?.code);
255
+ const nestedCode = Number(
256
+ rawResponse?.data?.code
257
+ );
258
+ const code = Number.isFinite(topLevelCode) ? topLevelCode : Number.isFinite(nestedCode) ? nestedCode : 200;
259
+ const topLevelResult = isRecord(rawResponse) && "result" in rawResponse ? rawResponse.result : void 0;
260
+ const nestedResult = isRecord(rawResponse?.data) && "result" in (rawResponse.data || {}) ? rawResponse.data?.result : void 0;
261
+ const topLevelData = isRecord(rawResponse) && "data" in rawResponse ? rawResponse.data : void 0;
262
+ const result = topLevelResult !== void 0 ? topLevelResult : nestedResult !== void 0 ? nestedResult : topLevelData !== void 0 ? topLevelData : isRecord(rawResponse) ? rawResponse : null;
263
+ const nestedSuccess = typeof rawResponse?.data?.success === "boolean" ? rawResponse.data?.success : void 0;
264
+ const success = typeof rawResponse?.success === "boolean" ? Boolean(rawResponse.success) : typeof nestedSuccess === "boolean" ? Boolean(nestedSuccess) : code >= 200 && code < 300;
265
+ return {
266
+ code,
267
+ success,
268
+ message: typeof rawResponse?.message === "string" ? rawResponse.message : typeof rawResponse?.data?.message === "string" ? rawResponse.data?.message : void 0,
269
+ result,
270
+ data: topLevelData !== void 0 ? topLevelData : topLevelResult !== void 0 ? topLevelResult : void 0,
271
+ raw: rawResponse
272
+ };
273
+ };
274
+ var normalizeBinaryResponse = (rawResponse) => {
275
+ if (isRecord(rawResponse) && isBlobLike(rawResponse.blob)) {
276
+ return rawResponse;
277
+ }
278
+ if (isBlobLike(rawResponse)) {
279
+ return {
280
+ blob: rawResponse,
281
+ raw: rawResponse
282
+ };
283
+ }
284
+ const responseData = rawResponse?.data;
285
+ const responseHeaders = isRecord(
286
+ rawResponse?.headers
287
+ ) ? rawResponse.headers : void 0;
288
+ if (!isBlobLike(responseData)) {
289
+ throw new Error("transport.download \u672A\u8FD4\u56DE Blob \u6570\u636E");
290
+ }
291
+ const contentDisposition = getHeaderValue(
292
+ responseHeaders,
293
+ "content-disposition"
294
+ );
295
+ return {
296
+ blob: responseData,
297
+ fileName: parseContentDispositionFileName(contentDisposition),
298
+ contentType: getHeaderValue(responseHeaders, "content-type") || responseData.type,
299
+ headers: responseHeaders ? Object.fromEntries(
300
+ Object.entries(responseHeaders).map(([key, value]) => [
301
+ key,
302
+ value === void 0 ? void 0 : String(value)
303
+ ])
304
+ ) : void 0,
305
+ raw: rawResponse
306
+ };
307
+ };
308
+ var toSdkError = (input, payload) => {
309
+ const normalizedResponse = isRecord(input) ? normalizeJsonResponse(input) : void 0;
310
+ const nextError = input instanceof Error ? input : new Error(
311
+ normalizedResponse?.message || `\u8BF7\u6C42\u5931\u8D25: ${String(payload.method).toUpperCase()} ${payload.path}`
312
+ );
313
+ const sdkError = nextError;
314
+ sdkError.method = String(payload.method).toUpperCase();
315
+ sdkError.path = payload.path;
316
+ sdkError.response = normalizedResponse;
317
+ sdkError.raw = input;
318
+ return sdkError;
319
+ };
320
+ var ensureSuccess = (response, payload) => {
321
+ if (!response.success) {
322
+ throw toSdkError(response, payload);
323
+ }
324
+ return response;
325
+ };
326
+ var resolveFormInstanceId = (params) => {
327
+ const formInstanceId = String(
328
+ params.formInstId || params.formInstanceId || ""
329
+ ).trim();
330
+ if (!formInstanceId) {
331
+ throw new Error("formInstanceId \u4E0D\u80FD\u4E3A\u7A7A");
332
+ }
333
+ return formInstanceId;
334
+ };
335
+ var withDefaultAppType = (context, params) => {
336
+ if (!params) {
337
+ return params;
338
+ }
339
+ if (params.appType) {
340
+ return params;
341
+ }
342
+ if (params.scope === "app") {
343
+ return {
344
+ ...params,
345
+ appType: context.app.appType
346
+ };
347
+ }
348
+ return params;
349
+ };
350
+ var createPageSdk = (context) => {
351
+ const request = async (options) => {
352
+ const payload = {
353
+ path: options.path,
354
+ method: normalizeMethod(options.method),
355
+ query: serializeQuery(options.query),
356
+ body: options.body,
357
+ headers: options.headers
358
+ };
359
+ try {
360
+ const rawResponse = await context.bridge.invoke(
361
+ "transport.request",
362
+ payload
363
+ );
364
+ return ensureSuccess(
365
+ normalizeJsonResponse(rawResponse),
366
+ payload
367
+ );
368
+ } catch (error) {
369
+ throw toSdkError(error, payload);
370
+ }
371
+ };
372
+ const download = async (options) => {
373
+ const payload = {
374
+ path: options.path,
375
+ method: normalizeMethod(options.method),
376
+ query: serializeQuery(options.query),
377
+ body: options.body,
378
+ headers: options.headers
379
+ };
380
+ try {
381
+ const rawResponse = await context.bridge.invoke(
382
+ "transport.download",
383
+ payload
384
+ );
385
+ return normalizeBinaryResponse(rawResponse);
386
+ } catch (error) {
387
+ throw toSdkError(error, payload);
388
+ }
389
+ };
390
+ const form = {
391
+ getDetail: (params) => request({
392
+ path: buildAppPath(
393
+ context,
394
+ params.appType,
395
+ "/v1/form/getFormDataById.json"
396
+ ),
397
+ method: "get",
398
+ query: {
399
+ formUuid: params.formUuid,
400
+ formInstId: resolveFormInstanceId(params)
401
+ }
402
+ }),
403
+ create: (params) => request({
404
+ path: buildAppPath(
405
+ context,
406
+ params.appType,
407
+ "/v1/form/saveFormData.json"
408
+ ),
409
+ method: "post",
410
+ body: {
411
+ formUuid: params.formUuid,
412
+ formDataJson: JSON.stringify(params.data || {})
413
+ }
414
+ }),
415
+ update: (params) => request({
416
+ path: buildAppPath(
417
+ context,
418
+ params.appType,
419
+ "/v1/form/updateFormData.json"
420
+ ),
421
+ method: "post",
422
+ body: {
423
+ formUuid: params.formUuid,
424
+ formInstId: resolveFormInstanceId(params),
425
+ updateFormDataJson: params.updateFormDataJson || JSON.stringify(params.data || {})
426
+ }
427
+ }),
428
+ remove: (params) => request({
429
+ path: buildAppPath(
430
+ context,
431
+ params.appType,
432
+ "/v1/form/deleteFormData.json"
433
+ ),
434
+ method: "post",
435
+ body: {
436
+ formUuid: params.formUuid,
437
+ formInstId: resolveFormInstanceId(params)
438
+ }
439
+ }),
440
+ getChangeRecords: (params) => request({
441
+ path: buildAppPath(
442
+ context,
443
+ params.appType,
444
+ "/v1/form/getFormDataChangeRecords.json"
445
+ ),
446
+ method: "get",
447
+ query: {
448
+ formUuid: params.formUuid,
449
+ formInstId: resolveFormInstanceId(params),
450
+ page: params.page,
451
+ pageSize: params.pageSize
452
+ }
453
+ }),
454
+ search: (params) => request({
455
+ path: buildAppPath(
456
+ context,
457
+ params.appType,
458
+ "/v1/form/searchFormDatas.json"
459
+ ),
460
+ method: "get",
461
+ query: {
462
+ formUuid: params.formUuid,
463
+ searchFieldJson: serializeSearchExpression(params.search),
464
+ currentPage: params.currentPage,
465
+ pageSize: params.pageSize,
466
+ originatorId: params.originatorId,
467
+ createFrom: params.createFrom,
468
+ createTo: params.createTo,
469
+ modifiedFrom: params.modifiedFrom,
470
+ modifiedTo: params.modifiedTo,
471
+ dynamicOrder: normalizeDynamicOrder(params.dynamicOrder),
472
+ instanceStatus: params.instanceStatus
473
+ }
474
+ }),
475
+ searchIds: (params) => request({
476
+ path: buildAppPath(
477
+ context,
478
+ params.appType,
479
+ "/v1/form/searchFormDataIds.json"
480
+ ),
481
+ method: "get",
482
+ query: {
483
+ formUuid: params.formUuid,
484
+ searchFieldJson: serializeSearchExpression(params.search),
485
+ currentPage: params.currentPage,
486
+ pageSize: params.pageSize,
487
+ originatorId: params.originatorId,
488
+ createFrom: params.createFrom,
489
+ createTo: params.createTo,
490
+ modifiedFrom: params.modifiedFrom,
491
+ modifiedTo: params.modifiedTo,
492
+ dynamicOrder: normalizeDynamicOrder(params.dynamicOrder),
493
+ instanceStatus: params.instanceStatus
494
+ }
495
+ }),
496
+ advancedSearch: (params) => request({
497
+ path: buildAppPath(
498
+ context,
499
+ params.appType,
500
+ "/v1/form/advancedSearch.json"
501
+ ),
502
+ method: "get",
503
+ query: {
504
+ formUuid: params.formUuid,
505
+ filters: serializeSearchExpression(params.filters),
506
+ conditionType: params.conditionType,
507
+ searchKeyWord: params.searchKeyWord,
508
+ currentPage: params.currentPage,
509
+ pageSize: params.pageSize,
510
+ order: normalizeAdvancedOrder(params.order),
511
+ instanceStatus: params.instanceStatus
512
+ }
513
+ }),
514
+ advancedExport: (params) => download({
515
+ path: buildAppPath(
516
+ context,
517
+ params.appType,
518
+ "/v1/form/advancedExport.xlsx"
519
+ ),
520
+ method: "get",
521
+ query: {
522
+ formUuid: params.formUuid,
523
+ filters: serializeSearchExpression(params.filters),
524
+ conditionType: params.conditionType,
525
+ searchKeyWord: params.searchKeyWord,
526
+ currentPage: params.currentPage,
527
+ pageSize: params.pageSize,
528
+ order: normalizeAdvancedOrder(params.order),
529
+ instanceStatus: params.instanceStatus,
530
+ exportAll: params.exportAll,
531
+ embedImages: params.embedImages,
532
+ exportFields: params.exportFields?.join(",")
533
+ }
534
+ }),
535
+ downloadImportTemplate: (params) => download({
536
+ path: buildAppPath(
537
+ context,
538
+ params.appType,
539
+ "/v1/form/advancedExportTemplate.xlsx"
540
+ ),
541
+ method: "get",
542
+ query: {
543
+ formUuid: params.formUuid
544
+ }
545
+ }),
546
+ importPreview: (params) => request({
547
+ path: buildAppPath(
548
+ context,
549
+ params.appType,
550
+ "/v1/form/importPreview.xlsx"
551
+ ),
552
+ method: "post",
553
+ body: {
554
+ formUuid: params.formUuid,
555
+ fileBase64: params.fileBase64,
556
+ fileName: params.fileName
557
+ }
558
+ }),
559
+ importExcel: (params) => request({
560
+ path: buildAppPath(context, params.appType, "/v1/form/import.xlsx"),
561
+ method: "post",
562
+ body: {
563
+ formUuid: params.formUuid,
564
+ fileBase64: params.fileBase64,
565
+ fileName: params.fileName
566
+ }
567
+ }),
568
+ getImportRecords: (params) => request({
569
+ path: buildAppPath(
570
+ context,
571
+ params.appType,
572
+ "/v1/form/importRecords.json"
573
+ ),
574
+ method: "get",
575
+ query: {
576
+ formUuid: params.formUuid,
577
+ currentPage: params.currentPage,
578
+ pageSize: params.pageSize
579
+ }
580
+ }),
581
+ getExportRecords: (params) => request({
582
+ path: buildAppPath(
583
+ context,
584
+ params.appType,
585
+ "/v1/form/exportRecords.json"
586
+ ),
587
+ method: "get",
588
+ query: {
589
+ formUuid: params.formUuid,
590
+ currentPage: params.currentPage,
591
+ pageSize: params.pageSize
592
+ }
593
+ }),
594
+ downloadImportSource: (params) => download({
595
+ path: buildAppPath(
596
+ context,
597
+ params.appType,
598
+ "/v1/form/importRecord/downloadSource.xlsx"
599
+ ),
600
+ method: "get",
601
+ query: {
602
+ recordId: params.recordId
603
+ }
604
+ }),
605
+ downloadImportFailed: (params) => download({
606
+ path: buildAppPath(
607
+ context,
608
+ params.appType,
609
+ "/v1/form/importRecord/downloadFailed.xlsx"
610
+ ),
611
+ method: "get",
612
+ query: {
613
+ recordId: params.recordId
614
+ }
615
+ }),
616
+ downloadExportRecord: (params) => download({
617
+ path: buildAppPath(
618
+ context,
619
+ params.appType,
620
+ "/v1/form/exportRecord/download.xlsx"
621
+ ),
622
+ method: "get",
623
+ query: {
624
+ recordId: params.recordId
625
+ }
626
+ }),
627
+ getDataManagementConfig: (params) => request({
628
+ path: buildAppPath(
629
+ context,
630
+ params.appType,
631
+ "/v1/form/dataManagement/config/get.json"
632
+ ),
633
+ method: "get",
634
+ query: {
635
+ formUuid: params.formUuid
636
+ }
637
+ }),
638
+ saveDataManagementConfig: (params) => request({
639
+ path: buildAppPath(
640
+ context,
641
+ params.appType,
642
+ "/v1/form/dataManagement/config/save.json"
643
+ ),
644
+ method: "post",
645
+ body: {
646
+ formUuid: params.formUuid,
647
+ config: params.config
648
+ }
649
+ })
650
+ };
651
+ const user = {
652
+ create: (params) => request({
653
+ path: "/user/create",
654
+ method: "post",
655
+ body: params
656
+ }),
657
+ update: (params) => request({
658
+ path: "/user/update",
659
+ method: "put",
660
+ body: params
661
+ }),
662
+ remove: (id) => request({
663
+ path: `/user/${encodePathSegment(id)}`,
664
+ method: "delete"
665
+ }),
666
+ get: (id = "current") => request({
667
+ path: `/user/${encodePathSegment(id)}`,
668
+ method: "get"
669
+ }),
670
+ getCurrent: () => request({
671
+ path: "/user/current",
672
+ method: "get"
673
+ }),
674
+ getByUsername: (username) => request({
675
+ path: `/user/username/${encodePathSegment(username)}`,
676
+ method: "get"
677
+ }),
678
+ list: (params) => request({
679
+ path: "/user/list",
680
+ method: "get",
681
+ query: {
682
+ ids: params?.ids,
683
+ departmentIds: params?.departmentIds,
684
+ name: params?.name,
685
+ username: params?.username,
686
+ phone: params?.phone,
687
+ email: params?.email,
688
+ page: params?.page,
689
+ pageSize: params?.pageSize
690
+ }
691
+ }),
692
+ search: (keyword) => request({
693
+ path: "/user/search",
694
+ method: "get",
695
+ query: {
696
+ keyword
697
+ }
698
+ }),
699
+ listAll: () => request({
700
+ path: "/user/all",
701
+ method: "get"
702
+ }),
703
+ listByDepartment: (departmentId) => request({
704
+ path: `/user/department/${encodePathSegment(departmentId)}`,
705
+ method: "get"
706
+ }),
707
+ validate: (params) => request({
708
+ path: "/user/validate",
709
+ method: "post",
710
+ body: params
711
+ })
712
+ };
713
+ const getParentDepartments = (departmentId, options = {}) => request({
714
+ path: `/department/${encodePathSegment(departmentId)}/parentDepartments`,
715
+ method: "get",
716
+ query: {
717
+ includeSelf: options.includeSelf ?? true
718
+ }
719
+ });
720
+ const department = {
721
+ getParentDepartments,
722
+ getCurrentUserParentDepartments: async (options = {}) => {
723
+ const departments = (context.user.departments || []).filter(
724
+ (item) => typeof item.id === "string" && item.id.trim()
725
+ );
726
+ return Promise.all(
727
+ departments.map(async (item) => {
728
+ const response = await getParentDepartments(item.id || "", {
729
+ includeSelf: options.includeSelf
730
+ });
731
+ return {
732
+ department: item,
733
+ parents: response.result || []
734
+ };
735
+ })
736
+ );
737
+ }
738
+ };
739
+ const role = {
740
+ create: (params) => request({
741
+ path: "/role/",
742
+ method: "post",
743
+ body: params
744
+ }),
745
+ update: (id, params) => request({
746
+ path: `/role/${encodePathSegment(id)}`,
747
+ method: "put",
748
+ body: params
749
+ }),
750
+ remove: (id) => request({
751
+ path: `/role/${encodePathSegment(id)}`,
752
+ method: "delete"
753
+ }),
754
+ get: (id) => request({
755
+ path: `/role/${encodePathSegment(id)}`,
756
+ method: "get"
757
+ }),
758
+ list: (params) => request({
759
+ path: "/role/",
760
+ method: "get",
761
+ query: withDefaultAppType(context, params)
762
+ }),
763
+ listUsers: (roleId, params) => request({
764
+ path: `/role/${encodePathSegment(roleId)}/users`,
765
+ method: "get",
766
+ query: params
767
+ }),
768
+ assignRoles: (params) => request({
769
+ path: "/role/assign",
770
+ method: "post",
771
+ body: params
772
+ }),
773
+ addUserRole: (params) => request({
774
+ path: "/role/add",
775
+ method: "post",
776
+ body: params
777
+ }),
778
+ removeUserRole: (params) => request({
779
+ path: "/role/remove",
780
+ method: "post",
781
+ body: params
782
+ }),
783
+ batchAddUsers: (params) => request({
784
+ path: "/role/batch-add-users",
785
+ method: "post",
786
+ body: params
787
+ }),
788
+ getMyRoles: (params) => request({
789
+ path: "/role/my/roles",
790
+ method: "get",
791
+ query: withDefaultAppType(context, params)
792
+ }),
793
+ getCurrentRole: (params) => request({
794
+ path: "/role/my/current",
795
+ method: "get",
796
+ query: withDefaultAppType(context, params)
797
+ }),
798
+ switchPlatformRole: (params) => request({
799
+ path: "/role/switch/platform",
800
+ method: "post",
801
+ body: params
802
+ }),
803
+ switchAppRole: (params) => request({
804
+ path: "/role/switch/app",
805
+ method: "post",
806
+ body: {
807
+ ...params,
808
+ appType: resolveAppType(context, params.appType)
809
+ }
810
+ })
811
+ };
812
+ const permission = {
813
+ formGroup: {
814
+ create: (params) => request({
815
+ path: "/permission/form-group/",
816
+ method: "post",
817
+ body: {
818
+ ...params,
819
+ appType: resolveAppType(context, params.appType)
820
+ }
821
+ }),
822
+ update: (id, params) => request({
823
+ path: `/permission/form-group/${encodePathSegment(id)}`,
824
+ method: "put",
825
+ body: {
826
+ ...params,
827
+ ...params.appType ? { appType: resolveAppType(context, params.appType) } : {}
828
+ }
829
+ }),
830
+ remove: (id) => request({
831
+ path: `/permission/form-group/${encodePathSegment(id)}`,
832
+ method: "delete"
833
+ }),
834
+ get: (id) => request({
835
+ path: `/permission/form-group/${encodePathSegment(id)}`,
836
+ method: "get"
837
+ }),
838
+ list: (params) => request({
839
+ path: "/permission/form-group/",
840
+ method: "get",
841
+ query: {
842
+ ...params,
843
+ appType: resolveAppType(context, params?.appType)
844
+ }
845
+ }),
846
+ getViewFieldPermissions: (params) => request({
847
+ path: "/permission/form-group/field-permissions",
848
+ method: "get",
849
+ query: {
850
+ appType: resolveAppType(context, params.appType),
851
+ formUuid: params.formUuid
852
+ }
853
+ }),
854
+ getViewPermissionSummary: (params) => request({
855
+ path: "/permission/form-group/view-permissions",
856
+ method: "get",
857
+ query: {
858
+ appType: resolveAppType(context, params.appType),
859
+ formUuid: params.formUuid
860
+ }
861
+ })
862
+ },
863
+ pageGroup: {
864
+ create: (params) => request({
865
+ path: "/permission/page-group/",
866
+ method: "post",
867
+ body: {
868
+ ...params,
869
+ appType: resolveAppType(context, params.appType)
870
+ }
871
+ }),
872
+ update: (id, params) => request({
873
+ path: `/permission/page-group/${encodePathSegment(id)}`,
874
+ method: "put",
875
+ body: {
876
+ ...params,
877
+ ...params.appType ? { appType: resolveAppType(context, params.appType) } : {}
878
+ }
879
+ }),
880
+ remove: (id) => request({
881
+ path: `/permission/page-group/${encodePathSegment(id)}`,
882
+ method: "delete"
883
+ }),
884
+ get: (id) => request({
885
+ path: `/permission/page-group/${encodePathSegment(id)}`,
886
+ method: "get"
887
+ }),
888
+ list: (params) => request({
889
+ path: "/permission/page-group/",
890
+ method: "get",
891
+ query: {
892
+ ...params,
893
+ appType: resolveAppType(context, params?.appType)
894
+ }
895
+ }),
896
+ getUserMenuPermissions: (appType) => request({
897
+ path: "/permission/page-group/user-menu-permissions",
898
+ method: "get",
899
+ query: {
900
+ appType: resolveAppType(context, appType)
901
+ }
902
+ })
903
+ },
904
+ api: {
905
+ create: (params) => request({
906
+ path: "/permission/api",
907
+ method: "post",
908
+ body: params
909
+ }),
910
+ update: (id, params) => request({
911
+ path: `/permission/api/${encodePathSegment(id)}`,
912
+ method: "put",
913
+ body: params
914
+ }),
915
+ remove: (id) => request({
916
+ path: `/permission/api/${encodePathSegment(id)}`,
917
+ method: "delete"
918
+ }),
919
+ list: (params) => request({
920
+ path: "/permission/api",
921
+ method: "get",
922
+ query: withDefaultAppType(context, params)
923
+ }),
924
+ assign: (params) => request({
925
+ path: "/permission/api/assign",
926
+ method: "post",
927
+ body: params
928
+ }),
929
+ getByRole: (roleId) => request({
930
+ path: `/permission/api/role/${encodePathSegment(roleId)}`,
931
+ method: "get"
932
+ }),
933
+ getRolesByPermission: (permissionId) => request({
934
+ path: `/permission/api/${encodePathSegment(permissionId)}/roles`,
935
+ method: "get"
936
+ })
937
+ },
938
+ ui: {
939
+ create: (params) => request({
940
+ path: "/permission/api/ui",
941
+ method: "post",
942
+ body: params
943
+ }),
944
+ update: (id, params) => request({
945
+ path: `/permission/api/ui/${encodePathSegment(id)}`,
946
+ method: "put",
947
+ body: params
948
+ }),
949
+ remove: (id) => request({
950
+ path: `/permission/api/ui/${encodePathSegment(id)}`,
951
+ method: "delete"
952
+ }),
953
+ list: (params) => request({
954
+ path: "/permission/api/ui",
955
+ method: "get",
956
+ query: withDefaultAppType(context, params)
957
+ }),
958
+ assign: (params) => request({
959
+ path: "/permission/api/ui/assign",
960
+ method: "post",
961
+ body: params
962
+ }),
963
+ getMyPlatform: () => request({
964
+ path: "/permission/api/ui/me/platform",
965
+ method: "get"
966
+ }),
967
+ getMyApp: (appType) => request({
968
+ path: "/permission/api/ui/me/app",
969
+ method: "get",
970
+ query: {
971
+ appType: resolveAppType(context, appType)
972
+ }
973
+ })
974
+ }
975
+ };
976
+ const process = {
977
+ getInstance: (params) => request({
978
+ path: buildAppPath(context, params.appType, "/v1/process/instance"),
979
+ method: "get",
980
+ query: {
981
+ instanceId: params.instanceId
982
+ }
983
+ }),
984
+ terminateInstance: (params) => request({
985
+ path: buildAppPath(
986
+ context,
987
+ params.appType,
988
+ "/v1/process/terminateInstance.json"
989
+ ),
990
+ method: "post",
991
+ body: {
992
+ processInstanceId: params.processInstanceId,
993
+ reason: params.reason
994
+ }
995
+ }),
996
+ approveTask: (params) => request({
997
+ path: buildAppPath(
998
+ context,
999
+ params.appType,
1000
+ "/v1/process/approveTask.json"
1001
+ ),
1002
+ method: "post",
1003
+ body: {
1004
+ ...params,
1005
+ appType: resolveAppType(context, params.appType)
1006
+ }
1007
+ }),
1008
+ triggerCallbackTask: (params) => request({
1009
+ path: buildAppPath(
1010
+ context,
1011
+ params.appType,
1012
+ "/v1/process/triggerCallback.json"
1013
+ ),
1014
+ method: "post",
1015
+ body: {
1016
+ taskId: params.taskId,
1017
+ payload: params.payload
1018
+ }
1019
+ })
1020
+ };
1021
+ const notification = {
1022
+ sendByType: (params) => request({
1023
+ path: "/api/notification-config/send-by-type",
1024
+ method: "post",
1025
+ body: {
1026
+ ...params,
1027
+ appType: resolveAppType(context, params.appType)
1028
+ }
1029
+ }),
1030
+ batchSendByType: (params) => request({
1031
+ path: "/api/notification-config/batch-send-by-type",
1032
+ method: "post",
1033
+ body: {
1034
+ ...params,
1035
+ appType: resolveAppType(context, params.appType)
1036
+ }
1037
+ })
1038
+ };
1039
+ const sdk = {
1040
+ context,
1041
+ request,
1042
+ download,
1043
+ transport: {
1044
+ request,
1045
+ download
1046
+ },
1047
+ form,
1048
+ user,
1049
+ department,
1050
+ role,
1051
+ permission,
1052
+ process,
1053
+ notification,
1054
+ dataSource: {
1055
+ run: async (name, params = {}) => {
1056
+ const descriptor = (context.page.dataSources || []).find(
1057
+ (item) => item.key === name
1058
+ );
1059
+ if (!descriptor) {
1060
+ throw new Error(`\u672A\u627E\u5230\u6570\u636E\u6E90: ${String(name || "")}`);
1061
+ }
1062
+ const runtimeParams = params;
1063
+ const resolvedFormUuid = String(
1064
+ runtimeParams.formUuid || descriptor.formUuid || ""
1065
+ ).trim();
1066
+ switch (descriptor.type) {
1067
+ case "form.list":
1068
+ return form.advancedSearch({
1069
+ ...runtimeParams,
1070
+ formUuid: resolvedFormUuid,
1071
+ filters: mergeSearchExpressions(
1072
+ descriptor.defaultFilter,
1073
+ runtimeParams.filters
1074
+ )
1075
+ });
1076
+ case "form.detail":
1077
+ return form.getDetail({
1078
+ ...runtimeParams,
1079
+ formUuid: resolvedFormUuid
1080
+ });
1081
+ case "form.create":
1082
+ return form.create({
1083
+ ...runtimeParams,
1084
+ formUuid: resolvedFormUuid
1085
+ });
1086
+ case "form.update":
1087
+ return form.update({
1088
+ ...runtimeParams,
1089
+ formUuid: resolvedFormUuid
1090
+ });
1091
+ case "form.delete":
1092
+ return form.remove({
1093
+ ...runtimeParams,
1094
+ formUuid: resolvedFormUuid
1095
+ });
1096
+ default:
1097
+ throw new Error(`\u6682\u4E0D\u652F\u6301\u7684\u6570\u636E\u6E90\u7C7B\u578B: ${String(descriptor.type)}`);
1098
+ }
1099
+ }
1100
+ },
1101
+ navigation: context.navigation,
1102
+ ui: context.ui
1103
+ };
1104
+ return sdk;
1105
+ };
1106
+
1107
+ // packages/sdk/src/runtime/react/createReactPage.tsx
1108
+ var import_cssinjs = require("@ant-design/cssinjs");
1109
+ var import_antd = require("antd");
1110
+ var import_zh_CN = __toESM(require("antd/locale/zh_CN.js"));
1111
+ var import_client2 = require("react-dom/client");
1112
+
1113
+ // packages/sdk/src/runtime/react/provider.tsx
1114
+ var import_react2 = require("react");
1115
+
1116
+ // packages/sdk/src/runtime/react/store.ts
1117
+ var import_react = require("react");
1118
+ var ReactPageContext = (0, import_react.createContext)(null);
1119
+ var usePageSdkStore = () => {
1120
+ const store = (0, import_react.useContext)(ReactPageContext);
1121
+ if (!store) {
1122
+ throw new Error("usePageSdkStore \u5FC5\u987B\u5728 PageProvider \u5185\u4F7F\u7528");
1123
+ }
1124
+ return store;
1125
+ };
1126
+
1127
+ // packages/sdk/src/runtime/react/provider.tsx
1128
+ var import_jsx_runtime = require("react/jsx-runtime");
1129
+ var PageProvider = ({
1130
+ context,
1131
+ children
1132
+ }) => {
1133
+ const value = (0, import_react2.useMemo)(
1134
+ () => ({
1135
+ context,
1136
+ sdk: createPageSdk(context)
1137
+ }),
1138
+ [context]
1139
+ );
1140
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ReactPageContext.Provider, { value, children });
1141
+ };
1142
+
1143
+ // packages/sdk/src/styles/antd-theme.ts
1144
+ var antdTheme = {
1145
+ cssVar: { prefix: "sy-ant" },
1146
+ hashed: false,
1147
+ token: {
1148
+ colorPrimary: "var(--sy-color-primary)",
1149
+ colorSuccess: "var(--sy-color-success)",
1150
+ colorWarning: "var(--sy-color-warning)",
1151
+ colorError: "var(--sy-color-error)",
1152
+ colorText: "var(--sy-color-text)",
1153
+ colorTextSecondary: "var(--sy-color-text-secondary)",
1154
+ colorTextTertiary: "var(--sy-color-text-tertiary)",
1155
+ colorTextDisabled: "var(--sy-color-text-disabled)",
1156
+ colorBgContainer: "var(--sy-color-bg-container)",
1157
+ colorBgLayout: "var(--sy-color-bg-layout)",
1158
+ colorBgElevated: "var(--sy-color-bg-elevated)",
1159
+ colorBorder: "var(--sy-color-border)",
1160
+ colorBorderSecondary: "var(--sy-color-border-secondary)",
1161
+ borderRadius: 6,
1162
+ borderRadiusSM: 4,
1163
+ borderRadiusLG: 8,
1164
+ fontSize: 14,
1165
+ controlHeight: 32
1166
+ },
1167
+ components: {
1168
+ Form: { itemMarginBottom: 16 },
1169
+ Card: { paddingLG: 24 }
1170
+ }
1171
+ };
1172
+
1173
+ // packages/sdk/src/runtime/react/createReactPage.tsx
1174
+ var import_jsx_runtime2 = require("react/jsx-runtime");
1175
+ var createRuntimeRoot = (el) => {
1176
+ return (0, import_client2.createRoot)(el);
1177
+ };
1178
+ var getStyleContainer = (el) => {
1179
+ const rootNode = el.getRootNode?.();
1180
+ if (typeof ShadowRoot !== "undefined" && rootNode instanceof ShadowRoot) {
1181
+ return rootNode;
1182
+ }
1183
+ return document.head;
1184
+ };
1185
+ var getRuntimeOverlayContainer = (el) => {
1186
+ const rootNode = el.getRootNode?.();
1187
+ const isShadowRoot = typeof ShadowRoot !== "undefined" && rootNode instanceof ShadowRoot;
1188
+ const namespaceRoot = el.closest(".sy-app-workspace");
1189
+ return {
1190
+ getPopupContainer: (triggerNode) => {
1191
+ if (isShadowRoot) return el;
1192
+ return namespaceRoot || triggerNode?.parentElement || document.body;
1193
+ },
1194
+ getTargetContainer: () => isShadowRoot ? el : namespaceRoot || el.ownerDocument?.body || document.body
1195
+ };
1196
+ };
1197
+ var createReactPage = (AppComponent) => {
1198
+ let root = null;
1199
+ let currentContainer = null;
1200
+ const render = (el, context) => {
1201
+ const rootNode = el.getRootNode?.();
1202
+ if (!(typeof ShadowRoot !== "undefined" && rootNode instanceof ShadowRoot)) {
1203
+ el.classList.add("sy-app-workspace");
1204
+ }
1205
+ if (!root || currentContainer !== el) {
1206
+ root?.unmount();
1207
+ root = createRuntimeRoot(el);
1208
+ currentContainer = el;
1209
+ }
1210
+ const overlayContainer = getRuntimeOverlayContainer(el);
1211
+ root.render(
1212
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_cssinjs.StyleProvider, { hashPriority: "high", container: getStyleContainer(el), children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
1213
+ import_antd.ConfigProvider,
1214
+ {
1215
+ locale: import_zh_CN.default,
1216
+ prefixCls: "sy-ant",
1217
+ iconPrefixCls: "sy-anticon",
1218
+ theme: antdTheme,
1219
+ getPopupContainer: overlayContainer.getPopupContainer,
1220
+ getTargetContainer: overlayContainer.getTargetContainer,
1221
+ children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_antd.App, { children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(PageProvider, { context, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(AppComponent, {}) }) })
1222
+ }
1223
+ ) })
1224
+ );
1225
+ };
1226
+ return {
1227
+ mount: (el, context) => {
1228
+ render(el, context);
1229
+ },
1230
+ update: (el, context) => {
1231
+ render(el, context);
1232
+ },
1233
+ unmount: () => {
1234
+ root?.unmount();
1235
+ root = null;
1236
+ currentContainer = null;
1237
+ }
1238
+ };
1239
+ };
1240
+
1241
+ // packages/sdk/src/runtime/react/hooks/useCurrentUser.ts
1242
+ var import_react3 = require("react");
1243
+
1244
+ // packages/sdk/src/runtime/react/hooks/usePageContext.ts
1245
+ var usePageContext = () => {
1246
+ return usePageSdkStore().context;
1247
+ };
1248
+
1249
+ // packages/sdk/src/runtime/react/hooks/useCurrentUser.ts
1250
+ var useCurrentUser = () => {
1251
+ const { user } = usePageContext();
1252
+ return (0, import_react3.useMemo)(() => {
1253
+ const userType = user.userType === "guest" || user.isGuest ? "guest" : "normal";
1254
+ const isGuest = userType === "guest";
1255
+ return {
1256
+ user: {
1257
+ ...user,
1258
+ isGuest,
1259
+ userType
1260
+ },
1261
+ isGuest,
1262
+ isInternalUser: !isGuest,
1263
+ displayName: user.name || user.username || user.id,
1264
+ primaryDepartment: user.departments?.[0] || null
1265
+ };
1266
+ }, [user]);
1267
+ };
1268
+
1269
+ // packages/sdk/src/runtime/react/hooks/useDataSource.ts
1270
+ var import_react4 = require("react");
1271
+
1272
+ // packages/sdk/src/runtime/react/hooks/usePageSdk.ts
1273
+ var usePageSdk = () => {
1274
+ return usePageSdkStore().sdk;
1275
+ };
1276
+
1277
+ // packages/sdk/src/runtime/react/hooks/useDataSource.ts
1278
+ var createParamsSignature = (value) => {
1279
+ try {
1280
+ return JSON.stringify(value || {});
1281
+ } catch {
1282
+ return "";
1283
+ }
1284
+ };
1285
+ var useDataSource = (name, options = {}) => {
1286
+ const sdk = usePageSdk();
1287
+ const { params, immediate = true, transform } = options;
1288
+ const paramsRef = (0, import_react4.useRef)(params);
1289
+ const transformRef = (0, import_react4.useRef)(transform);
1290
+ const paramsSignature = createParamsSignature(params);
1291
+ const [response, setResponse] = (0, import_react4.useState)(
1292
+ null
1293
+ );
1294
+ const [result, setResult] = (0, import_react4.useState)(null);
1295
+ const [data, setData] = (0, import_react4.useState)(null);
1296
+ const [loading, setLoading] = (0, import_react4.useState)(false);
1297
+ const [error, setError] = (0, import_react4.useState)(null);
1298
+ paramsRef.current = params;
1299
+ transformRef.current = transform;
1300
+ const run = (0, import_react4.useCallback)(
1301
+ async (overrideParams) => {
1302
+ setLoading(true);
1303
+ setError(null);
1304
+ try {
1305
+ const response2 = await sdk.dataSource.run(
1306
+ name,
1307
+ overrideParams || paramsRef.current || {}
1308
+ );
1309
+ setResponse(response2);
1310
+ setResult(response2.result);
1311
+ const activeTransform = transformRef.current;
1312
+ const nextData = activeTransform ? activeTransform(response2.result, response2) : response2.result ?? null;
1313
+ setData(nextData);
1314
+ return response2;
1315
+ } catch (runtimeError) {
1316
+ const nextError = runtimeError instanceof Error ? runtimeError : new Error(String(runtimeError));
1317
+ setError(nextError);
1318
+ setResponse(null);
1319
+ setResult(null);
1320
+ return null;
1321
+ } finally {
1322
+ setLoading(false);
1323
+ }
1324
+ },
1325
+ [name, sdk.dataSource]
1326
+ );
1327
+ (0, import_react4.useEffect)(() => {
1328
+ if (!immediate) {
1329
+ return;
1330
+ }
1331
+ void run();
1332
+ }, [immediate, paramsSignature, run]);
1333
+ return {
1334
+ response,
1335
+ result,
1336
+ data,
1337
+ loading,
1338
+ error,
1339
+ refresh: run,
1340
+ run,
1341
+ setResponse,
1342
+ setResult,
1343
+ setData
1344
+ };
1345
+ };
1346
+
1347
+ // packages/sdk/src/runtime/react/hooks/useFormViewPermissions.ts
1348
+ var import_react5 = require("react");
1349
+ var EMPTY_SUMMARY = {
1350
+ fieldPermissions: {},
1351
+ operations: []
1352
+ };
1353
+ var toError = (error) => {
1354
+ if (error instanceof Error) {
1355
+ return error;
1356
+ }
1357
+ if (typeof error === "object" && error !== null && "message" in error && typeof error.message === "string") {
1358
+ return new Error(error.message);
1359
+ }
1360
+ return new Error(String(error || "\u83B7\u53D6\u67E5\u770B\u6001\u6743\u9650\u5931\u8D25"));
1361
+ };
1362
+ var useFormViewPermissions = (formUuid, options = {}) => {
1363
+ const sdk = usePageSdk();
1364
+ const [summary, setSummary] = (0, import_react5.useState)(EMPTY_SUMMARY);
1365
+ const [response, setResponse] = (0, import_react5.useState)(null);
1366
+ const [loading, setLoading] = (0, import_react5.useState)(false);
1367
+ const [error, setError] = (0, import_react5.useState)(null);
1368
+ const immediate = options.immediate ?? true;
1369
+ const refresh = (0, import_react5.useCallback)(async () => {
1370
+ const normalizedFormUuid = String(formUuid || "").trim();
1371
+ if (!normalizedFormUuid) {
1372
+ setSummary(EMPTY_SUMMARY);
1373
+ setResponse(null);
1374
+ return null;
1375
+ }
1376
+ setLoading(true);
1377
+ setError(null);
1378
+ try {
1379
+ const nextResponse = await sdk.permission.formGroup.getViewPermissionSummary({
1380
+ appType: options.appType,
1381
+ formUuid: normalizedFormUuid
1382
+ });
1383
+ const nextSummary = nextResponse.result || EMPTY_SUMMARY;
1384
+ setResponse(nextResponse);
1385
+ setSummary({
1386
+ fieldPermissions: nextSummary.fieldPermissions || {},
1387
+ operations: nextSummary.operations || []
1388
+ });
1389
+ return nextResponse;
1390
+ } catch (requestError) {
1391
+ const nextError = toError(requestError);
1392
+ setError(nextError);
1393
+ setResponse(null);
1394
+ setSummary(EMPTY_SUMMARY);
1395
+ return null;
1396
+ } finally {
1397
+ setLoading(false);
1398
+ }
1399
+ }, [formUuid, options.appType, sdk]);
1400
+ (0, import_react5.useEffect)(() => {
1401
+ if (!immediate) {
1402
+ return;
1403
+ }
1404
+ void refresh();
1405
+ }, [immediate, refresh]);
1406
+ const operationSet = (0, import_react5.useMemo)(
1407
+ () => new Set(summary.operations),
1408
+ [summary.operations]
1409
+ );
1410
+ const can = (0, import_react5.useCallback)(
1411
+ (operation) => operationSet.has(operation),
1412
+ [operationSet]
1413
+ );
1414
+ const getFieldPermission = (0, import_react5.useCallback)(
1415
+ (fieldName) => summary.fieldPermissions[fieldName] || null,
1416
+ [summary.fieldPermissions]
1417
+ );
1418
+ return {
1419
+ summary,
1420
+ response,
1421
+ loading,
1422
+ error,
1423
+ refresh,
1424
+ can,
1425
+ getFieldPermission
1426
+ };
1427
+ };
1428
+
1429
+ // packages/sdk/src/runtime/react/hooks/useMessage.ts
1430
+ var useMessage = () => {
1431
+ return usePageContext().ui.message;
1432
+ };
1433
+
1434
+ // packages/sdk/src/runtime/react/hooks/useModal.ts
1435
+ var useModal = () => {
1436
+ return usePageContext().ui.modal;
1437
+ };
1438
+
1439
+ // packages/sdk/src/runtime/react/hooks/useNavigation.ts
1440
+ var useNavigation = () => {
1441
+ return usePageContext().navigation;
1442
+ };
1443
+
1444
+ // packages/sdk/src/runtime/react/hooks/usePageProps.ts
1445
+ var usePageProps = () => {
1446
+ return usePageContext().page.props;
1447
+ };
1448
+
1449
+ // packages/sdk/src/runtime/react/hooks/usePageRoute.ts
1450
+ var usePageRoute = () => {
1451
+ return usePageContext().route;
1452
+ };
1453
+ // Annotate the CommonJS export names for ESM import in node:
1454
+ 0 && (module.exports = {
1455
+ PageProvider,
1456
+ createPageSdk,
1457
+ createReactPage,
1458
+ useCurrentUser,
1459
+ useDataSource,
1460
+ useFormViewPermissions,
1461
+ useMessage,
1462
+ useModal,
1463
+ useNavigation,
1464
+ usePageContext,
1465
+ usePageProps,
1466
+ usePageRoute,
1467
+ usePageSdk
1468
+ });
1469
+ //# sourceMappingURL=index.cjs.map