import{useRef as e,useState as t,useCallback as r,useEffect as i}from"react";import{useProduct as n,useCurrentDevice as l,getResponsiveValueByScreen as o,useProductShopifyEditLink as s,useEditorMode as m}from"@gem-sdk/core";let c=c=>{let{htmlTag:a,transform:u,typo:p,typography:y}=c??{},g=e(null),H=e(!1),[d,f]=t(!1),[w,h]=t(!1),x=n(),O=l(),P=o(c?.hasLineClamp,O),S=o(c?.lineClamp,O),v=o(p?.custom?.lineHeight,O),J=JSON.stringify(p),N=JSON.stringify(y),b=JSON.stringify(u),{redirectProductShopifyLink:A}=s(),C=m(),F=r(()=>{if(!g.current)return;let e=!d;H.current=e,g.current.style.maxHeight=e?"none":"",f(e)},[d]);return i(()=>{H.current=!1,f(!1)},[P,S,x?.descriptionHtml]),i(()=>{let e=g.current;if(!e)return;if(!P||!x?.descriptionHtml||!S){e.style.maxHeight="",h(!1);return}let t=()=>{if(H.current){e.style.maxHeight="none";return}e.style.maxHeight="";let t=e.style.getPropertyValue("--line-clamp");e.style.setProperty("--line-clamp",String(S));let r=e.scrollHeight-e.clientHeight>1;""!==t?e.style.setProperty("--line-clamp",t):e.style.removeProperty("--line-clamp"),h(r)},r=window.requestAnimationFrame(t),i=window.setTimeout(t,100),n=new ResizeObserver(()=>{t()});return n.observe(e),()=>{window.cancelAnimationFrame(r),window.clearTimeout(i),n.disconnect()}},[P,S,x?.descriptionHtml,v,a,b,J,N]),{ref:g,open:d,isShowViewMore:w,handleToggleShowMore:F,mode:C,redirectProductShopifyLink:A}};export{c as useGpDescription};
