@flatbiz/antd 4.2.28 → 4.2.30
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/form-grid/index.js +1 -1
- package/esm/form-grid/index.js.map +1 -1
- package/esm/form-item-wrapper/index.js +1 -1
- package/esm/form-item-wrapper/index.js.map +1 -1
- package/esm/tree-wrapper/index.js +1 -1
- package/esm/tree-wrapper/index.js.map +1 -1
- package/index.d.ts +16 -32
- package/package.json +1 -1
- package/esm/form-item-normalize/index.css +0 -0
- package/esm/form-item-normalize/index.js +0 -5
- package/esm/form-item-normalize/index.js.map +0 -1
package/esm/form-grid/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* eslint-disable */
|
|
2
2
|
import './index.css';
|
|
3
3
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
4
|
-
import{_ as r,a as e}from"../_rollupPluginBabelHelpers-1f4d8910.js";import{Col as t,Form as n,Row as i,Space as o}from"antd";import{jsx as a,jsxs as l}from"react/jsx-runtime";import{classNames as u}from"@dimjs/utils/cjs/class-names";import{useMemo as
|
|
4
|
+
import{_ as r,a as e}from"../_rollupPluginBabelHelpers-1f4d8910.js";import{Col as t,Form as n,Row as i,Space as o}from"antd";import{jsx as a,jsxs as l}from"react/jsx-runtime";import{classNames as u}from"@dimjs/utils/cjs/class-names";import{useMemo as s,isValidElement as f,cloneElement as d}from"react";import{toArray as p,valueIsEqual as v}from"@flatbiz/utils";import{u as m}from"../use-responsive-point-21b8c601.js";var c=["forceAloneRow","hidden"];var h={xs:24,sm:24,md:24,lg:24,xl:24,xxl:24};var g=function n(i){var o=i.forceAloneRow,l=i.hidden,u=r(i,c);var s=o?h:u;if(l)return null;return a(t,e({},s,{children:i.children}))};g["domTypeName"]="FormCol";var x=["leftList","rightList","rowColTotal","justify","forceAloneRow","hidden","leftSpaceProps","rightSpaceProps"];var y={xs:24,sm:24,md:24,lg:24,xl:24,xxl:24};var L=function f(d){var p=d,v=p.leftList,m=p.rightList,c=p.rowColTotal,h=p.justify,g=p.forceAloneRow,L=p.hidden,w=p.leftSpaceProps,C=p.rightSpaceProps,j=r(p,x);var T=(v||[]).filter(Boolean);var N=(m||[]).filter(Boolean);var F=T.length>0&&N.length>0;var G=g||F?y:{};var O=s((function(){if(h)return h;if(F)return"space-between";if(g)return"end";if(c===1)return"start";return"end"}),[g,F,h,c]);var P=u(d.className,"v-form-col-operate");if(L)return null;return a(t,e({},j,G,{className:P,children:a(n.Item,{children:l(i,{justify:O,wrap:false,children:[a(o,e({},w,{children:T.map((function(r){return r}))})),a(o,e({},C,{style:e({overflowX:"auto"},C==null?void 0:C.style),children:N==null?void 0:N.map((function(r){return r}))}))]})})}))};L["domTypeName"]="FormOperateCol";var w=function r(e,t){try{var n=[];var i=function r(t){var n=e[t];return{index:t,value:n>24?24:n}};var o=true;var a=[];var l=0;var u=0;while(o){var s=e[l];a.push(i(l));if(s>=24){n.push(a);a=[];u=0}else if(l===e.length-1){n.push(a)}else{u+=s;if(u>=24){n.push(a);a=[];u=0}}l=l+1;if(l>=e.length){o=false}}var f=n.find((function(r){return!!r.find((function(r){return r.index===t}))}))||[];var d=0;var p=0;f.forEach((function(r,e){if(r.index===t)p=e;if(r.index<t){d=d+r.value}}));if(d===24||d===0){f[p].value=24}else{f[p].value=24-d}return{gridList:n.reduce((function(r,e){return r.concat(e)})).map((function(r){return r.value})),gridGroupList:n}}catch(r){return{gridList:e,gridGroupList:[]}}};var C={xs:24,sm:12,md:12,lg:8,xl:8,xxl:6};var j={xs:24,sm:12,md:12,lg:6,xl:6,xxl:6};var T=function r(t){var n=m()||"md";var o=p(t.children).filter((function(r){if(!r||!f(r))return false;return v(r.type["domTypeName"],["FormOperateCol","FormCol"])}));var l=t.gridSize==="small"?j:C;var u=s((function(){var r=o.findIndex((function(r){return r.type["domTypeName"]==="FormOperateCol"}));if(n===undefined){return{gridList:[],gridGroupList:[]}}var e=o.map((function(e,t){var i,o;if(t===r)return 0;var a=(i=e.props)==null?void 0:i.span;return((o=e.props)==null?void 0:o[n])||a||l[n]}));if(r<0){return{gridList:e,gridGroupList:[]}}return w(e,r)}),[o,l,n]),c=u.gridList,h=u.gridGroupList;return a(i,e({},t,{children:o.map((function(r,t){var i;var o=e({},l,r.props);var a=e({key:t},o,(i={},i[n]=c[t]||o[n],i));if(r.type["domTypeName"]==="FormOperateCol"){a["rowColTotal"]=h.length}return d(r,a)}))}))};var N={Row:T,Col:g,OperateCol:L};export{N as FormGrid};
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/form-grid/form-col.tsx","@flatbiz/antd/src/form-grid/form-operate-col.tsx","@flatbiz/antd/src/form-grid/utils.ts","@flatbiz/antd/src/form-grid/form-row.tsx","@flatbiz/antd/src/form-grid/index.ts"],"sourcesContent":["import { Col } from 'antd';\nimport { ReactNode } from 'react';\nconst forceAloneRowGrid = { xs: 24, sm: 24, md: 24, lg: 24, xl: 24, xxl: 24 };\nexport type FormColProps = {\n // 栅格占位格数,不考虑响应式\n span?: number;\n /** 屏幕 < 576px */\n xs?: number;\n /** 屏幕 ≥ 576px */\n sm?: number;\n /** 屏幕 ≥ 768px */\n md?: number;\n /** 屏幕 ≥ 992px */\n lg?: number;\n /** 屏幕 ≥ 1200px */\n xl?: number;\n /** 屏幕 ≥ 1600px */\n xxl?: number;\n /** 强制单独一行 */\n forceAloneRow?: boolean;\n children?: ReactNode | ReactNode[];\n hidden?: boolean;\n};\n\n/**\n * 网格响应式布局,默认值:{ xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 }\n *```\n * 1. 设置 span 栅格占位格数,不考虑响应式\n * 2. grid 自定义响应式网格布局\n * xs: 屏幕 < 576px\n * sm: 屏幕 ≥ 576px\n * md: 屏幕 ≥ 768px\n * lg: 屏幕 ≥ 992px\n * xl: 屏幕 ≥ 1200px\n * xxl: 屏幕 ≥ 1600px\n * ```\n */\nexport const FormCol = (props: FormColProps) => {\n const { forceAloneRow, hidden, ...otherProps } = props;\n const forceGrid = forceAloneRow ? forceAloneRowGrid : otherProps;\n if (hidden) return null;\n return <Col {...forceGrid}>{props.children}</Col>;\n};\n\nFormCol['domTypeName'] = 'FormCol';\n","import { classNames } from '@dimjs/utils';\nimport { Col, Form, Row, RowProps, Space, SpaceProps } from 'antd';\nimport { ReactElement, useMemo } from 'react';\n\nconst fullGrid = { xs: 24, sm: 24, md: 24, lg: 24, xl: 24, xxl: 24 };\nexport type FormOperateColProps = {\n className?: string;\n leftList?: Array<ReactElement | null>;\n rightList?: Array<ReactElement | null>;\n // left、right 对齐方式,优先级最高\n justify?: RowProps['justify'];\n /** 强制单独一行 */\n forceAloneRow?: boolean;\n hidden?: boolean;\n leftSpaceProps?: SpaceProps;\n rightSpaceProps?: SpaceProps;\n};\n\n/**\n * FormOperateCol 布局说明\n * ```\n * 1. 网格数以及位置为动态计算,不支持 xs、sm、md等\n * 2. 如果FormRow只有一行col,则OperateCol会在当前行剩余网格内居左对齐\n * 3. 如果同时设置 leftList、rightList,则此cell会强制独占一行,并左右布局\n * 4. 如果只设置 leftList、rightList其中一个,则会在最后一行剩余网格内居右对齐\n * ```\n */\nexport const FormOperateCol = (props: FormOperateColProps) => {\n const {\n leftList,\n rightList,\n rowColTotal,\n justify,\n forceAloneRow,\n hidden,\n leftSpaceProps,\n rightSpaceProps,\n ...otherProps\n } = props as FormOperateColProps & {\n rowColTotal: number;\n };\n const _leftList = (leftList || []).filter(Boolean);\n const _rightList = (rightList || []).filter(Boolean);\n const hasAll = _leftList.length > 0 && _rightList.length > 0;\n const forceGrid = forceAloneRow || hasAll ? fullGrid : {};\n\n const colJustify = useMemo(() => {\n if (justify) return justify;\n if (hasAll) return 'space-between';\n if (forceAloneRow) return 'end';\n if (rowColTotal === 1) return 'start';\n return 'end';\n }, [forceAloneRow, hasAll, justify, rowColTotal]);\n\n const className = classNames(props.className, 'v-form-col-operate');\n\n if (hidden) return null;\n\n return (\n <Col {...otherProps} {...forceGrid} className={className}>\n <Form.Item>\n <Row justify={colJustify}>\n <Space {...leftSpaceProps}>{_leftList.map((item) => item)}</Space>\n <Space {...rightSpaceProps}>{_rightList?.map((item) => item)}</Space>\n </Row>\n </Form.Item>\n </Col>\n );\n};\n\nFormOperateCol['domTypeName'] = 'FormOperateCol';\n","/**\n * 用于计算 operateCol 所占用网格数\n * ```\n * col网格数据 [8,8,8,12,24,0,8] => [[8,8,8],[12],[24],[0,8]],分组后计算operateCol所在行中剩余网格数\n * ```\n * @returns\n */\nexport const calculateOperateGrid = (gridList: number[], operateColIndex: number) => {\n try {\n const groupList = [] as { index: number; value: number }[][];\n const getGroupItem = function (index) {\n const value = gridList[index];\n return { index, value: value > 24 ? 24 : value };\n };\n let condition = true;\n let groupItemList = [] as { index: number; value: number }[];\n let currentIndex = 0;\n let total = 0;\n while (condition) {\n const currentValue = gridList[currentIndex];\n groupItemList.push(getGroupItem(currentIndex));\n if (currentValue >= 24) {\n groupList.push(groupItemList);\n groupItemList = [];\n total = 0;\n } else if (currentIndex === gridList.length - 1) {\n groupList.push(groupItemList);\n } else {\n total += currentValue;\n if (total >= 24) {\n groupList.push(groupItemList);\n groupItemList = [];\n total = 0;\n }\n }\n currentIndex = currentIndex + 1;\n if (currentIndex >= gridList.length) {\n condition = false;\n }\n }\n const hasOperateList =\n groupList.find((item) => !!item.find((temp) => temp.index === operateColIndex)) || [];\n let hasOperateTotal = 0;\n let hasOperateIndex = 0;\n hasOperateList.forEach((item, index) => {\n if (item.index === operateColIndex) hasOperateIndex = index;\n if (item.index < operateColIndex) {\n hasOperateTotal = hasOperateTotal + item.value;\n }\n });\n if (hasOperateTotal === 24 || hasOperateTotal === 0) {\n hasOperateList[hasOperateIndex].value = 24;\n } else {\n hasOperateList[hasOperateIndex].value = 24 - hasOperateTotal;\n }\n\n return {\n gridList: groupList.reduce((a, b) => a.concat(b)).map((temp) => temp.value),\n gridGroupList: groupList,\n };\n } catch (error) {\n return {\n gridList,\n gridGroupList: [],\n };\n }\n};\n","import { toArray, valueIsEqual } from '@flatbiz/utils';\nimport { Row, RowProps } from 'antd';\nimport { cloneElement, isValidElement, ReactElement, ReactNode, useMemo } from 'react';\nimport { useResponsivePoint } from '../fba-hooks/use-responsive-point';\nimport { calculateOperateGrid } from './utils';\n\nexport type FormRowProps = RowProps & {\n children?: ReactNode | ReactNode[];\n /**\n * defaultGrid = { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 };\n * defaultSmallGrid = { xs: 24, sm: 8, md: 8, lg: 6, xl: 6, xxl: 6 };\n */\n gridSize?: 'default' | 'small';\n};\nconst defaultGrid = { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 };\nconst defaultSmallGrid = { xs: 24, sm: 12, md: 12, lg: 6, xl: 6, xxl: 6 };\n\n/**\n * FormItem网格响应式布局\n *```\n * 1. 应用场景:Form条件布局\n * 2. 子元素只能是 FormGrid.Col、FormGrid.OperateCol,其他会被忽略\n * 3. 所有子元素中只能存在一个 FormGrid.OperateCol\n */\nexport const FormRow = (props: FormRowProps) => {\n const screenType = useResponsivePoint() || 'md';\n const childrenList = toArray<ReactElement>(props.children).filter((item) => {\n if (!item || !isValidElement(item)) return false;\n return valueIsEqual(item.type['domTypeName'], ['FormOperateCol', 'FormCol']);\n });\n const defaultGridSize = props.gridSize === 'small' ? defaultSmallGrid : defaultGrid;\n const { gridList, gridGroupList } = useMemo(() => {\n const operateColIndex = childrenList.findIndex((item) => {\n return item.type['domTypeName'] === 'FormOperateCol';\n });\n if (screenType === undefined) {\n return { gridList: [] as number[], gridGroupList: [] };\n }\n const _currentGridList = childrenList.map((temp, index) => {\n if (index === operateColIndex) return 0;\n const span = temp.props?.span as number;\n return temp.props?.[screenType] || span || defaultGridSize[screenType];\n });\n if (operateColIndex < 0) {\n return { gridList: _currentGridList, gridGroupList: [] };\n }\n return calculateOperateGrid(_currentGridList, operateColIndex);\n }, [childrenList, defaultGridSize, screenType]);\n\n // if (!screenType) return <Fragment>{props.children}</Fragment>;\n return (\n <Row {...props}>\n {childrenList.map((item, index) => {\n const itemProps = { ...defaultGridSize, ...item.props };\n const newProps = {\n key: index,\n ...itemProps,\n [screenType]: gridList[index] || itemProps[screenType],\n };\n if (item.type['domTypeName'] === 'FormOperateCol') {\n newProps['rowColTotal'] = gridGroupList.length;\n }\n return cloneElement(item, newProps);\n })}\n </Row>\n );\n};\n","import { FormCol } from './form-col';\nimport { FormOperateCol } from './form-operate-col';\nimport { FormRow } from './form-row';\n\nexport const FormGrid = {\n /**\n * FormItem网格响应式布局\n *```\n * 1. 应用场景:Form条件布局\n * 2. 子元素只能是 FormCol、FormOperateCol,其他会被忽略\n * 3. 所有子元素中只能存在一个 FormOperateCol\n */\n Row: FormRow,\n /**\n * 网格响应式布局,默认值:{ xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 }\n *```\n * 1. 设置 span 栅格占位格数,不考虑响应式\n * 2. grid 自定义响应式网格布局\n * xs: 屏幕 < 576px\n * sm: 屏幕 ≥ 576px\n * md: 屏幕 ≥ 768px\n * lg: 屏幕 ≥ 992px\n * xl: 屏幕 ≥ 1200px\n * xxl: 屏幕 ≥ 1600px\n * ```\n */\n Col: FormCol,\n /**\n * FormOperateCol 布局说明\n * ```\n * 1. 网格数以及位置为动态计算,不支持 xs、sm、md等\n * 2. 如果FormRow只有一行col,则OperateCol会在当前行剩余网格内居左对齐\n * 3. 如果同时设置 leftList、rightList,则此cell会强制独占一行,并左右布局\n * 4. 如果只设置 leftList、rightList其中一个,则会在最后一行剩余网格内居右对齐\n * ```\n */\n OperateCol: FormOperateCol,\n};\n"],"names":["forceAloneRowGrid","xs","sm","md","lg","xl","xxl","FormCol","props","forceAloneRow","hidden","otherProps","_objectWithoutPropertiesLoose","_excluded","forceGrid","_jsx","Col","_extends","children","fullGrid","FormOperateCol","_ref","leftList","rightList","rowColTotal","justify","leftSpaceProps","rightSpaceProps","_leftList","filter","Boolean","_rightList","hasAll","length","colJustify","useMemo","className","_classNames","Form","Item","_jsxs","Row","Space","map","item","calculateOperateGrid","gridList","operateColIndex","groupList","getGroupItem","index","value","condition","groupItemList","currentIndex","total","currentValue","push","hasOperateList","find","temp","hasOperateTotal","hasOperateIndex","forEach","reduce","a","b","concat","gridGroupList","error","defaultGrid","defaultSmallGrid","FormRow","screenType","useResponsivePoint","childrenList","toArray","isValidElement","valueIsEqual","type","defaultGridSize","gridSize","_useMemo","findIndex","undefined","_currentGridList","_temp$props","_temp$props2","span","_extends2","itemProps","newProps","key","cloneElement","FormGrid","OperateCol"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/form-grid/form-col.tsx","@flatbiz/antd/src/form-grid/form-operate-col.tsx","@flatbiz/antd/src/form-grid/utils.ts","@flatbiz/antd/src/form-grid/form-row.tsx","@flatbiz/antd/src/form-grid/index.ts"],"sourcesContent":["import { Col } from 'antd';\nimport { ReactNode } from 'react';\nconst forceAloneRowGrid = { xs: 24, sm: 24, md: 24, lg: 24, xl: 24, xxl: 24 };\nexport type FormColProps = {\n // 栅格占位格数,不考虑响应式\n span?: number;\n /** 屏幕 < 576px */\n xs?: number;\n /** 屏幕 ≥ 576px */\n sm?: number;\n /** 屏幕 ≥ 768px */\n md?: number;\n /** 屏幕 ≥ 992px */\n lg?: number;\n /** 屏幕 ≥ 1200px */\n xl?: number;\n /** 屏幕 ≥ 1600px */\n xxl?: number;\n /** 强制单独一行 */\n forceAloneRow?: boolean;\n children?: ReactNode | ReactNode[];\n hidden?: boolean;\n};\n\n/**\n * 网格响应式布局,默认值:{ xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 }\n *```\n * 1. 设置 span 栅格占位格数,不考虑响应式\n * 2. grid 自定义响应式网格布局\n * xs: 屏幕 < 576px\n * sm: 屏幕 ≥ 576px\n * md: 屏幕 ≥ 768px\n * lg: 屏幕 ≥ 992px\n * xl: 屏幕 ≥ 1200px\n * xxl: 屏幕 ≥ 1600px\n * ```\n */\nexport const FormCol = (props: FormColProps) => {\n const { forceAloneRow, hidden, ...otherProps } = props;\n const forceGrid = forceAloneRow ? forceAloneRowGrid : otherProps;\n if (hidden) return null;\n return <Col {...forceGrid}>{props.children}</Col>;\n};\n\nFormCol['domTypeName'] = 'FormCol';\n","import { classNames } from '@dimjs/utils';\nimport { Col, Form, Row, RowProps, Space, SpaceProps } from 'antd';\nimport { ReactElement, useMemo } from 'react';\n\nconst fullGrid = { xs: 24, sm: 24, md: 24, lg: 24, xl: 24, xxl: 24 };\nexport type FormOperateColProps = {\n className?: string;\n leftList?: Array<ReactElement | null>;\n rightList?: Array<ReactElement | null>;\n // left、right 对齐方式,优先级最高\n justify?: RowProps['justify'];\n /** 强制单独一行 */\n forceAloneRow?: boolean;\n hidden?: boolean;\n leftSpaceProps?: SpaceProps;\n rightSpaceProps?: SpaceProps;\n};\n\n/**\n * FormOperateCol 布局说明\n * ```\n * 1. 网格数以及位置为动态计算,不支持 xs、sm、md等\n * 2. 如果FormRow只有一行col,则OperateCol会在当前行剩余网格内居左对齐\n * 3. 如果同时设置 leftList、rightList,则此cell会强制独占一行,并左右布局\n * 4. 如果只设置 leftList、rightList其中一个,则会在最后一行剩余网格内居右对齐\n * ```\n */\nexport const FormOperateCol = (props: FormOperateColProps) => {\n const {\n leftList,\n rightList,\n rowColTotal,\n justify,\n forceAloneRow,\n hidden,\n leftSpaceProps,\n rightSpaceProps,\n ...otherProps\n } = props as FormOperateColProps & {\n rowColTotal: number;\n };\n const _leftList = (leftList || []).filter(Boolean);\n const _rightList = (rightList || []).filter(Boolean);\n const hasAll = _leftList.length > 0 && _rightList.length > 0;\n const forceGrid = forceAloneRow || hasAll ? fullGrid : {};\n\n const colJustify = useMemo(() => {\n if (justify) return justify;\n if (hasAll) return 'space-between';\n if (forceAloneRow) return 'end';\n if (rowColTotal === 1) return 'start';\n return 'end';\n }, [forceAloneRow, hasAll, justify, rowColTotal]);\n\n const className = classNames(props.className, 'v-form-col-operate');\n\n if (hidden) return null;\n\n return (\n <Col {...otherProps} {...forceGrid} className={className}>\n <Form.Item>\n <Row justify={colJustify} wrap={false}>\n <Space {...leftSpaceProps}>{_leftList.map((item) => item)}</Space>\n <Space {...rightSpaceProps} style={{ overflowX: 'auto', ...rightSpaceProps?.style }}>\n {_rightList?.map((item) => item)}\n </Space>\n </Row>\n </Form.Item>\n </Col>\n );\n};\n\nFormOperateCol['domTypeName'] = 'FormOperateCol';\n","/**\n * 用于计算 operateCol 所占用网格数\n * ```\n * col网格数据 [8,8,8,12,24,0,8] => [[8,8,8],[12],[24],[0,8]],分组后计算operateCol所在行中剩余网格数\n * ```\n * @returns\n */\nexport const calculateOperateGrid = (gridList: number[], operateColIndex: number) => {\n try {\n const groupList = [] as { index: number; value: number }[][];\n const getGroupItem = function (index) {\n const value = gridList[index];\n return { index, value: value > 24 ? 24 : value };\n };\n let condition = true;\n let groupItemList = [] as { index: number; value: number }[];\n let currentIndex = 0;\n let total = 0;\n while (condition) {\n const currentValue = gridList[currentIndex];\n groupItemList.push(getGroupItem(currentIndex));\n if (currentValue >= 24) {\n groupList.push(groupItemList);\n groupItemList = [];\n total = 0;\n } else if (currentIndex === gridList.length - 1) {\n groupList.push(groupItemList);\n } else {\n total += currentValue;\n if (total >= 24) {\n groupList.push(groupItemList);\n groupItemList = [];\n total = 0;\n }\n }\n currentIndex = currentIndex + 1;\n if (currentIndex >= gridList.length) {\n condition = false;\n }\n }\n const hasOperateList =\n groupList.find((item) => !!item.find((temp) => temp.index === operateColIndex)) || [];\n let hasOperateTotal = 0;\n let hasOperateIndex = 0;\n hasOperateList.forEach((item, index) => {\n if (item.index === operateColIndex) hasOperateIndex = index;\n if (item.index < operateColIndex) {\n hasOperateTotal = hasOperateTotal + item.value;\n }\n });\n if (hasOperateTotal === 24 || hasOperateTotal === 0) {\n hasOperateList[hasOperateIndex].value = 24;\n } else {\n hasOperateList[hasOperateIndex].value = 24 - hasOperateTotal;\n }\n\n return {\n gridList: groupList.reduce((a, b) => a.concat(b)).map((temp) => temp.value),\n gridGroupList: groupList,\n };\n } catch (error) {\n return {\n gridList,\n gridGroupList: [],\n };\n }\n};\n","import { toArray, valueIsEqual } from '@flatbiz/utils';\nimport { Row, RowProps } from 'antd';\nimport { cloneElement, isValidElement, ReactElement, ReactNode, useMemo } from 'react';\nimport { useResponsivePoint } from '../fba-hooks/use-responsive-point';\nimport { calculateOperateGrid } from './utils';\n\nexport type FormRowProps = RowProps & {\n children?: ReactNode | ReactNode[];\n /**\n * defaultGrid = { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 };\n * defaultSmallGrid = { xs: 24, sm: 8, md: 8, lg: 6, xl: 6, xxl: 6 };\n */\n gridSize?: 'default' | 'small';\n};\nconst defaultGrid = { xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 };\nconst defaultSmallGrid = { xs: 24, sm: 12, md: 12, lg: 6, xl: 6, xxl: 6 };\n\n/**\n * FormItem网格响应式布局\n *```\n * 1. 应用场景:Form条件布局\n * 2. 子元素只能是 FormGrid.Col、FormGrid.OperateCol,其他会被忽略\n * 3. 所有子元素中只能存在一个 FormGrid.OperateCol\n */\nexport const FormRow = (props: FormRowProps) => {\n const screenType = useResponsivePoint() || 'md';\n const childrenList = toArray<ReactElement>(props.children).filter((item) => {\n if (!item || !isValidElement(item)) return false;\n return valueIsEqual(item.type['domTypeName'], ['FormOperateCol', 'FormCol']);\n });\n const defaultGridSize = props.gridSize === 'small' ? defaultSmallGrid : defaultGrid;\n const { gridList, gridGroupList } = useMemo(() => {\n const operateColIndex = childrenList.findIndex((item) => {\n return item.type['domTypeName'] === 'FormOperateCol';\n });\n if (screenType === undefined) {\n return { gridList: [] as number[], gridGroupList: [] };\n }\n const _currentGridList = childrenList.map((temp, index) => {\n if (index === operateColIndex) return 0;\n const span = temp.props?.span as number;\n return temp.props?.[screenType] || span || defaultGridSize[screenType];\n });\n if (operateColIndex < 0) {\n return { gridList: _currentGridList, gridGroupList: [] };\n }\n return calculateOperateGrid(_currentGridList, operateColIndex);\n }, [childrenList, defaultGridSize, screenType]);\n\n // if (!screenType) return <Fragment>{props.children}</Fragment>;\n return (\n <Row {...props}>\n {childrenList.map((item, index) => {\n const itemProps = { ...defaultGridSize, ...item.props };\n const newProps = {\n key: index,\n ...itemProps,\n [screenType]: gridList[index] || itemProps[screenType],\n };\n if (item.type['domTypeName'] === 'FormOperateCol') {\n newProps['rowColTotal'] = gridGroupList.length;\n }\n return cloneElement(item, newProps);\n })}\n </Row>\n );\n};\n","import { FormCol } from './form-col';\nimport { FormOperateCol } from './form-operate-col';\nimport { FormRow } from './form-row';\n\nexport const FormGrid = {\n /**\n * FormItem网格响应式布局\n *```\n * 1. 应用场景:Form条件布局\n * 2. 子元素只能是 FormCol、FormOperateCol,其他会被忽略\n * 3. 所有子元素中只能存在一个 FormOperateCol\n */\n Row: FormRow,\n /**\n * 网格响应式布局,默认值:{ xs: 24, sm: 12, md: 12, lg: 8, xl: 8, xxl: 6 }\n *```\n * 1. 设置 span 栅格占位格数,不考虑响应式\n * 2. grid 自定义响应式网格布局\n * xs: 屏幕 < 576px\n * sm: 屏幕 ≥ 576px\n * md: 屏幕 ≥ 768px\n * lg: 屏幕 ≥ 992px\n * xl: 屏幕 ≥ 1200px\n * xxl: 屏幕 ≥ 1600px\n * ```\n */\n Col: FormCol,\n /**\n * FormOperateCol 布局说明\n * ```\n * 1. 网格数以及位置为动态计算,不支持 xs、sm、md等\n * 2. 如果FormRow只有一行col,则OperateCol会在当前行剩余网格内居左对齐\n * 3. 如果同时设置 leftList、rightList,则此cell会强制独占一行,并左右布局\n * 4. 如果只设置 leftList、rightList其中一个,则会在最后一行剩余网格内居右对齐\n * ```\n */\n OperateCol: FormOperateCol,\n};\n"],"names":["forceAloneRowGrid","xs","sm","md","lg","xl","xxl","FormCol","props","forceAloneRow","hidden","otherProps","_objectWithoutPropertiesLoose","_excluded","forceGrid","_jsx","Col","_extends","children","fullGrid","FormOperateCol","_ref","leftList","rightList","rowColTotal","justify","leftSpaceProps","rightSpaceProps","_leftList","filter","Boolean","_rightList","hasAll","length","colJustify","useMemo","className","_classNames","Form","Item","_jsxs","Row","wrap","Space","map","item","style","overflowX","calculateOperateGrid","gridList","operateColIndex","groupList","getGroupItem","index","value","condition","groupItemList","currentIndex","total","currentValue","push","hasOperateList","find","temp","hasOperateTotal","hasOperateIndex","forEach","reduce","a","b","concat","gridGroupList","error","defaultGrid","defaultSmallGrid","FormRow","screenType","useResponsivePoint","childrenList","toArray","isValidElement","valueIsEqual","type","defaultGridSize","gridSize","_useMemo","findIndex","undefined","_currentGridList","_temp$props","_temp$props2","span","_extends2","itemProps","newProps","key","cloneElement","FormGrid","OperateCol"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* eslint-disable */
|
|
2
2
|
import './index.css';
|
|
3
3
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
4
|
-
import{_ as r,a as e}from"../_rollupPluginBabelHelpers-1f4d8910.js";import{composeProps as
|
|
4
|
+
import{_ as r,a as e}from"../_rollupPluginBabelHelpers-1f4d8910.js";import{composeProps as a}from"@flatbiz/utils";import{Form as i}from"antd";import{isValidElement as t,cloneElement as l}from"react";import{jsx as n,jsxs as o}from"react/jsx-runtime";var p=["wrapper","children","inputNormalize"],f=["wrapper","children","before","after","inputNormalize","outputNormalize"];var u=function e(i){var t=i.wrapper,f=i.children,u=i.inputNormalize,m=r(i,p);var s=m.hasOwnProperty("value");if(s&&u){m["value"]=u(m["value"])}var c=l(f,a(f.props,m,true));if(t){return t(c)}if(i.before||i.after){return o("div",{style:{display:"flex",alignItems:"center"},children:[i.before?n("span",{style:{marginRight:10},children:i.before}):null,n("div",{style:{flex:1},children:c}),i.after?n("span",{style:{marginLeft:10},children:i.after}):null]})}return c};var m=function a(l){var o=l.wrapper,p=l.children,m=l.before,s=l.after,c=l.inputNormalize,d=l.outputNormalize,h=r(l,f);return n(i.Item,e({normalize:d},h,{children:t(p)?n(u,{wrapper:o,before:m,after:s,inputNormalize:c,children:p}):p}))};export{m as FormItemWrapper};
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/form-item-wrapper/form-item-wrapper.tsx"],"sourcesContent":["import { composeProps } from '@flatbiz/utils';\nimport { Form, FormItemProps } from 'antd';\nimport { cloneElement, isValidElement, ReactElement, ReactNode } from 'react';\n\nexport interface FormItemWrapperProps extends FormItemProps {\n wrapper?: (children: ReactNode) => ReactElement;\n /** 设置wrapper后,before、after失效 */\n before?: ReactNode;\n /** 设置wrapper后,before、after失效 */\n after?: ReactNode;\n}\n\
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/form-item-wrapper/form-item-wrapper.tsx"],"sourcesContent":["import { composeProps, TAny } from '@flatbiz/utils';\nimport { Form, FormItemProps } from 'antd';\nimport { cloneElement, isValidElement, ReactElement, ReactNode } from 'react';\n\nexport interface FormItemWrapperProps extends FormItemProps {\n wrapper?: (children: ReactNode) => ReactElement;\n /** 设置wrapper后,before、after失效 */\n before?: ReactNode;\n /** 设置wrapper后,before、after失效 */\n after?: ReactNode;\n /** value 序列化处理 */\n inputNormalize?: (value?: TAny) => TAny;\n /**\n * onChange 参数序列化处理\n * 如果设置 normalize 属性,outputNormalize将失效\n */\n outputNormalize?: (value?: TAny) => TAny;\n}\n\ntype FormItemWrapperChildrenProps = Pick<\n FormItemWrapperProps,\n 'wrapper' | 'after' | 'before' | 'inputNormalize'\n> & {\n children: ReactElement;\n};\n\nconst FormItemWrapperChildren = (props: FormItemWrapperChildrenProps) => {\n const { wrapper, children, inputNormalize, ...rest } = props;\n // composeProps 合并执行 Form.Item 传的 onChange 以及组件本身的方法\n const hasValue = rest.hasOwnProperty('value');\n if (hasValue && inputNormalize) {\n rest['value'] = inputNormalize(rest['value']);\n }\n const _children = cloneElement(children, composeProps(children.props, rest, true));\n if (wrapper) {\n return wrapper(_children);\n }\n if (props.before || props.after) {\n return (\n <div style={{ display: 'flex', alignItems: 'center' }}>\n {props.before ? <span style={{ marginRight: 10 }}>{props.before}</span> : null}\n <div style={{ flex: 1 }}>{_children}</div>\n {props.after ? <span style={{ marginLeft: 10 }}>{props.after}</span> : null}\n </div>\n );\n }\n return _children;\n};\n\n/**\n * 对 Form.Item 包装处理\n * ```\n * 1. 为 children 增加 before、after\n * 2. 对输入、输出数据进行序列化处理\n * ```\n */\nexport const FormItemWrapper = (props: FormItemWrapperProps) => {\n const { wrapper, children, before, after, inputNormalize, outputNormalize, ...rest } = props;\n\n return (\n <Form.Item normalize={outputNormalize} {...rest}>\n {isValidElement(children) ? (\n <FormItemWrapperChildren\n wrapper={wrapper}\n before={before}\n after={after}\n inputNormalize={inputNormalize}\n >\n {children}\n </FormItemWrapperChildren>\n ) : (\n children\n )}\n </Form.Item>\n );\n};\n"],"names":["FormItemWrapperChildren","props","wrapper","children","inputNormalize","rest","_objectWithoutPropertiesLoose","_excluded","hasValue","hasOwnProperty","_children","cloneElement","composeProps","before","after","_jsxs","style","display","alignItems","_jsx","marginRight","flex","marginLeft","FormItemWrapper","outputNormalize","_excluded2","Form","Item","_extends","normalize","isValidElement"],"mappings":";oXA0BA,IAAMA,EAA0B,SAA1BA,EAA2BC,GAC/B,IAAQC,EAA+CD,EAA/CC,QAASC,EAAsCF,EAAtCE,SAAUC,EAA4BH,EAA5BG,eAAmBC,EAAIC,EAAKL,EAAKM,GAE5D,IAAMC,EAAWH,EAAKI,eAAe,SACrC,GAAID,GAAYJ,EAAgB,CAC9BC,EAAK,SAAWD,EAAeC,EAAK,SACtC,CACA,IAAMK,EAAYC,EAAaR,EAAUS,EAAaT,EAASF,MAAOI,EAAM,OAC5E,GAAIH,EAAS,CACX,OAAOA,EAAQQ,EACjB,CACA,GAAIT,EAAMY,QAAUZ,EAAMa,MAAO,CAC/B,OACEC,EAAA,MAAA,CAAKC,MAAO,CAAEC,QAAS,OAAQC,WAAY,UAAWf,SACnDF,CAAAA,EAAMY,OAASM,EAAA,OAAA,CAAMH,MAAO,CAAEI,YAAa,IAAKjB,SAAEF,EAAMY,SAAiB,KAC1EM,EAAA,MAAA,CAAKH,MAAO,CAAEK,KAAM,GAAIlB,SAAEO,IACzBT,EAAMa,MAAQK,EAAA,OAAA,CAAMH,MAAO,CAAEM,WAAY,IAAKnB,SAAEF,EAAMa,QAAgB,OAG7E,CACA,OAAOJ,CACT,MASaa,EAAkB,SAAlBA,EAAmBtB,GAC9B,IAAQC,EAA+ED,EAA/EC,QAASC,EAAsEF,EAAtEE,SAAUU,EAA4DZ,EAA5DY,OAAQC,EAAoDb,EAApDa,MAAOV,EAA6CH,EAA7CG,eAAgBoB,EAA6BvB,EAA7BuB,gBAAoBnB,EAAIC,EAAKL,EAAKwB,GAE5F,OACEN,EAACO,EAAKC,KAAIC,EAAA,CAACC,UAAWL,GAAqBnB,EAAI,CAAAF,SAC5C2B,EAAe3B,GACdgB,EAACnB,EAAuB,CACtBE,QAASA,EACTW,OAAQA,EACRC,MAAOA,EACPV,eAAgBA,EAAeD,SAE9BA,IAGHA,IAIR"}
|
|
@@ -9,5 +9,5 @@ import './../input-search-wrapper/index.css';
|
|
|
9
9
|
import './../request-status/index.css';
|
|
10
10
|
import './index.css';
|
|
11
11
|
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
12
|
-
import e from"@ant-design/icons/es/icons/CaretDownFilled";import r from"@ant-design/icons/es/icons/MoreOutlined";import{classNames as t}from"@dimjs/utils/cjs/class-names";import{isArray as a}from"@dimjs/lang/cjs/is-array";import{extend as n}from"@dimjs/utils/cjs/extend";import{hooks as i}from"@wove/react/cjs/hooks";import{_ as l,a as u}from"../_rollupPluginBabelHelpers-1f4d8910.js";import{cloneState as s}from"@dimjs/model";import{treeToArray as o,treeToTiledArray as c,treeLeafParentsArray as d,isUndefinedOrNull as f,treeFilter as v}from"@flatbiz/utils";import{Tree as m,Button as p,message as h}from"antd";import{forwardRef as g,useState as b,useMemo as y,useRef as L,useImperativeHandle as C,Fragment as w,isValidElement as j}from"react";import{a as q}from"../button-operate-260750d4.js";import{D as R}from"../dropdown-menu-wrapper-bd05860d.js";import{fbaHooks as k}from"../fba-hooks/index.js";import{I as N}from"../input-search-wrapper-10d4a9b9.js";import{R as S}from"../request-status-03fc60e2.js";import{Model as T}from"@dimjs/model-react";import{isObject as P}from"@dimjs/lang/cjs/is-object";import{dequal as A}from"dequal";import{jsxs as D,jsx as E}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-6441881c.js";import"@ant-design/icons/es/icons/LoadingOutlined";import"../config-provider-wrapper-dfe8f592.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-1e895394.js";import"../use-responsive-point-21b8c601.js";var I={treeList:[],treeTiledArray:[],queryIsEmpty:false};var x={actions:{setTreeList:function e(r){return function(e){e.treeList=r.treeList||[];e.treeTiledArray=o(e.treeList,r.childrenName);e.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 e(r){return function(e){var t=o(e.treeList,r.childrenName);var n=t.find((function(e){return e[r.valueName]===r.value}));if(n){if(a(r.appendList)&&r.appendList.length>0){n[r.childrenName]=r.appendList}else{n.isLeaf=true}}e.treeTiledArray=o(e.treeList,r.childrenName)}}},state:I};var O={};var V=function e(r){if(!O[r]){O[r]=T(x)}return O[r]};var K=function e(r,t,a){var n=c(t,a);return d(r,n,true,{value:"value",parentValue:"parentValue"})};var F=function e(r,t){var n=f(r)?[]:r;n=a(n)?n:[n];n=n.map((function(e){if(P(e))return e[t.value];return e}));return n};var _=function e(r,t){var a=F(r,t);var n={};a.forEach((function(e){n[e]=true}));return n};var M=function e(r,t,a){if(f(r)&&f(t))return true;var n=_(r,a);var i=_(t,a);var l=A(n,i);return l};var U=["serviceConfig","effectDependencyList","selectorTreeList","value","onChange","modelKey","checkableResponseParentNode","checkable","onSelectorTreeListChange","treeItemDataAdapter","searchValue","showSearch","searchPlaceholder","requestMessageConfig","labelInValueFieldNames","labelInValue","disabledCanUse","menuLayoutType","menuTriggerType"];var z=g((function(o,d){var g=o.serviceConfig,T=o.effectDependencyList,P=o.selectorTreeList,A=o.value,I=o.onChange,x=o.modelKey,O=o.checkableResponseParentNode,_=O===void 0?true:O,z=o.checkable,B=o.onSelectorTreeListChange,W=o.treeItemDataAdapter,Y=o.searchValue,H=o.showSearch,G=o.searchPlaceholder,J=o.requestMessageConfig,Q=o.labelInValueFieldNames,X=o.labelInValue,Z=o.disabledCanUse,$=o.menuLayoutType,ee=o.menuTriggerType,re=l(o,U);var te=o.hasOwnProperty("selectorTreeList");var ae=g||{};var ne=T||[];var ie=b(),le=ie[0],ue=ie[1];var se=V(x).useStore(),oe=se[0],ce=se[1];var de=k.useSafeState(false),fe=de[0],ve=de[1];var me="request-progress-"+o.modelKey;var pe=y((function(){return u({label:"label",value:"value",children:"children"},o.fieldNames)}),[o.fieldNames]);var he=L();var ge=$===undefined?"fold":$;var be=ee===undefined?"click":ee;var ye=z===true;var Le=y((function(){return u({label:"label",value:"value"},Q)}),[Q]);var Ce=b(),we=Ce[0],je=Ce[1];var qe=L(true);var Re=b(0),ke=Re[0],Ne=Re[1];var Se=L();var Te=y((function(){var e=F(A,Le);return e}),[Le,A]);k.useEffectCustom((function(){if(f(A)&&qe.current||oe.treeList.length==0)return;qe.current=false;if(!M(A,Se.current,Le)){console.log("modelKey:"+x+" TreeWrapper key refresh",A,Se.current);Se.current=ye?Te:Te[0];var e=Ie(Te,true);ue(Array.from(new Set(e)));he.current=Te;Ne(Date.now())}}),[A,oe.treeList]);var Pe=function e(r){return r===""||f(r)};var Ae=function e(r){var t=ae.onRequestResultAdapter?ae.onRequestResultAdapter(r):r;return t};k.useEffectCustom((function(){je(Y)}),[Y]);var De=i.useCallbackRef((function(){return new Promise((function(e,r){var t,a,i,l,u;var s=function(){try{return e()}catch(e){return r(e)}};var o=function(e){try{ve(false);void h.error(e.message||"数据查询异常...");return s()}catch(e){return r(e)}};try{if(!ae.onRequest){throw new Error("onRequest 调用接口服务不能为空")}t=ae.requiredParamsKeys;a=n({},ae.params);if(t){i=t.find((function(e){return Pe(a[e])}));if(i){console.warn("TreeWrapper组件:参数:"+t.join("、")+"不能为空");return e()}}var c=function(){try{return s()}catch(e){return o(e)}};var d=function(e){try{window[me]=false;ve(false);void ce.changeRequestStatus("request-error");return c()}catch(e){return o(e)}};try{ve(true);return Promise.resolve(ce.changeRequestStatus("request-progress")).then((function(e){try{window[me]=true;return Promise.resolve(ae.onRequest==null?void 0:ae.onRequest(a)).then((function(e){try{l=e;u=Ae(l);Ee(u||[]);ve(false);window[me]=false;return c()}catch(e){return d(e)}}),d)}catch(e){return d(e)}}),d)}catch(e){d(e)}}catch(e){o(e)}}))}));k.useEffectCustom((function(){if(te)return;if(Boolean(ne.length)){void De();return}var e=V(x).getState();if(e.requestStatus==="request-success"){return}if(!window[me]){void De();return}}),ne);k.useEffectCustom((function(){if(te){Ee(P||[])}}),[P]);var Ee=i.useCallbackRef((function(e){if((e==null?void 0:e.length)===0&&oe.treeList.length===0){void ce.changeRequestStatus("request-success");return}void ce.setTreeList({treeList:e||[],childrenName:pe.children});B==null?void 0:B(e)}));var Ie=i.useCallbackRef((function(e,r){var t=[];e.forEach((function(e){if(!r&&le!=null&&le.includes(e))return;var a=K(e,oe.treeList,pe);t=t.concat(a.map((function(e){return e.value})))}));return t}));i.useUpdateEffect((function(){if(we){var e=c(oe.treeList||[],pe);var r=e.filter((function(e){var r;return(r=e.label)==null?void 0:r.includes(we||"")}));ue((function(e){var t=Ie(r.map((function(e){return e.value}))).concat(e||[]);return Array.from(new Set(t))}))}else{ue([])}}),[we]);C(d,(function(){return{onClearSelectorList:function e(){void ce.resetTreeList()},getTreeDataList:function e(){return oe.treeList}}}));var xe=i.useCallbackRef((function(e){ue(e)}));var Oe=i.useCallbackRef((function(e,r,t){Se.current=e;var n=f(r)?[]:a(r)?r:[r];if(f(e)){I==null?void 0:I(e,r,t);return}if(X){var i=Le.label;var l=Le.value;var u=n.map((function(e){var r;return r={},r[i]=e[pe.label],r[l]=e[pe.value],r}));if(a(e)){I==null?void 0:I(u,n,t)}else{I==null?void 0:I(u[0],n[0],t)}}else{if(a(e)){I==null?void 0:I(e,n,t)}else{I==null?void 0:I(e,n[0],t)}}}));var Ve=i.useCallbackRef((function(e,r){var t=o.checkStrictly?e.checked:e;t=f(e)?[]:e;t=a(t)?t:[t];var n=[];var i=[];var l=[];var u=[];t.forEach((function(e){var r=oe.treeTiledArray.find((function(r){return r[pe.value]===e}));if(!r)return;var t=r==null?void 0:r[pe.children];if(!a(t)||t.length===0){n.push(r);i.push(r[pe.value])}l.push(r);u.push(r[pe.value])}));if(z){ue((function(e){var r=Ie(i).concat(e||[]);return Array.from(new Set(r))}));if(!_&&!o.checkStrictly){Oe(i,n,l)}else{Oe(u,l,l)}}else{if(t[0]){var s=l.find((function(e){return e[pe.value]===t[0]}));Oe(t[0],s,[s])}else{var c=r.node[pe.value];var d=oe.treeTiledArray.find((function(e){return e[pe.value]===c}));Oe(undefined,d,[d])}}}));var Ke=i.useCallbackRef((function(e){return W==null?void 0:W(e)}));var Fe=y((function(){var e=function e(r){return r==null?void 0:r.map((function(r){var n;var i=(Ke==null?void 0:Ke(r))||r;var l=Z?undefined:i.disabled;var s=i[pe.label];var o;if(we){var c=s.indexOf(we);var d=s.substring(0,c);var f=s.slice(c+we.length);o=c>-1?D("span",{className:t({"v-tree-item-disabled":i.disabled}),children:[d,E("span",{className:"site-tree-search-value",children:we}),f]}):null}if(!o){o=E("span",{className:t({"v-tree-item-disabled":i.disabled}),children:s})}var v=i[pe.children];return u({},i,(n={disabled:l},n[pe.label]=o,n._treeItemName=s,n._disabled=i.disabled,n[pe.children]=a(v)&&v.length>0?e(v):undefined,n))}))};var r=s(oe.treeList||[]);if(we){return e(v(s(oe.treeList||[]),(function(e){var r;var t=(r=e[pe.label])==null?void 0:r.toLowerCase();return t.indexOf(we.toLowerCase())>=0})))}return e(r)}),[oe.treeList,Ke,Z,pe.label,pe.children,we]);var _e=i.useCallbackRef((function(e){return new Promise((function(r,t){return new Promise((function(a,n){var i,l,u,s;if(e[pe.children]){r();return a()}var c=function(){try{return a()}catch(e){return n(e)}};var d=function(e){try{void h.error(e.message||"数据加载异常...");t();return c()}catch(e){return n(e)}};try{return Promise.resolve((i=o.loadDataServiceConfig)==null?void 0:i.onRequest==null?void 0:i.onRequest((l=o.loadDataServiceConfig)==null?void 0:l.getParams==null?void 0:l.getParams(e))).then((function(t){try{u=t;s=ae.onRequestResultAdapter?ae.onRequestResultAdapter(u):u;void ce.treeListAppendChildren({value:e[pe.value],appendList:s,childrenName:pe.children,valueName:pe.value}).then((function(e){Ee(e.treeList);r()}));return c()}catch(e){return d(e)}}),d)}catch(e){d(e)}}))}))}));var Me=i.useCallbackRef((function(e){var r=e==null?void 0:e[pe.children];var t=o.loadDataFlag;var a=t?!e.isLeaf:false;var n=r&&r.length>0||a;return!n}));var Ue=i.useCallbackRef((function(e){var a,n;var i=e._treeItemName||e[pe.label];if(ge==="fold"){var l;var s=[];if((l=o.menuOptions)!=null&&l.fold){var c,d,f;s=((c=o.menuOptions)==null?void 0:(d=c[ge])==null?void 0:d.call(c,u({},e,(f={},f[pe.label]=i,f))))||[]}else{var v;s=(o.getMenuOptions==null?void 0:o.getMenuOptions(u({},e,(v={},v[pe.label]=i,v))))||[]}return D(w,{children:[E("span",{className:"tree-item-title",children:e==null?void 0:e[pe.label]}),s.length>0&&E(R,{menuList:s,children:E(r,{})})]})}var m=(a=o.menuOptions)==null?void 0:a.tile==null?void 0:a.tile(u({},e,(n={},n[pe.label]=i,n)));return D(w,{children:[E("span",{className:"tree-item-title",children:e==null?void 0:e[pe.label]}),m?E(q,u({},m,{gap:5,className:t("tree-item-title-operate",m.className)})):null]})}));var ze=i.useDebounceCallback((function(e){je(e);o.onSearchValueChange==null?void 0:o.onSearchValueChange(e)}),300);var Be=i.useCallbackRef((function(e){ze(e.target.value)}));var We=i.useCallbackRef((function(e){if(!o.icon)return null;if(j(o.icon))return o.icon;var r=Me(e.data);return o.icon(u({},e,{isParent:!r,isLeaf:r}))}));var Ye=y((function(){return{title:pe.label,key:pe.value,children:pe.children}}),[pe]);var He=Fe.length>0&&oe.requestStatus!=="request-error";var Ge=u({showLine:{showLeafIcon:false},titleRender:Ue,blockNode:true,switcherIcon:E(e,{})},re,{fieldNames:Ye,expandedKeys:le,treeData:Fe,onExpand:xe,loadData:o.loadDataFlag?_e:undefined,style:u({width:"100%"},re.style),icon:We});var Je={onCheck:Ve,checkable:z,defaultCheckedKeys:he.current};var Qe={onSelect:Ve,multiple:false,defaultSelectedKeys:he.current};var Xe=z?Je:Qe;var Ze=t("v-tree-wrapper","v-tree-wrapper-menu-"+be);var $e=oe.treeList.length>0&&!He&&we;return D("div",{className:Ze,children:[!!H&&D("div",{className:"v-tree-wrapper-search-area",children:[E(N,{className:"v-tree-wrapper-search",placeholder:G,onChange:Be,value:Y,allowClear:true}),!!o.searchExtraElement&&E("span",{className:"v-tree-wrapper-search-extra",children:o.searchExtraElement})]}),He?E(m,u({},Xe,Ge,{className:"v-tree-wrapper-tree"}),ke):E(S,{status:oe.requestStatus,loading:fe,messageConfig:u({"request-success":$e?"搜索结果为空":"暂无数据"},J),errorButton:E(p,{type:"primary",onClick:De,children:"重新获取数据"})})]})}));z.defaultProps={disabledCanUse:true};export{z as TreeWrapper};
|
|
12
|
+
import e from"@ant-design/icons/es/icons/CaretDownFilled";import r from"@ant-design/icons/es/icons/MoreOutlined";import{classNames as t}from"@dimjs/utils/cjs/class-names";import{isArray as a}from"@dimjs/lang/cjs/is-array";import{extend as n}from"@dimjs/utils/cjs/extend";import{hooks as i}from"@wove/react/cjs/hooks";import{_ as l,a as u}from"../_rollupPluginBabelHelpers-1f4d8910.js";import{cloneState as s}from"@dimjs/model";import{treeToArray as o,treeToTiledArray as c,treeLeafParentsArray as d,isUndefinedOrNull as f,toArray as v,treeFilter as m}from"@flatbiz/utils";import{Tree as p,Button as h,message as g}from"antd";import{forwardRef as b,useState as y,useMemo as L,useRef as C,useImperativeHandle as w,Fragment as j,isValidElement as R}from"react";import{a as q}from"../button-operate-260750d4.js";import{D as k}from"../dropdown-menu-wrapper-bd05860d.js";import{fbaHooks as N}from"../fba-hooks/index.js";import{I as S}from"../input-search-wrapper-10d4a9b9.js";import{R as T}from"../request-status-03fc60e2.js";import{Model as P}from"@dimjs/model-react";import{isObject as E}from"@dimjs/lang/cjs/is-object";import{dequal as A}from"dequal";import{jsxs as D,jsx as x}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-6441881c.js";import"@ant-design/icons/es/icons/LoadingOutlined";import"../config-provider-wrapper-dfe8f592.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-1e895394.js";import"../use-responsive-point-21b8c601.js";var I={treeList:[],treeTiledArray:[],queryIsEmpty:false};var O={actions:{setTreeList:function e(r){return function(e){e.treeList=r.treeList||[];e.treeTiledArray=o(e.treeList,r.childrenName);e.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 e(r){return function(e){var t=o(e.treeList,r.childrenName);var n=t.find((function(e){return e[r.valueName]===r.value}));if(n){if(a(r.appendList)&&r.appendList.length>0){n[r.childrenName]=r.appendList}else{n.isLeaf=true}}e.treeTiledArray=o(e.treeList,r.childrenName)}}},state:I};var V={};var K=function e(r){if(!V[r]){V[r]=P(O)}return V[r]};var F=function e(r,t,a){var n=c(t,a);return d(r,n,true,{value:"value",parentValue:"parentValue"})};var _=function e(r,t){var n=f(r)?[]:r;n=a(n)?n:[n];n=n.map((function(e){if(E(e))return e[t.value];return e}));return n};var M=function e(r,t){var a=_(r,t);var n={};a.forEach((function(e){n[e]=true}));return n};var U=function e(r,t,a){if(f(r)&&f(t))return true;var n=M(r,a);var i=M(t,a);var l=A(n,i);return l};var z=["serviceConfig","effectDependencyList","selectorTreeList","value","onChange","modelKey","checkableResponseParentNode","checkable","onSelectorTreeListChange","treeItemDataAdapter","searchValue","showSearch","searchPlaceholder","requestMessageConfig","labelInValueFieldNames","labelInValue","disabledCanUse","menuLayoutType","menuTriggerType","initRootExpand"];var B=b((function(o,d){var b=o.serviceConfig,P=o.effectDependencyList,E=o.selectorTreeList,A=o.value,I=o.onChange,O=o.modelKey,V=o.checkableResponseParentNode,M=V===void 0?true:V,B=o.checkable,W=o.onSelectorTreeListChange,Y=o.treeItemDataAdapter,H=o.searchValue,G=o.showSearch,J=o.searchPlaceholder,Q=o.requestMessageConfig,X=o.labelInValueFieldNames,Z=o.labelInValue,$=o.disabledCanUse,ee=o.menuLayoutType,re=o.menuTriggerType,te=o.initRootExpand,ae=l(o,z);var ne=o.hasOwnProperty("selectorTreeList");var ie=b||{};var le=P||[];var ue=y(),se=ue[0],oe=ue[1];var ce=K(O).useStore(),de=ce[0],fe=ce[1];var ve=N.useSafeState(false),me=ve[0],pe=ve[1];var he="request-progress-"+o.modelKey;var ge=L((function(){return u({label:"label",value:"value",children:"children"},o.fieldNames)}),[o.fieldNames]);var be=C();var ye=ee===undefined?"fold":ee;var Le=re===undefined?"click":re;var Ce=B===true;var we=L((function(){return u({label:"label",value:"value"},X)}),[X]);var je=y(),Re=je[0],qe=je[1];var ke=C(true);var Ne=y(0),Se=Ne[0],Te=Ne[1];var Pe=C();var Ee=L((function(){var e=_(A,we);return e}),[we,A]);N.useEffectCustom((function(){if(f(A)&&ke.current||de.treeList.length==0)return;ke.current=false;if(!U(A,Pe.current,we)){console.log("modelKey:"+O+" TreeWrapper key refresh",A,Pe.current);Pe.current=Ce?Ee:Ee[0];var e=Oe(Ee,true);oe(Array.from(new Set(e)));be.current=Ee;Te(Date.now())}}),[A,de.treeList]);var Ae=function e(r){return r===""||f(r)};var De=function e(r){var t=ie.onRequestResultAdapter?ie.onRequestResultAdapter(r):r;return t};N.useEffectCustom((function(){qe(H)}),[H]);var xe=i.useCallbackRef((function(){return new Promise((function(e,r){var t,a,i,l,u;var s=function(){try{return e()}catch(e){return r(e)}};var o=function(e){try{pe(false);void g.error(e.message||"数据查询异常...");return s()}catch(e){return r(e)}};try{if(!ie.onRequest){throw new Error("onRequest 调用接口服务不能为空")}t=ie.requiredParamsKeys;a=n({},ie.params);if(t){i=t.find((function(e){return Ae(a[e])}));if(i){console.warn("TreeWrapper组件:参数:"+t.join("、")+"不能为空");return e()}}var c=function(){try{return s()}catch(e){return o(e)}};var d=function(e){try{window[he]=false;pe(false);void fe.changeRequestStatus("request-error");return c()}catch(e){return o(e)}};try{pe(true);return Promise.resolve(fe.changeRequestStatus("request-progress")).then((function(e){try{window[he]=true;return Promise.resolve(ie.onRequest==null?void 0:ie.onRequest(a)).then((function(e){try{l=e;u=De(l);Ie(u||[]);pe(false);if(te&&v(u).length){oe([u==null?void 0:u[0][ge.value]])}window[he]=false;return c()}catch(e){return d(e)}}),d)}catch(e){return d(e)}}),d)}catch(e){d(e)}}catch(e){o(e)}}))}));N.useEffectCustom((function(){if(ne)return;if(Boolean(le.length)){void xe();return}var e=K(O).getState();if(e.requestStatus==="request-success"){return}if(!window[he]){void xe();return}}),le);N.useEffectCustom((function(){if(ne){Ie(E||[])}}),[E]);var Ie=i.useCallbackRef((function(e){if((e==null?void 0:e.length)===0&&de.treeList.length===0){void fe.changeRequestStatus("request-success");return}void fe.setTreeList({treeList:e||[],childrenName:ge.children});W==null?void 0:W(e)}));var Oe=i.useCallbackRef((function(e,r){var t=[];e.forEach((function(e){if(!r&&se!=null&&se.includes(e))return;var a=F(e,de.treeList,ge);t=t.concat(a.map((function(e){return e.value})))}));return t}));i.useUpdateEffect((function(){if(Re){var e=c(de.treeList||[],ge);var r=e.filter((function(e){var r;return(r=e.label)==null?void 0:r.includes(Re||"")}));oe((function(e){var t=Oe(r.map((function(e){return e.value}))).concat(e||[]);return Array.from(new Set(t))}))}else{oe([])}}),[Re]);w(d,(function(){return{onClearSelectorList:function e(){void fe.resetTreeList()},getTreeDataList:function e(){return de.treeList}}}));var Ve=i.useCallbackRef((function(e){oe(e)}));var Ke=i.useCallbackRef((function(e,r,t){Pe.current=e;var n=f(r)?[]:a(r)?r:[r];if(f(e)){I==null?void 0:I(e,r,t);return}if(Z){var i=we.label;var l=we.value;var u=n.map((function(e){var r;return r={},r[i]=e[ge.label],r[l]=e[ge.value],r}));if(a(e)){I==null?void 0:I(u,n,t)}else{I==null?void 0:I(u[0],n[0],t)}}else{if(a(e)){I==null?void 0:I(e,n,t)}else{I==null?void 0:I(e,n[0],t)}}}));var Fe=i.useCallbackRef((function(e,r){var t=o.checkStrictly?e.checked:e;t=f(e)?[]:e;t=a(t)?t:[t];var n=[];var i=[];var l=[];var u=[];t.forEach((function(e){var r=de.treeTiledArray.find((function(r){return r[ge.value]===e}));if(!r)return;var t=r==null?void 0:r[ge.children];if(!a(t)||t.length===0){n.push(r);i.push(r[ge.value])}l.push(r);u.push(r[ge.value])}));if(B){oe((function(e){var r=Oe(i).concat(e||[]);return Array.from(new Set(r))}));if(!M&&!o.checkStrictly){Ke(i,n,l)}else{Ke(u,l,l)}}else{if(t[0]){var s=l.find((function(e){return e[ge.value]===t[0]}));Ke(t[0],s,[s])}else{var c=r.node[ge.value];var d=de.treeTiledArray.find((function(e){return e[ge.value]===c}));Ke(undefined,d,[d])}}}));var _e=i.useCallbackRef((function(e){return Y==null?void 0:Y(e)}));var Me=L((function(){var e=function e(r){return r==null?void 0:r.map((function(r){var n;var i=(_e==null?void 0:_e(r))||r;var l=$?undefined:i.disabled;var s=i[ge.label];var o;if(Re){var c=s.indexOf(Re);var d=s.substring(0,c);var f=s.slice(c+Re.length);o=c>-1?D("span",{className:t({"v-tree-item-disabled":i.disabled}),children:[d,x("span",{className:"site-tree-search-value",children:Re}),f]}):null}if(!o){o=x("span",{className:t({"v-tree-item-disabled":i.disabled}),children:s})}var v=i[ge.children];return u({},i,(n={disabled:l},n[ge.label]=o,n._treeItemName=s,n._disabled=i.disabled,n[ge.children]=a(v)&&v.length>0?e(v):undefined,n))}))};var r=s(de.treeList||[]);if(Re){return e(m(s(de.treeList||[]),(function(e){var r;var t=(r=e[ge.label])==null?void 0:r.toLowerCase();return t.indexOf(Re.toLowerCase())>=0})))}return e(r)}),[de.treeList,_e,$,ge.label,ge.children,Re]);var Ue=i.useCallbackRef((function(e){return new Promise((function(r,t){return new Promise((function(a,n){var i,l,u,s;if(e[ge.children]){r();return a()}var c=function(){try{return a()}catch(e){return n(e)}};var d=function(e){try{void g.error(e.message||"数据加载异常...");t();return c()}catch(e){return n(e)}};try{return Promise.resolve((i=o.loadDataServiceConfig)==null?void 0:i.onRequest==null?void 0:i.onRequest((l=o.loadDataServiceConfig)==null?void 0:l.getParams==null?void 0:l.getParams(e))).then((function(t){try{u=t;s=ie.onRequestResultAdapter?ie.onRequestResultAdapter(u):u;void fe.treeListAppendChildren({value:e[ge.value],appendList:s,childrenName:ge.children,valueName:ge.value}).then((function(e){Ie(e.treeList);r()}));return c()}catch(e){return d(e)}}),d)}catch(e){d(e)}}))}))}));var ze=i.useCallbackRef((function(e){var r=e==null?void 0:e[ge.children];var t=o.loadDataFlag;var a=t?!e.isLeaf:false;var n=r&&r.length>0||a;return!n}));var Be=i.useCallbackRef((function(e){var a,n;var i=e._treeItemName||e[ge.label];if(ye==="fold"){var l;var s=[];if((l=o.menuOptions)!=null&&l.fold){var c,d,f;s=((c=o.menuOptions)==null?void 0:(d=c[ye])==null?void 0:d.call(c,u({},e,(f={},f[ge.label]=i,f))))||[]}else{var v;s=(o.getMenuOptions==null?void 0:o.getMenuOptions(u({},e,(v={},v[ge.label]=i,v))))||[]}return D(j,{children:[x("span",{className:"tree-item-title",children:e==null?void 0:e[ge.label]}),s.length>0&&x(k,{menuList:s,children:x(r,{})})]})}var m=(a=o.menuOptions)==null?void 0:a.tile==null?void 0:a.tile(u({},e,(n={},n[ge.label]=i,n)));return D(j,{children:[x("span",{className:"tree-item-title",children:e==null?void 0:e[ge.label]}),m?x(q,u({},m,{gap:5,className:t("tree-item-title-operate",m.className)})):null]})}));var We=i.useDebounceCallback((function(e){qe(e);o.onSearchValueChange==null?void 0:o.onSearchValueChange(e)}),300);var Ye=i.useCallbackRef((function(e){We(e.target.value)}));var He=i.useCallbackRef((function(e){if(!o.icon)return null;if(R(o.icon))return o.icon;var r=ze(e.data);return o.icon(u({},e,{isParent:!r,isLeaf:r}))}));var Ge=L((function(){return{title:ge.label,key:ge.value,children:ge.children}}),[ge]);var Je=Me.length>0&&de.requestStatus!=="request-error";var Qe=u({showLine:{showLeafIcon:false},titleRender:Be,blockNode:true,switcherIcon:x(e,{})},ae,{fieldNames:Ge,expandedKeys:se,treeData:Me,onExpand:Ve,loadData:o.loadDataFlag?Ue:undefined,style:u({width:"100%"},ae.style),icon:He});var Xe={onCheck:Fe,checkable:B,defaultCheckedKeys:be.current};var Ze={onSelect:Fe,multiple:false,defaultSelectedKeys:be.current};var $e=B?Xe:Ze;var er=t("v-tree-wrapper","v-tree-wrapper-menu-"+Le);var rr=de.treeList.length>0&&!Je&ℜreturn D("div",{className:er,children:[!!G&&D("div",{className:"v-tree-wrapper-search-area",children:[x(S,{className:"v-tree-wrapper-search",placeholder:J,onChange:Ye,value:H,allowClear:true}),!!o.searchExtraElement&&x("span",{className:"v-tree-wrapper-search-extra",children:o.searchExtraElement})]}),Je?x(p,u({},$e,Qe,{className:"v-tree-wrapper-tree"}),Se):x(T,{status:de.requestStatus,loading:me,messageConfig:u({"request-success":rr?"搜索结果为空":"暂无数据"},Q),errorButton:x(h,{type:"primary",onClick:xe,children:"重新获取数据"})})]})}));B.defaultProps={disabledCanUse:true};export{B as TreeWrapper};
|
|
13
13
|
//# 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/utils.ts","@flatbiz/antd/src/tree-wrapper/tree-wrapper.tsx"],"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, 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 { isUndefinedOrNull, LabelValueItem } from '@flatbiz/utils';\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: any,\n value2: any,\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","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, TAny, TPlainObject, treeToTiledArray } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Button, message, Tree, TreeProps } from 'antd';\nimport {\n DependencyList,\n forwardRef,\n Fragment,\n isValidElement,\n ReactElement,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\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';\n\nimport { treeFilter } from '@flatbiz/utils';\nimport { treeWrapperModel } from './model';\nimport './style.less';\nimport { getExpandedKeys, getVauleList, treeWrapperValueDeepEqual } 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 | 'expandedKeys'\n | 'treeData'\n | 'onExpand'\n | 'selectedKeys'\n | 'checkedKeys'\n | 'onCheck'\n | 'onSelect'\n | 'defaultCheckedKeys'\n | 'defaultSelectedKeys'\n | 'fieldNames'\n | 'multiple'\n | 'loadData'\n | 'icon'\n> & {\n modelKey: string;\n /**\n * useEffect依赖项数组,用于重新发起获取接口数据\n */\n effectDependencyList?: DependencyList;\n /**\n * 请求服务需求的数据,当设置`selectorTreeList`后无效果\n */\n serviceConfig?: TreeServiceConfig;\n loadDataServiceConfig?: TreeLoadDataServiceConfig;\n /**\n * 当设置selectorTreeList后,serviceConfig将失效\n * ```\n * 1. 不支持异步数据,异步使用serviceConfig方式\n * ```\n */\n selectorTreeList?: TPlainObject[];\n /**\n * 通过服务获取数据后回调,当设置`selectorList`后无效果\n */\n onSelectorTreeListChange?: (dataList: TPlainObject[]) => void;\n onChange?: (\n selectedKey?: TreeWrapperValue,\n operateNodeData?: TPlainObject[] | TPlainObject,\n operateAllNodeDataList?: TPlainObject[],\n ) => void;\n fieldNames?: { label?: string; value?: string; children?: string };\n /**\n * 搜索关键字,打开tree折叠过滤关键字\n */\n searchValue?: string;\n /**\n * checkable模式下,onChange是否返回父节点,默认值true\n * 1. checkStrictly = true,模式下失效\n */\n checkableResponseParentNode?: boolean;\n loadDataFlag?: boolean;\n /** 菜单结构类型 tile/平铺 fold/折叠;默认:fold */\n menuLayoutType?: 'tile' | 'fold';\n /** 菜单触发类型,默认:click */\n menuTriggerType?: 'click' | 'hover';\n /**\n * 获取菜单类别\n * @param dataItem\n * @deprecated 已过期,请使用 menuOptions\n * @returns\n * ```\n * menuLayoutType = tile 无效\n * ```\n */\n getMenuOptions?: (dataItem: TPlainObject) => DropdownMenuItem[] | ButtonOperateItem[];\n\n /**\n * 根据 menuLayoutType 类型赋值\n */\n menuOptions?: {\n tile?: (dataItem: TPlainObject) => ButtonOperateProps;\n fold?: (dataItem: TPlainObject) => DropdownMenuItem[];\n };\n showSearch?: boolean;\n onSearchValueChange?: (searchValue?: string) => void;\n searchPlaceholder?: string;\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};\n\nexport type TreeWrapperRefApi = {\n onClearSelectorList: () => void;\n getTreeDataList: () => TreeProps['treeData'];\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 * ```\n */\nexport const TreeWrapper = forwardRef<TreeWrapperRefApi, TreeWrapperProps>((props, ref) => {\n const {\n serviceConfig,\n effectDependencyList,\n selectorTreeList,\n value,\n onChange,\n modelKey,\n checkableResponseParentNode = true,\n checkable,\n onSelectorTreeListChange,\n treeItemDataAdapter,\n searchValue,\n showSearch,\n searchPlaceholder,\n requestMessageConfig,\n labelInValueFieldNames,\n labelInValue,\n disabledCanUse,\n menuLayoutType,\n menuTriggerType,\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 // 必须是数组格式\n const defaultValueRef = useRef<Array<string | number>>();\n const menuLayoutTypeNew = menuLayoutType === undefined ? 'fold' : menuLayoutType;\n const menuTriggerTypeNew = menuTriggerType === undefined ? 'click' : menuTriggerType;\n\n const isMultiple = checkable === 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 isFirstUseValueRef = useRef(true);\n const [refreshKey, setRefreshKey] = useState(0);\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 ((isUndefinedOrNull(value) && isFirstUseValueRef.current) || state.treeList.length == 0) return;\n isFirstUseValueRef.current = false;\n if (!treeWrapperValueDeepEqual(value, innerOperateValueRef.current, labelInValueFieldNamesMerge)) {\n console.log(`modelKey:${modelKey} TreeWrapper key refresh`, value, innerOperateValueRef.current);\n innerOperateValueRef.current = isMultiple ? valueList : valueList[0];\n // 重新计算 expandedKeys\n const expandedKeys = getTreeExpandedKeys(valueList, true);\n setTreeExpandedKeys(Array.from(new Set(expandedKeys)));\n defaultValueRef.current = valueList;\n setRefreshKey(Date.now());\n }\n }, [value, state.treeList]);\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 const respData = serviceResponseHandle(_respData) as TreeProps['treeData'];\n onChangeSelectorList(respData || []);\n setLoading(false);\n window[requestPreKey] = false;\n } catch (error) {\n window[requestPreKey] = false;\n setLoading(false);\n void actions.changeRequestStatus('request-error');\n }\n } catch (error) {\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 return;\n }\n // 判断相同的modelKey是否已经在请求数据中,避免重复请求\n if (!window[requestPreKey]) {\n void startDataSourceRequest();\n return;\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 = hooks.useCallbackRef((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 };\n });\n\n const onExpand = hooks.useCallbackRef((expandedKeys) => {\n setTreeExpandedKeys(expandedKeys as string[]);\n });\n\n const onRespChange = hooks.useCallbackRef((selectedKey, selectInfo?, selectAllList?) => {\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);\n } else {\n onChange?.(labelInValueList[0], selectList[0], selectAllList);\n }\n } else {\n if (isArray(selectedKey)) {\n onChange?.(selectedKey, selectList, selectAllList);\n } else {\n onChange?.(selectedKey, selectList[0], selectAllList);\n }\n }\n });\n\n const onTreeChangeHandle = hooks.useCallbackRef((checkedData, operateInfo) => {\n let checkedValueList = props.checkStrictly ? checkedData.checked : checkedData;\n checkedValueList = isUndefinedOrNull(checkedData) ? [] : checkedData;\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);\n } else {\n onRespChange(selectedAllValueList, selectedAllList, selectedAllList);\n }\n } else {\n if (checkedValueList[0]) {\n const currentNode = selectedAllList.find((item) => item[fieldNames.value] === checkedValueList[0]);\n onRespChange(checkedValueList[0], currentNode, [currentNode]);\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]);\n }\n }\n });\n\n const treeItemDataAdapterHandle = hooks.useCallbackRef((dataItem) => {\n return treeItemDataAdapter?.(dataItem);\n });\n\n const treeData = useMemo(() => {\n const loop = (data: TAny[]): TAny[] =>\n data?.map((item) => {\n const adapterItem = treeItemDataAdapterHandle?.(item) || item;\n const disabled = disabledCanUse ? undefined : adapterItem.disabled;\n const strTitle = adapterItem[fieldNames.label] as string;\n let titleDom;\n if (treeSearchValue) {\n const index = strTitle.indexOf(treeSearchValue);\n const beforeStr = strTitle.substring(0, index);\n const afterStr = strTitle.slice(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\">{treeSearchValue}</span>\n {afterStr}\n </span>\n ) : null;\n }\n if (!titleDom) {\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,\n _treeItemName: strTitle,\n _disabled: adapterItem.disabled,\n [fieldNames.children]: isArray(children) && children.length > 0 ? loop(children) : undefined,\n };\n });\n const list = cloneState(state.treeList || []);\n if (treeSearchValue) {\n return loop(\n treeFilter(cloneState(state.treeList || []), (node) => {\n const value = node[fieldNames.label]?.toLowerCase();\n return value.indexOf(treeSearchValue.toLowerCase()) >= 0;\n }),\n );\n }\n return loop(list);\n }, [\n state.treeList,\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) {\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\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\">{nodeData?.[fieldNames.label]}</span>\n {menuOptions.length > 0 && (\n <DropdownMenuWrapper menuList={menuOptions}>\n <MoreOutlined />\n </DropdownMenuWrapper>\n )}\n </Fragment>\n );\n }\n const menuOptions = props.menuOptions?.tile?.({\n ...nodeData,\n [fieldNames.label]: stringLabel,\n });\n return (\n <Fragment>\n <span className=\"tree-item-title\">{nodeData?.[fieldNames.label]}</span>\n {menuOptions ? (\n <ButtonOperate\n {...menuOptions}\n gap={5}\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\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 ...otherProps,\n fieldNames: treeFieldNames,\n expandedKeys: treeExpandedKeys,\n treeData,\n onExpand,\n loadData: props.loadDataFlag ? loadData : undefined,\n style: { width: '100%', ...otherProps.style },\n icon: iconHandle,\n };\n\n const checkedProps = {\n onCheck: onTreeChangeHandle,\n checkable,\n // 必须是数组格式\n defaultCheckedKeys: defaultValueRef.current,\n };\n\n const selectedProps = {\n onSelect: onTreeChangeHandle,\n multiple: false,\n // 必须是数组格式\n defaultSelectedKeys: defaultValueRef.current,\n };\n const sceneProps = checkable ? checkedProps : selectedProps;\n const cName = classNames('v-tree-wrapper', `v-tree-wrapper-menu-${menuTriggerTypeNew}`);\n const isSearchEmpty = state.treeList.length > 0 && !showTree && treeSearchValue;\n return (\n <div className={cName}>\n {/* {showTree && <Spin spinning={loading} className=\"v-tree-wrapper-loading\"></Spin>} */}\n {!!showSearch && (\n <div className=\"v-tree-wrapper-search-area\">\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 {showTree ? (\n <Tree key={refreshKey} {...sceneProps} {...commonProps} className=\"v-tree-wrapper-tree\"></Tree>\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"],"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","getExpandedKeys","fieldNames","tiledArray","treeToTiledArray","treeLeafParentsArray","parentValue","getVauleList","data","labelInValueFieldNames","tempList","isUndefinedOrNull","map","_isObject","array2map","list","forEach","treeWrapperValueDeepEqual","value1","value2","object1","object2","diff","dequal","TreeWrapper","forwardRef","props","ref","serviceConfig","effectDependencyList","selectorTreeList","onChange","modelKey","_props$checkableRespo","checkableResponseParentNode","checkable","onSelectorTreeListChange","treeItemDataAdapter","searchValue","showSearch","searchPlaceholder","requestMessageConfig","labelInValue","disabledCanUse","menuLayoutType","menuTriggerType","otherProps","_objectWithoutPropertiesLoose","_excluded","hasSelectorTreeList","hasOwnProperty","newServiceConfig","newEffectDependencyList","_useState","useState","treeExpandedKeys","setTreeExpandedKeys","_treeWrapperModel$use","useStore","_fbaHooks$useSafeStat","fbaHooks","useSafeState","loading","setLoading","requestPreKey","useMemo","_extends","label","children","defaultValueRef","useRef","menuLayoutTypeNew","undefined","menuTriggerTypeNew","isMultiple","labelInValueFieldNamesMerge","_useState2","treeSearchValue","setTreeSearchValue","isFirstUseValueRef","_useState3","refreshKey","setRefreshKey","innerOperateValueRef","valueList","useEffectCustom","current","console","log","expandedKeys","getTreeExpandedKeys","Array","from","Set","Date","now","valueIsEmpty","serviceResponseHandle","respData","respDataList","onRequestResultAdapter","startDataSourceRequest","_hooks","useCallbackRef","Promise","$return","$error","requiredParamsKeys","_params","isEmpty","_respData","_respData2","$Try_1_Post","$boundEx","$Try_1_Catch","error","message","onRequest","Error","_extend","warn","join","$Try_2_Post","$Try_2_Catch","window","resolve","then","$await_4","$await_5","onChangeSelectorList","Boolean","allState","getState","dataList","refresh","newTreeExpandedKeys","includes","targetList","concat","useUpdateEffect","filter","_item$label","prev","mergeList","useImperativeHandle","onClearSelectorList","getTreeDataList","onExpand","onRespChange","selectedKey","selectInfo","selectAllList","selectList","lvLabel","lvValue","labelInValueList","_ref","onTreeChangeHandle","checkedData","operateInfo","checkedValueList","checkStrictly","checked","selectedLeafList","selectedLeafValueList","selectedAllList","selectedAllValueList","temp","push","currentNode","nodeValue","node","treeItemDataAdapterHandle","dataItem","treeData","loop","_extends2","adapterItem","disabled","strTitle","titleDom","index","indexOf","beforeStr","substring","afterStr","slice","_jsxs","className","_classNames","_jsx","_treeItemName","_disabled","cloneState","treeFilter","_node$fieldNames$labe","toLowerCase","loadData","reject","_props$loadDataServic","_props$loadDataServic2","_respData3","$Try_3_Post","$Try_3_Catch","loadDataServiceConfig","getParams","$await_6","isLeafNode","nodeData","loadDataFlag","loadHasChildren","hasChildren","titleRender","_props$menuOptions3","_extends5","stringLabel","_props$menuOptions","menuOptions","fold","_props$menuOptions2","_props$menuOptions2$m","_extends3","call","_extends4","getMenuOptions","Fragment","DropdownMenuWrapper","menuList","_MoreOutlined","tile","ButtonOperate","gap","onChangeDebounce","useDebounceCallback","onSearchValueChange","onSearchChange","e","iconHandle","icon","isValidElement","isLeafFlag","isParent","treeFieldNames","title","showTree","commonProps","showLine","showLeafIcon","blockNode","switcherIcon","_CaretDownFilled","style","width","checkedProps","onCheck","defaultCheckedKeys","selectedProps","onSelect","multiple","defaultSelectedKeys","sceneProps","cName","isSearchEmpty","InputSearchWrapper","placeholder","allowClear","searchExtraElement","Tree","RequestStatus","status","messageConfig","errorButton","Button","type","onClick","defaultProps"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/tree-wrapper/model.ts","@flatbiz/antd/src/tree-wrapper/utils.ts","@flatbiz/antd/src/tree-wrapper/tree-wrapper.tsx"],"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, 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 { isUndefinedOrNull, LabelValueItem } from '@flatbiz/utils';\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: any,\n value2: any,\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","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, TAny, toArray, TPlainObject, treeToTiledArray } from '@flatbiz/utils';\nimport { hooks } from '@wove/react';\nimport { Button, message, Tree, TreeProps } from 'antd';\nimport {\n DependencyList,\n forwardRef,\n Fragment,\n isValidElement,\n ReactElement,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { treeFilter } from '@flatbiz/utils';\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 { treeWrapperModel } from './model';\nimport './style.less';\nimport { getExpandedKeys, getVauleList, treeWrapperValueDeepEqual } 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 | 'expandedKeys'\n | 'treeData'\n | 'onExpand'\n | 'selectedKeys'\n | 'checkedKeys'\n | 'onCheck'\n | 'onSelect'\n | 'defaultCheckedKeys'\n | 'defaultSelectedKeys'\n | 'fieldNames'\n | 'multiple'\n | 'loadData'\n | 'icon'\n> & {\n modelKey: string;\n /**\n * useEffect依赖项数组,用于重新发起获取接口数据\n */\n effectDependencyList?: DependencyList;\n /**\n * 请求服务需求的数据,当设置`selectorTreeList`后无效果\n */\n serviceConfig?: TreeServiceConfig;\n loadDataServiceConfig?: TreeLoadDataServiceConfig;\n /**\n * 当设置selectorTreeList后,serviceConfig将失效\n * ```\n * 1. 不支持异步数据,异步使用serviceConfig方式\n * ```\n */\n selectorTreeList?: TPlainObject[];\n /**\n * 通过服务获取数据后回调,当设置`selectorList`后无效果\n */\n onSelectorTreeListChange?: (dataList: TPlainObject[]) => void;\n onChange?: (\n selectedKey?: TreeWrapperValue,\n operateNodeData?: TPlainObject[] | TPlainObject,\n operateAllNodeDataList?: TPlainObject[],\n ) => void;\n fieldNames?: { label?: string; value?: string; children?: string };\n /**\n * 搜索关键字,打开tree折叠过滤关键字\n */\n searchValue?: string;\n /**\n * checkable模式下,onChange是否返回父节点,默认值true\n * 1. checkStrictly = true,模式下失效\n */\n checkableResponseParentNode?: boolean;\n loadDataFlag?: boolean;\n /** 菜单结构类型 tile/平铺 fold/折叠;默认:fold */\n menuLayoutType?: 'tile' | 'fold';\n /** 菜单触发类型,默认:click */\n menuTriggerType?: 'click' | 'hover';\n /**\n * 获取菜单类别\n * @param dataItem\n * @deprecated 已过期,请使用 menuOptions\n * @returns\n * ```\n * menuLayoutType = tile 无效\n * ```\n */\n getMenuOptions?: (dataItem: TPlainObject) => DropdownMenuItem[] | ButtonOperateItem[];\n\n /**\n * 根据 menuLayoutType 类型赋值\n */\n menuOptions?: {\n tile?: (dataItem: TPlainObject) => ButtonOperateProps;\n fold?: (dataItem: TPlainObject) => DropdownMenuItem[];\n };\n showSearch?: boolean;\n onSearchValueChange?: (searchValue?: string) => void;\n searchPlaceholder?: string;\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};\n\nexport type TreeWrapperRefApi = {\n onClearSelectorList: () => void;\n getTreeDataList: () => TreeProps['treeData'];\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 * ```\n */\nexport const TreeWrapper = forwardRef<TreeWrapperRefApi, TreeWrapperProps>((props, ref) => {\n const {\n serviceConfig,\n effectDependencyList,\n selectorTreeList,\n value,\n onChange,\n modelKey,\n checkableResponseParentNode = true,\n checkable,\n onSelectorTreeListChange,\n treeItemDataAdapter,\n searchValue,\n showSearch,\n searchPlaceholder,\n requestMessageConfig,\n labelInValueFieldNames,\n labelInValue,\n disabledCanUse,\n menuLayoutType,\n menuTriggerType,\n initRootExpand,\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 // 必须是数组格式\n const defaultValueRef = useRef<Array<string | number>>();\n const menuLayoutTypeNew = menuLayoutType === undefined ? 'fold' : menuLayoutType;\n const menuTriggerTypeNew = menuTriggerType === undefined ? 'click' : menuTriggerType;\n\n const isMultiple = checkable === 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 isFirstUseValueRef = useRef(true);\n const [refreshKey, setRefreshKey] = useState(0);\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 ((isUndefinedOrNull(value) && isFirstUseValueRef.current) || state.treeList.length == 0) return;\n isFirstUseValueRef.current = false;\n if (!treeWrapperValueDeepEqual(value, innerOperateValueRef.current, labelInValueFieldNamesMerge)) {\n console.log(`modelKey:${modelKey} TreeWrapper key refresh`, value, innerOperateValueRef.current);\n innerOperateValueRef.current = isMultiple ? valueList : valueList[0];\n // 重新计算 expandedKeys\n const expandedKeys = getTreeExpandedKeys(valueList, true);\n setTreeExpandedKeys(Array.from(new Set(expandedKeys)));\n defaultValueRef.current = valueList;\n setRefreshKey(Date.now());\n }\n }, [value, state.treeList]);\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 const respData = serviceResponseHandle(_respData) as TreeProps['treeData'];\n onChangeSelectorList(respData || []);\n setLoading(false);\n if (initRootExpand && toArray(respData).length) {\n setTreeExpandedKeys([respData?.[0][fieldNames.value]]);\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) {\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 return;\n }\n // 判断相同的modelKey是否已经在请求数据中,避免重复请求\n if (!window[requestPreKey]) {\n void startDataSourceRequest();\n return;\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 = hooks.useCallbackRef((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 };\n });\n\n const onExpand = hooks.useCallbackRef((expandedKeys) => {\n setTreeExpandedKeys(expandedKeys as string[]);\n });\n\n const onRespChange = hooks.useCallbackRef((selectedKey, selectInfo?, selectAllList?) => {\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);\n } else {\n onChange?.(labelInValueList[0], selectList[0], selectAllList);\n }\n } else {\n if (isArray(selectedKey)) {\n onChange?.(selectedKey, selectList, selectAllList);\n } else {\n onChange?.(selectedKey, selectList[0], selectAllList);\n }\n }\n });\n\n const onTreeChangeHandle = hooks.useCallbackRef((checkedData, operateInfo) => {\n let checkedValueList = props.checkStrictly ? checkedData.checked : checkedData;\n checkedValueList = isUndefinedOrNull(checkedData) ? [] : checkedData;\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);\n } else {\n onRespChange(selectedAllValueList, selectedAllList, selectedAllList);\n }\n } else {\n if (checkedValueList[0]) {\n const currentNode = selectedAllList.find((item) => item[fieldNames.value] === checkedValueList[0]);\n onRespChange(checkedValueList[0], currentNode, [currentNode]);\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]);\n }\n }\n });\n\n const treeItemDataAdapterHandle = hooks.useCallbackRef((dataItem) => {\n return treeItemDataAdapter?.(dataItem);\n });\n\n const treeData = useMemo(() => {\n const loop = (data: TAny[]): TAny[] =>\n data?.map((item) => {\n const adapterItem = treeItemDataAdapterHandle?.(item) || item;\n const disabled = disabledCanUse ? undefined : adapterItem.disabled;\n const strTitle = adapterItem[fieldNames.label] as string;\n let titleDom;\n if (treeSearchValue) {\n const index = strTitle.indexOf(treeSearchValue);\n const beforeStr = strTitle.substring(0, index);\n const afterStr = strTitle.slice(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\">{treeSearchValue}</span>\n {afterStr}\n </span>\n ) : null;\n }\n if (!titleDom) {\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,\n _treeItemName: strTitle,\n _disabled: adapterItem.disabled,\n [fieldNames.children]: isArray(children) && children.length > 0 ? loop(children) : undefined,\n };\n });\n const list = cloneState(state.treeList || []);\n if (treeSearchValue) {\n return loop(\n treeFilter(cloneState(state.treeList || []), (node) => {\n const value = node[fieldNames.label]?.toLowerCase();\n return value.indexOf(treeSearchValue.toLowerCase()) >= 0;\n }),\n );\n }\n return loop(list);\n }, [\n state.treeList,\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) {\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\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\">{nodeData?.[fieldNames.label]}</span>\n {menuOptions.length > 0 && (\n <DropdownMenuWrapper menuList={menuOptions}>\n <MoreOutlined />\n </DropdownMenuWrapper>\n )}\n </Fragment>\n );\n }\n const menuOptions = props.menuOptions?.tile?.({\n ...nodeData,\n [fieldNames.label]: stringLabel,\n });\n return (\n <Fragment>\n <span className=\"tree-item-title\">{nodeData?.[fieldNames.label]}</span>\n {menuOptions ? (\n <ButtonOperate\n {...menuOptions}\n gap={5}\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\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 ...otherProps,\n fieldNames: treeFieldNames,\n expandedKeys: treeExpandedKeys,\n treeData,\n onExpand,\n loadData: props.loadDataFlag ? loadData : undefined,\n style: { width: '100%', ...otherProps.style },\n icon: iconHandle,\n };\n\n const checkedProps = {\n onCheck: onTreeChangeHandle,\n checkable,\n // 必须是数组格式\n defaultCheckedKeys: defaultValueRef.current,\n };\n\n const selectedProps = {\n onSelect: onTreeChangeHandle,\n multiple: false,\n // 必须是数组格式\n defaultSelectedKeys: defaultValueRef.current,\n };\n const sceneProps = checkable ? checkedProps : selectedProps;\n const cName = classNames('v-tree-wrapper', `v-tree-wrapper-menu-${menuTriggerTypeNew}`);\n const isSearchEmpty = state.treeList.length > 0 && !showTree && treeSearchValue;\n return (\n <div className={cName}>\n {/* {showTree && <Spin spinning={loading} className=\"v-tree-wrapper-loading\"></Spin>} */}\n {!!showSearch && (\n <div className=\"v-tree-wrapper-search-area\">\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 {showTree ? (\n <Tree key={refreshKey} {...sceneProps} {...commonProps} className=\"v-tree-wrapper-tree\"></Tree>\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"],"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","getExpandedKeys","fieldNames","tiledArray","treeToTiledArray","treeLeafParentsArray","parentValue","getVauleList","data","labelInValueFieldNames","tempList","isUndefinedOrNull","map","_isObject","array2map","list","forEach","treeWrapperValueDeepEqual","value1","value2","object1","object2","diff","dequal","TreeWrapper","forwardRef","props","ref","serviceConfig","effectDependencyList","selectorTreeList","onChange","modelKey","_props$checkableRespo","checkableResponseParentNode","checkable","onSelectorTreeListChange","treeItemDataAdapter","searchValue","showSearch","searchPlaceholder","requestMessageConfig","labelInValue","disabledCanUse","menuLayoutType","menuTriggerType","initRootExpand","otherProps","_objectWithoutPropertiesLoose","_excluded","hasSelectorTreeList","hasOwnProperty","newServiceConfig","newEffectDependencyList","_useState","useState","treeExpandedKeys","setTreeExpandedKeys","_treeWrapperModel$use","useStore","_fbaHooks$useSafeStat","fbaHooks","useSafeState","loading","setLoading","requestPreKey","useMemo","_extends","label","children","defaultValueRef","useRef","menuLayoutTypeNew","undefined","menuTriggerTypeNew","isMultiple","labelInValueFieldNamesMerge","_useState2","treeSearchValue","setTreeSearchValue","isFirstUseValueRef","_useState3","refreshKey","setRefreshKey","innerOperateValueRef","valueList","useEffectCustom","current","console","log","expandedKeys","getTreeExpandedKeys","Array","from","Set","Date","now","valueIsEmpty","serviceResponseHandle","respData","respDataList","onRequestResultAdapter","startDataSourceRequest","_hooks","useCallbackRef","Promise","$return","$error","requiredParamsKeys","_params","isEmpty","_respData","_respData2","$Try_1_Post","$boundEx","$Try_1_Catch","error","message","onRequest","Error","_extend","warn","join","$Try_2_Post","$Try_2_Catch","window","resolve","then","$await_4","$await_5","onChangeSelectorList","toArray","Boolean","allState","getState","dataList","refresh","newTreeExpandedKeys","includes","targetList","concat","useUpdateEffect","filter","_item$label","prev","mergeList","useImperativeHandle","onClearSelectorList","getTreeDataList","onExpand","onRespChange","selectedKey","selectInfo","selectAllList","selectList","lvLabel","lvValue","labelInValueList","_ref","onTreeChangeHandle","checkedData","operateInfo","checkedValueList","checkStrictly","checked","selectedLeafList","selectedLeafValueList","selectedAllList","selectedAllValueList","temp","push","currentNode","nodeValue","node","treeItemDataAdapterHandle","dataItem","treeData","loop","_extends2","adapterItem","disabled","strTitle","titleDom","index","indexOf","beforeStr","substring","afterStr","slice","_jsxs","className","_classNames","_jsx","_treeItemName","_disabled","cloneState","treeFilter","_node$fieldNames$labe","toLowerCase","loadData","reject","_props$loadDataServic","_props$loadDataServic2","_respData3","$Try_3_Post","$Try_3_Catch","loadDataServiceConfig","getParams","$await_6","isLeafNode","nodeData","loadDataFlag","loadHasChildren","hasChildren","titleRender","_props$menuOptions3","_extends5","stringLabel","_props$menuOptions","menuOptions","fold","_props$menuOptions2","_props$menuOptions2$m","_extends3","call","_extends4","getMenuOptions","Fragment","DropdownMenuWrapper","menuList","_MoreOutlined","tile","ButtonOperate","gap","onChangeDebounce","useDebounceCallback","onSearchValueChange","onSearchChange","e","iconHandle","icon","isValidElement","isLeafFlag","isParent","treeFieldNames","title","showTree","commonProps","showLine","showLeafIcon","blockNode","switcherIcon","_CaretDownFilled","style","width","checkedProps","onCheck","defaultCheckedKeys","selectedProps","onSelect","multiple","defaultSelectedKeys","sceneProps","cName","isSearchEmpty","InputSearchWrapper","placeholder","allowClear","searchExtraElement","Tree","RequestStatus","status","messageConfig","errorButton","Button","type","onClick","defaultProps"],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -1300,46 +1300,26 @@ export type FormItemHiddenProps = {
|
|
|
1300
1300
|
name: string;
|
|
1301
1301
|
};
|
|
1302
1302
|
export declare const FormItemHidden: (props: FormItemHiddenProps) => JSX.Element;
|
|
1303
|
-
export type FormItemNormalizeProps = {
|
|
1304
|
-
value?: TAny;
|
|
1305
|
-
onChange?: (value?: TAny, ...other: any[]) => void;
|
|
1306
|
-
/** value 序列化处理 */
|
|
1307
|
-
inputNormalize?: (value?: TAny) => TAny;
|
|
1308
|
-
/** onChange 参数序列化处理 */
|
|
1309
|
-
outputNormalize?: (value?: TAny) => TAny;
|
|
1310
|
-
children: ReactElement | null;
|
|
1311
|
-
};
|
|
1312
|
-
/**
|
|
1313
|
-
* 解决 Form.Item 输入 与 输出 不同问题
|
|
1314
|
-
* @param props
|
|
1315
|
-
* ```
|
|
1316
|
-
* 例如:
|
|
1317
|
-
* <Form.Item name="abc">
|
|
1318
|
-
* <Select 多选 />
|
|
1319
|
-
* </Form.Item>
|
|
1320
|
-
* 1. 接口给的数据是'v1,v2',但Form.Item内部需要的是['v1', 'v2']
|
|
1321
|
-
* 2. Form.Item 内部返回是数据是['v1', 'v2'],但接口需要的是'v1,v2'
|
|
1322
|
-
*
|
|
1323
|
-
* 使用方法
|
|
1324
|
-
* <Form.Item name="abc">
|
|
1325
|
-
* <FormItemNormalize inputNormalize={} outputNormalize={}>
|
|
1326
|
-
* <Select 多选 />
|
|
1327
|
-
* </FormItemNormalize>
|
|
1328
|
-
* </Form.Item>
|
|
1329
|
-
* ```
|
|
1330
|
-
*/
|
|
1331
|
-
export declare const FormItemNormalize: (props: FormItemNormalizeProps) => JSX.Element | null;
|
|
1332
1303
|
export interface FormItemWrapperProps extends FormItemProps {
|
|
1333
1304
|
wrapper?: (children: ReactNode) => ReactElement;
|
|
1334
1305
|
/** 设置wrapper后,before、after失效 */
|
|
1335
1306
|
before?: ReactNode;
|
|
1336
1307
|
/** 设置wrapper后,before、after失效 */
|
|
1337
1308
|
after?: ReactNode;
|
|
1309
|
+
/** value 序列化处理 */
|
|
1310
|
+
inputNormalize?: (value?: TAny) => TAny;
|
|
1311
|
+
/**
|
|
1312
|
+
* onChange 参数序列化处理
|
|
1313
|
+
* 如果设置 normalize 属性,outputNormalize将失效
|
|
1314
|
+
*/
|
|
1315
|
+
outputNormalize?: (value?: TAny) => TAny;
|
|
1338
1316
|
}
|
|
1339
1317
|
/**
|
|
1340
|
-
* 对 Form.Item
|
|
1341
|
-
*
|
|
1342
|
-
*
|
|
1318
|
+
* 对 Form.Item 包装处理
|
|
1319
|
+
* ```
|
|
1320
|
+
* 1. 为 children 增加 before、after
|
|
1321
|
+
* 2. 对输入、输出数据进行序列化处理
|
|
1322
|
+
* ```
|
|
1343
1323
|
*/
|
|
1344
1324
|
export declare const FormItemWrapper: (props: FormItemWrapperProps) => JSX.Element;
|
|
1345
1325
|
export type GapProps = {
|
|
@@ -2450,6 +2430,8 @@ export type TreeWrapperProps = Omit<TreeProps, "expandedKeys" | "treeData" | "on
|
|
|
2450
2430
|
treeItemDataAdapter?: (dataItem: TPlainObject) => TPlainObject;
|
|
2451
2431
|
/** 搜索位置额外元素 */
|
|
2452
2432
|
searchExtraElement?: ReactElement;
|
|
2433
|
+
/** 有唯一跟节点时,初始化是否展开,默认值:false */
|
|
2434
|
+
initRootExpand?: boolean;
|
|
2453
2435
|
};
|
|
2454
2436
|
export type TreeWrapperRefApi = {
|
|
2455
2437
|
onClearSelectorList: () => void;
|
|
@@ -2569,6 +2551,8 @@ export declare const TreeWrapper: import("react").ForwardRefExoticComponent<Omit
|
|
|
2569
2551
|
treeItemDataAdapter?: ((dataItem: TPlainObject) => TPlainObject) | undefined;
|
|
2570
2552
|
/** 搜索位置额外元素 */
|
|
2571
2553
|
searchExtraElement?: ReactElement<any, string | import("react").JSXElementConstructor<any>> | undefined;
|
|
2554
|
+
/** 有唯一跟节点时,初始化是否展开,默认值:false */
|
|
2555
|
+
initRootExpand?: boolean | undefined;
|
|
2572
2556
|
} & import("react").RefAttributes<TreeWrapperRefApi>>;
|
|
2573
2557
|
|
|
2574
2558
|
export {};
|
package/package.json
CHANGED
|
File without changes
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/* eslint-disable */
|
|
2
|
-
import './index.css';
|
|
3
|
-
/*! @flatjs/forge MIT @flatbiz/antd */
|
|
4
|
-
import{a as r}from"../_rollupPluginBabelHelpers-1f4d8910.js";import{useMemo as e}from"react";import{jsx as n}from"react/jsx-runtime";var l=function l(o){var a=o.value,i=o.onChange,t=o.inputNormalize,u=o.outputNormalize;var p=e((function(){if(t){return t(a)}return a}),[t,a]);var v=function r(e){for(var n=arguments.length,l=new Array(n>1?n-1:0),o=1;o<n;o++){l[o-1]=arguments[o]}if(u){i==null?void 0:i(u(e),l)}else{i==null?void 0:i(e,l)}};if(!o.children)return null;var f=o.children.type;var m=o.children.props;return n(f,r({},m,{value:p,onChange:v}))};export{l as FormItemNormalize};
|
|
5
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["@flatbiz/antd/src/form-item-normalize/form-item-normalize.tsx"],"sourcesContent":["import { TAny } from '@flatbiz/utils';\nimport { ReactElement, useMemo } from 'react';\n\ntype FormItemNormalizeProps = {\n value?: TAny;\n onChange?: (value?: TAny, ...other) => void;\n /** value 序列化处理 */\n inputNormalize?: (value?: TAny) => TAny;\n /** onChange 参数序列化处理 */\n outputNormalize?: (value?: TAny) => TAny;\n children: ReactElement | null;\n};\n/**\n * 解决 Form.Item 输入 与 输出 不同问题\n * @param props\n * ```\n * 例如:\n * <Form.Item name=\"abc\">\n * <Select 多选 />\n * </Form.Item>\n * 1. 接口给的数据是'v1,v2',但Form.Item内部需要的是['v1', 'v2']\n * 2. Form.Item 内部返回是数据是['v1', 'v2'],但接口需要的是'v1,v2'\n *\n * 使用方法\n * <Form.Item name=\"abc\">\n * <FormItemNormalize inputNormalize={} outputNormalize={}>\n * <Select 多选 />\n * </FormItemNormalize>\n * </Form.Item>\n * ```\n */\nexport const FormItemNormalize = (props: FormItemNormalizeProps) => {\n const { value, onChange, inputNormalize, outputNormalize } = props;\n const valueNew = useMemo(() => {\n if (inputNormalize) {\n return inputNormalize(value);\n }\n return value;\n }, [inputNormalize, value]);\n\n const onChangeNew = (data, ...otherProps) => {\n if (outputNormalize) {\n onChange?.(outputNormalize(data), otherProps);\n } else {\n onChange?.(data, otherProps);\n }\n };\n\n if (!props.children) return null;\n\n const Node = props.children.type;\n const nodeProps = props.children.props;\n return <Node {...nodeProps} value={valueNew} onChange={onChangeNew} />;\n};\n"],"names":["FormItemNormalize","props","value","onChange","inputNormalize","outputNormalize","valueNew","useMemo","onChangeNew","data","_len","arguments","length","otherProps","Array","_key","children","Node","type","nodeProps","_jsx","_extends"],"mappings":";yIA+BaA,EAAoB,SAApBA,EAAqBC,GAChC,IAAQC,EAAqDD,EAArDC,MAAOC,EAA8CF,EAA9CE,SAAUC,EAAoCH,EAApCG,eAAgBC,EAAoBJ,EAApBI,gBACzC,IAAMC,EAAWC,GAAQ,WACvB,GAAIH,EAAgB,CAClB,OAAOA,EAAeF,EACxB,CACA,OAAOA,CACT,GAAG,CAACE,EAAgBF,IAEpB,IAAMM,EAAc,SAAdA,EAAeC,GAAwB,IAAAC,IAAAA,EAAAC,UAAAC,OAAfC,MAAUC,MAAAJ,EAAAA,EAAAA,OAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAA,CAAVF,EAAUE,EAAAJ,GAAAA,UAAAI,EAAA,CACtC,GAAIV,EAAiB,CACnBF,GAAQ,UAAA,EAARA,EAAWE,EAAgBI,GAAOI,EACpC,KAAO,CACLV,eAAAA,EAAWM,EAAMI,EACnB,GAGF,IAAKZ,EAAMe,SAAU,OAAO,KAE5B,IAAMC,EAAOhB,EAAMe,SAASE,KAC5B,IAAMC,EAAYlB,EAAMe,SAASf,MACjC,OAAOmB,EAACH,EAAII,KAAKF,EAAS,CAAEjB,MAAOI,EAAUH,SAAUK,IACzD"}
|