@flatbiz/antd 4.5.41 → 4.5.43

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 (219) hide show
  1. package/esm/_rollupPluginBabelHelpers-c0dbec57.js +3 -0
  2. package/esm/_rollupPluginBabelHelpers-c0dbec57.js.map +1 -0
  3. package/esm/ace-editor-groovy/index.js +1 -1
  4. package/esm/ace-editor-groovy/index.js.map +1 -1
  5. package/esm/ace-editor-java/index.js +1 -1
  6. package/esm/ace-editor-java/index.js.map +1 -1
  7. package/esm/ace-editor-json/index.js +1 -1
  8. package/esm/ace-editor-json/index.js.map +1 -1
  9. package/esm/ace-editor-mysql/index.js +1 -1
  10. package/esm/ace-editor-mysql/index.js.map +1 -1
  11. package/esm/ace-editor-xml/index.js +1 -1
  12. package/esm/ace-editor-xml/index.js.map +1 -1
  13. package/esm/alert-wrapper/index.js +1 -1
  14. package/esm/amount-fen-input/index.js +1 -1
  15. package/esm/amount-fen-input/index.js.map +1 -1
  16. package/esm/amount-fen-input-form-item/index.js +1 -1
  17. package/esm/anchor-steps/index.js +1 -1
  18. package/esm/anchor-steps/index.js.map +1 -1
  19. package/esm/block-layout/index.js +1 -1
  20. package/esm/bootstrap/index.js +1 -1
  21. package/esm/box-grid/index.js +1 -1
  22. package/esm/box-grid/index.js.map +1 -1
  23. package/esm/button-operate/index.js +1 -1
  24. package/esm/button-operate/index.js.map +1 -1
  25. package/esm/button-wrapper/index.js +1 -1
  26. package/esm/card-layout/index.js +1 -1
  27. package/esm/card-wrapper/index.js +1 -1
  28. package/esm/cascader-wrapper/index.js +1 -1
  29. package/esm/cascader-wrapper/index.js.map +1 -1
  30. package/esm/check-list/index.js +1 -1
  31. package/esm/check-list/index.js.map +1 -1
  32. package/esm/checkbox-wrapper/index.js +1 -1
  33. package/esm/checkbox-wrapper/index.js.map +1 -1
  34. package/esm/color-picker-wrapper/index.js +1 -1
  35. package/esm/color-picker-wrapper/index.js.map +1 -1
  36. package/esm/config-provider-wrapper/index.js +1 -1
  37. package/esm/create-drawer-wrapper-model/index.js.map +1 -1
  38. package/esm/create-modal-wrapper-model/index.js.map +1 -1
  39. package/esm/css-node-hover/index.js +1 -1
  40. package/esm/date-picker-wrapper/index.js +1 -1
  41. package/esm/date-picker-wrapper/index.js.map +1 -1
  42. package/esm/date-range-picker-wrapper/index.js +1 -1
  43. package/esm/date-range-picker-wrapper/index.js.map +1 -1
  44. package/esm/date-range-picker-wrapper-form-item/index.js +1 -1
  45. package/esm/date-range-picker-wrapper-form-item/index.js.map +1 -1
  46. package/esm/delete-node/index.js +1 -1
  47. package/esm/dialog-alert/index.js +1 -1
  48. package/esm/dialog-alert/index.js.map +1 -1
  49. package/esm/dialog-confirm/index.js +1 -1
  50. package/esm/dialog-confirm/index.js.map +1 -1
  51. package/esm/dialog-drawer/index.js +1 -1
  52. package/esm/dialog-drawer/index.js.map +1 -1
  53. package/esm/dialog-drawer-content/index.js +1 -1
  54. package/esm/dialog-loading/index.js +1 -1
  55. package/esm/dialog-loading/index.js.map +1 -1
  56. package/esm/dialog-modal/index.js +1 -1
  57. package/esm/dialog-modal/index.js.map +1 -1
  58. package/esm/dialog-preview-image/index.js +1 -1
  59. package/esm/dialog-preview-image/index.js.map +1 -1
  60. package/esm/drag-collapse/index.js +1 -1
  61. package/esm/drag-collapse/index.js.map +1 -1
  62. package/esm/drag-collapse-form-list/index.js +1 -1
  63. package/esm/drag-collapse-form-list/index.js.map +1 -1
  64. package/esm/drag-editable-card/index.js +1 -1
  65. package/esm/drag-editable-card/index.js.map +1 -1
  66. package/esm/drag-editable-table/index.js +1 -1
  67. package/esm/drag-editable-table/index.js.map +1 -1
  68. package/esm/drag-editable-table-pro/index.js +1 -1
  69. package/esm/drag-editable-table-pro/index.js.map +1 -1
  70. package/esm/drag-form-list/index.js +1 -1
  71. package/esm/drag-form-list/index.js.map +1 -1
  72. package/esm/drag-table/index.js +1 -1
  73. package/esm/drag-table/index.js.map +1 -1
  74. package/esm/drawer-wrapper/index.js +1 -1
  75. package/esm/dropdown-menu-wrapper/index.js +1 -1
  76. package/esm/dynamic-node/index.js +1 -1
  77. package/esm/dynamic-node/index.js.map +1 -1
  78. package/esm/easy-form/index.js +1 -1
  79. package/esm/easy-table/index.css +1 -1
  80. package/esm/easy-table/index.js +1 -1
  81. package/esm/easy-table/index.js.map +1 -1
  82. package/esm/editable-card/index.js +1 -1
  83. package/esm/editable-card/index.js.map +1 -1
  84. package/esm/editable-field/index.js +1 -1
  85. package/esm/editable-field/index.js.map +1 -1
  86. package/esm/editable-table/index.js +1 -1
  87. package/esm/editable-table/index.js.map +1 -1
  88. package/esm/editable-table-pro/index.js +1 -1
  89. package/esm/editable-table-pro/index.js.map +1 -1
  90. package/esm/editor-wrapper/index.js +1 -1
  91. package/esm/editor-wrapper/index.js.map +1 -1
  92. package/esm/error-boundary-wrapper/index.js +1 -1
  93. package/esm/error-boundary-wrapper/index.js.map +1 -1
  94. package/esm/fba-app/index.js +1 -1
  95. package/esm/fba-app/index.js.map +1 -1
  96. package/esm/fba-hooks/index.js +1 -1
  97. package/esm/file-export/index.js +1 -1
  98. package/esm/file-export/index.js.map +1 -1
  99. package/esm/file-import/index.js +1 -1
  100. package/esm/file-select/index.js +1 -1
  101. package/esm/file-select/index.js.map +1 -1
  102. package/esm/flex-layout/index.js +1 -1
  103. package/esm/form-grid/index.js +1 -1
  104. package/esm/form-item-group/index.js +1 -1
  105. package/esm/form-item-span/index.js +1 -1
  106. package/esm/form-item-text/index.js +1 -1
  107. package/esm/form-item-text/index.js.map +1 -1
  108. package/esm/form-item-wrapper/index.js +1 -1
  109. package/esm/form-item-wrapper/index.js.map +1 -1
  110. package/esm/form-item-wrapper-dependencies/index.js +1 -1
  111. package/esm/form-list-wrapper/index.js +1 -1
  112. package/esm/form-list-wrapper/index.js.map +1 -1
  113. package/esm/form-wrapper/index.js +1 -1
  114. package/esm/gap/index.js +1 -1
  115. package/esm/icon-wrapper/index.css +1 -1
  116. package/esm/icon-wrapper/index.js +1 -1
  117. package/esm/icon-wrapper/index.js.map +1 -1
  118. package/esm/{index-7f4ad045.js → index-83bede1b.js} +2 -2
  119. package/esm/{index-7f4ad045.js.map → index-83bede1b.js.map} +1 -1
  120. package/esm/index.js +1 -1
  121. package/esm/input-search-wrapper/index.js +1 -1
  122. package/esm/input-search-wrapper/index.js.map +1 -1
  123. package/esm/input-text-area-wrapper/index.js +1 -1
  124. package/esm/input-text-area-wrapper/index.js.map +1 -1
  125. package/esm/input-wrapper/index.js +1 -1
  126. package/esm/input-wrapper/index.js.map +1 -1
  127. package/esm/json-editor/index.js +1 -1
  128. package/esm/json-editor/index.js.map +1 -1
  129. package/esm/label-value-layout/index.js +1 -1
  130. package/esm/label-value-render/index.js +1 -1
  131. package/esm/label-value-render/index.js.map +1 -1
  132. package/esm/local-loading/index.js +1 -1
  133. package/esm/local-loading/index.js.map +1 -1
  134. package/esm/mention-editor/index.js +1 -1
  135. package/esm/mention-editor/index.js.map +1 -1
  136. package/esm/mentions-wrapper/index.js +1 -1
  137. package/esm/mentions-wrapper/index.js.map +1 -1
  138. package/esm/modal-action/index.js +1 -1
  139. package/esm/modal-wrapper/index.js +1 -1
  140. package/esm/number-range-form-item/index.js +1 -1
  141. package/esm/number-range-form-item/index.js.map +1 -1
  142. package/esm/pagination-wrapper/index.js +1 -1
  143. package/esm/pdf/index.js +1 -1
  144. package/esm/pdf/index.js.map +1 -1
  145. package/esm/pdf-preview/index.js +1 -1
  146. package/esm/pdf-preview/index.js.map +1 -1
  147. package/esm/radio-group-wrapper/index.js +1 -1
  148. package/esm/radio-group-wrapper/index.js.map +1 -1
  149. package/esm/relation-tree/index.js +1 -1
  150. package/esm/relation-tree/index.js.map +1 -1
  151. package/esm/rich-text-editor/index.js +1 -1
  152. package/esm/rich-text-editor/index.js.map +1 -1
  153. package/esm/rich-text-viewer/index.js +1 -1
  154. package/esm/rich-text-viewer/index.js.map +1 -1
  155. package/esm/roll-location-center/index.js +1 -1
  156. package/esm/roll-location-center/index.js.map +1 -1
  157. package/esm/roll-location-in-view/index.js +1 -1
  158. package/esm/roll-location-in-view/index.js.map +1 -1
  159. package/esm/rule-describe/index.js +1 -1
  160. package/esm/search-form/index.js +1 -1
  161. package/esm/search-form/index.js.map +1 -1
  162. package/esm/search-menu/index.js +1 -1
  163. package/esm/search-menu/index.js.map +1 -1
  164. package/esm/selector-wrapper/index.js +1 -1
  165. package/esm/selector-wrapper/index.js.map +1 -1
  166. package/esm/selector-wrapper-search/index.js +1 -1
  167. package/esm/selector-wrapper-search/index.js.map +1 -1
  168. package/esm/selector-wrapper-simple/index.js +1 -1
  169. package/esm/selector-wrapper-simple/index.js.map +1 -1
  170. package/esm/simple-layout/index.js +1 -1
  171. package/esm/sms-count-down/index.js +1 -1
  172. package/esm/sms-count-down/index.js.map +1 -1
  173. package/esm/split-wrapper/index.js +1 -1
  174. package/esm/svg-http-view/index.js +1 -1
  175. package/esm/switch-confirm-wrapper/index.js +1 -1
  176. package/esm/switch-confirm-wrapper/index.js.map +1 -1
  177. package/esm/switch-wrapper/index.js +1 -1
  178. package/esm/switch-wrapper/index.js.map +1 -1
  179. package/esm/table-cell-render/index.js +1 -1
  180. package/esm/table-scrollbar/index.js +1 -1
  181. package/esm/table-scrollbar/index.js.map +1 -1
  182. package/esm/tabs-sticky/index.js +1 -1
  183. package/esm/tabs-sticky/index.js.map +1 -1
  184. package/esm/tabs-wrapper/index.js +1 -1
  185. package/esm/tabs-wrapper/index.js.map +1 -1
  186. package/esm/tag-group/index.js +1 -1
  187. package/esm/tag-list-render/index.js +1 -1
  188. package/esm/tag-list-render/index.js.map +1 -1
  189. package/esm/tag-wrapper/index.js +1 -1
  190. package/esm/text-css-ellipsis/index.js +1 -1
  191. package/esm/text-css-ellipsis/index.js.map +1 -1
  192. package/esm/text-overflow/index.js +1 -1
  193. package/esm/text-overflow-render/index.js +1 -1
  194. package/esm/text-symbol-wrapper/index.js +1 -1
  195. package/esm/time-picker-wrapper/index.js +1 -1
  196. package/esm/time-picker-wrapper/index.js.map +1 -1
  197. package/esm/time-range-picker-wrapper/index.js +1 -1
  198. package/esm/time-range-picker-wrapper/index.js.map +1 -1
  199. package/esm/time-range-picker-wrapper-form-item/index.js +1 -1
  200. package/esm/time-range-picker-wrapper-form-item/index.js.map +1 -1
  201. package/esm/tips-title/index.js +1 -1
  202. package/esm/tips-wrapper/index.js +1 -1
  203. package/esm/tree-modal/index.js +1 -1
  204. package/esm/tree-modal/index.js.map +1 -1
  205. package/esm/tree-modal-selector/index.js +1 -1
  206. package/esm/tree-modal-selector/index.js.map +1 -1
  207. package/esm/tree-selector-wrapper/index.js +1 -1
  208. package/esm/tree-selector-wrapper/index.js.map +1 -1
  209. package/esm/tree-wrapper/index.css +1 -1
  210. package/esm/tree-wrapper/index.js +1 -1
  211. package/esm/tree-wrapper/index.js.map +1 -1
  212. package/esm/upload-wrapper/index.js +1 -1
  213. package/esm/upload-wrapper/index.js.map +1 -1
  214. package/esm/x-mind-preview/index.js +1 -1
  215. package/esm/x-mind-preview/index.js.map +1 -1
  216. package/index.d.ts +74 -63
  217. package/package.json +1 -1
  218. package/esm/_rollupPluginBabelHelpers-a0769acd.js +0 -3
  219. package/esm/_rollupPluginBabelHelpers-a0769acd.js.map +0 -1
