@rytass/bpm-core-react 0.14.0 → 0.16.2

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 (247) hide show
  1. package/CHANGELOG.md +83 -0
  2. package/dist/chunks/{FormBuilderView-BYLN6W-P.js → FormBuilderView-BYL42M0d.js} +499 -476
  3. package/dist/chunks/FormBuilderView-BYL42M0d.js.map +1 -0
  4. package/dist/chunks/FormBuilderView-aBcA-_tt.cjs +3 -0
  5. package/dist/chunks/FormBuilderView-aBcA-_tt.cjs.map +1 -0
  6. package/dist/chunks/FormRendererView-DRFi_IH7.cjs +4 -0
  7. package/dist/chunks/FormRendererView-DRFi_IH7.cjs.map +1 -0
  8. package/dist/chunks/FormRendererView-cZGOOjU5.js +986 -0
  9. package/dist/chunks/FormRendererView-cZGOOjU5.js.map +1 -0
  10. package/dist/chunks/{admin-pickers-DLlG_1du.js → admin-pickers-DxhzECkD.js} +52 -51
  11. package/dist/chunks/admin-pickers-DxhzECkD.js.map +1 -0
  12. package/dist/chunks/admin-pickers-qe3j--gX.cjs +2 -0
  13. package/dist/chunks/admin-pickers-qe3j--gX.cjs.map +1 -0
  14. package/dist/chunks/approval-instance-list-page-CPXMP3PL.js.map +1 -1
  15. package/dist/chunks/approval-instance-list-page-ax0pm8bt.cjs.map +1 -1
  16. package/dist/chunks/auth-provider-4BeCw7cI.cjs.map +1 -1
  17. package/dist/chunks/auth-provider-B5oPmvk2.js.map +1 -1
  18. package/dist/chunks/bpm-form-field-Bc6k4ZEO.cjs.map +1 -1
  19. package/dist/chunks/bpm-form-field-Cao0rMol.js.map +1 -1
  20. package/dist/chunks/{categories-DGlxuC6X.js → categories-1gKxeEqw.js} +4 -10
  21. package/dist/chunks/categories-1gKxeEqw.js.map +1 -0
  22. package/dist/chunks/{categories-Yid05WAX.cjs → categories-DjENouRm.cjs} +2 -2
  23. package/dist/chunks/categories-DjENouRm.cjs.map +1 -0
  24. package/dist/chunks/{compose-CSWbRgJJ.js → compose-DO6n0NJi.js} +5 -5
  25. package/dist/chunks/compose-DO6n0NJi.js.map +1 -0
  26. package/dist/chunks/compose-DUH9cQ-L.cjs +2 -0
  27. package/dist/chunks/compose-DUH9cQ-L.cjs.map +1 -0
  28. package/dist/chunks/dashboard-page-BWQBSGDq.cjs +2 -0
  29. package/dist/chunks/dashboard-page-BWQBSGDq.cjs.map +1 -0
  30. package/dist/chunks/{dashboard-page-CeCLV1tp.js → dashboard-page-DdBvV6YI.js} +15 -16
  31. package/dist/chunks/dashboard-page-DdBvV6YI.js.map +1 -0
  32. package/dist/chunks/delegations-BLzYnOae.cjs +2 -0
  33. package/dist/chunks/delegations-BLzYnOae.cjs.map +1 -0
  34. package/dist/chunks/delegations-Ckf03icM.cjs +2 -0
  35. package/dist/chunks/delegations-Ckf03icM.cjs.map +1 -0
  36. package/dist/chunks/{delegations-DRupxJ4_.js → delegations-MxF3uJGW.js} +205 -215
  37. package/dist/chunks/delegations-MxF3uJGW.js.map +1 -0
  38. package/dist/chunks/{delegations-B8gLSt0i.js → delegations-_b4_xBit.js} +167 -173
  39. package/dist/chunks/delegations-_b4_xBit.js.map +1 -0
  40. package/dist/chunks/designer-2YvjP_GU.cjs +65 -0
  41. package/dist/chunks/designer-2YvjP_GU.cjs.map +1 -0
  42. package/dist/chunks/{designer-BtsIL0BB.js → designer-B-cfiob9.js} +1334 -1254
  43. package/dist/chunks/designer-B-cfiob9.js.map +1 -0
  44. package/dist/chunks/{detail-C8NOqY0p.js → detail-C6NdVijG.js} +852 -841
  45. package/dist/chunks/detail-C6NdVijG.js.map +1 -0
  46. package/dist/chunks/detail-DKobK4Cg.cjs +2 -0
  47. package/dist/chunks/detail-DKobK4Cg.cjs.map +1 -0
  48. package/dist/chunks/format-date-time-CB-LxzqT.js.map +1 -1
  49. package/dist/chunks/format-date-time-D-cx5M8z.cjs.map +1 -1
  50. package/dist/chunks/format-member-label-DudVI55w.js +13 -0
  51. package/dist/chunks/format-member-label-DudVI55w.js.map +1 -0
  52. package/dist/chunks/format-member-label-t7ANTF62.cjs +2 -0
  53. package/dist/chunks/format-member-label-t7ANTF62.cjs.map +1 -0
  54. package/dist/chunks/login-AtVxZBsC.cjs.map +1 -1
  55. package/dist/chunks/login-C6qlTC6F.js.map +1 -1
  56. package/dist/chunks/notifications-Bc4mgSds.cjs.map +1 -1
  57. package/dist/chunks/notifications-DJ5wzCye.js.map +1 -1
  58. package/dist/chunks/{orgs-BpqVu5ka.js → orgs-Bpp1U60k.js} +538 -557
  59. package/dist/chunks/orgs-Bpp1U60k.js.map +1 -0
  60. package/dist/chunks/orgs-ywaE1_02.cjs +2 -0
  61. package/dist/chunks/orgs-ywaE1_02.cjs.map +1 -0
  62. package/dist/chunks/providers-DHtDZFNA.cjs.map +1 -1
  63. package/dist/chunks/providers-J5eyByQj.js.map +1 -1
  64. package/dist/chunks/router-adapter--gYs13E8.cjs.map +1 -1
  65. package/dist/chunks/router-adapter-DftlFTOd.js.map +1 -1
  66. package/dist/chunks/routes-config-C1j_vFKo.cjs.map +1 -1
  67. package/dist/chunks/routes-config-yZbESPlw.js.map +1 -1
  68. package/dist/chunks/task-node-label-BF6UllxP.cjs +2 -0
  69. package/dist/chunks/task-node-label-BF6UllxP.cjs.map +1 -0
  70. package/dist/chunks/task-node-label-CWZgOBj0.js +9 -0
  71. package/dist/chunks/task-node-label-CWZgOBj0.js.map +1 -0
  72. package/dist/chunks/use-bpm-member-D57LKe_u.js.map +1 -1
  73. package/dist/chunks/use-bpm-member-DpNAQtNC.cjs.map +1 -1
  74. package/dist/chunks/users-BSVo_eNe.js +215 -0
  75. package/dist/chunks/users-BSVo_eNe.js.map +1 -0
  76. package/dist/chunks/users-DFSBTDMy.cjs +2 -0
  77. package/dist/chunks/users-DFSBTDMy.cjs.map +1 -0
  78. package/dist/index.cjs +1 -1
  79. package/dist/index.cjs.map +1 -1
  80. package/dist/index.js +2 -2
  81. package/dist/index.js.map +1 -1
  82. package/dist/lib/format-member-label.d.ts +12 -0
  83. package/dist/lib/member-profile-resolution.d.ts +48 -0
  84. package/dist/lib/routes-config.d.ts +1 -1
  85. package/dist/lib/task-node-label.d.ts +10 -0
  86. package/dist/next/index.cjs.map +1 -1
  87. package/dist/next/index.js.map +1 -1
  88. package/dist/next/workflow-chat-route.cjs.map +1 -1
  89. package/dist/next/workflow-chat-route.js.map +1 -1
  90. package/dist/pages/admin/delegations/index.cjs +1 -1
  91. package/dist/pages/admin/delegations/index.cjs.map +1 -1
  92. package/dist/pages/admin/delegations/index.js +1 -1
  93. package/dist/pages/admin/delegations/index.js.map +1 -1
  94. package/dist/pages/admin/orgs/index.cjs +1 -1
  95. package/dist/pages/admin/orgs/index.cjs.map +1 -1
  96. package/dist/pages/admin/orgs/index.js +1 -1
  97. package/dist/pages/admin/orgs/index.js.map +1 -1
  98. package/dist/pages/admin/users/index.cjs +1 -1
  99. package/dist/pages/admin/users/index.cjs.map +1 -1
  100. package/dist/pages/admin/users/index.js +1 -1
  101. package/dist/pages/admin/users/index.js.map +1 -1
  102. package/dist/pages/admin/webhook-endpoints/index.cjs.map +1 -1
  103. package/dist/pages/admin/webhook-endpoints/index.js.map +1 -1
  104. package/dist/pages/cc/index.cjs.map +1 -1
  105. package/dist/pages/cc/index.js.map +1 -1
  106. package/dist/pages/dashboard/index.cjs.map +1 -1
  107. package/dist/pages/dashboard/index.js.map +1 -1
  108. package/dist/pages/delegations/index.cjs +1 -1
  109. package/dist/pages/delegations/index.cjs.map +1 -1
  110. package/dist/pages/delegations/index.js +1 -1
  111. package/dist/pages/delegations/index.js.map +1 -1
  112. package/dist/pages/inbox/index.cjs.map +1 -1
  113. package/dist/pages/inbox/index.js.map +1 -1
  114. package/dist/pages/instances/detail/index.cjs +1 -1
  115. package/dist/pages/instances/detail/index.cjs.map +1 -1
  116. package/dist/pages/instances/detail/index.js +1 -1
  117. package/dist/pages/instances/detail/index.js.map +1 -1
  118. package/dist/pages/instances/new/index.cjs.map +1 -1
  119. package/dist/pages/instances/new/index.js.map +1 -1
  120. package/dist/pages/login/index.cjs.map +1 -1
  121. package/dist/pages/login/index.js.map +1 -1
  122. package/dist/pages/root/index.cjs.map +1 -1
  123. package/dist/pages/root/index.js.map +1 -1
  124. package/dist/pages/search/index.cjs.map +1 -1
  125. package/dist/pages/search/index.js.map +1 -1
  126. package/dist/pages/sent/index.cjs.map +1 -1
  127. package/dist/pages/sent/index.js.map +1 -1
  128. package/dist/pages/settings/notifications/index.cjs.map +1 -1
  129. package/dist/pages/settings/notifications/index.js.map +1 -1
  130. package/dist/pages/templates/categories/index.cjs +1 -1
  131. package/dist/pages/templates/categories/index.cjs.map +1 -1
  132. package/dist/pages/templates/categories/index.js +1 -1
  133. package/dist/pages/templates/categories/index.js.map +1 -1
  134. package/dist/pages/templates/compose/index.cjs +1 -1
  135. package/dist/pages/templates/compose/index.cjs.map +1 -1
  136. package/dist/pages/templates/compose/index.js +1 -1
  137. package/dist/pages/templates/compose/index.js.map +1 -1
  138. package/dist/pages/templates/designer/index.cjs +1 -1
  139. package/dist/pages/templates/designer/index.cjs.map +1 -1
  140. package/dist/pages/templates/designer/index.js +1 -1
  141. package/dist/pages/templates/designer/index.js.map +1 -1
  142. package/dist/pages/templates/index.cjs.map +1 -1
  143. package/dist/pages/templates/index.js.map +1 -1
  144. package/dist/pages/templates/versions/index.cjs.map +1 -1
  145. package/dist/pages/templates/versions/index.js.map +1 -1
  146. package/dist/views/admin/delegations/index.cjs +1 -1
  147. package/dist/views/admin/delegations/index.js +1 -2
  148. package/dist/views/admin/index.cjs +1 -1
  149. package/dist/views/admin/index.js +3 -3
  150. package/dist/views/admin/orgs/index.cjs +1 -1
  151. package/dist/views/admin/orgs/index.js +1 -2
  152. package/dist/views/admin/users/index.cjs +1 -1
  153. package/dist/views/admin/users/index.js +1 -2
  154. package/dist/views/admin/webhook-endpoints/index.cjs.map +1 -1
  155. package/dist/views/admin/webhook-endpoints/index.js.map +1 -1
  156. package/dist/views/cc/index.cjs.map +1 -1
  157. package/dist/views/cc/index.js.map +1 -1
  158. package/dist/views/dashboard/index.cjs +1 -1
  159. package/dist/views/dashboard/index.cjs.map +1 -1
  160. package/dist/views/dashboard/index.js +1 -1
  161. package/dist/views/dashboard/index.js.map +1 -1
  162. package/dist/views/delegations/index.cjs +1 -1
  163. package/dist/views/delegations/index.js +1 -2
  164. package/dist/views/forms/builder/index.cjs +1 -1
  165. package/dist/views/forms/builder/index.js +1 -2
  166. package/dist/views/forms/renderer/form-field-link.d.ts +16 -0
  167. package/dist/views/forms/renderer/index.cjs +1 -1
  168. package/dist/views/forms/renderer/index.js +1 -2
  169. package/dist/views/forms/renderer/member-field-options.d.ts +39 -0
  170. package/dist/views/forms/renderer/member-field.d.ts +21 -0
  171. package/dist/views/inbox/index.cjs +1 -1
  172. package/dist/views/inbox/index.cjs.map +1 -1
  173. package/dist/views/inbox/index.js +101 -102
  174. package/dist/views/inbox/index.js.map +1 -1
  175. package/dist/views/instances/detail/index.cjs +1 -1
  176. package/dist/views/instances/detail/index.js +1 -2
  177. package/dist/views/instances/detail/sections/container-helpers.d.ts +3 -2
  178. package/dist/views/instances/detail/submitted-by.d.ts +23 -0
  179. package/dist/views/instances/index.js +1 -2
  180. package/dist/views/instances/new/index.cjs +1 -1
  181. package/dist/views/instances/new/index.cjs.map +1 -1
  182. package/dist/views/instances/new/index.js +4 -11
  183. package/dist/views/instances/new/index.js.map +1 -1
  184. package/dist/views/login/index.js +1 -2
  185. package/dist/views/search/index.cjs.map +1 -1
  186. package/dist/views/search/index.js.map +1 -1
  187. package/dist/views/sent/SentView.d.ts +1 -1
  188. package/dist/views/sent/index.cjs +1 -1
  189. package/dist/views/sent/index.cjs.map +1 -1
  190. package/dist/views/sent/index.js +2 -2
  191. package/dist/views/sent/index.js.map +1 -1
  192. package/dist/views/settings/index.js +1 -2
  193. package/dist/views/settings/notifications/index.js +1 -2
  194. package/dist/views/templates/categories/index.cjs +1 -1
  195. package/dist/views/templates/categories/index.js +1 -2
  196. package/dist/views/templates/compose/index.cjs +1 -1
  197. package/dist/views/templates/compose/index.js +1 -2
  198. package/dist/views/templates/designer/designer-version-labels.d.ts +12 -0
  199. package/dist/views/templates/designer/dry-run-assignee-label.d.ts +28 -0
  200. package/dist/views/templates/designer/dry-run-sample-data.d.ts +9 -0
  201. package/dist/views/templates/designer/dynamic-form-resolver-options.d.ts +35 -0
  202. package/dist/views/templates/designer/index.cjs +1 -1
  203. package/dist/views/templates/designer/index.js +1 -2
  204. package/dist/views/templates/index.cjs +1 -1
  205. package/dist/views/templates/index.cjs.map +1 -1
  206. package/dist/views/templates/index.js +1 -1
  207. package/dist/views/templates/index.js.map +1 -1
  208. package/dist/views/templates/versions/index.cjs.map +1 -1
  209. package/dist/views/templates/versions/index.js.map +1 -1
  210. package/package.json +5 -5
  211. package/dist/chunks/FormBuilderView-BYLN6W-P.js.map +0 -1
  212. package/dist/chunks/FormBuilderView-VmdPVbg7.cjs +0 -3
  213. package/dist/chunks/FormBuilderView-VmdPVbg7.cjs.map +0 -1
  214. package/dist/chunks/FormRendererView-Bs8lTb4k.cjs +0 -2
  215. package/dist/chunks/FormRendererView-Bs8lTb4k.cjs.map +0 -1
  216. package/dist/chunks/FormRendererView-UPowZZgw.js +0 -798
  217. package/dist/chunks/FormRendererView-UPowZZgw.js.map +0 -1
  218. package/dist/chunks/admin-pickers-Btvij1at.cjs +0 -2
  219. package/dist/chunks/admin-pickers-Btvij1at.cjs.map +0 -1
  220. package/dist/chunks/admin-pickers-DLlG_1du.js.map +0 -1
  221. package/dist/chunks/categories-DGlxuC6X.js.map +0 -1
  222. package/dist/chunks/categories-Yid05WAX.cjs.map +0 -1
  223. package/dist/chunks/compose-CHZoX-H0.cjs +0 -2
  224. package/dist/chunks/compose-CHZoX-H0.cjs.map +0 -1
  225. package/dist/chunks/compose-CSWbRgJJ.js.map +0 -1
  226. package/dist/chunks/dashboard-page-CeCLV1tp.js.map +0 -1
  227. package/dist/chunks/dashboard-page-DooFJsxM.cjs +0 -2
  228. package/dist/chunks/dashboard-page-DooFJsxM.cjs.map +0 -1
  229. package/dist/chunks/delegations-8LsxcQM4.cjs +0 -2
  230. package/dist/chunks/delegations-8LsxcQM4.cjs.map +0 -1
  231. package/dist/chunks/delegations-B8gLSt0i.js.map +0 -1
  232. package/dist/chunks/delegations-DRupxJ4_.js.map +0 -1
  233. package/dist/chunks/delegations-DlYwMiAW.cjs +0 -2
  234. package/dist/chunks/delegations-DlYwMiAW.cjs.map +0 -1
  235. package/dist/chunks/designer-BtsIL0BB.js.map +0 -1
  236. package/dist/chunks/designer-Dm6cX2kZ.cjs +0 -65
  237. package/dist/chunks/designer-Dm6cX2kZ.cjs.map +0 -1
  238. package/dist/chunks/detail-C8NOqY0p.js.map +0 -1
  239. package/dist/chunks/detail-CX-3hZoL.cjs +0 -2
  240. package/dist/chunks/detail-CX-3hZoL.cjs.map +0 -1
  241. package/dist/chunks/orgs-BpqVu5ka.js.map +0 -1
  242. package/dist/chunks/orgs-D0-5BaHT.cjs +0 -2
  243. package/dist/chunks/orgs-D0-5BaHT.cjs.map +0 -1
  244. package/dist/chunks/users-C9LA-Rd7.cjs +0 -2
  245. package/dist/chunks/users-C9LA-Rd7.cjs.map +0 -1
  246. package/dist/chunks/users-FWrb3ehW.js +0 -214
  247. package/dist/chunks/users-FWrb3ehW.js.map +0 -1
