@flatbiz/antd 4.2.85 → 4.2.86
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.
- package/esm/button-operate/index.js +2 -1
- package/esm/button-operate/index.js.map +1 -1
- package/esm/button-wrapper/index.js +2 -1
- package/esm/button-wrapper/index.js.map +1 -1
- package/esm/card-wrapper/index.css +1 -0
- package/esm/card-wrapper/index.js +5 -0
- package/esm/card-wrapper/index.js.map +1 -0
- package/esm/config-provider-wrapper/index.js +2 -1
- package/esm/config-provider-wrapper/index.js.map +1 -1
- package/esm/create-drawer-wrapper-model/index.js.map +1 -1
- package/esm/create-modal-wrapper-model/index.js.map +1 -1
- package/esm/dialog-alert/index.js +2 -1
- package/esm/dialog-alert/index.js.map +1 -1
- package/esm/dialog-confirm/index.js +2 -1
- package/esm/dialog-confirm/index.js.map +1 -1
- package/esm/dialog-drawer/index.js +2 -1
- package/esm/dialog-drawer/index.js.map +1 -1
- package/esm/dialog-drawer-content/index.js +2 -1
- package/esm/dialog-drawer-content/index.js.map +1 -1
- package/esm/dialog-loading/index.js.map +1 -1
- package/esm/dialog-modal/index.js +2 -1
- package/esm/dialog-modal/index.js.map +1 -1
- package/esm/drawer-wrapper/index.js.map +1 -1
- package/esm/dropdown-menu-wrapper/index.js +2 -1
- package/esm/dropdown-menu-wrapper/index.js.map +1 -1
- package/esm/easy-table/index.js +2 -1
- package/esm/easy-table/index.js.map +1 -1
- package/esm/editable-table/index.js +10 -1
- package/esm/editable-table/index.js.map +1 -1
- package/esm/fba-app/index.css +1 -1
- package/esm/fba-app/index.js +3 -1
- package/esm/fba-app/index.js.map +1 -1
- package/esm/index-ac189a77.js +3 -0
- package/esm/index-ac189a77.js.map +1 -0
- package/esm/index.js +6 -5
- package/esm/label-value-layout/index.css +1 -1
- package/esm/label-value-layout/index.js +1 -1
- package/esm/label-value-layout/index.js.map +1 -1
- package/esm/local-loading/index.js.map +1 -1
- package/esm/pre-defined-class-name/index.css +1 -1
- package/esm/selector-wrapper/index.js +1 -1
- package/esm/selector-wrapper/index.js.map +1 -1
- package/esm/simple-layout/index.css +1 -1
- package/esm/simple-layout/index.js.map +1 -1
- package/esm/table-cell-render/index.js +2 -1
- package/esm/table-cell-render/index.js.map +1 -1
- package/esm/tag-list-select/index.js +1 -1
- package/esm/tag-list-select/index.js.map +1 -1
- package/esm/text-overflow-render/index.js +2 -1
- package/esm/text-overflow-render/index.js.map +1 -1
- package/esm/tips-title/index.css +1 -1
- package/esm/tree-wrapper/index.js +2 -1
- package/esm/tree-wrapper/index.js.map +1 -1
- package/esm/types/index.js.map +1 -1
- package/index.d.ts +144 -105
- package/package.json +4 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/tag-list-select/tag-list-select.tsx"],"sourcesContent":["import { isUndefinedOrNull, valueIsEqual } from '@flatbiz/utils';\nimport { Tag } from 'antd';\nimport { FC, Fragment, useMemo } from 'react';\n\nexport type TagListSelectValue = string | number | boolean;\nexport type TagListSelectDataItem = { label: string; value: TagListSelectValue; color?: string };\n\nexport type TagListSelectProps = {\n dataList: TagListSelectDataItem[];\n /** 颜色配置数据,例如:{ 1:'red', 2: 'blue'} key值与 dataList中value相同 */\n colorMap?: Record<string | number, string>;\n value?: TagListSelectValue;\n /** 是否强制匹配,默认值false */\n forceMatch?: boolean;\n};\n\n/**\n * 在列表数据中通过value匹配数据,以Tag形式展示\n * @param props\n * @returns\n * ```\n * 1. forceMatch: 是否强制匹配(默认值false)\n * - false: 匹配不到显示value值,\n * - true:匹配不到不显示\n * 2. value 与 dataList中label、value任一相等,都可匹配\n *\n * 用法1:\n * <TagListSelect\n * dataList=[{ label: '启用', value: 1 }]\n * colorMap={{ 1:'red', 2: 'blue'}}\n * value={1} />\n * =>\n * <Tag color={'red'}>启用</Tag>\n *\n * 用法2\n * <TagListSelect\n * dataList=[{ label: '启用', value: 1. color: 'red' }]\n * value=\"启用\" />\n * =>\n * <Tag color={'red'}>启用</Tag>\n * ```\n */\nexport const TagListSelect: FC<TagListSelectProps> = (props) => {\n const
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/tag-list-select/tag-list-select.tsx"],"sourcesContent":["import { isUndefinedOrNull, toArray, valueIsEqual } from '@flatbiz/utils';\nimport { Tag } from 'antd';\nimport { FC, Fragment, useMemo } from 'react';\n\nexport type TagListSelectValue = string | number | boolean;\nexport type TagListSelectDataItem = { label: string; value: TagListSelectValue; color?: string };\n\nexport type TagListSelectProps = {\n dataList: TagListSelectDataItem[];\n /** 颜色配置数据,例如:{ 1:'red', 2: 'blue'} key值与 dataList中value相同 */\n colorMap?: Record<string | number, string>;\n value?: TagListSelectValue | TagListSelectValue[];\n /** 是否强制匹配,默认值false */\n forceMatch?: boolean;\n};\n\n/**\n * 在列表数据中通过value匹配数据,以Tag形式展示\n * @param props\n * @returns\n * ```\n * 1. forceMatch: 是否强制匹配(默认值false)\n * - false: 匹配不到显示value值,\n * - true:匹配不到不显示\n * 2. value 与 dataList中label、value任一相等,都可匹配\n *\n * 用法1:\n * <TagListSelect\n * dataList=[{ label: '启用', value: 1 }]\n * colorMap={{ 1:'red', 2: 'blue'}}\n * value={1} />\n * =>\n * <Tag color={'red'}>启用</Tag>\n *\n * 用法2\n * <TagListSelect\n * dataList=[{ label: '启用', value: 1. color: 'red' }]\n * value=\"启用\" />\n * =>\n * <Tag color={'red'}>启用</Tag>\n * ```\n */\nexport const TagListSelect: FC<TagListSelectProps> = (props) => {\n const valueList = toArray<TagListSelectValue>(props.value);\n const tagList = useMemo(() => {\n if (isUndefinedOrNull(props.value)) {\n return [];\n }\n return valueList\n .map((value) => {\n const target = props.dataList?.find(\n (item) => valueIsEqual(item.value, value) || item.label === value,\n );\n if (target) {\n return {\n label: target.label,\n color: props.colorMap?.[String(target.value)] || target.color,\n value: value,\n };\n }\n if (props.forceMatch) {\n return undefined;\n }\n return { label: `${value}`, color: undefined, value: value };\n })\n .filter(Boolean) as TagListSelectDataItem[];\n }, [props.colorMap, props.dataList, props.forceMatch, props.value, valueList]);\n\n if (tagList.length === 0) {\n return <Fragment>{props.value}</Fragment>;\n }\n\n const hasColor = tagList.find((item) => !!item?.color);\n\n if (hasColor) {\n return (\n <Fragment>\n {tagList.map((item, index) => {\n return (\n <Tag\n color={item.color}\n style={index === tagList.length - 1 ? { margin: '0' } : undefined}\n key={index}\n >\n {item.label}\n </Tag>\n );\n })}\n </Fragment>\n );\n }\n\n return <Fragment>{tagList.map((item) => item.label).join(',')}</Fragment>;\n};\n\nTagListSelect.defaultProps = {\n forceMatch: false,\n};\n"],"names":["TagListSelect","props","valueList","toArray","value","tagList","useMemo","isUndefinedOrNull","map","_props$dataList","target","dataList","find","item","valueIsEqual","label","_props$colorMap","color","colorMap","String","forceMatch","undefined","filter","Boolean","length","_jsx","Fragment","children","hasColor","index","Tag","style","margin","join","defaultProps"],"mappings":";uMA0CaA,EAAwC,SAAxCA,EAAyCC,GACpD,IAAMC,EAAYC,EAA4BF,EAAMG,OACpD,IAAMC,EAAUC,GAAQ,WACtB,GAAIC,EAAkBN,EAAMG,OAAQ,CAClC,MAAO,EACT,CACA,OAAOF,EACJM,KAAI,SAACJ,GAAU,IAAAK,EACd,IAAMC,GAAMD,EAAGR,EAAMU,WAAQ,UAAA,EAAdF,EAAgBG,MAC7B,SAACC,GAAI,OAAKC,EAAaD,EAAKT,MAAOA,IAAUS,EAAKE,QAAUX,CAAK,IAEnE,GAAIM,EAAQ,CAAA,IAAAM,EACV,MAAO,CACLD,MAAOL,EAAOK,MACdE,QAAOD,EAAAf,EAAMiB,uBAANF,EAAiBG,OAAOT,EAAON,UAAWM,EAAOO,MACxDb,MAAOA,EAEX,CACA,GAAIH,EAAMmB,WAAY,CACpB,OAAOC,SACT,CACA,MAAO,CAAEN,SAAUX,EAASa,MAAOI,UAAWjB,MAAOA,EACvD,IACCkB,OAAOC,QACX,GAAE,CAACtB,EAAMiB,SAAUjB,EAAMU,SAAUV,EAAMmB,WAAYnB,EAAMG,MAAOF,IAEnE,GAAIG,EAAQmB,SAAW,EAAG,CACxB,OAAOC,EAACC,EAAQ,CAAAC,SAAE1B,EAAMG,OAC1B,CAEA,IAAMwB,EAAWvB,EAAQO,MAAK,SAACC,GAAI,SAAOA,GAAAA,MAAAA,EAAMI,UAEhD,GAAIW,EAAU,CACZ,OACEH,EAACC,EAAQ,CAAAC,SACNtB,EAAQG,KAAI,SAACK,EAAMgB,GAClB,OACEJ,EAACK,EAAG,CACFb,MAAOJ,EAAKI,MACZc,MAAOF,IAAUxB,EAAQmB,OAAS,EAAI,CAAEQ,OAAQ,KAAQX,UAAUM,SAGjEd,EAAKE,OAFDc,OAQjB,CAEA,OAAOJ,EAACC,EAAQ,CAAAC,SAAEtB,EAAQG,KAAI,SAACK,GAAI,OAAKA,EAAKE,SAAOkB,KAAK,MAC3D,EAEAjC,EAAckC,aAAe,CAC3Bd,WAAY"}
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
import './../button-wrapper/index.css';
|
|
3
3
|
import './../config-provider-wrapper/index.css';
|
|
4
4
|
import './../fba-hooks/index.css';
|
|
5
|
+
import './../types/index.css';
|
|
5
6
|
import './../fba-utils/index.css';
|
|
6
7
|
import './../text-css-ellipsis/index.css';
|
|
7
8
|
import './index.css';
|
|
8
9
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
9
|
-
import{isEmpty as i}from"@dimjs/lang/cjs/is-empty";import{a as r,_ as e}from"../_rollupPluginBabelHelpers-fc015ef2.js";import{getStrByteLen as t,cutString as n}from"@flatbiz/utils";import{Tooltip as l}from"antd";import{Fragment as o}from"react";import{ButtonWrapper as
|
|
10
|
+
import{isEmpty as i}from"@dimjs/lang/cjs/is-empty";import{a as r,_ as e}from"../_rollupPluginBabelHelpers-fc015ef2.js";import{getStrByteLen as t,cutString as n}from"@flatbiz/utils";import{Tooltip as l}from"antd";import{Fragment as o}from"react";import{ButtonWrapper as s}from"../button-wrapper/index.js";import{TextCssEllipsis as a}from"../text-css-ellipsis/index.js";import{jsx as p,jsxs as m}from"react/jsx-runtime";import"@ant-design/icons/es/icons/LoadingOutlined";import"@dimjs/lang/cjs/is-promise";import"@wove/react/cjs/hooks";import"@dimjs/utils/cjs/class-names";import"../config-provider-wrapper/index.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-hooks/index.js";import"@dimjs/lang/cjs/is-array";import"../use-responsive-point-21b8c601.js";import"../index-ac189a77.js";import"@dimjs/utils/cjs/extend";import"../fba-utils/index.js";var d=["onClick","children","prefix"];var c=function i(t){var n=t.onClick,l=t.children,o=t.prefix,a=r(t,d);if(!!n){return m(s,e({type:"link",onClick:n,style:{padding:0,height:"initial",display:"inline-flex",alignItems:"center"}},a,{children:[o?p("span",{style:{marginRight:5},children:o}):null,l]}))}return m("span",e({},a,{style:e({display:"inline-flex"},a["style"]),children:[o?p("span",{style:{marginRight:5},children:o}):null,l]}))};var f=function r(e){var s=e.text,m=e.maxLength,d=e.placeholder,f=e.onClick,j=e.prefix;if(!s||i(s)||s==="")return p(o,{children:d});if(!!m){var u=t(s);if(u<=m*2){return p(c,{onClick:f,prefix:j,children:s})}else{var h=n(s,m*2);return p(l,{placement:"topLeft",title:s,children:p(c,{onClick:f,prefix:j,children:h})})}}if(e.width){return p(c,{onClick:f,prefix:j,children:p(a,{text:s,width:e.width})})}return p(c,{onClick:f,prefix:j,children:e.text})};export{f as TextOverflowRender};
|
|
10
11
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/text-overflow-render/text-overflow-render.tsx"],"sourcesContent":["import { isEmpty } from '@dimjs/lang';\nimport { cutString, getStrByteLen } from '@flatbiz/utils';\nimport { Tooltip } from 'antd';\nimport { Fragment, ReactElement } from 'react';\nimport { ButtonWrapper } from '../button-wrapper';\nimport { TextCssEllipsis } from '../text-css-ellipsis';\n\nconst LinkRender = (props: {\n onClick?: (e) => void;\n children?: ReactElement | string;\n prefix?: string | ReactElement;\n}) => {\n const { onClick, children, prefix, ...otherProps } = props;\n if (!!onClick) {\n return (\n <ButtonWrapper\n type=\"link\"\n onClick={onClick}\n style={{ padding: 0, height: 'initial', display: 'inline-flex', alignItems: 'center' }}\n {...otherProps}\n >\n {prefix ? <span style={{ marginRight: 5 }}>{prefix}</span> : null}\n {children}\n </ButtonWrapper>\n );\n }\n return (\n <span {...otherProps} style={{ display: 'inline-flex', ...otherProps['style'] }}>\n {prefix ? <span style={{ marginRight: 5 }}>{prefix}</span> : null}\n {children}\n </span>\n );\n};\n\nexport type TextOverflowRenderProps = {\n /** width 宽度控制超长 */\n width?: number;\n /** maxLength 数字控制超长 */\n maxLength?: number;\n /** 完整文本 */\n text?: string;\n /** 文本前缀显示 */\n prefix?: string | ReactElement;\n /** 数据不存在时,占位符 */\n placeholder?: ReactElement | string;\n onClick?: (e) => void;\n};\n\n/**\n * 文本显示超出截取,被截取的添加Tooltip显示完整数据\n * ```\n * 控制文本显示两种方式\n * 1. 通过 maxLength 控制超长\n * 2. 通过 width 控制超长\n *\n * 3. maxLength 与 width 互斥,优先级:maxLength > width\n * ```\n * @param props\n * @returns\n */\nexport const TextOverflowRender = (props: TextOverflowRenderProps) => {\n const { text, maxLength, placeholder, onClick, prefix } = props;\n\n if (!text || isEmpty(text) || text === '') return <Fragment>{placeholder}</Fragment>;\n if (!!maxLength) {\n const strByteLen = getStrByteLen(text);\n if (strByteLen <= maxLength * 2) {\n return (\n <LinkRender onClick={onClick} prefix={prefix}>\n {text}\n </LinkRender>\n );\n } else {\n const resultTitle = cutString(text, maxLength * 2);\n return (\n <Tooltip placement=\"topLeft\" title={text}>\n <LinkRender onClick={onClick} prefix={prefix}>\n {resultTitle}\n </LinkRender>\n </Tooltip>\n );\n }\n }\n if (props.width) {\n return (\n <LinkRender onClick={onClick} prefix={prefix}>\n <TextCssEllipsis text={text} width={props.width} />\n </LinkRender>\n );\n }\n return (\n <LinkRender onClick={onClick} prefix={prefix}>\n {props.text}\n </LinkRender>\n );\n};\n"],"names":["LinkRender","props","onClick","children","prefix","otherProps","_objectWithoutPropertiesLoose","_excluded","_jsxs","ButtonWrapper","_extends","type","style","padding","height","display","alignItems","_jsx","marginRight","TextOverflowRender","text","maxLength","placeholder","_isEmpty","Fragment","strByteLen","getStrByteLen","resultTitle","cutString","Tooltip","placement","title","width","TextCssEllipsis"],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/text-overflow-render/text-overflow-render.tsx"],"sourcesContent":["import { isEmpty } from '@dimjs/lang';\nimport { cutString, getStrByteLen } from '@flatbiz/utils';\nimport { Tooltip } from 'antd';\nimport { Fragment, ReactElement } from 'react';\nimport { ButtonWrapper } from '../button-wrapper';\nimport { TextCssEllipsis } from '../text-css-ellipsis';\n\nconst LinkRender = (props: {\n onClick?: (e) => void;\n children?: ReactElement | string;\n prefix?: string | ReactElement;\n}) => {\n const { onClick, children, prefix, ...otherProps } = props;\n if (!!onClick) {\n return (\n <ButtonWrapper\n type=\"link\"\n onClick={onClick}\n style={{ padding: 0, height: 'initial', display: 'inline-flex', alignItems: 'center' }}\n {...otherProps}\n >\n {prefix ? <span style={{ marginRight: 5 }}>{prefix}</span> : null}\n {children}\n </ButtonWrapper>\n );\n }\n return (\n <span {...otherProps} style={{ display: 'inline-flex', ...otherProps['style'] }}>\n {prefix ? <span style={{ marginRight: 5 }}>{prefix}</span> : null}\n {children}\n </span>\n );\n};\n\nexport type TextOverflowRenderProps = {\n /** width 宽度控制超长 */\n width?: number;\n /** maxLength 数字控制超长 */\n maxLength?: number;\n /** 完整文本 */\n text?: string;\n /** 文本前缀显示 */\n prefix?: string | ReactElement;\n /** 数据不存在时,占位符 */\n placeholder?: ReactElement | string;\n onClick?: (e) => void;\n};\n\n/**\n * 文本显示超出截取,被截取的添加Tooltip显示完整数据\n * ```\n * 控制文本显示两种方式\n * 1. 通过 maxLength 控制超长\n * 2. 通过 width 控制超长\n *\n * 3. maxLength 与 width 互斥,优先级:maxLength > width\n * ```\n * @param props\n * @returns\n */\nexport const TextOverflowRender = (props: TextOverflowRenderProps) => {\n const { text, maxLength, placeholder, onClick, prefix } = props;\n\n if (!text || isEmpty(text) || text === '') return <Fragment>{placeholder}</Fragment>;\n if (!!maxLength) {\n const strByteLen = getStrByteLen(text);\n if (strByteLen <= maxLength * 2) {\n return (\n <LinkRender onClick={onClick} prefix={prefix}>\n {text}\n </LinkRender>\n );\n } else {\n const resultTitle = cutString(text, maxLength * 2);\n return (\n <Tooltip placement=\"topLeft\" title={text}>\n <LinkRender onClick={onClick} prefix={prefix}>\n {resultTitle}\n </LinkRender>\n </Tooltip>\n );\n }\n }\n if (props.width) {\n return (\n <LinkRender onClick={onClick} prefix={prefix}>\n <TextCssEllipsis text={text} width={props.width} />\n </LinkRender>\n );\n }\n return (\n <LinkRender onClick={onClick} prefix={prefix}>\n {props.text}\n </LinkRender>\n );\n};\n"],"names":["LinkRender","props","onClick","children","prefix","otherProps","_objectWithoutPropertiesLoose","_excluded","_jsxs","ButtonWrapper","_extends","type","style","padding","height","display","alignItems","_jsx","marginRight","TextOverflowRender","text","maxLength","placeholder","_isEmpty","Fragment","strByteLen","getStrByteLen","resultTitle","cutString","Tooltip","placement","title","width","TextCssEllipsis"],"mappings":";6qCAOA,IAAMA,EAAa,SAAbA,EAAcC,GAKlB,IAAQC,EAA6CD,EAA7CC,QAASC,EAAoCF,EAApCE,SAAUC,EAA0BH,EAA1BG,OAAWC,EAAUC,EAAKL,EAAKM,GAC1D,KAAML,EAAS,CACb,OACEM,EAACC,EAAaC,EAAA,CACZC,KAAK,OACLT,QAASA,EACTU,MAAO,CAAEC,QAAS,EAAGC,OAAQ,UAAWC,QAAS,cAAeC,WAAY,WACxEX,EAAU,CAAAF,SAAA,CAEbC,EAASa,EAAA,OAAA,CAAML,MAAO,CAAEM,YAAa,GAAIf,SAAEC,IAAiB,KAC5DD,KAGP,CACA,OACEK,EAAA,OAAAE,EAAA,CAAA,EAAUL,EAAU,CAAEO,MAAKF,EAAA,CAAIK,QAAS,eAAkBV,EAAW,UAAWF,SAAA,CAC7EC,EAASa,EAAA,OAAA,CAAML,MAAO,CAAEM,YAAa,GAAIf,SAAEC,IAAiB,KAC5DD,KAGP,MA4BagB,EAAqB,SAArBA,EAAsBlB,GACjC,IAAQmB,EAAkDnB,EAAlDmB,KAAMC,EAA4CpB,EAA5CoB,UAAWC,EAAiCrB,EAAjCqB,YAAapB,EAAoBD,EAApBC,QAASE,EAAWH,EAAXG,OAE/C,IAAKgB,GAAQG,EAAQH,IAASA,IAAS,GAAI,OAAOH,EAACO,EAAQ,CAAArB,SAAEmB,IAC7D,KAAMD,EAAW,CACf,IAAMI,EAAaC,EAAcN,GACjC,GAAIK,GAAcJ,EAAY,EAAG,CAC/B,OACEJ,EAACjB,EAAU,CAACE,QAASA,EAASE,OAAQA,EAAOD,SAC1CiB,GAGP,KAAO,CACL,IAAMO,EAAcC,EAAUR,EAAMC,EAAY,GAChD,OACEJ,EAACY,EAAO,CAACC,UAAU,UAAUC,MAAOX,EAAKjB,SACvCc,EAACjB,EAAU,CAACE,QAASA,EAASE,OAAQA,EAAOD,SAC1CwB,KAIT,CACF,CACA,GAAI1B,EAAM+B,MAAO,CACf,OACEf,EAACjB,EAAU,CAACE,QAASA,EAASE,OAAQA,EAAOD,SAC3Cc,EAACgB,EAAe,CAACb,KAAMA,EAAMY,MAAO/B,EAAM+B,SAGhD,CACA,OACEf,EAACjB,EAAU,CAACE,QAASA,EAASE,OAAQA,EAAOD,SAC1CF,EAAMmB,MAGb"}
|
package/esm/tips-title/index.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.tips-title{border:1px solid #d9d9d9;border-radius:8px;padding:24px;position:relative}.tips-title-title{background-color:#fff;font-weight:600;left:10px;padding:0 10px;position:absolute;top:0;transform:translateY(-50%)}.tips-title-small{padding:12px}
|
|
1
|
+
.tips-title{border:1px solid #d9d9d9;border-radius:8px;padding:24px;position:relative}.tips-title-title{background-color:#fff;font-weight:600;left:10px;padding:0 10px;position:absolute;top:0;transform:translateY(-50%)}.tips-title-small{padding:12px}.tips-title+.tips-title{margin-top:20px}
|
|
@@ -4,6 +4,7 @@ import './../button-operate/index.css';
|
|
|
4
4
|
import './../button-wrapper/index.css';
|
|
5
5
|
import './../config-provider-wrapper/index.css';
|
|
6
6
|
import './../fba-hooks/index.css';
|
|
7
|
+
import './../types/index.css';
|
|
7
8
|
import './../fba-utils/index.css';
|
|
8
9
|
import './../dropdown-menu-wrapper/index.css';
|
|
9
10
|
import './../dialog-confirm/index.css';
|
|
@@ -12,5 +13,5 @@ import './../flex-layout/index.css';
|
|
|
12
13
|
import './../input-search-wrapper/index.css';
|
|
13
14
|
import './index.css';
|
|
14
15
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
15
|
-
import{treeToArray as e,treeToTiledArray as r,treeLeafParentsArray as t,isUndefinedOrNull as n,treeFilter as a,attachPropertiesToComponent as i}from"@flatbiz/utils";import{isArray as l}from"@dimjs/lang/cjs/is-array";import{Model as s}from"@dimjs/model-react";import o from"@ant-design/icons/es/icons/CaretDownFilled";import u from"@ant-design/icons/es/icons/MoreOutlined";import{classNames as c}from"@dimjs/utils/cjs/class-names";import{extend as d}from"@dimjs/utils/cjs/extend";import{hooks as v}from"@wove/react/cjs/hooks";import{a as f,_ as p}from"../_rollupPluginBabelHelpers-fc015ef2.js";import{cloneState as m}from"@dimjs/model";import{Spin as h,Tree as g,Button as b,message as y}from"antd";import{forwardRef as L,useState as w,useMemo as C,useRef as j,useImperativeHandle as N,Fragment as R,isValidElement as q}from"react";import{ButtonOperate as k}from"../button-operate/index.js";import{DropdownMenuWrapper as x}from"../dropdown-menu-wrapper/index.js";import{fbaHooks as S}from"../fba-hooks/index.js";import{InputSearchWrapper as T}from"../input-search-wrapper/index.js";import{RequestStatus as P}from"../request-status/index.js";import{tree as D}from"@dimjs/utils/cjs/tree";import{isObject as E}from"@dimjs/lang/cjs/is-object";import"dequal";import{jsxs as A,jsx as _}from"react/jsx-runtime";import"@dimjs/lang/cjs/is-undefined";import"@dimjs/lang/cjs/is-plain-object";import"@dimjs/lang/cjs/is-string";import"@dimjs/lang/cjs/is-promise";import"../button-wrapper/index.js";import"@ant-design/icons/es/icons/LoadingOutlined";import"../config-provider-wrapper/index.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"../use-responsive-point-21b8c601.js";var I={treeList:[],treeTiledArray:[],queryIsEmpty:false};var O={actions:{setTreeList:function r(t){return function(r){r.treeList=t.treeList||[];r.treeTiledArray=e(r.treeList,t.childrenName);r.requestStatus="request-success"}},resetTreeList:function e(){return function(e){e.treeList=[]}},changeRequestStatus:function e(r){return function(e){e.requestStatus=r;if(r==="request-error"){e.treeList=[]}}},treeListAppendChildren:function r(t){return function(r){var n=e(r.treeList,t.childrenName);var a=n.find((function(e){return e[t.valueName]===t.value}));if(a){if(l(t.appendList)&&t.appendList.length>0){a[t.childrenName]=t.appendList}else{a.isLeaf=true}}r.treeTiledArray=e(r.treeList,t.childrenName)}}},state:I};var V={};var F=function e(r){if(!V[r]){V[r]=s(O)}return V[r]};var K=function e(r){var t=F(r).getState();return t.treeList};var M=function e(n,a,i){var l=r(a,i);return t(n,l,true,{value:"value",parentValue:"parentValue"})};var U=function e(r,t){var a=n(r)?[]:r;a=l(a)?a:[a];a=a.map((function(e){if(E(e))return e[t.value];return e}));return a};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 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=m(r);var v;c(d,i,(function(e,r,t){t.splice(r,1);v=e}));if(!n.dropToGap){c(d,a,(function(e){e[u]=e[u]||[];e[u].unshift(v)}))}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(v)}))}else{var f=[];var p;c(d,a,(function(e,r,t){f=t;p=r}));if(s===-1){f.splice(p,0,v)}else{f.splice(p+1,0,v)}}return{dataList:d,dragNodeData:B(i,d,t)}};var B=function r(t,n,a){var i;var l=a.value;var s=a.children;D.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 H=["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"];var Y=L((function(t,i){var s=t.style,L=t.serviceConfig,D=t.effectDependencyList,E=t.selectorTreeList,I=t.value,O=t.onChange,V=t.modelKey,K=t.checkableResponseParentNode,B=K===void 0?true:K,Y=t.checkable,G=t.onSelectorTreeListChange,W=t.onRequestResponseChange,J=t.treeItemDataAdapter,Q=t.searchValue,X=t.showSearch,Z=t.searchPlaceholder,$=t.requestMessageConfig,ee=t.labelInValueFieldNames,re=t.labelInValue,te=t.disabledCanUse,ne=t.menuLayoutType,ae=t.menuTriggerType,ie=t.initRootExpand,le=t.searchResultType,se=t.onDropNodeHandle,oe=t.onDropPrev,ue=t.labelRender,ce=t.searchStyle,de=t.className,ve=t.defaultExpandAll,fe=t.menus,pe=f(t,H);var me=t.hasOwnProperty("selectorTreeList");var he=L||{};var ge=D||[];var be=w([]),ye=be[0],Le=be[1];var we=F(V).useStore(),Ce=we[0],je=we[1];var Ne=S.useSafeState(false),Re=Ne[0],qe=Ne[1];var ke="request-progress-"+t.modelKey;var xe=C((function(){return p({label:"label",value:"value",children:"children"},t.fieldNames)}),[t.fieldNames]);var Se=ne===undefined?"fold":ne;var Te=ae===undefined?"click":ae;var Pe=j(true);var De=C((function(){return p({label:"label",value:"value"},ee)}),[ee]);var Ee=w(),Ae=Ee[0],_e=Ee[1];var Ie=j();var Oe=C((function(){var e=U(I,De);return e}),[De,I]);S.useEffectCustom((function(){if(Ce.treeList.length>0){if(Pe.current){Pe.current=false;if(ve){var r=e(Ce.treeList,xe.children).map((function(e){return e[xe.value]}));Le(r);return}else if(ie&&Ce.treeList.length){Le([Ce.treeList[0][xe.value]]);return}}if(!n(I)){var t=Ue(Oe,true);Le(Array.from(new Set(ye==null?void 0:ye.concat(t))))}}}),[I,Ce.treeList,Oe]);var Ve=function e(r){return r===""||n(r)};var Fe=function e(r){var t=he.onRequestResultAdapter?he.onRequestResultAdapter(r):r;return t};S.useEffectCustom((function(){_e(Q)}),[Q]);var Ke=v.useCallbackRef((function(){return new Promise((function(e,r){var t,n,a,i,l,s;var o=function(){try{return e()}catch(e){return r(e)}};var u=function(e){try{Pe.current=false;qe(false);void y.error(e.message||"数据查询异常...");return o()}catch(e){return r(e)}};try{if(!he.onRequest){throw new Error("onRequest 调用接口服务不能为空")}t=he.requiredParamsKeys;n=d({},he.params);if(t){a=t.find((function(e){return Ve(n[e])}));if(a){console.warn("TreeWrapper组件:参数:"+t.join("、")+"不能为空");return e()}}var c=function(){try{return o()}catch(e){return u(e)}};var v=function(e){try{window[ke]=false;qe(false);void je.changeRequestStatus("request-error");return c()}catch(e){return u(e)}};try{qe(true);return Promise.resolve(je.changeRequestStatus("request-progress")).then((function(e){try{window[ke]=true;return Promise.resolve(he.onRequest==null?void 0:he.onRequest(n)).then((function(e){try{i=e;W==null?void 0:W(i);l=Fe(i);s=l||[];if(s.length===0){Pe.current=false}Me(s);qe(false);window[ke]=false;return c()}catch(e){return v(e)}}),v)}catch(e){return v(e)}}),v)}catch(e){v(e)}}catch(e){u(e)}}))}));S.useEffectCustom((function(){if(me)return;if(Boolean(ge.length)){void Ke();return}var e=F(V).getState();if(e.requestStatus==="request-success"){G==null?void 0:G(e.treeList);return}if(!window[ke]){void Ke()}else{G==null?void 0:G(e.treeList)}}),ge);S.useEffectCustom((function(){if(me){Me(E||[])}}),[E]);var Me=v.useCallbackRef((function(e){if((e==null?void 0:e.length)===0&&Ce.treeList.length===0){void je.changeRequestStatus("request-success");return}void je.setTreeList({treeList:e||[],childrenName:xe.children});G==null?void 0:G(e)}));var Ue=function e(r,t){var n=[];r.forEach((function(e){if(!t&&ye!=null&&ye.includes(e))return;var r=M(e,Ce.treeList,xe);n=n.concat(r.map((function(e){return e.value})))}));return n};v.useUpdateEffect((function(){if(Ae){var e=r(Ce.treeList||[],xe);var t=e.filter((function(e){var r;return(r=e.label)==null?void 0:r.includes(Ae||"")}));Le((function(e){var r=Ue(t.map((function(e){return e.value}))).concat(e||[]);return Array.from(new Set(r))}))}else{Le([])}}),[Ae]);N(i,(function(){return{onClearSelectorList:function e(){void je.resetTreeList()},getTreeDataList:function e(){return Ce.treeList},onChangeExpandedKeys:function e(r){Le(r)}}}));var ze=v.useCallbackRef((function(e){Le(e)}));var Be=v.useCallbackRef((function(e,r,t,a){Ie.current=e;var i=n(r)?[]:l(r)?r:[r];if(n(e)){O==null?void 0:O(e,r,t);return}if(re){var s=De.label;var o=De.value;var u=i.map((function(e){var r;return r={},r[s]=e[xe.label],r[o]=e[xe.value],r}));if(l(e)){O==null?void 0:O(u,i,t,a)}else{O==null?void 0:O(u[0],i[0],t,a)}}else{if(l(e)){O==null?void 0:O(e,i,t,a)}else{O==null?void 0:O(e,i[0],t,a)}}}));var He=v.useCallbackRef((function(e,r){var a=n(e)?[]:e;a=t.checkStrictly?e.checked:e;a=l(a)?a:[a];var i=[];var s=[];var o=[];var u=[];a.forEach((function(e){var r=Ce.treeTiledArray.find((function(r){return r[xe.value]===e}));if(!r)return;var t=r==null?void 0:r[xe.children];if(!l(t)||t.length===0){i.push(r);s.push(r[xe.value])}o.push(r);u.push(r[xe.value])}));if(Y){Le((function(e){var r=Ue(s).concat(e||[]);return Array.from(new Set(r))}));if(!B&&!t.checkStrictly){Be(s,i,o,r)}else{Be(u,o,o,r)}}else{if(a[0]){var c=o.find((function(e){return e[xe.value]===a[0]}));Be(a[0],c,[c],r)}else{var d=r.node[xe.value];var v=Ce.treeTiledArray.find((function(e){return e[xe.value]===d}));Be(undefined,v,[v],r)}}}));var Ye=v.useCallbackRef((function(e){return J==null?void 0:J(e)}));var Ge=C((function(){var e=m(Ce.treeList||[]);if(Ae&&le!=="highlight"){return a(m(Ce.treeList||[]),(function(e){var r;var t=(r=e[xe.label])==null?void 0:r.toLowerCase();return t.indexOf(Ae.toLowerCase())>=0}),{childrenName:xe.children})}return e}),[xe.children,xe.label,le,Ce.treeList,Ae]);var We=C((function(){var e=function e(r){return r==null?void 0:r.map((function(r){var t,n;var a=(Ye==null?void 0:Ye(r))||r;var i=te?undefined:a.disabled;var s=(t=a[xe.label])==null?void 0:t.toLowerCase();var o;if(Ae){var u=s.indexOf(Ae.toLowerCase());var d=s.substring(0,u);var v=s.slice(u+Ae.length);var f=s.slice(u,u+Ae.length);o=u>-1?A("span",{className:c({"v-tree-item-disabled":a.disabled}),children:[d,_("span",{className:"site-tree-search-value",children:f}),v]}):null}if(!o&&a.disabled){o=_("span",{className:c({"v-tree-item-disabled":a.disabled}),children:s})}var m=a[xe.children];return p({},a,(n={disabled:i},n[xe.label]=o||s,n._treeItemName=s,n._disabled=a.disabled,n[xe.children]=l(m)&&m.length>0?e(m):undefined,n))}))};return e(Ge)}),[Ge,Ye,te,xe.label,xe.children,Ae]);var Je=v.useCallbackRef((function(e){return new Promise((function(r,n){return new Promise((function(a,i){var l,s,o,u;if(e[xe.children]){r();return a()}var c=function(){try{return a()}catch(e){return i(e)}};var d=function(e){try{void y.error(e.message||"数据加载异常...");n();return c()}catch(e){return i(e)}};try{return Promise.resolve((l=t.loadDataServiceConfig)==null||l.onRequest==null?void 0:l.onRequest(((s=t.loadDataServiceConfig)==null||s.getParams==null?void 0:s.getParams(e))||{})).then((function(t){try{o=t;u=he.onRequestResultAdapter?he.onRequestResultAdapter(o):o;void je.treeListAppendChildren({value:e[xe.value],appendList:u,childrenName:xe.children,valueName:xe.value}).then((function(e){Me(e.treeList);r()}));return c()}catch(e){return d(e)}}),d)}catch(e){d(e)}}))}))}));var Qe=v.useCallbackRef((function(e){var r=e==null?void 0:e[xe.children];var n=t.loadDataFlag;var a=n?!e.isLeaf:false;var i=r&&r.length>0||a;return!i}));var Xe=v.useCallbackRef((function(e){var r,n,a;var i=e._treeItemName||e[xe.label];var l=fe==null?void 0:fe(p({},e,(r={},r[xe.label]=i,r)));if(l){return A(R,{children:[_("span",{className:"tree-item-title",children:(ue==null?void 0:ue(e))||(e==null?void 0:e[xe.label])}),_(k,p({gap:5},l,{dropdownMenuProps:p({placement:"bottomRight",isFixed:true},l==null?void 0:l.dropdownMenuProps),className:c("tree-item-title-operate",l.className)}))]})}if(Se==="fold"){var s;var o=[];if((s=t.menuOptions)!=null&&s.fold){var d,v,f;o=((d=t.menuOptions)==null||(v=d[Se])==null?void 0:v.call(d,p({},e,(f={},f[xe.label]=i,f))))||[]}else{var m;o=(t.getMenuOptions==null?void 0:t.getMenuOptions(p({},e,(m={},m[xe.label]=i,m))))||[]}return A(R,{children:[_("span",{className:"tree-item-title",children:(ue==null?void 0:ue(e))||(e==null?void 0:e[xe.label])}),o.length>0&&_(x,{menuList:o,placement:"bottomRight",children:_(u,{})})]})}var h=(n=t.menuOptions)==null||n.tile==null?void 0:n.tile(p({},e,(a={},a[xe.label]=i,a)));return A(R,{children:[_("span",{className:"tree-item-title",children:(ue==null?void 0:ue(e))||(e==null?void 0:e[xe.label])}),h?_(k,p({gap:5},h,{className:c("tree-item-title-operate",h.className)})):null]})}));var Ze=v.useDebounceCallback((function(e){_e(e);t.onSearchValueChange==null?void 0:t.onSearchValueChange(e)}),300);var $e=v.useCallbackRef((function(e){Ze(e.target.value)}));var er=v.useCallbackRef((function(e){if(!t.icon)return null;if(q(t.icon))return t.icon;var r=Qe(e.data);return t.icon(p({},e,{isParent:!r,isLeaf:r}))}));var rr=C((function(){return{title:xe.label,key:xe.value,children:xe.children}}),[xe]);var tr=We.length>0&&Ce.requestStatus!=="request-error";var nr=p({showLine:{showLeafIcon:false},titleRender:Xe,blockNode:true,switcherIcon:_(o,{}),onDrop:function e(r){if(oe){var t=oe(r);if(!t)return}var n=z(Ge,xe,r),a=n.dataList,i=n.dragNodeData;se==null?void 0:se(i);Me(a)},expandedKeys:ye},pe,{fieldNames:rr,treeData:We,onExpand:ze,loadData:t.loadDataFlag?Je:undefined,style:{width:"100%"},icon:er});var ar={onCheck:He,checkable:Y,checkedKeys:Oe};var ir={onSelect:He,multiple:false,selectedKeys:Oe};var lr=Y?ar:ir;var sr=c("v-tree-wrapper","v-tree-wrapper-menu-"+Te,de);var or=Ce.treeList.length>0&&!tr&&Ae;return A("div",{className:sr,style:s,children:[!!X&&A("div",{className:"v-tree-wrapper-search-area",style:ce,children:[_(T,{className:"v-tree-wrapper-search",placeholder:Z,onChange:$e,value:Q,allowClear:true}),!!t.searchExtraElement&&_("span",{className:"v-tree-wrapper-search-extra",children:t.searchExtraElement})]}),tr?A("div",{className:"v-tree-wrapper-tree-wrapper",children:[_(h,{spinning:Ce.requestStatus==="request-progress"}),_(g,p({},lr,nr,{className:"v-tree-wrapper-tree"}))]}):_(P,{status:Ce.requestStatus,loading:Re,messageConfig:p({"request-success":or?"搜索结果为空":"暂无数据"},$),errorButton:_(b,{type:"primary",onClick:Ke,children:"重新获取数据"})})]})}));Y.defaultProps={disabledCanUse:true};var G=i(Y,{getTreeDataList:K});export{G as TreeWrapper};
|
|
16
|
+
import{treeToArray as e,treeToTiledArray as r,treeLeafParentsArray as t,isUndefinedOrNull as n,treeFilter as a,attachPropertiesToComponent as i}from"@flatbiz/utils";import{isArray as l}from"@dimjs/lang/cjs/is-array";import{Model as s}from"@dimjs/model-react";import o from"@ant-design/icons/es/icons/CaretDownFilled";import u from"@ant-design/icons/es/icons/MoreOutlined";import{classNames as c}from"@dimjs/utils/cjs/class-names";import{extend as d}from"@dimjs/utils/cjs/extend";import{hooks as f}from"@wove/react/cjs/hooks";import{a as v,_ as p}from"../_rollupPluginBabelHelpers-fc015ef2.js";import{cloneState as m}from"@dimjs/model";import{Spin as h,Tree as g,Button as y,message as b}from"antd";import{forwardRef as L,useState as w,useMemo as C,useRef as j,useImperativeHandle as N,Fragment as R,isValidElement as q}from"react";import{ButtonOperate as k}from"../button-operate/index.js";import{DropdownMenuWrapper as x}from"../dropdown-menu-wrapper/index.js";import{fbaHooks as S}from"../fba-hooks/index.js";import{InputSearchWrapper as T}from"../input-search-wrapper/index.js";import{RequestStatus as P}from"../request-status/index.js";import{tree as D}from"@dimjs/utils/cjs/tree";import{isObject as A}from"@dimjs/lang/cjs/is-object";import"dequal";import{jsxs as E,jsx as _}from"react/jsx-runtime";import"@dimjs/lang/cjs/is-undefined";import"@dimjs/lang/cjs/is-plain-object";import"@dimjs/lang/cjs/is-string";import"@dimjs/lang/cjs/is-promise";import"../button-wrapper/index.js";import"@ant-design/icons/es/icons/LoadingOutlined";import"../config-provider-wrapper/index.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"../index-ac189a77.js";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"../use-responsive-point-21b8c601.js";var I={treeList:[],treeTiledArray:[],queryIsEmpty:false};var O={actions:{setTreeList:function r(t){return function(r){r.treeList=t.treeList||[];r.treeTiledArray=e(r.treeList,t.childrenName);r.requestStatus="request-success"}},resetTreeList:function e(){return function(e){e.treeList=[];e.treeTiledArray=[]}},changeRequestStatus:function e(r){return function(e){e.requestStatus=r;if(r==="request-error"){e.treeList=[];e.treeTiledArray=[]}}},treeListAppendChildren:function r(t){return function(r){var n=e(r.treeList,t.childrenName);var a=n.find((function(e){return e[t.valueName]===t.value}));if(a){if(l(t.appendList)&&t.appendList.length>0){a[t.childrenName]=t.appendList}else{a.isLeaf=true}}r.treeTiledArray=e(r.treeList,t.childrenName)}}},state:I};var V={};var F=function e(r){if(!V[r]){V[r]=s(O)}return V[r]};var K=function e(r){var t=F(r).getState();return t.treeList};var M=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 U=function e(n,a,i){var l=r(a,i);return t(n,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 z=function e(r,t){var a=n(r)?[]:r;a=l(a)?a:[a];a=a.map((function(e){if(A(e))return e[t.value];return e}));return a};var H=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=m(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:B(i,d,t)}};var B=function r(t,n,a){var i;var l=a.value;var s=a.children;D.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 Y=["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"];var G=L((function(e,r){var t=e.style,i=e.serviceConfig,s=e.effectDependencyList,L=e.selectorTreeList,D=e.value,A=e.onChange,I=e.modelKey,O=e.checkableResponseParentNode,V=O===void 0?true:O,K=e.checkable,B=e.onSelectorTreeListChange,G=e.onRequestResponseChange,W=e.treeItemDataAdapter,J=e.searchValue,Q=e.showSearch,X=e.searchPlaceholder,Z=e.requestMessageConfig,$=e.labelInValueFieldNames,ee=e.labelInValue,re=e.disabledCanUse,te=e.menuLayoutType,ne=e.menuTriggerType,ae=e.initRootExpand,ie=e.searchResultType,le=e.onDropNodeHandle,se=e.onDropPrev,oe=e.labelRender,ue=e.searchStyle,ce=e.className,de=e.defaultExpandAll,fe=e.menus,ve=v(e,Y);var pe=e.hasOwnProperty("selectorTreeList");var me=i||{};var he=s||[];var ge=w([]),ye=ge[0],be=ge[1];var Le=F(I).useStore(),we=Le[0],Ce=Le[1];var je=S.useSafeState(false),Ne=je[0],Re=je[1];var qe="request-progress-"+e.modelKey;var ke=C((function(){return p({label:"label",value:"value",children:"children"},e.fieldNames)}),[e.fieldNames]);var xe=te===undefined?"fold":te;var Se=ne===undefined?"click":ne;var Te=j(true);var Pe=C((function(){return p({label:"label",value:"value"},$)}),[$]);var De=w(),Ae=De[0],Ee=De[1];var _e=j();var Ie=C((function(){return z(D,Pe)}),[Pe,D]);S.useEffectCustom((function(){if(we.treeList.length>0){if(Te.current){Te.current=false;if(de){be(M(we.treeList,ke));return}else if(ae&&we.treeList.length){be([we.treeList[0][ke.value]]);return}}if(!n(D)){var e=Me(Ie,true);be(Array.from(new Set(ye==null?void 0:ye.concat(e))))}}}),[D,we.treeList,Ie]);var Oe=function e(r){return r===""||n(r)};var Ve=function e(r){return me.onRequestResultAdapter?me.onRequestResultAdapter(r):r};S.useEffectCustom((function(){Ee(J)}),[J]);var Fe=f.useCallbackRef((function(){return new Promise((function(e,r){var t,n,a,i,l,s;var o=function(){try{return e()}catch(e){return r(e)}};var u=function(e){try{Te.current=false;Re(false);void b.error(e.message||"数据查询异常...");return o()}catch(e){return r(e)}};try{if(!me.onRequest){throw new Error("onRequest 调用接口服务不能为空")}t=me.requiredParamsKeys;n=d({},me.params);if(t){a=t.find((function(e){return Oe(n[e])}));if(a){console.warn("TreeWrapper组件:参数:"+t.join("、")+"不能为空");return e()}}var c=function(){try{return o()}catch(e){return u(e)}};var f=function(e){try{window[qe]=false;Re(false);void Ce.changeRequestStatus("request-error");return c()}catch(e){return u(e)}};try{Re(true);return Promise.resolve(Ce.changeRequestStatus("request-progress")).then((function(e){try{window[qe]=true;return Promise.resolve(me.onRequest==null?void 0:me.onRequest(n)).then((function(e){try{i=e;G==null?void 0:G(i);l=Ve(i);s=l||[];if(s.length===0){Te.current=false}Ke(s);Re(false);window[qe]=false;return c()}catch(e){return f(e)}}),f)}catch(e){return f(e)}}),f)}catch(e){f(e)}}catch(e){u(e)}}))}));S.useEffectCustom((function(){if(pe)return;if(he.length){void Fe();return}var e=F(I).getState();if(e.requestStatus==="request-success"){B==null?void 0:B(e.treeList);return}if(!window[qe]){void Fe()}else{B==null?void 0:B(e.treeList)}}),he);S.useEffectCustom((function(){if(pe){Ke(L||[])}}),[L]);var Ke=f.useCallbackRef((function(e){if((e==null?void 0:e.length)===0&&we.treeList.length===0){void Ce.changeRequestStatus("request-success");return}void Ce.setTreeList({treeList:e||[],childrenName:ke.children});B==null?void 0:B(e)}));var Me=function e(r,t){var n=[];r.forEach((function(e){if(!t&&ye!=null&&ye.includes(e))return;var r=U(e,we.treeList,ke);n=n.concat(r)}));return n};f.useUpdateEffect((function(){if(Ae){var e=we.treeTiledArray.filter((function(e){var r=e[ke.label]||"";return String(r).toLowerCase().includes(Ae.toLowerCase())}));be((function(r){var t=e.map((function(e){return e[ke.value]})).concat(r||[]);var n=Me(t);return Array.from(new Set(n))}))}else{be([])}}),[Ae]);N(r,(function(){return{onClearSelectorList:function e(){void Ce.resetTreeList()},getTreeDataList:function e(){return we.treeList},onChangeExpandedKeys:function e(r){be(r)}}}));var Ue=f.useCallbackRef((function(e){be(e)}));var ze=f.useCallbackRef((function(e,r,t,a){_e.current=e;var i=n(r)?[]:l(r)?r:[r];if(n(e)){A==null?void 0:A(e,r,t);return}if(ee){var s=Pe.label;var o=Pe.value;var u=i.map((function(e){var r;return r={},r[s]=e[ke.label],r[o]=e[ke.value],r}));if(l(e)){A==null?void 0:A(u,i,t,a)}else{A==null?void 0:A(u[0],i[0],t,a)}}else{if(l(e)){A==null?void 0:A(e,i,t,a)}else{A==null?void 0:A(e,i[0],t,a)}}}));var He=f.useCallbackRef((function(r,t){var a=n(r)?[]:r;a=e.checkStrictly?r.checked:r;a=l(a)?a:[a];var i=[];var s=[];var o=[];var u=[];a.forEach((function(e){var r=we.treeTiledArray.find((function(r){return r[ke.value]===e}));if(!r)return;var t=r==null?void 0:r[ke.children];if(!l(t)||t.length===0){i.push(r);s.push(r[ke.value])}o.push(r);u.push(r[ke.value])}));if(K){be((function(e){var r=Me(s).concat(e||[]);return Array.from(new Set(r))}));if(!V&&!e.checkStrictly){ze(s,i,o,t)}else{ze(u,o,o,t)}}else{if(a[0]){var c=o.find((function(e){return e[ke.value]===a[0]}));ze(a[0],c,[c],t)}else{var d=t.node[ke.value];var f=we.treeTiledArray.find((function(e){return e[ke.value]===d}));ze(undefined,f,[f],t)}}}));var Be=f.useCallbackRef((function(e){return W==null?void 0:W(e)}));var Ye=C((function(){var e=m(we.treeList||[]);if(Ae&&ie!=="highlight"){return a(m(we.treeList||[]),(function(e){var r;var t=(r=e[ke.label])==null?void 0:r.toLowerCase();return t.indexOf(Ae.toLowerCase())>=0}),{childrenName:ke.children})}return e}),[ke.children,ke.label,ie,we.treeList,Ae]);var Ge=C((function(){var e=function e(r){return r==null?void 0:r.map((function(r){var t,n;var a=(Be==null?void 0:Be(r))||r;var i=re?undefined:a.disabled;var s=(t=a[ke.label])==null?void 0:t.toLowerCase();var o;if(Ae){var u=s.indexOf(Ae.toLowerCase());var d=s.substring(0,u);var f=s.slice(u+Ae.length);var v=s.slice(u,u+Ae.length);o=u>-1?E("span",{className:c({"v-tree-item-disabled":a.disabled}),children:[d,_("span",{className:"site-tree-search-value",children:v}),f]}):null}if(!o&&a.disabled){o=_("span",{className:c({"v-tree-item-disabled":a.disabled}),children:s})}var m=a[ke.children];return p({},a,(n={disabled:i},n[ke.label]=o||s,n._treeItemName=s,n._disabled=a.disabled,n[ke.children]=l(m)&&m.length>0?e(m):undefined,n))}))};return e(Ye)}),[Ye,Be,re,ke.label,ke.children,Ae]);var We=f.useCallbackRef((function(r){return new Promise((function(t,n){return new Promise((function(a,i){var l,s,o,u;if(r[ke.children]){t();return a()}var c=function(){try{return a()}catch(e){return i(e)}};var d=function(e){try{void b.error(e.message||"数据加载异常...");n();return c()}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(e){try{o=e;u=me.onRequestResultAdapter?me.onRequestResultAdapter(o):o;void Ce.treeListAppendChildren({value:r[ke.value],appendList:u,childrenName:ke.children,valueName:ke.value}).then((function(e){Ke(e.treeList);t()}));return c()}catch(e){return d(e)}}),d)}catch(e){d(e)}}))}))}));var Je=f.useCallbackRef((function(r){var t=r==null?void 0:r[ke.children];var n=e.loadDataFlag;var a=n?!r.isLeaf:false;var i=t&&t.length>0||a;return!i}));var Qe=f.useCallbackRef((function(r){var t,n,a;var i=r._treeItemName||r[ke.label];var l=fe==null?void 0:fe(p({},r,(t={},t[ke.label]=i,t)));if(l){return E(R,{children:[_("span",{className:"tree-item-title",children:(oe==null?void 0:oe(r))||(r==null?void 0:r[ke.label])}),_(k,p({gap:5},l,{dropdownMenuProps:p({placement:"bottomRight",isFixed:true},l==null?void 0:l.dropdownMenuProps),className:c("tree-item-title-operate",l.className)}))]})}if(xe==="fold"){var s;var o=[];if((s=e.menuOptions)!=null&&s.fold){var d,f,v;o=((d=e.menuOptions)==null||(f=d[xe])==null?void 0:f.call(d,p({},r,(v={},v[ke.label]=i,v))))||[]}else{var m;o=(e.getMenuOptions==null?void 0:e.getMenuOptions(p({},r,(m={},m[ke.label]=i,m))))||[]}return E(R,{children:[_("span",{className:"tree-item-title",children:(oe==null?void 0:oe(r))||(r==null?void 0:r[ke.label])}),o.length>0&&_(x,{menuList:o,placement:"bottomRight",children:_(u,{})})]})}var h=(n=e.menuOptions)==null||n.tile==null?void 0:n.tile(p({},r,(a={},a[ke.label]=i,a)));return E(R,{children:[_("span",{className:"tree-item-title",children:(oe==null?void 0:oe(r))||(r==null?void 0:r[ke.label])}),h?_(k,p({gap:5},h,{className:c("tree-item-title-operate",h.className)})):null]})}));var Xe=f.useDebounceCallback((function(r){Ee(r);e.onSearchValueChange==null?void 0:e.onSearchValueChange(r)}),300);var Ze=f.useCallbackRef((function(e){Xe(e.target.value)}));var $e=f.useCallbackRef((function(r){if(!e.icon)return null;if(q(e.icon))return e.icon;var t=Je(r.data);return e.icon(p({},r,{isParent:!t,isLeaf:t}))}));var er=C((function(){return{title:ke.label,key:ke.value,children:ke.children}}),[ke]);var rr=Ge.length>0&&we.requestStatus!=="request-error";var tr=p({showLine:{showLeafIcon:false},titleRender:Qe,blockNode:true,switcherIcon:_(o,{}),onDrop:function e(r){if(se){var t=se(r);if(!t)return}var n=H(Ye,ke,r),a=n.dataList,i=n.dragNodeData;le==null?void 0:le(i);Ke(a)},expandedKeys:ye},ve,{fieldNames:er,treeData:Ge,onExpand:Ue,loadData:e.loadDataFlag?We:undefined,style:{width:"100%"},icon:$e});var nr={onCheck:He,checkable:K,checkedKeys:Ie};var ar={onSelect:He,multiple:false,selectedKeys:Ie};var ir=K?nr:ar;var lr=c("v-tree-wrapper","v-tree-wrapper-menu-"+Se,ce);var sr=we.treeList.length>0&&!rr&&Ae;return E("div",{className:lr,style:t,children:[!!Q&&E("div",{className:"v-tree-wrapper-search-area",style:ue,children:[_(T,{className:"v-tree-wrapper-search",placeholder:n(X)?"搜索":X,onChange:Ze,value:J,allowClear:true}),!!e.searchExtraElement&&_("span",{className:"v-tree-wrapper-search-extra",children:e.searchExtraElement})]}),rr?E("div",{className:"v-tree-wrapper-tree-wrapper",children:[_(h,{spinning:we.requestStatus==="request-progress"}),_(g,p({},ir,tr,{className:"v-tree-wrapper-tree"}))]}):_(P,{status:we.requestStatus,loading:Ne,messageConfig:p({"request-success":sr?"搜索结果为空":"暂无数据"},Z),errorButton:_(y,{type:"primary",onClick:Fe,children:"重新获取数据"})})]})}));G.defaultProps={disabledCanUse:true};var W=i(G,{getTreeDataList:K});export{W as TreeWrapper};
|
|
16
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 { API, ModelType } from '@dimjs/model';\nimport { Model } from '@dimjs/model-react';\nimport { TPlainObject, treeToArray, TSetDefaultDefined } from '@flatbiz/utils';\nimport { TreeProps } from 'antd';\nimport { TRequestStatus } from '../request-status';\n\nexport type ModelState = {\n treeList: TSetDefaultDefined<TreeProps['treeData'], []>;\n treeTiledArray: TPlainObject[];\n queryIsEmpty: boolean;\n requestStatus?: TRequestStatus;\n};\n\ntype ModelActionParams = {\n setTreeList: {\n treeList: ModelState['treeList'];\n childrenName: string;\n };\n resetTreeList: void;\n changeRequestStatus: TRequestStatus;\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 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.requestStatus = 'request-success';\n };\n },\n resetTreeList: () => {\n return (state) => {\n state.treeList = [];\n };\n },\n changeRequestStatus: (params) => {\n return (state) => {\n state.requestStatus = params;\n if (params === 'request-error') {\n state.treeList = [];\n }\n };\n },\n treeListAppendChildren: (params) => {\n return (state) => {\n const array = treeToArray(state.treeList, params.childrenName);\n const target = array.find((item) => item[params.valueName] === 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 = treeToArray(state.treeList, params.childrenName);\n };\n },\n },\n state: defaultState,\n};\n\nconst treeWrapperModels: Record<string, API<ModelType<ModelState, ModelActionParams, any>>> = {};\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 { 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 { TAny, TPlainObject, treeLeafParentsArray, treeToTiledArray } from '@flatbiz/utils';\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, { value: 'value', parentValue: 'parentValue' });\n};\n\nimport { isArray, isObject } from '@dimjs/lang';\nimport { cloneState } from '@dimjs/model';\nimport { tree } from '@dimjs/utils';\nimport { isUndefinedOrNull, LabelValueItem, treeToArray } from '@flatbiz/utils';\nimport { DataNode } from 'antd/es/tree';\nimport { dequal } from 'dequal';\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 const diff = dequal(object1, object2);\n return diff;\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","import { CaretDownFilled, MoreOutlined } from '@ant-design/icons';\nimport { isArray } from '@dimjs/lang';\nimport { cloneState } from '@dimjs/model';\nimport { classNames, extend } from '@dimjs/utils';\n\nimport { hooks } from '@wove/react';\nimport { Button, message, Spin, Tree, TreeProps } from 'antd';\nimport {\n CSSProperties,\n DependencyList,\n forwardRef,\n Fragment,\n isValidElement,\n ReactElement,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport {\n isUndefinedOrNull,\n TAny,\n TPlainObject,\n treeFilter,\n treeToArray,\n treeToTiledArray,\n} from '@flatbiz/utils';\n\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 { getExpandedKeys, getVauleList, onTreeDrop } from './utils';\n\ntype TreeWrapperValue =\n | string\n | number\n | Array<string | number>\n | TPlainObject<string | number>\n | Array<TPlainObject<string | number>>;\n\ntype TreeServiceConfig = {\n params?: TPlainObject;\n requiredParamsKeys?: string[];\n onRequest?: (params?: TAny) => TAny;\n /**\n * 响应数据适配器\n */\n onRequestResultAdapter?: (respData: TAny) => TPlainObject[];\n};\ntype 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 modelKey: string;\n\n fieldNames?: { label?: string; value?: string; children?: string };\n /**\n * useEffect依赖项数组,用于重新发起获取接口数据\n */\n effectDependencyList?: DependencyList;\n /**\n * 请求服务需求的数据,当设置`selectorTreeList`后无效果\n */\n serviceConfig?: TreeServiceConfig;\n /**\n * 是否开启异步加载\n */\n loadDataFlag?: boolean;\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 * 1. checkStrictly = true,模式下失效\n */\n checkableResponseParentNode?: boolean;\n\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 }) => ReactElement;\n /**\n * 是否必选,最后一个不能取消\n */\n // required?: boolean;\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 labelInValue?: boolean;\n /**\n * ```\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\nexport type TreeWrapperRefApi = {\n onClearSelectorList: () => void;\n getTreeDataList: () => TreeProps['treeData'];\n onChangeExpandedKeys: (expandedKeys: Array<string | number>) => 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 ...otherProps\n } = props;\n const hasSelectorTreeList = props.hasOwnProperty('selectorTreeList');\n const newServiceConfig = serviceConfig || {};\n const newEffectDependencyList = effectDependencyList || [];\n const [treeExpandedKeys, setTreeExpandedKeys] = useState<React.Key[]>([]);\n const [state, actions] = treeWrapperModel(modelKey).useStore();\n const [loading, setLoading] = fbaHooks.useSafeState(false);\n const requestPreKey = `request-progress-${props.modelKey}`;\n const fieldNames = useMemo(() => {\n return { label: 'label', value: 'value', children: 'children', ...props.fieldNames };\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>();\n\n const innerOperateValueRef = useRef<Array<string | number> | string | number>();\n\n const valueList = useMemo(() => {\n const tempList = getVauleList(value, labelInValueFieldNamesMerge);\n return tempList;\n }, [labelInValueFieldNamesMerge, value]);\n\n fbaHooks.useEffectCustom(() => {\n if (state.treeList.length > 0) {\n if (responseFirstRef.current) {\n responseFirstRef.current = false;\n if (defaultExpandAll) {\n const allValues = treeToArray(state.treeList, fieldNames.children).map((item) => {\n return item[fieldNames.value];\n });\n setTreeExpandedKeys(allValues);\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 const respDataList = (\n newServiceConfig.onRequestResultAdapter\n ? newServiceConfig.onRequestResultAdapter(respData as unknown as TPlainObject)\n : respData\n ) as TPlainObject[];\n return respDataList;\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 console.warn(`TreeWrapper组件:参数:${requiredParamsKeys.join('、')}不能为空`);\n return;\n }\n }\n try {\n setLoading(true);\n await actions.changeRequestStatus('request-progress');\n window[requestPreKey] = true;\n const _respData = await newServiceConfig.onRequest?.(params);\n onRequestResponseChange?.(_respData);\n const respData = serviceResponseHandle(_respData) as TreeProps['treeData'];\n const respDataListNew = 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) {\n window[requestPreKey] = false;\n setLoading(false);\n void actions.changeRequestStatus('request-error');\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 (Boolean(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('request-success');\n return;\n }\n void actions.setTreeList({\n treeList: dataList || [],\n childrenName: fieldNames.children,\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 targetList = getExpandedKeys(value, state.treeList, fieldNames);\n newTreeExpandedKeys = newTreeExpandedKeys.concat(targetList.map((item) => item.value));\n });\n return newTreeExpandedKeys;\n };\n\n hooks.useUpdateEffect(() => {\n if (treeSearchValue) {\n const tiledArray = treeToTiledArray(state.treeList || [], fieldNames);\n const targetList = tiledArray.filter((item) => item.label?.includes(treeSearchValue || ''));\n setTreeExpandedKeys((prev) => {\n const mergeList = getTreeExpandedKeys(targetList.map((item) => item.value)).concat(prev || []);\n return Array.from(new Set(mergeList));\n });\n } else {\n setTreeExpandedKeys([]);\n }\n }, [treeSearchValue]);\n\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 };\n });\n\n const onExpand = hooks.useCallbackRef((expandedKeys) => {\n setTreeExpandedKeys(expandedKeys as string[]);\n });\n\n const onRespChange = hooks.useCallbackRef((selectedKey, selectInfo?, selectAllList?, operateInfo?) => {\n innerOperateValueRef.current = selectedKey;\n const selectList = isUndefinedOrNull(selectInfo) ? [] : isArray(selectInfo) ? selectInfo : [selectInfo];\n if (isUndefinedOrNull(selectedKey)) {\n onChange?.(selectedKey, selectInfo, selectAllList);\n return;\n }\n if (labelInValue) {\n const lvLabel = labelInValueFieldNamesMerge.label;\n const lvValue = labelInValueFieldNamesMerge.value;\n const labelInValueList = selectList.map((item) => {\n return {\n [lvLabel]: item[fieldNames.label],\n [lvValue]: item[fieldNames.value],\n };\n });\n if (isArray(selectedKey)) {\n onChange?.(labelInValueList, selectList, selectAllList, operateInfo);\n } else {\n onChange?.(labelInValueList[0], selectList[0], selectAllList, operateInfo);\n }\n } else {\n if (isArray(selectedKey)) {\n onChange?.(selectedKey, selectList, selectAllList, operateInfo);\n } else {\n onChange?.(selectedKey, selectList[0], selectAllList, operateInfo);\n }\n }\n });\n\n const onTreeChangeHandle = hooks.useCallbackRef((checkedData, operateInfo) => {\n let checkedValueList = isUndefinedOrNull(checkedData) ? [] : checkedData;\n checkedValueList = props.checkStrictly ? checkedData.checked : checkedData;\n\n checkedValueList = isArray(checkedValueList) ? checkedValueList : [checkedValueList];\n\n const selectedLeafList = [] as TPlainObject[];\n const selectedLeafValueList = [] as Array<string | number>;\n const selectedAllList = [] as TPlainObject[];\n const selectedAllValueList = [] as Array<string | number>;\n checkedValueList.forEach((item) => {\n const target = state.treeTiledArray.find((temp) => temp[fieldNames.value] === item);\n if (!target) return;\n const children = target?.[fieldNames.children];\n if (!isArray(children) || children.length === 0) {\n selectedLeafList.push(target);\n selectedLeafValueList.push(target[fieldNames.value]);\n }\n selectedAllList.push(target);\n selectedAllValueList.push(target[fieldNames.value]);\n });\n\n if (checkable) {\n setTreeExpandedKeys((prev) => {\n const mergeList = getTreeExpandedKeys(selectedLeafValueList).concat(prev || []);\n return Array.from(new Set(mergeList));\n });\n if (!checkableResponseParentNode && !props.checkStrictly) {\n onRespChange(selectedLeafValueList, selectedLeafList, selectedAllList, operateInfo);\n } else {\n onRespChange(selectedAllValueList, selectedAllList, selectedAllList, operateInfo);\n }\n } else {\n if (checkedValueList[0]) {\n const currentNode = selectedAllList.find((item) => item[fieldNames.value] === checkedValueList[0]);\n onRespChange(checkedValueList[0], currentNode, [currentNode], operateInfo);\n } else {\n const nodeValue = operateInfo.node[fieldNames.value];\n const target = state.treeTiledArray.find((temp) => temp[fieldNames.value] === nodeValue);\n onRespChange(undefined, target, [target], operateInfo);\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 return treeFilter(\n cloneState(state.treeList || []),\n (node) => {\n const value = node[fieldNames.label]?.toLowerCase();\n return value.indexOf(treeSearchValue.toLowerCase()) >= 0;\n },\n { childrenName: fieldNames.children },\n );\n }\n return list;\n }, [fieldNames.children, fieldNames.label, searchResultType, state.treeList, treeSearchValue]);\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)?.toLowerCase();\n let titleDom;\n if (treeSearchValue) {\n const index = strTitle.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 className={classNames({ 'v-tree-item-disabled': adapterItem.disabled })}>\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 className={classNames({ 'v-tree-item-disabled': adapterItem.disabled })}>{strTitle}</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\n const loadData = hooks.useCallbackRef((dataItem: TPlainObject) => {\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 newServiceConfig.onRequestResultAdapter\n ? newServiceConfig.onRequestResultAdapter(respData as unknown as TPlainObject)\n : respData\n ) as TPlainObject[];\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) {\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 { title: fieldNames.label, key: fieldNames.value, children: fieldNames.children };\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 as TPlainObject[], 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={searchPlaceholder}\n onChange={onSearchChange}\n value={searchValue}\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 ...requestMessageConfig,\n }}\n errorButton={\n <Button type=\"primary\" onClick={startDataSourceRequest}>\n 重新获取数据\n </Button>\n }\n />\n )}\n </div>\n );\n});\n\nTreeWrapper.defaultProps = {\n disabledCanUse: true,\n};\n","import { attachPropertiesToComponent } from '@flatbiz/utils';\nimport { getTreeDataList } from './hooks';\nimport { TreeWrapper as TreeWrapperInner } from './tree-wrapper';\nexport type * 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 = attachPropertiesToComponent(TreeWrapperInner, {\n /**\n * 获取树形原数据\n * ```\n * 参数 modelKey 与 TreeWrapper属性 modelKey相同,才能获取数据\n * ```\n */\n getTreeDataList: getTreeDataList,\n});\n"],"names":["defaultState","treeList","treeTiledArray","queryIsEmpty","TreeWrapperModel","actions","setTreeList","params","state","treeToArray","childrenName","requestStatus","resetTreeList","changeRequestStatus","treeListAppendChildren","array","target","find","item","valueName","value","_isArray","appendList","length","isLeaf","treeWrapperModels","treeWrapperModel","key","Model","getTreeDataList","modelKey","getState","getExpandedKeys","fieldNames","tiledArray","treeToTiledArray","treeLeafParentsArray","parentValue","getVauleList","data","labelInValueFieldNames","tempList","isUndefinedOrNull","map","_isObject","onTreeDrop","dataList","info","dropKey","node","dragKey","dragNode","dropPos","pos","split","dropPosition","Number","treeKeyName","treeChildrenName","children","loop","callback","i","cloneState","dragObj","index","arr","splice","dropToGap","unshift","props","expanded","ar","_item","dragNodeData","dorpNodeId","_tree$walkThroughTree","id","_tree","walkThroughTree","undefined","_parent","tileList","parentId","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","otherProps","_objectWithoutPropertiesLoose","_excluded","hasSelectorTreeList","hasOwnProperty","newServiceConfig","newEffectDependencyList","_useState","useState","treeExpandedKeys","setTreeExpandedKeys","_treeWrapperModel$use","useStore","_fbaHooks$useSafeStat","fbaHooks","useSafeState","loading","setLoading","requestPreKey","useMemo","_extends","label","menuLayoutTypeNew","menuTriggerTypeNew","responseFirstRef","useRef","labelInValueFieldNamesMerge","_useState2","treeSearchValue","setTreeSearchValue","innerOperateValueRef","valueList","useEffectCustom","current","allValues","expandedKeys","getTreeExpandedKeys","Array","from","Set","concat","valueIsEmpty","serviceResponseHandle","respData","respDataList","onRequestResultAdapter","startDataSourceRequest","_hooks","useCallbackRef","Promise","$return","$error","requiredParamsKeys","_params","isEmpty","_respData","_respData2","respDataListNew","$Try_1_Post","$boundEx","$Try_1_Catch","error","message","onRequest","Error","_extend","console","warn","join","$Try_2_Post","$Try_2_Catch","window","resolve","then","$await_4","$await_5","onChangeSelectorList","Boolean","allState","refresh","newTreeExpandedKeys","forEach","includes","targetList","useUpdateEffect","filter","_item$label","prev","mergeList","useImperativeHandle","onClearSelectorList","onChangeExpandedKeys","onExpand","onRespChange","selectedKey","selectInfo","selectAllList","operateInfo","selectList","lvLabel","lvValue","labelInValueList","_ref","onTreeChangeHandle","checkedData","checkedValueList","checkStrictly","checked","selectedLeafList","selectedLeafValueList","selectedAllList","selectedAllValueList","temp","push","currentNode","nodeValue","treeItemDataAdapterHandle","dataItem","originalDataList","list","treeFilter","_node$fieldNames$labe","toLowerCase","indexOf","treeData","_adapterItem$fieldNam","_extends2","adapterItem","disabled","strTitle","titleDom","beforeStr","substring","afterStr","slice","centerStr","_jsxs","_classNames","_jsx","_treeItemName","_disabled","loadData","reject","_props$loadDataServic","_props$loadDataServic2","_respData3","$Try_3_Post","$Try_3_Catch","loadDataServiceConfig","getParams","$await_6","isLeafNode","nodeData","loadDataFlag","loadHasChildren","hasChildren","titleRender","_extends3","_props$menuOptions3","_extends6","stringLabel","buttonOperateConfig","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","status","messageConfig","errorButton","Button","type","onClick","defaultProps","attachPropertiesToComponent","TreeWrapperInner"],"mappings":";spEA6BA,IAAMA,EAA2B,CAC/BC,SAAU,GACVC,eAAgB,GAChBC,aAAc,OAGhB,IAAMC,EAA6D,CACjEC,QAAS,CACPC,YAAa,SAAAA,EAACC,GACZ,OAAO,SAACC,GACNA,EAAMP,SAAWM,EAAON,UAAY,GACpCO,EAAMN,eAAiBO,EAAYD,EAAMP,SAAUM,EAAOG,cAC1DF,EAAMG,cAAgB,kBAEzB,EACDC,cAAe,SAAAA,IACb,OAAO,SAACJ,GACNA,EAAMP,SAAW,GAEpB,EACDY,oBAAqB,SAAAA,EAACN,GACpB,OAAO,SAACC,GACNA,EAAMG,cAAgBJ,EACtB,GAAIA,IAAW,gBAAiB,CAC9BC,EAAMP,SAAW,EACnB,EAEH,EACDa,uBAAwB,SAAAA,EAACP,GACvB,OAAO,SAACC,GACN,IAAMO,EAAQN,EAAYD,EAAMP,SAAUM,EAAOG,cACjD,IAAMM,EAASD,EAAME,MAAK,SAACC,GAAI,OAAKA,EAAKX,EAAOY,aAAeZ,EAAOa,SACtE,GAAIJ,EAAQ,CACV,GAAIK,EAAQd,EAAOe,aAAef,EAAOe,WAAWC,OAAS,EAAG,CAC9DP,EAAOT,EAAOG,cAAgBH,EAAOe,UACvC,KAAO,CACLN,EAAOQ,OAAS,IAClB,CACF,CACAhB,EAAMN,eAAiBO,EAAYD,EAAMP,SAAUM,EAAOG,cAE9D,GAEFF,MAAOR,GAGT,IAAMyB,EAAwF,CAAA,EAQvF,IAAMC,EAAmB,SAAnBA,EAAoBC,GAC/B,IAAKF,EAAkBE,GAAM,CAC3BF,EAAkBE,GAAOC,EAAMxB,EACjC,CACA,OAAOqB,EAAkBE,EAC3B,ECrFO,IAAME,EAAkB,SAAlBA,EAAmBC,GAC9B,IAAMtB,EAAQkB,EAAiBI,GAAUC,WACzC,OAAOvB,EAAMP,QACf,ECJO,IAAM+B,EAAkB,SAAlBA,EACXZ,EACAnB,EACAgC,GAEA,IAAMC,EAAaC,EAAiBlC,EAAUgC,GAC9C,OAAOG,EAAqBhB,EAAOc,EAAY,KAAM,CAAEd,MAAO,QAASiB,YAAa,eACtF,EASO,IAAMC,EAAe,SAAfA,EAAgBC,EAAMC,GACjC,IAAIC,EAAWC,EAAkBH,GAAQ,GAAKA,EAC9CE,EAAWpB,EAAQoB,GAAYA,EAAW,CAACA,GAC3CA,EAAWA,EAASE,KAAI,SAACzB,GACvB,GAAI0B,EAAS1B,GAAO,OAAOA,EAAKsB,EAAuBpB,OACvD,OAAOF,CACT,IACA,OAAOuB,CACT,EA8CO,IAAMI,EAA+B,SAA/BA,EAAgCC,EAAUb,EAAYc,GACjE,IAAMC,EAAUD,EAAKE,KAAKtB,IAC1B,IAAMuB,EAAUH,EAAKI,SAASxB,IAC9B,IAAMyB,EAAUL,EAAKE,KAAKI,IAAIC,MAAM,KACpC,IAAMC,EAAeR,EAAKQ,aAAeC,OAAOJ,EAAQA,EAAQ7B,OAAS,IACzE,IAAMkC,EAAcxB,EAAWb,MAC/B,IAAMsC,EAAmBzB,EAAW0B,SAEpC,IAAMC,EAAO,SAAPA,EACJrB,EACAZ,EACAkC,GAEA,IAAK,IAAIC,EAAI,EAAGA,EAAIvB,EAAKhB,OAAQuC,IAAK,CACpC,GAAIvB,EAAKuB,GAAGL,KAAiB9B,EAAK,CAChC,OAAOkC,EAAStB,EAAKuB,GAAIA,EAAGvB,EAC9B,CACA,GAAIA,EAAKuB,GAAGJ,GAAmB,CAC7BE,EAAKrB,EAAKuB,GAAGJ,GAAoB/B,EAAKkC,EACxC,CACF,GAEF,IAAMtB,EAAOwB,EAAWjB,GAGxB,IAAIkB,EACJJ,EAAKrB,EAAMW,GAAS,SAAChC,EAAM+C,EAAOC,GAChCA,EAAIC,OAAOF,EAAO,GAClBD,EAAU9C,CACZ,IAEA,IAAK6B,EAAKqB,UAAW,CAEnBR,EAAKrB,EAAMS,GAAS,SAAC9B,GACnBA,EAAKwC,GAAoBxC,EAAKwC,IAAqB,GAEnDxC,EAAKwC,GAAkBW,QAAQL,EACjC,GACF,MAAO,IACJjB,EAAKE,KAAKqB,MAAMX,UAAY,IAAIpC,OAAS,GAC1CwB,EAAKE,KAAKqB,MAAMC,UAChBhB,IAAiB,EACjB,CACAK,EAAKrB,EAAMS,GAAS,SAAC9B,GACnBA,EAAKwC,GAAoBxC,EAAKwC,IAAqB,GAEnDxC,EAAKwC,GAAkBW,QAAQL,EAGjC,GACF,KAAO,CACL,IAAIQ,EAAiB,GACrB,IAAIV,EACJF,EAAKrB,EAAMS,GAAS,SAACyB,EAAOR,EAAOC,GACjCM,EAAKN,EACLJ,EAAIG,CACN,IACA,GAAIV,KAAkB,EAAG,CACvBiB,EAAGL,OAAOL,EAAI,EAAGE,EACnB,KAAO,CACLQ,EAAGL,OAAOL,EAAK,EAAG,EAAGE,EACvB,CACF,CACA,MAAO,CACLlB,SAAUP,EACVmC,aAAcA,EAAaxB,EAASX,EAAMN,GAE9C,EAEO,IAAMyC,EAAe,SAAfA,EACXC,EACA7B,EACAb,GACG,IAAA2C,EACH,IAAMC,EAAK5C,EAAWb,MACtB,IAAMuC,EAAW1B,EAAW0B,SAC5BmB,EAAKC,iBAAeH,EAAA,CAAA,EAAAA,EACfC,GAAKG,UAASJ,EAAGjB,GAAWb,EAAQ8B,IACvC,SAAC3B,EAAMgB,EAAOgB,GACZhC,EAAK,WAAagB,EAClBhB,EAAK,cAAgBgC,GAAAA,UAAAA,EAAAA,EAAUJ,EAChC,GACDlB,GAEF,IAAMuB,EAAWzE,EAAYqC,EAAUa,GACvC,IAAM3C,EAASkE,EAASjE,MAAK,SAACC,GAAI,OAAKA,EAAK2D,KAAQF,KACpD,MAAO,CACLQ,SAAUnE,GAAM,UAAA,EAANA,EAAS,cACnB6D,GAAI7D,GAAM,UAAA,EAANA,EAAS6D,GACbZ,MAAOjD,GAAAA,UAAAA,EAAAA,EAAS,WAEpB,wgBCqGO,IAAMoE,EAAcC,GAAgD,SAACf,EAAOgB,GACjF,IACEC,EA+BEjB,EA/BFiB,MACAC,EA8BElB,EA9BFkB,cACAC,EA6BEnB,EA7BFmB,qBACAC,EA4BEpB,EA5BFoB,iBACAtE,EA2BEkD,EA3BFlD,MACAuE,EA0BErB,EA1BFqB,SACA7D,EAyBEwC,EAzBFxC,SAAQ8D,EAyBNtB,EAxBFuB,4BAAAA,EAA2BD,SAAG,EAAA,KAAIA,EAClCE,EAuBExB,EAvBFwB,UACAC,EAsBEzB,EAtBFyB,yBACAC,EAqBE1B,EArBF0B,wBACAC,EAoBE3B,EApBF2B,oBACAC,EAmBE5B,EAnBF4B,YACAC,EAkBE7B,EAlBF6B,WACAC,EAiBE9B,EAjBF8B,kBACAC,EAgBE/B,EAhBF+B,qBACA7D,GAeE8B,EAfF9B,uBACA8D,GAcEhC,EAdFgC,aACAC,GAaEjC,EAbFiC,eACAC,GAYElC,EAZFkC,eACAC,GAWEnC,EAXFmC,gBACAC,GAUEpC,EAVFoC,eACAC,GASErC,EATFqC,iBACAC,GAQEtC,EARFsC,iBACAC,GAOEvC,EAPFuC,WACAC,GAMExC,EANFwC,YACAC,GAKEzC,EALFyC,YACAC,GAIE1C,EAJF0C,UACAC,GAGE3C,EAHF2C,iBACAC,GAEE5C,EAFF4C,MACGC,GAAUC,EACX9C,EAAK+C,GACT,IAAMC,GAAsBhD,EAAMiD,eAAe,oBACjD,IAAMC,GAAmBhC,GAAiB,GAC1C,IAAMiC,GAA0BhC,GAAwB,GACxD,IAAAiC,GAAgDC,EAAsB,IAA/DC,GAAgBF,GAAA,GAAEG,GAAmBH,GAAA,GAC5C,IAAAI,GAAyBpG,EAAiBI,GAAUiG,WAA7CvH,GAAKsH,GAAA,GAAEzH,GAAOyH,GAAA,GACrB,IAAAE,GAA8BC,EAASC,aAAa,OAA7CC,GAAOH,GAAA,GAAEI,GAAUJ,GAAA,GAC1B,IAAMK,GAAa,oBAAuB/D,EAAMxC,SAChD,IAAMG,GAAaqG,GAAQ,WACzB,OAAAC,EAAA,CAASC,MAAO,QAASpH,MAAO,QAASuC,SAAU,YAAeW,EAAMrC,WAC1E,GAAG,CAACqC,EAAMrC,aACV,IAAMwG,GAAoBjC,KAAmBxB,UAAY,OAASwB,GAClE,IAAMkC,GAAqBjC,KAAoBzB,UAAY,QAAUyB,GACrE,IAAMkC,GAAmBC,EAAO,MAEhC,IAAMC,GAA8BP,GAAQ,WAC1C,OAAAC,EAAA,CAASC,MAAO,QAASpH,MAAO,SAAYoB,GAC9C,GAAG,CAACA,KAEJ,IAAAsG,GAA8CnB,IAAvCoB,GAAeD,GAAA,GAAEE,GAAkBF,GAAA,GAE1C,IAAMG,GAAuBL,IAE7B,IAAMM,GAAYZ,GAAQ,WACxB,IAAM7F,EAAWH,EAAalB,EAAOyH,IACrC,OAAOpG,CACT,GAAG,CAACoG,GAA6BzH,IAEjC6G,EAASkB,iBAAgB,WACvB,GAAI3I,GAAMP,SAASsB,OAAS,EAAG,CAC7B,GAAIoH,GAAiBS,QAAS,CAC5BT,GAAiBS,QAAU,MAC3B,GAAInC,GAAkB,CACpB,IAAMoC,EAAY5I,EAAYD,GAAMP,SAAUgC,GAAW0B,UAAUhB,KAAI,SAACzB,GACtE,OAAOA,EAAKe,GAAWb,MACzB,IACAyG,GAAoBwB,GACpB,MACD,MAAM,GAAI3C,IAAkBlG,GAAMP,SAASsB,OAAQ,CAClDsG,GAAoB,CAACrH,GAAMP,SAAS,GAAGgC,GAAWb,SAClD,MACF,CACF,CACA,IAAKsB,EAAkBtB,GAAQ,CAC7B,IAAMkI,EAAeC,GAAoBL,GAAW,MACpDrB,GAAoB2B,MAAMC,KAAK,IAAIC,IAAI9B,IAAAA,UAAAA,EAAAA,GAAkB+B,OAAOL,KAClE,CACF,CACD,GAAE,CAAClI,EAAOZ,GAAMP,SAAUiJ,KAE3B,IAAMU,GAAe,SAAfA,EAAgBrH,GACpB,OAAOA,IAAS,IAAMG,EAAkBH,IAG1C,IAAMsH,GAAwB,SAAxBA,EAAyBC,GAC7B,IAAMC,EACJvC,GAAiBwC,uBACbxC,GAAiBwC,uBAAuBF,GACxCA,EAEN,OAAOC,GAGT9B,EAASkB,iBAAgB,WACvBH,GAAmB9C,EACrB,GAAG,CAACA,IAEJ,IAAM+D,GAAyBC,EAAMC,gBAAe,WAAA,OAAA,IAAAC,SAAA,SAAAC,EAAAC,GAAA,IAK1CC,EACAC,EAEEC,EAYAC,EAEAC,EACAC,EAnYd,IAAIC,aAAJ,IAAI,OAAAR,GAAK,CAAC,MAAAS,GAAW,OAAOR,EAAAQ,EAAM,GAAlC,IAAIC,EAAA,SAgZSC,GAhZb,IAiZMrC,GAAiBS,QAAU,MAC3BhB,GAAW,YACN6C,EAAQD,MAAOA,EAAMC,SAAsB,aAnZtD,OAAOJ,GAAE,CAAC,MAAAC,GAAW,OAAOR,EAAAQ,EAAM,GA6W9B,IACE,IAAKtD,GAAiB0D,UAAW,CAC/B,MAAM,IAAIC,MAAM,uBAClB,CACMZ,EAAqB/C,GAAiB+C,mBACtChK,EAAS6K,EAAO,CAAA,EAAI5D,GAAiBjH,QAC3C,GAAIgK,EAAoB,CAChBE,EAAUF,EAAmBtJ,MAAK,SAACU,GACvC,OAAOiI,GAAarJ,EAAOoB,GAC7B,IACA,GAAI8I,EAAS,CACXY,QAAQC,KAAI,oBAAqBf,EAAmBgB,KAAK,KAAI,QAC7D,OAAAlB,GACF,CACF,CA3XN,IAAImB,aAAJ,IAAA,OAAOX,GAAE,CAAC,MAAAC,GAAW,OAAOC,EAAAD,EAAM,GAAlC,IAAIW,EAAA,SA2YWT,GA3Yf,IA4YQU,OAAOrD,IAAiB,MACxBD,GAAW,YACN/H,GAAQQ,oBAAoB,iBA9YzC,OAAO2K,GAAE,CAAC,MAAAV,GAAW,OAAOC,EAAAD,EAAM,GA4X5B,IACE1C,GAAW,MACX,OAAAgC,QAAAuB,QAAMtL,GAAQQ,oBAAoB,qBAAlC+K,eAAqDC,GA9X7D,IA+XQH,OAAOrD,IAAiB,KACN,OAAA+B,QAAAuB,QAAMnE,GAAiB0D,WAAS,UAAA,EAA1B1D,GAAiB0D,UAAY3K,IAAnCqL,eAA0CE,GAhYpE,IAgYcpB,EAAYoB,EAClB9F,GAAAA,UAAAA,EAAAA,EAA0B0E,GACpBZ,EAAWD,GAAsBa,GACjCE,EAAkBd,GAAY,GACpC,GAAIc,EAAgBrJ,SAAW,EAAG,CAChCoH,GAAiBS,QAAU,KAC7B,CACA2C,GAAqBnB,GACrBxC,GAAW,OAEXsD,OAAOrD,IAAiB,MA1YhC,OAAOmD,GAAE,CAAC,MAAAV,GAAW,OAAOW,EAAAX,EAAM,CAAC,GAAAW,EAA1B,CAAC,MAAAX,GAAW,OAAOW,EAAAX,EAAM,CAAC,GAAAW,EA2Y5B,CAAC,MAAOT,GAAOS,EAAPT,EAIT,CACD,CAAC,MAAOA,GAAaD,EAAbC,EAIT,CAAC,OAGH/C,EAASkB,iBAAgB,WACvB,GAAI7B,GAAqB,OAEzB,GAAI0E,QAAQvE,GAAwBlG,QAAS,MACtC0I,KACL,MACF,CACA,IAAMgC,EAAWvK,EAAiBI,GAAUC,WAC5C,GAAIkK,EAAStL,gBAAkB,kBAAmB,CAChDoF,eAAAA,EAA2BkG,EAAShM,UACpC,MACF,CAEA,IAAKyL,OAAOrD,IAAgB,MACrB4B,IACP,KAAO,CACLlE,eAAAA,EAA2BkG,EAAShM,SACtC,CACD,GAAEwH,IAEHQ,EAASkB,iBAAgB,WACvB,GAAI7B,GAAqB,CACvByE,GAAqBrG,GAAoB,GAC3C,CACF,GAAG,CAACA,IAEJ,IAAMqG,GAAuB7B,EAAMC,gBAAe,SAACrH,GACjD,IAAIA,GAAQ,UAAA,EAARA,EAAUvB,UAAW,GAAKf,GAAMP,SAASsB,SAAW,EAAG,MACpDlB,GAAQQ,oBAAoB,mBACjC,MACF,MACKR,GAAQC,YAAY,CACvBL,SAAU6C,GAAY,GACtBpC,aAAcuB,GAAW0B,WAE3BoC,GAAAA,UAAAA,EAAAA,EAA2BjD,EAC7B,IAEA,IAAMyG,GAAsB,SAAtBA,EAAuBL,EAAmCgD,GAC9D,IAAIC,EAAsB,GAC1BjD,EAAUkD,SAAQ,SAAChL,GACjB,IAAK8K,GAAWtE,IAAgB,MAAhBA,GAAkByE,SAASjL,GAAQ,OACnD,IAAMkL,EAAatK,EAAgBZ,EAAOZ,GAAMP,SAAUgC,IAC1DkK,EAAsBA,EAAoBxC,OAAO2C,EAAW3J,KAAI,SAACzB,GAAI,OAAKA,EAAKE,KAAK,IACtF,IACA,OAAO+K,GAGTjC,EAAMqC,iBAAgB,WACpB,GAAIxD,GAAiB,CACnB,IAAM7G,EAAaC,EAAiB3B,GAAMP,UAAY,GAAIgC,IAC1D,IAAMqK,EAAapK,EAAWsK,QAAO,SAACtL,GAAI,IAAAuL,EAAA,OAAAA,EAAKvL,EAAKsH,QAAK,UAAA,EAAViE,EAAYJ,SAAStD,IAAmB,OACvFlB,IAAoB,SAAC6E,GACnB,IAAMC,EAAYpD,GAAoB+C,EAAW3J,KAAI,SAACzB,GAAI,OAAKA,EAAKE,KAAK,KAAGuI,OAAO+C,GAAQ,IAC3F,OAAOlD,MAAMC,KAAK,IAAIC,IAAIiD,GAC5B,GACF,KAAO,CACL9E,GAAoB,GACtB,CACF,GAAG,CAACkB,KAEJ6D,EAAoBtH,GAAK,WACvB,MAAO,CACLuH,oBAAqB,SAAAA,SACdxM,GAAQO,eACd,EACDiB,gBAAiB,SAAAA,IACf,OAAOrB,GAAMP,QACd,EACD6M,qBAAsB,SAAAA,EAAChK,GACrB+E,GAAoB/E,EACtB,EAEJ,IAEA,IAAMiK,GAAW7C,EAAMC,gBAAe,SAACb,GACrCzB,GAAoByB,EACtB,IAEA,IAAM0D,GAAe9C,EAAMC,gBAAe,SAAC8C,EAAaC,EAAaC,EAAgBC,GACnFnE,GAAqBG,QAAU6D,EAC/B,IAAMI,EAAa3K,EAAkBwK,GAAc,GAAK7L,EAAQ6L,GAAcA,EAAa,CAACA,GAC5F,GAAIxK,EAAkBuK,GAAc,CAClCtH,GAAQ,UAAA,EAARA,EAAWsH,EAAaC,EAAYC,GACpC,MACF,CACA,GAAI7G,GAAc,CAChB,IAAMgH,EAAUzE,GAA4BL,MAC5C,IAAM+E,EAAU1E,GAA4BzH,MAC5C,IAAMoM,EAAmBH,EAAW1K,KAAI,SAACzB,GAAS,IAAAuM,EAChD,OAAAA,EAAAA,CAAAA,EAAAA,EACGH,GAAUpM,EAAKe,GAAWuG,OAAMiF,EAChCF,GAAUrM,EAAKe,GAAWb,OAAMqM,CAErC,IACA,GAAIpM,EAAQ4L,GAAc,CACxBtH,GAAQ,UAAA,EAARA,EAAW6H,EAAkBH,EAAYF,EAAeC,EAC1D,KAAO,CACLzH,eAAAA,EAAW6H,EAAiB,GAAIH,EAAW,GAAIF,EAAeC,EAChE,CACF,KAAO,CACL,GAAI/L,EAAQ4L,GAAc,CACxBtH,GAAQ,UAAA,EAARA,EAAWsH,EAAaI,EAAYF,EAAeC,EACrD,KAAO,CACLzH,GAAAA,UAAAA,EAAAA,EAAWsH,EAAaI,EAAW,GAAIF,EAAeC,EACxD,CACF,CACF,IAEA,IAAMM,GAAqBxD,EAAMC,gBAAe,SAACwD,EAAaP,GAC5D,IAAIQ,EAAmBlL,EAAkBiL,GAAe,GAAKA,EAC7DC,EAAmBtJ,EAAMuJ,cAAgBF,EAAYG,QAAUH,EAE/DC,EAAmBvM,EAAQuM,GAAoBA,EAAmB,CAACA,GAEnE,IAAMG,EAAmB,GACzB,IAAMC,EAAwB,GAC9B,IAAMC,EAAkB,GACxB,IAAMC,EAAuB,GAC7BN,EAAiBxB,SAAQ,SAAClL,GACxB,IAAMF,EAASR,GAAMN,eAAee,MAAK,SAACkN,GAAI,OAAKA,EAAKlM,GAAWb,SAAWF,KAC9E,IAAKF,EAAQ,OACb,IAAM2C,EAAW3C,GAAM,UAAA,EAANA,EAASiB,GAAW0B,UACrC,IAAKtC,EAAQsC,IAAaA,EAASpC,SAAW,EAAG,CAC/CwM,EAAiBK,KAAKpN,GACtBgN,EAAsBI,KAAKpN,EAAOiB,GAAWb,OAC/C,CACA6M,EAAgBG,KAAKpN,GACrBkN,EAAqBE,KAAKpN,EAAOiB,GAAWb,OAC9C,IAEA,GAAI0E,EAAW,CACb+B,IAAoB,SAAC6E,GACnB,IAAMC,EAAYpD,GAAoByE,GAAuBrE,OAAO+C,GAAQ,IAC5E,OAAOlD,MAAMC,KAAK,IAAIC,IAAIiD,GAC5B,IACA,IAAK9G,IAAgCvB,EAAMuJ,cAAe,CACxDb,GAAagB,EAAuBD,EAAkBE,EAAiBb,EACzE,KAAO,CACLJ,GAAakB,EAAsBD,EAAiBA,EAAiBb,EACvE,CACF,KAAO,CACL,GAAIQ,EAAiB,GAAI,CACvB,IAAMS,EAAcJ,EAAgBhN,MAAK,SAACC,GAAI,OAAKA,EAAKe,GAAWb,SAAWwM,EAAiB,MAC/FZ,GAAaY,EAAiB,GAAIS,EAAa,CAACA,GAAcjB,EAChE,KAAO,CACL,IAAMkB,EAAYlB,EAAYnK,KAAKhB,GAAWb,OAC9C,IAAMJ,EAASR,GAAMN,eAAee,MAAK,SAACkN,GAAI,OAAKA,EAAKlM,GAAWb,SAAWkN,KAC9EtB,GAAahI,UAAWhE,EAAQ,CAACA,GAASoM,EAC5C,CACF,CACF,IAEA,IAAMmB,GAA4BrE,EAAMC,gBAAe,SAACqE,GACtD,OAAOvI,GAAmB,UAAA,EAAnBA,EAAsBuI,EAC/B,IAEA,IAAMC,GAAmBnG,GAAQ,WAC/B,IAAMoG,EAAO3K,EAAWvD,GAAMP,UAAY,IAC1C,GAAI8I,IAAmBpC,KAAqB,YAAa,CACvD,OAAOgI,EACL5K,EAAWvD,GAAMP,UAAY,KAC7B,SAACgD,GAAS,IAAA2L,EACR,IAAMxN,GAAKwN,EAAG3L,EAAKhB,GAAWuG,SAAhBoG,UAAAA,EAAAA,EAAwBC,cACtC,OAAOzN,EAAM0N,QAAQ/F,GAAgB8F,gBAAkB,CACzD,GACA,CAAEnO,aAAcuB,GAAW0B,UAE/B,CACA,OAAO+K,CACT,GAAG,CAACzM,GAAW0B,SAAU1B,GAAWuG,MAAO7B,GAAkBnG,GAAMP,SAAU8I,KAE7E,IAAMgG,GAAWzG,GAAQ,WACvB,IAAM1E,EAAO,SAAPA,EAAQrB,GAAY,OACxBA,eAAAA,EAAMI,KAAI,SAACzB,GAAS,IAAA8N,EAAAC,EAClB,IAAMC,GAAcX,IAAyB,UAAA,EAAzBA,GAA4BrN,KAASA,EACzD,IAAMiO,EAAW5I,GAAiBvB,UAAYkK,EAAYC,SAC1D,IAAMC,GAAQJ,EAAIE,EAAYjN,GAAWuG,SAAxBwG,UAAAA,EAAAA,EAA2CH,cAC5D,IAAIQ,EACJ,GAAItG,GAAiB,CACnB,IAAM9E,EAAQmL,EAASN,QAAQ/F,GAAgB8F,eAC/C,IAAMS,EAAYF,EAASG,UAAU,EAAGtL,GACxC,IAAMuL,EAAWJ,EAASK,MAAMxL,EAAQ8E,GAAgBxH,QACxD,IAAMmO,EAAYN,EAASK,MAAMxL,EAAOA,EAAQ8E,GAAgBxH,QAChE8N,EACEpL,GAAS,EACP0L,EAAA,OAAA,CAAM3I,UAAW4I,EAAW,CAAE,uBAAwBV,EAAYC,WAAYxL,SAAA,CAC3E2L,EACDO,EAAA,OAAA,CAAM7I,UAAU,yBAAwBrD,SAAE+L,IACzCF,KAED,IACR,CACA,IAAKH,GAAYH,EAAYC,SAAU,CACrCE,EACEQ,EAAA,OAAA,CAAM7I,UAAW4I,EAAW,CAAE,uBAAwBV,EAAYC,WAAYxL,SAAEyL,GAEpF,CACA,IAAMzL,EAAWuL,EAAYjN,GAAW0B,UACxC,OAAA4E,EAAA,CAAA,EACK2G,GAAWD,EAAA,CACdE,SAAAA,GAAQF,EACPhN,GAAWuG,OAAQ6G,GAAYD,EAAQH,EACxCa,cAAeV,EAAQH,EACvBc,UAAWb,EAAYC,SAAQF,EAC9BhN,GAAW0B,UAAWtC,EAAQsC,IAAaA,EAASpC,OAAS,EAAIqC,EAAKD,GAAYqB,UAASiK,GAEhG,GAAE,EACJ,OAAOrL,EAAK6K,GACd,GAAG,CACDA,GACAF,GACAhI,GACAtE,GAAWuG,MACXvG,GAAW0B,SACXoF,KAGF,IAAMiH,GAAW9F,EAAMC,gBAAe,SAACqE,GACrC,OAAO,IAAIpE,SAAc,SAAOuB,EAASsE,GAAhB,OAAA,IAAA7F,SAAA,SAAAC,EAAAC,GAAA,IAAA4F,EAAAC,EAMfC,EAGArG,EARR,GAAIyE,EAASvM,GAAW0B,UAAW,CACjCgI,IACA,OAAAtB,GACF,CAtnBN,IAAIgG,aAAJ,IAAI,OAAAhG,GAAK,CAAC,MAAAS,GAAW,OAAOR,EAAAQ,EAAM,GAAlC,IAAIwF,EAAA,SA2oBWtF,GA3oBf,SA4oBaC,EAAQD,MAAMA,EAAMC,SAAW,aAEpCgF,IA9oBR,OAAOI,GAAE,CAAC,MAAAvF,GAAW,OAAOR,EAAAQ,EAAM,GAunB5B,IACmB,OAAAV,QAAAuB,SAAAuE,EAAM5L,EAAMiM,8BAANL,EAA6BhF,WAA7BgF,UAAAA,EAAAA,EAA6BhF,YAClDiF,EAAA7L,EAAMiM,wBAANJ,MAAAA,EAA6BK,WAAS,UAAA,EAAtCL,EAA6BK,UAAYhC,KAAa,CAAA,IADvC5C,eAEhB6E,GA1nBT,IAwnBc3G,EAAW2G,EAGX1G,EACJvC,GAAiBwC,uBACbxC,GAAiBwC,uBAAuBF,GACxCA,OAEDzJ,GACFS,uBAAuB,CACtBM,MAAOoN,EAASvM,GAAWb,OAC3BE,WAAYyI,EACZrJ,aAAcuB,GAAW0B,SACzBxC,UAAWc,GAAWb,QAEvBwK,MAAK,SAACK,GACLF,GAAqBE,EAAShM,UAC9B0L,GACF,IA1oBV,OAAO0E,GAAE,CAAC,MAAAvF,GAAW,OAAOwF,EAAAxF,EAAM,CAAC,GAAAwF,EA2oB5B,CAAC,MAAOtF,GAAasF,EAAbtF,EAIT,CAAC,MAEL,IAEA,IAAM0F,GAAaxG,EAAMC,gBAAe,SAACwG,GACvC,IAAMhN,EAAWgN,GAAQ,UAAA,EAARA,EAAW1O,GAAW0B,UAEvC,IAAMiN,EAAetM,EAAMsM,aAC3B,IAAMC,EAAkBD,GAAgBD,EAASnP,OAAS,MAC1D,IAAMsP,EAAenN,GAAYA,EAASpC,OAAS,GAAMsP,EACzD,OAAQC,CACV,IAEA,IAAMC,GAAc7G,EAAMC,gBAAe,SAACwG,GAAa,IAAAK,EAAAC,EAAAC,EACrD,IAAMC,EAAcR,EAASb,eAAiBa,EAAS1O,GAAWuG,OAClE,IAAM4I,EAAsBlK,IAAK,UAAA,EAALA,GAAKqB,EAC5BoI,GAAAA,GAAQK,KAAAA,EACV/O,GAAWuG,OAAQ2I,EAAWH,KAEjC,GAAII,EAAqB,CACvB,OACEzB,EAAC0B,EAAQ,CAAA1N,UACPkM,EAAA,OAAA,CAAM7I,UAAU,kBAAiBrD,UAAEmD,IAAAA,UAAAA,EAAAA,GAAc6J,MAAaA,eAAAA,EAAW1O,GAAWuG,UACpFqH,EAACyB,EAAa/I,EAAA,CACZgJ,IAAK,GACDH,EAAmB,CACvBI,kBAAiBjJ,EAAA,CACfkJ,UAAW,cACXC,QAAS,MACNN,GAAmB,UAAA,EAAnBA,EAAqBI,mBAE1BxK,UAAW4I,EAAW,0BAA2BwB,EAAoBpK,gBAI7E,CAEA,GAAIyB,KAAsB,OAAQ,CAAA,IAAAkJ,EAChC,IAAIC,EAAsB,GAC1B,IAAAD,EAAIrN,EAAMsN,cAAND,MAAAA,EAAmBE,KAAM,CAAA,IAAAC,EAAAC,EAAAC,EAC3BJ,IACEE,EAAAxN,EAAMsN,cAAW,OAAAG,EAAjBD,EAAoBrJ,MAApBsJ,UAAAA,EAAAA,EAAAE,KAAAH,EAAAvJ,EACKoI,CAAAA,EAAAA,GAAQqB,EAAA,CAAA,EAAAA,EACV/P,GAAWuG,OAAQ2I,EAAWa,OAC3B,EACV,KAAO,CAAA,IAAAE,EACLN,GACEtN,EAAM6N,gBAAc,UAAA,EAApB7N,EAAM6N,eAAc5J,EAAA,CAAA,EACfoI,GAAQuB,EAAA,CAAA,EAAAA,EACVjQ,GAAWuG,OAAQ2I,EAAWe,OAC3B,EACV,CACA,OACEvC,EAAC0B,EAAQ,CAAA1N,UACPkM,EAAA,OAAA,CAAM7I,UAAU,kBAAiBrD,UAAEmD,IAAAA,UAAAA,EAAAA,GAAc6J,MAAaA,eAAAA,EAAW1O,GAAWuG,UACnFoJ,EAAYrQ,OAAS,GACpBsO,EAACuC,EAAmB,CAACC,SAAUT,EAAaH,UAAU,cAAa9N,SACjEkM,EAAAyC,EAAe,QAKzB,CACA,IAAMV,GAAWX,EAAG3M,EAAMsN,cAANX,MAAAA,EAAmBsB,MAAnBtB,UAAAA,EAAAA,EAAmBsB,KAAIhK,EAAA,CAAA,EACtCoI,GAAQO,EAAA,CAAA,EAAAA,EACVjP,GAAWuG,OAAQ2I,EAAWD,KAGjC,OACEvB,EAAC0B,EAAQ,CAAA1N,UACPkM,EAAA,OAAA,CAAM7I,UAAU,kBAAiBrD,UAAEmD,IAAAA,UAAAA,EAAAA,GAAc6J,MAAaA,eAAAA,EAAW1O,GAAWuG,UACnFoJ,EACC/B,EAACyB,EAAa/I,EAAA,CACZgJ,IAAK,GACDK,EAAW,CACf5K,UAAW4I,EAAW,0BAA2BgC,EAAY5K,cAE7D,OAGV,IAEA,IAAMwL,GAAmBtI,EAAMuI,qBAAoB,SAACrR,GAClD4H,GAAmB5H,GACnBkD,EAAMoO,qBAANpO,UAAAA,EAAAA,EAAMoO,oBAAsBtR,EAC7B,GAAE,KAEH,IAAMuR,GAAiBzI,EAAMC,gBAAe,SAACyI,GAC3CJ,GAAiBI,EAAE5R,OAAOI,MAC5B,IAEA,IAAMyR,GAAa3I,EAAMC,gBAAe,SAAC4E,GACvC,IAAKzK,EAAMwO,KAAM,OAAO,KACxB,GAAIC,EAAezO,EAAMwO,MAAO,OAAOxO,EAAMwO,KAC7C,IAAME,EAAatC,GAAW3B,EAASxM,MACvC,OAAO+B,EAAMwO,KAAIvK,KACZwG,EAAQ,CACXkE,UAAWD,EACXxR,OAAQwR,IAEZ,IAEA,IAAME,GAAiB5K,GAAQ,WAC7B,MAAO,CAAE6K,MAAOlR,GAAWuG,MAAO7G,IAAKM,GAAWb,MAAOuC,SAAU1B,GAAW0B,SAChF,GAAG,CAAC1B,KACJ,IAAMmR,GAAWrE,GAASxN,OAAS,GAAKf,GAAMG,gBAAkB,gBAChE,IAAM0S,GAAW9K,EAAA,CACf+K,SAAU,CAAEC,aAAc,OAC1BxC,YAAAA,GACAyC,UAAW,KACXC,aAAc5D,EAAA6D,MACdC,OAAQ,SAAAA,EAAC5Q,GACP,GAAI8D,GAAY,CACd,IAAM+M,EAAM/M,GAAW9D,GACvB,IAAK6Q,EAAK,MACZ,CACA,IAAAC,EAAmChR,EAAW4L,GAAoCxM,GAAYc,GAAtFD,EAAQ+Q,EAAR/Q,SAAU4B,EAAYmP,EAAZnP,aAClBkC,IAAAA,UAAAA,EAAAA,GAAmBlC,GACnBqH,GAAqBjJ,EACtB,EACDwG,aAAc1B,IACXT,GAAU,CACblF,WAAYiR,GACZnE,SAAAA,GACAhC,SAAAA,GACAiD,SAAU1L,EAAMsM,aAAeZ,GAAWhL,UAC1CO,MAAO,CAAEuO,MAAO,QAChBhB,KAAMD,KAGR,IAAMkB,GAAe,CACnBC,QAAStG,GACT5H,UAAAA,EACAmO,YAAa/K,IAGf,IAAMgL,GAAgB,CACpBC,SAAUzG,GACV0G,SAAU,MACVC,aAAcnL,IAEhB,IAAMoL,GAAaxO,EAAYiO,GAAeG,GAC9C,IAAMK,GAAQ3E,EAAW,iBAAyClH,uBAAAA,GAAsB1B,IACxF,IAAMwN,GAAgBhU,GAAMP,SAASsB,OAAS,IAAM6R,IAAYrK,GAChE,OACE4G,EAAA,MAAA,CAAK3I,UAAWuN,GAAOhP,MAAOA,EAAM5B,SACjC,GAAEwC,GACDwJ,EAAA,MAAA,CAAK3I,UAAU,6BAA6BzB,MAAOwB,GAAYpD,SAAA,CAC7DkM,EAAC4E,EAAkB,CACjBzN,UAAU,wBACV0N,YAAatO,EACbT,SAAUgN,GACVvR,MAAO8E,EACPyO,WAAU,SAETrQ,EAAMsQ,oBACP/E,EAAA,OAAA,CAAM7I,UAAU,8BAA6BrD,SAAEW,EAAMsQ,wBAK1DxB,GACCzD,EAAA,MAAA,CAAK3I,UAAU,8BAA6BrD,SAAA,CAC1CkM,EAACgF,EAAI,CAACC,SAAUtU,GAAMG,gBAAkB,qBACxCkP,EAACkF,EAAIxM,EAAA,CAAA,EAAK+L,GAAgBjB,GAAW,CAAErM,UAAU,4BAGnD6I,EAACmF,EAAa,CACZC,OAAQzU,GAAMG,cACdwH,QAASA,GACT+M,cAAa3M,EAAA,CACX,kBAAmBiM,GAAgB,SAAW,QAC3CnO,GAEL8O,YACEtF,EAACuF,EAAM,CAACC,KAAK,UAAUC,QAASrL,GAAuBtG,SAAC,eAQpE,IAEAyB,EAAYmQ,aAAe,CACzBhP,eAAgB,UCrzBLnB,EAAcoQ,EAA4BC,EAAkB,CAOvE5T,gBAAiBA"}
|
|
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 { TAny, 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 queryIsEmpty: boolean;\n requestStatus?: TRequestStatus;\n};\n\ntype ModelActionParams = {\n setTreeList: {\n treeList: ModelState['treeList'];\n childrenName: string;\n };\n resetTreeList: void;\n changeRequestStatus: TRequestStatus;\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 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.requestStatus = 'request-success';\n };\n },\n resetTreeList: () => {\n return (state) => {\n state.treeList = [];\n state.treeTiledArray = [];\n };\n },\n changeRequestStatus: (params) => {\n return (state) => {\n state.requestStatus = params;\n if (params === 'request-error') {\n state.treeList = [];\n state.treeTiledArray = [];\n }\n };\n },\n treeListAppendChildren: (params) => {\n return (state) => {\n const array = treeToArray(state.treeList, params.childrenName);\n const target = array.find((item) => item[params.valueName] === 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 = treeToArray(state.treeList, params.childrenName);\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 isUndefinedOrNull,\n treeLeafParentsArray,\n treeToArray,\n treeToTiledArray,\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, { value: 'value', parentValue: 'parentValue' })\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","import { CaretDownFilled, MoreOutlined } from '@ant-design/icons';\nimport { isArray } from '@dimjs/lang';\nimport { cloneState } from '@dimjs/model';\nimport { classNames, extend } from '@dimjs/utils';\n\nimport { isUndefinedOrNull, treeFilter, type TAny, type TPlainObject } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\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 { 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 { getDefaultExpandAllKeys, getExpandedKeys, getVauleList, onTreeDrop } from './utils';\n\ntype TreeWrapperValue =\n | string\n | number\n | Array<string | number>\n | TPlainObject<string | number>\n | Array<TPlainObject<string | number>>;\n\ntype TreeServiceConfig = {\n params?: TPlainObject;\n requiredParamsKeys?: string[];\n onRequest?: (params?: TAny) => TAny;\n /**\n * 响应数据适配器\n */\n onRequestResultAdapter?: (respData: TAny) => TPlainObject[];\n};\ntype 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 modelKey: string;\n\n /**\n * 字段映射\n * ```\n * 默认值:\n * label = 'label'\n * value = 'value'\n * children = 'children'\n * ```\n */\n fieldNames?: { label?: string; value?: string; children?: string };\n /**\n * useEffect依赖项数组,用于重新发起获取接口数据\n */\n effectDependencyList?: DependencyList;\n /**\n * 请求服务需求的数据,当设置`selectorTreeList`后无效果\n */\n serviceConfig?: TreeServiceConfig;\n /**\n * 是否开启异步加载\n */\n loadDataFlag?: boolean;\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 * 1. checkStrictly = true,模式下失效\n */\n checkableResponseParentNode?: boolean;\n\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 }) => ReactElement;\n /**\n * 是否必选,最后一个不能取消\n */\n // required?: boolean;\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 labelInValue?: boolean;\n /**\n * ```\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\nexport type TreeWrapperRefApi = {\n onClearSelectorList: () => void;\n getTreeDataList: () => TreeProps['treeData'];\n onChangeExpandedKeys: (expandedKeys: Array<string | number>) => 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 ...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 fieldNames = useMemo(() => {\n return { label: 'label', value: 'value', children: 'children', ...props.fieldNames };\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>();\n\n const innerOperateValueRef = useRef<Array<string | number> | string | number>();\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) {\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 return (\n newServiceConfig.onRequestResultAdapter\n ? newServiceConfig.onRequestResultAdapter(respData as unknown as TPlainObject)\n : respData\n ) as TPlainObject[];\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 console.warn(`TreeWrapper组件:参数:${requiredParamsKeys.join('、')}不能为空`);\n return;\n }\n }\n try {\n setLoading(true);\n await actions.changeRequestStatus('request-progress');\n window[requestPreKey] = true;\n const _respData = await newServiceConfig.onRequest?.(params);\n onRequestResponseChange?.(_respData);\n const respData = serviceResponseHandle(_respData) as TreeProps['treeData'];\n const respDataListNew = 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) {\n window[requestPreKey] = false;\n setLoading(false);\n void actions.changeRequestStatus('request-error');\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('request-success');\n return;\n }\n void actions.setTreeList({\n treeList: dataList || [],\n childrenName: fieldNames.children,\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 return String(labelValue).toLowerCase().includes(treeSearchValue.toLowerCase());\n });\n setTreeExpandedKeys((prev) => {\n const mergeValueList = targetList.map((item) => item[fieldNames.value]).concat(prev || []);\n const mergeList = getTreeExpandedKeys(mergeValueList);\n return Array.from(new Set(mergeList));\n });\n } else {\n setTreeExpandedKeys([]);\n }\n }, [treeSearchValue]);\n\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 };\n });\n\n const onExpand = hooks.useCallbackRef((expandedKeys) => {\n setTreeExpandedKeys(expandedKeys as string[]);\n });\n\n const onRespChange = hooks.useCallbackRef((selectedKey, selectInfo?, selectAllList?, operateInfo?) => {\n innerOperateValueRef.current = selectedKey;\n const selectList = isUndefinedOrNull(selectInfo) ? [] : isArray(selectInfo) ? selectInfo : [selectInfo];\n if (isUndefinedOrNull(selectedKey)) {\n onChange?.(selectedKey, selectInfo, selectAllList);\n return;\n }\n if (labelInValue) {\n const lvLabel = labelInValueFieldNamesMerge.label;\n const lvValue = labelInValueFieldNamesMerge.value;\n const labelInValueList = selectList.map((item) => {\n return {\n [lvLabel]: item[fieldNames.label],\n [lvValue]: item[fieldNames.value],\n };\n });\n if (isArray(selectedKey)) {\n onChange?.(labelInValueList, selectList, selectAllList, operateInfo);\n } else {\n onChange?.(labelInValueList[0], selectList[0], selectAllList, operateInfo);\n }\n } else {\n if (isArray(selectedKey)) {\n onChange?.(selectedKey, selectList, selectAllList, operateInfo);\n } else {\n onChange?.(selectedKey, selectList[0], selectAllList, operateInfo);\n }\n }\n });\n\n const onTreeChangeHandle = hooks.useCallbackRef((checkedData, operateInfo) => {\n let checkedValueList = isUndefinedOrNull(checkedData) ? [] : checkedData;\n checkedValueList = props.checkStrictly ? checkedData.checked : checkedData;\n\n checkedValueList = isArray(checkedValueList) ? checkedValueList : [checkedValueList];\n\n const selectedLeafList = [] as TPlainObject[];\n const selectedLeafValueList = [] as Array<string | number>;\n const selectedAllList = [] as TPlainObject[];\n const selectedAllValueList = [] as Array<string | number>;\n checkedValueList.forEach((item) => {\n const target = state.treeTiledArray.find((temp) => temp[fieldNames.value] === item);\n if (!target) return;\n const children = target?.[fieldNames.children];\n if (!isArray(children) || children.length === 0) {\n selectedLeafList.push(target);\n selectedLeafValueList.push(target[fieldNames.value]);\n }\n selectedAllList.push(target);\n selectedAllValueList.push(target[fieldNames.value]);\n });\n\n if (checkable) {\n setTreeExpandedKeys((prev) => {\n const mergeList = getTreeExpandedKeys(selectedLeafValueList).concat(prev || []);\n return Array.from(new Set(mergeList));\n });\n if (!checkableResponseParentNode && !props.checkStrictly) {\n onRespChange(selectedLeafValueList, selectedLeafList, selectedAllList, operateInfo);\n } else {\n onRespChange(selectedAllValueList, selectedAllList, selectedAllList, operateInfo);\n }\n } else {\n if (checkedValueList[0]) {\n const currentNode = selectedAllList.find((item) => item[fieldNames.value] === checkedValueList[0]);\n onRespChange(checkedValueList[0], currentNode, [currentNode], operateInfo);\n } else {\n const nodeValue = operateInfo.node[fieldNames.value];\n const target = state.treeTiledArray.find((temp) => temp[fieldNames.value] === nodeValue);\n onRespChange(undefined, target, [target], operateInfo);\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 return treeFilter(\n cloneState(state.treeList || []),\n (node) => {\n const value = node[fieldNames.label]?.toLowerCase();\n return value.indexOf(treeSearchValue.toLowerCase()) >= 0;\n },\n { childrenName: fieldNames.children },\n );\n }\n return list;\n }, [fieldNames.children, fieldNames.label, searchResultType, state.treeList, treeSearchValue]);\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)?.toLowerCase();\n let titleDom;\n if (treeSearchValue) {\n const index = strTitle.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 className={classNames({ 'v-tree-item-disabled': adapterItem.disabled })}>\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 className={classNames({ 'v-tree-item-disabled': adapterItem.disabled })}>{strTitle}</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 newServiceConfig.onRequestResultAdapter\n ? newServiceConfig.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) {\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 { title: fieldNames.label, key: fieldNames.value, children: fieldNames.children };\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 as TPlainObject[], 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={searchValue}\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 ...requestMessageConfig,\n }}\n errorButton={\n <Button type=\"primary\" onClick={startDataSourceRequest}>\n 重新获取数据\n </Button>\n }\n />\n )}\n </div>\n );\n});\n\nTreeWrapper.defaultProps = {\n disabledCanUse: true,\n};\n","import { attachPropertiesToComponent } from '@flatbiz/utils';\nimport { getTreeDataList } from './hooks';\nimport { TreeWrapper as TreeWrapperInner } from './tree-wrapper';\nexport type * 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 = attachPropertiesToComponent(TreeWrapperInner, {\n /**\n * 获取树形原数据\n * ```\n * 参数 modelKey 与 TreeWrapper属性 modelKey相同,才能获取数据\n * ```\n */\n getTreeDataList: getTreeDataList,\n});\n"],"names":["defaultState","treeList","treeTiledArray","queryIsEmpty","TreeWrapperModel","actions","setTreeList","params","state","treeToArray","childrenName","requestStatus","resetTreeList","changeRequestStatus","treeListAppendChildren","array","target","find","item","valueName","value","_isArray","appendList","length","isLeaf","treeWrapperModels","treeWrapperModel","key","Model","getTreeDataList","modelKey","getState","getDefaultExpandAllKeys","fieldNames","allValues","children","filter","childrenValue","map","getExpandedKeys","tiledArray","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","undefined","_parent","tileList","parentId","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","otherProps","_objectWithoutPropertiesLoose","_excluded","hasSelectorTreeList","hasOwnProperty","newServiceConfig","newEffectDependencyList","_useState","useState","treeExpandedKeys","setTreeExpandedKeys","_treeWrapperModel$use","useStore","_fbaHooks$useSafeStat","fbaHooks","useSafeState","loading","setLoading","requestPreKey","useMemo","_extends","label","menuLayoutTypeNew","menuTriggerTypeNew","responseFirstRef","useRef","labelInValueFieldNamesMerge","_useState2","treeSearchValue","setTreeSearchValue","innerOperateValueRef","valueList","useEffectCustom","current","expandedKeys","getTreeExpandedKeys","Array","from","Set","concat","valueIsEmpty","serviceResponseHandle","respData","onRequestResultAdapter","startDataSourceRequest","_hooks","useCallbackRef","Promise","$return","$error","requiredParamsKeys","_params","isEmpty","_respData","_respData2","respDataListNew","$Try_1_Post","$boundEx","$Try_1_Catch","error","message","onRequest","Error","_extend","console","warn","join","$Try_2_Post","$Try_2_Catch","window","resolve","then","$await_4","$await_5","onChangeSelectorList","allState","refresh","newTreeExpandedKeys","forEach","includes","targetKeys","useUpdateEffect","targetList","labelValue","String","toLowerCase","prev","mergeValueList","mergeList","useImperativeHandle","onClearSelectorList","onChangeExpandedKeys","onExpand","onRespChange","selectedKey","selectInfo","selectAllList","operateInfo","selectList","lvLabel","lvValue","labelInValueList","_ref","onTreeChangeHandle","checkedData","checkedValueList","checkStrictly","checked","selectedLeafList","selectedLeafValueList","selectedAllList","selectedAllValueList","temp","push","currentNode","nodeValue","treeItemDataAdapterHandle","dataItem","originalDataList","list","treeFilter","_node$fieldNames$labe","indexOf","treeData","_adapterItem$fieldNam","_extends2","adapterItem","disabled","strTitle","titleDom","beforeStr","substring","afterStr","slice","centerStr","_jsxs","_classNames","_jsx","_treeItemName","_disabled","loadData","reject","_props$loadDataServic","_props$loadDataServic2","_respData3","respDataList","$Try_3_Post","$Try_3_Catch","loadDataServiceConfig","getParams","$await_6","isLeafNode","nodeData","loadDataFlag","loadHasChildren","hasChildren","titleRender","_extends3","_props$menuOptions3","_extends6","stringLabel","buttonOperateConfig","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","status","messageConfig","errorButton","Button","type","onClick","defaultProps","attachPropertiesToComponent","TreeWrapperInner"],"mappings":"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"}
|
package/esm/types/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/types/index.ts"],"sourcesContent":["import { noop } from '@flatbiz/utils';\n\nexport type FormItemNamePath = string | number | Array<string | number>;\n\nexport const types = noop;\n"],"names":["types","noop"],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/types/index.ts"],"sourcesContent":["import { noop } from '@flatbiz/utils';\n\nexport type FormItemNamePath = string | number | Array<string | number>;\nexport type TLocale = 'en' | 'zh-cn';\n\nexport type TFbaLocale = {\n TreeWrapper?: {\n /** 数据加载异常默认文案 */\n requestError?: string;\n };\n FbaDialogModal?: {\n cancelText?: string;\n };\n};\n\nexport const types = noop;\n"],"names":["types","noop"],"mappings":";sCAeO,IAAMA,EAAQC"}
|