@select-org/select-post-builder 1.1.56 → 1.1.57
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +16 -15
- package/dist/post-builder.cjs.js +3 -3
- package/dist/post-builder.js +24 -11
- package/package.json +1 -1
package/dist/post-builder.cjs.js
CHANGED
|
@@ -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(ee=>{})},[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(Q=>!isPlaceholder(Q)),L=j.length>=POLL_LIMITS.MIN,H=React.useRef(j.length);React.useEffect(()=>{const Q=H.current,ne=j.length;H.current=ne,Q===0&&ne>=1&&requestAnimationFrame(()=>{if(!g||g.isDestroyed)return;let F="";if(g.state.doc.forEach(V=>{V.type.name==="paragraph"&&(F+=V.textContent)}),F.trim())return;const q=m("pollQuestionPlaceholderKey");g.chain().insertContentAt(1,q).setTextSelection({from:1,to:1+q.length}).focus().run()})},[j.length,g,m]);const B=Q=>{const ne=Q.filter(F=>!isPlaceholder(F));D.current=!0,n(ne)},Y=Q=>{A(Q),setTimeout(()=>{B(Q)},0)},Z=()=>{if(!y.trim()||!N)return;const Q=createTextOption(y,R.length),ne=[...R,Q];Y(ne),C({option_count:ne.length,option_type:"text"}),b(""),E(!1)},ee=async Q=>{if(!Q||!N)return;let ne=Q.slice(0,O);const F=ne.filter(re=>!validateFile(re,MAX_FILE_SIZE,[]).valid);if(F.length>0){const re=F.map(ae=>`"${ae.name}"`).join(", ");if(toast.error(`${F.length>1?"Some files exceed":`${re} exceeds`} the ${MAX_FILE_SIZE/1024/1024}MB limit`),ne=ne.filter(ae=>validateFile(ae,MAX_FILE_SIZE,[]).valid),ne.length===0)return}const q=R.length;if(ne=await Promise.all(ne.map(async re=>{if(re.type.startsWith("image/"))try{return await imageCompression(re,{maxSizeMB:10})}catch{return re}return re})),!p){const re=ne.map((le,ce)=>({type:"placeholder",key:`placeholder-${Date.now()}-${ce}`})),ae=[...R,...re];A(ae);try{const le=ne.map(async(oe,de)=>{try{const fe=await d.uploadImage(oe);return P({editorType:EditorTypes.Poll,mediaType:oe.type.startsWith("video/")?"video":"image",fileSizeMB:oe.size/1048576,source:"local"}),createPollMediaOption(fe,q+de)}catch{return I({editorType:EditorTypes.Poll,mediaType:oe.type.startsWith("video/")?"video":"image",fileSizeMB:oe.size/1048576,source:"local",errorType:"server_error"}),null}}),ce=await Promise.all(le);A(oe=>{const de=[...oe];ce.forEach((he,me)=>{const ge=q+me;he!==null&&ge<de.length&&(de[ge]=he)});const fe=de.filter(he=>!isPlaceholder(he));return ce?.forEach(he=>{he!==null&&C({option_count:fe.length,option_type:PollOptionType[he.type]})}),setTimeout(()=>{B(fe)},0),fe})}catch{A(ce=>{const oe=ce.filter(de=>!isPlaceholder(de));return setTimeout(()=>{B(oe)},0),oe})}return}const V=g?.storage?.poll;if(!V)return;const W=ne.map((re,ae)=>{const le=URL.createObjectURL(re);return{placeholder:createPollMediaPlaceholder(re,le,q+ae),blob:re,blobUrl:le}}),te=[...R,...W.map(re=>re.placeholder)];A(te),setTimeout(()=>B(te),0),W.forEach(({placeholder:re,blob:ae})=>{const le=new AbortController,ce=ae instanceof File?ae:new File([ae],re.key,{type:ae.type}),oe=d.uploadChunked(ce,void 0,le.signal).then(de=>({...re,sources:{original:{url:de.high_resolution??de.url,width:de.width??0,height:de.height??0,isBase64:!1},thumbnail:{url:de.thumbnail??de.url,width:de.width??0,height:de.height??0,isBase64:!1},placeholder:{url:de.placeholder??"",width:de.width??0,height:de.height??0,isBase64:!0}}}));oe.catch(()=>{}),oe.then(de=>{A(fe=>{const he=fe.map(me=>!isPlaceholder(me)&&me.key===re.key?de:me);return setTimeout(()=>B(he),0),he})}).catch(()=>{}),V.registerPendingUpload(re.key,{blob:ae,promise:oe,abort:()=>le.abort()})})},J=async(Q,ne)=>{if(!N)return;const F=R.length,q={type:"placeholder",key:`placeholder-${Date.now()}`},V=[...R,q];A(V);try{const W=await d.uploadUrl(Q),te=createPollMediaOption(W,F,ne),re=ne===ImageSearchFrom.Gif||W?.url?.toLowerCase().includes(".gif");P({editorType:EditorTypes.Poll,mediaType:re?"gif":"image",fileSizeMB:0,source:ne===ImageSearchFrom?.Gif?"gif_search":"image_search"}),A(ae=>{const le=[...ae];return F<le.length&&isPlaceholder(le[F])&&(le[F]=te),C({option_count:le.filter(ce=>!isPlaceholder(ce)).length,option_type:re?"gif":"image"}),setTimeout(()=>{B(le)},0),le})}catch{I({editorType:EditorTypes.Poll,mediaType:ne===ImageSearchFrom.Gif?"gif":"image",fileSizeMB:0,source:ne===ImageSearchFrom.Gif?"gif_search":"image_search",errorType:"server_error"}),A(te=>{const re=te.filter(ae=>!isPlaceholder(ae));return setTimeout(()=>{B(re)},0),re})}},se=Q=>{if(!L)return;const ne=R[Q];if(!isPlaceholder(ne)){const q=g?.storage?.poll,V=q?.getPendingUpload?.(ne.key);V&&(V.abort(),q.clearPendingUpload(ne.key))}const F=R.filter((q,V)=>V!==Q);isPlaceholder(ne)||k({option_count:F.filter(q=>!isPlaceholder(q)).length,option_type:PollOptionType[ne.type]}),Y(F)};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((Q,ne)=>isPlaceholder(Q)?jsxRuntime.jsx(LoadingSlot,{},Q.key):isTextChoice(Q)?jsxRuntime.jsx(TextChoiceCard,{choice:Q,index:ne,canRemove:L,onRemove:()=>se(ne)},Q.key):jsxRuntime.jsx(MediaChoiceCard,{choice:Q,index:ne,canRemove:L,onRemove:()=>se(ne)},Q.key)),N&&jsxRuntime.jsx(AddChoiceBlock,{disabled:!N,onFiles:Q=>{ee(Q)},onOpenSearch:()=>_(!0),onOpenText:()=>E(!0)}),Array.from({length:Math.max(0,O-1)}).map((Q,ne)=>jsxRuntime.jsx(EmptyPlaceholder,{slotNumber:R.length+2+ne},`empty-${ne}`))]}),jsxRuntime.jsx(TextOptionModal,{open:S,onOpenChange:E,value:y,onChange:b,onSubmit:Z,disabled:!N}),T&&jsxRuntime.jsx(ImageSearchModal,{open:T,onOpenChange:_,onImageSelect:(Q,ne)=>{J(Q,ne)},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 se=getMarkAttrsAtSelection(y?.state,"customLink"),Q=normalizeUrl(se?.href??"");I(isValidUrl(Q)),D(isValidUrl(Q)),T(se?.uid??null),R(se?.href??""),C(se?.text||se?.href||"")},H=J=>{const se=J.target.value;if(se==="https:/")return;const Q=normalizeUrl(se);I(isValidUrl(Q)),R(Q)},B=J=>C(J.target.value),Y=()=>{const J=isValidUrl(_);I(J)},Z=(J,se,Q)=>{N(!0);let ne;b?.resolveUrl(J)?.then(F=>ne=F)?.catch(F=>{})?.finally(()=>{const F=convertLinkMetaToPreviewItem(ne);N(!1),p(J,se,Q,F),d?.(!1)})},ee=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:ee,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:ee,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 ee=_createHooksMap();n.isSupported=typeof entries=="function"&&typeof O=="function"&&L&&L.createHTMLDocument!==void 0;const{MUSTACHE_EXPR:J,ERB_EXPR:se,TMPLIT_EXPR:Q,DATA_ATTR:ne,ARIA_ATTR:F,IS_SCRIPT_OR_DATA:q,ATTR_WHITESPACE:V,CUSTOM_ELEMENT:W}=EXPRESSIONS;let{IS_ALLOWED_URI:te}=EXPRESSIONS,re=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 he=Object.seal(create$6(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let me=!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,re=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,me=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,te=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&&(re=addToSet({},text),le=[],Ce.html===!0&&(addToSet(re,html$1),addToSet(le,html)),Ce.svg===!0&&(addToSet(re,svg$1),addToSet(le,svg),addToSet(le,xml)),Ce.svgFilters===!0&&(addToSet(re,svgFilters),addToSet(le,svg),addToSet(le,xml)),Ce.mathMl===!0&&(addToSet(re,mathMl$1),addToSet(le,mathMl),addToSet(le,xml))),ue.ADD_TAGS&&(typeof ue.ADD_TAGS=="function"?he.tagCheck=ue.ADD_TAGS:(re===ae&&(re=clone(re)),addToSet(re,ue.ADD_TAGS,$e))),ue.ADD_ATTR&&(typeof ue.ADD_ATTR=="function"?he.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&&(re["#text"]=!0),we&&addToSet(re,["html","head","body"]),re.table&&(addToSet(re,["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&<.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(ee.beforeSanitizeElements,ue,null),Et(ue))return ht(ue),!0;const Re=$e(ue.nodeName);if(mt(ee.uponSanitizeElement,ue,{tagName:Re,allowedTags:re}),ve&&ue.hasChildNodes()&&!kt(ue.firstElementChild)&®ExpTest(/<[/\w!]/g,ue.innerHTML)&®ExpTest(/<[/\w!]/g,ue.textContent)||ue.nodeType===NODE_TYPE.progressingInstruction||ve&&ue.nodeType===NODE_TYPE.comment&®ExpTest(/<[/\w]/g,ue.data))return ht(ue),!0;if(!(he.tagCheck instanceof Function&&he.tagCheck(Re))&&(!re[Re]||de[Re])){if(!de[Re]&&It(Re)&&(oe.tagNameCheck instanceof RegExp&®ExpTest(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")&®ExpTest(/<\/no(script|embed|frames)/i,ue.innerHTML)?(ht(ue),!0):(Te&&ue.nodeType===NODE_TYPE.text&&(be=ue.textContent,arrayForEach([J,se,Q],et=>{be=stringReplace(be,et," ")}),ue.textContent!==be&&(arrayPush(n.removed,{element:ue.cloneNode()}),ue.textContent=be)),mt(ee.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]&®ExpTest(ne,be))){if(!(me&®ExpTest(F,be))){if(!(he.attributeCheck instanceof Function&&he.attributeCheck(be,ue))){if(!le[be]||fe[be]){if(!(It(ue)&&(oe.tagNameCheck instanceof RegExp&®ExpTest(oe.tagNameCheck,ue)||oe.tagNameCheck instanceof Function&&oe.tagNameCheck(ue))&&(oe.attributeNameCheck instanceof RegExp&®ExpTest(oe.attributeNameCheck,be)||oe.attributeNameCheck instanceof Function&&oe.attributeNameCheck(be,ue))||be==="is"&&oe.allowCustomizedBuiltInElements&&(oe.tagNameCheck instanceof RegExp&®ExpTest(oe.tagNameCheck,Re)||oe.tagNameCheck instanceof Function&&oe.tagNameCheck(Re))))return!1}else if(!Ge[be]){if(!regExpTest(te,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(ee.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(ee.uponSanitizeAttribute,ue,Re),st=Re.attrValue,Le&&(bt==="id"||bt==="name")&&(ut(nt,ue),st=De+st),ve&®ExpTest(/((--!?|])>)|<\/(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&®ExpTest(/\/>/i,st)){ut(nt,ue);continue}Te&&arrayForEach([J,se,Q],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(ee.afterSanitizeAttributes,ue,null)},Kt=function ke(ue){let be=null;const Re=Ct(ue);for(mt(ee.beforeSanitizeShadowDOM,ue,null);be=Re.nextNode();)mt(ee.uponSanitizeShadowNode,be,null),Mt(be),Nt(be),be.content instanceof g&&ke(be.content);mt(ee.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(!re[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&&re["!doctype"]&&be.ownerDocument&&be.ownerDocument.doctype&&be.ownerDocument.doctype.name&®ExpTest(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(ee=>{})},[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(Q=>!isPlaceholder(Q)),L=j.length>=POLL_LIMITS.MIN,H=React.useRef(j.length);React.useEffect(()=>{const Q=H.current,ne=j.length;H.current=ne,Q===0&&ne>=1&&requestAnimationFrame(()=>{if(!g||g.isDestroyed)return;let F="";if(g.state.doc.forEach(V=>{V.type.name==="paragraph"&&(F+=V.textContent)}),F.trim())return;const q=m("pollQuestionPlaceholderKey");g.chain().insertContentAt(1,q).setTextSelection({from:1,to:1+q.length}).focus().run()})},[j.length,g,m]);const B=Q=>{const ne=Q.filter(F=>!isPlaceholder(F));D.current=!0,n(ne)},Y=Q=>{A(Q),setTimeout(()=>{B(Q)},0)},Z=()=>{if(!y.trim()||!N)return;const Q=createTextOption(y,R.length),ne=[...R,Q];Y(ne),C({option_count:ne.length,option_type:"text"}),b(""),E(!1)},ee=async Q=>{if(!Q||!N)return;let ne=Q.slice(0,O);const F=ne.filter(re=>!validateFile(re,MAX_FILE_SIZE,[]).valid);if(F.length>0){const re=F.map(ae=>`"${ae.name}"`).join(", ");if(toast.error(`${F.length>1?"Some files exceed":`${re} exceeds`} the ${MAX_FILE_SIZE/1024/1024}MB limit`),ne=ne.filter(ae=>validateFile(ae,MAX_FILE_SIZE,[]).valid),ne.length===0)return}const q=R.length;if(ne=await Promise.all(ne.map(async re=>{if(re.type.startsWith("image/"))try{return await imageCompression(re,{maxSizeMB:10})}catch{return re}return re})),!p){const re=ne.map((le,ce)=>({type:"placeholder",key:`placeholder-${Date.now()}-${ce}`})),ae=[...R,...re];A(ae);try{const le=ne.map(async(oe,de)=>{try{const fe=await d.uploadImage(oe);return P({editorType:EditorTypes.Poll,mediaType:oe.type.startsWith("video/")?"video":"image",fileSizeMB:oe.size/1048576,source:"local"}),createPollMediaOption(fe,q+de)}catch{return I({editorType:EditorTypes.Poll,mediaType:oe.type.startsWith("video/")?"video":"image",fileSizeMB:oe.size/1048576,source:"local",errorType:"server_error"}),null}}),ce=await Promise.all(le);A(oe=>{const de=[...oe];ce.forEach((he,me)=>{const ge=q+me;he!==null&&ge<de.length&&(de[ge]=he)});const fe=de.filter(he=>!isPlaceholder(he));return ce?.forEach(he=>{he!==null&&C({option_count:fe.length,option_type:PollOptionType[he.type]})}),setTimeout(()=>{B(fe)},0),fe})}catch{A(ce=>{const oe=ce.filter(de=>!isPlaceholder(de));return setTimeout(()=>{B(oe)},0),oe})}return}const V=g?.storage?.poll;if(!V)return;const W=ne.map((re,ae)=>{const le=URL.createObjectURL(re);return{placeholder:createPollMediaPlaceholder(re,le,q+ae),blob:re,blobUrl:le}}),te=[...R,...W.map(re=>re.placeholder)];A(te),setTimeout(()=>B(te),0),W.forEach(({placeholder:re,blob:ae})=>{const le=new AbortController,ce=ae instanceof File?ae:new File([ae],re.key,{type:ae.type}),oe=d.uploadChunked(ce,void 0,le.signal).then(de=>({...re,sources:{original:{url:de.high_resolution??de.url,width:de.width??0,height:de.height??0,isBase64:!1},thumbnail:{url:de.thumbnail??de.url,width:de.width??0,height:de.height??0,isBase64:!1},placeholder:{url:de.placeholder??"",width:de.width??0,height:de.height??0,isBase64:!0}}}));oe.catch(()=>{}),oe.then(de=>{A(fe=>{const he=fe.map(me=>!isPlaceholder(me)&&me.key===re.key?de:me);return setTimeout(()=>B(he),0),he})}).catch(()=>{}),V.registerPendingUpload(re.key,{blob:ae,promise:oe,abort:()=>le.abort()})})},J=async(Q,ne)=>{if(!N)return;const F=R.length,q={type:"placeholder",key:`placeholder-${Date.now()}`},V=[...R,q];A(V);try{const W=await d.uploadUrl(Q),te=createPollMediaOption(W,F,ne),re=ne===ImageSearchFrom.Gif||W?.url?.toLowerCase().includes(".gif");P({editorType:EditorTypes.Poll,mediaType:re?"gif":"image",fileSizeMB:0,source:ne===ImageSearchFrom?.Gif?"gif_search":"image_search"}),A(ae=>{const le=[...ae];return F<le.length&&isPlaceholder(le[F])&&(le[F]=te),C({option_count:le.filter(ce=>!isPlaceholder(ce)).length,option_type:re?"gif":"image"}),setTimeout(()=>{B(le)},0),le})}catch{I({editorType:EditorTypes.Poll,mediaType:ne===ImageSearchFrom.Gif?"gif":"image",fileSizeMB:0,source:ne===ImageSearchFrom.Gif?"gif_search":"image_search",errorType:"server_error"}),A(te=>{const re=te.filter(ae=>!isPlaceholder(ae));return setTimeout(()=>{B(re)},0),re})}},se=Q=>{if(!L)return;const ne=R[Q];if(!isPlaceholder(ne)){const q=g?.storage?.poll,V=q?.getPendingUpload?.(ne.key);V&&(V.abort(),q.clearPendingUpload(ne.key))}const F=R.filter((q,V)=>V!==Q);isPlaceholder(ne)||k({option_count:F.filter(q=>!isPlaceholder(q)).length,option_type:PollOptionType[ne.type]}),Y(F)};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((Q,ne)=>isPlaceholder(Q)?jsxRuntime.jsx(LoadingSlot,{},Q.key):isTextChoice(Q)?jsxRuntime.jsx(TextChoiceCard,{choice:Q,index:ne,canRemove:L,onRemove:()=>se(ne)},Q.key):jsxRuntime.jsx(MediaChoiceCard,{choice:Q,index:ne,canRemove:L,onRemove:()=>se(ne)},Q.key)),N&&jsxRuntime.jsx(AddChoiceBlock,{disabled:!N,onFiles:Q=>{ee(Q)},onOpenSearch:()=>_(!0),onOpenText:()=>E(!0)}),Array.from({length:Math.max(0,O-1)}).map((Q,ne)=>jsxRuntime.jsx(EmptyPlaceholder,{slotNumber:R.length+2+ne},`empty-${ne}`))]}),jsxRuntime.jsx(TextOptionModal,{open:S,onOpenChange:E,value:y,onChange:b,onSubmit:Z,disabled:!N}),T&&jsxRuntime.jsx(ImageSearchModal,{open:T,onOpenChange:_,onImageSelect:(Q,ne)=>{J(Q,ne)},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 se=getMarkAttrsAtSelection(y?.state,"customLink"),Q=normalizeUrl(se?.href??"");I(isValidUrl(Q)),D(isValidUrl(Q)),T(se?.uid??null),R(se?.href??""),C(se?.text||se?.href||"")},H=J=>{const se=J.target.value;if(se==="https:/")return;const Q=normalizeUrl(se);I(isValidUrl(Q)),R(Q)},B=J=>C(J.target.value),Y=()=>{const J=isValidUrl(_);I(J)},Z=(J,se,Q)=>{N(!0);let ne;b?.resolveUrl(J)?.then(F=>ne=F)?.catch(F=>{})?.finally(()=>{const F=convertLinkMetaToPreviewItem(ne);N(!1),p(J,se,Q,F),d?.(!1)})},ee=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:ee,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:ee,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:()=>({})},unfurlDisabled:{default:!1,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 ee=_createHooksMap();n.isSupported=typeof entries=="function"&&typeof O=="function"&&L&&L.createHTMLDocument!==void 0;const{MUSTACHE_EXPR:J,ERB_EXPR:se,TMPLIT_EXPR:Q,DATA_ATTR:ne,ARIA_ATTR:F,IS_SCRIPT_OR_DATA:q,ATTR_WHITESPACE:V,CUSTOM_ELEMENT:W}=EXPRESSIONS;let{IS_ALLOWED_URI:te}=EXPRESSIONS,re=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 he=Object.seal(create$6(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let me=!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,re=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,me=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,te=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&&(re=addToSet({},text),le=[],Ce.html===!0&&(addToSet(re,html$1),addToSet(le,html)),Ce.svg===!0&&(addToSet(re,svg$1),addToSet(le,svg),addToSet(le,xml)),Ce.svgFilters===!0&&(addToSet(re,svgFilters),addToSet(le,svg),addToSet(le,xml)),Ce.mathMl===!0&&(addToSet(re,mathMl$1),addToSet(le,mathMl),addToSet(le,xml))),ue.ADD_TAGS&&(typeof ue.ADD_TAGS=="function"?he.tagCheck=ue.ADD_TAGS:(re===ae&&(re=clone(re)),addToSet(re,ue.ADD_TAGS,$e))),ue.ADD_ATTR&&(typeof ue.ADD_ATTR=="function"?he.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&&(re["#text"]=!0),we&&addToSet(re,["html","head","body"]),re.table&&(addToSet(re,["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&<.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(ee.beforeSanitizeElements,ue,null),Et(ue))return ht(ue),!0;const Re=$e(ue.nodeName);if(mt(ee.uponSanitizeElement,ue,{tagName:Re,allowedTags:re}),ve&&ue.hasChildNodes()&&!kt(ue.firstElementChild)&®ExpTest(/<[/\w!]/g,ue.innerHTML)&®ExpTest(/<[/\w!]/g,ue.textContent)||ue.nodeType===NODE_TYPE.progressingInstruction||ve&&ue.nodeType===NODE_TYPE.comment&®ExpTest(/<[/\w]/g,ue.data))return ht(ue),!0;if(!(he.tagCheck instanceof Function&&he.tagCheck(Re))&&(!re[Re]||de[Re])){if(!de[Re]&&It(Re)&&(oe.tagNameCheck instanceof RegExp&®ExpTest(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")&®ExpTest(/<\/no(script|embed|frames)/i,ue.innerHTML)?(ht(ue),!0):(Te&&ue.nodeType===NODE_TYPE.text&&(be=ue.textContent,arrayForEach([J,se,Q],et=>{be=stringReplace(be,et," ")}),ue.textContent!==be&&(arrayPush(n.removed,{element:ue.cloneNode()}),ue.textContent=be)),mt(ee.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]&®ExpTest(ne,be))){if(!(me&®ExpTest(F,be))){if(!(he.attributeCheck instanceof Function&&he.attributeCheck(be,ue))){if(!le[be]||fe[be]){if(!(It(ue)&&(oe.tagNameCheck instanceof RegExp&®ExpTest(oe.tagNameCheck,ue)||oe.tagNameCheck instanceof Function&&oe.tagNameCheck(ue))&&(oe.attributeNameCheck instanceof RegExp&®ExpTest(oe.attributeNameCheck,be)||oe.attributeNameCheck instanceof Function&&oe.attributeNameCheck(be,ue))||be==="is"&&oe.allowCustomizedBuiltInElements&&(oe.tagNameCheck instanceof RegExp&®ExpTest(oe.tagNameCheck,Re)||oe.tagNameCheck instanceof Function&&oe.tagNameCheck(Re))))return!1}else if(!Ge[be]){if(!regExpTest(te,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(ee.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(ee.uponSanitizeAttribute,ue,Re),st=Re.attrValue,Le&&(bt==="id"||bt==="name")&&(ut(nt,ue),st=De+st),ve&®ExpTest(/((--!?|])>)|<\/(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&®ExpTest(/\/>/i,st)){ut(nt,ue);continue}Te&&arrayForEach([J,se,Q],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(ee.afterSanitizeAttributes,ue,null)},Kt=function ke(ue){let be=null;const Re=Ct(ue);for(mt(ee.beforeSanitizeShadowDOM,ue,null);be=Re.nextNode();)mt(ee.uponSanitizeShadowNode,be,null),Mt(be),Nt(be),be.content instanceof g&&ke(be.content);mt(ee.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(!re[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&&re["!doctype"]&&be.ownerDocument&&be.ownerDocument.doctype&&be.ownerDocument.doctype.name&®ExpTest(DOCTYPE_NAME,be.ownerDocument.doctype.name)&&(ft="<!DOCTYPE "+be.ownerDocument.doctype.name+`>
|
|
220
220
|
`+ft),Te&&arrayForEach([J,se,Q],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(ee[ke],ue)},n.removeHook=function(ke,ue){if(ue!==void 0){const be=arrayLastIndexOf(ee[ke],ue);return be===-1?void 0:arraySplice(ee[ke],be,1)[0]}return arrayPop(ee[ke])},n.removeHooks=function(ke){ee[ke]=[]},n.removeAllHooks=function(){ee=_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:ee,left:J}=B;try{return new DOMRect(J,Y,Z-J,ee-Y)}catch{return null}},N=(H,B)=>B?()=>{const Y=u.getState(n.state),Z=Y?.decorationId,ee=H.dom.querySelector(`[data-decoration-id="${Z}"]`);return ee?.getBoundingClientRect()||null}:O;function j(H,B){var Y;try{const ee=u.getState(H.state),J=ee?.decorationId?H.dom.querySelector(`[data-decoration-id="${ee.decorationId}"]`):null,se={editor:n,range:ee?.range||{from:0,to:0},query:ee?.query||null,text:ee?.text||null,items:[],command:Q=>_({editor:n,range:ee?.range||{from:0,to:0},props:Q}),decorationNode:J,clientRect:N(H,J)};(Y=D?.onExit)==null||Y.call(D,se)}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,ee,J,se,Q,ne;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,te=F.active&&!q.active,re=!W&&!te&&F.query!==q.query,ae=W||V&&re,le=re||V,ce=te||V&&re;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&&((ee=D?.onBeforeStart)==null||ee.call(D,P)),le&&((J=D?.onBeforeUpdate)==null||J.call(D,P)),(le||ae)&&(P.items=await R({editor:n,query:oe.query})),ce&&((se=D?.onExit)==null||se.call(D,P)),le&&((Q=D?.onUpdate)==null||Q.call(D,P)),ae&&((ne=D?.onStart)==null||ne.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:ee}=n,{composing:J}=n.view,{selection:se}=H,{empty:Q,from:ne}=se,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,ee&&(Q||n.view.composing)){(ne<B.range.from||ne>B.range.to)&&!J&&!B.composing&&(F.active=!1);const V=k({char:d,allowSpaces:p,allowToIncludeChar:m,allowedPrefixes:g,startOfLine:y,$position:se.$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,ee,J;const{active:se,range:Q}=L.getState(H.state);if(!se)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 te={editor:n,range:F.range,query:F.query,text:F.text,items:[],command:re=>_({editor:n,range:F.range,props:re}),decorationNode:V,clientRect:V?()=>V.getBoundingClientRect()||null:null};return(ee=D?.onExit)==null||ee.call(D,te),j(H,u),!0}return((J=D?.onKeyDown)==null?void 0:J.call(D,{view:H,event:B,range:Q}))||!1},decorations(H){const{active:B,range:Y,decorationId:Z,query:ee}=L.getState(H);if(!B)return null;const J=!ee?.length,se=[S];return J&&se.push(T),DecorationSet.create(H.doc,[Decoration.inline(Y.from,Y.to,{nodeName:b,class:se.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 ee=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 se;return Object.assign({},ee,(se={},se[N]=D?"0":"",se[O]=P?"0":"",se.transform=(j.devicePixelRatio||1)<=1?"translate("+A+"px, "+k+"px)":"translate3d("+A+"px, "+k+"px, 0)",se))}return Object.assign({},ee,(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},ee=u.modifiersData.offset;if(R===popper&&ee){var J=ee[m];Object.keys(Z).forEach(function(se){var Q=[right,bottom].indexOf(se)>=0?1:-1,ne=[top,bottom].indexOf(se)>=0?"y":"x";Z[se]+=J[ne]*Q})}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 ee=N[Z],J=getBasePlacement$1(ee),se=getVariation(ee)===start,Q=[top,bottom].indexOf(J)>=0,ne=Q?"width":"height",F=detectOverflow(n,{placement:ee,boundary:T,rootBoundary:_,altBoundary:R,padding:E}),q=Q?se?right:left:se?bottom:top;j[ne]>L[ne]&&(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=ee,B=!1;break}H.set(ee,W)}if(B)for(var te=C?3:1,re=function(oe){var de=N.find(function(fe){var he=H.get(fe);if(he)return he.slice(0,oe).every(function(me){return me})});if(de)return Y=de,"break"},ae=te;ae>0;ae--){var le=re(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),ee=n.modifiersData.offset?n.modifiersData.offset[n.placement]:null,J={x:0,y:0};if(L){if(g){var se,Q=N==="y"?top:left,ne=N==="y"?bottom:right,F=N==="y"?"height":"width",q=L[N],V=q+I[Q],W=q-I[ne],te=A?-B[F]/2:0,re=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[Q],fe=oe[ne],he=within(0,H[F],ce[F]),me=O?H[F]/2-te-he-de-Z.mainAxis:re-he-de-Z.mainAxis,ge=O?-H[F]/2+te+he+fe+Z.mainAxis:ae+he+fe+Z.mainAxis,ye=n.elements.arrow&&getOffsetParent(n.elements.arrow),Se=ye?N==="y"?ye.clientTop||0:ye.clientLeft||0:0,Te=(se=ee?.[N])!=null?se:0,ve=q+me-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=ee?.[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}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
|
|
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,editor:p})=>{const{loading:m,href:g,domain:y,variant:b}=u.attrs,{t:S}=usePostBuilder(),E=React.useMemo(()=>{try{return y||new URL(g).hostname}catch{return"unknown"}},[g,y]),T=()=>{const _=u.attrs.uid;_&&p.commands.updateLinkByUid(_,{previewPayload:null,unfurlDisabled:!0}),n()};return m?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:S("fetchingMetadataKey")})})}):g?jsxRuntime.jsx(NodeViewWrapper,{contentEditable:!1,"data-drag-handle":!0,children:b===LinkPreviewType.Compact?jsxRuntime.jsx(LinkPreviewCompact,{...u.attrs,selected:d,domain:E,onClickDelete:T}):jsxRuntime.jsx(LinkPreviewExtended,{...u.attrs,selected:d,domain:E,onClickDelete:T})}):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
|
|
@@ -247,7 +247,7 @@ Defaulting to \`null\`.`}var Root$1=Progress$1,Indicator=ProgressIndicator;funct
|
|
|
247
247
|
|
|
248
248
|
|
|
249
249
|
prose-figcaption:text-xs prose-code:text-sm
|
|
250
|
-
prose-codeblock:text-sm prose-a:text-blue-500 focus:outline-none`)}}),createEditorActions=u=>({undo:()=>u?.chain().focus().undo().run(),redo:()=>u?.chain().focus().redo().run(),toggleHeading:n=>u?.chain().focus().toggleHeading({level:n}).run(),setParagraph:()=>u?.chain().focus().setParagraph().run(),toggleBold:()=>u?.chain().focus().toggleBold().run(),toggleItalic:()=>u?.chain().focus().toggleItalic().run(),toggleStrikethrough:()=>u?.chain().focus().toggleStrike().run(),toggleUnderline:()=>u?.chain().focus().toggleUnderline().run(),insertLink:n=>u?.chain().focus().setLink({href:n}).run(),toggleBulletList:()=>u?.chain().focus().toggleBulletList().run(),toggleOrderedList:()=>u?.chain().focus().toggleOrderedList().run(),toggleBlockquote:()=>u?.chain().focus().toggleBlockquote().run(),toggleCode:()=>u?.chain().focus().toggleCode().run(),toggleCodeBlock:()=>u?.chain().focus().toggleCodeBlock().run(),toggleTextAlign:n=>u?.chain().focus().setTextAlign(n).run(),insertPoll:()=>u?.chain().focus().insertContent({type:"poll"}).run(),insertMedia:(n,d)=>{u?.chain()?.focus()?.insertContent([{type:"media",attrs:{src:n,type:d}},{type:"paragraph"}])?.run()}}),initializePollEditor=u=>{u.chain().focus().insertContent({type:"paragraph"}).insertContent({type:"poll"}).command(({tr:n})=>{const{doc:d}=n;let p=-1;if(d.descendants((m,g)=>{if(m.type.name==="paragraph"&&p===-1)return p=g,!1}),p>=0){const m=d.nodeAt(p);if(m){const g=p+m.nodeSize-1,y=n.doc.resolve(g);n.setSelection(TextSelection.near(y))}}return!0}).run()},getEditorData=u=>({html:u?.getHTML(),json:u?.getJSON(),text:u?.getText()}),getCommonPayload=u=>({postId:v4(),timestamp:new Date().getTime(),specialType:SpecialType.POST,...u&&{conversationId:u}}),getMentionDataPayload=u=>({mentionData:findByType(u,"mention")?.map(p=>omit(omitBy(p.attrs,isNil),["mentionSuggestionChar","label"]))?.filter(p=>Object.keys(p).length>0)}),getMediaItemsPayload=(u,n,d)=>{const p=findByType(u,"media"),m=[];for(const g of p){if(g.attrs?.payload){m.push(g.attrs.payload);continue}if(!d?.allowPending||!n)continue;const y=g.attrs?.uid;if(!y)continue;const b=n.storage?.smartMediaUpload?.blobUrls?.get(y);if(!b)continue;const S=g.attrs?.width??0,E=g.attrs?.height??0,T=g.attrs?.type,_=T==="video"?"video/mp4":T==="audio"?"audio/mpeg":"image/jpeg";m.push({key:y,type:MediaItemType.MEDIA_ITEM,imageType:_,playableDuration:0,sources:{original:{url:b,width:S,height:E,isBase64:!1},thumbnail:{url:b,width:S,height:E,isBase64:!1},placeholder:{url:b,width:S,height:E,isBase64:!1}}})}return{items:m}},isLinkMark=u=>!!u.marks?.some(n=>n.type==="customLink"),getLinkItemsPayload=u=>{const d=find$2(u,m=>isLinkMark(m))?.flatMap(m=>m?.marks?.filter(g=>g?.type==="customLink"&&g?.attrs?.previewPayload));return{items:Array.of(d?.at(-1)?.attrs?.previewPayload).filter(Boolean)}},getPollItemsPayload=u=>({items:findByType(u,"poll")[0].attrs?.choices}),isValidItem=u=>{if(!u)return!1;const n=u,d=u,p=n?.linkUrl,m=d?.sources,g=m?.original?.url||m?.thumbnail?.url;return!!(p||g)},generateHtmlPostPayload=({editor:u,sendCrossMention:n,groupId:d,allowSendWhileUploading:p})=>{const{html:m,json:g}=getEditorData(u),y=getCommonPayload(d),{mentionData:b}=getMentionDataPayload(g),S=findFirstByType(g,"media"),E=findFirstByType(g,"iframe"),T=findFirstByType(g,"text"),R=T?.marks?.some(O=>O.type==="customLink")?T?.marks?.find(O=>O.type==="customLink")?.attrs?.previewPayload:null,A=find$2(g,O=>O?.type==="text"&&(O?.marks?.some(N=>N?.type!=="customLink")??!0))?.at(0),k=isOnlyContentNode(g,"iframe")?E?.attrs?.previewPayload?.linkTitle??E?.attrs?.src??"":A?.text??T?.text??"";let I;if(S?.attrs?.payload)I=S.attrs.payload;else if(S&&p&&S.attrs?.uid){const O=S.attrs.uid,N=u.storage?.smartMediaUpload?.blobUrls?.get(O);if(N){const j=S.attrs?.width??0,L=S.attrs?.height??0,H=S.attrs?.type,B=H==="video"?"video/mp4":H==="audio"?"audio/mpeg":"image/jpeg";I={key:O,type:MediaItemType.MEDIA_ITEM,imageType:B,playableDuration:0,sources:{original:{url:N,width:j,height:L,isBase64:!1},thumbnail:{url:N,width:j,height:L,isBase64:!1},placeholder:{url:N,width:j,height:L,isBase64:!1}}}}}const P=[I,E?.attrs?.previewPayload,R].filter(isValidItem)?.filter((O,N)=>N===0),D=m;return{...y,type:P?.length>0?NewPostType.NEW_POST_MEDIA:NewPostType.NEW_POST_MESSAGE,body:k,items:P,htmlBody:D,sendCrossMention:n,mentionData:b}},generateMediaPostPayload=({editor:u,sendCrossMention:n,groupId:d,allowSendWhileUploading:p})=>{const{json:m,text:g}=getEditorData(u),y=getCommonPayload(d),b=g?.trim()??"",{mentionData:S}=getMentionDataPayload(m),{items:E}=getMediaItemsPayload(m,u,{allowPending:!!p}),{items:T}=getLinkItemsPayload(m),_=E?.length>0?E:T?.length>0?T:[];return!b&&E.length===0?{error:"Your post is empty. Add text or media to share your thoughts."}:{...y,type:E?.length>0?NewPostType.NEW_POST_MEDIA:T?.length>0?NewPostType.NEW_POST_LINK:NewPostType.NEW_POST_MESSAGE,body:b,items:_,mentionData:S,sendCrossMention:n}},generatePollPostPayload=({editor:u,sendCrossMention:n,groupId:d})=>{const{json:p,text:m}=getEditorData(u),g=getCommonPayload(d),y=m,{mentionData:b}=getMentionDataPayload(p),{items:S}=getPollItemsPayload(p),E=ensurePollMinimum(S);return{...g,type:NewPostType.NEW_POST_POLL,body:y,items:E,mentionData:b,sendCrossMention:n}},generateCreatePostPayload=(u,n)=>{switch(u){case EditorTypes.Blog:return generateHtmlPostPayload(n);case EditorTypes.Media:return generateMediaPostPayload(n);case EditorTypes.Poll:return generatePollPostPayload(n);default:return null}},usePostBuilderEditor=({editorType:u,placement:n,groupId:d,postId:p,user:m,disableNavigationWarning:g,initialContent:y})=>{const[,b]=React.useState(0),[S,E]=React.useState(!1),T=useApi(),{allowSendWhileUploading:_,t:R}=usePostBuilder(),A=React.useMemo(()=>createPostBuilderStore({groupId:d,postId:p}),[d,p]),{getTabContent:C,saveCurrentTabContent:k,clearContent:I}=usePersistence(n,d),P=React.useRef(!1),D=React.useRef(!1),O=React.useRef(!1),N=React.useRef(!1);React.useEffect(()=>{E(!0),b(F=>F+1)},[]);const j=React.useMemo(()=>!!C(u),[u,C]),L=useEditor({extensions:getExtensions({editorType:u,api:T,store:A,user:m,t:R}),content:y&&!N.current?y:C(u)??"",editorProps:getEditorProps(),onCreate:({editor:F})=>{A.getState().setEditor(F),u===EditorTypes.Blog&&F?.chain()?.focus("end")?.run(),u===EditorTypes.Media&&F?.chain()?.focus("end")?.run(),u===EditorTypes.Poll&&!j&&initializePollEditor(F),u===EditorTypes.Poll&&j&&F?.chain()?.focus("end")?.run()},onUnmount:({editor:F})=>{if(D.current||P.current||O.current){P.current=!1,D.current=!1,O.current=!1;return}k(u,F)},immediatelyRender:!1,shouldRerenderOnTransaction:!1},[u,n,S]);React.useEffect(()=>{if(g)return;const F=q=>{L&&!L.isEmpty&&q.preventDefault()};return window.addEventListener("beforeunload",F),()=>window.removeEventListener("beforeunload",F)},[L,g]),React.useEffect(()=>{let F;if(!S||!L||!L?.view||u===EditorTypes.Poll)return;if(y&&!N.current){N.current=!0;return}const q=C(u);return q&&L?.isEditable&&(F=setTimeout(()=>{L.commands.setContent(q),L.commands.rehydrateLinkPreviews()},0)),()=>{F&&clearTimeout(F)}},[L,u,n,C,S,y]),React.useEffect(()=>{const F=q=>{const V=q.detail;if(!V||V.groupId!==d||V.editorType&&V.editorType!==u||!L||L.isDestroyed)return;const W=C(u);W&&(L.commands.setContent(W),L.commands.rehydrateLinkPreviews())};return window.addEventListener(PostBuilderEvents.DRAFT_REHYDRATE_REQUEST,F),()=>{window.removeEventListener(PostBuilderEvents.DRAFT_REHYDRATE_REQUEST,F)}},[L,u,d,C]);const H=React.useMemo(()=>L?createEditorActions(L):null,[L]),B=React.useCallback(()=>{L&&!L.isDestroyed&&(k(u,L),P.current=!0)},[L,u,k]),Y=React.useCallback(()=>{L&&!L.isDestroyed&&k(u,L)},[L,u,k]),Z=React.useCallback(()=>{D.current=!0,I()},[I]),ee=React.useCallback(()=>{O.current=!0},[]),J=React.useCallback(()=>{L&&!L.isDestroyed&&L?.commands?.focus("end")},[L]),se=React.useCallback(F=>{!L||L.isDestroyed||L.commands.setContent(F)},[L]),Q=React.useCallback(()=>{if(!L||L.isDestroyed)return null;const F=L.getHTML(),q=L.getJSON(),V=L.getText(),W=generateCreatePostPayload(u,{editor:L,sendCrossMention:!1,groupId:d,allowSendWhileUploading:_});return{html:F,json:q,text:V,payload:W??{}}},[L,u,d,_]),ne=React.useCallback(()=>{!L||L.isDestroyed||(I(),L.chain().focus().clearContent().run())},[L,I]);return{editor:L,actions:H,store:A,isMounted:S,saveBeforeSwitch:B,saveDraft:Y,discardDraft:Z,skipNextUnmountSave:ee,keepEditing:J,setContent:se,getContent:Q,clearEditor:ne}},create$5=()=>new Map,copy=u=>{const n=create$5();return u.forEach((d,p)=>{n.set(p,d)}),n},setIfUndefined=(u,n,d)=>{let p=u.get(n);return p===void 0&&u.set(n,p=d()),p},map=(u,n)=>{const d=[];for(const[p,m]of u)d.push(n(m,p));return d},any=(u,n)=>{for(const[d,p]of u)if(n(p,d))return!0;return!1},create$4=()=>new Set,last=u=>u[u.length-1],appendTo=(u,n)=>{for(let d=0;d<n.length;d++)u.push(n[d])},from=Array.from,every$1=(u,n)=>{for(let d=0;d<u.length;d++)if(!n(u[d],d,u))return!1;return!0},some=(u,n)=>{for(let d=0;d<u.length;d++)if(n(u[d],d,u))return!0;return!1},unfold=(u,n)=>{const d=new Array(u);for(let p=0;p<u;p++)d[p]=n(p,d);return d},isArray=Array.isArray;class ObservableV2{constructor(){this._observers=create$5()}on(n,d){return setIfUndefined(this._observers,n,create$4).add(d),d}once(n,d){const p=(...m)=>{this.off(n,p),d(...m)};this.on(n,p)}off(n,d){const p=this._observers.get(n);p!==void 0&&(p.delete(d),p.size===0&&this._observers.delete(n))}emit(n,d){return from((this._observers.get(n)||create$5()).values()).forEach(p=>p(...d))}destroy(){this._observers=create$5()}}const floor=Math.floor,abs=Math.abs,min=(u,n)=>u<n?u:n,max=(u,n)=>u>n?u:n,isNegativeZero=u=>u!==0?u<0:1/u<0,BIT1=1,BIT2=2,BIT3=4,BIT4=8,BIT6=32,BIT7=64,BIT8=128,BIT30=1<<29,BITS5=31,BITS6=63,BITS7=127,BITS31=2147483647,MAX_SAFE_INTEGER=Number.MAX_SAFE_INTEGER,MIN_SAFE_INTEGER=Number.MIN_SAFE_INTEGER,isInteger=Number.isInteger||(u=>typeof u=="number"&&isFinite(u)&&floor(u)===u),fromCharCode=String.fromCharCode,toLowerCase=u=>u.toLowerCase(),trimLeftRegex=/^\s*/g,trimLeft=u=>u.replace(trimLeftRegex,""),fromCamelCaseRegex=/([A-Z])/g,fromCamelCase=(u,n)=>trimLeft(u.replace(fromCamelCaseRegex,d=>`${n}${toLowerCase(d)}`)),_encodeUtf8Polyfill=u=>{const n=unescape(encodeURIComponent(u)),d=n.length,p=new Uint8Array(d);for(let m=0;m<d;m++)p[m]=n.codePointAt(m);return p},utf8TextEncoder=typeof TextEncoder<"u"?new TextEncoder:null,_encodeUtf8Native=u=>utf8TextEncoder.encode(u),encodeUtf8=utf8TextEncoder?_encodeUtf8Native:_encodeUtf8Polyfill;let utf8TextDecoder=typeof TextDecoder>"u"?null:new TextDecoder("utf-8",{fatal:!0,ignoreBOM:!0});utf8TextDecoder&&utf8TextDecoder.decode(new Uint8Array).length===1&&(utf8TextDecoder=null);const repeat=(u,n)=>unfold(n,()=>u).join("");class Encoder{constructor(){this.cpos=0,this.cbuf=new Uint8Array(100),this.bufs=[]}}const createEncoder=()=>new Encoder,encode=u=>{const n=createEncoder();return u(n),toUint8Array(n)},length=u=>{let n=u.cpos;for(let d=0;d<u.bufs.length;d++)n+=u.bufs[d].length;return n},toUint8Array=u=>{const n=new Uint8Array(length(u));let d=0;for(let p=0;p<u.bufs.length;p++){const m=u.bufs[p];n.set(m,d),d+=m.length}return n.set(new Uint8Array(u.cbuf.buffer,0,u.cpos),d),n},verifyLen=(u,n)=>{const d=u.cbuf.length;d-u.cpos<n&&(u.bufs.push(new Uint8Array(u.cbuf.buffer,0,u.cpos)),u.cbuf=new Uint8Array(max(d,n)*2),u.cpos=0)},write=(u,n)=>{const d=u.cbuf.length;u.cpos===d&&(u.bufs.push(u.cbuf),u.cbuf=new Uint8Array(d*2),u.cpos=0),u.cbuf[u.cpos++]=n},writeUint8=write,writeVarUint=(u,n)=>{for(;n>BITS7;)write(u,BIT8|BITS7&n),n=floor(n/128);write(u,BITS7&n)},writeVarInt=(u,n)=>{const d=isNegativeZero(n);for(d&&(n=-n),write(u,(n>BITS6?BIT8:0)|(d?BIT7:0)|BITS6&n),n=floor(n/64);n>0;)write(u,(n>BITS7?BIT8:0)|BITS7&n),n=floor(n/128)},_strBuffer=new Uint8Array(3e4),_maxStrBSize=_strBuffer.length/3,_writeVarStringNative=(u,n)=>{if(n.length<_maxStrBSize){const d=utf8TextEncoder.encodeInto(n,_strBuffer).written||0;writeVarUint(u,d);for(let p=0;p<d;p++)write(u,_strBuffer[p])}else writeVarUint8Array(u,encodeUtf8(n))},_writeVarStringPolyfill=(u,n)=>{const d=unescape(encodeURIComponent(n)),p=d.length;writeVarUint(u,p);for(let m=0;m<p;m++)write(u,d.codePointAt(m))},writeVarString=utf8TextEncoder&&utf8TextEncoder.encodeInto?_writeVarStringNative:_writeVarStringPolyfill,writeUint8Array=(u,n)=>{const d=u.cbuf.length,p=u.cpos,m=min(d-p,n.length),g=n.length-m;u.cbuf.set(n.subarray(0,m),p),u.cpos+=m,g>0&&(u.bufs.push(u.cbuf),u.cbuf=new Uint8Array(max(d*2,g)),u.cbuf.set(n.subarray(m)),u.cpos=g)},writeVarUint8Array=(u,n)=>{writeVarUint(u,n.byteLength),writeUint8Array(u,n)},writeOnDataView=(u,n)=>{verifyLen(u,n);const d=new DataView(u.cbuf.buffer,u.cpos,n);return u.cpos+=n,d},writeFloat32=(u,n)=>writeOnDataView(u,4).setFloat32(0,n,!1),writeFloat64=(u,n)=>writeOnDataView(u,8).setFloat64(0,n,!1),writeBigInt64=(u,n)=>writeOnDataView(u,8).setBigInt64(0,n,!1),floatTestBed=new DataView(new ArrayBuffer(4)),isFloat32=u=>(floatTestBed.setFloat32(0,u),floatTestBed.getFloat32(0)===u),writeAny=(u,n)=>{switch(typeof n){case"string":write(u,119),writeVarString(u,n);break;case"number":isInteger(n)&&abs(n)<=BITS31?(write(u,125),writeVarInt(u,n)):isFloat32(n)?(write(u,124),writeFloat32(u,n)):(write(u,123),writeFloat64(u,n));break;case"bigint":write(u,122),writeBigInt64(u,n);break;case"object":if(n===null)write(u,126);else if(isArray(n)){write(u,117),writeVarUint(u,n.length);for(let d=0;d<n.length;d++)writeAny(u,n[d])}else if(n instanceof Uint8Array)write(u,116),writeVarUint8Array(u,n);else{write(u,118);const d=Object.keys(n);writeVarUint(u,d.length);for(let p=0;p<d.length;p++){const m=d[p];writeVarString(u,m),writeAny(u,n[m])}}break;case"boolean":write(u,n?120:121);break;default:write(u,127)}};class RleEncoder extends Encoder{constructor(n){super(),this.w=n,this.s=null,this.count=0}write(n){this.s===n?this.count++:(this.count>0&&writeVarUint(this,this.count-1),this.count=1,this.w(this,n),this.s=n)}}const flushUintOptRleEncoder=u=>{u.count>0&&(writeVarInt(u.encoder,u.count===1?u.s:-u.s),u.count>1&&writeVarUint(u.encoder,u.count-2))};class UintOptRleEncoder{constructor(){this.encoder=new Encoder,this.s=0,this.count=0}write(n){this.s===n?this.count++:(flushUintOptRleEncoder(this),this.count=1,this.s=n)}toUint8Array(){return flushUintOptRleEncoder(this),toUint8Array(this.encoder)}}const flushIntDiffOptRleEncoder=u=>{if(u.count>0){const n=u.diff*2+(u.count===1?0:1);writeVarInt(u.encoder,n),u.count>1&&writeVarUint(u.encoder,u.count-2)}};class IntDiffOptRleEncoder{constructor(){this.encoder=new Encoder,this.s=0,this.count=0,this.diff=0}write(n){this.diff===n-this.s?(this.s=n,this.count++):(flushIntDiffOptRleEncoder(this),this.count=1,this.diff=n-this.s,this.s=n)}toUint8Array(){return flushIntDiffOptRleEncoder(this),toUint8Array(this.encoder)}}class StringEncoder{constructor(){this.sarr=[],this.s="",this.lensE=new UintOptRleEncoder}write(n){this.s+=n,this.s.length>19&&(this.sarr.push(this.s),this.s=""),this.lensE.write(n.length)}toUint8Array(){const n=new Encoder;return this.sarr.push(this.s),this.s="",writeVarString(n,this.sarr.join("")),writeUint8Array(n,this.lensE.toUint8Array()),toUint8Array(n)}}const create$3=u=>new Error(u),methodUnimplemented=()=>{throw create$3("Method unimplemented")},unexpectedCase=()=>{throw create$3("Unexpected case")},errorUnexpectedEndOfArray=create$3("Unexpected end of array"),errorIntegerOutOfRange=create$3("Integer out of Range");class Decoder{constructor(n){this.arr=n,this.pos=0}}const createDecoder=u=>new Decoder(u),hasContent=u=>u.pos!==u.arr.length,readUint8Array=(u,n)=>{const d=new Uint8Array(u.arr.buffer,u.pos+u.arr.byteOffset,n);return u.pos+=n,d},readVarUint8Array=u=>readUint8Array(u,readVarUint(u)),readUint8=u=>u.arr[u.pos++],readVarUint=u=>{let n=0,d=1;const p=u.arr.length;for(;u.pos<p;){const m=u.arr[u.pos++];if(n=n+(m&BITS7)*d,d*=128,m<BIT8)return n;if(n>MAX_SAFE_INTEGER)throw errorIntegerOutOfRange}throw errorUnexpectedEndOfArray},readVarInt=u=>{let n=u.arr[u.pos++],d=n&BITS6,p=64;const m=(n&BIT7)>0?-1:1;if((n&BIT8)===0)return m*d;const g=u.arr.length;for(;u.pos<g;){if(n=u.arr[u.pos++],d=d+(n&BITS7)*p,p*=128,n<BIT8)return m*d;if(d>MAX_SAFE_INTEGER)throw errorIntegerOutOfRange}throw errorUnexpectedEndOfArray},_readVarStringPolyfill=u=>{let n=readVarUint(u);if(n===0)return"";{let d=String.fromCodePoint(readUint8(u));if(--n<100)for(;n--;)d+=String.fromCodePoint(readUint8(u));else for(;n>0;){const p=n<1e4?n:1e4,m=u.arr.subarray(u.pos,u.pos+p);u.pos+=p,d+=String.fromCodePoint.apply(null,m),n-=p}return decodeURIComponent(escape(d))}},_readVarStringNative=u=>utf8TextDecoder.decode(readVarUint8Array(u)),readVarString=utf8TextDecoder?_readVarStringNative:_readVarStringPolyfill,readFromDataView=(u,n)=>{const d=new DataView(u.arr.buffer,u.arr.byteOffset+u.pos,n);return u.pos+=n,d},readFloat32=u=>readFromDataView(u,4).getFloat32(0,!1),readFloat64=u=>readFromDataView(u,8).getFloat64(0,!1),readBigInt64=u=>readFromDataView(u,8).getBigInt64(0,!1),readAnyLookupTable=[u=>{},u=>null,readVarInt,readFloat32,readFloat64,readBigInt64,u=>!1,u=>!0,readVarString,u=>{const n=readVarUint(u),d={};for(let p=0;p<n;p++){const m=readVarString(u);d[m]=readAny(u)}return d},u=>{const n=readVarUint(u),d=[];for(let p=0;p<n;p++)d.push(readAny(u));return d},readVarUint8Array],readAny=u=>readAnyLookupTable[127-readUint8(u)](u);class RleDecoder extends Decoder{constructor(n,d){super(n),this.reader=d,this.s=null,this.count=0}read(){return this.count===0&&(this.s=this.reader(this),hasContent(this)?this.count=readVarUint(this)+1:this.count=-1),this.count--,this.s}}class UintOptRleDecoder extends Decoder{constructor(n){super(n),this.s=0,this.count=0}read(){if(this.count===0){this.s=readVarInt(this);const n=isNegativeZero(this.s);this.count=1,n&&(this.s=-this.s,this.count=readVarUint(this)+2)}return this.count--,this.s}}class IntDiffOptRleDecoder extends Decoder{constructor(n){super(n),this.s=0,this.count=0,this.diff=0}read(){if(this.count===0){const n=readVarInt(this),d=n&1;this.diff=floor(n/2),this.count=1,d&&(this.count=readVarUint(this)+2)}return this.s+=this.diff,this.count--,this.s}}class StringDecoder{constructor(n){this.decoder=new UintOptRleDecoder(n),this.str=readVarString(this.decoder),this.spos=0}read(){const n=this.spos+this.decoder.read(),d=this.str.slice(this.spos,n);return this.spos=n,d}}const getRandomValues=crypto.getRandomValues.bind(crypto),rand=Math.random,uint32=()=>getRandomValues(new Uint32Array(1))[0],oneOf$1=u=>u[floor(rand()*u.length)],uuidv4Template="10000000-1000-4000-8000"+-1e11,uuidv4=()=>uuidv4Template.replace(/[018]/g,u=>(u^uint32()&15>>u/4).toString(16)),getUnixTime=Date.now,create$2=u=>new Promise(u);Promise.all.bind(Promise);const undefinedToNull=u=>u===void 0?null:u;class VarStoragePolyfill{constructor(){this.map=new Map}setItem(n,d){this.map.set(n,d)}getItem(n){return this.map.get(n)}}let _localStorage=new VarStoragePolyfill,usePolyfill=!0;try{typeof localStorage<"u"&&localStorage&&(_localStorage=localStorage,usePolyfill=!1)}catch(u){}const varStorage=_localStorage,EqualityTraitSymbol=Symbol("Equality"),equals=(u,n)=>u===n||!!u?.[EqualityTraitSymbol]?.(n)||!1,isObject$1=u=>typeof u=="object",assign=Object.assign,keys=Object.keys,forEach=(u,n)=>{for(const d in u)n(u[d],d)},size=u=>keys(u).length,isEmpty=u=>{for(const n in u)return!1;return!0},every=(u,n)=>{for(const d in u)if(!n(u[d],d))return!1;return!0},hasProperty=(u,n)=>Object.prototype.hasOwnProperty.call(u,n),equalFlat=(u,n)=>u===n||size(u)===size(n)&&every(u,(d,p)=>(d!==void 0||hasProperty(n,p))&&equals(n[p],d)),freeze=Object.freeze,deepFreeze=u=>{for(const n in u){const d=u[n];(typeof d=="object"||typeof d=="function")&&deepFreeze(u[n])}return freeze(u)},callAll=(u,n,d=0)=>{try{for(;d<u.length;d++)u[d](...n)}finally{d<u.length&&callAll(u,n,d+1)}},equalityDeep=(u,n)=>{if(u===n)return!0;if(u==null||n==null||u.constructor!==n.constructor&&(u.constructor||Object)!==(n.constructor||Object))return!1;if(u[EqualityTraitSymbol]!=null)return u[EqualityTraitSymbol](n);switch(u.constructor){case ArrayBuffer:u=new Uint8Array(u),n=new Uint8Array(n);case Uint8Array:{if(u.byteLength!==n.byteLength)return!1;for(let d=0;d<u.length;d++)if(u[d]!==n[d])return!1;break}case Set:{if(u.size!==n.size)return!1;for(const d of u)if(!n.has(d))return!1;break}case Map:{if(u.size!==n.size)return!1;for(const d of u.keys())if(!n.has(d)||!equalityDeep(u.get(d),n.get(d)))return!1;break}case void 0:case Object:if(size(u)!==size(n))return!1;for(const d in u)if(!hasProperty(u,d)||!equalityDeep(u[d],n[d]))return!1;break;case Array:if(u.length!==n.length)return!1;for(let d=0;d<u.length;d++)if(!equalityDeep(u[d],n[d]))return!1;break;default:return!1}return!0},isOneOf=(u,n)=>n.includes(u),isNode=typeof process<"u"&&process.release&&/node|io\.js/.test(process.release.name)&&Object.prototype.toString.call(typeof process<"u"?process:0)==="[object process]",isBrowser=typeof window<"u"&&typeof document<"u"&&!isNode;let params;const computeParams=()=>{if(params===void 0)if(isNode){params=create$5();const u=process.argv;let n=null;for(let d=0;d<u.length;d++){const p=u[d];p[0]==="-"?(n!==null&¶ms.set(n,""),n=p):n!==null&&(params.set(n,p),n=null)}n!==null&¶ms.set(n,"")}else typeof location=="object"?(params=create$5(),(location.search||"?").slice(1).split("&").forEach(u=>{if(u.length!==0){const[n,d]=u.split("=");params.set(`--${fromCamelCase(n,"-")}`,d),params.set(`-${fromCamelCase(n,"-")}`,d)}})):params=create$5();return params},hasParam=u=>computeParams().has(u),getVariable=u=>undefinedToNull(isNode?process.env[u.toUpperCase().replaceAll("-","_")]:varStorage.getItem(u)),hasConf=u=>hasParam("--"+u)||getVariable(u)!==null,production=hasConf("production"),forceColor=isNode&&isOneOf(process.env.FORCE_COLOR,["true","1","2"]),supportsColor=forceColor||!hasParam("--no-colors")&&!hasConf("no-color")&&(!isNode||process.stdout.isTTY)&&(!isNode||hasParam("--color")||getVariable("COLORTERM")!==null||(getVariable("TERM")||"").includes("color")),toBase64Browser=u=>{let n="";for(let d=0;d<u.byteLength;d++)n+=fromCharCode(u[d]);return btoa(n)},toBase64Node=u=>Buffer.from(u.buffer,u.byteOffset,u.byteLength).toString("base64"),toBase64=isBrowser?toBase64Browser:toBase64Node,encodeAny=u=>encode(n=>writeAny(n,u));class Pair{constructor(n,d){this.left=n,this.right=d}}const create$1=(u,n)=>new Pair(u,n),bool=u=>u.next()>=.5,int53=(u,n,d)=>floor(u.next()*(d+1-n)+n),int32=(u,n,d)=>floor(u.next()*(d+1-n)+n),int31=(u,n,d)=>int32(u,n,d),letter=u=>fromCharCode(int31(u,97,122)),word=(u,n=0,d=20)=>{const p=int31(u,n,d);let m="";for(let g=0;g<p;g++)m+=letter(u);return m},oneOf=(u,n)=>n[int31(u,0,n.length-1)],schemaSymbol=Symbol("0schema");class ValidationError{constructor(){this._rerrs=[]}extend(n,d,p,m=null){this._rerrs.push({path:n,expected:d,has:p,message:m})}toString(){const n=[];for(let d=this._rerrs.length-1;d>0;d--){const p=this._rerrs[d];n.push(repeat(" ",(this._rerrs.length-d)*2)+`${p.path!=null?`[${p.path}] `:""}${p.has} doesn't match ${p.expected}. ${p.message}`)}return n.join(`
|
|
250
|
+
prose-codeblock:text-sm prose-a:text-blue-500 focus:outline-none`)}}),createEditorActions=u=>({undo:()=>u?.chain().focus().undo().run(),redo:()=>u?.chain().focus().redo().run(),toggleHeading:n=>u?.chain().focus().toggleHeading({level:n}).run(),setParagraph:()=>u?.chain().focus().setParagraph().run(),toggleBold:()=>u?.chain().focus().toggleBold().run(),toggleItalic:()=>u?.chain().focus().toggleItalic().run(),toggleStrikethrough:()=>u?.chain().focus().toggleStrike().run(),toggleUnderline:()=>u?.chain().focus().toggleUnderline().run(),insertLink:n=>u?.chain().focus().setLink({href:n}).run(),toggleBulletList:()=>u?.chain().focus().toggleBulletList().run(),toggleOrderedList:()=>u?.chain().focus().toggleOrderedList().run(),toggleBlockquote:()=>u?.chain().focus().toggleBlockquote().run(),toggleCode:()=>u?.chain().focus().toggleCode().run(),toggleCodeBlock:()=>u?.chain().focus().toggleCodeBlock().run(),toggleTextAlign:n=>u?.chain().focus().setTextAlign(n).run(),insertPoll:()=>u?.chain().focus().insertContent({type:"poll"}).run(),insertMedia:(n,d)=>{u?.chain()?.focus()?.insertContent([{type:"media",attrs:{src:n,type:d}},{type:"paragraph"}])?.run()}}),initializePollEditor=u=>{u.chain().focus().insertContent({type:"paragraph"}).insertContent({type:"poll"}).command(({tr:n})=>{const{doc:d}=n;let p=-1;if(d.descendants((m,g)=>{if(m.type.name==="paragraph"&&p===-1)return p=g,!1}),p>=0){const m=d.nodeAt(p);if(m){const g=p+m.nodeSize-1,y=n.doc.resolve(g);n.setSelection(TextSelection.near(y))}}return!0}).run()},getEditorData=u=>({html:u?.getHTML(),json:u?.getJSON(),text:u?.getText()}),getCommonPayload=u=>({postId:v4(),timestamp:new Date().getTime(),specialType:SpecialType.POST,...u&&{conversationId:u}}),getMentionDataPayload=u=>({mentionData:findByType(u,"mention")?.map(p=>omit(omitBy(p.attrs,isNil),["mentionSuggestionChar","label"]))?.filter(p=>Object.keys(p).length>0)}),getMediaItemsPayload=(u,n,d)=>{const p=findByType(u,"media"),m=[];for(const g of p){if(g.attrs?.payload){m.push(g.attrs.payload);continue}if(!d?.allowPending||!n)continue;const y=g.attrs?.uid;if(!y)continue;const b=n.storage?.smartMediaUpload?.blobUrls?.get(y);if(!b)continue;const S=g.attrs?.width??0,E=g.attrs?.height??0,T=g.attrs?.type,_=T==="video"?"video/mp4":T==="audio"?"audio/mpeg":"image/jpeg";m.push({key:y,type:MediaItemType.MEDIA_ITEM,imageType:_,playableDuration:0,sources:{original:{url:b,width:S,height:E,isBase64:!1},thumbnail:{url:b,width:S,height:E,isBase64:!1},placeholder:{url:b,width:S,height:E,isBase64:!1}}})}return{items:m}},isLinkMark=u=>!!u.marks?.some(n=>n.type==="customLink"),hasUnfurlDisabledLink=u=>(find$2(u,n=>isLinkMark(n))??[]).some(n=>n.marks?.some(d=>d.type==="customLink"&&d.attrs?.unfurlDisabled===!0)),getLinkItemsPayload=u=>{const d=find$2(u,m=>isLinkMark(m))?.flatMap(m=>m?.marks?.filter(g=>g?.type==="customLink"&&g?.attrs?.previewPayload));return{items:Array.of(d?.at(-1)?.attrs?.previewPayload).filter(Boolean)}},getPollItemsPayload=u=>({items:findByType(u,"poll")[0].attrs?.choices}),isValidItem=u=>{if(!u)return!1;const n=u,d=u,p=n?.linkUrl,m=d?.sources,g=m?.original?.url||m?.thumbnail?.url;return!!(p||g)},generateHtmlPostPayload=({editor:u,sendCrossMention:n,groupId:d,allowSendWhileUploading:p})=>{const{html:m,json:g}=getEditorData(u),y=getCommonPayload(d),{mentionData:b}=getMentionDataPayload(g),S=findFirstByType(g,"media"),E=findFirstByType(g,"iframe"),T=findFirstByType(g,"text"),R=T?.marks?.some(O=>O.type==="customLink")?T?.marks?.find(O=>O.type==="customLink")?.attrs?.previewPayload:null,A=find$2(g,O=>O?.type==="text"&&(O?.marks?.some(N=>N?.type!=="customLink")??!0))?.at(0),k=isOnlyContentNode(g,"iframe")?E?.attrs?.previewPayload?.linkTitle??E?.attrs?.src??"":A?.text??T?.text??"";let I;if(S?.attrs?.payload)I=S.attrs.payload;else if(S&&p&&S.attrs?.uid){const O=S.attrs.uid,N=u.storage?.smartMediaUpload?.blobUrls?.get(O);if(N){const j=S.attrs?.width??0,L=S.attrs?.height??0,H=S.attrs?.type,B=H==="video"?"video/mp4":H==="audio"?"audio/mpeg":"image/jpeg";I={key:O,type:MediaItemType.MEDIA_ITEM,imageType:B,playableDuration:0,sources:{original:{url:N,width:j,height:L,isBase64:!1},thumbnail:{url:N,width:j,height:L,isBase64:!1},placeholder:{url:N,width:j,height:L,isBase64:!1}}}}}const P=[I,E?.attrs?.previewPayload,R].filter(isValidItem)?.filter((O,N)=>N===0),D=m;return{...y,type:P?.length>0?NewPostType.NEW_POST_MEDIA:NewPostType.NEW_POST_MESSAGE,body:k,items:P,htmlBody:D,sendCrossMention:n,mentionData:b}},generateMediaPostPayload=({editor:u,sendCrossMention:n,groupId:d,allowSendWhileUploading:p})=>{const{json:m,text:g}=getEditorData(u),y=getCommonPayload(d),b=g?.trim()??"",{mentionData:S}=getMentionDataPayload(m),{items:E}=getMediaItemsPayload(m,u,{allowPending:!!p}),{items:T}=getLinkItemsPayload(m),_=E?.length>0?E:T?.length>0?T:[];return!b&&E.length===0?{error:"Your post is empty. Add text or media to share your thoughts."}:{...y,type:E?.length>0?NewPostType.NEW_POST_MEDIA:T?.length>0?NewPostType.NEW_POST_LINK:NewPostType.NEW_POST_MESSAGE,body:b,items:_,mentionData:S,sendCrossMention:n,disableUnfurl:hasUnfurlDisabledLink(m)||void 0}},generatePollPostPayload=({editor:u,sendCrossMention:n,groupId:d})=>{const{json:p,text:m}=getEditorData(u),g=getCommonPayload(d),y=m,{mentionData:b}=getMentionDataPayload(p),{items:S}=getPollItemsPayload(p),E=ensurePollMinimum(S);return{...g,type:NewPostType.NEW_POST_POLL,body:y,items:E,mentionData:b,sendCrossMention:n}},generateCreatePostPayload=(u,n)=>{switch(u){case EditorTypes.Blog:return generateHtmlPostPayload(n);case EditorTypes.Media:return generateMediaPostPayload(n);case EditorTypes.Poll:return generatePollPostPayload(n);default:return null}},usePostBuilderEditor=({editorType:u,placement:n,groupId:d,postId:p,user:m,disableNavigationWarning:g,initialContent:y})=>{const[,b]=React.useState(0),[S,E]=React.useState(!1),T=useApi(),{allowSendWhileUploading:_,t:R}=usePostBuilder(),A=React.useMemo(()=>createPostBuilderStore({groupId:d,postId:p}),[d,p]),{getTabContent:C,saveCurrentTabContent:k,clearContent:I}=usePersistence(n,d),P=React.useRef(!1),D=React.useRef(!1),O=React.useRef(!1),N=React.useRef(!1);React.useEffect(()=>{E(!0),b(F=>F+1)},[]);const j=React.useMemo(()=>!!C(u),[u,C]),L=useEditor({extensions:getExtensions({editorType:u,api:T,store:A,user:m,t:R}),content:y&&!N.current?y:C(u)??"",editorProps:getEditorProps(),onCreate:({editor:F})=>{A.getState().setEditor(F),u===EditorTypes.Blog&&F?.chain()?.focus("end")?.run(),u===EditorTypes.Media&&F?.chain()?.focus("end")?.run(),u===EditorTypes.Poll&&!j&&initializePollEditor(F),u===EditorTypes.Poll&&j&&F?.chain()?.focus("end")?.run()},onUnmount:({editor:F})=>{if(D.current||P.current||O.current){P.current=!1,D.current=!1,O.current=!1;return}k(u,F)},immediatelyRender:!1,shouldRerenderOnTransaction:!1},[u,n,S]);React.useEffect(()=>{if(g)return;const F=q=>{L&&!L.isEmpty&&q.preventDefault()};return window.addEventListener("beforeunload",F),()=>window.removeEventListener("beforeunload",F)},[L,g]),React.useEffect(()=>{let F;if(!S||!L||!L?.view||u===EditorTypes.Poll)return;if(y&&!N.current){N.current=!0;return}const q=C(u);return q&&L?.isEditable&&(F=setTimeout(()=>{L.commands.setContent(q),L.commands.rehydrateLinkPreviews()},0)),()=>{F&&clearTimeout(F)}},[L,u,n,C,S,y]),React.useEffect(()=>{const F=q=>{const V=q.detail;if(!V||V.groupId!==d||V.editorType&&V.editorType!==u||!L||L.isDestroyed)return;const W=C(u);W&&(L.commands.setContent(W),L.commands.rehydrateLinkPreviews())};return window.addEventListener(PostBuilderEvents.DRAFT_REHYDRATE_REQUEST,F),()=>{window.removeEventListener(PostBuilderEvents.DRAFT_REHYDRATE_REQUEST,F)}},[L,u,d,C]);const H=React.useMemo(()=>L?createEditorActions(L):null,[L]),B=React.useCallback(()=>{L&&!L.isDestroyed&&(k(u,L),P.current=!0)},[L,u,k]),Y=React.useCallback(()=>{L&&!L.isDestroyed&&k(u,L)},[L,u,k]),Z=React.useCallback(()=>{D.current=!0,I()},[I]),ee=React.useCallback(()=>{O.current=!0},[]),J=React.useCallback(()=>{L&&!L.isDestroyed&&L?.commands?.focus("end")},[L]),se=React.useCallback(F=>{!L||L.isDestroyed||L.commands.setContent(F)},[L]),Q=React.useCallback(()=>{if(!L||L.isDestroyed)return null;const F=L.getHTML(),q=L.getJSON(),V=L.getText(),W=generateCreatePostPayload(u,{editor:L,sendCrossMention:!1,groupId:d,allowSendWhileUploading:_});return{html:F,json:q,text:V,payload:W??{}}},[L,u,d,_]),ne=React.useCallback(()=>{!L||L.isDestroyed||(I(),L.chain().focus().clearContent().run())},[L,I]);return{editor:L,actions:H,store:A,isMounted:S,saveBeforeSwitch:B,saveDraft:Y,discardDraft:Z,skipNextUnmountSave:ee,keepEditing:J,setContent:se,getContent:Q,clearEditor:ne}},create$5=()=>new Map,copy=u=>{const n=create$5();return u.forEach((d,p)=>{n.set(p,d)}),n},setIfUndefined=(u,n,d)=>{let p=u.get(n);return p===void 0&&u.set(n,p=d()),p},map=(u,n)=>{const d=[];for(const[p,m]of u)d.push(n(m,p));return d},any=(u,n)=>{for(const[d,p]of u)if(n(p,d))return!0;return!1},create$4=()=>new Set,last=u=>u[u.length-1],appendTo=(u,n)=>{for(let d=0;d<n.length;d++)u.push(n[d])},from=Array.from,every$1=(u,n)=>{for(let d=0;d<u.length;d++)if(!n(u[d],d,u))return!1;return!0},some=(u,n)=>{for(let d=0;d<u.length;d++)if(n(u[d],d,u))return!0;return!1},unfold=(u,n)=>{const d=new Array(u);for(let p=0;p<u;p++)d[p]=n(p,d);return d},isArray=Array.isArray;class ObservableV2{constructor(){this._observers=create$5()}on(n,d){return setIfUndefined(this._observers,n,create$4).add(d),d}once(n,d){const p=(...m)=>{this.off(n,p),d(...m)};this.on(n,p)}off(n,d){const p=this._observers.get(n);p!==void 0&&(p.delete(d),p.size===0&&this._observers.delete(n))}emit(n,d){return from((this._observers.get(n)||create$5()).values()).forEach(p=>p(...d))}destroy(){this._observers=create$5()}}const floor=Math.floor,abs=Math.abs,min=(u,n)=>u<n?u:n,max=(u,n)=>u>n?u:n,isNegativeZero=u=>u!==0?u<0:1/u<0,BIT1=1,BIT2=2,BIT3=4,BIT4=8,BIT6=32,BIT7=64,BIT8=128,BIT30=1<<29,BITS5=31,BITS6=63,BITS7=127,BITS31=2147483647,MAX_SAFE_INTEGER=Number.MAX_SAFE_INTEGER,MIN_SAFE_INTEGER=Number.MIN_SAFE_INTEGER,isInteger=Number.isInteger||(u=>typeof u=="number"&&isFinite(u)&&floor(u)===u),fromCharCode=String.fromCharCode,toLowerCase=u=>u.toLowerCase(),trimLeftRegex=/^\s*/g,trimLeft=u=>u.replace(trimLeftRegex,""),fromCamelCaseRegex=/([A-Z])/g,fromCamelCase=(u,n)=>trimLeft(u.replace(fromCamelCaseRegex,d=>`${n}${toLowerCase(d)}`)),_encodeUtf8Polyfill=u=>{const n=unescape(encodeURIComponent(u)),d=n.length,p=new Uint8Array(d);for(let m=0;m<d;m++)p[m]=n.codePointAt(m);return p},utf8TextEncoder=typeof TextEncoder<"u"?new TextEncoder:null,_encodeUtf8Native=u=>utf8TextEncoder.encode(u),encodeUtf8=utf8TextEncoder?_encodeUtf8Native:_encodeUtf8Polyfill;let utf8TextDecoder=typeof TextDecoder>"u"?null:new TextDecoder("utf-8",{fatal:!0,ignoreBOM:!0});utf8TextDecoder&&utf8TextDecoder.decode(new Uint8Array).length===1&&(utf8TextDecoder=null);const repeat=(u,n)=>unfold(n,()=>u).join("");class Encoder{constructor(){this.cpos=0,this.cbuf=new Uint8Array(100),this.bufs=[]}}const createEncoder=()=>new Encoder,encode=u=>{const n=createEncoder();return u(n),toUint8Array(n)},length=u=>{let n=u.cpos;for(let d=0;d<u.bufs.length;d++)n+=u.bufs[d].length;return n},toUint8Array=u=>{const n=new Uint8Array(length(u));let d=0;for(let p=0;p<u.bufs.length;p++){const m=u.bufs[p];n.set(m,d),d+=m.length}return n.set(new Uint8Array(u.cbuf.buffer,0,u.cpos),d),n},verifyLen=(u,n)=>{const d=u.cbuf.length;d-u.cpos<n&&(u.bufs.push(new Uint8Array(u.cbuf.buffer,0,u.cpos)),u.cbuf=new Uint8Array(max(d,n)*2),u.cpos=0)},write=(u,n)=>{const d=u.cbuf.length;u.cpos===d&&(u.bufs.push(u.cbuf),u.cbuf=new Uint8Array(d*2),u.cpos=0),u.cbuf[u.cpos++]=n},writeUint8=write,writeVarUint=(u,n)=>{for(;n>BITS7;)write(u,BIT8|BITS7&n),n=floor(n/128);write(u,BITS7&n)},writeVarInt=(u,n)=>{const d=isNegativeZero(n);for(d&&(n=-n),write(u,(n>BITS6?BIT8:0)|(d?BIT7:0)|BITS6&n),n=floor(n/64);n>0;)write(u,(n>BITS7?BIT8:0)|BITS7&n),n=floor(n/128)},_strBuffer=new Uint8Array(3e4),_maxStrBSize=_strBuffer.length/3,_writeVarStringNative=(u,n)=>{if(n.length<_maxStrBSize){const d=utf8TextEncoder.encodeInto(n,_strBuffer).written||0;writeVarUint(u,d);for(let p=0;p<d;p++)write(u,_strBuffer[p])}else writeVarUint8Array(u,encodeUtf8(n))},_writeVarStringPolyfill=(u,n)=>{const d=unescape(encodeURIComponent(n)),p=d.length;writeVarUint(u,p);for(let m=0;m<p;m++)write(u,d.codePointAt(m))},writeVarString=utf8TextEncoder&&utf8TextEncoder.encodeInto?_writeVarStringNative:_writeVarStringPolyfill,writeUint8Array=(u,n)=>{const d=u.cbuf.length,p=u.cpos,m=min(d-p,n.length),g=n.length-m;u.cbuf.set(n.subarray(0,m),p),u.cpos+=m,g>0&&(u.bufs.push(u.cbuf),u.cbuf=new Uint8Array(max(d*2,g)),u.cbuf.set(n.subarray(m)),u.cpos=g)},writeVarUint8Array=(u,n)=>{writeVarUint(u,n.byteLength),writeUint8Array(u,n)},writeOnDataView=(u,n)=>{verifyLen(u,n);const d=new DataView(u.cbuf.buffer,u.cpos,n);return u.cpos+=n,d},writeFloat32=(u,n)=>writeOnDataView(u,4).setFloat32(0,n,!1),writeFloat64=(u,n)=>writeOnDataView(u,8).setFloat64(0,n,!1),writeBigInt64=(u,n)=>writeOnDataView(u,8).setBigInt64(0,n,!1),floatTestBed=new DataView(new ArrayBuffer(4)),isFloat32=u=>(floatTestBed.setFloat32(0,u),floatTestBed.getFloat32(0)===u),writeAny=(u,n)=>{switch(typeof n){case"string":write(u,119),writeVarString(u,n);break;case"number":isInteger(n)&&abs(n)<=BITS31?(write(u,125),writeVarInt(u,n)):isFloat32(n)?(write(u,124),writeFloat32(u,n)):(write(u,123),writeFloat64(u,n));break;case"bigint":write(u,122),writeBigInt64(u,n);break;case"object":if(n===null)write(u,126);else if(isArray(n)){write(u,117),writeVarUint(u,n.length);for(let d=0;d<n.length;d++)writeAny(u,n[d])}else if(n instanceof Uint8Array)write(u,116),writeVarUint8Array(u,n);else{write(u,118);const d=Object.keys(n);writeVarUint(u,d.length);for(let p=0;p<d.length;p++){const m=d[p];writeVarString(u,m),writeAny(u,n[m])}}break;case"boolean":write(u,n?120:121);break;default:write(u,127)}};class RleEncoder extends Encoder{constructor(n){super(),this.w=n,this.s=null,this.count=0}write(n){this.s===n?this.count++:(this.count>0&&writeVarUint(this,this.count-1),this.count=1,this.w(this,n),this.s=n)}}const flushUintOptRleEncoder=u=>{u.count>0&&(writeVarInt(u.encoder,u.count===1?u.s:-u.s),u.count>1&&writeVarUint(u.encoder,u.count-2))};class UintOptRleEncoder{constructor(){this.encoder=new Encoder,this.s=0,this.count=0}write(n){this.s===n?this.count++:(flushUintOptRleEncoder(this),this.count=1,this.s=n)}toUint8Array(){return flushUintOptRleEncoder(this),toUint8Array(this.encoder)}}const flushIntDiffOptRleEncoder=u=>{if(u.count>0){const n=u.diff*2+(u.count===1?0:1);writeVarInt(u.encoder,n),u.count>1&&writeVarUint(u.encoder,u.count-2)}};class IntDiffOptRleEncoder{constructor(){this.encoder=new Encoder,this.s=0,this.count=0,this.diff=0}write(n){this.diff===n-this.s?(this.s=n,this.count++):(flushIntDiffOptRleEncoder(this),this.count=1,this.diff=n-this.s,this.s=n)}toUint8Array(){return flushIntDiffOptRleEncoder(this),toUint8Array(this.encoder)}}class StringEncoder{constructor(){this.sarr=[],this.s="",this.lensE=new UintOptRleEncoder}write(n){this.s+=n,this.s.length>19&&(this.sarr.push(this.s),this.s=""),this.lensE.write(n.length)}toUint8Array(){const n=new Encoder;return this.sarr.push(this.s),this.s="",writeVarString(n,this.sarr.join("")),writeUint8Array(n,this.lensE.toUint8Array()),toUint8Array(n)}}const create$3=u=>new Error(u),methodUnimplemented=()=>{throw create$3("Method unimplemented")},unexpectedCase=()=>{throw create$3("Unexpected case")},errorUnexpectedEndOfArray=create$3("Unexpected end of array"),errorIntegerOutOfRange=create$3("Integer out of Range");class Decoder{constructor(n){this.arr=n,this.pos=0}}const createDecoder=u=>new Decoder(u),hasContent=u=>u.pos!==u.arr.length,readUint8Array=(u,n)=>{const d=new Uint8Array(u.arr.buffer,u.pos+u.arr.byteOffset,n);return u.pos+=n,d},readVarUint8Array=u=>readUint8Array(u,readVarUint(u)),readUint8=u=>u.arr[u.pos++],readVarUint=u=>{let n=0,d=1;const p=u.arr.length;for(;u.pos<p;){const m=u.arr[u.pos++];if(n=n+(m&BITS7)*d,d*=128,m<BIT8)return n;if(n>MAX_SAFE_INTEGER)throw errorIntegerOutOfRange}throw errorUnexpectedEndOfArray},readVarInt=u=>{let n=u.arr[u.pos++],d=n&BITS6,p=64;const m=(n&BIT7)>0?-1:1;if((n&BIT8)===0)return m*d;const g=u.arr.length;for(;u.pos<g;){if(n=u.arr[u.pos++],d=d+(n&BITS7)*p,p*=128,n<BIT8)return m*d;if(d>MAX_SAFE_INTEGER)throw errorIntegerOutOfRange}throw errorUnexpectedEndOfArray},_readVarStringPolyfill=u=>{let n=readVarUint(u);if(n===0)return"";{let d=String.fromCodePoint(readUint8(u));if(--n<100)for(;n--;)d+=String.fromCodePoint(readUint8(u));else for(;n>0;){const p=n<1e4?n:1e4,m=u.arr.subarray(u.pos,u.pos+p);u.pos+=p,d+=String.fromCodePoint.apply(null,m),n-=p}return decodeURIComponent(escape(d))}},_readVarStringNative=u=>utf8TextDecoder.decode(readVarUint8Array(u)),readVarString=utf8TextDecoder?_readVarStringNative:_readVarStringPolyfill,readFromDataView=(u,n)=>{const d=new DataView(u.arr.buffer,u.arr.byteOffset+u.pos,n);return u.pos+=n,d},readFloat32=u=>readFromDataView(u,4).getFloat32(0,!1),readFloat64=u=>readFromDataView(u,8).getFloat64(0,!1),readBigInt64=u=>readFromDataView(u,8).getBigInt64(0,!1),readAnyLookupTable=[u=>{},u=>null,readVarInt,readFloat32,readFloat64,readBigInt64,u=>!1,u=>!0,readVarString,u=>{const n=readVarUint(u),d={};for(let p=0;p<n;p++){const m=readVarString(u);d[m]=readAny(u)}return d},u=>{const n=readVarUint(u),d=[];for(let p=0;p<n;p++)d.push(readAny(u));return d},readVarUint8Array],readAny=u=>readAnyLookupTable[127-readUint8(u)](u);class RleDecoder extends Decoder{constructor(n,d){super(n),this.reader=d,this.s=null,this.count=0}read(){return this.count===0&&(this.s=this.reader(this),hasContent(this)?this.count=readVarUint(this)+1:this.count=-1),this.count--,this.s}}class UintOptRleDecoder extends Decoder{constructor(n){super(n),this.s=0,this.count=0}read(){if(this.count===0){this.s=readVarInt(this);const n=isNegativeZero(this.s);this.count=1,n&&(this.s=-this.s,this.count=readVarUint(this)+2)}return this.count--,this.s}}class IntDiffOptRleDecoder extends Decoder{constructor(n){super(n),this.s=0,this.count=0,this.diff=0}read(){if(this.count===0){const n=readVarInt(this),d=n&1;this.diff=floor(n/2),this.count=1,d&&(this.count=readVarUint(this)+2)}return this.s+=this.diff,this.count--,this.s}}class StringDecoder{constructor(n){this.decoder=new UintOptRleDecoder(n),this.str=readVarString(this.decoder),this.spos=0}read(){const n=this.spos+this.decoder.read(),d=this.str.slice(this.spos,n);return this.spos=n,d}}const getRandomValues=crypto.getRandomValues.bind(crypto),rand=Math.random,uint32=()=>getRandomValues(new Uint32Array(1))[0],oneOf$1=u=>u[floor(rand()*u.length)],uuidv4Template="10000000-1000-4000-8000"+-1e11,uuidv4=()=>uuidv4Template.replace(/[018]/g,u=>(u^uint32()&15>>u/4).toString(16)),getUnixTime=Date.now,create$2=u=>new Promise(u);Promise.all.bind(Promise);const undefinedToNull=u=>u===void 0?null:u;class VarStoragePolyfill{constructor(){this.map=new Map}setItem(n,d){this.map.set(n,d)}getItem(n){return this.map.get(n)}}let _localStorage=new VarStoragePolyfill,usePolyfill=!0;try{typeof localStorage<"u"&&localStorage&&(_localStorage=localStorage,usePolyfill=!1)}catch(u){}const varStorage=_localStorage,EqualityTraitSymbol=Symbol("Equality"),equals=(u,n)=>u===n||!!u?.[EqualityTraitSymbol]?.(n)||!1,isObject$1=u=>typeof u=="object",assign=Object.assign,keys=Object.keys,forEach=(u,n)=>{for(const d in u)n(u[d],d)},size=u=>keys(u).length,isEmpty=u=>{for(const n in u)return!1;return!0},every=(u,n)=>{for(const d in u)if(!n(u[d],d))return!1;return!0},hasProperty=(u,n)=>Object.prototype.hasOwnProperty.call(u,n),equalFlat=(u,n)=>u===n||size(u)===size(n)&&every(u,(d,p)=>(d!==void 0||hasProperty(n,p))&&equals(n[p],d)),freeze=Object.freeze,deepFreeze=u=>{for(const n in u){const d=u[n];(typeof d=="object"||typeof d=="function")&&deepFreeze(u[n])}return freeze(u)},callAll=(u,n,d=0)=>{try{for(;d<u.length;d++)u[d](...n)}finally{d<u.length&&callAll(u,n,d+1)}},equalityDeep=(u,n)=>{if(u===n)return!0;if(u==null||n==null||u.constructor!==n.constructor&&(u.constructor||Object)!==(n.constructor||Object))return!1;if(u[EqualityTraitSymbol]!=null)return u[EqualityTraitSymbol](n);switch(u.constructor){case ArrayBuffer:u=new Uint8Array(u),n=new Uint8Array(n);case Uint8Array:{if(u.byteLength!==n.byteLength)return!1;for(let d=0;d<u.length;d++)if(u[d]!==n[d])return!1;break}case Set:{if(u.size!==n.size)return!1;for(const d of u)if(!n.has(d))return!1;break}case Map:{if(u.size!==n.size)return!1;for(const d of u.keys())if(!n.has(d)||!equalityDeep(u.get(d),n.get(d)))return!1;break}case void 0:case Object:if(size(u)!==size(n))return!1;for(const d in u)if(!hasProperty(u,d)||!equalityDeep(u[d],n[d]))return!1;break;case Array:if(u.length!==n.length)return!1;for(let d=0;d<u.length;d++)if(!equalityDeep(u[d],n[d]))return!1;break;default:return!1}return!0},isOneOf=(u,n)=>n.includes(u),isNode=typeof process<"u"&&process.release&&/node|io\.js/.test(process.release.name)&&Object.prototype.toString.call(typeof process<"u"?process:0)==="[object process]",isBrowser=typeof window<"u"&&typeof document<"u"&&!isNode;let params;const computeParams=()=>{if(params===void 0)if(isNode){params=create$5();const u=process.argv;let n=null;for(let d=0;d<u.length;d++){const p=u[d];p[0]==="-"?(n!==null&¶ms.set(n,""),n=p):n!==null&&(params.set(n,p),n=null)}n!==null&¶ms.set(n,"")}else typeof location=="object"?(params=create$5(),(location.search||"?").slice(1).split("&").forEach(u=>{if(u.length!==0){const[n,d]=u.split("=");params.set(`--${fromCamelCase(n,"-")}`,d),params.set(`-${fromCamelCase(n,"-")}`,d)}})):params=create$5();return params},hasParam=u=>computeParams().has(u),getVariable=u=>undefinedToNull(isNode?process.env[u.toUpperCase().replaceAll("-","_")]:varStorage.getItem(u)),hasConf=u=>hasParam("--"+u)||getVariable(u)!==null,production=hasConf("production"),forceColor=isNode&&isOneOf(process.env.FORCE_COLOR,["true","1","2"]),supportsColor=forceColor||!hasParam("--no-colors")&&!hasConf("no-color")&&(!isNode||process.stdout.isTTY)&&(!isNode||hasParam("--color")||getVariable("COLORTERM")!==null||(getVariable("TERM")||"").includes("color")),toBase64Browser=u=>{let n="";for(let d=0;d<u.byteLength;d++)n+=fromCharCode(u[d]);return btoa(n)},toBase64Node=u=>Buffer.from(u.buffer,u.byteOffset,u.byteLength).toString("base64"),toBase64=isBrowser?toBase64Browser:toBase64Node,encodeAny=u=>encode(n=>writeAny(n,u));class Pair{constructor(n,d){this.left=n,this.right=d}}const create$1=(u,n)=>new Pair(u,n),bool=u=>u.next()>=.5,int53=(u,n,d)=>floor(u.next()*(d+1-n)+n),int32=(u,n,d)=>floor(u.next()*(d+1-n)+n),int31=(u,n,d)=>int32(u,n,d),letter=u=>fromCharCode(int31(u,97,122)),word=(u,n=0,d=20)=>{const p=int31(u,n,d);let m="";for(let g=0;g<p;g++)m+=letter(u);return m},oneOf=(u,n)=>n[int31(u,0,n.length-1)],schemaSymbol=Symbol("0schema");class ValidationError{constructor(){this._rerrs=[]}extend(n,d,p,m=null){this._rerrs.push({path:n,expected:d,has:p,message:m})}toString(){const n=[];for(let d=this._rerrs.length-1;d>0;d--){const p=this._rerrs[d];n.push(repeat(" ",(this._rerrs.length-d)*2)+`${p.path!=null?`[${p.path}] `:""}${p.has} doesn't match ${p.expected}. ${p.message}`)}return n.join(`
|
|
251
251
|
`)}}const shapeExtends=(u,n)=>u===n?!0:u==null||n==null||u.constructor!==n.constructor?!1:u[EqualityTraitSymbol]?equals(u,n):isArray(u)?every$1(u,d=>some(n,p=>shapeExtends(d,p))):isObject$1(u)?every(u,(d,p)=>shapeExtends(d,n[p])):!1;class Schema{static _dilutes=!1;extends(n){let[d,p]=[this.shape,n.shape];return this.constructor._dilutes&&([p,d]=[d,p]),shapeExtends(d,p)}equals(n){return this.constructor===n.constructor&&equalityDeep(this.shape,n.shape)}[schemaSymbol](){return!0}[EqualityTraitSymbol](n){return this.equals(n)}validate(n){return this.check(n)}check(n,d){methodUnimplemented()}get nullable(){return $union(this,$null)}get optional(){return new $Optional(this)}cast(n){return assert(n,this),n}expect(n){return assert(n,this),n}}class $ConstructedBy extends Schema{constructor(n,d){super(),this.shape=n,this._c=d}check(n,d=void 0){const p=n?.constructor===this.shape&&(this._c==null||this._c(n));return!p&&d?.extend(null,this.shape.name,n?.constructor.name,n?.constructor!==this.shape?"Constructor match failed":"Check failed"),p}}const $constructedBy=(u,n=null)=>new $ConstructedBy(u,n);$constructedBy($ConstructedBy);class $Custom extends Schema{constructor(n){super(),this.shape=n}check(n,d){const p=this.shape(n);return!p&&d?.extend(null,"custom prop",n?.constructor.name,"failed to check custom prop"),p}}const $custom=u=>new $Custom(u);$constructedBy($Custom);class $Literal extends Schema{constructor(n){super(),this.shape=n}check(n,d){const p=this.shape.some(m=>m===n);return!p&&d?.extend(null,this.shape.join(" | "),n.toString()),p}}const $literal=(...u)=>new $Literal(u),$$literal=$constructedBy($Literal),_regexEscape=RegExp.escape||(u=>u.replace(/[().|&,$^[\]]/g,n=>"\\"+n)),_schemaStringTemplateToRegex=u=>{if($string.check(u))return[_regexEscape(u)];if($$literal.check(u))return u.shape.map(n=>n+"");if($$number.check(u))return["[+-]?\\d+.?\\d*"];if($$string.check(u))return[".*"];if($$union.check(u))return u.shape.map(_schemaStringTemplateToRegex).flat(1);unexpectedCase()};class $StringTemplate extends Schema{constructor(n){super(),this.shape=n,this._r=new RegExp("^"+n.map(_schemaStringTemplateToRegex).map(d=>`(${d.join("|")})`).join("")+"$")}check(n,d){const p=this._r.exec(n)!=null;return!p&&d?.extend(null,this._r.toString(),n.toString(),"String doesn't match string template."),p}}$constructedBy($StringTemplate);const isOptionalSymbol=Symbol("optional");class $Optional extends Schema{constructor(n){super(),this.shape=n}check(n,d){const p=n===void 0||this.shape.check(n);return!p&&d?.extend(null,"undefined (optional)","()"),p}get[isOptionalSymbol](){return!0}}const $$optional=$constructedBy($Optional);class $Never extends Schema{check(n,d){return d?.extend(null,"never",typeof n),!1}}$constructedBy($Never);class $Object extends Schema{constructor(n,d=!1){super(),this.shape=n,this._isPartial=d}static _dilutes=!0;get partial(){return new $Object(this.shape,!0)}check(n,d){return n==null?(d?.extend(null,"object","null"),!1):every(this.shape,(p,m)=>{const g=this._isPartial&&!hasProperty(n,m)||p.check(n[m],d);return!g&&d?.extend(m.toString(),p.toString(),typeof n[m],"Object property does not match"),g})}}const $object=u=>new $Object(u),$$object=$constructedBy($Object),$objectAny=$custom(u=>u!=null&&(u.constructor===Object||u.constructor==null));class $Record extends Schema{constructor(n,d){super(),this.shape={keys:n,values:d}}check(n,d){return n!=null&&every(n,(p,m)=>{const g=this.shape.keys.check(m,d);return!g&&d?.extend(m+"","Record",typeof n,g?"Key doesn't match schema":"Value doesn't match value"),g&&this.shape.values.check(p,d)})}}const $record=(u,n)=>new $Record(u,n),$$record=$constructedBy($Record);class $Tuple extends Schema{constructor(n){super(),this.shape=n}check(n,d){return n!=null&&every(this.shape,(p,m)=>{const g=p.check(n[m],d);return!g&&d?.extend(m.toString(),"Tuple",typeof p),g})}}const $tuple=(...u)=>new $Tuple(u);$constructedBy($Tuple);class $Array extends Schema{constructor(n){super(),this.shape=n.length===1?n[0]:new $Union(n)}check(n,d){const p=isArray(n)&&every$1(n,m=>this.shape.check(m));return!p&&d?.extend(null,"Array",""),p}}const $array=(...u)=>new $Array(u),$$array=$constructedBy($Array),$arrayAny=$custom(u=>isArray(u));class $InstanceOf extends Schema{constructor(n,d){super(),this.shape=n,this._c=d}check(n,d){const p=n instanceof this.shape&&(this._c==null||this._c(n));return!p&&d?.extend(null,this.shape.name,n?.constructor.name),p}}const $instanceOf=(u,n=null)=>new $InstanceOf(u,n);$constructedBy($InstanceOf);const $$schema=$instanceOf(Schema);class $Lambda extends Schema{constructor(n){super(),this.len=n.length-1,this.args=$tuple(...n.slice(-1)),this.res=n[this.len]}check(n,d){const p=n.constructor===Function&&n.length<=this.len;return!p&&d?.extend(null,"function",typeof n),p}}const $$lambda=$constructedBy($Lambda),$function=$custom(u=>typeof u=="function");class $Intersection extends Schema{constructor(n){super(),this.shape=n}check(n,d){const p=every$1(this.shape,m=>m.check(n,d));return!p&&d?.extend(null,"Intersectinon",typeof n),p}}$constructedBy($Intersection,u=>u.shape.length>0);class $Union extends Schema{static _dilutes=!0;constructor(n){super(),this.shape=n}check(n,d){const p=some(this.shape,m=>m.check(n,d));return d?.extend(null,"Union",typeof n),p}}const $union=(...u)=>u.findIndex(n=>$$union.check(n))>=0?$union(...u.map(n=>$(n)).map(n=>$$union.check(n)?n.shape:[n]).flat(1)):u.length===1?u[0]:new $Union(u),$$union=$constructedBy($Union),_t=()=>!0,$any=$custom(_t),$$any=$constructedBy($Custom,u=>u.shape===_t),$bigint=$custom(u=>typeof u=="bigint"),$$bigint=$custom(u=>u===$bigint),$symbol=$custom(u=>typeof u=="symbol");$custom(u=>u===$symbol);const $number=$custom(u=>typeof u=="number"),$$number=$custom(u=>u===$number),$string=$custom(u=>typeof u=="string"),$$string=$custom(u=>u===$string),$boolean=$custom(u=>typeof u=="boolean"),$$boolean=$custom(u=>u===$boolean),$undefined=$literal(void 0);$constructedBy($Literal,u=>u.shape.length===1&&u.shape[0]===void 0);$literal(void 0);const $null=$literal(null),$$null=$constructedBy($Literal,u=>u.shape.length===1&&u.shape[0]===null);$constructedBy(Uint8Array);$constructedBy($ConstructedBy,u=>u.shape===Uint8Array);const $primitive=$union($number,$string,$null,$undefined,$bigint,$boolean,$symbol);(()=>{const u=$array($any),n=$record($string,$any),d=$union($number,$string,$null,$boolean,u,n);return u.shape=d,n.shape.values=d,d})();const $=u=>{if($$schema.check(u))return u;if($objectAny.check(u)){const n={};for(const d in u)n[d]=$(u[d]);return $object(n)}else{if($arrayAny.check(u))return $union(...u.map($));if($primitive.check(u))return $literal(u);if($function.check(u))return $constructedBy(u)}unexpectedCase()},assert=production?()=>{}:(u,n)=>{const d=new ValidationError;if(!n.check(u,d))throw create$3(`Expected value to be of type ${n.constructor.name}.
|
|
252
252
|
${d.toString()}`)};class PatternMatcher{constructor(n){this.patterns=[],this.$state=n}if(n,d){return this.patterns.push({if:$(n),h:d}),this}else(n){return this.if($any,n)}done(){return(n,d)=>{for(let p=0;p<this.patterns.length;p++){const m=this.patterns[p];if(m.if.check(n))return m.h(n,d)}throw create$3("Unhandled pattern")}}}const match=u=>new PatternMatcher(u),_random=match($any).if($$number,(u,n)=>int53(n,MIN_SAFE_INTEGER,MAX_SAFE_INTEGER)).if($$string,(u,n)=>word(n)).if($$boolean,(u,n)=>bool(n)).if($$bigint,(u,n)=>BigInt(int53(n,MIN_SAFE_INTEGER,MAX_SAFE_INTEGER))).if($$union,(u,n)=>random(n,oneOf(n,u.shape))).if($$object,(u,n)=>{const d={};for(const p in u.shape){let m=u.shape[p];if($$optional.check(m)){if(bool(n))continue;m=m.shape}d[p]=_random(m,n)}return d}).if($$array,(u,n)=>{const d=[],p=int32(n,0,42);for(let m=0;m<p;m++)d.push(random(n,u.shape));return d}).if($$literal,(u,n)=>oneOf(n,u.shape)).if($$null,(u,n)=>null).if($$lambda,(u,n)=>{const d=random(n,u.res);return()=>d}).if($$any,(u,n)=>random(n,oneOf(n,[$number,$string,$null,$undefined,$bigint,$boolean,$array($number),$record($union("a","b","c"),$number)]))).if($$record,(u,n)=>{const d={},p=int53(n,0,3);for(let m=0;m<p;m++){const g=random(n,u.shape.keys),y=random(n,u.shape.values);d[g]=y}return d}).done(),random=(u,n)=>_random($(n),u),doc=typeof document<"u"?document:{};$custom(u=>u.nodeType===DOCUMENT_FRAGMENT_NODE);typeof DOMParser<"u"&&new DOMParser;$custom(u=>u.nodeType===ELEMENT_NODE);$custom(u=>u.nodeType===TEXT_NODE);const mapToStyleString=u=>map(u,(n,d)=>`${d}:${n};`).join(""),ELEMENT_NODE=doc.ELEMENT_NODE,TEXT_NODE=doc.TEXT_NODE,DOCUMENT_NODE=doc.DOCUMENT_NODE,DOCUMENT_FRAGMENT_NODE=doc.DOCUMENT_FRAGMENT_NODE;$custom(u=>u.nodeType===DOCUMENT_NODE);const createTimeoutClass=u=>class{constructor(d){this._=d}destroy(){u(this._)}},Timeout=createTimeoutClass(clearTimeout),timeout=(u,n)=>new Timeout(setTimeout(n,u)),create=Symbol,BOLD=create(),UNBOLD=create(),BLUE=create(),GREY=create(),GREEN=create(),RED=create(),PURPLE=create(),ORANGE=create(),UNCOLOR=create(),computeNoColorLoggingArgs=u=>{u.length===1&&u[0]?.constructor===Function&&(u=u[0]());const n=[],d=[];let p=0;for(;p<u.length;p++){const m=u[p];if(m===void 0)break;if(m.constructor===String||m.constructor===Number)n.push(m);else if(m.constructor===Object)break}for(p>0&&d.push(n.join(""));p<u.length;p++){const m=u[p];m instanceof Symbol||d.push(m)}return d},_browserStyleMap={[BOLD]:create$1("font-weight","bold"),[UNBOLD]:create$1("font-weight","normal"),[BLUE]:create$1("color","blue"),[GREEN]:create$1("color","green"),[GREY]:create$1("color","grey"),[RED]:create$1("color","red"),[PURPLE]:create$1("color","purple"),[ORANGE]:create$1("color","orange"),[UNCOLOR]:create$1("color","black")},computeBrowserLoggingArgs=u=>{u.length===1&&u[0]?.constructor===Function&&(u=u[0]());const n=[],d=[],p=create$5();let m=[],g=0;for(;g<u.length;g++){const y=u[g],b=_browserStyleMap[y];if(b!==void 0)p.set(b.left,b.right);else{if(y===void 0)break;if(y.constructor===String||y.constructor===Number){const S=mapToStyleString(p);g>0||S.length>0?(n.push("%c"+y),d.push(S)):n.push(y)}else break}}for(g>0&&(m=d,m.unshift(n.join("")));g<u.length;g++){const y=u[g];y instanceof Symbol||m.push(y)}return m},computeLoggingArgs=supportsColor?computeBrowserLoggingArgs:computeNoColorLoggingArgs,print=(...u)=>{vconsoles.forEach(n=>n.print(u))},warn=(...u)=>{u.unshift(ORANGE),vconsoles.forEach(n=>n.print(u))},vconsoles=create$4(),createIterator=u=>({[Symbol.iterator](){return this},next:u}),iteratorFilter=(u,n)=>createIterator(()=>{let d;do d=u.next();while(!d.done&&!n(d.value));return d}),iteratorMap=(u,n)=>createIterator(()=>{const{done:d,value:p}=u.next();return{done:d,value:d?void 0:n(p)}});class DeleteItem{constructor(n,d){this.clock=n,this.len=d}}class DeleteSet{constructor(){this.clients=new Map}}const iterateDeletedStructs=(u,n,d)=>n.clients.forEach((p,m)=>{const g=u.doc.store.clients.get(m);if(g!=null){const y=g[g.length-1],b=y.id.clock+y.length;for(let S=0,E=p[S];S<p.length&&E.clock<b;E=p[++S])iterateStructs(u,g,E.clock,E.len,d)}}),findIndexDS=(u,n)=>{let d=0,p=u.length-1;for(;d<=p;){const m=floor((d+p)/2),g=u[m],y=g.clock;if(y<=n){if(n<y+g.len)return m;d=m+1}else p=m-1}return null},isDeleted=(u,n)=>{const d=u.clients.get(n.client);return d!==void 0&&findIndexDS(d,n.clock)!==null},sortAndMergeDeleteSet=u=>{u.clients.forEach(n=>{n.sort((m,g)=>m.clock-g.clock);let d,p;for(d=1,p=1;d<n.length;d++){const m=n[p-1],g=n[d];m.clock+m.len>=g.clock?m.len=max(m.len,g.clock+g.len-m.clock):(p<d&&(n[p]=g),p++)}n.length=p})},mergeDeleteSets=u=>{const n=new DeleteSet;for(let d=0;d<u.length;d++)u[d].clients.forEach((p,m)=>{if(!n.clients.has(m)){const g=p.slice();for(let y=d+1;y<u.length;y++)appendTo(g,u[y].clients.get(m)||[]);n.clients.set(m,g)}});return sortAndMergeDeleteSet(n),n},addToDeleteSet=(u,n,d,p)=>{setIfUndefined(u.clients,n,()=>[]).push(new DeleteItem(d,p))},createDeleteSet=()=>new DeleteSet,createDeleteSetFromStructStore=u=>{const n=createDeleteSet();return u.clients.forEach((d,p)=>{const m=[];for(let g=0;g<d.length;g++){const y=d[g];if(y.deleted){const b=y.id.clock;let S=y.length;if(g+1<d.length)for(let E=d[g+1];g+1<d.length&&E.deleted;E=d[++g+1])S+=E.length;m.push(new DeleteItem(b,S))}}m.length>0&&n.clients.set(p,m)}),n},writeDeleteSet=(u,n)=>{writeVarUint(u.restEncoder,n.clients.size),from(n.clients.entries()).sort((d,p)=>p[0]-d[0]).forEach(([d,p])=>{u.resetDsCurVal(),writeVarUint(u.restEncoder,d);const m=p.length;writeVarUint(u.restEncoder,m);for(let g=0;g<m;g++){const y=p[g];u.writeDsClock(y.clock),u.writeDsLen(y.len)}})},readDeleteSet=u=>{const n=new DeleteSet,d=readVarUint(u.restDecoder);for(let p=0;p<d;p++){u.resetDsCurVal();const m=readVarUint(u.restDecoder),g=readVarUint(u.restDecoder);if(g>0){const y=setIfUndefined(n.clients,m,()=>[]);for(let b=0;b<g;b++)y.push(new DeleteItem(u.readDsClock(),u.readDsLen()))}}return n},readAndApplyDeleteSet=(u,n,d)=>{const p=new DeleteSet,m=readVarUint(u.restDecoder);for(let g=0;g<m;g++){u.resetDsCurVal();const y=readVarUint(u.restDecoder),b=readVarUint(u.restDecoder),S=d.clients.get(y)||[],E=getState(d,y);for(let T=0;T<b;T++){const _=u.readDsClock(),R=_+u.readDsLen();if(_<E){E<R&&addToDeleteSet(p,y,E,R-E);let A=findIndexSS(S,_),C=S[A];for(!C.deleted&&C.id.clock<_&&(S.splice(A+1,0,splitItem(n,C,_-C.id.clock)),A++);A<S.length&&(C=S[A++],C.id.clock<R);)C.deleted||(R<C.id.clock+C.length&&S.splice(A,0,splitItem(n,C,R-C.id.clock)),C.delete(n))}else addToDeleteSet(p,y,_,R-_)}}if(p.clients.size>0){const g=new UpdateEncoderV2;return writeVarUint(g.restEncoder,0),writeDeleteSet(g,p),g.toUint8Array()}return null},generateNewClientId=uint32;class Doc extends ObservableV2{constructor({guid:n=uuidv4(),collectionid:d=null,gc:p=!0,gcFilter:m=()=>!0,meta:g=null,autoLoad:y=!1,shouldLoad:b=!0}={}){super(),this.gc=p,this.gcFilter=m,this.clientID=generateNewClientId(),this.guid=n,this.collectionid=d,this.share=new Map,this.store=new StructStore,this._transaction=null,this._transactionCleanups=[],this.subdocs=new Set,this._item=null,this.shouldLoad=b,this.autoLoad=y,this.meta=g,this.isLoaded=!1,this.isSynced=!1,this.isDestroyed=!1,this.whenLoaded=create$2(E=>{this.on("load",()=>{this.isLoaded=!0,E(this)})});const S=()=>create$2(E=>{const T=_=>{(_===void 0||_===!0)&&(this.off("sync",T),E())};this.on("sync",T)});this.on("sync",E=>{E===!1&&this.isSynced&&(this.whenSynced=S()),this.isSynced=E===void 0||E===!0,this.isSynced&&!this.isLoaded&&this.emit("load",[this])}),this.whenSynced=S()}load(){const n=this._item;n!==null&&!this.shouldLoad&&transact(n.parent.doc,d=>{d.subdocsLoaded.add(this)},null,!0),this.shouldLoad=!0}getSubdocs(){return this.subdocs}getSubdocGuids(){return new Set(from(this.subdocs).map(n=>n.guid))}transact(n,d=null){return transact(this,n,d)}get(n,d=AbstractType){const p=setIfUndefined(this.share,n,()=>{const g=new d;return g._integrate(this,null),g}),m=p.constructor;if(d!==AbstractType&&m!==d)if(m===AbstractType){const g=new d;g._map=p._map,p._map.forEach(y=>{for(;y!==null;y=y.left)y.parent=g}),g._start=p._start;for(let y=g._start;y!==null;y=y.right)y.parent=g;return g._length=p._length,this.share.set(n,g),g._integrate(this,null),g}else throw new Error(`Type with the name ${n} has already been defined with a different constructor`);return p}getArray(n=""){return this.get(n,YArray)}getText(n=""){return this.get(n,YText)}getMap(n=""){return this.get(n,YMap)}getXmlElement(n=""){return this.get(n,YXmlElement)}getXmlFragment(n=""){return this.get(n,YXmlFragment)}toJSON(){const n={};return this.share.forEach((d,p)=>{n[p]=d.toJSON()}),n}destroy(){this.isDestroyed=!0,from(this.subdocs).forEach(d=>d.destroy());const n=this._item;if(n!==null){this._item=null;const d=n.content;d.doc=new Doc({guid:this.guid,...d.opts,shouldLoad:!1}),d.doc._item=n,transact(n.parent.doc,p=>{const m=d.doc;n.deleted||p.subdocsAdded.add(m),p.subdocsRemoved.add(this)},null,!0)}this.emit("destroyed",[!0]),this.emit("destroy",[this]),super.destroy()}}class DSDecoderV2{constructor(n){this.dsCurrVal=0,this.restDecoder=n}resetDsCurVal(){this.dsCurrVal=0}readDsClock(){return this.dsCurrVal+=readVarUint(this.restDecoder),this.dsCurrVal}readDsLen(){const n=readVarUint(this.restDecoder)+1;return this.dsCurrVal+=n,n}}class UpdateDecoderV2 extends DSDecoderV2{constructor(n){super(n),this.keys=[],readVarUint(n),this.keyClockDecoder=new IntDiffOptRleDecoder(readVarUint8Array(n)),this.clientDecoder=new UintOptRleDecoder(readVarUint8Array(n)),this.leftClockDecoder=new IntDiffOptRleDecoder(readVarUint8Array(n)),this.rightClockDecoder=new IntDiffOptRleDecoder(readVarUint8Array(n)),this.infoDecoder=new RleDecoder(readVarUint8Array(n),readUint8),this.stringDecoder=new StringDecoder(readVarUint8Array(n)),this.parentInfoDecoder=new RleDecoder(readVarUint8Array(n),readUint8),this.typeRefDecoder=new UintOptRleDecoder(readVarUint8Array(n)),this.lenDecoder=new UintOptRleDecoder(readVarUint8Array(n))}readLeftID(){return new ID(this.clientDecoder.read(),this.leftClockDecoder.read())}readRightID(){return new ID(this.clientDecoder.read(),this.rightClockDecoder.read())}readClient(){return this.clientDecoder.read()}readInfo(){return this.infoDecoder.read()}readString(){return this.stringDecoder.read()}readParentInfo(){return this.parentInfoDecoder.read()===1}readTypeRef(){return this.typeRefDecoder.read()}readLen(){return this.lenDecoder.read()}readAny(){return readAny(this.restDecoder)}readBuf(){return readVarUint8Array(this.restDecoder)}readJSON(){return readAny(this.restDecoder)}readKey(){const n=this.keyClockDecoder.read();if(n<this.keys.length)return this.keys[n];{const d=this.stringDecoder.read();return this.keys.push(d),d}}}class DSEncoderV1{constructor(){this.restEncoder=createEncoder()}toUint8Array(){return toUint8Array(this.restEncoder)}resetDsCurVal(){}writeDsClock(n){writeVarUint(this.restEncoder,n)}writeDsLen(n){writeVarUint(this.restEncoder,n)}}class UpdateEncoderV1 extends DSEncoderV1{writeLeftID(n){writeVarUint(this.restEncoder,n.client),writeVarUint(this.restEncoder,n.clock)}writeRightID(n){writeVarUint(this.restEncoder,n.client),writeVarUint(this.restEncoder,n.clock)}writeClient(n){writeVarUint(this.restEncoder,n)}writeInfo(n){writeUint8(this.restEncoder,n)}writeString(n){writeVarString(this.restEncoder,n)}writeParentInfo(n){writeVarUint(this.restEncoder,n?1:0)}writeTypeRef(n){writeVarUint(this.restEncoder,n)}writeLen(n){writeVarUint(this.restEncoder,n)}writeAny(n){writeAny(this.restEncoder,n)}writeBuf(n){writeVarUint8Array(this.restEncoder,n)}writeJSON(n){writeVarString(this.restEncoder,JSON.stringify(n))}writeKey(n){writeVarString(this.restEncoder,n)}}class DSEncoderV2{constructor(){this.restEncoder=createEncoder(),this.dsCurrVal=0}toUint8Array(){return toUint8Array(this.restEncoder)}resetDsCurVal(){this.dsCurrVal=0}writeDsClock(n){const d=n-this.dsCurrVal;this.dsCurrVal=n,writeVarUint(this.restEncoder,d)}writeDsLen(n){n===0&&unexpectedCase(),writeVarUint(this.restEncoder,n-1),this.dsCurrVal+=n}}class UpdateEncoderV2 extends DSEncoderV2{constructor(){super(),this.keyMap=new Map,this.keyClock=0,this.keyClockEncoder=new IntDiffOptRleEncoder,this.clientEncoder=new UintOptRleEncoder,this.leftClockEncoder=new IntDiffOptRleEncoder,this.rightClockEncoder=new IntDiffOptRleEncoder,this.infoEncoder=new RleEncoder(writeUint8),this.stringEncoder=new StringEncoder,this.parentInfoEncoder=new RleEncoder(writeUint8),this.typeRefEncoder=new UintOptRleEncoder,this.lenEncoder=new UintOptRleEncoder}toUint8Array(){const n=createEncoder();return writeVarUint(n,0),writeVarUint8Array(n,this.keyClockEncoder.toUint8Array()),writeVarUint8Array(n,this.clientEncoder.toUint8Array()),writeVarUint8Array(n,this.leftClockEncoder.toUint8Array()),writeVarUint8Array(n,this.rightClockEncoder.toUint8Array()),writeVarUint8Array(n,toUint8Array(this.infoEncoder)),writeVarUint8Array(n,this.stringEncoder.toUint8Array()),writeVarUint8Array(n,toUint8Array(this.parentInfoEncoder)),writeVarUint8Array(n,this.typeRefEncoder.toUint8Array()),writeVarUint8Array(n,this.lenEncoder.toUint8Array()),writeUint8Array(n,toUint8Array(this.restEncoder)),toUint8Array(n)}writeLeftID(n){this.clientEncoder.write(n.client),this.leftClockEncoder.write(n.clock)}writeRightID(n){this.clientEncoder.write(n.client),this.rightClockEncoder.write(n.clock)}writeClient(n){this.clientEncoder.write(n)}writeInfo(n){this.infoEncoder.write(n)}writeString(n){this.stringEncoder.write(n)}writeParentInfo(n){this.parentInfoEncoder.write(n?1:0)}writeTypeRef(n){this.typeRefEncoder.write(n)}writeLen(n){this.lenEncoder.write(n)}writeAny(n){writeAny(this.restEncoder,n)}writeBuf(n){writeVarUint8Array(this.restEncoder,n)}writeJSON(n){writeAny(this.restEncoder,n)}writeKey(n){const d=this.keyMap.get(n);d===void 0?(this.keyClockEncoder.write(this.keyClock++),this.stringEncoder.write(n)):this.keyClockEncoder.write(d)}}const writeStructs=(u,n,d,p)=>{p=max(p,n[0].id.clock);const m=findIndexSS(n,p);writeVarUint(u.restEncoder,n.length-m),u.writeClient(d),writeVarUint(u.restEncoder,p);const g=n[m];g.write(u,p-g.id.clock);for(let y=m+1;y<n.length;y++)n[y].write(u,0)},writeClientsStructs=(u,n,d)=>{const p=new Map;d.forEach((m,g)=>{getState(n,g)>m&&p.set(g,m)}),getStateVector(n).forEach((m,g)=>{d.has(g)||p.set(g,0)}),writeVarUint(u.restEncoder,p.size),from(p.entries()).sort((m,g)=>g[0]-m[0]).forEach(([m,g])=>{writeStructs(u,n.clients.get(m),m,g)})},readClientsStructRefs=(u,n)=>{const d=create$5(),p=readVarUint(u.restDecoder);for(let m=0;m<p;m++){const g=readVarUint(u.restDecoder),y=new Array(g),b=u.readClient();let S=readVarUint(u.restDecoder);d.set(b,{i:0,refs:y});for(let E=0;E<g;E++){const T=u.readInfo();switch(BITS5&T){case 0:{const _=u.readLen();y[E]=new GC(createID(b,S),_),S+=_;break}case 10:{const _=readVarUint(u.restDecoder);y[E]=new Skip(createID(b,S),_),S+=_;break}default:{const _=(T&(BIT7|BIT8))===0,R=new Item(createID(b,S),null,(T&BIT8)===BIT8?u.readLeftID():null,null,(T&BIT7)===BIT7?u.readRightID():null,_?u.readParentInfo()?n.get(u.readString()):u.readLeftID():null,_&&(T&BIT6)===BIT6?u.readString():null,readItemContent(u,T));y[E]=R,S+=R.length}}}}return d},integrateStructs=(u,n,d)=>{const p=[];let m=from(d.keys()).sort((A,C)=>A-C);if(m.length===0)return null;const g=()=>{if(m.length===0)return null;let A=d.get(m[m.length-1]);for(;A.refs.length===A.i;)if(m.pop(),m.length>0)A=d.get(m[m.length-1]);else return null;return A};let y=g();if(y===null)return null;const b=new StructStore,S=new Map,E=(A,C)=>{const k=S.get(A);(k==null||k>C)&&S.set(A,C)};let T=y.refs[y.i++];const _=new Map,R=()=>{for(const A of p){const C=A.id.client,k=d.get(C);k?(k.i--,b.clients.set(C,k.refs.slice(k.i)),d.delete(C),k.i=0,k.refs=[]):b.clients.set(C,[A]),m=m.filter(I=>I!==C)}p.length=0};for(;;){if(T.constructor!==Skip){const C=setIfUndefined(_,T.id.client,()=>getState(n,T.id.client))-T.id.clock;if(C<0)p.push(T),E(T.id.client,T.id.clock-1),R();else{const k=T.getMissing(u,n);if(k!==null){p.push(T);const I=d.get(k)||{refs:[],i:0};if(I.refs.length===I.i)E(k,getState(n,k)),R();else{T=I.refs[I.i++];continue}}else(C===0||C<T.length)&&(T.integrate(u,C),_.set(T.id.client,T.id.clock+T.length))}}if(p.length>0)T=p.pop();else if(y!==null&&y.i<y.refs.length)T=y.refs[y.i++];else{if(y=g(),y===null)break;T=y.refs[y.i++]}}if(b.clients.size>0){const A=new UpdateEncoderV2;return writeClientsStructs(A,b,new Map),writeVarUint(A.restEncoder,0),{missing:S,update:A.toUint8Array()}}return null},writeStructsFromTransaction=(u,n)=>writeClientsStructs(u,n.doc.store,n.beforeState),readUpdateV2=(u,n,d,p=new UpdateDecoderV2(u))=>transact(n,m=>{m.local=!1;let g=!1;const y=m.doc,b=y.store,S=readClientsStructRefs(p,y),E=integrateStructs(m,b,S),T=b.pendingStructs;if(T){for(const[R,A]of T.missing)if(A<getState(b,R)){g=!0;break}if(E){for(const[R,A]of E.missing){const C=T.missing.get(R);(C==null||C>A)&&T.missing.set(R,A)}T.update=mergeUpdatesV2([T.update,E.update])}}else b.pendingStructs=E;const _=readAndApplyDeleteSet(p,m,b);if(b.pendingDs){const R=new UpdateDecoderV2(createDecoder(b.pendingDs));readVarUint(R.restDecoder);const A=readAndApplyDeleteSet(R,m,b);_&&A?b.pendingDs=mergeUpdatesV2([_,A]):b.pendingDs=_||A}else b.pendingDs=_;if(g){const R=b.pendingStructs.update;b.pendingStructs=null,applyUpdateV2(m.doc,R)}},d,!1),applyUpdateV2=(u,n,d,p=UpdateDecoderV2)=>{const m=createDecoder(n);readUpdateV2(m,u,d,new p(m))};class EventHandler{constructor(){this.l=[]}}const createEventHandler=()=>new EventHandler,addEventHandlerListener=(u,n)=>u.l.push(n),removeEventHandlerListener=(u,n)=>{const d=u.l,p=d.length;u.l=d.filter(m=>n!==m),u.l.length},callEventHandlerListeners=(u,n,d)=>callAll(u.l,[n,d]);class ID{constructor(n,d){this.client=n,this.clock=d}}const compareIDs=(u,n)=>u===n||u!==null&&n!==null&&u.client===n.client&&u.clock===n.clock,createID=(u,n)=>new ID(u,n),findRootTypeKey=u=>{for(const[n,d]of u.doc.share.entries())if(d===u)return n;throw unexpectedCase()},isParentOf=(u,n)=>{for(;n!==null;){if(n.parent===u)return!0;n=n.parent._item}return!1};class RelativePosition{constructor(n,d,p,m=0){this.type=n,this.tname=d,this.item=p,this.assoc=m}}class AbsolutePosition{constructor(n,d,p=0){this.type=n,this.index=d,this.assoc=p}}const createAbsolutePosition=(u,n,d=0)=>new AbsolutePosition(u,n,d),createRelativePosition$1=(u,n,d)=>{let p=null,m=null;return u._item===null?m=findRootTypeKey(u):p=createID(u._item.id.client,u._item.id.clock),new RelativePosition(p,m,n,d)},createRelativePositionFromTypeIndex=(u,n,d=0)=>{let p=u._start;if(d<0){if(n===0)return createRelativePosition$1(u,null,d);n--}for(;p!==null;){if(!p.deleted&&p.countable){if(p.length>n)return createRelativePosition$1(u,createID(p.id.client,p.id.clock+n),d);n-=p.length}if(p.right===null&&d<0)return createRelativePosition$1(u,p.lastId,d);p=p.right}return createRelativePosition$1(u,null,d)},getItemWithOffset=(u,n)=>{const d=getItem(u,n),p=n.clock-d.id.clock;return{item:d,diff:p}},createAbsolutePositionFromRelativePosition=(u,n,d=!0)=>{const p=n.store,m=u.item,g=u.type,y=u.tname,b=u.assoc;let S=null,E=0;if(m!==null){if(getState(p,m.client)<=m.clock)return null;const T=d?followRedone(p,m):getItemWithOffset(p,m),_=T.item;if(!(_ instanceof Item))return null;if(S=_.parent,S._item===null||!S._item.deleted){E=_.deleted||!_.countable?0:T.diff+(b>=0?0:1);let R=_.left;for(;R!==null;)!R.deleted&&R.countable&&(E+=R.length),R=R.left}}else{if(y!==null)S=n.get(y);else if(g!==null){if(getState(p,g.client)<=g.clock)return null;const{item:T}=d?followRedone(p,g):{item:getItem(p,g)};if(T instanceof Item&&T.content instanceof ContentType)S=T.content.type;else return null}else throw unexpectedCase();b>=0?E=S._length:E=0}return createAbsolutePosition(S,E,u.assoc)};class Snapshot{constructor(n,d){this.ds=n,this.sv=d}}const createSnapshot=(u,n)=>new Snapshot(u,n),snapshot=u=>createSnapshot(createDeleteSetFromStructStore(u.store),getStateVector(u.store)),isVisible$1=(u,n)=>n===void 0?!u.deleted:n.sv.has(u.id.client)&&(n.sv.get(u.id.client)||0)>u.id.clock&&!isDeleted(n.ds,u.id),splitSnapshotAffectedStructs=(u,n)=>{const d=setIfUndefined(u.meta,splitSnapshotAffectedStructs,create$4),p=u.doc.store;d.has(n)||(n.sv.forEach((m,g)=>{m<getState(p,g)&&getItemCleanStart(u,createID(g,m))}),iterateDeletedStructs(u,n.ds,m=>{}),d.add(n))};class StructStore{constructor(){this.clients=new Map,this.pendingStructs=null,this.pendingDs=null}}const getStateVector=u=>{const n=new Map;return u.clients.forEach((d,p)=>{const m=d[d.length-1];n.set(p,m.id.clock+m.length)}),n},getState=(u,n)=>{const d=u.clients.get(n);if(d===void 0)return 0;const p=d[d.length-1];return p.id.clock+p.length},addStruct=(u,n)=>{let d=u.clients.get(n.id.client);if(d===void 0)d=[],u.clients.set(n.id.client,d);else{const p=d[d.length-1];if(p.id.clock+p.length!==n.id.clock)throw unexpectedCase()}d.push(n)},findIndexSS=(u,n)=>{let d=0,p=u.length-1,m=u[p],g=m.id.clock;if(g===n)return p;let y=floor(n/(g+m.length-1)*p);for(;d<=p;){if(m=u[y],g=m.id.clock,g<=n){if(n<g+m.length)return y;d=y+1}else p=y-1;y=floor((d+p)/2)}throw unexpectedCase()},find=(u,n)=>{const d=u.clients.get(n.client);return d[findIndexSS(d,n.clock)]},getItem=find,findIndexCleanStart=(u,n,d)=>{const p=findIndexSS(n,d),m=n[p];return m.id.clock<d&&m instanceof Item?(n.splice(p+1,0,splitItem(u,m,d-m.id.clock)),p+1):p},getItemCleanStart=(u,n)=>{const d=u.doc.store.clients.get(n.client);return d[findIndexCleanStart(u,d,n.clock)]},getItemCleanEnd=(u,n,d)=>{const p=n.clients.get(d.client),m=findIndexSS(p,d.clock),g=p[m];return d.clock!==g.id.clock+g.length-1&&g.constructor!==GC&&p.splice(m+1,0,splitItem(u,g,d.clock-g.id.clock+1)),g},replaceStruct=(u,n,d)=>{const p=u.clients.get(n.id.client);p[findIndexSS(p,n.id.clock)]=d},iterateStructs=(u,n,d,p,m)=>{if(p===0)return;const g=d+p;let y=findIndexCleanStart(u,n,d),b;do b=n[y++],g<b.id.clock+b.length&&findIndexCleanStart(u,n,g),m(b);while(y<n.length&&n[y].id.clock<g)};class Transaction{constructor(n,d,p){this.doc=n,this.deleteSet=new DeleteSet,this.beforeState=getStateVector(n.store),this.afterState=new Map,this.changed=new Map,this.changedParentTypes=new Map,this._mergeStructs=[],this.origin=d,this.meta=new Map,this.local=p,this.subdocsAdded=new Set,this.subdocsRemoved=new Set,this.subdocsLoaded=new Set,this._needFormattingCleanup=!1}}const writeUpdateMessageFromTransaction=(u,n)=>n.deleteSet.clients.size===0&&!any(n.afterState,(d,p)=>n.beforeState.get(p)!==d)?!1:(sortAndMergeDeleteSet(n.deleteSet),writeStructsFromTransaction(u,n),writeDeleteSet(u,n.deleteSet),!0),addChangedTypeToTransaction=(u,n,d)=>{const p=n._item;(p===null||p.id.clock<(u.beforeState.get(p.id.client)||0)&&!p.deleted)&&setIfUndefined(u.changed,n,create$4).add(d)},tryToMergeWithLefts=(u,n)=>{let d=u[n],p=u[n-1],m=n;for(;m>0;d=p,p=u[--m-1]){if(p.deleted===d.deleted&&p.constructor===d.constructor&&p.mergeWith(d)){d instanceof Item&&d.parentSub!==null&&d.parent._map.get(d.parentSub)===d&&d.parent._map.set(d.parentSub,p);continue}break}const g=n-m;return g&&u.splice(n+1-g,g),g},tryGcDeleteSet=(u,n,d)=>{for(const[p,m]of u.clients.entries()){const g=n.clients.get(p);for(let y=m.length-1;y>=0;y--){const b=m[y],S=b.clock+b.len;for(let E=findIndexSS(g,b.clock),T=g[E];E<g.length&&T.id.clock<S;T=g[++E]){const _=g[E];if(b.clock+b.len<=_.id.clock)break;_ instanceof Item&&_.deleted&&!_.keep&&d(_)&&_.gc(n,!1)}}}},tryMergeDeleteSet=(u,n)=>{u.clients.forEach((d,p)=>{const m=n.clients.get(p);for(let g=d.length-1;g>=0;g--){const y=d[g],b=min(m.length-1,1+findIndexSS(m,y.clock+y.len-1));for(let S=b,E=m[S];S>0&&E.id.clock>=y.clock;E=m[S])S-=1+tryToMergeWithLefts(m,S)}})},cleanupTransactions=(u,n)=>{if(n<u.length){const d=u[n],p=d.doc,m=p.store,g=d.deleteSet,y=d._mergeStructs;try{sortAndMergeDeleteSet(g),d.afterState=getStateVector(d.doc.store),p.emit("beforeObserverCalls",[d,p]);const b=[];d.changed.forEach((S,E)=>b.push(()=>{(E._item===null||!E._item.deleted)&&E._callObserver(d,S)})),b.push(()=>{d.changedParentTypes.forEach((S,E)=>{E._dEH.l.length>0&&(E._item===null||!E._item.deleted)&&(S=S.filter(T=>T.target._item===null||!T.target._item.deleted),S.forEach(T=>{T.currentTarget=E,T._path=null}),S.sort((T,_)=>T.path.length-_.path.length),b.push(()=>{callEventHandlerListeners(E._dEH,S,d)}))}),b.push(()=>p.emit("afterTransaction",[d,p])),b.push(()=>{d._needFormattingCleanup&&cleanupYTextAfterTransaction(d)})}),callAll(b,[])}finally{p.gc&&tryGcDeleteSet(g,m,p.gcFilter),tryMergeDeleteSet(g,m),d.afterState.forEach((T,_)=>{const R=d.beforeState.get(_)||0;if(R!==T){const A=m.clients.get(_),C=max(findIndexSS(A,R),1);for(let k=A.length-1;k>=C;)k-=1+tryToMergeWithLefts(A,k)}});for(let T=y.length-1;T>=0;T--){const{client:_,clock:R}=y[T].id,A=m.clients.get(_),C=findIndexSS(A,R);C+1<A.length&&tryToMergeWithLefts(A,C+1)>1||C>0&&tryToMergeWithLefts(A,C)}if(!d.local&&d.afterState.get(p.clientID)!==d.beforeState.get(p.clientID)&&(print(ORANGE,BOLD,"[yjs] ",UNBOLD,RED,"Changed the client-id because another client seems to be using it."),p.clientID=generateNewClientId()),p.emit("afterTransactionCleanup",[d,p]),p._observers.has("update")){const T=new UpdateEncoderV1;writeUpdateMessageFromTransaction(T,d)&&p.emit("update",[T.toUint8Array(),d.origin,p,d])}if(p._observers.has("updateV2")){const T=new UpdateEncoderV2;writeUpdateMessageFromTransaction(T,d)&&p.emit("updateV2",[T.toUint8Array(),d.origin,p,d])}const{subdocsAdded:b,subdocsLoaded:S,subdocsRemoved:E}=d;(b.size>0||E.size>0||S.size>0)&&(b.forEach(T=>{T.clientID=p.clientID,T.collectionid==null&&(T.collectionid=p.collectionid),p.subdocs.add(T)}),E.forEach(T=>p.subdocs.delete(T)),p.emit("subdocs",[{loaded:S,added:b,removed:E},p,d]),E.forEach(T=>T.destroy())),u.length<=n+1?(p._transactionCleanups=[],p.emit("afterAllTransactions",[p,u])):cleanupTransactions(u,n+1)}}},transact=(u,n,d=null,p=!0)=>{const m=u._transactionCleanups;let g=!1,y=null;u._transaction===null&&(g=!0,u._transaction=new Transaction(u,d,p),m.push(u._transaction),m.length===1&&u.emit("beforeAllTransactions",[u]),u.emit("beforeTransaction",[u._transaction,u]));try{y=n(u._transaction)}finally{if(g){const b=u._transaction===m[0];u._transaction=null,b&&cleanupTransactions(m,0)}}return y};class StackItem{constructor(n,d){this.insertions=d,this.deletions=n,this.meta=new Map}}const clearUndoManagerStackItem=(u,n,d)=>{iterateDeletedStructs(u,d.deletions,p=>{p instanceof Item&&n.scope.some(m=>m===u.doc||isParentOf(m,p))&&keepItem(p,!1)})},popStackItem=(u,n,d)=>{let p=null;const m=u.doc,g=u.scope;transact(m,b=>{for(;n.length>0&&u.currStackItem===null;){const S=m.store,E=n.pop(),T=new Set,_=[];let R=!1;iterateDeletedStructs(b,E.insertions,A=>{if(A instanceof Item){if(A.redone!==null){let{item:C,diff:k}=followRedone(S,A.id);k>0&&(C=getItemCleanStart(b,createID(C.id.client,C.id.clock+k))),A=C}!A.deleted&&g.some(C=>C===b.doc||isParentOf(C,A))&&_.push(A)}}),iterateDeletedStructs(b,E.deletions,A=>{A instanceof Item&&g.some(C=>C===b.doc||isParentOf(C,A))&&!isDeleted(E.insertions,A.id)&&T.add(A)}),T.forEach(A=>{R=redoItem(b,A,T,E.insertions,u.ignoreRemoteMapChanges,u)!==null||R});for(let A=_.length-1;A>=0;A--){const C=_[A];u.deleteFilter(C)&&(C.delete(b),R=!0)}u.currStackItem=R?E:null}b.changed.forEach((S,E)=>{S.has(null)&&E._searchMarker&&(E._searchMarker.length=0)}),p=b},u);const y=u.currStackItem;if(y!=null){const b=p.changedParentTypes;u.emit("stack-item-popped",[{stackItem:y,type:d,changedParentTypes:b,origin:u},u]),u.currStackItem=null}return y};class UndoManager extends ObservableV2{constructor(n,{captureTimeout:d=500,captureTransaction:p=S=>!0,deleteFilter:m=()=>!0,trackedOrigins:g=new Set([null]),ignoreRemoteMapChanges:y=!1,doc:b=isArray(n)?n[0].doc:n instanceof Doc?n:n.doc}={}){super(),this.scope=[],this.doc=b,this.addToScope(n),this.deleteFilter=m,g.add(this),this.trackedOrigins=g,this.captureTransaction=p,this.undoStack=[],this.redoStack=[],this.undoing=!1,this.redoing=!1,this.currStackItem=null,this.lastChange=0,this.ignoreRemoteMapChanges=y,this.captureTimeout=d,this.afterTransactionHandler=S=>{if(!this.captureTransaction(S)||!this.scope.some(I=>S.changedParentTypes.has(I)||I===this.doc)||!this.trackedOrigins.has(S.origin)&&(!S.origin||!this.trackedOrigins.has(S.origin.constructor)))return;const E=this.undoing,T=this.redoing,_=E?this.redoStack:this.undoStack;E?this.stopCapturing():T||this.clear(!1,!0);const R=new DeleteSet;S.afterState.forEach((I,P)=>{const D=S.beforeState.get(P)||0,O=I-D;O>0&&addToDeleteSet(R,P,D,O)});const A=getUnixTime();let C=!1;if(this.lastChange>0&&A-this.lastChange<this.captureTimeout&&_.length>0&&!E&&!T){const I=_[_.length-1];I.deletions=mergeDeleteSets([I.deletions,S.deleteSet]),I.insertions=mergeDeleteSets([I.insertions,R])}else _.push(new StackItem(S.deleteSet,R)),C=!0;!E&&!T&&(this.lastChange=A),iterateDeletedStructs(S,S.deleteSet,I=>{I instanceof Item&&this.scope.some(P=>P===S.doc||isParentOf(P,I))&&keepItem(I,!0)});const k=[{stackItem:_[_.length-1],origin:S.origin,type:E?"redo":"undo",changedParentTypes:S.changedParentTypes},this];C?this.emit("stack-item-added",k):this.emit("stack-item-updated",k)},this.doc.on("afterTransaction",this.afterTransactionHandler),this.doc.on("destroy",()=>{this.destroy()})}addToScope(n){const d=new Set(this.scope);n=isArray(n)?n:[n],n.forEach(p=>{d.has(p)||(d.add(p),(p instanceof AbstractType?p.doc!==this.doc:p!==this.doc)&&warn("[yjs#509] Not same Y.Doc"),this.scope.push(p))})}addTrackedOrigin(n){this.trackedOrigins.add(n)}removeTrackedOrigin(n){this.trackedOrigins.delete(n)}clear(n=!0,d=!0){(n&&this.canUndo()||d&&this.canRedo())&&this.doc.transact(p=>{n&&(this.undoStack.forEach(m=>clearUndoManagerStackItem(p,this,m)),this.undoStack=[]),d&&(this.redoStack.forEach(m=>clearUndoManagerStackItem(p,this,m)),this.redoStack=[]),this.emit("stack-cleared",[{undoStackCleared:n,redoStackCleared:d}])})}stopCapturing(){this.lastChange=0}undo(){this.undoing=!0;let n;try{n=popStackItem(this,this.undoStack,"undo")}finally{this.undoing=!1}return n}redo(){this.redoing=!0;let n;try{n=popStackItem(this,this.redoStack,"redo")}finally{this.redoing=!1}return n}canUndo(){return this.undoStack.length>0}canRedo(){return this.redoStack.length>0}destroy(){this.trackedOrigins.delete(this),this.doc.off("afterTransaction",this.afterTransactionHandler),super.destroy()}}function*lazyStructReaderGenerator(u){const n=readVarUint(u.restDecoder);for(let d=0;d<n;d++){const p=readVarUint(u.restDecoder),m=u.readClient();let g=readVarUint(u.restDecoder);for(let y=0;y<p;y++){const b=u.readInfo();if(b===10){const S=readVarUint(u.restDecoder);yield new Skip(createID(m,g),S),g+=S}else if((BITS5&b)!==0){const S=(b&(BIT7|BIT8))===0,E=new Item(createID(m,g),null,(b&BIT8)===BIT8?u.readLeftID():null,null,(b&BIT7)===BIT7?u.readRightID():null,S?u.readParentInfo()?u.readString():u.readLeftID():null,S&&(b&BIT6)===BIT6?u.readString():null,readItemContent(u,b));yield E,g+=E.length}else{const S=u.readLen();yield new GC(createID(m,g),S),g+=S}}}}class LazyStructReader{constructor(n,d){this.gen=lazyStructReaderGenerator(n),this.curr=null,this.done=!1,this.filterSkips=d,this.next()}next(){do this.curr=this.gen.next().value||null;while(this.filterSkips&&this.curr!==null&&this.curr.constructor===Skip);return this.curr}}class LazyStructWriter{constructor(n){this.currClient=0,this.startClock=0,this.written=0,this.encoder=n,this.clientStructs=[]}}const sliceStruct=(u,n)=>{if(u.constructor===GC){const{client:d,clock:p}=u.id;return new GC(createID(d,p+n),u.length-n)}else if(u.constructor===Skip){const{client:d,clock:p}=u.id;return new Skip(createID(d,p+n),u.length-n)}else{const d=u,{client:p,clock:m}=d.id;return new Item(createID(p,m+n),null,createID(p,m+n-1),null,d.rightOrigin,d.parent,d.parentSub,d.content.splice(n))}},mergeUpdatesV2=(u,n=UpdateDecoderV2,d=UpdateEncoderV2)=>{if(u.length===1)return u[0];const p=u.map(T=>new n(createDecoder(T)));let m=p.map(T=>new LazyStructReader(T,!0)),g=null;const y=new d,b=new LazyStructWriter(y);for(;m=m.filter(R=>R.curr!==null),m.sort((R,A)=>{if(R.curr.id.client===A.curr.id.client){const C=R.curr.id.clock-A.curr.id.clock;return C===0?R.curr.constructor===A.curr.constructor?0:R.curr.constructor===Skip?1:-1:C}else return A.curr.id.client-R.curr.id.client}),m.length!==0;){const T=m[0],_=T.curr.id.client;if(g!==null){let R=T.curr,A=!1;for(;R!==null&&R.id.clock+R.length<=g.struct.id.clock+g.struct.length&&R.id.client>=g.struct.id.client;)R=T.next(),A=!0;if(R===null||R.id.client!==_||A&&R.id.clock>g.struct.id.clock+g.struct.length)continue;if(_!==g.struct.id.client)writeStructToLazyStructWriter(b,g.struct,g.offset),g={struct:R,offset:0},T.next();else if(g.struct.id.clock+g.struct.length<R.id.clock)if(g.struct.constructor===Skip)g.struct.length=R.id.clock+R.length-g.struct.id.clock;else{writeStructToLazyStructWriter(b,g.struct,g.offset);const C=R.id.clock-g.struct.id.clock-g.struct.length;g={struct:new Skip(createID(_,g.struct.id.clock+g.struct.length),C),offset:0}}else{const C=g.struct.id.clock+g.struct.length-R.id.clock;C>0&&(g.struct.constructor===Skip?g.struct.length-=C:R=sliceStruct(R,C)),g.struct.mergeWith(R)||(writeStructToLazyStructWriter(b,g.struct,g.offset),g={struct:R,offset:0},T.next())}}else g={struct:T.curr,offset:0},T.next();for(let R=T.curr;R!==null&&R.id.client===_&&R.id.clock===g.struct.id.clock+g.struct.length&&R.constructor!==Skip;R=T.next())writeStructToLazyStructWriter(b,g.struct,g.offset),g={struct:R,offset:0}}g!==null&&(writeStructToLazyStructWriter(b,g.struct,g.offset),g=null),finishLazyStructWriting(b);const S=p.map(T=>readDeleteSet(T)),E=mergeDeleteSets(S);return writeDeleteSet(y,E),y.toUint8Array()},flushLazyStructWriter=u=>{u.written>0&&(u.clientStructs.push({written:u.written,restEncoder:toUint8Array(u.encoder.restEncoder)}),u.encoder.restEncoder=createEncoder(),u.written=0)},writeStructToLazyStructWriter=(u,n,d)=>{u.written>0&&u.currClient!==n.id.client&&flushLazyStructWriter(u),u.written===0&&(u.currClient=n.id.client,u.encoder.writeClient(n.id.client),writeVarUint(u.encoder.restEncoder,n.id.clock+d)),n.write(u.encoder,d),u.written++},finishLazyStructWriting=u=>{flushLazyStructWriter(u);const n=u.encoder.restEncoder;writeVarUint(n,u.clientStructs.length);for(let d=0;d<u.clientStructs.length;d++){const p=u.clientStructs[d];writeVarUint(n,p.written),writeUint8Array(n,p.restEncoder)}},errorComputeChanges="You must not compute changes after the event-handler fired.";class YEvent{constructor(n,d){this.target=n,this.currentTarget=n,this.transaction=d,this._changes=null,this._keys=null,this._delta=null,this._path=null}get path(){return this._path||(this._path=getPathTo(this.currentTarget,this.target))}deletes(n){return isDeleted(this.transaction.deleteSet,n.id)}get keys(){if(this._keys===null){if(this.transaction.doc._transactionCleanups.length===0)throw create$3(errorComputeChanges);const n=new Map,d=this.target;this.transaction.changed.get(d).forEach(m=>{if(m!==null){const g=d._map.get(m);let y,b;if(this.adds(g)){let S=g.left;for(;S!==null&&this.adds(S);)S=S.left;if(this.deletes(g))if(S!==null&&this.deletes(S))y="delete",b=last(S.content.getContent());else return;else S!==null&&this.deletes(S)?(y="update",b=last(S.content.getContent())):(y="add",b=void 0)}else if(this.deletes(g))y="delete",b=last(g.content.getContent());else return;n.set(m,{action:y,oldValue:b})}}),this._keys=n}return this._keys}get delta(){return this.changes.delta}adds(n){return n.id.clock>=(this.transaction.beforeState.get(n.id.client)||0)}get changes(){let n=this._changes;if(n===null){if(this.transaction.doc._transactionCleanups.length===0)throw create$3(errorComputeChanges);const d=this.target,p=create$4(),m=create$4(),g=[];if(n={added:p,deleted:m,delta:g,keys:this.keys},this.transaction.changed.get(d).has(null)){let b=null;const S=()=>{b&&g.push(b)};for(let E=d._start;E!==null;E=E.right)E.deleted?this.deletes(E)&&!this.adds(E)&&((b===null||b.delete===void 0)&&(S(),b={delete:0}),b.delete+=E.length,m.add(E)):this.adds(E)?((b===null||b.insert===void 0)&&(S(),b={insert:[]}),b.insert=b.insert.concat(E.content.getContent()),p.add(E)):((b===null||b.retain===void 0)&&(S(),b={retain:0}),b.retain+=E.length);b!==null&&b.retain===void 0&&S()}this._changes=n}return n}}const getPathTo=(u,n)=>{const d=[];for(;n._item!==null&&n!==u;){if(n._item.parentSub!==null)d.unshift(n._item.parentSub);else{let p=0,m=n._item.parent._start;for(;m!==n._item&&m!==null;)!m.deleted&&m.countable&&(p+=m.length),m=m.right;d.unshift(p)}n=n._item.parent}return d},warnPrematureAccess=()=>{warn("Invalid access: Add Yjs type to a document before reading data.")},maxSearchMarker=80;let globalSearchMarkerTimestamp=0;class ArraySearchMarker{constructor(n,d){n.marker=!0,this.p=n,this.index=d,this.timestamp=globalSearchMarkerTimestamp++}}const refreshMarkerTimestamp=u=>{u.timestamp=globalSearchMarkerTimestamp++},overwriteMarker=(u,n,d)=>{u.p.marker=!1,u.p=n,n.marker=!0,u.index=d,u.timestamp=globalSearchMarkerTimestamp++},markPosition=(u,n,d)=>{if(u.length>=maxSearchMarker){const p=u.reduce((m,g)=>m.timestamp<g.timestamp?m:g);return overwriteMarker(p,n,d),p}else{const p=new ArraySearchMarker(n,d);return u.push(p),p}},findMarker=(u,n)=>{if(u._start===null||n===0||u._searchMarker===null)return null;const d=u._searchMarker.length===0?null:u._searchMarker.reduce((g,y)=>abs(n-g.index)<abs(n-y.index)?g:y);let p=u._start,m=0;for(d!==null&&(p=d.p,m=d.index,refreshMarkerTimestamp(d));p.right!==null&&m<n;){if(!p.deleted&&p.countable){if(n<m+p.length)break;m+=p.length}p=p.right}for(;p.left!==null&&m>n;)p=p.left,!p.deleted&&p.countable&&(m-=p.length);for(;p.left!==null&&p.left.id.client===p.id.client&&p.left.id.clock+p.left.length===p.id.clock;)p=p.left,!p.deleted&&p.countable&&(m-=p.length);return d!==null&&abs(d.index-m)<p.parent.length/maxSearchMarker?(overwriteMarker(d,p,m),d):markPosition(u._searchMarker,p,m)},updateMarkerChanges=(u,n,d)=>{for(let p=u.length-1;p>=0;p--){const m=u[p];if(d>0){let g=m.p;for(g.marker=!1;g&&(g.deleted||!g.countable);)g=g.left,g&&!g.deleted&&g.countable&&(m.index-=g.length);if(g===null||g.marker===!0){u.splice(p,1);continue}m.p=g,g.marker=!0}(n<m.index||d>0&&n===m.index)&&(m.index=max(n,m.index+d))}},callTypeObservers=(u,n,d)=>{const p=u,m=n.changedParentTypes;for(;setIfUndefined(m,u,()=>[]).push(d),u._item!==null;)u=u._item.parent;callEventHandlerListeners(p._eH,d,n)};class AbstractType{constructor(){this._item=null,this._map=new Map,this._start=null,this.doc=null,this._length=0,this._eH=createEventHandler(),this._dEH=createEventHandler(),this._searchMarker=null}get parent(){return this._item?this._item.parent:null}_integrate(n,d){this.doc=n,this._item=d}_copy(){throw methodUnimplemented()}clone(){throw methodUnimplemented()}_write(n){}get _first(){let n=this._start;for(;n!==null&&n.deleted;)n=n.right;return n}_callObserver(n,d){!n.local&&this._searchMarker&&(this._searchMarker.length=0)}observe(n){addEventHandlerListener(this._eH,n)}observeDeep(n){addEventHandlerListener(this._dEH,n)}unobserve(n){removeEventHandlerListener(this._eH,n)}unobserveDeep(n){removeEventHandlerListener(this._dEH,n)}toJSON(){}}const typeListSlice=(u,n,d)=>{u.doc??warnPrematureAccess(),n<0&&(n=u._length+n),d<0&&(d=u._length+d);let p=d-n;const m=[];let g=u._start;for(;g!==null&&p>0;){if(g.countable&&!g.deleted){const y=g.content.getContent();if(y.length<=n)n-=y.length;else{for(let b=n;b<y.length&&p>0;b++)m.push(y[b]),p--;n=0}}g=g.right}return m},typeListToArray=u=>{u.doc??warnPrematureAccess();const n=[];let d=u._start;for(;d!==null;){if(d.countable&&!d.deleted){const p=d.content.getContent();for(let m=0;m<p.length;m++)n.push(p[m])}d=d.right}return n},typeListToArraySnapshot=(u,n)=>{const d=[];let p=u._start;for(;p!==null;){if(p.countable&&isVisible$1(p,n)){const m=p.content.getContent();for(let g=0;g<m.length;g++)d.push(m[g])}p=p.right}return d},typeListForEach=(u,n)=>{let d=0,p=u._start;for(u.doc??warnPrematureAccess();p!==null;){if(p.countable&&!p.deleted){const m=p.content.getContent();for(let g=0;g<m.length;g++)n(m[g],d++,u)}p=p.right}},typeListMap=(u,n)=>{const d=[];return typeListForEach(u,(p,m)=>{d.push(n(p,m,u))}),d},typeListCreateIterator=u=>{let n=u._start,d=null,p=0;return{[Symbol.iterator](){return this},next:()=>{if(d===null){for(;n!==null&&n.deleted;)n=n.right;if(n===null)return{done:!0,value:void 0};d=n.content.getContent(),p=0,n=n.right}const m=d[p++];return d.length<=p&&(d=null),{done:!1,value:m}}}},typeListGet=(u,n)=>{u.doc??warnPrematureAccess();const d=findMarker(u,n);let p=u._start;for(d!==null&&(p=d.p,n-=d.index);p!==null;p=p.right)if(!p.deleted&&p.countable){if(n<p.length)return p.content.getContent()[n];n-=p.length}},typeListInsertGenericsAfter=(u,n,d,p)=>{let m=d;const g=u.doc,y=g.clientID,b=g.store,S=d===null?n._start:d.right;let E=[];const T=()=>{E.length>0&&(m=new Item(createID(y,getState(b,y)),m,m&&m.lastId,S,S&&S.id,n,null,new ContentAny(E)),m.integrate(u,0),E=[])};p.forEach(_=>{if(_===null)E.push(_);else switch(_.constructor){case Number:case Object:case Boolean:case Array:case String:E.push(_);break;default:switch(T(),_.constructor){case Uint8Array:case ArrayBuffer:m=new Item(createID(y,getState(b,y)),m,m&&m.lastId,S,S&&S.id,n,null,new ContentBinary(new Uint8Array(_))),m.integrate(u,0);break;case Doc:m=new Item(createID(y,getState(b,y)),m,m&&m.lastId,S,S&&S.id,n,null,new ContentDoc(_)),m.integrate(u,0);break;default:if(_ instanceof AbstractType)m=new Item(createID(y,getState(b,y)),m,m&&m.lastId,S,S&&S.id,n,null,new ContentType(_)),m.integrate(u,0);else throw new Error("Unexpected content type in insert operation")}}}),T()},lengthExceeded=()=>create$3("Length exceeded!"),typeListInsertGenerics=(u,n,d,p)=>{if(d>n._length)throw lengthExceeded();if(d===0)return n._searchMarker&&updateMarkerChanges(n._searchMarker,d,p.length),typeListInsertGenericsAfter(u,n,null,p);const m=d,g=findMarker(n,d);let y=n._start;for(g!==null&&(y=g.p,d-=g.index,d===0&&(y=y.prev,d+=y&&y.countable&&!y.deleted?y.length:0));y!==null;y=y.right)if(!y.deleted&&y.countable){if(d<=y.length){d<y.length&&getItemCleanStart(u,createID(y.id.client,y.id.clock+d));break}d-=y.length}return n._searchMarker&&updateMarkerChanges(n._searchMarker,m,p.length),typeListInsertGenericsAfter(u,n,y,p)},typeListPushGenerics=(u,n,d)=>{let m=(n._searchMarker||[]).reduce((g,y)=>y.index>g.index?y:g,{index:0,p:n._start}).p;if(m)for(;m.right;)m=m.right;return typeListInsertGenericsAfter(u,n,m,d)},typeListDelete=(u,n,d,p)=>{if(p===0)return;const m=d,g=p,y=findMarker(n,d);let b=n._start;for(y!==null&&(b=y.p,d-=y.index);b!==null&&d>0;b=b.right)!b.deleted&&b.countable&&(d<b.length&&getItemCleanStart(u,createID(b.id.client,b.id.clock+d)),d-=b.length);for(;p>0&&b!==null;)b.deleted||(p<b.length&&getItemCleanStart(u,createID(b.id.client,b.id.clock+p)),b.delete(u),p-=b.length),b=b.right;if(p>0)throw lengthExceeded();n._searchMarker&&updateMarkerChanges(n._searchMarker,m,-g+p)},typeMapDelete=(u,n,d)=>{const p=n._map.get(d);p!==void 0&&p.delete(u)},typeMapSet=(u,n,d,p)=>{const m=n._map.get(d)||null,g=u.doc,y=g.clientID;let b;if(p==null)b=new ContentAny([p]);else switch(p.constructor){case Number:case Object:case Boolean:case Array:case String:case Date:case BigInt:b=new ContentAny([p]);break;case Uint8Array:b=new ContentBinary(p);break;case Doc:b=new ContentDoc(p);break;default:if(p instanceof AbstractType)b=new ContentType(p);else throw new Error("Unexpected content type")}new Item(createID(y,getState(g.store,y)),m,m&&m.lastId,null,null,n,d,b).integrate(u,0)},typeMapGet=(u,n)=>{u.doc??warnPrematureAccess();const d=u._map.get(n);return d!==void 0&&!d.deleted?d.content.getContent()[d.length-1]:void 0},typeMapGetAll=u=>{const n={};return u.doc??warnPrematureAccess(),u._map.forEach((d,p)=>{d.deleted||(n[p]=d.content.getContent()[d.length-1])}),n},typeMapHas=(u,n)=>{u.doc??warnPrematureAccess();const d=u._map.get(n);return d!==void 0&&!d.deleted},typeMapGetAllSnapshot=(u,n)=>{const d={};return u._map.forEach((p,m)=>{let g=p;for(;g!==null&&(!n.sv.has(g.id.client)||g.id.clock>=(n.sv.get(g.id.client)||0));)g=g.left;g!==null&&isVisible$1(g,n)&&(d[m]=g.content.getContent()[g.length-1])}),d},createMapIterator=u=>(u.doc??warnPrematureAccess(),iteratorFilter(u._map.entries(),n=>!n[1].deleted));class YArrayEvent extends YEvent{}class YArray extends AbstractType{constructor(){super(),this._prelimContent=[],this._searchMarker=[]}static from(n){const d=new YArray;return d.push(n),d}_integrate(n,d){super._integrate(n,d),this.insert(0,this._prelimContent),this._prelimContent=null}_copy(){return new YArray}clone(){const n=new YArray;return n.insert(0,this.toArray().map(d=>d instanceof AbstractType?d.clone():d)),n}get length(){return this.doc??warnPrematureAccess(),this._length}_callObserver(n,d){super._callObserver(n,d),callTypeObservers(this,n,new YArrayEvent(this,n))}insert(n,d){this.doc!==null?transact(this.doc,p=>{typeListInsertGenerics(p,this,n,d)}):this._prelimContent.splice(n,0,...d)}push(n){this.doc!==null?transact(this.doc,d=>{typeListPushGenerics(d,this,n)}):this._prelimContent.push(...n)}unshift(n){this.insert(0,n)}delete(n,d=1){this.doc!==null?transact(this.doc,p=>{typeListDelete(p,this,n,d)}):this._prelimContent.splice(n,d)}get(n){return typeListGet(this,n)}toArray(){return typeListToArray(this)}slice(n=0,d=this.length){return typeListSlice(this,n,d)}toJSON(){return this.map(n=>n instanceof AbstractType?n.toJSON():n)}map(n){return typeListMap(this,n)}forEach(n){typeListForEach(this,n)}[Symbol.iterator](){return typeListCreateIterator(this)}_write(n){n.writeTypeRef(YArrayRefID)}}const readYArray=u=>new YArray;class YMapEvent extends YEvent{constructor(n,d,p){super(n,d),this.keysChanged=p}}class YMap extends AbstractType{constructor(n){super(),this._prelimContent=null,n===void 0?this._prelimContent=new Map:this._prelimContent=new Map(n)}_integrate(n,d){super._integrate(n,d),this._prelimContent.forEach((p,m)=>{this.set(m,p)}),this._prelimContent=null}_copy(){return new YMap}clone(){const n=new YMap;return this.forEach((d,p)=>{n.set(p,d instanceof AbstractType?d.clone():d)}),n}_callObserver(n,d){callTypeObservers(this,n,new YMapEvent(this,n,d))}toJSON(){this.doc??warnPrematureAccess();const n={};return this._map.forEach((d,p)=>{if(!d.deleted){const m=d.content.getContent()[d.length-1];n[p]=m instanceof AbstractType?m.toJSON():m}}),n}get size(){return[...createMapIterator(this)].length}keys(){return iteratorMap(createMapIterator(this),n=>n[0])}values(){return iteratorMap(createMapIterator(this),n=>n[1].content.getContent()[n[1].length-1])}entries(){return iteratorMap(createMapIterator(this),n=>[n[0],n[1].content.getContent()[n[1].length-1]])}forEach(n){this.doc??warnPrematureAccess(),this._map.forEach((d,p)=>{d.deleted||n(d.content.getContent()[d.length-1],p,this)})}[Symbol.iterator](){return this.entries()}delete(n){this.doc!==null?transact(this.doc,d=>{typeMapDelete(d,this,n)}):this._prelimContent.delete(n)}set(n,d){return this.doc!==null?transact(this.doc,p=>{typeMapSet(p,this,n,d)}):this._prelimContent.set(n,d),d}get(n){return typeMapGet(this,n)}has(n){return typeMapHas(this,n)}clear(){this.doc!==null?transact(this.doc,n=>{this.forEach(function(d,p,m){typeMapDelete(n,m,p)})}):this._prelimContent.clear()}_write(n){n.writeTypeRef(YMapRefID)}}const readYMap=u=>new YMap,equalAttrs$1=(u,n)=>u===n||typeof u=="object"&&typeof n=="object"&&u&&n&&equalFlat(u,n);class ItemTextListPosition{constructor(n,d,p,m){this.left=n,this.right=d,this.index=p,this.currentAttributes=m}forward(){this.right===null&&unexpectedCase(),this.right.content.constructor===ContentFormat?this.right.deleted||updateCurrentAttributes(this.currentAttributes,this.right.content):this.right.deleted||(this.index+=this.right.length),this.left=this.right,this.right=this.right.right}}const findNextPosition=(u,n,d)=>{for(;n.right!==null&&d>0;)n.right.content.constructor===ContentFormat?n.right.deleted||updateCurrentAttributes(n.currentAttributes,n.right.content):n.right.deleted||(d<n.right.length&&getItemCleanStart(u,createID(n.right.id.client,n.right.id.clock+d)),n.index+=n.right.length,d-=n.right.length),n.left=n.right,n.right=n.right.right;return n},findPosition=(u,n,d,p)=>{const m=new Map,g=p?findMarker(n,d):null;if(g){const y=new ItemTextListPosition(g.p.left,g.p,g.index,m);return findNextPosition(u,y,d-g.index)}else{const y=new ItemTextListPosition(null,n._start,0,m);return findNextPosition(u,y,d)}},insertNegatedAttributes=(u,n,d,p)=>{for(;d.right!==null&&(d.right.deleted===!0||d.right.content.constructor===ContentFormat&&equalAttrs$1(p.get(d.right.content.key),d.right.content.value));)d.right.deleted||p.delete(d.right.content.key),d.forward();const m=u.doc,g=m.clientID;p.forEach((y,b)=>{const S=d.left,E=d.right,T=new Item(createID(g,getState(m.store,g)),S,S&&S.lastId,E,E&&E.id,n,null,new ContentFormat(b,y));T.integrate(u,0),d.right=T,d.forward()})},updateCurrentAttributes=(u,n)=>{const{key:d,value:p}=n;p===null?u.delete(d):u.set(d,p)},minimizeAttributeChanges=(u,n)=>{for(;u.right!==null;){if(!(u.right.deleted||u.right.content.constructor===ContentFormat&&equalAttrs$1(n[u.right.content.key]??null,u.right.content.value)))break;u.forward()}},insertAttributes=(u,n,d,p)=>{const m=u.doc,g=m.clientID,y=new Map;for(const b in p){const S=p[b],E=d.currentAttributes.get(b)??null;if(!equalAttrs$1(E,S)){y.set(b,E);const{left:T,right:_}=d;d.right=new Item(createID(g,getState(m.store,g)),T,T&&T.lastId,_,_&&_.id,n,null,new ContentFormat(b,S)),d.right.integrate(u,0),d.forward()}}return y},insertText=(u,n,d,p,m)=>{d.currentAttributes.forEach((R,A)=>{m[A]===void 0&&(m[A]=null)});const g=u.doc,y=g.clientID;minimizeAttributeChanges(d,m);const b=insertAttributes(u,n,d,m),S=p.constructor===String?new ContentString(p):p instanceof AbstractType?new ContentType(p):new ContentEmbed(p);let{left:E,right:T,index:_}=d;n._searchMarker&&updateMarkerChanges(n._searchMarker,d.index,S.getLength()),T=new Item(createID(y,getState(g.store,y)),E,E&&E.lastId,T,T&&T.id,n,null,S),T.integrate(u,0),d.right=T,d.index=_,d.forward(),insertNegatedAttributes(u,n,d,b)},formatText=(u,n,d,p,m)=>{const g=u.doc,y=g.clientID;minimizeAttributeChanges(d,m);const b=insertAttributes(u,n,d,m);e:for(;d.right!==null&&(p>0||b.size>0&&(d.right.deleted||d.right.content.constructor===ContentFormat));){if(!d.right.deleted)switch(d.right.content.constructor){case ContentFormat:{const{key:S,value:E}=d.right.content,T=m[S];if(T!==void 0){if(equalAttrs$1(T,E))b.delete(S);else{if(p===0)break e;b.set(S,E)}d.right.delete(u)}else d.currentAttributes.set(S,E);break}default:p<d.right.length&&getItemCleanStart(u,createID(d.right.id.client,d.right.id.clock+p)),p-=d.right.length;break}d.forward()}if(p>0){let S="";for(;p>0;p--)S+=`
|
|
253
253
|
`;d.right=new Item(createID(y,getState(g.store,y)),d.left,d.left&&d.left.lastId,d.right,d.right&&d.right.id,n,null,new ContentString(S)),d.right.integrate(u,0),d.forward()}insertNegatedAttributes(u,n,d,b)},cleanupFormattingGap=(u,n,d,p,m)=>{let g=n;const y=create$5();for(;g&&(!g.countable||g.deleted);){if(!g.deleted&&g.content.constructor===ContentFormat){const E=g.content;y.set(E.key,E)}g=g.right}let b=0,S=!1;for(;n!==g;){if(d===n&&(S=!0),!n.deleted){const E=n.content;if(E.constructor===ContentFormat){const{key:T,value:_}=E,R=p.get(T)??null;(y.get(T)!==E||R===_)&&(n.delete(u),b++,!S&&(m.get(T)??null)===_&&R!==_&&(R===null?m.delete(T):m.set(T,R))),!S&&!n.deleted&&updateCurrentAttributes(m,E)}}n=n.right}return b},cleanupContextlessFormattingGap=(u,n)=>{for(;n&&n.right&&(n.right.deleted||!n.right.countable);)n=n.right;const d=new Set;for(;n&&(n.deleted||!n.countable);){if(!n.deleted&&n.content.constructor===ContentFormat){const p=n.content.key;d.has(p)?n.delete(u):d.add(p)}n=n.left}},cleanupYTextFormatting=u=>{let n=0;return transact(u.doc,d=>{let p=u._start,m=u._start,g=create$5();const y=copy(g);for(;m;)m.deleted===!1&&(m.content.constructor===ContentFormat?updateCurrentAttributes(y,m.content):(n+=cleanupFormattingGap(d,p,m,g,y),g=copy(y),p=m)),m=m.right}),n},cleanupYTextAfterTransaction=u=>{const n=new Set,d=u.doc;for(const[p,m]of u.afterState.entries()){const g=u.beforeState.get(p)||0;m!==g&&iterateStructs(u,d.store.clients.get(p),g,m,y=>{!y.deleted&&y.content.constructor===ContentFormat&&y.constructor!==GC&&n.add(y.parent)})}transact(d,p=>{iterateDeletedStructs(u,u.deleteSet,m=>{if(m instanceof GC||!m.parent._hasFormatting||n.has(m.parent))return;const g=m.parent;m.content.constructor===ContentFormat?n.add(g):cleanupContextlessFormattingGap(p,m)});for(const m of n)cleanupYTextFormatting(m)})},deleteText=(u,n,d)=>{const p=d,m=copy(n.currentAttributes),g=n.right;for(;d>0&&n.right!==null;){if(n.right.deleted===!1)switch(n.right.content.constructor){case ContentType:case ContentEmbed:case ContentString:d<n.right.length&&getItemCleanStart(u,createID(n.right.id.client,n.right.id.clock+d)),d-=n.right.length,n.right.delete(u);break}n.forward()}g&&cleanupFormattingGap(u,g,n.right,m,n.currentAttributes);const y=(n.left||n.right).parent;return y._searchMarker&&updateMarkerChanges(y._searchMarker,n.index,-p+d),n};class YTextEvent extends YEvent{constructor(n,d,p){super(n,d),this.childListChanged=!1,this.keysChanged=new Set,p.forEach(m=>{m===null?this.childListChanged=!0:this.keysChanged.add(m)})}get changes(){if(this._changes===null){const n={keys:this.keys,delta:this.delta,added:new Set,deleted:new Set};this._changes=n}return this._changes}get delta(){if(this._delta===null){const n=this.target.doc,d=[];transact(n,p=>{const m=new Map,g=new Map;let y=this.target._start,b=null;const S={};let E="",T=0,_=0;const R=()=>{if(b!==null){let A=null;switch(b){case"delete":_>0&&(A={delete:_}),_=0;break;case"insert":(typeof E=="object"||E.length>0)&&(A={insert:E},m.size>0&&(A.attributes={},m.forEach((C,k)=>{C!==null&&(A.attributes[k]=C)}))),E="";break;case"retain":T>0&&(A={retain:T},isEmpty(S)||(A.attributes=assign({},S))),T=0;break}A&&d.push(A),b=null}};for(;y!==null;){switch(y.content.constructor){case ContentType:case ContentEmbed:this.adds(y)?this.deletes(y)||(R(),b="insert",E=y.content.getContent()[0],R()):this.deletes(y)?(b!=="delete"&&(R(),b="delete"),_+=1):y.deleted||(b!=="retain"&&(R(),b="retain"),T+=1);break;case ContentString:this.adds(y)?this.deletes(y)||(b!=="insert"&&(R(),b="insert"),E+=y.content.str):this.deletes(y)?(b!=="delete"&&(R(),b="delete"),_+=y.length):y.deleted||(b!=="retain"&&(R(),b="retain"),T+=y.length);break;case ContentFormat:{const{key:A,value:C}=y.content;if(this.adds(y)){if(!this.deletes(y)){const k=m.get(A)??null;equalAttrs$1(k,C)?C!==null&&y.delete(p):(b==="retain"&&R(),equalAttrs$1(C,g.get(A)??null)?delete S[A]:S[A]=C)}}else if(this.deletes(y)){g.set(A,C);const k=m.get(A)??null;equalAttrs$1(k,C)||(b==="retain"&&R(),S[A]=k)}else if(!y.deleted){g.set(A,C);const k=S[A];k!==void 0&&(equalAttrs$1(k,C)?k!==null&&y.delete(p):(b==="retain"&&R(),C===null?delete S[A]:S[A]=C))}y.deleted||(b==="insert"&&R(),updateCurrentAttributes(m,y.content));break}}y=y.right}for(R();d.length>0;){const A=d[d.length-1];if(A.retain!==void 0&&A.attributes===void 0)d.pop();else break}}),this._delta=d}return this._delta}}class YText extends AbstractType{constructor(n){super(),this._pending=n!==void 0?[()=>this.insert(0,n)]:[],this._searchMarker=[],this._hasFormatting=!1}get length(){return this.doc??warnPrematureAccess(),this._length}_integrate(n,d){super._integrate(n,d);try{this._pending.forEach(p=>p())}catch{}this._pending=null}_copy(){return new YText}clone(){const n=new YText;return n.applyDelta(this.toDelta()),n}_callObserver(n,d){super._callObserver(n,d);const p=new YTextEvent(this,n,d);callTypeObservers(this,n,p),!n.local&&this._hasFormatting&&(n._needFormattingCleanup=!0)}toString(){this.doc??warnPrematureAccess();let n="",d=this._start;for(;d!==null;)!d.deleted&&d.countable&&d.content.constructor===ContentString&&(n+=d.content.str),d=d.right;return n}toJSON(){return this.toString()}applyDelta(n,{sanitize:d=!0}={}){this.doc!==null?transact(this.doc,p=>{const m=new ItemTextListPosition(null,this._start,0,new Map);for(let g=0;g<n.length;g++){const y=n[g];if(y.insert!==void 0){const b=!d&&typeof y.insert=="string"&&g===n.length-1&&m.right===null&&y.insert.slice(-1)===`
|