UNPKG

@iqmo/browser

Version:
2 lines (1 loc) 3.73 kB
import{r,d as J}from"./index-0xtYjrTa.js";import{s as Q,i as R,a as U,b as Z,T as _,C as ee,m as te}from"./index-B0UPda22.js";const re=()=>t=>t.targetX,ie=()=>t=>t.targetY,ae=()=>t=>t.targetWidth,ne=()=>t=>t.targetHeight,oe=()=>t=>t.targetY+10,se=()=>t=>Math.max(0,(t.targetHeight-28)/2),de=Q("div")({name:"DataGridOverlayEditorStyle",class:"gdg-d19meir1",propsAsIs:!1,vars:{"d19meir1-0":[ie(),"px"],"d19meir1-1":[re(),"px"],"d19meir1-2":[ae(),"px"],"d19meir1-3":[ne(),"px"],"d19meir1-4":[oe(),"px"],"d19meir1-5":[se(),"px"]}});function le(){const[t,n]=r.useState();return[t??void 0,n]}function ce(){const[t,n]=le(),[a,p]=r.useState(0),[g,b]=r.useState(!0);r.useLayoutEffect(()=>{if(t===void 0||!("IntersectionObserver"in window))return;const o=new IntersectionObserver(s=>{s.length!==0&&b(s[0].isIntersecting)},{threshold:1});return o.observe(t),()=>o.disconnect()},[t]),r.useEffect(()=>{if(g||t===void 0)return;let o;const s=()=>{const{right:k}=t.getBoundingClientRect();p(m=>Math.min(m+window.innerWidth-k-10,0)),o=requestAnimationFrame(s)};return o=requestAnimationFrame(s),()=>{o!==void 0&&cancelAnimationFrame(o)}},[t,g]);const C=r.useMemo(()=>({transform:`translateX(${a}px)`}),[a]);return{ref:n,style:C}}const ue=t=>{const{target:n,content:a,onFinishEditing:p,forceEditMode:g,initialValue:b,imageEditorOverride:C,markdownDivCreateNode:o,highlight:s,className:k,theme:m,id:V,cell:v,bloom:D,portalElementRef:S,validateCell:f,getCellRenderer:P,provideEditor:M,isOutsideClick:W,customEventTarget:X}=t,[d,Y]=r.useState(g?a:void 0),w=r.useRef(d??a);w.current=d??a;const[h,N]=r.useState(()=>f===void 0?!0:!(R(a)&&f?.(v,a,w.current)===!1)),c=r.useCallback((e,i)=>{p(h?e:void 0,i)},[h,p]),q=r.useCallback(e=>{if(f!==void 0&&e!==void 0&&R(e)){const i=f(v,e,w.current);i===!1?N(!1):(typeof i=="object"&&(e=i),N(!0))}Y(e)},[v,f]),y=r.useRef(!1),u=r.useRef(void 0),B=r.useCallback(()=>{c(d,[0,0]),y.current=!0},[d,c]),G=r.useCallback((e,i)=>{c(e,i??u.current??[0,0]),y.current=!0},[c]),j=r.useCallback(async e=>{let i=!1;e.key==="Escape"?(e.stopPropagation(),e.preventDefault(),u.current=[0,0]):e.key==="Enter"&&!e.shiftKey?(e.stopPropagation(),e.preventDefault(),u.current=[0,1],i=!0):e.key==="Tab"&&(e.stopPropagation(),e.preventDefault(),u.current=[e.shiftKey?-1:1,0],i=!0),window.setTimeout(()=>{!y.current&&u.current!==void 0&&(c(i?d:void 0,u.current),y.current=!0)},0)},[c,d]),x=d??a,[l,L]=r.useMemo(()=>{if(U(a))return[];const e={...a,location:v},i=M?.(e);return i!==void 0?[i,!1]:[P(a)?.provideEditor?.(e),!1]},[v,a,P,M]),{ref:$,style:z}=ce();let F=!0,I,T=!0,E;if(l!==void 0){F=l.disablePadding!==!0,T=l.disableStyling!==!0;const e=Z(l);e&&(E=l.styleOverride);const i=e?l.editor:l;I=r.createElement(i,{portalElementRef:S,isHighlighted:s,onChange:q,value:x,initialValue:b,onFinishedEditing:G,validatedSelection:R(x)?x.selectionRange:void 0,forceEditMode:g,target:n,imageEditorOverride:C,markdownDivCreateNode:o,isValid:h,theme:m})}E={...E,...z};const A=S?.current??document.getElementById("portal");if(A===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 O=T?"gdg-style":"gdg-unstyle";h||(O+=" gdg-invalid"),F&&(O+=" gdg-pad");const H=D?.[0]??1,K=D?.[1]??1;return J.createPortal(r.createElement(_.Provider,{value:m},r.createElement(ee,{style:te(m),className:k,onClickOutside:B,isOutsideClick:W,customEventTarget:X},r.createElement(de,{ref:$,id:V,className:O,style:E,as:L===!0?"label":void 0,targetX:n.x-H,targetY:n.y-K,targetWidth:n.width+H*2,targetHeight:n.height+K*2},r.createElement("div",{className:"gdg-clip-region",onKeyDown:j},I)))),A)};export{ue as default};