@@ -0,0 +1,986 @@
1
+ "use client";
2
+ import { t as e } from "./bpm-form-field-Cao0rMol.js";
3
+ import { t } from "./format-member-label-DudVI55w.js";
4
+ import { useCallback as n, useEffect as r, useMemo as i, useRef as a, useState as o } from "react";
5
+ import { AutoComplete as s, Button as c, CheckboxGroup as l, DatePicker as u, DateTimePicker as d, Input as f, RadioGroup as p, Select as m, Table as h, Textarea as g, Toggle as _, Typography as v, Upload as y } from "@mezzanine-ui/react";
6
+ import { resolveMembers as b, searchMembers as x } from "@rytass/bpm-core-client";
7
+ import { jsx as S, jsxs as C } from "react/jsx-runtime";
8
+ import { PlusIcon as w, TrashIcon as T } from "@mezzanine-ui/icons";
9
+ import { buildFormRendererValues as E, clampOptionalNumber as ee, createFormTableRow as te, formatDatePickerValue as D, formatDateTimePickerValue as O, isFormRendererFieldReadonly as k, isFormRendererFieldRequired as A, mergeFormDataSourceOptions as j, parseOptionalNumberInput as M, previewFormFieldOptions as ne, previewResolveFormFieldOptions as re, readDatePickerValue as ie, readFieldOptionAsSelectOption as N, readFormDataSourceErrorCode as ae, readFormDataSourceErrorMessage as oe, readFormDataSourceSelectedValues as se, readFormDataSourceValueSignature as P, readFormFieldOptions as ce, readFormTableCellPath as F, readFormTableRowBounds as le, readFormTableRows as I, readMissingFormDataSourceDependencies as ue, readMissingFormDataSourceOptionValues as L, readSelectOption as R, readSelectedFormDataSourceOptions as z, readVisibleFormRendererFields as de, resolveFormFieldOptions as fe } from "@rytass/bpm-core-client/form";
10
+ import { isFormDataSourceFieldDefinition as B, isFormStaticOptionFieldDefinition as pe, isFormTableCellValue as V, isTableFieldDefinition as me, readFormFieldSelectionMode as H, readFormMemberIds as U } from "@rytass/bpm-core-shared/form";
11
+ //#region src/views/forms/renderer/form-data-source-field.ts
12
+ var he = {
13
+ canRetry: !1,
14
+ error: null,
15
+ hasValue: !1,
16
+ hasNextPage: !1,
17
+ invalidValues: [],
18
+ onReachBottom: () => void 0,
19
+ onSearch: () => void 0,
20
+ options: [],
21
+ retry: () => void 0,
22
+ status: "IDLE"
23
+ }, W = [], ge = 10, _e = ["FORM_DATA_SOURCE_SEARCH_NOT_SUPPORTED", "FORM_DATA_SOURCE_SEARCH_TOO_SHORT"];
24
+ function G(e) {
25
+ let t = B(e.field) ? e.field : null, s = e.fieldPath ?? t?.fieldKey ?? "", c = t ? e.optionSnapshots?.[e.snapshotKey ?? t.fieldKey] : void 0, l = t ? JSON.stringify({
26
+ dataSource: t.dataSource,
27
+ fieldKey: t.fieldKey,
28
+ type: t.type
29
+ }) : "", u = JSON.stringify(c ?? null), d = i(() => c?.options ?? [], [u]), f = JSON.stringify(e.formData), p = JSON.stringify(e.initialFormData ?? {}), m = JSON.stringify(e.schema), h = JSON.stringify(e.uiSchema), g = e.context?.kind, _ = e.context?.kind === "runtime" ? e.context.instanceId : void 0, v = e.context?.kind === "runtime" ? e.context.templateId : void 0, y = JSON.stringify(e.row?.values ?? null), b = JSON.stringify(e.row?.initialValues ?? null), x = t ? e.row ? e.row.values[t.fieldKey] : e.formData[t.fieldKey] : void 0, S = P(x), C = i(() => se(x), [S]), w = C.length > 0, T = t ? JSON.stringify({
30
+ bindings: t.dataSource.bindings.map((t) => t.from.kind === "FIELD" ? {
31
+ fieldKey: t.from.fieldKey,
32
+ value: e.formData[t.from.fieldKey]
33
+ } : t.from.kind === "CONSTANT" ? { value: t.from.value } : {
34
+ columnKey: t.from.columnKey,
35
+ value: e.row?.values[t.from.columnKey]
36
+ }),
37
+ value: e.initialFormData !== void 0 || e.initialValue !== void 0 ? x : void 0
38
+ }) : "", E = i(() => {
39
+ if (g === "preview") return { kind: "preview" };
40
+ if (g === "runtime" && !e.readonly) return {
41
+ instanceId: _,
42
+ kind: "runtime",
43
+ templateId: v
44
+ };
45
+ }, [
46
+ _,
47
+ g,
48
+ v,
49
+ e.readonly
50
+ ]), ee = t ? (e.initialFormData !== void 0 || e.initialValue !== void 0) && P(e.initialValue) !== S : !1, te = t ? e.initialFormData !== void 0 && t.dataSource.bindings.some((t) => t.from.kind === "FIELD" ? P(e.initialFormData?.[t.from.fieldKey]) !== P(e.formData[t.from.fieldKey]) : t.from.kind === "ROW_FIELD" && e.row?.initialValues ? P(e.row.initialValues[t.from.columnKey]) !== P(e.row.values[t.from.columnKey]) : !1) : !1, D = !(!c && !w || !ee && !te), O = !!(t && E && D && w), k = ye({
51
+ hasSnapshot: !!c,
52
+ hasValue: w,
53
+ isStale: D,
54
+ readonly: e.readonly
55
+ }), A = !!(t && E && t.type !== "autocomplete"), M = be(D, A && t !== null && ue(t, e.formData, e.row?.values).length > 0), [ie, N] = o([]), [F, le] = o(""), [I, L] = o(null), [R, de] = o(null), [pe, V] = o(() => t ? A ? M : k : "IDLE"), [me, H] = o(null), U = a(0), W = a(0), G = a(0), K = a(null), q = a(null), J = a({
56
+ cursor: null,
57
+ searchText: ""
58
+ }), Y = i(() => we(e.formData), [f]), X = i(() => e.row ? we(e.row.values) : void 0, [y]), Te = i(() => j(d, ie), [ie, d]), Ee = R && R.signature === T ? R : null, De = O && !Ee, Oe = ve({
59
+ options: Te,
60
+ resolution: Ee,
61
+ resolvePending: De,
62
+ value: x
63
+ }), Z = n((n, r) => {
64
+ if (!t || !E) return;
65
+ let i = W.current + 1;
66
+ W.current = i, J.current = {
67
+ cursor: r,
68
+ searchText: n
69
+ }, K.current?.abort();
70
+ let a = new AbortController();
71
+ K.current = a, V(M), H(null), (E.kind === "preview" ? ne({
72
+ cursor: r,
73
+ fieldKey: s,
74
+ formData: Y,
75
+ rowValues: X,
76
+ schema: e.schema,
77
+ searchText: n,
78
+ signal: a.signal,
79
+ uiSchema: e.uiSchema
80
+ }) : ce({
81
+ cursor: r,
82
+ fieldKey: s,
83
+ formData: Y,
84
+ instanceId: E.instanceId ?? null,
85
+ rowValues: X,
86
+ searchText: n,
87
+ signal: a.signal,
88
+ templateId: E.templateId ?? null
89
+ })).then((e) => {
90
+ Ce(a, W, i) || (N((t) => {
91
+ let n = z(x, t);
92
+ return j(n, r ? t : [], e.options);
93
+ }), L(e.nextCursor), H(null), U.current = r ? U.current + e.options.length : e.options.length, e.nextCursor && e.options.length > 0 && U.current < ge && Q.current(n, e.nextCursor), V(e.waitingForFieldKeys.length ? "WAITING_FOR_DEPENDENCIES" : "VALID"));
94
+ }).catch((e) => {
95
+ if (Ce(a, W, i)) return;
96
+ let t = oe(e) ?? "選項來源暫時無法使用。", n = ae(e);
97
+ H(t), V(xe(!!(n && _e.includes(n)), w));
98
+ });
99
+ }, [
100
+ S,
101
+ l,
102
+ E,
103
+ w,
104
+ M,
105
+ s,
106
+ Y,
107
+ X,
108
+ m,
109
+ h
110
+ ]), Q = a(Z);
111
+ Q.current = Z;
112
+ let ke = n(() => {
113
+ if (!t || !E || C.length === 0) return;
114
+ let n = T, r = G.current + 1;
115
+ G.current = r, q.current?.abort();
116
+ let i = new AbortController();
117
+ q.current = i, H(null), (E.kind === "preview" ? re({
118
+ fieldKey: s,
119
+ formData: Y,
120
+ rowValues: X,
121
+ schema: e.schema,
122
+ signal: i.signal,
123
+ uiSchema: e.uiSchema,
124
+ values: C
125
+ }) : fe({
126
+ fieldKey: s,
127
+ formData: Y,
128
+ instanceId: E.instanceId ?? null,
129
+ rowValues: X,
130
+ signal: i.signal,
131
+ templateId: E.templateId ?? null,
132
+ values: C
133
+ })).then((e) => {
134
+ Ce(i, G, r) || (e.waitingForFieldKeys.length ? V("WAITING_FOR_DEPENDENCIES") : (N((t) => j(t, e.options)), de({
135
+ signature: n,
136
+ unresolvedValues: e.unresolvedValues
137
+ }), V("VALID")));
138
+ }).catch((e) => {
139
+ Ce(i, G, r) || (V("UNAVAILABLE"), H(oe(e) ?? "選項來源暫時無法使用。"));
140
+ });
141
+ }, [
142
+ T,
143
+ l,
144
+ E,
145
+ s,
146
+ Y,
147
+ X,
148
+ m,
149
+ C,
150
+ h
151
+ ]), Ae = a(ke);
152
+ Ae.current = ke, r(() => {
153
+ W.current += 1, K.current?.abort(), N((e) => z(x, e)), L((e) => e === null ? e : null), le((e) => e && ""), H((e) => e && null), t ? A ? Q.current("", null) : V(k) : V("IDLE");
154
+ }, [
155
+ A,
156
+ l,
157
+ E,
158
+ T,
159
+ p,
160
+ b,
161
+ e.readonly,
162
+ M,
163
+ k,
164
+ u
165
+ ]), r(() => {
166
+ O && Ae.current();
167
+ }, [
168
+ T,
169
+ E,
170
+ O
171
+ ]), r(() => () => {
172
+ K.current?.abort(), q.current?.abort();
173
+ }, []);
174
+ let je = n((e) => {
175
+ le(e), N((e) => z(x, e)), L(null), Z(e, null);
176
+ }, [Z]), Me = n(() => {
177
+ I && Z(F, I);
178
+ }, [
179
+ Z,
180
+ I,
181
+ F
182
+ ]), Ne = n(() => {
183
+ E && (Z(J.current.searchText, J.current.cursor), O && Ae.current());
184
+ }, [
185
+ E,
186
+ Z,
187
+ O
188
+ ]);
189
+ return t ? {
190
+ canRetry: !!E,
191
+ error: me,
192
+ hasValue: w,
193
+ hasNextPage: !!I,
194
+ invalidValues: Oe,
195
+ onReachBottom: Me,
196
+ onSearch: je,
197
+ options: Te,
198
+ retry: Ne,
199
+ status: Se({
200
+ invalidValues: Oe,
201
+ resolvePending: De,
202
+ status: pe
203
+ })
204
+ } : he;
205
+ }
206
+ function K(e) {
207
+ switch (e.status) {
208
+ case "WAITING_FOR_DEPENDENCIES": return "請先填寫相依欄位。";
209
+ case "STALE": return "選項需要重新載入或驗證。";
210
+ case "INVALID": return e.invalidValues.length ? `無法辨識選項:${e.invalidValues.join("、")}` : "目前選項已失效,請重新選擇。";
211
+ case "UNAVAILABLE": return e.error ?? "選項來源暫時無法使用。";
212
+ case "VALID": return e.error ?? (e.options.length ? null : "目前沒有可用選項。");
213
+ default: return e.error;
214
+ }
215
+ }
216
+ function q(e) {
217
+ return e.hasValue && e.status !== "VALID";
218
+ }
219
+ function J(e) {
220
+ let t = e.filter(q);
221
+ return t.length === 0 ? null : t.every((e) => e.status === "LOADING" || e.status === "STALE") ? "選項驗證中,請稍候再送出。" : "請先完成動態選項驗證。";
222
+ }
223
+ function ve(e) {
224
+ return e.resolution ? e.resolution.unresolvedValues : e.resolvePending ? W : L(e.value, e.options);
225
+ }
226
+ function ye(e) {
227
+ return e.isStale ? "STALE" : e.hasSnapshot ? "VALID" : e.readonly && e.hasValue ? "UNAVAILABLE" : "IDLE";
228
+ }
229
+ function be(e, t) {
230
+ return t ? "WAITING_FOR_DEPENDENCIES" : e ? "STALE" : "LOADING";
231
+ }
232
+ function xe(e, t) {
233
+ return e ? t ? "VALID" : "IDLE" : "UNAVAILABLE";
234
+ }
235
+ function Se(e) {
236
+ return e.status === "LOADING" || e.status === "UNAVAILABLE" || e.status === "WAITING_FOR_DEPENDENCIES" ? e.status : e.invalidValues.length ? "INVALID" : e.resolvePending ? "STALE" : e.status;
237
+ }
238
+ function Ce(e, t, n) {
239
+ return e.signal.aborted || t.current !== n;
240
+ }
241
+ function we(e) {
242
+ return Object.entries(e).reduce((e, [t, n]) => n === void 0 ? e : {
243
+ ...e,
244
+ [t]: n
245
+ }, {});
246
+ }
247
+ //#endregion
248
+ //#region src/views/forms/renderer/form-field-link.ts
249
+ var Y = /\s/u;
250
+ function X(e) {
251
+ return [...e].some((e) => {
252
+ let t = e.codePointAt(0) ?? 0;
253
+ return t <= 32 || t >= 127 && t <= 160 || Y.test(e);
254
+ });
255
+ }
256
+ var Te = /^https?:\/\//iu;
257
+ function Ee(e) {
258
+ return typeof e != "string" || !e || e.includes("\\") || X(e) ? null : e.startsWith("/") ? !e.startsWith("//") && Oe(e) ? {
259
+ external: !1,
260
+ href: e
261
+ } : null : Te.test(e) && Z(e) ? {
262
+ external: !0,
263
+ href: e
264
+ } : null;
265
+ }
266
+ var De = "http://placeholder.invalid";
267
+ function Oe(e) {
268
+ try {
269
+ let t = new URL(e, De);
270
+ return t.origin === De && !t.pathname.startsWith("//");
271
+ } catch {
272
+ return !1;
273
+ }
274
+ }
275
+ function Z(e) {
276
+ try {
277
+ let t = new URL(e);
278
+ return (t.protocol === "http:" || t.protocol === "https:") && !!t.hostname && !t.username && !t.password;
279
+ } catch {
280
+ return !1;
281
+ }
282
+ }
283
+ async function Q(e, t, n = {}) {
284
+ let r = n.maxPerIdRequests ?? 20, i = Math.max(1, n.concurrency ?? 4);
285
+ try {
286
+ return {
287
+ failedIds: [],
288
+ profiles: await t(e),
289
+ skippedIds: []
290
+ };
291
+ } catch {
292
+ if (e.length <= 1) return {
293
+ failedIds: e,
294
+ profiles: [],
295
+ skippedIds: []
296
+ };
297
+ }
298
+ let a = e.slice(0, r), o = await Ae(a, i, (e) => t([e]));
299
+ return {
300
+ failedIds: a.filter((e, t) => o[t].status === "rejected"),
301
+ profiles: o.flatMap((e) => e.status === "fulfilled" ? e.value : []),
302
+ skippedIds: e.slice(r)
303
+ };
304
+ }
305
+ function ke(e, t) {
306
+ return e.filter((e) => !t.has(e));
307
+ }
308
+ async function Ae(e, t, n) {
309
+ let r = [], i = 0;
310
+ async function a() {
311
+ for (; i < e.length;) {
312
+ let t = i;
313
+ i += 1, r[t] = await n(e[t]).then((e) => ({
314
+ status: "fulfilled",
315
+ value: e
316
+ }), (e) => ({
317
+ reason: e,
318
+ status: "rejected"
319
+ }));
320
+ }
321
+ }
322
+ return await Promise.all(Array.from({ length: Math.min(t, e.length) }, a)), r;
323
+ }
324
+ //#endregion
325
+ //#region src/views/forms/renderer/member-field-options.ts
326
+ var je = "未知會員";
327
+ function Me(e) {
328
+ return {
329
+ id: e.memberId,
330
+ name: t(e.name, e.email)
331
+ };
332
+ }
333
+ function Ne(e) {
334
+ return {
335
+ id: e,
336
+ name: je,
337
+ unresolved: !0
338
+ };
339
+ }
340
+ function Pe(e, t) {
341
+ let n = new Map(t.filter((e) => !e.unresolved).map((e) => [e.id, e])), r = new Set(e.map((e) => e.id)), i = t.filter((e, n) => !r.has(e.id) && t.findIndex((t) => t.id === e.id) === n), a = e.map((e) => (e.unresolved ? n.get(e.id) : void 0) ?? e);
342
+ return i.length > 0 || a.some((t, n) => t !== e[n]) ? [...a, ...i] : e;
343
+ }
344
+ function Fe(e, t) {
345
+ let n = new Set(t.filter((e) => !e.unresolved).map((e) => e.id));
346
+ return U(e).filter((e) => !n.has(e));
347
+ }
348
+ function Ie(e, t) {
349
+ return U(e).map((e) => t.find((t) => t.id === e) ?? Ne(e));
350
+ }
351
+ function Le(e, t) {
352
+ if (e.length !== 0) return t ? e.map((e) => e.id) : e[0]?.id;
353
+ }
354
+ //#endregion
355
+ //#region src/views/forms/renderer/member-field.tsx
356
+ function Re({ multiple: e, name: t, onChange: n, placeholder: i, readonly: c, size: l, value: u }) {
357
+ let [d, f] = o([]), [p, m] = o([]), [h, g] = o(!1), _ = a(0), v = a(/* @__PURE__ */ new Set()), y = Fe(u, d).join("\n");
358
+ r(() => {
359
+ let e = ke(y ? y.split("\n") : [], v.current), t = !1;
360
+ return e.length === 0 ? () => void 0 : (Q(e, b).then(({ profiles: n, skippedIds: r }) => {
361
+ if (t) return;
362
+ let i = n.map(Me), a = e.filter((e) => !i.some((t) => t.id === e)).map(Ne);
363
+ a.filter((e) => !r.includes(e.id)).forEach((e) => v.current.add(e.id)), f((e) => Pe(e, [...i, ...a]));
364
+ }), () => {
365
+ t = !0;
366
+ });
367
+ }, [y]);
368
+ async function C(e) {
369
+ let t = _.current + 1;
370
+ _.current = t, g(!0);
371
+ try {
372
+ let n = (await x(e)).map(Me);
373
+ _.current === t && (m(n), f((e) => Pe(e, n)));
374
+ } catch {
375
+ _.current === t && m([]);
376
+ } finally {
377
+ _.current === t && g(!1);
378
+ }
379
+ }
380
+ let w = Ie(u, d), T = [...Pe(w, p)], E = {
381
+ asyncData: !0,
382
+ clearSearchText: !0,
383
+ disabled: c,
384
+ disabledOptionsFilter: !0,
385
+ emptyText: "沒有符合的成員",
386
+ globalPortal: !0,
387
+ inputProps: {
388
+ autoCapitalize: "none",
389
+ autoCorrect: "off",
390
+ name: t,
391
+ spellCheck: !1
392
+ },
393
+ loading: h,
394
+ loadingText: "搜尋成員中...",
395
+ onSearch: C,
396
+ onVisibilityChange: (e) => {
397
+ e && (m([]), C(""));
398
+ },
399
+ options: T,
400
+ placeholder: i ?? "搜尋姓名或信箱",
401
+ readOnly: c,
402
+ searchDebounceTime: 300,
403
+ size: l
404
+ };
405
+ return e ? /* @__PURE__ */ S(s, {
406
+ ...E,
407
+ mode: "multiple",
408
+ onChange: (e) => n(Le(e, !0)),
409
+ value: [...w]
410
+ }) : /* @__PURE__ */ S(s, {
411
+ ...E,
412
+ mode: "single",
413
+ onChange: (e) => n(Le(e ? [e] : [], !1)),
414
+ value: w[0] ?? null
415
+ });
416
+ }
417
+ //#endregion
418
+ //#region src/views/forms/renderer/FormRendererView.tsx
419
+ var ze = {
420
+ alignItems: "start",
421
+ display: "grid",
422
+ gap: 12,
423
+ gridTemplateColumns: "repeat(12, minmax(0, 1fr))"
424
+ }, Be = { gridColumn: "1 / -1" }, Ve = {
425
+ alignItems: "start",
426
+ display: "grid",
427
+ gap: 8,
428
+ minWidth: 0
429
+ }, He = {
430
+ minWidth: "100%",
431
+ width: "100%"
432
+ };
433
+ function Ue(e) {
434
+ e && (e.style.width = "100%");
435
+ }
436
+ function We({ dataSourceContext: e, dataSourceInitialValues: t, emptyText: n = "尚未建立欄位。", errors: s = {}, maxWidth: c, onChange: l, onDataSourceStateChange: u, onUploadAttachment: d, optionSnapshots: f, readonly: p = !1, schema: m, singleColumn: h = !1, uiSchema: g, value: _ }) {
437
+ let [y, b] = o(() => E(m.fields, _ ?? {})), x = i(() => E(m.fields, _ ?? y), [
438
+ y,
439
+ m.fields,
440
+ _
441
+ ]), C = a(x), w = i(() => de(m, g, x), [
442
+ m,
443
+ g,
444
+ x
445
+ ]);
446
+ r(() => {
447
+ C.current = x;
448
+ }, [x]), r(() => {
449
+ b((e) => E(m.fields, _ ?? e));
450
+ }, [m.fields, _]);
451
+ function T(e, t) {
452
+ let n = {
453
+ ...C.current,
454
+ [e]: t
455
+ };
456
+ C.current = n, _ || b(n), l?.(n);
457
+ }
458
+ return w.length ? /* @__PURE__ */ S("div", {
459
+ style: {
460
+ ...ze,
461
+ ...h ? { width: "100%" } : {}
462
+ },
463
+ children: w.map((n) => /* @__PURE__ */ S(Ge, {
464
+ dataSourceContext: e,
465
+ dataSourceInitialValues: t,
466
+ field: n,
467
+ error: s[n.fieldKey] ?? null,
468
+ errors: s,
469
+ fields: m.fields,
470
+ onChange: T,
471
+ onDataSourceStateChange: u,
472
+ onUploadAttachment: d,
473
+ optionSnapshots: f,
474
+ readonly: p,
475
+ schema: m,
476
+ style: {
477
+ ...Ve,
478
+ gridColumn: `span ${h ? 12 : dt(n, g)}`,
479
+ ...h && !me(n) ? { maxWidth: c } : {}
480
+ },
481
+ value: x[n.fieldKey],
482
+ values: x,
483
+ uiSchema: g
484
+ }, n.fieldKey))
485
+ }) : /* @__PURE__ */ S("div", {
486
+ style: ze,
487
+ children: /* @__PURE__ */ S(v, {
488
+ color: "text-neutral",
489
+ style: Be,
490
+ variant: "body",
491
+ children: m.fields.length > 0 ? "目前條件下沒有可填寫欄位。" : n
492
+ })
493
+ });
494
+ }
495
+ function Ge({ dataSourceContext: t, dataSourceInitialValues: n, error: i, errors: a, field: o, fields: s, onChange: l, onDataSourceStateChange: u, onUploadAttachment: d, optionSnapshots: f, readonly: p, schema: m, style: h, value: g, values: _, uiSchema: y }) {
496
+ let b = A(o, s, _), x = p || k(o, s, _), w = G({
497
+ context: t,
498
+ field: o,
499
+ formData: _,
500
+ initialFormData: n,
501
+ initialValue: n?.[o.fieldKey],
502
+ optionSnapshots: f,
503
+ readonly: x,
504
+ schema: m,
505
+ uiSchema: y
506
+ }), T = K(w), E = JSON.stringify({
507
+ hasValue: w.hasValue,
508
+ invalidValues: w.invalidValues,
509
+ status: w.status
510
+ });
511
+ return r(() => {
512
+ B(o) && u?.(o.fieldKey, {
513
+ hasValue: w.hasValue,
514
+ invalidValues: w.invalidValues,
515
+ status: w.status
516
+ });
517
+ }, [
518
+ E,
519
+ o.fieldKey,
520
+ u
521
+ ]), /* @__PURE__ */ C("div", {
522
+ "data-form-field-key": o.fieldKey,
523
+ style: h,
524
+ children: [
525
+ /* @__PURE__ */ S(e, {
526
+ label: o.label,
527
+ name: o.fieldKey,
528
+ required: b,
529
+ children: me(o) ? /* @__PURE__ */ S(nt, {
530
+ dataSourceContext: t,
531
+ dataSourceInitialValues: n,
532
+ errors: a,
533
+ field: o,
534
+ onChange: l,
535
+ onDataSourceStateChange: u,
536
+ optionSnapshots: f,
537
+ readonly: x,
538
+ schema: m,
539
+ uiSchema: y,
540
+ value: g,
541
+ values: _
542
+ }) : ct(o, g, x, l, d, t, w)
543
+ }),
544
+ i ? /* @__PURE__ */ S(v, {
545
+ color: "text-error",
546
+ variant: "caption",
547
+ children: i
548
+ }) : null,
549
+ T ? /* @__PURE__ */ C("div", {
550
+ style: Ye,
551
+ children: [/* @__PURE__ */ S(v, {
552
+ color: w.status === "INVALID" || w.status === "UNAVAILABLE" ? "text-error" : "text-neutral",
553
+ variant: "caption",
554
+ children: T
555
+ }), w.status === "UNAVAILABLE" && w.canRetry ? /* @__PURE__ */ S(c, {
556
+ onClick: w.retry,
557
+ size: "sub",
558
+ type: "button",
559
+ variant: "base-ghost",
560
+ children: "重試"
561
+ }) : null]
562
+ }) : null
563
+ ]
564
+ });
565
+ }
566
+ var Ke = "(另開新分頁)", qe = "另開新分頁", Je = {
567
+ color: "inherit",
568
+ textDecoration: "underline",
569
+ wordBreak: "break-all"
570
+ }, Ye = {
571
+ alignItems: "center",
572
+ display: "flex",
573
+ gap: 8
574
+ }, Xe = {
575
+ display: "grid",
576
+ gap: 8,
577
+ minWidth: 0,
578
+ width: "100%"
579
+ }, Ze = {
580
+ display: "flex",
581
+ justifyContent: "flex-start"
582
+ }, Qe = {
583
+ maxWidth: "100%",
584
+ overflowX: "auto"
585
+ }, $e = 160, et = 56, tt = {
586
+ display: "grid",
587
+ gap: 4,
588
+ minWidth: 0
589
+ };
590
+ function nt({ dataSourceContext: e, dataSourceInitialValues: t, errors: n, field: i, onChange: s, onDataSourceStateChange: l, optionSnapshots: u, readonly: d, schema: f, uiSchema: p, value: m, values: g }) {
591
+ let _ = I(m), v = le(i), y = a(0), [b, x] = o(() => _.map(() => at(y)));
592
+ r(() => {
593
+ b.length !== _.length && x(_.map(() => at(y)));
594
+ }, [b.length, _.length]);
595
+ function E(e) {
596
+ s(i.fieldKey, e);
597
+ }
598
+ function ee() {
599
+ x([...b, at(y)]), E([..._, te(i.columns)]);
600
+ }
601
+ function D(e) {
602
+ x(b.filter((t, n) => n !== e)), E(_.filter((t, n) => n !== e));
603
+ }
604
+ function O(e, t, n) {
605
+ E(_.map((r, i) => i === e ? ot(r, t, n) : r));
606
+ }
607
+ let k = _.map((e, t) => ({
608
+ ...e,
609
+ index: t,
610
+ key: b[t] ?? `row-${t}`
611
+ })), A = i.columns.map((r) => ({
612
+ key: r.fieldKey,
613
+ render: (a) => /* @__PURE__ */ S(rt, {
614
+ column: r,
615
+ dataSourceContext: e,
616
+ error: n[F(i.fieldKey, a.index, r.fieldKey)] ?? null,
617
+ fieldPath: `${i.fieldKey}.${r.fieldKey}`,
618
+ formData: g,
619
+ initialFormData: t,
620
+ initialRowValues: it(t?.[i.fieldKey], a.index),
621
+ onChange: (e) => O(a.index, r.fieldKey, e),
622
+ onDataSourceStateChange: l,
623
+ optionSnapshots: u,
624
+ path: F(i.fieldKey, a.index, r.fieldKey),
625
+ readonly: d,
626
+ rowValues: _[a.index] ?? {},
627
+ schema: f,
628
+ uiSchema: p
629
+ }, `${b[a.index] ?? a.index}-${r.fieldKey}`),
630
+ title: r.label || r.fieldKey
631
+ })), j = d ? void 0 : {
632
+ render: (e) => [{
633
+ disabled: () => _.length <= v.minRows,
634
+ icon: T,
635
+ iconType: "icon-only",
636
+ name: "刪除此列",
637
+ onClick: () => D(e.index),
638
+ variant: "destructive-ghost"
639
+ }],
640
+ width: 56
641
+ };
642
+ return /* @__PURE__ */ C("div", {
643
+ style: Xe,
644
+ children: [/* @__PURE__ */ S("div", {
645
+ style: Qe,
646
+ children: /* @__PURE__ */ S("div", {
647
+ style: { minWidth: i.columns.length * $e + (j ? et : 0) },
648
+ children: /* @__PURE__ */ S(h, {
649
+ ...j ? { actions: j } : {},
650
+ columns: A,
651
+ dataSource: [...k],
652
+ rowHeightPreset: "roomy",
653
+ showHeader: !0,
654
+ size: "sub"
655
+ })
656
+ })
657
+ }), d ? null : /* @__PURE__ */ S("div", {
658
+ style: Ze,
659
+ children: /* @__PURE__ */ S(c, {
660
+ disabled: _.length >= v.maxRows,
661
+ icon: w,
662
+ iconType: "leading",
663
+ onClick: ee,
664
+ size: "sub",
665
+ type: "button",
666
+ variant: "base-secondary",
667
+ children: i.addRowLabel || "新增一列"
668
+ })
669
+ })]
670
+ });
671
+ }
672
+ function rt({ column: e, dataSourceContext: t, error: n, fieldPath: i, formData: a, initialFormData: o, initialRowValues: s, onChange: l, onDataSourceStateChange: u, optionSnapshots: d, path: f, readonly: p, rowValues: m, schema: h, uiSchema: g }) {
673
+ let _ = st(m, e.fieldKey), y = G({
674
+ context: t,
675
+ field: e,
676
+ fieldPath: i,
677
+ formData: a,
678
+ initialFormData: o,
679
+ initialValue: s ? st(s, e.fieldKey) : void 0,
680
+ optionSnapshots: d,
681
+ readonly: p,
682
+ row: {
683
+ initialValues: s,
684
+ values: m
685
+ },
686
+ schema: h,
687
+ snapshotKey: f,
688
+ uiSchema: g
689
+ }), b = K(y), x = JSON.stringify({
690
+ hasValue: y.hasValue,
691
+ invalidValues: y.invalidValues,
692
+ status: y.status
693
+ });
694
+ return r(() => {
695
+ if (B(e)) return u?.(f, {
696
+ hasValue: y.hasValue,
697
+ invalidValues: y.invalidValues,
698
+ status: y.status
699
+ }), () => {
700
+ u?.(f, {
701
+ hasValue: !1,
702
+ invalidValues: [],
703
+ status: "IDLE"
704
+ });
705
+ };
706
+ }, [
707
+ u,
708
+ f,
709
+ x
710
+ ]), /* @__PURE__ */ C("div", {
711
+ "data-form-field-key": f,
712
+ style: tt,
713
+ children: [
714
+ ct(e, _, p, (e, t) => l(t), void 0, t, y, "sub"),
715
+ n ? /* @__PURE__ */ S(v, {
716
+ color: "text-error",
717
+ variant: "caption",
718
+ children: n
719
+ }) : null,
720
+ b ? /* @__PURE__ */ C("div", {
721
+ style: Ye,
722
+ children: [/* @__PURE__ */ S(v, {
723
+ color: y.status === "INVALID" || y.status === "UNAVAILABLE" ? "text-error" : "text-neutral",
724
+ variant: "caption",
725
+ children: b
726
+ }), y.status === "UNAVAILABLE" && y.canRetry ? /* @__PURE__ */ S(c, {
727
+ onClick: y.retry,
728
+ size: "sub",
729
+ type: "button",
730
+ variant: "base-ghost",
731
+ children: "重試"
732
+ }) : null]
733
+ }) : null
734
+ ]
735
+ });
736
+ }
737
+ function it(e, t) {
738
+ return I(e)[t];
739
+ }
740
+ function at(e) {
741
+ return e.current += 1, `table-row-${e.current}`;
742
+ }
743
+ function ot(e, t, n) {
744
+ return n === void 0 || !V(n) ? Object.fromEntries(Object.entries(e).filter(([e]) => e !== t)) : {
745
+ ...e,
746
+ [t]: n
747
+ };
748
+ }
749
+ function st(e, t) {
750
+ if (e && Object.prototype.hasOwnProperty.call(e, t)) return e[t];
751
+ }
752
+ function ct(e, t, n, r, i, a, o, s = "main") {
753
+ return B(e) ? ut(e, t, n, r, a, o, s) : lt(e, t, n, r, i, s);
754
+ }
755
+ function lt(e, t, n, r, i, a = "main") {
756
+ let o = n && (e.type === "text" || e.type === "textarea") && e.displayAs === "link" ? Ee(t) : null;
757
+ if (o) return /* @__PURE__ */ S(v, {
758
+ color: "text-brand",
759
+ component: "span",
760
+ variant: "body",
761
+ children: /* @__PURE__ */ S("a", {
762
+ href: o.href,
763
+ style: Je,
764
+ ...o.external ? {
765
+ "aria-label": `${o.href}${Ke}`,
766
+ rel: "noopener noreferrer",
767
+ target: "_blank",
768
+ title: qe
769
+ } : {},
770
+ children: o.href
771
+ })
772
+ });
773
+ if (e.type === "textarea") return /* @__PURE__ */ S(g, {
774
+ onChange: (t) => r(e.fieldKey, t.target.value),
775
+ placeholder: e.placeholder ?? "請輸入多行文字",
776
+ readOnly: n,
777
+ ref: Ue,
778
+ rows: 3,
779
+ style: He,
780
+ value: $(t)
781
+ });
782
+ if (e.type === "boolean") return /* @__PURE__ */ S(_, {
783
+ checked: t === !0,
784
+ disabled: n,
785
+ label: "啟用",
786
+ onChange: (t) => r(e.fieldKey, t.target.checked),
787
+ size: a
788
+ });
789
+ if (pe(e) && e.type === "checkbox") {
790
+ let i = e.options.map(N);
791
+ return /* @__PURE__ */ S(m, {
792
+ mode: "multiple",
793
+ onChange: (t) => r(e.fieldKey, t?.length ? t.map((e) => e.id) : void 0),
794
+ options: i,
795
+ placeholder: e.placeholder ?? "請選擇一或多個選項",
796
+ readOnly: n,
797
+ size: a,
798
+ value: i.filter((e) => ft(t).includes(e.id))
799
+ });
800
+ }
801
+ if (pe(e)) {
802
+ let i = e.options.map(N);
803
+ return /* @__PURE__ */ S(m, {
804
+ onChange: (t) => r(e.fieldKey, t?.id ?? void 0),
805
+ options: i,
806
+ placeholder: e.placeholder ?? "請選擇",
807
+ readOnly: n,
808
+ size: a,
809
+ value: R(i, $(t))
810
+ });
811
+ }
812
+ return e.type === "member" ? /* @__PURE__ */ S(Re, {
813
+ multiple: e.multiple === !0,
814
+ name: e.fieldKey,
815
+ onChange: (t) => r(e.fieldKey, t),
816
+ placeholder: e.placeholder,
817
+ readonly: n,
818
+ size: a,
819
+ value: t
820
+ }) : e.type === "file_upload" ? /* @__PURE__ */ S(y, {
821
+ accept: e.acceptedMimeTypes?.join(","),
822
+ disabled: n,
823
+ maxFiles: e.maxFiles,
824
+ mode: "button-list",
825
+ ...(e.maxFiles ?? 1) > 1 ? { multiple: !0 } : {},
826
+ onChange: (t) => r(e.fieldKey, t.length ? t.map((e) => e.id) : void 0),
827
+ onUpload: async (t) => Promise.all(t.map(async (t) => ({
828
+ file: t,
829
+ id: (i ? await i(e, t) : { id: `${t.name}-${t.lastModified}` }).id,
830
+ progress: 100,
831
+ status: "done"
832
+ }))),
833
+ size: "sub"
834
+ }) : e.type === "date" ? /* @__PURE__ */ S(u, {
835
+ format: "YYYY-MM-DD",
836
+ fullWidth: !0,
837
+ onChange: (t) => r(e.fieldKey, D(t)),
838
+ placeholder: e.placeholder ?? mt(e.type),
839
+ readOnly: n,
840
+ value: ie(t)
841
+ }) : e.type === "datetime" ? /* @__PURE__ */ S(d, {
842
+ formatDate: "YYYY-MM-DD",
843
+ formatTime: "HH:mm",
844
+ fullWidth: !0,
845
+ hideSecond: !0,
846
+ onChange: (t) => r(e.fieldKey, O(t)),
847
+ placeholderLeft: "選擇日期",
848
+ placeholderRight: "選擇時間",
849
+ readOnly: n,
850
+ value: ie(t)
851
+ }) : e.type === "number" || e.type === "money" ? /* @__PURE__ */ S(f, {
852
+ fullWidth: !0,
853
+ max: e.maximum,
854
+ min: e.minimum,
855
+ size: a,
856
+ onChange: (t) => r(e.fieldKey, ee(M(t.target.value), {
857
+ max: e.maximum,
858
+ min: e.minimum
859
+ })),
860
+ placeholder: e.placeholder ?? mt(e.type),
861
+ ...n ? { readonly: !0 } : {},
862
+ showSpinner: !0,
863
+ value: pt(t),
864
+ variant: "measure"
865
+ }) : /* @__PURE__ */ S(f, {
866
+ fullWidth: !0,
867
+ onChange: (t) => r(e.fieldKey, t.target.value),
868
+ placeholder: e.placeholder ?? mt(e.type),
869
+ ...n ? { readonly: !0 } : {},
870
+ size: a,
871
+ value: $(t),
872
+ variant: "base"
873
+ });
874
+ }
875
+ function ut(e, t, n, r, i, a, o = "main") {
876
+ let c = a.options.map(N), u = z(t, a.options).map(N), d = a.status === "LOADING", f = a.status === "WAITING_FOR_DEPENDENCIES", h = !!i && !n, g = n || f, _ = n;
877
+ return e.type === "autocomplete" ? H(e) === "multiple" ? /* @__PURE__ */ S(s, {
878
+ asyncData: h,
879
+ clearSearchText: !0,
880
+ disabled: _,
881
+ disabledOptionsFilter: h,
882
+ globalPortal: !0,
883
+ loading: d,
884
+ mode: "multiple",
885
+ onChange: (t) => r(e.fieldKey, t.length ? t.map((e) => e.id) : void 0),
886
+ onReachBottom: a.hasNextPage ? a.onReachBottom : void 0,
887
+ onSearch: h ? a.onSearch : void 0,
888
+ options: c,
889
+ placeholder: e.placeholder ?? "請輸入或選擇",
890
+ readOnly: n,
891
+ searchDebounceTime: 300,
892
+ size: o,
893
+ value: u
894
+ }) : /* @__PURE__ */ S(s, {
895
+ asyncData: h,
896
+ clearSearchText: !0,
897
+ disabled: _,
898
+ disabledOptionsFilter: h,
899
+ globalPortal: !0,
900
+ loading: d,
901
+ mode: "single",
902
+ onChange: (t) => r(e.fieldKey, t?.id ?? void 0),
903
+ onReachBottom: a.hasNextPage ? a.onReachBottom : void 0,
904
+ onSearch: h ? a.onSearch : void 0,
905
+ options: c,
906
+ placeholder: e.placeholder ?? "請輸入或選擇",
907
+ readOnly: n,
908
+ searchDebounceTime: 300,
909
+ size: o,
910
+ value: u[0] ?? null
911
+ }) : e.type === "radio" ? /* @__PURE__ */ S(p, {
912
+ disabled: g,
913
+ name: e.fieldKey,
914
+ onChange: (t) => r(e.fieldKey, t.target.value || void 0),
915
+ options: c,
916
+ value: $(t)
917
+ }) : e.type === "checkbox" ? /* @__PURE__ */ S(l, {
918
+ disabled: g,
919
+ name: e.fieldKey,
920
+ onChange: (t) => r(e.fieldKey, t.target.values.length ? t.target.values : void 0),
921
+ options: c.map((e) => ({
922
+ label: e.name,
923
+ value: e.id
924
+ })),
925
+ value: [...ft(t)]
926
+ }) : H(e) === "multiple" ? /* @__PURE__ */ S(m, {
927
+ disabled: g,
928
+ loading: d,
929
+ mode: "multiple",
930
+ onChange: (t) => r(e.fieldKey, t.length ? t.map((e) => e.id) : void 0),
931
+ onReachBottom: a.hasNextPage ? a.onReachBottom : void 0,
932
+ options: c,
933
+ placeholder: e.placeholder ?? "請選擇一或多個選項",
934
+ readOnly: n,
935
+ size: o,
936
+ value: u
937
+ }) : /* @__PURE__ */ S(m, {
938
+ disabled: g,
939
+ loading: d,
940
+ onChange: (t) => r(e.fieldKey, t?.id ?? void 0),
941
+ onReachBottom: a.hasNextPage ? a.onReachBottom : void 0,
942
+ options: c,
943
+ placeholder: e.placeholder ?? "請選擇",
944
+ readOnly: n,
945
+ size: o,
946
+ value: u[0] ?? null
947
+ });
948
+ }
949
+ function dt(e, t) {
950
+ return {
951
+ FULL: 12,
952
+ HALF: 6,
953
+ THIRD: 4
954
+ }[t.layout.find((t) => t.fieldKey === e.fieldKey)?.width ?? "FULL"];
955
+ }
956
+ function $(e) {
957
+ return typeof e == "string" ? e : "";
958
+ }
959
+ function ft(e) {
960
+ return Array.isArray(e) && e.every((e) => typeof e == "string") ? e : [];
961
+ }
962
+ function pt(e) {
963
+ return typeof e == "number" ? String(e) : "";
964
+ }
965
+ function mt(e) {
966
+ return {
967
+ boolean: "",
968
+ autocomplete: "請輸入或選擇",
969
+ checkbox: "請選擇一或多個選項",
970
+ date: "請選擇日期",
971
+ datetime: "請選擇日期與時間",
972
+ file_upload: "請上傳附件",
973
+ member: "搜尋姓名或信箱",
974
+ money: "請輸入金額",
975
+ number: "請輸入數字",
976
+ radio: "請選擇一個選項",
977
+ select: "請選擇一個選項",
978
+ table: "",
979
+ text: "請輸入文字",
980
+ textarea: "請輸入多行文字"
981
+ }[e];
982
+ }
983
+ //#endregion
984
+ export { K as a, q as i, ke as n, J as o, Q as r, G as s, We as t };
985
+
986
+ //# sourceMappingURL=FormRendererView-cZGOOjU5.js.map