@hzab/edit-table 0.1.11 → 0.1.12

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/CHANGELOG.md CHANGED
@@ -1,13 +1,23 @@
1
1
  # @hzab/edit-table
2
2
 
3
+ ## 0.1.12
4
+
5
+ ### Patch Changes
6
+
7
+ -
8
+
3
9
  ## 0.1.11
4
10
 
5
11
  ### Patch Changes
6
12
 
7
- - feat:支持checkbox 传入配置禁用
13
+ - feat(edit-table):支持读取formily json只读配置
8
14
 
9
15
 
16
+ ## 0.1.11
17
+
18
+ ### Patch Changes
10
19
 
20
+ feat:支持读取formily json只读配置
11
21
 
12
22
  ## 0.1.10
13
23
 
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- let e=require("react"),t=require("antd"),n=require("@silevis/reactgrid"),r=require("@hzab/form-render"),i=require("@ant-design/icons"),a=require("react/jsx-runtime"),o=require("react/compiler-runtime"),s=require("@hzab/utils/src/formily/field");require("@silevis/reactgrid/styles.css");var c={"DatePicker.MonthPicker":t.DatePicker.MonthPicker,"DatePicker.QuarterPicker":t.DatePicker.QuarterPicker,"DatePicker.RangePicker":t.DatePicker.RangePicker,"DatePicker.TimePicker":t.DatePicker.TimePicker,"DatePicker.WeekPicker":t.DatePicker.WeekPicker,"DatePicker.YearPicker":t.DatePicker.YearPicker,"Input.Password":t.Input.Password,"Input.Search":t.Input.Search,"Input.TextArea":t.Input.TextArea,"TimePicker.RangePicker":t.TimePicker.RangePicker},l=[`DatePicker`,`DatePicker.MonthPicker`,`DatePicker.QuarterPicker`,`DatePicker.RangePicker`,`DatePicker.TimePicker`,`DatePicker.WeekPicker`,`DatePicker.YearPicker`,`TimePicker.RangePicker`],u=(r,o={})=>{class s{getCompatibleCell(e){let t;try{t=(0,n.getCellProperty)(e,`values`,`object`)}catch(e){t=[]}let r=e.selectedValue?parseFloat(e.selectedValue):NaN,i=!0;try{i=(0,n.getCellProperty)(e,`isDisabled`,`boolean`)}catch(e){i=!1}let a=e.selectedValue,o=a||``;return{...e,selectedValue:a,text:o,value:r,values:t,isDisabled:i}}update(e,t){let n=e.values.some(e=>e.value==t.text)?t.text:(t==null?void 0:t.text)||void 0;return this.getCompatibleCell({...e,selectedValue:n})}getClassName(e,t){return``}handleCompositionEnd(e,t){return{cell:{...e},enableEditMode:!1}}render(s,c,u){var d;let[f,p]=(0,e.useState)(!1),[m,h]=(0,e.useState)(!1),g=(s==null?void 0:s.columnId)+(s==null?void 0:s.rowId),[_,v]=(0,e.useState)(s==null?void 0:s.text),[y,b]=(0,e.useState)(!1),x=(0,e.useRef)(s==null?void 0:s.text),S=(0,e.useRef)();(0,e.useEffect)(()=>{v(s==null?void 0:s.text),x.current=s==null?void 0:s.text},[s==null?void 0:s.text]),(0,e.useEffect)(()=>{function e(e){window.gridEditId!=g&&p(!1)}return document.addEventListener(`click`,e),()=>{document.removeEventListener(`click`,e)}},[]);let C=e=>{var t;let n=!1,r=!1;for(let t of(s==null?void 0:s.validatorList)||[]){var i;t!=null&&(i=t.pattern)!=null&&i.test(e)&&(n=!0);break}r=!n&&Array.isArray(s==null?void 0:s.validatorList)&&(s==null||(t=s.validatorList)==null?void 0:t.length)>0,b(r)};(0,e.useEffect)(()=>{if(!m)return;let e=setTimeout(()=>{let e=document.querySelector(`.ant-picker-dropdown`);if(!e)return;let t=e=>{e.stopPropagation()};return e.addEventListener(`pointerdown`,t,!0),()=>{e.removeEventListener(`pointerdown`,t,!0)}},0);return()=>clearTimeout(e)},[m]);let w=()=>{let e=x.current;u(this.getCompatibleCell({...s,text:e,selectedValue:e}),!0)},T=(0,e.useMemo)(()=>l!=null&&l.includes(s==null?void 0:s.type)?{open:m,onOpenChange:e=>{S.current&&clearTimeout(S.current),S.current=setTimeout(()=>{h(e)},80)}}:{},[s]);return(0,e.useEffect)(()=>{!f&&s.type==`Upload`&&window.uploadEdit&&window.uploadEdit==g&&(window.uploadEdit=null,w())},[f,_]),(0,a.jsxs)(`div`,{className:`base-hoc ${f?`base-hoc-edit`:``}`,onDoubleClick:e=>{s!=null&&s.nonEditable||(s.type===`Upload`&&(window.uploadEdit=g),p(!0))},children:[(0,a.jsx)(r,{...o,onPointerDown:e=>e.stopPropagation(),componentProps:{style:{width:`100%`,display:`flex`,alignItems:`center`},value:_,options:s.values,onChange:e=>{var t,n;let r=(t=e==null||(n=e.target)==null?void 0:n.value)==null?e:t;v(r),x.current=r,C(r)},onBlur:e=>{w(),l!=null&&l.includes(s==null?void 0:s.type)||p(!1)},onPointerDown:e=>{e.stopPropagation()},onKeyDown:e=>{((0,n.isAlphaNumericKey)(e.keyCode)||(0,n.isNavigationKey)(e.keyCode))&&e.stopPropagation()},...T,...(s==null?void 0:s.getField)&&(s==null?void 0:s.getField()[`x-component-props`])||{}},pattern:f?``:`readPretty`,cell:s}),y&&(0,a.jsx)(t.Popover,{content:(d=s==null?void 0:s.validatorMessage)==null?`该字段不合法`:d,children:(0,a.jsx)(i.InfoCircleOutlined,{className:`validator-icon`})})]})}}return new s},d=t=>{let{pattern:n,cell:r,componentProps:i,Com:o,cellRender:c}=t,l=(0,e.useMemo)(()=>{var e;if(r!=null&&r.getField)return(0,s.getVal)({...(r==null?void 0:r.getField)&&(r==null?void 0:r.getField()),enum:(r==null||(e=r.getField())==null?void 0:e.enum)||(r==null?void 0:r.values)},{[(r==null?void 0:r.getField)&&(r==null?void 0:r.getField().name)]:r.text})},[r]);return c&&c(t)?(0,a.jsx)(c,{...t}):(0,a.jsx)(`div`,{className:`base-hoc`,children:n==`readPretty`?(0,a.jsx)(`div`,{children:l}):(0,a.jsx)(o,{className:`rg-input`,ref:e=>{e&&e.focus()},...i})})},f=e=>{let n=(0,o.c)(5),r=e==null?void 0:e.componentProps,i;n[0]===r?i=n[1]:(i={...r,type:`number`},n[0]=r,n[1]=i);let s;return n[2]!==e||n[3]!==i?(s=(0,a.jsx)(d,{...e,componentProps:i,Com:t.Input}),n[2]=e,n[3]=i,n[4]=s):s=n[4],s},p=t=>{let n=(0,o.c)(21),{cell:r}=t,{setExpandKeys:s,expandKeys:c,rowKey:l,setNewDataSource:u,record:d}=r,[f,p]=(0,e.useState)(!1),m;n[0]!==d||n[1]!==l||n[2]!==u?(m=e=>{u(t=>{var n;let r=[...t],i=d==null||(n=d.children)==null?void 0:n.map(e=>e==null?void 0:e[l]);if(e){let e=t==null?void 0:t.findIndex(e=>(e==null?void 0:e[l])==(d==null?void 0:d[l])),n=(t==null?void 0:t.filter(e=>i==null?void 0:i.includes(e==null?void 0:e[l])))||[];return(n==null?void 0:n.length)==0&&r.splice(e+1,0,...(d==null?void 0:d.children)||[]),[...r]}return t==null?void 0:t.filter(e=>!(i!=null&&i.includes(e==null?void 0:e[l])))})},n[0]=d,n[1]=l,n[2]=u,n[3]=m):m=n[3];let h=m,g;n[4]!==c||n[5]!==h||n[6]!==d||n[7]!==l?(g=()=>{c!=null&&c.includes(d==null?void 0:d[l])&&(p(!0),h(!0))},n[4]=c,n[5]=h,n[6]=d,n[7]=l,n[8]=g):g=n[8];let _=r==null?void 0:r.record,v;n[9]===_?v=n[10]:(v=[_],n[9]=_,n[10]=v),(0,e.useEffect)(g,v);let y;n[11]!==f||n[12]!==h||n[13]!==d||n[14]!==l||n[15]!==s?(y=()=>{s(e=>e!=null&&e.includes(d==null?void 0:d[l])?e==null?void 0:e.filter(e=>e!=(d==null?void 0:d[l])):[...e,d==null?void 0:d[l]]),p(!f),h(!f)},n[11]=f,n[12]=h,n[13]=d,n[14]=l,n[15]=s,n[16]=y):y=n[16];let b=y,x;return n[17]!==f||n[18]!==b||n[19]!==(d==null?void 0:d.children)?(x=(0,a.jsx)(`div`,{className:`expandList-template`,children:d!=null&&d.children?(0,a.jsx)(a.Fragment,{children:f?(0,a.jsx)(i.MinusCircleOutlined,{className:`expandList-template-icon`,onClick:b}):(0,a.jsx)(i.PlusCircleOutlined,{className:`expandList-template-icon`,onClick:b})}):(0,a.jsx)(`div`,{style:{width:14}})}),n[17]=f,n[18]=b,n[19]=d==null?void 0:d.children,n[20]=x):x=n[20],x};function m(e){return typeof e==`object`&&!!e}var h=e=>{var t;return typeof(e==null?void 0:e.title)==`function`?m(e==null?void 0:e.title())?e==null||(t=e.title())==null?void 0:t.props.children:String(e==null?void 0:e.title())||``:String(e==null?void 0:e.title)||``};function g(e,t=40){let n=e=>e.reduce((e,t)=>{var r;return(r=t.children)!=null&&r.length?[...e,...n(t.children)]:[...e,t]},[]),r=(e,t=1)=>e.reduce((e,n)=>{var i;return(i=n.children)!=null&&i.length?Math.max(e,r(n.children,t+1)):Math.max(e,t)},t),i=n(e),a=r(e),o=i.length,s=(e,t=0)=>e.map(e=>{var r;if(!(((r=e.children)==null?void 0:r.length)>0))return{...e,rowspan:a-t,colspan:1,_depth:t,_isLeaf:!0};let i=n(e.children).length;return{...e,rowspan:1,colspan:i,_depth:t,_isLeaf:!1,children:s(e.children,t+1)}}),c=s(e,0),l=Array.from({length:a},(e,n)=>({rowId:`header-${n}`,height:t,cells:[]})),u=e=>{var t;return(t=[`rowSelection`,`ExpandListTemplate`])!=null&&t.includes(e==null?void 0:e.type)?e==null?void 0:e.type:m(typeof(e==null?void 0:e.title)==`function`?e==null?void 0:e.title():null)?`${e==null?void 0:e.dataIndex}`:`header`},d=(e,t=0)=>{e.forEach(e=>{if(e._isLeaf){let n={...e,type:u(e),text:h(e),dataIndex:e.dataIndex,width:e.width,rowspan:e.rowspan,style:e!=null&&e.style?e==null?void 0:e.style:{background:`rgba(128, 128, 128, 0.1)`,display:`flex`,justifyContent:`center`}};e.sorter&&(n.sorter=e.sorter),e.key&&(n.key=e.key),l[t].cells.push(n)}else l[t].cells.push({...e,type:u(e),text:h(e),colspan:e.colspan,style:e!=null&&e.style?e==null?void 0:e.style:{background:`rgba(128, 128, 128, 0.1)`,display:`flex`,justifyContent:`center`}}),e.children&&d(e.children,t+1)})};d(c,0),l.forEach((e,t)=>{let n=[],r=0,s=0;for(;r<o;){let o=e.cells[s];if(!o){let e=i[r];n.push({...e,type:u(e),text:h(e),dataIndex:e.dataIndex,width:e.width,rowspan:t===a-1?1:void 0,style:e!=null&&e.style?e==null?void 0:e.style:{background:`rgba(128, 128, 128, 0.1)`,display:`flex`,justifyContent:`center`}}),r++,s++;continue}let c=o.colspan||1;if((o.rowspan||1)>1&&t>0){r+=c,s++;continue}n.push(o),r+=c,s++;for(let e=1;e<c;e++)n.push({type:`header`,text:``})}e.cells=n});let f=l[a-1],p=[];return i.forEach((e,t)=>{let n=f.cells.find(t=>t.dataIndex===e.dataIndex&&t.text===e.title);n?p.push(n):p.push({...e,type:u(e),text:h(e),dataIndex:e.dataIndex,width:e.width,rowspan:1,style:e!=null&&e.style?e==null?void 0:e.style:{background:`rgba(128, 128, 128, 0.1)`,display:`flex`,justifyContent:`center`}})}),f.cells=p,l.forEach(e=>{for(;e.cells.length<o;)e.cells.push({type:`header`,text:``})}),l}function _(e){let t=[];function n(e){e.forEach(e=>{if(e.children&&e.children.length>0)n(e.children);else{let{title:n,dataIndex:r,key:i,width:a,sorter:o,k:s,...c}=e;t.push({type:`Input`,dataIndex:r,title:n,...i&&{key:i},...a&&{width:a},...o&&{sorter:o},...s&&{k:s},...c})}})}return n(e),t}function v(i,o){var s;let{columns:l,dataSource:h,formulaConfig:v,onChange:y,reactGridProps:b={},onEditSubmit:x,headerRowHeight:S=44,rowHeight:C=44,reactGridStyle:w,className:T,Slots:E,rowSelection:D,rowKey:O=`id`,query:k,loading:A,isExpand:j=!1,getList:M,onRow:N}=i,[P,F]=(0,e.useState)([]),[I,L]=(0,e.useState)([]),R=(0,e.useRef)([]),[z,B]=(0,e.useState)([]),[V,H]=(0,e.useState)([]),[U,W]=(0,e.useState)([]),[G,K]=(0,e.useState)([]),[ee,te]=(0,e.useState)([]),[ne,q]=(0,e.useState)([]),J=(0,e.useRef)(),re=(0,e.useRef)(),Y=(0,e.useRef)();(0,e.useImperativeHandle)(o,()=>({rows:I}));let X=(e,t=0)=>{e==null||e.forEach(e=>{e.level=t+1,e!=null&&e.children&&X(e==null?void 0:e.children,e.level)})};(0,e.useEffect)(()=>{X(h),W(h)},[h]),(0,e.useEffect)(()=>{let e=I.map(e=>e.rowId);e!=null&&e.includes(J.current)||q([])},[I]);let ie=e=>{var t,n;let r=e==null||(t=e.cells)==null||(t=t[0])==null?void 0:t.record,i=[`_$actions`,`rowSelection`],a={id:e==null?void 0:e.rowId};return e==null||(n=e.cells)==null||n.forEach(e=>{e!=null&&e.columnId&&!(i!=null&&i.includes(e==null?void 0:e.columnId))&&(a[e==null?void 0:e.columnId]=(e==null?void 0:e.text)||(e==null?void 0:e.value)||(e==null?void 0:e.selectedValue)||``,(e==null?void 0:e.type)==`Number`&&(a[e==null?void 0:e.columnId]=e==null?void 0:e.value))}),{...r,...a}};(0,e.useEffect)(()=>{if(Array.isArray(l)&&(l==null?void 0:l.length)>0){j&&l.unshift({type:`ExpandListTemplate`,width:14,key:`ExpandListTemplate`,nonEditable:!0,style:(D==null?void 0:D.style)||{background:`rgba(128, 128, 128, 0.1)`}}),D&&l.unshift({type:`rowSelection`,nonEditable:!0,width:(D==null?void 0:D.width)||30,key:`rowSelection`,style:(D==null?void 0:D.style)||{background:`rgba(128, 128, 128, 0.1)`,display:`flex`,justifyContent:`center`}}),F(g(l,S));let e=_(l);B(e==null?void 0:e.map((e,t)=>({...e,columnId:(e==null?void 0:e.dataIndex)||(e==null?void 0:e.key)||(e==null?void 0:e.name)||``})))}},[l,D]);let Z={},Q=e=>{e==null||e.forEach(e=>{if(m(typeof(e==null?void 0:e.title)==`function`?e==null?void 0:e.title():null)){let t=e==null?void 0:e.title;Z[e==null?void 0:e.dataIndex]=u(t)}e!=null&&e.children&&Q(e==null?void 0:e.children)})};(0,e.useEffect)(()=>{Q(l),te(Z)},[l]),(0,e.useEffect)(()=>{let e=z==null?void 0:z.map(e=>e==null?void 0:e.columnId),t=U==null?void 0:U.map((t,n)=>({rowId:t[O],height:C,cells:e==null?void 0:e.map((e,r)=>{var i;let a={},o=z[r],s=t[e],c=(i=o==null?void 0:o.type)==null?`text`:i;if(v){for(let n in v)if(n==e){let e=v[n];a={text:(e==null?void 0:e.setCellData)&&(e==null?void 0:e.setCellData(t)),value:(e==null?void 0:e.setCellData)&&(e==null?void 0:e.setCellData(t)),style:(e==null?void 0:e.setCellStyle)&&(e==null?void 0:e.setCellStyle((e==null?void 0:e.setCellData)&&(e==null?void 0:e.setCellData(t))||t))}}}return{...o,record:t,rowId:t[O]||(o==null?void 0:o.type),type:c,nonEditable:o==null?void 0:o.nonEditable,text:String(s||``),value:s,selectedValue:s||``,style:(o==null?void 0:o.type)==`rowSelection`?{display:`flex`,justifyContent:`center`}:{},...N&&N(t,n,r)||{},...(o==null?void 0:o.onCell)&&(o==null?void 0:o.onCell(t,n,r))||{},...(o==null?void 0:o.cellProps)||{},setNewDataSource:W,setExpandKeys:K,rowKey:O,expandKeys:G,Slots:E,...a}})})),n=[...P,...t];L(n)},[U,z,P]),(0,e.useEffect)(()=>{if(A){var e;let t=I==null?void 0:I.find(e=>{var t;return(e==null?void 0:e.rowId)==((t=Y.current)==null?void 0:t.rowId)});t==null||(e=t.cells)==null||e.find(e=>{var t;return(e==null?void 0:e.columnId)==((t=Y.current)==null?void 0:t.columnId)}),{...Y.current},R.current=I}},[A,I]);let ae=async e=>{let t=[];if(!Array.isArray(e)||e.length===0)return;let n=!1;if((e==null?void 0:e.length)>1&&(n=!0),L(r=>(e.forEach(async e=>{let i=r.findIndex(t=>t.rowId==e.rowId),a=z.findIndex(t=>t.columnId==e.columnId);if(r[i].cells[a]={...e.newCell},Y.current={...e.newCell},t.push(ie(r[i])),v)for(let e in v){let t=v[e],n=z.findIndex(t=>t.columnId==e),a={...r[i].cells[n],text:(t==null?void 0:t.setCellData)&&(t==null?void 0:t.setCellData(r[i])),value:(t==null?void 0:t.setCellData)&&(t==null?void 0:t.setCellData(r[i])),style:(t==null?void 0:t.setCellStyle)&&(t==null?void 0:t.setCellStyle((t==null?void 0:t.setCellData)&&(t==null?void 0:t.setCellData(r[i]))||r[i]))};r[i].cells[n]=a}if(x&&!n)try{await x(t)}catch(e){M&&M()}y&&y(r[i])}),[...r])),n)try{x&&await x(t)}catch(e){M&&M()}},oe=(0,e.useMemo)(()=>{let e={...r.antdComponents||{},...r.customComponents||{},...c},t={};for(let n in e)t[n]=u(t=>(0,a.jsx)(d,{...t,...i,Com:e[n]}));return t},[r.antdComponents,r.customComponents]),se=e=>{let t=I==null?void 0:I.find(t=>{var n;return(t==null?void 0:t.rowId)==(e==null||(n=e.cell)==null?void 0:n.rowId)});return(0,a.jsxs)(`div`,{onPointerDown:e=>e.stopPropagation(),children:[(E==null?void 0:E.tableActionsSlot)&&(0,a.jsx)(E.tableActionsSlot,{...e==null?void 0:e.cell,rowData:t}),(E==null?void 0:E.actionPrefixSlot)&&(0,a.jsx)(E.actionPrefixSlot,{...e==null?void 0:e.cell,rowData:t}),(E==null?void 0:E.actionCenterSlot)&&(0,a.jsx)(E.actionCenterSlot,{...e==null?void 0:e.cell,rowData:t}),(E==null?void 0:E.actionSuffixSlot)&&(0,a.jsx)(E.actionSuffixSlot,{...e==null?void 0:e.cell,rowData:t})]})};function $(e){let t=[];function n(e){for(let r of e)t.push(r),r.children&&r.children.length&&n(r.children)}return n(e),t}let ce=e=>{var n,r,i,o,s,c;let{record:l,rowId:u}=e==null?void 0:e.cell,d=(n=$(h))==null?void 0:n.filter(e=>{var t;return!(D!=null&&(t=D.getCheckboxProps)!=null&&(t=t.call(D,e))!=null&&t.disabled)}),f=typeof(D==null?void 0:D.getCheckboxProps)==`function`?D==null||(r=D.getCheckboxProps)==null?void 0:r.call(D,l):{};return(0,a.jsx)(t.Checkbox,{...e==null?void 0:e.componentProps,checked:(D==null||(i=D.selectedRowKeys)==null?void 0:i.includes(l&&l[O]||``))||!u&&(D==null||(o=D.selectedRowKeys)==null?void 0:o.length)==(d==null?void 0:d.length)&&(d==null?void 0:d.length)>0,indeterminate:!u&&(D==null||(s=D.selectedRowKeys)==null?void 0:s.length)>0&&(D==null||(c=D.selectedRowKeys)==null?void 0:c.length)<(d==null?void 0:d.length),onChange:e=>{if(e.target.checked&&u){let e=[...D==null?void 0:D.selectedRowKeys,l[O]],t=d==null?void 0:d.filter(t=>e==null?void 0:e.includes(t[O]));D==null||D.onChange(e,t)}else if(!e.target.checked&&u){var t,n;let e=D==null||(t=D.selectedRowKeys)==null?void 0:t.filter(e=>e!=l[O]),r=d==null?void 0:d.filter(t=>e==null?void 0:e.includes(t[O]));D==null||D.onChange(D==null||(n=D.selectedRowKeys)==null?void 0:n.filter(e=>e!=l[O]),r)}else if(e.target.checked&&!u){let e=d==null?void 0:d.map(e=>e[O]),t=d==null?void 0:d.filter(t=>e==null?void 0:e.includes(t[O]));D==null||D.onChange(d==null?void 0:d.map(e=>e[O]),t)}else!e.target.checked&&!u&&(D==null||D.onChange([],[]))},...f})};(0,e.useEffect)(()=>{if(D){var e;let t=(e=$(h))==null?void 0:e.filter(e=>{var t;return!(D!=null&&(t=D.getCheckboxProps)!=null&&(t=t.call(D,e))!=null&&t.disabled)}),n=t==null?void 0:t.filter(e=>V==null?void 0:V.includes(e[O]));D==null||D.onChange(V,n)}},[V,h]),(0,e.useEffect)(()=>{H([])},[k==null?void 0:k.pageNum]);let le=(0,e.useMemo)(()=>{let e={};for(let t in b==null?void 0:b.customCellTemplates)e[t]=u(b==null?void 0:b.customCellTemplates[t]);return e},[b==null?void 0:b.customCellTemplates]),ue=(e,t)=>{var n;let r=t==null||(n=t.find(t=>(t==null?void 0:t.rowId)==(e==null?void 0:e.rowId)))==null||(n=n.cells)==null?void 0:n.map(t=>({columnId:t==null?void 0:t.columnId,rowId:e==null?void 0:e.rowId,className:`custom-highlights-row`,borderColor:`transparent`}));J.current=e==null?void 0:e.rowId,q(r)};return(0,a.jsx)(t.Spin,{spinning:A,children:(0,a.jsxs)(`div`,{className:`grid-container ${T}`,style:w,children:[(0,a.jsx)(n.ReactGrid,{ref:re,rows:A?R.current:I,columns:z,onCellsChanged:ae,enableFillHandle:!0,enableRangeSelection:!0,horizontalStickyBreakpoint:120,...b,highlights:(s=b==null?void 0:b.highlights)==null?ne:s,onFocusLocationChanging:e=>{var t,n;let r=(e==null?void 0:e.columnId)+(e==null?void 0:e.rowId);return window.gridEditId=r,typeof(e==null?void 0:e.rowId)==`string`&&(e==null||(t=e.rowId)==null?void 0:t.indexOf(`header-`))>-1||(b!=null&&b.isRowHighlights&&e!=null&&e.columnId&&ue(e,I),(n=[`_$actions`,`rowSelection`,`ExpandListTemplate`])!=null&&n.includes(e==null?void 0:e.columnId))?!1:b!=null&&b.onFocusLocationChanging?b==null?void 0:b.onFocusLocationChanging(e,I):e},customCellTemplates:{ExpandListTemplate:u(p),...oe,...le,...ee,_$actions:u(se),rowSelection:u(ce),Number:u(f,i)}},(h==null?void 0:h.length)==0?0:1),(h==null?void 0:h.length)<=0&&(0,a.jsx)(`div`,{className:`grid-container-empty`,children:(0,a.jsx)(t.Empty,{image:t.Empty.PRESENTED_IMAGE_SIMPLE})})]})})}var y=(0,e.forwardRef)(v);module.exports=y;
1
+ let e=require("react"),t=require("antd"),n=require("@silevis/reactgrid"),r=require("@hzab/form-render"),i=require("@ant-design/icons"),a=require("react/jsx-runtime"),o=require("react/compiler-runtime"),s=require("@hzab/utils/src/formily/field");require("@silevis/reactgrid/styles.css");var c={"DatePicker.MonthPicker":t.DatePicker.MonthPicker,"DatePicker.QuarterPicker":t.DatePicker.QuarterPicker,"DatePicker.RangePicker":t.DatePicker.RangePicker,"DatePicker.TimePicker":t.DatePicker.TimePicker,"DatePicker.WeekPicker":t.DatePicker.WeekPicker,"DatePicker.YearPicker":t.DatePicker.YearPicker,"Input.Password":t.Input.Password,"Input.Search":t.Input.Search,"Input.TextArea":t.Input.TextArea,"TimePicker.RangePicker":t.TimePicker.RangePicker},l=[`DatePicker`,`DatePicker.MonthPicker`,`DatePicker.QuarterPicker`,`DatePicker.RangePicker`,`DatePicker.TimePicker`,`DatePicker.WeekPicker`,`DatePicker.YearPicker`,`TimePicker.RangePicker`],u=(r,o={})=>{class s{getCompatibleCell(e){let t;try{t=(0,n.getCellProperty)(e,`values`,`object`)}catch(e){t=[]}let r=e.selectedValue?parseFloat(e.selectedValue):NaN,i=!0;try{i=(0,n.getCellProperty)(e,`isDisabled`,`boolean`)}catch(e){i=!1}let a=e.selectedValue,o=a||``;return{...e,selectedValue:a,text:o,value:r,values:t,isDisabled:i}}update(e,t){let n=e.values.some(e=>e.value==t.text)?t.text:(t==null?void 0:t.text)||void 0;return this.getCompatibleCell({...e,selectedValue:n})}getClassName(e,t){return``}handleCompositionEnd(e,t){return{cell:{...e},enableEditMode:!1}}render(s,c,u){var d;let[f,p]=(0,e.useState)(!1),[m,h]=(0,e.useState)(!1),g=(s==null?void 0:s.columnId)+(s==null?void 0:s.rowId),[_,v]=(0,e.useState)(s==null?void 0:s.text),[y,b]=(0,e.useState)(!1),x=(0,e.useRef)(s==null?void 0:s.text),S=(0,e.useRef)();(0,e.useEffect)(()=>{v(s==null?void 0:s.text),x.current=s==null?void 0:s.text},[s==null?void 0:s.text]),(0,e.useEffect)(()=>{function e(e){window.gridEditId!=g&&p(!1)}return document.addEventListener(`click`,e),()=>{document.removeEventListener(`click`,e)}},[]);let C=e=>{var t;let n=!1,r=!1;for(let t of(s==null?void 0:s.validatorList)||[]){var i;t!=null&&(i=t.pattern)!=null&&i.test(e)&&(n=!0);break}r=!n&&Array.isArray(s==null?void 0:s.validatorList)&&(s==null||(t=s.validatorList)==null?void 0:t.length)>0,b(r)};(0,e.useEffect)(()=>{if(!m)return;let e=setTimeout(()=>{let e=document.querySelector(`.ant-picker-dropdown`);if(!e)return;let t=e=>{e.stopPropagation()};return e.addEventListener(`pointerdown`,t,!0),()=>{e.removeEventListener(`pointerdown`,t,!0)}},0);return()=>clearTimeout(e)},[m]);let w=()=>{let e=x.current;u(this.getCompatibleCell({...s,text:e,selectedValue:e}),!0)},T=(0,e.useMemo)(()=>l!=null&&l.includes(s==null?void 0:s.type)?{open:m,onOpenChange:e=>{S.current&&clearTimeout(S.current),S.current=setTimeout(()=>{h(e)},80)}}:{},[s]);return(0,e.useEffect)(()=>{!f&&s.type==`Upload`&&window.uploadEdit&&window.uploadEdit==g&&(window.uploadEdit=null,w())},[f,_]),(0,a.jsxs)(`div`,{className:`base-hoc ${f?`base-hoc-edit`:``}`,onDoubleClick:e=>{s!=null&&s.nonEditable||(s.type===`Upload`&&(window.uploadEdit=g),p(!0))},children:[(0,a.jsx)(r,{...o,onPointerDown:e=>e.stopPropagation(),componentProps:{style:{width:`100%`,display:`flex`,alignItems:`center`},value:_,options:s.values,onChange:e=>{var t,n;let r=(t=e==null||(n=e.target)==null?void 0:n.value)==null?e:t;v(r),x.current=r,C(r)},onBlur:e=>{w(),l!=null&&l.includes(s==null?void 0:s.type)||p(!1)},onPointerDown:e=>{e.stopPropagation()},onKeyDown:e=>{((0,n.isAlphaNumericKey)(e.keyCode)||(0,n.isNavigationKey)(e.keyCode))&&e.stopPropagation()},...T,...(s==null?void 0:s.getField)&&(s==null?void 0:s.getField()[`x-component-props`])||{}},pattern:f?``:`readPretty`,cell:s}),y&&(0,a.jsx)(t.Popover,{content:(d=s==null?void 0:s.validatorMessage)==null?`该字段不合法`:d,children:(0,a.jsx)(i.InfoCircleOutlined,{className:`validator-icon`})})]})}}return new s},d=t=>{let{pattern:n,cell:r,componentProps:i,Com:o,cellRender:c}=t,l=(0,e.useMemo)(()=>{var e;if(r!=null&&r.getField)return(0,s.getVal)({...(r==null?void 0:r.getField)&&(r==null?void 0:r.getField()),enum:(r==null||(e=r.getField())==null?void 0:e.enum)||(r==null?void 0:r.values)},{[(r==null?void 0:r.getField)&&(r==null?void 0:r.getField().name)]:r.text})},[r]);return c&&c(t)?(0,a.jsx)(c,{...t}):(0,a.jsx)(`div`,{className:`base-hoc`,children:n==`readPretty`?(0,a.jsx)(`div`,{children:l}):(0,a.jsx)(o,{className:`rg-input`,ref:e=>{e&&e.focus()},...i})})},f=e=>{let n=(0,o.c)(5),r=e==null?void 0:e.componentProps,i;n[0]===r?i=n[1]:(i={...r,type:`number`},n[0]=r,n[1]=i);let s;return n[2]!==e||n[3]!==i?(s=(0,a.jsx)(d,{...e,componentProps:i,Com:t.Input}),n[2]=e,n[3]=i,n[4]=s):s=n[4],s},p=t=>{let n=(0,o.c)(21),{cell:r}=t,{setExpandKeys:s,expandKeys:c,rowKey:l,setNewDataSource:u,record:d}=r,[f,p]=(0,e.useState)(!1),m;n[0]!==d||n[1]!==l||n[2]!==u?(m=e=>{u(t=>{var n;let r=[...t],i=d==null||(n=d.children)==null?void 0:n.map(e=>e==null?void 0:e[l]);if(e){let e=t==null?void 0:t.findIndex(e=>(e==null?void 0:e[l])==(d==null?void 0:d[l])),n=(t==null?void 0:t.filter(e=>i==null?void 0:i.includes(e==null?void 0:e[l])))||[];return(n==null?void 0:n.length)==0&&r.splice(e+1,0,...(d==null?void 0:d.children)||[]),[...r]}return t==null?void 0:t.filter(e=>!(i!=null&&i.includes(e==null?void 0:e[l])))})},n[0]=d,n[1]=l,n[2]=u,n[3]=m):m=n[3];let h=m,g;n[4]!==c||n[5]!==h||n[6]!==d||n[7]!==l?(g=()=>{c!=null&&c.includes(d==null?void 0:d[l])&&(p(!0),h(!0))},n[4]=c,n[5]=h,n[6]=d,n[7]=l,n[8]=g):g=n[8];let _=r==null?void 0:r.record,v;n[9]===_?v=n[10]:(v=[_],n[9]=_,n[10]=v),(0,e.useEffect)(g,v);let y;n[11]!==f||n[12]!==h||n[13]!==d||n[14]!==l||n[15]!==s?(y=()=>{s(e=>e!=null&&e.includes(d==null?void 0:d[l])?e==null?void 0:e.filter(e=>e!=(d==null?void 0:d[l])):[...e,d==null?void 0:d[l]]),p(!f),h(!f)},n[11]=f,n[12]=h,n[13]=d,n[14]=l,n[15]=s,n[16]=y):y=n[16];let b=y,x;return n[17]!==f||n[18]!==b||n[19]!==(d==null?void 0:d.children)?(x=(0,a.jsx)(`div`,{className:`expandList-template`,children:d!=null&&d.children?(0,a.jsx)(a.Fragment,{children:f?(0,a.jsx)(i.MinusCircleOutlined,{className:`expandList-template-icon`,onClick:b}):(0,a.jsx)(i.PlusCircleOutlined,{className:`expandList-template-icon`,onClick:b})}):(0,a.jsx)(`div`,{style:{width:14}})}),n[17]=f,n[18]=b,n[19]=d==null?void 0:d.children,n[20]=x):x=n[20],x};function m(e){return typeof e==`object`&&!!e}var h=e=>{var t;return typeof(e==null?void 0:e.title)==`function`?m(e==null?void 0:e.title())?e==null||(t=e.title())==null?void 0:t.props.children:String(e==null?void 0:e.title())||``:String(e==null?void 0:e.title)||``};function g(e,t=40){let n=e=>e.reduce((e,t)=>{var r;return(r=t.children)!=null&&r.length?[...e,...n(t.children)]:[...e,t]},[]),r=(e,t=1)=>e.reduce((e,n)=>{var i;return(i=n.children)!=null&&i.length?Math.max(e,r(n.children,t+1)):Math.max(e,t)},t),i=n(e),a=r(e),o=i.length,s=(e,t=0)=>e.map(e=>{var r;if(!(((r=e.children)==null?void 0:r.length)>0))return{...e,rowspan:a-t,colspan:1,_depth:t,_isLeaf:!0};let i=n(e.children).length;return{...e,rowspan:1,colspan:i,_depth:t,_isLeaf:!1,children:s(e.children,t+1)}}),c=s(e,0),l=Array.from({length:a},(e,n)=>({rowId:`header-${n}`,height:t,cells:[]})),u=e=>{var t;return(t=[`rowSelection`,`ExpandListTemplate`])!=null&&t.includes(e==null?void 0:e.type)?e==null?void 0:e.type:m(typeof(e==null?void 0:e.title)==`function`?e==null?void 0:e.title():null)?`${e==null?void 0:e.dataIndex}`:`header`},d=(e,t=0)=>{e.forEach(e=>{if(e._isLeaf){let n={...e,type:u(e),text:h(e),dataIndex:e.dataIndex,width:e.width,rowspan:e.rowspan,style:e!=null&&e.style?e==null?void 0:e.style:{background:`rgba(128, 128, 128, 0.1)`,display:`flex`,justifyContent:`center`}};e.sorter&&(n.sorter=e.sorter),e.key&&(n.key=e.key),l[t].cells.push(n)}else l[t].cells.push({...e,type:u(e),text:h(e),colspan:e.colspan,style:e!=null&&e.style?e==null?void 0:e.style:{background:`rgba(128, 128, 128, 0.1)`,display:`flex`,justifyContent:`center`}}),e.children&&d(e.children,t+1)})};d(c,0),l.forEach((e,t)=>{let n=[],r=0,s=0;for(;r<o;){let o=e.cells[s];if(!o){let e=i[r];n.push({...e,type:u(e),text:h(e),dataIndex:e.dataIndex,width:e.width,rowspan:t===a-1?1:void 0,style:e!=null&&e.style?e==null?void 0:e.style:{background:`rgba(128, 128, 128, 0.1)`,display:`flex`,justifyContent:`center`}}),r++,s++;continue}let c=o.colspan||1;if((o.rowspan||1)>1&&t>0){r+=c,s++;continue}n.push(o),r+=c,s++;for(let e=1;e<c;e++)n.push({type:`header`,text:``})}e.cells=n});let f=l[a-1],p=[];return i.forEach((e,t)=>{let n=f.cells.find(t=>t.dataIndex===e.dataIndex&&t.text===e.title);n?p.push(n):p.push({...e,type:u(e),text:h(e),dataIndex:e.dataIndex,width:e.width,rowspan:1,style:e!=null&&e.style?e==null?void 0:e.style:{background:`rgba(128, 128, 128, 0.1)`,display:`flex`,justifyContent:`center`}})}),f.cells=p,l.forEach(e=>{for(;e.cells.length<o;)e.cells.push({type:`header`,text:``})}),l}function _(e){let t=[];function n(e){e.forEach(e=>{if(e.children&&e.children.length>0)n(e.children);else{let{title:n,dataIndex:r,key:i,width:a,sorter:o,k:s,...c}=e;t.push({type:`Input`,dataIndex:r,title:n,...i&&{key:i},...a&&{width:a},...o&&{sorter:o},...s&&{k:s},...c})}})}return n(e),t}function v(i,o){var s;let{columns:l,dataSource:h,formulaConfig:v,onChange:y,reactGridProps:b={},onEditSubmit:x,headerRowHeight:S=44,rowHeight:C=44,reactGridStyle:w,className:T,Slots:E,rowSelection:D,rowKey:O=`id`,query:k,loading:A,isExpand:j=!1,getList:M,onRow:N}=i,[P,F]=(0,e.useState)([]),[I,L]=(0,e.useState)([]),R=(0,e.useRef)([]),[z,B]=(0,e.useState)([]),[V,H]=(0,e.useState)([]),[U,W]=(0,e.useState)([]),[G,K]=(0,e.useState)([]),[ee,te]=(0,e.useState)([]),[ne,q]=(0,e.useState)([]),J=(0,e.useRef)(),re=(0,e.useRef)(),Y=(0,e.useRef)();(0,e.useImperativeHandle)(o,()=>({rows:I}));let X=(e,t=0)=>{e==null||e.forEach(e=>{e.level=t+1,e!=null&&e.children&&X(e==null?void 0:e.children,e.level)})};(0,e.useEffect)(()=>{X(h),W(h)},[h]),(0,e.useEffect)(()=>{let e=I.map(e=>e.rowId);e!=null&&e.includes(J.current)||q([])},[I]);let ie=e=>{var t,n;let r=e==null||(t=e.cells)==null||(t=t[0])==null?void 0:t.record,i=[`_$actions`,`rowSelection`],a={id:e==null?void 0:e.rowId};return e==null||(n=e.cells)==null||n.forEach(e=>{e!=null&&e.columnId&&!(i!=null&&i.includes(e==null?void 0:e.columnId))&&(a[e==null?void 0:e.columnId]=(e==null?void 0:e.text)||(e==null?void 0:e.value)||(e==null?void 0:e.selectedValue)||``,(e==null?void 0:e.type)==`Number`&&(a[e==null?void 0:e.columnId]=e==null?void 0:e.value))}),{...r,...a}};(0,e.useEffect)(()=>{if(Array.isArray(l)&&(l==null?void 0:l.length)>0){j&&l.unshift({type:`ExpandListTemplate`,width:14,key:`ExpandListTemplate`,nonEditable:!0,style:(D==null?void 0:D.style)||{background:`rgba(128, 128, 128, 0.1)`}}),D&&l.unshift({type:`rowSelection`,nonEditable:!0,width:(D==null?void 0:D.width)||30,key:`rowSelection`,style:(D==null?void 0:D.style)||{background:`rgba(128, 128, 128, 0.1)`,display:`flex`,justifyContent:`center`}}),F(g(l,S));let e=_(l);B(e==null?void 0:e.map((e,t)=>({...e,columnId:(e==null?void 0:e.dataIndex)||(e==null?void 0:e.key)||(e==null?void 0:e.name)||``})))}},[l,D]);let Z={},Q=e=>{e==null||e.forEach(e=>{if(m(typeof(e==null?void 0:e.title)==`function`?e==null?void 0:e.title():null)){let t=e==null?void 0:e.title;Z[e==null?void 0:e.dataIndex]=u(t)}e!=null&&e.children&&Q(e==null?void 0:e.children)})};(0,e.useEffect)(()=>{Q(l),te(Z)},[l]),(0,e.useEffect)(()=>{let e=z==null?void 0:z.map(e=>e==null?void 0:e.columnId),t=U==null?void 0:U.map((t,n)=>({rowId:t[O],height:C,cells:e==null?void 0:e.map((e,r)=>{var i;let a={},o=z[r],s=t[e],c=(i=o==null?void 0:o.type)==null?`text`:i;if(v){for(let n in v)if(n==e){let e=v[n];a={text:(e==null?void 0:e.setCellData)&&(e==null?void 0:e.setCellData(t)),value:(e==null?void 0:e.setCellData)&&(e==null?void 0:e.setCellData(t)),style:(e==null?void 0:e.setCellStyle)&&(e==null?void 0:e.setCellStyle((e==null?void 0:e.setCellData)&&(e==null?void 0:e.setCellData(t))||t))}}}return{...o,record:t,rowId:t[O]||(o==null?void 0:o.type),type:c,nonEditable:(o==null?void 0:o.pattern)==`readPretty`?!0:o==null?void 0:o.nonEditable,text:String(s||``),value:s,selectedValue:s||``,style:(o==null?void 0:o.type)==`rowSelection`?{display:`flex`,justifyContent:`center`}:{},...N&&N(t,n,r)||{},...(o==null?void 0:o.onCell)&&(o==null?void 0:o.onCell(t,n,r))||{},...(o==null?void 0:o.cellProps)||{},setNewDataSource:W,setExpandKeys:K,rowKey:O,expandKeys:G,Slots:E,...a}})})),n=[...P,...t];L(n)},[U,z,P]),(0,e.useEffect)(()=>{if(A){var e;let t=I==null?void 0:I.find(e=>{var t;return(e==null?void 0:e.rowId)==((t=Y.current)==null?void 0:t.rowId)});t==null||(e=t.cells)==null||e.find(e=>{var t;return(e==null?void 0:e.columnId)==((t=Y.current)==null?void 0:t.columnId)}),{...Y.current},R.current=I}},[A,I]);let ae=async e=>{let t=[];if(!Array.isArray(e)||e.length===0)return;let n=!1;if((e==null?void 0:e.length)>1&&(n=!0),L(r=>(e.forEach(async e=>{let i=r.findIndex(t=>t.rowId==e.rowId),a=z.findIndex(t=>t.columnId==e.columnId);if(r[i].cells[a]={...e.newCell},Y.current={...e.newCell},t.push(ie(r[i])),v)for(let e in v){let t=v[e],n=z.findIndex(t=>t.columnId==e),a={...r[i].cells[n],text:(t==null?void 0:t.setCellData)&&(t==null?void 0:t.setCellData(r[i])),value:(t==null?void 0:t.setCellData)&&(t==null?void 0:t.setCellData(r[i])),style:(t==null?void 0:t.setCellStyle)&&(t==null?void 0:t.setCellStyle((t==null?void 0:t.setCellData)&&(t==null?void 0:t.setCellData(r[i]))||r[i]))};r[i].cells[n]=a}if(x&&!n)try{await x(t)}catch(e){M&&M()}y&&y(r[i])}),[...r])),n)try{x&&await x(t)}catch(e){M&&M()}},oe=(0,e.useMemo)(()=>{let e={...r.antdComponents||{},...r.customComponents||{},...c},t={};for(let n in e)t[n]=u(t=>(0,a.jsx)(d,{...t,...i,Com:e[n]}));return t},[r.antdComponents,r.customComponents]),se=e=>{let t=I==null?void 0:I.find(t=>{var n;return(t==null?void 0:t.rowId)==(e==null||(n=e.cell)==null?void 0:n.rowId)});return(0,a.jsxs)(`div`,{onPointerDown:e=>e.stopPropagation(),children:[(E==null?void 0:E.tableActionsSlot)&&(0,a.jsx)(E.tableActionsSlot,{...e==null?void 0:e.cell,rowData:t}),(E==null?void 0:E.actionPrefixSlot)&&(0,a.jsx)(E.actionPrefixSlot,{...e==null?void 0:e.cell,rowData:t}),(E==null?void 0:E.actionCenterSlot)&&(0,a.jsx)(E.actionCenterSlot,{...e==null?void 0:e.cell,rowData:t}),(E==null?void 0:E.actionSuffixSlot)&&(0,a.jsx)(E.actionSuffixSlot,{...e==null?void 0:e.cell,rowData:t})]})};function $(e){let t=[];function n(e){for(let r of e)t.push(r),r.children&&r.children.length&&n(r.children)}return n(e),t}let ce=e=>{var n,r,i,o,s,c;let{record:l,rowId:u}=e==null?void 0:e.cell,d=(n=$(h))==null?void 0:n.filter(e=>{var t;return!(D!=null&&(t=D.getCheckboxProps)!=null&&(t=t.call(D,e))!=null&&t.disabled)}),f=typeof(D==null?void 0:D.getCheckboxProps)==`function`?D==null||(r=D.getCheckboxProps)==null?void 0:r.call(D,l):{};return(0,a.jsx)(t.Checkbox,{...e==null?void 0:e.componentProps,checked:(D==null||(i=D.selectedRowKeys)==null?void 0:i.includes(l&&l[O]||``))||!u&&(D==null||(o=D.selectedRowKeys)==null?void 0:o.length)==(d==null?void 0:d.length)&&(d==null?void 0:d.length)>0,indeterminate:!u&&(D==null||(s=D.selectedRowKeys)==null?void 0:s.length)>0&&(D==null||(c=D.selectedRowKeys)==null?void 0:c.length)<(d==null?void 0:d.length),onChange:e=>{if(e.target.checked&&u){let e=[...D==null?void 0:D.selectedRowKeys,l[O]],t=d==null?void 0:d.filter(t=>e==null?void 0:e.includes(t[O]));D==null||D.onChange(e,t)}else if(!e.target.checked&&u){var t,n;let e=D==null||(t=D.selectedRowKeys)==null?void 0:t.filter(e=>e!=l[O]),r=d==null?void 0:d.filter(t=>e==null?void 0:e.includes(t[O]));D==null||D.onChange(D==null||(n=D.selectedRowKeys)==null?void 0:n.filter(e=>e!=l[O]),r)}else if(e.target.checked&&!u){let e=d==null?void 0:d.map(e=>e[O]),t=d==null?void 0:d.filter(t=>e==null?void 0:e.includes(t[O]));D==null||D.onChange(d==null?void 0:d.map(e=>e[O]),t)}else!e.target.checked&&!u&&(D==null||D.onChange([],[]))},...f})};(0,e.useEffect)(()=>{if(D){var e;let t=(e=$(h))==null?void 0:e.filter(e=>{var t;return!(D!=null&&(t=D.getCheckboxProps)!=null&&(t=t.call(D,e))!=null&&t.disabled)}),n=t==null?void 0:t.filter(e=>V==null?void 0:V.includes(e[O]));D==null||D.onChange(V,n)}},[V,h]),(0,e.useEffect)(()=>{H([])},[k==null?void 0:k.pageNum]);let le=(0,e.useMemo)(()=>{let e={};for(let t in b==null?void 0:b.customCellTemplates)e[t]=u(b==null?void 0:b.customCellTemplates[t]);return e},[b==null?void 0:b.customCellTemplates]),ue=(e,t)=>{var n;let r=t==null||(n=t.find(t=>(t==null?void 0:t.rowId)==(e==null?void 0:e.rowId)))==null||(n=n.cells)==null?void 0:n.map(t=>({columnId:t==null?void 0:t.columnId,rowId:e==null?void 0:e.rowId,className:`custom-highlights-row`,borderColor:`transparent`}));J.current=e==null?void 0:e.rowId,q(r)};return(0,a.jsx)(t.Spin,{spinning:A,children:(0,a.jsxs)(`div`,{className:`grid-container ${T}`,style:w,children:[(0,a.jsx)(n.ReactGrid,{ref:re,rows:A?R.current:I,columns:z,onCellsChanged:ae,enableFillHandle:!0,enableRangeSelection:!0,horizontalStickyBreakpoint:120,...b,highlights:(s=b==null?void 0:b.highlights)==null?ne:s,onFocusLocationChanging:e=>{var t,n;let r=(e==null?void 0:e.columnId)+(e==null?void 0:e.rowId);return window.gridEditId=r,typeof(e==null?void 0:e.rowId)==`string`&&(e==null||(t=e.rowId)==null?void 0:t.indexOf(`header-`))>-1||(b!=null&&b.isRowHighlights&&e!=null&&e.columnId&&ue(e,I),(n=[`_$actions`,`rowSelection`,`ExpandListTemplate`])!=null&&n.includes(e==null?void 0:e.columnId))?!1:b!=null&&b.onFocusLocationChanging?b==null?void 0:b.onFocusLocationChanging(e,I):e},customCellTemplates:{ExpandListTemplate:u(p),...oe,...le,...ee,_$actions:u(se),rowSelection:u(ce),Number:u(f,i)}},(h==null?void 0:h.length)==0?0:1),(h==null?void 0:h.length)<=0&&(0,a.jsx)(`div`,{className:`grid-container-empty`,children:(0,a.jsx)(t.Empty,{image:t.Empty.PRESENTED_IMAGE_SIMPLE})})]})})}var y=(0,e.forwardRef)(v);module.exports=y;
package/dist/index.js CHANGED
@@ -464,7 +464,7 @@ function N(e, s) {
464
464
  record: t,
465
465
  rowId: t[M] || (o == null ? void 0 : o.type),
466
466
  type: c,
467
- nonEditable: o == null ? void 0 : o.nonEditable,
467
+ nonEditable: (o == null ? void 0 : o.pattern) == "readPretty" ? !0 : o == null ? void 0 : o.nonEditable,
468
468
  text: String(s || ""),
469
469
  value: s,
470
470
  selectedValue: s || "",
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["DatePicker","Input","TimePicker","childAntdComponent","MonthPicker","QuarterPicker","RangePicker","WeekPicker","YearPicker","Password","Search","TextArea","isTriggerBlur","useEffect","useMemo","useRef","useState","Cell","CellTemplate","Compatible","Uncertain","UncertainCompatible","getCellProperty","getCharFromKey","isAlphaNumericKey","isNavigationKey","keyCodes","InfoCircleOutlined","Popover","isTriggerBlur","OptionType","label","value","isDisabled","BaseCell","selectedValue","values","DIProps","onCellChanged","args","cell","Record","isInEditMode","WidthWrapHoc","WrapComponent","props","createBaseCellTemplate","getCompatibleCell","uncertainCell","parseFloat","NaN","text","update","cellToMerge","selectedValueFromText","some","val","undefined","getClassName","handleCompositionEnd","eventData","enableEditMode","render","commit","React","ReactNode","edit","setEdit","open","setOpen","datatypeId","columnId","rowId","comValue","setComValue","isValidator","setIsValidator","comValueInit","openTimerRef","current","onClick","e","window","gridEditId","document","addEventListener","removeEventListener","onValidator","flag","isVerify","it","validatorList","pattern","test","Array","isArray","length","timer","setTimeout","popup","querySelector","stopPointer","PointerEvent","stopPropagation","clearTimeout","onBlurSubmit","targetValue","dataPickerProps","includes","type","onOpenChange","isOpen","uploadEdit","nonEditable","style","width","display","alignItems","options","onChange","target","onBlur","onPointerDown","onKeyDown","keyCode","getField","validatorMessage","useMemo","getVal","GetBaseTemplate","props","pattern","cell","componentProps","Com","cellRender","echoValue","getField","enum","values","name","text","Slot","input","focus","Input","GetBaseTemplate","NumberCellTemplate","props","$","_c","t0","componentProps","t1","type","t2","useEffect","useState","MinusCircleOutlined","PlusCircleOutlined","ExpandListTemplate","props","$","_c","cell","setExpandKeys","expandKeys","rowKey","setNewDataSource","record","expand","setExpand","t0","isExpand","pre","tempPre","childrenIds","children","map","el","findIndex","el_0","filterList","filter","el_1","includes","length","splice","el_2","onExpand","t1","t2","t3","t4","preExpandKeys","el_3","onClickExpand","t5","width","getNavigatorLanguage","navigator","language","getLocaleSeparators","locale","testNumber","localeFormattedNumber","Intl","NumberFormat","format","thousandsSeparator","split","decimalSeparator","parseLocaleNumber","stringNumber","trim","NaN","normalizedStringNumber","replace","numberString","RegExp","trimmedNumberString","length","Number","isReactElement","value","getTitle","item","title","props","children","String","convertColumnsToRows","columns","headerRowHeight","getLeaves","cols","reduce","acc","col","getDepth","depth","max","Math","leafColumns","totalDepth","totalCols","buildTree","map","hasChildren","rowspan","colspan","_depth","_isLeaf","leafCount","tree","rows","Array","from","_","i","rowId","height","cells","handleType","includes","type","dataIndex","fillRow","nodes","rowIndex","forEach","node","cell","text","width","style","background","display","justifyContent","sorter","key","push","row","newCells","colIndex","cellIndex","currentCell","leaf","undefined","lastRow","lastRowCells","leafIndex","index","existingCell","find","flattenColumns","result","traverse","k","rest","forwardRef","useEffect","useImperativeHandle","useMemo","useRef","useState","Checkbox","Empty","Spin","ReactGrid","TextTemplate","antdComponents","customComponents","WidthWrapHoc","NumberTemplate","ExpandListTemplate","convertColumnsToRows","flattenColumns","isReactElement","childAntdComponent","GetBaseTemplate","CellEditTableProps","columns","dataSource","formulaConfig","onChange","v","reactGridProps","onEditSubmit","headerRowHeight","rowHeight","reactGridStyle","className","Slots","rowSelection","rowKey","query","loading","isExpand","getList","onRow","ri","ci","CellEditTable","props","ref","headerList","setHeaderList","rows","setRows","initRowsRef","tableColumns","setTableColumns","selectedRowKeys","setSelectedRowKeys","newDataSource","setNewDataSource","expandKeys","setExpandKeys","headerCustomTemplate","setHeaderCustomTemplate","highlights","setHighlights","highlightsRowIdRef","gridRef","currentCell","handleDataSource","arr","level","forEach","el","children","validRowIds","map","r","rowId","includes","current","handleArrayToObj","item","record","cells","fieldList","obj","id","columnId","text","value","selectedValue","type","Array","isArray","length","unshift","width","key","nonEditable","style","background","display","justifyContent","newColumns","index","dataIndex","name","headTemplate","handleHeader","title","Com","columnsIds","tempDataSource","height","ind","newCell","columnsItem","cellItem","it","setCellData","setCellStyle","String","onCell","cellProps","mergerList","find","newItem","handleCellsChanged","changes","batchQuery","isBatchSubmit","prevRows","change","changeRowIdx","findIndex","changeColumnIdx","push","resultColumnIdx","err","baseTemplate","mergeTemplate","newMergeTemplate","NewCom","newComProps","ActionDom","rowData","cell","e","stopPropagation","tableActionsSlot","actionPrefixSlot","actionCenterSlot","actionSuffixSlot","flattenDataSource","result","loop","list","CheckBoxDom","filter","getCheckboxProps","disabled","checkboxProps","componentProps","target","checked","newSelectedRowKeys","pageNum","customCellTemplates","templatesObj","onHightsRow","borderColor","datatypeId","window","gridEditId","indexOf","isRowHighlights","onFocusLocationChanging","_$actions","Number","PRESENTED_IMAGE_SIMPLE"],"sources":["../src/common/childAntdComponent.ts","../src/common/WidthWrapHoc.tsx","../src/Template/GetBaseTemplate.tsx","../src/Template/NumberCellTemplate/index.tsx","../src/Template/ExpandListTemplate/index.tsx","../src/common/utils.ts","../src/index.tsx"],"sourcesContent":["import { DatePicker, Input, TimePicker } from \"antd\";\n\nexport const childAntdComponent: any = {\n \"DatePicker.MonthPicker\": DatePicker.MonthPicker,\n \"DatePicker.QuarterPicker\": DatePicker.QuarterPicker,\n \"DatePicker.RangePicker\": DatePicker.RangePicker,\n \"DatePicker.TimePicker\": DatePicker.TimePicker,\n \"DatePicker.WeekPicker\": DatePicker.WeekPicker,\n \"DatePicker.YearPicker\": DatePicker.YearPicker,\n \"Input.Password\": Input.Password,\n \"Input.Search\": Input.Search,\n \"Input.TextArea\": Input.TextArea,\n \"TimePicker.RangePicker\": TimePicker.RangePicker,\n};\nexport const isTriggerBlur = [\n \"DatePicker\",\n \"DatePicker.MonthPicker\",\n \"DatePicker.QuarterPicker\",\n \"DatePicker.RangePicker\",\n \"DatePicker.TimePicker\",\n \"DatePicker.WeekPicker\",\n \"DatePicker.YearPicker\",\n \"TimePicker.RangePicker\",\n];\n","import { useEffect, useMemo, useRef, useState } from \"react\";\n\nimport type {\n Cell,\n CellTemplate,\n Compatible,\n Uncertain,\n UncertainCompatible,\n} from \"@silevis/reactgrid\";\nimport {\n getCellProperty,\n getCharFromKey,\n isAlphaNumericKey,\n isNavigationKey,\n keyCodes,\n} from \"@silevis/reactgrid\";\nimport { InfoCircleOutlined } from \"@ant-design/icons\";\nimport { Popover } from \"antd\";\nimport { isTriggerBlur } from \"./childAntdComponent\";\nexport type OptionType = {\n label: string;\n value: string | number;\n isDisabled?: boolean;\n};\n\nexport interface BaseCell extends Cell {\n selectedValue?: string;\n value: string | number;\n values: OptionType[];\n isDisabled?: boolean;\n}\ninterface DIProps {\n onCellChanged: (...args: any[]) => void;\n cell: Record<string, any>;\n isInEditMode?: boolean;\n}\n\nexport const WidthWrapHoc = (WrapComponent: any, props = {}) => {\n class createBaseCellTemplate implements CellTemplate<BaseCell> {\n getCompatibleCell(uncertainCell: Uncertain<BaseCell>): Compatible<BaseCell> {\n let values: any;\n try {\n values = getCellProperty(uncertainCell, \"values\", \"object\");\n } catch {\n values = [];\n }\n const value = uncertainCell.selectedValue ? parseFloat(uncertainCell.selectedValue) : NaN;\n let isDisabled = true;\n try {\n isDisabled = getCellProperty(uncertainCell, \"isDisabled\", \"boolean\");\n } catch {\n isDisabled = false;\n }\n const selectedValue = uncertainCell.selectedValue;\n const text = selectedValue || \"\";\n return { ...uncertainCell, selectedValue, text, value, values, isDisabled };\n }\n\n update(\n cell: Compatible<BaseCell>,\n cellToMerge: UncertainCompatible<BaseCell>,\n ): Compatible<BaseCell> {\n const selectedValueFromText = cell.values.some((val: any) => val.value == cellToMerge.text)\n ? cellToMerge.text\n : cellToMerge?.text || undefined;\n\n return this.getCompatibleCell({\n ...cell,\n selectedValue: selectedValueFromText,\n });\n }\n\n getClassName(cell: Compatible<BaseCell>, isInEditMode: boolean): string {\n return \"\";\n }\n /** enableEditMode为true 时输入中文会报错 */\n handleCompositionEnd(\n cell: Compatible<BaseCell>,\n eventData: any,\n ): { cell: Compatible<BaseCell>; enableEditMode: boolean } {\n return {\n cell: {\n ...cell,\n },\n enableEditMode: false,\n };\n }\n /** render 不能抽出来组件,否则点击会失效 */\n render(\n cell: any,\n isInEditMode: boolean,\n onCellChanged: (cell: any, commit: boolean) => void,\n ): React.ReactNode {\n const [edit, setEdit] = useState<boolean>(false);\n const [open, setOpen] = useState<boolean>(false);\n const datatypeId = cell?.columnId + cell?.rowId;\n const [comValue, setComValue] = useState(cell?.text);\n const [isValidator, setIsValidator] = useState(false);\n const comValueInit = useRef<any>(cell?.text);\n const openTimerRef = useRef<any>();\n useEffect(() => {\n setComValue(cell?.text);\n comValueInit.current = cell?.text;\n }, [cell?.text]);\n\n useEffect(() => {\n // 处理下拉选项弹层失焦逻辑\n function onClick(e) {\n if ((window as any).gridEditId != datatypeId) {\n setEdit(false);\n }\n }\n document.addEventListener(\"click\", onClick);\n return () => {\n document.removeEventListener(\"click\", onClick);\n };\n }, []);\n\n /** 校验触发器 */\n const onValidator = (val) => {\n let flag = false;\n let isVerify = false;\n for (const it of cell?.validatorList || []) {\n if (it?.pattern?.test(val)) {\n flag = true;\n }\n break;\n }\n isVerify = !flag && Array.isArray(cell?.validatorList) && cell?.validatorList?.length > 0;\n setIsValidator(isVerify);\n };\n\n useEffect(() => {\n if (!open) return;\n // 等下一帧,弹窗DOM渲染完成\n const timer = setTimeout(() => {\n const popup: any = document.querySelector(\".ant-picker-dropdown\");\n if (!popup) return;\n\n const stopPointer = (e: PointerEvent) => {\n // 阻断事件往上冒泡到document\n e.stopPropagation();\n };\n // 捕获阶段监听 pointerdown!!必须是pointerdown不是mousedown\n popup.addEventListener(\"pointerdown\", stopPointer, true);\n\n // 清理函数\n return () => {\n popup.removeEventListener(\"pointerdown\", stopPointer, true);\n };\n }, 0);\n\n return () => clearTimeout(timer);\n }, [open]);\n\n /** 失焦提交 */\n const onBlurSubmit = () => {\n const targetValue = comValueInit.current;\n onCellChanged(\n this.getCompatibleCell({\n ...cell,\n text: targetValue,\n selectedValue: targetValue,\n }),\n true,\n );\n };\n\n const dataPickerProps = useMemo(() => {\n if (isTriggerBlur?.includes(cell?.type)) {\n return {\n open: open,\n /** 兼容datapicker 闪烁问题 */\n onOpenChange: (isOpen) => {\n if (openTimerRef.current) {\n clearTimeout(openTimerRef.current);\n }\n openTimerRef.current = setTimeout(() => {\n setOpen(isOpen);\n }, 80);\n },\n };\n }\n return {};\n }, [cell]);\n /** 监听上传组件失焦回调 */\n useEffect(() => {\n if (\n !edit &&\n cell.type == \"Upload\" &&\n (window as any).uploadEdit &&\n (window as any).uploadEdit == datatypeId\n ) {\n (window as any).uploadEdit = null;\n onBlurSubmit();\n }\n }, [edit, comValue]);\n\n return (\n <div\n className={`base-hoc ${edit ? \"base-hoc-edit\" : \"\"}`}\n onDoubleClick={(e) => {\n if (cell?.nonEditable) {\n return;\n }\n if (cell.type === \"Upload\") {\n (window as any).uploadEdit = datatypeId;\n }\n setEdit(true);\n }}\n >\n <WrapComponent\n {...props}\n onPointerDown={(e) => e.stopPropagation()}\n componentProps={{\n style: { width: \"100%\", display: \"flex\", alignItems: \"center\" },\n value: comValue,\n options: cell.values,\n onChange: (e) => {\n const targetValue = e?.target?.value ?? e;\n setComValue(targetValue);\n comValueInit.current = targetValue;\n onValidator(targetValue);\n },\n onBlur: (e) => {\n onBlurSubmit();\n if (!isTriggerBlur?.includes(cell?.type)) {\n setEdit(false);\n }\n },\n\n onPointerDown: (e) => {\n e.stopPropagation();\n },\n onKeyDown: (e) => {\n if (isAlphaNumericKey(e.keyCode) || isNavigationKey(e.keyCode)) e.stopPropagation();\n },\n ...dataPickerProps,\n ...((cell?.getField && cell?.getField()[\"x-component-props\"]) || {}),\n }}\n pattern={edit ? \"\" : \"readPretty\"}\n cell={cell}\n ></WrapComponent>\n {isValidator && (\n <Popover content={cell?.validatorMessage ?? \"该字段不合法\"}>\n <InfoCircleOutlined className=\"validator-icon\" />\n </Popover>\n )}\n </div>\n );\n }\n }\n\n return new createBaseCellTemplate();\n};\n","import { useMemo } from \"react\";\nimport { getVal } from \"@hzab/utils/src/formily/field\";\nexport const GetBaseTemplate = (props) => {\n const { pattern, cell, componentProps, Com, cellRender } = props;\n\n const echoValue = useMemo(() => {\n if (!cell?.getField) {\n return;\n }\n return getVal(\n { ...(cell?.getField && cell?.getField()), enum: cell?.getField()?.enum || cell?.values },\n { [cell?.getField && cell?.getField().name]: cell.text },\n );\n }, [cell]);\n if (cellRender && cellRender(props)) {\n const Slot = cellRender;\n return <Slot {...props}></Slot>;\n }\n\n return (\n <div className=\"base-hoc\">\n {pattern == \"readPretty\" ? (\n <div>{echoValue}</div>\n ) : (\n <Com\n className=\"rg-input\"\n ref={(input) => {\n if (input) {\n input.focus();\n }\n }}\n {...componentProps}\n />\n )}\n </div>\n );\n};\n","import { Input } from \"antd\";\nimport { GetBaseTemplate } from \"../GetBaseTemplate\";\nimport \"./index.less\";\nconst NumberCellTemplate = (props: any) => {\n return (\n <GetBaseTemplate\n {...props}\n componentProps={{\n ...props?.componentProps,\n type: \"number\",\n }}\n Com={Input}\n ></GetBaseTemplate>\n );\n};\nexport default NumberCellTemplate;\n","import { useEffect, useState } from \"react\";\nimport { MinusCircleOutlined, PlusCircleOutlined } from \"@ant-design/icons\";\nimport \"./index.less\";\n\nexport const ExpandListTemplate = (props) => {\n const { cell } = props;\n const { Slots, setExpandKeys, expandKeys, rowKey, setNewDataSource, record, columnId } = cell;\n const [expand, setExpand] = useState<boolean>(false);\n const onExpand = (isExpand) => {\n setNewDataSource((pre) => {\n const tempPre = [...pre];\n const childrenIds = record?.children?.map((el) => el?.[rowKey]);\n if (isExpand) {\n const findIndex = pre?.findIndex((el) => el?.[rowKey] == record?.[rowKey]);\n const filterList = pre?.filter((el) => childrenIds?.includes(el?.[rowKey])) || [];\n if (filterList?.length == 0) {\n tempPre.splice(findIndex + 1, 0, ...(record?.children || []));\n }\n return [...tempPre];\n }\n\n return pre?.filter((el) => !childrenIds?.includes(el?.[rowKey]));\n });\n };\n useEffect(() => {\n if (expandKeys?.includes(record?.[rowKey])) {\n setExpand(true);\n onExpand(true);\n }\n }, [cell?.record]);\n\n /** 展开关闭子项 */\n const onClickExpand = () => {\n setExpandKeys((preExpandKeys) => {\n if (preExpandKeys?.includes(record?.[rowKey])) {\n return preExpandKeys?.filter((el) => el != record?.[rowKey]);\n }\n return [...preExpandKeys, record?.[rowKey]];\n });\n setExpand(!expand);\n onExpand(!expand);\n };\n return (\n <div className=\"expandList-template\">\n {record?.children ? (\n <>\n {!expand ? (\n <PlusCircleOutlined className=\"expandList-template-icon\" onClick={onClickExpand} />\n ) : (\n <MinusCircleOutlined className=\"expandList-template-icon\" onClick={onClickExpand} />\n )}\n </>\n ) : (\n <div style={{ width: 14 }}></div>\n )}\n </div>\n );\n};\n","export const getNavigatorLanguage = (): string => navigator.language || \"en-US\";\n\nfunction getLocaleSeparators(locale: string) {\n const testNumber = 123456.789;\n const localeFormattedNumber = Intl.NumberFormat(locale).format(testNumber);\n\n // Get the thousands separator of the locale\n const thousandsSeparator = localeFormattedNumber.split(\"123\")[1][0];\n\n // Get the decimal separator of the locale\n const decimalSeparator = localeFormattedNumber.split(\"123\")[1][4];\n return { thousandsSeparator, decimalSeparator };\n}\nexport function parseLocaleNumber(stringNumber: string, locale = getNavigatorLanguage()): number {\n if (!stringNumber.trim()) return NaN;\n const { thousandsSeparator, decimalSeparator } = getLocaleSeparators(locale);\n const normalizedStringNumber = stringNumber.replace(/\\u00A0/g, \" \"); // Replace non-breaking space with normal space\n const numberString = normalizedStringNumber\n .replace(new RegExp(`[${thousandsSeparator}\\\\s]`, \"g\"), \"\") // Replace thousands separator and white-space\n .replace(new RegExp(`\\\\${decimalSeparator}`, \"g\"), \".\"); // Replace decimal separator\n\n const trimmedNumberString = numberString.replace(/^(?!-)\\D+|\\D+$/g, \"\"); // Remove characters before first and after last number, but keep negative sign\n if (trimmedNumberString === null || trimmedNumberString.trim().length === 0) {\n return NaN;\n }\n return Number(trimmedNumberString);\n}\n\nexport function isReactElement(value) {\n return value !== null && typeof value === \"object\";\n}\nconst getTitle = (item) => {\n return typeof item?.title == \"function\"\n ? isReactElement(item?.title())\n ? item?.title()?.props.children\n : String(item?.title()) || \"\"\n : String(item?.title) || \"\";\n};\n\nexport function convertColumnsToRows(columns, headerRowHeight = 40) {\n // 获取所有叶子节点\n const getLeaves = (cols) => {\n return cols.reduce((acc, col) => {\n if (col.children?.length) {\n return [...acc, ...getLeaves(col.children)];\n }\n return [...acc, col];\n }, []);\n };\n\n // 计算最大深度\n const getDepth = (cols, depth = 1) => {\n return cols.reduce((max, col) => {\n if (col.children?.length) {\n return Math.max(max, getDepth(col.children, depth + 1));\n }\n return Math.max(max, depth);\n }, depth);\n };\n\n const leafColumns = getLeaves(columns);\n const totalDepth = getDepth(columns);\n const totalCols = leafColumns.length;\n\n // 构建表头树\n const buildTree = (cols, depth = 0) => {\n return cols.map((col) => {\n const hasChildren = col.children?.length > 0;\n if (!hasChildren) {\n return {\n ...col,\n rowspan: totalDepth - depth,\n colspan: 1,\n _depth: depth,\n _isLeaf: true,\n };\n }\n const leafCount = getLeaves(col.children).length;\n return {\n ...col,\n rowspan: 1,\n colspan: leafCount,\n _depth: depth,\n _isLeaf: false,\n children: buildTree(col.children, depth + 1),\n };\n });\n };\n\n const tree = buildTree(columns, 0);\n\n // 初始化行\n const rows: any = Array.from({ length: totalDepth }, (_, i) => ({\n rowId: `header-${i}`,\n height: headerRowHeight,\n cells: [],\n }));\n\n const handleType = (item) => {\n if ([\"rowSelection\", \"ExpandListTemplate\"]?.includes(item?.type)) {\n return item?.type;\n }\n\n if (isReactElement(typeof item?.title == \"function\" ? item?.title() : null)) {\n return `${item?.dataIndex}`;\n }\n return \"header\";\n };\n\n // 递归填充行\n const fillRow = (nodes, rowIndex = 0) => {\n nodes.forEach((node) => {\n if (node._isLeaf) {\n const cell = {\n ...node,\n type: handleType(node),\n text: getTitle(node),\n dataIndex: node.dataIndex,\n width: node.width,\n rowspan: node.rowspan,\n style: node?.style\n ? node?.style\n : {\n background: \"rgba(128, 128, 128, 0.1)\",\n display: \"flex\",\n justifyContent: \"center\",\n },\n };\n if (node.sorter) cell.sorter = node.sorter;\n if (node.key) cell.key = node.key;\n rows[rowIndex].cells.push(cell);\n } else {\n // 父节点:添加colspan\n rows[rowIndex].cells.push({\n ...node,\n type: handleType(node),\n text: getTitle(node),\n colspan: node.colspan,\n style: node?.style\n ? node?.style\n : {\n background: \"rgba(128, 128, 128, 0.1)\",\n display: \"flex\",\n justifyContent: \"center\",\n },\n });\n if (node.children) {\n fillRow(node.children, rowIndex + 1);\n }\n }\n });\n };\n\n fillRow(tree, 0);\n\n // 补全每一行的cell,使长度一致\n rows.forEach((row, rowIndex) => {\n const newCells = [];\n let colIndex = 0;\n let cellIndex = 0;\n\n while (colIndex < totalCols) {\n const currentCell = row.cells[cellIndex];\n\n if (!currentCell) {\n // 如果当前行没有足够的cell,从叶子节点补充\n const leaf = leafColumns[colIndex];\n newCells.push({\n ...leaf,\n type: handleType(leaf),\n text: getTitle(leaf),\n dataIndex: leaf.dataIndex,\n width: leaf.width,\n rowspan: rowIndex === totalDepth - 1 ? 1 : undefined,\n style: leaf?.style\n ? leaf?.style\n : {\n background: \"rgba(128, 128, 128, 0.1)\",\n display: \"flex\",\n justifyContent: \"center\",\n },\n });\n colIndex++;\n cellIndex++;\n continue;\n }\n\n const colspan = currentCell.colspan || 1;\n const rowspan = currentCell.rowspan || 1;\n\n // 检查当前cell是否应该出现在这一行\n // 如果rowspan > 1,表示它跨多行,但只在第一行出现\n if (rowspan > 1 && rowIndex > 0) {\n // 这个cell不应该出现在当前行,跳过\n colIndex += colspan;\n cellIndex++;\n continue;\n }\n\n // 如果当前cell有colspan,需要补全后面的空cell\n newCells.push(currentCell);\n colIndex += colspan;\n cellIndex++;\n\n // 如果colspan > 1,后面补充空cell\n for (let i = 1; i < colspan; i++) {\n newCells.push({\n type: \"header\",\n text: \"\",\n });\n }\n }\n\n row.cells = newCells;\n });\n\n // 最后一行的特殊处理:确保所有叶子节点都有对应的cell\n const lastRow = rows[totalDepth - 1];\n const lastRowCells = [];\n const leafIndex = 0;\n\n // 遍历所有叶子节点\n leafColumns.forEach((leaf, index) => {\n // 检查是否已经在lastRow中有对应的cell\n const existingCell = lastRow.cells.find(\n (cell) => cell.dataIndex === leaf.dataIndex && cell.text === leaf.title,\n );\n\n if (existingCell) {\n lastRowCells.push(existingCell);\n } else {\n // 创建新的cell\n lastRowCells.push({\n ...leaf,\n type: handleType(leaf),\n text: getTitle(leaf),\n dataIndex: leaf.dataIndex,\n width: leaf.width,\n rowspan: 1,\n style: leaf?.style\n ? leaf?.style\n : {\n background: \"rgba(128, 128, 128, 0.1)\",\n display: \"flex\",\n justifyContent: \"center\",\n },\n });\n }\n });\n\n lastRow.cells = lastRowCells;\n\n // 确保所有行的cell数量等于totalCols\n rows.forEach((row) => {\n // 如果cell数量少于totalCols,补充空cell\n while (row.cells.length < totalCols) {\n row.cells.push({\n type: \"header\",\n text: \"\",\n });\n }\n });\n\n return rows;\n}\n\nexport function flattenColumns(columns: any[]) {\n const result: any[] = [];\n\n function traverse(cols) {\n cols.forEach((col) => {\n if (col.children && col.children.length > 0) {\n traverse(col.children);\n } else {\n // 创建新对象,只保留需要的属性\n const { title, dataIndex, key, width, sorter, k, ...rest } = col;\n\n result.push({\n type: \"Input\",\n dataIndex,\n title,\n ...(key && { key }),\n ...(width && { width }),\n ...(sorter && { sorter }),\n ...(k && { k }),\n // 如果需要保留其他属性\n ...rest,\n });\n }\n });\n }\n\n traverse(columns);\n return result;\n}\n","import { forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState } from \"react\";\nimport { Checkbox, Empty, Spin } from \"antd\";\nimport { ReactGrid } from \"@silevis/reactgrid\";\nimport TextTemplate from \"./Template/TextCellTemplate\";\nimport { antdComponents, customComponents } from \"@hzab/form-render\";\nimport { WidthWrapHoc } from \"./common/WidthWrapHoc\";\nimport NumberTemplate from \"./Template/NumberCellTemplate\";\nimport { ExpandListTemplate } from \"./Template/ExpandListTemplate\";\nimport { convertColumnsToRows, flattenColumns, isReactElement } from \"./common/utils\";\nimport { childAntdComponent } from \"./common/childAntdComponent\";\nimport { GetBaseTemplate } from \"./Template/GetBaseTemplate\";\nimport \"./index.less\";\nimport \"@silevis/reactgrid/styles.css\";\n\ninterface CellEditTableProps {\n columns: any[];\n dataSource: any[];\n formulaConfig?: any;\n onChange?: (v: any) => void;\n reactGridProps?: any;\n onEditSubmit?: (v: any) => void;\n headerRowHeight?: number;\n rowHeight?: number;\n reactGridStyle?: any;\n className?: string;\n Slots?: any;\n rowSelection?: any;\n rowKey?: string;\n query?: any;\n loading?: boolean;\n isExpand?: boolean;\n getList?: () => void;\n onRow?: (v: any, ri: number, ci: number) => void;\n}\n\nfunction CellEditTable(props: CellEditTableProps, ref: any) {\n const {\n columns,\n dataSource,\n formulaConfig,\n onChange,\n reactGridProps = {},\n onEditSubmit,\n headerRowHeight = 44,\n rowHeight = 44,\n reactGridStyle,\n className,\n Slots,\n rowSelection,\n rowKey = \"id\",\n query,\n loading,\n isExpand = false,\n getList,\n onRow,\n } = props;\n\n const [headerList, setHeaderList] = useState<any>([]);\n const [rows, setRows] = useState<any>([]);\n const initRowsRef = useRef<any>([]);\n /** 初始行数据 */\n const [tableColumns, setTableColumns] = useState<any>([]);\n const [selectedRowKeys, setSelectedRowKeys] = useState<any>([]);\n const [newDataSource, setNewDataSource] = useState<any>([]);\n const [expandKeys, setExpandKeys] = useState<any>([]);\n const [headerCustomTemplate, setHeaderCustomTemplate] = useState<any>([]);\n const [highlights, setHighlights] = useState([]);\n const highlightsRowIdRef = useRef();\n\n const gridRef = useRef<any>();\n const currentCell = useRef<any>();\n\n useImperativeHandle(ref, () => {\n return {\n rows,\n };\n });\n /** 递归处理子节点数据 */\n const handleDataSource = (arr, level = 0) => {\n arr?.forEach((el) => {\n el.level = level + 1;\n if (el?.children) {\n handleDataSource(el?.children, el.level);\n }\n });\n };\n /** 洗数据 */\n useEffect(() => {\n handleDataSource(dataSource);\n setNewDataSource(dataSource);\n }, [dataSource]);\n\n /** 判断当前选中行是否还存在 */\n useEffect(() => {\n const validRowIds = rows.map((r) => r.rowId);\n if (!validRowIds?.includes(highlightsRowIdRef.current)) {\n setHighlights([]);\n }\n }, [rows]);\n\n /**将数组转为对象 */\n const handleArrayToObj = (item) => {\n const record = item?.cells?.[0]?.record;\n const fieldList = [\"_$actions\", \"rowSelection\"];\n const obj: any = {\n id: item?.rowId,\n };\n item?.cells?.forEach((el) => {\n if (el?.columnId && !fieldList?.includes(el?.columnId)) {\n obj[el?.columnId] = el?.text || el?.value || el?.selectedValue || \"\";\n if (el?.type == \"Number\") {\n obj[el?.columnId] = el?.value;\n }\n }\n });\n\n return {\n ...record,\n ...obj,\n };\n };\n /** 表头 */\n useEffect(() => {\n if (Array.isArray(columns) && columns?.length > 0) {\n if (isExpand) {\n columns.unshift({\n type: \"ExpandListTemplate\",\n width: 14,\n key: \"ExpandListTemplate\",\n nonEditable: true,\n style: rowSelection?.style || {\n background: \"rgba(128, 128, 128, 0.1)\",\n },\n });\n }\n if (rowSelection) {\n columns.unshift({\n type: \"rowSelection\",\n nonEditable: true,\n width: rowSelection?.width || 30,\n key: \"rowSelection\",\n style: rowSelection?.style || {\n background: \"rgba(128, 128, 128, 0.1)\",\n display: \"flex\",\n justifyContent: \"center\",\n },\n });\n }\n\n setHeaderList(convertColumnsToRows(columns, headerRowHeight));\n const newColumns = flattenColumns(columns);\n\n setTableColumns(\n newColumns?.map((item, index) => ({\n ...item,\n columnId: item?.dataIndex || item?.key || item?.name || \"\",\n })),\n );\n }\n }, [columns, rowSelection]);\n\n /** 自定义表头 */\n const headTemplate: any = {};\n const handleHeader = (arr) => {\n arr?.forEach((item) => {\n if (isReactElement(typeof item?.title == \"function\" ? item?.title() : null)) {\n const Com = item?.title;\n headTemplate[item?.dataIndex] = WidthWrapHoc(Com);\n }\n if (item?.children) {\n handleHeader(item?.children);\n }\n });\n };\n useEffect(() => {\n handleHeader(columns);\n setHeaderCustomTemplate(headTemplate);\n }, [columns]);\n\n /** 数据行 */\n useEffect(() => {\n const columnsIds = tableColumns?.map((el) => el?.columnId);\n\n const tempDataSource = newDataSource?.map((item, index) => {\n return {\n rowId: item[rowKey],\n height: rowHeight,\n cells: columnsIds?.map((el, ind) => {\n let newCell = {};\n const columnsItem = tableColumns[ind];\n const cellItem = item[el];\n const type: any = columnsItem?.type ?? \"text\";\n //设置单元格颜色及回显\n if (formulaConfig) {\n for (const key in formulaConfig) {\n if (key == el) {\n const it = formulaConfig[key];\n newCell = {\n text: it?.setCellData && it?.setCellData(item),\n value: it?.setCellData && it?.setCellData(item),\n style:\n it?.setCellStyle &&\n it?.setCellStyle((it?.setCellData && it?.setCellData(item)) || item),\n };\n }\n }\n }\n\n return {\n ...columnsItem,\n record: item,\n rowId: item[rowKey] || columnsItem?.type,\n type: type,\n nonEditable: columnsItem?.nonEditable,\n text: String(cellItem || \"\"),\n value: cellItem,\n selectedValue: cellItem || \"\",\n style:\n columnsItem?.type == \"rowSelection\"\n ? { display: \"flex\", justifyContent: \"center\" }\n : {},\n ...(((onRow && onRow(item, index, ind)) as any) || {}),\n ...((columnsItem?.onCell && columnsItem?.onCell(item, index, ind)) || {}),\n ...(columnsItem?.cellProps || {}),\n setNewDataSource,\n setExpandKeys,\n rowKey,\n expandKeys,\n Slots,\n ...newCell,\n };\n }),\n };\n });\n const mergerList = [...headerList, ...tempDataSource];\n setRows(mergerList);\n }, [newDataSource, tableColumns, headerList]);\n useEffect(() => {\n if (loading) {\n const item = rows?.find((el) => el?.rowId == currentCell.current?.rowId);\n let newItem = item?.cells?.find((it) => it?.columnId == currentCell.current?.columnId);\n newItem = { ...currentCell.current };\n initRowsRef.current = rows;\n }\n }, [loading, rows]);\n // 单元格编辑回调\n const handleCellsChanged = async (changes) => {\n const batchQuery: any = [];\n if (!Array.isArray(changes) || changes.length === 0) return;\n /** 批量提交 */\n let isBatchSubmit = false;\n if (changes?.length > 1) {\n isBatchSubmit = true;\n }\n\n setRows((prevRows) => {\n changes.forEach(async (change) => {\n const changeRowIdx = prevRows.findIndex((el) => el.rowId == change.rowId);\n const changeColumnIdx = tableColumns.findIndex((el) => el.columnId == change.columnId);\n prevRows[changeRowIdx].cells[changeColumnIdx] = { ...change.newCell };\n currentCell.current = { ...change.newCell };\n batchQuery.push(handleArrayToObj(prevRows[changeRowIdx]));\n if (formulaConfig) {\n for (const key in formulaConfig) {\n const item = formulaConfig[key];\n const resultColumnIdx = tableColumns.findIndex((el) => el.columnId == key);\n const newCell = {\n ...prevRows[changeRowIdx].cells[resultColumnIdx],\n text: item?.setCellData && item?.setCellData(prevRows[changeRowIdx]),\n value: item?.setCellData && item?.setCellData(prevRows[changeRowIdx]),\n style:\n item?.setCellStyle &&\n item?.setCellStyle(\n (item?.setCellData && item?.setCellData(prevRows[changeRowIdx])) ||\n prevRows[changeRowIdx],\n ),\n };\n prevRows[changeRowIdx].cells[resultColumnIdx] = newCell;\n }\n }\n if (onEditSubmit && !isBatchSubmit) {\n try {\n await onEditSubmit(batchQuery);\n } catch (err) {\n getList && getList();\n }\n }\n onChange && onChange(prevRows[changeRowIdx]);\n });\n return [...prevRows];\n });\n\n if (isBatchSubmit) {\n try {\n onEditSubmit && (await onEditSubmit(batchQuery));\n } catch (err) {\n getList && getList();\n }\n }\n };\n\n /** 自定义组件注册 */\n const baseTemplate = useMemo(() => {\n const mergeTemplate: any = {\n ...(antdComponents || {}),\n ...(customComponents || {}),\n ...childAntdComponent,\n };\n const newMergeTemplate: any = {};\n for (const key in mergeTemplate) {\n const NewCom = (newComProps) => {\n return <GetBaseTemplate {...newComProps} {...props} Com={mergeTemplate[key]} />;\n };\n newMergeTemplate[key] = WidthWrapHoc(NewCom);\n }\n return newMergeTemplate;\n }, [antdComponents, customComponents]);\n\n const ActionDom = (props) => {\n const rowData = rows?.find((el) => el?.rowId == props?.cell?.rowId);\n return (\n <div onPointerDown={(e) => e.stopPropagation()}>\n {Slots?.tableActionsSlot && <Slots.tableActionsSlot {...props?.cell} rowData={rowData} />}\n {Slots?.actionPrefixSlot && <Slots.actionPrefixSlot {...props?.cell} rowData={rowData} />}\n {Slots?.actionCenterSlot && <Slots.actionCenterSlot {...props?.cell} rowData={rowData} />}\n {Slots?.actionSuffixSlot && <Slots.actionSuffixSlot {...props?.cell} rowData={rowData} />}\n </div>\n );\n };\n function flattenDataSource(arr: any) {\n const result: any = [];\n function loop(list: any) {\n for (const item of list) {\n result.push(item);\n if (item.children && item.children.length) {\n loop(item.children);\n }\n }\n }\n loop(arr);\n return result;\n }\n const CheckBoxDom = (props) => {\n const { record, rowId } = props?.cell;\n\n const newDataSource = flattenDataSource(dataSource)?.filter(\n (item) => !rowSelection?.getCheckboxProps?.(item)?.disabled,\n );\n\n const checkboxProps =\n typeof rowSelection?.getCheckboxProps === \"function\"\n ? rowSelection?.getCheckboxProps?.(record)\n : {};\n return (\n <Checkbox\n {...props?.componentProps}\n checked={\n rowSelection?.selectedRowKeys?.includes((record && record[rowKey]) || \"\") ||\n (!rowId &&\n rowSelection?.selectedRowKeys?.length == newDataSource?.length &&\n newDataSource?.length > 0)\n }\n indeterminate={\n !rowId &&\n rowSelection?.selectedRowKeys?.length > 0 &&\n rowSelection?.selectedRowKeys?.length < newDataSource?.length\n }\n onChange={(e) => {\n if (e.target.checked && rowId) {\n const newSelectedRowKeys = [...rowSelection?.selectedRowKeys, record[rowKey]];\n const rows = newDataSource?.filter((el) => newSelectedRowKeys?.includes(el[rowKey]));\n\n rowSelection?.onChange(newSelectedRowKeys, rows);\n } else if (!e.target.checked && rowId) {\n const newSelectedRowKeys = rowSelection?.selectedRowKeys?.filter(\n (el) => el != record[rowKey],\n );\n const rows = newDataSource?.filter((el) => newSelectedRowKeys?.includes(el[rowKey]));\n\n rowSelection?.onChange(\n rowSelection?.selectedRowKeys?.filter((el) => el != record[rowKey]),\n rows,\n );\n } else if (e.target.checked && !rowId) {\n const newSelectedRowKeys = newDataSource?.map((el) => el[rowKey]);\n const rows = newDataSource?.filter((el) => newSelectedRowKeys?.includes(el[rowKey]));\n\n rowSelection?.onChange(\n newDataSource?.map((el) => el[rowKey]),\n rows,\n );\n } else if (!e.target.checked && !rowId) {\n rowSelection?.onChange([], []);\n }\n }}\n {...checkboxProps}\n ></Checkbox>\n );\n };\n useEffect(() => {\n if (rowSelection) {\n const newDataSource = flattenDataSource(dataSource)?.filter(\n (item) => !rowSelection?.getCheckboxProps?.(item)?.disabled,\n );\n const rows = newDataSource?.filter((el) => selectedRowKeys?.includes(el[rowKey]));\n rowSelection?.onChange(selectedRowKeys, rows);\n }\n }, [selectedRowKeys, dataSource]);\n useEffect(() => {\n setSelectedRowKeys([]);\n }, [query?.pageNum]);\n\n const customCellTemplates = useMemo(() => {\n const templatesObj: any = {};\n for (const key in reactGridProps?.customCellTemplates) {\n const item = reactGridProps?.customCellTemplates[key];\n templatesObj[key] = WidthWrapHoc(item);\n }\n return templatesObj;\n }, [reactGridProps?.customCellTemplates]);\n\n /** 选中高亮整行 */\n const onHightsRow = (cell: any, rows: any) => {\n const list = rows\n ?.find((el) => el?.rowId == cell?.rowId)\n ?.cells?.map((item) => ({\n columnId: item?.columnId,\n rowId: cell?.rowId,\n className: \"custom-highlights-row\",\n borderColor: \"transparent\",\n }));\n highlightsRowIdRef.current = cell?.rowId;\n setHighlights(list);\n };\n\n return (\n <Spin spinning={loading}>\n <div className={`grid-container ${className}`} style={reactGridStyle}>\n <ReactGrid\n ref={gridRef}\n rows={loading ? initRowsRef.current : rows}\n key={dataSource?.length == 0 ? 0 : 1}\n columns={tableColumns}\n onCellsChanged={handleCellsChanged}\n enableFillHandle={true}\n enableRangeSelection={true}\n horizontalStickyBreakpoint={120}\n {...reactGridProps}\n highlights={reactGridProps?.highlights ?? highlights}\n onFocusLocationChanging={(cell: any) => {\n const datatypeId = cell?.columnId + cell?.rowId;\n (window as any).gridEditId = datatypeId;\n if (typeof cell?.rowId == \"string\" && cell?.rowId?.indexOf(\"header-\") > -1) {\n return false;\n }\n if (reactGridProps?.isRowHighlights && cell?.columnId) {\n onHightsRow(cell, rows);\n }\n if ([\"_$actions\", \"rowSelection\", \"ExpandListTemplate\"]?.includes(cell?.columnId)) {\n return false;\n }\n if (reactGridProps?.onFocusLocationChanging) {\n return reactGridProps?.onFocusLocationChanging(cell, rows);\n }\n\n return cell;\n }}\n customCellTemplates={{\n ExpandListTemplate: WidthWrapHoc(ExpandListTemplate),\n ...baseTemplate,\n ...customCellTemplates,\n ...headerCustomTemplate,\n _$actions: WidthWrapHoc(ActionDom),\n rowSelection: WidthWrapHoc(CheckBoxDom),\n // Input: WidthWrapHoc(TextTemplate,props),\n Number: WidthWrapHoc(NumberTemplate, props),\n }}\n />\n {dataSource?.length <= 0 && (\n <div className=\"grid-container-empty\">\n <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} />\n </div>\n )}\n </div>\n </Spin>\n );\n}\n\nexport default forwardRef(CellEditTable);\n"],"mappings":";;;;;;;;;;AAEA,IAAaG,IAA0B;CACrC,0BAA0BH,EAAWI;CACrC,4BAA4BJ,EAAWK;CACvC,0BAA0BL,EAAWM;CACrC,yBAAyBN,EAAWE;CACpC,yBAAyBF,EAAWO;CACpC,yBAAyBP,EAAWQ;CACpC,kBAAkBP,EAAMQ;CACxB,gBAAgBR,EAAMS;CACtB,kBAAkBT,EAAMU;CACxB,0BAA0BT,EAAWI;AACvC,GACaM,IAAgB;CAC3B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AAAwB,GCeb+B,KAAgBC,GAAoBC,IAAQ,CAAC,MAAM;CAC9D,MAAMC,EAAyD;EAC7DC,kBAAkBC,GAA0D;GAC1E,IAAIZ;GACJ,IAAI;IACFA,IAASd,EAAgB0B,GAAe,UAAU,QAAQ;GAC5D,SAAA,GAAQ;IACNZ,IAAS,CAAA;GACX;GACA,IAAMJ,IAAQgB,EAAcb,gBAAgBc,WAAWD,EAAcb,aAAa,IAAIe,KAClFjB,IAAa;GACjB,IAAI;IACFA,IAAaX,EAAgB0B,GAAe,cAAc,SAAS;GACrE,SAAA,GAAQ;IACNf,IAAa;GACf;GACA,IAAME,IAAgBa,EAAcb,eAC9BgB,IAAOhB,KAAiB;GAC9B,OAAO;IAAE,GAAGa;IAAeb;IAAegB;IAAMnB;IAAOI;IAAQH;GAAW;EAC5E;EAEAmB,OACEZ,GACAa,GACsB;GACtB,IAAMC,IAAwBd,EAAKJ,OAAOmB,MAAMC,MAAaA,EAAIxB,SAASqB,EAAYF,IAAI,IACtFE,EAAYF,QAAAA,KAAAA,OAAAA,KAAAA,IACZE,EAAaF,SAAQM,KAAAA;GAEzB,OAAO,KAAKV,kBAAkB;IAC5B,GAAGP;IACHL,eAAemB;GACjB,CAAC;EACH;EAEAI,aAAalB,GAA4BE,GAA+B;GACtE,OAAO;EACT;EAEAiB,qBACEnB,GACAoB,GACyD;GACzD,OAAO;IACLpB,MAAM,EACJ,GAAGA,EACL;IACAqB,gBAAgB;GAClB;EACF;EAEAC,OACEtB,GACAE,GACAJ,GACiB;;GACjB,IAAM,CAAC4B,GAAMC,KAAWnD,EAAkB,EAAK,GACzC,CAACoD,GAAMC,KAAWrD,EAAkB,EAAK,GACzCsD,KAAAA,KAAAA,OAAAA,KAAAA,IAAa9B,EAAM+B,aAAAA,KAAAA,OAAAA,KAAAA,IAAW/B,EAAMgC,QACpC,CAACC,GAAUC,KAAe1D,EAAAA,KAAAA,OAAAA,KAAAA,IAASwB,EAAMW,IAAI,GAC7C,CAACwB,GAAaC,KAAkB5D,EAAS,EAAK,GAC9C6D,IAAe9D,EAAAA,KAAAA,OAAAA,KAAAA,IAAYyB,EAAMW,IAAI,GACrC2B,IAAe/D,EAAY;GAMjCF,AALAA,QAAgB;IAEdgE,AADAH,EAAAA,KAAAA,OAAAA,KAAAA,IAAYlC,EAAMW,IAAI,GACtB0B,EAAaE,UAAAA,KAAAA,OAAAA,KAAAA,IAAUvC,EAAMW;GAC/B,GAAG,CAAA,KAAA,OAAA,KAAA,IAACX,EAAMW,IAAI,CAAC,GAEftC,QAAgB;IAEd,SAASmE,EAAQC,GAAG;KAClB,AAAKC,OAAeC,cAAcb,KAChCH,EAAQ,EAAK;IAEjB;IAEA,OADAiB,SAASC,iBAAiB,SAASL,CAAO,SAC7B;KACXI,SAASE,oBAAoB,SAASN,CAAO;IAC/C;GACF,GAAG,CAAA,CAAE;GAGL,IAAMO,KAAe/B,MAAQ;;IAC3B,IAAIgC,IAAO,IACPC,IAAW;IACf,KAAK,IAAMC,MAAAA,KAAAA,OAAAA,KAAAA,IAAMlD,EAAMmD,kBAAiB,CAAA,GAAI;;KAC1C,AAAA,KAAA,SAAA,IAAID,EAAIE,YAAAA,QAAAA,EAASC,KAAKrC,CAAG,MACvBgC,IAAO;KAET;IACF;IAEAZ,AADAa,IAAW,CAACD,KAAQM,MAAMC,QAAAA,KAAAA,OAAAA,KAAAA,IAAQvD,EAAMmD,aAAa,MAAA,KAAA,SAAA,IAAKnD,EAAMmD,kBAAAA,OAAAA,KAAAA,IAAAA,EAAeK,UAAS,GACxFpB,EAAea,CAAQ;GACzB;GAEA5E,QAAgB;IACd,IAAI,CAACuD,GAAM;IAEX,IAAM6B,IAAQC,iBAAiB;KAC7B,IAAMC,IAAaf,SAASgB,cAAc,sBAAsB;KAChE,IAAI,CAACD,GAAO;KAEZ,IAAME,KAAepB,MAAoB;MAEvCA,EAAEsB,gBAAgB;KACpB;KAKA,OAHAJ,EAAMd,iBAAiB,eAAegB,GAAa,EAAI,SAG1C;MACXF,EAAMb,oBAAoB,eAAee,GAAa,EAAI;KAC5D;IACF,GAAG,CAAC;IAEJ,aAAaG,aAAaP,CAAK;GACjC,GAAG,CAAC7B,CAAI,CAAC;GAGT,IAAMqC,UAAqB;IACzB,IAAMC,IAAc7B,EAAaE;IACjCzC,EACE,KAAKS,kBAAkB;KACrB,GAAGP;KACHW,MAAMuD;KACNvE,eAAeuE;IACjB,CAAC,GACD,EACF;GACF,GAEMC,IAAkB7F,QACtB,KAAA,QAAIe,EAAe+E,SAAAA,KAAAA,OAAAA,KAAAA,IAASpE,EAAMqE,IAAI,IAC7B;IACCzC;IAEN0C,eAAeC,MAAW;KAIxBjC,AAHIA,EAAaC,WACfyB,aAAa1B,EAAaC,OAAO,GAEnCD,EAAaC,UAAUmB,iBAAiB;MACtC7B,EAAQ0C,CAAM;KAChB,GAAG,EAAE;IACP;GACF,IAEK,CAAC,GACP,CAACvE,CAAI,CAAC;GAcT,OAZA3B,QAAgB;IACd,AACE,CAACqD,KACD1B,EAAKqE,QAAQ,YACZ3B,OAAe8B,cACf9B,OAAe8B,cAAc1C,MAE9B,OAAgB0C,aAAa,MAC7BP,EAAa;GAEjB,GAAG,CAACvC,GAAMO,CAAQ,CAAC,GAGjB,kBAAC,OAAD;IACE,WAAW,YAAYP,IAAO,kBAAkB;IAChD,gBAAgBe,MAAM;KACpB,KAAA,QAAIzC,EAAMyE,gBAGNzE,EAAKqE,SAAS,aAChB,OAAgBG,aAAa1C,IAE/BH,EAAQ,EAAI;IACd;IAVF,UAAA,CAYE,kBAAC,GAAD;KACE,GAAItB;KACJ,gBAAgBoC,MAAMA,EAAEsB,gBAAgB;KACxC,gBAAgB;MACdW,OAAO;OAAEC,OAAO;OAAQC,SAAS;OAAQC,YAAY;MAAS;MAC9DrF,OAAOyC;MACP6C,SAAS9E,EAAKJ;MACdmF,WAAWtC,MAAM;;OACf,IAAMyB,KAAAA,IAAAA,KAAAA,SAAAA,IAAczB,EAAGuC,WAAAA,OAAAA,KAAAA,IAAAA,EAAQxF,UAAAA,OAASiD,IAATjD;OAG/BuD,AAFAb,EAAYgC,CAAW,GACvB7B,EAAaE,UAAU2B,GACvBnB,EAAYmB,CAAW;MACzB;MACAe,SAASxC,MAAM;OAEb,AADAwB,EAAa,GACT,KAAA,QAAC5E,EAAe+E,SAAAA,KAAAA,OAAAA,KAAAA,IAASpE,EAAMqE,IAAI,KACrC1C,EAAQ,EAAK;MAEjB;MAEAuD,gBAAgBzC,MAAM;OACpBA,EAAEsB,gBAAgB;MACpB;MACAoB,YAAY1C,MAAM;OAChB,CAAIzD,EAAkByD,EAAE2C,OAAO,KAAKnG,EAAgBwD,EAAE2C,OAAO,MAAG3C,EAAEsB,gBAAgB;MACpF;MACA,GAAGI;MACH,IAAA,KAAA,OAAA,KAAA,IAAKnE,EAAMqF,cAAAA,KAAAA,OAAAA,KAAAA,IAAYrF,EAAMqF,SAAS,CAAC,CAAC,yBAAyB,CAAC;KACpE;KACA,SAAS3D,IAAO,KAAK;KACf1B;IACQ,CAAA,GACfmC,KACC,kBAAC,GAAD;KAAS,UAAA,IAAA,KAAA,OAAA,KAAA,IAASnC,EAAMsF,qBAAAA,OAAoB,WAApBA;KACtB,UAAA,kBAAC,GAAD,EAAoB,WAAU,iBAAgB,CAAA;IACvC,CAAA,CAER;;EAET;CACF;CAEA,OAAO,IAAIhF,EAAuB;AACpC,GC5PamF,KAAmBC,MAAU;CACxC,IAAM,EAAEC,YAASC,SAAMC,mBAAgBC,QAAKC,kBAAeL,GAErDM,IAAYT,QAAc;;EAC1B,SAAA,QAACK,EAAMK,UAGX,OAAOT,EACL;GAAE,IAAA,KAAA,OAAA,KAAA,IAAII,EAAMK,cAAAA,KAAAA,OAAAA,KAAAA,IAAYL,EAAMK,SAAS;GAAIC,OAAAA,KAAAA,SAAAA,IAAMN,EAAMK,SAAS,MAAA,OAAA,KAAA,IAAA,EAAGC,UAAAA,KAAAA,OAAAA,KAAAA,IAAQN,EAAMO;EAAO,GACxF,IAAA,KAAA,OAAA,KAAA,IAAGP,EAAMK,cAAAA,KAAAA,OAAAA,KAAAA,IAAYL,EAAMK,SAAS,CAAC,CAACG,QAAOR,EAAKS,KAAK,CACzD;CACF,GAAG,CAACT,CAAI,CAAC;CAMT,OALIG,KAAcA,EAAWL,CAAK,IAEzB,kBAAC,GAAD,EAAM,GAAIA,EAAa,CAAA,IAI9B,kBAAC,OAAD;EAAK,WAAU;EACZC,UAAAA,KAAW,eACV,kBAAC,OAAD,EAAA,UAAMK,EAAe,CAAA,IAErB,kBAAC,GAAD;GACE,WAAU;GACV,MAAMO,MAAU;IACd,AAAIA,KACFA,EAAMC,MAAM;GAEhB;GACA,GAAIX;EAAe,CAAA;CAGpB,CAAA;AAET,GCjCMc,MAAqBC,MAAA;CAAA,IAAAC,IAAAC,EAAA,CAAA,GAKhBC,IAAAA,KAAAA,OAAAA,KAAAA,IAAAH,EAAKI,gBAAgBC;CAAA,AAAAJ,EAAA,OAAAE,IAEzBE,IAAAJ,EAAA,MAHeI,IAAA;EAAA,GACXF;EAAqBG,MAClB;CACR,GAACL,EAAA,KAAAE,GAAAF,EAAA,KAAAI;CAAA,IAAAE;CAEgB,OAFhBN,EAAA,OAAAD,KAAAC,EAAA,OAAAI,KALHE,IAAA,kBAAC,GAAD;EAAgB,GACVP;EACY,gBAAAK;EAIXR,KAAAA;CAAK,CAAA,GACOI,EAAA,KAAAD,GAAAC,EAAA,KAAAI,GAAAJ,EAAA,KAAAM,KAAAA,IAAAN,EAAA,IAPnBM;AAOmB,GCRVK,MAAqBC,MAAA;CAAA,IAAAC,IAAAC,EAAA,EAAA,GAChC,EAAAC,YAAiBH,GACjB,EAAAI,kBAAAC,eAAAC,WAAAC,qBAAAC,cAAyFL,GACzF,CAAAM,GAAAC,KAA4Bd,EAAkB,EAAK,GAAEe;CAAA,AAAAV,EAAA,OAAAO,KAAAP,EAAA,OAAAK,KAAAL,EAAA,OAAAM,KACpCI,KAAAC,MAAA;EACfL,GAAiBM,MAAA;;GACf,IAAAC,IAAgB,CAAA,GAAID,CAAG,GACvBE,IAAAA,KAAAA,SAAAA,IAAoBP,EAAMQ,aAAAA,OAAAA,KAAAA,IAAAA,EAAeC,KAACC,MAAAA,KAAAA,OAAAA,KAAAA,IAAQA,EAAKZ,EAAO;GAC9D,IAAIM,GAAQ;IACV,IAAAO,IAAAA,KAAAA,OAAAA,KAAAA,IAAkBN,EAAGM,WAAYC,OAAAA,KAAAA,OAAAA,KAAAA,IAAQF,EAAKZ,QAAAA,KAAAA,OAAAA,KAAAA,IAAWE,EAASF,GAAO,GACzEe,KAAAA,KAAAA,OAAAA,KAAAA,IAAmBR,EAAGS,QAASC,MAAAA,KAAAA,OAAAA,KAAAA,IAAQR,EAAWS,SAAAA,KAAAA,OAAAA,KAAAA,IAAWN,EAAKZ,EAAO,CAAO,MAA7D,CAAA;IAGlB,QAFD,KAAA,OAAA,KAAA,IAAIe,EAAUI,WAAY,KACxBX,EAAOY,OAAQP,IAAY,GAAG,GAAC,IAAA,KAAA,OAAA,KAAA,IAAMX,EAAMQ,aAAN,CAAA,CAAuB,GAEvD,CAAA,GAAIF,CAAO;GAAC;GACpB,OAAA,KAAA,OAAA,KAAA,IAEMD,EAAGS,QAASK,MAAQ,EAAA,KAAA,QAACZ,EAAWS,SAAAA,KAAAA,OAAAA,KAAAA,IAAWN,EAAKZ,EAAO,EAAC;EAAC,CACjE;CAAC,GACHL,EAAA,KAAAO,GAAAP,EAAA,KAAAK,GAAAL,EAAA,KAAAM,GAAAN,EAAA,KAAAU,KAAAA,IAAAV,EAAA;CAfD,IAAA2B,IAAiBjB,GAefkB;CAAA,AAAA5B,EAAA,OAAAI,KAAAJ,EAAA,OAAA2B,KAAA3B,EAAA,OAAAO,KAAAP,EAAA,OAAAK,KACQuB,UAAA;EACR,AAAA,KAAA,QAAIxB,EAAUmB,SAAAA,KAAAA,OAAAA,KAAAA,IAAWhB,EAASF,EAAO,MACvCI,EAAU,EAAI,GACdkB,EAAS,EAAI;CACd,GACF3B,EAAA,KAAAI,GAAAJ,EAAA,KAAA2B,GAAA3B,EAAA,KAAAO,GAAAP,EAAA,KAAAK,GAAAL,EAAA,KAAA4B,KAAAA,IAAA5B,EAAA;CAAG,IAAA6B,IAAAA,KAAAA,OAAAA,KAAAA,IAAA3B,EAAIK,QAAQuB;CALhBpC,AAKgBM,EAAA,OAAA6B,IAACC,IAAA9B,EAAA,OAAd8B,IAAA,CAACD,CAAY,GAAC7B,EAAA,KAAA6B,GAAA7B,EAAA,MAAA8B,IALjBpC,EAAUkC,GAKPE,CAAc;CAAC,IAAAC;CAAA,AAAA/B,EAAA,QAAAQ,KAAAR,EAAA,QAAA2B,KAAA3B,EAAA,QAAAO,KAAAP,EAAA,QAAAK,KAAAL,EAAA,QAAAG,KAGI4B,UAAA;EAQpBJ,AAPAxB,GAAc6B,MACZ,KAAA,QAAIA,EAAaT,SAAAA,KAAAA,OAAAA,KAAAA,IAAWhB,EAASF,EAAO,IAAC,KAAA,OAAA,KAAA,IACpC2B,EAAaX,QAASY,MAAQhB,MAAAA,KAAAA,OAAAA,KAAAA,IAAMV,EAASF,GAAO,IAEtD,CAAA,GAAI2B,GAAAA,KAAAA,OAAAA,KAAAA,IAAezB,EAASF,EAAO,CAC3C,GACDI,EAAU,CAACD,CAAM,GACjBmB,EAAS,CAACnB,CAAM;CAAC,GAClBR,EAAA,MAAAQ,GAAAR,EAAA,MAAA2B,GAAA3B,EAAA,MAAAO,GAAAP,EAAA,MAAAK,GAAAL,EAAA,MAAAG,GAAAH,EAAA,MAAA+B,KAAAA,IAAA/B,EAAA;CATD,IAAAkC,IAAsBH,GASpBI;CAcM,OAdNnC,EAAA,QAAAQ,KAAAR,EAAA,QAAAkC,KAAAlC,EAAA,SAAA,KAAA,OAAA,KAAA,IAAAO,EAAAQ,aAEAoB,IAAA,kBAAA,OAAA;EAAe,WAAA;EACZ5B,UAAAA,KAAAA,QAAAA,EAAMQ,WAAN,kBAAA,GAAA,EAAA,UAKK,EAHAP,IAGC,IAFA,GAED;GAA+B,WAAA;GAAoC0B,SAAAA;EAAa,CAAA,EACjF,CAAA,IAGH,kBAAA,OAAA,EAAY,OAAA,EAAAE,OAAS,GAAG,EAAC,CAAA;CAEvB,CAAA,GAAApC,EAAA,MAAAQ,GAAAR,EAAA,MAAAkC,GAAAlC,EAAA,MAAA,KAAA,OAAA,KAAA,IAAAO,EAAAQ,UAAAf,EAAA,MAAAmC,KAAAA,IAAAnC,EAAA,KAZNmC;AAYM;;;AC3BV,SAAgB0B,EAAeC,GAAO;CACpC,OAAyB,OAAOA,KAAU,cAAnCA;AACT;AACA,IAAMC,KAAYC,MAAS;;CACzB,OAAO,QAAA,KAAA,OAAA,KAAA,IAAOA,EAAMC,UAAS,aACzBJ,EAAAA,KAAAA,OAAAA,KAAAA,IAAeG,EAAMC,MAAM,CAAC,IAAA,KAAA,SAAA,IAC1BD,EAAMC,MAAM,MAAA,OAAA,KAAA,IAAA,EAAGC,MAAMC,WACrBC,OAAAA,KAAAA,OAAAA,KAAAA,IAAOJ,EAAMC,MAAM,CAAC,KAAK,KAC3BG,OAAAA,KAAAA,OAAAA,KAAAA,IAAOJ,EAAMC,KAAK,KAAK;AAC7B;AAEA,SAAgBI,GAAqBC,GAASC,IAAkB,IAAI;CAElE,IAAMC,KAAaC,MACVA,EAAKC,QAAQC,GAAKC,MAAQ;;EAI/B,QAHA,IAAIA,EAAIT,aAAAA,QAAAA,EAAUR,SACT,CAAC,GAAGgB,GAAK,GAAGH,EAAUI,EAAIT,QAAQ,CAAC,IAErC,CAAC,GAAGQ,GAAKC,CAAG;CACrB,GAAG,CAAA,CAAE,GAIDC,KAAYJ,GAAMK,IAAQ,MACvBL,EAAKC,QAAQK,GAAKH,MAAQ;;EAI/B,QAHA,IAAIA,EAAIT,aAAAA,QAAAA,EAAUR,SACTqB,KAAKD,IAAIA,GAAKF,EAASD,EAAIT,UAAUW,IAAQ,CAAC,CAAC,IAEjDE,KAAKD,IAAIA,GAAKD,CAAK;CAC5B,GAAGA,CAAK,GAGJG,IAAcT,EAAUF,CAAO,GAC/BY,IAAaL,EAASP,CAAO,GAC7Ba,IAAYF,EAAYtB,QAGxByB,KAAaX,GAAMK,IAAQ,MACxBL,EAAKY,KAAKT,MAAQ;;EAEvB,IAAI,IAAA,IADgBA,EAAIT,aAAAA,OAAAA,KAAAA,IAAAA,EAAUR,UAAS,IAEzC,OAAO;GACL,GAAGiB;GACHW,SAASL,IAAaJ;GACtBU,SAAS;GACTC,QAAQX;GACRY,SAAS;EACX;EAEF,IAAMC,IAAYnB,EAAUI,EAAIT,QAAQ,CAAC,CAACR;EAC1C,OAAO;GACL,GAAGiB;GACHW,SAAS;GACTC,SAASG;GACTF,QAAQX;GACRY,SAAS;GACTvB,UAAUiB,EAAUR,EAAIT,UAAUW,IAAQ,CAAC;EAC7C;CACF,CAAC,GAGGc,IAAOR,EAAUd,GAAS,CAAC,GAG3BuB,IAAYC,MAAMC,KAAK,EAAEpC,QAAQuB,EAAW,IAAIc,GAAGC,OAAO;EAC9DC,OAAO,UAAUD;EACjBE,QAAQ5B;EACR6B,OAAO,CAAA;CACT,EAAE,GAEIC,KAAcrC,MAAS;;EAQ3B,QAPA,IAAI,CAAC,gBAAgB,oBAAoB,MAAA,QAAA,EAAGsC,SAAAA,KAAAA,OAAAA,KAAAA,IAAStC,EAAMuC,IAAI,IAC7D,KAAA,OAAA,KAAA,IAAOvC,EAAMuC,OAGX1C,EAAe,QAAA,KAAA,OAAA,KAAA,IAAOG,EAAMC,UAAS,aAAA,KAAA,OAAA,KAAA,IAAaD,EAAMC,MAAM,IAAI,IAAI,IACjE,GAAA,KAAA,OAAA,KAAA,IAAGD,EAAMwC,cAEX;CACT,GAGMC,KAAWC,GAAOC,IAAW,MAAM;EACvCD,EAAME,SAASC,MAAS;GACtB,IAAIA,EAAKnB,SAAS;IAChB,IAAMoB,IAAO;KACX,GAAGD;KACHN,MAAMF,EAAWQ,CAAI;KACrBE,MAAMhD,EAAS8C,CAAI;KACnBL,WAAWK,EAAKL;KAChBQ,OAAOH,EAAKG;KACZzB,SAASsB,EAAKtB;KACd0B,OAAAA,KAAAA,QAAOJ,EAAMI,QAAAA,KAAAA,OAAAA,KAAAA,IACTJ,EAAMI,QACN;MACEC,YAAY;MACZC,SAAS;MACTC,gBAAgB;KAClB;IACN;IAGAvB,AAFIgB,EAAKQ,WAAQP,EAAKO,SAASR,EAAKQ,SAChCR,EAAKS,QAAKR,EAAKQ,MAAMT,EAAKS,MAC9BzB,EAAKc,EAAS,CAACP,MAAMmB,KAAKT,CAAI;GAChC,OAeE,AAbAjB,EAAKc,EAAS,CAACP,MAAMmB,KAAK;IACxB,GAAGV;IACHN,MAAMF,EAAWQ,CAAI;IACrBE,MAAMhD,EAAS8C,CAAI;IACnBrB,SAASqB,EAAKrB;IACdyB,OAAAA,KAAAA,QAAOJ,EAAMI,QAAAA,KAAAA,OAAAA,KAAAA,IACTJ,EAAMI,QACN;KACEC,YAAY;KACZC,SAAS;KACTC,gBAAgB;IAClB;GACN,CAAC,GACGP,EAAK1C,YACPsC,EAAQI,EAAK1C,UAAUwC,IAAW,CAAC;EAGzC,CAAC;CACH;CAKAd,AAHAY,EAAQb,GAAM,CAAC,GAGfC,EAAKe,SAASY,GAAKb,MAAa;EAC9B,IAAMc,IAAW,CAAA,GACbC,IAAW,GACXC,IAAY;EAEhB,OAAOD,IAAWvC,IAAW;GAC3B,IAAMyC,IAAcJ,EAAIpB,MAAMuB;GAE9B,IAAI,CAACC,GAAa;IAEhB,IAAMC,IAAO5C,EAAYyC;IAiBzBC,AAhBAF,EAASF,KAAK;KACZ,GAAGM;KACHtB,MAAMF,EAAWwB,CAAI;KACrBd,MAAMhD,EAAS8D,CAAI;KACnBrB,WAAWqB,EAAKrB;KAChBQ,OAAOa,EAAKb;KACZzB,SAASoB,MAAazB,IAAa,IAAI,IAAI4C,KAAAA;KAC3Cb,OAAAA,KAAAA,QAAOY,EAAMZ,QAAAA,KAAAA,OAAAA,KAAAA,IACTY,EAAMZ,QACN;MACEC,YAAY;MACZC,SAAS;MACTC,gBAAgB;KAClB;IACN,CAAC,GACDM,KACAC;IACA;GACF;GAEA,IAAMnC,IAAUoC,EAAYpC,WAAW;GAKvC,KAJgBoC,EAAYrC,WAAW,KAIzB,KAAKoB,IAAW,GAAG;IAG/BgB,AADAD,KAAYlC,GACZmC;IACA;GACF;GAKAA,AAFAF,EAASF,KAAKK,CAAW,GACzBF,KAAYlC,GACZmC;GAGA,KAAK,IAAI1B,IAAI,GAAGA,IAAIT,GAASS,KAC3BwB,EAASF,KAAK;IACZhB,MAAM;IACNQ,MAAM;GACR,CAAC;EAEL;EAEAS,EAAIpB,QAAQqB;CACd,CAAC;CAGD,IAAMM,IAAUlC,EAAKX,IAAa,IAC5B8C,IAAe,CAAA;CA6CrB,OAzCA/C,EAAY2B,SAASiB,GAAMK,MAAU;EAEnC,IAAMC,IAAeJ,EAAQ3B,MAAMgC,MAChCtB,MAASA,EAAKN,cAAcqB,EAAKrB,aAAaM,EAAKC,SAASc,EAAK5D,KACpE;EAEA,AAAIkE,IACFH,EAAaT,KAAKY,CAAY,IAG9BH,EAAaT,KAAK;GAChB,GAAGM;GACHtB,MAAMF,EAAWwB,CAAI;GACrBd,MAAMhD,EAAS8D,CAAI;GACnBrB,WAAWqB,EAAKrB;GAChBQ,OAAOa,EAAKb;GACZzB,SAAS;GACT0B,OAAAA,KAAAA,QAAOY,EAAMZ,QAAAA,KAAAA,OAAAA,KAAAA,IACTY,EAAMZ,QACN;IACEC,YAAY;IACZC,SAAS;IACTC,gBAAgB;GAClB;EACN,CAAC;CAEL,CAAC,GAEDW,EAAQ3B,QAAQ4B,GAGhBnC,EAAKe,SAASY,MAAQ;EAEpB,OAAOA,EAAIpB,MAAMzC,SAASwB,IACxBqC,EAAIpB,MAAMmB,KAAK;GACbhB,MAAM;GACNQ,MAAM;EACR,CAAC;CAEL,CAAC,GAEMlB;AACT;AAEA,SAAgBwC,GAAe/D,GAAgB;CAC7C,IAAMgE,IAAgB,CAAA;CAEtB,SAASC,EAAS9D,GAAM;EACtBA,EAAKmC,SAAShC,MAAQ;GACpB,IAAIA,EAAIT,YAAYS,EAAIT,SAASR,SAAS,GACxC4E,EAAS3D,EAAIT,QAAQ;QAChB;IAEL,IAAM,EAAEF,UAAOuC,cAAWc,QAAKN,UAAOK,WAAQmB,MAAG,GAAGC,MAAS7D;IAE7D0D,EAAOf,KAAK;KACVhB,MAAM;KACNC;KACAvC;KACA,GAAIqD,KAAO,EAAEA,OAAI;KACjB,GAAIN,KAAS,EAAEA,SAAM;KACrB,GAAIK,KAAU,EAAEA,UAAO;KACvB,GAAImB,KAAK,EAAEA,KAAE;KAEb,GAAGC;IACL,CAAC;GACH;EACF,CAAC;CACH;CAGA,OADAF,EAASjE,CAAO,GACTgE;AACT;;;ACnQA,SAAS+C,EAAcC,GAA2BC,GAAU;;CAC1D,IAAM,EACJvB,YACAC,eACAC,kBACAC,aACAE,oBAAiB,CAAC,GAClBC,iBACAC,qBAAkB,IAClBC,eAAY,IACZC,mBACAC,cACAC,UACAC,iBACAC,YAAS,MACTC,UACAC,YACAC,eAAW,IACXC,YACAC,aACEI,GAEE,CAACE,GAAYC,MAAiB1C,EAAc,CAAA,CAAE,GAC9C,CAAC2C,GAAMC,KAAW5C,EAAc,CAAA,CAAE,GAClC6C,IAAc9C,EAAY,CAAA,CAAE,GAE5B,CAAC+C,GAAcC,MAAmB/C,EAAc,CAAA,CAAE,GAClD,CAACgD,GAAiBC,MAAsBjD,EAAc,CAAA,CAAE,GACxD,CAACkD,GAAeC,KAAoBnD,EAAc,CAAA,CAAE,GACpD,CAACoD,GAAYC,MAAiBrD,EAAc,CAAA,CAAE,GAC9C,CAACsD,IAAsBC,MAA2BvD,EAAc,CAAA,CAAE,GAClE,CAACwD,IAAYC,KAAiBzD,EAAS,CAAA,CAAE,GACzC0D,IAAqB3D,EAAO,GAE5B4D,KAAU5D,EAAY,GACtB6D,IAAc7D,EAAY;CAEhCF,EAAoB2C,UACX,EACLG,QACF,EACD;CAED,IAAMkB,KAAoBC,GAAKC,IAAQ,MAAM;EAC3CD,KAAAA,QAAAA,EAAKE,SAASC,MAAO;GAEnB,AADAA,EAAGF,QAAQA,IAAQ,GACnB,KAAA,QAAIE,EAAIC,YACNL,EAAAA,KAAAA,OAAAA,KAAAA,IAAiBI,EAAIC,UAAUD,EAAGF,KAAK;EAE3C,CAAC;CACH;CAQAnE,AANAA,QAAgB;EAEduD,AADAU,EAAiB3C,CAAU,GAC3BiC,EAAiBjC,CAAU;CAC7B,GAAG,CAACA,CAAU,CAAC,GAGftB,QAAgB;EACd,IAAMuE,IAAcxB,EAAKyB,KAAKC,MAAMA,EAAEC,KAAK;EAC3C,AAAI,KAAA,QAACH,EAAaI,SAASb,EAAmBc,OAAO,KACnDf,EAAc,CAAA,CAAE;CAEpB,GAAG,CAACd,CAAI,CAAC;CAGT,IAAM8B,MAAoBC,MAAS;;EACjC,IAAMC,IAAAA,KAAAA,SAAAA,IAASD,EAAME,UAAAA,SAAAA,IAAAA,EAAQ,OAAA,OAAA,KAAA,IAAA,EAAID,QAC3BE,IAAY,CAAC,aAAa,cAAc,GACxCC,IAAW,EACfC,IAAAA,KAAAA,OAAAA,KAAAA,IAAIL,EAAMJ,MACZ;EAUA,OATAI,KAAAA,SAAAA,IAAAA,EAAME,UAAAA,QAAAA,EAAOZ,SAASC,MAAO;GAC3B,AAAA,KAAA,QAAIA,EAAIe,YAAY,EAAA,KAAA,QAACH,EAAWN,SAAAA,KAAAA,OAAAA,KAAAA,IAASN,EAAIe,QAAQ,OACnDF,EAAAA,KAAAA,OAAAA,KAAAA,IAAIb,EAAIe,aAAAA,KAAAA,OAAAA,KAAAA,IAAYf,EAAIgB,UAAAA,KAAAA,OAAAA,KAAAA,IAAQhB,EAAIiB,WAAAA,KAAAA,OAAAA,KAAAA,IAASjB,EAAIkB,kBAAiB,KAClE,KAAA,OAAA,KAAA,IAAIlB,EAAImB,SAAQ,aACdN,EAAAA,KAAAA,OAAAA,KAAAA,IAAIb,EAAIe,YAAAA,KAAAA,OAAAA,KAAAA,IAAYf,EAAIiB;EAG9B,CAAC,GAEM;GACL,GAAGP;GACH,GAAGG;EACL;CACF;CAEAlF,QAAgB;EACd,IAAIyF,MAAMC,QAAQrE,CAAO,MAAA,KAAA,OAAA,KAAA,IAAKA,EAASsE,UAAS,GAAG;GA0BjD7C,AAzBIT,MACFhB,EAAQuE,QAAQ;IACdJ,MAAM;IACNK,OAAO;IACPC,KAAK;IACLC,aAAa;IACbC,QAAAA,KAAAA,OAAAA,KAAAA,IAAO/D,EAAc+D,UAAS,EAC5BC,YAAY,2BACd;GACF,CAAC,GAEChE,KACFZ,EAAQuE,QAAQ;IACdJ,MAAM;IACNO,aAAa;IACbF,QAAAA,KAAAA,OAAAA,KAAAA,IAAO5D,EAAc4D,UAAS;IAC9BC,KAAK;IACLE,QAAAA,KAAAA,OAAAA,KAAAA,IAAO/D,EAAc+D,UAAS;KAC5BC,YAAY;KACZC,SAAS;KACTC,gBAAgB;IAClB;GACF,CAAC,GAGHrD,GAAc/B,GAAqBM,GAASO,CAAe,CAAC;GAC5D,IAAMwE,IAAapF,GAAeK,CAAO;GAEzC8B,GAAAA,KAAAA,OAAAA,KAAAA,IACEiD,EAAY5B,KAAKM,GAAMuB,OAAW;IAChC,GAAGvB;IACHM,WAAAA,KAAAA,OAAAA,KAAAA,IAAUN,EAAMwB,eAAAA,KAAAA,OAAAA,KAAAA,IAAaxB,EAAMgB,SAAAA,KAAAA,OAAAA,KAAAA,IAAOhB,EAAMyB,SAAQ;GAC1D,EAAE,CACJ;EACF;CACF,GAAG,CAAClF,GAASY,CAAY,CAAC;CAG1B,IAAMuE,IAAoB,CAAC,GACrBC,KAAgBvC,MAAQ;EAC5BA,KAAAA,QAAAA,EAAKE,SAASU,MAAS;GACrB,IAAI7D,EAAe,QAAA,KAAA,OAAA,KAAA,IAAO6D,EAAM4B,UAAS,aAAA,KAAA,OAAA,KAAA,IAAa5B,EAAM4B,MAAM,IAAI,IAAI,GAAG;IAC3E,IAAMC,IAAAA,KAAAA,OAAAA,KAAAA,IAAM7B,EAAM4B;IAClBF,EAAAA,KAAAA,OAAAA,KAAAA,IAAa1B,EAAMwB,aAAa1F,EAAa+F,CAAG;GAClD;GACA,AAAA,KAAA,QAAI7B,EAAMR,YACRmC,EAAAA,KAAAA,OAAAA,KAAAA,IAAa3B,EAAMR,QAAQ;EAE/B,CAAC;CACH;CAgEAtE,AA/DAA,QAAgB;EAEd2D,AADA8C,EAAapF,CAAO,GACpBsC,GAAwB6C,CAAY;CACtC,GAAG,CAACnF,CAAO,CAAC,GAGZrB,QAAgB;EACd,IAAM4G,IAAAA,KAAAA,OAAAA,KAAAA,IAAa1D,EAAcsB,KAAKH,MAAAA,KAAAA,OAAAA,KAAAA,IAAOA,EAAIe,QAAQ,GAEnDyB,IAAAA,KAAAA,OAAAA,KAAAA,IAAiBvD,EAAekB,KAAKM,GAAMuB,OACxC;GACL3B,OAAOI,EAAK5C;GACZ4E,QAAQjF;GACRmD,OAAAA,KAAAA,OAAAA,KAAAA,IAAO4B,EAAYpC,KAAKH,GAAI0C,MAAQ;;IAClC,IAAIC,IAAU,CAAC,GACTC,IAAc/D,EAAa6D,IAC3BG,IAAWpC,EAAKT,IAChBmB,KAAAA,IAAAA,KAAAA,OAAAA,KAAAA,IAAYyB,EAAazB,SAAAA,OAAQ,SAARA;IAE/B,IAAIjE,GACG;UAAA,IAAMuE,KAAOvE,GAChB,IAAIuE,KAAOzB,GAAI;MACb,IAAM8C,IAAK5F,EAAcuE;MACzBkB,IAAU;OACR3B,OAAAA,KAAAA,OAAAA,KAAAA,IAAM8B,EAAIC,iBAAAA,KAAAA,OAAAA,KAAAA,IAAeD,EAAIC,YAAYtC,CAAI;OAC7CQ,QAAAA,KAAAA,OAAAA,KAAAA,IAAO6B,EAAIC,iBAAAA,KAAAA,OAAAA,KAAAA,IAAeD,EAAIC,YAAYtC,CAAI;OAC9CkB,QAAAA,KAAAA,OAAAA,KAAAA,IACEmB,EAAIE,kBAAAA,KAAAA,OAAAA,KAAAA,IACJF,EAAIE,cAAAA,KAAAA,OAAAA,KAAAA,IAAcF,EAAIC,iBAAAA,KAAAA,OAAAA,KAAAA,IAAeD,EAAIC,YAAYtC,CAAI,MAAMA,CAAI;MACvE;KACF;;IAIJ,OAAO;KACL,GAAGmC;KACHlC,QAAQD;KACRJ,OAAOI,EAAK5C,OAAAA,KAAAA,OAAAA,KAAAA,IAAW+E,EAAazB;KAC9BA;KACNO,aAAAA,KAAAA,OAAAA,KAAAA,IAAakB,EAAalB;KAC1BV,MAAMiC,OAAOJ,KAAY,EAAE;KAC3B5B,OAAO4B;KACP3B,eAAe2B,KAAY;KAC3BlB,QAAAA,KAAAA,OAAAA,KAAAA,IACEiB,EAAazB,SAAQ,iBACjB;MAAEU,SAAS;MAAQC,gBAAgB;KAAS,IAC5C,CAAC;KACP,GAAM5D,KAASA,EAAMuC,GAAMuB,GAAOU,CAAG,KAAc,CAAC;KACpD,IAAA,KAAA,OAAA,KAAA,IAAKE,EAAaM,YAAAA,KAAAA,OAAAA,KAAAA,IAAUN,EAAaM,OAAOzC,GAAMuB,GAAOU,CAAG,MAAM,CAAC;KACvE,IAAA,KAAA,OAAA,KAAA,IAAIE,EAAaO,cAAa,CAAC;KAC/BjE;KACAE;KACAvB;KACAsB;KACAxB;KACA,GAAGgF;IACL;GACF,CAAC;EACH,EACD,GACKS,IAAa,CAAC,GAAG5E,GAAY,GAAGgE,CAAc;EACpD7D,EAAQyE,CAAU;CACpB,GAAG;EAACnE;EAAeJ;EAAcL;CAAU,CAAC,GAC5C7C,QAAgB;EACd,IAAIoC,GAAS;;GACX,IAAM0C,IAAAA,KAAAA,OAAAA,KAAAA,IAAO/B,EAAM2E,MAAMrD,MAAOA;;IAAIK,QAAAA,KAAAA,OAAAA,KAAAA,IAAAA,EAAAA,YAAAA,IAASV,EAAYY,YAAAA,OAAAA,KAAAA,IAAAA,EAASF;GAAAA,CAAK;GAGvEzB,AAFc6B,KAAAA,SAAAA,IAAAA,EAAME,UAAAA,QAAAA,EAAO0C,MAAMP,MAAOA;;IAAI/B,QAAAA,KAAAA,OAAAA,KAAAA,IAAAA,EAAAA,eAAAA,IAAYpB,EAAYY,YAAAA,OAAAA,KAAAA,IAAAA,EAASQ;GAAAA,CAAQ,GAC3E,EAAE,GAAGpB,EAAYY,QAAQ,GACnC3B,EAAY2B,UAAU7B;EACxB;CACF,GAAG,CAACX,GAASW,CAAI,CAAC;CAElB,IAAM6E,KAAqB,OAAOC,MAAY;EAC5C,IAAMC,IAAkB,CAAA;EACxB,IAAI,CAACrC,MAAMC,QAAQmC,CAAO,KAAKA,EAAQlC,WAAW,GAAG;EAErD,IAAIoC,IAAgB;EA0CpB,KAzCA,KAAA,OAAA,KAAA,IAAIF,EAASlC,UAAS,MACpBoC,IAAgB,KAGlB/E,GAASgF,OACPH,EAAQzD,QAAQ,OAAO6D,MAAW;GAChC,IAAMC,IAAeF,EAASG,WAAW9D,MAAOA,EAAGK,SAASuD,EAAOvD,KAAK,GAClE0D,IAAkBlF,EAAaiF,WAAW9D,MAAOA,EAAGe,YAAY6C,EAAO7C,QAAQ;GAIrF,IAHA4C,EAASE,EAAa,CAAClD,MAAMoD,KAAmB,EAAE,GAAGH,EAAOjB,QAAQ,GACpEhD,EAAYY,UAAU,EAAE,GAAGqD,EAAOjB,QAAQ,GAC1Cc,EAAWO,KAAKxD,GAAiBmD,EAASE,EAAa,CAAC,GACpD3G,GACF,KAAK,IAAMuE,KAAOvE,GAAe;IAC/B,IAAMuD,IAAOvD,EAAcuE,IACrBwC,IAAkBpF,EAAaiF,WAAW9D,MAAOA,EAAGe,YAAYU,CAAG,GACnEkB,IAAU;KACd,GAAGgB,EAASE,EAAa,CAAClD,MAAMsD;KAChCjD,OAAAA,KAAAA,OAAAA,KAAAA,IAAMP,EAAMsC,iBAAAA,KAAAA,OAAAA,KAAAA,IAAetC,EAAMsC,YAAYY,EAASE,EAAa;KACnE5C,QAAAA,KAAAA,OAAAA,KAAAA,IAAOR,EAAMsC,iBAAAA,KAAAA,OAAAA,KAAAA,IAAetC,EAAMsC,YAAYY,EAASE,EAAa;KACpElC,QAAAA,KAAAA,OAAAA,KAAAA,IACElB,EAAMuC,kBAAAA,KAAAA,OAAAA,KAAAA,IACNvC,EAAMuC,cAAAA,KAAAA,OAAAA,KAAAA,IACHvC,EAAMsC,iBAAAA,KAAAA,OAAAA,KAAAA,IAAetC,EAAMsC,YAAYY,EAASE,EAAa,MAC5DF,EAASE,EACb;IACJ;IACAF,EAASE,EAAa,CAAClD,MAAMsD,KAAmBtB;GAClD;GAEF,IAAIrF,KAAgB,CAACoG,GACnB,IAAI;IACF,MAAMpG,EAAamG,CAAU;GAC/B,SAASS,GAAK;IACZjG,KAAWA,EAAQ;GACrB;GAEFd,KAAYA,EAASwG,EAASE,EAAa;EAC7C,CAAC,GACM,CAAC,GAAGF,CAAQ,EACpB,GAEGD,GACF,IAAI;GACFpG,KAAiB,MAAMA,EAAamG,CAAU;EAChD,SAASS,GAAK;GACZjG,KAAWA,EAAQ;EACrB;CAEJ,GAGMkG,IAAetI,QAAc;EACjC,IAAMuI,IAAqB;GACzB,GAAI/H,KAAkB,CAAC;GACvB,GAAIC,KAAoB,CAAC;GACzB,GAAGO;EACL,GACMwH,IAAwB,CAAC;EAC/B,KAAK,IAAM5C,KAAO2C,GAIhBC,EAAiB5C,KAAOlF,GAHRgI,MACP,kBAAC,GAAD;GAAiB,GAAIA;GAAa,GAAIjG;GAAO,KAAK8F,EAAc3C;EAAK,CAAA,CAEnC;EAE7C,OAAO4C;CACT,GAAG,CAAChI,GAAgBC,CAAgB,CAAC,GAE/BkI,MAAalG,MAAU;EAC3B,IAAMmG,IAAAA,KAAAA,OAAAA,KAAAA,IAAU/F,EAAM2E,MAAMrD,MAAOA;;GAAIK,QAAAA,KAAAA,OAAAA,KAAAA,IAAAA,EAAAA,WAAAA,KAAAA,SAAAA,IAAS/B,EAAOoG,SAAAA,OAAAA,KAAAA,IAAAA,EAAMrE;EAAAA,CAAK;EAClE,OACE,kBAAC,OAAD;GAAK,gBAAgBsE,MAAMA,EAAEC,gBAAgB;GAA7C,UAAA;KACGjH,KAAAA,OAAAA,KAAAA,IAAAA,EAAOkH,qBAAoB,kBAAC,EAAM,kBAAP;KAAwB,GAAA,KAAA,OAAA,KAAA,IAAIvG,EAAOoG;KAAeD;IAAQ,CAAA;KACrF9G,KAAAA,OAAAA,KAAAA,IAAAA,EAAOmH,qBAAoB,kBAAC,EAAM,kBAAP;KAAwB,GAAA,KAAA,OAAA,KAAA,IAAIxG,EAAOoG;KAAeD;IAAQ,CAAA;KACrF9G,KAAAA,OAAAA,KAAAA,IAAAA,EAAOoH,qBAAoB,kBAAC,EAAM,kBAAP;KAAwB,GAAA,KAAA,OAAA,KAAA,IAAIzG,EAAOoG;KAAeD;IAAQ,CAAA;KACrF9G,KAAAA,OAAAA,KAAAA,IAAAA,EAAOqH,qBAAoB,kBAAC,EAAM,kBAAP;KAAwB,GAAA,KAAA,OAAA,KAAA,IAAI1G,EAAOoG;KAAeD;IAAQ,CAAA;GACnF;;CAET;CACA,SAASQ,EAAkBpF,GAAU;EACnC,IAAMqF,IAAc,CAAA;EACpB,SAASC,EAAKC,GAAW;GACvB,KAAK,IAAM3E,KAAQ2E,GAEjB,AADAF,EAAOlB,KAAKvD,CAAI,GACZA,EAAKR,YAAYQ,EAAKR,SAASqB,UACjC6D,EAAK1E,EAAKR,QAAQ;EAGxB;EAEA,OADAkF,EAAKtF,CAAG,GACDqF;CACT;CACA,IAAMG,MAAe/G,MAAU;;EAC7B,IAAM,EAAEoC,QAAAA,GAAQL,aAAAA,KAAAA,OAAAA,KAAAA,IAAU/B,EAAOoG,MAE3BzF,KAAAA,IAAgBgG,EAAkBhI,CAAU,MAAA,OAAA,KAAA,IAAA,EAAGqI,QAClD7E,MAAS;;GAAC7C,OAAAA,EAAAA,KAAAA,SAAAA,IAAAA,EAAc2H,qBAAAA,SAAAA,IAAAA,EAAAA,KAAAA,GAAmB9E,CAAI,MAAA,QAAA,EAAG+E;EAAAA,CACrD,GAEMC,IACJ,QAAA,KAAA,OAAA,KAAA,IAAO7H,EAAc2H,qBAAqB,aAAA,KAAA,SAAA,IACtC3H,EAAc2H,qBAAAA,OAAAA,KAAAA,IAAAA,EAAAA,KAAAA,GAAmB7E,CAAM,IACvC,CAAC;EACP,OACE,kBAAC,GAAD;GACE,GAAA,KAAA,OAAA,KAAA,IAAIpC,EAAOoH;GACX,UAAA,KAAA,SAAA,IACE9H,EAAcmB,oBAAAA,OAAAA,KAAAA,IAAAA,EAAiBuB,SAAUI,KAAUA,EAAO7C,MAAY,EAAE,MACvE,CAACwC,MAAAA,KAAAA,SAAAA,IACAzC,EAAcmB,oBAAAA,OAAAA,KAAAA,IAAAA,EAAiBuC,YAAAA,KAAAA,OAAAA,KAAAA,IAAUrC,EAAeqC,YAAAA,KAAAA,OAAAA,KAAAA,IACxDrC,EAAeqC,UAAS;GAE5B,eACE,CAACjB,MAAAA,KAAAA,SAAAA,IACDzC,EAAcmB,oBAAAA,OAAAA,KAAAA,IAAAA,EAAiBuC,UAAS,MAAA,KAAA,SAAA,IACxC1D,EAAcmB,oBAAAA,OAAAA,KAAAA,IAAAA,EAAiBuC,WAAAA,KAAAA,OAAAA,KAAAA,IAASrC,EAAeqC;GAEzD,WAAWqD,MAAM;IACf,IAAIA,EAAEgB,OAAOC,WAAWvF,GAAO;KAC7B,IAAMwF,IAAqB,CAAC,GAAA,KAAA,OAAA,KAAA,IAAGjI,EAAcmB,iBAAiB2B,EAAO7C,EAAO,GACtEa,IAAAA,KAAAA,OAAAA,KAAAA,IAAOO,EAAeqG,QAAQtF,MAAAA,KAAAA,OAAAA,KAAAA,IAAO6F,EAAoBvF,SAASN,EAAGnC,EAAO,CAAC;KAEnFD,KAAAA,QAAAA,EAAcT,SAAS0I,GAAoBnH,CAAI;IACjD,OAAO,IAAI,CAACiG,EAAEgB,OAAOC,WAAWvF,GAAO;;KACrC,IAAMwF,IAAAA,KAAAA,SAAAA,IAAqBjI,EAAcmB,oBAAAA,OAAAA,KAAAA,IAAAA,EAAiBuG,QACvDtF,MAAOA,KAAMU,EAAO7C,EACvB,GACMa,IAAAA,KAAAA,OAAAA,KAAAA,IAAOO,EAAeqG,QAAQtF,MAAAA,KAAAA,OAAAA,KAAAA,IAAO6F,EAAoBvF,SAASN,EAAGnC,EAAO,CAAC;KAEnFD,KAAAA,QAAAA,EAAcT,SAAAA,KAAAA,SAAAA,IACZS,EAAcmB,oBAAAA,OAAAA,KAAAA,IAAAA,EAAiBuG,QAAQtF,MAAOA,KAAMU,EAAO7C,EAAO,GAClEa,CACF;IACF,OAAO,IAAIiG,EAAEgB,OAAOC,WAAW,CAACvF,GAAO;KACrC,IAAMwF,IAAAA,KAAAA,OAAAA,KAAAA,IAAqB5G,EAAekB,KAAKH,MAAOA,EAAGnC,EAAO,GAC1Da,IAAAA,KAAAA,OAAAA,KAAAA,IAAOO,EAAeqG,QAAQtF,MAAAA,KAAAA,OAAAA,KAAAA,IAAO6F,EAAoBvF,SAASN,EAAGnC,EAAO,CAAC;KAEnFD,KAAAA,QAAAA,EAAcT,SAAAA,KAAAA,OAAAA,KAAAA,IACZ8B,EAAekB,KAAKH,MAAOA,EAAGnC,EAAO,GACrCa,CACF;IACF,OAAO,AAAI,CAACiG,EAAEgB,OAAOC,WAAW,CAACvF,MAC/BzC,KAAAA,QAAAA,EAAcT,SAAS,CAAA,GAAI,CAAA,CAAE;GAEjC;GACA,GAAIsI;EACK,CAAA;CAEf;CAUA9J,AATAA,QAAgB;EACd,IAAIiC,GAAc;;GAChB,IAAMqB,KAAAA,IAAgBgG,EAAkBhI,CAAU,MAAA,OAAA,KAAA,IAAA,EAAGqI,QAClD7E,MAAS;;IAAC7C,OAAAA,EAAAA,KAAAA,SAAAA,IAAAA,EAAc2H,qBAAAA,SAAAA,IAAAA,EAAAA,KAAAA,GAAmB9E,CAAI,MAAA,QAAA,EAAG+E;GAAAA,CACrD,GACM9G,IAAAA,KAAAA,OAAAA,KAAAA,IAAOO,EAAeqG,QAAQtF,MAAAA,KAAAA,OAAAA,KAAAA,IAAOjB,EAAiBuB,SAASN,EAAGnC,EAAO,CAAC;GAChFD,KAAAA,QAAAA,EAAcT,SAAS4B,GAAiBL,CAAI;EAC9C;CACF,GAAG,CAACK,GAAiB9B,CAAU,CAAC,GAChCtB,QAAgB;EACdqD,GAAmB,CAAA,CAAE;CACvB,GAAG,CAAA,KAAA,OAAA,KAAA,IAAClB,EAAOgI,OAAO,CAAC;CAEnB,IAAMC,KAAsBlK,QAAc;EACxC,IAAMmK,IAAoB,CAAC;EAC3B,KAAK,IAAMvE,KAAAA,KAAAA,OAAAA,KAAAA,IAAOpE,EAAgB0I,qBAEhCC,EAAavE,KAAOlF,EADdkE,KAAAA,OAAAA,KAAAA,IAAOpD,EAAgB0I,oBAAoBtE,EACZ;EAEvC,OAAOuE;CACT,GAAG,CAAA,KAAA,OAAA,KAAA,IAAC3I,EAAgB0I,mBAAmB,CAAC,GAGlCE,MAAevB,GAAWhG,MAAc;;EAC5C,IAAM0G,IAAAA,KAAAA,SAAAA,IAAO1G,EACT2E,MAAMrD,OAAAA,KAAAA,OAAAA,KAAAA,IAAOA,EAAIK,WAAAA,KAAAA,OAAAA,KAAAA,IAASqE,EAAMrE,MAAK,MAAA,SAAA,IAAA,EACrCM,UAAAA,OAAAA,KAAAA,IAAAA,EAAOR,KAAKM,OAAU;GACtBM,UAAAA,KAAAA,OAAAA,KAAAA,IAAUN,EAAMM;GAChBV,OAAAA,KAAAA,OAAAA,KAAAA,IAAOqE,EAAMrE;GACb3C,WAAW;GACXwI,aAAa;EACf,EAAE;EAEJ1G,AADAC,EAAmBc,UAAAA,KAAAA,OAAAA,KAAAA,IAAUmE,EAAMrE,OACnCb,EAAc4F,CAAI;CACpB;CAEA,OACE,kBAAC,GAAD;EAAM,UAAUrH;EACd,UAAA,kBAAC,OAAD;GAAK,WAAW,kBAAkBL;GAAa,OAAOD;GAAtD,UAAA,CACE,kBAAC,GAAD;IACE,KAAKiC;IACL,MAAM3B,IAAUa,EAAY2B,UAAU7B;IAEtC,SAASG;IACT,gBAAgB0E;IAChB,kBAAkB;IAClB,sBAAsB;IACtB,4BAA4B;IAC5B,GAAIlG;IACJ,aAAA,IAAA,KAAA,OAAA,KAAA,IAAYA,EAAgBkC,eAAAA,OAAcA,KAAdA;IAC5B,0BAA0BmF,MAAc;;KACtC,IAAMyB,KAAAA,KAAAA,OAAAA,KAAAA,IAAazB,EAAM3D,aAAAA,KAAAA,OAAAA,KAAAA,IAAW2D,EAAMrE;KAe1C,OAdA,OAAgBgG,aAAaF,GACzB,QAAA,KAAA,OAAA,KAAA,IAAOzB,EAAMrE,UAAS,aAAA,KAAA,SAAA,IAAYqE,EAAMrE,UAAAA,OAAAA,KAAAA,IAAAA,EAAOiG,QAAQ,SAAS,KAAI,OAGxE,KAAA,QAAIjJ,EAAgBkJ,mBAAAA,KAAAA,QAAmB7B,EAAM3D,YAC3CkF,GAAYvB,GAAMhG,CAAI,IAExB,IAAI;MAAC;MAAa;MAAgB;KAAoB,MAAA,QAAA,EAAG4B,SAAAA,KAAAA,OAAAA,KAAAA,IAASoE,EAAM3D,QAAQ,KACvE,KAET,KAAA,QAAI1D,EAAgBmJ,0BAClB,KAAA,OAAA,KAAA,IAAOnJ,EAAgBmJ,wBAAwB9B,GAAMhG,CAAI,IAGpDgG;IACT;IACA,qBAAqB;KACnBjI,oBAAoBF,EAAaE,EAAkB;KACnD,GAAG0H;KACH,GAAG4B;KACH,GAAG1G;KACHoH,WAAWlK,EAAaiI,EAAS;KACjC5G,cAAcrB,EAAa8I,EAAW;KAEtCqB,QAAQnK,EAAaC,IAAgB8B,CAAK;IAC5C;GAAE,IAAA,KAAA,OAAA,KAAA,IAnCGrB,EAAYqE,WAAU,IAAI,IAAI,CAmCjC,IAAA,KAAA,OAAA,KAAA,IAEHrE,EAAYqE,WAAU,KACrB,kBAAC,OAAD;IAAK,WAAU;IACb,UAAA,kBAAC,GAAD,EAAO,OAAOrF,EAAM0K,uBAAuB,CAAA;GACxC,CAAA,CAEJ;;CACD,CAAA;AAEV;AAEA,IAAA,IAAejL,EAAW2C,CAAa"}
1
+ {"version":3,"file":"index.js","names":["DatePicker","Input","TimePicker","childAntdComponent","MonthPicker","QuarterPicker","RangePicker","WeekPicker","YearPicker","Password","Search","TextArea","isTriggerBlur","useEffect","useMemo","useRef","useState","Cell","CellTemplate","Compatible","Uncertain","UncertainCompatible","getCellProperty","getCharFromKey","isAlphaNumericKey","isNavigationKey","keyCodes","InfoCircleOutlined","Popover","isTriggerBlur","OptionType","label","value","isDisabled","BaseCell","selectedValue","values","DIProps","onCellChanged","args","cell","Record","isInEditMode","WidthWrapHoc","WrapComponent","props","createBaseCellTemplate","getCompatibleCell","uncertainCell","parseFloat","NaN","text","update","cellToMerge","selectedValueFromText","some","val","undefined","getClassName","handleCompositionEnd","eventData","enableEditMode","render","commit","React","ReactNode","edit","setEdit","open","setOpen","datatypeId","columnId","rowId","comValue","setComValue","isValidator","setIsValidator","comValueInit","openTimerRef","current","onClick","e","window","gridEditId","document","addEventListener","removeEventListener","onValidator","flag","isVerify","it","validatorList","pattern","test","Array","isArray","length","timer","setTimeout","popup","querySelector","stopPointer","PointerEvent","stopPropagation","clearTimeout","onBlurSubmit","targetValue","dataPickerProps","includes","type","onOpenChange","isOpen","uploadEdit","nonEditable","style","width","display","alignItems","options","onChange","target","onBlur","onPointerDown","onKeyDown","keyCode","getField","validatorMessage","useMemo","getVal","GetBaseTemplate","props","pattern","cell","componentProps","Com","cellRender","echoValue","getField","enum","values","name","text","Slot","input","focus","Input","GetBaseTemplate","NumberCellTemplate","props","$","_c","t0","componentProps","t1","type","t2","useEffect","useState","MinusCircleOutlined","PlusCircleOutlined","ExpandListTemplate","props","$","_c","cell","setExpandKeys","expandKeys","rowKey","setNewDataSource","record","expand","setExpand","t0","isExpand","pre","tempPre","childrenIds","children","map","el","findIndex","el_0","filterList","filter","el_1","includes","length","splice","el_2","onExpand","t1","t2","t3","t4","preExpandKeys","el_3","onClickExpand","t5","width","getNavigatorLanguage","navigator","language","getLocaleSeparators","locale","testNumber","localeFormattedNumber","Intl","NumberFormat","format","thousandsSeparator","split","decimalSeparator","parseLocaleNumber","stringNumber","trim","NaN","normalizedStringNumber","replace","numberString","RegExp","trimmedNumberString","length","Number","isReactElement","value","getTitle","item","title","props","children","String","convertColumnsToRows","columns","headerRowHeight","getLeaves","cols","reduce","acc","col","getDepth","depth","max","Math","leafColumns","totalDepth","totalCols","buildTree","map","hasChildren","rowspan","colspan","_depth","_isLeaf","leafCount","tree","rows","Array","from","_","i","rowId","height","cells","handleType","includes","type","dataIndex","fillRow","nodes","rowIndex","forEach","node","cell","text","width","style","background","display","justifyContent","sorter","key","push","row","newCells","colIndex","cellIndex","currentCell","leaf","undefined","lastRow","lastRowCells","leafIndex","index","existingCell","find","flattenColumns","result","traverse","k","rest","forwardRef","useEffect","useImperativeHandle","useMemo","useRef","useState","Checkbox","Empty","Spin","ReactGrid","TextTemplate","antdComponents","customComponents","WidthWrapHoc","NumberTemplate","ExpandListTemplate","convertColumnsToRows","flattenColumns","isReactElement","childAntdComponent","GetBaseTemplate","CellEditTableProps","columns","dataSource","formulaConfig","onChange","v","reactGridProps","onEditSubmit","headerRowHeight","rowHeight","reactGridStyle","className","Slots","rowSelection","rowKey","query","loading","isExpand","getList","onRow","ri","ci","CellEditTable","props","ref","headerList","setHeaderList","rows","setRows","initRowsRef","tableColumns","setTableColumns","selectedRowKeys","setSelectedRowKeys","newDataSource","setNewDataSource","expandKeys","setExpandKeys","headerCustomTemplate","setHeaderCustomTemplate","highlights","setHighlights","highlightsRowIdRef","gridRef","currentCell","handleDataSource","arr","level","forEach","el","children","validRowIds","map","r","rowId","includes","current","handleArrayToObj","item","record","cells","fieldList","obj","id","columnId","text","value","selectedValue","type","Array","isArray","length","unshift","width","key","nonEditable","style","background","display","justifyContent","newColumns","index","dataIndex","name","headTemplate","handleHeader","title","Com","columnsIds","tempDataSource","height","ind","newCell","columnsItem","cellItem","it","setCellData","setCellStyle","pattern","String","onCell","cellProps","mergerList","find","newItem","handleCellsChanged","changes","batchQuery","isBatchSubmit","prevRows","change","changeRowIdx","findIndex","changeColumnIdx","push","resultColumnIdx","err","baseTemplate","mergeTemplate","newMergeTemplate","NewCom","newComProps","ActionDom","rowData","cell","e","stopPropagation","tableActionsSlot","actionPrefixSlot","actionCenterSlot","actionSuffixSlot","flattenDataSource","result","loop","list","CheckBoxDom","filter","getCheckboxProps","disabled","checkboxProps","componentProps","target","checked","newSelectedRowKeys","pageNum","customCellTemplates","templatesObj","onHightsRow","borderColor","datatypeId","window","gridEditId","indexOf","isRowHighlights","onFocusLocationChanging","_$actions","Number","PRESENTED_IMAGE_SIMPLE"],"sources":["../src/common/childAntdComponent.ts","../src/common/WidthWrapHoc.tsx","../src/Template/GetBaseTemplate.tsx","../src/Template/NumberCellTemplate/index.tsx","../src/Template/ExpandListTemplate/index.tsx","../src/common/utils.ts","../src/index.tsx"],"sourcesContent":["import { DatePicker, Input, TimePicker } from \"antd\";\n\nexport const childAntdComponent: any = {\n \"DatePicker.MonthPicker\": DatePicker.MonthPicker,\n \"DatePicker.QuarterPicker\": DatePicker.QuarterPicker,\n \"DatePicker.RangePicker\": DatePicker.RangePicker,\n \"DatePicker.TimePicker\": DatePicker.TimePicker,\n \"DatePicker.WeekPicker\": DatePicker.WeekPicker,\n \"DatePicker.YearPicker\": DatePicker.YearPicker,\n \"Input.Password\": Input.Password,\n \"Input.Search\": Input.Search,\n \"Input.TextArea\": Input.TextArea,\n \"TimePicker.RangePicker\": TimePicker.RangePicker,\n};\nexport const isTriggerBlur = [\n \"DatePicker\",\n \"DatePicker.MonthPicker\",\n \"DatePicker.QuarterPicker\",\n \"DatePicker.RangePicker\",\n \"DatePicker.TimePicker\",\n \"DatePicker.WeekPicker\",\n \"DatePicker.YearPicker\",\n \"TimePicker.RangePicker\",\n];\n","import { useEffect, useMemo, useRef, useState } from \"react\";\n\nimport type {\n Cell,\n CellTemplate,\n Compatible,\n Uncertain,\n UncertainCompatible,\n} from \"@silevis/reactgrid\";\nimport {\n getCellProperty,\n getCharFromKey,\n isAlphaNumericKey,\n isNavigationKey,\n keyCodes,\n} from \"@silevis/reactgrid\";\nimport { InfoCircleOutlined } from \"@ant-design/icons\";\nimport { Popover } from \"antd\";\nimport { isTriggerBlur } from \"./childAntdComponent\";\nexport type OptionType = {\n label: string;\n value: string | number;\n isDisabled?: boolean;\n};\n\nexport interface BaseCell extends Cell {\n selectedValue?: string;\n value: string | number;\n values: OptionType[];\n isDisabled?: boolean;\n}\ninterface DIProps {\n onCellChanged: (...args: any[]) => void;\n cell: Record<string, any>;\n isInEditMode?: boolean;\n}\n\nexport const WidthWrapHoc = (WrapComponent: any, props = {}) => {\n class createBaseCellTemplate implements CellTemplate<BaseCell> {\n getCompatibleCell(uncertainCell: Uncertain<BaseCell>): Compatible<BaseCell> {\n let values: any;\n try {\n values = getCellProperty(uncertainCell, \"values\", \"object\");\n } catch {\n values = [];\n }\n const value = uncertainCell.selectedValue ? parseFloat(uncertainCell.selectedValue) : NaN;\n let isDisabled = true;\n try {\n isDisabled = getCellProperty(uncertainCell, \"isDisabled\", \"boolean\");\n } catch {\n isDisabled = false;\n }\n const selectedValue = uncertainCell.selectedValue;\n const text = selectedValue || \"\";\n return { ...uncertainCell, selectedValue, text, value, values, isDisabled };\n }\n\n update(\n cell: Compatible<BaseCell>,\n cellToMerge: UncertainCompatible<BaseCell>,\n ): Compatible<BaseCell> {\n const selectedValueFromText = cell.values.some((val: any) => val.value == cellToMerge.text)\n ? cellToMerge.text\n : cellToMerge?.text || undefined;\n\n return this.getCompatibleCell({\n ...cell,\n selectedValue: selectedValueFromText,\n });\n }\n\n getClassName(cell: Compatible<BaseCell>, isInEditMode: boolean): string {\n return \"\";\n }\n /** enableEditMode为true 时输入中文会报错 */\n handleCompositionEnd(\n cell: Compatible<BaseCell>,\n eventData: any,\n ): { cell: Compatible<BaseCell>; enableEditMode: boolean } {\n return {\n cell: {\n ...cell,\n },\n enableEditMode: false,\n };\n }\n /** render 不能抽出来组件,否则点击会失效 */\n render(\n cell: any,\n isInEditMode: boolean,\n onCellChanged: (cell: any, commit: boolean) => void,\n ): React.ReactNode {\n const [edit, setEdit] = useState<boolean>(false);\n const [open, setOpen] = useState<boolean>(false);\n const datatypeId = cell?.columnId + cell?.rowId;\n const [comValue, setComValue] = useState(cell?.text);\n const [isValidator, setIsValidator] = useState(false);\n const comValueInit = useRef<any>(cell?.text);\n const openTimerRef = useRef<any>();\n useEffect(() => {\n setComValue(cell?.text);\n comValueInit.current = cell?.text;\n }, [cell?.text]);\n\n useEffect(() => {\n // 处理下拉选项弹层失焦逻辑\n function onClick(e) {\n if ((window as any).gridEditId != datatypeId) {\n setEdit(false);\n }\n }\n document.addEventListener(\"click\", onClick);\n return () => {\n document.removeEventListener(\"click\", onClick);\n };\n }, []);\n\n /** 校验触发器 */\n const onValidator = (val) => {\n let flag = false;\n let isVerify = false;\n for (const it of cell?.validatorList || []) {\n if (it?.pattern?.test(val)) {\n flag = true;\n }\n break;\n }\n isVerify = !flag && Array.isArray(cell?.validatorList) && cell?.validatorList?.length > 0;\n setIsValidator(isVerify);\n };\n\n useEffect(() => {\n if (!open) return;\n // 等下一帧,弹窗DOM渲染完成\n const timer = setTimeout(() => {\n const popup: any = document.querySelector(\".ant-picker-dropdown\");\n if (!popup) return;\n\n const stopPointer = (e: PointerEvent) => {\n // 阻断事件往上冒泡到document\n e.stopPropagation();\n };\n // 捕获阶段监听 pointerdown!!必须是pointerdown不是mousedown\n popup.addEventListener(\"pointerdown\", stopPointer, true);\n\n // 清理函数\n return () => {\n popup.removeEventListener(\"pointerdown\", stopPointer, true);\n };\n }, 0);\n\n return () => clearTimeout(timer);\n }, [open]);\n\n /** 失焦提交 */\n const onBlurSubmit = () => {\n const targetValue = comValueInit.current;\n onCellChanged(\n this.getCompatibleCell({\n ...cell,\n text: targetValue,\n selectedValue: targetValue,\n }),\n true,\n );\n };\n\n const dataPickerProps = useMemo(() => {\n if (isTriggerBlur?.includes(cell?.type)) {\n return {\n open: open,\n /** 兼容datapicker 闪烁问题 */\n onOpenChange: (isOpen) => {\n if (openTimerRef.current) {\n clearTimeout(openTimerRef.current);\n }\n openTimerRef.current = setTimeout(() => {\n setOpen(isOpen);\n }, 80);\n },\n };\n }\n return {};\n }, [cell]);\n /** 监听上传组件失焦回调 */\n useEffect(() => {\n if (\n !edit &&\n cell.type == \"Upload\" &&\n (window as any).uploadEdit &&\n (window as any).uploadEdit == datatypeId\n ) {\n (window as any).uploadEdit = null;\n onBlurSubmit();\n }\n }, [edit, comValue]);\n\n return (\n <div\n className={`base-hoc ${edit ? \"base-hoc-edit\" : \"\"}`}\n onDoubleClick={(e) => {\n if (cell?.nonEditable) {\n return;\n }\n if (cell.type === \"Upload\") {\n (window as any).uploadEdit = datatypeId;\n }\n setEdit(true);\n }}\n >\n <WrapComponent\n {...props}\n onPointerDown={(e) => e.stopPropagation()}\n componentProps={{\n style: { width: \"100%\", display: \"flex\", alignItems: \"center\" },\n value: comValue,\n options: cell.values,\n onChange: (e) => {\n const targetValue = e?.target?.value ?? e;\n setComValue(targetValue);\n comValueInit.current = targetValue;\n onValidator(targetValue);\n },\n onBlur: (e) => {\n onBlurSubmit();\n if (!isTriggerBlur?.includes(cell?.type)) {\n setEdit(false);\n }\n },\n\n onPointerDown: (e) => {\n e.stopPropagation();\n },\n onKeyDown: (e) => {\n if (isAlphaNumericKey(e.keyCode) || isNavigationKey(e.keyCode)) e.stopPropagation();\n },\n ...dataPickerProps,\n ...((cell?.getField && cell?.getField()[\"x-component-props\"]) || {}),\n }}\n pattern={edit ? \"\" : \"readPretty\"}\n cell={cell}\n ></WrapComponent>\n {isValidator && (\n <Popover content={cell?.validatorMessage ?? \"该字段不合法\"}>\n <InfoCircleOutlined className=\"validator-icon\" />\n </Popover>\n )}\n </div>\n );\n }\n }\n\n return new createBaseCellTemplate();\n};\n","import { useMemo } from \"react\";\nimport { getVal } from \"@hzab/utils/src/formily/field\";\nexport const GetBaseTemplate = (props) => {\n const { pattern, cell, componentProps, Com, cellRender } = props;\n\n const echoValue = useMemo(() => {\n if (!cell?.getField) {\n return;\n }\n return getVal(\n { ...(cell?.getField && cell?.getField()), enum: cell?.getField()?.enum || cell?.values },\n { [cell?.getField && cell?.getField().name]: cell.text },\n );\n }, [cell]);\n if (cellRender && cellRender(props)) {\n const Slot = cellRender;\n return <Slot {...props}></Slot>;\n }\n\n return (\n <div className=\"base-hoc\">\n {pattern == \"readPretty\" ? (\n <div>{echoValue}</div>\n ) : (\n <Com\n className=\"rg-input\"\n ref={(input) => {\n if (input) {\n input.focus();\n }\n }}\n {...componentProps}\n />\n )}\n </div>\n );\n};\n","import { Input } from \"antd\";\nimport { GetBaseTemplate } from \"../GetBaseTemplate\";\nimport \"./index.less\";\nconst NumberCellTemplate = (props: any) => {\n return (\n <GetBaseTemplate\n {...props}\n componentProps={{\n ...props?.componentProps,\n type: \"number\",\n }}\n Com={Input}\n ></GetBaseTemplate>\n );\n};\nexport default NumberCellTemplate;\n","import { useEffect, useState } from \"react\";\nimport { MinusCircleOutlined, PlusCircleOutlined } from \"@ant-design/icons\";\nimport \"./index.less\";\n\nexport const ExpandListTemplate = (props) => {\n const { cell } = props;\n const { Slots, setExpandKeys, expandKeys, rowKey, setNewDataSource, record, columnId } = cell;\n const [expand, setExpand] = useState<boolean>(false);\n const onExpand = (isExpand) => {\n setNewDataSource((pre) => {\n const tempPre = [...pre];\n const childrenIds = record?.children?.map((el) => el?.[rowKey]);\n if (isExpand) {\n const findIndex = pre?.findIndex((el) => el?.[rowKey] == record?.[rowKey]);\n const filterList = pre?.filter((el) => childrenIds?.includes(el?.[rowKey])) || [];\n if (filterList?.length == 0) {\n tempPre.splice(findIndex + 1, 0, ...(record?.children || []));\n }\n return [...tempPre];\n }\n\n return pre?.filter((el) => !childrenIds?.includes(el?.[rowKey]));\n });\n };\n useEffect(() => {\n if (expandKeys?.includes(record?.[rowKey])) {\n setExpand(true);\n onExpand(true);\n }\n }, [cell?.record]);\n\n /** 展开关闭子项 */\n const onClickExpand = () => {\n setExpandKeys((preExpandKeys) => {\n if (preExpandKeys?.includes(record?.[rowKey])) {\n return preExpandKeys?.filter((el) => el != record?.[rowKey]);\n }\n return [...preExpandKeys, record?.[rowKey]];\n });\n setExpand(!expand);\n onExpand(!expand);\n };\n return (\n <div className=\"expandList-template\">\n {record?.children ? (\n <>\n {!expand ? (\n <PlusCircleOutlined className=\"expandList-template-icon\" onClick={onClickExpand} />\n ) : (\n <MinusCircleOutlined className=\"expandList-template-icon\" onClick={onClickExpand} />\n )}\n </>\n ) : (\n <div style={{ width: 14 }}></div>\n )}\n </div>\n );\n};\n","export const getNavigatorLanguage = (): string => navigator.language || \"en-US\";\n\nfunction getLocaleSeparators(locale: string) {\n const testNumber = 123456.789;\n const localeFormattedNumber = Intl.NumberFormat(locale).format(testNumber);\n\n // Get the thousands separator of the locale\n const thousandsSeparator = localeFormattedNumber.split(\"123\")[1][0];\n\n // Get the decimal separator of the locale\n const decimalSeparator = localeFormattedNumber.split(\"123\")[1][4];\n return { thousandsSeparator, decimalSeparator };\n}\nexport function parseLocaleNumber(stringNumber: string, locale = getNavigatorLanguage()): number {\n if (!stringNumber.trim()) return NaN;\n const { thousandsSeparator, decimalSeparator } = getLocaleSeparators(locale);\n const normalizedStringNumber = stringNumber.replace(/\\u00A0/g, \" \"); // Replace non-breaking space with normal space\n const numberString = normalizedStringNumber\n .replace(new RegExp(`[${thousandsSeparator}\\\\s]`, \"g\"), \"\") // Replace thousands separator and white-space\n .replace(new RegExp(`\\\\${decimalSeparator}`, \"g\"), \".\"); // Replace decimal separator\n\n const trimmedNumberString = numberString.replace(/^(?!-)\\D+|\\D+$/g, \"\"); // Remove characters before first and after last number, but keep negative sign\n if (trimmedNumberString === null || trimmedNumberString.trim().length === 0) {\n return NaN;\n }\n return Number(trimmedNumberString);\n}\n\nexport function isReactElement(value) {\n return value !== null && typeof value === \"object\";\n}\nconst getTitle = (item) => {\n return typeof item?.title == \"function\"\n ? isReactElement(item?.title())\n ? item?.title()?.props.children\n : String(item?.title()) || \"\"\n : String(item?.title) || \"\";\n};\n\nexport function convertColumnsToRows(columns, headerRowHeight = 40) {\n // 获取所有叶子节点\n const getLeaves = (cols) => {\n return cols.reduce((acc, col) => {\n if (col.children?.length) {\n return [...acc, ...getLeaves(col.children)];\n }\n return [...acc, col];\n }, []);\n };\n\n // 计算最大深度\n const getDepth = (cols, depth = 1) => {\n return cols.reduce((max, col) => {\n if (col.children?.length) {\n return Math.max(max, getDepth(col.children, depth + 1));\n }\n return Math.max(max, depth);\n }, depth);\n };\n\n const leafColumns = getLeaves(columns);\n const totalDepth = getDepth(columns);\n const totalCols = leafColumns.length;\n\n // 构建表头树\n const buildTree = (cols, depth = 0) => {\n return cols.map((col) => {\n const hasChildren = col.children?.length > 0;\n if (!hasChildren) {\n return {\n ...col,\n rowspan: totalDepth - depth,\n colspan: 1,\n _depth: depth,\n _isLeaf: true,\n };\n }\n const leafCount = getLeaves(col.children).length;\n return {\n ...col,\n rowspan: 1,\n colspan: leafCount,\n _depth: depth,\n _isLeaf: false,\n children: buildTree(col.children, depth + 1),\n };\n });\n };\n\n const tree = buildTree(columns, 0);\n\n // 初始化行\n const rows: any = Array.from({ length: totalDepth }, (_, i) => ({\n rowId: `header-${i}`,\n height: headerRowHeight,\n cells: [],\n }));\n\n const handleType = (item) => {\n if ([\"rowSelection\", \"ExpandListTemplate\"]?.includes(item?.type)) {\n return item?.type;\n }\n\n if (isReactElement(typeof item?.title == \"function\" ? item?.title() : null)) {\n return `${item?.dataIndex}`;\n }\n return \"header\";\n };\n\n // 递归填充行\n const fillRow = (nodes, rowIndex = 0) => {\n nodes.forEach((node) => {\n if (node._isLeaf) {\n const cell = {\n ...node,\n type: handleType(node),\n text: getTitle(node),\n dataIndex: node.dataIndex,\n width: node.width,\n rowspan: node.rowspan,\n style: node?.style\n ? node?.style\n : {\n background: \"rgba(128, 128, 128, 0.1)\",\n display: \"flex\",\n justifyContent: \"center\",\n },\n };\n if (node.sorter) cell.sorter = node.sorter;\n if (node.key) cell.key = node.key;\n rows[rowIndex].cells.push(cell);\n } else {\n // 父节点:添加colspan\n rows[rowIndex].cells.push({\n ...node,\n type: handleType(node),\n text: getTitle(node),\n colspan: node.colspan,\n style: node?.style\n ? node?.style\n : {\n background: \"rgba(128, 128, 128, 0.1)\",\n display: \"flex\",\n justifyContent: \"center\",\n },\n });\n if (node.children) {\n fillRow(node.children, rowIndex + 1);\n }\n }\n });\n };\n\n fillRow(tree, 0);\n\n // 补全每一行的cell,使长度一致\n rows.forEach((row, rowIndex) => {\n const newCells = [];\n let colIndex = 0;\n let cellIndex = 0;\n\n while (colIndex < totalCols) {\n const currentCell = row.cells[cellIndex];\n\n if (!currentCell) {\n // 如果当前行没有足够的cell,从叶子节点补充\n const leaf = leafColumns[colIndex];\n newCells.push({\n ...leaf,\n type: handleType(leaf),\n text: getTitle(leaf),\n dataIndex: leaf.dataIndex,\n width: leaf.width,\n rowspan: rowIndex === totalDepth - 1 ? 1 : undefined,\n style: leaf?.style\n ? leaf?.style\n : {\n background: \"rgba(128, 128, 128, 0.1)\",\n display: \"flex\",\n justifyContent: \"center\",\n },\n });\n colIndex++;\n cellIndex++;\n continue;\n }\n\n const colspan = currentCell.colspan || 1;\n const rowspan = currentCell.rowspan || 1;\n\n // 检查当前cell是否应该出现在这一行\n // 如果rowspan > 1,表示它跨多行,但只在第一行出现\n if (rowspan > 1 && rowIndex > 0) {\n // 这个cell不应该出现在当前行,跳过\n colIndex += colspan;\n cellIndex++;\n continue;\n }\n\n // 如果当前cell有colspan,需要补全后面的空cell\n newCells.push(currentCell);\n colIndex += colspan;\n cellIndex++;\n\n // 如果colspan > 1,后面补充空cell\n for (let i = 1; i < colspan; i++) {\n newCells.push({\n type: \"header\",\n text: \"\",\n });\n }\n }\n\n row.cells = newCells;\n });\n\n // 最后一行的特殊处理:确保所有叶子节点都有对应的cell\n const lastRow = rows[totalDepth - 1];\n const lastRowCells = [];\n const leafIndex = 0;\n\n // 遍历所有叶子节点\n leafColumns.forEach((leaf, index) => {\n // 检查是否已经在lastRow中有对应的cell\n const existingCell = lastRow.cells.find(\n (cell) => cell.dataIndex === leaf.dataIndex && cell.text === leaf.title,\n );\n\n if (existingCell) {\n lastRowCells.push(existingCell);\n } else {\n // 创建新的cell\n lastRowCells.push({\n ...leaf,\n type: handleType(leaf),\n text: getTitle(leaf),\n dataIndex: leaf.dataIndex,\n width: leaf.width,\n rowspan: 1,\n style: leaf?.style\n ? leaf?.style\n : {\n background: \"rgba(128, 128, 128, 0.1)\",\n display: \"flex\",\n justifyContent: \"center\",\n },\n });\n }\n });\n\n lastRow.cells = lastRowCells;\n\n // 确保所有行的cell数量等于totalCols\n rows.forEach((row) => {\n // 如果cell数量少于totalCols,补充空cell\n while (row.cells.length < totalCols) {\n row.cells.push({\n type: \"header\",\n text: \"\",\n });\n }\n });\n\n return rows;\n}\n\nexport function flattenColumns(columns: any[]) {\n const result: any[] = [];\n\n function traverse(cols) {\n cols.forEach((col) => {\n if (col.children && col.children.length > 0) {\n traverse(col.children);\n } else {\n // 创建新对象,只保留需要的属性\n const { title, dataIndex, key, width, sorter, k, ...rest } = col;\n\n result.push({\n type: \"Input\",\n dataIndex,\n title,\n ...(key && { key }),\n ...(width && { width }),\n ...(sorter && { sorter }),\n ...(k && { k }),\n // 如果需要保留其他属性\n ...rest,\n });\n }\n });\n }\n\n traverse(columns);\n return result;\n}\n","import { forwardRef, useEffect, useImperativeHandle, useMemo, useRef, useState } from \"react\";\nimport { Checkbox, Empty, Spin } from \"antd\";\nimport { ReactGrid } from \"@silevis/reactgrid\";\nimport TextTemplate from \"./Template/TextCellTemplate\";\nimport { antdComponents, customComponents } from \"@hzab/form-render\";\nimport { WidthWrapHoc } from \"./common/WidthWrapHoc\";\nimport NumberTemplate from \"./Template/NumberCellTemplate\";\nimport { ExpandListTemplate } from \"./Template/ExpandListTemplate\";\nimport { convertColumnsToRows, flattenColumns, isReactElement } from \"./common/utils\";\nimport { childAntdComponent } from \"./common/childAntdComponent\";\nimport { GetBaseTemplate } from \"./Template/GetBaseTemplate\";\nimport \"./index.less\";\nimport \"@silevis/reactgrid/styles.css\";\n\ninterface CellEditTableProps {\n columns: any[];\n dataSource: any[];\n formulaConfig?: any;\n onChange?: (v: any) => void;\n reactGridProps?: any;\n onEditSubmit?: (v: any) => void;\n headerRowHeight?: number;\n rowHeight?: number;\n reactGridStyle?: any;\n className?: string;\n Slots?: any;\n rowSelection?: any;\n rowKey?: string;\n query?: any;\n loading?: boolean;\n isExpand?: boolean;\n getList?: () => void;\n onRow?: (v: any, ri: number, ci: number) => void;\n}\n\nfunction CellEditTable(props: CellEditTableProps, ref: any) {\n const {\n columns,\n dataSource,\n formulaConfig,\n onChange,\n reactGridProps = {},\n onEditSubmit,\n headerRowHeight = 44,\n rowHeight = 44,\n reactGridStyle,\n className,\n Slots,\n rowSelection,\n rowKey = \"id\",\n query,\n loading,\n isExpand = false,\n getList,\n onRow,\n } = props;\n\n const [headerList, setHeaderList] = useState<any>([]);\n const [rows, setRows] = useState<any>([]);\n const initRowsRef = useRef<any>([]);\n /** 初始行数据 */\n const [tableColumns, setTableColumns] = useState<any>([]);\n const [selectedRowKeys, setSelectedRowKeys] = useState<any>([]);\n const [newDataSource, setNewDataSource] = useState<any>([]);\n const [expandKeys, setExpandKeys] = useState<any>([]);\n const [headerCustomTemplate, setHeaderCustomTemplate] = useState<any>([]);\n const [highlights, setHighlights] = useState([]);\n const highlightsRowIdRef = useRef();\n\n const gridRef = useRef<any>();\n const currentCell = useRef<any>();\n\n useImperativeHandle(ref, () => {\n return {\n rows,\n };\n });\n /** 递归处理子节点数据 */\n const handleDataSource = (arr, level = 0) => {\n arr?.forEach((el) => {\n el.level = level + 1;\n if (el?.children) {\n handleDataSource(el?.children, el.level);\n }\n });\n };\n /** 洗数据 */\n useEffect(() => {\n handleDataSource(dataSource);\n setNewDataSource(dataSource);\n }, [dataSource]);\n\n /** 判断当前选中行是否还存在 */\n useEffect(() => {\n const validRowIds = rows.map((r) => r.rowId);\n if (!validRowIds?.includes(highlightsRowIdRef.current)) {\n setHighlights([]);\n }\n }, [rows]);\n\n /**将数组转为对象 */\n const handleArrayToObj = (item) => {\n const record = item?.cells?.[0]?.record;\n const fieldList = [\"_$actions\", \"rowSelection\"];\n const obj: any = {\n id: item?.rowId,\n };\n item?.cells?.forEach((el) => {\n if (el?.columnId && !fieldList?.includes(el?.columnId)) {\n obj[el?.columnId] = el?.text || el?.value || el?.selectedValue || \"\";\n if (el?.type == \"Number\") {\n obj[el?.columnId] = el?.value;\n }\n }\n });\n\n return {\n ...record,\n ...obj,\n };\n };\n /** 表头 */\n useEffect(() => {\n if (Array.isArray(columns) && columns?.length > 0) {\n if (isExpand) {\n columns.unshift({\n type: \"ExpandListTemplate\",\n width: 14,\n key: \"ExpandListTemplate\",\n nonEditable: true,\n style: rowSelection?.style || {\n background: \"rgba(128, 128, 128, 0.1)\",\n },\n });\n }\n if (rowSelection) {\n columns.unshift({\n type: \"rowSelection\",\n nonEditable: true,\n width: rowSelection?.width || 30,\n key: \"rowSelection\",\n style: rowSelection?.style || {\n background: \"rgba(128, 128, 128, 0.1)\",\n display: \"flex\",\n justifyContent: \"center\",\n },\n });\n }\n\n setHeaderList(convertColumnsToRows(columns, headerRowHeight));\n const newColumns = flattenColumns(columns);\n\n setTableColumns(\n newColumns?.map((item, index) => ({\n ...item,\n columnId: item?.dataIndex || item?.key || item?.name || \"\",\n })),\n );\n }\n }, [columns, rowSelection]);\n\n /** 自定义表头 */\n const headTemplate: any = {};\n const handleHeader = (arr) => {\n arr?.forEach((item) => {\n if (isReactElement(typeof item?.title == \"function\" ? item?.title() : null)) {\n const Com = item?.title;\n headTemplate[item?.dataIndex] = WidthWrapHoc(Com);\n }\n if (item?.children) {\n handleHeader(item?.children);\n }\n });\n };\n useEffect(() => {\n handleHeader(columns);\n setHeaderCustomTemplate(headTemplate);\n }, [columns]);\n\n /** 数据行 */\n useEffect(() => {\n const columnsIds = tableColumns?.map((el) => el?.columnId);\n\n const tempDataSource = newDataSource?.map((item, index) => {\n return {\n rowId: item[rowKey],\n height: rowHeight,\n cells: columnsIds?.map((el, ind) => {\n let newCell = {};\n const columnsItem = tableColumns[ind];\n const cellItem = item[el];\n const type: any = columnsItem?.type ?? \"text\";\n //设置单元格颜色及回显\n if (formulaConfig) {\n for (const key in formulaConfig) {\n if (key == el) {\n const it = formulaConfig[key];\n newCell = {\n text: it?.setCellData && it?.setCellData(item),\n value: it?.setCellData && it?.setCellData(item),\n style:\n it?.setCellStyle &&\n it?.setCellStyle((it?.setCellData && it?.setCellData(item)) || item),\n };\n }\n }\n }\n\n return {\n ...columnsItem,\n record: item,\n rowId: item[rowKey] || columnsItem?.type,\n type: type,\n nonEditable: columnsItem?.pattern == \"readPretty\" ? true : columnsItem?.nonEditable,\n text: String(cellItem || \"\"),\n value: cellItem,\n selectedValue: cellItem || \"\",\n style:\n columnsItem?.type == \"rowSelection\"\n ? { display: \"flex\", justifyContent: \"center\" }\n : {},\n ...(((onRow && onRow(item, index, ind)) as any) || {}),\n ...((columnsItem?.onCell && columnsItem?.onCell(item, index, ind)) || {}),\n ...(columnsItem?.cellProps || {}),\n setNewDataSource,\n setExpandKeys,\n rowKey,\n expandKeys,\n Slots,\n ...newCell,\n };\n }),\n };\n });\n const mergerList = [...headerList, ...tempDataSource];\n setRows(mergerList);\n }, [newDataSource, tableColumns, headerList]);\n useEffect(() => {\n if (loading) {\n const item = rows?.find((el) => el?.rowId == currentCell.current?.rowId);\n let newItem = item?.cells?.find((it) => it?.columnId == currentCell.current?.columnId);\n newItem = { ...currentCell.current };\n initRowsRef.current = rows;\n }\n }, [loading, rows]);\n // 单元格编辑回调\n const handleCellsChanged = async (changes) => {\n const batchQuery: any = [];\n if (!Array.isArray(changes) || changes.length === 0) return;\n /** 批量提交 */\n let isBatchSubmit = false;\n if (changes?.length > 1) {\n isBatchSubmit = true;\n }\n\n setRows((prevRows) => {\n changes.forEach(async (change) => {\n const changeRowIdx = prevRows.findIndex((el) => el.rowId == change.rowId);\n const changeColumnIdx = tableColumns.findIndex((el) => el.columnId == change.columnId);\n prevRows[changeRowIdx].cells[changeColumnIdx] = { ...change.newCell };\n currentCell.current = { ...change.newCell };\n batchQuery.push(handleArrayToObj(prevRows[changeRowIdx]));\n if (formulaConfig) {\n for (const key in formulaConfig) {\n const item = formulaConfig[key];\n const resultColumnIdx = tableColumns.findIndex((el) => el.columnId == key);\n const newCell = {\n ...prevRows[changeRowIdx].cells[resultColumnIdx],\n text: item?.setCellData && item?.setCellData(prevRows[changeRowIdx]),\n value: item?.setCellData && item?.setCellData(prevRows[changeRowIdx]),\n style:\n item?.setCellStyle &&\n item?.setCellStyle(\n (item?.setCellData && item?.setCellData(prevRows[changeRowIdx])) ||\n prevRows[changeRowIdx],\n ),\n };\n prevRows[changeRowIdx].cells[resultColumnIdx] = newCell;\n }\n }\n if (onEditSubmit && !isBatchSubmit) {\n try {\n await onEditSubmit(batchQuery);\n } catch (err) {\n getList && getList();\n }\n }\n onChange && onChange(prevRows[changeRowIdx]);\n });\n return [...prevRows];\n });\n\n if (isBatchSubmit) {\n try {\n onEditSubmit && (await onEditSubmit(batchQuery));\n } catch (err) {\n getList && getList();\n }\n }\n };\n\n /** 自定义组件注册 */\n const baseTemplate = useMemo(() => {\n const mergeTemplate: any = {\n ...(antdComponents || {}),\n ...(customComponents || {}),\n ...childAntdComponent,\n };\n const newMergeTemplate: any = {};\n for (const key in mergeTemplate) {\n const NewCom = (newComProps) => {\n return <GetBaseTemplate {...newComProps} {...props} Com={mergeTemplate[key]} />;\n };\n newMergeTemplate[key] = WidthWrapHoc(NewCom);\n }\n return newMergeTemplate;\n }, [antdComponents, customComponents]);\n\n const ActionDom = (props) => {\n const rowData = rows?.find((el) => el?.rowId == props?.cell?.rowId);\n return (\n <div onPointerDown={(e) => e.stopPropagation()}>\n {Slots?.tableActionsSlot && <Slots.tableActionsSlot {...props?.cell} rowData={rowData} />}\n {Slots?.actionPrefixSlot && <Slots.actionPrefixSlot {...props?.cell} rowData={rowData} />}\n {Slots?.actionCenterSlot && <Slots.actionCenterSlot {...props?.cell} rowData={rowData} />}\n {Slots?.actionSuffixSlot && <Slots.actionSuffixSlot {...props?.cell} rowData={rowData} />}\n </div>\n );\n };\n function flattenDataSource(arr: any) {\n const result: any = [];\n function loop(list: any) {\n for (const item of list) {\n result.push(item);\n if (item.children && item.children.length) {\n loop(item.children);\n }\n }\n }\n loop(arr);\n return result;\n }\n const CheckBoxDom = (props) => {\n const { record, rowId } = props?.cell;\n\n const newDataSource = flattenDataSource(dataSource)?.filter(\n (item) => !rowSelection?.getCheckboxProps?.(item)?.disabled,\n );\n\n const checkboxProps =\n typeof rowSelection?.getCheckboxProps === \"function\"\n ? rowSelection?.getCheckboxProps?.(record)\n : {};\n return (\n <Checkbox\n {...props?.componentProps}\n checked={\n rowSelection?.selectedRowKeys?.includes((record && record[rowKey]) || \"\") ||\n (!rowId &&\n rowSelection?.selectedRowKeys?.length == newDataSource?.length &&\n newDataSource?.length > 0)\n }\n indeterminate={\n !rowId &&\n rowSelection?.selectedRowKeys?.length > 0 &&\n rowSelection?.selectedRowKeys?.length < newDataSource?.length\n }\n onChange={(e) => {\n if (e.target.checked && rowId) {\n const newSelectedRowKeys = [...rowSelection?.selectedRowKeys, record[rowKey]];\n const rows = newDataSource?.filter((el) => newSelectedRowKeys?.includes(el[rowKey]));\n\n rowSelection?.onChange(newSelectedRowKeys, rows);\n } else if (!e.target.checked && rowId) {\n const newSelectedRowKeys = rowSelection?.selectedRowKeys?.filter(\n (el) => el != record[rowKey],\n );\n const rows = newDataSource?.filter((el) => newSelectedRowKeys?.includes(el[rowKey]));\n\n rowSelection?.onChange(\n rowSelection?.selectedRowKeys?.filter((el) => el != record[rowKey]),\n rows,\n );\n } else if (e.target.checked && !rowId) {\n const newSelectedRowKeys = newDataSource?.map((el) => el[rowKey]);\n const rows = newDataSource?.filter((el) => newSelectedRowKeys?.includes(el[rowKey]));\n\n rowSelection?.onChange(\n newDataSource?.map((el) => el[rowKey]),\n rows,\n );\n } else if (!e.target.checked && !rowId) {\n rowSelection?.onChange([], []);\n }\n }}\n {...checkboxProps}\n ></Checkbox>\n );\n };\n useEffect(() => {\n if (rowSelection) {\n const newDataSource = flattenDataSource(dataSource)?.filter(\n (item) => !rowSelection?.getCheckboxProps?.(item)?.disabled,\n );\n const rows = newDataSource?.filter((el) => selectedRowKeys?.includes(el[rowKey]));\n rowSelection?.onChange(selectedRowKeys, rows);\n }\n }, [selectedRowKeys, dataSource]);\n useEffect(() => {\n setSelectedRowKeys([]);\n }, [query?.pageNum]);\n\n const customCellTemplates = useMemo(() => {\n const templatesObj: any = {};\n for (const key in reactGridProps?.customCellTemplates) {\n const item = reactGridProps?.customCellTemplates[key];\n templatesObj[key] = WidthWrapHoc(item);\n }\n return templatesObj;\n }, [reactGridProps?.customCellTemplates]);\n\n /** 选中高亮整行 */\n const onHightsRow = (cell: any, rows: any) => {\n const list = rows\n ?.find((el) => el?.rowId == cell?.rowId)\n ?.cells?.map((item) => ({\n columnId: item?.columnId,\n rowId: cell?.rowId,\n className: \"custom-highlights-row\",\n borderColor: \"transparent\",\n }));\n highlightsRowIdRef.current = cell?.rowId;\n setHighlights(list);\n };\n\n return (\n <Spin spinning={loading}>\n <div className={`grid-container ${className}`} style={reactGridStyle}>\n <ReactGrid\n ref={gridRef}\n rows={loading ? initRowsRef.current : rows}\n key={dataSource?.length == 0 ? 0 : 1}\n columns={tableColumns}\n onCellsChanged={handleCellsChanged}\n enableFillHandle={true}\n enableRangeSelection={true}\n horizontalStickyBreakpoint={120}\n {...reactGridProps}\n highlights={reactGridProps?.highlights ?? highlights}\n onFocusLocationChanging={(cell: any) => {\n const datatypeId = cell?.columnId + cell?.rowId;\n (window as any).gridEditId = datatypeId;\n if (typeof cell?.rowId == \"string\" && cell?.rowId?.indexOf(\"header-\") > -1) {\n return false;\n }\n if (reactGridProps?.isRowHighlights && cell?.columnId) {\n onHightsRow(cell, rows);\n }\n if ([\"_$actions\", \"rowSelection\", \"ExpandListTemplate\"]?.includes(cell?.columnId)) {\n return false;\n }\n if (reactGridProps?.onFocusLocationChanging) {\n return reactGridProps?.onFocusLocationChanging(cell, rows);\n }\n\n return cell;\n }}\n customCellTemplates={{\n ExpandListTemplate: WidthWrapHoc(ExpandListTemplate),\n ...baseTemplate,\n ...customCellTemplates,\n ...headerCustomTemplate,\n _$actions: WidthWrapHoc(ActionDom),\n rowSelection: WidthWrapHoc(CheckBoxDom),\n // Input: WidthWrapHoc(TextTemplate,props),\n Number: WidthWrapHoc(NumberTemplate, props),\n }}\n />\n {dataSource?.length <= 0 && (\n <div className=\"grid-container-empty\">\n <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} />\n </div>\n )}\n </div>\n </Spin>\n );\n}\n\nexport default forwardRef(CellEditTable);\n"],"mappings":"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"}
@@ -6,7 +6,7 @@
6
6
  "files": [
7
7
  {
8
8
  "path": "index.cjs",
9
- "size": 17723
9
+ "size": 17767
10
10
  },
11
11
  {
12
12
  "path": "index.css",
@@ -14,11 +14,11 @@
14
14
  },
15
15
  {
16
16
  "path": "index.js",
17
- "size": 23911
17
+ "size": 23967
18
18
  },
19
19
  {
20
20
  "path": "index.js.map",
21
- "size": 68505
21
+ "size": 68605
22
22
  },
23
23
  {
24
24
  "path": "project.json",
package/dist/project.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@hzab/edit-table",
3
- "version": "0.1.11",
3
+ "version": "0.1.12",
4
4
  "projectId": "56c87c84304d7db0",
5
5
  "initialCommit": "630fe6d6ecb8",
6
- "commit": "a72c3d82c703",
7
- "builtAt": "2026-10-29T02:42:37.306Z"
6
+ "commit": "a08b69354c2c",
7
+ "builtAt": "2026-10-29T10:21:50.731Z"
8
8
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hzab/edit-table",
3
- "version": "0.1.11",
3
+ "version": "0.1.12",
4
4
  "private": false,
5
5
  "src-direct": true,
6
6
  "description": "可编辑表格",
@@ -47,10 +47,10 @@
47
47
  "vite": "^8.0.0",
48
48
  "vitest": "^4.1.10",
49
49
  "@hzab/eslint-config": "^0.0.0",
50
- "@hzab/typescript-config": "^0.0.0",
51
50
  "@hzab/form-render": "^1.7.23",
51
+ "@hzab/vite-config": "^0.2.0",
52
52
  "@hzab/utils": "^1.1.14",
53
- "@hzab/vite-config": "^0.2.0"
53
+ "@hzab/typescript-config": "^0.0.0"
54
54
  },
55
55
  "scripts": {
56
56
  "build": "vite build && tsc -p tsconfig.build.json",
package/src/index.tsx CHANGED
@@ -211,7 +211,7 @@ function CellEditTable(props: CellEditTableProps, ref: any) {
211
211
  record: item,
212
212
  rowId: item[rowKey] || columnsItem?.type,
213
213
  type: type,
214
- nonEditable: columnsItem?.nonEditable,
214
+ nonEditable: columnsItem?.pattern == "readPretty" ? true : columnsItem?.nonEditable,
215
215
  text: String(cellItem || ""),
216
216
  value: cellItem,
217
217
  selectedValue: cellItem || "",