@rytass/bpm-core-react 0.20.0 → 0.21.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 (127) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/README.md +1 -1
  3. package/dist/approval-instance-list-page.css +1 -1
  4. package/dist/chunks/FormBuilderView-DjPGrOJ2.cjs +4 -0
  5. package/dist/chunks/FormBuilderView-DjPGrOJ2.cjs.map +1 -0
  6. package/dist/chunks/{FormBuilderView-CFRiw04B.js → FormBuilderView-WtC2iW5f.js} +667 -584
  7. package/dist/chunks/FormBuilderView-WtC2iW5f.js.map +1 -0
  8. package/dist/chunks/{FormRendererView-lYSaR8CQ.cjs → FormRendererView-B-xycC9S.cjs} +3 -3
  9. package/dist/chunks/{FormRendererView-lYSaR8CQ.cjs.map → FormRendererView-B-xycC9S.cjs.map} +1 -1
  10. package/dist/chunks/{FormRendererView-GfbVWEGa.js → FormRendererView-BcQKUi1A.js} +238 -238
  11. package/dist/chunks/{FormRendererView-GfbVWEGa.js.map → FormRendererView-BcQKUi1A.js.map} +1 -1
  12. package/dist/chunks/approval-instance-list-page-Bth7Raya.js +724 -0
  13. package/dist/chunks/approval-instance-list-page-Bth7Raya.js.map +1 -0
  14. package/dist/chunks/approval-instance-list-page-Dcvo6TrT.cjs +2 -0
  15. package/dist/chunks/approval-instance-list-page-Dcvo6TrT.cjs.map +1 -0
  16. package/dist/chunks/{categories-DQUtVEiV.cjs → categories-CyyqG6wG.cjs} +2 -2
  17. package/dist/chunks/{categories-DQUtVEiV.cjs.map → categories-CyyqG6wG.cjs.map} +1 -1
  18. package/dist/chunks/{categories-BAdxjNSA.js → categories-f7E-RJEc.js} +9 -9
  19. package/dist/chunks/{categories-BAdxjNSA.js.map → categories-f7E-RJEc.js.map} +1 -1
  20. package/dist/chunks/{compose-Bb5bUVFd.cjs → compose-BKUTsB2W.cjs} +2 -2
  21. package/dist/chunks/{compose-Bb5bUVFd.cjs.map → compose-BKUTsB2W.cjs.map} +1 -1
  22. package/dist/chunks/{compose-egQlRjuZ.js → compose-DZvIspW3.js} +4 -4
  23. package/dist/chunks/{compose-egQlRjuZ.js.map → compose-DZvIspW3.js.map} +1 -1
  24. package/dist/chunks/{delegations-CVmtpkRn.cjs → delegations-ClRCwD1I.cjs} +2 -2
  25. package/dist/chunks/{delegations-CVmtpkRn.cjs.map → delegations-ClRCwD1I.cjs.map} +1 -1
  26. package/dist/chunks/{delegations-9-yvWWws.js → delegations-CqND-Qtz.js} +5 -5
  27. package/dist/chunks/{delegations-9-yvWWws.js.map → delegations-CqND-Qtz.js.map} +1 -1
  28. package/dist/chunks/{delegations-CrfjsH94.cjs → delegations-D43VDSz1.cjs} +2 -2
  29. package/dist/chunks/{delegations-CrfjsH94.cjs.map → delegations-D43VDSz1.cjs.map} +1 -1
  30. package/dist/chunks/{delegations-CxnNvTCc.js → delegations-zisffLwk.js} +5 -5
  31. package/dist/chunks/{delegations-CxnNvTCc.js.map → delegations-zisffLwk.js.map} +1 -1
  32. package/dist/chunks/{designer-CZDlQ9Nf.js → designer-CWubIE69.js} +1425 -1412
  33. package/dist/chunks/designer-CWubIE69.js.map +1 -0
  34. package/dist/chunks/designer-C_m8DmMl.cjs +69 -0
  35. package/dist/chunks/designer-C_m8DmMl.cjs.map +1 -0
  36. package/dist/chunks/{detail-ByZV1XaI.js → detail-Bv90gvy0.js} +578 -577
  37. package/dist/chunks/detail-Bv90gvy0.js.map +1 -0
  38. package/dist/chunks/detail-DNzqesdI.cjs +5 -0
  39. package/dist/chunks/detail-DNzqesdI.cjs.map +1 -0
  40. package/dist/chunks/instance-error-message-BW464LRQ.cjs +2 -0
  41. package/dist/chunks/instance-error-message-BW464LRQ.cjs.map +1 -0
  42. package/dist/chunks/instance-error-message-CAP1vJhX.js +204 -0
  43. package/dist/chunks/instance-error-message-CAP1vJhX.js.map +1 -0
  44. package/dist/components/approval-instance-field-filter-controls.d.cts +12 -0
  45. package/dist/components/approval-instance-field-filter-controls.d.ts +12 -0
  46. package/dist/components/approval-instance-field-filters.d.cts +86 -0
  47. package/dist/components/approval-instance-field-filters.d.ts +86 -0
  48. package/dist/components/approval-instance-list-page.d.cts +4 -0
  49. package/dist/components/approval-instance-list-page.d.ts +4 -0
  50. package/dist/index.cjs +1 -1
  51. package/dist/index.js +1 -1
  52. package/dist/next/workflow-chat-route.cjs +2 -2
  53. package/dist/next/workflow-chat-route.cjs.map +1 -1
  54. package/dist/next/workflow-chat-route.js +13 -13
  55. package/dist/pages/admin/delegations/index.cjs +1 -1
  56. package/dist/pages/admin/delegations/index.js +1 -1
  57. package/dist/pages/delegations/index.cjs +1 -1
  58. package/dist/pages/delegations/index.js +1 -1
  59. package/dist/pages/instances/detail/index.cjs +1 -1
  60. package/dist/pages/instances/detail/index.js +1 -1
  61. package/dist/pages/templates/categories/index.cjs +1 -1
  62. package/dist/pages/templates/categories/index.js +1 -1
  63. package/dist/pages/templates/compose/index.cjs +1 -1
  64. package/dist/pages/templates/compose/index.js +1 -1
  65. package/dist/pages/templates/designer/index.cjs +1 -1
  66. package/dist/pages/templates/designer/index.js +1 -1
  67. package/dist/views/admin/delegations/index.cjs +1 -1
  68. package/dist/views/admin/delegations/index.js +1 -1
  69. package/dist/views/admin/index.cjs +1 -1
  70. package/dist/views/admin/index.js +1 -1
  71. package/dist/views/admin/webhook-endpoints/index.cjs +1 -1
  72. package/dist/views/admin/webhook-endpoints/index.cjs.map +1 -1
  73. package/dist/views/admin/webhook-endpoints/index.js +60 -60
  74. package/dist/views/admin/webhook-endpoints/index.js.map +1 -1
  75. package/dist/views/cc/index.cjs +1 -1
  76. package/dist/views/cc/index.js +1 -1
  77. package/dist/views/delegations/index.cjs +1 -1
  78. package/dist/views/delegations/index.js +1 -1
  79. package/dist/views/forms/builder/FormBuilderView.d.cts +8 -1
  80. package/dist/views/forms/builder/FormBuilderView.d.ts +8 -1
  81. package/dist/views/forms/builder/index.cjs +1 -1
  82. package/dist/views/forms/builder/index.js +1 -1
  83. package/dist/views/forms/renderer/index.cjs +1 -1
  84. package/dist/views/forms/renderer/index.js +1 -1
  85. package/dist/views/instances/approver-filled-form.d.cts +8 -5
  86. package/dist/views/instances/approver-filled-form.d.ts +8 -5
  87. package/dist/views/instances/detail/index.cjs +1 -1
  88. package/dist/views/instances/detail/index.js +1 -1
  89. package/dist/views/instances/detail/sections/InstanceTasksSection.d.cts +2 -1
  90. package/dist/views/instances/detail/sections/InstanceTasksSection.d.ts +2 -1
  91. package/dist/views/instances/new/index.cjs +1 -1
  92. package/dist/views/instances/new/index.cjs.map +1 -1
  93. package/dist/views/instances/new/index.js +8 -8
  94. package/dist/views/instances/new/index.js.map +1 -1
  95. package/dist/views/search/index.cjs +1 -1
  96. package/dist/views/search/index.js +1 -1
  97. package/dist/views/sent/index.cjs +1 -1
  98. package/dist/views/sent/index.js +1 -1
  99. package/dist/views/templates/categories/index.cjs +1 -1
  100. package/dist/views/templates/categories/index.js +1 -1
  101. package/dist/views/templates/compose/index.cjs +1 -1
  102. package/dist/views/templates/compose/index.js +1 -1
  103. package/dist/views/templates/designer/NotifyWebhookTargetsEditor.d.cts +2 -0
  104. package/dist/views/templates/designer/NotifyWebhookTargetsEditor.d.ts +2 -0
  105. package/dist/views/templates/designer/index.cjs +1 -1
  106. package/dist/views/templates/designer/index.js +1 -1
  107. package/dist/views/templates/index.cjs +1 -1
  108. package/dist/views/templates/index.cjs.map +1 -1
  109. package/dist/views/templates/index.js +7 -7
  110. package/package.json +3 -3
  111. package/dist/chunks/FormBuilderView-CFRiw04B.js.map +0 -1
  112. package/dist/chunks/FormBuilderView-CpUgbSbt.cjs +0 -3
  113. package/dist/chunks/FormBuilderView-CpUgbSbt.cjs.map +0 -1
  114. package/dist/chunks/approval-instance-list-page-BnI4t5mD.js +0 -279
  115. package/dist/chunks/approval-instance-list-page-BnI4t5mD.js.map +0 -1
  116. package/dist/chunks/approval-instance-list-page-fqvmkBlg.cjs +0 -2
  117. package/dist/chunks/approval-instance-list-page-fqvmkBlg.cjs.map +0 -1
  118. package/dist/chunks/designer-CX9bhYJS.cjs +0 -69
  119. package/dist/chunks/designer-CX9bhYJS.cjs.map +0 -1
  120. package/dist/chunks/designer-CZDlQ9Nf.js.map +0 -1
  121. package/dist/chunks/detail-ByZV1XaI.js.map +0 -1
  122. package/dist/chunks/detail-ChseSF55.cjs +0 -5
  123. package/dist/chunks/detail-ChseSF55.cjs.map +0 -1
  124. package/dist/chunks/instance-error-message-DTARGbGo.cjs +0 -2
  125. package/dist/chunks/instance-error-message-DTARGbGo.cjs.map +0 -1
  126. package/dist/chunks/instance-error-message-q6gy5evy.js +0 -120
  127. package/dist/chunks/instance-error-message-q6gy5evy.js.map +0 -1
