@select-org/select-post-builder 1.1.54 → 1.1.55

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.
@@ -216,7 +216,7 @@ ${A.slice(E+2)}`,_+=1;else break}n.push({indent:E,number:parseInt(b,10),content:
216
216
 
217
217
  Defaulting to \`null\`.`}var Root$1=Progress$1,Indicator=ProgressIndicator;function Progress({className:u,value:n,...d}){return jsxRuntime.jsx(Root$1,{"data-slot":"progress",className:cn("bg-primary/20 relative h-2 w-full overflow-hidden rounded-full",u),...d,children:jsxRuntime.jsx(Indicator,{"data-slot":"progress-indicator",className:"bg-primary h-full w-full flex-1 transition-all",style:{transform:`translateX(-${100-(n||0)}%)`}})})}const MediaPreviewModal=({open:u,onOpenChange:n,src:d,type:p,alt:m})=>jsxRuntime.jsx(Root$3,{open:u,onOpenChange:n,children:jsxRuntime.jsx(Portal$1,{children:jsxRuntime.jsxs("div",{"data-theme":"select-post-builder",children:[jsxRuntime.jsx(Overlay,{className:"fixed inset-0 bg-black/80 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",style:{zIndex:999999},onClick:()=>n(!1)}),jsxRuntime.jsxs(Content,{className:"fixed inset-0 flex items-center justify-center pointer-events-none",style:{zIndex:999999,padding:"5rem 2rem 2rem"},onInteractOutside:()=>n(!1),children:[jsxRuntime.jsx(Title,{className:"sr-only",children:"Media Preview"}),jsxRuntime.jsxs("div",{className:"relative pointer-events-auto max-w-[80vw] max-h-[75vh]",children:[jsxRuntime.jsxs(Close,{className:"absolute top-3 right-3 z-10 rounded-full bg-black/40 backdrop-blur-md border border-white/20 shadow-lg hover:bg-black/60 p-2 text-white transition-colors cursor-pointer",children:[jsxRuntime.jsx(X,{className:"size-4"}),jsxRuntime.jsx("span",{className:"sr-only",children:"Close"})]}),p===MediaNodeTypes.Image&&jsxRuntime.jsx("img",{src:d,alt:m||"Preview",className:"max-w-[80vw] max-h-[75vh] object-contain rounded-lg shadow-2xl"}),p===MediaNodeTypes.Video&&jsxRuntime.jsx("video",{src:d,controls:!0,autoPlay:!0,className:"max-w-[80vw] max-h-[75vh] rounded-lg shadow-2xl"}),p===MediaNodeTypes.Audio&&jsxRuntime.jsx("div",{className:"bg-white p-8 rounded-lg min-w-80 shadow-2xl",children:jsxRuntime.jsx("audio",{src:d,controls:!0,autoPlay:!0,className:"w-full"})})]})]})]})})}),MediaNodeView=({node:u,updateAttributes:n,editor:d,selected:p,getPos:m})=>{const[g,y]=React.useState(!1),{trackMediaRemoved:b}=useAnalyticsTracking(),S=()=>{const T=m()??NaN;if(!Number.isFinite(T))return;const _=d.view.dom?.getAttribute("data-editor-type");d.chain().focus().deleteRange({from:T,to:T+u.nodeSize}).focus().run(),b({editorType:_,mediaType:u?.attrs?.type})},E=T=>n({align:T});return u.attrs.uploading?jsxRuntime.jsx(NodeViewWrapper,{className:cn("flex my-4",u.attrs.align===Alignment.CENTER?"justify-center":u.attrs.align===Alignment.RIGHT?"justify-end":""),children:jsxRuntime.jsxs("div",{className:"w-full max-w-full",children:[jsxRuntime.jsxs("div",{className:"relative bg-muted rounded-lg overflow-hidden",children:[jsxRuntime.jsx(AspectRatio,{ratio:u.attrs.type===MediaNodeTypes.Audio?4/1:16/4,className:cn("flex items-center justify-center bg-muted"),children:jsxRuntime.jsxs("div",{className:"text-center space-y-3",children:[jsxRuntime.jsxs("div",{className:"flex justify-center",children:[u.attrs.type===MediaNodeTypes.Image&&jsxRuntime.jsx(Image$2,{className:"w-12 h-12 text-muted-foreground/50"}),u.attrs.type===MediaNodeTypes.Video&&jsxRuntime.jsx(Video,{className:"w-12 h-12 text-muted-foreground/50"}),u.attrs.type===MediaNodeTypes.Audio&&jsxRuntime.jsx(Music,{className:"w-12 h-12 text-muted-foreground/50"})]}),jsxRuntime.jsxs("p",{className:"text-sm text-muted-foreground font-medium",children:["Uploading ",u.attrs.type,"..."]})]})}),jsxRuntime.jsx("div",{className:"absolute bottom-0 left-0 right-0 p-4",children:jsxRuntime.jsx(Progress,{value:u.attrs.progress??0,className:"h-2"})}),jsxRuntime.jsx("button",{onClick:S,className:"absolute top-2 right-2 p-2 bg-background/90 hover:bg-background rounded-full shadow-sm transition-colors",title:"Cancel upload",children:jsxRuntime.jsx(X,{className:"w-4 h-4"})})]}),jsxRuntime.jsxs("p",{className:"text-xs text-muted-foreground text-center mt-2",children:[Math.round(u.attrs.progress??0),"%"]})]})}):jsxRuntime.jsxs(NodeViewWrapper,{"data-drag-handle":!0,className:cn("flex",u.attrs.align===Alignment.CENTER?"justify-center":u.attrs.align===Alignment.RIGHT?"justify-end":""),children:[u.attrs.type===MediaNodeTypes.Image?jsxRuntime.jsx(ResizableWithToolbarWrapper,{open:p,mediaType:u.attrs.type,align:u.attrs.align,onResize:T=>n({maxWidth:T}),onAlign:E,onDelete:S,children:jsxRuntime.jsx("img",{src:u.attrs.src,alt:u.attrs.caption,className:cn("object-contain w-full h-auto rounded-lg cursor-pointer",p&&"border-2 border-blue-500"),onDoubleClick:()=>y(!0)})}):u.attrs.type===MediaNodeTypes.Video?jsxRuntime.jsx(ResizableWithToolbarWrapper,{open:p,mediaType:u.attrs.type,align:u.attrs.align,onResize:T=>n({maxWidth:T}),onAlign:E,onDelete:S,children:jsxRuntime.jsx("video",{src:u.attrs.src,poster:u.attrs.payload?.sources?.thumbnail?.url,controls:!0,className:cn("object-contain w-full h-auto",p&&"border-2 border-blue-500"),onDoubleClick:()=>y(!0)})}):u.attrs.type===MediaNodeTypes.Audio?jsxRuntime.jsxs("div",{className:"relative p-4 bg-accent/20 border border-border/20 w-full",children:[jsxRuntime.jsx(EditMediaToolbar,{open:p,align:u.attrs.align,onAlign:E,onDelete:S}),jsxRuntime.jsx("audio",{src:u.attrs.src,controls:!0,className:cn("w-full",p&&"rounded-full border-2 border-blue-500")})]}):jsxRuntime.jsx("div",{className:"p-4 text-sm text-gray-600",children:"Unsupported media"}),jsxRuntime.jsx(MediaPreviewModal,{open:g,onOpenChange:y,src:u.attrs.src,type:u.attrs.type,alt:u.attrs.caption})]})},ResizableWithToolbarWrapper=({open:u,align:n,onAlign:d,onDelete:p,onResize:m,mediaType:g,children:y})=>jsxRuntime.jsxs(ResizableWrapper,{onResize:m,className:cn(g===MediaNodeTypes.Audio&&"relative p-4 bg-accent/50"),children:[jsxRuntime.jsx(EditMediaToolbar,{open:u,align:n,onAlign:d,onDelete:p}),y]}),createDeleteByUidCommand=u=>n=>({state:d,commands:p})=>{const{doc:m}=d;let g=null,y=null;return m.descendants((b,S)=>{if(b.type.name===u&&b.attrs.uid===n)return g=S,y=b.nodeSize,!1}),g!==null&&y!==null?p.deleteRange({from:g,to:Number(g)+Number(y)}):!1},createUpdateByUidCommand=u=>(n,d)=>({state:p,dispatch:m})=>{if(!m)return!1;const{doc:g,tr:y}=p;let b=!1;return g.descendants((S,E)=>{if(S.type.name===u&&S.attrs.uid===n)return y.setNodeMarkup(E,void 0,{...S.attrs,...d}),b=!0,!1}),b?(m(y),!0):!1},createDeleteMarkByUidCommand=u=>n=>({state:d,dispatch:p})=>{if(!p)return!1;const{doc:m,schema:g}=d;let y=d.tr,b=!1;const S=[];if(m.descendants((E,T)=>{E.isText&&E.marks?.length&&E.marks.forEach(_=>{_.type.name===u&&_.attrs.uid===n&&(S.push({from:T,to:T+E.nodeSize}),b=!0)})}),b){const E=g.marks[u];E&&(S.forEach(({from:T,to:_})=>{y=y.removeMark(T,_,E)}),p(y))}return b},createUpdateMarkByUidCommand=u=>(n,d)=>({state:p,dispatch:m})=>{if(!m)return!1;const{doc:g,schema:y}=p;let b=p.tr,S=!1;const E=[];return g.descendants((T,_)=>{T.isText&&T.marks?.length&&T.marks.forEach(R=>{R.type.name===u&&R.attrs.uid===n&&(E.push({from:_,to:_+T.nodeSize,mark:R}),S=!0)})}),S&&(E.forEach(({from:T,to:_,mark:R})=>{const A={...R.attrs,...d},C=y.marks[u];C&&(b=b.removeMark(T,_,C),b=b.addMark(T,_,C.create(A)))}),m(b)),S},DEFAULT_MEDIA_ATTRS={uid:"",src:"",type:MediaNodeTypes.Image,style:"object-fit: contain; width: 100%; border-radius: 0.5rem;",maxWidth:MEDIA_MIN_WIDTH,align:Alignment.LEFT,caption:"",uploading:!1,progress:0},MediaNode=Node3.create({name:"media",group:"block",atom:!0,addAttributes(){return{uid:{default:DEFAULT_MEDIA_ATTRS.uid},src:{default:DEFAULT_MEDIA_ATTRS.src},type:{default:DEFAULT_MEDIA_ATTRS.type},style:{default:DEFAULT_MEDIA_ATTRS.style},maxWidth:{default:DEFAULT_MEDIA_ATTRS.maxWidth},align:{default:DEFAULT_MEDIA_ATTRS.align},caption:{default:DEFAULT_MEDIA_ATTRS.caption},uploading:{default:DEFAULT_MEDIA_ATTRS.uploading},progress:{default:DEFAULT_MEDIA_ATTRS.progress},payload:{default:null}}},draggable(){return!this?.options?.attrs?.uploading&&!this?.options?.attrs?.mediaMode},selectable(){return!this?.options?.attrs?.mediaMode},parseHTML(){return[{tag:"div[data-media]",getAttrs:u=>{const n=u.getAttribute("data-payload");return{uid:u.getAttribute("data-uid")||"",src:u.getAttribute("data-src")||"",type:u.getAttribute("data-type")||MediaNodeTypes.Image,align:u.getAttribute("data-align")||Alignment.LEFT,caption:u.getAttribute("data-caption")||"",style:u.getAttribute("style")||DEFAULT_MEDIA_ATTRS.style,payload:n?JSON.parse(n):null}}}]},renderHTML({HTMLAttributes:u}){const{uid:n,src:d,style:p,type:m,align:g,maxWidth:y,caption:b,payload:S}=u,E=MEDIA_TAGS[m],T=mergeAttributes({style:buildWrapperStyle(g),"data-media":!0,"data-uid":n,"data-type":m,"data-src":d,"data-caption":b||"","data-align":g,...S?{"data-payload":JSON.stringify(S)}:{}}),_=mergeAttributes({src:d,style:buildMediaStyle(p,m,y)},{controls:m===MediaNodeTypes.Audio||m===MediaNodeTypes.Video});return["div",T,[E,_]]},addNodeView(){return ReactNodeViewRenderer(MediaNodeView)},addCommands(){return{insertMedia:u=>({commands:n,chain:d})=>this?.options?.attrs?.mediaMode?d().insertContent([{type:this.name,attrs:u}]).command(({tr:p,dispatch:m})=>{if(m){const g=p.doc.content.size,y=p.doc.resolve(g);p.setSelection(TextSelection.near(y))}return!0}).run():n.insertContent([{type:this.name,attrs:u},{type:"paragraph"}]),updateMediaByUid:createUpdateByUidCommand(this.name),deleteMediaByUid:createDeleteByUidCommand(this.name),updateMediaProgress:(u,n)=>({commands:d})=>d.updateMediaByUid(u,{progress:n}),deleteAllUploadingMedia:()=>({state:u,dispatch:n})=>{const{tr:d,doc:p}=u,m=[];return p.descendants((g,y)=>{g.attrs.uploading===!0&&m.push(y)}),m.length===0||(m.reverse().forEach(g=>{const y=d.doc.nodeAt(g);y&&d.delete(g,g+y.nodeSize)}),n&&n(d)),!0}}},addKeyboardShortcuts(){return{Backspace:()=>{const{selection:u,doc:n}=this.editor.state,p=u.$anchor.nodeBefore;if(p?.type.name===this.name&&p.attrs.uploading)return toast.info("Please wait for upload to complete or cancel it first"),!0;const m=n.nodeAt(u.from);return m?.type.name===this.name&&m.attrs.uploading?(toast.info("Please wait for upload to complete or cancel it first"),!0):!1},Delete:()=>{const{selection:u,doc:n}=this.editor.state,p=u.$anchor.nodeAfter;if(p?.type.name===this.name&&p.attrs.uploading)return toast.info("Please wait for upload to complete or cancel it first"),!0;const m=n.nodeAt(u.from);return m?.type.name===this.name&&m.attrs.uploading?(toast.info("Please wait for upload to complete or cancel it first"),!0):!1}}}}),buildWrapperStyle=u=>`width: 100%; display: flex; justify-content: ${getAlignmentStyle(u)}; margin:16px 0`,buildMediaStyle=(u,n,d)=>`${u}; max-width: ${n===MediaNodeTypes.Audio?"100%":`${d}%`}; ${n!==MediaNodeTypes.Audio?"height: auto;":""}`,getAlignmentStyle=u=>({[Alignment.LEFT]:"flex-start",[Alignment.CENTER]:"center",[Alignment.RIGHT]:"flex-end"})[u]||"flex-start",TextChoiceCard=({choice:u,index:n,canRemove:d,onRemove:p})=>{const m=OPTION_COLORS[n%OPTION_COLORS.length];return jsxRuntime.jsxs("div",{style:{backgroundColor:m},className:cn("relative rounded-xl flex items-center justify-center h-32 group overflow-hidden transition-all duration-200 hover:scale-[1.02] hover:shadow-md"),children:[jsxRuntime.jsx("span",{className:"text-center text-white font-medium px-4 py-3 text-sm sm:text-base leading-relaxed wrap-break-word w-full",children:u.text}),d&&jsxRuntime.jsx(RemoveButton,{onRemove:p,index:n}),jsxRuntime.jsx(ChoiceNumberBadge,{number:n+1})]})},MediaChoiceCard=({choice:u,index:n,canRemove:d,onRemove:p})=>{const m=u.sources.original.url||u.sources.thumbnail.url,g=m.startsWith("blob:");return React.useEffect(()=>{if(m.startsWith("blob:"))return()=>URL.revokeObjectURL(m)},[m]),jsxRuntime.jsxs("div",{style:{backgroundColor:OPTION_COLORS[n%OPTION_COLORS.length]},className:"relative rounded-xl flex items-center justify-center h-32 group overflow-hidden transition-all duration-200 hover:scale-[1.02] hover:shadow-md bg-muted",children:[u.imageType.includes("video")?jsxRuntime.jsx("video",{src:u?.sources?.original?.url,className:"object-cover w-full h-full"}):jsxRuntime.jsx(BlurImage,{src:m,blurDataURL:u?.sources?.placeholder?.url,alt:`Poll choice ${n+1}`,width:u?.sources?.original?.width,height:u?.sources?.original?.height}),g&&jsxRuntime.jsxs("div",{className:"absolute inset-0 flex flex-col items-center justify-center gap-1.5 bg-black/40 text-white pointer-events-none",children:[jsxRuntime.jsx(Spinner,{className:"h-5 w-5"}),jsxRuntime.jsx("span",{className:"text-xs font-medium",children:"Uploading..."})]}),d&&jsxRuntime.jsx(RemoveButton,{onRemove:p,index:n}),jsxRuntime.jsx(ChoiceNumberBadge,{number:n+1})]})},RemoveButton=({onRemove:u,index:n})=>jsxRuntime.jsx("button",{onClick:u,className:"z-20 cursor-pointer absolute top-2 right-2 opacity-0 group-hover:opacity-100 transition-opacity bg-background hover:bg-red-100 hover:text-destructive rounded-full p-1.5 shadow-md","aria-label":`Remove choice ${n+1}`,children:jsxRuntime.jsx(X,{className:"h-4 w-4"})}),ChoiceNumberBadge=({number:u})=>jsxRuntime.jsx("div",{className:"absolute bottom-2 left-2 bg-background/80 backdrop-blur-sm text-foreground text-xs font-semibold rounded-full h-6 w-6 flex items-center justify-center shadow-sm",children:u}),BlurImage=({src:u,blurDataURL:n,alt:d,width:p,height:m,className:g="",...y})=>{const b=E=>E.startsWith("data:")?E:`data:image/png;base64,${E}`,S=p/m;return jsxRuntime.jsxs("div",{className:"relative overflow-hidden size-full",style:{aspectRatio:S},children:[n&&jsxRuntime.jsx("img",{src:b(n),alt:"","aria-hidden":!0,className:"z-10 absolute inset-0 size-full object-cover scale-110 transition-opacity duration-500"}),jsxRuntime.jsx("img",{src:u,alt:d,width:p,height:m,loading:"lazy",decoding:"async",className:cn("relative z-10 object-cover w-full h-full transition-opacity duration-500",S<1&&"object-contain",g),...y})]})},Input=React.forwardRef(({className:u,type:n,...d},p)=>jsxRuntime.jsx("input",{ref:p,type:n,"data-slot":"input",className:cn("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",u),...d}));Input.displayName="Input";const TextOptionModal=({open:u,onOpenChange:n,value:d,onChange:p,onSubmit:m,disabled:g})=>{const{t:y}=usePostBuilder(),b=d.length>POLL_LIMITS.MAX_TEXT_LENGTH*.9,S=E=>{E.key==="Enter"&&(E.preventDefault(),m())};return jsxRuntime.jsx(Dialog,{open:u,onOpenChange:n,children:jsxRuntime.jsxs(DialogContent,{children:[jsxRuntime.jsx(DialogHeader,{children:jsxRuntime.jsx(DialogTitle,{children:y("addTextOptionKey")})}),jsxRuntime.jsxs("div",{className:"flex flex-col gap-2",children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-2",children:[jsxRuntime.jsx(Input,{autoFocus:!0,placeholder:y("enterTextOptionKey"),value:d,onChange:E=>p(E.target.value),onKeyDown:S,maxLength:POLL_LIMITS.MAX_TEXT_LENGTH,disabled:g,className:"transition-all"}),jsxRuntime.jsxs(Button,{onClick:m,disabled:!d.trim()||g,className:"shrink-0",size:"default",children:[jsxRuntime.jsx(Type,{className:"h-4 w-4 sm:mr-2"}),jsxRuntime.jsx("span",{className:"hidden sm:inline",children:y("addKey")})]})]}),jsxRuntime.jsxs("div",{className:"flex items-center justify-between text-xs text-muted-foreground",children:[jsxRuntime.jsx("span",{children:y("pressEnterToAddKey")}),jsxRuntime.jsxs("span",{className:cn("font-mono",b&&"text-amber-600 dark:text-amber-400 font-semibold"),children:[d.length,"/",POLL_LIMITS.MAX_TEXT_LENGTH]})]})]})]})})},AddChoiceBlock=({disabled:u,onFiles:n,onOpenSearch:d,onOpenText:p})=>{const{t:m}=usePostBuilder(),g=React.useRef(null),[y,b]=React.useState(!1),S=A=>{u||(A.preventDefault(),A.stopPropagation(),b(!0))},E=A=>{A.preventDefault(),A.stopPropagation(),b(!1)},T=A=>{if(u)return;A.preventDefault(),A.stopPropagation(),b(!1);const C=Array.from(A.dataTransfer.files).filter(k=>k.type.startsWith("image/")||k.type.startsWith("video/"));C.length>0&&n(C)},_=A=>{const C=A.target.files;C&&(n(Array.from(C)),A.target.value="")},R="cursor-pointer flex-1 flex items-center justify-center text-muted-foreground transition-colors hover:bg-primary/10 hover:text-primary disabled:opacity-50 disabled:pointer-events-none";return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("input",{ref:g,type:"file",accept:"image/*,video/*",multiple:!0,className:"hidden",onChange:_,disabled:u,"aria-label":m("uploadKey")}),jsxRuntime.jsx("div",{onDragOver:S,onDragLeave:E,onDrop:T,className:cn("rounded-xl border-2 border-dashed h-32 overflow-hidden transition-all duration-200",y?"border-primary bg-primary/10 text-primary scale-[1.02] shadow-md":"border-muted-foreground/20"),children:y?jsxRuntime.jsxs("div",{className:"pointer-events-none flex h-full flex-col items-center justify-center gap-2 text-primary",children:[jsxRuntime.jsx(Image$2,{className:"h-5 w-5 animate-bounce"}),jsxRuntime.jsx("span",{className:"text-xs font-medium",children:"Drop here"})]}):jsxRuntime.jsxs("div",{className:"flex h-full flex-col",children:[jsxRuntime.jsx("button",{type:"button",disabled:u,onClick:()=>g.current?.click(),"aria-label":m("uploadKey"),className:R,children:jsxRuntime.jsx(ImagePlus,{className:"h-6 w-6"})}),jsxRuntime.jsx("button",{type:"button",disabled:u,onClick:d,"aria-label":m("searchGifOrImagesKey"),className:cn(R,"border-t border-border"),children:jsxRuntime.jsx(Search,{className:"h-6 w-6"})}),jsxRuntime.jsx("button",{type:"button",disabled:u,onClick:p,"aria-label":m("addTextOptionKey"),className:cn(R,"border-t border-border"),children:jsxRuntime.jsx(NotebookPen,{className:"h-6 w-6"})})]})})]})},EmptyPlaceholder=({slotNumber:u})=>jsxRuntime.jsx("div",{className:"flex h-32 select-none items-center justify-center rounded-xl border-2 border-dashed border-muted-foreground/15 text-2xl font-bold text-muted-foreground/25 ",children:u}),LoadingSlot=()=>jsxRuntime.jsxs("div",{className:"flex h-32 flex-col items-center justify-center gap-2 rounded-xl border-2 border-dashed border-primary/50 bg-primary/5 text-primary ",children:[jsxRuntime.jsx(Spinner,{}),jsxRuntime.jsx("span",{className:"text-xs font-medium",children:"Uploading..."})]});function Card({className:u,...n}){return jsxRuntime.jsx("div",{"data-slot":"card",className:cn("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",u),...n})}var extendStatics=function(u,n){return extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(d,p){d.__proto__=p}||function(d,p){for(var m in p)p.hasOwnProperty(m)&&(d[m]=p[m])},extendStatics(u,n)};function __extends(u,n){extendStatics(u,n);function d(){this.constructor=u}u.prototype=n===null?Object.create(n):(d.prototype=n.prototype,new d)}var __assign=function(){return __assign=Object.assign||function(n){for(var d,p=1,m=arguments.length;p<m;p++){d=arguments[p];for(var g in d)Object.prototype.hasOwnProperty.call(d,g)&&(n[g]=d[g])}return n},__assign.apply(this,arguments)};function throttle(u,n,d,p){var m,g=!1,y=0;function b(){m&&clearTimeout(m)}function S(){b(),g=!0}typeof n!="boolean"&&(p=d,d=n,n=void 0);function E(){var T=this,_=Date.now()-y,R=arguments;if(g)return;function A(){y=Date.now(),d.apply(T,R)}function C(){m=void 0}p&&!m&&A(),b(),p===void 0&&_>u?A():n!==!0&&(m=setTimeout(p?C:A,p===void 0?u-_:u))}return E.cancel=S,E}var ThresholdUnits={Pixel:"Pixel",Percent:"Percent"},defaultThreshold={unit:ThresholdUnits.Percent,value:.8};function parseThreshold(u){return typeof u=="number"?{unit:ThresholdUnits.Percent,value:u*100}:typeof u=="string"?u.match(/^(\d*(\.\d+)?)px$/)?{unit:ThresholdUnits.Pixel,value:parseFloat(u)}:u.match(/^(\d*(\.\d+)?)%$/)?{unit:ThresholdUnits.Percent,value:parseFloat(u)}:defaultThreshold:defaultThreshold}var InfiniteScroll=(function(u){__extends(n,u);function n(d){var p=u.call(this,d)||this;return p.lastScrollTop=0,p.actionTriggered=!1,p.startY=0,p.currentY=0,p.dragging=!1,p.maxPullDownDistance=0,p.getScrollableTarget=function(){return p.props.scrollableTarget instanceof HTMLElement?p.props.scrollableTarget:typeof p.props.scrollableTarget=="string"?document.getElementById(p.props.scrollableTarget):(p.props.scrollableTarget,null)},p.onStart=function(m){p.lastScrollTop||(p.dragging=!0,m instanceof MouseEvent?p.startY=m.pageY:m instanceof TouchEvent&&(p.startY=m.touches[0].pageY),p.currentY=p.startY,p._infScroll&&(p._infScroll.style.willChange="transform",p._infScroll.style.transition="transform 0.2s cubic-bezier(0,0,0.31,1)"))},p.onMove=function(m){p.dragging&&(m instanceof MouseEvent?p.currentY=m.pageY:m instanceof TouchEvent&&(p.currentY=m.touches[0].pageY),!(p.currentY<p.startY)&&(p.currentY-p.startY>=Number(p.props.pullDownToRefreshThreshold)&&p.setState({pullToRefreshThresholdBreached:!0}),!(p.currentY-p.startY>p.maxPullDownDistance*1.5)&&p._infScroll&&(p._infScroll.style.overflow="visible",p._infScroll.style.transform="translate3d(0px, "+(p.currentY-p.startY)+"px, 0px)")))},p.onEnd=function(){p.startY=0,p.currentY=0,p.dragging=!1,p.state.pullToRefreshThresholdBreached&&(p.props.refreshFunction&&p.props.refreshFunction(),p.setState({pullToRefreshThresholdBreached:!1})),requestAnimationFrame(function(){p._infScroll&&(p._infScroll.style.overflow="auto",p._infScroll.style.transform="none",p._infScroll.style.willChange="unset")})},p.onScrollListener=function(m){typeof p.props.onScroll=="function"&&setTimeout(function(){return p.props.onScroll&&p.props.onScroll(m)},0);var g=p.props.height||p._scrollableNode?m.target:document.documentElement.scrollTop?document.documentElement:document.body;if(!p.actionTriggered){var y=p.props.inverse?p.isElementAtTop(g,p.props.scrollThreshold):p.isElementAtBottom(g,p.props.scrollThreshold);y&&p.props.hasMore&&(p.actionTriggered=!0,p.setState({showLoader:!0}),p.props.next&&p.props.next()),p.lastScrollTop=g.scrollTop}},p.state={showLoader:!1,pullToRefreshThresholdBreached:!1,prevDataLength:d.dataLength},p.throttledOnScrollListener=throttle(150,p.onScrollListener).bind(p),p.onStart=p.onStart.bind(p),p.onMove=p.onMove.bind(p),p.onEnd=p.onEnd.bind(p),p}return n.prototype.componentDidMount=function(){if(typeof this.props.dataLength>"u")throw new Error('mandatory prop "dataLength" is missing. The prop is needed when loading more content. Check README.md for usage');if(this._scrollableNode=this.getScrollableTarget(),this.el=this.props.height?this._infScroll:this._scrollableNode||window,this.el&&this.el.addEventListener("scroll",this.throttledOnScrollListener),typeof this.props.initialScrollY=="number"&&this.el&&this.el instanceof HTMLElement&&this.el.scrollHeight>this.props.initialScrollY&&this.el.scrollTo(0,this.props.initialScrollY),this.props.pullDownToRefresh&&this.el&&(this.el.addEventListener("touchstart",this.onStart),this.el.addEventListener("touchmove",this.onMove),this.el.addEventListener("touchend",this.onEnd),this.el.addEventListener("mousedown",this.onStart),this.el.addEventListener("mousemove",this.onMove),this.el.addEventListener("mouseup",this.onEnd),this.maxPullDownDistance=this._pullDown&&this._pullDown.firstChild&&this._pullDown.firstChild.getBoundingClientRect().height||0,this.forceUpdate(),typeof this.props.refreshFunction!="function"))throw new Error(`Mandatory prop "refreshFunction" missing.
218
218
  Pull Down To Refresh functionality will not work
219
- as expected. Check README.md for usage'`)},n.prototype.componentWillUnmount=function(){this.el&&(this.el.removeEventListener("scroll",this.throttledOnScrollListener),this.props.pullDownToRefresh&&(this.el.removeEventListener("touchstart",this.onStart),this.el.removeEventListener("touchmove",this.onMove),this.el.removeEventListener("touchend",this.onEnd),this.el.removeEventListener("mousedown",this.onStart),this.el.removeEventListener("mousemove",this.onMove),this.el.removeEventListener("mouseup",this.onEnd)))},n.prototype.componentDidUpdate=function(d){this.props.dataLength!==d.dataLength&&(this.actionTriggered=!1,this.setState({showLoader:!1}))},n.getDerivedStateFromProps=function(d,p){var m=d.dataLength!==p.prevDataLength;return m?__assign(__assign({},p),{prevDataLength:d.dataLength}):null},n.prototype.isElementAtTop=function(d,p){p===void 0&&(p=.8);var m=d===document.body||d===document.documentElement?window.screen.availHeight:d.clientHeight,g=parseThreshold(p);return g.unit===ThresholdUnits.Pixel?d.scrollTop<=g.value+m-d.scrollHeight+1:d.scrollTop<=g.value/100+m-d.scrollHeight+1},n.prototype.isElementAtBottom=function(d,p){p===void 0&&(p=.8);var m=d===document.body||d===document.documentElement?window.screen.availHeight:d.clientHeight,g=parseThreshold(p);return g.unit===ThresholdUnits.Pixel?d.scrollTop+m>=d.scrollHeight-g.value:d.scrollTop+m>=g.value/100*d.scrollHeight},n.prototype.render=function(){var d=this,p=__assign({height:this.props.height||"auto",overflow:"auto",WebkitOverflowScrolling:"touch"},this.props.style),m=this.props.hasChildren||!!(this.props.children&&this.props.children instanceof Array&&this.props.children.length),g=this.props.pullDownToRefresh&&this.props.height?{overflow:"auto"}:{};return React__namespace.default.createElement("div",{style:g,className:"infinite-scroll-component__outerdiv"},React__namespace.default.createElement("div",{className:"infinite-scroll-component "+(this.props.className||""),ref:function(y){return d._infScroll=y},style:p},this.props.pullDownToRefresh&&React__namespace.default.createElement("div",{style:{position:"relative"},ref:function(y){return d._pullDown=y}},React__namespace.default.createElement("div",{style:{position:"absolute",left:0,right:0,top:-1*this.maxPullDownDistance}},this.state.pullToRefreshThresholdBreached?this.props.releaseToRefreshContent:this.props.pullDownToRefreshContent)),this.props.children,!this.state.showLoader&&!m&&this.props.hasMore&&this.props.loader,this.state.showLoader&&this.props.hasMore&&this.props.loader,!this.props.hasMore&&this.props.endMessage))},n})(React.Component);function usePagination(u=20){const[n,d]=React.useState({offset:0,limit:u,hasMore:!0,isLoading:!1}),p=React.useCallback(()=>{d({offset:0,limit:u,hasMore:!0,isLoading:!1})},[u]),m=React.useCallback(()=>{d(b=>({...b,offset:b.offset+b.limit}))},[]),g=React.useCallback(b=>{d(S=>({...S,isLoading:b}))},[]),y=React.useCallback(b=>{d(S=>({...S,hasMore:b}))},[]);return{...n,reset:p,loadMore:m,setLoading:g,setHasMore:y}}function useMediaSearch(u){const{core:n}=useApi(),[d,p]=React.useState([]),[m,g]=React.useState(""),y=usePagination(),b=React.useCallback(async({offset:_,limit:R,query:A,reset:C=!1})=>{y.setLoading(!0);try{const k=A?await n.searchWebImage(A,R,_):await n.fetchTrendyWebImage(R,_);k.length===0?y.setHasMore(!1):p(I=>C?k:[...I,...k])}catch{y.setHasMore(!1)}finally{y.setLoading(!1)}},[n,y]),S=React.useCallback(async({offset:_,limit:R,query:A="",reset:C=!1})=>{y.setLoading(!0);try{const k=A?await n.searchWebGif(A,R,_):await n.fetchTrendyWebGif(R,_);k.length===0?y.setHasMore(!1):p(I=>C?k:[...I,...k])}catch{y.setHasMore(!1)}finally{y.setLoading(!1)}},[n,y]),E=React.useCallback(_=>u==="images"?b(_):S(_),[u,b,S]),T=React.useCallback(()=>{p([]),g(""),y.reset()},[y]);return{items:d,...y,searchQuery:m,setSearchQuery:g,fetch:E,reset:T}}const CACHE_TTL_MS=6e4,withInitialQuery={limit:ITEMS_PER_PAGE,offset:0,query:"",reset:!0};function ImageSearchModal({open:u,onOpenChange:n,onImageSelect:d,initialQuery:p,children:m}){const{t:g}=usePostBuilder(),[y,b]=React.useState("gifs"),[S,E]=React.useState(p??""),T=React.useRef(null),_=React.useRef(),R=useMediaSearch("images"),A=useMediaSearch("gifs"),C=React.useRef(A),k=React.useRef({gifs:{query:"",timestamp:0},images:{query:"",timestamp:0}}),I=React.useCallback((B,Y)=>{const Z=k.current[B];return Z.query===Y&&Date.now()-Z.timestamp<CACHE_TTL_MS},[]),P=React.useCallback((B,Y)=>{k.current[B]={query:Y,timestamp:Date.now()}},[]);React.useEffect(()=>{if(!u)return;const B=p??"";E(B);const Y={...withInitialQuery,query:B};return A.fetch(Y).catch(Z=>{}),R.fetch(Y).catch(Z=>{}),P("gifs",B),P("images",B),_.current=setTimeout(()=>{T.current?.select()},0),()=>{clearTimeout(_.current)}},[u]),React.useEffect(()=>{C.current=y==="images"?R:A},[y,R,A]);const D=B=>{clearTimeout(_.current),O.cancel(),n?.(B),B||(R.reset(),A.reset(),E(""),k.current={gifs:{query:"",timestamp:0},images:{query:"",timestamp:0}})},O=React.useMemo(()=>debounce$2(async(B,Y)=>{const Z=C.current;Z.reset(),await Z.fetch({...withInitialQuery,query:B}),P(Y,B)},500),[P]);React.useEffect(()=>()=>{O.cancel(),clearTimeout(_.current)},[O]);const N=React.useCallback(B=>{E(B),O(B,y)?.catch(Y=>{})},[O,y]),j=React.useCallback(B=>{const Y=B;if(O.cancel(),b(Y),I(Y,S))return;const Z=Y==="images"?R:A;Z.reset(),Z.fetch({...withInitialQuery,query:S}).then(()=>P(Y,S)).catch(Q=>{})},[O,S,I,R,A,P]),L=React.useCallback(async()=>{const B=C.current,Y=B.offset+B.limit;B.loadMore(),await B.fetch({offset:Y,limit:B.limit,query:S})},[S]),H=React.useCallback(B=>{d?.(B,y==="gifs"?ImageSearchFrom?.Gif:y==="images"?ImageSearchFrom.Image:void 0),n(!1)},[y,d,n]);return jsxRuntime.jsxs(Dialog,{open:u,onOpenChange:D,children:[jsxRuntime.jsx(DialogTrigger,{asChild:!0,children:m??jsxRuntime.jsx(Button,{children:"Open Search Modal"})}),jsxRuntime.jsxs(DialogContent,{className:"max-w-4xl w-full h-[80vh] flex flex-col overflow-hidden px-0 py-0 -translate-1/2",children:[jsxRuntime.jsx(DialogHeader,{className:"p-4 border-b bg-accent",children:jsxRuntime.jsx(DialogTitle,{children:g("mediaSearchTitleKey")})}),jsxRuntime.jsxs(Tabs,{defaultValue:"gifs",value:y,onValueChange:j,className:"flex-1 grow flex flex-col overflow-y-auto",children:[jsxRuntime.jsx("div",{className:"px-4",children:jsxRuntime.jsxs(TabsList,{className:"grid w-full grid-cols-2",children:[jsxRuntime.jsx(TabsTrigger,{value:"gifs",children:g("gifSearchKey")}),jsxRuntime.jsx(TabsTrigger,{value:"images",children:g("imageSearchKey")})]})}),jsxRuntime.jsx(SearchBar,{ref:T,value:S,onChange:N,placeholder:g(y==="gifs"?"searchGifPlaceholder":"searchIMagePlaceholder")}),jsxRuntime.jsx(TabsContent,{value:"images",className:"flex-1 grow mt-4 overflow-y-auto",children:jsxRuntime.jsx(MediaGrid,{items:R.items,onItemClick:H,hasMore:R.hasMore,loadMore:L,scrollTargetId:SCROLL_TARGET_IDS.images})}),jsxRuntime.jsx(TabsContent,{value:"gifs",className:"flex-1 grow mt-4 overflow-y-auto",children:jsxRuntime.jsx(MediaGrid,{items:A.items,onItemClick:H,hasMore:A.hasMore,loadMore:L,scrollTargetId:SCROLL_TARGET_IDS.gifs})})]})]})]})}const SearchBar=React__namespace.default.forwardRef(({value:u,onChange:n,placeholder:d},p)=>jsxRuntime.jsx("div",{className:"mt-2 px-4",children:jsxRuntime.jsxs("div",{className:"relative",children:[jsxRuntime.jsx(Search,{className:"absolute left-3 top-1/2 -translate-y-1/2 transform-none h-4 w-4 text-muted-foreground"}),jsxRuntime.jsx(Input,{ref:p,type:"text",placeholder:d,value:u,onChange:m=>n(m.target.value),className:"pl-9"})]})}));SearchBar.displayName="SearchBar";function MediaGrid({items:u,onItemClick:n,hasMore:d,loadMore:p,scrollTargetId:m}){const g=b=>b?.thumbnail?.url||b?.source?.url,y=b=>b?.source?.url||b?.thumbnail?.url;return jsxRuntime.jsx("div",{id:m,className:"h-full overflow-y-auto",children:jsxRuntime.jsx(InfiniteScroll,{dataLength:u.length,next:p,hasMore:d,loader:jsxRuntime.jsx("div",{className:"flex justify-center py-4",children:jsxRuntime.jsx(Spinner,{className:"h-6 w-6"})}),endMessage:jsxRuntime.jsx("p",{className:"text-center text-muted-foreground py-4",children:u.length===0?"No items found":"No more items to load"}),scrollableTarget:m,children:jsxRuntime.jsx("div",{className:"grid grid-cols-2 md:grid-cols-3 gap-4 py-2 px-4",children:u.map(b=>jsxRuntime.jsx(Card,{className:"py-0 overflow-hidden cursor-pointer hover:ring-2 hover:ring-primary transition-all",onClick:()=>n(y(b)),children:jsxRuntime.jsx("img",{loading:"lazy",src:g(b),alt:"Media item",className:"w-full h-32 object-cover"})},y(b)))})})})}const mediaSearch=Object.freeze(Object.defineProperty({__proto__:null,ImageSearchModal,MediaGrid,SearchBar},Symbol.toStringTag,{value:"Module"})),createMediaOption=(u,n=MediaItemType.MEDIA_ITEM,d)=>({key:v4(),type:n,imageType:u?.type,...d?{searchFrom:d}:{},sources:{original:{url:u?.high_resolution??u?.url,width:u?.width,height:u?.height,isBase64:!1},thumbnail:{url:u?.thumbnail,width:u?.width,height:u?.height,isBase64:!1},...u?.placeholder?{placeholder:{url:u?.placeholder,width:u?.width,height:u?.height,isBase64:!0}}:{}},playableDuration:u?.playableDuration??null}),isTextChoice=u=>"text"in u,createTextOption=(u,n)=>({key:v4(),type:PollType.POLL_TEXT_ITEM,option_id:v4(),option_color:OPTION_COLORS[n%OPTION_COLORS.length],text:u.trim()}),createPollMediaOption=(u,n,d)=>{const m=u?.type?.includes("video")?PollType.POLL_MEDIA_ITEM:PollType.POLL_IMAGE_ITEM;return{...createMediaOption(u,m,d),option_color:OPTION_COLORS[n%OPTION_COLORS.length],option_id:v4()}},createPollMediaPlaceholder=(u,n,d)=>{const p=u.type.startsWith("video/");return{key:v4(),type:p?PollType.POLL_MEDIA_ITEM:PollType.POLL_IMAGE_ITEM,imageType:u.type,sources:{original:{url:n,width:0,height:0,isBase64:!1},thumbnail:{url:n,width:0,height:0,isBase64:!1},placeholder:{url:"",width:0,height:0,isBase64:!0}},playableDuration:null,option_color:OPTION_COLORS[d%OPTION_COLORS.length],option_id:v4()}},ensurePollMinimum=u=>u.length!==1?u:u.concat(u).map((n,d)=>({...n,key:n?.key??v4(),option_id:d===0?n.option_id:v4(),option_color:OPTION_COLORS[d%OPTION_COLORS.length]})),isPlaceholder=u=>"type"in u&&u.type==="placeholder",PollCreator=({choices:u,onChange:n})=>{const{fileStore:d}=useApi(),{allowSendWhileUploading:p,t:m}=usePostBuilder(),{editor:g}=useCurrentEditor(),[y,b]=React.useState(""),[S,E]=React.useState(!1),[T,_]=React.useState(!1),[R,A]=React.useState(u),{trackPollOptionAdded:C,trackPollOptionRemoved:k,trackMediaUploadFailed:I,trackMediaUploadSuccess:P}=useAnalyticsTracking(),D=React.useRef(!1);React.useEffect(()=>{D.current||A(u),D.current=!1},[u]);const O=POLL_LIMITS.MAX-R.length,N=R.length<POLL_LIMITS.MAX,j=R.filter(te=>!isPlaceholder(te)),L=j.length>=POLL_LIMITS.MIN,H=React.useRef(!1),B=React.useRef(j.length);React.useEffect(()=>{const te=B.current,F=j.length;B.current=F,!H.current&&te===0&&F>=1&&(H.current=!0,requestAnimationFrame(()=>{if(!g||g.isDestroyed)return;let q="";if(g.state.doc.forEach(W=>{W.type.name==="paragraph"&&(q+=W.textContent)}),q.trim())return;const V=m("pollQuestionPlaceholderKey");g.chain().insertContentAt(1,V).setTextSelection({from:1,to:1+V.length}).focus().run()}))},[j.length,g,m]);const Y=te=>{const F=te.filter(q=>!isPlaceholder(q));D.current=!0,n(F)},Z=te=>{A(te),setTimeout(()=>{Y(te)},0)},Q=()=>{if(!y.trim()||!N)return;const te=createTextOption(y,R.length),F=[...R,te];Z(F),C({option_count:F.length,option_type:"text"}),b(""),E(!1)},J=async te=>{if(!te||!N)return;let F=te.slice(0,O);const q=F.filter(ae=>!validateFile(ae,MAX_FILE_SIZE,[]).valid);if(q.length>0){const ae=q.map(le=>`"${le.name}"`).join(", ");if(toast.error(`${q.length>1?"Some files exceed":`${ae} exceeds`} the ${MAX_FILE_SIZE/1024/1024}MB limit`),F=F.filter(le=>validateFile(le,MAX_FILE_SIZE,[]).valid),F.length===0)return}const V=R.length;if(F=await Promise.all(F.map(async ae=>{if(ae.type.startsWith("image/"))try{return await imageCompression(ae,{maxSizeMB:10})}catch{return ae}return ae})),!p){const ae=F.map((ce,oe)=>({type:"placeholder",key:`placeholder-${Date.now()}-${oe}`})),le=[...R,...ae];A(le);try{const ce=F.map(async(de,fe)=>{try{const me=await d.uploadImage(de);return P({editorType:EditorTypes.Poll,mediaType:de.type.startsWith("video/")?"video":"image",fileSizeMB:de.size/1048576,source:"local"}),createPollMediaOption(me,V+fe)}catch{return I({editorType:EditorTypes.Poll,mediaType:de.type.startsWith("video/")?"video":"image",fileSizeMB:de.size/1048576,source:"local",errorType:"server_error"}),null}}),oe=await Promise.all(ce);A(de=>{const fe=[...de];oe.forEach((he,ge)=>{const ye=V+ge;he!==null&&ye<fe.length&&(fe[ye]=he)});const me=fe.filter(he=>!isPlaceholder(he));return oe?.forEach(he=>{he!==null&&C({option_count:me.length,option_type:PollOptionType[he.type]})}),setTimeout(()=>{Y(me)},0),me})}catch{A(oe=>{const de=oe.filter(fe=>!isPlaceholder(fe));return setTimeout(()=>{Y(de)},0),de})}return}const W=g?.storage?.poll;if(!W)return;const ee=F.map((ae,le)=>{const ce=URL.createObjectURL(ae);return{placeholder:createPollMediaPlaceholder(ae,ce,V+le),blob:ae,blobUrl:ce}}),se=[...R,...ee.map(ae=>ae.placeholder)];A(se),setTimeout(()=>Y(se),0),ee.forEach(({placeholder:ae,blob:le})=>{const ce=new AbortController,oe=le instanceof File?le:new File([le],ae.key,{type:le.type}),de=d.uploadChunked(oe,void 0,ce.signal).then(fe=>({...ae,sources:{original:{url:fe.high_resolution??fe.url,width:fe.width??0,height:fe.height??0,isBase64:!1},thumbnail:{url:fe.thumbnail??fe.url,width:fe.width??0,height:fe.height??0,isBase64:!1},placeholder:{url:fe.placeholder??"",width:fe.width??0,height:fe.height??0,isBase64:!0}}}));de.catch(()=>{}),de.then(fe=>{A(me=>{const he=me.map(ge=>!isPlaceholder(ge)&&ge.key===ae.key?fe:ge);return setTimeout(()=>Y(he),0),he})}).catch(()=>{}),W.registerPendingUpload(ae.key,{blob:le,promise:de,abort:()=>ce.abort()})})},re=async(te,F)=>{if(!N)return;const q=R.length,V={type:"placeholder",key:`placeholder-${Date.now()}`},W=[...R,V];A(W);try{const ee=await d.uploadUrl(te),se=createPollMediaOption(ee,q,F),ae=F===ImageSearchFrom.Gif||ee?.url?.toLowerCase().includes(".gif");P({editorType:EditorTypes.Poll,mediaType:ae?"gif":"image",fileSizeMB:0,source:F===ImageSearchFrom?.Gif?"gif_search":"image_search"}),A(le=>{const ce=[...le];return q<ce.length&&isPlaceholder(ce[q])&&(ce[q]=se),C({option_count:ce.filter(oe=>!isPlaceholder(oe)).length,option_type:ae?"gif":"image"}),setTimeout(()=>{Y(ce)},0),ce})}catch{I({editorType:EditorTypes.Poll,mediaType:F===ImageSearchFrom.Gif?"gif":"image",fileSizeMB:0,source:F===ImageSearchFrom.Gif?"gif_search":"image_search",errorType:"server_error"}),A(se=>{const ae=se.filter(le=>!isPlaceholder(le));return setTimeout(()=>{Y(ae)},0),ae})}},ne=te=>{if(!L)return;const F=R[te];if(!isPlaceholder(F)){const V=g?.storage?.poll,W=V?.getPendingUpload?.(F.key);W&&(W.abort(),V.clearPendingUpload(F.key))}const q=R.filter((V,W)=>W!==te);isPlaceholder(F)||k({option_count:q.filter(V=>!isPlaceholder(V)).length,option_type:PollOptionType[F.type]}),Z(q)};return jsxRuntime.jsxs("div",{"data-type":"poll",className:"w-full",children:[jsxRuntime.jsxs("div",{className:"grid grid-cols-2 gap-3 sm:gap-4 lg:grid-cols-4",children:[R.map((te,F)=>isPlaceholder(te)?jsxRuntime.jsx(LoadingSlot,{},te.key):isTextChoice(te)?jsxRuntime.jsx(TextChoiceCard,{choice:te,index:F,canRemove:L,onRemove:()=>ne(F)},te.key):jsxRuntime.jsx(MediaChoiceCard,{choice:te,index:F,canRemove:L,onRemove:()=>ne(F)},te.key)),N&&jsxRuntime.jsx(AddChoiceBlock,{disabled:!N,onFiles:te=>{J(te)},onOpenSearch:()=>_(!0),onOpenText:()=>E(!0)}),Array.from({length:Math.max(0,O-1)}).map((te,F)=>jsxRuntime.jsx(EmptyPlaceholder,{slotNumber:R.length+2+F},`empty-${F}`))]}),jsxRuntime.jsx(TextOptionModal,{open:S,onOpenChange:E,value:y,onChange:b,onSubmit:Q,disabled:!N}),T&&jsxRuntime.jsx(ImageSearchModal,{open:T,onOpenChange:_,onImageSelect:(te,F)=>{re(te,F)},initialQuery:extractInitialSearchQuery(g)})]})},PollComponent=({node:u,updateAttributes:n})=>{const{choices:d}=u.attrs,p=m=>{n({choices:m})};return jsxRuntime.jsx(NodeViewWrapper,{"data-type":"poll","data-drag-handle":"false",className:"not-prose mt-5 select-none",children:jsxRuntime.jsx(PollCreator,{choices:d,onChange:p,onRemovePoll:()=>{}})})},Poll=Node3.create({name:"poll",group:"block",atom:!0,draggable:!1,selectable:!1,addAttributes(){return{choices:{default:[]}}},parseHTML(){return[{tag:'div[data-type="poll"]'}]},renderHTML({HTMLAttributes:u}){return["div",mergeAttributes(u,{"data-type":"poll"})]},addNodeView(){return ReactNodeViewRenderer(PollComponent)},addStorage(){const u=new Map;return{pendingUploads:u,getPendingUpload(n){return u.get(n)},registerPendingUpload(n,d){u.set(n,d)},clearPendingUpload(n){u.delete(n)}}},addCommands(){return{insertPoll:u=>({chain:n})=>n().insertContent({type:this.name,attrs:u}).run()}},addProseMirrorPlugins(){const u=this.name;return[new Plugin({key:new PluginKey("pollKeyHandlerPlugin"),props:{handleKeyDown:(n,d)=>{const{state:p}=n,{selection:m}=p,g=d.key;if(g!=="Backspace"&&g!=="Delete")return!1;if(m instanceof NodeSelection&&m.node.type.name===u)return d.preventDefault(),!0;const{$from:y,empty:b}=m;if(b&&y){const S=y.nodeBefore;if(S&&S.type.name===u&&g==="Backspace")return d.preventDefault(),!0;const E=y.nodeAfter;if(E&&E.type.name===u&&g==="Delete")return d.preventDefault(),!0}return!1},handleDOMEvents:{mousedown:(n,d)=>{const p=d,m=p.target;if(!m||m.closest('input, textarea, button, select, [contenteditable="true"]'))return!1;const g=m.closest('[data-type="poll"]')??null;if(!g)return!1;p.preventDefault();const y=n.posAtDOM(g,0);if(typeof y=="number"){const b=n.state.doc.resolve(y);let S=y;const E=b.nodeAfter;if(E&&E.type.name===u&&(S=y+E.nodeSize),S<=n.state.doc.content.size){const T=n.state.tr.setSelection(TextSelection.create(n.state.doc,S));n.dispatch(T),n.focus()}}return!0}}},appendTransaction:(n,d,p)=>{const m=b=>{let S=0;return b.descendants(E=>{E.type.name===u&&S++}),S},g=m(d.doc),y=m(p.doc);if(g>0&&y===0){const b=p.tr;return b.replaceWith(0,p.doc.content.size,d.doc.content),b}}})]}});var NODES=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Primitive=NODES.reduce((u,n)=>{const d=createSlot$3(`Primitive.${n}`),p=React__namespace.forwardRef((m,g)=>{const{asChild:y,...b}=m,S=y?d:n;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),jsxRuntime.jsx(S,{...b,ref:g})});return p.displayName=`Primitive.${n}`,{...u,[n]:p}},{}),NAME="Separator",DEFAULT_ORIENTATION="horizontal",ORIENTATIONS=["horizontal","vertical"],Separator$1=React__namespace.forwardRef((u,n)=>{const{decorative:d,orientation:p=DEFAULT_ORIENTATION,...m}=u,g=isValidOrientation(p)?p:DEFAULT_ORIENTATION,b=d?{role:"none"}:{"aria-orientation":g==="vertical"?g:void 0,role:"separator"};return jsxRuntime.jsx(Primitive.div,{"data-orientation":g,...b,...m,ref:n})});Separator$1.displayName=NAME;function isValidOrientation(u){return ORIENTATIONS.includes(u)}var Root=Separator$1;function Separator({className:u,orientation:n="horizontal",decorative:d=!0,...p}){return jsxRuntime.jsx(Root,{"data-slot":"separator",decorative:d,orientation:n,className:cn("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",u),...p})}function FieldSet({className:u,...n}){return jsxRuntime.jsx("fieldset",{"data-slot":"field-set",className:cn("flex flex-col gap-6","has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3",u),...n})}function FieldGroup({className:u,...n}){return jsxRuntime.jsx("div",{"data-slot":"field-group",className:cn("group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4",u),...n})}const fieldVariants=cva("group/field flex w-full gap-3 data-[invalid=true]:text-destructive",{variants:{orientation:{vertical:["flex-col [&>*]:w-full [&>.sr-only]:w-auto"],horizontal:["flex-row items-center","[&>[data-slot=field-label]]:flex-auto","has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"],responsive:["flex-col [&>*]:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto","@md/field-group:[&>[data-slot=field-label]]:flex-auto","@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"]}},defaultVariants:{orientation:"vertical"}});function Field({className:u,orientation:n="vertical",...d}){return jsxRuntime.jsx("div",{role:"group","data-slot":"field","data-orientation":n,className:cn(fieldVariants({orientation:n}),u),...d})}function FieldLabel({className:u,...n}){return jsxRuntime.jsx(Label,{"data-slot":"field-label",className:cn("group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50","has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>*]:data-[slot=field]:p-4","has-data-[state=checked]:bg-primary/5 has-data-[state=checked]:border-primary dark:has-data-[state=checked]:bg-primary/10",u),...n})}function FieldError({className:u,children:n,errors:d,...p}){const m=React.useMemo(()=>n||(d?d?.length===1&&d[0]?.message?d[0].message:jsxRuntime.jsx("ul",{className:"ml-4 flex list-disc flex-col gap-1",children:d.map((g,y)=>g?.message&&jsxRuntime.jsx("li",{children:g.message},y))}):null),[n,d]);return m?jsxRuntime.jsx("div",{role:"alert","data-slot":"field-error",className:cn("text-destructive text-sm font-normal",u),...p,children:m}):null}function Textarea({className:u,...n}){return jsxRuntime.jsx("textarea",{"data-slot":"textarea",className:cn("border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",u),...n})}const InputGroup=React.forwardRef(({className:u,...n},d)=>jsxRuntime.jsx("div",{ref:d,"data-slot":"input-group",role:"group",className:cn("group/input-group border-input dark:bg-input/30 relative flex w-full items-center rounded-md border shadow-xs transition-[color,box-shadow] outline-none","h-9 min-w-0 has-[>textarea]:h-auto","has-[>[data-align=inline-start]]:[&>input]:pl-2","has-[>[data-align=inline-end]]:[&>input]:pr-2","has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3","has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3","has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot=input-group-control]:focus-visible]:ring-[3px]","has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40",u),...n}));InputGroup.displayName="InputGroup";const inputGroupAddonVariants=cva("text-muted-foreground flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium select-none [&>svg:not([class*='size-'])]:size-4 [&>kbd]:rounded-[calc(var(--radius)-5px)] group-data-[disabled=true]/input-group:opacity-50",{variants:{align:{"inline-start":"order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]","inline-end":"order-last pr-3 has-[>button]:mr-[-0.45rem] has-[>kbd]:mr-[-0.35rem]","block-start":"order-first w-full justify-start px-3 pt-3 [.border-b]:pb-3 group-has-[>input]/input-group:pt-2.5","block-end":"order-last w-full justify-start px-3 pb-3 [.border-t]:pt-3 group-has-[>input]/input-group:pb-2.5"}},defaultVariants:{align:"inline-start"}}),InputGroupAddon=React.forwardRef(({className:u,align:n="inline-start",...d},p)=>jsxRuntime.jsx("div",{ref:p,role:"group","data-slot":"input-group-addon","data-align":n,className:cn(inputGroupAddonVariants({align:n}),u),onClick:m=>{m.target.closest("button")||m.currentTarget.parentElement?.querySelector("input")?.focus()},...d}));InputGroupAddon.displayName="InputGroupAddon";const inputGroupButtonVariants=cva("text-sm shadow-none flex gap-2 items-center",{variants:{size:{xs:"h-6 gap-1 px-2 rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-3.5 has-[>svg]:px-2",sm:"h-8 px-2.5 gap-1.5 rounded-md has-[>svg]:px-2.5","icon-xs":"size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0","icon-sm":"size-8 p-0 has-[>svg]:p-0"}},defaultVariants:{size:"xs"}}),InputGroupButton=React.forwardRef(({className:u,type:n="button",variant:d="ghost",size:p="xs",...m},g)=>jsxRuntime.jsx(Button,{ref:g,type:n,"data-size":p,variant:d,className:cn(inputGroupButtonVariants({size:p}),u),...m}));InputGroupButton.displayName="InputGroupButton";const InputGroupText=React.forwardRef(({className:u,...n},d)=>jsxRuntime.jsx("span",{ref:d,className:cn("text-muted-foreground flex items-center gap-2 text-sm [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",u),...n}));InputGroupText.displayName="InputGroupText";const InputGroupInput=React.forwardRef(({className:u,ref:n,...d},p)=>jsxRuntime.jsx(Input,{ref:p,"data-slot":"input-group-control",className:cn("flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent",u),...d}));InputGroupInput.displayName="InputGroupInput";const InputGroupTextarea=React.forwardRef(({className:u,...n},d)=>jsxRuntime.jsx(Textarea,{ref:d,"data-slot":"input-group-control",className:cn("flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0 dark:bg-transparent",u),...n}));InputGroupTextarea.displayName="InputGroupTextarea";const URL_REGEX=/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?$/i,YOUTUBE_REGEX=/(?:https?:\/\/)?(?:www\.)?(?:youtube\.com\/watch\?(?:[^\s&]*&)*v=|youtu\.be\/)[\w-]+(?:[^\s]*)/gi,YOUTUBE_ID_REGEX=/(?:v=|\/)([a-zA-Z0-9_-]{11})(?:[?&].*)?$/,SPOTIFY_REGEX=/^(?:https?:\/\/)?(?:www\.)?open\.spotify\.com\/(track|playlist|album)\/[A-Za-z0-9_-]+/gi,WHITESPACE_REGEX=/[\n\r]/g,normalizeUrl=u=>u?`https://${u.trim().replace(/\s+/g,"").replace(/^(https?:\/\/)+/i,"")}`:"",isValidUrl=u=>URL_REGEX.test(u),detectMimeType=async u=>{try{return(await axios.head(u,{timeout:5e3})).headers["content-type"]}catch{return null}},resolveUrlType=async u=>{try{const d=await detectMimeType(u);if(d?.startsWith("image/"))return{type:MediaNodeTypes.Image,src:u};if(d?.startsWith("video/"))return{type:MediaNodeTypes.Video,src:u};if(d?.startsWith("audio/"))return{type:MediaNodeTypes.Audio,src:u}}catch{}const n=u.split(".").pop()?.toLowerCase();if(n){if(["jpg","jpeg","png","gif","webp","avif"].includes(n))return{type:MediaNodeTypes.Image,src:u};if(["mp4","webm","mov","mkv"].includes(n))return{type:MediaNodeTypes.Video,src:u};if(["mp3","wav","ogg","aac"].includes(n))return{type:MediaNodeTypes.Audio,src:u}}return null},convertLinkMetaToPreviewItem=u=>({linkDesc:u?.description,linkIcon:"",linkImage:{width:u?.image?.width,height:u?.image?.height,url:u?.image?.high_resolution??u?.image?.url??u?.image?.thumbnail??u?.image?.placeholder},linkTitle:u?.title,linkUrl:u?.url,text:u?.title,type:MediaItemType.LINK_ITEM}),extractUrlSegments=u=>{const n=[],d=/(https?:\/\/[^\s]+)/g;let p=0,m;for(;(m=d.exec(u))!==null;)m.index>p&&n.push({type:"text",content:u.slice(p,m.index)}),n.push({type:"url",content:m[0]}),p=m.index+m[0].length;return p<u.length&&n.push({type:"text",content:u.slice(p)}),n},processTextNode=(u,n)=>{const d=getNodeText(n),p=getNodeMarks(n),m=extractUrlSegments(d);return m.length===0?[n]:m.map(g=>g.type==="url"?createLinkNode(u,g.content,g.content,p):createTextNode(u,g.content,p))},transformParagraphNode=(u,n)=>{if(!hasNodeContent(n))return n;const d=[],p=getNodeContent(n);return forEachNode(p,m=>{if(isTextNode(m)&&getNodeText(m)){const g=processTextNode(u,m);d.push(...g)}else d.push(m)}),createParagraphNode(u,createFragment(d),n.attrs)},transformUrlsInSlice=(u,n)=>{const d=[];return forEachNode(n.content,p=>{isParagraphNode(p)&&hasNodeContent(p)?d.push(transformParagraphNode(u,p)):d.push(p)}),new Slice(createFragment(d),n.openStart,n.openEnd)},LinkDecoratorModal=({defaultValues:u,open:n,onOpenChange:d,onInsertLink:p,hideTextInput:m=!1,children:g})=>{const{editor:y}=useCurrentEditor(),{core:b}=useApi(),{t:S}=usePostBuilder(),[E,T]=React.useState(u?.uid??null),[_,R]=React.useState(u?.link??""),[A,C]=React.useState(u?.text||""),[k,I]=React.useState(void 0),[P,D]=React.useState(!1),[O,N]=React.useState(!1),j=React.useRef(null),L=J=>{if(d?.(J),!J||!y)return;const re=getMarkAttrsAtSelection(y?.state,"customLink"),ne=normalizeUrl(re?.href??"");I(isValidUrl(ne)),D(isValidUrl(ne)),T(re?.uid??null),R(re?.href??""),C(re?.text||re?.href||"")},H=J=>{const re=J.target.value;if(re==="https:/")return;const ne=normalizeUrl(re);I(isValidUrl(ne)),R(ne)},B=J=>C(J.target.value),Y=()=>{const J=isValidUrl(_);I(J)},Z=(J,re,ne)=>{N(!0);let te;b?.resolveUrl(J)?.then(F=>te=F)?.catch(F=>{})?.finally(()=>{const F=convertLinkMetaToPreviewItem(te);N(!1),p(J,re,ne,F),d?.(!1)})},Q=J=>{if(J.key==="Enter"){if(J.preventDefault(),j.current===J.target||m)return Z(_,A,E??void 0);j?.current?.focus()}};return React.useEffect(()=>{if(!u?.link)return;const J=isValidUrl(u?.link);I(J),D(J),T(u?.uid??null),R(u?.link??""),C(u?.text||"")},[u]),jsxRuntime.jsxs(Dialog,{open:n,onOpenChange:L,children:[g?jsxRuntime.jsx(DialogTrigger,{asChild:!0,children:g}):null,jsxRuntime.jsxs(DialogContent,{className:"-translate-1/2",children:[jsxRuntime.jsx(DialogHeader,{children:jsxRuntime.jsx(DialogTitle,{children:S(P?"updateLinkKey":"insertLinkKey")})}),jsxRuntime.jsx(FieldSet,{children:jsxRuntime.jsxs(FieldGroup,{className:"gap-3",children:[jsxRuntime.jsxs(Field,{className:"gap-1.5",children:[jsxRuntime.jsxs(FieldLabel,{children:[S("linkInputLabelKey")," ",jsxRuntime.jsx("span",{className:"text-destructive",children:"*"})]}),jsxRuntime.jsxs(InputGroup,{children:[jsxRuntime.jsx(InputGroupInput,{value:_,onChange:H,onBlur:Y,onKeyDown:Q,placeholder:"https://x.com/shadcn"}),jsxRuntime.jsx(InputGroupAddon,{children:jsxRuntime.jsx(Link$1,{})})]}),!k&&k!==void 0&&jsxRuntime.jsx(FieldError,{errors:[{message:S("invalidLinkKey")}]})]}),!m&&jsxRuntime.jsxs(Field,{className:"gap-1.5",children:[jsxRuntime.jsx(FieldLabel,{children:S("linkTextInputLabelKey")}),jsxRuntime.jsxs(InputGroup,{children:[jsxRuntime.jsx(InputGroupInput,{ref:j,value:A,onChange:B,onKeyDown:Q,placeholder:S("linkTextInputLabelKey")}),jsxRuntime.jsx(InputGroupAddon,{children:jsxRuntime.jsx(TextAlignStart,{})})]})]})]})}),jsxRuntime.jsxs(DialogFooter,{children:[jsxRuntime.jsx(Button,{variant:"secondary",onClick:()=>d?.(!1),children:S("cancelKey")}),jsxRuntime.jsxs(Button,{disabled:!k||O,onClick:()=>Z(_,A,E??void 0),children:[O&&jsxRuntime.jsx(Spinner,{}),S(P?"updateKey":"insertKey")]})]})]})]})},linkDecorator=Object.freeze(Object.defineProperty({__proto__:null,LinkDecoratorModal},Symbol.toStringTag,{value:"Module"}));function createSlot(u){const n=createSlotClone(u),d=React__namespace.forwardRef((p,m)=>{const{children:g,...y}=p,b=React__namespace.Children.toArray(g),S=b.find(isSlottable);if(S){const E=S.props.children,T=b.map(_=>_===S?React__namespace.Children.count(E)>1?React__namespace.Children.only(null):React__namespace.isValidElement(E)?E.props.children:null:_);return jsxRuntime.jsx(n,{...y,ref:m,children:React__namespace.isValidElement(E)?React__namespace.cloneElement(E,void 0,T):null})}return jsxRuntime.jsx(n,{...y,ref:m,children:g})});return d.displayName=`${u}.Slot`,d}function createSlotClone(u){const n=React__namespace.forwardRef((d,p)=>{const{children:m,...g}=d;if(React__namespace.isValidElement(m)){const y=getElementRef(m),b=mergeProps(g,m.props);return m.type!==React__namespace.Fragment&&(b.ref=p?composeRefs(p,y):y),React__namespace.cloneElement(m,b)}return React__namespace.Children.count(m)>1?React__namespace.Children.only(null):null});return n.displayName=`${u}.SlotClone`,n}var SLOTTABLE_IDENTIFIER=Symbol("radix.slottable");function isSlottable(u){return React__namespace.isValidElement(u)&&typeof u.type=="function"&&"__radixId"in u.type&&u.type.__radixId===SLOTTABLE_IDENTIFIER}function mergeProps(u,n){const d={...n};for(const p in n){const m=u[p],g=n[p];/^on[A-Z]/.test(p)?m&&g?d[p]=(...b)=>{const S=g(...b);return m(...b),S}:m&&(d[p]=m):p==="style"?d[p]={...m,...g}:p==="className"&&(d[p]=[m,g].filter(Boolean).join(" "))}return{...u,...d}}function getElementRef(u){let n=Object.getOwnPropertyDescriptor(u.props,"ref")?.get,d=n&&"isReactWarning"in n&&n.isReactWarning;return d?u.ref:(n=Object.getOwnPropertyDescriptor(u,"ref")?.get,d=n&&"isReactWarning"in n&&n.isReactWarning,d?u.props.ref:u.props.ref||u.ref)}var POPOVER_NAME="Popover",[createPopoverContext]=createContextScope$2(POPOVER_NAME,[createPopperScope]),usePopperScope=createPopperScope(),[PopoverProvider,usePopoverContext]=createPopoverContext(POPOVER_NAME),Popover$1=u=>{const{__scopePopover:n,children:d,open:p,defaultOpen:m,onOpenChange:g,modal:y=!1}=u,b=usePopperScope(n),S=React__namespace.useRef(null),[E,T]=React__namespace.useState(!1),[_,R]=useControllableState({prop:p,defaultProp:m??!1,onChange:g,caller:POPOVER_NAME});return jsxRuntime.jsx(Root2$3,{...b,children:jsxRuntime.jsx(PopoverProvider,{scope:n,contentId:useId(),triggerRef:S,open:_,onOpenChange:R,onOpenToggle:React__namespace.useCallback(()=>R(A=>!A),[R]),hasCustomAnchor:E,onCustomAnchorAdd:React__namespace.useCallback(()=>T(!0),[]),onCustomAnchorRemove:React__namespace.useCallback(()=>T(!1),[]),modal:y,children:d})})};Popover$1.displayName=POPOVER_NAME;var ANCHOR_NAME="PopoverAnchor",PopoverAnchor=React__namespace.forwardRef((u,n)=>{const{__scopePopover:d,...p}=u,m=usePopoverContext(ANCHOR_NAME,d),g=usePopperScope(d),{onCustomAnchorAdd:y,onCustomAnchorRemove:b}=m;return React__namespace.useEffect(()=>(y(),()=>b()),[y,b]),jsxRuntime.jsx(Anchor,{...g,...p,ref:n})});PopoverAnchor.displayName=ANCHOR_NAME;var TRIGGER_NAME="PopoverTrigger",PopoverTrigger$1=React__namespace.forwardRef((u,n)=>{const{__scopePopover:d,...p}=u,m=usePopoverContext(TRIGGER_NAME,d),g=usePopperScope(d),y=useComposedRefs(n,m.triggerRef),b=jsxRuntime.jsx(Primitive$5.button,{type:"button","aria-haspopup":"dialog","aria-expanded":m.open,"aria-controls":m.contentId,"data-state":getState$1(m.open),...p,ref:y,onClick:composeEventHandlers(u.onClick,m.onOpenToggle)});return m.hasCustomAnchor?b:jsxRuntime.jsx(Anchor,{asChild:!0,...g,children:b})});PopoverTrigger$1.displayName=TRIGGER_NAME;var PORTAL_NAME="PopoverPortal",[PortalProvider,usePortalContext]=createPopoverContext(PORTAL_NAME,{forceMount:void 0}),PopoverPortal=u=>{const{__scopePopover:n,forceMount:d,children:p,container:m}=u,g=usePopoverContext(PORTAL_NAME,n);return jsxRuntime.jsx(PortalProvider,{scope:n,forceMount:d,children:jsxRuntime.jsx(Presence,{present:d||g.open,children:jsxRuntime.jsx(Portal$5,{asChild:!0,container:m,children:p})})})};PopoverPortal.displayName=PORTAL_NAME;var CONTENT_NAME="PopoverContent",PopoverContent$1=React__namespace.forwardRef((u,n)=>{const d=usePortalContext(CONTENT_NAME,u.__scopePopover),{forceMount:p=d.forceMount,...m}=u,g=usePopoverContext(CONTENT_NAME,u.__scopePopover);return jsxRuntime.jsx(Presence,{present:p||g.open,children:g.modal?jsxRuntime.jsx(PopoverContentModal,{...m,ref:n}):jsxRuntime.jsx(PopoverContentNonModal,{...m,ref:n})})});PopoverContent$1.displayName=CONTENT_NAME;var Slot=createSlot("PopoverContent.RemoveScroll"),PopoverContentModal=React__namespace.forwardRef((u,n)=>{const d=usePopoverContext(CONTENT_NAME,u.__scopePopover),p=React__namespace.useRef(null),m=useComposedRefs(n,p),g=React__namespace.useRef(!1);return React__namespace.useEffect(()=>{const y=p.current;if(y)return hideOthers(y)},[]),jsxRuntime.jsx(ReactRemoveScroll,{as:Slot,allowPinchZoom:!0,children:jsxRuntime.jsx(PopoverContentImpl,{...u,ref:m,trapFocus:d.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:composeEventHandlers(u.onCloseAutoFocus,y=>{y.preventDefault(),g.current||d.triggerRef.current?.focus()}),onPointerDownOutside:composeEventHandlers(u.onPointerDownOutside,y=>{const b=y.detail.originalEvent,S=b.button===0&&b.ctrlKey===!0,E=b.button===2||S;g.current=E},{checkForDefaultPrevented:!1}),onFocusOutside:composeEventHandlers(u.onFocusOutside,y=>y.preventDefault(),{checkForDefaultPrevented:!1})})})}),PopoverContentNonModal=React__namespace.forwardRef((u,n)=>{const d=usePopoverContext(CONTENT_NAME,u.__scopePopover),p=React__namespace.useRef(!1),m=React__namespace.useRef(!1);return jsxRuntime.jsx(PopoverContentImpl,{...u,ref:n,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:g=>{u.onCloseAutoFocus?.(g),g.defaultPrevented||(p.current||d.triggerRef.current?.focus(),g.preventDefault()),p.current=!1,m.current=!1},onInteractOutside:g=>{u.onInteractOutside?.(g),g.defaultPrevented||(p.current=!0,g.detail.originalEvent.type==="pointerdown"&&(m.current=!0));const y=g.target;d.triggerRef.current?.contains(y)&&g.preventDefault(),g.detail.originalEvent.type==="focusin"&&m.current&&g.preventDefault()}})}),PopoverContentImpl=React__namespace.forwardRef((u,n)=>{const{__scopePopover:d,trapFocus:p,onOpenAutoFocus:m,onCloseAutoFocus:g,disableOutsidePointerEvents:y,onEscapeKeyDown:b,onPointerDownOutside:S,onFocusOutside:E,onInteractOutside:T,..._}=u,R=usePopoverContext(CONTENT_NAME,d),A=usePopperScope(d);return useFocusGuards(),jsxRuntime.jsx(FocusScope,{asChild:!0,loop:!0,trapped:p,onMountAutoFocus:m,onUnmountAutoFocus:g,children:jsxRuntime.jsx(DismissableLayer,{asChild:!0,disableOutsidePointerEvents:y,onInteractOutside:T,onEscapeKeyDown:b,onPointerDownOutside:S,onFocusOutside:E,onDismiss:()=>R.onOpenChange(!1),children:jsxRuntime.jsx(Content$1,{"data-state":getState$1(R.open),role:"dialog",id:R.contentId,...A,..._,ref:n,style:{..._.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),CLOSE_NAME="PopoverClose",PopoverClose=React__namespace.forwardRef((u,n)=>{const{__scopePopover:d,...p}=u,m=usePopoverContext(CLOSE_NAME,d);return jsxRuntime.jsx(Primitive$5.button,{type:"button",...p,ref:n,onClick:composeEventHandlers(u.onClick,()=>m.onOpenChange(!1))})});PopoverClose.displayName=CLOSE_NAME;var ARROW_NAME="PopoverArrow",PopoverArrow=React__namespace.forwardRef((u,n)=>{const{__scopePopover:d,...p}=u,m=usePopperScope(d);return jsxRuntime.jsx(Arrow,{...m,...p,ref:n})});PopoverArrow.displayName=ARROW_NAME;function getState$1(u){return u?"open":"closed"}var Root2=Popover$1,Trigger=PopoverTrigger$1,Portal=PopoverPortal,Content2=PopoverContent$1;function Popover({...u}){return jsxRuntime.jsx(Root2,{"data-slot":"popover",...u})}function PopoverTrigger({...u}){return jsxRuntime.jsx(Trigger,{"data-slot":"popover-trigger",...u})}function PopoverContent({className:u,align:n="center",sideOffset:d=4,children:p,...m}){return jsxRuntime.jsx(Portal,{children:jsxRuntime.jsx("div",{"data-theme":"select-post-builder",children:jsxRuntime.jsx(Content2,{"data-slot":"popover-content",align:n,sideOffset:d,className:cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden",u),...m,children:p})})})}const LinkMarkView=({mark:u,editor:n})=>{const[d,p]=React.useState(!1),[m,g]=React.useState(!1),y=S=>{g(S),S||p(!1)},b=(S,E,T,_)=>{if(!n.view)return;const R=u?.attrs?.isLinkMode?S:E||S;if(T){n.commands.updateLink(T,{href:S,text:R,previewPayload:_});return}};return jsxRuntime.jsxs(Popover,{open:d,onOpenChange:p,children:[jsxRuntime.jsx(PopoverTrigger,{className:"text-left",children:jsxRuntime.jsx(MarkViewContent,{className:"text-blue-600 underline hover:text-blue-700 cursor-pointer focus-within:outline-0"})}),jsxRuntime.jsxs(PopoverContent,{onOpenAutoFocus:S=>S.preventDefault(),side:"top",align:"center",className:"flex gap-2 items-center p-1 max-w-fit w-fit",children:[jsxRuntime.jsx(ToolbarButton,{size:"icon",tooltip:"visitLinkKey",onClick:()=>window.open(u.attrs.href,"_blank","noopener,noreferrer"),children:jsxRuntime.jsx(ExternalLink,{})}),jsxRuntime.jsx(LinkDecoratorModal,{open:m,onOpenChange:y,defaultValues:{link:u?.attrs?.href??"",text:u?.attrs?.text??"",uid:u?.attrs?.uid??""},onInsertLink:b,hideTextInput:u?.attrs?.isLinkMode,children:jsxRuntime.jsx(ToolbarButton,{size:"icon",tooltip:"editLinkKey",children:jsxRuntime.jsx(SquarePen,{})})}),jsxRuntime.jsx(ToolbarButton,{size:"icon",tooltip:"unsetLinkKey",onClick:()=>{p(!1),n.commands.unsetLink(),u?.attrs?.uid&&n.commands.deleteLinkPreviewByUid(u?.attrs?.uid)},className:cn(u?.attrs?.isLinkMode?"hidden":""),children:jsxRuntime.jsx(Unlink,{})})]})]})},LINK_AUTO_RESOLVE_REHYDRATE_META="linkAutoResolve:rehydrate";function isSameMarkType(u,n){return!u||!n?!1:u===n||u.name===n.name}function isValidUrlFormat(u){return isValidUrl(normalizeUrl(u.trim()))}function doesPreviewExist(u,n){if(!u||!n)return!1;try{let d=!1;return u.state.doc.descendants(p=>{if(p&&p.type&&p.type.name==="linkPreview"&&p.attrs?.uid===n)return d=!0,!1}),d}catch{return!1}}function findExistingPreview(u){if(!u)return null;try{let n=null;return u.state.doc.descendants((d,p)=>{if(d&&d.type&&d.type.name==="linkPreview")return n={node:d,pos:p},!1}),n}catch{return null}}function removePreviewByUid(u,n){if(!(!u||!n))try{let d=null,p=0;if(u.state.doc.descendants((m,g)=>{if(m&&m.type&&m.type.name==="linkPreview"&&m.attrs?.uid===n)return d=g,p=m.nodeSize,!1}),d!==null&&p>0){const m=u.state.tr;m&&(m.delete(d,Number(d)+p),u.view.dispatch(m))}}catch{}}function extractBestImage(u){return u?.image?.high_resolution??u?.image?.url??u?.image?.thumbnail??u?.image?.placeholder??null}function getChangedRange(u,n){const d=u.doc.content.findDiffStart(n.doc.content);if(d==null)return null;const p=u.doc.content.findDiffEnd(n.doc.content),m=u.doc.content.size,g=n.doc.content.size;return p?{fromOld:Math.max(0,Math.min(d,p.a)),toOld:Math.max(d,Math.min(p.a,m)),fromNew:Math.max(0,Math.min(d,p.b)),toNew:Math.max(d,Math.min(p.b,g))}:{fromOld:Math.max(0,d),toOld:m,fromNew:Math.max(0,d),toNew:g}}function collectLinkMarksInRange(u,n,d,p){const m=new Map;return d>=p||u.doc.nodesBetween(d,p,(g,y)=>{!g.isText||!g.marks?.length||g.marks.forEach(b=>{if(isSameMarkType(b.type,n)&&b.attrs?.href){const S=b.attrs.uid;S&&!m.has(S)&&m.set(S,{uid:S,href:b.attrs.href,pos:y,nodeSize:g.nodeSize})}})}),m}function syncLinkHrefWithText(u,n,d,p,m,g,y){if(!u||!n||!d||!m)return null;let b=null,S=!1;try{u.doc.nodesBetween(g,y,(E,T)=>{!E||!E.isText||!E.marks?.length||E.marks.forEach(_=>{if(!(!_||!_.type||!_.attrs)&&isSameMarkType(_.type,n)&&_.attrs?.uid){const R=E.text||"",A=_.attrs.href||"";if(R!==A){const C=isValidUrlFormat(R);if(b||(b=u.tr),!b)return;if(C){const k=n.create({..._.attrs,href:normalizeUrl(R)});if(!k)return;b=b.removeMark(T,T+E.nodeSize,n),b=b.addMark(T,T+E.nodeSize,k),S=!0,m.processedLinks.delete(_.attrs.uid),p&&queueMicrotask(()=>{try{findExistingPreview(d)&&_.attrs?.uid}catch{}})}else b=b.removeMark(T,T+E.nodeSize,n),S=!0,queueMicrotask(()=>{try{_.attrs?.uid&&removePreviewByUid(d,_.attrs.uid)}catch{}}),_.attrs?.uid&&(m.processedLinks.delete(_.attrs.uid),m.resolvingLinks.delete(_.attrs.uid))}}})})}catch{return null}return S?b:null}function assignUidsToLinks(u,n,d,p,m){const g=new Map;let y=null,b=!1;return d>=p?{tr:null,newUids:g}:(u.doc.nodesBetween(d,p,(S,E)=>{!S.isText||!S.marks?.length||S.marks.forEach(T=>{if(isSameMarkType(T.type,n)&&T.attrs?.href&&!T.attrs.uid){const _=v4();if(m){const A=getAnalyticsStore(),C=m?.view?.dom?.getAttribute("data-session-id"),k=m?.view?.dom?.getAttribute("data-editor-type");C&&A.trackLinkAdded(C,{editorType:k})}const R=n.create({...T.attrs,uid:_});if(y||(y=u.tr),!y)return;y=y.removeMark(E,E+S.nodeSize,n),y=y.addMark(E,E+S.nodeSize,R),b=!0,g.set(_,{uid:_,href:T.attrs.href,pos:E,nodeSize:S.nodeSize})}})}),{tr:b?y:null,newUids:g})}function computeLinksToResolve(u,n,d,p,m){const g=[];return u.forEach((y,b)=>{n.has(b)||(p.processedLinks.delete(b),p.resolvingLinks.delete(b))}),d.forEach(y=>{!p.processedLinks.has(y.uid)&&!p.resolvingLinks.has(y.uid)&&g.push(y)}),n.forEach((y,b)=>{if(!(p.processedLinks.has(b)||p.resolvingLinks.has(b)||d.has(b))){if(m(b)){p.processedLinks.add(b);return}u.has(b)||g.push(y)}}),g}function createInitialPluginState(){return{resolvingLinks:new Set,processedLinks:new Set}}function limitLinksForSinglePreviewMode(u,n,d){if(!d||u.length<=1)return u;const p=u.reduce((m,g)=>g.pos>m.pos?g:m);return u.forEach(m=>{m.uid!==p.uid&&n.processedLinks.add(m.uid)}),[p]}function queueRehydratedLinksResolution(u,n,d,p){const m=u.schema.marks.customLink;if(!m)return;const g=collectLinkMarksInRange(u,m,0,u.doc.content.size),y=limitLinksForSinglePreviewMode(computeLinksToResolve(new Map,g,new Map,d,b=>doesPreviewExist(n.editor,b)),d,p);y.length!==0&&queueMicrotask(()=>{y.forEach(b=>{if(!(d.processedLinks.has(b.uid)||d.resolvingLinks.has(b.uid))){if(doesPreviewExist(n.editor,b.uid)){d.processedLinks.add(b.uid);return}resolveLinkAndHandlePreview(b,n,p,d)}})})}function resolveLinkAndHandlePreview(u,n,d,p){const{api:m,editor:g}=n,y=findByType(g?.getJSON(),"mediaGroup");if(!m||d&&y.length>=1)return;p.resolvingLinks.add(u.uid);const b={uid:u.uid,href:u.href,loading:!0,title:null,image:null,description:null,domain:null};d?findExistingPreview(g)||g.commands.setLinkPreview(b):g.commands.insertLinkPreviewAfterLink(u.uid,b),m.resolveUrl(normalizeUrl(u.href)).then(S=>{if(p.resolvingLinks.delete(u.uid),p.processedLinks.add(u.uid),!S)return;const E={uid:u.uid,href:S.url,title:S.title,image:extractBestImage(S),description:S.description,domain:new URL(S.url).hostname,loading:!1};if(d){const T=findExistingPreview(g);if(T){const{pos:_}=T,R=g.state.tr;R.setNodeMarkup(_,void 0,E),g.view.dispatch(R)}else g.commands.setLinkPreview(E);g.commands.updateLinkByUid(u.uid,{previewPayload:convertLinkMetaToPreviewItem(S)})}else g.chain().updateLinkByUid(u.uid,{previewPayload:convertLinkMetaToPreviewItem(S)}).updateLinkPreviewByUid(u.uid,E).run()}).catch(S=>{if(p.resolvingLinks.delete(u.uid),!g?.view?.dom)return;const E=getAnalyticsStore(),T=g?.view?.dom?.getAttribute("data-session-id"),_=g?.view?.dom?.getAttribute("data-editor-type");T&&E.trackLinkUnfurlFailed(T,{editorType:_})})}function createLinkAutoResolvePlugin(u,n=!1){const d=new PluginKey("linkAutoResolve");return new Plugin({key:d,state:{init(){return createInitialPluginState()},apply(p,m){return m}},appendTransaction:(p,m,g)=>{const y=p.some(O=>typeof O.getMeta=="function"&&O.getMeta(LINK_AUTO_RESOLVE_REHYDRATE_META)),b=g.schema.marks.customLink;if(!b)return null;const S=d.getState(g);if(!S)return null;if(y)return queueRehydratedLinksResolution(g,u,S,n),null;if(!p.some(O=>O.docChanged))return null;const E=getChangedRange(m,g);if(!E)return null;const T=d.getState(g);if(!T)return null;const _=n?syncLinkHrefWithText(g,b,u.editor,n,T,0,g.doc.content.size):null,R=collectLinkMarksInRange(m,b,E.fromOld,E.toOld),A=collectLinkMarksInRange(g,b,E.fromNew,E.toNew),C=u?.editor,{tr:k,newUids:I}=assignUidsToLinks(g,b,E.fromNew,E.toNew,C),P=computeLinksToResolve(R,A,I,T,O=>doesPreviewExist(u.editor,O)),D=limitLinksForSinglePreviewMode(P,T,n);if(D.length>0?queueMicrotask(()=>{D.forEach(O=>{resolveLinkAndHandlePreview(O,u,n,T)})}):P.length,_&&k)try{return k.steps.forEach((O,N)=>{if(O&&_){_.step(O);const j=k.mapping.maps[N];j&&_.mapping.appendMap(j)}}),_}catch{return _}return _??k??null}})}const hasMediaInEditor=(u,n)=>{if(n!==EditorTypes.Media)return!1;const d=u?.getJSON(),p=d?findByType(d,"media"):[],m=d?findByType(d,"mediaGroup"):[];return p.length>0||m.length>0},CustomLink=index_default$7.extend({name:"customLink",priority:990,addOptions(){return{...this?.parent?.(),autolink:!0,api:void 0}},addAttributes(){return{...this?.parent?.(),text:{default:null},uid:{default:null,parseHTML:()=>null,renderHTML:()=>({})},isLinkMode:{default:this?.options?.linkMode??!1,parseHTML:()=>null,renderHTML:()=>({})},previewPayload:{default:null,parseHTML:()=>null,renderHTML:()=>({})}}},renderHTML({HTMLAttributes:u}){return this.options.isAllowedUri(u.href,{defaultValidate:n=>!!isAllowedUri(n,this.options.protocols),protocols:this.options.protocols,defaultProtocol:this.options.defaultProtocol})?["a",mergeAttributes(this.options.HTMLAttributes,u),0]:["a",mergeAttributes(this.options.HTMLAttributes,{...u,href:""}),0]},addCommands(){return{...this?.parent?.(),insertLink:u=>({chain:n,editor:d})=>{const p=getAnalyticsStore(),{href:m,text:g}=u,y=getExistingLinkPreviewUid(d),b=this.options.linkMode&&y?y:v4(),S=d?.view?.dom?.getAttribute("data-editor-type"),E=hasMediaInEditor(d,S),T=n().insertContent([{type:"text",text:g,marks:[{type:"customLink",attrs:{uid:b,href:m,text:g,previewPayload:null}}]},this.options.linkMode?{type:"text",text:" "}:null].filter(R=>R!==null));E||T.setLinkPreview({uid:b,loading:!0,href:""}),T.run();const _=d?.view?.dom?.getAttribute("data-session-id")??"";return this?.options?.api?.resolveUrl(normalizeUrl(m))?.then(R=>{if(p?.trackLinkAdded(_,{editorType:S}),R){const A=convertLinkMetaToPreviewItem(R),C=d?.view?.dom?.getAttribute("data-editor-type"),k=hasMediaInEditor(d,C),I=d?.chain()?.updateLinkByUid(b,{href:m,text:g,previewPayload:A});k||I?.updateLinkPreviewByUid(b,{loading:!1,href:R.url,title:R.title,image:R.image?.url??null,description:R.description,domain:new URL(R.url).hostname}),I?.run();return}d.commands.deleteLinkPreviewByUid(b)})?.catch(R=>{p?.trackLinkAdded(_,{editorType:S}),p?.trackLinkUnfurlFailed(_,{editorType:S}),d.commands.deleteLinkPreviewByUid(b)}),!0},updateLink:(u,n)=>({state:d,dispatch:p,editor:m})=>{if(!p)return!1;const{doc:g,schema:y,tr:b}=d;let S=b,E=!1;const T=[];return g.descendants((_,R)=>{_.isText&&_.marks?.length&&_.marks.forEach(A=>{A.type.name==="customLink"&&A.attrs.uid===u&&(T.push({from:R,to:R+_.nodeSize,mark:A,oldText:_.text||""}),E=!0)})}),E&&(T.sort((_,R)=>R.from-_.from),T.forEach(({from:_,to:R,mark:A,oldText:C})=>{const k={...A.attrs,href:n.href??A.attrs.href,text:n.text||n.href||A.attrs.text,previewPayload:n?.previewPayload??A?.attrs?.previewPayload},I=n.text??n.href??C,P=y.marks.customLink;if(P){S=S.delete(_,R);const D=y.text(I,[P.create(k)]);S=S.insert(_,D)}}),p(S),n.href&&queueMicrotask(()=>{this.options.api?.resolveUrl(normalizeUrl(n.href))?.then(_=>{if(_){const R=convertLinkMetaToPreviewItem(_);let A=!1;m.state.doc.descendants(P=>{if(P.type.name==="linkPreview"&&P.attrs.uid===u)return A=!0,!1}),m.commands.updateLinkByUid(u,{...n,previewPayload:R});const C={uid:u,href:_.url,title:_.title,image:_.image?.url??null,description:_.description,domain:new URL(_.url).hostname,loading:!1},k=m?.view?.dom?.getAttribute("data-editor-type"),I=hasMediaInEditor(m,k);A&&!I?m.commands.updateLinkPreviewByUid(u,C):!A&&!I&&m.commands.setLinkPreview(C)}else m.commands.deleteLinkPreviewByUid(u)}).catch(_=>{const R=m?.view?.dom?.getAttribute("data-session-id")??"",A=m?.view?.dom?.getAttribute("data-editor-type");getAnalyticsStore()?.trackLinkUnfurlFailed(R,{editorType:A}),m.commands.deleteLinkPreviewByUid(u)})})),E},updateLinkByUid:createUpdateMarkByUidCommand("customLink"),deleteLinkByUid:createDeleteMarkByUidCommand("customLink"),rehydrateLinkPreviews:()=>({tr:u,dispatch:n})=>(n&&n(u.setMeta(LINK_AUTO_RESOLVE_REHYDRATE_META,!0)),!0)}},addMarkView(){return ReactMarkViewRenderer(LinkMarkView)},addKeyboardShortcuts(){return{"Mod-a":({editor:u})=>(u.view.focus(),u.commands.selectAll(),!0),Backspace:({editor:u})=>{const{empty:n}=u.state.selection;if(!n||!(u.state.storedMarks||u.state.selection.$from.marks()).find(S=>S.type.name==="customLink"))return!1;const m=u.state.selection.$from,g=m.nodeBefore,y=m.nodeAfter;return g&&g.marks.some(S=>S.type.name==="customLink")||y&&y.marks.some(S=>S.type.name==="customLink")||u.commands.unsetMark("customLink"),!1}}},addProseMirrorPlugins(){const u=this.parent?.()??[],n=createLinkAutoResolvePlugin({api:this?.options?.api,editor:this.editor},this.options?.linkMode);return[...u,n]}}),getExistingLinkPreviewUid=u=>{const{doc:n}=u.state;let d=null;return n.descendants(p=>{if(p.type.name==="linkPreview")return d=p.attrs.uid,!1}),d},isSpotifyTrack=u=>u.includes("spotify.com/embed/track"),IframeView=({node:u,selected:n,editor:d,updateAttributes:p,deleteNode:m})=>{const[g,y]=React.useState(u.attrs.previewPayload),{core:b}=useApi(),{src:S}=u.attrs,E=()=>{m(),d.chain().focus()};return React.useEffect(()=>{!g&&u?.attrs?.src&&b.resolveUrl(normalizeUrl(u?.attrs?.src)).then(T=>{const _=convertLinkMetaToPreviewItem(T);y(_),p({previewPayload:_})}).catch(T=>{}).finally(()=>{})},[b,u.attrs.src,g,p]),jsxRuntime.jsxs(NodeViewWrapper,{"data-drag-handle":!0,className:cn("relative p-4 bg-accent",n&&"border-2 border-blue-500"),children:[jsxRuntime.jsx("iframe",{src:S,allowFullScreen:!0,className:cn("w-full rounded-md",isSpotifyTrack(S)?"h-38":"h-96")}),jsxRuntime.jsx(Button,{onClick:E,size:"icon",variant:"ghost",className:"absolute right-2 top-2 bg-background border hover:shadow-lg size-auto p-1.5 rounded-full",children:jsxRuntime.jsx(X,{})})]},S)};const{entries,setPrototypeOf,isFrozen,getPrototypeOf,getOwnPropertyDescriptor}=Object;let{freeze:freeze$1,seal,create:create$6}=Object,{apply,construct}=typeof Reflect<"u"&&Reflect;freeze$1||(freeze$1=function(n){return n});seal||(seal=function(n){return n});apply||(apply=function(n,d){for(var p=arguments.length,m=new Array(p>2?p-2:0),g=2;g<p;g++)m[g-2]=arguments[g];return n.apply(d,m)});construct||(construct=function(n){for(var d=arguments.length,p=new Array(d>1?d-1:0),m=1;m<d;m++)p[m-1]=arguments[m];return new n(...p)});const arrayForEach=unapply(Array.prototype.forEach),arrayLastIndexOf=unapply(Array.prototype.lastIndexOf),arrayPop=unapply(Array.prototype.pop),arrayPush=unapply(Array.prototype.push),arraySplice=unapply(Array.prototype.splice),stringToLowerCase=unapply(String.prototype.toLowerCase),stringToString=unapply(String.prototype.toString),stringMatch=unapply(String.prototype.match),stringReplace=unapply(String.prototype.replace),stringIndexOf=unapply(String.prototype.indexOf),stringTrim=unapply(String.prototype.trim),objectHasOwnProperty=unapply(Object.prototype.hasOwnProperty),regExpTest=unapply(RegExp.prototype.test),typeErrorCreate=unconstruct(TypeError);function unapply(u){return function(n){n instanceof RegExp&&(n.lastIndex=0);for(var d=arguments.length,p=new Array(d>1?d-1:0),m=1;m<d;m++)p[m-1]=arguments[m];return apply(u,n,p)}}function unconstruct(u){return function(){for(var n=arguments.length,d=new Array(n),p=0;p<n;p++)d[p]=arguments[p];return construct(u,d)}}function addToSet(u,n){let d=arguments.length>2&&arguments[2]!==void 0?arguments[2]:stringToLowerCase;setPrototypeOf&&setPrototypeOf(u,null);let p=n.length;for(;p--;){let m=n[p];if(typeof m=="string"){const g=d(m);g!==m&&(isFrozen(n)||(n[p]=g),m=g)}u[m]=!0}return u}function cleanArray(u){for(let n=0;n<u.length;n++)objectHasOwnProperty(u,n)||(u[n]=null);return u}function clone(u){const n=create$6(null);for(const[d,p]of entries(u))objectHasOwnProperty(u,d)&&(Array.isArray(p)?n[d]=cleanArray(p):p&&typeof p=="object"&&p.constructor===Object?n[d]=clone(p):n[d]=p);return n}function lookupGetter(u,n){for(;u!==null;){const p=getOwnPropertyDescriptor(u,n);if(p){if(p.get)return unapply(p.get);if(typeof p.value=="function")return unapply(p.value)}u=getPrototypeOf(u)}function d(){return null}return d}const html$1=freeze$1(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),svg$1=freeze$1(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),svgFilters=freeze$1(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),svgDisallowed=freeze$1(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),mathMl$1=freeze$1(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),mathMlDisallowed=freeze$1(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),text=freeze$1(["#text"]),html=freeze$1(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),svg=freeze$1(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),mathMl=freeze$1(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),xml=freeze$1(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),MUSTACHE_EXPR=seal(/\{\{[\w\W]*|[\w\W]*\}\}/gm),ERB_EXPR=seal(/<%[\w\W]*|[\w\W]*%>/gm),TMPLIT_EXPR=seal(/\$\{[\w\W]*/gm),DATA_ATTR=seal(/^data-[\-\w.\u00B7-\uFFFF]+$/),ARIA_ATTR=seal(/^aria-[\-\w]+$/),IS_ALLOWED_URI=seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),IS_SCRIPT_OR_DATA=seal(/^(?:\w+script|data):/i),ATTR_WHITESPACE=seal(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),DOCTYPE_NAME=seal(/^html$/i),CUSTOM_ELEMENT=seal(/^[a-z][.\w]*(-[.\w]+)+$/i);var EXPRESSIONS=Object.freeze({__proto__:null,ARIA_ATTR,ATTR_WHITESPACE,CUSTOM_ELEMENT,DATA_ATTR,DOCTYPE_NAME,ERB_EXPR,IS_ALLOWED_URI,IS_SCRIPT_OR_DATA,MUSTACHE_EXPR,TMPLIT_EXPR});const NODE_TYPE={element:1,text:3,progressingInstruction:7,comment:8,document:9},getGlobal=function u(){return typeof window>"u"?null:window},_createTrustedTypesPolicy=function u(n,d){if(typeof n!="object"||typeof n.createPolicy!="function")return null;let p=null;const m="data-tt-policy-suffix";d&&d.hasAttribute(m)&&(p=d.getAttribute(m));const g="dompurify"+(p?"#"+p:"");try{return n.createPolicy(g,{createHTML(y){return y},createScriptURL(y){return y}})}catch{return null}},_createHooksMap=function u(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function createDOMPurify(){let u=arguments.length>0&&arguments[0]!==void 0?arguments[0]:getGlobal();const n=ke=>createDOMPurify(ke);if(n.version="3.3.1",n.removed=[],!u||!u.document||u.document.nodeType!==NODE_TYPE.document||!u.Element)return n.isSupported=!1,n;let{document:d}=u;const p=d,m=p.currentScript,{DocumentFragment:g,HTMLTemplateElement:y,Node:b,Element:S,NodeFilter:E,NamedNodeMap:T=u.NamedNodeMap||u.MozNamedAttrMap,HTMLFormElement:_,DOMParser:R,trustedTypes:A}=u,C=S.prototype,k=lookupGetter(C,"cloneNode"),I=lookupGetter(C,"remove"),P=lookupGetter(C,"nextSibling"),D=lookupGetter(C,"childNodes"),O=lookupGetter(C,"parentNode");if(typeof y=="function"){const ke=d.createElement("template");ke.content&&ke.content.ownerDocument&&(d=ke.content.ownerDocument)}let N,j="";const{implementation:L,createNodeIterator:H,createDocumentFragment:B,getElementsByTagName:Y}=d,{importNode:Z}=p;let Q=_createHooksMap();n.isSupported=typeof entries=="function"&&typeof O=="function"&&L&&L.createHTMLDocument!==void 0;const{MUSTACHE_EXPR:J,ERB_EXPR:re,TMPLIT_EXPR:ne,DATA_ATTR:te,ARIA_ATTR:F,IS_SCRIPT_OR_DATA:q,ATTR_WHITESPACE:V,CUSTOM_ELEMENT:W}=EXPRESSIONS;let{IS_ALLOWED_URI:ee}=EXPRESSIONS,se=null;const ae=addToSet({},[...html$1,...svg$1,...svgFilters,...mathMl$1,...text]);let le=null;const ce=addToSet({},[...html,...svg,...mathMl,...xml]);let oe=Object.seal(create$6(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),de=null,fe=null;const me=Object.seal(create$6(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let he=!0,ge=!0,ye=!1,Se=!0,Te=!1,ve=!0,we=!1,je=!1,Ae=!1,Me=!1,Ie=!1,Be=!1,Ne=!0,Le=!1;const De="user-content-";let xe=!0,Oe=!1,Ce={},He=null;const Ue=addToSet({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let Ye=null;const Ve=addToSet({},["audio","video","img","source","image","track"]);let Ge=null;const Qe=addToSet({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),rt="http://www.w3.org/1998/Math/MathML",pe="http://www.w3.org/2000/svg",Ee="http://www.w3.org/1999/xhtml";let _e=Ee,ze=!1,Fe=null;const qe=addToSet({},[rt,pe,Ee],stringToString);let Xe=addToSet({},["mi","mo","mn","ms","mtext"]),ct=addToSet({},["annotation-xml"]);const ot=addToSet({},["title","style","font","a","script"]);let Je=null;const Pe=["application/xhtml+xml","text/html"],We="text/html";let $e=null,Ke=null;const it=d.createElement("form"),Ze=function(ue){return ue instanceof RegExp||ue instanceof Function},at=function(){let ue=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(Ke&&Ke===ue)){if((!ue||typeof ue!="object")&&(ue={}),ue=clone(ue),Je=Pe.indexOf(ue.PARSER_MEDIA_TYPE)===-1?We:ue.PARSER_MEDIA_TYPE,$e=Je==="application/xhtml+xml"?stringToString:stringToLowerCase,se=objectHasOwnProperty(ue,"ALLOWED_TAGS")?addToSet({},ue.ALLOWED_TAGS,$e):ae,le=objectHasOwnProperty(ue,"ALLOWED_ATTR")?addToSet({},ue.ALLOWED_ATTR,$e):ce,Fe=objectHasOwnProperty(ue,"ALLOWED_NAMESPACES")?addToSet({},ue.ALLOWED_NAMESPACES,stringToString):qe,Ge=objectHasOwnProperty(ue,"ADD_URI_SAFE_ATTR")?addToSet(clone(Qe),ue.ADD_URI_SAFE_ATTR,$e):Qe,Ye=objectHasOwnProperty(ue,"ADD_DATA_URI_TAGS")?addToSet(clone(Ve),ue.ADD_DATA_URI_TAGS,$e):Ve,He=objectHasOwnProperty(ue,"FORBID_CONTENTS")?addToSet({},ue.FORBID_CONTENTS,$e):Ue,de=objectHasOwnProperty(ue,"FORBID_TAGS")?addToSet({},ue.FORBID_TAGS,$e):clone({}),fe=objectHasOwnProperty(ue,"FORBID_ATTR")?addToSet({},ue.FORBID_ATTR,$e):clone({}),Ce=objectHasOwnProperty(ue,"USE_PROFILES")?ue.USE_PROFILES:!1,he=ue.ALLOW_ARIA_ATTR!==!1,ge=ue.ALLOW_DATA_ATTR!==!1,ye=ue.ALLOW_UNKNOWN_PROTOCOLS||!1,Se=ue.ALLOW_SELF_CLOSE_IN_ATTR!==!1,Te=ue.SAFE_FOR_TEMPLATES||!1,ve=ue.SAFE_FOR_XML!==!1,we=ue.WHOLE_DOCUMENT||!1,Me=ue.RETURN_DOM||!1,Ie=ue.RETURN_DOM_FRAGMENT||!1,Be=ue.RETURN_TRUSTED_TYPE||!1,Ae=ue.FORCE_BODY||!1,Ne=ue.SANITIZE_DOM!==!1,Le=ue.SANITIZE_NAMED_PROPS||!1,xe=ue.KEEP_CONTENT!==!1,Oe=ue.IN_PLACE||!1,ee=ue.ALLOWED_URI_REGEXP||IS_ALLOWED_URI,_e=ue.NAMESPACE||Ee,Xe=ue.MATHML_TEXT_INTEGRATION_POINTS||Xe,ct=ue.HTML_INTEGRATION_POINTS||ct,oe=ue.CUSTOM_ELEMENT_HANDLING||{},ue.CUSTOM_ELEMENT_HANDLING&&Ze(ue.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(oe.tagNameCheck=ue.CUSTOM_ELEMENT_HANDLING.tagNameCheck),ue.CUSTOM_ELEMENT_HANDLING&&Ze(ue.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(oe.attributeNameCheck=ue.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),ue.CUSTOM_ELEMENT_HANDLING&&typeof ue.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(oe.allowCustomizedBuiltInElements=ue.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Te&&(ge=!1),Ie&&(Me=!0),Ce&&(se=addToSet({},text),le=[],Ce.html===!0&&(addToSet(se,html$1),addToSet(le,html)),Ce.svg===!0&&(addToSet(se,svg$1),addToSet(le,svg),addToSet(le,xml)),Ce.svgFilters===!0&&(addToSet(se,svgFilters),addToSet(le,svg),addToSet(le,xml)),Ce.mathMl===!0&&(addToSet(se,mathMl$1),addToSet(le,mathMl),addToSet(le,xml))),ue.ADD_TAGS&&(typeof ue.ADD_TAGS=="function"?me.tagCheck=ue.ADD_TAGS:(se===ae&&(se=clone(se)),addToSet(se,ue.ADD_TAGS,$e))),ue.ADD_ATTR&&(typeof ue.ADD_ATTR=="function"?me.attributeCheck=ue.ADD_ATTR:(le===ce&&(le=clone(le)),addToSet(le,ue.ADD_ATTR,$e))),ue.ADD_URI_SAFE_ATTR&&addToSet(Ge,ue.ADD_URI_SAFE_ATTR,$e),ue.FORBID_CONTENTS&&(He===Ue&&(He=clone(He)),addToSet(He,ue.FORBID_CONTENTS,$e)),ue.ADD_FORBID_CONTENTS&&(He===Ue&&(He=clone(He)),addToSet(He,ue.ADD_FORBID_CONTENTS,$e)),xe&&(se["#text"]=!0),we&&addToSet(se,["html","head","body"]),se.table&&(addToSet(se,["tbody"]),delete de.tbody),ue.TRUSTED_TYPES_POLICY){if(typeof ue.TRUSTED_TYPES_POLICY.createHTML!="function")throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof ue.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');N=ue.TRUSTED_TYPES_POLICY,j=N.createHTML("")}else N===void 0&&(N=_createTrustedTypesPolicy(A,m)),N!==null&&typeof j=="string"&&(j=N.createHTML(""));freeze$1&&freeze$1(ue),Ke=ue}},vt=addToSet({},[...svg$1,...svgFilters,...svgDisallowed]),dt=addToSet({},[...mathMl$1,...mathMlDisallowed]),pt=function(ue){let be=O(ue);(!be||!be.tagName)&&(be={namespaceURI:_e,tagName:"template"});const Re=stringToLowerCase(ue.tagName),et=stringToLowerCase(be.tagName);return Fe[ue.namespaceURI]?ue.namespaceURI===pe?be.namespaceURI===Ee?Re==="svg":be.namespaceURI===rt?Re==="svg"&&(et==="annotation-xml"||Xe[et]):!!vt[Re]:ue.namespaceURI===rt?be.namespaceURI===Ee?Re==="math":be.namespaceURI===pe?Re==="math"&&ct[et]:!!dt[Re]:ue.namespaceURI===Ee?be.namespaceURI===pe&&!ct[et]||be.namespaceURI===rt&&!Xe[et]?!1:!dt[Re]&&(ot[Re]||!vt[Re]):!!(Je==="application/xhtml+xml"&&Fe[ue.namespaceURI]):!1},ht=function(ue){arrayPush(n.removed,{element:ue});try{O(ue).removeChild(ue)}catch{I(ue)}},ut=function(ue,be){try{arrayPush(n.removed,{attribute:be.getAttributeNode(ue),from:be})}catch{arrayPush(n.removed,{attribute:null,from:be})}if(be.removeAttribute(ue),ue==="is")if(Me||Ie)try{ht(be)}catch{}else try{be.setAttribute(ue,"")}catch{}},St=function(ue){let be=null,Re=null;if(Ae)ue="<remove></remove>"+ue;else{const nt=stringMatch(ue,/^[\r\n\t ]+/);Re=nt&&nt[0]}Je==="application/xhtml+xml"&&_e===Ee&&(ue='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+ue+"</body></html>");const et=N?N.createHTML(ue):ue;if(_e===Ee)try{be=new R().parseFromString(et,Je)}catch{}if(!be||!be.documentElement){be=L.createDocument(_e,"template",null);try{be.documentElement.innerHTML=ze?j:et}catch{}}const lt=be.body||be.documentElement;return ue&&Re&&lt.insertBefore(d.createTextNode(Re),lt.childNodes[0]||null),_e===Ee?Y.call(be,we?"html":"body")[0]:we?be.documentElement:lt},Ct=function(ue){return H.call(ue.ownerDocument||ue,ue,E.SHOW_ELEMENT|E.SHOW_COMMENT|E.SHOW_TEXT|E.SHOW_PROCESSING_INSTRUCTION|E.SHOW_CDATA_SECTION,null)},Et=function(ue){return ue instanceof _&&(typeof ue.nodeName!="string"||typeof ue.textContent!="string"||typeof ue.removeChild!="function"||!(ue.attributes instanceof T)||typeof ue.removeAttribute!="function"||typeof ue.setAttribute!="function"||typeof ue.namespaceURI!="string"||typeof ue.insertBefore!="function"||typeof ue.hasChildNodes!="function")},kt=function(ue){return typeof b=="function"&&ue instanceof b};function mt(ke,ue,be){arrayForEach(ke,Re=>{Re.call(n,ue,be,Ke)})}const Mt=function(ue){let be=null;if(mt(Q.beforeSanitizeElements,ue,null),Et(ue))return ht(ue),!0;const Re=$e(ue.nodeName);if(mt(Q.uponSanitizeElement,ue,{tagName:Re,allowedTags:se}),ve&&ue.hasChildNodes()&&!kt(ue.firstElementChild)&&regExpTest(/<[/\w!]/g,ue.innerHTML)&&regExpTest(/<[/\w!]/g,ue.textContent)||ue.nodeType===NODE_TYPE.progressingInstruction||ve&&ue.nodeType===NODE_TYPE.comment&&regExpTest(/<[/\w]/g,ue.data))return ht(ue),!0;if(!(me.tagCheck instanceof Function&&me.tagCheck(Re))&&(!se[Re]||de[Re])){if(!de[Re]&&It(Re)&&(oe.tagNameCheck instanceof RegExp&&regExpTest(oe.tagNameCheck,Re)||oe.tagNameCheck instanceof Function&&oe.tagNameCheck(Re)))return!1;if(xe&&!He[Re]){const et=O(ue)||ue.parentNode,lt=D(ue)||ue.childNodes;if(lt&&et){const nt=lt.length;for(let ft=nt-1;ft>=0;--ft){const gt=k(lt[ft],!0);gt.__removalCount=(ue.__removalCount||0)+1,et.insertBefore(gt,P(ue))}}}return ht(ue),!0}return ue instanceof S&&!pt(ue)||(Re==="noscript"||Re==="noembed"||Re==="noframes")&&regExpTest(/<\/no(script|embed|frames)/i,ue.innerHTML)?(ht(ue),!0):(Te&&ue.nodeType===NODE_TYPE.text&&(be=ue.textContent,arrayForEach([J,re,ne],et=>{be=stringReplace(be,et," ")}),ue.textContent!==be&&(arrayPush(n.removed,{element:ue.cloneNode()}),ue.textContent=be)),mt(Q.afterSanitizeElements,ue,null),!1)},Pt=function(ue,be,Re){if(Ne&&(be==="id"||be==="name")&&(Re in d||Re in it))return!1;if(!(ge&&!fe[be]&&regExpTest(te,be))){if(!(he&&regExpTest(F,be))){if(!(me.attributeCheck instanceof Function&&me.attributeCheck(be,ue))){if(!le[be]||fe[be]){if(!(It(ue)&&(oe.tagNameCheck instanceof RegExp&&regExpTest(oe.tagNameCheck,ue)||oe.tagNameCheck instanceof Function&&oe.tagNameCheck(ue))&&(oe.attributeNameCheck instanceof RegExp&&regExpTest(oe.attributeNameCheck,be)||oe.attributeNameCheck instanceof Function&&oe.attributeNameCheck(be,ue))||be==="is"&&oe.allowCustomizedBuiltInElements&&(oe.tagNameCheck instanceof RegExp&&regExpTest(oe.tagNameCheck,Re)||oe.tagNameCheck instanceof Function&&oe.tagNameCheck(Re))))return!1}else if(!Ge[be]){if(!regExpTest(ee,stringReplace(Re,V,""))){if(!((be==="src"||be==="xlink:href"||be==="href")&&ue!=="script"&&stringIndexOf(Re,"data:")===0&&Ye[ue])){if(!(ye&&!regExpTest(q,stringReplace(Re,V,"")))){if(Re)return!1}}}}}}}return!0},It=function(ue){return ue!=="annotation-xml"&&stringMatch(ue,W)},Nt=function(ue){mt(Q.beforeSanitizeAttributes,ue,null);const{attributes:be}=ue;if(!be||Et(ue))return;const Re={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:le,forceKeepAttr:void 0};let et=be.length;for(;et--;){const lt=be[et],{name:nt,namespaceURI:ft,value:gt}=lt,bt=$e(nt),Tt=gt;let st=nt==="value"?Tt:stringTrim(Tt);if(Re.attrName=bt,Re.attrValue=st,Re.keepAttr=!0,Re.forceKeepAttr=void 0,mt(Q.uponSanitizeAttribute,ue,Re),st=Re.attrValue,Le&&(bt==="id"||bt==="name")&&(ut(nt,ue),st=De+st),ve&&regExpTest(/((--!?|])>)|<\/(style|title|textarea)/i,st)){ut(nt,ue);continue}if(bt==="attributename"&&stringMatch(st,"href")){ut(nt,ue);continue}if(Re.forceKeepAttr)continue;if(!Re.keepAttr){ut(nt,ue);continue}if(!Se&&regExpTest(/\/>/i,st)){ut(nt,ue);continue}Te&&arrayForEach([J,re,ne],Dt=>{st=stringReplace(st,Dt," ")});const Ot=$e(ue.nodeName);if(!Pt(Ot,bt,st)){ut(nt,ue);continue}if(N&&typeof A=="object"&&typeof A.getAttributeType=="function"&&!ft)switch(A.getAttributeType(Ot,bt)){case"TrustedHTML":{st=N.createHTML(st);break}case"TrustedScriptURL":{st=N.createScriptURL(st);break}}if(st!==Tt)try{ft?ue.setAttributeNS(ft,nt,st):ue.setAttribute(nt,st),Et(ue)?ht(ue):arrayPop(n.removed)}catch{ut(nt,ue)}}mt(Q.afterSanitizeAttributes,ue,null)},Kt=function ke(ue){let be=null;const Re=Ct(ue);for(mt(Q.beforeSanitizeShadowDOM,ue,null);be=Re.nextNode();)mt(Q.uponSanitizeShadowNode,be,null),Mt(be),Nt(be),be.content instanceof g&&ke(be.content);mt(Q.afterSanitizeShadowDOM,ue,null)};return n.sanitize=function(ke){let ue=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},be=null,Re=null,et=null,lt=null;if(ze=!ke,ze&&(ke="<!-->"),typeof ke!="string"&&!kt(ke))if(typeof ke.toString=="function"){if(ke=ke.toString(),typeof ke!="string")throw typeErrorCreate("dirty is not a string, aborting")}else throw typeErrorCreate("toString is not a function");if(!n.isSupported)return ke;if(je||at(ue),n.removed=[],typeof ke=="string"&&(Oe=!1),Oe){if(ke.nodeName){const gt=$e(ke.nodeName);if(!se[gt]||de[gt])throw typeErrorCreate("root node is forbidden and cannot be sanitized in-place")}}else if(ke instanceof b)be=St("<!---->"),Re=be.ownerDocument.importNode(ke,!0),Re.nodeType===NODE_TYPE.element&&Re.nodeName==="BODY"||Re.nodeName==="HTML"?be=Re:be.appendChild(Re);else{if(!Me&&!Te&&!we&&ke.indexOf("<")===-1)return N&&Be?N.createHTML(ke):ke;if(be=St(ke),!be)return Me?null:Be?j:""}be&&Ae&&ht(be.firstChild);const nt=Ct(Oe?ke:be);for(;et=nt.nextNode();)Mt(et),Nt(et),et.content instanceof g&&Kt(et.content);if(Oe)return ke;if(Me){if(Ie)for(lt=B.call(be.ownerDocument);be.firstChild;)lt.appendChild(be.firstChild);else lt=be;return(le.shadowroot||le.shadowrootmode)&&(lt=Z.call(p,lt,!0)),lt}let ft=we?be.outerHTML:be.innerHTML;return we&&se["!doctype"]&&be.ownerDocument&&be.ownerDocument.doctype&&be.ownerDocument.doctype.name&&regExpTest(DOCTYPE_NAME,be.ownerDocument.doctype.name)&&(ft="<!DOCTYPE "+be.ownerDocument.doctype.name+`>
219
+ as expected. Check README.md for usage'`)},n.prototype.componentWillUnmount=function(){this.el&&(this.el.removeEventListener("scroll",this.throttledOnScrollListener),this.props.pullDownToRefresh&&(this.el.removeEventListener("touchstart",this.onStart),this.el.removeEventListener("touchmove",this.onMove),this.el.removeEventListener("touchend",this.onEnd),this.el.removeEventListener("mousedown",this.onStart),this.el.removeEventListener("mousemove",this.onMove),this.el.removeEventListener("mouseup",this.onEnd)))},n.prototype.componentDidUpdate=function(d){this.props.dataLength!==d.dataLength&&(this.actionTriggered=!1,this.setState({showLoader:!1}))},n.getDerivedStateFromProps=function(d,p){var m=d.dataLength!==p.prevDataLength;return m?__assign(__assign({},p),{prevDataLength:d.dataLength}):null},n.prototype.isElementAtTop=function(d,p){p===void 0&&(p=.8);var m=d===document.body||d===document.documentElement?window.screen.availHeight:d.clientHeight,g=parseThreshold(p);return g.unit===ThresholdUnits.Pixel?d.scrollTop<=g.value+m-d.scrollHeight+1:d.scrollTop<=g.value/100+m-d.scrollHeight+1},n.prototype.isElementAtBottom=function(d,p){p===void 0&&(p=.8);var m=d===document.body||d===document.documentElement?window.screen.availHeight:d.clientHeight,g=parseThreshold(p);return g.unit===ThresholdUnits.Pixel?d.scrollTop+m>=d.scrollHeight-g.value:d.scrollTop+m>=g.value/100*d.scrollHeight},n.prototype.render=function(){var d=this,p=__assign({height:this.props.height||"auto",overflow:"auto",WebkitOverflowScrolling:"touch"},this.props.style),m=this.props.hasChildren||!!(this.props.children&&this.props.children instanceof Array&&this.props.children.length),g=this.props.pullDownToRefresh&&this.props.height?{overflow:"auto"}:{};return React__namespace.default.createElement("div",{style:g,className:"infinite-scroll-component__outerdiv"},React__namespace.default.createElement("div",{className:"infinite-scroll-component "+(this.props.className||""),ref:function(y){return d._infScroll=y},style:p},this.props.pullDownToRefresh&&React__namespace.default.createElement("div",{style:{position:"relative"},ref:function(y){return d._pullDown=y}},React__namespace.default.createElement("div",{style:{position:"absolute",left:0,right:0,top:-1*this.maxPullDownDistance}},this.state.pullToRefreshThresholdBreached?this.props.releaseToRefreshContent:this.props.pullDownToRefreshContent)),this.props.children,!this.state.showLoader&&!m&&this.props.hasMore&&this.props.loader,this.state.showLoader&&this.props.hasMore&&this.props.loader,!this.props.hasMore&&this.props.endMessage))},n})(React.Component);function usePagination(u=20){const[n,d]=React.useState({offset:0,limit:u,hasMore:!0,isLoading:!1}),p=React.useCallback(()=>{d({offset:0,limit:u,hasMore:!0,isLoading:!1})},[u]),m=React.useCallback(()=>{d(b=>({...b,offset:b.offset+b.limit}))},[]),g=React.useCallback(b=>{d(S=>({...S,isLoading:b}))},[]),y=React.useCallback(b=>{d(S=>({...S,hasMore:b}))},[]);return{...n,reset:p,loadMore:m,setLoading:g,setHasMore:y}}function useMediaSearch(u){const{core:n}=useApi(),[d,p]=React.useState([]),[m,g]=React.useState(""),y=usePagination(),b=React.useCallback(async({offset:_,limit:R,query:A,reset:C=!1})=>{y.setLoading(!0);try{const k=A?await n.searchWebImage(A,R,_):await n.fetchTrendyWebImage(R,_);k.length===0?y.setHasMore(!1):p(I=>C?k:[...I,...k])}catch{y.setHasMore(!1)}finally{y.setLoading(!1)}},[n,y]),S=React.useCallback(async({offset:_,limit:R,query:A="",reset:C=!1})=>{y.setLoading(!0);try{const k=A?await n.searchWebGif(A,R,_):await n.fetchTrendyWebGif(R,_);k.length===0?y.setHasMore(!1):p(I=>C?k:[...I,...k])}catch{y.setHasMore(!1)}finally{y.setLoading(!1)}},[n,y]),E=React.useCallback(_=>u==="images"?b(_):S(_),[u,b,S]),T=React.useCallback(()=>{p([]),g(""),y.reset()},[y]);return{items:d,...y,searchQuery:m,setSearchQuery:g,fetch:E,reset:T}}const CACHE_TTL_MS=6e4,withInitialQuery={limit:ITEMS_PER_PAGE,offset:0,query:"",reset:!0};function ImageSearchModal({open:u,onOpenChange:n,onImageSelect:d,initialQuery:p,children:m}){const{t:g}=usePostBuilder(),[y,b]=React.useState("gifs"),[S,E]=React.useState(p??""),T=React.useRef(null),_=React.useRef(),R=useMediaSearch("images"),A=useMediaSearch("gifs"),C=React.useRef(A),k=React.useRef({gifs:{query:"",timestamp:0},images:{query:"",timestamp:0}}),I=React.useCallback((B,Y)=>{const Z=k.current[B];return Z.query===Y&&Date.now()-Z.timestamp<CACHE_TTL_MS},[]),P=React.useCallback((B,Y)=>{k.current[B]={query:Y,timestamp:Date.now()}},[]);React.useEffect(()=>{if(!u)return;const B=p??"";E(B);const Y={...withInitialQuery,query:B};return A.fetch(Y).catch(Z=>{}),R.fetch(Y).catch(Z=>{}),P("gifs",B),P("images",B),_.current=setTimeout(()=>{T.current?.select()},0),()=>{clearTimeout(_.current)}},[u]),React.useEffect(()=>{C.current=y==="images"?R:A},[y,R,A]);const D=B=>{clearTimeout(_.current),O.cancel(),n?.(B),B||(R.reset(),A.reset(),E(""),k.current={gifs:{query:"",timestamp:0},images:{query:"",timestamp:0}})},O=React.useMemo(()=>debounce$2(async(B,Y)=>{const Z=C.current;Z.reset(),await Z.fetch({...withInitialQuery,query:B}),P(Y,B)},500),[P]);React.useEffect(()=>()=>{O.cancel(),clearTimeout(_.current)},[O]);const N=React.useCallback(B=>{E(B),O(B,y)?.catch(Y=>{})},[O,y]),j=React.useCallback(B=>{const Y=B;if(O.cancel(),b(Y),I(Y,S))return;const Z=Y==="images"?R:A;Z.reset(),Z.fetch({...withInitialQuery,query:S}).then(()=>P(Y,S)).catch(Q=>{})},[O,S,I,R,A,P]),L=React.useCallback(async()=>{const B=C.current,Y=B.offset+B.limit;B.loadMore(),await B.fetch({offset:Y,limit:B.limit,query:S})},[S]),H=React.useCallback(B=>{d?.(B,y==="gifs"?ImageSearchFrom?.Gif:y==="images"?ImageSearchFrom.Image:void 0),n(!1)},[y,d,n]);return jsxRuntime.jsxs(Dialog,{open:u,onOpenChange:D,children:[jsxRuntime.jsx(DialogTrigger,{asChild:!0,children:m??jsxRuntime.jsx(Button,{children:"Open Search Modal"})}),jsxRuntime.jsxs(DialogContent,{className:"max-w-4xl w-full h-[80vh] flex flex-col overflow-hidden px-0 py-0 -translate-1/2",children:[jsxRuntime.jsx(DialogHeader,{className:"p-4 border-b bg-accent",children:jsxRuntime.jsx(DialogTitle,{children:g("mediaSearchTitleKey")})}),jsxRuntime.jsxs(Tabs,{defaultValue:"gifs",value:y,onValueChange:j,className:"flex-1 grow flex flex-col overflow-y-auto",children:[jsxRuntime.jsx("div",{className:"px-4",children:jsxRuntime.jsxs(TabsList,{className:"grid w-full grid-cols-2",children:[jsxRuntime.jsx(TabsTrigger,{value:"gifs",children:g("gifSearchKey")}),jsxRuntime.jsx(TabsTrigger,{value:"images",children:g("imageSearchKey")})]})}),jsxRuntime.jsx(SearchBar,{ref:T,value:S,onChange:N,placeholder:g(y==="gifs"?"searchGifPlaceholder":"searchIMagePlaceholder")}),jsxRuntime.jsx(TabsContent,{value:"images",className:"flex-1 grow mt-4 overflow-y-auto",children:jsxRuntime.jsx(MediaGrid,{items:R.items,onItemClick:H,hasMore:R.hasMore,loadMore:L,scrollTargetId:SCROLL_TARGET_IDS.images})}),jsxRuntime.jsx(TabsContent,{value:"gifs",className:"flex-1 grow mt-4 overflow-y-auto",children:jsxRuntime.jsx(MediaGrid,{items:A.items,onItemClick:H,hasMore:A.hasMore,loadMore:L,scrollTargetId:SCROLL_TARGET_IDS.gifs})})]})]})]})}const SearchBar=React__namespace.default.forwardRef(({value:u,onChange:n,placeholder:d},p)=>jsxRuntime.jsx("div",{className:"mt-2 px-4",children:jsxRuntime.jsxs("div",{className:"relative",children:[jsxRuntime.jsx(Search,{className:"absolute left-3 top-1/2 -translate-y-1/2 transform-none h-4 w-4 text-muted-foreground"}),jsxRuntime.jsx(Input,{ref:p,type:"text",placeholder:d,value:u,onChange:m=>n(m.target.value),className:"pl-9"})]})}));SearchBar.displayName="SearchBar";function MediaGrid({items:u,onItemClick:n,hasMore:d,loadMore:p,scrollTargetId:m}){const g=b=>b?.thumbnail?.url||b?.source?.url,y=b=>b?.source?.url||b?.thumbnail?.url;return jsxRuntime.jsx("div",{id:m,className:"h-full overflow-y-auto",children:jsxRuntime.jsx(InfiniteScroll,{dataLength:u.length,next:p,hasMore:d,loader:jsxRuntime.jsx("div",{className:"flex justify-center py-4",children:jsxRuntime.jsx(Spinner,{className:"h-6 w-6"})}),endMessage:jsxRuntime.jsx("p",{className:"text-center text-muted-foreground py-4",children:u.length===0?"No items found":"No more items to load"}),scrollableTarget:m,children:jsxRuntime.jsx("div",{className:"grid grid-cols-2 md:grid-cols-3 gap-4 py-2 px-4",children:u.map(b=>jsxRuntime.jsx(Card,{className:"py-0 overflow-hidden cursor-pointer hover:ring-2 hover:ring-primary transition-all",onClick:()=>n(y(b)),children:jsxRuntime.jsx("img",{loading:"lazy",src:g(b),alt:"Media item",className:"w-full h-32 object-cover"})},y(b)))})})})}const mediaSearch=Object.freeze(Object.defineProperty({__proto__:null,ImageSearchModal,MediaGrid,SearchBar},Symbol.toStringTag,{value:"Module"})),createMediaOption=(u,n=MediaItemType.MEDIA_ITEM,d)=>({key:v4(),type:n,imageType:u?.type,...d?{searchFrom:d}:{},sources:{original:{url:u?.high_resolution??u?.url,width:u?.width,height:u?.height,isBase64:!1},thumbnail:{url:u?.thumbnail,width:u?.width,height:u?.height,isBase64:!1},...u?.placeholder?{placeholder:{url:u?.placeholder,width:u?.width,height:u?.height,isBase64:!0}}:{}},playableDuration:u?.playableDuration??null}),isTextChoice=u=>"text"in u,createTextOption=(u,n)=>({key:v4(),type:PollType.POLL_TEXT_ITEM,option_id:v4(),option_color:OPTION_COLORS[n%OPTION_COLORS.length],text:u.trim()}),createPollMediaOption=(u,n,d)=>{const m=u?.type?.includes("video")?PollType.POLL_MEDIA_ITEM:PollType.POLL_IMAGE_ITEM;return{...createMediaOption(u,m,d),option_color:OPTION_COLORS[n%OPTION_COLORS.length],option_id:v4()}},createPollMediaPlaceholder=(u,n,d)=>{const p=u.type.startsWith("video/");return{key:v4(),type:p?PollType.POLL_MEDIA_ITEM:PollType.POLL_IMAGE_ITEM,imageType:u.type,sources:{original:{url:n,width:0,height:0,isBase64:!1},thumbnail:{url:n,width:0,height:0,isBase64:!1},placeholder:{url:"",width:0,height:0,isBase64:!0}},playableDuration:null,option_color:OPTION_COLORS[d%OPTION_COLORS.length],option_id:v4()}},ensurePollMinimum=u=>u.length!==1?u:u.concat(u).map((n,d)=>({...n,key:n?.key??v4(),option_id:d===0?n.option_id:v4(),option_color:OPTION_COLORS[d%OPTION_COLORS.length]})),isPlaceholder=u=>"type"in u&&u.type==="placeholder",PollCreator=({choices:u,onChange:n})=>{const{fileStore:d}=useApi(),{allowSendWhileUploading:p,t:m}=usePostBuilder(),{editor:g}=useCurrentEditor(),[y,b]=React.useState(""),[S,E]=React.useState(!1),[T,_]=React.useState(!1),[R,A]=React.useState(u),{trackPollOptionAdded:C,trackPollOptionRemoved:k,trackMediaUploadFailed:I,trackMediaUploadSuccess:P}=useAnalyticsTracking(),D=React.useRef(!1);React.useEffect(()=>{D.current||A(u),D.current=!1},[u]);const O=POLL_LIMITS.MAX-R.length,N=R.length<POLL_LIMITS.MAX,j=R.filter(te=>!isPlaceholder(te)),L=j.length>=POLL_LIMITS.MIN,H=React.useRef(!1),B=React.useRef(j.length);React.useEffect(()=>{const te=B.current,F=j.length;B.current=F,!H.current&&te===0&&F>=1&&(H.current=!0,requestAnimationFrame(()=>{if(!g||g.isDestroyed)return;let q="";if(g.state.doc.forEach(W=>{W.type.name==="paragraph"&&(q+=W.textContent)}),q.trim())return;const V=m("pollQuestionPlaceholderKey");g.chain().insertContentAt(1,V).setTextSelection({from:1,to:1+V.length}).focus().run()}))},[j.length,g,m]);const Y=te=>{const F=te.filter(q=>!isPlaceholder(q));D.current=!0,n(F)},Z=te=>{A(te),setTimeout(()=>{Y(te)},0)},Q=()=>{if(!y.trim()||!N)return;const te=createTextOption(y,R.length),F=[...R,te];Z(F),C({option_count:F.length,option_type:"text"}),b(""),E(!1)},J=async te=>{if(!te||!N)return;let F=te.slice(0,O);const q=F.filter(ae=>!validateFile(ae,MAX_FILE_SIZE,[]).valid);if(q.length>0){const ae=q.map(le=>`"${le.name}"`).join(", ");if(toast.error(`${q.length>1?"Some files exceed":`${ae} exceeds`} the ${MAX_FILE_SIZE/1024/1024}MB limit`),F=F.filter(le=>validateFile(le,MAX_FILE_SIZE,[]).valid),F.length===0)return}const V=R.length;if(F=await Promise.all(F.map(async ae=>{if(ae.type.startsWith("image/"))try{return await imageCompression(ae,{maxSizeMB:10})}catch{return ae}return ae})),!p){const ae=F.map((ce,oe)=>({type:"placeholder",key:`placeholder-${Date.now()}-${oe}`})),le=[...R,...ae];A(le);try{const ce=F.map(async(de,fe)=>{try{const me=await d.uploadImage(de);return P({editorType:EditorTypes.Poll,mediaType:de.type.startsWith("video/")?"video":"image",fileSizeMB:de.size/1048576,source:"local"}),createPollMediaOption(me,V+fe)}catch{return I({editorType:EditorTypes.Poll,mediaType:de.type.startsWith("video/")?"video":"image",fileSizeMB:de.size/1048576,source:"local",errorType:"server_error"}),null}}),oe=await Promise.all(ce);A(de=>{const fe=[...de];oe.forEach((he,ge)=>{const ye=V+ge;he!==null&&ye<fe.length&&(fe[ye]=he)});const me=fe.filter(he=>!isPlaceholder(he));return oe?.forEach(he=>{he!==null&&C({option_count:me.length,option_type:PollOptionType[he.type]})}),setTimeout(()=>{Y(me)},0),me})}catch{A(oe=>{const de=oe.filter(fe=>!isPlaceholder(fe));return setTimeout(()=>{Y(de)},0),de})}return}const W=g?.storage?.poll;if(!W)return;const ee=F.map((ae,le)=>{const ce=URL.createObjectURL(ae);return{placeholder:createPollMediaPlaceholder(ae,ce,V+le),blob:ae,blobUrl:ce}}),se=[...R,...ee.map(ae=>ae.placeholder)];A(se),setTimeout(()=>Y(se),0),ee.forEach(({placeholder:ae,blob:le})=>{const ce=new AbortController,oe=le instanceof File?le:new File([le],ae.key,{type:le.type}),de=d.uploadChunked(oe,void 0,ce.signal).then(fe=>({...ae,sources:{original:{url:fe.high_resolution??fe.url,width:fe.width??0,height:fe.height??0,isBase64:!1},thumbnail:{url:fe.thumbnail??fe.url,width:fe.width??0,height:fe.height??0,isBase64:!1},placeholder:{url:fe.placeholder??"",width:fe.width??0,height:fe.height??0,isBase64:!0}}}));de.catch(()=>{}),de.then(fe=>{A(me=>{const he=me.map(ge=>!isPlaceholder(ge)&&ge.key===ae.key?fe:ge);return setTimeout(()=>Y(he),0),he})}).catch(()=>{}),W.registerPendingUpload(ae.key,{blob:le,promise:de,abort:()=>ce.abort()})})},re=async(te,F)=>{if(!N)return;const q=R.length,V={type:"placeholder",key:`placeholder-${Date.now()}`},W=[...R,V];A(W);try{const ee=await d.uploadUrl(te),se=createPollMediaOption(ee,q,F),ae=F===ImageSearchFrom.Gif||ee?.url?.toLowerCase().includes(".gif");P({editorType:EditorTypes.Poll,mediaType:ae?"gif":"image",fileSizeMB:0,source:F===ImageSearchFrom?.Gif?"gif_search":"image_search"}),A(le=>{const ce=[...le];return q<ce.length&&isPlaceholder(ce[q])&&(ce[q]=se),C({option_count:ce.filter(oe=>!isPlaceholder(oe)).length,option_type:ae?"gif":"image"}),setTimeout(()=>{Y(ce)},0),ce})}catch{I({editorType:EditorTypes.Poll,mediaType:F===ImageSearchFrom.Gif?"gif":"image",fileSizeMB:0,source:F===ImageSearchFrom.Gif?"gif_search":"image_search",errorType:"server_error"}),A(se=>{const ae=se.filter(le=>!isPlaceholder(le));return setTimeout(()=>{Y(ae)},0),ae})}},ne=te=>{if(!L)return;const F=R[te];if(!isPlaceholder(F)){const V=g?.storage?.poll,W=V?.getPendingUpload?.(F.key);W&&(W.abort(),V.clearPendingUpload(F.key))}const q=R.filter((V,W)=>W!==te);isPlaceholder(F)||k({option_count:q.filter(V=>!isPlaceholder(V)).length,option_type:PollOptionType[F.type]}),Z(q)};return jsxRuntime.jsxs("div",{"data-type":"poll",className:"w-full",children:[jsxRuntime.jsxs("div",{className:"grid grid-cols-2 gap-3 sm:gap-4 lg:grid-cols-4",children:[R.map((te,F)=>isPlaceholder(te)?jsxRuntime.jsx(LoadingSlot,{},te.key):isTextChoice(te)?jsxRuntime.jsx(TextChoiceCard,{choice:te,index:F,canRemove:L,onRemove:()=>ne(F)},te.key):jsxRuntime.jsx(MediaChoiceCard,{choice:te,index:F,canRemove:L,onRemove:()=>ne(F)},te.key)),N&&jsxRuntime.jsx(AddChoiceBlock,{disabled:!N,onFiles:te=>{J(te)},onOpenSearch:()=>_(!0),onOpenText:()=>E(!0)}),Array.from({length:Math.max(0,O-1)}).map((te,F)=>jsxRuntime.jsx(EmptyPlaceholder,{slotNumber:R.length+2+F},`empty-${F}`))]}),jsxRuntime.jsx(TextOptionModal,{open:S,onOpenChange:E,value:y,onChange:b,onSubmit:Q,disabled:!N}),T&&jsxRuntime.jsx(ImageSearchModal,{open:T,onOpenChange:_,onImageSelect:(te,F)=>{re(te,F)},initialQuery:extractInitialSearchQuery(g)})]})},PollComponent=({node:u,updateAttributes:n})=>{const{choices:d}=u.attrs,p=m=>{n({choices:m})};return jsxRuntime.jsx(NodeViewWrapper,{"data-type":"poll","data-drag-handle":"false",className:"not-prose mt-5 select-none",children:jsxRuntime.jsx(PollCreator,{choices:d,onChange:p,onRemovePoll:()=>{}})})},Poll=Node3.create({name:"poll",group:"block",atom:!0,draggable:!1,selectable:!1,addAttributes(){return{choices:{default:[]}}},parseHTML(){return[{tag:'div[data-type="poll"]'}]},renderHTML({HTMLAttributes:u}){return["div",mergeAttributes(u,{"data-type":"poll"})]},addNodeView(){return ReactNodeViewRenderer(PollComponent)},addStorage(){const u=new Map;return{pendingUploads:u,getPendingUpload(n){return u.get(n)},registerPendingUpload(n,d){u.set(n,d)},clearPendingUpload(n){u.delete(n)}}},addCommands(){return{insertPoll:u=>({chain:n})=>n().insertContent({type:this.name,attrs:u}).run()}},addProseMirrorPlugins(){const u=this.name;return[new Plugin({key:new PluginKey("pollKeyHandlerPlugin"),props:{handleKeyDown:(n,d)=>{const{state:p}=n,{selection:m}=p,g=d.key;if(g!=="Backspace"&&g!=="Delete")return!1;if(m instanceof NodeSelection&&m.node.type.name===u)return d.preventDefault(),!0;const{$from:y,empty:b}=m;if(b&&y){const S=y.nodeBefore;if(S&&S.type.name===u&&g==="Backspace")return d.preventDefault(),!0;const E=y.nodeAfter;if(E&&E.type.name===u&&g==="Delete")return d.preventDefault(),!0}return!1},handleDOMEvents:{mousedown:(n,d)=>{const p=d,m=p.target;if(!m||m.closest('input, textarea, button, select, [contenteditable="true"]'))return!1;const g=m.closest('[data-type="poll"]')??null;if(!g)return!1;p.preventDefault();const y=n.posAtDOM(g,0);if(typeof y=="number"){const b=n.state.doc.resolve(y);let S=y;const E=b.nodeAfter;if(E&&E.type.name===u&&(S=y+E.nodeSize),S<=n.state.doc.content.size){const T=n.state.tr.setSelection(TextSelection.create(n.state.doc,S));n.dispatch(T),n.focus()}}return!0}}},appendTransaction:(n,d,p)=>{const m=b=>{let S=0;return b.descendants(E=>{E.type.name===u&&S++}),S},g=m(d.doc),y=m(p.doc);if(g>0&&y===0){const b=p.tr;return b.replaceWith(0,p.doc.content.size,d.doc.content),b}}})]}});var NODES=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],Primitive=NODES.reduce((u,n)=>{const d=createSlot$3(`Primitive.${n}`),p=React__namespace.forwardRef((m,g)=>{const{asChild:y,...b}=m,S=y?d:n;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),jsxRuntime.jsx(S,{...b,ref:g})});return p.displayName=`Primitive.${n}`,{...u,[n]:p}},{}),NAME="Separator",DEFAULT_ORIENTATION="horizontal",ORIENTATIONS=["horizontal","vertical"],Separator$1=React__namespace.forwardRef((u,n)=>{const{decorative:d,orientation:p=DEFAULT_ORIENTATION,...m}=u,g=isValidOrientation(p)?p:DEFAULT_ORIENTATION,b=d?{role:"none"}:{"aria-orientation":g==="vertical"?g:void 0,role:"separator"};return jsxRuntime.jsx(Primitive.div,{"data-orientation":g,...b,...m,ref:n})});Separator$1.displayName=NAME;function isValidOrientation(u){return ORIENTATIONS.includes(u)}var Root=Separator$1;function Separator({className:u,orientation:n="horizontal",decorative:d=!0,...p}){return jsxRuntime.jsx(Root,{"data-slot":"separator",decorative:d,orientation:n,className:cn("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",u),...p})}function FieldSet({className:u,...n}){return jsxRuntime.jsx("fieldset",{"data-slot":"field-set",className:cn("flex flex-col gap-6","has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3",u),...n})}function FieldGroup({className:u,...n}){return jsxRuntime.jsx("div",{"data-slot":"field-group",className:cn("group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4",u),...n})}const fieldVariants=cva("group/field flex w-full gap-3 data-[invalid=true]:text-destructive",{variants:{orientation:{vertical:["flex-col [&>*]:w-full [&>.sr-only]:w-auto"],horizontal:["flex-row items-center","[&>[data-slot=field-label]]:flex-auto","has-[>[data-slot=field-content]]:items-start has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"],responsive:["flex-col [&>*]:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto","@md/field-group:[&>[data-slot=field-label]]:flex-auto","@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px"]}},defaultVariants:{orientation:"vertical"}});function Field({className:u,orientation:n="vertical",...d}){return jsxRuntime.jsx("div",{role:"group","data-slot":"field","data-orientation":n,className:cn(fieldVariants({orientation:n}),u),...d})}function FieldLabel({className:u,...n}){return jsxRuntime.jsx(Label,{"data-slot":"field-label",className:cn("group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50","has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>*]:data-[slot=field]:p-4","has-data-[state=checked]:bg-primary/5 has-data-[state=checked]:border-primary dark:has-data-[state=checked]:bg-primary/10",u),...n})}function FieldError({className:u,children:n,errors:d,...p}){const m=React.useMemo(()=>n||(d?d?.length===1&&d[0]?.message?d[0].message:jsxRuntime.jsx("ul",{className:"ml-4 flex list-disc flex-col gap-1",children:d.map((g,y)=>g?.message&&jsxRuntime.jsx("li",{children:g.message},y))}):null),[n,d]);return m?jsxRuntime.jsx("div",{role:"alert","data-slot":"field-error",className:cn("text-destructive text-sm font-normal",u),...p,children:m}):null}function Textarea({className:u,...n}){return jsxRuntime.jsx("textarea",{"data-slot":"textarea",className:cn("border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",u),...n})}const InputGroup=React.forwardRef(({className:u,...n},d)=>jsxRuntime.jsx("div",{ref:d,"data-slot":"input-group",role:"group",className:cn("group/input-group border-input dark:bg-input/30 relative flex w-full items-center rounded-md border shadow-xs transition-[color,box-shadow] outline-none","h-9 min-w-0 has-[>textarea]:h-auto","has-[>[data-align=inline-start]]:[&>input]:pl-2","has-[>[data-align=inline-end]]:[&>input]:pr-2","has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3","has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3","has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot=input-group-control]:focus-visible]:ring-[3px]","has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40",u),...n}));InputGroup.displayName="InputGroup";const inputGroupAddonVariants=cva("text-muted-foreground flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium select-none [&>svg:not([class*='size-'])]:size-4 [&>kbd]:rounded-[calc(var(--radius)-5px)] group-data-[disabled=true]/input-group:opacity-50",{variants:{align:{"inline-start":"order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]","inline-end":"order-last pr-3 has-[>button]:mr-[-0.45rem] has-[>kbd]:mr-[-0.35rem]","block-start":"order-first w-full justify-start px-3 pt-3 [.border-b]:pb-3 group-has-[>input]/input-group:pt-2.5","block-end":"order-last w-full justify-start px-3 pb-3 [.border-t]:pt-3 group-has-[>input]/input-group:pb-2.5"}},defaultVariants:{align:"inline-start"}}),InputGroupAddon=React.forwardRef(({className:u,align:n="inline-start",...d},p)=>jsxRuntime.jsx("div",{ref:p,role:"group","data-slot":"input-group-addon","data-align":n,className:cn(inputGroupAddonVariants({align:n}),u),onClick:m=>{m.target.closest("button")||m.currentTarget.parentElement?.querySelector("input")?.focus()},...d}));InputGroupAddon.displayName="InputGroupAddon";const inputGroupButtonVariants=cva("text-sm shadow-none flex gap-2 items-center",{variants:{size:{xs:"h-6 gap-1 px-2 rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-3.5 has-[>svg]:px-2",sm:"h-8 px-2.5 gap-1.5 rounded-md has-[>svg]:px-2.5","icon-xs":"size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0","icon-sm":"size-8 p-0 has-[>svg]:p-0"}},defaultVariants:{size:"xs"}}),InputGroupButton=React.forwardRef(({className:u,type:n="button",variant:d="ghost",size:p="xs",...m},g)=>jsxRuntime.jsx(Button,{ref:g,type:n,"data-size":p,variant:d,className:cn(inputGroupButtonVariants({size:p}),u),...m}));InputGroupButton.displayName="InputGroupButton";const InputGroupText=React.forwardRef(({className:u,...n},d)=>jsxRuntime.jsx("span",{ref:d,className:cn("text-muted-foreground flex items-center gap-2 text-sm [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",u),...n}));InputGroupText.displayName="InputGroupText";const InputGroupInput=React.forwardRef(({className:u,ref:n,...d},p)=>jsxRuntime.jsx(Input,{ref:p,"data-slot":"input-group-control",className:cn("flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent",u),...d}));InputGroupInput.displayName="InputGroupInput";const InputGroupTextarea=React.forwardRef(({className:u,...n},d)=>jsxRuntime.jsx(Textarea,{ref:d,"data-slot":"input-group-control",className:cn("flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0 dark:bg-transparent",u),...n}));InputGroupTextarea.displayName="InputGroupTextarea";const URL_REGEX=/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u00a1-\uffff][a-z0-9\u00a1-\uffff_-]{0,62})?[a-z0-9\u00a1-\uffff]\.)+(?:[a-z\u00a1-\uffff]{2,}\.?))(?::\d{2,5})?(?:[/?#]\S*)?$/i,YOUTUBE_REGEX=/(?:https?:\/\/)?(?:www\.)?(?:youtube\.com\/watch\?(?:[^\s&]*&)*v=|youtu\.be\/)[\w-]+(?:[^\s]*)/gi,YOUTUBE_ID_REGEX=/(?:v=|\/)([a-zA-Z0-9_-]{11})(?:[?&].*)?$/,SPOTIFY_REGEX=/^(?:https?:\/\/)?(?:www\.)?open\.spotify\.com\/(track|playlist|album)\/[A-Za-z0-9_-]+/gi,WHITESPACE_REGEX=/[\n\r]/g,normalizeUrl=u=>u?`https://${u.trim().replace(/\s+/g,"").replace(/^(https?:\/\/)+/i,"")}`:"",isValidUrl=u=>URL_REGEX.test(u),detectMimeType=async u=>{try{return(await axios.head(u,{timeout:5e3})).headers["content-type"]}catch{return null}},resolveUrlType=async u=>{try{const d=await detectMimeType(u);if(d?.startsWith("image/"))return{type:MediaNodeTypes.Image,src:u};if(d?.startsWith("video/"))return{type:MediaNodeTypes.Video,src:u};if(d?.startsWith("audio/"))return{type:MediaNodeTypes.Audio,src:u}}catch{}const n=u.split(".").pop()?.toLowerCase();if(n){if(["jpg","jpeg","png","gif","webp","avif"].includes(n))return{type:MediaNodeTypes.Image,src:u};if(["mp4","webm","mov","mkv"].includes(n))return{type:MediaNodeTypes.Video,src:u};if(["mp3","wav","ogg","aac"].includes(n))return{type:MediaNodeTypes.Audio,src:u}}return null},convertLinkMetaToPreviewItem=u=>({linkDesc:u?.description,linkIcon:"",linkImage:{width:u?.image?.width,height:u?.image?.height,url:u?.image?.high_resolution??u?.image?.url??u?.image?.thumbnail??u?.image?.placeholder},linkTitle:u?.title,linkUrl:u?.url,text:u?.title,type:MediaItemType.LINK_ITEM}),extractUrlSegments=u=>{const n=[],d=/(https?:\/\/[^\s]+)/g;let p=0,m;for(;(m=d.exec(u))!==null;)m.index>p&&n.push({type:"text",content:u.slice(p,m.index)}),n.push({type:"url",content:m[0]}),p=m.index+m[0].length;return p<u.length&&n.push({type:"text",content:u.slice(p)}),n},processTextNode=(u,n)=>{const d=getNodeText(n),p=getNodeMarks(n),m=extractUrlSegments(d);return m.length===0?[n]:m.map(g=>g.type==="url"?createLinkNode(u,g.content,g.content,p):createTextNode(u,g.content,p))},transformParagraphNode=(u,n)=>{if(!hasNodeContent(n))return n;const d=[],p=getNodeContent(n);return forEachNode(p,m=>{if(isTextNode(m)&&getNodeText(m)){const g=processTextNode(u,m);d.push(...g)}else d.push(m)}),createParagraphNode(u,createFragment(d),n.attrs)},transformUrlsInSlice=(u,n)=>{const d=[];return forEachNode(n.content,p=>{isParagraphNode(p)&&hasNodeContent(p)?d.push(transformParagraphNode(u,p)):d.push(p)}),new Slice(createFragment(d),n.openStart,n.openEnd)},LinkDecoratorModal=({defaultValues:u,open:n,onOpenChange:d,onInsertLink:p,hideTextInput:m=!1,children:g})=>{const{editor:y}=useCurrentEditor(),{core:b}=useApi(),{t:S}=usePostBuilder(),[E,T]=React.useState(u?.uid??null),[_,R]=React.useState(u?.link??""),[A,C]=React.useState(u?.text||""),[k,I]=React.useState(void 0),[P,D]=React.useState(!1),[O,N]=React.useState(!1),j=React.useRef(null),L=J=>{if(d?.(J),!J||!y)return;const re=getMarkAttrsAtSelection(y?.state,"customLink"),ne=normalizeUrl(re?.href??"");I(isValidUrl(ne)),D(isValidUrl(ne)),T(re?.uid??null),R(re?.href??""),C(re?.text||re?.href||"")},H=J=>{const re=J.target.value;if(re==="https:/")return;const ne=normalizeUrl(re);I(isValidUrl(ne)),R(ne)},B=J=>C(J.target.value),Y=()=>{const J=isValidUrl(_);I(J)},Z=(J,re,ne)=>{N(!0);let te;b?.resolveUrl(J)?.then(F=>te=F)?.catch(F=>{})?.finally(()=>{const F=convertLinkMetaToPreviewItem(te);N(!1),p(J,re,ne,F),d?.(!1)})},Q=J=>{if(J.key==="Enter"){if(J.preventDefault(),j.current===J.target||m)return Z(_,A,E??void 0);j?.current?.focus()}};return React.useEffect(()=>{if(!u?.link)return;const J=isValidUrl(u?.link);I(J),D(J),T(u?.uid??null),R(u?.link??""),C(u?.text||"")},[u]),jsxRuntime.jsxs(Dialog,{open:n,onOpenChange:L,children:[g?jsxRuntime.jsx(DialogTrigger,{asChild:!0,children:g}):null,jsxRuntime.jsxs(DialogContent,{className:"-translate-1/2",children:[jsxRuntime.jsx(DialogHeader,{children:jsxRuntime.jsx(DialogTitle,{children:S(P?"updateLinkKey":"insertLinkKey")})}),jsxRuntime.jsx(FieldSet,{children:jsxRuntime.jsxs(FieldGroup,{className:"gap-3",children:[jsxRuntime.jsxs(Field,{className:"gap-1.5",children:[jsxRuntime.jsxs(FieldLabel,{children:[S("linkInputLabelKey")," ",jsxRuntime.jsx("span",{className:"text-destructive",children:"*"})]}),jsxRuntime.jsxs(InputGroup,{children:[jsxRuntime.jsx(InputGroupInput,{value:_,onChange:H,onBlur:Y,onKeyDown:Q,placeholder:"https://x.com/shadcn"}),jsxRuntime.jsx(InputGroupAddon,{children:jsxRuntime.jsx(Link$1,{})})]}),!k&&k!==void 0&&jsxRuntime.jsx(FieldError,{errors:[{message:S("invalidLinkKey")}]})]}),!m&&jsxRuntime.jsxs(Field,{className:"gap-1.5",children:[jsxRuntime.jsx(FieldLabel,{children:S("linkTextInputLabelKey")}),jsxRuntime.jsxs(InputGroup,{children:[jsxRuntime.jsx(InputGroupInput,{ref:j,value:A,onChange:B,onKeyDown:Q,placeholder:S("linkTextInputLabelKey")}),jsxRuntime.jsx(InputGroupAddon,{children:jsxRuntime.jsx(TextAlignStart,{})})]})]})]})}),jsxRuntime.jsxs(DialogFooter,{children:[jsxRuntime.jsx(Button,{variant:"secondary",onClick:()=>d?.(!1),children:S("cancelKey")}),jsxRuntime.jsxs(Button,{disabled:!k||O,onClick:()=>Z(_,A,E??void 0),children:[O&&jsxRuntime.jsx(Spinner,{}),S(P?"updateKey":"insertKey")]})]})]})]})},linkDecorator=Object.freeze(Object.defineProperty({__proto__:null,LinkDecoratorModal},Symbol.toStringTag,{value:"Module"}));function createSlot(u){const n=createSlotClone(u),d=React__namespace.forwardRef((p,m)=>{const{children:g,...y}=p,b=React__namespace.Children.toArray(g),S=b.find(isSlottable);if(S){const E=S.props.children,T=b.map(_=>_===S?React__namespace.Children.count(E)>1?React__namespace.Children.only(null):React__namespace.isValidElement(E)?E.props.children:null:_);return jsxRuntime.jsx(n,{...y,ref:m,children:React__namespace.isValidElement(E)?React__namespace.cloneElement(E,void 0,T):null})}return jsxRuntime.jsx(n,{...y,ref:m,children:g})});return d.displayName=`${u}.Slot`,d}function createSlotClone(u){const n=React__namespace.forwardRef((d,p)=>{const{children:m,...g}=d;if(React__namespace.isValidElement(m)){const y=getElementRef(m),b=mergeProps(g,m.props);return m.type!==React__namespace.Fragment&&(b.ref=p?composeRefs(p,y):y),React__namespace.cloneElement(m,b)}return React__namespace.Children.count(m)>1?React__namespace.Children.only(null):null});return n.displayName=`${u}.SlotClone`,n}var SLOTTABLE_IDENTIFIER=Symbol("radix.slottable");function isSlottable(u){return React__namespace.isValidElement(u)&&typeof u.type=="function"&&"__radixId"in u.type&&u.type.__radixId===SLOTTABLE_IDENTIFIER}function mergeProps(u,n){const d={...n};for(const p in n){const m=u[p],g=n[p];/^on[A-Z]/.test(p)?m&&g?d[p]=(...b)=>{const S=g(...b);return m(...b),S}:m&&(d[p]=m):p==="style"?d[p]={...m,...g}:p==="className"&&(d[p]=[m,g].filter(Boolean).join(" "))}return{...u,...d}}function getElementRef(u){let n=Object.getOwnPropertyDescriptor(u.props,"ref")?.get,d=n&&"isReactWarning"in n&&n.isReactWarning;return d?u.ref:(n=Object.getOwnPropertyDescriptor(u,"ref")?.get,d=n&&"isReactWarning"in n&&n.isReactWarning,d?u.props.ref:u.props.ref||u.ref)}var POPOVER_NAME="Popover",[createPopoverContext]=createContextScope$2(POPOVER_NAME,[createPopperScope]),usePopperScope=createPopperScope(),[PopoverProvider,usePopoverContext]=createPopoverContext(POPOVER_NAME),Popover$1=u=>{const{__scopePopover:n,children:d,open:p,defaultOpen:m,onOpenChange:g,modal:y=!1}=u,b=usePopperScope(n),S=React__namespace.useRef(null),[E,T]=React__namespace.useState(!1),[_,R]=useControllableState({prop:p,defaultProp:m??!1,onChange:g,caller:POPOVER_NAME});return jsxRuntime.jsx(Root2$3,{...b,children:jsxRuntime.jsx(PopoverProvider,{scope:n,contentId:useId(),triggerRef:S,open:_,onOpenChange:R,onOpenToggle:React__namespace.useCallback(()=>R(A=>!A),[R]),hasCustomAnchor:E,onCustomAnchorAdd:React__namespace.useCallback(()=>T(!0),[]),onCustomAnchorRemove:React__namespace.useCallback(()=>T(!1),[]),modal:y,children:d})})};Popover$1.displayName=POPOVER_NAME;var ANCHOR_NAME="PopoverAnchor",PopoverAnchor=React__namespace.forwardRef((u,n)=>{const{__scopePopover:d,...p}=u,m=usePopoverContext(ANCHOR_NAME,d),g=usePopperScope(d),{onCustomAnchorAdd:y,onCustomAnchorRemove:b}=m;return React__namespace.useEffect(()=>(y(),()=>b()),[y,b]),jsxRuntime.jsx(Anchor,{...g,...p,ref:n})});PopoverAnchor.displayName=ANCHOR_NAME;var TRIGGER_NAME="PopoverTrigger",PopoverTrigger$1=React__namespace.forwardRef((u,n)=>{const{__scopePopover:d,...p}=u,m=usePopoverContext(TRIGGER_NAME,d),g=usePopperScope(d),y=useComposedRefs(n,m.triggerRef),b=jsxRuntime.jsx(Primitive$5.button,{type:"button","aria-haspopup":"dialog","aria-expanded":m.open,"aria-controls":m.contentId,"data-state":getState$1(m.open),...p,ref:y,onClick:composeEventHandlers(u.onClick,m.onOpenToggle)});return m.hasCustomAnchor?b:jsxRuntime.jsx(Anchor,{asChild:!0,...g,children:b})});PopoverTrigger$1.displayName=TRIGGER_NAME;var PORTAL_NAME="PopoverPortal",[PortalProvider,usePortalContext]=createPopoverContext(PORTAL_NAME,{forceMount:void 0}),PopoverPortal=u=>{const{__scopePopover:n,forceMount:d,children:p,container:m}=u,g=usePopoverContext(PORTAL_NAME,n);return jsxRuntime.jsx(PortalProvider,{scope:n,forceMount:d,children:jsxRuntime.jsx(Presence,{present:d||g.open,children:jsxRuntime.jsx(Portal$5,{asChild:!0,container:m,children:p})})})};PopoverPortal.displayName=PORTAL_NAME;var CONTENT_NAME="PopoverContent",PopoverContent$1=React__namespace.forwardRef((u,n)=>{const d=usePortalContext(CONTENT_NAME,u.__scopePopover),{forceMount:p=d.forceMount,...m}=u,g=usePopoverContext(CONTENT_NAME,u.__scopePopover);return jsxRuntime.jsx(Presence,{present:p||g.open,children:g.modal?jsxRuntime.jsx(PopoverContentModal,{...m,ref:n}):jsxRuntime.jsx(PopoverContentNonModal,{...m,ref:n})})});PopoverContent$1.displayName=CONTENT_NAME;var Slot=createSlot("PopoverContent.RemoveScroll"),PopoverContentModal=React__namespace.forwardRef((u,n)=>{const d=usePopoverContext(CONTENT_NAME,u.__scopePopover),p=React__namespace.useRef(null),m=useComposedRefs(n,p),g=React__namespace.useRef(!1);return React__namespace.useEffect(()=>{const y=p.current;if(y)return hideOthers(y)},[]),jsxRuntime.jsx(ReactRemoveScroll,{as:Slot,allowPinchZoom:!0,children:jsxRuntime.jsx(PopoverContentImpl,{...u,ref:m,trapFocus:d.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:composeEventHandlers(u.onCloseAutoFocus,y=>{y.preventDefault(),g.current||d.triggerRef.current?.focus()}),onPointerDownOutside:composeEventHandlers(u.onPointerDownOutside,y=>{const b=y.detail.originalEvent,S=b.button===0&&b.ctrlKey===!0,E=b.button===2||S;g.current=E},{checkForDefaultPrevented:!1}),onFocusOutside:composeEventHandlers(u.onFocusOutside,y=>y.preventDefault(),{checkForDefaultPrevented:!1})})})}),PopoverContentNonModal=React__namespace.forwardRef((u,n)=>{const d=usePopoverContext(CONTENT_NAME,u.__scopePopover),p=React__namespace.useRef(!1),m=React__namespace.useRef(!1);return jsxRuntime.jsx(PopoverContentImpl,{...u,ref:n,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:g=>{u.onCloseAutoFocus?.(g),g.defaultPrevented||(p.current||d.triggerRef.current?.focus(),g.preventDefault()),p.current=!1,m.current=!1},onInteractOutside:g=>{u.onInteractOutside?.(g),g.defaultPrevented||(p.current=!0,g.detail.originalEvent.type==="pointerdown"&&(m.current=!0));const y=g.target;d.triggerRef.current?.contains(y)&&g.preventDefault(),g.detail.originalEvent.type==="focusin"&&m.current&&g.preventDefault()}})}),PopoverContentImpl=React__namespace.forwardRef((u,n)=>{const{__scopePopover:d,trapFocus:p,onOpenAutoFocus:m,onCloseAutoFocus:g,disableOutsidePointerEvents:y,onEscapeKeyDown:b,onPointerDownOutside:S,onFocusOutside:E,onInteractOutside:T,..._}=u,R=usePopoverContext(CONTENT_NAME,d),A=usePopperScope(d);return useFocusGuards(),jsxRuntime.jsx(FocusScope,{asChild:!0,loop:!0,trapped:p,onMountAutoFocus:m,onUnmountAutoFocus:g,children:jsxRuntime.jsx(DismissableLayer,{asChild:!0,disableOutsidePointerEvents:y,onInteractOutside:T,onEscapeKeyDown:b,onPointerDownOutside:S,onFocusOutside:E,onDismiss:()=>R.onOpenChange(!1),children:jsxRuntime.jsx(Content$1,{"data-state":getState$1(R.open),role:"dialog",id:R.contentId,...A,..._,ref:n,style:{..._.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),CLOSE_NAME="PopoverClose",PopoverClose=React__namespace.forwardRef((u,n)=>{const{__scopePopover:d,...p}=u,m=usePopoverContext(CLOSE_NAME,d);return jsxRuntime.jsx(Primitive$5.button,{type:"button",...p,ref:n,onClick:composeEventHandlers(u.onClick,()=>m.onOpenChange(!1))})});PopoverClose.displayName=CLOSE_NAME;var ARROW_NAME="PopoverArrow",PopoverArrow=React__namespace.forwardRef((u,n)=>{const{__scopePopover:d,...p}=u,m=usePopperScope(d);return jsxRuntime.jsx(Arrow,{...m,...p,ref:n})});PopoverArrow.displayName=ARROW_NAME;function getState$1(u){return u?"open":"closed"}var Root2=Popover$1,Trigger=PopoverTrigger$1,Portal=PopoverPortal,Content2=PopoverContent$1;function Popover({...u}){return jsxRuntime.jsx(Root2,{"data-slot":"popover",...u})}function PopoverTrigger({...u}){return jsxRuntime.jsx(Trigger,{"data-slot":"popover-trigger",...u})}function PopoverContent({className:u,align:n="center",sideOffset:d=4,children:p,...m}){return jsxRuntime.jsx(Portal,{children:jsxRuntime.jsx("div",{"data-theme":"select-post-builder",children:jsxRuntime.jsx(Content2,{"data-slot":"popover-content",align:n,sideOffset:d,className:cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden",u),...m,children:p})})})}const LinkMarkView=({mark:u,editor:n})=>{const[d,p]=React.useState(!1),[m,g]=React.useState(!1),y=S=>{g(S),S||p(!1)},b=(S,E,T,_)=>{if(!n.view)return;const R=u?.attrs?.isLinkMode?S:E||S;if(T){n.commands.updateLink(T,{href:S,text:R,previewPayload:_});return}};return jsxRuntime.jsxs(Popover,{open:d,onOpenChange:p,children:[jsxRuntime.jsx(PopoverTrigger,{className:"text-left",children:jsxRuntime.jsx(MarkViewContent,{className:"text-blue-600 underline hover:text-blue-700 cursor-pointer focus-within:outline-0"})}),jsxRuntime.jsxs(PopoverContent,{onOpenAutoFocus:S=>S.preventDefault(),side:"top",align:"center",className:"flex gap-2 items-center p-1 max-w-fit w-fit",children:[jsxRuntime.jsx(ToolbarButton,{size:"icon",tooltip:"visitLinkKey",onClick:()=>window.open(u.attrs.href,"_blank","noopener,noreferrer"),children:jsxRuntime.jsx(ExternalLink,{})}),jsxRuntime.jsx(LinkDecoratorModal,{open:m,onOpenChange:y,defaultValues:{link:u?.attrs?.href??"",text:u?.attrs?.text??"",uid:u?.attrs?.uid??""},onInsertLink:b,hideTextInput:u?.attrs?.isLinkMode,children:jsxRuntime.jsx(ToolbarButton,{size:"icon",tooltip:"editLinkKey",children:jsxRuntime.jsx(SquarePen,{})})}),jsxRuntime.jsx(ToolbarButton,{size:"icon",tooltip:"unsetLinkKey",onClick:()=>{p(!1),n.commands.unsetLink(),u?.attrs?.uid&&n.commands.deleteLinkPreviewByUid(u?.attrs?.uid)},className:cn(u?.attrs?.isLinkMode?"hidden":""),children:jsxRuntime.jsx(Unlink,{})})]})]})},IDLE_ENTRY=Object.freeze({status:"idle",metadata:null});class UnfurlStore{entries=new Map;inflight=new Map;listeners=new Map;get(n){return this.entries.get(n)??IDLE_ENTRY}getResolved(n){const d=this.entries.get(n);return d?.status==="resolved"?d.metadata:null}seed(n,d){const p=this.get(n).status;p==="resolved"||p==="loading"||this.setEntry(n,{status:"resolved",metadata:d})}ensure(n,d){const p=this.getResolved(n);if(p!==null)return Promise.resolve(p);const m=this.inflight.get(n);if(m)return m;this.setEntry(n,{status:"loading",metadata:null});const g=d(n).then(y=>(this.inflight.delete(n),y?(this.setEntry(n,{status:"resolved",metadata:y}),y):(this.setEntry(n,{status:"failed",metadata:null}),null))).catch(y=>(this.inflight.delete(n),this.setEntry(n,{status:"failed",metadata:null,error:y}),null));return this.inflight.set(n,g),g}subscribe(n,d){let p=this.listeners.get(n);return p||(p=new Set,this.listeners.set(n,p)),p.add(d),()=>{p?.delete(d),p?.size===0&&this.listeners.delete(n)}}clear(){this.entries.clear(),this.inflight.clear(),this.listeners.clear()}setEntry(n,d){this.entries.set(n,d),this.listeners.get(n)?.forEach(p=>p(d))}}const unfurlStore=new UnfurlStore,previewItemToMetadata=u=>{if(!u?.linkUrl)return null;const n=u.linkImage?.url??"";return{url:u.linkUrl,title:u.linkTitle??"",description:u.linkDesc??"",image:{filename:"",type:"",placeholder:"",thumbnail:"",width:u.linkImage?.width??0,height:u.linkImage?.height??0,url:n,high_resolution:n}}},hostnameOf=u=>{try{return new URL(u).hostname}catch{return null}},seedUnfurlStoreFromDoc=(u,n)=>{let d=0;const p=m=>{if(m.type==="text"&&m.marks)for(const g of m.marks){if(g.type!=="customLink")continue;const y=g.attrs?.href,b=g.attrs?.previewPayload;if(!y||!b)continue;const S=b.linkUrl?hostnameOf(normalizeUrl(b.linkUrl)):null,E=hostnameOf(normalizeUrl(y));if(S&&E&&S!==E)continue;const T=previewItemToMetadata(b);T&&(n.seed(normalizeUrl(y),T),d+=1)}m.content?.forEach(p)};return p(u),d},LINK_AUTO_RESOLVE_REHYDRATE_META="linkAutoResolve:rehydrate";function isSameMarkType(u,n){return!u||!n?!1:u===n||u.name===n.name}function isValidUrlFormat(u){return isValidUrl(normalizeUrl(u.trim()))}function doesPreviewExist(u,n){if(!u||!n)return!1;try{let d=!1;return u.state.doc.descendants(p=>{if(p&&p.type&&p.type.name==="linkPreview"&&p.attrs?.uid===n)return d=!0,!1}),d}catch{return!1}}function doesLinkExist(u,n){if(!u||!n)return!1;try{let d=!1;return u.state.doc.descendants(p=>{if(d)return!1;if(p?.isText&&p.marks?.length){for(const m of p.marks)if(m.type?.name==="customLink"&&m.attrs?.uid===n)return d=!0,!1}}),d}catch{return!1}}function findExistingPreview(u){if(!u)return null;try{let n=null;return u.state.doc.descendants((d,p)=>{if(d&&d.type&&d.type.name==="linkPreview")return n={node:d,pos:p},!1}),n}catch{return null}}function removePreviewByUid(u,n){if(!(!u||!n))try{let d=null,p=0;if(u.state.doc.descendants((m,g)=>{if(m&&m.type&&m.type.name==="linkPreview"&&m.attrs?.uid===n)return d=g,p=m.nodeSize,!1}),d!==null&&p>0){const m=u.state.tr;m&&(m.delete(d,Number(d)+p),u.view.dispatch(m))}}catch{}}function extractBestImage(u){return u?.image?.high_resolution??u?.image?.url??u?.image?.thumbnail??u?.image?.placeholder??null}function trackUnfurlFailure(u){if(!u?.view?.dom)return;const n=u.view.dom.getAttribute("data-session-id"),d=u.view.dom.getAttribute("data-editor-type");n&&getAnalyticsStore().trackLinkUnfurlFailed(n,{editorType:d})}function getChangedRange(u,n){const d=u.doc.content.findDiffStart(n.doc.content);if(d==null)return null;const p=u.doc.content.findDiffEnd(n.doc.content),m=u.doc.content.size,g=n.doc.content.size;return p?{fromOld:Math.max(0,Math.min(d,p.a)),toOld:Math.max(d,Math.min(p.a,m)),fromNew:Math.max(0,Math.min(d,p.b)),toNew:Math.max(d,Math.min(p.b,g))}:{fromOld:Math.max(0,d),toOld:m,fromNew:Math.max(0,d),toNew:g}}function collectLinkMarksInRange(u,n,d,p){const m=new Map;return d>=p||u.doc.nodesBetween(d,p,(g,y)=>{!g.isText||!g.marks?.length||g.marks.forEach(b=>{if(isSameMarkType(b.type,n)&&b.attrs?.href){const S=b.attrs.uid;S&&!m.has(S)&&m.set(S,{uid:S,href:b.attrs.href,pos:y,nodeSize:g.nodeSize})}})}),m}function syncLinkHrefWithText(u,n,d,p,m,g,y){if(!u||!n||!d||!m)return null;let b=null,S=!1;try{u.doc.nodesBetween(g,y,(E,T)=>{!E||!E.isText||!E.marks?.length||E.marks.forEach(_=>{if(!(!_||!_.type||!_.attrs)&&isSameMarkType(_.type,n)&&_.attrs?.uid){const R=E.text||"",A=_.attrs.href||"";if(R!==A){const C=isValidUrlFormat(R);if(b||(b=u.tr),!b)return;if(C){const k=n.create({..._.attrs,href:normalizeUrl(R)});if(!k)return;b=b.removeMark(T,T+E.nodeSize,n),b=b.addMark(T,T+E.nodeSize,k),S=!0,m.processedLinks.delete(_.attrs.uid),p&&queueMicrotask(()=>{try{findExistingPreview(d)&&_.attrs?.uid}catch{}})}else b=b.removeMark(T,T+E.nodeSize,n),S=!0,queueMicrotask(()=>{try{_.attrs?.uid&&removePreviewByUid(d,_.attrs.uid)}catch{}}),_.attrs?.uid&&(m.processedLinks.delete(_.attrs.uid),m.resolvingLinks.delete(_.attrs.uid))}}})})}catch{return null}return S?b:null}function assignUidsToLinks(u,n,d,p,m,g=!0){const y=new Map;let b=null,S=!1;return d>=p?{tr:null,newUids:y}:(u.doc.nodesBetween(d,p,(E,T)=>{!E.isText||!E.marks?.length||E.marks.forEach(_=>{if(isSameMarkType(_.type,n)&&_.attrs?.href&&!_.attrs.uid){const R=v4();if(g&&m){const C=getAnalyticsStore(),k=m?.view?.dom?.getAttribute("data-session-id"),I=m?.view?.dom?.getAttribute("data-editor-type");k&&C.trackLinkAdded(k,{editorType:I})}const A=n.create({..._.attrs,uid:R});if(b||(b=u.tr),!b)return;b=b.removeMark(T,T+E.nodeSize,n),b=b.addMark(T,T+E.nodeSize,A),S=!0,y.set(R,{uid:R,href:_.attrs.href,pos:T,nodeSize:E.nodeSize})}})}),{tr:S?b:null,newUids:y})}function computeLinksToResolve(u,n,d,p,m){const g=[];return u.forEach((y,b)=>{n.has(b)||(p.processedLinks.delete(b),p.resolvingLinks.delete(b))}),d.forEach(y=>{!p.processedLinks.has(y.uid)&&!p.resolvingLinks.has(y.uid)&&g.push(y)}),n.forEach((y,b)=>{if(!(p.processedLinks.has(b)||p.resolvingLinks.has(b)||d.has(b))){if(m(b)){p.processedLinks.add(b);return}u.has(b)||g.push(y)}}),g}function createInitialPluginState(){return{resolvingLinks:new Set,processedLinks:new Set}}function limitLinksForSinglePreviewMode(u,n,d){if(!d||u.length<=1)return u;const p=u.reduce((m,g)=>g.pos>m.pos?g:m);return u.forEach(m=>{m.uid!==p.uid&&n.processedLinks.add(m.uid)}),[p]}function queueRehydratedLinksResolution(u,n,d,p){const m=u.schema.marks.customLink;if(!m)return;const g=collectLinkMarksInRange(u,m,0,u.doc.content.size),y=limitLinksForSinglePreviewMode(computeLinksToResolve(new Map,g,new Map,d,b=>doesPreviewExist(n.editor,b)),d,p);y.length!==0&&queueMicrotask(()=>{y.forEach(b=>{if(!(d.processedLinks.has(b.uid)||d.resolvingLinks.has(b.uid))){if(doesPreviewExist(n.editor,b.uid)){d.processedLinks.add(b.uid);return}resolveLinkAndHandlePreview(b,n,p,d)}})})}function resolveLinkAndHandlePreview(u,n,d,p){const{api:m,editor:g}=n,y=n.store??unfurlStore,b=findByType(g?.getJSON(),"mediaGroup");if(!m||d&&b.length>=1)return;const S=normalizeUrl(u.href),E=A=>({uid:u.uid,href:A.url,title:A.title,image:extractBestImage(A),description:A.description,domain:new URL(A.url).hostname,loading:!1}),T=A=>{if(!g||g.isDestroyed||!doesLinkExist(g,u.uid))return;const C=E(A);if(d){const k=findExistingPreview(g);if(k){const{pos:I}=k,P=g.state.tr;P.setNodeMarkup(I,void 0,C),g.view.dispatch(P)}else g.commands.setLinkPreview(C);g.commands.updateLinkByUid(u.uid,{previewPayload:convertLinkMetaToPreviewItem(A)})}else g.chain().updateLinkByUid(u.uid,{previewPayload:convertLinkMetaToPreviewItem(A)}).updateLinkPreviewByUid(u.uid,C).run()},_=y.getResolved(S);if(_){if(p.processedLinks.add(u.uid),!g||g.isDestroyed||!doesLinkExist(g,u.uid))return;d?T(_):(g.commands.insertLinkPreviewAfterLink(u.uid,E(_)),g.commands.updateLinkByUid(u.uid,{previewPayload:convertLinkMetaToPreviewItem(_)}));return}p.resolvingLinks.add(u.uid);const R={uid:u.uid,href:u.href,loading:!0,title:null,image:null,description:null,domain:null};d?findExistingPreview(g)||g.commands.setLinkPreview(R):g.commands.insertLinkPreviewAfterLink(u.uid,R),y.ensure(S,A=>m.resolveUrl(A)).then(A=>{if(p.resolvingLinks.delete(u.uid),!g||g.isDestroyed)return;if(A){p.processedLinks.add(u.uid),T(A);return}g.commands.deleteLinkPreviewByUid(u.uid),y.get(S).error!==void 0?trackUnfurlFailure(g):p.processedLinks.add(u.uid)}).catch(()=>{})}function removeOrphanPreviews(u){const n=new Set;u.doc.descendants(m=>{m?.isText&&m.marks?.length&&m.marks.forEach(g=>{g.type?.name==="customLink"&&g.attrs?.uid&&n.add(g.attrs.uid)})});const d=[];if(u.doc.descendants((m,g)=>{if(m?.type?.name==="linkPreview"){const y=m.attrs?.uid;return(!y||!n.has(y))&&d.push({pos:g,size:m.nodeSize}),!1}}),d.length===0)return null;let p=u.tr;return d.sort((m,g)=>g.pos-m.pos).forEach(({pos:m,size:g})=>{p=p.delete(m,m+g)}),p}function createLinkAutoResolvePlugin(u,n=!1){const d=new PluginKey("linkAutoResolve");return new Plugin({key:d,state:{init(){return createInitialPluginState()},apply(p,m){return m}},appendTransaction:(p,m,g)=>{const y=p.some(j=>typeof j.getMeta=="function"&&j.getMeta(LINK_AUTO_RESOLVE_REHYDRATE_META)),b=g.schema.marks.customLink;if(!b)return null;const S=d.getState(g);if(!S)return null;if(y){try{seedUnfurlStoreFromDoc(g.doc.toJSON(),u.store??unfurlStore)}catch{}queueRehydratedLinksResolution(g,u,S,n);const{tr:j}=assignUidsToLinks(g,b,0,g.doc.content.size,u.editor,!1);return j??null}if(!p.some(j=>j.docChanged))return null;const E=getChangedRange(m,g);if(!E)return null;const T=d.getState(g);if(!T)return null;const _=n?syncLinkHrefWithText(g,b,u.editor,n,T,0,g.doc.content.size):null,R=collectLinkMarksInRange(m,b,E.fromOld,E.toOld),A=collectLinkMarksInRange(g,b,E.fromNew,E.toNew),C=u?.editor,{tr:k,newUids:I}=assignUidsToLinks(g,b,E.fromNew,E.toNew,C),P=computeLinksToResolve(R,A,I,T,j=>doesPreviewExist(u.editor,j)),D=limitLinksForSinglePreviewMode(P,T,n);D.length>0?queueMicrotask(()=>{D.forEach(j=>{resolveLinkAndHandlePreview(j,u,n,T)})}):P.length;let O=null;if(_&&k)try{k.steps.forEach((j,L)=>{if(j&&_){_.step(j);const H=k.mapping.maps[L];H&&_.mapping.appendMap(H)}}),O=_}catch{O=_}else O=_??k??null;const N=removeOrphanPreviews(g);if(N){if(!O)return N;try{N.steps.forEach((j,L)=>{if(j&&O){O.step(j);const H=N.mapping.maps[L];H&&O.mapping.appendMap(H)}})}catch{}}return O}})}const hasMediaInEditor=(u,n)=>{if(n!==EditorTypes.Media)return!1;const d=u?.getJSON(),p=d?findByType(d,"media"):[],m=d?findByType(d,"mediaGroup"):[];return p.length>0||m.length>0},CustomLink=index_default$7.extend({name:"customLink",priority:990,addOptions(){return{...this?.parent?.(),autolink:!0,api:void 0}},addAttributes(){return{...this?.parent?.(),text:{default:null},uid:{default:null,parseHTML:()=>null,renderHTML:()=>({})},isLinkMode:{default:this?.options?.linkMode??!1,parseHTML:()=>null,renderHTML:()=>({})},previewPayload:{default:null,parseHTML:()=>null,renderHTML:()=>({})}}},renderHTML({HTMLAttributes:u}){return this.options.isAllowedUri(u.href,{defaultValidate:n=>!!isAllowedUri(n,this.options.protocols),protocols:this.options.protocols,defaultProtocol:this.options.defaultProtocol})?["a",mergeAttributes(this.options.HTMLAttributes,u),0]:["a",mergeAttributes(this.options.HTMLAttributes,{...u,href:""}),0]},addCommands(){return{...this?.parent?.(),insertLink:u=>({chain:n,editor:d})=>{const p=getAnalyticsStore(),{href:m,text:g}=u,y=getExistingLinkPreviewUid(d),b=this.options.linkMode&&y?y:v4(),S=d?.view?.dom?.getAttribute("data-editor-type"),E=hasMediaInEditor(d,S),T=n().insertContent([{type:"text",text:g,marks:[{type:"customLink",attrs:{uid:b,href:m,text:g,previewPayload:null}}]},this.options.linkMode?{type:"text",text:" "}:null].filter(A=>A!==null));E||T.insertLinkPreviewForMode({uid:b,linkMode:!!this.options.linkMode,attributes:{uid:b,loading:!0,href:""}}),T.run();const _=d?.view?.dom?.getAttribute("data-session-id")??"",R=this.options.api;return R&&unfurlStore.ensure(normalizeUrl(m),A=>R.resolveUrl(A)).then(A=>{if(p?.trackLinkAdded(_,{editorType:S}),!d||d.isDestroyed)return;if(!A){unfurlStore.get(normalizeUrl(m)).error!==void 0&&p?.trackLinkUnfurlFailed(_,{editorType:S}),d.commands.deleteLinkPreviewByUid(b);return}const C=convertLinkMetaToPreviewItem(A),k=d?.view?.dom?.getAttribute("data-editor-type"),I=hasMediaInEditor(d,k),P=d?.chain()?.updateLinkByUid(b,{href:m,text:g,previewPayload:C});I||P?.updateLinkPreviewByUid(b,{loading:!1,href:A.url,title:A.title,image:A.image?.url??null,description:A.description,domain:new URL(A.url).hostname}),P?.run()}).catch(()=>{}),!0},updateLink:(u,n)=>({state:d,dispatch:p,editor:m})=>{if(!p)return!1;const{doc:g,schema:y,tr:b}=d;let S=b,E=!1;const T=[];return g.descendants((_,R)=>{_.isText&&_.marks?.length&&_.marks.forEach(A=>{A.type.name==="customLink"&&A.attrs.uid===u&&(T.push({from:R,to:R+_.nodeSize,mark:A,oldText:_.text||""}),E=!0)})}),E&&(T.sort((_,R)=>R.from-_.from),T.forEach(({from:_,to:R,mark:A,oldText:C})=>{const k={...A.attrs,href:n.href??A.attrs.href,text:n.text||n.href||A.attrs.text,previewPayload:n?.previewPayload??A?.attrs?.previewPayload},I=n.text??n.href??C,P=y.marks.customLink;if(P){S=S.delete(_,R);const D=y.text(I,[P.create(k)]);S=S.insert(_,D)}}),p(S),n.href&&queueMicrotask(()=>{const _=this.options.api;if(!_)return;const R=normalizeUrl(n.href);unfurlStore.ensure(R,A=>_.resolveUrl(A)).then(A=>{if(!m||m.isDestroyed)return;if(!A){if(unfurlStore.get(R).error!==void 0){const N=m?.view?.dom?.getAttribute("data-session-id")??"",j=m?.view?.dom?.getAttribute("data-editor-type");getAnalyticsStore()?.trackLinkUnfurlFailed(N,{editorType:j})}m.commands.deleteLinkPreviewByUid(u);return}const C=convertLinkMetaToPreviewItem(A);let k=!1;m.state.doc.descendants(O=>{if(O.type.name==="linkPreview"&&O.attrs.uid===u)return k=!0,!1}),m.commands.updateLinkByUid(u,{...n,previewPayload:C});const I={uid:u,href:A.url,title:A.title,image:A.image?.url??null,description:A.description,domain:new URL(A.url).hostname,loading:!1},P=m?.view?.dom?.getAttribute("data-editor-type"),D=hasMediaInEditor(m,P);k&&!D?m.commands.updateLinkPreviewByUid(u,I):!k&&!D&&m.commands.setLinkPreview(I)}).catch(()=>{})})),E},updateLinkByUid:createUpdateMarkByUidCommand("customLink"),deleteLinkByUid:createDeleteMarkByUidCommand("customLink"),rehydrateLinkPreviews:()=>({tr:u,dispatch:n})=>(n&&n(u.setMeta(LINK_AUTO_RESOLVE_REHYDRATE_META,!0)),!0)}},addMarkView(){return ReactMarkViewRenderer(LinkMarkView)},addKeyboardShortcuts(){return{"Mod-a":({editor:u})=>(u.view.focus(),u.commands.selectAll(),!0),Backspace:({editor:u})=>{const{empty:n}=u.state.selection;if(!n||!(u.state.storedMarks||u.state.selection.$from.marks()).find(S=>S.type.name==="customLink"))return!1;const m=u.state.selection.$from,g=m.nodeBefore,y=m.nodeAfter;return g&&g.marks.some(S=>S.type.name==="customLink")||y&&y.marks.some(S=>S.type.name==="customLink")||u.commands.unsetMark("customLink"),!1}}},addProseMirrorPlugins(){const u=this.parent?.()??[],n=createLinkAutoResolvePlugin({api:this?.options?.api,editor:this.editor},this.options?.linkMode);return[...u,n]}}),getExistingLinkPreviewUid=u=>{const{doc:n}=u.state;let d=null;return n.descendants(p=>{if(p.type.name==="linkPreview")return d=p.attrs.uid,!1}),d},isSpotifyTrack=u=>u.includes("spotify.com/embed/track"),IframeView=({node:u,selected:n,editor:d,updateAttributes:p,deleteNode:m})=>{const[g,y]=React.useState(u.attrs.previewPayload),{core:b}=useApi(),{src:S}=u.attrs,E=()=>{m(),d.chain().focus()};return React.useEffect(()=>{!g&&u?.attrs?.src&&b.resolveUrl(normalizeUrl(u?.attrs?.src)).then(T=>{const _=convertLinkMetaToPreviewItem(T);y(_),p({previewPayload:_})}).catch(T=>{}).finally(()=>{})},[b,u.attrs.src,g,p]),jsxRuntime.jsxs(NodeViewWrapper,{"data-drag-handle":!0,className:cn("relative p-4 bg-accent",n&&"border-2 border-blue-500"),children:[jsxRuntime.jsx("iframe",{src:S,allowFullScreen:!0,className:cn("w-full rounded-md",isSpotifyTrack(S)?"h-38":"h-96")}),jsxRuntime.jsx(Button,{onClick:E,size:"icon",variant:"ghost",className:"absolute right-2 top-2 bg-background border hover:shadow-lg size-auto p-1.5 rounded-full",children:jsxRuntime.jsx(X,{})})]},S)};const{entries,setPrototypeOf,isFrozen,getPrototypeOf,getOwnPropertyDescriptor}=Object;let{freeze:freeze$1,seal,create:create$6}=Object,{apply,construct}=typeof Reflect<"u"&&Reflect;freeze$1||(freeze$1=function(n){return n});seal||(seal=function(n){return n});apply||(apply=function(n,d){for(var p=arguments.length,m=new Array(p>2?p-2:0),g=2;g<p;g++)m[g-2]=arguments[g];return n.apply(d,m)});construct||(construct=function(n){for(var d=arguments.length,p=new Array(d>1?d-1:0),m=1;m<d;m++)p[m-1]=arguments[m];return new n(...p)});const arrayForEach=unapply(Array.prototype.forEach),arrayLastIndexOf=unapply(Array.prototype.lastIndexOf),arrayPop=unapply(Array.prototype.pop),arrayPush=unapply(Array.prototype.push),arraySplice=unapply(Array.prototype.splice),stringToLowerCase=unapply(String.prototype.toLowerCase),stringToString=unapply(String.prototype.toString),stringMatch=unapply(String.prototype.match),stringReplace=unapply(String.prototype.replace),stringIndexOf=unapply(String.prototype.indexOf),stringTrim=unapply(String.prototype.trim),objectHasOwnProperty=unapply(Object.prototype.hasOwnProperty),regExpTest=unapply(RegExp.prototype.test),typeErrorCreate=unconstruct(TypeError);function unapply(u){return function(n){n instanceof RegExp&&(n.lastIndex=0);for(var d=arguments.length,p=new Array(d>1?d-1:0),m=1;m<d;m++)p[m-1]=arguments[m];return apply(u,n,p)}}function unconstruct(u){return function(){for(var n=arguments.length,d=new Array(n),p=0;p<n;p++)d[p]=arguments[p];return construct(u,d)}}function addToSet(u,n){let d=arguments.length>2&&arguments[2]!==void 0?arguments[2]:stringToLowerCase;setPrototypeOf&&setPrototypeOf(u,null);let p=n.length;for(;p--;){let m=n[p];if(typeof m=="string"){const g=d(m);g!==m&&(isFrozen(n)||(n[p]=g),m=g)}u[m]=!0}return u}function cleanArray(u){for(let n=0;n<u.length;n++)objectHasOwnProperty(u,n)||(u[n]=null);return u}function clone(u){const n=create$6(null);for(const[d,p]of entries(u))objectHasOwnProperty(u,d)&&(Array.isArray(p)?n[d]=cleanArray(p):p&&typeof p=="object"&&p.constructor===Object?n[d]=clone(p):n[d]=p);return n}function lookupGetter(u,n){for(;u!==null;){const p=getOwnPropertyDescriptor(u,n);if(p){if(p.get)return unapply(p.get);if(typeof p.value=="function")return unapply(p.value)}u=getPrototypeOf(u)}function d(){return null}return d}const html$1=freeze$1(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),svg$1=freeze$1(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),svgFilters=freeze$1(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),svgDisallowed=freeze$1(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),mathMl$1=freeze$1(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),mathMlDisallowed=freeze$1(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),text=freeze$1(["#text"]),html=freeze$1(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),svg=freeze$1(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),mathMl=freeze$1(["accent","accentunder","align","bevelled","close","columnsalign","columnlines","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lspace","lquote","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),xml=freeze$1(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),MUSTACHE_EXPR=seal(/\{\{[\w\W]*|[\w\W]*\}\}/gm),ERB_EXPR=seal(/<%[\w\W]*|[\w\W]*%>/gm),TMPLIT_EXPR=seal(/\$\{[\w\W]*/gm),DATA_ATTR=seal(/^data-[\-\w.\u00B7-\uFFFF]+$/),ARIA_ATTR=seal(/^aria-[\-\w]+$/),IS_ALLOWED_URI=seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),IS_SCRIPT_OR_DATA=seal(/^(?:\w+script|data):/i),ATTR_WHITESPACE=seal(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),DOCTYPE_NAME=seal(/^html$/i),CUSTOM_ELEMENT=seal(/^[a-z][.\w]*(-[.\w]+)+$/i);var EXPRESSIONS=Object.freeze({__proto__:null,ARIA_ATTR,ATTR_WHITESPACE,CUSTOM_ELEMENT,DATA_ATTR,DOCTYPE_NAME,ERB_EXPR,IS_ALLOWED_URI,IS_SCRIPT_OR_DATA,MUSTACHE_EXPR,TMPLIT_EXPR});const NODE_TYPE={element:1,text:3,progressingInstruction:7,comment:8,document:9},getGlobal=function u(){return typeof window>"u"?null:window},_createTrustedTypesPolicy=function u(n,d){if(typeof n!="object"||typeof n.createPolicy!="function")return null;let p=null;const m="data-tt-policy-suffix";d&&d.hasAttribute(m)&&(p=d.getAttribute(m));const g="dompurify"+(p?"#"+p:"");try{return n.createPolicy(g,{createHTML(y){return y},createScriptURL(y){return y}})}catch{return null}},_createHooksMap=function u(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function createDOMPurify(){let u=arguments.length>0&&arguments[0]!==void 0?arguments[0]:getGlobal();const n=ke=>createDOMPurify(ke);if(n.version="3.3.1",n.removed=[],!u||!u.document||u.document.nodeType!==NODE_TYPE.document||!u.Element)return n.isSupported=!1,n;let{document:d}=u;const p=d,m=p.currentScript,{DocumentFragment:g,HTMLTemplateElement:y,Node:b,Element:S,NodeFilter:E,NamedNodeMap:T=u.NamedNodeMap||u.MozNamedAttrMap,HTMLFormElement:_,DOMParser:R,trustedTypes:A}=u,C=S.prototype,k=lookupGetter(C,"cloneNode"),I=lookupGetter(C,"remove"),P=lookupGetter(C,"nextSibling"),D=lookupGetter(C,"childNodes"),O=lookupGetter(C,"parentNode");if(typeof y=="function"){const ke=d.createElement("template");ke.content&&ke.content.ownerDocument&&(d=ke.content.ownerDocument)}let N,j="";const{implementation:L,createNodeIterator:H,createDocumentFragment:B,getElementsByTagName:Y}=d,{importNode:Z}=p;let Q=_createHooksMap();n.isSupported=typeof entries=="function"&&typeof O=="function"&&L&&L.createHTMLDocument!==void 0;const{MUSTACHE_EXPR:J,ERB_EXPR:re,TMPLIT_EXPR:ne,DATA_ATTR:te,ARIA_ATTR:F,IS_SCRIPT_OR_DATA:q,ATTR_WHITESPACE:V,CUSTOM_ELEMENT:W}=EXPRESSIONS;let{IS_ALLOWED_URI:ee}=EXPRESSIONS,se=null;const ae=addToSet({},[...html$1,...svg$1,...svgFilters,...mathMl$1,...text]);let le=null;const ce=addToSet({},[...html,...svg,...mathMl,...xml]);let oe=Object.seal(create$6(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),de=null,fe=null;const me=Object.seal(create$6(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let he=!0,ge=!0,ye=!1,Se=!0,Te=!1,ve=!0,we=!1,je=!1,Ae=!1,Me=!1,Ie=!1,Be=!1,Ne=!0,Le=!1;const De="user-content-";let xe=!0,Oe=!1,Ce={},He=null;const Ue=addToSet({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let Ye=null;const Ve=addToSet({},["audio","video","img","source","image","track"]);let Ge=null;const Qe=addToSet({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),rt="http://www.w3.org/1998/Math/MathML",pe="http://www.w3.org/2000/svg",Ee="http://www.w3.org/1999/xhtml";let _e=Ee,ze=!1,Fe=null;const qe=addToSet({},[rt,pe,Ee],stringToString);let Xe=addToSet({},["mi","mo","mn","ms","mtext"]),ct=addToSet({},["annotation-xml"]);const ot=addToSet({},["title","style","font","a","script"]);let Je=null;const Pe=["application/xhtml+xml","text/html"],We="text/html";let $e=null,Ke=null;const it=d.createElement("form"),Ze=function(ue){return ue instanceof RegExp||ue instanceof Function},at=function(){let ue=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(Ke&&Ke===ue)){if((!ue||typeof ue!="object")&&(ue={}),ue=clone(ue),Je=Pe.indexOf(ue.PARSER_MEDIA_TYPE)===-1?We:ue.PARSER_MEDIA_TYPE,$e=Je==="application/xhtml+xml"?stringToString:stringToLowerCase,se=objectHasOwnProperty(ue,"ALLOWED_TAGS")?addToSet({},ue.ALLOWED_TAGS,$e):ae,le=objectHasOwnProperty(ue,"ALLOWED_ATTR")?addToSet({},ue.ALLOWED_ATTR,$e):ce,Fe=objectHasOwnProperty(ue,"ALLOWED_NAMESPACES")?addToSet({},ue.ALLOWED_NAMESPACES,stringToString):qe,Ge=objectHasOwnProperty(ue,"ADD_URI_SAFE_ATTR")?addToSet(clone(Qe),ue.ADD_URI_SAFE_ATTR,$e):Qe,Ye=objectHasOwnProperty(ue,"ADD_DATA_URI_TAGS")?addToSet(clone(Ve),ue.ADD_DATA_URI_TAGS,$e):Ve,He=objectHasOwnProperty(ue,"FORBID_CONTENTS")?addToSet({},ue.FORBID_CONTENTS,$e):Ue,de=objectHasOwnProperty(ue,"FORBID_TAGS")?addToSet({},ue.FORBID_TAGS,$e):clone({}),fe=objectHasOwnProperty(ue,"FORBID_ATTR")?addToSet({},ue.FORBID_ATTR,$e):clone({}),Ce=objectHasOwnProperty(ue,"USE_PROFILES")?ue.USE_PROFILES:!1,he=ue.ALLOW_ARIA_ATTR!==!1,ge=ue.ALLOW_DATA_ATTR!==!1,ye=ue.ALLOW_UNKNOWN_PROTOCOLS||!1,Se=ue.ALLOW_SELF_CLOSE_IN_ATTR!==!1,Te=ue.SAFE_FOR_TEMPLATES||!1,ve=ue.SAFE_FOR_XML!==!1,we=ue.WHOLE_DOCUMENT||!1,Me=ue.RETURN_DOM||!1,Ie=ue.RETURN_DOM_FRAGMENT||!1,Be=ue.RETURN_TRUSTED_TYPE||!1,Ae=ue.FORCE_BODY||!1,Ne=ue.SANITIZE_DOM!==!1,Le=ue.SANITIZE_NAMED_PROPS||!1,xe=ue.KEEP_CONTENT!==!1,Oe=ue.IN_PLACE||!1,ee=ue.ALLOWED_URI_REGEXP||IS_ALLOWED_URI,_e=ue.NAMESPACE||Ee,Xe=ue.MATHML_TEXT_INTEGRATION_POINTS||Xe,ct=ue.HTML_INTEGRATION_POINTS||ct,oe=ue.CUSTOM_ELEMENT_HANDLING||{},ue.CUSTOM_ELEMENT_HANDLING&&Ze(ue.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(oe.tagNameCheck=ue.CUSTOM_ELEMENT_HANDLING.tagNameCheck),ue.CUSTOM_ELEMENT_HANDLING&&Ze(ue.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(oe.attributeNameCheck=ue.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),ue.CUSTOM_ELEMENT_HANDLING&&typeof ue.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(oe.allowCustomizedBuiltInElements=ue.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Te&&(ge=!1),Ie&&(Me=!0),Ce&&(se=addToSet({},text),le=[],Ce.html===!0&&(addToSet(se,html$1),addToSet(le,html)),Ce.svg===!0&&(addToSet(se,svg$1),addToSet(le,svg),addToSet(le,xml)),Ce.svgFilters===!0&&(addToSet(se,svgFilters),addToSet(le,svg),addToSet(le,xml)),Ce.mathMl===!0&&(addToSet(se,mathMl$1),addToSet(le,mathMl),addToSet(le,xml))),ue.ADD_TAGS&&(typeof ue.ADD_TAGS=="function"?me.tagCheck=ue.ADD_TAGS:(se===ae&&(se=clone(se)),addToSet(se,ue.ADD_TAGS,$e))),ue.ADD_ATTR&&(typeof ue.ADD_ATTR=="function"?me.attributeCheck=ue.ADD_ATTR:(le===ce&&(le=clone(le)),addToSet(le,ue.ADD_ATTR,$e))),ue.ADD_URI_SAFE_ATTR&&addToSet(Ge,ue.ADD_URI_SAFE_ATTR,$e),ue.FORBID_CONTENTS&&(He===Ue&&(He=clone(He)),addToSet(He,ue.FORBID_CONTENTS,$e)),ue.ADD_FORBID_CONTENTS&&(He===Ue&&(He=clone(He)),addToSet(He,ue.ADD_FORBID_CONTENTS,$e)),xe&&(se["#text"]=!0),we&&addToSet(se,["html","head","body"]),se.table&&(addToSet(se,["tbody"]),delete de.tbody),ue.TRUSTED_TYPES_POLICY){if(typeof ue.TRUSTED_TYPES_POLICY.createHTML!="function")throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof ue.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw typeErrorCreate('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');N=ue.TRUSTED_TYPES_POLICY,j=N.createHTML("")}else N===void 0&&(N=_createTrustedTypesPolicy(A,m)),N!==null&&typeof j=="string"&&(j=N.createHTML(""));freeze$1&&freeze$1(ue),Ke=ue}},vt=addToSet({},[...svg$1,...svgFilters,...svgDisallowed]),dt=addToSet({},[...mathMl$1,...mathMlDisallowed]),pt=function(ue){let be=O(ue);(!be||!be.tagName)&&(be={namespaceURI:_e,tagName:"template"});const Re=stringToLowerCase(ue.tagName),et=stringToLowerCase(be.tagName);return Fe[ue.namespaceURI]?ue.namespaceURI===pe?be.namespaceURI===Ee?Re==="svg":be.namespaceURI===rt?Re==="svg"&&(et==="annotation-xml"||Xe[et]):!!vt[Re]:ue.namespaceURI===rt?be.namespaceURI===Ee?Re==="math":be.namespaceURI===pe?Re==="math"&&ct[et]:!!dt[Re]:ue.namespaceURI===Ee?be.namespaceURI===pe&&!ct[et]||be.namespaceURI===rt&&!Xe[et]?!1:!dt[Re]&&(ot[Re]||!vt[Re]):!!(Je==="application/xhtml+xml"&&Fe[ue.namespaceURI]):!1},ht=function(ue){arrayPush(n.removed,{element:ue});try{O(ue).removeChild(ue)}catch{I(ue)}},ut=function(ue,be){try{arrayPush(n.removed,{attribute:be.getAttributeNode(ue),from:be})}catch{arrayPush(n.removed,{attribute:null,from:be})}if(be.removeAttribute(ue),ue==="is")if(Me||Ie)try{ht(be)}catch{}else try{be.setAttribute(ue,"")}catch{}},St=function(ue){let be=null,Re=null;if(Ae)ue="<remove></remove>"+ue;else{const nt=stringMatch(ue,/^[\r\n\t ]+/);Re=nt&&nt[0]}Je==="application/xhtml+xml"&&_e===Ee&&(ue='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+ue+"</body></html>");const et=N?N.createHTML(ue):ue;if(_e===Ee)try{be=new R().parseFromString(et,Je)}catch{}if(!be||!be.documentElement){be=L.createDocument(_e,"template",null);try{be.documentElement.innerHTML=ze?j:et}catch{}}const lt=be.body||be.documentElement;return ue&&Re&&lt.insertBefore(d.createTextNode(Re),lt.childNodes[0]||null),_e===Ee?Y.call(be,we?"html":"body")[0]:we?be.documentElement:lt},Ct=function(ue){return H.call(ue.ownerDocument||ue,ue,E.SHOW_ELEMENT|E.SHOW_COMMENT|E.SHOW_TEXT|E.SHOW_PROCESSING_INSTRUCTION|E.SHOW_CDATA_SECTION,null)},Et=function(ue){return ue instanceof _&&(typeof ue.nodeName!="string"||typeof ue.textContent!="string"||typeof ue.removeChild!="function"||!(ue.attributes instanceof T)||typeof ue.removeAttribute!="function"||typeof ue.setAttribute!="function"||typeof ue.namespaceURI!="string"||typeof ue.insertBefore!="function"||typeof ue.hasChildNodes!="function")},kt=function(ue){return typeof b=="function"&&ue instanceof b};function mt(ke,ue,be){arrayForEach(ke,Re=>{Re.call(n,ue,be,Ke)})}const Mt=function(ue){let be=null;if(mt(Q.beforeSanitizeElements,ue,null),Et(ue))return ht(ue),!0;const Re=$e(ue.nodeName);if(mt(Q.uponSanitizeElement,ue,{tagName:Re,allowedTags:se}),ve&&ue.hasChildNodes()&&!kt(ue.firstElementChild)&&regExpTest(/<[/\w!]/g,ue.innerHTML)&&regExpTest(/<[/\w!]/g,ue.textContent)||ue.nodeType===NODE_TYPE.progressingInstruction||ve&&ue.nodeType===NODE_TYPE.comment&&regExpTest(/<[/\w]/g,ue.data))return ht(ue),!0;if(!(me.tagCheck instanceof Function&&me.tagCheck(Re))&&(!se[Re]||de[Re])){if(!de[Re]&&It(Re)&&(oe.tagNameCheck instanceof RegExp&&regExpTest(oe.tagNameCheck,Re)||oe.tagNameCheck instanceof Function&&oe.tagNameCheck(Re)))return!1;if(xe&&!He[Re]){const et=O(ue)||ue.parentNode,lt=D(ue)||ue.childNodes;if(lt&&et){const nt=lt.length;for(let ft=nt-1;ft>=0;--ft){const gt=k(lt[ft],!0);gt.__removalCount=(ue.__removalCount||0)+1,et.insertBefore(gt,P(ue))}}}return ht(ue),!0}return ue instanceof S&&!pt(ue)||(Re==="noscript"||Re==="noembed"||Re==="noframes")&&regExpTest(/<\/no(script|embed|frames)/i,ue.innerHTML)?(ht(ue),!0):(Te&&ue.nodeType===NODE_TYPE.text&&(be=ue.textContent,arrayForEach([J,re,ne],et=>{be=stringReplace(be,et," ")}),ue.textContent!==be&&(arrayPush(n.removed,{element:ue.cloneNode()}),ue.textContent=be)),mt(Q.afterSanitizeElements,ue,null),!1)},Pt=function(ue,be,Re){if(Ne&&(be==="id"||be==="name")&&(Re in d||Re in it))return!1;if(!(ge&&!fe[be]&&regExpTest(te,be))){if(!(he&&regExpTest(F,be))){if(!(me.attributeCheck instanceof Function&&me.attributeCheck(be,ue))){if(!le[be]||fe[be]){if(!(It(ue)&&(oe.tagNameCheck instanceof RegExp&&regExpTest(oe.tagNameCheck,ue)||oe.tagNameCheck instanceof Function&&oe.tagNameCheck(ue))&&(oe.attributeNameCheck instanceof RegExp&&regExpTest(oe.attributeNameCheck,be)||oe.attributeNameCheck instanceof Function&&oe.attributeNameCheck(be,ue))||be==="is"&&oe.allowCustomizedBuiltInElements&&(oe.tagNameCheck instanceof RegExp&&regExpTest(oe.tagNameCheck,Re)||oe.tagNameCheck instanceof Function&&oe.tagNameCheck(Re))))return!1}else if(!Ge[be]){if(!regExpTest(ee,stringReplace(Re,V,""))){if(!((be==="src"||be==="xlink:href"||be==="href")&&ue!=="script"&&stringIndexOf(Re,"data:")===0&&Ye[ue])){if(!(ye&&!regExpTest(q,stringReplace(Re,V,"")))){if(Re)return!1}}}}}}}return!0},It=function(ue){return ue!=="annotation-xml"&&stringMatch(ue,W)},Nt=function(ue){mt(Q.beforeSanitizeAttributes,ue,null);const{attributes:be}=ue;if(!be||Et(ue))return;const Re={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:le,forceKeepAttr:void 0};let et=be.length;for(;et--;){const lt=be[et],{name:nt,namespaceURI:ft,value:gt}=lt,bt=$e(nt),Tt=gt;let st=nt==="value"?Tt:stringTrim(Tt);if(Re.attrName=bt,Re.attrValue=st,Re.keepAttr=!0,Re.forceKeepAttr=void 0,mt(Q.uponSanitizeAttribute,ue,Re),st=Re.attrValue,Le&&(bt==="id"||bt==="name")&&(ut(nt,ue),st=De+st),ve&&regExpTest(/((--!?|])>)|<\/(style|title|textarea)/i,st)){ut(nt,ue);continue}if(bt==="attributename"&&stringMatch(st,"href")){ut(nt,ue);continue}if(Re.forceKeepAttr)continue;if(!Re.keepAttr){ut(nt,ue);continue}if(!Se&&regExpTest(/\/>/i,st)){ut(nt,ue);continue}Te&&arrayForEach([J,re,ne],Dt=>{st=stringReplace(st,Dt," ")});const Ot=$e(ue.nodeName);if(!Pt(Ot,bt,st)){ut(nt,ue);continue}if(N&&typeof A=="object"&&typeof A.getAttributeType=="function"&&!ft)switch(A.getAttributeType(Ot,bt)){case"TrustedHTML":{st=N.createHTML(st);break}case"TrustedScriptURL":{st=N.createScriptURL(st);break}}if(st!==Tt)try{ft?ue.setAttributeNS(ft,nt,st):ue.setAttribute(nt,st),Et(ue)?ht(ue):arrayPop(n.removed)}catch{ut(nt,ue)}}mt(Q.afterSanitizeAttributes,ue,null)},Kt=function ke(ue){let be=null;const Re=Ct(ue);for(mt(Q.beforeSanitizeShadowDOM,ue,null);be=Re.nextNode();)mt(Q.uponSanitizeShadowNode,be,null),Mt(be),Nt(be),be.content instanceof g&&ke(be.content);mt(Q.afterSanitizeShadowDOM,ue,null)};return n.sanitize=function(ke){let ue=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},be=null,Re=null,et=null,lt=null;if(ze=!ke,ze&&(ke="<!-->"),typeof ke!="string"&&!kt(ke))if(typeof ke.toString=="function"){if(ke=ke.toString(),typeof ke!="string")throw typeErrorCreate("dirty is not a string, aborting")}else throw typeErrorCreate("toString is not a function");if(!n.isSupported)return ke;if(je||at(ue),n.removed=[],typeof ke=="string"&&(Oe=!1),Oe){if(ke.nodeName){const gt=$e(ke.nodeName);if(!se[gt]||de[gt])throw typeErrorCreate("root node is forbidden and cannot be sanitized in-place")}}else if(ke instanceof b)be=St("<!---->"),Re=be.ownerDocument.importNode(ke,!0),Re.nodeType===NODE_TYPE.element&&Re.nodeName==="BODY"||Re.nodeName==="HTML"?be=Re:be.appendChild(Re);else{if(!Me&&!Te&&!we&&ke.indexOf("<")===-1)return N&&Be?N.createHTML(ke):ke;if(be=St(ke),!be)return Me?null:Be?j:""}be&&Ae&&ht(be.firstChild);const nt=Ct(Oe?ke:be);for(;et=nt.nextNode();)Mt(et),Nt(et),et.content instanceof g&&Kt(et.content);if(Oe)return ke;if(Me){if(Ie)for(lt=B.call(be.ownerDocument);be.firstChild;)lt.appendChild(be.firstChild);else lt=be;return(le.shadowroot||le.shadowrootmode)&&(lt=Z.call(p,lt,!0)),lt}let ft=we?be.outerHTML:be.innerHTML;return we&&se["!doctype"]&&be.ownerDocument&&be.ownerDocument.doctype&&be.ownerDocument.doctype.name&&regExpTest(DOCTYPE_NAME,be.ownerDocument.doctype.name)&&(ft="<!DOCTYPE "+be.ownerDocument.doctype.name+`>
220
220
  `+ft),Te&&arrayForEach([J,re,ne],gt=>{ft=stringReplace(ft,gt," ")}),N&&Be?N.createHTML(ft):ft},n.setConfig=function(){let ke=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};at(ke),je=!0},n.clearConfig=function(){Ke=null,je=!1},n.isValidAttribute=function(ke,ue,be){Ke||at({});const Re=$e(ke),et=$e(ue);return Pt(Re,et,be)},n.addHook=function(ke,ue){typeof ue=="function"&&arrayPush(Q[ke],ue)},n.removeHook=function(ke,ue){if(ue!==void 0){const be=arrayLastIndexOf(Q[ke],ue);return be===-1?void 0:arraySplice(Q[ke],be,1)[0]}return arrayPop(Q[ke])},n.removeHooks=function(ke){Q[ke]=[]},n.removeAllHooks=function(){Q=_createHooksMap()},n}var purify=createDOMPurify();const ALLOWED_IFRAME_DOMAINS=["youtube.com","www.youtube.com","youtube-nocookie.com","www.youtube-nocookie.com","open.spotify.com","spotify.com"];function isAllowedDomain(u){try{const n=new URL(u);if(n.protocol!=="https:")return!1;const d=n.hostname.toLowerCase();return ALLOWED_IFRAME_DOMAINS.some(p=>d===p||d.endsWith(`.${p}`))}catch{return!1}}const configureDOMPurify=u=>{const n={ADD_TAGS:["iframe"],ADD_ATTR:["src","width","height","frameborder","allowfullscreen","allow","sandbox","loading","referrerpolicy","title"],ALLOWED_URI_REGEXP:/^https:\/\//,RETURN_TRUSTED_TYPE:!1};return u.addHook("uponSanitizeElement",(d,p)=>{if(p.tagName==="iframe"){const g=d.getAttribute("src")||"";isAllowedDomain(g)||d.parentNode?.removeChild(d)}}),n};function sanitizeIframeHTML(u){const n=purify(window);try{const d=configureDOMPurify(n),p=n.sanitize(u,d);if(!p.includes("<iframe"))return null;const m=p.match(/<iframe[^>]*src=["']([^"']+)["']/i);return!m||!m[1]||!isAllowedDomain(m[1])?null:m[1]}catch{return null}}const isYouTubeUrl=u=>new RegExp(YOUTUBE_REGEX).test(u.trim()),isSpotifyUrl=u=>new RegExp(SPOTIFY_REGEX).test(u.trim()),getEmbedUrl=u=>{const n=u.trim();if(isYouTubeUrl(n)){const p=n.match(YOUTUBE_ID_REGEX)?.[1];return p?`https://www.youtube.com/embed/${p}`:null}if(isSpotifyUrl(n)){const d=n.match(/open\.spotify\.com\/(track|playlist|album)\/([A-Za-z0-9]+)/);if(!d)return null;const[,p,m]=d;return`https://open.spotify.com/embed/${p}/${m}?utm_source=generator`}return null},isEmbeddableUrl=u=>isYouTubeUrl(u)||isSpotifyUrl(u),createFinder=u=>n=>{const d=[],p=new RegExp(u.source,"gi");let m;for(;(m=p.exec(n))!==null;)d.push({index:m.index,text:m[0],match:m});return d.length>0?d:null},Iframe=Node3.create({name:"iframe",group:"block",atom:!0,selectable:!0,draggable:!0,priority:1e3,addOptions(){return{api:void 0}},addAttributes(){return{src:{default:null},width:{default:"100%"},maxWidth:{default:"100%",renderHTML:u=>({style:`max-width: ${u.maxWidth}`})},height:{default:"320"},previewPayload:{default:null,parseHTML:()=>null,renderHTML:()=>({})}}},parseHTML(){return[{tag:"iframe[src]"}]},renderHTML({HTMLAttributes:u}){return["iframe",mergeAttributes(u,{class:"my-4"})]},addNodeView(){return ReactNodeViewRenderer(IframeView)},addPasteRules(){return[{find:/<iframe.*?src="(.*?)".*?<\/iframe>/gi,handler:({state:u,range:n,match:d})=>{const p=d[0],m=sanitizeIframeHTML(p);if(!m){toast.error("🚨 Your pasted iframe is not safe to render");return}const g=this.type.create({src:m,previewPayload:null});u.tr.replaceRangeWith(n.from,n.to,g)}},{find:createFinder(YOUTUBE_REGEX),handler:({state:u,range:n,match:d})=>{const p=d[0],m=getEmbedUrl(p);if(!m)return;const g=this.type.create({src:m});u.tr.replaceRangeWith(n.from,n.to,g)}},{find:createFinder(SPOTIFY_REGEX),handler:({state:u,range:n,match:d})=>{const p=d[0],m=getEmbedUrl(p);if(!m)return;const g=this.type.create({src:m});u.tr.replaceRangeWith(n.from,n.to,g)}}]},addCommands(){return{setIframe:u=>({tr:n,dispatch:d})=>{const p=this.type.create(u);return d&&n.replaceSelectionWith(p),!0}}}}),getClipboardText=u=>{const n=u.clipboardData;return n&&n.getData("text/plain")||null},handleUrlWithoutSelection=(u,n,d,p)=>{d.preventDefault();const m=normalizeUrl(n);return p&&u.commands.insertMediaWithUpload?(resolveUrlType(m).then(g=>{g?u.commands.insertMediaWithUpload({source:g?.src,type:g?.type,mediaType:MediaItemType.MEDIA_ITEM}):u.chain().focus().insertLink({href:m,text:n}).run()}).catch(g=>{u.chain().focus().insertLink({href:m,text:n}).run()}),!0):(u.chain().focus().insertLink({href:m,text:n}).run(),!0)},handleUrlWithSelection=(u,n,d)=>{const p=getViewState(u);if(!hasTextSelected(p))return!1;const m=getSelectedText(p),g=normalizeUrl(n);return d.chain().focus().deleteSelection().insertLink({href:g,text:m}).run(),!0},createPasteHandler=(u,n)=>(d,p)=>{try{const m=getClipboardText(p);if(!m||!isValidUrl(m))return!1;const g=m.trim();return isEmbeddableUrl(g)&&n?.autoEmbed?(p.preventDefault(),!1):!d.state.selection.empty&&n?.autoLinkSelection?(p.preventDefault(),handleUrlWithSelection(d,g,u)):handleUrlWithoutSelection(u,g,p,n?.autoDetectMedia??!0)}catch{return!1}},createTransformHandler=u=>n=>{const d=getFragmentText(n.content);if(isValidUrl(d.trim()))return n;try{return transformUrlsInSlice(u,n)}catch{return n}},SmartLinkPaste=Extension.create({name:"smartLinkPaste",priority:998,addOptions(){return{enableTransformPasted:!1,autoDetectMedia:!0,autoEmbed:!0,autoLinkSelection:!0,api:void 0}},addProseMirrorPlugins(){const{editor:u,options:n}=this,d={handlePaste:createPasteHandler(u,n)};return n.enableTransformPasted&&(d.transformPasted=createTransformHandler(u)),[new Plugin({key:new PluginKey("smartLinkPaste"),props:d})]}}),uploadFile=async u=>{const{file:n,api:d,onProgress:p,mediaItemType:m,signal:g}=u,y=n instanceof File?n:new File([n],"upload.bin",{type:n.type}),b=await d.uploadChunked(y,p,g);return createMediaOption(b,m)},uploadUrl=async u=>{const n=u?.url,d=u?.api,p=u?.onProgress,m=u?.mediaItemType,g=u?.searchFrom;p&&p(25);const y=simulateProgress(p,25,90);try{const b=await d.uploadUrl(n),S=createMediaOption(b,m,g);return y&&clearInterval(y),p&&p(100),S}catch(b){throw y&&clearInterval(y),b}};function simulateProgress(u,n,d){if(!u)return null;let p=n;const m=5,y=setInterval(()=>{p+=m,p>=d&&(p=d,clearInterval(y)),u(p)},300);return y}const SmartMediaUpload=Extension.create({name:"smartMediaUpload",priority:999,addOptions(){return{api:void 0,maxFileSize:MAX_FILE_SIZE,allowedFileTypes:["image/*","video/*","audio/*"],maxConcurrentUploads:MAX_FILES,onUploadStart:void 0,onUploadProgress:void 0,onUploadComplete:void 0,onUploadError:void 0}},addCommands(){return{insertMediaWithUpload:({source:u,type:n,caption:d,mediaType:p,searchFrom:m})=>({commands:g,editor:y})=>{const b=v4(),S=this.options;if(!S.api)return!1;let E="local";if(m===ImageSearchFrom.Gif?E="gif_search":m===ImageSearchFrom.Image?E="image_search":isUrlString(u)?E="url":isFileOrBlob(u)&&(E="local"),isFileOrBlob(u)){const _=validateFile(u,S.maxFileSize,S.allowedFileTypes);if(!_.valid){toast.error(_.error),S.onUploadError?.(b,new Error(_.error));const{sessionId:R,editorType:A}=this.storage.getAnalyticsContext(y);return R&&A&&getAnalyticsStore().trackMediaUploadFailed(R,{editorType:A,mediaType:MediaTypeMap[n],fileSizeMB:u.size/(1024*1024),source:E,errorType:_?.error?.includes("size")?"file_too_large":"unsupported_format"}),!1}}const T=isFileOrBlob(u)?URL.createObjectURL(u):u;return g.insertMedia({uid:b,src:T,type:n,caption:d||"",uploading:!0,progress:0}),isFileOrBlob(u)&&this.storage.blobUrls.set(b,T),this.storage.uploadQueue.push({uid:b,source:u,type:n,caption:d,uploadSource:E}),this.storage.processUploadQueue(y,p,m),!0}}},addStorage(){return{uploadQueue:[],activeUploads:0,blobUrls:new Map,itemPromises:new Map,itemBlobs:new Map,itemAborts:new Map,getPendingUpload(u){const n=this.itemPromises.get(u),d=this.itemBlobs.get(u),p=this.itemAborts.get(u);if(!(!n||!d||!p))return{blob:d,promise:n,abort:p}},processUploadQueue:null,getAnalyticsContext:u=>{const n=u.view?.dom?.getAttribute("data-session-id")||"",d=u.view?.dom?.getAttribute("data-editor-type");return{sessionId:n,editorType:d}}}},onCreate(){const u=async(n,d,p)=>{const{maxConcurrentUploads:m}=this.options;if(this.storage.activeUploads>=m||this.storage.uploadQueue.length===0)return;const g=this.storage.uploadQueue.shift();this.storage.activeUploads++;const y=this.options,b=new AbortController;this.storage.itemAborts.set(g.uid,()=>b.abort()),isFileOrBlob(g.source)&&this.storage.itemBlobs.set(g.uid,g.source);const S=(async()=>{if(y.onUploadStart?.(g.uid),isFileOrBlob(g.source))return uploadFile({file:g.source,api:y.api,mediaItemType:d,signal:b.signal,onProgress:E=>{n.commands.updateMediaProgress(g.uid,E),y.onUploadProgress?.(g.uid,E)}});if(isUrlString(normalizeUrl(g.source)))return uploadUrl({url:g.source,api:y.api,mediaItemType:d,searchFrom:p,onProgress:E=>{n.commands.updateMediaProgress(g.uid,E),y.onUploadProgress?.(g.uid,E)}});throw new Error("Invalid source type")})();this.storage.itemPromises.set(g.uid,S),await(async()=>{try{const E=await S,T=this.storage.blobUrls.get(g.uid);T&&(URL.revokeObjectURL(T),this.storage.blobUrls.delete(g.uid));const _=E?.sources?.original?.url||E?.sources?.thumbnail?.url;if(_){const R=E?.imageType??"",A=R.startsWith("video/")?MediaNodeTypes.Video:R.startsWith("audio/")?MediaNodeTypes.Audio:g.type;n.commands.updateMediaByUid(g.uid,{src:_,type:A,uploading:!1,progress:100,payload:E})}else n.commands.deleteMediaByUid(g.uid);if(y.onUploadComplete?.(g.uid,_),_){const{sessionId:R,editorType:A}=this.storage.getAnalyticsContext(n);if(R&&A){const C=getAnalyticsStore();let k="unknown",I=0;isFileOrBlob(g.source)&&(k=g.source.type||"unknown",I=g.source.size/1048576);const P=k?.toLowerCase()==="image/gif";C.trackMediaUploadSuccess(R,{editorType:A,mediaType:P?"gif":MediaTypeMap[g.type],fileSizeMB:I,source:g.uploadSource})}}}catch(E){const T=this.storage.blobUrls.get(g.uid);T&&(URL.revokeObjectURL(T),this.storage.blobUrls.delete(g.uid)),n.commands.deleteMediaByUid(g.uid),y.onUploadError?.(g.uid,E);const{sessionId:_,editorType:R}=this.storage.getAnalyticsContext(n);if(_&&R){const A=getAnalyticsStore();let C=0;isFileOrBlob(g.source)&&(C=g.source.size/1048576);let k="server_error";const I=E.message;I.includes("network")||I.includes("fetch")?k="network_error":I.includes("format")||I.includes("type")?k="unsupported_format":(I.includes("size")||I.includes("large"))&&(k="file_too_large"),A.trackMediaUploadFailed(_,{editorType:R,mediaType:MediaTypeMap[g.type],fileSizeMB:C,source:g.uploadSource,errorType:k})}}finally{this.storage.itemPromises.delete(g.uid),this.storage.itemBlobs.delete(g.uid),this.storage.itemAborts.delete(g.uid),this.storage.activeUploads--,this.storage.processUploadQueue(n,d,p)}})().catch(E=>{}),this.storage.uploadQueue.length>0&&this.storage.processUploadQueue(n,d,p)};this.storage.processUploadQueue=u},onDestroy(){this.storage.blobUrls.forEach(u=>URL.revokeObjectURL(u)),this.storage.blobUrls.clear(),this.storage.itemPromises.clear(),this.storage.itemBlobs.clear(),this.storage.itemAborts.clear()},addProseMirrorPlugins(){const{editor:u}=this;return[new Plugin({key:new PluginKey("smartMediaUpload"),props:{handleDrop:(n,d)=>{const p=Array.from(d.dataTransfer?.files||[]);return p.length===0?!1:p.length>MAX_FILES?(toast.error(`You can upload at most ${MAX_FILES} media files at a time`),!1):(d.preventDefault(),p.forEach(m=>{let g;if(m.type.startsWith("image/"))g=MediaNodeTypes.Image;else if(m.type.startsWith("video/"))g=MediaNodeTypes.Video;else if(m.type.startsWith("audio/"))g=MediaNodeTypes.Audio;else return;u.commands.insertMediaWithUpload({source:m,type:g,mediaType:MediaItemType.MEDIA_ITEM})}),!0)},handlePaste:(n,d)=>{const m=Array.from(d.clipboardData?.items||[]).filter(g=>g.type.startsWith("image/"));return m.length===0?!1:(d.preventDefault(),m.forEach(g=>{const y=g.getAsFile();if(y){const b=y.type.toLowerCase()==="image/gif";u.commands.insertMediaWithUpload({source:y,type:MediaNodeTypes.Image,mediaType:b?MediaItemType.IMAGE_ITEM:MediaItemType.MEDIA_ITEM})}}),!0)}}})]}});function findSuggestionMatch(u){var n;const{char:d,allowSpaces:p,allowToIncludeChar:m,allowedPrefixes:g,startOfLine:y,$position:b}=u,S=p&&!m,E=escapeForRegEx(d),T=new RegExp(`\\s${E}$`),_=y?"^":"",R=m?"":E,A=S?new RegExp(`${_}${E}.*?(?=\\s${R}|$)`,"gm"):new RegExp(`${_}(?:^)?${E}[^\\s${R}]*`,"gm"),C=((n=b.nodeBefore)==null?void 0:n.isText)&&b.nodeBefore.text;if(!C)return null;const k=b.pos-C.length,I=Array.from(C.matchAll(A)).pop();if(!I||I.input===void 0||I.index===void 0)return null;const P=I.input.slice(Math.max(0,I.index-1),I.index),D=new RegExp(`^[${g?.join("")}\0]?$`).test(P);if(g!==null&&!D)return null;const O=k+I.index;let N=O+I[0].length;return S&&T.test(C.slice(N-1,N+1))&&(I[0]+=" ",N+=1),O<b.pos&&N>=b.pos?{range:{from:O,to:N},query:I[0].slice(d.length),text:I[0]}:null}var SuggestionPluginKey=new PluginKey("suggestion");function Suggestion({pluginKey:u=SuggestionPluginKey,editor:n,char:d="@",allowSpaces:p=!1,allowToIncludeChar:m=!1,allowedPrefixes:g=[" "],startOfLine:y=!1,decorationTag:b="span",decorationClass:S="suggestion",decorationContent:E="",decorationEmptyClass:T="is-empty",command:_=()=>null,items:R=()=>[],render:A=()=>({}),allow:C=()=>!0,findSuggestionMatch:k=findSuggestionMatch,shouldShow:I}){let P;const D=A?.(),O=()=>{const H=n.state.selection.$anchor.pos,B=n.view.coordsAtPos(H),{top:Y,right:Z,bottom:Q,left:J}=B;try{return new DOMRect(J,Y,Z-J,Q-Y)}catch{return null}},N=(H,B)=>B?()=>{const Y=u.getState(n.state),Z=Y?.decorationId,Q=H.dom.querySelector(`[data-decoration-id="${Z}"]`);return Q?.getBoundingClientRect()||null}:O;function j(H,B){var Y;try{const Q=u.getState(H.state),J=Q?.decorationId?H.dom.querySelector(`[data-decoration-id="${Q.decorationId}"]`):null,re={editor:n,range:Q?.range||{from:0,to:0},query:Q?.query||null,text:Q?.text||null,items:[],command:ne=>_({editor:n,range:Q?.range||{from:0,to:0},props:ne}),decorationNode:J,clientRect:N(H,J)};(Y=D?.onExit)==null||Y.call(D,re)}catch{}const Z=H.state.tr.setMeta(B,{exit:!0});H.dispatch(Z)}const L=new Plugin({key:u,view(){return{update:async(H,B)=>{var Y,Z,Q,J,re,ne,te;const F=(Y=this.key)==null?void 0:Y.getState(B),q=(Z=this.key)==null?void 0:Z.getState(H.state),V=F.active&&q.active&&F.range.from!==q.range.from,W=!F.active&&q.active,ee=F.active&&!q.active,se=!W&&!ee&&F.query!==q.query,ae=W||V&&se,le=se||V,ce=ee||V&&se;if(!ae&&!le&&!ce)return;const oe=ce&&!ae?F:q,de=H.dom.querySelector(`[data-decoration-id="${oe.decorationId}"]`);P={editor:n,range:oe.range,query:oe.query,text:oe.text,items:[],command:fe=>_({editor:n,range:oe.range,props:fe}),decorationNode:de,clientRect:N(H,de)},ae&&((Q=D?.onBeforeStart)==null||Q.call(D,P)),le&&((J=D?.onBeforeUpdate)==null||J.call(D,P)),(le||ae)&&(P.items=await R({editor:n,query:oe.query})),ce&&((re=D?.onExit)==null||re.call(D,P)),le&&((ne=D?.onUpdate)==null||ne.call(D,P)),ae&&((te=D?.onStart)==null||te.call(D,P))},destroy:()=>{var H;P&&((H=D?.onExit)==null||H.call(D,P))}}},state:{init(){return{active:!1,range:{from:0,to:0},query:null,text:null,composing:!1}},apply(H,B,Y,Z){const{isEditable:Q}=n,{composing:J}=n.view,{selection:re}=H,{empty:ne,from:te}=re,F={...B},q=H.getMeta(u);if(q&&q.exit)return F.active=!1,F.decorationId=null,F.range={from:0,to:0},F.query=null,F.text=null,F;if(F.composing=J,Q&&(ne||n.view.composing)){(te<B.range.from||te>B.range.to)&&!J&&!B.composing&&(F.active=!1);const V=k({char:d,allowSpaces:p,allowToIncludeChar:m,allowedPrefixes:g,startOfLine:y,$position:re.$from}),W=`id_${Math.floor(Math.random()*4294967295)}`;V&&C({editor:n,state:Z,range:V.range,isActive:B.active})&&(!I||I({editor:n,range:V.range,query:V.query,text:V.text,transaction:H}))?(F.active=!0,F.decorationId=B.decorationId?B.decorationId:W,F.range=V.range,F.query=V.query,F.text=V.text):F.active=!1}else F.active=!1;return F.active||(F.decorationId=null,F.range={from:0,to:0},F.query=null,F.text=null),F}},props:{handleKeyDown(H,B){var Y,Z,Q,J;const{active:re,range:ne}=L.getState(H.state);if(!re)return!1;if(B.key==="Escape"||B.key==="Esc"){const F=L.getState(H.state),q=(Y=P?.decorationNode)!=null?Y:null,V=q??(F?.decorationId?H.dom.querySelector(`[data-decoration-id="${F.decorationId}"]`):null);if(((Z=D?.onKeyDown)==null?void 0:Z.call(D,{view:H,event:B,range:F.range}))||!1)return!0;const ee={editor:n,range:F.range,query:F.query,text:F.text,items:[],command:se=>_({editor:n,range:F.range,props:se}),decorationNode:V,clientRect:V?()=>V.getBoundingClientRect()||null:null};return(Q=D?.onExit)==null||Q.call(D,ee),j(H,u),!0}return((J=D?.onKeyDown)==null?void 0:J.call(D,{view:H,event:B,range:ne}))||!1},decorations(H){const{active:B,range:Y,decorationId:Z,query:Q}=L.getState(H);if(!B)return null;const J=!Q?.length,re=[S];return J&&re.push(T),DecorationSet.create(H.doc,[Decoration.inline(Y.from,Y.to,{nodeName:b,class:re.join(" "),"data-decoration-id":Z,"data-decoration-content":E})])}}});return L}var top="top",bottom="bottom",right="right",left="left",auto="auto",basePlacements=[top,bottom,right,left],start="start",end="end",clippingParents="clippingParents",viewport="viewport",popper="popper",reference="reference",variationPlacements=basePlacements.reduce(function(u,n){return u.concat([n+"-"+start,n+"-"+end])},[]),placements=[].concat(basePlacements,[auto]).reduce(function(u,n){return u.concat([n,n+"-"+start,n+"-"+end])},[]),beforeRead="beforeRead",read="read",afterRead="afterRead",beforeMain="beforeMain",main="main",afterMain="afterMain",beforeWrite="beforeWrite",write$1="write",afterWrite="afterWrite",modifierPhases=[beforeRead,read,afterRead,beforeMain,main,afterMain,beforeWrite,write$1,afterWrite];function getNodeName(u){return u?(u.nodeName||"").toLowerCase():null}function getWindow(u){if(u==null)return window;if(u.toString()!=="[object Window]"){var n=u.ownerDocument;return n&&n.defaultView||window}return u}function isElement$1(u){var n=getWindow(u).Element;return u instanceof n||u instanceof Element}function isHTMLElement(u){var n=getWindow(u).HTMLElement;return u instanceof n||u instanceof HTMLElement}function isShadowRoot(u){if(typeof ShadowRoot>"u")return!1;var n=getWindow(u).ShadowRoot;return u instanceof n||u instanceof ShadowRoot}function applyStyles$1(u){var n=u.state;Object.keys(n.elements).forEach(function(d){var p=n.styles[d]||{},m=n.attributes[d]||{},g=n.elements[d];!isHTMLElement(g)||!getNodeName(g)||(Object.assign(g.style,p),Object.keys(m).forEach(function(y){var b=m[y];b===!1?g.removeAttribute(y):g.setAttribute(y,b===!0?"":b)}))})}function effect$2(u){var n=u.state,d={popper:{position:n.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(n.elements.popper.style,d.popper),n.styles=d,n.elements.arrow&&Object.assign(n.elements.arrow.style,d.arrow),function(){Object.keys(n.elements).forEach(function(p){var m=n.elements[p],g=n.attributes[p]||{},y=Object.keys(n.styles.hasOwnProperty(p)?n.styles[p]:d[p]),b=y.reduce(function(S,E){return S[E]="",S},{});!isHTMLElement(m)||!getNodeName(m)||(Object.assign(m.style,b),Object.keys(g).forEach(function(S){m.removeAttribute(S)}))})}}const applyStyles={name:"applyStyles",enabled:!0,phase:"write",fn:applyStyles$1,effect:effect$2,requires:["computeStyles"]};function getBasePlacement$1(u){return u.split("-")[0]}var max$1=Math.max,min$1=Math.min,round=Math.round;function getUAString(){var u=navigator.userAgentData;return u!=null&&u.brands&&Array.isArray(u.brands)?u.brands.map(function(n){return n.brand+"/"+n.version}).join(" "):navigator.userAgent}function isLayoutViewport(){return!/^((?!chrome|android).)*safari/i.test(getUAString())}function getBoundingClientRect(u,n,d){n===void 0&&(n=!1),d===void 0&&(d=!1);var p=u.getBoundingClientRect(),m=1,g=1;n&&isHTMLElement(u)&&(m=u.offsetWidth>0&&round(p.width)/u.offsetWidth||1,g=u.offsetHeight>0&&round(p.height)/u.offsetHeight||1);var y=isElement$1(u)?getWindow(u):window,b=y.visualViewport,S=!isLayoutViewport()&&d,E=(p.left+(S&&b?b.offsetLeft:0))/m,T=(p.top+(S&&b?b.offsetTop:0))/g,_=p.width/m,R=p.height/g;return{width:_,height:R,top:T,right:E+_,bottom:T+R,left:E,x:E,y:T}}function getLayoutRect(u){var n=getBoundingClientRect(u),d=u.offsetWidth,p=u.offsetHeight;return Math.abs(n.width-d)<=1&&(d=n.width),Math.abs(n.height-p)<=1&&(p=n.height),{x:u.offsetLeft,y:u.offsetTop,width:d,height:p}}function contains(u,n){var d=n.getRootNode&&n.getRootNode();if(u.contains(n))return!0;if(d&&isShadowRoot(d)){var p=n;do{if(p&&u.isSameNode(p))return!0;p=p.parentNode||p.host}while(p)}return!1}function getComputedStyle$1(u){return getWindow(u).getComputedStyle(u)}function isTableElement(u){return["table","td","th"].indexOf(getNodeName(u))>=0}function getDocumentElement(u){return((isElement$1(u)?u.ownerDocument:u.document)||window.document).documentElement}function getParentNode(u){return getNodeName(u)==="html"?u:u.assignedSlot||u.parentNode||(isShadowRoot(u)?u.host:null)||getDocumentElement(u)}function getTrueOffsetParent(u){return!isHTMLElement(u)||getComputedStyle$1(u).position==="fixed"?null:u.offsetParent}function getContainingBlock(u){var n=/firefox/i.test(getUAString()),d=/Trident/i.test(getUAString());if(d&&isHTMLElement(u)){var p=getComputedStyle$1(u);if(p.position==="fixed")return null}var m=getParentNode(u);for(isShadowRoot(m)&&(m=m.host);isHTMLElement(m)&&["html","body"].indexOf(getNodeName(m))<0;){var g=getComputedStyle$1(m);if(g.transform!=="none"||g.perspective!=="none"||g.contain==="paint"||["transform","perspective"].indexOf(g.willChange)!==-1||n&&g.willChange==="filter"||n&&g.filter&&g.filter!=="none")return m;m=m.parentNode}return null}function getOffsetParent(u){for(var n=getWindow(u),d=getTrueOffsetParent(u);d&&isTableElement(d)&&getComputedStyle$1(d).position==="static";)d=getTrueOffsetParent(d);return d&&(getNodeName(d)==="html"||getNodeName(d)==="body"&&getComputedStyle$1(d).position==="static")?n:d||getContainingBlock(u)||n}function getMainAxisFromPlacement(u){return["top","bottom"].indexOf(u)>=0?"x":"y"}function within(u,n,d){return max$1(u,min$1(n,d))}function withinMaxClamp(u,n,d){var p=within(u,n,d);return p>d?d:p}function getFreshSideObject(){return{top:0,right:0,bottom:0,left:0}}function mergePaddingObject(u){return Object.assign({},getFreshSideObject(),u)}function expandToHashMap(u,n){return n.reduce(function(d,p){return d[p]=u,d},{})}var toPaddingObject=function u(n,d){return n=typeof n=="function"?n(Object.assign({},d.rects,{placement:d.placement})):n,mergePaddingObject(typeof n!="number"?n:expandToHashMap(n,basePlacements))};function arrow$1(u){var n,d=u.state,p=u.name,m=u.options,g=d.elements.arrow,y=d.modifiersData.popperOffsets,b=getBasePlacement$1(d.placement),S=getMainAxisFromPlacement(b),E=[left,right].indexOf(b)>=0,T=E?"height":"width";if(!(!g||!y)){var _=toPaddingObject(m.padding,d),R=getLayoutRect(g),A=S==="y"?top:left,C=S==="y"?bottom:right,k=d.rects.reference[T]+d.rects.reference[S]-y[S]-d.rects.popper[T],I=y[S]-d.rects.reference[S],P=getOffsetParent(g),D=P?S==="y"?P.clientHeight||0:P.clientWidth||0:0,O=k/2-I/2,N=_[A],j=D-R[T]-_[C],L=D/2-R[T]/2+O,H=within(N,L,j),B=S;d.modifiersData[p]=(n={},n[B]=H,n.centerOffset=H-L,n)}}function effect$1(u){var n=u.state,d=u.options,p=d.element,m=p===void 0?"[data-popper-arrow]":p;m!=null&&(typeof m=="string"&&(m=n.elements.popper.querySelector(m),!m)||contains(n.elements.popper,m)&&(n.elements.arrow=m))}const arrow={name:"arrow",enabled:!0,phase:"main",fn:arrow$1,effect:effect$1,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function getVariation(u){return u.split("-")[1]}var unsetSides={top:"auto",right:"auto",bottom:"auto",left:"auto"};function roundOffsetsByDPR(u,n){var d=u.x,p=u.y,m=n.devicePixelRatio||1;return{x:round(d*m)/m||0,y:round(p*m)/m||0}}function mapToStyles(u){var n,d=u.popper,p=u.popperRect,m=u.placement,g=u.variation,y=u.offsets,b=u.position,S=u.gpuAcceleration,E=u.adaptive,T=u.roundOffsets,_=u.isFixed,R=y.x,A=R===void 0?0:R,C=y.y,k=C===void 0?0:C,I=typeof T=="function"?T({x:A,y:k}):{x:A,y:k};A=I.x,k=I.y;var P=y.hasOwnProperty("x"),D=y.hasOwnProperty("y"),O=left,N=top,j=window;if(E){var L=getOffsetParent(d),H="clientHeight",B="clientWidth";if(L===getWindow(d)&&(L=getDocumentElement(d),getComputedStyle$1(L).position!=="static"&&b==="absolute"&&(H="scrollHeight",B="scrollWidth")),L=L,m===top||(m===left||m===right)&&g===end){N=bottom;var Y=_&&L===j&&j.visualViewport?j.visualViewport.height:L[H];k-=Y-p.height,k*=S?1:-1}if(m===left||(m===top||m===bottom)&&g===end){O=right;var Z=_&&L===j&&j.visualViewport?j.visualViewport.width:L[B];A-=Z-p.width,A*=S?1:-1}}var Q=Object.assign({position:b},E&&unsetSides),J=T===!0?roundOffsetsByDPR({x:A,y:k},getWindow(d)):{x:A,y:k};if(A=J.x,k=J.y,S){var re;return Object.assign({},Q,(re={},re[N]=D?"0":"",re[O]=P?"0":"",re.transform=(j.devicePixelRatio||1)<=1?"translate("+A+"px, "+k+"px)":"translate3d("+A+"px, "+k+"px, 0)",re))}return Object.assign({},Q,(n={},n[N]=D?k+"px":"",n[O]=P?A+"px":"",n.transform="",n))}function computeStyles$1(u){var n=u.state,d=u.options,p=d.gpuAcceleration,m=p===void 0?!0:p,g=d.adaptive,y=g===void 0?!0:g,b=d.roundOffsets,S=b===void 0?!0:b,E={placement:getBasePlacement$1(n.placement),variation:getVariation(n.placement),popper:n.elements.popper,popperRect:n.rects.popper,gpuAcceleration:m,isFixed:n.options.strategy==="fixed"};n.modifiersData.popperOffsets!=null&&(n.styles.popper=Object.assign({},n.styles.popper,mapToStyles(Object.assign({},E,{offsets:n.modifiersData.popperOffsets,position:n.options.strategy,adaptive:y,roundOffsets:S})))),n.modifiersData.arrow!=null&&(n.styles.arrow=Object.assign({},n.styles.arrow,mapToStyles(Object.assign({},E,{offsets:n.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:S})))),n.attributes.popper=Object.assign({},n.attributes.popper,{"data-popper-placement":n.placement})}const computeStyles={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:computeStyles$1,data:{}};var passive={passive:!0};function effect(u){var n=u.state,d=u.instance,p=u.options,m=p.scroll,g=m===void 0?!0:m,y=p.resize,b=y===void 0?!0:y,S=getWindow(n.elements.popper),E=[].concat(n.scrollParents.reference,n.scrollParents.popper);return g&&E.forEach(function(T){T.addEventListener("scroll",d.update,passive)}),b&&S.addEventListener("resize",d.update,passive),function(){g&&E.forEach(function(T){T.removeEventListener("scroll",d.update,passive)}),b&&S.removeEventListener("resize",d.update,passive)}}const eventListeners={name:"eventListeners",enabled:!0,phase:"write",fn:function u(){},effect,data:{}};var hash$1={left:"right",right:"left",bottom:"top",top:"bottom"};function getOppositePlacement(u){return u.replace(/left|right|bottom|top/g,function(n){return hash$1[n]})}var hash={start:"end",end:"start"};function getOppositeVariationPlacement(u){return u.replace(/start|end/g,function(n){return hash[n]})}function getWindowScroll(u){var n=getWindow(u),d=n.pageXOffset,p=n.pageYOffset;return{scrollLeft:d,scrollTop:p}}function getWindowScrollBarX(u){return getBoundingClientRect(getDocumentElement(u)).left+getWindowScroll(u).scrollLeft}function getViewportRect(u,n){var d=getWindow(u),p=getDocumentElement(u),m=d.visualViewport,g=p.clientWidth,y=p.clientHeight,b=0,S=0;if(m){g=m.width,y=m.height;var E=isLayoutViewport();(E||!E&&n==="fixed")&&(b=m.offsetLeft,S=m.offsetTop)}return{width:g,height:y,x:b+getWindowScrollBarX(u),y:S}}function getDocumentRect(u){var n,d=getDocumentElement(u),p=getWindowScroll(u),m=(n=u.ownerDocument)==null?void 0:n.body,g=max$1(d.scrollWidth,d.clientWidth,m?m.scrollWidth:0,m?m.clientWidth:0),y=max$1(d.scrollHeight,d.clientHeight,m?m.scrollHeight:0,m?m.clientHeight:0),b=-p.scrollLeft+getWindowScrollBarX(u),S=-p.scrollTop;return getComputedStyle$1(m||d).direction==="rtl"&&(b+=max$1(d.clientWidth,m?m.clientWidth:0)-g),{width:g,height:y,x:b,y:S}}function isScrollParent(u){var n=getComputedStyle$1(u),d=n.overflow,p=n.overflowX,m=n.overflowY;return/auto|scroll|overlay|hidden/.test(d+m+p)}function getScrollParent(u){return["html","body","#document"].indexOf(getNodeName(u))>=0?u.ownerDocument.body:isHTMLElement(u)&&isScrollParent(u)?u:getScrollParent(getParentNode(u))}function listScrollParents(u,n){var d;n===void 0&&(n=[]);var p=getScrollParent(u),m=p===((d=u.ownerDocument)==null?void 0:d.body),g=getWindow(p),y=m?[g].concat(g.visualViewport||[],isScrollParent(p)?p:[]):p,b=n.concat(y);return m?b:b.concat(listScrollParents(getParentNode(y)))}function rectToClientRect(u){return Object.assign({},u,{left:u.x,top:u.y,right:u.x+u.width,bottom:u.y+u.height})}function getInnerBoundingClientRect(u,n){var d=getBoundingClientRect(u,!1,n==="fixed");return d.top=d.top+u.clientTop,d.left=d.left+u.clientLeft,d.bottom=d.top+u.clientHeight,d.right=d.left+u.clientWidth,d.width=u.clientWidth,d.height=u.clientHeight,d.x=d.left,d.y=d.top,d}function getClientRectFromMixedType(u,n,d){return n===viewport?rectToClientRect(getViewportRect(u,d)):isElement$1(n)?getInnerBoundingClientRect(n,d):rectToClientRect(getDocumentRect(getDocumentElement(u)))}function getClippingParents(u){var n=listScrollParents(getParentNode(u)),d=["absolute","fixed"].indexOf(getComputedStyle$1(u).position)>=0,p=d&&isHTMLElement(u)?getOffsetParent(u):u;return isElement$1(p)?n.filter(function(m){return isElement$1(m)&&contains(m,p)&&getNodeName(m)!=="body"}):[]}function getClippingRect(u,n,d,p){var m=n==="clippingParents"?getClippingParents(u):[].concat(n),g=[].concat(m,[d]),y=g[0],b=g.reduce(function(S,E){var T=getClientRectFromMixedType(u,E,p);return S.top=max$1(T.top,S.top),S.right=min$1(T.right,S.right),S.bottom=min$1(T.bottom,S.bottom),S.left=max$1(T.left,S.left),S},getClientRectFromMixedType(u,y,p));return b.width=b.right-b.left,b.height=b.bottom-b.top,b.x=b.left,b.y=b.top,b}function computeOffsets(u){var n=u.reference,d=u.element,p=u.placement,m=p?getBasePlacement$1(p):null,g=p?getVariation(p):null,y=n.x+n.width/2-d.width/2,b=n.y+n.height/2-d.height/2,S;switch(m){case top:S={x:y,y:n.y-d.height};break;case bottom:S={x:y,y:n.y+n.height};break;case right:S={x:n.x+n.width,y:b};break;case left:S={x:n.x-d.width,y:b};break;default:S={x:n.x,y:n.y}}var E=m?getMainAxisFromPlacement(m):null;if(E!=null){var T=E==="y"?"height":"width";switch(g){case start:S[E]=S[E]-(n[T]/2-d[T]/2);break;case end:S[E]=S[E]+(n[T]/2-d[T]/2);break}}return S}function detectOverflow(u,n){n===void 0&&(n={});var d=n,p=d.placement,m=p===void 0?u.placement:p,g=d.strategy,y=g===void 0?u.strategy:g,b=d.boundary,S=b===void 0?clippingParents:b,E=d.rootBoundary,T=E===void 0?viewport:E,_=d.elementContext,R=_===void 0?popper:_,A=d.altBoundary,C=A===void 0?!1:A,k=d.padding,I=k===void 0?0:k,P=mergePaddingObject(typeof I!="number"?I:expandToHashMap(I,basePlacements)),D=R===popper?reference:popper,O=u.rects.popper,N=u.elements[C?D:R],j=getClippingRect(isElement$1(N)?N:N.contextElement||getDocumentElement(u.elements.popper),S,T,y),L=getBoundingClientRect(u.elements.reference),H=computeOffsets({reference:L,element:O,placement:m}),B=rectToClientRect(Object.assign({},O,H)),Y=R===popper?B:L,Z={top:j.top-Y.top+P.top,bottom:Y.bottom-j.bottom+P.bottom,left:j.left-Y.left+P.left,right:Y.right-j.right+P.right},Q=u.modifiersData.offset;if(R===popper&&Q){var J=Q[m];Object.keys(Z).forEach(function(re){var ne=[right,bottom].indexOf(re)>=0?1:-1,te=[top,bottom].indexOf(re)>=0?"y":"x";Z[re]+=J[te]*ne})}return Z}function computeAutoPlacement(u,n){n===void 0&&(n={});var d=n,p=d.placement,m=d.boundary,g=d.rootBoundary,y=d.padding,b=d.flipVariations,S=d.allowedAutoPlacements,E=S===void 0?placements:S,T=getVariation(p),_=T?b?variationPlacements:variationPlacements.filter(function(C){return getVariation(C)===T}):basePlacements,R=_.filter(function(C){return E.indexOf(C)>=0});R.length===0&&(R=_);var A=R.reduce(function(C,k){return C[k]=detectOverflow(u,{placement:k,boundary:m,rootBoundary:g,padding:y})[getBasePlacement$1(k)],C},{});return Object.keys(A).sort(function(C,k){return A[C]-A[k]})}function getExpandedFallbackPlacements(u){if(getBasePlacement$1(u)===auto)return[];var n=getOppositePlacement(u);return[getOppositeVariationPlacement(u),n,getOppositeVariationPlacement(n)]}function flip$1(u){var n=u.state,d=u.options,p=u.name;if(!n.modifiersData[p]._skip){for(var m=d.mainAxis,g=m===void 0?!0:m,y=d.altAxis,b=y===void 0?!0:y,S=d.fallbackPlacements,E=d.padding,T=d.boundary,_=d.rootBoundary,R=d.altBoundary,A=d.flipVariations,C=A===void 0?!0:A,k=d.allowedAutoPlacements,I=n.options.placement,P=getBasePlacement$1(I),D=P===I,O=S||(D||!C?[getOppositePlacement(I)]:getExpandedFallbackPlacements(I)),N=[I].concat(O).reduce(function(ce,oe){return ce.concat(getBasePlacement$1(oe)===auto?computeAutoPlacement(n,{placement:oe,boundary:T,rootBoundary:_,padding:E,flipVariations:C,allowedAutoPlacements:k}):oe)},[]),j=n.rects.reference,L=n.rects.popper,H=new Map,B=!0,Y=N[0],Z=0;Z<N.length;Z++){var Q=N[Z],J=getBasePlacement$1(Q),re=getVariation(Q)===start,ne=[top,bottom].indexOf(J)>=0,te=ne?"width":"height",F=detectOverflow(n,{placement:Q,boundary:T,rootBoundary:_,altBoundary:R,padding:E}),q=ne?re?right:left:re?bottom:top;j[te]>L[te]&&(q=getOppositePlacement(q));var V=getOppositePlacement(q),W=[];if(g&&W.push(F[J]<=0),b&&W.push(F[q]<=0,F[V]<=0),W.every(function(ce){return ce})){Y=Q,B=!1;break}H.set(Q,W)}if(B)for(var ee=C?3:1,se=function(oe){var de=N.find(function(fe){var me=H.get(fe);if(me)return me.slice(0,oe).every(function(he){return he})});if(de)return Y=de,"break"},ae=ee;ae>0;ae--){var le=se(ae);if(le==="break")break}n.placement!==Y&&(n.modifiersData[p]._skip=!0,n.placement=Y,n.reset=!0)}}const flip={name:"flip",enabled:!0,phase:"main",fn:flip$1,requiresIfExists:["offset"],data:{_skip:!1}};function getSideOffsets(u,n,d){return d===void 0&&(d={x:0,y:0}),{top:u.top-n.height-d.y,right:u.right-n.width+d.x,bottom:u.bottom-n.height+d.y,left:u.left-n.width-d.x}}function isAnySideFullyClipped(u){return[top,right,bottom,left].some(function(n){return u[n]>=0})}function hide$1(u){var n=u.state,d=u.name,p=n.rects.reference,m=n.rects.popper,g=n.modifiersData.preventOverflow,y=detectOverflow(n,{elementContext:"reference"}),b=detectOverflow(n,{altBoundary:!0}),S=getSideOffsets(y,p),E=getSideOffsets(b,m,g),T=isAnySideFullyClipped(S),_=isAnySideFullyClipped(E);n.modifiersData[d]={referenceClippingOffsets:S,popperEscapeOffsets:E,isReferenceHidden:T,hasPopperEscaped:_},n.attributes.popper=Object.assign({},n.attributes.popper,{"data-popper-reference-hidden":T,"data-popper-escaped":_})}const hide={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:hide$1};function distanceAndSkiddingToXY(u,n,d){var p=getBasePlacement$1(u),m=[left,top].indexOf(p)>=0?-1:1,g=typeof d=="function"?d(Object.assign({},n,{placement:u})):d,y=g[0],b=g[1];return y=y||0,b=(b||0)*m,[left,right].indexOf(p)>=0?{x:b,y}:{x:y,y:b}}function offset$1(u){var n=u.state,d=u.options,p=u.name,m=d.offset,g=m===void 0?[0,0]:m,y=placements.reduce(function(T,_){return T[_]=distanceAndSkiddingToXY(_,n.rects,g),T},{}),b=y[n.placement],S=b.x,E=b.y;n.modifiersData.popperOffsets!=null&&(n.modifiersData.popperOffsets.x+=S,n.modifiersData.popperOffsets.y+=E),n.modifiersData[p]=y}const offset={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:offset$1};function popperOffsets$1(u){var n=u.state,d=u.name;n.modifiersData[d]=computeOffsets({reference:n.rects.reference,element:n.rects.popper,placement:n.placement})}const popperOffsets={name:"popperOffsets",enabled:!0,phase:"read",fn:popperOffsets$1,data:{}};function getAltAxis(u){return u==="x"?"y":"x"}function preventOverflow$1(u){var n=u.state,d=u.options,p=u.name,m=d.mainAxis,g=m===void 0?!0:m,y=d.altAxis,b=y===void 0?!1:y,S=d.boundary,E=d.rootBoundary,T=d.altBoundary,_=d.padding,R=d.tether,A=R===void 0?!0:R,C=d.tetherOffset,k=C===void 0?0:C,I=detectOverflow(n,{boundary:S,rootBoundary:E,padding:_,altBoundary:T}),P=getBasePlacement$1(n.placement),D=getVariation(n.placement),O=!D,N=getMainAxisFromPlacement(P),j=getAltAxis(N),L=n.modifiersData.popperOffsets,H=n.rects.reference,B=n.rects.popper,Y=typeof k=="function"?k(Object.assign({},n.rects,{placement:n.placement})):k,Z=typeof Y=="number"?{mainAxis:Y,altAxis:Y}:Object.assign({mainAxis:0,altAxis:0},Y),Q=n.modifiersData.offset?n.modifiersData.offset[n.placement]:null,J={x:0,y:0};if(L){if(g){var re,ne=N==="y"?top:left,te=N==="y"?bottom:right,F=N==="y"?"height":"width",q=L[N],V=q+I[ne],W=q-I[te],ee=A?-B[F]/2:0,se=D===start?H[F]:B[F],ae=D===start?-B[F]:-H[F],le=n.elements.arrow,ce=A&&le?getLayoutRect(le):{width:0,height:0},oe=n.modifiersData["arrow#persistent"]?n.modifiersData["arrow#persistent"].padding:getFreshSideObject(),de=oe[ne],fe=oe[te],me=within(0,H[F],ce[F]),he=O?H[F]/2-ee-me-de-Z.mainAxis:se-me-de-Z.mainAxis,ge=O?-H[F]/2+ee+me+fe+Z.mainAxis:ae+me+fe+Z.mainAxis,ye=n.elements.arrow&&getOffsetParent(n.elements.arrow),Se=ye?N==="y"?ye.clientTop||0:ye.clientLeft||0:0,Te=(re=Q?.[N])!=null?re:0,ve=q+he-Te-Se,we=q+ge-Te,je=within(A?min$1(V,ve):V,q,A?max$1(W,we):W);L[N]=je,J[N]=je-q}if(b){var Ae,Me=N==="x"?top:left,Ie=N==="x"?bottom:right,Be=L[j],Ne=j==="y"?"height":"width",Le=Be+I[Me],De=Be-I[Ie],xe=[top,left].indexOf(P)!==-1,Oe=(Ae=Q?.[j])!=null?Ae:0,Ce=xe?Le:Be-H[Ne]-B[Ne]-Oe+Z.altAxis,He=xe?Be+H[Ne]+B[Ne]-Oe-Z.altAxis:De,Ue=A&&xe?withinMaxClamp(Ce,Be,He):within(A?Ce:Le,Be,A?He:De);L[j]=Ue,J[j]=Ue-Be}n.modifiersData[p]=J}}const preventOverflow={name:"preventOverflow",enabled:!0,phase:"main",fn:preventOverflow$1,requiresIfExists:["offset"]};function getHTMLElementScroll(u){return{scrollLeft:u.scrollLeft,scrollTop:u.scrollTop}}function getNodeScroll(u){return u===getWindow(u)||!isHTMLElement(u)?getWindowScroll(u):getHTMLElementScroll(u)}function isElementScaled(u){var n=u.getBoundingClientRect(),d=round(n.width)/u.offsetWidth||1,p=round(n.height)/u.offsetHeight||1;return d!==1||p!==1}function getCompositeRect(u,n,d){d===void 0&&(d=!1);var p=isHTMLElement(n),m=isHTMLElement(n)&&isElementScaled(n),g=getDocumentElement(n),y=getBoundingClientRect(u,m,d),b={scrollLeft:0,scrollTop:0},S={x:0,y:0};return(p||!p&&!d)&&((getNodeName(n)!=="body"||isScrollParent(g))&&(b=getNodeScroll(n)),isHTMLElement(n)?(S=getBoundingClientRect(n,!0),S.x+=n.clientLeft,S.y+=n.clientTop):g&&(S.x=getWindowScrollBarX(g))),{x:y.left+b.scrollLeft-S.x,y:y.top+b.scrollTop-S.y,width:y.width,height:y.height}}function order(u){var n=new Map,d=new Set,p=[];u.forEach(function(g){n.set(g.name,g)});function m(g){d.add(g.name);var y=[].concat(g.requires||[],g.requiresIfExists||[]);y.forEach(function(b){if(!d.has(b)){var S=n.get(b);S&&m(S)}}),p.push(g)}return u.forEach(function(g){d.has(g.name)||m(g)}),p}function orderModifiers(u){var n=order(u);return modifierPhases.reduce(function(d,p){return d.concat(n.filter(function(m){return m.phase===p}))},[])}function debounce$1(u){var n;return function(){return n||(n=new Promise(function(d){Promise.resolve().then(function(){n=void 0,d(u())})})),n}}function mergeByName(u){var n=u.reduce(function(d,p){var m=d[p.name];return d[p.name]=m?Object.assign({},m,p,{options:Object.assign({},m.options,p.options),data:Object.assign({},m.data,p.data)}):p,d},{});return Object.keys(n).map(function(d){return n[d]})}var DEFAULT_OPTIONS={placement:"bottom",modifiers:[],strategy:"absolute"};function areValidElements(){for(var u=arguments.length,n=new Array(u),d=0;d<u;d++)n[d]=arguments[d];return!n.some(function(p){return!(p&&typeof p.getBoundingClientRect=="function")})}function popperGenerator(u){u===void 0&&(u={});var n=u,d=n.defaultModifiers,p=d===void 0?[]:d,m=n.defaultOptions,g=m===void 0?DEFAULT_OPTIONS:m;return function(b,S,E){E===void 0&&(E=g);var T={placement:"bottom",orderedModifiers:[],options:Object.assign({},DEFAULT_OPTIONS,g),modifiersData:{},elements:{reference:b,popper:S},attributes:{},styles:{}},_=[],R=!1,A={state:T,setOptions:function(P){var D=typeof P=="function"?P(T.options):P;k(),T.options=Object.assign({},g,T.options,D),T.scrollParents={reference:isElement$1(b)?listScrollParents(b):b.contextElement?listScrollParents(b.contextElement):[],popper:listScrollParents(S)};var O=orderModifiers(mergeByName([].concat(p,T.options.modifiers)));return T.orderedModifiers=O.filter(function(N){return N.enabled}),C(),A.update()},forceUpdate:function(){if(!R){var P=T.elements,D=P.reference,O=P.popper;if(areValidElements(D,O)){T.rects={reference:getCompositeRect(D,getOffsetParent(O),T.options.strategy==="fixed"),popper:getLayoutRect(O)},T.reset=!1,T.placement=T.options.placement,T.orderedModifiers.forEach(function(Z){return T.modifiersData[Z.name]=Object.assign({},Z.data)});for(var N=0;N<T.orderedModifiers.length;N++){if(T.reset===!0){T.reset=!1,N=-1;continue}var j=T.orderedModifiers[N],L=j.fn,H=j.options,B=H===void 0?{}:H,Y=j.name;typeof L=="function"&&(T=L({state:T,options:B,name:Y,instance:A})||T)}}}},update:debounce$1(function(){return new Promise(function(I){A.forceUpdate(),I(T)})}),destroy:function(){k(),R=!0}};if(!areValidElements(b,S))return A;A.setOptions(E).then(function(I){!R&&E.onFirstUpdate&&E.onFirstUpdate(I)});function C(){T.orderedModifiers.forEach(function(I){var P=I.name,D=I.options,O=D===void 0?{}:D,N=I.effect;if(typeof N=="function"){var j=N({state:T,name:P,instance:A,options:O}),L=function(){};_.push(j||L)}})}function k(){_.forEach(function(I){return I()}),_=[]}return A}}var defaultModifiers=[eventListeners,popperOffsets,computeStyles,applyStyles,offset,flip,preventOverflow,arrow,hide],createPopper=popperGenerator({defaultModifiers}),BOX_CLASS="tippy-box",CONTENT_CLASS="tippy-content",BACKDROP_CLASS="tippy-backdrop",ARROW_CLASS="tippy-arrow",SVG_ARROW_CLASS="tippy-svg-arrow",TOUCH_OPTIONS={passive:!0,capture:!0},TIPPY_DEFAULT_APPEND_TO=function u(){return document.body};function hasOwnProperty(u,n){return{}.hasOwnProperty.call(u,n)}function getValueAtIndexOrReturn(u,n,d){if(Array.isArray(u)){var p=u[n];return p??(Array.isArray(d)?d[n]:d)}return u}function isType(u,n){var d={}.toString.call(u);return d.indexOf("[object")===0&&d.indexOf(n+"]")>-1}function invokeWithArgsOrReturn(u,n){return typeof u=="function"?u.apply(void 0,n):u}function debounce(u,n){if(n===0)return u;var d;return function(p){clearTimeout(d),d=setTimeout(function(){u(p)},n)}}function removeProperties(u,n){var d=Object.assign({},u);return n.forEach(function(p){delete d[p]}),d}function splitBySpaces(u){return u.split(/\s+/).filter(Boolean)}function normalizeToArray(u){return[].concat(u)}function pushIfUnique(u,n){u.indexOf(n)===-1&&u.push(n)}function unique(u){return u.filter(function(n,d){return u.indexOf(n)===d})}function getBasePlacement(u){return u.split("-")[0]}function arrayFrom(u){return[].slice.call(u)}function removeUndefinedProps(u){return Object.keys(u).reduce(function(n,d){return u[d]!==void 0&&(n[d]=u[d]),n},{})}function div(){return document.createElement("div")}function isElement(u){return["Element","Fragment"].some(function(n){return isType(u,n)})}function isNodeList(u){return isType(u,"NodeList")}function isMouseEvent(u){return isType(u,"MouseEvent")}function isReferenceElement(u){return!!(u&&u._tippy&&u._tippy.reference===u)}function getArrayOfElements(u){return isElement(u)?[u]:isNodeList(u)?arrayFrom(u):Array.isArray(u)?u:arrayFrom(document.querySelectorAll(u))}function setTransitionDuration(u,n){u.forEach(function(d){d&&(d.style.transitionDuration=n+"ms")})}function setVisibilityState(u,n){u.forEach(function(d){d&&d.setAttribute("data-state",n)})}function getOwnerDocument(u){var n,d=normalizeToArray(u),p=d[0];return p!=null&&(n=p.ownerDocument)!=null&&n.body?p.ownerDocument:document}function isCursorOutsideInteractiveBorder(u,n){var d=n.clientX,p=n.clientY;return u.every(function(m){var g=m.popperRect,y=m.popperState,b=m.props,S=b.interactiveBorder,E=getBasePlacement(y.placement),T=y.modifiersData.offset;if(!T)return!0;var _=E==="bottom"?T.top.y:0,R=E==="top"?T.bottom.y:0,A=E==="right"?T.left.x:0,C=E==="left"?T.right.x:0,k=g.top-p+_>S,I=p-g.bottom-R>S,P=g.left-d+A>S,D=d-g.right-C>S;return k||I||P||D})}function updateTransitionEndListener(u,n,d){var p=n+"EventListener";["transitionend","webkitTransitionEnd"].forEach(function(m){u[p](m,d)})}function actualContains(u,n){for(var d=n;d;){var p;if(u.contains(d))return!0;d=d.getRootNode==null||(p=d.getRootNode())==null?void 0:p.host}return!1}var currentInput={isTouch:!1},lastMouseMoveTime=0;function onDocumentTouchStart(){currentInput.isTouch||(currentInput.isTouch=!0,window.performance&&document.addEventListener("mousemove",onDocumentMouseMove))}function onDocumentMouseMove(){var u=performance.now();u-lastMouseMoveTime<20&&(currentInput.isTouch=!1,document.removeEventListener("mousemove",onDocumentMouseMove)),lastMouseMoveTime=u}function onWindowBlur(){var u=document.activeElement;if(isReferenceElement(u)){var n=u._tippy;u.blur&&!n.state.isVisible&&u.blur()}}function bindGlobalEventListeners(){document.addEventListener("touchstart",onDocumentTouchStart,TOUCH_OPTIONS),window.addEventListener("blur",onWindowBlur)}var isBrowser$1=typeof window<"u"&&typeof document<"u",isIE11=isBrowser$1?!!window.msCrypto:!1;function createMemoryLeakWarning(u){var n=u==="destroy"?"n already-":" ";return[u+"() was called on a"+n+"destroyed instance. This is a no-op but","indicates a potential memory leak."].join(" ")}function clean(u){var n=/[ \t]{2,}/g,d=/^[ \t]*/gm;return u.replace(n," ").replace(d,"").trim()}function getDevMessage(u){return clean(`
221
221
  %ctippy.js
222
222
 
@@ -237,7 +237,7 @@ Defaulting to \`null\`.`}var Root$1=Progress$1,Indicator=ProgressIndicator;funct
237
237
  `,"Instead, pass the .innerHTML of the element, or use a function that","returns a cloned version of the element instead.",`
238
238
 
239
239
  `,`1) content: element.innerHTML
240
- `,"2) content: () => element.cloneNode(true)"].join(" "))}var b=m.reduce(function(S,E){var T=E&&createTippy(E,p);return T&&S.push(T),S},[]);return isElement(u)?b[0]:b}tippy.defaultProps=defaultProps;tippy.setDefaultProps=setDefaultProps;tippy.currentInput=currentInput;Object.assign({},applyStyles,{effect:function u(n){var d=n.state,p={popper:{position:d.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(d.elements.popper.style,p.popper),d.styles=p,d.elements.arrow&&Object.assign(d.elements.arrow.style,p.arrow)}});tippy.setDefaultProps({render});function getSuggestionOptions({editor:u,overrideSuggestionOptions:n,extensionName:d,char:p="@"}){return{editor:u,char:p,pluginKey:new PluginKey,command:({editor:m,range:g,props:y})=>{const E=m.getText()?.replace(WHITESPACE_REGEX," ")?.trim()?.lastIndexOf(p);m.view.state.selection.$to.nodeAfter?.text?.startsWith(" ")&&(g.to+=1),m.chain().focus().insertContentAt(g,[{type:d,attrs:{...y,mentionSuggestionChar:p,matchStartPosition:E}},{type:"text",text:" "}]).run(),m.view.dom.ownerDocument.defaultView?.getSelection()?.collapseToEnd()},allow:({state:m,range:g})=>{const y=m.doc.resolve(g.from),b=m.schema.nodes[d];return!!y.parent.type.contentMatch.matchType(b)},...n}}function getSuggestions(u){return(u.options.suggestions.length?u.options.suggestions:[u.options.suggestion]).map(n=>getSuggestionOptions({editor:u.editor,overrideSuggestionOptions:n,extensionName:u.name,char:n.char}))}function getSuggestionFromChar(u,n){const d=getSuggestions(u),p=d.find(m=>m.char===n);return p||(d.length?d[0]:null)}const Mention=Node3.create({name:"mention",priority:101,addOptions(){return{HTMLAttributes:{},renderText({node:u,suggestion:n}){return`${n?.char??"@"}${u.attrs.label??u.attrs.id}`},deleteTriggerWithBackspace:!1,renderHTML({options:u,node:n,suggestion:d}){return["span",mergeAttributes(this.HTMLAttributes,u.HTMLAttributes),`${d?.char??"@"}${n.attrs.label??n.attrs.id}`]},suggestions:[],suggestion:{}}},group:"inline",inline:!0,selectable:!1,atom:!0,addAttributes(){return{id:{default:null,parseHTML:u=>u.getAttribute("data-mention-id"),renderHTML:u=>u.id?{"data-mention-id":u.id}:{}},label:{default:null,parseHTML:u=>u.getAttribute("data-mention-label"),renderHTML:u=>u.label?{"data-mention-label":u.label}:{}},mentionSuggestionChar:{default:"@",parseHTML:u=>u.getAttribute("data-mention-suggestion-char"),renderHTML:u=>({"data-mention-suggestion-char":u.mentionSuggestionChar})},avatar:{default:null,parseHTML:u=>u.getAttribute("data-mention-avatar"),renderHTML:u=>u.avatar?{"data-mention-avatar":u.avatar}:{}},inThisThread:{default:1,parseHTML:u=>u.getAttribute("data-mention-in-this-thread"),renderHTML:u=>u.inThisThread?{"data-mention-in-this-thread":u.inThisThread}:{}},name:{default:null,parseHTML:u=>u.getAttribute("data-mention-name"),renderHTML:u=>u.name?{"data-mention-name":u.name}:{}},selectId:{default:null,parseHTML:u=>u.getAttribute("data-mention-select-id"),renderHTML:u=>u.selectId?{"data-mention-select-id":u.selectId}:{}},type:{default:null,parseHTML:u=>u.getAttribute("data-mention-type"),renderHTML:u=>u.type?{"data-mention-type":u.type}:{}},from:{default:PostType.Post,parseHTML:u=>u.getAttribute("data-mention-from"),renderHTML:u=>u.from?{"data-mention-from":u.from}:{}},isCrossExposureEnable:{default:null,parseHTML:u=>u.getAttribute("data-mention-is-cross-exposure-enable"),renderHTML:u=>u.isCrossExposureEnable?{"data-mention-is-cross-exposure-enable":u.isCrossExposureEnable}:{}},matchStartPosition:{default:-1,parseHTML:u=>u.getAttribute("data-mention-match-start-position"),renderHTML:u=>u.matchStartPosition?{"data-mention-match-start-position":u.matchStartPosition}:{}}}},parseHTML(){return[{tag:'span[data-type="mention"]'},{tag:'a[data-type="mention"]'}]},renderHTML({node:u,HTMLAttributes:n}){const d=getSuggestionFromChar(this,u.attrs.mentionSuggestionChar);if(this.options.renderLabel!==void 0)return["span",mergeAttributes({"data-type":this.name},this.options.HTMLAttributes,n),this.options.renderLabel({options:this.options,node:u,suggestion:d})];const p={...this.options},m=this.editor?.isFocused;p.HTMLAttributes=mergeAttributes({"data-type":this.name},this.options.HTMLAttributes,n);const g=this.options.renderHTML({options:p,node:u,suggestion:d,isFocused:m});return typeof g=="string"?["span",mergeAttributes({"data-type":this.name},this.options.HTMLAttributes,n),g]:g},renderText({node:u}){const n={options:this.options,node:u,suggestion:getSuggestionFromChar(this,u.attrs.mentionSuggestionChar)};return this.options.renderLabel!==void 0?this.options.renderLabel(n):this.options.renderText(n)},addKeyboardShortcuts(){return{Backspace:()=>this.editor.commands.command(({tr:u,state:n})=>{let d=!1;const{selection:p}=n,{empty:m,anchor:g}=p;if(!m)return!1;let y=new Node$1,b=0;return n.doc.nodesBetween(g-1,g,(S,E)=>{if(S.type.name===this.name)return d=!0,y=S,b=E,!1}),d&&u.insertText(this.options.deleteTriggerWithBackspace?"":y.attrs.mentionSuggestionChar,b,b+y.nodeSize),d})}},addProseMirrorPlugins(){return getSuggestions(this).map(Suggestion)}});var removeAccents$1={exports:{}},hasRequiredRemoveAccents;function requireRemoveAccents(){if(hasRequiredRemoveAccents)return removeAccents$1.exports;hasRequiredRemoveAccents=1;var u={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",Ấ:"A",Ắ:"A",Ẳ:"A",Ẵ:"A",Ặ:"A",Æ:"AE",Ầ:"A",Ằ:"A",Ȃ:"A",Ả:"A",Ạ:"A",Ẩ:"A",Ẫ:"A",Ậ:"A",Ç:"C",Ḉ:"C",È:"E",É:"E",Ê:"E",Ë:"E",Ế:"E",Ḗ:"E",Ề:"E",Ḕ:"E",Ḝ:"E",Ȇ:"E",Ẻ:"E",Ẽ:"E",Ẹ:"E",Ể:"E",Ễ:"E",Ệ:"E",Ì:"I",Í:"I",Î:"I",Ï:"I",Ḯ:"I",Ȋ:"I",Ỉ:"I",Ị:"I",Ð:"D",Ñ:"N",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",Ố:"O",Ṍ:"O",Ṓ:"O",Ȏ:"O",Ỏ:"O",Ọ:"O",Ổ:"O",Ỗ:"O",Ộ:"O",Ờ:"O",Ở:"O",Ỡ:"O",Ớ:"O",Ợ:"O",Ù:"U",Ú:"U",Û:"U",Ü:"U",Ủ:"U",Ụ:"U",Ử:"U",Ữ:"U",Ự:"U",Ý:"Y",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",ấ:"a",ắ:"a",ẳ:"a",ẵ:"a",ặ:"a",æ:"ae",ầ:"a",ằ:"a",ȃ:"a",ả:"a",ạ:"a",ẩ:"a",ẫ:"a",ậ:"a",ç:"c",ḉ:"c",è:"e",é:"e",ê:"e",ë:"e",ế:"e",ḗ:"e",ề:"e",ḕ:"e",ḝ:"e",ȇ:"e",ẻ:"e",ẽ:"e",ẹ:"e",ể:"e",ễ:"e",ệ:"e",ì:"i",í:"i",î:"i",ï:"i",ḯ:"i",ȋ:"i",ỉ:"i",ị:"i",ð:"d",ñ:"n",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",ố:"o",ṍ:"o",ṓ:"o",ȏ:"o",ỏ:"o",ọ:"o",ổ:"o",ỗ:"o",ộ:"o",ờ:"o",ở:"o",ỡ:"o",ớ:"o",ợ:"o",ù:"u",ú:"u",û:"u",ü:"u",ủ:"u",ụ:"u",ử:"u",ữ:"u",ự:"u",ý:"y",ÿ:"y",Ā:"A",ā:"a",Ă:"A",ă:"a",Ą:"A",ą:"a",Ć:"C",ć:"c",Ĉ:"C",ĉ:"c",Ċ:"C",ċ:"c",Č:"C",č:"c",C̆:"C",c̆:"c",Ď:"D",ď:"d",Đ:"D",đ:"d",Ē:"E",ē:"e",Ĕ:"E",ĕ:"e",Ė:"E",ė:"e",Ę:"E",ę:"e",Ě:"E",ě:"e",Ĝ:"G",Ǵ:"G",ĝ:"g",ǵ:"g",Ğ:"G",ğ:"g",Ġ:"G",ġ:"g",Ģ:"G",ģ:"g",Ĥ:"H",ĥ:"h",Ħ:"H",ħ:"h",Ḫ:"H",ḫ:"h",Ĩ:"I",ĩ:"i",Ī:"I",ī:"i",Ĭ:"I",ĭ:"i",Į:"I",į:"i",İ:"I",ı:"i",IJ:"IJ",ij:"ij",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",Ḱ:"K",ḱ:"k",K̆:"K",k̆:"k",Ĺ:"L",ĺ:"l",Ļ:"L",ļ:"l",Ľ:"L",ľ:"l",Ŀ:"L",ŀ:"l",Ł:"l",ł:"l",Ḿ:"M",ḿ:"m",M̆:"M",m̆:"m",Ń:"N",ń:"n",Ņ:"N",ņ:"n",Ň:"N",ň:"n",ʼn:"n",N̆:"N",n̆:"n",Ō:"O",ō:"o",Ŏ:"O",ŏ:"o",Ő:"O",ő:"o",Œ:"OE",œ:"oe",P̆:"P",p̆:"p",Ŕ:"R",ŕ:"r",Ŗ:"R",ŗ:"r",Ř:"R",ř:"r",R̆:"R",r̆:"r",Ȓ:"R",ȓ:"r",Ś:"S",ś:"s",Ŝ:"S",ŝ:"s",Ş:"S",Ș:"S",ș:"s",ş:"s",Š:"S",š:"s",Ţ:"T",ţ:"t",ț:"t",Ț:"T",Ť:"T",ť:"t",Ŧ:"T",ŧ:"t",T̆:"T",t̆:"t",Ũ:"U",ũ:"u",Ū:"U",ū:"u",Ŭ:"U",ŭ:"u",Ů:"U",ů:"u",Ű:"U",ű:"u",Ų:"U",ų:"u",Ȗ:"U",ȗ:"u",V̆:"V",v̆:"v",Ŵ:"W",ŵ:"w",Ẃ:"W",ẃ:"w",X̆:"X",x̆:"x",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Y̆:"Y",y̆:"y",Ź:"Z",ź:"z",Ż:"Z",ż:"z",Ž:"Z",ž:"z",ſ:"s",ƒ:"f",Ơ:"O",ơ:"o",Ư:"U",ư:"u",Ǎ:"A",ǎ:"a",Ǐ:"I",ǐ:"i",Ǒ:"O",ǒ:"o",Ǔ:"U",ǔ:"u",Ǖ:"U",ǖ:"u",Ǘ:"U",ǘ:"u",Ǚ:"U",ǚ:"u",Ǜ:"U",ǜ:"u",Ứ:"U",ứ:"u",Ṹ:"U",ṹ:"u",Ǻ:"A",ǻ:"a",Ǽ:"AE",ǽ:"ae",Ǿ:"O",ǿ:"o",Þ:"TH",þ:"th",Ṕ:"P",ṕ:"p",Ṥ:"S",ṥ:"s",X́:"X",x́:"x",Ѓ:"Г",ѓ:"г",Ќ:"К",ќ:"к",A̋:"A",a̋:"a",E̋:"E",e̋:"e",I̋:"I",i̋:"i",Ǹ:"N",ǹ:"n",Ồ:"O",ồ:"o",Ṑ:"O",ṑ:"o",Ừ:"U",ừ:"u",Ẁ:"W",ẁ:"w",Ỳ:"Y",ỳ:"y",Ȁ:"A",ȁ:"a",Ȅ:"E",ȅ:"e",Ȉ:"I",ȉ:"i",Ȍ:"O",ȍ:"o",Ȑ:"R",ȑ:"r",Ȕ:"U",ȕ:"u",B̌:"B",b̌:"b",Č̣:"C",č̣:"c",Ê̌:"E",ê̌:"e",F̌:"F",f̌:"f",Ǧ:"G",ǧ:"g",Ȟ:"H",ȟ:"h",J̌:"J",ǰ:"j",Ǩ:"K",ǩ:"k",M̌:"M",m̌:"m",P̌:"P",p̌:"p",Q̌:"Q",q̌:"q",Ř̩:"R",ř̩:"r",Ṧ:"S",ṧ:"s",V̌:"V",v̌:"v",W̌:"W",w̌:"w",X̌:"X",x̌:"x",Y̌:"Y",y̌:"y",A̧:"A",a̧:"a",B̧:"B",b̧:"b",Ḑ:"D",ḑ:"d",Ȩ:"E",ȩ:"e",Ɛ̧:"E",ɛ̧:"e",Ḩ:"H",ḩ:"h",I̧:"I",i̧:"i",Ɨ̧:"I",ɨ̧:"i",M̧:"M",m̧:"m",O̧:"O",o̧:"o",Q̧:"Q",q̧:"q",U̧:"U",u̧:"u",X̧:"X",x̧:"x",Z̧:"Z",z̧:"z",й:"и",Й:"И",ё:"е",Ё:"Е"},n=Object.keys(u).join("|"),d=new RegExp(n,"g"),p=new RegExp(n,"");function m(b){return u[b]}var g=function(b){return b.replace(d,m)},y=function(b){return!!b.match(p)};return removeAccents$1.exports=g,removeAccents$1.exports.has=y,removeAccents$1.exports.remove=g,removeAccents$1.exports}var removeAccentsExports=requireRemoveAccents();const removeAccents=getDefaultExportFromCjs(removeAccentsExports);const rankings={CASE_SENSITIVE_EQUAL:7,EQUAL:6,STARTS_WITH:5,WORD_STARTS_WITH:4,CONTAINS:3,ACRONYM:2,MATCHES:1,NO_MATCH:0},defaultBaseSortFn=(u,n)=>String(u.rankedValue).localeCompare(String(n.rankedValue));function matchSorter(u,n,d={}){const{keys:p,threshold:m=rankings.MATCHES,baseSort:g=defaultBaseSortFn,sorter:y=E=>E.sort((T,_)=>sortRankedValues(T,_,g))}=d,b=u.reduce(S,[]);return y(b).map(({item:E})=>E);function S(E,T,_){const R=getHighestRanking(T,p,n,d),{rank:A,keyThreshold:C=m}=R;return A>=C&&E.push({...R,item:T,index:_}),E}}matchSorter.rankings=rankings;function getHighestRanking(u,n,d,p){if(!n){const g=u;return{rankedValue:g,rank:getMatchRanking(g,d,p),keyIndex:-1,keyThreshold:p.threshold}}return getAllValuesToRank(u,n).reduce(({rank:g,rankedValue:y,keyIndex:b,keyThreshold:S},{itemValue:E,attributes:T},_)=>{let R=getMatchRanking(E,d,p),A=y;const{minRanking:C,maxRanking:k,threshold:I}=T;return R<C&&R>=rankings.MATCHES?R=C:R>k&&(R=k),R>g&&(g=R,b=_,S=I,A=E),{rankedValue:A,rank:g,keyIndex:b,keyThreshold:S}},{rankedValue:u,rank:rankings.NO_MATCH,keyIndex:-1,keyThreshold:p.threshold})}function*indexesOf(u,n){let d=-1;for(;(d=u.indexOf(n,d+1))>-1;)yield d;return-1}function getMatchRanking(u,n,d){if(u=prepareValueForComparison(u,d),n=prepareValueForComparison(n,d),n.length>u.length)return rankings.NO_MATCH;if(u===n)return rankings.CASE_SENSITIVE_EQUAL;u=u.toLowerCase(),n=n.toLowerCase();const p=indexesOf(u,n),m=p.next(),g=m.value;if(u.length===n.length&&g===0)return rankings.EQUAL;if(g===0)return rankings.STARTS_WITH;let y=m;for(;!y.done;){if(y.value>0&&u[y.value-1]===" ")return rankings.WORD_STARTS_WITH;y=p.next()}return g>0?rankings.CONTAINS:n.length===1?rankings.NO_MATCH:getAcronym(u).includes(n)?rankings.ACRONYM:getClosenessRanking(u,n)}function getAcronym(u){let n="",d=" ";for(let p=0;p<u.length;p++){const m=u.charAt(p);(d===" "||d==="-")&&!(m===" "||m==="-")&&(n+=m),d=m}return n}function getClosenessRanking(u,n){let d=0,p=0;function m(S,E,T){for(let _=T,R=E.length;_<R;_++)if(E[_]===S)return d+=1,_+1;return-1}function g(S){const E=1/S,T=d/n.length;return rankings.MATCHES+T*E}const y=m(n[0],u,0);if(y<0)return rankings.NO_MATCH;p=y;for(let S=1,E=n.length;S<E;S++){const T=n[S];if(p=m(T,u,p),!(p>-1))return rankings.NO_MATCH}const b=p-y;return g(b)}function sortRankedValues(u,n,d){const{rank:g,keyIndex:y}=u,{rank:b,keyIndex:S}=n;return g===b?y===S?d(u,n):y<S?-1:1:g>b?-1:1}function prepareValueForComparison(u,{keepDiacritics:n}){return u=`${u}`,n||(u=removeAccents(u)),u}function getItemValues(u,n){typeof n=="object"&&(n=n.key);let d;if(typeof n=="function")d=n(u);else if(u==null)d=null;else if(Object.hasOwnProperty.call(u,n))d=u[n];else{if(n.includes("."))return getNestedValues(n,u);d=null}return d==null?[]:Array.isArray(d)?d:[String(d)]}function getNestedValues(u,n){const d=u.split(".");let p=[n];for(let m=0,g=d.length;m<g;m++){const y=d[m];let b=[];for(let S=0,E=p.length;S<E;S++){const T=p[S];if(T!=null)if(Object.hasOwnProperty.call(T,y)){const _=T[y];_!=null&&b.push(_)}else y==="*"&&(b=b.concat(T))}p=b}return Array.isArray(p[0])?[].concat(...p):p}function getAllValuesToRank(u,n){const d=[];for(let p=0,m=n.length;p<m;p++){const g=n[p],y=getKeyAttributes(g),b=getItemValues(u,g);for(let S=0,E=b.length;S<E;S++)d.push({itemValue:b[S],attributes:y})}return d}const defaultKeyAttributes={maxRanking:1/0,minRanking:-1/0};function getKeyAttributes(u){return typeof u=="string"?defaultKeyAttributes:{...defaultKeyAttributes,...u}}const MentionList=React.forwardRef((u,n)=>{const[d,p]=React.useState(0),m=React.useRef([]),g=u.char==="@",y=React.useMemo(()=>u.query?g?matchSorter(u.items,u.query,{keys:["label","email"],threshold:matchSorter.rankings.CONTAINS}):matchSorter(u.items,u.query,{keys:["label","selectId",_=>_.selectId?.replace(/[^a-z0-9]/gi,"")??""],threshold:matchSorter.rankings.CONTAINS}):u.items,[u.items,u.query,g]),b=_=>{const R=y[_];R&&u.command({...R,id:R?.id,label:R?.label})},S=()=>{p(_=>(_+y.length-1)%y.length)},E=()=>{p(_=>(_+1)%y.length)},T=()=>{b(d)};return React.useEffect(()=>{p(0)},[y]),React.useEffect(()=>{const _=m.current[d];_&&_.scrollIntoView({block:"nearest",behavior:"instant"})},[d]),React.useImperativeHandle(n,()=>({onKeyDown:_=>_.key==="ArrowUp"?(S(),!0):_.key==="ArrowDown"?(E(),!0):_.key==="Enter"&&y.length>0?(T(),!0):!1})),jsxRuntime.jsxs("div",{className:"w-80 rounded-lg border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800 shadow-lg overflow-hidden",children:[jsxRuntime.jsx("div",{className:"px-3 py-2 border-b border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-900/50",children:jsxRuntime.jsxs("div",{className:"flex items-center gap-2",children:[jsxRuntime.jsx("svg",{className:"h-4 w-4 text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:jsxRuntime.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})}),jsxRuntime.jsx("span",{className:"text-sm text-gray-600 dark:text-gray-300",children:u.query?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:["Searching for: ",jsxRuntime.jsx("span",{className:"font-medium",children:u.query})]}):`Search ${g?"users":"hashtags"}...`})]})}),jsxRuntime.jsxs("div",{className:"px-3 py-1.5 text-xs font-semibold text-gray-500 dark:text-gray-400 uppercase tracking-wider bg-gray-50 dark:bg-gray-900/50",children:[g?"Users":"Hashtags"," (",y.length,")"]}),jsxRuntime.jsx("ul",{className:"max-h-64 overflow-y-auto",children:y.length===0?jsxRuntime.jsx("div",{className:"p-4 text-center text-sm text-gray-500 dark:text-gray-400",children:u.query?`No ${g?"users":"hashtags"} found for "${u.query}"`:`No ${g?"users":"hashtags"} found`}):jsxRuntime.jsx("div",{className:"p-1",children:y.map((_,R)=>jsxRuntime.jsxs("li",{ref:A=>{m.current[R]=A},onClick:()=>b(R),className:`flex items-center gap-3 px-3 py-2.5 cursor-pointer rounded-md transition-colors ${d===R?"bg-blue-50 dark:bg-blue-900/20":"hover:bg-gray-50 dark:hover:bg-gray-700/50"}`,children:[jsxRuntime.jsx(Avatar,{className:"size-9 shrink-0 bg-linear-to-br from-blue-400 to-blue-600",children:_.avatar?jsxRuntime.jsx(AvatarImage,{src:_.avatar,alt:_.label}):jsxRuntime.jsx(AvatarFallback,{className:"text-white bg-transparent font-medium text-sm",children:_.label?.charAt(0).toUpperCase()})}),jsxRuntime.jsx("div",{className:"flex flex-col min-w-0 flex-1",children:g?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("span",{className:"font-medium text-sm text-gray-900 dark:text-gray-100 truncate",children:_.label}),_.email&&jsxRuntime.jsx("span",{className:"text-xs text-gray-500 dark:text-gray-400 truncate",children:_.email})]}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("span",{className:"font-medium text-sm text-gray-900 dark:text-gray-100 truncate",children:["#",_.label]}),_.selectId&&jsxRuntime.jsx("span",{className:"text-xs text-gray-500 dark:text-gray-400 truncate",children:_.selectId})]})})]},_.id))})}),jsxRuntime.jsx("div",{className:"px-3 py-2 border-t border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-900/50",children:jsxRuntime.jsxs("div",{className:"flex items-center gap-3 text-xs text-gray-500 dark:text-gray-400",children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-1",children:[jsxRuntime.jsx("kbd",{className:"px-1.5 py-0.5 bg-white dark:bg-gray-800 border border-gray-300 dark:border-gray-600 rounded text-xs",children:"↑↓"}),jsxRuntime.jsx("span",{children:"Navigate"})]}),jsxRuntime.jsxs("div",{className:"flex items-center gap-1",children:[jsxRuntime.jsx("kbd",{className:"px-1.5 py-0.5 bg-white dark:bg-gray-800 border border-gray-300 dark:border-gray-600 rounded text-xs",children:"↵"}),jsxRuntime.jsx("span",{children:"Select"})]}),jsxRuntime.jsxs("div",{className:"flex items-center gap-1",children:[jsxRuntime.jsx("kbd",{className:"px-1.5 py-0.5 bg-white dark:bg-gray-800 border border-gray-300 dark:border-gray-600 rounded text-xs",children:"Esc"}),jsxRuntime.jsx("span",{children:"Close"})]})]})})]})});MentionList.displayName="MentionList";const isReactNativeWebView=()=>typeof window<"u"&&window.ReactNativeWebView!==void 0,mentionService=(u,n,d,p)=>({fetchMentions:async()=>{const y=d.getState().getMentionParams();if(!y)return[];const{groupId:b,postId:S}=y,T=(S?await n.getRecommendationPost(b,S,0,999):await n.getRecommendationGroup(b,0,999)).entries?.filter(_=>!!_?.user_details)?.map(_=>({id:_?.user_details?.id,label:_?.user_details?.name,avatar:_?.user_details?.avatar,inThisThread:1,name:_?.user_details?.name,selectId:_.user_details?.username,type:MentionType.User,from:PostType.Post}))??[];if(p){const _={id:p.id,label:p.name,avatar:p.avatar,inThisThread:1,name:p.name,selectId:p.username,type:MentionType.User,from:PostType.Post},R=T.filter(A=>A.id!==p.id);return[_,...R]}return T},fetchHashtags:async()=>{const{selectedGroupId:y,groupId:b}=d.getState();return y??b?(await u.fetchConversationList(999,0)).map(T=>({id:T?.conversation_id,label:T?.conversation_detail?.name,avatar:T?.conversation_detail?.avatar,inThisThread:1,name:T?.conversation_detail?.name,selectId:T?.conversation_detail?.select_id,type:MentionType.Group,from:PostType.Post,isCrossExposureEnable:T?.conversation_detail?.allow_cross_exposure})):[]}});function createSuggestion(u,n){return{char:u,items:async()=>await n(),render:()=>{let d,p;return{onStart:m=>{d=new ReactRenderer(MentionList,{props:{...m,char:u},editor:m.editor}),m.clientRect&&(p=tippy("body",{getReferenceClientRect:m.clientRect,appendTo:()=>document.body,theme:"select-post-builder",content:d.element,showOnCreate:!0,interactive:!0,trigger:"manual",placement:"bottom-start"}))},onUpdate(m){d.updateProps({...m,char:u}),!(!m.clientRect||!p?.[0])&&p[0].setProps({getReferenceClientRect:m.clientRect})},onKeyDown(m){return m.event.key==="Escape"?(p?.[0]?.hide(),!0):d?.ref?.onKeyDown(m.event)??!1},onExit(){p?.[0]?.destroy(),d?.destroy()}}}}}const configureMentionExtension=(u,n,d,p)=>{const m=mentionService(u,n,d,p);return Mention.configure({HTMLAttributes:{class:"inline-block px-1.5 py-0.5 rounded font-medium no-underline cursor-pointer transition-all duration-200"},renderText({node:g,suggestion:y}){return`${y?.char??"@"}${g.attrs.label??g.attrs.id}`},renderHTML({node:g,suggestion:y,isFocused:b}){const S=y?.char??"@",E=g?.attrs?.avatar,T=g?.attrs?.type,_=g?.attrs?.from,R=g?.attrs?.inThisThread,A=g?.attrs?.isCrossExposureEnable,C=g?.attrs?.matchStartPosition,k=g?.attrs?.selectId,I=g.attrs.label??g.attrs.id,P=g.attrs.id,D=g?.attrs?.name,O=isReactNativeWebView(),j={"data-type":"mention","data-id":P,"data-label":I,"data-mention-suggestion-char":S,"data-mention-id":P,"data-mention-label":I,"data-mention-avatar":E,"data-mention-in-this-thread":R,"data-mention-name":D,"data-mention-select-id":k,"data-mention-type":T,"data-mention-from":_,"data-mention-is-cross-exposure-enable":A,"data-mention-match-start-position":C,class:"inline-block rounded italic font-medium cursor-pointer transition-all duration-200 text-blue-700 dark:text-blue-300"};if(O){const H=S==="@"?`window.ReactNativeWebView.postMessage(JSON.stringify({type: 'mention', userId: '${P}'}))`:`window.ReactNativeWebView.postMessage(JSON.stringify({type: 'hashtag', groupId: '${P}'}))`;return["span",{...j,onclick:H},`${S}${I}`]}const L=S==="@"?`/users/${P}`:`/groups/${P}`;return["a",{...j,...b?{}:{href:L,target:"_blank"},"data-mention-link":"true"},`${S}${I}`]},suggestions:[createSuggestion("@",m.fetchMentions),createSuggestion("#",m.fetchHashtags)]})},LinkPreviewCompact=({selected:u,href:n,title:d,description:p,image:m,domain:g,onClickDelete:y})=>{const{t:b}=usePostBuilder(),S=React.useMemo(()=>{try{return g||new URL(n).hostname}catch{return"unknown"}},[n,g]),E=T=>{T.preventDefault(),T.stopPropagation(),y()};return jsxRuntime.jsxs("div",{className:cn("not-prose relative w-full group my-4",u?"ring-2 ring-blue-500 ring-offset-2 rounded-lg":""),children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-2 absolute z-50 right-2 top-1",children:[jsxRuntime.jsx(ToolbarButton,{asChild:!0,tooltip:"visitLinkKey",children:jsxRuntime.jsxs("span",{className:"relative",children:[jsxRuntime.jsx("a",{href:n,target:"_blank",rel:"noopener noreferrer",className:"absolute inset-0"}),jsxRuntime.jsx(ExternalLink,{})]})}),jsxRuntime.jsx(ToolbarButton,{tooltip:"removeLinkPreviewKey",onClick:E,"aria-label":b("removeLinkPreviewKey"),type:"button",size:"icon",className:"cursor-pointer size-6 shadow-none bg-transparent group-hover:bg-destructive/5 hover:bg-destructive/10 text-destructive hover:text-destructive",children:jsxRuntime.jsx(Trash2,{})})]}),jsxRuntime.jsx("div",{className:"relative z-0 w-full",children:jsxRuntime.jsxs("div",{className:"group flex items-center gap-3 rounded-lg border bg-accent/30 p-3 transition-all hover:border-foreground/20 hover:shadow-sm",children:[jsxRuntime.jsx("div",{className:"relative h-16 w-16 shrink-0 overflow-hidden rounded-md bg-muted",children:jsxRuntime.jsx("img",{src:m,alt:d,className:"size-16 object-cover transition-transform group-hover:scale-105"})}),jsxRuntime.jsxs("div",{className:"min-w-0 flex-1",children:[jsxRuntime.jsx("h3",{className:"truncate text-sm font-semibold leading-tight text-foreground",children:d}),jsxRuntime.jsx("p",{className:"line-clamp-1 text-xs text-muted-foreground",children:p}),jsxRuntime.jsxs("div",{className:"mt-1 flex items-center gap-1 text-xs text-muted-foreground",children:[jsxRuntime.jsx("span",{className:"truncate",children:S}),jsxRuntime.jsx(ExternalLink,{className:"h-3 w-3 shrink-0 opacity-50"})]})]})]})})]})},LinkPreviewExtended=({selected:u,href:n,title:d,description:p,image:m,domain:g,onClickDelete:y})=>{const{t:b}=usePostBuilder(),S=React.useMemo(()=>{try{return g||new URL(n).hostname}catch{return"unknown"}},[n,g]),E=T=>{T.preventDefault(),T.stopPropagation(),y()};return jsxRuntime.jsxs("div",{className:cn("not-prose relative w-full group mt-4",u?"ring-2 ring-blue-500 ring-offset-2 rounded-lg":""),children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-2 absolute z-50 right-3 top-3",children:[jsxRuntime.jsx(ToolbarButton,{asChild:!0,tooltip:"visitLinkKey",className:"cursor-pointer backdrop-blur-2xl size-6 shadow-none group-hover:bg-accent/70 group-hover:text-accent-foreground text-primary-send",children:jsxRuntime.jsxs("span",{className:"relative",children:[jsxRuntime.jsx("a",{href:n,target:"_blank",rel:"noopener noreferrer",className:"absolute inset-0"}),jsxRuntime.jsx(ExternalLink,{})]})}),jsxRuntime.jsx(ToolbarButton,{tooltip:"removeLinkPreviewKey",onClick:E,"aria-label":b("removeLinkPreviewKey"),type:"button",size:"icon",className:"cursor-pointer backdrop-blur-2xl size-6 shadow-none bg-transparent group-hover:bg-red-50/70 hover:bg-red-50 text-destructive hover:text-destructive",children:jsxRuntime.jsx(Trash2,{})})]}),jsxRuntime.jsx("div",{className:"relative z-0 w-full",children:jsxRuntime.jsxs("div",{className:"group overflow-hidden flex flex-col rounded-lg border bg-accent/30 transition-all hover:border-foreground/20 hover:shadow-sm",children:[jsxRuntime.jsx("div",{className:"relative h-80 w-full shrink-0 overflow-hidden bg-muted border-b",children:jsxRuntime.jsx("img",{src:m,alt:d,className:"size-full object-cover transition-transform group-hover:scale-105"})}),jsxRuntime.jsxs("div",{className:"min-w-0 flex-1 p-3",children:[jsxRuntime.jsxs("div",{className:"mt-1 flex items-center gap-1 text-xs text-muted-foreground",children:[jsxRuntime.jsx("span",{className:"truncate",children:S}),jsxRuntime.jsx(ExternalLink,{className:"h-3 w-3 shrink-0 opacity-50"})]}),jsxRuntime.jsx("h3",{className:"mt-1 mb-2 truncate text-lg font-semibold leading-tight text-foreground",children:d}),jsxRuntime.jsx("p",{className:"line-clamp-2 text-sm text-muted-foreground",children:p})]})]})})]})},LinkPreviewCard=({node:u,deleteNode:n,selected:d})=>{const{loading:p,href:m,domain:g,variant:y}=u.attrs,{t:b}=usePostBuilder(),S=React.useMemo(()=>{try{return g||new URL(m).hostname}catch{return"unknown"}},[m,g]);return p?jsxRuntime.jsx(NodeViewWrapper,{children:jsxRuntime.jsx(Skeleton,{className:"w-full h-24 my-4 flex items-center justify-center rounded-lg",children:jsxRuntime.jsx("span",{className:"text-sm text-muted-foreground",children:b("fetchingMetadataKey")})})}):m?jsxRuntime.jsx(NodeViewWrapper,{contentEditable:!1,"data-drag-handle":!0,children:y===LinkPreviewType.Compact?jsxRuntime.jsx(LinkPreviewCompact,{...u.attrs,selected:d,domain:S,onClickDelete:n}):jsxRuntime.jsx(LinkPreviewExtended,{...u.attrs,selected:d,domain:S,onClickDelete:n})}):null};function insertLinkPreviewAfterLinkImpl(u,n,d,p){let m=null;if(d.doc.descendants((E,T)=>{if(m!==null)return!1;if(E.isText&&E.marks){for(const _ of E.marks)if(_.type.name==="customLink"&&_.attrs.uid===u)return m=T,!1}}),m===null)return!1;const g=d.doc.resolve(m);if(g.depth>1)return!1;let y=!1;if(d.doc.descendants(E=>{if(E.type.name==="linkPreview"&&E.attrs.uid===u)return y=!0,!1}),y)return!1;let b=g.after(1);for(;b<d.doc.content.size;){const E=d.doc.nodeAt(b);if(E?.type.name!=="linkPreview")break;const T=E.attrs.uid;let _=null;if(T&&d.doc.descendants((R,A)=>{if(_!==null)return!1;if(R.isText&&R.marks){for(const C of R.marks)if(C.type.name==="customLink"&&C.attrs.uid===T)return _=A,!1}}),_!==null&&_<m)b+=E.nodeSize;else break}if(!p)return!0;const S=d.schema.nodes.linkPreview;return S?(p(d.tr.insert(b,S.create(n))),!0):!1}const LinkPreview=Node3.create({name:"linkPreview",group:"block",atom:!0,addOptions(){return{variant:LinkPreviewType.Compact,selectable:!0,draggable:!0}},draggable(){return this?.options?.draggable??!0},selectable(){return this?.options?.selectable??!0},addAttributes(){return{variant:{default:this.options.variant},uid:{default:null},href:{default:null},title:{default:null},description:{default:null},image:{default:null},domain:{default:null},loading:{default:!1}}},parseHTML(){return[{tag:"div[data-link-preview]",getAttrs:u=>{if(typeof u=="string")return!1;const n=u,d=n.querySelector("a");return{href:n.getAttribute("data-href")||d?.getAttribute("href")||"",uid:n.getAttribute("data-uid")||null,title:n.getAttribute("data-title")||null,description:n.getAttribute("data-description")||null,image:n.getAttribute("data-image")||null,domain:n.getAttribute("data-domain")||null}}}]},renderHTML({node:u}){const{href:n,uid:d,title:p,description:m,image:g,domain:y}=u.attrs;if(!n)return["div",{}];const b=[["a",{href:n,target:"_blank",rel:"noopener noreferrer",class:"absolute inset-0 z-30","aria-label":p||n}],["div",{class:"relative z-20 flex items-center gap-3 w-full"},...g?[["div",{class:"relative h-16 w-16 flex-shrink-0 overflow-hidden rounded-md bg-muted"},["img",{src:g,alt:p||"",class:"h-full w-full object-cover transition-transform group-hover:scale-105"}]]]:[],["div",{class:"min-w-0 flex-1"},...p?[["h3",{class:"truncate text-sm font-semibold leading-tight text-foreground"},p]]:[],...m?[["p",{class:"line-clamp-1 text-xs text-muted-foreground"},m]]:[],...y?[["div",{class:"mt-1 flex items-center gap-1 text-xs text-muted-foreground"},["span",{class:"truncate"},y]]]:[]]]];return["div",{"data-link-preview":"","data-href":n,"data-uid":d||"","data-title":p||"","data-description":m||"","data-image":g||"","data-domain":y||"",class:"not-prose my-4 relative group flex items-center gap-3 rounded-lg border bg-card p-3 transition-all hover:border-foreground/20 hover:shadow-sm"},...b]},addNodeView(){return ReactNodeViewRenderer(LinkPreviewCard)},addCommands(){return{setLinkPreview:u=>({commands:n,editor:d})=>{if(u.uid){let p=!1;if(d.state.doc.descendants(m=>{if(m.type.name===this.name&&m.attrs.uid===u.uid)return p=!0,!1}),p)return n.updateLinkPreviewByUid(u.uid,u)}return n.insertContent({type:this.name,attrs:u})},updateLinkPreviewByUid:createUpdateByUidCommand(this.name),deleteLinkPreviewByUid:createDeleteByUidCommand(this.name),updateLinkPreview:u=>({commands:n})=>n.updateAttributes(this.name,u),insertLinkPreviewAfterLink:(u,n)=>({state:d,dispatch:p})=>insertLinkPreviewAfterLinkImpl(u,n,d,p)}},addKeyboardShortcuts(){return{"Mod-Shift-k":()=>this.editor.commands.setLinkPreview({href:"",title:null,description:null,image:null,domain:null}),Backspace:()=>{const{selection:u}=this.editor.state,{$anchor:n}=u;return n.parent.type.name===this.name&&n.parentOffset===0?this.editor.commands.deleteNode(this.name):!1}}}}),EnterHardBreak=Extension.create({name:"customEnterHardBreak",addKeyboardShortcuts(){return{Enter:()=>this.editor.commands.setHardBreak()}}}),MediaGroupView=({node:u,editor:n})=>{const[d,p]=React.useState(null),{trackMediaRemoved:m}=useAnalyticsTracking(),g=b=>{const S=b?.attrs?.uid,E=n?.view?.dom?.getAttribute("data-editor-type")||EditorTypes.Media;n.commands.deleteMediaByUid(S),m({mediaType:MediaTypeMap[b?.attrs?.type],editorType:E})},y=u?.content?.content||[];return jsxRuntime.jsxs(NodeViewWrapper,{className:"not-prose media-group-wrapper select-none leading-none mt-12",contentEditable:!1,children:[jsxRuntime.jsxs("div",{className:"flex flex-wrap gap-2 leading-none mt-auto",children:[y.map((b,S)=>{const E=b?.attrs?.uploading,T=b?.attrs?.progress||0;return jsxRuntime.jsxs("div",{className:"relative group leading-none",children:[jsxRuntime.jsx(Button,{size:"icon",onClick:()=>g(b),className:"absolute size-6 top-1 right-1 z-10 p-1.5 bg-red-50 hover:bg-red-100 text-destructive rounded-full shadow-lg transition-all opacity-100 group-hover:scale-110",title:"Delete media",children:jsxRuntime.jsx(X,{className:"w-3.5 h-3.5"})}),E?jsxRuntime.jsxs("div",{className:"size-20 bg-muted rounded-lg border border-border flex items-center justify-center relative overflow-hidden",children:[jsxRuntime.jsxs("div",{className:"text-center space-y-2",children:[b.attrs.type===MediaNodeTypes.Image&&jsxRuntime.jsx(Image$2,{className:"w-8 h-8 text-muted-foreground/50 mx-auto"}),b.attrs.type===MediaNodeTypes.Video&&jsxRuntime.jsx(Video,{className:"w-8 h-8 text-muted-foreground/50 mx-auto"}),b.attrs.type===MediaNodeTypes.Audio&&jsxRuntime.jsx(Music,{className:"w-8 h-8 text-muted-foreground/50 mx-auto"}),jsxRuntime.jsxs("p",{className:"text-xs text-muted-foreground",children:[Math.round(T),"%"]})]}),jsxRuntime.jsx("div",{className:"absolute bottom-0 left-0 right-0 p-2",children:jsxRuntime.jsx(Progress,{value:T,className:"h-1"})})]}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[b.attrs.type===MediaNodeTypes.Image&&jsxRuntime.jsx("img",{src:b.attrs.src,alt:b.attrs.caption||"",className:"size-20 object-cover rounded-lg border border-border cursor-pointer hover:opacity-80 transition-opacity",onClick:()=>p({src:b.attrs.src,type:MediaNodeTypes.Image})}),b.attrs.type===MediaNodeTypes.Video&&jsxRuntime.jsx("video",{src:b.attrs.src,className:"size-20 object-cover rounded-lg border border-border cursor-pointer hover:opacity-80 transition-opacity",onClick:()=>p({src:b.attrs.src,type:MediaNodeTypes.Video})}),b.attrs.type===MediaNodeTypes.Audio&&jsxRuntime.jsx("div",{className:"size-20 flex items-center justify-center bg-accent rounded-lg border border-border",children:jsxRuntime.jsx(Music,{className:"w-8 h-8 text-muted-foreground"})})]}),b.attrs.caption&&!E&&jsxRuntime.jsx("p",{className:"text-xs text-muted-foreground text-center mt-1 truncate w-32",children:b.attrs.caption})]},b?.attrs?.uid||S)}),jsxRuntime.jsx("div",{className:"hidden",children:jsxRuntime.jsx(NodeViewContent,{})})]}),d&&jsxRuntime.jsx(MediaPreviewModal,{open:!!d,onOpenChange:b=>!b&&p(null),src:d.src,type:d.type})]})},MediaModePluginKey=new PluginKey("mediaMode"),createMediaModePlugin=()=>{let u=!1;return new Plugin({key:MediaModePluginKey,appendTransaction(n,d,p){if(u||!n.some(g=>g.docChanged)||n.some(g=>g.getMeta("mediaMode-plugin"))||n.some(g=>g.getMeta("addToHistory")===!1))return null;try{u=!0;const g=p.tr;let y=!1;const b=[];if(p.doc.forEach((C,k)=>{C.type.name==="media"&&b.push({node:C,pos:k,size:C.nodeSize})}),b.length===0){let C=!1,k=null;if(p.doc.forEach((I,P)=>{I.type.name==="mediaGroup"&&(C=!0,I.content.size===0&&(g.delete(P,P+I.nodeSize),y=!0)),I.type.name==="paragraph"&&I.descendants(D=>{D.marks&&D.marks.forEach(O=>{O.type.name==="customLink"&&O.attrs.previewPayload&&(k=O.attrs.previewPayload)})})}),y&&C&&k){let I=!1;if(g.doc.forEach(P=>{P.type.name==="linkPreview"&&(I=!0)}),!I&&p.schema.nodes.linkPreview){const P=k,D=p.schema.nodes.linkPreview.create({uid:v4(),href:P.linkUrl??"",title:P.linkTitle??"",description:P.linkDesc??"",image:P.linkImage?.url??"",variant:LinkPreviewType.Extended});g.insert(g.doc.content.size,D),y=!0}}return y&&(g.setMeta("addToHistory",!1),g.setMeta("mediaMode-plugin",!0)),y?g:null}let S=null,E=null;p.doc.forEach((C,k)=>{C.type.name==="linkPreview"&&(S=k,E=C.nodeSize)}),S!==null&&E!==null&&(g.delete(S,Number(S)+Number(E)),y=!0);const T=y?g.doc:p.doc,_=[];T.forEach((C,k)=>{C.type.name==="media"&&_.push({node:C,pos:k,size:C.nodeSize})});let R=null,A=null;if(T.forEach((C,k)=>{C.type.name==="mediaGroup"&&(R=k,A=C)}),R!==null&&A){const C=A.content.size;[..._].sort((j,L)=>L.pos-j.pos).forEach(({pos:j,size:L})=>{g.delete(j,j+L)});const P=_.filter(j=>j.pos<R).reduce((j,L)=>j+L.size,0),O=R-P+1+C;let N=0;_.forEach(({node:j})=>{g.insert(O+N,j),N+=j.nodeSize}),y=!0}else{if(!p.schema.nodes.mediaGroup)return null;const C=_.map(P=>P.node);if(C.some(P=>!P||P.type.name!=="media"))return null;const k=p.schema.nodes.mediaGroup.create({},C);[..._].sort((P,D)=>D.pos-P.pos).forEach(({pos:P,size:D})=>{g.delete(P,P+D)}),g.insert(g.doc.content.size,k),y=!0}if(y){const C=g.doc.content.size;if(C>=0&&C<=g.doc.content.size)try{const k=g.doc.resolve(C);g.setSelection(TextSelection.near(k))}catch{}g.setMeta("addToHistory",!1),g.setMeta("mediaMode-plugin",!0)}return y?g:null}catch{return null}finally{u=!1}}})},MediaGroupNode=Node3.create({name:"mediaGroup",group:"block",content:"media*",atom:!1,selectable:!1,draggable:!1,addOptions(){return{mediaMode:!1}},parseHTML(){return[{tag:"div[data-media-group]"}]},renderHTML({HTMLAttributes:u}){return["div",mergeAttributes(u,{"data-media-group":""}),0]},addNodeView(){return ReactNodeViewRenderer(MediaGroupView)},addProseMirrorPlugins(){return this.options.mediaMode?[createMediaModePlugin()]:[]}}),StripHyperlinkText=Extension.create({name:"stripHyperlinkText",addProseMirrorPlugins(){return[new Plugin({key:new PluginKey("stripHyperlinkText"),props:{transformPastedHTML(u){const n=new DOMParser().parseFromString(u,"text/html");return n.querySelectorAll("a[href]").forEach(d=>{const p=d.href||d.getAttribute("href")||"",m=d.textContent?.trim()??"";if(p&&m&&m!==p){const g=d.parentNode;g&&(g.insertBefore(n.createTextNode(`${m} (`),d),d.textContent=p,d.after(n.createTextNode(")")))}}),n.body.innerHTML}}})]}}),CODE_HTML_ATTRIBUTES={class:"bg-muted text-foreground border border-border font-mono leading-snug rounded px-0.5 py-px after:content-none before:content-none"},CODE_BLOCK_HTML_ATTRIBUTES={class:"bg-muted text-foreground border border-border font-mono leading-snug rounded"},createCustomDocument=u=>index_default$9.extend({content:u}),PollDoc=createCustomDocument("paragraph+ poll"),MediaDoc=createCustomDocument("paragraph+ media? linkPreview? mediaGroup?");createCustomDocument("paragraph linkPreview?");const getStarterKitConfig=({includeLink:u=!1,includeDocument:n=!0})=>({...n?{}:{document:!1},...u?{}:{link:!1},code:{HTMLAttributes:CODE_HTML_ATTRIBUTES},codeBlock:{HTMLAttributes:CODE_BLOCK_HTML_ATTRIBUTES}}),getPlaceholderExtension=u=>Placeholder.configure({placeholder:u,showOnlyWhenEditable:!0}),getMentionExtension=(u,n,d,p)=>configureMentionExtension(u,n,d,p),getExtensions=({editorType:u,api:n,store:d,user:p,t:m})=>{const y={[EditorTypes.Blog]:getDefaultExtensions,[EditorTypes.Media]:getMediaExtensions,[EditorTypes.Poll]:getPollExtensions}[u];return y?y({api:n,store:d,user:p,t:m}):[]},getDefaultExtensions=({api:u,store:n,user:d})=>{const{core:p,mfs:m,fileStore:g}=u;return[index_default$4.configure(getStarterKitConfig({includeLink:!1})),getPlaceholderExtension(`What's on your mind, ${d?.name?d?.name:""}`),index_default$2,index_default$1,index_default$3.configure({types:["heading","paragraph","media"],alignments:[Alignment.LEFT,Alignment.CENTER,Alignment.RIGHT],defaultAlignment:Alignment.LEFT}),MediaNode,Poll,Iframe.configure({api:p}),CustomLink.configure({openOnClick:!1,linkOnPaste:!1,api:p}),LinkPreview,getMentionExtension(p,m,n,d),SmartMediaUpload.configure({api:g}),SmartLinkPaste.configure({api:p})]},getPollExtensions=({api:u,store:n,user:d,t:p})=>{const{core:m,mfs:g}=u;return[PollDoc,index_default$6,index_default$5,index_default$7.configure({HTMLAttributes:{class:"underline"}}),index_default$8,getPlaceholderExtension(p("pollQuestionPlaceholderKey")),EnterHardBreak,Poll,getMentionExtension(m,g,n,d),StripHyperlinkText]},getMediaExtensions=({api:u,store:n,user:d})=>{const{core:p,mfs:m,fileStore:g}=u;return[MediaDoc,index_default$6,index_default$5,index_default$8,getPlaceholderExtension(`What's on your mind, ${d?.name?d?.name:""}`),EnterHardBreak,MediaNode.configure({attrs:{mediaMode:!0}}),MediaGroupNode.configure({mediaMode:!0}),CustomLink.configure({openOnClick:!1,linkOnPaste:!1,api:p,linkMode:!0}),LinkPreview.configure({variant:LinkPreviewType.Extended,draggable:!1}),getMentionExtension(p,m,n,d),SmartMediaUpload.configure({api:g}),SmartLinkPaste.configure({api:p,autoEmbed:!1,autoLinkSelection:!1}),StripHyperlinkText]},getEditorProps=()=>({attributes:{class:cn(`max-w-full min-h-44 prose prose-sm sm:prose-base px-4 py-2 prose-img:my-3
240
+ `,"2) content: () => element.cloneNode(true)"].join(" "))}var b=m.reduce(function(S,E){var T=E&&createTippy(E,p);return T&&S.push(T),S},[]);return isElement(u)?b[0]:b}tippy.defaultProps=defaultProps;tippy.setDefaultProps=setDefaultProps;tippy.currentInput=currentInput;Object.assign({},applyStyles,{effect:function u(n){var d=n.state,p={popper:{position:d.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(d.elements.popper.style,p.popper),d.styles=p,d.elements.arrow&&Object.assign(d.elements.arrow.style,p.arrow)}});tippy.setDefaultProps({render});function getSuggestionOptions({editor:u,overrideSuggestionOptions:n,extensionName:d,char:p="@"}){return{editor:u,char:p,pluginKey:new PluginKey,command:({editor:m,range:g,props:y})=>{const E=m.getText()?.replace(WHITESPACE_REGEX," ")?.trim()?.lastIndexOf(p);m.view.state.selection.$to.nodeAfter?.text?.startsWith(" ")&&(g.to+=1),m.chain().focus().insertContentAt(g,[{type:d,attrs:{...y,mentionSuggestionChar:p,matchStartPosition:E}},{type:"text",text:" "}]).run(),m.view.dom.ownerDocument.defaultView?.getSelection()?.collapseToEnd()},allow:({state:m,range:g})=>{const y=m.doc.resolve(g.from),b=m.schema.nodes[d];return!!y.parent.type.contentMatch.matchType(b)},...n}}function getSuggestions(u){return(u.options.suggestions.length?u.options.suggestions:[u.options.suggestion]).map(n=>getSuggestionOptions({editor:u.editor,overrideSuggestionOptions:n,extensionName:u.name,char:n.char}))}function getSuggestionFromChar(u,n){const d=getSuggestions(u),p=d.find(m=>m.char===n);return p||(d.length?d[0]:null)}const Mention=Node3.create({name:"mention",priority:101,addOptions(){return{HTMLAttributes:{},renderText({node:u,suggestion:n}){return`${n?.char??"@"}${u.attrs.label??u.attrs.id}`},deleteTriggerWithBackspace:!1,renderHTML({options:u,node:n,suggestion:d}){return["span",mergeAttributes(this.HTMLAttributes,u.HTMLAttributes),`${d?.char??"@"}${n.attrs.label??n.attrs.id}`]},suggestions:[],suggestion:{}}},group:"inline",inline:!0,selectable:!1,atom:!0,addAttributes(){return{id:{default:null,parseHTML:u=>u.getAttribute("data-mention-id"),renderHTML:u=>u.id?{"data-mention-id":u.id}:{}},label:{default:null,parseHTML:u=>u.getAttribute("data-mention-label"),renderHTML:u=>u.label?{"data-mention-label":u.label}:{}},mentionSuggestionChar:{default:"@",parseHTML:u=>u.getAttribute("data-mention-suggestion-char"),renderHTML:u=>({"data-mention-suggestion-char":u.mentionSuggestionChar})},avatar:{default:null,parseHTML:u=>u.getAttribute("data-mention-avatar"),renderHTML:u=>u.avatar?{"data-mention-avatar":u.avatar}:{}},inThisThread:{default:1,parseHTML:u=>u.getAttribute("data-mention-in-this-thread"),renderHTML:u=>u.inThisThread?{"data-mention-in-this-thread":u.inThisThread}:{}},name:{default:null,parseHTML:u=>u.getAttribute("data-mention-name"),renderHTML:u=>u.name?{"data-mention-name":u.name}:{}},selectId:{default:null,parseHTML:u=>u.getAttribute("data-mention-select-id"),renderHTML:u=>u.selectId?{"data-mention-select-id":u.selectId}:{}},type:{default:null,parseHTML:u=>u.getAttribute("data-mention-type"),renderHTML:u=>u.type?{"data-mention-type":u.type}:{}},from:{default:PostType.Post,parseHTML:u=>u.getAttribute("data-mention-from"),renderHTML:u=>u.from?{"data-mention-from":u.from}:{}},isCrossExposureEnable:{default:null,parseHTML:u=>u.getAttribute("data-mention-is-cross-exposure-enable"),renderHTML:u=>u.isCrossExposureEnable?{"data-mention-is-cross-exposure-enable":u.isCrossExposureEnable}:{}},matchStartPosition:{default:-1,parseHTML:u=>u.getAttribute("data-mention-match-start-position"),renderHTML:u=>u.matchStartPosition?{"data-mention-match-start-position":u.matchStartPosition}:{}}}},parseHTML(){return[{tag:'span[data-type="mention"]'},{tag:'a[data-type="mention"]'}]},renderHTML({node:u,HTMLAttributes:n}){const d=getSuggestionFromChar(this,u.attrs.mentionSuggestionChar);if(this.options.renderLabel!==void 0)return["span",mergeAttributes({"data-type":this.name},this.options.HTMLAttributes,n),this.options.renderLabel({options:this.options,node:u,suggestion:d})];const p={...this.options},m=this.editor?.isFocused;p.HTMLAttributes=mergeAttributes({"data-type":this.name},this.options.HTMLAttributes,n);const g=this.options.renderHTML({options:p,node:u,suggestion:d,isFocused:m});return typeof g=="string"?["span",mergeAttributes({"data-type":this.name},this.options.HTMLAttributes,n),g]:g},renderText({node:u}){const n={options:this.options,node:u,suggestion:getSuggestionFromChar(this,u.attrs.mentionSuggestionChar)};return this.options.renderLabel!==void 0?this.options.renderLabel(n):this.options.renderText(n)},addKeyboardShortcuts(){return{Backspace:()=>this.editor.commands.command(({tr:u,state:n})=>{let d=!1;const{selection:p}=n,{empty:m,anchor:g}=p;if(!m)return!1;let y=new Node$1,b=0;return n.doc.nodesBetween(g-1,g,(S,E)=>{if(S.type.name===this.name)return d=!0,y=S,b=E,!1}),d&&u.insertText(this.options.deleteTriggerWithBackspace?"":y.attrs.mentionSuggestionChar,b,b+y.nodeSize),d})}},addProseMirrorPlugins(){return getSuggestions(this).map(Suggestion)}});var removeAccents$1={exports:{}},hasRequiredRemoveAccents;function requireRemoveAccents(){if(hasRequiredRemoveAccents)return removeAccents$1.exports;hasRequiredRemoveAccents=1;var u={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",Ấ:"A",Ắ:"A",Ẳ:"A",Ẵ:"A",Ặ:"A",Æ:"AE",Ầ:"A",Ằ:"A",Ȃ:"A",Ả:"A",Ạ:"A",Ẩ:"A",Ẫ:"A",Ậ:"A",Ç:"C",Ḉ:"C",È:"E",É:"E",Ê:"E",Ë:"E",Ế:"E",Ḗ:"E",Ề:"E",Ḕ:"E",Ḝ:"E",Ȇ:"E",Ẻ:"E",Ẽ:"E",Ẹ:"E",Ể:"E",Ễ:"E",Ệ:"E",Ì:"I",Í:"I",Î:"I",Ï:"I",Ḯ:"I",Ȋ:"I",Ỉ:"I",Ị:"I",Ð:"D",Ñ:"N",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",Ố:"O",Ṍ:"O",Ṓ:"O",Ȏ:"O",Ỏ:"O",Ọ:"O",Ổ:"O",Ỗ:"O",Ộ:"O",Ờ:"O",Ở:"O",Ỡ:"O",Ớ:"O",Ợ:"O",Ù:"U",Ú:"U",Û:"U",Ü:"U",Ủ:"U",Ụ:"U",Ử:"U",Ữ:"U",Ự:"U",Ý:"Y",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",ấ:"a",ắ:"a",ẳ:"a",ẵ:"a",ặ:"a",æ:"ae",ầ:"a",ằ:"a",ȃ:"a",ả:"a",ạ:"a",ẩ:"a",ẫ:"a",ậ:"a",ç:"c",ḉ:"c",è:"e",é:"e",ê:"e",ë:"e",ế:"e",ḗ:"e",ề:"e",ḕ:"e",ḝ:"e",ȇ:"e",ẻ:"e",ẽ:"e",ẹ:"e",ể:"e",ễ:"e",ệ:"e",ì:"i",í:"i",î:"i",ï:"i",ḯ:"i",ȋ:"i",ỉ:"i",ị:"i",ð:"d",ñ:"n",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",ố:"o",ṍ:"o",ṓ:"o",ȏ:"o",ỏ:"o",ọ:"o",ổ:"o",ỗ:"o",ộ:"o",ờ:"o",ở:"o",ỡ:"o",ớ:"o",ợ:"o",ù:"u",ú:"u",û:"u",ü:"u",ủ:"u",ụ:"u",ử:"u",ữ:"u",ự:"u",ý:"y",ÿ:"y",Ā:"A",ā:"a",Ă:"A",ă:"a",Ą:"A",ą:"a",Ć:"C",ć:"c",Ĉ:"C",ĉ:"c",Ċ:"C",ċ:"c",Č:"C",č:"c",C̆:"C",c̆:"c",Ď:"D",ď:"d",Đ:"D",đ:"d",Ē:"E",ē:"e",Ĕ:"E",ĕ:"e",Ė:"E",ė:"e",Ę:"E",ę:"e",Ě:"E",ě:"e",Ĝ:"G",Ǵ:"G",ĝ:"g",ǵ:"g",Ğ:"G",ğ:"g",Ġ:"G",ġ:"g",Ģ:"G",ģ:"g",Ĥ:"H",ĥ:"h",Ħ:"H",ħ:"h",Ḫ:"H",ḫ:"h",Ĩ:"I",ĩ:"i",Ī:"I",ī:"i",Ĭ:"I",ĭ:"i",Į:"I",į:"i",İ:"I",ı:"i",IJ:"IJ",ij:"ij",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",Ḱ:"K",ḱ:"k",K̆:"K",k̆:"k",Ĺ:"L",ĺ:"l",Ļ:"L",ļ:"l",Ľ:"L",ľ:"l",Ŀ:"L",ŀ:"l",Ł:"l",ł:"l",Ḿ:"M",ḿ:"m",M̆:"M",m̆:"m",Ń:"N",ń:"n",Ņ:"N",ņ:"n",Ň:"N",ň:"n",ʼn:"n",N̆:"N",n̆:"n",Ō:"O",ō:"o",Ŏ:"O",ŏ:"o",Ő:"O",ő:"o",Œ:"OE",œ:"oe",P̆:"P",p̆:"p",Ŕ:"R",ŕ:"r",Ŗ:"R",ŗ:"r",Ř:"R",ř:"r",R̆:"R",r̆:"r",Ȓ:"R",ȓ:"r",Ś:"S",ś:"s",Ŝ:"S",ŝ:"s",Ş:"S",Ș:"S",ș:"s",ş:"s",Š:"S",š:"s",Ţ:"T",ţ:"t",ț:"t",Ț:"T",Ť:"T",ť:"t",Ŧ:"T",ŧ:"t",T̆:"T",t̆:"t",Ũ:"U",ũ:"u",Ū:"U",ū:"u",Ŭ:"U",ŭ:"u",Ů:"U",ů:"u",Ű:"U",ű:"u",Ų:"U",ų:"u",Ȗ:"U",ȗ:"u",V̆:"V",v̆:"v",Ŵ:"W",ŵ:"w",Ẃ:"W",ẃ:"w",X̆:"X",x̆:"x",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Y̆:"Y",y̆:"y",Ź:"Z",ź:"z",Ż:"Z",ż:"z",Ž:"Z",ž:"z",ſ:"s",ƒ:"f",Ơ:"O",ơ:"o",Ư:"U",ư:"u",Ǎ:"A",ǎ:"a",Ǐ:"I",ǐ:"i",Ǒ:"O",ǒ:"o",Ǔ:"U",ǔ:"u",Ǖ:"U",ǖ:"u",Ǘ:"U",ǘ:"u",Ǚ:"U",ǚ:"u",Ǜ:"U",ǜ:"u",Ứ:"U",ứ:"u",Ṹ:"U",ṹ:"u",Ǻ:"A",ǻ:"a",Ǽ:"AE",ǽ:"ae",Ǿ:"O",ǿ:"o",Þ:"TH",þ:"th",Ṕ:"P",ṕ:"p",Ṥ:"S",ṥ:"s",X́:"X",x́:"x",Ѓ:"Г",ѓ:"г",Ќ:"К",ќ:"к",A̋:"A",a̋:"a",E̋:"E",e̋:"e",I̋:"I",i̋:"i",Ǹ:"N",ǹ:"n",Ồ:"O",ồ:"o",Ṑ:"O",ṑ:"o",Ừ:"U",ừ:"u",Ẁ:"W",ẁ:"w",Ỳ:"Y",ỳ:"y",Ȁ:"A",ȁ:"a",Ȅ:"E",ȅ:"e",Ȉ:"I",ȉ:"i",Ȍ:"O",ȍ:"o",Ȑ:"R",ȑ:"r",Ȕ:"U",ȕ:"u",B̌:"B",b̌:"b",Č̣:"C",č̣:"c",Ê̌:"E",ê̌:"e",F̌:"F",f̌:"f",Ǧ:"G",ǧ:"g",Ȟ:"H",ȟ:"h",J̌:"J",ǰ:"j",Ǩ:"K",ǩ:"k",M̌:"M",m̌:"m",P̌:"P",p̌:"p",Q̌:"Q",q̌:"q",Ř̩:"R",ř̩:"r",Ṧ:"S",ṧ:"s",V̌:"V",v̌:"v",W̌:"W",w̌:"w",X̌:"X",x̌:"x",Y̌:"Y",y̌:"y",A̧:"A",a̧:"a",B̧:"B",b̧:"b",Ḑ:"D",ḑ:"d",Ȩ:"E",ȩ:"e",Ɛ̧:"E",ɛ̧:"e",Ḩ:"H",ḩ:"h",I̧:"I",i̧:"i",Ɨ̧:"I",ɨ̧:"i",M̧:"M",m̧:"m",O̧:"O",o̧:"o",Q̧:"Q",q̧:"q",U̧:"U",u̧:"u",X̧:"X",x̧:"x",Z̧:"Z",z̧:"z",й:"и",Й:"И",ё:"е",Ё:"Е"},n=Object.keys(u).join("|"),d=new RegExp(n,"g"),p=new RegExp(n,"");function m(b){return u[b]}var g=function(b){return b.replace(d,m)},y=function(b){return!!b.match(p)};return removeAccents$1.exports=g,removeAccents$1.exports.has=y,removeAccents$1.exports.remove=g,removeAccents$1.exports}var removeAccentsExports=requireRemoveAccents();const removeAccents=getDefaultExportFromCjs(removeAccentsExports);const rankings={CASE_SENSITIVE_EQUAL:7,EQUAL:6,STARTS_WITH:5,WORD_STARTS_WITH:4,CONTAINS:3,ACRONYM:2,MATCHES:1,NO_MATCH:0},defaultBaseSortFn=(u,n)=>String(u.rankedValue).localeCompare(String(n.rankedValue));function matchSorter(u,n,d={}){const{keys:p,threshold:m=rankings.MATCHES,baseSort:g=defaultBaseSortFn,sorter:y=E=>E.sort((T,_)=>sortRankedValues(T,_,g))}=d,b=u.reduce(S,[]);return y(b).map(({item:E})=>E);function S(E,T,_){const R=getHighestRanking(T,p,n,d),{rank:A,keyThreshold:C=m}=R;return A>=C&&E.push({...R,item:T,index:_}),E}}matchSorter.rankings=rankings;function getHighestRanking(u,n,d,p){if(!n){const g=u;return{rankedValue:g,rank:getMatchRanking(g,d,p),keyIndex:-1,keyThreshold:p.threshold}}return getAllValuesToRank(u,n).reduce(({rank:g,rankedValue:y,keyIndex:b,keyThreshold:S},{itemValue:E,attributes:T},_)=>{let R=getMatchRanking(E,d,p),A=y;const{minRanking:C,maxRanking:k,threshold:I}=T;return R<C&&R>=rankings.MATCHES?R=C:R>k&&(R=k),R>g&&(g=R,b=_,S=I,A=E),{rankedValue:A,rank:g,keyIndex:b,keyThreshold:S}},{rankedValue:u,rank:rankings.NO_MATCH,keyIndex:-1,keyThreshold:p.threshold})}function*indexesOf(u,n){let d=-1;for(;(d=u.indexOf(n,d+1))>-1;)yield d;return-1}function getMatchRanking(u,n,d){if(u=prepareValueForComparison(u,d),n=prepareValueForComparison(n,d),n.length>u.length)return rankings.NO_MATCH;if(u===n)return rankings.CASE_SENSITIVE_EQUAL;u=u.toLowerCase(),n=n.toLowerCase();const p=indexesOf(u,n),m=p.next(),g=m.value;if(u.length===n.length&&g===0)return rankings.EQUAL;if(g===0)return rankings.STARTS_WITH;let y=m;for(;!y.done;){if(y.value>0&&u[y.value-1]===" ")return rankings.WORD_STARTS_WITH;y=p.next()}return g>0?rankings.CONTAINS:n.length===1?rankings.NO_MATCH:getAcronym(u).includes(n)?rankings.ACRONYM:getClosenessRanking(u,n)}function getAcronym(u){let n="",d=" ";for(let p=0;p<u.length;p++){const m=u.charAt(p);(d===" "||d==="-")&&!(m===" "||m==="-")&&(n+=m),d=m}return n}function getClosenessRanking(u,n){let d=0,p=0;function m(S,E,T){for(let _=T,R=E.length;_<R;_++)if(E[_]===S)return d+=1,_+1;return-1}function g(S){const E=1/S,T=d/n.length;return rankings.MATCHES+T*E}const y=m(n[0],u,0);if(y<0)return rankings.NO_MATCH;p=y;for(let S=1,E=n.length;S<E;S++){const T=n[S];if(p=m(T,u,p),!(p>-1))return rankings.NO_MATCH}const b=p-y;return g(b)}function sortRankedValues(u,n,d){const{rank:g,keyIndex:y}=u,{rank:b,keyIndex:S}=n;return g===b?y===S?d(u,n):y<S?-1:1:g>b?-1:1}function prepareValueForComparison(u,{keepDiacritics:n}){return u=`${u}`,n||(u=removeAccents(u)),u}function getItemValues(u,n){typeof n=="object"&&(n=n.key);let d;if(typeof n=="function")d=n(u);else if(u==null)d=null;else if(Object.hasOwnProperty.call(u,n))d=u[n];else{if(n.includes("."))return getNestedValues(n,u);d=null}return d==null?[]:Array.isArray(d)?d:[String(d)]}function getNestedValues(u,n){const d=u.split(".");let p=[n];for(let m=0,g=d.length;m<g;m++){const y=d[m];let b=[];for(let S=0,E=p.length;S<E;S++){const T=p[S];if(T!=null)if(Object.hasOwnProperty.call(T,y)){const _=T[y];_!=null&&b.push(_)}else y==="*"&&(b=b.concat(T))}p=b}return Array.isArray(p[0])?[].concat(...p):p}function getAllValuesToRank(u,n){const d=[];for(let p=0,m=n.length;p<m;p++){const g=n[p],y=getKeyAttributes(g),b=getItemValues(u,g);for(let S=0,E=b.length;S<E;S++)d.push({itemValue:b[S],attributes:y})}return d}const defaultKeyAttributes={maxRanking:1/0,minRanking:-1/0};function getKeyAttributes(u){return typeof u=="string"?defaultKeyAttributes:{...defaultKeyAttributes,...u}}const MentionList=React.forwardRef((u,n)=>{const[d,p]=React.useState(0),m=React.useRef([]),g=u.char==="@",y=React.useMemo(()=>u.query?g?matchSorter(u.items,u.query,{keys:["label","email"],threshold:matchSorter.rankings.CONTAINS}):matchSorter(u.items,u.query,{keys:["label","selectId",_=>_.selectId?.replace(/[^a-z0-9]/gi,"")??""],threshold:matchSorter.rankings.CONTAINS}):u.items,[u.items,u.query,g]),b=_=>{const R=y[_];R&&u.command({...R,id:R?.id,label:R?.label})},S=()=>{p(_=>(_+y.length-1)%y.length)},E=()=>{p(_=>(_+1)%y.length)},T=()=>{b(d)};return React.useEffect(()=>{p(0)},[y]),React.useEffect(()=>{const _=m.current[d];_&&_.scrollIntoView({block:"nearest",behavior:"instant"})},[d]),React.useImperativeHandle(n,()=>({onKeyDown:_=>_.key==="ArrowUp"?(S(),!0):_.key==="ArrowDown"?(E(),!0):_.key==="Enter"&&y.length>0?(T(),!0):!1})),jsxRuntime.jsxs("div",{className:"w-80 rounded-lg border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800 shadow-lg overflow-hidden",children:[jsxRuntime.jsx("div",{className:"px-3 py-2 border-b border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-900/50",children:jsxRuntime.jsxs("div",{className:"flex items-center gap-2",children:[jsxRuntime.jsx("svg",{className:"h-4 w-4 text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:jsxRuntime.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"})}),jsxRuntime.jsx("span",{className:"text-sm text-gray-600 dark:text-gray-300",children:u.query?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:["Searching for: ",jsxRuntime.jsx("span",{className:"font-medium",children:u.query})]}):`Search ${g?"users":"hashtags"}...`})]})}),jsxRuntime.jsxs("div",{className:"px-3 py-1.5 text-xs font-semibold text-gray-500 dark:text-gray-400 uppercase tracking-wider bg-gray-50 dark:bg-gray-900/50",children:[g?"Users":"Hashtags"," (",y.length,")"]}),jsxRuntime.jsx("ul",{className:"max-h-64 overflow-y-auto",children:y.length===0?jsxRuntime.jsx("div",{className:"p-4 text-center text-sm text-gray-500 dark:text-gray-400",children:u.query?`No ${g?"users":"hashtags"} found for "${u.query}"`:`No ${g?"users":"hashtags"} found`}):jsxRuntime.jsx("div",{className:"p-1",children:y.map((_,R)=>jsxRuntime.jsxs("li",{ref:A=>{m.current[R]=A},onClick:()=>b(R),className:`flex items-center gap-3 px-3 py-2.5 cursor-pointer rounded-md transition-colors ${d===R?"bg-blue-50 dark:bg-blue-900/20":"hover:bg-gray-50 dark:hover:bg-gray-700/50"}`,children:[jsxRuntime.jsx(Avatar,{className:"size-9 shrink-0 bg-linear-to-br from-blue-400 to-blue-600",children:_.avatar?jsxRuntime.jsx(AvatarImage,{src:_.avatar,alt:_.label}):jsxRuntime.jsx(AvatarFallback,{className:"text-white bg-transparent font-medium text-sm",children:_.label?.charAt(0).toUpperCase()})}),jsxRuntime.jsx("div",{className:"flex flex-col min-w-0 flex-1",children:g?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("span",{className:"font-medium text-sm text-gray-900 dark:text-gray-100 truncate",children:_.label}),_.email&&jsxRuntime.jsx("span",{className:"text-xs text-gray-500 dark:text-gray-400 truncate",children:_.email})]}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("span",{className:"font-medium text-sm text-gray-900 dark:text-gray-100 truncate",children:["#",_.label]}),_.selectId&&jsxRuntime.jsx("span",{className:"text-xs text-gray-500 dark:text-gray-400 truncate",children:_.selectId})]})})]},_.id))})}),jsxRuntime.jsx("div",{className:"px-3 py-2 border-t border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-900/50",children:jsxRuntime.jsxs("div",{className:"flex items-center gap-3 text-xs text-gray-500 dark:text-gray-400",children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-1",children:[jsxRuntime.jsx("kbd",{className:"px-1.5 py-0.5 bg-white dark:bg-gray-800 border border-gray-300 dark:border-gray-600 rounded text-xs",children:"↑↓"}),jsxRuntime.jsx("span",{children:"Navigate"})]}),jsxRuntime.jsxs("div",{className:"flex items-center gap-1",children:[jsxRuntime.jsx("kbd",{className:"px-1.5 py-0.5 bg-white dark:bg-gray-800 border border-gray-300 dark:border-gray-600 rounded text-xs",children:"↵"}),jsxRuntime.jsx("span",{children:"Select"})]}),jsxRuntime.jsxs("div",{className:"flex items-center gap-1",children:[jsxRuntime.jsx("kbd",{className:"px-1.5 py-0.5 bg-white dark:bg-gray-800 border border-gray-300 dark:border-gray-600 rounded text-xs",children:"Esc"}),jsxRuntime.jsx("span",{children:"Close"})]})]})})]})});MentionList.displayName="MentionList";const isReactNativeWebView=()=>typeof window<"u"&&window.ReactNativeWebView!==void 0,mentionService=(u,n,d,p)=>({fetchMentions:async()=>{const y=d.getState().getMentionParams();if(!y)return[];const{groupId:b,postId:S}=y,T=(S?await n.getRecommendationPost(b,S,0,999):await n.getRecommendationGroup(b,0,999)).entries?.filter(_=>!!_?.user_details)?.map(_=>({id:_?.user_details?.id,label:_?.user_details?.name,avatar:_?.user_details?.avatar,inThisThread:1,name:_?.user_details?.name,selectId:_.user_details?.username,type:MentionType.User,from:PostType.Post}))??[];if(p){const _={id:p.id,label:p.name,avatar:p.avatar,inThisThread:1,name:p.name,selectId:p.username,type:MentionType.User,from:PostType.Post},R=T.filter(A=>A.id!==p.id);return[_,...R]}return T},fetchHashtags:async()=>{const{selectedGroupId:y,groupId:b}=d.getState();return y??b?(await u.fetchConversationList(999,0)).map(T=>({id:T?.conversation_id,label:T?.conversation_detail?.name,avatar:T?.conversation_detail?.avatar,inThisThread:1,name:T?.conversation_detail?.name,selectId:T?.conversation_detail?.select_id,type:MentionType.Group,from:PostType.Post,isCrossExposureEnable:T?.conversation_detail?.allow_cross_exposure})):[]}});function createSuggestion(u,n){return{char:u,items:async()=>await n(),render:()=>{let d,p;return{onStart:m=>{d=new ReactRenderer(MentionList,{props:{...m,char:u},editor:m.editor}),m.clientRect&&(p=tippy("body",{getReferenceClientRect:m.clientRect,appendTo:()=>document.body,theme:"select-post-builder",content:d.element,showOnCreate:!0,interactive:!0,trigger:"manual",placement:"bottom-start"}))},onUpdate(m){d.updateProps({...m,char:u}),!(!m.clientRect||!p?.[0])&&p[0].setProps({getReferenceClientRect:m.clientRect})},onKeyDown(m){return m.event.key==="Escape"?(p?.[0]?.hide(),!0):d?.ref?.onKeyDown(m.event)??!1},onExit(){p?.[0]?.destroy(),d?.destroy()}}}}}const configureMentionExtension=(u,n,d,p)=>{const m=mentionService(u,n,d,p);return Mention.configure({HTMLAttributes:{class:"inline-block px-1.5 py-0.5 rounded font-medium no-underline cursor-pointer transition-all duration-200"},renderText({node:g,suggestion:y}){return`${y?.char??"@"}${g.attrs.label??g.attrs.id}`},renderHTML({node:g,suggestion:y,isFocused:b}){const S=y?.char??"@",E=g?.attrs?.avatar,T=g?.attrs?.type,_=g?.attrs?.from,R=g?.attrs?.inThisThread,A=g?.attrs?.isCrossExposureEnable,C=g?.attrs?.matchStartPosition,k=g?.attrs?.selectId,I=g.attrs.label??g.attrs.id,P=g.attrs.id,D=g?.attrs?.name,O=isReactNativeWebView(),j={"data-type":"mention","data-id":P,"data-label":I,"data-mention-suggestion-char":S,"data-mention-id":P,"data-mention-label":I,"data-mention-avatar":E,"data-mention-in-this-thread":R,"data-mention-name":D,"data-mention-select-id":k,"data-mention-type":T,"data-mention-from":_,"data-mention-is-cross-exposure-enable":A,"data-mention-match-start-position":C,class:"inline-block rounded italic font-medium cursor-pointer transition-all duration-200 text-blue-700 dark:text-blue-300"};if(O){const H=S==="@"?`window.ReactNativeWebView.postMessage(JSON.stringify({type: 'mention', userId: '${P}'}))`:`window.ReactNativeWebView.postMessage(JSON.stringify({type: 'hashtag', groupId: '${P}'}))`;return["span",{...j,onclick:H},`${S}${I}`]}const L=S==="@"?`/users/${P}`:`/groups/${P}`;return["a",{...j,...b?{}:{href:L,target:"_blank"},"data-mention-link":"true"},`${S}${I}`]},suggestions:[createSuggestion("@",m.fetchMentions),createSuggestion("#",m.fetchHashtags)]})},LinkPreviewCompact=({selected:u,href:n,title:d,description:p,image:m,domain:g,onClickDelete:y})=>{const{t:b}=usePostBuilder(),S=React.useMemo(()=>{try{return g||new URL(n).hostname}catch{return"unknown"}},[n,g]),E=T=>{T.preventDefault(),T.stopPropagation(),y()};return jsxRuntime.jsxs("div",{className:cn("not-prose relative w-full group my-4",u?"ring-2 ring-blue-500 ring-offset-2 rounded-lg":""),children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-2 absolute z-50 right-2 top-1",children:[jsxRuntime.jsx(ToolbarButton,{asChild:!0,tooltip:"visitLinkKey",children:jsxRuntime.jsxs("span",{className:"relative",children:[jsxRuntime.jsx("a",{href:n,target:"_blank",rel:"noopener noreferrer",className:"absolute inset-0"}),jsxRuntime.jsx(ExternalLink,{})]})}),jsxRuntime.jsx(ToolbarButton,{tooltip:"removeLinkPreviewKey",onClick:E,"aria-label":b("removeLinkPreviewKey"),type:"button",size:"icon",className:"cursor-pointer size-6 shadow-none bg-transparent group-hover:bg-destructive/5 hover:bg-destructive/10 text-destructive hover:text-destructive",children:jsxRuntime.jsx(Trash2,{})})]}),jsxRuntime.jsx("div",{className:"relative z-0 w-full",children:jsxRuntime.jsxs("div",{className:"group flex items-center gap-3 rounded-lg border bg-accent/30 p-3 transition-all hover:border-foreground/20 hover:shadow-sm",children:[jsxRuntime.jsx("div",{className:"relative h-16 w-16 shrink-0 overflow-hidden rounded-md bg-muted",children:jsxRuntime.jsx("img",{src:m,alt:d,className:"size-16 object-cover transition-transform group-hover:scale-105"})}),jsxRuntime.jsxs("div",{className:"min-w-0 flex-1",children:[jsxRuntime.jsx("h3",{className:"truncate text-sm font-semibold leading-tight text-foreground",children:d}),jsxRuntime.jsx("p",{className:"line-clamp-1 text-xs text-muted-foreground",children:p}),jsxRuntime.jsxs("div",{className:"mt-1 flex items-center gap-1 text-xs text-muted-foreground",children:[jsxRuntime.jsx("span",{className:"truncate",children:S}),jsxRuntime.jsx(ExternalLink,{className:"h-3 w-3 shrink-0 opacity-50"})]})]})]})})]})},LinkPreviewExtended=({selected:u,href:n,title:d,description:p,image:m,domain:g,onClickDelete:y})=>{const{t:b}=usePostBuilder(),S=React.useMemo(()=>{try{return g||new URL(n).hostname}catch{return"unknown"}},[n,g]),E=T=>{T.preventDefault(),T.stopPropagation(),y()};return jsxRuntime.jsxs("div",{className:cn("not-prose relative w-full group mt-4",u?"ring-2 ring-blue-500 ring-offset-2 rounded-lg":""),children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-2 absolute z-50 right-3 top-3",children:[jsxRuntime.jsx(ToolbarButton,{asChild:!0,tooltip:"visitLinkKey",className:"cursor-pointer backdrop-blur-2xl size-6 shadow-none group-hover:bg-accent/70 group-hover:text-accent-foreground text-primary-send",children:jsxRuntime.jsxs("span",{className:"relative",children:[jsxRuntime.jsx("a",{href:n,target:"_blank",rel:"noopener noreferrer",className:"absolute inset-0"}),jsxRuntime.jsx(ExternalLink,{})]})}),jsxRuntime.jsx(ToolbarButton,{tooltip:"removeLinkPreviewKey",onClick:E,"aria-label":b("removeLinkPreviewKey"),type:"button",size:"icon",className:"cursor-pointer backdrop-blur-2xl size-6 shadow-none bg-transparent group-hover:bg-red-50/70 hover:bg-red-50 text-destructive hover:text-destructive",children:jsxRuntime.jsx(Trash2,{})})]}),jsxRuntime.jsx("div",{className:"relative z-0 w-full",children:jsxRuntime.jsxs("div",{className:"group overflow-hidden flex flex-col rounded-lg border bg-accent/30 transition-all hover:border-foreground/20 hover:shadow-sm",children:[jsxRuntime.jsx("div",{className:"relative h-80 w-full shrink-0 overflow-hidden bg-muted border-b",children:jsxRuntime.jsx("img",{src:m,alt:d,className:"size-full object-cover transition-transform group-hover:scale-105"})}),jsxRuntime.jsxs("div",{className:"min-w-0 flex-1 p-3",children:[jsxRuntime.jsxs("div",{className:"mt-1 flex items-center gap-1 text-xs text-muted-foreground",children:[jsxRuntime.jsx("span",{className:"truncate",children:S}),jsxRuntime.jsx(ExternalLink,{className:"h-3 w-3 shrink-0 opacity-50"})]}),jsxRuntime.jsx("h3",{className:"mt-1 mb-2 truncate text-lg font-semibold leading-tight text-foreground",children:d}),jsxRuntime.jsx("p",{className:"line-clamp-2 text-sm text-muted-foreground",children:p})]})]})})]})},LinkPreviewCard=({node:u,deleteNode:n,selected:d})=>{const{loading:p,href:m,domain:g,variant:y}=u.attrs,{t:b}=usePostBuilder(),S=React.useMemo(()=>{try{return g||new URL(m).hostname}catch{return"unknown"}},[m,g]);return p?jsxRuntime.jsx(NodeViewWrapper,{children:jsxRuntime.jsx(Skeleton,{className:"w-full h-24 my-4 flex items-center justify-center rounded-lg",children:jsxRuntime.jsx("span",{className:"text-sm text-muted-foreground",children:b("fetchingMetadataKey")})})}):m?jsxRuntime.jsx(NodeViewWrapper,{contentEditable:!1,"data-drag-handle":!0,children:y===LinkPreviewType.Compact?jsxRuntime.jsx(LinkPreviewCompact,{...u.attrs,selected:d,domain:S,onClickDelete:n}):jsxRuntime.jsx(LinkPreviewExtended,{...u.attrs,selected:d,domain:S,onClickDelete:n})}):null};function insertLinkPreviewAfterLinkImpl(u,n,d,p){let m=null;if(d.doc.descendants((E,T)=>{if(m!==null)return!1;if(E.isText&&E.marks){for(const _ of E.marks)if(_.type.name==="customLink"&&_.attrs.uid===u)return m=T,!1}}),m===null)return!1;const g=d.doc.resolve(m);if(g.depth>1)return!1;let y=!1;if(d.doc.descendants(E=>{if(E.type.name==="linkPreview"&&E.attrs.uid===u)return y=!0,!1}),y)return!1;let b=g.after(1);for(;b<d.doc.content.size;){const E=d.doc.nodeAt(b);if(E?.type.name!=="linkPreview")break;const T=E.attrs.uid;let _=null;if(T&&d.doc.descendants((R,A)=>{if(_!==null)return!1;if(R.isText&&R.marks){for(const C of R.marks)if(C.type.name==="customLink"&&C.attrs.uid===T)return _=A,!1}}),_!==null&&_<m)b+=E.nodeSize;else break}if(!p)return!0;const S=d.schema.nodes.linkPreview;return S?(p(d.tr.insert(b,S.create(n))),!0):!1}function insertLinkPreviewAtTailImpl(u,n,d){const p=n.schema.nodes.linkPreview;if(!p)return!1;let m=n.doc.content.size;return n.doc.forEach((g,y)=>{g.type.name!=="mediaGroup"&&(m=y+g.nodeSize)}),d&&d(n.tr.insert(m,p.create(u))),!0}function insertLinkPreviewForModeImpl(u,n,d){return u.linkMode?insertLinkPreviewAtTailImpl(u.attributes,n,d):insertLinkPreviewAfterLinkImpl(u.uid,u.attributes,n,d)}const LinkPreview=Node3.create({name:"linkPreview",group:"block",atom:!0,addOptions(){return{variant:LinkPreviewType.Compact,selectable:!0,draggable:!0}},draggable(){return this?.options?.draggable??!0},selectable(){return this?.options?.selectable??!0},addAttributes(){return{variant:{default:this.options.variant},uid:{default:null},href:{default:null},title:{default:null},description:{default:null},image:{default:null},domain:{default:null},loading:{default:!1}}},parseHTML(){return[{tag:"div[data-link-preview]",getAttrs:u=>{if(typeof u=="string")return!1;const n=u,d=n.querySelector("a");return{href:n.getAttribute("data-href")||d?.getAttribute("href")||"",uid:n.getAttribute("data-uid")||null,title:n.getAttribute("data-title")||null,description:n.getAttribute("data-description")||null,image:n.getAttribute("data-image")||null,domain:n.getAttribute("data-domain")||null}}}]},renderHTML({node:u}){const{href:n,uid:d,title:p,description:m,image:g,domain:y}=u.attrs;if(!n)return["div",{}];const b=[["a",{href:n,target:"_blank",rel:"noopener noreferrer",class:"absolute inset-0 z-30","aria-label":p||n}],["div",{class:"relative z-20 flex items-center gap-3 w-full"},...g?[["div",{class:"relative h-16 w-16 flex-shrink-0 overflow-hidden rounded-md bg-muted"},["img",{src:g,alt:p||"",class:"h-full w-full object-cover transition-transform group-hover:scale-105"}]]]:[],["div",{class:"min-w-0 flex-1"},...p?[["h3",{class:"truncate text-sm font-semibold leading-tight text-foreground"},p]]:[],...m?[["p",{class:"line-clamp-1 text-xs text-muted-foreground"},m]]:[],...y?[["div",{class:"mt-1 flex items-center gap-1 text-xs text-muted-foreground"},["span",{class:"truncate"},y]]]:[]]]];return["div",{"data-link-preview":"","data-href":n,"data-uid":d||"","data-title":p||"","data-description":m||"","data-image":g||"","data-domain":y||"",class:"not-prose my-4 relative group flex items-center gap-3 rounded-lg border bg-card p-3 transition-all hover:border-foreground/20 hover:shadow-sm"},...b]},addNodeView(){return ReactNodeViewRenderer(LinkPreviewCard)},addCommands(){return{setLinkPreview:u=>({state:n,dispatch:d,commands:p,editor:m})=>{if(u.uid){let g=!1;if(m.state.doc.descendants(y=>{if(y.type.name===this.name&&y.attrs.uid===u.uid)return g=!0,!1}),g)return p.updateLinkPreviewByUid(u.uid,u)}return insertLinkPreviewAtTailImpl(u,n,d)},updateLinkPreviewByUid:createUpdateByUidCommand(this.name),deleteLinkPreviewByUid:createDeleteByUidCommand(this.name),updateLinkPreview:u=>({commands:n})=>n.updateAttributes(this.name,u),insertLinkPreviewAfterLink:(u,n)=>({state:d,dispatch:p})=>insertLinkPreviewAfterLinkImpl(u,n,d,p),insertLinkPreviewForMode:u=>({state:n,dispatch:d})=>insertLinkPreviewForModeImpl(u,n,d)}},addKeyboardShortcuts(){return{"Mod-Shift-k":()=>this.editor.commands.setLinkPreview({href:"",title:null,description:null,image:null,domain:null}),Backspace:()=>{const{selection:u}=this.editor.state,{$anchor:n}=u;return n.parent.type.name===this.name&&n.parentOffset===0?this.editor.commands.deleteNode(this.name):!1}}}}),EnterHardBreak=Extension.create({name:"customEnterHardBreak",addKeyboardShortcuts(){return{Enter:()=>this.editor.commands.setHardBreak()}}}),MediaGroupView=({node:u,editor:n})=>{const[d,p]=React.useState(null),{trackMediaRemoved:m}=useAnalyticsTracking(),g=b=>{const S=b?.attrs?.uid,E=n?.view?.dom?.getAttribute("data-editor-type")||EditorTypes.Media;n.commands.deleteMediaByUid(S),m({mediaType:MediaTypeMap[b?.attrs?.type],editorType:E})},y=u?.content?.content||[];return jsxRuntime.jsxs(NodeViewWrapper,{className:"not-prose media-group-wrapper select-none leading-none mt-12",contentEditable:!1,children:[jsxRuntime.jsxs("div",{className:"flex flex-wrap gap-2 leading-none mt-auto",children:[y.map((b,S)=>{const E=b?.attrs?.uploading,T=b?.attrs?.progress||0;return jsxRuntime.jsxs("div",{className:"relative group leading-none",children:[jsxRuntime.jsx(Button,{size:"icon",onClick:()=>g(b),className:"absolute size-6 top-1 right-1 z-10 p-1.5 bg-red-50 hover:bg-red-100 text-destructive rounded-full shadow-lg transition-all opacity-100 group-hover:scale-110",title:"Delete media",children:jsxRuntime.jsx(X,{className:"w-3.5 h-3.5"})}),E?jsxRuntime.jsxs("div",{className:"size-20 bg-muted rounded-lg border border-border flex items-center justify-center relative overflow-hidden",children:[jsxRuntime.jsxs("div",{className:"text-center space-y-2",children:[b.attrs.type===MediaNodeTypes.Image&&jsxRuntime.jsx(Image$2,{className:"w-8 h-8 text-muted-foreground/50 mx-auto"}),b.attrs.type===MediaNodeTypes.Video&&jsxRuntime.jsx(Video,{className:"w-8 h-8 text-muted-foreground/50 mx-auto"}),b.attrs.type===MediaNodeTypes.Audio&&jsxRuntime.jsx(Music,{className:"w-8 h-8 text-muted-foreground/50 mx-auto"}),jsxRuntime.jsxs("p",{className:"text-xs text-muted-foreground",children:[Math.round(T),"%"]})]}),jsxRuntime.jsx("div",{className:"absolute bottom-0 left-0 right-0 p-2",children:jsxRuntime.jsx(Progress,{value:T,className:"h-1"})})]}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[b.attrs.type===MediaNodeTypes.Image&&jsxRuntime.jsx("img",{src:b.attrs.src,alt:b.attrs.caption||"",className:"size-20 object-cover rounded-lg border border-border cursor-pointer hover:opacity-80 transition-opacity",onClick:()=>p({src:b.attrs.src,type:MediaNodeTypes.Image})}),b.attrs.type===MediaNodeTypes.Video&&jsxRuntime.jsx("video",{src:b.attrs.src,className:"size-20 object-cover rounded-lg border border-border cursor-pointer hover:opacity-80 transition-opacity",onClick:()=>p({src:b.attrs.src,type:MediaNodeTypes.Video})}),b.attrs.type===MediaNodeTypes.Audio&&jsxRuntime.jsx("div",{className:"size-20 flex items-center justify-center bg-accent rounded-lg border border-border",children:jsxRuntime.jsx(Music,{className:"w-8 h-8 text-muted-foreground"})})]}),b.attrs.caption&&!E&&jsxRuntime.jsx("p",{className:"text-xs text-muted-foreground text-center mt-1 truncate w-32",children:b.attrs.caption})]},b?.attrs?.uid||S)}),jsxRuntime.jsx("div",{className:"hidden",children:jsxRuntime.jsx(NodeViewContent,{})})]}),d&&jsxRuntime.jsx(MediaPreviewModal,{open:!!d,onOpenChange:b=>!b&&p(null),src:d.src,type:d.type})]})},MediaModePluginKey=new PluginKey("mediaMode"),createMediaModePlugin=()=>{let u=!1;return new Plugin({key:MediaModePluginKey,appendTransaction(n,d,p){if(u||!n.some(g=>g.docChanged)||n.some(g=>g.getMeta("mediaMode-plugin"))||n.some(g=>g.getMeta("addToHistory")===!1))return null;try{u=!0;const g=p.tr;let y=!1;const b=[];if(p.doc.forEach((C,k)=>{C.type.name==="media"&&b.push({node:C,pos:k,size:C.nodeSize})}),b.length===0){let C=!1,k=null;if(p.doc.forEach((I,P)=>{I.type.name==="mediaGroup"&&(C=!0,I.content.size===0&&(g.delete(P,P+I.nodeSize),y=!0)),I.type.name==="paragraph"&&I.descendants(D=>{D.marks&&D.marks.forEach(O=>{O.type.name==="customLink"&&O.attrs.previewPayload&&(k=O.attrs.previewPayload)})})}),y&&C&&k){let I=!1;if(g.doc.forEach(P=>{P.type.name==="linkPreview"&&(I=!0)}),!I&&p.schema.nodes.linkPreview){const P=k,D=p.schema.nodes.linkPreview.create({uid:v4(),href:P.linkUrl??"",title:P.linkTitle??"",description:P.linkDesc??"",image:P.linkImage?.url??"",variant:LinkPreviewType.Extended});g.insert(g.doc.content.size,D),y=!0}}return y&&(g.setMeta("addToHistory",!1),g.setMeta("mediaMode-plugin",!0)),y?g:null}let S=null,E=null;p.doc.forEach((C,k)=>{C.type.name==="linkPreview"&&(S=k,E=C.nodeSize)}),S!==null&&E!==null&&(g.delete(S,Number(S)+Number(E)),y=!0);const T=y?g.doc:p.doc,_=[];T.forEach((C,k)=>{C.type.name==="media"&&_.push({node:C,pos:k,size:C.nodeSize})});let R=null,A=null;if(T.forEach((C,k)=>{C.type.name==="mediaGroup"&&(R=k,A=C)}),R!==null&&A){const C=A.content.size;[..._].sort((j,L)=>L.pos-j.pos).forEach(({pos:j,size:L})=>{g.delete(j,j+L)});const P=_.filter(j=>j.pos<R).reduce((j,L)=>j+L.size,0),O=R-P+1+C;let N=0;_.forEach(({node:j})=>{g.insert(O+N,j),N+=j.nodeSize}),y=!0}else{if(!p.schema.nodes.mediaGroup)return null;const C=_.map(P=>P.node);if(C.some(P=>!P||P.type.name!=="media"))return null;const k=p.schema.nodes.mediaGroup.create({},C);[..._].sort((P,D)=>D.pos-P.pos).forEach(({pos:P,size:D})=>{g.delete(P,P+D)}),g.insert(g.doc.content.size,k),y=!0}if(y){const C=g.doc.content.size;if(C>=0&&C<=g.doc.content.size)try{const k=g.doc.resolve(C);g.setSelection(TextSelection.near(k))}catch{}g.setMeta("addToHistory",!1),g.setMeta("mediaMode-plugin",!0)}return y?g:null}catch{return null}finally{u=!1}}})},MediaGroupNode=Node3.create({name:"mediaGroup",group:"block",content:"media*",atom:!1,selectable:!1,draggable:!1,addOptions(){return{mediaMode:!1}},parseHTML(){return[{tag:"div[data-media-group]"}]},renderHTML({HTMLAttributes:u}){return["div",mergeAttributes(u,{"data-media-group":""}),0]},addNodeView(){return ReactNodeViewRenderer(MediaGroupView)},addProseMirrorPlugins(){return this.options.mediaMode?[createMediaModePlugin()]:[]}}),StripHyperlinkText=Extension.create({name:"stripHyperlinkText",addProseMirrorPlugins(){return[new Plugin({key:new PluginKey("stripHyperlinkText"),props:{transformPastedHTML(u){const n=new DOMParser().parseFromString(u,"text/html");return n.querySelectorAll("a[href]").forEach(d=>{const p=d.href||d.getAttribute("href")||"",m=d.textContent?.trim()??"";if(p&&m&&m!==p){const g=d.parentNode;g&&(g.insertBefore(n.createTextNode(`${m} (`),d),d.textContent=p,d.after(n.createTextNode(")")))}}),n.body.innerHTML}}})]}}),PollLink=index_default$7.extend({addAttributes(){return{...this.parent?.(),uid:{default:null,parseHTML:()=>null,renderHTML:()=>({})},text:{default:null,parseHTML:()=>null,renderHTML:()=>({})},previewPayload:{default:null,parseHTML:()=>null,renderHTML:()=>({})}}}}),CODE_HTML_ATTRIBUTES={class:"bg-muted text-foreground border border-border font-mono leading-snug rounded px-0.5 py-px after:content-none before:content-none"},CODE_BLOCK_HTML_ATTRIBUTES={class:"bg-muted text-foreground border border-border font-mono leading-snug rounded"},createCustomDocument=u=>index_default$9.extend({content:u}),PollDoc=createCustomDocument("paragraph+ poll"),MediaDoc=createCustomDocument("paragraph+ media? linkPreview? mediaGroup?");createCustomDocument("paragraph linkPreview?");const getStarterKitConfig=({includeLink:u=!1,includeDocument:n=!0})=>({...n?{}:{document:!1},...u?{}:{link:!1},code:{HTMLAttributes:CODE_HTML_ATTRIBUTES},codeBlock:{HTMLAttributes:CODE_BLOCK_HTML_ATTRIBUTES}}),getPlaceholderExtension=u=>Placeholder.configure({placeholder:u,showOnlyWhenEditable:!0}),getMentionExtension=(u,n,d,p)=>configureMentionExtension(u,n,d,p),getExtensions=({editorType:u,api:n,store:d,user:p,t:m})=>{const y={[EditorTypes.Blog]:getDefaultExtensions,[EditorTypes.Media]:getMediaExtensions,[EditorTypes.Poll]:getPollExtensions}[u];return y?y({api:n,store:d,user:p,t:m}):[]},getDefaultExtensions=({api:u,store:n,user:d})=>{const{core:p,mfs:m,fileStore:g}=u;return[index_default$4.configure(getStarterKitConfig({includeLink:!1})),getPlaceholderExtension(`What's on your mind, ${d?.name?d?.name:""}`),index_default$2,index_default$1,index_default$3.configure({types:["heading","paragraph","media"],alignments:[Alignment.LEFT,Alignment.CENTER,Alignment.RIGHT],defaultAlignment:Alignment.LEFT}),MediaNode,Poll,Iframe.configure({api:p}),CustomLink.configure({openOnClick:!1,linkOnPaste:!1,api:p}),LinkPreview,getMentionExtension(p,m,n,d),SmartMediaUpload.configure({api:g}),SmartLinkPaste.configure({api:p})]},getPollExtensions=({api:u,store:n,user:d,t:p})=>{const{core:m,mfs:g}=u;return[PollDoc,index_default$6,index_default$5,PollLink.configure({HTMLAttributes:{class:"underline"}}),index_default$8,getPlaceholderExtension(p("pollQuestionPlaceholderKey")),EnterHardBreak,Poll,getMentionExtension(m,g,n,d),StripHyperlinkText]},getMediaExtensions=({api:u,store:n,user:d})=>{const{core:p,mfs:m,fileStore:g}=u;return[MediaDoc,index_default$6,index_default$5,index_default$8,getPlaceholderExtension(`What's on your mind, ${d?.name?d?.name:""}`),EnterHardBreak,MediaNode.configure({attrs:{mediaMode:!0}}),MediaGroupNode.configure({mediaMode:!0}),CustomLink.configure({openOnClick:!1,linkOnPaste:!1,api:p,linkMode:!0}),LinkPreview.configure({variant:LinkPreviewType.Extended,draggable:!1}),getMentionExtension(p,m,n,d),SmartMediaUpload.configure({api:g}),SmartLinkPaste.configure({api:p,autoEmbed:!1,autoLinkSelection:!1}),StripHyperlinkText]},getEditorProps=()=>({attributes:{class:cn(`max-w-full min-h-44 prose prose-sm sm:prose-base px-4 py-2 prose-img:my-3
241
241
 
242
242
  prose-blockquote:p-4 prose-blockquote:my-4 prose-blockquote:border-s-4
243
243
  prose-blockquote:border-gray-300 prose-blockquote:bg-gray-50