mr-chat-bird 1.0.19 → 1.0.21
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.css +1 -1
- package/dist/index.d.mts +5 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.js +13 -13
- package/dist/index.mjs +13 -13
- package/package.json +1 -1
package/dist/index.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.mrchat-richTextEditorContainer{position:relative;border-radius:16px}.mrchat-richTextEditorContainer .mantine-RichTextEditor-toolbar{border:none;background-color:transparent;padding:0;margin-bottom:4px;margin-left:3px;gap:.5rem}.mrchat-richTextEditorContainer .emoji-big{font-size:18px;line-height:1;vertical-align:middle;display:inline-block}.mrchat-richTextEditorContainer .mantine-RichTextEditor-Typography{font-size:15px}.mrchat-richTextEditorContainer .mantine-RichTextEditor-Typography,.mrchat-richTextEditorContainer .mantine-RichTextEditor-content{border-radius:16px;min-height:41px;max-height:200px;overflow:scroll}.mrchat-richTextEditorContainer .ProseMirror{padding:12px 16px 4px;overflow-wrap:anywhere;word-break:break-word}.mrchat-mainActionContainer{height:24px;margin-bottom:4px}.mrchat-mainActionAddIcon{margin-left:3px}.mrchat-mainActionEmojiIcon{margin:0 4px 0 3px}.mrchat-mainActionEmojiIcon svg{padding:2px;color:var(--mantine-color-text)}.mrchat-mainActionAddIcon svg{color:var(--mantine-color-text)}.mrchat-mainTextFormatIcon svg{position:relative;top:1.2px;padding:.7px;color:var(--mantine-color-text)}.mrchat-mainSendMsgIcon{position:absolute;right:6px}.mrchat-sm-mainSendMsgIcon{display:none;position:absolute;right:4px;bottom:1.5px}.mrchat-customToolActionItem{background-color:var(--mantine-color-body);border-color:var(--mantine-color-default-border);color:var(--mantine-color-text);border-radius:0;height:26px;min-height:26px;border-right:none}.mrchat-mainAddLabels{font-size:15px}.mrchat-mainAddLabels svg{width:19px;height:19px}@media(max-width:950px){.mrchat-secondRichTextEditorToolBar{display:none}}@media(max-width:475px){.mrchat-mainActionContainer{display:none}.mrchat-richTextEditorContainer .mantine-RichTextEditor-Typography,.mrchat-richTextEditorContainer .mantine-RichTextEditor-content{min-height:30px;border-radius:12px}.mrchat-richTextEditorContainer{border-radius:12px}.mrchat-richTextEditorContainer .ProseMirror{padding:8px 12px 4px}.mrchat-sm-mainSendMsgIcon{display:block}}:where([data-mantine-color-scheme=dark]) .mantine-RichTextEditor-control{background-color:var(--mantine-color-body)}.mrchat-overlay{position:absolute;inset:0;background:#0000004d;z-index:50}.mrchat-drawer{position:absolute;top:0;right:0;width:100%;max-width:400px;height:100%;background:var(--mantine-color-body);color:var(--mantine-color-text);display:flex;flex-direction:column}.mrchat-open{animation:slideIn .25s ease forwards}.mrchat-close{animation:slideOut .25s ease forwards}@keyframes slideIn{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes slideOut{0%{transform:translate(0)}to{transform:translate(100%)}}.mrchat-header{height:60px;display:flex;align-items:center;gap:15px;padding:0 16px;border-bottom:1px solid var(--mantine-color-default-border)}.mrchat-backBtn{cursor:pointer;display:flex;align-items:center;color:var(--mantine-color-text)}.mrchat-profileSection{padding:30px 20px;border-bottom:1px solid var(--mantine-color-default-border);display:flex;flex-direction:column;align-items:center;text-align:center}.mrchat-actions{padding:10px}.mrchat-item{display:flex;align-items:center;gap:12px;padding:14px;border-radius:10px;cursor:pointer;color:var(--mantine-color-text)}.mrchat-item:hover{background:var(--mantine-color-default-hover)}.mrchat-itemDanger{color:var(--mantine-color-red-filled)}.mrchat-itemDanger:hover{background-color:color-mix(in srgb,var(--mantine-color-red-filled) 12%,transparent)}.mrchat-imagePreview{position:fixed;inset:0;background:#000;z-index:100;display:flex;justify-content:center;align-items:center}.mrchat-imagePreview img{max-width:90%;max-height:90%;border-radius:12px}.mrchat-chatWrapper{display:flex;flex-direction:column;align-items:center;min-height:500px;height:100%;flex:1;background-color:var(--mantine-color-body);color:var(--mantine-color-text)}.mrchat-chatContainer{display:flex;width:100%;max-width:1260px;min-height:500px;height:100%;flex:1;overflow:hidden;border-radius:8px;background-color:var(--mantine-color-body);border:1px solid color-mix(in srgb,var(--mantine-color-text) 12%,transparent)}.mrchat-sidebar{width:280px;display:flex;flex-direction:column;min-height:0;height:100%;flex-shrink:0;border-right:1px solid color-mix(in srgb,var(--mantine-color-text) 12%,transparent);padding-top:12px;background-color:var(--mantine-color-body)}.mrchat-sidebarTop{padding:0 12px}.mrchat-topBar{display:flex;justify-content:space-between;align-items:center}.mrchat-topActions{display:flex;align-items:center;gap:10px}.mrchat-scrollWrapper{flex:1;min-height:0;height:100%;overflow-y:auto}.mrchat-mainAreaWrapper{flex:1;display:flex;min-height:0}.mrchat-hiddenOnMobile{display:none!important}.mrchat-scrollArea{flex:1;min-height:0;overflow-y:auto}.mrchat-scrollArea .mantine-ScrollArea-content{padding-bottom:60px}.mrchat-avatar{width:34px;height:34px;border-radius:50%;object-fit:cover}.mrchat-mainArea{flex:1;display:flex;flex-direction:column;min-height:0}.mrchat-messageArea{flex:1;padding:16px 16px 10px;overflow-y:auto;min-height:0}.mrchat-messageBubble{max-width:fit-content;padding:8px 45px 8px 16px;margin-bottom:8px;position:relative}.mrchat-outgoing{color:var(--mantine-color-white);background-color:var(--mantine-primary-color-filled);margin-left:auto}.mrchat-incoming{background-color:var(--mantine-color-default-hover);color:var(--mantine-color-text);margin-right:auto}.mrchat-inputBar{display:flex;align-items:end;gap:8px;padding:0 12px 12px}@media(max-width:599px){.mrchat-chatContainer{flex-direction:column;min-height:100%}.mrchat-sidebar{width:100%;height:100%;border-right:none;border-bottom:1px solid color-mix(in srgb,var(--mantine-color-text) 12%,transparent);border-radius:0}.mrchat-chatItem{margin:2px 0}.mrchat-messageArea{padding:12px}.mrchat-mainArea{min-height:calc(100vh - 74px)}}.mrchat-chatItem{display:flex;align-items:center;gap:6px;padding:8px 12px;cursor:pointer;transition:background .2s;margin:2px 4px;border-radius:6px;color:var(--mantine-color-text)}.mrchat-chatItem:hover{background-color:var(--mantine-color-default-hover)}.mrchat-chatLabelItem{font-size:15px}.mrchat-chatHeader{display:flex;justify-content:flex-start;align-items:center;padding:12px 16px;border-bottom:1px solid color-mix(in srgb,var(--mantine-color-text) 12%,transparent);position:sticky;top:0;z-index:2;min-height:63px;gap:10px}.mrchat-backButton{padding:4px}.mrchat-receiverInfo{display:flex;align-items:center;gap:12px;cursor:pointer}.mrchat-emptyState{height:100%;display:flex;align-items:center;justify-content:center}.mrchat-encryptionMinimal{display:flex;align-items:center;gap:6px;padding:6px 10px;border-radius:12px;background:var(--mantine-color-default-hover);color:var(--mantine-color-dimmed);font-size:12px}.mrchat-encryptionText{font-size:16px;margin-left:3px}.mrchat-messageContent{max-width:370px;word-wrap:break-word;font-size:14px}.mrchat-messagePreviewContent p,.mrchat-messageContent p{margin:0;padding:0}.mrchat-activeChatItem,.mrchat-chatItem:hover{background-color:var(--mantine-color-default-hover)}.mrchat-messageTime{font-size:11px;opacity:.6;text-align:right;margin-top:4px;position:absolute;bottom:4px;right:8px;z-index:1}.mrchat-dateSeparator{text-align:center;font-size:13px;margin:12px 0;color:#888}.mrchat-chatInfo{width:100%;position:relative}.mrchat-messagePreview{display:flex;justify-content:space-between;align-items:end;margin-top:1px}.mrchat-messagePreviewTime{position:relative;top:1px;right:0}.mrchat-unreadBadge{background:var(--mantine-primary-color-filled);color:var(--mantine-color-white);font-size:10px;border-radius:50%;padding:3px 5px;min-width:18px;text-align:center;position:absolute;top:1px;right:0}.mrchat-messagePreviewContent{font-size:14px}
|
|
1
|
+
.mrchat-richTextEditorContainer{position:relative;border-radius:16px}.mrchat-richTextEditorContainer .mantine-RichTextEditor-toolbar{border:none;background-color:transparent;padding:0;margin-bottom:4px;margin-left:3px;gap:.5rem}.mrchat-richTextEditorContainer .emoji-big{font-size:18px;line-height:1;vertical-align:middle;display:inline-block}.mrchat-richTextEditorContainer .mantine-RichTextEditor-Typography{font-size:15px}.mrchat-richTextEditorContainer .mantine-RichTextEditor-Typography,.mrchat-richTextEditorContainer .mantine-RichTextEditor-content{border-radius:16px;min-height:41px;max-height:200px;overflow:scroll}.mrchat-richTextEditorContainer .ProseMirror{padding:12px 16px 4px;overflow-wrap:anywhere;word-break:break-word}.mrchat-mainActionContainer{height:24px;margin-bottom:4px}.mrchat-mainActionAddIcon{margin-left:3px}.mrchat-mainActionEmojiIcon{margin:0 4px 0 3px}.mrchat-mainActionEmojiIcon svg{padding:2px;color:var(--mantine-color-text)}.mrchat-mainActionAddIcon svg{color:var(--mantine-color-text)}.mrchat-mainTextFormatIcon svg{position:relative;top:1.2px;padding:.7px;color:var(--mantine-color-text)}.mrchat-mainSendMsgIcon{position:absolute;right:6px}.mrchat-sm-mainSendMsgIcon{display:none;position:absolute;right:4px;bottom:1.5px}.mrchat-customToolActionItem{background-color:var(--mantine-color-body);border-color:var(--mantine-color-default-border);color:var(--mantine-color-text);border-radius:0;height:26px;min-height:26px;border-right:none}.mrchat-mainAddLabels{font-size:15px}.mrchat-mainAddLabels svg{width:19px;height:19px}@media(max-width:950px){.mrchat-secondRichTextEditorToolBar{display:none}}@media(max-width:475px){.mrchat-mainActionContainer{display:none}.mrchat-richTextEditorContainer .mantine-RichTextEditor-Typography,.mrchat-richTextEditorContainer .mantine-RichTextEditor-content{min-height:30px;border-radius:12px}.mrchat-richTextEditorContainer{border-radius:12px}.mrchat-richTextEditorContainer .ProseMirror{padding:8px 12px 4px}.mrchat-sm-mainSendMsgIcon{display:block}}:where([data-mantine-color-scheme=dark]) .mantine-RichTextEditor-control{background-color:var(--mantine-color-body)}.mrchat-overlay{position:absolute;inset:0;background:#0000004d;z-index:50}.mrchat-drawer{position:absolute;top:0;right:0;width:100%;max-width:400px;height:100%;background:var(--mantine-color-body);color:var(--mantine-color-text);display:flex;flex-direction:column}.mrchat-open{animation:slideIn .25s ease forwards}.mrchat-close{animation:slideOut .25s ease forwards}@keyframes slideIn{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes slideOut{0%{transform:translate(0)}to{transform:translate(100%)}}.mrchat-header{height:60px;display:flex;align-items:center;gap:15px;padding:0 16px;border-bottom:1px solid var(--mantine-color-default-border)}.mrchat-backBtn{cursor:pointer;display:flex;align-items:center;color:var(--mantine-color-text)}.mrchat-profileSection{padding:30px 20px;border-bottom:1px solid var(--mantine-color-default-border);display:flex;flex-direction:column;align-items:center;text-align:center}.mrchat-actions{padding:10px}.mrchat-item{display:flex;align-items:center;gap:12px;padding:14px;border-radius:10px;cursor:pointer;color:var(--mantine-color-text)}.mrchat-item:hover{background:var(--mantine-color-default-hover)}.mrchat-itemDanger{color:var(--mantine-color-red-filled)}.mrchat-itemDanger:hover{background-color:color-mix(in srgb,var(--mantine-color-red-filled) 12%,transparent)}.mrchat-imagePreview{position:fixed;inset:0;background:#000;z-index:100;display:flex;justify-content:center;align-items:center}.mrchat-imagePreview img{max-width:90%;max-height:90%;border-radius:12px}.mrchat-chatWrapper{display:flex;flex-direction:column;align-items:center;min-height:500px;height:100%;flex:1;background-color:var(--mantine-color-body);color:var(--mantine-color-text);position:relative}.mrchat-loadingOverlay{position:absolute;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;background-color:#ffffffb3;backdrop-filter:blur(.5px)}[data-mantine-color-scheme=dark] .mrchat-loadingOverlay{background-color:#00000073}.mrchat-chatContainer{display:flex;width:100%;max-width:1260px;min-height:500px;height:100%;flex:1;overflow:hidden;border-radius:8px;background-color:var(--mantine-color-body);border:1px solid color-mix(in srgb,var(--mantine-color-text) 12%,transparent)}.mrchat-sidebar{width:280px;display:flex;flex-direction:column;min-height:0;height:100%;flex-shrink:0;border-right:1px solid color-mix(in srgb,var(--mantine-color-text) 12%,transparent);padding-top:12px;background-color:var(--mantine-color-body)}.mrchat-sidebarTop{padding:0 12px}.mrchat-topBar{display:flex;justify-content:space-between;align-items:center}.mrchat-topActions{display:flex;align-items:center;gap:10px}.mrchat-scrollWrapper{flex:1;min-height:0;height:100%;overflow-y:auto}.mrchat-mainAreaWrapper{flex:1;display:flex;min-height:0}.mrchat-hiddenOnMobile{display:none!important}.mrchat-scrollArea{flex:1;min-height:0;overflow-y:auto}.mrchat-scrollArea .mantine-ScrollArea-content{padding-bottom:60px}.mrchat-avatar{width:34px;height:34px;border-radius:50%;object-fit:cover}.mrchat-mainArea{flex:1;display:flex;flex-direction:column;min-height:0}.mrchat-messageArea{flex:1;padding:16px 16px 10px;overflow-y:auto;min-height:0}.mrchat-messageBubble{max-width:fit-content;padding:8px 45px 8px 16px;margin-bottom:8px;position:relative}.mrchat-outgoing{color:var(--mantine-color-white);background-color:var(--mantine-primary-color-filled);margin-left:auto}.mrchat-incoming{background-color:var(--mantine-color-default-hover);color:var(--mantine-color-text);margin-right:auto}.mrchat-inputBar{display:flex;align-items:end;gap:8px;padding:0 12px 12px}@media(max-width:599px){.mrchat-chatContainer{flex-direction:column;min-height:100%}.mrchat-sidebar{width:100%;height:100%;border-right:none;border-bottom:1px solid color-mix(in srgb,var(--mantine-color-text) 12%,transparent);border-radius:0}.mrchat-chatItem{margin:2px 0}.mrchat-messageArea{padding:12px}.mrchat-mainArea{min-height:calc(100vh - 74px)}}.mrchat-chatItem{display:flex;align-items:center;gap:6px;padding:8px 12px;cursor:pointer;transition:background .2s;margin:2px 4px;border-radius:6px;color:var(--mantine-color-text)}.mrchat-chatItem:hover{background-color:var(--mantine-color-default-hover)}.mrchat-chatLabelItem{font-size:15px}.mrchat-chatHeader{display:flex;justify-content:flex-start;align-items:center;padding:12px 16px;border-bottom:1px solid color-mix(in srgb,var(--mantine-color-text) 12%,transparent);position:sticky;top:0;z-index:2;min-height:63px;gap:10px}.mrchat-backButton{padding:4px}.mrchat-receiverInfo{display:flex;align-items:center;gap:12px;cursor:pointer}.mrchat-emptyState{height:100%;display:flex;align-items:center;justify-content:center}.mrchat-encryptionMinimal{display:flex;align-items:center;gap:6px;padding:6px 10px;border-radius:12px;background:var(--mantine-color-default-hover);color:var(--mantine-color-dimmed);font-size:12px}.mrchat-encryptionText{font-size:16px;margin-left:3px}.mrchat-messageContent{max-width:370px;word-wrap:break-word;font-size:14px}.mrchat-messagePreviewContent p,.mrchat-messageContent p{margin:0;padding:0}.mrchat-activeChatItem,.mrchat-chatItem:hover{background-color:var(--mantine-color-default-hover)}.mrchat-messageTime{font-size:11px;opacity:.6;text-align:right;margin-top:4px;position:absolute;bottom:4px;right:8px;z-index:1}.mrchat-dateSeparator{text-align:center;font-size:13px;margin:12px 0;color:#888}.mrchat-chatInfo{width:100%;position:relative}.mrchat-messagePreview{display:flex;justify-content:space-between;align-items:end;margin-top:1px}.mrchat-messagePreviewTime{position:relative;top:1px;right:0}.mrchat-unreadBadge{background:var(--mantine-primary-color-filled);color:var(--mantine-color-white);font-size:10px;border-radius:50%;padding:3px 5px;min-width:18px;text-align:center;position:absolute;top:1px;right:0}.mrchat-messagePreviewContent{font-size:14px}
|
package/dist/index.d.mts
CHANGED
|
@@ -12,11 +12,15 @@ type ChatUserListProps = {
|
|
|
12
12
|
colorScheme?: "light" | "dark";
|
|
13
13
|
primaryColor?: string;
|
|
14
14
|
darkColor?: string;
|
|
15
|
+
openChatByUserDetails?: UserData;
|
|
16
|
+
handleCallAfterOpenChat?: () => void;
|
|
17
|
+
isLoading?: boolean;
|
|
15
18
|
};
|
|
16
19
|
type MrChatProps = ChatUserListProps & {
|
|
17
20
|
authorization: string;
|
|
21
|
+
openChatByUserDetails?: UserData;
|
|
18
22
|
};
|
|
19
23
|
|
|
20
|
-
declare function MrChat({ colorScheme, primaryColor, darkColor, authorization, ...props }: MrChatProps): React.JSX.Element;
|
|
24
|
+
declare function MrChat({ colorScheme, primaryColor, darkColor, authorization, openChatByUserDetails, handleCallAfterOpenChat, isLoading, ...props }: MrChatProps): React.JSX.Element;
|
|
21
25
|
|
|
22
26
|
export { MrChat };
|
package/dist/index.d.ts
CHANGED
|
@@ -12,11 +12,15 @@ type ChatUserListProps = {
|
|
|
12
12
|
colorScheme?: "light" | "dark";
|
|
13
13
|
primaryColor?: string;
|
|
14
14
|
darkColor?: string;
|
|
15
|
+
openChatByUserDetails?: UserData;
|
|
16
|
+
handleCallAfterOpenChat?: () => void;
|
|
17
|
+
isLoading?: boolean;
|
|
15
18
|
};
|
|
16
19
|
type MrChatProps = ChatUserListProps & {
|
|
17
20
|
authorization: string;
|
|
21
|
+
openChatByUserDetails?: UserData;
|
|
18
22
|
};
|
|
19
23
|
|
|
20
|
-
declare function MrChat({ colorScheme, primaryColor, darkColor, authorization, ...props }: MrChatProps): React.JSX.Element;
|
|
24
|
+
declare function MrChat({ colorScheme, primaryColor, darkColor, authorization, openChatByUserDetails, handleCallAfterOpenChat, isLoading, ...props }: MrChatProps): React.JSX.Element;
|
|
21
25
|
|
|
22
26
|
export { MrChat };
|
package/dist/index.js
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
"use strict";var Lr=Object.create;var Me=Object.defineProperty;var Dr=Object.getOwnPropertyDescriptor;var zr=Object.getOwnPropertyNames;var Or=Object.getPrototypeOf,Br=Object.prototype.hasOwnProperty;var $r=(e,t)=>{for(var n in t)Me(e,n,{get:t[n],enumerable:!0})},wt=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of zr(t))!Br.call(e,o)&&o!==n&&Me(e,o,{get:()=>t[o],enumerable:!(r=Dr(t,o))||r.enumerable});return e};var H=(e,t,n)=>(n=e!=null?Lr(Or(e)):{},wt(t||!e||!e.__esModule?Me(n,"default",{value:e,enumerable:!0}):n,e)),Hr=e=>wt(Me({},"__esModule",{value:!0}),e);var fi={};$r(fi,{MrChat:()=>xt});module.exports=Hr(fi);var Ba=require("@mantine/core/styles.css"),$a=require("@mantine/tiptap/styles.css"),Ha=require("@mantine/notifications/styles.css"),G=H(require("react")),Er=require("@mantine/core"),Cr=require("@mantine/notifications");var St=require("@mantine/core"),_r=["#e6f9ff","#b3ecff","#80dfff","#4dd2ff","#1ac5ff","#00b8e6","#0091b3","#006a80","#00434d","#001c1a"],jr=["#e6f9f2","#c0f0de","#88e4c3","#4dd6a4","#26cb90","#00bf7d","#00a36c","#008d5d","#00764d","#005f3e"],Ur=["#ffe6e9","#fbbdc4","#f38b98","#ea576b","#e12c48","#d80a2d","#b30625","#8f041d","#6b0215","#47010e"],Rr=["#fff1e6","#ffd7b3","#ffb380","#ff8f4d","#ff6b1a","#e65c00","#b34700","#803300","#4d1f00","#1a0a00"],Fr=["#e6f9ff","#b3ecff","#80dfff","#4dd2ff","#1ac5ff","#00b8e6","#0091b3","#006a80","#00434d","#001c1a"],kt={customBrand:_r,emerald:jr,ruby:Ur,sunset:Rr,ocean:Fr},Mt=e=>/^#(?:[0-9a-f]{3}|[0-9a-f]{6})$/i.test(e),Vr=e=>{let t=e.replace("#",""),n=t.length===3?t.split("").map(r=>r+r).join(""):t;return{r:parseInt(n.slice(0,2),16),g:parseInt(n.slice(2,4),16),b:parseInt(n.slice(4,6),16)}},Wr=({r:e,g:t,b:n})=>`#${[e,t,n].map(r=>r.toString(16).padStart(2,"0")).join("")}`,Ye=e=>Math.min(255,Math.max(0,Math.round(e))),Kr=e=>{let{r:t,g:n,b:r}=Vr(e);return[.08,.18,.3,.42,.54,.66,.76,.86,.92,.98].map(i=>Wr({r:Ye(t*i+255*(1-i)),g:Ye(n*i+255*(1-i)),b:Ye(r*i+255*(1-i))}))},Tt=e=>{let t={...kt},n=Mt(e)||!(e in kt)?"customBrand":e;return Mt(e)&&(t.customBrand=Kr(e)),(0,St.createTheme)({primaryColor:n,colors:t})};var $t=H(require("react")),Ht=require("react-redux");var Ot=require("@reduxjs/toolkit");var Pt=require("@reduxjs/toolkit");var Se={BASE_URL:"http://localhost:4000",SOCKET_URL:"http://localhost:4000"},Et="",Ct=e=>{Et=e||""},ie=()=>Et;var It=H(require("axios")),At=It.default.create({baseURL:Se.BASE_URL,headers:{"Content-Type":"application/json",Authorization:ie()}});At.interceptors.request.use(e=>(e.headers?.set?.("Authorization",ie()),e));var Te=At;var fe=require("@mantine/notifications"),Jr={messagedUserList:null,messageList:[]},Nt=(0,Pt.createSlice)({name:"messages",initialState:Jr,reducers:{setMessagedUserList:(e,t)=>{let n=t.payload;if(n===null){e.messagedUserList=null;return}let r=n?.page??0;if(!e.messagedUserList||r===0){e.messagedUserList=n;return}let o=e.messagedUserList?.rows?.data??[],s=n?.rows?.data??[],i=[...o,...s],c=new Map;i.forEach(l=>{l?.chatId&&c.set(l.chatId,l)});let a=Array.from(c.values());e.messagedUserList={...n,rows:{...n.rows,data:a}}},setMessageList:(e,t)=>{let n=t.payload;if(n===null){e.messageList=[];return}let r=n?.page??0;if(!e.messageList?.rows?.data||r===0){e.messageList=n;return}e.messageList={...n,rows:{...n.rows,data:[...n.rows.data,...e.messageList.rows.data]}}},addNewMessage:(e,t)=>{e.messageList?.rows?.data&&e.messageList.rows.data.push(t.payload)},addUserToChatList:(e,t)=>{let n=t.payload;if(!e.messagedUserList){e.messagedUserList={hasMore:!1,rows:{success:!0,status:!0,message:"",data:[n]}};return}let r=e.messagedUserList.rows.data;e.messagedUserList.rows.data=r=r.filter(s=>s?.chatId);let o=r.findIndex(s=>s.chatId===n.chatId);if(o!==-1){let i={...r.splice(o,1)[0],...n};r.unshift(i)}else r.unshift(n)},resetMessageList:e=>{e.messageList=[]},updateUnreadCount:(e,t)=>{let{chatId:n,isActive:r}=t.payload,o=e.messagedUserList?.rows?.data;if(!o)return;let s=o.find(i=>i.chatId===n);s&&(r?s.unreadCount=0:s.unreadCount=(s.unreadCount||0)+1)},resetUnreadCount:(e,t)=>{let n=t.payload,r=e.messagedUserList?.rows?.data;if(!r)return;let o=r.find(s=>s.chatId===n);o&&(o.unreadCount=0)}}}),Ge=e=>async t=>Te.get(`/api/messages/userList/${e?.userId}?page=${e?.page||0}`).then(n=>(console.log("Fetched messages for userId:",n.data),t(he(n.data)),n.data)).catch(n=>{let r=n?.response?.data?.message||"Failed to fetch messages";return fe.notifications.show({title:"Message Fetch Failed",message:r,color:"red"}),n}),Qe=e=>async t=>Te.get(`/api/messages/${e?.chatId}?page=${e?.page||0}&userId=${e?.userId}`).then(n=>(t(qr(n.data)),n.data)).catch(n=>{let r=n?.response?.data?.message||"Failed to fetch messages";return fe.notifications.show({title:"Message Fetch Failed",message:r,color:"red"}),n});var Lt=e=>async t=>Te.delete("/api/messages",{data:{chatId:e?.chatId,userId:e?.userId}}).then(n=>(t(ve()),fe.notifications.show({title:"Messages Deleted",message:"All messages in this chat have been deleted.",color:"green"}),n.data)).catch(n=>{let r=n?.response?.data?.message||"Failed to delete messages";return fe.notifications.show({title:"Message Deletion Failed",message:r,color:"red"}),n}),Dt=()=>async e=>{e(he(null)),e(ve())},{setMessagedUserList:he,setMessageList:qr,addNewMessage:Ze,addUserToChatList:ge,resetMessageList:ve,updateUnreadCount:ki,resetUnreadCount:Mi}=Nt.actions,zt=Nt.reducer;var Bt=(0,Ot.configureStore)({reducer:{chat:zt}});function _t({children:e}){return $t.default.createElement(Ht.Provider,{store:Bt},e)}var ye=H(require("react"));var Ut=require("socket.io-client");var ce=null,jt,Q=e=>e?((!ce||jt!==e)&&(ce&&(ce.disconnect(),ce=null),ce=(0,Ut.io)(Se.SOCKET_URL,{autoConnect:!1,transports:["websocket"],auth:{apiKey:ie(),userId:e}}),jt=e),ce):null;function Rt({children:e,userId:t}){return(0,ye.useEffect)(()=>{if(!t)return;let n=Q(t);if(n)return n.connected||(n.connect(),console.log("\u2705 Socket connected for:",t)),()=>{n.connected&&(n.disconnect(),console.log("Socket disconnected for:",t))}},[t]),ye.default.createElement(ye.default.Fragment,null,e)}var B=require("@mantine/core"),xr=require("@tabler/icons-react"),br=require("@mantine/hooks");var se=require("@mantine/core"),Ke=require("@tabler/icons-react");var M=H(require("react")),W=require("@tabler/icons-react"),sr=H(require("@tiptap/extension-highlight")),ir=H(require("@tiptap/extension-subscript")),ar=H(require("@tiptap/extension-superscript")),cr=H(require("@tiptap/extension-text-align"));var en=require("@tiptap/pm/transform"),tn=require("@tiptap/pm/commands"),nn=require("@tiptap/pm/state"),rn=require("@tiptap/pm/commands"),on=require("@tiptap/pm/state"),cn=require("@tiptap/pm/state"),de=require("@tiptap/pm/state"),dn=require("@tiptap/pm/model"),X=require("@tiptap/pm/model"),mn=require("@tiptap/pm/state"),$e=require("@tiptap/pm/transform"),oe=require("@tiptap/pm/commands"),pn=require("@tiptap/pm/transform"),fn=require("@tiptap/pm/transform"),hn=require("@tiptap/pm/commands"),gn=require("@tiptap/pm/commands"),yn=require("@tiptap/pm/commands"),xn=require("@tiptap/pm/commands"),bn=require("@tiptap/pm/schema-list"),wn=require("@tiptap/pm/commands"),Mn=require("@tiptap/pm/state"),Sn=require("@tiptap/pm/commands"),Tn=require("@tiptap/pm/commands"),En=require("@tiptap/pm/commands"),Cn=require("@tiptap/pm/commands"),In=require("@tiptap/pm/commands"),An=require("@tiptap/pm/transform"),Xo=require("@tiptap/pm/model"),Pn=require("@tiptap/pm/model"),Ln=require("@tiptap/pm/model"),ns=require("@tiptap/pm/model"),rs=require("@tiptap/pm/model"),us=require("@tiptap/pm/state"),rt=require("@tiptap/pm/commands"),Bn=require("@tiptap/pm/state"),Ne=require("@tiptap/pm/state"),$n=require("@tiptap/pm/schema-list"),He=require("@tiptap/pm/state"),Le=require("@tiptap/pm/transform"),le=require("@tiptap/pm/model"),Hn=require("@tiptap/pm/state"),_n=require("@tiptap/pm/transform"),jn=require("@tiptap/pm/state"),dt=require("@tiptap/pm/transform"),Un=require("@tiptap/pm/commands"),Rn=require("@tiptap/pm/schema-list"),zs=require("@tiptap/pm/state"),Os=require("@tiptap/pm/view"),Fn=require("@tiptap/pm/keymap"),Vn=require("@tiptap/pm/model"),Wn=require("@tiptap/pm/state"),qn=require("@tiptap/pm/model"),Xn=require("@tiptap/pm/state"),_e=require("@tiptap/pm/state"),Gn=require("@tiptap/pm/transform"),je=require("@tiptap/pm/state"),Ue=require("@tiptap/pm/state"),Re=require("@tiptap/pm/state"),re=require("@tiptap/pm/state"),Fe=require("@tiptap/pm/state"),Ve=require("@tiptap/pm/state"),We=require("@tiptap/pm/state"),Zn=require("@tiptap/pm/transform"),ti=require("@tiptap/pm/state"),ui=require("@tiptap/pm/state"),Xr=Object.defineProperty,ot=(e,t)=>{for(var n in t)Xr(e,n,{get:t[n],enumerable:!0})};function Be(e){let{state:t,transaction:n}=e,{selection:r}=n,{doc:o}=n,{storedMarks:s}=n;return{...t,apply:t.apply.bind(t),applyTransaction:t.applyTransaction.bind(t),plugins:t.plugins,schema:t.schema,reconfigure:t.reconfigure.bind(t),toJSON:t.toJSON.bind(t),get storedMarks(){return s},get selection(){return r},get doc(){return o},get tr(){return r=n.selection,o=n.doc,s=n.storedMarks,n}}}var st=class{constructor(e){this.editor=e.editor,this.rawCommands=this.editor.extensionManager.commands,this.customState=e.state}get hasCustomState(){return!!this.customState}get state(){return this.customState||this.editor.state}get commands(){let{rawCommands:e,editor:t,state:n}=this,{view:r}=t,{tr:o}=n,s=this.buildProps(o);return Object.fromEntries(Object.entries(e).map(([i,c])=>[i,(...l)=>{let p=c(...l)(s);return!o.getMeta("preventDispatch")&&!this.hasCustomState&&r.dispatch(o),p}]))}get chain(){return()=>this.createChain()}get can(){return()=>this.createCan()}createChain(e,t=!0){let{rawCommands:n,editor:r,state:o}=this,{view:s}=r,i=[],c=!!e,a=e||o.tr,l=()=>(!c&&t&&!a.getMeta("preventDispatch")&&!this.hasCustomState&&s.dispatch(a),i.every(d=>d===!0)),p={...Object.fromEntries(Object.entries(n).map(([d,m])=>[d,(...h)=>{let f=this.buildProps(a,t),g=m(...h)(f);return i.push(g),p}])),run:l};return p}createCan(e){let{rawCommands:t,state:n}=this,r=!1,o=e||n.tr,s=this.buildProps(o,r);return{...Object.fromEntries(Object.entries(t).map(([c,a])=>[c,(...l)=>a(...l)({...s,dispatch:void 0})])),chain:()=>this.createChain(o,r)}}buildProps(e,t=!0){let{rawCommands:n,editor:r,state:o}=this,{view:s}=r,i={tr:e,editor:r,view:s,state:Be({state:o,transaction:e}),dispatch:t?()=>{}:void 0,chain:()=>this.createChain(e,t),can:()=>this.createCan(e),get commands(){return Object.fromEntries(Object.entries(n).map(([c,a])=>[c,(...l)=>a(...l)(i)]))}};return i}},Zt={};ot(Zt,{blur:()=>Yr,clearContent:()=>Gr,clearNodes:()=>Qr,command:()=>Zr,createParagraphNear:()=>eo,cut:()=>to,deleteCurrentNode:()=>no,deleteNode:()=>ro,deleteRange:()=>oo,deleteSelection:()=>ao,enter:()=>co,exitCode:()=>lo,extendMarkRange:()=>uo,first:()=>mo,focus:()=>ho,forEach:()=>go,insertContent:()=>vo,insertContentAt:()=>bo,joinBackward:()=>Mo,joinDown:()=>ko,joinForward:()=>So,joinItemBackward:()=>To,joinItemForward:()=>Eo,joinTextblockBackward:()=>Co,joinTextblockForward:()=>Io,joinUp:()=>wo,keyboardShortcut:()=>Po,lift:()=>No,liftEmptyBlock:()=>Lo,liftListItem:()=>Do,newlineInCode:()=>zo,resetAttributes:()=>Oo,scrollIntoView:()=>Bo,selectAll:()=>$o,selectNodeBackward:()=>Ho,selectNodeForward:()=>_o,selectParentNode:()=>jo,selectTextblockEnd:()=>Uo,selectTextblockStart:()=>Ro,setContent:()=>Vo,setMark:()=>ps,setMeta:()=>fs,setNode:()=>hs,setNodeSelection:()=>gs,setTextDirection:()=>vs,setTextSelection:()=>ys,sinkListItem:()=>xs,splitBlock:()=>bs,splitListItem:()=>ws,toggleList:()=>Ms,toggleMark:()=>Ss,toggleNode:()=>Ts,toggleWrap:()=>Es,undoInputRule:()=>Cs,unsetAllMarks:()=>Is,unsetMark:()=>As,unsetTextDirection:()=>Ps,updateAttributes:()=>Ns,wrapIn:()=>Ls,wrapInList:()=>Ds});var Yr=()=>({editor:e,view:t})=>(requestAnimationFrame(()=>{var n;e.isDestroyed||(t.dom.blur(),(n=window?.getSelection())==null||n.removeAllRanges())}),!0),Gr=(e=!0)=>({commands:t})=>t.setContent("",{emitUpdate:e}),Qr=()=>({state:e,tr:t,dispatch:n})=>{let{selection:r}=t,{ranges:o}=r;return n&&o.forEach(({$from:s,$to:i})=>{e.doc.nodesBetween(s.pos,i.pos,(c,a)=>{if(c.type.isText)return;let{doc:l,mapping:p}=t,d=l.resolve(p.map(a)),m=l.resolve(p.map(a+c.nodeSize)),u=d.blockRange(m);if(!u)return;let h=(0,en.liftTarget)(u);if(c.type.isTextblock){let{defaultType:f}=d.parent.contentMatchAt(d.index());t.setNodeMarkup(u.start,f)}(h||h===0)&&t.lift(u,h)})}),!0},Zr=e=>t=>e(t),eo=()=>({state:e,dispatch:t})=>(0,tn.createParagraphNear)(e,t),to=(e,t)=>({editor:n,tr:r})=>{let{state:o}=n,s=o.doc.slice(e.from,e.to);r.deleteRange(e.from,e.to);let i=r.mapping.map(t);return r.insert(i,s.content),r.setSelection(new nn.TextSelection(r.doc.resolve(Math.max(i-1,0)))),!0},no=()=>({tr:e,dispatch:t})=>{let{selection:n}=e,r=n.$anchor.node();if(r.content.size>0)return!1;let o=e.selection.$anchor;for(let s=o.depth;s>0;s-=1)if(o.node(s).type===r.type){if(t){let c=o.before(s),a=o.after(s);e.delete(c,a).scrollIntoView()}return!0}return!1};function F(e,t){if(typeof e=="string"){if(!t.nodes[e])throw Error(`There is no node type named '${e}'. Maybe you forgot to add the extension?`);return t.nodes[e]}return e}var ro=e=>({tr:t,state:n,dispatch:r})=>{let o=F(e,n.schema),s=t.selection.$anchor;for(let i=s.depth;i>0;i-=1)if(s.node(i).type===o){if(r){let a=s.before(i),l=s.after(i);t.delete(a,l).scrollIntoView()}return!0}return!1},oo=e=>({tr:t,dispatch:n})=>{let{from:r,to:o}=e;return n&&t.delete(r,o),!0},so=e=>e.content?/^text(\*|\+)/.test(e.content):!1,Ft=(e,t,n)=>{if(!e.parent.isInline||n==="left"&&e.pos>e.start()||n==="right"&&e.pos<e.end())return e.pos;let r=t.nodes[e.parent.type.name].spec;return so(r)?n==="left"?e.start()-1:e.end()+1:e.pos},io=(e,t,n)=>{let r=Ft(e,n,"left"),o=Ft(t,n,"right");return{from:r,to:o}},ao=()=>({state:e,dispatch:t})=>{let{$from:n,$to:r}=e.selection;if(e.selection.empty)return!1;let{from:o,to:s}=io(n,r,e.schema);return t&&(e.tr.deleteRange(o,s).scrollIntoView(),t(e.tr)),!0},co=()=>({commands:e})=>e.keyboardShortcut("Enter"),lo=()=>({state:e,dispatch:t})=>(0,rn.exitCode)(e,t);function it(e){return Object.prototype.toString.call(e)==="[object RegExp]"}function De(e,t,n={strict:!0}){let r=Object.keys(t);return r.length?r.every(o=>n.strict?t[o]===e[o]:it(t[o])?t[o].test(e[o]):t[o]===e[o]):!0}function sn(e,t,n={}){return e.find(r=>r.type===t&&De(Object.fromEntries(Object.keys(n).map(o=>[o,r.attrs[o]])),n))}function Vt(e,t,n={}){return!!sn(e,t,n)}function an(e,t,n){if(!e||!t)return;let r=e.parent.childAfter(e.parentOffset);if((!r.node||!r.node.marks.some(l=>l.type===t))&&(r=e.parent.childBefore(e.parentOffset)),!r.node||!r.node.marks.some(l=>l.type===t))return;if(!n){let l=r.node.marks.find(p=>p.type===t);l&&(n=l.attrs)}if(!sn([...r.node.marks],t,n))return;let s=r.index,i=e.start()+r.offset,c=s+1,a=i+r.node.nodeSize;for(;s>0&&Vt([...e.parent.child(s-1).marks],t,n);)s-=1,i-=e.parent.child(s).nodeSize;for(;c<e.parent.childCount&&Vt([...e.parent.child(c).marks],t,n);)a+=e.parent.child(c).nodeSize,c+=1;return{from:i,to:a}}function ee(e,t){if(typeof e=="string"){if(!t.marks[e])throw Error(`There is no mark type named '${e}'. Maybe you forgot to add the extension?`);return t.marks[e]}return e}var uo=(e,t)=>({tr:n,state:r,dispatch:o})=>{let s=ee(e,r.schema),{doc:i,selection:c}=n,{$from:a,from:l,to:p}=c;if(o){let d=an(a,s,t);if(d&&d.from<=l&&d.to>=p){let m=on.TextSelection.create(i,d.from,d.to);n.setSelection(m)}}return!0},mo=e=>t=>{let n=typeof e=="function"?e(t):e;for(let r=0;r<n.length;r+=1)if(n[r](t))return!0;return!1};function ln(e){return e instanceof cn.TextSelection}function ae(e=0,t=0,n=0){return Math.min(Math.max(e,t),n)}function po(e,t=null){if(!t)return null;let n=de.Selection.atStart(e),r=de.Selection.atEnd(e);if(t==="start"||t===!0)return n;if(t==="end")return r;let o=n.from,s=r.to;return t==="all"?de.TextSelection.create(e,ae(0,o,s),ae(e.content.size,o,s)):de.TextSelection.create(e,ae(t,o,s),ae(t,o,s))}function Wt(){return navigator.platform==="Android"||/android/i.test(navigator.userAgent)}function ze(){return["iPad Simulator","iPhone Simulator","iPod Simulator","iPad","iPhone","iPod"].includes(navigator.platform)||navigator.userAgent.includes("Mac")&&"ontouchend"in document}function fo(){return typeof navigator<"u"?/^((?!chrome|android).)*safari/i.test(navigator.userAgent):!1}var ho=(e=null,t={})=>({editor:n,view:r,tr:o,dispatch:s})=>{t={scrollIntoView:!0,...t};let i=()=>{(ze()||Wt())&&r.dom.focus(),fo()&&!ze()&&!Wt()&&r.dom.focus({preventScroll:!0}),requestAnimationFrame(()=>{n.isDestroyed||(r.focus(),t?.scrollIntoView&&n.commands.scrollIntoView())})};try{if(r.hasFocus()&&e===null||e===!1)return!0}catch{return!1}if(s&&e===null&&!ln(n.state.selection))return i(),!0;let c=po(o.doc,e)||n.state.selection,a=n.state.selection.eq(c);return s&&(a||o.setSelection(c),a&&o.storedMarks&&o.setStoredMarks(o.storedMarks),i()),!0},go=(e,t)=>n=>e.every((r,o)=>t(r,{...n,index:o})),vo=(e,t)=>({tr:n,commands:r})=>r.insertContentAt({from:n.selection.from,to:n.selection.to},e,t),un=e=>{let t=e.childNodes;for(let n=t.length-1;n>=0;n-=1){let r=t[n];r.nodeType===3&&r.nodeValue&&/^(\n\s\s|\n)$/.test(r.nodeValue)?e.removeChild(r):r.nodeType===1&&un(r)}return e};function Ee(e){if(typeof window>"u")throw new Error("[tiptap error]: there is no window object available, so this function cannot be used");let t=`<body>${e}</body>`,n=new window.DOMParser().parseFromString(t,"text/html").body;return un(n)}function we(e,t,n){if(e instanceof X.Node||e instanceof X.Fragment)return e;n={slice:!0,parseOptions:{},...n};let r=typeof e=="object"&&e!==null,o=typeof e=="string";if(r)try{if(Array.isArray(e)&&e.length>0)return X.Fragment.fromArray(e.map(c=>t.nodeFromJSON(c)));let i=t.nodeFromJSON(e);return n.errorOnInvalidContent&&i.check(),i}catch(s){if(n.errorOnInvalidContent)throw new Error("[tiptap error]: Invalid JSON content",{cause:s});return console.warn("[tiptap warn]: Invalid content.","Passed value:",e,"Error:",s),we("",t,n)}if(o){if(n.errorOnInvalidContent){let i=!1,c="",a=new X.Schema({topNode:t.spec.topNode,marks:t.spec.marks,nodes:t.spec.nodes.append({__tiptap__private__unknown__catch__all__node:{content:"inline*",group:"block",parseDOM:[{tag:"*",getAttrs:l=>(i=!0,c=typeof l=="string"?l:l.outerHTML,null)}]}})});if(n.slice?X.DOMParser.fromSchema(a).parseSlice(Ee(e),n.parseOptions):X.DOMParser.fromSchema(a).parse(Ee(e),n.parseOptions),n.errorOnInvalidContent&&i)throw new Error("[tiptap error]: Invalid HTML content",{cause:new Error(`Invalid element found: ${c}`)})}let s=X.DOMParser.fromSchema(t);return n.slice?s.parseSlice(Ee(e),n.parseOptions).content:s.parse(Ee(e),n.parseOptions)}return we("",t,n)}function yo(e,t,n){let r=e.steps.length-1;if(r<t)return;let o=e.steps[r];if(!(o instanceof $e.ReplaceStep||o instanceof $e.ReplaceAroundStep))return;let s=e.mapping.maps[r],i=0;s.forEach((c,a,l,p)=>{i===0&&(i=p)}),e.setSelection(mn.Selection.near(e.doc.resolve(i),n))}var xo=e=>!("type"in e),bo=(e,t,n)=>({tr:r,dispatch:o,editor:s})=>{var i;if(o){n={parseOptions:s.options.parseOptions,updateSelection:!0,applyInputRules:!1,applyPasteRules:!1,...n};let c,a=g=>{s.emit("contentError",{editor:s,error:g,disableCollaboration:()=>{"collaboration"in s.storage&&typeof s.storage.collaboration=="object"&&s.storage.collaboration&&(s.storage.collaboration.isDisabled=!0)}})},l={preserveWhitespace:"full",...n.parseOptions};if(!n.errorOnInvalidContent&&!s.options.enableContentCheck&&s.options.emitContentError)try{we(t,s.schema,{parseOptions:l,errorOnInvalidContent:!0})}catch(g){a(g)}try{c=we(t,s.schema,{parseOptions:l,errorOnInvalidContent:(i=n.errorOnInvalidContent)!=null?i:s.options.enableContentCheck})}catch(g){return a(g),!1}let{from:p,to:d}=typeof e=="number"?{from:e,to:e}:{from:e.from,to:e.to},m=!0,u=!0;if((xo(c)?c:[c]).forEach(g=>{g.check(),m=m?g.isText&&g.marks.length===0:!1,u=u?g.isBlock:!1}),p===d&&u){let{parent:g}=r.doc.resolve(p);g.isTextblock&&!g.type.spec.code&&!g.childCount&&(p-=1,d+=1)}let f;if(m){if(Array.isArray(t))f=t.map(g=>g.text||"").join("");else if(t instanceof dn.Fragment){let g="";t.forEach(v=>{v.text&&(g+=v.text)}),f=g}else typeof t=="object"&&t&&t.text?f=t.text:f=t;r.insertText(f,p,d)}else{f=c;let g=r.doc.resolve(p),v=g.node(),y=g.parentOffset===0,I=v.isText||v.isTextblock,A=v.content.size>0;y&&I&&A&&u&&(p=Math.max(0,p-1)),r.replaceWith(p,d,f)}n.updateSelection&&yo(r,r.steps.length-1,-1),n.applyInputRules&&r.setMeta("applyInputRules",{from:p,text:f}),n.applyPasteRules&&r.setMeta("applyPasteRules",{from:p,text:f})}return!0},wo=()=>({state:e,dispatch:t})=>(0,oe.joinUp)(e,t),ko=()=>({state:e,dispatch:t})=>(0,oe.joinDown)(e,t),Mo=()=>({state:e,dispatch:t})=>(0,oe.joinBackward)(e,t),So=()=>({state:e,dispatch:t})=>(0,oe.joinForward)(e,t),To=()=>({state:e,dispatch:t,tr:n})=>{try{let r=(0,pn.joinPoint)(e.doc,e.selection.$from.pos,-1);return r==null?!1:(n.join(r,2),t&&t(n),!0)}catch{return!1}},Eo=()=>({state:e,dispatch:t,tr:n})=>{try{let r=(0,fn.joinPoint)(e.doc,e.selection.$from.pos,1);return r==null?!1:(n.join(r,2),t&&t(n),!0)}catch{return!1}},Co=()=>({state:e,dispatch:t})=>(0,hn.joinTextblockBackward)(e,t),Io=()=>({state:e,dispatch:t})=>(0,gn.joinTextblockForward)(e,t);function vn(){return typeof navigator<"u"?/Mac/.test(navigator.platform):!1}function Ao(e){let t=e.split(/-(?!$)/),n=t[t.length-1];n==="Space"&&(n=" ");let r,o,s,i;for(let c=0;c<t.length-1;c+=1){let a=t[c];if(/^(cmd|meta|m)$/i.test(a))i=!0;else if(/^a(lt)?$/i.test(a))r=!0;else if(/^(c|ctrl|control)$/i.test(a))o=!0;else if(/^s(hift)?$/i.test(a))s=!0;else if(/^mod$/i.test(a))ze()||vn()?i=!0:o=!0;else throw new Error(`Unrecognized modifier name: ${a}`)}return r&&(n=`Alt-${n}`),o&&(n=`Ctrl-${n}`),i&&(n=`Meta-${n}`),s&&(n=`Shift-${n}`),n}var Po=e=>({editor:t,view:n,tr:r,dispatch:o})=>{let s=Ao(e).split(/-(?!$)/),i=s.find(l=>!["Alt","Ctrl","Meta","Shift"].includes(l)),c=new KeyboardEvent("keydown",{key:i==="Space"?" ":i,altKey:s.includes("Alt"),ctrlKey:s.includes("Ctrl"),metaKey:s.includes("Meta"),shiftKey:s.includes("Shift"),bubbles:!0,cancelable:!0}),a=t.captureTransaction(()=>{n.someProp("handleKeyDown",l=>l(n,c))});return a?.steps.forEach(l=>{let p=l.map(r.mapping);p&&o&&r.maybeStep(p)}),!0};function at(e,t,n={}){let{from:r,to:o,empty:s}=e.selection,i=t?F(t,e.schema):null,c=[];e.doc.nodesBetween(r,o,(d,m)=>{if(d.isText)return;let u=Math.max(r,m),h=Math.min(o,m+d.nodeSize);c.push({node:d,from:u,to:h})});let a=o-r,l=c.filter(d=>i?i.name===d.node.type.name:!0).filter(d=>De(d.node.attrs,n,{strict:!1}));return s?!!l.length:l.reduce((d,m)=>d+m.to-m.from,0)>=a}var No=(e,t={})=>({state:n,dispatch:r})=>{let o=F(e,n.schema);return at(n,o,t)?(0,yn.lift)(n,r):!1},Lo=()=>({state:e,dispatch:t})=>(0,xn.liftEmptyBlock)(e,t),Do=e=>({state:t,dispatch:n})=>{let r=F(e,t.schema);return(0,bn.liftListItem)(r)(t,n)},zo=()=>({state:e,dispatch:t})=>(0,wn.newlineInCode)(e,t);function kn(e,t){return t.nodes[e]?"node":t.marks[e]?"mark":null}function Kt(e,t){let n=typeof t=="string"?[t]:t;return Object.keys(e).reduce((r,o)=>(n.includes(o)||(r[o]=e[o]),r),{})}var Oo=(e,t)=>({tr:n,state:r,dispatch:o})=>{let s=null,i=null,c=kn(typeof e=="string"?e:e.name,r.schema);if(!c)return!1;c==="node"&&(s=F(e,r.schema)),c==="mark"&&(i=ee(e,r.schema));let a=!1;return n.selection.ranges.forEach(l=>{r.doc.nodesBetween(l.$from.pos,l.$to.pos,(p,d)=>{s&&s===p.type&&(a=!0,o&&n.setNodeMarkup(d,void 0,Kt(p.attrs,t))),i&&p.marks.length&&p.marks.forEach(m=>{i===m.type&&(a=!0,o&&n.addMark(d,d+p.nodeSize,i.create(Kt(m.attrs,t))))})})}),a},Bo=()=>({tr:e,dispatch:t})=>(t&&e.scrollIntoView(),!0),$o=()=>({tr:e,dispatch:t})=>{if(t){let n=new Mn.AllSelection(e.doc);e.setSelection(n)}return!0},Ho=()=>({state:e,dispatch:t})=>(0,Sn.selectNodeBackward)(e,t),_o=()=>({state:e,dispatch:t})=>(0,Tn.selectNodeForward)(e,t),jo=()=>({state:e,dispatch:t})=>(0,En.selectParentNode)(e,t),Uo=()=>({state:e,dispatch:t})=>(0,Cn.selectTextblockEnd)(e,t),Ro=()=>({state:e,dispatch:t})=>(0,In.selectTextblockStart)(e,t);function Fo(e,t,n={},r={}){return we(e,t,{slice:!1,parseOptions:n,errorOnInvalidContent:r.errorOnInvalidContent})}var Vo=(e,{errorOnInvalidContent:t,emitUpdate:n=!0,parseOptions:r={}}={})=>({editor:o,tr:s,dispatch:i,commands:c})=>{let{doc:a}=s;if(r.preserveWhitespace!=="full"){let l=Fo(e,o.schema,r,{errorOnInvalidContent:t??o.options.enableContentCheck});return i&&s.replaceWith(0,a.content.size,l).setMeta("preventUpdate",!n),!0}return i&&s.setMeta("preventUpdate",!n),c.insertContentAt({from:0,to:a.content.size},e,{parseOptions:r,errorOnInvalidContent:t??o.options.enableContentCheck})};function Wo(e,t){let n=ee(t,e.schema),{from:r,to:o,empty:s}=e.selection,i=[];s?(e.storedMarks&&i.push(...e.storedMarks),i.push(...e.selection.$head.marks())):e.doc.nodesBetween(r,o,a=>{i.push(...a.marks)});let c=i.find(a=>a.type.name===n.name);return c?{...c.attrs}:{}}function Ko(e,t){let n=new An.Transform(e);return t.forEach(r=>{r.steps.forEach(o=>{n.step(o)})}),n}function Jo(e){for(let t=0;t<e.edgeCount;t+=1){let{type:n}=e.edge(t);if(n.isTextblock&&!n.hasRequiredAttrs())return n}return null}function qo(e,t){for(let n=e.depth;n>0;n-=1){let r=e.node(n);if(t(r))return{pos:n>0?e.before(n):0,start:e.start(n),depth:n,node:r}}}function ct(e){return t=>qo(t.$from,e)}function b(e,t,n){return e.config[t]===void 0&&e.parent?b(e.parent,t,n):typeof e.config[t]=="function"?e.config[t].bind({...n,parent:e.parent?b(e.parent,t,n):null}):e.config[t]}function lt(e){return e.map(t=>{let n={name:t.name,options:t.options,storage:t.storage},r=b(t,"addExtensions",n);return r?[t,...lt(r())]:t}).flat(10)}function Nn(e,t){let n=Pn.DOMSerializer.fromSchema(t).serializeFragment(e),o=document.implementation.createHTMLDocument().createElement("div");return o.appendChild(n),o.innerHTML}function Yo(e){return typeof e=="function"}function O(e,t=void 0,...n){return Yo(e)?t?e.bind(t)(...n):e(...n):e}function Go(e={}){return Object.keys(e).length===0&&e.constructor===Object}function ue(e){let t=e.filter(o=>o.type==="extension"),n=e.filter(o=>o.type==="node"),r=e.filter(o=>o.type==="mark");return{baseExtensions:t,nodeExtensions:n,markExtensions:r}}function Dn(e){let t=[],{nodeExtensions:n,markExtensions:r}=ue(e),o=[...n,...r],s={default:null,validate:void 0,rendered:!0,renderHTML:null,parseHTML:null,keepOnSplit:!0,isRequired:!1},i=n.filter(l=>l.name!=="text").map(l=>l.name),c=r.map(l=>l.name),a=[...i,...c];return e.forEach(l=>{let p={name:l.name,options:l.options,storage:l.storage,extensions:o},d=b(l,"addGlobalAttributes",p);if(!d)return;d().forEach(u=>{let h;Array.isArray(u.types)?h=u.types:u.types==="*"?h=a:u.types==="nodes"?h=i:u.types==="marks"?h=c:h=[],h.forEach(f=>{Object.entries(u.attributes).forEach(([g,v])=>{t.push({type:f,name:g,attribute:{...s,...v}})})})})}),o.forEach(l=>{let p={name:l.name,options:l.options,storage:l.storage},d=b(l,"addAttributes",p);if(!d)return;let m=d();Object.entries(m).forEach(([u,h])=>{let f={...s,...h};typeof f?.default=="function"&&(f.default=f.default()),f?.isRequired&&f?.default===void 0&&delete f.default,t.push({type:l.name,name:u,attribute:f})})}),t}function Qo(e){let t=[],n="",r=!1,o=!1,s=0,i=e.length;for(let c=0;c<i;c+=1){let a=e[c];if(a==="'"&&!o){r=!r,n+=a;continue}if(a==='"'&&!r){o=!o,n+=a;continue}if(!r&&!o){if(a==="("){s+=1,n+=a;continue}if(a===")"&&s>0){s-=1,n+=a;continue}if(a===";"&&s===0){t.push(n),n="";continue}}n+=a}return n&&t.push(n),t}function Jt(e){let t=[],n=Qo(e||""),r=n.length;for(let o=0;o<r;o+=1){let s=n[o],i=s.indexOf(":");if(i===-1)continue;let c=s.slice(0,i).trim(),a=s.slice(i+1).trim();c&&a&&t.push([c,a])}return t}function ke(...e){return e.filter(t=>!!t).reduce((t,n)=>{let r={...t};return Object.entries(n).forEach(([o,s])=>{if(!r[o]){r[o]=s;return}if(o==="class"){let c=s?String(s).split(" "):[],a=r[o]?r[o].split(" "):[],l=c.filter(p=>!a.includes(p));r[o]=[...a,...l].join(" ")}else if(o==="style"){let c=new Map([...Jt(r[o]),...Jt(s)]);r[o]=Array.from(c.entries()).map(([a,l])=>`${a}: ${l}`).join("; ")}else r[o]=s}),r},{})}function Oe(e,t){return t.filter(n=>n.type===e.type.name).filter(n=>n.attribute.rendered).map(n=>n.attribute.renderHTML?n.attribute.renderHTML(e.attrs)||{}:{[n.name]:e.attrs[n.name]}).reduce((n,r)=>ke(n,r),{})}function Zo(e){return typeof e!="string"?e:e.match(/^[+-]?(?:\d*\.)?\d+$/)?Number(e):e==="true"?!0:e==="false"?!1:e}function qt(e,t){return"style"in e?e:{...e,getAttrs:n=>{let r=e.getAttrs?e.getAttrs(n):e.attrs;if(r===!1)return!1;let o=t.reduce((s,i)=>{let c=i.attribute.parseHTML?i.attribute.parseHTML(n):Zo(n.getAttribute(i.name));return c==null?s:{...s,[i.name]:c}},{});return{...r,...o}}}}function Xt(e){return Object.fromEntries(Object.entries(e).filter(([t,n])=>t==="attrs"&&Go(n)?!1:n!=null))}function Yt(e){var t,n;let r={};return!((t=e?.attribute)!=null&&t.isRequired)&&"default"in(e?.attribute||{})&&(r.default=e.attribute.default),((n=e?.attribute)==null?void 0:n.validate)!==void 0&&(r.validate=e.attribute.validate),[e.name,r]}function es(e,t){var n;let r=Dn(e),{nodeExtensions:o,markExtensions:s}=ue(e),i=(n=o.find(l=>b(l,"topNode")))==null?void 0:n.name,c=Object.fromEntries(o.map(l=>{let p=r.filter(v=>v.type===l.name),d={name:l.name,options:l.options,storage:l.storage,editor:t},m=e.reduce((v,y)=>{let I=b(y,"extendNodeSchema",d);return{...v,...I?I(l):{}}},{}),u=Xt({...m,content:O(b(l,"content",d)),marks:O(b(l,"marks",d)),group:O(b(l,"group",d)),inline:O(b(l,"inline",d)),atom:O(b(l,"atom",d)),selectable:O(b(l,"selectable",d)),draggable:O(b(l,"draggable",d)),code:O(b(l,"code",d)),whitespace:O(b(l,"whitespace",d)),linebreakReplacement:O(b(l,"linebreakReplacement",d)),defining:O(b(l,"defining",d)),isolating:O(b(l,"isolating",d)),attrs:Object.fromEntries(p.map(Yt))}),h=O(b(l,"parseHTML",d));h&&(u.parseDOM=h.map(v=>qt(v,p)));let f=b(l,"renderHTML",d);f&&(u.toDOM=v=>f({node:v,HTMLAttributes:Oe(v,p)}));let g=b(l,"renderText",d);return g&&(u.toText=g),[l.name,u]})),a=Object.fromEntries(s.map(l=>{let p=r.filter(g=>g.type===l.name),d={name:l.name,options:l.options,storage:l.storage,editor:t},m=e.reduce((g,v)=>{let y=b(v,"extendMarkSchema",d);return{...g,...y?y(l):{}}},{}),u=Xt({...m,inclusive:O(b(l,"inclusive",d)),excludes:O(b(l,"excludes",d)),group:O(b(l,"group",d)),spanning:O(b(l,"spanning",d)),code:O(b(l,"code",d)),attrs:Object.fromEntries(p.map(Yt))}),h=O(b(l,"parseHTML",d));h&&(u.parseDOM=h.map(g=>qt(g,p)));let f=b(l,"renderHTML",d);return f&&(u.toDOM=g=>f({mark:g,HTMLAttributes:Oe(g,p)})),[l.name,u]}));return new Ln.Schema({topNode:i,nodes:c,marks:a})}function ts(e){let t=e.filter((n,r)=>e.indexOf(n)!==r);return Array.from(new Set(t))}function be(e){return e.sort((n,r)=>{let o=b(n,"priority")||100,s=b(r,"priority")||100;return o>s?-1:o<s?1:0})}function zn(e){let t=be(lt(e)),n=ts(t.map(r=>r.name));return n.length&&console.warn(`[tiptap warn]: Duplicate extension names found: [${n.map(r=>`'${r}'`).join(", ")}]. This can lead to issues.`),t}function os(e,t,n){let{from:r,to:o}=t,{blockSeparator:s=`
|
|
1
|
+
"use strict";var Or=Object.create;var Te=Object.defineProperty;var Br=Object.getOwnPropertyDescriptor;var $r=Object.getOwnPropertyNames;var Hr=Object.getPrototypeOf,_r=Object.prototype.hasOwnProperty;var jr=(e,t)=>{for(var n in t)Te(e,n,{get:t[n],enumerable:!0})},kt=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of $r(t))!_r.call(e,o)&&o!==n&&Te(e,o,{get:()=>t[o],enumerable:!(r=Br(t,o))||r.enumerable});return e};var H=(e,t,n)=>(n=e!=null?Or(Hr(e)):{},kt(t||!e||!e.__esModule?Te(n,"default",{value:e,enumerable:!0}):n,e)),Ur=e=>kt(Te({},"__esModule",{value:!0}),e);var vi={};jr(vi,{MrChat:()=>wt});module.exports=Ur(vi);var _a=require("@mantine/core/styles.css"),ja=require("@mantine/tiptap/styles.css"),Ua=require("@mantine/notifications/styles.css"),G=H(require("react")),Cr=require("@mantine/core"),Ir=require("@mantine/notifications");var Tt=require("@mantine/core"),Rr=["#e6f9ff","#b3ecff","#80dfff","#4dd2ff","#1ac5ff","#00b8e6","#0091b3","#006a80","#00434d","#001c1a"],Fr=["#e6f9f2","#c0f0de","#88e4c3","#4dd6a4","#26cb90","#00bf7d","#00a36c","#008d5d","#00764d","#005f3e"],Vr=["#ffe6e9","#fbbdc4","#f38b98","#ea576b","#e12c48","#d80a2d","#b30625","#8f041d","#6b0215","#47010e"],Wr=["#fff1e6","#ffd7b3","#ffb380","#ff8f4d","#ff6b1a","#e65c00","#b34700","#803300","#4d1f00","#1a0a00"],Kr=["#e6f9ff","#b3ecff","#80dfff","#4dd2ff","#1ac5ff","#00b8e6","#0091b3","#006a80","#00434d","#001c1a"],Mt={customBrand:Rr,emerald:Fr,ruby:Vr,sunset:Wr,ocean:Kr},St=e=>/^#(?:[0-9a-f]{3}|[0-9a-f]{6})$/i.test(e),Jr=e=>{let t=e.replace("#",""),n=t.length===3?t.split("").map(r=>r+r).join(""):t;return{r:parseInt(n.slice(0,2),16),g:parseInt(n.slice(2,4),16),b:parseInt(n.slice(4,6),16)}},qr=({r:e,g:t,b:n})=>`#${[e,t,n].map(r=>r.toString(16).padStart(2,"0")).join("")}`,Qe=e=>Math.min(255,Math.max(0,Math.round(e))),Xr=e=>{let{r:t,g:n,b:r}=Jr(e);return[.08,.18,.3,.42,.54,.66,.76,.86,.92,.98].map(i=>qr({r:Qe(t*i+255*(1-i)),g:Qe(n*i+255*(1-i)),b:Qe(r*i+255*(1-i))}))},Et=e=>{let t={...Mt},n=St(e)||!(e in Mt)?"customBrand":e;return St(e)&&(t.customBrand=Xr(e)),(0,Tt.createTheme)({primaryColor:n,colors:t})};var Ht=H(require("react")),_t=require("react-redux");var Bt=require("@reduxjs/toolkit");var Nt=require("@reduxjs/toolkit");var Ee={BASE_URL:"http://localhost:4000",SOCKET_URL:"http://localhost:4000"},Ct="",It=e=>{Ct=e||""},ie=()=>Ct;var At=H(require("axios")),Pt=At.default.create({baseURL:Ee.BASE_URL,headers:{"Content-Type":"application/json",Authorization:ie(),"Cache-Control":"no-cache",Pragma:"no-cache"}});Pt.interceptors.request.use(e=>(e.headers?.set?.("Authorization",ie()),e.headers?.set?.("Cache-Control","no-cache"),e.headers?.set?.("Pragma","no-cache"),e.headers?.set?.("Expires","0"),e));var Ce=Pt;var fe=require("@mantine/notifications"),Yr={messagedUserList:null,messageList:[]},Lt=(0,Nt.createSlice)({name:"messages",initialState:Yr,reducers:{setMessagedUserList:(e,t)=>{let n=t.payload;if(n===null){e.messagedUserList=null;return}let r=n?.page??0;if(!e.messagedUserList||r===0){e.messagedUserList=n;return}let o=e.messagedUserList?.rows?.data??[],s=n?.rows?.data??[],i=[...o,...s],l=new Map;i.forEach(c=>{c?.chatId&&l.set(c.chatId,c)});let a=Array.from(l.values());e.messagedUserList={...n,rows:{...n.rows,data:a}}},setMessageList:(e,t)=>{let n=t.payload;if(n===null){e.messageList=[];return}let r=n?.page??0;if(!e.messageList?.rows?.data||r===0){e.messageList=n;return}e.messageList={...n,rows:{...n.rows,data:[...n.rows.data,...e.messageList.rows.data]}}},addNewMessage:(e,t)=>{e.messageList?.rows?.data&&e.messageList.rows.data.push(t.payload)},addUserToChatList:(e,t)=>{let n=t.payload;if(!e.messagedUserList){e.messagedUserList={hasMore:!1,rows:{success:!0,status:!0,message:"",data:[n]}};return}let r=e.messagedUserList.rows.data;e.messagedUserList.rows.data=r=r.filter(s=>s?.chatId);let o=r.findIndex(s=>s.chatId===n.chatId);if(o!==-1){let i={...r.splice(o,1)[0],...n};r.unshift(i)}else r.unshift(n)},resetMessageList:e=>{e.messageList=[]},updateUnreadCount:(e,t)=>{let{chatId:n,isActive:r}=t.payload,o=e.messagedUserList?.rows?.data;if(!o)return;let s=o.find(i=>i.chatId===n);s&&(r?s.unreadCount=0:s.unreadCount=(s.unreadCount||0)+1)},resetUnreadCount:(e,t)=>{let n=t.payload,r=e.messagedUserList?.rows?.data;if(!r)return;let o=r.find(s=>s.chatId===n);o&&(o.unreadCount=0)}}}),Ze=e=>async t=>Ce.get(`/api/messages/userList/${e?.userId}?page=${e?.page||0}`).then(n=>(console.log("Fetched messages for userId:",n.data),t(he({...n.data,page:e?.page||0})),n.data)).catch(n=>{let r=n?.response?.data?.message||"Failed to fetch messages";return fe.notifications.show({title:"Message Fetch Failed",message:r,color:"red"}),n}),et=e=>async t=>Ce.get(`/api/messages/${e?.chatId}?page=${e?.page||0}&userId=${e?.userId}`).then(n=>(t(Gr({...n.data,page:e?.page||0})),n.data)).catch(n=>{let r=n?.response?.data?.message||"Failed to fetch messages";return fe.notifications.show({title:"Message Fetch Failed",message:r,color:"red"}),n});var zt=e=>async t=>Ce.delete("/api/messages",{data:{chatId:e?.chatId,userId:e?.userId}}).then(n=>(t(ve()),fe.notifications.show({title:"Messages Deleted",message:"All messages in this chat have been deleted.",color:"green"}),n.data)).catch(n=>{let r=n?.response?.data?.message||"Failed to delete messages";return fe.notifications.show({title:"Message Deletion Failed",message:r,color:"red"}),n}),Dt=()=>async e=>{e(he(null)),e(ve())},{setMessagedUserList:he,setMessageList:Gr,addNewMessage:tt,addUserToChatList:ge,resetMessageList:ve,updateUnreadCount:Ti,resetUnreadCount:Ei}=Lt.actions,Ot=Lt.reducer;var $t=(0,Bt.configureStore)({reducer:{chat:Ot}});function jt({children:e}){return Ht.default.createElement(_t.Provider,{store:$t},e)}var ye=H(require("react"));var Rt=require("socket.io-client");var ce=null,Ut,Q=e=>e?((!ce||Ut!==e)&&(ce&&(ce.disconnect(),ce=null),ce=(0,Rt.io)(Ee.SOCKET_URL,{autoConnect:!1,transports:["websocket"],auth:{apiKey:ie(),userId:e}}),Ut=e),ce):null;function Ft({children:e,userId:t}){return(0,ye.useEffect)(()=>{if(!t)return;let n=Q(t);if(n)return n.connected||(n.connect(),console.log("\u2705 Socket connected for:",t)),()=>{n.connected&&(n.disconnect(),console.log("Socket disconnected for:",t))}},[t]),ye.default.createElement(ye.default.Fragment,null,e)}var O=require("@mantine/core"),br=require("@tabler/icons-react"),wr=require("@mantine/hooks");var se=require("@mantine/core"),qe=require("@tabler/icons-react");var M=H(require("react")),K=require("@tabler/icons-react"),ir=H(require("@tiptap/extension-highlight")),ar=H(require("@tiptap/extension-subscript")),cr=H(require("@tiptap/extension-superscript")),lr=H(require("@tiptap/extension-text-align"));var tn=require("@tiptap/pm/transform"),nn=require("@tiptap/pm/commands"),rn=require("@tiptap/pm/state"),on=require("@tiptap/pm/commands"),sn=require("@tiptap/pm/state"),ln=require("@tiptap/pm/state"),de=require("@tiptap/pm/state"),un=require("@tiptap/pm/model"),X=require("@tiptap/pm/model"),pn=require("@tiptap/pm/state"),_e=require("@tiptap/pm/transform"),oe=require("@tiptap/pm/commands"),fn=require("@tiptap/pm/transform"),hn=require("@tiptap/pm/transform"),gn=require("@tiptap/pm/commands"),vn=require("@tiptap/pm/commands"),xn=require("@tiptap/pm/commands"),bn=require("@tiptap/pm/commands"),wn=require("@tiptap/pm/schema-list"),kn=require("@tiptap/pm/commands"),Sn=require("@tiptap/pm/state"),Tn=require("@tiptap/pm/commands"),En=require("@tiptap/pm/commands"),Cn=require("@tiptap/pm/commands"),In=require("@tiptap/pm/commands"),An=require("@tiptap/pm/commands"),Pn=require("@tiptap/pm/transform"),Qo=require("@tiptap/pm/model"),Nn=require("@tiptap/pm/model"),zn=require("@tiptap/pm/model"),ss=require("@tiptap/pm/model"),is=require("@tiptap/pm/model"),fs=require("@tiptap/pm/state"),st=require("@tiptap/pm/commands"),$n=require("@tiptap/pm/state"),ze=require("@tiptap/pm/state"),Hn=require("@tiptap/pm/schema-list"),je=require("@tiptap/pm/state"),De=require("@tiptap/pm/transform"),le=require("@tiptap/pm/model"),_n=require("@tiptap/pm/state"),jn=require("@tiptap/pm/transform"),Un=require("@tiptap/pm/state"),mt=require("@tiptap/pm/transform"),Rn=require("@tiptap/pm/commands"),Fn=require("@tiptap/pm/schema-list"),$s=require("@tiptap/pm/state"),Hs=require("@tiptap/pm/view"),Vn=require("@tiptap/pm/keymap"),Wn=require("@tiptap/pm/model"),Kn=require("@tiptap/pm/state"),Xn=require("@tiptap/pm/model"),Yn=require("@tiptap/pm/state"),Ue=require("@tiptap/pm/state"),Qn=require("@tiptap/pm/transform"),Re=require("@tiptap/pm/state"),Fe=require("@tiptap/pm/state"),Ve=require("@tiptap/pm/state"),re=require("@tiptap/pm/state"),We=require("@tiptap/pm/state"),Ke=require("@tiptap/pm/state"),Je=require("@tiptap/pm/state"),er=require("@tiptap/pm/transform"),oi=require("@tiptap/pm/state"),fi=require("@tiptap/pm/state"),Qr=Object.defineProperty,it=(e,t)=>{for(var n in t)Qr(e,n,{get:t[n],enumerable:!0})};function He(e){let{state:t,transaction:n}=e,{selection:r}=n,{doc:o}=n,{storedMarks:s}=n;return{...t,apply:t.apply.bind(t),applyTransaction:t.applyTransaction.bind(t),plugins:t.plugins,schema:t.schema,reconfigure:t.reconfigure.bind(t),toJSON:t.toJSON.bind(t),get storedMarks(){return s},get selection(){return r},get doc(){return o},get tr(){return r=n.selection,o=n.doc,s=n.storedMarks,n}}}var at=class{constructor(e){this.editor=e.editor,this.rawCommands=this.editor.extensionManager.commands,this.customState=e.state}get hasCustomState(){return!!this.customState}get state(){return this.customState||this.editor.state}get commands(){let{rawCommands:e,editor:t,state:n}=this,{view:r}=t,{tr:o}=n,s=this.buildProps(o);return Object.fromEntries(Object.entries(e).map(([i,l])=>[i,(...c)=>{let m=l(...c)(s);return!o.getMeta("preventDispatch")&&!this.hasCustomState&&r.dispatch(o),m}]))}get chain(){return()=>this.createChain()}get can(){return()=>this.createCan()}createChain(e,t=!0){let{rawCommands:n,editor:r,state:o}=this,{view:s}=r,i=[],l=!!e,a=e||o.tr,c=()=>(!l&&t&&!a.getMeta("preventDispatch")&&!this.hasCustomState&&s.dispatch(a),i.every(d=>d===!0)),m={...Object.fromEntries(Object.entries(n).map(([d,p])=>[d,(...h)=>{let f=this.buildProps(a,t),g=p(...h)(f);return i.push(g),m}])),run:c};return m}createCan(e){let{rawCommands:t,state:n}=this,r=!1,o=e||n.tr,s=this.buildProps(o,r);return{...Object.fromEntries(Object.entries(t).map(([l,a])=>[l,(...c)=>a(...c)({...s,dispatch:void 0})])),chain:()=>this.createChain(o,r)}}buildProps(e,t=!0){let{rawCommands:n,editor:r,state:o}=this,{view:s}=r,i={tr:e,editor:r,view:s,state:He({state:o,transaction:e}),dispatch:t?()=>{}:void 0,chain:()=>this.createChain(e,t),can:()=>this.createCan(e),get commands(){return Object.fromEntries(Object.entries(n).map(([l,a])=>[l,(...c)=>a(...c)(i)]))}};return i}},en={};it(en,{blur:()=>Zr,clearContent:()=>eo,clearNodes:()=>to,command:()=>no,createParagraphNear:()=>ro,cut:()=>oo,deleteCurrentNode:()=>so,deleteNode:()=>io,deleteRange:()=>ao,deleteSelection:()=>uo,enter:()=>mo,exitCode:()=>po,extendMarkRange:()=>fo,first:()=>ho,focus:()=>yo,forEach:()=>xo,insertContent:()=>bo,insertContentAt:()=>Mo,joinBackward:()=>Eo,joinDown:()=>To,joinForward:()=>Co,joinItemBackward:()=>Io,joinItemForward:()=>Ao,joinTextblockBackward:()=>Po,joinTextblockForward:()=>No,joinUp:()=>So,keyboardShortcut:()=>zo,lift:()=>Do,liftEmptyBlock:()=>Oo,liftListItem:()=>Bo,newlineInCode:()=>$o,resetAttributes:()=>Ho,scrollIntoView:()=>_o,selectAll:()=>jo,selectNodeBackward:()=>Uo,selectNodeForward:()=>Ro,selectParentNode:()=>Fo,selectTextblockEnd:()=>Vo,selectTextblockStart:()=>Wo,setContent:()=>Jo,setMark:()=>gs,setMeta:()=>vs,setNode:()=>ys,setNodeSelection:()=>xs,setTextDirection:()=>bs,setTextSelection:()=>ws,sinkListItem:()=>ks,splitBlock:()=>Ms,splitListItem:()=>Ss,toggleList:()=>Es,toggleMark:()=>Cs,toggleNode:()=>Is,toggleWrap:()=>As,undoInputRule:()=>Ps,unsetAllMarks:()=>Ns,unsetMark:()=>Ls,unsetTextDirection:()=>zs,updateAttributes:()=>Ds,wrapIn:()=>Os,wrapInList:()=>Bs});var Zr=()=>({editor:e,view:t})=>(requestAnimationFrame(()=>{var n;e.isDestroyed||(t.dom.blur(),(n=window?.getSelection())==null||n.removeAllRanges())}),!0),eo=(e=!0)=>({commands:t})=>t.setContent("",{emitUpdate:e}),to=()=>({state:e,tr:t,dispatch:n})=>{let{selection:r}=t,{ranges:o}=r;return n&&o.forEach(({$from:s,$to:i})=>{e.doc.nodesBetween(s.pos,i.pos,(l,a)=>{if(l.type.isText)return;let{doc:c,mapping:m}=t,d=c.resolve(m.map(a)),p=c.resolve(m.map(a+l.nodeSize)),u=d.blockRange(p);if(!u)return;let h=(0,tn.liftTarget)(u);if(l.type.isTextblock){let{defaultType:f}=d.parent.contentMatchAt(d.index());t.setNodeMarkup(u.start,f)}(h||h===0)&&t.lift(u,h)})}),!0},no=e=>t=>e(t),ro=()=>({state:e,dispatch:t})=>(0,nn.createParagraphNear)(e,t),oo=(e,t)=>({editor:n,tr:r})=>{let{state:o}=n,s=o.doc.slice(e.from,e.to);r.deleteRange(e.from,e.to);let i=r.mapping.map(t);return r.insert(i,s.content),r.setSelection(new rn.TextSelection(r.doc.resolve(Math.max(i-1,0)))),!0},so=()=>({tr:e,dispatch:t})=>{let{selection:n}=e,r=n.$anchor.node();if(r.content.size>0)return!1;let o=e.selection.$anchor;for(let s=o.depth;s>0;s-=1)if(o.node(s).type===r.type){if(t){let l=o.before(s),a=o.after(s);e.delete(l,a).scrollIntoView()}return!0}return!1};function F(e,t){if(typeof e=="string"){if(!t.nodes[e])throw Error(`There is no node type named '${e}'. Maybe you forgot to add the extension?`);return t.nodes[e]}return e}var io=e=>({tr:t,state:n,dispatch:r})=>{let o=F(e,n.schema),s=t.selection.$anchor;for(let i=s.depth;i>0;i-=1)if(s.node(i).type===o){if(r){let a=s.before(i),c=s.after(i);t.delete(a,c).scrollIntoView()}return!0}return!1},ao=e=>({tr:t,dispatch:n})=>{let{from:r,to:o}=e;return n&&t.delete(r,o),!0},co=e=>e.content?/^text(\*|\+)/.test(e.content):!1,Vt=(e,t,n)=>{if(!e.parent.isInline||n==="left"&&e.pos>e.start()||n==="right"&&e.pos<e.end())return e.pos;let r=t.nodes[e.parent.type.name].spec;return co(r)?n==="left"?e.start()-1:e.end()+1:e.pos},lo=(e,t,n)=>{let r=Vt(e,n,"left"),o=Vt(t,n,"right");return{from:r,to:o}},uo=()=>({state:e,dispatch:t})=>{let{$from:n,$to:r}=e.selection;if(e.selection.empty)return!1;let{from:o,to:s}=lo(n,r,e.schema);return t&&(e.tr.deleteRange(o,s).scrollIntoView(),t(e.tr)),!0},mo=()=>({commands:e})=>e.keyboardShortcut("Enter"),po=()=>({state:e,dispatch:t})=>(0,on.exitCode)(e,t);function ct(e){return Object.prototype.toString.call(e)==="[object RegExp]"}function Oe(e,t,n={strict:!0}){let r=Object.keys(t);return r.length?r.every(o=>n.strict?t[o]===e[o]:ct(t[o])?t[o].test(e[o]):t[o]===e[o]):!0}function an(e,t,n={}){return e.find(r=>r.type===t&&Oe(Object.fromEntries(Object.keys(n).map(o=>[o,r.attrs[o]])),n))}function Wt(e,t,n={}){return!!an(e,t,n)}function cn(e,t,n){if(!e||!t)return;let r=e.parent.childAfter(e.parentOffset);if((!r.node||!r.node.marks.some(c=>c.type===t))&&(r=e.parent.childBefore(e.parentOffset)),!r.node||!r.node.marks.some(c=>c.type===t))return;if(!n){let c=r.node.marks.find(m=>m.type===t);c&&(n=c.attrs)}if(!an([...r.node.marks],t,n))return;let s=r.index,i=e.start()+r.offset,l=s+1,a=i+r.node.nodeSize;for(;s>0&&Wt([...e.parent.child(s-1).marks],t,n);)s-=1,i-=e.parent.child(s).nodeSize;for(;l<e.parent.childCount&&Wt([...e.parent.child(l).marks],t,n);)a+=e.parent.child(l).nodeSize,l+=1;return{from:i,to:a}}function te(e,t){if(typeof e=="string"){if(!t.marks[e])throw Error(`There is no mark type named '${e}'. Maybe you forgot to add the extension?`);return t.marks[e]}return e}var fo=(e,t)=>({tr:n,state:r,dispatch:o})=>{let s=te(e,r.schema),{doc:i,selection:l}=n,{$from:a,from:c,to:m}=l;if(o){let d=cn(a,s,t);if(d&&d.from<=c&&d.to>=m){let p=sn.TextSelection.create(i,d.from,d.to);n.setSelection(p)}}return!0},ho=e=>t=>{let n=typeof e=="function"?e(t):e;for(let r=0;r<n.length;r+=1)if(n[r](t))return!0;return!1};function dn(e){return e instanceof ln.TextSelection}function ae(e=0,t=0,n=0){return Math.min(Math.max(e,t),n)}function go(e,t=null){if(!t)return null;let n=de.Selection.atStart(e),r=de.Selection.atEnd(e);if(t==="start"||t===!0)return n;if(t==="end")return r;let o=n.from,s=r.to;return t==="all"?de.TextSelection.create(e,ae(0,o,s),ae(e.content.size,o,s)):de.TextSelection.create(e,ae(t,o,s),ae(t,o,s))}function Kt(){return navigator.platform==="Android"||/android/i.test(navigator.userAgent)}function Be(){return["iPad Simulator","iPhone Simulator","iPod Simulator","iPad","iPhone","iPod"].includes(navigator.platform)||navigator.userAgent.includes("Mac")&&"ontouchend"in document}function vo(){return typeof navigator<"u"?/^((?!chrome|android).)*safari/i.test(navigator.userAgent):!1}var yo=(e=null,t={})=>({editor:n,view:r,tr:o,dispatch:s})=>{t={scrollIntoView:!0,...t};let i=()=>{(Be()||Kt())&&r.dom.focus(),vo()&&!Be()&&!Kt()&&r.dom.focus({preventScroll:!0}),requestAnimationFrame(()=>{n.isDestroyed||(r.focus(),t?.scrollIntoView&&n.commands.scrollIntoView())})};try{if(r.hasFocus()&&e===null||e===!1)return!0}catch{return!1}if(s&&e===null&&!dn(n.state.selection))return i(),!0;let l=go(o.doc,e)||n.state.selection,a=n.state.selection.eq(l);return s&&(a||o.setSelection(l),a&&o.storedMarks&&o.setStoredMarks(o.storedMarks),i()),!0},xo=(e,t)=>n=>e.every((r,o)=>t(r,{...n,index:o})),bo=(e,t)=>({tr:n,commands:r})=>r.insertContentAt({from:n.selection.from,to:n.selection.to},e,t),mn=e=>{let t=e.childNodes;for(let n=t.length-1;n>=0;n-=1){let r=t[n];r.nodeType===3&&r.nodeValue&&/^(\n\s\s|\n)$/.test(r.nodeValue)?e.removeChild(r):r.nodeType===1&&mn(r)}return e};function Ie(e){if(typeof window>"u")throw new Error("[tiptap error]: there is no window object available, so this function cannot be used");let t=`<body>${e}</body>`,n=new window.DOMParser().parseFromString(t,"text/html").body;return mn(n)}function we(e,t,n){if(e instanceof X.Node||e instanceof X.Fragment)return e;n={slice:!0,parseOptions:{},...n};let r=typeof e=="object"&&e!==null,o=typeof e=="string";if(r)try{if(Array.isArray(e)&&e.length>0)return X.Fragment.fromArray(e.map(l=>t.nodeFromJSON(l)));let i=t.nodeFromJSON(e);return n.errorOnInvalidContent&&i.check(),i}catch(s){if(n.errorOnInvalidContent)throw new Error("[tiptap error]: Invalid JSON content",{cause:s});return console.warn("[tiptap warn]: Invalid content.","Passed value:",e,"Error:",s),we("",t,n)}if(o){if(n.errorOnInvalidContent){let i=!1,l="",a=new X.Schema({topNode:t.spec.topNode,marks:t.spec.marks,nodes:t.spec.nodes.append({__tiptap__private__unknown__catch__all__node:{content:"inline*",group:"block",parseDOM:[{tag:"*",getAttrs:c=>(i=!0,l=typeof c=="string"?c:c.outerHTML,null)}]}})});if(n.slice?X.DOMParser.fromSchema(a).parseSlice(Ie(e),n.parseOptions):X.DOMParser.fromSchema(a).parse(Ie(e),n.parseOptions),n.errorOnInvalidContent&&i)throw new Error("[tiptap error]: Invalid HTML content",{cause:new Error(`Invalid element found: ${l}`)})}let s=X.DOMParser.fromSchema(t);return n.slice?s.parseSlice(Ie(e),n.parseOptions).content:s.parse(Ie(e),n.parseOptions)}return we("",t,n)}function wo(e,t,n){let r=e.steps.length-1;if(r<t)return;let o=e.steps[r];if(!(o instanceof _e.ReplaceStep||o instanceof _e.ReplaceAroundStep))return;let s=e.mapping.maps[r],i=0;s.forEach((l,a,c,m)=>{i===0&&(i=m)}),e.setSelection(pn.Selection.near(e.doc.resolve(i),n))}var ko=e=>!("type"in e),Mo=(e,t,n)=>({tr:r,dispatch:o,editor:s})=>{var i;if(o){n={parseOptions:s.options.parseOptions,updateSelection:!0,applyInputRules:!1,applyPasteRules:!1,...n};let l,a=g=>{s.emit("contentError",{editor:s,error:g,disableCollaboration:()=>{"collaboration"in s.storage&&typeof s.storage.collaboration=="object"&&s.storage.collaboration&&(s.storage.collaboration.isDisabled=!0)}})},c={preserveWhitespace:"full",...n.parseOptions};if(!n.errorOnInvalidContent&&!s.options.enableContentCheck&&s.options.emitContentError)try{we(t,s.schema,{parseOptions:c,errorOnInvalidContent:!0})}catch(g){a(g)}try{l=we(t,s.schema,{parseOptions:c,errorOnInvalidContent:(i=n.errorOnInvalidContent)!=null?i:s.options.enableContentCheck})}catch(g){return a(g),!1}let{from:m,to:d}=typeof e=="number"?{from:e,to:e}:{from:e.from,to:e.to},p=!0,u=!0;if((ko(l)?l:[l]).forEach(g=>{g.check(),p=p?g.isText&&g.marks.length===0:!1,u=u?g.isBlock:!1}),m===d&&u){let{parent:g}=r.doc.resolve(m);g.isTextblock&&!g.type.spec.code&&!g.childCount&&(m-=1,d+=1)}let f;if(p){if(Array.isArray(t))f=t.map(g=>g.text||"").join("");else if(t instanceof un.Fragment){let g="";t.forEach(v=>{v.text&&(g+=v.text)}),f=g}else typeof t=="object"&&t&&t.text?f=t.text:f=t;r.insertText(f,m,d)}else{f=l;let g=r.doc.resolve(m),v=g.node(),y=g.parentOffset===0,S=v.isText||v.isTextblock,C=v.content.size>0;y&&S&&C&&u&&(m=Math.max(0,m-1)),r.replaceWith(m,d,f)}n.updateSelection&&wo(r,r.steps.length-1,-1),n.applyInputRules&&r.setMeta("applyInputRules",{from:m,text:f}),n.applyPasteRules&&r.setMeta("applyPasteRules",{from:m,text:f})}return!0},So=()=>({state:e,dispatch:t})=>(0,oe.joinUp)(e,t),To=()=>({state:e,dispatch:t})=>(0,oe.joinDown)(e,t),Eo=()=>({state:e,dispatch:t})=>(0,oe.joinBackward)(e,t),Co=()=>({state:e,dispatch:t})=>(0,oe.joinForward)(e,t),Io=()=>({state:e,dispatch:t,tr:n})=>{try{let r=(0,fn.joinPoint)(e.doc,e.selection.$from.pos,-1);return r==null?!1:(n.join(r,2),t&&t(n),!0)}catch{return!1}},Ao=()=>({state:e,dispatch:t,tr:n})=>{try{let r=(0,hn.joinPoint)(e.doc,e.selection.$from.pos,1);return r==null?!1:(n.join(r,2),t&&t(n),!0)}catch{return!1}},Po=()=>({state:e,dispatch:t})=>(0,gn.joinTextblockBackward)(e,t),No=()=>({state:e,dispatch:t})=>(0,vn.joinTextblockForward)(e,t);function yn(){return typeof navigator<"u"?/Mac/.test(navigator.platform):!1}function Lo(e){let t=e.split(/-(?!$)/),n=t[t.length-1];n==="Space"&&(n=" ");let r,o,s,i;for(let l=0;l<t.length-1;l+=1){let a=t[l];if(/^(cmd|meta|m)$/i.test(a))i=!0;else if(/^a(lt)?$/i.test(a))r=!0;else if(/^(c|ctrl|control)$/i.test(a))o=!0;else if(/^s(hift)?$/i.test(a))s=!0;else if(/^mod$/i.test(a))Be()||yn()?i=!0:o=!0;else throw new Error(`Unrecognized modifier name: ${a}`)}return r&&(n=`Alt-${n}`),o&&(n=`Ctrl-${n}`),i&&(n=`Meta-${n}`),s&&(n=`Shift-${n}`),n}var zo=e=>({editor:t,view:n,tr:r,dispatch:o})=>{let s=Lo(e).split(/-(?!$)/),i=s.find(c=>!["Alt","Ctrl","Meta","Shift"].includes(c)),l=new KeyboardEvent("keydown",{key:i==="Space"?" ":i,altKey:s.includes("Alt"),ctrlKey:s.includes("Ctrl"),metaKey:s.includes("Meta"),shiftKey:s.includes("Shift"),bubbles:!0,cancelable:!0}),a=t.captureTransaction(()=>{n.someProp("handleKeyDown",c=>c(n,l))});return a?.steps.forEach(c=>{let m=c.map(r.mapping);m&&o&&r.maybeStep(m)}),!0};function lt(e,t,n={}){let{from:r,to:o,empty:s}=e.selection,i=t?F(t,e.schema):null,l=[];e.doc.nodesBetween(r,o,(d,p)=>{if(d.isText)return;let u=Math.max(r,p),h=Math.min(o,p+d.nodeSize);l.push({node:d,from:u,to:h})});let a=o-r,c=l.filter(d=>i?i.name===d.node.type.name:!0).filter(d=>Oe(d.node.attrs,n,{strict:!1}));return s?!!c.length:c.reduce((d,p)=>d+p.to-p.from,0)>=a}var Do=(e,t={})=>({state:n,dispatch:r})=>{let o=F(e,n.schema);return lt(n,o,t)?(0,xn.lift)(n,r):!1},Oo=()=>({state:e,dispatch:t})=>(0,bn.liftEmptyBlock)(e,t),Bo=e=>({state:t,dispatch:n})=>{let r=F(e,t.schema);return(0,wn.liftListItem)(r)(t,n)},$o=()=>({state:e,dispatch:t})=>(0,kn.newlineInCode)(e,t);function Mn(e,t){return t.nodes[e]?"node":t.marks[e]?"mark":null}function Jt(e,t){let n=typeof t=="string"?[t]:t;return Object.keys(e).reduce((r,o)=>(n.includes(o)||(r[o]=e[o]),r),{})}var Ho=(e,t)=>({tr:n,state:r,dispatch:o})=>{let s=null,i=null,l=Mn(typeof e=="string"?e:e.name,r.schema);if(!l)return!1;l==="node"&&(s=F(e,r.schema)),l==="mark"&&(i=te(e,r.schema));let a=!1;return n.selection.ranges.forEach(c=>{r.doc.nodesBetween(c.$from.pos,c.$to.pos,(m,d)=>{s&&s===m.type&&(a=!0,o&&n.setNodeMarkup(d,void 0,Jt(m.attrs,t))),i&&m.marks.length&&m.marks.forEach(p=>{i===p.type&&(a=!0,o&&n.addMark(d,d+m.nodeSize,i.create(Jt(p.attrs,t))))})})}),a},_o=()=>({tr:e,dispatch:t})=>(t&&e.scrollIntoView(),!0),jo=()=>({tr:e,dispatch:t})=>{if(t){let n=new Sn.AllSelection(e.doc);e.setSelection(n)}return!0},Uo=()=>({state:e,dispatch:t})=>(0,Tn.selectNodeBackward)(e,t),Ro=()=>({state:e,dispatch:t})=>(0,En.selectNodeForward)(e,t),Fo=()=>({state:e,dispatch:t})=>(0,Cn.selectParentNode)(e,t),Vo=()=>({state:e,dispatch:t})=>(0,In.selectTextblockEnd)(e,t),Wo=()=>({state:e,dispatch:t})=>(0,An.selectTextblockStart)(e,t);function Ko(e,t,n={},r={}){return we(e,t,{slice:!1,parseOptions:n,errorOnInvalidContent:r.errorOnInvalidContent})}var Jo=(e,{errorOnInvalidContent:t,emitUpdate:n=!0,parseOptions:r={}}={})=>({editor:o,tr:s,dispatch:i,commands:l})=>{let{doc:a}=s;if(r.preserveWhitespace!=="full"){let c=Ko(e,o.schema,r,{errorOnInvalidContent:t??o.options.enableContentCheck});return i&&s.replaceWith(0,a.content.size,c).setMeta("preventUpdate",!n),!0}return i&&s.setMeta("preventUpdate",!n),l.insertContentAt({from:0,to:a.content.size},e,{parseOptions:r,errorOnInvalidContent:t??o.options.enableContentCheck})};function qo(e,t){let n=te(t,e.schema),{from:r,to:o,empty:s}=e.selection,i=[];s?(e.storedMarks&&i.push(...e.storedMarks),i.push(...e.selection.$head.marks())):e.doc.nodesBetween(r,o,a=>{i.push(...a.marks)});let l=i.find(a=>a.type.name===n.name);return l?{...l.attrs}:{}}function Xo(e,t){let n=new Pn.Transform(e);return t.forEach(r=>{r.steps.forEach(o=>{n.step(o)})}),n}function Yo(e){for(let t=0;t<e.edgeCount;t+=1){let{type:n}=e.edge(t);if(n.isTextblock&&!n.hasRequiredAttrs())return n}return null}function Go(e,t){for(let n=e.depth;n>0;n-=1){let r=e.node(n);if(t(r))return{pos:n>0?e.before(n):0,start:e.start(n),depth:n,node:r}}}function dt(e){return t=>Go(t.$from,e)}function x(e,t,n){return e.config[t]===void 0&&e.parent?x(e.parent,t,n):typeof e.config[t]=="function"?e.config[t].bind({...n,parent:e.parent?x(e.parent,t,n):null}):e.config[t]}function ut(e){return e.map(t=>{let n={name:t.name,options:t.options,storage:t.storage},r=x(t,"addExtensions",n);return r?[t,...ut(r())]:t}).flat(10)}function Ln(e,t){let n=Nn.DOMSerializer.fromSchema(t).serializeFragment(e),o=document.implementation.createHTMLDocument().createElement("div");return o.appendChild(n),o.innerHTML}function Zo(e){return typeof e=="function"}function B(e,t=void 0,...n){return Zo(e)?t?e.bind(t)(...n):e(...n):e}function es(e={}){return Object.keys(e).length===0&&e.constructor===Object}function ue(e){let t=e.filter(o=>o.type==="extension"),n=e.filter(o=>o.type==="node"),r=e.filter(o=>o.type==="mark");return{baseExtensions:t,nodeExtensions:n,markExtensions:r}}function Dn(e){let t=[],{nodeExtensions:n,markExtensions:r}=ue(e),o=[...n,...r],s={default:null,validate:void 0,rendered:!0,renderHTML:null,parseHTML:null,keepOnSplit:!0,isRequired:!1},i=n.filter(c=>c.name!=="text").map(c=>c.name),l=r.map(c=>c.name),a=[...i,...l];return e.forEach(c=>{let m={name:c.name,options:c.options,storage:c.storage,extensions:o},d=x(c,"addGlobalAttributes",m);if(!d)return;d().forEach(u=>{let h;Array.isArray(u.types)?h=u.types:u.types==="*"?h=a:u.types==="nodes"?h=i:u.types==="marks"?h=l:h=[],h.forEach(f=>{Object.entries(u.attributes).forEach(([g,v])=>{t.push({type:f,name:g,attribute:{...s,...v}})})})})}),o.forEach(c=>{let m={name:c.name,options:c.options,storage:c.storage},d=x(c,"addAttributes",m);if(!d)return;let p=d();Object.entries(p).forEach(([u,h])=>{let f={...s,...h};typeof f?.default=="function"&&(f.default=f.default()),f?.isRequired&&f?.default===void 0&&delete f.default,t.push({type:c.name,name:u,attribute:f})})}),t}function ts(e){let t=[],n="",r=!1,o=!1,s=0,i=e.length;for(let l=0;l<i;l+=1){let a=e[l];if(a==="'"&&!o){r=!r,n+=a;continue}if(a==='"'&&!r){o=!o,n+=a;continue}if(!r&&!o){if(a==="("){s+=1,n+=a;continue}if(a===")"&&s>0){s-=1,n+=a;continue}if(a===";"&&s===0){t.push(n),n="";continue}}n+=a}return n&&t.push(n),t}function qt(e){let t=[],n=ts(e||""),r=n.length;for(let o=0;o<r;o+=1){let s=n[o],i=s.indexOf(":");if(i===-1)continue;let l=s.slice(0,i).trim(),a=s.slice(i+1).trim();l&&a&&t.push([l,a])}return t}function ke(...e){return e.filter(t=>!!t).reduce((t,n)=>{let r={...t};return Object.entries(n).forEach(([o,s])=>{if(!r[o]){r[o]=s;return}if(o==="class"){let l=s?String(s).split(" "):[],a=r[o]?r[o].split(" "):[],c=l.filter(m=>!a.includes(m));r[o]=[...a,...c].join(" ")}else if(o==="style"){let l=new Map([...qt(r[o]),...qt(s)]);r[o]=Array.from(l.entries()).map(([a,c])=>`${a}: ${c}`).join("; ")}else r[o]=s}),r},{})}function $e(e,t){return t.filter(n=>n.type===e.type.name).filter(n=>n.attribute.rendered).map(n=>n.attribute.renderHTML?n.attribute.renderHTML(e.attrs)||{}:{[n.name]:e.attrs[n.name]}).reduce((n,r)=>ke(n,r),{})}function ns(e){return typeof e!="string"?e:e.match(/^[+-]?(?:\d*\.)?\d+$/)?Number(e):e==="true"?!0:e==="false"?!1:e}function Xt(e,t){return"style"in e?e:{...e,getAttrs:n=>{let r=e.getAttrs?e.getAttrs(n):e.attrs;if(r===!1)return!1;let o=t.reduce((s,i)=>{let l=i.attribute.parseHTML?i.attribute.parseHTML(n):ns(n.getAttribute(i.name));return l==null?s:{...s,[i.name]:l}},{});return{...r,...o}}}}function Yt(e){return Object.fromEntries(Object.entries(e).filter(([t,n])=>t==="attrs"&&es(n)?!1:n!=null))}function Gt(e){var t,n;let r={};return!((t=e?.attribute)!=null&&t.isRequired)&&"default"in(e?.attribute||{})&&(r.default=e.attribute.default),((n=e?.attribute)==null?void 0:n.validate)!==void 0&&(r.validate=e.attribute.validate),[e.name,r]}function rs(e,t){var n;let r=Dn(e),{nodeExtensions:o,markExtensions:s}=ue(e),i=(n=o.find(c=>x(c,"topNode")))==null?void 0:n.name,l=Object.fromEntries(o.map(c=>{let m=r.filter(v=>v.type===c.name),d={name:c.name,options:c.options,storage:c.storage,editor:t},p=e.reduce((v,y)=>{let S=x(y,"extendNodeSchema",d);return{...v,...S?S(c):{}}},{}),u=Yt({...p,content:B(x(c,"content",d)),marks:B(x(c,"marks",d)),group:B(x(c,"group",d)),inline:B(x(c,"inline",d)),atom:B(x(c,"atom",d)),selectable:B(x(c,"selectable",d)),draggable:B(x(c,"draggable",d)),code:B(x(c,"code",d)),whitespace:B(x(c,"whitespace",d)),linebreakReplacement:B(x(c,"linebreakReplacement",d)),defining:B(x(c,"defining",d)),isolating:B(x(c,"isolating",d)),attrs:Object.fromEntries(m.map(Gt))}),h=B(x(c,"parseHTML",d));h&&(u.parseDOM=h.map(v=>Xt(v,m)));let f=x(c,"renderHTML",d);f&&(u.toDOM=v=>f({node:v,HTMLAttributes:$e(v,m)}));let g=x(c,"renderText",d);return g&&(u.toText=g),[c.name,u]})),a=Object.fromEntries(s.map(c=>{let m=r.filter(g=>g.type===c.name),d={name:c.name,options:c.options,storage:c.storage,editor:t},p=e.reduce((g,v)=>{let y=x(v,"extendMarkSchema",d);return{...g,...y?y(c):{}}},{}),u=Yt({...p,inclusive:B(x(c,"inclusive",d)),excludes:B(x(c,"excludes",d)),group:B(x(c,"group",d)),spanning:B(x(c,"spanning",d)),code:B(x(c,"code",d)),attrs:Object.fromEntries(m.map(Gt))}),h=B(x(c,"parseHTML",d));h&&(u.parseDOM=h.map(g=>Xt(g,m)));let f=x(c,"renderHTML",d);return f&&(u.toDOM=g=>f({mark:g,HTMLAttributes:$e(g,m)})),[c.name,u]}));return new zn.Schema({topNode:i,nodes:l,marks:a})}function os(e){let t=e.filter((n,r)=>e.indexOf(n)!==r);return Array.from(new Set(t))}function be(e){return e.sort((n,r)=>{let o=x(n,"priority")||100,s=x(r,"priority")||100;return o>s?-1:o<s?1:0})}function On(e){let t=be(ut(e)),n=os(t.map(r=>r.name));return n.length&&console.warn(`[tiptap warn]: Duplicate extension names found: [${n.map(r=>`'${r}'`).join(", ")}]. This can lead to issues.`),t}function as(e,t,n){let{from:r,to:o}=t,{blockSeparator:s=`
|
|
2
2
|
|
|
3
|
-
`,textSerializers:i={}}=n||{},c="";return e.nodesBetween(r,o,(a,l,p,d)=>{var m;a.isBlock&&l>r&&(c+=s);let u=i?.[a.type.name];if(u)return p&&(c+=u({node:a,pos:l,parent:p,index:d,range:t})),!1;a.isText&&(c+=(m=a?.text)==null?void 0:m.slice(Math.max(r,l)-l,o-l))}),c}function ss(e){return Object.fromEntries(Object.entries(e.nodes).filter(([,t])=>t.spec.toText).map(([t,n])=>[t,n.spec.toText]))}function is(e,t=JSON.stringify){let n={};return e.filter(r=>{let o=t(r);return Object.prototype.hasOwnProperty.call(n,o)?!1:n[o]=!0})}function as(e){let t=is(e);return t.length===1?t:t.filter((n,r)=>!t.filter((s,i)=>i!==r).some(s=>n.oldRange.from>=s.oldRange.from&&n.oldRange.to<=s.oldRange.to&&n.newRange.from>=s.newRange.from&&n.newRange.to<=s.newRange.to))}function cs(e){let{mapping:t,steps:n}=e,r=[];return t.maps.forEach((o,s)=>{let i=[];if(o.ranges.length)o.forEach((c,a)=>{i.push({from:c,to:a})});else{let{from:c,to:a}=n[s];if(c===void 0||a===void 0)return;i.push({from:c,to:a})}i.forEach(({from:c,to:a})=>{let l=t.slice(s).map(c,-1),p=t.slice(s).map(a),d=t.invert().map(l,-1),m=t.invert().map(p);r.push({oldRange:{from:d,to:m},newRange:{from:l,to:p}})})}),as(r)}function xe(e,t){return t.nodes[e]||t.marks[e]||null}function Pe(e,t,n){return Object.fromEntries(Object.entries(n).filter(([r])=>{let o=e.find(s=>s.type===t&&s.name===r);return o?o.attribute.keepOnSplit:!1}))}var ls=(e,t=500)=>{let n="",r=e.parentOffset;return e.parent.nodesBetween(Math.max(0,r-t),r,(o,s,i,c)=>{var a,l;let p=((l=(a=o.type.spec).toText)==null?void 0:l.call(a,{node:o,pos:s,parent:i,index:c}))||o.textContent||"%leaf%";n+=o.isAtom&&!o.isText?p:p.slice(0,Math.max(0,r-s))}),n};function ds(e,t,n={}){let{empty:r,ranges:o}=e.selection,s=t?ee(t,e.schema):null;if(r)return!!(e.storedMarks||e.selection.$from.marks()).filter(d=>s?s.name===d.type.name:!0).find(d=>De(d.attrs,n,{strict:!1}));let i=0,c=[];if(o.forEach(({$from:d,$to:m})=>{let u=d.pos,h=m.pos;e.doc.nodesBetween(u,h,(f,g)=>{if(s&&f.inlineContent&&!f.type.allowsMarkType(s))return!1;if(!f.isText&&!f.marks.length)return;let v=Math.max(u,g),y=Math.min(h,g+f.nodeSize),I=y-v;i+=I,c.push(...f.marks.map(A=>({mark:A,from:v,to:y})))})}),i===0)return!1;let a=c.filter(d=>s?s.name===d.mark.type.name:!0).filter(d=>De(d.mark.attrs,n,{strict:!1})).reduce((d,m)=>d+m.to-m.from,0),l=c.filter(d=>s?d.mark.type!==s&&d.mark.type.excludes(s):!0).reduce((d,m)=>d+m.to-m.from,0);return(a>0?a+l:a)>=i}function Gt(e,t){return Array.isArray(t)?t.some(n=>(typeof n=="string"?n:n.name)===e.name):t}function et(e,t){let{nodeExtensions:n}=ue(t),r=n.find(i=>i.name===e);if(!r)return!1;let o={name:r.name,options:r.options,storage:r.storage},s=O(b(r,"group",o));return typeof s!="string"?!1:s.split(" ").includes("list")}function On(e,{checkChildren:t=!0,ignoreWhitespace:n=!1}={}){var r;if(n){if(e.type.name==="hardBreak")return!0;if(e.isText)return!/\S/.test((r=e.text)!=null?r:"")}if(e.isText)return!e.text;if(e.isAtom||e.isLeaf)return!1;if(e.content.childCount===0)return!0;if(t){let o=!0;return e.content.forEach(s=>{o!==!1&&(On(s,{ignoreWhitespace:n,checkChildren:t})||(o=!1))}),o}return!1}function ms(e,t,n){var r;let{selection:o}=t,s=null;if(ln(o)&&(s=o.$cursor),s){let c=(r=e.storedMarks)!=null?r:s.marks();return s.parent.type.allowsMarkType(n)&&(!!n.isInSet(c)||!c.some(l=>l.type.excludes(n)))}let{ranges:i}=o;return i.some(({$from:c,$to:a})=>{let l=c.depth===0?e.doc.inlineContent&&e.doc.type.allowsMarkType(n):!1;return e.doc.nodesBetween(c.pos,a.pos,(p,d,m)=>{if(l)return!1;if(p.isInline){let u=!m||m.type.allowsMarkType(n),h=!!n.isInSet(p.marks)||!p.marks.some(f=>f.type.excludes(n));l=u&&h}return!l}),l})}var ps=(e,t={})=>({tr:n,state:r,dispatch:o})=>{let{selection:s}=n,{empty:i,ranges:c}=s,a=ee(e,r.schema);if(o)if(i){let l=Wo(r,a);n.addStoredMark(a.create({...l,...t}))}else c.forEach(l=>{let p=l.$from.pos,d=l.$to.pos;r.doc.nodesBetween(p,d,(m,u)=>{let h=Math.max(u,p),f=Math.min(u+m.nodeSize,d);m.marks.find(v=>v.type===a)?m.marks.forEach(v=>{a===v.type&&n.addMark(h,f,a.create({...v.attrs,...t}))}):n.addMark(h,f,a.create(t))})});return ms(r,n,a)},fs=(e,t)=>({tr:n})=>(n.setMeta(e,t),!0),hs=(e,t={})=>({state:n,dispatch:r,chain:o})=>{let s=F(e,n.schema),i;return n.selection.$anchor.sameParent(n.selection.$head)&&(i=n.selection.$anchor.parent.attrs),s.isTextblock?o().command(({commands:c})=>(0,rt.setBlockType)(s,{...i,...t})(n)?!0:c.clearNodes()).command(({state:c})=>(0,rt.setBlockType)(s,{...i,...t})(c,r)).run():(console.warn('[tiptap warn]: Currently "setNode()" only supports text block nodes.'),!1)},gs=e=>({tr:t,dispatch:n})=>{if(n){let{doc:r}=t,o=ae(e,0,r.content.size),s=Bn.NodeSelection.create(r,o);t.setSelection(s)}return!0},vs=(e,t)=>({tr:n,state:r,dispatch:o})=>{let{selection:s}=r,i,c;return typeof t=="number"?(i=t,c=t):t&&"from"in t&&"to"in t?(i=t.from,c=t.to):(i=s.from,c=s.to),o&&n.doc.nodesBetween(i,c,(a,l)=>{a.isText||n.setNodeMarkup(l,void 0,{...a.attrs,dir:e})}),!0},ys=e=>({tr:t,dispatch:n})=>{if(n){let{doc:r}=t,{from:o,to:s}=typeof e=="number"?{from:e,to:e}:e,i=Ne.TextSelection.atStart(r).from,c=Ne.TextSelection.atEnd(r).to,a=ae(o,i,c),l=ae(s,i,c),p=Ne.TextSelection.create(r,a,l);t.setSelection(p)}return!0},xs=e=>({state:t,dispatch:n})=>{let r=F(e,t.schema);return(0,$n.sinkListItem)(r)(t,n)};function Qt(e,t){let n=e.storedMarks||e.selection.$to.parentOffset&&e.selection.$from.marks();if(n){let r=n.filter(o=>t?.includes(o.type.name));e.tr.ensureMarks(r)}}var bs=({keepMarks:e=!0}={})=>({tr:t,state:n,dispatch:r,editor:o})=>{let{selection:s,doc:i}=t,{$from:c,$to:a}=s,l=o.extensionManager.attributes,p=Pe(l,c.node().type.name,c.node().attrs);if(s instanceof He.NodeSelection&&s.node.isBlock)return!c.parentOffset||!(0,Le.canSplit)(i,c.pos)?!1:(r&&(e&&Qt(n,o.extensionManager.splittableMarks),t.split(c.pos).scrollIntoView()),!0);if(!c.parent.isBlock)return!1;let d=a.parentOffset===a.parent.content.size,m=c.depth===0?void 0:Jo(c.node(-1).contentMatchAt(c.indexAfter(-1))),u=d&&m?[{type:m,attrs:p}]:void 0,h=(0,Le.canSplit)(t.doc,t.mapping.map(c.pos),1,u);if(!u&&!h&&(0,Le.canSplit)(t.doc,t.mapping.map(c.pos),1,m?[{type:m}]:void 0)&&(h=!0,u=m?[{type:m,attrs:p}]:void 0),r){if(h&&(s instanceof He.TextSelection&&t.deleteSelection(),t.split(t.mapping.map(c.pos),1,u),m&&!d&&!c.parentOffset&&c.parent.type!==m)){let f=t.mapping.map(c.before()),g=t.doc.resolve(f);c.node(-1).canReplaceWith(g.index(),g.index()+1,m)&&t.setNodeMarkup(t.mapping.map(c.before()),m)}e&&Qt(n,o.extensionManager.splittableMarks),t.scrollIntoView()}return h},ws=(e,t={})=>({tr:n,state:r,dispatch:o,editor:s})=>{var i;let c=F(e,r.schema),{$from:a,$to:l}=r.selection,p=r.selection.node;if(p&&p.isBlock||a.depth<2||!a.sameParent(l))return!1;let d=a.node(-1);if(d.type!==c)return!1;let m=s.extensionManager.attributes;if(a.parent.content.size===0&&a.node(-1).childCount===a.indexAfter(-1)){if(a.depth===2||a.node(-3).type!==c||a.index(-2)!==a.node(-2).childCount-1)return!1;if(o){let v=le.Fragment.empty,y=a.index(-1)?1:a.index(-2)?2:3;for(let T=a.depth-y;T>=a.depth-3;T-=1)v=le.Fragment.from(a.node(T).copy(v));let I=a.indexAfter(-1)<a.node(-2).childCount?1:a.indexAfter(-2)<a.node(-3).childCount?2:3,A={...Pe(m,a.node().type.name,a.node().attrs),...t},k=((i=c.contentMatch.defaultType)==null?void 0:i.createAndFill(A))||void 0;v=v.append(le.Fragment.from(c.createAndFill(null,k)||void 0));let E=a.before(a.depth-(y-1));n.replace(E,a.after(-I),new le.Slice(v,4-y,0));let C=-1;n.doc.nodesBetween(E,n.doc.content.size,(T,L)=>{if(C>-1)return!1;T.isTextblock&&T.content.size===0&&(C=L+1)}),C>-1&&n.setSelection(Hn.TextSelection.near(n.doc.resolve(C))),n.scrollIntoView()}return!0}let u=l.pos===a.end()?d.contentMatchAt(0).defaultType:null,h={...Pe(m,d.type.name,d.attrs),...t},f={...Pe(m,a.node().type.name,a.node().attrs),...t};n.delete(a.pos,l.pos);let g=u?[{type:c,attrs:h},{type:u,attrs:f}]:[{type:c,attrs:h}];if(!(0,_n.canSplit)(n.doc,a.pos,2))return!1;if(o){let{selection:v,storedMarks:y}=r,{splittableMarks:I}=s.extensionManager,A=y||v.$to.parentOffset&&v.$from.marks();if(n.split(a.pos,2,g).scrollIntoView(),!A||!o)return!0;let k=A.filter(E=>I.includes(E.type.name));n.ensureMarks(k)}return!0},tt=(e,t)=>{let n=ct(i=>i.type===t)(e.selection);if(!n)return!0;let r=e.doc.resolve(Math.max(0,n.pos-1)).before(n.depth);if(r===void 0)return!0;let o=e.doc.nodeAt(r);return n.node.type===o?.type&&(0,dt.canJoin)(e.doc,n.pos)&&e.join(n.pos),!0},nt=(e,t)=>{let n=ct(i=>i.type===t)(e.selection);if(!n)return!0;let r=e.doc.resolve(n.start).after(n.depth);if(r===void 0)return!0;let o=e.doc.nodeAt(r);return n.node.type===o?.type&&(0,dt.canJoin)(e.doc,r)&&e.join(r),!0};function ks(e){let t=e.doc,n=t.firstChild;if(!n)return null;let r=t.resolve(1),o=t.resolve(n.nodeSize-1);return jn.TextSelection.between(r,o)}var Ms=(e,t,n,r={})=>({editor:o,tr:s,state:i,dispatch:c,chain:a,commands:l,can:p})=>{let{extensions:d,splittableMarks:m}=o.extensionManager,u=F(e,i.schema),h=F(t,i.schema),{selection:f,storedMarks:g}=i,{$from:v,$to:y}=f,I=v.blockRange(y),A=g||f.$to.parentOffset&&f.$from.marks();if(!I)return!1;let k=ct($=>et($.type.name,d))(f),E=f.from===0&&f.to===i.doc.content.size,C=i.doc.content.content,T=C.length===1?C[0]:null,L=E&&T&&et(T.type.name,d)?{node:T,pos:0,depth:0}:null,N=k??L,D=!!k&&I.depth>=1&&I.depth-k.depth<=1,K=!!L;if((D||K)&&N){if(N.node.type===u)return E&&K?a().command(({tr:$,dispatch:R})=>{let U=ks($);return U?($.setSelection(U),R&&R($),!0):!1}).liftListItem(h).run():l.liftListItem(h);if(et(N.node.type.name,d)&&u.validContent(N.node.content))return a().command(()=>(s.setNodeMarkup(N.pos,u),!0)).command(()=>tt(s,u)).command(()=>nt(s,u)).run()}return!n||!A||!c?a().command(()=>p().wrapInList(u,r)?!0:l.clearNodes()).wrapInList(u,r).command(()=>tt(s,u)).command(()=>nt(s,u)).run():a().command(()=>{let $=p().wrapInList(u,r),R=A.filter(U=>m.includes(U.type.name));return s.ensureMarks(R),$?!0:l.clearNodes()}).wrapInList(u,r).command(()=>tt(s,u)).command(()=>nt(s,u)).run()},Ss=(e,t={},n={})=>({state:r,commands:o})=>{let{extendEmptyMarkRange:s=!1}=n,i=ee(e,r.schema);return ds(r,i,t)?o.unsetMark(i,{extendEmptyMarkRange:s}):o.setMark(i,t)},Ts=(e,t,n={})=>({state:r,commands:o})=>{let s=F(e,r.schema),i=F(t,r.schema),c=at(r,s,n),a;return r.selection.$anchor.sameParent(r.selection.$head)&&(a=r.selection.$anchor.parent.attrs),c?o.setNode(i,a):o.setNode(s,{...a,...n})},Es=(e,t={})=>({state:n,commands:r})=>{let o=F(e,n.schema);return at(n,o,t)?r.lift(o):r.wrapIn(o,t)},Cs=()=>({state:e,dispatch:t})=>{let n=e.plugins;for(let r=0;r<n.length;r+=1){let o=n[r],s;if(o.spec.isInputRules&&(s=o.getState(e))){if(t){let i=e.tr,c=s.transform;for(let a=c.steps.length-1;a>=0;a-=1)i.step(c.steps[a].invert(c.docs[a]));if(s.text){let a=i.doc.resolve(s.from).marks();i.replaceWith(s.from,s.to,e.schema.text(s.text,a))}else i.delete(s.from,s.to)}return!0}}return!1},Is=()=>({tr:e,dispatch:t})=>{let{selection:n}=e,{empty:r,ranges:o}=n;return r||t&&o.forEach(s=>{e.removeMark(s.$from.pos,s.$to.pos)}),!0},As=(e,t={})=>({tr:n,state:r,dispatch:o})=>{var s;let{extendEmptyMarkRange:i=!1}=t,{selection:c}=n,a=ee(e,r.schema),{$from:l,empty:p,ranges:d}=c;if(!o)return!0;if(p&&i){let{from:m,to:u}=c,h=(s=l.marks().find(g=>g.type===a))==null?void 0:s.attrs,f=an(l,a,h);f&&(m=f.from,u=f.to),n.removeMark(m,u,a)}else d.forEach(m=>{n.removeMark(m.$from.pos,m.$to.pos,a)});return n.removeStoredMark(a),!0},Ps=e=>({tr:t,state:n,dispatch:r})=>{let{selection:o}=n,s,i;return typeof e=="number"?(s=e,i=e):e&&"from"in e&&"to"in e?(s=e.from,i=e.to):(s=o.from,i=o.to),r&&t.doc.nodesBetween(s,i,(c,a)=>{if(c.isText)return;let l={...c.attrs};delete l.dir,t.setNodeMarkup(a,void 0,l)}),!0},Ns=(e,t={})=>({tr:n,state:r,dispatch:o})=>{let s=null,i=null,c=kn(typeof e=="string"?e:e.name,r.schema);if(!c)return!1;c==="node"&&(s=F(e,r.schema)),c==="mark"&&(i=ee(e,r.schema));let a=!1;return n.selection.ranges.forEach(l=>{let p=l.$from.pos,d=l.$to.pos,m,u,h,f;n.selection.empty?r.doc.nodesBetween(p,d,(g,v)=>{s&&s===g.type&&(a=!0,h=Math.max(v,p),f=Math.min(v+g.nodeSize,d),m=v,u=g)}):r.doc.nodesBetween(p,d,(g,v)=>{v<p&&s&&s===g.type&&(a=!0,h=Math.max(v,p),f=Math.min(v+g.nodeSize,d),m=v,u=g),v>=p&&v<=d&&(s&&s===g.type&&(a=!0,o&&n.setNodeMarkup(v,void 0,{...g.attrs,...t})),i&&g.marks.length&&g.marks.forEach(y=>{if(i===y.type&&(a=!0,o)){let I=Math.max(v,p),A=Math.min(v+g.nodeSize,d);n.addMark(I,A,i.create({...y.attrs,...t}))}}))}),u&&(m!==void 0&&o&&n.setNodeMarkup(m,void 0,{...u.attrs,...t}),i&&u.marks.length&&u.marks.forEach(g=>{i===g.type&&o&&n.addMark(h,f,i.create({...g.attrs,...t}))}))}),a},Ls=(e,t={})=>({state:n,dispatch:r})=>{let o=F(e,n.schema);return(0,Un.wrapIn)(o,t)(n,r)},Ds=(e,t={})=>({state:n,dispatch:r})=>{let o=F(e,n.schema);return(0,Rn.wrapInList)(o,t)(n,r)};var Bs=(e,t)=>{if(it(t))return t.exec(e);let n=t(e);if(!n)return null;let r=[n.text];return r.index=n.index,r.input=e,r.data=n.data,n.replaceWith&&(n.text.includes(n.replaceWith)||console.warn('[tiptap warn]: "inputRuleMatch.replaceWith" must be part of "inputRuleMatch.text".'),r.push(n.replaceWith)),r};function Ce(e){var t;let{editor:n,from:r,to:o,text:s,rules:i,plugin:c}=e,{view:a}=n;if(a.composing)return!1;let l=a.state.doc.resolve(r);if(l.parent.type.spec.code||(t=l.nodeBefore||l.nodeAfter)!=null&&t.marks.find(m=>m.type.spec.code))return!1;let p=!1,d=ls(l)+s;return i.forEach(m=>{if(p)return;let u=Bs(d,m.find);if(!u)return;let h=a.state.tr,f=Be({state:a.state,transaction:h}),g={from:r-(u[0].length-s.length),to:o},{commands:v,chain:y,can:I}=new st({editor:n,state:f});m.handler({state:f,range:g,match:u,commands:v,chain:y,can:I})===null||!h.steps.length||(m.undoable&&h.setMeta(c,{transform:h,from:r,to:o,text:s}),a.dispatch(h),p=!0)}),p}function $s(e){let{editor:t,rules:n}=e,r=new Wn.Plugin({state:{init(){return null},apply(o,s,i){let c=o.getMeta(r);if(c)return c;let a=o.getMeta("applyInputRules");return a&&setTimeout(()=>{let{text:p}=a;typeof p=="string"?p=p:p=Nn(Vn.Fragment.from(p),i.schema);let{from:d}=a,m=d+p.length;Ce({editor:t,from:d,to:m,text:p,rules:n,plugin:r})}),o.selectionSet||o.docChanged?null:s}},props:{handleTextInput(o,s,i,c){return Ce({editor:t,from:s,to:i,text:c,rules:n,plugin:r})},handleDOMEvents:{compositionend:o=>(setTimeout(()=>{let{$cursor:s}=o.state.selection;s&&Ce({editor:t,from:s.pos,to:s.pos,text:"",rules:n,plugin:r})}),!1)},handleKeyDown(o,s){if(s.key!=="Enter")return!1;let{$cursor:i}=o.state.selection;return i?Ce({editor:t,from:i.pos,to:i.pos,text:`
|
|
4
|
-
`,rules:n,plugin:r}):!1}},isInputRules:!0});return r}function Hs(e){return Object.prototype.toString.call(e).slice(8,-1)}function Ie(e){return Hs(e)!=="Object"?!1:e.constructor===Object&&Object.getPrototypeOf(e)===Object.prototype}function Kn(e,t){let n={...e};return Ie(e)&&Ie(t)&&Object.keys(t).forEach(r=>{Ie(t[r])&&Ie(e[r])?n[r]=Kn(e[r],t[r]):n[r]=t[r]}),n}var ut=class{constructor(e={}){this.type="extendable",this.parent=null,this.child=null,this.name="",this.config={name:this.name},this.config={...this.config,...e},this.name=this.config.name}get options(){return{...O(b(this,"addOptions",{name:this.name}))||{}}}get storage(){return{...O(b(this,"addStorage",{name:this.name,options:this.options}))||{}}}configure(e={}){let t=this.extend({...this.config,addOptions:()=>Kn(this.options,e)});return t.name=this.name,t.parent=this.parent,this.child=null,t}extend(e={}){let t=new this.constructor({...this.config,...e});return t.parent=this,this.child=t,t.name="name"in e?e.name:t.parent.name,t}},mt=class Jn extends ut{constructor(){super(...arguments),this.type="mark"}static create(t={}){let n=typeof t=="function"?t():t;return new Jn(n)}static handleExit({editor:t,mark:n}){let{tr:r}=t.state,o=t.state.selection.$from;if(o.pos===o.end()){let i=o.marks();if(!!!i.find(l=>l?.type.name===n.name))return!1;let a=i.find(l=>l?.type.name===n.name);return a&&r.removeStoredMark(a),r.insertText(" ",o.pos),t.view.dispatch(r),!0}return!1}configure(t){return super.configure(t)}extend(t){let n=typeof t=="function"?t():t;return super.extend(n)}};function _s(e){return typeof e=="number"}var js=(e,t,n)=>{if(it(t))return[...e.matchAll(t)];let r=t(e,n);return r?r.map(o=>{let s=[o.text];return s.index=o.index,s.input=e,s.data=o.data,o.replaceWith&&(o.text.includes(o.replaceWith)||console.warn('[tiptap warn]: "pasteRuleMatch.replaceWith" must be part of "pasteRuleMatch.text".'),s.push(o.replaceWith)),s}):[]};function Us(e){let{editor:t,state:n,from:r,to:o,rule:s,pasteEvent:i,dropEvent:c}=e,{commands:a,chain:l,can:p}=new st({editor:t,state:n}),d=[];return n.doc.nodesBetween(r,o,(u,h)=>{var f,g,v,y,I;if((g=(f=u.type)==null?void 0:f.spec)!=null&&g.code||!(u.isText||u.isTextblock||u.isInline))return;let A=(I=(y=(v=u.content)==null?void 0:v.size)!=null?y:u.nodeSize)!=null?I:0,k=Math.max(r,h),E=Math.min(o,h+A);if(k>=E)return;let C=u.isText?u.text||"":u.textBetween(k-h,E-h,void 0,"\uFFFC");js(C,s.find,i).forEach(L=>{if(L.index===void 0)return;let N=k+L.index+1,D=N+L[0].length,K={from:n.tr.mapping.map(N),to:n.tr.mapping.map(D)},$=s.handler({state:n,range:K,match:L,commands:a,chain:l,can:p,pasteEvent:i,dropEvent:c});d.push($)})}),d.every(u=>u!==null)}var Ae=null,Rs=e=>{var t;let n=new ClipboardEvent("paste",{clipboardData:new DataTransfer});return(t=n.clipboardData)==null||t.setData("text/html",e),n};function Fs(e){let{editor:t,rules:n}=e,r=null,o=!1,s=!1,i=typeof ClipboardEvent<"u"?new ClipboardEvent("paste"):null,c;try{c=typeof DragEvent<"u"?new DragEvent("drop"):null}catch{c=null}let a=({state:p,from:d,to:m,rule:u,pasteEvt:h})=>{let f=p.tr,g=Be({state:p,transaction:f});if(!(!Us({editor:t,state:g,from:Math.max(d-1,0),to:m.b-1,rule:u,pasteEvent:h,dropEvent:c})||!f.steps.length)){try{c=typeof DragEvent<"u"?new DragEvent("drop"):null}catch{c=null}return i=typeof ClipboardEvent<"u"?new ClipboardEvent("paste"):null,f}};return n.map(p=>new Xn.Plugin({view(d){let m=h=>{var f;r=(f=d.dom.parentElement)!=null&&f.contains(h.target)?d.dom.parentElement:null,r&&(Ae=t)},u=()=>{Ae&&(Ae=null)};return window.addEventListener("dragstart",m),window.addEventListener("dragend",u),{destroy(){window.removeEventListener("dragstart",m),window.removeEventListener("dragend",u)}}},props:{handleDOMEvents:{drop:(d,m)=>{if(s=r===d.dom.parentElement,c=m,!s){let u=Ae;u?.isEditable&&setTimeout(()=>{let h=u.state.selection;h&&u.commands.deleteRange({from:h.from,to:h.to})},10)}return!1},paste:(d,m)=>{var u;let h=(u=m.clipboardData)==null?void 0:u.getData("text/html");return i=m,o=!!h?.includes("data-pm-slice"),!1}}},appendTransaction:(d,m,u)=>{let h=d[0],f=h.getMeta("uiEvent")==="paste"&&!o,g=h.getMeta("uiEvent")==="drop"&&!s,v=h.getMeta("applyPasteRules"),y=!!v;if(!f&&!g&&!y)return;if(y){let{text:k}=v;typeof k=="string"?k=k:k=Nn(qn.Fragment.from(k),u.schema);let{from:E}=v,C=E+k.length,T=Rs(k);return a({rule:p,state:u,from:E,to:{b:C},pasteEvt:T})}let I=m.doc.content.findDiffStart(u.doc.content),A=m.doc.content.findDiffEnd(u.doc.content);if(!(!_s(I)||!A||I===A.b))return a({rule:p,state:u,from:I,to:A,pasteEvt:i})}}))}var pt=class{constructor(e,t){this.splittableMarks=[],this.editor=t,this.baseExtensions=e,this.extensions=zn(e),this.schema=es(this.extensions,t),this.setupExtensions()}get commands(){return this.extensions.reduce((e,t)=>{let n={name:t.name,options:t.options,storage:this.editor.extensionStorage[t.name],editor:this.editor,type:xe(t.name,this.schema)},r=b(t,"addCommands",n);return r?{...e,...r()}:e},{})}get plugins(){let{editor:e}=this;return be([...this.extensions].reverse()).flatMap(r=>{let o={name:r.name,options:r.options,storage:this.editor.extensionStorage[r.name],editor:e,type:xe(r.name,this.schema)},s=[],i=b(r,"addKeyboardShortcuts",o),c={};if(r.type==="mark"&&b(r,"exitable",o)&&(c.ArrowRight=()=>mt.handleExit({editor:e,mark:r})),i){let m=Object.fromEntries(Object.entries(i()).map(([u,h])=>[u,()=>h({editor:e})]));c={...c,...m}}let a=(0,Fn.keymap)(c);s.push(a);let l=b(r,"addInputRules",o);if(Gt(r,e.options.enableInputRules)&&l){let m=l();if(m&&m.length){let u=$s({editor:e,rules:m}),h=Array.isArray(u)?u:[u];s.push(...h)}}let p=b(r,"addPasteRules",o);if(Gt(r,e.options.enablePasteRules)&&p){let m=p();if(m&&m.length){let u=Fs({editor:e,rules:m});s.push(...u)}}let d=b(r,"addProseMirrorPlugins",o);if(d){let m=d();s.push(...m)}return s})}get attributes(){return Dn(this.extensions)}get nodeViews(){let{editor:e}=this,{nodeExtensions:t}=ue(this.extensions);return Object.fromEntries(t.filter(n=>!!b(n,"addNodeView")).map(n=>{let r=this.attributes.filter(a=>a.type===n.name),o={name:n.name,options:n.options,storage:this.editor.extensionStorage[n.name],editor:e,type:F(n.name,this.schema)},s=b(n,"addNodeView",o);if(!s)return[];let i=s();if(!i)return[];let c=(a,l,p,d,m)=>{let u=Oe(a,r);return i({node:a,view:l,getPos:p,decorations:d,innerDecorations:m,editor:e,extension:n,HTMLAttributes:u})};return[n.name,c]}))}dispatchTransaction(e){let{editor:t}=this;return be([...this.extensions].reverse()).reduceRight((r,o)=>{let s={name:o.name,options:o.options,storage:this.editor.extensionStorage[o.name],editor:t,type:xe(o.name,this.schema)},i=b(o,"dispatchTransaction",s);return i?c=>{i.call(s,{transaction:c,next:r})}:r},e)}transformPastedHTML(e){let{editor:t}=this;return be([...this.extensions]).reduce((r,o)=>{let s={name:o.name,options:o.options,storage:this.editor.extensionStorage[o.name],editor:t,type:xe(o.name,this.schema)},i=b(o,"transformPastedHTML",s);return i?(c,a)=>{let l=r(c,a);return i.call(s,l)}:r},e||(r=>r))}get markViews(){let{editor:e}=this,{markExtensions:t}=ue(this.extensions);return Object.fromEntries(t.filter(n=>!!b(n,"addMarkView")).map(n=>{let r=this.attributes.filter(c=>c.type===n.name),o={name:n.name,options:n.options,storage:this.editor.extensionStorage[n.name],editor:e,type:ee(n.name,this.schema)},s=b(n,"addMarkView",o);if(!s)return[];let i=(c,a,l)=>{let p=Oe(c,r);return s()({mark:c,view:a,inline:l,editor:e,extension:n,HTMLAttributes:p,updateAttributes:d=>{di(c,e,d)}})};return[n.name,i]}))}destroy(){this.extensions.forEach(e=>{let t=e;for(;t.parent;){let n=t.parent;n.child===t&&(n.child=null),t=n}}),this.extensions=[],this.baseExtensions=[],this.schema=null,this.editor=null}setupExtensions(){let e=this.extensions;this.editor.extensionStorage=Object.fromEntries(e.map(t=>[t.name,t.storage])),e.forEach(t=>{var n;let r={name:t.name,options:t.options,storage:this.editor.extensionStorage[t.name],editor:this.editor,type:xe(t.name,this.schema)};t.type==="mark"&&((n=O(b(t,"keepOnSplit",r)))==null||n)&&this.splittableMarks.push(t.name);let o=b(t,"onBeforeCreate",r),s=b(t,"onCreate",r),i=b(t,"onUpdate",r),c=b(t,"onSelectionUpdate",r),a=b(t,"onTransaction",r),l=b(t,"onFocus",r),p=b(t,"onBlur",r),d=b(t,"onDestroy",r);o&&this.editor.on("beforeCreate",o),s&&this.editor.on("create",s),i&&this.editor.on("update",i),c&&this.editor.on("selectionUpdate",c),a&&this.editor.on("transaction",a),l&&this.editor.on("focus",l),p&&this.editor.on("blur",p),d&&this.editor.on("destroy",d)})}};pt.resolve=zn;pt.sort=be;pt.flatten=lt;var Vs={};ot(Vs,{ClipboardTextSerializer:()=>Ws,Commands:()=>Ks,Delete:()=>Js,Drop:()=>qs,Editable:()=>Xs,FocusEvents:()=>Ys,Keymap:()=>Gs,Paste:()=>Qs,Tabindex:()=>Zs,TextDirection:()=>ei,focusEventsPluginKey:()=>Qn});var Z=class Yn extends ut{constructor(){super(...arguments),this.type="extension"}static create(t={}){let n=typeof t=="function"?t():t;return new Yn(n)}configure(t){return super.configure(t)}extend(t){let n=typeof t=="function"?t():t;return super.extend(n)}},Ws=Z.create({name:"clipboardTextSerializer",addOptions(){return{blockSeparator:void 0}},addProseMirrorPlugins(){return[new _e.Plugin({key:new _e.PluginKey("clipboardTextSerializer"),props:{clipboardTextSerializer:()=>{let{editor:e}=this,{state:t,schema:n}=e,{doc:r,selection:o}=t,{ranges:s}=o,i=Math.min(...s.map(p=>p.$from.pos)),c=Math.max(...s.map(p=>p.$to.pos)),a=ss(n);return os(r,{from:i,to:c},{...this.options.blockSeparator!==void 0?{blockSeparator:this.options.blockSeparator}:{},textSerializers:a})}}})]}}),Ks=Z.create({name:"commands",addCommands(){return{...Zt}}}),Js=Z.create({name:"delete",onUpdate({transaction:e,appendedTransactions:t}){var n,r,o;let s=()=>{var i,c,a,l;if((l=(a=(c=(i=this.editor.options.coreExtensionOptions)==null?void 0:i.delete)==null?void 0:c.filterTransaction)==null?void 0:a.call(c,e))!=null?l:e.getMeta("y-sync$"))return;let p=Ko(e.before,[e,...t]);cs(p).forEach(u=>{p.mapping.mapResult(u.oldRange.from).deletedAfter&&p.mapping.mapResult(u.oldRange.to).deletedBefore&&p.before.nodesBetween(u.oldRange.from,u.oldRange.to,(h,f)=>{let g=f+h.nodeSize-2,v=u.oldRange.from<=f&&g<=u.oldRange.to;this.editor.emit("delete",{type:"node",node:h,from:f,to:g,newFrom:p.mapping.map(f),newTo:p.mapping.map(g),deletedRange:u.oldRange,newRange:u.newRange,partial:!v,editor:this.editor,transaction:e,combinedTransform:p})})});let m=p.mapping;p.steps.forEach((u,h)=>{var f,g;if(u instanceof Gn.RemoveMarkStep){let v=m.slice(h).map(u.from,-1),y=m.slice(h).map(u.to),I=m.invert().map(v,-1),A=m.invert().map(y),k=v>0?(f=p.doc.nodeAt(v-1))==null?void 0:f.marks.some(C=>C.eq(u.mark)):!1,E=(g=p.doc.nodeAt(y))==null?void 0:g.marks.some(C=>C.eq(u.mark));this.editor.emit("delete",{type:"mark",mark:u.mark,from:u.from,to:u.to,deletedRange:{from:I,to:A},newRange:{from:v,to:y},partial:!!(E||k),editor:this.editor,transaction:e,combinedTransform:p})}})};(o=(r=(n=this.editor.options.coreExtensionOptions)==null?void 0:n.delete)==null?void 0:r.async)==null||o?setTimeout(s,0):s()}}),qs=Z.create({name:"drop",addProseMirrorPlugins(){return[new je.Plugin({key:new je.PluginKey("tiptapDrop"),props:{handleDrop:(e,t,n,r)=>{this.editor.emit("drop",{editor:this.editor,event:t,slice:n,moved:r})}}})]}}),Xs=Z.create({name:"editable",addProseMirrorPlugins(){return[new Ue.Plugin({key:new Ue.PluginKey("editable"),props:{editable:()=>this.editor.options.editable}})]}}),Qn=new Re.PluginKey("focusEvents"),Ys=Z.create({name:"focusEvents",addProseMirrorPlugins(){let{editor:e}=this;return[new Re.Plugin({key:Qn,props:{handleDOMEvents:{focus:(t,n)=>{e.isFocused=!0;let r=e.state.tr.setMeta("focus",{event:n}).setMeta("addToHistory",!1);return t.dispatch(r),!1},blur:(t,n)=>{e.isFocused=!1;let r=e.state.tr.setMeta("blur",{event:n}).setMeta("addToHistory",!1);return t.dispatch(r),!1}}}})]}}),Gs=Z.create({name:"keymap",addKeyboardShortcuts(){let e=()=>this.editor.commands.first(({commands:i})=>[()=>i.undoInputRule(),()=>i.command(({tr:c})=>{let{selection:a,doc:l}=c,{empty:p,$anchor:d}=a,{pos:m,parent:u}=d,h=d.parent.isTextblock&&m>0?c.doc.resolve(m-1):d,f=h.parent.type.spec.isolating,g=d.pos-d.parentOffset,v=f&&h.parent.childCount===1?g===d.pos:re.Selection.atStart(l).from===m;return!p||!u.type.isTextblock||u.textContent.length||!v||v&&d.parent.type.name==="paragraph"?!1:i.clearNodes()}),()=>i.deleteSelection(),()=>i.joinBackward(),()=>i.selectNodeBackward()]),t=()=>this.editor.commands.first(({commands:i})=>[()=>i.deleteSelection(),()=>i.deleteCurrentNode(),()=>i.joinForward(),()=>i.selectNodeForward()]),r={Enter:()=>this.editor.commands.first(({commands:i})=>[()=>i.newlineInCode(),()=>i.createParagraphNear(),()=>i.liftEmptyBlock(),()=>i.splitBlock()]),"Mod-Enter":()=>this.editor.commands.exitCode(),Backspace:e,"Mod-Backspace":e,"Shift-Backspace":e,Delete:t,"Mod-Delete":t,"Mod-a":()=>this.editor.commands.selectAll()},o={...r},s={...r,"Ctrl-h":e,"Alt-Backspace":e,"Ctrl-d":t,"Ctrl-Alt-Backspace":t,"Alt-Delete":t,"Alt-d":t,"Ctrl-a":()=>this.editor.commands.selectTextblockStart(),"Ctrl-e":()=>this.editor.commands.selectTextblockEnd()};return ze()||vn()?s:o},addProseMirrorPlugins(){return[new re.Plugin({key:new re.PluginKey("clearDocument"),appendTransaction:(e,t,n)=>{if(e.some(f=>f.getMeta("composition")))return;let r=e.some(f=>f.docChanged)&&!t.doc.eq(n.doc),o=e.some(f=>f.getMeta("preventClearDocument"));if(!r||o)return;let{empty:s,from:i,to:c}=t.selection,a=re.Selection.atStart(t.doc).from,l=re.Selection.atEnd(t.doc).to;if(s||!(i===a&&c===l)||!On(n.doc))return;let m=n.tr,u=Be({state:n,transaction:m}),{commands:h}=new st({editor:this.editor,state:u});if(h.clearNodes(),!!m.steps.length)return m}})]}}),Qs=Z.create({name:"paste",addProseMirrorPlugins(){return[new Fe.Plugin({key:new Fe.PluginKey("tiptapPaste"),props:{handlePaste:(e,t,n)=>{this.editor.emit("paste",{editor:this.editor,event:t,slice:n})}}})]}}),Zs=Z.create({name:"tabindex",addOptions(){return{value:void 0}},addProseMirrorPlugins(){return[new Ve.Plugin({key:new Ve.PluginKey("tabindex"),props:{attributes:()=>{var e;return!this.editor.isEditable&&this.options.value===void 0?{}:{tabindex:(e=this.options.value)!=null?e:"0"}}}})]}}),ei=Z.create({name:"textDirection",addOptions(){return{direction:void 0}},addGlobalAttributes(){if(!this.options.direction)return[];let{nodeExtensions:e}=ue(this.extensions);return[{types:e.filter(t=>t.name!=="text").map(t=>t.name),attributes:{dir:{default:this.options.direction,parseHTML:t=>{let n=t.getAttribute("dir");return n&&(n==="ltr"||n==="rtl"||n==="auto")?n:this.options.direction},renderHTML:t=>t.dir?{dir:t.dir}:{}}}}]},addProseMirrorPlugins(){return[new We.Plugin({key:new We.PluginKey("textDirection"),props:{attributes:()=>{let e=this.options.direction;return e?{dir:e}:{}}}})]}});var ni={};ot(ni,{createAtomBlockMarkdownSpec:()=>ri,createBlockMarkdownSpec:()=>oi,createInlineMarkdownSpec:()=>ai,parseAttributes:()=>ft,parseIndentedBlocks:()=>ci,renderNestedMarkdownContent:()=>li,serializeAttributes:()=>ht});function ft(e){if(!e?.trim())return{};let t={},n=[],r=e.replace(/["']([^"']*)["']/g,l=>(n.push(l),`__QUOTED_${n.length-1}__`)),o=r.match(/(?:^|\s)\.([a-zA-Z][\w-]*)/g);if(o){let l=o.map(p=>p.trim().slice(1));t.class=l.join(" ")}let s=r.match(/(?:^|\s)#([a-zA-Z][\w-]*)/);s&&(t.id=s[1]);let i=/([a-zA-Z][\w-]*)\s*=\s*(__QUOTED_\d+__)/g;Array.from(r.matchAll(i)).forEach(([,l,p])=>{var d;let m=parseInt(((d=p.match(/__QUOTED_(\d+)__/))==null?void 0:d[1])||"0",10),u=n[m];u&&(t[l]=u.slice(1,-1))});let a=r.replace(/(?:^|\s)\.([a-zA-Z][\w-]*)/g,"").replace(/(?:^|\s)#([a-zA-Z][\w-]*)/g,"").replace(/([a-zA-Z][\w-]*)\s*=\s*__QUOTED_\d+__/g,"").trim();return a&&a.split(/\s+/).filter(Boolean).forEach(p=>{p.match(/^[a-zA-Z][\w-]*$/)&&(t[p]=!0)}),t}function ht(e){if(!e||Object.keys(e).length===0)return"";let t=[];return e.class&&String(e.class).split(/\s+/).filter(Boolean).forEach(r=>t.push(`.${r}`)),e.id&&t.push(`#${e.id}`),Object.entries(e).forEach(([n,r])=>{n==="class"||n==="id"||(r===!0?t.push(n):r!==!1&&r!=null&&t.push(`${n}="${String(r)}"`))}),t.join(" ")}function ri(e){let{nodeName:t,name:n,parseAttributes:r=ft,serializeAttributes:o=ht,defaultAttributes:s={},requiredAttributes:i=[],allowedAttributes:c}=e,a=n||t,l=p=>{if(!c)return p;let d={};return c.forEach(m=>{m in p&&(d[m]=p[m])}),d};return{parseMarkdown:(p,d)=>{let m={...s,...p.attributes};return d.createNode(t,m,[])},markdownTokenizer:{name:t,level:"block",start(p){var d;let m=new RegExp(`^:::${a}(?:\\s|$)`,"m"),u=(d=p.match(m))==null?void 0:d.index;return u!==void 0?u:-1},tokenize(p,d,m){let u=new RegExp(`^:::${a}(?:\\s+\\{([^}]*)\\})?\\s*:::(?:\\n|$)`),h=p.match(u);if(!h)return;let f=h[1]||"",g=r(f);if(!i.find(y=>!(y in g)))return{type:t,raw:h[0],attributes:g}}},renderMarkdown:p=>{let d=l(p.attrs||{}),m=o(d),u=m?` {${m}}`:"";return`:::${a}${u} :::`}}}function oi(e){let{nodeName:t,name:n,getContent:r,parseAttributes:o=ft,serializeAttributes:s=ht,defaultAttributes:i={},content:c="block",allowedAttributes:a}=e,l=n||t,p=d=>{if(!a)return d;let m={};return a.forEach(u=>{u in d&&(m[u]=d[u])}),m};return{parseMarkdown:(d,m)=>{let u;if(r){let f=r(d);u=typeof f=="string"?[{type:"text",text:f}]:f}else c==="block"?u=m.parseChildren(d.tokens||[]):u=m.parseInline(d.tokens||[]);let h={...i,...d.attributes};return m.createNode(t,h,u)},markdownTokenizer:{name:t,level:"block",start(d){var m;let u=new RegExp(`^:::${l}`,"m"),h=(m=d.match(u))==null?void 0:m.index;return h!==void 0?h:-1},tokenize(d,m,u){var h;let f=new RegExp(`^:::${l}(?:\\s+\\{([^}]*)\\})?\\s*\\n`),g=d.match(f);if(!g)return;let[v,y=""]=g,I=o(y),A=1,k=v.length,E="",C=/^:::([\w-]*)(\s.*)?/gm,T=d.slice(k);for(C.lastIndex=0;;){let L=C.exec(T);if(L===null)break;let N=L.index,D=L[1];if(!((h=L[2])!=null&&h.endsWith(":::"))){if(D)A+=1;else if(A-=1,A===0){let K=T.slice(0,N);E=K.trim();let $=d.slice(0,k+N+L[0].length),R=[];if(E)if(c==="block")for(R=u.blockTokens(K),R.forEach(U=>{U.text&&(!U.tokens||U.tokens.length===0)&&(U.tokens=u.inlineTokens(U.text))});R.length>0;){let U=R[R.length-1];if(U.type==="paragraph"&&(!U.text||U.text.trim()===""))R.pop();else break}else R=u.inlineTokens(E);return{type:t,raw:$,attributes:I,content:E,tokens:R}}}}}},renderMarkdown:(d,m)=>{let u=p(d.attrs||{}),h=s(u),f=h?` {${h}}`:"",g=m.renderChildren(d.content||[],`
|
|
3
|
+
`,textSerializers:i={}}=n||{},l="";return e.nodesBetween(r,o,(a,c,m,d)=>{var p;a.isBlock&&c>r&&(l+=s);let u=i?.[a.type.name];if(u)return m&&(l+=u({node:a,pos:c,parent:m,index:d,range:t})),!1;a.isText&&(l+=(p=a?.text)==null?void 0:p.slice(Math.max(r,c)-c,o-c))}),l}function cs(e){return Object.fromEntries(Object.entries(e.nodes).filter(([,t])=>t.spec.toText).map(([t,n])=>[t,n.spec.toText]))}function ls(e,t=JSON.stringify){let n={};return e.filter(r=>{let o=t(r);return Object.prototype.hasOwnProperty.call(n,o)?!1:n[o]=!0})}function ds(e){let t=ls(e);return t.length===1?t:t.filter((n,r)=>!t.filter((s,i)=>i!==r).some(s=>n.oldRange.from>=s.oldRange.from&&n.oldRange.to<=s.oldRange.to&&n.newRange.from>=s.newRange.from&&n.newRange.to<=s.newRange.to))}function us(e){let{mapping:t,steps:n}=e,r=[];return t.maps.forEach((o,s)=>{let i=[];if(o.ranges.length)o.forEach((l,a)=>{i.push({from:l,to:a})});else{let{from:l,to:a}=n[s];if(l===void 0||a===void 0)return;i.push({from:l,to:a})}i.forEach(({from:l,to:a})=>{let c=t.slice(s).map(l,-1),m=t.slice(s).map(a),d=t.invert().map(c,-1),p=t.invert().map(m);r.push({oldRange:{from:d,to:p},newRange:{from:c,to:m}})})}),ds(r)}function xe(e,t){return t.nodes[e]||t.marks[e]||null}function Le(e,t,n){return Object.fromEntries(Object.entries(n).filter(([r])=>{let o=e.find(s=>s.type===t&&s.name===r);return o?o.attribute.keepOnSplit:!1}))}var ms=(e,t=500)=>{let n="",r=e.parentOffset;return e.parent.nodesBetween(Math.max(0,r-t),r,(o,s,i,l)=>{var a,c;let m=((c=(a=o.type.spec).toText)==null?void 0:c.call(a,{node:o,pos:s,parent:i,index:l}))||o.textContent||"%leaf%";n+=o.isAtom&&!o.isText?m:m.slice(0,Math.max(0,r-s))}),n};function ps(e,t,n={}){let{empty:r,ranges:o}=e.selection,s=t?te(t,e.schema):null;if(r)return!!(e.storedMarks||e.selection.$from.marks()).filter(d=>s?s.name===d.type.name:!0).find(d=>Oe(d.attrs,n,{strict:!1}));let i=0,l=[];if(o.forEach(({$from:d,$to:p})=>{let u=d.pos,h=p.pos;e.doc.nodesBetween(u,h,(f,g)=>{if(s&&f.inlineContent&&!f.type.allowsMarkType(s))return!1;if(!f.isText&&!f.marks.length)return;let v=Math.max(u,g),y=Math.min(h,g+f.nodeSize),S=y-v;i+=S,l.push(...f.marks.map(C=>({mark:C,from:v,to:y})))})}),i===0)return!1;let a=l.filter(d=>s?s.name===d.mark.type.name:!0).filter(d=>Oe(d.mark.attrs,n,{strict:!1})).reduce((d,p)=>d+p.to-p.from,0),c=l.filter(d=>s?d.mark.type!==s&&d.mark.type.excludes(s):!0).reduce((d,p)=>d+p.to-p.from,0);return(a>0?a+c:a)>=i}function Qt(e,t){return Array.isArray(t)?t.some(n=>(typeof n=="string"?n:n.name)===e.name):t}function nt(e,t){let{nodeExtensions:n}=ue(t),r=n.find(i=>i.name===e);if(!r)return!1;let o={name:r.name,options:r.options,storage:r.storage},s=B(x(r,"group",o));return typeof s!="string"?!1:s.split(" ").includes("list")}function Bn(e,{checkChildren:t=!0,ignoreWhitespace:n=!1}={}){var r;if(n){if(e.type.name==="hardBreak")return!0;if(e.isText)return!/\S/.test((r=e.text)!=null?r:"")}if(e.isText)return!e.text;if(e.isAtom||e.isLeaf)return!1;if(e.content.childCount===0)return!0;if(t){let o=!0;return e.content.forEach(s=>{o!==!1&&(Bn(s,{ignoreWhitespace:n,checkChildren:t})||(o=!1))}),o}return!1}function hs(e,t,n){var r;let{selection:o}=t,s=null;if(dn(o)&&(s=o.$cursor),s){let l=(r=e.storedMarks)!=null?r:s.marks();return s.parent.type.allowsMarkType(n)&&(!!n.isInSet(l)||!l.some(c=>c.type.excludes(n)))}let{ranges:i}=o;return i.some(({$from:l,$to:a})=>{let c=l.depth===0?e.doc.inlineContent&&e.doc.type.allowsMarkType(n):!1;return e.doc.nodesBetween(l.pos,a.pos,(m,d,p)=>{if(c)return!1;if(m.isInline){let u=!p||p.type.allowsMarkType(n),h=!!n.isInSet(m.marks)||!m.marks.some(f=>f.type.excludes(n));c=u&&h}return!c}),c})}var gs=(e,t={})=>({tr:n,state:r,dispatch:o})=>{let{selection:s}=n,{empty:i,ranges:l}=s,a=te(e,r.schema);if(o)if(i){let c=qo(r,a);n.addStoredMark(a.create({...c,...t}))}else l.forEach(c=>{let m=c.$from.pos,d=c.$to.pos;r.doc.nodesBetween(m,d,(p,u)=>{let h=Math.max(u,m),f=Math.min(u+p.nodeSize,d);p.marks.find(v=>v.type===a)?p.marks.forEach(v=>{a===v.type&&n.addMark(h,f,a.create({...v.attrs,...t}))}):n.addMark(h,f,a.create(t))})});return hs(r,n,a)},vs=(e,t)=>({tr:n})=>(n.setMeta(e,t),!0),ys=(e,t={})=>({state:n,dispatch:r,chain:o})=>{let s=F(e,n.schema),i;return n.selection.$anchor.sameParent(n.selection.$head)&&(i=n.selection.$anchor.parent.attrs),s.isTextblock?o().command(({commands:l})=>(0,st.setBlockType)(s,{...i,...t})(n)?!0:l.clearNodes()).command(({state:l})=>(0,st.setBlockType)(s,{...i,...t})(l,r)).run():(console.warn('[tiptap warn]: Currently "setNode()" only supports text block nodes.'),!1)},xs=e=>({tr:t,dispatch:n})=>{if(n){let{doc:r}=t,o=ae(e,0,r.content.size),s=$n.NodeSelection.create(r,o);t.setSelection(s)}return!0},bs=(e,t)=>({tr:n,state:r,dispatch:o})=>{let{selection:s}=r,i,l;return typeof t=="number"?(i=t,l=t):t&&"from"in t&&"to"in t?(i=t.from,l=t.to):(i=s.from,l=s.to),o&&n.doc.nodesBetween(i,l,(a,c)=>{a.isText||n.setNodeMarkup(c,void 0,{...a.attrs,dir:e})}),!0},ws=e=>({tr:t,dispatch:n})=>{if(n){let{doc:r}=t,{from:o,to:s}=typeof e=="number"?{from:e,to:e}:e,i=ze.TextSelection.atStart(r).from,l=ze.TextSelection.atEnd(r).to,a=ae(o,i,l),c=ae(s,i,l),m=ze.TextSelection.create(r,a,c);t.setSelection(m)}return!0},ks=e=>({state:t,dispatch:n})=>{let r=F(e,t.schema);return(0,Hn.sinkListItem)(r)(t,n)};function Zt(e,t){let n=e.storedMarks||e.selection.$to.parentOffset&&e.selection.$from.marks();if(n){let r=n.filter(o=>t?.includes(o.type.name));e.tr.ensureMarks(r)}}var Ms=({keepMarks:e=!0}={})=>({tr:t,state:n,dispatch:r,editor:o})=>{let{selection:s,doc:i}=t,{$from:l,$to:a}=s,c=o.extensionManager.attributes,m=Le(c,l.node().type.name,l.node().attrs);if(s instanceof je.NodeSelection&&s.node.isBlock)return!l.parentOffset||!(0,De.canSplit)(i,l.pos)?!1:(r&&(e&&Zt(n,o.extensionManager.splittableMarks),t.split(l.pos).scrollIntoView()),!0);if(!l.parent.isBlock)return!1;let d=a.parentOffset===a.parent.content.size,p=l.depth===0?void 0:Yo(l.node(-1).contentMatchAt(l.indexAfter(-1))),u=d&&p?[{type:p,attrs:m}]:void 0,h=(0,De.canSplit)(t.doc,t.mapping.map(l.pos),1,u);if(!u&&!h&&(0,De.canSplit)(t.doc,t.mapping.map(l.pos),1,p?[{type:p}]:void 0)&&(h=!0,u=p?[{type:p,attrs:m}]:void 0),r){if(h&&(s instanceof je.TextSelection&&t.deleteSelection(),t.split(t.mapping.map(l.pos),1,u),p&&!d&&!l.parentOffset&&l.parent.type!==p)){let f=t.mapping.map(l.before()),g=t.doc.resolve(f);l.node(-1).canReplaceWith(g.index(),g.index()+1,p)&&t.setNodeMarkup(t.mapping.map(l.before()),p)}e&&Zt(n,o.extensionManager.splittableMarks),t.scrollIntoView()}return h},Ss=(e,t={})=>({tr:n,state:r,dispatch:o,editor:s})=>{var i;let l=F(e,r.schema),{$from:a,$to:c}=r.selection,m=r.selection.node;if(m&&m.isBlock||a.depth<2||!a.sameParent(c))return!1;let d=a.node(-1);if(d.type!==l)return!1;let p=s.extensionManager.attributes;if(a.parent.content.size===0&&a.node(-1).childCount===a.indexAfter(-1)){if(a.depth===2||a.node(-3).type!==l||a.index(-2)!==a.node(-2).childCount-1)return!1;if(o){let v=le.Fragment.empty,y=a.index(-1)?1:a.index(-2)?2:3;for(let I=a.depth-y;I>=a.depth-3;I-=1)v=le.Fragment.from(a.node(I).copy(v));let S=a.indexAfter(-1)<a.node(-2).childCount?1:a.indexAfter(-2)<a.node(-3).childCount?2:3,C={...Le(p,a.node().type.name,a.node().attrs),...t},T=((i=l.contentMatch.defaultType)==null?void 0:i.createAndFill(C))||void 0;v=v.append(le.Fragment.from(l.createAndFill(null,T)||void 0));let E=a.before(a.depth-(y-1));n.replace(E,a.after(-S),new le.Slice(v,4-y,0));let A=-1;n.doc.nodesBetween(E,n.doc.content.size,(I,D)=>{if(A>-1)return!1;I.isTextblock&&I.content.size===0&&(A=D+1)}),A>-1&&n.setSelection(_n.TextSelection.near(n.doc.resolve(A))),n.scrollIntoView()}return!0}let u=c.pos===a.end()?d.contentMatchAt(0).defaultType:null,h={...Le(p,d.type.name,d.attrs),...t},f={...Le(p,a.node().type.name,a.node().attrs),...t};n.delete(a.pos,c.pos);let g=u?[{type:l,attrs:h},{type:u,attrs:f}]:[{type:l,attrs:h}];if(!(0,jn.canSplit)(n.doc,a.pos,2))return!1;if(o){let{selection:v,storedMarks:y}=r,{splittableMarks:S}=s.extensionManager,C=y||v.$to.parentOffset&&v.$from.marks();if(n.split(a.pos,2,g).scrollIntoView(),!C||!o)return!0;let T=C.filter(E=>S.includes(E.type.name));n.ensureMarks(T)}return!0},rt=(e,t)=>{let n=dt(i=>i.type===t)(e.selection);if(!n)return!0;let r=e.doc.resolve(Math.max(0,n.pos-1)).before(n.depth);if(r===void 0)return!0;let o=e.doc.nodeAt(r);return n.node.type===o?.type&&(0,mt.canJoin)(e.doc,n.pos)&&e.join(n.pos),!0},ot=(e,t)=>{let n=dt(i=>i.type===t)(e.selection);if(!n)return!0;let r=e.doc.resolve(n.start).after(n.depth);if(r===void 0)return!0;let o=e.doc.nodeAt(r);return n.node.type===o?.type&&(0,mt.canJoin)(e.doc,r)&&e.join(r),!0};function Ts(e){let t=e.doc,n=t.firstChild;if(!n)return null;let r=t.resolve(1),o=t.resolve(n.nodeSize-1);return Un.TextSelection.between(r,o)}var Es=(e,t,n,r={})=>({editor:o,tr:s,state:i,dispatch:l,chain:a,commands:c,can:m})=>{let{extensions:d,splittableMarks:p}=o.extensionManager,u=F(e,i.schema),h=F(t,i.schema),{selection:f,storedMarks:g}=i,{$from:v,$to:y}=f,S=v.blockRange(y),C=g||f.$to.parentOffset&&f.$from.marks();if(!S)return!1;let T=dt($=>nt($.type.name,d))(f),E=f.from===0&&f.to===i.doc.content.size,A=i.doc.content.content,I=A.length===1?A[0]:null,D=E&&I&&nt(I.type.name,d)?{node:I,pos:0,depth:0}:null,z=T??D,P=!!T&&S.depth>=1&&S.depth-T.depth<=1,q=!!D;if((P||q)&&z){if(z.node.type===u)return E&&q?a().command(({tr:$,dispatch:R})=>{let j=Ts($);return j?($.setSelection(j),R&&R($),!0):!1}).liftListItem(h).run():c.liftListItem(h);if(nt(z.node.type.name,d)&&u.validContent(z.node.content))return a().command(()=>(s.setNodeMarkup(z.pos,u),!0)).command(()=>rt(s,u)).command(()=>ot(s,u)).run()}return!n||!C||!l?a().command(()=>m().wrapInList(u,r)?!0:c.clearNodes()).wrapInList(u,r).command(()=>rt(s,u)).command(()=>ot(s,u)).run():a().command(()=>{let $=m().wrapInList(u,r),R=C.filter(j=>p.includes(j.type.name));return s.ensureMarks(R),$?!0:c.clearNodes()}).wrapInList(u,r).command(()=>rt(s,u)).command(()=>ot(s,u)).run()},Cs=(e,t={},n={})=>({state:r,commands:o})=>{let{extendEmptyMarkRange:s=!1}=n,i=te(e,r.schema);return ps(r,i,t)?o.unsetMark(i,{extendEmptyMarkRange:s}):o.setMark(i,t)},Is=(e,t,n={})=>({state:r,commands:o})=>{let s=F(e,r.schema),i=F(t,r.schema),l=lt(r,s,n),a;return r.selection.$anchor.sameParent(r.selection.$head)&&(a=r.selection.$anchor.parent.attrs),l?o.setNode(i,a):o.setNode(s,{...a,...n})},As=(e,t={})=>({state:n,commands:r})=>{let o=F(e,n.schema);return lt(n,o,t)?r.lift(o):r.wrapIn(o,t)},Ps=()=>({state:e,dispatch:t})=>{let n=e.plugins;for(let r=0;r<n.length;r+=1){let o=n[r],s;if(o.spec.isInputRules&&(s=o.getState(e))){if(t){let i=e.tr,l=s.transform;for(let a=l.steps.length-1;a>=0;a-=1)i.step(l.steps[a].invert(l.docs[a]));if(s.text){let a=i.doc.resolve(s.from).marks();i.replaceWith(s.from,s.to,e.schema.text(s.text,a))}else i.delete(s.from,s.to)}return!0}}return!1},Ns=()=>({tr:e,dispatch:t})=>{let{selection:n}=e,{empty:r,ranges:o}=n;return r||t&&o.forEach(s=>{e.removeMark(s.$from.pos,s.$to.pos)}),!0},Ls=(e,t={})=>({tr:n,state:r,dispatch:o})=>{var s;let{extendEmptyMarkRange:i=!1}=t,{selection:l}=n,a=te(e,r.schema),{$from:c,empty:m,ranges:d}=l;if(!o)return!0;if(m&&i){let{from:p,to:u}=l,h=(s=c.marks().find(g=>g.type===a))==null?void 0:s.attrs,f=cn(c,a,h);f&&(p=f.from,u=f.to),n.removeMark(p,u,a)}else d.forEach(p=>{n.removeMark(p.$from.pos,p.$to.pos,a)});return n.removeStoredMark(a),!0},zs=e=>({tr:t,state:n,dispatch:r})=>{let{selection:o}=n,s,i;return typeof e=="number"?(s=e,i=e):e&&"from"in e&&"to"in e?(s=e.from,i=e.to):(s=o.from,i=o.to),r&&t.doc.nodesBetween(s,i,(l,a)=>{if(l.isText)return;let c={...l.attrs};delete c.dir,t.setNodeMarkup(a,void 0,c)}),!0},Ds=(e,t={})=>({tr:n,state:r,dispatch:o})=>{let s=null,i=null,l=Mn(typeof e=="string"?e:e.name,r.schema);if(!l)return!1;l==="node"&&(s=F(e,r.schema)),l==="mark"&&(i=te(e,r.schema));let a=!1;return n.selection.ranges.forEach(c=>{let m=c.$from.pos,d=c.$to.pos,p,u,h,f;n.selection.empty?r.doc.nodesBetween(m,d,(g,v)=>{s&&s===g.type&&(a=!0,h=Math.max(v,m),f=Math.min(v+g.nodeSize,d),p=v,u=g)}):r.doc.nodesBetween(m,d,(g,v)=>{v<m&&s&&s===g.type&&(a=!0,h=Math.max(v,m),f=Math.min(v+g.nodeSize,d),p=v,u=g),v>=m&&v<=d&&(s&&s===g.type&&(a=!0,o&&n.setNodeMarkup(v,void 0,{...g.attrs,...t})),i&&g.marks.length&&g.marks.forEach(y=>{if(i===y.type&&(a=!0,o)){let S=Math.max(v,m),C=Math.min(v+g.nodeSize,d);n.addMark(S,C,i.create({...y.attrs,...t}))}}))}),u&&(p!==void 0&&o&&n.setNodeMarkup(p,void 0,{...u.attrs,...t}),i&&u.marks.length&&u.marks.forEach(g=>{i===g.type&&o&&n.addMark(h,f,i.create({...g.attrs,...t}))}))}),a},Os=(e,t={})=>({state:n,dispatch:r})=>{let o=F(e,n.schema);return(0,Rn.wrapIn)(o,t)(n,r)},Bs=(e,t={})=>({state:n,dispatch:r})=>{let o=F(e,n.schema);return(0,Fn.wrapInList)(o,t)(n,r)};var _s=(e,t)=>{if(ct(t))return t.exec(e);let n=t(e);if(!n)return null;let r=[n.text];return r.index=n.index,r.input=e,r.data=n.data,n.replaceWith&&(n.text.includes(n.replaceWith)||console.warn('[tiptap warn]: "inputRuleMatch.replaceWith" must be part of "inputRuleMatch.text".'),r.push(n.replaceWith)),r};function Ae(e){var t;let{editor:n,from:r,to:o,text:s,rules:i,plugin:l}=e,{view:a}=n;if(a.composing)return!1;let c=a.state.doc.resolve(r);if(c.parent.type.spec.code||(t=c.nodeBefore||c.nodeAfter)!=null&&t.marks.find(p=>p.type.spec.code))return!1;let m=!1,d=ms(c)+s;return i.forEach(p=>{if(m)return;let u=_s(d,p.find);if(!u)return;let h=a.state.tr,f=He({state:a.state,transaction:h}),g={from:r-(u[0].length-s.length),to:o},{commands:v,chain:y,can:S}=new at({editor:n,state:f});p.handler({state:f,range:g,match:u,commands:v,chain:y,can:S})===null||!h.steps.length||(p.undoable&&h.setMeta(l,{transform:h,from:r,to:o,text:s}),a.dispatch(h),m=!0)}),m}function js(e){let{editor:t,rules:n}=e,r=new Kn.Plugin({state:{init(){return null},apply(o,s,i){let l=o.getMeta(r);if(l)return l;let a=o.getMeta("applyInputRules");return a&&setTimeout(()=>{let{text:m}=a;typeof m=="string"?m=m:m=Ln(Wn.Fragment.from(m),i.schema);let{from:d}=a,p=d+m.length;Ae({editor:t,from:d,to:p,text:m,rules:n,plugin:r})}),o.selectionSet||o.docChanged?null:s}},props:{handleTextInput(o,s,i,l){return Ae({editor:t,from:s,to:i,text:l,rules:n,plugin:r})},handleDOMEvents:{compositionend:o=>(setTimeout(()=>{let{$cursor:s}=o.state.selection;s&&Ae({editor:t,from:s.pos,to:s.pos,text:"",rules:n,plugin:r})}),!1)},handleKeyDown(o,s){if(s.key!=="Enter")return!1;let{$cursor:i}=o.state.selection;return i?Ae({editor:t,from:i.pos,to:i.pos,text:`
|
|
4
|
+
`,rules:n,plugin:r}):!1}},isInputRules:!0});return r}function Us(e){return Object.prototype.toString.call(e).slice(8,-1)}function Pe(e){return Us(e)!=="Object"?!1:e.constructor===Object&&Object.getPrototypeOf(e)===Object.prototype}function Jn(e,t){let n={...e};return Pe(e)&&Pe(t)&&Object.keys(t).forEach(r=>{Pe(t[r])&&Pe(e[r])?n[r]=Jn(e[r],t[r]):n[r]=t[r]}),n}var pt=class{constructor(e={}){this.type="extendable",this.parent=null,this.child=null,this.name="",this.config={name:this.name},this.config={...this.config,...e},this.name=this.config.name}get options(){return{...B(x(this,"addOptions",{name:this.name}))||{}}}get storage(){return{...B(x(this,"addStorage",{name:this.name,options:this.options}))||{}}}configure(e={}){let t=this.extend({...this.config,addOptions:()=>Jn(this.options,e)});return t.name=this.name,t.parent=this.parent,this.child=null,t}extend(e={}){let t=new this.constructor({...this.config,...e});return t.parent=this,this.child=t,t.name="name"in e?e.name:t.parent.name,t}},ft=class qn extends pt{constructor(){super(...arguments),this.type="mark"}static create(t={}){let n=typeof t=="function"?t():t;return new qn(n)}static handleExit({editor:t,mark:n}){let{tr:r}=t.state,o=t.state.selection.$from;if(o.pos===o.end()){let i=o.marks();if(!!!i.find(c=>c?.type.name===n.name))return!1;let a=i.find(c=>c?.type.name===n.name);return a&&r.removeStoredMark(a),r.insertText(" ",o.pos),t.view.dispatch(r),!0}return!1}configure(t){return super.configure(t)}extend(t){let n=typeof t=="function"?t():t;return super.extend(n)}};function Rs(e){return typeof e=="number"}var Fs=(e,t,n)=>{if(ct(t))return[...e.matchAll(t)];let r=t(e,n);return r?r.map(o=>{let s=[o.text];return s.index=o.index,s.input=e,s.data=o.data,o.replaceWith&&(o.text.includes(o.replaceWith)||console.warn('[tiptap warn]: "pasteRuleMatch.replaceWith" must be part of "pasteRuleMatch.text".'),s.push(o.replaceWith)),s}):[]};function Vs(e){let{editor:t,state:n,from:r,to:o,rule:s,pasteEvent:i,dropEvent:l}=e,{commands:a,chain:c,can:m}=new at({editor:t,state:n}),d=[];return n.doc.nodesBetween(r,o,(u,h)=>{var f,g,v,y,S;if((g=(f=u.type)==null?void 0:f.spec)!=null&&g.code||!(u.isText||u.isTextblock||u.isInline))return;let C=(S=(y=(v=u.content)==null?void 0:v.size)!=null?y:u.nodeSize)!=null?S:0,T=Math.max(r,h),E=Math.min(o,h+C);if(T>=E)return;let A=u.isText?u.text||"":u.textBetween(T-h,E-h,void 0,"\uFFFC");Fs(A,s.find,i).forEach(D=>{if(D.index===void 0)return;let z=T+D.index+1,P=z+D[0].length,q={from:n.tr.mapping.map(z),to:n.tr.mapping.map(P)},$=s.handler({state:n,range:q,match:D,commands:a,chain:c,can:m,pasteEvent:i,dropEvent:l});d.push($)})}),d.every(u=>u!==null)}var Ne=null,Ws=e=>{var t;let n=new ClipboardEvent("paste",{clipboardData:new DataTransfer});return(t=n.clipboardData)==null||t.setData("text/html",e),n};function Ks(e){let{editor:t,rules:n}=e,r=null,o=!1,s=!1,i=typeof ClipboardEvent<"u"?new ClipboardEvent("paste"):null,l;try{l=typeof DragEvent<"u"?new DragEvent("drop"):null}catch{l=null}let a=({state:m,from:d,to:p,rule:u,pasteEvt:h})=>{let f=m.tr,g=He({state:m,transaction:f});if(!(!Vs({editor:t,state:g,from:Math.max(d-1,0),to:p.b-1,rule:u,pasteEvent:h,dropEvent:l})||!f.steps.length)){try{l=typeof DragEvent<"u"?new DragEvent("drop"):null}catch{l=null}return i=typeof ClipboardEvent<"u"?new ClipboardEvent("paste"):null,f}};return n.map(m=>new Yn.Plugin({view(d){let p=h=>{var f;r=(f=d.dom.parentElement)!=null&&f.contains(h.target)?d.dom.parentElement:null,r&&(Ne=t)},u=()=>{Ne&&(Ne=null)};return window.addEventListener("dragstart",p),window.addEventListener("dragend",u),{destroy(){window.removeEventListener("dragstart",p),window.removeEventListener("dragend",u)}}},props:{handleDOMEvents:{drop:(d,p)=>{if(s=r===d.dom.parentElement,l=p,!s){let u=Ne;u?.isEditable&&setTimeout(()=>{let h=u.state.selection;h&&u.commands.deleteRange({from:h.from,to:h.to})},10)}return!1},paste:(d,p)=>{var u;let h=(u=p.clipboardData)==null?void 0:u.getData("text/html");return i=p,o=!!h?.includes("data-pm-slice"),!1}}},appendTransaction:(d,p,u)=>{let h=d[0],f=h.getMeta("uiEvent")==="paste"&&!o,g=h.getMeta("uiEvent")==="drop"&&!s,v=h.getMeta("applyPasteRules"),y=!!v;if(!f&&!g&&!y)return;if(y){let{text:T}=v;typeof T=="string"?T=T:T=Ln(Xn.Fragment.from(T),u.schema);let{from:E}=v,A=E+T.length,I=Ws(T);return a({rule:m,state:u,from:E,to:{b:A},pasteEvt:I})}let S=p.doc.content.findDiffStart(u.doc.content),C=p.doc.content.findDiffEnd(u.doc.content);if(!(!Rs(S)||!C||S===C.b))return a({rule:m,state:u,from:S,to:C,pasteEvt:i})}}))}var ht=class{constructor(e,t){this.splittableMarks=[],this.editor=t,this.baseExtensions=e,this.extensions=On(e),this.schema=rs(this.extensions,t),this.setupExtensions()}get commands(){return this.extensions.reduce((e,t)=>{let n={name:t.name,options:t.options,storage:this.editor.extensionStorage[t.name],editor:this.editor,type:xe(t.name,this.schema)},r=x(t,"addCommands",n);return r?{...e,...r()}:e},{})}get plugins(){let{editor:e}=this;return be([...this.extensions].reverse()).flatMap(r=>{let o={name:r.name,options:r.options,storage:this.editor.extensionStorage[r.name],editor:e,type:xe(r.name,this.schema)},s=[],i=x(r,"addKeyboardShortcuts",o),l={};if(r.type==="mark"&&x(r,"exitable",o)&&(l.ArrowRight=()=>ft.handleExit({editor:e,mark:r})),i){let p=Object.fromEntries(Object.entries(i()).map(([u,h])=>[u,()=>h({editor:e})]));l={...l,...p}}let a=(0,Vn.keymap)(l);s.push(a);let c=x(r,"addInputRules",o);if(Qt(r,e.options.enableInputRules)&&c){let p=c();if(p&&p.length){let u=js({editor:e,rules:p}),h=Array.isArray(u)?u:[u];s.push(...h)}}let m=x(r,"addPasteRules",o);if(Qt(r,e.options.enablePasteRules)&&m){let p=m();if(p&&p.length){let u=Ks({editor:e,rules:p});s.push(...u)}}let d=x(r,"addProseMirrorPlugins",o);if(d){let p=d();s.push(...p)}return s})}get attributes(){return Dn(this.extensions)}get nodeViews(){let{editor:e}=this,{nodeExtensions:t}=ue(this.extensions);return Object.fromEntries(t.filter(n=>!!x(n,"addNodeView")).map(n=>{let r=this.attributes.filter(a=>a.type===n.name),o={name:n.name,options:n.options,storage:this.editor.extensionStorage[n.name],editor:e,type:F(n.name,this.schema)},s=x(n,"addNodeView",o);if(!s)return[];let i=s();if(!i)return[];let l=(a,c,m,d,p)=>{let u=$e(a,r);return i({node:a,view:c,getPos:m,decorations:d,innerDecorations:p,editor:e,extension:n,HTMLAttributes:u})};return[n.name,l]}))}dispatchTransaction(e){let{editor:t}=this;return be([...this.extensions].reverse()).reduceRight((r,o)=>{let s={name:o.name,options:o.options,storage:this.editor.extensionStorage[o.name],editor:t,type:xe(o.name,this.schema)},i=x(o,"dispatchTransaction",s);return i?l=>{i.call(s,{transaction:l,next:r})}:r},e)}transformPastedHTML(e){let{editor:t}=this;return be([...this.extensions]).reduce((r,o)=>{let s={name:o.name,options:o.options,storage:this.editor.extensionStorage[o.name],editor:t,type:xe(o.name,this.schema)},i=x(o,"transformPastedHTML",s);return i?(l,a)=>{let c=r(l,a);return i.call(s,c)}:r},e||(r=>r))}get markViews(){let{editor:e}=this,{markExtensions:t}=ue(this.extensions);return Object.fromEntries(t.filter(n=>!!x(n,"addMarkView")).map(n=>{let r=this.attributes.filter(l=>l.type===n.name),o={name:n.name,options:n.options,storage:this.editor.extensionStorage[n.name],editor:e,type:te(n.name,this.schema)},s=x(n,"addMarkView",o);if(!s)return[];let i=(l,a,c)=>{let m=$e(l,r);return s()({mark:l,view:a,inline:c,editor:e,extension:n,HTMLAttributes:m,updateAttributes:d=>{pi(l,e,d)}})};return[n.name,i]}))}destroy(){this.extensions.forEach(e=>{let t=e;for(;t.parent;){let n=t.parent;n.child===t&&(n.child=null),t=n}}),this.extensions=[],this.baseExtensions=[],this.schema=null,this.editor=null}setupExtensions(){let e=this.extensions;this.editor.extensionStorage=Object.fromEntries(e.map(t=>[t.name,t.storage])),e.forEach(t=>{var n;let r={name:t.name,options:t.options,storage:this.editor.extensionStorage[t.name],editor:this.editor,type:xe(t.name,this.schema)};t.type==="mark"&&((n=B(x(t,"keepOnSplit",r)))==null||n)&&this.splittableMarks.push(t.name);let o=x(t,"onBeforeCreate",r),s=x(t,"onCreate",r),i=x(t,"onUpdate",r),l=x(t,"onSelectionUpdate",r),a=x(t,"onTransaction",r),c=x(t,"onFocus",r),m=x(t,"onBlur",r),d=x(t,"onDestroy",r);o&&this.editor.on("beforeCreate",o),s&&this.editor.on("create",s),i&&this.editor.on("update",i),l&&this.editor.on("selectionUpdate",l),a&&this.editor.on("transaction",a),c&&this.editor.on("focus",c),m&&this.editor.on("blur",m),d&&this.editor.on("destroy",d)})}};ht.resolve=On;ht.sort=be;ht.flatten=ut;var Js={};it(Js,{ClipboardTextSerializer:()=>qs,Commands:()=>Xs,Delete:()=>Ys,Drop:()=>Gs,Editable:()=>Qs,FocusEvents:()=>Zs,Keymap:()=>ei,Paste:()=>ti,Tabindex:()=>ni,TextDirection:()=>ri,focusEventsPluginKey:()=>Zn});var Z=class Gn extends pt{constructor(){super(...arguments),this.type="extension"}static create(t={}){let n=typeof t=="function"?t():t;return new Gn(n)}configure(t){return super.configure(t)}extend(t){let n=typeof t=="function"?t():t;return super.extend(n)}},qs=Z.create({name:"clipboardTextSerializer",addOptions(){return{blockSeparator:void 0}},addProseMirrorPlugins(){return[new Ue.Plugin({key:new Ue.PluginKey("clipboardTextSerializer"),props:{clipboardTextSerializer:()=>{let{editor:e}=this,{state:t,schema:n}=e,{doc:r,selection:o}=t,{ranges:s}=o,i=Math.min(...s.map(m=>m.$from.pos)),l=Math.max(...s.map(m=>m.$to.pos)),a=cs(n);return as(r,{from:i,to:l},{...this.options.blockSeparator!==void 0?{blockSeparator:this.options.blockSeparator}:{},textSerializers:a})}}})]}}),Xs=Z.create({name:"commands",addCommands(){return{...en}}}),Ys=Z.create({name:"delete",onUpdate({transaction:e,appendedTransactions:t}){var n,r,o;let s=()=>{var i,l,a,c;if((c=(a=(l=(i=this.editor.options.coreExtensionOptions)==null?void 0:i.delete)==null?void 0:l.filterTransaction)==null?void 0:a.call(l,e))!=null?c:e.getMeta("y-sync$"))return;let m=Xo(e.before,[e,...t]);us(m).forEach(u=>{m.mapping.mapResult(u.oldRange.from).deletedAfter&&m.mapping.mapResult(u.oldRange.to).deletedBefore&&m.before.nodesBetween(u.oldRange.from,u.oldRange.to,(h,f)=>{let g=f+h.nodeSize-2,v=u.oldRange.from<=f&&g<=u.oldRange.to;this.editor.emit("delete",{type:"node",node:h,from:f,to:g,newFrom:m.mapping.map(f),newTo:m.mapping.map(g),deletedRange:u.oldRange,newRange:u.newRange,partial:!v,editor:this.editor,transaction:e,combinedTransform:m})})});let p=m.mapping;m.steps.forEach((u,h)=>{var f,g;if(u instanceof Qn.RemoveMarkStep){let v=p.slice(h).map(u.from,-1),y=p.slice(h).map(u.to),S=p.invert().map(v,-1),C=p.invert().map(y),T=v>0?(f=m.doc.nodeAt(v-1))==null?void 0:f.marks.some(A=>A.eq(u.mark)):!1,E=(g=m.doc.nodeAt(y))==null?void 0:g.marks.some(A=>A.eq(u.mark));this.editor.emit("delete",{type:"mark",mark:u.mark,from:u.from,to:u.to,deletedRange:{from:S,to:C},newRange:{from:v,to:y},partial:!!(E||T),editor:this.editor,transaction:e,combinedTransform:m})}})};(o=(r=(n=this.editor.options.coreExtensionOptions)==null?void 0:n.delete)==null?void 0:r.async)==null||o?setTimeout(s,0):s()}}),Gs=Z.create({name:"drop",addProseMirrorPlugins(){return[new Re.Plugin({key:new Re.PluginKey("tiptapDrop"),props:{handleDrop:(e,t,n,r)=>{this.editor.emit("drop",{editor:this.editor,event:t,slice:n,moved:r})}}})]}}),Qs=Z.create({name:"editable",addProseMirrorPlugins(){return[new Fe.Plugin({key:new Fe.PluginKey("editable"),props:{editable:()=>this.editor.options.editable}})]}}),Zn=new Ve.PluginKey("focusEvents"),Zs=Z.create({name:"focusEvents",addProseMirrorPlugins(){let{editor:e}=this;return[new Ve.Plugin({key:Zn,props:{handleDOMEvents:{focus:(t,n)=>{e.isFocused=!0;let r=e.state.tr.setMeta("focus",{event:n}).setMeta("addToHistory",!1);return t.dispatch(r),!1},blur:(t,n)=>{e.isFocused=!1;let r=e.state.tr.setMeta("blur",{event:n}).setMeta("addToHistory",!1);return t.dispatch(r),!1}}}})]}}),ei=Z.create({name:"keymap",addKeyboardShortcuts(){let e=()=>this.editor.commands.first(({commands:i})=>[()=>i.undoInputRule(),()=>i.command(({tr:l})=>{let{selection:a,doc:c}=l,{empty:m,$anchor:d}=a,{pos:p,parent:u}=d,h=d.parent.isTextblock&&p>0?l.doc.resolve(p-1):d,f=h.parent.type.spec.isolating,g=d.pos-d.parentOffset,v=f&&h.parent.childCount===1?g===d.pos:re.Selection.atStart(c).from===p;return!m||!u.type.isTextblock||u.textContent.length||!v||v&&d.parent.type.name==="paragraph"?!1:i.clearNodes()}),()=>i.deleteSelection(),()=>i.joinBackward(),()=>i.selectNodeBackward()]),t=()=>this.editor.commands.first(({commands:i})=>[()=>i.deleteSelection(),()=>i.deleteCurrentNode(),()=>i.joinForward(),()=>i.selectNodeForward()]),r={Enter:()=>this.editor.commands.first(({commands:i})=>[()=>i.newlineInCode(),()=>i.createParagraphNear(),()=>i.liftEmptyBlock(),()=>i.splitBlock()]),"Mod-Enter":()=>this.editor.commands.exitCode(),Backspace:e,"Mod-Backspace":e,"Shift-Backspace":e,Delete:t,"Mod-Delete":t,"Mod-a":()=>this.editor.commands.selectAll()},o={...r},s={...r,"Ctrl-h":e,"Alt-Backspace":e,"Ctrl-d":t,"Ctrl-Alt-Backspace":t,"Alt-Delete":t,"Alt-d":t,"Ctrl-a":()=>this.editor.commands.selectTextblockStart(),"Ctrl-e":()=>this.editor.commands.selectTextblockEnd()};return Be()||yn()?s:o},addProseMirrorPlugins(){return[new re.Plugin({key:new re.PluginKey("clearDocument"),appendTransaction:(e,t,n)=>{if(e.some(f=>f.getMeta("composition")))return;let r=e.some(f=>f.docChanged)&&!t.doc.eq(n.doc),o=e.some(f=>f.getMeta("preventClearDocument"));if(!r||o)return;let{empty:s,from:i,to:l}=t.selection,a=re.Selection.atStart(t.doc).from,c=re.Selection.atEnd(t.doc).to;if(s||!(i===a&&l===c)||!Bn(n.doc))return;let p=n.tr,u=He({state:n,transaction:p}),{commands:h}=new at({editor:this.editor,state:u});if(h.clearNodes(),!!p.steps.length)return p}})]}}),ti=Z.create({name:"paste",addProseMirrorPlugins(){return[new We.Plugin({key:new We.PluginKey("tiptapPaste"),props:{handlePaste:(e,t,n)=>{this.editor.emit("paste",{editor:this.editor,event:t,slice:n})}}})]}}),ni=Z.create({name:"tabindex",addOptions(){return{value:void 0}},addProseMirrorPlugins(){return[new Ke.Plugin({key:new Ke.PluginKey("tabindex"),props:{attributes:()=>{var e;return!this.editor.isEditable&&this.options.value===void 0?{}:{tabindex:(e=this.options.value)!=null?e:"0"}}}})]}}),ri=Z.create({name:"textDirection",addOptions(){return{direction:void 0}},addGlobalAttributes(){if(!this.options.direction)return[];let{nodeExtensions:e}=ue(this.extensions);return[{types:e.filter(t=>t.name!=="text").map(t=>t.name),attributes:{dir:{default:this.options.direction,parseHTML:t=>{let n=t.getAttribute("dir");return n&&(n==="ltr"||n==="rtl"||n==="auto")?n:this.options.direction},renderHTML:t=>t.dir?{dir:t.dir}:{}}}}]},addProseMirrorPlugins(){return[new Je.Plugin({key:new Je.PluginKey("textDirection"),props:{attributes:()=>{let e=this.options.direction;return e?{dir:e}:{}}}})]}});var si={};it(si,{createAtomBlockMarkdownSpec:()=>ii,createBlockMarkdownSpec:()=>ai,createInlineMarkdownSpec:()=>di,parseAttributes:()=>gt,parseIndentedBlocks:()=>ui,renderNestedMarkdownContent:()=>mi,serializeAttributes:()=>vt});function gt(e){if(!e?.trim())return{};let t={},n=[],r=e.replace(/["']([^"']*)["']/g,c=>(n.push(c),`__QUOTED_${n.length-1}__`)),o=r.match(/(?:^|\s)\.([a-zA-Z][\w-]*)/g);if(o){let c=o.map(m=>m.trim().slice(1));t.class=c.join(" ")}let s=r.match(/(?:^|\s)#([a-zA-Z][\w-]*)/);s&&(t.id=s[1]);let i=/([a-zA-Z][\w-]*)\s*=\s*(__QUOTED_\d+__)/g;Array.from(r.matchAll(i)).forEach(([,c,m])=>{var d;let p=parseInt(((d=m.match(/__QUOTED_(\d+)__/))==null?void 0:d[1])||"0",10),u=n[p];u&&(t[c]=u.slice(1,-1))});let a=r.replace(/(?:^|\s)\.([a-zA-Z][\w-]*)/g,"").replace(/(?:^|\s)#([a-zA-Z][\w-]*)/g,"").replace(/([a-zA-Z][\w-]*)\s*=\s*__QUOTED_\d+__/g,"").trim();return a&&a.split(/\s+/).filter(Boolean).forEach(m=>{m.match(/^[a-zA-Z][\w-]*$/)&&(t[m]=!0)}),t}function vt(e){if(!e||Object.keys(e).length===0)return"";let t=[];return e.class&&String(e.class).split(/\s+/).filter(Boolean).forEach(r=>t.push(`.${r}`)),e.id&&t.push(`#${e.id}`),Object.entries(e).forEach(([n,r])=>{n==="class"||n==="id"||(r===!0?t.push(n):r!==!1&&r!=null&&t.push(`${n}="${String(r)}"`))}),t.join(" ")}function ii(e){let{nodeName:t,name:n,parseAttributes:r=gt,serializeAttributes:o=vt,defaultAttributes:s={},requiredAttributes:i=[],allowedAttributes:l}=e,a=n||t,c=m=>{if(!l)return m;let d={};return l.forEach(p=>{p in m&&(d[p]=m[p])}),d};return{parseMarkdown:(m,d)=>{let p={...s,...m.attributes};return d.createNode(t,p,[])},markdownTokenizer:{name:t,level:"block",start(m){var d;let p=new RegExp(`^:::${a}(?:\\s|$)`,"m"),u=(d=m.match(p))==null?void 0:d.index;return u!==void 0?u:-1},tokenize(m,d,p){let u=new RegExp(`^:::${a}(?:\\s+\\{([^}]*)\\})?\\s*:::(?:\\n|$)`),h=m.match(u);if(!h)return;let f=h[1]||"",g=r(f);if(!i.find(y=>!(y in g)))return{type:t,raw:h[0],attributes:g}}},renderMarkdown:m=>{let d=c(m.attrs||{}),p=o(d),u=p?` {${p}}`:"";return`:::${a}${u} :::`}}}function ai(e){let{nodeName:t,name:n,getContent:r,parseAttributes:o=gt,serializeAttributes:s=vt,defaultAttributes:i={},content:l="block",allowedAttributes:a}=e,c=n||t,m=d=>{if(!a)return d;let p={};return a.forEach(u=>{u in d&&(p[u]=d[u])}),p};return{parseMarkdown:(d,p)=>{let u;if(r){let f=r(d);u=typeof f=="string"?[{type:"text",text:f}]:f}else l==="block"?u=p.parseChildren(d.tokens||[]):u=p.parseInline(d.tokens||[]);let h={...i,...d.attributes};return p.createNode(t,h,u)},markdownTokenizer:{name:t,level:"block",start(d){var p;let u=new RegExp(`^:::${c}`,"m"),h=(p=d.match(u))==null?void 0:p.index;return h!==void 0?h:-1},tokenize(d,p,u){var h;let f=new RegExp(`^:::${c}(?:\\s+\\{([^}]*)\\})?\\s*\\n`),g=d.match(f);if(!g)return;let[v,y=""]=g,S=o(y),C=1,T=v.length,E="",A=/^:::([\w-]*)(\s.*)?/gm,I=d.slice(T);for(A.lastIndex=0;;){let D=A.exec(I);if(D===null)break;let z=D.index,P=D[1];if(!((h=D[2])!=null&&h.endsWith(":::"))){if(P)C+=1;else if(C-=1,C===0){let q=I.slice(0,z);E=q.trim();let $=d.slice(0,T+z+D[0].length),R=[];if(E)if(l==="block")for(R=u.blockTokens(q),R.forEach(j=>{j.text&&(!j.tokens||j.tokens.length===0)&&(j.tokens=u.inlineTokens(j.text))});R.length>0;){let j=R[R.length-1];if(j.type==="paragraph"&&(!j.text||j.text.trim()===""))R.pop();else break}else R=u.inlineTokens(E);return{type:t,raw:$,attributes:S,content:E,tokens:R}}}}}},renderMarkdown:(d,p)=>{let u=m(d.attrs||{}),h=s(u),f=h?` {${h}}`:"",g=p.renderChildren(d.content||[],`
|
|
5
5
|
|
|
6
|
-
`);return`:::${
|
|
6
|
+
`);return`:::${c}${f}
|
|
7
7
|
|
|
8
8
|
${g}
|
|
9
9
|
|
|
10
|
-
:::`}}}function
|
|
11
|
-
`),a=[],
|
|
12
|
-
`;continue}else return}let h=t.extractItemData(u),{indentLevel:f,mainContent:g}=h;
|
|
13
|
-
`;let v=[g];for(
|
|
14
|
-
`,
|
|
15
|
-
`,
|
|
16
|
-
`);
|
|
10
|
+
:::`}}}function ci(e){if(!e.trim())return{};let t={},n=/(\w+)=(?:"([^"]*)"|'([^']*)')/g,r=n.exec(e);for(;r!==null;){let[,o,s,i]=r;t[o]=s||i,r=n.exec(e)}return t}function li(e){return Object.entries(e).filter(([,t])=>t!=null).map(([t,n])=>`${t}="${n}"`).join(" ")}function di(e){let{nodeName:t,name:n,getContent:r,parseAttributes:o=ci,serializeAttributes:s=li,defaultAttributes:i={},selfClosing:l=!1,allowedAttributes:a}=e,c=n||t,m=p=>{if(!a)return p;let u={};return a.forEach(h=>{let f=typeof h=="string"?h:h.name,g=typeof h=="string"?void 0:h.skipIfDefault;if(f in p){let v=p[f];if(g!==void 0&&v===g)return;u[f]=v}}),u},d=c.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return{parseMarkdown:(p,u)=>{let h={...i,...p.attributes};if(l)return u.createNode(t,h);let f=r?r(p):p.content||"";return f?u.createNode(t,h,[u.createTextNode(f)]):u.createNode(t,h,[])},markdownTokenizer:{name:t,level:"inline",start(p){let u=l?new RegExp(`\\[${d}\\s*[^\\]]*\\]`):new RegExp(`\\[${d}\\s*[^\\]]*\\][\\s\\S]*?\\[\\/${d}\\]`),h=p.match(u),f=h?.index;return f!==void 0?f:-1},tokenize(p,u,h){let f=l?new RegExp(`^\\[${d}\\s*([^\\]]*)\\]`):new RegExp(`^\\[${d}\\s*([^\\]]*)\\]([\\s\\S]*?)\\[\\/${d}\\]`),g=p.match(f);if(!g)return;let v="",y="";if(l){let[,C]=g;y=C}else{let[,C,T]=g;y=C,v=T||""}let S=o(y.trim());return{type:t,raw:g[0],content:v.trim(),attributes:S}}},renderMarkdown:p=>{let u="";r?u=r(p):p.content&&p.content.length>0&&(u=p.content.filter(v=>v.type==="text").map(v=>v.text).join(""));let h=m(p.attrs||{}),f=s(h),g=f?` ${f}`:"";return l?`[${c}${g}]`:`[${c}${g}]${u}[/${c}]`}}}function ui(e,t,n){var r,o,s,i;let l=e.split(`
|
|
11
|
+
`),a=[],c="",m=0,d=t.baseIndentSize||2;for(;m<l.length;){let p=l[m],u=p.match(t.itemPattern);if(!u){if(a.length>0)break;if(p.trim()===""){m+=1,c=`${c}${p}
|
|
12
|
+
`;continue}else return}let h=t.extractItemData(u),{indentLevel:f,mainContent:g}=h;c=`${c}${p}
|
|
13
|
+
`;let v=[g];for(m+=1;m<l.length;){let T=l[m];if(T.trim()===""){let A=l.slice(m+1).findIndex(z=>z.trim()!=="");if(A===-1)break;if((((o=(r=l[m+1+A].match(/^(\s*)/))==null?void 0:r[1])==null?void 0:o.length)||0)>f){v.push(T),c=`${c}${T}
|
|
14
|
+
`,m+=1;continue}else break}if((((i=(s=T.match(/^(\s*)/))==null?void 0:s[1])==null?void 0:i.length)||0)>f)v.push(T),c=`${c}${T}
|
|
15
|
+
`,m+=1;else break}let y,S=v.slice(1);if(S.length>0){let T=S.map(E=>E.slice(f+d)).join(`
|
|
16
|
+
`);T.trim()&&(t.customNestedParser?y=t.customNestedParser(T):y=n.blockTokens(T))}let C=t.createToken(h,y);a.push(C)}if(a.length!==0)return{items:a,raw:c}}function mi(e,t,n,r){if(!e||!Array.isArray(e.content))return"";let o=typeof n=="function"?n(r):n,[s,...i]=e.content,l=t.renderChildren([s]),a=`${o}${l}`;return i&&i.length>0&&i.forEach((c,m)=>{var d,p;let u=(p=(d=t.renderChild)==null?void 0:d.call(t,c,m+1))!=null?p:t.renderChildren([c]);if(u!=null){let h=u.split(`
|
|
17
17
|
`).map(f=>f?t.indent(f):t.indent("")).join(`
|
|
18
|
-
`);a+=
|
|
18
|
+
`);a+=c.type==="paragraph"?`
|
|
19
19
|
|
|
20
20
|
${h}`:`
|
|
21
|
-
${h}`}}),a}function di(e,t,n={}){let{state:r}=t,{doc:o,tr:s}=r,i=e;o.descendants((c,a)=>{let l=s.mapping.map(a),p=s.mapping.map(a)+c.nodeSize,d=null;if(c.marks.forEach(u=>{if(u!==i)return!1;d=u}),!d)return;let m=!1;if(Object.keys(n).forEach(u=>{n[u]!==d.attrs[u]&&(m=!0)}),m){let u=e.type.create({...e.attrs,...n});s.removeMark(l,p,e.type),s.addMark(l,p,u)}}),s.docChanged&&t.view.dispatch(s)}var er=class tr extends ut{constructor(){super(...arguments),this.type="node"}static create(t={}){let n=typeof t=="function"?t():t;return new tr(n)}configure(t){return super.configure(t)}extend(t){let n=typeof t=="function"?t():t;return super.extend(n)}};var mi=mt.create({name:"underline",addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:"u"},{style:"text-decoration",consuming:!1,getAttrs:e=>e.includes("underline")?{}:!1}]},renderHTML({HTMLAttributes:e}){return["u",ke(this.options.HTMLAttributes,e),0]},parseMarkdown(e,t){return t.applyMark(this.name||"underline",t.parseInline(e.tokens||[]))},renderMarkdown(e,t){return`++${t.renderChildren(e)}++`},markdownTokenizer:{name:"underline",level:"inline",start(e){return e.indexOf("++")},tokenize(e,t,n){let o=/^(\+\+)([\s\S]+?)(\+\+)/.exec(e);if(!o)return;let s=o[2].trim();return{type:"underline",raw:o[0],text:s,tokens:n.inlineTokens(s)}}},addCommands(){return{setUnderline:()=>({commands:e})=>e.setMark(this.name),toggleUnderline:()=>({commands:e})=>e.toggleMark(this.name),unsetUnderline:()=>({commands:e})=>e.unsetMark(this.name)}},addKeyboardShortcuts(){return{"Mod-u":()=>this.editor.commands.toggleUnderline(),"Mod-U":()=>this.editor.commands.toggleUnderline()}}}),nr=mi;var lr=require("@tiptap/react"),dr=H(require("@tiptap/starter-kit")),j=require("@mantine/tiptap"),J=require("@mantine/core");var V=H(require("react")),me=require("@mantine/core"),rr=H(require("@emoji-mart/data")),pi=(0,V.lazy)(()=>import("@emoji-mart/react"));function gt({onSelect:e,action:t,size:n=320,offset:r=8,position:o="bottom-start",colorScheme:s="light"}){let[i,c]=(0,V.useState)(!1);return V.default.createElement(me.Popover,{opened:i,onChange:c,width:n,position:o,offset:r,withArrow:!0,shadow:"md",trapFocus:!1,closeOnEscape:!0},V.default.createElement(me.Popover.Target,null,(0,V.cloneElement)(t,{onClick:a=>{t.props?.onClick?.(a),c(l=>!l)}})),V.default.createElement(me.Popover.Dropdown,{p:0},V.default.createElement(V.Suspense,{fallback:V.default.createElement("div",{style:{padding:12,width:320}},V.default.createElement(me.Skeleton,{height:280,radius:"md"}))},V.default.createElement(pi,{previewPosition:"none",theme:s,data:rr.default,onEmojiSelect:a=>{e(a.native),c(!1)}}))))}var or=er.create({name:"emoji",inline:!0,group:"inline",selectable:!1,atom:!0,addAttributes(){return{emoji:{default:"\u{1F600}"}}},parseHTML(){return[{tag:"span[data-emoji]"}]},renderHTML({HTMLAttributes:e}){return["span",ke(e,{class:"emoji-big","data-emoji":e.emoji}),e.emoji]}});function vt({content:e="",maxLength:t=3e3,onChange:n,onSubmit:r,colorScheme:o="light"}){let[s,i]=(0,M.useState)(0),[c,a]=(0,M.useState)(!1),[l,p]=(0,M.useState)(!1),[d,m]=(0,M.useState)(!1),u=()=>{if(!f)return;let g=f.getHTML();f.getText().trim()&&(r?.(g),f.commands.clearContent(),f.commands.focus(),i(0),a(!1))},h=(g,v)=>v.key==="Enter"&&!v.shiftKey?(v.preventDefault(),u(),!0):v.key==="Enter"&&v.shiftKey?(v.preventDefault(),f?.commands.setHardBreak(),!0):!1,f=(0,lr.useEditor)({extensions:[dr.default,or,nr,j.Link,ar.default,ir.default,sr.default,cr.default.configure({types:["heading","paragraph"]})],content:e,editorProps:{handleKeyDown:h},onUpdate:({editor:g})=>{let v=g.getText(),y=v.trim().length>0;i(v.length),a(y),t&&v.length>=t?p(!0):p(!1),n&&n(g.getHTML())},immediatelyRender:!1});return M.default.createElement(M.default.Fragment,null,M.default.createElement(j.RichTextEditor,{editor:f,w:"100%",className:"mrchat-richTextEditorContainer"},M.default.createElement(j.RichTextEditor.Content,null),M.default.createElement(j.RichTextEditor.Toolbar,{sticky:!0,stickyOffset:"var(--docs-header-height)"},M.default.createElement("div",{className:"mrchat-mainActionContainer"},M.default.createElement(gt,{colorScheme:o,onSelect:g=>{f?.chain().focus().insertContent({type:"emoji",attrs:{emoji:g}}).run()},action:M.default.createElement(J.ActionIcon,{radius:"lg",variant:"subtle","aria-label":"add",className:"mrchat-mainActionEmojiIcon"},M.default.createElement(W.IconMoodPlus,null))}),M.default.createElement(J.ActionIcon,{radius:"lg",variant:"subtle","aria-label":"text_format",className:"mrchat-mainTextFormatIcon",onClick:()=>m(g=>!g)},M.default.createElement(W.IconTextColor,{stroke:1.7})),M.default.createElement(J.ActionIcon,{radius:"lg",variant:"filled","aria-label":"send",className:"mrchat-mainSendMsgIcon",onClick:u,disabled:!c},M.default.createElement(W.IconSend,{size:18}))),M.default.createElement(J.ActionIcon,{radius:"lg",variant:"filled","aria-label":"send",className:"mrchat-sm-mainSendMsgIcon",onClick:u,disabled:!c},M.default.createElement(W.IconSend,{size:18})),d&&M.default.createElement(M.default.Fragment,null,M.default.createElement(j.RichTextEditor.ControlsGroup,null,M.default.createElement(j.RichTextEditor.Bold,null),M.default.createElement(j.RichTextEditor.Italic,null),M.default.createElement(j.RichTextEditor.Underline,null),M.default.createElement(j.RichTextEditor.Strikethrough,null),M.default.createElement(j.RichTextEditor.Code,null),M.default.createElement(j.RichTextEditor.Highlight,null)),M.default.createElement(j.RichTextEditor.ControlsGroup,{className:"mrchat-secondRichTextEditorToolBar"},M.default.createElement(j.RichTextEditor.BulletList,null),M.default.createElement(j.RichTextEditor.OrderedList,null),M.default.createElement(J.Menu,{trigger:"hover",openDelay:200},M.default.createElement(J.Menu.Target,null,M.default.createElement(J.ActionIcon,{variant:"outline",size:"md",className:"mrchat-customToolActionItem"},M.default.createElement(W.IconAlignLeft,{size:16,stroke:1.5}))),M.default.createElement(J.Menu.Dropdown,null,M.default.createElement(J.Menu.Item,{onClick:()=>f?.chain().focus().setTextAlign("left").run()},M.default.createElement(W.IconAlignLeft,{size:14})),M.default.createElement(J.Menu.Item,{onClick:()=>f?.chain().focus().setTextAlign("center").run()},M.default.createElement(W.IconAlignCenter,{size:14})),M.default.createElement(J.Menu.Item,{onClick:()=>f?.chain().focus().setTextAlign("right").run()},M.default.createElement(W.IconAlignRight,{size:14})))),M.default.createElement(j.RichTextEditor.Link,null)),M.default.createElement(j.RichTextEditor.ControlsGroup,{className:"mrchat-secondRichTextEditorToolBar"},M.default.createElement(j.RichTextEditor.ClearFormatting,null)))),l&&M.default.createElement("div",{style:{textAlign:"right",color:"red",fontSize:12,marginTop:4}},"Character limit reached (",s,"/",t,")")))}var Je=require("react-redux"),P=H(require("react"));var pr=H(require("dompurify"));var Y=H(require("react"));function ur({data:e,renderItem:t,loadMore:n,hasMore:r,scrollToBottomTrigger:o}){let s=(0,Y.useRef)(null),i=(0,Y.useRef)(!1),c=(0,Y.useRef)(!0),a=(0,Y.useRef)(0);(0,Y.useEffect)(()=>{let d=s.current;d&&setTimeout(()=>{d.scrollTop=d.scrollHeight},100)},[o]),(0,Y.useEffect)(()=>{let d=s.current;!d||!e.length||(c.current&&(d.scrollTop=d.scrollHeight,c.current=!1),a.current=e.length)},[e]);let l=()=>{let d=s.current;d&&d.scrollTop<50&&r&&!i.current&&p()},p=async()=>{let d=s.current;if(!d||i.current||!r)return;i.current=!0;let m=d.scrollHeight,u=d.scrollTop;await n(),setTimeout(()=>{let f=d.scrollHeight-m;d.scrollTop=u+f,i.current=!1},50)};return Y.default.createElement("div",{ref:s,onScroll:l,style:{overflowY:"auto",height:"100%",display:"flex",flexDirection:"column"}},e.map((d,m)=>Y.default.createElement("div",{key:d?.id||m},t(d,m))))}var _=H(require("react")),pe=require("@mantine/core"),mr=require("@tabler/icons-react");function yt({opened:e,onClose:t,user:n,onDeleteMessages:r,onBlock:o}){let[s,i]=(0,_.useState)(e),[c,a]=(0,_.useState)(!1);(0,_.useEffect)(()=>{e&&i(!0)},[e]);let l=()=>{i(!1),setTimeout(t,250)};return!e&&!s?null:_.default.createElement(_.default.Fragment,null,_.default.createElement("div",{className:"mrchat-overlay",onClick:l},_.default.createElement("div",{className:`mrchat-drawer ${s?"mrchat-open":"mrchat-close"}`,onClick:p=>p.stopPropagation()},_.default.createElement("div",{className:"mrchat-header"},_.default.createElement("div",{className:"mrchat-backBtn",onClick:l},_.default.createElement(mr.IconArrowLeft,{size:20})),_.default.createElement(pe.Text,{fw:600},"Contact info")),_.default.createElement("div",{className:"mrchat-profileSection"},_.default.createElement(pe.Avatar,{src:n?.avatar,size:150,radius:"xl",style:{cursor:"pointer"},onClick:()=>n?.avatar?a(!0):{}}),_.default.createElement(pe.Text,{fw:700,size:"lg",mt:"sm"},n?.displayName),_.default.createElement(pe.Text,{size:"sm",c:"dimmed"},"@",n?.username)))),c&&_.default.createElement("div",{className:"mrchat-imagePreview",onClick:()=>a(!1)},_.default.createElement("img",{src:n?.avatar,alt:"profile"})))}function fr({chatId:e,enableChat:t,senderDetails:n,receiverDetails:r,onChatInitialized:o,onBack:s,showBackButton:i,colorScheme:c}){let a=(0,Je.useDispatch)(),l=(0,Je.useSelector)(E=>E.chat.messageList),[p,d]=(0,P.useState)(0),[m,u]=(0,P.useState)(0),[h,f]=(0,P.useState)(!1),g=l?.rows?.data||[],v=g.length===0,y=()=>{let E=l?.hasMore;if(!e||!E)return;let C=p+1;a(Qe({chatId:e,page:C,userId:n?.userId})),d(C)};(0,P.useEffect)(()=>{e&&(d(0),a(Qe({chatId:e,page:0,userId:n?.userId})))},[e]),(0,P.useEffect)(()=>{if(!n?.userId||!ie())return;let E=Q(n?.userId||"");if(!E)return;let C=T=>{T.chatId===e&&a(Ze({id:Date.now(),chatId:T.chatId,message:T.message,sender:T.sender,recipient:T.recipient,type:T.type,status:T.status,createdAt:T.time}))};return E.on("newmessage",C),()=>{E.off("newmessage",C)}},[e,n?.userId]);let I=E=>{let C=Q(n?.userId||""),T={message:E,sender:n?.userId,receiver:r?.userId,type:"text"};if(!l?.rows?.data?.length){C?.emit("initializeNewChat",{...T,senderUserDetails:{userId:n?.userId,username:n?.username,displayName:n?.displayName,avatar:n?.avatar},receiverUserDetails:{userId:r?.userId,username:r?.username,displayName:r?.displayName,avatar:r?.avatar}},N=>{if(N?.status==="success"){let{data:D}=N;a(ge({id:Date.now(),chatId:D.chatId,message:D.message,sender:D.sender,recipient:D.recipient,type:D.type,status:D.status,createdAt:new Date(D.time).getTime(),updatedAt:new Date(D.time).getTime(),userId:r?.userId,username:r?.username,displayName:r?.displayName,avatar:r?.avatar})),a(Ze({id:Date.now(),chatId:D.chatId,message:D.message,sender:D.sender,recipient:D.recipient,type:D.type,status:D.status,createdAt:Date.now()})),o?.(D)}else console.log("Failed to initialize chat",N?.error)});return}C?.emit("privatemessage",{...T,chatId:e}),u(N=>N+1)},A=()=>{l.hasMore&&y()},k=()=>{!e||!n?.userId||a(Lt({chatId:e,userId:n?.userId}))};return P.default.createElement("div",{className:"mrchat-mainArea"},P.default.createElement("div",{className:"mrchat-chatHeader"},i&&s&&P.default.createElement(se.ActionIcon,{variant:"subtle",className:"mrchat-backButton",onClick:s},P.default.createElement(Ke.IconArrowLeft,{size:20})),r&&P.default.createElement(P.default.Fragment,null,P.default.createElement("div",{className:"mrchat-receiverInfo",onClick:()=>f(!0)},r?.avatar?P.default.createElement(se.Avatar,{src:r.avatar,size:36,radius:"xl"}):P.default.createElement(se.Avatar,{key:r?.displayName||r?.username,name:r?.displayName||r?.username,color:"initials"}),P.default.createElement(se.Text,{fw:600,size:"md"},r?.displayName||r?.username)))),P.default.createElement("div",{className:"mrchat-messageArea"},v?P.default.createElement("div",{className:"mrchat-emptyState"},P.default.createElement("div",{className:"mrchat-encryptionMinimal"},P.default.createElement(Ke.IconLock,{size:20,stroke:1.8}),P.default.createElement(se.Text,{className:"mrchat-encryptionText",size:"md"},"End-to-end encrypted"))):P.default.createElement(ur,{data:g,hasMore:l?.hasMore,loadMore:A,scrollToBottomTrigger:m,renderItem:(E,C)=>{let T=E?.sender===n?.userId,L=new Date(E?.createdAt),N=g[C-1],D=C===0||new Date(N?.createdAt).toDateString()!==L.toDateString(),K=new Date,$=new Date;$.setDate(K.getDate()-1);let R=L.toDateString()===K.toDateString(),U=L.toDateString()===$.toDateString(),te="";R?te="Today":U?te="Yesterday":te=L.toLocaleDateString(void 0,{weekday:"short",month:"short",day:"numeric"});let Xe=L.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",hour12:!1});return P.default.createElement("div",{key:E?.id+"_"+C},D&&P.default.createElement("div",{className:"mrchat-dateSeparator"},te),P.default.createElement("div",{style:{borderRadius:E.sender===n?.userId?"16px 16px 1px 16px":"16px 16px 16px 1px"},className:`mrchat-messageBubble ${T?"mrchat-outgoing":"mrchat-incoming"}`},P.default.createElement("div",{className:"mrchat-messageContent",dangerouslySetInnerHTML:{__html:pr.default.sanitize(E?.message)}}),P.default.createElement("div",{className:"mrchat-messageTime"},Xe)))}})),(e||t)&&P.default.createElement("div",{className:"mrchat-inputBar"},P.default.createElement(vt,{onSubmit:I,colorScheme:c})),P.default.createElement(yt,{opened:h,onClose:()=>f(!1),user:{avatar:r?.avatar,username:r?.username,displayName:r?.displayName},onDeleteMessages:()=>{k()},onBlock:()=>{console.log("block user")}}))}var qe=require("react-redux"),w=H(require("react"));var hr=H(require("react")),gr=require("react-virtuoso");function vr({data:e,itemContent:t,height:n="100%",startReached:r,endReached:o,...s}){return hr.default.createElement(gr.Virtuoso,{style:{height:n},data:e,startReached:r,endReached:o,itemContent:(i,c)=>t(i,c),...s})}var wr=H(require("dompurify"));var yr=e=>{if(!e)return"";let t=new Date(e),n=new Date,r=new Date;r.setDate(n.getDate()-1);let o=t.toDateString()===n.toDateString(),s=t.toDateString()===r.toDateString(),i=t.toLocaleTimeString("en-GB",{hour:"2-digit",minute:"2-digit",hour12:!1});return o?i:s?"Yesterday":t.toLocaleDateString(void 0,{day:"numeric",month:"short"})};function kr({currentUser:e,onSearchUsers:t,colorScheme:n}){let[r,{open:o,close:s}]=(0,br.useDisclosure)(!1),i=(0,qe.useDispatch)(),c=(0,qe.useSelector)(x=>x.chat.messagedUserList),[a,l]=(0,w.useState)(0),[p,d]=(0,w.useState)(""),[m,u]=(0,w.useState)(!1),[h,f]=(0,w.useState)(""),[g,v]=(0,w.useState)(),[y,I]=(0,w.useState)(),[A,k]=(0,w.useState)([]),[E,C]=(0,w.useState)(!1),[T,L]=(0,w.useState)(e),[N,D]=(0,w.useState)(!1),[K,$]=(0,w.useState)(!1);(0,w.useEffect)(()=>{e?.userId&&L(e)},[e?.userId]),(0,w.useEffect)(()=>{e?.userId&&i(Ge({userId:e.userId,page:0}))},[e?.userId,i]),(0,w.useEffect)(()=>{if(typeof window>"u")return;let x=window.matchMedia("(max-width: 599px)"),S=z=>{let q="matches"in z?z.matches:x.matches;D(q),q||$(!1)};return S(x),x.addEventListener?x.addEventListener("change",S):x.addListener(S),()=>{x.removeEventListener?x.removeEventListener("change",S):x.removeListener(S)}},[]);let R=()=>{if(!y?.userId)return;let x=c?.rows?.data?.find(S=>S.userId===y.userId);if(x){te(x),s(),f("");return}i(ge({userId:y?.userId,username:y?.username,displayName:y?.displayName,avatar:y?.avatar})),v(y),s(),f(""),i(ve()),d(""),u(!0),N&&$(!0)};(0,w.useEffect)(()=>{if(!T?.userId)return;let x=Q(T.userId);x&&(x.connected||x.connect())},[T?.userId]),(0,w.useEffect)(()=>{if(!T?.userId)return;let x=Q(T.userId);if(!x)return;let S=z=>{z.sender!==T.userId&&i(ge({message:z.message,chatId:z.chatId,userId:z.sender,username:z.userDetails.username,displayName:z.userDetails.displayName,avatar:z.userDetails.avatar}))};return x.on("newChat",S),()=>{x.off("newChat",S)}},[i,T?.userId]),(0,w.useEffect)(()=>{if(!T?.userId)return;let x=Q(T?.userId||"");if(!x)return;let S=z=>{if(!c?.rows?.data)return;let q=c.rows.data.map(ne=>{if(ne.chatId===z.chatId){let Nr=z.chatId===p;return{...ne,message:z.message,updatedAt:new Date().toISOString(),unreadCount:Nr?0:(ne.unreadCount||0)+1}}return ne}),bt=q.findIndex(ne=>ne.chatId===z.chatId);if(bt!==-1){let ne=q.splice(bt,1)[0];q.unshift(ne)}console.log("Updated",q,z),i(he({...c,rows:{...c.rows,data:q}}))};return x.on("newMessageNotification",S),()=>{x.off("newMessageNotification",S)}},[c,T?.userId]);let U=()=>{if(!c?.hasMore||!e?.userId)return;let x=a+1;l(x),i(Ge({userId:e.userId,page:x}))},te=x=>{if(!T?.userId)return;let S=Q(T.userId);if(!S)return;v({userId:x.userId,username:x.username,displayName:x.displayName,avatar:x.avatar}),S.emit("joinChat",{chatId:x.chatId}),d(x?.chatId||""),i(ve());let z=c.rows.data.map(q=>q.chatId===x.chatId?{...q,unreadCount:0}:q);N&&$(!0),i(he({...c,rows:{...c.rows,data:z}}))},Xe=x=>{f(x)},Ir=()=>{$(!1)};(0,w.useEffect)(()=>{if(!h.trim()){k([]),C(!1);return}if(!t){k([]),C(!1);return}let x=!1,S=setTimeout(async()=>{try{C(!0),k([]);let z=await Promise.resolve(t(h));if(x)return;k(z)}finally{x||C(!1)}},400);return()=>{x=!0,clearTimeout(S)}},[h,t]);let Ar=x=>{let S=document.createElement("div");return S.innerHTML=x,S.textContent||""},Pr=A.map(x=>({value:x.username,label:x.displayName||x.username,user:x}));return w.default.createElement("div",{className:"mrchat-chatWrapper"},w.default.createElement(B.Modal,{opened:r,onClose:()=>{s(),f(""),k([]),C(!1)},title:"Search User",centered:!0,withCloseButton:!0},w.default.createElement(B.Autocomplete,{mb:12,label:"Search User to Chat",placeholder:"Type username to search...",limit:20,data:Pr,value:h,onChange:Xe,rightSection:E?w.default.createElement(B.Loader,{size:"xs"}):void 0,rightSectionWidth:28,onOptionSubmit:x=>{let S=A.find(z=>z.username===x);S&&(f(""),I(S),k([]),C(!1))},renderOption:({option:x})=>{let S=x.user;return w.default.createElement(B.Group,{gap:"sm"},w.default.createElement(B.Avatar,{src:S.avatar,size:36,radius:"xl"}),w.default.createElement("div",null,w.default.createElement(B.Text,{size:"sm"},S.displayName||S.username),S.displayName&&w.default.createElement(B.Text,{size:"xs",opacity:.5},"@",S.username)))}}),w.default.createElement(B.Button,{fullWidth:!0,onClick:R,disabled:!y?.username},"Start Chat")),w.default.createElement("div",{className:"mrchat-chatContainer"},w.default.createElement("div",{className:"mrchat-sidebar "+(N&&K?"mrchat-hiddenOnMobile":"")},w.default.createElement("div",{className:"mrchat-sidebarTop"},w.default.createElement("div",{className:"mrchat-topBar"},w.default.createElement(B.Text,{size:"xs",c:"dimmed",mt:"sm",mb:"xs",ml:12},"All Messages"),w.default.createElement("div",{className:"mrchat-topActions"},w.default.createElement(B.ActionIcon,{variant:"subtle",onClick:()=>{I(null),f(""),k([]),o()},radius:"lg"},w.default.createElement(xr.IconPlus,{size:20,stroke:3}))))),w.default.createElement("div",{className:"mrchat-scrollWrapper"},w.default.createElement(vr,{data:c?.rows?.data||[],endReached:U,itemContent:(x,S)=>{let z=S.chatId===p;return w.default.createElement("div",{className:`mrchat-chatItem ${z?"mrchat-activeChatItem":""}`,onClick:()=>{z||te(S)}},S.avatar?w.default.createElement(B.Avatar,{src:S.avatar,size:36,radius:"xl"}):w.default.createElement(B.Avatar,{key:S.displayName||S.username,name:S.displayName||S.username,color:"initials"}),w.default.createElement("div",{className:"mrchat-chatInfo"},w.default.createElement(B.Text,{className:"mrchat-chatLabelItem",truncate:!0},S.displayName||S.username),S.unreadCount>0&&w.default.createElement("div",{className:"mrchat-unreadBadge"},S.unreadCount||10),w.default.createElement("div",{className:"mrchat-messagePreview"},w.default.createElement(B.Text,{truncate:!0,size:"xs",c:"dimmed",style:{maxWidth:150},className:"mrchat-messagePreviewContent"},Ar(wr.default.sanitize(S.message))),w.default.createElement(B.Text,{size:"xs",c:"dimmed",className:"mrchat-messagePreviewTime"},yr(S.updatedAt||S.createdAt)))))}}))),w.default.createElement("div",{className:"mrchat-mainAreaWrapper "+(N&&!K?"mrchat-hiddenOnMobile":"")},w.default.createElement(fr,{chatId:p,enableChat:m,senderDetails:T,receiverDetails:g,onBack:Ir,showBackButton:N,onChatInitialized:x=>{te({chatId:x.chatId,userId:g?.userId,username:g?.username,displayName:g?.displayName,avatar:g?.avatar})},colorScheme:n}))))}var Mr=require("react"),Sr=require("react-redux");function Tr(){let e=(0,Sr.useDispatch)();return(0,Mr.useEffect)(()=>()=>{e(Dt())},[e]),null}function xt({colorScheme:e,primaryColor:t="customBrand",darkColor:n,authorization:r,...o}){let s=Tt(t);return(0,G.useLayoutEffect)(()=>{typeof window>"u"||Ct(r||"")},[r]),(0,G.useEffect)(()=>{if(typeof document>"u"||!n)return;let i=document.body.style.backgroundColor;return document.body.style.backgroundColor=e==="dark"?n:"",document.documentElement.style.setProperty("--mantine-color-body",e==="dark"?n:""),()=>{document.body.style.backgroundColor=i,document.documentElement.style.removeProperty("--mantine-color-body")}},[e,n]),G.default.createElement(_t,null,G.default.createElement(Rt,null,G.default.createElement(Tr,null),G.default.createElement(Er.MantineProvider,{defaultColorScheme:e??"light",forceColorScheme:e,theme:s},G.default.createElement(Cr.Notifications,null),G.default.createElement(kr,{colorScheme:e,...o}))))}0&&(module.exports={MrChat});
|
|
21
|
+
${h}`}}),a}function pi(e,t,n={}){let{state:r}=t,{doc:o,tr:s}=r,i=e;o.descendants((l,a)=>{let c=s.mapping.map(a),m=s.mapping.map(a)+l.nodeSize,d=null;if(l.marks.forEach(u=>{if(u!==i)return!1;d=u}),!d)return;let p=!1;if(Object.keys(n).forEach(u=>{n[u]!==d.attrs[u]&&(p=!0)}),p){let u=e.type.create({...e.attrs,...n});s.removeMark(c,m,e.type),s.addMark(c,m,u)}}),s.docChanged&&t.view.dispatch(s)}var tr=class nr extends pt{constructor(){super(...arguments),this.type="node"}static create(t={}){let n=typeof t=="function"?t():t;return new nr(n)}configure(t){return super.configure(t)}extend(t){let n=typeof t=="function"?t():t;return super.extend(n)}};var hi=ft.create({name:"underline",addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:"u"},{style:"text-decoration",consuming:!1,getAttrs:e=>e.includes("underline")?{}:!1}]},renderHTML({HTMLAttributes:e}){return["u",ke(this.options.HTMLAttributes,e),0]},parseMarkdown(e,t){return t.applyMark(this.name||"underline",t.parseInline(e.tokens||[]))},renderMarkdown(e,t){return`++${t.renderChildren(e)}++`},markdownTokenizer:{name:"underline",level:"inline",start(e){return e.indexOf("++")},tokenize(e,t,n){let o=/^(\+\+)([\s\S]+?)(\+\+)/.exec(e);if(!o)return;let s=o[2].trim();return{type:"underline",raw:o[0],text:s,tokens:n.inlineTokens(s)}}},addCommands(){return{setUnderline:()=>({commands:e})=>e.setMark(this.name),toggleUnderline:()=>({commands:e})=>e.toggleMark(this.name),unsetUnderline:()=>({commands:e})=>e.unsetMark(this.name)}},addKeyboardShortcuts(){return{"Mod-u":()=>this.editor.commands.toggleUnderline(),"Mod-U":()=>this.editor.commands.toggleUnderline()}}}),rr=hi;var dr=require("@tiptap/react"),ur=H(require("@tiptap/starter-kit")),U=require("@mantine/tiptap"),J=require("@mantine/core");var V=H(require("react")),me=require("@mantine/core"),or=H(require("@emoji-mart/data")),gi=(0,V.lazy)(()=>import("@emoji-mart/react"));function yt({onSelect:e,action:t,size:n=320,offset:r=8,position:o="bottom-start",colorScheme:s="light"}){let[i,l]=(0,V.useState)(!1);return V.default.createElement(me.Popover,{opened:i,onChange:l,width:n,position:o,offset:r,withArrow:!0,shadow:"md",trapFocus:!1,closeOnEscape:!0},V.default.createElement(me.Popover.Target,null,(0,V.cloneElement)(t,{onClick:a=>{t.props?.onClick?.(a),l(c=>!c)}})),V.default.createElement(me.Popover.Dropdown,{p:0},V.default.createElement(V.Suspense,{fallback:V.default.createElement("div",{style:{padding:12,width:320}},V.default.createElement(me.Skeleton,{height:280,radius:"md"}))},V.default.createElement(gi,{previewPosition:"none",theme:s,data:or.default,onEmojiSelect:a=>{e(a.native),l(!1)}}))))}var sr=tr.create({name:"emoji",inline:!0,group:"inline",selectable:!1,atom:!0,addAttributes(){return{emoji:{default:"\u{1F600}"}}},parseHTML(){return[{tag:"span[data-emoji]"}]},renderHTML({HTMLAttributes:e}){return["span",ke(e,{class:"emoji-big","data-emoji":e.emoji}),e.emoji]}});function xt({content:e="",maxLength:t=3e3,onChange:n,onSubmit:r,colorScheme:o="light"}){let[s,i]=(0,M.useState)(0),[l,a]=(0,M.useState)(!1),[c,m]=(0,M.useState)(!1),[d,p]=(0,M.useState)(!1),u=()=>{if(!f)return;let g=f.getHTML();f.getText().trim()&&(r?.(g),f.commands.clearContent(),f.commands.focus(),i(0),a(!1))},h=(g,v)=>v.key==="Enter"&&!v.shiftKey?(v.preventDefault(),u(),!0):v.key==="Enter"&&v.shiftKey?(v.preventDefault(),f?.commands.setHardBreak(),!0):!1,f=(0,dr.useEditor)({extensions:[ur.default,sr,rr,U.Link,cr.default,ar.default,ir.default,lr.default.configure({types:["heading","paragraph"]})],content:e,editorProps:{handleKeyDown:h},onUpdate:({editor:g})=>{let v=g.getHTML(),y=v.replace(/(<br\s*\/?>\s*){3,}/g,"<br><br>");if(y!==v){let{from:T,to:E}=g.state.selection;g.commands.setContent(y),g.commands.setTextSelection({from:Math.min(T,g.state.doc.content.size),to:Math.min(E,g.state.doc.content.size)});return}let S=g.getText(),C=S.trim().length>0;i(S.length),a(C),m(t?S.length>=t:!1),n?.(g.getHTML())},immediatelyRender:!1});return M.default.createElement(M.default.Fragment,null,M.default.createElement(U.RichTextEditor,{editor:f,w:"100%",className:"mrchat-richTextEditorContainer"},M.default.createElement(U.RichTextEditor.Content,null),M.default.createElement(U.RichTextEditor.Toolbar,{sticky:!0,stickyOffset:"var(--docs-header-height)"},M.default.createElement("div",{className:"mrchat-mainActionContainer"},M.default.createElement(yt,{colorScheme:o,onSelect:g=>{f?.chain().focus().insertContent({type:"emoji",attrs:{emoji:g}}).run()},action:M.default.createElement(J.ActionIcon,{radius:"lg",variant:"subtle","aria-label":"add",className:"mrchat-mainActionEmojiIcon"},M.default.createElement(K.IconMoodPlus,null))}),M.default.createElement(J.ActionIcon,{radius:"lg",variant:"subtle","aria-label":"text_format",className:"mrchat-mainTextFormatIcon",onClick:()=>p(g=>!g)},M.default.createElement(K.IconTextColor,{stroke:1.7})),M.default.createElement(J.ActionIcon,{radius:"lg",variant:"filled","aria-label":"send",className:"mrchat-mainSendMsgIcon",onClick:u,disabled:!l},M.default.createElement(K.IconSend,{size:18}))),M.default.createElement(J.ActionIcon,{radius:"lg",variant:"filled","aria-label":"send",className:"mrchat-sm-mainSendMsgIcon",onClick:u,disabled:!l},M.default.createElement(K.IconSend,{size:18})),d&&M.default.createElement(M.default.Fragment,null,M.default.createElement(U.RichTextEditor.ControlsGroup,null,M.default.createElement(U.RichTextEditor.Bold,null),M.default.createElement(U.RichTextEditor.Italic,null),M.default.createElement(U.RichTextEditor.Underline,null),M.default.createElement(U.RichTextEditor.Strikethrough,null),M.default.createElement(U.RichTextEditor.Code,null),M.default.createElement(U.RichTextEditor.Highlight,null)),M.default.createElement(U.RichTextEditor.ControlsGroup,{className:"mrchat-secondRichTextEditorToolBar"},M.default.createElement(U.RichTextEditor.BulletList,null),M.default.createElement(U.RichTextEditor.OrderedList,null),M.default.createElement(J.Menu,{trigger:"hover",openDelay:200},M.default.createElement(J.Menu.Target,null,M.default.createElement(J.ActionIcon,{variant:"outline",size:"md",className:"mrchat-customToolActionItem"},M.default.createElement(K.IconAlignLeft,{size:16,stroke:1.5}))),M.default.createElement(J.Menu.Dropdown,null,M.default.createElement(J.Menu.Item,{onClick:()=>f?.chain().focus().setTextAlign("left").run()},M.default.createElement(K.IconAlignLeft,{size:14})),M.default.createElement(J.Menu.Item,{onClick:()=>f?.chain().focus().setTextAlign("center").run()},M.default.createElement(K.IconAlignCenter,{size:14})),M.default.createElement(J.Menu.Item,{onClick:()=>f?.chain().focus().setTextAlign("right").run()},M.default.createElement(K.IconAlignRight,{size:14})))),M.default.createElement(U.RichTextEditor.Link,null)),M.default.createElement(U.RichTextEditor.ControlsGroup,{className:"mrchat-secondRichTextEditorToolBar"},M.default.createElement(U.RichTextEditor.ClearFormatting,null)))),c&&M.default.createElement("div",{style:{textAlign:"right",color:"red",fontSize:12,marginTop:4}},"Character limit reached (",s,"/",t,")")))}var Xe=require("react-redux"),L=H(require("react"));var fr=H(require("dompurify"));var Y=H(require("react"));function mr({data:e,renderItem:t,loadMore:n,hasMore:r,scrollToBottomTrigger:o}){let s=(0,Y.useRef)(null),i=(0,Y.useRef)(!1),l=(0,Y.useRef)(!0),a=(0,Y.useRef)(0);(0,Y.useEffect)(()=>{let d=s.current;d&&setTimeout(()=>{d.scrollTop=d.scrollHeight},100)},[o]),(0,Y.useEffect)(()=>{let d=s.current;!d||!e.length||(l.current&&(d.scrollTop=d.scrollHeight,l.current=!1),a.current=e.length)},[e]);let c=()=>{let d=s.current;d&&d.scrollTop<50&&r&&!i.current&&m()},m=async()=>{let d=s.current;if(!d||i.current||!r)return;i.current=!0;let p=d.scrollHeight,u=d.scrollTop;await n(),setTimeout(()=>{let f=d.scrollHeight-p;d.scrollTop=u+f,i.current=!1},50)};return Y.default.createElement("div",{ref:s,onScroll:c,style:{overflowY:"auto",height:"100%",display:"flex",flexDirection:"column"}},e.map((d,p)=>Y.default.createElement("div",{key:d?.id||p},t(d,p))))}var _=H(require("react")),pe=require("@mantine/core"),pr=require("@tabler/icons-react");function bt({opened:e,onClose:t,user:n,onDeleteMessages:r,onBlock:o}){let[s,i]=(0,_.useState)(e),[l,a]=(0,_.useState)(!1);(0,_.useEffect)(()=>{e&&i(!0)},[e]);let c=()=>{i(!1),setTimeout(t,250)};return!e&&!s?null:_.default.createElement(_.default.Fragment,null,_.default.createElement("div",{className:"mrchat-overlay",onClick:c},_.default.createElement("div",{className:`mrchat-drawer ${s?"mrchat-open":"mrchat-close"}`,onClick:m=>m.stopPropagation()},_.default.createElement("div",{className:"mrchat-header"},_.default.createElement("div",{className:"mrchat-backBtn",onClick:c},_.default.createElement(pr.IconArrowLeft,{size:20})),_.default.createElement(pe.Text,{fw:600},"Contact info")),_.default.createElement("div",{className:"mrchat-profileSection"},_.default.createElement(pe.Avatar,{src:n?.avatar,size:150,radius:"xl",style:{cursor:"pointer"},onClick:()=>n?.avatar?a(!0):{}}),_.default.createElement(pe.Text,{fw:700,size:"lg",mt:"sm"},n?.displayName),_.default.createElement(pe.Text,{size:"sm",c:"dimmed"},"@",n?.username)))),l&&_.default.createElement("div",{className:"mrchat-imagePreview",onClick:()=>a(!1)},_.default.createElement("img",{src:n?.avatar,alt:"profile"})))}function hr({chatId:e,enableChat:t,senderDetails:n,receiverDetails:r,onChatInitialized:o,onBack:s,showBackButton:i,colorScheme:l}){let a=(0,Xe.useDispatch)(),c=(0,Xe.useSelector)(E=>E.chat.messageList),[m,d]=(0,L.useState)(0),[p,u]=(0,L.useState)(0),[h,f]=(0,L.useState)(!1),g=c?.rows?.data||[],v=g.length===0,y=()=>{let E=c?.hasMore;if(!e||!E)return;let A=m+1;a(et({chatId:e,page:A,userId:n?.userId})),d(A)};(0,L.useEffect)(()=>{e&&(d(0),a(et({chatId:e,page:0,userId:n?.userId})))},[e]),(0,L.useEffect)(()=>{if(!n?.userId||!ie())return;let E=Q(n?.userId||"");if(!E)return;let A=I=>{I.chatId===e&&a(tt({id:Date.now(),chatId:I.chatId,message:I.message,sender:I.sender,recipient:I.recipient,type:I.type,status:I.status,createdAt:I.time}))};return E.on("newmessage",A),()=>{E.off("newmessage",A)}},[e,n?.userId]);let S=E=>{let A=Q(n?.userId||""),I={message:E,sender:n?.userId,receiver:r?.userId,type:"text",username:n?.username};if(!c?.rows?.data?.length){A?.emit("initializeNewChat",{...I,senderUserDetails:{userId:n?.userId,username:n?.username,displayName:n?.displayName,avatar:n?.avatar},receiverUserDetails:{userId:r?.userId,username:r?.username,displayName:r?.displayName,avatar:r?.avatar}},z=>{if(z?.status==="success"){let{data:P}=z;a(ge({id:Date.now(),chatId:P.chatId,message:P.message,sender:P.sender,recipient:P.recipient,type:P.type,status:P.status,createdAt:new Date(P.time).getTime(),updatedAt:new Date(P.time).getTime(),userId:r?.userId,username:r?.username,displayName:r?.displayName,avatar:r?.avatar})),a(tt({id:Date.now(),chatId:P.chatId,message:P.message,sender:P.sender,recipient:P.recipient,type:P.type,status:P.status,createdAt:Date.now()})),o?.(P)}else console.log("Failed to initialize chat",z?.error)});return}A?.emit("privatemessage",{...I,chatId:e}),u(z=>z+1)},C=()=>{c.hasMore&&y()},T=()=>{!e||!n?.userId||a(zt({chatId:e,userId:n?.userId}))};return L.default.createElement("div",{className:"mrchat-mainArea"},L.default.createElement("div",{className:"mrchat-chatHeader"},i&&s&&L.default.createElement(se.ActionIcon,{variant:"subtle",className:"mrchat-backButton",onClick:s},L.default.createElement(qe.IconArrowLeft,{size:20})),r&&L.default.createElement(L.default.Fragment,null,L.default.createElement("div",{className:"mrchat-receiverInfo",onClick:()=>f(!0)},r?.avatar?L.default.createElement(se.Avatar,{src:r.avatar,size:36,radius:"xl"}):L.default.createElement(se.Avatar,{key:r?.displayName||r?.username,name:r?.displayName||r?.username,color:"initials"}),L.default.createElement(se.Text,{fw:600,size:"md"},r?.displayName||r?.username)))),L.default.createElement("div",{className:"mrchat-messageArea"},v?L.default.createElement("div",{className:"mrchat-emptyState"},L.default.createElement("div",{className:"mrchat-encryptionMinimal"},L.default.createElement(qe.IconLock,{size:20,stroke:1.8}),L.default.createElement(se.Text,{className:"mrchat-encryptionText",size:"md"},"End-to-end encrypted"))):L.default.createElement(mr,{data:g,hasMore:c?.hasMore,loadMore:C,scrollToBottomTrigger:p,renderItem:(E,A)=>{let I=E?.sender===n?.userId,D=new Date(E?.createdAt),z=g[A-1],P=A===0||new Date(z?.createdAt).toDateString()!==D.toDateString(),q=new Date,$=new Date;$.setDate(q.getDate()-1);let R=D.toDateString()===q.toDateString(),j=D.toDateString()===$.toDateString(),ee="";R?ee="Today":j?ee="Yesterday":ee=D.toLocaleDateString(void 0,{weekday:"short",month:"short",day:"numeric"});let Me=D.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",hour12:!1});return L.default.createElement("div",{key:E?.id+"_"+A},P&&L.default.createElement("div",{className:"mrchat-dateSeparator"},ee),L.default.createElement("div",{style:{borderRadius:E.sender===n?.userId?"16px 16px 1px 16px":"16px 16px 16px 1px"},className:`mrchat-messageBubble ${I?"mrchat-outgoing":"mrchat-incoming"}`},L.default.createElement("div",{className:"mrchat-messageContent",dangerouslySetInnerHTML:{__html:fr.default.sanitize(E?.message)}}),L.default.createElement("div",{className:"mrchat-messageTime"},Me)))}})),(e||t)&&L.default.createElement("div",{className:"mrchat-inputBar"},L.default.createElement(xt,{onSubmit:S,colorScheme:l})),L.default.createElement(bt,{opened:h,onClose:()=>f(!1),user:{avatar:r?.avatar,username:r?.username,displayName:r?.displayName},onDeleteMessages:()=>{T()},onBlock:()=>{console.log("block user")}}))}var Ye=require("react-redux"),w=H(require("react"));var gr=H(require("react")),vr=require("react-virtuoso");function yr({data:e,itemContent:t,height:n="100%",startReached:r,endReached:o,...s}){return gr.default.createElement(vr.Virtuoso,{style:{height:n},data:e,startReached:r,endReached:o,itemContent:(i,l)=>t(i,l),...s})}var kr=H(require("dompurify"));var xr=e=>{if(!e)return"";let t=new Date(e),n=new Date,r=new Date;r.setDate(n.getDate()-1);let o=t.toDateString()===n.toDateString(),s=t.toDateString()===r.toDateString(),i=t.toLocaleTimeString("en-GB",{hour:"2-digit",minute:"2-digit",hour12:!1});return o?i:s?"Yesterday":t.toLocaleDateString(void 0,{day:"numeric",month:"short"})};function Mr({currentUser:e,onSearchUsers:t,colorScheme:n,openChatByUserDetails:r,handleCallAfterOpenChat:o,isLoading:s=!1}){let[i,{open:l,close:a}]=(0,wr.useDisclosure)(!1),c=(0,Ye.useDispatch)(),m=(0,Ye.useSelector)(b=>b.chat.messagedUserList),[d,p]=(0,w.useState)(0),[u,h]=(0,w.useState)(""),[f,g]=(0,w.useState)(!1),[v,y]=(0,w.useState)(""),[S,C]=(0,w.useState)(),[T,E]=(0,w.useState)(),[A,I]=(0,w.useState)([]),[D,z]=(0,w.useState)(!1),[P,q]=(0,w.useState)(e),[$,R]=(0,w.useState)(!1),[j,ee]=(0,w.useState)(!1);(0,w.useEffect)(()=>{e?.userId&&q(e)},[e?.userId]),(0,w.useEffect)(()=>{e?.userId&&c(Ze({userId:e.userId,page:0}))},[e?.userId,c]),(0,w.useEffect)(()=>{if(typeof window>"u")return;let b=window.matchMedia("(max-width: 599px)"),k=N=>{let W="matches"in N?N.matches:b.matches;R(W),W||ee(!1)};return k(b),b.addEventListener?b.addEventListener("change",k):b.addListener(k),()=>{b.removeEventListener?b.removeEventListener("change",k):b.removeListener(k)}},[]);let Me=(b,k)=>{let N=b;if(!N?.userId)return;let W=m?.rows?.data?.find(Se=>Se.userId===N.userId);if(W){Ge(W),a(),y(""),k&&k();return}c(ge({userId:N?.userId,username:N?.username,displayName:N?.displayName,avatar:N?.avatar})),C(N),a(),y(""),c(ve()),h(""),g(!0),$&&ee(!0),k&&k()};(0,w.useEffect)(()=>{if(!P?.userId)return;let b=Q(P.userId);b&&(b.connected||b.connect())},[P?.userId]),(0,w.useEffect)(()=>{if(!P?.userId)return;let b=Q(P.userId);if(!b)return;let k=N=>{N.sender!==P.userId&&c(ge({message:N.message,chatId:N.chatId,userId:N.sender,username:N.userDetails.username,displayName:N.userDetails.displayName,avatar:N.userDetails.avatar}))};return b.on("newChat",k),()=>{b.off("newChat",k)}},[c,P?.userId]),(0,w.useEffect)(()=>{if(!P?.userId)return;let b=Q(P?.userId||"");if(!b)return;let k=N=>{if(!m?.rows?.data)return;let W=m.rows.data.map(ne=>{if(ne.chatId===N.chatId){let Dr=N.chatId===u;return{...ne,message:N.message,updatedAt:new Date().toISOString(),unreadCount:Dr?0:(ne.unreadCount||0)+1}}return ne}),Se=W.findIndex(ne=>ne.chatId===N.chatId);if(Se!==-1){let ne=W.splice(Se,1)[0];W.unshift(ne)}console.log("Updated",W,N),c(he({...m,rows:{...m.rows,data:W}}))};return b.on("newMessageNotification",k),()=>{b.off("newMessageNotification",k)}},[m,P?.userId]);let Ar=()=>{if(!m?.hasMore||!e?.userId)return;let b=d+1;p(b),c(Ze({userId:e.userId,page:b}))},Ge=b=>{if(!P?.userId)return;let k=Q(P.userId);if(!k)return;C({userId:b.userId,username:b.username,displayName:b.displayName,avatar:b.avatar}),k.emit("joinChat",{chatId:b.chatId}),h(b?.chatId||""),c(ve());let N=m.rows.data.map(W=>W.chatId===b.chatId?{...W,unreadCount:0}:W);$&&ee(!0),c(he({...m,rows:{...m.rows,data:N}}))};(0,w.useEffect)(()=>{r&&Me(r,o)},[r?.userId]);let Pr=b=>{y(b)},Nr=()=>{ee(!1)};(0,w.useEffect)(()=>{if(!v.trim()){I([]),z(!1);return}if(!t){I([]),z(!1);return}let b=!1,k=setTimeout(async()=>{try{z(!0),I([]);let N=await Promise.resolve(t(v));if(b)return;I(N)}finally{b||z(!1)}},400);return()=>{b=!0,clearTimeout(k)}},[v,t]);let Lr=b=>{let k=document.createElement("div");return k.innerHTML=b,k.textContent||""},zr=A.map(b=>({value:b.username,label:b.displayName||b.username,user:b}));return w.default.createElement("div",{className:"mrchat-chatWrapper"},s&&w.default.createElement("div",{className:"mrchat-loadingOverlay"},w.default.createElement(O.Loader,{size:"md"})),w.default.createElement(O.Modal,{opened:i,onClose:()=>{a(),y(""),I([]),z(!1)},title:"Search User",centered:!0,withCloseButton:!0},w.default.createElement(O.Autocomplete,{mb:12,label:"Search User to Chat",placeholder:"Type username to search...",limit:20,data:zr,value:v,onChange:Pr,rightSection:D?w.default.createElement(O.Loader,{size:"xs"}):void 0,rightSectionWidth:28,onOptionSubmit:b=>{let k=A.find(N=>N.username===b);k&&(y(""),E(k),I([]),z(!1))},renderOption:({option:b})=>{let k=b.user;return w.default.createElement(O.Group,{gap:"sm"},w.default.createElement(O.Avatar,{src:k.avatar,size:36,radius:"xl"}),w.default.createElement("div",null,w.default.createElement(O.Text,{size:"sm"},k.displayName||k.username),k.displayName&&w.default.createElement(O.Text,{size:"xs",opacity:.5},"@",k.username)))}}),w.default.createElement(O.Button,{fullWidth:!0,onClick:()=>Me(T),disabled:!T?.username},"Start Chat")),w.default.createElement("div",{className:"mrchat-chatContainer"},w.default.createElement("div",{className:"mrchat-sidebar "+($&&j?"mrchat-hiddenOnMobile":"")},w.default.createElement("div",{className:"mrchat-sidebarTop"},w.default.createElement("div",{className:"mrchat-topBar"},w.default.createElement(O.Text,{size:"xs",c:"dimmed",mt:"sm",mb:"xs",ml:12},"All Messages"),w.default.createElement("div",{className:"mrchat-topActions"},w.default.createElement(O.ActionIcon,{variant:"subtle",onClick:()=>{E(null),y(""),I([]),l()},radius:"lg"},w.default.createElement(br.IconPlus,{size:20,stroke:3}))))),w.default.createElement("div",{className:"mrchat-scrollWrapper"},w.default.createElement(yr,{data:m?.rows?.data||[],endReached:Ar,itemContent:(b,k)=>{let N=k.chatId===u;return w.default.createElement("div",{className:`mrchat-chatItem ${N?"mrchat-activeChatItem":""}`,onClick:()=>{N||Ge(k)}},k.avatar?w.default.createElement(O.Avatar,{src:k.avatar,size:36,radius:"xl"}):w.default.createElement(O.Avatar,{key:k.displayName||k.username,name:k.displayName||k.username,color:"initials"}),w.default.createElement("div",{className:"mrchat-chatInfo"},w.default.createElement(O.Text,{className:"mrchat-chatLabelItem",truncate:!0},k.displayName||k.username),k.unreadCount>0&&w.default.createElement("div",{className:"mrchat-unreadBadge"},k.unreadCount||10),w.default.createElement("div",{className:"mrchat-messagePreview"},w.default.createElement(O.Text,{truncate:!0,size:"xs",c:"dimmed",style:{maxWidth:150},className:"mrchat-messagePreviewContent"},Lr(kr.default.sanitize(k.message))),w.default.createElement(O.Text,{size:"xs",c:"dimmed",className:"mrchat-messagePreviewTime"},xr(k.updatedAt||k.createdAt)))))}}))),w.default.createElement("div",{className:"mrchat-mainAreaWrapper "+($&&!j?"mrchat-hiddenOnMobile":"")},w.default.createElement(hr,{chatId:u,enableChat:f,senderDetails:P,receiverDetails:S,onBack:Nr,showBackButton:$,onChatInitialized:b=>{Ge({chatId:b.chatId,userId:S?.userId,username:S?.username,displayName:S?.displayName,avatar:S?.avatar})},colorScheme:n}))))}var Sr=require("react"),Tr=require("react-redux");function Er(){let e=(0,Tr.useDispatch)();return(0,Sr.useEffect)(()=>()=>{e(Dt())},[e]),null}function wt({colorScheme:e,primaryColor:t="customBrand",darkColor:n,authorization:r,openChatByUserDetails:o,handleCallAfterOpenChat:s,isLoading:i=!1,...l}){let a=Et(t);return(0,G.useLayoutEffect)(()=>{typeof window>"u"||It(r||"")},[r]),(0,G.useEffect)(()=>{if(typeof document>"u"||!n)return;let c=document.body.style.backgroundColor;return document.body.style.backgroundColor=e==="dark"?n:"",document.documentElement.style.setProperty("--mantine-color-body",e==="dark"?n:""),()=>{document.body.style.backgroundColor=c,document.documentElement.style.removeProperty("--mantine-color-body")}},[e,n]),G.default.createElement(jt,null,G.default.createElement(Ft,null,G.default.createElement(Er,null),G.default.createElement(Cr.MantineProvider,{defaultColorScheme:e??"light",forceColorScheme:e,theme:a},G.default.createElement(Ir.Notifications,null),G.default.createElement(Mr,{handleCallAfterOpenChat:s,colorScheme:e,openChatByUserDetails:o,isLoading:i,...l}))))}0&&(module.exports={MrChat});
|
package/dist/index.mjs
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import"@mantine/core/styles.css";import"@mantine/tiptap/styles.css";import"@mantine/notifications/styles.css";import oe,{useEffect as Ji,useLayoutEffect as qi}from"react";import{MantineProvider as Xi}from"@mantine/core";import{Notifications as Yi}from"@mantine/notifications";import{createTheme as bn}from"@mantine/core";var wn=["#e6f9ff","#b3ecff","#80dfff","#4dd2ff","#1ac5ff","#00b8e6","#0091b3","#006a80","#00434d","#001c1a"],kn=["#e6f9f2","#c0f0de","#88e4c3","#4dd6a4","#26cb90","#00bf7d","#00a36c","#008d5d","#00764d","#005f3e"],Mn=["#ffe6e9","#fbbdc4","#f38b98","#ea576b","#e12c48","#d80a2d","#b30625","#8f041d","#6b0215","#47010e"],Sn=["#fff1e6","#ffd7b3","#ffb380","#ff8f4d","#ff6b1a","#e65c00","#b34700","#803300","#4d1f00","#1a0a00"],Tn=["#e6f9ff","#b3ecff","#80dfff","#4dd2ff","#1ac5ff","#00b8e6","#0091b3","#006a80","#00434d","#001c1a"],st={customBrand:wn,emerald:kn,ruby:Mn,sunset:Sn,ocean:Tn},it=e=>/^#(?:[0-9a-f]{3}|[0-9a-f]{6})$/i.test(e),En=e=>{let t=e.replace("#",""),n=t.length===3?t.split("").map(r=>r+r).join(""):t;return{r:parseInt(n.slice(0,2),16),g:parseInt(n.slice(2,4),16),b:parseInt(n.slice(4,6),16)}},Cn=({r:e,g:t,b:n})=>`#${[e,t,n].map(r=>r.toString(16).padStart(2,"0")).join("")}`,Ie=e=>Math.min(255,Math.max(0,Math.round(e))),In=e=>{let{r:t,g:n,b:r}=En(e);return[.08,.18,.3,.42,.54,.66,.76,.86,.92,.98].map(i=>Cn({r:Ie(t*i+255*(1-i)),g:Ie(n*i+255*(1-i)),b:Ie(r*i+255*(1-i))}))},at=e=>{let t={...st},n=it(e)||!(e in st)?"customBrand":e;return it(e)&&(t.customBrand=In(e)),bn({primaryColor:n,colors:t})};import zn from"react";import{Provider as On}from"react-redux";import{configureStore as Dn}from"@reduxjs/toolkit";import{createSlice as Pn}from"@reduxjs/toolkit";var pe={BASE_URL:"http://localhost:4000",SOCKET_URL:"http://localhost:4000"},ct="",lt=e=>{ct=e||""},Y=()=>ct;import An from"axios";var dt=An.create({baseURL:pe.BASE_URL,headers:{"Content-Type":"application/json",Authorization:Y()}});dt.interceptors.request.use(e=>(e.headers?.set?.("Authorization",Y()),e));var fe=dt;import{notifications as he}from"@mantine/notifications";var Nn={messagedUserList:null,messageList:[]},ut=Pn({name:"messages",initialState:Nn,reducers:{setMessagedUserList:(e,t)=>{let n=t.payload;if(n===null){e.messagedUserList=null;return}let r=n?.page??0;if(!e.messagedUserList||r===0){e.messagedUserList=n;return}let s=e.messagedUserList?.rows?.data??[],o=n?.rows?.data??[],i=[...s,...o],c=new Map;i.forEach(l=>{l?.chatId&&c.set(l.chatId,l)});let a=Array.from(c.values());e.messagedUserList={...n,rows:{...n.rows,data:a}}},setMessageList:(e,t)=>{let n=t.payload;if(n===null){e.messageList=[];return}let r=n?.page??0;if(!e.messageList?.rows?.data||r===0){e.messageList=n;return}e.messageList={...n,rows:{...n.rows,data:[...n.rows.data,...e.messageList.rows.data]}}},addNewMessage:(e,t)=>{e.messageList?.rows?.data&&e.messageList.rows.data.push(t.payload)},addUserToChatList:(e,t)=>{let n=t.payload;if(!e.messagedUserList){e.messagedUserList={hasMore:!1,rows:{success:!0,status:!0,message:"",data:[n]}};return}let r=e.messagedUserList.rows.data;e.messagedUserList.rows.data=r=r.filter(o=>o?.chatId);let s=r.findIndex(o=>o.chatId===n.chatId);if(s!==-1){let i={...r.splice(s,1)[0],...n};r.unshift(i)}else r.unshift(n)},resetMessageList:e=>{e.messageList=[]},updateUnreadCount:(e,t)=>{let{chatId:n,isActive:r}=t.payload,s=e.messagedUserList?.rows?.data;if(!s)return;let o=s.find(i=>i.chatId===n);o&&(r?o.unreadCount=0:o.unreadCount=(o.unreadCount||0)+1)},resetUnreadCount:(e,t)=>{let n=t.payload,r=e.messagedUserList?.rows?.data;if(!r)return;let s=r.find(o=>o.chatId===n);s&&(s.unreadCount=0)}}}),Ae=e=>async t=>fe.get(`/api/messages/userList/${e?.userId}?page=${e?.page||0}`).then(n=>(console.log("Fetched messages for userId:",n.data),t(se(n.data)),n.data)).catch(n=>{let r=n?.response?.data?.message||"Failed to fetch messages";return he.show({title:"Message Fetch Failed",message:r,color:"red"}),n}),Pe=e=>async t=>fe.get(`/api/messages/${e?.chatId}?page=${e?.page||0}&userId=${e?.userId}`).then(n=>(t(Ln(n.data)),n.data)).catch(n=>{let r=n?.response?.data?.message||"Failed to fetch messages";return he.show({title:"Message Fetch Failed",message:r,color:"red"}),n});var mt=e=>async t=>fe.delete("/api/messages",{data:{chatId:e?.chatId,userId:e?.userId}}).then(n=>(t(ae()),he.show({title:"Messages Deleted",message:"All messages in this chat have been deleted.",color:"green"}),n.data)).catch(n=>{let r=n?.response?.data?.message||"Failed to delete messages";return he.show({title:"Message Deletion Failed",message:r,color:"red"}),n}),pt=()=>async e=>{e(se(null)),e(ae())},{setMessagedUserList:se,setMessageList:Ln,addNewMessage:Ne,addUserToChatList:ie,resetMessageList:ae,updateUnreadCount:aa,resetUnreadCount:ca}=ut.actions,ft=ut.reducer;var ht=Dn({reducer:{chat:ft}});function gt({children:e}){return zn.createElement(On,{store:ht},e)}import yt,{useEffect as $n}from"react";import{io as Bn}from"socket.io-client";var ee=null,vt,W=e=>e?((!ee||vt!==e)&&(ee&&(ee.disconnect(),ee=null),ee=Bn(pe.SOCKET_URL,{autoConnect:!1,transports:["websocket"],auth:{apiKey:Y(),userId:e}}),vt=e),ee):null;function xt({children:e,userId:t}){return $n(()=>{if(!t)return;let n=W(t);if(n)return n.connected||(n.connect(),console.log("\u2705 Socket connected for:",t)),()=>{n.connected&&(n.disconnect(),console.log("Socket disconnected for:",t))}},[t]),yt.createElement(yt.Fragment,null,e)}import{Text as re,Modal as zi,Button as Oi,ActionIcon as Bi,Autocomplete as $i,Group as Hi,Avatar as rt,Loader as _i}from"@mantine/core";import{IconPlus as ji}from"@tabler/icons-react";import{useDisclosure as Ui}from"@mantine/hooks";import{Text as an,Avatar as cn,ActionIcon as Ei}from"@mantine/core";import{IconArrowLeft as Ci,IconLock as Ii}from"@tabler/icons-react";import S,{useState as Te}from"react";import{IconSend as en,IconAlignLeft as tn,IconAlignCenter as mi,IconAlignRight as pi,IconMoodPlus as fi,IconTextColor as hi}from"@tabler/icons-react";import gi from"@tiptap/extension-highlight";import vi from"@tiptap/extension-subscript";import yi from"@tiptap/extension-superscript";import xi from"@tiptap/extension-text-align";import{liftTarget as Un}from"@tiptap/pm/transform";import{createParagraphNear as Vn}from"@tiptap/pm/commands";import{TextSelection as Kn}from"@tiptap/pm/state";import{exitCode as tr}from"@tiptap/pm/commands";import{TextSelection as rr}from"@tiptap/pm/state";import{TextSelection as ir}from"@tiptap/pm/state";import{Selection as kt,TextSelection as Mt}from"@tiptap/pm/state";import{Fragment as mr}from"@tiptap/pm/model";import{DOMParser as Le,Fragment as Tt,Node as pr,Schema as fr}from"@tiptap/pm/model";import{Selection as hr}from"@tiptap/pm/state";import{ReplaceAroundStep as gr,ReplaceStep as vr}from"@tiptap/pm/transform";import{joinBackward as wr,joinDown as kr,joinForward as Mr,joinUp as Sr}from"@tiptap/pm/commands";import{joinPoint as Ar}from"@tiptap/pm/transform";import{joinPoint as Nr}from"@tiptap/pm/transform";import{joinTextblockBackward as Dr}from"@tiptap/pm/commands";import{joinTextblockForward as Or}from"@tiptap/pm/commands";import{lift as _r}from"@tiptap/pm/commands";import{liftEmptyBlock as Ur}from"@tiptap/pm/commands";import{liftListItem as Fr}from"@tiptap/pm/schema-list";import{newlineInCode as Wr}from"@tiptap/pm/commands";import{AllSelection as Xr}from"@tiptap/pm/state";import{selectNodeBackward as Gr}from"@tiptap/pm/commands";import{selectNodeForward as Zr}from"@tiptap/pm/commands";import{selectParentNode as to}from"@tiptap/pm/commands";import{selectTextblockEnd as ro}from"@tiptap/pm/commands";import{selectTextblockStart as so}from"@tiptap/pm/commands";import{Transform as uo}from"@tiptap/pm/transform";import{Node as Qa}from"@tiptap/pm/model";import{DOMSerializer as ho}from"@tiptap/pm/model";import{Schema as go}from"@tiptap/pm/model";import{DOMParser as nc}from"@tiptap/pm/model";import{Node as oc}from"@tiptap/pm/model";import{NodeSelection as ic}from"@tiptap/pm/state";import{setBlockType as Lt}from"@tiptap/pm/commands";import{NodeSelection as zo}from"@tiptap/pm/state";import{TextSelection as ze}from"@tiptap/pm/state";import{sinkListItem as Ho}from"@tiptap/pm/schema-list";import{NodeSelection as jo,TextSelection as Uo}from"@tiptap/pm/state";import{canSplit as Oe}from"@tiptap/pm/transform";import{Fragment as Be,Slice as Fo}from"@tiptap/pm/model";import{TextSelection as Vo}from"@tiptap/pm/state";import{canSplit as Wo}from"@tiptap/pm/transform";import{TextSelection as Jo}from"@tiptap/pm/state";import{canJoin as Wt}from"@tiptap/pm/transform";import{wrapIn as os}from"@tiptap/pm/commands";import{wrapInList as is}from"@tiptap/pm/schema-list";import{EditorState as wc}from"@tiptap/pm/state";import{EditorView as Mc}from"@tiptap/pm/view";import{keymap as cs}from"@tiptap/pm/keymap";import{Fragment as ls}from"@tiptap/pm/model";import{Plugin as ds}from"@tiptap/pm/state";import{Fragment as fs}from"@tiptap/pm/model";import{Plugin as hs}from"@tiptap/pm/state";import{Plugin as ks,PluginKey as Ms}from"@tiptap/pm/state";import{RemoveMarkStep as Es}from"@tiptap/pm/transform";import{Plugin as Is,PluginKey as As}from"@tiptap/pm/state";import{Plugin as Ns,PluginKey as Ls}from"@tiptap/pm/state";import{Plugin as zs,PluginKey as Os}from"@tiptap/pm/state";import{Plugin as $s,PluginKey as Hs,Selection as _e}from"@tiptap/pm/state";import{Plugin as js,PluginKey as Us}from"@tiptap/pm/state";import{Plugin as Fs,PluginKey as Vs}from"@tiptap/pm/state";import{Plugin as Ks,PluginKey as Js}from"@tiptap/pm/state";import{canJoin as _c,findWrapping as jc}from"@tiptap/pm/transform";import{NodeSelection as Rc}from"@tiptap/pm/state";import{NodeSelection as Vc}from"@tiptap/pm/state";var Hn=Object.defineProperty,je=(e,t)=>{for(var n in t)Hn(e,n,{get:t[n],enumerable:!0})};function Se(e){let{state:t,transaction:n}=e,{selection:r}=n,{doc:s}=n,{storedMarks:o}=n;return{...t,apply:t.apply.bind(t),applyTransaction:t.applyTransaction.bind(t),plugins:t.plugins,schema:t.schema,reconfigure:t.reconfigure.bind(t),toJSON:t.toJSON.bind(t),get storedMarks(){return o},get selection(){return r},get doc(){return s},get tr(){return r=n.selection,s=n.doc,o=n.storedMarks,n}}}var Ue=class{constructor(e){this.editor=e.editor,this.rawCommands=this.editor.extensionManager.commands,this.customState=e.state}get hasCustomState(){return!!this.customState}get state(){return this.customState||this.editor.state}get commands(){let{rawCommands:e,editor:t,state:n}=this,{view:r}=t,{tr:s}=n,o=this.buildProps(s);return Object.fromEntries(Object.entries(e).map(([i,c])=>[i,(...l)=>{let p=c(...l)(o);return!s.getMeta("preventDispatch")&&!this.hasCustomState&&r.dispatch(s),p}]))}get chain(){return()=>this.createChain()}get can(){return()=>this.createCan()}createChain(e,t=!0){let{rawCommands:n,editor:r,state:s}=this,{view:o}=r,i=[],c=!!e,a=e||s.tr,l=()=>(!c&&t&&!a.getMeta("preventDispatch")&&!this.hasCustomState&&o.dispatch(a),i.every(d=>d===!0)),p={...Object.fromEntries(Object.entries(n).map(([d,m])=>[d,(...h)=>{let f=this.buildProps(a,t),g=m(...h)(f);return i.push(g),p}])),run:l};return p}createCan(e){let{rawCommands:t,state:n}=this,r=!1,s=e||n.tr,o=this.buildProps(s,r);return{...Object.fromEntries(Object.entries(t).map(([c,a])=>[c,(...l)=>a(...l)({...o,dispatch:void 0})])),chain:()=>this.createChain(s,r)}}buildProps(e,t=!0){let{rawCommands:n,editor:r,state:s}=this,{view:o}=r,i={tr:e,editor:r,view:o,state:Se({state:s,transaction:e}),dispatch:t?()=>{}:void 0,chain:()=>this.createChain(e,t),can:()=>this.createCan(e),get commands(){return Object.fromEntries(Object.entries(n).map(([c,a])=>[c,(...l)=>a(...l)(i)]))}};return i}},zt={};je(zt,{blur:()=>_n,clearContent:()=>jn,clearNodes:()=>Rn,command:()=>Fn,createParagraphNear:()=>Wn,cut:()=>Jn,deleteCurrentNode:()=>qn,deleteNode:()=>Xn,deleteRange:()=>Yn,deleteSelection:()=>Zn,enter:()=>er,exitCode:()=>nr,extendMarkRange:()=>or,first:()=>sr,focus:()=>lr,forEach:()=>dr,insertContent:()=>ur,insertContentAt:()=>br,joinBackward:()=>Cr,joinDown:()=>Er,joinForward:()=>Ir,joinItemBackward:()=>Pr,joinItemForward:()=>Lr,joinTextblockBackward:()=>zr,joinTextblockForward:()=>Br,joinUp:()=>Tr,keyboardShortcut:()=>Hr,lift:()=>jr,liftEmptyBlock:()=>Rr,liftListItem:()=>Vr,newlineInCode:()=>Kr,resetAttributes:()=>Jr,scrollIntoView:()=>qr,selectAll:()=>Yr,selectNodeBackward:()=>Qr,selectNodeForward:()=>eo,selectParentNode:()=>no,selectTextblockEnd:()=>oo,selectTextblockStart:()=>io,setContent:()=>co,setMark:()=>No,setMeta:()=>Lo,setNode:()=>Do,setNodeSelection:()=>Oo,setTextDirection:()=>Bo,setTextSelection:()=>$o,sinkListItem:()=>_o,splitBlock:()=>Ro,splitListItem:()=>Ko,toggleList:()=>Xo,toggleMark:()=>Yo,toggleNode:()=>Go,toggleWrap:()=>Qo,undoInputRule:()=>Zo,unsetAllMarks:()=>es,unsetMark:()=>ts,unsetTextDirection:()=>ns,updateAttributes:()=>rs,wrapIn:()=>ss,wrapInList:()=>as});var _n=()=>({editor:e,view:t})=>(requestAnimationFrame(()=>{var n;e.isDestroyed||(t.dom.blur(),(n=window?.getSelection())==null||n.removeAllRanges())}),!0),jn=(e=!0)=>({commands:t})=>t.setContent("",{emitUpdate:e}),Rn=()=>({state:e,tr:t,dispatch:n})=>{let{selection:r}=t,{ranges:s}=r;return n&&s.forEach(({$from:o,$to:i})=>{e.doc.nodesBetween(o.pos,i.pos,(c,a)=>{if(c.type.isText)return;let{doc:l,mapping:p}=t,d=l.resolve(p.map(a)),m=l.resolve(p.map(a+c.nodeSize)),u=d.blockRange(m);if(!u)return;let h=Un(u);if(c.type.isTextblock){let{defaultType:f}=d.parent.contentMatchAt(d.index());t.setNodeMarkup(u.start,f)}(h||h===0)&&t.lift(u,h)})}),!0},Fn=e=>t=>e(t),Wn=()=>({state:e,dispatch:t})=>Vn(e,t),Jn=(e,t)=>({editor:n,tr:r})=>{let{state:s}=n,o=s.doc.slice(e.from,e.to);r.deleteRange(e.from,e.to);let i=r.mapping.map(t);return r.insert(i,o.content),r.setSelection(new Kn(r.doc.resolve(Math.max(i-1,0)))),!0},qn=()=>({tr:e,dispatch:t})=>{let{selection:n}=e,r=n.$anchor.node();if(r.content.size>0)return!1;let s=e.selection.$anchor;for(let o=s.depth;o>0;o-=1)if(s.node(o).type===r.type){if(t){let c=s.before(o),a=s.after(o);e.delete(c,a).scrollIntoView()}return!0}return!1};function _(e,t){if(typeof e=="string"){if(!t.nodes[e])throw Error(`There is no node type named '${e}'. Maybe you forgot to add the extension?`);return t.nodes[e]}return e}var Xn=e=>({tr:t,state:n,dispatch:r})=>{let s=_(e,n.schema),o=t.selection.$anchor;for(let i=o.depth;i>0;i-=1)if(o.node(i).type===s){if(r){let a=o.before(i),l=o.after(i);t.delete(a,l).scrollIntoView()}return!0}return!1},Yn=e=>({tr:t,dispatch:n})=>{let{from:r,to:s}=e;return n&&t.delete(r,s),!0},Gn=e=>e.content?/^text(\*|\+)/.test(e.content):!1,bt=(e,t,n)=>{if(!e.parent.isInline||n==="left"&&e.pos>e.start()||n==="right"&&e.pos<e.end())return e.pos;let r=t.nodes[e.parent.type.name].spec;return Gn(r)?n==="left"?e.start()-1:e.end()+1:e.pos},Qn=(e,t,n)=>{let r=bt(e,n,"left"),s=bt(t,n,"right");return{from:r,to:s}},Zn=()=>({state:e,dispatch:t})=>{let{$from:n,$to:r}=e.selection;if(e.selection.empty)return!1;let{from:s,to:o}=Qn(n,r,e.schema);return t&&(e.tr.deleteRange(s,o).scrollIntoView(),t(e.tr)),!0},er=()=>({commands:e})=>e.keyboardShortcut("Enter"),nr=()=>({state:e,dispatch:t})=>tr(e,t);function Re(e){return Object.prototype.toString.call(e)==="[object RegExp]"}function we(e,t,n={strict:!0}){let r=Object.keys(t);return r.length?r.every(s=>n.strict?t[s]===e[s]:Re(t[s])?t[s].test(e[s]):t[s]===e[s]):!0}function Ot(e,t,n={}){return e.find(r=>r.type===t&&we(Object.fromEntries(Object.keys(n).map(s=>[s,r.attrs[s]])),n))}function wt(e,t,n={}){return!!Ot(e,t,n)}function Bt(e,t,n){if(!e||!t)return;let r=e.parent.childAfter(e.parentOffset);if((!r.node||!r.node.marks.some(l=>l.type===t))&&(r=e.parent.childBefore(e.parentOffset)),!r.node||!r.node.marks.some(l=>l.type===t))return;if(!n){let l=r.node.marks.find(p=>p.type===t);l&&(n=l.attrs)}if(!Ot([...r.node.marks],t,n))return;let o=r.index,i=e.start()+r.offset,c=o+1,a=i+r.node.nodeSize;for(;o>0&&wt([...e.parent.child(o-1).marks],t,n);)o-=1,i-=e.parent.child(o).nodeSize;for(;c<e.parent.childCount&&wt([...e.parent.child(c).marks],t,n);)a+=e.parent.child(c).nodeSize,c+=1;return{from:i,to:a}}function J(e,t){if(typeof e=="string"){if(!t.marks[e])throw Error(`There is no mark type named '${e}'. Maybe you forgot to add the extension?`);return t.marks[e]}return e}var or=(e,t)=>({tr:n,state:r,dispatch:s})=>{let o=J(e,r.schema),{doc:i,selection:c}=n,{$from:a,from:l,to:p}=c;if(s){let d=Bt(a,o,t);if(d&&d.from<=l&&d.to>=p){let m=rr.create(i,d.from,d.to);n.setSelection(m)}}return!0},sr=e=>t=>{let n=typeof e=="function"?e(t):e;for(let r=0;r<n.length;r+=1)if(n[r](t))return!0;return!1};function $t(e){return e instanceof ir}function G(e=0,t=0,n=0){return Math.min(Math.max(e,t),n)}function ar(e,t=null){if(!t)return null;let n=kt.atStart(e),r=kt.atEnd(e);if(t==="start"||t===!0)return n;if(t==="end")return r;let s=n.from,o=r.to;return t==="all"?Mt.create(e,G(0,s,o),G(e.content.size,s,o)):Mt.create(e,G(t,s,o),G(t,s,o))}function St(){return navigator.platform==="Android"||/android/i.test(navigator.userAgent)}function ke(){return["iPad Simulator","iPhone Simulator","iPod Simulator","iPad","iPhone","iPod"].includes(navigator.platform)||navigator.userAgent.includes("Mac")&&"ontouchend"in document}function cr(){return typeof navigator<"u"?/^((?!chrome|android).)*safari/i.test(navigator.userAgent):!1}var lr=(e=null,t={})=>({editor:n,view:r,tr:s,dispatch:o})=>{t={scrollIntoView:!0,...t};let i=()=>{(ke()||St())&&r.dom.focus(),cr()&&!ke()&&!St()&&r.dom.focus({preventScroll:!0}),requestAnimationFrame(()=>{n.isDestroyed||(r.focus(),t?.scrollIntoView&&n.commands.scrollIntoView())})};try{if(r.hasFocus()&&e===null||e===!1)return!0}catch{return!1}if(o&&e===null&&!$t(n.state.selection))return i(),!0;let c=ar(s.doc,e)||n.state.selection,a=n.state.selection.eq(c);return o&&(a||s.setSelection(c),a&&s.storedMarks&&s.setStoredMarks(s.storedMarks),i()),!0},dr=(e,t)=>n=>e.every((r,s)=>t(r,{...n,index:s})),ur=(e,t)=>({tr:n,commands:r})=>r.insertContentAt({from:n.selection.from,to:n.selection.to},e,t),Ht=e=>{let t=e.childNodes;for(let n=t.length-1;n>=0;n-=1){let r=t[n];r.nodeType===3&&r.nodeValue&&/^(\n\s\s|\n)$/.test(r.nodeValue)?e.removeChild(r):r.nodeType===1&&Ht(r)}return e};function ge(e){if(typeof window>"u")throw new Error("[tiptap error]: there is no window object available, so this function cannot be used");let t=`<body>${e}</body>`,n=new window.DOMParser().parseFromString(t,"text/html").body;return Ht(n)}function de(e,t,n){if(e instanceof pr||e instanceof Tt)return e;n={slice:!0,parseOptions:{},...n};let r=typeof e=="object"&&e!==null,s=typeof e=="string";if(r)try{if(Array.isArray(e)&&e.length>0)return Tt.fromArray(e.map(c=>t.nodeFromJSON(c)));let i=t.nodeFromJSON(e);return n.errorOnInvalidContent&&i.check(),i}catch(o){if(n.errorOnInvalidContent)throw new Error("[tiptap error]: Invalid JSON content",{cause:o});return console.warn("[tiptap warn]: Invalid content.","Passed value:",e,"Error:",o),de("",t,n)}if(s){if(n.errorOnInvalidContent){let i=!1,c="",a=new fr({topNode:t.spec.topNode,marks:t.spec.marks,nodes:t.spec.nodes.append({__tiptap__private__unknown__catch__all__node:{content:"inline*",group:"block",parseDOM:[{tag:"*",getAttrs:l=>(i=!0,c=typeof l=="string"?l:l.outerHTML,null)}]}})});if(n.slice?Le.fromSchema(a).parseSlice(ge(e),n.parseOptions):Le.fromSchema(a).parse(ge(e),n.parseOptions),n.errorOnInvalidContent&&i)throw new Error("[tiptap error]: Invalid HTML content",{cause:new Error(`Invalid element found: ${c}`)})}let o=Le.fromSchema(t);return n.slice?o.parseSlice(ge(e),n.parseOptions).content:o.parse(ge(e),n.parseOptions)}return de("",t,n)}function yr(e,t,n){let r=e.steps.length-1;if(r<t)return;let s=e.steps[r];if(!(s instanceof vr||s instanceof gr))return;let o=e.mapping.maps[r],i=0;o.forEach((c,a,l,p)=>{i===0&&(i=p)}),e.setSelection(hr.near(e.doc.resolve(i),n))}var xr=e=>!("type"in e),br=(e,t,n)=>({tr:r,dispatch:s,editor:o})=>{var i;if(s){n={parseOptions:o.options.parseOptions,updateSelection:!0,applyInputRules:!1,applyPasteRules:!1,...n};let c,a=g=>{o.emit("contentError",{editor:o,error:g,disableCollaboration:()=>{"collaboration"in o.storage&&typeof o.storage.collaboration=="object"&&o.storage.collaboration&&(o.storage.collaboration.isDisabled=!0)}})},l={preserveWhitespace:"full",...n.parseOptions};if(!n.errorOnInvalidContent&&!o.options.enableContentCheck&&o.options.emitContentError)try{de(t,o.schema,{parseOptions:l,errorOnInvalidContent:!0})}catch(g){a(g)}try{c=de(t,o.schema,{parseOptions:l,errorOnInvalidContent:(i=n.errorOnInvalidContent)!=null?i:o.options.enableContentCheck})}catch(g){return a(g),!1}let{from:p,to:d}=typeof e=="number"?{from:e,to:e}:{from:e.from,to:e.to},m=!0,u=!0;if((xr(c)?c:[c]).forEach(g=>{g.check(),m=m?g.isText&&g.marks.length===0:!1,u=u?g.isBlock:!1}),p===d&&u){let{parent:g}=r.doc.resolve(p);g.isTextblock&&!g.type.spec.code&&!g.childCount&&(p-=1,d+=1)}let f;if(m){if(Array.isArray(t))f=t.map(g=>g.text||"").join("");else if(t instanceof mr){let g="";t.forEach(v=>{v.text&&(g+=v.text)}),f=g}else typeof t=="object"&&t&&t.text?f=t.text:f=t;r.insertText(f,p,d)}else{f=c;let g=r.doc.resolve(p),v=g.node(),y=g.parentOffset===0,C=v.isText||v.isTextblock,I=v.content.size>0;y&&C&&I&&u&&(p=Math.max(0,p-1)),r.replaceWith(p,d,f)}n.updateSelection&&yr(r,r.steps.length-1,-1),n.applyInputRules&&r.setMeta("applyInputRules",{from:p,text:f}),n.applyPasteRules&&r.setMeta("applyPasteRules",{from:p,text:f})}return!0},Tr=()=>({state:e,dispatch:t})=>Sr(e,t),Er=()=>({state:e,dispatch:t})=>kr(e,t),Cr=()=>({state:e,dispatch:t})=>wr(e,t),Ir=()=>({state:e,dispatch:t})=>Mr(e,t),Pr=()=>({state:e,dispatch:t,tr:n})=>{try{let r=Ar(e.doc,e.selection.$from.pos,-1);return r==null?!1:(n.join(r,2),t&&t(n),!0)}catch{return!1}},Lr=()=>({state:e,dispatch:t,tr:n})=>{try{let r=Nr(e.doc,e.selection.$from.pos,1);return r==null?!1:(n.join(r,2),t&&t(n),!0)}catch{return!1}},zr=()=>({state:e,dispatch:t})=>Dr(e,t),Br=()=>({state:e,dispatch:t})=>Or(e,t);function _t(){return typeof navigator<"u"?/Mac/.test(navigator.platform):!1}function $r(e){let t=e.split(/-(?!$)/),n=t[t.length-1];n==="Space"&&(n=" ");let r,s,o,i;for(let c=0;c<t.length-1;c+=1){let a=t[c];if(/^(cmd|meta|m)$/i.test(a))i=!0;else if(/^a(lt)?$/i.test(a))r=!0;else if(/^(c|ctrl|control)$/i.test(a))s=!0;else if(/^s(hift)?$/i.test(a))o=!0;else if(/^mod$/i.test(a))ke()||_t()?i=!0:s=!0;else throw new Error(`Unrecognized modifier name: ${a}`)}return r&&(n=`Alt-${n}`),s&&(n=`Ctrl-${n}`),i&&(n=`Meta-${n}`),o&&(n=`Shift-${n}`),n}var Hr=e=>({editor:t,view:n,tr:r,dispatch:s})=>{let o=$r(e).split(/-(?!$)/),i=o.find(l=>!["Alt","Ctrl","Meta","Shift"].includes(l)),c=new KeyboardEvent("keydown",{key:i==="Space"?" ":i,altKey:o.includes("Alt"),ctrlKey:o.includes("Ctrl"),metaKey:o.includes("Meta"),shiftKey:o.includes("Shift"),bubbles:!0,cancelable:!0}),a=t.captureTransaction(()=>{n.someProp("handleKeyDown",l=>l(n,c))});return a?.steps.forEach(l=>{let p=l.map(r.mapping);p&&s&&r.maybeStep(p)}),!0};function Fe(e,t,n={}){let{from:r,to:s,empty:o}=e.selection,i=t?_(t,e.schema):null,c=[];e.doc.nodesBetween(r,s,(d,m)=>{if(d.isText)return;let u=Math.max(r,m),h=Math.min(s,m+d.nodeSize);c.push({node:d,from:u,to:h})});let a=s-r,l=c.filter(d=>i?i.name===d.node.type.name:!0).filter(d=>we(d.node.attrs,n,{strict:!1}));return o?!!l.length:l.reduce((d,m)=>d+m.to-m.from,0)>=a}var jr=(e,t={})=>({state:n,dispatch:r})=>{let s=_(e,n.schema);return Fe(n,s,t)?_r(n,r):!1},Rr=()=>({state:e,dispatch:t})=>Ur(e,t),Vr=e=>({state:t,dispatch:n})=>{let r=_(e,t.schema);return Fr(r)(t,n)},Kr=()=>({state:e,dispatch:t})=>Wr(e,t);function jt(e,t){return t.nodes[e]?"node":t.marks[e]?"mark":null}function Et(e,t){let n=typeof t=="string"?[t]:t;return Object.keys(e).reduce((r,s)=>(n.includes(s)||(r[s]=e[s]),r),{})}var Jr=(e,t)=>({tr:n,state:r,dispatch:s})=>{let o=null,i=null,c=jt(typeof e=="string"?e:e.name,r.schema);if(!c)return!1;c==="node"&&(o=_(e,r.schema)),c==="mark"&&(i=J(e,r.schema));let a=!1;return n.selection.ranges.forEach(l=>{r.doc.nodesBetween(l.$from.pos,l.$to.pos,(p,d)=>{o&&o===p.type&&(a=!0,s&&n.setNodeMarkup(d,void 0,Et(p.attrs,t))),i&&p.marks.length&&p.marks.forEach(m=>{i===m.type&&(a=!0,s&&n.addMark(d,d+p.nodeSize,i.create(Et(m.attrs,t))))})})}),a},qr=()=>({tr:e,dispatch:t})=>(t&&e.scrollIntoView(),!0),Yr=()=>({tr:e,dispatch:t})=>{if(t){let n=new Xr(e.doc);e.setSelection(n)}return!0},Qr=()=>({state:e,dispatch:t})=>Gr(e,t),eo=()=>({state:e,dispatch:t})=>Zr(e,t),no=()=>({state:e,dispatch:t})=>to(e,t),oo=()=>({state:e,dispatch:t})=>ro(e,t),io=()=>({state:e,dispatch:t})=>so(e,t);function ao(e,t,n={},r={}){return de(e,t,{slice:!1,parseOptions:n,errorOnInvalidContent:r.errorOnInvalidContent})}var co=(e,{errorOnInvalidContent:t,emitUpdate:n=!0,parseOptions:r={}}={})=>({editor:s,tr:o,dispatch:i,commands:c})=>{let{doc:a}=o;if(r.preserveWhitespace!=="full"){let l=ao(e,s.schema,r,{errorOnInvalidContent:t??s.options.enableContentCheck});return i&&o.replaceWith(0,a.content.size,l).setMeta("preventUpdate",!n),!0}return i&&o.setMeta("preventUpdate",!n),c.insertContentAt({from:0,to:a.content.size},e,{parseOptions:r,errorOnInvalidContent:t??s.options.enableContentCheck})};function lo(e,t){let n=J(t,e.schema),{from:r,to:s,empty:o}=e.selection,i=[];o?(e.storedMarks&&i.push(...e.storedMarks),i.push(...e.selection.$head.marks())):e.doc.nodesBetween(r,s,a=>{i.push(...a.marks)});let c=i.find(a=>a.type.name===n.name);return c?{...c.attrs}:{}}function mo(e,t){let n=new uo(e);return t.forEach(r=>{r.steps.forEach(s=>{n.step(s)})}),n}function po(e){for(let t=0;t<e.edgeCount;t+=1){let{type:n}=e.edge(t);if(n.isTextblock&&!n.hasRequiredAttrs())return n}return null}function fo(e,t){for(let n=e.depth;n>0;n-=1){let r=e.node(n);if(t(r))return{pos:n>0?e.before(n):0,start:e.start(n),depth:n,node:r}}}function Ve(e){return t=>fo(t.$from,e)}function b(e,t,n){return e.config[t]===void 0&&e.parent?b(e.parent,t,n):typeof e.config[t]=="function"?e.config[t].bind({...n,parent:e.parent?b(e.parent,t,n):null}):e.config[t]}function We(e){return e.map(t=>{let n={name:t.name,options:t.options,storage:t.storage},r=b(t,"addExtensions",n);return r?[t,...We(r())]:t}).flat(10)}function Ut(e,t){let n=ho.fromSchema(t).serializeFragment(e),s=document.implementation.createHTMLDocument().createElement("div");return s.appendChild(n),s.innerHTML}function vo(e){return typeof e=="function"}function O(e,t=void 0,...n){return vo(e)?t?e.bind(t)(...n):e(...n):e}function yo(e={}){return Object.keys(e).length===0&&e.constructor===Object}function te(e){let t=e.filter(s=>s.type==="extension"),n=e.filter(s=>s.type==="node"),r=e.filter(s=>s.type==="mark");return{baseExtensions:t,nodeExtensions:n,markExtensions:r}}function Rt(e){let t=[],{nodeExtensions:n,markExtensions:r}=te(e),s=[...n,...r],o={default:null,validate:void 0,rendered:!0,renderHTML:null,parseHTML:null,keepOnSplit:!0,isRequired:!1},i=n.filter(l=>l.name!=="text").map(l=>l.name),c=r.map(l=>l.name),a=[...i,...c];return e.forEach(l=>{let p={name:l.name,options:l.options,storage:l.storage,extensions:s},d=b(l,"addGlobalAttributes",p);if(!d)return;d().forEach(u=>{let h;Array.isArray(u.types)?h=u.types:u.types==="*"?h=a:u.types==="nodes"?h=i:u.types==="marks"?h=c:h=[],h.forEach(f=>{Object.entries(u.attributes).forEach(([g,v])=>{t.push({type:f,name:g,attribute:{...o,...v}})})})})}),s.forEach(l=>{let p={name:l.name,options:l.options,storage:l.storage},d=b(l,"addAttributes",p);if(!d)return;let m=d();Object.entries(m).forEach(([u,h])=>{let f={...o,...h};typeof f?.default=="function"&&(f.default=f.default()),f?.isRequired&&f?.default===void 0&&delete f.default,t.push({type:l.name,name:u,attribute:f})})}),t}function xo(e){let t=[],n="",r=!1,s=!1,o=0,i=e.length;for(let c=0;c<i;c+=1){let a=e[c];if(a==="'"&&!s){r=!r,n+=a;continue}if(a==='"'&&!r){s=!s,n+=a;continue}if(!r&&!s){if(a==="("){o+=1,n+=a;continue}if(a===")"&&o>0){o-=1,n+=a;continue}if(a===";"&&o===0){t.push(n),n="";continue}}n+=a}return n&&t.push(n),t}function Ct(e){let t=[],n=xo(e||""),r=n.length;for(let s=0;s<r;s+=1){let o=n[s],i=o.indexOf(":");if(i===-1)continue;let c=o.slice(0,i).trim(),a=o.slice(i+1).trim();c&&a&&t.push([c,a])}return t}function ue(...e){return e.filter(t=>!!t).reduce((t,n)=>{let r={...t};return Object.entries(n).forEach(([s,o])=>{if(!r[s]){r[s]=o;return}if(s==="class"){let c=o?String(o).split(" "):[],a=r[s]?r[s].split(" "):[],l=c.filter(p=>!a.includes(p));r[s]=[...a,...l].join(" ")}else if(s==="style"){let c=new Map([...Ct(r[s]),...Ct(o)]);r[s]=Array.from(c.entries()).map(([a,l])=>`${a}: ${l}`).join("; ")}else r[s]=o}),r},{})}function Me(e,t){return t.filter(n=>n.type===e.type.name).filter(n=>n.attribute.rendered).map(n=>n.attribute.renderHTML?n.attribute.renderHTML(e.attrs)||{}:{[n.name]:e.attrs[n.name]}).reduce((n,r)=>ue(n,r),{})}function bo(e){return typeof e!="string"?e:e.match(/^[+-]?(?:\d*\.)?\d+$/)?Number(e):e==="true"?!0:e==="false"?!1:e}function It(e,t){return"style"in e?e:{...e,getAttrs:n=>{let r=e.getAttrs?e.getAttrs(n):e.attrs;if(r===!1)return!1;let s=t.reduce((o,i)=>{let c=i.attribute.parseHTML?i.attribute.parseHTML(n):bo(n.getAttribute(i.name));return c==null?o:{...o,[i.name]:c}},{});return{...r,...s}}}}function At(e){return Object.fromEntries(Object.entries(e).filter(([t,n])=>t==="attrs"&&yo(n)?!1:n!=null))}function Pt(e){var t,n;let r={};return!((t=e?.attribute)!=null&&t.isRequired)&&"default"in(e?.attribute||{})&&(r.default=e.attribute.default),((n=e?.attribute)==null?void 0:n.validate)!==void 0&&(r.validate=e.attribute.validate),[e.name,r]}function wo(e,t){var n;let r=Rt(e),{nodeExtensions:s,markExtensions:o}=te(e),i=(n=s.find(l=>b(l,"topNode")))==null?void 0:n.name,c=Object.fromEntries(s.map(l=>{let p=r.filter(v=>v.type===l.name),d={name:l.name,options:l.options,storage:l.storage,editor:t},m=e.reduce((v,y)=>{let C=b(y,"extendNodeSchema",d);return{...v,...C?C(l):{}}},{}),u=At({...m,content:O(b(l,"content",d)),marks:O(b(l,"marks",d)),group:O(b(l,"group",d)),inline:O(b(l,"inline",d)),atom:O(b(l,"atom",d)),selectable:O(b(l,"selectable",d)),draggable:O(b(l,"draggable",d)),code:O(b(l,"code",d)),whitespace:O(b(l,"whitespace",d)),linebreakReplacement:O(b(l,"linebreakReplacement",d)),defining:O(b(l,"defining",d)),isolating:O(b(l,"isolating",d)),attrs:Object.fromEntries(p.map(Pt))}),h=O(b(l,"parseHTML",d));h&&(u.parseDOM=h.map(v=>It(v,p)));let f=b(l,"renderHTML",d);f&&(u.toDOM=v=>f({node:v,HTMLAttributes:Me(v,p)}));let g=b(l,"renderText",d);return g&&(u.toText=g),[l.name,u]})),a=Object.fromEntries(o.map(l=>{let p=r.filter(g=>g.type===l.name),d={name:l.name,options:l.options,storage:l.storage,editor:t},m=e.reduce((g,v)=>{let y=b(v,"extendMarkSchema",d);return{...g,...y?y(l):{}}},{}),u=At({...m,inclusive:O(b(l,"inclusive",d)),excludes:O(b(l,"excludes",d)),group:O(b(l,"group",d)),spanning:O(b(l,"spanning",d)),code:O(b(l,"code",d)),attrs:Object.fromEntries(p.map(Pt))}),h=O(b(l,"parseHTML",d));h&&(u.parseDOM=h.map(g=>It(g,p)));let f=b(l,"renderHTML",d);return f&&(u.toDOM=g=>f({mark:g,HTMLAttributes:Me(g,p)})),[l.name,u]}));return new go({topNode:i,nodes:c,marks:a})}function ko(e){let t=e.filter((n,r)=>e.indexOf(n)!==r);return Array.from(new Set(t))}function le(e){return e.sort((n,r)=>{let s=b(n,"priority")||100,o=b(r,"priority")||100;return s>o?-1:s<o?1:0})}function Ft(e){let t=le(We(e)),n=ko(t.map(r=>r.name));return n.length&&console.warn(`[tiptap warn]: Duplicate extension names found: [${n.map(r=>`'${r}'`).join(", ")}]. This can lead to issues.`),t}function Mo(e,t,n){let{from:r,to:s}=t,{blockSeparator:o=`
|
|
1
|
+
import"@mantine/core/styles.css";import"@mantine/tiptap/styles.css";import"@mantine/notifications/styles.css";import oe,{useEffect as Yi,useLayoutEffect as Gi}from"react";import{MantineProvider as Qi}from"@mantine/core";import{Notifications as Zi}from"@mantine/notifications";import{createTheme as Sn}from"@mantine/core";var Tn=["#e6f9ff","#b3ecff","#80dfff","#4dd2ff","#1ac5ff","#00b8e6","#0091b3","#006a80","#00434d","#001c1a"],En=["#e6f9f2","#c0f0de","#88e4c3","#4dd6a4","#26cb90","#00bf7d","#00a36c","#008d5d","#00764d","#005f3e"],Cn=["#ffe6e9","#fbbdc4","#f38b98","#ea576b","#e12c48","#d80a2d","#b30625","#8f041d","#6b0215","#47010e"],In=["#fff1e6","#ffd7b3","#ffb380","#ff8f4d","#ff6b1a","#e65c00","#b34700","#803300","#4d1f00","#1a0a00"],An=["#e6f9ff","#b3ecff","#80dfff","#4dd2ff","#1ac5ff","#00b8e6","#0091b3","#006a80","#00434d","#001c1a"],it={customBrand:Tn,emerald:En,ruby:Cn,sunset:In,ocean:An},at=e=>/^#(?:[0-9a-f]{3}|[0-9a-f]{6})$/i.test(e),Pn=e=>{let t=e.replace("#",""),n=t.length===3?t.split("").map(r=>r+r).join(""):t;return{r:parseInt(n.slice(0,2),16),g:parseInt(n.slice(2,4),16),b:parseInt(n.slice(4,6),16)}},Nn=({r:e,g:t,b:n})=>`#${[e,t,n].map(r=>r.toString(16).padStart(2,"0")).join("")}`,Pe=e=>Math.min(255,Math.max(0,Math.round(e))),Ln=e=>{let{r:t,g:n,b:r}=Pn(e);return[.08,.18,.3,.42,.54,.66,.76,.86,.92,.98].map(i=>Nn({r:Pe(t*i+255*(1-i)),g:Pe(n*i+255*(1-i)),b:Pe(r*i+255*(1-i))}))},ct=e=>{let t={...it},n=at(e)||!(e in it)?"customBrand":e;return at(e)&&(t.customBrand=Ln(e)),Sn({primaryColor:n,colors:t})};import Hn from"react";import{Provider as _n}from"react-redux";import{configureStore as $n}from"@reduxjs/toolkit";import{createSlice as Dn}from"@reduxjs/toolkit";var he={BASE_URL:"http://localhost:4000",SOCKET_URL:"http://localhost:4000"},lt="",dt=e=>{lt=e||""},G=()=>lt;import zn from"axios";var ut=zn.create({baseURL:he.BASE_URL,headers:{"Content-Type":"application/json",Authorization:G(),"Cache-Control":"no-cache",Pragma:"no-cache"}});ut.interceptors.request.use(e=>(e.headers?.set?.("Authorization",G()),e.headers?.set?.("Cache-Control","no-cache"),e.headers?.set?.("Pragma","no-cache"),e.headers?.set?.("Expires","0"),e));var ge=ut;import{notifications as ve}from"@mantine/notifications";var On={messagedUserList:null,messageList:[]},mt=Dn({name:"messages",initialState:On,reducers:{setMessagedUserList:(e,t)=>{let n=t.payload;if(n===null){e.messagedUserList=null;return}let r=n?.page??0;if(!e.messagedUserList||r===0){e.messagedUserList=n;return}let s=e.messagedUserList?.rows?.data??[],o=n?.rows?.data??[],i=[...s,...o],l=new Map;i.forEach(c=>{c?.chatId&&l.set(c.chatId,c)});let a=Array.from(l.values());e.messagedUserList={...n,rows:{...n.rows,data:a}}},setMessageList:(e,t)=>{let n=t.payload;if(n===null){e.messageList=[];return}let r=n?.page??0;if(!e.messageList?.rows?.data||r===0){e.messageList=n;return}e.messageList={...n,rows:{...n.rows,data:[...n.rows.data,...e.messageList.rows.data]}}},addNewMessage:(e,t)=>{e.messageList?.rows?.data&&e.messageList.rows.data.push(t.payload)},addUserToChatList:(e,t)=>{let n=t.payload;if(!e.messagedUserList){e.messagedUserList={hasMore:!1,rows:{success:!0,status:!0,message:"",data:[n]}};return}let r=e.messagedUserList.rows.data;e.messagedUserList.rows.data=r=r.filter(o=>o?.chatId);let s=r.findIndex(o=>o.chatId===n.chatId);if(s!==-1){let i={...r.splice(s,1)[0],...n};r.unshift(i)}else r.unshift(n)},resetMessageList:e=>{e.messageList=[]},updateUnreadCount:(e,t)=>{let{chatId:n,isActive:r}=t.payload,s=e.messagedUserList?.rows?.data;if(!s)return;let o=s.find(i=>i.chatId===n);o&&(r?o.unreadCount=0:o.unreadCount=(o.unreadCount||0)+1)},resetUnreadCount:(e,t)=>{let n=t.payload,r=e.messagedUserList?.rows?.data;if(!r)return;let s=r.find(o=>o.chatId===n);s&&(s.unreadCount=0)}}}),Ne=e=>async t=>ge.get(`/api/messages/userList/${e?.userId}?page=${e?.page||0}`).then(n=>(console.log("Fetched messages for userId:",n.data),t(se({...n.data,page:e?.page||0})),n.data)).catch(n=>{let r=n?.response?.data?.message||"Failed to fetch messages";return ve.show({title:"Message Fetch Failed",message:r,color:"red"}),n}),Le=e=>async t=>ge.get(`/api/messages/${e?.chatId}?page=${e?.page||0}&userId=${e?.userId}`).then(n=>(t(Bn({...n.data,page:e?.page||0})),n.data)).catch(n=>{let r=n?.response?.data?.message||"Failed to fetch messages";return ve.show({title:"Message Fetch Failed",message:r,color:"red"}),n});var pt=e=>async t=>ge.delete("/api/messages",{data:{chatId:e?.chatId,userId:e?.userId}}).then(n=>(t(ae()),ve.show({title:"Messages Deleted",message:"All messages in this chat have been deleted.",color:"green"}),n.data)).catch(n=>{let r=n?.response?.data?.message||"Failed to delete messages";return ve.show({title:"Message Deletion Failed",message:r,color:"red"}),n}),ft=()=>async e=>{e(se(null)),e(ae())},{setMessagedUserList:se,setMessageList:Bn,addNewMessage:ze,addUserToChatList:ie,resetMessageList:ae,updateUnreadCount:da,resetUnreadCount:ua}=mt.actions,ht=mt.reducer;var gt=$n({reducer:{chat:ht}});function vt({children:e}){return Hn.createElement(_n,{store:gt},e)}import xt,{useEffect as Un}from"react";import{io as jn}from"socket.io-client";var ee=null,yt,W=e=>e?((!ee||yt!==e)&&(ee&&(ee.disconnect(),ee=null),ee=jn(he.SOCKET_URL,{autoConnect:!1,transports:["websocket"],auth:{apiKey:G(),userId:e}}),yt=e),ee):null;function bt({children:e,userId:t}){return Un(()=>{if(!t)return;let n=W(t);if(n)return n.connected||(n.connect(),console.log("\u2705 Socket connected for:",t)),()=>{n.connected&&(n.disconnect(),console.log("Socket disconnected for:",t))}},[t]),xt.createElement(xt.Fragment,null,e)}import{Text as re,Modal as Hi,Button as _i,ActionIcon as ji,Autocomplete as Ui,Group as Ri,Avatar as st,Loader as fn}from"@mantine/core";import{IconPlus as Fi}from"@tabler/icons-react";import{useDisclosure as Vi}from"@mantine/hooks";import{Text as cn,Avatar as ln,ActionIcon as Pi}from"@mantine/core";import{IconArrowLeft as Ni,IconLock as Li}from"@tabler/icons-react";import T,{useState as Ce}from"react";import{IconSend as tn,IconAlignLeft as nn,IconAlignCenter as gi,IconAlignRight as vi,IconMoodPlus as yi,IconTextColor as xi}from"@tabler/icons-react";import bi from"@tiptap/extension-highlight";import wi from"@tiptap/extension-subscript";import ki from"@tiptap/extension-superscript";import Mi from"@tiptap/extension-text-align";import{liftTarget as Wn}from"@tiptap/pm/transform";import{createParagraphNear as qn}from"@tiptap/pm/commands";import{TextSelection as Yn}from"@tiptap/pm/state";import{exitCode as sr}from"@tiptap/pm/commands";import{TextSelection as ar}from"@tiptap/pm/state";import{TextSelection as dr}from"@tiptap/pm/state";import{Selection as Mt,TextSelection as St}from"@tiptap/pm/state";import{Fragment as gr}from"@tiptap/pm/model";import{DOMParser as De,Fragment as Et,Node as vr,Schema as yr}from"@tiptap/pm/model";import{Selection as xr}from"@tiptap/pm/state";import{ReplaceAroundStep as br,ReplaceStep as wr}from"@tiptap/pm/transform";import{joinBackward as Tr,joinDown as Er,joinForward as Cr,joinUp as Ir}from"@tiptap/pm/commands";import{joinPoint as zr}from"@tiptap/pm/transform";import{joinPoint as Or}from"@tiptap/pm/transform";import{joinTextblockBackward as $r}from"@tiptap/pm/commands";import{joinTextblockForward as _r}from"@tiptap/pm/commands";import{lift as Fr}from"@tiptap/pm/commands";import{liftEmptyBlock as Wr}from"@tiptap/pm/commands";import{liftListItem as Jr}from"@tiptap/pm/schema-list";import{newlineInCode as Xr}from"@tiptap/pm/commands";import{AllSelection as Zr}from"@tiptap/pm/state";import{selectNodeBackward as to}from"@tiptap/pm/commands";import{selectNodeForward as ro}from"@tiptap/pm/commands";import{selectParentNode as so}from"@tiptap/pm/commands";import{selectTextblockEnd as ao}from"@tiptap/pm/commands";import{selectTextblockStart as lo}from"@tiptap/pm/commands";import{Transform as ho}from"@tiptap/pm/transform";import{Node as tc}from"@tiptap/pm/model";import{DOMSerializer as xo}from"@tiptap/pm/model";import{Schema as bo}from"@tiptap/pm/model";import{DOMParser as sc}from"@tiptap/pm/model";import{Node as ac}from"@tiptap/pm/model";import{NodeSelection as lc}from"@tiptap/pm/state";import{setBlockType as zt}from"@tiptap/pm/commands";import{NodeSelection as Ho}from"@tiptap/pm/state";import{TextSelection as Be}from"@tiptap/pm/state";import{sinkListItem as Ro}from"@tiptap/pm/schema-list";import{NodeSelection as Vo,TextSelection as Wo}from"@tiptap/pm/state";import{canSplit as $e}from"@tiptap/pm/transform";import{Fragment as He,Slice as Jo}from"@tiptap/pm/model";import{TextSelection as qo}from"@tiptap/pm/state";import{canSplit as Xo}from"@tiptap/pm/transform";import{TextSelection as Go}from"@tiptap/pm/state";import{canJoin as Kt}from"@tiptap/pm/transform";import{wrapIn as cs}from"@tiptap/pm/commands";import{wrapInList as ds}from"@tiptap/pm/schema-list";import{EditorState as Sc}from"@tiptap/pm/state";import{EditorView as Ec}from"@tiptap/pm/view";import{keymap as ms}from"@tiptap/pm/keymap";import{Fragment as ps}from"@tiptap/pm/model";import{Plugin as fs}from"@tiptap/pm/state";import{Fragment as ys}from"@tiptap/pm/model";import{Plugin as xs}from"@tiptap/pm/state";import{Plugin as Es,PluginKey as Cs}from"@tiptap/pm/state";import{RemoveMarkStep as Ps}from"@tiptap/pm/transform";import{Plugin as Ls,PluginKey as zs}from"@tiptap/pm/state";import{Plugin as Os,PluginKey as Bs}from"@tiptap/pm/state";import{Plugin as Hs,PluginKey as _s}from"@tiptap/pm/state";import{Plugin as Us,PluginKey as Rs,Selection as Ue}from"@tiptap/pm/state";import{Plugin as Vs,PluginKey as Ws}from"@tiptap/pm/state";import{Plugin as Js,PluginKey as qs}from"@tiptap/pm/state";import{Plugin as Ys,PluginKey as Gs}from"@tiptap/pm/state";import{canJoin as Rc,findWrapping as Fc}from"@tiptap/pm/transform";import{NodeSelection as Wc}from"@tiptap/pm/state";import{NodeSelection as Jc}from"@tiptap/pm/state";var Rn=Object.defineProperty,Re=(e,t)=>{for(var n in t)Rn(e,n,{get:t[n],enumerable:!0})};function Ee(e){let{state:t,transaction:n}=e,{selection:r}=n,{doc:s}=n,{storedMarks:o}=n;return{...t,apply:t.apply.bind(t),applyTransaction:t.applyTransaction.bind(t),plugins:t.plugins,schema:t.schema,reconfigure:t.reconfigure.bind(t),toJSON:t.toJSON.bind(t),get storedMarks(){return o},get selection(){return r},get doc(){return s},get tr(){return r=n.selection,s=n.doc,o=n.storedMarks,n}}}var Fe=class{constructor(e){this.editor=e.editor,this.rawCommands=this.editor.extensionManager.commands,this.customState=e.state}get hasCustomState(){return!!this.customState}get state(){return this.customState||this.editor.state}get commands(){let{rawCommands:e,editor:t,state:n}=this,{view:r}=t,{tr:s}=n,o=this.buildProps(s);return Object.fromEntries(Object.entries(e).map(([i,l])=>[i,(...c)=>{let m=l(...c)(o);return!s.getMeta("preventDispatch")&&!this.hasCustomState&&r.dispatch(s),m}]))}get chain(){return()=>this.createChain()}get can(){return()=>this.createCan()}createChain(e,t=!0){let{rawCommands:n,editor:r,state:s}=this,{view:o}=r,i=[],l=!!e,a=e||s.tr,c=()=>(!l&&t&&!a.getMeta("preventDispatch")&&!this.hasCustomState&&o.dispatch(a),i.every(d=>d===!0)),m={...Object.fromEntries(Object.entries(n).map(([d,p])=>[d,(...h)=>{let f=this.buildProps(a,t),g=p(...h)(f);return i.push(g),m}])),run:c};return m}createCan(e){let{rawCommands:t,state:n}=this,r=!1,s=e||n.tr,o=this.buildProps(s,r);return{...Object.fromEntries(Object.entries(t).map(([l,a])=>[l,(...c)=>a(...c)({...o,dispatch:void 0})])),chain:()=>this.createChain(s,r)}}buildProps(e,t=!0){let{rawCommands:n,editor:r,state:s}=this,{view:o}=r,i={tr:e,editor:r,view:o,state:Ee({state:s,transaction:e}),dispatch:t?()=>{}:void 0,chain:()=>this.createChain(e,t),can:()=>this.createCan(e),get commands(){return Object.fromEntries(Object.entries(n).map(([l,a])=>[l,(...c)=>a(...c)(i)]))}};return i}},Ot={};Re(Ot,{blur:()=>Fn,clearContent:()=>Vn,clearNodes:()=>Kn,command:()=>Jn,createParagraphNear:()=>Xn,cut:()=>Gn,deleteCurrentNode:()=>Qn,deleteNode:()=>Zn,deleteRange:()=>er,deleteSelection:()=>rr,enter:()=>or,exitCode:()=>ir,extendMarkRange:()=>cr,first:()=>lr,focus:()=>pr,forEach:()=>fr,insertContent:()=>hr,insertContentAt:()=>Sr,joinBackward:()=>Nr,joinDown:()=>Pr,joinForward:()=>Lr,joinItemBackward:()=>Dr,joinItemForward:()=>Br,joinTextblockBackward:()=>Hr,joinTextblockForward:()=>jr,joinUp:()=>Ar,keyboardShortcut:()=>Rr,lift:()=>Vr,liftEmptyBlock:()=>Kr,liftListItem:()=>qr,newlineInCode:()=>Yr,resetAttributes:()=>Gr,scrollIntoView:()=>Qr,selectAll:()=>eo,selectNodeBackward:()=>no,selectNodeForward:()=>oo,selectParentNode:()=>io,selectTextblockEnd:()=>co,selectTextblockStart:()=>uo,setContent:()=>po,setMark:()=>Oo,setMeta:()=>Bo,setNode:()=>$o,setNodeSelection:()=>_o,setTextDirection:()=>jo,setTextSelection:()=>Uo,sinkListItem:()=>Fo,splitBlock:()=>Ko,splitListItem:()=>Yo,toggleList:()=>Zo,toggleMark:()=>es,toggleNode:()=>ts,toggleWrap:()=>ns,undoInputRule:()=>rs,unsetAllMarks:()=>os,unsetMark:()=>ss,unsetTextDirection:()=>is,updateAttributes:()=>as,wrapIn:()=>ls,wrapInList:()=>us});var Fn=()=>({editor:e,view:t})=>(requestAnimationFrame(()=>{var n;e.isDestroyed||(t.dom.blur(),(n=window?.getSelection())==null||n.removeAllRanges())}),!0),Vn=(e=!0)=>({commands:t})=>t.setContent("",{emitUpdate:e}),Kn=()=>({state:e,tr:t,dispatch:n})=>{let{selection:r}=t,{ranges:s}=r;return n&&s.forEach(({$from:o,$to:i})=>{e.doc.nodesBetween(o.pos,i.pos,(l,a)=>{if(l.type.isText)return;let{doc:c,mapping:m}=t,d=c.resolve(m.map(a)),p=c.resolve(m.map(a+l.nodeSize)),u=d.blockRange(p);if(!u)return;let h=Wn(u);if(l.type.isTextblock){let{defaultType:f}=d.parent.contentMatchAt(d.index());t.setNodeMarkup(u.start,f)}(h||h===0)&&t.lift(u,h)})}),!0},Jn=e=>t=>e(t),Xn=()=>({state:e,dispatch:t})=>qn(e,t),Gn=(e,t)=>({editor:n,tr:r})=>{let{state:s}=n,o=s.doc.slice(e.from,e.to);r.deleteRange(e.from,e.to);let i=r.mapping.map(t);return r.insert(i,o.content),r.setSelection(new Yn(r.doc.resolve(Math.max(i-1,0)))),!0},Qn=()=>({tr:e,dispatch:t})=>{let{selection:n}=e,r=n.$anchor.node();if(r.content.size>0)return!1;let s=e.selection.$anchor;for(let o=s.depth;o>0;o-=1)if(s.node(o).type===r.type){if(t){let l=s.before(o),a=s.after(o);e.delete(l,a).scrollIntoView()}return!0}return!1};function _(e,t){if(typeof e=="string"){if(!t.nodes[e])throw Error(`There is no node type named '${e}'. Maybe you forgot to add the extension?`);return t.nodes[e]}return e}var Zn=e=>({tr:t,state:n,dispatch:r})=>{let s=_(e,n.schema),o=t.selection.$anchor;for(let i=o.depth;i>0;i-=1)if(o.node(i).type===s){if(r){let a=o.before(i),c=o.after(i);t.delete(a,c).scrollIntoView()}return!0}return!1},er=e=>({tr:t,dispatch:n})=>{let{from:r,to:s}=e;return n&&t.delete(r,s),!0},tr=e=>e.content?/^text(\*|\+)/.test(e.content):!1,wt=(e,t,n)=>{if(!e.parent.isInline||n==="left"&&e.pos>e.start()||n==="right"&&e.pos<e.end())return e.pos;let r=t.nodes[e.parent.type.name].spec;return tr(r)?n==="left"?e.start()-1:e.end()+1:e.pos},nr=(e,t,n)=>{let r=wt(e,n,"left"),s=wt(t,n,"right");return{from:r,to:s}},rr=()=>({state:e,dispatch:t})=>{let{$from:n,$to:r}=e.selection;if(e.selection.empty)return!1;let{from:s,to:o}=nr(n,r,e.schema);return t&&(e.tr.deleteRange(s,o).scrollIntoView(),t(e.tr)),!0},or=()=>({commands:e})=>e.keyboardShortcut("Enter"),ir=()=>({state:e,dispatch:t})=>sr(e,t);function Ve(e){return Object.prototype.toString.call(e)==="[object RegExp]"}function Me(e,t,n={strict:!0}){let r=Object.keys(t);return r.length?r.every(s=>n.strict?t[s]===e[s]:Ve(t[s])?t[s].test(e[s]):t[s]===e[s]):!0}function Bt(e,t,n={}){return e.find(r=>r.type===t&&Me(Object.fromEntries(Object.keys(n).map(s=>[s,r.attrs[s]])),n))}function kt(e,t,n={}){return!!Bt(e,t,n)}function $t(e,t,n){if(!e||!t)return;let r=e.parent.childAfter(e.parentOffset);if((!r.node||!r.node.marks.some(c=>c.type===t))&&(r=e.parent.childBefore(e.parentOffset)),!r.node||!r.node.marks.some(c=>c.type===t))return;if(!n){let c=r.node.marks.find(m=>m.type===t);c&&(n=c.attrs)}if(!Bt([...r.node.marks],t,n))return;let o=r.index,i=e.start()+r.offset,l=o+1,a=i+r.node.nodeSize;for(;o>0&&kt([...e.parent.child(o-1).marks],t,n);)o-=1,i-=e.parent.child(o).nodeSize;for(;l<e.parent.childCount&&kt([...e.parent.child(l).marks],t,n);)a+=e.parent.child(l).nodeSize,l+=1;return{from:i,to:a}}function q(e,t){if(typeof e=="string"){if(!t.marks[e])throw Error(`There is no mark type named '${e}'. Maybe you forgot to add the extension?`);return t.marks[e]}return e}var cr=(e,t)=>({tr:n,state:r,dispatch:s})=>{let o=q(e,r.schema),{doc:i,selection:l}=n,{$from:a,from:c,to:m}=l;if(s){let d=$t(a,o,t);if(d&&d.from<=c&&d.to>=m){let p=ar.create(i,d.from,d.to);n.setSelection(p)}}return!0},lr=e=>t=>{let n=typeof e=="function"?e(t):e;for(let r=0;r<n.length;r+=1)if(n[r](t))return!0;return!1};function Ht(e){return e instanceof dr}function Q(e=0,t=0,n=0){return Math.min(Math.max(e,t),n)}function ur(e,t=null){if(!t)return null;let n=Mt.atStart(e),r=Mt.atEnd(e);if(t==="start"||t===!0)return n;if(t==="end")return r;let s=n.from,o=r.to;return t==="all"?St.create(e,Q(0,s,o),Q(e.content.size,s,o)):St.create(e,Q(t,s,o),Q(t,s,o))}function Tt(){return navigator.platform==="Android"||/android/i.test(navigator.userAgent)}function Se(){return["iPad Simulator","iPhone Simulator","iPod Simulator","iPad","iPhone","iPod"].includes(navigator.platform)||navigator.userAgent.includes("Mac")&&"ontouchend"in document}function mr(){return typeof navigator<"u"?/^((?!chrome|android).)*safari/i.test(navigator.userAgent):!1}var pr=(e=null,t={})=>({editor:n,view:r,tr:s,dispatch:o})=>{t={scrollIntoView:!0,...t};let i=()=>{(Se()||Tt())&&r.dom.focus(),mr()&&!Se()&&!Tt()&&r.dom.focus({preventScroll:!0}),requestAnimationFrame(()=>{n.isDestroyed||(r.focus(),t?.scrollIntoView&&n.commands.scrollIntoView())})};try{if(r.hasFocus()&&e===null||e===!1)return!0}catch{return!1}if(o&&e===null&&!Ht(n.state.selection))return i(),!0;let l=ur(s.doc,e)||n.state.selection,a=n.state.selection.eq(l);return o&&(a||s.setSelection(l),a&&s.storedMarks&&s.setStoredMarks(s.storedMarks),i()),!0},fr=(e,t)=>n=>e.every((r,s)=>t(r,{...n,index:s})),hr=(e,t)=>({tr:n,commands:r})=>r.insertContentAt({from:n.selection.from,to:n.selection.to},e,t),_t=e=>{let t=e.childNodes;for(let n=t.length-1;n>=0;n-=1){let r=t[n];r.nodeType===3&&r.nodeValue&&/^(\n\s\s|\n)$/.test(r.nodeValue)?e.removeChild(r):r.nodeType===1&&_t(r)}return e};function ye(e){if(typeof window>"u")throw new Error("[tiptap error]: there is no window object available, so this function cannot be used");let t=`<body>${e}</body>`,n=new window.DOMParser().parseFromString(t,"text/html").body;return _t(n)}function de(e,t,n){if(e instanceof vr||e instanceof Et)return e;n={slice:!0,parseOptions:{},...n};let r=typeof e=="object"&&e!==null,s=typeof e=="string";if(r)try{if(Array.isArray(e)&&e.length>0)return Et.fromArray(e.map(l=>t.nodeFromJSON(l)));let i=t.nodeFromJSON(e);return n.errorOnInvalidContent&&i.check(),i}catch(o){if(n.errorOnInvalidContent)throw new Error("[tiptap error]: Invalid JSON content",{cause:o});return console.warn("[tiptap warn]: Invalid content.","Passed value:",e,"Error:",o),de("",t,n)}if(s){if(n.errorOnInvalidContent){let i=!1,l="",a=new yr({topNode:t.spec.topNode,marks:t.spec.marks,nodes:t.spec.nodes.append({__tiptap__private__unknown__catch__all__node:{content:"inline*",group:"block",parseDOM:[{tag:"*",getAttrs:c=>(i=!0,l=typeof c=="string"?c:c.outerHTML,null)}]}})});if(n.slice?De.fromSchema(a).parseSlice(ye(e),n.parseOptions):De.fromSchema(a).parse(ye(e),n.parseOptions),n.errorOnInvalidContent&&i)throw new Error("[tiptap error]: Invalid HTML content",{cause:new Error(`Invalid element found: ${l}`)})}let o=De.fromSchema(t);return n.slice?o.parseSlice(ye(e),n.parseOptions).content:o.parse(ye(e),n.parseOptions)}return de("",t,n)}function kr(e,t,n){let r=e.steps.length-1;if(r<t)return;let s=e.steps[r];if(!(s instanceof wr||s instanceof br))return;let o=e.mapping.maps[r],i=0;o.forEach((l,a,c,m)=>{i===0&&(i=m)}),e.setSelection(xr.near(e.doc.resolve(i),n))}var Mr=e=>!("type"in e),Sr=(e,t,n)=>({tr:r,dispatch:s,editor:o})=>{var i;if(s){n={parseOptions:o.options.parseOptions,updateSelection:!0,applyInputRules:!1,applyPasteRules:!1,...n};let l,a=g=>{o.emit("contentError",{editor:o,error:g,disableCollaboration:()=>{"collaboration"in o.storage&&typeof o.storage.collaboration=="object"&&o.storage.collaboration&&(o.storage.collaboration.isDisabled=!0)}})},c={preserveWhitespace:"full",...n.parseOptions};if(!n.errorOnInvalidContent&&!o.options.enableContentCheck&&o.options.emitContentError)try{de(t,o.schema,{parseOptions:c,errorOnInvalidContent:!0})}catch(g){a(g)}try{l=de(t,o.schema,{parseOptions:c,errorOnInvalidContent:(i=n.errorOnInvalidContent)!=null?i:o.options.enableContentCheck})}catch(g){return a(g),!1}let{from:m,to:d}=typeof e=="number"?{from:e,to:e}:{from:e.from,to:e.to},p=!0,u=!0;if((Mr(l)?l:[l]).forEach(g=>{g.check(),p=p?g.isText&&g.marks.length===0:!1,u=u?g.isBlock:!1}),m===d&&u){let{parent:g}=r.doc.resolve(m);g.isTextblock&&!g.type.spec.code&&!g.childCount&&(m-=1,d+=1)}let f;if(p){if(Array.isArray(t))f=t.map(g=>g.text||"").join("");else if(t instanceof gr){let g="";t.forEach(v=>{v.text&&(g+=v.text)}),f=g}else typeof t=="object"&&t&&t.text?f=t.text:f=t;r.insertText(f,m,d)}else{f=l;let g=r.doc.resolve(m),v=g.node(),y=g.parentOffset===0,k=v.isText||v.isTextblock,E=v.content.size>0;y&&k&&E&&u&&(m=Math.max(0,m-1)),r.replaceWith(m,d,f)}n.updateSelection&&kr(r,r.steps.length-1,-1),n.applyInputRules&&r.setMeta("applyInputRules",{from:m,text:f}),n.applyPasteRules&&r.setMeta("applyPasteRules",{from:m,text:f})}return!0},Ar=()=>({state:e,dispatch:t})=>Ir(e,t),Pr=()=>({state:e,dispatch:t})=>Er(e,t),Nr=()=>({state:e,dispatch:t})=>Tr(e,t),Lr=()=>({state:e,dispatch:t})=>Cr(e,t),Dr=()=>({state:e,dispatch:t,tr:n})=>{try{let r=zr(e.doc,e.selection.$from.pos,-1);return r==null?!1:(n.join(r,2),t&&t(n),!0)}catch{return!1}},Br=()=>({state:e,dispatch:t,tr:n})=>{try{let r=Or(e.doc,e.selection.$from.pos,1);return r==null?!1:(n.join(r,2),t&&t(n),!0)}catch{return!1}},Hr=()=>({state:e,dispatch:t})=>$r(e,t),jr=()=>({state:e,dispatch:t})=>_r(e,t);function jt(){return typeof navigator<"u"?/Mac/.test(navigator.platform):!1}function Ur(e){let t=e.split(/-(?!$)/),n=t[t.length-1];n==="Space"&&(n=" ");let r,s,o,i;for(let l=0;l<t.length-1;l+=1){let a=t[l];if(/^(cmd|meta|m)$/i.test(a))i=!0;else if(/^a(lt)?$/i.test(a))r=!0;else if(/^(c|ctrl|control)$/i.test(a))s=!0;else if(/^s(hift)?$/i.test(a))o=!0;else if(/^mod$/i.test(a))Se()||jt()?i=!0:s=!0;else throw new Error(`Unrecognized modifier name: ${a}`)}return r&&(n=`Alt-${n}`),s&&(n=`Ctrl-${n}`),i&&(n=`Meta-${n}`),o&&(n=`Shift-${n}`),n}var Rr=e=>({editor:t,view:n,tr:r,dispatch:s})=>{let o=Ur(e).split(/-(?!$)/),i=o.find(c=>!["Alt","Ctrl","Meta","Shift"].includes(c)),l=new KeyboardEvent("keydown",{key:i==="Space"?" ":i,altKey:o.includes("Alt"),ctrlKey:o.includes("Ctrl"),metaKey:o.includes("Meta"),shiftKey:o.includes("Shift"),bubbles:!0,cancelable:!0}),a=t.captureTransaction(()=>{n.someProp("handleKeyDown",c=>c(n,l))});return a?.steps.forEach(c=>{let m=c.map(r.mapping);m&&s&&r.maybeStep(m)}),!0};function We(e,t,n={}){let{from:r,to:s,empty:o}=e.selection,i=t?_(t,e.schema):null,l=[];e.doc.nodesBetween(r,s,(d,p)=>{if(d.isText)return;let u=Math.max(r,p),h=Math.min(s,p+d.nodeSize);l.push({node:d,from:u,to:h})});let a=s-r,c=l.filter(d=>i?i.name===d.node.type.name:!0).filter(d=>Me(d.node.attrs,n,{strict:!1}));return o?!!c.length:c.reduce((d,p)=>d+p.to-p.from,0)>=a}var Vr=(e,t={})=>({state:n,dispatch:r})=>{let s=_(e,n.schema);return We(n,s,t)?Fr(n,r):!1},Kr=()=>({state:e,dispatch:t})=>Wr(e,t),qr=e=>({state:t,dispatch:n})=>{let r=_(e,t.schema);return Jr(r)(t,n)},Yr=()=>({state:e,dispatch:t})=>Xr(e,t);function Ut(e,t){return t.nodes[e]?"node":t.marks[e]?"mark":null}function Ct(e,t){let n=typeof t=="string"?[t]:t;return Object.keys(e).reduce((r,s)=>(n.includes(s)||(r[s]=e[s]),r),{})}var Gr=(e,t)=>({tr:n,state:r,dispatch:s})=>{let o=null,i=null,l=Ut(typeof e=="string"?e:e.name,r.schema);if(!l)return!1;l==="node"&&(o=_(e,r.schema)),l==="mark"&&(i=q(e,r.schema));let a=!1;return n.selection.ranges.forEach(c=>{r.doc.nodesBetween(c.$from.pos,c.$to.pos,(m,d)=>{o&&o===m.type&&(a=!0,s&&n.setNodeMarkup(d,void 0,Ct(m.attrs,t))),i&&m.marks.length&&m.marks.forEach(p=>{i===p.type&&(a=!0,s&&n.addMark(d,d+m.nodeSize,i.create(Ct(p.attrs,t))))})})}),a},Qr=()=>({tr:e,dispatch:t})=>(t&&e.scrollIntoView(),!0),eo=()=>({tr:e,dispatch:t})=>{if(t){let n=new Zr(e.doc);e.setSelection(n)}return!0},no=()=>({state:e,dispatch:t})=>to(e,t),oo=()=>({state:e,dispatch:t})=>ro(e,t),io=()=>({state:e,dispatch:t})=>so(e,t),co=()=>({state:e,dispatch:t})=>ao(e,t),uo=()=>({state:e,dispatch:t})=>lo(e,t);function mo(e,t,n={},r={}){return de(e,t,{slice:!1,parseOptions:n,errorOnInvalidContent:r.errorOnInvalidContent})}var po=(e,{errorOnInvalidContent:t,emitUpdate:n=!0,parseOptions:r={}}={})=>({editor:s,tr:o,dispatch:i,commands:l})=>{let{doc:a}=o;if(r.preserveWhitespace!=="full"){let c=mo(e,s.schema,r,{errorOnInvalidContent:t??s.options.enableContentCheck});return i&&o.replaceWith(0,a.content.size,c).setMeta("preventUpdate",!n),!0}return i&&o.setMeta("preventUpdate",!n),l.insertContentAt({from:0,to:a.content.size},e,{parseOptions:r,errorOnInvalidContent:t??s.options.enableContentCheck})};function fo(e,t){let n=q(t,e.schema),{from:r,to:s,empty:o}=e.selection,i=[];o?(e.storedMarks&&i.push(...e.storedMarks),i.push(...e.selection.$head.marks())):e.doc.nodesBetween(r,s,a=>{i.push(...a.marks)});let l=i.find(a=>a.type.name===n.name);return l?{...l.attrs}:{}}function go(e,t){let n=new ho(e);return t.forEach(r=>{r.steps.forEach(s=>{n.step(s)})}),n}function vo(e){for(let t=0;t<e.edgeCount;t+=1){let{type:n}=e.edge(t);if(n.isTextblock&&!n.hasRequiredAttrs())return n}return null}function yo(e,t){for(let n=e.depth;n>0;n-=1){let r=e.node(n);if(t(r))return{pos:n>0?e.before(n):0,start:e.start(n),depth:n,node:r}}}function Ke(e){return t=>yo(t.$from,e)}function x(e,t,n){return e.config[t]===void 0&&e.parent?x(e.parent,t,n):typeof e.config[t]=="function"?e.config[t].bind({...n,parent:e.parent?x(e.parent,t,n):null}):e.config[t]}function Je(e){return e.map(t=>{let n={name:t.name,options:t.options,storage:t.storage},r=x(t,"addExtensions",n);return r?[t,...Je(r())]:t}).flat(10)}function Rt(e,t){let n=xo.fromSchema(t).serializeFragment(e),s=document.implementation.createHTMLDocument().createElement("div");return s.appendChild(n),s.innerHTML}function wo(e){return typeof e=="function"}function O(e,t=void 0,...n){return wo(e)?t?e.bind(t)(...n):e(...n):e}function ko(e={}){return Object.keys(e).length===0&&e.constructor===Object}function te(e){let t=e.filter(s=>s.type==="extension"),n=e.filter(s=>s.type==="node"),r=e.filter(s=>s.type==="mark");return{baseExtensions:t,nodeExtensions:n,markExtensions:r}}function Ft(e){let t=[],{nodeExtensions:n,markExtensions:r}=te(e),s=[...n,...r],o={default:null,validate:void 0,rendered:!0,renderHTML:null,parseHTML:null,keepOnSplit:!0,isRequired:!1},i=n.filter(c=>c.name!=="text").map(c=>c.name),l=r.map(c=>c.name),a=[...i,...l];return e.forEach(c=>{let m={name:c.name,options:c.options,storage:c.storage,extensions:s},d=x(c,"addGlobalAttributes",m);if(!d)return;d().forEach(u=>{let h;Array.isArray(u.types)?h=u.types:u.types==="*"?h=a:u.types==="nodes"?h=i:u.types==="marks"?h=l:h=[],h.forEach(f=>{Object.entries(u.attributes).forEach(([g,v])=>{t.push({type:f,name:g,attribute:{...o,...v}})})})})}),s.forEach(c=>{let m={name:c.name,options:c.options,storage:c.storage},d=x(c,"addAttributes",m);if(!d)return;let p=d();Object.entries(p).forEach(([u,h])=>{let f={...o,...h};typeof f?.default=="function"&&(f.default=f.default()),f?.isRequired&&f?.default===void 0&&delete f.default,t.push({type:c.name,name:u,attribute:f})})}),t}function Mo(e){let t=[],n="",r=!1,s=!1,o=0,i=e.length;for(let l=0;l<i;l+=1){let a=e[l];if(a==="'"&&!s){r=!r,n+=a;continue}if(a==='"'&&!r){s=!s,n+=a;continue}if(!r&&!s){if(a==="("){o+=1,n+=a;continue}if(a===")"&&o>0){o-=1,n+=a;continue}if(a===";"&&o===0){t.push(n),n="";continue}}n+=a}return n&&t.push(n),t}function It(e){let t=[],n=Mo(e||""),r=n.length;for(let s=0;s<r;s+=1){let o=n[s],i=o.indexOf(":");if(i===-1)continue;let l=o.slice(0,i).trim(),a=o.slice(i+1).trim();l&&a&&t.push([l,a])}return t}function ue(...e){return e.filter(t=>!!t).reduce((t,n)=>{let r={...t};return Object.entries(n).forEach(([s,o])=>{if(!r[s]){r[s]=o;return}if(s==="class"){let l=o?String(o).split(" "):[],a=r[s]?r[s].split(" "):[],c=l.filter(m=>!a.includes(m));r[s]=[...a,...c].join(" ")}else if(s==="style"){let l=new Map([...It(r[s]),...It(o)]);r[s]=Array.from(l.entries()).map(([a,c])=>`${a}: ${c}`).join("; ")}else r[s]=o}),r},{})}function Te(e,t){return t.filter(n=>n.type===e.type.name).filter(n=>n.attribute.rendered).map(n=>n.attribute.renderHTML?n.attribute.renderHTML(e.attrs)||{}:{[n.name]:e.attrs[n.name]}).reduce((n,r)=>ue(n,r),{})}function So(e){return typeof e!="string"?e:e.match(/^[+-]?(?:\d*\.)?\d+$/)?Number(e):e==="true"?!0:e==="false"?!1:e}function At(e,t){return"style"in e?e:{...e,getAttrs:n=>{let r=e.getAttrs?e.getAttrs(n):e.attrs;if(r===!1)return!1;let s=t.reduce((o,i)=>{let l=i.attribute.parseHTML?i.attribute.parseHTML(n):So(n.getAttribute(i.name));return l==null?o:{...o,[i.name]:l}},{});return{...r,...s}}}}function Pt(e){return Object.fromEntries(Object.entries(e).filter(([t,n])=>t==="attrs"&&ko(n)?!1:n!=null))}function Nt(e){var t,n;let r={};return!((t=e?.attribute)!=null&&t.isRequired)&&"default"in(e?.attribute||{})&&(r.default=e.attribute.default),((n=e?.attribute)==null?void 0:n.validate)!==void 0&&(r.validate=e.attribute.validate),[e.name,r]}function To(e,t){var n;let r=Ft(e),{nodeExtensions:s,markExtensions:o}=te(e),i=(n=s.find(c=>x(c,"topNode")))==null?void 0:n.name,l=Object.fromEntries(s.map(c=>{let m=r.filter(v=>v.type===c.name),d={name:c.name,options:c.options,storage:c.storage,editor:t},p=e.reduce((v,y)=>{let k=x(y,"extendNodeSchema",d);return{...v,...k?k(c):{}}},{}),u=Pt({...p,content:O(x(c,"content",d)),marks:O(x(c,"marks",d)),group:O(x(c,"group",d)),inline:O(x(c,"inline",d)),atom:O(x(c,"atom",d)),selectable:O(x(c,"selectable",d)),draggable:O(x(c,"draggable",d)),code:O(x(c,"code",d)),whitespace:O(x(c,"whitespace",d)),linebreakReplacement:O(x(c,"linebreakReplacement",d)),defining:O(x(c,"defining",d)),isolating:O(x(c,"isolating",d)),attrs:Object.fromEntries(m.map(Nt))}),h=O(x(c,"parseHTML",d));h&&(u.parseDOM=h.map(v=>At(v,m)));let f=x(c,"renderHTML",d);f&&(u.toDOM=v=>f({node:v,HTMLAttributes:Te(v,m)}));let g=x(c,"renderText",d);return g&&(u.toText=g),[c.name,u]})),a=Object.fromEntries(o.map(c=>{let m=r.filter(g=>g.type===c.name),d={name:c.name,options:c.options,storage:c.storage,editor:t},p=e.reduce((g,v)=>{let y=x(v,"extendMarkSchema",d);return{...g,...y?y(c):{}}},{}),u=Pt({...p,inclusive:O(x(c,"inclusive",d)),excludes:O(x(c,"excludes",d)),group:O(x(c,"group",d)),spanning:O(x(c,"spanning",d)),code:O(x(c,"code",d)),attrs:Object.fromEntries(m.map(Nt))}),h=O(x(c,"parseHTML",d));h&&(u.parseDOM=h.map(g=>At(g,m)));let f=x(c,"renderHTML",d);return f&&(u.toDOM=g=>f({mark:g,HTMLAttributes:Te(g,m)})),[c.name,u]}));return new bo({topNode:i,nodes:l,marks:a})}function Eo(e){let t=e.filter((n,r)=>e.indexOf(n)!==r);return Array.from(new Set(t))}function le(e){return e.sort((n,r)=>{let s=x(n,"priority")||100,o=x(r,"priority")||100;return s>o?-1:s<o?1:0})}function Vt(e){let t=le(Je(e)),n=Eo(t.map(r=>r.name));return n.length&&console.warn(`[tiptap warn]: Duplicate extension names found: [${n.map(r=>`'${r}'`).join(", ")}]. This can lead to issues.`),t}function Co(e,t,n){let{from:r,to:s}=t,{blockSeparator:o=`
|
|
2
2
|
|
|
3
|
-
`,textSerializers:i={}}=n||{},c="";return e.nodesBetween(r,s,(a,l,p,d)=>{var m;a.isBlock&&l>r&&(c+=o);let u=i?.[a.type.name];if(u)return p&&(c+=u({node:a,pos:l,parent:p,index:d,range:t})),!1;a.isText&&(c+=(m=a?.text)==null?void 0:m.slice(Math.max(r,l)-l,s-l))}),c}function So(e){return Object.fromEntries(Object.entries(e.nodes).filter(([,t])=>t.spec.toText).map(([t,n])=>[t,n.spec.toText]))}function To(e,t=JSON.stringify){let n={};return e.filter(r=>{let s=t(r);return Object.prototype.hasOwnProperty.call(n,s)?!1:n[s]=!0})}function Eo(e){let t=To(e);return t.length===1?t:t.filter((n,r)=>!t.filter((o,i)=>i!==r).some(o=>n.oldRange.from>=o.oldRange.from&&n.oldRange.to<=o.oldRange.to&&n.newRange.from>=o.newRange.from&&n.newRange.to<=o.newRange.to))}function Co(e){let{mapping:t,steps:n}=e,r=[];return t.maps.forEach((s,o)=>{let i=[];if(s.ranges.length)s.forEach((c,a)=>{i.push({from:c,to:a})});else{let{from:c,to:a}=n[o];if(c===void 0||a===void 0)return;i.push({from:c,to:a})}i.forEach(({from:c,to:a})=>{let l=t.slice(o).map(c,-1),p=t.slice(o).map(a),d=t.invert().map(l,-1),m=t.invert().map(p);r.push({oldRange:{from:d,to:m},newRange:{from:l,to:p}})})}),Eo(r)}function ce(e,t){return t.nodes[e]||t.marks[e]||null}function be(e,t,n){return Object.fromEntries(Object.entries(n).filter(([r])=>{let s=e.find(o=>o.type===t&&o.name===r);return s?s.attribute.keepOnSplit:!1}))}var Io=(e,t=500)=>{let n="",r=e.parentOffset;return e.parent.nodesBetween(Math.max(0,r-t),r,(s,o,i,c)=>{var a,l;let p=((l=(a=s.type.spec).toText)==null?void 0:l.call(a,{node:s,pos:o,parent:i,index:c}))||s.textContent||"%leaf%";n+=s.isAtom&&!s.isText?p:p.slice(0,Math.max(0,r-o))}),n};function Ao(e,t,n={}){let{empty:r,ranges:s}=e.selection,o=t?J(t,e.schema):null;if(r)return!!(e.storedMarks||e.selection.$from.marks()).filter(d=>o?o.name===d.type.name:!0).find(d=>we(d.attrs,n,{strict:!1}));let i=0,c=[];if(s.forEach(({$from:d,$to:m})=>{let u=d.pos,h=m.pos;e.doc.nodesBetween(u,h,(f,g)=>{if(o&&f.inlineContent&&!f.type.allowsMarkType(o))return!1;if(!f.isText&&!f.marks.length)return;let v=Math.max(u,g),y=Math.min(h,g+f.nodeSize),C=y-v;i+=C,c.push(...f.marks.map(I=>({mark:I,from:v,to:y})))})}),i===0)return!1;let a=c.filter(d=>o?o.name===d.mark.type.name:!0).filter(d=>we(d.mark.attrs,n,{strict:!1})).reduce((d,m)=>d+m.to-m.from,0),l=c.filter(d=>o?d.mark.type!==o&&d.mark.type.excludes(o):!0).reduce((d,m)=>d+m.to-m.from,0);return(a>0?a+l:a)>=i}function Nt(e,t){return Array.isArray(t)?t.some(n=>(typeof n=="string"?n:n.name)===e.name):t}function De(e,t){let{nodeExtensions:n}=te(t),r=n.find(i=>i.name===e);if(!r)return!1;let s={name:r.name,options:r.options,storage:r.storage},o=O(b(r,"group",s));return typeof o!="string"?!1:o.split(" ").includes("list")}function Vt(e,{checkChildren:t=!0,ignoreWhitespace:n=!1}={}){var r;if(n){if(e.type.name==="hardBreak")return!0;if(e.isText)return!/\S/.test((r=e.text)!=null?r:"")}if(e.isText)return!e.text;if(e.isAtom||e.isLeaf)return!1;if(e.content.childCount===0)return!0;if(t){let s=!0;return e.content.forEach(o=>{s!==!1&&(Vt(o,{ignoreWhitespace:n,checkChildren:t})||(s=!1))}),s}return!1}function Po(e,t,n){var r;let{selection:s}=t,o=null;if($t(s)&&(o=s.$cursor),o){let c=(r=e.storedMarks)!=null?r:o.marks();return o.parent.type.allowsMarkType(n)&&(!!n.isInSet(c)||!c.some(l=>l.type.excludes(n)))}let{ranges:i}=s;return i.some(({$from:c,$to:a})=>{let l=c.depth===0?e.doc.inlineContent&&e.doc.type.allowsMarkType(n):!1;return e.doc.nodesBetween(c.pos,a.pos,(p,d,m)=>{if(l)return!1;if(p.isInline){let u=!m||m.type.allowsMarkType(n),h=!!n.isInSet(p.marks)||!p.marks.some(f=>f.type.excludes(n));l=u&&h}return!l}),l})}var No=(e,t={})=>({tr:n,state:r,dispatch:s})=>{let{selection:o}=n,{empty:i,ranges:c}=o,a=J(e,r.schema);if(s)if(i){let l=lo(r,a);n.addStoredMark(a.create({...l,...t}))}else c.forEach(l=>{let p=l.$from.pos,d=l.$to.pos;r.doc.nodesBetween(p,d,(m,u)=>{let h=Math.max(u,p),f=Math.min(u+m.nodeSize,d);m.marks.find(v=>v.type===a)?m.marks.forEach(v=>{a===v.type&&n.addMark(h,f,a.create({...v.attrs,...t}))}):n.addMark(h,f,a.create(t))})});return Po(r,n,a)},Lo=(e,t)=>({tr:n})=>(n.setMeta(e,t),!0),Do=(e,t={})=>({state:n,dispatch:r,chain:s})=>{let o=_(e,n.schema),i;return n.selection.$anchor.sameParent(n.selection.$head)&&(i=n.selection.$anchor.parent.attrs),o.isTextblock?s().command(({commands:c})=>Lt(o,{...i,...t})(n)?!0:c.clearNodes()).command(({state:c})=>Lt(o,{...i,...t})(c,r)).run():(console.warn('[tiptap warn]: Currently "setNode()" only supports text block nodes.'),!1)},Oo=e=>({tr:t,dispatch:n})=>{if(n){let{doc:r}=t,s=G(e,0,r.content.size),o=zo.create(r,s);t.setSelection(o)}return!0},Bo=(e,t)=>({tr:n,state:r,dispatch:s})=>{let{selection:o}=r,i,c;return typeof t=="number"?(i=t,c=t):t&&"from"in t&&"to"in t?(i=t.from,c=t.to):(i=o.from,c=o.to),s&&n.doc.nodesBetween(i,c,(a,l)=>{a.isText||n.setNodeMarkup(l,void 0,{...a.attrs,dir:e})}),!0},$o=e=>({tr:t,dispatch:n})=>{if(n){let{doc:r}=t,{from:s,to:o}=typeof e=="number"?{from:e,to:e}:e,i=ze.atStart(r).from,c=ze.atEnd(r).to,a=G(s,i,c),l=G(o,i,c),p=ze.create(r,a,l);t.setSelection(p)}return!0},_o=e=>({state:t,dispatch:n})=>{let r=_(e,t.schema);return Ho(r)(t,n)};function Dt(e,t){let n=e.storedMarks||e.selection.$to.parentOffset&&e.selection.$from.marks();if(n){let r=n.filter(s=>t?.includes(s.type.name));e.tr.ensureMarks(r)}}var Ro=({keepMarks:e=!0}={})=>({tr:t,state:n,dispatch:r,editor:s})=>{let{selection:o,doc:i}=t,{$from:c,$to:a}=o,l=s.extensionManager.attributes,p=be(l,c.node().type.name,c.node().attrs);if(o instanceof jo&&o.node.isBlock)return!c.parentOffset||!Oe(i,c.pos)?!1:(r&&(e&&Dt(n,s.extensionManager.splittableMarks),t.split(c.pos).scrollIntoView()),!0);if(!c.parent.isBlock)return!1;let d=a.parentOffset===a.parent.content.size,m=c.depth===0?void 0:po(c.node(-1).contentMatchAt(c.indexAfter(-1))),u=d&&m?[{type:m,attrs:p}]:void 0,h=Oe(t.doc,t.mapping.map(c.pos),1,u);if(!u&&!h&&Oe(t.doc,t.mapping.map(c.pos),1,m?[{type:m}]:void 0)&&(h=!0,u=m?[{type:m,attrs:p}]:void 0),r){if(h&&(o instanceof Uo&&t.deleteSelection(),t.split(t.mapping.map(c.pos),1,u),m&&!d&&!c.parentOffset&&c.parent.type!==m)){let f=t.mapping.map(c.before()),g=t.doc.resolve(f);c.node(-1).canReplaceWith(g.index(),g.index()+1,m)&&t.setNodeMarkup(t.mapping.map(c.before()),m)}e&&Dt(n,s.extensionManager.splittableMarks),t.scrollIntoView()}return h},Ko=(e,t={})=>({tr:n,state:r,dispatch:s,editor:o})=>{var i;let c=_(e,r.schema),{$from:a,$to:l}=r.selection,p=r.selection.node;if(p&&p.isBlock||a.depth<2||!a.sameParent(l))return!1;let d=a.node(-1);if(d.type!==c)return!1;let m=o.extensionManager.attributes;if(a.parent.content.size===0&&a.node(-1).childCount===a.indexAfter(-1)){if(a.depth===2||a.node(-3).type!==c||a.index(-2)!==a.node(-2).childCount-1)return!1;if(s){let v=Be.empty,y=a.index(-1)?1:a.index(-2)?2:3;for(let M=a.depth-y;M>=a.depth-3;M-=1)v=Be.from(a.node(M).copy(v));let C=a.indexAfter(-1)<a.node(-2).childCount?1:a.indexAfter(-2)<a.node(-3).childCount?2:3,I={...be(m,a.node().type.name,a.node().attrs),...t},w=((i=c.contentMatch.defaultType)==null?void 0:i.createAndFill(I))||void 0;v=v.append(Be.from(c.createAndFill(null,w)||void 0));let T=a.before(a.depth-(y-1));n.replace(T,a.after(-C),new Fo(v,4-y,0));let E=-1;n.doc.nodesBetween(T,n.doc.content.size,(M,N)=>{if(E>-1)return!1;M.isTextblock&&M.content.size===0&&(E=N+1)}),E>-1&&n.setSelection(Vo.near(n.doc.resolve(E))),n.scrollIntoView()}return!0}let u=l.pos===a.end()?d.contentMatchAt(0).defaultType:null,h={...be(m,d.type.name,d.attrs),...t},f={...be(m,a.node().type.name,a.node().attrs),...t};n.delete(a.pos,l.pos);let g=u?[{type:c,attrs:h},{type:u,attrs:f}]:[{type:c,attrs:h}];if(!Wo(n.doc,a.pos,2))return!1;if(s){let{selection:v,storedMarks:y}=r,{splittableMarks:C}=o.extensionManager,I=y||v.$to.parentOffset&&v.$from.marks();if(n.split(a.pos,2,g).scrollIntoView(),!I||!s)return!0;let w=I.filter(T=>C.includes(T.type.name));n.ensureMarks(w)}return!0},$e=(e,t)=>{let n=Ve(i=>i.type===t)(e.selection);if(!n)return!0;let r=e.doc.resolve(Math.max(0,n.pos-1)).before(n.depth);if(r===void 0)return!0;let s=e.doc.nodeAt(r);return n.node.type===s?.type&&Wt(e.doc,n.pos)&&e.join(n.pos),!0},He=(e,t)=>{let n=Ve(i=>i.type===t)(e.selection);if(!n)return!0;let r=e.doc.resolve(n.start).after(n.depth);if(r===void 0)return!0;let s=e.doc.nodeAt(r);return n.node.type===s?.type&&Wt(e.doc,r)&&e.join(r),!0};function qo(e){let t=e.doc,n=t.firstChild;if(!n)return null;let r=t.resolve(1),s=t.resolve(n.nodeSize-1);return Jo.between(r,s)}var Xo=(e,t,n,r={})=>({editor:s,tr:o,state:i,dispatch:c,chain:a,commands:l,can:p})=>{let{extensions:d,splittableMarks:m}=s.extensionManager,u=_(e,i.schema),h=_(t,i.schema),{selection:f,storedMarks:g}=i,{$from:v,$to:y}=f,C=v.blockRange(y),I=g||f.$to.parentOffset&&f.$from.marks();if(!C)return!1;let w=Ve(B=>De(B.type.name,d))(f),T=f.from===0&&f.to===i.doc.content.size,E=i.doc.content.content,M=E.length===1?E[0]:null,N=T&&M&&De(M.type.name,d)?{node:M,pos:0,depth:0}:null,P=w??N,L=!!w&&C.depth>=1&&C.depth-w.depth<=1,R=!!N;if((L||R)&&P){if(P.node.type===u)return T&&R?a().command(({tr:B,dispatch:H})=>{let $=qo(B);return $?(B.setSelection($),H&&H(B),!0):!1}).liftListItem(h).run():l.liftListItem(h);if(De(P.node.type.name,d)&&u.validContent(P.node.content))return a().command(()=>(o.setNodeMarkup(P.pos,u),!0)).command(()=>$e(o,u)).command(()=>He(o,u)).run()}return!n||!I||!c?a().command(()=>p().wrapInList(u,r)?!0:l.clearNodes()).wrapInList(u,r).command(()=>$e(o,u)).command(()=>He(o,u)).run():a().command(()=>{let B=p().wrapInList(u,r),H=I.filter($=>m.includes($.type.name));return o.ensureMarks(H),B?!0:l.clearNodes()}).wrapInList(u,r).command(()=>$e(o,u)).command(()=>He(o,u)).run()},Yo=(e,t={},n={})=>({state:r,commands:s})=>{let{extendEmptyMarkRange:o=!1}=n,i=J(e,r.schema);return Ao(r,i,t)?s.unsetMark(i,{extendEmptyMarkRange:o}):s.setMark(i,t)},Go=(e,t,n={})=>({state:r,commands:s})=>{let o=_(e,r.schema),i=_(t,r.schema),c=Fe(r,o,n),a;return r.selection.$anchor.sameParent(r.selection.$head)&&(a=r.selection.$anchor.parent.attrs),c?s.setNode(i,a):s.setNode(o,{...a,...n})},Qo=(e,t={})=>({state:n,commands:r})=>{let s=_(e,n.schema);return Fe(n,s,t)?r.lift(s):r.wrapIn(s,t)},Zo=()=>({state:e,dispatch:t})=>{let n=e.plugins;for(let r=0;r<n.length;r+=1){let s=n[r],o;if(s.spec.isInputRules&&(o=s.getState(e))){if(t){let i=e.tr,c=o.transform;for(let a=c.steps.length-1;a>=0;a-=1)i.step(c.steps[a].invert(c.docs[a]));if(o.text){let a=i.doc.resolve(o.from).marks();i.replaceWith(o.from,o.to,e.schema.text(o.text,a))}else i.delete(o.from,o.to)}return!0}}return!1},es=()=>({tr:e,dispatch:t})=>{let{selection:n}=e,{empty:r,ranges:s}=n;return r||t&&s.forEach(o=>{e.removeMark(o.$from.pos,o.$to.pos)}),!0},ts=(e,t={})=>({tr:n,state:r,dispatch:s})=>{var o;let{extendEmptyMarkRange:i=!1}=t,{selection:c}=n,a=J(e,r.schema),{$from:l,empty:p,ranges:d}=c;if(!s)return!0;if(p&&i){let{from:m,to:u}=c,h=(o=l.marks().find(g=>g.type===a))==null?void 0:o.attrs,f=Bt(l,a,h);f&&(m=f.from,u=f.to),n.removeMark(m,u,a)}else d.forEach(m=>{n.removeMark(m.$from.pos,m.$to.pos,a)});return n.removeStoredMark(a),!0},ns=e=>({tr:t,state:n,dispatch:r})=>{let{selection:s}=n,o,i;return typeof e=="number"?(o=e,i=e):e&&"from"in e&&"to"in e?(o=e.from,i=e.to):(o=s.from,i=s.to),r&&t.doc.nodesBetween(o,i,(c,a)=>{if(c.isText)return;let l={...c.attrs};delete l.dir,t.setNodeMarkup(a,void 0,l)}),!0},rs=(e,t={})=>({tr:n,state:r,dispatch:s})=>{let o=null,i=null,c=jt(typeof e=="string"?e:e.name,r.schema);if(!c)return!1;c==="node"&&(o=_(e,r.schema)),c==="mark"&&(i=J(e,r.schema));let a=!1;return n.selection.ranges.forEach(l=>{let p=l.$from.pos,d=l.$to.pos,m,u,h,f;n.selection.empty?r.doc.nodesBetween(p,d,(g,v)=>{o&&o===g.type&&(a=!0,h=Math.max(v,p),f=Math.min(v+g.nodeSize,d),m=v,u=g)}):r.doc.nodesBetween(p,d,(g,v)=>{v<p&&o&&o===g.type&&(a=!0,h=Math.max(v,p),f=Math.min(v+g.nodeSize,d),m=v,u=g),v>=p&&v<=d&&(o&&o===g.type&&(a=!0,s&&n.setNodeMarkup(v,void 0,{...g.attrs,...t})),i&&g.marks.length&&g.marks.forEach(y=>{if(i===y.type&&(a=!0,s)){let C=Math.max(v,p),I=Math.min(v+g.nodeSize,d);n.addMark(C,I,i.create({...y.attrs,...t}))}}))}),u&&(m!==void 0&&s&&n.setNodeMarkup(m,void 0,{...u.attrs,...t}),i&&u.marks.length&&u.marks.forEach(g=>{i===g.type&&s&&n.addMark(h,f,i.create({...g.attrs,...t}))}))}),a},ss=(e,t={})=>({state:n,dispatch:r})=>{let s=_(e,n.schema);return os(s,t)(n,r)},as=(e,t={})=>({state:n,dispatch:r})=>{let s=_(e,n.schema);return is(s,t)(n,r)};var us=(e,t)=>{if(Re(t))return t.exec(e);let n=t(e);if(!n)return null;let r=[n.text];return r.index=n.index,r.input=e,r.data=n.data,n.replaceWith&&(n.text.includes(n.replaceWith)||console.warn('[tiptap warn]: "inputRuleMatch.replaceWith" must be part of "inputRuleMatch.text".'),r.push(n.replaceWith)),r};function ve(e){var t;let{editor:n,from:r,to:s,text:o,rules:i,plugin:c}=e,{view:a}=n;if(a.composing)return!1;let l=a.state.doc.resolve(r);if(l.parent.type.spec.code||(t=l.nodeBefore||l.nodeAfter)!=null&&t.marks.find(m=>m.type.spec.code))return!1;let p=!1,d=Io(l)+o;return i.forEach(m=>{if(p)return;let u=us(d,m.find);if(!u)return;let h=a.state.tr,f=Se({state:a.state,transaction:h}),g={from:r-(u[0].length-o.length),to:s},{commands:v,chain:y,can:C}=new Ue({editor:n,state:f});m.handler({state:f,range:g,match:u,commands:v,chain:y,can:C})===null||!h.steps.length||(m.undoable&&h.setMeta(c,{transform:h,from:r,to:s,text:o}),a.dispatch(h),p=!0)}),p}function ms(e){let{editor:t,rules:n}=e,r=new ds({state:{init(){return null},apply(s,o,i){let c=s.getMeta(r);if(c)return c;let a=s.getMeta("applyInputRules");return a&&setTimeout(()=>{let{text:p}=a;typeof p=="string"?p=p:p=Ut(ls.from(p),i.schema);let{from:d}=a,m=d+p.length;ve({editor:t,from:d,to:m,text:p,rules:n,plugin:r})}),s.selectionSet||s.docChanged?null:o}},props:{handleTextInput(s,o,i,c){return ve({editor:t,from:o,to:i,text:c,rules:n,plugin:r})},handleDOMEvents:{compositionend:s=>(setTimeout(()=>{let{$cursor:o}=s.state.selection;o&&ve({editor:t,from:o.pos,to:o.pos,text:"",rules:n,plugin:r})}),!1)},handleKeyDown(s,o){if(o.key!=="Enter")return!1;let{$cursor:i}=s.state.selection;return i?ve({editor:t,from:i.pos,to:i.pos,text:`
|
|
4
|
-
`,rules:n,plugin:r}):!1}},isInputRules:!0});return r}function ps(e){return Object.prototype.toString.call(e).slice(8,-1)}function ye(e){return ps(e)!=="Object"?!1:e.constructor===Object&&Object.getPrototypeOf(e)===Object.prototype}function Kt(e,t){let n={...e};return ye(e)&&ye(t)&&Object.keys(t).forEach(r=>{ye(t[r])&&ye(e[r])?n[r]=Kt(e[r],t[r]):n[r]=t[r]}),n}var Ke=class{constructor(e={}){this.type="extendable",this.parent=null,this.child=null,this.name="",this.config={name:this.name},this.config={...this.config,...e},this.name=this.config.name}get options(){return{...O(b(this,"addOptions",{name:this.name}))||{}}}get storage(){return{...O(b(this,"addStorage",{name:this.name,options:this.options}))||{}}}configure(e={}){let t=this.extend({...this.config,addOptions:()=>Kt(this.options,e)});return t.name=this.name,t.parent=this.parent,this.child=null,t}extend(e={}){let t=new this.constructor({...this.config,...e});return t.parent=this,this.child=t,t.name="name"in e?e.name:t.parent.name,t}},Je=class Jt extends Ke{constructor(){super(...arguments),this.type="mark"}static create(t={}){let n=typeof t=="function"?t():t;return new Jt(n)}static handleExit({editor:t,mark:n}){let{tr:r}=t.state,s=t.state.selection.$from;if(s.pos===s.end()){let i=s.marks();if(!!!i.find(l=>l?.type.name===n.name))return!1;let a=i.find(l=>l?.type.name===n.name);return a&&r.removeStoredMark(a),r.insertText(" ",s.pos),t.view.dispatch(r),!0}return!1}configure(t){return super.configure(t)}extend(t){let n=typeof t=="function"?t():t;return super.extend(n)}};function gs(e){return typeof e=="number"}var vs=(e,t,n)=>{if(Re(t))return[...e.matchAll(t)];let r=t(e,n);return r?r.map(s=>{let o=[s.text];return o.index=s.index,o.input=e,o.data=s.data,s.replaceWith&&(s.text.includes(s.replaceWith)||console.warn('[tiptap warn]: "pasteRuleMatch.replaceWith" must be part of "pasteRuleMatch.text".'),o.push(s.replaceWith)),o}):[]};function ys(e){let{editor:t,state:n,from:r,to:s,rule:o,pasteEvent:i,dropEvent:c}=e,{commands:a,chain:l,can:p}=new Ue({editor:t,state:n}),d=[];return n.doc.nodesBetween(r,s,(u,h)=>{var f,g,v,y,C;if((g=(f=u.type)==null?void 0:f.spec)!=null&&g.code||!(u.isText||u.isTextblock||u.isInline))return;let I=(C=(y=(v=u.content)==null?void 0:v.size)!=null?y:u.nodeSize)!=null?C:0,w=Math.max(r,h),T=Math.min(s,h+I);if(w>=T)return;let E=u.isText?u.text||"":u.textBetween(w-h,T-h,void 0,"\uFFFC");vs(E,o.find,i).forEach(N=>{if(N.index===void 0)return;let P=w+N.index+1,L=P+N[0].length,R={from:n.tr.mapping.map(P),to:n.tr.mapping.map(L)},B=o.handler({state:n,range:R,match:N,commands:a,chain:l,can:p,pasteEvent:i,dropEvent:c});d.push(B)})}),d.every(u=>u!==null)}var xe=null,xs=e=>{var t;let n=new ClipboardEvent("paste",{clipboardData:new DataTransfer});return(t=n.clipboardData)==null||t.setData("text/html",e),n};function bs(e){let{editor:t,rules:n}=e,r=null,s=!1,o=!1,i=typeof ClipboardEvent<"u"?new ClipboardEvent("paste"):null,c;try{c=typeof DragEvent<"u"?new DragEvent("drop"):null}catch{c=null}let a=({state:p,from:d,to:m,rule:u,pasteEvt:h})=>{let f=p.tr,g=Se({state:p,transaction:f});if(!(!ys({editor:t,state:g,from:Math.max(d-1,0),to:m.b-1,rule:u,pasteEvent:h,dropEvent:c})||!f.steps.length)){try{c=typeof DragEvent<"u"?new DragEvent("drop"):null}catch{c=null}return i=typeof ClipboardEvent<"u"?new ClipboardEvent("paste"):null,f}};return n.map(p=>new hs({view(d){let m=h=>{var f;r=(f=d.dom.parentElement)!=null&&f.contains(h.target)?d.dom.parentElement:null,r&&(xe=t)},u=()=>{xe&&(xe=null)};return window.addEventListener("dragstart",m),window.addEventListener("dragend",u),{destroy(){window.removeEventListener("dragstart",m),window.removeEventListener("dragend",u)}}},props:{handleDOMEvents:{drop:(d,m)=>{if(o=r===d.dom.parentElement,c=m,!o){let u=xe;u?.isEditable&&setTimeout(()=>{let h=u.state.selection;h&&u.commands.deleteRange({from:h.from,to:h.to})},10)}return!1},paste:(d,m)=>{var u;let h=(u=m.clipboardData)==null?void 0:u.getData("text/html");return i=m,s=!!h?.includes("data-pm-slice"),!1}}},appendTransaction:(d,m,u)=>{let h=d[0],f=h.getMeta("uiEvent")==="paste"&&!s,g=h.getMeta("uiEvent")==="drop"&&!o,v=h.getMeta("applyPasteRules"),y=!!v;if(!f&&!g&&!y)return;if(y){let{text:w}=v;typeof w=="string"?w=w:w=Ut(fs.from(w),u.schema);let{from:T}=v,E=T+w.length,M=xs(w);return a({rule:p,state:u,from:T,to:{b:E},pasteEvt:M})}let C=m.doc.content.findDiffStart(u.doc.content),I=m.doc.content.findDiffEnd(u.doc.content);if(!(!gs(C)||!I||C===I.b))return a({rule:p,state:u,from:C,to:I,pasteEvt:i})}}))}var qe=class{constructor(e,t){this.splittableMarks=[],this.editor=t,this.baseExtensions=e,this.extensions=Ft(e),this.schema=wo(this.extensions,t),this.setupExtensions()}get commands(){return this.extensions.reduce((e,t)=>{let n={name:t.name,options:t.options,storage:this.editor.extensionStorage[t.name],editor:this.editor,type:ce(t.name,this.schema)},r=b(t,"addCommands",n);return r?{...e,...r()}:e},{})}get plugins(){let{editor:e}=this;return le([...this.extensions].reverse()).flatMap(r=>{let s={name:r.name,options:r.options,storage:this.editor.extensionStorage[r.name],editor:e,type:ce(r.name,this.schema)},o=[],i=b(r,"addKeyboardShortcuts",s),c={};if(r.type==="mark"&&b(r,"exitable",s)&&(c.ArrowRight=()=>Je.handleExit({editor:e,mark:r})),i){let m=Object.fromEntries(Object.entries(i()).map(([u,h])=>[u,()=>h({editor:e})]));c={...c,...m}}let a=cs(c);o.push(a);let l=b(r,"addInputRules",s);if(Nt(r,e.options.enableInputRules)&&l){let m=l();if(m&&m.length){let u=ms({editor:e,rules:m}),h=Array.isArray(u)?u:[u];o.push(...h)}}let p=b(r,"addPasteRules",s);if(Nt(r,e.options.enablePasteRules)&&p){let m=p();if(m&&m.length){let u=bs({editor:e,rules:m});o.push(...u)}}let d=b(r,"addProseMirrorPlugins",s);if(d){let m=d();o.push(...m)}return o})}get attributes(){return Rt(this.extensions)}get nodeViews(){let{editor:e}=this,{nodeExtensions:t}=te(this.extensions);return Object.fromEntries(t.filter(n=>!!b(n,"addNodeView")).map(n=>{let r=this.attributes.filter(a=>a.type===n.name),s={name:n.name,options:n.options,storage:this.editor.extensionStorage[n.name],editor:e,type:_(n.name,this.schema)},o=b(n,"addNodeView",s);if(!o)return[];let i=o();if(!i)return[];let c=(a,l,p,d,m)=>{let u=Me(a,r);return i({node:a,view:l,getPos:p,decorations:d,innerDecorations:m,editor:e,extension:n,HTMLAttributes:u})};return[n.name,c]}))}dispatchTransaction(e){let{editor:t}=this;return le([...this.extensions].reverse()).reduceRight((r,s)=>{let o={name:s.name,options:s.options,storage:this.editor.extensionStorage[s.name],editor:t,type:ce(s.name,this.schema)},i=b(s,"dispatchTransaction",o);return i?c=>{i.call(o,{transaction:c,next:r})}:r},e)}transformPastedHTML(e){let{editor:t}=this;return le([...this.extensions]).reduce((r,s)=>{let o={name:s.name,options:s.options,storage:this.editor.extensionStorage[s.name],editor:t,type:ce(s.name,this.schema)},i=b(s,"transformPastedHTML",o);return i?(c,a)=>{let l=r(c,a);return i.call(o,l)}:r},e||(r=>r))}get markViews(){let{editor:e}=this,{markExtensions:t}=te(this.extensions);return Object.fromEntries(t.filter(n=>!!b(n,"addMarkView")).map(n=>{let r=this.attributes.filter(c=>c.type===n.name),s={name:n.name,options:n.options,storage:this.editor.extensionStorage[n.name],editor:e,type:J(n.name,this.schema)},o=b(n,"addMarkView",s);if(!o)return[];let i=(c,a,l)=>{let p=Me(c,r);return o()({mark:c,view:a,inline:l,editor:e,extension:n,HTMLAttributes:p,updateAttributes:d=>{ri(c,e,d)}})};return[n.name,i]}))}destroy(){this.extensions.forEach(e=>{let t=e;for(;t.parent;){let n=t.parent;n.child===t&&(n.child=null),t=n}}),this.extensions=[],this.baseExtensions=[],this.schema=null,this.editor=null}setupExtensions(){let e=this.extensions;this.editor.extensionStorage=Object.fromEntries(e.map(t=>[t.name,t.storage])),e.forEach(t=>{var n;let r={name:t.name,options:t.options,storage:this.editor.extensionStorage[t.name],editor:this.editor,type:ce(t.name,this.schema)};t.type==="mark"&&((n=O(b(t,"keepOnSplit",r)))==null||n)&&this.splittableMarks.push(t.name);let s=b(t,"onBeforeCreate",r),o=b(t,"onCreate",r),i=b(t,"onUpdate",r),c=b(t,"onSelectionUpdate",r),a=b(t,"onTransaction",r),l=b(t,"onFocus",r),p=b(t,"onBlur",r),d=b(t,"onDestroy",r);s&&this.editor.on("beforeCreate",s),o&&this.editor.on("create",o),i&&this.editor.on("update",i),c&&this.editor.on("selectionUpdate",c),a&&this.editor.on("transaction",a),l&&this.editor.on("focus",l),p&&this.editor.on("blur",p),d&&this.editor.on("destroy",d)})}};qe.resolve=Ft;qe.sort=le;qe.flatten=We;var ws={};je(ws,{ClipboardTextSerializer:()=>Ss,Commands:()=>Ts,Delete:()=>Cs,Drop:()=>Ps,Editable:()=>Ds,FocusEvents:()=>Bs,Keymap:()=>_s,Paste:()=>Rs,Tabindex:()=>Ws,TextDirection:()=>qs,focusEventsPluginKey:()=>Xt});var K=class qt extends Ke{constructor(){super(...arguments),this.type="extension"}static create(t={}){let n=typeof t=="function"?t():t;return new qt(n)}configure(t){return super.configure(t)}extend(t){let n=typeof t=="function"?t():t;return super.extend(n)}},Ss=K.create({name:"clipboardTextSerializer",addOptions(){return{blockSeparator:void 0}},addProseMirrorPlugins(){return[new ks({key:new Ms("clipboardTextSerializer"),props:{clipboardTextSerializer:()=>{let{editor:e}=this,{state:t,schema:n}=e,{doc:r,selection:s}=t,{ranges:o}=s,i=Math.min(...o.map(p=>p.$from.pos)),c=Math.max(...o.map(p=>p.$to.pos)),a=So(n);return Mo(r,{from:i,to:c},{...this.options.blockSeparator!==void 0?{blockSeparator:this.options.blockSeparator}:{},textSerializers:a})}}})]}}),Ts=K.create({name:"commands",addCommands(){return{...zt}}}),Cs=K.create({name:"delete",onUpdate({transaction:e,appendedTransactions:t}){var n,r,s;let o=()=>{var i,c,a,l;if((l=(a=(c=(i=this.editor.options.coreExtensionOptions)==null?void 0:i.delete)==null?void 0:c.filterTransaction)==null?void 0:a.call(c,e))!=null?l:e.getMeta("y-sync$"))return;let p=mo(e.before,[e,...t]);Co(p).forEach(u=>{p.mapping.mapResult(u.oldRange.from).deletedAfter&&p.mapping.mapResult(u.oldRange.to).deletedBefore&&p.before.nodesBetween(u.oldRange.from,u.oldRange.to,(h,f)=>{let g=f+h.nodeSize-2,v=u.oldRange.from<=f&&g<=u.oldRange.to;this.editor.emit("delete",{type:"node",node:h,from:f,to:g,newFrom:p.mapping.map(f),newTo:p.mapping.map(g),deletedRange:u.oldRange,newRange:u.newRange,partial:!v,editor:this.editor,transaction:e,combinedTransform:p})})});let m=p.mapping;p.steps.forEach((u,h)=>{var f,g;if(u instanceof Es){let v=m.slice(h).map(u.from,-1),y=m.slice(h).map(u.to),C=m.invert().map(v,-1),I=m.invert().map(y),w=v>0?(f=p.doc.nodeAt(v-1))==null?void 0:f.marks.some(E=>E.eq(u.mark)):!1,T=(g=p.doc.nodeAt(y))==null?void 0:g.marks.some(E=>E.eq(u.mark));this.editor.emit("delete",{type:"mark",mark:u.mark,from:u.from,to:u.to,deletedRange:{from:C,to:I},newRange:{from:v,to:y},partial:!!(T||w),editor:this.editor,transaction:e,combinedTransform:p})}})};(s=(r=(n=this.editor.options.coreExtensionOptions)==null?void 0:n.delete)==null?void 0:r.async)==null||s?setTimeout(o,0):o()}}),Ps=K.create({name:"drop",addProseMirrorPlugins(){return[new Is({key:new As("tiptapDrop"),props:{handleDrop:(e,t,n,r)=>{this.editor.emit("drop",{editor:this.editor,event:t,slice:n,moved:r})}}})]}}),Ds=K.create({name:"editable",addProseMirrorPlugins(){return[new Ns({key:new Ls("editable"),props:{editable:()=>this.editor.options.editable}})]}}),Xt=new Os("focusEvents"),Bs=K.create({name:"focusEvents",addProseMirrorPlugins(){let{editor:e}=this;return[new zs({key:Xt,props:{handleDOMEvents:{focus:(t,n)=>{e.isFocused=!0;let r=e.state.tr.setMeta("focus",{event:n}).setMeta("addToHistory",!1);return t.dispatch(r),!1},blur:(t,n)=>{e.isFocused=!1;let r=e.state.tr.setMeta("blur",{event:n}).setMeta("addToHistory",!1);return t.dispatch(r),!1}}}})]}}),_s=K.create({name:"keymap",addKeyboardShortcuts(){let e=()=>this.editor.commands.first(({commands:i})=>[()=>i.undoInputRule(),()=>i.command(({tr:c})=>{let{selection:a,doc:l}=c,{empty:p,$anchor:d}=a,{pos:m,parent:u}=d,h=d.parent.isTextblock&&m>0?c.doc.resolve(m-1):d,f=h.parent.type.spec.isolating,g=d.pos-d.parentOffset,v=f&&h.parent.childCount===1?g===d.pos:_e.atStart(l).from===m;return!p||!u.type.isTextblock||u.textContent.length||!v||v&&d.parent.type.name==="paragraph"?!1:i.clearNodes()}),()=>i.deleteSelection(),()=>i.joinBackward(),()=>i.selectNodeBackward()]),t=()=>this.editor.commands.first(({commands:i})=>[()=>i.deleteSelection(),()=>i.deleteCurrentNode(),()=>i.joinForward(),()=>i.selectNodeForward()]),r={Enter:()=>this.editor.commands.first(({commands:i})=>[()=>i.newlineInCode(),()=>i.createParagraphNear(),()=>i.liftEmptyBlock(),()=>i.splitBlock()]),"Mod-Enter":()=>this.editor.commands.exitCode(),Backspace:e,"Mod-Backspace":e,"Shift-Backspace":e,Delete:t,"Mod-Delete":t,"Mod-a":()=>this.editor.commands.selectAll()},s={...r},o={...r,"Ctrl-h":e,"Alt-Backspace":e,"Ctrl-d":t,"Ctrl-Alt-Backspace":t,"Alt-Delete":t,"Alt-d":t,"Ctrl-a":()=>this.editor.commands.selectTextblockStart(),"Ctrl-e":()=>this.editor.commands.selectTextblockEnd()};return ke()||_t()?o:s},addProseMirrorPlugins(){return[new $s({key:new Hs("clearDocument"),appendTransaction:(e,t,n)=>{if(e.some(f=>f.getMeta("composition")))return;let r=e.some(f=>f.docChanged)&&!t.doc.eq(n.doc),s=e.some(f=>f.getMeta("preventClearDocument"));if(!r||s)return;let{empty:o,from:i,to:c}=t.selection,a=_e.atStart(t.doc).from,l=_e.atEnd(t.doc).to;if(o||!(i===a&&c===l)||!Vt(n.doc))return;let m=n.tr,u=Se({state:n,transaction:m}),{commands:h}=new Ue({editor:this.editor,state:u});if(h.clearNodes(),!!m.steps.length)return m}})]}}),Rs=K.create({name:"paste",addProseMirrorPlugins(){return[new js({key:new Us("tiptapPaste"),props:{handlePaste:(e,t,n)=>{this.editor.emit("paste",{editor:this.editor,event:t,slice:n})}}})]}}),Ws=K.create({name:"tabindex",addOptions(){return{value:void 0}},addProseMirrorPlugins(){return[new Fs({key:new Vs("tabindex"),props:{attributes:()=>{var e;return!this.editor.isEditable&&this.options.value===void 0?{}:{tabindex:(e=this.options.value)!=null?e:"0"}}}})]}}),qs=K.create({name:"textDirection",addOptions(){return{direction:void 0}},addGlobalAttributes(){if(!this.options.direction)return[];let{nodeExtensions:e}=te(this.extensions);return[{types:e.filter(t=>t.name!=="text").map(t=>t.name),attributes:{dir:{default:this.options.direction,parseHTML:t=>{let n=t.getAttribute("dir");return n&&(n==="ltr"||n==="rtl"||n==="auto")?n:this.options.direction},renderHTML:t=>t.dir?{dir:t.dir}:{}}}}]},addProseMirrorPlugins(){return[new Ks({key:new Js("textDirection"),props:{attributes:()=>{let e=this.options.direction;return e?{dir:e}:{}}}})]}});var Xs={};je(Xs,{createAtomBlockMarkdownSpec:()=>Ys,createBlockMarkdownSpec:()=>Gs,createInlineMarkdownSpec:()=>ei,parseAttributes:()=>Xe,parseIndentedBlocks:()=>ti,renderNestedMarkdownContent:()=>ni,serializeAttributes:()=>Ye});function Xe(e){if(!e?.trim())return{};let t={},n=[],r=e.replace(/["']([^"']*)["']/g,l=>(n.push(l),`__QUOTED_${n.length-1}__`)),s=r.match(/(?:^|\s)\.([a-zA-Z][\w-]*)/g);if(s){let l=s.map(p=>p.trim().slice(1));t.class=l.join(" ")}let o=r.match(/(?:^|\s)#([a-zA-Z][\w-]*)/);o&&(t.id=o[1]);let i=/([a-zA-Z][\w-]*)\s*=\s*(__QUOTED_\d+__)/g;Array.from(r.matchAll(i)).forEach(([,l,p])=>{var d;let m=parseInt(((d=p.match(/__QUOTED_(\d+)__/))==null?void 0:d[1])||"0",10),u=n[m];u&&(t[l]=u.slice(1,-1))});let a=r.replace(/(?:^|\s)\.([a-zA-Z][\w-]*)/g,"").replace(/(?:^|\s)#([a-zA-Z][\w-]*)/g,"").replace(/([a-zA-Z][\w-]*)\s*=\s*__QUOTED_\d+__/g,"").trim();return a&&a.split(/\s+/).filter(Boolean).forEach(p=>{p.match(/^[a-zA-Z][\w-]*$/)&&(t[p]=!0)}),t}function Ye(e){if(!e||Object.keys(e).length===0)return"";let t=[];return e.class&&String(e.class).split(/\s+/).filter(Boolean).forEach(r=>t.push(`.${r}`)),e.id&&t.push(`#${e.id}`),Object.entries(e).forEach(([n,r])=>{n==="class"||n==="id"||(r===!0?t.push(n):r!==!1&&r!=null&&t.push(`${n}="${String(r)}"`))}),t.join(" ")}function Ys(e){let{nodeName:t,name:n,parseAttributes:r=Xe,serializeAttributes:s=Ye,defaultAttributes:o={},requiredAttributes:i=[],allowedAttributes:c}=e,a=n||t,l=p=>{if(!c)return p;let d={};return c.forEach(m=>{m in p&&(d[m]=p[m])}),d};return{parseMarkdown:(p,d)=>{let m={...o,...p.attributes};return d.createNode(t,m,[])},markdownTokenizer:{name:t,level:"block",start(p){var d;let m=new RegExp(`^:::${a}(?:\\s|$)`,"m"),u=(d=p.match(m))==null?void 0:d.index;return u!==void 0?u:-1},tokenize(p,d,m){let u=new RegExp(`^:::${a}(?:\\s+\\{([^}]*)\\})?\\s*:::(?:\\n|$)`),h=p.match(u);if(!h)return;let f=h[1]||"",g=r(f);if(!i.find(y=>!(y in g)))return{type:t,raw:h[0],attributes:g}}},renderMarkdown:p=>{let d=l(p.attrs||{}),m=s(d),u=m?` {${m}}`:"";return`:::${a}${u} :::`}}}function Gs(e){let{nodeName:t,name:n,getContent:r,parseAttributes:s=Xe,serializeAttributes:o=Ye,defaultAttributes:i={},content:c="block",allowedAttributes:a}=e,l=n||t,p=d=>{if(!a)return d;let m={};return a.forEach(u=>{u in d&&(m[u]=d[u])}),m};return{parseMarkdown:(d,m)=>{let u;if(r){let f=r(d);u=typeof f=="string"?[{type:"text",text:f}]:f}else c==="block"?u=m.parseChildren(d.tokens||[]):u=m.parseInline(d.tokens||[]);let h={...i,...d.attributes};return m.createNode(t,h,u)},markdownTokenizer:{name:t,level:"block",start(d){var m;let u=new RegExp(`^:::${l}`,"m"),h=(m=d.match(u))==null?void 0:m.index;return h!==void 0?h:-1},tokenize(d,m,u){var h;let f=new RegExp(`^:::${l}(?:\\s+\\{([^}]*)\\})?\\s*\\n`),g=d.match(f);if(!g)return;let[v,y=""]=g,C=s(y),I=1,w=v.length,T="",E=/^:::([\w-]*)(\s.*)?/gm,M=d.slice(w);for(E.lastIndex=0;;){let N=E.exec(M);if(N===null)break;let P=N.index,L=N[1];if(!((h=N[2])!=null&&h.endsWith(":::"))){if(L)I+=1;else if(I-=1,I===0){let R=M.slice(0,P);T=R.trim();let B=d.slice(0,w+P+N[0].length),H=[];if(T)if(c==="block")for(H=u.blockTokens(R),H.forEach($=>{$.text&&(!$.tokens||$.tokens.length===0)&&($.tokens=u.inlineTokens($.text))});H.length>0;){let $=H[H.length-1];if($.type==="paragraph"&&(!$.text||$.text.trim()===""))H.pop();else break}else H=u.inlineTokens(T);return{type:t,raw:B,attributes:C,content:T,tokens:H}}}}}},renderMarkdown:(d,m)=>{let u=p(d.attrs||{}),h=o(u),f=h?` {${h}}`:"",g=m.renderChildren(d.content||[],`
|
|
3
|
+
`,textSerializers:i={}}=n||{},l="";return e.nodesBetween(r,s,(a,c,m,d)=>{var p;a.isBlock&&c>r&&(l+=o);let u=i?.[a.type.name];if(u)return m&&(l+=u({node:a,pos:c,parent:m,index:d,range:t})),!1;a.isText&&(l+=(p=a?.text)==null?void 0:p.slice(Math.max(r,c)-c,s-c))}),l}function Io(e){return Object.fromEntries(Object.entries(e.nodes).filter(([,t])=>t.spec.toText).map(([t,n])=>[t,n.spec.toText]))}function Ao(e,t=JSON.stringify){let n={};return e.filter(r=>{let s=t(r);return Object.prototype.hasOwnProperty.call(n,s)?!1:n[s]=!0})}function Po(e){let t=Ao(e);return t.length===1?t:t.filter((n,r)=>!t.filter((o,i)=>i!==r).some(o=>n.oldRange.from>=o.oldRange.from&&n.oldRange.to<=o.oldRange.to&&n.newRange.from>=o.newRange.from&&n.newRange.to<=o.newRange.to))}function No(e){let{mapping:t,steps:n}=e,r=[];return t.maps.forEach((s,o)=>{let i=[];if(s.ranges.length)s.forEach((l,a)=>{i.push({from:l,to:a})});else{let{from:l,to:a}=n[o];if(l===void 0||a===void 0)return;i.push({from:l,to:a})}i.forEach(({from:l,to:a})=>{let c=t.slice(o).map(l,-1),m=t.slice(o).map(a),d=t.invert().map(c,-1),p=t.invert().map(m);r.push({oldRange:{from:d,to:p},newRange:{from:c,to:m}})})}),Po(r)}function ce(e,t){return t.nodes[e]||t.marks[e]||null}function ke(e,t,n){return Object.fromEntries(Object.entries(n).filter(([r])=>{let s=e.find(o=>o.type===t&&o.name===r);return s?s.attribute.keepOnSplit:!1}))}var Lo=(e,t=500)=>{let n="",r=e.parentOffset;return e.parent.nodesBetween(Math.max(0,r-t),r,(s,o,i,l)=>{var a,c;let m=((c=(a=s.type.spec).toText)==null?void 0:c.call(a,{node:s,pos:o,parent:i,index:l}))||s.textContent||"%leaf%";n+=s.isAtom&&!s.isText?m:m.slice(0,Math.max(0,r-o))}),n};function zo(e,t,n={}){let{empty:r,ranges:s}=e.selection,o=t?q(t,e.schema):null;if(r)return!!(e.storedMarks||e.selection.$from.marks()).filter(d=>o?o.name===d.type.name:!0).find(d=>Me(d.attrs,n,{strict:!1}));let i=0,l=[];if(s.forEach(({$from:d,$to:p})=>{let u=d.pos,h=p.pos;e.doc.nodesBetween(u,h,(f,g)=>{if(o&&f.inlineContent&&!f.type.allowsMarkType(o))return!1;if(!f.isText&&!f.marks.length)return;let v=Math.max(u,g),y=Math.min(h,g+f.nodeSize),k=y-v;i+=k,l.push(...f.marks.map(E=>({mark:E,from:v,to:y})))})}),i===0)return!1;let a=l.filter(d=>o?o.name===d.mark.type.name:!0).filter(d=>Me(d.mark.attrs,n,{strict:!1})).reduce((d,p)=>d+p.to-p.from,0),c=l.filter(d=>o?d.mark.type!==o&&d.mark.type.excludes(o):!0).reduce((d,p)=>d+p.to-p.from,0);return(a>0?a+c:a)>=i}function Lt(e,t){return Array.isArray(t)?t.some(n=>(typeof n=="string"?n:n.name)===e.name):t}function Oe(e,t){let{nodeExtensions:n}=te(t),r=n.find(i=>i.name===e);if(!r)return!1;let s={name:r.name,options:r.options,storage:r.storage},o=O(x(r,"group",s));return typeof o!="string"?!1:o.split(" ").includes("list")}function Wt(e,{checkChildren:t=!0,ignoreWhitespace:n=!1}={}){var r;if(n){if(e.type.name==="hardBreak")return!0;if(e.isText)return!/\S/.test((r=e.text)!=null?r:"")}if(e.isText)return!e.text;if(e.isAtom||e.isLeaf)return!1;if(e.content.childCount===0)return!0;if(t){let s=!0;return e.content.forEach(o=>{s!==!1&&(Wt(o,{ignoreWhitespace:n,checkChildren:t})||(s=!1))}),s}return!1}function Do(e,t,n){var r;let{selection:s}=t,o=null;if(Ht(s)&&(o=s.$cursor),o){let l=(r=e.storedMarks)!=null?r:o.marks();return o.parent.type.allowsMarkType(n)&&(!!n.isInSet(l)||!l.some(c=>c.type.excludes(n)))}let{ranges:i}=s;return i.some(({$from:l,$to:a})=>{let c=l.depth===0?e.doc.inlineContent&&e.doc.type.allowsMarkType(n):!1;return e.doc.nodesBetween(l.pos,a.pos,(m,d,p)=>{if(c)return!1;if(m.isInline){let u=!p||p.type.allowsMarkType(n),h=!!n.isInSet(m.marks)||!m.marks.some(f=>f.type.excludes(n));c=u&&h}return!c}),c})}var Oo=(e,t={})=>({tr:n,state:r,dispatch:s})=>{let{selection:o}=n,{empty:i,ranges:l}=o,a=q(e,r.schema);if(s)if(i){let c=fo(r,a);n.addStoredMark(a.create({...c,...t}))}else l.forEach(c=>{let m=c.$from.pos,d=c.$to.pos;r.doc.nodesBetween(m,d,(p,u)=>{let h=Math.max(u,m),f=Math.min(u+p.nodeSize,d);p.marks.find(v=>v.type===a)?p.marks.forEach(v=>{a===v.type&&n.addMark(h,f,a.create({...v.attrs,...t}))}):n.addMark(h,f,a.create(t))})});return Do(r,n,a)},Bo=(e,t)=>({tr:n})=>(n.setMeta(e,t),!0),$o=(e,t={})=>({state:n,dispatch:r,chain:s})=>{let o=_(e,n.schema),i;return n.selection.$anchor.sameParent(n.selection.$head)&&(i=n.selection.$anchor.parent.attrs),o.isTextblock?s().command(({commands:l})=>zt(o,{...i,...t})(n)?!0:l.clearNodes()).command(({state:l})=>zt(o,{...i,...t})(l,r)).run():(console.warn('[tiptap warn]: Currently "setNode()" only supports text block nodes.'),!1)},_o=e=>({tr:t,dispatch:n})=>{if(n){let{doc:r}=t,s=Q(e,0,r.content.size),o=Ho.create(r,s);t.setSelection(o)}return!0},jo=(e,t)=>({tr:n,state:r,dispatch:s})=>{let{selection:o}=r,i,l;return typeof t=="number"?(i=t,l=t):t&&"from"in t&&"to"in t?(i=t.from,l=t.to):(i=o.from,l=o.to),s&&n.doc.nodesBetween(i,l,(a,c)=>{a.isText||n.setNodeMarkup(c,void 0,{...a.attrs,dir:e})}),!0},Uo=e=>({tr:t,dispatch:n})=>{if(n){let{doc:r}=t,{from:s,to:o}=typeof e=="number"?{from:e,to:e}:e,i=Be.atStart(r).from,l=Be.atEnd(r).to,a=Q(s,i,l),c=Q(o,i,l),m=Be.create(r,a,c);t.setSelection(m)}return!0},Fo=e=>({state:t,dispatch:n})=>{let r=_(e,t.schema);return Ro(r)(t,n)};function Dt(e,t){let n=e.storedMarks||e.selection.$to.parentOffset&&e.selection.$from.marks();if(n){let r=n.filter(s=>t?.includes(s.type.name));e.tr.ensureMarks(r)}}var Ko=({keepMarks:e=!0}={})=>({tr:t,state:n,dispatch:r,editor:s})=>{let{selection:o,doc:i}=t,{$from:l,$to:a}=o,c=s.extensionManager.attributes,m=ke(c,l.node().type.name,l.node().attrs);if(o instanceof Vo&&o.node.isBlock)return!l.parentOffset||!$e(i,l.pos)?!1:(r&&(e&&Dt(n,s.extensionManager.splittableMarks),t.split(l.pos).scrollIntoView()),!0);if(!l.parent.isBlock)return!1;let d=a.parentOffset===a.parent.content.size,p=l.depth===0?void 0:vo(l.node(-1).contentMatchAt(l.indexAfter(-1))),u=d&&p?[{type:p,attrs:m}]:void 0,h=$e(t.doc,t.mapping.map(l.pos),1,u);if(!u&&!h&&$e(t.doc,t.mapping.map(l.pos),1,p?[{type:p}]:void 0)&&(h=!0,u=p?[{type:p,attrs:m}]:void 0),r){if(h&&(o instanceof Wo&&t.deleteSelection(),t.split(t.mapping.map(l.pos),1,u),p&&!d&&!l.parentOffset&&l.parent.type!==p)){let f=t.mapping.map(l.before()),g=t.doc.resolve(f);l.node(-1).canReplaceWith(g.index(),g.index()+1,p)&&t.setNodeMarkup(t.mapping.map(l.before()),p)}e&&Dt(n,s.extensionManager.splittableMarks),t.scrollIntoView()}return h},Yo=(e,t={})=>({tr:n,state:r,dispatch:s,editor:o})=>{var i;let l=_(e,r.schema),{$from:a,$to:c}=r.selection,m=r.selection.node;if(m&&m.isBlock||a.depth<2||!a.sameParent(c))return!1;let d=a.node(-1);if(d.type!==l)return!1;let p=o.extensionManager.attributes;if(a.parent.content.size===0&&a.node(-1).childCount===a.indexAfter(-1)){if(a.depth===2||a.node(-3).type!==l||a.index(-2)!==a.node(-2).childCount-1)return!1;if(s){let v=He.empty,y=a.index(-1)?1:a.index(-2)?2:3;for(let C=a.depth-y;C>=a.depth-3;C-=1)v=He.from(a.node(C).copy(v));let k=a.indexAfter(-1)<a.node(-2).childCount?1:a.indexAfter(-2)<a.node(-3).childCount?2:3,E={...ke(p,a.node().type.name,a.node().attrs),...t},M=((i=l.contentMatch.defaultType)==null?void 0:i.createAndFill(E))||void 0;v=v.append(He.from(l.createAndFill(null,M)||void 0));let S=a.before(a.depth-(y-1));n.replace(S,a.after(-k),new Jo(v,4-y,0));let I=-1;n.doc.nodesBetween(S,n.doc.content.size,(C,z)=>{if(I>-1)return!1;C.isTextblock&&C.content.size===0&&(I=z+1)}),I>-1&&n.setSelection(qo.near(n.doc.resolve(I))),n.scrollIntoView()}return!0}let u=c.pos===a.end()?d.contentMatchAt(0).defaultType:null,h={...ke(p,d.type.name,d.attrs),...t},f={...ke(p,a.node().type.name,a.node().attrs),...t};n.delete(a.pos,c.pos);let g=u?[{type:l,attrs:h},{type:u,attrs:f}]:[{type:l,attrs:h}];if(!Xo(n.doc,a.pos,2))return!1;if(s){let{selection:v,storedMarks:y}=r,{splittableMarks:k}=o.extensionManager,E=y||v.$to.parentOffset&&v.$from.marks();if(n.split(a.pos,2,g).scrollIntoView(),!E||!s)return!0;let M=E.filter(S=>k.includes(S.type.name));n.ensureMarks(M)}return!0},_e=(e,t)=>{let n=Ke(i=>i.type===t)(e.selection);if(!n)return!0;let r=e.doc.resolve(Math.max(0,n.pos-1)).before(n.depth);if(r===void 0)return!0;let s=e.doc.nodeAt(r);return n.node.type===s?.type&&Kt(e.doc,n.pos)&&e.join(n.pos),!0},je=(e,t)=>{let n=Ke(i=>i.type===t)(e.selection);if(!n)return!0;let r=e.doc.resolve(n.start).after(n.depth);if(r===void 0)return!0;let s=e.doc.nodeAt(r);return n.node.type===s?.type&&Kt(e.doc,r)&&e.join(r),!0};function Qo(e){let t=e.doc,n=t.firstChild;if(!n)return null;let r=t.resolve(1),s=t.resolve(n.nodeSize-1);return Go.between(r,s)}var Zo=(e,t,n,r={})=>({editor:s,tr:o,state:i,dispatch:l,chain:a,commands:c,can:m})=>{let{extensions:d,splittableMarks:p}=s.extensionManager,u=_(e,i.schema),h=_(t,i.schema),{selection:f,storedMarks:g}=i,{$from:v,$to:y}=f,k=v.blockRange(y),E=g||f.$to.parentOffset&&f.$from.marks();if(!k)return!1;let M=Ke(B=>Oe(B.type.name,d))(f),S=f.from===0&&f.to===i.doc.content.size,I=i.doc.content.content,C=I.length===1?I[0]:null,z=S&&C&&Oe(C.type.name,d)?{node:C,pos:0,depth:0}:null,L=M??z,A=!!M&&k.depth>=1&&k.depth-M.depth<=1,F=!!z;if((A||F)&&L){if(L.node.type===u)return S&&F?a().command(({tr:B,dispatch:H})=>{let $=Qo(B);return $?(B.setSelection($),H&&H(B),!0):!1}).liftListItem(h).run():c.liftListItem(h);if(Oe(L.node.type.name,d)&&u.validContent(L.node.content))return a().command(()=>(o.setNodeMarkup(L.pos,u),!0)).command(()=>_e(o,u)).command(()=>je(o,u)).run()}return!n||!E||!l?a().command(()=>m().wrapInList(u,r)?!0:c.clearNodes()).wrapInList(u,r).command(()=>_e(o,u)).command(()=>je(o,u)).run():a().command(()=>{let B=m().wrapInList(u,r),H=E.filter($=>p.includes($.type.name));return o.ensureMarks(H),B?!0:c.clearNodes()}).wrapInList(u,r).command(()=>_e(o,u)).command(()=>je(o,u)).run()},es=(e,t={},n={})=>({state:r,commands:s})=>{let{extendEmptyMarkRange:o=!1}=n,i=q(e,r.schema);return zo(r,i,t)?s.unsetMark(i,{extendEmptyMarkRange:o}):s.setMark(i,t)},ts=(e,t,n={})=>({state:r,commands:s})=>{let o=_(e,r.schema),i=_(t,r.schema),l=We(r,o,n),a;return r.selection.$anchor.sameParent(r.selection.$head)&&(a=r.selection.$anchor.parent.attrs),l?s.setNode(i,a):s.setNode(o,{...a,...n})},ns=(e,t={})=>({state:n,commands:r})=>{let s=_(e,n.schema);return We(n,s,t)?r.lift(s):r.wrapIn(s,t)},rs=()=>({state:e,dispatch:t})=>{let n=e.plugins;for(let r=0;r<n.length;r+=1){let s=n[r],o;if(s.spec.isInputRules&&(o=s.getState(e))){if(t){let i=e.tr,l=o.transform;for(let a=l.steps.length-1;a>=0;a-=1)i.step(l.steps[a].invert(l.docs[a]));if(o.text){let a=i.doc.resolve(o.from).marks();i.replaceWith(o.from,o.to,e.schema.text(o.text,a))}else i.delete(o.from,o.to)}return!0}}return!1},os=()=>({tr:e,dispatch:t})=>{let{selection:n}=e,{empty:r,ranges:s}=n;return r||t&&s.forEach(o=>{e.removeMark(o.$from.pos,o.$to.pos)}),!0},ss=(e,t={})=>({tr:n,state:r,dispatch:s})=>{var o;let{extendEmptyMarkRange:i=!1}=t,{selection:l}=n,a=q(e,r.schema),{$from:c,empty:m,ranges:d}=l;if(!s)return!0;if(m&&i){let{from:p,to:u}=l,h=(o=c.marks().find(g=>g.type===a))==null?void 0:o.attrs,f=$t(c,a,h);f&&(p=f.from,u=f.to),n.removeMark(p,u,a)}else d.forEach(p=>{n.removeMark(p.$from.pos,p.$to.pos,a)});return n.removeStoredMark(a),!0},is=e=>({tr:t,state:n,dispatch:r})=>{let{selection:s}=n,o,i;return typeof e=="number"?(o=e,i=e):e&&"from"in e&&"to"in e?(o=e.from,i=e.to):(o=s.from,i=s.to),r&&t.doc.nodesBetween(o,i,(l,a)=>{if(l.isText)return;let c={...l.attrs};delete c.dir,t.setNodeMarkup(a,void 0,c)}),!0},as=(e,t={})=>({tr:n,state:r,dispatch:s})=>{let o=null,i=null,l=Ut(typeof e=="string"?e:e.name,r.schema);if(!l)return!1;l==="node"&&(o=_(e,r.schema)),l==="mark"&&(i=q(e,r.schema));let a=!1;return n.selection.ranges.forEach(c=>{let m=c.$from.pos,d=c.$to.pos,p,u,h,f;n.selection.empty?r.doc.nodesBetween(m,d,(g,v)=>{o&&o===g.type&&(a=!0,h=Math.max(v,m),f=Math.min(v+g.nodeSize,d),p=v,u=g)}):r.doc.nodesBetween(m,d,(g,v)=>{v<m&&o&&o===g.type&&(a=!0,h=Math.max(v,m),f=Math.min(v+g.nodeSize,d),p=v,u=g),v>=m&&v<=d&&(o&&o===g.type&&(a=!0,s&&n.setNodeMarkup(v,void 0,{...g.attrs,...t})),i&&g.marks.length&&g.marks.forEach(y=>{if(i===y.type&&(a=!0,s)){let k=Math.max(v,m),E=Math.min(v+g.nodeSize,d);n.addMark(k,E,i.create({...y.attrs,...t}))}}))}),u&&(p!==void 0&&s&&n.setNodeMarkup(p,void 0,{...u.attrs,...t}),i&&u.marks.length&&u.marks.forEach(g=>{i===g.type&&s&&n.addMark(h,f,i.create({...g.attrs,...t}))}))}),a},ls=(e,t={})=>({state:n,dispatch:r})=>{let s=_(e,n.schema);return cs(s,t)(n,r)},us=(e,t={})=>({state:n,dispatch:r})=>{let s=_(e,n.schema);return ds(s,t)(n,r)};var hs=(e,t)=>{if(Ve(t))return t.exec(e);let n=t(e);if(!n)return null;let r=[n.text];return r.index=n.index,r.input=e,r.data=n.data,n.replaceWith&&(n.text.includes(n.replaceWith)||console.warn('[tiptap warn]: "inputRuleMatch.replaceWith" must be part of "inputRuleMatch.text".'),r.push(n.replaceWith)),r};function xe(e){var t;let{editor:n,from:r,to:s,text:o,rules:i,plugin:l}=e,{view:a}=n;if(a.composing)return!1;let c=a.state.doc.resolve(r);if(c.parent.type.spec.code||(t=c.nodeBefore||c.nodeAfter)!=null&&t.marks.find(p=>p.type.spec.code))return!1;let m=!1,d=Lo(c)+o;return i.forEach(p=>{if(m)return;let u=hs(d,p.find);if(!u)return;let h=a.state.tr,f=Ee({state:a.state,transaction:h}),g={from:r-(u[0].length-o.length),to:s},{commands:v,chain:y,can:k}=new Fe({editor:n,state:f});p.handler({state:f,range:g,match:u,commands:v,chain:y,can:k})===null||!h.steps.length||(p.undoable&&h.setMeta(l,{transform:h,from:r,to:s,text:o}),a.dispatch(h),m=!0)}),m}function gs(e){let{editor:t,rules:n}=e,r=new fs({state:{init(){return null},apply(s,o,i){let l=s.getMeta(r);if(l)return l;let a=s.getMeta("applyInputRules");return a&&setTimeout(()=>{let{text:m}=a;typeof m=="string"?m=m:m=Rt(ps.from(m),i.schema);let{from:d}=a,p=d+m.length;xe({editor:t,from:d,to:p,text:m,rules:n,plugin:r})}),s.selectionSet||s.docChanged?null:o}},props:{handleTextInput(s,o,i,l){return xe({editor:t,from:o,to:i,text:l,rules:n,plugin:r})},handleDOMEvents:{compositionend:s=>(setTimeout(()=>{let{$cursor:o}=s.state.selection;o&&xe({editor:t,from:o.pos,to:o.pos,text:"",rules:n,plugin:r})}),!1)},handleKeyDown(s,o){if(o.key!=="Enter")return!1;let{$cursor:i}=s.state.selection;return i?xe({editor:t,from:i.pos,to:i.pos,text:`
|
|
4
|
+
`,rules:n,plugin:r}):!1}},isInputRules:!0});return r}function vs(e){return Object.prototype.toString.call(e).slice(8,-1)}function be(e){return vs(e)!=="Object"?!1:e.constructor===Object&&Object.getPrototypeOf(e)===Object.prototype}function Jt(e,t){let n={...e};return be(e)&&be(t)&&Object.keys(t).forEach(r=>{be(t[r])&&be(e[r])?n[r]=Jt(e[r],t[r]):n[r]=t[r]}),n}var qe=class{constructor(e={}){this.type="extendable",this.parent=null,this.child=null,this.name="",this.config={name:this.name},this.config={...this.config,...e},this.name=this.config.name}get options(){return{...O(x(this,"addOptions",{name:this.name}))||{}}}get storage(){return{...O(x(this,"addStorage",{name:this.name,options:this.options}))||{}}}configure(e={}){let t=this.extend({...this.config,addOptions:()=>Jt(this.options,e)});return t.name=this.name,t.parent=this.parent,this.child=null,t}extend(e={}){let t=new this.constructor({...this.config,...e});return t.parent=this,this.child=t,t.name="name"in e?e.name:t.parent.name,t}},Xe=class qt extends qe{constructor(){super(...arguments),this.type="mark"}static create(t={}){let n=typeof t=="function"?t():t;return new qt(n)}static handleExit({editor:t,mark:n}){let{tr:r}=t.state,s=t.state.selection.$from;if(s.pos===s.end()){let i=s.marks();if(!!!i.find(c=>c?.type.name===n.name))return!1;let a=i.find(c=>c?.type.name===n.name);return a&&r.removeStoredMark(a),r.insertText(" ",s.pos),t.view.dispatch(r),!0}return!1}configure(t){return super.configure(t)}extend(t){let n=typeof t=="function"?t():t;return super.extend(n)}};function bs(e){return typeof e=="number"}var ws=(e,t,n)=>{if(Ve(t))return[...e.matchAll(t)];let r=t(e,n);return r?r.map(s=>{let o=[s.text];return o.index=s.index,o.input=e,o.data=s.data,s.replaceWith&&(s.text.includes(s.replaceWith)||console.warn('[tiptap warn]: "pasteRuleMatch.replaceWith" must be part of "pasteRuleMatch.text".'),o.push(s.replaceWith)),o}):[]};function ks(e){let{editor:t,state:n,from:r,to:s,rule:o,pasteEvent:i,dropEvent:l}=e,{commands:a,chain:c,can:m}=new Fe({editor:t,state:n}),d=[];return n.doc.nodesBetween(r,s,(u,h)=>{var f,g,v,y,k;if((g=(f=u.type)==null?void 0:f.spec)!=null&&g.code||!(u.isText||u.isTextblock||u.isInline))return;let E=(k=(y=(v=u.content)==null?void 0:v.size)!=null?y:u.nodeSize)!=null?k:0,M=Math.max(r,h),S=Math.min(s,h+E);if(M>=S)return;let I=u.isText?u.text||"":u.textBetween(M-h,S-h,void 0,"\uFFFC");ws(I,o.find,i).forEach(z=>{if(z.index===void 0)return;let L=M+z.index+1,A=L+z[0].length,F={from:n.tr.mapping.map(L),to:n.tr.mapping.map(A)},B=o.handler({state:n,range:F,match:z,commands:a,chain:c,can:m,pasteEvent:i,dropEvent:l});d.push(B)})}),d.every(u=>u!==null)}var we=null,Ms=e=>{var t;let n=new ClipboardEvent("paste",{clipboardData:new DataTransfer});return(t=n.clipboardData)==null||t.setData("text/html",e),n};function Ss(e){let{editor:t,rules:n}=e,r=null,s=!1,o=!1,i=typeof ClipboardEvent<"u"?new ClipboardEvent("paste"):null,l;try{l=typeof DragEvent<"u"?new DragEvent("drop"):null}catch{l=null}let a=({state:m,from:d,to:p,rule:u,pasteEvt:h})=>{let f=m.tr,g=Ee({state:m,transaction:f});if(!(!ks({editor:t,state:g,from:Math.max(d-1,0),to:p.b-1,rule:u,pasteEvent:h,dropEvent:l})||!f.steps.length)){try{l=typeof DragEvent<"u"?new DragEvent("drop"):null}catch{l=null}return i=typeof ClipboardEvent<"u"?new ClipboardEvent("paste"):null,f}};return n.map(m=>new xs({view(d){let p=h=>{var f;r=(f=d.dom.parentElement)!=null&&f.contains(h.target)?d.dom.parentElement:null,r&&(we=t)},u=()=>{we&&(we=null)};return window.addEventListener("dragstart",p),window.addEventListener("dragend",u),{destroy(){window.removeEventListener("dragstart",p),window.removeEventListener("dragend",u)}}},props:{handleDOMEvents:{drop:(d,p)=>{if(o=r===d.dom.parentElement,l=p,!o){let u=we;u?.isEditable&&setTimeout(()=>{let h=u.state.selection;h&&u.commands.deleteRange({from:h.from,to:h.to})},10)}return!1},paste:(d,p)=>{var u;let h=(u=p.clipboardData)==null?void 0:u.getData("text/html");return i=p,s=!!h?.includes("data-pm-slice"),!1}}},appendTransaction:(d,p,u)=>{let h=d[0],f=h.getMeta("uiEvent")==="paste"&&!s,g=h.getMeta("uiEvent")==="drop"&&!o,v=h.getMeta("applyPasteRules"),y=!!v;if(!f&&!g&&!y)return;if(y){let{text:M}=v;typeof M=="string"?M=M:M=Rt(ys.from(M),u.schema);let{from:S}=v,I=S+M.length,C=Ms(M);return a({rule:m,state:u,from:S,to:{b:I},pasteEvt:C})}let k=p.doc.content.findDiffStart(u.doc.content),E=p.doc.content.findDiffEnd(u.doc.content);if(!(!bs(k)||!E||k===E.b))return a({rule:m,state:u,from:k,to:E,pasteEvt:i})}}))}var Ye=class{constructor(e,t){this.splittableMarks=[],this.editor=t,this.baseExtensions=e,this.extensions=Vt(e),this.schema=To(this.extensions,t),this.setupExtensions()}get commands(){return this.extensions.reduce((e,t)=>{let n={name:t.name,options:t.options,storage:this.editor.extensionStorage[t.name],editor:this.editor,type:ce(t.name,this.schema)},r=x(t,"addCommands",n);return r?{...e,...r()}:e},{})}get plugins(){let{editor:e}=this;return le([...this.extensions].reverse()).flatMap(r=>{let s={name:r.name,options:r.options,storage:this.editor.extensionStorage[r.name],editor:e,type:ce(r.name,this.schema)},o=[],i=x(r,"addKeyboardShortcuts",s),l={};if(r.type==="mark"&&x(r,"exitable",s)&&(l.ArrowRight=()=>Xe.handleExit({editor:e,mark:r})),i){let p=Object.fromEntries(Object.entries(i()).map(([u,h])=>[u,()=>h({editor:e})]));l={...l,...p}}let a=ms(l);o.push(a);let c=x(r,"addInputRules",s);if(Lt(r,e.options.enableInputRules)&&c){let p=c();if(p&&p.length){let u=gs({editor:e,rules:p}),h=Array.isArray(u)?u:[u];o.push(...h)}}let m=x(r,"addPasteRules",s);if(Lt(r,e.options.enablePasteRules)&&m){let p=m();if(p&&p.length){let u=Ss({editor:e,rules:p});o.push(...u)}}let d=x(r,"addProseMirrorPlugins",s);if(d){let p=d();o.push(...p)}return o})}get attributes(){return Ft(this.extensions)}get nodeViews(){let{editor:e}=this,{nodeExtensions:t}=te(this.extensions);return Object.fromEntries(t.filter(n=>!!x(n,"addNodeView")).map(n=>{let r=this.attributes.filter(a=>a.type===n.name),s={name:n.name,options:n.options,storage:this.editor.extensionStorage[n.name],editor:e,type:_(n.name,this.schema)},o=x(n,"addNodeView",s);if(!o)return[];let i=o();if(!i)return[];let l=(a,c,m,d,p)=>{let u=Te(a,r);return i({node:a,view:c,getPos:m,decorations:d,innerDecorations:p,editor:e,extension:n,HTMLAttributes:u})};return[n.name,l]}))}dispatchTransaction(e){let{editor:t}=this;return le([...this.extensions].reverse()).reduceRight((r,s)=>{let o={name:s.name,options:s.options,storage:this.editor.extensionStorage[s.name],editor:t,type:ce(s.name,this.schema)},i=x(s,"dispatchTransaction",o);return i?l=>{i.call(o,{transaction:l,next:r})}:r},e)}transformPastedHTML(e){let{editor:t}=this;return le([...this.extensions]).reduce((r,s)=>{let o={name:s.name,options:s.options,storage:this.editor.extensionStorage[s.name],editor:t,type:ce(s.name,this.schema)},i=x(s,"transformPastedHTML",o);return i?(l,a)=>{let c=r(l,a);return i.call(o,c)}:r},e||(r=>r))}get markViews(){let{editor:e}=this,{markExtensions:t}=te(this.extensions);return Object.fromEntries(t.filter(n=>!!x(n,"addMarkView")).map(n=>{let r=this.attributes.filter(l=>l.type===n.name),s={name:n.name,options:n.options,storage:this.editor.extensionStorage[n.name],editor:e,type:q(n.name,this.schema)},o=x(n,"addMarkView",s);if(!o)return[];let i=(l,a,c)=>{let m=Te(l,r);return o()({mark:l,view:a,inline:c,editor:e,extension:n,HTMLAttributes:m,updateAttributes:d=>{ai(l,e,d)}})};return[n.name,i]}))}destroy(){this.extensions.forEach(e=>{let t=e;for(;t.parent;){let n=t.parent;n.child===t&&(n.child=null),t=n}}),this.extensions=[],this.baseExtensions=[],this.schema=null,this.editor=null}setupExtensions(){let e=this.extensions;this.editor.extensionStorage=Object.fromEntries(e.map(t=>[t.name,t.storage])),e.forEach(t=>{var n;let r={name:t.name,options:t.options,storage:this.editor.extensionStorage[t.name],editor:this.editor,type:ce(t.name,this.schema)};t.type==="mark"&&((n=O(x(t,"keepOnSplit",r)))==null||n)&&this.splittableMarks.push(t.name);let s=x(t,"onBeforeCreate",r),o=x(t,"onCreate",r),i=x(t,"onUpdate",r),l=x(t,"onSelectionUpdate",r),a=x(t,"onTransaction",r),c=x(t,"onFocus",r),m=x(t,"onBlur",r),d=x(t,"onDestroy",r);s&&this.editor.on("beforeCreate",s),o&&this.editor.on("create",o),i&&this.editor.on("update",i),l&&this.editor.on("selectionUpdate",l),a&&this.editor.on("transaction",a),c&&this.editor.on("focus",c),m&&this.editor.on("blur",m),d&&this.editor.on("destroy",d)})}};Ye.resolve=Vt;Ye.sort=le;Ye.flatten=Je;var Ts={};Re(Ts,{ClipboardTextSerializer:()=>Is,Commands:()=>As,Delete:()=>Ns,Drop:()=>Ds,Editable:()=>$s,FocusEvents:()=>js,Keymap:()=>Fs,Paste:()=>Ks,Tabindex:()=>Xs,TextDirection:()=>Qs,focusEventsPluginKey:()=>Yt});var K=class Xt extends qe{constructor(){super(...arguments),this.type="extension"}static create(t={}){let n=typeof t=="function"?t():t;return new Xt(n)}configure(t){return super.configure(t)}extend(t){let n=typeof t=="function"?t():t;return super.extend(n)}},Is=K.create({name:"clipboardTextSerializer",addOptions(){return{blockSeparator:void 0}},addProseMirrorPlugins(){return[new Es({key:new Cs("clipboardTextSerializer"),props:{clipboardTextSerializer:()=>{let{editor:e}=this,{state:t,schema:n}=e,{doc:r,selection:s}=t,{ranges:o}=s,i=Math.min(...o.map(m=>m.$from.pos)),l=Math.max(...o.map(m=>m.$to.pos)),a=Io(n);return Co(r,{from:i,to:l},{...this.options.blockSeparator!==void 0?{blockSeparator:this.options.blockSeparator}:{},textSerializers:a})}}})]}}),As=K.create({name:"commands",addCommands(){return{...Ot}}}),Ns=K.create({name:"delete",onUpdate({transaction:e,appendedTransactions:t}){var n,r,s;let o=()=>{var i,l,a,c;if((c=(a=(l=(i=this.editor.options.coreExtensionOptions)==null?void 0:i.delete)==null?void 0:l.filterTransaction)==null?void 0:a.call(l,e))!=null?c:e.getMeta("y-sync$"))return;let m=go(e.before,[e,...t]);No(m).forEach(u=>{m.mapping.mapResult(u.oldRange.from).deletedAfter&&m.mapping.mapResult(u.oldRange.to).deletedBefore&&m.before.nodesBetween(u.oldRange.from,u.oldRange.to,(h,f)=>{let g=f+h.nodeSize-2,v=u.oldRange.from<=f&&g<=u.oldRange.to;this.editor.emit("delete",{type:"node",node:h,from:f,to:g,newFrom:m.mapping.map(f),newTo:m.mapping.map(g),deletedRange:u.oldRange,newRange:u.newRange,partial:!v,editor:this.editor,transaction:e,combinedTransform:m})})});let p=m.mapping;m.steps.forEach((u,h)=>{var f,g;if(u instanceof Ps){let v=p.slice(h).map(u.from,-1),y=p.slice(h).map(u.to),k=p.invert().map(v,-1),E=p.invert().map(y),M=v>0?(f=m.doc.nodeAt(v-1))==null?void 0:f.marks.some(I=>I.eq(u.mark)):!1,S=(g=m.doc.nodeAt(y))==null?void 0:g.marks.some(I=>I.eq(u.mark));this.editor.emit("delete",{type:"mark",mark:u.mark,from:u.from,to:u.to,deletedRange:{from:k,to:E},newRange:{from:v,to:y},partial:!!(S||M),editor:this.editor,transaction:e,combinedTransform:m})}})};(s=(r=(n=this.editor.options.coreExtensionOptions)==null?void 0:n.delete)==null?void 0:r.async)==null||s?setTimeout(o,0):o()}}),Ds=K.create({name:"drop",addProseMirrorPlugins(){return[new Ls({key:new zs("tiptapDrop"),props:{handleDrop:(e,t,n,r)=>{this.editor.emit("drop",{editor:this.editor,event:t,slice:n,moved:r})}}})]}}),$s=K.create({name:"editable",addProseMirrorPlugins(){return[new Os({key:new Bs("editable"),props:{editable:()=>this.editor.options.editable}})]}}),Yt=new _s("focusEvents"),js=K.create({name:"focusEvents",addProseMirrorPlugins(){let{editor:e}=this;return[new Hs({key:Yt,props:{handleDOMEvents:{focus:(t,n)=>{e.isFocused=!0;let r=e.state.tr.setMeta("focus",{event:n}).setMeta("addToHistory",!1);return t.dispatch(r),!1},blur:(t,n)=>{e.isFocused=!1;let r=e.state.tr.setMeta("blur",{event:n}).setMeta("addToHistory",!1);return t.dispatch(r),!1}}}})]}}),Fs=K.create({name:"keymap",addKeyboardShortcuts(){let e=()=>this.editor.commands.first(({commands:i})=>[()=>i.undoInputRule(),()=>i.command(({tr:l})=>{let{selection:a,doc:c}=l,{empty:m,$anchor:d}=a,{pos:p,parent:u}=d,h=d.parent.isTextblock&&p>0?l.doc.resolve(p-1):d,f=h.parent.type.spec.isolating,g=d.pos-d.parentOffset,v=f&&h.parent.childCount===1?g===d.pos:Ue.atStart(c).from===p;return!m||!u.type.isTextblock||u.textContent.length||!v||v&&d.parent.type.name==="paragraph"?!1:i.clearNodes()}),()=>i.deleteSelection(),()=>i.joinBackward(),()=>i.selectNodeBackward()]),t=()=>this.editor.commands.first(({commands:i})=>[()=>i.deleteSelection(),()=>i.deleteCurrentNode(),()=>i.joinForward(),()=>i.selectNodeForward()]),r={Enter:()=>this.editor.commands.first(({commands:i})=>[()=>i.newlineInCode(),()=>i.createParagraphNear(),()=>i.liftEmptyBlock(),()=>i.splitBlock()]),"Mod-Enter":()=>this.editor.commands.exitCode(),Backspace:e,"Mod-Backspace":e,"Shift-Backspace":e,Delete:t,"Mod-Delete":t,"Mod-a":()=>this.editor.commands.selectAll()},s={...r},o={...r,"Ctrl-h":e,"Alt-Backspace":e,"Ctrl-d":t,"Ctrl-Alt-Backspace":t,"Alt-Delete":t,"Alt-d":t,"Ctrl-a":()=>this.editor.commands.selectTextblockStart(),"Ctrl-e":()=>this.editor.commands.selectTextblockEnd()};return Se()||jt()?o:s},addProseMirrorPlugins(){return[new Us({key:new Rs("clearDocument"),appendTransaction:(e,t,n)=>{if(e.some(f=>f.getMeta("composition")))return;let r=e.some(f=>f.docChanged)&&!t.doc.eq(n.doc),s=e.some(f=>f.getMeta("preventClearDocument"));if(!r||s)return;let{empty:o,from:i,to:l}=t.selection,a=Ue.atStart(t.doc).from,c=Ue.atEnd(t.doc).to;if(o||!(i===a&&l===c)||!Wt(n.doc))return;let p=n.tr,u=Ee({state:n,transaction:p}),{commands:h}=new Fe({editor:this.editor,state:u});if(h.clearNodes(),!!p.steps.length)return p}})]}}),Ks=K.create({name:"paste",addProseMirrorPlugins(){return[new Vs({key:new Ws("tiptapPaste"),props:{handlePaste:(e,t,n)=>{this.editor.emit("paste",{editor:this.editor,event:t,slice:n})}}})]}}),Xs=K.create({name:"tabindex",addOptions(){return{value:void 0}},addProseMirrorPlugins(){return[new Js({key:new qs("tabindex"),props:{attributes:()=>{var e;return!this.editor.isEditable&&this.options.value===void 0?{}:{tabindex:(e=this.options.value)!=null?e:"0"}}}})]}}),Qs=K.create({name:"textDirection",addOptions(){return{direction:void 0}},addGlobalAttributes(){if(!this.options.direction)return[];let{nodeExtensions:e}=te(this.extensions);return[{types:e.filter(t=>t.name!=="text").map(t=>t.name),attributes:{dir:{default:this.options.direction,parseHTML:t=>{let n=t.getAttribute("dir");return n&&(n==="ltr"||n==="rtl"||n==="auto")?n:this.options.direction},renderHTML:t=>t.dir?{dir:t.dir}:{}}}}]},addProseMirrorPlugins(){return[new Ys({key:new Gs("textDirection"),props:{attributes:()=>{let e=this.options.direction;return e?{dir:e}:{}}}})]}});var Zs={};Re(Zs,{createAtomBlockMarkdownSpec:()=>ei,createBlockMarkdownSpec:()=>ti,createInlineMarkdownSpec:()=>oi,parseAttributes:()=>Ge,parseIndentedBlocks:()=>si,renderNestedMarkdownContent:()=>ii,serializeAttributes:()=>Qe});function Ge(e){if(!e?.trim())return{};let t={},n=[],r=e.replace(/["']([^"']*)["']/g,c=>(n.push(c),`__QUOTED_${n.length-1}__`)),s=r.match(/(?:^|\s)\.([a-zA-Z][\w-]*)/g);if(s){let c=s.map(m=>m.trim().slice(1));t.class=c.join(" ")}let o=r.match(/(?:^|\s)#([a-zA-Z][\w-]*)/);o&&(t.id=o[1]);let i=/([a-zA-Z][\w-]*)\s*=\s*(__QUOTED_\d+__)/g;Array.from(r.matchAll(i)).forEach(([,c,m])=>{var d;let p=parseInt(((d=m.match(/__QUOTED_(\d+)__/))==null?void 0:d[1])||"0",10),u=n[p];u&&(t[c]=u.slice(1,-1))});let a=r.replace(/(?:^|\s)\.([a-zA-Z][\w-]*)/g,"").replace(/(?:^|\s)#([a-zA-Z][\w-]*)/g,"").replace(/([a-zA-Z][\w-]*)\s*=\s*__QUOTED_\d+__/g,"").trim();return a&&a.split(/\s+/).filter(Boolean).forEach(m=>{m.match(/^[a-zA-Z][\w-]*$/)&&(t[m]=!0)}),t}function Qe(e){if(!e||Object.keys(e).length===0)return"";let t=[];return e.class&&String(e.class).split(/\s+/).filter(Boolean).forEach(r=>t.push(`.${r}`)),e.id&&t.push(`#${e.id}`),Object.entries(e).forEach(([n,r])=>{n==="class"||n==="id"||(r===!0?t.push(n):r!==!1&&r!=null&&t.push(`${n}="${String(r)}"`))}),t.join(" ")}function ei(e){let{nodeName:t,name:n,parseAttributes:r=Ge,serializeAttributes:s=Qe,defaultAttributes:o={},requiredAttributes:i=[],allowedAttributes:l}=e,a=n||t,c=m=>{if(!l)return m;let d={};return l.forEach(p=>{p in m&&(d[p]=m[p])}),d};return{parseMarkdown:(m,d)=>{let p={...o,...m.attributes};return d.createNode(t,p,[])},markdownTokenizer:{name:t,level:"block",start(m){var d;let p=new RegExp(`^:::${a}(?:\\s|$)`,"m"),u=(d=m.match(p))==null?void 0:d.index;return u!==void 0?u:-1},tokenize(m,d,p){let u=new RegExp(`^:::${a}(?:\\s+\\{([^}]*)\\})?\\s*:::(?:\\n|$)`),h=m.match(u);if(!h)return;let f=h[1]||"",g=r(f);if(!i.find(y=>!(y in g)))return{type:t,raw:h[0],attributes:g}}},renderMarkdown:m=>{let d=c(m.attrs||{}),p=s(d),u=p?` {${p}}`:"";return`:::${a}${u} :::`}}}function ti(e){let{nodeName:t,name:n,getContent:r,parseAttributes:s=Ge,serializeAttributes:o=Qe,defaultAttributes:i={},content:l="block",allowedAttributes:a}=e,c=n||t,m=d=>{if(!a)return d;let p={};return a.forEach(u=>{u in d&&(p[u]=d[u])}),p};return{parseMarkdown:(d,p)=>{let u;if(r){let f=r(d);u=typeof f=="string"?[{type:"text",text:f}]:f}else l==="block"?u=p.parseChildren(d.tokens||[]):u=p.parseInline(d.tokens||[]);let h={...i,...d.attributes};return p.createNode(t,h,u)},markdownTokenizer:{name:t,level:"block",start(d){var p;let u=new RegExp(`^:::${c}`,"m"),h=(p=d.match(u))==null?void 0:p.index;return h!==void 0?h:-1},tokenize(d,p,u){var h;let f=new RegExp(`^:::${c}(?:\\s+\\{([^}]*)\\})?\\s*\\n`),g=d.match(f);if(!g)return;let[v,y=""]=g,k=s(y),E=1,M=v.length,S="",I=/^:::([\w-]*)(\s.*)?/gm,C=d.slice(M);for(I.lastIndex=0;;){let z=I.exec(C);if(z===null)break;let L=z.index,A=z[1];if(!((h=z[2])!=null&&h.endsWith(":::"))){if(A)E+=1;else if(E-=1,E===0){let F=C.slice(0,L);S=F.trim();let B=d.slice(0,M+L+z[0].length),H=[];if(S)if(l==="block")for(H=u.blockTokens(F),H.forEach($=>{$.text&&(!$.tokens||$.tokens.length===0)&&($.tokens=u.inlineTokens($.text))});H.length>0;){let $=H[H.length-1];if($.type==="paragraph"&&(!$.text||$.text.trim()===""))H.pop();else break}else H=u.inlineTokens(S);return{type:t,raw:B,attributes:k,content:S,tokens:H}}}}}},renderMarkdown:(d,p)=>{let u=m(d.attrs||{}),h=o(u),f=h?` {${h}}`:"",g=p.renderChildren(d.content||[],`
|
|
5
5
|
|
|
6
|
-
`);return`:::${
|
|
6
|
+
`);return`:::${c}${f}
|
|
7
7
|
|
|
8
8
|
${g}
|
|
9
9
|
|
|
10
|
-
:::`}}}function
|
|
11
|
-
`),a=[],
|
|
12
|
-
`;continue}else return}let h=t.extractItemData(u),{indentLevel:f,mainContent:g}=h;
|
|
13
|
-
`;let v=[g];for(
|
|
14
|
-
`,
|
|
15
|
-
`,
|
|
16
|
-
`);
|
|
10
|
+
:::`}}}function ni(e){if(!e.trim())return{};let t={},n=/(\w+)=(?:"([^"]*)"|'([^']*)')/g,r=n.exec(e);for(;r!==null;){let[,s,o,i]=r;t[s]=o||i,r=n.exec(e)}return t}function ri(e){return Object.entries(e).filter(([,t])=>t!=null).map(([t,n])=>`${t}="${n}"`).join(" ")}function oi(e){let{nodeName:t,name:n,getContent:r,parseAttributes:s=ni,serializeAttributes:o=ri,defaultAttributes:i={},selfClosing:l=!1,allowedAttributes:a}=e,c=n||t,m=p=>{if(!a)return p;let u={};return a.forEach(h=>{let f=typeof h=="string"?h:h.name,g=typeof h=="string"?void 0:h.skipIfDefault;if(f in p){let v=p[f];if(g!==void 0&&v===g)return;u[f]=v}}),u},d=c.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return{parseMarkdown:(p,u)=>{let h={...i,...p.attributes};if(l)return u.createNode(t,h);let f=r?r(p):p.content||"";return f?u.createNode(t,h,[u.createTextNode(f)]):u.createNode(t,h,[])},markdownTokenizer:{name:t,level:"inline",start(p){let u=l?new RegExp(`\\[${d}\\s*[^\\]]*\\]`):new RegExp(`\\[${d}\\s*[^\\]]*\\][\\s\\S]*?\\[\\/${d}\\]`),h=p.match(u),f=h?.index;return f!==void 0?f:-1},tokenize(p,u,h){let f=l?new RegExp(`^\\[${d}\\s*([^\\]]*)\\]`):new RegExp(`^\\[${d}\\s*([^\\]]*)\\]([\\s\\S]*?)\\[\\/${d}\\]`),g=p.match(f);if(!g)return;let v="",y="";if(l){let[,E]=g;y=E}else{let[,E,M]=g;y=E,v=M||""}let k=s(y.trim());return{type:t,raw:g[0],content:v.trim(),attributes:k}}},renderMarkdown:p=>{let u="";r?u=r(p):p.content&&p.content.length>0&&(u=p.content.filter(v=>v.type==="text").map(v=>v.text).join(""));let h=m(p.attrs||{}),f=o(h),g=f?` ${f}`:"";return l?`[${c}${g}]`:`[${c}${g}]${u}[/${c}]`}}}function si(e,t,n){var r,s,o,i;let l=e.split(`
|
|
11
|
+
`),a=[],c="",m=0,d=t.baseIndentSize||2;for(;m<l.length;){let p=l[m],u=p.match(t.itemPattern);if(!u){if(a.length>0)break;if(p.trim()===""){m+=1,c=`${c}${p}
|
|
12
|
+
`;continue}else return}let h=t.extractItemData(u),{indentLevel:f,mainContent:g}=h;c=`${c}${p}
|
|
13
|
+
`;let v=[g];for(m+=1;m<l.length;){let M=l[m];if(M.trim()===""){let I=l.slice(m+1).findIndex(L=>L.trim()!=="");if(I===-1)break;if((((s=(r=l[m+1+I].match(/^(\s*)/))==null?void 0:r[1])==null?void 0:s.length)||0)>f){v.push(M),c=`${c}${M}
|
|
14
|
+
`,m+=1;continue}else break}if((((i=(o=M.match(/^(\s*)/))==null?void 0:o[1])==null?void 0:i.length)||0)>f)v.push(M),c=`${c}${M}
|
|
15
|
+
`,m+=1;else break}let y,k=v.slice(1);if(k.length>0){let M=k.map(S=>S.slice(f+d)).join(`
|
|
16
|
+
`);M.trim()&&(t.customNestedParser?y=t.customNestedParser(M):y=n.blockTokens(M))}let E=t.createToken(h,y);a.push(E)}if(a.length!==0)return{items:a,raw:c}}function ii(e,t,n,r){if(!e||!Array.isArray(e.content))return"";let s=typeof n=="function"?n(r):n,[o,...i]=e.content,l=t.renderChildren([o]),a=`${s}${l}`;return i&&i.length>0&&i.forEach((c,m)=>{var d,p;let u=(p=(d=t.renderChild)==null?void 0:d.call(t,c,m+1))!=null?p:t.renderChildren([c]);if(u!=null){let h=u.split(`
|
|
17
17
|
`).map(f=>f?t.indent(f):t.indent("")).join(`
|
|
18
|
-
`);a+=
|
|
18
|
+
`);a+=c.type==="paragraph"?`
|
|
19
19
|
|
|
20
20
|
${h}`:`
|
|
21
|
-
${h}`}}),a}function ri(e,t,n={}){let{state:r}=t,{doc:s,tr:o}=r,i=e;s.descendants((c,a)=>{let l=o.mapping.map(a),p=o.mapping.map(a)+c.nodeSize,d=null;if(c.marks.forEach(u=>{if(u!==i)return!1;d=u}),!d)return;let m=!1;if(Object.keys(n).forEach(u=>{n[u]!==d.attrs[u]&&(m=!0)}),m){let u=e.type.create({...e.attrs,...n});o.removeMark(l,p,e.type),o.addMark(l,p,u)}}),o.docChanged&&t.view.dispatch(o)}var Yt=class Gt extends Ke{constructor(){super(...arguments),this.type="node"}static create(t={}){let n=typeof t=="function"?t():t;return new Gt(n)}configure(t){return super.configure(t)}extend(t){let n=typeof t=="function"?t():t;return super.extend(n)}};var oi=Je.create({name:"underline",addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:"u"},{style:"text-decoration",consuming:!1,getAttrs:e=>e.includes("underline")?{}:!1}]},renderHTML({HTMLAttributes:e}){return["u",ue(this.options.HTMLAttributes,e),0]},parseMarkdown(e,t){return t.applyMark(this.name||"underline",t.parseInline(e.tokens||[]))},renderMarkdown(e,t){return`++${t.renderChildren(e)}++`},markdownTokenizer:{name:"underline",level:"inline",start(e){return e.indexOf("++")},tokenize(e,t,n){let s=/^(\+\+)([\s\S]+?)(\+\+)/.exec(e);if(!s)return;let o=s[2].trim();return{type:"underline",raw:s[0],text:o,tokens:n.inlineTokens(o)}}},addCommands(){return{setUnderline:()=>({commands:e})=>e.setMark(this.name),toggleUnderline:()=>({commands:e})=>e.toggleMark(this.name),unsetUnderline:()=>({commands:e})=>e.unsetMark(this.name)}},addKeyboardShortcuts(){return{"Mod-u":()=>this.editor.commands.toggleUnderline(),"Mod-U":()=>this.editor.commands.toggleUnderline()}}}),Qt=oi;import{useEditor as bi}from"@tiptap/react";import wi from"@tiptap/starter-kit";import{Link as ki,RichTextEditor as j}from"@mantine/tiptap";import{ActionIcon as me,Menu as ne}from"@mantine/core";import Q,{useState as si,lazy as ii,Suspense as ai,cloneElement as ci}from"react";import{Popover as Ge,Skeleton as li}from"@mantine/core";import di from"@emoji-mart/data";var ui=ii(()=>import("@emoji-mart/react"));function Qe({onSelect:e,action:t,size:n=320,offset:r=8,position:s="bottom-start",colorScheme:o="light"}){let[i,c]=si(!1);return Q.createElement(Ge,{opened:i,onChange:c,width:n,position:s,offset:r,withArrow:!0,shadow:"md",trapFocus:!1,closeOnEscape:!0},Q.createElement(Ge.Target,null,ci(t,{onClick:a=>{t.props?.onClick?.(a),c(l=>!l)}})),Q.createElement(Ge.Dropdown,{p:0},Q.createElement(ai,{fallback:Q.createElement("div",{style:{padding:12,width:320}},Q.createElement(li,{height:280,radius:"md"}))},Q.createElement(ui,{previewPosition:"none",theme:o,data:di,onEmojiSelect:a=>{e(a.native),c(!1)}}))))}var Zt=Yt.create({name:"emoji",inline:!0,group:"inline",selectable:!1,atom:!0,addAttributes(){return{emoji:{default:"\u{1F600}"}}},parseHTML(){return[{tag:"span[data-emoji]"}]},renderHTML({HTMLAttributes:e}){return["span",ue(e,{class:"emoji-big","data-emoji":e.emoji}),e.emoji]}});function Ze({content:e="",maxLength:t=3e3,onChange:n,onSubmit:r,colorScheme:s="light"}){let[o,i]=Te(0),[c,a]=Te(!1),[l,p]=Te(!1),[d,m]=Te(!1),u=()=>{if(!f)return;let g=f.getHTML();f.getText().trim()&&(r?.(g),f.commands.clearContent(),f.commands.focus(),i(0),a(!1))},h=(g,v)=>v.key==="Enter"&&!v.shiftKey?(v.preventDefault(),u(),!0):v.key==="Enter"&&v.shiftKey?(v.preventDefault(),f?.commands.setHardBreak(),!0):!1,f=bi({extensions:[wi,Zt,Qt,ki,yi,vi,gi,xi.configure({types:["heading","paragraph"]})],content:e,editorProps:{handleKeyDown:h},onUpdate:({editor:g})=>{let v=g.getText(),y=v.trim().length>0;i(v.length),a(y),t&&v.length>=t?p(!0):p(!1),n&&n(g.getHTML())},immediatelyRender:!1});return S.createElement(S.Fragment,null,S.createElement(j,{editor:f,w:"100%",className:"mrchat-richTextEditorContainer"},S.createElement(j.Content,null),S.createElement(j.Toolbar,{sticky:!0,stickyOffset:"var(--docs-header-height)"},S.createElement("div",{className:"mrchat-mainActionContainer"},S.createElement(Qe,{colorScheme:s,onSelect:g=>{f?.chain().focus().insertContent({type:"emoji",attrs:{emoji:g}}).run()},action:S.createElement(me,{radius:"lg",variant:"subtle","aria-label":"add",className:"mrchat-mainActionEmojiIcon"},S.createElement(fi,null))}),S.createElement(me,{radius:"lg",variant:"subtle","aria-label":"text_format",className:"mrchat-mainTextFormatIcon",onClick:()=>m(g=>!g)},S.createElement(hi,{stroke:1.7})),S.createElement(me,{radius:"lg",variant:"filled","aria-label":"send",className:"mrchat-mainSendMsgIcon",onClick:u,disabled:!c},S.createElement(en,{size:18}))),S.createElement(me,{radius:"lg",variant:"filled","aria-label":"send",className:"mrchat-sm-mainSendMsgIcon",onClick:u,disabled:!c},S.createElement(en,{size:18})),d&&S.createElement(S.Fragment,null,S.createElement(j.ControlsGroup,null,S.createElement(j.Bold,null),S.createElement(j.Italic,null),S.createElement(j.Underline,null),S.createElement(j.Strikethrough,null),S.createElement(j.Code,null),S.createElement(j.Highlight,null)),S.createElement(j.ControlsGroup,{className:"mrchat-secondRichTextEditorToolBar"},S.createElement(j.BulletList,null),S.createElement(j.OrderedList,null),S.createElement(ne,{trigger:"hover",openDelay:200},S.createElement(ne.Target,null,S.createElement(me,{variant:"outline",size:"md",className:"mrchat-customToolActionItem"},S.createElement(tn,{size:16,stroke:1.5}))),S.createElement(ne.Dropdown,null,S.createElement(ne.Item,{onClick:()=>f?.chain().focus().setTextAlign("left").run()},S.createElement(tn,{size:14})),S.createElement(ne.Item,{onClick:()=>f?.chain().focus().setTextAlign("center").run()},S.createElement(mi,{size:14})),S.createElement(ne.Item,{onClick:()=>f?.chain().focus().setTextAlign("right").run()},S.createElement(pi,{size:14})))),S.createElement(j.Link,null)),S.createElement(j.ControlsGroup,{className:"mrchat-secondRichTextEditorToolBar"},S.createElement(j.ClearFormatting,null)))),l&&S.createElement("div",{style:{textAlign:"right",color:"red",fontSize:12,marginTop:4}},"Character limit reached (",o,"/",t,")")))}import{useDispatch as Ai,useSelector as Pi}from"react-redux";import z,{useEffect as ln,useState as nt}from"react";import Ni from"dompurify";import nn,{useRef as Ee,useEffect as rn}from"react";function on({data:e,renderItem:t,loadMore:n,hasMore:r,scrollToBottomTrigger:s}){let o=Ee(null),i=Ee(!1),c=Ee(!0),a=Ee(0);rn(()=>{let d=o.current;d&&setTimeout(()=>{d.scrollTop=d.scrollHeight},100)},[s]),rn(()=>{let d=o.current;!d||!e.length||(c.current&&(d.scrollTop=d.scrollHeight,c.current=!1),a.current=e.length)},[e]);let l=()=>{let d=o.current;d&&d.scrollTop<50&&r&&!i.current&&p()},p=async()=>{let d=o.current;if(!d||i.current||!r)return;i.current=!0;let m=d.scrollHeight,u=d.scrollTop;await n(),setTimeout(()=>{let f=d.scrollHeight-m;d.scrollTop=u+f,i.current=!1},50)};return nn.createElement("div",{ref:o,onScroll:l,style:{overflowY:"auto",height:"100%",display:"flex",flexDirection:"column"}},e.map((d,m)=>nn.createElement("div",{key:d?.id||m},t(d,m))))}import U,{useEffect as Mi,useState as sn}from"react";import{Avatar as Si,Text as et}from"@mantine/core";import{IconArrowLeft as Ti}from"@tabler/icons-react";function tt({opened:e,onClose:t,user:n,onDeleteMessages:r,onBlock:s}){let[o,i]=sn(e),[c,a]=sn(!1);Mi(()=>{e&&i(!0)},[e]);let l=()=>{i(!1),setTimeout(t,250)};return!e&&!o?null:U.createElement(U.Fragment,null,U.createElement("div",{className:"mrchat-overlay",onClick:l},U.createElement("div",{className:`mrchat-drawer ${o?"mrchat-open":"mrchat-close"}`,onClick:p=>p.stopPropagation()},U.createElement("div",{className:"mrchat-header"},U.createElement("div",{className:"mrchat-backBtn",onClick:l},U.createElement(Ti,{size:20})),U.createElement(et,{fw:600},"Contact info")),U.createElement("div",{className:"mrchat-profileSection"},U.createElement(Si,{src:n?.avatar,size:150,radius:"xl",style:{cursor:"pointer"},onClick:()=>n?.avatar?a(!0):{}}),U.createElement(et,{fw:700,size:"lg",mt:"sm"},n?.displayName),U.createElement(et,{size:"sm",c:"dimmed"},"@",n?.username)))),c&&U.createElement("div",{className:"mrchat-imagePreview",onClick:()=>a(!1)},U.createElement("img",{src:n?.avatar,alt:"profile"})))}function dn({chatId:e,enableChat:t,senderDetails:n,receiverDetails:r,onChatInitialized:s,onBack:o,showBackButton:i,colorScheme:c}){let a=Ai(),l=Pi(T=>T.chat.messageList),[p,d]=nt(0),[m,u]=nt(0),[h,f]=nt(!1),g=l?.rows?.data||[],v=g.length===0,y=()=>{let T=l?.hasMore;if(!e||!T)return;let E=p+1;a(Pe({chatId:e,page:E,userId:n?.userId})),d(E)};ln(()=>{e&&(d(0),a(Pe({chatId:e,page:0,userId:n?.userId})))},[e]),ln(()=>{if(!n?.userId||!Y())return;let T=W(n?.userId||"");if(!T)return;let E=M=>{M.chatId===e&&a(Ne({id:Date.now(),chatId:M.chatId,message:M.message,sender:M.sender,recipient:M.recipient,type:M.type,status:M.status,createdAt:M.time}))};return T.on("newmessage",E),()=>{T.off("newmessage",E)}},[e,n?.userId]);let C=T=>{let E=W(n?.userId||""),M={message:T,sender:n?.userId,receiver:r?.userId,type:"text"};if(!l?.rows?.data?.length){E?.emit("initializeNewChat",{...M,senderUserDetails:{userId:n?.userId,username:n?.username,displayName:n?.displayName,avatar:n?.avatar},receiverUserDetails:{userId:r?.userId,username:r?.username,displayName:r?.displayName,avatar:r?.avatar}},P=>{if(P?.status==="success"){let{data:L}=P;a(ie({id:Date.now(),chatId:L.chatId,message:L.message,sender:L.sender,recipient:L.recipient,type:L.type,status:L.status,createdAt:new Date(L.time).getTime(),updatedAt:new Date(L.time).getTime(),userId:r?.userId,username:r?.username,displayName:r?.displayName,avatar:r?.avatar})),a(Ne({id:Date.now(),chatId:L.chatId,message:L.message,sender:L.sender,recipient:L.recipient,type:L.type,status:L.status,createdAt:Date.now()})),s?.(L)}else console.log("Failed to initialize chat",P?.error)});return}E?.emit("privatemessage",{...M,chatId:e}),u(P=>P+1)},I=()=>{l.hasMore&&y()},w=()=>{!e||!n?.userId||a(mt({chatId:e,userId:n?.userId}))};return z.createElement("div",{className:"mrchat-mainArea"},z.createElement("div",{className:"mrchat-chatHeader"},i&&o&&z.createElement(Ei,{variant:"subtle",className:"mrchat-backButton",onClick:o},z.createElement(Ci,{size:20})),r&&z.createElement(z.Fragment,null,z.createElement("div",{className:"mrchat-receiverInfo",onClick:()=>f(!0)},r?.avatar?z.createElement(cn,{src:r.avatar,size:36,radius:"xl"}):z.createElement(cn,{key:r?.displayName||r?.username,name:r?.displayName||r?.username,color:"initials"}),z.createElement(an,{fw:600,size:"md"},r?.displayName||r?.username)))),z.createElement("div",{className:"mrchat-messageArea"},v?z.createElement("div",{className:"mrchat-emptyState"},z.createElement("div",{className:"mrchat-encryptionMinimal"},z.createElement(Ii,{size:20,stroke:1.8}),z.createElement(an,{className:"mrchat-encryptionText",size:"md"},"End-to-end encrypted"))):z.createElement(on,{data:g,hasMore:l?.hasMore,loadMore:I,scrollToBottomTrigger:m,renderItem:(T,E)=>{let M=T?.sender===n?.userId,N=new Date(T?.createdAt),P=g[E-1],L=E===0||new Date(P?.createdAt).toDateString()!==N.toDateString(),R=new Date,B=new Date;B.setDate(R.getDate()-1);let H=N.toDateString()===R.toDateString(),$=N.toDateString()===B.toDateString(),q="";H?q="Today":$?q="Yesterday":q=N.toLocaleDateString(void 0,{weekday:"short",month:"short",day:"numeric"});let Ce=N.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",hour12:!1});return z.createElement("div",{key:T?.id+"_"+E},L&&z.createElement("div",{className:"mrchat-dateSeparator"},q),z.createElement("div",{style:{borderRadius:T.sender===n?.userId?"16px 16px 1px 16px":"16px 16px 16px 1px"},className:`mrchat-messageBubble ${M?"mrchat-outgoing":"mrchat-incoming"}`},z.createElement("div",{className:"mrchat-messageContent",dangerouslySetInnerHTML:{__html:Ni.sanitize(T?.message)}}),z.createElement("div",{className:"mrchat-messageTime"},Ce)))}})),(e||t)&&z.createElement("div",{className:"mrchat-inputBar"},z.createElement(Ze,{onSubmit:C,colorScheme:c})),z.createElement(tt,{opened:h,onClose:()=>f(!1),user:{avatar:r?.avatar,username:r?.username,displayName:r?.displayName},onDeleteMessages:()=>{w()},onBlock:()=>{console.log("block user")}}))}import{useDispatch as Ri,useSelector as Fi}from"react-redux";import A,{useEffect as Z,useState as V}from"react";import Li from"react";import{Virtuoso as Di}from"react-virtuoso";function un({data:e,itemContent:t,height:n="100%",startReached:r,endReached:s,...o}){return Li.createElement(Di,{style:{height:n},data:e,startReached:r,endReached:s,itemContent:(i,c)=>t(i,c),...o})}import Vi from"dompurify";var mn=e=>{if(!e)return"";let t=new Date(e),n=new Date,r=new Date;r.setDate(n.getDate()-1);let s=t.toDateString()===n.toDateString(),o=t.toDateString()===r.toDateString(),i=t.toLocaleTimeString("en-GB",{hour:"2-digit",minute:"2-digit",hour12:!1});return s?i:o?"Yesterday":t.toLocaleDateString(void 0,{day:"numeric",month:"short"})};function pn({currentUser:e,onSearchUsers:t,colorScheme:n}){let[r,{open:s,close:o}]=Ui(!1),i=Ri(),c=Fi(x=>x.chat.messagedUserList),[a,l]=V(0),[p,d]=V(""),[m,u]=V(!1),[h,f]=V(""),[g,v]=V(),[y,C]=V(),[I,w]=V([]),[T,E]=V(!1),[M,N]=V(e),[P,L]=V(!1),[R,B]=V(!1);Z(()=>{e?.userId&&N(e)},[e?.userId]),Z(()=>{e?.userId&&i(Ae({userId:e.userId,page:0}))},[e?.userId,i]),Z(()=>{if(typeof window>"u")return;let x=window.matchMedia("(max-width: 599px)"),k=D=>{let F="matches"in D?D.matches:x.matches;L(F),F||B(!1)};return k(x),x.addEventListener?x.addEventListener("change",k):x.addListener(k),()=>{x.removeEventListener?x.removeEventListener("change",k):x.removeListener(k)}},[]);let H=()=>{if(!y?.userId)return;let x=c?.rows?.data?.find(k=>k.userId===y.userId);if(x){q(x),o(),f("");return}i(ie({userId:y?.userId,username:y?.username,displayName:y?.displayName,avatar:y?.avatar})),v(y),o(),f(""),i(ae()),d(""),u(!0),P&&B(!0)};Z(()=>{if(!M?.userId)return;let x=W(M.userId);x&&(x.connected||x.connect())},[M?.userId]),Z(()=>{if(!M?.userId)return;let x=W(M.userId);if(!x)return;let k=D=>{D.sender!==M.userId&&i(ie({message:D.message,chatId:D.chatId,userId:D.sender,username:D.userDetails.username,displayName:D.userDetails.displayName,avatar:D.userDetails.avatar}))};return x.on("newChat",k),()=>{x.off("newChat",k)}},[i,M?.userId]),Z(()=>{if(!M?.userId)return;let x=W(M?.userId||"");if(!x)return;let k=D=>{if(!c?.rows?.data)return;let F=c.rows.data.map(X=>{if(X.chatId===D.chatId){let xn=D.chatId===p;return{...X,message:D.message,updatedAt:new Date().toISOString(),unreadCount:xn?0:(X.unreadCount||0)+1}}return X}),ot=F.findIndex(X=>X.chatId===D.chatId);if(ot!==-1){let X=F.splice(ot,1)[0];F.unshift(X)}console.log("Updated",F,D),i(se({...c,rows:{...c.rows,data:F}}))};return x.on("newMessageNotification",k),()=>{x.off("newMessageNotification",k)}},[c,M?.userId]);let $=()=>{if(!c?.hasMore||!e?.userId)return;let x=a+1;l(x),i(Ae({userId:e.userId,page:x}))},q=x=>{if(!M?.userId)return;let k=W(M.userId);if(!k)return;v({userId:x.userId,username:x.username,displayName:x.displayName,avatar:x.avatar}),k.emit("joinChat",{chatId:x.chatId}),d(x?.chatId||""),i(ae());let D=c.rows.data.map(F=>F.chatId===x.chatId?{...F,unreadCount:0}:F);P&&B(!0),i(se({...c,rows:{...c.rows,data:D}}))},Ce=x=>{f(x)},gn=()=>{B(!1)};Z(()=>{if(!h.trim()){w([]),E(!1);return}if(!t){w([]),E(!1);return}let x=!1,k=setTimeout(async()=>{try{E(!0),w([]);let D=await Promise.resolve(t(h));if(x)return;w(D)}finally{x||E(!1)}},400);return()=>{x=!0,clearTimeout(k)}},[h,t]);let vn=x=>{let k=document.createElement("div");return k.innerHTML=x,k.textContent||""},yn=I.map(x=>({value:x.username,label:x.displayName||x.username,user:x}));return A.createElement("div",{className:"mrchat-chatWrapper"},A.createElement(zi,{opened:r,onClose:()=>{o(),f(""),w([]),E(!1)},title:"Search User",centered:!0,withCloseButton:!0},A.createElement($i,{mb:12,label:"Search User to Chat",placeholder:"Type username to search...",limit:20,data:yn,value:h,onChange:Ce,rightSection:T?A.createElement(_i,{size:"xs"}):void 0,rightSectionWidth:28,onOptionSubmit:x=>{let k=I.find(D=>D.username===x);k&&(f(""),C(k),w([]),E(!1))},renderOption:({option:x})=>{let k=x.user;return A.createElement(Hi,{gap:"sm"},A.createElement(rt,{src:k.avatar,size:36,radius:"xl"}),A.createElement("div",null,A.createElement(re,{size:"sm"},k.displayName||k.username),k.displayName&&A.createElement(re,{size:"xs",opacity:.5},"@",k.username)))}}),A.createElement(Oi,{fullWidth:!0,onClick:H,disabled:!y?.username},"Start Chat")),A.createElement("div",{className:"mrchat-chatContainer"},A.createElement("div",{className:"mrchat-sidebar "+(P&&R?"mrchat-hiddenOnMobile":"")},A.createElement("div",{className:"mrchat-sidebarTop"},A.createElement("div",{className:"mrchat-topBar"},A.createElement(re,{size:"xs",c:"dimmed",mt:"sm",mb:"xs",ml:12},"All Messages"),A.createElement("div",{className:"mrchat-topActions"},A.createElement(Bi,{variant:"subtle",onClick:()=>{C(null),f(""),w([]),s()},radius:"lg"},A.createElement(ji,{size:20,stroke:3}))))),A.createElement("div",{className:"mrchat-scrollWrapper"},A.createElement(un,{data:c?.rows?.data||[],endReached:$,itemContent:(x,k)=>{let D=k.chatId===p;return A.createElement("div",{className:`mrchat-chatItem ${D?"mrchat-activeChatItem":""}`,onClick:()=>{D||q(k)}},k.avatar?A.createElement(rt,{src:k.avatar,size:36,radius:"xl"}):A.createElement(rt,{key:k.displayName||k.username,name:k.displayName||k.username,color:"initials"}),A.createElement("div",{className:"mrchat-chatInfo"},A.createElement(re,{className:"mrchat-chatLabelItem",truncate:!0},k.displayName||k.username),k.unreadCount>0&&A.createElement("div",{className:"mrchat-unreadBadge"},k.unreadCount||10),A.createElement("div",{className:"mrchat-messagePreview"},A.createElement(re,{truncate:!0,size:"xs",c:"dimmed",style:{maxWidth:150},className:"mrchat-messagePreviewContent"},vn(Vi.sanitize(k.message))),A.createElement(re,{size:"xs",c:"dimmed",className:"mrchat-messagePreviewTime"},mn(k.updatedAt||k.createdAt)))))}}))),A.createElement("div",{className:"mrchat-mainAreaWrapper "+(P&&!R?"mrchat-hiddenOnMobile":"")},A.createElement(dn,{chatId:p,enableChat:m,senderDetails:M,receiverDetails:g,onBack:gn,showBackButton:P,onChatInitialized:x=>{q({chatId:x.chatId,userId:g?.userId,username:g?.username,displayName:g?.displayName,avatar:g?.avatar})},colorScheme:n}))))}import{useEffect as Wi}from"react";import{useDispatch as Ki}from"react-redux";function fn(){let e=Ki();return Wi(()=>()=>{e(pt())},[e]),null}function hn({colorScheme:e,primaryColor:t="customBrand",darkColor:n,authorization:r,...s}){let o=at(t);return qi(()=>{typeof window>"u"||lt(r||"")},[r]),Ji(()=>{if(typeof document>"u"||!n)return;let i=document.body.style.backgroundColor;return document.body.style.backgroundColor=e==="dark"?n:"",document.documentElement.style.setProperty("--mantine-color-body",e==="dark"?n:""),()=>{document.body.style.backgroundColor=i,document.documentElement.style.removeProperty("--mantine-color-body")}},[e,n]),oe.createElement(gt,null,oe.createElement(xt,null,oe.createElement(fn,null),oe.createElement(Xi,{defaultColorScheme:e??"light",forceColorScheme:e,theme:o},oe.createElement(Yi,null),oe.createElement(pn,{colorScheme:e,...s}))))}export{hn as MrChat};
|
|
21
|
+
${h}`}}),a}function ai(e,t,n={}){let{state:r}=t,{doc:s,tr:o}=r,i=e;s.descendants((l,a)=>{let c=o.mapping.map(a),m=o.mapping.map(a)+l.nodeSize,d=null;if(l.marks.forEach(u=>{if(u!==i)return!1;d=u}),!d)return;let p=!1;if(Object.keys(n).forEach(u=>{n[u]!==d.attrs[u]&&(p=!0)}),p){let u=e.type.create({...e.attrs,...n});o.removeMark(c,m,e.type),o.addMark(c,m,u)}}),o.docChanged&&t.view.dispatch(o)}var Gt=class Qt extends qe{constructor(){super(...arguments),this.type="node"}static create(t={}){let n=typeof t=="function"?t():t;return new Qt(n)}configure(t){return super.configure(t)}extend(t){let n=typeof t=="function"?t():t;return super.extend(n)}};var ci=Xe.create({name:"underline",addOptions(){return{HTMLAttributes:{}}},parseHTML(){return[{tag:"u"},{style:"text-decoration",consuming:!1,getAttrs:e=>e.includes("underline")?{}:!1}]},renderHTML({HTMLAttributes:e}){return["u",ue(this.options.HTMLAttributes,e),0]},parseMarkdown(e,t){return t.applyMark(this.name||"underline",t.parseInline(e.tokens||[]))},renderMarkdown(e,t){return`++${t.renderChildren(e)}++`},markdownTokenizer:{name:"underline",level:"inline",start(e){return e.indexOf("++")},tokenize(e,t,n){let s=/^(\+\+)([\s\S]+?)(\+\+)/.exec(e);if(!s)return;let o=s[2].trim();return{type:"underline",raw:s[0],text:o,tokens:n.inlineTokens(o)}}},addCommands(){return{setUnderline:()=>({commands:e})=>e.setMark(this.name),toggleUnderline:()=>({commands:e})=>e.toggleMark(this.name),unsetUnderline:()=>({commands:e})=>e.unsetMark(this.name)}},addKeyboardShortcuts(){return{"Mod-u":()=>this.editor.commands.toggleUnderline(),"Mod-U":()=>this.editor.commands.toggleUnderline()}}}),Zt=ci;import{useEditor as Si}from"@tiptap/react";import Ti from"@tiptap/starter-kit";import{Link as Ei,RichTextEditor as j}from"@mantine/tiptap";import{ActionIcon as me,Menu as ne}from"@mantine/core";import Z,{useState as li,lazy as di,Suspense as ui,cloneElement as mi}from"react";import{Popover as Ze,Skeleton as pi}from"@mantine/core";import fi from"@emoji-mart/data";var hi=di(()=>import("@emoji-mart/react"));function et({onSelect:e,action:t,size:n=320,offset:r=8,position:s="bottom-start",colorScheme:o="light"}){let[i,l]=li(!1);return Z.createElement(Ze,{opened:i,onChange:l,width:n,position:s,offset:r,withArrow:!0,shadow:"md",trapFocus:!1,closeOnEscape:!0},Z.createElement(Ze.Target,null,mi(t,{onClick:a=>{t.props?.onClick?.(a),l(c=>!c)}})),Z.createElement(Ze.Dropdown,{p:0},Z.createElement(ui,{fallback:Z.createElement("div",{style:{padding:12,width:320}},Z.createElement(pi,{height:280,radius:"md"}))},Z.createElement(hi,{previewPosition:"none",theme:o,data:fi,onEmojiSelect:a=>{e(a.native),l(!1)}}))))}var en=Gt.create({name:"emoji",inline:!0,group:"inline",selectable:!1,atom:!0,addAttributes(){return{emoji:{default:"\u{1F600}"}}},parseHTML(){return[{tag:"span[data-emoji]"}]},renderHTML({HTMLAttributes:e}){return["span",ue(e,{class:"emoji-big","data-emoji":e.emoji}),e.emoji]}});function tt({content:e="",maxLength:t=3e3,onChange:n,onSubmit:r,colorScheme:s="light"}){let[o,i]=Ce(0),[l,a]=Ce(!1),[c,m]=Ce(!1),[d,p]=Ce(!1),u=()=>{if(!f)return;let g=f.getHTML();f.getText().trim()&&(r?.(g),f.commands.clearContent(),f.commands.focus(),i(0),a(!1))},h=(g,v)=>v.key==="Enter"&&!v.shiftKey?(v.preventDefault(),u(),!0):v.key==="Enter"&&v.shiftKey?(v.preventDefault(),f?.commands.setHardBreak(),!0):!1,f=Si({extensions:[Ti,en,Zt,Ei,ki,wi,bi,Mi.configure({types:["heading","paragraph"]})],content:e,editorProps:{handleKeyDown:h},onUpdate:({editor:g})=>{let v=g.getHTML(),y=v.replace(/(<br\s*\/?>\s*){3,}/g,"<br><br>");if(y!==v){let{from:M,to:S}=g.state.selection;g.commands.setContent(y),g.commands.setTextSelection({from:Math.min(M,g.state.doc.content.size),to:Math.min(S,g.state.doc.content.size)});return}let k=g.getText(),E=k.trim().length>0;i(k.length),a(E),m(t?k.length>=t:!1),n?.(g.getHTML())},immediatelyRender:!1});return T.createElement(T.Fragment,null,T.createElement(j,{editor:f,w:"100%",className:"mrchat-richTextEditorContainer"},T.createElement(j.Content,null),T.createElement(j.Toolbar,{sticky:!0,stickyOffset:"var(--docs-header-height)"},T.createElement("div",{className:"mrchat-mainActionContainer"},T.createElement(et,{colorScheme:s,onSelect:g=>{f?.chain().focus().insertContent({type:"emoji",attrs:{emoji:g}}).run()},action:T.createElement(me,{radius:"lg",variant:"subtle","aria-label":"add",className:"mrchat-mainActionEmojiIcon"},T.createElement(yi,null))}),T.createElement(me,{radius:"lg",variant:"subtle","aria-label":"text_format",className:"mrchat-mainTextFormatIcon",onClick:()=>p(g=>!g)},T.createElement(xi,{stroke:1.7})),T.createElement(me,{radius:"lg",variant:"filled","aria-label":"send",className:"mrchat-mainSendMsgIcon",onClick:u,disabled:!l},T.createElement(tn,{size:18}))),T.createElement(me,{radius:"lg",variant:"filled","aria-label":"send",className:"mrchat-sm-mainSendMsgIcon",onClick:u,disabled:!l},T.createElement(tn,{size:18})),d&&T.createElement(T.Fragment,null,T.createElement(j.ControlsGroup,null,T.createElement(j.Bold,null),T.createElement(j.Italic,null),T.createElement(j.Underline,null),T.createElement(j.Strikethrough,null),T.createElement(j.Code,null),T.createElement(j.Highlight,null)),T.createElement(j.ControlsGroup,{className:"mrchat-secondRichTextEditorToolBar"},T.createElement(j.BulletList,null),T.createElement(j.OrderedList,null),T.createElement(ne,{trigger:"hover",openDelay:200},T.createElement(ne.Target,null,T.createElement(me,{variant:"outline",size:"md",className:"mrchat-customToolActionItem"},T.createElement(nn,{size:16,stroke:1.5}))),T.createElement(ne.Dropdown,null,T.createElement(ne.Item,{onClick:()=>f?.chain().focus().setTextAlign("left").run()},T.createElement(nn,{size:14})),T.createElement(ne.Item,{onClick:()=>f?.chain().focus().setTextAlign("center").run()},T.createElement(gi,{size:14})),T.createElement(ne.Item,{onClick:()=>f?.chain().focus().setTextAlign("right").run()},T.createElement(vi,{size:14})))),T.createElement(j.Link,null)),T.createElement(j.ControlsGroup,{className:"mrchat-secondRichTextEditorToolBar"},T.createElement(j.ClearFormatting,null)))),c&&T.createElement("div",{style:{textAlign:"right",color:"red",fontSize:12,marginTop:4}},"Character limit reached (",o,"/",t,")")))}import{useDispatch as zi,useSelector as Di}from"react-redux";import D,{useEffect as dn,useState as ot}from"react";import Oi from"dompurify";import rn,{useRef as Ie,useEffect as on}from"react";function sn({data:e,renderItem:t,loadMore:n,hasMore:r,scrollToBottomTrigger:s}){let o=Ie(null),i=Ie(!1),l=Ie(!0),a=Ie(0);on(()=>{let d=o.current;d&&setTimeout(()=>{d.scrollTop=d.scrollHeight},100)},[s]),on(()=>{let d=o.current;!d||!e.length||(l.current&&(d.scrollTop=d.scrollHeight,l.current=!1),a.current=e.length)},[e]);let c=()=>{let d=o.current;d&&d.scrollTop<50&&r&&!i.current&&m()},m=async()=>{let d=o.current;if(!d||i.current||!r)return;i.current=!0;let p=d.scrollHeight,u=d.scrollTop;await n(),setTimeout(()=>{let f=d.scrollHeight-p;d.scrollTop=u+f,i.current=!1},50)};return rn.createElement("div",{ref:o,onScroll:c,style:{overflowY:"auto",height:"100%",display:"flex",flexDirection:"column"}},e.map((d,p)=>rn.createElement("div",{key:d?.id||p},t(d,p))))}import R,{useEffect as Ci,useState as an}from"react";import{Avatar as Ii,Text as nt}from"@mantine/core";import{IconArrowLeft as Ai}from"@tabler/icons-react";function rt({opened:e,onClose:t,user:n,onDeleteMessages:r,onBlock:s}){let[o,i]=an(e),[l,a]=an(!1);Ci(()=>{e&&i(!0)},[e]);let c=()=>{i(!1),setTimeout(t,250)};return!e&&!o?null:R.createElement(R.Fragment,null,R.createElement("div",{className:"mrchat-overlay",onClick:c},R.createElement("div",{className:`mrchat-drawer ${o?"mrchat-open":"mrchat-close"}`,onClick:m=>m.stopPropagation()},R.createElement("div",{className:"mrchat-header"},R.createElement("div",{className:"mrchat-backBtn",onClick:c},R.createElement(Ai,{size:20})),R.createElement(nt,{fw:600},"Contact info")),R.createElement("div",{className:"mrchat-profileSection"},R.createElement(Ii,{src:n?.avatar,size:150,radius:"xl",style:{cursor:"pointer"},onClick:()=>n?.avatar?a(!0):{}}),R.createElement(nt,{fw:700,size:"lg",mt:"sm"},n?.displayName),R.createElement(nt,{size:"sm",c:"dimmed"},"@",n?.username)))),l&&R.createElement("div",{className:"mrchat-imagePreview",onClick:()=>a(!1)},R.createElement("img",{src:n?.avatar,alt:"profile"})))}function un({chatId:e,enableChat:t,senderDetails:n,receiverDetails:r,onChatInitialized:s,onBack:o,showBackButton:i,colorScheme:l}){let a=zi(),c=Di(S=>S.chat.messageList),[m,d]=ot(0),[p,u]=ot(0),[h,f]=ot(!1),g=c?.rows?.data||[],v=g.length===0,y=()=>{let S=c?.hasMore;if(!e||!S)return;let I=m+1;a(Le({chatId:e,page:I,userId:n?.userId})),d(I)};dn(()=>{e&&(d(0),a(Le({chatId:e,page:0,userId:n?.userId})))},[e]),dn(()=>{if(!n?.userId||!G())return;let S=W(n?.userId||"");if(!S)return;let I=C=>{C.chatId===e&&a(ze({id:Date.now(),chatId:C.chatId,message:C.message,sender:C.sender,recipient:C.recipient,type:C.type,status:C.status,createdAt:C.time}))};return S.on("newmessage",I),()=>{S.off("newmessage",I)}},[e,n?.userId]);let k=S=>{let I=W(n?.userId||""),C={message:S,sender:n?.userId,receiver:r?.userId,type:"text",username:n?.username};if(!c?.rows?.data?.length){I?.emit("initializeNewChat",{...C,senderUserDetails:{userId:n?.userId,username:n?.username,displayName:n?.displayName,avatar:n?.avatar},receiverUserDetails:{userId:r?.userId,username:r?.username,displayName:r?.displayName,avatar:r?.avatar}},L=>{if(L?.status==="success"){let{data:A}=L;a(ie({id:Date.now(),chatId:A.chatId,message:A.message,sender:A.sender,recipient:A.recipient,type:A.type,status:A.status,createdAt:new Date(A.time).getTime(),updatedAt:new Date(A.time).getTime(),userId:r?.userId,username:r?.username,displayName:r?.displayName,avatar:r?.avatar})),a(ze({id:Date.now(),chatId:A.chatId,message:A.message,sender:A.sender,recipient:A.recipient,type:A.type,status:A.status,createdAt:Date.now()})),s?.(A)}else console.log("Failed to initialize chat",L?.error)});return}I?.emit("privatemessage",{...C,chatId:e}),u(L=>L+1)},E=()=>{c.hasMore&&y()},M=()=>{!e||!n?.userId||a(pt({chatId:e,userId:n?.userId}))};return D.createElement("div",{className:"mrchat-mainArea"},D.createElement("div",{className:"mrchat-chatHeader"},i&&o&&D.createElement(Pi,{variant:"subtle",className:"mrchat-backButton",onClick:o},D.createElement(Ni,{size:20})),r&&D.createElement(D.Fragment,null,D.createElement("div",{className:"mrchat-receiverInfo",onClick:()=>f(!0)},r?.avatar?D.createElement(ln,{src:r.avatar,size:36,radius:"xl"}):D.createElement(ln,{key:r?.displayName||r?.username,name:r?.displayName||r?.username,color:"initials"}),D.createElement(cn,{fw:600,size:"md"},r?.displayName||r?.username)))),D.createElement("div",{className:"mrchat-messageArea"},v?D.createElement("div",{className:"mrchat-emptyState"},D.createElement("div",{className:"mrchat-encryptionMinimal"},D.createElement(Li,{size:20,stroke:1.8}),D.createElement(cn,{className:"mrchat-encryptionText",size:"md"},"End-to-end encrypted"))):D.createElement(sn,{data:g,hasMore:c?.hasMore,loadMore:E,scrollToBottomTrigger:p,renderItem:(S,I)=>{let C=S?.sender===n?.userId,z=new Date(S?.createdAt),L=g[I-1],A=I===0||new Date(L?.createdAt).toDateString()!==z.toDateString(),F=new Date,B=new Date;B.setDate(F.getDate()-1);let H=z.toDateString()===F.toDateString(),$=z.toDateString()===B.toDateString(),J="";H?J="Today":$?J="Yesterday":J=z.toLocaleDateString(void 0,{weekday:"short",month:"short",day:"numeric"});let pe=z.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit",hour12:!1});return D.createElement("div",{key:S?.id+"_"+I},A&&D.createElement("div",{className:"mrchat-dateSeparator"},J),D.createElement("div",{style:{borderRadius:S.sender===n?.userId?"16px 16px 1px 16px":"16px 16px 16px 1px"},className:`mrchat-messageBubble ${C?"mrchat-outgoing":"mrchat-incoming"}`},D.createElement("div",{className:"mrchat-messageContent",dangerouslySetInnerHTML:{__html:Oi.sanitize(S?.message)}}),D.createElement("div",{className:"mrchat-messageTime"},pe)))}})),(e||t)&&D.createElement("div",{className:"mrchat-inputBar"},D.createElement(tt,{onSubmit:k,colorScheme:l})),D.createElement(rt,{opened:h,onClose:()=>f(!1),user:{avatar:r?.avatar,username:r?.username,displayName:r?.displayName},onDeleteMessages:()=>{M()},onBlock:()=>{console.log("block user")}}))}import{useDispatch as Wi,useSelector as Ki}from"react-redux";import N,{useEffect as Y,useState as V}from"react";import Bi from"react";import{Virtuoso as $i}from"react-virtuoso";function mn({data:e,itemContent:t,height:n="100%",startReached:r,endReached:s,...o}){return Bi.createElement($i,{style:{height:n},data:e,startReached:r,endReached:s,itemContent:(i,l)=>t(i,l),...o})}import Ji from"dompurify";var pn=e=>{if(!e)return"";let t=new Date(e),n=new Date,r=new Date;r.setDate(n.getDate()-1);let s=t.toDateString()===n.toDateString(),o=t.toDateString()===r.toDateString(),i=t.toLocaleTimeString("en-GB",{hour:"2-digit",minute:"2-digit",hour12:!1});return s?i:o?"Yesterday":t.toLocaleDateString(void 0,{day:"numeric",month:"short"})};function hn({currentUser:e,onSearchUsers:t,colorScheme:n,openChatByUserDetails:r,handleCallAfterOpenChat:s,isLoading:o=!1}){let[i,{open:l,close:a}]=Vi(!1),c=Wi(),m=Ki(b=>b.chat.messagedUserList),[d,p]=V(0),[u,h]=V(""),[f,g]=V(!1),[v,y]=V(""),[k,E]=V(),[M,S]=V(),[I,C]=V([]),[z,L]=V(!1),[A,F]=V(e),[B,H]=V(!1),[$,J]=V(!1);Y(()=>{e?.userId&&F(e)},[e?.userId]),Y(()=>{e?.userId&&c(Ne({userId:e.userId,page:0}))},[e?.userId,c]),Y(()=>{if(typeof window>"u")return;let b=window.matchMedia("(max-width: 599px)"),w=P=>{let U="matches"in P?P.matches:b.matches;H(U),U||J(!1)};return w(b),b.addEventListener?b.addEventListener("change",w):b.addListener(w),()=>{b.removeEventListener?b.removeEventListener("change",w):b.removeListener(w)}},[]);let pe=(b,w)=>{let P=b;if(!P?.userId)return;let U=m?.rows?.data?.find(fe=>fe.userId===P.userId);if(U){Ae(U),a(),y(""),w&&w();return}c(ie({userId:P?.userId,username:P?.username,displayName:P?.displayName,avatar:P?.avatar})),E(P),a(),y(""),c(ae()),h(""),g(!0),B&&J(!0),w&&w()};Y(()=>{if(!A?.userId)return;let b=W(A.userId);b&&(b.connected||b.connect())},[A?.userId]),Y(()=>{if(!A?.userId)return;let b=W(A.userId);if(!b)return;let w=P=>{P.sender!==A.userId&&c(ie({message:P.message,chatId:P.chatId,userId:P.sender,username:P.userDetails.username,displayName:P.userDetails.displayName,avatar:P.userDetails.avatar}))};return b.on("newChat",w),()=>{b.off("newChat",w)}},[c,A?.userId]),Y(()=>{if(!A?.userId)return;let b=W(A?.userId||"");if(!b)return;let w=P=>{if(!m?.rows?.data)return;let U=m.rows.data.map(X=>{if(X.chatId===P.chatId){let Mn=P.chatId===u;return{...X,message:P.message,updatedAt:new Date().toISOString(),unreadCount:Mn?0:(X.unreadCount||0)+1}}return X}),fe=U.findIndex(X=>X.chatId===P.chatId);if(fe!==-1){let X=U.splice(fe,1)[0];U.unshift(X)}console.log("Updated",U,P),c(se({...m,rows:{...m.rows,data:U}}))};return b.on("newMessageNotification",w),()=>{b.off("newMessageNotification",w)}},[m,A?.userId]);let yn=()=>{if(!m?.hasMore||!e?.userId)return;let b=d+1;p(b),c(Ne({userId:e.userId,page:b}))},Ae=b=>{if(!A?.userId)return;let w=W(A.userId);if(!w)return;E({userId:b.userId,username:b.username,displayName:b.displayName,avatar:b.avatar}),w.emit("joinChat",{chatId:b.chatId}),h(b?.chatId||""),c(ae());let P=m.rows.data.map(U=>U.chatId===b.chatId?{...U,unreadCount:0}:U);B&&J(!0),c(se({...m,rows:{...m.rows,data:P}}))};Y(()=>{r&&pe(r,s)},[r?.userId]);let xn=b=>{y(b)},bn=()=>{J(!1)};Y(()=>{if(!v.trim()){C([]),L(!1);return}if(!t){C([]),L(!1);return}let b=!1,w=setTimeout(async()=>{try{L(!0),C([]);let P=await Promise.resolve(t(v));if(b)return;C(P)}finally{b||L(!1)}},400);return()=>{b=!0,clearTimeout(w)}},[v,t]);let wn=b=>{let w=document.createElement("div");return w.innerHTML=b,w.textContent||""},kn=I.map(b=>({value:b.username,label:b.displayName||b.username,user:b}));return N.createElement("div",{className:"mrchat-chatWrapper"},o&&N.createElement("div",{className:"mrchat-loadingOverlay"},N.createElement(fn,{size:"md"})),N.createElement(Hi,{opened:i,onClose:()=>{a(),y(""),C([]),L(!1)},title:"Search User",centered:!0,withCloseButton:!0},N.createElement(Ui,{mb:12,label:"Search User to Chat",placeholder:"Type username to search...",limit:20,data:kn,value:v,onChange:xn,rightSection:z?N.createElement(fn,{size:"xs"}):void 0,rightSectionWidth:28,onOptionSubmit:b=>{let w=I.find(P=>P.username===b);w&&(y(""),S(w),C([]),L(!1))},renderOption:({option:b})=>{let w=b.user;return N.createElement(Ri,{gap:"sm"},N.createElement(st,{src:w.avatar,size:36,radius:"xl"}),N.createElement("div",null,N.createElement(re,{size:"sm"},w.displayName||w.username),w.displayName&&N.createElement(re,{size:"xs",opacity:.5},"@",w.username)))}}),N.createElement(_i,{fullWidth:!0,onClick:()=>pe(M),disabled:!M?.username},"Start Chat")),N.createElement("div",{className:"mrchat-chatContainer"},N.createElement("div",{className:"mrchat-sidebar "+(B&&$?"mrchat-hiddenOnMobile":"")},N.createElement("div",{className:"mrchat-sidebarTop"},N.createElement("div",{className:"mrchat-topBar"},N.createElement(re,{size:"xs",c:"dimmed",mt:"sm",mb:"xs",ml:12},"All Messages"),N.createElement("div",{className:"mrchat-topActions"},N.createElement(ji,{variant:"subtle",onClick:()=>{S(null),y(""),C([]),l()},radius:"lg"},N.createElement(Fi,{size:20,stroke:3}))))),N.createElement("div",{className:"mrchat-scrollWrapper"},N.createElement(mn,{data:m?.rows?.data||[],endReached:yn,itemContent:(b,w)=>{let P=w.chatId===u;return N.createElement("div",{className:`mrchat-chatItem ${P?"mrchat-activeChatItem":""}`,onClick:()=>{P||Ae(w)}},w.avatar?N.createElement(st,{src:w.avatar,size:36,radius:"xl"}):N.createElement(st,{key:w.displayName||w.username,name:w.displayName||w.username,color:"initials"}),N.createElement("div",{className:"mrchat-chatInfo"},N.createElement(re,{className:"mrchat-chatLabelItem",truncate:!0},w.displayName||w.username),w.unreadCount>0&&N.createElement("div",{className:"mrchat-unreadBadge"},w.unreadCount||10),N.createElement("div",{className:"mrchat-messagePreview"},N.createElement(re,{truncate:!0,size:"xs",c:"dimmed",style:{maxWidth:150},className:"mrchat-messagePreviewContent"},wn(Ji.sanitize(w.message))),N.createElement(re,{size:"xs",c:"dimmed",className:"mrchat-messagePreviewTime"},pn(w.updatedAt||w.createdAt)))))}}))),N.createElement("div",{className:"mrchat-mainAreaWrapper "+(B&&!$?"mrchat-hiddenOnMobile":"")},N.createElement(un,{chatId:u,enableChat:f,senderDetails:A,receiverDetails:k,onBack:bn,showBackButton:B,onChatInitialized:b=>{Ae({chatId:b.chatId,userId:k?.userId,username:k?.username,displayName:k?.displayName,avatar:k?.avatar})},colorScheme:n}))))}import{useEffect as qi}from"react";import{useDispatch as Xi}from"react-redux";function gn(){let e=Xi();return qi(()=>()=>{e(ft())},[e]),null}function vn({colorScheme:e,primaryColor:t="customBrand",darkColor:n,authorization:r,openChatByUserDetails:s,handleCallAfterOpenChat:o,isLoading:i=!1,...l}){let a=ct(t);return Gi(()=>{typeof window>"u"||dt(r||"")},[r]),Yi(()=>{if(typeof document>"u"||!n)return;let c=document.body.style.backgroundColor;return document.body.style.backgroundColor=e==="dark"?n:"",document.documentElement.style.setProperty("--mantine-color-body",e==="dark"?n:""),()=>{document.body.style.backgroundColor=c,document.documentElement.style.removeProperty("--mantine-color-body")}},[e,n]),oe.createElement(vt,null,oe.createElement(bt,null,oe.createElement(gn,null),oe.createElement(Qi,{defaultColorScheme:e??"light",forceColorScheme:e,theme:a},oe.createElement(Zi,null),oe.createElement(hn,{handleCallAfterOpenChat:o,colorScheme:e,openChatByUserDetails:s,isLoading:i,...l}))))}export{vn as MrChat};
|