import{r,aj as J}from"./index.Drusyo5m.js";import{s as Q,i as I,a as U,b as Z,T as ee,C as te,m as re}from"./index.s_E0s7LB.js";import"./withFullScreenWrapper.DfpAcJxf.js";import"./Toolbar.BHDNzWBx.js";import"./FormClearHelper.C__r5Llk.js";import"./moment.C7qA8nIE.js";import"./pandasStylerUtils.B4tLYMwS.js";import"./numbro.B9_PXfzp.js";import"./_baseIndexOf.BTknn6Gb.js";import"./index.8HslT92O.js";import"./main.D_CmqChN.js";import"./throttle.Cyw_V0Dq.js";import"./toConsumableArray.gE9fMkLj.js";import"./formatNumber.CMRgW9EJ.js";import"./sprintf.DpPCfzXw.js";import"./formatMoment.C6Hwn6X5.js";import"./checkbox.BKgfzJZV.js";import"./createDownloadLinkElement.CG7nr2a4.js";import"./FileDownload.esm.AllYUuOW.js";import"./_arrayIncludes.B19Iyn2B.js";const ie=()=>t=>t.targetX,ne=()=>t=>t.targetY,se=()=>t=>t.targetWidth,oe=()=>t=>t.targetHeight,ae=()=>t=>t.targetY+10,le=()=>t=>Math.max(0,(t.targetHeight-28)/2),de=Q("div")({name:"DataGridOverlayEditorStyle",class:"gdg-d19meir1",propsAsIs:!1,vars:{"d19meir1-0":[ne(),"px"],"d19meir1-1":[ie(),"px"],"d19meir1-2":[se(),"px"],"d19meir1-3":[oe(),"px"],"d19meir1-4":[ae(),"px"],"d19meir1-5":[le(),"px"]}});function ue(){const[t,s]=r.useState();return[t??void 0,s]}function ce(){const[t,s]=ue(),[n,h]=r.useState(0),[f,b]=r.useState(!0);r.useLayoutEffect(()=>{if(t===void 0||!("IntersectionObserver"in window))return;const o=new IntersectionObserver(a=>{a.length!==0&&b(a[0].isIntersecting)},{threshold:1});return o.observe(t),()=>o.disconnect()},[t]),r.useEffect(()=>{if(f||t===void 0)return;let o;const a=()=>{const{right:x}=t.getBoundingClientRect();h(m=>Math.min(m+window.innerWidth-x-10,0)),o=requestAnimationFrame(a)};return o=requestAnimationFrame(a),()=>{o!==void 0&&cancelAnimationFrame(o)}},[t,f]);const C=r.useMemo(()=>({transform:`translateX(${n}px)`}),[n]);return{ref:s,style:C}}const Te=t=>{const{target:s,content:n,onFinishEditing:h,forceEditMode:f,initialValue:b,imageEditorOverride:C,markdownDivCreateNode:o,highlight:a,className:x,theme:m,id:W,cell:p,bloom:w,portalElementRef:F,validateCell:g,getCellRenderer:P,provideEditor:T,isOutsideClick:X,customEventTarget:j,activation:O}=t,[l,A]=r.useState(f?n:void 0),S=r.useRef(l??n);S.current=l??n;const[y,k]=r.useState(()=>g===void 0?!0:!(I(n)&&g?.(p,n,S.current)===!1)),u=r.useCallback((e,i)=>{h(y?e:void 0,i)},[y,h]),K=r.useCallback(e=>{if(g!==void 0&&e!==void 0&&I(e)){const i=g(p,e,S.current);i===!1?k(!1):(typeof i=="object"&&(e=i),k(!0))}A(e)},[p,g]),E=r.useRef(!1),c=r.useRef(void 0),Y=r.useCallback(()=>{u(l,[0,0]),E.current=!0},[l,u]),L=r.useCallback((e,i)=>{u(e,i??c.current??[0,0]),E.current=!0},[u]),q=r.useCallback(async e=>{let i=!1;e.key==="Escape"?(e.stopPropagation(),e.preventDefault(),c.current=[0,0]):e.key==="Enter"&&!e.shiftKey?(e.stopPropagation(),e.preventDefault(),c.current=[0,1],i=!0):e.key==="Tab"&&(e.stopPropagation(),e.preventDefault(),c.current=[e.shiftKey?-1:1,0],i=!0),window.setTimeout(()=>{!E.current&&c.current!==void 0&&(u(i?l:void 0,c.current),E.current=!0)},0)},[u,l]),R=l??n,[d,B]=r.useMemo(()=>{if(U(n))return[];const e={...n,location:p,activation:O},i=T?.(e);return i!==void 0?[i,!1]:[P(n)?.provideEditor?.(e),!1]},[p,n,P,T,O]),{ref:$,style:z}=ce();let M=!0,_,N=!0,v;if(d!==void 0){M=d.disablePadding!==!0,N=d.disableStyling!==!0;const e=Z(d);e&&(v=d.styleOverride);const i=e?d.editor:d;_=r.createElement(i,{portalElementRef:F,isHighlighted:a,activation:O,onChange:K,value:R,initialValue:b,onFinishedEditing:L,validatedSelection:I(R)?R.selectionRange:void 0,forceEditMode:f,target:s,imageEditorOverride:C,markdownDivCreateNode:o,isValid:y,theme:m})}v={...v,...z};const V=F?.current??document.getElementById("portal");if(V===null)return console.error('Cannot open Data Grid overlay editor, because portal not found. Please, either provide a portalElementRef or add `<div id="portal" />` as the last child of your `<body>`.'),null;let D=N?"gdg-style":"gdg-unstyle";y||(D+=" gdg-invalid"),M&&(D+=" gdg-pad");const G=w?.[0]??1,H=w?.[1]??1;return J.createPortal(r.createElement(ee.Provider,{value:m},r.createElement(te,{style:re(m),className:x,onClickOutside:Y,isOutsideClick:X,customEventTarget:j},r.createElement(de,{ref:$,id:W,className:D,style:v,as:B===!0?"label":void 0,targetX:s.x-G,targetY:s.y-H,targetWidth:s.width+G*2,targetHeight:s.height+H*2},r.createElement("div",{className:"gdg-clip-region",onKeyDown:q},_)))),V)};export{Te as default};
