react-mail-inbox 1.0.17 → 1.0.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -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","Fragment","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","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.js","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\n name={\n OPTIONS?.find((o) => o.key === value)?.iconName || \"LeftAlign\"\n }\n />\n <Icon name=\"DownArrow\" />\n </button>\n }>\n {({ close }) => (\n <>\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 <Icon\n name={opt.iconName}\n size={20}\n className=\"select-option-icon\"\n />\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 </>\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 <GmailHeading fetchEmailOptions={fetchEmailOptions} />\n <EditorWrapper\n initialHTML={initialData?.body}\n onChange={handleEditorChange}\n editorChildren={editorChildren}\n rightChildren={rightChildren}\n leftChildren={leftChildren}\n isEditorVisible={isEditorVisible}\n />\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","Fragment","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","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.js","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\n name={\n OPTIONS?.find((o) => o.key === value)?.iconName || \"LeftAlign\"\n }\n />\n <Icon name=\"DownArrow\" />\n </button>\n }>\n {({ close }) => (\n <>\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 <Icon\n name={opt.iconName}\n size={20}\n className=\"select-option-icon\"\n />\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 </>\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\">{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 <GmailHeading fetchEmailOptions={fetchEmailOptions} />\n <EditorWrapper\n initialHTML={initialData?.body}\n onChange={handleEditorChange}\n editorChildren={editorChildren}\n rightChildren={rightChildren}\n leftChildren={leftChildren}\n isEditorVisible={isEditorVisible}\n />\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"]}