@flatbiz/antd 4.5.47 → 4.5.49

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 (169) hide show
  1. package/esm/ace-editor-json/index.js +1 -1
  2. package/esm/ace-editor-json/index.js.map +1 -1
  3. package/esm/ace-editor-mysql/index.js +1 -1
  4. package/esm/ace-editor-mysql/index.js.map +1 -1
  5. package/esm/ace-editor-xml/index.js +1 -1
  6. package/esm/ace-editor-xml/index.js.map +1 -1
  7. package/esm/ai-search/index.css +0 -0
  8. package/esm/ai-search/index.js +11 -0
  9. package/esm/ai-search/index.js.map +1 -0
  10. package/esm/bootstrap/index.js +1 -1
  11. package/esm/bootstrap/index.js.map +1 -1
  12. package/esm/button-operate/index.js +1 -1
  13. package/esm/button-operate/index.js.map +1 -1
  14. package/esm/button-wrapper/index.js +1 -1
  15. package/esm/button-wrapper/index.js.map +1 -1
  16. package/esm/cascader-wrapper/index.js +1 -1
  17. package/esm/cascader-wrapper/index.js.map +1 -1
  18. package/esm/check-list/index.js +1 -1
  19. package/esm/check-list/index.js.map +1 -1
  20. package/esm/config-provider-wrapper/index.js +1 -1
  21. package/esm/date-range-picker-wrapper-form-item/index.js +1 -1
  22. package/esm/date-range-picker-wrapper-form-item/index.js.map +1 -1
  23. package/esm/dialog-alert/index.js +1 -1
  24. package/esm/dialog-alert/index.js.map +1 -1
  25. package/esm/dialog-confirm/index.js +1 -1
  26. package/esm/dialog-confirm/index.js.map +1 -1
  27. package/esm/dialog-drag-modal/index.js +1 -1
  28. package/esm/dialog-drag-modal/index.js.map +1 -1
  29. package/esm/dialog-drawer/index.js +1 -1
  30. package/esm/dialog-drawer/index.js.map +1 -1
  31. package/esm/dialog-drawer-content/index.js +1 -1
  32. package/esm/dialog-drawer-content/index.js.map +1 -1
  33. package/esm/dialog-loading/index.js +1 -1
  34. package/esm/dialog-loading/index.js.map +1 -1
  35. package/esm/dialog-modal/index.js +1 -1
  36. package/esm/dialog-modal/index.js.map +1 -1
  37. package/esm/dialog-preview-image/index.js +1 -1
  38. package/esm/dialog-preview-image/index.js.map +1 -1
  39. package/esm/drag-collapse/index.js +1 -1
  40. package/esm/drag-collapse/index.js.map +1 -1
  41. package/esm/drag-collapse-form-list/index.js +1 -1
  42. package/esm/drag-collapse-form-list/index.js.map +1 -1
  43. package/esm/drag-editable-card/index.css +1 -0
  44. package/esm/drag-editable-card/index.js +2 -2
  45. package/esm/drag-editable-card/index.js.map +1 -1
  46. package/esm/drag-editable-table/index.js +1 -1
  47. package/esm/drag-editable-table/index.js.map +1 -1
  48. package/esm/drag-editable-table-pro/index.js +1 -1
  49. package/esm/drag-editable-table-pro/index.js.map +1 -1
  50. package/esm/drag-form-list/index.js +1 -1
  51. package/esm/drag-form-list/index.js.map +1 -1
  52. package/esm/drawer-wrapper/index.js +1 -1
  53. package/esm/drawer-wrapper/index.js.map +1 -1
  54. package/esm/dropdown-menu-wrapper/index.js +1 -1
  55. package/esm/dropdown-menu-wrapper/index.js.map +1 -1
  56. package/esm/easy-form/index.js +1 -1
  57. package/esm/easy-form/index.js.map +1 -1
  58. package/esm/easy-table/index.js +1 -1
  59. package/esm/easy-table/index.js.map +1 -1
  60. package/esm/editable-card/index.css +1 -1
  61. package/esm/editable-card/index.js +2 -2
  62. package/esm/editable-card/index.js.map +1 -1
  63. package/esm/editable-field/index.js +1 -1
  64. package/esm/editable-field/index.js.map +1 -1
  65. package/esm/editable-table/index.js +1 -1
  66. package/esm/editable-table/index.js.map +1 -1
  67. package/esm/editable-table-pro/index.js +1 -1
  68. package/esm/editable-table-pro/index.js.map +1 -1
  69. package/esm/error-boundary-wrapper/index.js +1 -1
  70. package/esm/error-boundary-wrapper/index.js.map +1 -1
  71. package/esm/fba-app/index.js +1 -1
  72. package/esm/fba-app/index.js.map +1 -1
  73. package/esm/fba-hooks/index.js +1 -1
  74. package/esm/fba-hooks/index.js.map +1 -1
  75. package/esm/form-item-group/index.js +1 -1
  76. package/esm/form-item-group/index.js.map +1 -1
  77. package/esm/form-item-text/index.js +1 -1
  78. package/esm/form-item-text/index.js.map +1 -1
  79. package/esm/form-item-wrapper/index.js +1 -1
  80. package/esm/form-item-wrapper/index.js.map +1 -1
  81. package/esm/form-list-wrapper/index.js +1 -1
  82. package/esm/form-list-wrapper/index.js.map +1 -1
  83. package/esm/index.js +3 -1
  84. package/esm/input-search-wrapper/index.js +1 -1
  85. package/esm/input-search-wrapper/index.js.map +1 -1
  86. package/esm/input-text-area-wrapper/index.js +1 -1
  87. package/esm/input-text-area-wrapper/index.js.map +1 -1
  88. package/esm/input-wrapper/index.js +1 -1
  89. package/esm/input-wrapper/index.js.map +1 -1
  90. package/esm/json-editor/index.js +1 -1
  91. package/esm/json-editor/index.js.map +1 -1
  92. package/esm/label-value-render/index.js +1 -1
  93. package/esm/label-value-render/index.js.map +1 -1
  94. package/esm/local-loading/index.js +1 -1
  95. package/esm/local-loading/index.js.map +1 -1
  96. package/esm/mention-editor/index.js +1 -1
  97. package/esm/mention-editor/index.js.map +1 -1
  98. package/esm/mentions-wrapper/index.js +1 -1
  99. package/esm/mentions-wrapper/index.js.map +1 -1
  100. package/esm/modal-wrapper/index.js +1 -1
  101. package/esm/modal-wrapper/index.js.map +1 -1
  102. package/esm/number-range-form-item/index.js +1 -1
  103. package/esm/number-range-form-item/index.js.map +1 -1
  104. package/esm/pagination-wrapper/index.js +1 -1
  105. package/esm/pagination-wrapper/index.js.map +1 -1
  106. package/esm/pdf/index.js +1 -1
  107. package/esm/pdf/index.js.map +1 -1
  108. package/esm/pdf-preview/index.js +1 -1
  109. package/esm/pdf-preview/index.js.map +1 -1
  110. package/esm/relation-tree/index.js +1 -1
  111. package/esm/relation-tree/index.js.map +1 -1
  112. package/esm/resizable-drawer/index.css +1 -0
  113. package/esm/resizable-drawer/index.js +15 -0
  114. package/esm/resizable-drawer/index.js.map +1 -0
  115. package/esm/rich-text-editor/index.js +1 -1
  116. package/esm/rich-text-editor/index.js.map +1 -1
  117. package/esm/rich-text-viewer/index.js +1 -1
  118. package/esm/rich-text-viewer/index.js.map +1 -1
  119. package/esm/roll-location-center/index.js +1 -1
  120. package/esm/roll-location-center/index.js.map +1 -1
  121. package/esm/roll-location-in-view/index.js +1 -1
  122. package/esm/roll-location-in-view/index.js.map +1 -1
  123. package/esm/rule-describe/index.js +1 -1
  124. package/esm/rule-describe/index.js.map +1 -1
  125. package/esm/search-form/index.js +1 -1
  126. package/esm/search-form/index.js.map +1 -1
  127. package/esm/search-menu/index.js +1 -1
  128. package/esm/search-menu/index.js.map +1 -1
  129. package/esm/selector-wrapper/index.js +1 -1
  130. package/esm/selector-wrapper/index.js.map +1 -1
  131. package/esm/selector-wrapper-search/index.js +1 -1
  132. package/esm/selector-wrapper-search/index.js.map +1 -1
  133. package/esm/selector-wrapper-simple/index.js +1 -1
  134. package/esm/selector-wrapper-simple/index.js.map +1 -1
  135. package/esm/simple-layout/index.js +1 -1
  136. package/esm/simple-layout/index.js.map +1 -1
  137. package/esm/switch-confirm-wrapper/index.js +1 -1
  138. package/esm/switch-confirm-wrapper/index.js.map +1 -1
  139. package/esm/table-cell-render/index.js +1 -1
  140. package/esm/table-cell-render/index.js.map +1 -1
  141. package/esm/table-scrollbar/index.js +1 -1
  142. package/esm/table-scrollbar/index.js.map +1 -1
  143. package/esm/tag-group/index.js +1 -1
  144. package/esm/tag-group/index.js.map +1 -1
  145. package/esm/tag-wrapper/index.js +1 -1
  146. package/esm/tag-wrapper/index.js.map +1 -1
  147. package/esm/text-css-ellipsis/index.js +1 -1
  148. package/esm/text-css-ellipsis/index.js.map +1 -1
  149. package/esm/text-overflow/index.js +1 -1
  150. package/esm/text-overflow/index.js.map +1 -1
  151. package/esm/text-overflow-render/index.js +1 -1
  152. package/esm/text-overflow-render/index.js.map +1 -1
  153. package/esm/time-range-picker-wrapper-form-item/index.js +1 -1
  154. package/esm/time-range-picker-wrapper-form-item/index.js.map +1 -1
  155. package/esm/tips-title/index.css +1 -1
  156. package/esm/tips-title/index.js +1 -1
  157. package/esm/tips-title/index.js.map +1 -1
  158. package/esm/tree-modal/index.js +1 -1
  159. package/esm/tree-modal/index.js.map +1 -1
  160. package/esm/tree-modal-selector/index.js +1 -1
  161. package/esm/tree-modal-selector/index.js.map +1 -1
  162. package/esm/tree-selector-wrapper/index.js +1 -1
  163. package/esm/tree-selector-wrapper/index.js.map +1 -1
  164. package/esm/tree-wrapper/index.js +1 -1
  165. package/esm/tree-wrapper/index.js.map +1 -1
  166. package/esm/upload-wrapper/index.js +1 -1
  167. package/esm/upload-wrapper/index.js.map +1 -1
  168. package/index.d.ts +60 -8
  169. package/package.json +6 -3
@@ -13,5 +13,5 @@ import './../dropdown-menu-wrapper/index.css';
13
13
  import './../input-search-wrapper/index.css';
14
14
  import './index.css';
15
15
  /*! @flatjs/forge MIT @flatbiz/antd */