@@ -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 s,treeFilter as o,attachPropertiesToComponent as u}from"@flatbiz/utils";import{isArray as c}from"@dimjs/lang/cjs/is-array";import{Model as d}from"@dimjs/model-react";import f from"@ant-design/icons/es/icons/CaretDownFilled";import v from"@ant-design/icons/es/icons/MoreOutlined";import{classNames as p}from"@dimjs/utils/cjs/class-names";import{isString as m}from"@dimjs/lang/cjs/is-string";import{extend as h}from"@dimjs/utils/cjs/extend";import{hooks as g}from"@wove/react/cjs/hooks";import{get as y}from"@dimjs/utils/cjs/get";import{_ as b,a as L}from"../_rollupPluginBabelHelpers-a0769acd.js";import{cloneState as C}from"@dimjs/model";import{Spin as w,Tree as j,Button as T,message as A}from"antd";import{forwardRef as N,useState as R,useMemo as S,useRef as q,useImperativeHandle as k,Fragment as x,isValidElement as M}from"react";import{ButtonOperate as E}from"../button-operate/index.js";import{DropdownMenuWrapper as D}from"../dropdown-menu-wrapper/index.js";import{fbaHooks as P}from"../fba-hooks/index.js";import{InputSearchWrapper as _}from"../input-search-wrapper/index.js";import{RequestStatus as I}from"../request-status/index.js";import{tree as O}from"@dimjs/utils/cjs/tree";import{isObject as V}from"@dimjs/lang/cjs/is-object";import"dequal";import{jsxs as F,jsx as K}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-7f4ad045.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 U={treeList:[],treeTiledArray:[],treeTiledArrayMap:{},queryIsEmpty:false};var z={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(c(n.appendList)&&n.appendList.length>0){l[n.childrenName]=n.appendList}else{l.isLeaf=true}}t.treeTiledArray=a;t.treeTiledArrayMap=i}}},state:U};var H={};var B=function e(r){if(!H[r]){H[r]=d(z)}return H[r]};var Y=function e(r){var t=B(r).getState();return t.treeList};var G=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 W=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 J=function e(r,t){var n=a(r)?[]:r;n=c(n)?n:[n];n=n.map((function(e){if(V(e))return e[t.value];return e}));return n};var Q=function e(r,t,n){var a=n.node.key;var i=n.dragNode.key;var l=n.node.pos.split("-");var s=n.dropPosition-Number(l[l.length-1]);var o=t.value;var u=t.children;var c=function e(r,t,n){for(var a=0;a<r.length;a++){if(r[a][o]===t){return n(r[a],a,r)}if(r[a][u]){e(r[a][u],t,n)}}};var d=C(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[u]=e[u]||[];e[u].unshift(f)}))}else if((n.node.props.children||[]).length>0&&n.node.props.expanded&&s===1){c(d,a,(function(e){e[u]=e[u]||[];e[u].unshift(f)}))}else{var v=[];var p;c(d,a,(function(e,r,t){v=t;p=r}));if(s===-1){v.splice(p,0,f)}else{v.splice(p+1,0,f)}}return{dataList:d,dragNodeData:X(i,d,t)}};var X=function r(t,n,a){var i;var l=a.value;var s=a.children;O.walkThroughTree((i={},i[l]=undefined,i[s]=n,i),(function(e,r,t){e["__index"]=r;e["__parentId"]=t==null?void 0:t[l]}),s);var o=e(n,s);var u=o.find((function(e){return e[l]===t}));return{parentId:u==null?void 0:u["__parentId"],id:u==null?void 0:u[l],index:u==null?void 0:u["__index"]}};var Z=function r(t,n,a,l){var s={};var o=[];var u=[];t.forEach((function(e){var r;if(i((r=n[e])==null?void 0:r[a])){o.push(e)}else{s[e]=e}}));if(o.length>0){o.forEach((function(r){var i=e(n[r][a],a);if(Object.keys(s).length>i.length){var o=i.filter((function(e){return t.find((function(r){return r===e[l]}))}));if(o.length===i.length){u.push(r)}}}))}return t.filter((function(e){return u.find((function(r){return r==e}))||s[e]}))};var $=function e(r,t,n,a){var i=l([t],{value:a,children:n});return r.filter((function(e){return!i[e]}))};var ee=function e(r,t,n,a){var s={};r.forEach((function(e){var r;var o=(r=t[e])==null?void 0:r[n];if(i(o)){var u=l(o,{value:a,children:n});s=b({},s,u)}}));return r.filter((function(e){return!s[e]}))};var re=function e(r,t,n){return r.filter((function(e){return!i(t[e][n])}))};var te=function r(t,n,a,l){var s=[].concat(t);t.forEach((function(r){var t;var o=(t=n[r])==null?void 0:t[a];if(i(o)){var u=e(o,a);s=s.concat(u.map((function(e){return e[l]})))}}));return Array.from(new Set(s))};var ne=["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"];var ae=N((function(e,r){var t=e.style,n=e.serviceConfig,i=e.effectDependencyList,l=e.selectorTreeList,u=e.value,d=e.onChange,N=e.modelKey,O=e.checkableResponseParentNode,V=O===void 0?true:O,U=e.checkable,z=e.onSelectorTreeListChange,H=e.onRequestResponseChange,Y=e.treeItemDataAdapter,X=e.searchValue,ae=e.showSearch,ie=e.searchPlaceholder,le=e.requestMessageConfig,se=e.labelInValueFieldNames,oe=e.labelInValue,ue=e.disabledCanUse,ce=e.menuLayoutType,de=e.menuTriggerType,fe=e.initRootExpand,ve=e.searchResultType,pe=e.onDropNodeHandle,me=e.onDropPrev,he=e.labelRender,ge=e.searchStyle,ye=e.className,be=e.defaultExpandAll,Le=e.menus,Ce=e.customSearchRule,we=e.checkableType,je=L(e,ne);var Te=e.hasOwnProperty("selectorTreeList");var Ae=n||{};var Ne=i||[];var Re=R([]),Se=Re[0],qe=Re[1];var ke=B(N).useStore(),xe=ke[0],Me=ke[1];var Ee=P.useSafeState(false),De=Ee[0],Pe=Ee[1];var _e="request-progress-"+e.modelKey;var Ie=ve==="highlight";var Oe=S((function(){return b({label:"label",value:"value",children:"children"},e.fieldNames)}),[e.fieldNames]);var Ve=ce===undefined?"fold":ce;var Fe=de===undefined?"click":de;var Ke=q(true);var Ue=S((function(){return b({label:"label",value:"value"},se)}),[se]);var ze=R(),He=ze[0],Be=ze[1];var Ye=S((function(){return J(u,Ue)}),[Ue,u]);P.useEffectCustom((function(){if(xe.treeList.length>0){if(Ke.current&&a(u)){Ke.current=false;if(be){qe(G(xe.treeList,Oe));return}else if(fe&&xe.treeList.length){qe([xe.treeList[0][Oe.value]]);return}}if(!a(u)){var e=Xe(Ye,true);qe(Array.from(new Set(Se==null?void 0:Se.concat(e))))}}}),[u,xe.treeList,Ye]);var Ge=function e(r){return r===""||a(r)};var We=function e(r){var t=r;if(Ae.onRequestResultAdapter){t=Ae.onRequestResultAdapter(r)}else if(Oe.list){t=y(r,Oe.list,[])||[]}if(!c(t)){console.warn("接口返回数据为非数组结构,确认是否需要配置fieldNames.list进行解析");return[]}return t};P.useEffectCustom((function(){Be(X)}),[X]);var Je=g.useCallbackRef((function(){return new Promise((function(e,r){var t,n,a,i,l;var s=function(){try{return e()}catch(e){return r(e)}};var o=function(e){try{Ke.current=false;Pe(false);void A.error(e.message||"数据查询异常...");return s()}catch(e){return r(e)}};try{if(!Ae.onRequest){throw new Error("onRequest 调用接口服务不能为空")}t=Ae.requiredParamsKeys;n=h({},Ae.params);if(t){a=t.find((function(e){return Ge(n[e])}));if(a){void Me.changeRequestStatus({status:"no-dependencies-params"});console.warn("TreeWrapper组件:参数:"+t.join("、")+"不能为空");return e()}}var u=function(){try{return s()}catch(e){return o(e)}};var c=function(e){try{window[_e]=false;Pe(false);void Me.changeRequestStatus({status:"request-error",errorMessage:e.message});return u()}catch(e){return o(e)}};try{Pe(true);return Promise.resolve(Me.changeRequestStatus({status:"request-progress"})).then((function(e){try{window[_e]=true;return Promise.resolve(Ae.onRequest==null?void 0:Ae.onRequest(n)).then((function(e){try{i=e;H==null?void 0:H(i);l=We(i);if(l.length===0){Ke.current=false}Qe(l);Pe(false);window[_e]=false;return u()}catch(e){return c(e)}}),c)}catch(e){return c(e)}}),c)}catch(e){c(e)}}catch(e){o(e)}}))}));P.useEffectCustom((function(){if(Te)return;if(Ne.length){void Je();return}var e=B(N).getState();if(e.requestStatus==="request-success"){z==null?void 0:z(e.treeList);return}if(!window[_e]){void Je()}else{z==null?void 0:z(e.treeList)}}),Ne);P.useEffectCustom((function(){if(Te){Qe(l||[])}}),[l]);var Qe=g.useCallbackRef((function(e){if((e==null?void 0:e.length)===0&&xe.treeList.length===0){void Me.changeRequestStatus({status:"request-success"});return}void Me.setTreeList({treeList:e||[],childrenName:Oe.children,valueName:Oe.value});z==null?void 0:z(e)}));var Xe=function e(r,t){var n=[];r.forEach((function(e){if(!t&&Se!=null&&Se.includes(e))return;var r=W(e,xe.treeList,Oe);n=n.concat(r)}));return n};g.useUpdateEffect((function(){if(He){var e=xe.treeTiledArray.filter((function(e){var r=e[Oe.label]||"";if(Ce){return Ce(e,He)}return String(r).toLowerCase().includes(He.toLowerCase())}));var r=Xe(e.map((function(e){return e[Oe.value]})),true);qe(Array.from(new Set(r)))}else{qe([])}}),[He]);k(r,(function(){return{onClearSelectorList:function e(){void Me.resetTreeList()},getTreeDataList:function e(){return xe.treeList},onChangeExpandedKeys:function e(r){qe(r)},onSelectAll:function e(){var r=xe.treeTiledArray.map((function(e){return e[Oe.value]}));qe(r);d==null?void 0:d(r,undefined,xe.treeList,undefined)},onCancelSelectAll:function e(){qe([]);d==null?void 0:d(undefined)},onExpandedAll:function e(){var r=xe.treeTiledArray.map((function(e){return e[Oe.value]}));qe(r)},onCancelExpandedAll:function e(){qe([])}}}));var Ze=g.useCallbackRef((function(e){qe(e)}));var $e=function r(t,n,a,i){if(s(t).length===0){var l=i==null?void 0:i.node[Oe.value];var o=xe.treeTiledArrayMap[l];e.onChange==null?void 0:e.onChange(undefined,o,[o],i)}else{e.onChange==null?void 0:e.onChange(t,n,a,i)}};var er=g.useCallbackRef((function(r,t){var n=[];var a=[];if(U){n=e.checkStrictly?r.checked:r}else{n=r}n=s(n);if(U==false){a=n}else{if(ae&&He&&!Ie){var i=t==null?void 0:t.node;if(e.checkStrictly){if(t.checked==false){n=Ye.filter((function(e){return e!=i[Oe.value]}))}else{n=Array.from(new Set([].concat(Ye,n)))}a=n}else{var l=we==="2"||we==="3"?te(Ye,xe.treeTiledArrayMap,Oe.children,Oe.value):Ye;if(t.checked==false){n=$([].concat(l),i,Oe.children,Oe.value)}else{n=Array.from(new Set([].concat(l,n)))}a=Z(n,xe.treeTiledArrayMap,Oe.children,Oe.value)}}else{a=n}if(!e.checkStrictly){if(we==="2"){n=re(a,xe.treeTiledArrayMap,Oe.children)}else if(we==="3"){n=ee(a,xe.treeTiledArrayMap,Oe.children,Oe.value)}else if(V==false){n=re(a,xe.treeTiledArrayMap,Oe.children)}else{n=a}}}var o=a.map((function(e){return xe.treeTiledArrayMap[e]}));if(oe){var u=Ue.value;var c=Ue.label;var d=n.map((function(e){var r;return r={},r[c]=xe.treeTiledArrayMap[e][Oe.label],r[u]=xe.treeTiledArrayMap[e][Oe.value],r}));if(U){$e(d,n.map((function(e){return xe.treeTiledArrayMap[e]})),o,t)}else{$e(d[0],xe.treeTiledArrayMap[n[0]],o,t)}}else{if(U){$e(n,n.map((function(e){return xe.treeTiledArrayMap[e]})),o,t)}else{$e(n[0],xe.treeTiledArrayMap[n[0]],o,t)}}}));var rr=g.useCallbackRef((function(e){return Y==null?void 0:Y(e)}));var tr=S((function(){var e=C(xe.treeList||[]);if(He&&ve!=="highlight"){var r=o(C(xe.treeList||[]),(function(e){var r;if(Ce){return Ce(e,He)}var t=(r=e[Oe.label])==null?void 0:r.toLowerCase();return t.indexOf(He.toLowerCase())>=0}),{childrenName:Oe.children});return r}return e}),[Ce,Oe.children,Oe.label,ve,xe.treeList,He]);var nr=S((function(){var e=function e(r){return r==null?void 0:r.map((function(r){var t;var n=(rr==null?void 0:rr(r))||r;var a=ue?undefined:n.disabled;var i=n[Oe.label]||"";var l;if(He&&m(i)){var s=i==null?void 0:i.toLowerCase();var o=s.indexOf(He.toLowerCase());var u=i.substring(0,o);var d=i.slice(o+He.length);var f=i.slice(o,o+He.length);l=o>-1?F("span",{className:p({"v-tree-item-disabled":n.disabled}),children:[u,K("span",{className:"site-tree-search-value",children:f}),d]}):null}if(!l&&n.disabled){l=K("span",{className:p({"v-tree-item-disabled":n.disabled}),children:i})}var v=n[Oe.children];return b({},n,(t={disabled:a},t[Oe.label]=l||i,t._treeItemName=i,t._disabled=n.disabled,t[Oe.children]=c(v)&&v.length>0?e(v):undefined,t))}))};return e(tr)}),[tr,rr,ue,Oe.label,Oe.children,He]);var ar=g.useCallbackRef((function(r){return new Promise((function(t,n){return new Promise((function(a,i){var l,s,o,u,c;if(r[Oe.children]){t();return a()}var d=function(){try{return a()}catch(e){return i(e)}};var f=function(e){try{void A.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(((s=e.loadDataServiceConfig)==null||s.getParams==null?void 0:s.getParams(r))||{})).then((function(n){try{u=n;c=(o=e.loadDataServiceConfig)!=null&&o.onRequestResultAdapter?e.loadDataServiceConfig.onRequestResultAdapter(u):u;void Me.treeListAppendChildren({value:r[Oe.value],appendList:c,childrenName:Oe.children,valueName:Oe.value}).then((function(e){Qe(e.treeList);t()}));return d()}catch(e){return f(e)}}),f)}catch(e){f(e)}}))}))}));var ir=g.useCallbackRef((function(r){var t=r==null?void 0:r[Oe.children];var n=e.loadDataFlag;var a=n?!r.isLeaf:false;var i=t&&t.length>0||a;return!i}));var lr=g.useCallbackRef((function(r){var t,n,a;var i=r._treeItemName||r[Oe.label];var l=Le==null?void 0:Le(b({},r,(t={},t[Oe.label]=i,t)));if(l!=null&&l.operateList.length){return F(x,{children:[K("span",{className:"tree-item-title",children:(he==null?void 0:he(r))||(r==null?void 0:r[Oe.label])}),K(E,b({gap:5},l,{dropdownMenuProps:b({placement:"bottomRight",isFixed:true},l==null?void 0:l.dropdownMenuProps),className:p("tree-item-title-operate",l.className)}))]})}if(Ve==="fold"){var s;var o=[];if((s=e.menuOptions)!=null&&s.fold){var u,c,d;o=((u=e.menuOptions)==null||(c=u[Ve])==null?void 0:c.call(u,b({},r,(d={},d[Oe.label]=i,d))))||[]}else{var f;o=(e.getMenuOptions==null?void 0:e.getMenuOptions(b({},r,(f={},f[Oe.label]=i,f))))||[]}return F(x,{children:[K("span",{className:"tree-item-title",children:(he==null?void 0:he(r))||(r==null?void 0:r[Oe.label])}),o.length>0&&K(D,{menuList:o,placement:"bottomRight",children:K(v,{})})]})}var m=(n=e.menuOptions)==null||n.tile==null?void 0:n.tile(b({},r,(a={},a[Oe.label]=i,a)));return F(x,{children:[K("span",{className:"tree-item-title",children:(he==null?void 0:he(r))||(r==null?void 0:r[Oe.label])}),m?K(E,b({gap:5},m,{className:p("tree-item-title-operate",m.className)})):null]})}));var sr=g.useDebounceCallback((function(r){Be(r);e.onSearchValueChange==null?void 0:e.onSearchValueChange(r)}),300);var or=g.useCallbackRef((function(e){sr(e.target.value)}));var ur=g.useCallbackRef((function(r){if(!e.icon)return null;if(M(e.icon))return e.icon;var t=ir(r.data);return e.icon(b({},r,{isParent:!t,isLeaf:t}))}));var cr=S((function(){return{title:Oe.label,key:Oe.value,children:Oe.children}}),[Oe]);var dr=nr.length>0&&xe.requestStatus!=="request-error";var fr=b({showLine:{showLeafIcon:false},titleRender:lr,blockNode:true,switcherIcon:K(f,{}),onDrop:function e(r){if(me){var t=me(r);if(!t)return}var n=Q(tr,Oe,r),a=n.dataList,i=n.dragNodeData;pe==null?void 0:pe(i);Qe(a)},expandedKeys:Se},je,{fieldNames:cr,treeData:nr,onExpand:Ze,loadData:e.loadDataFlag?ar:undefined,style:{width:"100%"},icon:ur});var vr={onCheck:er,checkable:U,checkedKeys:Ye};var pr={onSelect:er,multiple:false,selectedKeys:Ye};var mr=U?vr:pr;var hr=p("v-tree-wrapper","v-tree-wrapper-menu-"+Fe,ye);var gr=xe.treeList.length>0&&!dr&&He;return F("div",{className:hr,style:t,children:[!!ae&&F("div",{className:"v-tree-wrapper-search-area",style:ge,children:[K(_,{className:"v-tree-wrapper-search",placeholder:a(ie)?"搜索":ie,onChange:or,value:He,allowClear:true}),!!e.searchExtraElement&&K("span",{className:"v-tree-wrapper-search-extra",children:e.searchExtraElement})]}),dr?F("div",{className:"v-tree-wrapper-tree-wrapper",children:[K(w,{spinning:xe.requestStatus==="request-progress"}),K(j,b({},mr,fr,{className:"v-tree-wrapper-tree"}))]}):K(I,{status:xe.requestStatus,loading:De,messageConfig:b({"request-success":gr?"搜索结果为空":"暂无数据","request-error":xe.requestErrorMessage},le),errorButton:K(T,{type:"primary",onClick:Je,children:"重新获取数据"})})]})}));var ie=u(ae,{getTreeDataList:Y});export{ie 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 s,treeFilter as u,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 N,Button as S,message as A}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 _}from"../fba-hooks/index.js";import{InputSearchWrapper as I}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 s=n.dropPosition-Number(l[l.length-1]);var u=t.value;var o=t.children;var c=function e(r,t,n){for(var a=0;a<r.length;a++){if(r[a][u]===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&&s===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(s===-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 s=a.children;F.walkThroughTree((i={},i[l]=undefined,i[s]=n,i),(function(e,r,t){e["__index"]=r;e["__parentId"]=t==null?void 0:t[l]}),s);var u=e(n,s);var o=u.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 s={};var u=[];var o=[];t.forEach((function(e){var r;if(i((r=n[e])==null?void 0:r[a])){u.push(e)}else{s[e]=e}}));if(u.length>0){u.forEach((function(r){var i=e(n[r][a],a);if(Object.keys(s).length>i.length){var u=i.filter((function(e){return t.find((function(r){return r===e[l]}))}));if(u.length===i.length){o.push(r)}}}))}return t.filter((function(e){return o.find((function(r){return r==e}))||s[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 s={};r.forEach((function(e){var r;var u=(r=t[e])==null?void 0:r[n];if(i(u)){var o=l(u,{value:a,children:n});s=C({},s,o)}}));return r.filter((function(e){return!s[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 s=[].concat(t);t.forEach((function(r){var t;var u=(t=n[r])==null?void 0:t[a];if(i(u)){var o=e(u,a);s=s.concat(o.map((function(e){return e[l]})))}}));return Array.from(new Set(s))};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"];var le=function e(r,t){var n=r.slice().sort();var a=t.slice().sort();return JSON.stringify(n)===JSON.stringify(a)};var se=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,se=e.showSearch,ue=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,Ne=e.checkableType,Se=e.clickParentNodeToggleExpand,Ae=e.disableNodeSelect,Re=e.required,qe=T(e,ie);var ke=e.hasOwnProperty("selectorTreeList");var xe=n||{};var Me=i||[];var Ee=q([]),Pe=Ee[0],De=Ee[1];var Oe=Y(R).useStore(),_e=Oe[0],Ie=Oe[1];var Ve=_.useSafeState(false),Fe=Ve[0],Ke=Ve[1];var Ue="request-progress-"+e.modelKey;var ze=he==="highlight";var He=k((function(){return C({label:"label",value:"value",children:"children"},e.fieldNames)}),[e.fieldNames]);var Je=ve===undefined?"fold":ve;var Be=pe===undefined?"click":pe;var Ye=x(true);var Ge=x(undefined);var We=k((function(){return C({label:"label",value:"value"},ce)}),[ce]);var Qe=q(),Xe=Qe[0],Ze=Qe[1];var $e=k((function(){return X(c,We)}),[We,c]);_.useEffectCustom((function(){if(_e.treeList.length>0){if(Ye.current&&a(c)){Ye.current=false;if(Te){De(W(_e.treeList,He));return}else if(me&&_e.treeList.length){De([_e.treeList[0][He.value]]);return}}if(!a(c)){if(Ge.current&&!le($e,Ge.current)){var e=ar($e,true);De(Array.from(new Set(Pe==null?void 0:Pe.concat(e))))}}}}),[_e.treeList,JSON.stringify($e)]);var er=function e(r){return r===""||a(r)};var rr=function e(r){var t=r;if(xe.onRequestResultAdapter){t=xe.onRequestResultAdapter(r)}else if(He.list){t=L(r,He.list,[])||[]}if(!d(t)){console.warn("接口返回数据为非数组结构,确认是否需要配置fieldNames.list进行解析");return[]}return t};_.useEffectCustom((function(){Ze($)}),[$]);var tr=b.useCallbackRef((function(){return new Promise((function(e,r){var t,n,a,i,l;var s=function(){try{return e()}catch(e){return r(e)}};var u=function(e){try{Ye.current=false;Ke(false);void A.error(e.message||"数据查询异常...");return s()}catch(e){return r(e)}};try{if(!xe.onRequest){throw new Error("onRequest 调用接口服务不能为空")}t=xe.requiredParamsKeys;n=y({},xe.params);if(t){a=t.find((function(e){return er(n[e])}));if(a){void Ie.changeRequestStatus({status:"no-dependencies-params"});console.warn("TreeWrapper组件:参数:"+t.join("、")+"不能为空");return e()}}var o=function(){try{return s()}catch(e){return u(e)}};var c=function(e){try{window[Ue]=false;Ke(false);void Ie.changeRequestStatus({status:"request-error",errorMessage:e.message});return o()}catch(e){return u(e)}};try{Ke(true);return Promise.resolve(Ie.changeRequestStatus({status:"request-progress"})).then((function(e){try{window[Ue]=true;return Promise.resolve(xe.onRequest==null?void 0:xe.onRequest(n)).then((function(e){try{i=e;B==null||B(i);l=rr(i);if(l.length===0){Ye.current=false}nr(l);Ke(false);window[Ue]=false;return o()}catch(e){return c(e)}}),c)}catch(e){return c(e)}}),c)}catch(e){c(e)}}catch(e){u(e)}}))}));_.useEffectCustom((function(){if(ke)return;if(Me.length){void tr();return}var e=Y(R).getState();if(e.requestStatus==="request-success"){J==null||J(e.treeList);return}if(!window[Ue]){void tr()}else{J==null||J(e.treeList)}}),Me);_.useEffectCustom((function(){if(ke){nr(l||[])}}),[l]);var nr=b.useCallbackRef((function(e){if((e==null?void 0:e.length)===0&&_e.treeList.length===0){void Ie.changeRequestStatus({status:"request-success"});return}void Ie.setTreeList({treeList:e||[],childrenName:He.children,valueName:He.value});J==null||J(e)}));var ar=function e(r,t){var n=[];r.forEach((function(e){if(!t&&Pe!=null&&Pe.includes(e))return;var r=Q(e,_e.treeList,He);n=n.concat(r)}));return n};b.useUpdateEffect((function(){if(Xe){var e=_e.treeTiledArray.filter((function(e){var r=e[He.label]||"";if(je){return je(e,Xe)}return String(r).toLowerCase().includes(Xe.toLowerCase())}));var r=ar(e.map((function(e){return e[He.value]})),true);De(Array.from(new Set(r)))}else{De([])}}),[Xe]);M(r,(function(){return{onClearSelectorList:function e(){void Ie.resetTreeList()},getTreeDataList:function e(){return _e.treeList},onChangeExpandedKeys:function e(r){De(r)},onSelectAll:function e(){var r=_e.treeTiledArray.map((function(e){return e[He.value]}));De(r);f==null||f(r,undefined,_e.treeList,undefined)},onCancelSelectAll:function e(){De([]);f==null||f(undefined)},onExpandedAll:function e(){var r=_e.treeTiledArray.map((function(e){return e[He.value]}));De(r)},onCancelExpandedAll:function e(){De([])}}}));var ir=b.useCallbackRef((function(e){De(e)}));var lr=function r(t,n,a,i){Ge.current=s(t);if(s(t).length===0){var l=i==null?void 0:i.node[He.value];var u=_e.treeTiledArrayMap[l];e.onChange==null||e.onChange(undefined,u,[u],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&&!s(r).length){return}if(Ae){var i=_e.treeTiledArrayMap[r[0]];var l=i?Ae(i):false;if(l){return}}}n=s(n);if(!H){a=n}else{if(se&&Xe&&!ze){var u=t==null?void 0:t.node;if(e.checkStrictly){if(t.checked==false){n=$e.filter((function(e){return e!=u[He.value]}))}else{n=Array.from(new Set([].concat($e,n)))}a=n}else{var o=Ne==="2"||Ne==="3"?ae($e,_e.treeTiledArrayMap,He.children,He.value):$e;if(t.checked==false){n=re([].concat(o),u,He.children,He.value)}else{n=Array.from(new Set([].concat(o,n)))}a=ee(n,_e.treeTiledArrayMap,He.children,He.value)}}else{a=n}if(!e.checkStrictly){if(Ne==="2"){n=ne(a,_e.treeTiledArrayMap,He.children)}else if(Ne==="3"){n=te(a,_e.treeTiledArrayMap,He.children,He.value)}else if(K==false){n=ne(a,_e.treeTiledArrayMap,He.children)}else{n=a}}}var c=a.map((function(e){return _e.treeTiledArrayMap[e]}));if(de){var d=We.value;var f=We.label;var v=n.map((function(e){var r;return r={},r[f]=_e.treeTiledArrayMap[e][He.label],r[d]=_e.treeTiledArrayMap[e][He.value],r}));if(H){lr(v,n.map((function(e){return _e.treeTiledArrayMap[e]})),c,t)}else{lr(v[0],_e.treeTiledArrayMap[n[0]],c,t)}}else{if(H){lr(n,n.map((function(e){return _e.treeTiledArrayMap[e]})),c,t)}else{lr(n[0],_e.treeTiledArrayMap[n[0]],c,t)}}}));var ur=b.useCallbackRef((function(e){return G==null?void 0:G(e)}));var or=k((function(){var e=w(_e.treeList||[]);if(Xe&&he!=="highlight"){var r=u(w(_e.treeList||[]),(function(e){var r;if(je){return je(e,Xe)}var t=(r=e[He.label])==null?void 0:r.toLowerCase();return t.indexOf(Xe.toLowerCase())>=0}),{childrenName:He.children});return r}return e}),[je,He.children,He.label,he,_e.treeList,Xe]);var cr=k((function(){var e=function r(t){return t==null?void 0:t.map((function(r){var t;var n=(ur==null?void 0:ur(r))||r;var a=fe?undefined:n.disabled;var i=n[He.label]||"";var l;if(Xe&&g(i)){var s=i==null?void 0:i.toLowerCase();var u=s.indexOf(Xe.toLowerCase());var o=i.substring(0,u);var c=i.slice(u+Xe.length);var f=i.slice(u,u+Xe.length);l=u>-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[He.children];return C({},n,(t={disabled:a},t[He.label]=l||i,t._treeItemName=i,t._disabled=n.disabled,t[He.children]=d(v)&&v.length>0?e(v):undefined,t))}))};return e(or)}),[or,ur,fe,He.label,He.children,Xe]);var dr=b.useCallbackRef((function(r){return new Promise((function(t,n){return new Promise((function(a,i){var l,s,u,o,c;if(r[He.children]){t();return a()}var d=function(){try{return a()}catch(e){return i(e)}};var f=function(e){try{void A.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(((s=e.loadDataServiceConfig)==null||s.getParams==null?void 0:s.getParams(r))||{})).then((function(n){try{o=n;c=(u=e.loadDataServiceConfig)!=null&&u.onRequestResultAdapter?e.loadDataServiceConfig.onRequestResultAdapter(o):o;void Ie.treeListAppendChildren({value:r[He.value],appendList:c,childrenName:He.children,valueName:He.value}).then((function(e){nr(e.treeList);t()}));return d()}catch(e){return f(e)}}),f)}catch(e){f(e)}}))}))}));var fr=b.useCallbackRef((function(r){var t=r==null?void 0:r[He.children];var n=e.loadDataFlag;var a=n?!r.isLeaf:false;var i=t&&t.length>0||a;return!i}));var vr=b.useCallbackRef((function(r){var t,n,a;var i=r._treeItemName||r[He.label];var l=we==null?void 0:we(C({},r,(t={},t[He.label]=i,t)));if(l!=null&&l.operateList.length){return U(E,{children:[z("span",{className:"tree-item-title","data-value":r[He.value],children:(be==null?void 0:be(r))||(r==null?void 0:r[He.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(Je==="fold"){var s;var u=[];if((s=e.menuOptions)!=null&&s.fold){var o,c,d;u=((o=e.menuOptions)==null||(c=o[Je])==null?void 0:c.call(o,C({},r,(d={},d[He.label]=i,d))))||[]}else{var f;u=(e.getMenuOptions==null?void 0:e.getMenuOptions(C({},r,(f={},f[He.label]=i,f))))||[]}return U(E,{children:[z("span",{className:"tree-item-title","data-value":r[He.value],children:(be==null?void 0:be(r))||(r==null?void 0:r[He.label])}),u.length>0&&z(O,{menuList:u,placement:"bottomRight",children:z(m,{})})]})}var v=(n=e.menuOptions)==null||n.tile==null?void 0:n.tile(C({},r,(a={},a[He.label]=i,a)));return U(E,{children:[z("span",{className:"tree-item-title","data-value":r[He.value],children:(be==null?void 0:be(r))||(r==null?void 0:r[He.label])}),v?z(D,C({gap:5},v,{className:h("tree-item-title-operate",v.className)})):null]})}));var pr=b.useDebounceCallback((function(r){Ze(r);e.onSearchValueChange==null||e.onSearchValueChange(r)}),300);var mr=b.useCallbackRef((function(e){pr(e.target.value)}));var hr=b.useCallbackRef((function(r){if(!e.icon)return null;if(P(e.icon))return e.icon;var t=fr(r.data);return e.icon(C({},r,{isParent:!t,isLeaf:t}))}));var gr=k((function(){return{title:He.label,key:He.value,children:He.children}}),[He]);var yr=cr.length>0&&_e.requestStatus!=="request-error";var br=C({showLine:{showLeafIcon:false},titleRender:vr,blockNode:true,switcherIcon:z(p,{}),onDrop:function e(r){if(ye){var t=ye(r);if(!t)return}var n=Z(or,He,r),a=n.dataList,i=n.dragNodeData;ge==null||ge(i);nr(a)},expandedKeys:Pe},qe,{fieldNames:gr,treeData:cr,onExpand:ir,loadData:e.loadDataFlag?dr:undefined,style:{width:"100%"},icon:hr,onClick:function e(r){if(Se){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[He.children]&&i[He.children].length>0){var l=Pe.includes(n);if(l){var s=v.arrayRemove(Pe,n);De([].concat(s))}else{De([].concat(Pe,[n]))}}}}}});var Lr={onCheck:sr,checkable:H,checkedKeys:$e};var Cr={onSelect:sr,multiple:false,selectedKeys:$e};var Tr=H?Lr:Cr;var wr=h("v-tree-wrapper","v-tree-wrapper-menu-"+Be,Ce);var jr=_e.treeList.length>0&&!yr&&Xe;return U("div",{className:wr,style:t,children:[!!se&&U("div",{className:"v-tree-wrapper-search-area",style:Le,children:[z(I,{className:"v-tree-wrapper-search",placeholder:a(ue)?"搜索":ue,onChange:mr,value:Xe,allowClear:true}),!!e.searchExtraElement&&z("span",{className:"v-tree-wrapper-search-extra",children:e.searchExtraElement})]}),yr?U("div",{className:"v-tree-wrapper-tree-wrapper",children:[z(j,{spinning:_e.requestStatus==="request-progress"}),z(N,C({},Tr,br,{className:"v-tree-wrapper-tree"}))]}):z(V,{status:_e.requestStatus,loading:Fe,messageConfig:C({"request-success":jr?"搜索结果为空":"暂无数据","request-error":_e.requestErrorMessage},oe),errorButton:z(S,{type:"primary",onClick:tr,children:"重新获取数据"})})]})}));var ue=c(se,{getTreeDataList:G});export{ue 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 { 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 { 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 // required?: boolean;\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\nexport type TreeWrapperRefApi = {\n onClearSelectorList: () => void;\n getTreeDataList: () => TreeProps['treeData'];\n onChangeExpandedKeys: (expandedKeys: Array<string | number>) => void;\n /** 选择所有 */\n onSelectAll: () => void;\n /** 取消选择所有 */\n onCancelSelectAll: () => void;\n /** 展开所有 */\n onExpandedAll: () => void;\n /** 取消展开所有 */\n onCancelExpandedAll: () => void;\n};\n\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 = 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 ...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\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 (responseFirstRef.current && isUndefinedOrNull(value)) {\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 (!isUndefinedOrNull(value)) {\n const expandedKeys = getTreeExpandedKeys(valueList, true);\n setTreeExpandedKeys(Array.from(new Set(treeExpandedKeys?.concat(expandedKeys))));\n }\n }\n }, [value, state.treeList, 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 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 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 }\n finalCheckedValueList = toArray(finalCheckedValueList);\n\n if (checkable == false) {\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\">{labelRender?.(nodeData) || nodeData?.[fieldNames.label]}</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\">{labelRender?.(nodeData) || nodeData?.[fieldNames.label]}</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\">{labelRender?.(nodeData) || nodeData?.[fieldNames.label]}</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 };\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","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","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","labelInValueFieldNamesMerge","_useState2","treeSearchValue","setTreeSearchValue","valueList","useEffectCustom","current","expandedKeys","getTreeExpandedKeys","valueIsEmpty","serviceResponseHandle","respData","result","onRequestResultAdapter","list","_get","console","warn","startDataSourceRequest","_hooks","useCallbackRef","Promise","$return","$error","requiredParamsKeys","_params","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","onChangeExpandedKeys","onSelectAll","onCancelSelectAll","onExpandedAll","onCancelExpandedAll","onExpand","onInnerChange","selectedKey","operateNodeData","operateAllNodeDataList","operateInfo","toArray","nodeValue","onTreeChangeHandle","checkedData","finalCheckedValueList","completeCheckedValueList","checkStrictly","checked","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","slice","centerStr","_jsxs","_classNames","_jsx","_treeItemName","_disabled","loadData","reject","_props$loadDataServic","_props$loadDataServic2","_props$loadDataServic3","_respData2","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","checkedProps","onCheck","checkedKeys","selectedProps","onSelect","multiple","selectedKeys","sceneProps","cName","isSearchEmpty","InputSearchWrapper","placeholder","allowClear","searchExtraElement","Spin","spinning","Tree","RequestStatus","messageConfig","errorButton","Button","type","onClick","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\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 /** 选择所有 */\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 ...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 (responseFirstRef.current && isUndefinedOrNull(value)) {\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 (!isUndefinedOrNull(value)) {\n if (innerValueListRef.current && !compareArrays(valueList, innerValueListRef.current)) {\n const innerExpandedKeys = getTreeExpandedKeys(valueList, true);\n setTreeExpandedKeys(Array.from(new Set(treeExpandedKeys?.concat(innerExpandedKeys))));\n }\n }\n }\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 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","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","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","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-a0769acd.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-7f4ad045.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"]: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?void 0: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?void 0:T(m)}else{void d.error("上传操作失败...")}}}}));if(n){I([].concat(r))}O==null?void 0: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?void 0:O(o)}else if(e.file.status==="error"){if(T){T()}else{void d.error("上传操作失败...")}}I([].concat(r));f.onUploadChange==null?void 0: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?void 0: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};
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"]: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};
10
10
  //# sourceMappingURL=index.js.map