react-mail-inbox 1.0.10 → 1.0.13

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/context/ThemeContext.tsx","../src/Components/GmailWrapper/EmailContext.tsx","../src/utils/toolbar.ts","../src/Components/core/Icon/helper.ts","../src/Components/core/Icon/index.tsx","../src/Components/core/MyPopup/index.tsx","../src/utils/core.ts","../src/Components/core/FontSelect/index.tsx","../src/Components/core/FontSize/index.tsx","../src/Components/core/ColorPicker/index.tsx","../src/Components/core/AlignmentSelect/index.tsx","../src/hook/useOnClickListener.tsx","../src/Components/core/FloatingLinkEditor/index.tsx","../src/hook/useFileUpload.ts","../src/Components/core/FileUploader/index.tsx","../src/Components/core/FileUploader/FilePreview.tsx","../src/Components/Editor/Toolbar/index.tsx","../src/Themes/lexicalEditortheme.ts","../src/plugins/SetInitialHTML.tsx","../src/plugins/OnChangePlugin.tsx","../src/Components/Editor/EditorWrapper/index.tsx","../src/utils/common.ts","../src/Components/GmailWrapper/ReceiptsHeading/InputWIthDropDown.tsx","../src/Components/GmailWrapper/ReceiptsHeading/InputForEmail.tsx","../src/Components/GmailWrapper/ReceiptsHeading/index.tsx","../src/Components/GmailWrapper/GmailHeading/index.tsx","../src/Components/GmailWrapper/GmailWrapperContent.tsx","../src/Components/GmailWrapper/index.tsx","../src/Components/GmailInbox/index.tsx","../src/index.tsx"],"names":["ThemeContext","createContext","useTheme","context","useContext","ThemeProvider","children","initialTheme","onThemeChange","theme","setTheme","useState","useEffect","toggleTheme","prev","jsx","EmailContext","useEmailContext","EmailProvider","emails","setEmails","isReply","setIsReply","subject","setSubject","showCC","setShowCC","showBCC","setShowBCC","attachments","setAttachments","eventTypes","toolbarComponentType","pluginList","icons","MdUndo","MdRedo","MdFormatBold","MdFormatItalic","MdFormatUnderlined","MdTextFormat","MdFormatAlignLeft","MdFormatAlignRight","MdFormatAlignCenter","MdFormatListBulleted","MdFormatListNumbered","MdFormatIndentDecrease","MdOutlineFormatIndentIncrease","MdFormatClear","MdStrikethroughS","MdFormatQuote","MdArrowDropDown","MdAttachFile","MdLink","MdImage","MdCheck","MdTextFields","MdEdit","MdClose","helper_default","Icon","name","size","color","className","IconComponent","Icon_default","MyPopup","trigger","popUpDirection","popupRef","useRef","handleClose","Popup","close","MyPopup_default","fontOptions","OPTIONS","GREYS","ACCENTS","PALETTE","core_default","FontSelect","value","onChange","jsxs","o","font","FontSizePicker","Swatch","selected","onClick","label","ColorPicker","update","which","c","col","r","AlignmentSelect","onSelect","key","opt","active","LowPriority","rgbToHex","rgb","match","g","b","a","x","hex","useOnClickListener","editor","useLexicalComposerContext","blockType","setBlockType","selectedEventTypes","setSelectedEventTypes","isLink","setIsLink","updateToolbar","useCallback","selection","$getSelection","newState","$isRangeSelection","anchorNode","element","elementKey","elementDOM","$isListNode","parentList","$getNearestNodeOfType","ListNode","type","node","getSelectedNode","parent","$isLinkNode","textNodeDOM","parentElement","styleElement","computedStyle","fontFamily","firstFont","fontSize","fontSizeNum","backgroundColor","hexColor","hexBgColor","textAlign","mergeRegister","editorState","SELECTION_CHANGE_COMMAND","event","FORMAT_TEXT_COMMAND","FORMAT_ELEMENT_COMMAND","UNDO_COMMAND","REDO_COMMAND","formatNumberedList","formatBulletList","addIndent","removeIndent","applyFontColor","applyFontFamily","applyFontSize","insertLink","INDENT_CONTENT_COMMAND","$patchStyleText","selectedFontSize","i","colorObj","TOGGLE_LINK_COMMAND","OUTDENT_CONTENT_COMMAND","INSERT_UNORDERED_LIST_COMMAND","REMOVE_LIST_COMMAND","INSERT_ORDERED_LIST_COMMAND","anchor","focus","focusNode","$isAtNodeEnd","useOnClickListener_default","FloatingLinkEditor","editorRef","inputRef","mouseDownRef","linkUrl","setLinkUrl","isEditMode","setEditMode","lastSelection","setLastSelection","updateLinkEditor","nativeSelection","editorElem","activeElement","rootElement","domRange","rect","inner","positionEditorElement","e","editorWidth","editorHeight","viewportWidth","viewportHeight","top","left","FloatingLinkEditor_default","FILE_UPLOAD_ERROR","MAX_NUMBER_OF_FILES_ALLOWED","MAX_SIZE_OF_FILE_ALLOWED_MB","getId","getMBs","bytes","kb","mb","useFileUpload","accept","maxSize","maxFiles","multiple","isDisabled","replaceAfterUpload","files","handleFileChange","isFileDialogOpen","setIsFileDialogOpen","fileUploaded","setFileUploaded","rejectedFiles","setRejectedFile","getErrorText","errorCode","getRootProps","getInputProps","isDragActive","open","useDropzone","_acceptedFiles","fileRejections","validFiles","file","blob","heic2any","blobArray","convertedFile","err","msg","newFiles","mappedRejections","item","readableErrors","fileName","ext","removeFile","uuid","clearRejectedFiles","f","FileUploader","openFileDialog","FileUploader_default","FilePreview","index","onRemove","onView","sizeBytes","urlFromProp","url","useMemo","formatSizeShort","handleView","handleRemove","getToolbarComponent","plugin","state","setState","getComponent","setToggle","toggle","option","ToolBar","rightChildren","leftChildren","updatedFiles","_file","createPortal","Toolbar_default","lexicalEditorTheme","lexicalEditortheme_default","SetInitialHTML","initialHTML","dom","nodes","$generateNodesFromDOM","root","$getRoot","SetInitialHTML_default","OnChangePlugin","html","$generateHtmlFromNodes","onError","error","EditorWrapper","placeholder","minHeight","editorChildren","isEditorVisible","LexicalComposer","LinkNode","ListItemNode","AutoLinkNode","RichTextPlugin","ContentEditable","LexicalErrorBoundary","HistoryPlugin","AutoFocusPlugin","ListPlugin","LinkPlugin","EditorWrapper_default","isValidEmail","email","InputWithDropDown","fetchOptions","currentEmail","setCurrentEmail","popupOpen","setPopupOpen","selectedIndex","setSelectedIndex","options","setOptions","loading","setLoading","emailRefs","optionRefs","data","focusInput","addEmail","handleInputKeyDown","lastIdx","lastChip","removeEmailAt","next","prevIdx","prevChip","Fragment","idx","el","ev","val","InputWIthDropDown_default","InputForEmail","needCCAndBCC","handleChange","InputForEmail_default","ReceiptsHeading","fetchEmailOptions","setOpen","wrapperRef","wrapper","handleFocusIn","handleFocusOut","parts","ReceiptsHeading_default","GmailHeading","GmailHeading_default","GmailWrapperContent","initialData","bodyHTML","setBodyHTML","emailData","setEmailData","handleEditorChange","GmailWrapperContent_default","GmailWrapper","GmailWrapper_default","GmailInbox","GmailInbox_default","index_default"],"mappings":"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","file":"index.mjs","sourcesContent":["import React, { createContext, useContext, useState, useEffect } from \"react\";\nimport type { ReactNode } from \"react\";\n\nexport type Theme = \"light\" | \"dark\";\n\ninterface ThemeContextType {\n theme: Theme;\n toggleTheme: () => void;\n}\n\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined);\n\nexport const useTheme = () => {\n const context = useContext(ThemeContext);\n if (!context) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n return context;\n};\n\ninterface ThemeProviderProps {\n children: ReactNode;\n initialTheme?: Theme;\n onThemeChange?: (theme: Theme) => void;\n}\n\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({\n children,\n initialTheme = \"dark\",\n onThemeChange\n}) => {\n const [theme, setTheme] = useState<Theme>(initialTheme);\n\n useEffect(() => {\n // Call the callback if provided\n if (onThemeChange) {\n onThemeChange(theme);\n }\n }, [theme, onThemeChange]);\n\n const toggleTheme = () => {\n setTheme((prev) => (prev === \"light\" ? \"dark\" : \"light\"));\n };\n\n return (\n <ThemeContext.Provider value={{ theme, toggleTheme }}>\n {children}\n </ThemeContext.Provider>\n );\n};\n","import {\n createContext,\n useContext,\n useState,\n type ReactNode,\n useEffect,\n} from \"react\";\n\nexport interface EmailOption {\n name: string;\n email: string;\n}\n\ninterface Email {\n to: EmailOption[];\n cc: EmailOption[];\n bcc: EmailOption[];\n}\n\ninterface EmailContextType {\n emails: Email;\n setEmails: React.Dispatch<React.SetStateAction<Email>>;\n subject: string;\n setSubject: React.Dispatch<React.SetStateAction<string>>;\n showCC: boolean;\n setShowCC: React.Dispatch<React.SetStateAction<boolean>>;\n showBCC: boolean;\n setShowBCC: React.Dispatch<React.SetStateAction<boolean>>;\n attachments: File[];\n setAttachments: React.Dispatch<React.SetStateAction<File[]>>;\n isReply: boolean;\n setIsReply: React.Dispatch<React.SetStateAction<boolean>>;\n}\n\nconst EmailContext = createContext<EmailContextType | undefined>(undefined);\n\nexport const useEmailContext = () => {\n const context = useContext(EmailContext);\n if (!context) {\n throw new Error(\"useEmailContext must be used within an EmailProvider\");\n }\n return context;\n};\n\ninterface EmailProviderProps {\n children: ReactNode;\n}\n\nexport const EmailProvider: React.FC<EmailProviderProps> = ({ children }) => {\n const [emails, setEmails] = useState<Email>({\n to: [],\n cc: [],\n bcc: [],\n });\n const [isReply, setIsReply] = useState(false);\n const [subject, setSubject] = useState(\"\");\n const [showCC, setShowCC] = useState(false);\n const [showBCC, setShowBCC] = useState(false);\n const [attachments, setAttachments] = useState<File[]>([]);\n\n // Log emails whenever they change\n useEffect(() => {\n console.log(\"EmailProvider emails updated:\", emails);\n }, [emails]);\n\n return (\n <EmailContext.Provider\n value={{\n emails,\n setEmails,\n subject,\n setSubject,\n showCC,\n setShowCC,\n showBCC,\n setShowBCC,\n attachments,\n setAttachments,\n isReply,\n setIsReply,\n }}>\n {children}\n </EmailContext.Provider>\n );\n};\n","export const eventTypes = {\n sizes: {\n base: \"sizes\",\n options: {\n normal: \"normal\",\n small: \"small\",\n large: \"large\",\n huge: \"huge\",\n },\n },\n quote: \"quote\",\n undo: \"undo\",\n redo: \"redo\",\n bold: \"bold\",\n italic: \"italic\",\n underline: \"underline\",\n color: {\n base: \"colors\",\n options: { text: \"color\", background: \"background\" },\n },\n code: \"code\",\n image: \"image\",\n link: \"link\",\n list: \"list\",\n listNumber: \"listNumber\",\n listBullet: \"listBullet\",\n align: {\n base: \"align\",\n options: { left: \"alignLeft\", center: \"alignCenter\", right: \"alignRight\" },\n },\n indent: \"indent\",\n indentDecrease: \"indentDecrease\",\n removeFormat: \"removeFormat\",\n strike: \"strike\",\n attachFile: \"attachFile\",\n insertPhoto: \"insertPhoto\",\n fontSize: \"fontSize\",\n fontFamily: \"fontFamily\",\n};\nexport const toolbarComponentType = {\n styling: \"styling\",\n divider: \"divider\",\n component: \"component\",\n};\n\nexport const pluginList = [\n {\n type: toolbarComponentType[\"styling\"],\n icon: \"Styling\",\n id: \"4bc66ea9-2e35-4a7b-a674-be7e4ee163c5\",\n options: [\n {\n name: eventTypes[\"undo\"],\n type: toolbarComponentType[\"component\"],\n icon: \"Undo\",\n id: \"29cf5eb3-37cd-482f-9a15-c358faf19cc2\",\n },\n {\n name: eventTypes[\"redo\"],\n type: toolbarComponentType[\"component\"],\n icon: \"Redo\",\n id: \"8744f7ab-5818-46ce-9417-2fec87123afe\",\n },\n {\n type: toolbarComponentType[\"divider\"],\n id: \"ed0104fd-3507-43f6-80c1-813fbdf04479\",\n },\n {\n name: eventTypes[\"fontFamily\"],\n type: toolbarComponentType[\"component\"],\n id: \"1c12d7e2-aa6a-42b4-b25c-b55fe3bcf524\",\n },\n {\n type: toolbarComponentType[\"divider\"],\n id: \"d0f67d01-0731-411a-b448-e1dca47014f4\",\n },\n {\n name: eventTypes[\"fontSize\"],\n type: toolbarComponentType[\"component\"],\n id: \"82e31b62-5441-4052-887c-faa02d0b7075\",\n },\n {\n type: toolbarComponentType[\"divider\"],\n id: \"2e3558e4-3ad4-422b-8502-ea3c58fb8c2e\",\n },\n {\n name: eventTypes[\"bold\"],\n type: toolbarComponentType[\"component\"],\n icon: \"Bold\",\n id: \"ac2b5b54-7323-44a4-bc6d-8bae6e48efe2\",\n },\n {\n name: eventTypes[\"italic\"],\n type: toolbarComponentType[\"component\"],\n icon: \"Italic\",\n id: \"6a927c2a-2230-4dc7-af71-47fbe9fb784d\",\n },\n {\n name: eventTypes[\"underline\"],\n type: toolbarComponentType[\"component\"],\n icon: \"Underline\",\n id: \"f07b3a6f-ffaa-4153-beae-79a36acb6a08\",\n },\n {\n name: eventTypes[\"color\"].base,\n type: toolbarComponentType[\"component\"],\n icon: \"Color\",\n id: \"e14ec25f-3dd3-4ed5-b33a-a033684d248b\",\n },\n {\n type: toolbarComponentType[\"divider\"],\n id: \"93e60297-206f-4f31-bc29-11daff2052bd\",\n },\n {\n name: eventTypes.align.base,\n type: toolbarComponentType[\"component\"],\n id: \"30da93ea-efa6-4642-bfa5-28fd4dc9c5b3\",\n },\n {\n type: toolbarComponentType[\"divider\"],\n id: \"9bad0563-6118-4855-9286-402bf98e00ad\",\n },\n {\n name: eventTypes[\"listNumber\"],\n type: toolbarComponentType[\"component\"],\n icon: \"OrderedList\",\n id: \"d37865e1-ff54-4118-a5cc-fa147d222471\",\n },\n {\n name: eventTypes[\"listBullet\"],\n type: toolbarComponentType[\"component\"],\n icon: \"UnOrderedList\",\n id: \"ed77e7c9-b89c-41c5-a749-e68ea0b30497\",\n },\n {\n type: toolbarComponentType[\"divider\"],\n id: \"e5ecd77b-44cc-42fe-badb-48cadf3ddfb1\",\n },\n {\n name: eventTypes[\"indentDecrease\"],\n type: toolbarComponentType[\"component\"],\n icon: \"IndentLess\",\n id: \"2dc6a5e4-b1b5-47d1-ac2f-5d0becb02d33\",\n },\n {\n name: eventTypes[\"indent\"],\n type: toolbarComponentType[\"component\"],\n icon: \"IndentMore\",\n id: \"6903a3d1-a83f-4bc6-9bd9-f673feffe84f\",\n },\n ],\n },\n {\n type: \"component\",\n name: eventTypes[\"attachFile\"],\n icon: \"Attach\",\n id: \"f43a284e-113e-4095-b001-9d00a1dddc4c\",\n },\n {\n type: \"component\",\n name: eventTypes[\"link\"],\n icon: \"Link\",\n id: \"580db61e-7939-4efe-914c-304b271998ec\",\n },\n // {\n // type: \"component\",\n // name: eventTypes[\"insertPhoto\"],\n // icon: \"Image\",\n // id: \"d032ba91-3e78-4ed5-8561-033cd1c49cae\",\n // },\n];\n","import {\n MdArrowDropDown,\n MdAttachFile,\n MdCheck,\n MdClose,\n MdEdit,\n MdFormatAlignCenter,\n MdFormatAlignLeft,\n MdFormatAlignRight,\n MdFormatBold,\n MdFormatClear,\n MdFormatIndentDecrease,\n MdFormatItalic,\n MdFormatListBulleted,\n MdFormatListNumbered,\n MdFormatQuote,\n MdFormatUnderlined,\n MdImage,\n MdLink,\n MdOutlineFormatIndentIncrease,\n MdRedo,\n MdStrikethroughS,\n MdTextFields,\n MdTextFormat,\n MdUndo,\n} from \"react-icons/md\";\n\nconst icons = {\n Undo: MdUndo,\n Redo: MdRedo,\n Bold: MdFormatBold,\n Italic: MdFormatItalic,\n Underline: MdFormatUnderlined,\n Color: MdTextFormat,\n LeftAlign: MdFormatAlignLeft,\n RightAlign: MdFormatAlignRight,\n CenterAlign: MdFormatAlignCenter,\n UnOrderedList: MdFormatListBulleted,\n OrderedList: MdFormatListNumbered,\n IndentLess: MdFormatIndentDecrease,\n IndentMore: MdOutlineFormatIndentIncrease,\n RemoveFormat: MdFormatClear,\n StrikeThrough: MdStrikethroughS,\n CodeQuote: MdFormatQuote,\n DownArrow: MdArrowDropDown,\n Styling: MdTextFormat,\n Attach: MdAttachFile,\n Link: MdLink,\n Image: MdImage,\n Check: MdCheck,\n TextFields: MdTextFields,\n Edit: MdEdit,\n Close: MdClose,\n};\n\nexport default icons;\n","// src/components/Icon.tsx\nimport React from \"react\";\nimport icons from \"./helper\";\n\ntype IconName =\n | \"Undo\"\n | \"Redo\"\n | \"Bold\"\n | \"Italic\"\n | \"Underline\"\n | \"Color\"\n | \"LeftAlign\"\n | \"RightAlign\"\n | \"CenterAlign\"\n | \"UnOrderedList\"\n | \"OrderedList\"\n | \"IndentLess\"\n | \"IndentMore\"\n | \"RemoveFormat\"\n | \"StrikeThrough\"\n | \"CodeQuote\"\n | \"DownArrow\"\n | \"Styling\"\n | \"Attach\"\n | \"Link\"\n | \"Image\"\n | \"Check\"\n | \"TextFields\"\n | \"Edit\"\n | \"Close\";\n\ninterface IconProps {\n name: IconName;\n size?: number;\n color?: string;\n className?: string;\n}\n\nconst Icon: React.FC<IconProps> = ({ name, size = 24, color, className }) => {\n // ✅ Map each icon to a name\n\n const IconComponent = icons[name];\n\n if (!IconComponent) {\n console.warn(`Icon \"${name}\" not found.`);\n return null;\n }\n\n return <IconComponent size={size} color={color} className={className} />;\n};\n\nexport default Icon;\n","import React, { useRef } from \"react\";\nimport Popup from \"reactjs-popup\";\nimport type { PopupPosition } from \"reactjs-popup/dist/types\";\n\ninterface MyPopupProps {\n trigger: React.ReactElement;\n children: ((args: { close: () => void }) => React.ReactNode);\n popUpDirection?: PopupPosition | PopupPosition[];\n}\n\nconst MyPopup: React.FC<MyPopupProps> = ({\n trigger,\n children,\n popUpDirection = \"top center\",\n}) => {\n const popupRef = useRef<any>(null);\n\n const handleClose = () => {\n if (popupRef.current && typeof popupRef.current.close === \"function\") {\n popupRef.current.close();\n }\n };\n\n const renderContent = (close: () => void) => {\n const combinedClose = () => {\n close?.();\n handleClose();\n };\n return children({ close: combinedClose });\n };\n\n return (\n <Popup\n ref={popupRef}\n trigger={trigger}\n closeOnDocumentClick\n repositionOnResize\n position={popUpDirection}\n className=\"filter-popup\">\n {renderContent as any}\n </Popup>\n );\n};\n\nexport default MyPopup;\n","const fontOptions = [\n {\n label: \"Sans Serif\",\n value: \"sans-serif\",\n style: { fontFamily: \"sans-serif\" },\n },\n { label: \"Serif\", value: \"serif\", style: { fontFamily: \"serif\" } },\n {\n label: \"Fixed Width\",\n value: \"monospace\",\n style: { fontFamily: \"monospace\" },\n },\n {\n label: \"Wide\",\n value: \"wide\",\n style: { fontWeight: \"bold\", letterSpacing: \"0.05em\" },\n },\n { label: \"Narrow\", value: \"narrow\", style: { fontStretch: \"condensed\" } },\n {\n label: \"Comic Sans MS\",\n value: \"Comic Sans MS\",\n style: { fontFamily: \"Comic Sans MS, cursive\" },\n },\n {\n label: \"Garamond\",\n value: \"Garamond\",\n style: { fontFamily: \"Garamond, serif\" },\n },\n {\n label: \"Georgia\",\n value: \"Georgia\",\n style: { fontFamily: \"Georgia, serif\" },\n },\n {\n label: \"Tahoma\",\n value: \"Tahoma\",\n style: { fontFamily: \"Tahoma, sans-serif\" },\n },\n {\n label: \"Trebuchet MS\",\n value: \"Trebuchet MS\",\n style: { fontFamily: \"Trebuchet MS, sans-serif\" },\n },\n {\n label: \"Verdana\",\n value: \"Verdana\",\n style: { fontFamily: \"Verdana, sans-serif\" },\n },\n];\nexport const OPTIONS = [\n { key: \"small\", label: \"Small\", sizePx: 12 },\n { key: \"normal\", label: \"Normal\", sizePx: 18 },\n { key: \"large\", label: \"Large\", sizePx: 28 },\n { key: \"huge\", label: \"Huge\", sizePx: 56 },\n];\nexport const GREYS = [\n \"#000000\",\n \"#3a3a3a\",\n \"#5a5a5a\",\n \"#8a8a8a\",\n \"#bfbfbf\",\n \"#dedede\",\n \"#f3f3f3\",\n \"#ffffff\",\n];\nexport const ACCENTS = [\n \"#e53935\",\n \"#fb8c00\",\n \"#ffee58\",\n \"#66ff66\",\n \"#4dd0e1\",\n \"#1e88e5\",\n \"#9c27b0\",\n \"#ff3bd6\",\n];\n// a multi-row palette (example block similar to screenshot)\nexport const PALETTE = [\n [\n \"#f7d7d7\",\n \"#f3d0c8\",\n \"#f0c5c5\",\n \"#efc9d8\",\n \"#f7e6e9\",\n \"#f3edf7\",\n \"#f0eaf6\",\n \"#f8f0f6\",\n ],\n [\n \"#f0b9b9\",\n \"#f0d4c2\",\n \"#e6f0d2\",\n \"#e4f7e8\",\n \"#d8eef8\",\n \"#dbe1ff\",\n \"#e9d9f6\",\n \"#f5d9f7\",\n ],\n [\n \"#e69a9a\",\n \"#e6caa3\",\n \"#d7e6b0\",\n \"#c8f0e6\",\n \"#bfe3ff\",\n \"#cbd8ff\",\n \"#d6c3f3\",\n \"#f0c2f3\",\n ],\n [\n \"#d16464\",\n \"#d09a6a\",\n \"#a8cf7b\",\n \"#7fd6c0\",\n \"#73b7ff\",\n \"#7a9cff\",\n \"#b483f1\",\n \"#f08cf2\",\n ],\n [\n \"#b23a3a\",\n \"#b26a3a\",\n \"#7aa04a\",\n \"#3fb092\",\n \"#296f94\",\n \"#2a4177\",\n \"#452a68\",\n \"#6e1f4d\",\n ],\n [\n \"#7a1d1d\",\n \"#7a4a1e\",\n \"#556a2a\",\n \"#195b47\",\n \"#123f5a\",\n \"#182840\",\n \"#2a1836\",\n \"#3a1026\",\n ],\n];\nexport default fontOptions;\n","import MyPopup from \"../MyPopup\";\nimport fontOptions from \"../../../utils/core\";\nimport Icon from \"../Icon\";\n\ninterface FontSelectProps {\n value?: string;\n onChange: (value: string) => void;\n}\n\nexport default function FontSelect({\n value = \"serif\",\n onChange,\n}: FontSelectProps) {\n return (\n <div>\n <MyPopup\n trigger={\n <button className=\"font-option heading\">\n {fontOptions?.find((o) => o.value === value)?.label}\n <Icon name=\"DownArrow\" />\n </button>\n }>\n {({ close }) => (\n <div className=\"p-4\">\n <div className=\"font-options\">\n {fontOptions.map((font) => (\n <button\n className=\"btn-mail-editor\"\n key={font.value}\n onClick={() => {\n onChange(font.value);\n close();\n }}\n style={{ ...font.style }}>\n <div className=\"font-option\">\n {value === font.value && <Icon name=\"Check\" />}\n {font.label}\n </div>\n </button>\n ))}\n </div>\n </div>\n )}\n </MyPopup>\n </div>\n );\n}\n","import { OPTIONS } from \"../../../utils/core\";\nimport MyPopup from \"../MyPopup\";\nimport Icon from \"../Icon\";\n\n/**\n * Props:\n * - value: \"small\" | \"normal\" | \"large\" | \"huge\"\n * - onChange: (newValue) => void\n */\n\ninterface FontSizePickerProps {\n value?: string;\n onChange?: (value: string) => void;\n}\n\nexport default function FontSizePicker({\n value = \"normal\",\n onChange = () => {},\n}: FontSizePickerProps) {\n return (\n <div>\n <MyPopup\n trigger={\n <button className=\"font-option heading\">\n <Icon name=\"TextFields\" />\n <Icon name=\"DownArrow\" />\n </button>\n }>\n {({ close }) => (\n <div className=\"p-4\">\n <div className=\"font-options\">\n {OPTIONS.map((font) => (\n <button\n className=\"btn-mail-editor\"\n key={font.key}\n onClick={() => {\n onChange(font.key);\n close();\n }}\n style={{ fontSize: `${font.sizePx}px` }}>\n <div className=\"font-option\">\n {value === font.key && <Icon name=\"Check\" />}\n {font.label}\n </div>\n </button>\n ))}\n </div>\n </div>\n )}\n </MyPopup>\n </div>\n );\n}\n","import { ACCENTS, GREYS, PALETTE } from \"../../../utils/core\";\nimport \"./style.css\";\nimport MyPopup from \"../MyPopup\";\nimport Icon from \"../Icon\";\n/**\n * Props:\n * - value: { background: \"#ffffff\", text: \"#000000\" }\n * - onChange: (newValue) => void\n */\n\ninterface SwatchProps {\n color: string;\n selected: boolean;\n onClick: (color: string) => void;\n label?: string;\n}\n\nfunction Swatch({ color, selected, onClick, label }: SwatchProps) {\n return (\n <button\n className=\"swatch\"\n title={label || color}\n aria-pressed={selected}\n onClick={() => onClick(color)}\n style={{ background: color }}>\n {selected && (\n <svg className=\"check\" viewBox=\"0 0 24 24\" aria-hidden>\n <path\n d=\"M20 6L9 17l-5-5\"\n stroke=\"white\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n />\n </svg>\n )}\n </button>\n );\n}\n\ninterface ColorValue {\n background: string;\n text: string;\n}\n\ninterface ColorPickerProps {\n value?: ColorValue;\n onChange?: (value: ColorValue) => void;\n}\n\nexport default function ColorPicker({\n value = { background: \"#ffffff\", text: \"#000000\" },\n onChange = () => {},\n}: ColorPickerProps) {\n function update(which: keyof ColorValue, color: string) {\n onChange({ ...value, [which]: color });\n }\n\n return (\n <div>\n <MyPopup\n trigger={\n <button className=\"font-option heading\">\n <Icon name=\"Styling\" />\n <Icon name=\"DownArrow\" />\n </button>\n }>\n {({ close }) => (\n <div\n className=\"color-popover\"\n role=\"dialog\"\n aria-label=\"Choose colors\">\n <div className=\"color-columns\">\n <section className=\"color-column\" aria-labelledby=\"bg-label\">\n <h4 id=\"bg-label\">Background color</h4>\n\n <div className=\"row\">\n {GREYS.map((c) => (\n <Swatch\n key={c + \"bg\"}\n color={c}\n selected={value.background === c}\n onClick={(col) => {\n update(\"background\", col);\n close();\n }}\n label={c}\n />\n ))}\n </div>\n\n <div className=\"row accent-row\">\n {ACCENTS.map((c) => (\n <Swatch\n key={c + \"bgacc\"}\n color={c}\n selected={value.background === c}\n onClick={(col) => {\n update(\"background\", col);\n close();\n }}\n label={c}\n />\n ))}\n </div>\n\n <div className=\"palette\">\n {PALETTE.map((r, i) => (\n <div className=\"palette-row\" key={\"row\" + i}>\n {r.map((c) => (\n <Swatch\n key={c + \"bgp\" + i}\n color={c}\n selected={value.background === c}\n onClick={(col) => {\n update(\"background\", col);\n close();\n }}\n label={c}\n />\n ))}\n </div>\n ))}\n </div>\n </section>\n\n <section className=\"color-column\" aria-labelledby=\"text-label\">\n <h4 id=\"text-label\">Text color</h4>\n\n <div className=\"row\">\n {GREYS.map((c) => (\n <Swatch\n key={c + \"tx\"}\n color={c}\n selected={value.text === c}\n onClick={(col) => {\n update(\"text\", col);\n close();\n }}\n label={c}\n />\n ))}\n </div>\n\n <div className=\"row accent-row\">\n {ACCENTS.map((c) => (\n <Swatch\n key={c + \"txacc\"}\n color={c}\n selected={value.text === c}\n onClick={(col) => {\n update(\"text\", col);\n close();\n }}\n label={c}\n />\n ))}\n </div>\n\n <div className=\"palette\">\n {PALETTE.map((r, i) => (\n <div className=\"palette-row\" key={\"txrow\" + i}>\n {r.map((c) => (\n <Swatch\n key={c + \"txp\" + i}\n color={c}\n selected={value.text === c}\n onClick={(col) => {\n update(\"text\", col);\n close();\n }}\n label={c}\n />\n ))}\n </div>\n ))}\n </div>\n </section>\n </div>\n </div>\n )}\n </MyPopup>\n </div>\n );\n}\n","import \"./style.css\";\nimport Icon from \"../Icon\";\nimport MyPopup from \"../MyPopup\";\n\nexport type Alignment = \"left\" | \"center\" | \"right\";\n\ntype IconName = \"LeftAlign\" | \"CenterAlign\" | \"RightAlign\" | \"DownArrow\";\n\nconst OPTIONS: { key: Alignment; iconName: IconName; label: string }[] = [\n { key: \"left\", iconName: \"LeftAlign\", label: \"Left align\" },\n { key: \"center\", iconName: \"CenterAlign\", label: \"Center align\" },\n { key: \"right\", iconName: \"RightAlign\", label: \"Right align\" },\n];\n\ninterface Props {\n value?: Alignment;\n onChange?: (next: Alignment) => void;\n className?: string;\n}\n\nexport default function AlignmentSelect({\n value = \"left\",\n onChange = () => {},\n}: Props) {\n function onSelect(key: Alignment) {\n onChange(key);\n }\n\n return (\n <div>\n <MyPopup\n trigger={\n <button className=\"font-option heading\">\n <Icon name={OPTIONS?.find((o) => o.key === value)?.iconName || \"LeftAlign\"} />\n <Icon name=\"DownArrow\" />\n </button>\n }>\n {({ close }) => (\n <div className=\"wrapper-alignment\">\n {OPTIONS.map((opt) => {\n const active = opt.key === value;\n return (\n <button\n key={opt.key}\n role=\"menuitemradio\"\n aria-checked={active}\n tabIndex={0}\n className={`alignment-option ${active ? \"active\" : \"\"}`}\n onClick={() => {\n onSelect(opt.key);\n close();\n }}>\n <div className=\"option-icon\">\n <Icon name={opt.iconName} size={20} />\n </div>\n\n <div\n className={`option-check ${active ? \"\" : \"hidden\"}`}\n aria-hidden>\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\n <path\n d=\"M20 6L9 17l-5-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </div>\n </button>\n );\n })}\n </div>\n )}\n </MyPopup>\n </div>\n );\n}\n","import { useCallback, useEffect, useState } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { eventTypes } from \"../utils/toolbar\";\nimport {\n FORMAT_TEXT_COMMAND,\n FORMAT_ELEMENT_COMMAND,\n UNDO_COMMAND,\n REDO_COMMAND,\n SELECTION_CHANGE_COMMAND,\n $getSelection,\n $isRangeSelection,\n INDENT_CONTENT_COMMAND,\n OUTDENT_CONTENT_COMMAND,\n} from \"lexical\";\nimport {\n $isListNode,\n INSERT_ORDERED_LIST_COMMAND,\n INSERT_UNORDERED_LIST_COMMAND,\n ListNode,\n REMOVE_LIST_COMMAND,\n} from \"@lexical/list\";\nimport { $isLinkNode, TOGGLE_LINK_COMMAND } from \"@lexical/link\";\nimport { $getNearestNodeOfType, mergeRegister } from \"@lexical/utils\";\nimport { $isAtNodeEnd, $patchStyleText } from \"@lexical/selection\";\nimport { OPTIONS } from \"../utils/core\";\n\nconst LowPriority = 1;\n\n// Helper function to convert RGB to Hex\nfunction rgbToHex(rgb: string): string {\n if (!rgb) return rgb;\n\n // If already hex, return as is\n if (rgb.startsWith('#')) return rgb;\n\n // If rgba with transparency, return as is (can't convert to simple hex)\n if (rgb.startsWith('rgba')) {\n const match = rgb.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+),?\\s*([\\d.]+)?\\)/);\n if (match) {\n const [, r, g, b, a] = match;\n // If fully transparent, return transparent\n if (a === '0') return 'transparent';\n // Convert to hex (ignoring alpha for now)\n return '#' + [r, g, b].map(x => {\n const hex = parseInt(x).toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n }).join('');\n }\n }\n\n // Handle rgb format\n const match = rgb.match(/rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)/);\n if (match) {\n const [, r, g, b] = match;\n return '#' + [r, g, b].map(x => {\n const hex = parseInt(x).toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n }).join('');\n }\n\n return rgb;\n}\n\nfunction useOnClickListener() {\n const [editor] = useLexicalComposerContext();\n const [blockType, setBlockType] = useState(\"paragraph\");\n const [selectedEventTypes, setSelectedEventTypes] = useState<any>({\n [eventTypes.fontFamily]: \"sans-serif\",\n [eventTypes.fontSize]: 16,\n [eventTypes.align.base]: \"left\",\n });\n const [isLink, setIsLink] = useState(false);\n\n const updateToolbar = useCallback(() => {\n const selection = $getSelection();\n const newState: any = {\n // Set default values\n [eventTypes.fontFamily]: \"sans-serif\",\n [eventTypes.fontSize]: 16,\n [eventTypes.align.base]: \"left\",\n };\n\n // range selection ( e.g like to bold only the particular area of the text)\n if ($isRangeSelection(selection)) {\n const anchorNode = selection.anchor.getNode();\n const element =\n anchorNode.getKey() === \"root\"\n ? anchorNode\n : anchorNode.getTopLevelElementOrThrow();\n\n const elementKey = element.getKey();\n const elementDOM = editor.getElementByKey(elementKey);\n\n if (elementDOM !== null) {\n if ($isListNode(element)) {\n const parentList = $getNearestNodeOfType(anchorNode, ListNode);\n const type = parentList ? parentList.getTag() : element.getTag();\n setBlockType(type);\n } else {\n const type = element.getType();\n setBlockType(type);\n }\n }\n\n // Check formatting and add to selected events\n newState[eventTypes.bold] = selection.hasFormat(\"bold\");\n newState[eventTypes.italic] = selection.hasFormat(\"italic\");\n newState[eventTypes.underline] = selection.hasFormat(\"underline\");\n newState[eventTypes.strike] = selection.hasFormat(\"strikethrough\");\n newState[eventTypes.code] = selection.hasFormat(\"code\");\n\n // Get inline styles from selection\n const node = getSelectedNode(selection);\n const parent = node.getParent();\n\n // Check for link\n if ($isLinkNode(parent) || $isLinkNode(node)) {\n newState[eventTypes.link] = true;\n setIsLink(true);\n } else {\n newState[eventTypes.link] = false;\n setIsLink(false);\n }\n\n // Get the actual text node's DOM element for accurate style reading\n const textNodeDOM = editor.getElementByKey(node.getKey());\n const parentElement = editor.getElementByKey(parent.getKey());\n\n // Try multiple elements to find inline styles (Lexical wraps text in spans)\n const styleElement = textNodeDOM || parentElement || elementDOM;\n\n // Get computed styles from the node\n if (styleElement) {\n const computedStyle = window.getComputedStyle(styleElement);\n\n // Get font family - extract first font from the list\n const fontFamily = computedStyle.getPropertyValue(\"font-family\");\n if (fontFamily) {\n let firstFont = fontFamily.split(',')[0].trim().replace(/['\"]/g, '');\n // Normalize system fonts to sans-serif\n if (firstFont === \"-apple-system\" || firstFont === \"BlinkMacSystemFont\" || firstFont === \"system-ui\") {\n firstFont = \"sans-serif\";\n }\n newState[eventTypes.fontFamily] = firstFont;\n }\n\n // Get font size - extract only the number\n const fontSize = computedStyle.getPropertyValue(\"font-size\");\n if (fontSize) {\n const fontSizeNum = parseInt(fontSize, 10);\n newState[eventTypes.fontSize] = fontSizeNum || 16; // Default to 16 if parsing fails\n }\n\n // Get text color and background color\n // First try to get inline styles from the element itself\n let color = null;\n let backgroundColor = null;\n\n if (styleElement instanceof HTMLElement && styleElement.style) {\n // Check inline styles first (more accurate for Lexical's inline formatting)\n color = styleElement.style.color || null;\n backgroundColor = styleElement.style.backgroundColor || null;\n }\n\n // Fallback to computed styles if inline styles not found\n if (!color) {\n color = computedStyle.getPropertyValue(\"color\");\n }\n if (!backgroundColor) {\n backgroundColor = computedStyle.getPropertyValue(\"background-color\");\n }\n\n console.log(\"🎨 Color detection:\", {\n inlineColor: styleElement instanceof HTMLElement ? styleElement.style.color : 'N/A',\n inlineBg: styleElement instanceof HTMLElement ? styleElement.style.backgroundColor : 'N/A',\n computedColor: color,\n computedBg: backgroundColor,\n element: styleElement\n });\n\n // Only set if we have actual colors (not transparent/initial)\n const hexColor = color ? rgbToHex(color) : null;\n const hexBgColor = backgroundColor && backgroundColor !== 'rgba(0, 0, 0, 0)' && backgroundColor !== 'transparent'\n ? rgbToHex(backgroundColor)\n : null;\n\n if (hexColor || hexBgColor) {\n newState[eventTypes.color.base] = {\n text: hexColor || '#000000',\n background: hexBgColor || '#ffffff'\n };\n }\n\n // Get text alignment - normalize \"start\" to \"left\"\n let textAlign = computedStyle.getPropertyValue(\"text-align\") || \"left\";\n if (textAlign === \"start\") {\n textAlign = \"left\";\n }\n newState[eventTypes.align.base] = textAlign;\n }\n\n setSelectedEventTypes(newState);\n }\n }, [editor]);\n\n useEffect(() => {\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n updateToolbar();\n });\n }),\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n updateToolbar();\n return false;\n },\n LowPriority\n )\n );\n }, [editor, updateToolbar]);\n function onChange(type: string, event: unknown) {\n switch (type) {\n case eventTypes.bold:\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"bold\");\n break;\n case eventTypes.italic:\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"italic\");\n break;\n case eventTypes.underline:\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"underline\");\n break;\n case eventTypes.align.base:\n editor.dispatchCommand(FORMAT_ELEMENT_COMMAND, event as any);\n break;\n case eventTypes.undo:\n editor.dispatchCommand(UNDO_COMMAND, undefined);\n break;\n case eventTypes.redo:\n editor.dispatchCommand(REDO_COMMAND, undefined);\n break;\n case eventTypes.listNumber:\n formatNumberedList();\n break;\n case eventTypes.listBullet:\n formatBulletList();\n break;\n case eventTypes.indent:\n addIndent();\n break;\n case eventTypes.indentDecrease:\n removeIndent();\n break;\n case eventTypes.color.base:\n applyFontColor(event as { background: string; text: string });\n break;\n case eventTypes.fontFamily:\n applyFontFamily(event as string);\n break;\n case eventTypes.fontSize:\n applyFontSize(event as string);\n break;\n case eventTypes.link:\n insertLink();\n break;\n\n default:\n break;\n }\n }\n\n const addIndent = () => {\n editor.dispatchCommand(INDENT_CONTENT_COMMAND, undefined);\n };\n\n const applyFontFamily = (fontFamily: string) => {\n editor.update(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n $patchStyleText(selection, { \"font-family\": fontFamily });\n }\n });\n };\n\n const applyFontSize = (fontSize: string) => {\n const selectedFontSize =\n OPTIONS.find((i) => i.key === fontSize)?.sizePx ?? 16;\n editor.update(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n $patchStyleText(selection, { \"font-size\": `${selectedFontSize}px` });\n }\n });\n };\n\n const applyFontColor = (colorObj: { background: string; text: string }) => {\n editor.update(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n $patchStyleText(selection, {\n \"background-color\": colorObj.background,\n color: colorObj.text,\n });\n }\n });\n };\n\n const insertLink = useCallback(() => {\n if (!isLink) {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, \"https://\");\n } else {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);\n }\n }, [editor, isLink]);\n\n const removeIndent = () => {\n editor.dispatchCommand(OUTDENT_CONTENT_COMMAND, undefined);\n };\n\n const formatBulletList = () => {\n if (blockType !== \"ul\") {\n editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined);\n } else {\n editor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n }\n };\n\n const formatNumberedList = () => {\n if (blockType !== \"ol\") {\n editor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined);\n } else {\n editor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n }\n };\n function getSelectedNode(selection: any) {\n const anchor = selection.anchor;\n const focus = selection.focus;\n const anchorNode = selection.anchor.getNode();\n const focusNode = selection.focus.getNode();\n if (anchorNode === focusNode) {\n return anchorNode;\n }\n const isBackward = selection.isBackward();\n if (isBackward) {\n return $isAtNodeEnd(focus) ? anchorNode : focusNode;\n } else {\n return $isAtNodeEnd(anchor) ? focusNode : anchorNode;\n }\n }\n\n return { onChange, isLink, editor, selectedEventTypes, blockType };\n}\n\nexport default useOnClickListener;\n","import { useCallback, useEffect, useRef, useState } from \"react\";\nimport {\n SELECTION_CHANGE_COMMAND,\n $getSelection,\n $isRangeSelection,\n type LexicalEditor,\n type BaseSelection,\n type RangeSelection,\n} from \"lexical\";\nimport { mergeRegister } from \"@lexical/utils\";\nimport { $isLinkNode, TOGGLE_LINK_COMMAND } from \"@lexical/link\";\nimport { $isAtNodeEnd } from \"@lexical/selection\";\nimport \"./index.css\";\nimport Icon from \"../Icon\";\n\ninterface FloatingLinkEditorProps {\n editor: LexicalEditor;\n}\n\nfunction FloatingLinkEditor({ editor }: FloatingLinkEditorProps) {\n const editorRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const mouseDownRef = useRef(false);\n const [linkUrl, setLinkUrl] = useState(\"\");\n const [isEditMode, setEditMode] = useState(false);\n const [lastSelection, setLastSelection] = useState<BaseSelection | null>(null);\n\n const updateLinkEditor = useCallback(() => {\n const nativeSelection = window.getSelection();\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n const node = getSelectedNode(selection);\n const parent = node.getParent();\n if ($isLinkNode(parent)) {\n setLinkUrl(parent.getURL());\n } else if ($isLinkNode(node)) {\n setLinkUrl(node.getURL());\n } else {\n setLinkUrl(\"\");\n }\n }\n\n const editorElem = editorRef.current;\n\n const activeElement = document.activeElement;\n\n if (!editorElem) return;\n\n const rootElement = editor.getRootElement();\n\n if (\n selection &&\n nativeSelection &&\n !nativeSelection.isCollapsed &&\n rootElement &&\n rootElement.contains(nativeSelection.anchorNode)\n ) {\n const domRange = nativeSelection.getRangeAt(0);\n let rect;\n if (nativeSelection.anchorNode === rootElement) {\n let inner: HTMLElement | Element = rootElement;\n while (inner.firstElementChild != null) inner = inner.firstElementChild;\n rect = inner.getBoundingClientRect();\n } else {\n rect = domRange.getBoundingClientRect();\n }\n\n if (!mouseDownRef.current) {\n positionEditorElement(editorElem, rect);\n }\n setLastSelection(selection);\n } else if (!activeElement || activeElement.className !== \"link-input\") {\n positionEditorElement(editorElem, null);\n setLastSelection(null);\n setEditMode(false);\n setLinkUrl(\"\");\n }\n\n return true;\n }, [editor]);\n\n useEffect(() => {\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }: { editorState: any }) => {\n editorState.read(() => {\n updateLinkEditor();\n });\n }),\n\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n updateLinkEditor();\n return true;\n },\n 1\n )\n );\n }, [editor, updateLinkEditor]);\n\n useEffect(() => {\n editor.getEditorState().read(() => {\n updateLinkEditor();\n });\n }, [editor, updateLinkEditor]);\n\n useEffect(() => {\n if (isEditMode && inputRef.current) {\n inputRef.current.focus();\n }\n }, [isEditMode]);\n\n return (\n <div className=\"floating-link-editor\" ref={editorRef}>\n {isEditMode ? (\n <input\n ref={inputRef}\n className=\"link-input\"\n value={linkUrl}\n onChange={(e) => setLinkUrl(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n if (lastSelection && linkUrl !== \"\") {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, linkUrl);\n }\n setEditMode(false);\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n setEditMode(false);\n }\n }}\n placeholder=\"Enter link...\"\n />\n ) : (\n <div className=\"link-display\">\n <a href={linkUrl} target=\"_blank\" rel=\"noopener noreferrer\">\n {linkUrl || \"No link selected\"}\n </a>\n </div>\n )}\n\n <button\n className=\"link-button\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => {\n console.log(\"floating link editor\", isEditMode);\n if (isEditMode) editor.dispatchCommand(TOGGLE_LINK_COMMAND, linkUrl);\n setEditMode((prev) => !prev);\n }}>\n <Icon name={isEditMode ? \"Check\" : \"Edit\"} />\n </button>\n </div>\n );\n}\n\nfunction getSelectedNode(selection: RangeSelection) {\n const anchorNode = selection.anchor.getNode();\n const focusNode = selection.focus.getNode();\n if (anchorNode === focusNode) return anchorNode;\n\n const isBackward = selection.isBackward();\n return isBackward\n ? $isAtNodeEnd(selection.focus)\n ? anchorNode\n : focusNode\n : $isAtNodeEnd(selection.anchor)\n ? focusNode\n : anchorNode;\n}\n\n// 🧭 Smart position logic to prevent going off-screen\nfunction positionEditorElement(editor: HTMLElement, rect: DOMRect | null) {\n if (!rect) {\n editor.style.opacity = \"0\";\n editor.style.top = \"-1000px\";\n editor.style.left = \"-1000px\";\n return;\n }\n\n const editorWidth = editor.offsetWidth;\n const editorHeight = editor.offsetHeight;\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n\n // Default position (below selection)\n let top = rect.top + rect.height + window.pageYOffset + 10;\n let left = rect.left + window.pageXOffset - editorWidth / 2 + rect.width / 2;\n\n // 🧩 Clamp horizontally\n if (left < 8) left = 8;\n if (left + editorWidth > viewportWidth - 8)\n left = viewportWidth - editorWidth - 8;\n\n // 🧩 Clamp vertically\n if (top + editorHeight > viewportHeight - 8) {\n top = rect.top + window.pageYOffset - editorHeight - 10; // place above\n }\n if (top < 8) top = 8;\n\n editor.style.opacity = \"1\";\n editor.style.top = `${top}px`;\n editor.style.left = `${left}px`;\n}\n\nexport default FloatingLinkEditor;\n","import { useState, useCallback, useEffect } from \"react\";\nimport { useDropzone } from \"react-dropzone\";\nimport heic2any from \"heic2any\";\n\n/** ------------------ CONSTANTS ------------------ **/\n\nexport const FILE_UPLOAD_ERROR = {\n FILE_INVALID_TYPE: \"file-invalid-type\",\n FILE_TOO_LARGE: \"file-too-large\",\n TOO_MANY_FILES: \"too-many-files\",\n HEIC_CONVERSION_ERROR: \"heic-conversion-error\",\n};\n\nexport const MAX_NUMBER_OF_FILES_ALLOWED = 10;\nexport const MAX_SIZE_OF_FILE_ALLOWED_MB = 10; // 10 MB\n\n/** ------------------ UTILITIES ------------------ **/\n\nexport const getId = (): string =>\n Math.random().toString(36).substring(2, 10) + Date.now().toString(36);\n\nexport const getMBs = (bytes: number): { value: string; type: string } => {\n if (bytes < 1024) return { value: bytes.toString(), type: \"bytes\" };\n const kb = bytes / 1024;\n if (kb < 1024) return { value: kb.toFixed(1), type: \"KB\" };\n const mb = kb / 1024;\n if (mb < 1024) return { value: mb.toFixed(1), type: \"MB\" };\n const gb = mb / 1024;\n return { value: gb.toFixed(1), type: \"GB\" };\n};\n\n/** ------------------ TYPE DEFINITIONS ------------------ **/\n\nexport interface UploadedFile extends File {\n uuid: string;\n preview: string;\n}\n\nexport interface RejectedFileWithPreview {\n file: File;\n preview: string;\n readableErrors: string[];\n errors: { code: string; message: string }[];\n}\n\nexport interface UseFileUploadOptions {\n accept?: Record<string, string[]>;\n maxSize?: number;\n maxFiles?: number;\n multiple?: boolean;\n isDisabled?: boolean;\n replaceAfterUpload?: boolean;\n files?: UploadedFile[];\n name?: string;\n insideForm?: boolean;\n handleFileChange?: (value: any) => void;\n}\n\nexport interface UseFileUploadReturn {\n getRootProps: any;\n getInputProps: any;\n isDragActive: boolean;\n isFileDialogOpen: boolean;\n rejectedFiles: RejectedFileWithPreview[];\n openFileDialog: () => void;\n removeFile: (uuid: string) => void;\n clearRejectedFiles: () => void;\n}\n\n/** ------------------ MAIN HOOK ------------------ **/\n\nexport const useFileUpload = ({\n accept = {\n \"image/*\": [\".png\", \".gif\", \".jpeg\", \".jpg\"],\n \"application/pdf\": [\".pdf\"],\n },\n maxSize = MAX_SIZE_OF_FILE_ALLOWED_MB * 1024 * 1024,\n maxFiles = MAX_NUMBER_OF_FILES_ALLOWED,\n multiple = true,\n isDisabled = false,\n replaceAfterUpload = false,\n files = [],\n handleFileChange = () => {},\n}: UseFileUploadOptions): UseFileUploadReturn => {\n const [isFileDialogOpen, setIsFileDialogOpen] = useState(false);\n const [fileUploaded, setFileUploaded] = useState<UploadedFile[]>(files ?? []);\n const [rejectedFiles, setRejectedFile] = useState<RejectedFileWithPreview[]>(\n []\n );\n\n /** User-friendly error text generator */\n const getErrorText = (errorCode: string): string => {\n switch (errorCode) {\n case FILE_UPLOAD_ERROR.FILE_INVALID_TYPE:\n return \"Invalid file type. Please upload a supported format.\";\n case FILE_UPLOAD_ERROR.FILE_TOO_LARGE: {\n const { value, type } = getMBs(maxSize);\n return `File too large. Maximum allowed size is ${value} ${type}.`;\n }\n case FILE_UPLOAD_ERROR.TOO_MANY_FILES:\n return `Too many files selected. Maximum allowed: ${maxFiles}.`;\n case FILE_UPLOAD_ERROR.HEIC_CONVERSION_ERROR:\n return \"Failed to convert HEIC image. Please upload a JPEG or PNG instead.\";\n default:\n return \"An unknown file error occurred.\";\n }\n };\n\n /** Update form or callback on change */\n useEffect(() => {\n handleFileChange(fileUploaded);\n }, [fileUploaded]);\n\n /** Setup Dropzone */\n const { getRootProps, getInputProps, isDragActive, open } = useDropzone({\n accept,\n maxSize,\n multiple,\n maxFiles,\n disabled: isDisabled,\n noClick: true,\n onFileDialogCancel: () => setIsFileDialogOpen(false),\n onFileDialogOpen: () => {\n if (!isDisabled) setIsFileDialogOpen(true);\n },\n onDrop: async (_acceptedFiles, fileRejections) => {\n const acceptedFiles = await Promise.all(\n _acceptedFiles.map(async (file) => {\n if (!file) return null;\n\n // Handle HEIC conversion\n if (file.type === \"image/heic\") {\n try {\n const blob = await heic2any({ blob: file, toType: \"image/jpeg\" });\n const blobArray = Array.isArray(blob) ? blob[0] : blob;\n const convertedFile = new File(\n [blobArray],\n `${file.name.replace(/\\.heic$/i, \"\")}.jpeg`,\n { type: \"image/jpeg\" }\n );\n return Object.assign(convertedFile, {\n uuid: getId(),\n preview: URL.createObjectURL(convertedFile),\n });\n } catch (err) {\n console.error(\"HEIC conversion error:\", err);\n const msg = getErrorText(FILE_UPLOAD_ERROR.HEIC_CONVERSION_ERROR);\n setRejectedFile((prev) => [\n ...prev,\n {\n file,\n preview: URL.createObjectURL(file),\n readableErrors: [msg],\n errors: [\n {\n code: FILE_UPLOAD_ERROR.HEIC_CONVERSION_ERROR,\n message: msg,\n },\n ],\n },\n ]);\n return null;\n }\n }\n\n // Normal file\n return Object.assign(file, {\n uuid: getId(),\n preview: URL.createObjectURL(file),\n });\n })\n );\n\n const validFiles = acceptedFiles.filter(Boolean) as UploadedFile[];\n\n if (!isDisabled) {\n let newFiles = replaceAfterUpload ? [] : [...fileUploaded];\n newFiles = [...newFiles, ...validFiles];\n\n const mappedRejections = fileRejections.map<RejectedFileWithPreview>(\n (item) => {\n const readableErrors = item.errors.map((err) =>\n getErrorText(err.code)\n );\n return {\n file: item.file,\n errors: item.errors.map((err) => ({ code: err.code, message: err.message })),\n preview: URL.createObjectURL(item.file),\n readableErrors,\n };\n }\n );\n\n setRejectedFile((prev) => [...prev, ...mappedRejections]);\n setFileUploaded(newFiles);\n return newFiles;\n }\n\n return fileUploaded;\n },\n validator: (item) => {\n const { name: fileName, type } = item;\n if (fileName) {\n const ext = fileName.split(\".\").pop()?.toLowerCase();\n if (\n accept &&\n accept?.[type] &&\n accept?.[type].length &&\n !accept?.[type].includes(`.${ext}`)\n ) {\n return {\n code: FILE_UPLOAD_ERROR.FILE_INVALID_TYPE,\n message: getErrorText(FILE_UPLOAD_ERROR.FILE_INVALID_TYPE),\n };\n }\n }\n return null;\n },\n });\n\n /** Remove a specific file */\n const removeFile = useCallback(\n (uuid: string) => {\n setFileUploaded((prev) => prev.filter((file) => file.uuid !== uuid));\n },\n [setFileUploaded]\n );\n\n /** Clear rejected files */\n const clearRejectedFiles = useCallback(() => {\n setRejectedFile([]);\n }, []);\n\n /** Cleanup memory leaks */\n useEffect(() => {\n return () => {\n fileUploaded.forEach((f) => f.preview && URL.revokeObjectURL(f.preview));\n rejectedFiles.forEach((r) => r.preview && URL.revokeObjectURL(r.preview));\n };\n }, []);\n\n /** Return all handlers and states */\n return {\n getRootProps,\n getInputProps,\n isDragActive,\n isFileDialogOpen,\n rejectedFiles,\n openFileDialog: open,\n removeFile,\n clearRejectedFiles,\n };\n};\n","import React from \"react\";\nimport Icon from \"../Icon\";\nimport { useFileUpload } from \"../../../hook/useFileUpload\";\n\ninterface FileUploaderProps {\n value?: File[];\n handleFileChange: (files: File[]) => void;\n}\n\nconst FileUploader: React.FC<FileUploaderProps> = ({ handleFileChange }) => {\n const {\n getRootProps,\n getInputProps,\n openFileDialog,\n } = useFileUpload({\n multiple: true,\n maxFiles: 5,\n maxSize: 5 * 1024 * 1024, // 5 MB\n handleFileChange: (files) => {\n handleFileChange(files);\n },\n });\n\n return (\n <div className=\"uploader-container\">\n {/* Upload area */}\n <div {...getRootProps()}>\n <input {...getInputProps()} />\n <button onClick={openFileDialog}>\n <Icon className=\"upload-icon\" name=\"Attach\" />\n </button>\n </div>\n </div>\n );\n};\n\nexport default FileUploader;\n","import { useMemo } from \"react\";\nimport \"./FilePreview.css\";\n\n/**\n * Props:\n * - file: File | { name, size, type?, url? }\n * - index?: number // shown as (index)\n * - onRemove?: () => void\n * - onView?: (url) => void\n *\n * Behavior:\n * - If `file` is a native File object and no url provided, component creates an object URL for view/download.\n * - Renders like: (70) WhatsApp.html (505K) [×]\n * - No icons, minimal markup to match screenshot.\n */\n\ninterface FilePreviewProps {\n file: File | { name: string; size?: number; bytes?: number; type?: string; url?: string };\n index?: number;\n onRemove?: (index?: number) => void;\n onView?: (url: string | null) => void;\n}\n\nexport default function FilePreview({ file, index, onRemove, onView }: FilePreviewProps) {\n if (!file) return null;\n\n const name = file?.name ?? \"unknown\";\n const sizeBytes: number | null =\n file instanceof File\n ? file.size\n : ('size' in file && file.size !== undefined\n ? file.size\n : ('bytes' in file && file.bytes !== undefined ? file.bytes : null));\n const urlFromProp = ('url' in file ? file?.url : null) ?? null;\n\n // If file is a native File and no url provided, createObjectURL.\n const url = useMemo(() => {\n if (urlFromProp) return urlFromProp;\n if (typeof window !== \"undefined\" && file instanceof File) {\n try {\n return URL.createObjectURL(file);\n } catch (e) {\n return null;\n }\n }\n return null;\n }, [file, urlFromProp]);\n\n const formatSizeShort = (bytes: number | null) => {\n if (!bytes && bytes !== 0) return \"\";\n const kb = Math.round(bytes / 1024);\n if (kb < 1024) return `${kb}K`;\n const mb = Math.round((bytes / 1024 / 1024) * 10) / 10;\n return `${mb}M`;\n };\n\n const handleView = (e: React.MouseEvent) => {\n e.preventDefault();\n if (onView) return onView(url ?? null);\n if (url) window.open(url, \"_blank\", \"noopener\");\n };\n\n const handleRemove = (index?: number) => {\n if (onRemove) onRemove(index);\n };\n\n return (\n <div className=\"fps-row\" role=\"group\" aria-label={`Attachment ${name}`}>\n <div className=\"fps-left\">\n <a\n href={url ?? \"#\"}\n className=\"fps-filename\"\n onClick={handleView}\n title={name}\n target=\"_blank\"\n rel=\"noopener noreferrer\">\n {name}\n </a>\n {sizeBytes != null && (\n <span className=\"fps-size\">&nbsp;({formatSizeShort(sizeBytes)})</span>\n )}\n </div>\n\n <button\n type=\"button\"\n className=\"fps-close\"\n aria-label={`Remove ${name}`}\n onClick={() => handleRemove(index)}>\n ×\n </button>\n </div>\n );\n}\n","import { useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport {\n eventTypes,\n pluginList,\n toolbarComponentType,\n} from \"../../../utils/toolbar\";\nimport Icon from \"../../core/Icon\";\nimport FontSelect from \"../../core/FontSelect\";\nimport FontSizePicker from \"../../core/FontSize\";\nimport ColorPicker from \"../../core/ColorPicker\";\nimport AlignmentSelect from \"../../core/AlignmentSelect\";\nimport \"./style.css\";\n\nimport useOnClickListener from \"../../../hook/useOnClickListener\";\nimport FloatingLinkEditor from \"../../core/FloatingLinkEditor\";\nimport FileUploader from \"../../core/FileUploader\";\nimport FilePreview from \"../../core/FileUploader/FilePreview\";\nimport { useEmailContext } from \"../../GmailWrapper/EmailContext\";\n\ninterface ToolbarComponentProps {\n onChange: (name: string, value: any) => void;\n state: Record<string, any>;\n setState: React.Dispatch<React.SetStateAction<Record<string, any>>>;\n selectedEventTypes: Record<string, any>;\n blockType: string;\n setAttachments: (files: File[]) => void;\n}\n\nconst getToolbarComponent = (\n plugin: any,\n { onChange, state, setState, selectedEventTypes, blockType, setAttachments }: ToolbarComponentProps\n) => {\n switch (plugin.name) {\n case eventTypes.undo:\n case eventTypes.redo:\n case eventTypes.bold:\n case eventTypes.italic:\n case eventTypes.underline:\n case eventTypes.indentDecrease:\n case eventTypes.indent:\n case eventTypes.link:\n return (\n <button\n key={`${plugin.name}-${plugin.icon}`}\n className={`tool-bar-button ${selectedEventTypes?.[plugin.name] ? \"active-btn-toolbar\" : \"\"}`}\n onClick={() => {\n onChange(plugin.name, true);\n }}>\n <Icon className=\"tool-bar-button-icon\" name={plugin.icon} />\n </button>\n );\n case eventTypes.listNumber:\n return (\n <button\n key={`${plugin.name}-${plugin.icon}`}\n className={blockType === \"ol\" ? \"active-btn-toolbar\" : \"\"}\n onClick={() => {\n onChange(plugin.name, true);\n }}>\n <Icon className=\"tool-bar-button-icon\" name={plugin.icon} />\n </button>\n );\n case eventTypes.listBullet:\n return (\n <button\n key={`${plugin.name}-${plugin.icon}`}\n className={blockType === \"ul\" ? \"active-btn-toolbar\" : \"\"}\n onClick={() => {\n onChange(plugin.name, true);\n }}>\n <Icon className=\"tool-bar-button-icon\" name={plugin.icon} />\n </button>\n );\n case eventTypes.attachFile:\n return (\n <FileUploader\n value={state?.[plugin.name]}\n handleFileChange={(e) => {\n console.log(\"🚀 ~ getToolbarComponent ~ e:\", e);\n setState((prev) => {\n return { ...prev, [plugin.name]: e };\n });\n // Update the EmailContext with the new attachments\n setAttachments(e);\n }}\n />\n );\n case eventTypes.fontFamily:\n return (\n <FontSelect\n value={selectedEventTypes?.[plugin.name] || state?.[plugin.name]}\n onChange={(e) => {\n onChange(plugin.name, e);\n }}\n />\n );\n case eventTypes.fontSize:\n return (\n <FontSizePicker\n value={selectedEventTypes?.[plugin.name] || state?.[plugin.name]}\n onChange={(e) => {\n onChange(plugin.name, e);\n }}\n />\n );\n case eventTypes.color.base:\n return (\n <ColorPicker\n value={selectedEventTypes?.[plugin.name] || state?.[plugin.name]}\n onChange={(e) => {\n onChange(plugin.name, e);\n }}\n />\n );\n case eventTypes.align.base:\n return (\n <AlignmentSelect\n value={selectedEventTypes?.[plugin.name] || state?.[plugin.name]}\n onChange={(e) => {\n onChange(plugin.name, e);\n }}\n />\n );\n\n default:\n break;\n }\n if (plugin.type === toolbarComponentType.divider)\n return <span className=\"divider\" />;\n else return \"-\";\n};\ninterface GetComponentProps extends ToolbarComponentProps {\n toggle: boolean;\n setToggle: React.Dispatch<React.SetStateAction<boolean>>;\n}\n\nconst getComponent = (\n plugin: {\n type: string;\n icon?: string;\n options?: any[];\n },\n {\n setToggle,\n toggle,\n onChange,\n state,\n setState,\n selectedEventTypes,\n blockType,\n setAttachments,\n }: GetComponentProps\n) => {\n switch (plugin.type) {\n case toolbarComponentType.divider:\n return (\n <div\n key={`divider-${plugin.type}-${plugin.icon}`}\n className=\"divider\"\n />\n );\n case toolbarComponentType.component:\n return getToolbarComponent(plugin, {\n onChange,\n state,\n setState,\n selectedEventTypes,\n blockType,\n setAttachments,\n });\n case toolbarComponentType.styling:\n return (\n <div\n key={`divider-${plugin.type}-${plugin.icon}`}\n className=\"styling-toolbar\">\n {toggle ? (\n <div className=\"styling-options\">\n {plugin.options?.length && Array.isArray(plugin.options)\n ? plugin.options?.map((option: string) =>\n getToolbarComponent(option, {\n onChange,\n state,\n setState,\n selectedEventTypes,\n blockType,\n setAttachments,\n })\n )\n : null}\n </div>\n ) : null}\n <button onClick={() => setToggle((prev) => !prev)}>\n <Icon className=\"tool-bar-button-icon\" name={plugin.icon as any} />\n </button>\n </div>\n );\n default:\n break;\n }\n return \"-\";\n};\ninterface ToolBarProps {\n rightChildren?: React.ReactNode;\n leftChildren?: React.ReactNode;\n}\n\nfunction ToolBar({ rightChildren, leftChildren }: ToolBarProps) {\n const [toggle, setToggle] = useState(true);\n const [state, setState] = useState<Record<string, any>>({});\n const { setAttachments } = useEmailContext();\n const { onChange, isLink, editor, selectedEventTypes, blockType } =\n useOnClickListener();\n console.log(\"🚀 ~ ToolBar ~ selectedEventTypes:\", selectedEventTypes);\n return (\n <div className=\"toolbar-container\">\n {state[eventTypes.attachFile]?.length ? (\n <div className=\"file-upload-container\">\n {state[eventTypes.attachFile]?.map((item: File, index: number) => (\n <FilePreview\n key={index}\n file={item}\n index={index}\n onRemove={(index) => {\n setState((prev: any) => {\n const updatedFiles = prev[eventTypes.attachFile].filter(\n (_file: File, i: number) => i !== index\n );\n // Update EmailContext with the new attachments list\n setAttachments(updatedFiles);\n return {\n ...prev,\n [eventTypes.attachFile]: updatedFiles,\n };\n });\n }}\n />\n ))}\n </div>\n ) : null}\n <div className=\"toolbar-wrapper\">\n {leftChildren}\n {pluginList?.map((plugin) =>\n getComponent(plugin, {\n setToggle,\n state,\n setState,\n toggle,\n onChange,\n selectedEventTypes,\n blockType,\n setAttachments,\n })\n )}\n {rightChildren}\n {isLink\n ? createPortal(<FloatingLinkEditor editor={editor} />, document.body)\n : null}\n </div>\n </div>\n );\n}\n\nexport default ToolBar;\n","const lexicalEditorTheme = {\n ltr: \"ltr\",\n rtl: \"rtl\",\n placeholder: \"editor-placeholder\",\n paragraph: \"editor-paragraph\",\n quote: \"editor-quote\",\n heading: {\n h1: \"editor-heading-h1\",\n h2: \"editor-heading-h2\",\n h3: \"editor-heading-h3\",\n h4: \"editor-heading-h4\",\n h5: \"editor-heading-h5\",\n },\n list: {\n nested: {\n listitem: \"editor-nested-listitem\",\n },\n ol: \"editor-list-ol\",\n ul: \"editor-list-ul\",\n listitem: \"editor-listitem\",\n },\n image: \"editor-image\",\n link: \"editor-link\",\n text: {\n bold: \"editor-text-bold\",\n italic: \"editor-text-italic\",\n overflowed: \"editor-text-overflowed\",\n hashtag: \"editor-text-hashtag\",\n underline: \"editor-text-underline\",\n strikethrough: \"editor-text-strikethrough\",\n underlineStrikethrough: \"editor-text-underlineStrikethrough\",\n code: \"editor-text-code\",\n },\n code: \"editor-code\",\n codeHighlight: {\n atrule: \"editor-tokenAttr\",\n attr: \"editor-tokenAttr\",\n boolean: \"editor-tokenProperty\",\n builtin: \"editor-tokenSelector\",\n cdata: \"editor-tokenComment\",\n char: \"editor-tokenSelector\",\n class: \"editor-tokenFunction\",\n \"class-name\": \"editor-tokenFunction\",\n comment: \"editor-tokenComment\",\n constant: \"editor-tokenProperty\",\n deleted: \"editor-tokenProperty\",\n doctype: \"editor-tokenComment\",\n entity: \"editor-tokenOperator\",\n function: \"editor-tokenFunction\",\n important: \"editor-tokenVariable\",\n inserted: \"editor-tokenSelector\",\n keyword: \"editor-tokenAttr\",\n namespace: \"editor-tokenVariable\",\n number: \"editor-tokenProperty\",\n operator: \"editor-tokenOperator\",\n prolog: \"editor-tokenComment\",\n property: \"editor-tokenProperty\",\n punctuation: \"editor-tokenPunctuation\",\n regex: \"editor-tokenVariable\",\n selector: \"editor-tokenSelector\",\n string: \"editor-tokenSelector\",\n symbol: \"editor-tokenProperty\",\n tag: \"editor-tokenProperty\",\n url: \"editor-tokenOperator\",\n variable: \"editor-tokenVariable\",\n },\n};\nexport default lexicalEditorTheme;\n","import { useEffect } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $generateNodesFromDOM } from \"@lexical/html\";\nimport { $getRoot } from \"lexical\";\n\ninterface SetInitialHTMLProps {\n initialHTML: string;\n}\n\nfunction SetInitialHTML({ initialHTML }: SetInitialHTMLProps) {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n editor.update(() => {\n const parser = new DOMParser();\n const dom = parser.parseFromString(initialHTML, \"text/html\");\n const nodes = $generateNodesFromDOM(editor, dom);\n const root = $getRoot();\n\n root.clear(); // Clear existing content\n root.append(...nodes); // Insert parsed HTML\n });\n }, [editor, initialHTML]);\n\n return null;\n}\n\nexport default SetInitialHTML;\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $generateHtmlFromNodes } from \"@lexical/html\";\nimport { useEffect } from \"react\";\n\nexport default function OnChangePlugin({\n onChange\n}: {\n onChange: (html: string) => void\n}) {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n return editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n const html = $generateHtmlFromNodes(editor, null);\n onChange(html);\n });\n });\n }, [editor, onChange]);\n\n return null;\n}\n","import { AutoFocusPlugin } from \"@lexical/react/LexicalAutoFocusPlugin\";\nimport { LexicalComposer } from \"@lexical/react/LexicalComposer\";\nimport { RichTextPlugin } from \"@lexical/react/LexicalRichTextPlugin\";\nimport { ContentEditable } from \"@lexical/react/LexicalContentEditable\";\nimport { HistoryPlugin } from \"@lexical/react/LexicalHistoryPlugin\";\nimport { LexicalErrorBoundary } from \"@lexical/react/LexicalErrorBoundary\";\nimport \"./editor.css\";\nimport ToolBar from \"../Toolbar\";\nimport lexicalEditorTheme from \"../../../Themes/lexicalEditortheme\";\nimport { ListPlugin } from \"@lexical/react/LexicalListPlugin\";\nimport { LinkPlugin } from \"@lexical/react/LexicalLinkPlugin\";\nimport { AutoLinkNode, LinkNode } from \"@lexical/link\";\nimport { ListItemNode, ListNode } from \"@lexical/list\";\nimport SetInitialHTML from \"../../../plugins/SetInitialHTML\";\nimport OnChangePlugin from \"../../../plugins/OnChangePlugin\";\n\n// Catch any errors that occur during Lexical updates and log them\n// or throw them as needed. If you don't throw them, Lexical will\n// try to recover gracefully without losing user data.\nfunction onError(error: Error) {\n console.error(error);\n}\ntype EditorWrapperProps = {\n placeholder?: string;\n minHeight?: string;\n initialHTML?: string;\n rightChildren?: React.ReactNode;\n leftChildren?: React.ReactNode;\n onChange?: (html: string) => void;\n editorChildren?: React.ReactNode;\n isEditorVisible?: boolean;\n};\nfunction EditorWrapper({\n placeholder = \"Enter some text here\",\n initialHTML = \"\",\n rightChildren,\n leftChildren,\n minHeight = \"\",\n onChange,\n editorChildren,\n isEditorVisible = true,\n}: EditorWrapperProps) {\n const initialConfig = {\n namespace: \"MyEditor\",\n theme: lexicalEditorTheme,\n nodes: [LinkNode, ListNode, ListItemNode, AutoLinkNode],\n onError,\n };\n\n return (\n <div className=\"my-editor-wrapper\">\n <LexicalComposer initialConfig={initialConfig}>\n {isEditorVisible ? (\n <RichTextPlugin\n contentEditable={\n <ContentEditable\n style={{ minHeight }}\n className=\"my-editor-content\"\n aria-placeholder={placeholder}\n placeholder={\n <div className=\"my-editor-placeholder\">{placeholder}</div>\n }\n />\n }\n ErrorBoundary={LexicalErrorBoundary}\n />\n ) : (\n editorChildren\n )}\n <ToolBar rightChildren={rightChildren} leftChildren={leftChildren} />\n <HistoryPlugin />\n <SetInitialHTML initialHTML={initialHTML} />\n <AutoFocusPlugin />\n <ListPlugin />\n <LinkPlugin />\n {onChange && <OnChangePlugin onChange={onChange} />}\n </LexicalComposer>\n </div>\n );\n}\n\nexport default EditorWrapper;\n","function isValidEmail(email: string): boolean {\n return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email);\n}\n\nexport { isValidEmail };\n","import { useEffect, useRef, useState } from \"react\";\nimport Popup from \"reactjs-popup\";\nimport { isValidEmail } from \"../../../utils/common\";\nimport Icon from \"../../core/Icon\";\nimport type { EmailOption } from \"../EmailContext\";\n\nfunction InputWithDropDown({ emails = [], setEmails, fetchOptions }: {\n emails?: EmailOption[];\n setEmails: (emails: EmailOption[] | ((prev: EmailOption[]) => EmailOption[])) => void;\n fetchOptions: (currentEmail: string) => Promise<EmailOption[]>;\n}) {\n const popupRef = useRef<any>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const [currentEmail, setCurrentEmail] = useState(\"\");\n const [popupOpen, setPopupOpen] = useState(false);\n const [selectedIndex, setSelectedIndex] = useState(-1);\n const [options, setOptions] = useState<EmailOption[]>([]);\n const [loading, setLoading] = useState(false);\n\n // store refs for each email chip\n const emailRefs = useRef<(HTMLDivElement | null)[]>([]);\n // store refs for dropdown options\n const optionRefs = useRef<(HTMLButtonElement | null)[]>([]);\n\n // keep refs array length consistent\n useEffect(() => {\n emailRefs.current = emailRefs.current.slice(0, emails.length);\n }, [emails.length]);\n\n // keep option refs array length consistent\n useEffect(() => {\n optionRefs.current = optionRefs.current.slice(0, options.length);\n }, [options.length]);\n\n // Fetch options when a valid email is entered\n useEffect(() => {\n if (isValidEmail(currentEmail)) {\n const loadOptions = async () => {\n setLoading(true);\n try {\n const data = await fetchOptions(currentEmail);\n setOptions(data);\n } catch (err) {\n console.error(\"Error fetching email options:\", err);\n setOptions([]);\n } finally {\n setLoading(false);\n }\n };\n\n loadOptions();\n } else {\n setOptions([]);\n setLoading(false);\n }\n }, [currentEmail, fetchOptions]);\n\n // reset selected index when popup closes or options change\n useEffect(() => {\n if (!popupOpen) {\n setSelectedIndex(-1);\n }\n }, [popupOpen]);\n\n // scroll selected option into view\n useEffect(() => {\n if (selectedIndex >= 0 && selectedIndex < optionRefs.current.length) {\n optionRefs.current[selectedIndex]?.scrollIntoView({\n block: \"nearest\",\n behavior: \"smooth\",\n });\n }\n }, [selectedIndex]);\n\n const focusInput = () => {\n inputRef.current?.focus();\n };\n\n const addEmail = (option: EmailOption) => {\n popupRef.current?.close();\n setCurrentEmail(\"\");\n setEmails((prev: EmailOption[]) => [...prev, option]);\n setSelectedIndex(-1);\n // refocus input after adding\n requestAnimationFrame(() => inputRef.current?.focus());\n };\n\n const handleInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n // Handle dropdown navigation when popup is open\n if (popupOpen && isValidEmail(currentEmail) && options.length > 0) {\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n setSelectedIndex((prev) =>\n prev < options.length - 1 ? prev + 1 : prev\n );\n return;\n }\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n setSelectedIndex((prev) => (prev > 0 ? prev - 1 : -1));\n return;\n }\n if (e.key === \"Enter\" && selectedIndex >= 0) {\n e.preventDefault();\n addEmail(options[selectedIndex]);\n return;\n }\n if (e.key === \"Escape\") {\n e.preventDefault();\n popupRef.current?.close();\n setSelectedIndex(-1);\n return;\n }\n }\n\n if (e.key === \"Backspace\" && currentEmail === \"\") {\n // focus last email chip if exists\n const lastIdx = emails.length - 1;\n const lastChip = emailRefs.current[lastIdx];\n if (lastChip) {\n lastChip.focus();\n e.preventDefault();\n }\n }\n };\n\n const removeEmailAt = (index: number) => {\n setEmails((prev) => {\n const next = [...prev];\n next.splice(index, 1);\n return next;\n });\n // next tick: focus previous chip if exists else the input\n requestAnimationFrame(() => {\n const prevIdx = Math.min(Math.max(0, index - 1), emails.length - 2);\n const prevChip = emailRefs.current[prevIdx];\n if (prevChip) prevChip.focus();\n else focusInput();\n });\n };\n\n return (\n <>\n <Popup\n ref={popupRef}\n trigger={\n <div className=\"container-receipts\">\n {emails?.length ? (\n <div className=\"emails-container\">\n {emails.map((email, idx) => (\n <div\n key={email.email ?? idx}\n className=\"emails\"\n tabIndex={0} // make it focusable\n ref={(el) => {\n emailRefs.current[idx] = el;\n }}\n onKeyDown={(e) => {\n if (e.key === \"Backspace\") {\n e.preventDefault();\n removeEmailAt(idx);\n }\n if (e.key === \"Enter\") {\n e.preventDefault();\n removeEmailAt(idx);\n focusInput();\n }\n }}\n role=\"button\"\n aria-label={`Email ${email.email}`}>\n <span style={{ marginRight: 8 }}>{email.email}</span>\n <button\n className=\"emails-close\"\n onClick={(ev) => {\n ev.stopPropagation();\n removeEmailAt(idx);\n }}\n aria-label={`Remove ${email.email}`}>\n <Icon name=\"Close\" />\n </button>\n </div>\n ))}\n </div>\n ) : null}\n <input\n ref={inputRef}\n type=\"text\"\n className=\"input-header\"\n value={currentEmail}\n autoFocus\n onKeyDown={handleInputKeyDown}\n // DON'T forcibly close popup here\n onChange={(e) => {\n const val = e.target.value;\n // open popup when the email becomes valid\n if (isValidEmail(val)) {\n popupRef.current?.open();\n }\n setCurrentEmail(val);\n }}\n />\n </div>\n }\n closeOnDocumentClick\n repositionOnResize\n position={\"bottom left\"}\n className=\"filter-popup\"\n onOpen={() => {\n setPopupOpen(true);\n // ensure input stays focused (some popup implementations steal focus)\n requestAnimationFrame(() => inputRef.current?.focus());\n }}\n onClose={() => {\n setPopupOpen(false);\n }}>\n {isValidEmail(currentEmail) ? (\n <div className=\"options-dropdown\">\n {loading ? (\n // Skeleton loader\n <>\n {[1, 2, 3].map((i) => (\n <div key={i} className=\"option-dropdown skeleton-loader\">\n <div className=\"skeleton-line skeleton-name\"></div>\n <div className=\"skeleton-line skeleton-email\"></div>\n </div>\n ))}\n </>\n ) : options.length > 0 ? (\n options.map((opt, idx) => {\n return (\n <button\n ref={(el) => {\n optionRefs.current[idx] = el;\n }}\n className={`option-dropdown ${selectedIndex === idx ? \"selected\" : \"\"}`}\n key={idx}\n onBlur={(e) => {\n e.stopPropagation();\n }}\n onFocus={(e) => {\n e.stopPropagation();\n }}\n onMouseEnter={() => setSelectedIndex(idx)}\n onMouseLeave={() => setSelectedIndex(-1)}\n onClick={(e) => {\n e.stopPropagation();\n addEmail(opt);\n }}\n aria-selected={selectedIndex === idx}>\n <h4>{opt.name}</h4>\n {opt.email}\n </button>\n );\n })\n ) : null}\n </div>\n ) : null}\n </Popup>\n </>\n );\n}\n\nexport default InputWithDropDown;\n","import React from \"react\";\nimport InputWithDropDown from \"./InputWIthDropDown\";\nimport type { EmailOption } from \"../EmailContext\";\n\nfunction InputForEmail({\n name,\n needCCAndBCC,\n setShowCC,\n setShowBCC,\n showBCC,\n showCC,\n emails,\n handleChange,\n fetchOptions,\n}: {\n name: string;\n needCCAndBCC?: boolean;\n setShowCC?: React.Dispatch<React.SetStateAction<boolean>>;\n setShowBCC?: React.Dispatch<React.SetStateAction<boolean>>;\n showBCC?: boolean;\n showCC?: boolean;\n emails: EmailOption[];\n handleChange: (\n emails: EmailOption[] | ((prev: EmailOption[]) => EmailOption[])\n ) => void;\n fetchOptions: (currentEmail: string) => Promise<EmailOption[]>;\n}) {\n return (\n <div className=\"container-receipts\">\n <label className=\"block text-sm font-medium text-gray-700\">{name}</label>\n\n <InputWithDropDown\n emails={emails}\n setEmails={handleChange}\n fetchOptions={fetchOptions}\n />\n {needCCAndBCC && !showCC ? (\n <button\n className=\"btn-mail-editor\"\n onClick={() => setShowCC?.((prev) => !prev)}>\n CC\n </button>\n ) : null}\n {needCCAndBCC && !showBCC ? (\n <button\n className=\"btn-mail-editor\"\n onClick={() => setShowBCC?.((prev) => !prev)}>\n BCC\n </button>\n ) : null}\n </div>\n );\n}\n\nexport default InputForEmail;\n","import { useRef, useState, useEffect } from \"react\";\nimport InputForEmail from \"./InputForEmail\";\nimport { useEmailContext, type EmailOption } from \"../EmailContext\";\n\nfunction ReceiptsHeading({ fetchEmailOptions }: {\n fetchEmailOptions: (currentEmail: string) => Promise<EmailOption[]>;\n}) {\n const [open, setOpen] = useState(false);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const { emails, setEmails, showCC, setShowCC, showBCC, setShowBCC } =\n useEmailContext();\n\n // Show CC/BCC fields when opening if they have values\n useEffect(() => {\n if (open) {\n setShowCC(emails.cc.length > 0);\n setShowBCC(emails.bcc.length > 0);\n }\n }, [open, emails.cc.length, emails.bcc.length]);\n\n useEffect(() => {\n const wrapper = wrapperRef.current;\n\n if (!wrapper) return;\n\n // Focus in event (bubbles unlike React's onFocus)\n const handleFocusIn = () => {\n setOpen(true);\n };\n\n // Focus out event (bubbles unlike React's onBlur)\n const handleFocusOut = (e: FocusEvent) => {\n console.log(\"🚀 ~ handleFocusOut ~ e:\", e);\n const next = e.relatedTarget as HTMLElement | null;\n // Only close if the next focused element is outside the wrapper\n if (\n (next &&\n next.classList &&\n next.classList.contains(\"option-dropdown\")) ||\n (next && wrapper.contains(next))\n )\n return;\n console.log(\"why this \", next?.classList);\n setOpen(false);\n };\n\n wrapper.addEventListener(\"focusin\", handleFocusIn);\n wrapper.addEventListener(\"focusout\", handleFocusOut);\n\n return () => {\n wrapper.removeEventListener(\"focusin\", handleFocusIn);\n wrapper.removeEventListener(\"focusout\", handleFocusOut);\n };\n }, []);\n\n // Helper to display email recipients in collapsed view\n const getDisplayText = () => {\n if (\n emails.to.length === 0 &&\n emails.cc.length === 0 &&\n emails.bcc.length === 0\n ) {\n return \"Recipients\";\n }\n\n const parts = [];\n\n // Add TO recipients\n if (emails.to.length > 0) {\n parts.push(emails.to.map((e) => e.email).join(\", \"));\n }\n\n // Add CC recipients with \"cc:\" prefix\n if (emails.cc.length > 0) {\n parts.push(emails.cc.map((e) => e.email).join(\", \"));\n }\n\n // Add BCC recipients with \"bcc:\" prefix\n if (emails.bcc.length > 0) {\n parts.push(\"bcc: \" + emails.bcc.map((e) => e.email).join(\", \"));\n }\n\n return parts.join(\", \");\n };\n\n return (\n <div ref={wrapperRef} tabIndex={-1} className=\"relative\">\n {!open ? (\n <input\n type=\"text\"\n placeholder=\"Recipients\"\n className=\"input-header\"\n value={getDisplayText()}\n readOnly\n />\n ) : (\n <div>\n <InputForEmail\n name=\"To\"\n needCCAndBCC\n setShowCC={setShowCC}\n setShowBCC={setShowBCC}\n showBCC={showBCC}\n showCC={showCC}\n emails={emails.to}\n handleChange={(value) => {\n setEmails((prev) => ({\n ...prev,\n to: typeof value === \"function\" ? value(prev.to) : value,\n }));\n }}\n fetchOptions={fetchEmailOptions}\n />\n {showCC ? (\n <InputForEmail\n name=\"CC\"\n needCCAndBCC={false}\n setShowCC={setShowCC}\n setShowBCC={setShowBCC}\n showBCC={showBCC}\n showCC={showCC}\n emails={emails.cc}\n handleChange={(value) => {\n setEmails((prev) => ({\n ...prev,\n cc: typeof value === \"function\" ? value(prev.cc) : value,\n }));\n }}\n fetchOptions={fetchEmailOptions}\n />\n ) : null}\n {showBCC ? (\n <InputForEmail\n name=\"BCC\"\n needCCAndBCC={false}\n setShowCC={setShowCC}\n setShowBCC={setShowBCC}\n showBCC={showBCC}\n showCC={showCC}\n emails={emails.bcc}\n handleChange={(value) => {\n setEmails((prev) => ({\n ...prev,\n bcc: typeof value === \"function\" ? value(prev.bcc) : value,\n }));\n }}\n fetchOptions={fetchEmailOptions}\n />\n ) : null}\n </div>\n )}\n </div>\n );\n}\n\nexport default ReceiptsHeading;\n","import ReceiptsHeading from \"../ReceiptsHeading\";\nimport { useEmailContext, type EmailOption } from \"../EmailContext\";\n\nfunction GmailHeading({\n fetchEmailOptions,\n}: {\n fetchEmailOptions: (currentEmail: string) => Promise<EmailOption[]>;\n}) {\n const { subject, setSubject, isReply } = useEmailContext();\n\n return (\n <div className=\"gmail-header\">\n <ReceiptsHeading fetchEmailOptions={fetchEmailOptions} />\n <input\n type=\"text\"\n placeholder=\"Subject\"\n className=\"input-header\"\n value={isReply && !subject.startsWith(\"Re: \") ? `Re: ${subject}` : subject}\n onChange={(e) => setSubject(e.target.value)}\n />\n </div>\n );\n}\n\nexport default GmailHeading;\n","import { useEffect, useState, type ReactNode } from \"react\";\nimport EditorWrapper from \"../Editor/EditorWrapper\";\nimport GmailHeading from \"./GmailHeading\";\nimport { useEmailContext, type EmailOption } from \"./EmailContext\";\nimport type { EmailData } from \"./index\";\nimport { useTheme } from \"../../context/ThemeContext\";\n\nfunction GmailWrapperContent({\n initialData,\n isReply,\n fetchEmailOptions,\n handleChange,\n leftChildren,\n rightChildren,\n editorChildren,\n isEditorVisible = true,\n}: {\n initialData?: Partial<EmailData>;\n fetchEmailOptions: (currentEmail: string) => Promise<EmailOption[]>;\n handleChange: (emailData: EmailData) => void;\n leftChildren?: ReactNode;\n rightChildren?: ReactNode;\n isReply?: boolean;\n editorChildren?: ReactNode;\n isEditorVisible?: boolean;\n}) {\n const {\n emails,\n subject,\n attachments,\n setEmails,\n setSubject,\n setAttachments,\n setIsReply,\n } = useEmailContext();\n const { theme } = useTheme();\n const [bodyHTML, setBodyHTML] = useState(initialData?.body || \"\");\n const [emailData, setEmailData] = useState<EmailData>({\n to: initialData?.to || [],\n cc: initialData?.cc || [],\n bcc: initialData?.bcc || [],\n subject: initialData?.subject || \"\",\n body: initialData?.body || \"\",\n attachments: initialData?.attachments || [],\n isReply: isReply || false,\n });\n\n // Initialize context values from initialData on mount\n useEffect(() => {\n if (initialData) {\n if (initialData.to || initialData.cc || initialData.bcc) {\n setEmails({\n to: initialData.to || [],\n cc: initialData.cc || [],\n bcc: initialData.bcc || [],\n });\n }\n if (initialData.subject) {\n setSubject(initialData.subject);\n }\n if (initialData.attachments) {\n setAttachments(initialData.attachments);\n }\n if (initialData.body) {\n setBodyHTML(initialData.body);\n }\n }\n if (isReply !== undefined) {\n setIsReply(isReply);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const handleEditorChange = (html: string) => {\n setBodyHTML(html);\n };\n\n useEffect(() => {\n setEmailData((prev) => ({\n ...prev,\n to: emails.to,\n cc: emails.cc,\n bcc: emails.bcc,\n }));\n }, [emails]);\n\n useEffect(() => {\n setEmailData((prev) => ({\n ...prev,\n subject,\n }));\n }, [subject]);\n\n useEffect(() => {\n setEmailData((prev) => ({\n ...prev,\n body: bodyHTML,\n }));\n }, [bodyHTML]);\n\n useEffect(() => {\n setEmailData((prev) => ({\n ...prev,\n attachments,\n }));\n }, [attachments]);\n\n useEffect(() => {\n setEmailData((prev) => ({\n ...prev,\n isReply,\n }));\n }, [isReply]);\n\n useEffect(() => {\n handleChange(emailData);\n }, [emailData, handleChange]);\n\n return (\n <div className=\"react-mail-inbox-root gmail-wrapper\" data-theme={theme}>\n {leftChildren}\n <GmailHeading fetchEmailOptions={fetchEmailOptions} />\n <EditorWrapper\n initialHTML={initialData?.body}\n onChange={handleEditorChange}\n editorChildren={editorChildren}\n isEditorVisible={isEditorVisible}\n />\n {rightChildren}\n </div>\n );\n}\n\nexport default GmailWrapperContent;\n","import { type ReactNode } from \"react\";\nimport { EmailProvider, type EmailOption } from \"./EmailContext\";\nimport GmailWrapperContent from \"./GmailWrapperContent\";\nimport \"./index.css\";\n\nexport interface EmailData {\n to: EmailOption[];\n cc: EmailOption[];\n bcc: EmailOption[];\n subject: string;\n body: string;\n attachments: File[];\n isReply?: boolean;\n}\n\nfunction GmailWrapper({\n fetchEmailOptions,\n handleChange,\n initialData,\n leftChildren,\n rightChildren,\n isReply,\n}: {\n fetchEmailOptions: (currentEmail: string) => Promise<EmailOption[]>;\n handleChange: (emailData: EmailData) => void;\n initialData?: Partial<EmailData>;\n leftChildren?: ReactNode;\n rightChildren?: ReactNode;\n isReply?: boolean;\n}) {\n return (\n <EmailProvider>\n <GmailWrapperContent\n fetchEmailOptions={fetchEmailOptions}\n handleChange={handleChange}\n initialData={initialData}\n isReply={isReply}\n leftChildren={leftChildren}\n rightChildren={rightChildren}\n />\n </EmailProvider>\n );\n}\n\nexport default GmailWrapper;\n","import { type ReactNode } from \"react\";\nimport { ThemeProvider, type Theme } from \"../../context/ThemeContext\";\nimport GmailWrapper, { type EmailData } from \"../GmailWrapper\";\nimport type { EmailOption } from \"../GmailWrapper/EmailContext\";\n\nexport { useTheme, type Theme } from \"../../context/ThemeContext\";\nexport type { EmailData, EmailOption };\n\ninterface GmailInboxProps {\n fetchEmailOptions: (currentEmail: string) => Promise<EmailOption[]>;\n handleChange: (emailData: EmailData) => void;\n initialData?: Partial<EmailData>;\n initialTheme?: Theme;\n onThemeChange?: (theme: Theme) => void;\n leftChildren?: ReactNode;\n rightChildren?: ReactNode;\n}\n\nfunction GmailInbox({\n fetchEmailOptions,\n handleChange,\n initialData,\n initialTheme = \"dark\",\n onThemeChange,\n leftChildren,\n rightChildren,\n}: GmailInboxProps) {\n return (\n <ThemeProvider initialTheme={initialTheme} onThemeChange={onThemeChange}>\n <GmailWrapper\n fetchEmailOptions={fetchEmailOptions}\n handleChange={handleChange}\n initialData={initialData}\n leftChildren={leftChildren}\n rightChildren={rightChildren}\n />\n </ThemeProvider>\n );\n}\n\nexport default GmailInbox;\n","// Main component export\nimport GmailInboxComponent from './Components/GmailInbox';\nexport { GmailInboxComponent as GmailInbox };\nexport default GmailInboxComponent;\n\n// Type exports\nexport type { EmailData, EmailOption } from './Components/GmailInbox';\nexport { useTheme, type Theme } from './context/ThemeContext';\n\n// Re-export types for convenience\nexport type { Alignment } from './Components/core/AlignmentSelect';\n"]}
1
+ {"version":3,"sources":["../src/context/ThemeContext.tsx","../src/Components/GmailWrapper/EmailContext.tsx","../src/utils/toolbar.ts","../src/Components/core/Icon/helper.ts","../src/Components/core/Icon/index.tsx","../src/Components/core/MyPopup/index.tsx","../src/utils/core.ts","../src/Components/core/FontSelect/index.tsx","../src/Components/core/FontSize/index.tsx","../src/Components/core/ColorPicker/index.tsx","../src/Components/core/AlignmentSelect/index.tsx","../src/hook/useOnClickListener.tsx","../src/Components/core/FloatingLinkEditor/index.tsx","../src/hook/useFileUpload.ts","../src/Components/core/FileUploader/index.tsx","../src/Components/core/FileUploader/FilePreview.tsx","../src/Components/Editor/Toolbar/index.tsx","../src/Themes/lexicalEditortheme.ts","../src/plugins/SetInitialHTML.tsx","../src/plugins/OnChangePlugin.tsx","../src/Components/Editor/EditorWrapper/index.tsx","../src/utils/common.ts","../src/Components/GmailWrapper/ReceiptsHeading/InputWIthDropDown.tsx","../src/Components/GmailWrapper/ReceiptsHeading/InputForEmail.tsx","../src/Components/GmailWrapper/ReceiptsHeading/index.tsx","../src/Components/GmailWrapper/GmailHeading/index.tsx","../src/Components/GmailWrapper/GmailWrapperContent.tsx","../src/Components/GmailWrapper/index.tsx","../src/Components/GmailInbox/index.tsx","../src/index.tsx"],"names":["ThemeContext","createContext","useTheme","context","useContext","ThemeProvider","children","initialTheme","onThemeChange","theme","setTheme","useState","useEffect","toggleTheme","prev","jsx","EmailContext","useEmailContext","EmailProvider","emails","setEmails","isReply","setIsReply","subject","setSubject","showCC","setShowCC","showBCC","setShowBCC","attachments","setAttachments","eventTypes","toolbarComponentType","pluginList","icons","MdUndo","MdRedo","MdFormatBold","MdFormatItalic","MdFormatUnderlined","MdTextFormat","MdFormatAlignLeft","MdFormatAlignRight","MdFormatAlignCenter","MdFormatListBulleted","MdFormatListNumbered","MdFormatIndentDecrease","MdOutlineFormatIndentIncrease","MdFormatClear","MdStrikethroughS","MdFormatQuote","MdArrowDropDown","MdAttachFile","MdLink","MdImage","MdCheck","MdTextFields","MdEdit","MdClose","helper_default","Icon","name","size","color","className","IconComponent","Icon_default","MyPopup","trigger","popUpDirection","popupRef","useRef","handleClose","Popup","close","MyPopup_default","fontOptions","OPTIONS","GREYS","ACCENTS","PALETTE","core_default","FontSelect","value","onChange","jsxs","o","font","FontSizePicker","Swatch","selected","onClick","label","ColorPicker","update","which","c","col","r","AlignmentSelect","onSelect","key","opt","active","LowPriority","rgbToHex","rgb","match","g","b","a","x","hex","useOnClickListener","editor","useLexicalComposerContext","blockType","setBlockType","selectedEventTypes","setSelectedEventTypes","isLink","setIsLink","updateToolbar","useCallback","selection","$getSelection","newState","$isRangeSelection","anchorNode","element","elementKey","elementDOM","$isListNode","parentList","$getNearestNodeOfType","ListNode","type","node","getSelectedNode","parent","$isLinkNode","textNodeDOM","parentElement","styleElement","computedStyle","fontFamily","firstFont","fontSize","fontSizeNum","backgroundColor","hexColor","hexBgColor","textAlign","mergeRegister","editorState","SELECTION_CHANGE_COMMAND","event","FORMAT_TEXT_COMMAND","FORMAT_ELEMENT_COMMAND","UNDO_COMMAND","REDO_COMMAND","formatNumberedList","formatBulletList","addIndent","removeIndent","applyFontColor","applyFontFamily","applyFontSize","insertLink","INDENT_CONTENT_COMMAND","$patchStyleText","selectedFontSize","i","colorObj","TOGGLE_LINK_COMMAND","OUTDENT_CONTENT_COMMAND","INSERT_UNORDERED_LIST_COMMAND","REMOVE_LIST_COMMAND","INSERT_ORDERED_LIST_COMMAND","anchor","focus","focusNode","$isAtNodeEnd","useOnClickListener_default","FloatingLinkEditor","editorRef","inputRef","mouseDownRef","linkUrl","setLinkUrl","isEditMode","setEditMode","lastSelection","setLastSelection","updateLinkEditor","nativeSelection","editorElem","activeElement","rootElement","domRange","rect","inner","positionEditorElement","e","editorWidth","editorHeight","viewportWidth","viewportHeight","top","left","FloatingLinkEditor_default","FILE_UPLOAD_ERROR","MAX_NUMBER_OF_FILES_ALLOWED","MAX_SIZE_OF_FILE_ALLOWED_MB","getId","getMBs","bytes","kb","mb","useFileUpload","accept","maxSize","maxFiles","multiple","isDisabled","replaceAfterUpload","files","handleFileChange","isFileDialogOpen","setIsFileDialogOpen","fileUploaded","setFileUploaded","rejectedFiles","setRejectedFile","getErrorText","errorCode","getRootProps","getInputProps","isDragActive","open","useDropzone","_acceptedFiles","fileRejections","validFiles","file","blob","heic2any","blobArray","convertedFile","err","msg","newFiles","mappedRejections","item","readableErrors","fileName","ext","removeFile","uuid","clearRejectedFiles","f","FileUploader","openFileDialog","FileUploader_default","FilePreview","index","onRemove","onView","sizeBytes","urlFromProp","url","useMemo","formatSizeShort","handleView","handleRemove","getToolbarComponent","plugin","state","setState","getComponent","setToggle","toggle","option","ToolBar","rightChildren","leftChildren","updatedFiles","_file","createPortal","Toolbar_default","lexicalEditorTheme","lexicalEditortheme_default","SetInitialHTML","initialHTML","dom","nodes","$generateNodesFromDOM","root","$getRoot","SetInitialHTML_default","OnChangePlugin","html","$generateHtmlFromNodes","onError","error","EditorWrapper","placeholder","minHeight","editorChildren","isEditorVisible","LexicalComposer","LinkNode","ListItemNode","AutoLinkNode","RichTextPlugin","ContentEditable","LexicalErrorBoundary","HistoryPlugin","AutoFocusPlugin","ListPlugin","LinkPlugin","EditorWrapper_default","isValidEmail","email","InputWithDropDown","fetchOptions","currentEmail","setCurrentEmail","popupOpen","setPopupOpen","selectedIndex","setSelectedIndex","options","setOptions","loading","setLoading","emailRefs","optionRefs","data","focusInput","addEmail","handleInputKeyDown","lastIdx","lastChip","removeEmailAt","next","prevIdx","prevChip","Fragment","idx","el","ev","val","InputWIthDropDown_default","InputForEmail","needCCAndBCC","handleChange","InputForEmail_default","ReceiptsHeading","fetchEmailOptions","setOpen","wrapperRef","wrapper","handleFocusIn","handleFocusOut","parts","ReceiptsHeading_default","GmailHeading","GmailHeading_default","GmailWrapperContent","initialData","bodyHTML","setBodyHTML","emailData","setEmailData","handleEditorChange","GmailWrapperContent_default","GmailWrapper","GmailWrapper_default","GmailInbox","GmailInbox_default","index_default"],"mappings":"g1DAUA,IAAMA,EAAAA,CAAeC,aAAAA,CAA4C,MAAS,CAAA,CAE7DC,EAAAA,CAAW,IAAM,CAC5B,IAAMC,CAAAA,CAAUC,UAAAA,CAAWJ,EAAY,CAAA,CACvC,GAAI,CAACG,CAAAA,CACH,MAAM,IAAI,KAAA,CAAM,8CAA8C,EAEhE,OAAOA,CACT,CAAA,CAQaE,EAAAA,CAA8C,CAAC,CAC1D,SAAAC,CAAAA,CACA,YAAA,CAAAC,CAAAA,CAAe,MAAA,CACf,aAAA,CAAAC,CACF,IAAM,CACJ,GAAM,CAACC,CAAAA,CAAOC,CAAQ,CAAA,CAAIC,SAAgBJ,CAAY,CAAA,CAEtDK,SAAAA,CAAU,IAAM,CAEVJ,CAAAA,EACFA,EAAcC,CAAK,EAEvB,CAAA,CAAG,CAACA,CAAAA,CAAOD,CAAa,CAAC,CAAA,CAEzB,IAAMK,CAAAA,CAAc,IAAM,CACxBH,CAAAA,CAAUI,GAAUA,CAAAA,GAAS,OAAA,CAAU,MAAA,CAAS,OAAQ,EAC1D,CAAA,CAEA,OACEC,GAAAA,CAACf,EAAAA,CAAa,QAAA,CAAb,CAAsB,KAAA,CAAO,CAAE,MAAAS,CAAAA,CAAO,WAAA,CAAAI,CAAY,CAAA,CAChD,QAAA,CAAAP,CAAAA,CACH,CAEJ,ECfA,IAAMU,EAAAA,CAAef,cAA4C,MAAS,CAAA,CAE7DgB,EAAkB,IAAM,CACnC,IAAMd,CAAAA,CAAUC,UAAAA,CAAWY,EAAY,EACvC,GAAI,CAACb,CAAAA,CACH,MAAM,IAAI,KAAA,CAAM,sDAAsD,CAAA,CAExE,OAAOA,CACT,CAAA,CAMae,EAAAA,CAA8C,CAAC,CAAE,QAAA,CAAAZ,CAAS,CAAA,GAAM,CAC3E,GAAM,CAACa,EAAQC,CAAS,CAAA,CAAIT,QAAAA,CAAgB,CAC1C,EAAA,CAAI,GACJ,EAAA,CAAI,EAAC,CACL,GAAA,CAAK,EACP,CAAC,CAAA,CACK,CAACU,CAAAA,CAASC,CAAU,CAAA,CAAIX,QAAAA,CAAS,KAAK,CAAA,CACtC,CAACY,CAAAA,CAASC,CAAU,CAAA,CAAIb,QAAAA,CAAS,EAAE,CAAA,CACnC,CAACc,CAAAA,CAAQC,CAAS,CAAA,CAAIf,QAAAA,CAAS,KAAK,CAAA,CACpC,CAACgB,CAAAA,CAASC,CAAU,CAAA,CAAIjB,QAAAA,CAAS,KAAK,CAAA,CACtC,CAACkB,CAAAA,CAAaC,CAAc,CAAA,CAAInB,QAAAA,CAAiB,EAAE,CAAA,CAGzD,OAAAC,SAAAA,CAAU,IAAM,CACd,QAAQ,GAAA,CAAI,+BAAA,CAAiCO,CAAM,EACrD,CAAA,CAAG,CAACA,CAAM,CAAC,CAAA,CAGTJ,GAAAA,CAACC,EAAAA,CAAa,QAAA,CAAb,CACC,MAAO,CACL,MAAA,CAAAG,CAAAA,CACA,SAAA,CAAAC,CAAAA,CACA,OAAA,CAAAG,EACA,UAAA,CAAAC,CAAAA,CACA,OAAAC,CAAAA,CACA,SAAA,CAAAC,EACA,OAAA,CAAAC,CAAAA,CACA,UAAA,CAAAC,CAAAA,CACA,WAAA,CAAAC,CAAAA,CACA,eAAAC,CAAAA,CACA,OAAA,CAAAT,CAAAA,CACA,UAAA,CAAAC,CACF,CAAA,CACC,SAAAhB,CAAAA,CACH,CAEJ,CAAA,CCpFO,IAAMyB,CAAAA,CAAa,CAWxB,KAAM,MAAA,CACN,IAAA,CAAM,MAAA,CACN,IAAA,CAAM,MAAA,CACN,MAAA,CAAQ,SACR,SAAA,CAAW,WAAA,CACX,KAAA,CAAO,CACL,IAAA,CAAM,QAER,EACA,IAAA,CAAM,MAAA,CAEN,IAAA,CAAM,MAAA,CAEN,UAAA,CAAY,YAAA,CACZ,UAAA,CAAY,YAAA,CACZ,KAAA,CAAO,CACL,IAAA,CAAM,OAER,CAAA,CACA,MAAA,CAAQ,SACR,cAAA,CAAgB,gBAAA,CAEhB,MAAA,CAAQ,QAAA,CACR,WAAY,YAAA,CAEZ,QAAA,CAAU,UAAA,CACV,UAAA,CAAY,YACd,CAAA,CACaC,CAAAA,CAAuB,CAClC,OAAA,CAAS,SAAA,CACT,OAAA,CAAS,UACT,SAAA,CAAW,WACb,CAAA,CAEaC,EAAAA,CAAa,CACxB,CACE,KAAMD,CAAAA,CAAqB,OAAA,CAC3B,IAAA,CAAM,SAAA,CACN,EAAA,CAAI,sCAAA,CACJ,QAAS,CACP,CACE,IAAA,CAAMD,CAAAA,CAAW,IAAA,CACjB,IAAA,CAAMC,EAAqB,SAAA,CAC3B,IAAA,CAAM,MAAA,CACN,EAAA,CAAI,sCACN,CAAA,CACA,CACE,IAAA,CAAMD,CAAAA,CAAW,IAAA,CACjB,IAAA,CAAMC,CAAAA,CAAqB,SAAA,CAC3B,KAAM,MAAA,CACN,EAAA,CAAI,sCACN,CAAA,CACA,CACE,IAAA,CAAMA,EAAqB,OAAA,CAC3B,EAAA,CAAI,sCACN,CAAA,CACA,CACE,IAAA,CAAMD,EAAW,UAAA,CACjB,IAAA,CAAMC,CAAAA,CAAqB,SAAA,CAC3B,EAAA,CAAI,sCACN,EACA,CACE,IAAA,CAAMA,CAAAA,CAAqB,OAAA,CAC3B,EAAA,CAAI,sCACN,EACA,CACE,IAAA,CAAMD,CAAAA,CAAW,QAAA,CACjB,IAAA,CAAMC,CAAAA,CAAqB,UAC3B,EAAA,CAAI,sCACN,EACA,CACE,IAAA,CAAMA,EAAqB,OAAA,CAC3B,EAAA,CAAI,sCACN,CAAA,CACA,CACE,IAAA,CAAMD,EAAW,IAAA,CACjB,IAAA,CAAMC,CAAAA,CAAqB,SAAA,CAC3B,IAAA,CAAM,MAAA,CACN,GAAI,sCACN,CAAA,CACA,CACE,IAAA,CAAMD,CAAAA,CAAW,MAAA,CACjB,KAAMC,CAAAA,CAAqB,SAAA,CAC3B,IAAA,CAAM,QAAA,CACN,EAAA,CAAI,sCACN,EACA,CACE,IAAA,CAAMD,CAAAA,CAAW,SAAA,CACjB,IAAA,CAAMC,CAAAA,CAAqB,UAC3B,IAAA,CAAM,WAAA,CACN,EAAA,CAAI,sCACN,CAAA,CACA,CACE,KAAMD,CAAAA,CAAW,KAAA,CAAS,IAAA,CAC1B,IAAA,CAAMC,CAAAA,CAAqB,SAAA,CAC3B,KAAM,OAAA,CACN,EAAA,CAAI,sCACN,CAAA,CACA,CACE,IAAA,CAAMA,EAAqB,OAAA,CAC3B,EAAA,CAAI,sCACN,CAAA,CACA,CACE,IAAA,CAAMD,EAAW,KAAA,CAAM,IAAA,CACvB,IAAA,CAAMC,CAAAA,CAAqB,SAAA,CAC3B,EAAA,CAAI,sCACN,CAAA,CACA,CACE,IAAA,CAAMA,CAAAA,CAAqB,OAAA,CAC3B,EAAA,CAAI,sCACN,CAAA,CACA,CACE,IAAA,CAAMD,CAAAA,CAAW,UAAA,CACjB,IAAA,CAAMC,EAAqB,SAAA,CAC3B,IAAA,CAAM,aAAA,CACN,EAAA,CAAI,sCACN,CAAA,CACA,CACE,IAAA,CAAMD,CAAAA,CAAW,UAAA,CACjB,IAAA,CAAMC,CAAAA,CAAqB,SAAA,CAC3B,KAAM,eAAA,CACN,EAAA,CAAI,sCACN,CAAA,CACA,CACE,IAAA,CAAMA,EAAqB,OAAA,CAC3B,EAAA,CAAI,sCACN,CAAA,CACA,CACE,IAAA,CAAMD,EAAW,cAAA,CACjB,IAAA,CAAMC,CAAAA,CAAqB,SAAA,CAC3B,IAAA,CAAM,YAAA,CACN,GAAI,sCACN,CAAA,CACA,CACE,IAAA,CAAMD,CAAAA,CAAW,MAAA,CACjB,KAAMC,CAAAA,CAAqB,SAAA,CAC3B,IAAA,CAAM,YAAA,CACN,EAAA,CAAI,sCACN,CACF,CACF,CAAA,CACA,CACE,IAAA,CAAM,WAAA,CACN,IAAA,CAAMD,EAAW,UAAA,CACjB,IAAA,CAAM,QAAA,CACN,EAAA,CAAI,sCACN,CAAA,CACA,CACE,IAAA,CAAM,WAAA,CACN,IAAA,CAAMA,CAAAA,CAAW,IAAA,CACjB,IAAA,CAAM,OACN,EAAA,CAAI,sCACN,CAOF,CAAA,CC/IA,IAAMG,GAAQ,CACZ,IAAA,CAAMC,MAAAA,CACN,IAAA,CAAMC,MAAAA,CACN,IAAA,CAAMC,aACN,MAAA,CAAQC,cAAAA,CACR,UAAWC,kBAAAA,CACX,KAAA,CAAOC,aACP,SAAA,CAAWC,iBAAAA,CACX,UAAA,CAAYC,kBAAAA,CACZ,WAAA,CAAaC,mBAAAA,CACb,cAAeC,oBAAAA,CACf,WAAA,CAAaC,oBAAAA,CACb,UAAA,CAAYC,sBAAAA,CACZ,UAAA,CAAYC,8BACZ,YAAA,CAAcC,aAAAA,CACd,aAAA,CAAeC,gBAAAA,CACf,SAAA,CAAWC,aAAAA,CACX,UAAWC,eAAAA,CACX,OAAA,CAASX,YAAAA,CACT,MAAA,CAAQY,YAAAA,CACR,IAAA,CAAMC,OACN,KAAA,CAAOC,OAAAA,CACP,KAAA,CAAOC,OAAAA,CACP,UAAA,CAAYC,YAAAA,CACZ,KAAMC,MAAAA,CACN,KAAA,CAAOC,OACT,CAAA,CAEOC,EAAAA,CAAQzB,EAAAA,CCjBf,IAAM0B,EAAAA,CAA4B,CAAC,CAAE,KAAAC,CAAAA,CAAM,IAAA,CAAAC,CAAAA,CAAO,EAAA,CAAI,KAAA,CAAAC,CAAAA,CAAO,UAAAC,CAAU,CAAA,GAAM,CAG3E,IAAMC,CAAAA,CAAgBN,EAAAA,CAAME,CAAI,CAAA,CAEhC,OAAKI,CAAAA,CAKElD,GAAAA,CAACkD,CAAAA,CAAA,CAAc,KAAMH,CAAAA,CAAM,KAAA,CAAOC,CAAAA,CAAO,SAAA,CAAWC,CAAAA,CAAW,CAAA,EAJpE,QAAQ,IAAA,CAAK,CAAA,MAAA,EAASH,CAAI,CAAA,YAAA,CAAc,CAAA,CACjC,IAAA,CAIX,EAEOK,CAAAA,CAAQN,EAAAA,CCzCf,IAAMO,GAAkC,CAAC,CACvC,OAAA,CAAAC,CAAAA,CACA,QAAA,CAAA9D,CAAAA,CACA,eAAA+D,CAAAA,CAAiB,YACnB,CAAA,GAAM,CACJ,IAAMC,CAAAA,CAAWC,OAAY,IAAI,CAAA,CAE3BC,CAAAA,CAAc,IAAM,CACpBF,CAAAA,CAAS,SAAW,OAAOA,CAAAA,CAAS,OAAA,CAAQ,KAAA,EAAU,UAAA,EACxDA,CAAAA,CAAS,QAAQ,KAAA,GAErB,CAAA,CAUA,OACEvD,GAAAA,CAAC0D,EAAAA,CAAA,CACC,GAAA,CAAKH,CAAAA,CACL,OAAA,CAASF,CAAAA,CACT,oBAAA,CAAoB,IAAA,CACpB,mBAAkB,IAAA,CAClB,QAAA,CAAUC,CAAAA,CACV,SAAA,CAAU,kBAAA,CACT,QAAA,CAhBkBK,GAKdpE,CAAAA,CAAS,CAAE,KAAA,CAJI,IAAM,CAC1BoE,CAAAA,KACAF,CAAAA,GACF,CACuC,CAAC,CAAA,CAYxC,CAEJ,EAEOG,CAAAA,CAAQR,EAAAA,CC5Cf,IAAMS,EAAAA,CAAc,CAClB,CACE,MAAO,YAAA,CACP,KAAA,CAAO,YAAA,CACP,KAAA,CAAO,CAAE,UAAA,CAAY,YAAa,CACpC,CAAA,CACA,CAAE,KAAA,CAAO,OAAA,CAAS,KAAA,CAAO,QAAS,KAAA,CAAO,CAAE,UAAA,CAAY,OAAQ,CAAE,CAAA,CACjE,CACE,KAAA,CAAO,aAAA,CACP,KAAA,CAAO,WAAA,CACP,KAAA,CAAO,CAAE,WAAY,WAAY,CACnC,CAAA,CACA,CACE,KAAA,CAAO,MAAA,CACP,MAAO,MAAA,CACP,KAAA,CAAO,CAAE,UAAA,CAAY,MAAA,CAAQ,aAAA,CAAe,QAAS,CACvD,CAAA,CACA,CAAE,KAAA,CAAO,QAAA,CAAU,KAAA,CAAO,SAAU,KAAA,CAAO,CAAE,YAAa,WAAY,CAAE,EACxE,CACE,KAAA,CAAO,eAAA,CACP,KAAA,CAAO,eAAA,CACP,KAAA,CAAO,CAAE,UAAA,CAAY,wBAAyB,CAChD,CAAA,CACA,CACE,KAAA,CAAO,WACP,KAAA,CAAO,UAAA,CACP,KAAA,CAAO,CAAE,UAAA,CAAY,iBAAkB,CACzC,CAAA,CACA,CACE,KAAA,CAAO,SAAA,CACP,KAAA,CAAO,SAAA,CACP,MAAO,CAAE,UAAA,CAAY,gBAAiB,CACxC,CAAA,CACA,CACE,MAAO,QAAA,CACP,KAAA,CAAO,QAAA,CACP,KAAA,CAAO,CAAE,UAAA,CAAY,oBAAqB,CAC5C,CAAA,CACA,CACE,KAAA,CAAO,cAAA,CACP,KAAA,CAAO,eACP,KAAA,CAAO,CAAE,UAAA,CAAY,0BAA2B,CAClD,CAAA,CACA,CACE,KAAA,CAAO,SAAA,CACP,KAAA,CAAO,SAAA,CACP,KAAA,CAAO,CAAE,WAAY,qBAAsB,CAC7C,CACF,CAAA,CACaC,EAAAA,CAAU,CACrB,CAAE,GAAA,CAAK,OAAA,CAAS,KAAA,CAAO,OAAA,CAAS,MAAA,CAAQ,EAAG,EAC3C,CAAE,GAAA,CAAK,QAAA,CAAU,KAAA,CAAO,QAAA,CAAU,MAAA,CAAQ,EAAG,CAAA,CAC7C,CAAE,GAAA,CAAK,OAAA,CAAS,KAAA,CAAO,OAAA,CAAS,OAAQ,EAAG,CAAA,CAC3C,CAAE,GAAA,CAAK,MAAA,CAAQ,KAAA,CAAO,OAAQ,MAAA,CAAQ,EAAG,CAC3C,CAAA,CACaC,EAAAA,CAAQ,CACnB,UACA,SAAA,CACA,SAAA,CACA,SAAA,CACA,SAAA,CACA,SAAA,CACA,SAAA,CACA,SACF,CAAA,CACaC,EAAAA,CAAU,CACrB,SAAA,CACA,SAAA,CACA,SAAA,CACA,UACA,SAAA,CACA,SAAA,CACA,SAAA,CACA,SACF,CAAA,CAEaC,EAAAA,CAAU,CACrB,CACE,SAAA,CACA,SAAA,CACA,SAAA,CACA,SAAA,CACA,SAAA,CACA,UACA,SAAA,CACA,SACF,CAAA,CACA,CACE,SAAA,CACA,SAAA,CACA,UACA,SAAA,CACA,SAAA,CACA,SAAA,CACA,SAAA,CACA,SACF,CAAA,CACA,CACE,SAAA,CACA,SAAA,CACA,SAAA,CACA,SAAA,CACA,SAAA,CACA,SAAA,CACA,UACA,SACF,CAAA,CACA,CACE,SAAA,CACA,SAAA,CACA,SAAA,CACA,UACA,SAAA,CACA,SAAA,CACA,SAAA,CACA,SACF,CAAA,CACA,CACE,UACA,SAAA,CACA,SAAA,CACA,SAAA,CACA,SAAA,CACA,SAAA,CACA,SAAA,CACA,SACF,CAAA,CACA,CACE,SAAA,CACA,SAAA,CACA,SAAA,CACA,SAAA,CACA,UACA,SAAA,CACA,SAAA,CACA,SACF,CACF,CAAA,CACOC,EAAAA,CAAQL,GCjIA,SAARM,EAAAA,CAA4B,CACjC,KAAA,CAAAC,CAAAA,CAAQ,OAAA,CACR,QAAA,CAAAC,CACF,CAAA,CAAoB,CAClB,OACErE,GAAAA,CAAC,KAAA,CAAA,CACC,QAAA,CAAAA,IAAC4D,CAAAA,CAAA,CACC,OAAA,CACEU,IAAAA,CAAC,QAAA,CAAA,CAAO,SAAA,CAAU,sBACf,QAAA,CAAA,CAAAJ,EAAAA,EAAa,KAAMK,CAAAA,EAAMA,CAAAA,CAAE,QAAUH,CAAK,CAAA,EAAG,KAAA,CAC9CpE,GAAAA,CAACmD,CAAAA,CAAA,CAAK,KAAK,WAAA,CAAY,CAAA,CAAA,CACzB,CAAA,CAED,QAAA,CAAA,CAAC,CAAE,KAAA,CAAAQ,CAAM,CAAA,GACR3D,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,KAAA,CACb,QAAA,CAAAA,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,cAAA,CACZ,QAAA,CAAAkE,EAAAA,CAAY,GAAA,CAAKM,GAChBxE,GAAAA,CAAC,QAAA,CAAA,CACC,SAAA,CAAU,iBAAA,CAEV,OAAA,CAAS,IAAM,CACbqE,CAAAA,CAASG,CAAAA,CAAK,KAAK,CAAA,CACnBb,CAAAA,GACF,EACA,KAAA,CAAO,CAAE,GAAGa,CAAAA,CAAK,KAAM,CAAA,CACvB,SAAAF,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,aAAA,CACZ,QAAA,CAAA,CAAAF,CAAAA,GAAUI,EAAK,KAAA,EAASxE,GAAAA,CAACmD,CAAAA,CAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,EAC3CqB,CAAAA,CAAK,KAAA,CAAA,CACR,CAAA,CAAA,CATKA,CAAAA,CAAK,KAUZ,CACD,EACH,CAAA,CACF,CAAA,CAEJ,CAAA,CACF,CAEJ,CC/Be,SAARC,EAAAA,CAAgC,CACrC,KAAA,CAAAL,CAAAA,CAAQ,QAAA,CACR,QAAA,CAAAC,CAAAA,CAAW,IAAM,CAAC,CACpB,CAAA,CAAwB,CACtB,OACErE,GAAAA,CAAC,KAAA,CAAA,CACC,SAAAA,GAAAA,CAAC4D,CAAAA,CAAA,CACC,OAAA,CACEU,IAAAA,CAAC,QAAA,CAAA,CAAO,UAAU,qBAAA,CAChB,QAAA,CAAA,CAAAtE,GAAAA,CAACmD,CAAAA,CAAA,CAAK,IAAA,CAAK,aAAa,CAAA,CACxBnD,GAAAA,CAACmD,CAAAA,CAAA,CAAK,IAAA,CAAK,WAAA,CAAY,GACzB,CAAA,CAED,QAAA,CAAA,CAAC,CAAE,KAAA,CAAAQ,CAAM,CAAA,GACR3D,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,KAAA,CACb,QAAA,CAAAA,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,cAAA,CACZ,QAAA,CAAA8D,EAAAA,CAAQ,GAAA,CAAKU,CAAAA,EACZxE,GAAAA,CAAC,UACC,SAAA,CAAU,iBAAA,CAEV,OAAA,CAAS,IAAM,CACbqE,CAAAA,CAASG,EAAK,GAAG,CAAA,CACjBb,CAAAA,GACF,CAAA,CACA,KAAA,CAAO,CAAE,QAAA,CAAU,CAAA,EAAGa,CAAAA,CAAK,MAAM,CAAA,EAAA,CAAK,CAAA,CACtC,SAAAF,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,aAAA,CACZ,QAAA,CAAA,CAAAF,CAAAA,GAAUI,EAAK,GAAA,EAAOxE,GAAAA,CAACmD,CAAAA,CAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,EACzCqB,CAAAA,CAAK,KAAA,CAAA,CACR,CAAA,CAAA,CATKA,CAAAA,CAAK,GAUZ,CACD,EACH,CAAA,CACF,CAAA,CAEJ,CAAA,CACF,CAEJ,CCnCA,SAASE,CAAAA,CAAO,CAAE,MAAA1B,CAAAA,CAAO,QAAA,CAAA2B,CAAAA,CAAU,OAAA,CAAAC,CAAAA,CAAS,KAAA,CAAAC,CAAM,CAAA,CAAgB,CAChE,OACE7E,GAAAA,CAAC,QAAA,CAAA,CACC,SAAA,CAAU,SACV,KAAA,CAAO6E,CAAAA,EAAS7B,CAAAA,CAChB,cAAA,CAAc2B,CAAAA,CACd,OAAA,CAAS,IAAMC,CAAAA,CAAQ5B,CAAK,EAC5B,KAAA,CAAO,CAAE,WAAYA,CAAM,CAAA,CAC1B,QAAA,CAAA2B,CAAAA,EACC3E,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,OAAA,CAAQ,OAAA,CAAQ,WAAA,CAAY,aAAA,CAAW,IAAA,CACpD,QAAA,CAAAA,IAAC,MAAA,CAAA,CACC,CAAA,CAAE,iBAAA,CACF,MAAA,CAAO,OAAA,CACP,WAAA,CAAY,IACZ,aAAA,CAAc,OAAA,CACd,cAAA,CAAe,OAAA,CACf,IAAA,CAAK,MAAA,CACP,EACF,CAAA,CAEJ,CAEJ,CAYe,SAAR8E,EAAAA,CAA6B,CAClC,MAAAV,CAAAA,CAAQ,CAAE,UAAA,CAAY,SAAA,CAAW,IAAA,CAAM,SAAU,EACjD,QAAA,CAAAC,CAAAA,CAAW,IAAM,CAAC,CACpB,CAAA,CAAqB,CACnB,SAASU,CAAAA,CAAOC,CAAAA,CAAyBhC,CAAAA,CAAe,CACtDqB,CAAAA,CAAS,CAAE,GAAGD,CAAAA,CAAO,CAACY,CAAK,EAAGhC,CAAM,CAAC,EACvC,CAEA,OACEhD,GAAAA,CAAC,KAAA,CAAA,CACC,QAAA,CAAAA,IAAC4D,CAAAA,CAAA,CACC,OAAA,CACEU,IAAAA,CAAC,QAAA,CAAA,CAAO,SAAA,CAAU,sBAChB,QAAA,CAAA,CAAAtE,GAAAA,CAACmD,CAAAA,CAAA,CAAK,IAAA,CAAK,SAAA,CAAU,EACrBnD,GAAAA,CAACmD,CAAAA,CAAA,CAAK,IAAA,CAAK,WAAA,CAAY,CAAA,CAAA,CACzB,EAED,QAAA,CAAA,CAAC,CAAE,KAAA,CAAAQ,CAAM,CAAA,GACR3D,GAAAA,CAAC,OACC,SAAA,CAAU,eAAA,CACV,IAAA,CAAK,QAAA,CACL,YAAA,CAAW,eAAA,CACX,SAAAsE,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,eAAA,CACb,QAAA,CAAA,CAAAA,IAAAA,CAAC,WAAQ,SAAA,CAAU,cAAA,CAAe,iBAAA,CAAgB,UAAA,CAChD,QAAA,CAAA,CAAAtE,GAAAA,CAAC,MAAG,EAAA,CAAG,UAAA,CAAW,QAAA,CAAA,kBAAA,CAAgB,CAAA,CAElCA,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,KAAA,CACZ,QAAA,CAAA+D,EAAAA,CAAM,GAAA,CAAKkB,CAAAA,EACVjF,GAAAA,CAAC0E,EAAA,CAEC,KAAA,CAAOO,CAAAA,CACP,QAAA,CAAUb,CAAAA,CAAM,UAAA,GAAea,EAC/B,OAAA,CAAUC,CAAAA,EAAQ,CAChBH,CAAAA,CAAO,YAAA,CAAcG,CAAG,EACxBvB,CAAAA,GACF,CAAA,CACA,KAAA,CAAOsB,CAAAA,CAAAA,CAPFA,CAAAA,CAAI,IAQX,CACD,CAAA,CACH,CAAA,CAEAjF,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,iBACZ,QAAA,CAAAgE,EAAAA,CAAQ,GAAA,CAAKiB,CAAAA,EACZjF,GAAAA,CAAC0E,CAAAA,CAAA,CAEC,KAAA,CAAOO,CAAAA,CACP,QAAA,CAAUb,CAAAA,CAAM,UAAA,GAAea,CAAAA,CAC/B,QAAUC,CAAAA,EAAQ,CAChBH,CAAAA,CAAO,YAAA,CAAcG,CAAG,CAAA,CACxBvB,IACF,CAAA,CACA,KAAA,CAAOsB,CAAAA,CAAAA,CAPFA,CAAAA,CAAI,OAQX,CACD,CAAA,CACH,CAAA,CAEAjF,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,SAAA,CACZ,SAAAiE,EAAAA,CAAQ,GAAA,CAAI,CAACkB,CAAAA,CAAG,CAAA,GACfnF,GAAAA,CAAC,OAAI,SAAA,CAAU,aAAA,CACZ,QAAA,CAAAmF,CAAAA,CAAE,GAAA,CAAKF,CAAAA,EACNjF,IAAC0E,CAAAA,CAAA,CAEC,KAAA,CAAOO,CAAAA,CACP,QAAA,CAAUb,CAAAA,CAAM,aAAea,CAAAA,CAC/B,OAAA,CAAUC,GAAQ,CAChBH,CAAAA,CAAO,aAAcG,CAAG,CAAA,CACxBvB,CAAAA,GACF,CAAA,CACA,KAAA,CAAOsB,GAPFA,CAAAA,CAAI,KAAA,CAAQ,CAQnB,CACD,CAAA,CAAA,CAZ+B,KAAA,CAAQ,CAa1C,CACD,CAAA,CACH,CAAA,CAAA,CACF,CAAA,CAEAX,IAAAA,CAAC,SAAA,CAAA,CAAQ,UAAU,cAAA,CAAe,iBAAA,CAAgB,YAAA,CAChD,QAAA,CAAA,CAAAtE,GAAAA,CAAC,IAAA,CAAA,CAAG,GAAG,YAAA,CAAa,QAAA,CAAA,YAAA,CAAU,CAAA,CAE9BA,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,MACZ,QAAA,CAAA+D,EAAAA,CAAM,GAAA,CAAKkB,CAAAA,EACVjF,GAAAA,CAAC0E,CAAAA,CAAA,CAEC,KAAA,CAAOO,CAAAA,CACP,QAAA,CAAUb,CAAAA,CAAM,IAAA,GAASa,CAAAA,CACzB,QAAUC,CAAAA,EAAQ,CAChBH,CAAAA,CAAO,MAAA,CAAQG,CAAG,CAAA,CAClBvB,IACF,CAAA,CACA,KAAA,CAAOsB,CAAAA,CAAAA,CAPFA,CAAAA,CAAI,IAQX,CACD,CAAA,CACH,CAAA,CAEAjF,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,gBAAA,CACZ,SAAAgE,EAAAA,CAAQ,GAAA,CAAKiB,CAAAA,EACZjF,GAAAA,CAAC0E,CAAAA,CAAA,CAEC,MAAOO,CAAAA,CACP,QAAA,CAAUb,CAAAA,CAAM,IAAA,GAASa,CAAAA,CACzB,OAAA,CAAUC,GAAQ,CAChBH,CAAAA,CAAO,MAAA,CAAQG,CAAG,CAAA,CAClBvB,CAAAA,GACF,CAAA,CACA,KAAA,CAAOsB,CAAAA,CAAAA,CAPFA,CAAAA,CAAI,OAQX,CACD,EACH,CAAA,CAEAjF,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,SAAA,CACZ,QAAA,CAAAiE,GAAQ,GAAA,CAAI,CAACkB,CAAAA,CAAG,CAAA,GACfnF,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,aAAA,CACZ,QAAA,CAAAmF,CAAAA,CAAE,GAAA,CAAKF,CAAAA,EACNjF,GAAAA,CAAC0E,EAAA,CAEC,KAAA,CAAOO,CAAAA,CACP,QAAA,CAAUb,CAAAA,CAAM,IAAA,GAASa,EACzB,OAAA,CAAUC,CAAAA,EAAQ,CAChBH,CAAAA,CAAO,MAAA,CAAQG,CAAG,EAClBvB,CAAAA,GACF,CAAA,CACA,KAAA,CAAOsB,CAAAA,CAAAA,CAPFA,CAAAA,CAAI,MAAQ,CAQnB,CACD,CAAA,CAAA,CAZ+B,OAAA,CAAU,CAa5C,CACD,EACH,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CACF,CAAA,CAEJ,CAAA,CACF,CAEJ,CCjLA,IAAMnB,EAAAA,CAAmE,CACvE,CAAE,GAAA,CAAK,MAAA,CAAQ,QAAA,CAAU,YAAa,KAAA,CAAO,YAAa,CAAA,CAC1D,CAAE,GAAA,CAAK,QAAA,CAAU,SAAU,aAAA,CAAe,KAAA,CAAO,cAAe,CAAA,CAChE,CAAE,GAAA,CAAK,QAAS,QAAA,CAAU,YAAA,CAAc,KAAA,CAAO,aAAc,CAC/D,CAAA,CAQe,SAARsB,EAAAA,CAAiC,CACtC,KAAA,CAAAhB,CAAAA,CAAQ,MAAA,CACR,QAAA,CAAAC,EAAW,IAAM,CAAC,CACpB,CAAA,CAAU,CACR,SAASgB,EAASC,CAAAA,CAAgB,CAChCjB,CAAAA,CAASiB,CAAG,EACd,CAEA,OACEtF,GAAAA,CAAC,KAAA,CAAA,CACC,QAAA,CAAAA,GAAAA,CAAC4D,CAAAA,CAAA,CACC,QACEU,IAAAA,CAAC,QAAA,CAAA,CAAO,UAAU,qBAAA,CAChB,QAAA,CAAA,CAAAtE,IAACmD,CAAAA,CAAA,CAAK,IAAA,CAAMW,EAAAA,EAAS,IAAA,CAAMS,CAAAA,EAAMA,EAAE,GAAA,GAAQH,CAAK,CAAA,EAAG,QAAA,EAAY,WAAA,CAAa,CAAA,CAC5EpE,IAACmD,CAAAA,CAAA,CAAK,IAAA,CAAK,WAAA,CAAY,CAAA,CAAA,CACzB,CAAA,CAED,UAAC,CAAE,KAAA,CAAAQ,CAAM,CAAA,GACR3D,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,mBAAA,CACZ,QAAA,CAAA8D,EAAAA,CAAQ,GAAA,CAAKyB,CAAAA,EAAQ,CACpB,IAAMC,CAAAA,CAASD,CAAAA,CAAI,GAAA,GAAQnB,CAAAA,CAC3B,OACEE,IAAAA,CAAC,UAEC,IAAA,CAAK,eAAA,CACL,cAAA,CAAckB,CAAAA,CACd,QAAA,CAAU,CAAA,CACV,UAAW,CAAA,iBAAA,EAAoBA,CAAAA,CAAS,QAAA,CAAW,EAAE,CAAA,CAAA,CACrD,OAAA,CAAS,IAAM,CACbH,CAAAA,CAASE,CAAAA,CAAI,GAAG,CAAA,CAChB5B,CAAAA,GACF,CAAA,CACA,QAAA,CAAA,CAAA3D,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,aAAA,CACb,SAAAA,GAAAA,CAACmD,CAAAA,CAAA,CAAK,IAAA,CAAMoC,CAAAA,CAAI,QAAA,CAAU,KAAM,EAAA,CAAI,CAAA,CACtC,CAAA,CAEAvF,GAAAA,CAAC,KAAA,CAAA,CACC,SAAA,CAAW,gBAAgBwF,CAAAA,CAAS,EAAA,CAAK,QAAQ,CAAA,CAAA,CACjD,aAAA,CAAW,IAAA,CACX,SAAAxF,GAAAA,CAAC,KAAA,CAAA,CAAI,KAAA,CAAM,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,QAAQ,WAAA,CAClC,QAAA,CAAAA,GAAAA,CAAC,MAAA,CAAA,CACC,CAAA,CAAE,iBAAA,CACF,KAAK,MAAA,CACL,MAAA,CAAO,cAAA,CACP,WAAA,CAAY,GAAA,CACZ,aAAA,CAAc,QACd,cAAA,CAAe,OAAA,CACjB,CAAA,CACF,CAAA,CACF,CAAA,CAAA,CAAA,CA1BKuF,CAAAA,CAAI,GA2BX,CAEJ,CAAC,CAAA,CACH,CAAA,CAEJ,CAAA,CACF,CAEJ,CCpDA,IAAME,EAAAA,CAAc,CAAA,CAGpB,SAASC,EAAAA,CAASC,CAAAA,CAAqB,CAIrC,GAHI,CAACA,CAAAA,EAGDA,CAAAA,CAAI,UAAA,CAAW,GAAG,CAAA,CAAG,OAAOA,CAAAA,CAGhC,GAAIA,CAAAA,CAAI,UAAA,CAAW,MAAM,CAAA,CAAG,CAC1B,IAAMC,CAAAA,CAAQD,CAAAA,CAAI,KAAA,CAAM,gDAAgD,CAAA,CACxE,GAAIC,CAAAA,CAAO,CACT,GAAM,EAAGT,EAAGU,CAAAA,CAAGC,CAAAA,CAAGC,CAAC,CAAA,CAAIH,CAAAA,CAEvB,OAAIG,IAAM,GAAA,CAAY,aAAA,CAEf,GAAA,CAAM,CAACZ,CAAAA,CAAGU,CAAAA,CAAGC,CAAC,CAAA,CAAE,GAAA,CAAIE,CAAAA,EAAK,CAC9B,IAAMC,CAAAA,CAAM,SAASD,CAAC,CAAA,CAAE,QAAA,CAAS,EAAE,CAAA,CACnC,OAAOC,EAAI,MAAA,GAAW,CAAA,CAAI,GAAA,CAAMA,CAAAA,CAAMA,CACxC,CAAC,EAAE,IAAA,CAAK,EAAE,CACZ,CACF,CAGA,IAAML,EAAQD,CAAAA,CAAI,KAAA,CAAM,gCAAgC,CAAA,CACxD,GAAIC,CAAAA,CAAO,CACT,GAAM,EAAG,CAAA,CAAGC,CAAAA,CAAGC,CAAC,EAAIF,CAAAA,CACpB,OAAO,GAAA,CAAM,CAAC,CAAA,CAAGC,CAAAA,CAAGC,CAAC,CAAA,CAAE,GAAA,CAAIE,CAAAA,EAAK,CAC9B,IAAMC,CAAAA,CAAM,SAASD,CAAC,CAAA,CAAE,QAAA,CAAS,EAAE,CAAA,CACnC,OAAOC,EAAI,MAAA,GAAW,CAAA,CAAI,GAAA,CAAMA,CAAAA,CAAMA,CACxC,CAAC,EAAE,IAAA,CAAK,EAAE,CACZ,CAEA,OAAON,CACT,CAEA,SAASO,EAAAA,EAAqB,CAC5B,GAAM,CAACC,CAAM,EAAIC,yBAAAA,EAA0B,CACrC,CAACC,CAAAA,CAAWC,CAAY,CAAA,CAAI1G,SAAS,WAAW,CAAA,CAChD,CAAC2G,CAAAA,CAAoBC,CAAqB,CAAA,CAAI5G,SAAc,CAChE,CAACoB,CAAAA,CAAW,UAAU,EAAG,YAAA,CACzB,CAACA,CAAAA,CAAW,QAAQ,EAAG,EAAA,CACvB,CAACA,CAAAA,CAAW,MAAM,IAAI,EAAG,MAC3B,CAAC,CAAA,CACK,CAACyF,EAAQC,CAAS,CAAA,CAAI9G,QAAAA,CAAS,KAAK,CAAA,CAEpC+G,CAAAA,CAAgBC,YAAY,IAAM,CACtC,IAAMC,CAAAA,CAAYC,aAAAA,EAAc,CAC1BC,EAAgB,CAEpB,CAAC/F,CAAAA,CAAW,UAAU,EAAG,YAAA,CACzB,CAACA,CAAAA,CAAW,QAAQ,EAAG,EAAA,CACvB,CAACA,CAAAA,CAAW,MAAM,IAAI,EAAG,MAC3B,CAAA,CAGA,GAAIgG,iBAAAA,CAAkBH,CAAS,CAAA,CAAG,CAChC,IAAMI,CAAAA,CAAaJ,CAAAA,CAAU,MAAA,CAAO,SAAQ,CACtCK,CAAAA,CACJD,CAAAA,CAAW,MAAA,EAAO,GAAM,MAAA,CACpBA,EACAA,CAAAA,CAAW,yBAAA,EAA0B,CAErCE,CAAAA,CAAaD,CAAAA,CAAQ,MAAA,GACrBE,CAAAA,CAAajB,CAAAA,CAAO,eAAA,CAAgBgB,CAAU,CAAA,CAEpD,GAAIC,IAAe,IAAA,CACjB,GAAIC,WAAAA,CAAYH,CAAO,CAAA,CAAG,CACxB,IAAMI,CAAAA,CAAaC,qBAAAA,CAAsBN,CAAAA,CAAYO,QAAQ,CAAA,CACvDC,EAAAA,CAAOH,EAAaA,CAAAA,CAAW,MAAA,EAAO,CAAIJ,CAAAA,CAAQ,MAAA,EAAO,CAC/DZ,EAAamB,EAAI,EACnB,MAAO,CACL,IAAMA,EAAOP,CAAAA,CAAQ,OAAA,EAAQ,CAC7BZ,CAAAA,CAAamB,CAAI,EACnB,CAIFV,CAAAA,CAAS/F,CAAAA,CAAW,IAAI,CAAA,CAAI6F,CAAAA,CAAU,SAAA,CAAU,MAAM,CAAA,CACtDE,CAAAA,CAAS/F,CAAAA,CAAW,MAAM,CAAA,CAAI6F,CAAAA,CAAU,UAAU,QAAQ,CAAA,CAC1DE,CAAAA,CAAS/F,CAAAA,CAAW,SAAS,CAAA,CAAI6F,EAAU,SAAA,CAAU,WAAW,CAAA,CAChEE,CAAAA,CAAS/F,CAAAA,CAAW,MAAM,EAAI6F,CAAAA,CAAU,SAAA,CAAU,eAAe,CAAA,CACjEE,CAAAA,CAAS/F,CAAAA,CAAW,IAAI,CAAA,CAAI6F,CAAAA,CAAU,SAAA,CAAU,MAAM,CAAA,CAGtD,IAAMa,EAAOC,CAAAA,CAAgBd,CAAS,CAAA,CAChCe,CAAAA,CAASF,CAAAA,CAAK,SAAA,GAGhBG,WAAAA,CAAYD,CAAM,CAAA,EAAKC,WAAAA,CAAYH,CAAI,CAAA,EACzCX,EAAS/F,CAAAA,CAAW,IAAI,CAAA,CAAI,IAAA,CAC5B0F,CAAAA,CAAU,IAAI,IAEdK,CAAAA,CAAS/F,CAAAA,CAAW,IAAI,CAAA,CAAI,KAAA,CAC5B0F,CAAAA,CAAU,KAAK,CAAA,CAAA,CAIjB,IAAMoB,CAAAA,CAAc3B,CAAAA,CAAO,eAAA,CAAgBuB,CAAAA,CAAK,QAAQ,CAAA,CAClDK,CAAAA,CAAgB5B,CAAAA,CAAO,eAAA,CAAgByB,CAAAA,CAAO,QAAQ,CAAA,CAGtDI,CAAAA,CAAeF,CAAAA,EAAeC,CAAAA,EAAiBX,CAAAA,CAGrD,GAAIY,CAAAA,CAAc,CAChB,IAAMC,CAAAA,CAAgB,MAAA,CAAO,gBAAA,CAAiBD,CAAY,CAAA,CAGpDE,EAAAA,CAAaD,CAAAA,CAAc,gBAAA,CAAiB,aAAa,CAAA,CAC/D,GAAIC,EAAAA,CAAY,CACd,IAAIC,CAAAA,CAAYD,EAAAA,CAAW,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAA,CAAE,IAAA,EAAK,CAAE,OAAA,CAAQ,QAAS,EAAE,CAAA,CAAA,CAE/DC,CAAAA,GAAc,eAAA,EAAmBA,CAAAA,GAAc,oBAAA,EAAwBA,IAAc,WAAA,IACvFA,CAAAA,CAAY,YAAA,CAAA,CAEdpB,CAAAA,CAAS/F,CAAAA,CAAW,UAAU,EAAImH,EACpC,CAGA,IAAMC,EAAAA,CAAWH,CAAAA,CAAc,gBAAA,CAAiB,WAAW,CAAA,CAC3D,GAAIG,EAAAA,CAAU,CACZ,IAAMC,CAAAA,CAAc,SAASD,EAAAA,CAAU,EAAE,CAAA,CACzCrB,CAAAA,CAAS/F,CAAAA,CAAW,QAAQ,EAAIqH,CAAAA,EAAe,GACjD,CAIA,IAAIrF,CAAAA,CAAQ,IAAA,CACRsF,EAAkB,IAAA,CAElBN,CAAAA,YAAwB,WAAA,EAAeA,CAAAA,CAAa,KAAA,GAEtDhF,CAAAA,CAAQgF,EAAa,KAAA,CAAM,KAAA,EAAS,IAAA,CACpCM,CAAAA,CAAkBN,CAAAA,CAAa,KAAA,CAAM,iBAAmB,IAAA,CAAA,CAIrDhF,CAAAA,GACHA,CAAAA,CAAQiF,CAAAA,CAAc,gBAAA,CAAiB,OAAO,GAE3CK,CAAAA,GACHA,CAAAA,CAAkBL,CAAAA,CAAc,gBAAA,CAAiB,kBAAkB,CAAA,CAAA,CAGrE,QAAQ,GAAA,CAAI,4BAAA,CAAuB,CACjC,WAAA,CAAaD,CAAAA,YAAwB,WAAA,CAAcA,EAAa,KAAA,CAAM,KAAA,CAAQ,KAAA,CAC9E,QAAA,CAAUA,CAAAA,YAAwB,WAAA,CAAcA,EAAa,KAAA,CAAM,eAAA,CAAkB,KAAA,CACrF,aAAA,CAAehF,CAAAA,CACf,UAAA,CAAYsF,EACZ,OAAA,CAASN,CACX,CAAC,CAAA,CAGD,IAAMO,GAAWvF,CAAAA,CAAQ0C,EAAAA,CAAS1C,CAAK,CAAA,CAAI,IAAA,CACrCwF,EAAAA,CAAaF,GAAmBA,CAAAA,GAAoB,kBAAA,EAAsBA,CAAAA,GAAoB,aAAA,CAChG5C,EAAAA,CAAS4C,CAAe,EACxB,IAAA,CAAA,CAEAC,EAAAA,EAAYC,EAAAA,IACdzB,CAAAA,CAAS/F,CAAAA,CAAW,KAAA,CAAM,IAAI,CAAA,CAAI,CAChC,IAAA,CAAMuH,EAAAA,EAAY,SAAA,CAClB,UAAA,CAAYC,IAAc,SAC5B,CAAA,CAAA,CAIF,IAAIC,EAAAA,CAAYR,CAAAA,CAAc,gBAAA,CAAiB,YAAY,CAAA,EAAK,MAAA,CAC5DQ,EAAAA,GAAc,OAAA,GAChBA,EAAAA,CAAY,MAAA,CAAA,CAEd1B,EAAS/F,CAAAA,CAAW,KAAA,CAAM,IAAI,CAAA,CAAIyH,GACpC,CAEAjC,EAAsBO,CAAQ,EAChC,CACF,CAAA,CAAG,CAACZ,CAAM,CAAC,CAAA,CAEXtG,SAAAA,CAAU,IACD6I,aAAAA,CACLvC,CAAAA,CAAO,sBAAA,CAAuB,CAAC,CAAE,WAAA,CAAAwC,CAAY,CAAA,GAAM,CACjDA,CAAAA,CAAY,KAAK,IAAM,CACrBhC,CAAAA,GACF,CAAC,EACH,CAAC,CAAA,CACDR,CAAAA,CAAO,eAAA,CACLyC,wBAAAA,CACA,KACEjC,CAAAA,GACO,KAAA,CAAA,CAETlB,EACF,CACF,CAAA,CACC,CAACU,CAAAA,CAAQQ,CAAa,CAAC,CAAA,CAC1B,SAAStC,CAAAA,CAASoD,CAAAA,CAAcoB,CAAAA,CAAgB,CAC9C,OAAQpB,CAAAA,EACN,KAAKzG,CAAAA,CAAW,IAAA,CACdmF,EAAO,eAAA,CAAgB2C,mBAAAA,CAAqB,MAAM,CAAA,CAClD,MACF,KAAK9H,EAAW,MAAA,CACdmF,CAAAA,CAAO,eAAA,CAAgB2C,mBAAAA,CAAqB,QAAQ,CAAA,CACpD,MACF,KAAK9H,CAAAA,CAAW,SAAA,CACdmF,CAAAA,CAAO,eAAA,CAAgB2C,mBAAAA,CAAqB,WAAW,CAAA,CACvD,MACF,KAAK9H,CAAAA,CAAW,KAAA,CAAM,IAAA,CACpBmF,EAAO,eAAA,CAAgB4C,sBAAAA,CAAwBF,CAAY,CAAA,CAC3D,MACF,KAAK7H,EAAW,IAAA,CACdmF,CAAAA,CAAO,eAAA,CAAgB6C,YAAAA,CAAc,MAAS,CAAA,CAC9C,MACF,KAAKhI,CAAAA,CAAW,IAAA,CACdmF,CAAAA,CAAO,eAAA,CAAgB8C,YAAAA,CAAc,MAAS,CAAA,CAC9C,MACF,KAAKjI,CAAAA,CAAW,UAAA,CACdkI,CAAAA,GACA,MACF,KAAKlI,CAAAA,CAAW,UAAA,CACdmI,CAAAA,EAAiB,CACjB,MACF,KAAKnI,CAAAA,CAAW,MAAA,CACdoI,CAAAA,EAAU,CACV,MACF,KAAKpI,CAAAA,CAAW,cAAA,CACdqI,CAAAA,EAAa,CACb,MACF,KAAKrI,EAAW,KAAA,CAAM,IAAA,CACpBsI,CAAAA,CAAeT,CAA6C,CAAA,CAC5D,MACF,KAAK7H,CAAAA,CAAW,UAAA,CACduI,CAAAA,CAAgBV,CAAe,CAAA,CAC/B,MACF,KAAK7H,CAAAA,CAAW,QAAA,CACdwI,CAAAA,CAAcX,CAAe,CAAA,CAC7B,MACF,KAAK7H,CAAAA,CAAW,IAAA,CACdyI,CAAAA,EAAW,CACX,MAIJ,CACF,CAEA,IAAML,CAAAA,CAAY,IAAM,CACtBjD,EAAO,eAAA,CAAgBuD,sBAAAA,CAAwB,MAAS,EAC1D,CAAA,CAEMH,EAAmBrB,CAAAA,EAAuB,CAC9C/B,CAAAA,CAAO,MAAA,CAAO,IAAM,CAClB,IAAMU,CAAAA,CAAYC,aAAAA,EAAc,CAC5BE,iBAAAA,CAAkBH,CAAS,CAAA,EAC7B8C,gBAAgB9C,CAAAA,CAAW,CAAE,aAAA,CAAeqB,CAAW,CAAC,EAE5D,CAAC,EACH,CAAA,CAEMsB,CAAAA,CAAiBpB,CAAAA,EAAqB,CAC1C,IAAMwB,EACJ9F,EAAAA,CAAQ,IAAA,CAAM+F,CAAAA,EAAMA,CAAAA,CAAE,GAAA,GAAQzB,CAAQ,GAAG,MAAA,EAAU,EAAA,CACrDjC,CAAAA,CAAO,MAAA,CAAO,IAAM,CAClB,IAAMU,CAAAA,CAAYC,aAAAA,EAAc,CAC5BE,iBAAAA,CAAkBH,CAAS,CAAA,EAC7B8C,gBAAgB9C,CAAAA,CAAW,CAAE,WAAA,CAAa,CAAA,EAAG+C,CAAgB,CAAA,EAAA,CAAK,CAAC,EAEvE,CAAC,EACH,CAAA,CAEMN,CAAAA,CAAkBQ,CAAAA,EAAmD,CACzE3D,CAAAA,CAAO,MAAA,CAAO,IAAM,CAClB,IAAMU,CAAAA,CAAYC,eAAc,CAC5BE,iBAAAA,CAAkBH,CAAS,CAAA,EAC7B8C,eAAAA,CAAgB9C,CAAAA,CAAW,CACzB,kBAAA,CAAoBiD,CAAAA,CAAS,UAAA,CAC7B,KAAA,CAAOA,CAAAA,CAAS,IAClB,CAAC,EAEL,CAAC,EACH,CAAA,CAEML,CAAAA,CAAa7C,WAAAA,CAAY,IAAM,CAC9BH,CAAAA,CAGHN,CAAAA,CAAO,eAAA,CAAgB4D,mBAAAA,CAAqB,IAAI,EAFhD5D,CAAAA,CAAO,eAAA,CAAgB4D,mBAAAA,CAAqB,UAAU,EAI1D,CAAA,CAAG,CAAC5D,CAAAA,CAAQM,CAAM,CAAC,CAAA,CAEb4C,CAAAA,CAAe,IAAM,CACzBlD,CAAAA,CAAO,eAAA,CAAgB6D,uBAAAA,CAAyB,MAAS,EAC3D,CAAA,CAEMb,EAAmB,IAAM,CACzB9C,CAAAA,GAAc,IAAA,CAChBF,CAAAA,CAAO,eAAA,CAAgB8D,8BAA+B,MAAS,CAAA,CAE/D9D,CAAAA,CAAO,eAAA,CAAgB+D,mBAAAA,CAAqB,MAAS,EAEzD,CAAA,CAEMhB,CAAAA,CAAqB,IAAM,CAC3B7C,CAAAA,GAAc,IAAA,CAChBF,EAAO,eAAA,CAAgBgE,2BAAAA,CAA6B,MAAS,CAAA,CAE7DhE,CAAAA,CAAO,eAAA,CAAgB+D,oBAAqB,MAAS,EAEzD,CAAA,CACA,SAASvC,CAAAA,CAAgBd,CAAAA,CAAgB,CACvC,IAAMuD,CAAAA,CAASvD,CAAAA,CAAU,MAAA,CACnBwD,CAAAA,CAAQxD,CAAAA,CAAU,MAClBI,CAAAA,CAAaJ,CAAAA,CAAU,MAAA,CAAO,OAAA,EAAQ,CACtCyD,CAAAA,CAAYzD,EAAU,KAAA,CAAM,OAAA,EAAQ,CAC1C,OAAII,CAAAA,GAAeqD,CAAAA,CACVrD,EAEUJ,CAAAA,CAAU,UAAA,EAAW,CAE/B0D,YAAAA,CAAaF,CAAK,CAAA,CAAIpD,EAAaqD,CAAAA,CAEnCC,YAAAA,CAAaH,CAAM,CAAA,CAAIE,CAAAA,CAAYrD,CAE9C,CAEA,OAAO,CAAE,QAAA,CAAA5C,CAAAA,CAAU,MAAA,CAAAoC,CAAAA,CAAQ,OAAAN,CAAAA,CAAQ,kBAAA,CAAAI,CAAAA,CAAoB,SAAA,CAAAF,CAAU,CACnE,CAEA,IAAOmE,EAAAA,CAAQtE,EAAAA,CC/Uf,SAASuE,EAAAA,CAAmB,CAAE,MAAA,CAAAtE,CAAO,CAAA,CAA4B,CAC/D,IAAMuE,CAAAA,CAAYlH,MAAAA,CAAuB,IAAI,CAAA,CACvCmH,CAAAA,CAAWnH,OAAyB,IAAI,CAAA,CACxCoH,CAAAA,CAAepH,MAAAA,CAAO,KAAK,CAAA,CAC3B,CAACqH,CAAAA,CAASC,CAAU,CAAA,CAAIlL,QAAAA,CAAS,EAAE,CAAA,CACnC,CAACmL,CAAAA,CAAYC,CAAW,CAAA,CAAIpL,QAAAA,CAAS,KAAK,CAAA,CAC1C,CAACqL,CAAAA,CAAeC,CAAgB,CAAA,CAAItL,QAAAA,CAA+B,IAAI,CAAA,CAEvEuL,EAAmBvE,WAAAA,CAAY,IAAM,CACzC,IAAMwE,CAAAA,CAAkB,MAAA,CAAO,cAAa,CACtCvE,CAAAA,CAAYC,aAAAA,EAAc,CAChC,GAAIE,iBAAAA,CAAkBH,CAAS,CAAA,CAAG,CAChC,IAAMa,CAAAA,CAAOC,EAAAA,CAAgBd,CAAS,EAChCe,CAAAA,CAASF,CAAAA,CAAK,SAAA,EAAU,CAC1BG,WAAAA,CAAYD,CAAM,EACpBkD,CAAAA,CAAWlD,CAAAA,CAAO,MAAA,EAAQ,CAAA,CACjBC,WAAAA,CAAYH,CAAI,CAAA,CACzBoD,CAAAA,CAAWpD,CAAAA,CAAK,MAAA,EAAQ,CAAA,CAExBoD,EAAW,EAAE,EAEjB,CAEA,IAAMO,CAAAA,CAAaX,CAAAA,CAAU,QAEvBY,CAAAA,CAAgB,QAAA,CAAS,aAAA,CAE/B,GAAI,CAACD,CAAAA,CAAY,OAEjB,IAAME,CAAAA,CAAcpF,CAAAA,CAAO,cAAA,EAAe,CAE1C,GACEU,GACAuE,CAAAA,EACA,CAACA,CAAAA,CAAgB,WAAA,EACjBG,CAAAA,EACAA,CAAAA,CAAY,SAASH,CAAAA,CAAgB,UAAU,CAAA,CAC/C,CACA,IAAMI,CAAAA,CAAWJ,EAAgB,UAAA,CAAW,CAAC,CAAA,CACzCK,CAAAA,CACJ,GAAIL,CAAAA,CAAgB,aAAeG,CAAAA,CAAa,CAC9C,IAAIG,CAAAA,CAA+BH,CAAAA,CACnC,KAAOG,EAAM,iBAAA,EAAqB,IAAA,EAAMA,CAAAA,CAAQA,CAAAA,CAAM,iBAAA,CACtDD,CAAAA,CAAOC,EAAM,qBAAA,GACf,CAAA,KACED,CAAAA,CAAOD,CAAAA,CAAS,qBAAA,GAGbZ,CAAAA,CAAa,OAAA,EAChBe,EAAAA,CAAsBN,CAAAA,CAAYI,CAAI,CAAA,CAExCP,EAAiBrE,CAAS,EAC5B,CAAA,KAAA,CAAW,CAACyE,CAAAA,EAAiBA,CAAAA,CAAc,YAAc,YAAA,IACvDK,EAAAA,CAAsBN,CAAAA,CAAY,IAAI,CAAA,CACtCH,CAAAA,CAAiB,IAAI,CAAA,CACrBF,CAAAA,CAAY,KAAK,CAAA,CACjBF,CAAAA,CAAW,EAAE,GAGf,OAAO,KACT,CAAA,CAAG,CAAC3E,CAAM,CAAC,EAEX,OAAAtG,SAAAA,CAAU,IACD6I,aAAAA,CACLvC,CAAAA,CAAO,sBAAA,CAAuB,CAAC,CAAE,WAAA,CAAAwC,CAAY,CAAA,GAA4B,CACvEA,CAAAA,CAAY,KAAK,IAAM,CACrBwC,IACF,CAAC,EACH,CAAC,CAAA,CAEDhF,CAAAA,CAAO,eAAA,CACLyC,wBAAAA,CACA,KACEuC,GAAiB,CACV,IAAA,CAAA,CAET,CACF,CACF,CAAA,CACC,CAAChF,EAAQgF,CAAgB,CAAC,CAAA,CAE7BtL,SAAAA,CAAU,IAAM,CACdsG,EAAO,cAAA,EAAe,CAAE,IAAA,CAAK,IAAM,CACjCgF,CAAAA,GACF,CAAC,EACH,CAAA,CAAG,CAAChF,CAAAA,CAAQgF,CAAgB,CAAC,CAAA,CAE7BtL,SAAAA,CAAU,IAAM,CACVkL,CAAAA,EAAcJ,CAAAA,CAAS,SACzBA,CAAAA,CAAS,OAAA,CAAQ,KAAA,GAErB,CAAA,CAAG,CAACI,CAAU,CAAC,CAAA,CAGbzG,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,sBAAA,CAAuB,IAAKoG,CAAAA,CACxC,QAAA,CAAA,CAAAK,CAAAA,CACC/K,GAAAA,CAAC,OAAA,CAAA,CACC,GAAA,CAAK2K,EACL,SAAA,CAAU,YAAA,CACV,KAAA,CAAOE,CAAAA,CACP,QAAA,CAAWe,CAAAA,EAAMd,EAAWc,CAAAA,CAAE,MAAA,CAAO,KAAK,CAAA,CAC1C,SAAA,CAAYA,CAAAA,EAAM,CACZA,CAAAA,CAAE,GAAA,GAAQ,OAAA,EACZA,CAAAA,CAAE,cAAA,EAAe,CACbX,GAAiBJ,CAAAA,GAAY,EAAA,EAC/B1E,CAAAA,CAAO,eAAA,CAAgB4D,mBAAAA,CAAqBc,CAAO,EAErDG,CAAAA,CAAY,KAAK,CAAA,EACRY,CAAAA,CAAE,GAAA,GAAQ,QAAA,GACnBA,EAAE,cAAA,EAAe,CACjBZ,CAAAA,CAAY,KAAK,CAAA,EAErB,CAAA,CACA,YAAY,eAAA,CACd,CAAA,CAEAhL,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,cAAA,CACb,SAAAA,GAAAA,CAAC,GAAA,CAAA,CAAE,IAAA,CAAM6K,CAAAA,CAAS,MAAA,CAAO,QAAA,CAAS,IAAI,qBAAA,CACnC,QAAA,CAAAA,CAAAA,EAAW,kBAAA,CACd,CAAA,CACF,CAAA,CAGF7K,IAAC,QAAA,CAAA,CACC,SAAA,CAAU,aAAA,CACV,WAAA,CAAc4L,CAAAA,EAAMA,CAAAA,CAAE,gBAAe,CACrC,OAAA,CAAS,IAAM,CACb,OAAA,CAAQ,GAAA,CAAI,uBAAwBb,CAAU,CAAA,CAC1CA,CAAAA,EAAY5E,CAAAA,CAAO,eAAA,CAAgB4D,mBAAAA,CAAqBc,CAAO,CAAA,CACnEG,CAAAA,CAAajL,CAAAA,EAAS,CAACA,CAAI,EAC7B,EACA,QAAA,CAAAC,GAAAA,CAACmD,CAAAA,CAAA,CAAK,IAAA,CAAM4H,CAAAA,CAAa,QAAU,MAAA,CAAQ,CAAA,CAC7C,CAAA,CAAA,CACF,CAEJ,CAEA,SAASpD,GAAgBd,CAAAA,CAA2B,CAClD,IAAMI,CAAAA,CAAaJ,CAAAA,CAAU,MAAA,CAAO,SAAQ,CACtCyD,CAAAA,CAAYzD,CAAAA,CAAU,KAAA,CAAM,OAAA,EAAQ,CAC1C,OAAII,CAAAA,GAAeqD,CAAAA,CAAkBrD,CAAAA,CAElBJ,CAAAA,CAAU,UAAA,EAAW,CAEpC0D,aAAa1D,CAAAA,CAAU,KAAK,CAAA,CAC1BI,CAAAA,CACAqD,CAAAA,CACFC,YAAAA,CAAa1D,EAAU,MAAM,CAAA,CAC3ByD,CAAAA,CACArD,CACR,CAGA,SAAS0E,GAAsBxF,CAAAA,CAAqBsF,CAAAA,CAAsB,CACxE,GAAI,CAACA,CAAAA,CAAM,CACTtF,CAAAA,CAAO,KAAA,CAAM,OAAA,CAAU,GAAA,CACvBA,CAAAA,CAAO,KAAA,CAAM,IAAM,SAAA,CACnBA,CAAAA,CAAO,MAAM,IAAA,CAAO,SAAA,CACpB,MACF,CAEA,IAAM0F,CAAAA,CAAc1F,CAAAA,CAAO,WAAA,CACrB2F,CAAAA,CAAe3F,EAAO,YAAA,CACtB4F,CAAAA,CAAgB,MAAA,CAAO,UAAA,CACvBC,CAAAA,CAAiB,MAAA,CAAO,YAG1BC,CAAAA,CAAMR,CAAAA,CAAK,GAAA,CAAMA,CAAAA,CAAK,MAAA,CAAS,MAAA,CAAO,YAAc,EAAA,CACpDS,CAAAA,CAAOT,CAAAA,CAAK,IAAA,CAAO,MAAA,CAAO,WAAA,CAAcI,EAAc,CAAA,CAAIJ,CAAAA,CAAK,KAAA,CAAQ,CAAA,CAGvES,CAAAA,CAAO,CAAA,GAAGA,EAAO,CAAA,CAAA,CACjBA,CAAAA,CAAOL,CAAAA,CAAcE,CAAAA,CAAgB,CAAA,GACvCG,CAAAA,CAAOH,EAAgBF,CAAAA,CAAc,CAAA,CAAA,CAGnCI,CAAAA,CAAMH,CAAAA,CAAeE,CAAAA,CAAiB,CAAA,GACxCC,EAAMR,CAAAA,CAAK,GAAA,CAAM,MAAA,CAAO,WAAA,CAAcK,CAAAA,CAAe,EAAA,CAAA,CAEnDG,EAAM,CAAA,GAAGA,CAAAA,CAAM,CAAA,CAAA,CAEnB9F,CAAAA,CAAO,KAAA,CAAM,OAAA,CAAU,IACvBA,CAAAA,CAAO,KAAA,CAAM,GAAA,CAAM,CAAA,EAAG8F,CAAG,CAAA,EAAA,CAAA,CACzB9F,EAAO,KAAA,CAAM,IAAA,CAAO,CAAA,EAAG+F,CAAI,CAAA,EAAA,EAC7B,CAEA,IAAOC,EAAAA,CAAQ1B,EAAAA,CCvMR,IAAM2B,CAAAA,CAAoB,CAC/B,kBAAmB,mBAAA,CACnB,cAAA,CAAgB,gBAAA,CAChB,cAAA,CAAgB,gBAAA,CAChB,qBAAA,CAAuB,uBACzB,CAAA,CAEaC,EAAAA,CAA8B,EAAA,CAC9BC,EAAAA,CAA8B,EAAA,CAI9BC,EAAAA,CAAQ,IACnB,IAAA,CAAK,MAAA,EAAO,CAAE,QAAA,CAAS,EAAE,CAAA,CAAE,UAAU,CAAA,CAAG,EAAE,CAAA,CAAI,IAAA,CAAK,GAAA,EAAI,CAAE,SAAS,EAAE,CAAA,CAEzDC,EAAAA,CAAUC,CAAAA,EAAmD,CACxE,GAAIA,EAAQ,IAAA,CAAM,OAAO,CAAE,KAAA,CAAOA,CAAAA,CAAM,QAAA,GAAY,IAAA,CAAM,OAAQ,CAAA,CAClE,IAAMC,CAAAA,CAAKD,CAAAA,CAAQ,KACnB,GAAIC,CAAAA,CAAK,IAAA,CAAM,OAAO,CAAE,KAAA,CAAOA,EAAG,OAAA,CAAQ,CAAC,CAAA,CAAG,IAAA,CAAM,IAAK,CAAA,CACzD,IAAMC,CAAAA,CAAKD,CAAAA,CAAK,IAAA,CAChB,OAAIC,CAAAA,CAAK,IAAA,CAAa,CAAE,KAAA,CAAOA,CAAAA,CAAG,OAAA,CAAQ,CAAC,CAAA,CAAG,IAAA,CAAM,IAAK,CAAA,CAElD,CAAE,KAAA,CAAA,CADEA,CAAAA,CAAK,IAAA,EACG,OAAA,CAAQ,CAAC,CAAA,CAAG,IAAA,CAAM,IAAK,CAC5C,CAAA,CA0CaC,EAAAA,CAAgB,CAAC,CAC5B,MAAA,CAAAC,CAAAA,CAAS,CACP,SAAA,CAAW,CAAC,OAAQ,MAAA,CAAQ,OAAA,CAAS,MAAM,CAAA,CAC3C,iBAAA,CAAmB,CAAC,MAAM,CAC5B,CAAA,CACA,OAAA,CAAAC,CAAAA,CAAUR,EAAAA,CAA8B,IAAA,CAAO,KAC/C,QAAA,CAAAS,CAAAA,CAAWV,EAAAA,CACX,QAAA,CAAAW,CAAAA,CAAW,IAAA,CACX,WAAAC,CAAAA,CAAa,KAAA,CACb,mBAAAC,CAAAA,CAAqB,KAAA,CACrB,MAAAC,CAAAA,CAAQ,EAAC,CACT,gBAAA,CAAAC,CAAAA,CAAmB,IAAM,CAAC,CAC5B,CAAA,GAAiD,CAC/C,GAAM,CAACC,CAAAA,CAAkBC,CAAmB,CAAA,CAAI1N,QAAAA,CAAS,KAAK,CAAA,CACxD,CAAC2N,CAAAA,CAAcC,CAAe,CAAA,CAAI5N,QAAAA,CAAyBuN,CAAAA,EAAS,EAAE,CAAA,CACtE,CAACM,CAAAA,CAAeC,CAAe,CAAA,CAAI9N,QAAAA,CACvC,EACF,EAGM+N,CAAAA,CAAgBC,CAAAA,EAA8B,CAClD,OAAQA,CAAAA,EACN,KAAKxB,CAAAA,CAAkB,iBAAA,CACrB,OAAO,sDAAA,CACT,KAAKA,CAAAA,CAAkB,eAAgB,CACrC,GAAM,CAAE,KAAA,CAAAhI,CAAAA,CAAO,IAAA,CAAAqD,CAAK,CAAA,CAAI+E,EAAAA,CAAOM,CAAO,CAAA,CACtC,OAAO,CAAA,wCAAA,EAA2C1I,CAAK,CAAA,CAAA,EAAIqD,CAAI,CAAA,CAAA,CACjE,CACA,KAAK2E,CAAAA,CAAkB,eACrB,OAAO,CAAA,0CAAA,EAA6CW,CAAQ,CAAA,CAAA,CAAA,CAC9D,KAAKX,CAAAA,CAAkB,sBACrB,OAAO,oEAAA,CACT,QACE,OAAO,iCACX,CACF,EAGAvM,SAAAA,CAAU,IAAM,CACduN,CAAAA,CAAiBG,CAAY,EAC/B,EAAG,CAACA,CAAY,CAAC,CAAA,CAGjB,GAAM,CAAE,aAAAM,CAAAA,CAAc,aAAA,CAAAC,CAAAA,CAAe,YAAA,CAAAC,CAAAA,CAAc,IAAA,CAAAC,CAAK,CAAA,CAAIC,WAAAA,CAAY,CACtE,MAAA,CAAApB,CAAAA,CACA,OAAA,CAAAC,EACA,QAAA,CAAAE,CAAAA,CACA,QAAA,CAAAD,CAAAA,CACA,QAAA,CAAUE,CAAAA,CACV,QAAS,IAAA,CACT,kBAAA,CAAoB,IAAMK,CAAAA,CAAoB,KAAK,CAAA,CACnD,iBAAkB,IAAM,CACjBL,CAAAA,EAAYK,CAAAA,CAAoB,IAAI,EAC3C,EACA,MAAA,CAAQ,MAAOY,CAAAA,CAAgBC,CAAAA,GAAmB,CAgDhD,IAAMC,GA/CgB,MAAM,OAAA,CAAQ,GAAA,CAClCF,CAAAA,CAAe,GAAA,CAAI,MAAOG,GAAS,CACjC,GAAI,CAACA,CAAAA,CAAM,OAAO,IAAA,CAGlB,GAAIA,CAAAA,CAAK,IAAA,GAAS,YAAA,CAChB,GAAI,CACF,IAAMC,EAAO,MAAMC,EAAAA,CAAS,CAAE,IAAA,CAAMF,CAAAA,CAAM,MAAA,CAAQ,YAAa,CAAC,CAAA,CAC1DG,CAAAA,CAAY,KAAA,CAAM,OAAA,CAAQF,CAAI,EAAIA,CAAAA,CAAK,CAAC,CAAA,CAAIA,CAAAA,CAC5CG,CAAAA,CAAgB,IAAI,KACxB,CAACD,CAAS,CAAA,CACV,CAAA,EAAGH,CAAAA,CAAK,IAAA,CAAK,QAAQ,UAAA,CAAY,EAAE,CAAC,CAAA,KAAA,CAAA,CACpC,CAAE,IAAA,CAAM,YAAa,CACvB,CAAA,CACA,OAAO,MAAA,CAAO,MAAA,CAAOI,CAAAA,CAAe,CAClC,IAAA,CAAMlC,EAAAA,EAAM,CACZ,OAAA,CAAS,GAAA,CAAI,eAAA,CAAgBkC,CAAa,CAC5C,CAAC,CACH,CAAA,MAASC,CAAAA,CAAK,CACZ,QAAQ,KAAA,CAAM,wBAAA,CAA0BA,CAAG,CAAA,CAC3C,IAAMC,EAAMhB,CAAAA,CAAavB,CAAAA,CAAkB,qBAAqB,CAAA,CAChE,OAAAsB,CAAAA,CAAiB3N,GAAS,CACxB,GAAGA,CAAAA,CACH,CACE,IAAA,CAAAsO,CAAAA,CACA,QAAS,GAAA,CAAI,eAAA,CAAgBA,CAAI,CAAA,CACjC,cAAA,CAAgB,CAACM,CAAG,CAAA,CACpB,MAAA,CAAQ,CACN,CACE,IAAA,CAAMvC,CAAAA,CAAkB,sBACxB,OAAA,CAASuC,CACX,CACF,CACF,CACF,CAAC,EACM,IACT,CAIF,OAAO,MAAA,CAAO,MAAA,CAAON,CAAAA,CAAM,CACzB,IAAA,CAAM9B,EAAAA,EAAM,CACZ,OAAA,CAAS,GAAA,CAAI,eAAA,CAAgB8B,CAAI,CACnC,CAAC,CACH,CAAC,CACH,CAAA,EAEiC,OAAO,OAAO,CAAA,CAE/C,GAAI,CAACpB,CAAAA,CAAY,CACf,IAAI2B,CAAAA,CAAW1B,CAAAA,CAAqB,EAAC,CAAI,CAAC,GAAGK,CAAY,CAAA,CACzDqB,CAAAA,CAAW,CAAC,GAAGA,CAAAA,CAAU,GAAGR,CAAU,CAAA,CAEtC,IAAMS,CAAAA,CAAmBV,CAAAA,CAAe,GAAA,CACrCW,CAAAA,EAAS,CACR,IAAMC,CAAAA,CAAiBD,CAAAA,CAAK,MAAA,CAAO,GAAA,CAAKJ,CAAAA,EACtCf,EAAae,CAAAA,CAAI,IAAI,CACvB,CAAA,CACA,OAAO,CACL,KAAMI,CAAAA,CAAK,IAAA,CACX,MAAA,CAAQA,CAAAA,CAAK,MAAA,CAAO,GAAA,CAAKJ,IAAS,CAAE,IAAA,CAAMA,CAAAA,CAAI,IAAA,CAAM,OAAA,CAASA,CAAAA,CAAI,OAAQ,CAAA,CAAE,CAAA,CAC3E,OAAA,CAAS,GAAA,CAAI,eAAA,CAAgBI,CAAAA,CAAK,IAAI,CAAA,CACtC,cAAA,CAAAC,CACF,CACF,CACF,CAAA,CAEA,OAAArB,CAAAA,CAAiB3N,CAAAA,EAAS,CAAC,GAAGA,CAAAA,CAAM,GAAG8O,CAAgB,CAAC,CAAA,CACxDrB,CAAAA,CAAgBoB,CAAQ,CAAA,CACjBA,CACT,CAEA,OAAOrB,CACT,CAAA,CACA,SAAA,CAAYuB,CAAAA,EAAS,CACnB,GAAM,CAAE,IAAA,CAAME,CAAAA,CAAU,IAAA,CAAAvH,CAAK,CAAA,CAAIqH,EACjC,GAAIE,CAAAA,CAAU,CACZ,IAAMC,CAAAA,CAAMD,CAAAA,CAAS,MAAM,GAAG,CAAA,CAAE,GAAA,EAAI,EAAG,WAAA,EAAY,CACnD,GACEnC,CAAAA,EACAA,CAAAA,GAASpF,CAAI,CAAA,EACboF,CAAAA,GAASpF,CAAI,EAAE,MAAA,EACf,CAACoF,CAAAA,GAASpF,CAAI,CAAA,CAAE,QAAA,CAAS,IAAIwH,CAAG,CAAA,CAAE,CAAA,CAElC,OAAO,CACL,IAAA,CAAM7C,EAAkB,iBAAA,CACxB,OAAA,CAASuB,CAAAA,CAAavB,CAAAA,CAAkB,iBAAiB,CAC3D,CAEJ,CACA,OAAO,IACT,CACF,CAAC,CAAA,CAGK8C,EAAatI,WAAAA,CAChBuI,CAAAA,EAAiB,CAChB3B,CAAAA,CAAiBzN,CAAAA,EAASA,CAAAA,CAAK,OAAQsO,CAAAA,EAASA,CAAAA,CAAK,IAAA,GAASc,CAAI,CAAC,EACrE,EACA,CAAC3B,CAAe,CAClB,CAAA,CAGM4B,CAAAA,CAAqBxI,YAAY,IAAM,CAC3C8G,CAAAA,CAAgB,EAAE,EACpB,EAAG,EAAE,CAAA,CAGL,OAAA7N,SAAAA,CAAU,IACD,IAAM,CACX0N,CAAAA,CAAa,OAAA,CAAS8B,CAAAA,EAAMA,CAAAA,CAAE,OAAA,EAAW,IAAI,eAAA,CAAgBA,CAAAA,CAAE,OAAO,CAAC,CAAA,CACvE5B,CAAAA,CAAc,QAAStI,CAAAA,EAAMA,CAAAA,CAAE,OAAA,EAAW,GAAA,CAAI,eAAA,CAAgBA,CAAAA,CAAE,OAAO,CAAC,EAC1E,CAAA,CACC,EAAE,CAAA,CAGE,CACL,YAAA,CAAA0I,CAAAA,CACA,aAAA,CAAAC,CAAAA,CACA,YAAA,CAAAC,CAAAA,CACA,iBAAAV,CAAAA,CACA,aAAA,CAAAI,CAAAA,CACA,cAAA,CAAgBO,CAAAA,CAChB,UAAA,CAAAkB,EACA,kBAAA,CAAAE,CACF,CACF,CAAA,CCnPA,IAAME,EAAAA,CAA4C,CAAC,CAAE,gBAAA,CAAAlC,CAAiB,CAAA,GAAM,CAC1E,GAAM,CACJ,aAAAS,CAAAA,CACA,aAAA,CAAAC,CAAAA,CACA,cAAA,CAAAyB,CACF,CAAA,CAAI3C,GAAc,CAChB,QAAA,CAAU,IAAA,CACV,QAAA,CAAU,CAAA,CACV,OAAA,CAAS,QACT,gBAAA,CAAmBO,CAAAA,EAAU,CAC3BC,CAAAA,CAAiBD,CAAK,EACxB,CACF,CAAC,CAAA,CAED,OACEnN,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,qBAEb,QAAA,CAAAsE,IAAAA,CAAC,KAAA,CAAA,CAAK,GAAGuJ,CAAAA,EAAa,CACpB,UAAA7N,GAAAA,CAAC,OAAA,CAAA,CAAO,GAAG8N,CAAAA,EAAc,CAAG,CAAA,CAC5B9N,IAAC,QAAA,CAAA,CAAO,OAAA,CAASuP,CAAAA,CACf,QAAA,CAAAvP,GAAAA,CAACmD,CAAAA,CAAA,CAAK,SAAA,CAAU,aAAA,CAAc,IAAA,CAAK,QAAA,CAAS,CAAA,CAC9C,CAAA,CAAA,CACF,EACF,CAEJ,CAAA,CAEOqM,EAAAA,CAAQF,EAAAA,CCbA,SAARG,EAAAA,CAA6B,CAAE,IAAA,CAAApB,CAAAA,CAAM,KAAA,CAAAqB,CAAAA,CAAO,SAAAC,CAAAA,CAAU,MAAA,CAAAC,CAAO,CAAA,CAAqB,CACvF,GAAI,CAACvB,CAAAA,CAAM,OAAO,IAAA,CAElB,IAAMvL,CAAAA,CAAOuL,CAAAA,EAAM,MAAQ,SAAA,CACrBwB,CAAAA,CACJxB,CAAAA,YAAgB,IAAA,EAEX,MAAA,GAAUA,CAAAA,EAAQA,EAAK,IAAA,GAAS,MAAA,CADjCA,CAAAA,CAAK,IAAA,CAGF,OAAA,GAAWA,CAAAA,EAAQA,EAAK,KAAA,GAAU,MAAA,CAAYA,CAAAA,CAAK,KAAA,CAAQ,IAAA,CAC9DyB,CAAAA,CAAAA,CAAe,QAASzB,CAAAA,CAAOA,CAAAA,EAAM,GAAA,CAAM,IAAA,GAAS,IAAA,CAGpD0B,CAAAA,CAAMC,QAAQ,IAAM,CACxB,GAAIF,CAAAA,CAAa,OAAOA,CAAAA,CACxB,GAAI,OAAO,MAAA,CAAW,GAAA,EAAezB,CAAAA,YAAgB,IAAA,CACnD,GAAI,CACF,OAAO,GAAA,CAAI,eAAA,CAAgBA,CAAI,CACjC,CAAA,KAAY,CACV,OAAO,IACT,CAEF,OAAO,IACT,EAAG,CAACA,CAAAA,CAAMyB,CAAW,CAAC,CAAA,CAEhBG,CAAAA,CAAmBxD,GAAyB,CAChD,GAAI,CAACA,CAAAA,EAASA,CAAAA,GAAU,CAAA,CAAG,OAAO,EAAA,CAClC,IAAMC,CAAAA,CAAK,IAAA,CAAK,KAAA,CAAMD,CAAAA,CAAQ,IAAI,CAAA,CAClC,OAAIC,CAAAA,CAAK,IAAA,CAAa,CAAA,EAAGA,CAAE,IAEpB,CAAA,EADI,IAAA,CAAK,KAAA,CAAOD,CAAAA,CAAQ,IAAA,CAAO,IAAA,CAAQ,EAAE,CAAA,CAAI,EACxC,CAAA,CAAA,CACd,CAAA,CAEMyD,CAAAA,CAActE,CAAAA,EAAwB,CAE1C,GADAA,CAAAA,CAAE,cAAA,EAAe,CACbgE,CAAAA,CAAQ,OAAOA,EAAOG,CAAAA,EAAO,IAAI,CAAA,CACjCA,CAAAA,EAAK,MAAA,CAAO,IAAA,CAAKA,EAAK,QAAA,CAAU,UAAU,EAChD,CAAA,CAEMI,CAAAA,CAAgBT,CAAAA,EAAmB,CACnCC,CAAAA,EAAUA,CAAAA,CAASD,CAAK,EAC9B,CAAA,CAEA,OACEpL,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,SAAA,CAAU,IAAA,CAAK,OAAA,CAAQ,YAAA,CAAY,cAAcxB,CAAI,CAAA,CAAA,CAClE,QAAA,CAAA,CAAAwB,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,WACb,QAAA,CAAA,CAAAtE,GAAAA,CAAC,GAAA,CAAA,CACC,IAAA,CAAM+P,CAAAA,EAAO,GAAA,CACb,UAAU,cAAA,CACV,OAAA,CAASG,CAAAA,CACT,KAAA,CAAOpN,CAAAA,CACP,MAAA,CAAO,SACP,GAAA,CAAI,qBAAA,CACH,QAAA,CAAAA,CAAAA,CACH,CAAA,CACC+M,CAAAA,EAAa,MACZvL,IAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,UAAA,CAAW,QAAA,CAAA,CAAA,OAAA,CAAQ2L,CAAAA,CAAgBJ,CAAS,CAAA,CAAE,GAAA,CAAA,CAAC,CAAA,CAAA,CAEnE,CAAA,CAEA7P,GAAAA,CAAC,QAAA,CAAA,CACC,KAAK,QAAA,CACL,SAAA,CAAU,WAAA,CACV,YAAA,CAAY,CAAA,OAAA,EAAU8C,CAAI,GAC1B,OAAA,CAAS,IAAMqN,CAAAA,CAAaT,CAAK,CAAA,CAAG,QAAA,CAAA,MAAA,CAEtC,GACF,CAEJ,CC/DA,IAAMU,EAAAA,CAAsB,CAC1BC,CAAAA,CACA,CAAE,QAAA,CAAAhM,EAAU,KAAA,CAAAiM,CAAAA,CAAO,QAAA,CAAAC,CAAAA,CAAU,kBAAA,CAAAhK,CAAAA,CAAoB,UAAAF,CAAAA,CAAW,cAAA,CAAAtF,CAAe,CAAA,GACxE,CACH,OAAQsP,EAAO,IAAA,EACb,KAAKrP,CAAAA,CAAW,IAAA,CAChB,KAAKA,EAAW,IAAA,CAChB,KAAKA,CAAAA,CAAW,IAAA,CAChB,KAAKA,CAAAA,CAAW,OAChB,KAAKA,CAAAA,CAAW,SAAA,CAChB,KAAKA,CAAAA,CAAW,cAAA,CAChB,KAAKA,CAAAA,CAAW,MAAA,CAChB,KAAKA,CAAAA,CAAW,IAAA,CACd,OACEhB,IAAC,QAAA,CAAA,CAEC,SAAA,CAAW,CAAA,gBAAA,EAAmBuG,CAAAA,GAAqB8J,CAAAA,CAAO,IAAI,EAAI,oBAAA,CAAuB,EAAE,CAAA,CAAA,CAC3F,OAAA,CAAS,IAAM,CACbhM,EAASgM,CAAAA,CAAO,IAAA,CAAM,IAAI,EAC5B,CAAA,CACA,QAAA,CAAArQ,IAACmD,CAAAA,CAAA,CAAK,SAAA,CAAU,sBAAA,CAAuB,IAAA,CAAMkN,CAAAA,CAAO,KAAM,CAAA,CAAA,CALrD,CAAA,EAAGA,EAAO,IAAI,CAAA,CAAA,EAAIA,EAAO,IAAI,CAAA,CAMpC,CAAA,CAEJ,KAAKrP,CAAAA,CAAW,UAAA,CACd,OACEhB,GAAAA,CAAC,QAAA,CAAA,CAEC,SAAA,CAAWqG,CAAAA,GAAc,IAAA,CAAO,oBAAA,CAAuB,GACvD,OAAA,CAAS,IAAM,CACbhC,CAAAA,CAASgM,CAAAA,CAAO,IAAA,CAAM,IAAI,EAC5B,CAAA,CACA,QAAA,CAAArQ,GAAAA,CAACmD,CAAAA,CAAA,CAAK,UAAU,sBAAA,CAAuB,IAAA,CAAMkN,CAAAA,CAAO,IAAA,CAAM,CAAA,CAAA,CALrD,CAAA,EAAGA,EAAO,IAAI,CAAA,CAAA,EAAIA,CAAAA,CAAO,IAAI,CAAA,CAMpC,CAAA,CAEJ,KAAKrP,CAAAA,CAAW,UAAA,CACd,OACEhB,GAAAA,CAAC,QAAA,CAAA,CAEC,SAAA,CAAWqG,IAAc,IAAA,CAAO,oBAAA,CAAuB,EAAA,CACvD,OAAA,CAAS,IAAM,CACbhC,EAASgM,CAAAA,CAAO,IAAA,CAAM,IAAI,EAC5B,CAAA,CACA,QAAA,CAAArQ,IAACmD,CAAAA,CAAA,CAAK,SAAA,CAAU,sBAAA,CAAuB,IAAA,CAAMkN,CAAAA,CAAO,KAAM,CAAA,CAAA,CALrD,CAAA,EAAGA,CAAAA,CAAO,IAAI,CAAA,CAAA,EAAIA,CAAAA,CAAO,IAAI,CAAA,CAMpC,CAAA,CAEJ,KAAKrP,CAAAA,CAAW,UAAA,CACd,OACEhB,IAACwP,EAAAA,CAAA,CACC,KAAA,CAAOc,CAAAA,GAAQD,CAAAA,CAAO,IAAI,EAC1B,gBAAA,CAAmBzE,CAAAA,EAAM,CACvB,OAAA,CAAQ,GAAA,CAAI,sCAAA,CAAiCA,CAAC,CAAA,CAC9C2E,CAAAA,CAAUxQ,CAAAA,GACD,CAAE,GAAGA,CAAAA,CAAM,CAACsQ,CAAAA,CAAO,IAAI,EAAGzE,CAAE,CAAA,CACpC,CAAA,CAED7K,EAAe6K,CAAC,EAClB,CAAA,CACF,CAAA,CAEJ,KAAK5K,CAAAA,CAAW,WACd,OACEhB,GAAAA,CAACmE,EAAAA,CAAA,CACC,KAAA,CAAOoC,CAAAA,GAAqB8J,EAAO,IAAI,CAAA,EAAKC,CAAAA,GAAQD,CAAAA,CAAO,IAAI,CAAA,CAC/D,SAAWzE,CAAAA,EAAM,CACfvH,CAAAA,CAASgM,CAAAA,CAAO,IAAA,CAAMzE,CAAC,EACzB,CAAA,CACF,CAAA,CAEJ,KAAK5K,CAAAA,CAAW,QAAA,CACd,OACEhB,IAACyE,EAAAA,CAAA,CACC,KAAA,CAAO8B,CAAAA,GAAqB8J,CAAAA,CAAO,IAAI,GAAKC,CAAAA,GAAQD,CAAAA,CAAO,IAAI,CAAA,CAC/D,QAAA,CAAWzE,CAAAA,EAAM,CACfvH,CAAAA,CAASgM,CAAAA,CAAO,IAAA,CAAMzE,CAAC,EACzB,CAAA,CACF,EAEJ,KAAK5K,CAAAA,CAAW,KAAA,CAAM,IAAA,CACpB,OACEhB,GAAAA,CAAC8E,GAAA,CACC,KAAA,CAAOyB,CAAAA,GAAqB8J,CAAAA,CAAO,IAAI,CAAA,EAAKC,IAAQD,CAAAA,CAAO,IAAI,CAAA,CAC/D,QAAA,CAAWzE,CAAAA,EAAM,CACfvH,EAASgM,CAAAA,CAAO,IAAA,CAAMzE,CAAC,EACzB,CAAA,CACF,CAAA,CAEJ,KAAK5K,CAAAA,CAAW,KAAA,CAAM,IAAA,CACpB,OACEhB,GAAAA,CAACoF,EAAAA,CAAA,CACC,KAAA,CAAOmB,CAAAA,GAAqB8J,CAAAA,CAAO,IAAI,CAAA,EAAKC,CAAAA,GAAQD,EAAO,IAAI,CAAA,CAC/D,QAAA,CAAWzE,CAAAA,EAAM,CACfvH,CAAAA,CAASgM,EAAO,IAAA,CAAMzE,CAAC,EACzB,CAAA,CACF,CAAA,CAKN,CACA,OAAIyE,CAAAA,CAAO,IAAA,GAASpP,CAAAA,CAAqB,QAChCjB,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,SAAA,CAAU,CAAA,CACvB,GACd,EAMMwQ,EAAAA,CAAe,CACnBH,CAAAA,CAKA,CACE,SAAA,CAAAI,CAAAA,CACA,OAAAC,CAAAA,CACA,QAAA,CAAArM,CAAAA,CACA,KAAA,CAAAiM,CAAAA,CACA,QAAA,CAAAC,EACA,kBAAA,CAAAhK,CAAAA,CACA,SAAA,CAAAF,CAAAA,CACA,cAAA,CAAAtF,CACF,IACG,CACH,OAAQsP,CAAAA,CAAO,IAAA,EACb,KAAKpP,EAAqB,OAAA,CACxB,OACEjB,GAAAA,CAAC,KAAA,CAAA,CAEC,SAAA,CAAU,SAAA,CAAA,CADL,WAAWqQ,CAAAA,CAAO,IAAI,CAAA,CAAA,EAAIA,CAAAA,CAAO,IAAI,CAAA,CAE5C,EAEJ,KAAKpP,CAAAA,CAAqB,SAAA,CACxB,OAAOmP,EAAAA,CAAoBC,CAAAA,CAAQ,CACjC,QAAA,CAAAhM,CAAAA,CACA,KAAA,CAAAiM,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,mBAAAhK,CAAAA,CACA,SAAA,CAAAF,CAAAA,CACA,cAAA,CAAAtF,CACF,CAAC,EACH,KAAKE,CAAAA,CAAqB,OAAA,CACxB,OACEqD,IAAAA,CAAC,KAAA,CAAA,CAEC,UAAU,iBAAA,CACT,QAAA,CAAA,CAAAoM,CAAAA,CACC1Q,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,kBACZ,QAAA,CAAAqQ,CAAAA,CAAO,OAAA,EAAS,MAAA,EAAU,KAAA,CAAM,OAAA,CAAQA,EAAO,OAAO,CAAA,CACnDA,CAAAA,CAAO,OAAA,EAAS,GAAA,CAAKM,CAAAA,EACnBP,GAAoBO,CAAAA,CAAQ,CAC1B,QAAA,CAAAtM,CAAAA,CACA,KAAA,CAAAiM,CAAAA,CACA,SAAAC,CAAAA,CACA,kBAAA,CAAAhK,CAAAA,CACA,SAAA,CAAAF,CAAAA,CACA,cAAA,CAAAtF,CACF,CAAC,CACH,CAAA,CACA,IAAA,CACN,CAAA,CACE,IAAA,CACJf,IAAC,QAAA,CAAA,CAAO,OAAA,CAAS,IAAMyQ,CAAAA,CAAW1Q,CAAAA,EAAS,CAACA,CAAI,CAAA,CAC9C,QAAA,CAAAC,GAAAA,CAACmD,CAAAA,CAAA,CAAK,SAAA,CAAU,uBAAuB,IAAA,CAAMkN,CAAAA,CAAO,IAAA,CAAa,CAAA,CACnE,CAAA,CAAA,CAAA,CApBK,CAAA,QAAA,EAAWA,EAAO,IAAI,CAAA,CAAA,EAAIA,CAAAA,CAAO,IAAI,CAAA,CAqB5C,CAAA,CAIN,CACA,OAAO,GACT,CAAA,CAMA,SAASO,GAAQ,CAAE,aAAA,CAAAC,CAAAA,CAAe,YAAA,CAAAC,CAAa,CAAA,CAAiB,CAC9D,GAAM,CAACJ,CAAAA,CAAQD,CAAS,CAAA,CAAI7Q,QAAAA,CAAS,IAAI,CAAA,CACnC,CAAC0Q,CAAAA,CAAOC,CAAQ,CAAA,CAAI3Q,QAAAA,CAA8B,EAAE,CAAA,CACpD,CAAE,cAAA,CAAAmB,CAAe,CAAA,CAAIb,GAAgB,CACrC,CAAE,QAAA,CAAAmE,CAAAA,CAAU,MAAA,CAAAoC,CAAAA,CAAQ,OAAAN,CAAAA,CAAQ,kBAAA,CAAAI,CAAAA,CAAoB,SAAA,CAAAF,CAAU,CAAA,CAC9DmE,IAAmB,CACrB,OAAA,OAAA,CAAQ,GAAA,CAAI,2CAAA,CAAsCjE,CAAkB,CAAA,CAElEjC,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,mBAAA,CACZ,QAAA,CAAA,CAAAgM,CAAAA,CAAMtP,CAAAA,CAAW,UAAU,CAAA,EAAG,MAAA,CAC7BhB,IAAC,KAAA,CAAA,CAAI,SAAA,CAAU,wBACZ,QAAA,CAAAsQ,CAAAA,CAAMtP,CAAAA,CAAW,UAAU,CAAA,EAAG,GAAA,CAAI,CAAC8N,CAAAA,CAAYY,CAAAA,GAC9C1P,GAAAA,CAACyP,EAAAA,CAAA,CAEC,IAAA,CAAMX,EACN,KAAA,CAAOY,CAAAA,CACP,QAAA,CAAWA,CAAAA,EAAU,CACnBa,CAAAA,CAAUxQ,GAAc,CACtB,IAAMgR,CAAAA,CAAehR,CAAAA,CAAKiB,CAAAA,CAAW,UAAU,EAAE,MAAA,CAC/C,CAACgQ,CAAAA,CAAanH,CAAAA,GAAcA,CAAAA,GAAM6F,CACpC,EAEA,OAAA3O,CAAAA,CAAegQ,CAAY,CAAA,CACpB,CACL,GAAGhR,EACH,CAACiB,CAAAA,CAAW,UAAU,EAAG+P,CAC3B,CACF,CAAC,EACH,CAAA,CAAA,CAfKrB,CAgBP,CACD,CAAA,CACH,CAAA,CACE,KACJpL,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,iBAAA,CACZ,QAAA,CAAA,CAAAwM,CAAAA,CACA5P,IAAY,GAAA,CAAKmP,CAAAA,EAChBG,EAAAA,CAAaH,CAAAA,CAAQ,CACnB,SAAA,CAAAI,EACA,KAAA,CAAAH,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,MAAA,CAAAG,CAAAA,CACA,SAAArM,CAAAA,CACA,kBAAA,CAAAkC,CAAAA,CACA,SAAA,CAAAF,CAAAA,CACA,cAAA,CAAAtF,CACF,CAAC,CACH,CAAA,CACC8P,CAAAA,CACApK,CAAAA,CACGwK,YAAAA,CAAajR,IAACmM,EAAAA,CAAA,CAAmB,MAAA,CAAQhG,CAAAA,CAAQ,CAAA,CAAI,QAAA,CAAS,IAAI,CAAA,CAClE,IAAA,CAAA,CACN,CAAA,CAAA,CACF,CAEJ,CAEA,IAAO+K,GAAQN,EAAAA,CCvQf,IAAMO,EAAAA,CAAqB,CACzB,GAAA,CAAK,KAAA,CACL,IAAK,KAAA,CACL,WAAA,CAAa,oBAAA,CACb,SAAA,CAAW,kBAAA,CACX,KAAA,CAAO,eACP,OAAA,CAAS,CACP,EAAA,CAAI,mBAAA,CACJ,EAAA,CAAI,mBAAA,CACJ,GAAI,mBAAA,CACJ,EAAA,CAAI,mBAAA,CACJ,EAAA,CAAI,mBACN,CAAA,CACA,KAAM,CACJ,MAAA,CAAQ,CACN,QAAA,CAAU,wBACZ,CAAA,CACA,GAAI,gBAAA,CACJ,EAAA,CAAI,gBAAA,CACJ,QAAA,CAAU,iBACZ,CAAA,CACA,MAAO,cAAA,CACP,IAAA,CAAM,aAAA,CACN,IAAA,CAAM,CACJ,IAAA,CAAM,mBACN,MAAA,CAAQ,oBAAA,CACR,UAAA,CAAY,wBAAA,CACZ,OAAA,CAAS,qBAAA,CACT,UAAW,uBAAA,CACX,aAAA,CAAe,2BAAA,CACf,sBAAA,CAAwB,oCAAA,CACxB,IAAA,CAAM,kBACR,CAAA,CACA,IAAA,CAAM,aAAA,CACN,aAAA,CAAe,CACb,MAAA,CAAQ,mBACR,IAAA,CAAM,kBAAA,CACN,OAAA,CAAS,sBAAA,CACT,OAAA,CAAS,sBAAA,CACT,MAAO,qBAAA,CACP,IAAA,CAAM,sBAAA,CACN,KAAA,CAAO,sBAAA,CACP,YAAA,CAAc,uBACd,OAAA,CAAS,qBAAA,CACT,QAAA,CAAU,sBAAA,CACV,OAAA,CAAS,sBAAA,CACT,QAAS,qBAAA,CACT,MAAA,CAAQ,sBAAA,CACR,QAAA,CAAU,sBAAA,CACV,SAAA,CAAW,uBACX,QAAA,CAAU,sBAAA,CACV,OAAA,CAAS,kBAAA,CACT,SAAA,CAAW,sBAAA,CACX,OAAQ,sBAAA,CACR,QAAA,CAAU,sBAAA,CACV,MAAA,CAAQ,qBAAA,CACR,QAAA,CAAU,uBACV,WAAA,CAAa,yBAAA,CACb,MAAO,sBAAA,CACP,QAAA,CAAU,uBACV,MAAA,CAAQ,sBAAA,CACR,MAAA,CAAQ,sBAAA,CACR,GAAA,CAAK,sBAAA,CACL,IAAK,sBAAA,CACL,QAAA,CAAU,sBACZ,CACF,CAAA,CACOC,EAAAA,CAAQD,GC1Df,SAASE,EAAAA,CAAe,CAAE,WAAA,CAAAC,CAAY,EAAwB,CAC5D,GAAM,CAACnL,CAAM,CAAA,CAAIC,yBAAAA,GAEjB,OAAAvG,SAAAA,CAAU,IAAM,CACdsG,CAAAA,CAAO,MAAA,CAAO,IAAM,CAElB,IAAMoL,CAAAA,CADS,IAAI,SAAA,EAAU,CACV,gBAAgBD,CAAAA,CAAa,WAAW,CAAA,CACrDE,CAAAA,CAAQC,qBAAAA,CAAsBtL,CAAAA,CAAQoL,CAAG,CAAA,CACzCG,CAAAA,CAAOC,QAAAA,EAAS,CAEtBD,CAAAA,CAAK,KAAA,GACLA,CAAAA,CAAK,MAAA,CAAO,GAAGF,CAAK,EACtB,CAAC,EACH,CAAA,CAAG,CAACrL,CAAAA,CAAQmL,CAAW,CAAC,CAAA,CAEjB,IACT,CAEA,IAAOM,EAAAA,CAAQP,EAAAA,CCvBA,SAARQ,EAAAA,CAAgC,CACrC,QAAA,CAAAxN,CACF,CAAA,CAEG,CACD,GAAM,CAAC8B,CAAM,CAAA,CAAIC,2BAA0B,CAE3C,OAAAvG,SAAAA,CAAU,IACDsG,CAAAA,CAAO,sBAAA,CAAuB,CAAC,CAAE,WAAA,CAAAwC,CAAY,CAAA,GAAM,CACxDA,CAAAA,CAAY,KAAK,IAAM,CACrB,IAAMmJ,CAAAA,CAAOC,sBAAAA,CAAuB5L,CAAAA,CAAQ,IAAI,CAAA,CAChD9B,CAAAA,CAASyN,CAAI,EACf,CAAC,EACH,CAAC,CAAA,CACA,CAAC3L,CAAAA,CAAQ9B,CAAQ,CAAC,CAAA,CAEd,IACT,CCFA,SAAS2N,EAAAA,CAAQC,CAAAA,CAAc,CAC7B,OAAA,CAAQ,KAAA,CAAMA,CAAK,EACrB,CAWA,SAASC,EAAAA,CAAc,CACrB,WAAA,CAAAC,EAAc,EAAA,CACd,WAAA,CAAAb,CAAAA,CAAc,EAAA,CACd,aAAA,CAAAT,CAAAA,CACA,aAAAC,CAAAA,CACA,SAAA,CAAAsB,CAAAA,CAAY,EAAA,CACZ,QAAA,CAAA/N,CAAAA,CACA,eAAAgO,CAAAA,CACA,eAAA,CAAAC,CAAAA,CAAkB,IACpB,CAAA,CAAuB,CAQrB,OACEtS,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,mBAAA,CACb,QAAA,CAAAsE,IAAAA,CAACiO,gBAAA,CAAgB,aAAA,CATC,CACpB,SAAA,CAAW,UAAA,CACX,MAAOnB,EAAAA,CACP,KAAA,CAAO,CAACoB,QAAAA,CAAUhL,QAAAA,CAAUiL,YAAAA,CAAcC,YAAY,CAAA,CACtD,OAAA,CAAAV,EACF,CAAA,CAKO,QAAA,CAAA,CAAAM,CAAAA,CACCtS,IAAC2S,cAAAA,CAAA,CACC,eAAA,CACE3S,GAAAA,CAAC4S,eAAAA,CAAA,CACC,MAAO,CAAE,SAAA,CAAAR,CAAU,CAAA,CACnB,SAAA,CAAU,mBAAA,CACV,mBAAkBD,CAAAA,CAClB,WAAA,CACEnS,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,uBAAA,CAAyB,SAAAmS,CAAAA,CAAY,CAAA,CAExD,CAAA,CAEF,aAAA,CAAeU,oBAAAA,CACjB,CAAA,CAEAR,EAEFrS,GAAAA,CAACkR,EAAAA,CAAA,CAAQ,aAAA,CAAeL,CAAAA,CAAe,YAAA,CAAcC,EAAc,CAAA,CACnE9Q,GAAAA,CAAC8S,aAAAA,CAAA,EAAc,CAAA,CACf9S,GAAAA,CAAC4R,GAAA,CAAe,WAAA,CAAaN,CAAAA,CAAa,CAAA,CAC1CtR,GAAAA,CAAC+S,eAAAA,CAAA,EAAgB,CAAA,CACjB/S,GAAAA,CAACgT,UAAAA,CAAA,EAAW,CAAA,CACZhT,GAAAA,CAACiT,WAAA,EAAW,CAAA,CACX5O,CAAAA,EAAYrE,GAAAA,CAAC6R,EAAAA,CAAA,CAAe,SAAUxN,CAAAA,CAAU,CAAA,CAAA,CACnD,CAAA,CACF,CAEJ,CAEA,IAAO6O,GAAQhB,EAAAA,CCjFf,SAASiB,CAAAA,CAAaC,CAAAA,CAAwB,CAC5C,OAAO,4BAAA,CAA6B,IAAA,CAAKA,CAAK,CAChD,CCIA,SAASC,EAAAA,CAAkB,CACzB,OAAAjT,CAAAA,CAAS,EAAC,CACV,SAAA,CAAAC,CAAAA,CACA,YAAA,CAAAiT,CACF,CAAA,CAMG,CACD,IAAM/P,CAAAA,CAAWC,MAAAA,CAAY,IAAI,EAC3BmH,CAAAA,CAAWnH,MAAAA,CAAyB,IAAI,CAAA,CACxC,CAAC+P,CAAAA,CAAcC,CAAe,CAAA,CAAI5T,QAAAA,CAAS,EAAE,CAAA,CAC7C,CAAC6T,CAAAA,CAAWC,CAAY,CAAA,CAAI9T,QAAAA,CAAS,KAAK,CAAA,CAC1C,CAAC+T,CAAAA,CAAeC,CAAgB,CAAA,CAAIhU,QAAAA,CAAS,EAAE,CAAA,CAC/C,CAACiU,CAAAA,CAASC,CAAU,CAAA,CAAIlU,QAAAA,CAAwB,EAAE,CAAA,CAClD,CAACmU,EAASC,CAAU,CAAA,CAAIpU,QAAAA,CAAS,KAAK,CAAA,CAGtCqU,CAAAA,CAAYzQ,OAAkC,EAAE,CAAA,CAEhD0Q,CAAAA,CAAa1Q,MAAAA,CAAqC,EAAE,CAAA,CAG1D3D,SAAAA,CAAU,IAAM,CACdoU,CAAAA,CAAU,OAAA,CAAUA,EAAU,OAAA,CAAQ,KAAA,CAAM,CAAA,CAAG7T,CAAAA,CAAO,MAAM,EAC9D,EAAG,CAACA,CAAAA,CAAO,MAAM,CAAC,CAAA,CAGlBP,SAAAA,CAAU,IAAM,CACdqU,CAAAA,CAAW,OAAA,CAAUA,CAAAA,CAAW,OAAA,CAAQ,KAAA,CAAM,EAAGL,CAAAA,CAAQ,MAAM,EACjE,CAAA,CAAG,CAACA,EAAQ,MAAM,CAAC,CAAA,CAGnBhU,SAAAA,CAAU,IAAM,CACVsT,EAAaI,CAAY,CAAA,CAAA,CACP,SAAY,CAC9BS,CAAAA,CAAW,IAAI,EACf,GAAI,CACF,IAAMG,CAAAA,CAAO,MAAMb,CAAAA,CAAaC,CAAY,CAAA,CAC5CO,CAAAA,CAAWK,CAAI,EACjB,CAAA,MAASzF,CAAAA,CAAK,CACZ,OAAA,CAAQ,KAAA,CAAM,+BAAA,CAAiCA,CAAG,CAAA,CAClDoF,CAAAA,CAAW,EAAE,EACf,CAAA,OAAE,CACAE,CAAAA,CAAW,KAAK,EAClB,CACF,CAAA,GAEY,EAEZF,CAAAA,CAAW,EAAE,EACbE,CAAAA,CAAW,KAAK,CAAA,EAEpB,CAAA,CAAG,CAACT,CAAAA,CAAcD,CAAY,CAAC,CAAA,CAG/BzT,SAAAA,CAAU,IAAM,CACT4T,CAAAA,EACHG,EAAiB,EAAE,EAEvB,CAAA,CAAG,CAACH,CAAS,CAAC,EAGd5T,SAAAA,CAAU,IAAM,CACV8T,CAAAA,EAAiB,CAAA,EAAKA,CAAAA,CAAgBO,EAAW,OAAA,CAAQ,MAAA,EAC3DA,CAAAA,CAAW,OAAA,CAAQP,CAAa,CAAA,EAAG,eAAe,CAChD,KAAA,CAAO,SAAA,CACP,QAAA,CAAU,QACZ,CAAC,EAEL,CAAA,CAAG,CAACA,CAAa,CAAC,CAAA,CAElB,IAAMS,EAAa,IAAM,CACvBzJ,CAAAA,CAAS,OAAA,EAAS,KAAA,GACpB,EAEM0J,CAAAA,CAAY1D,CAAAA,EAAwB,CACxCpN,CAAAA,CAAS,OAAA,EAAS,KAAA,GAClBiQ,CAAAA,CAAgB,EAAE,CAAA,CAClBnT,CAAAA,CAAWN,CAAAA,EAAwB,CAAC,GAAGA,CAAAA,CAAM4Q,CAAM,CAAC,CAAA,CACpDiD,CAAAA,CAAiB,EAAE,EAEnB,qBAAA,CAAsB,IAAMjJ,CAAAA,CAAS,OAAA,EAAS,KAAA,EAAO,EACvD,CAAA,CAEM2J,CAAAA,CAAsB1I,CAAAA,EAA6C,CAEvE,GAAI6H,CAAAA,EAAaN,EAAaI,CAAY,CAAA,EAAKM,CAAAA,CAAQ,MAAA,CAAS,CAAA,CAAG,CACjE,GAAIjI,CAAAA,CAAE,GAAA,GAAQ,WAAA,CAAa,CACzBA,CAAAA,CAAE,cAAA,GACFgI,CAAAA,CAAkB7T,CAAAA,EAChBA,CAAAA,CAAO8T,CAAAA,CAAQ,MAAA,CAAS,CAAA,CAAI9T,EAAO,CAAA,CAAIA,CACzC,CAAA,CACA,MACF,CACA,GAAI6L,EAAE,GAAA,GAAQ,SAAA,CAAW,CACvBA,CAAAA,CAAE,cAAA,EAAe,CACjBgI,EAAkB7T,CAAAA,EAAUA,CAAAA,CAAO,CAAA,CAAIA,CAAAA,CAAO,CAAA,CAAI,EAAG,EACrD,MACF,CACA,GAAI6L,CAAAA,CAAE,GAAA,GAAQ,OAAA,EAAW+H,GAAiB,CAAA,CAAG,CAC3C/H,CAAAA,CAAE,cAAA,EAAe,CACjByI,CAAAA,CAASR,EAAQF,CAAa,CAAC,CAAA,CAC/B,MACF,CACA,GAAI/H,EAAE,GAAA,GAAQ,QAAA,CAAU,CACtBA,CAAAA,CAAE,cAAA,EAAe,CACjBrI,EAAS,OAAA,EAAS,KAAA,EAAM,CACxBqQ,CAAAA,CAAiB,EAAE,CAAA,CACnB,MACF,CACF,CAEA,GAAIhI,CAAAA,CAAE,GAAA,GAAQ,aAAe2H,CAAAA,GAAiB,EAAA,CAAI,CAEhD,IAAMgB,CAAAA,CAAUnU,CAAAA,CAAO,OAAS,CAAA,CAC1BoU,CAAAA,CAAWP,CAAAA,CAAU,OAAA,CAAQM,CAAO,CAAA,CACtCC,IACFA,CAAAA,CAAS,KAAA,EAAM,CACf5I,CAAAA,CAAE,cAAA,EAAe,EAErB,CACF,CAAA,CAEM6I,CAAAA,CAAiB/E,CAAAA,EAAkB,CACvCrP,CAAAA,CAAWN,CAAAA,EAAS,CAClB,IAAM2U,CAAAA,CAAO,CAAC,GAAG3U,CAAI,CAAA,CACrB,OAAA2U,CAAAA,CAAK,MAAA,CAAOhF,CAAAA,CAAO,CAAC,CAAA,CACbgF,CACT,CAAC,CAAA,CAED,qBAAA,CAAsB,IAAM,CAC1B,IAAMC,CAAAA,CAAU,KAAK,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI,CAAA,CAAGjF,CAAAA,CAAQ,CAAC,EAAGtP,CAAAA,CAAO,MAAA,CAAS,CAAC,CAAA,CAC5DwU,CAAAA,CAAWX,CAAAA,CAAU,QAAQU,CAAO,CAAA,CACtCC,CAAAA,CAAUA,CAAAA,CAAS,KAAA,EAAM,CACxBR,IACP,CAAC,EACH,CAAA,CAEA,OACEpU,GAAAA,CAAA6U,SAAA,CACE,QAAA,CAAA7U,GAAAA,CAAC0D,EAAAA,CAAA,CACC,GAAA,CAAKH,EACL,OAAA,CACEe,IAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,oBAAA,CACZ,QAAA,CAAA,CAAAlE,GAAQ,MAAA,CACPJ,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,kBAAA,CACZ,QAAA,CAAAI,EAAO,GAAA,CAAI,CAACgT,CAAAA,CAAO0B,CAAAA,GAClBxQ,IAAAA,CAAC,KAAA,CAAA,CAEC,UAAU,QAAA,CACV,QAAA,CAAU,CAAA,CACV,GAAA,CAAMyQ,CAAAA,EAAO,CACXd,EAAU,OAAA,CAAQa,CAAG,CAAA,CAAIC,EAC3B,CAAA,CACA,SAAA,CAAYnJ,GAAM,CACZA,CAAAA,CAAE,GAAA,GAAQ,WAAA,GACZA,CAAAA,CAAE,cAAA,GACF6I,CAAAA,CAAcK,CAAG,CAAA,CAAA,CAEflJ,CAAAA,CAAE,GAAA,GAAQ,OAAA,GACZA,EAAE,cAAA,EAAe,CACjB6I,CAAAA,CAAcK,CAAG,CAAA,CACjBV,CAAAA,IAEJ,CAAA,CACA,IAAA,CAAK,QAAA,CACL,YAAA,CAAY,CAAA,MAAA,EAAShB,CAAAA,CAAM,KAAK,CAAA,CAAA,CAChC,QAAA,CAAA,CAAApT,GAAAA,CAAC,MAAA,CAAA,CAAK,KAAA,CAAO,CAAE,YAAa,CAAE,CAAA,CAAI,QAAA,CAAAoT,CAAAA,CAAM,KAAA,CAAM,CAAA,CAC9CpT,IAAC,QAAA,CAAA,CACC,SAAA,CAAU,cAAA,CACV,OAAA,CAAUgV,CAAAA,EAAO,CACfA,EAAG,eAAA,EAAgB,CACnBP,CAAAA,CAAcK,CAAG,EACnB,CAAA,CACA,aAAY,CAAA,OAAA,EAAU1B,CAAAA,CAAM,KAAK,CAAA,CAAA,CACjC,QAAA,CAAApT,GAAAA,CAACmD,EAAA,CAAK,IAAA,CAAK,OAAA,CAAQ,CAAA,CACrB,CAAA,CAAA,CAAA,CA5BKiQ,CAAAA,CAAM,OAAS0B,CA6BtB,CACD,CAAA,CACH,CAAA,CACE,IAAA,CACJ9U,GAAAA,CAAC,SACC,GAAA,CAAK2K,CAAAA,CACL,IAAA,CAAK,MAAA,CACL,SAAA,CAAU,cAAA,CACV,MAAO4I,CAAAA,CACP,SAAA,CAAS,IAAA,CACT,SAAA,CAAWe,CAAAA,CAEX,QAAA,CAAW1I,GAAM,CACf,IAAMqJ,CAAAA,CAAMrJ,CAAAA,CAAE,MAAA,CAAO,KAAA,CAEjBuH,EAAa8B,CAAG,CAAA,EAClB1R,EAAS,OAAA,EAAS,IAAA,GAEpBiQ,CAAAA,CAAgByB,CAAG,EACrB,CAAA,CACF,CAAA,CAAA,CACF,CAAA,CAEF,qBAAoB,IAAA,CACpB,kBAAA,CAAkB,IAAA,CAClB,QAAA,CAAU,aAAA,CACV,SAAA,CAAU,mBACV,MAAA,CAAQ,IAAM,CACZvB,CAAAA,CAAa,IAAI,CAAA,CAEjB,sBAAsB,IAAM/I,CAAAA,CAAS,OAAA,EAAS,KAAA,EAAO,EACvD,EACA,OAAA,CAAS,IAAM,CACb+I,CAAAA,CAAa,KAAK,EACpB,EACC,QAAA,CAAAP,CAAAA,CAAaI,CAAY,CAAA,CACxBvT,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,kBAAA,CACZ,QAAA,CAAA+T,CAAAA,CAEC/T,GAAAA,CAAA6U,QAAAA,CAAA,CACG,UAAC,CAAA,CAAG,CAAA,CAAG,CAAC,CAAA,CAAE,GAAA,CAAKhL,CAAAA,EACdvF,KAAC,KAAA,CAAA,CAAY,SAAA,CAAU,iCAAA,CACrB,QAAA,CAAA,CAAAtE,GAAAA,CAAC,KAAA,CAAA,CAAI,UAAU,6BAAA,CAA8B,CAAA,CAC7CA,GAAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,8BAAA,CAA+B,IAFtC6J,CAGV,CACD,CAAA,CACH,CAAA,CACEgK,CAAAA,CAAQ,MAAA,CAAS,EACnBA,CAAAA,CAAQ,GAAA,CAAI,CAACtO,CAAAA,CAAKuP,CAAAA,GAEdxQ,IAAAA,CAAC,UACC,GAAA,CAAMyQ,CAAAA,EAAO,CACXb,CAAAA,CAAW,OAAA,CAAQY,CAAG,EAAIC,EAC5B,CAAA,CACA,SAAA,CAAW,CAAA,gBAAA,EAAmBpB,CAAAA,GAAkBmB,CAAAA,CAAM,WAAa,EAAE,CAAA,CAAA,CAErE,MAAA,CAASlJ,CAAAA,EAAM,CACbA,CAAAA,CAAE,kBACJ,CAAA,CACA,OAAA,CAAUA,CAAAA,EAAM,CACdA,CAAAA,CAAE,kBACJ,CAAA,CACA,YAAA,CAAc,IAAMgI,CAAAA,CAAiBkB,CAAG,EACxC,YAAA,CAAc,IAAMlB,CAAAA,CAAiB,EAAE,CAAA,CACvC,OAAA,CAAUhI,GAAM,CACdA,CAAAA,CAAE,eAAA,EAAgB,CAClByI,CAAAA,CAAS9O,CAAG,EACd,CAAA,CACA,eAAA,CAAeoO,CAAAA,GAAkBmB,CAAAA,CACjC,QAAA,CAAA,CAAA9U,GAAAA,CAAC,MAAI,QAAA,CAAAuF,CAAAA,CAAI,IAAA,CAAK,CAAA,CACbA,CAAAA,CAAI,KAAA,CAAA,CAAA,CAfAuP,CAgBP,CAEH,CAAA,CACC,IAAA,CACN,CAAA,CACE,IAAA,CACN,CAAA,CACF,CAEJ,CAEA,IAAOI,EAAAA,CAAQ7B,EAAAA,CCxQf,SAAS8B,EAAAA,CAAc,CACrB,KAAArS,CAAAA,CACA,YAAA,CAAAsS,CAAAA,CACA,SAAA,CAAAzU,CAAAA,CACA,UAAA,CAAAE,EACA,OAAA,CAAAD,CAAAA,CACA,MAAA,CAAAF,CAAAA,CACA,MAAA,CAAAN,CAAAA,CACA,aAAAiV,CAAAA,CACA,YAAA,CAAA/B,CACF,CAAA,CAYG,CACD,OACEhP,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,oBAAA,CACb,QAAA,CAAA,CAAAtE,GAAAA,CAAC,OAAA,CAAA,CAAM,UAAU,yCAAA,CAA2C,QAAA,CAAA8C,CAAAA,CAAK,CAAA,CAEjE9C,GAAAA,CAACkV,EAAAA,CAAA,CACC,MAAA,CAAQ9U,CAAAA,CACR,SAAA,CAAWiV,CAAAA,CACX,YAAA,CAAc/B,CAAAA,CAChB,EACC8B,CAAAA,EAAgB,CAAC1U,CAAAA,CAChBV,GAAAA,CAAC,QAAA,CAAA,CACC,SAAA,CAAU,kBACV,OAAA,CAAS,IAAMW,IAAaZ,CAAAA,EAAS,CAACA,CAAI,CAAA,CAAG,QAAA,CAAA,IAAA,CAE/C,CAAA,CACE,IAAA,CACHqV,CAAAA,EAAgB,CAACxU,EAChBZ,GAAAA,CAAC,QAAA,CAAA,CACC,SAAA,CAAU,iBAAA,CACV,OAAA,CAAS,IAAMa,IAAcd,CAAAA,EAAS,CAACA,CAAI,CAAA,CAAG,QAAA,CAAA,KAAA,CAEhD,CAAA,CACE,MACN,CAEJ,CAEA,IAAOuV,EAAAA,CAAQH,EAAAA,CClDf,SAASI,EAAAA,CAAgB,CAAE,kBAAAC,CAAkB,CAAA,CAE1C,CACD,GAAM,CAACxH,CAAAA,CAAMyH,CAAO,CAAA,CAAI7V,QAAAA,CAAS,KAAK,CAAA,CAChC8V,CAAAA,CAAalS,MAAAA,CAAuB,IAAI,CAAA,CACxC,CAAE,MAAA,CAAApD,CAAAA,CAAQ,SAAA,CAAAC,CAAAA,CAAW,OAAAK,CAAAA,CAAQ,SAAA,CAAAC,CAAAA,CAAW,OAAA,CAAAC,CAAAA,CAAS,UAAA,CAAAC,CAAW,CAAA,CAChEX,CAAAA,EAAgB,CAGlB,OAAAL,SAAAA,CAAU,IAAM,CACVmO,CAAAA,GACFrN,CAAAA,CAAUP,CAAAA,CAAO,EAAA,CAAG,MAAA,CAAS,CAAC,EAC9BS,CAAAA,CAAWT,CAAAA,CAAO,GAAA,CAAI,MAAA,CAAS,CAAC,CAAA,EAEpC,EAAG,CAAC4N,CAAAA,CAAM5N,CAAAA,CAAO,EAAA,CAAG,MAAA,CAAQA,CAAAA,CAAO,IAAI,MAAM,CAAC,CAAA,CAE9CP,SAAAA,CAAU,IAAM,CACd,IAAM8V,CAAAA,CAAUD,CAAAA,CAAW,OAAA,CAE3B,GAAI,CAACC,CAAAA,CAAS,OAGd,IAAMC,CAAAA,CAAgB,IAAM,CAC1BH,CAAAA,CAAQ,IAAI,EACd,CAAA,CAGMI,CAAAA,CAAkBjK,CAAAA,EAAkB,CACxC,OAAA,CAAQ,GAAA,CAAI,kCAA4BA,CAAC,CAAA,CACzC,IAAM8I,CAAAA,CAAO9I,CAAAA,CAAE,aAAA,CAGZ8I,GACCA,CAAAA,CAAK,SAAA,EACLA,CAAAA,CAAK,SAAA,CAAU,QAAA,CAAS,iBAAiB,GAC1CA,CAAAA,EAAQiB,CAAAA,CAAQ,QAAA,CAASjB,CAAI,CAAA,GAGhC,OAAA,CAAQ,IAAI,WAAA,CAAaA,CAAAA,EAAM,SAAS,CAAA,CACxCe,CAAAA,CAAQ,KAAK,GACf,CAAA,CAEA,OAAAE,CAAAA,CAAQ,gBAAA,CAAiB,SAAA,CAAWC,CAAa,EACjDD,CAAAA,CAAQ,gBAAA,CAAiB,UAAA,CAAYE,CAAc,CAAA,CAE5C,IAAM,CACXF,CAAAA,CAAQ,mBAAA,CAAoB,SAAA,CAAWC,CAAa,CAAA,CACpDD,CAAAA,CAAQ,oBAAoB,UAAA,CAAYE,CAAc,EACxD,CACF,CAAA,CAAG,EAAE,CAAA,CAiCH7V,GAAAA,CAAC,KAAA,CAAA,CAAI,GAAA,CAAK0V,CAAAA,CAAY,QAAA,CAAU,GAAI,SAAA,CAAU,UAAA,CAC3C,QAAA,CAAC1H,CAAAA,CASA1J,IAAAA,CAAC,KAAA,CAAA,CACC,UAAAtE,GAAAA,CAACsV,EAAAA,CAAA,CACC,IAAA,CAAK,IAAA,CACL,YAAA,CAAY,KACZ,SAAA,CAAW3U,CAAAA,CACX,UAAA,CAAYE,CAAAA,CACZ,OAAA,CAASD,CAAAA,CACT,OAAQF,CAAAA,CACR,MAAA,CAAQN,CAAAA,CAAO,EAAA,CACf,YAAA,CAAegE,CAAAA,EAAU,CACvB/D,CAAAA,CAAWN,CAAAA,GAAU,CACnB,GAAGA,CAAAA,CACH,EAAA,CAAI,OAAOqE,CAAAA,EAAU,UAAA,CAAaA,EAAMrE,CAAAA,CAAK,EAAE,EAAIqE,CACrD,CAAA,CAAE,EACJ,CAAA,CACA,YAAA,CAAcoR,CAAAA,CAChB,EACC9U,CAAAA,CACCV,GAAAA,CAACsV,EAAAA,CAAA,CACC,IAAA,CAAK,IAAA,CACL,aAAc,KAAA,CACd,SAAA,CAAW3U,CAAAA,CACX,UAAA,CAAYE,CAAAA,CACZ,OAAA,CAASD,EACT,MAAA,CAAQF,CAAAA,CACR,MAAA,CAAQN,CAAAA,CAAO,EAAA,CACf,YAAA,CAAegE,GAAU,CACvB/D,CAAAA,CAAWN,CAAAA,GAAU,CACnB,GAAGA,CAAAA,CACH,GAAI,OAAOqE,CAAAA,EAAU,UAAA,CAAaA,CAAAA,CAAMrE,CAAAA,CAAK,EAAE,EAAIqE,CACrD,CAAA,CAAE,EACJ,CAAA,CACA,YAAA,CAAcoR,CAAAA,CAChB,EACE,IAAA,CACH5U,CAAAA,CACCZ,GAAAA,CAACsV,EAAAA,CAAA,CACC,IAAA,CAAK,MACL,YAAA,CAAc,KAAA,CACd,SAAA,CAAW3U,CAAAA,CACX,UAAA,CAAYE,CAAAA,CACZ,QAASD,CAAAA,CACT,MAAA,CAAQF,CAAAA,CACR,MAAA,CAAQN,CAAAA,CAAO,GAAA,CACf,aAAegE,CAAAA,EAAU,CACvB/D,CAAAA,CAAWN,CAAAA,GAAU,CACnB,GAAGA,EACH,GAAA,CAAK,OAAOqE,CAAAA,EAAU,UAAA,CAAaA,CAAAA,CAAMrE,CAAAA,CAAK,GAAG,CAAA,CAAIqE,CACvD,CAAA,CAAE,EACJ,CAAA,CACA,YAAA,CAAcoR,EAChB,CAAA,CACE,IAAA,CAAA,CACN,CAAA,CA7DAxV,GAAAA,CAAC,OAAA,CAAA,CACC,IAAA,CAAK,OACL,WAAA,CAAY,YAAA,CACZ,SAAA,CAAU,cAAA,CACV,KAAA,CAAA,CApCe,IAAM,CAC3B,GACEI,CAAAA,CAAO,EAAA,CAAG,MAAA,GAAW,CAAA,EACrBA,CAAAA,CAAO,GAAG,MAAA,GAAW,CAAA,EACrBA,CAAAA,CAAO,GAAA,CAAI,MAAA,GAAW,CAAA,CAEtB,OAAO,YAAA,CAGT,IAAM0V,CAAAA,CAAQ,EAAC,CAGf,OAAI1V,EAAO,EAAA,CAAG,MAAA,CAAS,CAAA,EACrB0V,CAAAA,CAAM,IAAA,CAAK1V,CAAAA,CAAO,GAAG,GAAA,CAAKwL,CAAAA,EAAMA,CAAAA,CAAE,KAAK,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC,CAAA,CAIjDxL,CAAAA,CAAO,EAAA,CAAG,MAAA,CAAS,CAAA,EACrB0V,EAAM,IAAA,CAAK1V,CAAAA,CAAO,EAAA,CAAG,GAAA,CAAKwL,CAAAA,EAAMA,CAAAA,CAAE,KAAK,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC,CAAA,CAIjDxL,CAAAA,CAAO,IAAI,MAAA,CAAS,CAAA,EACtB0V,CAAAA,CAAM,IAAA,CAAK,OAAA,CAAU1V,CAAAA,CAAO,IAAI,GAAA,CAAKwL,CAAAA,EAAMA,CAAAA,CAAE,KAAK,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC,CAAA,CAGzDkK,CAAAA,CAAM,IAAA,CAAK,IAAI,CACxB,IAS8B,CACtB,QAAA,CAAQ,IAAA,CACV,CAAA,CAyDJ,CAEJ,CAEA,IAAOC,EAAAA,CAAQR,EAAAA,CCxJf,SAASS,EAAAA,CAAa,CACpB,iBAAA,CAAAR,CACF,EAEG,CACD,GAAM,CAAE,OAAA,CAAAhV,CAAAA,CAAS,UAAA,CAAAC,EAAY,OAAA,CAAAH,CAAQ,CAAA,CAAIJ,CAAAA,EAAgB,CAEzD,OACEoE,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,eACb,QAAA,CAAA,CAAAtE,GAAAA,CAAC+V,GAAA,CAAgB,iBAAA,CAAmBP,CAAAA,CAAmB,CAAA,CACvDxV,GAAAA,CAAC,OAAA,CAAA,CACC,KAAK,MAAA,CACL,WAAA,CAAY,SAAA,CACZ,SAAA,CAAU,cAAA,CACV,KAAA,CAAOM,GAAW,CAACE,CAAAA,CAAQ,UAAA,CAAW,MAAM,CAAA,CAAI,CAAA,IAAA,EAAOA,CAAO,CAAA,CAAA,CAAKA,CAAAA,CACnE,QAAA,CAAWoL,CAAAA,EAAMnL,CAAAA,CAAWmL,CAAAA,CAAE,OAAO,KAAK,CAAA,CAC5C,CAAA,CAAA,CACF,CAEJ,CAEA,IAAOqK,GAAQD,EAAAA,CCjBf,SAASE,EAAAA,CAAoB,CAC3B,WAAA,CAAAC,CAAAA,CACA,OAAA,CAAA7V,EACA,iBAAA,CAAAkV,CAAAA,CACA,YAAA,CAAAH,CAAAA,CACA,YAAA,CAAAvE,CAAAA,CACA,cAAAD,CAAAA,CACA,cAAA,CAAAwB,CAAAA,CACA,eAAA,CAAAC,CAAAA,CAAkB,IACpB,EASG,CACD,GAAM,CACJ,MAAA,CAAAlS,CAAAA,CACA,OAAA,CAAAI,EACA,WAAA,CAAAM,CAAAA,CACA,SAAA,CAAAT,CAAAA,CACA,UAAA,CAAAI,CAAAA,CACA,eAAAM,CAAAA,CACA,UAAA,CAAAR,CACF,CAAA,CAAIL,CAAAA,EAAgB,CACd,CAAE,KAAA,CAAAR,CAAM,CAAA,CAAIP,EAAAA,EAAS,CACrB,CAACiX,EAAUC,CAAW,CAAA,CAAIzW,QAAAA,CAASuW,CAAAA,EAAa,IAAA,EAAQ,EAAE,EAC1D,CAACG,CAAAA,CAAWC,CAAY,CAAA,CAAI3W,QAAAA,CAAoB,CACpD,GAAIuW,CAAAA,EAAa,EAAA,EAAM,EAAC,CACxB,EAAA,CAAIA,CAAAA,EAAa,IAAM,EAAC,CACxB,GAAA,CAAKA,CAAAA,EAAa,GAAA,EAAO,GACzB,OAAA,CAASA,CAAAA,EAAa,OAAA,EAAW,EAAA,CACjC,IAAA,CAAMA,CAAAA,EAAa,MAAQ,EAAA,CAC3B,WAAA,CAAaA,CAAAA,EAAa,WAAA,EAAe,EAAC,CAC1C,QAAS7V,CAAAA,EAAW,KACtB,CAAC,CAAA,CAGDT,SAAAA,CAAU,IAAM,CACVsW,CAAAA,GAAAA,CACEA,CAAAA,CAAY,EAAA,EAAMA,CAAAA,CAAY,EAAA,EAAMA,CAAAA,CAAY,MAClD9V,CAAAA,CAAU,CACR,EAAA,CAAI8V,CAAAA,CAAY,EAAA,EAAM,GACtB,EAAA,CAAIA,CAAAA,CAAY,EAAA,EAAM,EAAC,CACvB,GAAA,CAAKA,EAAY,GAAA,EAAO,EAC1B,CAAC,CAAA,CAECA,CAAAA,CAAY,SACd1V,CAAAA,CAAW0V,CAAAA,CAAY,OAAO,CAAA,CAE5BA,CAAAA,CAAY,WAAA,EACdpV,EAAeoV,CAAAA,CAAY,WAAW,CAAA,CAEpCA,CAAAA,CAAY,IAAA,EACdE,CAAAA,CAAYF,EAAY,IAAI,CAAA,CAAA,CAG5B7V,CAAAA,GAAY,MAAA,EACdC,CAAAA,CAAWD,CAAO,EAGtB,CAAA,CAAG,EAAE,CAAA,CAEL,IAAMkW,CAAAA,CAAsB1E,GAAiB,CAC3CuE,CAAAA,CAAYvE,CAAI,EAClB,CAAA,CAEA,OAAAjS,UAAU,IAAM,CACd0W,CAAAA,CAAcxW,CAAAA,GAAU,CACtB,GAAGA,EACH,EAAA,CAAIK,CAAAA,CAAO,EAAA,CACX,EAAA,CAAIA,CAAAA,CAAO,EAAA,CACX,IAAKA,CAAAA,CAAO,GACd,EAAE,EACJ,CAAA,CAAG,CAACA,CAAM,CAAC,CAAA,CAEXP,SAAAA,CAAU,IAAM,CACd0W,EAAcxW,CAAAA,GAAU,CACtB,GAAGA,CAAAA,CACH,OAAA,CAAAS,CACF,EAAE,EACJ,CAAA,CAAG,CAACA,CAAO,CAAC,CAAA,CAEZX,UAAU,IAAM,CACd0W,CAAAA,CAAcxW,CAAAA,GAAU,CACtB,GAAGA,EACH,IAAA,CAAMqW,CACR,CAAA,CAAE,EACJ,CAAA,CAAG,CAACA,CAAQ,CAAC,CAAA,CAEbvW,SAAAA,CAAU,IAAM,CACd0W,CAAAA,CAAcxW,IAAU,CACtB,GAAGA,CAAAA,CACH,WAAA,CAAAe,CACF,CAAA,CAAE,EACJ,CAAA,CAAG,CAACA,CAAW,CAAC,CAAA,CAEhBjB,SAAAA,CAAU,IAAM,CACd0W,CAAAA,CAAcxW,CAAAA,GAAU,CACtB,GAAGA,CAAAA,CACH,QAAAO,CACF,CAAA,CAAE,EACJ,CAAA,CAAG,CAACA,CAAO,CAAC,CAAA,CAEZT,SAAAA,CAAU,IAAM,CACdwV,CAAAA,CAAaiB,CAAS,EACxB,CAAA,CAAG,CAACA,CAAAA,CAAWjB,CAAY,CAAC,CAAA,CAG1B/Q,KAAC,KAAA,CAAA,CAAI,SAAA,CAAU,qCAAA,CAAsC,YAAA,CAAY5E,CAAAA,CAC9D,QAAA,CAAA,CAAAoR,EACD9Q,GAAAA,CAACiW,EAAAA,CAAA,CAAa,iBAAA,CAAmBT,CAAAA,CAAmB,CAAA,CACpDxV,IAACkT,EAAAA,CAAA,CACC,WAAA,CAAaiD,CAAAA,EAAa,IAAA,CAC1B,QAAA,CAAUK,EACV,cAAA,CAAgBnE,CAAAA,CAChB,eAAA,CAAiBC,CAAAA,CACnB,CAAA,CACCzB,CAAAA,CAAAA,CACH,CAEJ,CAEA,IAAO4F,EAAAA,CAAQP,EAAAA,CCtHf,SAASQ,EAAAA,CAAa,CACpB,iBAAA,CAAAlB,CAAAA,CACA,YAAA,CAAAH,EACA,WAAA,CAAAc,CAAAA,CACA,YAAA,CAAArF,CAAAA,CACA,aAAA,CAAAD,CAAAA,CACA,QAAAvQ,CACF,CAAA,CAOG,CACD,OACEN,GAAAA,CAACG,EAAAA,CAAA,CACC,QAAA,CAAAH,GAAAA,CAACyW,EAAAA,CAAA,CACC,iBAAA,CAAmBjB,CAAAA,CACnB,aAAcH,CAAAA,CACd,WAAA,CAAac,CAAAA,CACb,OAAA,CAAS7V,CAAAA,CACT,YAAA,CAAcwQ,EACd,aAAA,CAAeD,CAAAA,CACjB,CAAA,CACF,CAEJ,CAEA,IAAO8F,GAAQD,EAAAA,CC1Bf,SAASE,EAAAA,CAAW,CAClB,iBAAA,CAAApB,CAAAA,CACA,YAAA,CAAAH,CAAAA,CACA,WAAA,CAAAc,CAAAA,CACA,aAAA3W,CAAAA,CAAe,MAAA,CACf,aAAA,CAAAC,CAAAA,CACA,YAAA,CAAAqR,CAAAA,CACA,cAAAD,CACF,CAAA,CAAoB,CAClB,OACE7Q,GAAAA,CAACV,EAAAA,CAAA,CAAc,YAAA,CAAcE,CAAAA,CAAc,aAAA,CAAeC,CAAAA,CACxD,QAAA,CAAAO,GAAAA,CAAC2W,GAAA,CACC,iBAAA,CAAmBnB,CAAAA,CACnB,YAAA,CAAcH,CAAAA,CACd,WAAA,CAAac,EACb,YAAA,CAAcrF,CAAAA,CACd,aAAA,CAAeD,CAAAA,CACjB,CAAA,CACF,CAEJ,CAEA,IAAOgG,EAAAA,CAAQD,GCrCf,IAAOE,EAAAA,CAAQD","file":"index.mjs","sourcesContent":["import React, { createContext, useContext, useState, useEffect } from \"react\";\nimport type { ReactNode } from \"react\";\n\nexport type Theme = \"light\" | \"dark\";\n\ninterface ThemeContextType {\n theme: Theme;\n toggleTheme: () => void;\n}\n\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined);\n\nexport const useTheme = () => {\n const context = useContext(ThemeContext);\n if (!context) {\n throw new Error(\"useTheme must be used within a ThemeProvider\");\n }\n return context;\n};\n\ninterface ThemeProviderProps {\n children: ReactNode;\n initialTheme?: Theme;\n onThemeChange?: (theme: Theme) => void;\n}\n\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({\n children,\n initialTheme = \"dark\",\n onThemeChange\n}) => {\n const [theme, setTheme] = useState<Theme>(initialTheme);\n\n useEffect(() => {\n // Call the callback if provided\n if (onThemeChange) {\n onThemeChange(theme);\n }\n }, [theme, onThemeChange]);\n\n const toggleTheme = () => {\n setTheme((prev) => (prev === \"light\" ? \"dark\" : \"light\"));\n };\n\n return (\n <ThemeContext.Provider value={{ theme, toggleTheme }}>\n {children}\n </ThemeContext.Provider>\n );\n};\n","import {\n createContext,\n useContext,\n useState,\n type ReactNode,\n useEffect,\n} from \"react\";\n\nexport interface EmailOption {\n name: string;\n email: string;\n}\n\ninterface Email {\n to: EmailOption[];\n cc: EmailOption[];\n bcc: EmailOption[];\n}\n\ninterface EmailContextType {\n emails: Email;\n setEmails: React.Dispatch<React.SetStateAction<Email>>;\n subject: string;\n setSubject: React.Dispatch<React.SetStateAction<string>>;\n showCC: boolean;\n setShowCC: React.Dispatch<React.SetStateAction<boolean>>;\n showBCC: boolean;\n setShowBCC: React.Dispatch<React.SetStateAction<boolean>>;\n attachments: File[];\n setAttachments: React.Dispatch<React.SetStateAction<File[]>>;\n isReply: boolean;\n setIsReply: React.Dispatch<React.SetStateAction<boolean>>;\n}\n\nconst EmailContext = createContext<EmailContextType | undefined>(undefined);\n\nexport const useEmailContext = () => {\n const context = useContext(EmailContext);\n if (!context) {\n throw new Error(\"useEmailContext must be used within an EmailProvider\");\n }\n return context;\n};\n\ninterface EmailProviderProps {\n children: ReactNode;\n}\n\nexport const EmailProvider: React.FC<EmailProviderProps> = ({ children }) => {\n const [emails, setEmails] = useState<Email>({\n to: [],\n cc: [],\n bcc: [],\n });\n const [isReply, setIsReply] = useState(false);\n const [subject, setSubject] = useState(\"\");\n const [showCC, setShowCC] = useState(false);\n const [showBCC, setShowBCC] = useState(false);\n const [attachments, setAttachments] = useState<File[]>([]);\n\n // Log emails whenever they change\n useEffect(() => {\n console.log(\"EmailProvider emails updated:\", emails);\n }, [emails]);\n\n return (\n <EmailContext.Provider\n value={{\n emails,\n setEmails,\n subject,\n setSubject,\n showCC,\n setShowCC,\n showBCC,\n setShowBCC,\n attachments,\n setAttachments,\n isReply,\n setIsReply,\n }}>\n {children}\n </EmailContext.Provider>\n );\n};\n","export const eventTypes = {\n sizes: {\n base: \"sizes\",\n options: {\n normal: \"normal\",\n small: \"small\",\n large: \"large\",\n huge: \"huge\",\n },\n },\n quote: \"quote\",\n undo: \"undo\",\n redo: \"redo\",\n bold: \"bold\",\n italic: \"italic\",\n underline: \"underline\",\n color: {\n base: \"colors\",\n options: { text: \"color\", background: \"background\" },\n },\n code: \"code\",\n image: \"image\",\n link: \"link\",\n list: \"list\",\n listNumber: \"listNumber\",\n listBullet: \"listBullet\",\n align: {\n base: \"align\",\n options: { left: \"alignLeft\", center: \"alignCenter\", right: \"alignRight\" },\n },\n indent: \"indent\",\n indentDecrease: \"indentDecrease\",\n removeFormat: \"removeFormat\",\n strike: \"strike\",\n attachFile: \"attachFile\",\n insertPhoto: \"insertPhoto\",\n fontSize: \"fontSize\",\n fontFamily: \"fontFamily\",\n};\nexport const toolbarComponentType = {\n styling: \"styling\",\n divider: \"divider\",\n component: \"component\",\n};\n\nexport const pluginList = [\n {\n type: toolbarComponentType[\"styling\"],\n icon: \"Styling\",\n id: \"4bc66ea9-2e35-4a7b-a674-be7e4ee163c5\",\n options: [\n {\n name: eventTypes[\"undo\"],\n type: toolbarComponentType[\"component\"],\n icon: \"Undo\",\n id: \"29cf5eb3-37cd-482f-9a15-c358faf19cc2\",\n },\n {\n name: eventTypes[\"redo\"],\n type: toolbarComponentType[\"component\"],\n icon: \"Redo\",\n id: \"8744f7ab-5818-46ce-9417-2fec87123afe\",\n },\n {\n type: toolbarComponentType[\"divider\"],\n id: \"ed0104fd-3507-43f6-80c1-813fbdf04479\",\n },\n {\n name: eventTypes[\"fontFamily\"],\n type: toolbarComponentType[\"component\"],\n id: \"1c12d7e2-aa6a-42b4-b25c-b55fe3bcf524\",\n },\n {\n type: toolbarComponentType[\"divider\"],\n id: \"d0f67d01-0731-411a-b448-e1dca47014f4\",\n },\n {\n name: eventTypes[\"fontSize\"],\n type: toolbarComponentType[\"component\"],\n id: \"82e31b62-5441-4052-887c-faa02d0b7075\",\n },\n {\n type: toolbarComponentType[\"divider\"],\n id: \"2e3558e4-3ad4-422b-8502-ea3c58fb8c2e\",\n },\n {\n name: eventTypes[\"bold\"],\n type: toolbarComponentType[\"component\"],\n icon: \"Bold\",\n id: \"ac2b5b54-7323-44a4-bc6d-8bae6e48efe2\",\n },\n {\n name: eventTypes[\"italic\"],\n type: toolbarComponentType[\"component\"],\n icon: \"Italic\",\n id: \"6a927c2a-2230-4dc7-af71-47fbe9fb784d\",\n },\n {\n name: eventTypes[\"underline\"],\n type: toolbarComponentType[\"component\"],\n icon: \"Underline\",\n id: \"f07b3a6f-ffaa-4153-beae-79a36acb6a08\",\n },\n {\n name: eventTypes[\"color\"].base,\n type: toolbarComponentType[\"component\"],\n icon: \"Color\",\n id: \"e14ec25f-3dd3-4ed5-b33a-a033684d248b\",\n },\n {\n type: toolbarComponentType[\"divider\"],\n id: \"93e60297-206f-4f31-bc29-11daff2052bd\",\n },\n {\n name: eventTypes.align.base,\n type: toolbarComponentType[\"component\"],\n id: \"30da93ea-efa6-4642-bfa5-28fd4dc9c5b3\",\n },\n {\n type: toolbarComponentType[\"divider\"],\n id: \"9bad0563-6118-4855-9286-402bf98e00ad\",\n },\n {\n name: eventTypes[\"listNumber\"],\n type: toolbarComponentType[\"component\"],\n icon: \"OrderedList\",\n id: \"d37865e1-ff54-4118-a5cc-fa147d222471\",\n },\n {\n name: eventTypes[\"listBullet\"],\n type: toolbarComponentType[\"component\"],\n icon: \"UnOrderedList\",\n id: \"ed77e7c9-b89c-41c5-a749-e68ea0b30497\",\n },\n {\n type: toolbarComponentType[\"divider\"],\n id: \"e5ecd77b-44cc-42fe-badb-48cadf3ddfb1\",\n },\n {\n name: eventTypes[\"indentDecrease\"],\n type: toolbarComponentType[\"component\"],\n icon: \"IndentLess\",\n id: \"2dc6a5e4-b1b5-47d1-ac2f-5d0becb02d33\",\n },\n {\n name: eventTypes[\"indent\"],\n type: toolbarComponentType[\"component\"],\n icon: \"IndentMore\",\n id: \"6903a3d1-a83f-4bc6-9bd9-f673feffe84f\",\n },\n ],\n },\n {\n type: \"component\",\n name: eventTypes[\"attachFile\"],\n icon: \"Attach\",\n id: \"f43a284e-113e-4095-b001-9d00a1dddc4c\",\n },\n {\n type: \"component\",\n name: eventTypes[\"link\"],\n icon: \"Link\",\n id: \"580db61e-7939-4efe-914c-304b271998ec\",\n },\n // {\n // type: \"component\",\n // name: eventTypes[\"insertPhoto\"],\n // icon: \"Image\",\n // id: \"d032ba91-3e78-4ed5-8561-033cd1c49cae\",\n // },\n];\n","import {\n MdArrowDropDown,\n MdAttachFile,\n MdCheck,\n MdClose,\n MdEdit,\n MdFormatAlignCenter,\n MdFormatAlignLeft,\n MdFormatAlignRight,\n MdFormatBold,\n MdFormatClear,\n MdFormatIndentDecrease,\n MdFormatItalic,\n MdFormatListBulleted,\n MdFormatListNumbered,\n MdFormatQuote,\n MdFormatUnderlined,\n MdImage,\n MdLink,\n MdOutlineFormatIndentIncrease,\n MdRedo,\n MdStrikethroughS,\n MdTextFields,\n MdTextFormat,\n MdUndo,\n} from \"react-icons/md\";\n\nconst icons = {\n Undo: MdUndo,\n Redo: MdRedo,\n Bold: MdFormatBold,\n Italic: MdFormatItalic,\n Underline: MdFormatUnderlined,\n Color: MdTextFormat,\n LeftAlign: MdFormatAlignLeft,\n RightAlign: MdFormatAlignRight,\n CenterAlign: MdFormatAlignCenter,\n UnOrderedList: MdFormatListBulleted,\n OrderedList: MdFormatListNumbered,\n IndentLess: MdFormatIndentDecrease,\n IndentMore: MdOutlineFormatIndentIncrease,\n RemoveFormat: MdFormatClear,\n StrikeThrough: MdStrikethroughS,\n CodeQuote: MdFormatQuote,\n DownArrow: MdArrowDropDown,\n Styling: MdTextFormat,\n Attach: MdAttachFile,\n Link: MdLink,\n Image: MdImage,\n Check: MdCheck,\n TextFields: MdTextFields,\n Edit: MdEdit,\n Close: MdClose,\n};\n\nexport default icons;\n","// src/components/Icon.tsx\nimport React from \"react\";\nimport icons from \"./helper\";\n\ntype IconName =\n | \"Undo\"\n | \"Redo\"\n | \"Bold\"\n | \"Italic\"\n | \"Underline\"\n | \"Color\"\n | \"LeftAlign\"\n | \"RightAlign\"\n | \"CenterAlign\"\n | \"UnOrderedList\"\n | \"OrderedList\"\n | \"IndentLess\"\n | \"IndentMore\"\n | \"RemoveFormat\"\n | \"StrikeThrough\"\n | \"CodeQuote\"\n | \"DownArrow\"\n | \"Styling\"\n | \"Attach\"\n | \"Link\"\n | \"Image\"\n | \"Check\"\n | \"TextFields\"\n | \"Edit\"\n | \"Close\";\n\ninterface IconProps {\n name: IconName;\n size?: number;\n color?: string;\n className?: string;\n}\n\nconst Icon: React.FC<IconProps> = ({ name, size = 24, color, className }) => {\n // ✅ Map each icon to a name\n\n const IconComponent = icons[name];\n\n if (!IconComponent) {\n console.warn(`Icon \"${name}\" not found.`);\n return null;\n }\n\n return <IconComponent size={size} color={color} className={className} />;\n};\n\nexport default Icon;\n","import React, { useRef } from \"react\";\nimport Popup from \"reactjs-popup\";\nimport type { PopupPosition } from \"reactjs-popup/dist/types\";\n\ninterface MyPopupProps {\n trigger: React.ReactElement;\n children: (args: { close: () => void }) => React.ReactNode;\n popUpDirection?: PopupPosition | PopupPosition[];\n}\n\nconst MyPopup: React.FC<MyPopupProps> = ({\n trigger,\n children,\n popUpDirection = \"top center\",\n}) => {\n const popupRef = useRef<any>(null);\n\n const handleClose = () => {\n if (popupRef.current && typeof popupRef.current.close === \"function\") {\n popupRef.current.close();\n }\n };\n\n const renderContent = (close: () => void) => {\n const combinedClose = () => {\n close?.();\n handleClose();\n };\n return children({ close: combinedClose });\n };\n\n return (\n <Popup\n ref={popupRef}\n trigger={trigger}\n closeOnDocumentClick\n repositionOnResize\n position={popUpDirection}\n className=\"mail-inbox-popup\">\n {renderContent as any}\n </Popup>\n );\n};\n\nexport default MyPopup;\n","const fontOptions = [\n {\n label: \"Sans Serif\",\n value: \"sans-serif\",\n style: { fontFamily: \"sans-serif\" },\n },\n { label: \"Serif\", value: \"serif\", style: { fontFamily: \"serif\" } },\n {\n label: \"Fixed Width\",\n value: \"monospace\",\n style: { fontFamily: \"monospace\" },\n },\n {\n label: \"Wide\",\n value: \"wide\",\n style: { fontWeight: \"bold\", letterSpacing: \"0.05em\" },\n },\n { label: \"Narrow\", value: \"narrow\", style: { fontStretch: \"condensed\" } },\n {\n label: \"Comic Sans MS\",\n value: \"Comic Sans MS\",\n style: { fontFamily: \"Comic Sans MS, cursive\" },\n },\n {\n label: \"Garamond\",\n value: \"Garamond\",\n style: { fontFamily: \"Garamond, serif\" },\n },\n {\n label: \"Georgia\",\n value: \"Georgia\",\n style: { fontFamily: \"Georgia, serif\" },\n },\n {\n label: \"Tahoma\",\n value: \"Tahoma\",\n style: { fontFamily: \"Tahoma, sans-serif\" },\n },\n {\n label: \"Trebuchet MS\",\n value: \"Trebuchet MS\",\n style: { fontFamily: \"Trebuchet MS, sans-serif\" },\n },\n {\n label: \"Verdana\",\n value: \"Verdana\",\n style: { fontFamily: \"Verdana, sans-serif\" },\n },\n];\nexport const OPTIONS = [\n { key: \"small\", label: \"Small\", sizePx: 12 },\n { key: \"normal\", label: \"Normal\", sizePx: 18 },\n { key: \"large\", label: \"Large\", sizePx: 28 },\n { key: \"huge\", label: \"Huge\", sizePx: 56 },\n];\nexport const GREYS = [\n \"#000000\",\n \"#3a3a3a\",\n \"#5a5a5a\",\n \"#8a8a8a\",\n \"#bfbfbf\",\n \"#dedede\",\n \"#f3f3f3\",\n \"#ffffff\",\n];\nexport const ACCENTS = [\n \"#e53935\",\n \"#fb8c00\",\n \"#ffee58\",\n \"#66ff66\",\n \"#4dd0e1\",\n \"#1e88e5\",\n \"#9c27b0\",\n \"#ff3bd6\",\n];\n// a multi-row palette (example block similar to screenshot)\nexport const PALETTE = [\n [\n \"#f7d7d7\",\n \"#f3d0c8\",\n \"#f0c5c5\",\n \"#efc9d8\",\n \"#f7e6e9\",\n \"#f3edf7\",\n \"#f0eaf6\",\n \"#f8f0f6\",\n ],\n [\n \"#f0b9b9\",\n \"#f0d4c2\",\n \"#e6f0d2\",\n \"#e4f7e8\",\n \"#d8eef8\",\n \"#dbe1ff\",\n \"#e9d9f6\",\n \"#f5d9f7\",\n ],\n [\n \"#e69a9a\",\n \"#e6caa3\",\n \"#d7e6b0\",\n \"#c8f0e6\",\n \"#bfe3ff\",\n \"#cbd8ff\",\n \"#d6c3f3\",\n \"#f0c2f3\",\n ],\n [\n \"#d16464\",\n \"#d09a6a\",\n \"#a8cf7b\",\n \"#7fd6c0\",\n \"#73b7ff\",\n \"#7a9cff\",\n \"#b483f1\",\n \"#f08cf2\",\n ],\n [\n \"#b23a3a\",\n \"#b26a3a\",\n \"#7aa04a\",\n \"#3fb092\",\n \"#296f94\",\n \"#2a4177\",\n \"#452a68\",\n \"#6e1f4d\",\n ],\n [\n \"#7a1d1d\",\n \"#7a4a1e\",\n \"#556a2a\",\n \"#195b47\",\n \"#123f5a\",\n \"#182840\",\n \"#2a1836\",\n \"#3a1026\",\n ],\n];\nexport default fontOptions;\n","import MyPopup from \"../MyPopup\";\nimport fontOptions from \"../../../utils/core\";\nimport Icon from \"../Icon\";\n\ninterface FontSelectProps {\n value?: string;\n onChange: (value: string) => void;\n}\n\nexport default function FontSelect({\n value = \"serif\",\n onChange,\n}: FontSelectProps) {\n return (\n <div>\n <MyPopup\n trigger={\n <button className=\"font-option heading\">\n {fontOptions?.find((o) => o.value === value)?.label}\n <Icon name=\"DownArrow\" />\n </button>\n }>\n {({ close }) => (\n <div className=\"p-4\">\n <div className=\"font-options\">\n {fontOptions.map((font) => (\n <button\n className=\"btn-mail-editor\"\n key={font.value}\n onClick={() => {\n onChange(font.value);\n close();\n }}\n style={{ ...font.style }}>\n <div className=\"font-option\">\n {value === font.value && <Icon name=\"Check\" />}\n {font.label}\n </div>\n </button>\n ))}\n </div>\n </div>\n )}\n </MyPopup>\n </div>\n );\n}\n","import { OPTIONS } from \"../../../utils/core\";\nimport MyPopup from \"../MyPopup\";\nimport Icon from \"../Icon\";\n\n/**\n * Props:\n * - value: \"small\" | \"normal\" | \"large\" | \"huge\"\n * - onChange: (newValue) => void\n */\n\ninterface FontSizePickerProps {\n value?: string;\n onChange?: (value: string) => void;\n}\n\nexport default function FontSizePicker({\n value = \"normal\",\n onChange = () => {},\n}: FontSizePickerProps) {\n return (\n <div>\n <MyPopup\n trigger={\n <button className=\"font-option heading\">\n <Icon name=\"TextFields\" />\n <Icon name=\"DownArrow\" />\n </button>\n }>\n {({ close }) => (\n <div className=\"p-4\">\n <div className=\"font-options\">\n {OPTIONS.map((font) => (\n <button\n className=\"btn-mail-editor\"\n key={font.key}\n onClick={() => {\n onChange(font.key);\n close();\n }}\n style={{ fontSize: `${font.sizePx}px` }}>\n <div className=\"font-option\">\n {value === font.key && <Icon name=\"Check\" />}\n {font.label}\n </div>\n </button>\n ))}\n </div>\n </div>\n )}\n </MyPopup>\n </div>\n );\n}\n","import { ACCENTS, GREYS, PALETTE } from \"../../../utils/core\";\nimport \"./style.css\";\nimport MyPopup from \"../MyPopup\";\nimport Icon from \"../Icon\";\n/**\n * Props:\n * - value: { background: \"#ffffff\", text: \"#000000\" }\n * - onChange: (newValue) => void\n */\n\ninterface SwatchProps {\n color: string;\n selected: boolean;\n onClick: (color: string) => void;\n label?: string;\n}\n\nfunction Swatch({ color, selected, onClick, label }: SwatchProps) {\n return (\n <button\n className=\"swatch\"\n title={label || color}\n aria-pressed={selected}\n onClick={() => onClick(color)}\n style={{ background: color }}>\n {selected && (\n <svg className=\"check\" viewBox=\"0 0 24 24\" aria-hidden>\n <path\n d=\"M20 6L9 17l-5-5\"\n stroke=\"white\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n />\n </svg>\n )}\n </button>\n );\n}\n\ninterface ColorValue {\n background: string;\n text: string;\n}\n\ninterface ColorPickerProps {\n value?: ColorValue;\n onChange?: (value: ColorValue) => void;\n}\n\nexport default function ColorPicker({\n value = { background: \"#ffffff\", text: \"#000000\" },\n onChange = () => {},\n}: ColorPickerProps) {\n function update(which: keyof ColorValue, color: string) {\n onChange({ ...value, [which]: color });\n }\n\n return (\n <div>\n <MyPopup\n trigger={\n <button className=\"font-option heading\">\n <Icon name=\"Styling\" />\n <Icon name=\"DownArrow\" />\n </button>\n }>\n {({ close }) => (\n <div\n className=\"color-popover\"\n role=\"dialog\"\n aria-label=\"Choose colors\">\n <div className=\"color-columns\">\n <section className=\"color-column\" aria-labelledby=\"bg-label\">\n <h4 id=\"bg-label\">Background color</h4>\n\n <div className=\"row\">\n {GREYS.map((c) => (\n <Swatch\n key={c + \"bg\"}\n color={c}\n selected={value.background === c}\n onClick={(col) => {\n update(\"background\", col);\n close();\n }}\n label={c}\n />\n ))}\n </div>\n\n <div className=\"row accent-row\">\n {ACCENTS.map((c) => (\n <Swatch\n key={c + \"bgacc\"}\n color={c}\n selected={value.background === c}\n onClick={(col) => {\n update(\"background\", col);\n close();\n }}\n label={c}\n />\n ))}\n </div>\n\n <div className=\"palette\">\n {PALETTE.map((r, i) => (\n <div className=\"palette-row\" key={\"row\" + i}>\n {r.map((c) => (\n <Swatch\n key={c + \"bgp\" + i}\n color={c}\n selected={value.background === c}\n onClick={(col) => {\n update(\"background\", col);\n close();\n }}\n label={c}\n />\n ))}\n </div>\n ))}\n </div>\n </section>\n\n <section className=\"color-column\" aria-labelledby=\"text-label\">\n <h4 id=\"text-label\">Text color</h4>\n\n <div className=\"row\">\n {GREYS.map((c) => (\n <Swatch\n key={c + \"tx\"}\n color={c}\n selected={value.text === c}\n onClick={(col) => {\n update(\"text\", col);\n close();\n }}\n label={c}\n />\n ))}\n </div>\n\n <div className=\"row accent-row\">\n {ACCENTS.map((c) => (\n <Swatch\n key={c + \"txacc\"}\n color={c}\n selected={value.text === c}\n onClick={(col) => {\n update(\"text\", col);\n close();\n }}\n label={c}\n />\n ))}\n </div>\n\n <div className=\"palette\">\n {PALETTE.map((r, i) => (\n <div className=\"palette-row\" key={\"txrow\" + i}>\n {r.map((c) => (\n <Swatch\n key={c + \"txp\" + i}\n color={c}\n selected={value.text === c}\n onClick={(col) => {\n update(\"text\", col);\n close();\n }}\n label={c}\n />\n ))}\n </div>\n ))}\n </div>\n </section>\n </div>\n </div>\n )}\n </MyPopup>\n </div>\n );\n}\n","import \"./style.css\";\nimport Icon from \"../Icon\";\nimport MyPopup from \"../MyPopup\";\n\nexport type Alignment = \"left\" | \"center\" | \"right\";\n\ntype IconName = \"LeftAlign\" | \"CenterAlign\" | \"RightAlign\" | \"DownArrow\";\n\nconst OPTIONS: { key: Alignment; iconName: IconName; label: string }[] = [\n { key: \"left\", iconName: \"LeftAlign\", label: \"Left align\" },\n { key: \"center\", iconName: \"CenterAlign\", label: \"Center align\" },\n { key: \"right\", iconName: \"RightAlign\", label: \"Right align\" },\n];\n\ninterface Props {\n value?: Alignment;\n onChange?: (next: Alignment) => void;\n className?: string;\n}\n\nexport default function AlignmentSelect({\n value = \"left\",\n onChange = () => {},\n}: Props) {\n function onSelect(key: Alignment) {\n onChange(key);\n }\n\n return (\n <div>\n <MyPopup\n trigger={\n <button className=\"font-option heading\">\n <Icon name={OPTIONS?.find((o) => o.key === value)?.iconName || \"LeftAlign\"} />\n <Icon name=\"DownArrow\" />\n </button>\n }>\n {({ close }) => (\n <div className=\"wrapper-alignment\">\n {OPTIONS.map((opt) => {\n const active = opt.key === value;\n return (\n <button\n key={opt.key}\n role=\"menuitemradio\"\n aria-checked={active}\n tabIndex={0}\n className={`alignment-option ${active ? \"active\" : \"\"}`}\n onClick={() => {\n onSelect(opt.key);\n close();\n }}>\n <div className=\"option-icon\">\n <Icon name={opt.iconName} size={20} />\n </div>\n\n <div\n className={`option-check ${active ? \"\" : \"hidden\"}`}\n aria-hidden>\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\">\n <path\n d=\"M20 6L9 17l-5-5\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </div>\n </button>\n );\n })}\n </div>\n )}\n </MyPopup>\n </div>\n );\n}\n","import { useCallback, useEffect, useState } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { eventTypes } from \"../utils/toolbar\";\nimport {\n FORMAT_TEXT_COMMAND,\n FORMAT_ELEMENT_COMMAND,\n UNDO_COMMAND,\n REDO_COMMAND,\n SELECTION_CHANGE_COMMAND,\n $getSelection,\n $isRangeSelection,\n INDENT_CONTENT_COMMAND,\n OUTDENT_CONTENT_COMMAND,\n} from \"lexical\";\nimport {\n $isListNode,\n INSERT_ORDERED_LIST_COMMAND,\n INSERT_UNORDERED_LIST_COMMAND,\n ListNode,\n REMOVE_LIST_COMMAND,\n} from \"@lexical/list\";\nimport { $isLinkNode, TOGGLE_LINK_COMMAND } from \"@lexical/link\";\nimport { $getNearestNodeOfType, mergeRegister } from \"@lexical/utils\";\nimport { $isAtNodeEnd, $patchStyleText } from \"@lexical/selection\";\nimport { OPTIONS } from \"../utils/core\";\n\nconst LowPriority = 1;\n\n// Helper function to convert RGB to Hex\nfunction rgbToHex(rgb: string): string {\n if (!rgb) return rgb;\n\n // If already hex, return as is\n if (rgb.startsWith('#')) return rgb;\n\n // If rgba with transparency, return as is (can't convert to simple hex)\n if (rgb.startsWith('rgba')) {\n const match = rgb.match(/rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+),?\\s*([\\d.]+)?\\)/);\n if (match) {\n const [, r, g, b, a] = match;\n // If fully transparent, return transparent\n if (a === '0') return 'transparent';\n // Convert to hex (ignoring alpha for now)\n return '#' + [r, g, b].map(x => {\n const hex = parseInt(x).toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n }).join('');\n }\n }\n\n // Handle rgb format\n const match = rgb.match(/rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)/);\n if (match) {\n const [, r, g, b] = match;\n return '#' + [r, g, b].map(x => {\n const hex = parseInt(x).toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n }).join('');\n }\n\n return rgb;\n}\n\nfunction useOnClickListener() {\n const [editor] = useLexicalComposerContext();\n const [blockType, setBlockType] = useState(\"paragraph\");\n const [selectedEventTypes, setSelectedEventTypes] = useState<any>({\n [eventTypes.fontFamily]: \"sans-serif\",\n [eventTypes.fontSize]: 16,\n [eventTypes.align.base]: \"left\",\n });\n const [isLink, setIsLink] = useState(false);\n\n const updateToolbar = useCallback(() => {\n const selection = $getSelection();\n const newState: any = {\n // Set default values\n [eventTypes.fontFamily]: \"sans-serif\",\n [eventTypes.fontSize]: 16,\n [eventTypes.align.base]: \"left\",\n };\n\n // range selection ( e.g like to bold only the particular area of the text)\n if ($isRangeSelection(selection)) {\n const anchorNode = selection.anchor.getNode();\n const element =\n anchorNode.getKey() === \"root\"\n ? anchorNode\n : anchorNode.getTopLevelElementOrThrow();\n\n const elementKey = element.getKey();\n const elementDOM = editor.getElementByKey(elementKey);\n\n if (elementDOM !== null) {\n if ($isListNode(element)) {\n const parentList = $getNearestNodeOfType(anchorNode, ListNode);\n const type = parentList ? parentList.getTag() : element.getTag();\n setBlockType(type);\n } else {\n const type = element.getType();\n setBlockType(type);\n }\n }\n\n // Check formatting and add to selected events\n newState[eventTypes.bold] = selection.hasFormat(\"bold\");\n newState[eventTypes.italic] = selection.hasFormat(\"italic\");\n newState[eventTypes.underline] = selection.hasFormat(\"underline\");\n newState[eventTypes.strike] = selection.hasFormat(\"strikethrough\");\n newState[eventTypes.code] = selection.hasFormat(\"code\");\n\n // Get inline styles from selection\n const node = getSelectedNode(selection);\n const parent = node.getParent();\n\n // Check for link\n if ($isLinkNode(parent) || $isLinkNode(node)) {\n newState[eventTypes.link] = true;\n setIsLink(true);\n } else {\n newState[eventTypes.link] = false;\n setIsLink(false);\n }\n\n // Get the actual text node's DOM element for accurate style reading\n const textNodeDOM = editor.getElementByKey(node.getKey());\n const parentElement = editor.getElementByKey(parent.getKey());\n\n // Try multiple elements to find inline styles (Lexical wraps text in spans)\n const styleElement = textNodeDOM || parentElement || elementDOM;\n\n // Get computed styles from the node\n if (styleElement) {\n const computedStyle = window.getComputedStyle(styleElement);\n\n // Get font family - extract first font from the list\n const fontFamily = computedStyle.getPropertyValue(\"font-family\");\n if (fontFamily) {\n let firstFont = fontFamily.split(',')[0].trim().replace(/['\"]/g, '');\n // Normalize system fonts to sans-serif\n if (firstFont === \"-apple-system\" || firstFont === \"BlinkMacSystemFont\" || firstFont === \"system-ui\") {\n firstFont = \"sans-serif\";\n }\n newState[eventTypes.fontFamily] = firstFont;\n }\n\n // Get font size - extract only the number\n const fontSize = computedStyle.getPropertyValue(\"font-size\");\n if (fontSize) {\n const fontSizeNum = parseInt(fontSize, 10);\n newState[eventTypes.fontSize] = fontSizeNum || 16; // Default to 16 if parsing fails\n }\n\n // Get text color and background color\n // First try to get inline styles from the element itself\n let color = null;\n let backgroundColor = null;\n\n if (styleElement instanceof HTMLElement && styleElement.style) {\n // Check inline styles first (more accurate for Lexical's inline formatting)\n color = styleElement.style.color || null;\n backgroundColor = styleElement.style.backgroundColor || null;\n }\n\n // Fallback to computed styles if inline styles not found\n if (!color) {\n color = computedStyle.getPropertyValue(\"color\");\n }\n if (!backgroundColor) {\n backgroundColor = computedStyle.getPropertyValue(\"background-color\");\n }\n\n console.log(\"🎨 Color detection:\", {\n inlineColor: styleElement instanceof HTMLElement ? styleElement.style.color : 'N/A',\n inlineBg: styleElement instanceof HTMLElement ? styleElement.style.backgroundColor : 'N/A',\n computedColor: color,\n computedBg: backgroundColor,\n element: styleElement\n });\n\n // Only set if we have actual colors (not transparent/initial)\n const hexColor = color ? rgbToHex(color) : null;\n const hexBgColor = backgroundColor && backgroundColor !== 'rgba(0, 0, 0, 0)' && backgroundColor !== 'transparent'\n ? rgbToHex(backgroundColor)\n : null;\n\n if (hexColor || hexBgColor) {\n newState[eventTypes.color.base] = {\n text: hexColor || '#000000',\n background: hexBgColor || '#ffffff'\n };\n }\n\n // Get text alignment - normalize \"start\" to \"left\"\n let textAlign = computedStyle.getPropertyValue(\"text-align\") || \"left\";\n if (textAlign === \"start\") {\n textAlign = \"left\";\n }\n newState[eventTypes.align.base] = textAlign;\n }\n\n setSelectedEventTypes(newState);\n }\n }, [editor]);\n\n useEffect(() => {\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n updateToolbar();\n });\n }),\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n updateToolbar();\n return false;\n },\n LowPriority\n )\n );\n }, [editor, updateToolbar]);\n function onChange(type: string, event: unknown) {\n switch (type) {\n case eventTypes.bold:\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"bold\");\n break;\n case eventTypes.italic:\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"italic\");\n break;\n case eventTypes.underline:\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"underline\");\n break;\n case eventTypes.align.base:\n editor.dispatchCommand(FORMAT_ELEMENT_COMMAND, event as any);\n break;\n case eventTypes.undo:\n editor.dispatchCommand(UNDO_COMMAND, undefined);\n break;\n case eventTypes.redo:\n editor.dispatchCommand(REDO_COMMAND, undefined);\n break;\n case eventTypes.listNumber:\n formatNumberedList();\n break;\n case eventTypes.listBullet:\n formatBulletList();\n break;\n case eventTypes.indent:\n addIndent();\n break;\n case eventTypes.indentDecrease:\n removeIndent();\n break;\n case eventTypes.color.base:\n applyFontColor(event as { background: string; text: string });\n break;\n case eventTypes.fontFamily:\n applyFontFamily(event as string);\n break;\n case eventTypes.fontSize:\n applyFontSize(event as string);\n break;\n case eventTypes.link:\n insertLink();\n break;\n\n default:\n break;\n }\n }\n\n const addIndent = () => {\n editor.dispatchCommand(INDENT_CONTENT_COMMAND, undefined);\n };\n\n const applyFontFamily = (fontFamily: string) => {\n editor.update(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n $patchStyleText(selection, { \"font-family\": fontFamily });\n }\n });\n };\n\n const applyFontSize = (fontSize: string) => {\n const selectedFontSize =\n OPTIONS.find((i) => i.key === fontSize)?.sizePx ?? 16;\n editor.update(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n $patchStyleText(selection, { \"font-size\": `${selectedFontSize}px` });\n }\n });\n };\n\n const applyFontColor = (colorObj: { background: string; text: string }) => {\n editor.update(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n $patchStyleText(selection, {\n \"background-color\": colorObj.background,\n color: colorObj.text,\n });\n }\n });\n };\n\n const insertLink = useCallback(() => {\n if (!isLink) {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, \"https://\");\n } else {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);\n }\n }, [editor, isLink]);\n\n const removeIndent = () => {\n editor.dispatchCommand(OUTDENT_CONTENT_COMMAND, undefined);\n };\n\n const formatBulletList = () => {\n if (blockType !== \"ul\") {\n editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined);\n } else {\n editor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n }\n };\n\n const formatNumberedList = () => {\n if (blockType !== \"ol\") {\n editor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined);\n } else {\n editor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n }\n };\n function getSelectedNode(selection: any) {\n const anchor = selection.anchor;\n const focus = selection.focus;\n const anchorNode = selection.anchor.getNode();\n const focusNode = selection.focus.getNode();\n if (anchorNode === focusNode) {\n return anchorNode;\n }\n const isBackward = selection.isBackward();\n if (isBackward) {\n return $isAtNodeEnd(focus) ? anchorNode : focusNode;\n } else {\n return $isAtNodeEnd(anchor) ? focusNode : anchorNode;\n }\n }\n\n return { onChange, isLink, editor, selectedEventTypes, blockType };\n}\n\nexport default useOnClickListener;\n","import { useCallback, useEffect, useRef, useState } from \"react\";\nimport {\n SELECTION_CHANGE_COMMAND,\n $getSelection,\n $isRangeSelection,\n type LexicalEditor,\n type BaseSelection,\n type RangeSelection,\n} from \"lexical\";\nimport { mergeRegister } from \"@lexical/utils\";\nimport { $isLinkNode, TOGGLE_LINK_COMMAND } from \"@lexical/link\";\nimport { $isAtNodeEnd } from \"@lexical/selection\";\nimport \"./index.css\";\nimport Icon from \"../Icon\";\n\ninterface FloatingLinkEditorProps {\n editor: LexicalEditor;\n}\n\nfunction FloatingLinkEditor({ editor }: FloatingLinkEditorProps) {\n const editorRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const mouseDownRef = useRef(false);\n const [linkUrl, setLinkUrl] = useState(\"\");\n const [isEditMode, setEditMode] = useState(false);\n const [lastSelection, setLastSelection] = useState<BaseSelection | null>(null);\n\n const updateLinkEditor = useCallback(() => {\n const nativeSelection = window.getSelection();\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n const node = getSelectedNode(selection);\n const parent = node.getParent();\n if ($isLinkNode(parent)) {\n setLinkUrl(parent.getURL());\n } else if ($isLinkNode(node)) {\n setLinkUrl(node.getURL());\n } else {\n setLinkUrl(\"\");\n }\n }\n\n const editorElem = editorRef.current;\n\n const activeElement = document.activeElement;\n\n if (!editorElem) return;\n\n const rootElement = editor.getRootElement();\n\n if (\n selection &&\n nativeSelection &&\n !nativeSelection.isCollapsed &&\n rootElement &&\n rootElement.contains(nativeSelection.anchorNode)\n ) {\n const domRange = nativeSelection.getRangeAt(0);\n let rect;\n if (nativeSelection.anchorNode === rootElement) {\n let inner: HTMLElement | Element = rootElement;\n while (inner.firstElementChild != null) inner = inner.firstElementChild;\n rect = inner.getBoundingClientRect();\n } else {\n rect = domRange.getBoundingClientRect();\n }\n\n if (!mouseDownRef.current) {\n positionEditorElement(editorElem, rect);\n }\n setLastSelection(selection);\n } else if (!activeElement || activeElement.className !== \"link-input\") {\n positionEditorElement(editorElem, null);\n setLastSelection(null);\n setEditMode(false);\n setLinkUrl(\"\");\n }\n\n return true;\n }, [editor]);\n\n useEffect(() => {\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }: { editorState: any }) => {\n editorState.read(() => {\n updateLinkEditor();\n });\n }),\n\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n updateLinkEditor();\n return true;\n },\n 1\n )\n );\n }, [editor, updateLinkEditor]);\n\n useEffect(() => {\n editor.getEditorState().read(() => {\n updateLinkEditor();\n });\n }, [editor, updateLinkEditor]);\n\n useEffect(() => {\n if (isEditMode && inputRef.current) {\n inputRef.current.focus();\n }\n }, [isEditMode]);\n\n return (\n <div className=\"floating-link-editor\" ref={editorRef}>\n {isEditMode ? (\n <input\n ref={inputRef}\n className=\"link-input\"\n value={linkUrl}\n onChange={(e) => setLinkUrl(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n if (lastSelection && linkUrl !== \"\") {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, linkUrl);\n }\n setEditMode(false);\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n setEditMode(false);\n }\n }}\n placeholder=\"Enter link...\"\n />\n ) : (\n <div className=\"link-display\">\n <a href={linkUrl} target=\"_blank\" rel=\"noopener noreferrer\">\n {linkUrl || \"No link selected\"}\n </a>\n </div>\n )}\n\n <button\n className=\"link-button\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => {\n console.log(\"floating link editor\", isEditMode);\n if (isEditMode) editor.dispatchCommand(TOGGLE_LINK_COMMAND, linkUrl);\n setEditMode((prev) => !prev);\n }}>\n <Icon name={isEditMode ? \"Check\" : \"Edit\"} />\n </button>\n </div>\n );\n}\n\nfunction getSelectedNode(selection: RangeSelection) {\n const anchorNode = selection.anchor.getNode();\n const focusNode = selection.focus.getNode();\n if (anchorNode === focusNode) return anchorNode;\n\n const isBackward = selection.isBackward();\n return isBackward\n ? $isAtNodeEnd(selection.focus)\n ? anchorNode\n : focusNode\n : $isAtNodeEnd(selection.anchor)\n ? focusNode\n : anchorNode;\n}\n\n// 🧭 Smart position logic to prevent going off-screen\nfunction positionEditorElement(editor: HTMLElement, rect: DOMRect | null) {\n if (!rect) {\n editor.style.opacity = \"0\";\n editor.style.top = \"-1000px\";\n editor.style.left = \"-1000px\";\n return;\n }\n\n const editorWidth = editor.offsetWidth;\n const editorHeight = editor.offsetHeight;\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n\n // Default position (below selection)\n let top = rect.top + rect.height + window.pageYOffset + 10;\n let left = rect.left + window.pageXOffset - editorWidth / 2 + rect.width / 2;\n\n // 🧩 Clamp horizontally\n if (left < 8) left = 8;\n if (left + editorWidth > viewportWidth - 8)\n left = viewportWidth - editorWidth - 8;\n\n // 🧩 Clamp vertically\n if (top + editorHeight > viewportHeight - 8) {\n top = rect.top + window.pageYOffset - editorHeight - 10; // place above\n }\n if (top < 8) top = 8;\n\n editor.style.opacity = \"1\";\n editor.style.top = `${top}px`;\n editor.style.left = `${left}px`;\n}\n\nexport default FloatingLinkEditor;\n","import { useState, useCallback, useEffect } from \"react\";\nimport { useDropzone } from \"react-dropzone\";\nimport heic2any from \"heic2any\";\n\n/** ------------------ CONSTANTS ------------------ **/\n\nexport const FILE_UPLOAD_ERROR = {\n FILE_INVALID_TYPE: \"file-invalid-type\",\n FILE_TOO_LARGE: \"file-too-large\",\n TOO_MANY_FILES: \"too-many-files\",\n HEIC_CONVERSION_ERROR: \"heic-conversion-error\",\n};\n\nexport const MAX_NUMBER_OF_FILES_ALLOWED = 10;\nexport const MAX_SIZE_OF_FILE_ALLOWED_MB = 10; // 10 MB\n\n/** ------------------ UTILITIES ------------------ **/\n\nexport const getId = (): string =>\n Math.random().toString(36).substring(2, 10) + Date.now().toString(36);\n\nexport const getMBs = (bytes: number): { value: string; type: string } => {\n if (bytes < 1024) return { value: bytes.toString(), type: \"bytes\" };\n const kb = bytes / 1024;\n if (kb < 1024) return { value: kb.toFixed(1), type: \"KB\" };\n const mb = kb / 1024;\n if (mb < 1024) return { value: mb.toFixed(1), type: \"MB\" };\n const gb = mb / 1024;\n return { value: gb.toFixed(1), type: \"GB\" };\n};\n\n/** ------------------ TYPE DEFINITIONS ------------------ **/\n\nexport interface UploadedFile extends File {\n uuid: string;\n preview: string;\n}\n\nexport interface RejectedFileWithPreview {\n file: File;\n preview: string;\n readableErrors: string[];\n errors: { code: string; message: string }[];\n}\n\nexport interface UseFileUploadOptions {\n accept?: Record<string, string[]>;\n maxSize?: number;\n maxFiles?: number;\n multiple?: boolean;\n isDisabled?: boolean;\n replaceAfterUpload?: boolean;\n files?: UploadedFile[];\n name?: string;\n insideForm?: boolean;\n handleFileChange?: (value: any) => void;\n}\n\nexport interface UseFileUploadReturn {\n getRootProps: any;\n getInputProps: any;\n isDragActive: boolean;\n isFileDialogOpen: boolean;\n rejectedFiles: RejectedFileWithPreview[];\n openFileDialog: () => void;\n removeFile: (uuid: string) => void;\n clearRejectedFiles: () => void;\n}\n\n/** ------------------ MAIN HOOK ------------------ **/\n\nexport const useFileUpload = ({\n accept = {\n \"image/*\": [\".png\", \".gif\", \".jpeg\", \".jpg\"],\n \"application/pdf\": [\".pdf\"],\n },\n maxSize = MAX_SIZE_OF_FILE_ALLOWED_MB * 1024 * 1024,\n maxFiles = MAX_NUMBER_OF_FILES_ALLOWED,\n multiple = true,\n isDisabled = false,\n replaceAfterUpload = false,\n files = [],\n handleFileChange = () => {},\n}: UseFileUploadOptions): UseFileUploadReturn => {\n const [isFileDialogOpen, setIsFileDialogOpen] = useState(false);\n const [fileUploaded, setFileUploaded] = useState<UploadedFile[]>(files ?? []);\n const [rejectedFiles, setRejectedFile] = useState<RejectedFileWithPreview[]>(\n []\n );\n\n /** User-friendly error text generator */\n const getErrorText = (errorCode: string): string => {\n switch (errorCode) {\n case FILE_UPLOAD_ERROR.FILE_INVALID_TYPE:\n return \"Invalid file type. Please upload a supported format.\";\n case FILE_UPLOAD_ERROR.FILE_TOO_LARGE: {\n const { value, type } = getMBs(maxSize);\n return `File too large. Maximum allowed size is ${value} ${type}.`;\n }\n case FILE_UPLOAD_ERROR.TOO_MANY_FILES:\n return `Too many files selected. Maximum allowed: ${maxFiles}.`;\n case FILE_UPLOAD_ERROR.HEIC_CONVERSION_ERROR:\n return \"Failed to convert HEIC image. Please upload a JPEG or PNG instead.\";\n default:\n return \"An unknown file error occurred.\";\n }\n };\n\n /** Update form or callback on change */\n useEffect(() => {\n handleFileChange(fileUploaded);\n }, [fileUploaded]);\n\n /** Setup Dropzone */\n const { getRootProps, getInputProps, isDragActive, open } = useDropzone({\n accept,\n maxSize,\n multiple,\n maxFiles,\n disabled: isDisabled,\n noClick: true,\n onFileDialogCancel: () => setIsFileDialogOpen(false),\n onFileDialogOpen: () => {\n if (!isDisabled) setIsFileDialogOpen(true);\n },\n onDrop: async (_acceptedFiles, fileRejections) => {\n const acceptedFiles = await Promise.all(\n _acceptedFiles.map(async (file) => {\n if (!file) return null;\n\n // Handle HEIC conversion\n if (file.type === \"image/heic\") {\n try {\n const blob = await heic2any({ blob: file, toType: \"image/jpeg\" });\n const blobArray = Array.isArray(blob) ? blob[0] : blob;\n const convertedFile = new File(\n [blobArray],\n `${file.name.replace(/\\.heic$/i, \"\")}.jpeg`,\n { type: \"image/jpeg\" }\n );\n return Object.assign(convertedFile, {\n uuid: getId(),\n preview: URL.createObjectURL(convertedFile),\n });\n } catch (err) {\n console.error(\"HEIC conversion error:\", err);\n const msg = getErrorText(FILE_UPLOAD_ERROR.HEIC_CONVERSION_ERROR);\n setRejectedFile((prev) => [\n ...prev,\n {\n file,\n preview: URL.createObjectURL(file),\n readableErrors: [msg],\n errors: [\n {\n code: FILE_UPLOAD_ERROR.HEIC_CONVERSION_ERROR,\n message: msg,\n },\n ],\n },\n ]);\n return null;\n }\n }\n\n // Normal file\n return Object.assign(file, {\n uuid: getId(),\n preview: URL.createObjectURL(file),\n });\n })\n );\n\n const validFiles = acceptedFiles.filter(Boolean) as UploadedFile[];\n\n if (!isDisabled) {\n let newFiles = replaceAfterUpload ? [] : [...fileUploaded];\n newFiles = [...newFiles, ...validFiles];\n\n const mappedRejections = fileRejections.map<RejectedFileWithPreview>(\n (item) => {\n const readableErrors = item.errors.map((err) =>\n getErrorText(err.code)\n );\n return {\n file: item.file,\n errors: item.errors.map((err) => ({ code: err.code, message: err.message })),\n preview: URL.createObjectURL(item.file),\n readableErrors,\n };\n }\n );\n\n setRejectedFile((prev) => [...prev, ...mappedRejections]);\n setFileUploaded(newFiles);\n return newFiles;\n }\n\n return fileUploaded;\n },\n validator: (item) => {\n const { name: fileName, type } = item;\n if (fileName) {\n const ext = fileName.split(\".\").pop()?.toLowerCase();\n if (\n accept &&\n accept?.[type] &&\n accept?.[type].length &&\n !accept?.[type].includes(`.${ext}`)\n ) {\n return {\n code: FILE_UPLOAD_ERROR.FILE_INVALID_TYPE,\n message: getErrorText(FILE_UPLOAD_ERROR.FILE_INVALID_TYPE),\n };\n }\n }\n return null;\n },\n });\n\n /** Remove a specific file */\n const removeFile = useCallback(\n (uuid: string) => {\n setFileUploaded((prev) => prev.filter((file) => file.uuid !== uuid));\n },\n [setFileUploaded]\n );\n\n /** Clear rejected files */\n const clearRejectedFiles = useCallback(() => {\n setRejectedFile([]);\n }, []);\n\n /** Cleanup memory leaks */\n useEffect(() => {\n return () => {\n fileUploaded.forEach((f) => f.preview && URL.revokeObjectURL(f.preview));\n rejectedFiles.forEach((r) => r.preview && URL.revokeObjectURL(r.preview));\n };\n }, []);\n\n /** Return all handlers and states */\n return {\n getRootProps,\n getInputProps,\n isDragActive,\n isFileDialogOpen,\n rejectedFiles,\n openFileDialog: open,\n removeFile,\n clearRejectedFiles,\n };\n};\n","import React from \"react\";\nimport Icon from \"../Icon\";\nimport { useFileUpload } from \"../../../hook/useFileUpload\";\n\ninterface FileUploaderProps {\n value?: File[];\n handleFileChange: (files: File[]) => void;\n}\n\nconst FileUploader: React.FC<FileUploaderProps> = ({ handleFileChange }) => {\n const {\n getRootProps,\n getInputProps,\n openFileDialog,\n } = useFileUpload({\n multiple: true,\n maxFiles: 5,\n maxSize: 5 * 1024 * 1024, // 5 MB\n handleFileChange: (files) => {\n handleFileChange(files);\n },\n });\n\n return (\n <div className=\"uploader-container\">\n {/* Upload area */}\n <div {...getRootProps()}>\n <input {...getInputProps()} />\n <button onClick={openFileDialog}>\n <Icon className=\"upload-icon\" name=\"Attach\" />\n </button>\n </div>\n </div>\n );\n};\n\nexport default FileUploader;\n","import { useMemo } from \"react\";\nimport \"./FilePreview.css\";\n\n/**\n * Props:\n * - file: File | { name, size, type?, url? }\n * - index?: number // shown as (index)\n * - onRemove?: () => void\n * - onView?: (url) => void\n *\n * Behavior:\n * - If `file` is a native File object and no url provided, component creates an object URL for view/download.\n * - Renders like: (70) WhatsApp.html (505K) [×]\n * - No icons, minimal markup to match screenshot.\n */\n\ninterface FilePreviewProps {\n file: File | { name: string; size?: number; bytes?: number; type?: string; url?: string };\n index?: number;\n onRemove?: (index?: number) => void;\n onView?: (url: string | null) => void;\n}\n\nexport default function FilePreview({ file, index, onRemove, onView }: FilePreviewProps) {\n if (!file) return null;\n\n const name = file?.name ?? \"unknown\";\n const sizeBytes: number | null =\n file instanceof File\n ? file.size\n : ('size' in file && file.size !== undefined\n ? file.size\n : ('bytes' in file && file.bytes !== undefined ? file.bytes : null));\n const urlFromProp = ('url' in file ? file?.url : null) ?? null;\n\n // If file is a native File and no url provided, createObjectURL.\n const url = useMemo(() => {\n if (urlFromProp) return urlFromProp;\n if (typeof window !== \"undefined\" && file instanceof File) {\n try {\n return URL.createObjectURL(file);\n } catch (e) {\n return null;\n }\n }\n return null;\n }, [file, urlFromProp]);\n\n const formatSizeShort = (bytes: number | null) => {\n if (!bytes && bytes !== 0) return \"\";\n const kb = Math.round(bytes / 1024);\n if (kb < 1024) return `${kb}K`;\n const mb = Math.round((bytes / 1024 / 1024) * 10) / 10;\n return `${mb}M`;\n };\n\n const handleView = (e: React.MouseEvent) => {\n e.preventDefault();\n if (onView) return onView(url ?? null);\n if (url) window.open(url, \"_blank\", \"noopener\");\n };\n\n const handleRemove = (index?: number) => {\n if (onRemove) onRemove(index);\n };\n\n return (\n <div className=\"fps-row\" role=\"group\" aria-label={`Attachment ${name}`}>\n <div className=\"fps-left\">\n <a\n href={url ?? \"#\"}\n className=\"fps-filename\"\n onClick={handleView}\n title={name}\n target=\"_blank\"\n rel=\"noopener noreferrer\">\n {name}\n </a>\n {sizeBytes != null && (\n <span className=\"fps-size\">&nbsp;({formatSizeShort(sizeBytes)})</span>\n )}\n </div>\n\n <button\n type=\"button\"\n className=\"fps-close\"\n aria-label={`Remove ${name}`}\n onClick={() => handleRemove(index)}>\n ×\n </button>\n </div>\n );\n}\n","import { useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport {\n eventTypes,\n pluginList,\n toolbarComponentType,\n} from \"../../../utils/toolbar\";\nimport Icon from \"../../core/Icon\";\nimport FontSelect from \"../../core/FontSelect\";\nimport FontSizePicker from \"../../core/FontSize\";\nimport ColorPicker from \"../../core/ColorPicker\";\nimport AlignmentSelect from \"../../core/AlignmentSelect\";\nimport \"./style.css\";\n\nimport useOnClickListener from \"../../../hook/useOnClickListener\";\nimport FloatingLinkEditor from \"../../core/FloatingLinkEditor\";\nimport FileUploader from \"../../core/FileUploader\";\nimport FilePreview from \"../../core/FileUploader/FilePreview\";\nimport { useEmailContext } from \"../../GmailWrapper/EmailContext\";\n\ninterface ToolbarComponentProps {\n onChange: (name: string, value: any) => void;\n state: Record<string, any>;\n setState: React.Dispatch<React.SetStateAction<Record<string, any>>>;\n selectedEventTypes: Record<string, any>;\n blockType: string;\n setAttachments: (files: File[]) => void;\n}\n\nconst getToolbarComponent = (\n plugin: any,\n { onChange, state, setState, selectedEventTypes, blockType, setAttachments }: ToolbarComponentProps\n) => {\n switch (plugin.name) {\n case eventTypes.undo:\n case eventTypes.redo:\n case eventTypes.bold:\n case eventTypes.italic:\n case eventTypes.underline:\n case eventTypes.indentDecrease:\n case eventTypes.indent:\n case eventTypes.link:\n return (\n <button\n key={`${plugin.name}-${plugin.icon}`}\n className={`tool-bar-button ${selectedEventTypes?.[plugin.name] ? \"active-btn-toolbar\" : \"\"}`}\n onClick={() => {\n onChange(plugin.name, true);\n }}>\n <Icon className=\"tool-bar-button-icon\" name={plugin.icon} />\n </button>\n );\n case eventTypes.listNumber:\n return (\n <button\n key={`${plugin.name}-${plugin.icon}`}\n className={blockType === \"ol\" ? \"active-btn-toolbar\" : \"\"}\n onClick={() => {\n onChange(plugin.name, true);\n }}>\n <Icon className=\"tool-bar-button-icon\" name={plugin.icon} />\n </button>\n );\n case eventTypes.listBullet:\n return (\n <button\n key={`${plugin.name}-${plugin.icon}`}\n className={blockType === \"ul\" ? \"active-btn-toolbar\" : \"\"}\n onClick={() => {\n onChange(plugin.name, true);\n }}>\n <Icon className=\"tool-bar-button-icon\" name={plugin.icon} />\n </button>\n );\n case eventTypes.attachFile:\n return (\n <FileUploader\n value={state?.[plugin.name]}\n handleFileChange={(e) => {\n console.log(\"🚀 ~ getToolbarComponent ~ e:\", e);\n setState((prev) => {\n return { ...prev, [plugin.name]: e };\n });\n // Update the EmailContext with the new attachments\n setAttachments(e);\n }}\n />\n );\n case eventTypes.fontFamily:\n return (\n <FontSelect\n value={selectedEventTypes?.[plugin.name] || state?.[plugin.name]}\n onChange={(e) => {\n onChange(plugin.name, e);\n }}\n />\n );\n case eventTypes.fontSize:\n return (\n <FontSizePicker\n value={selectedEventTypes?.[plugin.name] || state?.[plugin.name]}\n onChange={(e) => {\n onChange(plugin.name, e);\n }}\n />\n );\n case eventTypes.color.base:\n return (\n <ColorPicker\n value={selectedEventTypes?.[plugin.name] || state?.[plugin.name]}\n onChange={(e) => {\n onChange(plugin.name, e);\n }}\n />\n );\n case eventTypes.align.base:\n return (\n <AlignmentSelect\n value={selectedEventTypes?.[plugin.name] || state?.[plugin.name]}\n onChange={(e) => {\n onChange(plugin.name, e);\n }}\n />\n );\n\n default:\n break;\n }\n if (plugin.type === toolbarComponentType.divider)\n return <span className=\"divider\" />;\n else return \"-\";\n};\ninterface GetComponentProps extends ToolbarComponentProps {\n toggle: boolean;\n setToggle: React.Dispatch<React.SetStateAction<boolean>>;\n}\n\nconst getComponent = (\n plugin: {\n type: string;\n icon?: string;\n options?: any[];\n },\n {\n setToggle,\n toggle,\n onChange,\n state,\n setState,\n selectedEventTypes,\n blockType,\n setAttachments,\n }: GetComponentProps\n) => {\n switch (plugin.type) {\n case toolbarComponentType.divider:\n return (\n <div\n key={`divider-${plugin.type}-${plugin.icon}`}\n className=\"divider\"\n />\n );\n case toolbarComponentType.component:\n return getToolbarComponent(plugin, {\n onChange,\n state,\n setState,\n selectedEventTypes,\n blockType,\n setAttachments,\n });\n case toolbarComponentType.styling:\n return (\n <div\n key={`divider-${plugin.type}-${plugin.icon}`}\n className=\"styling-toolbar\">\n {toggle ? (\n <div className=\"styling-options\">\n {plugin.options?.length && Array.isArray(plugin.options)\n ? plugin.options?.map((option: string) =>\n getToolbarComponent(option, {\n onChange,\n state,\n setState,\n selectedEventTypes,\n blockType,\n setAttachments,\n })\n )\n : null}\n </div>\n ) : null}\n <button onClick={() => setToggle((prev) => !prev)}>\n <Icon className=\"tool-bar-button-icon\" name={plugin.icon as any} />\n </button>\n </div>\n );\n default:\n break;\n }\n return \"-\";\n};\ninterface ToolBarProps {\n rightChildren?: React.ReactNode;\n leftChildren?: React.ReactNode;\n}\n\nfunction ToolBar({ rightChildren, leftChildren }: ToolBarProps) {\n const [toggle, setToggle] = useState(true);\n const [state, setState] = useState<Record<string, any>>({});\n const { setAttachments } = useEmailContext();\n const { onChange, isLink, editor, selectedEventTypes, blockType } =\n useOnClickListener();\n console.log(\"🚀 ~ ToolBar ~ selectedEventTypes:\", selectedEventTypes);\n return (\n <div className=\"toolbar-container\">\n {state[eventTypes.attachFile]?.length ? (\n <div className=\"file-upload-container\">\n {state[eventTypes.attachFile]?.map((item: File, index: number) => (\n <FilePreview\n key={index}\n file={item}\n index={index}\n onRemove={(index) => {\n setState((prev: any) => {\n const updatedFiles = prev[eventTypes.attachFile].filter(\n (_file: File, i: number) => i !== index\n );\n // Update EmailContext with the new attachments list\n setAttachments(updatedFiles);\n return {\n ...prev,\n [eventTypes.attachFile]: updatedFiles,\n };\n });\n }}\n />\n ))}\n </div>\n ) : null}\n <div className=\"toolbar-wrapper\">\n {leftChildren}\n {pluginList?.map((plugin) =>\n getComponent(plugin, {\n setToggle,\n state,\n setState,\n toggle,\n onChange,\n selectedEventTypes,\n blockType,\n setAttachments,\n })\n )}\n {rightChildren}\n {isLink\n ? createPortal(<FloatingLinkEditor editor={editor} />, document.body)\n : null}\n </div>\n </div>\n );\n}\n\nexport default ToolBar;\n","const lexicalEditorTheme = {\n ltr: \"ltr\",\n rtl: \"rtl\",\n placeholder: \"editor-placeholder\",\n paragraph: \"editor-paragraph\",\n quote: \"editor-quote\",\n heading: {\n h1: \"editor-heading-h1\",\n h2: \"editor-heading-h2\",\n h3: \"editor-heading-h3\",\n h4: \"editor-heading-h4\",\n h5: \"editor-heading-h5\",\n },\n list: {\n nested: {\n listitem: \"editor-nested-listitem\",\n },\n ol: \"editor-list-ol\",\n ul: \"editor-list-ul\",\n listitem: \"editor-listitem\",\n },\n image: \"editor-image\",\n link: \"editor-link\",\n text: {\n bold: \"editor-text-bold\",\n italic: \"editor-text-italic\",\n overflowed: \"editor-text-overflowed\",\n hashtag: \"editor-text-hashtag\",\n underline: \"editor-text-underline\",\n strikethrough: \"editor-text-strikethrough\",\n underlineStrikethrough: \"editor-text-underlineStrikethrough\",\n code: \"editor-text-code\",\n },\n code: \"editor-code\",\n codeHighlight: {\n atrule: \"editor-tokenAttr\",\n attr: \"editor-tokenAttr\",\n boolean: \"editor-tokenProperty\",\n builtin: \"editor-tokenSelector\",\n cdata: \"editor-tokenComment\",\n char: \"editor-tokenSelector\",\n class: \"editor-tokenFunction\",\n \"class-name\": \"editor-tokenFunction\",\n comment: \"editor-tokenComment\",\n constant: \"editor-tokenProperty\",\n deleted: \"editor-tokenProperty\",\n doctype: \"editor-tokenComment\",\n entity: \"editor-tokenOperator\",\n function: \"editor-tokenFunction\",\n important: \"editor-tokenVariable\",\n inserted: \"editor-tokenSelector\",\n keyword: \"editor-tokenAttr\",\n namespace: \"editor-tokenVariable\",\n number: \"editor-tokenProperty\",\n operator: \"editor-tokenOperator\",\n prolog: \"editor-tokenComment\",\n property: \"editor-tokenProperty\",\n punctuation: \"editor-tokenPunctuation\",\n regex: \"editor-tokenVariable\",\n selector: \"editor-tokenSelector\",\n string: \"editor-tokenSelector\",\n symbol: \"editor-tokenProperty\",\n tag: \"editor-tokenProperty\",\n url: \"editor-tokenOperator\",\n variable: \"editor-tokenVariable\",\n },\n};\nexport default lexicalEditorTheme;\n","import { useEffect } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $generateNodesFromDOM } from \"@lexical/html\";\nimport { $getRoot } from \"lexical\";\n\ninterface SetInitialHTMLProps {\n initialHTML: string;\n}\n\nfunction SetInitialHTML({ initialHTML }: SetInitialHTMLProps) {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n editor.update(() => {\n const parser = new DOMParser();\n const dom = parser.parseFromString(initialHTML, \"text/html\");\n const nodes = $generateNodesFromDOM(editor, dom);\n const root = $getRoot();\n\n root.clear(); // Clear existing content\n root.append(...nodes); // Insert parsed HTML\n });\n }, [editor, initialHTML]);\n\n return null;\n}\n\nexport default SetInitialHTML;\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $generateHtmlFromNodes } from \"@lexical/html\";\nimport { useEffect } from \"react\";\n\nexport default function OnChangePlugin({\n onChange\n}: {\n onChange: (html: string) => void\n}) {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n return editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n const html = $generateHtmlFromNodes(editor, null);\n onChange(html);\n });\n });\n }, [editor, onChange]);\n\n return null;\n}\n","import { AutoFocusPlugin } from \"@lexical/react/LexicalAutoFocusPlugin\";\nimport { LexicalComposer } from \"@lexical/react/LexicalComposer\";\nimport { RichTextPlugin } from \"@lexical/react/LexicalRichTextPlugin\";\nimport { ContentEditable } from \"@lexical/react/LexicalContentEditable\";\nimport { HistoryPlugin } from \"@lexical/react/LexicalHistoryPlugin\";\nimport { LexicalErrorBoundary } from \"@lexical/react/LexicalErrorBoundary\";\nimport \"./editor.css\";\nimport ToolBar from \"../Toolbar\";\nimport lexicalEditorTheme from \"../../../Themes/lexicalEditortheme\";\nimport { ListPlugin } from \"@lexical/react/LexicalListPlugin\";\nimport { LinkPlugin } from \"@lexical/react/LexicalLinkPlugin\";\nimport { AutoLinkNode, LinkNode } from \"@lexical/link\";\nimport { ListItemNode, ListNode } from \"@lexical/list\";\nimport SetInitialHTML from \"../../../plugins/SetInitialHTML\";\nimport OnChangePlugin from \"../../../plugins/OnChangePlugin\";\n\n// Catch any errors that occur during Lexical updates and log them\n// or throw them as needed. If you don't throw them, Lexical will\n// try to recover gracefully without losing user data.\nfunction onError(error: Error) {\n console.error(error);\n}\ntype EditorWrapperProps = {\n placeholder?: string;\n minHeight?: string;\n initialHTML?: string;\n rightChildren?: React.ReactNode;\n leftChildren?: React.ReactNode;\n onChange?: (html: string) => void;\n editorChildren?: React.ReactNode;\n isEditorVisible?: boolean;\n};\nfunction EditorWrapper({\n placeholder = \"\",\n initialHTML = \"\",\n rightChildren,\n leftChildren,\n minHeight = \"\",\n onChange,\n editorChildren,\n isEditorVisible = true,\n}: EditorWrapperProps) {\n const initialConfig = {\n namespace: \"MyEditor\",\n theme: lexicalEditorTheme,\n nodes: [LinkNode, ListNode, ListItemNode, AutoLinkNode],\n onError,\n };\n\n return (\n <div className=\"my-editor-wrapper\">\n <LexicalComposer initialConfig={initialConfig}>\n {isEditorVisible ? (\n <RichTextPlugin\n contentEditable={\n <ContentEditable\n style={{ minHeight }}\n className=\"my-editor-content\"\n aria-placeholder={placeholder}\n placeholder={\n <div className=\"my-editor-placeholder\">{placeholder}</div>\n }\n />\n }\n ErrorBoundary={LexicalErrorBoundary}\n />\n ) : (\n editorChildren\n )}\n <ToolBar rightChildren={rightChildren} leftChildren={leftChildren} />\n <HistoryPlugin />\n <SetInitialHTML initialHTML={initialHTML} />\n <AutoFocusPlugin />\n <ListPlugin />\n <LinkPlugin />\n {onChange && <OnChangePlugin onChange={onChange} />}\n </LexicalComposer>\n </div>\n );\n}\n\nexport default EditorWrapper;\n","function isValidEmail(email: string): boolean {\n return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email);\n}\n\nexport { isValidEmail };\n","import { useEffect, useRef, useState } from \"react\";\nimport Popup from \"reactjs-popup\";\nimport { isValidEmail } from \"../../../utils/common\";\nimport Icon from \"../../core/Icon\";\nimport type { EmailOption } from \"../EmailContext\";\n\nfunction InputWithDropDown({\n emails = [],\n setEmails,\n fetchOptions,\n}: {\n emails?: EmailOption[];\n setEmails: (\n emails: EmailOption[] | ((prev: EmailOption[]) => EmailOption[])\n ) => void;\n fetchOptions: (currentEmail: string) => Promise<EmailOption[]>;\n}) {\n const popupRef = useRef<any>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const [currentEmail, setCurrentEmail] = useState(\"\");\n const [popupOpen, setPopupOpen] = useState(false);\n const [selectedIndex, setSelectedIndex] = useState(-1);\n const [options, setOptions] = useState<EmailOption[]>([]);\n const [loading, setLoading] = useState(false);\n\n // store refs for each email chip\n const emailRefs = useRef<(HTMLDivElement | null)[]>([]);\n // store refs for dropdown options\n const optionRefs = useRef<(HTMLButtonElement | null)[]>([]);\n\n // keep refs array length consistent\n useEffect(() => {\n emailRefs.current = emailRefs.current.slice(0, emails.length);\n }, [emails.length]);\n\n // keep option refs array length consistent\n useEffect(() => {\n optionRefs.current = optionRefs.current.slice(0, options.length);\n }, [options.length]);\n\n // Fetch options when a valid email is entered\n useEffect(() => {\n if (isValidEmail(currentEmail)) {\n const loadOptions = async () => {\n setLoading(true);\n try {\n const data = await fetchOptions(currentEmail);\n setOptions(data);\n } catch (err) {\n console.error(\"Error fetching email options:\", err);\n setOptions([]);\n } finally {\n setLoading(false);\n }\n };\n\n loadOptions();\n } else {\n setOptions([]);\n setLoading(false);\n }\n }, [currentEmail, fetchOptions]);\n\n // reset selected index when popup closes or options change\n useEffect(() => {\n if (!popupOpen) {\n setSelectedIndex(-1);\n }\n }, [popupOpen]);\n\n // scroll selected option into view\n useEffect(() => {\n if (selectedIndex >= 0 && selectedIndex < optionRefs.current.length) {\n optionRefs.current[selectedIndex]?.scrollIntoView({\n block: \"nearest\",\n behavior: \"smooth\",\n });\n }\n }, [selectedIndex]);\n\n const focusInput = () => {\n inputRef.current?.focus();\n };\n\n const addEmail = (option: EmailOption) => {\n popupRef.current?.close();\n setCurrentEmail(\"\");\n setEmails((prev: EmailOption[]) => [...prev, option]);\n setSelectedIndex(-1);\n // refocus input after adding\n requestAnimationFrame(() => inputRef.current?.focus());\n };\n\n const handleInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n // Handle dropdown navigation when popup is open\n if (popupOpen && isValidEmail(currentEmail) && options.length > 0) {\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n setSelectedIndex((prev) =>\n prev < options.length - 1 ? prev + 1 : prev\n );\n return;\n }\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n setSelectedIndex((prev) => (prev > 0 ? prev - 1 : -1));\n return;\n }\n if (e.key === \"Enter\" && selectedIndex >= 0) {\n e.preventDefault();\n addEmail(options[selectedIndex]);\n return;\n }\n if (e.key === \"Escape\") {\n e.preventDefault();\n popupRef.current?.close();\n setSelectedIndex(-1);\n return;\n }\n }\n\n if (e.key === \"Backspace\" && currentEmail === \"\") {\n // focus last email chip if exists\n const lastIdx = emails.length - 1;\n const lastChip = emailRefs.current[lastIdx];\n if (lastChip) {\n lastChip.focus();\n e.preventDefault();\n }\n }\n };\n\n const removeEmailAt = (index: number) => {\n setEmails((prev) => {\n const next = [...prev];\n next.splice(index, 1);\n return next;\n });\n // next tick: focus previous chip if exists else the input\n requestAnimationFrame(() => {\n const prevIdx = Math.min(Math.max(0, index - 1), emails.length - 2);\n const prevChip = emailRefs.current[prevIdx];\n if (prevChip) prevChip.focus();\n else focusInput();\n });\n };\n\n return (\n <>\n <Popup\n ref={popupRef}\n trigger={\n <div className=\"container-receipts\">\n {emails?.length ? (\n <div className=\"emails-container\">\n {emails.map((email, idx) => (\n <div\n key={email.email ?? idx}\n className=\"emails\"\n tabIndex={0} // make it focusable\n ref={(el) => {\n emailRefs.current[idx] = el;\n }}\n onKeyDown={(e) => {\n if (e.key === \"Backspace\") {\n e.preventDefault();\n removeEmailAt(idx);\n }\n if (e.key === \"Enter\") {\n e.preventDefault();\n removeEmailAt(idx);\n focusInput();\n }\n }}\n role=\"button\"\n aria-label={`Email ${email.email}`}>\n <span style={{ marginRight: 8 }}>{email.email}</span>\n <button\n className=\"emails-close\"\n onClick={(ev) => {\n ev.stopPropagation();\n removeEmailAt(idx);\n }}\n aria-label={`Remove ${email.email}`}>\n <Icon name=\"Close\" />\n </button>\n </div>\n ))}\n </div>\n ) : null}\n <input\n ref={inputRef}\n type=\"text\"\n className=\"input-header\"\n value={currentEmail}\n autoFocus\n onKeyDown={handleInputKeyDown}\n // DON'T forcibly close popup here\n onChange={(e) => {\n const val = e.target.value;\n // open popup when the email becomes valid\n if (isValidEmail(val)) {\n popupRef.current?.open();\n }\n setCurrentEmail(val);\n }}\n />\n </div>\n }\n closeOnDocumentClick\n repositionOnResize\n position={\"bottom left\"}\n className=\"mail-inbox-popup\"\n onOpen={() => {\n setPopupOpen(true);\n // ensure input stays focused (some popup implementations steal focus)\n requestAnimationFrame(() => inputRef.current?.focus());\n }}\n onClose={() => {\n setPopupOpen(false);\n }}>\n {isValidEmail(currentEmail) ? (\n <div className=\"options-dropdown\">\n {loading ? (\n // Skeleton loader\n <>\n {[1, 2, 3].map((i) => (\n <div key={i} className=\"option-dropdown skeleton-loader\">\n <div className=\"skeleton-line skeleton-name\"></div>\n <div className=\"skeleton-line skeleton-email\"></div>\n </div>\n ))}\n </>\n ) : options.length > 0 ? (\n options.map((opt, idx) => {\n return (\n <button\n ref={(el) => {\n optionRefs.current[idx] = el;\n }}\n className={`option-dropdown ${selectedIndex === idx ? \"selected\" : \"\"}`}\n key={idx}\n onBlur={(e) => {\n e.stopPropagation();\n }}\n onFocus={(e) => {\n e.stopPropagation();\n }}\n onMouseEnter={() => setSelectedIndex(idx)}\n onMouseLeave={() => setSelectedIndex(-1)}\n onClick={(e) => {\n e.stopPropagation();\n addEmail(opt);\n }}\n aria-selected={selectedIndex === idx}>\n <h4>{opt.name}</h4>\n {opt.email}\n </button>\n );\n })\n ) : null}\n </div>\n ) : null}\n </Popup>\n </>\n );\n}\n\nexport default InputWithDropDown;\n","import React from \"react\";\nimport InputWithDropDown from \"./InputWIthDropDown\";\nimport type { EmailOption } from \"../EmailContext\";\n\nfunction InputForEmail({\n name,\n needCCAndBCC,\n setShowCC,\n setShowBCC,\n showBCC,\n showCC,\n emails,\n handleChange,\n fetchOptions,\n}: {\n name: string;\n needCCAndBCC?: boolean;\n setShowCC?: React.Dispatch<React.SetStateAction<boolean>>;\n setShowBCC?: React.Dispatch<React.SetStateAction<boolean>>;\n showBCC?: boolean;\n showCC?: boolean;\n emails: EmailOption[];\n handleChange: (\n emails: EmailOption[] | ((prev: EmailOption[]) => EmailOption[])\n ) => void;\n fetchOptions: (currentEmail: string) => Promise<EmailOption[]>;\n}) {\n return (\n <div className=\"container-receipts\">\n <label className=\"block text-sm font-medium text-gray-700\">{name}</label>\n\n <InputWithDropDown\n emails={emails}\n setEmails={handleChange}\n fetchOptions={fetchOptions}\n />\n {needCCAndBCC && !showCC ? (\n <button\n className=\"btn-mail-editor\"\n onClick={() => setShowCC?.((prev) => !prev)}>\n CC\n </button>\n ) : null}\n {needCCAndBCC && !showBCC ? (\n <button\n className=\"btn-mail-editor\"\n onClick={() => setShowBCC?.((prev) => !prev)}>\n BCC\n </button>\n ) : null}\n </div>\n );\n}\n\nexport default InputForEmail;\n","import { useRef, useState, useEffect } from \"react\";\nimport InputForEmail from \"./InputForEmail\";\nimport { useEmailContext, type EmailOption } from \"../EmailContext\";\n\nfunction ReceiptsHeading({ fetchEmailOptions }: {\n fetchEmailOptions: (currentEmail: string) => Promise<EmailOption[]>;\n}) {\n const [open, setOpen] = useState(false);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const { emails, setEmails, showCC, setShowCC, showBCC, setShowBCC } =\n useEmailContext();\n\n // Show CC/BCC fields when opening if they have values\n useEffect(() => {\n if (open) {\n setShowCC(emails.cc.length > 0);\n setShowBCC(emails.bcc.length > 0);\n }\n }, [open, emails.cc.length, emails.bcc.length]);\n\n useEffect(() => {\n const wrapper = wrapperRef.current;\n\n if (!wrapper) return;\n\n // Focus in event (bubbles unlike React's onFocus)\n const handleFocusIn = () => {\n setOpen(true);\n };\n\n // Focus out event (bubbles unlike React's onBlur)\n const handleFocusOut = (e: FocusEvent) => {\n console.log(\"🚀 ~ handleFocusOut ~ e:\", e);\n const next = e.relatedTarget as HTMLElement | null;\n // Only close if the next focused element is outside the wrapper\n if (\n (next &&\n next.classList &&\n next.classList.contains(\"option-dropdown\")) ||\n (next && wrapper.contains(next))\n )\n return;\n console.log(\"why this \", next?.classList);\n setOpen(false);\n };\n\n wrapper.addEventListener(\"focusin\", handleFocusIn);\n wrapper.addEventListener(\"focusout\", handleFocusOut);\n\n return () => {\n wrapper.removeEventListener(\"focusin\", handleFocusIn);\n wrapper.removeEventListener(\"focusout\", handleFocusOut);\n };\n }, []);\n\n // Helper to display email recipients in collapsed view\n const getDisplayText = () => {\n if (\n emails.to.length === 0 &&\n emails.cc.length === 0 &&\n emails.bcc.length === 0\n ) {\n return \"Recipients\";\n }\n\n const parts = [];\n\n // Add TO recipients\n if (emails.to.length > 0) {\n parts.push(emails.to.map((e) => e.email).join(\", \"));\n }\n\n // Add CC recipients with \"cc:\" prefix\n if (emails.cc.length > 0) {\n parts.push(emails.cc.map((e) => e.email).join(\", \"));\n }\n\n // Add BCC recipients with \"bcc:\" prefix\n if (emails.bcc.length > 0) {\n parts.push(\"bcc: \" + emails.bcc.map((e) => e.email).join(\", \"));\n }\n\n return parts.join(\", \");\n };\n\n return (\n <div ref={wrapperRef} tabIndex={-1} className=\"relative\">\n {!open ? (\n <input\n type=\"text\"\n placeholder=\"Recipients\"\n className=\"input-header\"\n value={getDisplayText()}\n readOnly\n />\n ) : (\n <div>\n <InputForEmail\n name=\"To\"\n needCCAndBCC\n setShowCC={setShowCC}\n setShowBCC={setShowBCC}\n showBCC={showBCC}\n showCC={showCC}\n emails={emails.to}\n handleChange={(value) => {\n setEmails((prev) => ({\n ...prev,\n to: typeof value === \"function\" ? value(prev.to) : value,\n }));\n }}\n fetchOptions={fetchEmailOptions}\n />\n {showCC ? (\n <InputForEmail\n name=\"CC\"\n needCCAndBCC={false}\n setShowCC={setShowCC}\n setShowBCC={setShowBCC}\n showBCC={showBCC}\n showCC={showCC}\n emails={emails.cc}\n handleChange={(value) => {\n setEmails((prev) => ({\n ...prev,\n cc: typeof value === \"function\" ? value(prev.cc) : value,\n }));\n }}\n fetchOptions={fetchEmailOptions}\n />\n ) : null}\n {showBCC ? (\n <InputForEmail\n name=\"BCC\"\n needCCAndBCC={false}\n setShowCC={setShowCC}\n setShowBCC={setShowBCC}\n showBCC={showBCC}\n showCC={showCC}\n emails={emails.bcc}\n handleChange={(value) => {\n setEmails((prev) => ({\n ...prev,\n bcc: typeof value === \"function\" ? value(prev.bcc) : value,\n }));\n }}\n fetchOptions={fetchEmailOptions}\n />\n ) : null}\n </div>\n )}\n </div>\n );\n}\n\nexport default ReceiptsHeading;\n","import ReceiptsHeading from \"../ReceiptsHeading\";\nimport { useEmailContext, type EmailOption } from \"../EmailContext\";\n\nfunction GmailHeading({\n fetchEmailOptions,\n}: {\n fetchEmailOptions: (currentEmail: string) => Promise<EmailOption[]>;\n}) {\n const { subject, setSubject, isReply } = useEmailContext();\n\n return (\n <div className=\"gmail-header\">\n <ReceiptsHeading fetchEmailOptions={fetchEmailOptions} />\n <input\n type=\"text\"\n placeholder=\"Subject\"\n className=\"input-header\"\n value={isReply && !subject.startsWith(\"Re: \") ? `Re: ${subject}` : subject}\n onChange={(e) => setSubject(e.target.value)}\n />\n </div>\n );\n}\n\nexport default GmailHeading;\n","import { useEffect, useState, type ReactNode } from \"react\";\nimport EditorWrapper from \"../Editor/EditorWrapper\";\nimport GmailHeading from \"./GmailHeading\";\nimport { useEmailContext, type EmailOption } from \"./EmailContext\";\nimport type { EmailData } from \"./index\";\nimport { useTheme } from \"../../context/ThemeContext\";\n\nfunction GmailWrapperContent({\n initialData,\n isReply,\n fetchEmailOptions,\n handleChange,\n leftChildren,\n rightChildren,\n editorChildren,\n isEditorVisible = true,\n}: {\n initialData?: Partial<EmailData>;\n fetchEmailOptions: (currentEmail: string) => Promise<EmailOption[]>;\n handleChange: (emailData: EmailData) => void;\n leftChildren?: ReactNode;\n rightChildren?: ReactNode;\n isReply?: boolean;\n editorChildren?: ReactNode;\n isEditorVisible?: boolean;\n}) {\n const {\n emails,\n subject,\n attachments,\n setEmails,\n setSubject,\n setAttachments,\n setIsReply,\n } = useEmailContext();\n const { theme } = useTheme();\n const [bodyHTML, setBodyHTML] = useState(initialData?.body || \"\");\n const [emailData, setEmailData] = useState<EmailData>({\n to: initialData?.to || [],\n cc: initialData?.cc || [],\n bcc: initialData?.bcc || [],\n subject: initialData?.subject || \"\",\n body: initialData?.body || \"\",\n attachments: initialData?.attachments || [],\n isReply: isReply || false,\n });\n\n // Initialize context values from initialData on mount\n useEffect(() => {\n if (initialData) {\n if (initialData.to || initialData.cc || initialData.bcc) {\n setEmails({\n to: initialData.to || [],\n cc: initialData.cc || [],\n bcc: initialData.bcc || [],\n });\n }\n if (initialData.subject) {\n setSubject(initialData.subject);\n }\n if (initialData.attachments) {\n setAttachments(initialData.attachments);\n }\n if (initialData.body) {\n setBodyHTML(initialData.body);\n }\n }\n if (isReply !== undefined) {\n setIsReply(isReply);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const handleEditorChange = (html: string) => {\n setBodyHTML(html);\n };\n\n useEffect(() => {\n setEmailData((prev) => ({\n ...prev,\n to: emails.to,\n cc: emails.cc,\n bcc: emails.bcc,\n }));\n }, [emails]);\n\n useEffect(() => {\n setEmailData((prev) => ({\n ...prev,\n subject,\n }));\n }, [subject]);\n\n useEffect(() => {\n setEmailData((prev) => ({\n ...prev,\n body: bodyHTML,\n }));\n }, [bodyHTML]);\n\n useEffect(() => {\n setEmailData((prev) => ({\n ...prev,\n attachments,\n }));\n }, [attachments]);\n\n useEffect(() => {\n setEmailData((prev) => ({\n ...prev,\n isReply,\n }));\n }, [isReply]);\n\n useEffect(() => {\n handleChange(emailData);\n }, [emailData, handleChange]);\n\n return (\n <div className=\"react-mail-inbox-root gmail-wrapper\" data-theme={theme}>\n {leftChildren}\n <GmailHeading fetchEmailOptions={fetchEmailOptions} />\n <EditorWrapper\n initialHTML={initialData?.body}\n onChange={handleEditorChange}\n editorChildren={editorChildren}\n isEditorVisible={isEditorVisible}\n />\n {rightChildren}\n </div>\n );\n}\n\nexport default GmailWrapperContent;\n","import { type ReactNode } from \"react\";\nimport { EmailProvider, type EmailOption } from \"./EmailContext\";\nimport GmailWrapperContent from \"./GmailWrapperContent\";\nimport \"./index.css\";\n\nexport interface EmailData {\n to: EmailOption[];\n cc: EmailOption[];\n bcc: EmailOption[];\n subject: string;\n body: string;\n attachments: File[];\n isReply?: boolean;\n}\n\nfunction GmailWrapper({\n fetchEmailOptions,\n handleChange,\n initialData,\n leftChildren,\n rightChildren,\n isReply,\n}: {\n fetchEmailOptions: (currentEmail: string) => Promise<EmailOption[]>;\n handleChange: (emailData: EmailData) => void;\n initialData?: Partial<EmailData>;\n leftChildren?: ReactNode;\n rightChildren?: ReactNode;\n isReply?: boolean;\n}) {\n return (\n <EmailProvider>\n <GmailWrapperContent\n fetchEmailOptions={fetchEmailOptions}\n handleChange={handleChange}\n initialData={initialData}\n isReply={isReply}\n leftChildren={leftChildren}\n rightChildren={rightChildren}\n />\n </EmailProvider>\n );\n}\n\nexport default GmailWrapper;\n","import { type ReactNode } from \"react\";\nimport { ThemeProvider, type Theme } from \"../../context/ThemeContext\";\nimport GmailWrapper, { type EmailData } from \"../GmailWrapper\";\nimport type { EmailOption } from \"../GmailWrapper/EmailContext\";\n\nexport { useTheme, type Theme } from \"../../context/ThemeContext\";\nexport type { EmailData, EmailOption };\n\ninterface GmailInboxProps {\n fetchEmailOptions: (currentEmail: string) => Promise<EmailOption[]>;\n handleChange: (emailData: EmailData) => void;\n initialData?: Partial<EmailData>;\n initialTheme?: Theme;\n onThemeChange?: (theme: Theme) => void;\n leftChildren?: ReactNode;\n rightChildren?: ReactNode;\n}\n\nfunction GmailInbox({\n fetchEmailOptions,\n handleChange,\n initialData,\n initialTheme = \"dark\",\n onThemeChange,\n leftChildren,\n rightChildren,\n}: GmailInboxProps) {\n return (\n <ThemeProvider initialTheme={initialTheme} onThemeChange={onThemeChange}>\n <GmailWrapper\n fetchEmailOptions={fetchEmailOptions}\n handleChange={handleChange}\n initialData={initialData}\n leftChildren={leftChildren}\n rightChildren={rightChildren}\n />\n </ThemeProvider>\n );\n}\n\nexport default GmailInbox;\n","// Main component export\nimport GmailInboxComponent from './Components/GmailInbox';\nexport { GmailInboxComponent as GmailInbox };\nexport default GmailInboxComponent;\n\n// Type exports\nexport type { EmailData, EmailOption } from './Components/GmailInbox';\nexport { useTheme, type Theme } from './context/ThemeContext';\n\n// Re-export types for convenience\nexport type { Alignment } from './Components/core/AlignmentSelect';\n"]}