@@ -1,6 +1,6 @@
1
- "use client";const e=require("./bpm-form-field-Bc6k4ZEO.cjs"),t=require("./format-member-label-t7ANTF62.cjs");let n=require("react"),r=require("@mezzanine-ui/react"),i=require("@rytass/bpm-core-client"),a=require("react/jsx-runtime"),o=require("@mezzanine-ui/icons"),s=require("@rytass/bpm-core-client/form"),c=require("@rytass/bpm-core-shared/form"),l=require("@rytass/bpm-core-client/organization");var u={canRetry:!1,error:null,hasValue:!1,hasNextPage:!1,invalidValues:[],onReachBottom:()=>void 0,onSearch:()=>void 0,options:[],retry:()=>void 0,status:`IDLE`},d=[],f=10,p=300,m=[`FORM_DATA_SOURCE_SEARCH_NOT_SUPPORTED`,`FORM_DATA_SOURCE_SEARCH_TOO_SHORT`];function h(e,t){if(!t.row)return e;let n=t.fieldPath?.indexOf(`.`)??-1;return t.fieldPath&&n>0?t.fieldPath.slice(0,n):null}function g(e,t){return t===null?e:Object.fromEntries(Object.entries(e).filter(([e])=>e!==t))}function _(e,t){let n=e.from;switch(n.kind){case`FIELD`:return{fieldKey:n.fieldKey,value:t.formData[n.fieldKey]};case`CONSTANT`:return{value:n.value};case`ROW_FIELD`:return{columnKey:n.columnKey,value:t.rowValues?.[n.columnKey]};case`EXPRESSION`:return{expression:n.expression,form:g(t.formData,t.ownFormKey),row:t.rowValues?g(t.rowValues,t.ownRowKey):null};default:return v(n)}}function v(e){return{unsupported:!0}}function y(e){return JSON.stringify(b(e))??`null`}function b(e){return Array.isArray(e)?e.map(b):typeof e==`object`&&e?Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0).sort(([e],[t])=>e<t?-1:+(e>t)).map(([e,t])=>[e,b(t)])):e}function x(e){let t=(0,c.isFormDataSourceFieldDefinition)(e.field)?e.field:null,r=e.fieldPath??t?.fieldKey??``,i=t?e.optionSnapshots?.[e.snapshotKey??t.fieldKey]:void 0,a=t?JSON.stringify({dataSource:t.dataSource,fieldKey:t.fieldKey,type:t.type}):``,o=JSON.stringify(i??null),l=(0,n.useMemo)(()=>i?.options??[],[o]),d=JSON.stringify(e.formData),g=JSON.stringify(e.initialFormData??{}),v=JSON.stringify(e.schema),b=JSON.stringify(e.uiSchema),x=e.context?.kind,C=e.context?.kind===`runtime`?e.context.instanceId:void 0,w=e.context?.kind===`runtime`?e.context.templateId:void 0,T=JSON.stringify(e.row?.values??null),ne=JSON.stringify(e.row?.initialValues??null),j=t?e.row?e.row.values[t.fieldKey]:e.formData[t.fieldKey]:void 0,M=(0,s.readFormDataSourceValueSignature)(j),N=(0,n.useMemo)(()=>(0,s.readFormDataSourceSelectedValues)(j),[M]),P=N.length>0,re=t?JSON.stringify(t.dataSource.bindings.map(n=>_(n,{formData:e.formData,ownFormKey:h(t.fieldKey,e),ownRowKey:e.row?t.fieldKey:null,rowValues:e.row?.values}))):``,ie=t?JSON.stringify(e.initialFormData!==void 0||e.initialValue!==void 0?j??null:null):``,ae=t?`${re}\u0000${ie}`:``,F=S(re,t?.dataSource.bindings.some(e=>e.from.kind===`EXPRESSION`)?p:0),oe=F!==re,I=(0,n.useMemo)(()=>{if(x===`preview`)return{kind:`preview`};if(x===`runtime`&&!e.readonly)return{instanceId:C,kind:`runtime`,templateId:w}},[C,x,w,e.readonly]),se=t?(e.initialFormData!==void 0||e.initialValue!==void 0)&&(0,s.readFormDataSourceValueSignature)(e.initialValue)!==M:!1,ce=t?e.initialFormData!==void 0&&t.dataSource.bindings.some(n=>{if(n.from.kind===`FIELD`)return(0,s.readFormDataSourceValueSignature)(e.initialFormData?.[n.from.fieldKey])!==(0,s.readFormDataSourceValueSignature)(e.formData[n.from.fieldKey]);if(n.from.kind===`ROW_FIELD`&&e.row?.initialValues)return(0,s.readFormDataSourceValueSignature)(e.row.initialValues[n.from.columnKey])!==(0,s.readFormDataSourceValueSignature)(e.row.values[n.from.columnKey]);if(n.from.kind===`EXPRESSION`){if(!I)return!1;let r={ownFormKey:h(t.fieldKey,e),ownRowKey:e.row?t.fieldKey:null};return y(_(n,{...r,formData:(0,s.buildFormRendererValues)(e.schema.fields,e.initialFormData??{}),rowValues:e.row?.initialValues??e.row?.values}))!==y(_(n,{...r,formData:(0,s.buildFormRendererValues)(e.schema.fields,e.formData),rowValues:e.row?.values}))}return!1}):!1,le=!!t?.dataSource.bindings.some(e=>e.from.kind===`EXPRESSION`),[ue,de]=(0,n.useState)(()=>({bindings:F,value:M}));ue.value!==M&&de({bindings:F,value:M});let fe=!!(le&&I&&P&&ue.value===M&&ue.bindings!==F),L=!!((i||P)&&(se||ce||fe)),R=!!(t&&I&&L&&P),z=D({hasSnapshot:!!i,hasValue:P,isStale:L,readonly:e.readonly}),B=!!(t&&I&&t.type!==`autocomplete`),V=O(L,B&&t!==null&&(0,s.readMissingFormDataSourceDependencies)(t,e.formData,e.row?.values).length>0),pe=(0,n.useRef)(z);pe.current=z;let[H,U]=(0,n.useState)([]),[me,he]=(0,n.useState)(``),[W,ge]=(0,n.useState)(null),[G,_e]=(0,n.useState)(null),[ve,K]=(0,n.useState)(()=>t?B?V:z:`IDLE`),[ye,q]=(0,n.useState)(null),J=(0,n.useRef)(0),Y=(0,n.useRef)(0),be=(0,n.useRef)(0),X=(0,n.useRef)(null),xe=(0,n.useRef)(null),Se=(0,n.useRef)({cursor:null,searchText:``}),Z=(0,n.useMemo)(()=>te(e.formData),[d]),Q=(0,n.useMemo)(()=>e.row?te(e.row.values):void 0,[T]),Ce=(0,n.useMemo)(()=>(0,s.mergeFormDataSourceOptions)(l,H),[H,l]),we=G&&G.signature===ae&&G.valueSignature===M?G:null,Te=R&&!we,Ee=!!(fe&&we&&we.unresolvedValues.length>0),De=E({options:Ce,resolution:we,resolvePending:Te,value:j}),$=(0,n.useCallback)((n,i)=>{if(!t||!I)return;let a=Y.current+1;Y.current=a,Se.current={cursor:i,searchText:n},X.current?.abort();let o=new AbortController;X.current=o,K(V),q(null),(I.kind===`preview`?(0,s.previewFormFieldOptions)({cursor:i,fieldKey:r,formData:Z,rowValues:Q,schema:e.schema,searchText:n,signal:o.signal,uiSchema:e.uiSchema}):(0,s.readFormFieldOptions)({cursor:i,fieldKey:r,formData:Z,instanceId:I.instanceId??null,rowValues:Q,searchText:n,signal:o.signal,templateId:I.templateId??null})).then(e=>{A(o,Y,a)||(U(t=>{let n=(0,s.readSelectedFormDataSourceOptions)(j,t);return(0,s.mergeFormDataSourceOptions)(n,i?t:[],e.options)}),ge(e.nextCursor),q(null),J.current=i?J.current+e.options.length:e.options.length,e.nextCursor&&e.options.length>0&&J.current<f&&Oe.current(n,e.nextCursor),K(e.waitingForFieldKeys.length?`WAITING_FOR_DEPENDENCIES`:`VALID`))}).catch(e=>{if(A(o,Y,a))return;let t=(0,s.readFormDataSourceErrorMessage)(e)??`選項來源暫時無法使用。`,n=(0,s.readFormDataSourceErrorCode)(e);q(t),K(k(!!(n&&m.includes(n)),P))})},[M,a,I,P,V,r,Z,Q,v,b]),Oe=(0,n.useRef)($);Oe.current=$;let ke=(0,n.useCallback)(()=>{if(!t||!I||N.length===0)return;let n=ae,i=M,a=be.current+1;be.current=a,xe.current?.abort();let o=new AbortController;xe.current=o,q(null),(I.kind===`preview`?(0,s.previewResolveFormFieldOptions)({fieldKey:r,formData:Z,rowValues:Q,schema:e.schema,signal:o.signal,uiSchema:e.uiSchema,values:N}):(0,s.resolveFormFieldOptions)({fieldKey:r,formData:Z,instanceId:I.instanceId??null,rowValues:Q,signal:o.signal,templateId:I.templateId??null,values:N})).then(e=>{A(o,be,a)||(e.waitingForFieldKeys.length?K(`WAITING_FOR_DEPENDENCIES`):(U(t=>(0,s.mergeFormDataSourceOptions)(t,e.options)),_e({signature:n,unresolvedValues:e.unresolvedValues,valueSignature:i}),K(`VALID`)))}).catch(e=>{A(o,be,a)||(K(`UNAVAILABLE`),q((0,s.readFormDataSourceErrorMessage)(e)??`選項來源暫時無法使用。`))})},[M,ae,a,I,r,Z,Q,v,N,b]),Ae=(0,n.useRef)(ke);Ae.current=ke,(0,n.useEffect)(()=>{Y.current+=1,X.current?.abort(),U(e=>(0,s.readSelectedFormDataSourceOptions)(j,e)),ge(e=>e===null?e:null),he(e=>e&&``),q(e=>e&&null),t?B?Oe.current(``,null):K(pe.current):K(`IDLE`)},[B,a,I,F,ie,g,ne,e.readonly,o]),(0,n.useEffect)(()=>{t&&!B&&K(z)},[B,a,z]),(0,n.useEffect)(()=>{R&&!oe&&Ae.current()},[I,R,oe,F,ie]),(0,n.useEffect)(()=>()=>{X.current?.abort(),xe.current?.abort()},[]);let je=(0,n.useCallback)(e=>{he(e),U(e=>(0,s.readSelectedFormDataSourceOptions)(j,e)),ge(null),$(e,null)},[$]),Me=(0,n.useCallback)(()=>{W&&$(me,W)},[$,W,me]),Ne=(0,n.useCallback)(()=>{I&&($(Se.current.searchText,Se.current.cursor),R&&Ae.current())},[I,$,R]);return t?{canRetry:!!I,error:ye,hasValue:P,hasNextPage:!!W,invalidValues:De,onReachBottom:Me,onSearch:je,options:Ce,retry:Ne,selectionExpired:Ee,status:oe&&I&&(B||P)?B?V:`STALE`:ee({invalidValues:De,resolvePending:Te,status:ve})}:u}function S(e,t){let[r,i]=(0,n.useState)(e);return(0,n.useEffect)(()=>{if(t<=0)return;let n=setTimeout(()=>{i(e)},t);return()=>{clearTimeout(n)}},[t,e]),t>0?r:e}function C(e){switch(e.status){case`WAITING_FOR_DEPENDENCIES`:return`請先填寫相依欄位。`;case`STALE`:return`選項需要重新載入或驗證。`;case`INVALID`:return e.selectionExpired?(0,s.readFormDataSourceErrorMessage)(`FORM_DATA_SOURCE_VALUE_NOT_RESOLVED`):e.invalidValues.length?`無法辨識選項:${e.invalidValues.join(`、`)}`:`目前選項已失效,請重新選擇。`;case`UNAVAILABLE`:return e.error??`選項來源暫時無法使用。`;case`VALID`:return e.error??(e.options.length?null:`目前沒有可用選項。`);default:return e.error}}function w(e){return e.hasValue&&e.status!==`VALID`}function T(e){let t=e.filter(w);return t.length===0?null:t.some(e=>e.status===`INVALID`&&e.selectionExpired===!0)?(0,s.readFormDataSourceErrorMessage)(`FORM_DATA_SOURCE_VALUE_NOT_RESOLVED`):t.every(e=>e.status===`LOADING`||e.status===`STALE`)?`選項驗證中,請稍候再送出。`:`請先完成動態選項驗證。`}function E(e){return e.resolution?e.resolution.unresolvedValues:e.resolvePending?d:(0,s.readMissingFormDataSourceOptionValues)(e.value,e.options)}function D(e){return e.isStale?`STALE`:e.hasSnapshot?`VALID`:e.readonly&&e.hasValue?`UNAVAILABLE`:`IDLE`}function O(e,t){return t?`WAITING_FOR_DEPENDENCIES`:e?`STALE`:`LOADING`}function k(e,t){return e?t?`VALID`:`IDLE`:`UNAVAILABLE`}function ee(e){return e.status===`LOADING`||e.status===`UNAVAILABLE`||e.status===`WAITING_FOR_DEPENDENCIES`?e.status:e.invalidValues.length?`INVALID`:e.resolvePending?`STALE`:e.status}function A(e,t,n){return e.signal.aborted||t.current!==n}function te(e){return Object.entries(e).reduce((e,[t,n])=>n===void 0?e:{...e,[t]:n},{})}function ne(e){return Array.isArray(e)&&e.every(e=>typeof e==`string`)?e:[]}function j(e){return e.some(e=>e.pendingCount>0)?`附件仍在上傳中,請稍候再送出。`:e.some(e=>e.failedCount>0)?`有附件上傳失敗,請重試或移除後再送出。`:null}function M(){let[e,t]=(0,n.useState)({}),r=(0,n.useCallback)((e,n)=>t(t=>({...t,[e]:n})),[]);return{blockMessage:j(Object.values(e)),onFileUploadStateChange:r}}var N=`無法讀取檔名的附件`,P=`此處無法上傳附件`;function re({attachments:e,field:t,onChange:i,onDownloadAttachment:o,onStateChange:s,onUploadAttachment:c,readonly:l,value:u}){let[d,f]=(0,n.useState)([]),[p,m]=(0,n.useState)(()=>new Map),[h,g]=(0,n.useState)([]),_=ne(u),v=_.join(`
1
+ "use client";const e=require("./bpm-form-field-Bc6k4ZEO.cjs"),t=require("./format-member-label-t7ANTF62.cjs");let n=require("react"),r=require("@mezzanine-ui/react"),i=require("@rytass/bpm-core-client"),a=require("react/jsx-runtime"),o=require("@rytass/bpm-core-client/form"),s=require("@mezzanine-ui/icons"),c=require("@rytass/bpm-core-shared/form"),l=require("@rytass/bpm-core-client/organization");var u={canRetry:!1,error:null,hasValue:!1,hasNextPage:!1,invalidValues:[],onReachBottom:()=>void 0,onSearch:()=>void 0,options:[],retry:()=>void 0,status:`IDLE`},d=[],f=10,p=300,m=[`FORM_DATA_SOURCE_SEARCH_NOT_SUPPORTED`,`FORM_DATA_SOURCE_SEARCH_TOO_SHORT`];function h(e,t){if(!t.row)return e;let n=t.fieldPath?.indexOf(`.`)??-1;return t.fieldPath&&n>0?t.fieldPath.slice(0,n):null}function g(e,t){return t===null?e:Object.fromEntries(Object.entries(e).filter(([e])=>e!==t))}function _(e,t){let n=e.from;switch(n.kind){case`FIELD`:return{fieldKey:n.fieldKey,value:t.formData[n.fieldKey]};case`CONSTANT`:return{value:n.value};case`ROW_FIELD`:return{columnKey:n.columnKey,value:t.rowValues?.[n.columnKey]};case`EXPRESSION`:return{expression:n.expression,form:g(t.formData,t.ownFormKey),row:t.rowValues?g(t.rowValues,t.ownRowKey):null};default:return v(n)}}function v(e){return{unsupported:!0}}function y(e){return JSON.stringify(b(e))??`null`}function b(e){return Array.isArray(e)?e.map(b):typeof e==`object`&&e?Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0).sort(([e],[t])=>e<t?-1:+(e>t)).map(([e,t])=>[e,b(t)])):e}function x(e){let t=(0,c.isFormDataSourceFieldDefinition)(e.field)?e.field:null,r=e.fieldPath??t?.fieldKey??``,i=t?e.optionSnapshots?.[e.snapshotKey??t.fieldKey]:void 0,a=t?JSON.stringify({dataSource:t.dataSource,fieldKey:t.fieldKey,type:t.type}):``,s=JSON.stringify(i??null),l=(0,n.useMemo)(()=>i?.options??[],[s]),d=JSON.stringify(e.formData),g=JSON.stringify(e.initialFormData??{}),v=JSON.stringify(e.schema),b=JSON.stringify(e.uiSchema),x=e.context?.kind,C=e.context?.kind===`runtime`?e.context.instanceId:void 0,w=e.context?.kind===`runtime`?e.context.templateId:void 0,T=JSON.stringify(e.row?.values??null),ne=JSON.stringify(e.row?.initialValues??null),j=t?e.row?e.row.values[t.fieldKey]:e.formData[t.fieldKey]:void 0,M=(0,o.readFormDataSourceValueSignature)(j),N=(0,n.useMemo)(()=>(0,o.readFormDataSourceSelectedValues)(j),[M]),P=N.length>0,re=t?JSON.stringify(t.dataSource.bindings.map(n=>_(n,{formData:e.formData,ownFormKey:h(t.fieldKey,e),ownRowKey:e.row?t.fieldKey:null,rowValues:e.row?.values}))):``,ie=t?JSON.stringify(e.initialFormData!==void 0||e.initialValue!==void 0?j??null:null):``,ae=t?`${re}\u0000${ie}`:``,F=S(re,t?.dataSource.bindings.some(e=>e.from.kind===`EXPRESSION`)?p:0),oe=F!==re,I=(0,n.useMemo)(()=>{if(x===`preview`)return{kind:`preview`};if(x===`runtime`&&!e.readonly)return{instanceId:C,kind:`runtime`,templateId:w}},[C,x,w,e.readonly]),se=t?(e.initialFormData!==void 0||e.initialValue!==void 0)&&(0,o.readFormDataSourceValueSignature)(e.initialValue)!==M:!1,ce=t?e.initialFormData!==void 0&&t.dataSource.bindings.some(n=>{if(n.from.kind===`FIELD`)return(0,o.readFormDataSourceValueSignature)(e.initialFormData?.[n.from.fieldKey])!==(0,o.readFormDataSourceValueSignature)(e.formData[n.from.fieldKey]);if(n.from.kind===`ROW_FIELD`&&e.row?.initialValues)return(0,o.readFormDataSourceValueSignature)(e.row.initialValues[n.from.columnKey])!==(0,o.readFormDataSourceValueSignature)(e.row.values[n.from.columnKey]);if(n.from.kind===`EXPRESSION`){if(!I)return!1;let r={ownFormKey:h(t.fieldKey,e),ownRowKey:e.row?t.fieldKey:null};return y(_(n,{...r,formData:(0,o.buildFormRendererValues)(e.schema.fields,e.initialFormData??{}),rowValues:e.row?.initialValues??e.row?.values}))!==y(_(n,{...r,formData:(0,o.buildFormRendererValues)(e.schema.fields,e.formData),rowValues:e.row?.values}))}return!1}):!1,le=!!t?.dataSource.bindings.some(e=>e.from.kind===`EXPRESSION`),[ue,de]=(0,n.useState)(()=>({bindings:F,value:M}));ue.value!==M&&de({bindings:F,value:M});let fe=!!(le&&I&&P&&ue.value===M&&ue.bindings!==F),L=!!((i||P)&&(se||ce||fe)),R=!!(t&&I&&L&&P),z=D({hasSnapshot:!!i,hasValue:P,isStale:L,readonly:e.readonly}),B=!!(t&&I&&t.type!==`autocomplete`),V=O(L,B&&t!==null&&(0,o.readMissingFormDataSourceDependencies)(t,e.formData,e.row?.values).length>0),pe=(0,n.useRef)(z);pe.current=z;let[H,U]=(0,n.useState)([]),[me,he]=(0,n.useState)(``),[W,ge]=(0,n.useState)(null),[G,_e]=(0,n.useState)(null),[ve,K]=(0,n.useState)(()=>t?B?V:z:`IDLE`),[ye,q]=(0,n.useState)(null),J=(0,n.useRef)(0),Y=(0,n.useRef)(0),be=(0,n.useRef)(0),X=(0,n.useRef)(null),xe=(0,n.useRef)(null),Se=(0,n.useRef)({cursor:null,searchText:``}),Z=(0,n.useMemo)(()=>te(e.formData),[d]),Q=(0,n.useMemo)(()=>e.row?te(e.row.values):void 0,[T]),Ce=(0,n.useMemo)(()=>(0,o.mergeFormDataSourceOptions)(l,H),[H,l]),we=G&&G.signature===ae&&G.valueSignature===M?G:null,Te=R&&!we,Ee=!!(fe&&we&&we.unresolvedValues.length>0),De=E({options:Ce,resolution:we,resolvePending:Te,value:j}),$=(0,n.useCallback)((n,i)=>{if(!t||!I)return;let a=Y.current+1;Y.current=a,Se.current={cursor:i,searchText:n},X.current?.abort();let s=new AbortController;X.current=s,K(V),q(null),(I.kind===`preview`?(0,o.previewFormFieldOptions)({cursor:i,fieldKey:r,formData:Z,rowValues:Q,schema:e.schema,searchText:n,signal:s.signal,uiSchema:e.uiSchema}):(0,o.readFormFieldOptions)({cursor:i,fieldKey:r,formData:Z,instanceId:I.instanceId??null,rowValues:Q,searchText:n,signal:s.signal,templateId:I.templateId??null})).then(e=>{A(s,Y,a)||(U(t=>{let n=(0,o.readSelectedFormDataSourceOptions)(j,t);return(0,o.mergeFormDataSourceOptions)(n,i?t:[],e.options)}),ge(e.nextCursor),q(null),J.current=i?J.current+e.options.length:e.options.length,e.nextCursor&&e.options.length>0&&J.current<f&&Oe.current(n,e.nextCursor),K(e.waitingForFieldKeys.length?`WAITING_FOR_DEPENDENCIES`:`VALID`))}).catch(e=>{if(A(s,Y,a))return;let t=(0,o.readFormDataSourceErrorMessage)(e)??`選項來源暫時無法使用。`,n=(0,o.readFormDataSourceErrorCode)(e);q(t),K(k(!!(n&&m.includes(n)),P))})},[M,a,I,P,V,r,Z,Q,v,b]),Oe=(0,n.useRef)($);Oe.current=$;let ke=(0,n.useCallback)(()=>{if(!t||!I||N.length===0)return;let n=ae,i=M,a=be.current+1;be.current=a,xe.current?.abort();let s=new AbortController;xe.current=s,q(null),(I.kind===`preview`?(0,o.previewResolveFormFieldOptions)({fieldKey:r,formData:Z,rowValues:Q,schema:e.schema,signal:s.signal,uiSchema:e.uiSchema,values:N}):(0,o.resolveFormFieldOptions)({fieldKey:r,formData:Z,instanceId:I.instanceId??null,rowValues:Q,signal:s.signal,templateId:I.templateId??null,values:N})).then(e=>{A(s,be,a)||(e.waitingForFieldKeys.length?K(`WAITING_FOR_DEPENDENCIES`):(U(t=>(0,o.mergeFormDataSourceOptions)(t,e.options)),_e({signature:n,unresolvedValues:e.unresolvedValues,valueSignature:i}),K(`VALID`)))}).catch(e=>{A(s,be,a)||(K(`UNAVAILABLE`),q((0,o.readFormDataSourceErrorMessage)(e)??`選項來源暫時無法使用。`))})},[M,ae,a,I,r,Z,Q,v,N,b]),Ae=(0,n.useRef)(ke);Ae.current=ke,(0,n.useEffect)(()=>{Y.current+=1,X.current?.abort(),U(e=>(0,o.readSelectedFormDataSourceOptions)(j,e)),ge(e=>e===null?e:null),he(e=>e&&``),q(e=>e&&null),t?B?Oe.current(``,null):K(pe.current):K(`IDLE`)},[B,a,I,F,ie,g,ne,e.readonly,s]),(0,n.useEffect)(()=>{t&&!B&&K(z)},[B,a,z]),(0,n.useEffect)(()=>{R&&!oe&&Ae.current()},[I,R,oe,F,ie]),(0,n.useEffect)(()=>()=>{X.current?.abort(),xe.current?.abort()},[]);let je=(0,n.useCallback)(e=>{he(e),U(e=>(0,o.readSelectedFormDataSourceOptions)(j,e)),ge(null),$(e,null)},[$]),Me=(0,n.useCallback)(()=>{W&&$(me,W)},[$,W,me]),Ne=(0,n.useCallback)(()=>{I&&($(Se.current.searchText,Se.current.cursor),R&&Ae.current())},[I,$,R]);return t?{canRetry:!!I,error:ye,hasValue:P,hasNextPage:!!W,invalidValues:De,onReachBottom:Me,onSearch:je,options:Ce,retry:Ne,selectionExpired:Ee,status:oe&&I&&(B||P)?B?V:`STALE`:ee({invalidValues:De,resolvePending:Te,status:ve})}:u}function S(e,t){let[r,i]=(0,n.useState)(e);return(0,n.useEffect)(()=>{if(t<=0)return;let n=setTimeout(()=>{i(e)},t);return()=>{clearTimeout(n)}},[t,e]),t>0?r:e}function C(e){switch(e.status){case`WAITING_FOR_DEPENDENCIES`:return`請先填寫相依欄位。`;case`STALE`:return`選項需要重新載入或驗證。`;case`INVALID`:return e.selectionExpired?(0,o.readFormDataSourceErrorMessage)(`FORM_DATA_SOURCE_VALUE_NOT_RESOLVED`):e.invalidValues.length?`無法辨識選項:${e.invalidValues.join(`、`)}`:`目前選項已失效,請重新選擇。`;case`UNAVAILABLE`:return e.error??`選項來源暫時無法使用。`;case`VALID`:return e.error??(e.options.length?null:`目前沒有可用選項。`);default:return e.error}}function w(e){return e.hasValue&&e.status!==`VALID`}function T(e){let t=e.filter(w);return t.length===0?null:t.some(e=>e.status===`INVALID`&&e.selectionExpired===!0)?(0,o.readFormDataSourceErrorMessage)(`FORM_DATA_SOURCE_VALUE_NOT_RESOLVED`):t.every(e=>e.status===`LOADING`||e.status===`STALE`)?`選項驗證中,請稍候再送出。`:`請先完成動態選項驗證。`}function E(e){return e.resolution?e.resolution.unresolvedValues:e.resolvePending?d:(0,o.readMissingFormDataSourceOptionValues)(e.value,e.options)}function D(e){return e.isStale?`STALE`:e.hasSnapshot?`VALID`:e.readonly&&e.hasValue?`UNAVAILABLE`:`IDLE`}function O(e,t){return t?`WAITING_FOR_DEPENDENCIES`:e?`STALE`:`LOADING`}function k(e,t){return e?t?`VALID`:`IDLE`:`UNAVAILABLE`}function ee(e){return e.status===`LOADING`||e.status===`UNAVAILABLE`||e.status===`WAITING_FOR_DEPENDENCIES`?e.status:e.invalidValues.length?`INVALID`:e.resolvePending?`STALE`:e.status}function A(e,t,n){return e.signal.aborted||t.current!==n}function te(e){return Object.entries(e).reduce((e,[t,n])=>n===void 0?e:{...e,[t]:n},{})}function ne(e){return Array.isArray(e)&&e.every(e=>typeof e==`string`)?e:[]}function j(e){return e.some(e=>e.pendingCount>0)?`附件仍在上傳中,請稍候再送出。`:e.some(e=>e.failedCount>0)?`有附件上傳失敗,請重試或移除後再送出。`:null}function M(){let[e,t]=(0,n.useState)({}),r=(0,n.useCallback)((e,n)=>t(t=>({...t,[e]:n})),[]);return{blockMessage:j(Object.values(e)),onFileUploadStateChange:r}}var N=`無法讀取檔名的附件`,P=`此處無法上傳附件`;function re({attachments:e,field:t,onChange:i,onDownloadAttachment:o,onStateChange:s,onUploadAttachment:c,readonly:l,value:u}){let[d,f]=(0,n.useState)([]),[p,m]=(0,n.useState)(()=>new Map),[h,g]=(0,n.useState)([]),_=ne(u),v=_.join(`
2
2
  `),y=(0,n.useMemo)(()=>new Map((e??[]).map(e=>[e.id,e])),[e]),b=(0,n.useMemo)(()=>{let e=new Map(h.map((e,t)=>[e,t]));return[..._.map(e=>p.get(e)??ie(e,y.get(e))),...d].sort((t,n)=>(e.get(t.id)??-1)-(e.get(n.id)??-1))},[y,h,p,d,v]),x=(0,n.useRef)(b),S=(0,n.useRef)(!0),C=(0,n.useRef)(O);C.current=O,(0,n.useEffect)(()=>{x.current=b},[b]);let w=(0,n.useCallback)(e=>C.current(e),[]),T=d.filter(e=>e.status===`loading`).length,E=d.filter(e=>e.status===`error`).length,D=(0,n.useRef)(s);D.current=s,(0,n.useEffect)(()=>{D.current?.({failedCount:E,pendingCount:T})},[E,T]),(0,n.useEffect)(()=>(S.current=!0,()=>{S.current=!1,D.current?.({failedCount:0,pendingCount:0})}),[]);function O(e){if(!S.current)return;let t=e.filter(e=>e.status===`done`),n=t.map(e=>e.id),r=new Set(_),a=t.filter(e=>e.file!==void 0&&!r.has(e.id));x.current=e,g(e.map(e=>e.id)),f(e.filter(e=>e.status!==`done`)),a.length>0&&m(e=>new Map([...e,...a.map(e=>[e.id,e])])),n.join(`
3
3
  `)!==v&&i(n.length?n:void 0)}async function k(e){if(!c)throw Error(P);return{file:e,id:(await c(t,e)).id,progress:100,status:`done`}}async function ee(e,t){let n=await k(t).catch(n=>({errorMessage:F(n),file:t,id:e,status:`error`}));C.current(x.current.map(t=>t.id===e?n:t))}function A(e,t){p.has(e)?oe(t):o?.(e)}let te=!!c&&!l,j=[...!l&&!c?[{label:P,type:`info`}]:[],...d.filter(e=>e.status===`error`).map(e=>({label:`${e.file?.name??`檔案`}:${e.errorMessage??`上傳失敗`},未附加。請重試或刪除。`,type:`error`}))];return(0,a.jsx)(r.Upload,{accept:t.acceptedMimeTypes?.join(`,`),disabled:!te,files:b,...j.length>0?{hints:j}:{},maxFiles:t.maxFiles,mode:`button-list`,...(t.maxFiles??1)>1?{multiple:!0}:{},onChange:w,onDownload:A,onReload:(e,t)=>{ee(e,t)},onUpload:async e=>Promise.all(e.map(async e=>k(e).catch(t=>({errorMessage:F(t),file:e,id:`failed-${e.name}-${e.lastModified}-${Math.random()}`,status:`error`})))),size:`sub`})}function ie(e,t){return t?{file:ae(t),id:e,progress:100,status:`done`}:{id:e,progress:100,status:`done`,url:N}}function ae(e){let t=new File([],e.filename),n=Number(e.sizeBytes);return Number.isFinite(n)&&n>=0&&Object.defineProperty(t,"size",{value:n}),t}function F(e){return e instanceof Error&&e.message?`上傳失敗:${e.message}`:`上傳失敗,請重試。`}function oe(e){let t=URL.createObjectURL(e),n=document.createElement(`a`);n.href=t,n.download=e.name,n.style.display=`none`,document.body.appendChild(n),n.click(),n.remove(),setTimeout(()=>URL.revokeObjectURL(t),3e4)}var I=/\s/u;function se(e){return[...e].some(e=>{let t=e.codePointAt(0)??0;return t<=32||t>=127&&t<=160||I.test(e)})}var ce=/^https?:\/\//iu;function le(e){return typeof e!=`string`||!e||e.includes(`\\`)||se(e)?null:e.startsWith(`/`)?!e.startsWith(`//`)&&de(e)?{external:!1,href:e}:null:ce.test(e)&&fe(e)?{external:!0,href:e}:null}var ue=`http://placeholder.invalid`;function de(e){try{let t=new URL(e,ue);return t.origin===ue&&!t.pathname.startsWith(`//`)}catch{return!1}}function fe(e){try{let t=new URL(e);return(t.protocol===`http:`||t.protocol===`https:`)&&!!t.hostname&&!t.username&&!t.password}catch{return!1}}async function L(e,t,n={}){let r=n.maxPerIdRequests??20,i=Math.max(1,n.concurrency??4);try{return{failedIds:[],profiles:await t(e),skippedIds:[]}}catch{if(e.length<=1)return{failedIds:e,profiles:[],skippedIds:[]}}let a=e.slice(0,r),o=await z(a,i,e=>t([e]));return{failedIds:a.filter((e,t)=>o[t].status===`rejected`),profiles:o.flatMap(e=>e.status===`fulfilled`?e.value:[]),skippedIds:e.slice(r)}}function R(e,t){return e.filter(e=>!t.has(e))}async function z(e,t,n){let r=[],i=0;async function a(){for(;i<e.length;){let t=i;i+=1,r[t]=await n(e[t]).then(e=>({status:`fulfilled`,value:e}),e=>({reason:e,status:`rejected`}))}}return await Promise.all(Array.from({length:Math.min(t,e.length)},a)),r}var B=`未知會員`;function V(e){return{id:e.memberId,name:t.t(e.name,e.email)}}function pe(e){return{id:e,name:B,unresolved:!0}}function H(e,t){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);return i.length>0||a.some((t,n)=>t!==e[n])?[...a,...i]:e}function U(e,t){let n=new Set(t.filter(e=>!e.unresolved).map(e=>e.id));return(0,c.readFormMemberIds)(e).filter(e=>!n.has(e))}function me(e,t){return(0,c.readFormMemberIds)(e).map(e=>t.find(t=>t.id===e)??pe(e))}function he(e,t){if(e.length!==0)return t?e.map(e=>e.id):e[0]?.id}function W({multiple:e,name:t,onChange:o,placeholder:s,readonly:c,size:l,value:u}){let[d,f]=(0,n.useState)([]),[p,m]=(0,n.useState)([]),[h,g]=(0,n.useState)(!1),_=(0,n.useRef)(0),v=(0,n.useRef)(new Set),y=U(u,d).join(`
4
4
  `);(0,n.useEffect)(()=>{let e=R(y?y.split(`
5
- `):[],v.current),t=!1;return e.length===0?()=>void 0:(L(e,i.resolveMembers).then(({profiles:n,skippedIds:r})=>{if(t)return;let i=n.map(V),a=e.filter(e=>!i.some(t=>t.id===e)).map(pe);a.filter(e=>!r.includes(e.id)).forEach(e=>v.current.add(e.id)),f(e=>H(e,[...i,...a]))}),()=>{t=!0})},[y]);async function b(e){let t=_.current+1;_.current=t,g(!0);try{let n=(await(0,i.searchMembers)(e)).map(V);_.current===t&&(m(n),f(e=>H(e,n)))}catch{_.current===t&&m([])}finally{_.current===t&&g(!1)}}let x=me(u,d),S=[...H(x,p)],C={asyncData:!0,clearSearchText:!0,disabled:c,disabledOptionsFilter:!0,emptyText:`沒有符合的成員`,globalPortal:!0,inputProps:{autoCapitalize:`none`,autoCorrect:`off`,name:t,spellCheck:!1},loading:h,loadingText:`搜尋成員中...`,onSearch:b,onVisibilityChange:e=>{e&&(m([]),b(``))},options:S,placeholder:s??`搜尋姓名或信箱`,readOnly:c,searchDebounceTime:300,size:l};return e?(0,a.jsx)(r.AutoComplete,{...C,mode:`multiple`,onChange:e=>o(he(e,!0)),value:[...x]}):(0,a.jsx)(r.AutoComplete,{...C,mode:`single`,onChange:e=>o(he(e?[e]:[],!1)),value:x[0]??null})}var ge=`未知組織`,G=`(已刪除)`;function _e(e){return{id:e.id,name:e.deleted?`${e.name}${G}`:e.name}}function ve(e){return{id:e,name:e,unresolved:!0}}function K(e){return{id:e,name:ge,unresolved:!0}}function ye(e){return typeof e==`string`&&e.trim()?e:null}function q(e){return e.toLowerCase()}function J(e,t){return q(e)===q(t)}function Y(e,t){let n=ye(e);return n===null?null:t.find(e=>J(e.id,n))??ve(n)}function be(e,t){let n=ye(e);return n!==null&&!t.some(e=>J(e.id,n))?n:null}function X(e,t){let n=new Map(t.filter(e=>!e.unresolved).map(e=>[q(e.id),e])),r=new Set(e.map(e=>q(e.id))),i=t.filter((e,n)=>!r.has(q(e.id))&&t.findIndex(t=>J(t.id,e.id))===n),a=e.map(e=>(e.unresolved?n.get(q(e.id)):void 0)??e);return i.length>0||a.some((t,n)=>t!==e[n])?[...a,...i]:e}function xe(e){return e?e.id:void 0}var Se=`搜尋組織失敗,請稍後再試。`;function Z({name:e,onChange:t,placeholder:i,readonly:o,size:s,value:c}){let[u,d]=(0,n.useState)([]),[f,p]=(0,n.useState)([]),[m,h]=(0,n.useState)(!1),[g,_]=(0,n.useState)(!1),v=(0,n.useRef)(0),y=be(c,u);(0,n.useEffect)(()=>{let e=!1;return y===null?()=>void 0:((0,l.resolveOrgUnitOptions)([y]).then(e=>{let t=e.map(_e);return t.some(e=>e.id.toLowerCase()===y.toLowerCase())?t:[...t,K(y)]}).catch(()=>[K(y)]).then(t=>{e||d(e=>X(e,t))}),()=>{e=!0})},[y]);async function b(e){let t=v.current+1;v.current=t,h(!0);try{let n=(await(0,l.searchOrgUnitOptions)(e)).map(_e);v.current===t&&(p(n),_(!1),d(e=>X(e,n)))}catch{v.current===t&&(p([]),_(!0))}finally{v.current===t&&h(!1)}}let x=Y(c,u),S=[...X(x?[x]:[],f)];return(0,a.jsxs)(`div`,{children:[(0,a.jsx)(r.AutoComplete,{asyncData:!0,clearSearchText:!0,disabled:o,disabledOptionsFilter:!0,emptyText:`沒有符合的組織`,globalPortal:!0,inputProps:{autoCapitalize:`none`,autoCorrect:`off`,name:e,spellCheck:!1},loading:m,loadingText:`搜尋組織中...`,mode:`single`,onChange:e=>t(xe(e??null)),onSearch:b,onVisibilityChange:e=>{e&&(p([]),b(``))},options:S,placeholder:i??`搜尋組織名稱`,readOnly:o,searchDebounceTime:300,size:s,value:x}),g?(0,a.jsx)(r.Typography,{color:`text-error`,variant:`caption`,children:Se}):null]})}var Q={alignItems:`start`,display:`grid`,gap:12,gridTemplateColumns:`repeat(12, minmax(0, 1fr))`},Ce={gridColumn:`1 / -1`},we={alignItems:`start`,display:`grid`,gap:8,minWidth:0},Te={minWidth:`100%`,width:`100%`};function Ee(e){e&&(e.style.width=`100%`)}function De({attachments:e,dataSourceContext:t,dataSourceInitialValues:i,emptyText:o=`尚未建立欄位。`,errors:l={},fieldAccess:u,fieldLabelMarkers:d,maxWidth:f,onChange:p,onDataSourceStateChange:m,onDownloadAttachment:h,onFileUploadStateChange:g,onUploadAttachment:_,optionSnapshots:v,readonly:y=!1,schema:b,singleColumn:x=!1,uiSchema:S,value:C}){let w=(0,n.useMemo)(()=>({attachments:e,onDownloadAttachment:h,onStateChange:g,onUploadAttachment:_}),[e,h,g,_]),[T,E]=(0,n.useState)(()=>(0,s.buildFormRendererValues)(b.fields,C??{})),D=(0,n.useMemo)(()=>(0,s.buildFormRendererValues)(b.fields,C??T),[T,b.fields,C]),O=(0,n.useRef)(D),k=(0,n.useMemo)(()=>(0,s.readVisibleFormRendererFields)(b,S,D).filter(e=>$(u,e.fieldKey)?.visible!==!1),[u,b,S,D]);(0,n.useEffect)(()=>{O.current=D},[D]),(0,n.useEffect)(()=>{E(e=>(0,s.buildFormRendererValues)(b.fields,C??e))},[b.fields,C]);function ee(e,t){let n={...O.current,[e]:t};O.current=n,C||E(n),p?.(n)}return k.length?(0,a.jsx)(`div`,{style:{...Q,...x?{width:`100%`}:{}},children:k.map(e=>(0,a.jsx)(ke,{dataSourceContext:t,dataSourceInitialValues:i,field:e,error:l[e.fieldKey]??null,errors:l,fields:b.fields,labelMarker:d!==void 0&&Object.prototype.hasOwnProperty.call(d,e.fieldKey)?d[e.fieldKey]:void 0,onChange:ee,fileUpload:w,onDataSourceStateChange:m,optionSnapshots:v,readonly:Oe($(u,e.fieldKey),y),schema:b,style:{...we,gridColumn:`span ${x?12:Ye(e,S)}`,...x&&!(0,c.isTableFieldDefinition)(e)?{maxWidth:f}:{}},value:D[e.fieldKey],values:D,uiSchema:S},e.fieldKey))}):(0,a.jsx)(`div`,{style:Q,children:(0,a.jsx)(r.Typography,{color:`text-neutral`,style:Ce,variant:`body`,children:b.fields.length>0?`目前條件下沒有可填寫欄位。`:o})})}function $(e,t){return e!==void 0&&Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0}function Oe(e,t){return e===void 0?t:!e.editable}function ke({dataSourceContext:t,dataSourceInitialValues:i,error:o,errors:l,field:u,fields:d,fileUpload:f,labelMarker:p,onChange:m,onDataSourceStateChange:h,optionSnapshots:g,readonly:_,schema:v,style:y,value:b,values:S,uiSchema:w}){let T=(0,s.isFormRendererFieldRequired)(u,d,S),E=_||(0,s.isFormRendererFieldReadonly)(u,d,S),D=x({context:t,field:u,formData:S,initialFormData:i,initialValue:i?.[u.fieldKey],optionSnapshots:g,readonly:E,schema:v,uiSchema:w}),O=C(D),k=JSON.stringify({hasValue:D.hasValue,invalidValues:D.invalidValues,selectionExpired:D.selectionExpired===!0,status:D.status});return(0,n.useEffect)(()=>{(0,c.isFormDataSourceFieldDefinition)(u)&&h?.(u.fieldKey,{hasValue:D.hasValue,invalidValues:D.invalidValues,selectionExpired:D.selectionExpired===!0,status:D.status})},[k,u.fieldKey,h]),(0,a.jsxs)(`div`,{"data-form-field-key":u.fieldKey,style:y,children:[(0,a.jsx)(e.t,{label:u.label,...p?{labelOptionalMarker:p}:{},name:u.fieldKey,required:T,children:(0,c.isTableFieldDefinition)(u)?(0,a.jsx)(Be,{dataSourceContext:t,dataSourceInitialValues:i,errors:l,field:u,onChange:m,onDataSourceStateChange:h,optionSnapshots:g,readonly:E,schema:v,uiSchema:w,value:b,values:S}):Ke(u,b,E,m,f,t,D)}),o?(0,a.jsx)(r.Typography,{color:`text-error`,variant:`caption`,children:o}):null,O?(0,a.jsxs)(`div`,{style:Ne,children:[(0,a.jsx)(r.Typography,{color:D.status===`INVALID`||D.status===`UNAVAILABLE`?`text-error`:`text-neutral`,variant:`caption`,children:O}),D.status===`UNAVAILABLE`&&D.canRetry?(0,a.jsx)(r.Button,{onClick:D.retry,size:`sub`,type:`button`,variant:`base-ghost`,children:`重試`}):null]}):null]})}var Ae=`(另開新分頁)`,je=`另開新分頁`,Me={color:`inherit`,textDecoration:`underline`,wordBreak:`break-all`},Ne={alignItems:`center`,display:`flex`,gap:8},Pe={display:`grid`,gap:8,minWidth:0,width:`100%`},Fe={display:`flex`,justifyContent:`flex-start`},Ie={maxWidth:`100%`,overflowX:`auto`},Le=160,Re=56,ze={display:`grid`,gap:4,minWidth:0};function Be({dataSourceContext:e,dataSourceInitialValues:t,errors:i,field:c,onChange:l,onDataSourceStateChange:u,optionSnapshots:d,readonly:f,schema:p,uiSchema:m,value:h,values:g}){let _=(0,s.readFormTableRows)(h),v=(0,s.readFormTableRowBounds)(c),y=(0,n.useRef)(0),[b,x]=(0,n.useState)(()=>_.map(()=>Ue(y)));(0,n.useEffect)(()=>{b.length!==_.length&&x(_.map(()=>Ue(y)))},[b.length,_.length]);function S(e){l(c.fieldKey,e)}function C(){x([...b,Ue(y)]),S([..._,(0,s.createFormTableRow)(c.columns)])}function w(e){x(b.filter((t,n)=>n!==e)),S(_.filter((t,n)=>n!==e))}function T(e,t,n){S(_.map((r,i)=>i===e?We(r,t,n):r))}let E=_.map((e,t)=>({...e,index:t,key:b[t]??`row-${t}`})),D=c.columns.map(n=>({key:n.fieldKey,render:r=>(0,a.jsx)(Ve,{column:n,dataSourceContext:e,error:i[(0,s.readFormTableCellPath)(c.fieldKey,r.index,n.fieldKey)]??null,fieldPath:`${c.fieldKey}.${n.fieldKey}`,formData:g,initialFormData:t,initialRowValues:He(t?.[c.fieldKey],r.index),onChange:e=>T(r.index,n.fieldKey,e),onDataSourceStateChange:u,optionSnapshots:d,path:(0,s.readFormTableCellPath)(c.fieldKey,r.index,n.fieldKey),readonly:f,rowValues:_[r.index]??{},schema:p,uiSchema:m},`${b[r.index]??r.index}-${n.fieldKey}`),title:n.label||n.fieldKey})),O=f?void 0:{render:e=>[{disabled:()=>_.length<=v.minRows,icon:o.TrashIcon,iconType:`icon-only`,name:`刪除此列`,onClick:()=>w(e.index),variant:`destructive-ghost`}],width:56};return(0,a.jsxs)(`div`,{style:Pe,children:[(0,a.jsx)(`div`,{style:Ie,children:(0,a.jsx)(`div`,{style:{minWidth:c.columns.length*Le+(O?Re:0)},children:(0,a.jsx)(r.Table,{...O?{actions:O}:{},columns:D,dataSource:[...E],rowHeightPreset:`roomy`,showHeader:!0,size:`sub`})})}),f?null:(0,a.jsx)(`div`,{style:Fe,children:(0,a.jsx)(r.Button,{disabled:_.length>=v.maxRows,icon:o.PlusIcon,iconType:`leading`,onClick:C,size:`sub`,type:`button`,variant:`base-secondary`,children:c.addRowLabel||`新增一列`})})]})}function Ve({column:e,dataSourceContext:t,error:i,fieldPath:o,formData:s,initialFormData:l,initialRowValues:u,onChange:d,onDataSourceStateChange:f,optionSnapshots:p,path:m,readonly:h,rowValues:g,schema:_,uiSchema:v}){let y=Ge(g,e.fieldKey),b=x({context:t,field:e,fieldPath:o,formData:s,initialFormData:l,initialValue:u?Ge(u,e.fieldKey):void 0,optionSnapshots:p,readonly:h,row:{initialValues:u,values:g},schema:_,snapshotKey:m,uiSchema:v}),S=C(b),w=JSON.stringify({hasValue:b.hasValue,invalidValues:b.invalidValues,selectionExpired:b.selectionExpired===!0,status:b.status});return(0,n.useEffect)(()=>{if((0,c.isFormDataSourceFieldDefinition)(e))return f?.(m,{hasValue:b.hasValue,invalidValues:b.invalidValues,selectionExpired:b.selectionExpired===!0,status:b.status}),()=>{f?.(m,{hasValue:!1,invalidValues:[],status:`IDLE`})}},[f,m,w]),(0,a.jsxs)(`div`,{"data-form-field-key":m,style:ze,children:[Ke(e,y,h,(e,t)=>d(t),void 0,t,b,`sub`),i?(0,a.jsx)(r.Typography,{color:`text-error`,variant:`caption`,children:i}):null,S?(0,a.jsxs)(`div`,{style:Ne,children:[(0,a.jsx)(r.Typography,{color:b.status===`INVALID`||b.status===`UNAVAILABLE`?`text-error`:`text-neutral`,variant:`caption`,children:S}),b.status===`UNAVAILABLE`&&b.canRetry?(0,a.jsx)(r.Button,{onClick:b.retry,size:`sub`,type:`button`,variant:`base-ghost`,children:`重試`}):null]}):null]})}function He(e,t){return(0,s.readFormTableRows)(e)[t]}function Ue(e){return e.current+=1,`table-row-${e.current}`}function We(e,t,n){return n===void 0||!(0,c.isFormTableCellValue)(n)?Object.fromEntries(Object.entries(e).filter(([e])=>e!==t)):{...e,[t]:n}}function Ge(e,t){if(e&&Object.prototype.hasOwnProperty.call(e,t))return e[t]}function Ke(e,t,n,r,i,a,o,s=`main`){return(0,c.isFormDataSourceFieldDefinition)(e)?Je(e,t,n,r,a,o,s):qe(e,t,n,r,i,s)}function qe(e,t,n,i,o,l=`main`){let u=n&&(e.type===`text`||e.type===`textarea`)&&e.displayAs===`link`?le(t):null;if(u)return(0,a.jsx)(r.Typography,{color:`text-brand`,component:`span`,variant:`body`,children:(0,a.jsx)(`a`,{href:u.href,style:Me,...u.external?{"aria-label":`${u.href}${Ae}`,rel:`noopener noreferrer`,target:`_blank`,title:je}:{},children:u.href})});if(e.type===`textarea`)return(0,a.jsx)(r.Textarea,{onChange:t=>i(e.fieldKey,t.target.value),placeholder:e.placeholder??`請輸入多行文字`,readOnly:n,ref:Ee,rows:3,style:Te,value:Xe(t)});if(e.type===`boolean`)return(0,a.jsx)(r.Toggle,{checked:t===!0,disabled:n,label:`啟用`,onChange:t=>i(e.fieldKey,t.target.checked),size:l});if((0,c.isFormStaticOptionFieldDefinition)(e)&&e.type===`checkbox`){let o=e.options.map(s.readFieldOptionAsSelectOption);return(0,a.jsx)(r.Select,{mode:`multiple`,onChange:t=>i(e.fieldKey,t?.length?t.map(e=>e.id):void 0),options:o,placeholder:e.placeholder??`請選擇一或多個選項`,readOnly:n,size:l,value:o.filter(e=>ne(t).includes(e.id))})}if((0,c.isFormStaticOptionFieldDefinition)(e)){let o=e.options.map(s.readFieldOptionAsSelectOption);return(0,a.jsx)(r.Select,{onChange:t=>i(e.fieldKey,t?.id??void 0),options:o,placeholder:e.placeholder??`請選擇`,readOnly:n,size:l,value:(0,s.readSelectOption)(o,Xe(t))})}return e.type===`member`?(0,a.jsx)(W,{multiple:e.multiple===!0,name:e.fieldKey,onChange:t=>i(e.fieldKey,t),placeholder:e.placeholder,readonly:n,size:l,value:t}):e.type===`org_unit`?(0,a.jsx)(Z,{name:e.fieldKey,onChange:t=>i(e.fieldKey,t),placeholder:e.placeholder??Qe(e.type),readonly:n,size:l,value:t}):e.type===`file_upload`?(0,a.jsx)(re,{attachments:o?.attachments,field:e,onChange:t=>i(e.fieldKey,t),onDownloadAttachment:o?.onDownloadAttachment,onStateChange:t=>o?.onStateChange?.(e.fieldKey,t),onUploadAttachment:o?.onUploadAttachment,readonly:n,value:t}):e.type===`date`?(0,a.jsx)(r.DatePicker,{format:`YYYY-MM-DD`,fullWidth:!0,onChange:t=>i(e.fieldKey,(0,s.formatDatePickerValue)(t)),placeholder:e.placeholder??Qe(e.type),readOnly:n,value:(0,s.readDatePickerValue)(t)}):e.type===`datetime`?(0,a.jsx)(r.DateTimePicker,{formatDate:`YYYY-MM-DD`,formatTime:`HH:mm`,fullWidth:!0,hideSecond:!0,onChange:t=>i(e.fieldKey,(0,s.formatDateTimePickerValue)(t)),placeholderLeft:`選擇日期`,placeholderRight:`選擇時間`,readOnly:n,value:(0,s.readDatePickerValue)(t)}):e.type===`number`||e.type===`money`?(0,a.jsx)(r.Input,{fullWidth:!0,max:e.maximum,min:e.minimum,size:l,onChange:t=>i(e.fieldKey,(0,s.clampOptionalNumber)((0,s.parseOptionalNumberInput)(t.target.value),{max:e.maximum,min:e.minimum})),placeholder:e.placeholder??Qe(e.type),...n?{readonly:!0}:{},showSpinner:!0,value:Ze(t),variant:`measure`}):(0,a.jsx)(r.Input,{fullWidth:!0,onChange:t=>i(e.fieldKey,t.target.value),placeholder:e.placeholder??Qe(e.type),...n?{readonly:!0}:{},size:l,value:Xe(t),variant:`base`})}function Je(e,t,n,i,o,l,u=`main`){let d=l.options.map(s.readFieldOptionAsSelectOption),f=(0,s.readSelectedFormDataSourceOptions)(t,l.options).map(s.readFieldOptionAsSelectOption),p=l.status===`LOADING`,m=l.status===`WAITING_FOR_DEPENDENCIES`,h=!!o&&!n,g=n||m,_=n;return e.type===`autocomplete`?(0,c.readFormFieldSelectionMode)(e)===`multiple`?(0,a.jsx)(r.AutoComplete,{asyncData:h,clearSearchText:!0,disabled:_,disabledOptionsFilter:h,globalPortal:!0,loading:p,mode:`multiple`,onChange:t=>i(e.fieldKey,t.length?t.map(e=>e.id):void 0),onReachBottom:l.hasNextPage?l.onReachBottom:void 0,onSearch:h?l.onSearch:void 0,options:d,placeholder:e.placeholder??`請輸入或選擇`,readOnly:n,searchDebounceTime:300,size:u,value:f}):(0,a.jsx)(r.AutoComplete,{asyncData:h,clearSearchText:!0,disabled:_,disabledOptionsFilter:h,globalPortal:!0,loading:p,mode:`single`,onChange:t=>i(e.fieldKey,t?.id??void 0),onReachBottom:l.hasNextPage?l.onReachBottom:void 0,onSearch:h?l.onSearch:void 0,options:d,placeholder:e.placeholder??`請輸入或選擇`,readOnly:n,searchDebounceTime:300,size:u,value:f[0]??null}):e.type===`radio`?(0,a.jsx)(r.RadioGroup,{disabled:g,name:e.fieldKey,onChange:t=>i(e.fieldKey,t.target.value||void 0),options:d,value:Xe(t)}):e.type===`checkbox`?(0,a.jsx)(r.CheckboxGroup,{disabled:g,name:e.fieldKey,onChange:t=>i(e.fieldKey,t.target.values.length?t.target.values:void 0),options:d.map(e=>({label:e.name,value:e.id})),value:[...ne(t)]}):(0,c.readFormFieldSelectionMode)(e)===`multiple`?(0,a.jsx)(r.Select,{disabled:g,loading:p,mode:`multiple`,onChange:t=>i(e.fieldKey,t.length?t.map(e=>e.id):void 0),onReachBottom:l.hasNextPage?l.onReachBottom:void 0,options:d,placeholder:e.placeholder??`請選擇一或多個選項`,readOnly:n,size:u,value:f}):(0,a.jsx)(r.Select,{disabled:g,loading:p,onChange:t=>i(e.fieldKey,t?.id??void 0),onReachBottom:l.hasNextPage?l.onReachBottom:void 0,options:d,placeholder:e.placeholder??`請選擇`,readOnly:n,size:u,value:f[0]??null})}function Ye(e,t){return{FULL:12,HALF:6,THIRD:4}[t.layout.find(t=>t.fieldKey===e.fieldKey)?.width??`FULL`]}function Xe(e){return typeof e==`string`?e:``}function Ze(e){return typeof e==`number`?String(e):``}function Qe(e){return{boolean:``,autocomplete:`請輸入或選擇`,checkbox:`請選擇一或多個選項`,date:`請選擇日期`,datetime:`請選擇日期與時間`,file_upload:`請上傳附件`,member:`搜尋姓名或信箱`,money:`請輸入金額`,number:`請輸入數字`,org_unit:`搜尋組織名稱`,radio:`請選擇一個選項`,select:`請選擇一個選項`,table:``,text:`請輸入文字`,textarea:`請輸入多行文字`}[e]}Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return _e}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return De}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return x}});
6
- //# sourceMappingURL=FormRendererView-lYSaR8CQ.cjs.map
5
+ `):[],v.current),t=!1;return e.length===0?()=>void 0:(L(e,i.resolveMembers).then(({profiles:n,skippedIds:r})=>{if(t)return;let i=n.map(V),a=e.filter(e=>!i.some(t=>t.id===e)).map(pe);a.filter(e=>!r.includes(e.id)).forEach(e=>v.current.add(e.id)),f(e=>H(e,[...i,...a]))}),()=>{t=!0})},[y]);async function b(e){let t=_.current+1;_.current=t,g(!0);try{let n=(await(0,i.searchMembers)(e)).map(V);_.current===t&&(m(n),f(e=>H(e,n)))}catch{_.current===t&&m([])}finally{_.current===t&&g(!1)}}let x=me(u,d),S=[...H(x,p)],C={asyncData:!0,clearSearchText:!0,disabled:c,disabledOptionsFilter:!0,emptyText:`沒有符合的成員`,globalPortal:!0,inputProps:{autoCapitalize:`none`,autoCorrect:`off`,name:t,spellCheck:!1},loading:h,loadingText:`搜尋成員中...`,onSearch:b,onVisibilityChange:e=>{e&&(m([]),b(``))},options:S,placeholder:s??`搜尋姓名或信箱`,readOnly:c,searchDebounceTime:300,size:l};return e?(0,a.jsx)(r.AutoComplete,{...C,mode:`multiple`,onChange:e=>o(he(e,!0)),value:[...x]}):(0,a.jsx)(r.AutoComplete,{...C,mode:`single`,onChange:e=>o(he(e?[e]:[],!1)),value:x[0]??null})}var ge=`未知組織`,G=`(已刪除)`;function _e(e){return{id:e.id,name:e.deleted?`${e.name}${G}`:e.name}}function ve(e){return{id:e,name:e,unresolved:!0}}function K(e){return{id:e,name:ge,unresolved:!0}}function ye(e){return typeof e==`string`&&e.trim()?e:null}function q(e){return e.toLowerCase()}function J(e,t){return q(e)===q(t)}function Y(e,t){let n=ye(e);return n===null?null:t.find(e=>J(e.id,n))??ve(n)}function be(e,t){let n=ye(e);return n!==null&&!t.some(e=>J(e.id,n))?n:null}function X(e,t){let n=new Map(t.filter(e=>!e.unresolved).map(e=>[q(e.id),e])),r=new Set(e.map(e=>q(e.id))),i=t.filter((e,n)=>!r.has(q(e.id))&&t.findIndex(t=>J(t.id,e.id))===n),a=e.map(e=>(e.unresolved?n.get(q(e.id)):void 0)??e);return i.length>0||a.some((t,n)=>t!==e[n])?[...a,...i]:e}function xe(e){return e?e.id:void 0}var Se=`搜尋組織失敗,請稍後再試。`;function Z({name:e,onChange:t,placeholder:i,readonly:o,size:s,value:c}){let[u,d]=(0,n.useState)([]),[f,p]=(0,n.useState)([]),[m,h]=(0,n.useState)(!1),[g,_]=(0,n.useState)(!1),v=(0,n.useRef)(0),y=be(c,u);(0,n.useEffect)(()=>{let e=!1;return y===null?()=>void 0:((0,l.resolveOrgUnitOptions)([y]).then(e=>{let t=e.map(_e);return t.some(e=>e.id.toLowerCase()===y.toLowerCase())?t:[...t,K(y)]}).catch(()=>[K(y)]).then(t=>{e||d(e=>X(e,t))}),()=>{e=!0})},[y]);async function b(e){let t=v.current+1;v.current=t,h(!0);try{let n=(await(0,l.searchOrgUnitOptions)(e)).map(_e);v.current===t&&(p(n),_(!1),d(e=>X(e,n)))}catch{v.current===t&&(p([]),_(!0))}finally{v.current===t&&h(!1)}}let x=Y(c,u),S=[...X(x?[x]:[],f)];return(0,a.jsxs)(`div`,{children:[(0,a.jsx)(r.AutoComplete,{asyncData:!0,clearSearchText:!0,disabled:o,disabledOptionsFilter:!0,emptyText:`沒有符合的組織`,globalPortal:!0,inputProps:{autoCapitalize:`none`,autoCorrect:`off`,name:e,spellCheck:!1},loading:m,loadingText:`搜尋組織中...`,mode:`single`,onChange:e=>t(xe(e??null)),onSearch:b,onVisibilityChange:e=>{e&&(p([]),b(``))},options:S,placeholder:i??`搜尋組織名稱`,readOnly:o,searchDebounceTime:300,size:s,value:x}),g?(0,a.jsx)(r.Typography,{color:`text-error`,variant:`caption`,children:Se}):null]})}var Q={alignItems:`start`,display:`grid`,gap:12,gridTemplateColumns:`repeat(12, minmax(0, 1fr))`},Ce={gridColumn:`1 / -1`},we={alignItems:`start`,display:`grid`,gap:8,minWidth:0},Te={minWidth:`100%`,width:`100%`};function Ee(e){e&&(e.style.width=`100%`)}function De({attachments:e,dataSourceContext:t,dataSourceInitialValues:i,emptyText:s=`尚未建立欄位。`,errors:l={},fieldAccess:u,fieldLabelMarkers:d,maxWidth:f,onChange:p,onDataSourceStateChange:m,onDownloadAttachment:h,onFileUploadStateChange:g,onUploadAttachment:_,optionSnapshots:v,readonly:y=!1,schema:b,singleColumn:x=!1,uiSchema:S,value:C}){let w=(0,n.useMemo)(()=>({attachments:e,onDownloadAttachment:h,onStateChange:g,onUploadAttachment:_}),[e,h,g,_]),[T,E]=(0,n.useState)(()=>(0,o.buildFormRendererValues)(b.fields,C??{})),D=(0,n.useMemo)(()=>(0,o.buildFormRendererValues)(b.fields,C??T),[T,b.fields,C]),O=(0,n.useRef)(D),k=(0,n.useMemo)(()=>(0,o.readVisibleFormRendererFields)(b,S,D).filter(e=>$(u,e.fieldKey)?.visible!==!1),[u,b,S,D]);(0,n.useEffect)(()=>{O.current=D},[D]),(0,n.useEffect)(()=>{E(e=>(0,o.buildFormRendererValues)(b.fields,C??e))},[b.fields,C]);function ee(e,t){let n={...O.current,[e]:t};O.current=n,C||E(n),p?.(n)}return k.length?(0,a.jsx)(`div`,{style:{...Q,...x?{width:`100%`}:{}},children:k.map(e=>(0,a.jsx)(ke,{dataSourceContext:t,dataSourceInitialValues:i,field:e,error:l[e.fieldKey]??null,errors:l,fields:b.fields,labelMarker:d!==void 0&&Object.prototype.hasOwnProperty.call(d,e.fieldKey)?d[e.fieldKey]:void 0,onChange:ee,fileUpload:w,onDataSourceStateChange:m,optionSnapshots:v,readonly:Oe($(u,e.fieldKey),y),schema:b,style:{...we,gridColumn:`span ${x?12:Ye(e,S)}`,...x&&!(0,c.isTableFieldDefinition)(e)?{maxWidth:f}:{}},value:D[e.fieldKey],values:D,uiSchema:S},e.fieldKey))}):(0,a.jsx)(`div`,{style:Q,children:(0,a.jsx)(r.Typography,{color:`text-neutral`,style:Ce,variant:`body`,children:b.fields.length>0?`目前條件下沒有可填寫欄位。`:s})})}function $(e,t){return e!==void 0&&Object.prototype.hasOwnProperty.call(e,t)?e[t]:void 0}function Oe(e,t){return e===void 0?t:!e.editable}function ke({dataSourceContext:t,dataSourceInitialValues:i,error:s,errors:l,field:u,fields:d,fileUpload:f,labelMarker:p,onChange:m,onDataSourceStateChange:h,optionSnapshots:g,readonly:_,schema:v,style:y,value:b,values:S,uiSchema:w}){let T=(0,o.isFormRendererFieldRequired)(u,d,S),E=_||(0,o.isFormRendererFieldReadonly)(u,d,S),D=x({context:t,field:u,formData:S,initialFormData:i,initialValue:i?.[u.fieldKey],optionSnapshots:g,readonly:E,schema:v,uiSchema:w}),O=C(D),k=JSON.stringify({hasValue:D.hasValue,invalidValues:D.invalidValues,selectionExpired:D.selectionExpired===!0,status:D.status});return(0,n.useEffect)(()=>{(0,c.isFormDataSourceFieldDefinition)(u)&&h?.(u.fieldKey,{hasValue:D.hasValue,invalidValues:D.invalidValues,selectionExpired:D.selectionExpired===!0,status:D.status})},[k,u.fieldKey,h]),(0,a.jsxs)(`div`,{"data-form-field-key":u.fieldKey,style:y,children:[(0,a.jsx)(e.t,{label:u.label,...p?{labelOptionalMarker:p}:{},name:u.fieldKey,required:T,children:(0,c.isTableFieldDefinition)(u)?(0,a.jsx)(Be,{dataSourceContext:t,dataSourceInitialValues:i,errors:l,field:u,onChange:m,onDataSourceStateChange:h,optionSnapshots:g,readonly:E,schema:v,uiSchema:w,value:b,values:S}):Ke(u,b,E,m,f,t,D)}),s?(0,a.jsx)(r.Typography,{color:`text-error`,variant:`caption`,children:s}):null,O?(0,a.jsxs)(`div`,{style:Ne,children:[(0,a.jsx)(r.Typography,{color:D.status===`INVALID`||D.status===`UNAVAILABLE`?`text-error`:`text-neutral`,variant:`caption`,children:O}),D.status===`UNAVAILABLE`&&D.canRetry?(0,a.jsx)(r.Button,{onClick:D.retry,size:`sub`,type:`button`,variant:`base-ghost`,children:`重試`}):null]}):null]})}var Ae=`(另開新分頁)`,je=`另開新分頁`,Me={color:`inherit`,textDecoration:`underline`,wordBreak:`break-all`},Ne={alignItems:`center`,display:`flex`,gap:8},Pe={display:`grid`,gap:8,minWidth:0,width:`100%`},Fe={display:`flex`,justifyContent:`flex-start`},Ie={maxWidth:`100%`,overflowX:`auto`},Le=160,Re=56,ze={display:`grid`,gap:4,minWidth:0};function Be({dataSourceContext:e,dataSourceInitialValues:t,errors:i,field:c,onChange:l,onDataSourceStateChange:u,optionSnapshots:d,readonly:f,schema:p,uiSchema:m,value:h,values:g}){let _=(0,o.readFormTableRows)(h),v=(0,o.readFormTableRowBounds)(c),y=(0,n.useRef)(0),[b,x]=(0,n.useState)(()=>_.map(()=>Ue(y)));(0,n.useEffect)(()=>{b.length!==_.length&&x(_.map(()=>Ue(y)))},[b.length,_.length]);function S(e){l(c.fieldKey,e)}function C(){x([...b,Ue(y)]),S([..._,(0,o.createFormTableRow)(c.columns)])}function w(e){x(b.filter((t,n)=>n!==e)),S(_.filter((t,n)=>n!==e))}function T(e,t,n){S(_.map((r,i)=>i===e?We(r,t,n):r))}let E=_.map((e,t)=>({...e,index:t,key:b[t]??`row-${t}`})),D=c.columns.map(n=>({key:n.fieldKey,render:r=>(0,a.jsx)(Ve,{column:n,dataSourceContext:e,error:i[(0,o.readFormTableCellPath)(c.fieldKey,r.index,n.fieldKey)]??null,fieldPath:`${c.fieldKey}.${n.fieldKey}`,formData:g,initialFormData:t,initialRowValues:He(t?.[c.fieldKey],r.index),onChange:e=>T(r.index,n.fieldKey,e),onDataSourceStateChange:u,optionSnapshots:d,path:(0,o.readFormTableCellPath)(c.fieldKey,r.index,n.fieldKey),readonly:f,rowValues:_[r.index]??{},schema:p,uiSchema:m},`${b[r.index]??r.index}-${n.fieldKey}`),title:n.label||n.fieldKey})),O=f?void 0:{render:e=>[{disabled:()=>_.length<=v.minRows,icon:s.TrashIcon,iconType:`icon-only`,name:`刪除此列`,onClick:()=>w(e.index),variant:`destructive-ghost`}],width:56};return(0,a.jsxs)(`div`,{style:Pe,children:[(0,a.jsx)(`div`,{style:Ie,children:(0,a.jsx)(`div`,{style:{minWidth:c.columns.length*Le+(O?Re:0)},children:(0,a.jsx)(r.Table,{...O?{actions:O}:{},columns:D,dataSource:[...E],rowHeightPreset:`roomy`,showHeader:!0,size:`sub`})})}),f?null:(0,a.jsx)(`div`,{style:Fe,children:(0,a.jsx)(r.Button,{disabled:_.length>=v.maxRows,icon:s.PlusIcon,iconType:`leading`,onClick:C,size:`sub`,type:`button`,variant:`base-secondary`,children:c.addRowLabel||`新增一列`})})]})}function Ve({column:e,dataSourceContext:t,error:i,fieldPath:o,formData:s,initialFormData:l,initialRowValues:u,onChange:d,onDataSourceStateChange:f,optionSnapshots:p,path:m,readonly:h,rowValues:g,schema:_,uiSchema:v}){let y=Ge(g,e.fieldKey),b=x({context:t,field:e,fieldPath:o,formData:s,initialFormData:l,initialValue:u?Ge(u,e.fieldKey):void 0,optionSnapshots:p,readonly:h,row:{initialValues:u,values:g},schema:_,snapshotKey:m,uiSchema:v}),S=C(b),w=JSON.stringify({hasValue:b.hasValue,invalidValues:b.invalidValues,selectionExpired:b.selectionExpired===!0,status:b.status});return(0,n.useEffect)(()=>{if((0,c.isFormDataSourceFieldDefinition)(e))return f?.(m,{hasValue:b.hasValue,invalidValues:b.invalidValues,selectionExpired:b.selectionExpired===!0,status:b.status}),()=>{f?.(m,{hasValue:!1,invalidValues:[],status:`IDLE`})}},[f,m,w]),(0,a.jsxs)(`div`,{"data-form-field-key":m,style:ze,children:[Ke(e,y,h,(e,t)=>d(t),void 0,t,b,`sub`),i?(0,a.jsx)(r.Typography,{color:`text-error`,variant:`caption`,children:i}):null,S?(0,a.jsxs)(`div`,{style:Ne,children:[(0,a.jsx)(r.Typography,{color:b.status===`INVALID`||b.status===`UNAVAILABLE`?`text-error`:`text-neutral`,variant:`caption`,children:S}),b.status===`UNAVAILABLE`&&b.canRetry?(0,a.jsx)(r.Button,{onClick:b.retry,size:`sub`,type:`button`,variant:`base-ghost`,children:`重試`}):null]}):null]})}function He(e,t){return(0,o.readFormTableRows)(e)[t]}function Ue(e){return e.current+=1,`table-row-${e.current}`}function We(e,t,n){return n===void 0||!(0,c.isFormTableCellValue)(n)?Object.fromEntries(Object.entries(e).filter(([e])=>e!==t)):{...e,[t]:n}}function Ge(e,t){if(e&&Object.prototype.hasOwnProperty.call(e,t))return e[t]}function Ke(e,t,n,r,i,a,o,s=`main`){return(0,c.isFormDataSourceFieldDefinition)(e)?Je(e,t,n,r,a,o,s):qe(e,t,n,r,i,s)}function qe(e,t,n,i,s,l=`main`){let u=n&&(e.type===`text`||e.type===`textarea`)&&e.displayAs===`link`?le(t):null;if(u)return(0,a.jsx)(r.Typography,{color:`text-brand`,component:`span`,variant:`body`,children:(0,a.jsx)(`a`,{href:u.href,style:Me,...u.external?{"aria-label":`${u.href}${Ae}`,rel:`noopener noreferrer`,target:`_blank`,title:je}:{},children:u.href})});if(e.type===`textarea`)return(0,a.jsx)(r.Textarea,{onChange:t=>i(e.fieldKey,t.target.value),placeholder:e.placeholder??`請輸入多行文字`,readOnly:n,ref:Ee,rows:3,style:Te,value:Xe(t)});if(e.type===`boolean`)return(0,a.jsx)(r.Toggle,{checked:t===!0,disabled:n,label:`啟用`,onChange:t=>i(e.fieldKey,t.target.checked),size:l});if((0,c.isFormStaticOptionFieldDefinition)(e)&&e.type===`checkbox`){let s=e.options.map(o.readFieldOptionAsSelectOption);return(0,a.jsx)(r.Select,{mode:`multiple`,onChange:t=>i(e.fieldKey,t?.length?t.map(e=>e.id):void 0),options:s,placeholder:e.placeholder??`請選擇一或多個選項`,readOnly:n,size:l,value:s.filter(e=>ne(t).includes(e.id))})}if((0,c.isFormStaticOptionFieldDefinition)(e)){let s=e.options.map(o.readFieldOptionAsSelectOption);return(0,a.jsx)(r.Select,{onChange:t=>i(e.fieldKey,t?.id??void 0),options:s,placeholder:e.placeholder??`請選擇`,readOnly:n,size:l,value:(0,o.readSelectOption)(s,Xe(t))})}return e.type===`member`?(0,a.jsx)(W,{multiple:e.multiple===!0,name:e.fieldKey,onChange:t=>i(e.fieldKey,t),placeholder:e.placeholder,readonly:n,size:l,value:t}):e.type===`org_unit`?(0,a.jsx)(Z,{name:e.fieldKey,onChange:t=>i(e.fieldKey,t),placeholder:e.placeholder??Qe(e.type),readonly:n,size:l,value:t}):e.type===`file_upload`?(0,a.jsx)(re,{attachments:s?.attachments,field:e,onChange:t=>i(e.fieldKey,t),onDownloadAttachment:s?.onDownloadAttachment,onStateChange:t=>s?.onStateChange?.(e.fieldKey,t),onUploadAttachment:s?.onUploadAttachment,readonly:n,value:t}):e.type===`date`?(0,a.jsx)(r.DatePicker,{format:`YYYY-MM-DD`,fullWidth:!0,onChange:t=>i(e.fieldKey,(0,o.formatDatePickerValue)(t)),placeholder:e.placeholder??Qe(e.type),readOnly:n,value:(0,o.readDatePickerValue)(t)}):e.type===`datetime`?(0,a.jsx)(r.DateTimePicker,{formatDate:`YYYY-MM-DD`,formatTime:`HH:mm`,fullWidth:!0,hideSecond:!0,onChange:t=>i(e.fieldKey,(0,o.formatDateTimePickerValue)(t)),placeholderLeft:`選擇日期`,placeholderRight:`選擇時間`,readOnly:n,value:(0,o.readDatePickerValue)(t)}):e.type===`number`||e.type===`money`?(0,a.jsx)(r.Input,{fullWidth:!0,max:e.maximum,min:e.minimum,size:l,onChange:t=>i(e.fieldKey,(0,o.clampOptionalNumber)((0,o.parseOptionalNumberInput)(t.target.value),{max:e.maximum,min:e.minimum})),placeholder:e.placeholder??Qe(e.type),...n?{readonly:!0}:{},showSpinner:!0,value:Ze(t),variant:`measure`}):(0,a.jsx)(r.Input,{fullWidth:!0,onChange:t=>i(e.fieldKey,t.target.value),placeholder:e.placeholder??Qe(e.type),...n?{readonly:!0}:{},size:l,value:Xe(t),variant:`base`})}function Je(e,t,n,i,s,l,u=`main`){let d=l.options.map(o.readFieldOptionAsSelectOption),f=(0,o.readSelectedFormDataSourceOptions)(t,l.options).map(o.readFieldOptionAsSelectOption),p=l.status===`LOADING`,m=l.status===`WAITING_FOR_DEPENDENCIES`,h=!!s&&!n,g=n||m,_=n;return e.type===`autocomplete`?(0,c.readFormFieldSelectionMode)(e)===`multiple`?(0,a.jsx)(r.AutoComplete,{asyncData:h,clearSearchText:!0,disabled:_,disabledOptionsFilter:h,globalPortal:!0,loading:p,mode:`multiple`,onChange:t=>i(e.fieldKey,t.length?t.map(e=>e.id):void 0),onReachBottom:l.hasNextPage?l.onReachBottom:void 0,onSearch:h?l.onSearch:void 0,options:d,placeholder:e.placeholder??`請輸入或選擇`,readOnly:n,searchDebounceTime:300,size:u,value:f}):(0,a.jsx)(r.AutoComplete,{asyncData:h,clearSearchText:!0,disabled:_,disabledOptionsFilter:h,globalPortal:!0,loading:p,mode:`single`,onChange:t=>i(e.fieldKey,t?.id??void 0),onReachBottom:l.hasNextPage?l.onReachBottom:void 0,onSearch:h?l.onSearch:void 0,options:d,placeholder:e.placeholder??`請輸入或選擇`,readOnly:n,searchDebounceTime:300,size:u,value:f[0]??null}):e.type===`radio`?(0,a.jsx)(r.RadioGroup,{disabled:g,name:e.fieldKey,onChange:t=>i(e.fieldKey,t.target.value||void 0),options:d,value:Xe(t)}):e.type===`checkbox`?(0,a.jsx)(r.CheckboxGroup,{disabled:g,name:e.fieldKey,onChange:t=>i(e.fieldKey,t.target.values.length?t.target.values:void 0),options:d.map(e=>({label:e.name,value:e.id})),value:[...ne(t)]}):(0,c.readFormFieldSelectionMode)(e)===`multiple`?(0,a.jsx)(r.Select,{disabled:g,loading:p,mode:`multiple`,onChange:t=>i(e.fieldKey,t.length?t.map(e=>e.id):void 0),onReachBottom:l.hasNextPage?l.onReachBottom:void 0,options:d,placeholder:e.placeholder??`請選擇一或多個選項`,readOnly:n,size:u,value:f}):(0,a.jsx)(r.Select,{disabled:g,loading:p,onChange:t=>i(e.fieldKey,t?.id??void 0),onReachBottom:l.hasNextPage?l.onReachBottom:void 0,options:d,placeholder:e.placeholder??`請選擇`,readOnly:n,size:u,value:f[0]??null})}function Ye(e,t){return{FULL:12,HALF:6,THIRD:4}[t.layout.find(t=>t.fieldKey===e.fieldKey)?.width??`FULL`]}function Xe(e){return typeof e==`string`?e:``}function Ze(e){return typeof e==`number`?String(e):``}function Qe(e){return{boolean:``,autocomplete:`請輸入或選擇`,checkbox:`請選擇一或多個選項`,date:`請選擇日期`,datetime:`請選擇日期與時間`,file_upload:`請上傳附件`,member:`搜尋姓名或信箱`,money:`請輸入金額`,number:`請輸入數字`,org_unit:`搜尋組織名稱`,radio:`請選擇一個選項`,select:`請選擇一個選項`,table:``,text:`請輸入文字`,textarea:`請輸入多行文字`}[e]}Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"c",{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,"l",{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return _e}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return R}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return De}}),Object.defineProperty(exports,"u",{enumerable:!0,get:function(){return x}});
6
+ //# sourceMappingURL=FormRendererView-B-xycC9S.cjs.map