16
- import{treeToArray as e,arrayToMap as r,treeToTiledArray as t,treeLeafParentsArray as n,isUndefinedOrNull as a,isNotEmptyArray as i,treeToTiledMap as l,toArray as u,treeFilter as s,dom as o,attachPropertiesToComponent as c}from"@flatbiz/utils";import{isArray as d}from"@dimjs/lang/cjs/is-array";import{Model as f}from"@dimjs/model-react";import{array as v}from"@dimjs/utils/cjs/array";import p from"@ant-design/icons/es/icons/CaretDownFilled";import m from"@ant-design/icons/es/icons/MoreOutlined";import{classNames as h}from"@dimjs/utils/cjs/class-names";import{isString as g}from"@dimjs/lang/cjs/is-string";import{extend as y}from"@dimjs/utils/cjs/extend";import{hooks as b}from"@wove/react/cjs/hooks";import{get as L}from"@dimjs/utils/cjs/get";import{_ as C,a as T}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{cloneState as w}from"@dimjs/model";import{Spin as j,Tree as A,Button as N,message as S}from"antd";import{forwardRef as R,useState as q,useMemo as k,useRef as x,useImperativeHandle as M,Fragment as E,isValidElement as P}from"react";import{ButtonOperate as D}from"../button-operate/index.js";import{DropdownMenuWrapper as O}from"../dropdown-menu-wrapper/index.js";import{fbaHooks as I}from"../fba-hooks/index.js";import{InputSearchWrapper as _}from"../input-search-wrapper/index.js";import{RequestStatus as V}from"../request-status/index.js";import{tree as F}from"@dimjs/utils/cjs/tree";import{isObject as K}from"@dimjs/lang/cjs/is-object";import"dequal";import{jsxs as U,jsx as z}from"react/jsx-runtime";import"@dimjs/lang/cjs/is-undefined";import"@dimjs/lang/cjs/is-plain-object";import"@dimjs/lang/cjs/is-promise";import"../button-wrapper/index.js";import"@ant-design/icons/es/icons/LoadingOutlined";import"../index-83bede1b.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"../fba-utils/index.js";import"@ant-design/icons/es/icons/ExclamationCircleFilled";import"../dialog-confirm/index.js";import"../dialog-modal/index.js";import"ahooks";import"react-dom/client";import"../flex-layout/index.js";import"@wove/react/cjs/create-ctx";import"../use-responsive-point-21b8c601.js";var H={treeList:[],treeTiledArray:[],treeTiledArrayMap:{},queryIsEmpty:false};var J={actions:{setTreeList:function t(n){return function(t){t.treeList=n.treeList||[];t.treeTiledArray=e(t.treeList,n.childrenName);t.treeTiledArrayMap=r(t.treeTiledArray,n.valueName);t.requestStatus="request-success"}},resetTreeList:function e(){return function(e){e.treeList=[];e.treeTiledArray=[];e.treeTiledArrayMap={}}},changeRequestStatus:function e(r){return function(e){e.requestStatus=r.status;if(r.status==="request-error"){e.treeList=[];e.treeTiledArray=[];e.treeTiledArrayMap={};e.requestErrorMessage=r.errorMessage||"数据查询异常"}else{e.requestErrorMessage=undefined}}},treeListAppendChildren:function t(n){return function(t){var a=e(t.treeList,n.childrenName);var i=r(a,n.valueName);var l=i[n.value];if(l){if(d(n.appendList)&&n.appendList.length>0){l[n.childrenName]=n.appendList}else{l.isLeaf=true}}t.treeTiledArray=a;t.treeTiledArrayMap=i}}},state:H};var B={};var Y=function e(r){if(!B[r]){B[r]=f(J)}return B[r]};var G=function e(r){var t=Y(r).getState();return t.treeList};var W=function r(t,n){var a=e(t,n.children).filter((function(e){var r=e[n.children];return r&&r.length>0})).map((function(e){return e[n.value]}));return a};var Q=function e(r,a,i){var l=t(a,i);return n(r,l,true,{value:"value",parentValue:"parentValue"}).filter((function(e){var r=e[i.children];return r&&r.length>0})).map((function(e){return e.value}))};var X=function e(r,t){var n=a(r)?[]:r;n=d(n)?n:[n];n=n.map((function(e){if(K(e))return e[t.value];return e}));return n};var Z=function e(r,t,n){var a=n.node.key;var i=n.dragNode.key;var l=n.node.pos.split("-");var u=n.dropPosition-Number(l[l.length-1]);var s=t.value;var o=t.children;var c=function e(r,t,n){for(var a=0;a<r.length;a++){if(r[a][s]===t){return n(r[a],a,r)}if(r[a][o]){c(r[a][o],t,n)}}};var d=w(r);var f;c(d,i,(function(e,r,t){t.splice(r,1);f=e}));if(!n.dropToGap){c(d,a,(function(e){e[o]=e[o]||[];e[o].unshift(f)}))}else if((n.node.props.children||[]).length>0&&n.node.props.expanded&&u===1){c(d,a,(function(e){e[o]=e[o]||[];e[o].unshift(f)}))}else{var v=[];var p;c(d,a,(function(e,r,t){v=t;p=r}));if(u===-1){v.splice(p,0,f)}else{v.splice(p+1,0,f)}}return{dataList:d,dragNodeData:$(i,d,t)}};var $=function r(t,n,a){var i;var l=a.value;var u=a.children;F.walkThroughTree((i={},i[l]=undefined,i[u]=n,i),(function(e,r,t){e["__index"]=r;e["__parentId"]=t==null?void 0:t[l]}),u);var s=e(n,u);var o=s.find((function(e){return e[l]===t}));return{parentId:o==null?void 0:o["__parentId"],id:o==null?void 0:o[l],index:o==null?void 0:o["__index"]}};var ee=function r(t,n,a,l){var u={};var s=[];var o=[];t.forEach((function(e){var r;if(i((r=n[e])==null?void 0:r[a])){s.push(e)}else{u[e]=e}}));if(s.length>0){s.forEach((function(r){var i=e(n[r][a],a);if(Object.keys(u).length>i.length){var s=i.filter((function(e){return t.find((function(r){return r===e[l]}))}));if(s.length===i.length){o.push(r)}}}))}return t.filter((function(e){return o.find((function(r){return r==e}))||u[e]}))};var re=function e(r,t,n,a){var i=l([t],{value:a,children:n});return r.filter((function(e){return!i[e]}))};var te=function e(r,t,n,a){var u={};r.forEach((function(e){var r;var s=(r=t[e])==null?void 0:r[n];if(i(s)){var o=l(s,{value:a,children:n});u=C({},u,o)}}));return r.filter((function(e){return!u[e]}))};var ne=function e(r,t,n){return r.filter((function(e){return!i(t[e][n])}))};var ae=function r(t,n,a,l){var u=[].concat(t);t.forEach((function(r){var t;var s=(t=n[r])==null?void 0:t[a];if(i(s)){var o=e(s,a);u=u.concat(o.map((function(e){return e[l]})))}}));return Array.from(new Set(u))};var ie=["style","serviceConfig","effectDependencyList","selectorTreeList","value","onChange","modelKey","checkableResponseParentNode","checkable","onSelectorTreeListChange","onRequestResponseChange","treeItemDataAdapter","searchValue","showSearch","searchPlaceholder","requestMessageConfig","labelInValueFieldNames","labelInValue","disabledCanUse","menuLayoutType","menuTriggerType","initRootExpand","searchResultType","onDropNodeHandle","onDropPrev","labelRender","searchStyle","className","defaultExpandAll","menus","customSearchRule","checkableType","clickParentNodeToggleExpand","disableNodeSelect","required","executeOnChangeInRenderFirstValue"];var le=function e(r,t){var n=r.slice().sort();var a=t.slice().sort();return JSON.stringify(n)===JSON.stringify(a)};var ue=R((function(e,r){var t=e.style,n=e.serviceConfig,i=e.effectDependencyList,l=e.selectorTreeList,c=e.value,f=e.onChange,R=e.modelKey,F=e.checkableResponseParentNode,K=F===void 0?true:F,H=e.checkable,J=e.onSelectorTreeListChange,B=e.onRequestResponseChange,G=e.treeItemDataAdapter,$=e.searchValue,ue=e.showSearch,se=e.searchPlaceholder,oe=e.requestMessageConfig,ce=e.labelInValueFieldNames,de=e.labelInValue,fe=e.disabledCanUse,ve=e.menuLayoutType,pe=e.menuTriggerType,me=e.initRootExpand,he=e.searchResultType,ge=e.onDropNodeHandle,ye=e.onDropPrev,be=e.labelRender,Le=e.searchStyle,Ce=e.className,Te=e.defaultExpandAll,we=e.menus,je=e.customSearchRule,Ae=e.checkableType,Ne=e.clickParentNodeToggleExpand,Se=e.disableNodeSelect,Re=e.required,qe=e.executeOnChangeInRenderFirstValue,ke=T(e,ie);var xe=e.hasOwnProperty("selectorTreeList");var Me=n||{};var Ee=i||[];var Pe=q([]),De=Pe[0],Oe=Pe[1];var Ie=Y(R).useStore(),_e=Ie[0],Ve=Ie[1];var Fe=I.useSafeState(false),Ke=Fe[0],Ue=Fe[1];var ze="request-progress-"+e.modelKey;var He=he==="highlight";var Je=k((function(){return C({label:"label",value:"value",children:"children"},e.fieldNames)}),[e.fieldNames]);var Be=ve===undefined?"fold":ve;var Ye=pe===undefined?"click":pe;var Ge=x(true);var We=x(undefined);var Qe=k((function(){return C({label:"label",value:"value"},ce)}),[ce]);var Xe=q(),Ze=Xe[0],$e=Xe[1];var er=k((function(){return X(c,Qe)}),[Qe,c]);I.useEffectCustom((function(){if(_e.treeList.length>0){if(Ge.current&&de&&qe&&er.length>0){var r=[];var t=[];er.forEach((function(e){var n=_e.treeTiledArrayMap[e];if(n){var a;t.push(n);r.push((a={},a[Qe.label]=n[Je.label],a[Qe.value]=n[Je.value],a))}}));if(H){e.onChange==null||e.onChange(r?r:undefined,t)}else{e.onChange==null||e.onChange(r?r[0]:undefined,t[0])}}if(Ge.current&&er.length===0){Ge.current=false;if(Te){Oe(W(_e.treeList,Je));return}else if(me&&_e.treeList.length){Oe([_e.treeList[0][Je.value]]);return}}if(er.length>0){Ge.current=false;if(We.current){if(!le(er,We.current)){var n=ir(er,true);Oe(Array.from(new Set(De==null?void 0:De.concat(n))))}}else{var a=ir(er,true);Oe(Array.from(new Set(De==null?void 0:De.concat(a))))}}}}),[_e.treeList,JSON.stringify(er)]);var rr=function e(r){return r===""||a(r)};var tr=function e(r){var t=r;if(Me.onRequestResultAdapter){t=Me.onRequestResultAdapter(r)}else if(Je.list){t=L(r,Je.list,[])||[]}if(!d(t)){console.warn("接口返回数据为非数组结构,确认是否需要配置fieldNames.list进行解析");return[]}return t};I.useEffectCustom((function(){$e($)}),[$]);var nr=b.useCallbackRef((function(){return new Promise((function(e,r){var t,n,a,i,l;var u=function(){try{return e()}catch(e){return r(e)}};var s=function(e){try{Ge.current=false;Ue(false);void S.error(e.message||"数据查询异常...");return u()}catch(e){return r(e)}};try{if(!Me.onRequest){throw new Error("onRequest 调用接口服务不能为空")}t=Me.requiredParamsKeys;n=y({},Me.params);if(t){a=t.find((function(e){return rr(n[e])}));if(a){void Ve.changeRequestStatus({status:"no-dependencies-params"});console.warn("TreeWrapper组件:参数:"+t.join("、")+"不能为空");return e()}}var o=function(){try{return u()}catch(e){return s(e)}};var c=function(e){try{window[ze]=false;Ue(false);void Ve.changeRequestStatus({status:"request-error",errorMessage:e.message});return o()}catch(e){return s(e)}};try{Ue(true);return Promise.resolve(Ve.changeRequestStatus({status:"request-progress"})).then((function(e){try{window[ze]=true;return Promise.resolve(Me.onRequest==null?void 0:Me.onRequest(n)).then((function(e){try{i=e;B==null||B(i);l=tr(i);if(l.length===0){Ge.current=false}ar(l);Ue(false);window[ze]=false;return o()}catch(e){return c(e)}}),c)}catch(e){return c(e)}}),c)}catch(e){c(e)}}catch(e){s(e)}}))}));I.useEffectCustom((function(){if(xe)return;if(Ee.length){void nr();return}var e=Y(R).getState();if(e.requestStatus==="request-success"){J==null||J(e.treeList);return}if(!window[ze]){void nr()}else{J==null||J(e.treeList)}}),Ee);I.useEffectCustom((function(){if(xe){ar(l||[])}}),[l]);var ar=b.useCallbackRef((function(e){if((e==null?void 0:e.length)===0&&_e.treeList.length===0){void Ve.changeRequestStatus({status:"request-success"});return}void Ve.setTreeList({treeList:e||[],childrenName:Je.children,valueName:Je.value});J==null||J(e)}));var ir=function e(r,t){var n=[];r.forEach((function(e){if(!t&&De!=null&&De.includes(e))return;var r=Q(e,_e.treeList,Je);n=n.concat(r)}));return n};b.useUpdateEffect((function(){if(Ze){var e=_e.treeTiledArray.filter((function(e){var r=e[Je.label]||"";if(je){return je(e,Ze)}return String(r).toLowerCase().includes(Ze.toLowerCase())}));var r=ir(e.map((function(e){return e[Je.value]})),true);Oe(Array.from(new Set(r)))}else{Oe([])}}),[Ze]);M(r,(function(){return{onClearSelectorList:function e(){void Ve.resetTreeList()},getTreeDataList:function e(){return _e.treeList},getTreeTiledArray:function e(){return _e.treeTiledArray},getTreeTiledArrayMap:function e(){return _e.treeTiledArrayMap},onChangeExpandedKeys:function e(r){Oe(r)},onSelectAll:function e(){var r=_e.treeTiledArray.map((function(e){return e[Je.value]}));Oe(r);f==null||f(r,undefined,_e.treeList,undefined)},onCancelSelectAll:function e(){Oe([]);f==null||f(undefined)},onExpandedAll:function e(){var r=_e.treeTiledArray.map((function(e){return e[Je.value]}));Oe(r)},onCancelExpandedAll:function e(){Oe([])}}}));var lr=b.useCallbackRef((function(e){Oe(e)}));var ur=function r(t,n,a,i){We.current=u(t);if(u(t).length===0){var l=i==null?void 0:i.node[Je.value];var s=_e.treeTiledArrayMap[l];e.onChange==null||e.onChange(undefined,s,[s],i)}else{e.onChange==null||e.onChange(t,n,a,i)}};var sr=b.useCallbackRef((function(r,t){var n=[];var a=[];if(H){n=e.checkStrictly?r.checked:r}else{n=r;if(Re&&!u(r).length){return}if(Se){var i=_e.treeTiledArrayMap[r[0]];var l=i?Se(i):false;if(l){return}}}n=u(n);if(!H){a=n}else{if(ue&&Ze&&!He){var s=t==null?void 0:t.node;if(e.checkStrictly){if(t.checked==false){n=er.filter((function(e){return e!=s[Je.value]}))}else{n=Array.from(new Set([].concat(er,n)))}a=n}else{var o=Ae==="2"||Ae==="3"?ae(er,_e.treeTiledArrayMap,Je.children,Je.value):er;if(t.checked==false){n=re([].concat(o),s,Je.children,Je.value)}else{n=Array.from(new Set([].concat(o,n)))}a=ee(n,_e.treeTiledArrayMap,Je.children,Je.value)}}else{a=n}if(!e.checkStrictly){if(Ae==="2"){n=ne(a,_e.treeTiledArrayMap,Je.children)}else if(Ae==="3"){n=te(a,_e.treeTiledArrayMap,Je.children,Je.value)}else if(K==false){n=ne(a,_e.treeTiledArrayMap,Je.children)}else{n=a}}}var c=a.map((function(e){return _e.treeTiledArrayMap[e]}));if(de){var d=Qe.value;var f=Qe.label;var v=n.map((function(e){var r;return r={},r[f]=_e.treeTiledArrayMap[e][Je.label],r[d]=_e.treeTiledArrayMap[e][Je.value],r}));if(H){ur(v,n.map((function(e){return _e.treeTiledArrayMap[e]})),c,t)}else{ur(v[0],_e.treeTiledArrayMap[n[0]],c,t)}}else{if(H){ur(n,n.map((function(e){return _e.treeTiledArrayMap[e]})),c,t)}else{ur(n[0],_e.treeTiledArrayMap[n[0]],c,t)}}}));var or=b.useCallbackRef((function(e){return G==null?void 0:G(e)}));var cr=k((function(){var e=w(_e.treeList||[]);if(Ze&&he!=="highlight"){var r=s(w(_e.treeList||[]),(function(e){var r;if(je){return je(e,Ze)}var t=(r=e[Je.label])==null?void 0:r.toLowerCase();return t.indexOf(Ze.toLowerCase())>=0}),{childrenName:Je.children});return r}return e}),[je,Je.children,Je.label,he,_e.treeList,Ze]);var dr=k((function(){var e=function r(t){return t==null?void 0:t.map((function(r){var t;var n=(or==null?void 0:or(r))||r;var a=fe?undefined:n.disabled;var i=n[Je.label]||"";var l;if(Ze&&g(i)){var u=i==null?void 0:i.toLowerCase();var s=u.indexOf(Ze.toLowerCase());var o=i.substring(0,s);var c=i.slice(s+Ze.length);var f=i.slice(s,s+Ze.length);l=s>-1?U("span",{className:h({"v-tree-item-disabled":n.disabled}),children:[o,z("span",{className:"site-tree-search-value",children:f}),c]}):null}if(!l&&n.disabled){l=z("span",{className:h({"v-tree-item-disabled":n.disabled}),children:i})}var v=n[Je.children];return C({},n,(t={disabled:a},t[Je.label]=l||i,t._treeItemName=i,t._disabled=n.disabled,t[Je.children]=d(v)&&v.length>0?e(v):undefined,t))}))};return e(cr)}),[cr,or,fe,Je.label,Je.children,Ze]);var fr=b.useCallbackRef((function(r){return new Promise((function(t,n){return new Promise((function(a,i){var l,u,s,o,c;if(r[Je.children]){t();return a()}var d=function(){try{return a()}catch(e){return i(e)}};var f=function(e){try{void S.error(e.message||"数据加载异常...");n();return d()}catch(e){return i(e)}};try{return Promise.resolve((l=e.loadDataServiceConfig)==null||l.onRequest==null?void 0:l.onRequest(((u=e.loadDataServiceConfig)==null||u.getParams==null?void 0:u.getParams(r))||{})).then((function(n){try{o=n;c=(s=e.loadDataServiceConfig)!=null&&s.onRequestResultAdapter?e.loadDataServiceConfig.onRequestResultAdapter(o):o;void Ve.treeListAppendChildren({value:r[Je.value],appendList:c,childrenName:Je.children,valueName:Je.value}).then((function(e){ar(e.treeList);t()}));return d()}catch(e){return f(e)}}),f)}catch(e){f(e)}}))}))}));var vr=b.useCallbackRef((function(r){var t=r==null?void 0:r[Je.children];var n=e.loadDataFlag;var a=n?!r.isLeaf:false;var i=t&&t.length>0||a;return!i}));var pr=b.useCallbackRef((function(r){var t,n,a;var i=r._treeItemName||r[Je.label];var l=we==null?void 0:we(C({},r,(t={},t[Je.label]=i,t)));if(l!=null&&l.operateList.length){return U(E,{children:[z("span",{className:"tree-item-title","data-value":r[Je.value],children:(be==null?void 0:be(r))||(r==null?void 0:r[Je.label])}),z(D,C({gap:5},l,{dropdownMenuProps:C({placement:"bottomRight",isFixed:true},l==null?void 0:l.dropdownMenuProps),className:h("tree-item-title-operate",l.className)}))]})}if(Be==="fold"){var u;var s=[];if((u=e.menuOptions)!=null&&u.fold){var o,c,d;s=((o=e.menuOptions)==null||(c=o[Be])==null?void 0:c.call(o,C({},r,(d={},d[Je.label]=i,d))))||[]}else{var f;s=(e.getMenuOptions==null?void 0:e.getMenuOptions(C({},r,(f={},f[Je.label]=i,f))))||[]}return U(E,{children:[z("span",{className:"tree-item-title","data-value":r[Je.value],children:(be==null?void 0:be(r))||(r==null?void 0:r[Je.label])}),s.length>0&&z(O,{menuList:s,placement:"bottomRight",children:z(m,{})})]})}var v=(n=e.menuOptions)==null||n.tile==null?void 0:n.tile(C({},r,(a={},a[Je.label]=i,a)));return U(E,{children:[z("span",{className:"tree-item-title","data-value":r[Je.value],children:(be==null?void 0:be(r))||(r==null?void 0:r[Je.label])}),v?z(D,C({gap:5},v,{className:h("tree-item-title-operate",v.className)})):null]})}));var mr=b.useDebounceCallback((function(r){$e(r);e.onSearchValueChange==null||e.onSearchValueChange(r)}),300);var hr=b.useCallbackRef((function(e){mr(e.target.value)}));var gr=b.useCallbackRef((function(r){if(!e.icon)return null;if(P(e.icon))return e.icon;var t=vr(r.data);return e.icon(C({},r,{isParent:!t,isLeaf:t}))}));var yr=k((function(){return{title:Je.label,key:Je.value,children:Je.children}}),[Je]);var br=dr.length>0&&_e.requestStatus!=="request-error";var Lr=C({showLine:{showLeafIcon:false},titleRender:pr,blockNode:true,switcherIcon:z(p,{}),onDrop:function e(r){if(ye){var t=ye(r);if(!t)return}var n=Z(cr,Je,r),a=n.dataList,i=n.dragNodeData;ge==null||ge(i);ar(a)},expandedKeys:De},ke,{fieldNames:yr,treeData:dr,onExpand:lr,loadData:e.loadDataFlag?fr:undefined,style:{width:"100%"},icon:gr,onClick:function e(r){if(Ne){var t=r.target;var n=t.dataset.value;if(a(n)){t=o.findParentsElement(r.target,(function(e){var r,t;return((r=e.classList)==null?void 0:r.contains("tree-item-title"))||((t=e.classList)==null?void 0:t.contains("ant-tree-treenode"))}));n=t.dataset.value}if(!a(n)){var i=_e.treeTiledArrayMap[n];if(i!=null&&i[Je.children]&&i[Je.children].length>0){var l=De.includes(n);if(l){var u=v.arrayRemove(De,n);Oe([].concat(u))}else{Oe([].concat(De,[n]))}}}}}});var Cr={onCheck:sr,checkable:H,checkedKeys:er};var Tr={onSelect:sr,multiple:false,selectedKeys:er};var wr=H?Cr:Tr;var jr=h("v-tree-wrapper","v-tree-wrapper-menu-"+Ye,Ce);var Ar=_e.treeList.length>0&&!br&&Ze;return U("div",{className:jr,style:t,children:[!!ue&&U("div",{className:"v-tree-wrapper-search-area",style:Le,children:[z(_,{className:"v-tree-wrapper-search",placeholder:a(se)?"搜索":se,onChange:hr,value:Ze,allowClear:true}),!!e.searchExtraElement&&z("span",{className:"v-tree-wrapper-search-extra",children:e.searchExtraElement})]}),br?U("div",{className:"v-tree-wrapper-tree-wrapper",children:[z(j,{spinning:_e.requestStatus==="request-progress"}),z(A,C({},wr,Lr,{className:"v-tree-wrapper-tree"}))]}):z(V,{status:_e.requestStatus,loading:Ke,messageConfig:C({"request-success":Ar?"搜索结果为空":"暂无数据","request-error":_e.requestErrorMessage},oe),errorButton:z(N,{type:"primary",onClick:nr,children:"重新获取数据"})})]})}));var se=c(ue,{getTreeDataList:G});export{se as TreeWrapper};
16
+ import{treeToArray as e,arrayToMap as r,treeToTiledArray as t,treeLeafParentsArray as n,isUndefinedOrNull as a,isNotEmptyArray as i,treeToTiledMap as l,toArray as u,treeFilter as s,dom as o,attachPropertiesToComponent as c}from"@flatbiz/utils";import{isArray as d}from"@dimjs/lang/cjs/is-array";import{Model as f}from"@dimjs/model-react";import{array as v}from"@dimjs/utils/cjs/array";import p from"@ant-design/icons/es/icons/CaretDownFilled";import m from"@ant-design/icons/es/icons/MoreOutlined";import{classNames as h}from"@dimjs/utils/cjs/class-names";import{isString as g}from"@dimjs/lang/cjs/is-string";import{extend as y}from"@dimjs/utils/cjs/extend";import{hooks as b}from"@wove/react/cjs/hooks";import{get as L}from"@dimjs/utils/cjs/get";import{_ as C,a as T}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{cloneState as j}from"@dimjs/model";import{Spin as w,Tree as A,Button as N,message as S}from"antd";import{forwardRef as R,useState as q,useMemo as k,useRef as x,useImperativeHandle as M,Fragment as E,isValidElement as P}from"react";import{ButtonOperate as D}from"../button-operate/index.js";import{DropdownMenuWrapper as O}from"../dropdown-menu-wrapper/index.js";import{fbaHooks as I}from"../fba-hooks/index.js";import{InputSearchWrapper as _}from"../input-search-wrapper/index.js";import{RequestStatus as V}from"../request-status/index.js";import{tree as F}from"@dimjs/utils/cjs/tree";import{isObject as K}from"@dimjs/lang/cjs/is-object";import"dequal";import{jsxs as U,jsx as z}from"react/jsx-runtime";import"@dimjs/lang/cjs/is-undefined";import"@dimjs/lang/cjs/is-plain-object";import"@dimjs/lang/cjs/is-promise";import"../button-wrapper/index.js";import"@ant-design/icons/es/icons/LoadingOutlined";import"../index-83bede1b.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"../fba-utils/index.js";import"@ant-design/icons/es/icons/ExclamationCircleFilled";import"../dialog-confirm/index.js";import"../dialog-modal/index.js";import"ahooks";import"react-dom/client";import"../flex-layout/index.js";import"@wove/react/cjs/create-ctx";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/uuid";var H={treeList:[],treeTiledArray:[],treeTiledArrayMap:{},queryIsEmpty:false};var J={actions:{setTreeList:function t(n){return function(t){t.treeList=n.treeList||[];t.treeTiledArray=e(t.treeList,n.childrenName);t.treeTiledArrayMap=r(t.treeTiledArray,n.valueName);t.requestStatus="request-success"}},resetTreeList:function e(){return function(e){e.treeList=[];e.treeTiledArray=[];e.treeTiledArrayMap={}}},changeRequestStatus:function e(r){return function(e){e.requestStatus=r.status;if(r.status==="request-error"){e.treeList=[];e.treeTiledArray=[];e.treeTiledArrayMap={};e.requestErrorMessage=r.errorMessage||"数据查询异常"}else{e.requestErrorMessage=undefined}}},treeListAppendChildren:function t(n){return function(t){var a=e(t.treeList,n.childrenName);var i=r(a,n.valueName);var l=i[n.value];if(l){if(d(n.appendList)&&n.appendList.length>0){l[n.childrenName]=n.appendList}else{l.isLeaf=true}}t.treeTiledArray=a;t.treeTiledArrayMap=i}}},state:H};var B={};var Y=function e(r){if(!B[r]){B[r]=f(J)}return B[r]};var G=function e(r){var t=Y(r).getState();return t.treeList};var W=function r(t,n){var a=e(t,n.children).filter((function(e){var r=e[n.children];return r&&r.length>0})).map((function(e){return e[n.value]}));return a};var Q=function e(r,a,i){var l=t(a,i);return n(r,l,true,{value:"value",parentValue:"parentValue"}).filter((function(e){var r=e[i.children];return r&&r.length>0})).map((function(e){return e.value}))};var X=function e(r,t){var n=a(r)?[]:r;n=d(n)?n:[n];n=n.map((function(e){if(K(e))return e[t.value];return e}));return n};var Z=function e(r,t,n){var a=n.node.key;var i=n.dragNode.key;var l=n.node.pos.split("-");var u=n.dropPosition-Number(l[l.length-1]);var s=t.value;var o=t.children;var c=function e(r,t,n){for(var a=0;a<r.length;a++){if(r[a][s]===t){return n(r[a],a,r)}if(r[a][o]){c(r[a][o],t,n)}}};var d=j(r);var f;c(d,i,(function(e,r,t){t.splice(r,1);f=e}));if(!n.dropToGap){c(d,a,(function(e){e[o]=e[o]||[];e[o].unshift(f)}))}else if((n.node.props.children||[]).length>0&&n.node.props.expanded&&u===1){c(d,a,(function(e){e[o]=e[o]||[];e[o].unshift(f)}))}else{var v=[];var p;c(d,a,(function(e,r,t){v=t;p=r}));if(u===-1){v.splice(p,0,f)}else{v.splice(p+1,0,f)}}return{dataList:d,dragNodeData:$(i,d,t)}};var $=function r(t,n,a){var i;var l=a.value;var u=a.children;F.walkThroughTree((i={},i[l]=undefined,i[u]=n,i),(function(e,r,t){e["__index"]=r;e["__parentId"]=t==null?void 0:t[l]}),u);var s=e(n,u);var o=s.find((function(e){return e[l]===t}));return{parentId:o==null?void 0:o["__parentId"],id:o==null?void 0:o[l],index:o==null?void 0:o["__index"]}};var ee=function r(t,n,a,l){var u={};var s=[];var o=[];t.forEach((function(e){var r;if(i((r=n[e])==null?void 0:r[a])){s.push(e)}else{u[e]=e}}));if(s.length>0){s.forEach((function(r){var i=e(n[r][a],a);if(Object.keys(u).length>i.length){var s=i.filter((function(e){return t.find((function(r){return r===e[l]}))}));if(s.length===i.length){o.push(r)}}}))}return t.filter((function(e){return o.find((function(r){return r==e}))||u[e]}))};var re=function e(r,t,n,a){var i=l([t],{value:a,children:n});return r.filter((function(e){return!i[e]}))};var te=function e(r,t,n,a){var u={};r.forEach((function(e){var r;var s=(r=t[e])==null?void 0:r[n];if(i(s)){var o=l(s,{value:a,children:n});u=C({},u,o)}}));return r.filter((function(e){return!u[e]}))};var ne=function e(r,t,n){return r.filter((function(e){return!i(t[e][n])}))};var ae=function r(t,n,a,l){var u=[].concat(t);t.forEach((function(r){var t;var s=(t=n[r])==null?void 0:t[a];if(i(s)){var o=e(s,a);u=u.concat(o.map((function(e){return e[l]})))}}));return Array.from(new Set(u))};var ie=["style","serviceConfig","effectDependencyList","selectorTreeList","value","onChange","modelKey","checkableResponseParentNode","checkable","onSelectorTreeListChange","onRequestResponseChange","treeItemDataAdapter","searchValue","showSearch","searchPlaceholder","requestMessageConfig","labelInValueFieldNames","labelInValue","disabledCanUse","menuLayoutType","menuTriggerType","initRootExpand","searchResultType","onDropNodeHandle","onDropPrev","labelRender","searchStyle","className","defaultExpandAll","menus","customSearchRule","checkableType","clickParentNodeToggleExpand","disableNodeSelect","required","executeOnChangeInRenderFirstValue"];var le=function e(r,t){var n=r.slice().sort();var a=t.slice().sort();return JSON.stringify(n)===JSON.stringify(a)};var ue=R((function(e,r){var t=e.style,n=e.serviceConfig,i=e.effectDependencyList,l=e.selectorTreeList,c=e.value,f=e.onChange,R=e.modelKey,F=e.checkableResponseParentNode,K=F===void 0?true:F,H=e.checkable,J=e.onSelectorTreeListChange,B=e.onRequestResponseChange,G=e.treeItemDataAdapter,$=e.searchValue,ue=e.showSearch,se=e.searchPlaceholder,oe=e.requestMessageConfig,ce=e.labelInValueFieldNames,de=e.labelInValue,fe=e.disabledCanUse,ve=e.menuLayoutType,pe=e.menuTriggerType,me=e.initRootExpand,he=e.searchResultType,ge=e.onDropNodeHandle,ye=e.onDropPrev,be=e.labelRender,Le=e.searchStyle,Ce=e.className,Te=e.defaultExpandAll,je=e.menus,we=e.customSearchRule,Ae=e.checkableType,Ne=e.clickParentNodeToggleExpand,Se=e.disableNodeSelect,Re=e.required,qe=e.executeOnChangeInRenderFirstValue,ke=T(e,ie);var xe=e.hasOwnProperty("selectorTreeList");var Me=n||{};var Ee=i||[];var Pe=q([]),De=Pe[0],Oe=Pe[1];var Ie=Y(R).useStore(),_e=Ie[0],Ve=Ie[1];var Fe=I.useSafeState(false),Ke=Fe[0],Ue=Fe[1];var ze="request-progress-"+e.modelKey;var He=he==="highlight";var Je=k((function(){return C({label:"label",value:"value",children:"children"},e.fieldNames)}),[e.fieldNames]);var Be=ve===undefined?"fold":ve;var Ye=pe===undefined?"click":pe;var Ge=x(true);var We=x(undefined);var Qe=k((function(){return C({label:"label",value:"value"},ce)}),[ce]);var Xe=q(),Ze=Xe[0],$e=Xe[1];var er=k((function(){return X(c,Qe)}),[Qe,c]);I.useEffectCustom((function(){if(_e.treeList.length>0){if(Ge.current&&de&&qe&&er.length>0){var r=[];var t=[];er.forEach((function(e){var n=_e.treeTiledArrayMap[e];if(n){var a;t.push(n);r.push((a={},a[Qe.label]=n[Je.label],a[Qe.value]=n[Je.value],a))}}));if(H){e.onChange==null||e.onChange(r?r:undefined,t)}else{e.onChange==null||e.onChange(r?r[0]:undefined,t[0])}}if(Ge.current&&er.length===0){Ge.current=false;if(Te){Oe(W(_e.treeList,Je));return}else if(me&&_e.treeList.length){Oe([_e.treeList[0][Je.value]]);return}}if(er.length>0){Ge.current=false;if(We.current){if(!le(er,We.current)){var n=ir(er,true);Oe(Array.from(new Set(De==null?void 0:De.concat(n))))}}else{var a=ir(er,true);Oe(Array.from(new Set(De==null?void 0:De.concat(a))))}}}}),[_e.treeList,JSON.stringify(er)]);var rr=function e(r){return r===""||a(r)};var tr=function e(r){var t=r;if(Me.onRequestResultAdapter){t=Me.onRequestResultAdapter(r)}else if(Je.list){t=L(r,Je.list,[])||[]}if(!d(t)){console.warn("接口返回数据为非数组结构,确认是否需要配置fieldNames.list进行解析");return[]}return t};I.useEffectCustom((function(){$e($)}),[$]);var nr=b.useCallbackRef((function(){return new Promise((function(e,r){var t,n,a,i,l;var u=function(){try{return e()}catch(e){return r(e)}};var s=function(e){try{Ge.current=false;Ue(false);void S.error(e.message||"数据查询异常...");return u()}catch(e){return r(e)}};try{if(!Me.onRequest){throw new Error("onRequest 调用接口服务不能为空")}t=Me.requiredParamsKeys;n=y({},Me.params);if(t){a=t.find((function(e){return rr(n[e])}));if(a){void Ve.changeRequestStatus({status:"no-dependencies-params"});console.warn("TreeWrapper组件:参数:"+t.join("、")+"不能为空");return e()}}var o=function(){try{return u()}catch(e){return s(e)}};var c=function(e){try{window[ze]=false;Ue(false);void Ve.changeRequestStatus({status:"request-error",errorMessage:e.message});return o()}catch(e){return s(e)}};try{Ue(true);return Promise.resolve(Ve.changeRequestStatus({status:"request-progress"})).then((function(e){try{window[ze]=true;return Promise.resolve(Me.onRequest==null?void 0:Me.onRequest(n)).then((function(e){try{i=e;B==null||B(i);l=tr(i);if(l.length===0){Ge.current=false}ar(l);Ue(false);window[ze]=false;return o()}catch(e){return c(e)}}),c)}catch(e){return c(e)}}),c)}catch(e){c(e)}}catch(e){s(e)}}))}));I.useEffectCustom((function(){if(xe)return;if(Ee.length){void nr();return}var e=Y(R).getState();if(e.requestStatus==="request-success"){J==null||J(e.treeList);return}if(!window[ze]){void nr()}else{J==null||J(e.treeList)}}),Ee);I.useEffectCustom((function(){if(xe){ar(l||[])}}),[l]);var ar=b.useCallbackRef((function(e){if((e==null?void 0:e.length)===0&&_e.treeList.length===0){void Ve.changeRequestStatus({status:"request-success"});return}void Ve.setTreeList({treeList:e||[],childrenName:Je.children,valueName:Je.value});J==null||J(e)}));var ir=function e(r,t){var n=[];r.forEach((function(e){if(!t&&De!=null&&De.includes(e))return;var r=Q(e,_e.treeList,Je);n=n.concat(r)}));return n};b.useUpdateEffect((function(){if(Ze){var e=_e.treeTiledArray.filter((function(e){var r=e[Je.label]||"";if(we){return we(e,Ze)}return String(r).toLowerCase().includes(Ze.toLowerCase())}));var r=ir(e.map((function(e){return e[Je.value]})),true);Oe(Array.from(new Set(r)))}else{Oe([])}}),[Ze]);M(r,(function(){return{onClearSelectorList:function e(){void Ve.resetTreeList()},getTreeDataList:function e(){return _e.treeList},getTreeTiledArray:function e(){return _e.treeTiledArray},getTreeTiledArrayMap:function e(){return _e.treeTiledArrayMap},onChangeExpandedKeys:function e(r){Oe(r)},onSelectAll:function e(){var r=_e.treeTiledArray.map((function(e){return e[Je.value]}));Oe(r);f==null||f(r,undefined,_e.treeList,undefined)},onCancelSelectAll:function e(){Oe([]);f==null||f(undefined)},onExpandedAll:function e(){var r=_e.treeTiledArray.map((function(e){return e[Je.value]}));Oe(r)},onCancelExpandedAll:function e(){Oe([])}}}));var lr=b.useCallbackRef((function(e){Oe(e)}));var ur=function r(t,n,a,i){We.current=u(t);if(u(t).length===0){var l=i==null?void 0:i.node[Je.value];var s=_e.treeTiledArrayMap[l];e.onChange==null||e.onChange(undefined,s,[s],i)}else{e.onChange==null||e.onChange(t,n,a,i)}};var sr=b.useCallbackRef((function(r,t){var n=[];var a=[];if(H){n=e.checkStrictly?r.checked:r}else{n=r;if(Re&&!u(r).length){return}if(Se){var i=_e.treeTiledArrayMap[r[0]];var l=i?Se(i):false;if(l){return}}}n=u(n);if(!H){a=n}else{if(ue&&Ze&&!He){var s=t==null?void 0:t.node;if(e.checkStrictly){if(t.checked==false){n=er.filter((function(e){return e!=s[Je.value]}))}else{n=Array.from(new Set([].concat(er,n)))}a=n}else{var o=Ae==="2"||Ae==="3"?ae(er,_e.treeTiledArrayMap,Je.children,Je.value):er;if(t.checked==false){n=re([].concat(o),s,Je.children,Je.value)}else{n=Array.from(new Set([].concat(o,n)))}a=ee(n,_e.treeTiledArrayMap,Je.children,Je.value)}}else{a=n}if(!e.checkStrictly){if(Ae==="2"){n=ne(a,_e.treeTiledArrayMap,Je.children)}else if(Ae==="3"){n=te(a,_e.treeTiledArrayMap,Je.children,Je.value)}else if(K==false){n=ne(a,_e.treeTiledArrayMap,Je.children)}else{n=a}}}var c=a.map((function(e){return _e.treeTiledArrayMap[e]}));if(de){var d=Qe.value;var f=Qe.label;var v=n.map((function(e){var r;return r={},r[f]=_e.treeTiledArrayMap[e][Je.label],r[d]=_e.treeTiledArrayMap[e][Je.value],r}));if(H){ur(v,n.map((function(e){return _e.treeTiledArrayMap[e]})),c,t)}else{ur(v[0],_e.treeTiledArrayMap[n[0]],c,t)}}else{if(H){ur(n,n.map((function(e){return _e.treeTiledArrayMap[e]})),c,t)}else{ur(n[0],_e.treeTiledArrayMap[n[0]],c,t)}}}));var or=b.useCallbackRef((function(e){return G==null?void 0:G(e)}));var cr=k((function(){var e=j(_e.treeList||[]);if(Ze&&he!=="highlight"){var r=s(j(_e.treeList||[]),(function(e){var r;if(we){return we(e,Ze)}var t=(r=e[Je.label])==null?void 0:r.toLowerCase();return t.indexOf(Ze.toLowerCase())>=0}),{childrenName:Je.children});return r}return e}),[we,Je.children,Je.label,he,_e.treeList,Ze]);var dr=k((function(){var e=function r(t){return t==null?void 0:t.map((function(r){var t;var n=(or==null?void 0:or(r))||r;var a=fe?undefined:n.disabled;var i=n[Je.label]||"";var l;if(Ze&&g(i)){var u=i==null?void 0:i.toLowerCase();var s=u.indexOf(Ze.toLowerCase());var o=i.substring(0,s);var c=i.slice(s+Ze.length);var f=i.slice(s,s+Ze.length);l=s>-1?U("span",{className:h({"v-tree-item-disabled":n.disabled}),children:[o,z("span",{className:"site-tree-search-value",children:f}),c]}):null}if(!l&&n.disabled){l=z("span",{className:h({"v-tree-item-disabled":n.disabled}),children:i})}var v=n[Je.children];return C({},n,(t={disabled:a},t[Je.label]=l||i,t._treeItemName=i,t._disabled=n.disabled,t[Je.children]=d(v)&&v.length>0?e(v):undefined,t))}))};return e(cr)}),[cr,or,fe,Je.label,Je.children,Ze]);var fr=b.useCallbackRef((function(r){return new Promise((function(t,n){return new Promise((function(a,i){var l,u,s,o,c;if(r[Je.children]){t();return a()}var d=function(){try{return a()}catch(e){return i(e)}};var f=function(e){try{void S.error(e.message||"数据加载异常...");n();return d()}catch(e){return i(e)}};try{return Promise.resolve((l=e.loadDataServiceConfig)==null||l.onRequest==null?void 0:l.onRequest(((u=e.loadDataServiceConfig)==null||u.getParams==null?void 0:u.getParams(r))||{})).then((function(n){try{o=n;c=(s=e.loadDataServiceConfig)!=null&&s.onRequestResultAdapter?e.loadDataServiceConfig.onRequestResultAdapter(o):o;void Ve.treeListAppendChildren({value:r[Je.value],appendList:c,childrenName:Je.children,valueName:Je.value}).then((function(e){ar(e.treeList);t()}));return d()}catch(e){return f(e)}}),f)}catch(e){f(e)}}))}))}));var vr=b.useCallbackRef((function(r){var t=r==null?void 0:r[Je.children];var n=e.loadDataFlag;var a=n?!r.isLeaf:false;var i=t&&t.length>0||a;return!i}));var pr=b.useCallbackRef((function(r){var t,n,a;var i=r._treeItemName||r[Je.label];var l=je==null?void 0:je(C({},r,(t={},t[Je.label]=i,t)));if(l!=null&&l.operateList.length){return U(E,{children:[z("span",{className:"tree-item-title","data-value":r[Je.value],children:(be==null?void 0:be(r))||(r==null?void 0:r[Je.label])}),z(D,C({gap:5},l,{dropdownMenuProps:C({placement:"bottomRight",isFixed:true},l==null?void 0:l.dropdownMenuProps),className:h("tree-item-title-operate",l.className)}))]})}if(Be==="fold"){var u;var s=[];if((u=e.menuOptions)!=null&&u.fold){var o,c,d;s=((o=e.menuOptions)==null||(c=o[Be])==null?void 0:c.call(o,C({},r,(d={},d[Je.label]=i,d))))||[]}else{var f;s=(e.getMenuOptions==null?void 0:e.getMenuOptions(C({},r,(f={},f[Je.label]=i,f))))||[]}return U(E,{children:[z("span",{className:"tree-item-title","data-value":r[Je.value],children:(be==null?void 0:be(r))||(r==null?void 0:r[Je.label])}),s.length>0&&z(O,{menuList:s,placement:"bottomRight",children:z(m,{})})]})}var v=(n=e.menuOptions)==null||n.tile==null?void 0:n.tile(C({},r,(a={},a[Je.label]=i,a)));return U(E,{children:[z("span",{className:"tree-item-title","data-value":r[Je.value],children:(be==null?void 0:be(r))||(r==null?void 0:r[Je.label])}),v?z(D,C({gap:5},v,{className:h("tree-item-title-operate",v.className)})):null]})}));var mr=b.useDebounceCallback((function(r){$e(r);e.onSearchValueChange==null||e.onSearchValueChange(r)}),300);var hr=b.useCallbackRef((function(e){mr(e.target.value)}));var gr=b.useCallbackRef((function(r){if(!e.icon)return null;if(P(e.icon))return e.icon;var t=vr(r.data);return e.icon(C({},r,{isParent:!t,isLeaf:t}))}));var yr=k((function(){return{title:Je.label,key:Je.value,children:Je.children}}),[Je]);var br=dr.length>0&&_e.requestStatus!=="request-error";var Lr=C({showLine:{showLeafIcon:false},titleRender:pr,blockNode:true,switcherIcon:z(p,{}),onDrop:function e(r){if(ye){var t=ye(r);if(!t)return}var n=Z(cr,Je,r),a=n.dataList,i=n.dragNodeData;ge==null||ge(i);ar(a)},expandedKeys:De},ke,{fieldNames:yr,treeData:dr,onExpand:lr,loadData:e.loadDataFlag?fr:undefined,style:{width:"100%"},icon:gr,onClick:function e(r){if(Ne){var t=r.target;var n=t.dataset.value;if(a(n)){t=o.findParentsElement(r.target,(function(e){var r,t;return((r=e.classList)==null?void 0:r.contains("tree-item-title"))||((t=e.classList)==null?void 0:t.contains("ant-tree-treenode"))}));n=t.dataset.value}if(!a(n)){var i=_e.treeTiledArrayMap[n];if(i!=null&&i[Je.children]&&i[Je.children].length>0){var l=De.includes(n);if(l){var u=v.arrayRemove(De,n);Oe([].concat(u))}else{Oe([].concat(De,[n]))}}}}}});var Cr={onCheck:sr,checkable:H,checkedKeys:er};var Tr={onSelect:sr,multiple:false,selectedKeys:er};var jr=H?Cr:Tr;var wr=h("v-tree-wrapper","v-tree-wrapper-menu-"+Ye,Ce);var Ar=_e.treeList.length>0&&!br&&Ze;return U("div",{className:wr,style:t,children:[!!ue&&U("div",{className:"v-tree-wrapper-search-area",style:Le,children:[z(_,{className:"v-tree-wrapper-search",placeholder:a(se)?"搜索":se,onChange:hr,value:Ze,allowClear:true}),!!e.searchExtraElement&&z("span",{className:"v-tree-wrapper-search-extra",children:e.searchExtraElement})]}),br?U("div",{className:"v-tree-wrapper-tree-wrapper",children:[z(w,{spinning:_e.requestStatus==="request-progress"}),z(A,C({},jr,Lr,{className:"v-tree-wrapper-tree"}))]}):z(V,{status:_e.requestStatus,loading:Ke,messageConfig:C({"request-success":Ar?"搜索结果为空":"暂无数据","request-error":_e.requestErrorMessage},oe),errorButton:z(N,{type:"primary",onClick:nr,children:"重新获取数据"})})]})}));var se=c(ue,{getTreeDataList:G});export{se as TreeWrapper};
17
17
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/tree-wrapper/model.ts","@flatbiz/antd/src/tree-wrapper/hooks.ts","@flatbiz/antd/src/tree-wrapper/utils.ts","@flatbiz/antd/src/tree-wrapper/tree-wrapper.tsx","@flatbiz/antd/src/tree-wrapper/index.ts"],"sourcesContent":["import { isArray } from '@dimjs/lang';\nimport { type API, type ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport type { TAny } from '@flatbiz/utils';\nimport { arrayToMap, treeToArray, type TPlainObject, type TSetDefaultDefined } from '@flatbiz/utils';\nimport { type TreeProps } from 'antd';\nimport { TRequestStatus } from '../request-status';\n\nexport type ModelState = {\n treeList: TSetDefaultDefined<TreeProps['treeData'], []>;\n treeTiledArray: TPlainObject[];\n treeTiledArrayMap: TPlainObject;\n queryIsEmpty: boolean;\n requestStatus?: TRequestStatus;\n requestErrorMessage?: string;\n};\n\ntype ModelActionParams = {\n setTreeList: {\n treeList: ModelState['treeList'];\n childrenName: string;\n valueName: string;\n };\n resetTreeList: void;\n changeRequestStatus: {\n status: TRequestStatus;\n errorMessage?: string;\n };\n treeListAppendChildren: {\n value: string | number;\n appendList: TPlainObject[];\n childrenName: string;\n valueName: string;\n };\n};\n\nconst defaultState: ModelState = {\n treeList: [],\n treeTiledArray: [],\n treeTiledArrayMap: {},\n queryIsEmpty: false,\n};\n\nconst TreeWrapperModel: ModelType<ModelState, ModelActionParams> = {\n actions: {\n setTreeList: (params) => {\n return (state) => {\n state.treeList = params.treeList || [];\n state.treeTiledArray = treeToArray(state.treeList, params.childrenName);\n state.treeTiledArrayMap = arrayToMap(state.treeTiledArray, params.valueName);\n state.requestStatus = 'request-success';\n };\n },\n resetTreeList: () => {\n return (state) => {\n state.treeList = [];\n state.treeTiledArray = [];\n state.treeTiledArrayMap = {};\n };\n },\n changeRequestStatus: (params) => {\n return (state) => {\n state.requestStatus = params.status;\n if (params.status === 'request-error') {\n state.treeList = [];\n state.treeTiledArray = [];\n state.treeTiledArrayMap = {};\n state.requestErrorMessage = params.errorMessage || '数据查询异常';\n } else {\n state.requestErrorMessage = undefined;\n }\n };\n },\n treeListAppendChildren: (params) => {\n return (state) => {\n const tiledArray = treeToArray(state.treeList, params.childrenName);\n const treeTiledArrayMap = arrayToMap(tiledArray, params.valueName);\n const target = treeTiledArrayMap[params.value];\n if (target) {\n if (isArray(params.appendList) && params.appendList.length > 0) {\n target[params.childrenName] = params.appendList;\n } else {\n target.isLeaf = true;\n }\n }\n state.treeTiledArray = tiledArray;\n state.treeTiledArrayMap = treeTiledArrayMap;\n };\n },\n },\n state: defaultState,\n};\n\nconst treeWrapperModels: Record<string, API<ModelType<ModelState, ModelActionParams, TAny>>> = {};\n\n/**\n * ```\n * 使用方式\n * const [state, actions] = useTreeWrapperModel('key值').useStore();\n * ```\n */\nexport const treeWrapperModel = (key: string) => {\n if (!treeWrapperModels[key]) {\n treeWrapperModels[key] = Model(TreeWrapperModel);\n }\n return treeWrapperModels[key];\n};\n","import { type TPlainObject } from '@flatbiz/utils';\nimport { treeWrapperModel } from './model';\n\nexport const getTreeDataList = (modelKey: string) => {\n const state = treeWrapperModel(modelKey).getState();\n return state.treeList as TPlainObject[];\n};\n","import { isArray, isObject } from '@dimjs/lang';\nimport { cloneState } from '@dimjs/model';\nimport { tree } from '@dimjs/utils';\nimport {\n isNotEmptyArray,\n isUndefinedOrNull,\n treeLeafParentsArray,\n treeToArray,\n treeToTiledArray,\n treeToTiledMap,\n type LabelValueItem,\n type TAny,\n type TPlainObject,\n} from '@flatbiz/utils';\nimport { type DataNode } from 'antd/es/tree';\nimport { dequal } from 'dequal';\n\nexport const getDefaultExpandAllKeys = (\n treeList: TPlainObject[],\n fieldNames: { label: string; value: string; children: string },\n) => {\n const allValues = treeToArray(treeList, fieldNames.children)\n .filter((item) => {\n const childrenValue = item[fieldNames.children] as TAny[] | undefined;\n return childrenValue && childrenValue.length > 0;\n })\n .map((item) => {\n return item[fieldNames.value];\n });\n return allValues as Array<string | number>;\n};\n\nexport const getExpandedKeys = (\n value: string | number,\n treeList: TPlainObject[],\n fieldNames: { label: string; value: string; children: string },\n) => {\n const tiledArray = treeToTiledArray(treeList, fieldNames);\n return treeLeafParentsArray(value, tiledArray, true, {\n value: 'value',\n parentValue: 'parentValue',\n })\n .filter((item) => {\n const childrenValue = item[fieldNames.children] as TAny[] | undefined;\n return childrenValue && childrenValue.length > 0;\n })\n .map((item) => item.value);\n};\n\nexport const getVauleList = (data, labelInValueFieldNames: LabelValueItem<string | number>) => {\n let tempList = isUndefinedOrNull(data) ? [] : data;\n tempList = isArray(tempList) ? tempList : [tempList];\n tempList = tempList.map((item) => {\n if (isObject(item)) return item[labelInValueFieldNames.value];\n return item;\n });\n return tempList as Array<string | number>;\n};\n\nexport const array2map = (data, labelInValueFieldNames: LabelValueItem<string | number>) => {\n const list = getVauleList(data, labelInValueFieldNames);\n const map = {};\n list.forEach((item) => {\n map[item] = true;\n });\n return map;\n};\n\n/**\n * value的类型包括\n * string、number、\n * Array<string | number>、{ label: string, value: string | nuber }、\n * Array<{ label: string, value: string | nuber }>\n * 将数组转成对象,深度比较时不用考虑顺序问题\n * @param value1\n * @param value2\n * @returns\n */\nexport const treeWrapperValueDeepEqual = (\n value1: TAny,\n value2: TAny,\n labelInValueFieldNames: LabelValueItem<string | number>,\n) => {\n if (isUndefinedOrNull(value1) && isUndefinedOrNull(value2)) return true;\n const object1 = array2map(value1, labelInValueFieldNames);\n const object2 = array2map(value2, labelInValueFieldNames);\n return dequal(object1, object2);\n};\n\ntype OnTreeDropMethod = (\n dataList: TPlainObject[],\n fieldNames: { value: string; children: string },\n info: TAny,\n) => {\n dataList: TPlainObject[];\n dragNodeData: {\n parentId?: string | number;\n id: string | number;\n index: number;\n };\n};\n\nexport const onTreeDrop: OnTreeDropMethod = (dataList, fieldNames, info) => {\n const dropKey = info.node.key;\n const dragKey = info.dragNode.key;\n const dropPos = info.node.pos.split('-');\n const dropPosition = info.dropPosition - Number(dropPos[dropPos.length - 1]);\n const treeKeyName = fieldNames.value;\n const treeChildrenName = fieldNames.children;\n\n const loop = (\n data: DataNode[],\n key: React.Key,\n callback: (node: DataNode, i: number, data: DataNode[]) => void,\n ) => {\n for (let i = 0; i < data.length; i++) {\n if (data[i][treeKeyName] === key) {\n return callback(data[i], i, data);\n }\n if (data[i][treeChildrenName]) {\n loop(data[i][treeChildrenName]!, key, callback);\n }\n }\n };\n const data = cloneState(dataList) as DataNode[];\n\n // Find dragObject\n let dragObj: DataNode;\n loop(data, dragKey, (item, index, arr) => {\n arr.splice(index, 1);\n dragObj = item;\n });\n\n if (!info.dropToGap) {\n // Drop on the content\n loop(data, dropKey, (item) => {\n item[treeChildrenName] = item[treeChildrenName] || [];\n // where to insert 示例添加到头部,可以是随意位置\n item[treeChildrenName].unshift(dragObj);\n });\n } else if (\n (info.node.props.children || []).length > 0 && // Has children\n info.node.props.expanded && // Is expanded\n dropPosition === 1 // On the bottom gap\n ) {\n loop(data, dropKey, (item) => {\n item[treeChildrenName] = item[treeChildrenName] || [];\n // where to insert 示例添加到头部,可以是随意位置\n item[treeChildrenName].unshift(dragObj);\n // in previous version, we use item.children.push(dragObj) to insert the\n // item to the tail of the children\n });\n } else {\n let ar: DataNode[] = [];\n let i: number;\n loop(data, dropKey, (_item, index, arr) => {\n ar = arr;\n i = index;\n });\n if (dropPosition === -1) {\n ar.splice(i!, 0, dragObj!);\n } else {\n ar.splice(i! + 1, 0, dragObj!);\n }\n }\n return {\n dataList: data,\n dragNodeData: dragNodeData(dragKey, data, fieldNames),\n };\n};\n\nexport const dragNodeData = (\n dorpNodeId: TAny,\n dataList: TAny[],\n fieldNames: { value: string; children: string },\n) => {\n const id = fieldNames.value;\n const children = fieldNames.children;\n tree.walkThroughTree<TPlainObject, TAny>(\n { [id]: undefined, [children]: dataList } as TAny,\n (node, index, _parent) => {\n node['__index'] = index;\n node['__parentId'] = _parent?.[id];\n },\n children,\n );\n const tileList = treeToArray(dataList, children);\n const target = tileList.find((item) => item[id] === dorpNodeId);\n return {\n parentId: target?.['__parentId'],\n id: target?.[id],\n index: target?.['__index'],\n };\n};\n\n/**\n * 由于树节点过滤后,选中了父节点不一定是全部子节点,此处进行筛查\n */\nexport const getActualSelectKeyList = (\n checkedValueList: Array<string | number>,\n treeTiledArrayMap: TPlainObject,\n chidlrenKey: string,\n valueKey: string,\n) => {\n const leafValueDataMap: TPlainObject = {};\n const hasChildrenList: Array<string | number> = [];\n const retainHasChildrenValueList: Array<string | number> = [];\n checkedValueList.forEach((item) => {\n if (isNotEmptyArray(treeTiledArrayMap[item]?.[chidlrenKey])) {\n hasChildrenList.push(item);\n } else {\n leafValueDataMap[item] = item;\n }\n });\n if (hasChildrenList.length > 0) {\n hasChildrenList.forEach((item) => {\n const childrenTiledList = treeToArray(treeTiledArrayMap[item][chidlrenKey], chidlrenKey);\n if (Object.keys(leafValueDataMap).length > childrenTiledList.length) {\n const targetList = childrenTiledList.filter((item) => {\n return checkedValueList.find((temp) => temp === item[valueKey]);\n });\n if (targetList.length === childrenTiledList.length) {\n retainHasChildrenValueList.push(item);\n }\n }\n });\n }\n\n return checkedValueList.filter((item) => {\n return retainHasChildrenValueList.find((temp) => temp == item) || leafValueDataMap[item];\n });\n};\n\n/** 移除指定节点以及所有子节点 */\nexport const removeTargetNodeAndAllChildrenNode = (\n checkedValueList: Array<string | number>,\n awitDeleteNode: TPlainObject,\n chidlrenKey: string,\n valueKey: string,\n) => {\n const awitDeleteTieldDataMap: TPlainObject = treeToTiledMap([awitDeleteNode], {\n value: valueKey,\n children: chidlrenKey,\n });\n return checkedValueList.filter((item) => {\n return !awitDeleteTieldDataMap[item];\n });\n};\n\n/** 移除父节点全选下的叶子节点 */\nexport const removeAllSelectLeafNode = (\n checkedValueList: Array<string | number>,\n treeTiledArrayMap: TPlainObject,\n chidlrenKey: string,\n valueKey: string,\n) => {\n let awitDeleteCheckedValueMap: TPlainObject = {};\n checkedValueList.forEach((item) => {\n const childrenList = treeTiledArrayMap[item]?.[chidlrenKey];\n if (isNotEmptyArray(childrenList)) {\n // hasChildrenList.push(item);\n const targetMap = treeToTiledMap(childrenList, {\n value: valueKey,\n children: chidlrenKey,\n });\n awitDeleteCheckedValueMap = {\n ...awitDeleteCheckedValueMap,\n ...targetMap,\n };\n }\n });\n return checkedValueList.filter((item) => !awitDeleteCheckedValueMap[item]);\n};\n\n/** 移除所有的父节点 */\nexport const removeAllParentNode = (\n checkedValueList: Array<string | number>,\n treeTiledArrayMap: TPlainObject,\n chidlrenKey: string,\n) => {\n return checkedValueList.filter((item) => {\n return !isNotEmptyArray(treeTiledArrayMap[item][chidlrenKey]);\n });\n};\n\n/** values中的数据可能存在缺少父节点下的子节点情况,此处补齐 */\nexport const completionParentChildrenNode = (\n values: Array<string | number>,\n treeTiledArrayMap: TPlainObject,\n chidlrenKey: string,\n valueKey: string,\n) => {\n let allValues = [...values];\n values.forEach((item) => {\n const childrenList = treeTiledArrayMap[item]?.[chidlrenKey];\n if (isNotEmptyArray(childrenList)) {\n const targetList = treeToArray(childrenList, chidlrenKey);\n allValues = allValues.concat(targetList.map((temp) => temp[valueKey]));\n }\n });\n return Array.from(new Set(allValues));\n};\n","import { CaretDownFilled, MoreOutlined } from '@ant-design/icons';\nimport { isArray, isString } from '@dimjs/lang';\nimport { cloneState } from '@dimjs/model';\nimport { array, classNames, extend, get } from '@dimjs/utils';\nimport { Button, message, Spin, Tree, type TreeProps } from 'antd';\nimport {\n forwardRef,\n Fragment,\n isValidElement,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type DependencyList,\n type ReactElement,\n} from 'react';\n\nimport { dom, isUndefinedOrNull, toArray, treeFilter, type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { treeWrapperModel } from './model';\n\nimport { ButtonOperate, ButtonOperateItem, ButtonOperateProps } from '../button-operate';\nimport { DropdownMenuItem, DropdownMenuWrapper } from '../dropdown-menu-wrapper';\nimport { fbaHooks } from '../fba-hooks';\nimport { InputSearchWrapper } from '../input-search-wrapper';\nimport { RequestStatus, TRequestStatusProps } from '../request-status';\nimport './style.less';\nimport {\n completionParentChildrenNode,\n getActualSelectKeyList,\n getDefaultExpandAllKeys,\n getExpandedKeys,\n getVauleList,\n onTreeDrop,\n removeAllParentNode,\n removeAllSelectLeafNode,\n removeTargetNodeAndAllChildrenNode,\n} from './utils';\n\ntype TreeWrapperValue =\n | string\n | number\n | Array<string | number>\n | TPlainObject<string | number>\n | Array<TPlainObject<string | number>>;\n\nexport type TreeServiceConfig = {\n params?: TPlainObject;\n requiredParamsKeys?: string[];\n onRequest?: (params?: TAny) => TAny;\n /**\n * 响应数据适配器\n */\n onRequestResultAdapter?: (respData: TAny) => TPlainObject[];\n};\nexport type TreeLoadDataServiceConfig = {\n getParams?: (dataItem: TPlainObject) => TPlainObject;\n onRequest: (params: TPlainObject) => TAny;\n /**\n * 响应数据适配器\n */\n onRequestResultAdapter?: (respData: TAny) => TPlainObject[];\n};\n\nexport type TreeWrapperMenuItem = {\n title: string;\n onClick: (dataItem: TPlainObject, event) => void;\n icon?: ReactElement;\n};\n\nexport type TreeWrapperProps = Omit<\n TreeProps,\n | 'treeData'\n | 'onExpand'\n | 'selectedKeys'\n | 'checkedKeys'\n | 'onCheck'\n | 'onSelect'\n | 'fieldNames'\n | 'multiple'\n | 'loadData'\n | 'icon'\n | 'defaultCheckedKeys'\n | 'defaultExpandParent'\n | 'defaultSelectedKeys'\n> & {\n /** 唯一值,用于缓存数据 */\n modelKey: string;\n /**\n * 字段映射\n * ```\n * 默认值:\n * label = 'label'\n * value = 'value'\n * children = 'children'\n *\n * 如果未设置list,则说明接口返回数据为数组\n * 如果返回数据存在多级,可通过设置 list='a.b.list'\n * ```\n */\n fieldNames?: {\n label?: string;\n value?: string;\n children?: string;\n list?: string;\n };\n /**\n * useEffect依赖项数组,用于重新发起获取接口数据\n */\n effectDependencyList?: DependencyList;\n /**\n * 请求服务需求的数据,当设置`selectorTreeList`后无效果\n */\n serviceConfig?: TreeServiceConfig;\n /**\n * 是否开启异步加载\n */\n loadDataFlag?: boolean;\n /**\n * 异步加载数据配置\n * ```\n * 1. 会通过fieldNames配置label、value、children进行转义\n * 2. fieldNames.list 配置在此处无效\n * ```\n */\n loadDataServiceConfig?: TreeLoadDataServiceConfig;\n /**\n * 当设置selectorTreeList后,serviceConfig将失效\n * ```\n * 1. 不支持异步数据,异步使用serviceConfig方式\n * ```\n */\n selectorTreeList?: TPlainObject[];\n /**\n * 通过服务获取数据后回调,当设置`selectorList`后无效果\n * ```\n * 相同modelKey,同时发起多个渲染时,只有第一个会执行 onSelectorTreeListChange 回调\n * ```\n */\n onSelectorTreeListChange?: (dataList: TPlainObject[]) => void;\n /** 接口响应数据变更 */\n onRequestResponseChange?: (data: TAny) => void;\n onChange?: (\n selectedKey?: TreeWrapperValue,\n operateNodeData?: TPlainObject[] | TPlainObject,\n operateAllNodeDataList?: TPlainObject[],\n extraData?: TPlainObject,\n ) => void;\n\n /**\n * 搜索关键字,打开tree折叠过滤关键字\n */\n searchValue?: string;\n /**\n * checkable模式下,onChange是否返回父节点,默认值true\n * @description 已过期,请使用 checkableType 配置\n * ```\n * 注意:checkStrictly = true,checkableResponseParentNode配置失效\n * ```\n */\n checkableResponseParentNode?: boolean;\n /**\n * 节点选择类型(默认值:'2'), 多选时有效\n * ```\n * '1' 表示返回所有选中的节点(包含父节点和叶子节点)\n * '2' 表示只返回叶子节点\n * '3' 表示当叶子节点全选时,返回父节点,不返回下面的叶子节点\n *\n * 注意:checkStrictly = true,checkableType配置失效\n * ```\n */\n checkableType?: '1' | '2' | '3';\n /**\n * 菜单结构类型 tile/平铺 fold/折叠;默认:fold\n * @deprecated 已过期 4.3.0版本移除,请使用 menus\n * ```\n * 自定义设置 titleRender 后失效\n * ```\n */\n menuLayoutType?: 'tile' | 'fold';\n /**\n * 获取菜单类别\n * @param dataItem\n * @deprecated 已过期 4.3.0版本移除,请使用 menus\n * @returns\n * ```\n * 1. menuLayoutType = tile 无效\n * 2. 自定义设置 titleRender 后失效\n * ```\n */\n getMenuOptions?: (dataItem: TPlainObject) => DropdownMenuItem[] | ButtonOperateItem[];\n /**\n * 根据 menuLayoutType 类型赋值\n * @deprecated 已过期 4.3.0版本移除,请使用 menuOptions\n */\n menuOptions?: {\n tile?: (dataItem: TPlainObject) => ButtonOperateProps;\n fold?: (dataItem: TPlainObject) => DropdownMenuItem[];\n };\n /**\n * 菜单触发类型,默认:click\n * ```\n * 自定义设置 titleRender 后失效\n * ```\n */\n menuTriggerType?: 'click' | 'hover';\n menus?: (dataItem) => ButtonOperateProps;\n\n showSearch?: boolean;\n onSearchValueChange?: (searchValue?: string) => void;\n searchPlaceholder?: string;\n searchStyle?: CSSProperties;\n icon?: (data: { isParent: boolean; isLeaf: boolean; [key: string]: TAny }) => ReactElement;\n /**\n * 状态文案配置\n */\n requestMessageConfig?: TRequestStatusProps['messageConfig'];\n /**\n * value格式\n *```\n * 1. string 、number\n * 2. Array<string | number>\n * 3. lableInValue = true,根据labelInValueFieldNames配置格式\n * 4. lableInValue = true,Array<labelInValueFieldNames配置>\n * ```\n */\n value?: TreeWrapperValue;\n /**\n * 选择的节点数据,是否包含label信息\n * ```\n * 默认选择的节点只有value数据\n * ```\n */\n labelInValue?: boolean;\n /**\n * ```\n * @deprecated 废弃\n * lableInValue = true,onChange输出数据字段名称,默认:{ label: string; value: string|number }\n * ```\n */\n labelInValueFieldNames?: { label: string; value: string };\n /**\n * 禁用状态是否可选,默认值true\n * 当dateItem中包含 disabled 则数据为禁用状态\n */\n disabledCanUse?: boolean;\n\n /** treeItem数据适配器 */\n treeItemDataAdapter?: (dataItem: TPlainObject) => TPlainObject;\n /** 搜索位置额外元素 */\n searchExtraElement?: ReactElement;\n /** 有唯一跟节点时,初始化是否展开,默认值:false */\n initRootExpand?: boolean;\n /** 搜素过滤方式,高亮 | 过滤;默认:filter */\n searchResultType?: 'highlight' | 'filter';\n /**\n * 拖拽节点处理,自定义onDrop事件后,失效\n * ```\n * 参数\n * 1. parentId 拖拽结束位置父节点ID\n * 2. id 当前拖拽节点ID\n * 3. index 拖拽结束位置所在数组下标\n * ```\n */\n onDropNodeHandle?: (result: { parentId?: string | number; id: string | number; index: number }) => void;\n /**\n * 拖拽排序前判断,如果返回 true,可排序,其他不可排序\n * ```\n * 可用于需要权限控制判断\n * ```\n */\n onDropPrev?: (info) => boolean;\n /**\n * 标签渲染\n * ```\n * 1. 自定义设置 titleRender 后失效\n * 2. 与titleRender的区别\n * a. 设置 labelRender 后,menuLayout有效\n * b. 设置 titleRender 后,menuLayout失效\n * ```\n */\n labelRender?: (nodeData: TPlainObject) => ReactElement;\n /**\n * 自定义搜索规则\n */\n customSearchRule?: (nodeData: TPlainObject, searchValue?: string) => boolean;\n\n /**\n * 点击父节点 是否切换折叠\n * ```\n * 1. 设置 titleRender 后,此配置失效\n * ```\n */\n clickParentNodeToggleExpand?: boolean;\n /**\n * 禁用节点选中\n * ```\n * 1. checkable = true,此配置失效\n * 2. 在未设置节点 disabled 属性情况下,满足此配置不会触发onChange事件\n * ```\n */\n disableNodeSelect?: (item: TPlainObject) => boolean;\n /**\n * 是否必选,最后一个不能取消\n * ```\n * 1. 设置 checkable = true 时无效\n * ```\n */\n required?: boolean;\n\n /**\n * 在第一次渲染value时,主动执行一次onChange\n * ```\n * 1. 设置labelInValue = true 时有效\n * 2. 不考虑子父节点的关系\n * ```\n */\n executeOnChangeInRenderFirstValue?: boolean;\n};\n\nconst compareArrays = (arr1, arr2) => {\n const sortedArr1 = arr1.slice().sort();\n const sortedArr2 = arr2.slice().sort();\n return JSON.stringify(sortedArr1) === JSON.stringify(sortedArr2);\n};\n\nexport type TreeWrapperRefApi = {\n onClearSelectorList: () => void;\n getTreeDataList: () => TreeProps['treeData'];\n onChangeExpandedKeys: (expandedKeys: Array<string | number>) => void;\n getTreeTiledArray: () => TPlainObject[];\n getTreeTiledArrayMap: () => TPlainObject;\n /** 选择所有 */\n onSelectAll: () => void;\n /** 取消选择所有 */\n onCancelSelectAll: () => void;\n /** 展开所有 */\n onExpandedAll: () => void;\n /** 取消展开所有 */\n onCancelExpandedAll: () => void;\n};\n\n/**\n * Tree包装组件,默认返回父节点,可配置不返回\n * ```\n * 1. treeNode内置字段说明(如需要相关功能,可在接口中添加固定字段)\n * a. disabled 禁掉响应\n * b. isLeaf 设置为叶子节点 (设置了 loadData 时有效)。为 false 时会强制将其作为父节点\n * c. disableCheckbox checkable模式下,treeNode复选框是否可选\n * 2. 当设置selectorTreeList属性后,serviceConfig将失效\n * 3. checkable=true,为多选模式\n * 4. 设置value后,组件显示受控\n * 5. 设置loadDataFlag=true,会动态获取children,当treeNode中包含isLeaf=true字段,表示为叶子节点,没有children了\n * 6. 内置 onDrop 事件已处理数组排序,通过 onDropNodeHandle 事件可获取操作节点排序数据;自定义onDrop后,内置onDrop失效\n * ```\n */\nexport const TreeWrapper = forwardRef<TreeWrapperRefApi, TreeWrapperProps>((props, ref) => {\n const {\n style,\n serviceConfig,\n effectDependencyList,\n selectorTreeList,\n value,\n onChange,\n modelKey,\n checkableResponseParentNode = true,\n checkable,\n onSelectorTreeListChange,\n onRequestResponseChange,\n treeItemDataAdapter,\n searchValue,\n showSearch,\n searchPlaceholder,\n requestMessageConfig,\n labelInValueFieldNames,\n labelInValue,\n disabledCanUse,\n menuLayoutType,\n menuTriggerType,\n initRootExpand,\n searchResultType,\n onDropNodeHandle,\n onDropPrev,\n labelRender,\n searchStyle,\n className,\n defaultExpandAll,\n menus,\n customSearchRule,\n checkableType,\n clickParentNodeToggleExpand,\n disableNodeSelect,\n required,\n executeOnChangeInRenderFirstValue,\n ...otherProps\n } = props;\n // eslint-disable-next-line no-prototype-builtins\n const hasSelectorTreeList = props.hasOwnProperty('selectorTreeList');\n const newServiceConfig = serviceConfig || {};\n const newEffectDependencyList = effectDependencyList || [];\n const [treeExpandedKeys, setTreeExpandedKeys] = useState<Array<string | number>>([]);\n const [state, actions] = treeWrapperModel(modelKey).useStore();\n const [loading, setLoading] = fbaHooks.useSafeState(false);\n const requestPreKey = `request-progress-${props.modelKey}`;\n const searchTypeHighlight = searchResultType === 'highlight';\n const fieldNames = useMemo(() => {\n return {\n label: 'label',\n value: 'value',\n children: 'children',\n ...props.fieldNames,\n };\n }, [props.fieldNames]);\n const menuLayoutTypeNew = menuLayoutType === undefined ? 'fold' : menuLayoutType;\n const menuTriggerTypeNew = menuTriggerType === undefined ? 'click' : menuTriggerType;\n const responseFirstRef = useRef(true);\n const innerValueListRef = useRef<any[] | undefined>(undefined);\n\n const labelInValueFieldNamesMerge = useMemo(() => {\n return { label: 'label', value: 'value', ...labelInValueFieldNames };\n }, [labelInValueFieldNames]);\n // tree 搜索值\n const [treeSearchValue, setTreeSearchValue] = useState<string | undefined>();\n\n const valueList = useMemo(() => {\n return getVauleList(value, labelInValueFieldNamesMerge);\n }, [labelInValueFieldNamesMerge, value]);\n\n fbaHooks.useEffectCustom(() => {\n if (state.treeList.length > 0) {\n if (\n responseFirstRef.current &&\n labelInValue &&\n executeOnChangeInRenderFirstValue &&\n valueList.length > 0\n ) {\n const dataList: TPlainObject[] = [];\n const originalList: TPlainObject[] = [];\n valueList.forEach((item) => {\n const target = state.treeTiledArrayMap[item];\n if (target) {\n originalList.push(target);\n dataList.push({\n [labelInValueFieldNamesMerge.label]: target[fieldNames.label],\n [labelInValueFieldNamesMerge.value]: target[fieldNames.value],\n });\n }\n });\n if (checkable) {\n props.onChange?.(dataList ? dataList : undefined, originalList);\n } else {\n props.onChange?.(dataList ? dataList[0] : undefined, originalList[0]);\n }\n }\n if (responseFirstRef.current && valueList.length === 0) {\n responseFirstRef.current = false;\n if (defaultExpandAll) {\n setTreeExpandedKeys(getDefaultExpandAllKeys(state.treeList, fieldNames));\n return;\n } else if (initRootExpand && state.treeList.length) {\n setTreeExpandedKeys([state.treeList[0][fieldNames.value]]);\n return;\n }\n }\n if (valueList.length > 0) {\n responseFirstRef.current = false;\n if (innerValueListRef.current) {\n if (!compareArrays(valueList, innerValueListRef.current)) {\n const innerExpandedKeys = getTreeExpandedKeys(valueList, true);\n setTreeExpandedKeys(Array.from(new Set(treeExpandedKeys?.concat(innerExpandedKeys))));\n }\n } else {\n const innerExpandedKeys = getTreeExpandedKeys(valueList, true);\n setTreeExpandedKeys(Array.from(new Set(treeExpandedKeys?.concat(innerExpandedKeys))));\n }\n }\n }\n // 当 valueList 为空时,不去清除treeExpandedKeys数据\n }, [state.treeList, JSON.stringify(valueList)]);\n\n const valueIsEmpty = (data: string | number) => {\n return data === '' || isUndefinedOrNull(data);\n };\n\n const serviceResponseHandle = (respData) => {\n let result: TPlainObject[] = respData;\n if (newServiceConfig.onRequestResultAdapter) {\n result = newServiceConfig.onRequestResultAdapter(respData as unknown as TPlainObject);\n } else if (fieldNames.list) {\n result = get(respData, fieldNames.list, []) || [];\n }\n if (!isArray(result)) {\n console.warn('接口返回数据为非数组结构,确认是否需要配置fieldNames.list进行解析');\n return [];\n }\n return result;\n };\n\n fbaHooks.useEffectCustom(() => {\n setTreeSearchValue(searchValue);\n }, [searchValue]);\n\n const startDataSourceRequest = hooks.useCallbackRef(async () => {\n try {\n if (!newServiceConfig.onRequest) {\n throw new Error('onRequest 调用接口服务不能为空');\n }\n const requiredParamsKeys = newServiceConfig.requiredParamsKeys;\n const params = extend({}, newServiceConfig.params);\n if (requiredParamsKeys) {\n const isEmpty = requiredParamsKeys.find((key) => {\n return valueIsEmpty(params[key] as string | number);\n });\n if (isEmpty) {\n void actions.changeRequestStatus({\n status: 'no-dependencies-params',\n });\n console.warn(`TreeWrapper组件:参数:${requiredParamsKeys.join('、')}不能为空`);\n return;\n }\n }\n try {\n setLoading(true);\n await actions.changeRequestStatus({\n status: 'request-progress',\n });\n window[requestPreKey] = true;\n const _respData = await newServiceConfig.onRequest?.(params);\n onRequestResponseChange?.(_respData);\n const respDataListNew = serviceResponseHandle(_respData);\n if (respDataListNew.length === 0) {\n responseFirstRef.current = false;\n }\n onChangeSelectorList(respDataListNew);\n setLoading(false);\n\n window[requestPreKey] = false;\n } catch (error: TAny) {\n window[requestPreKey] = false;\n setLoading(false);\n void actions.changeRequestStatus({\n status: 'request-error',\n errorMessage: error.message,\n });\n }\n } catch (error: TAny) {\n responseFirstRef.current = false;\n setLoading(false);\n void message.error((error.message as string) || '数据查询异常...');\n }\n });\n\n fbaHooks.useEffectCustom(() => {\n if (hasSelectorTreeList) return;\n // 当无依赖项时,如果存在缓存数据,就不在调用接口\n if (newEffectDependencyList.length) {\n void startDataSourceRequest();\n return;\n }\n const allState = treeWrapperModel(modelKey).getState();\n if (allState.requestStatus === 'request-success') {\n onSelectorTreeListChange?.(allState.treeList);\n return;\n }\n // 判断相同的modelKey是否已经在请求数据中,避免重复请求\n if (!window[requestPreKey]) {\n void startDataSourceRequest();\n } else {\n onSelectorTreeListChange?.(allState.treeList);\n }\n }, newEffectDependencyList);\n\n fbaHooks.useEffectCustom(() => {\n if (hasSelectorTreeList) {\n onChangeSelectorList(selectorTreeList || []);\n }\n }, [selectorTreeList]);\n\n const onChangeSelectorList = hooks.useCallbackRef((dataList: TAny[]) => {\n if (dataList?.length === 0 && state.treeList.length === 0) {\n void actions.changeRequestStatus({ status: 'request-success' });\n return;\n }\n void actions.setTreeList({\n treeList: dataList || [],\n childrenName: fieldNames.children,\n valueName: fieldNames.value,\n });\n onSelectorTreeListChange?.(dataList);\n });\n\n const getTreeExpandedKeys = (valueList: Array<string | number>, refresh?: boolean) => {\n let newTreeExpandedKeys = [] as Array<string | number>;\n valueList.forEach((value) => {\n if (!refresh && treeExpandedKeys?.includes(value)) return;\n const targetKeys = getExpandedKeys(value, state.treeList, fieldNames);\n newTreeExpandedKeys = newTreeExpandedKeys.concat(targetKeys);\n });\n return newTreeExpandedKeys;\n };\n\n hooks.useUpdateEffect(() => {\n if (treeSearchValue) {\n const targetList = state.treeTiledArray.filter((item) => {\n const labelValue = (item[fieldNames.label] || '') as string;\n if (customSearchRule) {\n return customSearchRule(item, treeSearchValue);\n }\n return String(labelValue).toLowerCase().includes(treeSearchValue.toLowerCase());\n });\n const treeExpandedKeysNew = getTreeExpandedKeys(\n targetList.map((item) => item[fieldNames.value]),\n true,\n );\n setTreeExpandedKeys(Array.from(new Set(treeExpandedKeysNew)));\n } else {\n setTreeExpandedKeys([]);\n }\n }, [treeSearchValue]);\n useImperativeHandle(ref, () => {\n return {\n onClearSelectorList: () => {\n void actions.resetTreeList();\n },\n getTreeDataList: () => {\n return state.treeList;\n },\n getTreeTiledArray: () => state.treeTiledArray,\n getTreeTiledArrayMap: () => state.treeTiledArrayMap,\n onChangeExpandedKeys: (dataList) => {\n setTreeExpandedKeys(dataList);\n },\n onSelectAll: () => {\n const targetList = state.treeTiledArray.map((temp) => temp[fieldNames.value]);\n setTreeExpandedKeys(targetList);\n onChange?.(targetList, undefined, state.treeList, undefined);\n },\n onCancelSelectAll: () => {\n setTreeExpandedKeys([]);\n onChange?.(undefined);\n },\n onExpandedAll: () => {\n const targetList = state.treeTiledArray.map((temp) => temp[fieldNames.value]);\n setTreeExpandedKeys(targetList);\n },\n onCancelExpandedAll: () => {\n setTreeExpandedKeys([]);\n },\n };\n });\n\n const onExpand = hooks.useCallbackRef((expandedKeys) => {\n setTreeExpandedKeys(expandedKeys as string[]);\n });\n\n const onInnerChange = (\n selectedKey?: TreeWrapperValue,\n operateNodeData?: TPlainObject[] | TPlainObject,\n operateAllNodeDataList?: TPlainObject[],\n operateInfo?: TPlainObject,\n ) => {\n innerValueListRef.current = toArray(selectedKey);\n if (toArray(selectedKey).length === 0) {\n const nodeValue = operateInfo?.node[fieldNames.value];\n const target = state.treeTiledArrayMap[nodeValue];\n props.onChange?.(undefined, target, [target], operateInfo);\n } else {\n props.onChange?.(selectedKey, operateNodeData, operateAllNodeDataList, operateInfo);\n }\n };\n\n const onTreeChangeHandle = hooks.useCallbackRef((checkedData, operateInfo) => {\n // 最终checkValueList\n let finalCheckedValueList: Array<number | string> = [];\n // 完整checkValueList\n let completeCheckedValueList: Array<number | string> = [];\n\n if (checkable) {\n finalCheckedValueList = props.checkStrictly ? checkedData.checked : checkedData;\n } else {\n finalCheckedValueList = checkedData;\n if (required && !toArray(checkedData).length) {\n return;\n }\n if (disableNodeSelect) {\n const target = state.treeTiledArrayMap[checkedData[0]];\n const x = target ? disableNodeSelect(target) : false;\n if (x) {\n return;\n }\n }\n }\n finalCheckedValueList = toArray(finalCheckedValueList);\n\n if (!checkable) {\n completeCheckedValueList = finalCheckedValueList;\n } else {\n if (showSearch && treeSearchValue && !searchTypeHighlight) {\n // 数据源被过滤情况\n const operateNode = operateInfo?.node;\n if (props.checkStrictly) {\n if (operateInfo.checked == false) {\n finalCheckedValueList = valueList.filter((item) => item != operateNode[fieldNames.value]);\n } else {\n finalCheckedValueList = Array.from(new Set([...valueList, ...finalCheckedValueList]));\n }\n completeCheckedValueList = finalCheckedValueList;\n } else {\n // 非checkStrictly=true情况\n const propsCompleteValues =\n checkableType === '2' || checkableType === '3'\n ? completionParentChildrenNode(\n valueList,\n state.treeTiledArrayMap,\n fieldNames.children,\n fieldNames.value,\n )\n : valueList;\n if (operateInfo.checked == false) {\n finalCheckedValueList = removeTargetNodeAndAllChildrenNode(\n [...propsCompleteValues],\n operateNode,\n fieldNames.children,\n fieldNames.value,\n );\n } else {\n finalCheckedValueList = Array.from(new Set([...propsCompleteValues, ...finalCheckedValueList]));\n }\n completeCheckedValueList = getActualSelectKeyList(\n finalCheckedValueList,\n state.treeTiledArrayMap,\n fieldNames.children,\n fieldNames.value,\n );\n }\n } else {\n // 无搜索情况\n completeCheckedValueList = finalCheckedValueList;\n }\n\n if (!props.checkStrictly) {\n if (checkableType === '2') {\n finalCheckedValueList = removeAllParentNode(\n completeCheckedValueList,\n state.treeTiledArrayMap,\n fieldNames.children,\n );\n } else if (checkableType === '3') {\n finalCheckedValueList = removeAllSelectLeafNode(\n completeCheckedValueList,\n state.treeTiledArrayMap,\n fieldNames.children,\n fieldNames.value,\n );\n } else if (checkableResponseParentNode == false) {\n finalCheckedValueList = removeAllParentNode(\n completeCheckedValueList,\n state.treeTiledArrayMap,\n fieldNames.children,\n );\n } else {\n finalCheckedValueList = completeCheckedValueList;\n }\n }\n }\n\n const completeCheckedItemList = completeCheckedValueList.map((item) => {\n return state.treeTiledArrayMap[item];\n });\n if (labelInValue) {\n const lvValue = labelInValueFieldNamesMerge.value;\n const lvLabel = labelInValueFieldNamesMerge.label;\n const finalCheckedList = finalCheckedValueList.map((item) => {\n return {\n [lvLabel]: state.treeTiledArrayMap[item][fieldNames.label],\n [lvValue]: state.treeTiledArrayMap[item][fieldNames.value],\n };\n });\n if (checkable) {\n onInnerChange(\n finalCheckedList,\n finalCheckedValueList.map((item) => {\n return state.treeTiledArrayMap[item];\n }),\n completeCheckedItemList,\n operateInfo,\n );\n } else {\n onInnerChange(\n finalCheckedList[0],\n state.treeTiledArrayMap[finalCheckedValueList[0]],\n completeCheckedItemList,\n operateInfo,\n );\n }\n } else {\n if (checkable) {\n onInnerChange(\n finalCheckedValueList,\n finalCheckedValueList.map((item) => {\n return state.treeTiledArrayMap[item];\n }),\n completeCheckedItemList,\n operateInfo,\n );\n } else {\n onInnerChange(\n finalCheckedValueList[0],\n state.treeTiledArrayMap[finalCheckedValueList[0]],\n completeCheckedItemList,\n operateInfo,\n );\n }\n }\n });\n\n const treeItemDataAdapterHandle = hooks.useCallbackRef((dataItem) => {\n return treeItemDataAdapter?.(dataItem);\n });\n\n const originalDataList = useMemo(() => {\n const list = cloneState(state.treeList || []);\n if (treeSearchValue && searchResultType !== 'highlight') {\n const resultList = treeFilter(\n cloneState(state.treeList || []),\n (node) => {\n if (customSearchRule) {\n return customSearchRule(node, treeSearchValue);\n }\n const value = node[fieldNames.label]?.toLowerCase();\n return value.indexOf(treeSearchValue.toLowerCase()) >= 0;\n },\n { childrenName: fieldNames.children },\n );\n return resultList;\n }\n return list;\n }, [\n customSearchRule,\n fieldNames.children,\n fieldNames.label,\n searchResultType,\n state.treeList,\n treeSearchValue,\n ]);\n\n const treeData = useMemo(() => {\n const loop = (data: TAny[]): TAny[] =>\n data?.map((item) => {\n const adapterItem = treeItemDataAdapterHandle?.(item) || item;\n const disabled = disabledCanUse ? undefined : adapterItem.disabled;\n const strTitle = (adapterItem[fieldNames.label] || '') as string;\n let titleDom;\n if (treeSearchValue && isString(strTitle)) {\n const strTitleNew = strTitle?.toLowerCase();\n const index = strTitleNew.indexOf(treeSearchValue.toLowerCase());\n const beforeStr = strTitle.substring(0, index);\n const afterStr = strTitle.slice(index + treeSearchValue.length);\n const centerStr = strTitle.slice(index, index + treeSearchValue.length);\n titleDom =\n index > -1 ? (\n <span\n className={classNames({\n 'v-tree-item-disabled': adapterItem.disabled,\n })}\n >\n {beforeStr}\n <span className=\"site-tree-search-value\">{centerStr}</span>\n {afterStr}\n </span>\n ) : null;\n }\n if (!titleDom && adapterItem.disabled) {\n titleDom = (\n <span\n className={classNames({\n 'v-tree-item-disabled': adapterItem.disabled,\n })}\n >\n {strTitle}\n </span>\n );\n }\n const children = adapterItem[fieldNames.children];\n return {\n ...adapterItem,\n disabled,\n [fieldNames.label]: titleDom || strTitle,\n _treeItemName: strTitle,\n _disabled: adapterItem.disabled,\n [fieldNames.children]: isArray(children) && children.length > 0 ? loop(children) : undefined,\n };\n });\n return loop(originalDataList);\n }, [\n originalDataList,\n treeItemDataAdapterHandle,\n disabledCanUse,\n fieldNames.label,\n fieldNames.children,\n treeSearchValue,\n ]);\n const loadData = hooks.useCallbackRef((dataItem: TPlainObject) => {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise<void>(async (resolve, reject) => {\n if (dataItem[fieldNames.children]) {\n resolve();\n return;\n }\n try {\n const respData = await props.loadDataServiceConfig?.onRequest?.(\n props.loadDataServiceConfig?.getParams?.(dataItem) || {},\n );\n const respDataList = (\n props.loadDataServiceConfig?.onRequestResultAdapter\n ? props.loadDataServiceConfig.onRequestResultAdapter(respData as unknown as TPlainObject)\n : respData\n ) as TPlainObject[];\n\n void actions\n .treeListAppendChildren({\n value: dataItem[fieldNames.value],\n appendList: respDataList,\n childrenName: fieldNames.children,\n valueName: fieldNames.value,\n })\n .then((allState) => {\n onChangeSelectorList(allState.treeList as TPlainObject[]);\n resolve();\n });\n } catch (error: TAny) {\n void message.error(error.message || '数据加载异常...');\n // 此处失败后,会重试“loadData”请求多次\n reject();\n }\n });\n });\n\n const isLeafNode = hooks.useCallbackRef((nodeData) => {\n const children = nodeData?.[fieldNames.children];\n // 当loadDataFlag=true,考虑叶子节点显示问题\n const loadDataFlag = props.loadDataFlag;\n const loadHasChildren = loadDataFlag ? !nodeData.isLeaf : false;\n const hasChildren = (children && children.length > 0) || loadHasChildren;\n return !hasChildren;\n });\n\n const titleRender = hooks.useCallbackRef((nodeData) => {\n const stringLabel = nodeData._treeItemName || nodeData[fieldNames.label];\n const buttonOperateConfig = menus?.({\n ...nodeData,\n [fieldNames.label]: stringLabel,\n });\n if (buttonOperateConfig?.operateList.length) {\n return (\n <Fragment>\n <span className=\"tree-item-title\" data-value={nodeData[fieldNames.value]}>\n {labelRender?.(nodeData) || nodeData?.[fieldNames.label]}\n </span>\n <ButtonOperate\n gap={5}\n {...buttonOperateConfig}\n dropdownMenuProps={{\n placement: 'bottomRight',\n isFixed: true,\n ...buttonOperateConfig?.dropdownMenuProps,\n }}\n className={classNames('tree-item-title-operate', buttonOperateConfig.className)}\n />\n </Fragment>\n );\n }\n\n if (menuLayoutTypeNew === 'fold') {\n let menuOptions: TAny[] = [];\n if (props.menuOptions?.fold) {\n menuOptions =\n props.menuOptions?.[menuLayoutTypeNew]?.({\n ...nodeData,\n [fieldNames.label]: stringLabel,\n }) || [];\n } else {\n menuOptions =\n props.getMenuOptions?.({\n ...nodeData,\n [fieldNames.label]: stringLabel,\n }) || [];\n }\n return (\n <Fragment>\n <span className=\"tree-item-title\" data-value={nodeData[fieldNames.value]}>\n {labelRender?.(nodeData) || nodeData?.[fieldNames.label]}\n </span>\n {menuOptions.length > 0 && (\n <DropdownMenuWrapper menuList={menuOptions} placement=\"bottomRight\">\n <MoreOutlined />\n </DropdownMenuWrapper>\n )}\n </Fragment>\n );\n }\n const menuOptions = props.menuOptions?.tile?.({\n ...nodeData,\n [fieldNames.label]: stringLabel,\n });\n\n return (\n <Fragment>\n <span className=\"tree-item-title\" data-value={nodeData[fieldNames.value]}>\n {labelRender?.(nodeData) || nodeData?.[fieldNames.label]}\n </span>\n {menuOptions ? (\n <ButtonOperate\n gap={5}\n {...menuOptions}\n className={classNames('tree-item-title-operate', menuOptions.className)}\n />\n ) : null}\n </Fragment>\n );\n });\n\n const onChangeDebounce = hooks.useDebounceCallback((value: string) => {\n setTreeSearchValue(value);\n props.onSearchValueChange?.(value);\n }, 300);\n\n const onSearchChange = hooks.useCallbackRef((e: React.ChangeEvent<HTMLInputElement>) => {\n onChangeDebounce(e.target.value);\n });\n\n const iconHandle = hooks.useCallbackRef((treeData) => {\n if (!props.icon) return null;\n if (isValidElement(props.icon)) return props.icon;\n const isLeafFlag = isLeafNode(treeData.data);\n return props.icon({\n ...treeData,\n isParent: !isLeafFlag,\n isLeaf: isLeafFlag,\n });\n });\n\n const treeFieldNames = useMemo(() => {\n return {\n title: fieldNames.label,\n key: fieldNames.value,\n children: fieldNames.children,\n };\n }, [fieldNames]);\n const showTree = treeData.length > 0 && state.requestStatus !== 'request-error';\n const commonProps = {\n showLine: { showLeafIcon: false },\n titleRender,\n blockNode: true,\n switcherIcon: <CaretDownFilled />,\n onDrop: (info) => {\n if (onDropPrev) {\n const boo = onDropPrev(info);\n if (!boo) return;\n }\n const { dataList, dragNodeData } = onTreeDrop(originalDataList, fieldNames, info);\n onDropNodeHandle?.(dragNodeData);\n onChangeSelectorList(dataList);\n },\n expandedKeys: treeExpandedKeys,\n ...otherProps,\n fieldNames: treeFieldNames,\n treeData,\n onExpand,\n loadData: props.loadDataFlag ? loadData : undefined,\n style: { width: '100%' },\n icon: iconHandle,\n onClick: (e) => {\n if (clickParentNodeToggleExpand) {\n let targetEle = e.target;\n let value = targetEle.dataset.value;\n if (isUndefinedOrNull(value)) {\n targetEle = dom.findParentsElement(e.target, (node: Element) => {\n return (\n node.classList?.contains('tree-item-title') || node.classList?.contains('ant-tree-treenode')\n );\n });\n value = targetEle.dataset.value;\n }\n if (!isUndefinedOrNull(value)) {\n const target = state.treeTiledArrayMap[value];\n if (target?.[fieldNames.children] && target[fieldNames.children].length > 0) {\n const treeExpandedTarget = treeExpandedKeys.includes(value);\n if (treeExpandedTarget) {\n const newList = array.arrayRemove(treeExpandedKeys, value);\n setTreeExpandedKeys([...newList]);\n } else {\n setTreeExpandedKeys([...treeExpandedKeys, value]);\n }\n }\n }\n }\n },\n };\n\n const checkedProps = {\n onCheck: onTreeChangeHandle,\n checkable,\n checkedKeys: valueList,\n };\n\n const selectedProps = {\n onSelect: onTreeChangeHandle,\n multiple: false,\n selectedKeys: valueList,\n };\n const sceneProps = checkable ? checkedProps : selectedProps;\n const cName = classNames('v-tree-wrapper', `v-tree-wrapper-menu-${menuTriggerTypeNew}`, className);\n const isSearchEmpty = state.treeList.length > 0 && !showTree && treeSearchValue;\n return (\n <div className={cName} style={style}>\n {!!showSearch && (\n <div className=\"v-tree-wrapper-search-area\" style={searchStyle}>\n <InputSearchWrapper\n className=\"v-tree-wrapper-search\"\n placeholder={isUndefinedOrNull(searchPlaceholder) ? '搜索' : searchPlaceholder}\n onChange={onSearchChange}\n value={treeSearchValue}\n allowClear\n />\n {!!props.searchExtraElement && (\n <span className=\"v-tree-wrapper-search-extra\">{props.searchExtraElement}</span>\n )}\n </div>\n )}\n\n {showTree ? (\n <div className=\"v-tree-wrapper-tree-wrapper\">\n <Spin spinning={state.requestStatus === 'request-progress'} />\n <Tree {...sceneProps} {...commonProps} className=\"v-tree-wrapper-tree\"></Tree>\n </div>\n ) : (\n <RequestStatus\n status={state.requestStatus}\n loading={loading}\n messageConfig={{\n 'request-success': isSearchEmpty ? '搜索结果为空' : '暂无数据',\n 'request-error': state.requestErrorMessage,\n ...requestMessageConfig,\n }}\n errorButton={\n <Button type=\"primary\" onClick={startDataSourceRequest}>\n 重新获取数据\n </Button>\n }\n />\n )}\n </div>\n );\n});\n","import type { TPlainObject } from '@flatbiz/utils';\nimport { attachPropertiesToComponent } from '@flatbiz/utils';\nimport type { ForwardRefExoticComponent, RefAttributes } from 'react';\nimport { getTreeDataList } from './hooks';\nimport type { TreeWrapperProps, TreeWrapperRefApi } from './tree-wrapper';\nimport { TreeWrapper as TreeWrapperInner } from './tree-wrapper';\nexport type { TreeServiceConfig, TreeWrapperProps } from './tree-wrapper';\n/**\n * Tree包装组件,默认返回父节点,可配置不返回\n * @param props\n * @returns\n * ```\n * 1. treeNode内置字段说明(如需要相关功能,可在接口中添加固定字段)\n * a. disabled 禁掉响应\n * b. isLeaf 设置为叶子节点 (设置了 loadData 时有效)。为 false 时会强制将其作为父节点\n * c. disableCheckbox checkable模式下,treeNode复选框是否可选\n * 2. 当设置selectorTreeList属性后,serviceConfig将失效\n * 3. checkable=true,为多选模式\n * 4. 设置value后,组件显示受控\n * 5. 设置loadDataFlag=true,会动态获取children,当treeNode中包含isLeaf=true字段,表示为叶子节点,没有children了\n * 6. 内置 onDrop 事件已处理数组排序,通过 onDropNodeHandle 事件可获取操作节点排序数据;自定义onDrop后,内置onDrop失效\n * ```\n */\nexport const TreeWrapper: ForwardRefExoticComponent<TreeWrapperProps & RefAttributes<TreeWrapperRefApi>> & {\n getTreeDataList: (modelKey: string) => TPlainObject[];\n} = attachPropertiesToComponent(TreeWrapperInner, {\n /**\n * 获取树形原数据\n * ```\n * 参数 modelKey 与 TreeWrapper属性 modelKey相同,才能获取数据\n * ```\n */\n getTreeDataList: getTreeDataList,\n});\n"],"names":["defaultState","treeList","treeTiledArray","treeTiledArrayMap","queryIsEmpty","TreeWrapperModel","actions","setTreeList","params","state","treeToArray","childrenName","arrayToMap","valueName","requestStatus","resetTreeList","changeRequestStatus","status","requestErrorMessage","errorMessage","undefined","treeListAppendChildren","tiledArray","target","value","_isArray","appendList","length","isLeaf","treeWrapperModels","treeWrapperModel","key","Model","getTreeDataList","modelKey","getState","getDefaultExpandAllKeys","fieldNames","allValues","children","filter","item","childrenValue","map","getExpandedKeys","treeToTiledArray","treeLeafParentsArray","parentValue","getVauleList","data","labelInValueFieldNames","tempList","isUndefinedOrNull","_isObject","onTreeDrop","dataList","info","dropKey","node","dragKey","dragNode","dropPos","pos","split","dropPosition","Number","treeKeyName","treeChildrenName","loop","callback","i","cloneState","dragObj","index","arr","splice","dropToGap","unshift","props","expanded","ar","_item","dragNodeData","dorpNodeId","_tree$walkThroughTree","id","_tree","walkThroughTree","_parent","tileList","find","parentId","getActualSelectKeyList","checkedValueList","chidlrenKey","valueKey","leafValueDataMap","hasChildrenList","retainHasChildrenValueList","forEach","_treeTiledArrayMap$it","isNotEmptyArray","push","childrenTiledList","Object","keys","targetList","temp","removeTargetNodeAndAllChildrenNode","awitDeleteNode","awitDeleteTieldDataMap","treeToTiledMap","removeAllSelectLeafNode","awitDeleteCheckedValueMap","_treeTiledArrayMap$it2","childrenList","targetMap","_extends","removeAllParentNode","completionParentChildrenNode","values","concat","_treeTiledArrayMap$it3","Array","from","Set","compareArrays","arr1","arr2","sortedArr1","slice","sort","sortedArr2","JSON","stringify","TreeWrapper","forwardRef","ref","style","serviceConfig","effectDependencyList","selectorTreeList","onChange","_props$checkableRespo","checkableResponseParentNode","checkable","onSelectorTreeListChange","onRequestResponseChange","treeItemDataAdapter","searchValue","showSearch","searchPlaceholder","requestMessageConfig","labelInValue","disabledCanUse","menuLayoutType","menuTriggerType","initRootExpand","searchResultType","onDropNodeHandle","onDropPrev","labelRender","searchStyle","className","defaultExpandAll","menus","customSearchRule","checkableType","clickParentNodeToggleExpand","disableNodeSelect","required","executeOnChangeInRenderFirstValue","otherProps","_objectWithoutPropertiesLoose","_excluded","hasSelectorTreeList","hasOwnProperty","newServiceConfig","newEffectDependencyList","_useState","useState","treeExpandedKeys","setTreeExpandedKeys","_treeWrapperModel$use","useStore","_fbaHooks$useSafeStat","fbaHooks","useSafeState","loading","setLoading","requestPreKey","searchTypeHighlight","useMemo","label","menuLayoutTypeNew","menuTriggerTypeNew","responseFirstRef","useRef","innerValueListRef","labelInValueFieldNamesMerge","_useState2","treeSearchValue","setTreeSearchValue","valueList","useEffectCustom","current","originalList","_dataList$push","innerExpandedKeys","getTreeExpandedKeys","valueIsEmpty","serviceResponseHandle","respData","result","onRequestResultAdapter","list","_get","console","warn","startDataSourceRequest","_hooks","useCallbackRef","Promise","$return","$error","requiredParamsKeys","isEmpty","_respData","respDataListNew","$Try_1_Post","$boundEx","$Try_1_Catch","error","message","onRequest","Error","_extend","join","$Try_2_Post","$Try_2_Catch","window","resolve","then","$await_4","$await_5","onChangeSelectorList","allState","refresh","newTreeExpandedKeys","includes","targetKeys","useUpdateEffect","labelValue","String","toLowerCase","treeExpandedKeysNew","useImperativeHandle","onClearSelectorList","getTreeTiledArray","getTreeTiledArrayMap","onChangeExpandedKeys","onSelectAll","onCancelSelectAll","onExpandedAll","onCancelExpandedAll","onExpand","expandedKeys","onInnerChange","selectedKey","operateNodeData","operateAllNodeDataList","operateInfo","toArray","nodeValue","onTreeChangeHandle","checkedData","finalCheckedValueList","completeCheckedValueList","checkStrictly","checked","x","operateNode","propsCompleteValues","completeCheckedItemList","lvValue","lvLabel","finalCheckedList","_ref","treeItemDataAdapterHandle","dataItem","originalDataList","resultList","treeFilter","_node$fieldNames$labe","indexOf","treeData","_extends2","adapterItem","disabled","strTitle","titleDom","_isString","strTitleNew","beforeStr","substring","afterStr","centerStr","_jsxs","_classNames","_jsx","_treeItemName","_disabled","loadData","reject","_props$loadDataServic","_props$loadDataServic2","_props$loadDataServic3","respDataList","$Try_3_Post","$Try_3_Catch","loadDataServiceConfig","getParams","$await_6","isLeafNode","nodeData","loadDataFlag","loadHasChildren","hasChildren","titleRender","_extends3","_props$menuOptions3","_extends6","stringLabel","buttonOperateConfig","operateList","Fragment","ButtonOperate","gap","dropdownMenuProps","placement","isFixed","_props$menuOptions","menuOptions","fold","_props$menuOptions2","_props$menuOptions2$m","_extends4","call","_extends5","getMenuOptions","DropdownMenuWrapper","menuList","_MoreOutlined","tile","onChangeDebounce","useDebounceCallback","onSearchValueChange","onSearchChange","e","iconHandle","icon","isValidElement","isLeafFlag","isParent","treeFieldNames","title","showTree","commonProps","showLine","showLeafIcon","blockNode","switcherIcon","_CaretDownFilled","onDrop","boo","_onTreeDrop","width","onClick","targetEle","dataset","dom","findParentsElement","_node$classList","_node$classList2","classList","contains","treeExpandedTarget","newList","_array","arrayRemove","checkedProps","onCheck","checkedKeys","selectedProps","onSelect","multiple","selectedKeys","sceneProps","cName","isSearchEmpty","InputSearchWrapper","placeholder","allowClear","searchExtraElement","Spin","spinning","Tree","RequestStatus","messageConfig","errorButton","Button","type","attachPropertiesToComponent","TreeWrapperInner"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["@flatbiz/antd/src/tree-wrapper/model.ts","@flatbiz/antd/src/tree-wrapper/hooks.ts","@flatbiz/antd/src/tree-wrapper/utils.ts","@flatbiz/antd/src/tree-wrapper/tree-wrapper.tsx","@flatbiz/antd/src/tree-wrapper/index.ts"],"sourcesContent":["import { isArray } from '@dimjs/lang';\nimport { type API, type ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport type { TAny } from '@flatbiz/utils';\nimport { arrayToMap, treeToArray, type TPlainObject, type TSetDefaultDefined } from '@flatbiz/utils';\nimport { type TreeProps } from 'antd';\nimport { TRequestStatus } from '../request-status';\n\nexport type ModelState = {\n treeList: TSetDefaultDefined<TreeProps['treeData'], []>;\n treeTiledArray: TPlainObject[];\n treeTiledArrayMap: TPlainObject;\n queryIsEmpty: boolean;\n requestStatus?: TRequestStatus;\n requestErrorMessage?: string;\n};\n\ntype ModelActionParams = {\n setTreeList: {\n treeList: ModelState['treeList'];\n childrenName: string;\n valueName: string;\n };\n resetTreeList: void;\n changeRequestStatus: {\n status: TRequestStatus;\n errorMessage?: string;\n };\n treeListAppendChildren: {\n value: string | number;\n appendList: TPlainObject[];\n childrenName: string;\n valueName: string;\n };\n};\n\nconst defaultState: ModelState = {\n treeList: [],\n treeTiledArray: [],\n treeTiledArrayMap: {},\n queryIsEmpty: false,\n};\n\nconst TreeWrapperModel: ModelType<ModelState, ModelActionParams> = {\n actions: {\n setTreeList: (params) => {\n return (state) => {\n state.treeList = params.treeList || [];\n state.treeTiledArray = treeToArray(state.treeList, params.childrenName);\n state.treeTiledArrayMap = arrayToMap(state.treeTiledArray, params.valueName);\n state.requestStatus = 'request-success';\n };\n },\n resetTreeList: () => {\n return (state) => {\n state.treeList = [];\n state.treeTiledArray = [];\n state.treeTiledArrayMap = {};\n };\n },\n changeRequestStatus: (params) => {\n return (state) => {\n state.requestStatus = params.status;\n if (params.status === 'request-error') {\n state.treeList = [];\n state.treeTiledArray = [];\n state.treeTiledArrayMap = {};\n state.requestErrorMessage = params.errorMessage || '数据查询异常';\n } else {\n state.requestErrorMessage = undefined;\n }\n };\n },\n treeListAppendChildren: (params) => {\n return (state) => {\n const tiledArray = treeToArray(state.treeList, params.childrenName);\n const treeTiledArrayMap = arrayToMap(tiledArray, params.valueName);\n const target = treeTiledArrayMap[params.value];\n if (target) {\n if (isArray(params.appendList) && params.appendList.length > 0) {\n target[params.childrenName] = params.appendList;\n } else {\n target.isLeaf = true;\n }\n }\n state.treeTiledArray = tiledArray;\n state.treeTiledArrayMap = treeTiledArrayMap;\n };\n },\n },\n state: defaultState,\n};\n\nconst treeWrapperModels: Record<string, API<ModelType<ModelState, ModelActionParams, TAny>>> = {};\n\n/**\n * ```\n * 使用方式\n * const [state, actions] = useTreeWrapperModel('key值').useStore();\n * ```\n */\nexport const treeWrapperModel = (key: string) => {\n if (!treeWrapperModels[key]) {\n treeWrapperModels[key] = Model(TreeWrapperModel);\n }\n return treeWrapperModels[key];\n};\n","import { type TPlainObject } from '@flatbiz/utils';\nimport { treeWrapperModel } from './model';\n\nexport const getTreeDataList = (modelKey: string) => {\n const state = treeWrapperModel(modelKey).getState();\n return state.treeList as TPlainObject[];\n};\n","import { isArray, isObject } from '@dimjs/lang';\nimport { cloneState } from '@dimjs/model';\nimport { tree } from '@dimjs/utils';\nimport {\n isNotEmptyArray,\n isUndefinedOrNull,\n treeLeafParentsArray,\n treeToArray,\n treeToTiledArray,\n treeToTiledMap,\n type LabelValueItem,\n type TAny,\n type TPlainObject,\n} from '@flatbiz/utils';\nimport { type DataNode } from 'antd/es/tree';\nimport { dequal } from 'dequal';\n\nexport const getDefaultExpandAllKeys = (\n treeList: TPlainObject[],\n fieldNames: { label: string; value: string; children: string },\n) => {\n const allValues = treeToArray(treeList, fieldNames.children)\n .filter((item) => {\n const childrenValue = item[fieldNames.children] as TAny[] | undefined;\n return childrenValue && childrenValue.length > 0;\n })\n .map((item) => {\n return item[fieldNames.value];\n });\n return allValues as Array<string | number>;\n};\n\nexport const getExpandedKeys = (\n value: string | number,\n treeList: TPlainObject[],\n fieldNames: { label: string; value: string; children: string },\n) => {\n const tiledArray = treeToTiledArray(treeList, fieldNames);\n return treeLeafParentsArray(value, tiledArray, true, {\n value: 'value',\n parentValue: 'parentValue',\n })\n .filter((item) => {\n const childrenValue = item[fieldNames.children] as TAny[] | undefined;\n return childrenValue && childrenValue.length > 0;\n })\n .map((item) => item.value);\n};\n\nexport const getVauleList = (data, labelInValueFieldNames: LabelValueItem<string | number>) => {\n let tempList = isUndefinedOrNull(data) ? [] : data;\n tempList = isArray(tempList) ? tempList : [tempList];\n tempList = tempList.map((item) => {\n if (isObject(item)) return item[labelInValueFieldNames.value];\n return item;\n });\n return tempList as Array<string | number>;\n};\n\nexport const array2map = (data, labelInValueFieldNames: LabelValueItem<string | number>) => {\n const list = getVauleList(data, labelInValueFieldNames);\n const map = {};\n list.forEach((item) => {\n map[item] = true;\n });\n return map;\n};\n\n/**\n * value的类型包括\n * string、number、\n * Array<string | number>、{ label: string, value: string | nuber }、\n * Array<{ label: string, value: string | nuber }>\n * 将数组转成对象,深度比较时不用考虑顺序问题\n * @param value1\n * @param value2\n * @returns\n */\nexport const treeWrapperValueDeepEqual = (\n value1: TAny,\n value2: TAny,\n labelInValueFieldNames: LabelValueItem<string | number>,\n) => {\n if (isUndefinedOrNull(value1) && isUndefinedOrNull(value2)) return true;\n const object1 = array2map(value1, labelInValueFieldNames);\n const object2 = array2map(value2, labelInValueFieldNames);\n return dequal(object1, object2);\n};\n\ntype OnTreeDropMethod = (\n dataList: TPlainObject[],\n fieldNames: { value: string; children: string },\n info: TAny,\n) => {\n dataList: TPlainObject[];\n dragNodeData: {\n parentId?: string | number;\n id: string | number;\n index: number;\n };\n};\n\nexport const onTreeDrop: OnTreeDropMethod = (dataList, fieldNames, info) => {\n const dropKey = info.node.key;\n const dragKey = info.dragNode.key;\n const dropPos = info.node.pos.split('-');\n const dropPosition = info.dropPosition - Number(dropPos[dropPos.length - 1]);\n const treeKeyName = fieldNames.value;\n const treeChildrenName = fieldNames.children;\n\n const loop = (\n data: DataNode[],\n key: React.Key,\n callback: (node: DataNode, i: number, data: DataNode[]) => void,\n ) => {\n for (let i = 0; i < data.length; i++) {\n if (data[i][treeKeyName] === key) {\n return callback(data[i], i, data);\n }\n if (data[i][treeChildrenName]) {\n loop(data[i][treeChildrenName]!, key, callback);\n }\n }\n };\n const data = cloneState(dataList) as DataNode[];\n\n // Find dragObject\n let dragObj: DataNode;\n loop(data, dragKey, (item, index, arr) => {\n arr.splice(index, 1);\n dragObj = item;\n });\n\n if (!info.dropToGap) {\n // Drop on the content\n loop(data, dropKey, (item) => {\n item[treeChildrenName] = item[treeChildrenName] || [];\n // where to insert 示例添加到头部,可以是随意位置\n item[treeChildrenName].unshift(dragObj);\n });\n } else if (\n (info.node.props.children || []).length > 0 && // Has children\n info.node.props.expanded && // Is expanded\n dropPosition === 1 // On the bottom gap\n ) {\n loop(data, dropKey, (item) => {\n item[treeChildrenName] = item[treeChildrenName] || [];\n // where to insert 示例添加到头部,可以是随意位置\n item[treeChildrenName].unshift(dragObj);\n // in previous version, we use item.children.push(dragObj) to insert the\n // item to the tail of the children\n });\n } else {\n let ar: DataNode[] = [];\n let i: number;\n loop(data, dropKey, (_item, index, arr) => {\n ar = arr;\n i = index;\n });\n if (dropPosition === -1) {\n ar.splice(i!, 0, dragObj!);\n } else {\n ar.splice(i! + 1, 0, dragObj!);\n }\n }\n return {\n dataList: data,\n dragNodeData: dragNodeData(dragKey, data, fieldNames),\n };\n};\n\nexport const dragNodeData = (\n dorpNodeId: TAny,\n dataList: TAny[],\n fieldNames: { value: string; children: string },\n) => {\n const id = fieldNames.value;\n const children = fieldNames.children;\n tree.walkThroughTree<TPlainObject, TAny>(\n { [id]: undefined, [children]: dataList } as TAny,\n (node, index, _parent) => {\n node['__index'] = index;\n node['__parentId'] = _parent?.[id];\n },\n children,\n );\n const tileList = treeToArray(dataList, children);\n const target = tileList.find((item) => item[id] === dorpNodeId);\n return {\n parentId: target?.['__parentId'],\n id: target?.[id],\n index: target?.['__index'],\n };\n};\n\n/**\n * 由于树节点过滤后,选中了父节点不一定是全部子节点,此处进行筛查\n */\nexport const getActualSelectKeyList = (\n checkedValueList: Array<string | number>,\n treeTiledArrayMap: TPlainObject,\n chidlrenKey: string,\n valueKey: string,\n) => {\n const leafValueDataMap: TPlainObject = {};\n const hasChildrenList: Array<string | number> = [];\n const retainHasChildrenValueList: Array<string | number> = [];\n checkedValueList.forEach((item) => {\n if (isNotEmptyArray(treeTiledArrayMap[item]?.[chidlrenKey])) {\n hasChildrenList.push(item);\n } else {\n leafValueDataMap[item] = item;\n }\n });\n if (hasChildrenList.length > 0) {\n hasChildrenList.forEach((item) => {\n const childrenTiledList = treeToArray(treeTiledArrayMap[item][chidlrenKey], chidlrenKey);\n if (Object.keys(leafValueDataMap).length > childrenTiledList.length) {\n const targetList = childrenTiledList.filter((item) => {\n return checkedValueList.find((temp) => temp === item[valueKey]);\n });\n if (targetList.length === childrenTiledList.length) {\n retainHasChildrenValueList.push(item);\n }\n }\n });\n }\n\n return checkedValueList.filter((item) => {\n return retainHasChildrenValueList.find((temp) => temp == item) || leafValueDataMap[item];\n });\n};\n\n/** 移除指定节点以及所有子节点 */\nexport const removeTargetNodeAndAllChildrenNode = (\n checkedValueList: Array<string | number>,\n awitDeleteNode: TPlainObject,\n chidlrenKey: string,\n valueKey: string,\n) => {\n const awitDeleteTieldDataMap: TPlainObject = treeToTiledMap([awitDeleteNode], {\n value: valueKey,\n children: chidlrenKey,\n });\n return checkedValueList.filter((item) => {\n return !awitDeleteTieldDataMap[item];\n });\n};\n\n/** 移除父节点全选下的叶子节点 */\nexport const removeAllSelectLeafNode = (\n checkedValueList: Array<string | number>,\n treeTiledArrayMap: TPlainObject,\n chidlrenKey: string,\n valueKey: string,\n) => {\n let awitDeleteCheckedValueMap: TPlainObject = {};\n checkedValueList.forEach((item) => {\n const childrenList = treeTiledArrayMap[item]?.[chidlrenKey];\n if (isNotEmptyArray(childrenList)) {\n // hasChildrenList.push(item);\n const targetMap = treeToTiledMap(childrenList, {\n value: valueKey,\n children: chidlrenKey,\n });\n awitDeleteCheckedValueMap = {\n ...awitDeleteCheckedValueMap,\n ...targetMap,\n };\n }\n });\n return checkedValueList.filter((item) => !awitDeleteCheckedValueMap[item]);\n};\n\n/** 移除所有的父节点 */\nexport const removeAllParentNode = (\n checkedValueList: Array<string | number>,\n treeTiledArrayMap: TPlainObject,\n chidlrenKey: string,\n) => {\n return checkedValueList.filter((item) => {\n return !isNotEmptyArray(treeTiledArrayMap[item][chidlrenKey]);\n });\n};\n\n/** values中的数据可能存在缺少父节点下的子节点情况,此处补齐 */\nexport const completionParentChildrenNode = (\n values: Array<string | number>,\n treeTiledArrayMap: TPlainObject,\n chidlrenKey: string,\n valueKey: string,\n) => {\n let allValues = [...values];\n values.forEach((item) => {\n const childrenList = treeTiledArrayMap[item]?.[chidlrenKey];\n if (isNotEmptyArray(childrenList)) {\n const targetList = treeToArray(childrenList, chidlrenKey);\n allValues = allValues.concat(targetList.map((temp) => temp[valueKey]));\n }\n });\n return Array.from(new Set(allValues));\n};\n","import { CaretDownFilled, MoreOutlined } from '@ant-design/icons';\nimport { isArray, isString } from '@dimjs/lang';\nimport { cloneState } from '@dimjs/model';\nimport { array, classNames, extend, get } from '@dimjs/utils';\nimport { Button, message, Spin, Tree, type TreeProps } from 'antd';\nimport {\n forwardRef,\n Fragment,\n isValidElement,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type DependencyList,\n type ReactElement,\n} from 'react';\n\nimport { dom, isUndefinedOrNull, toArray, treeFilter, type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { treeWrapperModel } from './model';\n\nimport { ButtonOperate, ButtonOperateItem, ButtonOperateProps } from '../button-operate';\nimport { DropdownMenuItem, DropdownMenuWrapper } from '../dropdown-menu-wrapper';\nimport { fbaHooks } from '../fba-hooks';\nimport { InputSearchWrapper } from '../input-search-wrapper';\nimport { RequestStatus, TRequestStatusProps } from '../request-status';\nimport './style.less';\nimport {\n completionParentChildrenNode,\n getActualSelectKeyList,\n getDefaultExpandAllKeys,\n getExpandedKeys,\n getVauleList,\n onTreeDrop,\n removeAllParentNode,\n removeAllSelectLeafNode,\n removeTargetNodeAndAllChildrenNode,\n} from './utils';\n\ntype TreeWrapperValue =\n | string\n | number\n | Array<string | number>\n | TPlainObject<string | number>\n | Array<TPlainObject<string | number>>;\n\nexport type TreeServiceConfig = {\n params?: TPlainObject;\n requiredParamsKeys?: string[];\n onRequest?: (params?: TAny) => TAny;\n /**\n * 响应数据适配器\n */\n onRequestResultAdapter?: (respData: TAny) => TPlainObject[];\n};\nexport type TreeLoadDataServiceConfig = {\n getParams?: (dataItem: TPlainObject) => TPlainObject;\n onRequest: (params: TPlainObject) => TAny;\n /**\n * 响应数据适配器\n */\n onRequestResultAdapter?: (respData: TAny) => TPlainObject[];\n};\n\nexport type TreeWrapperMenuItem = {\n title: string;\n onClick: (dataItem: TPlainObject, event) => void;\n icon?: ReactElement;\n};\n\nexport type TreeWrapperProps = Omit<\n TreeProps,\n | 'treeData'\n | 'onExpand'\n | 'selectedKeys'\n | 'checkedKeys'\n | 'onCheck'\n | 'onSelect'\n | 'fieldNames'\n | 'multiple'\n | 'loadData'\n | 'icon'\n | 'defaultCheckedKeys'\n | 'defaultExpandParent'\n | 'defaultSelectedKeys'\n> & {\n /** 唯一值,用于缓存数据 */\n modelKey: string;\n /**\n * 字段映射\n * ```\n * 默认值:\n * label = 'label'\n * value = 'value'\n * children = 'children'\n *\n * 如果未设置list,则说明接口返回数据为数组\n * 如果返回数据存在多级,可通过设置 list='a.b.list'\n * ```\n */\n fieldNames?: {\n label?: string;\n value?: string;\n children?: string;\n list?: string;\n };\n /**\n * useEffect依赖项数组,用于重新发起获取接口数据\n */\n effectDependencyList?: DependencyList;\n /**\n * 请求服务需求的数据,当设置`selectorTreeList`后无效果\n */\n serviceConfig?: TreeServiceConfig;\n /**\n * 是否开启异步加载\n */\n loadDataFlag?: boolean;\n /**\n * 异步加载数据配置\n * ```\n * 1. 会通过fieldNames配置label、value、children进行转义\n * 2. fieldNames.list 配置在此处无效\n * ```\n */\n loadDataServiceConfig?: TreeLoadDataServiceConfig;\n /**\n * 当设置selectorTreeList后,serviceConfig将失效\n * ```\n * 1. 不支持异步数据,异步使用serviceConfig方式\n * ```\n */\n selectorTreeList?: TPlainObject[];\n /**\n * 通过服务获取数据后回调,当设置`selectorList`后无效果\n * ```\n * 相同modelKey,同时发起多个渲染时,只有第一个会执行 onSelectorTreeListChange 回调\n * ```\n */\n onSelectorTreeListChange?: (dataList: TPlainObject[]) => void;\n /** 接口响应数据变更 */\n onRequestResponseChange?: (data: TAny) => void;\n onChange?: (\n selectedKey?: TreeWrapperValue,\n operateNodeData?: TPlainObject[] | TPlainObject,\n operateAllNodeDataList?: TPlainObject[],\n extraData?: TPlainObject,\n ) => void;\n\n /**\n * 搜索关键字,打开tree折叠过滤关键字\n */\n searchValue?: string;\n /**\n * checkable模式下,onChange是否返回父节点,默认值true\n * @description 已过期,请使用 checkableType 配置\n * ```\n * 注意:checkStrictly = true,checkableResponseParentNode配置失效\n * ```\n */\n checkableResponseParentNode?: boolean;\n /**\n * 节点选择类型(默认值:'2'), 多选时有效\n * ```\n * '1' 表示返回所有选中的节点(包含父节点和叶子节点)\n * '2' 表示只返回叶子节点\n * '3' 表示当叶子节点全选时,返回父节点,不返回下面的叶子节点\n *\n * 注意:checkStrictly = true,checkableType配置失效\n * ```\n */\n checkableType?: '1' | '2' | '3';\n /**\n * 菜单结构类型 tile/平铺 fold/折叠;默认:fold\n * @deprecated 已过期 4.3.0版本移除,请使用 menus\n * ```\n * 自定义设置 titleRender 后失效\n * ```\n */\n menuLayoutType?: 'tile' | 'fold';\n /**\n * 获取菜单类别\n * @param dataItem\n * @deprecated 已过期 4.3.0版本移除,请使用 menus\n * @returns\n * ```\n * 1. menuLayoutType = tile 无效\n * 2. 自定义设置 titleRender 后失效\n * ```\n */\n getMenuOptions?: (dataItem: TPlainObject) => DropdownMenuItem[] | ButtonOperateItem[];\n /**\n * 根据 menuLayoutType 类型赋值\n * @deprecated 已过期 4.3.0版本移除,请使用 menuOptions\n */\n menuOptions?: {\n tile?: (dataItem: TPlainObject) => ButtonOperateProps;\n fold?: (dataItem: TPlainObject) => DropdownMenuItem[];\n };\n /**\n * 菜单触发类型,默认:click\n * ```\n * 自定义设置 titleRender 后失效\n * ```\n */\n menuTriggerType?: 'click' | 'hover';\n menus?: (dataItem) => ButtonOperateProps;\n\n showSearch?: boolean;\n onSearchValueChange?: (searchValue?: string) => void;\n searchPlaceholder?: string;\n searchStyle?: CSSProperties;\n icon?: (data: { isParent: boolean; isLeaf: boolean; [key: string]: TAny }) => ReactElement;\n /**\n * 状态文案配置\n */\n requestMessageConfig?: TRequestStatusProps['messageConfig'];\n /**\n * value格式\n *```\n * 1. string 、number\n * 2. Array<string | number>\n * 3. lableInValue = true,根据labelInValueFieldNames配置格式\n * 4. lableInValue = true,Array<labelInValueFieldNames配置>\n * ```\n */\n value?: TreeWrapperValue;\n /**\n * 选择的节点数据,是否包含label信息\n * ```\n * 默认选择的节点只有value数据\n * ```\n */\n labelInValue?: boolean;\n /**\n * ```\n * @deprecated 废弃\n * lableInValue = true,onChange输出数据字段名称,默认:{ label: string; value: string|number }\n * ```\n */\n labelInValueFieldNames?: { label: string; value: string };\n /**\n * 禁用状态是否可选,默认值true\n * 当dateItem中包含 disabled 则数据为禁用状态\n */\n disabledCanUse?: boolean;\n\n /** treeItem数据适配器 */\n treeItemDataAdapter?: (dataItem: TPlainObject) => TPlainObject;\n /** 搜索位置额外元素 */\n searchExtraElement?: ReactElement;\n /** 有唯一跟节点时,初始化是否展开,默认值:false */\n initRootExpand?: boolean;\n /** 搜素过滤方式,高亮 | 过滤;默认:filter */\n searchResultType?: 'highlight' | 'filter';\n /**\n * 拖拽节点处理,自定义onDrop事件后,失效\n * ```\n * 参数\n * 1. parentId 拖拽结束位置父节点ID\n * 2. id 当前拖拽节点ID\n * 3. index 拖拽结束位置所在数组下标\n * ```\n */\n onDropNodeHandle?: (result: { parentId?: string | number; id: string | number; index: number }) => void;\n /**\n * 拖拽排序前判断,如果返回 true,可排序,其他不可排序\n * ```\n * 可用于需要权限控制判断\n * ```\n */\n onDropPrev?: (info) => boolean;\n /**\n * 标签渲染\n * ```\n * 1. 自定义设置 titleRender 后失效\n * 2. 与titleRender的区别\n * a. 设置 labelRender 后,menuLayout有效\n * b. 设置 titleRender 后,menuLayout失效\n * ```\n */\n labelRender?: (nodeData: TPlainObject) => ReactElement;\n /**\n * 自定义搜索规则\n */\n customSearchRule?: (nodeData: TPlainObject, searchValue?: string) => boolean;\n\n /**\n * 点击父节点 是否切换折叠\n * ```\n * 1. 设置 titleRender 后,此配置失效\n * ```\n */\n clickParentNodeToggleExpand?: boolean;\n /**\n * 禁用节点选中\n * ```\n * 1. checkable = true,此配置失效\n * 2. 在未设置节点 disabled 属性情况下,满足此配置不会触发onChange事件\n * ```\n */\n disableNodeSelect?: (item: TPlainObject) => boolean;\n /**\n * 是否必选,最后一个不能取消\n * ```\n * 1. 设置 checkable = true 时无效\n * ```\n */\n required?: boolean;\n\n /**\n * 在第一次渲染value时,主动执行一次onChange\n * ```\n * 1. 设置labelInValue = true 时有效\n * 2. 不考虑子父节点的关系\n * ```\n */\n executeOnChangeInRenderFirstValue?: boolean;\n};\n\nconst compareArrays = (arr1, arr2) => {\n const sortedArr1 = arr1.slice().sort();\n const sortedArr2 = arr2.slice().sort();\n return JSON.stringify(sortedArr1) === JSON.stringify(sortedArr2);\n};\n\nexport type TreeWrapperRefApi = {\n onClearSelectorList: () => void;\n getTreeDataList: () => TreeProps['treeData'];\n onChangeExpandedKeys: (expandedKeys: Array<string | number>) => void;\n getTreeTiledArray: () => TPlainObject[];\n getTreeTiledArrayMap: () => TPlainObject;\n /** 选择所有 */\n onSelectAll: () => void;\n /** 取消选择所有 */\n onCancelSelectAll: () => void;\n /** 展开所有 */\n onExpandedAll: () => void;\n /** 取消展开所有 */\n onCancelExpandedAll: () => void;\n};\n\n/**\n * Tree包装组件,默认返回父节点,可配置不返回\n * ```\n * 1. treeNode内置字段说明(如需要相关功能,可在接口中添加固定字段)\n * a. disabled 禁掉响应\n * b. isLeaf 设置为叶子节点 (设置了 loadData 时有效)。为 false 时会强制将其作为父节点\n * c. disableCheckbox checkable模式下,treeNode复选框是否可选\n * 2. 当设置selectorTreeList属性后,serviceConfig将失效\n * 3. checkable=true,为多选模式\n * 4. 设置value后,组件显示受控\n * 5. 设置loadDataFlag=true,会动态获取children,当treeNode中包含isLeaf=true字段,表示为叶子节点,没有children了\n * 6. 内置 onDrop 事件已处理数组排序,通过 onDropNodeHandle 事件可获取操作节点排序数据;自定义onDrop后,内置onDrop失效\n * ```\n */\nexport const TreeWrapper = forwardRef<TreeWrapperRefApi, TreeWrapperProps>((props, ref) => {\n const {\n style,\n serviceConfig,\n effectDependencyList,\n selectorTreeList,\n value,\n onChange,\n modelKey,\n checkableResponseParentNode = true,\n checkable,\n onSelectorTreeListChange,\n onRequestResponseChange,\n treeItemDataAdapter,\n searchValue,\n showSearch,\n searchPlaceholder,\n requestMessageConfig,\n labelInValueFieldNames,\n labelInValue,\n disabledCanUse,\n menuLayoutType,\n menuTriggerType,\n initRootExpand,\n searchResultType,\n onDropNodeHandle,\n onDropPrev,\n labelRender,\n searchStyle,\n className,\n defaultExpandAll,\n menus,\n customSearchRule,\n checkableType,\n clickParentNodeToggleExpand,\n disableNodeSelect,\n required,\n executeOnChangeInRenderFirstValue,\n ...otherProps\n } = props;\n // eslint-disable-next-line no-prototype-builtins\n const hasSelectorTreeList = props.hasOwnProperty('selectorTreeList');\n const newServiceConfig = serviceConfig || {};\n const newEffectDependencyList = effectDependencyList || [];\n const [treeExpandedKeys, setTreeExpandedKeys] = useState<Array<string | number>>([]);\n const [state, actions] = treeWrapperModel(modelKey).useStore();\n const [loading, setLoading] = fbaHooks.useSafeState(false);\n const requestPreKey = `request-progress-${props.modelKey}`;\n const searchTypeHighlight = searchResultType === 'highlight';\n const fieldNames = useMemo(() => {\n return {\n label: 'label',\n value: 'value',\n children: 'children',\n ...props.fieldNames,\n };\n }, [props.fieldNames]);\n const menuLayoutTypeNew = menuLayoutType === undefined ? 'fold' : menuLayoutType;\n const menuTriggerTypeNew = menuTriggerType === undefined ? 'click' : menuTriggerType;\n const responseFirstRef = useRef(true);\n const innerValueListRef = useRef<any[] | undefined>(undefined);\n\n const labelInValueFieldNamesMerge = useMemo(() => {\n return { label: 'label', value: 'value', ...labelInValueFieldNames };\n }, [labelInValueFieldNames]);\n // tree 搜索值\n const [treeSearchValue, setTreeSearchValue] = useState<string | undefined>();\n\n const valueList = useMemo(() => {\n return getVauleList(value, labelInValueFieldNamesMerge);\n }, [labelInValueFieldNamesMerge, value]);\n\n fbaHooks.useEffectCustom(() => {\n if (state.treeList.length > 0) {\n if (\n responseFirstRef.current &&\n labelInValue &&\n executeOnChangeInRenderFirstValue &&\n valueList.length > 0\n ) {\n const dataList: TPlainObject[] = [];\n const originalList: TPlainObject[] = [];\n valueList.forEach((item) => {\n const target = state.treeTiledArrayMap[item];\n if (target) {\n originalList.push(target);\n dataList.push({\n [labelInValueFieldNamesMerge.label]: target[fieldNames.label],\n [labelInValueFieldNamesMerge.value]: target[fieldNames.value],\n });\n }\n });\n if (checkable) {\n props.onChange?.(dataList ? dataList : undefined, originalList);\n } else {\n props.onChange?.(dataList ? dataList[0] : undefined, originalList[0]);\n }\n }\n if (responseFirstRef.current && valueList.length === 0) {\n responseFirstRef.current = false;\n if (defaultExpandAll) {\n setTreeExpandedKeys(getDefaultExpandAllKeys(state.treeList, fieldNames));\n return;\n } else if (initRootExpand && state.treeList.length) {\n setTreeExpandedKeys([state.treeList[0][fieldNames.value]]);\n return;\n }\n }\n if (valueList.length > 0) {\n responseFirstRef.current = false;\n if (innerValueListRef.current) {\n if (!compareArrays(valueList, innerValueListRef.current)) {\n const innerExpandedKeys = getTreeExpandedKeys(valueList, true);\n setTreeExpandedKeys(Array.from(new Set(treeExpandedKeys?.concat(innerExpandedKeys))));\n }\n } else {\n const innerExpandedKeys = getTreeExpandedKeys(valueList, true);\n setTreeExpandedKeys(Array.from(new Set(treeExpandedKeys?.concat(innerExpandedKeys))));\n }\n }\n }\n // 当 valueList 为空时,不去清除treeExpandedKeys数据\n }, [state.treeList, JSON.stringify(valueList)]);\n\n const valueIsEmpty = (data: string | number) => {\n return data === '' || isUndefinedOrNull(data);\n };\n\n const serviceResponseHandle = (respData) => {\n let result: TPlainObject[] = respData;\n if (newServiceConfig.onRequestResultAdapter) {\n result = newServiceConfig.onRequestResultAdapter(respData as unknown as TPlainObject);\n } else if (fieldNames.list) {\n result = get(respData, fieldNames.list, []) || [];\n }\n if (!isArray(result)) {\n console.warn('接口返回数据为非数组结构,确认是否需要配置fieldNames.list进行解析');\n return [];\n }\n return result;\n };\n\n fbaHooks.useEffectCustom(() => {\n setTreeSearchValue(searchValue);\n }, [searchValue]);\n\n const startDataSourceRequest = hooks.useCallbackRef(async () => {\n try {\n if (!newServiceConfig.onRequest) {\n throw new Error('onRequest 调用接口服务不能为空');\n }\n const requiredParamsKeys = newServiceConfig.requiredParamsKeys;\n const params = extend({}, newServiceConfig.params);\n if (requiredParamsKeys) {\n const isEmpty = requiredParamsKeys.find((key) => {\n return valueIsEmpty(params[key] as string | number);\n });\n if (isEmpty) {\n void actions.changeRequestStatus({\n status: 'no-dependencies-params',\n });\n console.warn(`TreeWrapper组件:参数:${requiredParamsKeys.join('、')}不能为空`);\n return;\n }\n }\n try {\n setLoading(true);\n await actions.changeRequestStatus({\n status: 'request-progress',\n });\n window[requestPreKey] = true;\n const _respData = await newServiceConfig.onRequest?.(params);\n onRequestResponseChange?.(_respData);\n const respDataListNew = serviceResponseHandle(_respData);\n if (respDataListNew.length === 0) {\n responseFirstRef.current = false;\n }\n onChangeSelectorList(respDataListNew);\n setLoading(false);\n\n window[requestPreKey] = false;\n } catch (error: TAny) {\n window[requestPreKey] = false;\n setLoading(false);\n void actions.changeRequestStatus({\n status: 'request-error',\n errorMessage: error.message,\n });\n }\n } catch (error: TAny) {\n responseFirstRef.current = false;\n setLoading(false);\n void message.error((error.message as string) || '数据查询异常...');\n }\n });\n\n fbaHooks.useEffectCustom(() => {\n if (hasSelectorTreeList) return;\n // 当无依赖项时,如果存在缓存数据,就不在调用接口\n if (newEffectDependencyList.length) {\n void startDataSourceRequest();\n return;\n }\n const allState = treeWrapperModel(modelKey).getState();\n if (allState.requestStatus === 'request-success') {\n onSelectorTreeListChange?.(allState.treeList);\n return;\n }\n // 判断相同的modelKey是否已经在请求数据中,避免重复请求\n if (!window[requestPreKey]) {\n void startDataSourceRequest();\n } else {\n onSelectorTreeListChange?.(allState.treeList);\n }\n }, newEffectDependencyList);\n\n fbaHooks.useEffectCustom(() => {\n if (hasSelectorTreeList) {\n onChangeSelectorList(selectorTreeList || []);\n }\n }, [selectorTreeList]);\n\n const onChangeSelectorList = hooks.useCallbackRef((dataList: TAny[]) => {\n if (dataList?.length === 0 && state.treeList.length === 0) {\n void actions.changeRequestStatus({ status: 'request-success' });\n return;\n }\n void actions.setTreeList({\n treeList: dataList || [],\n childrenName: fieldNames.children,\n valueName: fieldNames.value,\n });\n onSelectorTreeListChange?.(dataList);\n });\n\n const getTreeExpandedKeys = (valueList: Array<string | number>, refresh?: boolean) => {\n let newTreeExpandedKeys = [] as Array<string | number>;\n valueList.forEach((value) => {\n if (!refresh && treeExpandedKeys?.includes(value)) return;\n const targetKeys = getExpandedKeys(value, state.treeList, fieldNames);\n newTreeExpandedKeys = newTreeExpandedKeys.concat(targetKeys);\n });\n return newTreeExpandedKeys;\n };\n\n hooks.useUpdateEffect(() => {\n if (treeSearchValue) {\n const targetList = state.treeTiledArray.filter((item) => {\n const labelValue = (item[fieldNames.label] || '') as string;\n if (customSearchRule) {\n return customSearchRule(item, treeSearchValue);\n }\n return String(labelValue).toLowerCase().includes(treeSearchValue.toLowerCase());\n });\n const treeExpandedKeysNew = getTreeExpandedKeys(\n targetList.map((item) => item[fieldNames.value]),\n true,\n );\n setTreeExpandedKeys(Array.from(new Set(treeExpandedKeysNew)));\n } else {\n setTreeExpandedKeys([]);\n }\n }, [treeSearchValue]);\n useImperativeHandle(ref, () => {\n return {\n onClearSelectorList: () => {\n void actions.resetTreeList();\n },\n getTreeDataList: () => {\n return state.treeList;\n },\n getTreeTiledArray: () => state.treeTiledArray,\n getTreeTiledArrayMap: () => state.treeTiledArrayMap,\n onChangeExpandedKeys: (dataList) => {\n setTreeExpandedKeys(dataList);\n },\n onSelectAll: () => {\n const targetList = state.treeTiledArray.map((temp) => temp[fieldNames.value]);\n setTreeExpandedKeys(targetList);\n onChange?.(targetList, undefined, state.treeList, undefined);\n },\n onCancelSelectAll: () => {\n setTreeExpandedKeys([]);\n onChange?.(undefined);\n },\n onExpandedAll: () => {\n const targetList = state.treeTiledArray.map((temp) => temp[fieldNames.value]);\n setTreeExpandedKeys(targetList);\n },\n onCancelExpandedAll: () => {\n setTreeExpandedKeys([]);\n },\n };\n });\n\n const onExpand = hooks.useCallbackRef((expandedKeys) => {\n setTreeExpandedKeys(expandedKeys as string[]);\n });\n\n const onInnerChange = (\n selectedKey?: TreeWrapperValue,\n operateNodeData?: TPlainObject[] | TPlainObject,\n operateAllNodeDataList?: TPlainObject[],\n operateInfo?: TPlainObject,\n ) => {\n innerValueListRef.current = toArray(selectedKey);\n if (toArray(selectedKey).length === 0) {\n const nodeValue = operateInfo?.node[fieldNames.value];\n const target = state.treeTiledArrayMap[nodeValue];\n props.onChange?.(undefined, target, [target], operateInfo);\n } else {\n props.onChange?.(selectedKey, operateNodeData, operateAllNodeDataList, operateInfo);\n }\n };\n\n const onTreeChangeHandle = hooks.useCallbackRef((checkedData, operateInfo) => {\n // 最终checkValueList\n let finalCheckedValueList: Array<number | string> = [];\n // 完整checkValueList\n let completeCheckedValueList: Array<number | string> = [];\n\n if (checkable) {\n finalCheckedValueList = props.checkStrictly ? checkedData.checked : checkedData;\n } else {\n finalCheckedValueList = checkedData;\n if (required && !toArray(checkedData).length) {\n return;\n }\n if (disableNodeSelect) {\n const target = state.treeTiledArrayMap[checkedData[0]];\n const x = target ? disableNodeSelect(target) : false;\n if (x) {\n return;\n }\n }\n }\n finalCheckedValueList = toArray(finalCheckedValueList);\n\n if (!checkable) {\n completeCheckedValueList = finalCheckedValueList;\n } else {\n if (showSearch && treeSearchValue && !searchTypeHighlight) {\n // 数据源被过滤情况\n const operateNode = operateInfo?.node;\n if (props.checkStrictly) {\n if (operateInfo.checked == false) {\n finalCheckedValueList = valueList.filter((item) => item != operateNode[fieldNames.value]);\n } else {\n finalCheckedValueList = Array.from(new Set([...valueList, ...finalCheckedValueList]));\n }\n completeCheckedValueList = finalCheckedValueList;\n } else {\n // 非checkStrictly=true情况\n const propsCompleteValues =\n checkableType === '2' || checkableType === '3'\n ? completionParentChildrenNode(\n valueList,\n state.treeTiledArrayMap,\n fieldNames.children,\n fieldNames.value,\n )\n : valueList;\n if (operateInfo.checked == false) {\n finalCheckedValueList = removeTargetNodeAndAllChildrenNode(\n [...propsCompleteValues],\n operateNode,\n fieldNames.children,\n fieldNames.value,\n );\n } else {\n finalCheckedValueList = Array.from(new Set([...propsCompleteValues, ...finalCheckedValueList]));\n }\n completeCheckedValueList = getActualSelectKeyList(\n finalCheckedValueList,\n state.treeTiledArrayMap,\n fieldNames.children,\n fieldNames.value,\n );\n }\n } else {\n // 无搜索情况\n completeCheckedValueList = finalCheckedValueList;\n }\n\n if (!props.checkStrictly) {\n if (checkableType === '2') {\n finalCheckedValueList = removeAllParentNode(\n completeCheckedValueList,\n state.treeTiledArrayMap,\n fieldNames.children,\n );\n } else if (checkableType === '3') {\n finalCheckedValueList = removeAllSelectLeafNode(\n completeCheckedValueList,\n state.treeTiledArrayMap,\n fieldNames.children,\n fieldNames.value,\n );\n } else if (checkableResponseParentNode == false) {\n finalCheckedValueList = removeAllParentNode(\n completeCheckedValueList,\n state.treeTiledArrayMap,\n fieldNames.children,\n );\n } else {\n finalCheckedValueList = completeCheckedValueList;\n }\n }\n }\n\n const completeCheckedItemList = completeCheckedValueList.map((item) => {\n return state.treeTiledArrayMap[item];\n });\n if (labelInValue) {\n const lvValue = labelInValueFieldNamesMerge.value;\n const lvLabel = labelInValueFieldNamesMerge.label;\n const finalCheckedList = finalCheckedValueList.map((item) => {\n return {\n [lvLabel]: state.treeTiledArrayMap[item][fieldNames.label],\n [lvValue]: state.treeTiledArrayMap[item][fieldNames.value],\n };\n });\n if (checkable) {\n onInnerChange(\n finalCheckedList,\n finalCheckedValueList.map((item) => {\n return state.treeTiledArrayMap[item];\n }),\n completeCheckedItemList,\n operateInfo,\n );\n } else {\n onInnerChange(\n finalCheckedList[0],\n state.treeTiledArrayMap[finalCheckedValueList[0]],\n completeCheckedItemList,\n operateInfo,\n );\n }\n } else {\n if (checkable) {\n onInnerChange(\n finalCheckedValueList,\n finalCheckedValueList.map((item) => {\n return state.treeTiledArrayMap[item];\n }),\n completeCheckedItemList,\n operateInfo,\n );\n } else {\n onInnerChange(\n finalCheckedValueList[0],\n state.treeTiledArrayMap[finalCheckedValueList[0]],\n completeCheckedItemList,\n operateInfo,\n );\n }\n }\n });\n\n const treeItemDataAdapterHandle = hooks.useCallbackRef((dataItem) => {\n return treeItemDataAdapter?.(dataItem);\n });\n\n const originalDataList = useMemo(() => {\n const list = cloneState(state.treeList || []);\n if (treeSearchValue && searchResultType !== 'highlight') {\n const resultList = treeFilter(\n cloneState(state.treeList || []),\n (node) => {\n if (customSearchRule) {\n return customSearchRule(node, treeSearchValue);\n }\n const value = node[fieldNames.label]?.toLowerCase();\n return value.indexOf(treeSearchValue.toLowerCase()) >= 0;\n },\n { childrenName: fieldNames.children },\n );\n return resultList;\n }\n return list;\n }, [\n customSearchRule,\n fieldNames.children,\n fieldNames.label,\n searchResultType,\n state.treeList,\n treeSearchValue,\n ]);\n\n const treeData = useMemo(() => {\n const loop = (data: TAny[]): TAny[] =>\n data?.map((item) => {\n const adapterItem = treeItemDataAdapterHandle?.(item) || item;\n const disabled = disabledCanUse ? undefined : adapterItem.disabled;\n const strTitle = (adapterItem[fieldNames.label] || '') as string;\n let titleDom;\n if (treeSearchValue && isString(strTitle)) {\n const strTitleNew = strTitle?.toLowerCase();\n const index = strTitleNew.indexOf(treeSearchValue.toLowerCase());\n const beforeStr = strTitle.substring(0, index);\n const afterStr = strTitle.slice(index + treeSearchValue.length);\n const centerStr = strTitle.slice(index, index + treeSearchValue.length);\n titleDom =\n index > -1 ? (\n <span\n className={classNames({\n 'v-tree-item-disabled': adapterItem.disabled,\n })}\n >\n {beforeStr}\n <span className=\"site-tree-search-value\">{centerStr}</span>\n {afterStr}\n </span>\n ) : null;\n }\n if (!titleDom && adapterItem.disabled) {\n titleDom = (\n <span\n className={classNames({\n 'v-tree-item-disabled': adapterItem.disabled,\n })}\n >\n {strTitle}\n </span>\n );\n }\n const children = adapterItem[fieldNames.children];\n return {\n ...adapterItem,\n disabled,\n [fieldNames.label]: titleDom || strTitle,\n _treeItemName: strTitle,\n _disabled: adapterItem.disabled,\n [fieldNames.children]: isArray(children) && children.length > 0 ? loop(children) : undefined,\n };\n });\n return loop(originalDataList);\n }, [\n originalDataList,\n treeItemDataAdapterHandle,\n disabledCanUse,\n fieldNames.label,\n fieldNames.children,\n treeSearchValue,\n ]);\n const loadData = hooks.useCallbackRef((dataItem: TPlainObject) => {\n // eslint-disable-next-line no-async-promise-executor\n return new Promise<void>(async (resolve, reject) => {\n if (dataItem[fieldNames.children]) {\n resolve();\n return;\n }\n try {\n const respData = await props.loadDataServiceConfig?.onRequest?.(\n props.loadDataServiceConfig?.getParams?.(dataItem) || {},\n );\n const respDataList = (\n props.loadDataServiceConfig?.onRequestResultAdapter\n ? props.loadDataServiceConfig.onRequestResultAdapter(respData as unknown as TPlainObject)\n : respData\n ) as TPlainObject[];\n\n void actions\n .treeListAppendChildren({\n value: dataItem[fieldNames.value],\n appendList: respDataList,\n childrenName: fieldNames.children,\n valueName: fieldNames.value,\n })\n .then((allState) => {\n onChangeSelectorList(allState.treeList as TPlainObject[]);\n resolve();\n });\n } catch (error: TAny) {\n void message.error(error.message || '数据加载异常...');\n // 此处失败后,会重试“loadData”请求多次\n reject();\n }\n });\n });\n\n const isLeafNode = hooks.useCallbackRef((nodeData) => {\n const children = nodeData?.[fieldNames.children];\n // 当loadDataFlag=true,考虑叶子节点显示问题\n const loadDataFlag = props.loadDataFlag;\n const loadHasChildren = loadDataFlag ? !nodeData.isLeaf : false;\n const hasChildren = (children && children.length > 0) || loadHasChildren;\n return !hasChildren;\n });\n\n const titleRender = hooks.useCallbackRef((nodeData) => {\n const stringLabel = nodeData._treeItemName || nodeData[fieldNames.label];\n const buttonOperateConfig = menus?.({\n ...nodeData,\n [fieldNames.label]: stringLabel,\n });\n if (buttonOperateConfig?.operateList.length) {\n return (\n <Fragment>\n <span className=\"tree-item-title\" data-value={nodeData[fieldNames.value]}>\n {labelRender?.(nodeData) || nodeData?.[fieldNames.label]}\n </span>\n <ButtonOperate\n gap={5}\n {...buttonOperateConfig}\n dropdownMenuProps={{\n placement: 'bottomRight',\n isFixed: true,\n ...buttonOperateConfig?.dropdownMenuProps,\n }}\n className={classNames('tree-item-title-operate', buttonOperateConfig.className)}\n />\n </Fragment>\n );\n }\n\n if (menuLayoutTypeNew === 'fold') {\n let menuOptions: TAny[] = [];\n if (props.menuOptions?.fold) {\n menuOptions =\n props.menuOptions?.[menuLayoutTypeNew]?.({\n ...nodeData,\n [fieldNames.label]: stringLabel,\n }) || [];\n } else {\n menuOptions =\n props.getMenuOptions?.({\n ...nodeData,\n [fieldNames.label]: stringLabel,\n }) || [];\n }\n return (\n <Fragment>\n <span className=\"tree-item-title\" data-value={nodeData[fieldNames.value]}>\n {labelRender?.(nodeData) || nodeData?.[fieldNames.label]}\n </span>\n {menuOptions.length > 0 && (\n <DropdownMenuWrapper menuList={menuOptions} placement=\"bottomRight\">\n <MoreOutlined />\n </DropdownMenuWrapper>\n )}\n </Fragment>\n );\n }\n const menuOptions = props.menuOptions?.tile?.({\n ...nodeData,\n [fieldNames.label]: stringLabel,\n });\n\n return (\n <Fragment>\n <span className=\"tree-item-title\" data-value={nodeData[fieldNames.value]}>\n {labelRender?.(nodeData) || nodeData?.[fieldNames.label]}\n </span>\n {menuOptions ? (\n <ButtonOperate\n gap={5}\n {...menuOptions}\n className={classNames('tree-item-title-operate', menuOptions.className)}\n />\n ) : null}\n </Fragment>\n );\n });\n\n const onChangeDebounce = hooks.useDebounceCallback((value: string) => {\n setTreeSearchValue(value);\n props.onSearchValueChange?.(value);\n }, 300);\n\n const onSearchChange = hooks.useCallbackRef((e: React.ChangeEvent<HTMLInputElement>) => {\n onChangeDebounce(e.target.value);\n });\n\n const iconHandle = hooks.useCallbackRef((treeData) => {\n if (!props.icon) return null;\n if (isValidElement(props.icon)) return props.icon;\n const isLeafFlag = isLeafNode(treeData.data);\n return props.icon({\n ...treeData,\n isParent: !isLeafFlag,\n isLeaf: isLeafFlag,\n });\n });\n\n const treeFieldNames = useMemo(() => {\n return {\n title: fieldNames.label,\n key: fieldNames.value,\n children: fieldNames.children,\n };\n }, [fieldNames]);\n const showTree = treeData.length > 0 && state.requestStatus !== 'request-error';\n const commonProps = {\n showLine: { showLeafIcon: false },\n titleRender,\n blockNode: true,\n switcherIcon: <CaretDownFilled />,\n onDrop: (info) => {\n if (onDropPrev) {\n const boo = onDropPrev(info);\n if (!boo) return;\n }\n const { dataList, dragNodeData } = onTreeDrop(originalDataList, fieldNames, info);\n onDropNodeHandle?.(dragNodeData);\n onChangeSelectorList(dataList);\n },\n expandedKeys: treeExpandedKeys,\n ...otherProps,\n fieldNames: treeFieldNames,\n treeData,\n onExpand,\n loadData: props.loadDataFlag ? loadData : undefined,\n style: { width: '100%' },\n icon: iconHandle,\n onClick: (e) => {\n if (clickParentNodeToggleExpand) {\n let targetEle = e.target;\n let value = targetEle.dataset.value;\n if (isUndefinedOrNull(value)) {\n targetEle = dom.findParentsElement(e.target, (node: Element) => {\n return (\n node.classList?.contains('tree-item-title') || node.classList?.contains('ant-tree-treenode')\n );\n });\n value = targetEle.dataset.value;\n }\n if (!isUndefinedOrNull(value)) {\n const target = state.treeTiledArrayMap[value];\n if (target?.[fieldNames.children] && target[fieldNames.children].length > 0) {\n const treeExpandedTarget = treeExpandedKeys.includes(value);\n if (treeExpandedTarget) {\n const newList = array.arrayRemove(treeExpandedKeys, value);\n setTreeExpandedKeys([...newList]);\n } else {\n setTreeExpandedKeys([...treeExpandedKeys, value]);\n }\n }\n }\n }\n },\n };\n\n const checkedProps = {\n onCheck: onTreeChangeHandle,\n checkable,\n checkedKeys: valueList,\n };\n\n const selectedProps = {\n onSelect: onTreeChangeHandle,\n multiple: false,\n selectedKeys: valueList,\n };\n const sceneProps = checkable ? checkedProps : selectedProps;\n const cName = classNames('v-tree-wrapper', `v-tree-wrapper-menu-${menuTriggerTypeNew}`, className);\n const isSearchEmpty = state.treeList.length > 0 && !showTree && treeSearchValue;\n return (\n <div className={cName} style={style}>\n {!!showSearch && (\n <div className=\"v-tree-wrapper-search-area\" style={searchStyle}>\n <InputSearchWrapper\n className=\"v-tree-wrapper-search\"\n placeholder={isUndefinedOrNull(searchPlaceholder) ? '搜索' : searchPlaceholder}\n onChange={onSearchChange}\n value={treeSearchValue}\n allowClear\n />\n {!!props.searchExtraElement && (\n <span className=\"v-tree-wrapper-search-extra\">{props.searchExtraElement}</span>\n )}\n </div>\n )}\n\n {showTree ? (\n <div className=\"v-tree-wrapper-tree-wrapper\">\n <Spin spinning={state.requestStatus === 'request-progress'} />\n <Tree {...sceneProps} {...commonProps} className=\"v-tree-wrapper-tree\"></Tree>\n </div>\n ) : (\n <RequestStatus\n status={state.requestStatus}\n loading={loading}\n messageConfig={{\n 'request-success': isSearchEmpty ? '搜索结果为空' : '暂无数据',\n 'request-error': state.requestErrorMessage,\n ...requestMessageConfig,\n }}\n errorButton={\n <Button type=\"primary\" onClick={startDataSourceRequest}>\n 重新获取数据\n </Button>\n }\n />\n )}\n </div>\n );\n});\n","import type { TPlainObject } from '@flatbiz/utils';\nimport { attachPropertiesToComponent } from '@flatbiz/utils';\nimport type { ForwardRefExoticComponent, RefAttributes } from 'react';\nimport { getTreeDataList } from './hooks';\nimport type { TreeWrapperProps, TreeWrapperRefApi } from './tree-wrapper';\nimport { TreeWrapper as TreeWrapperInner } from './tree-wrapper';\nexport type { TreeServiceConfig, TreeWrapperProps } from './tree-wrapper';\n/**\n * Tree包装组件,默认返回父节点,可配置不返回\n * @param props\n * @returns\n * ```\n * 1. treeNode内置字段说明(如需要相关功能,可在接口中添加固定字段)\n * a. disabled 禁掉响应\n * b. isLeaf 设置为叶子节点 (设置了 loadData 时有效)。为 false 时会强制将其作为父节点\n * c. disableCheckbox checkable模式下,treeNode复选框是否可选\n * 2. 当设置selectorTreeList属性后,serviceConfig将失效\n * 3. checkable=true,为多选模式\n * 4. 设置value后,组件显示受控\n * 5. 设置loadDataFlag=true,会动态获取children,当treeNode中包含isLeaf=true字段,表示为叶子节点,没有children了\n * 6. 内置 onDrop 事件已处理数组排序,通过 onDropNodeHandle 事件可获取操作节点排序数据;自定义onDrop后,内置onDrop失效\n * ```\n */\nexport const TreeWrapper: ForwardRefExoticComponent<TreeWrapperProps & RefAttributes<TreeWrapperRefApi>> & {\n getTreeDataList: (modelKey: string) => TPlainObject[];\n} = attachPropertiesToComponent(TreeWrapperInner, {\n /**\n * 获取树形原数据\n * ```\n * 参数 modelKey 与 TreeWrapper属性 modelKey相同,才能获取数据\n * ```\n */\n getTreeDataList: getTreeDataList,\n});\n"],"names":["defaultState","treeList","treeTiledArray","treeTiledArrayMap","queryIsEmpty","TreeWrapperModel","actions","setTreeList","params","state","treeToArray","childrenName","arrayToMap","valueName","requestStatus","resetTreeList","changeRequestStatus","status","requestErrorMessage","errorMessage","undefined","treeListAppendChildren","tiledArray","target","value","_isArray","appendList","length","isLeaf","treeWrapperModels","treeWrapperModel","key","Model","getTreeDataList","modelKey","getState","getDefaultExpandAllKeys","fieldNames","allValues","children","filter","item","childrenValue","map","getExpandedKeys","treeToTiledArray","treeLeafParentsArray","parentValue","getVauleList","data","labelInValueFieldNames","tempList","isUndefinedOrNull","_isObject","onTreeDrop","dataList","info","dropKey","node","dragKey","dragNode","dropPos","pos","split","dropPosition","Number","treeKeyName","treeChildrenName","loop","callback","i","cloneState","dragObj","index","arr","splice","dropToGap","unshift","props","expanded","ar","_item","dragNodeData","dorpNodeId","_tree$walkThroughTree","id","_tree","walkThroughTree","_parent","tileList","find","parentId","getActualSelectKeyList","checkedValueList","chidlrenKey","valueKey","leafValueDataMap","hasChildrenList","retainHasChildrenValueList","forEach","_treeTiledArrayMap$it","isNotEmptyArray","push","childrenTiledList","Object","keys","targetList","temp","removeTargetNodeAndAllChildrenNode","awitDeleteNode","awitDeleteTieldDataMap","treeToTiledMap","removeAllSelectLeafNode","awitDeleteCheckedValueMap","_treeTiledArrayMap$it2","childrenList","targetMap","_extends","removeAllParentNode","completionParentChildrenNode","values","concat","_treeTiledArrayMap$it3","Array","from","Set","compareArrays","arr1","arr2","sortedArr1","slice","sort","sortedArr2","JSON","stringify","TreeWrapper","forwardRef","ref","style","serviceConfig","effectDependencyList","selectorTreeList","onChange","_props$checkableRespo","checkableResponseParentNode","checkable","onSelectorTreeListChange","onRequestResponseChange","treeItemDataAdapter","searchValue","showSearch","searchPlaceholder","requestMessageConfig","labelInValue","disabledCanUse","menuLayoutType","menuTriggerType","initRootExpand","searchResultType","onDropNodeHandle","onDropPrev","labelRender","searchStyle","className","defaultExpandAll","menus","customSearchRule","checkableType","clickParentNodeToggleExpand","disableNodeSelect","required","executeOnChangeInRenderFirstValue","otherProps","_objectWithoutPropertiesLoose","_excluded","hasSelectorTreeList","hasOwnProperty","newServiceConfig","newEffectDependencyList","_useState","useState","treeExpandedKeys","setTreeExpandedKeys","_treeWrapperModel$use","useStore","_fbaHooks$useSafeStat","fbaHooks","useSafeState","loading","setLoading","requestPreKey","searchTypeHighlight","useMemo","label","menuLayoutTypeNew","menuTriggerTypeNew","responseFirstRef","useRef","innerValueListRef","labelInValueFieldNamesMerge","_useState2","treeSearchValue","setTreeSearchValue","valueList","useEffectCustom","current","originalList","_dataList$push","innerExpandedKeys","getTreeExpandedKeys","valueIsEmpty","serviceResponseHandle","respData","result","onRequestResultAdapter","list","_get","console","warn","startDataSourceRequest","_hooks","useCallbackRef","Promise","$return","$error","requiredParamsKeys","isEmpty","_respData","respDataListNew","$Try_1_Post","$boundEx","$Try_1_Catch","error","message","onRequest","Error","_extend","join","$Try_2_Post","$Try_2_Catch","window","resolve","then","$await_4","$await_5","onChangeSelectorList","allState","refresh","newTreeExpandedKeys","includes","targetKeys","useUpdateEffect","labelValue","String","toLowerCase","treeExpandedKeysNew","useImperativeHandle","onClearSelectorList","getTreeTiledArray","getTreeTiledArrayMap","onChangeExpandedKeys","onSelectAll","onCancelSelectAll","onExpandedAll","onCancelExpandedAll","onExpand","expandedKeys","onInnerChange","selectedKey","operateNodeData","operateAllNodeDataList","operateInfo","toArray","nodeValue","onTreeChangeHandle","checkedData","finalCheckedValueList","completeCheckedValueList","checkStrictly","checked","x","operateNode","propsCompleteValues","completeCheckedItemList","lvValue","lvLabel","finalCheckedList","_ref","treeItemDataAdapterHandle","dataItem","originalDataList","resultList","treeFilter","_node$fieldNames$labe","indexOf","treeData","_extends2","adapterItem","disabled","strTitle","titleDom","_isString","strTitleNew","beforeStr","substring","afterStr","centerStr","_jsxs","_classNames","_jsx","_treeItemName","_disabled","loadData","reject","_props$loadDataServic","_props$loadDataServic2","_props$loadDataServic3","respDataList","$Try_3_Post","$Try_3_Catch","loadDataServiceConfig","getParams","$await_6","isLeafNode","nodeData","loadDataFlag","loadHasChildren","hasChildren","titleRender","_extends3","_props$menuOptions3","_extends6","stringLabel","buttonOperateConfig","operateList","Fragment","ButtonOperate","gap","dropdownMenuProps","placement","isFixed","_props$menuOptions","menuOptions","fold","_props$menuOptions2","_props$menuOptions2$m","_extends4","call","_extends5","getMenuOptions","DropdownMenuWrapper","menuList","_MoreOutlined","tile","onChangeDebounce","useDebounceCallback","onSearchValueChange","onSearchChange","e","iconHandle","icon","isValidElement","isLeafFlag","isParent","treeFieldNames","title","showTree","commonProps","showLine","showLeafIcon","blockNode","switcherIcon","_CaretDownFilled","onDrop","boo","_onTreeDrop","width","onClick","targetEle","dataset","dom","findParentsElement","_node$classList","_node$classList2","classList","contains","treeExpandedTarget","newList","_array","arrayRemove","checkedProps","onCheck","checkedKeys","selectedProps","onSelect","multiple","selectedKeys","sceneProps","cName","isSearchEmpty","InputSearchWrapper","placeholder","allowClear","searchExtraElement","Spin","spinning","Tree","RequestStatus","messageConfig","errorButton","Button","type","attachPropertiesToComponent","TreeWrapperInner"],"mappings":"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"}
@@ -6,5 +6,5 @@ import './../types/index.css';
6
6
  import './../fba-utils/index.css';
7
7
  import './index.css';
8
8
  /*! @flatjs/forge MIT @flatbiz/antd */
9
- import e from"@ant-design/icons/es/icons/PlusOutlined";import{classNames as r}from"@dimjs/utils/cjs/class-names";import{hooks as i}from"@wove/react/cjs/hooks";import{a as n,_ as t}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{isPlainObject as a}from"@dimjs/lang/cjs/is-plain-object";import{extend as o}from"@dimjs/utils/cjs/extend";import{isUndefinedOrNull as s,toArray as l,openNewWindow as u}from"@flatbiz/utils";import{message as d,Upload as c,Image as p,Button as f}from"antd";import{useState as m,useMemo as v,Fragment as g,cloneElement as h}from"react";import{flushSync as j}from"react-dom";import{ButtonWrapper as x}from"../button-wrapper/index.js";import{fbaHooks as y}from"../fba-hooks/index.js";import{jsxs as w,jsx as C}from"react/jsx-runtime";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"../index-83bede1b.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"../fba-utils/index.js";import"@dimjs/lang/cjs/is-array";import"@dimjs/model";import"../use-responsive-point-21b8c601.js";var b=function e(r){return new Promise((function(e,i){var n=new FileReader;n.readAsDataURL(r);n.onload=function(){return e(n.result)};n.onerror=function(e){return i(e)}}))};var z=["onChange","onUploadError","value","triggerText","limitHidden","autoSubmit","imagePreviewSwitch","imagePreviewAccept","extraOperate"];var O=function e(f){var O=f.onChange,T=f.onUploadError,L=f.value,k=f.triggerText,D=f.limitHidden,R=f.autoSubmit,U=f.imagePreviewSwitch,N=f.imagePreviewAccept,S=f.extraOperate,A=n(f,z);var E=s(N)?["png","jpg","jpeg","gif","heic","heif"]:N;var F=m(),_=F[0],H=F[1];var q=m(),B=q[0],I=q[1];var Y=o({uid:"uid",name:"name",url:"url",size:"size"},f.fieldNames);var M=v((function(){return s(L)?undefined:l(L)}),[L]);y.useEffectCustom((function(){var e=(B==null?void 0:B.filter((function(e){return e["status"]==="error"})))||[];var r=[];M==null||M.forEach((function(e){if(e["lastModified"]){r.push(e)}else{r.push({uid:e[Y.uid],name:e[Y.name],url:e[Y.url],size:e[Y.size],responseData:e["responseData"],status:"done",isOriginal:true})}}));if(e.length>0){var i=e.map((function(e){return{uid:e.uid,name:e.name,status:"error",isOriginal:true,response:e["response"]}}));r=r.concat(i)}I(r)}),[Y.name,Y.uid,Y.url,M]);var V=function e(r){var i=[];var n=false;r.forEach((function(e){if(e["isOriginal"]){if(e["status"]!=="error"){var r;var o=(r={},r[Y.uid]=e.uid,r[Y.name]=e.name,r[Y.url]=e.url,r);if(!s(e.size)){o[Y.size]=e.size}if(e["responseData"]){o.responseData=e["responseData"]}i.push(o)}}else if(a(e.response)){if(e.response.code==="0000"){var l;var u=e.response.data;var c=(f.onRequestResultAdapter==null?void 0:f.onRequestResultAdapter(u))||u;var p=(l={},l[Y.uid]=c[Y.uid]||e.uid,l[Y.name]=c[Y.name]||e.name,l[Y.url]=c[Y.url],l);if(!s(c[Y.size])){p[Y.size]=c[Y.size]}i.push(t({},p,{responseData:u}))}else{var m=e.response.message||"上传失败";n=true;e.status="error";e.response=e.response.message||"上传失败";if(T){T==null||T(m)}else{void d.error("上传操作失败...")}}}}));if(n){I([].concat(r))}O==null||O(i)};var G=i.useCallbackRef((function(e){var r=e.fileList;if(e.file.status==="done"){var i=[].concat(e.fileList);var n=i.filter((function(e){return e.status==="done"||e["isOriginal"]}));var t=n.length===i.length;if(t){V(i)}j((function(){return I(i)}));return}else if(e.file.status==="removed"){var a=e.file.uid;var o=M!==undefined?[].concat(M):[];var s=o.findIndex((function(e){var r=e[Y.uid]||e.uid;return r===a}));if(s>=0){o.splice(s,1)}O==null||O(o)}else if(e.file.status==="error"){if(T){T()}else{void d.error("上传操作失败...")}}I([].concat(r));f.onUploadChange==null||f.onUploadChange(e)}));var J=v((function(){if(A.maxCount===undefined||!D)return false;if(A.maxCount===0)return true;if(B&&B.length>=A.maxCount)return true;return false}),[D,A.maxCount,B]);var K=function e(r,i){if(R===false){var n=A.maxCount;var t=[].concat(M||[],i);var a=[].concat(B||[],i);if(n!==undefined&&n!==null){if(t.length>n){t=t.slice(t.length-n);a=a.slice(a.length-n)}}I(a);f.onChange==null||f.onChange(t);return false}return true};var Q=function e(r){return new Promise((function(e,i){var n,t,a;n=r.name||"";t=n.slice(n.lastIndexOf(".")+1);a=E==null?void 0:E.find((function(e){return e.toLocaleLowerCase()===t.toLocaleLowerCase()}));if(a){if(!r.url&&!r.preview){return Promise.resolve(b(r.originFileObj)).then(function(e){try{r.preview=e;return s.call(this)}catch(e){return i(e)}}.bind(this),i)}function s(){H(r.url||r.preview);return o.call(this)}return s.call(this)}else{u(r.url);return o.call(this)}function o(){return e()}}))};return w(g,{children:[C(c,t({beforeUpload:K,onPreview:U?Q:undefined,showUploadList:true,itemRender:function e(i,n,t){if(!S||!S.length)return i;var a=(A.disabled?1:2)+"-"+S.length;return C("div",{className:r("v-upload-list-item-actions-wrapper","v-upload-list-item-extra-actions-"+a),style:{height:"100%"},children:h(i,{children:[i.props.children,C("div",{className:"v-upload-list-item-extra-actions",children:S.map((function(e,r){return C(x,{size:"small",type:"text",icon:e.icon,onClick:e.onClick.bind(null,n,t)},r)}))},"extra-actions")].filter(Boolean)})})}},A,{onChange:G,fileList:B,className:r("v-upload-wrapper",A.className),children:A.disabled||J?null:C(P,{triggerText:k,listType:A.listType,children:f.children})})),_?C(p,{wrapperStyle:{display:"none"},preview:{visible:!!_,onVisibleChange:function e(){return H(undefined)},afterOpenChange:function e(r){return!r&&H("")}},src:_}):null]})};var P=function r(i){if(i.children)return C(g,{children:i.children});if(i.listType==="picture-card"){return w("div",{children:[C(e,{}),C("div",{style:{marginTop:8},children:i.triggerText||"上传图片"})]})}if(i.listType==="picture"){return C(f,{type:"primary",ghost:true,children:i.triggerText||"选择图片上传"})}return C(f,{type:"primary",ghost:true,children:i.triggerText||"选择文件上传"})};export{O as UploadWrapper};
9
+ import e from"@ant-design/icons/es/icons/PlusOutlined";import{classNames as r}from"@dimjs/utils/cjs/class-names";import{hooks as i}from"@wove/react/cjs/hooks";import{a as n,_ as t}from"../_rollupPluginBabelHelpers-c0dbec57.js";import{isPlainObject as a}from"@dimjs/lang/cjs/is-plain-object";import{extend as s}from"@dimjs/utils/cjs/extend";import{isUndefinedOrNull as o,toArray as l,openNewWindow as u}from"@flatbiz/utils";import{message as d,Upload as c,Image as p,Button as f}from"antd";import{useState as m,useMemo as v,Fragment as g,cloneElement as h}from"react";import{flushSync as j}from"react-dom";import{ButtonWrapper as x}from"../button-wrapper/index.js";import{fbaHooks as y}from"../fba-hooks/index.js";import{jsxs as w,jsx as C}from"react/jsx-runtime";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"../index-83bede1b.js";import"antd/es/locale/en_US";import"antd/es/locale/zh_CN";import"dayjs";import"dayjs/locale/en";import"dayjs/locale/zh-cn";import"dayjs/plugin/advancedFormat";import"dayjs/plugin/customParseFormat";import"dayjs/plugin/localeData";import"dayjs/plugin/utc";import"dayjs/plugin/weekday";import"dayjs/plugin/weekOfYear";import"dayjs/plugin/weekYear";import"../fba-utils/index.js";import"@dimjs/lang/cjs/is-array";import"@dimjs/model";import"../use-responsive-point-21b8c601.js";import"@dimjs/utils/cjs/uuid";var b=function e(r){return new Promise((function(e,i){var n=new FileReader;n.readAsDataURL(r);n.onload=function(){return e(n.result)};n.onerror=function(e){return i(e)}}))};var z=["onChange","onUploadError","value","triggerText","limitHidden","autoSubmit","imagePreviewSwitch","imagePreviewAccept","extraOperate"];var O=function e(f){var O=f.onChange,T=f.onUploadError,L=f.value,k=f.triggerText,D=f.limitHidden,R=f.autoSubmit,U=f.imagePreviewSwitch,N=f.imagePreviewAccept,S=f.extraOperate,A=n(f,z);var E=o(N)?["png","jpg","jpeg","gif","heic","heif"]:N;var F=m(),_=F[0],H=F[1];var q=m(),B=q[0],I=q[1];var Y=s({uid:"uid",name:"name",url:"url",size:"size"},f.fieldNames);var M=v((function(){return o(L)?undefined:l(L)}),[L]);y.useEffectCustom((function(){var e=(B==null?void 0:B.filter((function(e){return e["status"]==="error"})))||[];var r=[];M==null||M.forEach((function(e){if(e["lastModified"]){r.push(e)}else{r.push({uid:e[Y.uid],name:e[Y.name],url:e[Y.url],size:e[Y.size],responseData:e["responseData"],status:"done",isOriginal:true})}}));if(e.length>0){var i=e.map((function(e){return{uid:e.uid,name:e.name,status:"error",isOriginal:true,response:e["response"]}}));r=r.concat(i)}I(r)}),[Y.name,Y.uid,Y.url,M]);var V=function e(r){var i=[];var n=false;r.forEach((function(e){if(e["isOriginal"]){if(e["status"]!=="error"){var r;var s=(r={},r[Y.uid]=e.uid,r[Y.name]=e.name,r[Y.url]=e.url,r);if(!o(e.size)){s[Y.size]=e.size}if(e["responseData"]){s.responseData=e["responseData"]}i.push(s)}}else if(a(e.response)){if(e.response.code==="0000"){var l;var u=e.response.data;var c=(f.onRequestResultAdapter==null?void 0:f.onRequestResultAdapter(u))||u;var p=(l={},l[Y.uid]=c[Y.uid]||e.uid,l[Y.name]=c[Y.name]||e.name,l[Y.url]=c[Y.url],l);if(!o(c[Y.size])){p[Y.size]=c[Y.size]}i.push(t({},p,{responseData:u}))}else{var m=e.response.message||"上传失败";n=true;e.status="error";e.response=e.response.message||"上传失败";if(T){T==null||T(m)}else{void d.error("上传操作失败...")}}}}));if(n){I([].concat(r))}O==null||O(i)};var G=i.useCallbackRef((function(e){var r=e.fileList;if(e.file.status==="done"){var i=[].concat(e.fileList);var n=i.filter((function(e){return e.status==="done"||e["isOriginal"]}));var t=n.length===i.length;if(t){V(i)}j((function(){return I(i)}));return}else if(e.file.status==="removed"){var a=e.file.uid;var s=M!==undefined?[].concat(M):[];var o=s.findIndex((function(e){var r=e[Y.uid]||e.uid;return r===a}));if(o>=0){s.splice(o,1)}O==null||O(s)}else if(e.file.status==="error"){if(T){T()}else{void d.error("上传操作失败...")}}I([].concat(r));f.onUploadChange==null||f.onUploadChange(e)}));var J=v((function(){if(A.maxCount===undefined||!D)return false;if(A.maxCount===0)return true;if(B&&B.length>=A.maxCount)return true;return false}),[D,A.maxCount,B]);var K=function e(r,i){if(R===false){var n=A.maxCount;var t=[].concat(M||[],i);var a=[].concat(B||[],i);if(n!==undefined&&n!==null){if(t.length>n){t=t.slice(t.length-n);a=a.slice(a.length-n)}}I(a);f.onChange==null||f.onChange(t);return false}return true};var Q=function e(r){return new Promise((function(e,i){var n,t,a;n=r.name||"";t=n.slice(n.lastIndexOf(".")+1);a=E==null?void 0:E.find((function(e){return e.toLocaleLowerCase()===t.toLocaleLowerCase()}));if(a){if(!r.url&&!r.preview){return Promise.resolve(b(r.originFileObj)).then(function(e){try{r.preview=e;return o.call(this)}catch(e){return i(e)}}.bind(this),i)}function o(){H(r.url||r.preview);return s.call(this)}return o.call(this)}else{u(r.url);return s.call(this)}function s(){return e()}}))};return w(g,{children:[C(c,t({beforeUpload:K,onPreview:U?Q:undefined,showUploadList:true,itemRender:function e(i,n,t){if(!S||!S.length)return i;var a=(A.disabled?1:2)+"-"+S.length;return C("div",{className:r("v-upload-list-item-actions-wrapper","v-upload-list-item-extra-actions-"+a),style:{height:"100%"},children:h(i,{children:[i.props.children,C("div",{className:"v-upload-list-item-extra-actions",children:S.map((function(e,r){return C(x,{size:"small",type:"text",icon:e.icon,onClick:e.onClick.bind(null,n,t)},r)}))},"extra-actions")].filter(Boolean)})})}},A,{onChange:G,fileList:B,className:r("v-upload-wrapper",A.className),children:A.disabled||J?null:C(P,{triggerText:k,listType:A.listType,children:f.children})})),_?C(p,{wrapperStyle:{display:"none"},preview:{visible:!!_,onVisibleChange:function e(){return H(undefined)},afterOpenChange:function e(r){return!r&&H("")}},src:_}):null]})};var P=function r(i){if(i.children)return C(g,{children:i.children});if(i.listType==="picture-card"){return w("div",{children:[C(e,{}),C("div",{style:{marginTop:8},children:i.triggerText||"上传图片"})]})}if(i.listType==="picture"){return C(f,{type:"primary",ghost:true,children:i.triggerText||"选择图片上传"})}return C(f,{type:"primary",ghost:true,children:i.triggerText||"选择文件上传"})};export{O as UploadWrapper};
10
10
  //# sourceMappingURL=index.js.map