react-mail-inbox 2.1.10 → 2.1.11

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":["../../../node_modules/@lexical/extension/LexicalExtension.dev.mjs","../../../node_modules/@lexical/extension/LexicalExtension.prod.mjs","../../../node_modules/@lexical/extension/LexicalExtension.node.mjs","../../../node_modules/@lexical/clipboard/LexicalClipboard.dev.mjs","../../../node_modules/@lexical/clipboard/LexicalClipboard.prod.mjs","../../../node_modules/@lexical/clipboard/LexicalClipboard.node.mjs","../../../node_modules/@lexical/table/LexicalTable.dev.mjs","../../../node_modules/@lexical/table/LexicalTable.prod.mjs","../src/context/ThemeContext.tsx","../src/Components/GmailWrapper/EmailContext.tsx","../../../node_modules/@lexical/table/LexicalTable.node.mjs","../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/plugins/StyledTextNode.tsx","../src/utils/common.ts","../src/plugins/PasterPlugin/ToolbarBridge.tsx","../src/plugins/PasterPlugin/HtmlDecorator.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/hook/useGooglePicker.ts","../src/Components/Editor/Toolbar/EmojiPicker.tsx","../src/plugins/ImagePlugin/ImageNode.tsx","../src/plugins/ImagePlugin/ImagePlugin.tsx","../src/Components/Editor/Toolbar/index.tsx","../src/Themes/lexicalEditortheme.ts","../src/plugins/OnChangePlugin.tsx","../src/plugins/DirectionPlugin.tsx","../src/hook/usePreprocessDOM.ts","../src/plugins/InitialStatePlugin.tsx","../src/plugins/PasterPlugin/HtmlNode.tsx","../src/plugins/PasterPlugin/PastePlugin.tsx","../src/Components/ComposeBox/index.tsx","../src/Components/GmailWrapper/ReceiptsHeading/InputWIthDropDown.tsx","../src/Components/GmailWrapper/ReceiptsHeading/InputForEmail.tsx","../src/Components/GmailWrapper/ReceiptsHeading/index.tsx","../src/Components/core/Tooltip/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":["LexicalExtension_dev_exports","__export","$createHorizontalRuleNode","$isHorizontalRuleNode","AutoFocusExtension","ClearEditorExtension","EditorStateExtension","HorizontalRuleExtension","HorizontalRuleNode","INSERT_HORIZONTAL_RULE_COMMAND","InitialStateExtension","LexicalBuilder","NodeSelectionExtension","TabIndentationExtension","o","buildEditorFromExtensions","w","configExtension","declarePeerDependency","defineExtension","E","getExtensionDependencyFromEditor","getKnownTypesAndNodes","getPeerDependencyFromEditor","getPeerDependencyFromEditorOrThrow","namedSignals","registerClearEditor","registerTabIndentation","safeCast","shallowMergeConfig","d","h","watchedSignal","t","r","i","s","f","v","n","u","c","l","y","a","e","_","b","g","p","defaults","opts","initial","k","store","$defaultOnClear","root","$getRoot","selection","$getSelection","paragraph","$createParagraphNode","$isRangeSelection","editor","$onClear","CLEAR_EDITOR_COMMAND","payload","COMMAND_PRIORITY_EDITOR","config","types","nodes","klassOrReplacement","getNodeConfig","klass","getSnapshot","register","dispose","formatDevErrorMessage","message","deepThemeMergeInPlace","aObj","bObj","isExactlyUnmarkedExtensionRepState","state","ExtensionRepStateIds","isExactlyTemporaryExtensionRepState","isExactlyPermanentExtensionRepState","isConfiguredExtensionRepState","isInitializedExtensionRepState","isBuiltExtensionRepState","isAfterRegistrationState","applyTemporaryMark","applyPermanentMark","applyConfiguredState","registerState","applyInitializedState","initResult","applyBuiltState","output","applyRegisteredState","applyAfterRegistrationState","rollbackToBuiltState","$defaultInitializer","extensions","noop","defaultOnError","err","normalizeExtensionArgument","arg","extension","rep","extensionName","peer","dep","$convertHorizontalRuleElement","$create","node","$toggleNodeSelection","shiftKey","wasSelected","key","nodeSelection","$isNodeSelection","$createNodeSelection","$setSelection","$indentOverTab","$filter","$isBlockElementNode","anchor","focus","first","firstNode","firstBlock","$getNearestBlockElementAncestorOrThrow","firstBlockKey","selectionAtStart","$createRangeSelection","$normalizeSelection__EXPERIMENTAL","maxIndent","mergeRegister","KEY_TAB_COMMAND","event","command","OUTDENT_CONTENT_COMMAND","INDENT_CONTENT_COMMAND","INSERT_TAB_COMMAND","currentMaxIndent","indents","COMMAND_PRIORITY_CRITICAL","emptySet","ExtensionRep","HISTORY_MERGE_OPTIONS","builderSymbol","PACKAGE_VERSION","EMPTY_SET","init_LexicalExtension_dev","__esmMin","stores","rootElement","activeElement","editorStateSignal","builder","mergeConfig","cfg","editorConfig","initialState","initState","buildState","signal","cleanup","afterRegistrationState","rval","name","HISTORY_MERGE_TAG","$initialEditorState","updateOptions","setOptions","$isEditorState","parsedEditorState","RootNode","TextNode","LineBreakNode","TabNode","ParagraphNode","_LexicalBuilder","roots","_$initialEditorState","onError","createEditor","extensionRep","disposeOnce","fromExtensionName","toExtensionName","configs","outgoing","incoming","normalized","hasConflict","normDep","depName","sortedExtensionReps","visit","mark","outgoingConfigEdges","toRep","extensionReps","controller","cleanups","replacedNodes","htmlExport","htmlImport","theme","conflictExtension","hasImport","hasExport","editorStateStore","watchedNodeStore","selectedNodeKeys","prevSelectedNodeKeys","watchedNodeKeys","nextSelectedNodeKeys","didChange","listeners","$getNodeByKey","isSelected","watchNodeKey","watcher","hadListener","createCommand","_HorizontalRuleNode","DecoratorNode","serializedNode","element","addClassNamesToElement","nodeSelectionStore","isSelectedClassName","CLICK_COMMAND","isDOMNode","$getNodeFromDOMNode","COMMAND_PRIORITY_LOW","nodeSelections","prev","dom","effects","domNode","selectedSignal","removeClassNamesFromElement","disabled","LexicalExtension_prod_exports","Qt","Xt","ut","lt","vt","Yt","Ht","Jt","Kt","Bt","Zt","ee","F","$t","it","dt","Ft","gt","Gt","Vt","at","ht","te","X","W","mt","B","Z","V","J","Y","G","q","Q","tt","et","nt","H","ot","st","rt","ct","ft","pt","xt","yt","Ct","St","Dt","bt","_t","Et","Pt","zt","Ut","Lt","qt","C","L","A","U","P","K","D","I","j","T","wt","Nt","Ot","Rt","Mt","It","jt","At","kt","Tt","Wt","init_LexicalExtension_prod","_Bt","m","x","_Ht","N","$","S","O","R","M","z","mod","effect","init_LexicalExtension_node","LexicalClipboard_dev_exports","$generateJSONFromSelectedNodes","$generateNodesFromSerializedNodes","$getClipboardDataFromSelection","$getHtmlContent","$getLexicalContent","$insertDataTransferForPlainText","$insertDataTransferForRichText","$insertGeneratedNodes","copyToClipboard","setLexicalClipboardDataTransfer","$generateHtmlFromNodes","dataTransfer","text","lexicalString","error","htmlString","plainString","trustHTML","$generateNodesFromDOM","parts","currentSelection","part","$createTabNode","html","input","SELECTION_INSERT_CLIPBOARD_NODES_COMMAND","$updateSelectionOnInsert","nodeToInspect","anchorCaret","$caretFromPoint","$isTextPointCaret","range","$getCaretRange","$getChildCaret","caret","$isTextNode","$isElementNode","newFormat","newStyle","exportNodeToJSON","nodeClass","serializedChildren","$appendNodesToJSON","currentNode","targetArray","shouldInclude","shouldExclude","target","$sliceSelectedTextNodeContent","children","childNode","shouldIncludeChild","serializedChildNode","topLevelChildren","topLevelNode","serializedNodes","$parseSerializedNode","$addNodeStyle","data","clipboardEventTimeout","resolve","reject","$copyToClipboardEvent","editorWindow","windowDocument","domSelection","getDOMSelection","removeListener","COPY_COMMAND","secondEvent","objectKlassEquals","EVENT_LATENCY","anchorDOM","focusDOM","isSelectionWithinEditor","clipboardData","$getEditor","mimeType","$editorFn","clipboardDataFunctions","init_LexicalClipboard_dev","LexicalClipboard_prod_exports","init_LexicalClipboard_prod","init_LexicalClipboard_node","LexicalTable_dev_exports","$computeTableMap","$computeTableMapSkipCellCheck","$createTableCellNode","$createTableNode","$createTableNodeWithDimensions","$createTableRowNode","$createTableSelection","$createTableSelectionFrom","$deleteTableColumn","$deleteTableColumnAtSelection","$deleteTableColumn__EXPERIMENTAL","$deleteTableRowAtSelection","$deleteTableRow__EXPERIMENTAL","$findCellNode","$findTableNode","$getElementForTableNode","$getNodeTriplet","$getTableAndElementByKey","$getTableCellNodeFromLexicalNode","$getTableCellNodeRect","$getTableColumnIndexFromTableCellNode","$getTableNodeFromLexicalNodeOrThrow","$getTableRowIndexFromTableCellNode","$getTableRowNodeFromTableCellNodeOrThrow","$insertTableColumn","$insertTableColumnAtSelection","$insertTableColumn__EXPERIMENTAL","$insertTableRow","$insertTableRowAtSelection","$insertTableRow__EXPERIMENTAL","$isScrollableTablesActive","$isTableCellNode","$isTableNode","$isTableRowNode","$isTableSelection","$mergeCells","$removeTableRowAtIndex","$unmergeCell","INSERT_TABLE_COMMAND","TableCellHeaderStates","TableCellNode","TableExtension","TableNode","TableObserver","TableRowNode","applyTableHandlers","getDOMCellFromTarget","getTableElement","getTableObserverFromTableElement","registerTableCellUnmergeTransform","registerTablePlugin","registerTableSelectionObserver","setScrollableTablesActive","isValidVerticalAlign","verticalAlign","$convertTableCellNodeElement","domNode_","nodeName","width","PIXEL_VALUE_REG_EXP","tableCellNode","backgroundColor","style","textDecoration","hasBoldFontWeight","hasLinethroughTextDecoration","hasItalicFontStyle","hasUnderlineTextDecoration","childLexicalNodes","result","paragraphNode","removeSingleLineBreakNode","firstChild","$isLineBreakNode","child","$isInlineElementOrDecoratorNode","headerState","colSpan","$applyNodeReplacement","$convertTableRowElement","height","$descendantsMatching","rowCount","columnCount","includeHeaders","tableNode","iRow","tableRowNode","iColumn","$createTextNode","startingNode","$findMatchingParent","$getTableCellSiblingsFromTableCellNode","table","indexToDelete","tableRows","targetIndex","shouldInsertAfter","targetRowNode","tableRowCells","tableColumnCount","newTableRowNode","tableCellFromTargetRow","above","below","insertAfter","anchorCell","focusCell","grid","focusCellMap","anchorCellMap","anchorStartRow","focusStartRow","$insertTableRowAtNode","cellNode","gridMap","cellMap","cellStartRow","insertedRow","insertAfterEndRow","insertAfterEndRowMap","newRow","cell","startRow","currentCellHeaderState","getHeaderState","insertAfterEndRowNode","insertBeforeStartRow","insertBeforeStartRowMap","insertBeforeStartRowNode","tableCellsToBeInserted","currentTableRowNode","tableRowChildren","targetCell","left","right","newTableCell","anchorStartColumn","focusStartColumn","$insertTableColumnAtNode","shouldSetSelection","startColumn","insertAfterColumn","gridFirstChild","firstInsertedCell","$createTableCellNodeForInsertTableColumn","loopRow","rowLoop","currentRow","rowMap","$insertFirst","currentCell","currentStartColumn","currentStartRow","insertAfterCell","insertAfterCellRowStart","prevCellIndex","cell_","startRow_","$moveSelectionToCell","colWidths","newColWidths","columnIndex","newWidth","focusEndRow","nextRow","nextRowNode","row","column","cellStartColumn","intersectionStart","intersectionEnd","overflowRowsCount","currentCellMap","rowNode","previousRow","endColumn","selectedColumnCount","overflowLeft","inSelectedArea","focusRowMap","nextColumn","firstDescendant","parent","cellNodes","minRow","maxRow","minCol","maxCol","processedCells","mapCell","cellKey","cellStartCol","cellRowSpan","cellColSpan","totalRowSpan","totalColSpan","targetCellMap","seenCells","col","$cellContainsEmptyParagraph","$isParagraphNode","$unmergeCellNode","rowSpan","map","baseColStyle","colStyles","_v","colStyle","rowIdx","baseRowStyle","rowStyles","rowStyle","colIdx","currentRowNode","currentRowMap","cellA","cellB","tableMap","cellAValue","cellBValue","getMapRow","gridChildren","startMapRow","value","mapRow","source","$computeTableCellRectSpans","boundary","minColumn","maxColumn","topSpan","leftSpan","rightSpan","bottomSpan","topRow","bottomRow","$computeTableCellRectBoundary","cellAMap","cellBMap","hasChanges","cellEndCol","cellEndRow","intersectsHorizontally","intersectsVertically","newMinColumn","newMaxColumn","newMinRow","newMaxRow","gridNode","rows","cellMatrix","rowIndex","cells","cellIndex","$getCellNodes","tableSelection","anchorNode","anchorRow","anchorTable","focusNode","focusRow","focusTable","TableSelection","$createPoint","tableNodeKey","anchorCellKey","focusCellKey","prevSelection","nextSelection","$visitRecursively","$visit","stack","currentArray","tableElement","isHTMLTableElement","el","isHTMLElement","getEditorWindow","$findParentTableCellNodeInTable","lastTableCellNode","hasTabHandler","tableObserver","attachTableObserverToTableElement","detachTableObserverFromTableElement","createPointerHandlers","onPointerUp","onPointerMove","moveEvent","isPointerDownOnEvent","override","IS_FIREFOX","getDOMCellInTableFromTarget","SELECTION_CHANGE_COMMAND","onPointerDown","$getPreviousSelection","$isSelectionInTable","prevAnchorNode","prevAnchorCell","$getObserverCellFromCellNodeOrThrow","stopEvent","onTripleClick","pointerDownCallback","direction","ARROW_KEY_COMMANDS_WITH_DIRECTION","$handleArrowKey","COMMAND_PRIORITY_HIGH","KEY_ESCAPE_COMMAND","focusCellNode","deleteTextHandler","isAnchorInside","isFocusInside","nearestElementNode","topLevelCellElementNode","DELETE_LINE_COMMAND","DELETE_TEXT_COMMANDS","$deleteCellHandler","tablePoint","outerPoint","offset","type","DELETE_KEY_COMMANDS","CUT_COMMAND","intercepted","FORMAT_TEXT_COMMAND","FORMAT_ELEMENT_COMMAND","formatType","$isFullTableSelection","visited","cellChildren","CONTROLLED_TEXT_INSERTION_COMMAND","edgePosition","$getTableEdgeCursorPosition","$insertParagraphAtTableEdge","$selectAdjacentCell","FOCUS_COMMAND","selectionPayload","dispatchEditor","anchorAndFocus","isTableSelection","isSelectionInsideOfGrid","anchorCellNode","anchorRowNode","templateGrid","initialGridMap","templateGridMap","initialRowCount","initialColCount","startCol","affectedRowCount","affectedColCount","selectionBoundary","selectionRowCount","selectionColCount","didPerformMergeOperations","lastRowForUnmerge","lastColForUnmerge","unmergedKeys","interimGridMap","rowsToInsert","colsToInsert","templateRow","templateCol","templateCellMap","templateCell","cellsToMerge","lastRowForMerge","lastColForMerge","originalChildren","finalGridMap","nextFocus","firstRow","firstCell","isPartiallyWithinTable","isWithinTable","isBackward","newSelection","lastCell","$addHighlightStyleToTable","prevAnchorCellNode","$getNearestNodeFromDOMNode","isFocusOutside","$createRangeSelectionFromDom","$removeHighlightStyleToTable","INSERT_PARAGRAPH_COMMAND","LEXICAL_ELEMENT_KEY","getTable","domRows","nodeMame","elem","sibling","parentSibling","$updateDOMForSelection","selectedCellNodes","$forEachTableCell","lexicalNode","$addHighlightToDOM","$removeHighlightFromDOM","cb","siblingMethod","childMethod","parentRow","parentTable","getCorner","rect","cellValue","colName","rowName","getCornerOrThrow","corner","oppositeCorner","cellAtCornerOrThrow","rowNum","colNum","$extractRectCorners","anchorCellValue","newFocusCellValue","anchorCorner","newFocusCorner","newAnchorCorner","$adjustFocusInDirection","focusCellValue","spans","focusColumn","fCol","fRow","targetRowMap","finalAnchorCell","finalFocusCell","selectTableCellNode","tableCell","fromStart","editorThemeClasses","$getBlockParentIfFirstNode","prevNode","$handleHorizontalArrowKeyRangeSelection","alter","initialFocus","$isExtendableTextPointCaret","lastCaret","nextCaret","$extendCaretToRange","$isSiblingCaret","lastCaretParent","focusCaret","$findNextTableCell","$getSiblingCaret","anchorCellTable","anchorCellDOM","anchorDOMCell","anchorCellTableElement","focusDOMCell","innerFocusCaret","$normalizeCaret","$setPointFromCaret","outerFocusCaret","$getTableExitCaret","initialCaret","adjacent","$getAdjacentChildCaret","$isChildCaret","origin","isTypeaheadMenuInView","parentNode","siblingNode","focusParentNode","newOffset","newFocusNode","$isRootOrShadowRoot","selectedNode","lastDescendant","firstCellNode","lastCellNode","firstCellCoords","lastCellCoords","firstCellDOM","lastCellDOM","anchorCellDom","edgeSelectionRect","edgeChild","edgeChildDOM","edgeRect","cords","selectTableNodeInDirection","tableNodeFromSelection","cordsAnchor","anchorValue","focusValue","tableNodeParent","domAnchorNode","tableNodeParentDOM","isAtFirstCell","isAtLastCell","currentCords","$getNearestTableCellInTableFromDOMNode","startingDOM","editorState","isHTMLDivElement","isHTMLElement$1","updateColgroup","colCount","colGroup","cols","setRowStriping","rowStriping","setFrozenColumns","frozenColumnCount","setFrozenRows","frozenRowCount","alignTableElement","removeClasses","addClasses","format","classes","scrollableEditors","active","$convertTableElement","columns","$insertTableCommandListener","$insertNodeToNearestRoot","$tableCellTransform","$tableRowTransform","$unwrapAndFilterDescendants","$tableTransform","maxRowLength","curLength","rowNodes","rowLength","acc","newCell","$tableClickCommand","startNode","blockNode","rootNode","rowsCount","columnsCount","unmerged","lastRowCell","$insertFirst$1","tableSelections","initializeTableNode","nodeKey","unregisterMutationListener","nodeMutations","mutation","COLUMN_WIDTH","CAN_USE_DOM","documentMode","init_LexicalTable_dev","_TableCellNode","ElementNode","self","mask","newBackgroundColor","newVerticalAlign","headerStateToToggle","_TableRowNode","destination","currentState","possibleState","_TableSelection","tableKey","formatFlag","TEXT_TYPE_TO_FORMAT","anchorCellNodeRect","focusCellNodeRect","startX","stopX","startY","stopY","cachedNodes","focusCellGrid","focusCellParent","gridParent","nodeMap","lastRow","isCurrentlyReadOnlyMode","textContent","observer","records","gridNeedsRedraw","ignoreStart","cellX","cellY","focusTableCellNode","anchorTableCell","focusTableCell","anchorTableCellNode","anchorNodeKey","formatSelection","alignFormatWith","selectedNodes","$isRootNode","textNode","KEY_ARROW_DOWN_COMMAND","KEY_ARROW_UP_COMMAND","KEY_ARROW_LEFT_COMMAND","KEY_ARROW_RIGHT_COMMAND","DELETE_WORD_COMMAND","DELETE_CHARACTER_COMMAND","KEY_BACKSPACE_COMMAND","KEY_DELETE_COMMAND","isForward","_TableNode","_node","setDOMUnmanaged","wrapperElement","tableWrapper","superExport","cellValues","mapValue","knownColumns","cellDOM","cellSpan","tBody","index","newRowStriping","hasHorizontalScroll","LexicalTable_prod_exports","Fe","gn","Le","Me","dn","Be","Ue","De","Ie","Pe","Qe","Ze","Xe","je","Ve","an","Oe","mn","$e","Ye","Ae","ve","xe","vn","hn","Ee","bn","Nn","yn","un","Te","Re","Ne","Ke","ke","Je","Ge","qe","ne","He","rn","tn","en","on","nn","re","le","se","ie","he","de","ce","ue","ae","fe","oe","ln","sn","cn","fn","pn","Cn","_n","Sn","wn","me","pe","ze","We","init_LexicalTable_prod","_xe","_Ee","_St","_hn","ge","Ce","_e","ThemeContext","createContext","useTheme","context","useContext","ThemeProvider","initialTheme","onThemeChange","setTheme","useState","useEffect","toggleTheme","jsx","EmailContext","useEmailContext","EmailProvider","googleDriveConfig","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","MdOutlineEmojiEmotions","MdPhoto","MdLockClock","TbBrandGoogleDrive","RiBallPenFill","FaBan","helper_default","Icon","size","color","className","IconComponent","Icon_default","MyPopup","trigger","popUpDirection","popupRef","useRef","handleClose","renderContent","close","adjustPosition","popupContent","margin","overflow","currentLeft","handler","Popup","MyPopup_default","fontOptions","OPTIONS","GREYS","ACCENTS","PALETTE","core_default","FontSelect","onChange","displayLabel","jsxs","font","FontSizePicker","Swatch","selected","onClick","label","ColorPicker","update","which","AlignmentSelect","onSelect","Fragment","opt","StyledTextNode","_StyledTextNode","clone","convert","tag","extractStyles","styled","mergeStyles","styleStringToMap","patch","prop","isValidEmail","email","rest","mapToStyleString","existing","$patchStyledNodes","$patchStyleText","dispatchSignatureStyle","useIsSignatureActive","setActive","check","sel","inside","FORMAT_TO_EXEC","useIsSelectionInside","ref","isInside","setIsInside","HtmlDecorator","useLexicalComposerContext","isInsideRef","isSelectionInside","syncToNode","useCallback","updatedHTML","unregisterFormat","execCmd","handleStyleCommand","stop","LowPriority","rgbToHex","rgb","match","hex","useOnClickListener","blockType","setBlockType","selectedEventTypes","setSelectedEventTypes","isLink","setIsLink","isSignatureActive","updateToolbar","newState","elementKey","elementDOM","$isListNode","parentList","$getNearestNodeOfType","ListNode","getSelectedNode","$isLinkNode","textNodeDOM","parentElement","styleElement","computedStyle","fontFamily","firstFont","fontSize","fontSizeNum","hexColor","hexBgColor","textAlign","toggleStyle","styleKey","current","isActive","UNDO_COMMAND","REDO_COMMAND","formatNumberedList","formatBulletList","addIndent","removeIndent","applyFontColor","applyFontFamily","fontSizeKey","fontSizePx","applyFontSize","insertLink","selectedFontSize","colorObj","TOGGLE_LINK_COMMAND","updatedSelection","INSERT_UNORDERED_LIST_COMMAND","REMOVE_LIST_COMMAND","INSERT_ORDERED_LIST_COMMAND","$isAtNodeEnd","useOnClickListener_default","FloatingLinkEditor","editorRef","inputRef","mouseDownRef","linkUrl","setLinkUrl","isEditMode","setEditMode","lastSelection","setLastSelection","updateLinkEditor","nativeSelection","isLinkActive","newLinkUrl","editorElem","domRange","inner","positionEditorElement","editorWidth","editorHeight","viewportWidth","viewportHeight","top","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","msg","newFiles","mappedRejections","item","readableErrors","fileName","ext","removeFile","uuid","clearRejectedFiles","FileUploader","openFileDialog","FileUploader_default","FilePreview","onRemove","onView","sizeBytes","urlFromProp","url","useMemo","formatSizeShort","handleView","handleRemove","useGooglePicker","clientId","apiKey","customDiscoveryDocs","customScopes","discoveryDocs","scopes","gapiLoaded","setGapiLoaded","gisLoaded","setGisLoaded","tokenClient","setTokenClient","accessToken","setAccessToken","gapiScript","gisScript","client","createPicker","token","doc","response","EmojiPicker","onEmojiSelect","pickerRef","isClient","setIsClient","React","Picker","emoji","EmojiPicker_default","ImageComponent","src","altText","ImageNode","_ImageNode","clonedNode","$createImageNode","div","writable","Gc","imageNode","INSERT_IMAGE_COMMAND","ImagePlugin","getToolbarComponent","plugin","setState","setShowEmojiPicker","setEmojiPosition","openDrivePicker","reader","topPosition","getComponent","props","componentProps","option","ToolBar","rightChildren","leftChildren","customTool","toggle","setToggle","showEmojiPicker","emojiPosition","moreOpen","setMoreOpen","isMoreVisible","setIsMoreVisible","formattingOptions","collapsedFormattingPlugins","visibleFormattingPlugins","openPicker","updatedFiles","containerRef","entries","idx","createPortal","Toolbar_default","lexicalEditorTheme","lexicalEditortheme_default","OnChangePlugin","DirectionPlugin","dirtyElements","tags","preprocessDOM","removeEditorClasses","htmlEl","classList","formats","remainingClasses","styleText","cursor","appendWrapper","wrapper","span","fontWeight","numericFontWeight","hasBold","fontStyle","hasItalic","hasUnderline","hasStrike","rootWrapper","heading","InitialStatePlugin","initialHTML","isInitialized","rawDom","processedDom","$insertNodes","HtmlNode","_HtmlNode","_editor","isSignatureHTML","tables","hasIconImgs","PastePlugin","PASTE_COMMAND","plain","AiIntegrationPlugin","aiContent","onAiInsert","onAiDiscard","aiContentComponent","showAiPreview","handleInsert","handleDiscard","Children","isValidElement","cloneElement","ComposeBox","placeholder","minHeight","editorChildren","isEditorVisible","currentHTML","setCurrentHTML","handleInternalChange","isAiPreviewActive","LexicalComposer","ListItemNode","LinkNode","AutoLinkNode","RichTextPlugin","ContentEditable","LexicalErrorBoundary","HistoryPlugin","AutoFocusPlugin","ListPlugin","LinkPlugin","ComposeBox_default","InputWithDropDown","fetchOptions","currentEmail","setCurrentEmail","popupOpen","setPopupOpen","selectedIndex","setSelectedIndex","options","loading","setLoading","emailRefs","optionRefs","focusInput","addEmail","handleInputKeyDown","lastIdx","lastChip","removeEmailAt","next","prevIdx","prevChip","ev","val","InputWIthDropDown_default","InputForEmail","needCCAndBCC","handleChange","InputForEmail_default","ReceiptsHeading","fetchEmailOptions","setOpen","wrapperRef","handleFocusIn","handleFocusOut","ReceiptsHeading_default","Tooltip","content","position","Tooltip_default","GmailHeading","subjectRef","isOverflowing","setIsOverflowing","displaySubject","useLayoutEffect","checkOverflow","overflowing","GmailHeading_default","GmailWrapperContent","initialData","showOnlyBody","bodyHTML","setBodyHTML","emailData","setEmailData","handleEditorChange","GmailWrapperContent_default","GmailWrapper","GmailWrapper_default","GmailInbox","GmailInbox_default","index_default"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { defineExtension, safeCast, CLEAR_EDITOR_COMMAND, COMMAND_PRIORITY_EDITOR, $getRoot, $getSelection, $createParagraphNode, $isRangeSelection, shallowMergeConfig, RootNode, TextNode, LineBreakNode, TabNode, ParagraphNode, $isEditorState, HISTORY_MERGE_TAG, createEditor, $getNodeByKey, createCommand, $create, CLICK_COMMAND, isDOMNode, $getNodeFromDOMNode, COMMAND_PRIORITY_LOW, DecoratorNode, $isNodeSelection, $createNodeSelection, $setSelection, KEY_TAB_COMMAND, OUTDENT_CONTENT_COMMAND, INDENT_CONTENT_COMMAND, INSERT_TAB_COMMAND, COMMAND_PRIORITY_CRITICAL, $isBlockElementNode, $createRangeSelection, $normalizeSelection__EXPERIMENTAL } from 'lexical';\nexport { configExtension, declarePeerDependency, defineExtension, safeCast, shallowMergeConfig } from 'lexical';\nimport { mergeRegister, addClassNamesToElement, removeClassNamesFromElement, $getNearestBlockElementAncestorOrThrow, $filter } from '@lexical/utils';\n\nconst i=Symbol.for(\"preact-signals\");function t(){if(r>1){r--;return}let i,t=false;while(void 0!==s){let o=s;s=void 0;f++;while(void 0!==o){const n=o.o;o.o=void 0;o.f&=-3;if(!(8&o.f)&&v(o))try{o.c();}catch(o){if(!t){i=o;t=true;}}o=n;}}f=0;r--;if(t)throw i}function o(i){if(r>0)return i();r++;try{return i()}finally{t();}}let n,s;function h(i){const t=n;n=void 0;try{return i()}finally{n=t;}}let r=0,f=0,e=0;function u(i){if(void 0===n)return;let t=i.n;if(void 0===t||t.t!==n){t={i:0,S:i,p:n.s,n:void 0,t:n,e:void 0,x:void 0,r:t};if(void 0!==n.s)n.s.n=t;n.s=t;i.n=t;if(32&n.f)i.S(t);return t}else if(-1===t.i){t.i=0;if(void 0!==t.n){t.n.p=t.p;if(void 0!==t.p)t.p.n=t.n;t.p=n.s;t.n=void 0;n.s.n=t;n.s=t;}return t}}function c(i,t){this.v=i;this.i=0;this.n=void 0;this.t=void 0;this.W=null==t?void 0:t.watched;this.Z=null==t?void 0:t.unwatched;this.name=null==t?void 0:t.name;}c.prototype.brand=i;c.prototype.h=function(){return true};c.prototype.S=function(i){const t=this.t;if(t!==i&&void 0===i.e){i.x=t;this.t=i;if(void 0!==t)t.e=i;else h(()=>{var i;null==(i=this.W)||i.call(this);});}};c.prototype.U=function(i){if(void 0!==this.t){const t=i.e,o=i.x;if(void 0!==t){t.x=o;i.e=void 0;}if(void 0!==o){o.e=t;i.x=void 0;}if(i===this.t){this.t=o;if(void 0===o)h(()=>{var i;null==(i=this.Z)||i.call(this);});}}};c.prototype.subscribe=function(i){return E(()=>{const t=this.value,o=n;n=void 0;try{i(t);}finally{n=o;}},{name:\"sub\"})};c.prototype.valueOf=function(){return this.value};c.prototype.toString=function(){return this.value+\"\"};c.prototype.toJSON=function(){return this.value};c.prototype.peek=function(){const i=n;n=void 0;try{return this.value}finally{n=i;}};Object.defineProperty(c.prototype,\"value\",{get(){const i=u(this);if(void 0!==i)i.i=this.i;return this.v},set(i){if(i!==this.v){if(f>100)throw new Error(\"Cycle detected\");this.v=i;this.i++;e++;r++;try{for(let i=this.t;void 0!==i;i=i.x)i.t.N();}finally{t();}}}});function d(i,t){return new c(i,t)}function v(i){for(let t=i.s;void 0!==t;t=t.n)if(t.S.i!==t.i||!t.S.h()||t.S.i!==t.i)return true;return false}function l(i){for(let t=i.s;void 0!==t;t=t.n){const o=t.S.n;if(void 0!==o)t.r=o;t.S.n=t;t.i=-1;if(void 0===t.n){i.s=t;break}}}function y(i){let t,o=i.s;while(void 0!==o){const i=o.p;if(-1===o.i){o.S.U(o);if(void 0!==i)i.n=o.n;if(void 0!==o.n)o.n.p=i;}else t=o;o.S.n=o.r;if(void 0!==o.r)o.r=void 0;o=i;}i.s=t;}function a(i,t){c.call(this,void 0);this.x=i;this.s=void 0;this.g=e-1;this.f=4;this.W=null==t?void 0:t.watched;this.Z=null==t?void 0:t.unwatched;this.name=null==t?void 0:t.name;}a.prototype=new c;a.prototype.h=function(){this.f&=-3;if(1&this.f)return false;if(32==(36&this.f))return true;this.f&=-5;if(this.g===e)return true;this.g=e;this.f|=1;if(this.i>0&&!v(this)){this.f&=-2;return true}const i=n;try{l(this);n=this;const i=this.x();if(16&this.f||this.v!==i||0===this.i){this.v=i;this.f&=-17;this.i++;}}catch(i){this.v=i;this.f|=16;this.i++;}n=i;y(this);this.f&=-2;return true};a.prototype.S=function(i){if(void 0===this.t){this.f|=36;for(let i=this.s;void 0!==i;i=i.n)i.S.S(i);}c.prototype.S.call(this,i);};a.prototype.U=function(i){if(void 0!==this.t){c.prototype.U.call(this,i);if(void 0===this.t){this.f&=-33;for(let i=this.s;void 0!==i;i=i.n)i.S.U(i);}}};a.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(let i=this.t;void 0!==i;i=i.x)i.t.N();}};Object.defineProperty(a.prototype,\"value\",{get(){if(1&this.f)throw new Error(\"Cycle detected\");const i=u(this);this.h();if(void 0!==i)i.i=this.i;if(16&this.f)throw this.v;return this.v}});function w(i,t){return new a(i,t)}function _(i){const o=i.u;i.u=void 0;if(\"function\"==typeof o){r++;const s=n;n=void 0;try{o();}catch(t){i.f&=-2;i.f|=8;b(i);throw t}finally{n=s;t();}}}function b(i){for(let t=i.s;void 0!==t;t=t.n)t.S.U(t);i.x=void 0;i.s=void 0;_(i);}function g(i){if(n!==this)throw new Error(\"Out-of-order effect\");y(this);n=i;this.f&=-2;if(8&this.f)b(this);t();}function p(i,t){this.x=i;this.u=void 0;this.s=void 0;this.o=void 0;this.f=32;this.name=null==t?void 0:t.name;}p.prototype.c=function(){const i=this.S();try{if(8&this.f)return;if(void 0===this.x)return;const t=this.x();if(\"function\"==typeof t)this.u=t;}finally{i();}};p.prototype.S=function(){if(1&this.f)throw new Error(\"Cycle detected\");this.f|=1;this.f&=-9;_(this);l(this);r++;const i=n;n=this;return g.bind(this,i)};p.prototype.N=function(){if(!(2&this.f)){this.f|=2;this.o=s;s=this;}};p.prototype.d=function(){this.f|=8;if(!(1&this.f))b(this);};p.prototype.dispose=function(){this.d();};function E(i,t){const o=new p(i,t);try{o.c();}catch(i){o.d();throw i}const n=o.d.bind(o);n[Symbol.dispose]=n;return n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n/**\n * @experimental\n * Return an object with the same shape as `defaults` with a {@link Signal}\n * for each value. If specified, the second `opts` argument is a partial\n * of overrides to the defaults and will be used as the initial value.\n *\n * Typically used to make a reactive version of some subset of the\n * configuration of an extension, so it can be reconfigured at runtime.\n *\n * @param defaults The object with default values\n * @param opts Overrides to those default values\n * @returns An object with signals initialized with the default values\n */\nfunction namedSignals(defaults, opts = {}) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const initial = {};\n for (const k in defaults) {\n const v = opts[k];\n const store = d(v === undefined ? defaults[k] : v);\n initial[k] = store;\n }\n return initial;\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/**\n * An Extension to focus the LexicalEditor when the root element is set\n * (typically only when the editor is first created).\n */\nconst AutoFocusExtension = defineExtension({\n build: (editor, config, state) => {\n return namedSignals(config);\n },\n config: safeCast({\n defaultSelection: 'rootEnd',\n disabled: false\n }),\n name: '@lexical/extension/AutoFocus',\n register(editor, config, state) {\n const stores = state.getOutput();\n return E(() => stores.disabled.value ? undefined : editor.registerRootListener(rootElement => {\n editor.focus(() => {\n // If we try and move selection to the same point with setBaseAndExtent, it won't\n // trigger a re-focus on the element. So in the case this occurs, we'll need to correct it.\n // Normally this is fine, Selection API !== Focus API, but fore the intents of the naming\n // of this plugin, which should preserve focus too.\n const activeElement = document.activeElement;\n if (rootElement !== null && (activeElement === null || !rootElement.contains(activeElement))) {\n // Note: preventScroll won't work in Webkit.\n rootElement.focus({\n preventScroll: true\n });\n }\n }, {\n defaultSelection: stores.defaultSelection.peek()\n });\n }));\n }\n});\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nfunction $defaultOnClear() {\n const root = $getRoot();\n const selection = $getSelection();\n const paragraph = $createParagraphNode();\n root.clear();\n root.append(paragraph);\n if (selection !== null) {\n paragraph.select();\n }\n if ($isRangeSelection(selection)) {\n selection.format = 0;\n }\n}\nfunction registerClearEditor(editor, $onClear = $defaultOnClear) {\n return editor.registerCommand(CLEAR_EDITOR_COMMAND, payload => {\n editor.update($onClear);\n return true;\n }, COMMAND_PRIORITY_EDITOR);\n}\n\n/**\n * An extension to provide an implementation of {@link CLEAR_EDITOR_COMMAND}\n */\nconst ClearEditorExtension = defineExtension({\n build(editor, config, state) {\n return namedSignals(config);\n },\n config: safeCast({\n $onClear: $defaultOnClear\n }),\n name: '@lexical/extension/ClearEditor',\n register(editor, config, state) {\n const {\n $onClear\n } = state.getOutput();\n return E(() => registerClearEditor(editor, $onClear.value));\n }\n});\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/**\n * @experimental\n * Get the sets of nodes and types registered in the\n * {@link InitialEditorConfig}. This is to be used when an extension\n * needs to register optional behavior if some node or type is present.\n *\n * @param config The InitialEditorConfig (accessible from an extension's init)\n * @returns The known types and nodes as Sets\n */\nfunction getKnownTypesAndNodes(config) {\n const types = new Set();\n const nodes = new Set();\n for (const klassOrReplacement of getNodeConfig(config)) {\n const klass = typeof klassOrReplacement === 'function' ? klassOrReplacement : klassOrReplacement.replace;\n types.add(klass.getType());\n nodes.add(klass);\n }\n return {\n nodes,\n types\n };\n}\nfunction getNodeConfig(config) {\n return (typeof config.nodes === 'function' ? config.nodes() : config.nodes) || [];\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/**\n * @experimental\n * Create a Signal that will subscribe to a value from an external store when watched, similar to\n * React's [useSyncExternalStore](https://react.dev/reference/react/useSyncExternalStore).\n *\n * @param getSnapshot Used to get the initial value of the signal when created and when first watched.\n * @param register A callback that will subscribe to some external store and update the signal, must return a dispose function.\n * @returns The signal\n */\nfunction watchedSignal(getSnapshot, register) {\n let dispose;\n return d(getSnapshot(), {\n unwatched() {\n if (dispose) {\n dispose();\n dispose = undefined;\n }\n },\n watched() {\n this.value = getSnapshot();\n dispose = register(this);\n }\n });\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/**\n * An extension to provide the current EditorState as a signal\n */\nconst EditorStateExtension = defineExtension({\n build(editor) {\n return watchedSignal(() => editor.getEditorState(), editorStateSignal => editor.registerUpdateListener(payload => {\n editorStateSignal.value = payload.editorState;\n }));\n },\n name: '@lexical/extension/EditorState'\n});\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n// Do not require this module directly! Use normal `invariant` calls.\n\nfunction formatDevErrorMessage(message) {\n throw new Error(message);\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/**\n * Recursively merge the given theme configuration in-place.\n *\n * @returns If `a` and `b` are both objects (and `b` is not an Array) then\n * all keys in `b` are merged into `a` then `a` is returned.\n * Otherwise `b` is returned.\n *\n * @example\n * ```ts\n * const a = { a: \"a\", nested: { a: 1 } };\n * const b = { b: \"b\", nested: { b: 2 } };\n * const rval = deepThemeMergeInPlace(a, b);\n * expect(a).toBe(rval);\n * expect(a).toEqual({ a: \"a\", b: \"b\", nested: { a: 1, b: 2 } });\n * ```\n */\nfunction deepThemeMergeInPlace(a, b) {\n if (a && b && !Array.isArray(b) && typeof a === 'object' && typeof b === 'object') {\n const aObj = a;\n const bObj = b;\n for (const k in bObj) {\n aObj[k] = deepThemeMergeInPlace(aObj[k], bObj[k]);\n }\n return a;\n }\n return b;\n}\n\nconst ExtensionRepStateIds = {\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n unmarked: 0,\n temporary: 1,\n permanent: 2,\n configured: 3,\n initialized: 4,\n built: 5,\n registered: 6,\n afterRegistration: 7\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n};\nfunction isExactlyUnmarkedExtensionRepState(state) {\n return state.id === ExtensionRepStateIds.unmarked;\n}\nfunction isExactlyTemporaryExtensionRepState(state) {\n return state.id === ExtensionRepStateIds.temporary;\n}\nfunction isExactlyPermanentExtensionRepState(state) {\n return state.id === ExtensionRepStateIds.permanent;\n}\nfunction isConfiguredExtensionRepState(state) {\n return state.id >= ExtensionRepStateIds.configured;\n}\nfunction isInitializedExtensionRepState(state) {\n return state.id >= ExtensionRepStateIds.initialized;\n}\nfunction isBuiltExtensionRepState(state) {\n return state.id >= ExtensionRepStateIds.built;\n}\nfunction isAfterRegistrationState(state) {\n return state.id >= ExtensionRepStateIds.afterRegistration;\n}\nfunction applyTemporaryMark(state) {\n if (!isExactlyUnmarkedExtensionRepState(state)) {\n formatDevErrorMessage(`LexicalBuilder: Can not apply a temporary mark from state id ${String(state.id)} (expected ${String(ExtensionRepStateIds.unmarked)} unmarked)`);\n }\n return Object.assign(state, {\n id: ExtensionRepStateIds.temporary\n });\n}\nfunction applyPermanentMark(state) {\n if (!isExactlyTemporaryExtensionRepState(state)) {\n formatDevErrorMessage(`LexicalBuilder: Can not apply a permanent mark from state id ${String(state.id)} (expected ${String(ExtensionRepStateIds.temporary)} temporary)`);\n }\n return Object.assign(state, {\n id: ExtensionRepStateIds.permanent\n });\n}\nfunction applyConfiguredState(state, config, registerState) {\n return Object.assign(state, {\n config,\n id: ExtensionRepStateIds.configured,\n registerState\n });\n}\nfunction applyInitializedState(state, initResult, registerState) {\n return Object.assign(state, {\n id: ExtensionRepStateIds.initialized,\n initResult,\n registerState\n });\n}\nfunction applyBuiltState(state, output, registerState) {\n return Object.assign(state, {\n id: ExtensionRepStateIds.built,\n output,\n registerState\n });\n}\nfunction applyRegisteredState(state) {\n return Object.assign(state, {\n id: ExtensionRepStateIds.registered\n });\n}\nfunction applyAfterRegistrationState(state) {\n return Object.assign(state, {\n id: ExtensionRepStateIds.afterRegistration\n });\n}\nfunction rollbackToBuiltState(state) {\n return Object.assign(state, {\n id: ExtensionRepStateIds.built\n });\n}\nconst emptySet = new Set();\n\n/**\n * @internal\n */\nclass ExtensionRep {\n builder;\n configs;\n _dependency;\n _peerNameSet;\n extension;\n state;\n _signal;\n constructor(builder, extension) {\n this.builder = builder;\n this.extension = extension;\n this.configs = new Set();\n this.state = {\n id: ExtensionRepStateIds.unmarked\n };\n }\n mergeConfigs() {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- LexicalExtensionConfig<Extension> is any\n let config = this.extension.config || {};\n const mergeConfig = this.extension.mergeConfig ? this.extension.mergeConfig.bind(this.extension) : shallowMergeConfig;\n for (const cfg of this.configs) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- LexicalExtensionConfig<Extension> is any\n config = mergeConfig(config, cfg);\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return -- any\n return config;\n }\n init(editorConfig) {\n const initialState = this.state;\n if (!isExactlyPermanentExtensionRepState(initialState)) {\n formatDevErrorMessage(`ExtensionRep: Can not configure from state id ${String(initialState.id)}`);\n }\n const initState = {\n getDependency: this.getInitDependency.bind(this),\n getDirectDependentNames: this.getDirectDependentNames.bind(this),\n getPeer: this.getInitPeer.bind(this),\n getPeerNameSet: this.getPeerNameSet.bind(this)\n };\n const buildState = {\n ...initState,\n getDependency: this.getDependency.bind(this),\n getInitResult: this.getInitResult.bind(this),\n getPeer: this.getPeer.bind(this)\n };\n const state = applyConfiguredState(initialState, this.mergeConfigs(), initState);\n this.state = state;\n let initResult;\n if (this.extension.init) {\n initResult = this.extension.init(editorConfig, state.config, initState);\n }\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion -- false positive\n this.state = applyInitializedState(state, initResult, buildState);\n }\n build(editor) {\n const state = this.state;\n if (!(state.id === ExtensionRepStateIds.initialized)) {\n formatDevErrorMessage(`ExtensionRep: register called in state id ${String(state.id)} (expected ${String(ExtensionRepStateIds.built)} initialized)`);\n }\n let output;\n if (this.extension.build) {\n output = this.extension.build(editor, state.config, state.registerState);\n }\n const registerState = {\n ...state.registerState,\n getOutput: () => output,\n getSignal: this.getSignal.bind(this)\n };\n this.state = applyBuiltState(state, output, registerState);\n }\n register(editor, signal) {\n this._signal = signal;\n const state = this.state;\n if (!(state.id === ExtensionRepStateIds.built)) {\n formatDevErrorMessage(`ExtensionRep: register called in state id ${String(state.id)} (expected ${String(ExtensionRepStateIds.built)} built)`);\n }\n const cleanup = this.extension.register && this.extension.register(editor, state.config, state.registerState);\n this.state = applyRegisteredState(state);\n return () => {\n const afterRegistrationState = this.state;\n if (!(afterRegistrationState.id === ExtensionRepStateIds.afterRegistration)) {\n formatDevErrorMessage(`ExtensionRep: rollbackToBuiltState called in state id ${String(state.id)} (expected ${String(ExtensionRepStateIds.afterRegistration)} afterRegistration)`);\n }\n this.state = rollbackToBuiltState(afterRegistrationState);\n if (cleanup) {\n cleanup();\n }\n };\n }\n afterRegistration(editor) {\n const state = this.state;\n if (!(state.id === ExtensionRepStateIds.registered)) {\n formatDevErrorMessage(`ExtensionRep: afterRegistration called in state id ${String(state.id)} (expected ${String(ExtensionRepStateIds.registered)} registered)`);\n }\n let rval;\n if (this.extension.afterRegistration) {\n rval = this.extension.afterRegistration(editor, state.config, state.registerState);\n }\n this.state = applyAfterRegistrationState(state);\n return rval;\n }\n getSignal() {\n if (!(this._signal !== undefined)) {\n formatDevErrorMessage(`ExtensionRep.getSignal() called before register`);\n }\n return this._signal;\n }\n getInitResult() {\n if (!(this.extension.init !== undefined)) {\n formatDevErrorMessage(`ExtensionRep: getInitResult() called for Extension ${this.extension.name} that does not define init`);\n }\n const state = this.state;\n if (!isInitializedExtensionRepState(state)) {\n formatDevErrorMessage(`ExtensionRep: getInitResult() called for ExtensionRep in state id ${String(state.id)} < ${String(ExtensionRepStateIds.initialized)} (initialized)`);\n } // eslint-disable-next-line @typescript-eslint/no-unsafe-return -- any\n return state.initResult;\n }\n getInitPeer(name) {\n const rep = this.builder.extensionNameMap.get(name);\n return rep ? rep.getExtensionInitDependency() : undefined;\n }\n getExtensionInitDependency() {\n const state = this.state;\n if (!isConfiguredExtensionRepState(state)) {\n formatDevErrorMessage(`ExtensionRep: getExtensionInitDependency called in state id ${String(state.id)} (expected >= ${String(ExtensionRepStateIds.configured)} configured)`);\n }\n return {\n config: state.config\n };\n }\n getPeer(name) {\n const rep = this.builder.extensionNameMap.get(name);\n return rep ? rep.getExtensionDependency() : undefined;\n }\n getInitDependency(dep) {\n const rep = this.builder.getExtensionRep(dep);\n if (!(rep !== undefined)) {\n formatDevErrorMessage(`LexicalExtensionBuilder: Extension ${this.extension.name} missing dependency extension ${dep.name} to be in registry`);\n }\n return rep.getExtensionInitDependency();\n }\n getDependency(dep) {\n const rep = this.builder.getExtensionRep(dep);\n if (!(rep !== undefined)) {\n formatDevErrorMessage(`LexicalExtensionBuilder: Extension ${this.extension.name} missing dependency extension ${dep.name} to be in registry`);\n }\n return rep.getExtensionDependency();\n }\n getState() {\n const state = this.state;\n if (!isAfterRegistrationState(state)) {\n formatDevErrorMessage(`ExtensionRep getState called in state id ${String(state.id)} (expected ${String(ExtensionRepStateIds.afterRegistration)} afterRegistration)`);\n }\n return state;\n }\n getDirectDependentNames() {\n return this.builder.incomingEdges.get(this.extension.name) || emptySet;\n }\n getPeerNameSet() {\n let s = this._peerNameSet;\n if (!s) {\n s = new Set((this.extension.peerDependencies || []).map(([name]) => name));\n this._peerNameSet = s;\n }\n return s;\n }\n getExtensionDependency() {\n if (!this._dependency) {\n const state = this.state;\n if (!isBuiltExtensionRepState(state)) {\n formatDevErrorMessage(`Extension ${this.extension.name} used as a dependency before build`);\n }\n this._dependency = {\n config: state.config,\n init: state.initResult,\n output: state.output\n };\n }\n return this._dependency;\n }\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst HISTORY_MERGE_OPTIONS = {\n tag: HISTORY_MERGE_TAG\n};\nfunction $defaultInitializer() {\n const root = $getRoot();\n if (root.isEmpty()) {\n root.append($createParagraphNode());\n }\n}\n/**\n * An extension to set the initial state of the editor from\n * a function or serialized JSON EditorState. This is\n * implicitly included with all editors built with\n * Lexical Extension. This happens in the `afterRegistration`\n * phase so your initial state may depend on registered commands,\n * but you should not call `editor.setRootElement` earlier than\n * this phase to avoid rendering an empty editor first.\n */\nconst InitialStateExtension = defineExtension({\n config: safeCast({\n setOptions: HISTORY_MERGE_OPTIONS,\n updateOptions: HISTORY_MERGE_OPTIONS\n }),\n init({\n $initialEditorState = $defaultInitializer\n }) {\n return {\n $initialEditorState,\n initialized: false\n };\n },\n // eslint-disable-next-line sort-keys-fix/sort-keys-fix -- typescript inference is order dependent here for some reason\n afterRegistration(editor, {\n updateOptions,\n setOptions\n }, state) {\n const initResult = state.getInitResult();\n if (!initResult.initialized) {\n initResult.initialized = true;\n const {\n $initialEditorState\n } = initResult;\n if ($isEditorState($initialEditorState)) {\n editor.setEditorState($initialEditorState, setOptions);\n } else if (typeof $initialEditorState === 'function') {\n editor.update(() => {\n $initialEditorState(editor);\n }, updateOptions);\n } else if ($initialEditorState && (typeof $initialEditorState === 'string' || typeof $initialEditorState === 'object')) {\n const parsedEditorState = editor.parseEditorState($initialEditorState);\n editor.setEditorState(parsedEditorState, setOptions);\n }\n }\n return () => {};\n },\n name: '@lexical/extension/InitialState',\n // These are automatically added by createEditor, we add them here so they are\n // visible during extensionRep.init so extensions can see all known types before the\n // editor is created.\n // (excluding ArtificialNode__DO_NOT_USE because it isn't really public API\n // and shouldn't change anything)\n nodes: [RootNode, TextNode, LineBreakNode, TabNode, ParagraphNode]\n});\n\n/** @internal Use a well-known symbol for dev tools purposes */\nconst builderSymbol = Symbol.for('@lexical/extension/LexicalBuilder');\n/**\n * Build a LexicalEditor by combining together one or more extensions, optionally\n * overriding some of their configuration.\n *\n * @param extensions - Extension arguments (extensions or extensions with config overrides)\n * @returns An editor handle\n *\n * @example\n * A single root extension with multiple dependencies\n *\n * ```ts\n * const editor = buildEditorFromExtensions(\n * defineExtension({\n * name: \"[root]\",\n * dependencies: [\n * RichTextExtension,\n * configExtension(EmojiExtension, { emojiBaseUrl: \"/assets/emoji\" }),\n * ],\n * register: (editor: LexicalEditor) => {\n * console.log(\"Editor Created\");\n * return () => console.log(\"Editor Disposed\");\n * },\n * }),\n * );\n * ```\n *\n * @example\n * A very similar minimal configuration without the register hook\n *\n * ```ts\n * const editor = buildEditorFromExtensions(\n * RichTextExtension,\n * configExtension(EmojiExtension, { emojiBaseUrl: \"/assets/emoji\" }),\n * );\n * ```\n */\nfunction buildEditorFromExtensions(...extensions) {\n return LexicalBuilder.fromExtensions(extensions).buildEditor();\n}\n\n/** @internal */\nfunction noop() {\n /*empty*/\n}\n\n/** Throw the given Error */\nfunction defaultOnError(err) {\n throw err;\n}\n/** @internal */\nfunction maybeWithBuilder(editor) {\n return editor;\n}\nfunction normalizeExtensionArgument(arg) {\n return Array.isArray(arg) ? arg : [arg];\n}\nconst PACKAGE_VERSION = \"0.38.2+dev.esm\";\n\n/** @internal */\nclass LexicalBuilder {\n roots;\n extensionNameMap;\n outgoingConfigEdges;\n incomingEdges;\n conflicts;\n _sortedExtensionReps;\n PACKAGE_VERSION;\n constructor(roots) {\n this.outgoingConfigEdges = new Map();\n this.incomingEdges = new Map();\n this.extensionNameMap = new Map();\n this.conflicts = new Map();\n this.PACKAGE_VERSION = PACKAGE_VERSION;\n this.roots = roots;\n for (const extension of roots) {\n this.addExtension(extension);\n }\n }\n static fromExtensions(extensions) {\n const roots = [normalizeExtensionArgument(InitialStateExtension)];\n for (const extension of extensions) {\n roots.push(normalizeExtensionArgument(extension));\n }\n return new LexicalBuilder(roots);\n }\n static maybeFromEditor(editor) {\n const builder = maybeWithBuilder(editor)[builderSymbol];\n if (builder) {\n // The dev tools variant of this will relax some of these invariants\n if (!(builder.PACKAGE_VERSION === PACKAGE_VERSION)) {\n formatDevErrorMessage(`LexicalBuilder.fromEditor: The given editor was created with LexicalBuilder ${builder.PACKAGE_VERSION} but this version is ${PACKAGE_VERSION}. A project should have exactly one copy of LexicalBuilder`);\n }\n if (!(builder instanceof LexicalBuilder)) {\n formatDevErrorMessage(`LexicalBuilder.fromEditor: There are multiple copies of the same version of LexicalBuilder in your project, and this editor was created with another one. Your project, or one of its dependencies, has its package.json and/or bundler configured incorrectly.`);\n }\n }\n return builder;\n }\n\n /** Look up the editor that was created by this LexicalBuilder or throw */\n static fromEditor(editor) {\n const builder = LexicalBuilder.maybeFromEditor(editor);\n if (!(builder !== undefined)) {\n formatDevErrorMessage(`LexicalBuilder.fromEditor: The given editor was not created with LexicalBuilder`);\n }\n return builder;\n }\n constructEditor() {\n const {\n $initialEditorState: _$initialEditorState,\n onError,\n ...editorConfig\n } = this.buildCreateEditorArgs();\n const editor = Object.assign(createEditor({\n ...editorConfig,\n ...(onError ? {\n onError: err => {\n onError(err, editor);\n }\n } : {})\n }), {\n [builderSymbol]: this\n });\n for (const extensionRep of this.sortedExtensionReps()) {\n extensionRep.build(editor);\n }\n return editor;\n }\n buildEditor() {\n let disposeOnce = noop;\n function dispose() {\n try {\n disposeOnce();\n } finally {\n disposeOnce = noop;\n }\n }\n const editor = Object.assign(this.constructEditor(), {\n dispose,\n [Symbol.dispose]: dispose\n });\n disposeOnce = mergeRegister(this.registerEditor(editor), () => editor.setRootElement(null));\n return editor;\n }\n hasExtensionByName(name) {\n return this.extensionNameMap.has(name);\n }\n getExtensionRep(extension) {\n const rep = this.extensionNameMap.get(extension.name);\n if (rep) {\n if (!(rep.extension === extension)) {\n formatDevErrorMessage(`LexicalBuilder: A registered extension with name ${extension.name} exists but does not match the given extension`);\n }\n return rep;\n }\n }\n addEdge(fromExtensionName, toExtensionName, configs) {\n const outgoing = this.outgoingConfigEdges.get(fromExtensionName);\n if (outgoing) {\n outgoing.set(toExtensionName, configs);\n } else {\n this.outgoingConfigEdges.set(fromExtensionName, new Map([[toExtensionName, configs]]));\n }\n const incoming = this.incomingEdges.get(toExtensionName);\n if (incoming) {\n incoming.add(fromExtensionName);\n } else {\n this.incomingEdges.set(toExtensionName, new Set([fromExtensionName]));\n }\n }\n addExtension(arg) {\n if (!(this._sortedExtensionReps === undefined)) {\n formatDevErrorMessage(`LexicalBuilder: addExtension called after finalization`);\n }\n const normalized = normalizeExtensionArgument(arg);\n const [extension] = normalized;\n if (!(typeof extension.name === 'string')) {\n formatDevErrorMessage(`LexicalBuilder: extension name must be string, not ${typeof extension.name}`);\n }\n let extensionRep = this.extensionNameMap.get(extension.name);\n if (!(extensionRep === undefined || extensionRep.extension === extension)) {\n formatDevErrorMessage(`LexicalBuilder: Multiple extensions registered with name ${extension.name}, names must be unique`);\n }\n if (!extensionRep) {\n extensionRep = new ExtensionRep(this, extension);\n this.extensionNameMap.set(extension.name, extensionRep);\n const hasConflict = this.conflicts.get(extension.name);\n if (typeof hasConflict === 'string') {\n {\n formatDevErrorMessage(`LexicalBuilder: extension ${extension.name} conflicts with ${hasConflict}`);\n }\n }\n for (const name of extension.conflictsWith || []) {\n if (!!this.extensionNameMap.has(name)) {\n formatDevErrorMessage(`LexicalBuilder: extension ${extension.name} conflicts with ${name}`);\n }\n this.conflicts.set(name, extension.name);\n }\n for (const dep of extension.dependencies || []) {\n const normDep = normalizeExtensionArgument(dep);\n this.addEdge(extension.name, normDep[0].name, normDep.slice(1));\n this.addExtension(normDep);\n }\n for (const [depName, config] of extension.peerDependencies || []) {\n this.addEdge(extension.name, depName, config ? [config] : []);\n }\n }\n }\n sortedExtensionReps() {\n if (this._sortedExtensionReps) {\n return this._sortedExtensionReps;\n }\n // depth-first search based topological DAG sort\n // https://en.wikipedia.org/wiki/Topological_sorting\n const sortedExtensionReps = [];\n const visit = (rep, fromExtensionName) => {\n let mark = rep.state;\n if (isExactlyPermanentExtensionRepState(mark)) {\n return;\n }\n const extensionName = rep.extension.name;\n if (!isExactlyUnmarkedExtensionRepState(mark)) {\n formatDevErrorMessage(`LexicalBuilder: Circular dependency detected for Extension ${extensionName} from ${fromExtensionName || '[unknown]'}`);\n }\n mark = applyTemporaryMark(mark);\n rep.state = mark;\n const outgoingConfigEdges = this.outgoingConfigEdges.get(extensionName);\n if (outgoingConfigEdges) {\n for (const toExtensionName of outgoingConfigEdges.keys()) {\n const toRep = this.extensionNameMap.get(toExtensionName);\n // may be undefined for an optional peer dependency\n if (toRep) {\n visit(toRep, extensionName);\n }\n }\n }\n mark = applyPermanentMark(mark);\n rep.state = mark;\n sortedExtensionReps.push(rep);\n };\n for (const rep of this.extensionNameMap.values()) {\n if (isExactlyUnmarkedExtensionRepState(rep.state)) {\n visit(rep);\n }\n }\n for (const rep of sortedExtensionReps) {\n for (const [toExtensionName, configs] of this.outgoingConfigEdges.get(rep.extension.name) || []) {\n if (configs.length > 0) {\n const toRep = this.extensionNameMap.get(toExtensionName);\n if (toRep) {\n for (const config of configs) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument -- any\n toRep.configs.add(config);\n }\n }\n }\n }\n }\n for (const [extension, ...configs] of this.roots) {\n if (configs.length > 0) {\n const toRep = this.extensionNameMap.get(extension.name);\n if (!(toRep !== undefined)) {\n formatDevErrorMessage(`LexicalBuilder: Expecting existing ExtensionRep for ${extension.name}`);\n }\n for (const config of configs) {\n toRep.configs.add(config);\n }\n }\n }\n this._sortedExtensionReps = sortedExtensionReps;\n return this._sortedExtensionReps;\n }\n registerEditor(editor) {\n const extensionReps = this.sortedExtensionReps();\n const controller = new AbortController();\n const cleanups = [() => controller.abort()];\n const signal = controller.signal;\n for (const extensionRep of extensionReps) {\n const cleanup = extensionRep.register(editor, signal);\n if (cleanup) {\n cleanups.push(cleanup);\n }\n }\n for (const extensionRep of extensionReps) {\n const cleanup = extensionRep.afterRegistration(editor);\n if (cleanup) {\n cleanups.push(cleanup);\n }\n }\n return mergeRegister(...cleanups);\n }\n buildCreateEditorArgs() {\n const config = {};\n const nodes = new Set();\n const replacedNodes = new Map();\n const htmlExport = new Map();\n const htmlImport = {};\n const theme = {};\n const extensionReps = this.sortedExtensionReps();\n for (const extensionRep of extensionReps) {\n const {\n extension\n } = extensionRep;\n if (extension.onError !== undefined) {\n config.onError = extension.onError;\n }\n if (extension.disableEvents !== undefined) {\n config.disableEvents = extension.disableEvents;\n }\n if (extension.parentEditor !== undefined) {\n config.parentEditor = extension.parentEditor;\n }\n if (extension.editable !== undefined) {\n config.editable = extension.editable;\n }\n if (extension.namespace !== undefined) {\n config.namespace = extension.namespace;\n }\n if (extension.$initialEditorState !== undefined) {\n config.$initialEditorState = extension.$initialEditorState;\n }\n if (extension.nodes) {\n for (const node of getNodeConfig(extension)) {\n if (typeof node !== 'function') {\n const conflictExtension = replacedNodes.get(node.replace);\n if (conflictExtension) {\n {\n formatDevErrorMessage(`LexicalBuilder: Extension ${extension.name} can not register replacement for node ${node.replace.name} because ${conflictExtension.extension.name} already did`);\n }\n }\n replacedNodes.set(node.replace, extensionRep);\n }\n nodes.add(node);\n }\n }\n if (extension.html) {\n if (extension.html.export) {\n for (const [k, v] of extension.html.export.entries()) {\n htmlExport.set(k, v);\n }\n }\n if (extension.html.import) {\n Object.assign(htmlImport, extension.html.import);\n }\n }\n if (extension.theme) {\n deepThemeMergeInPlace(theme, extension.theme);\n }\n }\n if (Object.keys(theme).length > 0) {\n config.theme = theme;\n }\n if (nodes.size) {\n config.nodes = [...nodes];\n }\n const hasImport = Object.keys(htmlImport).length > 0;\n const hasExport = htmlExport.size > 0;\n if (hasImport || hasExport) {\n config.html = {};\n if (hasImport) {\n config.html.import = htmlImport;\n }\n if (hasExport) {\n config.html.export = htmlExport;\n }\n }\n for (const extensionRep of extensionReps) {\n extensionRep.init(config);\n }\n if (!config.onError) {\n config.onError = defaultOnError;\n }\n return config;\n }\n}\n\n/**\n * @experimental\n * Get the finalized config and output of an Extension that was used to build the editor.\n *\n * This is useful in the implementation of a LexicalNode or in other\n * situations where you have an editor reference but it's not easy to\n * pass the config or {@link ExtensionRegisterState} around.\n *\n * It will throw if the Editor was not built using this Extension.\n *\n * @param editor - The editor that was built using extension\n * @param extension - The concrete reference to an Extension used to build this editor\n * @returns The config and output for that Extension\n */\nfunction getExtensionDependencyFromEditor(editor, extension) {\n const builder = LexicalBuilder.fromEditor(editor);\n const rep = builder.getExtensionRep(extension);\n if (!(rep !== undefined)) {\n formatDevErrorMessage(`getExtensionDependencyFromEditor: Extension ${extension.name} was not built when creating this editor`);\n }\n return rep.getExtensionDependency();\n}\n\n/**\n * @experimental\n * Get the finalized config and output of an Extension that was used to build the\n * editor by name.\n *\n * This can be used from the implementation of a LexicalNode or in other\n * situation where you have an editor reference but it's not easy to pass the\n * config around. Use this version if you do not have a concrete reference to\n * the Extension for some reason (e.g. it is an optional peer dependency, or you\n * are avoiding a circular import).\n *\n * Both the explicit Extension type and the name are required.\n *\n * @example\n * ```tsx\n * import type { HistoryExtension } from \"@lexical/history\";\n * getPeerDependencyFromEditor<typeof HistoryExtension>(editor, \"@lexical/history/History\");\n * ```\n\n * @param editor - The editor that may have been built using extension\n * @param extensionName - The name of the Extension\n * @returns The config and output of the Extension or undefined\n */\nfunction getPeerDependencyFromEditor(editor, extensionName) {\n const builder = LexicalBuilder.fromEditor(editor);\n const peer = builder.extensionNameMap.get(extensionName);\n return peer ? peer.getExtensionDependency() : undefined;\n}\n\n/**\n * Get the finalized config and output of an Extension that was used to build the\n * editor by name.\n *\n * This can be used from the implementation of a LexicalNode or in other\n * situation where you have an editor reference but it's not easy to pass the\n * config around. Use this version if you do not have a concrete reference to\n * the Extension for some reason (e.g. it is an optional peer dependency, or you\n * are avoiding a circular import).\n *\n * Both the explicit Extension type and the name are required.\n *\n * @example\n * ```tsx\n * import type { EmojiExtension } from \"./EmojiExtension\";\n * export class EmojiNode extends TextNode {\n * // other implementation details not included\n * createDOM(\n * config: EditorConfig,\n * editor?: LexicalEditor | undefined\n * ): HTMLElement {\n * const dom = super.createDOM(config, editor);\n * addClassNamesToElement(\n * dom,\n * getPeerDependencyFromEditorOrThrow<typeof EmojiExtension>(\n * editor || $getEditor(),\n * \"@lexical/playground/emoji\",\n * ).config.emojiClass,\n * );\n * return dom;\n * }\n * }\n * ```\n\n * @param editor - The editor that may have been built using extension\n * @param extensionName - The name of the Extension\n * @returns The config and output of the Extension\n */\nfunction getPeerDependencyFromEditorOrThrow(editor, extensionName) {\n const dep = getPeerDependencyFromEditor(editor, extensionName);\n if (!(dep !== undefined)) {\n formatDevErrorMessage(`getPeerDependencyFromEditorOrThrow: Editor was not built with Extension ${extensionName}`);\n }\n return dep;\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst EMPTY_SET = new Set();\n\n/**\n * An extension that provides a `watchNodeKey` output that\n * returns a signal for the selection state of a node.\n *\n * Typically used for tracking whether a DecoratorNode is\n * currently selected or not. A framework independent\n * alternative to {@link useLexicalNodeSelection}.\n */\nconst NodeSelectionExtension = defineExtension({\n build(editor, config, state) {\n const editorStateStore = state.getDependency(EditorStateExtension).output;\n const watchedNodeStore = d({\n watchedNodeKeys: new Map()\n });\n const selectedNodeKeys = watchedSignal(() => undefined, () => E(() => {\n const prevSelectedNodeKeys = selectedNodeKeys.peek();\n const {\n watchedNodeKeys\n } = watchedNodeStore.value;\n let nextSelectedNodeKeys;\n let didChange = false;\n editorStateStore.value.read(() => {\n const selection = $getSelection();\n if (selection) {\n for (const [key, listeners] of watchedNodeKeys.entries()) {\n if (listeners.size === 0) {\n // We intentionally mutate this without firing a signal, to\n // avoid re-triggering this effect. There are no subscribers\n // so nothing can observe whether key was in the set or not\n watchedNodeKeys.delete(key);\n continue;\n }\n const node = $getNodeByKey(key);\n const isSelected = node && node.isSelected() || false;\n didChange = didChange || isSelected !== (prevSelectedNodeKeys ? prevSelectedNodeKeys.has(key) : false);\n if (isSelected) {\n nextSelectedNodeKeys = nextSelectedNodeKeys || new Set();\n nextSelectedNodeKeys.add(key);\n }\n }\n }\n });\n if (!(!didChange && nextSelectedNodeKeys && prevSelectedNodeKeys && nextSelectedNodeKeys.size === prevSelectedNodeKeys.size)) {\n selectedNodeKeys.value = nextSelectedNodeKeys;\n }\n }));\n function watchNodeKey(key) {\n const watcher = w(() => (selectedNodeKeys.value || EMPTY_SET).has(key));\n const {\n watchedNodeKeys\n } = watchedNodeStore.peek();\n let listeners = watchedNodeKeys.get(key);\n const hadListener = listeners !== undefined;\n listeners = listeners || new Set();\n listeners.add(watcher);\n if (!hadListener) {\n watchedNodeKeys.set(key, listeners);\n watchedNodeStore.value = {\n watchedNodeKeys\n };\n }\n return watcher;\n }\n return {\n watchNodeKey\n };\n },\n dependencies: [EditorStateExtension],\n name: '@lexical/extension/NodeSelection'\n});\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst INSERT_HORIZONTAL_RULE_COMMAND = createCommand('INSERT_HORIZONTAL_RULE_COMMAND');\nclass HorizontalRuleNode extends DecoratorNode {\n static getType() {\n return 'horizontalrule';\n }\n static clone(node) {\n return new HorizontalRuleNode(node.__key);\n }\n static importJSON(serializedNode) {\n return $createHorizontalRuleNode().updateFromJSON(serializedNode);\n }\n static importDOM() {\n return {\n hr: () => ({\n conversion: $convertHorizontalRuleElement,\n priority: 0\n })\n };\n }\n exportDOM() {\n return {\n element: document.createElement('hr')\n };\n }\n createDOM(config) {\n const element = document.createElement('hr');\n addClassNamesToElement(element, config.theme.hr);\n return element;\n }\n getTextContent() {\n return '\\n';\n }\n isInline() {\n return false;\n }\n updateDOM() {\n return false;\n }\n}\nfunction $convertHorizontalRuleElement() {\n return {\n node: $createHorizontalRuleNode()\n };\n}\nfunction $createHorizontalRuleNode() {\n return $create(HorizontalRuleNode);\n}\nfunction $isHorizontalRuleNode(node) {\n return node instanceof HorizontalRuleNode;\n}\nfunction $toggleNodeSelection(node, shiftKey = false) {\n const selection = $getSelection();\n const wasSelected = node.isSelected();\n const key = node.getKey();\n let nodeSelection;\n if (shiftKey && $isNodeSelection(selection)) {\n nodeSelection = selection;\n } else {\n nodeSelection = $createNodeSelection();\n $setSelection(nodeSelection);\n }\n if (wasSelected) {\n nodeSelection.delete(key);\n } else {\n nodeSelection.add(key);\n }\n}\n\n/**\n * An extension for HorizontalRuleNode that provides an implementation that\n * works without any React dependency.\n */\nconst HorizontalRuleExtension = defineExtension({\n dependencies: [EditorStateExtension, NodeSelectionExtension],\n name: '@lexical/extension/HorizontalRule',\n nodes: [HorizontalRuleNode],\n register(editor, config, state) {\n const {\n watchNodeKey\n } = state.getDependency(NodeSelectionExtension).output;\n const nodeSelectionStore = d({\n nodeSelections: new Map()\n });\n const isSelectedClassName = editor._config.theme.hrSelected ?? 'selected';\n return mergeRegister(editor.registerCommand(CLICK_COMMAND, event => {\n if (isDOMNode(event.target)) {\n const node = $getNodeFromDOMNode(event.target);\n if ($isHorizontalRuleNode(node)) {\n $toggleNodeSelection(node, event.shiftKey);\n return true;\n }\n }\n return false;\n }, COMMAND_PRIORITY_LOW), editor.registerMutationListener(HorizontalRuleNode, (nodes, payload) => {\n o(() => {\n let didChange = false;\n const {\n nodeSelections\n } = nodeSelectionStore.peek();\n for (const [k, v] of nodes.entries()) {\n if (v === 'destroyed') {\n nodeSelections.delete(k);\n didChange = true;\n } else {\n const prev = nodeSelections.get(k);\n const dom = editor.getElementByKey(k);\n if (prev) {\n prev.domNode.value = dom;\n } else {\n didChange = true;\n nodeSelections.set(k, {\n domNode: d(dom),\n selectedSignal: watchNodeKey(k)\n });\n }\n }\n }\n if (didChange) {\n nodeSelectionStore.value = {\n nodeSelections\n };\n }\n });\n }), E(() => {\n const effects = [];\n for (const {\n domNode,\n selectedSignal\n } of nodeSelectionStore.value.nodeSelections.values()) {\n effects.push(E(() => {\n const dom = domNode.value;\n if (dom) {\n const isSelected = selectedSignal.value;\n if (isSelected) {\n addClassNamesToElement(dom, isSelectedClassName);\n } else {\n removeClassNamesFromElement(dom, isSelectedClassName);\n }\n }\n }));\n }\n return mergeRegister(...effects);\n }));\n }\n});\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nfunction $indentOverTab(selection) {\n // const handled = new Set();\n const nodes = selection.getNodes();\n const canIndentBlockNodes = $filter(nodes, node => {\n if ($isBlockElementNode(node) && node.canIndent()) {\n return node;\n }\n return null;\n });\n // 1. If selection spans across canIndent block nodes: indent\n if (canIndentBlockNodes.length > 0) {\n return true;\n }\n // 2. If first (anchor/focus) is at block start: indent\n const anchor = selection.anchor;\n const focus = selection.focus;\n const first = focus.isBefore(anchor) ? focus : anchor;\n const firstNode = first.getNode();\n const firstBlock = $getNearestBlockElementAncestorOrThrow(firstNode);\n if (firstBlock.canIndent()) {\n const firstBlockKey = firstBlock.getKey();\n let selectionAtStart = $createRangeSelection();\n selectionAtStart.anchor.set(firstBlockKey, 0, 'element');\n selectionAtStart.focus.set(firstBlockKey, 0, 'element');\n selectionAtStart = $normalizeSelection__EXPERIMENTAL(selectionAtStart);\n if (selectionAtStart.anchor.is(first)) {\n return true;\n }\n }\n // 3. Else: tab\n return false;\n}\nfunction registerTabIndentation(editor, maxIndent) {\n return mergeRegister(editor.registerCommand(KEY_TAB_COMMAND, event => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) {\n return false;\n }\n event.preventDefault();\n const command = $indentOverTab(selection) ? event.shiftKey ? OUTDENT_CONTENT_COMMAND : INDENT_CONTENT_COMMAND : INSERT_TAB_COMMAND;\n return editor.dispatchCommand(command, undefined);\n }, COMMAND_PRIORITY_EDITOR), editor.registerCommand(INDENT_CONTENT_COMMAND, () => {\n const currentMaxIndent = typeof maxIndent === 'number' ? maxIndent : maxIndent ? maxIndent.peek() : null;\n if (currentMaxIndent == null) {\n return false;\n }\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) {\n return false;\n }\n const indents = selection.getNodes().map(node => $getNearestBlockElementAncestorOrThrow(node).getIndent());\n return Math.max(...indents) + 1 >= currentMaxIndent;\n }, COMMAND_PRIORITY_CRITICAL));\n}\n/**\n * This extension adds the ability to indent content using the tab key. Generally, we don't\n * recommend using this plugin as it could negatively affect accessibility for keyboard\n * users, causing focus to become trapped within the editor.\n */\nconst TabIndentationExtension = defineExtension({\n build(editor, config, state) {\n return namedSignals(config);\n },\n config: safeCast({\n disabled: false,\n maxIndent: null\n }),\n name: '@lexical/extension/TabIndentation',\n register(editor, config, state) {\n const {\n disabled,\n maxIndent\n } = state.getOutput();\n return E(() => {\n if (!disabled.value) {\n return registerTabIndentation(editor, maxIndent);\n }\n });\n }\n});\n\nexport { $createHorizontalRuleNode, $isHorizontalRuleNode, AutoFocusExtension, ClearEditorExtension, EditorStateExtension, HorizontalRuleExtension, HorizontalRuleNode, INSERT_HORIZONTAL_RULE_COMMAND, InitialStateExtension, LexicalBuilder, NodeSelectionExtension, TabIndentationExtension, o as batch, buildEditorFromExtensions, w as computed, E as effect, getExtensionDependencyFromEditor, getKnownTypesAndNodes, getPeerDependencyFromEditor, getPeerDependencyFromEditorOrThrow, namedSignals, registerClearEditor, registerTabIndentation, d as signal, h as untracked, watchedSignal };\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{defineExtension as t,safeCast as e,CLEAR_EDITOR_COMMAND as n,COMMAND_PRIORITY_EDITOR as i,$getRoot as o,$getSelection as s,$createParagraphNode as r,$isRangeSelection as c,shallowMergeConfig as d,RootNode as a,TextNode as u,LineBreakNode as f,TabNode as h,ParagraphNode as l,$isEditorState as g,HISTORY_MERGE_TAG as p,createEditor as m,$getNodeByKey as v,createCommand as x,$create as y,CLICK_COMMAND as S,isDOMNode as E,$getNodeFromDOMNode as b,COMMAND_PRIORITY_LOW as w,DecoratorNode as N,$isNodeSelection as O,$createNodeSelection as R,$setSelection as M,KEY_TAB_COMMAND as C,OUTDENT_CONTENT_COMMAND as D,INDENT_CONTENT_COMMAND as _,INSERT_TAB_COMMAND as I,COMMAND_PRIORITY_CRITICAL as j,$isBlockElementNode as A,$createRangeSelection as P,$normalizeSelection__EXPERIMENTAL as K}from\"lexical\";export{configExtension,declarePeerDependency,defineExtension,safeCast,shallowMergeConfig}from\"lexical\";import{mergeRegister as k,addClassNamesToElement as $,removeClassNamesFromElement as z,$getNearestBlockElementAncestorOrThrow as U,$filter as L}from\"@lexical/utils\";const T=Symbol.for(\"preact-signals\");function B(){if(Z>1)return void Z--;let t,e=!1;for(;void 0!==V;){let n=V;for(V=void 0,J++;void 0!==n;){const i=n.o;if(n.o=void 0,n.f&=-3,!(8&n.f)&&Y(n))try{n.c()}catch(n){e||(t=n,e=!0)}n=i}}if(J=0,Z--,e)throw t}function F(t){if(Z>0)return t();Z++;try{return t()}finally{B()}}let G,V;function W(t){const e=G;G=void 0;try{return t()}finally{G=e}}let Z=0,J=0,H=0;function q(t){if(void 0===G)return;let e=t.n;return void 0===e||e.t!==G?(e={i:0,S:t,p:G.s,n:void 0,t:G,e:void 0,x:void 0,r:e},void 0!==G.s&&(G.s.n=e),G.s=e,t.n=e,32&G.f&&t.S(e),e):-1===e.i?(e.i=0,void 0!==e.n&&(e.n.p=e.p,void 0!==e.p&&(e.p.n=e.n),e.p=G.s,e.n=void 0,G.s.n=e,G.s=e),e):void 0}function Q(t,e){this.v=t,this.i=0,this.n=void 0,this.t=void 0,this.W=null==e?void 0:e.watched,this.Z=null==e?void 0:e.unwatched,this.name=null==e?void 0:e.name}function X(t,e){return new Q(t,e)}function Y(t){for(let e=t.s;void 0!==e;e=e.n)if(e.S.i!==e.i||!e.S.h()||e.S.i!==e.i)return!0;return!1}function tt(t){for(let e=t.s;void 0!==e;e=e.n){const n=e.S.n;if(void 0!==n&&(e.r=n),e.S.n=e,e.i=-1,void 0===e.n){t.s=e;break}}}function et(t){let e,n=t.s;for(;void 0!==n;){const t=n.p;-1===n.i?(n.S.U(n),void 0!==t&&(t.n=n.n),void 0!==n.n&&(n.n.p=t)):e=n,n.S.n=n.r,void 0!==n.r&&(n.r=void 0),n=t}t.s=e}function nt(t,e){Q.call(this,void 0),this.x=t,this.s=void 0,this.g=H-1,this.f=4,this.W=null==e?void 0:e.watched,this.Z=null==e?void 0:e.unwatched,this.name=null==e?void 0:e.name}function it(t,e){return new nt(t,e)}function ot(t){const e=t.u;if(t.u=void 0,\"function\"==typeof e){Z++;const n=G;G=void 0;try{e()}catch(e){throw t.f&=-2,t.f|=8,st(t),e}finally{G=n,B()}}}function st(t){for(let e=t.s;void 0!==e;e=e.n)e.S.U(e);t.x=void 0,t.s=void 0,ot(t)}function rt(t){if(G!==this)throw new Error(\"Out-of-order effect\");et(this),G=t,this.f&=-2,8&this.f&&st(this),B()}function ct(t,e){this.x=t,this.u=void 0,this.s=void 0,this.o=void 0,this.f=32,this.name=null==e?void 0:e.name}function dt(t,e){const n=new ct(t,e);try{n.c()}catch(t){throw n.d(),t}const i=n.d.bind(n);return i[Symbol.dispose]=i,i}function at(t,e={}){const n={};for(const i in t){const o=e[i],s=X(void 0===o?t[i]:o);n[i]=s}return n}Q.prototype.brand=T,Q.prototype.h=function(){return!0},Q.prototype.S=function(t){const e=this.t;e!==t&&void 0===t.e&&(t.x=e,this.t=t,void 0!==e?e.e=t:W(()=>{var t;null==(t=this.W)||t.call(this)}))},Q.prototype.U=function(t){if(void 0!==this.t){const e=t.e,n=t.x;void 0!==e&&(e.x=n,t.e=void 0),void 0!==n&&(n.e=e,t.x=void 0),t===this.t&&(this.t=n,void 0===n&&W(()=>{var t;null==(t=this.Z)||t.call(this)}))}},Q.prototype.subscribe=function(t){return dt(()=>{const e=this.value,n=G;G=void 0;try{t(e)}finally{G=n}},{name:\"sub\"})},Q.prototype.valueOf=function(){return this.value},Q.prototype.toString=function(){return this.value+\"\"},Q.prototype.toJSON=function(){return this.value},Q.prototype.peek=function(){const t=G;G=void 0;try{return this.value}finally{G=t}},Object.defineProperty(Q.prototype,\"value\",{get(){const t=q(this);return void 0!==t&&(t.i=this.i),this.v},set(t){if(t!==this.v){if(J>100)throw new Error(\"Cycle detected\");this.v=t,this.i++,H++,Z++;try{for(let t=this.t;void 0!==t;t=t.x)t.t.N()}finally{B()}}}}),nt.prototype=new Q,nt.prototype.h=function(){if(this.f&=-3,1&this.f)return!1;if(32==(36&this.f))return!0;if(this.f&=-5,this.g===H)return!0;if(this.g=H,this.f|=1,this.i>0&&!Y(this))return this.f&=-2,!0;const t=G;try{tt(this),G=this;const t=this.x();(16&this.f||this.v!==t||0===this.i)&&(this.v=t,this.f&=-17,this.i++)}catch(t){this.v=t,this.f|=16,this.i++}return G=t,et(this),this.f&=-2,!0},nt.prototype.S=function(t){if(void 0===this.t){this.f|=36;for(let t=this.s;void 0!==t;t=t.n)t.S.S(t)}Q.prototype.S.call(this,t)},nt.prototype.U=function(t){if(void 0!==this.t&&(Q.prototype.U.call(this,t),void 0===this.t)){this.f&=-33;for(let t=this.s;void 0!==t;t=t.n)t.S.U(t)}},nt.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(let t=this.t;void 0!==t;t=t.x)t.t.N()}},Object.defineProperty(nt.prototype,\"value\",{get(){if(1&this.f)throw new Error(\"Cycle detected\");const t=q(this);if(this.h(),void 0!==t&&(t.i=this.i),16&this.f)throw this.v;return this.v}}),ct.prototype.c=function(){const t=this.S();try{if(8&this.f)return;if(void 0===this.x)return;const t=this.x();\"function\"==typeof t&&(this.u=t)}finally{t()}},ct.prototype.S=function(){if(1&this.f)throw new Error(\"Cycle detected\");this.f|=1,this.f&=-9,ot(this),tt(this),Z++;const t=G;return G=this,rt.bind(this,t)},ct.prototype.N=function(){2&this.f||(this.f|=2,this.o=V,V=this)},ct.prototype.d=function(){this.f|=8,1&this.f||st(this)},ct.prototype.dispose=function(){this.d()};const ut=t({build:(t,e,n)=>at(e),config:e({defaultSelection:\"rootEnd\",disabled:!1}),name:\"@lexical/extension/AutoFocus\",register(t,e,n){const i=n.getOutput();return dt(()=>i.disabled.value?void 0:t.registerRootListener(e=>{t.focus(()=>{const t=document.activeElement;null===e||null!==t&&e.contains(t)||e.focus({preventScroll:!0})},{defaultSelection:i.defaultSelection.peek()})}))}});function ft(){const t=o(),e=s(),n=r();t.clear(),t.append(n),null!==e&&n.select(),c(e)&&(e.format=0)}function ht(t,e=ft){return t.registerCommand(n,n=>(t.update(e),!0),i)}const lt=t({build:(t,e,n)=>at(e),config:e({$onClear:ft}),name:\"@lexical/extension/ClearEditor\",register(t,e,n){const{$onClear:i}=n.getOutput();return dt(()=>ht(t,i.value))}});function gt(t){const e=new Set,n=new Set;for(const i of pt(t)){const t=\"function\"==typeof i?i:i.replace;e.add(t.getType()),n.add(t)}return{nodes:n,types:e}}function pt(t){return(\"function\"==typeof t.nodes?t.nodes():t.nodes)||[]}function mt(t,e){let n;return X(t(),{unwatched(){n&&(n(),n=void 0)},watched(){this.value=t(),n=e(this)}})}const vt=t({build:t=>mt(()=>t.getEditorState(),e=>t.registerUpdateListener(t=>{e.value=t.editorState})),name:\"@lexical/extension/EditorState\"});function xt(t,...e){const n=new URL(\"https://lexical.dev/docs/error\"),i=new URLSearchParams;i.append(\"code\",t);for(const t of e)i.append(\"v\",t);throw n.search=i.toString(),Error(`Minified Lexical error #${t}; visit ${n.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}function yt(t,e){if(t&&e&&!Array.isArray(e)&&\"object\"==typeof t&&\"object\"==typeof e){const n=t,i=e;for(const t in i)n[t]=yt(n[t],i[t]);return t}return e}const St=0,Et=1,bt=2,wt=3,Nt=4,Ot=5,Rt=6,Mt=7;function Ct(t){return t.id===St}function Dt(t){return t.id===bt}function _t(t){return function(t){return t.id===Et}(t)||xt(305,String(t.id),String(Et)),Object.assign(t,{id:bt})}const It=new Set;class jt{builder;configs;_dependency;_peerNameSet;extension;state;_signal;constructor(t,e){this.builder=t,this.extension=e,this.configs=new Set,this.state={id:St}}mergeConfigs(){let t=this.extension.config||{};const e=this.extension.mergeConfig?this.extension.mergeConfig.bind(this.extension):d;for(const n of this.configs)t=e(t,n);return t}init(t){const e=this.state;Dt(e)||xt(306,String(e.id));const n={getDependency:this.getInitDependency.bind(this),getDirectDependentNames:this.getDirectDependentNames.bind(this),getPeer:this.getInitPeer.bind(this),getPeerNameSet:this.getPeerNameSet.bind(this)},i={...n,getDependency:this.getDependency.bind(this),getInitResult:this.getInitResult.bind(this),getPeer:this.getPeer.bind(this)},o=function(t,e,n){return Object.assign(t,{config:e,id:wt,registerState:n})}(e,this.mergeConfigs(),n);let s;this.state=o,this.extension.init&&(s=this.extension.init(t,o.config,n)),this.state=function(t,e,n){return Object.assign(t,{id:Nt,initResult:e,registerState:n})}(o,s,i)}build(t){const e=this.state;let n;e.id!==Nt&&xt(307,String(e.id),String(Ot)),this.extension.build&&(n=this.extension.build(t,e.config,e.registerState));const i={...e.registerState,getOutput:()=>n,getSignal:this.getSignal.bind(this)};this.state=function(t,e,n){return Object.assign(t,{id:Ot,output:e,registerState:n})}(e,n,i)}register(t,e){this._signal=e;const n=this.state;n.id!==Ot&&xt(308,String(n.id),String(Ot));const i=this.extension.register&&this.extension.register(t,n.config,n.registerState);return this.state=function(t){return Object.assign(t,{id:Rt})}(n),()=>{const t=this.state;t.id!==Mt&&xt(309,String(n.id),String(Mt)),this.state=function(t){return Object.assign(t,{id:Ot})}(t),i&&i()}}afterRegistration(t){const e=this.state;let n;return e.id!==Rt&&xt(310,String(e.id),String(Rt)),this.extension.afterRegistration&&(n=this.extension.afterRegistration(t,e.config,e.registerState)),this.state=function(t){return Object.assign(t,{id:Mt})}(e),n}getSignal(){return void 0===this._signal&&xt(311),this._signal}getInitResult(){void 0===this.extension.init&&xt(312,this.extension.name);const t=this.state;return function(t){return t.id>=Nt}(t)||xt(313,String(t.id),String(Nt)),t.initResult}getInitPeer(t){const e=this.builder.extensionNameMap.get(t);return e?e.getExtensionInitDependency():void 0}getExtensionInitDependency(){const t=this.state;return function(t){return t.id>=wt}(t)||xt(314,String(t.id),String(wt)),{config:t.config}}getPeer(t){const e=this.builder.extensionNameMap.get(t);return e?e.getExtensionDependency():void 0}getInitDependency(t){const e=this.builder.getExtensionRep(t);return void 0===e&&xt(315,this.extension.name,t.name),e.getExtensionInitDependency()}getDependency(t){const e=this.builder.getExtensionRep(t);return void 0===e&&xt(315,this.extension.name,t.name),e.getExtensionDependency()}getState(){const t=this.state;return function(t){return t.id>=Mt}(t)||xt(316,String(t.id),String(Mt)),t}getDirectDependentNames(){return this.builder.incomingEdges.get(this.extension.name)||It}getPeerNameSet(){let t=this._peerNameSet;return t||(t=new Set((this.extension.peerDependencies||[]).map(([t])=>t)),this._peerNameSet=t),t}getExtensionDependency(){if(!this._dependency){const t=this.state;(function(t){return t.id>=Ot})(t)||xt(317,this.extension.name),this._dependency={config:t.config,init:t.initResult,output:t.output}}return this._dependency}}const At={tag:p};function Pt(){const t=o();t.isEmpty()&&t.append(r())}const Kt=t({config:e({setOptions:At,updateOptions:At}),init:({$initialEditorState:t=Pt})=>({$initialEditorState:t,initialized:!1}),afterRegistration(t,{updateOptions:e,setOptions:n},i){const o=i.getInitResult();if(!o.initialized){o.initialized=!0;const{$initialEditorState:i}=o;if(g(i))t.setEditorState(i,n);else if(\"function\"==typeof i)t.update(()=>{i(t)},e);else if(i&&(\"string\"==typeof i||\"object\"==typeof i)){const e=t.parseEditorState(i);t.setEditorState(e,n)}}return()=>{}},name:\"@lexical/extension/InitialState\",nodes:[a,u,f,h,l]}),kt=Symbol.for(\"@lexical/extension/LexicalBuilder\");function $t(...t){return Bt.fromExtensions(t).buildEditor()}function zt(){}function Ut(t){throw t}function Lt(t){return Array.isArray(t)?t:[t]}const Tt=\"0.38.2+prod.esm\";class Bt{roots;extensionNameMap;outgoingConfigEdges;incomingEdges;conflicts;_sortedExtensionReps;PACKAGE_VERSION;constructor(t){this.outgoingConfigEdges=new Map,this.incomingEdges=new Map,this.extensionNameMap=new Map,this.conflicts=new Map,this.PACKAGE_VERSION=Tt,this.roots=t;for(const e of t)this.addExtension(e)}static fromExtensions(t){const e=[Lt(Kt)];for(const n of t)e.push(Lt(n));return new Bt(e)}static maybeFromEditor(t){const e=t[kt];return e&&(e.PACKAGE_VERSION!==Tt&&xt(292,e.PACKAGE_VERSION,Tt),e instanceof Bt||xt(293)),e}static fromEditor(t){const e=Bt.maybeFromEditor(t);return void 0===e&&xt(294),e}constructEditor(){const{$initialEditorState:t,onError:e,...n}=this.buildCreateEditorArgs(),i=Object.assign(m({...n,...e?{onError:t=>{e(t,i)}}:{}}),{[kt]:this});for(const t of this.sortedExtensionReps())t.build(i);return i}buildEditor(){let t=zt;function e(){try{t()}finally{t=zt}}const n=Object.assign(this.constructEditor(),{dispose:e,[Symbol.dispose]:e});return t=k(this.registerEditor(n),()=>n.setRootElement(null)),n}hasExtensionByName(t){return this.extensionNameMap.has(t)}getExtensionRep(t){const e=this.extensionNameMap.get(t.name);if(e)return e.extension!==t&&xt(295,t.name),e}addEdge(t,e,n){const i=this.outgoingConfigEdges.get(t);i?i.set(e,n):this.outgoingConfigEdges.set(t,new Map([[e,n]]));const o=this.incomingEdges.get(e);o?o.add(t):this.incomingEdges.set(e,new Set([t]))}addExtension(t){void 0!==this._sortedExtensionReps&&xt(296);const e=Lt(t),[n]=e;\"string\"!=typeof n.name&&xt(297,typeof n.name);let i=this.extensionNameMap.get(n.name);if(void 0!==i&&i.extension!==n&&xt(298,n.name),!i){i=new jt(this,n),this.extensionNameMap.set(n.name,i);const t=this.conflicts.get(n.name);\"string\"==typeof t&&xt(299,n.name,t);for(const t of n.conflictsWith||[])this.extensionNameMap.has(t)&&xt(299,n.name,t),this.conflicts.set(t,n.name);for(const t of n.dependencies||[]){const e=Lt(t);this.addEdge(n.name,e[0].name,e.slice(1)),this.addExtension(e)}for(const[t,e]of n.peerDependencies||[])this.addEdge(n.name,t,e?[e]:[])}}sortedExtensionReps(){if(this._sortedExtensionReps)return this._sortedExtensionReps;const t=[],e=(n,i)=>{let o=n.state;if(Dt(o))return;const s=n.extension.name;var r;Ct(o)||xt(300,s,i||\"[unknown]\"),Ct(r=o)||xt(304,String(r.id),String(St)),o=Object.assign(r,{id:Et}),n.state=o;const c=this.outgoingConfigEdges.get(s);if(c)for(const t of c.keys()){const n=this.extensionNameMap.get(t);n&&e(n,s)}o=_t(o),n.state=o,t.push(n)};for(const t of this.extensionNameMap.values())Ct(t.state)&&e(t);for(const e of t)for(const[t,n]of this.outgoingConfigEdges.get(e.extension.name)||[])if(n.length>0){const e=this.extensionNameMap.get(t);if(e)for(const t of n)e.configs.add(t)}for(const[t,...e]of this.roots)if(e.length>0){const n=this.extensionNameMap.get(t.name);void 0===n&&xt(301,t.name);for(const t of e)n.configs.add(t)}return this._sortedExtensionReps=t,this._sortedExtensionReps}registerEditor(t){const e=this.sortedExtensionReps(),n=new AbortController,i=[()=>n.abort()],o=n.signal;for(const n of e){const e=n.register(t,o);e&&i.push(e)}for(const n of e){const e=n.afterRegistration(t);e&&i.push(e)}return k(...i)}buildCreateEditorArgs(){const t={},e=new Set,n=new Map,i=new Map,o={},s={},r=this.sortedExtensionReps();for(const c of r){const{extension:r}=c;if(void 0!==r.onError&&(t.onError=r.onError),void 0!==r.disableEvents&&(t.disableEvents=r.disableEvents),void 0!==r.parentEditor&&(t.parentEditor=r.parentEditor),void 0!==r.editable&&(t.editable=r.editable),void 0!==r.namespace&&(t.namespace=r.namespace),void 0!==r.$initialEditorState&&(t.$initialEditorState=r.$initialEditorState),r.nodes)for(const t of pt(r)){if(\"function\"!=typeof t){const e=n.get(t.replace);e&&xt(302,r.name,t.replace.name,e.extension.name),n.set(t.replace,c)}e.add(t)}if(r.html){if(r.html.export)for(const[t,e]of r.html.export.entries())i.set(t,e);r.html.import&&Object.assign(o,r.html.import)}r.theme&&yt(s,r.theme)}Object.keys(s).length>0&&(t.theme=s),e.size&&(t.nodes=[...e]);const c=Object.keys(o).length>0,d=i.size>0;(c||d)&&(t.html={},c&&(t.html.import=o),d&&(t.html.export=i));for(const e of r)e.init(t);return t.onError||(t.onError=Ut),t}}function Ft(t,e){const n=Bt.fromEditor(t).getExtensionRep(e);return void 0===n&&xt(303,e.name),n.getExtensionDependency()}function Gt(t,e){const n=Bt.fromEditor(t).extensionNameMap.get(e);return n?n.getExtensionDependency():void 0}function Vt(t,e){const n=Gt(t,e);return void 0===n&&xt(291,e),n}const Wt=new Set,Zt=t({build(t,e,n){const i=n.getDependency(vt).output,o=X({watchedNodeKeys:new Map}),r=mt(()=>{},()=>dt(()=>{const t=r.peek(),{watchedNodeKeys:e}=o.value;let n,c=!1;i.value.read(()=>{if(s())for(const[i,o]of e.entries()){if(0===o.size){e.delete(i);continue}const s=v(i),r=s&&s.isSelected()||!1;c=c||r!==(!!t&&t.has(i)),r&&(n=n||new Set,n.add(i))}}),!c&&n&&t&&n.size===t.size||(r.value=n)}));return{watchNodeKey:function(t){const e=it(()=>(r.value||Wt).has(t)),{watchedNodeKeys:n}=o.peek();let i=n.get(t);const s=void 0!==i;return i=i||new Set,i.add(e),s||(n.set(t,i),o.value={watchedNodeKeys:n}),e}}},dependencies:[vt],name:\"@lexical/extension/NodeSelection\"}),Jt=x(\"INSERT_HORIZONTAL_RULE_COMMAND\");class Ht extends N{static getType(){return\"horizontalrule\"}static clone(t){return new Ht(t.__key)}static importJSON(t){return Qt().updateFromJSON(t)}static importDOM(){return{hr:()=>({conversion:qt,priority:0})}}exportDOM(){return{element:document.createElement(\"hr\")}}createDOM(t){const e=document.createElement(\"hr\");return $(e,t.theme.hr),e}getTextContent(){return\"\\n\"}isInline(){return!1}updateDOM(){return!1}}function qt(){return{node:Qt()}}function Qt(){return y(Ht)}function Xt(t){return t instanceof Ht}const Yt=t({dependencies:[vt,Zt],name:\"@lexical/extension/HorizontalRule\",nodes:[Ht],register(t,e,n){const{watchNodeKey:i}=n.getDependency(Zt).output,o=X({nodeSelections:new Map}),r=t._config.theme.hrSelected??\"selected\";return k(t.registerCommand(S,t=>{if(E(t.target)){const e=b(t.target);if(Xt(e))return function(t,e=!1){const n=s(),i=t.isSelected(),o=t.getKey();let r;e&&O(n)?r=n:(r=R(),M(r)),i?r.delete(o):r.add(o)}(e,t.shiftKey),!0}return!1},w),t.registerMutationListener(Ht,(e,n)=>{F(()=>{let n=!1;const{nodeSelections:s}=o.peek();for(const[o,r]of e.entries())if(\"destroyed\"===r)s.delete(o),n=!0;else{const e=s.get(o),r=t.getElementByKey(o);e?e.domNode.value=r:(n=!0,s.set(o,{domNode:X(r),selectedSignal:i(o)}))}n&&(o.value={nodeSelections:s})})}),dt(()=>{const t=[];for(const{domNode:e,selectedSignal:n}of o.value.nodeSelections.values())t.push(dt(()=>{const t=e.value;if(t){n.value?$(t,r):z(t,r)}}));return k(...t)}))}});function te(t,e){return k(t.registerCommand(C,e=>{const n=s();if(!c(n))return!1;e.preventDefault();const i=function(t){const e=t.getNodes();if(L(e,t=>A(t)&&t.canIndent()?t:null).length>0)return!0;const n=t.anchor,i=t.focus,o=i.isBefore(n)?i:n,s=o.getNode(),r=U(s);if(r.canIndent()){const t=r.getKey();let e=P();if(e.anchor.set(t,0,\"element\"),e.focus.set(t,0,\"element\"),e=K(e),e.anchor.is(o))return!0}return!1}(n)?e.shiftKey?D:_:I;return t.dispatchCommand(i,void 0)},i),t.registerCommand(_,()=>{const t=\"number\"==typeof e?e:e?e.peek():null;if(null==t)return!1;const n=s();if(!c(n))return!1;const i=n.getNodes().map(t=>U(t).getIndent());return Math.max(...i)+1>=t},j))}const ee=t({build:(t,e,n)=>at(e),config:e({disabled:!1,maxIndent:null}),name:\"@lexical/extension/TabIndentation\",register(t,e,n){const{disabled:i,maxIndent:o}=n.getOutput();return dt(()=>{if(!i.value)return te(t,o)})}});export{Qt as $createHorizontalRuleNode,Xt as $isHorizontalRuleNode,ut as AutoFocusExtension,lt as ClearEditorExtension,vt as EditorStateExtension,Yt as HorizontalRuleExtension,Ht as HorizontalRuleNode,Jt as INSERT_HORIZONTAL_RULE_COMMAND,Kt as InitialStateExtension,Bt as LexicalBuilder,Zt as NodeSelectionExtension,ee as TabIndentationExtension,F as batch,$t as buildEditorFromExtensions,it as computed,dt as effect,Ft as getExtensionDependencyFromEditor,gt as getKnownTypesAndNodes,Gt as getPeerDependencyFromEditor,Vt as getPeerDependencyFromEditorOrThrow,at as namedSignals,ht as registerClearEditor,te as registerTabIndentation,X as signal,W as untracked,mt as watchedSignal};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst mod = await (process.env.NODE_ENV !== 'production' ? import('./LexicalExtension.dev.mjs') : import('./LexicalExtension.prod.mjs'));\nexport const $createHorizontalRuleNode = mod.$createHorizontalRuleNode;\nexport const $isHorizontalRuleNode = mod.$isHorizontalRuleNode;\nexport const AutoFocusExtension = mod.AutoFocusExtension;\nexport const ClearEditorExtension = mod.ClearEditorExtension;\nexport const EditorStateExtension = mod.EditorStateExtension;\nexport const HorizontalRuleExtension = mod.HorizontalRuleExtension;\nexport const HorizontalRuleNode = mod.HorizontalRuleNode;\nexport const INSERT_HORIZONTAL_RULE_COMMAND = mod.INSERT_HORIZONTAL_RULE_COMMAND;\nexport const InitialStateExtension = mod.InitialStateExtension;\nexport const LexicalBuilder = mod.LexicalBuilder;\nexport const NodeSelectionExtension = mod.NodeSelectionExtension;\nexport const TabIndentationExtension = mod.TabIndentationExtension;\nexport const batch = mod.batch;\nexport const buildEditorFromExtensions = mod.buildEditorFromExtensions;\nexport const computed = mod.computed;\nexport const configExtension = mod.configExtension;\nexport const declarePeerDependency = mod.declarePeerDependency;\nexport const defineExtension = mod.defineExtension;\nexport const effect = mod.effect;\nexport const getExtensionDependencyFromEditor = mod.getExtensionDependencyFromEditor;\nexport const getKnownTypesAndNodes = mod.getKnownTypesAndNodes;\nexport const getPeerDependencyFromEditor = mod.getPeerDependencyFromEditor;\nexport const getPeerDependencyFromEditorOrThrow = mod.getPeerDependencyFromEditorOrThrow;\nexport const namedSignals = mod.namedSignals;\nexport const registerClearEditor = mod.registerClearEditor;\nexport const registerTabIndentation = mod.registerTabIndentation;\nexport const safeCast = mod.safeCast;\nexport const shallowMergeConfig = mod.shallowMergeConfig;\nexport const signal = mod.signal;\nexport const untracked = mod.untracked;\nexport const watchedSignal = mod.watchedSignal;","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { $generateHtmlFromNodes, $generateNodesFromDOM } from '@lexical/html';\nimport { $addNodeStyle, $sliceSelectedTextNodeContent } from '@lexical/selection';\nimport { objectKlassEquals } from '@lexical/utils';\nimport { $getSelection, $isRangeSelection, $createTabNode, SELECTION_INSERT_CLIPBOARD_NODES_COMMAND, $caretFromPoint, $isTextPointCaret, $getCaretRange, $getChildCaret, $getRoot, $isTextNode, $isElementNode, $parseSerializedNode, getDOMSelection, COPY_COMMAND, COMMAND_PRIORITY_CRITICAL, isSelectionWithinEditor, $getEditor } from 'lexical';\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n// Do not require this module directly! Use normal `invariant` calls.\n\nfunction formatDevErrorMessage(message) {\n throw new Error(message);\n}\n\n/**\n * Returns the *currently selected* Lexical content as an HTML string, relying on the\n * logic defined in the exportDOM methods on the LexicalNode classes. Note that\n * this will not return the HTML content of the entire editor (unless all the content is included\n * in the current selection).\n *\n * @param editor - LexicalEditor instance to get HTML content from\n * @param selection - The selection to use (default is $getSelection())\n * @returns a string of HTML content\n */\nfunction $getHtmlContent(editor, selection = $getSelection()) {\n if (selection == null) {\n {\n formatDevErrorMessage(`Expected valid LexicalSelection`);\n }\n }\n\n // If we haven't selected anything\n if ($isRangeSelection(selection) && selection.isCollapsed() || selection.getNodes().length === 0) {\n return '';\n }\n return $generateHtmlFromNodes(editor, selection);\n}\n\n/**\n * Returns the *currently selected* Lexical content as a JSON string, relying on the\n * logic defined in the exportJSON methods on the LexicalNode classes. Note that\n * this will not return the JSON content of the entire editor (unless all the content is included\n * in the current selection).\n *\n * @param editor - LexicalEditor instance to get the JSON content from\n * @param selection - The selection to use (default is $getSelection())\n * @returns\n */\nfunction $getLexicalContent(editor, selection = $getSelection()) {\n if (selection == null) {\n {\n formatDevErrorMessage(`Expected valid LexicalSelection`);\n }\n }\n\n // If we haven't selected anything\n if ($isRangeSelection(selection) && selection.isCollapsed() || selection.getNodes().length === 0) {\n return null;\n }\n return JSON.stringify($generateJSONFromSelectedNodes(editor, selection));\n}\n\n/**\n * Attempts to insert content of the mime-types text/plain or text/uri-list from\n * the provided DataTransfer object into the editor at the provided selection.\n * text/uri-list is only used if text/plain is not also provided.\n *\n * @param dataTransfer an object conforming to the [DataTransfer interface] (https://html.spec.whatwg.org/multipage/dnd.html#the-datatransfer-interface)\n * @param selection the selection to use as the insertion point for the content in the DataTransfer object\n */\nfunction $insertDataTransferForPlainText(dataTransfer, selection) {\n const text = dataTransfer.getData('text/plain') || dataTransfer.getData('text/uri-list');\n if (text != null) {\n selection.insertRawText(text);\n }\n}\n\n/**\n * Attempts to insert content of the mime-types application/x-lexical-editor, text/html,\n * text/plain, or text/uri-list (in descending order of priority) from the provided DataTransfer\n * object into the editor at the provided selection.\n *\n * @param dataTransfer an object conforming to the [DataTransfer interface] (https://html.spec.whatwg.org/multipage/dnd.html#the-datatransfer-interface)\n * @param selection the selection to use as the insertion point for the content in the DataTransfer object\n * @param editor the LexicalEditor the content is being inserted into.\n */\nfunction $insertDataTransferForRichText(dataTransfer, selection, editor) {\n const lexicalString = dataTransfer.getData('application/x-lexical-editor');\n if (lexicalString) {\n try {\n const payload = JSON.parse(lexicalString);\n if (payload.namespace === editor._config.namespace && Array.isArray(payload.nodes)) {\n const nodes = $generateNodesFromSerializedNodes(payload.nodes);\n return $insertGeneratedNodes(editor, nodes, selection);\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(error);\n }\n }\n const htmlString = dataTransfer.getData('text/html');\n const plainString = dataTransfer.getData('text/plain');\n\n // Skip HTML handling if it matches the plain text representation.\n // This avoids unnecessary processing for plain text strings created by\n // iOS Safari autocorrect, which incorrectly includes a `text/html` type.\n if (htmlString && plainString !== htmlString) {\n try {\n const parser = new DOMParser();\n const dom = parser.parseFromString(trustHTML(htmlString), 'text/html');\n const nodes = $generateNodesFromDOM(editor, dom);\n return $insertGeneratedNodes(editor, nodes, selection);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(error);\n }\n }\n\n // Multi-line plain text in rich text mode pasted as separate paragraphs\n // instead of single paragraph with linebreaks.\n // Webkit-specific: Supports read 'text/uri-list' in clipboard.\n const text = plainString || dataTransfer.getData('text/uri-list');\n if (text != null) {\n if ($isRangeSelection(selection)) {\n const parts = text.split(/(\\r?\\n|\\t)/);\n if (parts[parts.length - 1] === '') {\n parts.pop();\n }\n for (let i = 0; i < parts.length; i++) {\n const currentSelection = $getSelection();\n if ($isRangeSelection(currentSelection)) {\n const part = parts[i];\n if (part === '\\n' || part === '\\r\\n') {\n currentSelection.insertParagraph();\n } else if (part === '\\t') {\n currentSelection.insertNodes([$createTabNode()]);\n } else {\n currentSelection.insertText(part);\n }\n }\n }\n } else {\n selection.insertRawText(text);\n }\n }\n}\nfunction trustHTML(html) {\n if (window.trustedTypes && window.trustedTypes.createPolicy) {\n const policy = window.trustedTypes.createPolicy('lexical', {\n createHTML: input => input\n });\n return policy.createHTML(html);\n }\n return html;\n}\n\n/**\n * Inserts Lexical nodes into the editor using different strategies depending on\n * some simple selection-based heuristics. If you're looking for a generic way to\n * to insert nodes into the editor at a specific selection point, you probably want\n * {@link lexical.$insertNodes}\n *\n * @param editor LexicalEditor instance to insert the nodes into.\n * @param nodes The nodes to insert.\n * @param selection The selection to insert the nodes into.\n */\nfunction $insertGeneratedNodes(editor, nodes, selection) {\n if (!editor.dispatchCommand(SELECTION_INSERT_CLIPBOARD_NODES_COMMAND, {\n nodes,\n selection\n })) {\n selection.insertNodes(nodes);\n $updateSelectionOnInsert(selection);\n }\n return;\n}\nfunction $updateSelectionOnInsert(selection) {\n if ($isRangeSelection(selection) && selection.isCollapsed()) {\n const anchor = selection.anchor;\n let nodeToInspect = null;\n const anchorCaret = $caretFromPoint(anchor, 'previous');\n if (anchorCaret) {\n if ($isTextPointCaret(anchorCaret)) {\n nodeToInspect = anchorCaret.origin;\n } else {\n const range = $getCaretRange(anchorCaret, $getChildCaret($getRoot(), 'next').getFlipped());\n for (const caret of range) {\n if ($isTextNode(caret.origin)) {\n nodeToInspect = caret.origin;\n break;\n } else if ($isElementNode(caret.origin) && !caret.origin.isInline()) {\n break;\n }\n }\n }\n }\n if (nodeToInspect && $isTextNode(nodeToInspect)) {\n const newFormat = nodeToInspect.getFormat();\n const newStyle = nodeToInspect.getStyle();\n if (selection.format !== newFormat || selection.style !== newStyle) {\n selection.format = newFormat;\n selection.style = newStyle;\n selection.dirty = true;\n }\n }\n }\n}\nfunction exportNodeToJSON(node) {\n const serializedNode = node.exportJSON();\n const nodeClass = node.constructor;\n if (serializedNode.type !== nodeClass.getType()) {\n {\n formatDevErrorMessage(`LexicalNode: Node ${nodeClass.name} does not implement .exportJSON().`);\n }\n }\n if ($isElementNode(node)) {\n const serializedChildren = serializedNode.children;\n if (!Array.isArray(serializedChildren)) {\n {\n formatDevErrorMessage(`LexicalNode: Node ${nodeClass.name} is an element but .exportJSON() does not have a children array.`);\n }\n }\n }\n return serializedNode;\n}\nfunction $appendNodesToJSON(editor, selection, currentNode, targetArray = []) {\n let shouldInclude = selection !== null ? currentNode.isSelected(selection) : true;\n const shouldExclude = $isElementNode(currentNode) && currentNode.excludeFromCopy('html');\n let target = currentNode;\n if (selection !== null && $isTextNode(target)) {\n target = $sliceSelectedTextNodeContent(selection, target, 'clone');\n }\n const children = $isElementNode(target) ? target.getChildren() : [];\n const serializedNode = exportNodeToJSON(target);\n if ($isTextNode(target) && target.getTextContentSize() === 0) {\n // If an uncollapsed selection ends or starts at the end of a line of specialized,\n // TextNodes, such as code tokens, we will get a 'blank' TextNode here, i.e., one\n // with text of length 0. We don't want this, it makes a confusing mess. Reset!\n shouldInclude = false;\n }\n for (let i = 0; i < children.length; i++) {\n const childNode = children[i];\n const shouldIncludeChild = $appendNodesToJSON(editor, selection, childNode, serializedNode.children);\n if (!shouldInclude && $isElementNode(currentNode) && shouldIncludeChild && currentNode.extractWithChild(childNode, selection, 'clone')) {\n shouldInclude = true;\n }\n }\n if (shouldInclude && !shouldExclude) {\n targetArray.push(serializedNode);\n } else if (Array.isArray(serializedNode.children)) {\n for (let i = 0; i < serializedNode.children.length; i++) {\n const serializedChildNode = serializedNode.children[i];\n targetArray.push(serializedChildNode);\n }\n }\n return shouldInclude;\n}\n\n// TODO why $ function with Editor instance?\n/**\n * Gets the Lexical JSON of the nodes inside the provided Selection.\n *\n * @param editor LexicalEditor to get the JSON content from.\n * @param selection Selection to get the JSON content from.\n * @returns an object with the editor namespace and a list of serializable nodes as JavaScript objects.\n */\nfunction $generateJSONFromSelectedNodes(editor, selection) {\n const nodes = [];\n const root = $getRoot();\n const topLevelChildren = root.getChildren();\n for (let i = 0; i < topLevelChildren.length; i++) {\n const topLevelNode = topLevelChildren[i];\n $appendNodesToJSON(editor, selection, topLevelNode, nodes);\n }\n return {\n namespace: editor._config.namespace,\n nodes\n };\n}\n\n/**\n * This method takes an array of objects conforming to the BaseSerializedNode interface and returns\n * an Array containing instances of the corresponding LexicalNode classes registered on the editor.\n * Normally, you'd get an Array of BaseSerialized nodes from {@link $generateJSONFromSelectedNodes}\n *\n * @param serializedNodes an Array of objects conforming to the BaseSerializedNode interface.\n * @returns an Array of Lexical Node objects.\n */\nfunction $generateNodesFromSerializedNodes(serializedNodes) {\n const nodes = [];\n for (let i = 0; i < serializedNodes.length; i++) {\n const serializedNode = serializedNodes[i];\n const node = $parseSerializedNode(serializedNode);\n if ($isTextNode(node)) {\n $addNodeStyle(node);\n }\n nodes.push(node);\n }\n return nodes;\n}\nconst EVENT_LATENCY = 50;\nlet clipboardEventTimeout = null;\n\n// TODO custom selection\n// TODO potentially have a node customizable version for plain text\n/**\n * Copies the content of the current selection to the clipboard in\n * text/plain, text/html, and application/x-lexical-editor (Lexical JSON)\n * formats.\n *\n * @param editor the LexicalEditor instance to copy content from\n * @param event the native browser ClipboardEvent to add the content to.\n * @returns\n */\nasync function copyToClipboard(editor, event, data) {\n if (clipboardEventTimeout !== null) {\n // Prevent weird race conditions that can happen when this function is run multiple times\n // synchronously. In the future, we can do better, we can cancel/override the previously running job.\n return false;\n }\n if (event !== null) {\n return new Promise((resolve, reject) => {\n editor.update(() => {\n resolve($copyToClipboardEvent(editor, event, data));\n });\n });\n }\n const rootElement = editor.getRootElement();\n const editorWindow = editor._window || window;\n const windowDocument = editorWindow.document;\n const domSelection = getDOMSelection(editorWindow);\n if (rootElement === null || domSelection === null) {\n return false;\n }\n const element = windowDocument.createElement('span');\n element.style.cssText = 'position: fixed; top: -1000px;';\n element.append(windowDocument.createTextNode('#'));\n rootElement.append(element);\n const range = new Range();\n range.setStart(element, 0);\n range.setEnd(element, 1);\n domSelection.removeAllRanges();\n domSelection.addRange(range);\n return new Promise((resolve, reject) => {\n const removeListener = editor.registerCommand(COPY_COMMAND, secondEvent => {\n if (objectKlassEquals(secondEvent, ClipboardEvent)) {\n removeListener();\n if (clipboardEventTimeout !== null) {\n editorWindow.clearTimeout(clipboardEventTimeout);\n clipboardEventTimeout = null;\n }\n resolve($copyToClipboardEvent(editor, secondEvent, data));\n }\n // Block the entire copy flow while we wait for the next ClipboardEvent\n return true;\n }, COMMAND_PRIORITY_CRITICAL);\n // If the above hack execCommand hack works, this timeout code should never fire. Otherwise,\n // the listener will be quickly freed so that the user can reuse it again\n clipboardEventTimeout = editorWindow.setTimeout(() => {\n removeListener();\n clipboardEventTimeout = null;\n resolve(false);\n }, EVENT_LATENCY);\n windowDocument.execCommand('copy');\n element.remove();\n });\n}\n\n// TODO shouldn't pass editor (pass namespace directly)\nfunction $copyToClipboardEvent(editor, event, data) {\n if (data === undefined) {\n const domSelection = getDOMSelection(editor._window);\n const selection = $getSelection();\n if (!selection || selection.isCollapsed()) {\n return false;\n }\n if (!domSelection) {\n return false;\n }\n const anchorDOM = domSelection.anchorNode;\n const focusDOM = domSelection.focusNode;\n if (anchorDOM !== null && focusDOM !== null && !isSelectionWithinEditor(editor, anchorDOM, focusDOM)) {\n return false;\n }\n data = $getClipboardDataFromSelection(selection);\n }\n event.preventDefault();\n const clipboardData = event.clipboardData;\n if (clipboardData === null) {\n return false;\n }\n setLexicalClipboardDataTransfer(clipboardData, data);\n return true;\n}\nconst clipboardDataFunctions = [['text/html', $getHtmlContent], ['application/x-lexical-editor', $getLexicalContent]];\n\n/**\n * Serialize the content of the current selection to strings in\n * text/plain, text/html, and application/x-lexical-editor (Lexical JSON)\n * formats (as available).\n *\n * @param selection the selection to serialize (defaults to $getSelection())\n * @returns LexicalClipboardData\n */\nfunction $getClipboardDataFromSelection(selection = $getSelection()) {\n const clipboardData = {\n 'text/plain': selection ? selection.getTextContent() : ''\n };\n if (selection) {\n const editor = $getEditor();\n for (const [mimeType, $editorFn] of clipboardDataFunctions) {\n const v = $editorFn(editor, selection);\n if (v !== null) {\n clipboardData[mimeType] = v;\n }\n }\n }\n return clipboardData;\n}\n\n/**\n * Call setData on the given clipboardData for each MIME type present\n * in the given data (from {@link $getClipboardDataFromSelection})\n *\n * @param clipboardData the event.clipboardData to populate from data\n * @param data The lexical data\n */\nfunction setLexicalClipboardDataTransfer(clipboardData, data) {\n for (const [k] of clipboardDataFunctions) {\n if (data[k] === undefined) {\n clipboardData.setData(k, '');\n }\n }\n for (const k in data) {\n const v = data[k];\n if (v !== undefined) {\n clipboardData.setData(k, v);\n }\n }\n}\n\nexport { $generateJSONFromSelectedNodes, $generateNodesFromSerializedNodes, $getClipboardDataFromSelection, $getHtmlContent, $getLexicalContent, $insertDataTransferForPlainText, $insertDataTransferForRichText, $insertGeneratedNodes, copyToClipboard, setLexicalClipboardDataTransfer };\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{$generateHtmlFromNodes as t,$generateNodesFromDOM as e}from\"@lexical/html\";import{$addNodeStyle as n,$sliceSelectedTextNodeContent as o}from\"@lexical/selection\";import{objectKlassEquals as r}from\"@lexical/utils\";import{$getSelection as i,$isRangeSelection as l,$createTabNode as s,SELECTION_INSERT_CLIPBOARD_NODES_COMMAND as c,$caretFromPoint as a,$isTextPointCaret as u,$getCaretRange as f,$getChildCaret as d,$getRoot as p,$isTextNode as g,$isElementNode as m,$parseSerializedNode as h,getDOMSelection as x,COPY_COMMAND as y,COMMAND_PRIORITY_CRITICAL as w,isSelectionWithinEditor as T,$getEditor as C}from\"lexical\";function v(t,...e){const n=new URL(\"https://lexical.dev/docs/error\"),o=new URLSearchParams;o.append(\"code\",t);for(const t of e)o.append(\"v\",t);throw n.search=o.toString(),Error(`Minified Lexical error #${t}; visit ${n.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}function D(e,n=i()){return null==n&&v(166),l(n)&&n.isCollapsed()||0===n.getNodes().length?\"\":t(e,n)}function S(t,e=i()){return null==e&&v(166),l(e)&&e.isCollapsed()||0===e.getNodes().length?null:JSON.stringify(E(t,e))}function N(t,e){const n=t.getData(\"text/plain\")||t.getData(\"text/uri-list\");null!=n&&e.insertRawText(n)}function R(t,n,o){const r=t.getData(\"application/x-lexical-editor\");if(r)try{const t=JSON.parse(r);if(t.namespace===o._config.namespace&&Array.isArray(t.nodes)){return A(o,L(t.nodes),n)}}catch(t){console.error(t)}const c=t.getData(\"text/html\"),a=t.getData(\"text/plain\");if(c&&a!==c)try{const t=(new DOMParser).parseFromString(function(t){if(window.trustedTypes&&window.trustedTypes.createPolicy){return window.trustedTypes.createPolicy(\"lexical\",{createHTML:t=>t}).createHTML(t)}return t}(c),\"text/html\");return A(o,e(o,t),n)}catch(t){console.error(t)}const u=a||t.getData(\"text/uri-list\");if(null!=u)if(l(n)){const t=u.split(/(\\r?\\n|\\t)/);\"\"===t[t.length-1]&&t.pop();for(let e=0;e<t.length;e++){const n=i();if(l(n)){const o=t[e];\"\\n\"===o||\"\\r\\n\"===o?n.insertParagraph():\"\\t\"===o?n.insertNodes([s()]):n.insertText(o)}}}else n.insertRawText(u)}function A(t,e,n){t.dispatchCommand(c,{nodes:e,selection:n})||(n.insertNodes(e),function(t){if(l(t)&&t.isCollapsed()){const e=t.anchor;let n=null;const o=a(e,\"previous\");if(o)if(u(o))n=o.origin;else{const t=f(o,d(p(),\"next\").getFlipped());for(const e of t){if(g(e.origin)){n=e.origin;break}if(m(e.origin)&&!e.origin.isInline())break}}if(n&&g(n)){const e=n.getFormat(),o=n.getStyle();t.format===e&&t.style===o||(t.format=e,t.style=o,t.dirty=!0)}}}(n))}function P(t,e,n,r=[]){let i=null===e||n.isSelected(e);const l=m(n)&&n.excludeFromCopy(\"html\");let s=n;null!==e&&g(s)&&(s=o(e,s,\"clone\"));const c=m(s)?s.getChildren():[],a=function(t){const e=t.exportJSON(),n=t.constructor;if(e.type!==n.getType()&&v(58,n.name),m(t)){const t=e.children;Array.isArray(t)||v(59,n.name)}return e}(s);g(s)&&0===s.getTextContentSize()&&(i=!1);for(let o=0;o<c.length;o++){const r=c[o],l=P(t,e,r,a.children);!i&&m(n)&&l&&n.extractWithChild(r,e,\"clone\")&&(i=!0)}if(i&&!l)r.push(a);else if(Array.isArray(a.children))for(let t=0;t<a.children.length;t++){const e=a.children[t];r.push(e)}return i}function E(t,e){const n=[],o=p().getChildren();for(let r=0;r<o.length;r++){P(t,e,o[r],n)}return{namespace:t._config.namespace,nodes:n}}function L(t){const e=[];for(let o=0;o<t.length;o++){const r=t[o],i=h(r);g(i)&&n(i),e.push(i)}return e}let b=null;async function F(t,e,n){if(null!==b)return!1;if(null!==e)return new Promise((o,r)=>{t.update(()=>{o(M(t,e,n))})});const o=t.getRootElement(),i=t._window||window,l=i.document,s=x(i);if(null===o||null===s)return!1;const c=l.createElement(\"span\");c.style.cssText=\"position: fixed; top: -1000px;\",c.append(l.createTextNode(\"#\")),o.append(c);const a=new Range;return a.setStart(c,0),a.setEnd(c,1),s.removeAllRanges(),s.addRange(a),new Promise((e,o)=>{const s=t.registerCommand(y,o=>(r(o,ClipboardEvent)&&(s(),null!==b&&(i.clearTimeout(b),b=null),e(M(t,o,n))),!0),w);b=i.setTimeout(()=>{s(),b=null,e(!1)},50),l.execCommand(\"copy\"),c.remove()})}function M(t,e,n){if(void 0===n){const e=x(t._window),o=i();if(!o||o.isCollapsed())return!1;if(!e)return!1;const r=e.anchorNode,l=e.focusNode;if(null!==r&&null!==l&&!T(t,r,l))return!1;n=_(o)}e.preventDefault();const o=e.clipboardData;return null!==o&&(J(o,n),!0)}const O=[[\"text/html\",D],[\"application/x-lexical-editor\",S]];function _(t=i()){const e={\"text/plain\":t?t.getTextContent():\"\"};if(t){const n=C();for(const[o,r]of O){const i=r(n,t);null!==i&&(e[o]=i)}}return e}function J(t,e){for(const[n]of O)void 0===e[n]&&t.setData(n,\"\");for(const n in e){const o=e[n];void 0!==o&&t.setData(n,o)}}export{E as $generateJSONFromSelectedNodes,L as $generateNodesFromSerializedNodes,_ as $getClipboardDataFromSelection,D as $getHtmlContent,S as $getLexicalContent,N as $insertDataTransferForPlainText,R as $insertDataTransferForRichText,A as $insertGeneratedNodes,F as copyToClipboard,J as setLexicalClipboardDataTransfer};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst mod = await (process.env.NODE_ENV !== 'production' ? import('./LexicalClipboard.dev.mjs') : import('./LexicalClipboard.prod.mjs'));\nexport const $generateJSONFromSelectedNodes = mod.$generateJSONFromSelectedNodes;\nexport const $generateNodesFromSerializedNodes = mod.$generateNodesFromSerializedNodes;\nexport const $getClipboardDataFromSelection = mod.$getClipboardDataFromSelection;\nexport const $getHtmlContent = mod.$getHtmlContent;\nexport const $getLexicalContent = mod.$getLexicalContent;\nexport const $insertDataTransferForPlainText = mod.$insertDataTransferForPlainText;\nexport const $insertDataTransferForRichText = mod.$insertDataTransferForRichText;\nexport const $insertGeneratedNodes = mod.$insertGeneratedNodes;\nexport const copyToClipboard = mod.copyToClipboard;\nexport const setLexicalClipboardDataTransfer = mod.setLexicalClipboardDataTransfer;","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { addClassNamesToElement, $descendantsMatching, $findMatchingParent, removeClassNamesFromElement, objectKlassEquals, isHTMLElement as isHTMLElement$1, $insertFirst as $insertFirst$1, mergeRegister, $insertNodeToNearestRoot, $unwrapAndFilterDescendants } from '@lexical/utils';\nimport { ElementNode, isHTMLElement, $isInlineElementOrDecoratorNode, $isTextNode, $isLineBreakNode, $createParagraphNode, $applyNodeReplacement, createCommand, $createTextNode, $getSelection, $isRangeSelection, $isParagraphNode, $createPoint, $getNodeByKey, $isElementNode, $normalizeSelection__EXPERIMENTAL, isCurrentlyReadOnlyMode, TEXT_TYPE_TO_FORMAT, $getEditor, $setSelection, SELECTION_CHANGE_COMMAND, getDOMSelection, $createRangeSelection, $isRootNode, INSERT_PARAGRAPH_COMMAND, KEY_ARROW_DOWN_COMMAND, KEY_ARROW_UP_COMMAND, KEY_ARROW_LEFT_COMMAND, KEY_ARROW_RIGHT_COMMAND, COMMAND_PRIORITY_HIGH, KEY_ESCAPE_COMMAND, DELETE_WORD_COMMAND, DELETE_LINE_COMMAND, DELETE_CHARACTER_COMMAND, KEY_BACKSPACE_COMMAND, KEY_DELETE_COMMAND, CUT_COMMAND, FORMAT_TEXT_COMMAND, FORMAT_ELEMENT_COMMAND, CONTROLLED_TEXT_INSERTION_COMMAND, KEY_TAB_COMMAND, FOCUS_COMMAND, SELECTION_INSERT_CLIPBOARD_NODES_COMMAND, $getPreviousSelection, $getNearestNodeFromDOMNode, $createRangeSelectionFromDom, isDOMNode, $isRootOrShadowRoot, $caretFromPoint, $isExtendableTextPointCaret, $extendCaretToRange, $isSiblingCaret, $getSiblingCaret, $setPointFromCaret, $normalizeCaret, $isChildCaret, $getChildCaret, $getAdjacentChildCaret, setDOMUnmanaged, COMMAND_PRIORITY_EDITOR, CLICK_COMMAND, defineExtension, safeCast } from 'lexical';\nimport { effect, namedSignals } from '@lexical/extension';\nimport { copyToClipboard, $getClipboardDataFromSelection } from '@lexical/clipboard';\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst PIXEL_VALUE_REG_EXP = /^(\\d+(?:\\.\\d+)?)px$/;\n\n// .PlaygroundEditorTheme__tableCell width value from\n// packages/lexical-playground/src/themes/PlaygroundEditorTheme.css\nconst COLUMN_WIDTH = 75;\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst TableCellHeaderStates = {\n BOTH: 3,\n COLUMN: 2,\n NO_STATUS: 0,\n ROW: 1\n};\n/** @noInheritDoc */\nclass TableCellNode extends ElementNode {\n /** @internal */\n __colSpan;\n /** @internal */\n __rowSpan;\n /** @internal */\n __headerState;\n /** @internal */\n __width;\n /** @internal */\n __backgroundColor;\n /** @internal */\n __verticalAlign;\n static getType() {\n return 'tablecell';\n }\n static clone(node) {\n return new TableCellNode(node.__headerState, node.__colSpan, node.__width, node.__key);\n }\n afterCloneFrom(node) {\n super.afterCloneFrom(node);\n this.__rowSpan = node.__rowSpan;\n this.__backgroundColor = node.__backgroundColor;\n this.__verticalAlign = node.__verticalAlign;\n }\n static importDOM() {\n return {\n td: node => ({\n conversion: $convertTableCellNodeElement,\n priority: 0\n }),\n th: node => ({\n conversion: $convertTableCellNodeElement,\n priority: 0\n })\n };\n }\n static importJSON(serializedNode) {\n return $createTableCellNode().updateFromJSON(serializedNode);\n }\n updateFromJSON(serializedNode) {\n return super.updateFromJSON(serializedNode).setHeaderStyles(serializedNode.headerState).setColSpan(serializedNode.colSpan || 1).setRowSpan(serializedNode.rowSpan || 1).setWidth(serializedNode.width || undefined).setBackgroundColor(serializedNode.backgroundColor || null).setVerticalAlign(serializedNode.verticalAlign || undefined);\n }\n constructor(headerState = TableCellHeaderStates.NO_STATUS, colSpan = 1, width, key) {\n super(key);\n this.__colSpan = colSpan;\n this.__rowSpan = 1;\n this.__headerState = headerState;\n this.__width = width;\n this.__backgroundColor = null;\n this.__verticalAlign = undefined;\n }\n createDOM(config) {\n const element = document.createElement(this.getTag());\n if (this.__width) {\n element.style.width = `${this.__width}px`;\n }\n if (this.__colSpan > 1) {\n element.colSpan = this.__colSpan;\n }\n if (this.__rowSpan > 1) {\n element.rowSpan = this.__rowSpan;\n }\n if (this.__backgroundColor !== null) {\n element.style.backgroundColor = this.__backgroundColor;\n }\n if (isValidVerticalAlign(this.__verticalAlign)) {\n element.style.verticalAlign = this.__verticalAlign;\n }\n addClassNamesToElement(element, config.theme.tableCell, this.hasHeader() && config.theme.tableCellHeader);\n return element;\n }\n exportDOM(editor) {\n const output = super.exportDOM(editor);\n if (isHTMLElement(output.element)) {\n const element = output.element;\n element.setAttribute('data-temporary-table-cell-lexical-key', this.getKey());\n element.style.border = '1px solid black';\n if (this.__colSpan > 1) {\n element.colSpan = this.__colSpan;\n }\n if (this.__rowSpan > 1) {\n element.rowSpan = this.__rowSpan;\n }\n element.style.width = `${this.getWidth() || COLUMN_WIDTH}px`;\n element.style.verticalAlign = this.getVerticalAlign() || 'top';\n element.style.textAlign = 'start';\n if (this.__backgroundColor === null && this.hasHeader()) {\n element.style.backgroundColor = '#f2f3f5';\n }\n }\n return output;\n }\n exportJSON() {\n return {\n ...super.exportJSON(),\n ...(isValidVerticalAlign(this.__verticalAlign) && {\n verticalAlign: this.__verticalAlign\n }),\n backgroundColor: this.getBackgroundColor(),\n colSpan: this.__colSpan,\n headerState: this.__headerState,\n rowSpan: this.__rowSpan,\n width: this.getWidth()\n };\n }\n getColSpan() {\n return this.getLatest().__colSpan;\n }\n setColSpan(colSpan) {\n const self = this.getWritable();\n self.__colSpan = colSpan;\n return self;\n }\n getRowSpan() {\n return this.getLatest().__rowSpan;\n }\n setRowSpan(rowSpan) {\n const self = this.getWritable();\n self.__rowSpan = rowSpan;\n return self;\n }\n getTag() {\n return this.hasHeader() ? 'th' : 'td';\n }\n setHeaderStyles(headerState, mask = TableCellHeaderStates.BOTH) {\n const self = this.getWritable();\n self.__headerState = headerState & mask | self.__headerState & ~mask;\n return self;\n }\n getHeaderStyles() {\n return this.getLatest().__headerState;\n }\n setWidth(width) {\n const self = this.getWritable();\n self.__width = width;\n return self;\n }\n getWidth() {\n return this.getLatest().__width;\n }\n getBackgroundColor() {\n return this.getLatest().__backgroundColor;\n }\n setBackgroundColor(newBackgroundColor) {\n const self = this.getWritable();\n self.__backgroundColor = newBackgroundColor;\n return self;\n }\n getVerticalAlign() {\n return this.getLatest().__verticalAlign;\n }\n setVerticalAlign(newVerticalAlign) {\n const self = this.getWritable();\n self.__verticalAlign = newVerticalAlign || undefined;\n return self;\n }\n toggleHeaderStyle(headerStateToToggle) {\n const self = this.getWritable();\n if ((self.__headerState & headerStateToToggle) === headerStateToToggle) {\n self.__headerState -= headerStateToToggle;\n } else {\n self.__headerState += headerStateToToggle;\n }\n return self;\n }\n hasHeaderState(headerState) {\n return (this.getHeaderStyles() & headerState) === headerState;\n }\n hasHeader() {\n return this.getLatest().__headerState !== TableCellHeaderStates.NO_STATUS;\n }\n updateDOM(prevNode) {\n return prevNode.__headerState !== this.__headerState || prevNode.__width !== this.__width || prevNode.__colSpan !== this.__colSpan || prevNode.__rowSpan !== this.__rowSpan || prevNode.__backgroundColor !== this.__backgroundColor || prevNode.__verticalAlign !== this.__verticalAlign;\n }\n isShadowRoot() {\n return true;\n }\n collapseAtStart() {\n return true;\n }\n canBeEmpty() {\n return false;\n }\n canIndent() {\n return false;\n }\n}\nfunction isValidVerticalAlign(verticalAlign) {\n return verticalAlign === 'middle' || verticalAlign === 'bottom';\n}\nfunction $convertTableCellNodeElement(domNode) {\n const domNode_ = domNode;\n const nodeName = domNode.nodeName.toLowerCase();\n let width = undefined;\n if (PIXEL_VALUE_REG_EXP.test(domNode_.style.width)) {\n width = parseFloat(domNode_.style.width);\n }\n const tableCellNode = $createTableCellNode(nodeName === 'th' ? TableCellHeaderStates.ROW : TableCellHeaderStates.NO_STATUS, domNode_.colSpan, width);\n tableCellNode.__rowSpan = domNode_.rowSpan;\n const backgroundColor = domNode_.style.backgroundColor;\n if (backgroundColor !== '') {\n tableCellNode.__backgroundColor = backgroundColor;\n }\n const verticalAlign = domNode_.style.verticalAlign;\n if (isValidVerticalAlign(verticalAlign)) {\n tableCellNode.__verticalAlign = verticalAlign;\n }\n const style = domNode_.style;\n const textDecoration = (style && style.textDecoration || '').split(' ');\n const hasBoldFontWeight = style.fontWeight === '700' || style.fontWeight === 'bold';\n const hasLinethroughTextDecoration = textDecoration.includes('line-through');\n const hasItalicFontStyle = style.fontStyle === 'italic';\n const hasUnderlineTextDecoration = textDecoration.includes('underline');\n return {\n after: childLexicalNodes => {\n const result = [];\n let paragraphNode = null;\n const removeSingleLineBreakNode = () => {\n if (paragraphNode) {\n const firstChild = paragraphNode.getFirstChild();\n if ($isLineBreakNode(firstChild) && paragraphNode.getChildrenSize() === 1) {\n firstChild.remove();\n }\n }\n };\n for (const child of childLexicalNodes) {\n if ($isInlineElementOrDecoratorNode(child) || $isTextNode(child) || $isLineBreakNode(child)) {\n if ($isTextNode(child)) {\n if (hasBoldFontWeight) {\n child.toggleFormat('bold');\n }\n if (hasLinethroughTextDecoration) {\n child.toggleFormat('strikethrough');\n }\n if (hasItalicFontStyle) {\n child.toggleFormat('italic');\n }\n if (hasUnderlineTextDecoration) {\n child.toggleFormat('underline');\n }\n }\n if (paragraphNode) {\n paragraphNode.append(child);\n } else {\n paragraphNode = $createParagraphNode().append(child);\n result.push(paragraphNode);\n }\n } else {\n result.push(child);\n removeSingleLineBreakNode();\n paragraphNode = null;\n }\n }\n removeSingleLineBreakNode();\n if (result.length === 0) {\n result.push($createParagraphNode());\n }\n return result;\n },\n node: tableCellNode\n };\n}\nfunction $createTableCellNode(headerState = TableCellHeaderStates.NO_STATUS, colSpan = 1, width) {\n return $applyNodeReplacement(new TableCellNode(headerState, colSpan, width));\n}\nfunction $isTableCellNode(node) {\n return node instanceof TableCellNode;\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst INSERT_TABLE_COMMAND = createCommand('INSERT_TABLE_COMMAND');\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n// Do not require this module directly! Use normal `invariant` calls.\n\nfunction formatDevErrorMessage(message) {\n throw new Error(message);\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/** @noInheritDoc */\nclass TableRowNode extends ElementNode {\n /** @internal */\n __height;\n static getType() {\n return 'tablerow';\n }\n static clone(node) {\n return new TableRowNode(node.__height, node.__key);\n }\n static importDOM() {\n return {\n tr: node => ({\n conversion: $convertTableRowElement,\n priority: 0\n })\n };\n }\n static importJSON(serializedNode) {\n return $createTableRowNode().updateFromJSON(serializedNode);\n }\n updateFromJSON(serializedNode) {\n return super.updateFromJSON(serializedNode).setHeight(serializedNode.height);\n }\n constructor(height, key) {\n super(key);\n this.__height = height;\n }\n exportJSON() {\n const height = this.getHeight();\n return {\n ...super.exportJSON(),\n ...(height === undefined ? undefined : {\n height\n })\n };\n }\n createDOM(config) {\n const element = document.createElement('tr');\n if (this.__height) {\n element.style.height = `${this.__height}px`;\n }\n addClassNamesToElement(element, config.theme.tableRow);\n return element;\n }\n extractWithChild(child, selection, destination) {\n return destination === 'html';\n }\n isShadowRoot() {\n return true;\n }\n setHeight(height) {\n const self = this.getWritable();\n self.__height = height;\n return self;\n }\n getHeight() {\n return this.getLatest().__height;\n }\n updateDOM(prevNode) {\n return prevNode.__height !== this.__height;\n }\n canBeEmpty() {\n return false;\n }\n canIndent() {\n return false;\n }\n}\nfunction $convertTableRowElement(domNode) {\n const domNode_ = domNode;\n let height = undefined;\n if (PIXEL_VALUE_REG_EXP.test(domNode_.style.height)) {\n height = parseFloat(domNode_.style.height);\n }\n return {\n after: children => $descendantsMatching(children, $isTableCellNode),\n node: $createTableRowNode(height)\n };\n}\nfunction $createTableRowNode(height) {\n return $applyNodeReplacement(new TableRowNode(height));\n}\nfunction $isTableRowNode(node) {\n return node instanceof TableRowNode;\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst CAN_USE_DOM = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined';\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst documentMode = CAN_USE_DOM && 'documentMode' in document ? document.documentMode : null;\nconst IS_FIREFOX = CAN_USE_DOM && /^(?!.*Seamonkey)(?=.*Firefox).*/i.test(navigator.userAgent);\nCAN_USE_DOM && 'InputEvent' in window && !documentMode ? 'getTargetRanges' in new window.InputEvent('input') : false;\n\nfunction $createTableNodeWithDimensions(rowCount, columnCount, includeHeaders = true) {\n const tableNode = $createTableNode();\n for (let iRow = 0; iRow < rowCount; iRow++) {\n const tableRowNode = $createTableRowNode();\n for (let iColumn = 0; iColumn < columnCount; iColumn++) {\n let headerState = TableCellHeaderStates.NO_STATUS;\n if (typeof includeHeaders === 'object') {\n if (iRow === 0 && includeHeaders.rows) {\n headerState |= TableCellHeaderStates.ROW;\n }\n if (iColumn === 0 && includeHeaders.columns) {\n headerState |= TableCellHeaderStates.COLUMN;\n }\n } else if (includeHeaders) {\n if (iRow === 0) {\n headerState |= TableCellHeaderStates.ROW;\n }\n if (iColumn === 0) {\n headerState |= TableCellHeaderStates.COLUMN;\n }\n }\n const tableCellNode = $createTableCellNode(headerState);\n const paragraphNode = $createParagraphNode();\n paragraphNode.append($createTextNode());\n tableCellNode.append(paragraphNode);\n tableRowNode.append(tableCellNode);\n }\n tableNode.append(tableRowNode);\n }\n return tableNode;\n}\nfunction $getTableCellNodeFromLexicalNode(startingNode) {\n const node = $findMatchingParent(startingNode, n => $isTableCellNode(n));\n if ($isTableCellNode(node)) {\n return node;\n }\n return null;\n}\nfunction $getTableRowNodeFromTableCellNodeOrThrow(startingNode) {\n const node = $findMatchingParent(startingNode, n => $isTableRowNode(n));\n if ($isTableRowNode(node)) {\n return node;\n }\n throw new Error('Expected table cell to be inside of table row.');\n}\nfunction $getTableNodeFromLexicalNodeOrThrow(startingNode) {\n const node = $findMatchingParent(startingNode, n => $isTableNode(n));\n if ($isTableNode(node)) {\n return node;\n }\n throw new Error('Expected table cell to be inside of table.');\n}\nfunction $getTableRowIndexFromTableCellNode(tableCellNode) {\n const tableRowNode = $getTableRowNodeFromTableCellNodeOrThrow(tableCellNode);\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableRowNode);\n return tableNode.getChildren().findIndex(n => n.is(tableRowNode));\n}\nfunction $getTableColumnIndexFromTableCellNode(tableCellNode) {\n const tableRowNode = $getTableRowNodeFromTableCellNodeOrThrow(tableCellNode);\n return tableRowNode.getChildren().findIndex(n => n.is(tableCellNode));\n}\nfunction $getTableCellSiblingsFromTableCellNode(tableCellNode, table) {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);\n const {\n x,\n y\n } = tableNode.getCordsFromCellNode(tableCellNode, table);\n return {\n above: tableNode.getCellNodeFromCords(x, y - 1, table),\n below: tableNode.getCellNodeFromCords(x, y + 1, table),\n left: tableNode.getCellNodeFromCords(x - 1, y, table),\n right: tableNode.getCellNodeFromCords(x + 1, y, table)\n };\n}\nfunction $removeTableRowAtIndex(tableNode, indexToDelete) {\n const tableRows = tableNode.getChildren();\n if (indexToDelete >= tableRows.length || indexToDelete < 0) {\n throw new Error('Expected table cell to be inside of table row.');\n }\n const targetRowNode = tableRows[indexToDelete];\n targetRowNode.remove();\n return tableNode;\n}\n\n/**\n * @deprecated This function does not support merged cells. Use {@link $insertTableRowAtSelection} or {@link $insertTableRowAtNode} instead.\n */\nfunction $insertTableRow(tableNode, targetIndex, shouldInsertAfter = true, rowCount, table) {\n const tableRows = tableNode.getChildren();\n if (targetIndex >= tableRows.length || targetIndex < 0) {\n throw new Error('Table row target index out of range');\n }\n const targetRowNode = tableRows[targetIndex];\n if ($isTableRowNode(targetRowNode)) {\n for (let r = 0; r < rowCount; r++) {\n const tableRowCells = targetRowNode.getChildren();\n const tableColumnCount = tableRowCells.length;\n const newTableRowNode = $createTableRowNode();\n for (let c = 0; c < tableColumnCount; c++) {\n const tableCellFromTargetRow = tableRowCells[c];\n if (!$isTableCellNode(tableCellFromTargetRow)) {\n formatDevErrorMessage(`Expected table cell`);\n }\n const {\n above,\n below\n } = $getTableCellSiblingsFromTableCellNode(tableCellFromTargetRow, table);\n let headerState = TableCellHeaderStates.NO_STATUS;\n const width = above && above.getWidth() || below && below.getWidth() || undefined;\n if (above && above.hasHeaderState(TableCellHeaderStates.COLUMN) || below && below.hasHeaderState(TableCellHeaderStates.COLUMN)) {\n headerState |= TableCellHeaderStates.COLUMN;\n }\n const tableCellNode = $createTableCellNode(headerState, 1, width);\n tableCellNode.append($createParagraphNode());\n newTableRowNode.append(tableCellNode);\n }\n if (shouldInsertAfter) {\n targetRowNode.insertAfter(newTableRowNode);\n } else {\n targetRowNode.insertBefore(newTableRowNode);\n }\n }\n } else {\n throw new Error('Row before insertion index does not exist.');\n }\n return tableNode;\n}\nconst getHeaderState = (currentState, possibleState) => {\n if (currentState === TableCellHeaderStates.BOTH || currentState === possibleState) {\n return possibleState;\n }\n return TableCellHeaderStates.NO_STATUS;\n};\n\n/**\n * Inserts a table row before or after the current focus cell node,\n * taking into account any spans. If successful, returns the\n * inserted table row node.\n */\nfunction $insertTableRowAtSelection(insertAfter = true) {\n const selection = $getSelection();\n if (!($isRangeSelection(selection) || $isTableSelection(selection))) {\n formatDevErrorMessage(`Expected a RangeSelection or TableSelection`);\n }\n const anchor = selection.anchor.getNode();\n const focus = selection.focus.getNode();\n const [anchorCell] = $getNodeTriplet(anchor);\n const [focusCell,, grid] = $getNodeTriplet(focus);\n const [, focusCellMap, anchorCellMap] = $computeTableMap(grid, focusCell, anchorCell);\n const {\n startRow: anchorStartRow\n } = anchorCellMap;\n const {\n startRow: focusStartRow\n } = focusCellMap;\n if (insertAfter) {\n return $insertTableRowAtNode(anchorStartRow + anchorCell.__rowSpan > focusStartRow + focusCell.__rowSpan ? anchorCell : focusCell, true);\n } else {\n return $insertTableRowAtNode(focusStartRow < anchorStartRow ? focusCell : anchorCell, false);\n }\n}\n\n/**\n * @deprecated renamed to {@link $insertTableRowAtSelection}\n */\nconst $insertTableRow__EXPERIMENTAL = $insertTableRowAtSelection;\n\n/**\n * Inserts a table row before or after the given cell node,\n * taking into account any spans. If successful, returns the\n * inserted table row node.\n */\nfunction $insertTableRowAtNode(cellNode, insertAfter = true) {\n const [,, grid] = $getNodeTriplet(cellNode);\n const [gridMap, cellMap] = $computeTableMap(grid, cellNode, cellNode);\n const columnCount = gridMap[0].length;\n const {\n startRow: cellStartRow\n } = cellMap;\n let insertedRow = null;\n if (insertAfter) {\n const insertAfterEndRow = cellStartRow + cellNode.__rowSpan - 1;\n const insertAfterEndRowMap = gridMap[insertAfterEndRow];\n const newRow = $createTableRowNode();\n for (let i = 0; i < columnCount; i++) {\n const {\n cell,\n startRow\n } = insertAfterEndRowMap[i];\n if (startRow + cell.__rowSpan - 1 <= insertAfterEndRow) {\n const currentCell = insertAfterEndRowMap[i].cell;\n const currentCellHeaderState = currentCell.__headerState;\n const headerState = getHeaderState(currentCellHeaderState, TableCellHeaderStates.COLUMN);\n newRow.append($createTableCellNode(headerState).append($createParagraphNode()));\n } else {\n cell.setRowSpan(cell.__rowSpan + 1);\n }\n }\n const insertAfterEndRowNode = grid.getChildAtIndex(insertAfterEndRow);\n if (!$isTableRowNode(insertAfterEndRowNode)) {\n formatDevErrorMessage(`insertAfterEndRow is not a TableRowNode`);\n }\n insertAfterEndRowNode.insertAfter(newRow);\n insertedRow = newRow;\n } else {\n const insertBeforeStartRow = cellStartRow;\n const insertBeforeStartRowMap = gridMap[insertBeforeStartRow];\n const newRow = $createTableRowNode();\n for (let i = 0; i < columnCount; i++) {\n const {\n cell,\n startRow\n } = insertBeforeStartRowMap[i];\n if (startRow === insertBeforeStartRow) {\n const currentCell = insertBeforeStartRowMap[i].cell;\n const currentCellHeaderState = currentCell.__headerState;\n const headerState = getHeaderState(currentCellHeaderState, TableCellHeaderStates.COLUMN);\n newRow.append($createTableCellNode(headerState).append($createParagraphNode()));\n } else {\n cell.setRowSpan(cell.__rowSpan + 1);\n }\n }\n const insertBeforeStartRowNode = grid.getChildAtIndex(insertBeforeStartRow);\n if (!$isTableRowNode(insertBeforeStartRowNode)) {\n formatDevErrorMessage(`insertBeforeStartRow is not a TableRowNode`);\n }\n insertBeforeStartRowNode.insertBefore(newRow);\n insertedRow = newRow;\n }\n return insertedRow;\n}\n\n/**\n * @deprecated This function does not support merged cells. Use {@link $insertTableColumnAtSelection} or {@link $insertTableColumnAtNode} instead.\n */\nfunction $insertTableColumn(tableNode, targetIndex, shouldInsertAfter = true, columnCount, table) {\n const tableRows = tableNode.getChildren();\n const tableCellsToBeInserted = [];\n for (let r = 0; r < tableRows.length; r++) {\n const currentTableRowNode = tableRows[r];\n if ($isTableRowNode(currentTableRowNode)) {\n for (let c = 0; c < columnCount; c++) {\n const tableRowChildren = currentTableRowNode.getChildren();\n if (targetIndex >= tableRowChildren.length || targetIndex < 0) {\n throw new Error('Table column target index out of range');\n }\n const targetCell = tableRowChildren[targetIndex];\n if (!$isTableCellNode(targetCell)) {\n formatDevErrorMessage(`Expected table cell`);\n }\n const {\n left,\n right\n } = $getTableCellSiblingsFromTableCellNode(targetCell, table);\n let headerState = TableCellHeaderStates.NO_STATUS;\n if (left && left.hasHeaderState(TableCellHeaderStates.ROW) || right && right.hasHeaderState(TableCellHeaderStates.ROW)) {\n headerState |= TableCellHeaderStates.ROW;\n }\n const newTableCell = $createTableCellNode(headerState);\n newTableCell.append($createParagraphNode());\n tableCellsToBeInserted.push({\n newTableCell,\n targetCell\n });\n }\n }\n }\n tableCellsToBeInserted.forEach(({\n newTableCell,\n targetCell\n }) => {\n if (shouldInsertAfter) {\n targetCell.insertAfter(newTableCell);\n } else {\n targetCell.insertBefore(newTableCell);\n }\n });\n return tableNode;\n}\n\n/**\n * Inserts a column before or after the current focus cell node,\n * taking into account any spans. If successful, returns the\n * first inserted cell node.\n */\nfunction $insertTableColumnAtSelection(insertAfter = true) {\n const selection = $getSelection();\n if (!($isRangeSelection(selection) || $isTableSelection(selection))) {\n formatDevErrorMessage(`Expected a RangeSelection or TableSelection`);\n }\n const anchor = selection.anchor.getNode();\n const focus = selection.focus.getNode();\n const [anchorCell] = $getNodeTriplet(anchor);\n const [focusCell,, grid] = $getNodeTriplet(focus);\n const [, focusCellMap, anchorCellMap] = $computeTableMap(grid, focusCell, anchorCell);\n const {\n startColumn: anchorStartColumn\n } = anchorCellMap;\n const {\n startColumn: focusStartColumn\n } = focusCellMap;\n if (insertAfter) {\n return $insertTableColumnAtNode(anchorStartColumn + anchorCell.__colSpan > focusStartColumn + focusCell.__colSpan ? anchorCell : focusCell, true);\n } else {\n return $insertTableColumnAtNode(focusStartColumn < anchorStartColumn ? focusCell : anchorCell, false);\n }\n}\n\n/**\n * @deprecated renamed to {@link $insertTableColumnAtSelection}\n */\nconst $insertTableColumn__EXPERIMENTAL = $insertTableColumnAtSelection;\n\n/**\n * Inserts a column before or after the given cell node,\n * taking into account any spans. If successful, returns the\n * first inserted cell node.\n */\nfunction $insertTableColumnAtNode(cellNode, insertAfter = true, shouldSetSelection = true) {\n const [,, grid] = $getNodeTriplet(cellNode);\n const [gridMap, cellMap] = $computeTableMap(grid, cellNode, cellNode);\n const rowCount = gridMap.length;\n const {\n startColumn\n } = cellMap;\n const insertAfterColumn = insertAfter ? startColumn + cellNode.__colSpan - 1 : startColumn - 1;\n const gridFirstChild = grid.getFirstChild();\n if (!$isTableRowNode(gridFirstChild)) {\n formatDevErrorMessage(`Expected firstTable child to be a row`);\n }\n let firstInsertedCell = null;\n function $createTableCellNodeForInsertTableColumn(headerState = TableCellHeaderStates.NO_STATUS) {\n const cell = $createTableCellNode(headerState).append($createParagraphNode());\n if (firstInsertedCell === null) {\n firstInsertedCell = cell;\n }\n return cell;\n }\n let loopRow = gridFirstChild;\n rowLoop: for (let i = 0; i < rowCount; i++) {\n if (i !== 0) {\n const currentRow = loopRow.getNextSibling();\n if (!$isTableRowNode(currentRow)) {\n formatDevErrorMessage(`Expected row nextSibling to be a row`);\n }\n loopRow = currentRow;\n }\n const rowMap = gridMap[i];\n const currentCellHeaderState = rowMap[insertAfterColumn < 0 ? 0 : insertAfterColumn].cell.__headerState;\n const headerState = getHeaderState(currentCellHeaderState, TableCellHeaderStates.ROW);\n if (insertAfterColumn < 0) {\n $insertFirst(loopRow, $createTableCellNodeForInsertTableColumn(headerState));\n continue;\n }\n const {\n cell: currentCell,\n startColumn: currentStartColumn,\n startRow: currentStartRow\n } = rowMap[insertAfterColumn];\n if (currentStartColumn + currentCell.__colSpan - 1 <= insertAfterColumn) {\n let insertAfterCell = currentCell;\n let insertAfterCellRowStart = currentStartRow;\n let prevCellIndex = insertAfterColumn;\n while (insertAfterCellRowStart !== i && insertAfterCell.__rowSpan > 1) {\n prevCellIndex -= currentCell.__colSpan;\n if (prevCellIndex >= 0) {\n const {\n cell: cell_,\n startRow: startRow_\n } = rowMap[prevCellIndex];\n insertAfterCell = cell_;\n insertAfterCellRowStart = startRow_;\n } else {\n loopRow.append($createTableCellNodeForInsertTableColumn(headerState));\n continue rowLoop;\n }\n }\n insertAfterCell.insertAfter($createTableCellNodeForInsertTableColumn(headerState));\n } else {\n currentCell.setColSpan(currentCell.__colSpan + 1);\n }\n }\n if (firstInsertedCell !== null && shouldSetSelection) {\n $moveSelectionToCell(firstInsertedCell);\n }\n const colWidths = grid.getColWidths();\n if (colWidths) {\n const newColWidths = [...colWidths];\n const columnIndex = insertAfterColumn < 0 ? 0 : insertAfterColumn;\n const newWidth = newColWidths[columnIndex];\n newColWidths.splice(columnIndex, 0, newWidth);\n grid.setColWidths(newColWidths);\n }\n return firstInsertedCell;\n}\n\n/**\n * @deprecated This function does not support merged cells. Use {@link $deleteTableColumnAtSelection} instead.\n */\nfunction $deleteTableColumn(tableNode, targetIndex) {\n const tableRows = tableNode.getChildren();\n for (let i = 0; i < tableRows.length; i++) {\n const currentTableRowNode = tableRows[i];\n if ($isTableRowNode(currentTableRowNode)) {\n const tableRowChildren = currentTableRowNode.getChildren();\n if (targetIndex >= tableRowChildren.length || targetIndex < 0) {\n throw new Error('Table column target index out of range');\n }\n tableRowChildren[targetIndex].remove();\n }\n }\n return tableNode;\n}\nfunction $deleteTableRowAtSelection() {\n const selection = $getSelection();\n if (!($isRangeSelection(selection) || $isTableSelection(selection))) {\n formatDevErrorMessage(`Expected a RangeSelection or TableSelection`);\n }\n const [anchor, focus] = selection.isBackward() ? [selection.focus.getNode(), selection.anchor.getNode()] : [selection.anchor.getNode(), selection.focus.getNode()];\n const [anchorCell,, grid] = $getNodeTriplet(anchor);\n const [focusCell] = $getNodeTriplet(focus);\n const [gridMap, anchorCellMap, focusCellMap] = $computeTableMap(grid, anchorCell, focusCell);\n const {\n startRow: anchorStartRow\n } = anchorCellMap;\n const {\n startRow: focusStartRow\n } = focusCellMap;\n const focusEndRow = focusStartRow + focusCell.__rowSpan - 1;\n if (gridMap.length === focusEndRow - anchorStartRow + 1) {\n // Empty grid\n grid.remove();\n return;\n }\n const columnCount = gridMap[0].length;\n const nextRow = gridMap[focusEndRow + 1];\n const nextRowNode = grid.getChildAtIndex(focusEndRow + 1);\n for (let row = focusEndRow; row >= anchorStartRow; row--) {\n for (let column = columnCount - 1; column >= 0; column--) {\n const {\n cell,\n startRow: cellStartRow,\n startColumn: cellStartColumn\n } = gridMap[row][column];\n if (cellStartColumn !== column) {\n // Don't repeat work for the same Cell\n continue;\n }\n // Rows overflowing top or bottom have to be trimmed\n if (cellStartRow < anchorStartRow || cellStartRow + cell.__rowSpan - 1 > focusEndRow) {\n const intersectionStart = Math.max(cellStartRow, anchorStartRow);\n const intersectionEnd = Math.min(cell.__rowSpan + cellStartRow - 1, focusEndRow);\n const overflowRowsCount = intersectionStart <= intersectionEnd ? intersectionEnd - intersectionStart + 1 : 0;\n cell.setRowSpan(cell.__rowSpan - overflowRowsCount);\n }\n // Rows overflowing bottom have to be moved to the next row\n if (cellStartRow >= anchorStartRow && cellStartRow + cell.__rowSpan - 1 > focusEndRow &&\n // Handle overflow only once\n row === focusEndRow) {\n if (!(nextRowNode !== null)) {\n formatDevErrorMessage(`Expected nextRowNode not to be null`);\n }\n let insertAfterCell = null;\n for (let columnIndex = 0; columnIndex < column; columnIndex++) {\n const currentCellMap = nextRow[columnIndex];\n const currentCell = currentCellMap.cell;\n // Checking the cell having startRow as same as nextRow\n if (currentCellMap.startRow === row + 1) {\n insertAfterCell = currentCell;\n }\n if (currentCell.__colSpan > 1) {\n columnIndex += currentCell.__colSpan - 1;\n }\n }\n if (insertAfterCell === null) {\n $insertFirst(nextRowNode, cell);\n } else {\n insertAfterCell.insertAfter(cell);\n }\n }\n }\n const rowNode = grid.getChildAtIndex(row);\n if (!$isTableRowNode(rowNode)) {\n formatDevErrorMessage(`Expected TableNode childAtIndex(${String(row)}) to be RowNode`);\n }\n rowNode.remove();\n }\n if (nextRow !== undefined) {\n const {\n cell\n } = nextRow[0];\n $moveSelectionToCell(cell);\n } else {\n const previousRow = gridMap[anchorStartRow - 1];\n const {\n cell\n } = previousRow[0];\n $moveSelectionToCell(cell);\n }\n}\n\n/**\n * @deprecated renamed to {@link $deleteTableRowAtSelection}\n */\nconst $deleteTableRow__EXPERIMENTAL = $deleteTableRowAtSelection;\nfunction $deleteTableColumnAtSelection() {\n const selection = $getSelection();\n if (!($isRangeSelection(selection) || $isTableSelection(selection))) {\n formatDevErrorMessage(`Expected a RangeSelection or TableSelection`);\n }\n const anchor = selection.anchor.getNode();\n const focus = selection.focus.getNode();\n const [anchorCell,, grid] = $getNodeTriplet(anchor);\n const [focusCell] = $getNodeTriplet(focus);\n const [gridMap, anchorCellMap, focusCellMap] = $computeTableMap(grid, anchorCell, focusCell);\n const {\n startColumn: anchorStartColumn\n } = anchorCellMap;\n const {\n startRow: focusStartRow,\n startColumn: focusStartColumn\n } = focusCellMap;\n const startColumn = Math.min(anchorStartColumn, focusStartColumn);\n const endColumn = Math.max(anchorStartColumn + anchorCell.__colSpan - 1, focusStartColumn + focusCell.__colSpan - 1);\n const selectedColumnCount = endColumn - startColumn + 1;\n const columnCount = gridMap[0].length;\n if (columnCount === endColumn - startColumn + 1) {\n // Empty grid\n grid.selectPrevious();\n grid.remove();\n return;\n }\n const rowCount = gridMap.length;\n for (let row = 0; row < rowCount; row++) {\n for (let column = startColumn; column <= endColumn; column++) {\n const {\n cell,\n startColumn: cellStartColumn\n } = gridMap[row][column];\n if (cellStartColumn < startColumn) {\n if (column === startColumn) {\n const overflowLeft = startColumn - cellStartColumn;\n // Overflowing left\n cell.setColSpan(cell.__colSpan -\n // Possible overflow right too\n Math.min(selectedColumnCount, cell.__colSpan - overflowLeft));\n }\n } else if (cellStartColumn + cell.__colSpan - 1 > endColumn) {\n if (column === endColumn) {\n // Overflowing right\n const inSelectedArea = endColumn - cellStartColumn + 1;\n cell.setColSpan(cell.__colSpan - inSelectedArea);\n }\n } else {\n cell.remove();\n }\n }\n }\n const focusRowMap = gridMap[focusStartRow];\n const nextColumn = anchorStartColumn > focusStartColumn ? focusRowMap[anchorStartColumn + anchorCell.__colSpan] : focusRowMap[focusStartColumn + focusCell.__colSpan];\n if (nextColumn !== undefined) {\n const {\n cell\n } = nextColumn;\n $moveSelectionToCell(cell);\n } else {\n const previousRow = focusStartColumn < anchorStartColumn ? focusRowMap[focusStartColumn - 1] : focusRowMap[anchorStartColumn - 1];\n const {\n cell\n } = previousRow;\n $moveSelectionToCell(cell);\n }\n const colWidths = grid.getColWidths();\n if (colWidths) {\n const newColWidths = [...colWidths];\n newColWidths.splice(startColumn, selectedColumnCount);\n grid.setColWidths(newColWidths);\n }\n}\n\n/**\n * @deprecated renamed to {@link $deleteTableColumnAtSelection}\n */\nconst $deleteTableColumn__EXPERIMENTAL = $deleteTableColumnAtSelection;\nfunction $moveSelectionToCell(cell) {\n const firstDescendant = cell.getFirstDescendant();\n if (firstDescendant == null) {\n cell.selectStart();\n } else {\n firstDescendant.getParentOrThrow().selectStart();\n }\n}\nfunction $insertFirst(parent, node) {\n const firstChild = parent.getFirstChild();\n if (firstChild !== null) {\n firstChild.insertBefore(node);\n } else {\n parent.append(node);\n }\n}\nfunction $mergeCells(cellNodes) {\n if (cellNodes.length === 0) {\n return null;\n }\n\n // Find the table node\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(cellNodes[0]);\n const [gridMap] = $computeTableMapSkipCellCheck(tableNode, null, null);\n\n // Find the boundaries of the selection including merged cells\n let minRow = Infinity;\n let maxRow = -Infinity;\n let minCol = Infinity;\n let maxCol = -Infinity;\n\n // First pass: find the actual boundaries considering merged cells\n const processedCells = new Set();\n for (const row of gridMap) {\n for (const mapCell of row) {\n if (!mapCell || !mapCell.cell) {\n continue;\n }\n const cellKey = mapCell.cell.getKey();\n if (processedCells.has(cellKey)) {\n continue;\n }\n if (cellNodes.some(cell => cell.is(mapCell.cell))) {\n processedCells.add(cellKey);\n // Get the actual position of this cell in the grid\n const cellStartRow = mapCell.startRow;\n const cellStartCol = mapCell.startColumn;\n const cellRowSpan = mapCell.cell.__rowSpan || 1;\n const cellColSpan = mapCell.cell.__colSpan || 1;\n\n // Update boundaries considering the cell's actual position and span\n minRow = Math.min(minRow, cellStartRow);\n maxRow = Math.max(maxRow, cellStartRow + cellRowSpan - 1);\n minCol = Math.min(minCol, cellStartCol);\n maxCol = Math.max(maxCol, cellStartCol + cellColSpan - 1);\n }\n }\n }\n\n // Validate boundaries\n if (minRow === Infinity || minCol === Infinity) {\n return null;\n }\n\n // The total span of the merged cell\n const totalRowSpan = maxRow - minRow + 1;\n const totalColSpan = maxCol - minCol + 1;\n\n // Use the top-left cell as the target cell\n const targetCellMap = gridMap[minRow][minCol];\n if (!targetCellMap.cell) {\n return null;\n }\n const targetCell = targetCellMap.cell;\n\n // Set the spans for the target cell\n targetCell.setColSpan(totalColSpan);\n targetCell.setRowSpan(totalRowSpan);\n\n // Move content from other cells to the target cell\n const seenCells = new Set([targetCell.getKey()]);\n\n // Second pass: merge content and remove other cells\n for (let row = minRow; row <= maxRow; row++) {\n for (let col = minCol; col <= maxCol; col++) {\n const mapCell = gridMap[row][col];\n if (!mapCell.cell) {\n continue;\n }\n const currentCell = mapCell.cell;\n const key = currentCell.getKey();\n if (!seenCells.has(key)) {\n seenCells.add(key);\n const isEmpty = $cellContainsEmptyParagraph(currentCell);\n if (!isEmpty) {\n targetCell.append(...currentCell.getChildren());\n }\n currentCell.remove();\n }\n }\n }\n\n // Ensure target cell has content\n if (targetCell.getChildrenSize() === 0) {\n targetCell.append($createParagraphNode());\n }\n return targetCell;\n}\nfunction $cellContainsEmptyParagraph(cell) {\n if (cell.getChildrenSize() !== 1) {\n return false;\n }\n const firstChild = cell.getFirstChildOrThrow();\n if (!$isParagraphNode(firstChild) || !firstChild.isEmpty()) {\n return false;\n }\n return true;\n}\nfunction $unmergeCell() {\n const selection = $getSelection();\n if (!($isRangeSelection(selection) || $isTableSelection(selection))) {\n formatDevErrorMessage(`Expected a RangeSelection or TableSelection`);\n }\n const anchor = selection.anchor.getNode();\n const cellNode = $findMatchingParent(anchor, $isTableCellNode);\n if (!$isTableCellNode(cellNode)) {\n formatDevErrorMessage(`Expected to find a parent TableCellNode`);\n }\n return $unmergeCellNode(cellNode);\n}\nfunction $unmergeCellNode(cellNode) {\n const [cell, row, grid] = $getNodeTriplet(cellNode);\n const colSpan = cell.__colSpan;\n const rowSpan = cell.__rowSpan;\n if (colSpan === 1 && rowSpan === 1) {\n return;\n }\n const [map, cellMap] = $computeTableMap(grid, cell, cell);\n const {\n startColumn,\n startRow\n } = cellMap;\n // Create a heuristic for what the style of the unmerged cells should be\n // based on whether every row or column already had that state before the\n // unmerge.\n const baseColStyle = cell.__headerState & TableCellHeaderStates.COLUMN;\n const colStyles = Array.from({\n length: colSpan\n }, (_v, i) => {\n let colStyle = baseColStyle;\n for (let rowIdx = 0; colStyle !== 0 && rowIdx < map.length; rowIdx++) {\n colStyle &= map[rowIdx][i + startColumn].cell.__headerState;\n }\n return colStyle;\n });\n const baseRowStyle = cell.__headerState & TableCellHeaderStates.ROW;\n const rowStyles = Array.from({\n length: rowSpan\n }, (_v, i) => {\n let rowStyle = baseRowStyle;\n for (let colIdx = 0; rowStyle !== 0 && colIdx < map[0].length; colIdx++) {\n rowStyle &= map[i + startRow][colIdx].cell.__headerState;\n }\n return rowStyle;\n });\n if (colSpan > 1) {\n for (let i = 1; i < colSpan; i++) {\n cell.insertAfter($createTableCellNode(colStyles[i] | rowStyles[0]).append($createParagraphNode()));\n }\n cell.setColSpan(1);\n }\n if (rowSpan > 1) {\n let currentRowNode;\n for (let i = 1; i < rowSpan; i++) {\n const currentRow = startRow + i;\n const currentRowMap = map[currentRow];\n currentRowNode = (currentRowNode || row).getNextSibling();\n if (!$isTableRowNode(currentRowNode)) {\n formatDevErrorMessage(`Expected row next sibling to be a row`);\n }\n let insertAfterCell = null;\n for (let column = 0; column < startColumn; column++) {\n const currentCellMap = currentRowMap[column];\n const currentCell = currentCellMap.cell;\n if (currentCellMap.startRow === currentRow) {\n insertAfterCell = currentCell;\n }\n if (currentCell.__colSpan > 1) {\n column += currentCell.__colSpan - 1;\n }\n }\n if (insertAfterCell === null) {\n for (let j = colSpan - 1; j >= 0; j--) {\n $insertFirst(currentRowNode, $createTableCellNode(colStyles[j] | rowStyles[i]).append($createParagraphNode()));\n }\n } else {\n for (let j = colSpan - 1; j >= 0; j--) {\n insertAfterCell.insertAfter($createTableCellNode(colStyles[j] | rowStyles[i]).append($createParagraphNode()));\n }\n }\n }\n cell.setRowSpan(1);\n }\n}\nfunction $computeTableMap(tableNode, cellA, cellB) {\n const [tableMap, cellAValue, cellBValue] = $computeTableMapSkipCellCheck(tableNode, cellA, cellB);\n if (!(cellAValue !== null)) {\n formatDevErrorMessage(`Anchor not found in Table`);\n }\n if (!(cellBValue !== null)) {\n formatDevErrorMessage(`Focus not found in Table`);\n }\n return [tableMap, cellAValue, cellBValue];\n}\nfunction $computeTableMapSkipCellCheck(tableNode, cellA, cellB) {\n const tableMap = [];\n let cellAValue = null;\n let cellBValue = null;\n function getMapRow(i) {\n let row = tableMap[i];\n if (row === undefined) {\n tableMap[i] = row = [];\n }\n return row;\n }\n const gridChildren = tableNode.getChildren();\n for (let rowIdx = 0; rowIdx < gridChildren.length; rowIdx++) {\n const row = gridChildren[rowIdx];\n if (!$isTableRowNode(row)) {\n formatDevErrorMessage(`Expected TableNode children to be TableRowNode`);\n }\n const startMapRow = getMapRow(rowIdx);\n for (let cell = row.getFirstChild(), colIdx = 0; cell != null; cell = cell.getNextSibling()) {\n if (!$isTableCellNode(cell)) {\n formatDevErrorMessage(`Expected TableRowNode children to be TableCellNode`);\n } // Skip past any columns that were merged from a higher row\n while (startMapRow[colIdx] !== undefined) {\n colIdx++;\n }\n const value = {\n cell,\n startColumn: colIdx,\n startRow: rowIdx\n };\n const {\n __rowSpan: rowSpan,\n __colSpan: colSpan\n } = cell;\n for (let j = 0; j < rowSpan; j++) {\n if (rowIdx + j >= gridChildren.length) {\n // The table is non-rectangular with a rowSpan\n // below the last <tr> in the table.\n // We should probably handle this with a node transform\n // to ensure that tables are always rectangular but this\n // will avoid crashes such as #6584\n // Note that there are probably still latent bugs\n // regarding colSpan or general cell count mismatches.\n break;\n }\n const mapRow = getMapRow(rowIdx + j);\n for (let i = 0; i < colSpan; i++) {\n mapRow[colIdx + i] = value;\n }\n }\n if (cellA !== null && cellAValue === null && cellA.is(cell)) {\n cellAValue = value;\n }\n if (cellB !== null && cellBValue === null && cellB.is(cell)) {\n cellBValue = value;\n }\n }\n }\n return [tableMap, cellAValue, cellBValue];\n}\nfunction $getNodeTriplet(source) {\n let cell;\n if (source instanceof TableCellNode) {\n cell = source;\n } else if ('__type' in source) {\n const cell_ = $findMatchingParent(source, $isTableCellNode);\n if (!$isTableCellNode(cell_)) {\n formatDevErrorMessage(`Expected to find a parent TableCellNode`);\n }\n cell = cell_;\n } else {\n const cell_ = $findMatchingParent(source.getNode(), $isTableCellNode);\n if (!$isTableCellNode(cell_)) {\n formatDevErrorMessage(`Expected to find a parent TableCellNode`);\n }\n cell = cell_;\n }\n const row = cell.getParent();\n if (!$isTableRowNode(row)) {\n formatDevErrorMessage(`Expected TableCellNode to have a parent TableRowNode`);\n }\n const grid = row.getParent();\n if (!$isTableNode(grid)) {\n formatDevErrorMessage(`Expected TableRowNode to have a parent TableNode`);\n }\n return [cell, row, grid];\n}\nfunction $computeTableCellRectSpans(map, boundary) {\n const {\n minColumn,\n maxColumn,\n minRow,\n maxRow\n } = boundary;\n let topSpan = 1;\n let leftSpan = 1;\n let rightSpan = 1;\n let bottomSpan = 1;\n const topRow = map[minRow];\n const bottomRow = map[maxRow];\n for (let col = minColumn; col <= maxColumn; col++) {\n topSpan = Math.max(topSpan, topRow[col].cell.__rowSpan);\n bottomSpan = Math.max(bottomSpan, bottomRow[col].cell.__rowSpan);\n }\n for (let row = minRow; row <= maxRow; row++) {\n leftSpan = Math.max(leftSpan, map[row][minColumn].cell.__colSpan);\n rightSpan = Math.max(rightSpan, map[row][maxColumn].cell.__colSpan);\n }\n return {\n bottomSpan,\n leftSpan,\n rightSpan,\n topSpan\n };\n}\nfunction $computeTableCellRectBoundary(map, cellAMap, cellBMap) {\n // Initial boundaries based on the anchor and focus cells\n let minColumn = Math.min(cellAMap.startColumn, cellBMap.startColumn);\n let minRow = Math.min(cellAMap.startRow, cellBMap.startRow);\n let maxColumn = Math.max(cellAMap.startColumn + cellAMap.cell.__colSpan - 1, cellBMap.startColumn + cellBMap.cell.__colSpan - 1);\n let maxRow = Math.max(cellAMap.startRow + cellAMap.cell.__rowSpan - 1, cellBMap.startRow + cellBMap.cell.__rowSpan - 1);\n\n // Keep expanding until we have a complete rectangle\n let hasChanges;\n do {\n hasChanges = false;\n\n // Check all cells in the table\n for (let row = 0; row < map.length; row++) {\n for (let col = 0; col < map[0].length; col++) {\n const cell = map[row][col];\n if (!cell) {\n continue;\n }\n const cellEndCol = cell.startColumn + cell.cell.__colSpan - 1;\n const cellEndRow = cell.startRow + cell.cell.__rowSpan - 1;\n\n // Check if this cell intersects with our current selection rectangle\n const intersectsHorizontally = cell.startColumn <= maxColumn && cellEndCol >= minColumn;\n const intersectsVertically = cell.startRow <= maxRow && cellEndRow >= minRow;\n\n // If the cell intersects either horizontally or vertically\n if (intersectsHorizontally && intersectsVertically) {\n // Expand boundaries to include this cell completely\n const newMinColumn = Math.min(minColumn, cell.startColumn);\n const newMaxColumn = Math.max(maxColumn, cellEndCol);\n const newMinRow = Math.min(minRow, cell.startRow);\n const newMaxRow = Math.max(maxRow, cellEndRow);\n\n // Check if boundaries changed\n if (newMinColumn !== minColumn || newMaxColumn !== maxColumn || newMinRow !== minRow || newMaxRow !== maxRow) {\n minColumn = newMinColumn;\n maxColumn = newMaxColumn;\n minRow = newMinRow;\n maxRow = newMaxRow;\n hasChanges = true;\n }\n }\n }\n }\n } while (hasChanges);\n return {\n maxColumn,\n maxRow,\n minColumn,\n minRow\n };\n}\nfunction $getTableCellNodeRect(tableCellNode) {\n const [cellNode,, gridNode] = $getNodeTriplet(tableCellNode);\n const rows = gridNode.getChildren();\n const rowCount = rows.length;\n const columnCount = rows[0].getChildren().length;\n\n // Create a matrix of the same size as the table to track the position of each cell\n const cellMatrix = new Array(rowCount);\n for (let i = 0; i < rowCount; i++) {\n cellMatrix[i] = new Array(columnCount);\n }\n for (let rowIndex = 0; rowIndex < rowCount; rowIndex++) {\n const row = rows[rowIndex];\n const cells = row.getChildren();\n let columnIndex = 0;\n for (let cellIndex = 0; cellIndex < cells.length; cellIndex++) {\n // Find the next available position in the matrix, skip the position of merged cells\n while (cellMatrix[rowIndex][columnIndex]) {\n columnIndex++;\n }\n const cell = cells[cellIndex];\n const rowSpan = cell.__rowSpan || 1;\n const colSpan = cell.__colSpan || 1;\n\n // Put the cell into the corresponding position in the matrix\n for (let i = 0; i < rowSpan; i++) {\n for (let j = 0; j < colSpan; j++) {\n cellMatrix[rowIndex + i][columnIndex + j] = cell;\n }\n }\n\n // Return to the original index, row span and column span of the cell.\n if (cellNode === cell) {\n return {\n colSpan,\n columnIndex,\n rowIndex,\n rowSpan\n };\n }\n columnIndex += colSpan;\n }\n }\n return null;\n}\n\nfunction $getCellNodes(tableSelection) {\n const [[anchorNode, anchorCell, anchorRow, anchorTable], [focusNode, focusCell, focusRow, focusTable]] = ['anchor', 'focus'].map(k => {\n const node = tableSelection[k].getNode();\n const cellNode = $findMatchingParent(node, $isTableCellNode);\n if (!$isTableCellNode(cellNode)) {\n formatDevErrorMessage(`Expected TableSelection ${k} to be (or a child of) TableCellNode, got key ${node.getKey()} of type ${node.getType()}`);\n }\n const rowNode = cellNode.getParent();\n if (!$isTableRowNode(rowNode)) {\n formatDevErrorMessage(`Expected TableSelection ${k} cell parent to be a TableRowNode`);\n }\n const tableNode = rowNode.getParent();\n if (!$isTableNode(tableNode)) {\n formatDevErrorMessage(`Expected TableSelection ${k} row parent to be a TableNode`);\n }\n return [node, cellNode, rowNode, tableNode];\n });\n // TODO: nested tables may violate this\n if (!anchorTable.is(focusTable)) {\n formatDevErrorMessage(`Expected TableSelection anchor and focus to be in the same table`);\n }\n return {\n anchorCell,\n anchorNode,\n anchorRow,\n anchorTable,\n focusCell,\n focusNode,\n focusRow,\n focusTable\n };\n}\nclass TableSelection {\n tableKey;\n anchor;\n focus;\n _cachedNodes;\n dirty;\n constructor(tableKey, anchor, focus) {\n this.anchor = anchor;\n this.focus = focus;\n anchor._selection = this;\n focus._selection = this;\n this._cachedNodes = null;\n this.dirty = false;\n this.tableKey = tableKey;\n }\n getStartEndPoints() {\n return [this.anchor, this.focus];\n }\n\n /**\n * {@link $createTableSelection} unfortunately makes it very easy to create\n * nonsense selections, so we have a method to see if the selection probably\n * makes sense.\n *\n * @returns true if the TableSelection is (probably) valid\n */\n isValid() {\n if (this.tableKey === 'root' || this.anchor.key === 'root' || this.anchor.type !== 'element' || this.focus.key === 'root' || this.focus.type !== 'element') {\n return false;\n }\n\n // Check if the referenced nodes still exist in the editor\n const tableNode = $getNodeByKey(this.tableKey);\n const anchorNode = $getNodeByKey(this.anchor.key);\n const focusNode = $getNodeByKey(this.focus.key);\n return tableNode !== null && anchorNode !== null && focusNode !== null;\n }\n\n /**\n * Returns whether the Selection is \"backwards\", meaning the focus\n * logically precedes the anchor in the EditorState.\n * @returns true if the Selection is backwards, false otherwise.\n */\n isBackward() {\n return this.focus.isBefore(this.anchor);\n }\n getCachedNodes() {\n return this._cachedNodes;\n }\n setCachedNodes(nodes) {\n this._cachedNodes = nodes;\n }\n is(selection) {\n return $isTableSelection(selection) && this.tableKey === selection.tableKey && this.anchor.is(selection.anchor) && this.focus.is(selection.focus);\n }\n set(tableKey, anchorCellKey, focusCellKey) {\n // note: closure compiler's acorn does not support ||=\n this.dirty = this.dirty || tableKey !== this.tableKey || anchorCellKey !== this.anchor.key || focusCellKey !== this.focus.key;\n this.tableKey = tableKey;\n this.anchor.key = anchorCellKey;\n this.focus.key = focusCellKey;\n this._cachedNodes = null;\n }\n clone() {\n return new TableSelection(this.tableKey, $createPoint(this.anchor.key, this.anchor.offset, this.anchor.type), $createPoint(this.focus.key, this.focus.offset, this.focus.type));\n }\n isCollapsed() {\n return false;\n }\n extract() {\n return this.getNodes();\n }\n insertRawText(text) {\n // Do nothing?\n }\n insertText() {\n // Do nothing?\n }\n\n /**\n * Returns whether the provided TextFormatType is present on the Selection.\n * This will be true if any paragraph in table cells has the specified format.\n *\n * @param type the TextFormatType to check for.\n * @returns true if the provided format is currently toggled on on the Selection, false otherwise.\n */\n hasFormat(type) {\n let format = 0;\n const cellNodes = this.getNodes().filter($isTableCellNode);\n cellNodes.forEach(cellNode => {\n const paragraph = cellNode.getFirstChild();\n if ($isParagraphNode(paragraph)) {\n format |= paragraph.getTextFormat();\n }\n });\n const formatFlag = TEXT_TYPE_TO_FORMAT[type];\n return (format & formatFlag) !== 0;\n }\n insertNodes(nodes) {\n const focusNode = this.focus.getNode();\n if (!$isElementNode(focusNode)) {\n formatDevErrorMessage(`Expected TableSelection focus to be an ElementNode`);\n }\n const selection = $normalizeSelection__EXPERIMENTAL(focusNode.select(0, focusNode.getChildrenSize()));\n selection.insertNodes(nodes);\n }\n\n // TODO Deprecate this method. It's confusing when used with colspan|rowspan\n getShape() {\n const {\n anchorCell,\n focusCell\n } = $getCellNodes(this);\n const anchorCellNodeRect = $getTableCellNodeRect(anchorCell);\n if (!(anchorCellNodeRect !== null)) {\n formatDevErrorMessage(`getCellRect: expected to find AnchorNode`);\n }\n const focusCellNodeRect = $getTableCellNodeRect(focusCell);\n if (!(focusCellNodeRect !== null)) {\n formatDevErrorMessage(`getCellRect: expected to find focusCellNode`);\n }\n const startX = Math.min(anchorCellNodeRect.columnIndex, focusCellNodeRect.columnIndex);\n const stopX = Math.max(anchorCellNodeRect.columnIndex + anchorCellNodeRect.colSpan - 1, focusCellNodeRect.columnIndex + focusCellNodeRect.colSpan - 1);\n const startY = Math.min(anchorCellNodeRect.rowIndex, focusCellNodeRect.rowIndex);\n const stopY = Math.max(anchorCellNodeRect.rowIndex + anchorCellNodeRect.rowSpan - 1, focusCellNodeRect.rowIndex + focusCellNodeRect.rowSpan - 1);\n return {\n fromX: Math.min(startX, stopX),\n fromY: Math.min(startY, stopY),\n toX: Math.max(startX, stopX),\n toY: Math.max(startY, stopY)\n };\n }\n getNodes() {\n if (!this.isValid()) {\n return [];\n }\n const cachedNodes = this._cachedNodes;\n if (cachedNodes !== null) {\n return cachedNodes;\n }\n const {\n anchorTable: tableNode,\n anchorCell,\n focusCell\n } = $getCellNodes(this);\n const focusCellGrid = focusCell.getParents()[1];\n if (focusCellGrid !== tableNode) {\n if (!tableNode.isParentOf(focusCell)) {\n // focus is on higher Grid level than anchor\n const gridParent = tableNode.getParent();\n if (!(gridParent != null)) {\n formatDevErrorMessage(`Expected gridParent to have a parent`);\n }\n this.set(this.tableKey, gridParent.getKey(), focusCell.getKey());\n } else {\n // anchor is on higher Grid level than focus\n const focusCellParent = focusCellGrid.getParent();\n if (!(focusCellParent != null)) {\n formatDevErrorMessage(`Expected focusCellParent to have a parent`);\n }\n this.set(this.tableKey, focusCell.getKey(), focusCellParent.getKey());\n }\n return this.getNodes();\n }\n\n // TODO Mapping the whole Grid every time not efficient. We need to compute the entire state only\n // once (on load) and iterate on it as updates occur. However, to do this we need to have the\n // ability to store a state. Killing TableSelection and moving the logic to the plugin would make\n // this possible.\n const [map, cellAMap, cellBMap] = $computeTableMap(tableNode, anchorCell, focusCell);\n const {\n minColumn,\n maxColumn,\n minRow,\n maxRow\n } = $computeTableCellRectBoundary(map, cellAMap, cellBMap);\n\n // We use a Map here because merged cells in the grid would otherwise\n // show up multiple times in the nodes array\n const nodeMap = new Map([[tableNode.getKey(), tableNode]]);\n let lastRow = null;\n for (let i = minRow; i <= maxRow; i++) {\n for (let j = minColumn; j <= maxColumn; j++) {\n const {\n cell\n } = map[i][j];\n const currentRow = cell.getParent();\n if (!$isTableRowNode(currentRow)) {\n formatDevErrorMessage(`Expected TableCellNode parent to be a TableRowNode`);\n }\n if (currentRow !== lastRow) {\n nodeMap.set(currentRow.getKey(), currentRow);\n lastRow = currentRow;\n }\n if (!nodeMap.has(cell.getKey())) {\n $visitRecursively(cell, childNode => {\n nodeMap.set(childNode.getKey(), childNode);\n });\n }\n }\n }\n const nodes = Array.from(nodeMap.values());\n if (!isCurrentlyReadOnlyMode()) {\n this._cachedNodes = nodes;\n }\n return nodes;\n }\n getTextContent() {\n const nodes = this.getNodes().filter(node => $isTableCellNode(node));\n let textContent = '';\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n const row = node.__parent;\n const nextRow = (nodes[i + 1] || {}).__parent;\n textContent += node.getTextContent() + (nextRow !== row ? '\\n' : '\\t');\n }\n return textContent;\n }\n}\nfunction $isTableSelection(x) {\n return x instanceof TableSelection;\n}\nfunction $createTableSelection() {\n // TODO this is a suboptimal design, it doesn't make sense to have\n // a table selection that isn't associated with a table. This\n // constructor should have required arguments and in true we\n // should check that they point to a table and are element points to\n // cell nodes of that table.\n const anchor = $createPoint('root', 0, 'element');\n const focus = $createPoint('root', 0, 'element');\n return new TableSelection('root', anchor, focus);\n}\nfunction $createTableSelectionFrom(tableNode, anchorCell, focusCell) {\n const tableNodeKey = tableNode.getKey();\n const anchorCellKey = anchorCell.getKey();\n const focusCellKey = focusCell.getKey();\n {\n if (!tableNode.isAttached()) {\n formatDevErrorMessage(`$createTableSelectionFrom: tableNode ${tableNodeKey} is not attached`);\n }\n if (!tableNode.is($findTableNode(anchorCell))) {\n formatDevErrorMessage(`$createTableSelectionFrom: anchorCell ${anchorCellKey} is not in table ${tableNodeKey}`);\n }\n if (!tableNode.is($findTableNode(focusCell))) {\n formatDevErrorMessage(`$createTableSelectionFrom: focusCell ${focusCellKey} is not in table ${tableNodeKey}`);\n } // TODO: Check for rectangular grid\n }\n const prevSelection = $getSelection();\n const nextSelection = $isTableSelection(prevSelection) ? prevSelection.clone() : $createTableSelection();\n nextSelection.set(tableNode.getKey(), anchorCell.getKey(), focusCell.getKey());\n return nextSelection;\n}\n\n/**\n * Depth first visitor\n * @param node The starting node\n * @param $visit The function to call for each node. If the function returns false, then children of this node will not be explored\n */\nfunction $visitRecursively(node, $visit) {\n const stack = [[node]];\n for (let currentArray = stack.at(-1); currentArray !== undefined && stack.length > 0; currentArray = stack.at(-1)) {\n const currentNode = currentArray.pop();\n if (currentNode === undefined) {\n stack.pop();\n } else if ($visit(currentNode) !== false && $isElementNode(currentNode)) {\n stack.push(currentNode.getChildren());\n }\n }\n}\n\nfunction $getTableAndElementByKey(tableNodeKey, editor = $getEditor()) {\n const tableNode = $getNodeByKey(tableNodeKey);\n if (!$isTableNode(tableNode)) {\n formatDevErrorMessage(`TableObserver: Expected tableNodeKey ${tableNodeKey} to be a TableNode`);\n }\n const tableElement = getTableElement(tableNode, editor.getElementByKey(tableNodeKey));\n if (!(tableElement !== null)) {\n formatDevErrorMessage(`TableObserver: Expected to find TableElement in DOM for key ${tableNodeKey}`);\n }\n return {\n tableElement,\n tableNode\n };\n}\nclass TableObserver {\n focusX;\n focusY;\n listenersToRemove;\n table;\n isHighlightingCells;\n anchorX;\n anchorY;\n tableNodeKey;\n anchorCell;\n focusCell;\n anchorCellNodeKey;\n focusCellNodeKey;\n editor;\n tableSelection;\n hasHijackedSelectionStyles;\n isSelecting;\n pointerType;\n shouldCheckSelection;\n abortController;\n listenerOptions;\n nextFocus;\n constructor(editor, tableNodeKey) {\n this.isHighlightingCells = false;\n this.anchorX = -1;\n this.anchorY = -1;\n this.focusX = -1;\n this.focusY = -1;\n this.listenersToRemove = new Set();\n this.tableNodeKey = tableNodeKey;\n this.editor = editor;\n this.table = {\n columns: 0,\n domRows: [],\n rows: 0\n };\n this.tableSelection = null;\n this.anchorCellNodeKey = null;\n this.focusCellNodeKey = null;\n this.anchorCell = null;\n this.focusCell = null;\n this.hasHijackedSelectionStyles = false;\n this.isSelecting = false;\n this.pointerType = null;\n this.shouldCheckSelection = false;\n this.abortController = new AbortController();\n this.listenerOptions = {\n signal: this.abortController.signal\n };\n this.nextFocus = null;\n this.trackTable();\n }\n getTable() {\n return this.table;\n }\n removeListeners() {\n this.abortController.abort('removeListeners');\n Array.from(this.listenersToRemove).forEach(removeListener => removeListener());\n this.listenersToRemove.clear();\n }\n $lookup() {\n return $getTableAndElementByKey(this.tableNodeKey, this.editor);\n }\n trackTable() {\n const observer = new MutationObserver(records => {\n this.editor.getEditorState().read(() => {\n let gridNeedsRedraw = false;\n for (let i = 0; i < records.length; i++) {\n const record = records[i];\n const target = record.target;\n const nodeName = target.nodeName;\n if (nodeName === 'TABLE' || nodeName === 'TBODY' || nodeName === 'THEAD' || nodeName === 'TR') {\n gridNeedsRedraw = true;\n break;\n }\n }\n if (!gridNeedsRedraw) {\n return;\n }\n const {\n tableNode,\n tableElement\n } = this.$lookup();\n this.table = getTable(tableNode, tableElement);\n }, {\n editor: this.editor\n });\n });\n this.editor.getEditorState().read(() => {\n const {\n tableNode,\n tableElement\n } = this.$lookup();\n this.table = getTable(tableNode, tableElement);\n observer.observe(tableElement, {\n attributes: true,\n childList: true,\n subtree: true\n });\n }, {\n editor: this.editor\n });\n }\n $clearHighlight() {\n const editor = this.editor;\n this.isHighlightingCells = false;\n this.anchorX = -1;\n this.anchorY = -1;\n this.focusX = -1;\n this.focusY = -1;\n this.tableSelection = null;\n this.anchorCellNodeKey = null;\n this.focusCellNodeKey = null;\n this.anchorCell = null;\n this.focusCell = null;\n this.hasHijackedSelectionStyles = false;\n this.$enableHighlightStyle();\n const {\n tableNode,\n tableElement\n } = this.$lookup();\n const grid = getTable(tableNode, tableElement);\n $updateDOMForSelection(editor, grid, null);\n if ($getSelection() !== null) {\n $setSelection(null);\n editor.dispatchCommand(SELECTION_CHANGE_COMMAND, undefined);\n }\n }\n $enableHighlightStyle() {\n const editor = this.editor;\n const {\n tableElement\n } = this.$lookup();\n removeClassNamesFromElement(tableElement, editor._config.theme.tableSelection);\n tableElement.classList.remove('disable-selection');\n this.hasHijackedSelectionStyles = false;\n }\n $disableHighlightStyle() {\n const {\n tableElement\n } = this.$lookup();\n addClassNamesToElement(tableElement, this.editor._config.theme.tableSelection);\n this.hasHijackedSelectionStyles = true;\n }\n $updateTableTableSelection(selection) {\n if (selection !== null) {\n if (!(selection.tableKey === this.tableNodeKey)) {\n formatDevErrorMessage(`TableObserver.$updateTableTableSelection: selection.tableKey !== this.tableNodeKey ('${selection.tableKey}' !== '${this.tableNodeKey}')`);\n }\n const editor = this.editor;\n this.tableSelection = selection;\n this.isHighlightingCells = true;\n this.$disableHighlightStyle();\n this.updateDOMSelection();\n $updateDOMForSelection(editor, this.table, this.tableSelection);\n } else {\n this.$clearHighlight();\n }\n }\n\n /**\n * @internal\n * Firefox has a strange behavior where pressing the down arrow key from\n * above the table will move the caret after the table and then lexical\n * will select the last cell instead of the first.\n * We do still want to let the browser handle caret movement but we will\n * use this property to \"tag\" the update so that we can recheck the\n * selection after the event is processed.\n */\n setShouldCheckSelection() {\n this.shouldCheckSelection = true;\n }\n /**\n * @internal\n */\n getAndClearShouldCheckSelection() {\n if (this.shouldCheckSelection) {\n this.shouldCheckSelection = false;\n return true;\n }\n return false;\n }\n\n /**\n * @internal\n * When handling mousemove events we track what the focus cell should be, but\n * the DOM selection may end up somewhere else entirely. We don't have an elegant\n * way to handle this after the DOM selection has been resolved in a\n * SELECTION_CHANGE_COMMAND callback.\n */\n setNextFocus(nextFocus) {\n this.nextFocus = nextFocus;\n }\n\n /** @internal */\n getAndClearNextFocus() {\n const {\n nextFocus\n } = this;\n if (nextFocus !== null) {\n this.nextFocus = null;\n }\n return nextFocus;\n }\n\n /** @internal */\n updateDOMSelection() {\n if (this.anchorCell !== null && this.focusCell !== null) {\n const domSelection = getDOMSelection(this.editor._window);\n // We are not using a native selection for tables, and if we\n // set one then the reconciler will undo it.\n // TODO - it would make sense to have one so that native\n // copy/paste worked. Right now we have to emulate with\n // keyboard events but it won't fire if triggered from the menu\n if (domSelection && domSelection.rangeCount > 0) {\n domSelection.removeAllRanges();\n }\n }\n }\n $setFocusCellForSelection(cell, ignoreStart = false) {\n const editor = this.editor;\n const {\n tableNode\n } = this.$lookup();\n const cellX = cell.x;\n const cellY = cell.y;\n this.focusCell = cell;\n if (!this.isHighlightingCells && (this.anchorX !== cellX || this.anchorY !== cellY || ignoreStart)) {\n this.isHighlightingCells = true;\n this.$disableHighlightStyle();\n } else if (cellX === this.focusX && cellY === this.focusY) {\n return false;\n }\n this.focusX = cellX;\n this.focusY = cellY;\n if (this.isHighlightingCells) {\n const focusTableCellNode = $getNearestTableCellInTableFromDOMNode(tableNode, cell.elem);\n if (this.tableSelection != null && this.anchorCellNodeKey != null && focusTableCellNode !== null) {\n this.focusCellNodeKey = focusTableCellNode.getKey();\n this.tableSelection = $createTableSelectionFrom(tableNode, this.$getAnchorTableCellOrThrow(), focusTableCellNode);\n $setSelection(this.tableSelection);\n editor.dispatchCommand(SELECTION_CHANGE_COMMAND, undefined);\n $updateDOMForSelection(editor, this.table, this.tableSelection);\n return true;\n }\n }\n return false;\n }\n $getAnchorTableCell() {\n return this.anchorCellNodeKey ? $getNodeByKey(this.anchorCellNodeKey) : null;\n }\n $getAnchorTableCellOrThrow() {\n const anchorTableCell = this.$getAnchorTableCell();\n if (!(anchorTableCell !== null)) {\n formatDevErrorMessage(`TableObserver anchorTableCell is null`);\n }\n return anchorTableCell;\n }\n $getFocusTableCell() {\n return this.focusCellNodeKey ? $getNodeByKey(this.focusCellNodeKey) : null;\n }\n $getFocusTableCellOrThrow() {\n const focusTableCell = this.$getFocusTableCell();\n if (!(focusTableCell !== null)) {\n formatDevErrorMessage(`TableObserver focusTableCell is null`);\n }\n return focusTableCell;\n }\n $setAnchorCellForSelection(cell) {\n this.isHighlightingCells = false;\n this.anchorCell = cell;\n this.anchorX = cell.x;\n this.anchorY = cell.y;\n const {\n tableNode\n } = this.$lookup();\n const anchorTableCellNode = $getNearestTableCellInTableFromDOMNode(tableNode, cell.elem);\n if (anchorTableCellNode !== null) {\n const anchorNodeKey = anchorTableCellNode.getKey();\n this.tableSelection = this.tableSelection != null ? this.tableSelection.clone() : $createTableSelection();\n this.anchorCellNodeKey = anchorNodeKey;\n }\n }\n $formatCells(type) {\n const selection = $getSelection();\n if (!$isTableSelection(selection)) {\n formatDevErrorMessage(`Expected Table selection`);\n }\n const formatSelection = $createRangeSelection();\n const anchor = formatSelection.anchor;\n const focus = formatSelection.focus;\n const cellNodes = selection.getNodes().filter($isTableCellNode);\n if (!(cellNodes.length > 0)) {\n formatDevErrorMessage(`No table cells present`);\n }\n const paragraph = cellNodes[0].getFirstChild();\n const alignFormatWith = $isParagraphNode(paragraph) ? paragraph.getFormatFlags(type, null) : null;\n cellNodes.forEach(cellNode => {\n anchor.set(cellNode.getKey(), 0, 'element');\n focus.set(cellNode.getKey(), cellNode.getChildrenSize(), 'element');\n formatSelection.formatText(type, alignFormatWith);\n });\n $setSelection(selection);\n this.editor.dispatchCommand(SELECTION_CHANGE_COMMAND, undefined);\n }\n $clearText() {\n const {\n editor\n } = this;\n const tableNode = $getNodeByKey(this.tableNodeKey);\n if (!$isTableNode(tableNode)) {\n throw new Error('Expected TableNode.');\n }\n const selection = $getSelection();\n if (!$isTableSelection(selection)) {\n formatDevErrorMessage(`Expected TableSelection`);\n }\n const selectedNodes = selection.getNodes().filter($isTableCellNode);\n\n // Check if the entire table is selected by verifying first and last cells\n const firstRow = tableNode.getFirstChild();\n const lastRow = tableNode.getLastChild();\n const isEntireTableSelected = selectedNodes.length > 0 && firstRow !== null && lastRow !== null && $isTableRowNode(firstRow) && $isTableRowNode(lastRow) && selectedNodes[0] === firstRow.getFirstChild() && selectedNodes[selectedNodes.length - 1] === lastRow.getLastChild();\n if (isEntireTableSelected) {\n tableNode.selectPrevious();\n const parent = tableNode.getParent();\n // Delete entire table\n tableNode.remove();\n // Handle case when table was the only node\n if ($isRootNode(parent) && parent.isEmpty()) {\n editor.dispatchCommand(INSERT_PARAGRAPH_COMMAND, undefined);\n }\n return;\n }\n selectedNodes.forEach(cellNode => {\n if ($isElementNode(cellNode)) {\n const paragraphNode = $createParagraphNode();\n const textNode = $createTextNode();\n paragraphNode.append(textNode);\n cellNode.append(paragraphNode);\n cellNode.getChildren().forEach(child => {\n if (child !== paragraphNode) {\n child.remove();\n }\n });\n }\n });\n $updateDOMForSelection(editor, this.table, null);\n $setSelection(null);\n editor.dispatchCommand(SELECTION_CHANGE_COMMAND, undefined);\n }\n}\n\nconst LEXICAL_ELEMENT_KEY = '__lexicalTableSelection';\nconst isPointerDownOnEvent = event => {\n return (event.buttons & 1) === 1;\n};\nfunction isHTMLTableElement(el) {\n return isHTMLElement(el) && el.nodeName === 'TABLE';\n}\nfunction getTableElement(tableNode, dom) {\n if (!dom) {\n return dom;\n }\n const element = isHTMLTableElement(dom) ? dom : tableNode.getDOMSlot(dom).element;\n if (!(element.nodeName === 'TABLE')) {\n formatDevErrorMessage(`getTableElement: Expecting table in as DOM node for TableNode, not ${dom.nodeName}`);\n }\n return element;\n}\nfunction getEditorWindow(editor) {\n return editor._window;\n}\nfunction $findParentTableCellNodeInTable(tableNode, node) {\n for (let currentNode = node, lastTableCellNode = null; currentNode !== null; currentNode = currentNode.getParent()) {\n if (tableNode.is(currentNode)) {\n return lastTableCellNode;\n } else if ($isTableCellNode(currentNode)) {\n lastTableCellNode = currentNode;\n }\n }\n return null;\n}\nconst ARROW_KEY_COMMANDS_WITH_DIRECTION = [[KEY_ARROW_DOWN_COMMAND, 'down'], [KEY_ARROW_UP_COMMAND, 'up'], [KEY_ARROW_LEFT_COMMAND, 'backward'], [KEY_ARROW_RIGHT_COMMAND, 'forward']];\nconst DELETE_TEXT_COMMANDS = [DELETE_WORD_COMMAND, DELETE_LINE_COMMAND, DELETE_CHARACTER_COMMAND];\nconst DELETE_KEY_COMMANDS = [KEY_BACKSPACE_COMMAND, KEY_DELETE_COMMAND];\nfunction applyTableHandlers(tableNode, element, editor, hasTabHandler) {\n const rootElement = editor.getRootElement();\n const editorWindow = getEditorWindow(editor);\n if (!(rootElement !== null && editorWindow !== null)) {\n formatDevErrorMessage(`applyTableHandlers: editor has no root element set`);\n }\n const tableObserver = new TableObserver(editor, tableNode.getKey());\n const tableElement = getTableElement(tableNode, element);\n attachTableObserverToTableElement(tableElement, tableObserver);\n tableObserver.listenersToRemove.add(() => detachTableObserverFromTableElement(tableElement, tableObserver));\n const createPointerHandlers = () => {\n if (tableObserver.isSelecting) {\n return;\n }\n const onPointerUp = () => {\n tableObserver.isSelecting = false;\n editorWindow.removeEventListener('pointerup', onPointerUp);\n editorWindow.removeEventListener('pointermove', onPointerMove);\n };\n const onPointerMove = moveEvent => {\n if (!isPointerDownOnEvent(moveEvent) && tableObserver.isSelecting) {\n tableObserver.isSelecting = false;\n editorWindow.removeEventListener('pointerup', onPointerUp);\n editorWindow.removeEventListener('pointermove', onPointerMove);\n return;\n }\n if (!isDOMNode(moveEvent.target)) {\n return;\n }\n let focusCell = null;\n // In firefox the moveEvent.target may be captured so we must always\n // consult the coordinates #7245\n const override = !(IS_FIREFOX || tableElement.contains(moveEvent.target));\n if (override) {\n focusCell = getDOMCellInTableFromTarget(tableElement, moveEvent.target);\n } else {\n for (const el of document.elementsFromPoint(moveEvent.clientX, moveEvent.clientY)) {\n focusCell = getDOMCellInTableFromTarget(tableElement, el);\n if (focusCell) {\n break;\n }\n }\n }\n if (focusCell && (tableObserver.focusCell === null || focusCell.elem !== tableObserver.focusCell.elem)) {\n tableObserver.setNextFocus({\n focusCell,\n override\n });\n editor.dispatchCommand(SELECTION_CHANGE_COMMAND, undefined);\n }\n };\n tableObserver.isSelecting = true;\n editorWindow.addEventListener('pointerup', onPointerUp, tableObserver.listenerOptions);\n editorWindow.addEventListener('pointermove', onPointerMove, tableObserver.listenerOptions);\n };\n const onPointerDown = event => {\n tableObserver.pointerType = event.pointerType;\n if (event.button !== 0 || !isDOMNode(event.target) || !editorWindow) {\n return;\n }\n const targetCell = getDOMCellFromTarget(event.target);\n if (targetCell !== null) {\n editor.update(() => {\n const prevSelection = $getPreviousSelection();\n // We can't trust Firefox to do the right thing with the selection and\n // we don't have a proper state machine to do this \"correctly\" but\n // if we go ahead and make the table selection now it will work\n if (IS_FIREFOX && event.shiftKey && $isSelectionInTable(prevSelection, tableNode) && ($isRangeSelection(prevSelection) || $isTableSelection(prevSelection))) {\n const prevAnchorNode = prevSelection.anchor.getNode();\n const prevAnchorCell = $findParentTableCellNodeInTable(tableNode, prevSelection.anchor.getNode());\n if (prevAnchorCell) {\n tableObserver.$setAnchorCellForSelection($getObserverCellFromCellNodeOrThrow(tableObserver, prevAnchorCell));\n tableObserver.$setFocusCellForSelection(targetCell);\n stopEvent(event);\n } else {\n const newSelection = tableNode.isBefore(prevAnchorNode) ? tableNode.selectStart() : tableNode.selectEnd();\n newSelection.anchor.set(prevSelection.anchor.key, prevSelection.anchor.offset, prevSelection.anchor.type);\n }\n } else {\n // Only set anchor cell for selection if this is not a simple touch tap\n // Touch taps should not initiate table selection mode\n if (event.pointerType !== 'touch') {\n tableObserver.$setAnchorCellForSelection(targetCell);\n }\n }\n });\n }\n createPointerHandlers();\n };\n tableElement.addEventListener('pointerdown', onPointerDown, tableObserver.listenerOptions);\n tableObserver.listenersToRemove.add(() => {\n tableElement.removeEventListener('pointerdown', onPointerDown);\n });\n const onTripleClick = event => {\n if (event.detail >= 3 && isDOMNode(event.target)) {\n const targetCell = getDOMCellFromTarget(event.target);\n if (targetCell !== null) {\n event.preventDefault();\n }\n }\n };\n tableElement.addEventListener('mousedown', onTripleClick, tableObserver.listenerOptions);\n tableObserver.listenersToRemove.add(() => {\n tableElement.removeEventListener('mousedown', onTripleClick);\n });\n\n // Clear selection when clicking outside of dom.\n const pointerDownCallback = event => {\n const target = event.target;\n if (event.button !== 0 || !isDOMNode(target)) {\n return;\n }\n editor.update(() => {\n const selection = $getSelection();\n if ($isTableSelection(selection) && selection.tableKey === tableObserver.tableNodeKey && rootElement.contains(target)) {\n tableObserver.$clearHighlight();\n }\n });\n };\n editorWindow.addEventListener('pointerdown', pointerDownCallback, tableObserver.listenerOptions);\n tableObserver.listenersToRemove.add(() => {\n editorWindow.removeEventListener('pointerdown', pointerDownCallback);\n });\n for (const [command, direction] of ARROW_KEY_COMMANDS_WITH_DIRECTION) {\n tableObserver.listenersToRemove.add(editor.registerCommand(command, event => $handleArrowKey(editor, event, direction, tableNode, tableObserver), COMMAND_PRIORITY_HIGH));\n }\n tableObserver.listenersToRemove.add(editor.registerCommand(KEY_ESCAPE_COMMAND, event => {\n const selection = $getSelection();\n if ($isTableSelection(selection)) {\n const focusCellNode = $findParentTableCellNodeInTable(tableNode, selection.focus.getNode());\n if (focusCellNode !== null) {\n stopEvent(event);\n focusCellNode.selectEnd();\n return true;\n }\n }\n return false;\n }, COMMAND_PRIORITY_HIGH));\n const deleteTextHandler = command => () => {\n const selection = $getSelection();\n if (!$isSelectionInTable(selection, tableNode)) {\n return false;\n }\n if ($isTableSelection(selection)) {\n tableObserver.$clearText();\n return true;\n } else if ($isRangeSelection(selection)) {\n const tableCellNode = $findParentTableCellNodeInTable(tableNode, selection.anchor.getNode());\n if (!$isTableCellNode(tableCellNode)) {\n return false;\n }\n const anchorNode = selection.anchor.getNode();\n const focusNode = selection.focus.getNode();\n const isAnchorInside = tableNode.isParentOf(anchorNode);\n const isFocusInside = tableNode.isParentOf(focusNode);\n const selectionContainsPartialTable = isAnchorInside && !isFocusInside || isFocusInside && !isAnchorInside;\n if (selectionContainsPartialTable) {\n tableObserver.$clearText();\n return true;\n }\n const nearestElementNode = $findMatchingParent(selection.anchor.getNode(), n => $isElementNode(n));\n const topLevelCellElementNode = nearestElementNode && $findMatchingParent(nearestElementNode, n => $isElementNode(n) && $isTableCellNode(n.getParent()));\n if (!$isElementNode(topLevelCellElementNode) || !$isElementNode(nearestElementNode)) {\n return false;\n }\n if (command === DELETE_LINE_COMMAND && topLevelCellElementNode.getPreviousSibling() === null) {\n // TODO: Fix Delete Line in Table Cells.\n return true;\n }\n }\n return false;\n };\n for (const command of DELETE_TEXT_COMMANDS) {\n tableObserver.listenersToRemove.add(editor.registerCommand(command, deleteTextHandler(command), COMMAND_PRIORITY_HIGH));\n }\n const $deleteCellHandler = event => {\n const selection = $getSelection();\n if (!($isTableSelection(selection) || $isRangeSelection(selection))) {\n return false;\n }\n\n // If the selection is inside the table but should remove the whole table\n // we expand the selection so that both the anchor and focus are outside\n // the table and the editor's command listener will handle the delete\n const isAnchorInside = tableNode.isParentOf(selection.anchor.getNode());\n const isFocusInside = tableNode.isParentOf(selection.focus.getNode());\n if (isAnchorInside !== isFocusInside) {\n const tablePoint = isAnchorInside ? 'anchor' : 'focus';\n const outerPoint = isAnchorInside ? 'focus' : 'anchor';\n // Preserve the outer point\n const {\n key,\n offset,\n type\n } = selection[outerPoint];\n // Expand the selection around the table\n const newSelection = tableNode[selection[tablePoint].isBefore(selection[outerPoint]) ? 'selectPrevious' : 'selectNext']();\n // Restore the outer point of the selection\n newSelection[outerPoint].set(key, offset, type);\n // Let the base implementation handle the rest\n return false;\n }\n if (!$isSelectionInTable(selection, tableNode)) {\n return false;\n }\n if ($isTableSelection(selection)) {\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n }\n tableObserver.$clearText();\n return true;\n }\n return false;\n };\n for (const command of DELETE_KEY_COMMANDS) {\n tableObserver.listenersToRemove.add(editor.registerCommand(command, $deleteCellHandler, COMMAND_PRIORITY_HIGH));\n }\n tableObserver.listenersToRemove.add(editor.registerCommand(CUT_COMMAND, event => {\n const selection = $getSelection();\n if (selection) {\n if (!($isTableSelection(selection) || $isRangeSelection(selection))) {\n return false;\n }\n // Copying to the clipboard is async so we must capture the data\n // before we delete it\n void copyToClipboard(editor, objectKlassEquals(event, ClipboardEvent) ? event : null, $getClipboardDataFromSelection(selection));\n const intercepted = $deleteCellHandler(event);\n if ($isRangeSelection(selection)) {\n selection.removeText();\n return true;\n }\n return intercepted;\n }\n return false;\n }, COMMAND_PRIORITY_HIGH));\n tableObserver.listenersToRemove.add(editor.registerCommand(FORMAT_TEXT_COMMAND, payload => {\n const selection = $getSelection();\n if (!$isSelectionInTable(selection, tableNode)) {\n return false;\n }\n if ($isTableSelection(selection)) {\n tableObserver.$formatCells(payload);\n return true;\n } else if ($isRangeSelection(selection)) {\n const tableCellNode = $findMatchingParent(selection.anchor.getNode(), n => $isTableCellNode(n));\n if (!$isTableCellNode(tableCellNode)) {\n return false;\n }\n }\n return false;\n }, COMMAND_PRIORITY_HIGH));\n tableObserver.listenersToRemove.add(editor.registerCommand(FORMAT_ELEMENT_COMMAND, formatType => {\n const selection = $getSelection();\n if (!$isTableSelection(selection) || !$isSelectionInTable(selection, tableNode)) {\n return false;\n }\n const anchorNode = selection.anchor.getNode();\n const focusNode = selection.focus.getNode();\n if (!$isTableCellNode(anchorNode) || !$isTableCellNode(focusNode)) {\n return false;\n }\n\n // Align the table if the entire table is selected\n if ($isFullTableSelection(selection, tableNode)) {\n tableNode.setFormat(formatType);\n return true;\n }\n const [tableMap, anchorCell, focusCell] = $computeTableMap(tableNode, anchorNode, focusNode);\n const maxRow = Math.max(anchorCell.startRow + anchorCell.cell.__rowSpan - 1, focusCell.startRow + focusCell.cell.__rowSpan - 1);\n const maxColumn = Math.max(anchorCell.startColumn + anchorCell.cell.__colSpan - 1, focusCell.startColumn + focusCell.cell.__colSpan - 1);\n const minRow = Math.min(anchorCell.startRow, focusCell.startRow);\n const minColumn = Math.min(anchorCell.startColumn, focusCell.startColumn);\n const visited = new Set();\n for (let i = minRow; i <= maxRow; i++) {\n for (let j = minColumn; j <= maxColumn; j++) {\n const cell = tableMap[i][j].cell;\n if (visited.has(cell)) {\n continue;\n }\n visited.add(cell);\n cell.setFormat(formatType);\n const cellChildren = cell.getChildren();\n for (let k = 0; k < cellChildren.length; k++) {\n const child = cellChildren[k];\n if ($isElementNode(child) && !child.isInline()) {\n child.setFormat(formatType);\n }\n }\n }\n }\n return true;\n }, COMMAND_PRIORITY_HIGH));\n tableObserver.listenersToRemove.add(editor.registerCommand(CONTROLLED_TEXT_INSERTION_COMMAND, payload => {\n const selection = $getSelection();\n if (!$isSelectionInTable(selection, tableNode)) {\n return false;\n }\n if ($isTableSelection(selection)) {\n tableObserver.$clearHighlight();\n return false;\n } else if ($isRangeSelection(selection)) {\n const tableCellNode = $findMatchingParent(selection.anchor.getNode(), n => $isTableCellNode(n));\n if (!$isTableCellNode(tableCellNode)) {\n return false;\n }\n if (typeof payload === 'string') {\n const edgePosition = $getTableEdgeCursorPosition(editor, selection, tableNode);\n if (edgePosition) {\n $insertParagraphAtTableEdge(edgePosition, tableNode, [$createTextNode(payload)]);\n return true;\n }\n }\n }\n return false;\n }, COMMAND_PRIORITY_HIGH));\n if (hasTabHandler) {\n tableObserver.listenersToRemove.add(editor.registerCommand(KEY_TAB_COMMAND, event => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection) || !selection.isCollapsed() || !$isSelectionInTable(selection, tableNode)) {\n return false;\n }\n const tableCellNode = $findCellNode(selection.anchor.getNode());\n if (tableCellNode === null || !tableNode.is($findTableNode(tableCellNode))) {\n return false;\n }\n stopEvent(event);\n $selectAdjacentCell(tableCellNode, event.shiftKey ? 'previous' : 'next');\n return true;\n }, COMMAND_PRIORITY_HIGH));\n }\n tableObserver.listenersToRemove.add(editor.registerCommand(FOCUS_COMMAND, payload => {\n return tableNode.isSelected();\n }, COMMAND_PRIORITY_HIGH));\n tableObserver.listenersToRemove.add(editor.registerCommand(SELECTION_INSERT_CLIPBOARD_NODES_COMMAND, (selectionPayload, dispatchEditor) => {\n if (editor !== dispatchEditor) {\n return false;\n }\n const {\n nodes,\n selection\n } = selectionPayload;\n const anchorAndFocus = selection.getStartEndPoints();\n const isTableSelection = $isTableSelection(selection);\n const isRangeSelection = $isRangeSelection(selection);\n const isSelectionInsideOfGrid = isRangeSelection && $findMatchingParent(selection.anchor.getNode(), n => $isTableCellNode(n)) !== null && $findMatchingParent(selection.focus.getNode(), n => $isTableCellNode(n)) !== null || isTableSelection;\n if (nodes.length !== 1 || !$isTableNode(nodes[0]) || !isSelectionInsideOfGrid || anchorAndFocus === null) {\n return false;\n }\n const [anchor, focus] = anchorAndFocus;\n const [anchorCellNode, anchorRowNode, gridNode] = $getNodeTriplet(anchor);\n const focusCellNode = $findMatchingParent(focus.getNode(), n => $isTableCellNode(n));\n if (!$isTableCellNode(anchorCellNode) || !$isTableCellNode(focusCellNode) || !$isTableRowNode(anchorRowNode) || !$isTableNode(gridNode)) {\n return false;\n }\n const templateGrid = nodes[0];\n const [initialGridMap, anchorCellMap, focusCellMap] = $computeTableMap(gridNode, anchorCellNode, focusCellNode);\n const [templateGridMap] = $computeTableMapSkipCellCheck(templateGrid, null, null);\n const initialRowCount = initialGridMap.length;\n const initialColCount = initialRowCount > 0 ? initialGridMap[0].length : 0;\n\n // If we have a range selection, we'll fit the template grid into the\n // table, growing the table if necessary.\n let startRow = anchorCellMap.startRow;\n let startCol = anchorCellMap.startColumn;\n let affectedRowCount = templateGridMap.length;\n let affectedColCount = affectedRowCount > 0 ? templateGridMap[0].length : 0;\n if (isTableSelection) {\n // If we have a table selection, we'll only modify the cells within\n // the selection boundary.\n const selectionBoundary = $computeTableCellRectBoundary(initialGridMap, anchorCellMap, focusCellMap);\n const selectionRowCount = selectionBoundary.maxRow - selectionBoundary.minRow + 1;\n const selectionColCount = selectionBoundary.maxColumn - selectionBoundary.minColumn + 1;\n startRow = selectionBoundary.minRow;\n startCol = selectionBoundary.minColumn;\n affectedRowCount = Math.min(affectedRowCount, selectionRowCount);\n affectedColCount = Math.min(affectedColCount, selectionColCount);\n }\n\n // Step 1: Unmerge all merged cells within the affected area\n let didPerformMergeOperations = false;\n const lastRowForUnmerge = Math.min(initialRowCount, startRow + affectedRowCount) - 1;\n const lastColForUnmerge = Math.min(initialColCount, startCol + affectedColCount) - 1;\n const unmergedKeys = new Set();\n for (let row = startRow; row <= lastRowForUnmerge; row++) {\n for (let col = startCol; col <= lastColForUnmerge; col++) {\n const cellMap = initialGridMap[row][col];\n if (unmergedKeys.has(cellMap.cell.getKey())) {\n continue; // cell was a merged cell that was already handled\n }\n if (cellMap.cell.__rowSpan === 1 && cellMap.cell.__colSpan === 1) {\n continue; // cell is not a merged cell\n }\n $unmergeCellNode(cellMap.cell);\n unmergedKeys.add(cellMap.cell.getKey());\n didPerformMergeOperations = true;\n }\n }\n let [interimGridMap] = $computeTableMapSkipCellCheck(gridNode.getWritable(), null, null);\n\n // Step 2: Expand current table (if needed)\n const rowsToInsert = affectedRowCount - initialRowCount + startRow;\n for (let i = 0; i < rowsToInsert; i++) {\n const cellMap = interimGridMap[initialRowCount - 1][0];\n $insertTableRowAtNode(cellMap.cell);\n }\n const colsToInsert = affectedColCount - initialColCount + startCol;\n for (let i = 0; i < colsToInsert; i++) {\n const cellMap = interimGridMap[0][initialColCount - 1];\n $insertTableColumnAtNode(cellMap.cell, true, false);\n }\n [interimGridMap] = $computeTableMapSkipCellCheck(gridNode.getWritable(), null, null);\n\n // Step 3: Merge cells and set cell content, to match template grid\n for (let row = startRow; row < startRow + affectedRowCount; row++) {\n for (let col = startCol; col < startCol + affectedColCount; col++) {\n const templateRow = row - startRow;\n const templateCol = col - startCol;\n const templateCellMap = templateGridMap[templateRow][templateCol];\n if (templateCellMap.startRow !== templateRow || templateCellMap.startColumn !== templateCol) {\n continue; // cell is a merged cell that was already handled\n }\n const templateCell = templateCellMap.cell;\n if (templateCell.__rowSpan !== 1 || templateCell.__colSpan !== 1) {\n const cellsToMerge = [];\n const lastRowForMerge = Math.min(row + templateCell.__rowSpan, startRow + affectedRowCount) - 1;\n const lastColForMerge = Math.min(col + templateCell.__colSpan, startCol + affectedColCount) - 1;\n for (let r = row; r <= lastRowForMerge; r++) {\n for (let c = col; c <= lastColForMerge; c++) {\n const cellMap = interimGridMap[r][c];\n cellsToMerge.push(cellMap.cell);\n }\n }\n $mergeCells(cellsToMerge);\n didPerformMergeOperations = true;\n }\n const {\n cell\n } = interimGridMap[row][col];\n const originalChildren = cell.getChildren();\n templateCell.getChildren().forEach(child => {\n if ($isTextNode(child)) {\n const paragraphNode = $createParagraphNode();\n paragraphNode.append(child);\n cell.append(child);\n } else {\n cell.append(child);\n }\n });\n originalChildren.forEach(n => n.remove());\n }\n }\n if (isTableSelection && didPerformMergeOperations) {\n // reset the table selection in case the anchor or focus cell was\n // removed via merge operations\n const [finalGridMap] = $computeTableMapSkipCellCheck(gridNode.getWritable(), null, null);\n const newAnchorCellMap = finalGridMap[anchorCellMap.startRow][anchorCellMap.startColumn];\n newAnchorCellMap.cell.selectEnd();\n }\n return true;\n }, COMMAND_PRIORITY_HIGH));\n tableObserver.listenersToRemove.add(editor.registerCommand(SELECTION_CHANGE_COMMAND, () => {\n const selection = $getSelection();\n const prevSelection = $getPreviousSelection();\n const nextFocus = tableObserver.getAndClearNextFocus();\n if (nextFocus !== null) {\n const {\n focusCell\n } = nextFocus;\n if ($isTableSelection(selection) && selection.tableKey === tableObserver.tableNodeKey) {\n if (focusCell.x === tableObserver.focusX && focusCell.y === tableObserver.focusY) {\n // The selection is already the correct table selection\n return false;\n } else {\n tableObserver.$setFocusCellForSelection(focusCell);\n return true;\n }\n } else if (focusCell !== tableObserver.anchorCell && $isSelectionInTable(selection, tableNode)) {\n // The selection has crossed cells\n tableObserver.$setFocusCellForSelection(focusCell);\n return true;\n }\n }\n const shouldCheckSelection = tableObserver.getAndClearShouldCheckSelection();\n // If they pressed the down arrow with the selection outside of the\n // table, and then the selection ends up in the table but not in the\n // first cell, then move the selection to the first cell.\n if (shouldCheckSelection && $isRangeSelection(prevSelection) && $isRangeSelection(selection) && selection.isCollapsed()) {\n const anchor = selection.anchor.getNode();\n const firstRow = tableNode.getFirstChild();\n const anchorCell = $findCellNode(anchor);\n if (anchorCell !== null && $isTableRowNode(firstRow)) {\n const firstCell = firstRow.getFirstChild();\n if ($isTableCellNode(firstCell) && tableNode.is($findMatchingParent(anchorCell, node => node.is(tableNode) || node.is(firstCell)))) {\n // The selection moved to the table, but not in the first cell\n firstCell.selectStart();\n return true;\n }\n }\n }\n if ($isRangeSelection(selection)) {\n const {\n anchor,\n focus\n } = selection;\n const anchorNode = anchor.getNode();\n const focusNode = focus.getNode();\n // Using explicit comparison with table node to ensure it's not a nested table\n // as in that case we'll leave selection resolving to that table\n const anchorCellNode = $findCellNode(anchorNode);\n const focusCellNode = $findCellNode(focusNode);\n const isAnchorInside = !!(anchorCellNode && tableNode.is($findTableNode(anchorCellNode)));\n const isFocusInside = !!(focusCellNode && tableNode.is($findTableNode(focusCellNode)));\n const isPartiallyWithinTable = isAnchorInside !== isFocusInside;\n const isWithinTable = isAnchorInside && isFocusInside;\n const isBackward = selection.isBackward();\n if (isPartiallyWithinTable) {\n const newSelection = selection.clone();\n if (isFocusInside) {\n const [tableMap] = $computeTableMap(tableNode, focusCellNode, focusCellNode);\n const firstCell = tableMap[0][0].cell;\n const lastCell = tableMap[tableMap.length - 1].at(-1).cell;\n newSelection.focus.set(isBackward ? firstCell.getKey() : lastCell.getKey(), isBackward ? firstCell.getChildrenSize() : lastCell.getChildrenSize(), 'element');\n } else if (isAnchorInside) {\n const [tableMap] = $computeTableMap(tableNode, anchorCellNode, anchorCellNode);\n const firstCell = tableMap[0][0].cell;\n const lastCell = tableMap[tableMap.length - 1].at(-1).cell;\n /**\n * If isBackward, set the anchor to be at the end of the table so that when the cursor moves outside of\n * the table in the backward direction, the entire table will be selected from its end.\n * Otherwise, if forward, set the anchor to be at the start of the table so that when the focus is dragged\n * outside th end of the table, it will start from the beginning of the table.\n */\n newSelection.anchor.set(isBackward ? lastCell.getKey() : firstCell.getKey(), isBackward ? lastCell.getChildrenSize() : 0, 'element');\n }\n $setSelection(newSelection);\n $addHighlightStyleToTable(editor, tableObserver);\n } else if (isWithinTable) {\n // Handle case when selection spans across multiple cells but still\n // has range selection, then we convert it into table selection\n if (!anchorCellNode.is(focusCellNode)) {\n tableObserver.$setAnchorCellForSelection($getObserverCellFromCellNodeOrThrow(tableObserver, anchorCellNode));\n tableObserver.$setFocusCellForSelection($getObserverCellFromCellNodeOrThrow(tableObserver, focusCellNode), true);\n }\n\n // Handle case when the pointer type is touch and the current and\n // previous selection are collapsed, and the previous anchor and current\n // focus cell nodes are different, then we convert it into table selection\n // However, only do this if the table observer is actively selecting (user dragging)\n // to prevent unwanted selections when simply tapping between cells on mobile\n if (tableObserver.pointerType === 'touch' && tableObserver.isSelecting && selection.isCollapsed() && $isRangeSelection(prevSelection) && prevSelection.isCollapsed()) {\n const prevAnchorCellNode = $findCellNode(prevSelection.anchor.getNode());\n if (prevAnchorCellNode && !prevAnchorCellNode.is(focusCellNode)) {\n tableObserver.$setAnchorCellForSelection($getObserverCellFromCellNodeOrThrow(tableObserver, prevAnchorCellNode));\n tableObserver.$setFocusCellForSelection($getObserverCellFromCellNodeOrThrow(tableObserver, focusCellNode), true);\n tableObserver.pointerType = null;\n }\n }\n }\n } else if (selection && $isTableSelection(selection) && selection.is(prevSelection) && selection.tableKey === tableNode.getKey()) {\n // if selection goes outside of the table we need to change it to Range selection\n const domSelection = getDOMSelection(editorWindow);\n if (domSelection && domSelection.anchorNode && domSelection.focusNode) {\n const focusNode = $getNearestNodeFromDOMNode(domSelection.focusNode);\n const isFocusOutside = focusNode && !tableNode.isParentOf(focusNode);\n const anchorNode = $getNearestNodeFromDOMNode(domSelection.anchorNode);\n const isAnchorInside = anchorNode && tableNode.isParentOf(anchorNode);\n if (isFocusOutside && isAnchorInside && domSelection.rangeCount > 0) {\n const newSelection = $createRangeSelectionFromDom(domSelection, editor);\n if (newSelection) {\n newSelection.anchor.set(tableNode.getKey(), selection.isBackward() ? tableNode.getChildrenSize() : 0, 'element');\n domSelection.removeAllRanges();\n $setSelection(newSelection);\n }\n }\n }\n }\n if (selection && !selection.is(prevSelection) && ($isTableSelection(selection) || $isTableSelection(prevSelection)) && tableObserver.tableSelection && !tableObserver.tableSelection.is(prevSelection)) {\n if ($isTableSelection(selection) && selection.tableKey === tableObserver.tableNodeKey) {\n tableObserver.$updateTableTableSelection(selection);\n } else if (!$isTableSelection(selection) && $isTableSelection(prevSelection) && prevSelection.tableKey === tableObserver.tableNodeKey) {\n tableObserver.$updateTableTableSelection(null);\n }\n return false;\n }\n if (tableObserver.hasHijackedSelectionStyles && !tableNode.isSelected()) {\n $removeHighlightStyleToTable(editor, tableObserver);\n } else if (!tableObserver.hasHijackedSelectionStyles && tableNode.isSelected()) {\n $addHighlightStyleToTable(editor, tableObserver);\n }\n return false;\n }, COMMAND_PRIORITY_HIGH));\n tableObserver.listenersToRemove.add(editor.registerCommand(INSERT_PARAGRAPH_COMMAND, () => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection) || !selection.isCollapsed() || !$isSelectionInTable(selection, tableNode)) {\n return false;\n }\n const edgePosition = $getTableEdgeCursorPosition(editor, selection, tableNode);\n if (edgePosition) {\n $insertParagraphAtTableEdge(edgePosition, tableNode);\n return true;\n }\n return false;\n }, COMMAND_PRIORITY_HIGH));\n return tableObserver;\n}\nfunction detachTableObserverFromTableElement(tableElement, tableObserver) {\n if (getTableObserverFromTableElement(tableElement) === tableObserver) {\n delete tableElement[LEXICAL_ELEMENT_KEY];\n }\n}\nfunction attachTableObserverToTableElement(tableElement, tableObserver) {\n if (!(getTableObserverFromTableElement(tableElement) === null)) {\n formatDevErrorMessage(`tableElement already has an attached TableObserver`);\n }\n tableElement[LEXICAL_ELEMENT_KEY] = tableObserver;\n}\nfunction getTableObserverFromTableElement(tableElement) {\n return tableElement[LEXICAL_ELEMENT_KEY] || null;\n}\nfunction getDOMCellFromTarget(node) {\n let currentNode = node;\n while (currentNode != null) {\n const nodeName = currentNode.nodeName;\n if (nodeName === 'TD' || nodeName === 'TH') {\n // @ts-expect-error: internal field\n const cell = currentNode._cell;\n if (cell === undefined) {\n return null;\n }\n return cell;\n }\n currentNode = currentNode.parentNode;\n }\n return null;\n}\nfunction getDOMCellInTableFromTarget(table, node) {\n if (!table.contains(node)) {\n return null;\n }\n let cell = null;\n for (let currentNode = node; currentNode != null; currentNode = currentNode.parentNode) {\n if (currentNode === table) {\n return cell;\n }\n const nodeName = currentNode.nodeName;\n if (nodeName === 'TD' || nodeName === 'TH') {\n // @ts-expect-error: internal field\n cell = currentNode._cell || null;\n }\n }\n return null;\n}\nfunction getTable(tableNode, dom) {\n const tableElement = getTableElement(tableNode, dom);\n const domRows = [];\n const grid = {\n columns: 0,\n domRows,\n rows: 0\n };\n let currentNode = tableElement.querySelector('tr');\n let x = 0;\n let y = 0;\n domRows.length = 0;\n while (currentNode != null) {\n const nodeMame = currentNode.nodeName;\n if (nodeMame === 'TD' || nodeMame === 'TH') {\n const elem = currentNode;\n const cell = {\n elem,\n hasBackgroundColor: elem.style.backgroundColor !== '',\n highlighted: false,\n x,\n y\n };\n\n // @ts-expect-error: internal field\n currentNode._cell = cell;\n let row = domRows[y];\n if (row === undefined) {\n row = domRows[y] = [];\n }\n row[x] = cell;\n } else {\n const child = currentNode.firstChild;\n if (child != null) {\n currentNode = child;\n continue;\n }\n }\n const sibling = currentNode.nextSibling;\n if (sibling != null) {\n x++;\n currentNode = sibling;\n continue;\n }\n const parent = currentNode.parentNode;\n if (parent != null) {\n const parentSibling = parent.nextSibling;\n if (parentSibling == null) {\n break;\n }\n y++;\n x = 0;\n currentNode = parentSibling;\n }\n }\n grid.columns = x + 1;\n grid.rows = y + 1;\n return grid;\n}\nfunction $updateDOMForSelection(editor, table, selection) {\n const selectedCellNodes = new Set(selection ? selection.getNodes() : []);\n $forEachTableCell(table, (cell, lexicalNode) => {\n const elem = cell.elem;\n if (selectedCellNodes.has(lexicalNode)) {\n cell.highlighted = true;\n $addHighlightToDOM(editor, cell);\n } else {\n cell.highlighted = false;\n $removeHighlightFromDOM(editor, cell);\n if (!elem.getAttribute('style')) {\n elem.removeAttribute('style');\n }\n }\n });\n}\nfunction $forEachTableCell(grid, cb) {\n const {\n domRows\n } = grid;\n for (let y = 0; y < domRows.length; y++) {\n const row = domRows[y];\n if (!row) {\n continue;\n }\n for (let x = 0; x < row.length; x++) {\n const cell = row[x];\n if (!cell) {\n continue;\n }\n const lexicalNode = $getNearestNodeFromDOMNode(cell.elem);\n if (lexicalNode !== null) {\n cb(cell, lexicalNode, {\n x,\n y\n });\n }\n }\n }\n}\nfunction $addHighlightStyleToTable(editor, tableSelection) {\n tableSelection.$disableHighlightStyle();\n $forEachTableCell(tableSelection.table, cell => {\n cell.highlighted = true;\n $addHighlightToDOM(editor, cell);\n });\n}\nfunction $removeHighlightStyleToTable(editor, tableObserver) {\n tableObserver.$enableHighlightStyle();\n $forEachTableCell(tableObserver.table, cell => {\n const elem = cell.elem;\n cell.highlighted = false;\n $removeHighlightFromDOM(editor, cell);\n if (!elem.getAttribute('style')) {\n elem.removeAttribute('style');\n }\n });\n}\nfunction $selectAdjacentCell(tableCellNode, direction) {\n const siblingMethod = direction === 'next' ? 'getNextSibling' : 'getPreviousSibling';\n const childMethod = direction === 'next' ? 'getFirstChild' : 'getLastChild';\n const sibling = tableCellNode[siblingMethod]();\n if ($isElementNode(sibling)) {\n return sibling.selectEnd();\n }\n const parentRow = $findMatchingParent(tableCellNode, $isTableRowNode);\n if (!(parentRow !== null)) {\n formatDevErrorMessage(`selectAdjacentCell: Cell not in table row`);\n }\n for (let nextRow = parentRow[siblingMethod](); $isTableRowNode(nextRow); nextRow = nextRow[siblingMethod]()) {\n const child = nextRow[childMethod]();\n if ($isElementNode(child)) {\n return child.selectEnd();\n }\n }\n const parentTable = $findMatchingParent(parentRow, $isTableNode);\n if (!(parentTable !== null)) {\n formatDevErrorMessage(`selectAdjacentCell: Row not in table`);\n }\n return direction === 'next' ? parentTable.selectNext() : parentTable.selectPrevious();\n}\nconst selectTableNodeInDirection = (tableObserver, tableNode, x, y, direction) => {\n const isForward = direction === 'forward';\n switch (direction) {\n case 'backward':\n case 'forward':\n if (x !== (isForward ? tableObserver.table.columns - 1 : 0)) {\n selectTableCellNode(tableNode.getCellNodeFromCordsOrThrow(x + (isForward ? 1 : -1), y, tableObserver.table), isForward);\n } else {\n if (y !== (isForward ? tableObserver.table.rows - 1 : 0)) {\n selectTableCellNode(tableNode.getCellNodeFromCordsOrThrow(isForward ? 0 : tableObserver.table.columns - 1, y + (isForward ? 1 : -1), tableObserver.table), isForward);\n } else if (!isForward) {\n tableNode.selectPrevious();\n } else {\n tableNode.selectNext();\n }\n }\n return true;\n case 'up':\n if (y !== 0) {\n selectTableCellNode(tableNode.getCellNodeFromCordsOrThrow(x, y - 1, tableObserver.table), false);\n } else {\n tableNode.selectPrevious();\n }\n return true;\n case 'down':\n if (y !== tableObserver.table.rows - 1) {\n selectTableCellNode(tableNode.getCellNodeFromCordsOrThrow(x, y + 1, tableObserver.table), true);\n } else {\n tableNode.selectNext();\n }\n return true;\n default:\n return false;\n }\n};\nfunction getCorner(rect, cellValue) {\n let colName;\n let rowName;\n if (cellValue.startColumn === rect.minColumn) {\n colName = 'minColumn';\n } else if (cellValue.startColumn + cellValue.cell.__colSpan - 1 === rect.maxColumn) {\n colName = 'maxColumn';\n } else {\n return null;\n }\n if (cellValue.startRow === rect.minRow) {\n rowName = 'minRow';\n } else if (cellValue.startRow + cellValue.cell.__rowSpan - 1 === rect.maxRow) {\n rowName = 'maxRow';\n } else {\n return null;\n }\n return [colName, rowName];\n}\nfunction getCornerOrThrow(rect, cellValue) {\n const corner = getCorner(rect, cellValue);\n if (!(corner !== null)) {\n formatDevErrorMessage(`getCornerOrThrow: cell ${cellValue.cell.getKey()} is not at a corner of rect`);\n }\n return corner;\n}\nfunction oppositeCorner([colName, rowName]) {\n return [colName === 'minColumn' ? 'maxColumn' : 'minColumn', rowName === 'minRow' ? 'maxRow' : 'minRow'];\n}\nfunction cellAtCornerOrThrow(tableMap, rect, [colName, rowName]) {\n const rowNum = rect[rowName];\n const rowMap = tableMap[rowNum];\n if (!(rowMap !== undefined)) {\n formatDevErrorMessage(`cellAtCornerOrThrow: ${rowName} = ${String(rowNum)} missing in tableMap`);\n }\n const colNum = rect[colName];\n const cell = rowMap[colNum];\n if (!(cell !== undefined)) {\n formatDevErrorMessage(`cellAtCornerOrThrow: ${colName} = ${String(colNum)} missing in tableMap`);\n }\n return cell;\n}\nfunction $extractRectCorners(tableMap, anchorCellValue, newFocusCellValue) {\n // We are sure that the focus now either contracts or expands the rect\n // but both the anchor and focus might be moved to ensure a rectangle\n // given a potentially ragged merge shape\n const rect = $computeTableCellRectBoundary(tableMap, anchorCellValue, newFocusCellValue);\n const anchorCorner = getCorner(rect, anchorCellValue);\n if (anchorCorner) {\n return [cellAtCornerOrThrow(tableMap, rect, anchorCorner), cellAtCornerOrThrow(tableMap, rect, oppositeCorner(anchorCorner))];\n }\n const newFocusCorner = getCorner(rect, newFocusCellValue);\n if (newFocusCorner) {\n return [cellAtCornerOrThrow(tableMap, rect, oppositeCorner(newFocusCorner)), cellAtCornerOrThrow(tableMap, rect, newFocusCorner)];\n }\n // TODO this doesn't have to be arbitrary, use the closest corner instead\n const newAnchorCorner = ['minColumn', 'minRow'];\n return [cellAtCornerOrThrow(tableMap, rect, newAnchorCorner), cellAtCornerOrThrow(tableMap, rect, oppositeCorner(newAnchorCorner))];\n}\nfunction $adjustFocusInDirection(tableObserver, tableMap, anchorCellValue, focusCellValue, direction) {\n const rect = $computeTableCellRectBoundary(tableMap, anchorCellValue, focusCellValue);\n const spans = $computeTableCellRectSpans(tableMap, rect);\n const {\n topSpan,\n leftSpan,\n bottomSpan,\n rightSpan\n } = spans;\n const anchorCorner = getCornerOrThrow(rect, anchorCellValue);\n const [focusColumn, focusRow] = oppositeCorner(anchorCorner);\n let fCol = rect[focusColumn];\n let fRow = rect[focusRow];\n if (direction === 'forward') {\n fCol += focusColumn === 'maxColumn' ? 1 : leftSpan;\n } else if (direction === 'backward') {\n fCol -= focusColumn === 'minColumn' ? 1 : rightSpan;\n } else if (direction === 'down') {\n fRow += focusRow === 'maxRow' ? 1 : topSpan;\n } else if (direction === 'up') {\n fRow -= focusRow === 'minRow' ? 1 : bottomSpan;\n }\n const targetRowMap = tableMap[fRow];\n if (targetRowMap === undefined) {\n return false;\n }\n const newFocusCellValue = targetRowMap[fCol];\n if (newFocusCellValue === undefined) {\n return false;\n }\n // We can be certain that anchorCellValue and newFocusCellValue are\n // contained within the desired selection, but we are not certain if\n // they need to be expanded or not to maintain a rectangular shape\n const [finalAnchorCell, finalFocusCell] = $extractRectCorners(tableMap, anchorCellValue, newFocusCellValue);\n const anchorDOM = $getObserverCellFromCellNodeOrThrow(tableObserver, finalAnchorCell.cell);\n const focusDOM = $getObserverCellFromCellNodeOrThrow(tableObserver, finalFocusCell.cell);\n tableObserver.$setAnchorCellForSelection(anchorDOM);\n tableObserver.$setFocusCellForSelection(focusDOM, true);\n return true;\n}\nfunction $isSelectionInTable(selection, tableNode) {\n if ($isRangeSelection(selection) || $isTableSelection(selection)) {\n // TODO this should probably return false if there's an unrelated\n // shadow root between the node and the table (e.g. another table,\n // collapsible, etc.)\n const isAnchorInside = tableNode.isParentOf(selection.anchor.getNode());\n const isFocusInside = tableNode.isParentOf(selection.focus.getNode());\n return isAnchorInside && isFocusInside;\n }\n return false;\n}\nfunction $isFullTableSelection(selection, tableNode) {\n if ($isTableSelection(selection)) {\n const anchorNode = selection.anchor.getNode();\n const focusNode = selection.focus.getNode();\n if (tableNode && anchorNode && focusNode) {\n const [map] = $computeTableMap(tableNode, anchorNode, focusNode);\n return anchorNode.getKey() === map[0][0].cell.getKey() && focusNode.getKey() === map[map.length - 1].at(-1).cell.getKey();\n }\n }\n return false;\n}\nfunction selectTableCellNode(tableCell, fromStart) {\n if (fromStart) {\n tableCell.selectStart();\n } else {\n tableCell.selectEnd();\n }\n}\nfunction $addHighlightToDOM(editor, cell) {\n const element = cell.elem;\n const editorThemeClasses = editor._config.theme;\n const node = $getNearestNodeFromDOMNode(element);\n if (!$isTableCellNode(node)) {\n formatDevErrorMessage(`Expected to find LexicalNode from Table Cell DOMNode`);\n }\n addClassNamesToElement(element, editorThemeClasses.tableCellSelected);\n}\nfunction $removeHighlightFromDOM(editor, cell) {\n const element = cell.elem;\n const node = $getNearestNodeFromDOMNode(element);\n if (!$isTableCellNode(node)) {\n formatDevErrorMessage(`Expected to find LexicalNode from Table Cell DOMNode`);\n }\n const editorThemeClasses = editor._config.theme;\n removeClassNamesFromElement(element, editorThemeClasses.tableCellSelected);\n}\nfunction $findCellNode(node) {\n const cellNode = $findMatchingParent(node, $isTableCellNode);\n return $isTableCellNode(cellNode) ? cellNode : null;\n}\nfunction $findTableNode(node) {\n const tableNode = $findMatchingParent(node, $isTableNode);\n return $isTableNode(tableNode) ? tableNode : null;\n}\nfunction $getBlockParentIfFirstNode(node) {\n for (let prevNode = node, currentNode = node; currentNode !== null; prevNode = currentNode, currentNode = currentNode.getParent()) {\n if ($isElementNode(currentNode)) {\n if (currentNode !== prevNode && currentNode.getFirstChild() !== prevNode) {\n // Not the first child or the initial node\n return null;\n } else if (!currentNode.isInline()) {\n return currentNode;\n }\n }\n }\n return null;\n}\nfunction $handleHorizontalArrowKeyRangeSelection(editor, event, selection, alter, isBackward, tableNode, tableObserver) {\n const initialFocus = $caretFromPoint(selection.focus, isBackward ? 'previous' : 'next');\n if ($isExtendableTextPointCaret(initialFocus)) {\n return false;\n }\n let lastCaret = initialFocus;\n // TableCellNode is the only shadow root we are interested in piercing so\n // we find the last internal caret and then check its parent\n for (const nextCaret of $extendCaretToRange(initialFocus).iterNodeCarets('shadowRoot')) {\n if (!($isSiblingCaret(nextCaret) && $isElementNode(nextCaret.origin))) {\n return false;\n }\n lastCaret = nextCaret;\n }\n const lastCaretParent = lastCaret.getParentAtCaret();\n if (!$isTableCellNode(lastCaretParent)) {\n return false;\n }\n const anchorCell = lastCaretParent;\n const focusCaret = $findNextTableCell($getSiblingCaret(anchorCell, lastCaret.direction));\n const anchorCellTable = $findMatchingParent(anchorCell, $isTableNode);\n if (!(anchorCellTable && anchorCellTable.is(tableNode))) {\n return false;\n }\n const anchorCellDOM = editor.getElementByKey(anchorCell.getKey());\n const anchorDOMCell = getDOMCellFromTarget(anchorCellDOM);\n if (!anchorCellDOM || !anchorDOMCell) {\n return false;\n }\n const anchorCellTableElement = $getElementForTableNode(editor, anchorCellTable);\n tableObserver.table = anchorCellTableElement;\n if (!focusCaret) {\n if (alter === 'extend') {\n // extend the selection from a range inside the cell to a table selection of the cell\n tableObserver.$setAnchorCellForSelection(anchorDOMCell);\n tableObserver.$setFocusCellForSelection(anchorDOMCell, true);\n } else {\n // exit the table\n const outerFocusCaret = $getTableExitCaret($getSiblingCaret(anchorCellTable, initialFocus.direction));\n $setPointFromCaret(selection.anchor, outerFocusCaret);\n $setPointFromCaret(selection.focus, outerFocusCaret);\n }\n } else if (alter === 'extend') {\n const focusDOMCell = getDOMCellFromTarget(editor.getElementByKey(focusCaret.origin.getKey()));\n if (!focusDOMCell) {\n return false;\n }\n tableObserver.$setAnchorCellForSelection(anchorDOMCell);\n tableObserver.$setFocusCellForSelection(focusDOMCell, true);\n } else {\n // alter === 'move'\n const innerFocusCaret = $normalizeCaret(focusCaret);\n $setPointFromCaret(selection.anchor, innerFocusCaret);\n $setPointFromCaret(selection.focus, innerFocusCaret);\n }\n stopEvent(event);\n return true;\n}\nfunction $getTableExitCaret(initialCaret) {\n const adjacent = $getAdjacentChildCaret(initialCaret);\n return $isChildCaret(adjacent) ? $normalizeCaret(adjacent) : initialCaret;\n}\nfunction $findNextTableCell(initialCaret) {\n for (const nextCaret of $extendCaretToRange(initialCaret).iterNodeCarets('root')) {\n const {\n origin\n } = nextCaret;\n if ($isTableCellNode(origin)) {\n // not sure why ts isn't narrowing here (even if the guard is on nextCaret.origin)\n // but returning a new caret is fine\n if ($isChildCaret(nextCaret)) {\n return $getChildCaret(origin, initialCaret.direction);\n }\n } else if (!$isTableRowNode(origin)) {\n break;\n }\n }\n return null;\n}\nfunction $handleArrowKey(editor, event, direction, tableNode, tableObserver) {\n if ((direction === 'up' || direction === 'down') && isTypeaheadMenuInView(editor)) {\n return false;\n }\n const selection = $getSelection();\n if (!$isSelectionInTable(selection, tableNode)) {\n if ($isRangeSelection(selection)) {\n if (direction === 'backward') {\n if (selection.focus.offset > 0) {\n return false;\n }\n const parentNode = $getBlockParentIfFirstNode(selection.focus.getNode());\n if (!parentNode) {\n return false;\n }\n const siblingNode = parentNode.getPreviousSibling();\n if (!$isTableNode(siblingNode)) {\n return false;\n }\n stopEvent(event);\n if (event.shiftKey) {\n selection.focus.set(siblingNode.getParentOrThrow().getKey(), siblingNode.getIndexWithinParent(), 'element');\n } else {\n siblingNode.selectEnd();\n }\n return true;\n } else if (event.shiftKey && (direction === 'up' || direction === 'down')) {\n const focusNode = selection.focus.getNode();\n const isTableUnselect = !selection.isCollapsed() && (direction === 'up' && !selection.isBackward() || direction === 'down' && selection.isBackward());\n if (isTableUnselect) {\n let focusParentNode = $findMatchingParent(focusNode, n => $isTableNode(n));\n if ($isTableCellNode(focusParentNode)) {\n focusParentNode = $findMatchingParent(focusParentNode, $isTableNode);\n }\n if (focusParentNode !== tableNode) {\n return false;\n }\n if (!focusParentNode) {\n return false;\n }\n const sibling = direction === 'down' ? focusParentNode.getNextSibling() : focusParentNode.getPreviousSibling();\n if (!sibling) {\n return false;\n }\n let newOffset = 0;\n if (direction === 'up') {\n if ($isElementNode(sibling)) {\n newOffset = sibling.getChildrenSize();\n }\n }\n let newFocusNode = sibling;\n if (direction === 'up') {\n if ($isElementNode(sibling)) {\n const lastCell = sibling.getLastChild();\n newFocusNode = lastCell ? lastCell : sibling;\n newOffset = $isTextNode(newFocusNode) ? newFocusNode.getTextContentSize() : 0;\n }\n }\n const newSelection = selection.clone();\n newSelection.focus.set(newFocusNode.getKey(), newOffset, $isTextNode(newFocusNode) ? 'text' : 'element');\n $setSelection(newSelection);\n stopEvent(event);\n return true;\n } else if ($isRootOrShadowRoot(focusNode)) {\n const selectedNode = direction === 'up' ? selection.getNodes()[selection.getNodes().length - 1] : selection.getNodes()[0];\n if (selectedNode) {\n const tableCellNode = $findParentTableCellNodeInTable(tableNode, selectedNode);\n if (tableCellNode !== null) {\n const firstDescendant = tableNode.getFirstDescendant();\n const lastDescendant = tableNode.getLastDescendant();\n if (!firstDescendant || !lastDescendant) {\n return false;\n }\n const [firstCellNode] = $getNodeTriplet(firstDescendant);\n const [lastCellNode] = $getNodeTriplet(lastDescendant);\n const firstCellCoords = tableNode.getCordsFromCellNode(firstCellNode, tableObserver.table);\n const lastCellCoords = tableNode.getCordsFromCellNode(lastCellNode, tableObserver.table);\n const firstCellDOM = tableNode.getDOMCellFromCordsOrThrow(firstCellCoords.x, firstCellCoords.y, tableObserver.table);\n const lastCellDOM = tableNode.getDOMCellFromCordsOrThrow(lastCellCoords.x, lastCellCoords.y, tableObserver.table);\n tableObserver.$setAnchorCellForSelection(firstCellDOM);\n tableObserver.$setFocusCellForSelection(lastCellDOM, true);\n return true;\n }\n }\n return false;\n } else {\n let focusParentNode = $findMatchingParent(focusNode, n => $isElementNode(n) && !n.isInline());\n if ($isTableCellNode(focusParentNode)) {\n focusParentNode = $findMatchingParent(focusParentNode, $isTableNode);\n }\n if (!focusParentNode) {\n return false;\n }\n const sibling = direction === 'down' ? focusParentNode.getNextSibling() : focusParentNode.getPreviousSibling();\n if ($isTableNode(sibling) && tableObserver.tableNodeKey === sibling.getKey()) {\n const firstDescendant = sibling.getFirstDescendant();\n const lastDescendant = sibling.getLastDescendant();\n if (!firstDescendant || !lastDescendant) {\n return false;\n }\n const [firstCellNode] = $getNodeTriplet(firstDescendant);\n const [lastCellNode] = $getNodeTriplet(lastDescendant);\n const newSelection = selection.clone();\n newSelection.focus.set((direction === 'up' ? firstCellNode : lastCellNode).getKey(), direction === 'up' ? 0 : lastCellNode.getChildrenSize(), 'element');\n stopEvent(event);\n $setSelection(newSelection);\n return true;\n }\n }\n }\n }\n if (direction === 'down' && $isScrollableTablesActive(editor)) {\n // Enable Firefox workaround\n tableObserver.setShouldCheckSelection();\n }\n return false;\n }\n if ($isRangeSelection(selection)) {\n if (direction === 'backward' || direction === 'forward') {\n const alter = event.shiftKey ? 'extend' : 'move';\n return $handleHorizontalArrowKeyRangeSelection(editor, event, selection, alter, direction === 'backward', tableNode, tableObserver);\n }\n if (selection.isCollapsed()) {\n const {\n anchor,\n focus\n } = selection;\n const anchorCellNode = $findMatchingParent(anchor.getNode(), $isTableCellNode);\n const focusCellNode = $findMatchingParent(focus.getNode(), $isTableCellNode);\n if (!$isTableCellNode(anchorCellNode) || !anchorCellNode.is(focusCellNode)) {\n return false;\n }\n const anchorCellTable = $findTableNode(anchorCellNode);\n if (anchorCellTable !== tableNode && anchorCellTable != null) {\n const anchorCellTableElement = getTableElement(anchorCellTable, editor.getElementByKey(anchorCellTable.getKey()));\n if (anchorCellTableElement != null) {\n tableObserver.table = getTable(anchorCellTable, anchorCellTableElement);\n return $handleArrowKey(editor, event, direction, anchorCellTable, tableObserver);\n }\n }\n const anchorCellDom = editor.getElementByKey(anchorCellNode.__key);\n const anchorDOM = editor.getElementByKey(anchor.key);\n if (anchorDOM == null || anchorCellDom == null) {\n return false;\n }\n let edgeSelectionRect;\n if (anchor.type === 'element') {\n edgeSelectionRect = anchorDOM.getBoundingClientRect();\n } else {\n const domSelection = getDOMSelection(getEditorWindow(editor));\n if (domSelection === null || domSelection.rangeCount === 0) {\n return false;\n }\n const range = domSelection.getRangeAt(0);\n edgeSelectionRect = range.getBoundingClientRect();\n }\n const edgeChild = direction === 'up' ? anchorCellNode.getFirstChild() : anchorCellNode.getLastChild();\n if (edgeChild == null) {\n return false;\n }\n const edgeChildDOM = editor.getElementByKey(edgeChild.__key);\n if (edgeChildDOM == null) {\n return false;\n }\n const edgeRect = edgeChildDOM.getBoundingClientRect();\n const isExiting = direction === 'up' ? edgeRect.top > edgeSelectionRect.top - edgeSelectionRect.height : edgeSelectionRect.bottom + edgeSelectionRect.height > edgeRect.bottom;\n if (isExiting) {\n stopEvent(event);\n const cords = tableNode.getCordsFromCellNode(anchorCellNode, tableObserver.table);\n if (event.shiftKey) {\n const cell = tableNode.getDOMCellFromCordsOrThrow(cords.x, cords.y, tableObserver.table);\n tableObserver.$setAnchorCellForSelection(cell);\n tableObserver.$setFocusCellForSelection(cell, true);\n } else {\n return selectTableNodeInDirection(tableObserver, tableNode, cords.x, cords.y, direction);\n }\n return true;\n }\n }\n } else if ($isTableSelection(selection)) {\n const {\n anchor,\n focus\n } = selection;\n const anchorCellNode = $findMatchingParent(anchor.getNode(), $isTableCellNode);\n const focusCellNode = $findMatchingParent(focus.getNode(), $isTableCellNode);\n const [tableNodeFromSelection] = selection.getNodes();\n if (!$isTableNode(tableNodeFromSelection)) {\n formatDevErrorMessage(`$handleArrowKey: TableSelection.getNodes()[0] expected to be TableNode`);\n }\n const tableElement = getTableElement(tableNodeFromSelection, editor.getElementByKey(tableNodeFromSelection.getKey()));\n if (!$isTableCellNode(anchorCellNode) || !$isTableCellNode(focusCellNode) || !$isTableNode(tableNodeFromSelection) || tableElement == null) {\n return false;\n }\n tableObserver.$updateTableTableSelection(selection);\n const grid = getTable(tableNodeFromSelection, tableElement);\n const cordsAnchor = tableNode.getCordsFromCellNode(anchorCellNode, grid);\n const anchorCell = tableNode.getDOMCellFromCordsOrThrow(cordsAnchor.x, cordsAnchor.y, grid);\n tableObserver.$setAnchorCellForSelection(anchorCell);\n stopEvent(event);\n if (event.shiftKey) {\n const [tableMap, anchorValue, focusValue] = $computeTableMap(tableNode, anchorCellNode, focusCellNode);\n return $adjustFocusInDirection(tableObserver, tableMap, anchorValue, focusValue, direction);\n } else {\n focusCellNode.selectEnd();\n }\n return true;\n }\n return false;\n}\nfunction stopEvent(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n event.stopPropagation();\n}\nfunction isTypeaheadMenuInView(editor) {\n // There is no inbuilt way to check if the component picker is in view\n // but we can check if the root DOM element has the aria-controls attribute \"typeahead-menu\".\n const root = editor.getRootElement();\n if (!root) {\n return false;\n }\n return root.hasAttribute('aria-controls') && root.getAttribute('aria-controls') === 'typeahead-menu';\n}\nfunction $insertParagraphAtTableEdge(edgePosition, tableNode, children) {\n const paragraphNode = $createParagraphNode();\n if (edgePosition === 'first') {\n tableNode.insertBefore(paragraphNode);\n } else {\n tableNode.insertAfter(paragraphNode);\n }\n paragraphNode.append(...(children || []));\n paragraphNode.selectEnd();\n}\nfunction $getTableEdgeCursorPosition(editor, selection, tableNode) {\n const tableNodeParent = tableNode.getParent();\n if (!tableNodeParent) {\n return undefined;\n }\n\n // TODO: Add support for nested tables\n const domSelection = getDOMSelection(getEditorWindow(editor));\n if (!domSelection) {\n return undefined;\n }\n const domAnchorNode = domSelection.anchorNode;\n const tableNodeParentDOM = editor.getElementByKey(tableNodeParent.getKey());\n const tableElement = getTableElement(tableNode, editor.getElementByKey(tableNode.getKey()));\n // We are only interested in the scenario where the\n // native selection anchor is:\n // - at or inside the table's parent DOM\n // - and NOT at or inside the table DOM\n // It may be adjacent to the table DOM (e.g. in a wrapper)\n if (!domAnchorNode || !tableNodeParentDOM || !tableElement || !tableNodeParentDOM.contains(domAnchorNode) || tableElement.contains(domAnchorNode)) {\n return undefined;\n }\n const anchorCellNode = $findMatchingParent(selection.anchor.getNode(), n => $isTableCellNode(n));\n if (!anchorCellNode) {\n return undefined;\n }\n const parentTable = $findMatchingParent(anchorCellNode, n => $isTableNode(n));\n if (!$isTableNode(parentTable) || !parentTable.is(tableNode)) {\n return undefined;\n }\n const [tableMap, cellValue] = $computeTableMap(tableNode, anchorCellNode, anchorCellNode);\n const firstCell = tableMap[0][0];\n const lastCell = tableMap[tableMap.length - 1][tableMap[0].length - 1];\n const {\n startRow,\n startColumn\n } = cellValue;\n const isAtFirstCell = startRow === firstCell.startRow && startColumn === firstCell.startColumn;\n const isAtLastCell = startRow === lastCell.startRow && startColumn === lastCell.startColumn;\n if (isAtFirstCell) {\n return 'first';\n } else if (isAtLastCell) {\n return 'last';\n } else {\n return undefined;\n }\n}\nfunction $getObserverCellFromCellNodeOrThrow(tableObserver, tableCellNode) {\n const {\n tableNode\n } = tableObserver.$lookup();\n const currentCords = tableNode.getCordsFromCellNode(tableCellNode, tableObserver.table);\n return tableNode.getDOMCellFromCordsOrThrow(currentCords.x, currentCords.y, tableObserver.table);\n}\nfunction $getNearestTableCellInTableFromDOMNode(tableNode, startingDOM, editorState) {\n return $findParentTableCellNodeInTable(tableNode, $getNearestNodeFromDOMNode(startingDOM, editorState));\n}\n\nfunction isHTMLDivElement(element) {\n return isHTMLElement$1(element) && element.nodeName === 'DIV';\n}\nfunction updateColgroup(dom, config, colCount, colWidths) {\n const colGroup = dom.querySelector('colgroup');\n if (!colGroup) {\n return;\n }\n const cols = [];\n for (let i = 0; i < colCount; i++) {\n const col = document.createElement('col');\n const width = colWidths && colWidths[i];\n if (width) {\n col.style.width = `${width}px`;\n }\n cols.push(col);\n }\n colGroup.replaceChildren(...cols);\n}\nfunction setRowStriping(dom, config, rowStriping) {\n if (rowStriping) {\n addClassNamesToElement(dom, config.theme.tableRowStriping);\n dom.setAttribute('data-lexical-row-striping', 'true');\n } else {\n removeClassNamesFromElement(dom, config.theme.tableRowStriping);\n dom.removeAttribute('data-lexical-row-striping');\n }\n}\nfunction setFrozenColumns(dom, tableElement, config, frozenColumnCount) {\n if (frozenColumnCount > 0) {\n addClassNamesToElement(dom, config.theme.tableFrozenColumn);\n tableElement.setAttribute('data-lexical-frozen-column', 'true');\n } else {\n removeClassNamesFromElement(dom, config.theme.tableFrozenColumn);\n tableElement.removeAttribute('data-lexical-frozen-column');\n }\n}\nfunction setFrozenRows(dom, tableElement, config, frozenRowCount) {\n if (frozenRowCount > 0) {\n addClassNamesToElement(dom, config.theme.tableFrozenRow);\n tableElement.setAttribute('data-lexical-frozen-row', 'true');\n } else {\n removeClassNamesFromElement(dom, config.theme.tableFrozenRow);\n tableElement.removeAttribute('data-lexical-frozen-row');\n }\n}\nfunction alignTableElement(dom, config, formatType) {\n if (!config.theme.tableAlignment) {\n return;\n }\n const removeClasses = [];\n const addClasses = [];\n for (const format of ['center', 'right']) {\n const classes = config.theme.tableAlignment[format];\n if (!classes) {\n continue;\n }\n (format === formatType ? addClasses : removeClasses).push(classes);\n }\n removeClassNamesFromElement(dom, ...removeClasses);\n addClassNamesToElement(dom, ...addClasses);\n}\nconst scrollableEditors = new WeakSet();\nfunction $isScrollableTablesActive(editor = $getEditor()) {\n return scrollableEditors.has(editor);\n}\nfunction setScrollableTablesActive(editor, active) {\n if (active) {\n if (!editor._config.theme.tableScrollableWrapper) {\n console.warn('TableNode: hasHorizontalScroll is active but theme.tableScrollableWrapper is not defined.');\n }\n scrollableEditors.add(editor);\n } else {\n scrollableEditors.delete(editor);\n }\n}\n\n/** @noInheritDoc */\nclass TableNode extends ElementNode {\n /** @internal */\n __rowStriping;\n __frozenColumnCount;\n __frozenRowCount;\n __colWidths;\n static getType() {\n return 'table';\n }\n getColWidths() {\n const self = this.getLatest();\n return self.__colWidths;\n }\n setColWidths(colWidths) {\n const self = this.getWritable();\n // NOTE: Node properties should be immutable. Freeze to prevent accidental mutation.\n self.__colWidths = colWidths !== undefined && true ? Object.freeze(colWidths) : colWidths;\n return self;\n }\n static clone(node) {\n return new TableNode(node.__key);\n }\n afterCloneFrom(prevNode) {\n super.afterCloneFrom(prevNode);\n this.__colWidths = prevNode.__colWidths;\n this.__rowStriping = prevNode.__rowStriping;\n this.__frozenColumnCount = prevNode.__frozenColumnCount;\n this.__frozenRowCount = prevNode.__frozenRowCount;\n }\n static importDOM() {\n return {\n table: _node => ({\n conversion: $convertTableElement,\n priority: 1\n })\n };\n }\n static importJSON(serializedNode) {\n return $createTableNode().updateFromJSON(serializedNode);\n }\n updateFromJSON(serializedNode) {\n return super.updateFromJSON(serializedNode).setRowStriping(serializedNode.rowStriping || false).setFrozenColumns(serializedNode.frozenColumnCount || 0).setFrozenRows(serializedNode.frozenRowCount || 0).setColWidths(serializedNode.colWidths);\n }\n constructor(key) {\n super(key);\n this.__rowStriping = false;\n this.__frozenColumnCount = 0;\n this.__frozenRowCount = 0;\n this.__colWidths = undefined;\n }\n exportJSON() {\n return {\n ...super.exportJSON(),\n colWidths: this.getColWidths(),\n frozenColumnCount: this.__frozenColumnCount ? this.__frozenColumnCount : undefined,\n frozenRowCount: this.__frozenRowCount ? this.__frozenRowCount : undefined,\n rowStriping: this.__rowStriping ? this.__rowStriping : undefined\n };\n }\n extractWithChild(child, selection, destination) {\n return destination === 'html';\n }\n getDOMSlot(element) {\n const tableElement = !isHTMLTableElement(element) ? element.querySelector('table') : element;\n if (!isHTMLTableElement(tableElement)) {\n formatDevErrorMessage(`TableNode.getDOMSlot: createDOM() did not return a table`);\n }\n return super.getDOMSlot(element).withElement(tableElement).withAfter(tableElement.querySelector('colgroup'));\n }\n createDOM(config, editor) {\n const tableElement = document.createElement('table');\n if (this.__style) {\n tableElement.style.cssText = this.__style;\n }\n const colGroup = document.createElement('colgroup');\n tableElement.appendChild(colGroup);\n setDOMUnmanaged(colGroup);\n addClassNamesToElement(tableElement, config.theme.table);\n this.updateTableElement(null, tableElement, config);\n if ($isScrollableTablesActive(editor)) {\n const wrapperElement = document.createElement('div');\n const classes = config.theme.tableScrollableWrapper;\n if (classes) {\n addClassNamesToElement(wrapperElement, classes);\n } else {\n wrapperElement.style.cssText = 'overflow-x: auto;';\n }\n wrapperElement.appendChild(tableElement);\n this.updateTableWrapper(null, wrapperElement, tableElement, config);\n return wrapperElement;\n }\n return tableElement;\n }\n updateTableWrapper(prevNode, tableWrapper, tableElement, config) {\n if (this.__frozenColumnCount !== (prevNode ? prevNode.__frozenColumnCount : 0)) {\n setFrozenColumns(tableWrapper, tableElement, config, this.__frozenColumnCount);\n }\n if (this.__frozenRowCount !== (prevNode ? prevNode.__frozenRowCount : 0)) {\n setFrozenRows(tableWrapper, tableElement, config, this.__frozenRowCount);\n }\n }\n updateTableElement(prevNode, tableElement, config) {\n if (this.__style !== (prevNode ? prevNode.__style : '')) {\n tableElement.style.cssText = this.__style;\n }\n if (this.__rowStriping !== (prevNode ? prevNode.__rowStriping : false)) {\n setRowStriping(tableElement, config, this.__rowStriping);\n }\n updateColgroup(tableElement, config, this.getColumnCount(), this.getColWidths());\n alignTableElement(tableElement, config, this.getFormatType());\n }\n updateDOM(prevNode, dom, config) {\n const slot = this.getDOMSlot(dom);\n const tableElement = slot.element;\n if (dom === tableElement === $isScrollableTablesActive()) {\n return true;\n }\n if (isHTMLDivElement(dom)) {\n this.updateTableWrapper(prevNode, dom, tableElement, config);\n }\n this.updateTableElement(prevNode, tableElement, config);\n return false;\n }\n exportDOM(editor) {\n const superExport = super.exportDOM(editor);\n const {\n element\n } = superExport;\n return {\n after: tableElement => {\n if (superExport.after) {\n tableElement = superExport.after(tableElement);\n }\n if (!isHTMLTableElement(tableElement) && isHTMLElement$1(tableElement)) {\n tableElement = tableElement.querySelector('table');\n }\n if (!isHTMLTableElement(tableElement)) {\n return null;\n }\n alignTableElement(tableElement, editor._config, this.getFormatType());\n\n // Scan the table map to build a map of table cell key to the columns it needs\n const [tableMap] = $computeTableMapSkipCellCheck(this, null, null);\n const cellValues = new Map();\n for (const mapRow of tableMap) {\n for (const mapValue of mapRow) {\n const key = mapValue.cell.getKey();\n if (!cellValues.has(key)) {\n cellValues.set(key, {\n colSpan: mapValue.cell.getColSpan(),\n startColumn: mapValue.startColumn\n });\n }\n }\n }\n\n // scan the DOM to find the table cell keys that were used and mark those columns\n const knownColumns = new Set();\n for (const cellDOM of tableElement.querySelectorAll(':scope > tr > [data-temporary-table-cell-lexical-key]')) {\n const key = cellDOM.getAttribute('data-temporary-table-cell-lexical-key');\n if (key) {\n const cellSpan = cellValues.get(key);\n cellDOM.removeAttribute('data-temporary-table-cell-lexical-key');\n if (cellSpan) {\n cellValues.delete(key);\n for (let i = 0; i < cellSpan.colSpan; i++) {\n knownColumns.add(i + cellSpan.startColumn);\n }\n }\n }\n }\n\n // Compute the colgroup and columns in the export\n const colGroup = tableElement.querySelector(':scope > colgroup');\n if (colGroup) {\n // Only include the <col /> for rows that are in the output\n const cols = Array.from(tableElement.querySelectorAll(':scope > colgroup > col')).filter((dom, i) => knownColumns.has(i));\n colGroup.replaceChildren(...cols);\n }\n\n // Wrap direct descendant rows in a tbody for export\n const rows = tableElement.querySelectorAll(':scope > tr');\n if (rows.length > 0) {\n const tBody = document.createElement('tbody');\n for (const row of rows) {\n tBody.appendChild(row);\n }\n tableElement.append(tBody);\n }\n return tableElement;\n },\n element: !isHTMLTableElement(element) && isHTMLElement$1(element) ? element.querySelector('table') : element\n };\n }\n canBeEmpty() {\n return false;\n }\n isShadowRoot() {\n return true;\n }\n getCordsFromCellNode(tableCellNode, table) {\n const {\n rows,\n domRows\n } = table;\n for (let y = 0; y < rows; y++) {\n const row = domRows[y];\n if (row == null) {\n continue;\n }\n for (let x = 0; x < row.length; x++) {\n const cell = row[x];\n if (cell == null) {\n continue;\n }\n const {\n elem\n } = cell;\n const cellNode = $getNearestTableCellInTableFromDOMNode(this, elem);\n if (cellNode !== null && tableCellNode.is(cellNode)) {\n return {\n x,\n y\n };\n }\n }\n }\n throw new Error('Cell not found in table.');\n }\n getDOMCellFromCords(x, y, table) {\n const {\n domRows\n } = table;\n const row = domRows[y];\n if (row == null) {\n return null;\n }\n const index = x < row.length ? x : row.length - 1;\n const cell = row[index];\n if (cell == null) {\n return null;\n }\n return cell;\n }\n getDOMCellFromCordsOrThrow(x, y, table) {\n const cell = this.getDOMCellFromCords(x, y, table);\n if (!cell) {\n throw new Error('Cell not found at cords.');\n }\n return cell;\n }\n getCellNodeFromCords(x, y, table) {\n const cell = this.getDOMCellFromCords(x, y, table);\n if (cell == null) {\n return null;\n }\n const node = $getNearestNodeFromDOMNode(cell.elem);\n if ($isTableCellNode(node)) {\n return node;\n }\n return null;\n }\n getCellNodeFromCordsOrThrow(x, y, table) {\n const node = this.getCellNodeFromCords(x, y, table);\n if (!node) {\n throw new Error('Node at cords not TableCellNode.');\n }\n return node;\n }\n getRowStriping() {\n return Boolean(this.getLatest().__rowStriping);\n }\n setRowStriping(newRowStriping) {\n const self = this.getWritable();\n self.__rowStriping = newRowStriping;\n return self;\n }\n setFrozenColumns(columnCount) {\n const self = this.getWritable();\n self.__frozenColumnCount = columnCount;\n return self;\n }\n getFrozenColumns() {\n return this.getLatest().__frozenColumnCount;\n }\n setFrozenRows(rowCount) {\n const self = this.getWritable();\n self.__frozenRowCount = rowCount;\n return self;\n }\n getFrozenRows() {\n return this.getLatest().__frozenRowCount;\n }\n canSelectBefore() {\n return true;\n }\n canIndent() {\n return false;\n }\n getColumnCount() {\n const firstRow = this.getFirstChild();\n if (!firstRow) {\n return 0;\n }\n let columnCount = 0;\n firstRow.getChildren().forEach(cell => {\n if ($isTableCellNode(cell)) {\n columnCount += cell.getColSpan();\n }\n });\n return columnCount;\n }\n}\nfunction $getElementForTableNode(editor, tableNode) {\n const tableElement = editor.getElementByKey(tableNode.getKey());\n if (!(tableElement !== null)) {\n formatDevErrorMessage(`$getElementForTableNode: Table Element Not Found`);\n }\n return getTable(tableNode, tableElement);\n}\nfunction $convertTableElement(domNode) {\n const tableNode = $createTableNode();\n if (domNode.hasAttribute('data-lexical-row-striping')) {\n tableNode.setRowStriping(true);\n }\n if (domNode.hasAttribute('data-lexical-frozen-column')) {\n tableNode.setFrozenColumns(1);\n }\n if (domNode.hasAttribute('data-lexical-frozen-row')) {\n tableNode.setFrozenRows(1);\n }\n const colGroup = domNode.querySelector(':scope > colgroup');\n if (colGroup) {\n let columns = [];\n for (const col of colGroup.querySelectorAll(':scope > col')) {\n let width = col.style.width || '';\n if (!PIXEL_VALUE_REG_EXP.test(width)) {\n // Also support deprecated width attribute for google docs\n width = col.getAttribute('width') || '';\n if (!/^\\d+$/.test(width)) {\n columns = undefined;\n break;\n }\n }\n columns.push(parseFloat(width));\n }\n if (columns) {\n tableNode.setColWidths(columns);\n }\n }\n return {\n after: children => $descendantsMatching(children, $isTableRowNode),\n node: tableNode\n };\n}\nfunction $createTableNode() {\n return $applyNodeReplacement(new TableNode());\n}\nfunction $isTableNode(node) {\n return node instanceof TableNode;\n}\n\nfunction $insertTableCommandListener({\n rows,\n columns,\n includeHeaders\n}) {\n const selection = $getSelection() || $getPreviousSelection();\n if (!selection || !$isRangeSelection(selection)) {\n return false;\n }\n\n // Prevent nested tables by checking if we're already inside a table\n if ($findTableNode(selection.anchor.getNode())) {\n return false;\n }\n const tableNode = $createTableNodeWithDimensions(Number(rows), Number(columns), includeHeaders);\n $insertNodeToNearestRoot(tableNode);\n const firstDescendant = tableNode.getFirstDescendant();\n if ($isTextNode(firstDescendant)) {\n firstDescendant.select();\n }\n return true;\n}\nfunction $tableCellTransform(node) {\n if (!$isTableRowNode(node.getParent())) {\n // TableCellNode must be a child of TableRowNode.\n node.remove();\n } else if (node.isEmpty()) {\n // TableCellNode should never be empty\n node.append($createParagraphNode());\n }\n}\nfunction $tableRowTransform(node) {\n if (!$isTableNode(node.getParent())) {\n // TableRowNode must be a child of TableNode.\n // TODO: Future support of tbody/thead/tfoot may change this\n node.remove();\n } else {\n $unwrapAndFilterDescendants(node, $isTableCellNode);\n }\n}\nfunction $tableTransform(node) {\n // TableRowNode is the only valid child for TableNode\n // TODO: Future support of tbody/thead/tfoot/caption may change this\n $unwrapAndFilterDescendants(node, $isTableRowNode);\n const [gridMap] = $computeTableMapSkipCellCheck(node, null, null);\n const maxRowLength = gridMap.reduce((curLength, row) => {\n return Math.max(curLength, row.length);\n }, 0);\n const rowNodes = node.getChildren();\n for (let i = 0; i < gridMap.length; ++i) {\n const rowNode = rowNodes[i];\n if (!rowNode) {\n continue;\n }\n if (!$isTableRowNode(rowNode)) {\n formatDevErrorMessage(`TablePlugin: Expecting all children of TableNode to be TableRowNode, found ${rowNode.constructor.name} (type ${rowNode.getType()})`);\n }\n const rowLength = gridMap[i].reduce((acc, cell) => cell ? 1 + acc : acc, 0);\n if (rowLength === maxRowLength) {\n continue;\n }\n for (let j = rowLength; j < maxRowLength; ++j) {\n // TODO: inherit header state from another header or body\n const newCell = $createTableCellNode();\n newCell.append($createParagraphNode());\n rowNode.append(newCell);\n }\n }\n}\nfunction $tableClickCommand(event) {\n if (event.detail < 3 || !isDOMNode(event.target)) {\n return false;\n }\n const startNode = $getNearestNodeFromDOMNode(event.target);\n if (startNode === null) {\n return false;\n }\n const blockNode = $findMatchingParent(startNode, node => $isElementNode(node) && !node.isInline());\n if (blockNode === null) {\n return false;\n }\n const rootNode = blockNode.getParent();\n if (!$isTableCellNode(rootNode)) {\n return false;\n }\n blockNode.select(0);\n return true;\n}\n\n/**\n * Register a transform to ensure that all TableCellNode have a colSpan and rowSpan of 1.\n * This should only be registered when you do not want to support merged cells.\n *\n * @param editor The editor\n * @returns An unregister callback\n */\nfunction registerTableCellUnmergeTransform(editor) {\n return editor.registerNodeTransform(TableCellNode, node => {\n if (node.getColSpan() > 1 || node.getRowSpan() > 1) {\n // When we have rowSpan we have to map the entire Table to understand where the new Cells\n // fit best; let's analyze all Cells at once to save us from further transform iterations\n const [,, gridNode] = $getNodeTriplet(node);\n const [gridMap] = $computeTableMap(gridNode, node, node);\n // TODO this function expects Tables to be normalized. Look into this once it exists\n const rowsCount = gridMap.length;\n const columnsCount = gridMap[0].length;\n let row = gridNode.getFirstChild();\n if (!$isTableRowNode(row)) {\n formatDevErrorMessage(`Expected TableNode first child to be a RowNode`);\n }\n const unmerged = [];\n for (let i = 0; i < rowsCount; i++) {\n if (i !== 0) {\n row = row.getNextSibling();\n if (!$isTableRowNode(row)) {\n formatDevErrorMessage(`Expected TableNode first child to be a RowNode`);\n }\n }\n let lastRowCell = null;\n for (let j = 0; j < columnsCount; j++) {\n const cellMap = gridMap[i][j];\n const cell = cellMap.cell;\n if (cellMap.startRow === i && cellMap.startColumn === j) {\n lastRowCell = cell;\n unmerged.push(cell);\n } else if (cell.getColSpan() > 1 || cell.getRowSpan() > 1) {\n if (!$isTableCellNode(cell)) {\n formatDevErrorMessage(`Expected TableNode cell to be a TableCellNode`);\n }\n const newCell = $createTableCellNode(cell.__headerState);\n if (lastRowCell !== null) {\n lastRowCell.insertAfter(newCell);\n } else {\n $insertFirst$1(row, newCell);\n }\n }\n }\n }\n for (const cell of unmerged) {\n cell.setColSpan(1);\n cell.setRowSpan(1);\n }\n }\n });\n}\nfunction registerTableSelectionObserver(editor, hasTabHandler = true) {\n const tableSelections = new Map();\n const initializeTableNode = (tableNode, nodeKey, dom) => {\n const tableElement = getTableElement(tableNode, dom);\n const tableSelection = applyTableHandlers(tableNode, tableElement, editor, hasTabHandler);\n tableSelections.set(nodeKey, [tableSelection, tableElement]);\n };\n const unregisterMutationListener = editor.registerMutationListener(TableNode, nodeMutations => {\n editor.getEditorState().read(() => {\n for (const [nodeKey, mutation] of nodeMutations) {\n const tableSelection = tableSelections.get(nodeKey);\n if (mutation === 'created' || mutation === 'updated') {\n const {\n tableNode,\n tableElement\n } = $getTableAndElementByKey(nodeKey);\n if (tableSelection === undefined) {\n initializeTableNode(tableNode, nodeKey, tableElement);\n } else if (tableElement !== tableSelection[1]) {\n // The update created a new DOM node, destroy the existing TableObserver\n tableSelection[0].removeListeners();\n tableSelections.delete(nodeKey);\n initializeTableNode(tableNode, nodeKey, tableElement);\n }\n } else if (mutation === 'destroyed') {\n if (tableSelection !== undefined) {\n tableSelection[0].removeListeners();\n tableSelections.delete(nodeKey);\n }\n }\n }\n }, {\n editor\n });\n }, {\n skipInitialization: false\n });\n return () => {\n unregisterMutationListener();\n // Hook might be called multiple times so cleaning up tables listeners as well,\n // as it'll be reinitialized during recurring call\n for (const [, [tableSelection]] of tableSelections) {\n tableSelection.removeListeners();\n }\n };\n}\n\n/**\n * Register the INSERT_TABLE_COMMAND listener and the table integrity transforms. The\n * table selection observer should be registered separately after this with\n * {@link registerTableSelectionObserver}.\n *\n * @param editor The editor\n * @returns An unregister callback\n */\nfunction registerTablePlugin(editor) {\n if (!editor.hasNodes([TableNode])) {\n {\n formatDevErrorMessage(`TablePlugin: TableNode is not registered on editor`);\n }\n }\n return mergeRegister(editor.registerCommand(INSERT_TABLE_COMMAND, $insertTableCommandListener, COMMAND_PRIORITY_EDITOR), editor.registerCommand(SELECTION_INSERT_CLIPBOARD_NODES_COMMAND, ({\n nodes,\n selection\n }, dispatchEditor) => {\n if (editor !== dispatchEditor || !$isRangeSelection(selection)) {\n return false;\n }\n const isInsideTableCell = $findTableNode(selection.anchor.getNode()) !== null;\n return isInsideTableCell && nodes.some($isTableNode);\n }, COMMAND_PRIORITY_EDITOR), editor.registerCommand(CLICK_COMMAND, $tableClickCommand, COMMAND_PRIORITY_EDITOR), editor.registerNodeTransform(TableNode, $tableTransform), editor.registerNodeTransform(TableRowNode, $tableRowTransform), editor.registerNodeTransform(TableCellNode, $tableCellTransform));\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/**\n * Configures {@link TableNode}, {@link TableRowNode}, {@link TableCellNode} and\n * registers table behaviors (see {@link TableConfig})\n */\nconst TableExtension = defineExtension({\n build(editor, config, state) {\n return namedSignals(config);\n },\n config: safeCast({\n hasCellBackgroundColor: true,\n hasCellMerge: true,\n hasHorizontalScroll: true,\n hasTabHandler: true\n }),\n name: '@lexical/table/Table',\n nodes: [TableNode, TableRowNode, TableCellNode],\n register(editor, config, state) {\n const stores = state.getOutput();\n return mergeRegister(effect(() => {\n const hasHorizontalScroll = stores.hasHorizontalScroll.value;\n const hadHorizontalScroll = $isScrollableTablesActive(editor);\n if (hadHorizontalScroll !== hasHorizontalScroll) {\n setScrollableTablesActive(editor, hasHorizontalScroll);\n // Registering the transform has the side-effect of marking all existing\n // TableNodes as dirty. The handler is immediately unregistered.\n editor.registerNodeTransform(TableNode, () => {})();\n }\n }), registerTablePlugin(editor), effect(() => registerTableSelectionObserver(editor, stores.hasTabHandler.value)), effect(() => stores.hasCellMerge.value ? undefined : registerTableCellUnmergeTransform(editor)), effect(() => stores.hasCellBackgroundColor.value ? undefined : editor.registerNodeTransform(TableCellNode, node => {\n if (node.getBackgroundColor() !== null) {\n node.setBackgroundColor(null);\n }\n })));\n }\n});\n\nexport { $computeTableMap, $computeTableMapSkipCellCheck, $createTableCellNode, $createTableNode, $createTableNodeWithDimensions, $createTableRowNode, $createTableSelection, $createTableSelectionFrom, $deleteTableColumn, $deleteTableColumnAtSelection, $deleteTableColumn__EXPERIMENTAL, $deleteTableRowAtSelection, $deleteTableRow__EXPERIMENTAL, $findCellNode, $findTableNode, $getElementForTableNode, $getNodeTriplet, $getTableAndElementByKey, $getTableCellNodeFromLexicalNode, $getTableCellNodeRect, $getTableColumnIndexFromTableCellNode, $getTableNodeFromLexicalNodeOrThrow, $getTableRowIndexFromTableCellNode, $getTableRowNodeFromTableCellNodeOrThrow, $insertTableColumn, $insertTableColumnAtSelection, $insertTableColumn__EXPERIMENTAL, $insertTableRow, $insertTableRowAtSelection, $insertTableRow__EXPERIMENTAL, $isScrollableTablesActive, $isTableCellNode, $isTableNode, $isTableRowNode, $isTableSelection, $mergeCells, $removeTableRowAtIndex, $unmergeCell, INSERT_TABLE_COMMAND, TableCellHeaderStates, TableCellNode, TableExtension, TableNode, TableObserver, TableRowNode, applyTableHandlers, getDOMCellFromTarget, getTableElement, getTableObserverFromTableElement, registerTableCellUnmergeTransform, registerTablePlugin, registerTableSelectionObserver, setScrollableTablesActive };\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{addClassNamesToElement as e,$descendantsMatching as t,$findMatchingParent as n,removeClassNamesFromElement as o,objectKlassEquals as r,isHTMLElement as l,$insertFirst as s,mergeRegister as i,$insertNodeToNearestRoot as c,$unwrapAndFilterDescendants as a}from\"@lexical/utils\";import{ElementNode as u,isHTMLElement as h,$isInlineElementOrDecoratorNode as d,$isTextNode as f,$isLineBreakNode as g,$createParagraphNode as m,$applyNodeReplacement as p,createCommand as C,$createTextNode as _,$getSelection as S,$isRangeSelection as w,$isParagraphNode as b,$createPoint as y,$getNodeByKey as N,$isElementNode as v,$normalizeSelection__EXPERIMENTAL as x,isCurrentlyReadOnlyMode as T,TEXT_TYPE_TO_FORMAT as R,$getEditor as F,$setSelection as O,SELECTION_CHANGE_COMMAND as A,getDOMSelection as K,$createRangeSelection as E,$isRootNode as k,INSERT_PARAGRAPH_COMMAND as M,KEY_ARROW_DOWN_COMMAND as $,KEY_ARROW_UP_COMMAND as z,KEY_ARROW_LEFT_COMMAND as W,KEY_ARROW_RIGHT_COMMAND as H,COMMAND_PRIORITY_HIGH as L,KEY_ESCAPE_COMMAND as B,DELETE_WORD_COMMAND as P,DELETE_LINE_COMMAND as D,DELETE_CHARACTER_COMMAND as I,KEY_BACKSPACE_COMMAND as U,KEY_DELETE_COMMAND as J,CUT_COMMAND as Y,FORMAT_TEXT_COMMAND as X,FORMAT_ELEMENT_COMMAND as q,CONTROLLED_TEXT_INSERTION_COMMAND as j,KEY_TAB_COMMAND as V,FOCUS_COMMAND as G,SELECTION_INSERT_CLIPBOARD_NODES_COMMAND as Q,$getPreviousSelection as Z,$getNearestNodeFromDOMNode as ee,$createRangeSelectionFromDom as te,isDOMNode as ne,$isRootOrShadowRoot as oe,$caretFromPoint as re,$isExtendableTextPointCaret as le,$extendCaretToRange as se,$isSiblingCaret as ie,$getSiblingCaret as ce,$setPointFromCaret as ae,$normalizeCaret as ue,$isChildCaret as he,$getChildCaret as de,$getAdjacentChildCaret as fe,setDOMUnmanaged as ge,COMMAND_PRIORITY_EDITOR as me,CLICK_COMMAND as pe,defineExtension as Ce,safeCast as _e}from\"lexical\";import{effect as Se,namedSignals as we}from\"@lexical/extension\";import{copyToClipboard as be,$getClipboardDataFromSelection as ye}from\"@lexical/clipboard\";const Ne=/^(\\d+(?:\\.\\d+)?)px$/,ve={BOTH:3,COLUMN:2,NO_STATUS:0,ROW:1};class xe extends u{__colSpan;__rowSpan;__headerState;__width;__backgroundColor;__verticalAlign;static getType(){return\"tablecell\"}static clone(e){return new xe(e.__headerState,e.__colSpan,e.__width,e.__key)}afterCloneFrom(e){super.afterCloneFrom(e),this.__rowSpan=e.__rowSpan,this.__backgroundColor=e.__backgroundColor,this.__verticalAlign=e.__verticalAlign}static importDOM(){return{td:e=>({conversion:Re,priority:0}),th:e=>({conversion:Re,priority:0})}}static importJSON(e){return Fe().updateFromJSON(e)}updateFromJSON(e){return super.updateFromJSON(e).setHeaderStyles(e.headerState).setColSpan(e.colSpan||1).setRowSpan(e.rowSpan||1).setWidth(e.width||void 0).setBackgroundColor(e.backgroundColor||null).setVerticalAlign(e.verticalAlign||void 0)}constructor(e=ve.NO_STATUS,t=1,n,o){super(o),this.__colSpan=t,this.__rowSpan=1,this.__headerState=e,this.__width=n,this.__backgroundColor=null,this.__verticalAlign=void 0}createDOM(t){const n=document.createElement(this.getTag());return this.__width&&(n.style.width=`${this.__width}px`),this.__colSpan>1&&(n.colSpan=this.__colSpan),this.__rowSpan>1&&(n.rowSpan=this.__rowSpan),null!==this.__backgroundColor&&(n.style.backgroundColor=this.__backgroundColor),Te(this.__verticalAlign)&&(n.style.verticalAlign=this.__verticalAlign),e(n,t.theme.tableCell,this.hasHeader()&&t.theme.tableCellHeader),n}exportDOM(e){const t=super.exportDOM(e);if(h(t.element)){const e=t.element;e.setAttribute(\"data-temporary-table-cell-lexical-key\",this.getKey()),e.style.border=\"1px solid black\",this.__colSpan>1&&(e.colSpan=this.__colSpan),this.__rowSpan>1&&(e.rowSpan=this.__rowSpan),e.style.width=`${this.getWidth()||75}px`,e.style.verticalAlign=this.getVerticalAlign()||\"top\",e.style.textAlign=\"start\",null===this.__backgroundColor&&this.hasHeader()&&(e.style.backgroundColor=\"#f2f3f5\")}return t}exportJSON(){return{...super.exportJSON(),...Te(this.__verticalAlign)&&{verticalAlign:this.__verticalAlign},backgroundColor:this.getBackgroundColor(),colSpan:this.__colSpan,headerState:this.__headerState,rowSpan:this.__rowSpan,width:this.getWidth()}}getColSpan(){return this.getLatest().__colSpan}setColSpan(e){const t=this.getWritable();return t.__colSpan=e,t}getRowSpan(){return this.getLatest().__rowSpan}setRowSpan(e){const t=this.getWritable();return t.__rowSpan=e,t}getTag(){return this.hasHeader()?\"th\":\"td\"}setHeaderStyles(e,t=ve.BOTH){const n=this.getWritable();return n.__headerState=e&t|n.__headerState&~t,n}getHeaderStyles(){return this.getLatest().__headerState}setWidth(e){const t=this.getWritable();return t.__width=e,t}getWidth(){return this.getLatest().__width}getBackgroundColor(){return this.getLatest().__backgroundColor}setBackgroundColor(e){const t=this.getWritable();return t.__backgroundColor=e,t}getVerticalAlign(){return this.getLatest().__verticalAlign}setVerticalAlign(e){const t=this.getWritable();return t.__verticalAlign=e||void 0,t}toggleHeaderStyle(e){const t=this.getWritable();return(t.__headerState&e)===e?t.__headerState-=e:t.__headerState+=e,t}hasHeaderState(e){return(this.getHeaderStyles()&e)===e}hasHeader(){return this.getLatest().__headerState!==ve.NO_STATUS}updateDOM(e){return e.__headerState!==this.__headerState||e.__width!==this.__width||e.__colSpan!==this.__colSpan||e.__rowSpan!==this.__rowSpan||e.__backgroundColor!==this.__backgroundColor||e.__verticalAlign!==this.__verticalAlign}isShadowRoot(){return!0}collapseAtStart(){return!0}canBeEmpty(){return!1}canIndent(){return!1}}function Te(e){return\"middle\"===e||\"bottom\"===e}function Re(e){const t=e,n=e.nodeName.toLowerCase();let o;Ne.test(t.style.width)&&(o=parseFloat(t.style.width));const r=Fe(\"th\"===n?ve.ROW:ve.NO_STATUS,t.colSpan,o);r.__rowSpan=t.rowSpan;const l=t.style.backgroundColor;\"\"!==l&&(r.__backgroundColor=l);const s=t.style.verticalAlign;Te(s)&&(r.__verticalAlign=s);const i=t.style,c=(i&&i.textDecoration||\"\").split(\" \"),a=\"700\"===i.fontWeight||\"bold\"===i.fontWeight,u=c.includes(\"line-through\"),h=\"italic\"===i.fontStyle,p=c.includes(\"underline\");return{after:e=>{const t=[];let n=null;const o=()=>{if(n){const e=n.getFirstChild();g(e)&&1===n.getChildrenSize()&&e.remove()}};for(const r of e)d(r)||f(r)||g(r)?(f(r)&&(a&&r.toggleFormat(\"bold\"),u&&r.toggleFormat(\"strikethrough\"),h&&r.toggleFormat(\"italic\"),p&&r.toggleFormat(\"underline\")),n?n.append(r):(n=m().append(r),t.push(n))):(t.push(r),o(),n=null);return o(),0===t.length&&t.push(m()),t},node:r}}function Fe(e=ve.NO_STATUS,t=1,n){return p(new xe(e,t,n))}function Oe(e){return e instanceof xe}const Ae=C(\"INSERT_TABLE_COMMAND\");function Ke(e,...t){const n=new URL(\"https://lexical.dev/docs/error\"),o=new URLSearchParams;o.append(\"code\",e);for(const e of t)o.append(\"v\",e);throw n.search=o.toString(),Error(`Minified Lexical error #${e}; visit ${n.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}class Ee extends u{__height;static getType(){return\"tablerow\"}static clone(e){return new Ee(e.__height,e.__key)}static importDOM(){return{tr:e=>({conversion:ke,priority:0})}}static importJSON(e){return Me().updateFromJSON(e)}updateFromJSON(e){return super.updateFromJSON(e).setHeight(e.height)}constructor(e,t){super(t),this.__height=e}exportJSON(){const e=this.getHeight();return{...super.exportJSON(),...void 0===e?void 0:{height:e}}}createDOM(t){const n=document.createElement(\"tr\");return this.__height&&(n.style.height=`${this.__height}px`),e(n,t.theme.tableRow),n}extractWithChild(e,t,n){return\"html\"===n}isShadowRoot(){return!0}setHeight(e){const t=this.getWritable();return t.__height=e,t}getHeight(){return this.getLatest().__height}updateDOM(e){return e.__height!==this.__height}canBeEmpty(){return!1}canIndent(){return!1}}function ke(e){const n=e;let o;return Ne.test(n.style.height)&&(o=parseFloat(n.style.height)),{after:e=>t(e,Oe),node:Me(o)}}function Me(e){return p(new Ee(e))}function $e(e){return e instanceof Ee}const ze=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,We=ze&&\"documentMode\"in document?document.documentMode:null,He=ze&&/^(?!.*Seamonkey)(?=.*Firefox).*/i.test(navigator.userAgent);function Le(e,t,n=!0){const o=gn();for(let r=0;r<e;r++){const e=Me();for(let o=0;o<t;o++){let t=ve.NO_STATUS;\"object\"==typeof n?(0===r&&n.rows&&(t|=ve.ROW),0===o&&n.columns&&(t|=ve.COLUMN)):n&&(0===r&&(t|=ve.ROW),0===o&&(t|=ve.COLUMN));const l=Fe(t),s=m();s.append(_()),l.append(s),e.append(l)}o.append(e)}return o}function Be(e){const t=n(e,e=>Oe(e));return Oe(t)?t:null}function Pe(e){const t=n(e,e=>$e(e));if($e(t))return t;throw new Error(\"Expected table cell to be inside of table row.\")}function De(e){const t=n(e,e=>mn(e));if(mn(t))return t;throw new Error(\"Expected table cell to be inside of table.\")}function Ie(e){const t=Pe(e);return De(t).getChildren().findIndex(e=>e.is(t))}function Ue(e){return Pe(e).getChildren().findIndex(t=>t.is(e))}function Je(e,t){const n=De(e),{x:o,y:r}=n.getCordsFromCellNode(e,t);return{above:n.getCellNodeFromCords(o,r-1,t),below:n.getCellNodeFromCords(o,r+1,t),left:n.getCellNodeFromCords(o-1,r,t),right:n.getCellNodeFromCords(o+1,r,t)}}function Ye(e,t){const n=e.getChildren();if(t>=n.length||t<0)throw new Error(\"Expected table cell to be inside of table row.\");return n[t].remove(),e}function Xe(e,t,n=!0,o,r){const l=e.getChildren();if(t>=l.length||t<0)throw new Error(\"Table row target index out of range\");const s=l[t];if(!$e(s))throw new Error(\"Row before insertion index does not exist.\");for(let e=0;e<o;e++){const e=s.getChildren(),t=e.length,o=Me();for(let n=0;n<t;n++){const t=e[n];Oe(t)||Ke(12);const{above:l,below:s}=Je(t,r);let i=ve.NO_STATUS;const c=l&&l.getWidth()||s&&s.getWidth()||void 0;(l&&l.hasHeaderState(ve.COLUMN)||s&&s.hasHeaderState(ve.COLUMN))&&(i|=ve.COLUMN);const a=Fe(i,1,c);a.append(m()),o.append(a)}n?s.insertAfter(o):s.insertBefore(o)}return e}ze&&\"InputEvent\"in window&&!We&&new window.InputEvent(\"input\");const qe=(e,t)=>e===ve.BOTH||e===t?t:ve.NO_STATUS;function je(e=!0){const t=S();w(t)||wt(t)||Ke(188);const n=t.anchor.getNode(),o=t.focus.getNode(),[r]=mt(n),[l,,s]=mt(o),[,i,c]=ft(s,l,r),{startRow:a}=c,{startRow:u}=i;return e?Ge(a+r.__rowSpan>u+l.__rowSpan?r:l,!0):Ge(u<a?l:r,!1)}const Ve=je;function Ge(e,t=!0){const[,,n]=mt(e),[o,r]=ft(n,e,e),l=o[0].length,{startRow:s}=r;let i=null;if(t){const t=s+e.__rowSpan-1,r=o[t],c=Me();for(let e=0;e<l;e++){const{cell:n,startRow:o}=r[e];if(o+n.__rowSpan-1<=t){const t=r[e].cell.__headerState,n=qe(t,ve.COLUMN);c.append(Fe(n).append(m()))}else n.setRowSpan(n.__rowSpan+1)}const a=n.getChildAtIndex(t);$e(a)||Ke(256),a.insertAfter(c),i=c}else{const e=s,t=o[e],r=Me();for(let n=0;n<l;n++){const{cell:o,startRow:l}=t[n];if(l===e){const e=t[n].cell.__headerState,o=qe(e,ve.COLUMN);r.append(Fe(o).append(m()))}else o.setRowSpan(o.__rowSpan+1)}const c=n.getChildAtIndex(e);$e(c)||Ke(257),c.insertBefore(r),i=r}return i}function Qe(e,t,n=!0,o,r){const l=e.getChildren(),s=[];for(let e=0;e<l.length;e++){const n=l[e];if($e(n))for(let e=0;e<o;e++){const e=n.getChildren();if(t>=e.length||t<0)throw new Error(\"Table column target index out of range\");const o=e[t];Oe(o)||Ke(12);const{left:l,right:i}=Je(o,r);let c=ve.NO_STATUS;(l&&l.hasHeaderState(ve.ROW)||i&&i.hasHeaderState(ve.ROW))&&(c|=ve.ROW);const a=Fe(c);a.append(m()),s.push({newTableCell:a,targetCell:o})}}return s.forEach(({newTableCell:e,targetCell:t})=>{n?t.insertAfter(e):t.insertBefore(e)}),e}function Ze(e=!0){const t=S();w(t)||wt(t)||Ke(188);const n=t.anchor.getNode(),o=t.focus.getNode(),[r]=mt(n),[l,,s]=mt(o),[,i,c]=ft(s,l,r),{startColumn:a}=c,{startColumn:u}=i;return e?tt(a+r.__colSpan>u+l.__colSpan?r:l,!0):tt(u<a?l:r,!1)}const et=Ze;function tt(e,t=!0,n=!0){const[,,o]=mt(e),[r,l]=ft(o,e,e),s=r.length,{startColumn:i}=l,c=t?i+e.__colSpan-1:i-1,a=o.getFirstChild();$e(a)||Ke(120);let u=null;function h(e=ve.NO_STATUS){const t=Fe(e).append(m());return null===u&&(u=t),t}let d=a;e:for(let e=0;e<s;e++){if(0!==e){const e=d.getNextSibling();$e(e)||Ke(121),d=e}const t=r[e],n=t[c<0?0:c].cell.__headerState,o=qe(n,ve.ROW);if(c<0){ct(d,h(o));continue}const{cell:l,startColumn:s,startRow:i}=t[c];if(s+l.__colSpan-1<=c){let n=l,r=i,s=c;for(;r!==e&&n.__rowSpan>1;){if(s-=l.__colSpan,!(s>=0)){d.append(h(o));continue e}{const{cell:e,startRow:o}=t[s];n=e,r=o}}n.insertAfter(h(o))}else l.setColSpan(l.__colSpan+1)}null!==u&&n&&it(u);const f=o.getColWidths();if(f){const e=[...f],t=c<0?0:c,n=e[t];e.splice(t,0,n),o.setColWidths(e)}return u}function nt(e,t){const n=e.getChildren();for(let e=0;e<n.length;e++){const o=n[e];if($e(o)){const e=o.getChildren();if(t>=e.length||t<0)throw new Error(\"Table column target index out of range\");e[t].remove()}}return e}function ot(){const e=S();w(e)||wt(e)||Ke(188);const[t,n]=e.isBackward()?[e.focus.getNode(),e.anchor.getNode()]:[e.anchor.getNode(),e.focus.getNode()],[o,,r]=mt(t),[l]=mt(n),[s,i,c]=ft(r,o,l),{startRow:a}=i,{startRow:u}=c,h=u+l.__rowSpan-1;if(s.length===h-a+1)return void r.remove();const d=s[0].length,f=s[h+1],g=r.getChildAtIndex(h+1);for(let e=h;e>=a;e--){for(let t=d-1;t>=0;t--){const{cell:n,startRow:o,startColumn:r}=s[e][t];if(r===t){if(o<a||o+n.__rowSpan-1>h){const e=Math.max(o,a),t=Math.min(n.__rowSpan+o-1,h),r=e<=t?t-e+1:0;n.setRowSpan(n.__rowSpan-r)}if(o>=a&&o+n.__rowSpan-1>h&&e===h){null===g&&Ke(122);let o=null;for(let n=0;n<t;n++){const t=f[n],r=t.cell;t.startRow===e+1&&(o=r),r.__colSpan>1&&(n+=r.__colSpan-1)}null===o?ct(g,n):o.insertAfter(n)}}}const t=r.getChildAtIndex(e);$e(t)||Ke(206,String(e)),t.remove()}if(void 0!==f){const{cell:e}=f[0];it(e)}else{const e=s[a-1],{cell:t}=e[0];it(t)}}const rt=ot;function lt(){const e=S();w(e)||wt(e)||Ke(188);const t=e.anchor.getNode(),n=e.focus.getNode(),[o,,r]=mt(t),[l]=mt(n),[s,i,c]=ft(r,o,l),{startColumn:a}=i,{startRow:u,startColumn:h}=c,d=Math.min(a,h),f=Math.max(a+o.__colSpan-1,h+l.__colSpan-1),g=f-d+1;if(s[0].length===f-d+1)return r.selectPrevious(),void r.remove();const m=s.length;for(let e=0;e<m;e++)for(let t=d;t<=f;t++){const{cell:n,startColumn:o}=s[e][t];if(o<d){if(t===d){const e=d-o;n.setColSpan(n.__colSpan-Math.min(g,n.__colSpan-e))}}else if(o+n.__colSpan-1>f){if(t===f){const e=f-o+1;n.setColSpan(n.__colSpan-e)}}else n.remove()}const p=s[u],C=a>h?p[a+o.__colSpan]:p[h+l.__colSpan];if(void 0!==C){const{cell:e}=C;it(e)}else{const e=h<a?p[h-1]:p[a-1],{cell:t}=e;it(t)}const _=r.getColWidths();if(_){const e=[..._];e.splice(d,g),r.setColWidths(e)}}const st=lt;function it(e){const t=e.getFirstDescendant();null==t?e.selectStart():t.getParentOrThrow().selectStart()}function ct(e,t){const n=e.getFirstChild();null!==n?n.insertBefore(t):e.append(t)}function at(e){if(0===e.length)return null;const t=De(e[0]),[n]=gt(t,null,null);let o=1/0,r=-1/0,l=1/0,s=-1/0;const i=new Set;for(const t of n)for(const n of t){if(!n||!n.cell)continue;const t=n.cell.getKey();if(!i.has(t)&&e.some(e=>e.is(n.cell))){i.add(t);const e=n.startRow,c=n.startColumn,a=n.cell.__rowSpan||1,u=n.cell.__colSpan||1;o=Math.min(o,e),r=Math.max(r,e+a-1),l=Math.min(l,c),s=Math.max(s,c+u-1)}}if(o===1/0||l===1/0)return null;const c=r-o+1,a=s-l+1,u=n[o][l];if(!u.cell)return null;const h=u.cell;h.setColSpan(a),h.setRowSpan(c);const d=new Set([h.getKey()]);for(let e=o;e<=r;e++)for(let t=l;t<=s;t++){const o=n[e][t];if(!o.cell)continue;const r=o.cell,l=r.getKey();if(!d.has(l)){d.add(l);ut(r)||h.append(...r.getChildren()),r.remove()}}return 0===h.getChildrenSize()&&h.append(m()),h}function ut(e){if(1!==e.getChildrenSize())return!1;const t=e.getFirstChildOrThrow();return!(!b(t)||!t.isEmpty())}function ht(){const e=S();w(e)||wt(e)||Ke(188);const t=e.anchor.getNode(),o=n(t,Oe);return Oe(o)||Ke(148),dt(o)}function dt(e){const[t,n,o]=mt(e),r=t.__colSpan,l=t.__rowSpan;if(1===r&&1===l)return;const[s,i]=ft(o,t,t),{startColumn:c,startRow:a}=i,u=t.__headerState&ve.COLUMN,h=Array.from({length:r},(e,t)=>{let n=u;for(let e=0;0!==n&&e<s.length;e++)n&=s[e][t+c].cell.__headerState;return n}),d=t.__headerState&ve.ROW,f=Array.from({length:l},(e,t)=>{let n=d;for(let e=0;0!==n&&e<s[0].length;e++)n&=s[t+a][e].cell.__headerState;return n});if(r>1){for(let e=1;e<r;e++)t.insertAfter(Fe(h[e]|f[0]).append(m()));t.setColSpan(1)}if(l>1){let e;for(let t=1;t<l;t++){const o=a+t,l=s[o];e=(e||n).getNextSibling(),$e(e)||Ke(125);let i=null;for(let e=0;e<c;e++){const t=l[e],n=t.cell;t.startRow===o&&(i=n),n.__colSpan>1&&(e+=n.__colSpan-1)}if(null===i)for(let n=r-1;n>=0;n--)ct(e,Fe(h[n]|f[t]).append(m()));else for(let e=r-1;e>=0;e--)i.insertAfter(Fe(h[e]|f[t]).append(m()))}t.setRowSpan(1)}}function ft(e,t,n){const[o,r,l]=gt(e,t,n);return null===r&&Ke(207),null===l&&Ke(208),[o,r,l]}function gt(e,t,n){const o=[];let r=null,l=null;function s(e){let t=o[e];return void 0===t&&(o[e]=t=[]),t}const i=e.getChildren();for(let e=0;e<i.length;e++){const o=i[e];$e(o)||Ke(209);const c=s(e);for(let a=o.getFirstChild(),u=0;null!=a;a=a.getNextSibling()){for(Oe(a)||Ke(147);void 0!==c[u];)u++;const o={cell:a,startColumn:u,startRow:e},{__rowSpan:h,__colSpan:d}=a;for(let t=0;t<h&&!(e+t>=i.length);t++){const n=s(e+t);for(let e=0;e<d;e++)n[u+e]=o}null!==t&&null===r&&t.is(a)&&(r=o),null!==n&&null===l&&n.is(a)&&(l=o)}}return[o,r,l]}function mt(e){let t;if(e instanceof xe)t=e;else if(\"__type\"in e){const o=n(e,Oe);Oe(o)||Ke(148),t=o}else{const o=n(e.getNode(),Oe);Oe(o)||Ke(148),t=o}const o=t.getParent();$e(o)||Ke(149);const r=o.getParent();return mn(r)||Ke(210),[t,o,r]}function pt(e,t,n){let o,r=Math.min(t.startColumn,n.startColumn),l=Math.min(t.startRow,n.startRow),s=Math.max(t.startColumn+t.cell.__colSpan-1,n.startColumn+n.cell.__colSpan-1),i=Math.max(t.startRow+t.cell.__rowSpan-1,n.startRow+n.cell.__rowSpan-1);do{o=!1;for(let t=0;t<e.length;t++)for(let n=0;n<e[0].length;n++){const c=e[t][n];if(!c)continue;const a=c.startColumn+c.cell.__colSpan-1,u=c.startRow+c.cell.__rowSpan-1,h=c.startColumn<=s&&a>=r,d=c.startRow<=i&&u>=l;if(h&&d){const e=Math.min(r,c.startColumn),t=Math.max(s,a),n=Math.min(l,c.startRow),h=Math.max(i,u);e===r&&t===s&&n===l&&h===i||(r=e,s=t,l=n,i=h,o=!0)}}}while(o);return{maxColumn:s,maxRow:i,minColumn:r,minRow:l}}function Ct(e){const[t,,n]=mt(e),o=n.getChildren(),r=o.length,l=o[0].getChildren().length,s=new Array(r);for(let e=0;e<r;e++)s[e]=new Array(l);for(let e=0;e<r;e++){const n=o[e].getChildren();let r=0;for(let o=0;o<n.length;o++){for(;s[e][r];)r++;const l=n[o],i=l.__rowSpan||1,c=l.__colSpan||1;for(let t=0;t<i;t++)for(let n=0;n<c;n++)s[e+t][r+n]=l;if(t===l)return{colSpan:c,columnIndex:r,rowIndex:e,rowSpan:i};r+=c}}return null}function _t(e){const[[t,o,r,l],[s,i,c,a]]=[\"anchor\",\"focus\"].map(t=>{const o=e[t].getNode(),r=n(o,Oe);Oe(r)||Ke(238,t,o.getKey(),o.getType());const l=r.getParent();$e(l)||Ke(239,t);const s=l.getParent();return mn(s)||Ke(240,t),[o,r,l,s]});return l.is(a)||Ke(241),{anchorCell:o,anchorNode:t,anchorRow:r,anchorTable:l,focusCell:i,focusNode:s,focusRow:c,focusTable:a}}class St{tableKey;anchor;focus;_cachedNodes;dirty;constructor(e,t,n){this.anchor=t,this.focus=n,t._selection=this,n._selection=this,this._cachedNodes=null,this.dirty=!1,this.tableKey=e}getStartEndPoints(){return[this.anchor,this.focus]}isValid(){if(\"root\"===this.tableKey||\"root\"===this.anchor.key||\"element\"!==this.anchor.type||\"root\"===this.focus.key||\"element\"!==this.focus.type)return!1;const e=N(this.tableKey),t=N(this.anchor.key),n=N(this.focus.key);return null!==e&&null!==t&&null!==n}isBackward(){return this.focus.isBefore(this.anchor)}getCachedNodes(){return this._cachedNodes}setCachedNodes(e){this._cachedNodes=e}is(e){return wt(e)&&this.tableKey===e.tableKey&&this.anchor.is(e.anchor)&&this.focus.is(e.focus)}set(e,t,n){this.dirty=this.dirty||e!==this.tableKey||t!==this.anchor.key||n!==this.focus.key,this.tableKey=e,this.anchor.key=t,this.focus.key=n,this._cachedNodes=null}clone(){return new St(this.tableKey,y(this.anchor.key,this.anchor.offset,this.anchor.type),y(this.focus.key,this.focus.offset,this.focus.type))}isCollapsed(){return!1}extract(){return this.getNodes()}insertRawText(e){}insertText(){}hasFormat(e){let t=0;this.getNodes().filter(Oe).forEach(e=>{const n=e.getFirstChild();b(n)&&(t|=n.getTextFormat())});const n=R[e];return 0!==(t&n)}insertNodes(e){const t=this.focus.getNode();v(t)||Ke(151);x(t.select(0,t.getChildrenSize())).insertNodes(e)}getShape(){const{anchorCell:e,focusCell:t}=_t(this),n=Ct(e);null===n&&Ke(153);const o=Ct(t);null===o&&Ke(155);const r=Math.min(n.columnIndex,o.columnIndex),l=Math.max(n.columnIndex+n.colSpan-1,o.columnIndex+o.colSpan-1),s=Math.min(n.rowIndex,o.rowIndex),i=Math.max(n.rowIndex+n.rowSpan-1,o.rowIndex+o.rowSpan-1);return{fromX:Math.min(r,l),fromY:Math.min(s,i),toX:Math.max(r,l),toY:Math.max(s,i)}}getNodes(){if(!this.isValid())return[];const e=this._cachedNodes;if(null!==e)return e;const{anchorTable:t,anchorCell:n,focusCell:o}=_t(this),r=o.getParents()[1];if(r!==t){if(t.isParentOf(o)){const e=r.getParent();null==e&&Ke(159),this.set(this.tableKey,o.getKey(),e.getKey())}else{const e=t.getParent();null==e&&Ke(158),this.set(this.tableKey,e.getKey(),o.getKey())}return this.getNodes()}const[l,s,i]=ft(t,n,o),{minColumn:c,maxColumn:a,minRow:u,maxRow:h}=pt(l,s,i),d=new Map([[t.getKey(),t]]);let f=null;for(let e=u;e<=h;e++)for(let t=c;t<=a;t++){const{cell:n}=l[e][t],o=n.getParent();$e(o)||Ke(160),o!==f&&(d.set(o.getKey(),o),f=o),d.has(n.getKey())||Nt(n,e=>{d.set(e.getKey(),e)})}const g=Array.from(d.values());return T()||(this._cachedNodes=g),g}getTextContent(){const e=this.getNodes().filter(e=>Oe(e));let t=\"\";for(let n=0;n<e.length;n++){const o=e[n],r=o.__parent,l=(e[n+1]||{}).__parent;t+=o.getTextContent()+(l!==r?\"\\n\":\"\\t\")}return t}}function wt(e){return e instanceof St}function bt(){const e=y(\"root\",0,\"element\"),t=y(\"root\",0,\"element\");return new St(\"root\",e,t)}function yt(e,t,n){e.getKey(),t.getKey(),n.getKey();const o=S(),r=wt(o)?o.clone():bt();return r.set(e.getKey(),t.getKey(),n.getKey()),r}function Nt(e,t){const n=[[e]];for(let e=n.at(-1);void 0!==e&&n.length>0;e=n.at(-1)){const o=e.pop();void 0===o?n.pop():!1!==t(o)&&v(o)&&n.push(o.getChildren())}}function vt(e,t=F()){const n=N(e);mn(n)||Ke(231,e);const o=Ft(n,t.getElementByKey(e));return null===o&&Ke(232,e),{tableElement:o,tableNode:n}}class xt{focusX;focusY;listenersToRemove;table;isHighlightingCells;anchorX;anchorY;tableNodeKey;anchorCell;focusCell;anchorCellNodeKey;focusCellNodeKey;editor;tableSelection;hasHijackedSelectionStyles;isSelecting;pointerType;shouldCheckSelection;abortController;listenerOptions;nextFocus;constructor(e,t){this.isHighlightingCells=!1,this.anchorX=-1,this.anchorY=-1,this.focusX=-1,this.focusY=-1,this.listenersToRemove=new Set,this.tableNodeKey=t,this.editor=e,this.table={columns:0,domRows:[],rows:0},this.tableSelection=null,this.anchorCellNodeKey=null,this.focusCellNodeKey=null,this.anchorCell=null,this.focusCell=null,this.hasHijackedSelectionStyles=!1,this.isSelecting=!1,this.pointerType=null,this.shouldCheckSelection=!1,this.abortController=new AbortController,this.listenerOptions={signal:this.abortController.signal},this.nextFocus=null,this.trackTable()}getTable(){return this.table}removeListeners(){this.abortController.abort(\"removeListeners\"),Array.from(this.listenersToRemove).forEach(e=>e()),this.listenersToRemove.clear()}$lookup(){return vt(this.tableNodeKey,this.editor)}trackTable(){const e=new MutationObserver(e=>{this.editor.getEditorState().read(()=>{let t=!1;for(let n=0;n<e.length;n++){const o=e[n].target.nodeName;if(\"TABLE\"===o||\"TBODY\"===o||\"THEAD\"===o||\"TR\"===o){t=!0;break}}if(!t)return;const{tableNode:n,tableElement:o}=this.$lookup();this.table=Ht(n,o)},{editor:this.editor})});this.editor.getEditorState().read(()=>{const{tableNode:t,tableElement:n}=this.$lookup();this.table=Ht(t,n),e.observe(n,{attributes:!0,childList:!0,subtree:!0})},{editor:this.editor})}$clearHighlight(){const e=this.editor;this.isHighlightingCells=!1,this.anchorX=-1,this.anchorY=-1,this.focusX=-1,this.focusY=-1,this.tableSelection=null,this.anchorCellNodeKey=null,this.focusCellNodeKey=null,this.anchorCell=null,this.focusCell=null,this.hasHijackedSelectionStyles=!1,this.$enableHighlightStyle();const{tableNode:t,tableElement:n}=this.$lookup();Lt(e,Ht(t,n),null),null!==S()&&(O(null),e.dispatchCommand(A,void 0))}$enableHighlightStyle(){const e=this.editor,{tableElement:t}=this.$lookup();o(t,e._config.theme.tableSelection),t.classList.remove(\"disable-selection\"),this.hasHijackedSelectionStyles=!1}$disableHighlightStyle(){const{tableElement:t}=this.$lookup();e(t,this.editor._config.theme.tableSelection),this.hasHijackedSelectionStyles=!0}$updateTableTableSelection(e){if(null!==e){e.tableKey!==this.tableNodeKey&&Ke(233,e.tableKey,this.tableNodeKey);const t=this.editor;this.tableSelection=e,this.isHighlightingCells=!0,this.$disableHighlightStyle(),this.updateDOMSelection(),Lt(t,this.table,this.tableSelection)}else this.$clearHighlight()}setShouldCheckSelection(){this.shouldCheckSelection=!0}getAndClearShouldCheckSelection(){return!!this.shouldCheckSelection&&(this.shouldCheckSelection=!1,!0)}setNextFocus(e){this.nextFocus=e}getAndClearNextFocus(){const{nextFocus:e}=this;return null!==e&&(this.nextFocus=null),e}updateDOMSelection(){if(null!==this.anchorCell&&null!==this.focusCell){const e=K(this.editor._window);e&&e.rangeCount>0&&e.removeAllRanges()}}$setFocusCellForSelection(e,t=!1){const n=this.editor,{tableNode:o}=this.$lookup(),r=e.x,l=e.y;if(this.focusCell=e,this.isHighlightingCells||this.anchorX===r&&this.anchorY===l&&!t){if(r===this.focusX&&l===this.focusY)return!1}else this.isHighlightingCells=!0,this.$disableHighlightStyle();if(this.focusX=r,this.focusY=l,this.isHighlightingCells){const t=ln(o,e.elem);if(null!=this.tableSelection&&null!=this.anchorCellNodeKey&&null!==t)return this.focusCellNodeKey=t.getKey(),this.tableSelection=yt(o,this.$getAnchorTableCellOrThrow(),t),O(this.tableSelection),n.dispatchCommand(A,void 0),Lt(n,this.table,this.tableSelection),!0}return!1}$getAnchorTableCell(){return this.anchorCellNodeKey?N(this.anchorCellNodeKey):null}$getAnchorTableCellOrThrow(){const e=this.$getAnchorTableCell();return null===e&&Ke(234),e}$getFocusTableCell(){return this.focusCellNodeKey?N(this.focusCellNodeKey):null}$getFocusTableCellOrThrow(){const e=this.$getFocusTableCell();return null===e&&Ke(235),e}$setAnchorCellForSelection(e){this.isHighlightingCells=!1,this.anchorCell=e,this.anchorX=e.x,this.anchorY=e.y;const{tableNode:t}=this.$lookup(),n=ln(t,e.elem);if(null!==n){const e=n.getKey();this.tableSelection=null!=this.tableSelection?this.tableSelection.clone():bt(),this.anchorCellNodeKey=e}}$formatCells(e){const t=S();wt(t)||Ke(236);const n=E(),o=n.anchor,r=n.focus,l=t.getNodes().filter(Oe);l.length>0||Ke(237);const s=l[0].getFirstChild(),i=b(s)?s.getFormatFlags(e,null):null;l.forEach(t=>{o.set(t.getKey(),0,\"element\"),r.set(t.getKey(),t.getChildrenSize(),\"element\"),n.formatText(e,i)}),O(t),this.editor.dispatchCommand(A,void 0)}$clearText(){const{editor:e}=this,t=N(this.tableNodeKey);if(!mn(t))throw new Error(\"Expected TableNode.\");const n=S();wt(n)||Ke(253);const o=n.getNodes().filter(Oe),r=t.getFirstChild(),l=t.getLastChild();if(o.length>0&&null!==r&&null!==l&&$e(r)&&$e(l)&&o[0]===r.getFirstChild()&&o[o.length-1]===l.getLastChild()){t.selectPrevious();const n=t.getParent();return t.remove(),void(k(n)&&n.isEmpty()&&e.dispatchCommand(M,void 0))}o.forEach(e=>{if(v(e)){const t=m(),n=_();t.append(n),e.append(t),e.getChildren().forEach(e=>{e!==t&&e.remove()})}}),Lt(e,this.table,null),O(null),e.dispatchCommand(A,void 0)}}const Tt=\"__lexicalTableSelection\";function Rt(e){return h(e)&&\"TABLE\"===e.nodeName}function Ft(e,t){if(!t)return t;const n=Rt(t)?t:e.getDOMSlot(t).element;return\"TABLE\"!==n.nodeName&&Ke(245,t.nodeName),n}function Ot(e){return e._window}function At(e,t){for(let n=t,o=null;null!==n;n=n.getParent()){if(e.is(n))return o;Oe(n)&&(o=n)}return null}const Kt=[[$,\"down\"],[z,\"up\"],[W,\"backward\"],[H,\"forward\"]],Et=[P,D,I],kt=[U,J];function Mt(e,t,o,l){const s=o.getRootElement(),i=Ot(o);null!==s&&null!==i||Ke(246);const c=new xt(o,e.getKey()),a=Ft(e,t);!function(e,t){null!==$t(e)&&Ke(205);e[Tt]=t}(a,c),c.listenersToRemove.add(()=>function(e,t){$t(e)===t&&delete e[Tt]}(a,c));const u=t=>{if(c.pointerType=t.pointerType,0!==t.button||!ne(t.target)||!i)return;const n=zt(t.target);null!==n&&o.update(()=>{const o=Z();if(He&&t.shiftKey&&Xt(o,e)&&(w(o)||wt(o))){const r=o.anchor.getNode(),l=At(e,o.anchor.getNode());if(l)c.$setAnchorCellForSelection(rn(c,l)),c.$setFocusCellForSelection(n),tn(t);else{(e.isBefore(r)?e.selectStart():e.selectEnd()).anchor.set(o.anchor.key,o.anchor.offset,o.anchor.type)}}else\"touch\"!==t.pointerType&&c.$setAnchorCellForSelection(n)}),(()=>{if(c.isSelecting)return;const e=()=>{c.isSelecting=!1,i.removeEventListener(\"pointerup\",e),i.removeEventListener(\"pointermove\",t)},t=n=>{if(1&~n.buttons&&c.isSelecting)return c.isSelecting=!1,i.removeEventListener(\"pointerup\",e),void i.removeEventListener(\"pointermove\",t);if(!ne(n.target))return;let r=null;const l=!(He||a.contains(n.target));if(l)r=Wt(a,n.target);else for(const e of document.elementsFromPoint(n.clientX,n.clientY))if(r=Wt(a,e),r)break;!r||null!==c.focusCell&&r.elem===c.focusCell.elem||(c.setNextFocus({focusCell:r,override:l}),o.dispatchCommand(A,void 0))};c.isSelecting=!0,i.addEventListener(\"pointerup\",e,c.listenerOptions),i.addEventListener(\"pointermove\",t,c.listenerOptions)})()};a.addEventListener(\"pointerdown\",u,c.listenerOptions),c.listenersToRemove.add(()=>{a.removeEventListener(\"pointerdown\",u)});const h=e=>{if(e.detail>=3&&ne(e.target)){null!==zt(e.target)&&e.preventDefault()}};a.addEventListener(\"mousedown\",h,c.listenerOptions),c.listenersToRemove.add(()=>{a.removeEventListener(\"mousedown\",h)});const d=e=>{const t=e.target;0===e.button&&ne(t)&&o.update(()=>{const e=S();wt(e)&&e.tableKey===c.tableNodeKey&&s.contains(t)&&c.$clearHighlight()})};i.addEventListener(\"pointerdown\",d,c.listenerOptions),c.listenersToRemove.add(()=>{i.removeEventListener(\"pointerdown\",d)});for(const[t,n]of Kt)c.listenersToRemove.add(o.registerCommand(t,t=>en(o,t,n,e,c),L));c.listenersToRemove.add(o.registerCommand(B,t=>{const n=S();if(wt(n)){const o=At(e,n.focus.getNode());if(null!==o)return tn(t),o.selectEnd(),!0}return!1},L));const g=t=>()=>{const o=S();if(!Xt(o,e))return!1;if(wt(o))return c.$clearText(),!0;if(w(o)){if(!Oe(At(e,o.anchor.getNode())))return!1;const r=o.anchor.getNode(),l=o.focus.getNode(),s=e.isParentOf(r),i=e.isParentOf(l);if(s&&!i||i&&!s)return c.$clearText(),!0;const a=n(o.anchor.getNode(),e=>v(e)),u=a&&n(a,e=>v(e)&&Oe(e.getParent()));if(!v(u)||!v(a))return!1;if(t===D&&null===u.getPreviousSibling())return!0}return!1};for(const e of Et)c.listenersToRemove.add(o.registerCommand(e,g(e),L));const p=t=>{const n=S();if(!wt(n)&&!w(n))return!1;const o=e.isParentOf(n.anchor.getNode());if(o!==e.isParentOf(n.focus.getNode())){const t=o?\"anchor\":\"focus\",r=o?\"focus\":\"anchor\",{key:l,offset:s,type:i}=n[r];return e[n[t].isBefore(n[r])?\"selectPrevious\":\"selectNext\"]()[r].set(l,s,i),!1}return!!Xt(n,e)&&(!!wt(n)&&(t&&(t.preventDefault(),t.stopPropagation()),c.$clearText(),!0))};for(const e of kt)c.listenersToRemove.add(o.registerCommand(e,p,L));return c.listenersToRemove.add(o.registerCommand(Y,e=>{const t=S();if(t){if(!wt(t)&&!w(t))return!1;be(o,r(e,ClipboardEvent)?e:null,ye(t));const n=p(e);return w(t)?(t.removeText(),!0):n}return!1},L)),c.listenersToRemove.add(o.registerCommand(X,t=>{const o=S();if(!Xt(o,e))return!1;if(wt(o))return c.$formatCells(t),!0;if(w(o)){const e=n(o.anchor.getNode(),e=>Oe(e));if(!Oe(e))return!1}return!1},L)),c.listenersToRemove.add(o.registerCommand(q,t=>{const n=S();if(!wt(n)||!Xt(n,e))return!1;const o=n.anchor.getNode(),r=n.focus.getNode();if(!Oe(o)||!Oe(r))return!1;if(function(e,t){if(wt(e)){const n=e.anchor.getNode(),o=e.focus.getNode();if(t&&n&&o){const[e]=ft(t,n,o);return n.getKey()===e[0][0].cell.getKey()&&o.getKey()===e[e.length-1].at(-1).cell.getKey()}}return!1}(n,e))return e.setFormat(t),!0;const[l,s,i]=ft(e,o,r),c=Math.max(s.startRow+s.cell.__rowSpan-1,i.startRow+i.cell.__rowSpan-1),a=Math.max(s.startColumn+s.cell.__colSpan-1,i.startColumn+i.cell.__colSpan-1),u=Math.min(s.startRow,i.startRow),h=Math.min(s.startColumn,i.startColumn),d=new Set;for(let e=u;e<=c;e++)for(let n=h;n<=a;n++){const o=l[e][n].cell;if(d.has(o))continue;d.add(o),o.setFormat(t);const r=o.getChildren();for(let e=0;e<r.length;e++){const n=r[e];v(n)&&!n.isInline()&&n.setFormat(t)}}return!0},L)),c.listenersToRemove.add(o.registerCommand(j,t=>{const r=S();if(!Xt(r,e))return!1;if(wt(r))return c.$clearHighlight(),!1;if(w(r)){const l=n(r.anchor.getNode(),e=>Oe(e));if(!Oe(l))return!1;if(\"string\"==typeof t){const n=on(o,r,e);if(n)return nn(n,e,[_(t)]),!0}}return!1},L)),l&&c.listenersToRemove.add(o.registerCommand(V,t=>{const o=S();if(!w(o)||!o.isCollapsed()||!Xt(o,e))return!1;const r=Gt(o.anchor.getNode());return!(null===r||!e.is(Qt(r)))&&(tn(t),function(e,t){const o=\"next\"===t?\"getNextSibling\":\"getPreviousSibling\",r=\"next\"===t?\"getFirstChild\":\"getLastChild\",l=e[o]();if(v(l))return l.selectEnd();const s=n(e,$e);null===s&&Ke(247);for(let e=s[o]();$e(e);e=e[o]()){const t=e[r]();if(v(t))return t.selectEnd()}const i=n(s,mn);null===i&&Ke(248);\"next\"===t?i.selectNext():i.selectPrevious()}(r,t.shiftKey?\"previous\":\"next\"),!0)},L)),c.listenersToRemove.add(o.registerCommand(G,t=>e.isSelected(),L)),c.listenersToRemove.add(o.registerCommand(Q,(e,t)=>{if(o!==t)return!1;const{nodes:r,selection:l}=e,s=l.getStartEndPoints(),i=wt(l),c=w(l)&&null!==n(l.anchor.getNode(),e=>Oe(e))&&null!==n(l.focus.getNode(),e=>Oe(e))||i;if(1!==r.length||!mn(r[0])||!c||null===s)return!1;const[a,u]=s,[h,d,g]=mt(a),p=n(u.getNode(),e=>Oe(e));if(!(Oe(h)&&Oe(p)&&$e(d)&&mn(g)))return!1;const C=r[0],[_,S,b]=ft(g,h,p),[y]=gt(C,null,null),N=_.length,v=N>0?_[0].length:0;let x=S.startRow,T=S.startColumn,R=y.length,F=R>0?y[0].length:0;if(i){const e=pt(_,S,b),t=e.maxRow-e.minRow+1,n=e.maxColumn-e.minColumn+1;x=e.minRow,T=e.minColumn,R=Math.min(R,t),F=Math.min(F,n)}let O=!1;const A=Math.min(N,x+R)-1,K=Math.min(v,T+F)-1,E=new Set;for(let e=x;e<=A;e++)for(let t=T;t<=K;t++){const n=_[e][t];E.has(n.cell.getKey())||(1===n.cell.__rowSpan&&1===n.cell.__colSpan||(dt(n.cell),E.add(n.cell.getKey()),O=!0))}let[k]=gt(g.getWritable(),null,null);const M=R-N+x;for(let e=0;e<M;e++){Ge(k[N-1][0].cell)}const $=F-v+T;for(let e=0;e<$;e++){tt(k[0][v-1].cell,!0,!1)}[k]=gt(g.getWritable(),null,null);for(let e=x;e<x+R;e++)for(let t=T;t<T+F;t++){const n=e-x,o=t-T,r=y[n][o];if(r.startRow!==n||r.startColumn!==o)continue;const l=r.cell;if(1!==l.__rowSpan||1!==l.__colSpan){const n=[],o=Math.min(e+l.__rowSpan,x+R)-1,r=Math.min(t+l.__colSpan,T+F)-1;for(let l=e;l<=o;l++)for(let e=t;e<=r;e++){const t=k[l][e];n.push(t.cell)}at(n),O=!0}const{cell:s}=k[e][t],i=s.getChildren();l.getChildren().forEach(e=>{if(f(e)){m().append(e),s.append(e)}else s.append(e)}),i.forEach(e=>e.remove())}if(i&&O){const[e]=gt(g.getWritable(),null,null);e[S.startRow][S.startColumn].cell.selectEnd()}return!0},L)),c.listenersToRemove.add(o.registerCommand(A,()=>{const t=S(),r=Z(),l=c.getAndClearNextFocus();if(null!==l){const{focusCell:n}=l;if(wt(t)&&t.tableKey===c.tableNodeKey)return(n.x!==c.focusX||n.y!==c.focusY)&&(c.$setFocusCellForSelection(n),!0);if(n!==c.anchorCell&&Xt(t,e))return c.$setFocusCellForSelection(n),!0}if(c.getAndClearShouldCheckSelection()&&w(r)&&w(t)&&t.isCollapsed()){const o=t.anchor.getNode(),r=e.getFirstChild(),l=Gt(o);if(null!==l&&$e(r)){const t=r.getFirstChild();if(Oe(t)&&e.is(n(l,n=>n.is(e)||n.is(t))))return t.selectStart(),!0}}if(w(t)){const{anchor:n,focus:l}=t,s=n.getNode(),i=l.getNode(),a=Gt(s),u=Gt(i),h=!(!a||!e.is(Qt(a))),d=!(!u||!e.is(Qt(u))),f=h!==d,g=h&&d,m=t.isBackward();if(f){const n=t.clone();if(d){const[t]=ft(e,u,u),o=t[0][0].cell,r=t[t.length-1].at(-1).cell;n.focus.set(m?o.getKey():r.getKey(),m?o.getChildrenSize():r.getChildrenSize(),\"element\")}else if(h){const[t]=ft(e,a,a),o=t[0][0].cell,r=t[t.length-1].at(-1).cell;n.anchor.set(m?r.getKey():o.getKey(),m?r.getChildrenSize():0,\"element\")}O(n),Pt(o,c)}else if(g&&(a.is(u)||(c.$setAnchorCellForSelection(rn(c,a)),c.$setFocusCellForSelection(rn(c,u),!0)),\"touch\"===c.pointerType&&c.isSelecting&&t.isCollapsed()&&w(r)&&r.isCollapsed())){const e=Gt(r.anchor.getNode());e&&!e.is(u)&&(c.$setAnchorCellForSelection(rn(c,e)),c.$setFocusCellForSelection(rn(c,u),!0),c.pointerType=null)}}else if(t&&wt(t)&&t.is(r)&&t.tableKey===e.getKey()){const n=K(i);if(n&&n.anchorNode&&n.focusNode){const r=ee(n.focusNode),l=r&&!e.isParentOf(r),s=ee(n.anchorNode),i=s&&e.isParentOf(s);if(l&&i&&n.rangeCount>0){const r=te(n,o);r&&(r.anchor.set(e.getKey(),t.isBackward()?e.getChildrenSize():0,\"element\"),n.removeAllRanges(),O(r))}}}return t&&!t.is(r)&&(wt(t)||wt(r))&&c.tableSelection&&!c.tableSelection.is(r)?(wt(t)&&t.tableKey===c.tableNodeKey?c.$updateTableTableSelection(t):!wt(t)&&wt(r)&&r.tableKey===c.tableNodeKey&&c.$updateTableTableSelection(null),!1):(c.hasHijackedSelectionStyles&&!e.isSelected()?function(e,t){t.$enableHighlightStyle(),Bt(t.table,t=>{const n=t.elem;t.highlighted=!1,Vt(e,t),n.getAttribute(\"style\")||n.removeAttribute(\"style\")})}(o,c):!c.hasHijackedSelectionStyles&&e.isSelected()&&Pt(o,c),!1)},L)),c.listenersToRemove.add(o.registerCommand(M,()=>{const t=S();if(!w(t)||!t.isCollapsed()||!Xt(t,e))return!1;const n=on(o,t,e);return!!n&&(nn(n,e),!0)},L)),c}function $t(e){return e[Tt]||null}function zt(e){let t=e;for(;null!=t;){const e=t.nodeName;if(\"TD\"===e||\"TH\"===e){const e=t._cell;return void 0===e?null:e}t=t.parentNode}return null}function Wt(e,t){if(!e.contains(t))return null;let n=null;for(let o=t;null!=o;o=o.parentNode){if(o===e)return n;const t=o.nodeName;\"TD\"!==t&&\"TH\"!==t||(n=o._cell||null)}return null}function Ht(e,t){const n=[],o={columns:0,domRows:n,rows:0};let r=Ft(e,t).querySelector(\"tr\"),l=0,s=0;for(n.length=0;null!=r;){const e=r.nodeName;if(\"TD\"===e||\"TH\"===e){const e={elem:r,hasBackgroundColor:\"\"!==r.style.backgroundColor,highlighted:!1,x:l,y:s};r._cell=e;let t=n[s];void 0===t&&(t=n[s]=[]),t[l]=e}else{const e=r.firstChild;if(null!=e){r=e;continue}}const t=r.nextSibling;if(null!=t){l++,r=t;continue}const o=r.parentNode;if(null!=o){const e=o.nextSibling;if(null==e)break;s++,l=0,r=e}}return o.columns=l+1,o.rows=s+1,o}function Lt(e,t,n){const o=new Set(n?n.getNodes():[]);Bt(t,(t,n)=>{const r=t.elem;o.has(n)?(t.highlighted=!0,jt(e,t)):(t.highlighted=!1,Vt(e,t),r.getAttribute(\"style\")||r.removeAttribute(\"style\"))})}function Bt(e,t){const{domRows:n}=e;for(let e=0;e<n.length;e++){const o=n[e];if(o)for(let n=0;n<o.length;n++){const r=o[n];if(!r)continue;const l=ee(r.elem);null!==l&&t(r,l,{x:n,y:e})}}}function Pt(e,t){t.$disableHighlightStyle(),Bt(t.table,t=>{t.highlighted=!0,jt(e,t)})}const Dt=(e,t,n,o,r)=>{const l=\"forward\"===r;switch(r){case\"backward\":case\"forward\":return n!==(l?e.table.columns-1:0)?qt(t.getCellNodeFromCordsOrThrow(n+(l?1:-1),o,e.table),l):o!==(l?e.table.rows-1:0)?qt(t.getCellNodeFromCordsOrThrow(l?0:e.table.columns-1,o+(l?1:-1),e.table),l):l?t.selectNext():t.selectPrevious(),!0;case\"up\":return 0!==o?qt(t.getCellNodeFromCordsOrThrow(n,o-1,e.table),!1):t.selectPrevious(),!0;case\"down\":return o!==e.table.rows-1?qt(t.getCellNodeFromCordsOrThrow(n,o+1,e.table),!0):t.selectNext(),!0;default:return!1}};function It(e,t){let n,o;if(t.startColumn===e.minColumn)n=\"minColumn\";else{if(t.startColumn+t.cell.__colSpan-1!==e.maxColumn)return null;n=\"maxColumn\"}if(t.startRow===e.minRow)o=\"minRow\";else{if(t.startRow+t.cell.__rowSpan-1!==e.maxRow)return null;o=\"maxRow\"}return[n,o]}function Ut([e,t]){return[\"minColumn\"===e?\"maxColumn\":\"minColumn\",\"minRow\"===t?\"maxRow\":\"minRow\"]}function Jt(e,t,[n,o]){const r=t[o],l=e[r];void 0===l&&Ke(250,o,String(r));const s=t[n],i=l[s];return void 0===i&&Ke(250,n,String(s)),i}function Yt(e,t,n,o,r){const l=pt(t,n,o),s=function(e,t){const{minColumn:n,maxColumn:o,minRow:r,maxRow:l}=t;let s=1,i=1,c=1,a=1;const u=e[r],h=e[l];for(let e=n;e<=o;e++)s=Math.max(s,u[e].cell.__rowSpan),a=Math.max(a,h[e].cell.__rowSpan);for(let t=r;t<=l;t++)i=Math.max(i,e[t][n].cell.__colSpan),c=Math.max(c,e[t][o].cell.__colSpan);return{bottomSpan:a,leftSpan:i,rightSpan:c,topSpan:s}}(t,l),{topSpan:i,leftSpan:c,bottomSpan:a,rightSpan:u}=s,h=function(e,t){const n=It(e,t);return null===n&&Ke(249,t.cell.getKey()),n}(l,n),[d,f]=Ut(h);let g=l[d],m=l[f];\"forward\"===r?g+=\"maxColumn\"===d?1:c:\"backward\"===r?g-=\"minColumn\"===d?1:u:\"down\"===r?m+=\"maxRow\"===f?1:i:\"up\"===r&&(m-=\"minRow\"===f?1:a);const p=t[m];if(void 0===p)return!1;const C=p[g];if(void 0===C)return!1;const[_,S]=function(e,t,n){const o=pt(e,t,n),r=It(o,t);if(r)return[Jt(e,o,r),Jt(e,o,Ut(r))];const l=It(o,n);if(l)return[Jt(e,o,Ut(l)),Jt(e,o,l)];const s=[\"minColumn\",\"minRow\"];return[Jt(e,o,s),Jt(e,o,Ut(s))]}(t,n,C),w=rn(e,_.cell),b=rn(e,S.cell);return e.$setAnchorCellForSelection(w),e.$setFocusCellForSelection(b,!0),!0}function Xt(e,t){if(w(e)||wt(e)){const n=t.isParentOf(e.anchor.getNode()),o=t.isParentOf(e.focus.getNode());return n&&o}return!1}function qt(e,t){t?e.selectStart():e.selectEnd()}function jt(t,n){const o=n.elem,r=t._config.theme;Oe(ee(o))||Ke(131),e(o,r.tableCellSelected)}function Vt(e,t){const n=t.elem;Oe(ee(n))||Ke(131);const r=e._config.theme;o(n,r.tableCellSelected)}function Gt(e){const t=n(e,Oe);return Oe(t)?t:null}function Qt(e){const t=n(e,mn);return mn(t)?t:null}function Zt(e,t,o,r,l,s,i){const c=re(o.focus,l?\"previous\":\"next\");if(le(c))return!1;let a=c;for(const e of se(c).iterNodeCarets(\"shadowRoot\")){if(!ie(e)||!v(e.origin))return!1;a=e}const u=a.getParentAtCaret();if(!Oe(u))return!1;const h=u,d=function(e){for(const t of se(e).iterNodeCarets(\"root\")){const{origin:n}=t;if(Oe(n)){if(he(t))return de(n,e.direction)}else if(!$e(n))break}return null}(ce(h,a.direction)),f=n(h,mn);if(!f||!f.is(s))return!1;const g=e.getElementByKey(h.getKey()),m=zt(g);if(!g||!m)return!1;const p=dn(e,f);if(i.table=p,d)if(\"extend\"===r){const t=zt(e.getElementByKey(d.origin.getKey()));if(!t)return!1;i.$setAnchorCellForSelection(m),i.$setFocusCellForSelection(t,!0)}else{const e=ue(d);ae(o.anchor,e),ae(o.focus,e)}else if(\"extend\"===r)i.$setAnchorCellForSelection(m),i.$setFocusCellForSelection(m,!0);else{const e=function(e){const t=fe(e);return he(t)?ue(t):e}(ce(f,c.direction));ae(o.anchor,e),ae(o.focus,e)}return tn(t),!0}function en(e,t,o,r,l){if((\"up\"===o||\"down\"===o)&&function(e){const t=e.getRootElement();if(!t)return!1;return t.hasAttribute(\"aria-controls\")&&\"typeahead-menu\"===t.getAttribute(\"aria-controls\")}(e))return!1;const s=S();if(!Xt(s,r)){if(w(s)){if(\"backward\"===o){if(s.focus.offset>0)return!1;const e=function(e){for(let t=e,n=e;null!==n;t=n,n=n.getParent())if(v(n)){if(n!==t&&n.getFirstChild()!==t)return null;if(!n.isInline())return n}return null}(s.focus.getNode());if(!e)return!1;const n=e.getPreviousSibling();return!!mn(n)&&(tn(t),t.shiftKey?s.focus.set(n.getParentOrThrow().getKey(),n.getIndexWithinParent(),\"element\"):n.selectEnd(),!0)}if(t.shiftKey&&(\"up\"===o||\"down\"===o)){const e=s.focus.getNode();if(!s.isCollapsed()&&(\"up\"===o&&!s.isBackward()||\"down\"===o&&s.isBackward())){let l=n(e,e=>mn(e));if(Oe(l)&&(l=n(l,mn)),l!==r)return!1;if(!l)return!1;const i=\"down\"===o?l.getNextSibling():l.getPreviousSibling();if(!i)return!1;let c=0;\"up\"===o&&v(i)&&(c=i.getChildrenSize());let a=i;if(\"up\"===o&&v(i)){const e=i.getLastChild();a=e||i,c=f(a)?a.getTextContentSize():0}const u=s.clone();return u.focus.set(a.getKey(),c,f(a)?\"text\":\"element\"),O(u),tn(t),!0}if(oe(e)){const e=\"up\"===o?s.getNodes()[s.getNodes().length-1]:s.getNodes()[0];if(e){if(null!==At(r,e)){const e=r.getFirstDescendant(),t=r.getLastDescendant();if(!e||!t)return!1;const[n]=mt(e),[o]=mt(t),s=r.getCordsFromCellNode(n,l.table),i=r.getCordsFromCellNode(o,l.table),c=r.getDOMCellFromCordsOrThrow(s.x,s.y,l.table),a=r.getDOMCellFromCordsOrThrow(i.x,i.y,l.table);return l.$setAnchorCellForSelection(c),l.$setFocusCellForSelection(a,!0),!0}}return!1}{let r=n(e,e=>v(e)&&!e.isInline());if(Oe(r)&&(r=n(r,mn)),!r)return!1;const i=\"down\"===o?r.getNextSibling():r.getPreviousSibling();if(mn(i)&&l.tableNodeKey===i.getKey()){const e=i.getFirstDescendant(),n=i.getLastDescendant();if(!e||!n)return!1;const[r]=mt(e),[l]=mt(n),c=s.clone();return c.focus.set((\"up\"===o?r:l).getKey(),\"up\"===o?0:l.getChildrenSize(),\"element\"),tn(t),O(c),!0}}}}return\"down\"===o&&an(e)&&l.setShouldCheckSelection(),!1}if(w(s)){if(\"backward\"===o||\"forward\"===o){return Zt(e,t,s,t.shiftKey?\"extend\":\"move\",\"backward\"===o,r,l)}if(s.isCollapsed()){const{anchor:i,focus:c}=s,a=n(i.getNode(),Oe),u=n(c.getNode(),Oe);if(!Oe(a)||!a.is(u))return!1;const h=Qt(a);if(h!==r&&null!=h){const n=Ft(h,e.getElementByKey(h.getKey()));if(null!=n)return l.table=Ht(h,n),en(e,t,o,h,l)}const d=e.getElementByKey(a.__key),f=e.getElementByKey(i.key);if(null==f||null==d)return!1;let g;if(\"element\"===i.type)g=f.getBoundingClientRect();else{const t=K(Ot(e));if(null===t||0===t.rangeCount)return!1;g=t.getRangeAt(0).getBoundingClientRect()}const m=\"up\"===o?a.getFirstChild():a.getLastChild();if(null==m)return!1;const p=e.getElementByKey(m.__key);if(null==p)return!1;const C=p.getBoundingClientRect();if(\"up\"===o?C.top>g.top-g.height:g.bottom+g.height>C.bottom){tn(t);const e=r.getCordsFromCellNode(a,l.table);if(!t.shiftKey)return Dt(l,r,e.x,e.y,o);{const t=r.getDOMCellFromCordsOrThrow(e.x,e.y,l.table);l.$setAnchorCellForSelection(t),l.$setFocusCellForSelection(t,!0)}return!0}}}else if(wt(s)){const{anchor:i,focus:c}=s,a=n(i.getNode(),Oe),u=n(c.getNode(),Oe),[h]=s.getNodes();mn(h)||Ke(251);const d=Ft(h,e.getElementByKey(h.getKey()));if(!Oe(a)||!Oe(u)||!mn(h)||null==d)return!1;l.$updateTableTableSelection(s);const f=Ht(h,d),g=r.getCordsFromCellNode(a,f),m=r.getDOMCellFromCordsOrThrow(g.x,g.y,f);if(l.$setAnchorCellForSelection(m),tn(t),t.shiftKey){const[e,t,n]=ft(r,a,u);return Yt(l,e,t,n,o)}return u.selectEnd(),!0}return!1}function tn(e){e.preventDefault(),e.stopImmediatePropagation(),e.stopPropagation()}function nn(e,t,n){const o=m();\"first\"===e?t.insertBefore(o):t.insertAfter(o),o.append(...n||[]),o.selectEnd()}function on(e,t,o){const r=o.getParent();if(!r)return;const l=K(Ot(e));if(!l)return;const s=l.anchorNode,i=e.getElementByKey(r.getKey()),c=Ft(o,e.getElementByKey(o.getKey()));if(!s||!i||!c||!i.contains(s)||c.contains(s))return;const a=n(t.anchor.getNode(),e=>Oe(e));if(!a)return;const u=n(a,e=>mn(e));if(!mn(u)||!u.is(o))return;const[h,d]=ft(o,a,a),f=h[0][0],g=h[h.length-1][h[0].length-1],{startRow:m,startColumn:p}=d,C=m===f.startRow&&p===f.startColumn,_=m===g.startRow&&p===g.startColumn;return C?\"first\":_?\"last\":void 0}function rn(e,t){const{tableNode:n}=e.$lookup(),o=n.getCordsFromCellNode(t,e.table);return n.getDOMCellFromCordsOrThrow(o.x,o.y,e.table)}function ln(e,t,n){return At(e,ee(t,n))}function sn(t,n,r){if(!n.theme.tableAlignment)return;const l=[],s=[];for(const e of[\"center\",\"right\"]){const t=n.theme.tableAlignment[e];t&&(e===r?s:l).push(t)}o(t,...l),e(t,...s)}const cn=new WeakSet;function an(e=F()){return cn.has(e)}function un(e,t){t?cn.add(e):cn.delete(e)}class hn extends u{__rowStriping;__frozenColumnCount;__frozenRowCount;__colWidths;static getType(){return\"table\"}getColWidths(){return this.getLatest().__colWidths}setColWidths(e){const t=this.getWritable();return t.__colWidths=e,t}static clone(e){return new hn(e.__key)}afterCloneFrom(e){super.afterCloneFrom(e),this.__colWidths=e.__colWidths,this.__rowStriping=e.__rowStriping,this.__frozenColumnCount=e.__frozenColumnCount,this.__frozenRowCount=e.__frozenRowCount}static importDOM(){return{table:e=>({conversion:fn,priority:1})}}static importJSON(e){return gn().updateFromJSON(e)}updateFromJSON(e){return super.updateFromJSON(e).setRowStriping(e.rowStriping||!1).setFrozenColumns(e.frozenColumnCount||0).setFrozenRows(e.frozenRowCount||0).setColWidths(e.colWidths)}constructor(e){super(e),this.__rowStriping=!1,this.__frozenColumnCount=0,this.__frozenRowCount=0,this.__colWidths=void 0}exportJSON(){return{...super.exportJSON(),colWidths:this.getColWidths(),frozenColumnCount:this.__frozenColumnCount?this.__frozenColumnCount:void 0,frozenRowCount:this.__frozenRowCount?this.__frozenRowCount:void 0,rowStriping:this.__rowStriping?this.__rowStriping:void 0}}extractWithChild(e,t,n){return\"html\"===n}getDOMSlot(e){const t=Rt(e)?e:e.querySelector(\"table\");return Rt(t)||Ke(229),super.getDOMSlot(e).withElement(t).withAfter(t.querySelector(\"colgroup\"))}createDOM(t,n){const o=document.createElement(\"table\");this.__style&&(o.style.cssText=this.__style);const r=document.createElement(\"colgroup\");if(o.appendChild(r),ge(r),e(o,t.theme.table),this.updateTableElement(null,o,t),an(n)){const n=document.createElement(\"div\"),r=t.theme.tableScrollableWrapper;return r?e(n,r):n.style.cssText=\"overflow-x: auto;\",n.appendChild(o),this.updateTableWrapper(null,n,o,t),n}return o}updateTableWrapper(t,n,r,l){this.__frozenColumnCount!==(t?t.__frozenColumnCount:0)&&function(t,n,r,l){l>0?(e(t,r.theme.tableFrozenColumn),n.setAttribute(\"data-lexical-frozen-column\",\"true\")):(o(t,r.theme.tableFrozenColumn),n.removeAttribute(\"data-lexical-frozen-column\"))}(n,r,l,this.__frozenColumnCount),this.__frozenRowCount!==(t?t.__frozenRowCount:0)&&function(t,n,r,l){l>0?(e(t,r.theme.tableFrozenRow),n.setAttribute(\"data-lexical-frozen-row\",\"true\")):(o(t,r.theme.tableFrozenRow),n.removeAttribute(\"data-lexical-frozen-row\"))}(n,r,l,this.__frozenRowCount)}updateTableElement(t,n,r){this.__style!==(t?t.__style:\"\")&&(n.style.cssText=this.__style),this.__rowStriping!==(!!t&&t.__rowStriping)&&function(t,n,r){r?(e(t,n.theme.tableRowStriping),t.setAttribute(\"data-lexical-row-striping\",\"true\")):(o(t,n.theme.tableRowStriping),t.removeAttribute(\"data-lexical-row-striping\"))}(n,r,this.__rowStriping),function(e,t,n,o){const r=e.querySelector(\"colgroup\");if(!r)return;const l=[];for(let e=0;e<n;e++){const t=document.createElement(\"col\"),n=o&&o[e];n&&(t.style.width=`${n}px`),l.push(t)}r.replaceChildren(...l)}(n,0,this.getColumnCount(),this.getColWidths()),sn(n,r,this.getFormatType())}updateDOM(e,t,n){const o=this.getDOMSlot(t).element;return t===o===an()||(l(r=t)&&\"DIV\"===r.nodeName&&this.updateTableWrapper(e,t,o,n),this.updateTableElement(e,o,n),!1);var r}exportDOM(e){const t=super.exportDOM(e),{element:n}=t;return{after:n=>{if(t.after&&(n=t.after(n)),!Rt(n)&&l(n)&&(n=n.querySelector(\"table\")),!Rt(n))return null;sn(n,e._config,this.getFormatType());const[o]=gt(this,null,null),r=new Map;for(const e of o)for(const t of e){const e=t.cell.getKey();r.has(e)||r.set(e,{colSpan:t.cell.getColSpan(),startColumn:t.startColumn})}const s=new Set;for(const e of n.querySelectorAll(\":scope > tr > [data-temporary-table-cell-lexical-key]\")){const t=e.getAttribute(\"data-temporary-table-cell-lexical-key\");if(t){const n=r.get(t);if(e.removeAttribute(\"data-temporary-table-cell-lexical-key\"),n){r.delete(t);for(let e=0;e<n.colSpan;e++)s.add(e+n.startColumn)}}}const i=n.querySelector(\":scope > colgroup\");if(i){const e=Array.from(n.querySelectorAll(\":scope > colgroup > col\")).filter((e,t)=>s.has(t));i.replaceChildren(...e)}const c=n.querySelectorAll(\":scope > tr\");if(c.length>0){const e=document.createElement(\"tbody\");for(const t of c)e.appendChild(t);n.append(e)}return n},element:!Rt(n)&&l(n)?n.querySelector(\"table\"):n}}canBeEmpty(){return!1}isShadowRoot(){return!0}getCordsFromCellNode(e,t){const{rows:n,domRows:o}=t;for(let t=0;t<n;t++){const n=o[t];if(null!=n)for(let o=0;o<n.length;o++){const r=n[o];if(null==r)continue;const{elem:l}=r,s=ln(this,l);if(null!==s&&e.is(s))return{x:o,y:t}}}throw new Error(\"Cell not found in table.\")}getDOMCellFromCords(e,t,n){const{domRows:o}=n,r=o[t];if(null==r)return null;const l=r[e<r.length?e:r.length-1];return null==l?null:l}getDOMCellFromCordsOrThrow(e,t,n){const o=this.getDOMCellFromCords(e,t,n);if(!o)throw new Error(\"Cell not found at cords.\");return o}getCellNodeFromCords(e,t,n){const o=this.getDOMCellFromCords(e,t,n);if(null==o)return null;const r=ee(o.elem);return Oe(r)?r:null}getCellNodeFromCordsOrThrow(e,t,n){const o=this.getCellNodeFromCords(e,t,n);if(!o)throw new Error(\"Node at cords not TableCellNode.\");return o}getRowStriping(){return Boolean(this.getLatest().__rowStriping)}setRowStriping(e){const t=this.getWritable();return t.__rowStriping=e,t}setFrozenColumns(e){const t=this.getWritable();return t.__frozenColumnCount=e,t}getFrozenColumns(){return this.getLatest().__frozenColumnCount}setFrozenRows(e){const t=this.getWritable();return t.__frozenRowCount=e,t}getFrozenRows(){return this.getLatest().__frozenRowCount}canSelectBefore(){return!0}canIndent(){return!1}getColumnCount(){const e=this.getFirstChild();if(!e)return 0;let t=0;return e.getChildren().forEach(e=>{Oe(e)&&(t+=e.getColSpan())}),t}}function dn(e,t){const n=e.getElementByKey(t.getKey());return null===n&&Ke(230),Ht(t,n)}function fn(e){const n=gn();e.hasAttribute(\"data-lexical-row-striping\")&&n.setRowStriping(!0),e.hasAttribute(\"data-lexical-frozen-column\")&&n.setFrozenColumns(1),e.hasAttribute(\"data-lexical-frozen-row\")&&n.setFrozenRows(1);const o=e.querySelector(\":scope > colgroup\");if(o){let e=[];for(const t of o.querySelectorAll(\":scope > col\")){let n=t.style.width||\"\";if(!Ne.test(n)&&(n=t.getAttribute(\"width\")||\"\",!/^\\d+$/.test(n))){e=void 0;break}e.push(parseFloat(n))}e&&n.setColWidths(e)}return{after:e=>t(e,$e),node:n}}function gn(){return p(new hn)}function mn(e){return e instanceof hn}function pn({rows:e,columns:t,includeHeaders:n}){const o=S()||Z();if(!o||!w(o))return!1;if(Qt(o.anchor.getNode()))return!1;const r=Le(Number(e),Number(t),n);c(r);const l=r.getFirstDescendant();return f(l)&&l.select(),!0}function Cn(e){$e(e.getParent())?e.isEmpty()&&e.append(m()):e.remove()}function _n(e){mn(e.getParent())?a(e,Oe):e.remove()}function Sn(e){a(e,$e);const[t]=gt(e,null,null),n=t.reduce((e,t)=>Math.max(e,t.length),0),o=e.getChildren();for(let e=0;e<t.length;++e){const r=o[e];if(!r)continue;$e(r)||Ke(254,r.constructor.name,r.getType());const l=t[e].reduce((e,t)=>t?1+e:e,0);if(l!==n)for(let e=l;e<n;++e){const e=Fe();e.append(m()),r.append(e)}}}function wn(e){if(e.detail<3||!ne(e.target))return!1;const t=ee(e.target);if(null===t)return!1;const o=n(t,e=>v(e)&&!e.isInline());if(null===o)return!1;return!!Oe(o.getParent())&&(o.select(0),!0)}function bn(e){return e.registerNodeTransform(xe,e=>{if(e.getColSpan()>1||e.getRowSpan()>1){const[,,t]=mt(e),[n]=ft(t,e,e),o=n.length,r=n[0].length;let l=t.getFirstChild();$e(l)||Ke(175);const i=[];for(let e=0;e<o;e++){0!==e&&(l=l.getNextSibling(),$e(l)||Ke(175));let t=null;for(let o=0;o<r;o++){const r=n[e][o],c=r.cell;if(r.startRow===e&&r.startColumn===o)t=c,i.push(c);else if(c.getColSpan()>1||c.getRowSpan()>1){Oe(c)||Ke(176);const e=Fe(c.__headerState);null!==t?t.insertAfter(e):s(l,e)}}}for(const e of i)e.setColSpan(1),e.setRowSpan(1)}})}function yn(e,t=!0){const n=new Map,o=(o,r,l)=>{const s=Ft(o,l),i=Mt(o,s,e,t);n.set(r,[i,s])},r=e.registerMutationListener(hn,t=>{e.getEditorState().read(()=>{for(const[e,r]of t){const t=n.get(e);if(\"created\"===r||\"updated\"===r){const{tableNode:r,tableElement:l}=vt(e);void 0===t?o(r,e,l):l!==t[1]&&(t[0].removeListeners(),n.delete(e),o(r,e,l))}else\"destroyed\"===r&&void 0!==t&&(t[0].removeListeners(),n.delete(e))}},{editor:e})},{skipInitialization:!1});return()=>{r();for(const[,[e]]of n)e.removeListeners()}}function Nn(e){return e.hasNodes([hn])||Ke(255),i(e.registerCommand(Ae,pn,me),e.registerCommand(Q,({nodes:t,selection:n},o)=>{if(e!==o||!w(n))return!1;return null!==Qt(n.anchor.getNode())&&t.some(mn)},me),e.registerCommand(pe,wn,me),e.registerNodeTransform(hn,Sn),e.registerNodeTransform(Ee,_n),e.registerNodeTransform(xe,Cn))}const vn=Ce({build:(e,t,n)=>we(t),config:_e({hasCellBackgroundColor:!0,hasCellMerge:!0,hasHorizontalScroll:!0,hasTabHandler:!0}),name:\"@lexical/table/Table\",nodes:[hn,Ee,xe],register(e,t,n){const o=n.getOutput();return i(Se(()=>{const t=o.hasHorizontalScroll.value;an(e)!==t&&(un(e,t),e.registerNodeTransform(hn,()=>{})())}),Nn(e),Se(()=>yn(e,o.hasTabHandler.value)),Se(()=>o.hasCellMerge.value?void 0:bn(e)),Se(()=>o.hasCellBackgroundColor.value?void 0:e.registerNodeTransform(xe,e=>{null!==e.getBackgroundColor()&&e.setBackgroundColor(null)})))}});export{ft as $computeTableMap,gt as $computeTableMapSkipCellCheck,Fe as $createTableCellNode,gn as $createTableNode,Le as $createTableNodeWithDimensions,Me as $createTableRowNode,bt as $createTableSelection,yt as $createTableSelectionFrom,nt as $deleteTableColumn,lt as $deleteTableColumnAtSelection,st as $deleteTableColumn__EXPERIMENTAL,ot as $deleteTableRowAtSelection,rt as $deleteTableRow__EXPERIMENTAL,Gt as $findCellNode,Qt as $findTableNode,dn as $getElementForTableNode,mt as $getNodeTriplet,vt as $getTableAndElementByKey,Be as $getTableCellNodeFromLexicalNode,Ct as $getTableCellNodeRect,Ue as $getTableColumnIndexFromTableCellNode,De as $getTableNodeFromLexicalNodeOrThrow,Ie as $getTableRowIndexFromTableCellNode,Pe as $getTableRowNodeFromTableCellNodeOrThrow,Qe as $insertTableColumn,Ze as $insertTableColumnAtSelection,et as $insertTableColumn__EXPERIMENTAL,Xe as $insertTableRow,je as $insertTableRowAtSelection,Ve as $insertTableRow__EXPERIMENTAL,an as $isScrollableTablesActive,Oe as $isTableCellNode,mn as $isTableNode,$e as $isTableRowNode,wt as $isTableSelection,at as $mergeCells,Ye as $removeTableRowAtIndex,ht as $unmergeCell,Ae as INSERT_TABLE_COMMAND,ve as TableCellHeaderStates,xe as TableCellNode,vn as TableExtension,hn as TableNode,xt as TableObserver,Ee as TableRowNode,Mt as applyTableHandlers,zt as getDOMCellFromTarget,Ft as getTableElement,$t as getTableObserverFromTableElement,bn as registerTableCellUnmergeTransform,Nn as registerTablePlugin,yn as registerTableSelectionObserver,un as setScrollableTablesActive};\n","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 googleDriveConfig?: {\n /** The OAuth 2.0 Client ID obtained from the Google Cloud Console. */\n clientId: string;\n /** The API Key obtained from the Google Cloud Console. Ensure Google Picker API is enabled. */\n apiKey: string;\n /** Optional: List of discovery doc URLs for APIs used. Defaults to Drive v3. */\n discoveryDocs?: string[];\n /** Optional: Scopes required for the picker. Defaults to 'https://www.googleapis.com/auth/drive.readonly'. */\n scopes?: string;\n };\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 googleDriveConfig?: {\n clientId: string;\n apiKey: string;\n discoveryDocs?: string[];\n scopes?: string;\n };\n}\n\nexport const EmailProvider: React.FC<EmailProviderProps> = ({\n children,\n googleDriveConfig,\n}) => {\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 googleDriveConfig,\n }}>\n {children}\n </EmailContext.Provider>\n );\n};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst mod = await (process.env.NODE_ENV !== 'production' ? import('./LexicalTable.dev.mjs') : import('./LexicalTable.prod.mjs'));\nexport const $computeTableMap = mod.$computeTableMap;\nexport const $computeTableMapSkipCellCheck = mod.$computeTableMapSkipCellCheck;\nexport const $createTableCellNode = mod.$createTableCellNode;\nexport const $createTableNode = mod.$createTableNode;\nexport const $createTableNodeWithDimensions = mod.$createTableNodeWithDimensions;\nexport const $createTableRowNode = mod.$createTableRowNode;\nexport const $createTableSelection = mod.$createTableSelection;\nexport const $createTableSelectionFrom = mod.$createTableSelectionFrom;\nexport const $deleteTableColumn = mod.$deleteTableColumn;\nexport const $deleteTableColumnAtSelection = mod.$deleteTableColumnAtSelection;\nexport const $deleteTableColumn__EXPERIMENTAL = mod.$deleteTableColumn__EXPERIMENTAL;\nexport const $deleteTableRowAtSelection = mod.$deleteTableRowAtSelection;\nexport const $deleteTableRow__EXPERIMENTAL = mod.$deleteTableRow__EXPERIMENTAL;\nexport const $findCellNode = mod.$findCellNode;\nexport const $findTableNode = mod.$findTableNode;\nexport const $getElementForTableNode = mod.$getElementForTableNode;\nexport const $getNodeTriplet = mod.$getNodeTriplet;\nexport const $getTableAndElementByKey = mod.$getTableAndElementByKey;\nexport const $getTableCellNodeFromLexicalNode = mod.$getTableCellNodeFromLexicalNode;\nexport const $getTableCellNodeRect = mod.$getTableCellNodeRect;\nexport const $getTableColumnIndexFromTableCellNode = mod.$getTableColumnIndexFromTableCellNode;\nexport const $getTableNodeFromLexicalNodeOrThrow = mod.$getTableNodeFromLexicalNodeOrThrow;\nexport const $getTableRowIndexFromTableCellNode = mod.$getTableRowIndexFromTableCellNode;\nexport const $getTableRowNodeFromTableCellNodeOrThrow = mod.$getTableRowNodeFromTableCellNodeOrThrow;\nexport const $insertTableColumn = mod.$insertTableColumn;\nexport const $insertTableColumnAtSelection = mod.$insertTableColumnAtSelection;\nexport const $insertTableColumn__EXPERIMENTAL = mod.$insertTableColumn__EXPERIMENTAL;\nexport const $insertTableRow = mod.$insertTableRow;\nexport const $insertTableRowAtSelection = mod.$insertTableRowAtSelection;\nexport const $insertTableRow__EXPERIMENTAL = mod.$insertTableRow__EXPERIMENTAL;\nexport const $isScrollableTablesActive = mod.$isScrollableTablesActive;\nexport const $isTableCellNode = mod.$isTableCellNode;\nexport const $isTableNode = mod.$isTableNode;\nexport const $isTableRowNode = mod.$isTableRowNode;\nexport const $isTableSelection = mod.$isTableSelection;\nexport const $mergeCells = mod.$mergeCells;\nexport const $removeTableRowAtIndex = mod.$removeTableRowAtIndex;\nexport const $unmergeCell = mod.$unmergeCell;\nexport const INSERT_TABLE_COMMAND = mod.INSERT_TABLE_COMMAND;\nexport const TableCellHeaderStates = mod.TableCellHeaderStates;\nexport const TableCellNode = mod.TableCellNode;\nexport const TableExtension = mod.TableExtension;\nexport const TableNode = mod.TableNode;\nexport const TableObserver = mod.TableObserver;\nexport const TableRowNode = mod.TableRowNode;\nexport const applyTableHandlers = mod.applyTableHandlers;\nexport const getDOMCellFromTarget = mod.getDOMCellFromTarget;\nexport const getTableElement = mod.getTableElement;\nexport const getTableObserverFromTableElement = mod.getTableObserverFromTableElement;\nexport const registerTableCellUnmergeTransform = mod.registerTableCellUnmergeTransform;\nexport const registerTablePlugin = mod.registerTablePlugin;\nexport const registerTableSelectionObserver = mod.registerTableSelectionObserver;\nexport const setScrollableTablesActive = mod.setScrollableTablesActive;","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 emoji: \"emoji\",\n drive: \"drive\",\n lockClock: \"lockClock\",\n insertSignature: \"insertSignature\",\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 label: \"Formatting options\",\n options: [\n {\n name: eventTypes[\"undo\"],\n type: toolbarComponentType[\"component\"],\n icon: \"Undo\",\n label: \"Undo\",\n id: \"29cf5eb3-37cd-482f-9a15-c358faf19cc2\",\n },\n {\n name: eventTypes[\"redo\"],\n type: toolbarComponentType[\"component\"],\n icon: \"Redo\",\n label: \"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 label: \"Font\",\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 label: \"Size\",\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 label: \"Bold\",\n id: \"ac2b5b54-7323-44a4-bc6d-8bae6e48efe2\",\n },\n {\n name: eventTypes[\"italic\"],\n type: toolbarComponentType[\"component\"],\n icon: \"Italic\",\n label: \"Italic\",\n id: \"6a927c2a-2230-4dc7-af71-47fbe9fb784d\",\n },\n {\n name: eventTypes[\"underline\"],\n type: toolbarComponentType[\"component\"],\n icon: \"Underline\",\n label: \"Underline\",\n id: \"f07b3a6f-ffaa-4153-beae-79a36acb6a08\",\n },\n {\n name: eventTypes[\"color\"].base,\n type: toolbarComponentType[\"component\"],\n icon: \"Text color\",\n label: \"Text 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 label: \"Align\",\n collapse: true,\n },\n {\n type: toolbarComponentType[\"divider\"],\n id: \"9bad0563-6118-4855-9286-402bf98e00ad\",\n hideOnCollapse: true,\n },\n {\n name: eventTypes[\"listNumber\"],\n type: toolbarComponentType[\"component\"],\n icon: \"OrderedList\",\n label: \"Ordered list\",\n id: \"d37865e1-ff54-4118-a5cc-fa147d222471\",\n collapse: true,\n },\n {\n name: eventTypes[\"listBullet\"],\n type: toolbarComponentType[\"component\"],\n icon: \"UnOrderedList\",\n label: \"Unordered list\",\n id: \"ed77e7c9-b89c-41c5-a749-e68ea0b30497\",\n collapse: true,\n },\n {\n type: toolbarComponentType[\"divider\"],\n id: \"e5ecd77b-44cc-42fe-badb-48cadf3ddfb1\",\n hideOnCollapse: true,\n },\n {\n name: eventTypes[\"indentDecrease\"],\n type: toolbarComponentType[\"component\"],\n icon: \"IndentLess\",\n label: \"Decrease indent\",\n id: \"2dc6a5e4-b1b5-47d1-ac2f-5d0becb02d33\",\n collapse: true,\n },\n {\n name: eventTypes[\"indent\"],\n type: toolbarComponentType[\"component\"],\n icon: \"IndentMore\",\n label: \"Increase indent\",\n id: \"6903a3d1-a83f-4bc6-9bd9-f673feffe84f\",\n collapse: true,\n },\n ],\n },\n {\n type: \"component\",\n name: eventTypes[\"attachFile\"],\n icon: \"Attach\",\n label: \"Attach file\",\n id: \"f43a284e-113e-4095-b001-9d00a1dddc4c\",\n },\n {\n type: toolbarComponentType[\"component\"],\n name: eventTypes[\"link\"],\n icon: \"Link\",\n label: \"Insert link\",\n id: \"580db61e-7939-4efe-914c-304b271998ec\",\n },\n {\n type: toolbarComponentType[\"component\"],\n name: eventTypes[\"emoji\"],\n icon: \"Emoji\",\n id: \"e1f2c6d1-emoji\",\n },\n // {\n // type: toolbarComponentType[\"component\"],\n // name: eventTypes[\"drive\"],\n // icon: \"GoogleDrive\",\n // id: \"a9c4b1e2-drive\",\n // },\n {\n type: \"component\",\n name: eventTypes[\"insertPhoto\"],\n icon: \"InsertImage\",\n label: \"Insert photo\",\n id: \"d032ba91-3e78-4ed5-8561-insertPhoto\",\n },\n {\n type: \"component\",\n name: eventTypes[\"lockClock\"],\n icon: \"LockClock\",\n id: \"d032ba91-3e78-4ed5-8561-lockClock\",\n },\n {\n type: \"component\",\n name: eventTypes[\"insertSignature\"],\n icon: \"Signature\",\n label: \"Insert signature\",\n id: \"d032ba91-3e78-4ed5-8561-lockClock\",\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 MdOutlineEmojiEmotions,\n MdPhoto,\n MdLockClock,\n} from \"react-icons/md\";\nimport { TbBrandGoogleDrive } from \"react-icons/tb\";\nimport { RiBallPenFill } from \"react-icons/ri\";\nimport { FaBan } from \"react-icons/fa\";\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 Emoji: MdOutlineEmojiEmotions,\n InsertImage: MdPhoto,\n LockClock: MdLockClock,\n GoogleDrive: TbBrandGoogleDrive,\n Signature: RiBallPenFill,\n Ban: FaBan\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 | \"Emoji\"\n | \"LockClock\"\n | \"GoogleDrive\"\n | \"Signature\"\n | \"InsertImage\"\n | \"Ban\";\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, { useEffect, 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 on?: \"hover\" | \"click\" | \"focus\" | (\"hover\" | \"click\" | \"focus\")[];\n}\n\nconst MyPopup: React.FC<MyPopupProps> = ({\n trigger,\n children,\n popUpDirection = \"top center\",\n on = \"click\",\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 // ...inside MyPopup component, after popupRef declaration...\n\n useEffect(() => {\n const adjustPosition = () => {\n try {\n // let reactjs-popup recompute first\n popupRef.current?.reposition?.();\n\n // popup content created by reactjs-popup often has class `popup-content`\n const popupContent = document.querySelector<HTMLElement>(\n \".mail-inbox-popup .popup-content, .mail-inbox-popup-content, .mail-inbox-popup > .popup-content\",\n );\n if (!popupContent) return;\n\n const rect = popupContent.getBoundingClientRect();\n const margin = 8; // keep a small margin from viewport edges\n\n // If right edge overflows, shift left\n if (rect.right > window.innerWidth - margin) {\n const overflow = rect.right - (window.innerWidth - margin);\n const currentLeft = parseFloat(\n getComputedStyle(popupContent).left || `${rect.left}`,\n );\n popupContent.style.left = `${Math.max(margin, currentLeft - overflow)}px`;\n }\n\n // If left edge overflows (negative), nudge right\n if (rect.left < margin) {\n popupContent.style.left = `${margin}px`;\n }\n } catch (e) {\n // ignore\n }\n };\n\n // Run on resize/scroll\n const handler = () => adjustPosition();\n window.addEventListener(\"resize\", handler);\n window.addEventListener(\"scroll\", handler, true);\n\n // Watch DOM for popup being added (reactjs-popup mounts content on open)\n const observer = new MutationObserver(() => {\n // slight delay to let popup render then adjust\n setTimeout(adjustPosition, 0);\n });\n observer.observe(document.body, { childList: true, subtree: true });\n\n return () => {\n window.removeEventListener(\"resize\", handler);\n window.removeEventListener(\"scroll\", handler, true);\n observer.disconnect();\n };\n }, []);\n\n return (\n <Popup\n ref={popupRef}\n trigger={trigger}\n on={on}\n closeOnDocumentClick\n repositionOnResize\n position={popUpDirection}\n className=\"mail-inbox-popup\"\n >\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, htmlNodeVal: \"2\" },\n { key: \"normal\", label: \"Normal\", sizePx: 18, htmlNodeVal: \"4\" },\n { key: \"large\", label: \"Large\", sizePx: 28, htmlNodeVal: \"6\" },\n { key: \"huge\", label: \"Huge\", sizePx: 56, htmlNodeVal: \"7\" },\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 = \"sans-serif\",\n onChange,\n}: FontSelectProps) {\n const selectedOption = fontOptions?.find((o) => o.value === value);\n const displayLabel =\n selectedOption?.label || (value === \"serif\" ? \"Serif\" : \"Sans Serif\");\n\n return (\n <div>\n <MyPopup\n trigger={\n <button className=\"font-option heading\">\n {displayLabel}\n <Icon name=\"DownArrow\" />\n </button>\n }\n >\n {({ close }) => (\n <div className=\"p-4 mail-inbox-popup-content\">\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 >\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?: number;\n onChange?: (value: string) => void;\n}\n\nexport default function FontSizePicker({\n value = 16,\n onChange = () => {},\n}: FontSizePickerProps) {\n return (\n <div>\n <MyPopup\n trigger={\n <button\n className=\"font-option heading tool-bar-button\"\n data-tooltip=\"Size\"\n >\n <Icon name=\"TextFields\" className=\"tool-bar-button-icon\" />\n <Icon name=\"DownArrow\" className=\"tool-bar-button-icon\" />\n </button>\n }\n >\n {({ close }) => (\n <div className=\"p-4 mail-inbox-popup-content\">\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 >\n <div className=\"font-option\">\n {value === font.sizePx && <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 >\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 | null;\n text: string | null;\n}\n\ninterface ColorPickerProps {\n value?: ColorValue;\n onChange?: (value: ColorValue) => void;\n}\n\nexport default function ColorPicker({\n value = { background: null, text: null },\n onChange = () => {},\n}: ColorPickerProps) {\n function update(which: keyof ColorValue, color: string | null) {\n onChange({ ...value, [which]: color });\n }\n\n return (\n <div>\n <MyPopup\n trigger={\n <button\n className=\"font-option heading tool-bar-button\"\n data-tooltip=\"Text color\"\n >\n <Icon name=\"Styling\" className=\"tool-bar-button-icon\" />\n <Icon name=\"DownArrow\" className=\"tool-bar-button-icon\" />\n </button>\n }\n >\n {({ close }) => (\n <div\n className=\"color-popover mail-inbox-popup-content\"\n role=\"dialog\"\n aria-label=\"Choose colors\"\n >\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 <button\n className=\"swatch clear-swatch\"\n title=\"Remove color\"\n aria-pressed={!value.background}\n onClick={() => {\n update(\"background\", null);\n close();\n }}\n style={{ background: \"transparent\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }}\n >\n <Icon name=\"Ban\" size={14} color=\"#666\" />\n </button>\n </div>\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 <button\n className=\"swatch clear-swatch\"\n title=\"Remove color\"\n aria-pressed={!value.text}\n onClick={() => {\n update(\"text\", null);\n close();\n }}\n style={{ background: \"transparent\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }}\n >\n <Icon name=\"Ban\" size={14} color=\"#666\" />\n </button>\n </div>\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 tool-bar-button\" data-tooltip=\"Align\">\n <Icon\n name={\n OPTIONS?.find((o) => o.key === value)?.iconName || \"LeftAlign\"\n }\n />\n <Icon name=\"DownArrow\" className=\"tool-bar-button-icon\" />\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 <div\n className=\"option-check\"\n style={{ opacity: active ? 1 : 0 }}\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 <Icon\n name={opt.iconName}\n size={20}\n className=\"select-option-icon\"\n />\n </button>\n );\n })}\n </>\n )}\n </MyPopup>\n </div>\n );\n}\n","import {\n TextNode,\n DOMConversionMap,\n DOMConversionOutput,\n DOMExportOutput,\n EditorConfig,\n LexicalEditor,\n SerializedTextNode,\n Spread,\n NodeKey,\n} from \"lexical\";\nimport { extractStyles, mergeStyles, styleStringToMap } from \"../utils/common\";\n\nexport type SerializedStyledTextNode = Spread<\n { style: string },\n SerializedTextNode\n>;\n\n// ─── StyledTextNode ───────────────────────────────────────────────────────────\n\nexport class StyledTextNode extends TextNode {\n __customStyle: string;\n\n static getType(): string {\n return \"styled-text\";\n }\n\n static clone(node: StyledTextNode): StyledTextNode {\n const clone = new StyledTextNode(node.__text, node.__key);\n // Must copy __customStyle — Lexical clones nodes for undo/redo history\n clone.__customStyle = node.__customStyle ?? \"\";\n return clone;\n }\n\n constructor(text: string, key?: NodeKey) {\n super(text, key);\n this.__customStyle = \"\";\n }\n\n // ── Serialization (save/restore editor state) ──────────────────────────────\n\n static importJSON(s: SerializedStyledTextNode): StyledTextNode {\n const node = super.importJSON(s) as StyledTextNode;\n node.__customStyle = s.style ?? \"\";\n return node;\n }\n\n exportJSON(): SerializedStyledTextNode {\n return { ...super.exportJSON(), style: this.__customStyle };\n }\n\n // ── DOM Import (HTML → Lexical nodes) ─────────────────────────────────────\n\n static importDOM(): DOMConversionMap | null {\n const convert = (domNode: HTMLElement): DOMConversionOutput => {\n const tag = domNode.tagName;\n const style = extractStyles(domNode);\n\n return {\n // node: null → skip creating a node for the element itself.\n // Lexical walks into children naturally; forChild stamps\n // styles + format flags onto each child TextNode.\n // Without this, you get duplicate nodes (one per element + one per text child).\n node: null,\n forChild: (child) => {\n if (!(child instanceof TextNode)) return child;\n\n // Promote plain TextNode → StyledTextNode so it can carry custom styles\n const styled =\n child instanceof StyledTextNode\n ? (child.getWritable() as StyledTextNode)\n : new StyledTextNode(child.getTextContent());\n\n // Merge styles from this element into whatever the child already has\n // This handles nesting: <span style=\"color:red\"><strong>text</strong></span>\n // → styled node gets both color:red AND bold format\n if (style) {\n styled.__customStyle = mergeStyles(\n styled.__customStyle,\n styleStringToMap(style),\n );\n }\n\n // Apply semantic format flags from tag name\n if (tag === \"STRONG\" || tag === \"B\") styled.toggleFormat(\"bold\");\n if (tag === \"EM\" || tag === \"I\") styled.toggleFormat(\"italic\");\n if (tag === \"U\") styled.toggleFormat(\"underline\");\n if (tag === \"S\" || tag === \"STRIKE\")\n styled.toggleFormat(\"strikethrough\");\n if (tag === \"CODE\") styled.toggleFormat(\"code\");\n\n return styled;\n },\n };\n };\n\n return {\n span: () => ({ conversion: convert, priority: 2 }),\n strong: () => ({ conversion: convert, priority: 2 }),\n b: () => ({ conversion: convert, priority: 2 }),\n em: () => ({ conversion: convert, priority: 2 }),\n i: () => ({ conversion: convert, priority: 2 }),\n u: () => ({ conversion: convert, priority: 2 }),\n s: () => ({ conversion: convert, priority: 2 }),\n code: () => ({ conversion: convert, priority: 2 }),\n };\n }\n\n // ── DOM Export (Lexical nodes → HTML) ─────────────────────────────────────\n\n exportDOM(editor: LexicalEditor): DOMExportOutput {\n // super.exportDOM handles format flags → <strong>, <em>, <u> etc.\n const { element } = super.exportDOM(editor);\n if (element && \"setAttribute\" in element && this.__customStyle) {\n (element as HTMLElement).setAttribute(\"style\", this.__customStyle);\n }\n return { element };\n }\n\n // ── DOM Rendering ──────────────────────────────────────────────────────────\n\n createDOM(config: EditorConfig): HTMLElement {\n const dom = super.createDOM(config);\n if (this.__customStyle) {\n dom.setAttribute(\"style\", this.__customStyle);\n }\n return dom;\n }\n\n updateDOM(\n prevNode: StyledTextNode,\n dom: HTMLElement,\n config: EditorConfig,\n ): boolean {\n // super.updateDOM returns true when Lexical needs to fully recreate the DOM\n // node (e.g. format flag changed from bold → not bold requires a new element)\n const mustRecreate = super.updateDOM(prevNode as never, dom, config);\n if (mustRecreate) return true;\n\n // Only patch the style attribute — no need to recreate the whole element\n if (prevNode.__customStyle !== this.__customStyle) {\n if (this.__customStyle) dom.setAttribute(\"style\", this.__customStyle);\n else dom.removeAttribute(\"style\");\n }\n return false;\n }\n\n // ── Style API ─────────────────────────────────────────────────────────────\n\n // Merge one or more CSS properties into the existing style.\n // Pass null as a value to remove a specific property.\n //\n // Examples:\n // node.patchStyle({ color: \"#ff0000\" })\n // node.patchStyle({ \"font-size\": \"18px\", \"font-family\": \"Georgia\" })\n // node.patchStyle({ color: null }) // removes color only\n patchStyle(patch: Record<string, string | null>): void {\n const self = this.getWritable() as StyledTextNode;\n self.__customStyle = mergeStyles(self.__customStyle, patch);\n }\n\n // Get a single CSS property value from the custom style\n getStyleProperty(prop: string): string | undefined {\n return styleStringToMap(this.__customStyle)[prop];\n }\n\n // Replace entire style string (use patchStyle for incremental updates)\n setCustomStyle(style: string): void {\n const self = this.getWritable() as StyledTextNode;\n self.__customStyle = style;\n }\n\n // Remove all custom styles\n clearStyle(): void {\n const self = this.getWritable() as StyledTextNode;\n self.__customStyle = \"\";\n }\n\n getCustomStyle(): string {\n return this.__customStyle;\n }\n}\n","import { $getSelection, $isRangeSelection } from \"lexical\";\nimport { StyledTextNode } from \"../plugins/StyledTextNode\";\nimport { $patchStyleText } from \"@lexical/selection\";\n\nfunction isValidEmail(email: string): boolean {\n return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email);\n}\n\nexport { isValidEmail };\n\n// ─── Style Utilities ──────────────────────────────────────────────────────────\n\n// \"color: red; font-size: 14px\" → { color: \"red\", \"font-size\": \"14px\" }\nexport function styleStringToMap(style: string): Record<string, string> {\n return Object.fromEntries(\n style\n .split(\";\")\n .map((s) => s.trim())\n .filter(Boolean)\n .map((s) => {\n const [prop, ...rest] = s.split(\":\");\n return [prop.trim(), rest.join(\":\").trim()];\n }),\n );\n}\n\n// { color: \"red\", \"font-size\": \"14px\" } → \"color: red; font-size: 14px\"\nexport function mapToStyleString(map: Record<string, string>): string {\n return Object.entries(map)\n .filter(([, v]) => v != null && v !== \"\")\n .map(([k, v]) => `${k}: ${v}`)\n .join(\"; \");\n}\n\n// Merge patch into an existing style string — null value removes the property\nexport function mergeStyles(\n existing: string,\n patch: Record<string, string | null>,\n): string {\n const map = styleStringToMap(existing);\n for (const [prop, value] of Object.entries(patch)) {\n if (value === null) delete map[prop];\n else map[prop] = value;\n }\n return mapToStyleString(map);\n}\n\n// Extract inline styles from a DOM element, stripping properties Lexical\n// adds on export that are meaningless on import (white-space: pre-wrap)\nexport function extractStyles(el: HTMLElement): string {\n const map = styleStringToMap(el.getAttribute(\"style\") ?? \"\");\n // Remove Lexical export artifacts that shouldn't influence re-import\n delete map[\"white-space\"];\n return mapToStyleString(map);\n}\n\n// Helper: patch style on all StyledTextNodes in selection\nexport function $patchStyledNodes(patch: Record<string, string | null>): void {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) return;\n\n const nodes = selection.getNodes();\n nodes.forEach((node) => {\n if (node instanceof StyledTextNode) {\n node.patchStyle(patch); // merges, doesn't replace\n } else {\n // fallback for regular TextNodes — use Lexical's built-in\n if (Object.keys(patch).length) {\n $patchStyleText(selection, patch);\n }\n }\n });\n}\n","import { useEffect, useState } from \"react\";\n\n// ─── Dispatch a style command into the signature ──────────────────────────────\n\nexport function dispatchSignatureStyle(command: string, value: string) {\n document.dispatchEvent(\n new CustomEvent(\"signature:style\", { detail: { command, value } }),\n );\n}\n\n// ─── Hook: returns true when the current selection is inside a signature ──────\n\nexport function useIsSignatureActive(): boolean {\n const [active, setActive] = useState(false);\n\n useEffect(() => {\n const check = () => {\n const sel = window.getSelection();\n if (!sel || sel.rangeCount === 0) {\n setActive(false);\n return;\n }\n const node = sel.anchorNode;\n // Signature divs have data-signature=\"true\" — see SignatureDecorator\n const inside =\n !!(node as HTMLElement)?.closest?.('[data-signature=\"true\"]') ||\n !!node?.parentElement?.closest('[data-signature=\"true\"]');\n setActive(inside);\n };\n document.addEventListener(\"selectionchange\", check);\n return () => document.removeEventListener(\"selectionchange\", check);\n }, []);\n\n return active;\n}\n","import { useRef, useCallback, useEffect, useState } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $getNodeByKey } from \"lexical\";\nimport { HtmlNode } from \"./HtmlNode\";\nimport {\n FORMAT_TEXT_COMMAND,\n COMMAND_PRIORITY_CRITICAL,\n LexicalCommand,\n} from \"lexical\";\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\ninterface Props {\n nodeKey: string;\n html: string;\n}\n\n// Map of Lexical FORMAT_TEXT_COMMAND format → execCommand equivalent\nexport const FORMAT_TO_EXEC: Record<string, string> = {\n bold: \"bold\",\n italic: \"italic\",\n underline: \"underline\",\n strikethrough: \"strikeThrough\",\n subscript: \"subscript\",\n superscript: \"superscript\",\n fontSize: \"fontSize\",\n backColor: \"backColor\",\n foreColor: \"foreColor\",\n};\n\n// ─── Hook: track whether selection is inside this signature ───────────────────\n\nfunction useIsSelectionInside(ref: React.RefObject<HTMLDivElement>) {\n const [isInside, setIsInside] = useState(false);\n\n useEffect(() => {\n const check = () => {\n const sel = window.getSelection();\n if (!sel || sel.rangeCount === 0 || !ref.current) {\n setIsInside(false);\n return;\n }\n setIsInside(ref.current.contains(sel.anchorNode));\n };\n\n document.addEventListener(\"selectionchange\", check);\n return () => document.removeEventListener(\"selectionchange\", check);\n }, [ref]);\n\n return isInside;\n}\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\nexport function HtmlDecorator({ nodeKey, html }: Props) {\n const [editor] = useLexicalComposerContext();\n const ref = useRef<HTMLDivElement>(null);\n const isInsideRef = useRef(false);\n const isSelectionInside = useIsSelectionInside(ref);\n\n // Keep a ref in sync so command handlers (which close over stale state) work\n useEffect(() => {\n isInsideRef.current = isSelectionInside;\n }, [isSelectionInside]);\n\n // Sync innerHTML back into SignatureNode on blur\n const syncToNode = useCallback(() => {\n const updatedHTML = ref.current?.innerHTML ?? \"\";\n editor.update(() => {\n const node = $getNodeByKey(nodeKey) as HtmlNode | null;\n if (node && updatedHTML !== node.__html) {\n node.setHTML(updatedHTML);\n }\n });\n }, [editor, nodeKey]);\n\n // ── Intercept Lexical toolbar commands when selection is inside ──────────────\n\n useEffect(() => {\n // Bold / Italic / Underline / Strikethrough etc.\n const unregisterFormat = editor.registerCommand(\n FORMAT_TEXT_COMMAND,\n (format: string) => {\n if (!isInsideRef.current) return false; // let Lexical handle normally\n const execCmd = FORMAT_TO_EXEC[format];\n if (execCmd) document.execCommand(execCmd, false);\n syncToNode();\n return true; // consumed — don't let Lexical process it\n },\n COMMAND_PRIORITY_CRITICAL,\n );\n\n return () => {\n unregisterFormat();\n };\n }, [editor, syncToNode]);\n\n // ── Listen for custom style commands from toolbar (color, font, size) ────────\n // Your toolbar should dispatch these custom events on the document when\n // a style button is clicked. See ToolbarBridge.tsx below.\n\n useEffect(() => {\n const handleStyleCommand = (e: Event) => {\n if (!isInsideRef.current) return;\n const { command, value } = (e as CustomEvent).detail as {\n command: string;\n value: string;\n };\n document.execCommand(command, false, value);\n syncToNode();\n };\n\n document.addEventListener(\"signature:style\", handleStyleCommand);\n return () =>\n document.removeEventListener(\"signature:style\", handleStyleCommand);\n }, [syncToNode]);\n\n const stop = (e: React.SyntheticEvent) => e.stopPropagation();\n\n return (\n <div\n ref={ref}\n contentEditable\n suppressContentEditableWarning\n dangerouslySetInnerHTML={{ __html: html }}\n onBlur={syncToNode}\n onInput={stop}\n onKeyDown={stop}\n onKeyUp={stop}\n onKeyPress={stop}\n onPaste={stop}\n onCut={stop}\n onCopy={stop}\n onClick={stop}\n onMouseDown={stop}\n data-signature=\"true\"\n style={{ outline: \"none\", cursor: \"text\", borderRadius: 4 }}\n onFocus={(e) => {\n // e.currentTarget.style.outline = \"2px solid rgba(59,130,246,0.25)\";\n }}\n onBlurCapture={(e) => {\n e.currentTarget.style.outline = \"none\";\n }}\n />\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 } from \"@lexical/selection\";\nimport { OPTIONS } from \"../utils/core\";\nimport { $patchStyledNodes } from \"../utils/common\";\nimport {\n dispatchSignatureStyle,\n useIsSignatureActive,\n} from \"../plugins/PasterPlugin/ToolbarBridge\";\nimport { FORMAT_TO_EXEC } from \"../plugins/PasterPlugin/HtmlDecorator\";\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 (\n \"#\" +\n [r, g, b]\n .map((x) => {\n const hex = parseInt(x).toString(16);\n return hex.length === 1 ? \"0\" + hex : hex;\n })\n .join(\"\")\n );\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 (\n \"#\" +\n [r, g, b]\n .map((x) => {\n const hex = parseInt(x).toString(16);\n return hex.length === 1 ? \"0\" + hex : hex;\n })\n .join(\"\")\n );\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 [eventTypes.bold]: false,\n [eventTypes.italic]: false,\n [eventTypes.underline]: false,\n });\n const [isLink, setIsLink] = useState(false);\n\n const isSignatureActive = useIsSignatureActive();\n\n const updateToolbar = useCallback(() => {\n editor.getEditorState().read(() => {\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 if (anchorNode === null) return;\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.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 let fontFamily = \"\";\n\n // If selection is collapsed, check for selection style overrides\n if (selection.isCollapsed()) {\n fontFamily =\n selection.style\n .split(\"font-family:\")[1]\n ?.split(\";\")[0]\n ?.trim()\n .replace(/['\"]/g, \"\") || \"\";\n }\n\n if (!fontFamily) {\n fontFamily = computedStyle.getPropertyValue(\"font-family\");\n }\n\n if (fontFamily) {\n let firstFont = fontFamily\n .split(\",\")[0]\n .trim()\n .replace(/['\"]/g, \"\");\n // Normalize system fonts to sans-serif\n if (\n [\n \"-apple-system\",\n \"BlinkMacSystemFont\",\n \"system-ui\",\n \"Arial\",\n \"Helvetica\",\n ].includes(firstFont)\n ) {\n firstFont = \"sans-serif\";\n } else if ([\"Times New Roman\", \"Times\"].includes(firstFont)) {\n firstFont = \"sans-serif\";\n }\n newState[eventTypes.fontFamily] = firstFont;\n }\n\n // Get font size - extract only the number\n let fontSize = \"\";\n if (selection.isCollapsed()) {\n fontSize =\n selection.style.split(\"font-size:\")[1]?.split(\";\")[0]?.trim() ||\n \"\";\n }\n\n if (!fontSize) {\n fontSize = computedStyle.getPropertyValue(\"font-size\");\n }\n\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 // Only set if we have actual colors (not transparent/initial)\n const hexColor = color ? rgbToHex(color) : null;\n const hexBgColor =\n backgroundColor &&\n backgroundColor !== \"rgba(0, 0, 0, 0)\" &&\n backgroundColor !== \"transparent\"\n ? rgbToHex(backgroundColor)\n : null;\n\n if (hexColor || hexBgColor) {\n newState[eventTypes.color.base] = {\n text: hexColor || null,\n background: hexBgColor || null,\n };\n } else {\n newState[eventTypes.color.base] = {\n text: null,\n background: null,\n };\n }\n\n // Get text alignment directly from the Lexical block element\n let textAlign = typeof (element as any).getFormatType === 'function' \n ? (element as any).getFormatType() \n : \"left\";\n if (textAlign === \"start\" || textAlign === \"\") {\n textAlign = \"left\";\n }\n newState[eventTypes.align.base] = textAlign;\n }\n\n setSelectedEventTypes((prev) => ({ ...prev, ...newState }));\n }\n });\n }, [editor]);\n\n const toggleStyle = (\n key: string,\n styleKey: string,\n value: string,\n check: (current: string) => boolean,\n ) => {\n editor.update(() => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) return;\n\n const node = getSelectedNode(selection);\n const el =\n editor.getElementByKey(node.getKey()) ||\n editor.getElementByKey(node.getParent().getKey());\n\n const current = el\n ? window.getComputedStyle(el).getPropertyValue(styleKey)\n : \"\";\n\n const isActive = check(current);\n setSelectedEventTypes((prev: any) => ({ ...prev, [key]: !prev[key] }));\n\n $patchStyledNodes({\n [styleKey]: isActive ? \"\" : value,\n });\n });\n };\n\n useEffect(() => {\n updateToolbar();\n }, [editor, updateToolbar]);\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 toggleStyle(eventTypes.bold, \"font-weight\", \"700\", (current) => {\n return (\n current === \"bold\" || (parseInt(current || \"0\", 10) || 0) >= 600\n );\n });\n break;\n case eventTypes.italic:\n toggleStyle(\n eventTypes.italic,\n \"font-style\",\n \"italic\",\n (current) => current === \"italic\",\n );\n break;\n case eventTypes.underline:\n toggleStyle(\n eventTypes.underline,\n \"text-decoration\",\n \"underline\",\n (current) => current.includes(\"underline\"),\n );\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 const fontFamily = event as string;\n setSelectedEventTypes((prev: any) => ({\n ...prev,\n [eventTypes.fontFamily]: fontFamily,\n }));\n\n applyFontFamily(fontFamily);\n break;\n }\n case eventTypes.fontSize: {\n const fontSizeKey = event as string;\n const fontSizePx =\n OPTIONS.find((i) => i.key === fontSizeKey)?.sizePx ?? 16;\n setSelectedEventTypes((prev: any) => ({\n ...prev,\n [eventTypes.fontSize]: fontSizePx,\n }));\n applyFontSize(fontSizeKey);\n break;\n }\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 $patchStyledNodes({ \"font-family\": fontFamily });\n }\n });\n };\n\n const applyFontSize = (fontSize: string) => {\n if (isSignatureActive) {\n const selectedFontSize =\n OPTIONS.find((i) => i.key === fontSize)?.htmlNodeVal ?? \"2\";\n // execCommand fontSize only accepts 1-7, use CSS instead:\n dispatchSignatureStyle(FORMAT_TO_EXEC.fontSize, selectedFontSize); // triggers styleWith accepted fontSize\n } else {\n const selectedFontSize =\n OPTIONS.find((i) => i.key === fontSize)?.sizePx ?? 16;\n editor.update(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n $patchStyledNodes({ \"font-size\": `${selectedFontSize}px` });\n }\n });\n }\n };\n\n const applyFontColor = (colorObj: { background: string; text: string }) => {\n if (isSignatureActive) {\n dispatchSignatureStyle(FORMAT_TO_EXEC.backColor, colorObj.background); // background color\n dispatchSignatureStyle(FORMAT_TO_EXEC.foreColor, colorObj.text); // text color\n } else {\n editor.update(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n $patchStyledNodes({\n \"background-color\": colorObj.background,\n color: colorObj.text,\n });\n }\n });\n }\n };\n\n const insertLink = useCallback(() => {\n if (!isLink) {\n editor.update(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n if (selection.isCollapsed()) {\n // Select the word to the left if selection is collapsed\n selection.modify(\"extend\", true, \"word\");\n }\n const updatedSelection = $getSelection();\n if (\n $isRangeSelection(updatedSelection) &&\n !updatedSelection.isCollapsed()\n ) {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, \"https://\");\n }\n }\n });\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 [isLink, setIsLink] = 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 let isLinkActive = false;\n let newLinkUrl = \"\";\n\n if ($isRangeSelection(selection)) {\n const node = getSelectedNode(selection);\n const parent = node.getParent();\n if ($isLinkNode(parent)) {\n newLinkUrl = parent.getURL();\n isLinkActive = true;\n } else if ($isLinkNode(node)) {\n newLinkUrl = node.getURL();\n isLinkActive = true;\n }\n }\n\n setLinkUrl(newLinkUrl);\n setIsLink(isLinkActive);\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 rootElement &&\n rootElement.contains(nativeSelection.anchorNode) &&\n (isEditMode || !nativeSelection.isCollapsed || isLinkActive || newLinkUrl !== \"\")\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 useEffect(() => {\n if (linkUrl === \"https://\") {\n setEditMode(true);\n }\n }, [linkUrl]);\n\n return (\n <div className=\"floating-link-editor\" ref={editorRef}>\n {isEditMode ? (\n <>\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 <button\n className=\"link-button\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => {\n if (isEditMode) editor.dispatchCommand(TOGGLE_LINK_COMMAND, linkUrl);\n setEditMode(false);\n }}>\n <Icon name=\"Check\" />\n </button>\n </>\n ) : (\n <div className=\"link-view-mode\">\n <span className=\"link-view-label\">Go to link:</span>\n <a href={linkUrl} target=\"_blank\" rel=\"noopener noreferrer\" className=\"link-view-url\">\n {linkUrl}\n </a>\n <span className=\"link-view-divider\">|</span>\n <button\n className=\"link-text-button\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => setEditMode(true)}\n >\n Change\n </button>\n <span className=\"link-view-divider\">|</span>\n <button\n className=\"link-text-button\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);\n setEditMode(false);\n }}\n >\n Remove\n </button>\n </div>\n )}\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} className=\"tool-bar-button\" data-tooltip=\"Attach files\">\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 { useEffect, useState, useCallback } from 'react';\n\ndeclare global {\n interface Window {\n gapi: any;\n google: any;\n }\n}\n\nexport function useGooglePicker(\n clientId: string | undefined,\n apiKey: string | undefined,\n onSelect: (files: File[]) => void,\n customDiscoveryDocs?: string[],\n customScopes?: string\n) {\n const discoveryDocs = customDiscoveryDocs || [\"https://www.googleapis.com/discovery/v1/apis/drive/v3/rest\"];\n const scopes = customScopes || \"https://www.googleapis.com/auth/drive.readonly\";\n\n const [gapiLoaded, setGapiLoaded] = useState(false);\n const [gisLoaded, setGisLoaded] = useState(false);\n const [tokenClient, setTokenClient] = useState<any>(null);\n const [accessToken, setAccessToken] = useState<string | null>(null);\n\n useEffect(() => {\n const loadScripts = () => {\n const gapiScript = document.createElement('script');\n gapiScript.src = 'https://apis.google.com/js/api.js';\n gapiScript.async = true;\n gapiScript.defer = true;\n gapiScript.onload = () => {\n if (!apiKey) return;\n window.gapi.load('client:picker', async () => {\n await window.gapi.client.init({\n apiKey: apiKey,\n discoveryDocs: discoveryDocs,\n });\n setGapiLoaded(true);\n });\n };\n document.body.appendChild(gapiScript);\n\n const gisScript = document.createElement('script');\n gisScript.src = 'https://accounts.google.com/gsi/client';\n gisScript.async = true;\n gisScript.defer = true;\n gisScript.onload = () => {\n if (!clientId) return;\n const client = window.google.accounts.oauth2.initTokenClient({\n client_id: clientId,\n scope: scopes,\n callback: '', // defined at request time\n });\n setTokenClient(client);\n setGisLoaded(true);\n };\n document.body.appendChild(gisScript);\n };\n\n if (clientId && apiKey) {\n loadScripts();\n }\n }, [clientId, apiKey]);\n\n const createPicker = useCallback((token: string) => {\n if (!apiKey) return;\n const picker = new window.google.picker.PickerBuilder()\n .addView(window.google.picker.ViewId.DOCS)\n .setOAuthToken(token)\n .setDeveloperKey(apiKey)\n .setSize(1051, 650)\n .setCallback(async (data: any) => {\n if (data.action === window.google.picker.Action.PICKED) {\n const files = data.docs.map((doc: any) => {\n // Since we can't easily get the actual File object from Drive without downloading,\n // we create a placeholder File object with the name and metadata.\n // In a real app, you might download the file or just store the Drive URL.\n return new File([], doc.name, { type: doc.mimeType });\n });\n onSelect(files);\n }\n })\n .build();\n picker.setVisible(true);\n }, [onSelect]);\n\n const openPicker = useCallback(() => {\n if (!tokenClient) return;\n\n // Reuse existing token if available\n if (accessToken) {\n createPicker(accessToken);\n return;\n }\n\n tokenClient.callback = async (response: any) => {\n if (response.error !== undefined) {\n throw response;\n }\n setAccessToken(response.access_token);\n createPicker(response.access_token);\n };\n\n tokenClient.requestAccessToken({ prompt: 'consent' });\n }, [tokenClient, accessToken, createPicker]);\n\n return { openPicker, isLoaded: gapiLoaded && gisLoaded };\n}\n","import React, { useEffect, useRef } from \"react\";\nimport Picker from \"@emoji-mart/react\";\nimport data from \"@emoji-mart/data\";\n\ninterface EmojiPickerProps {\n onEmojiSelect: (emoji: any) => void;\n}\n\nconst EmojiPicker: React.FC<EmojiPickerProps> = ({ onEmojiSelect }) => {\n const pickerRef = useRef<HTMLDivElement>(null);\n const [isClient, setIsClient] = React.useState(false);\n\n useEffect(() => {\n setIsClient(true);\n // Log to confirm if Picker component is being initialized\n console.log(\"EmojiPicker: isClient set to true\");\n }, []);\n\n if (!isClient) return null;\n\n return (\n <div\n ref={pickerRef}\n onClick={(e) => e.stopPropagation()}\n onMouseDown={(e) => e.stopPropagation()}\n >\n <Picker\n data={data}\n onEmojiSelect={(emoji: any) => {\n console.log(\"Emoji selected:\", emoji);\n onEmojiSelect(emoji);\n }}\n />\n </div>\n );\n};\n\nexport default EmojiPicker;\n","import {\n DecoratorNode,\n EditorConfig,\n NodeKey,\n SerializedLexicalNode,\n} from \"lexical\";\nimport * as React from \"react\";\nimport { JSX } from \"react\";\n\nfunction ImageComponent({ src, altText }: { src: string; altText: string }) {\n return <img src={src} alt={altText} />;\n}\n\nexport interface SerializedImageNode extends SerializedLexicalNode {\n src: string;\n altText: string;\n type: \"image\";\n version: 1;\n}\n\nexport class ImageNode extends DecoratorNode<JSX.Element> {\n __src: string;\n __altText: string;\n\n static getType(): string {\n return \"image\";\n }\n\n static clone(node: ImageNode): ImageNode {\n const clonedNode = new ImageNode(node.__key);\n clonedNode.__src = node.__src;\n clonedNode.__altText = node.__altText;\n return clonedNode;\n }\n\n constructor(key?: NodeKey) {\n // Constructor now takes 0 required arguments\n super(key);\n this.__src = \"\"; // Initialize with default empty string\n this.__altText = \"\"; // Initialize with default empty string\n }\n\n static importJSON(serializedNode: SerializedImageNode): ImageNode {\n const node = $createImageNode(serializedNode.src, serializedNode.altText); // Still use $createImageNode for consistency\n node.setSrc(serializedNode.src);\n node.setAltText(serializedNode.altText);\n return node;\n }\n\n exportJSON(): SerializedImageNode {\n return {\n altText: this.getAltText(),\n src: this.getSrc(),\n type: \"image\",\n version: 1,\n };\n }\n\n createDOM(config: EditorConfig): HTMLElement {\n const div = document.createElement(\"div\");\n div.style.display = \"contents\";\n return div;\n }\n\n updateDOM(): false {\n return false;\n }\n\n setSrc(src: string): void {\n const writable = this.getWritable();\n writable.__src = src;\n }\n\n getSrc(): string {\n return this.__src;\n }\n\n setAltText(altText: string): void {\n const writable = this.getWritable();\n writable.__altText = altText;\n }\n\n getAltText(): string {\n return this.__altText;\n }\n\n getTextContent(): string {\n return this.__altText;\n }\n\n decorate(): JSX.Element {\n return React.createElement(ImageComponent, {\n src: this.__src,\n altText: this.__altText,\n });\n }\n}\n\nexport function $createImageNode(src: string, altText: string): ImageNode {\n const imageNode = new ImageNode();\n imageNode.setSrc(src);\n imageNode.setAltText(altText);\n return imageNode;\n}\n\nexport function $isImageNode(node: ImageNode | null | undefined): boolean {\n return node instanceof ImageNode;\n}\n","import * as React from \"react\";\nimport { useEffect } from \"react\";\nimport { JSX } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { COMMAND_PRIORITY_EDITOR, createCommand } from \"lexical\";\nimport { $insertNodeToNearestRoot } from \"@lexical/utils\";\nimport { $createImageNode, ImageNode } from \"./ImageNode\";\n\nexport const INSERT_IMAGE_COMMAND = createCommand<{\n src: string;\n altText: string;\n}>();\n\nexport function ImagePlugin(): JSX.Element | null {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n if (!editor.hasNodes([ImageNode])) {\n throw new Error(\"ImagesPlugin: ImageNode not registered on editor\");\n }\n\n return editor.registerCommand(\n INSERT_IMAGE_COMMAND,\n (payload) => {\n const { src, altText } = payload;\n const imageNode = $createImageNode(src, altText);\n $insertNodeToNearestRoot(imageNode);\n\n return true;\n },\n COMMAND_PRIORITY_EDITOR,\n );\n }, [editor]);\n\n return null;\n}\n","import { useEffect, useRef, 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\";\nimport { useGooglePicker } from \"../../../hook/useGooglePicker\";\n\n// Emoji imports\nimport EmojiPicker from \"./EmojiPicker\";\nimport {\n $createTextNode,\n $getSelection,\n LexicalEditor,\n $isRangeSelection,\n} from \"lexical\";\nimport { TOGGLE_LINK_COMMAND } from \"@lexical/link\";\nimport { INSERT_IMAGE_COMMAND } from \"../../../plugins/ImagePlugin/ImagePlugin\"; // Added import\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 setShowEmojiPicker: React.Dispatch<React.SetStateAction<boolean>>;\n setEmojiPosition: React.Dispatch<\n React.SetStateAction<{ top: number; left: number } | null>\n >;\n isLink: boolean;\n editor: LexicalEditor | null;\n openDrivePicker: () => void;\n isMoreVisible: boolean;\n collapsedFormattingPlugins: Record<string, any>;\n visibleFormattingPlugins: Record<string, any>;\n moreOpen: boolean;\n setMoreOpen: React.Dispatch<React.SetStateAction<boolean>>;\n}\n\nconst getToolbarComponent = (\n plugin: any,\n {\n onChange,\n state,\n setState,\n selectedEventTypes,\n blockType,\n setAttachments,\n setShowEmojiPicker,\n setEmojiPosition,\n isLink,\n editor,\n openDrivePicker,\n }: 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.lockClock:\n // case eventTypes.insertSignature:\n return (\n <button\n key={`${plugin.name}-${plugin.icon}`}\n className={`tool-bar-button ${\n selectedEventTypes?.[plugin.name] ? \"active-btn-toolbar\" : \"\"\n }`}\n onClick={() => onChange(plugin.name, true)}\n data-tooltip={plugin.label}\n >\n <Icon className=\"tool-bar-button-icon\" name={plugin.icon} />\n </button>\n );\n\n case eventTypes.drive:\n return (\n <button\n key={`${plugin.name}-${plugin.icon}`}\n className={`tool-bar-button ${\n selectedEventTypes?.[plugin.name] ? \"active-btn-toolbar\" : \"\"\n }`}\n onClick={openDrivePicker}\n data-tooltip=\"Insert files using Drive\"\n >\n <Icon className=\"tool-bar-button-icon\" name={plugin.icon} />\n </button>\n );\n case eventTypes.insertPhoto: // New case for insertPhoto\n return (\n <>\n <input\n type=\"file\"\n accept=\"image/*\"\n style={{ display: \"none\" }}\n id=\"image-upload\"\n onChange={(event) => {\n const files = event.target.files;\n if (files && files.length > 0) {\n const reader = new FileReader();\n reader.onloadend = () => {\n if (editor) {\n editor.dispatchCommand(INSERT_IMAGE_COMMAND, {\n src: reader.result as string,\n altText: files[0].name,\n });\n }\n };\n reader.readAsDataURL(files[0]);\n }\n }}\n />\n <button\n key={`${plugin.name}-${plugin.icon}`}\n className={`tool-bar-button ${\n selectedEventTypes?.[plugin.name] ? \"active-btn-toolbar\" : \"\"\n }`}\n onClick={() => {\n document.getElementById(\"image-upload\")?.click();\n }}\n data-tooltip={plugin.label}\n >\n <Icon className=\"tool-bar-button-icon\" name={plugin.icon} />\n </button>\n </>\n );\n\n case eventTypes.link:\n return (\n <button\n key={`${plugin.name}-${plugin.icon}`}\n className={`tool-bar-button ${isLink ? \"active-btn-toolbar\" : \"\"}`}\n onClick={() => onChange(plugin.name, true)}\n data-tooltip={plugin.label}\n >\n <Icon className=\"tool-bar-button-icon\" name={plugin.icon} />\n </button>\n );\n\n case eventTypes.listNumber:\n return (\n <button\n key={`${plugin.name}-${plugin.icon}`}\n className={`tool-bar-button ${blockType === \"ol\" ? \"active-btn-toolbar\" : \"\"}`}\n onClick={() => onChange(plugin.name, true)}\n data-tooltip={plugin.label}\n >\n <Icon className=\"tool-bar-button-icon\" name={plugin.icon} />\n </button>\n );\n\n case eventTypes.listBullet:\n return (\n <button\n key={`${plugin.name}-${plugin.icon}`}\n className={`tool-bar-button ${blockType === \"ul\" ? \"active-btn-toolbar\" : \"\"}`}\n onClick={() => onChange(plugin.name, true)}\n data-tooltip={plugin.label}\n >\n <Icon className=\"tool-bar-button-icon\" name={plugin.icon} />\n </button>\n );\n\n case eventTypes.attachFile:\n return (\n <FileUploader\n value={state?.[plugin.name]}\n handleFileChange={(files) => {\n setState((prev) => ({ ...prev, [plugin.name]: files }));\n setAttachments(files);\n }}\n />\n );\n\n case eventTypes.fontFamily:\n return (\n <FontSelect\n value={selectedEventTypes?.[plugin.name] || state?.[plugin.name]}\n onChange={(e) => 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) => 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) => 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) => onChange(plugin.name, e)}\n />\n );\n\n case eventTypes.emoji:\n return (\n <button\n key={plugin.name}\n className=\"tool-bar-button\"\n onMouseDown={(e: any) => {\n e.preventDefault();\n e.stopPropagation();\n console.log(\n \"Emoji button clicked, current state:\",\n setShowEmojiPicker,\n );\n const rect = e.currentTarget.getBoundingClientRect();\n const topPosition = rect.top + window.scrollY - 440;\n\n setEmojiPosition({\n top: topPosition < 0 ? rect.bottom + window.scrollY + 10 : topPosition,\n left: Math.max(10, rect.left + window.scrollX),\n });\n\n setShowEmojiPicker((prev) => !prev);\n }}\n type=\"button\"\n data-tooltip=\"Insert emoji\"\n >\n <div style={{ pointerEvents: \"none\" }}>\n <Icon className=\"tool-bar-button-icon\" name={plugin.icon} />\n </div>\n </button>\n );\n\n default:\n break;\n }\n\n if (plugin.type === toolbarComponentType.divider)\n return <span className=\"divider\" />;\n else return;\n};\n\ninterface GetComponentProps extends ToolbarComponentProps {\n toggle: boolean;\n setToggle: React.Dispatch<React.SetStateAction<boolean>>;\n}\n\nconst getComponent = (\n plugin: { type: string; icon?: string; options?: any[]; name?: string },\n props: GetComponentProps & { key: string },\n) => {\n const { key, ...componentProps } = props;\n switch (plugin.type) {\n case toolbarComponentType.divider:\n return <div key={key} className=\"divider\" />;\n\n case toolbarComponentType.component:\n return (\n <div key={key} style={{ display: \"contents\" }}>\n {getToolbarComponent(plugin, componentProps)}\n </div>\n );\n\n case toolbarComponentType.styling:\n return (\n <div key={key} className=\"styling-toolbar\">\n {props.toggle && plugin.options?.length ? (\n <div className=\"styling-options\">\n {props.isMoreVisible\n ? props.visibleFormattingPlugins.map(\n (option: any, index: number) => (\n <div\n key={`${option.name}-${index}`}\n style={{ display: \"contents\" }}\n >\n {!option.hideOnCollapse\n ? getToolbarComponent(option, componentProps)\n : null}\n </div>\n ),\n )\n : plugin.options.map((option: any, index: number) => (\n <div\n key={`${option.name}-${index}`}\n style={{ display: \"contents\" }}\n >\n {getToolbarComponent(option, componentProps)}\n </div>\n ))}\n\n {/* More button (visible on small screens via CSS) */}\n <div className=\"more-wrapper\">\n <button\n className=\"tool-bar-button more-button\"\n onClick={() => props.setMoreOpen((v) => !v)}\n data-tooltip=\"More\"\n >\n <Icon className=\"tool-bar-button-icon\" name=\"DownArrow\" />\n </button>\n\n {props.moreOpen && (\n <div className=\"more-dropdown\">\n {props.collapsedFormattingPlugins.map((option, index) => (\n <div key={`more-${index}`} className=\"more-item\">\n <div\n key={`${option.name}-${index}`}\n style={{ display: \"contents\" }}\n >\n {getToolbarComponent(option, componentProps)}\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n ) : null}\n <button\n onClick={() => props.setToggle((prev) => !prev)}\n className=\"tool-bar-button\"\n data-tooltip=\"Formatting options\"\n >\n <Icon className=\"tool-bar-button-icon\" name={plugin.icon as any} />\n </button>\n </div>\n );\n\n default:\n return;\n }\n};\n\ninterface ToolBarProps {\n rightChildren?: React.ReactNode;\n leftChildren?: React.ReactNode;\n customTool?: React.ReactNode;\n disabled?: boolean;\n}\n\nfunction ToolBar({\n rightChildren,\n leftChildren,\n customTool,\n disabled,\n}: ToolBarProps) {\n const [toggle, setToggle] = useState(true);\n const [state, setState] = useState<Record<string, any>>({});\n const [showEmojiPicker, setShowEmojiPicker] = useState(false);\n const [emojiPosition, setEmojiPosition] = useState<{\n top: number;\n left: number;\n } | null>(null);\n const [moreOpen, setMoreOpen] = useState<boolean>(false);\n const [isMoreVisible, setIsMoreVisible] = useState<boolean>(false);\n const stylingPlugin = pluginList.find(\n (p) => p.type === toolbarComponentType.styling,\n );\n const formattingOptions = stylingPlugin?.options || [];\n\n const collapsedFormattingPlugins = formattingOptions.filter(\n (p: any) => p?.collapse,\n );\n const visibleFormattingPlugins = formattingOptions.filter(\n (p: any) => !p?.collapse,\n );\n\n const { setAttachments, googleDriveConfig } = useEmailContext();\n const { onChange, isLink, editor, selectedEventTypes, blockType } =\n useOnClickListener();\n\n const { openPicker } = useGooglePicker(\n googleDriveConfig?.clientId,\n googleDriveConfig?.apiKey,\n (files) => {\n setState((prev) => {\n const currentFiles = prev[eventTypes.attachFile] || [];\n const updatedFiles = [...currentFiles, ...files];\n setAttachments(updatedFiles);\n return { ...prev, [eventTypes.attachFile]: updatedFiles };\n });\n },\n googleDriveConfig?.discoveryDocs,\n googleDriveConfig?.scopes,\n );\n\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const observer = new ResizeObserver((entries) => {\n const width = entries[0].contentRect.width;\n setIsMoreVisible(width <= 720);\n });\n\n if (containerRef.current) observer.observe(containerRef.current);\n return () => observer.disconnect();\n }, []);\n\n return (\n <div\n ref={containerRef}\n className={`toolbar-container ${disabled ? \"toolbar-disabled\" : \"\"}`}\n >\n {state[eventTypes.attachFile]?.length ? (\n <div className=\"file-upload-container\">\n {state[eventTypes.attachFile].map((item: File, index: number) => (\n <FilePreview\n key={item.name + index}\n file={item}\n index={index}\n onRemove={(i) => {\n setState((prev: any) => {\n const updatedFiles = prev[eventTypes.attachFile].filter(\n (_, idx) => idx !== i,\n );\n setAttachments(updatedFiles);\n return { ...prev, [eventTypes.attachFile]: updatedFiles };\n });\n }}\n />\n ))}\n </div>\n ) : null}\n\n <div className=\"toolbar-wrapper\">\n {leftChildren}\n <div className=\"plugin-wrapper\">\n {pluginList.map((plugin, index) =>\n getComponent(plugin, {\n key: `${plugin.name || plugin.type}-${index}`,\n toggle,\n setToggle,\n onChange,\n state,\n setState,\n selectedEventTypes,\n blockType,\n setAttachments,\n setShowEmojiPicker,\n setEmojiPosition,\n isLink,\n editor,\n openDrivePicker: openPicker,\n isMoreVisible,\n collapsedFormattingPlugins,\n visibleFormattingPlugins,\n moreOpen,\n setMoreOpen,\n }),\n )}\n {customTool}\n </div>\n {rightChildren}\n {isLink &&\n createPortal(<FloatingLinkEditor editor={editor} />, document.body)}\n </div>\n\n {/* Emoji Picker */}\n {showEmojiPicker &&\n emojiPosition &&\n createPortal(\n <div\n className=\"emoji-picker-container\"\n style={{\n position: \"absolute\",\n top: emojiPosition.top,\n left: emojiPosition.left,\n zIndex: 9999,\n }}\n >\n <EmojiPicker\n onEmojiSelect={(emoji: any) => {\n editor?.update(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n selection.insertNodes([$createTextNode(emoji.native)]);\n } else if (selection) {\n selection.insertNodes([$createTextNode(emoji.native)]);\n }\n });\n setShowEmojiPicker(false);\n }}\n />\n </div>,\n document.body,\n )}\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 { 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 { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { useEffect } from \"react\";\nimport { $getRoot, $isParagraphNode } from \"lexical\";\n\nexport default function DirectionPlugin(): null {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n return editor.registerUpdateListener(({ dirtyElements, tags }) => {\n // Don't process if it's a history merge to avoid fighting with history\n if (tags.has(\"history-merge\")) {\n return;\n }\n\n editor.update(() => {\n const root = $getRoot();\n if (root.getDirection() !== \"ltr\") {\n root.setDirection(\"ltr\");\n }\n \n // Enforce LTR on all block level nodes\n const children = root.getChildren();\n for (const child of children) {\n if ($isParagraphNode(child)) {\n if (child.getDirection() !== \"ltr\") {\n child.setDirection(\"ltr\");\n }\n }\n }\n });\n });\n }, [editor]);\n\n return null;\n}\n","/**\n * Maps Lexical-generated class names and inline styles back to attributes\n * that Lexical's importDOM understands natively.\n *\n * Problem: when Lexical exports HTML it uses class names like \"editor-text-bold\"\n * and inline styles like \"white-space: pre-wrap\". When re-importing, $generateNodesFromDOM\n * doesn't recognize these — it looks for <strong>, <em>, <u> tags or specific\n * style properties like font-weight: bold.\n */\nexport function preprocessDOM(dom: Document): Document {\n const removeEditorClasses = (el: Element) => {\n const classList = Array.from(el.classList);\n classList.forEach((className) => {\n if (className.startsWith(\"editor-\")) {\n el.classList.remove(className);\n }\n });\n\n if (el.classList.length === 0) {\n el.removeAttribute(\"class\");\n }\n };\n\n // ── 1. Map class names → semantic tags ──────────────────────────────────────\n // IMPORTANT: a text span can contain MULTIPLE format classes at once\n // (e.g. \"editor-text-bold editor-text-italic\").\n // Replacing by selector one-by-one drops remaining classes.\n dom.querySelectorAll(\"[class*='editor-text-']\").forEach((el) => {\n const htmlEl = el as HTMLElement;\n const classList = Array.from(htmlEl.classList);\n\n const formats: Array<\"strong\" | \"em\" | \"u\" | \"s\" | \"code\"> = [];\n if (classList.includes(\"editor-text-bold\")) formats.push(\"strong\");\n if (classList.includes(\"editor-text-italic\")) formats.push(\"em\");\n if (classList.includes(\"editor-text-underline\")) formats.push(\"u\");\n if (classList.includes(\"editor-text-strikethrough\")) formats.push(\"s\");\n if (classList.includes(\"editor-text-underlineStrikethrough\")) {\n formats.push(\"u\", \"s\");\n }\n if (classList.includes(\"editor-text-code\")) formats.push(\"code\");\n\n if (formats.length === 0) return;\n\n // Preserve non-editor classes and meaningful inline styles.\n const remainingClasses = classList.filter(\n (name) => !name.startsWith(\"editor-text-\"),\n );\n const styleText = htmlEl.getAttribute(\"style\") || \"\";\n\n // Build wrapper tree: <span style... class...><strong><em>...</em></strong></span>\n // span is added only when needed to carry styles/custom classes.\n let top: HTMLElement | null = null;\n let cursor: HTMLElement | null = null;\n\n const appendWrapper = (tag: string): HTMLElement => {\n const wrapper = dom.createElement(tag);\n if (!top) {\n top = wrapper;\n } else if (cursor) {\n cursor.append(wrapper);\n }\n cursor = wrapper;\n return wrapper;\n };\n\n const shouldCreateSpanContainer =\n !!styleText.trim() || remainingClasses.length > 0;\n\n if (shouldCreateSpanContainer) {\n const span = appendWrapper(\"span\");\n if (styleText.trim()) {\n span.setAttribute(\"style\", styleText);\n }\n if (remainingClasses.length > 0) {\n span.setAttribute(\"class\", remainingClasses.join(\" \"));\n }\n }\n\n formats.forEach((tag) => appendWrapper(tag));\n\n if (!top || !cursor) return;\n\n cursor.append(...Array.from(el.childNodes));\n el.replaceWith(top);\n });\n\n // ── 1b. Map inline style text formatting → semantic tags ────────────────────\n // Example: style=\"text-decoration: underline; font-style: italic; ...\"\n // Lexical import is more reliable with semantic tags (<u>, <em>, <strong>, <s>)\n // than class/style-only formatting.\n dom.querySelectorAll(\"[style]\").forEach((el) => {\n const htmlEl = el as HTMLElement;\n const style = htmlEl.style;\n\n const fontWeight = style.fontWeight?.trim().toLowerCase() || \"\";\n const numericFontWeight = Number.parseInt(fontWeight, 10);\n const hasBold =\n fontWeight === \"bold\" ||\n fontWeight === \"bolder\" ||\n (!Number.isNaN(numericFontWeight) && numericFontWeight >= 600);\n\n const fontStyle = style.fontStyle?.trim().toLowerCase() || \"\";\n const hasItalic = fontStyle === \"italic\" || fontStyle === \"oblique\";\n\n const textDecoration = (\n style.textDecorationLine ||\n style.textDecoration ||\n \"\"\n )\n .trim()\n .toLowerCase();\n const hasUnderline = textDecoration.includes(\"underline\");\n const hasStrike = textDecoration.includes(\"line-through\");\n\n const formats: Array<\"strong\" | \"em\" | \"u\" | \"s\"> = [];\n if (hasBold && ![\"STRONG\", \"B\"].includes(el.tagName))\n formats.push(\"strong\");\n if (hasItalic && ![\"EM\", \"I\"].includes(el.tagName)) formats.push(\"em\");\n if (hasUnderline && el.tagName !== \"U\") formats.push(\"u\");\n if (hasStrike && ![\"S\", \"DEL\", \"STRIKE\"].includes(el.tagName)) {\n formats.push(\"s\");\n }\n\n if (formats.length === 0) return;\n\n const originalChildren = Array.from(el.childNodes);\n if (originalChildren.length === 0) return;\n\n let rootWrapper: HTMLElement | null = null;\n let cursor: HTMLElement | null = null;\n\n formats.forEach((tag) => {\n const wrapper = dom.createElement(tag);\n if (!rootWrapper) {\n rootWrapper = wrapper;\n el.append(wrapper);\n } else if (cursor) {\n cursor.append(wrapper);\n }\n cursor = wrapper;\n });\n\n if (cursor) {\n cursor.append(...originalChildren);\n }\n });\n\n // ── 2. Clean up inline styles Lexical doesn't need ──────────────────────────\n\n // Remove \"white-space: pre-wrap\" — Lexical adds this on export but\n // doesn't need it on import. Leaving it causes importDOM to treat\n // the span as a styled node and drop the actual meaningful styles.\n dom.querySelectorAll(\"span, p, div, strong, em, u, s\").forEach((el) => {\n const htmlEl = el as HTMLElement;\n htmlEl.style.removeProperty(\"white-space\");\n\n // If span has no remaining meaningful styles and no classes, unwrap it\n // so Lexical doesn't create a redundant TextNode wrapper\n if (\n el.tagName === \"SPAN\" &&\n !htmlEl.style.cssText.trim() &&\n el.className === \"\"\n ) {\n el.replaceWith(...Array.from(el.childNodes));\n }\n });\n\n // ── 3. Map editor-paragraph → <p> (already a <p> but strip the class) ───────\n dom.querySelectorAll(\".editor-paragraph\").forEach((el) => {\n removeEditorClasses(el);\n // Preserve dir attribute for LTR/RTL\n });\n\n // ── 4. Map editor-heading-h1/h2/h3 → proper heading tags ───────────────────\n [\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"].forEach((tag) => {\n dom.querySelectorAll(`.editor-heading-${tag}`).forEach((el) => {\n const heading = dom.createElement(tag);\n heading.innerHTML = el.innerHTML;\n const htmlEl = el as HTMLElement;\n if (htmlEl.style.cssText) heading.style.cssText = htmlEl.style.cssText;\n heading.style.removeProperty(\"white-space\");\n el.replaceWith(heading);\n });\n });\n\n // ── 5. Map editor-listitem / editor-list-ul / editor-list-ol ────────────────\n dom.querySelectorAll(\".editor-listitem\").forEach((el) => {\n removeEditorClasses(el);\n });\n dom.querySelectorAll(\".editor-list-ul, .editor-list-ol\").forEach((el) => {\n removeEditorClasses(el);\n });\n\n // ── 6. Map editor-link → <a> ─────────────────────────────────────────────────\n dom.querySelectorAll(\".editor-link\").forEach((el) => {\n removeEditorClasses(el);\n });\n\n return dom;\n}\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $generateNodesFromDOM } from \"@lexical/html\";\nimport { $getRoot, $insertNodes, $createParagraphNode } from \"lexical\";\nimport { useEffect, useRef } from \"react\";\nimport { preprocessDOM } from \"../hook/usePreprocessDOM\";\n\n/**\n * Initializes the editor with HTML content and ensures LTR direction.\n * This runs only once when the component mounts.\n */\nexport default function InitialStatePlugin({\n initialHTML,\n}: {\n initialHTML?: string;\n}): null {\n const [editor] = useLexicalComposerContext();\n const isInitialized = useRef(false);\n\n useEffect(() => {\n if (isInitialized.current) return;\n\n editor.update(() => {\n const root = $getRoot();\n\n // Force LTR on root\n root.setDirection(\"ltr\");\n root.clear();\n\n if (initialHTML) {\n const parser = new DOMParser();\n // Parse raw HTML\n const rawDom = parser.parseFromString(initialHTML, \"text/html\");\n // Pre-process: map Lexical class names → semantic tags + clean styles\n const processedDom = preprocessDOM(rawDom);\n //Generating nodes — Lexical can map <strong>, <em>, color styles etc.\n const nodes = $generateNodesFromDOM(editor, processedDom);\n $insertNodes(nodes);\n } else {\n // Ensure at least one paragraph exists\n if (root.isEmpty()) {\n const paragraph = $createParagraphNode();\n paragraph.setDirection(\"ltr\");\n root.append(paragraph);\n }\n }\n\n isInitialized.current = true;\n });\n }, [editor, initialHTML]);\n\n return null;\n}\n","import {\n DecoratorNode,\n NodeKey,\n SerializedLexicalNode,\n Spread,\n LexicalEditor,\n} from \"lexical\";\nimport { JSX } from \"react\";\nimport { HtmlDecorator } from \"./HtmlDecorator\";\n\nexport type SerializedHtmlNode = Spread<\n { html: string; type: \"signature\"; version: 1 },\n SerializedLexicalNode\n>;\n\nexport class HtmlNode extends DecoratorNode<JSX.Element> {\n __html: string;\n\n static getType(): string {\n return \"signature\";\n }\n\n static clone(node: HtmlNode): HtmlNode {\n return new HtmlNode(node.__html, node.__key);\n }\n\n static importJSON(s: SerializedHtmlNode): HtmlNode {\n return new HtmlNode(s.html);\n }\n\n constructor(html: string, key?: NodeKey) {\n super(key);\n this.__html = html;\n }\n\n exportJSON(): SerializedHtmlNode {\n return {\n html: this.__html,\n type: \"signature\",\n version: 1,\n };\n }\n\n // Used when editor exports to HTML (e.g. sending the email)\n exportDOM(_editor: LexicalEditor): { element: HTMLElement } {\n const div = document.createElement(\"div\");\n div.innerHTML = this.__html;\n return { element: div };\n }\n\n // Update the stored HTML and trigger re-render\n setHTML(html: string): void {\n const self = this.getWritable();\n self.__html = html;\n }\n\n isInline(): boolean {\n return false;\n }\n\n createDOM(): HTMLElement {\n return document.createElement(\"div\");\n }\n\n updateDOM(): false {\n return false;\n }\n\n decorate(): JSX.Element {\n return <HtmlDecorator nodeKey={this.__key} html={this.__html} />;\n }\n}\n","import { useEffect } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport {\n PASTE_COMMAND,\n COMMAND_PRIORITY_CRITICAL,\n $getSelection,\n $isRangeSelection,\n $insertNodes,\n $createParagraphNode,\n} from \"lexical\";\nimport { HtmlNode } from \"./HtmlNode\";\n\n/**\n * Detects whether pasted HTML looks like a rich email signature.\n * HubSpot, WiseStamp, Newoldstamp etc. all use deeply nested tables + icon imgs.\n */\nfunction isSignatureHTML(html: string): boolean {\n const doc = new DOMParser().parseFromString(html, \"text/html\");\n const tables = doc.querySelectorAll(\"table\");\n const hasIconImgs = doc.querySelector(\n 'img[alt=\"mobilePhone\"], img[alt=\"emailAddress\"], img[alt=\"website\"]',\n );\n // 3+ nested tables = signature layout\n return tables.length >= 3 || !!hasIconImgs;\n}\n\nexport default function PastePlugin(): null {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n return editor.registerCommand(\n PASTE_COMMAND,\n (event: ClipboardEvent) => {\n const html = event.clipboardData?.getData(\"text/html\");\n const plain = event.clipboardData?.getData(\"text/plain\");\n const selection = $getSelection();\n\n if (!$isRangeSelection(selection)) return false;\n\n if (html && isSignatureHTML(html)) {\n // Signature → store raw HTML in HtmlNode (preserves ALL styles)\n $insertNodes([new HtmlNode(html), $createParagraphNode()]);\n return true;\n }\n\n if (html) {\n // Regular rich text → let Lexical's default RichTextPlugin handle it\n return false;\n }\n\n if (plain) {\n selection.insertText(plain);\n return true;\n }\n\n return false;\n },\n COMMAND_PRIORITY_CRITICAL,\n );\n }, [editor]);\n\n return null;\n}\n","import React, {\n Children,\n cloneElement,\n isValidElement,\n useState,\n useEffect,\n} from \"react\";\nimport { 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 { ListPlugin } from \"@lexical/react/LexicalListPlugin\";\nimport { LinkPlugin } from \"@lexical/react/LexicalLinkPlugin\";\nimport { AutoLinkNode, LinkNode } from \"@lexical/link\";\nimport { ListItemNode, ListNode } from \"@lexical/list\";\nimport { TableNode, TableRowNode, TableCellNode } from \"@lexical/table\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport {\n $getRoot,\n $createParagraphNode,\n $createTextNode,\n $insertNodes,\n} from \"lexical\";\nimport { $generateNodesFromDOM } from \"@lexical/html\";\n\nimport ToolBar from \"../Editor/Toolbar\";\nimport lexicalEditorTheme from \"../../Themes/lexicalEditortheme\";\nimport OnChangePlugin from \"../../plugins/OnChangePlugin\";\nimport { ImageNode } from \"../../plugins/ImagePlugin/ImageNode\";\nimport { ImagePlugin } from \"../../plugins/ImagePlugin/ImagePlugin\";\nimport DirectionPlugin from \"../../plugins/DirectionPlugin\";\nimport InitialStatePlugin from \"../../plugins/InitialStatePlugin\";\nimport PastePlugin from \"../../plugins/PasterPlugin/PastePlugin\";\nimport { HtmlNode } from \"../../plugins/PasterPlugin/HtmlNode\";\nimport { StyledTextNode } from \"../../plugins/StyledTextNode\";\n\nimport { ComposeBoxProps } from \"./types\";\nimport \"./styles.css\";\nimport \"../Editor/EditorWrapper/editor.css\";\n\n// Helper component to handle AI Insertion logic inside the Lexical Context\nconst AiIntegrationPlugin = ({\n aiContent,\n onAiInsert,\n onAiDiscard,\n aiContentComponent,\n showAiPreview,\n}: {\n aiContent?: string;\n onAiInsert?: (content: string) => void;\n onAiDiscard?: () => void;\n aiContentComponent?: React.ReactNode;\n showAiPreview?: boolean;\n}) => {\n const [editor] = useLexicalComposerContext();\n\n const handleInsert = React.useCallback(() => {\n if (!aiContent) return;\n\n editor.update(() => {\n // Create a parser to convert the AI content string (HTML) to nodes\n // Or if it's plain text, just insert text nodes.\n // Assuming aiContent might be HTML or plain text.\n // For safety, let's try to handle as HTML if it looks like it, otherwise text.\n\n try {\n const parser = new DOMParser();\n const dom = parser.parseFromString(aiContent, \"text/html\");\n const nodes = $generateNodesFromDOM(editor, dom);\n // Ensure nodes have LTR direction\n nodes.forEach((node) => {\n if (\"setDirection\" in node) {\n (node as any).setDirection(\"ltr\");\n }\n });\n $insertNodes(nodes);\n } catch (e) {\n // Fallback to plain text insertion\n const textNode = $createTextNode(aiContent);\n $insertNodes([textNode]);\n }\n });\n\n if (onAiInsert) {\n onAiInsert(aiContent);\n }\n }, [editor, aiContent, onAiInsert]);\n\n const handleDiscard = React.useCallback(() => {\n if (onAiDiscard) {\n onAiDiscard();\n }\n }, [onAiDiscard]);\n\n // Clone the AI component to inject handlers\n if (!showAiPreview || !aiContentComponent) return null;\n\n return (\n <div className=\"ai-preview-container\">\n {Children.map(aiContentComponent, (child) => {\n if (isValidElement(child)) {\n return cloneElement(child as React.ReactElement<any>, {\n onInsert: handleInsert,\n onDiscard: handleDiscard,\n });\n }\n return child;\n })}\n </div>\n );\n};\n\nexport function ComposeBox({\n aiContentComponent,\n aiContent,\n showAiPreview,\n onAiInsert,\n onAiDiscard,\n placeholder = \"\",\n initialHTML = \"\",\n rightChildren,\n leftChildren,\n customTool,\n minHeight = \"200px\",\n onChange,\n editorChildren,\n isEditorVisible = true,\n}: ComposeBoxProps) {\n const [currentHTML, setCurrentHTML] = useState(initialHTML);\n\n const handleInternalChange = (html: string) => {\n setCurrentHTML(html);\n if (onChange) {\n onChange(html);\n }\n };\n\n const isAiPreviewActive = showAiPreview && aiContentComponent;\n\n const initialConfig = {\n namespace: \"ComposeBox\",\n theme: lexicalEditorTheme,\n nodes: [\n ListNode,\n ListItemNode,\n LinkNode,\n AutoLinkNode,\n TableNode,\n TableRowNode,\n TableCellNode,\n ImageNode,\n HtmlNode,\n StyledTextNode,\n ],\n onError: (error: Error) => {\n console.error(error);\n },\n };\n\n return (\n <div className=\"compose-box-wrapper\" style={{ minHeight }}>\n <LexicalComposer initialConfig={initialConfig}>\n <div className=\"compose-box-editor-container\" style={{ flex: 1 }}>\n <div\n className=\"compose-box-scroll-area\"\n style={{ flex: 1, overflowY: \"auto\", minHeight }}\n >\n {isAiPreviewActive &&\n currentHTML &&\n currentHTML !== '<p class=\"editor-paragraph\"><br></p>' && (\n <div\n className=\"compose-box-content-preview\"\n dangerouslySetInnerHTML={{ __html: currentHTML }}\n />\n )}\n\n {/* Render AI Component via Plugin to access Editor Context */}\n <AiIntegrationPlugin\n aiContent={aiContent}\n onAiInsert={onAiInsert}\n onAiDiscard={onAiDiscard}\n aiContentComponent={aiContentComponent}\n showAiPreview={showAiPreview}\n />\n\n <div\n style={{\n display: isAiPreviewActive ? \"none\" : \"block\",\n }}\n >\n {isEditorVisible ? (\n <>\n <RichTextPlugin\n contentEditable={\n <ContentEditable\n style={{ minHeight, padding: \"16px\" }}\n className=\"compose-box-content-editable\"\n aria-placeholder={placeholder}\n placeholder={null as any}\n />\n }\n placeholder={\n <div className=\"compose-box-placeholder\">\n {placeholder}\n </div>\n }\n ErrorBoundary={LexicalErrorBoundary}\n />\n <PastePlugin />\n <ImagePlugin />\n </>\n ) : (\n editorChildren\n )}\n </div>\n </div>\n\n <ToolBar\n rightChildren={rightChildren}\n leftChildren={leftChildren}\n customTool={customTool}\n disabled={!!isAiPreviewActive}\n />\n </div>\n\n <HistoryPlugin />\n <InitialStatePlugin initialHTML={initialHTML} />\n <DirectionPlugin />\n <AutoFocusPlugin />\n <ListPlugin />\n <LinkPlugin />\n <ImagePlugin />\n <PastePlugin />\n <OnChangePlugin onChange={handleInternalChange} />\n </LexicalComposer>\n </div>\n );\n}\n\nexport default ComposeBox;\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 === \"Enter\" || e.key === \",\") {\n if (isValidEmail(currentEmail)) {\n e.preventDefault();\n addEmail({ email: currentEmail, name: currentEmail });\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 && !showBCC ? (\n <button\n className=\"btn-mail-editor\"\n onClick={() => setShowBCC?.((prev) => !prev)}\n >\n Bcc\n </button>\n ) : null}\n {needCCAndBCC && !showCC ? (\n <button\n className=\"btn-mail-editor\"\n onClick={() => setShowCC?.((prev) => !prev)}\n >\n Cc\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({\n fetchEmailOptions,\n}: {\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 {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 {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 </div>\n )}\n </div>\n );\n}\n\nexport default ReceiptsHeading;\n","import React from \"react\";\nimport MyPopup from \"../MyPopup\";\nimport type { PopupPosition } from \"reactjs-popup/dist/types\";\n\ninterface TooltipProps {\n content: React.ReactNode;\n children: React.ReactElement;\n position?: PopupPosition | PopupPosition[];\n}\n\nconst Tooltip: React.FC<TooltipProps> = ({\n content,\n children,\n position = \"bottom center\",\n}) => {\n return (\n <MyPopup trigger={children} on=\"hover\" popUpDirection={position}>\n {() => (\n <div\n className=\"mail-inbox-tooltip-content mail-inbox-popup-content\"\n style={{\n padding: \"6px 10px\",\n maxWidth: \"50%\",\n wordBreak: \"break-word\",\n fontSize: \"12px\",\n borderRadius: \"6px\",\n backgroundColor: \"#333\",\n color: \"#fff\",\n zIndex: 10000,\n boxShadow: \"0 2px 3px rgba(0, 0, 0, 0.2)\",\n }}\n >\n {content}\n </div>\n )}\n </MyPopup>\n );\n};\n\nexport default Tooltip;\n","import { useRef, useState, useLayoutEffect } from \"react\";\nimport ReceiptsHeading from \"../ReceiptsHeading\";\nimport { useEmailContext, type EmailOption } from \"../EmailContext\";\nimport Tooltip from \"../../core/Tooltip\";\n\nfunction GmailHeading({\n fetchEmailOptions,\n}: {\n fetchEmailOptions: (currentEmail: string) => Promise<EmailOption[]>;\n}) {\n const { subject, setSubject, isReply } = useEmailContext();\n const subjectRef = useRef<HTMLDivElement>(null);\n const [isOverflowing, setIsOverflowing] = useState(false);\n\n const displaySubject =\n isReply && subject && !subject.startsWith(\"Re: \")\n ? `Re: ${subject}`\n : subject;\n\n useLayoutEffect(() => {\n const checkOverflow = () => {\n if (isReply && subjectRef.current) {\n const element = subjectRef.current;\n const overflowing = element.scrollWidth > element.clientWidth;\n setIsOverflowing(overflowing);\n }\n };\n\n checkOverflow();\n window.addEventListener('resize', checkOverflow);\n return () => window.removeEventListener('resize', checkOverflow);\n }, [displaySubject, isReply]);\n\n return (\n <div className=\"gmail-header\">\n <div className=\"receipt-heading\">\n <ReceiptsHeading fetchEmailOptions={fetchEmailOptions} />\n </div>\n <div className=\"reply-heading\">\n {isReply ? (\n isOverflowing ? (\n <Tooltip content={displaySubject} position=\"bottom center\">\n <div ref={subjectRef} className=\"subject-display\">\n {displaySubject}\n </div>\n </Tooltip>\n ) : (\n <div ref={subjectRef} className=\"subject-display\">\n {displaySubject}\n </div>\n )\n ) : (\n <input\n type=\"text\"\n placeholder=\"Subject\"\n className=\"input-header\"\n value={displaySubject}\n onChange={(e) => setSubject(e.target.value)}\n />\n )}\n </div>\n </div>\n );\n}\n\nexport default GmailHeading;\n","import { useEffect, useState, type ReactNode } from \"react\";\nimport ComposeBox from \"../ComposeBox\";\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 customTool,\n editorChildren,\n isEditorVisible = true,\n showOnlyBody = false,\n aiContentComponent,\n aiContent,\n showAiPreview,\n onAiInsert,\n onAiDiscard,\n placeholder,\n minHeight = \"400px\",\n}: {\n initialData?: Partial<EmailData>;\n fetchEmailOptions: (currentEmail: string) => Promise<EmailOption[]>;\n handleChange: (emailData: EmailData) => void;\n leftChildren?: ReactNode;\n rightChildren?: ReactNode;\n customTool?: ReactNode;\n isReply?: boolean;\n editorChildren?: ReactNode;\n isEditorVisible?: boolean;\n showOnlyBody?: boolean;\n // AI Integration\n aiContentComponent?: ReactNode;\n aiContent?: string;\n showAiPreview?: boolean;\n onAiInsert?: (content: string) => void;\n onAiDiscard?: () => void;\n placeholder?: string;\n minHeight?: string;\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 }, [isReply]);\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 <div className=\"mail-inbox-internal\">\n {!showOnlyBody ? (\n <GmailHeading fetchEmailOptions={fetchEmailOptions} />\n ) : null}\n <ComposeBox\n initialHTML={initialData?.body}\n onChange={handleEditorChange}\n editorChildren={editorChildren}\n rightChildren={rightChildren}\n leftChildren={leftChildren}\n customTool={customTool}\n isEditorVisible={isEditorVisible}\n minHeight={minHeight}\n placeholder={placeholder}\n aiContentComponent={aiContentComponent}\n aiContent={aiContent}\n showAiPreview={showAiPreview}\n onAiInsert={onAiInsert}\n onAiDiscard={onAiDiscard}\n />\n </div>\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 customTool,\n isReply,\n showOnlyBody,\n googleDriveConfig,\n aiContentComponent,\n aiContent,\n showAiPreview,\n onAiInsert,\n onAiDiscard,\n placeholder,\n minHeight = \"400px\",\n}: {\n fetchEmailOptions: (currentEmail: string) => Promise<EmailOption[]>;\n handleChange: (emailData: EmailData) => void;\n initialData?: Partial<EmailData>;\n leftChildren?: ReactNode;\n rightChildren?: ReactNode;\n customTool?: ReactNode;\n isReply?: boolean;\n showOnlyBody?: boolean;\n googleDriveConfig?: {\n clientId: string;\n apiKey: string;\n };\n // AI Integration\n aiContentComponent?: ReactNode;\n aiContent?: string;\n showAiPreview?: boolean;\n onAiInsert?: (content: string) => void;\n onAiDiscard?: () => void;\n placeholder?: string;\n minHeight?: string;\n}) {\n return (\n <EmailProvider googleDriveConfig={googleDriveConfig}>\n <GmailWrapperContent\n fetchEmailOptions={fetchEmailOptions}\n handleChange={handleChange}\n initialData={initialData}\n isReply={isReply}\n leftChildren={leftChildren}\n rightChildren={rightChildren}\n customTool={customTool}\n showOnlyBody={showOnlyBody}\n aiContentComponent={aiContentComponent}\n aiContent={aiContent}\n showAiPreview={showAiPreview}\n onAiInsert={onAiInsert}\n onAiDiscard={onAiDiscard}\n placeholder={placeholder}\n minHeight={minHeight}\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 /** Function to fetch recipient suggestions based on input. */\n fetchEmailOptions: (currentEmail: string) => Promise<EmailOption[]>;\n /** Callback triggered when the email is \"sent\" or updated. */\n handleChange: (emailData: EmailData) => void;\n /** Initial values for the email fields (to, subject, body, etc.). */\n initialData?: Partial<EmailData>;\n /** Default theme for the inbox component ('light' or 'dark'). Defaults to 'dark'. */\n initialTheme?: Theme;\n /** Callback triggered when the theme is toggled. */\n onThemeChange?: (theme: Theme) => void;\n /** Component to render on the left side of the toolbar. */\n leftChildren?: ReactNode;\n /** Component to render on the right side of the toolbar. */\n rightChildren?: ReactNode;\n /** Custom tool to render inside the plugin-wrapper. */\n customTool?: ReactNode;\n /** Placeholder text for the editor. */\n placeholder?: string;\n /** Minimum height of the editor. Defaults to '400px'. */\n minHeight?: string;\n /** If true, only the editor body is rendered, hiding the to/cc/bcc/subject fields. */\n showOnlyBody?: boolean;\n /** If true, the inbox is in reply mode, prefixing the subject with \"Re: \". */\n isReply?: boolean;\n /** Optional: Configuration for Google Drive integration. */\n googleDriveConfig?: {\n /** The OAuth 2.0 Client ID for your Google Cloud project. */\n clientId: string;\n /** The API Key for your Google Cloud project. */\n apiKey: string;\n /** Optional: Scopes required for the Drive picker. */\n scopes?: string;\n /** Optional: Discovery doc URLs for Google APIs. */\n discoveryDocs?: string[];\n };\n // AI Integration Props\n /** Custom AI preview component */\n aiContentComponent?: ReactNode;\n /** The AI-generated content */\n aiContent?: string;\n /** Control visibility of AI preview */\n showAiPreview?: boolean;\n /** Callback when AI content is inserted */\n onAiInsert?: (content: string) => void;\n /** Callback when AI content is discarded */\n onAiDiscard?: () => void;\n}\n\nfunction GmailInbox({\n fetchEmailOptions,\n handleChange,\n initialData,\n initialTheme = \"dark\",\n onThemeChange,\n leftChildren,\n rightChildren,\n customTool,\n showOnlyBody = false,\n isReply = false,\n googleDriveConfig,\n aiContentComponent,\n aiContent,\n showAiPreview,\n onAiInsert,\n onAiDiscard,\n placeholder,\n minHeight,\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 customTool={customTool}\n showOnlyBody={showOnlyBody}\n isReply={isReply}\n googleDriveConfig={googleDriveConfig}\n aiContentComponent={aiContentComponent}\n aiContent={aiContent}\n showAiPreview={showAiPreview}\n onAiInsert={onAiInsert}\n onAiDiscard={onAiDiscard}\n placeholder={placeholder}\n minHeight={minHeight}\n />\n </ThemeProvider>\n );\n}\n\nexport default GmailInbox;\n","// Main component export\nimport GmailInboxComponent from './Components/GmailInbox';\nexport { GmailInboxComponent as GmailInbox };\nexport { default as ComposeBox } from './Components/ComposeBox';\nexport default GmailInboxComponent;\n\n// Type exports\nexport type { EmailData, EmailOption } from './Components/GmailInbox';\nexport { useTheme, type Theme } from './context/ThemeContext';\nexport type { ComposeBoxProps, AiInsertHandler, AiDiscardHandler } from './Components/ComposeBox/types';\n\n// Re-export types for convenience\nexport type { Alignment } from './Components/core/AlignmentSelect';\n"]}
1
+ {"version":3,"sources":["../../../node_modules/@lexical/extension/LexicalExtension.dev.mjs","../../../node_modules/@lexical/extension/LexicalExtension.prod.mjs","../../../node_modules/@lexical/extension/LexicalExtension.node.mjs","../../../node_modules/@lexical/clipboard/LexicalClipboard.dev.mjs","../../../node_modules/@lexical/clipboard/LexicalClipboard.prod.mjs","../../../node_modules/@lexical/clipboard/LexicalClipboard.node.mjs","../../../node_modules/@lexical/table/LexicalTable.dev.mjs","../../../node_modules/@lexical/table/LexicalTable.prod.mjs","../src/context/ThemeContext.tsx","../src/Components/GmailWrapper/EmailContext.tsx","../../../node_modules/@lexical/table/LexicalTable.node.mjs","../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/plugins/StyledTextNode.tsx","../src/utils/common.ts","../src/plugins/PasterPlugin/ToolbarBridge.tsx","../src/plugins/PasterPlugin/HtmlDecorator.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/hook/useGooglePicker.ts","../src/Components/Editor/Toolbar/EmojiPicker.tsx","../src/plugins/ImagePlugin/ImageNode.tsx","../src/plugins/ImagePlugin/ImagePlugin.tsx","../src/Components/Editor/Toolbar/index.tsx","../src/Themes/lexicalEditortheme.ts","../src/plugins/OnChangePlugin.tsx","../src/plugins/DirectionPlugin.tsx","../src/hook/usePreprocessDOM.ts","../src/plugins/InitialStatePlugin.tsx","../src/plugins/PasterPlugin/HtmlNode.tsx","../src/plugins/PasterPlugin/PastePlugin.tsx","../src/Components/ComposeBox/index.tsx","../src/Components/GmailWrapper/ReceiptsHeading/InputWIthDropDown.tsx","../src/Components/GmailWrapper/ReceiptsHeading/InputForEmail.tsx","../src/Components/GmailWrapper/ReceiptsHeading/index.tsx","../src/Components/core/Tooltip/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":["LexicalExtension_dev_exports","__export","$createHorizontalRuleNode","$isHorizontalRuleNode","AutoFocusExtension","ClearEditorExtension","EditorStateExtension","HorizontalRuleExtension","HorizontalRuleNode","INSERT_HORIZONTAL_RULE_COMMAND","InitialStateExtension","LexicalBuilder","NodeSelectionExtension","TabIndentationExtension","o","buildEditorFromExtensions","w","configExtension","declarePeerDependency","defineExtension","E","getExtensionDependencyFromEditor","getKnownTypesAndNodes","getPeerDependencyFromEditor","getPeerDependencyFromEditorOrThrow","namedSignals","registerClearEditor","registerTabIndentation","safeCast","shallowMergeConfig","d","h","watchedSignal","t","r","i","s","f","v","n","u","c","l","y","a","e","_","b","g","p","defaults","opts","initial","k","store","$defaultOnClear","root","$getRoot","selection","$getSelection","paragraph","$createParagraphNode","$isRangeSelection","editor","$onClear","CLEAR_EDITOR_COMMAND","payload","COMMAND_PRIORITY_EDITOR","config","types","nodes","klassOrReplacement","getNodeConfig","klass","getSnapshot","register","dispose","formatDevErrorMessage","message","deepThemeMergeInPlace","aObj","bObj","isExactlyUnmarkedExtensionRepState","state","ExtensionRepStateIds","isExactlyTemporaryExtensionRepState","isExactlyPermanentExtensionRepState","isConfiguredExtensionRepState","isInitializedExtensionRepState","isBuiltExtensionRepState","isAfterRegistrationState","applyTemporaryMark","applyPermanentMark","applyConfiguredState","registerState","applyInitializedState","initResult","applyBuiltState","output","applyRegisteredState","applyAfterRegistrationState","rollbackToBuiltState","$defaultInitializer","extensions","noop","defaultOnError","err","normalizeExtensionArgument","arg","extension","rep","extensionName","peer","dep","$convertHorizontalRuleElement","$create","node","$toggleNodeSelection","shiftKey","wasSelected","key","nodeSelection","$isNodeSelection","$createNodeSelection","$setSelection","$indentOverTab","$filter","$isBlockElementNode","anchor","focus","first","firstNode","firstBlock","$getNearestBlockElementAncestorOrThrow","firstBlockKey","selectionAtStart","$createRangeSelection","$normalizeSelection__EXPERIMENTAL","maxIndent","mergeRegister","KEY_TAB_COMMAND","event","command","OUTDENT_CONTENT_COMMAND","INDENT_CONTENT_COMMAND","INSERT_TAB_COMMAND","currentMaxIndent","indents","COMMAND_PRIORITY_CRITICAL","emptySet","ExtensionRep","HISTORY_MERGE_OPTIONS","builderSymbol","PACKAGE_VERSION","EMPTY_SET","init_LexicalExtension_dev","__esmMin","stores","rootElement","activeElement","editorStateSignal","builder","mergeConfig","cfg","editorConfig","initialState","initState","buildState","signal","cleanup","afterRegistrationState","rval","name","HISTORY_MERGE_TAG","$initialEditorState","updateOptions","setOptions","$isEditorState","parsedEditorState","RootNode","TextNode","LineBreakNode","TabNode","ParagraphNode","_LexicalBuilder","roots","_$initialEditorState","onError","createEditor","extensionRep","disposeOnce","fromExtensionName","toExtensionName","configs","outgoing","incoming","normalized","hasConflict","normDep","depName","sortedExtensionReps","visit","mark","outgoingConfigEdges","toRep","extensionReps","controller","cleanups","replacedNodes","htmlExport","htmlImport","theme","conflictExtension","hasImport","hasExport","editorStateStore","watchedNodeStore","selectedNodeKeys","prevSelectedNodeKeys","watchedNodeKeys","nextSelectedNodeKeys","didChange","listeners","$getNodeByKey","isSelected","watchNodeKey","watcher","hadListener","createCommand","_HorizontalRuleNode","DecoratorNode","serializedNode","element","addClassNamesToElement","nodeSelectionStore","isSelectedClassName","CLICK_COMMAND","isDOMNode","$getNodeFromDOMNode","COMMAND_PRIORITY_LOW","nodeSelections","prev","dom","effects","domNode","selectedSignal","removeClassNamesFromElement","disabled","LexicalExtension_prod_exports","Qt","Xt","ut","lt","vt","Yt","Ht","Jt","Kt","Bt","Zt","ee","F","$t","it","dt","Ft","gt","Gt","Vt","at","ht","te","X","W","mt","B","Z","V","J","Y","G","q","Q","tt","et","nt","H","ot","st","rt","ct","ft","pt","xt","yt","Ct","St","Dt","bt","_t","Et","Pt","zt","Ut","Lt","qt","C","L","A","U","P","K","D","I","j","T","wt","Nt","Ot","Rt","Mt","It","jt","At","kt","Tt","Wt","init_LexicalExtension_prod","_Bt","m","x","_Ht","N","$","S","O","R","M","z","mod","effect","init_LexicalExtension_node","LexicalClipboard_dev_exports","$generateJSONFromSelectedNodes","$generateNodesFromSerializedNodes","$getClipboardDataFromSelection","$getHtmlContent","$getLexicalContent","$insertDataTransferForPlainText","$insertDataTransferForRichText","$insertGeneratedNodes","copyToClipboard","setLexicalClipboardDataTransfer","$generateHtmlFromNodes","dataTransfer","text","lexicalString","error","htmlString","plainString","trustHTML","$generateNodesFromDOM","parts","currentSelection","part","$createTabNode","html","input","SELECTION_INSERT_CLIPBOARD_NODES_COMMAND","$updateSelectionOnInsert","nodeToInspect","anchorCaret","$caretFromPoint","$isTextPointCaret","range","$getCaretRange","$getChildCaret","caret","$isTextNode","$isElementNode","newFormat","newStyle","exportNodeToJSON","nodeClass","serializedChildren","$appendNodesToJSON","currentNode","targetArray","shouldInclude","shouldExclude","target","$sliceSelectedTextNodeContent","children","childNode","shouldIncludeChild","serializedChildNode","topLevelChildren","topLevelNode","serializedNodes","$parseSerializedNode","$addNodeStyle","data","clipboardEventTimeout","resolve","reject","$copyToClipboardEvent","editorWindow","windowDocument","domSelection","getDOMSelection","removeListener","COPY_COMMAND","secondEvent","objectKlassEquals","EVENT_LATENCY","anchorDOM","focusDOM","isSelectionWithinEditor","clipboardData","$getEditor","mimeType","$editorFn","clipboardDataFunctions","init_LexicalClipboard_dev","LexicalClipboard_prod_exports","init_LexicalClipboard_prod","init_LexicalClipboard_node","LexicalTable_dev_exports","$computeTableMap","$computeTableMapSkipCellCheck","$createTableCellNode","$createTableNode","$createTableNodeWithDimensions","$createTableRowNode","$createTableSelection","$createTableSelectionFrom","$deleteTableColumn","$deleteTableColumnAtSelection","$deleteTableColumn__EXPERIMENTAL","$deleteTableRowAtSelection","$deleteTableRow__EXPERIMENTAL","$findCellNode","$findTableNode","$getElementForTableNode","$getNodeTriplet","$getTableAndElementByKey","$getTableCellNodeFromLexicalNode","$getTableCellNodeRect","$getTableColumnIndexFromTableCellNode","$getTableNodeFromLexicalNodeOrThrow","$getTableRowIndexFromTableCellNode","$getTableRowNodeFromTableCellNodeOrThrow","$insertTableColumn","$insertTableColumnAtSelection","$insertTableColumn__EXPERIMENTAL","$insertTableRow","$insertTableRowAtSelection","$insertTableRow__EXPERIMENTAL","$isScrollableTablesActive","$isTableCellNode","$isTableNode","$isTableRowNode","$isTableSelection","$mergeCells","$removeTableRowAtIndex","$unmergeCell","INSERT_TABLE_COMMAND","TableCellHeaderStates","TableCellNode","TableExtension","TableNode","TableObserver","TableRowNode","applyTableHandlers","getDOMCellFromTarget","getTableElement","getTableObserverFromTableElement","registerTableCellUnmergeTransform","registerTablePlugin","registerTableSelectionObserver","setScrollableTablesActive","isValidVerticalAlign","verticalAlign","$convertTableCellNodeElement","domNode_","nodeName","width","PIXEL_VALUE_REG_EXP","tableCellNode","backgroundColor","style","textDecoration","hasBoldFontWeight","hasLinethroughTextDecoration","hasItalicFontStyle","hasUnderlineTextDecoration","childLexicalNodes","result","paragraphNode","removeSingleLineBreakNode","firstChild","$isLineBreakNode","child","$isInlineElementOrDecoratorNode","headerState","colSpan","$applyNodeReplacement","$convertTableRowElement","height","$descendantsMatching","rowCount","columnCount","includeHeaders","tableNode","iRow","tableRowNode","iColumn","$createTextNode","startingNode","$findMatchingParent","$getTableCellSiblingsFromTableCellNode","table","indexToDelete","tableRows","targetIndex","shouldInsertAfter","targetRowNode","tableRowCells","tableColumnCount","newTableRowNode","tableCellFromTargetRow","above","below","insertAfter","anchorCell","focusCell","grid","focusCellMap","anchorCellMap","anchorStartRow","focusStartRow","$insertTableRowAtNode","cellNode","gridMap","cellMap","cellStartRow","insertedRow","insertAfterEndRow","insertAfterEndRowMap","newRow","cell","startRow","currentCellHeaderState","getHeaderState","insertAfterEndRowNode","insertBeforeStartRow","insertBeforeStartRowMap","insertBeforeStartRowNode","tableCellsToBeInserted","currentTableRowNode","tableRowChildren","targetCell","left","right","newTableCell","anchorStartColumn","focusStartColumn","$insertTableColumnAtNode","shouldSetSelection","startColumn","insertAfterColumn","gridFirstChild","firstInsertedCell","$createTableCellNodeForInsertTableColumn","loopRow","rowLoop","currentRow","rowMap","$insertFirst","currentCell","currentStartColumn","currentStartRow","insertAfterCell","insertAfterCellRowStart","prevCellIndex","cell_","startRow_","$moveSelectionToCell","colWidths","newColWidths","columnIndex","newWidth","focusEndRow","nextRow","nextRowNode","row","column","cellStartColumn","intersectionStart","intersectionEnd","overflowRowsCount","currentCellMap","rowNode","previousRow","endColumn","selectedColumnCount","overflowLeft","inSelectedArea","focusRowMap","nextColumn","firstDescendant","parent","cellNodes","minRow","maxRow","minCol","maxCol","processedCells","mapCell","cellKey","cellStartCol","cellRowSpan","cellColSpan","totalRowSpan","totalColSpan","targetCellMap","seenCells","col","$cellContainsEmptyParagraph","$isParagraphNode","$unmergeCellNode","rowSpan","map","baseColStyle","colStyles","_v","colStyle","rowIdx","baseRowStyle","rowStyles","rowStyle","colIdx","currentRowNode","currentRowMap","cellA","cellB","tableMap","cellAValue","cellBValue","getMapRow","gridChildren","startMapRow","value","mapRow","source","$computeTableCellRectSpans","boundary","minColumn","maxColumn","topSpan","leftSpan","rightSpan","bottomSpan","topRow","bottomRow","$computeTableCellRectBoundary","cellAMap","cellBMap","hasChanges","cellEndCol","cellEndRow","intersectsHorizontally","intersectsVertically","newMinColumn","newMaxColumn","newMinRow","newMaxRow","gridNode","rows","cellMatrix","rowIndex","cells","cellIndex","$getCellNodes","tableSelection","anchorNode","anchorRow","anchorTable","focusNode","focusRow","focusTable","TableSelection","$createPoint","tableNodeKey","anchorCellKey","focusCellKey","prevSelection","nextSelection","$visitRecursively","$visit","stack","currentArray","tableElement","isHTMLTableElement","el","isHTMLElement","getEditorWindow","$findParentTableCellNodeInTable","lastTableCellNode","hasTabHandler","tableObserver","attachTableObserverToTableElement","detachTableObserverFromTableElement","createPointerHandlers","onPointerUp","onPointerMove","moveEvent","isPointerDownOnEvent","override","IS_FIREFOX","getDOMCellInTableFromTarget","SELECTION_CHANGE_COMMAND","onPointerDown","$getPreviousSelection","$isSelectionInTable","prevAnchorNode","prevAnchorCell","$getObserverCellFromCellNodeOrThrow","stopEvent","onTripleClick","pointerDownCallback","direction","ARROW_KEY_COMMANDS_WITH_DIRECTION","$handleArrowKey","COMMAND_PRIORITY_HIGH","KEY_ESCAPE_COMMAND","focusCellNode","deleteTextHandler","isAnchorInside","isFocusInside","nearestElementNode","topLevelCellElementNode","DELETE_LINE_COMMAND","DELETE_TEXT_COMMANDS","$deleteCellHandler","tablePoint","outerPoint","offset","type","DELETE_KEY_COMMANDS","CUT_COMMAND","intercepted","FORMAT_TEXT_COMMAND","FORMAT_ELEMENT_COMMAND","formatType","$isFullTableSelection","visited","cellChildren","CONTROLLED_TEXT_INSERTION_COMMAND","edgePosition","$getTableEdgeCursorPosition","$insertParagraphAtTableEdge","$selectAdjacentCell","FOCUS_COMMAND","selectionPayload","dispatchEditor","anchorAndFocus","isTableSelection","isSelectionInsideOfGrid","anchorCellNode","anchorRowNode","templateGrid","initialGridMap","templateGridMap","initialRowCount","initialColCount","startCol","affectedRowCount","affectedColCount","selectionBoundary","selectionRowCount","selectionColCount","didPerformMergeOperations","lastRowForUnmerge","lastColForUnmerge","unmergedKeys","interimGridMap","rowsToInsert","colsToInsert","templateRow","templateCol","templateCellMap","templateCell","cellsToMerge","lastRowForMerge","lastColForMerge","originalChildren","finalGridMap","nextFocus","firstRow","firstCell","isPartiallyWithinTable","isWithinTable","isBackward","newSelection","lastCell","$addHighlightStyleToTable","prevAnchorCellNode","$getNearestNodeFromDOMNode","isFocusOutside","$createRangeSelectionFromDom","$removeHighlightStyleToTable","INSERT_PARAGRAPH_COMMAND","LEXICAL_ELEMENT_KEY","getTable","domRows","nodeMame","elem","sibling","parentSibling","$updateDOMForSelection","selectedCellNodes","$forEachTableCell","lexicalNode","$addHighlightToDOM","$removeHighlightFromDOM","cb","siblingMethod","childMethod","parentRow","parentTable","getCorner","rect","cellValue","colName","rowName","getCornerOrThrow","corner","oppositeCorner","cellAtCornerOrThrow","rowNum","colNum","$extractRectCorners","anchorCellValue","newFocusCellValue","anchorCorner","newFocusCorner","newAnchorCorner","$adjustFocusInDirection","focusCellValue","spans","focusColumn","fCol","fRow","targetRowMap","finalAnchorCell","finalFocusCell","selectTableCellNode","tableCell","fromStart","editorThemeClasses","$getBlockParentIfFirstNode","prevNode","$handleHorizontalArrowKeyRangeSelection","alter","initialFocus","$isExtendableTextPointCaret","lastCaret","nextCaret","$extendCaretToRange","$isSiblingCaret","lastCaretParent","focusCaret","$findNextTableCell","$getSiblingCaret","anchorCellTable","anchorCellDOM","anchorDOMCell","anchorCellTableElement","focusDOMCell","innerFocusCaret","$normalizeCaret","$setPointFromCaret","outerFocusCaret","$getTableExitCaret","initialCaret","adjacent","$getAdjacentChildCaret","$isChildCaret","origin","isTypeaheadMenuInView","parentNode","siblingNode","focusParentNode","newOffset","newFocusNode","$isRootOrShadowRoot","selectedNode","lastDescendant","firstCellNode","lastCellNode","firstCellCoords","lastCellCoords","firstCellDOM","lastCellDOM","anchorCellDom","edgeSelectionRect","edgeChild","edgeChildDOM","edgeRect","cords","selectTableNodeInDirection","tableNodeFromSelection","cordsAnchor","anchorValue","focusValue","tableNodeParent","domAnchorNode","tableNodeParentDOM","isAtFirstCell","isAtLastCell","currentCords","$getNearestTableCellInTableFromDOMNode","startingDOM","editorState","isHTMLDivElement","isHTMLElement$1","updateColgroup","colCount","colGroup","cols","setRowStriping","rowStriping","setFrozenColumns","frozenColumnCount","setFrozenRows","frozenRowCount","alignTableElement","removeClasses","addClasses","format","classes","scrollableEditors","active","$convertTableElement","columns","$insertTableCommandListener","$insertNodeToNearestRoot","$tableCellTransform","$tableRowTransform","$unwrapAndFilterDescendants","$tableTransform","maxRowLength","curLength","rowNodes","rowLength","acc","newCell","$tableClickCommand","startNode","blockNode","rootNode","rowsCount","columnsCount","unmerged","lastRowCell","$insertFirst$1","tableSelections","initializeTableNode","nodeKey","unregisterMutationListener","nodeMutations","mutation","COLUMN_WIDTH","CAN_USE_DOM","documentMode","init_LexicalTable_dev","_TableCellNode","ElementNode","self","mask","newBackgroundColor","newVerticalAlign","headerStateToToggle","_TableRowNode","destination","currentState","possibleState","_TableSelection","tableKey","formatFlag","TEXT_TYPE_TO_FORMAT","anchorCellNodeRect","focusCellNodeRect","startX","stopX","startY","stopY","cachedNodes","focusCellGrid","focusCellParent","gridParent","nodeMap","lastRow","isCurrentlyReadOnlyMode","textContent","observer","records","gridNeedsRedraw","ignoreStart","cellX","cellY","focusTableCellNode","anchorTableCell","focusTableCell","anchorTableCellNode","anchorNodeKey","formatSelection","alignFormatWith","selectedNodes","$isRootNode","textNode","KEY_ARROW_DOWN_COMMAND","KEY_ARROW_UP_COMMAND","KEY_ARROW_LEFT_COMMAND","KEY_ARROW_RIGHT_COMMAND","DELETE_WORD_COMMAND","DELETE_CHARACTER_COMMAND","KEY_BACKSPACE_COMMAND","KEY_DELETE_COMMAND","isForward","_TableNode","_node","setDOMUnmanaged","wrapperElement","tableWrapper","superExport","cellValues","mapValue","knownColumns","cellDOM","cellSpan","tBody","index","newRowStriping","hasHorizontalScroll","LexicalTable_prod_exports","Fe","gn","Le","Me","dn","Be","Ue","De","Ie","Pe","Qe","Ze","Xe","je","Ve","an","Oe","mn","$e","Ye","Ae","ve","xe","vn","hn","Ee","bn","Nn","yn","un","Te","Re","Ne","Ke","ke","Je","Ge","qe","ne","He","rn","tn","en","on","nn","re","le","se","ie","he","de","ce","ue","ae","fe","oe","ln","sn","cn","fn","pn","Cn","_n","Sn","wn","me","pe","ze","We","init_LexicalTable_prod","_xe","_Ee","_St","_hn","ge","Ce","_e","ThemeContext","createContext","useTheme","context","useContext","ThemeProvider","initialTheme","onThemeChange","setTheme","useState","useEffect","toggleTheme","jsx","EmailContext","useEmailContext","EmailProvider","googleDriveConfig","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","MdOutlineEmojiEmotions","MdPhoto","MdLockClock","TbBrandGoogleDrive","RiBallPenFill","FaBan","helper_default","Icon","size","color","className","IconComponent","Icon_default","MyPopup","trigger","popUpDirection","popupRef","useRef","handleClose","renderContent","close","adjustPosition","popupContent","margin","overflow","currentLeft","handler","Popup","MyPopup_default","fontOptions","OPTIONS","GREYS","ACCENTS","PALETTE","core_default","FontSelect","onChange","displayLabel","jsxs","font","FontSizePicker","Swatch","selected","onClick","label","ColorPicker","update","which","AlignmentSelect","onSelect","Fragment","opt","StyledTextNode","_StyledTextNode","clone","convert","tag","extractStyles","styled","mergeStyles","styleStringToMap","patch","prop","isValidEmail","email","rest","mapToStyleString","existing","$patchStyledNodes","$patchStyleText","dispatchSignatureStyle","useIsSignatureActive","setActive","check","sel","inside","FORMAT_TO_EXEC","useIsSelectionInside","ref","isInside","setIsInside","HtmlDecorator","useLexicalComposerContext","isInsideRef","isSelectionInside","syncToNode","useCallback","updatedHTML","unregisterFormat","execCmd","handleStyleCommand","stop","LowPriority","rgbToHex","rgb","match","hex","useOnClickListener","blockType","setBlockType","selectedEventTypes","setSelectedEventTypes","isLink","setIsLink","isSignatureActive","updateToolbar","newState","elementKey","elementDOM","$isListNode","parentList","$getNearestNodeOfType","ListNode","getSelectedNode","$isLinkNode","textNodeDOM","parentElement","styleElement","computedStyle","fontFamily","firstFont","fontSize","fontSizeNum","hexColor","hexBgColor","textAlign","toggleStyle","styleKey","current","isActive","UNDO_COMMAND","REDO_COMMAND","formatNumberedList","formatBulletList","addIndent","removeIndent","applyFontColor","applyFontFamily","fontSizeKey","fontSizePx","applyFontSize","insertLink","selectedFontSize","colorObj","TOGGLE_LINK_COMMAND","updatedSelection","INSERT_UNORDERED_LIST_COMMAND","REMOVE_LIST_COMMAND","INSERT_ORDERED_LIST_COMMAND","$isAtNodeEnd","useOnClickListener_default","FloatingLinkEditor","editorRef","inputRef","mouseDownRef","linkUrl","setLinkUrl","isEditMode","setEditMode","lastSelection","setLastSelection","updateLinkEditor","nativeSelection","isLinkActive","newLinkUrl","editorElem","domRange","inner","positionEditorElement","editorWidth","editorHeight","viewportWidth","viewportHeight","top","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","msg","newFiles","mappedRejections","item","readableErrors","fileName","ext","removeFile","uuid","clearRejectedFiles","FileUploader","openFileDialog","FileUploader_default","FilePreview","onRemove","onView","sizeBytes","urlFromProp","url","useMemo","formatSizeShort","handleView","handleRemove","useGooglePicker","clientId","apiKey","customDiscoveryDocs","customScopes","discoveryDocs","scopes","gapiLoaded","setGapiLoaded","gisLoaded","setGisLoaded","tokenClient","setTokenClient","accessToken","setAccessToken","gapiScript","gisScript","client","createPicker","token","doc","response","EmojiPicker","onEmojiSelect","pickerRef","isClient","setIsClient","React","Picker","emoji","EmojiPicker_default","ImageComponent","src","altText","ImageNode","_ImageNode","clonedNode","$createImageNode","div","writable","Gc","imageNode","INSERT_IMAGE_COMMAND","ImagePlugin","getToolbarComponent","plugin","setState","setShowEmojiPicker","setEmojiPosition","openDrivePicker","reader","topPosition","getComponent","props","componentProps","option","ToolBar","rightChildren","leftChildren","customTool","toggle","setToggle","showEmojiPicker","emojiPosition","moreOpen","setMoreOpen","isMoreVisible","setIsMoreVisible","formattingOptions","collapsedFormattingPlugins","visibleFormattingPlugins","openPicker","updatedFiles","containerRef","entries","idx","createPortal","Toolbar_default","lexicalEditorTheme","lexicalEditortheme_default","OnChangePlugin","DirectionPlugin","dirtyElements","tags","preprocessDOM","removeEditorClasses","htmlEl","classList","formats","remainingClasses","styleText","cursor","appendWrapper","wrapper","span","fontWeight","numericFontWeight","hasBold","fontStyle","hasItalic","hasUnderline","hasStrike","rootWrapper","heading","InitialStatePlugin","initialHTML","isInitialized","rawDom","processedDom","$insertNodes","HtmlNode","_HtmlNode","_editor","isSignatureHTML","tables","hasIconImgs","PastePlugin","PASTE_COMMAND","plain","AiIntegrationPlugin","aiContent","onAiInsert","onAiDiscard","aiContentComponent","showAiPreview","handleInsert","handleDiscard","Children","isValidElement","cloneElement","ComposeBox","placeholder","minHeight","editorChildren","isEditorVisible","currentHTML","setCurrentHTML","handleInternalChange","isAiPreviewActive","LexicalComposer","ListItemNode","LinkNode","AutoLinkNode","RichTextPlugin","ContentEditable","LexicalErrorBoundary","HistoryPlugin","AutoFocusPlugin","ListPlugin","LinkPlugin","ComposeBox_default","InputWithDropDown","fetchOptions","currentEmail","setCurrentEmail","popupOpen","setPopupOpen","selectedIndex","setSelectedIndex","options","loading","setLoading","emailRefs","optionRefs","focusInput","addEmail","handleInputKeyDown","lastIdx","lastChip","removeEmailAt","next","prevIdx","prevChip","ev","val","InputWIthDropDown_default","InputForEmail","needCCAndBCC","handleChange","InputForEmail_default","ReceiptsHeading","fetchEmailOptions","setOpen","wrapperRef","handleFocusIn","handleFocusOut","ReceiptsHeading_default","Tooltip","content","position","Tooltip_default","GmailHeading","subjectRef","isOverflowing","setIsOverflowing","displaySubject","finalDisplaySubject","textArea","useLayoutEffect","checkOverflow","overflowing","GmailHeading_default","GmailWrapperContent","initialData","showOnlyBody","bodyHTML","setBodyHTML","emailData","setEmailData","handleEditorChange","GmailWrapperContent_default","GmailWrapper","GmailWrapper_default","GmailInbox","GmailInbox_default","index_default"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { defineExtension, safeCast, CLEAR_EDITOR_COMMAND, COMMAND_PRIORITY_EDITOR, $getRoot, $getSelection, $createParagraphNode, $isRangeSelection, shallowMergeConfig, RootNode, TextNode, LineBreakNode, TabNode, ParagraphNode, $isEditorState, HISTORY_MERGE_TAG, createEditor, $getNodeByKey, createCommand, $create, CLICK_COMMAND, isDOMNode, $getNodeFromDOMNode, COMMAND_PRIORITY_LOW, DecoratorNode, $isNodeSelection, $createNodeSelection, $setSelection, KEY_TAB_COMMAND, OUTDENT_CONTENT_COMMAND, INDENT_CONTENT_COMMAND, INSERT_TAB_COMMAND, COMMAND_PRIORITY_CRITICAL, $isBlockElementNode, $createRangeSelection, $normalizeSelection__EXPERIMENTAL } from 'lexical';\nexport { configExtension, declarePeerDependency, defineExtension, safeCast, shallowMergeConfig } from 'lexical';\nimport { mergeRegister, addClassNamesToElement, removeClassNamesFromElement, $getNearestBlockElementAncestorOrThrow, $filter } from '@lexical/utils';\n\nconst i=Symbol.for(\"preact-signals\");function t(){if(r>1){r--;return}let i,t=false;while(void 0!==s){let o=s;s=void 0;f++;while(void 0!==o){const n=o.o;o.o=void 0;o.f&=-3;if(!(8&o.f)&&v(o))try{o.c();}catch(o){if(!t){i=o;t=true;}}o=n;}}f=0;r--;if(t)throw i}function o(i){if(r>0)return i();r++;try{return i()}finally{t();}}let n,s;function h(i){const t=n;n=void 0;try{return i()}finally{n=t;}}let r=0,f=0,e=0;function u(i){if(void 0===n)return;let t=i.n;if(void 0===t||t.t!==n){t={i:0,S:i,p:n.s,n:void 0,t:n,e:void 0,x:void 0,r:t};if(void 0!==n.s)n.s.n=t;n.s=t;i.n=t;if(32&n.f)i.S(t);return t}else if(-1===t.i){t.i=0;if(void 0!==t.n){t.n.p=t.p;if(void 0!==t.p)t.p.n=t.n;t.p=n.s;t.n=void 0;n.s.n=t;n.s=t;}return t}}function c(i,t){this.v=i;this.i=0;this.n=void 0;this.t=void 0;this.W=null==t?void 0:t.watched;this.Z=null==t?void 0:t.unwatched;this.name=null==t?void 0:t.name;}c.prototype.brand=i;c.prototype.h=function(){return true};c.prototype.S=function(i){const t=this.t;if(t!==i&&void 0===i.e){i.x=t;this.t=i;if(void 0!==t)t.e=i;else h(()=>{var i;null==(i=this.W)||i.call(this);});}};c.prototype.U=function(i){if(void 0!==this.t){const t=i.e,o=i.x;if(void 0!==t){t.x=o;i.e=void 0;}if(void 0!==o){o.e=t;i.x=void 0;}if(i===this.t){this.t=o;if(void 0===o)h(()=>{var i;null==(i=this.Z)||i.call(this);});}}};c.prototype.subscribe=function(i){return E(()=>{const t=this.value,o=n;n=void 0;try{i(t);}finally{n=o;}},{name:\"sub\"})};c.prototype.valueOf=function(){return this.value};c.prototype.toString=function(){return this.value+\"\"};c.prototype.toJSON=function(){return this.value};c.prototype.peek=function(){const i=n;n=void 0;try{return this.value}finally{n=i;}};Object.defineProperty(c.prototype,\"value\",{get(){const i=u(this);if(void 0!==i)i.i=this.i;return this.v},set(i){if(i!==this.v){if(f>100)throw new Error(\"Cycle detected\");this.v=i;this.i++;e++;r++;try{for(let i=this.t;void 0!==i;i=i.x)i.t.N();}finally{t();}}}});function d(i,t){return new c(i,t)}function v(i){for(let t=i.s;void 0!==t;t=t.n)if(t.S.i!==t.i||!t.S.h()||t.S.i!==t.i)return true;return false}function l(i){for(let t=i.s;void 0!==t;t=t.n){const o=t.S.n;if(void 0!==o)t.r=o;t.S.n=t;t.i=-1;if(void 0===t.n){i.s=t;break}}}function y(i){let t,o=i.s;while(void 0!==o){const i=o.p;if(-1===o.i){o.S.U(o);if(void 0!==i)i.n=o.n;if(void 0!==o.n)o.n.p=i;}else t=o;o.S.n=o.r;if(void 0!==o.r)o.r=void 0;o=i;}i.s=t;}function a(i,t){c.call(this,void 0);this.x=i;this.s=void 0;this.g=e-1;this.f=4;this.W=null==t?void 0:t.watched;this.Z=null==t?void 0:t.unwatched;this.name=null==t?void 0:t.name;}a.prototype=new c;a.prototype.h=function(){this.f&=-3;if(1&this.f)return false;if(32==(36&this.f))return true;this.f&=-5;if(this.g===e)return true;this.g=e;this.f|=1;if(this.i>0&&!v(this)){this.f&=-2;return true}const i=n;try{l(this);n=this;const i=this.x();if(16&this.f||this.v!==i||0===this.i){this.v=i;this.f&=-17;this.i++;}}catch(i){this.v=i;this.f|=16;this.i++;}n=i;y(this);this.f&=-2;return true};a.prototype.S=function(i){if(void 0===this.t){this.f|=36;for(let i=this.s;void 0!==i;i=i.n)i.S.S(i);}c.prototype.S.call(this,i);};a.prototype.U=function(i){if(void 0!==this.t){c.prototype.U.call(this,i);if(void 0===this.t){this.f&=-33;for(let i=this.s;void 0!==i;i=i.n)i.S.U(i);}}};a.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(let i=this.t;void 0!==i;i=i.x)i.t.N();}};Object.defineProperty(a.prototype,\"value\",{get(){if(1&this.f)throw new Error(\"Cycle detected\");const i=u(this);this.h();if(void 0!==i)i.i=this.i;if(16&this.f)throw this.v;return this.v}});function w(i,t){return new a(i,t)}function _(i){const o=i.u;i.u=void 0;if(\"function\"==typeof o){r++;const s=n;n=void 0;try{o();}catch(t){i.f&=-2;i.f|=8;b(i);throw t}finally{n=s;t();}}}function b(i){for(let t=i.s;void 0!==t;t=t.n)t.S.U(t);i.x=void 0;i.s=void 0;_(i);}function g(i){if(n!==this)throw new Error(\"Out-of-order effect\");y(this);n=i;this.f&=-2;if(8&this.f)b(this);t();}function p(i,t){this.x=i;this.u=void 0;this.s=void 0;this.o=void 0;this.f=32;this.name=null==t?void 0:t.name;}p.prototype.c=function(){const i=this.S();try{if(8&this.f)return;if(void 0===this.x)return;const t=this.x();if(\"function\"==typeof t)this.u=t;}finally{i();}};p.prototype.S=function(){if(1&this.f)throw new Error(\"Cycle detected\");this.f|=1;this.f&=-9;_(this);l(this);r++;const i=n;n=this;return g.bind(this,i)};p.prototype.N=function(){if(!(2&this.f)){this.f|=2;this.o=s;s=this;}};p.prototype.d=function(){this.f|=8;if(!(1&this.f))b(this);};p.prototype.dispose=function(){this.d();};function E(i,t){const o=new p(i,t);try{o.c();}catch(i){o.d();throw i}const n=o.d.bind(o);n[Symbol.dispose]=n;return n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n/**\n * @experimental\n * Return an object with the same shape as `defaults` with a {@link Signal}\n * for each value. If specified, the second `opts` argument is a partial\n * of overrides to the defaults and will be used as the initial value.\n *\n * Typically used to make a reactive version of some subset of the\n * configuration of an extension, so it can be reconfigured at runtime.\n *\n * @param defaults The object with default values\n * @param opts Overrides to those default values\n * @returns An object with signals initialized with the default values\n */\nfunction namedSignals(defaults, opts = {}) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const initial = {};\n for (const k in defaults) {\n const v = opts[k];\n const store = d(v === undefined ? defaults[k] : v);\n initial[k] = store;\n }\n return initial;\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/**\n * An Extension to focus the LexicalEditor when the root element is set\n * (typically only when the editor is first created).\n */\nconst AutoFocusExtension = defineExtension({\n build: (editor, config, state) => {\n return namedSignals(config);\n },\n config: safeCast({\n defaultSelection: 'rootEnd',\n disabled: false\n }),\n name: '@lexical/extension/AutoFocus',\n register(editor, config, state) {\n const stores = state.getOutput();\n return E(() => stores.disabled.value ? undefined : editor.registerRootListener(rootElement => {\n editor.focus(() => {\n // If we try and move selection to the same point with setBaseAndExtent, it won't\n // trigger a re-focus on the element. So in the case this occurs, we'll need to correct it.\n // Normally this is fine, Selection API !== Focus API, but fore the intents of the naming\n // of this plugin, which should preserve focus too.\n const activeElement = document.activeElement;\n if (rootElement !== null && (activeElement === null || !rootElement.contains(activeElement))) {\n // Note: preventScroll won't work in Webkit.\n rootElement.focus({\n preventScroll: true\n });\n }\n }, {\n defaultSelection: stores.defaultSelection.peek()\n });\n }));\n }\n});\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nfunction $defaultOnClear() {\n const root = $getRoot();\n const selection = $getSelection();\n const paragraph = $createParagraphNode();\n root.clear();\n root.append(paragraph);\n if (selection !== null) {\n paragraph.select();\n }\n if ($isRangeSelection(selection)) {\n selection.format = 0;\n }\n}\nfunction registerClearEditor(editor, $onClear = $defaultOnClear) {\n return editor.registerCommand(CLEAR_EDITOR_COMMAND, payload => {\n editor.update($onClear);\n return true;\n }, COMMAND_PRIORITY_EDITOR);\n}\n\n/**\n * An extension to provide an implementation of {@link CLEAR_EDITOR_COMMAND}\n */\nconst ClearEditorExtension = defineExtension({\n build(editor, config, state) {\n return namedSignals(config);\n },\n config: safeCast({\n $onClear: $defaultOnClear\n }),\n name: '@lexical/extension/ClearEditor',\n register(editor, config, state) {\n const {\n $onClear\n } = state.getOutput();\n return E(() => registerClearEditor(editor, $onClear.value));\n }\n});\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/**\n * @experimental\n * Get the sets of nodes and types registered in the\n * {@link InitialEditorConfig}. This is to be used when an extension\n * needs to register optional behavior if some node or type is present.\n *\n * @param config The InitialEditorConfig (accessible from an extension's init)\n * @returns The known types and nodes as Sets\n */\nfunction getKnownTypesAndNodes(config) {\n const types = new Set();\n const nodes = new Set();\n for (const klassOrReplacement of getNodeConfig(config)) {\n const klass = typeof klassOrReplacement === 'function' ? klassOrReplacement : klassOrReplacement.replace;\n types.add(klass.getType());\n nodes.add(klass);\n }\n return {\n nodes,\n types\n };\n}\nfunction getNodeConfig(config) {\n return (typeof config.nodes === 'function' ? config.nodes() : config.nodes) || [];\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/**\n * @experimental\n * Create a Signal that will subscribe to a value from an external store when watched, similar to\n * React's [useSyncExternalStore](https://react.dev/reference/react/useSyncExternalStore).\n *\n * @param getSnapshot Used to get the initial value of the signal when created and when first watched.\n * @param register A callback that will subscribe to some external store and update the signal, must return a dispose function.\n * @returns The signal\n */\nfunction watchedSignal(getSnapshot, register) {\n let dispose;\n return d(getSnapshot(), {\n unwatched() {\n if (dispose) {\n dispose();\n dispose = undefined;\n }\n },\n watched() {\n this.value = getSnapshot();\n dispose = register(this);\n }\n });\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/**\n * An extension to provide the current EditorState as a signal\n */\nconst EditorStateExtension = defineExtension({\n build(editor) {\n return watchedSignal(() => editor.getEditorState(), editorStateSignal => editor.registerUpdateListener(payload => {\n editorStateSignal.value = payload.editorState;\n }));\n },\n name: '@lexical/extension/EditorState'\n});\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n// Do not require this module directly! Use normal `invariant` calls.\n\nfunction formatDevErrorMessage(message) {\n throw new Error(message);\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/**\n * Recursively merge the given theme configuration in-place.\n *\n * @returns If `a` and `b` are both objects (and `b` is not an Array) then\n * all keys in `b` are merged into `a` then `a` is returned.\n * Otherwise `b` is returned.\n *\n * @example\n * ```ts\n * const a = { a: \"a\", nested: { a: 1 } };\n * const b = { b: \"b\", nested: { b: 2 } };\n * const rval = deepThemeMergeInPlace(a, b);\n * expect(a).toBe(rval);\n * expect(a).toEqual({ a: \"a\", b: \"b\", nested: { a: 1, b: 2 } });\n * ```\n */\nfunction deepThemeMergeInPlace(a, b) {\n if (a && b && !Array.isArray(b) && typeof a === 'object' && typeof b === 'object') {\n const aObj = a;\n const bObj = b;\n for (const k in bObj) {\n aObj[k] = deepThemeMergeInPlace(aObj[k], bObj[k]);\n }\n return a;\n }\n return b;\n}\n\nconst ExtensionRepStateIds = {\n /* eslint-disable sort-keys-fix/sort-keys-fix */\n unmarked: 0,\n temporary: 1,\n permanent: 2,\n configured: 3,\n initialized: 4,\n built: 5,\n registered: 6,\n afterRegistration: 7\n /* eslint-enable sort-keys-fix/sort-keys-fix */\n};\nfunction isExactlyUnmarkedExtensionRepState(state) {\n return state.id === ExtensionRepStateIds.unmarked;\n}\nfunction isExactlyTemporaryExtensionRepState(state) {\n return state.id === ExtensionRepStateIds.temporary;\n}\nfunction isExactlyPermanentExtensionRepState(state) {\n return state.id === ExtensionRepStateIds.permanent;\n}\nfunction isConfiguredExtensionRepState(state) {\n return state.id >= ExtensionRepStateIds.configured;\n}\nfunction isInitializedExtensionRepState(state) {\n return state.id >= ExtensionRepStateIds.initialized;\n}\nfunction isBuiltExtensionRepState(state) {\n return state.id >= ExtensionRepStateIds.built;\n}\nfunction isAfterRegistrationState(state) {\n return state.id >= ExtensionRepStateIds.afterRegistration;\n}\nfunction applyTemporaryMark(state) {\n if (!isExactlyUnmarkedExtensionRepState(state)) {\n formatDevErrorMessage(`LexicalBuilder: Can not apply a temporary mark from state id ${String(state.id)} (expected ${String(ExtensionRepStateIds.unmarked)} unmarked)`);\n }\n return Object.assign(state, {\n id: ExtensionRepStateIds.temporary\n });\n}\nfunction applyPermanentMark(state) {\n if (!isExactlyTemporaryExtensionRepState(state)) {\n formatDevErrorMessage(`LexicalBuilder: Can not apply a permanent mark from state id ${String(state.id)} (expected ${String(ExtensionRepStateIds.temporary)} temporary)`);\n }\n return Object.assign(state, {\n id: ExtensionRepStateIds.permanent\n });\n}\nfunction applyConfiguredState(state, config, registerState) {\n return Object.assign(state, {\n config,\n id: ExtensionRepStateIds.configured,\n registerState\n });\n}\nfunction applyInitializedState(state, initResult, registerState) {\n return Object.assign(state, {\n id: ExtensionRepStateIds.initialized,\n initResult,\n registerState\n });\n}\nfunction applyBuiltState(state, output, registerState) {\n return Object.assign(state, {\n id: ExtensionRepStateIds.built,\n output,\n registerState\n });\n}\nfunction applyRegisteredState(state) {\n return Object.assign(state, {\n id: ExtensionRepStateIds.registered\n });\n}\nfunction applyAfterRegistrationState(state) {\n return Object.assign(state, {\n id: ExtensionRepStateIds.afterRegistration\n });\n}\nfunction rollbackToBuiltState(state) {\n return Object.assign(state, {\n id: ExtensionRepStateIds.built\n });\n}\nconst emptySet = new Set();\n\n/**\n * @internal\n */\nclass ExtensionRep {\n builder;\n configs;\n _dependency;\n _peerNameSet;\n extension;\n state;\n _signal;\n constructor(builder, extension) {\n this.builder = builder;\n this.extension = extension;\n this.configs = new Set();\n this.state = {\n id: ExtensionRepStateIds.unmarked\n };\n }\n mergeConfigs() {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- LexicalExtensionConfig<Extension> is any\n let config = this.extension.config || {};\n const mergeConfig = this.extension.mergeConfig ? this.extension.mergeConfig.bind(this.extension) : shallowMergeConfig;\n for (const cfg of this.configs) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- LexicalExtensionConfig<Extension> is any\n config = mergeConfig(config, cfg);\n }\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return -- any\n return config;\n }\n init(editorConfig) {\n const initialState = this.state;\n if (!isExactlyPermanentExtensionRepState(initialState)) {\n formatDevErrorMessage(`ExtensionRep: Can not configure from state id ${String(initialState.id)}`);\n }\n const initState = {\n getDependency: this.getInitDependency.bind(this),\n getDirectDependentNames: this.getDirectDependentNames.bind(this),\n getPeer: this.getInitPeer.bind(this),\n getPeerNameSet: this.getPeerNameSet.bind(this)\n };\n const buildState = {\n ...initState,\n getDependency: this.getDependency.bind(this),\n getInitResult: this.getInitResult.bind(this),\n getPeer: this.getPeer.bind(this)\n };\n const state = applyConfiguredState(initialState, this.mergeConfigs(), initState);\n this.state = state;\n let initResult;\n if (this.extension.init) {\n initResult = this.extension.init(editorConfig, state.config, initState);\n }\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion -- false positive\n this.state = applyInitializedState(state, initResult, buildState);\n }\n build(editor) {\n const state = this.state;\n if (!(state.id === ExtensionRepStateIds.initialized)) {\n formatDevErrorMessage(`ExtensionRep: register called in state id ${String(state.id)} (expected ${String(ExtensionRepStateIds.built)} initialized)`);\n }\n let output;\n if (this.extension.build) {\n output = this.extension.build(editor, state.config, state.registerState);\n }\n const registerState = {\n ...state.registerState,\n getOutput: () => output,\n getSignal: this.getSignal.bind(this)\n };\n this.state = applyBuiltState(state, output, registerState);\n }\n register(editor, signal) {\n this._signal = signal;\n const state = this.state;\n if (!(state.id === ExtensionRepStateIds.built)) {\n formatDevErrorMessage(`ExtensionRep: register called in state id ${String(state.id)} (expected ${String(ExtensionRepStateIds.built)} built)`);\n }\n const cleanup = this.extension.register && this.extension.register(editor, state.config, state.registerState);\n this.state = applyRegisteredState(state);\n return () => {\n const afterRegistrationState = this.state;\n if (!(afterRegistrationState.id === ExtensionRepStateIds.afterRegistration)) {\n formatDevErrorMessage(`ExtensionRep: rollbackToBuiltState called in state id ${String(state.id)} (expected ${String(ExtensionRepStateIds.afterRegistration)} afterRegistration)`);\n }\n this.state = rollbackToBuiltState(afterRegistrationState);\n if (cleanup) {\n cleanup();\n }\n };\n }\n afterRegistration(editor) {\n const state = this.state;\n if (!(state.id === ExtensionRepStateIds.registered)) {\n formatDevErrorMessage(`ExtensionRep: afterRegistration called in state id ${String(state.id)} (expected ${String(ExtensionRepStateIds.registered)} registered)`);\n }\n let rval;\n if (this.extension.afterRegistration) {\n rval = this.extension.afterRegistration(editor, state.config, state.registerState);\n }\n this.state = applyAfterRegistrationState(state);\n return rval;\n }\n getSignal() {\n if (!(this._signal !== undefined)) {\n formatDevErrorMessage(`ExtensionRep.getSignal() called before register`);\n }\n return this._signal;\n }\n getInitResult() {\n if (!(this.extension.init !== undefined)) {\n formatDevErrorMessage(`ExtensionRep: getInitResult() called for Extension ${this.extension.name} that does not define init`);\n }\n const state = this.state;\n if (!isInitializedExtensionRepState(state)) {\n formatDevErrorMessage(`ExtensionRep: getInitResult() called for ExtensionRep in state id ${String(state.id)} < ${String(ExtensionRepStateIds.initialized)} (initialized)`);\n } // eslint-disable-next-line @typescript-eslint/no-unsafe-return -- any\n return state.initResult;\n }\n getInitPeer(name) {\n const rep = this.builder.extensionNameMap.get(name);\n return rep ? rep.getExtensionInitDependency() : undefined;\n }\n getExtensionInitDependency() {\n const state = this.state;\n if (!isConfiguredExtensionRepState(state)) {\n formatDevErrorMessage(`ExtensionRep: getExtensionInitDependency called in state id ${String(state.id)} (expected >= ${String(ExtensionRepStateIds.configured)} configured)`);\n }\n return {\n config: state.config\n };\n }\n getPeer(name) {\n const rep = this.builder.extensionNameMap.get(name);\n return rep ? rep.getExtensionDependency() : undefined;\n }\n getInitDependency(dep) {\n const rep = this.builder.getExtensionRep(dep);\n if (!(rep !== undefined)) {\n formatDevErrorMessage(`LexicalExtensionBuilder: Extension ${this.extension.name} missing dependency extension ${dep.name} to be in registry`);\n }\n return rep.getExtensionInitDependency();\n }\n getDependency(dep) {\n const rep = this.builder.getExtensionRep(dep);\n if (!(rep !== undefined)) {\n formatDevErrorMessage(`LexicalExtensionBuilder: Extension ${this.extension.name} missing dependency extension ${dep.name} to be in registry`);\n }\n return rep.getExtensionDependency();\n }\n getState() {\n const state = this.state;\n if (!isAfterRegistrationState(state)) {\n formatDevErrorMessage(`ExtensionRep getState called in state id ${String(state.id)} (expected ${String(ExtensionRepStateIds.afterRegistration)} afterRegistration)`);\n }\n return state;\n }\n getDirectDependentNames() {\n return this.builder.incomingEdges.get(this.extension.name) || emptySet;\n }\n getPeerNameSet() {\n let s = this._peerNameSet;\n if (!s) {\n s = new Set((this.extension.peerDependencies || []).map(([name]) => name));\n this._peerNameSet = s;\n }\n return s;\n }\n getExtensionDependency() {\n if (!this._dependency) {\n const state = this.state;\n if (!isBuiltExtensionRepState(state)) {\n formatDevErrorMessage(`Extension ${this.extension.name} used as a dependency before build`);\n }\n this._dependency = {\n config: state.config,\n init: state.initResult,\n output: state.output\n };\n }\n return this._dependency;\n }\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst HISTORY_MERGE_OPTIONS = {\n tag: HISTORY_MERGE_TAG\n};\nfunction $defaultInitializer() {\n const root = $getRoot();\n if (root.isEmpty()) {\n root.append($createParagraphNode());\n }\n}\n/**\n * An extension to set the initial state of the editor from\n * a function or serialized JSON EditorState. This is\n * implicitly included with all editors built with\n * Lexical Extension. This happens in the `afterRegistration`\n * phase so your initial state may depend on registered commands,\n * but you should not call `editor.setRootElement` earlier than\n * this phase to avoid rendering an empty editor first.\n */\nconst InitialStateExtension = defineExtension({\n config: safeCast({\n setOptions: HISTORY_MERGE_OPTIONS,\n updateOptions: HISTORY_MERGE_OPTIONS\n }),\n init({\n $initialEditorState = $defaultInitializer\n }) {\n return {\n $initialEditorState,\n initialized: false\n };\n },\n // eslint-disable-next-line sort-keys-fix/sort-keys-fix -- typescript inference is order dependent here for some reason\n afterRegistration(editor, {\n updateOptions,\n setOptions\n }, state) {\n const initResult = state.getInitResult();\n if (!initResult.initialized) {\n initResult.initialized = true;\n const {\n $initialEditorState\n } = initResult;\n if ($isEditorState($initialEditorState)) {\n editor.setEditorState($initialEditorState, setOptions);\n } else if (typeof $initialEditorState === 'function') {\n editor.update(() => {\n $initialEditorState(editor);\n }, updateOptions);\n } else if ($initialEditorState && (typeof $initialEditorState === 'string' || typeof $initialEditorState === 'object')) {\n const parsedEditorState = editor.parseEditorState($initialEditorState);\n editor.setEditorState(parsedEditorState, setOptions);\n }\n }\n return () => {};\n },\n name: '@lexical/extension/InitialState',\n // These are automatically added by createEditor, we add them here so they are\n // visible during extensionRep.init so extensions can see all known types before the\n // editor is created.\n // (excluding ArtificialNode__DO_NOT_USE because it isn't really public API\n // and shouldn't change anything)\n nodes: [RootNode, TextNode, LineBreakNode, TabNode, ParagraphNode]\n});\n\n/** @internal Use a well-known symbol for dev tools purposes */\nconst builderSymbol = Symbol.for('@lexical/extension/LexicalBuilder');\n/**\n * Build a LexicalEditor by combining together one or more extensions, optionally\n * overriding some of their configuration.\n *\n * @param extensions - Extension arguments (extensions or extensions with config overrides)\n * @returns An editor handle\n *\n * @example\n * A single root extension with multiple dependencies\n *\n * ```ts\n * const editor = buildEditorFromExtensions(\n * defineExtension({\n * name: \"[root]\",\n * dependencies: [\n * RichTextExtension,\n * configExtension(EmojiExtension, { emojiBaseUrl: \"/assets/emoji\" }),\n * ],\n * register: (editor: LexicalEditor) => {\n * console.log(\"Editor Created\");\n * return () => console.log(\"Editor Disposed\");\n * },\n * }),\n * );\n * ```\n *\n * @example\n * A very similar minimal configuration without the register hook\n *\n * ```ts\n * const editor = buildEditorFromExtensions(\n * RichTextExtension,\n * configExtension(EmojiExtension, { emojiBaseUrl: \"/assets/emoji\" }),\n * );\n * ```\n */\nfunction buildEditorFromExtensions(...extensions) {\n return LexicalBuilder.fromExtensions(extensions).buildEditor();\n}\n\n/** @internal */\nfunction noop() {\n /*empty*/\n}\n\n/** Throw the given Error */\nfunction defaultOnError(err) {\n throw err;\n}\n/** @internal */\nfunction maybeWithBuilder(editor) {\n return editor;\n}\nfunction normalizeExtensionArgument(arg) {\n return Array.isArray(arg) ? arg : [arg];\n}\nconst PACKAGE_VERSION = \"0.38.2+dev.esm\";\n\n/** @internal */\nclass LexicalBuilder {\n roots;\n extensionNameMap;\n outgoingConfigEdges;\n incomingEdges;\n conflicts;\n _sortedExtensionReps;\n PACKAGE_VERSION;\n constructor(roots) {\n this.outgoingConfigEdges = new Map();\n this.incomingEdges = new Map();\n this.extensionNameMap = new Map();\n this.conflicts = new Map();\n this.PACKAGE_VERSION = PACKAGE_VERSION;\n this.roots = roots;\n for (const extension of roots) {\n this.addExtension(extension);\n }\n }\n static fromExtensions(extensions) {\n const roots = [normalizeExtensionArgument(InitialStateExtension)];\n for (const extension of extensions) {\n roots.push(normalizeExtensionArgument(extension));\n }\n return new LexicalBuilder(roots);\n }\n static maybeFromEditor(editor) {\n const builder = maybeWithBuilder(editor)[builderSymbol];\n if (builder) {\n // The dev tools variant of this will relax some of these invariants\n if (!(builder.PACKAGE_VERSION === PACKAGE_VERSION)) {\n formatDevErrorMessage(`LexicalBuilder.fromEditor: The given editor was created with LexicalBuilder ${builder.PACKAGE_VERSION} but this version is ${PACKAGE_VERSION}. A project should have exactly one copy of LexicalBuilder`);\n }\n if (!(builder instanceof LexicalBuilder)) {\n formatDevErrorMessage(`LexicalBuilder.fromEditor: There are multiple copies of the same version of LexicalBuilder in your project, and this editor was created with another one. Your project, or one of its dependencies, has its package.json and/or bundler configured incorrectly.`);\n }\n }\n return builder;\n }\n\n /** Look up the editor that was created by this LexicalBuilder or throw */\n static fromEditor(editor) {\n const builder = LexicalBuilder.maybeFromEditor(editor);\n if (!(builder !== undefined)) {\n formatDevErrorMessage(`LexicalBuilder.fromEditor: The given editor was not created with LexicalBuilder`);\n }\n return builder;\n }\n constructEditor() {\n const {\n $initialEditorState: _$initialEditorState,\n onError,\n ...editorConfig\n } = this.buildCreateEditorArgs();\n const editor = Object.assign(createEditor({\n ...editorConfig,\n ...(onError ? {\n onError: err => {\n onError(err, editor);\n }\n } : {})\n }), {\n [builderSymbol]: this\n });\n for (const extensionRep of this.sortedExtensionReps()) {\n extensionRep.build(editor);\n }\n return editor;\n }\n buildEditor() {\n let disposeOnce = noop;\n function dispose() {\n try {\n disposeOnce();\n } finally {\n disposeOnce = noop;\n }\n }\n const editor = Object.assign(this.constructEditor(), {\n dispose,\n [Symbol.dispose]: dispose\n });\n disposeOnce = mergeRegister(this.registerEditor(editor), () => editor.setRootElement(null));\n return editor;\n }\n hasExtensionByName(name) {\n return this.extensionNameMap.has(name);\n }\n getExtensionRep(extension) {\n const rep = this.extensionNameMap.get(extension.name);\n if (rep) {\n if (!(rep.extension === extension)) {\n formatDevErrorMessage(`LexicalBuilder: A registered extension with name ${extension.name} exists but does not match the given extension`);\n }\n return rep;\n }\n }\n addEdge(fromExtensionName, toExtensionName, configs) {\n const outgoing = this.outgoingConfigEdges.get(fromExtensionName);\n if (outgoing) {\n outgoing.set(toExtensionName, configs);\n } else {\n this.outgoingConfigEdges.set(fromExtensionName, new Map([[toExtensionName, configs]]));\n }\n const incoming = this.incomingEdges.get(toExtensionName);\n if (incoming) {\n incoming.add(fromExtensionName);\n } else {\n this.incomingEdges.set(toExtensionName, new Set([fromExtensionName]));\n }\n }\n addExtension(arg) {\n if (!(this._sortedExtensionReps === undefined)) {\n formatDevErrorMessage(`LexicalBuilder: addExtension called after finalization`);\n }\n const normalized = normalizeExtensionArgument(arg);\n const [extension] = normalized;\n if (!(typeof extension.name === 'string')) {\n formatDevErrorMessage(`LexicalBuilder: extension name must be string, not ${typeof extension.name}`);\n }\n let extensionRep = this.extensionNameMap.get(extension.name);\n if (!(extensionRep === undefined || extensionRep.extension === extension)) {\n formatDevErrorMessage(`LexicalBuilder: Multiple extensions registered with name ${extension.name}, names must be unique`);\n }\n if (!extensionRep) {\n extensionRep = new ExtensionRep(this, extension);\n this.extensionNameMap.set(extension.name, extensionRep);\n const hasConflict = this.conflicts.get(extension.name);\n if (typeof hasConflict === 'string') {\n {\n formatDevErrorMessage(`LexicalBuilder: extension ${extension.name} conflicts with ${hasConflict}`);\n }\n }\n for (const name of extension.conflictsWith || []) {\n if (!!this.extensionNameMap.has(name)) {\n formatDevErrorMessage(`LexicalBuilder: extension ${extension.name} conflicts with ${name}`);\n }\n this.conflicts.set(name, extension.name);\n }\n for (const dep of extension.dependencies || []) {\n const normDep = normalizeExtensionArgument(dep);\n this.addEdge(extension.name, normDep[0].name, normDep.slice(1));\n this.addExtension(normDep);\n }\n for (const [depName, config] of extension.peerDependencies || []) {\n this.addEdge(extension.name, depName, config ? [config] : []);\n }\n }\n }\n sortedExtensionReps() {\n if (this._sortedExtensionReps) {\n return this._sortedExtensionReps;\n }\n // depth-first search based topological DAG sort\n // https://en.wikipedia.org/wiki/Topological_sorting\n const sortedExtensionReps = [];\n const visit = (rep, fromExtensionName) => {\n let mark = rep.state;\n if (isExactlyPermanentExtensionRepState(mark)) {\n return;\n }\n const extensionName = rep.extension.name;\n if (!isExactlyUnmarkedExtensionRepState(mark)) {\n formatDevErrorMessage(`LexicalBuilder: Circular dependency detected for Extension ${extensionName} from ${fromExtensionName || '[unknown]'}`);\n }\n mark = applyTemporaryMark(mark);\n rep.state = mark;\n const outgoingConfigEdges = this.outgoingConfigEdges.get(extensionName);\n if (outgoingConfigEdges) {\n for (const toExtensionName of outgoingConfigEdges.keys()) {\n const toRep = this.extensionNameMap.get(toExtensionName);\n // may be undefined for an optional peer dependency\n if (toRep) {\n visit(toRep, extensionName);\n }\n }\n }\n mark = applyPermanentMark(mark);\n rep.state = mark;\n sortedExtensionReps.push(rep);\n };\n for (const rep of this.extensionNameMap.values()) {\n if (isExactlyUnmarkedExtensionRepState(rep.state)) {\n visit(rep);\n }\n }\n for (const rep of sortedExtensionReps) {\n for (const [toExtensionName, configs] of this.outgoingConfigEdges.get(rep.extension.name) || []) {\n if (configs.length > 0) {\n const toRep = this.extensionNameMap.get(toExtensionName);\n if (toRep) {\n for (const config of configs) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument -- any\n toRep.configs.add(config);\n }\n }\n }\n }\n }\n for (const [extension, ...configs] of this.roots) {\n if (configs.length > 0) {\n const toRep = this.extensionNameMap.get(extension.name);\n if (!(toRep !== undefined)) {\n formatDevErrorMessage(`LexicalBuilder: Expecting existing ExtensionRep for ${extension.name}`);\n }\n for (const config of configs) {\n toRep.configs.add(config);\n }\n }\n }\n this._sortedExtensionReps = sortedExtensionReps;\n return this._sortedExtensionReps;\n }\n registerEditor(editor) {\n const extensionReps = this.sortedExtensionReps();\n const controller = new AbortController();\n const cleanups = [() => controller.abort()];\n const signal = controller.signal;\n for (const extensionRep of extensionReps) {\n const cleanup = extensionRep.register(editor, signal);\n if (cleanup) {\n cleanups.push(cleanup);\n }\n }\n for (const extensionRep of extensionReps) {\n const cleanup = extensionRep.afterRegistration(editor);\n if (cleanup) {\n cleanups.push(cleanup);\n }\n }\n return mergeRegister(...cleanups);\n }\n buildCreateEditorArgs() {\n const config = {};\n const nodes = new Set();\n const replacedNodes = new Map();\n const htmlExport = new Map();\n const htmlImport = {};\n const theme = {};\n const extensionReps = this.sortedExtensionReps();\n for (const extensionRep of extensionReps) {\n const {\n extension\n } = extensionRep;\n if (extension.onError !== undefined) {\n config.onError = extension.onError;\n }\n if (extension.disableEvents !== undefined) {\n config.disableEvents = extension.disableEvents;\n }\n if (extension.parentEditor !== undefined) {\n config.parentEditor = extension.parentEditor;\n }\n if (extension.editable !== undefined) {\n config.editable = extension.editable;\n }\n if (extension.namespace !== undefined) {\n config.namespace = extension.namespace;\n }\n if (extension.$initialEditorState !== undefined) {\n config.$initialEditorState = extension.$initialEditorState;\n }\n if (extension.nodes) {\n for (const node of getNodeConfig(extension)) {\n if (typeof node !== 'function') {\n const conflictExtension = replacedNodes.get(node.replace);\n if (conflictExtension) {\n {\n formatDevErrorMessage(`LexicalBuilder: Extension ${extension.name} can not register replacement for node ${node.replace.name} because ${conflictExtension.extension.name} already did`);\n }\n }\n replacedNodes.set(node.replace, extensionRep);\n }\n nodes.add(node);\n }\n }\n if (extension.html) {\n if (extension.html.export) {\n for (const [k, v] of extension.html.export.entries()) {\n htmlExport.set(k, v);\n }\n }\n if (extension.html.import) {\n Object.assign(htmlImport, extension.html.import);\n }\n }\n if (extension.theme) {\n deepThemeMergeInPlace(theme, extension.theme);\n }\n }\n if (Object.keys(theme).length > 0) {\n config.theme = theme;\n }\n if (nodes.size) {\n config.nodes = [...nodes];\n }\n const hasImport = Object.keys(htmlImport).length > 0;\n const hasExport = htmlExport.size > 0;\n if (hasImport || hasExport) {\n config.html = {};\n if (hasImport) {\n config.html.import = htmlImport;\n }\n if (hasExport) {\n config.html.export = htmlExport;\n }\n }\n for (const extensionRep of extensionReps) {\n extensionRep.init(config);\n }\n if (!config.onError) {\n config.onError = defaultOnError;\n }\n return config;\n }\n}\n\n/**\n * @experimental\n * Get the finalized config and output of an Extension that was used to build the editor.\n *\n * This is useful in the implementation of a LexicalNode or in other\n * situations where you have an editor reference but it's not easy to\n * pass the config or {@link ExtensionRegisterState} around.\n *\n * It will throw if the Editor was not built using this Extension.\n *\n * @param editor - The editor that was built using extension\n * @param extension - The concrete reference to an Extension used to build this editor\n * @returns The config and output for that Extension\n */\nfunction getExtensionDependencyFromEditor(editor, extension) {\n const builder = LexicalBuilder.fromEditor(editor);\n const rep = builder.getExtensionRep(extension);\n if (!(rep !== undefined)) {\n formatDevErrorMessage(`getExtensionDependencyFromEditor: Extension ${extension.name} was not built when creating this editor`);\n }\n return rep.getExtensionDependency();\n}\n\n/**\n * @experimental\n * Get the finalized config and output of an Extension that was used to build the\n * editor by name.\n *\n * This can be used from the implementation of a LexicalNode or in other\n * situation where you have an editor reference but it's not easy to pass the\n * config around. Use this version if you do not have a concrete reference to\n * the Extension for some reason (e.g. it is an optional peer dependency, or you\n * are avoiding a circular import).\n *\n * Both the explicit Extension type and the name are required.\n *\n * @example\n * ```tsx\n * import type { HistoryExtension } from \"@lexical/history\";\n * getPeerDependencyFromEditor<typeof HistoryExtension>(editor, \"@lexical/history/History\");\n * ```\n\n * @param editor - The editor that may have been built using extension\n * @param extensionName - The name of the Extension\n * @returns The config and output of the Extension or undefined\n */\nfunction getPeerDependencyFromEditor(editor, extensionName) {\n const builder = LexicalBuilder.fromEditor(editor);\n const peer = builder.extensionNameMap.get(extensionName);\n return peer ? peer.getExtensionDependency() : undefined;\n}\n\n/**\n * Get the finalized config and output of an Extension that was used to build the\n * editor by name.\n *\n * This can be used from the implementation of a LexicalNode or in other\n * situation where you have an editor reference but it's not easy to pass the\n * config around. Use this version if you do not have a concrete reference to\n * the Extension for some reason (e.g. it is an optional peer dependency, or you\n * are avoiding a circular import).\n *\n * Both the explicit Extension type and the name are required.\n *\n * @example\n * ```tsx\n * import type { EmojiExtension } from \"./EmojiExtension\";\n * export class EmojiNode extends TextNode {\n * // other implementation details not included\n * createDOM(\n * config: EditorConfig,\n * editor?: LexicalEditor | undefined\n * ): HTMLElement {\n * const dom = super.createDOM(config, editor);\n * addClassNamesToElement(\n * dom,\n * getPeerDependencyFromEditorOrThrow<typeof EmojiExtension>(\n * editor || $getEditor(),\n * \"@lexical/playground/emoji\",\n * ).config.emojiClass,\n * );\n * return dom;\n * }\n * }\n * ```\n\n * @param editor - The editor that may have been built using extension\n * @param extensionName - The name of the Extension\n * @returns The config and output of the Extension\n */\nfunction getPeerDependencyFromEditorOrThrow(editor, extensionName) {\n const dep = getPeerDependencyFromEditor(editor, extensionName);\n if (!(dep !== undefined)) {\n formatDevErrorMessage(`getPeerDependencyFromEditorOrThrow: Editor was not built with Extension ${extensionName}`);\n }\n return dep;\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst EMPTY_SET = new Set();\n\n/**\n * An extension that provides a `watchNodeKey` output that\n * returns a signal for the selection state of a node.\n *\n * Typically used for tracking whether a DecoratorNode is\n * currently selected or not. A framework independent\n * alternative to {@link useLexicalNodeSelection}.\n */\nconst NodeSelectionExtension = defineExtension({\n build(editor, config, state) {\n const editorStateStore = state.getDependency(EditorStateExtension).output;\n const watchedNodeStore = d({\n watchedNodeKeys: new Map()\n });\n const selectedNodeKeys = watchedSignal(() => undefined, () => E(() => {\n const prevSelectedNodeKeys = selectedNodeKeys.peek();\n const {\n watchedNodeKeys\n } = watchedNodeStore.value;\n let nextSelectedNodeKeys;\n let didChange = false;\n editorStateStore.value.read(() => {\n const selection = $getSelection();\n if (selection) {\n for (const [key, listeners] of watchedNodeKeys.entries()) {\n if (listeners.size === 0) {\n // We intentionally mutate this without firing a signal, to\n // avoid re-triggering this effect. There are no subscribers\n // so nothing can observe whether key was in the set or not\n watchedNodeKeys.delete(key);\n continue;\n }\n const node = $getNodeByKey(key);\n const isSelected = node && node.isSelected() || false;\n didChange = didChange || isSelected !== (prevSelectedNodeKeys ? prevSelectedNodeKeys.has(key) : false);\n if (isSelected) {\n nextSelectedNodeKeys = nextSelectedNodeKeys || new Set();\n nextSelectedNodeKeys.add(key);\n }\n }\n }\n });\n if (!(!didChange && nextSelectedNodeKeys && prevSelectedNodeKeys && nextSelectedNodeKeys.size === prevSelectedNodeKeys.size)) {\n selectedNodeKeys.value = nextSelectedNodeKeys;\n }\n }));\n function watchNodeKey(key) {\n const watcher = w(() => (selectedNodeKeys.value || EMPTY_SET).has(key));\n const {\n watchedNodeKeys\n } = watchedNodeStore.peek();\n let listeners = watchedNodeKeys.get(key);\n const hadListener = listeners !== undefined;\n listeners = listeners || new Set();\n listeners.add(watcher);\n if (!hadListener) {\n watchedNodeKeys.set(key, listeners);\n watchedNodeStore.value = {\n watchedNodeKeys\n };\n }\n return watcher;\n }\n return {\n watchNodeKey\n };\n },\n dependencies: [EditorStateExtension],\n name: '@lexical/extension/NodeSelection'\n});\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst INSERT_HORIZONTAL_RULE_COMMAND = createCommand('INSERT_HORIZONTAL_RULE_COMMAND');\nclass HorizontalRuleNode extends DecoratorNode {\n static getType() {\n return 'horizontalrule';\n }\n static clone(node) {\n return new HorizontalRuleNode(node.__key);\n }\n static importJSON(serializedNode) {\n return $createHorizontalRuleNode().updateFromJSON(serializedNode);\n }\n static importDOM() {\n return {\n hr: () => ({\n conversion: $convertHorizontalRuleElement,\n priority: 0\n })\n };\n }\n exportDOM() {\n return {\n element: document.createElement('hr')\n };\n }\n createDOM(config) {\n const element = document.createElement('hr');\n addClassNamesToElement(element, config.theme.hr);\n return element;\n }\n getTextContent() {\n return '\\n';\n }\n isInline() {\n return false;\n }\n updateDOM() {\n return false;\n }\n}\nfunction $convertHorizontalRuleElement() {\n return {\n node: $createHorizontalRuleNode()\n };\n}\nfunction $createHorizontalRuleNode() {\n return $create(HorizontalRuleNode);\n}\nfunction $isHorizontalRuleNode(node) {\n return node instanceof HorizontalRuleNode;\n}\nfunction $toggleNodeSelection(node, shiftKey = false) {\n const selection = $getSelection();\n const wasSelected = node.isSelected();\n const key = node.getKey();\n let nodeSelection;\n if (shiftKey && $isNodeSelection(selection)) {\n nodeSelection = selection;\n } else {\n nodeSelection = $createNodeSelection();\n $setSelection(nodeSelection);\n }\n if (wasSelected) {\n nodeSelection.delete(key);\n } else {\n nodeSelection.add(key);\n }\n}\n\n/**\n * An extension for HorizontalRuleNode that provides an implementation that\n * works without any React dependency.\n */\nconst HorizontalRuleExtension = defineExtension({\n dependencies: [EditorStateExtension, NodeSelectionExtension],\n name: '@lexical/extension/HorizontalRule',\n nodes: [HorizontalRuleNode],\n register(editor, config, state) {\n const {\n watchNodeKey\n } = state.getDependency(NodeSelectionExtension).output;\n const nodeSelectionStore = d({\n nodeSelections: new Map()\n });\n const isSelectedClassName = editor._config.theme.hrSelected ?? 'selected';\n return mergeRegister(editor.registerCommand(CLICK_COMMAND, event => {\n if (isDOMNode(event.target)) {\n const node = $getNodeFromDOMNode(event.target);\n if ($isHorizontalRuleNode(node)) {\n $toggleNodeSelection(node, event.shiftKey);\n return true;\n }\n }\n return false;\n }, COMMAND_PRIORITY_LOW), editor.registerMutationListener(HorizontalRuleNode, (nodes, payload) => {\n o(() => {\n let didChange = false;\n const {\n nodeSelections\n } = nodeSelectionStore.peek();\n for (const [k, v] of nodes.entries()) {\n if (v === 'destroyed') {\n nodeSelections.delete(k);\n didChange = true;\n } else {\n const prev = nodeSelections.get(k);\n const dom = editor.getElementByKey(k);\n if (prev) {\n prev.domNode.value = dom;\n } else {\n didChange = true;\n nodeSelections.set(k, {\n domNode: d(dom),\n selectedSignal: watchNodeKey(k)\n });\n }\n }\n }\n if (didChange) {\n nodeSelectionStore.value = {\n nodeSelections\n };\n }\n });\n }), E(() => {\n const effects = [];\n for (const {\n domNode,\n selectedSignal\n } of nodeSelectionStore.value.nodeSelections.values()) {\n effects.push(E(() => {\n const dom = domNode.value;\n if (dom) {\n const isSelected = selectedSignal.value;\n if (isSelected) {\n addClassNamesToElement(dom, isSelectedClassName);\n } else {\n removeClassNamesFromElement(dom, isSelectedClassName);\n }\n }\n }));\n }\n return mergeRegister(...effects);\n }));\n }\n});\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nfunction $indentOverTab(selection) {\n // const handled = new Set();\n const nodes = selection.getNodes();\n const canIndentBlockNodes = $filter(nodes, node => {\n if ($isBlockElementNode(node) && node.canIndent()) {\n return node;\n }\n return null;\n });\n // 1. If selection spans across canIndent block nodes: indent\n if (canIndentBlockNodes.length > 0) {\n return true;\n }\n // 2. If first (anchor/focus) is at block start: indent\n const anchor = selection.anchor;\n const focus = selection.focus;\n const first = focus.isBefore(anchor) ? focus : anchor;\n const firstNode = first.getNode();\n const firstBlock = $getNearestBlockElementAncestorOrThrow(firstNode);\n if (firstBlock.canIndent()) {\n const firstBlockKey = firstBlock.getKey();\n let selectionAtStart = $createRangeSelection();\n selectionAtStart.anchor.set(firstBlockKey, 0, 'element');\n selectionAtStart.focus.set(firstBlockKey, 0, 'element');\n selectionAtStart = $normalizeSelection__EXPERIMENTAL(selectionAtStart);\n if (selectionAtStart.anchor.is(first)) {\n return true;\n }\n }\n // 3. Else: tab\n return false;\n}\nfunction registerTabIndentation(editor, maxIndent) {\n return mergeRegister(editor.registerCommand(KEY_TAB_COMMAND, event => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) {\n return false;\n }\n event.preventDefault();\n const command = $indentOverTab(selection) ? event.shiftKey ? OUTDENT_CONTENT_COMMAND : INDENT_CONTENT_COMMAND : INSERT_TAB_COMMAND;\n return editor.dispatchCommand(command, undefined);\n }, COMMAND_PRIORITY_EDITOR), editor.registerCommand(INDENT_CONTENT_COMMAND, () => {\n const currentMaxIndent = typeof maxIndent === 'number' ? maxIndent : maxIndent ? maxIndent.peek() : null;\n if (currentMaxIndent == null) {\n return false;\n }\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) {\n return false;\n }\n const indents = selection.getNodes().map(node => $getNearestBlockElementAncestorOrThrow(node).getIndent());\n return Math.max(...indents) + 1 >= currentMaxIndent;\n }, COMMAND_PRIORITY_CRITICAL));\n}\n/**\n * This extension adds the ability to indent content using the tab key. Generally, we don't\n * recommend using this plugin as it could negatively affect accessibility for keyboard\n * users, causing focus to become trapped within the editor.\n */\nconst TabIndentationExtension = defineExtension({\n build(editor, config, state) {\n return namedSignals(config);\n },\n config: safeCast({\n disabled: false,\n maxIndent: null\n }),\n name: '@lexical/extension/TabIndentation',\n register(editor, config, state) {\n const {\n disabled,\n maxIndent\n } = state.getOutput();\n return E(() => {\n if (!disabled.value) {\n return registerTabIndentation(editor, maxIndent);\n }\n });\n }\n});\n\nexport { $createHorizontalRuleNode, $isHorizontalRuleNode, AutoFocusExtension, ClearEditorExtension, EditorStateExtension, HorizontalRuleExtension, HorizontalRuleNode, INSERT_HORIZONTAL_RULE_COMMAND, InitialStateExtension, LexicalBuilder, NodeSelectionExtension, TabIndentationExtension, o as batch, buildEditorFromExtensions, w as computed, E as effect, getExtensionDependencyFromEditor, getKnownTypesAndNodes, getPeerDependencyFromEditor, getPeerDependencyFromEditorOrThrow, namedSignals, registerClearEditor, registerTabIndentation, d as signal, h as untracked, watchedSignal };\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{defineExtension as t,safeCast as e,CLEAR_EDITOR_COMMAND as n,COMMAND_PRIORITY_EDITOR as i,$getRoot as o,$getSelection as s,$createParagraphNode as r,$isRangeSelection as c,shallowMergeConfig as d,RootNode as a,TextNode as u,LineBreakNode as f,TabNode as h,ParagraphNode as l,$isEditorState as g,HISTORY_MERGE_TAG as p,createEditor as m,$getNodeByKey as v,createCommand as x,$create as y,CLICK_COMMAND as S,isDOMNode as E,$getNodeFromDOMNode as b,COMMAND_PRIORITY_LOW as w,DecoratorNode as N,$isNodeSelection as O,$createNodeSelection as R,$setSelection as M,KEY_TAB_COMMAND as C,OUTDENT_CONTENT_COMMAND as D,INDENT_CONTENT_COMMAND as _,INSERT_TAB_COMMAND as I,COMMAND_PRIORITY_CRITICAL as j,$isBlockElementNode as A,$createRangeSelection as P,$normalizeSelection__EXPERIMENTAL as K}from\"lexical\";export{configExtension,declarePeerDependency,defineExtension,safeCast,shallowMergeConfig}from\"lexical\";import{mergeRegister as k,addClassNamesToElement as $,removeClassNamesFromElement as z,$getNearestBlockElementAncestorOrThrow as U,$filter as L}from\"@lexical/utils\";const T=Symbol.for(\"preact-signals\");function B(){if(Z>1)return void Z--;let t,e=!1;for(;void 0!==V;){let n=V;for(V=void 0,J++;void 0!==n;){const i=n.o;if(n.o=void 0,n.f&=-3,!(8&n.f)&&Y(n))try{n.c()}catch(n){e||(t=n,e=!0)}n=i}}if(J=0,Z--,e)throw t}function F(t){if(Z>0)return t();Z++;try{return t()}finally{B()}}let G,V;function W(t){const e=G;G=void 0;try{return t()}finally{G=e}}let Z=0,J=0,H=0;function q(t){if(void 0===G)return;let e=t.n;return void 0===e||e.t!==G?(e={i:0,S:t,p:G.s,n:void 0,t:G,e:void 0,x:void 0,r:e},void 0!==G.s&&(G.s.n=e),G.s=e,t.n=e,32&G.f&&t.S(e),e):-1===e.i?(e.i=0,void 0!==e.n&&(e.n.p=e.p,void 0!==e.p&&(e.p.n=e.n),e.p=G.s,e.n=void 0,G.s.n=e,G.s=e),e):void 0}function Q(t,e){this.v=t,this.i=0,this.n=void 0,this.t=void 0,this.W=null==e?void 0:e.watched,this.Z=null==e?void 0:e.unwatched,this.name=null==e?void 0:e.name}function X(t,e){return new Q(t,e)}function Y(t){for(let e=t.s;void 0!==e;e=e.n)if(e.S.i!==e.i||!e.S.h()||e.S.i!==e.i)return!0;return!1}function tt(t){for(let e=t.s;void 0!==e;e=e.n){const n=e.S.n;if(void 0!==n&&(e.r=n),e.S.n=e,e.i=-1,void 0===e.n){t.s=e;break}}}function et(t){let e,n=t.s;for(;void 0!==n;){const t=n.p;-1===n.i?(n.S.U(n),void 0!==t&&(t.n=n.n),void 0!==n.n&&(n.n.p=t)):e=n,n.S.n=n.r,void 0!==n.r&&(n.r=void 0),n=t}t.s=e}function nt(t,e){Q.call(this,void 0),this.x=t,this.s=void 0,this.g=H-1,this.f=4,this.W=null==e?void 0:e.watched,this.Z=null==e?void 0:e.unwatched,this.name=null==e?void 0:e.name}function it(t,e){return new nt(t,e)}function ot(t){const e=t.u;if(t.u=void 0,\"function\"==typeof e){Z++;const n=G;G=void 0;try{e()}catch(e){throw t.f&=-2,t.f|=8,st(t),e}finally{G=n,B()}}}function st(t){for(let e=t.s;void 0!==e;e=e.n)e.S.U(e);t.x=void 0,t.s=void 0,ot(t)}function rt(t){if(G!==this)throw new Error(\"Out-of-order effect\");et(this),G=t,this.f&=-2,8&this.f&&st(this),B()}function ct(t,e){this.x=t,this.u=void 0,this.s=void 0,this.o=void 0,this.f=32,this.name=null==e?void 0:e.name}function dt(t,e){const n=new ct(t,e);try{n.c()}catch(t){throw n.d(),t}const i=n.d.bind(n);return i[Symbol.dispose]=i,i}function at(t,e={}){const n={};for(const i in t){const o=e[i],s=X(void 0===o?t[i]:o);n[i]=s}return n}Q.prototype.brand=T,Q.prototype.h=function(){return!0},Q.prototype.S=function(t){const e=this.t;e!==t&&void 0===t.e&&(t.x=e,this.t=t,void 0!==e?e.e=t:W(()=>{var t;null==(t=this.W)||t.call(this)}))},Q.prototype.U=function(t){if(void 0!==this.t){const e=t.e,n=t.x;void 0!==e&&(e.x=n,t.e=void 0),void 0!==n&&(n.e=e,t.x=void 0),t===this.t&&(this.t=n,void 0===n&&W(()=>{var t;null==(t=this.Z)||t.call(this)}))}},Q.prototype.subscribe=function(t){return dt(()=>{const e=this.value,n=G;G=void 0;try{t(e)}finally{G=n}},{name:\"sub\"})},Q.prototype.valueOf=function(){return this.value},Q.prototype.toString=function(){return this.value+\"\"},Q.prototype.toJSON=function(){return this.value},Q.prototype.peek=function(){const t=G;G=void 0;try{return this.value}finally{G=t}},Object.defineProperty(Q.prototype,\"value\",{get(){const t=q(this);return void 0!==t&&(t.i=this.i),this.v},set(t){if(t!==this.v){if(J>100)throw new Error(\"Cycle detected\");this.v=t,this.i++,H++,Z++;try{for(let t=this.t;void 0!==t;t=t.x)t.t.N()}finally{B()}}}}),nt.prototype=new Q,nt.prototype.h=function(){if(this.f&=-3,1&this.f)return!1;if(32==(36&this.f))return!0;if(this.f&=-5,this.g===H)return!0;if(this.g=H,this.f|=1,this.i>0&&!Y(this))return this.f&=-2,!0;const t=G;try{tt(this),G=this;const t=this.x();(16&this.f||this.v!==t||0===this.i)&&(this.v=t,this.f&=-17,this.i++)}catch(t){this.v=t,this.f|=16,this.i++}return G=t,et(this),this.f&=-2,!0},nt.prototype.S=function(t){if(void 0===this.t){this.f|=36;for(let t=this.s;void 0!==t;t=t.n)t.S.S(t)}Q.prototype.S.call(this,t)},nt.prototype.U=function(t){if(void 0!==this.t&&(Q.prototype.U.call(this,t),void 0===this.t)){this.f&=-33;for(let t=this.s;void 0!==t;t=t.n)t.S.U(t)}},nt.prototype.N=function(){if(!(2&this.f)){this.f|=6;for(let t=this.t;void 0!==t;t=t.x)t.t.N()}},Object.defineProperty(nt.prototype,\"value\",{get(){if(1&this.f)throw new Error(\"Cycle detected\");const t=q(this);if(this.h(),void 0!==t&&(t.i=this.i),16&this.f)throw this.v;return this.v}}),ct.prototype.c=function(){const t=this.S();try{if(8&this.f)return;if(void 0===this.x)return;const t=this.x();\"function\"==typeof t&&(this.u=t)}finally{t()}},ct.prototype.S=function(){if(1&this.f)throw new Error(\"Cycle detected\");this.f|=1,this.f&=-9,ot(this),tt(this),Z++;const t=G;return G=this,rt.bind(this,t)},ct.prototype.N=function(){2&this.f||(this.f|=2,this.o=V,V=this)},ct.prototype.d=function(){this.f|=8,1&this.f||st(this)},ct.prototype.dispose=function(){this.d()};const ut=t({build:(t,e,n)=>at(e),config:e({defaultSelection:\"rootEnd\",disabled:!1}),name:\"@lexical/extension/AutoFocus\",register(t,e,n){const i=n.getOutput();return dt(()=>i.disabled.value?void 0:t.registerRootListener(e=>{t.focus(()=>{const t=document.activeElement;null===e||null!==t&&e.contains(t)||e.focus({preventScroll:!0})},{defaultSelection:i.defaultSelection.peek()})}))}});function ft(){const t=o(),e=s(),n=r();t.clear(),t.append(n),null!==e&&n.select(),c(e)&&(e.format=0)}function ht(t,e=ft){return t.registerCommand(n,n=>(t.update(e),!0),i)}const lt=t({build:(t,e,n)=>at(e),config:e({$onClear:ft}),name:\"@lexical/extension/ClearEditor\",register(t,e,n){const{$onClear:i}=n.getOutput();return dt(()=>ht(t,i.value))}});function gt(t){const e=new Set,n=new Set;for(const i of pt(t)){const t=\"function\"==typeof i?i:i.replace;e.add(t.getType()),n.add(t)}return{nodes:n,types:e}}function pt(t){return(\"function\"==typeof t.nodes?t.nodes():t.nodes)||[]}function mt(t,e){let n;return X(t(),{unwatched(){n&&(n(),n=void 0)},watched(){this.value=t(),n=e(this)}})}const vt=t({build:t=>mt(()=>t.getEditorState(),e=>t.registerUpdateListener(t=>{e.value=t.editorState})),name:\"@lexical/extension/EditorState\"});function xt(t,...e){const n=new URL(\"https://lexical.dev/docs/error\"),i=new URLSearchParams;i.append(\"code\",t);for(const t of e)i.append(\"v\",t);throw n.search=i.toString(),Error(`Minified Lexical error #${t}; visit ${n.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}function yt(t,e){if(t&&e&&!Array.isArray(e)&&\"object\"==typeof t&&\"object\"==typeof e){const n=t,i=e;for(const t in i)n[t]=yt(n[t],i[t]);return t}return e}const St=0,Et=1,bt=2,wt=3,Nt=4,Ot=5,Rt=6,Mt=7;function Ct(t){return t.id===St}function Dt(t){return t.id===bt}function _t(t){return function(t){return t.id===Et}(t)||xt(305,String(t.id),String(Et)),Object.assign(t,{id:bt})}const It=new Set;class jt{builder;configs;_dependency;_peerNameSet;extension;state;_signal;constructor(t,e){this.builder=t,this.extension=e,this.configs=new Set,this.state={id:St}}mergeConfigs(){let t=this.extension.config||{};const e=this.extension.mergeConfig?this.extension.mergeConfig.bind(this.extension):d;for(const n of this.configs)t=e(t,n);return t}init(t){const e=this.state;Dt(e)||xt(306,String(e.id));const n={getDependency:this.getInitDependency.bind(this),getDirectDependentNames:this.getDirectDependentNames.bind(this),getPeer:this.getInitPeer.bind(this),getPeerNameSet:this.getPeerNameSet.bind(this)},i={...n,getDependency:this.getDependency.bind(this),getInitResult:this.getInitResult.bind(this),getPeer:this.getPeer.bind(this)},o=function(t,e,n){return Object.assign(t,{config:e,id:wt,registerState:n})}(e,this.mergeConfigs(),n);let s;this.state=o,this.extension.init&&(s=this.extension.init(t,o.config,n)),this.state=function(t,e,n){return Object.assign(t,{id:Nt,initResult:e,registerState:n})}(o,s,i)}build(t){const e=this.state;let n;e.id!==Nt&&xt(307,String(e.id),String(Ot)),this.extension.build&&(n=this.extension.build(t,e.config,e.registerState));const i={...e.registerState,getOutput:()=>n,getSignal:this.getSignal.bind(this)};this.state=function(t,e,n){return Object.assign(t,{id:Ot,output:e,registerState:n})}(e,n,i)}register(t,e){this._signal=e;const n=this.state;n.id!==Ot&&xt(308,String(n.id),String(Ot));const i=this.extension.register&&this.extension.register(t,n.config,n.registerState);return this.state=function(t){return Object.assign(t,{id:Rt})}(n),()=>{const t=this.state;t.id!==Mt&&xt(309,String(n.id),String(Mt)),this.state=function(t){return Object.assign(t,{id:Ot})}(t),i&&i()}}afterRegistration(t){const e=this.state;let n;return e.id!==Rt&&xt(310,String(e.id),String(Rt)),this.extension.afterRegistration&&(n=this.extension.afterRegistration(t,e.config,e.registerState)),this.state=function(t){return Object.assign(t,{id:Mt})}(e),n}getSignal(){return void 0===this._signal&&xt(311),this._signal}getInitResult(){void 0===this.extension.init&&xt(312,this.extension.name);const t=this.state;return function(t){return t.id>=Nt}(t)||xt(313,String(t.id),String(Nt)),t.initResult}getInitPeer(t){const e=this.builder.extensionNameMap.get(t);return e?e.getExtensionInitDependency():void 0}getExtensionInitDependency(){const t=this.state;return function(t){return t.id>=wt}(t)||xt(314,String(t.id),String(wt)),{config:t.config}}getPeer(t){const e=this.builder.extensionNameMap.get(t);return e?e.getExtensionDependency():void 0}getInitDependency(t){const e=this.builder.getExtensionRep(t);return void 0===e&&xt(315,this.extension.name,t.name),e.getExtensionInitDependency()}getDependency(t){const e=this.builder.getExtensionRep(t);return void 0===e&&xt(315,this.extension.name,t.name),e.getExtensionDependency()}getState(){const t=this.state;return function(t){return t.id>=Mt}(t)||xt(316,String(t.id),String(Mt)),t}getDirectDependentNames(){return this.builder.incomingEdges.get(this.extension.name)||It}getPeerNameSet(){let t=this._peerNameSet;return t||(t=new Set((this.extension.peerDependencies||[]).map(([t])=>t)),this._peerNameSet=t),t}getExtensionDependency(){if(!this._dependency){const t=this.state;(function(t){return t.id>=Ot})(t)||xt(317,this.extension.name),this._dependency={config:t.config,init:t.initResult,output:t.output}}return this._dependency}}const At={tag:p};function Pt(){const t=o();t.isEmpty()&&t.append(r())}const Kt=t({config:e({setOptions:At,updateOptions:At}),init:({$initialEditorState:t=Pt})=>({$initialEditorState:t,initialized:!1}),afterRegistration(t,{updateOptions:e,setOptions:n},i){const o=i.getInitResult();if(!o.initialized){o.initialized=!0;const{$initialEditorState:i}=o;if(g(i))t.setEditorState(i,n);else if(\"function\"==typeof i)t.update(()=>{i(t)},e);else if(i&&(\"string\"==typeof i||\"object\"==typeof i)){const e=t.parseEditorState(i);t.setEditorState(e,n)}}return()=>{}},name:\"@lexical/extension/InitialState\",nodes:[a,u,f,h,l]}),kt=Symbol.for(\"@lexical/extension/LexicalBuilder\");function $t(...t){return Bt.fromExtensions(t).buildEditor()}function zt(){}function Ut(t){throw t}function Lt(t){return Array.isArray(t)?t:[t]}const Tt=\"0.38.2+prod.esm\";class Bt{roots;extensionNameMap;outgoingConfigEdges;incomingEdges;conflicts;_sortedExtensionReps;PACKAGE_VERSION;constructor(t){this.outgoingConfigEdges=new Map,this.incomingEdges=new Map,this.extensionNameMap=new Map,this.conflicts=new Map,this.PACKAGE_VERSION=Tt,this.roots=t;for(const e of t)this.addExtension(e)}static fromExtensions(t){const e=[Lt(Kt)];for(const n of t)e.push(Lt(n));return new Bt(e)}static maybeFromEditor(t){const e=t[kt];return e&&(e.PACKAGE_VERSION!==Tt&&xt(292,e.PACKAGE_VERSION,Tt),e instanceof Bt||xt(293)),e}static fromEditor(t){const e=Bt.maybeFromEditor(t);return void 0===e&&xt(294),e}constructEditor(){const{$initialEditorState:t,onError:e,...n}=this.buildCreateEditorArgs(),i=Object.assign(m({...n,...e?{onError:t=>{e(t,i)}}:{}}),{[kt]:this});for(const t of this.sortedExtensionReps())t.build(i);return i}buildEditor(){let t=zt;function e(){try{t()}finally{t=zt}}const n=Object.assign(this.constructEditor(),{dispose:e,[Symbol.dispose]:e});return t=k(this.registerEditor(n),()=>n.setRootElement(null)),n}hasExtensionByName(t){return this.extensionNameMap.has(t)}getExtensionRep(t){const e=this.extensionNameMap.get(t.name);if(e)return e.extension!==t&&xt(295,t.name),e}addEdge(t,e,n){const i=this.outgoingConfigEdges.get(t);i?i.set(e,n):this.outgoingConfigEdges.set(t,new Map([[e,n]]));const o=this.incomingEdges.get(e);o?o.add(t):this.incomingEdges.set(e,new Set([t]))}addExtension(t){void 0!==this._sortedExtensionReps&&xt(296);const e=Lt(t),[n]=e;\"string\"!=typeof n.name&&xt(297,typeof n.name);let i=this.extensionNameMap.get(n.name);if(void 0!==i&&i.extension!==n&&xt(298,n.name),!i){i=new jt(this,n),this.extensionNameMap.set(n.name,i);const t=this.conflicts.get(n.name);\"string\"==typeof t&&xt(299,n.name,t);for(const t of n.conflictsWith||[])this.extensionNameMap.has(t)&&xt(299,n.name,t),this.conflicts.set(t,n.name);for(const t of n.dependencies||[]){const e=Lt(t);this.addEdge(n.name,e[0].name,e.slice(1)),this.addExtension(e)}for(const[t,e]of n.peerDependencies||[])this.addEdge(n.name,t,e?[e]:[])}}sortedExtensionReps(){if(this._sortedExtensionReps)return this._sortedExtensionReps;const t=[],e=(n,i)=>{let o=n.state;if(Dt(o))return;const s=n.extension.name;var r;Ct(o)||xt(300,s,i||\"[unknown]\"),Ct(r=o)||xt(304,String(r.id),String(St)),o=Object.assign(r,{id:Et}),n.state=o;const c=this.outgoingConfigEdges.get(s);if(c)for(const t of c.keys()){const n=this.extensionNameMap.get(t);n&&e(n,s)}o=_t(o),n.state=o,t.push(n)};for(const t of this.extensionNameMap.values())Ct(t.state)&&e(t);for(const e of t)for(const[t,n]of this.outgoingConfigEdges.get(e.extension.name)||[])if(n.length>0){const e=this.extensionNameMap.get(t);if(e)for(const t of n)e.configs.add(t)}for(const[t,...e]of this.roots)if(e.length>0){const n=this.extensionNameMap.get(t.name);void 0===n&&xt(301,t.name);for(const t of e)n.configs.add(t)}return this._sortedExtensionReps=t,this._sortedExtensionReps}registerEditor(t){const e=this.sortedExtensionReps(),n=new AbortController,i=[()=>n.abort()],o=n.signal;for(const n of e){const e=n.register(t,o);e&&i.push(e)}for(const n of e){const e=n.afterRegistration(t);e&&i.push(e)}return k(...i)}buildCreateEditorArgs(){const t={},e=new Set,n=new Map,i=new Map,o={},s={},r=this.sortedExtensionReps();for(const c of r){const{extension:r}=c;if(void 0!==r.onError&&(t.onError=r.onError),void 0!==r.disableEvents&&(t.disableEvents=r.disableEvents),void 0!==r.parentEditor&&(t.parentEditor=r.parentEditor),void 0!==r.editable&&(t.editable=r.editable),void 0!==r.namespace&&(t.namespace=r.namespace),void 0!==r.$initialEditorState&&(t.$initialEditorState=r.$initialEditorState),r.nodes)for(const t of pt(r)){if(\"function\"!=typeof t){const e=n.get(t.replace);e&&xt(302,r.name,t.replace.name,e.extension.name),n.set(t.replace,c)}e.add(t)}if(r.html){if(r.html.export)for(const[t,e]of r.html.export.entries())i.set(t,e);r.html.import&&Object.assign(o,r.html.import)}r.theme&&yt(s,r.theme)}Object.keys(s).length>0&&(t.theme=s),e.size&&(t.nodes=[...e]);const c=Object.keys(o).length>0,d=i.size>0;(c||d)&&(t.html={},c&&(t.html.import=o),d&&(t.html.export=i));for(const e of r)e.init(t);return t.onError||(t.onError=Ut),t}}function Ft(t,e){const n=Bt.fromEditor(t).getExtensionRep(e);return void 0===n&&xt(303,e.name),n.getExtensionDependency()}function Gt(t,e){const n=Bt.fromEditor(t).extensionNameMap.get(e);return n?n.getExtensionDependency():void 0}function Vt(t,e){const n=Gt(t,e);return void 0===n&&xt(291,e),n}const Wt=new Set,Zt=t({build(t,e,n){const i=n.getDependency(vt).output,o=X({watchedNodeKeys:new Map}),r=mt(()=>{},()=>dt(()=>{const t=r.peek(),{watchedNodeKeys:e}=o.value;let n,c=!1;i.value.read(()=>{if(s())for(const[i,o]of e.entries()){if(0===o.size){e.delete(i);continue}const s=v(i),r=s&&s.isSelected()||!1;c=c||r!==(!!t&&t.has(i)),r&&(n=n||new Set,n.add(i))}}),!c&&n&&t&&n.size===t.size||(r.value=n)}));return{watchNodeKey:function(t){const e=it(()=>(r.value||Wt).has(t)),{watchedNodeKeys:n}=o.peek();let i=n.get(t);const s=void 0!==i;return i=i||new Set,i.add(e),s||(n.set(t,i),o.value={watchedNodeKeys:n}),e}}},dependencies:[vt],name:\"@lexical/extension/NodeSelection\"}),Jt=x(\"INSERT_HORIZONTAL_RULE_COMMAND\");class Ht extends N{static getType(){return\"horizontalrule\"}static clone(t){return new Ht(t.__key)}static importJSON(t){return Qt().updateFromJSON(t)}static importDOM(){return{hr:()=>({conversion:qt,priority:0})}}exportDOM(){return{element:document.createElement(\"hr\")}}createDOM(t){const e=document.createElement(\"hr\");return $(e,t.theme.hr),e}getTextContent(){return\"\\n\"}isInline(){return!1}updateDOM(){return!1}}function qt(){return{node:Qt()}}function Qt(){return y(Ht)}function Xt(t){return t instanceof Ht}const Yt=t({dependencies:[vt,Zt],name:\"@lexical/extension/HorizontalRule\",nodes:[Ht],register(t,e,n){const{watchNodeKey:i}=n.getDependency(Zt).output,o=X({nodeSelections:new Map}),r=t._config.theme.hrSelected??\"selected\";return k(t.registerCommand(S,t=>{if(E(t.target)){const e=b(t.target);if(Xt(e))return function(t,e=!1){const n=s(),i=t.isSelected(),o=t.getKey();let r;e&&O(n)?r=n:(r=R(),M(r)),i?r.delete(o):r.add(o)}(e,t.shiftKey),!0}return!1},w),t.registerMutationListener(Ht,(e,n)=>{F(()=>{let n=!1;const{nodeSelections:s}=o.peek();for(const[o,r]of e.entries())if(\"destroyed\"===r)s.delete(o),n=!0;else{const e=s.get(o),r=t.getElementByKey(o);e?e.domNode.value=r:(n=!0,s.set(o,{domNode:X(r),selectedSignal:i(o)}))}n&&(o.value={nodeSelections:s})})}),dt(()=>{const t=[];for(const{domNode:e,selectedSignal:n}of o.value.nodeSelections.values())t.push(dt(()=>{const t=e.value;if(t){n.value?$(t,r):z(t,r)}}));return k(...t)}))}});function te(t,e){return k(t.registerCommand(C,e=>{const n=s();if(!c(n))return!1;e.preventDefault();const i=function(t){const e=t.getNodes();if(L(e,t=>A(t)&&t.canIndent()?t:null).length>0)return!0;const n=t.anchor,i=t.focus,o=i.isBefore(n)?i:n,s=o.getNode(),r=U(s);if(r.canIndent()){const t=r.getKey();let e=P();if(e.anchor.set(t,0,\"element\"),e.focus.set(t,0,\"element\"),e=K(e),e.anchor.is(o))return!0}return!1}(n)?e.shiftKey?D:_:I;return t.dispatchCommand(i,void 0)},i),t.registerCommand(_,()=>{const t=\"number\"==typeof e?e:e?e.peek():null;if(null==t)return!1;const n=s();if(!c(n))return!1;const i=n.getNodes().map(t=>U(t).getIndent());return Math.max(...i)+1>=t},j))}const ee=t({build:(t,e,n)=>at(e),config:e({disabled:!1,maxIndent:null}),name:\"@lexical/extension/TabIndentation\",register(t,e,n){const{disabled:i,maxIndent:o}=n.getOutput();return dt(()=>{if(!i.value)return te(t,o)})}});export{Qt as $createHorizontalRuleNode,Xt as $isHorizontalRuleNode,ut as AutoFocusExtension,lt as ClearEditorExtension,vt as EditorStateExtension,Yt as HorizontalRuleExtension,Ht as HorizontalRuleNode,Jt as INSERT_HORIZONTAL_RULE_COMMAND,Kt as InitialStateExtension,Bt as LexicalBuilder,Zt as NodeSelectionExtension,ee as TabIndentationExtension,F as batch,$t as buildEditorFromExtensions,it as computed,dt as effect,Ft as getExtensionDependencyFromEditor,gt as getKnownTypesAndNodes,Gt as getPeerDependencyFromEditor,Vt as getPeerDependencyFromEditorOrThrow,at as namedSignals,ht as registerClearEditor,te as registerTabIndentation,X as signal,W as untracked,mt as watchedSignal};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst mod = await (process.env.NODE_ENV !== 'production' ? import('./LexicalExtension.dev.mjs') : import('./LexicalExtension.prod.mjs'));\nexport const $createHorizontalRuleNode = mod.$createHorizontalRuleNode;\nexport const $isHorizontalRuleNode = mod.$isHorizontalRuleNode;\nexport const AutoFocusExtension = mod.AutoFocusExtension;\nexport const ClearEditorExtension = mod.ClearEditorExtension;\nexport const EditorStateExtension = mod.EditorStateExtension;\nexport const HorizontalRuleExtension = mod.HorizontalRuleExtension;\nexport const HorizontalRuleNode = mod.HorizontalRuleNode;\nexport const INSERT_HORIZONTAL_RULE_COMMAND = mod.INSERT_HORIZONTAL_RULE_COMMAND;\nexport const InitialStateExtension = mod.InitialStateExtension;\nexport const LexicalBuilder = mod.LexicalBuilder;\nexport const NodeSelectionExtension = mod.NodeSelectionExtension;\nexport const TabIndentationExtension = mod.TabIndentationExtension;\nexport const batch = mod.batch;\nexport const buildEditorFromExtensions = mod.buildEditorFromExtensions;\nexport const computed = mod.computed;\nexport const configExtension = mod.configExtension;\nexport const declarePeerDependency = mod.declarePeerDependency;\nexport const defineExtension = mod.defineExtension;\nexport const effect = mod.effect;\nexport const getExtensionDependencyFromEditor = mod.getExtensionDependencyFromEditor;\nexport const getKnownTypesAndNodes = mod.getKnownTypesAndNodes;\nexport const getPeerDependencyFromEditor = mod.getPeerDependencyFromEditor;\nexport const getPeerDependencyFromEditorOrThrow = mod.getPeerDependencyFromEditorOrThrow;\nexport const namedSignals = mod.namedSignals;\nexport const registerClearEditor = mod.registerClearEditor;\nexport const registerTabIndentation = mod.registerTabIndentation;\nexport const safeCast = mod.safeCast;\nexport const shallowMergeConfig = mod.shallowMergeConfig;\nexport const signal = mod.signal;\nexport const untracked = mod.untracked;\nexport const watchedSignal = mod.watchedSignal;","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { $generateHtmlFromNodes, $generateNodesFromDOM } from '@lexical/html';\nimport { $addNodeStyle, $sliceSelectedTextNodeContent } from '@lexical/selection';\nimport { objectKlassEquals } from '@lexical/utils';\nimport { $getSelection, $isRangeSelection, $createTabNode, SELECTION_INSERT_CLIPBOARD_NODES_COMMAND, $caretFromPoint, $isTextPointCaret, $getCaretRange, $getChildCaret, $getRoot, $isTextNode, $isElementNode, $parseSerializedNode, getDOMSelection, COPY_COMMAND, COMMAND_PRIORITY_CRITICAL, isSelectionWithinEditor, $getEditor } from 'lexical';\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n// Do not require this module directly! Use normal `invariant` calls.\n\nfunction formatDevErrorMessage(message) {\n throw new Error(message);\n}\n\n/**\n * Returns the *currently selected* Lexical content as an HTML string, relying on the\n * logic defined in the exportDOM methods on the LexicalNode classes. Note that\n * this will not return the HTML content of the entire editor (unless all the content is included\n * in the current selection).\n *\n * @param editor - LexicalEditor instance to get HTML content from\n * @param selection - The selection to use (default is $getSelection())\n * @returns a string of HTML content\n */\nfunction $getHtmlContent(editor, selection = $getSelection()) {\n if (selection == null) {\n {\n formatDevErrorMessage(`Expected valid LexicalSelection`);\n }\n }\n\n // If we haven't selected anything\n if ($isRangeSelection(selection) && selection.isCollapsed() || selection.getNodes().length === 0) {\n return '';\n }\n return $generateHtmlFromNodes(editor, selection);\n}\n\n/**\n * Returns the *currently selected* Lexical content as a JSON string, relying on the\n * logic defined in the exportJSON methods on the LexicalNode classes. Note that\n * this will not return the JSON content of the entire editor (unless all the content is included\n * in the current selection).\n *\n * @param editor - LexicalEditor instance to get the JSON content from\n * @param selection - The selection to use (default is $getSelection())\n * @returns\n */\nfunction $getLexicalContent(editor, selection = $getSelection()) {\n if (selection == null) {\n {\n formatDevErrorMessage(`Expected valid LexicalSelection`);\n }\n }\n\n // If we haven't selected anything\n if ($isRangeSelection(selection) && selection.isCollapsed() || selection.getNodes().length === 0) {\n return null;\n }\n return JSON.stringify($generateJSONFromSelectedNodes(editor, selection));\n}\n\n/**\n * Attempts to insert content of the mime-types text/plain or text/uri-list from\n * the provided DataTransfer object into the editor at the provided selection.\n * text/uri-list is only used if text/plain is not also provided.\n *\n * @param dataTransfer an object conforming to the [DataTransfer interface] (https://html.spec.whatwg.org/multipage/dnd.html#the-datatransfer-interface)\n * @param selection the selection to use as the insertion point for the content in the DataTransfer object\n */\nfunction $insertDataTransferForPlainText(dataTransfer, selection) {\n const text = dataTransfer.getData('text/plain') || dataTransfer.getData('text/uri-list');\n if (text != null) {\n selection.insertRawText(text);\n }\n}\n\n/**\n * Attempts to insert content of the mime-types application/x-lexical-editor, text/html,\n * text/plain, or text/uri-list (in descending order of priority) from the provided DataTransfer\n * object into the editor at the provided selection.\n *\n * @param dataTransfer an object conforming to the [DataTransfer interface] (https://html.spec.whatwg.org/multipage/dnd.html#the-datatransfer-interface)\n * @param selection the selection to use as the insertion point for the content in the DataTransfer object\n * @param editor the LexicalEditor the content is being inserted into.\n */\nfunction $insertDataTransferForRichText(dataTransfer, selection, editor) {\n const lexicalString = dataTransfer.getData('application/x-lexical-editor');\n if (lexicalString) {\n try {\n const payload = JSON.parse(lexicalString);\n if (payload.namespace === editor._config.namespace && Array.isArray(payload.nodes)) {\n const nodes = $generateNodesFromSerializedNodes(payload.nodes);\n return $insertGeneratedNodes(editor, nodes, selection);\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(error);\n }\n }\n const htmlString = dataTransfer.getData('text/html');\n const plainString = dataTransfer.getData('text/plain');\n\n // Skip HTML handling if it matches the plain text representation.\n // This avoids unnecessary processing for plain text strings created by\n // iOS Safari autocorrect, which incorrectly includes a `text/html` type.\n if (htmlString && plainString !== htmlString) {\n try {\n const parser = new DOMParser();\n const dom = parser.parseFromString(trustHTML(htmlString), 'text/html');\n const nodes = $generateNodesFromDOM(editor, dom);\n return $insertGeneratedNodes(editor, nodes, selection);\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(error);\n }\n }\n\n // Multi-line plain text in rich text mode pasted as separate paragraphs\n // instead of single paragraph with linebreaks.\n // Webkit-specific: Supports read 'text/uri-list' in clipboard.\n const text = plainString || dataTransfer.getData('text/uri-list');\n if (text != null) {\n if ($isRangeSelection(selection)) {\n const parts = text.split(/(\\r?\\n|\\t)/);\n if (parts[parts.length - 1] === '') {\n parts.pop();\n }\n for (let i = 0; i < parts.length; i++) {\n const currentSelection = $getSelection();\n if ($isRangeSelection(currentSelection)) {\n const part = parts[i];\n if (part === '\\n' || part === '\\r\\n') {\n currentSelection.insertParagraph();\n } else if (part === '\\t') {\n currentSelection.insertNodes([$createTabNode()]);\n } else {\n currentSelection.insertText(part);\n }\n }\n }\n } else {\n selection.insertRawText(text);\n }\n }\n}\nfunction trustHTML(html) {\n if (window.trustedTypes && window.trustedTypes.createPolicy) {\n const policy = window.trustedTypes.createPolicy('lexical', {\n createHTML: input => input\n });\n return policy.createHTML(html);\n }\n return html;\n}\n\n/**\n * Inserts Lexical nodes into the editor using different strategies depending on\n * some simple selection-based heuristics. If you're looking for a generic way to\n * to insert nodes into the editor at a specific selection point, you probably want\n * {@link lexical.$insertNodes}\n *\n * @param editor LexicalEditor instance to insert the nodes into.\n * @param nodes The nodes to insert.\n * @param selection The selection to insert the nodes into.\n */\nfunction $insertGeneratedNodes(editor, nodes, selection) {\n if (!editor.dispatchCommand(SELECTION_INSERT_CLIPBOARD_NODES_COMMAND, {\n nodes,\n selection\n })) {\n selection.insertNodes(nodes);\n $updateSelectionOnInsert(selection);\n }\n return;\n}\nfunction $updateSelectionOnInsert(selection) {\n if ($isRangeSelection(selection) && selection.isCollapsed()) {\n const anchor = selection.anchor;\n let nodeToInspect = null;\n const anchorCaret = $caretFromPoint(anchor, 'previous');\n if (anchorCaret) {\n if ($isTextPointCaret(anchorCaret)) {\n nodeToInspect = anchorCaret.origin;\n } else {\n const range = $getCaretRange(anchorCaret, $getChildCaret($getRoot(), 'next').getFlipped());\n for (const caret of range) {\n if ($isTextNode(caret.origin)) {\n nodeToInspect = caret.origin;\n break;\n } else if ($isElementNode(caret.origin) && !caret.origin.isInline()) {\n break;\n }\n }\n }\n }\n if (nodeToInspect && $isTextNode(nodeToInspect)) {\n const newFormat = nodeToInspect.getFormat();\n const newStyle = nodeToInspect.getStyle();\n if (selection.format !== newFormat || selection.style !== newStyle) {\n selection.format = newFormat;\n selection.style = newStyle;\n selection.dirty = true;\n }\n }\n }\n}\nfunction exportNodeToJSON(node) {\n const serializedNode = node.exportJSON();\n const nodeClass = node.constructor;\n if (serializedNode.type !== nodeClass.getType()) {\n {\n formatDevErrorMessage(`LexicalNode: Node ${nodeClass.name} does not implement .exportJSON().`);\n }\n }\n if ($isElementNode(node)) {\n const serializedChildren = serializedNode.children;\n if (!Array.isArray(serializedChildren)) {\n {\n formatDevErrorMessage(`LexicalNode: Node ${nodeClass.name} is an element but .exportJSON() does not have a children array.`);\n }\n }\n }\n return serializedNode;\n}\nfunction $appendNodesToJSON(editor, selection, currentNode, targetArray = []) {\n let shouldInclude = selection !== null ? currentNode.isSelected(selection) : true;\n const shouldExclude = $isElementNode(currentNode) && currentNode.excludeFromCopy('html');\n let target = currentNode;\n if (selection !== null && $isTextNode(target)) {\n target = $sliceSelectedTextNodeContent(selection, target, 'clone');\n }\n const children = $isElementNode(target) ? target.getChildren() : [];\n const serializedNode = exportNodeToJSON(target);\n if ($isTextNode(target) && target.getTextContentSize() === 0) {\n // If an uncollapsed selection ends or starts at the end of a line of specialized,\n // TextNodes, such as code tokens, we will get a 'blank' TextNode here, i.e., one\n // with text of length 0. We don't want this, it makes a confusing mess. Reset!\n shouldInclude = false;\n }\n for (let i = 0; i < children.length; i++) {\n const childNode = children[i];\n const shouldIncludeChild = $appendNodesToJSON(editor, selection, childNode, serializedNode.children);\n if (!shouldInclude && $isElementNode(currentNode) && shouldIncludeChild && currentNode.extractWithChild(childNode, selection, 'clone')) {\n shouldInclude = true;\n }\n }\n if (shouldInclude && !shouldExclude) {\n targetArray.push(serializedNode);\n } else if (Array.isArray(serializedNode.children)) {\n for (let i = 0; i < serializedNode.children.length; i++) {\n const serializedChildNode = serializedNode.children[i];\n targetArray.push(serializedChildNode);\n }\n }\n return shouldInclude;\n}\n\n// TODO why $ function with Editor instance?\n/**\n * Gets the Lexical JSON of the nodes inside the provided Selection.\n *\n * @param editor LexicalEditor to get the JSON content from.\n * @param selection Selection to get the JSON content from.\n * @returns an object with the editor namespace and a list of serializable nodes as JavaScript objects.\n */\nfunction $generateJSONFromSelectedNodes(editor, selection) {\n const nodes = [];\n const root = $getRoot();\n const topLevelChildren = root.getChildren();\n for (let i = 0; i < topLevelChildren.length; i++) {\n const topLevelNode = topLevelChildren[i];\n $appendNodesToJSON(editor, selection, topLevelNode, nodes);\n }\n return {\n namespace: editor._config.namespace,\n nodes\n };\n}\n\n/**\n * This method takes an array of objects conforming to the BaseSerializedNode interface and returns\n * an Array containing instances of the corresponding LexicalNode classes registered on the editor.\n * Normally, you'd get an Array of BaseSerialized nodes from {@link $generateJSONFromSelectedNodes}\n *\n * @param serializedNodes an Array of objects conforming to the BaseSerializedNode interface.\n * @returns an Array of Lexical Node objects.\n */\nfunction $generateNodesFromSerializedNodes(serializedNodes) {\n const nodes = [];\n for (let i = 0; i < serializedNodes.length; i++) {\n const serializedNode = serializedNodes[i];\n const node = $parseSerializedNode(serializedNode);\n if ($isTextNode(node)) {\n $addNodeStyle(node);\n }\n nodes.push(node);\n }\n return nodes;\n}\nconst EVENT_LATENCY = 50;\nlet clipboardEventTimeout = null;\n\n// TODO custom selection\n// TODO potentially have a node customizable version for plain text\n/**\n * Copies the content of the current selection to the clipboard in\n * text/plain, text/html, and application/x-lexical-editor (Lexical JSON)\n * formats.\n *\n * @param editor the LexicalEditor instance to copy content from\n * @param event the native browser ClipboardEvent to add the content to.\n * @returns\n */\nasync function copyToClipboard(editor, event, data) {\n if (clipboardEventTimeout !== null) {\n // Prevent weird race conditions that can happen when this function is run multiple times\n // synchronously. In the future, we can do better, we can cancel/override the previously running job.\n return false;\n }\n if (event !== null) {\n return new Promise((resolve, reject) => {\n editor.update(() => {\n resolve($copyToClipboardEvent(editor, event, data));\n });\n });\n }\n const rootElement = editor.getRootElement();\n const editorWindow = editor._window || window;\n const windowDocument = editorWindow.document;\n const domSelection = getDOMSelection(editorWindow);\n if (rootElement === null || domSelection === null) {\n return false;\n }\n const element = windowDocument.createElement('span');\n element.style.cssText = 'position: fixed; top: -1000px;';\n element.append(windowDocument.createTextNode('#'));\n rootElement.append(element);\n const range = new Range();\n range.setStart(element, 0);\n range.setEnd(element, 1);\n domSelection.removeAllRanges();\n domSelection.addRange(range);\n return new Promise((resolve, reject) => {\n const removeListener = editor.registerCommand(COPY_COMMAND, secondEvent => {\n if (objectKlassEquals(secondEvent, ClipboardEvent)) {\n removeListener();\n if (clipboardEventTimeout !== null) {\n editorWindow.clearTimeout(clipboardEventTimeout);\n clipboardEventTimeout = null;\n }\n resolve($copyToClipboardEvent(editor, secondEvent, data));\n }\n // Block the entire copy flow while we wait for the next ClipboardEvent\n return true;\n }, COMMAND_PRIORITY_CRITICAL);\n // If the above hack execCommand hack works, this timeout code should never fire. Otherwise,\n // the listener will be quickly freed so that the user can reuse it again\n clipboardEventTimeout = editorWindow.setTimeout(() => {\n removeListener();\n clipboardEventTimeout = null;\n resolve(false);\n }, EVENT_LATENCY);\n windowDocument.execCommand('copy');\n element.remove();\n });\n}\n\n// TODO shouldn't pass editor (pass namespace directly)\nfunction $copyToClipboardEvent(editor, event, data) {\n if (data === undefined) {\n const domSelection = getDOMSelection(editor._window);\n const selection = $getSelection();\n if (!selection || selection.isCollapsed()) {\n return false;\n }\n if (!domSelection) {\n return false;\n }\n const anchorDOM = domSelection.anchorNode;\n const focusDOM = domSelection.focusNode;\n if (anchorDOM !== null && focusDOM !== null && !isSelectionWithinEditor(editor, anchorDOM, focusDOM)) {\n return false;\n }\n data = $getClipboardDataFromSelection(selection);\n }\n event.preventDefault();\n const clipboardData = event.clipboardData;\n if (clipboardData === null) {\n return false;\n }\n setLexicalClipboardDataTransfer(clipboardData, data);\n return true;\n}\nconst clipboardDataFunctions = [['text/html', $getHtmlContent], ['application/x-lexical-editor', $getLexicalContent]];\n\n/**\n * Serialize the content of the current selection to strings in\n * text/plain, text/html, and application/x-lexical-editor (Lexical JSON)\n * formats (as available).\n *\n * @param selection the selection to serialize (defaults to $getSelection())\n * @returns LexicalClipboardData\n */\nfunction $getClipboardDataFromSelection(selection = $getSelection()) {\n const clipboardData = {\n 'text/plain': selection ? selection.getTextContent() : ''\n };\n if (selection) {\n const editor = $getEditor();\n for (const [mimeType, $editorFn] of clipboardDataFunctions) {\n const v = $editorFn(editor, selection);\n if (v !== null) {\n clipboardData[mimeType] = v;\n }\n }\n }\n return clipboardData;\n}\n\n/**\n * Call setData on the given clipboardData for each MIME type present\n * in the given data (from {@link $getClipboardDataFromSelection})\n *\n * @param clipboardData the event.clipboardData to populate from data\n * @param data The lexical data\n */\nfunction setLexicalClipboardDataTransfer(clipboardData, data) {\n for (const [k] of clipboardDataFunctions) {\n if (data[k] === undefined) {\n clipboardData.setData(k, '');\n }\n }\n for (const k in data) {\n const v = data[k];\n if (v !== undefined) {\n clipboardData.setData(k, v);\n }\n }\n}\n\nexport { $generateJSONFromSelectedNodes, $generateNodesFromSerializedNodes, $getClipboardDataFromSelection, $getHtmlContent, $getLexicalContent, $insertDataTransferForPlainText, $insertDataTransferForRichText, $insertGeneratedNodes, copyToClipboard, setLexicalClipboardDataTransfer };\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{$generateHtmlFromNodes as t,$generateNodesFromDOM as e}from\"@lexical/html\";import{$addNodeStyle as n,$sliceSelectedTextNodeContent as o}from\"@lexical/selection\";import{objectKlassEquals as r}from\"@lexical/utils\";import{$getSelection as i,$isRangeSelection as l,$createTabNode as s,SELECTION_INSERT_CLIPBOARD_NODES_COMMAND as c,$caretFromPoint as a,$isTextPointCaret as u,$getCaretRange as f,$getChildCaret as d,$getRoot as p,$isTextNode as g,$isElementNode as m,$parseSerializedNode as h,getDOMSelection as x,COPY_COMMAND as y,COMMAND_PRIORITY_CRITICAL as w,isSelectionWithinEditor as T,$getEditor as C}from\"lexical\";function v(t,...e){const n=new URL(\"https://lexical.dev/docs/error\"),o=new URLSearchParams;o.append(\"code\",t);for(const t of e)o.append(\"v\",t);throw n.search=o.toString(),Error(`Minified Lexical error #${t}; visit ${n.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}function D(e,n=i()){return null==n&&v(166),l(n)&&n.isCollapsed()||0===n.getNodes().length?\"\":t(e,n)}function S(t,e=i()){return null==e&&v(166),l(e)&&e.isCollapsed()||0===e.getNodes().length?null:JSON.stringify(E(t,e))}function N(t,e){const n=t.getData(\"text/plain\")||t.getData(\"text/uri-list\");null!=n&&e.insertRawText(n)}function R(t,n,o){const r=t.getData(\"application/x-lexical-editor\");if(r)try{const t=JSON.parse(r);if(t.namespace===o._config.namespace&&Array.isArray(t.nodes)){return A(o,L(t.nodes),n)}}catch(t){console.error(t)}const c=t.getData(\"text/html\"),a=t.getData(\"text/plain\");if(c&&a!==c)try{const t=(new DOMParser).parseFromString(function(t){if(window.trustedTypes&&window.trustedTypes.createPolicy){return window.trustedTypes.createPolicy(\"lexical\",{createHTML:t=>t}).createHTML(t)}return t}(c),\"text/html\");return A(o,e(o,t),n)}catch(t){console.error(t)}const u=a||t.getData(\"text/uri-list\");if(null!=u)if(l(n)){const t=u.split(/(\\r?\\n|\\t)/);\"\"===t[t.length-1]&&t.pop();for(let e=0;e<t.length;e++){const n=i();if(l(n)){const o=t[e];\"\\n\"===o||\"\\r\\n\"===o?n.insertParagraph():\"\\t\"===o?n.insertNodes([s()]):n.insertText(o)}}}else n.insertRawText(u)}function A(t,e,n){t.dispatchCommand(c,{nodes:e,selection:n})||(n.insertNodes(e),function(t){if(l(t)&&t.isCollapsed()){const e=t.anchor;let n=null;const o=a(e,\"previous\");if(o)if(u(o))n=o.origin;else{const t=f(o,d(p(),\"next\").getFlipped());for(const e of t){if(g(e.origin)){n=e.origin;break}if(m(e.origin)&&!e.origin.isInline())break}}if(n&&g(n)){const e=n.getFormat(),o=n.getStyle();t.format===e&&t.style===o||(t.format=e,t.style=o,t.dirty=!0)}}}(n))}function P(t,e,n,r=[]){let i=null===e||n.isSelected(e);const l=m(n)&&n.excludeFromCopy(\"html\");let s=n;null!==e&&g(s)&&(s=o(e,s,\"clone\"));const c=m(s)?s.getChildren():[],a=function(t){const e=t.exportJSON(),n=t.constructor;if(e.type!==n.getType()&&v(58,n.name),m(t)){const t=e.children;Array.isArray(t)||v(59,n.name)}return e}(s);g(s)&&0===s.getTextContentSize()&&(i=!1);for(let o=0;o<c.length;o++){const r=c[o],l=P(t,e,r,a.children);!i&&m(n)&&l&&n.extractWithChild(r,e,\"clone\")&&(i=!0)}if(i&&!l)r.push(a);else if(Array.isArray(a.children))for(let t=0;t<a.children.length;t++){const e=a.children[t];r.push(e)}return i}function E(t,e){const n=[],o=p().getChildren();for(let r=0;r<o.length;r++){P(t,e,o[r],n)}return{namespace:t._config.namespace,nodes:n}}function L(t){const e=[];for(let o=0;o<t.length;o++){const r=t[o],i=h(r);g(i)&&n(i),e.push(i)}return e}let b=null;async function F(t,e,n){if(null!==b)return!1;if(null!==e)return new Promise((o,r)=>{t.update(()=>{o(M(t,e,n))})});const o=t.getRootElement(),i=t._window||window,l=i.document,s=x(i);if(null===o||null===s)return!1;const c=l.createElement(\"span\");c.style.cssText=\"position: fixed; top: -1000px;\",c.append(l.createTextNode(\"#\")),o.append(c);const a=new Range;return a.setStart(c,0),a.setEnd(c,1),s.removeAllRanges(),s.addRange(a),new Promise((e,o)=>{const s=t.registerCommand(y,o=>(r(o,ClipboardEvent)&&(s(),null!==b&&(i.clearTimeout(b),b=null),e(M(t,o,n))),!0),w);b=i.setTimeout(()=>{s(),b=null,e(!1)},50),l.execCommand(\"copy\"),c.remove()})}function M(t,e,n){if(void 0===n){const e=x(t._window),o=i();if(!o||o.isCollapsed())return!1;if(!e)return!1;const r=e.anchorNode,l=e.focusNode;if(null!==r&&null!==l&&!T(t,r,l))return!1;n=_(o)}e.preventDefault();const o=e.clipboardData;return null!==o&&(J(o,n),!0)}const O=[[\"text/html\",D],[\"application/x-lexical-editor\",S]];function _(t=i()){const e={\"text/plain\":t?t.getTextContent():\"\"};if(t){const n=C();for(const[o,r]of O){const i=r(n,t);null!==i&&(e[o]=i)}}return e}function J(t,e){for(const[n]of O)void 0===e[n]&&t.setData(n,\"\");for(const n in e){const o=e[n];void 0!==o&&t.setData(n,o)}}export{E as $generateJSONFromSelectedNodes,L as $generateNodesFromSerializedNodes,_ as $getClipboardDataFromSelection,D as $getHtmlContent,S as $getLexicalContent,N as $insertDataTransferForPlainText,R as $insertDataTransferForRichText,A as $insertGeneratedNodes,F as copyToClipboard,J as setLexicalClipboardDataTransfer};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst mod = await (process.env.NODE_ENV !== 'production' ? import('./LexicalClipboard.dev.mjs') : import('./LexicalClipboard.prod.mjs'));\nexport const $generateJSONFromSelectedNodes = mod.$generateJSONFromSelectedNodes;\nexport const $generateNodesFromSerializedNodes = mod.$generateNodesFromSerializedNodes;\nexport const $getClipboardDataFromSelection = mod.$getClipboardDataFromSelection;\nexport const $getHtmlContent = mod.$getHtmlContent;\nexport const $getLexicalContent = mod.$getLexicalContent;\nexport const $insertDataTransferForPlainText = mod.$insertDataTransferForPlainText;\nexport const $insertDataTransferForRichText = mod.$insertDataTransferForRichText;\nexport const $insertGeneratedNodes = mod.$insertGeneratedNodes;\nexport const copyToClipboard = mod.copyToClipboard;\nexport const setLexicalClipboardDataTransfer = mod.setLexicalClipboardDataTransfer;","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { addClassNamesToElement, $descendantsMatching, $findMatchingParent, removeClassNamesFromElement, objectKlassEquals, isHTMLElement as isHTMLElement$1, $insertFirst as $insertFirst$1, mergeRegister, $insertNodeToNearestRoot, $unwrapAndFilterDescendants } from '@lexical/utils';\nimport { ElementNode, isHTMLElement, $isInlineElementOrDecoratorNode, $isTextNode, $isLineBreakNode, $createParagraphNode, $applyNodeReplacement, createCommand, $createTextNode, $getSelection, $isRangeSelection, $isParagraphNode, $createPoint, $getNodeByKey, $isElementNode, $normalizeSelection__EXPERIMENTAL, isCurrentlyReadOnlyMode, TEXT_TYPE_TO_FORMAT, $getEditor, $setSelection, SELECTION_CHANGE_COMMAND, getDOMSelection, $createRangeSelection, $isRootNode, INSERT_PARAGRAPH_COMMAND, KEY_ARROW_DOWN_COMMAND, KEY_ARROW_UP_COMMAND, KEY_ARROW_LEFT_COMMAND, KEY_ARROW_RIGHT_COMMAND, COMMAND_PRIORITY_HIGH, KEY_ESCAPE_COMMAND, DELETE_WORD_COMMAND, DELETE_LINE_COMMAND, DELETE_CHARACTER_COMMAND, KEY_BACKSPACE_COMMAND, KEY_DELETE_COMMAND, CUT_COMMAND, FORMAT_TEXT_COMMAND, FORMAT_ELEMENT_COMMAND, CONTROLLED_TEXT_INSERTION_COMMAND, KEY_TAB_COMMAND, FOCUS_COMMAND, SELECTION_INSERT_CLIPBOARD_NODES_COMMAND, $getPreviousSelection, $getNearestNodeFromDOMNode, $createRangeSelectionFromDom, isDOMNode, $isRootOrShadowRoot, $caretFromPoint, $isExtendableTextPointCaret, $extendCaretToRange, $isSiblingCaret, $getSiblingCaret, $setPointFromCaret, $normalizeCaret, $isChildCaret, $getChildCaret, $getAdjacentChildCaret, setDOMUnmanaged, COMMAND_PRIORITY_EDITOR, CLICK_COMMAND, defineExtension, safeCast } from 'lexical';\nimport { effect, namedSignals } from '@lexical/extension';\nimport { copyToClipboard, $getClipboardDataFromSelection } from '@lexical/clipboard';\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst PIXEL_VALUE_REG_EXP = /^(\\d+(?:\\.\\d+)?)px$/;\n\n// .PlaygroundEditorTheme__tableCell width value from\n// packages/lexical-playground/src/themes/PlaygroundEditorTheme.css\nconst COLUMN_WIDTH = 75;\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst TableCellHeaderStates = {\n BOTH: 3,\n COLUMN: 2,\n NO_STATUS: 0,\n ROW: 1\n};\n/** @noInheritDoc */\nclass TableCellNode extends ElementNode {\n /** @internal */\n __colSpan;\n /** @internal */\n __rowSpan;\n /** @internal */\n __headerState;\n /** @internal */\n __width;\n /** @internal */\n __backgroundColor;\n /** @internal */\n __verticalAlign;\n static getType() {\n return 'tablecell';\n }\n static clone(node) {\n return new TableCellNode(node.__headerState, node.__colSpan, node.__width, node.__key);\n }\n afterCloneFrom(node) {\n super.afterCloneFrom(node);\n this.__rowSpan = node.__rowSpan;\n this.__backgroundColor = node.__backgroundColor;\n this.__verticalAlign = node.__verticalAlign;\n }\n static importDOM() {\n return {\n td: node => ({\n conversion: $convertTableCellNodeElement,\n priority: 0\n }),\n th: node => ({\n conversion: $convertTableCellNodeElement,\n priority: 0\n })\n };\n }\n static importJSON(serializedNode) {\n return $createTableCellNode().updateFromJSON(serializedNode);\n }\n updateFromJSON(serializedNode) {\n return super.updateFromJSON(serializedNode).setHeaderStyles(serializedNode.headerState).setColSpan(serializedNode.colSpan || 1).setRowSpan(serializedNode.rowSpan || 1).setWidth(serializedNode.width || undefined).setBackgroundColor(serializedNode.backgroundColor || null).setVerticalAlign(serializedNode.verticalAlign || undefined);\n }\n constructor(headerState = TableCellHeaderStates.NO_STATUS, colSpan = 1, width, key) {\n super(key);\n this.__colSpan = colSpan;\n this.__rowSpan = 1;\n this.__headerState = headerState;\n this.__width = width;\n this.__backgroundColor = null;\n this.__verticalAlign = undefined;\n }\n createDOM(config) {\n const element = document.createElement(this.getTag());\n if (this.__width) {\n element.style.width = `${this.__width}px`;\n }\n if (this.__colSpan > 1) {\n element.colSpan = this.__colSpan;\n }\n if (this.__rowSpan > 1) {\n element.rowSpan = this.__rowSpan;\n }\n if (this.__backgroundColor !== null) {\n element.style.backgroundColor = this.__backgroundColor;\n }\n if (isValidVerticalAlign(this.__verticalAlign)) {\n element.style.verticalAlign = this.__verticalAlign;\n }\n addClassNamesToElement(element, config.theme.tableCell, this.hasHeader() && config.theme.tableCellHeader);\n return element;\n }\n exportDOM(editor) {\n const output = super.exportDOM(editor);\n if (isHTMLElement(output.element)) {\n const element = output.element;\n element.setAttribute('data-temporary-table-cell-lexical-key', this.getKey());\n element.style.border = '1px solid black';\n if (this.__colSpan > 1) {\n element.colSpan = this.__colSpan;\n }\n if (this.__rowSpan > 1) {\n element.rowSpan = this.__rowSpan;\n }\n element.style.width = `${this.getWidth() || COLUMN_WIDTH}px`;\n element.style.verticalAlign = this.getVerticalAlign() || 'top';\n element.style.textAlign = 'start';\n if (this.__backgroundColor === null && this.hasHeader()) {\n element.style.backgroundColor = '#f2f3f5';\n }\n }\n return output;\n }\n exportJSON() {\n return {\n ...super.exportJSON(),\n ...(isValidVerticalAlign(this.__verticalAlign) && {\n verticalAlign: this.__verticalAlign\n }),\n backgroundColor: this.getBackgroundColor(),\n colSpan: this.__colSpan,\n headerState: this.__headerState,\n rowSpan: this.__rowSpan,\n width: this.getWidth()\n };\n }\n getColSpan() {\n return this.getLatest().__colSpan;\n }\n setColSpan(colSpan) {\n const self = this.getWritable();\n self.__colSpan = colSpan;\n return self;\n }\n getRowSpan() {\n return this.getLatest().__rowSpan;\n }\n setRowSpan(rowSpan) {\n const self = this.getWritable();\n self.__rowSpan = rowSpan;\n return self;\n }\n getTag() {\n return this.hasHeader() ? 'th' : 'td';\n }\n setHeaderStyles(headerState, mask = TableCellHeaderStates.BOTH) {\n const self = this.getWritable();\n self.__headerState = headerState & mask | self.__headerState & ~mask;\n return self;\n }\n getHeaderStyles() {\n return this.getLatest().__headerState;\n }\n setWidth(width) {\n const self = this.getWritable();\n self.__width = width;\n return self;\n }\n getWidth() {\n return this.getLatest().__width;\n }\n getBackgroundColor() {\n return this.getLatest().__backgroundColor;\n }\n setBackgroundColor(newBackgroundColor) {\n const self = this.getWritable();\n self.__backgroundColor = newBackgroundColor;\n return self;\n }\n getVerticalAlign() {\n return this.getLatest().__verticalAlign;\n }\n setVerticalAlign(newVerticalAlign) {\n const self = this.getWritable();\n self.__verticalAlign = newVerticalAlign || undefined;\n return self;\n }\n toggleHeaderStyle(headerStateToToggle) {\n const self = this.getWritable();\n if ((self.__headerState & headerStateToToggle) === headerStateToToggle) {\n self.__headerState -= headerStateToToggle;\n } else {\n self.__headerState += headerStateToToggle;\n }\n return self;\n }\n hasHeaderState(headerState) {\n return (this.getHeaderStyles() & headerState) === headerState;\n }\n hasHeader() {\n return this.getLatest().__headerState !== TableCellHeaderStates.NO_STATUS;\n }\n updateDOM(prevNode) {\n return prevNode.__headerState !== this.__headerState || prevNode.__width !== this.__width || prevNode.__colSpan !== this.__colSpan || prevNode.__rowSpan !== this.__rowSpan || prevNode.__backgroundColor !== this.__backgroundColor || prevNode.__verticalAlign !== this.__verticalAlign;\n }\n isShadowRoot() {\n return true;\n }\n collapseAtStart() {\n return true;\n }\n canBeEmpty() {\n return false;\n }\n canIndent() {\n return false;\n }\n}\nfunction isValidVerticalAlign(verticalAlign) {\n return verticalAlign === 'middle' || verticalAlign === 'bottom';\n}\nfunction $convertTableCellNodeElement(domNode) {\n const domNode_ = domNode;\n const nodeName = domNode.nodeName.toLowerCase();\n let width = undefined;\n if (PIXEL_VALUE_REG_EXP.test(domNode_.style.width)) {\n width = parseFloat(domNode_.style.width);\n }\n const tableCellNode = $createTableCellNode(nodeName === 'th' ? TableCellHeaderStates.ROW : TableCellHeaderStates.NO_STATUS, domNode_.colSpan, width);\n tableCellNode.__rowSpan = domNode_.rowSpan;\n const backgroundColor = domNode_.style.backgroundColor;\n if (backgroundColor !== '') {\n tableCellNode.__backgroundColor = backgroundColor;\n }\n const verticalAlign = domNode_.style.verticalAlign;\n if (isValidVerticalAlign(verticalAlign)) {\n tableCellNode.__verticalAlign = verticalAlign;\n }\n const style = domNode_.style;\n const textDecoration = (style && style.textDecoration || '').split(' ');\n const hasBoldFontWeight = style.fontWeight === '700' || style.fontWeight === 'bold';\n const hasLinethroughTextDecoration = textDecoration.includes('line-through');\n const hasItalicFontStyle = style.fontStyle === 'italic';\n const hasUnderlineTextDecoration = textDecoration.includes('underline');\n return {\n after: childLexicalNodes => {\n const result = [];\n let paragraphNode = null;\n const removeSingleLineBreakNode = () => {\n if (paragraphNode) {\n const firstChild = paragraphNode.getFirstChild();\n if ($isLineBreakNode(firstChild) && paragraphNode.getChildrenSize() === 1) {\n firstChild.remove();\n }\n }\n };\n for (const child of childLexicalNodes) {\n if ($isInlineElementOrDecoratorNode(child) || $isTextNode(child) || $isLineBreakNode(child)) {\n if ($isTextNode(child)) {\n if (hasBoldFontWeight) {\n child.toggleFormat('bold');\n }\n if (hasLinethroughTextDecoration) {\n child.toggleFormat('strikethrough');\n }\n if (hasItalicFontStyle) {\n child.toggleFormat('italic');\n }\n if (hasUnderlineTextDecoration) {\n child.toggleFormat('underline');\n }\n }\n if (paragraphNode) {\n paragraphNode.append(child);\n } else {\n paragraphNode = $createParagraphNode().append(child);\n result.push(paragraphNode);\n }\n } else {\n result.push(child);\n removeSingleLineBreakNode();\n paragraphNode = null;\n }\n }\n removeSingleLineBreakNode();\n if (result.length === 0) {\n result.push($createParagraphNode());\n }\n return result;\n },\n node: tableCellNode\n };\n}\nfunction $createTableCellNode(headerState = TableCellHeaderStates.NO_STATUS, colSpan = 1, width) {\n return $applyNodeReplacement(new TableCellNode(headerState, colSpan, width));\n}\nfunction $isTableCellNode(node) {\n return node instanceof TableCellNode;\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst INSERT_TABLE_COMMAND = createCommand('INSERT_TABLE_COMMAND');\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n// Do not require this module directly! Use normal `invariant` calls.\n\nfunction formatDevErrorMessage(message) {\n throw new Error(message);\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/** @noInheritDoc */\nclass TableRowNode extends ElementNode {\n /** @internal */\n __height;\n static getType() {\n return 'tablerow';\n }\n static clone(node) {\n return new TableRowNode(node.__height, node.__key);\n }\n static importDOM() {\n return {\n tr: node => ({\n conversion: $convertTableRowElement,\n priority: 0\n })\n };\n }\n static importJSON(serializedNode) {\n return $createTableRowNode().updateFromJSON(serializedNode);\n }\n updateFromJSON(serializedNode) {\n return super.updateFromJSON(serializedNode).setHeight(serializedNode.height);\n }\n constructor(height, key) {\n super(key);\n this.__height = height;\n }\n exportJSON() {\n const height = this.getHeight();\n return {\n ...super.exportJSON(),\n ...(height === undefined ? undefined : {\n height\n })\n };\n }\n createDOM(config) {\n const element = document.createElement('tr');\n if (this.__height) {\n element.style.height = `${this.__height}px`;\n }\n addClassNamesToElement(element, config.theme.tableRow);\n return element;\n }\n extractWithChild(child, selection, destination) {\n return destination === 'html';\n }\n isShadowRoot() {\n return true;\n }\n setHeight(height) {\n const self = this.getWritable();\n self.__height = height;\n return self;\n }\n getHeight() {\n return this.getLatest().__height;\n }\n updateDOM(prevNode) {\n return prevNode.__height !== this.__height;\n }\n canBeEmpty() {\n return false;\n }\n canIndent() {\n return false;\n }\n}\nfunction $convertTableRowElement(domNode) {\n const domNode_ = domNode;\n let height = undefined;\n if (PIXEL_VALUE_REG_EXP.test(domNode_.style.height)) {\n height = parseFloat(domNode_.style.height);\n }\n return {\n after: children => $descendantsMatching(children, $isTableCellNode),\n node: $createTableRowNode(height)\n };\n}\nfunction $createTableRowNode(height) {\n return $applyNodeReplacement(new TableRowNode(height));\n}\nfunction $isTableRowNode(node) {\n return node instanceof TableRowNode;\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst CAN_USE_DOM = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined';\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst documentMode = CAN_USE_DOM && 'documentMode' in document ? document.documentMode : null;\nconst IS_FIREFOX = CAN_USE_DOM && /^(?!.*Seamonkey)(?=.*Firefox).*/i.test(navigator.userAgent);\nCAN_USE_DOM && 'InputEvent' in window && !documentMode ? 'getTargetRanges' in new window.InputEvent('input') : false;\n\nfunction $createTableNodeWithDimensions(rowCount, columnCount, includeHeaders = true) {\n const tableNode = $createTableNode();\n for (let iRow = 0; iRow < rowCount; iRow++) {\n const tableRowNode = $createTableRowNode();\n for (let iColumn = 0; iColumn < columnCount; iColumn++) {\n let headerState = TableCellHeaderStates.NO_STATUS;\n if (typeof includeHeaders === 'object') {\n if (iRow === 0 && includeHeaders.rows) {\n headerState |= TableCellHeaderStates.ROW;\n }\n if (iColumn === 0 && includeHeaders.columns) {\n headerState |= TableCellHeaderStates.COLUMN;\n }\n } else if (includeHeaders) {\n if (iRow === 0) {\n headerState |= TableCellHeaderStates.ROW;\n }\n if (iColumn === 0) {\n headerState |= TableCellHeaderStates.COLUMN;\n }\n }\n const tableCellNode = $createTableCellNode(headerState);\n const paragraphNode = $createParagraphNode();\n paragraphNode.append($createTextNode());\n tableCellNode.append(paragraphNode);\n tableRowNode.append(tableCellNode);\n }\n tableNode.append(tableRowNode);\n }\n return tableNode;\n}\nfunction $getTableCellNodeFromLexicalNode(startingNode) {\n const node = $findMatchingParent(startingNode, n => $isTableCellNode(n));\n if ($isTableCellNode(node)) {\n return node;\n }\n return null;\n}\nfunction $getTableRowNodeFromTableCellNodeOrThrow(startingNode) {\n const node = $findMatchingParent(startingNode, n => $isTableRowNode(n));\n if ($isTableRowNode(node)) {\n return node;\n }\n throw new Error('Expected table cell to be inside of table row.');\n}\nfunction $getTableNodeFromLexicalNodeOrThrow(startingNode) {\n const node = $findMatchingParent(startingNode, n => $isTableNode(n));\n if ($isTableNode(node)) {\n return node;\n }\n throw new Error('Expected table cell to be inside of table.');\n}\nfunction $getTableRowIndexFromTableCellNode(tableCellNode) {\n const tableRowNode = $getTableRowNodeFromTableCellNodeOrThrow(tableCellNode);\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableRowNode);\n return tableNode.getChildren().findIndex(n => n.is(tableRowNode));\n}\nfunction $getTableColumnIndexFromTableCellNode(tableCellNode) {\n const tableRowNode = $getTableRowNodeFromTableCellNodeOrThrow(tableCellNode);\n return tableRowNode.getChildren().findIndex(n => n.is(tableCellNode));\n}\nfunction $getTableCellSiblingsFromTableCellNode(tableCellNode, table) {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);\n const {\n x,\n y\n } = tableNode.getCordsFromCellNode(tableCellNode, table);\n return {\n above: tableNode.getCellNodeFromCords(x, y - 1, table),\n below: tableNode.getCellNodeFromCords(x, y + 1, table),\n left: tableNode.getCellNodeFromCords(x - 1, y, table),\n right: tableNode.getCellNodeFromCords(x + 1, y, table)\n };\n}\nfunction $removeTableRowAtIndex(tableNode, indexToDelete) {\n const tableRows = tableNode.getChildren();\n if (indexToDelete >= tableRows.length || indexToDelete < 0) {\n throw new Error('Expected table cell to be inside of table row.');\n }\n const targetRowNode = tableRows[indexToDelete];\n targetRowNode.remove();\n return tableNode;\n}\n\n/**\n * @deprecated This function does not support merged cells. Use {@link $insertTableRowAtSelection} or {@link $insertTableRowAtNode} instead.\n */\nfunction $insertTableRow(tableNode, targetIndex, shouldInsertAfter = true, rowCount, table) {\n const tableRows = tableNode.getChildren();\n if (targetIndex >= tableRows.length || targetIndex < 0) {\n throw new Error('Table row target index out of range');\n }\n const targetRowNode = tableRows[targetIndex];\n if ($isTableRowNode(targetRowNode)) {\n for (let r = 0; r < rowCount; r++) {\n const tableRowCells = targetRowNode.getChildren();\n const tableColumnCount = tableRowCells.length;\n const newTableRowNode = $createTableRowNode();\n for (let c = 0; c < tableColumnCount; c++) {\n const tableCellFromTargetRow = tableRowCells[c];\n if (!$isTableCellNode(tableCellFromTargetRow)) {\n formatDevErrorMessage(`Expected table cell`);\n }\n const {\n above,\n below\n } = $getTableCellSiblingsFromTableCellNode(tableCellFromTargetRow, table);\n let headerState = TableCellHeaderStates.NO_STATUS;\n const width = above && above.getWidth() || below && below.getWidth() || undefined;\n if (above && above.hasHeaderState(TableCellHeaderStates.COLUMN) || below && below.hasHeaderState(TableCellHeaderStates.COLUMN)) {\n headerState |= TableCellHeaderStates.COLUMN;\n }\n const tableCellNode = $createTableCellNode(headerState, 1, width);\n tableCellNode.append($createParagraphNode());\n newTableRowNode.append(tableCellNode);\n }\n if (shouldInsertAfter) {\n targetRowNode.insertAfter(newTableRowNode);\n } else {\n targetRowNode.insertBefore(newTableRowNode);\n }\n }\n } else {\n throw new Error('Row before insertion index does not exist.');\n }\n return tableNode;\n}\nconst getHeaderState = (currentState, possibleState) => {\n if (currentState === TableCellHeaderStates.BOTH || currentState === possibleState) {\n return possibleState;\n }\n return TableCellHeaderStates.NO_STATUS;\n};\n\n/**\n * Inserts a table row before or after the current focus cell node,\n * taking into account any spans. If successful, returns the\n * inserted table row node.\n */\nfunction $insertTableRowAtSelection(insertAfter = true) {\n const selection = $getSelection();\n if (!($isRangeSelection(selection) || $isTableSelection(selection))) {\n formatDevErrorMessage(`Expected a RangeSelection or TableSelection`);\n }\n const anchor = selection.anchor.getNode();\n const focus = selection.focus.getNode();\n const [anchorCell] = $getNodeTriplet(anchor);\n const [focusCell,, grid] = $getNodeTriplet(focus);\n const [, focusCellMap, anchorCellMap] = $computeTableMap(grid, focusCell, anchorCell);\n const {\n startRow: anchorStartRow\n } = anchorCellMap;\n const {\n startRow: focusStartRow\n } = focusCellMap;\n if (insertAfter) {\n return $insertTableRowAtNode(anchorStartRow + anchorCell.__rowSpan > focusStartRow + focusCell.__rowSpan ? anchorCell : focusCell, true);\n } else {\n return $insertTableRowAtNode(focusStartRow < anchorStartRow ? focusCell : anchorCell, false);\n }\n}\n\n/**\n * @deprecated renamed to {@link $insertTableRowAtSelection}\n */\nconst $insertTableRow__EXPERIMENTAL = $insertTableRowAtSelection;\n\n/**\n * Inserts a table row before or after the given cell node,\n * taking into account any spans. If successful, returns the\n * inserted table row node.\n */\nfunction $insertTableRowAtNode(cellNode, insertAfter = true) {\n const [,, grid] = $getNodeTriplet(cellNode);\n const [gridMap, cellMap] = $computeTableMap(grid, cellNode, cellNode);\n const columnCount = gridMap[0].length;\n const {\n startRow: cellStartRow\n } = cellMap;\n let insertedRow = null;\n if (insertAfter) {\n const insertAfterEndRow = cellStartRow + cellNode.__rowSpan - 1;\n const insertAfterEndRowMap = gridMap[insertAfterEndRow];\n const newRow = $createTableRowNode();\n for (let i = 0; i < columnCount; i++) {\n const {\n cell,\n startRow\n } = insertAfterEndRowMap[i];\n if (startRow + cell.__rowSpan - 1 <= insertAfterEndRow) {\n const currentCell = insertAfterEndRowMap[i].cell;\n const currentCellHeaderState = currentCell.__headerState;\n const headerState = getHeaderState(currentCellHeaderState, TableCellHeaderStates.COLUMN);\n newRow.append($createTableCellNode(headerState).append($createParagraphNode()));\n } else {\n cell.setRowSpan(cell.__rowSpan + 1);\n }\n }\n const insertAfterEndRowNode = grid.getChildAtIndex(insertAfterEndRow);\n if (!$isTableRowNode(insertAfterEndRowNode)) {\n formatDevErrorMessage(`insertAfterEndRow is not a TableRowNode`);\n }\n insertAfterEndRowNode.insertAfter(newRow);\n insertedRow = newRow;\n } else {\n const insertBeforeStartRow = cellStartRow;\n const insertBeforeStartRowMap = gridMap[insertBeforeStartRow];\n const newRow = $createTableRowNode();\n for (let i = 0; i < columnCount; i++) {\n const {\n cell,\n startRow\n } = insertBeforeStartRowMap[i];\n if (startRow === insertBeforeStartRow) {\n const currentCell = insertBeforeStartRowMap[i].cell;\n const currentCellHeaderState = currentCell.__headerState;\n const headerState = getHeaderState(currentCellHeaderState, TableCellHeaderStates.COLUMN);\n newRow.append($createTableCellNode(headerState).append($createParagraphNode()));\n } else {\n cell.setRowSpan(cell.__rowSpan + 1);\n }\n }\n const insertBeforeStartRowNode = grid.getChildAtIndex(insertBeforeStartRow);\n if (!$isTableRowNode(insertBeforeStartRowNode)) {\n formatDevErrorMessage(`insertBeforeStartRow is not a TableRowNode`);\n }\n insertBeforeStartRowNode.insertBefore(newRow);\n insertedRow = newRow;\n }\n return insertedRow;\n}\n\n/**\n * @deprecated This function does not support merged cells. Use {@link $insertTableColumnAtSelection} or {@link $insertTableColumnAtNode} instead.\n */\nfunction $insertTableColumn(tableNode, targetIndex, shouldInsertAfter = true, columnCount, table) {\n const tableRows = tableNode.getChildren();\n const tableCellsToBeInserted = [];\n for (let r = 0; r < tableRows.length; r++) {\n const currentTableRowNode = tableRows[r];\n if ($isTableRowNode(currentTableRowNode)) {\n for (let c = 0; c < columnCount; c++) {\n const tableRowChildren = currentTableRowNode.getChildren();\n if (targetIndex >= tableRowChildren.length || targetIndex < 0) {\n throw new Error('Table column target index out of range');\n }\n const targetCell = tableRowChildren[targetIndex];\n if (!$isTableCellNode(targetCell)) {\n formatDevErrorMessage(`Expected table cell`);\n }\n const {\n left,\n right\n } = $getTableCellSiblingsFromTableCellNode(targetCell, table);\n let headerState = TableCellHeaderStates.NO_STATUS;\n if (left && left.hasHeaderState(TableCellHeaderStates.ROW) || right && right.hasHeaderState(TableCellHeaderStates.ROW)) {\n headerState |= TableCellHeaderStates.ROW;\n }\n const newTableCell = $createTableCellNode(headerState);\n newTableCell.append($createParagraphNode());\n tableCellsToBeInserted.push({\n newTableCell,\n targetCell\n });\n }\n }\n }\n tableCellsToBeInserted.forEach(({\n newTableCell,\n targetCell\n }) => {\n if (shouldInsertAfter) {\n targetCell.insertAfter(newTableCell);\n } else {\n targetCell.insertBefore(newTableCell);\n }\n });\n return tableNode;\n}\n\n/**\n * Inserts a column before or after the current focus cell node,\n * taking into account any spans. If successful, returns the\n * first inserted cell node.\n */\nfunction $insertTableColumnAtSelection(insertAfter = true) {\n const selection = $getSelection();\n if (!($isRangeSelection(selection) || $isTableSelection(selection))) {\n formatDevErrorMessage(`Expected a RangeSelection or TableSelection`);\n }\n const anchor = selection.anchor.getNode();\n const focus = selection.focus.getNode();\n const [anchorCell] = $getNodeTriplet(anchor);\n const [focusCell,, grid] = $getNodeTriplet(focus);\n const [, focusCellMap, anchorCellMap] = $computeTableMap(grid, focusCell, anchorCell);\n const {\n startColumn: anchorStartColumn\n } = anchorCellMap;\n const {\n startColumn: focusStartColumn\n } = focusCellMap;\n if (insertAfter) {\n return $insertTableColumnAtNode(anchorStartColumn + anchorCell.__colSpan > focusStartColumn + focusCell.__colSpan ? anchorCell : focusCell, true);\n } else {\n return $insertTableColumnAtNode(focusStartColumn < anchorStartColumn ? focusCell : anchorCell, false);\n }\n}\n\n/**\n * @deprecated renamed to {@link $insertTableColumnAtSelection}\n */\nconst $insertTableColumn__EXPERIMENTAL = $insertTableColumnAtSelection;\n\n/**\n * Inserts a column before or after the given cell node,\n * taking into account any spans. If successful, returns the\n * first inserted cell node.\n */\nfunction $insertTableColumnAtNode(cellNode, insertAfter = true, shouldSetSelection = true) {\n const [,, grid] = $getNodeTriplet(cellNode);\n const [gridMap, cellMap] = $computeTableMap(grid, cellNode, cellNode);\n const rowCount = gridMap.length;\n const {\n startColumn\n } = cellMap;\n const insertAfterColumn = insertAfter ? startColumn + cellNode.__colSpan - 1 : startColumn - 1;\n const gridFirstChild = grid.getFirstChild();\n if (!$isTableRowNode(gridFirstChild)) {\n formatDevErrorMessage(`Expected firstTable child to be a row`);\n }\n let firstInsertedCell = null;\n function $createTableCellNodeForInsertTableColumn(headerState = TableCellHeaderStates.NO_STATUS) {\n const cell = $createTableCellNode(headerState).append($createParagraphNode());\n if (firstInsertedCell === null) {\n firstInsertedCell = cell;\n }\n return cell;\n }\n let loopRow = gridFirstChild;\n rowLoop: for (let i = 0; i < rowCount; i++) {\n if (i !== 0) {\n const currentRow = loopRow.getNextSibling();\n if (!$isTableRowNode(currentRow)) {\n formatDevErrorMessage(`Expected row nextSibling to be a row`);\n }\n loopRow = currentRow;\n }\n const rowMap = gridMap[i];\n const currentCellHeaderState = rowMap[insertAfterColumn < 0 ? 0 : insertAfterColumn].cell.__headerState;\n const headerState = getHeaderState(currentCellHeaderState, TableCellHeaderStates.ROW);\n if (insertAfterColumn < 0) {\n $insertFirst(loopRow, $createTableCellNodeForInsertTableColumn(headerState));\n continue;\n }\n const {\n cell: currentCell,\n startColumn: currentStartColumn,\n startRow: currentStartRow\n } = rowMap[insertAfterColumn];\n if (currentStartColumn + currentCell.__colSpan - 1 <= insertAfterColumn) {\n let insertAfterCell = currentCell;\n let insertAfterCellRowStart = currentStartRow;\n let prevCellIndex = insertAfterColumn;\n while (insertAfterCellRowStart !== i && insertAfterCell.__rowSpan > 1) {\n prevCellIndex -= currentCell.__colSpan;\n if (prevCellIndex >= 0) {\n const {\n cell: cell_,\n startRow: startRow_\n } = rowMap[prevCellIndex];\n insertAfterCell = cell_;\n insertAfterCellRowStart = startRow_;\n } else {\n loopRow.append($createTableCellNodeForInsertTableColumn(headerState));\n continue rowLoop;\n }\n }\n insertAfterCell.insertAfter($createTableCellNodeForInsertTableColumn(headerState));\n } else {\n currentCell.setColSpan(currentCell.__colSpan + 1);\n }\n }\n if (firstInsertedCell !== null && shouldSetSelection) {\n $moveSelectionToCell(firstInsertedCell);\n }\n const colWidths = grid.getColWidths();\n if (colWidths) {\n const newColWidths = [...colWidths];\n const columnIndex = insertAfterColumn < 0 ? 0 : insertAfterColumn;\n const newWidth = newColWidths[columnIndex];\n newColWidths.splice(columnIndex, 0, newWidth);\n grid.setColWidths(newColWidths);\n }\n return firstInsertedCell;\n}\n\n/**\n * @deprecated This function does not support merged cells. Use {@link $deleteTableColumnAtSelection} instead.\n */\nfunction $deleteTableColumn(tableNode, targetIndex) {\n const tableRows = tableNode.getChildren();\n for (let i = 0; i < tableRows.length; i++) {\n const currentTableRowNode = tableRows[i];\n if ($isTableRowNode(currentTableRowNode)) {\n const tableRowChildren = currentTableRowNode.getChildren();\n if (targetIndex >= tableRowChildren.length || targetIndex < 0) {\n throw new Error('Table column target index out of range');\n }\n tableRowChildren[targetIndex].remove();\n }\n }\n return tableNode;\n}\nfunction $deleteTableRowAtSelection() {\n const selection = $getSelection();\n if (!($isRangeSelection(selection) || $isTableSelection(selection))) {\n formatDevErrorMessage(`Expected a RangeSelection or TableSelection`);\n }\n const [anchor, focus] = selection.isBackward() ? [selection.focus.getNode(), selection.anchor.getNode()] : [selection.anchor.getNode(), selection.focus.getNode()];\n const [anchorCell,, grid] = $getNodeTriplet(anchor);\n const [focusCell] = $getNodeTriplet(focus);\n const [gridMap, anchorCellMap, focusCellMap] = $computeTableMap(grid, anchorCell, focusCell);\n const {\n startRow: anchorStartRow\n } = anchorCellMap;\n const {\n startRow: focusStartRow\n } = focusCellMap;\n const focusEndRow = focusStartRow + focusCell.__rowSpan - 1;\n if (gridMap.length === focusEndRow - anchorStartRow + 1) {\n // Empty grid\n grid.remove();\n return;\n }\n const columnCount = gridMap[0].length;\n const nextRow = gridMap[focusEndRow + 1];\n const nextRowNode = grid.getChildAtIndex(focusEndRow + 1);\n for (let row = focusEndRow; row >= anchorStartRow; row--) {\n for (let column = columnCount - 1; column >= 0; column--) {\n const {\n cell,\n startRow: cellStartRow,\n startColumn: cellStartColumn\n } = gridMap[row][column];\n if (cellStartColumn !== column) {\n // Don't repeat work for the same Cell\n continue;\n }\n // Rows overflowing top or bottom have to be trimmed\n if (cellStartRow < anchorStartRow || cellStartRow + cell.__rowSpan - 1 > focusEndRow) {\n const intersectionStart = Math.max(cellStartRow, anchorStartRow);\n const intersectionEnd = Math.min(cell.__rowSpan + cellStartRow - 1, focusEndRow);\n const overflowRowsCount = intersectionStart <= intersectionEnd ? intersectionEnd - intersectionStart + 1 : 0;\n cell.setRowSpan(cell.__rowSpan - overflowRowsCount);\n }\n // Rows overflowing bottom have to be moved to the next row\n if (cellStartRow >= anchorStartRow && cellStartRow + cell.__rowSpan - 1 > focusEndRow &&\n // Handle overflow only once\n row === focusEndRow) {\n if (!(nextRowNode !== null)) {\n formatDevErrorMessage(`Expected nextRowNode not to be null`);\n }\n let insertAfterCell = null;\n for (let columnIndex = 0; columnIndex < column; columnIndex++) {\n const currentCellMap = nextRow[columnIndex];\n const currentCell = currentCellMap.cell;\n // Checking the cell having startRow as same as nextRow\n if (currentCellMap.startRow === row + 1) {\n insertAfterCell = currentCell;\n }\n if (currentCell.__colSpan > 1) {\n columnIndex += currentCell.__colSpan - 1;\n }\n }\n if (insertAfterCell === null) {\n $insertFirst(nextRowNode, cell);\n } else {\n insertAfterCell.insertAfter(cell);\n }\n }\n }\n const rowNode = grid.getChildAtIndex(row);\n if (!$isTableRowNode(rowNode)) {\n formatDevErrorMessage(`Expected TableNode childAtIndex(${String(row)}) to be RowNode`);\n }\n rowNode.remove();\n }\n if (nextRow !== undefined) {\n const {\n cell\n } = nextRow[0];\n $moveSelectionToCell(cell);\n } else {\n const previousRow = gridMap[anchorStartRow - 1];\n const {\n cell\n } = previousRow[0];\n $moveSelectionToCell(cell);\n }\n}\n\n/**\n * @deprecated renamed to {@link $deleteTableRowAtSelection}\n */\nconst $deleteTableRow__EXPERIMENTAL = $deleteTableRowAtSelection;\nfunction $deleteTableColumnAtSelection() {\n const selection = $getSelection();\n if (!($isRangeSelection(selection) || $isTableSelection(selection))) {\n formatDevErrorMessage(`Expected a RangeSelection or TableSelection`);\n }\n const anchor = selection.anchor.getNode();\n const focus = selection.focus.getNode();\n const [anchorCell,, grid] = $getNodeTriplet(anchor);\n const [focusCell] = $getNodeTriplet(focus);\n const [gridMap, anchorCellMap, focusCellMap] = $computeTableMap(grid, anchorCell, focusCell);\n const {\n startColumn: anchorStartColumn\n } = anchorCellMap;\n const {\n startRow: focusStartRow,\n startColumn: focusStartColumn\n } = focusCellMap;\n const startColumn = Math.min(anchorStartColumn, focusStartColumn);\n const endColumn = Math.max(anchorStartColumn + anchorCell.__colSpan - 1, focusStartColumn + focusCell.__colSpan - 1);\n const selectedColumnCount = endColumn - startColumn + 1;\n const columnCount = gridMap[0].length;\n if (columnCount === endColumn - startColumn + 1) {\n // Empty grid\n grid.selectPrevious();\n grid.remove();\n return;\n }\n const rowCount = gridMap.length;\n for (let row = 0; row < rowCount; row++) {\n for (let column = startColumn; column <= endColumn; column++) {\n const {\n cell,\n startColumn: cellStartColumn\n } = gridMap[row][column];\n if (cellStartColumn < startColumn) {\n if (column === startColumn) {\n const overflowLeft = startColumn - cellStartColumn;\n // Overflowing left\n cell.setColSpan(cell.__colSpan -\n // Possible overflow right too\n Math.min(selectedColumnCount, cell.__colSpan - overflowLeft));\n }\n } else if (cellStartColumn + cell.__colSpan - 1 > endColumn) {\n if (column === endColumn) {\n // Overflowing right\n const inSelectedArea = endColumn - cellStartColumn + 1;\n cell.setColSpan(cell.__colSpan - inSelectedArea);\n }\n } else {\n cell.remove();\n }\n }\n }\n const focusRowMap = gridMap[focusStartRow];\n const nextColumn = anchorStartColumn > focusStartColumn ? focusRowMap[anchorStartColumn + anchorCell.__colSpan] : focusRowMap[focusStartColumn + focusCell.__colSpan];\n if (nextColumn !== undefined) {\n const {\n cell\n } = nextColumn;\n $moveSelectionToCell(cell);\n } else {\n const previousRow = focusStartColumn < anchorStartColumn ? focusRowMap[focusStartColumn - 1] : focusRowMap[anchorStartColumn - 1];\n const {\n cell\n } = previousRow;\n $moveSelectionToCell(cell);\n }\n const colWidths = grid.getColWidths();\n if (colWidths) {\n const newColWidths = [...colWidths];\n newColWidths.splice(startColumn, selectedColumnCount);\n grid.setColWidths(newColWidths);\n }\n}\n\n/**\n * @deprecated renamed to {@link $deleteTableColumnAtSelection}\n */\nconst $deleteTableColumn__EXPERIMENTAL = $deleteTableColumnAtSelection;\nfunction $moveSelectionToCell(cell) {\n const firstDescendant = cell.getFirstDescendant();\n if (firstDescendant == null) {\n cell.selectStart();\n } else {\n firstDescendant.getParentOrThrow().selectStart();\n }\n}\nfunction $insertFirst(parent, node) {\n const firstChild = parent.getFirstChild();\n if (firstChild !== null) {\n firstChild.insertBefore(node);\n } else {\n parent.append(node);\n }\n}\nfunction $mergeCells(cellNodes) {\n if (cellNodes.length === 0) {\n return null;\n }\n\n // Find the table node\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(cellNodes[0]);\n const [gridMap] = $computeTableMapSkipCellCheck(tableNode, null, null);\n\n // Find the boundaries of the selection including merged cells\n let minRow = Infinity;\n let maxRow = -Infinity;\n let minCol = Infinity;\n let maxCol = -Infinity;\n\n // First pass: find the actual boundaries considering merged cells\n const processedCells = new Set();\n for (const row of gridMap) {\n for (const mapCell of row) {\n if (!mapCell || !mapCell.cell) {\n continue;\n }\n const cellKey = mapCell.cell.getKey();\n if (processedCells.has(cellKey)) {\n continue;\n }\n if (cellNodes.some(cell => cell.is(mapCell.cell))) {\n processedCells.add(cellKey);\n // Get the actual position of this cell in the grid\n const cellStartRow = mapCell.startRow;\n const cellStartCol = mapCell.startColumn;\n const cellRowSpan = mapCell.cell.__rowSpan || 1;\n const cellColSpan = mapCell.cell.__colSpan || 1;\n\n // Update boundaries considering the cell's actual position and span\n minRow = Math.min(minRow, cellStartRow);\n maxRow = Math.max(maxRow, cellStartRow + cellRowSpan - 1);\n minCol = Math.min(minCol, cellStartCol);\n maxCol = Math.max(maxCol, cellStartCol + cellColSpan - 1);\n }\n }\n }\n\n // Validate boundaries\n if (minRow === Infinity || minCol === Infinity) {\n return null;\n }\n\n // The total span of the merged cell\n const totalRowSpan = maxRow - minRow + 1;\n const totalColSpan = maxCol - minCol + 1;\n\n // Use the top-left cell as the target cell\n const targetCellMap = gridMap[minRow][minCol];\n if (!targetCellMap.cell) {\n return null;\n }\n const targetCell = targetCellMap.cell;\n\n // Set the spans for the target cell\n targetCell.setColSpan(totalColSpan);\n targetCell.setRowSpan(totalRowSpan);\n\n // Move content from other cells to the target cell\n const seenCells = new Set([targetCell.getKey()]);\n\n // Second pass: merge content and remove other cells\n for (let row = minRow; row <= maxRow; row++) {\n for (let col = minCol; col <= maxCol; col++) {\n const mapCell = gridMap[row][col];\n if (!mapCell.cell) {\n continue;\n }\n const currentCell = mapCell.cell;\n const key = currentCell.getKey();\n if (!seenCells.has(key)) {\n seenCells.add(key);\n const isEmpty = $cellContainsEmptyParagraph(currentCell);\n if (!isEmpty) {\n targetCell.append(...currentCell.getChildren());\n }\n currentCell.remove();\n }\n }\n }\n\n // Ensure target cell has content\n if (targetCell.getChildrenSize() === 0) {\n targetCell.append($createParagraphNode());\n }\n return targetCell;\n}\nfunction $cellContainsEmptyParagraph(cell) {\n if (cell.getChildrenSize() !== 1) {\n return false;\n }\n const firstChild = cell.getFirstChildOrThrow();\n if (!$isParagraphNode(firstChild) || !firstChild.isEmpty()) {\n return false;\n }\n return true;\n}\nfunction $unmergeCell() {\n const selection = $getSelection();\n if (!($isRangeSelection(selection) || $isTableSelection(selection))) {\n formatDevErrorMessage(`Expected a RangeSelection or TableSelection`);\n }\n const anchor = selection.anchor.getNode();\n const cellNode = $findMatchingParent(anchor, $isTableCellNode);\n if (!$isTableCellNode(cellNode)) {\n formatDevErrorMessage(`Expected to find a parent TableCellNode`);\n }\n return $unmergeCellNode(cellNode);\n}\nfunction $unmergeCellNode(cellNode) {\n const [cell, row, grid] = $getNodeTriplet(cellNode);\n const colSpan = cell.__colSpan;\n const rowSpan = cell.__rowSpan;\n if (colSpan === 1 && rowSpan === 1) {\n return;\n }\n const [map, cellMap] = $computeTableMap(grid, cell, cell);\n const {\n startColumn,\n startRow\n } = cellMap;\n // Create a heuristic for what the style of the unmerged cells should be\n // based on whether every row or column already had that state before the\n // unmerge.\n const baseColStyle = cell.__headerState & TableCellHeaderStates.COLUMN;\n const colStyles = Array.from({\n length: colSpan\n }, (_v, i) => {\n let colStyle = baseColStyle;\n for (let rowIdx = 0; colStyle !== 0 && rowIdx < map.length; rowIdx++) {\n colStyle &= map[rowIdx][i + startColumn].cell.__headerState;\n }\n return colStyle;\n });\n const baseRowStyle = cell.__headerState & TableCellHeaderStates.ROW;\n const rowStyles = Array.from({\n length: rowSpan\n }, (_v, i) => {\n let rowStyle = baseRowStyle;\n for (let colIdx = 0; rowStyle !== 0 && colIdx < map[0].length; colIdx++) {\n rowStyle &= map[i + startRow][colIdx].cell.__headerState;\n }\n return rowStyle;\n });\n if (colSpan > 1) {\n for (let i = 1; i < colSpan; i++) {\n cell.insertAfter($createTableCellNode(colStyles[i] | rowStyles[0]).append($createParagraphNode()));\n }\n cell.setColSpan(1);\n }\n if (rowSpan > 1) {\n let currentRowNode;\n for (let i = 1; i < rowSpan; i++) {\n const currentRow = startRow + i;\n const currentRowMap = map[currentRow];\n currentRowNode = (currentRowNode || row).getNextSibling();\n if (!$isTableRowNode(currentRowNode)) {\n formatDevErrorMessage(`Expected row next sibling to be a row`);\n }\n let insertAfterCell = null;\n for (let column = 0; column < startColumn; column++) {\n const currentCellMap = currentRowMap[column];\n const currentCell = currentCellMap.cell;\n if (currentCellMap.startRow === currentRow) {\n insertAfterCell = currentCell;\n }\n if (currentCell.__colSpan > 1) {\n column += currentCell.__colSpan - 1;\n }\n }\n if (insertAfterCell === null) {\n for (let j = colSpan - 1; j >= 0; j--) {\n $insertFirst(currentRowNode, $createTableCellNode(colStyles[j] | rowStyles[i]).append($createParagraphNode()));\n }\n } else {\n for (let j = colSpan - 1; j >= 0; j--) {\n insertAfterCell.insertAfter($createTableCellNode(colStyles[j] | rowStyles[i]).append($createParagraphNode()));\n }\n }\n }\n cell.setRowSpan(1);\n }\n}\nfunction $computeTableMap(tableNode, cellA, cellB) {\n const [tableMap, cellAValue, cellBValue] = $computeTableMapSkipCellCheck(tableNode, cellA, cellB);\n if (!(cellAValue !== null)) {\n formatDevErrorMessage(`Anchor not found in Table`);\n }\n if (!(cellBValue !== null)) {\n formatDevErrorMessage(`Focus not found in Table`);\n }\n return [tableMap, cellAValue, cellBValue];\n}\nfunction $computeTableMapSkipCellCheck(tableNode, cellA, cellB) {\n const tableMap = [];\n let cellAValue = null;\n let cellBValue = null;\n function getMapRow(i) {\n let row = tableMap[i];\n if (row === undefined) {\n tableMap[i] = row = [];\n }\n return row;\n }\n const gridChildren = tableNode.getChildren();\n for (let rowIdx = 0; rowIdx < gridChildren.length; rowIdx++) {\n const row = gridChildren[rowIdx];\n if (!$isTableRowNode(row)) {\n formatDevErrorMessage(`Expected TableNode children to be TableRowNode`);\n }\n const startMapRow = getMapRow(rowIdx);\n for (let cell = row.getFirstChild(), colIdx = 0; cell != null; cell = cell.getNextSibling()) {\n if (!$isTableCellNode(cell)) {\n formatDevErrorMessage(`Expected TableRowNode children to be TableCellNode`);\n } // Skip past any columns that were merged from a higher row\n while (startMapRow[colIdx] !== undefined) {\n colIdx++;\n }\n const value = {\n cell,\n startColumn: colIdx,\n startRow: rowIdx\n };\n const {\n __rowSpan: rowSpan,\n __colSpan: colSpan\n } = cell;\n for (let j = 0; j < rowSpan; j++) {\n if (rowIdx + j >= gridChildren.length) {\n // The table is non-rectangular with a rowSpan\n // below the last <tr> in the table.\n // We should probably handle this with a node transform\n // to ensure that tables are always rectangular but this\n // will avoid crashes such as #6584\n // Note that there are probably still latent bugs\n // regarding colSpan or general cell count mismatches.\n break;\n }\n const mapRow = getMapRow(rowIdx + j);\n for (let i = 0; i < colSpan; i++) {\n mapRow[colIdx + i] = value;\n }\n }\n if (cellA !== null && cellAValue === null && cellA.is(cell)) {\n cellAValue = value;\n }\n if (cellB !== null && cellBValue === null && cellB.is(cell)) {\n cellBValue = value;\n }\n }\n }\n return [tableMap, cellAValue, cellBValue];\n}\nfunction $getNodeTriplet(source) {\n let cell;\n if (source instanceof TableCellNode) {\n cell = source;\n } else if ('__type' in source) {\n const cell_ = $findMatchingParent(source, $isTableCellNode);\n if (!$isTableCellNode(cell_)) {\n formatDevErrorMessage(`Expected to find a parent TableCellNode`);\n }\n cell = cell_;\n } else {\n const cell_ = $findMatchingParent(source.getNode(), $isTableCellNode);\n if (!$isTableCellNode(cell_)) {\n formatDevErrorMessage(`Expected to find a parent TableCellNode`);\n }\n cell = cell_;\n }\n const row = cell.getParent();\n if (!$isTableRowNode(row)) {\n formatDevErrorMessage(`Expected TableCellNode to have a parent TableRowNode`);\n }\n const grid = row.getParent();\n if (!$isTableNode(grid)) {\n formatDevErrorMessage(`Expected TableRowNode to have a parent TableNode`);\n }\n return [cell, row, grid];\n}\nfunction $computeTableCellRectSpans(map, boundary) {\n const {\n minColumn,\n maxColumn,\n minRow,\n maxRow\n } = boundary;\n let topSpan = 1;\n let leftSpan = 1;\n let rightSpan = 1;\n let bottomSpan = 1;\n const topRow = map[minRow];\n const bottomRow = map[maxRow];\n for (let col = minColumn; col <= maxColumn; col++) {\n topSpan = Math.max(topSpan, topRow[col].cell.__rowSpan);\n bottomSpan = Math.max(bottomSpan, bottomRow[col].cell.__rowSpan);\n }\n for (let row = minRow; row <= maxRow; row++) {\n leftSpan = Math.max(leftSpan, map[row][minColumn].cell.__colSpan);\n rightSpan = Math.max(rightSpan, map[row][maxColumn].cell.__colSpan);\n }\n return {\n bottomSpan,\n leftSpan,\n rightSpan,\n topSpan\n };\n}\nfunction $computeTableCellRectBoundary(map, cellAMap, cellBMap) {\n // Initial boundaries based on the anchor and focus cells\n let minColumn = Math.min(cellAMap.startColumn, cellBMap.startColumn);\n let minRow = Math.min(cellAMap.startRow, cellBMap.startRow);\n let maxColumn = Math.max(cellAMap.startColumn + cellAMap.cell.__colSpan - 1, cellBMap.startColumn + cellBMap.cell.__colSpan - 1);\n let maxRow = Math.max(cellAMap.startRow + cellAMap.cell.__rowSpan - 1, cellBMap.startRow + cellBMap.cell.__rowSpan - 1);\n\n // Keep expanding until we have a complete rectangle\n let hasChanges;\n do {\n hasChanges = false;\n\n // Check all cells in the table\n for (let row = 0; row < map.length; row++) {\n for (let col = 0; col < map[0].length; col++) {\n const cell = map[row][col];\n if (!cell) {\n continue;\n }\n const cellEndCol = cell.startColumn + cell.cell.__colSpan - 1;\n const cellEndRow = cell.startRow + cell.cell.__rowSpan - 1;\n\n // Check if this cell intersects with our current selection rectangle\n const intersectsHorizontally = cell.startColumn <= maxColumn && cellEndCol >= minColumn;\n const intersectsVertically = cell.startRow <= maxRow && cellEndRow >= minRow;\n\n // If the cell intersects either horizontally or vertically\n if (intersectsHorizontally && intersectsVertically) {\n // Expand boundaries to include this cell completely\n const newMinColumn = Math.min(minColumn, cell.startColumn);\n const newMaxColumn = Math.max(maxColumn, cellEndCol);\n const newMinRow = Math.min(minRow, cell.startRow);\n const newMaxRow = Math.max(maxRow, cellEndRow);\n\n // Check if boundaries changed\n if (newMinColumn !== minColumn || newMaxColumn !== maxColumn || newMinRow !== minRow || newMaxRow !== maxRow) {\n minColumn = newMinColumn;\n maxColumn = newMaxColumn;\n minRow = newMinRow;\n maxRow = newMaxRow;\n hasChanges = true;\n }\n }\n }\n }\n } while (hasChanges);\n return {\n maxColumn,\n maxRow,\n minColumn,\n minRow\n };\n}\nfunction $getTableCellNodeRect(tableCellNode) {\n const [cellNode,, gridNode] = $getNodeTriplet(tableCellNode);\n const rows = gridNode.getChildren();\n const rowCount = rows.length;\n const columnCount = rows[0].getChildren().length;\n\n // Create a matrix of the same size as the table to track the position of each cell\n const cellMatrix = new Array(rowCount);\n for (let i = 0; i < rowCount; i++) {\n cellMatrix[i] = new Array(columnCount);\n }\n for (let rowIndex = 0; rowIndex < rowCount; rowIndex++) {\n const row = rows[rowIndex];\n const cells = row.getChildren();\n let columnIndex = 0;\n for (let cellIndex = 0; cellIndex < cells.length; cellIndex++) {\n // Find the next available position in the matrix, skip the position of merged cells\n while (cellMatrix[rowIndex][columnIndex]) {\n columnIndex++;\n }\n const cell = cells[cellIndex];\n const rowSpan = cell.__rowSpan || 1;\n const colSpan = cell.__colSpan || 1;\n\n // Put the cell into the corresponding position in the matrix\n for (let i = 0; i < rowSpan; i++) {\n for (let j = 0; j < colSpan; j++) {\n cellMatrix[rowIndex + i][columnIndex + j] = cell;\n }\n }\n\n // Return to the original index, row span and column span of the cell.\n if (cellNode === cell) {\n return {\n colSpan,\n columnIndex,\n rowIndex,\n rowSpan\n };\n }\n columnIndex += colSpan;\n }\n }\n return null;\n}\n\nfunction $getCellNodes(tableSelection) {\n const [[anchorNode, anchorCell, anchorRow, anchorTable], [focusNode, focusCell, focusRow, focusTable]] = ['anchor', 'focus'].map(k => {\n const node = tableSelection[k].getNode();\n const cellNode = $findMatchingParent(node, $isTableCellNode);\n if (!$isTableCellNode(cellNode)) {\n formatDevErrorMessage(`Expected TableSelection ${k} to be (or a child of) TableCellNode, got key ${node.getKey()} of type ${node.getType()}`);\n }\n const rowNode = cellNode.getParent();\n if (!$isTableRowNode(rowNode)) {\n formatDevErrorMessage(`Expected TableSelection ${k} cell parent to be a TableRowNode`);\n }\n const tableNode = rowNode.getParent();\n if (!$isTableNode(tableNode)) {\n formatDevErrorMessage(`Expected TableSelection ${k} row parent to be a TableNode`);\n }\n return [node, cellNode, rowNode, tableNode];\n });\n // TODO: nested tables may violate this\n if (!anchorTable.is(focusTable)) {\n formatDevErrorMessage(`Expected TableSelection anchor and focus to be in the same table`);\n }\n return {\n anchorCell,\n anchorNode,\n anchorRow,\n anchorTable,\n focusCell,\n focusNode,\n focusRow,\n focusTable\n };\n}\nclass TableSelection {\n tableKey;\n anchor;\n focus;\n _cachedNodes;\n dirty;\n constructor(tableKey, anchor, focus) {\n this.anchor = anchor;\n this.focus = focus;\n anchor._selection = this;\n focus._selection = this;\n this._cachedNodes = null;\n this.dirty = false;\n this.tableKey = tableKey;\n }\n getStartEndPoints() {\n return [this.anchor, this.focus];\n }\n\n /**\n * {@link $createTableSelection} unfortunately makes it very easy to create\n * nonsense selections, so we have a method to see if the selection probably\n * makes sense.\n *\n * @returns true if the TableSelection is (probably) valid\n */\n isValid() {\n if (this.tableKey === 'root' || this.anchor.key === 'root' || this.anchor.type !== 'element' || this.focus.key === 'root' || this.focus.type !== 'element') {\n return false;\n }\n\n // Check if the referenced nodes still exist in the editor\n const tableNode = $getNodeByKey(this.tableKey);\n const anchorNode = $getNodeByKey(this.anchor.key);\n const focusNode = $getNodeByKey(this.focus.key);\n return tableNode !== null && anchorNode !== null && focusNode !== null;\n }\n\n /**\n * Returns whether the Selection is \"backwards\", meaning the focus\n * logically precedes the anchor in the EditorState.\n * @returns true if the Selection is backwards, false otherwise.\n */\n isBackward() {\n return this.focus.isBefore(this.anchor);\n }\n getCachedNodes() {\n return this._cachedNodes;\n }\n setCachedNodes(nodes) {\n this._cachedNodes = nodes;\n }\n is(selection) {\n return $isTableSelection(selection) && this.tableKey === selection.tableKey && this.anchor.is(selection.anchor) && this.focus.is(selection.focus);\n }\n set(tableKey, anchorCellKey, focusCellKey) {\n // note: closure compiler's acorn does not support ||=\n this.dirty = this.dirty || tableKey !== this.tableKey || anchorCellKey !== this.anchor.key || focusCellKey !== this.focus.key;\n this.tableKey = tableKey;\n this.anchor.key = anchorCellKey;\n this.focus.key = focusCellKey;\n this._cachedNodes = null;\n }\n clone() {\n return new TableSelection(this.tableKey, $createPoint(this.anchor.key, this.anchor.offset, this.anchor.type), $createPoint(this.focus.key, this.focus.offset, this.focus.type));\n }\n isCollapsed() {\n return false;\n }\n extract() {\n return this.getNodes();\n }\n insertRawText(text) {\n // Do nothing?\n }\n insertText() {\n // Do nothing?\n }\n\n /**\n * Returns whether the provided TextFormatType is present on the Selection.\n * This will be true if any paragraph in table cells has the specified format.\n *\n * @param type the TextFormatType to check for.\n * @returns true if the provided format is currently toggled on on the Selection, false otherwise.\n */\n hasFormat(type) {\n let format = 0;\n const cellNodes = this.getNodes().filter($isTableCellNode);\n cellNodes.forEach(cellNode => {\n const paragraph = cellNode.getFirstChild();\n if ($isParagraphNode(paragraph)) {\n format |= paragraph.getTextFormat();\n }\n });\n const formatFlag = TEXT_TYPE_TO_FORMAT[type];\n return (format & formatFlag) !== 0;\n }\n insertNodes(nodes) {\n const focusNode = this.focus.getNode();\n if (!$isElementNode(focusNode)) {\n formatDevErrorMessage(`Expected TableSelection focus to be an ElementNode`);\n }\n const selection = $normalizeSelection__EXPERIMENTAL(focusNode.select(0, focusNode.getChildrenSize()));\n selection.insertNodes(nodes);\n }\n\n // TODO Deprecate this method. It's confusing when used with colspan|rowspan\n getShape() {\n const {\n anchorCell,\n focusCell\n } = $getCellNodes(this);\n const anchorCellNodeRect = $getTableCellNodeRect(anchorCell);\n if (!(anchorCellNodeRect !== null)) {\n formatDevErrorMessage(`getCellRect: expected to find AnchorNode`);\n }\n const focusCellNodeRect = $getTableCellNodeRect(focusCell);\n if (!(focusCellNodeRect !== null)) {\n formatDevErrorMessage(`getCellRect: expected to find focusCellNode`);\n }\n const startX = Math.min(anchorCellNodeRect.columnIndex, focusCellNodeRect.columnIndex);\n const stopX = Math.max(anchorCellNodeRect.columnIndex + anchorCellNodeRect.colSpan - 1, focusCellNodeRect.columnIndex + focusCellNodeRect.colSpan - 1);\n const startY = Math.min(anchorCellNodeRect.rowIndex, focusCellNodeRect.rowIndex);\n const stopY = Math.max(anchorCellNodeRect.rowIndex + anchorCellNodeRect.rowSpan - 1, focusCellNodeRect.rowIndex + focusCellNodeRect.rowSpan - 1);\n return {\n fromX: Math.min(startX, stopX),\n fromY: Math.min(startY, stopY),\n toX: Math.max(startX, stopX),\n toY: Math.max(startY, stopY)\n };\n }\n getNodes() {\n if (!this.isValid()) {\n return [];\n }\n const cachedNodes = this._cachedNodes;\n if (cachedNodes !== null) {\n return cachedNodes;\n }\n const {\n anchorTable: tableNode,\n anchorCell,\n focusCell\n } = $getCellNodes(this);\n const focusCellGrid = focusCell.getParents()[1];\n if (focusCellGrid !== tableNode) {\n if (!tableNode.isParentOf(focusCell)) {\n // focus is on higher Grid level than anchor\n const gridParent = tableNode.getParent();\n if (!(gridParent != null)) {\n formatDevErrorMessage(`Expected gridParent to have a parent`);\n }\n this.set(this.tableKey, gridParent.getKey(), focusCell.getKey());\n } else {\n // anchor is on higher Grid level than focus\n const focusCellParent = focusCellGrid.getParent();\n if (!(focusCellParent != null)) {\n formatDevErrorMessage(`Expected focusCellParent to have a parent`);\n }\n this.set(this.tableKey, focusCell.getKey(), focusCellParent.getKey());\n }\n return this.getNodes();\n }\n\n // TODO Mapping the whole Grid every time not efficient. We need to compute the entire state only\n // once (on load) and iterate on it as updates occur. However, to do this we need to have the\n // ability to store a state. Killing TableSelection and moving the logic to the plugin would make\n // this possible.\n const [map, cellAMap, cellBMap] = $computeTableMap(tableNode, anchorCell, focusCell);\n const {\n minColumn,\n maxColumn,\n minRow,\n maxRow\n } = $computeTableCellRectBoundary(map, cellAMap, cellBMap);\n\n // We use a Map here because merged cells in the grid would otherwise\n // show up multiple times in the nodes array\n const nodeMap = new Map([[tableNode.getKey(), tableNode]]);\n let lastRow = null;\n for (let i = minRow; i <= maxRow; i++) {\n for (let j = minColumn; j <= maxColumn; j++) {\n const {\n cell\n } = map[i][j];\n const currentRow = cell.getParent();\n if (!$isTableRowNode(currentRow)) {\n formatDevErrorMessage(`Expected TableCellNode parent to be a TableRowNode`);\n }\n if (currentRow !== lastRow) {\n nodeMap.set(currentRow.getKey(), currentRow);\n lastRow = currentRow;\n }\n if (!nodeMap.has(cell.getKey())) {\n $visitRecursively(cell, childNode => {\n nodeMap.set(childNode.getKey(), childNode);\n });\n }\n }\n }\n const nodes = Array.from(nodeMap.values());\n if (!isCurrentlyReadOnlyMode()) {\n this._cachedNodes = nodes;\n }\n return nodes;\n }\n getTextContent() {\n const nodes = this.getNodes().filter(node => $isTableCellNode(node));\n let textContent = '';\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n const row = node.__parent;\n const nextRow = (nodes[i + 1] || {}).__parent;\n textContent += node.getTextContent() + (nextRow !== row ? '\\n' : '\\t');\n }\n return textContent;\n }\n}\nfunction $isTableSelection(x) {\n return x instanceof TableSelection;\n}\nfunction $createTableSelection() {\n // TODO this is a suboptimal design, it doesn't make sense to have\n // a table selection that isn't associated with a table. This\n // constructor should have required arguments and in true we\n // should check that they point to a table and are element points to\n // cell nodes of that table.\n const anchor = $createPoint('root', 0, 'element');\n const focus = $createPoint('root', 0, 'element');\n return new TableSelection('root', anchor, focus);\n}\nfunction $createTableSelectionFrom(tableNode, anchorCell, focusCell) {\n const tableNodeKey = tableNode.getKey();\n const anchorCellKey = anchorCell.getKey();\n const focusCellKey = focusCell.getKey();\n {\n if (!tableNode.isAttached()) {\n formatDevErrorMessage(`$createTableSelectionFrom: tableNode ${tableNodeKey} is not attached`);\n }\n if (!tableNode.is($findTableNode(anchorCell))) {\n formatDevErrorMessage(`$createTableSelectionFrom: anchorCell ${anchorCellKey} is not in table ${tableNodeKey}`);\n }\n if (!tableNode.is($findTableNode(focusCell))) {\n formatDevErrorMessage(`$createTableSelectionFrom: focusCell ${focusCellKey} is not in table ${tableNodeKey}`);\n } // TODO: Check for rectangular grid\n }\n const prevSelection = $getSelection();\n const nextSelection = $isTableSelection(prevSelection) ? prevSelection.clone() : $createTableSelection();\n nextSelection.set(tableNode.getKey(), anchorCell.getKey(), focusCell.getKey());\n return nextSelection;\n}\n\n/**\n * Depth first visitor\n * @param node The starting node\n * @param $visit The function to call for each node. If the function returns false, then children of this node will not be explored\n */\nfunction $visitRecursively(node, $visit) {\n const stack = [[node]];\n for (let currentArray = stack.at(-1); currentArray !== undefined && stack.length > 0; currentArray = stack.at(-1)) {\n const currentNode = currentArray.pop();\n if (currentNode === undefined) {\n stack.pop();\n } else if ($visit(currentNode) !== false && $isElementNode(currentNode)) {\n stack.push(currentNode.getChildren());\n }\n }\n}\n\nfunction $getTableAndElementByKey(tableNodeKey, editor = $getEditor()) {\n const tableNode = $getNodeByKey(tableNodeKey);\n if (!$isTableNode(tableNode)) {\n formatDevErrorMessage(`TableObserver: Expected tableNodeKey ${tableNodeKey} to be a TableNode`);\n }\n const tableElement = getTableElement(tableNode, editor.getElementByKey(tableNodeKey));\n if (!(tableElement !== null)) {\n formatDevErrorMessage(`TableObserver: Expected to find TableElement in DOM for key ${tableNodeKey}`);\n }\n return {\n tableElement,\n tableNode\n };\n}\nclass TableObserver {\n focusX;\n focusY;\n listenersToRemove;\n table;\n isHighlightingCells;\n anchorX;\n anchorY;\n tableNodeKey;\n anchorCell;\n focusCell;\n anchorCellNodeKey;\n focusCellNodeKey;\n editor;\n tableSelection;\n hasHijackedSelectionStyles;\n isSelecting;\n pointerType;\n shouldCheckSelection;\n abortController;\n listenerOptions;\n nextFocus;\n constructor(editor, tableNodeKey) {\n this.isHighlightingCells = false;\n this.anchorX = -1;\n this.anchorY = -1;\n this.focusX = -1;\n this.focusY = -1;\n this.listenersToRemove = new Set();\n this.tableNodeKey = tableNodeKey;\n this.editor = editor;\n this.table = {\n columns: 0,\n domRows: [],\n rows: 0\n };\n this.tableSelection = null;\n this.anchorCellNodeKey = null;\n this.focusCellNodeKey = null;\n this.anchorCell = null;\n this.focusCell = null;\n this.hasHijackedSelectionStyles = false;\n this.isSelecting = false;\n this.pointerType = null;\n this.shouldCheckSelection = false;\n this.abortController = new AbortController();\n this.listenerOptions = {\n signal: this.abortController.signal\n };\n this.nextFocus = null;\n this.trackTable();\n }\n getTable() {\n return this.table;\n }\n removeListeners() {\n this.abortController.abort('removeListeners');\n Array.from(this.listenersToRemove).forEach(removeListener => removeListener());\n this.listenersToRemove.clear();\n }\n $lookup() {\n return $getTableAndElementByKey(this.tableNodeKey, this.editor);\n }\n trackTable() {\n const observer = new MutationObserver(records => {\n this.editor.getEditorState().read(() => {\n let gridNeedsRedraw = false;\n for (let i = 0; i < records.length; i++) {\n const record = records[i];\n const target = record.target;\n const nodeName = target.nodeName;\n if (nodeName === 'TABLE' || nodeName === 'TBODY' || nodeName === 'THEAD' || nodeName === 'TR') {\n gridNeedsRedraw = true;\n break;\n }\n }\n if (!gridNeedsRedraw) {\n return;\n }\n const {\n tableNode,\n tableElement\n } = this.$lookup();\n this.table = getTable(tableNode, tableElement);\n }, {\n editor: this.editor\n });\n });\n this.editor.getEditorState().read(() => {\n const {\n tableNode,\n tableElement\n } = this.$lookup();\n this.table = getTable(tableNode, tableElement);\n observer.observe(tableElement, {\n attributes: true,\n childList: true,\n subtree: true\n });\n }, {\n editor: this.editor\n });\n }\n $clearHighlight() {\n const editor = this.editor;\n this.isHighlightingCells = false;\n this.anchorX = -1;\n this.anchorY = -1;\n this.focusX = -1;\n this.focusY = -1;\n this.tableSelection = null;\n this.anchorCellNodeKey = null;\n this.focusCellNodeKey = null;\n this.anchorCell = null;\n this.focusCell = null;\n this.hasHijackedSelectionStyles = false;\n this.$enableHighlightStyle();\n const {\n tableNode,\n tableElement\n } = this.$lookup();\n const grid = getTable(tableNode, tableElement);\n $updateDOMForSelection(editor, grid, null);\n if ($getSelection() !== null) {\n $setSelection(null);\n editor.dispatchCommand(SELECTION_CHANGE_COMMAND, undefined);\n }\n }\n $enableHighlightStyle() {\n const editor = this.editor;\n const {\n tableElement\n } = this.$lookup();\n removeClassNamesFromElement(tableElement, editor._config.theme.tableSelection);\n tableElement.classList.remove('disable-selection');\n this.hasHijackedSelectionStyles = false;\n }\n $disableHighlightStyle() {\n const {\n tableElement\n } = this.$lookup();\n addClassNamesToElement(tableElement, this.editor._config.theme.tableSelection);\n this.hasHijackedSelectionStyles = true;\n }\n $updateTableTableSelection(selection) {\n if (selection !== null) {\n if (!(selection.tableKey === this.tableNodeKey)) {\n formatDevErrorMessage(`TableObserver.$updateTableTableSelection: selection.tableKey !== this.tableNodeKey ('${selection.tableKey}' !== '${this.tableNodeKey}')`);\n }\n const editor = this.editor;\n this.tableSelection = selection;\n this.isHighlightingCells = true;\n this.$disableHighlightStyle();\n this.updateDOMSelection();\n $updateDOMForSelection(editor, this.table, this.tableSelection);\n } else {\n this.$clearHighlight();\n }\n }\n\n /**\n * @internal\n * Firefox has a strange behavior where pressing the down arrow key from\n * above the table will move the caret after the table and then lexical\n * will select the last cell instead of the first.\n * We do still want to let the browser handle caret movement but we will\n * use this property to \"tag\" the update so that we can recheck the\n * selection after the event is processed.\n */\n setShouldCheckSelection() {\n this.shouldCheckSelection = true;\n }\n /**\n * @internal\n */\n getAndClearShouldCheckSelection() {\n if (this.shouldCheckSelection) {\n this.shouldCheckSelection = false;\n return true;\n }\n return false;\n }\n\n /**\n * @internal\n * When handling mousemove events we track what the focus cell should be, but\n * the DOM selection may end up somewhere else entirely. We don't have an elegant\n * way to handle this after the DOM selection has been resolved in a\n * SELECTION_CHANGE_COMMAND callback.\n */\n setNextFocus(nextFocus) {\n this.nextFocus = nextFocus;\n }\n\n /** @internal */\n getAndClearNextFocus() {\n const {\n nextFocus\n } = this;\n if (nextFocus !== null) {\n this.nextFocus = null;\n }\n return nextFocus;\n }\n\n /** @internal */\n updateDOMSelection() {\n if (this.anchorCell !== null && this.focusCell !== null) {\n const domSelection = getDOMSelection(this.editor._window);\n // We are not using a native selection for tables, and if we\n // set one then the reconciler will undo it.\n // TODO - it would make sense to have one so that native\n // copy/paste worked. Right now we have to emulate with\n // keyboard events but it won't fire if triggered from the menu\n if (domSelection && domSelection.rangeCount > 0) {\n domSelection.removeAllRanges();\n }\n }\n }\n $setFocusCellForSelection(cell, ignoreStart = false) {\n const editor = this.editor;\n const {\n tableNode\n } = this.$lookup();\n const cellX = cell.x;\n const cellY = cell.y;\n this.focusCell = cell;\n if (!this.isHighlightingCells && (this.anchorX !== cellX || this.anchorY !== cellY || ignoreStart)) {\n this.isHighlightingCells = true;\n this.$disableHighlightStyle();\n } else if (cellX === this.focusX && cellY === this.focusY) {\n return false;\n }\n this.focusX = cellX;\n this.focusY = cellY;\n if (this.isHighlightingCells) {\n const focusTableCellNode = $getNearestTableCellInTableFromDOMNode(tableNode, cell.elem);\n if (this.tableSelection != null && this.anchorCellNodeKey != null && focusTableCellNode !== null) {\n this.focusCellNodeKey = focusTableCellNode.getKey();\n this.tableSelection = $createTableSelectionFrom(tableNode, this.$getAnchorTableCellOrThrow(), focusTableCellNode);\n $setSelection(this.tableSelection);\n editor.dispatchCommand(SELECTION_CHANGE_COMMAND, undefined);\n $updateDOMForSelection(editor, this.table, this.tableSelection);\n return true;\n }\n }\n return false;\n }\n $getAnchorTableCell() {\n return this.anchorCellNodeKey ? $getNodeByKey(this.anchorCellNodeKey) : null;\n }\n $getAnchorTableCellOrThrow() {\n const anchorTableCell = this.$getAnchorTableCell();\n if (!(anchorTableCell !== null)) {\n formatDevErrorMessage(`TableObserver anchorTableCell is null`);\n }\n return anchorTableCell;\n }\n $getFocusTableCell() {\n return this.focusCellNodeKey ? $getNodeByKey(this.focusCellNodeKey) : null;\n }\n $getFocusTableCellOrThrow() {\n const focusTableCell = this.$getFocusTableCell();\n if (!(focusTableCell !== null)) {\n formatDevErrorMessage(`TableObserver focusTableCell is null`);\n }\n return focusTableCell;\n }\n $setAnchorCellForSelection(cell) {\n this.isHighlightingCells = false;\n this.anchorCell = cell;\n this.anchorX = cell.x;\n this.anchorY = cell.y;\n const {\n tableNode\n } = this.$lookup();\n const anchorTableCellNode = $getNearestTableCellInTableFromDOMNode(tableNode, cell.elem);\n if (anchorTableCellNode !== null) {\n const anchorNodeKey = anchorTableCellNode.getKey();\n this.tableSelection = this.tableSelection != null ? this.tableSelection.clone() : $createTableSelection();\n this.anchorCellNodeKey = anchorNodeKey;\n }\n }\n $formatCells(type) {\n const selection = $getSelection();\n if (!$isTableSelection(selection)) {\n formatDevErrorMessage(`Expected Table selection`);\n }\n const formatSelection = $createRangeSelection();\n const anchor = formatSelection.anchor;\n const focus = formatSelection.focus;\n const cellNodes = selection.getNodes().filter($isTableCellNode);\n if (!(cellNodes.length > 0)) {\n formatDevErrorMessage(`No table cells present`);\n }\n const paragraph = cellNodes[0].getFirstChild();\n const alignFormatWith = $isParagraphNode(paragraph) ? paragraph.getFormatFlags(type, null) : null;\n cellNodes.forEach(cellNode => {\n anchor.set(cellNode.getKey(), 0, 'element');\n focus.set(cellNode.getKey(), cellNode.getChildrenSize(), 'element');\n formatSelection.formatText(type, alignFormatWith);\n });\n $setSelection(selection);\n this.editor.dispatchCommand(SELECTION_CHANGE_COMMAND, undefined);\n }\n $clearText() {\n const {\n editor\n } = this;\n const tableNode = $getNodeByKey(this.tableNodeKey);\n if (!$isTableNode(tableNode)) {\n throw new Error('Expected TableNode.');\n }\n const selection = $getSelection();\n if (!$isTableSelection(selection)) {\n formatDevErrorMessage(`Expected TableSelection`);\n }\n const selectedNodes = selection.getNodes().filter($isTableCellNode);\n\n // Check if the entire table is selected by verifying first and last cells\n const firstRow = tableNode.getFirstChild();\n const lastRow = tableNode.getLastChild();\n const isEntireTableSelected = selectedNodes.length > 0 && firstRow !== null && lastRow !== null && $isTableRowNode(firstRow) && $isTableRowNode(lastRow) && selectedNodes[0] === firstRow.getFirstChild() && selectedNodes[selectedNodes.length - 1] === lastRow.getLastChild();\n if (isEntireTableSelected) {\n tableNode.selectPrevious();\n const parent = tableNode.getParent();\n // Delete entire table\n tableNode.remove();\n // Handle case when table was the only node\n if ($isRootNode(parent) && parent.isEmpty()) {\n editor.dispatchCommand(INSERT_PARAGRAPH_COMMAND, undefined);\n }\n return;\n }\n selectedNodes.forEach(cellNode => {\n if ($isElementNode(cellNode)) {\n const paragraphNode = $createParagraphNode();\n const textNode = $createTextNode();\n paragraphNode.append(textNode);\n cellNode.append(paragraphNode);\n cellNode.getChildren().forEach(child => {\n if (child !== paragraphNode) {\n child.remove();\n }\n });\n }\n });\n $updateDOMForSelection(editor, this.table, null);\n $setSelection(null);\n editor.dispatchCommand(SELECTION_CHANGE_COMMAND, undefined);\n }\n}\n\nconst LEXICAL_ELEMENT_KEY = '__lexicalTableSelection';\nconst isPointerDownOnEvent = event => {\n return (event.buttons & 1) === 1;\n};\nfunction isHTMLTableElement(el) {\n return isHTMLElement(el) && el.nodeName === 'TABLE';\n}\nfunction getTableElement(tableNode, dom) {\n if (!dom) {\n return dom;\n }\n const element = isHTMLTableElement(dom) ? dom : tableNode.getDOMSlot(dom).element;\n if (!(element.nodeName === 'TABLE')) {\n formatDevErrorMessage(`getTableElement: Expecting table in as DOM node for TableNode, not ${dom.nodeName}`);\n }\n return element;\n}\nfunction getEditorWindow(editor) {\n return editor._window;\n}\nfunction $findParentTableCellNodeInTable(tableNode, node) {\n for (let currentNode = node, lastTableCellNode = null; currentNode !== null; currentNode = currentNode.getParent()) {\n if (tableNode.is(currentNode)) {\n return lastTableCellNode;\n } else if ($isTableCellNode(currentNode)) {\n lastTableCellNode = currentNode;\n }\n }\n return null;\n}\nconst ARROW_KEY_COMMANDS_WITH_DIRECTION = [[KEY_ARROW_DOWN_COMMAND, 'down'], [KEY_ARROW_UP_COMMAND, 'up'], [KEY_ARROW_LEFT_COMMAND, 'backward'], [KEY_ARROW_RIGHT_COMMAND, 'forward']];\nconst DELETE_TEXT_COMMANDS = [DELETE_WORD_COMMAND, DELETE_LINE_COMMAND, DELETE_CHARACTER_COMMAND];\nconst DELETE_KEY_COMMANDS = [KEY_BACKSPACE_COMMAND, KEY_DELETE_COMMAND];\nfunction applyTableHandlers(tableNode, element, editor, hasTabHandler) {\n const rootElement = editor.getRootElement();\n const editorWindow = getEditorWindow(editor);\n if (!(rootElement !== null && editorWindow !== null)) {\n formatDevErrorMessage(`applyTableHandlers: editor has no root element set`);\n }\n const tableObserver = new TableObserver(editor, tableNode.getKey());\n const tableElement = getTableElement(tableNode, element);\n attachTableObserverToTableElement(tableElement, tableObserver);\n tableObserver.listenersToRemove.add(() => detachTableObserverFromTableElement(tableElement, tableObserver));\n const createPointerHandlers = () => {\n if (tableObserver.isSelecting) {\n return;\n }\n const onPointerUp = () => {\n tableObserver.isSelecting = false;\n editorWindow.removeEventListener('pointerup', onPointerUp);\n editorWindow.removeEventListener('pointermove', onPointerMove);\n };\n const onPointerMove = moveEvent => {\n if (!isPointerDownOnEvent(moveEvent) && tableObserver.isSelecting) {\n tableObserver.isSelecting = false;\n editorWindow.removeEventListener('pointerup', onPointerUp);\n editorWindow.removeEventListener('pointermove', onPointerMove);\n return;\n }\n if (!isDOMNode(moveEvent.target)) {\n return;\n }\n let focusCell = null;\n // In firefox the moveEvent.target may be captured so we must always\n // consult the coordinates #7245\n const override = !(IS_FIREFOX || tableElement.contains(moveEvent.target));\n if (override) {\n focusCell = getDOMCellInTableFromTarget(tableElement, moveEvent.target);\n } else {\n for (const el of document.elementsFromPoint(moveEvent.clientX, moveEvent.clientY)) {\n focusCell = getDOMCellInTableFromTarget(tableElement, el);\n if (focusCell) {\n break;\n }\n }\n }\n if (focusCell && (tableObserver.focusCell === null || focusCell.elem !== tableObserver.focusCell.elem)) {\n tableObserver.setNextFocus({\n focusCell,\n override\n });\n editor.dispatchCommand(SELECTION_CHANGE_COMMAND, undefined);\n }\n };\n tableObserver.isSelecting = true;\n editorWindow.addEventListener('pointerup', onPointerUp, tableObserver.listenerOptions);\n editorWindow.addEventListener('pointermove', onPointerMove, tableObserver.listenerOptions);\n };\n const onPointerDown = event => {\n tableObserver.pointerType = event.pointerType;\n if (event.button !== 0 || !isDOMNode(event.target) || !editorWindow) {\n return;\n }\n const targetCell = getDOMCellFromTarget(event.target);\n if (targetCell !== null) {\n editor.update(() => {\n const prevSelection = $getPreviousSelection();\n // We can't trust Firefox to do the right thing with the selection and\n // we don't have a proper state machine to do this \"correctly\" but\n // if we go ahead and make the table selection now it will work\n if (IS_FIREFOX && event.shiftKey && $isSelectionInTable(prevSelection, tableNode) && ($isRangeSelection(prevSelection) || $isTableSelection(prevSelection))) {\n const prevAnchorNode = prevSelection.anchor.getNode();\n const prevAnchorCell = $findParentTableCellNodeInTable(tableNode, prevSelection.anchor.getNode());\n if (prevAnchorCell) {\n tableObserver.$setAnchorCellForSelection($getObserverCellFromCellNodeOrThrow(tableObserver, prevAnchorCell));\n tableObserver.$setFocusCellForSelection(targetCell);\n stopEvent(event);\n } else {\n const newSelection = tableNode.isBefore(prevAnchorNode) ? tableNode.selectStart() : tableNode.selectEnd();\n newSelection.anchor.set(prevSelection.anchor.key, prevSelection.anchor.offset, prevSelection.anchor.type);\n }\n } else {\n // Only set anchor cell for selection if this is not a simple touch tap\n // Touch taps should not initiate table selection mode\n if (event.pointerType !== 'touch') {\n tableObserver.$setAnchorCellForSelection(targetCell);\n }\n }\n });\n }\n createPointerHandlers();\n };\n tableElement.addEventListener('pointerdown', onPointerDown, tableObserver.listenerOptions);\n tableObserver.listenersToRemove.add(() => {\n tableElement.removeEventListener('pointerdown', onPointerDown);\n });\n const onTripleClick = event => {\n if (event.detail >= 3 && isDOMNode(event.target)) {\n const targetCell = getDOMCellFromTarget(event.target);\n if (targetCell !== null) {\n event.preventDefault();\n }\n }\n };\n tableElement.addEventListener('mousedown', onTripleClick, tableObserver.listenerOptions);\n tableObserver.listenersToRemove.add(() => {\n tableElement.removeEventListener('mousedown', onTripleClick);\n });\n\n // Clear selection when clicking outside of dom.\n const pointerDownCallback = event => {\n const target = event.target;\n if (event.button !== 0 || !isDOMNode(target)) {\n return;\n }\n editor.update(() => {\n const selection = $getSelection();\n if ($isTableSelection(selection) && selection.tableKey === tableObserver.tableNodeKey && rootElement.contains(target)) {\n tableObserver.$clearHighlight();\n }\n });\n };\n editorWindow.addEventListener('pointerdown', pointerDownCallback, tableObserver.listenerOptions);\n tableObserver.listenersToRemove.add(() => {\n editorWindow.removeEventListener('pointerdown', pointerDownCallback);\n });\n for (const [command, direction] of ARROW_KEY_COMMANDS_WITH_DIRECTION) {\n tableObserver.listenersToRemove.add(editor.registerCommand(command, event => $handleArrowKey(editor, event, direction, tableNode, tableObserver), COMMAND_PRIORITY_HIGH));\n }\n tableObserver.listenersToRemove.add(editor.registerCommand(KEY_ESCAPE_COMMAND, event => {\n const selection = $getSelection();\n if ($isTableSelection(selection)) {\n const focusCellNode = $findParentTableCellNodeInTable(tableNode, selection.focus.getNode());\n if (focusCellNode !== null) {\n stopEvent(event);\n focusCellNode.selectEnd();\n return true;\n }\n }\n return false;\n }, COMMAND_PRIORITY_HIGH));\n const deleteTextHandler = command => () => {\n const selection = $getSelection();\n if (!$isSelectionInTable(selection, tableNode)) {\n return false;\n }\n if ($isTableSelection(selection)) {\n tableObserver.$clearText();\n return true;\n } else if ($isRangeSelection(selection)) {\n const tableCellNode = $findParentTableCellNodeInTable(tableNode, selection.anchor.getNode());\n if (!$isTableCellNode(tableCellNode)) {\n return false;\n }\n const anchorNode = selection.anchor.getNode();\n const focusNode = selection.focus.getNode();\n const isAnchorInside = tableNode.isParentOf(anchorNode);\n const isFocusInside = tableNode.isParentOf(focusNode);\n const selectionContainsPartialTable = isAnchorInside && !isFocusInside || isFocusInside && !isAnchorInside;\n if (selectionContainsPartialTable) {\n tableObserver.$clearText();\n return true;\n }\n const nearestElementNode = $findMatchingParent(selection.anchor.getNode(), n => $isElementNode(n));\n const topLevelCellElementNode = nearestElementNode && $findMatchingParent(nearestElementNode, n => $isElementNode(n) && $isTableCellNode(n.getParent()));\n if (!$isElementNode(topLevelCellElementNode) || !$isElementNode(nearestElementNode)) {\n return false;\n }\n if (command === DELETE_LINE_COMMAND && topLevelCellElementNode.getPreviousSibling() === null) {\n // TODO: Fix Delete Line in Table Cells.\n return true;\n }\n }\n return false;\n };\n for (const command of DELETE_TEXT_COMMANDS) {\n tableObserver.listenersToRemove.add(editor.registerCommand(command, deleteTextHandler(command), COMMAND_PRIORITY_HIGH));\n }\n const $deleteCellHandler = event => {\n const selection = $getSelection();\n if (!($isTableSelection(selection) || $isRangeSelection(selection))) {\n return false;\n }\n\n // If the selection is inside the table but should remove the whole table\n // we expand the selection so that both the anchor and focus are outside\n // the table and the editor's command listener will handle the delete\n const isAnchorInside = tableNode.isParentOf(selection.anchor.getNode());\n const isFocusInside = tableNode.isParentOf(selection.focus.getNode());\n if (isAnchorInside !== isFocusInside) {\n const tablePoint = isAnchorInside ? 'anchor' : 'focus';\n const outerPoint = isAnchorInside ? 'focus' : 'anchor';\n // Preserve the outer point\n const {\n key,\n offset,\n type\n } = selection[outerPoint];\n // Expand the selection around the table\n const newSelection = tableNode[selection[tablePoint].isBefore(selection[outerPoint]) ? 'selectPrevious' : 'selectNext']();\n // Restore the outer point of the selection\n newSelection[outerPoint].set(key, offset, type);\n // Let the base implementation handle the rest\n return false;\n }\n if (!$isSelectionInTable(selection, tableNode)) {\n return false;\n }\n if ($isTableSelection(selection)) {\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n }\n tableObserver.$clearText();\n return true;\n }\n return false;\n };\n for (const command of DELETE_KEY_COMMANDS) {\n tableObserver.listenersToRemove.add(editor.registerCommand(command, $deleteCellHandler, COMMAND_PRIORITY_HIGH));\n }\n tableObserver.listenersToRemove.add(editor.registerCommand(CUT_COMMAND, event => {\n const selection = $getSelection();\n if (selection) {\n if (!($isTableSelection(selection) || $isRangeSelection(selection))) {\n return false;\n }\n // Copying to the clipboard is async so we must capture the data\n // before we delete it\n void copyToClipboard(editor, objectKlassEquals(event, ClipboardEvent) ? event : null, $getClipboardDataFromSelection(selection));\n const intercepted = $deleteCellHandler(event);\n if ($isRangeSelection(selection)) {\n selection.removeText();\n return true;\n }\n return intercepted;\n }\n return false;\n }, COMMAND_PRIORITY_HIGH));\n tableObserver.listenersToRemove.add(editor.registerCommand(FORMAT_TEXT_COMMAND, payload => {\n const selection = $getSelection();\n if (!$isSelectionInTable(selection, tableNode)) {\n return false;\n }\n if ($isTableSelection(selection)) {\n tableObserver.$formatCells(payload);\n return true;\n } else if ($isRangeSelection(selection)) {\n const tableCellNode = $findMatchingParent(selection.anchor.getNode(), n => $isTableCellNode(n));\n if (!$isTableCellNode(tableCellNode)) {\n return false;\n }\n }\n return false;\n }, COMMAND_PRIORITY_HIGH));\n tableObserver.listenersToRemove.add(editor.registerCommand(FORMAT_ELEMENT_COMMAND, formatType => {\n const selection = $getSelection();\n if (!$isTableSelection(selection) || !$isSelectionInTable(selection, tableNode)) {\n return false;\n }\n const anchorNode = selection.anchor.getNode();\n const focusNode = selection.focus.getNode();\n if (!$isTableCellNode(anchorNode) || !$isTableCellNode(focusNode)) {\n return false;\n }\n\n // Align the table if the entire table is selected\n if ($isFullTableSelection(selection, tableNode)) {\n tableNode.setFormat(formatType);\n return true;\n }\n const [tableMap, anchorCell, focusCell] = $computeTableMap(tableNode, anchorNode, focusNode);\n const maxRow = Math.max(anchorCell.startRow + anchorCell.cell.__rowSpan - 1, focusCell.startRow + focusCell.cell.__rowSpan - 1);\n const maxColumn = Math.max(anchorCell.startColumn + anchorCell.cell.__colSpan - 1, focusCell.startColumn + focusCell.cell.__colSpan - 1);\n const minRow = Math.min(anchorCell.startRow, focusCell.startRow);\n const minColumn = Math.min(anchorCell.startColumn, focusCell.startColumn);\n const visited = new Set();\n for (let i = minRow; i <= maxRow; i++) {\n for (let j = minColumn; j <= maxColumn; j++) {\n const cell = tableMap[i][j].cell;\n if (visited.has(cell)) {\n continue;\n }\n visited.add(cell);\n cell.setFormat(formatType);\n const cellChildren = cell.getChildren();\n for (let k = 0; k < cellChildren.length; k++) {\n const child = cellChildren[k];\n if ($isElementNode(child) && !child.isInline()) {\n child.setFormat(formatType);\n }\n }\n }\n }\n return true;\n }, COMMAND_PRIORITY_HIGH));\n tableObserver.listenersToRemove.add(editor.registerCommand(CONTROLLED_TEXT_INSERTION_COMMAND, payload => {\n const selection = $getSelection();\n if (!$isSelectionInTable(selection, tableNode)) {\n return false;\n }\n if ($isTableSelection(selection)) {\n tableObserver.$clearHighlight();\n return false;\n } else if ($isRangeSelection(selection)) {\n const tableCellNode = $findMatchingParent(selection.anchor.getNode(), n => $isTableCellNode(n));\n if (!$isTableCellNode(tableCellNode)) {\n return false;\n }\n if (typeof payload === 'string') {\n const edgePosition = $getTableEdgeCursorPosition(editor, selection, tableNode);\n if (edgePosition) {\n $insertParagraphAtTableEdge(edgePosition, tableNode, [$createTextNode(payload)]);\n return true;\n }\n }\n }\n return false;\n }, COMMAND_PRIORITY_HIGH));\n if (hasTabHandler) {\n tableObserver.listenersToRemove.add(editor.registerCommand(KEY_TAB_COMMAND, event => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection) || !selection.isCollapsed() || !$isSelectionInTable(selection, tableNode)) {\n return false;\n }\n const tableCellNode = $findCellNode(selection.anchor.getNode());\n if (tableCellNode === null || !tableNode.is($findTableNode(tableCellNode))) {\n return false;\n }\n stopEvent(event);\n $selectAdjacentCell(tableCellNode, event.shiftKey ? 'previous' : 'next');\n return true;\n }, COMMAND_PRIORITY_HIGH));\n }\n tableObserver.listenersToRemove.add(editor.registerCommand(FOCUS_COMMAND, payload => {\n return tableNode.isSelected();\n }, COMMAND_PRIORITY_HIGH));\n tableObserver.listenersToRemove.add(editor.registerCommand(SELECTION_INSERT_CLIPBOARD_NODES_COMMAND, (selectionPayload, dispatchEditor) => {\n if (editor !== dispatchEditor) {\n return false;\n }\n const {\n nodes,\n selection\n } = selectionPayload;\n const anchorAndFocus = selection.getStartEndPoints();\n const isTableSelection = $isTableSelection(selection);\n const isRangeSelection = $isRangeSelection(selection);\n const isSelectionInsideOfGrid = isRangeSelection && $findMatchingParent(selection.anchor.getNode(), n => $isTableCellNode(n)) !== null && $findMatchingParent(selection.focus.getNode(), n => $isTableCellNode(n)) !== null || isTableSelection;\n if (nodes.length !== 1 || !$isTableNode(nodes[0]) || !isSelectionInsideOfGrid || anchorAndFocus === null) {\n return false;\n }\n const [anchor, focus] = anchorAndFocus;\n const [anchorCellNode, anchorRowNode, gridNode] = $getNodeTriplet(anchor);\n const focusCellNode = $findMatchingParent(focus.getNode(), n => $isTableCellNode(n));\n if (!$isTableCellNode(anchorCellNode) || !$isTableCellNode(focusCellNode) || !$isTableRowNode(anchorRowNode) || !$isTableNode(gridNode)) {\n return false;\n }\n const templateGrid = nodes[0];\n const [initialGridMap, anchorCellMap, focusCellMap] = $computeTableMap(gridNode, anchorCellNode, focusCellNode);\n const [templateGridMap] = $computeTableMapSkipCellCheck(templateGrid, null, null);\n const initialRowCount = initialGridMap.length;\n const initialColCount = initialRowCount > 0 ? initialGridMap[0].length : 0;\n\n // If we have a range selection, we'll fit the template grid into the\n // table, growing the table if necessary.\n let startRow = anchorCellMap.startRow;\n let startCol = anchorCellMap.startColumn;\n let affectedRowCount = templateGridMap.length;\n let affectedColCount = affectedRowCount > 0 ? templateGridMap[0].length : 0;\n if (isTableSelection) {\n // If we have a table selection, we'll only modify the cells within\n // the selection boundary.\n const selectionBoundary = $computeTableCellRectBoundary(initialGridMap, anchorCellMap, focusCellMap);\n const selectionRowCount = selectionBoundary.maxRow - selectionBoundary.minRow + 1;\n const selectionColCount = selectionBoundary.maxColumn - selectionBoundary.minColumn + 1;\n startRow = selectionBoundary.minRow;\n startCol = selectionBoundary.minColumn;\n affectedRowCount = Math.min(affectedRowCount, selectionRowCount);\n affectedColCount = Math.min(affectedColCount, selectionColCount);\n }\n\n // Step 1: Unmerge all merged cells within the affected area\n let didPerformMergeOperations = false;\n const lastRowForUnmerge = Math.min(initialRowCount, startRow + affectedRowCount) - 1;\n const lastColForUnmerge = Math.min(initialColCount, startCol + affectedColCount) - 1;\n const unmergedKeys = new Set();\n for (let row = startRow; row <= lastRowForUnmerge; row++) {\n for (let col = startCol; col <= lastColForUnmerge; col++) {\n const cellMap = initialGridMap[row][col];\n if (unmergedKeys.has(cellMap.cell.getKey())) {\n continue; // cell was a merged cell that was already handled\n }\n if (cellMap.cell.__rowSpan === 1 && cellMap.cell.__colSpan === 1) {\n continue; // cell is not a merged cell\n }\n $unmergeCellNode(cellMap.cell);\n unmergedKeys.add(cellMap.cell.getKey());\n didPerformMergeOperations = true;\n }\n }\n let [interimGridMap] = $computeTableMapSkipCellCheck(gridNode.getWritable(), null, null);\n\n // Step 2: Expand current table (if needed)\n const rowsToInsert = affectedRowCount - initialRowCount + startRow;\n for (let i = 0; i < rowsToInsert; i++) {\n const cellMap = interimGridMap[initialRowCount - 1][0];\n $insertTableRowAtNode(cellMap.cell);\n }\n const colsToInsert = affectedColCount - initialColCount + startCol;\n for (let i = 0; i < colsToInsert; i++) {\n const cellMap = interimGridMap[0][initialColCount - 1];\n $insertTableColumnAtNode(cellMap.cell, true, false);\n }\n [interimGridMap] = $computeTableMapSkipCellCheck(gridNode.getWritable(), null, null);\n\n // Step 3: Merge cells and set cell content, to match template grid\n for (let row = startRow; row < startRow + affectedRowCount; row++) {\n for (let col = startCol; col < startCol + affectedColCount; col++) {\n const templateRow = row - startRow;\n const templateCol = col - startCol;\n const templateCellMap = templateGridMap[templateRow][templateCol];\n if (templateCellMap.startRow !== templateRow || templateCellMap.startColumn !== templateCol) {\n continue; // cell is a merged cell that was already handled\n }\n const templateCell = templateCellMap.cell;\n if (templateCell.__rowSpan !== 1 || templateCell.__colSpan !== 1) {\n const cellsToMerge = [];\n const lastRowForMerge = Math.min(row + templateCell.__rowSpan, startRow + affectedRowCount) - 1;\n const lastColForMerge = Math.min(col + templateCell.__colSpan, startCol + affectedColCount) - 1;\n for (let r = row; r <= lastRowForMerge; r++) {\n for (let c = col; c <= lastColForMerge; c++) {\n const cellMap = interimGridMap[r][c];\n cellsToMerge.push(cellMap.cell);\n }\n }\n $mergeCells(cellsToMerge);\n didPerformMergeOperations = true;\n }\n const {\n cell\n } = interimGridMap[row][col];\n const originalChildren = cell.getChildren();\n templateCell.getChildren().forEach(child => {\n if ($isTextNode(child)) {\n const paragraphNode = $createParagraphNode();\n paragraphNode.append(child);\n cell.append(child);\n } else {\n cell.append(child);\n }\n });\n originalChildren.forEach(n => n.remove());\n }\n }\n if (isTableSelection && didPerformMergeOperations) {\n // reset the table selection in case the anchor or focus cell was\n // removed via merge operations\n const [finalGridMap] = $computeTableMapSkipCellCheck(gridNode.getWritable(), null, null);\n const newAnchorCellMap = finalGridMap[anchorCellMap.startRow][anchorCellMap.startColumn];\n newAnchorCellMap.cell.selectEnd();\n }\n return true;\n }, COMMAND_PRIORITY_HIGH));\n tableObserver.listenersToRemove.add(editor.registerCommand(SELECTION_CHANGE_COMMAND, () => {\n const selection = $getSelection();\n const prevSelection = $getPreviousSelection();\n const nextFocus = tableObserver.getAndClearNextFocus();\n if (nextFocus !== null) {\n const {\n focusCell\n } = nextFocus;\n if ($isTableSelection(selection) && selection.tableKey === tableObserver.tableNodeKey) {\n if (focusCell.x === tableObserver.focusX && focusCell.y === tableObserver.focusY) {\n // The selection is already the correct table selection\n return false;\n } else {\n tableObserver.$setFocusCellForSelection(focusCell);\n return true;\n }\n } else if (focusCell !== tableObserver.anchorCell && $isSelectionInTable(selection, tableNode)) {\n // The selection has crossed cells\n tableObserver.$setFocusCellForSelection(focusCell);\n return true;\n }\n }\n const shouldCheckSelection = tableObserver.getAndClearShouldCheckSelection();\n // If they pressed the down arrow with the selection outside of the\n // table, and then the selection ends up in the table but not in the\n // first cell, then move the selection to the first cell.\n if (shouldCheckSelection && $isRangeSelection(prevSelection) && $isRangeSelection(selection) && selection.isCollapsed()) {\n const anchor = selection.anchor.getNode();\n const firstRow = tableNode.getFirstChild();\n const anchorCell = $findCellNode(anchor);\n if (anchorCell !== null && $isTableRowNode(firstRow)) {\n const firstCell = firstRow.getFirstChild();\n if ($isTableCellNode(firstCell) && tableNode.is($findMatchingParent(anchorCell, node => node.is(tableNode) || node.is(firstCell)))) {\n // The selection moved to the table, but not in the first cell\n firstCell.selectStart();\n return true;\n }\n }\n }\n if ($isRangeSelection(selection)) {\n const {\n anchor,\n focus\n } = selection;\n const anchorNode = anchor.getNode();\n const focusNode = focus.getNode();\n // Using explicit comparison with table node to ensure it's not a nested table\n // as in that case we'll leave selection resolving to that table\n const anchorCellNode = $findCellNode(anchorNode);\n const focusCellNode = $findCellNode(focusNode);\n const isAnchorInside = !!(anchorCellNode && tableNode.is($findTableNode(anchorCellNode)));\n const isFocusInside = !!(focusCellNode && tableNode.is($findTableNode(focusCellNode)));\n const isPartiallyWithinTable = isAnchorInside !== isFocusInside;\n const isWithinTable = isAnchorInside && isFocusInside;\n const isBackward = selection.isBackward();\n if (isPartiallyWithinTable) {\n const newSelection = selection.clone();\n if (isFocusInside) {\n const [tableMap] = $computeTableMap(tableNode, focusCellNode, focusCellNode);\n const firstCell = tableMap[0][0].cell;\n const lastCell = tableMap[tableMap.length - 1].at(-1).cell;\n newSelection.focus.set(isBackward ? firstCell.getKey() : lastCell.getKey(), isBackward ? firstCell.getChildrenSize() : lastCell.getChildrenSize(), 'element');\n } else if (isAnchorInside) {\n const [tableMap] = $computeTableMap(tableNode, anchorCellNode, anchorCellNode);\n const firstCell = tableMap[0][0].cell;\n const lastCell = tableMap[tableMap.length - 1].at(-1).cell;\n /**\n * If isBackward, set the anchor to be at the end of the table so that when the cursor moves outside of\n * the table in the backward direction, the entire table will be selected from its end.\n * Otherwise, if forward, set the anchor to be at the start of the table so that when the focus is dragged\n * outside th end of the table, it will start from the beginning of the table.\n */\n newSelection.anchor.set(isBackward ? lastCell.getKey() : firstCell.getKey(), isBackward ? lastCell.getChildrenSize() : 0, 'element');\n }\n $setSelection(newSelection);\n $addHighlightStyleToTable(editor, tableObserver);\n } else if (isWithinTable) {\n // Handle case when selection spans across multiple cells but still\n // has range selection, then we convert it into table selection\n if (!anchorCellNode.is(focusCellNode)) {\n tableObserver.$setAnchorCellForSelection($getObserverCellFromCellNodeOrThrow(tableObserver, anchorCellNode));\n tableObserver.$setFocusCellForSelection($getObserverCellFromCellNodeOrThrow(tableObserver, focusCellNode), true);\n }\n\n // Handle case when the pointer type is touch and the current and\n // previous selection are collapsed, and the previous anchor and current\n // focus cell nodes are different, then we convert it into table selection\n // However, only do this if the table observer is actively selecting (user dragging)\n // to prevent unwanted selections when simply tapping between cells on mobile\n if (tableObserver.pointerType === 'touch' && tableObserver.isSelecting && selection.isCollapsed() && $isRangeSelection(prevSelection) && prevSelection.isCollapsed()) {\n const prevAnchorCellNode = $findCellNode(prevSelection.anchor.getNode());\n if (prevAnchorCellNode && !prevAnchorCellNode.is(focusCellNode)) {\n tableObserver.$setAnchorCellForSelection($getObserverCellFromCellNodeOrThrow(tableObserver, prevAnchorCellNode));\n tableObserver.$setFocusCellForSelection($getObserverCellFromCellNodeOrThrow(tableObserver, focusCellNode), true);\n tableObserver.pointerType = null;\n }\n }\n }\n } else if (selection && $isTableSelection(selection) && selection.is(prevSelection) && selection.tableKey === tableNode.getKey()) {\n // if selection goes outside of the table we need to change it to Range selection\n const domSelection = getDOMSelection(editorWindow);\n if (domSelection && domSelection.anchorNode && domSelection.focusNode) {\n const focusNode = $getNearestNodeFromDOMNode(domSelection.focusNode);\n const isFocusOutside = focusNode && !tableNode.isParentOf(focusNode);\n const anchorNode = $getNearestNodeFromDOMNode(domSelection.anchorNode);\n const isAnchorInside = anchorNode && tableNode.isParentOf(anchorNode);\n if (isFocusOutside && isAnchorInside && domSelection.rangeCount > 0) {\n const newSelection = $createRangeSelectionFromDom(domSelection, editor);\n if (newSelection) {\n newSelection.anchor.set(tableNode.getKey(), selection.isBackward() ? tableNode.getChildrenSize() : 0, 'element');\n domSelection.removeAllRanges();\n $setSelection(newSelection);\n }\n }\n }\n }\n if (selection && !selection.is(prevSelection) && ($isTableSelection(selection) || $isTableSelection(prevSelection)) && tableObserver.tableSelection && !tableObserver.tableSelection.is(prevSelection)) {\n if ($isTableSelection(selection) && selection.tableKey === tableObserver.tableNodeKey) {\n tableObserver.$updateTableTableSelection(selection);\n } else if (!$isTableSelection(selection) && $isTableSelection(prevSelection) && prevSelection.tableKey === tableObserver.tableNodeKey) {\n tableObserver.$updateTableTableSelection(null);\n }\n return false;\n }\n if (tableObserver.hasHijackedSelectionStyles && !tableNode.isSelected()) {\n $removeHighlightStyleToTable(editor, tableObserver);\n } else if (!tableObserver.hasHijackedSelectionStyles && tableNode.isSelected()) {\n $addHighlightStyleToTable(editor, tableObserver);\n }\n return false;\n }, COMMAND_PRIORITY_HIGH));\n tableObserver.listenersToRemove.add(editor.registerCommand(INSERT_PARAGRAPH_COMMAND, () => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection) || !selection.isCollapsed() || !$isSelectionInTable(selection, tableNode)) {\n return false;\n }\n const edgePosition = $getTableEdgeCursorPosition(editor, selection, tableNode);\n if (edgePosition) {\n $insertParagraphAtTableEdge(edgePosition, tableNode);\n return true;\n }\n return false;\n }, COMMAND_PRIORITY_HIGH));\n return tableObserver;\n}\nfunction detachTableObserverFromTableElement(tableElement, tableObserver) {\n if (getTableObserverFromTableElement(tableElement) === tableObserver) {\n delete tableElement[LEXICAL_ELEMENT_KEY];\n }\n}\nfunction attachTableObserverToTableElement(tableElement, tableObserver) {\n if (!(getTableObserverFromTableElement(tableElement) === null)) {\n formatDevErrorMessage(`tableElement already has an attached TableObserver`);\n }\n tableElement[LEXICAL_ELEMENT_KEY] = tableObserver;\n}\nfunction getTableObserverFromTableElement(tableElement) {\n return tableElement[LEXICAL_ELEMENT_KEY] || null;\n}\nfunction getDOMCellFromTarget(node) {\n let currentNode = node;\n while (currentNode != null) {\n const nodeName = currentNode.nodeName;\n if (nodeName === 'TD' || nodeName === 'TH') {\n // @ts-expect-error: internal field\n const cell = currentNode._cell;\n if (cell === undefined) {\n return null;\n }\n return cell;\n }\n currentNode = currentNode.parentNode;\n }\n return null;\n}\nfunction getDOMCellInTableFromTarget(table, node) {\n if (!table.contains(node)) {\n return null;\n }\n let cell = null;\n for (let currentNode = node; currentNode != null; currentNode = currentNode.parentNode) {\n if (currentNode === table) {\n return cell;\n }\n const nodeName = currentNode.nodeName;\n if (nodeName === 'TD' || nodeName === 'TH') {\n // @ts-expect-error: internal field\n cell = currentNode._cell || null;\n }\n }\n return null;\n}\nfunction getTable(tableNode, dom) {\n const tableElement = getTableElement(tableNode, dom);\n const domRows = [];\n const grid = {\n columns: 0,\n domRows,\n rows: 0\n };\n let currentNode = tableElement.querySelector('tr');\n let x = 0;\n let y = 0;\n domRows.length = 0;\n while (currentNode != null) {\n const nodeMame = currentNode.nodeName;\n if (nodeMame === 'TD' || nodeMame === 'TH') {\n const elem = currentNode;\n const cell = {\n elem,\n hasBackgroundColor: elem.style.backgroundColor !== '',\n highlighted: false,\n x,\n y\n };\n\n // @ts-expect-error: internal field\n currentNode._cell = cell;\n let row = domRows[y];\n if (row === undefined) {\n row = domRows[y] = [];\n }\n row[x] = cell;\n } else {\n const child = currentNode.firstChild;\n if (child != null) {\n currentNode = child;\n continue;\n }\n }\n const sibling = currentNode.nextSibling;\n if (sibling != null) {\n x++;\n currentNode = sibling;\n continue;\n }\n const parent = currentNode.parentNode;\n if (parent != null) {\n const parentSibling = parent.nextSibling;\n if (parentSibling == null) {\n break;\n }\n y++;\n x = 0;\n currentNode = parentSibling;\n }\n }\n grid.columns = x + 1;\n grid.rows = y + 1;\n return grid;\n}\nfunction $updateDOMForSelection(editor, table, selection) {\n const selectedCellNodes = new Set(selection ? selection.getNodes() : []);\n $forEachTableCell(table, (cell, lexicalNode) => {\n const elem = cell.elem;\n if (selectedCellNodes.has(lexicalNode)) {\n cell.highlighted = true;\n $addHighlightToDOM(editor, cell);\n } else {\n cell.highlighted = false;\n $removeHighlightFromDOM(editor, cell);\n if (!elem.getAttribute('style')) {\n elem.removeAttribute('style');\n }\n }\n });\n}\nfunction $forEachTableCell(grid, cb) {\n const {\n domRows\n } = grid;\n for (let y = 0; y < domRows.length; y++) {\n const row = domRows[y];\n if (!row) {\n continue;\n }\n for (let x = 0; x < row.length; x++) {\n const cell = row[x];\n if (!cell) {\n continue;\n }\n const lexicalNode = $getNearestNodeFromDOMNode(cell.elem);\n if (lexicalNode !== null) {\n cb(cell, lexicalNode, {\n x,\n y\n });\n }\n }\n }\n}\nfunction $addHighlightStyleToTable(editor, tableSelection) {\n tableSelection.$disableHighlightStyle();\n $forEachTableCell(tableSelection.table, cell => {\n cell.highlighted = true;\n $addHighlightToDOM(editor, cell);\n });\n}\nfunction $removeHighlightStyleToTable(editor, tableObserver) {\n tableObserver.$enableHighlightStyle();\n $forEachTableCell(tableObserver.table, cell => {\n const elem = cell.elem;\n cell.highlighted = false;\n $removeHighlightFromDOM(editor, cell);\n if (!elem.getAttribute('style')) {\n elem.removeAttribute('style');\n }\n });\n}\nfunction $selectAdjacentCell(tableCellNode, direction) {\n const siblingMethod = direction === 'next' ? 'getNextSibling' : 'getPreviousSibling';\n const childMethod = direction === 'next' ? 'getFirstChild' : 'getLastChild';\n const sibling = tableCellNode[siblingMethod]();\n if ($isElementNode(sibling)) {\n return sibling.selectEnd();\n }\n const parentRow = $findMatchingParent(tableCellNode, $isTableRowNode);\n if (!(parentRow !== null)) {\n formatDevErrorMessage(`selectAdjacentCell: Cell not in table row`);\n }\n for (let nextRow = parentRow[siblingMethod](); $isTableRowNode(nextRow); nextRow = nextRow[siblingMethod]()) {\n const child = nextRow[childMethod]();\n if ($isElementNode(child)) {\n return child.selectEnd();\n }\n }\n const parentTable = $findMatchingParent(parentRow, $isTableNode);\n if (!(parentTable !== null)) {\n formatDevErrorMessage(`selectAdjacentCell: Row not in table`);\n }\n return direction === 'next' ? parentTable.selectNext() : parentTable.selectPrevious();\n}\nconst selectTableNodeInDirection = (tableObserver, tableNode, x, y, direction) => {\n const isForward = direction === 'forward';\n switch (direction) {\n case 'backward':\n case 'forward':\n if (x !== (isForward ? tableObserver.table.columns - 1 : 0)) {\n selectTableCellNode(tableNode.getCellNodeFromCordsOrThrow(x + (isForward ? 1 : -1), y, tableObserver.table), isForward);\n } else {\n if (y !== (isForward ? tableObserver.table.rows - 1 : 0)) {\n selectTableCellNode(tableNode.getCellNodeFromCordsOrThrow(isForward ? 0 : tableObserver.table.columns - 1, y + (isForward ? 1 : -1), tableObserver.table), isForward);\n } else if (!isForward) {\n tableNode.selectPrevious();\n } else {\n tableNode.selectNext();\n }\n }\n return true;\n case 'up':\n if (y !== 0) {\n selectTableCellNode(tableNode.getCellNodeFromCordsOrThrow(x, y - 1, tableObserver.table), false);\n } else {\n tableNode.selectPrevious();\n }\n return true;\n case 'down':\n if (y !== tableObserver.table.rows - 1) {\n selectTableCellNode(tableNode.getCellNodeFromCordsOrThrow(x, y + 1, tableObserver.table), true);\n } else {\n tableNode.selectNext();\n }\n return true;\n default:\n return false;\n }\n};\nfunction getCorner(rect, cellValue) {\n let colName;\n let rowName;\n if (cellValue.startColumn === rect.minColumn) {\n colName = 'minColumn';\n } else if (cellValue.startColumn + cellValue.cell.__colSpan - 1 === rect.maxColumn) {\n colName = 'maxColumn';\n } else {\n return null;\n }\n if (cellValue.startRow === rect.minRow) {\n rowName = 'minRow';\n } else if (cellValue.startRow + cellValue.cell.__rowSpan - 1 === rect.maxRow) {\n rowName = 'maxRow';\n } else {\n return null;\n }\n return [colName, rowName];\n}\nfunction getCornerOrThrow(rect, cellValue) {\n const corner = getCorner(rect, cellValue);\n if (!(corner !== null)) {\n formatDevErrorMessage(`getCornerOrThrow: cell ${cellValue.cell.getKey()} is not at a corner of rect`);\n }\n return corner;\n}\nfunction oppositeCorner([colName, rowName]) {\n return [colName === 'minColumn' ? 'maxColumn' : 'minColumn', rowName === 'minRow' ? 'maxRow' : 'minRow'];\n}\nfunction cellAtCornerOrThrow(tableMap, rect, [colName, rowName]) {\n const rowNum = rect[rowName];\n const rowMap = tableMap[rowNum];\n if (!(rowMap !== undefined)) {\n formatDevErrorMessage(`cellAtCornerOrThrow: ${rowName} = ${String(rowNum)} missing in tableMap`);\n }\n const colNum = rect[colName];\n const cell = rowMap[colNum];\n if (!(cell !== undefined)) {\n formatDevErrorMessage(`cellAtCornerOrThrow: ${colName} = ${String(colNum)} missing in tableMap`);\n }\n return cell;\n}\nfunction $extractRectCorners(tableMap, anchorCellValue, newFocusCellValue) {\n // We are sure that the focus now either contracts or expands the rect\n // but both the anchor and focus might be moved to ensure a rectangle\n // given a potentially ragged merge shape\n const rect = $computeTableCellRectBoundary(tableMap, anchorCellValue, newFocusCellValue);\n const anchorCorner = getCorner(rect, anchorCellValue);\n if (anchorCorner) {\n return [cellAtCornerOrThrow(tableMap, rect, anchorCorner), cellAtCornerOrThrow(tableMap, rect, oppositeCorner(anchorCorner))];\n }\n const newFocusCorner = getCorner(rect, newFocusCellValue);\n if (newFocusCorner) {\n return [cellAtCornerOrThrow(tableMap, rect, oppositeCorner(newFocusCorner)), cellAtCornerOrThrow(tableMap, rect, newFocusCorner)];\n }\n // TODO this doesn't have to be arbitrary, use the closest corner instead\n const newAnchorCorner = ['minColumn', 'minRow'];\n return [cellAtCornerOrThrow(tableMap, rect, newAnchorCorner), cellAtCornerOrThrow(tableMap, rect, oppositeCorner(newAnchorCorner))];\n}\nfunction $adjustFocusInDirection(tableObserver, tableMap, anchorCellValue, focusCellValue, direction) {\n const rect = $computeTableCellRectBoundary(tableMap, anchorCellValue, focusCellValue);\n const spans = $computeTableCellRectSpans(tableMap, rect);\n const {\n topSpan,\n leftSpan,\n bottomSpan,\n rightSpan\n } = spans;\n const anchorCorner = getCornerOrThrow(rect, anchorCellValue);\n const [focusColumn, focusRow] = oppositeCorner(anchorCorner);\n let fCol = rect[focusColumn];\n let fRow = rect[focusRow];\n if (direction === 'forward') {\n fCol += focusColumn === 'maxColumn' ? 1 : leftSpan;\n } else if (direction === 'backward') {\n fCol -= focusColumn === 'minColumn' ? 1 : rightSpan;\n } else if (direction === 'down') {\n fRow += focusRow === 'maxRow' ? 1 : topSpan;\n } else if (direction === 'up') {\n fRow -= focusRow === 'minRow' ? 1 : bottomSpan;\n }\n const targetRowMap = tableMap[fRow];\n if (targetRowMap === undefined) {\n return false;\n }\n const newFocusCellValue = targetRowMap[fCol];\n if (newFocusCellValue === undefined) {\n return false;\n }\n // We can be certain that anchorCellValue and newFocusCellValue are\n // contained within the desired selection, but we are not certain if\n // they need to be expanded or not to maintain a rectangular shape\n const [finalAnchorCell, finalFocusCell] = $extractRectCorners(tableMap, anchorCellValue, newFocusCellValue);\n const anchorDOM = $getObserverCellFromCellNodeOrThrow(tableObserver, finalAnchorCell.cell);\n const focusDOM = $getObserverCellFromCellNodeOrThrow(tableObserver, finalFocusCell.cell);\n tableObserver.$setAnchorCellForSelection(anchorDOM);\n tableObserver.$setFocusCellForSelection(focusDOM, true);\n return true;\n}\nfunction $isSelectionInTable(selection, tableNode) {\n if ($isRangeSelection(selection) || $isTableSelection(selection)) {\n // TODO this should probably return false if there's an unrelated\n // shadow root between the node and the table (e.g. another table,\n // collapsible, etc.)\n const isAnchorInside = tableNode.isParentOf(selection.anchor.getNode());\n const isFocusInside = tableNode.isParentOf(selection.focus.getNode());\n return isAnchorInside && isFocusInside;\n }\n return false;\n}\nfunction $isFullTableSelection(selection, tableNode) {\n if ($isTableSelection(selection)) {\n const anchorNode = selection.anchor.getNode();\n const focusNode = selection.focus.getNode();\n if (tableNode && anchorNode && focusNode) {\n const [map] = $computeTableMap(tableNode, anchorNode, focusNode);\n return anchorNode.getKey() === map[0][0].cell.getKey() && focusNode.getKey() === map[map.length - 1].at(-1).cell.getKey();\n }\n }\n return false;\n}\nfunction selectTableCellNode(tableCell, fromStart) {\n if (fromStart) {\n tableCell.selectStart();\n } else {\n tableCell.selectEnd();\n }\n}\nfunction $addHighlightToDOM(editor, cell) {\n const element = cell.elem;\n const editorThemeClasses = editor._config.theme;\n const node = $getNearestNodeFromDOMNode(element);\n if (!$isTableCellNode(node)) {\n formatDevErrorMessage(`Expected to find LexicalNode from Table Cell DOMNode`);\n }\n addClassNamesToElement(element, editorThemeClasses.tableCellSelected);\n}\nfunction $removeHighlightFromDOM(editor, cell) {\n const element = cell.elem;\n const node = $getNearestNodeFromDOMNode(element);\n if (!$isTableCellNode(node)) {\n formatDevErrorMessage(`Expected to find LexicalNode from Table Cell DOMNode`);\n }\n const editorThemeClasses = editor._config.theme;\n removeClassNamesFromElement(element, editorThemeClasses.tableCellSelected);\n}\nfunction $findCellNode(node) {\n const cellNode = $findMatchingParent(node, $isTableCellNode);\n return $isTableCellNode(cellNode) ? cellNode : null;\n}\nfunction $findTableNode(node) {\n const tableNode = $findMatchingParent(node, $isTableNode);\n return $isTableNode(tableNode) ? tableNode : null;\n}\nfunction $getBlockParentIfFirstNode(node) {\n for (let prevNode = node, currentNode = node; currentNode !== null; prevNode = currentNode, currentNode = currentNode.getParent()) {\n if ($isElementNode(currentNode)) {\n if (currentNode !== prevNode && currentNode.getFirstChild() !== prevNode) {\n // Not the first child or the initial node\n return null;\n } else if (!currentNode.isInline()) {\n return currentNode;\n }\n }\n }\n return null;\n}\nfunction $handleHorizontalArrowKeyRangeSelection(editor, event, selection, alter, isBackward, tableNode, tableObserver) {\n const initialFocus = $caretFromPoint(selection.focus, isBackward ? 'previous' : 'next');\n if ($isExtendableTextPointCaret(initialFocus)) {\n return false;\n }\n let lastCaret = initialFocus;\n // TableCellNode is the only shadow root we are interested in piercing so\n // we find the last internal caret and then check its parent\n for (const nextCaret of $extendCaretToRange(initialFocus).iterNodeCarets('shadowRoot')) {\n if (!($isSiblingCaret(nextCaret) && $isElementNode(nextCaret.origin))) {\n return false;\n }\n lastCaret = nextCaret;\n }\n const lastCaretParent = lastCaret.getParentAtCaret();\n if (!$isTableCellNode(lastCaretParent)) {\n return false;\n }\n const anchorCell = lastCaretParent;\n const focusCaret = $findNextTableCell($getSiblingCaret(anchorCell, lastCaret.direction));\n const anchorCellTable = $findMatchingParent(anchorCell, $isTableNode);\n if (!(anchorCellTable && anchorCellTable.is(tableNode))) {\n return false;\n }\n const anchorCellDOM = editor.getElementByKey(anchorCell.getKey());\n const anchorDOMCell = getDOMCellFromTarget(anchorCellDOM);\n if (!anchorCellDOM || !anchorDOMCell) {\n return false;\n }\n const anchorCellTableElement = $getElementForTableNode(editor, anchorCellTable);\n tableObserver.table = anchorCellTableElement;\n if (!focusCaret) {\n if (alter === 'extend') {\n // extend the selection from a range inside the cell to a table selection of the cell\n tableObserver.$setAnchorCellForSelection(anchorDOMCell);\n tableObserver.$setFocusCellForSelection(anchorDOMCell, true);\n } else {\n // exit the table\n const outerFocusCaret = $getTableExitCaret($getSiblingCaret(anchorCellTable, initialFocus.direction));\n $setPointFromCaret(selection.anchor, outerFocusCaret);\n $setPointFromCaret(selection.focus, outerFocusCaret);\n }\n } else if (alter === 'extend') {\n const focusDOMCell = getDOMCellFromTarget(editor.getElementByKey(focusCaret.origin.getKey()));\n if (!focusDOMCell) {\n return false;\n }\n tableObserver.$setAnchorCellForSelection(anchorDOMCell);\n tableObserver.$setFocusCellForSelection(focusDOMCell, true);\n } else {\n // alter === 'move'\n const innerFocusCaret = $normalizeCaret(focusCaret);\n $setPointFromCaret(selection.anchor, innerFocusCaret);\n $setPointFromCaret(selection.focus, innerFocusCaret);\n }\n stopEvent(event);\n return true;\n}\nfunction $getTableExitCaret(initialCaret) {\n const adjacent = $getAdjacentChildCaret(initialCaret);\n return $isChildCaret(adjacent) ? $normalizeCaret(adjacent) : initialCaret;\n}\nfunction $findNextTableCell(initialCaret) {\n for (const nextCaret of $extendCaretToRange(initialCaret).iterNodeCarets('root')) {\n const {\n origin\n } = nextCaret;\n if ($isTableCellNode(origin)) {\n // not sure why ts isn't narrowing here (even if the guard is on nextCaret.origin)\n // but returning a new caret is fine\n if ($isChildCaret(nextCaret)) {\n return $getChildCaret(origin, initialCaret.direction);\n }\n } else if (!$isTableRowNode(origin)) {\n break;\n }\n }\n return null;\n}\nfunction $handleArrowKey(editor, event, direction, tableNode, tableObserver) {\n if ((direction === 'up' || direction === 'down') && isTypeaheadMenuInView(editor)) {\n return false;\n }\n const selection = $getSelection();\n if (!$isSelectionInTable(selection, tableNode)) {\n if ($isRangeSelection(selection)) {\n if (direction === 'backward') {\n if (selection.focus.offset > 0) {\n return false;\n }\n const parentNode = $getBlockParentIfFirstNode(selection.focus.getNode());\n if (!parentNode) {\n return false;\n }\n const siblingNode = parentNode.getPreviousSibling();\n if (!$isTableNode(siblingNode)) {\n return false;\n }\n stopEvent(event);\n if (event.shiftKey) {\n selection.focus.set(siblingNode.getParentOrThrow().getKey(), siblingNode.getIndexWithinParent(), 'element');\n } else {\n siblingNode.selectEnd();\n }\n return true;\n } else if (event.shiftKey && (direction === 'up' || direction === 'down')) {\n const focusNode = selection.focus.getNode();\n const isTableUnselect = !selection.isCollapsed() && (direction === 'up' && !selection.isBackward() || direction === 'down' && selection.isBackward());\n if (isTableUnselect) {\n let focusParentNode = $findMatchingParent(focusNode, n => $isTableNode(n));\n if ($isTableCellNode(focusParentNode)) {\n focusParentNode = $findMatchingParent(focusParentNode, $isTableNode);\n }\n if (focusParentNode !== tableNode) {\n return false;\n }\n if (!focusParentNode) {\n return false;\n }\n const sibling = direction === 'down' ? focusParentNode.getNextSibling() : focusParentNode.getPreviousSibling();\n if (!sibling) {\n return false;\n }\n let newOffset = 0;\n if (direction === 'up') {\n if ($isElementNode(sibling)) {\n newOffset = sibling.getChildrenSize();\n }\n }\n let newFocusNode = sibling;\n if (direction === 'up') {\n if ($isElementNode(sibling)) {\n const lastCell = sibling.getLastChild();\n newFocusNode = lastCell ? lastCell : sibling;\n newOffset = $isTextNode(newFocusNode) ? newFocusNode.getTextContentSize() : 0;\n }\n }\n const newSelection = selection.clone();\n newSelection.focus.set(newFocusNode.getKey(), newOffset, $isTextNode(newFocusNode) ? 'text' : 'element');\n $setSelection(newSelection);\n stopEvent(event);\n return true;\n } else if ($isRootOrShadowRoot(focusNode)) {\n const selectedNode = direction === 'up' ? selection.getNodes()[selection.getNodes().length - 1] : selection.getNodes()[0];\n if (selectedNode) {\n const tableCellNode = $findParentTableCellNodeInTable(tableNode, selectedNode);\n if (tableCellNode !== null) {\n const firstDescendant = tableNode.getFirstDescendant();\n const lastDescendant = tableNode.getLastDescendant();\n if (!firstDescendant || !lastDescendant) {\n return false;\n }\n const [firstCellNode] = $getNodeTriplet(firstDescendant);\n const [lastCellNode] = $getNodeTriplet(lastDescendant);\n const firstCellCoords = tableNode.getCordsFromCellNode(firstCellNode, tableObserver.table);\n const lastCellCoords = tableNode.getCordsFromCellNode(lastCellNode, tableObserver.table);\n const firstCellDOM = tableNode.getDOMCellFromCordsOrThrow(firstCellCoords.x, firstCellCoords.y, tableObserver.table);\n const lastCellDOM = tableNode.getDOMCellFromCordsOrThrow(lastCellCoords.x, lastCellCoords.y, tableObserver.table);\n tableObserver.$setAnchorCellForSelection(firstCellDOM);\n tableObserver.$setFocusCellForSelection(lastCellDOM, true);\n return true;\n }\n }\n return false;\n } else {\n let focusParentNode = $findMatchingParent(focusNode, n => $isElementNode(n) && !n.isInline());\n if ($isTableCellNode(focusParentNode)) {\n focusParentNode = $findMatchingParent(focusParentNode, $isTableNode);\n }\n if (!focusParentNode) {\n return false;\n }\n const sibling = direction === 'down' ? focusParentNode.getNextSibling() : focusParentNode.getPreviousSibling();\n if ($isTableNode(sibling) && tableObserver.tableNodeKey === sibling.getKey()) {\n const firstDescendant = sibling.getFirstDescendant();\n const lastDescendant = sibling.getLastDescendant();\n if (!firstDescendant || !lastDescendant) {\n return false;\n }\n const [firstCellNode] = $getNodeTriplet(firstDescendant);\n const [lastCellNode] = $getNodeTriplet(lastDescendant);\n const newSelection = selection.clone();\n newSelection.focus.set((direction === 'up' ? firstCellNode : lastCellNode).getKey(), direction === 'up' ? 0 : lastCellNode.getChildrenSize(), 'element');\n stopEvent(event);\n $setSelection(newSelection);\n return true;\n }\n }\n }\n }\n if (direction === 'down' && $isScrollableTablesActive(editor)) {\n // Enable Firefox workaround\n tableObserver.setShouldCheckSelection();\n }\n return false;\n }\n if ($isRangeSelection(selection)) {\n if (direction === 'backward' || direction === 'forward') {\n const alter = event.shiftKey ? 'extend' : 'move';\n return $handleHorizontalArrowKeyRangeSelection(editor, event, selection, alter, direction === 'backward', tableNode, tableObserver);\n }\n if (selection.isCollapsed()) {\n const {\n anchor,\n focus\n } = selection;\n const anchorCellNode = $findMatchingParent(anchor.getNode(), $isTableCellNode);\n const focusCellNode = $findMatchingParent(focus.getNode(), $isTableCellNode);\n if (!$isTableCellNode(anchorCellNode) || !anchorCellNode.is(focusCellNode)) {\n return false;\n }\n const anchorCellTable = $findTableNode(anchorCellNode);\n if (anchorCellTable !== tableNode && anchorCellTable != null) {\n const anchorCellTableElement = getTableElement(anchorCellTable, editor.getElementByKey(anchorCellTable.getKey()));\n if (anchorCellTableElement != null) {\n tableObserver.table = getTable(anchorCellTable, anchorCellTableElement);\n return $handleArrowKey(editor, event, direction, anchorCellTable, tableObserver);\n }\n }\n const anchorCellDom = editor.getElementByKey(anchorCellNode.__key);\n const anchorDOM = editor.getElementByKey(anchor.key);\n if (anchorDOM == null || anchorCellDom == null) {\n return false;\n }\n let edgeSelectionRect;\n if (anchor.type === 'element') {\n edgeSelectionRect = anchorDOM.getBoundingClientRect();\n } else {\n const domSelection = getDOMSelection(getEditorWindow(editor));\n if (domSelection === null || domSelection.rangeCount === 0) {\n return false;\n }\n const range = domSelection.getRangeAt(0);\n edgeSelectionRect = range.getBoundingClientRect();\n }\n const edgeChild = direction === 'up' ? anchorCellNode.getFirstChild() : anchorCellNode.getLastChild();\n if (edgeChild == null) {\n return false;\n }\n const edgeChildDOM = editor.getElementByKey(edgeChild.__key);\n if (edgeChildDOM == null) {\n return false;\n }\n const edgeRect = edgeChildDOM.getBoundingClientRect();\n const isExiting = direction === 'up' ? edgeRect.top > edgeSelectionRect.top - edgeSelectionRect.height : edgeSelectionRect.bottom + edgeSelectionRect.height > edgeRect.bottom;\n if (isExiting) {\n stopEvent(event);\n const cords = tableNode.getCordsFromCellNode(anchorCellNode, tableObserver.table);\n if (event.shiftKey) {\n const cell = tableNode.getDOMCellFromCordsOrThrow(cords.x, cords.y, tableObserver.table);\n tableObserver.$setAnchorCellForSelection(cell);\n tableObserver.$setFocusCellForSelection(cell, true);\n } else {\n return selectTableNodeInDirection(tableObserver, tableNode, cords.x, cords.y, direction);\n }\n return true;\n }\n }\n } else if ($isTableSelection(selection)) {\n const {\n anchor,\n focus\n } = selection;\n const anchorCellNode = $findMatchingParent(anchor.getNode(), $isTableCellNode);\n const focusCellNode = $findMatchingParent(focus.getNode(), $isTableCellNode);\n const [tableNodeFromSelection] = selection.getNodes();\n if (!$isTableNode(tableNodeFromSelection)) {\n formatDevErrorMessage(`$handleArrowKey: TableSelection.getNodes()[0] expected to be TableNode`);\n }\n const tableElement = getTableElement(tableNodeFromSelection, editor.getElementByKey(tableNodeFromSelection.getKey()));\n if (!$isTableCellNode(anchorCellNode) || !$isTableCellNode(focusCellNode) || !$isTableNode(tableNodeFromSelection) || tableElement == null) {\n return false;\n }\n tableObserver.$updateTableTableSelection(selection);\n const grid = getTable(tableNodeFromSelection, tableElement);\n const cordsAnchor = tableNode.getCordsFromCellNode(anchorCellNode, grid);\n const anchorCell = tableNode.getDOMCellFromCordsOrThrow(cordsAnchor.x, cordsAnchor.y, grid);\n tableObserver.$setAnchorCellForSelection(anchorCell);\n stopEvent(event);\n if (event.shiftKey) {\n const [tableMap, anchorValue, focusValue] = $computeTableMap(tableNode, anchorCellNode, focusCellNode);\n return $adjustFocusInDirection(tableObserver, tableMap, anchorValue, focusValue, direction);\n } else {\n focusCellNode.selectEnd();\n }\n return true;\n }\n return false;\n}\nfunction stopEvent(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n event.stopPropagation();\n}\nfunction isTypeaheadMenuInView(editor) {\n // There is no inbuilt way to check if the component picker is in view\n // but we can check if the root DOM element has the aria-controls attribute \"typeahead-menu\".\n const root = editor.getRootElement();\n if (!root) {\n return false;\n }\n return root.hasAttribute('aria-controls') && root.getAttribute('aria-controls') === 'typeahead-menu';\n}\nfunction $insertParagraphAtTableEdge(edgePosition, tableNode, children) {\n const paragraphNode = $createParagraphNode();\n if (edgePosition === 'first') {\n tableNode.insertBefore(paragraphNode);\n } else {\n tableNode.insertAfter(paragraphNode);\n }\n paragraphNode.append(...(children || []));\n paragraphNode.selectEnd();\n}\nfunction $getTableEdgeCursorPosition(editor, selection, tableNode) {\n const tableNodeParent = tableNode.getParent();\n if (!tableNodeParent) {\n return undefined;\n }\n\n // TODO: Add support for nested tables\n const domSelection = getDOMSelection(getEditorWindow(editor));\n if (!domSelection) {\n return undefined;\n }\n const domAnchorNode = domSelection.anchorNode;\n const tableNodeParentDOM = editor.getElementByKey(tableNodeParent.getKey());\n const tableElement = getTableElement(tableNode, editor.getElementByKey(tableNode.getKey()));\n // We are only interested in the scenario where the\n // native selection anchor is:\n // - at or inside the table's parent DOM\n // - and NOT at or inside the table DOM\n // It may be adjacent to the table DOM (e.g. in a wrapper)\n if (!domAnchorNode || !tableNodeParentDOM || !tableElement || !tableNodeParentDOM.contains(domAnchorNode) || tableElement.contains(domAnchorNode)) {\n return undefined;\n }\n const anchorCellNode = $findMatchingParent(selection.anchor.getNode(), n => $isTableCellNode(n));\n if (!anchorCellNode) {\n return undefined;\n }\n const parentTable = $findMatchingParent(anchorCellNode, n => $isTableNode(n));\n if (!$isTableNode(parentTable) || !parentTable.is(tableNode)) {\n return undefined;\n }\n const [tableMap, cellValue] = $computeTableMap(tableNode, anchorCellNode, anchorCellNode);\n const firstCell = tableMap[0][0];\n const lastCell = tableMap[tableMap.length - 1][tableMap[0].length - 1];\n const {\n startRow,\n startColumn\n } = cellValue;\n const isAtFirstCell = startRow === firstCell.startRow && startColumn === firstCell.startColumn;\n const isAtLastCell = startRow === lastCell.startRow && startColumn === lastCell.startColumn;\n if (isAtFirstCell) {\n return 'first';\n } else if (isAtLastCell) {\n return 'last';\n } else {\n return undefined;\n }\n}\nfunction $getObserverCellFromCellNodeOrThrow(tableObserver, tableCellNode) {\n const {\n tableNode\n } = tableObserver.$lookup();\n const currentCords = tableNode.getCordsFromCellNode(tableCellNode, tableObserver.table);\n return tableNode.getDOMCellFromCordsOrThrow(currentCords.x, currentCords.y, tableObserver.table);\n}\nfunction $getNearestTableCellInTableFromDOMNode(tableNode, startingDOM, editorState) {\n return $findParentTableCellNodeInTable(tableNode, $getNearestNodeFromDOMNode(startingDOM, editorState));\n}\n\nfunction isHTMLDivElement(element) {\n return isHTMLElement$1(element) && element.nodeName === 'DIV';\n}\nfunction updateColgroup(dom, config, colCount, colWidths) {\n const colGroup = dom.querySelector('colgroup');\n if (!colGroup) {\n return;\n }\n const cols = [];\n for (let i = 0; i < colCount; i++) {\n const col = document.createElement('col');\n const width = colWidths && colWidths[i];\n if (width) {\n col.style.width = `${width}px`;\n }\n cols.push(col);\n }\n colGroup.replaceChildren(...cols);\n}\nfunction setRowStriping(dom, config, rowStriping) {\n if (rowStriping) {\n addClassNamesToElement(dom, config.theme.tableRowStriping);\n dom.setAttribute('data-lexical-row-striping', 'true');\n } else {\n removeClassNamesFromElement(dom, config.theme.tableRowStriping);\n dom.removeAttribute('data-lexical-row-striping');\n }\n}\nfunction setFrozenColumns(dom, tableElement, config, frozenColumnCount) {\n if (frozenColumnCount > 0) {\n addClassNamesToElement(dom, config.theme.tableFrozenColumn);\n tableElement.setAttribute('data-lexical-frozen-column', 'true');\n } else {\n removeClassNamesFromElement(dom, config.theme.tableFrozenColumn);\n tableElement.removeAttribute('data-lexical-frozen-column');\n }\n}\nfunction setFrozenRows(dom, tableElement, config, frozenRowCount) {\n if (frozenRowCount > 0) {\n addClassNamesToElement(dom, config.theme.tableFrozenRow);\n tableElement.setAttribute('data-lexical-frozen-row', 'true');\n } else {\n removeClassNamesFromElement(dom, config.theme.tableFrozenRow);\n tableElement.removeAttribute('data-lexical-frozen-row');\n }\n}\nfunction alignTableElement(dom, config, formatType) {\n if (!config.theme.tableAlignment) {\n return;\n }\n const removeClasses = [];\n const addClasses = [];\n for (const format of ['center', 'right']) {\n const classes = config.theme.tableAlignment[format];\n if (!classes) {\n continue;\n }\n (format === formatType ? addClasses : removeClasses).push(classes);\n }\n removeClassNamesFromElement(dom, ...removeClasses);\n addClassNamesToElement(dom, ...addClasses);\n}\nconst scrollableEditors = new WeakSet();\nfunction $isScrollableTablesActive(editor = $getEditor()) {\n return scrollableEditors.has(editor);\n}\nfunction setScrollableTablesActive(editor, active) {\n if (active) {\n if (!editor._config.theme.tableScrollableWrapper) {\n console.warn('TableNode: hasHorizontalScroll is active but theme.tableScrollableWrapper is not defined.');\n }\n scrollableEditors.add(editor);\n } else {\n scrollableEditors.delete(editor);\n }\n}\n\n/** @noInheritDoc */\nclass TableNode extends ElementNode {\n /** @internal */\n __rowStriping;\n __frozenColumnCount;\n __frozenRowCount;\n __colWidths;\n static getType() {\n return 'table';\n }\n getColWidths() {\n const self = this.getLatest();\n return self.__colWidths;\n }\n setColWidths(colWidths) {\n const self = this.getWritable();\n // NOTE: Node properties should be immutable. Freeze to prevent accidental mutation.\n self.__colWidths = colWidths !== undefined && true ? Object.freeze(colWidths) : colWidths;\n return self;\n }\n static clone(node) {\n return new TableNode(node.__key);\n }\n afterCloneFrom(prevNode) {\n super.afterCloneFrom(prevNode);\n this.__colWidths = prevNode.__colWidths;\n this.__rowStriping = prevNode.__rowStriping;\n this.__frozenColumnCount = prevNode.__frozenColumnCount;\n this.__frozenRowCount = prevNode.__frozenRowCount;\n }\n static importDOM() {\n return {\n table: _node => ({\n conversion: $convertTableElement,\n priority: 1\n })\n };\n }\n static importJSON(serializedNode) {\n return $createTableNode().updateFromJSON(serializedNode);\n }\n updateFromJSON(serializedNode) {\n return super.updateFromJSON(serializedNode).setRowStriping(serializedNode.rowStriping || false).setFrozenColumns(serializedNode.frozenColumnCount || 0).setFrozenRows(serializedNode.frozenRowCount || 0).setColWidths(serializedNode.colWidths);\n }\n constructor(key) {\n super(key);\n this.__rowStriping = false;\n this.__frozenColumnCount = 0;\n this.__frozenRowCount = 0;\n this.__colWidths = undefined;\n }\n exportJSON() {\n return {\n ...super.exportJSON(),\n colWidths: this.getColWidths(),\n frozenColumnCount: this.__frozenColumnCount ? this.__frozenColumnCount : undefined,\n frozenRowCount: this.__frozenRowCount ? this.__frozenRowCount : undefined,\n rowStriping: this.__rowStriping ? this.__rowStriping : undefined\n };\n }\n extractWithChild(child, selection, destination) {\n return destination === 'html';\n }\n getDOMSlot(element) {\n const tableElement = !isHTMLTableElement(element) ? element.querySelector('table') : element;\n if (!isHTMLTableElement(tableElement)) {\n formatDevErrorMessage(`TableNode.getDOMSlot: createDOM() did not return a table`);\n }\n return super.getDOMSlot(element).withElement(tableElement).withAfter(tableElement.querySelector('colgroup'));\n }\n createDOM(config, editor) {\n const tableElement = document.createElement('table');\n if (this.__style) {\n tableElement.style.cssText = this.__style;\n }\n const colGroup = document.createElement('colgroup');\n tableElement.appendChild(colGroup);\n setDOMUnmanaged(colGroup);\n addClassNamesToElement(tableElement, config.theme.table);\n this.updateTableElement(null, tableElement, config);\n if ($isScrollableTablesActive(editor)) {\n const wrapperElement = document.createElement('div');\n const classes = config.theme.tableScrollableWrapper;\n if (classes) {\n addClassNamesToElement(wrapperElement, classes);\n } else {\n wrapperElement.style.cssText = 'overflow-x: auto;';\n }\n wrapperElement.appendChild(tableElement);\n this.updateTableWrapper(null, wrapperElement, tableElement, config);\n return wrapperElement;\n }\n return tableElement;\n }\n updateTableWrapper(prevNode, tableWrapper, tableElement, config) {\n if (this.__frozenColumnCount !== (prevNode ? prevNode.__frozenColumnCount : 0)) {\n setFrozenColumns(tableWrapper, tableElement, config, this.__frozenColumnCount);\n }\n if (this.__frozenRowCount !== (prevNode ? prevNode.__frozenRowCount : 0)) {\n setFrozenRows(tableWrapper, tableElement, config, this.__frozenRowCount);\n }\n }\n updateTableElement(prevNode, tableElement, config) {\n if (this.__style !== (prevNode ? prevNode.__style : '')) {\n tableElement.style.cssText = this.__style;\n }\n if (this.__rowStriping !== (prevNode ? prevNode.__rowStriping : false)) {\n setRowStriping(tableElement, config, this.__rowStriping);\n }\n updateColgroup(tableElement, config, this.getColumnCount(), this.getColWidths());\n alignTableElement(tableElement, config, this.getFormatType());\n }\n updateDOM(prevNode, dom, config) {\n const slot = this.getDOMSlot(dom);\n const tableElement = slot.element;\n if (dom === tableElement === $isScrollableTablesActive()) {\n return true;\n }\n if (isHTMLDivElement(dom)) {\n this.updateTableWrapper(prevNode, dom, tableElement, config);\n }\n this.updateTableElement(prevNode, tableElement, config);\n return false;\n }\n exportDOM(editor) {\n const superExport = super.exportDOM(editor);\n const {\n element\n } = superExport;\n return {\n after: tableElement => {\n if (superExport.after) {\n tableElement = superExport.after(tableElement);\n }\n if (!isHTMLTableElement(tableElement) && isHTMLElement$1(tableElement)) {\n tableElement = tableElement.querySelector('table');\n }\n if (!isHTMLTableElement(tableElement)) {\n return null;\n }\n alignTableElement(tableElement, editor._config, this.getFormatType());\n\n // Scan the table map to build a map of table cell key to the columns it needs\n const [tableMap] = $computeTableMapSkipCellCheck(this, null, null);\n const cellValues = new Map();\n for (const mapRow of tableMap) {\n for (const mapValue of mapRow) {\n const key = mapValue.cell.getKey();\n if (!cellValues.has(key)) {\n cellValues.set(key, {\n colSpan: mapValue.cell.getColSpan(),\n startColumn: mapValue.startColumn\n });\n }\n }\n }\n\n // scan the DOM to find the table cell keys that were used and mark those columns\n const knownColumns = new Set();\n for (const cellDOM of tableElement.querySelectorAll(':scope > tr > [data-temporary-table-cell-lexical-key]')) {\n const key = cellDOM.getAttribute('data-temporary-table-cell-lexical-key');\n if (key) {\n const cellSpan = cellValues.get(key);\n cellDOM.removeAttribute('data-temporary-table-cell-lexical-key');\n if (cellSpan) {\n cellValues.delete(key);\n for (let i = 0; i < cellSpan.colSpan; i++) {\n knownColumns.add(i + cellSpan.startColumn);\n }\n }\n }\n }\n\n // Compute the colgroup and columns in the export\n const colGroup = tableElement.querySelector(':scope > colgroup');\n if (colGroup) {\n // Only include the <col /> for rows that are in the output\n const cols = Array.from(tableElement.querySelectorAll(':scope > colgroup > col')).filter((dom, i) => knownColumns.has(i));\n colGroup.replaceChildren(...cols);\n }\n\n // Wrap direct descendant rows in a tbody for export\n const rows = tableElement.querySelectorAll(':scope > tr');\n if (rows.length > 0) {\n const tBody = document.createElement('tbody');\n for (const row of rows) {\n tBody.appendChild(row);\n }\n tableElement.append(tBody);\n }\n return tableElement;\n },\n element: !isHTMLTableElement(element) && isHTMLElement$1(element) ? element.querySelector('table') : element\n };\n }\n canBeEmpty() {\n return false;\n }\n isShadowRoot() {\n return true;\n }\n getCordsFromCellNode(tableCellNode, table) {\n const {\n rows,\n domRows\n } = table;\n for (let y = 0; y < rows; y++) {\n const row = domRows[y];\n if (row == null) {\n continue;\n }\n for (let x = 0; x < row.length; x++) {\n const cell = row[x];\n if (cell == null) {\n continue;\n }\n const {\n elem\n } = cell;\n const cellNode = $getNearestTableCellInTableFromDOMNode(this, elem);\n if (cellNode !== null && tableCellNode.is(cellNode)) {\n return {\n x,\n y\n };\n }\n }\n }\n throw new Error('Cell not found in table.');\n }\n getDOMCellFromCords(x, y, table) {\n const {\n domRows\n } = table;\n const row = domRows[y];\n if (row == null) {\n return null;\n }\n const index = x < row.length ? x : row.length - 1;\n const cell = row[index];\n if (cell == null) {\n return null;\n }\n return cell;\n }\n getDOMCellFromCordsOrThrow(x, y, table) {\n const cell = this.getDOMCellFromCords(x, y, table);\n if (!cell) {\n throw new Error('Cell not found at cords.');\n }\n return cell;\n }\n getCellNodeFromCords(x, y, table) {\n const cell = this.getDOMCellFromCords(x, y, table);\n if (cell == null) {\n return null;\n }\n const node = $getNearestNodeFromDOMNode(cell.elem);\n if ($isTableCellNode(node)) {\n return node;\n }\n return null;\n }\n getCellNodeFromCordsOrThrow(x, y, table) {\n const node = this.getCellNodeFromCords(x, y, table);\n if (!node) {\n throw new Error('Node at cords not TableCellNode.');\n }\n return node;\n }\n getRowStriping() {\n return Boolean(this.getLatest().__rowStriping);\n }\n setRowStriping(newRowStriping) {\n const self = this.getWritable();\n self.__rowStriping = newRowStriping;\n return self;\n }\n setFrozenColumns(columnCount) {\n const self = this.getWritable();\n self.__frozenColumnCount = columnCount;\n return self;\n }\n getFrozenColumns() {\n return this.getLatest().__frozenColumnCount;\n }\n setFrozenRows(rowCount) {\n const self = this.getWritable();\n self.__frozenRowCount = rowCount;\n return self;\n }\n getFrozenRows() {\n return this.getLatest().__frozenRowCount;\n }\n canSelectBefore() {\n return true;\n }\n canIndent() {\n return false;\n }\n getColumnCount() {\n const firstRow = this.getFirstChild();\n if (!firstRow) {\n return 0;\n }\n let columnCount = 0;\n firstRow.getChildren().forEach(cell => {\n if ($isTableCellNode(cell)) {\n columnCount += cell.getColSpan();\n }\n });\n return columnCount;\n }\n}\nfunction $getElementForTableNode(editor, tableNode) {\n const tableElement = editor.getElementByKey(tableNode.getKey());\n if (!(tableElement !== null)) {\n formatDevErrorMessage(`$getElementForTableNode: Table Element Not Found`);\n }\n return getTable(tableNode, tableElement);\n}\nfunction $convertTableElement(domNode) {\n const tableNode = $createTableNode();\n if (domNode.hasAttribute('data-lexical-row-striping')) {\n tableNode.setRowStriping(true);\n }\n if (domNode.hasAttribute('data-lexical-frozen-column')) {\n tableNode.setFrozenColumns(1);\n }\n if (domNode.hasAttribute('data-lexical-frozen-row')) {\n tableNode.setFrozenRows(1);\n }\n const colGroup = domNode.querySelector(':scope > colgroup');\n if (colGroup) {\n let columns = [];\n for (const col of colGroup.querySelectorAll(':scope > col')) {\n let width = col.style.width || '';\n if (!PIXEL_VALUE_REG_EXP.test(width)) {\n // Also support deprecated width attribute for google docs\n width = col.getAttribute('width') || '';\n if (!/^\\d+$/.test(width)) {\n columns = undefined;\n break;\n }\n }\n columns.push(parseFloat(width));\n }\n if (columns) {\n tableNode.setColWidths(columns);\n }\n }\n return {\n after: children => $descendantsMatching(children, $isTableRowNode),\n node: tableNode\n };\n}\nfunction $createTableNode() {\n return $applyNodeReplacement(new TableNode());\n}\nfunction $isTableNode(node) {\n return node instanceof TableNode;\n}\n\nfunction $insertTableCommandListener({\n rows,\n columns,\n includeHeaders\n}) {\n const selection = $getSelection() || $getPreviousSelection();\n if (!selection || !$isRangeSelection(selection)) {\n return false;\n }\n\n // Prevent nested tables by checking if we're already inside a table\n if ($findTableNode(selection.anchor.getNode())) {\n return false;\n }\n const tableNode = $createTableNodeWithDimensions(Number(rows), Number(columns), includeHeaders);\n $insertNodeToNearestRoot(tableNode);\n const firstDescendant = tableNode.getFirstDescendant();\n if ($isTextNode(firstDescendant)) {\n firstDescendant.select();\n }\n return true;\n}\nfunction $tableCellTransform(node) {\n if (!$isTableRowNode(node.getParent())) {\n // TableCellNode must be a child of TableRowNode.\n node.remove();\n } else if (node.isEmpty()) {\n // TableCellNode should never be empty\n node.append($createParagraphNode());\n }\n}\nfunction $tableRowTransform(node) {\n if (!$isTableNode(node.getParent())) {\n // TableRowNode must be a child of TableNode.\n // TODO: Future support of tbody/thead/tfoot may change this\n node.remove();\n } else {\n $unwrapAndFilterDescendants(node, $isTableCellNode);\n }\n}\nfunction $tableTransform(node) {\n // TableRowNode is the only valid child for TableNode\n // TODO: Future support of tbody/thead/tfoot/caption may change this\n $unwrapAndFilterDescendants(node, $isTableRowNode);\n const [gridMap] = $computeTableMapSkipCellCheck(node, null, null);\n const maxRowLength = gridMap.reduce((curLength, row) => {\n return Math.max(curLength, row.length);\n }, 0);\n const rowNodes = node.getChildren();\n for (let i = 0; i < gridMap.length; ++i) {\n const rowNode = rowNodes[i];\n if (!rowNode) {\n continue;\n }\n if (!$isTableRowNode(rowNode)) {\n formatDevErrorMessage(`TablePlugin: Expecting all children of TableNode to be TableRowNode, found ${rowNode.constructor.name} (type ${rowNode.getType()})`);\n }\n const rowLength = gridMap[i].reduce((acc, cell) => cell ? 1 + acc : acc, 0);\n if (rowLength === maxRowLength) {\n continue;\n }\n for (let j = rowLength; j < maxRowLength; ++j) {\n // TODO: inherit header state from another header or body\n const newCell = $createTableCellNode();\n newCell.append($createParagraphNode());\n rowNode.append(newCell);\n }\n }\n}\nfunction $tableClickCommand(event) {\n if (event.detail < 3 || !isDOMNode(event.target)) {\n return false;\n }\n const startNode = $getNearestNodeFromDOMNode(event.target);\n if (startNode === null) {\n return false;\n }\n const blockNode = $findMatchingParent(startNode, node => $isElementNode(node) && !node.isInline());\n if (blockNode === null) {\n return false;\n }\n const rootNode = blockNode.getParent();\n if (!$isTableCellNode(rootNode)) {\n return false;\n }\n blockNode.select(0);\n return true;\n}\n\n/**\n * Register a transform to ensure that all TableCellNode have a colSpan and rowSpan of 1.\n * This should only be registered when you do not want to support merged cells.\n *\n * @param editor The editor\n * @returns An unregister callback\n */\nfunction registerTableCellUnmergeTransform(editor) {\n return editor.registerNodeTransform(TableCellNode, node => {\n if (node.getColSpan() > 1 || node.getRowSpan() > 1) {\n // When we have rowSpan we have to map the entire Table to understand where the new Cells\n // fit best; let's analyze all Cells at once to save us from further transform iterations\n const [,, gridNode] = $getNodeTriplet(node);\n const [gridMap] = $computeTableMap(gridNode, node, node);\n // TODO this function expects Tables to be normalized. Look into this once it exists\n const rowsCount = gridMap.length;\n const columnsCount = gridMap[0].length;\n let row = gridNode.getFirstChild();\n if (!$isTableRowNode(row)) {\n formatDevErrorMessage(`Expected TableNode first child to be a RowNode`);\n }\n const unmerged = [];\n for (let i = 0; i < rowsCount; i++) {\n if (i !== 0) {\n row = row.getNextSibling();\n if (!$isTableRowNode(row)) {\n formatDevErrorMessage(`Expected TableNode first child to be a RowNode`);\n }\n }\n let lastRowCell = null;\n for (let j = 0; j < columnsCount; j++) {\n const cellMap = gridMap[i][j];\n const cell = cellMap.cell;\n if (cellMap.startRow === i && cellMap.startColumn === j) {\n lastRowCell = cell;\n unmerged.push(cell);\n } else if (cell.getColSpan() > 1 || cell.getRowSpan() > 1) {\n if (!$isTableCellNode(cell)) {\n formatDevErrorMessage(`Expected TableNode cell to be a TableCellNode`);\n }\n const newCell = $createTableCellNode(cell.__headerState);\n if (lastRowCell !== null) {\n lastRowCell.insertAfter(newCell);\n } else {\n $insertFirst$1(row, newCell);\n }\n }\n }\n }\n for (const cell of unmerged) {\n cell.setColSpan(1);\n cell.setRowSpan(1);\n }\n }\n });\n}\nfunction registerTableSelectionObserver(editor, hasTabHandler = true) {\n const tableSelections = new Map();\n const initializeTableNode = (tableNode, nodeKey, dom) => {\n const tableElement = getTableElement(tableNode, dom);\n const tableSelection = applyTableHandlers(tableNode, tableElement, editor, hasTabHandler);\n tableSelections.set(nodeKey, [tableSelection, tableElement]);\n };\n const unregisterMutationListener = editor.registerMutationListener(TableNode, nodeMutations => {\n editor.getEditorState().read(() => {\n for (const [nodeKey, mutation] of nodeMutations) {\n const tableSelection = tableSelections.get(nodeKey);\n if (mutation === 'created' || mutation === 'updated') {\n const {\n tableNode,\n tableElement\n } = $getTableAndElementByKey(nodeKey);\n if (tableSelection === undefined) {\n initializeTableNode(tableNode, nodeKey, tableElement);\n } else if (tableElement !== tableSelection[1]) {\n // The update created a new DOM node, destroy the existing TableObserver\n tableSelection[0].removeListeners();\n tableSelections.delete(nodeKey);\n initializeTableNode(tableNode, nodeKey, tableElement);\n }\n } else if (mutation === 'destroyed') {\n if (tableSelection !== undefined) {\n tableSelection[0].removeListeners();\n tableSelections.delete(nodeKey);\n }\n }\n }\n }, {\n editor\n });\n }, {\n skipInitialization: false\n });\n return () => {\n unregisterMutationListener();\n // Hook might be called multiple times so cleaning up tables listeners as well,\n // as it'll be reinitialized during recurring call\n for (const [, [tableSelection]] of tableSelections) {\n tableSelection.removeListeners();\n }\n };\n}\n\n/**\n * Register the INSERT_TABLE_COMMAND listener and the table integrity transforms. The\n * table selection observer should be registered separately after this with\n * {@link registerTableSelectionObserver}.\n *\n * @param editor The editor\n * @returns An unregister callback\n */\nfunction registerTablePlugin(editor) {\n if (!editor.hasNodes([TableNode])) {\n {\n formatDevErrorMessage(`TablePlugin: TableNode is not registered on editor`);\n }\n }\n return mergeRegister(editor.registerCommand(INSERT_TABLE_COMMAND, $insertTableCommandListener, COMMAND_PRIORITY_EDITOR), editor.registerCommand(SELECTION_INSERT_CLIPBOARD_NODES_COMMAND, ({\n nodes,\n selection\n }, dispatchEditor) => {\n if (editor !== dispatchEditor || !$isRangeSelection(selection)) {\n return false;\n }\n const isInsideTableCell = $findTableNode(selection.anchor.getNode()) !== null;\n return isInsideTableCell && nodes.some($isTableNode);\n }, COMMAND_PRIORITY_EDITOR), editor.registerCommand(CLICK_COMMAND, $tableClickCommand, COMMAND_PRIORITY_EDITOR), editor.registerNodeTransform(TableNode, $tableTransform), editor.registerNodeTransform(TableRowNode, $tableRowTransform), editor.registerNodeTransform(TableCellNode, $tableCellTransform));\n}\n\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/**\n * Configures {@link TableNode}, {@link TableRowNode}, {@link TableCellNode} and\n * registers table behaviors (see {@link TableConfig})\n */\nconst TableExtension = defineExtension({\n build(editor, config, state) {\n return namedSignals(config);\n },\n config: safeCast({\n hasCellBackgroundColor: true,\n hasCellMerge: true,\n hasHorizontalScroll: true,\n hasTabHandler: true\n }),\n name: '@lexical/table/Table',\n nodes: [TableNode, TableRowNode, TableCellNode],\n register(editor, config, state) {\n const stores = state.getOutput();\n return mergeRegister(effect(() => {\n const hasHorizontalScroll = stores.hasHorizontalScroll.value;\n const hadHorizontalScroll = $isScrollableTablesActive(editor);\n if (hadHorizontalScroll !== hasHorizontalScroll) {\n setScrollableTablesActive(editor, hasHorizontalScroll);\n // Registering the transform has the side-effect of marking all existing\n // TableNodes as dirty. The handler is immediately unregistered.\n editor.registerNodeTransform(TableNode, () => {})();\n }\n }), registerTablePlugin(editor), effect(() => registerTableSelectionObserver(editor, stores.hasTabHandler.value)), effect(() => stores.hasCellMerge.value ? undefined : registerTableCellUnmergeTransform(editor)), effect(() => stores.hasCellBackgroundColor.value ? undefined : editor.registerNodeTransform(TableCellNode, node => {\n if (node.getBackgroundColor() !== null) {\n node.setBackgroundColor(null);\n }\n })));\n }\n});\n\nexport { $computeTableMap, $computeTableMapSkipCellCheck, $createTableCellNode, $createTableNode, $createTableNodeWithDimensions, $createTableRowNode, $createTableSelection, $createTableSelectionFrom, $deleteTableColumn, $deleteTableColumnAtSelection, $deleteTableColumn__EXPERIMENTAL, $deleteTableRowAtSelection, $deleteTableRow__EXPERIMENTAL, $findCellNode, $findTableNode, $getElementForTableNode, $getNodeTriplet, $getTableAndElementByKey, $getTableCellNodeFromLexicalNode, $getTableCellNodeRect, $getTableColumnIndexFromTableCellNode, $getTableNodeFromLexicalNodeOrThrow, $getTableRowIndexFromTableCellNode, $getTableRowNodeFromTableCellNodeOrThrow, $insertTableColumn, $insertTableColumnAtSelection, $insertTableColumn__EXPERIMENTAL, $insertTableRow, $insertTableRowAtSelection, $insertTableRow__EXPERIMENTAL, $isScrollableTablesActive, $isTableCellNode, $isTableNode, $isTableRowNode, $isTableSelection, $mergeCells, $removeTableRowAtIndex, $unmergeCell, INSERT_TABLE_COMMAND, TableCellHeaderStates, TableCellNode, TableExtension, TableNode, TableObserver, TableRowNode, applyTableHandlers, getDOMCellFromTarget, getTableElement, getTableObserverFromTableElement, registerTableCellUnmergeTransform, registerTablePlugin, registerTableSelectionObserver, setScrollableTablesActive };\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport{addClassNamesToElement as e,$descendantsMatching as t,$findMatchingParent as n,removeClassNamesFromElement as o,objectKlassEquals as r,isHTMLElement as l,$insertFirst as s,mergeRegister as i,$insertNodeToNearestRoot as c,$unwrapAndFilterDescendants as a}from\"@lexical/utils\";import{ElementNode as u,isHTMLElement as h,$isInlineElementOrDecoratorNode as d,$isTextNode as f,$isLineBreakNode as g,$createParagraphNode as m,$applyNodeReplacement as p,createCommand as C,$createTextNode as _,$getSelection as S,$isRangeSelection as w,$isParagraphNode as b,$createPoint as y,$getNodeByKey as N,$isElementNode as v,$normalizeSelection__EXPERIMENTAL as x,isCurrentlyReadOnlyMode as T,TEXT_TYPE_TO_FORMAT as R,$getEditor as F,$setSelection as O,SELECTION_CHANGE_COMMAND as A,getDOMSelection as K,$createRangeSelection as E,$isRootNode as k,INSERT_PARAGRAPH_COMMAND as M,KEY_ARROW_DOWN_COMMAND as $,KEY_ARROW_UP_COMMAND as z,KEY_ARROW_LEFT_COMMAND as W,KEY_ARROW_RIGHT_COMMAND as H,COMMAND_PRIORITY_HIGH as L,KEY_ESCAPE_COMMAND as B,DELETE_WORD_COMMAND as P,DELETE_LINE_COMMAND as D,DELETE_CHARACTER_COMMAND as I,KEY_BACKSPACE_COMMAND as U,KEY_DELETE_COMMAND as J,CUT_COMMAND as Y,FORMAT_TEXT_COMMAND as X,FORMAT_ELEMENT_COMMAND as q,CONTROLLED_TEXT_INSERTION_COMMAND as j,KEY_TAB_COMMAND as V,FOCUS_COMMAND as G,SELECTION_INSERT_CLIPBOARD_NODES_COMMAND as Q,$getPreviousSelection as Z,$getNearestNodeFromDOMNode as ee,$createRangeSelectionFromDom as te,isDOMNode as ne,$isRootOrShadowRoot as oe,$caretFromPoint as re,$isExtendableTextPointCaret as le,$extendCaretToRange as se,$isSiblingCaret as ie,$getSiblingCaret as ce,$setPointFromCaret as ae,$normalizeCaret as ue,$isChildCaret as he,$getChildCaret as de,$getAdjacentChildCaret as fe,setDOMUnmanaged as ge,COMMAND_PRIORITY_EDITOR as me,CLICK_COMMAND as pe,defineExtension as Ce,safeCast as _e}from\"lexical\";import{effect as Se,namedSignals as we}from\"@lexical/extension\";import{copyToClipboard as be,$getClipboardDataFromSelection as ye}from\"@lexical/clipboard\";const Ne=/^(\\d+(?:\\.\\d+)?)px$/,ve={BOTH:3,COLUMN:2,NO_STATUS:0,ROW:1};class xe extends u{__colSpan;__rowSpan;__headerState;__width;__backgroundColor;__verticalAlign;static getType(){return\"tablecell\"}static clone(e){return new xe(e.__headerState,e.__colSpan,e.__width,e.__key)}afterCloneFrom(e){super.afterCloneFrom(e),this.__rowSpan=e.__rowSpan,this.__backgroundColor=e.__backgroundColor,this.__verticalAlign=e.__verticalAlign}static importDOM(){return{td:e=>({conversion:Re,priority:0}),th:e=>({conversion:Re,priority:0})}}static importJSON(e){return Fe().updateFromJSON(e)}updateFromJSON(e){return super.updateFromJSON(e).setHeaderStyles(e.headerState).setColSpan(e.colSpan||1).setRowSpan(e.rowSpan||1).setWidth(e.width||void 0).setBackgroundColor(e.backgroundColor||null).setVerticalAlign(e.verticalAlign||void 0)}constructor(e=ve.NO_STATUS,t=1,n,o){super(o),this.__colSpan=t,this.__rowSpan=1,this.__headerState=e,this.__width=n,this.__backgroundColor=null,this.__verticalAlign=void 0}createDOM(t){const n=document.createElement(this.getTag());return this.__width&&(n.style.width=`${this.__width}px`),this.__colSpan>1&&(n.colSpan=this.__colSpan),this.__rowSpan>1&&(n.rowSpan=this.__rowSpan),null!==this.__backgroundColor&&(n.style.backgroundColor=this.__backgroundColor),Te(this.__verticalAlign)&&(n.style.verticalAlign=this.__verticalAlign),e(n,t.theme.tableCell,this.hasHeader()&&t.theme.tableCellHeader),n}exportDOM(e){const t=super.exportDOM(e);if(h(t.element)){const e=t.element;e.setAttribute(\"data-temporary-table-cell-lexical-key\",this.getKey()),e.style.border=\"1px solid black\",this.__colSpan>1&&(e.colSpan=this.__colSpan),this.__rowSpan>1&&(e.rowSpan=this.__rowSpan),e.style.width=`${this.getWidth()||75}px`,e.style.verticalAlign=this.getVerticalAlign()||\"top\",e.style.textAlign=\"start\",null===this.__backgroundColor&&this.hasHeader()&&(e.style.backgroundColor=\"#f2f3f5\")}return t}exportJSON(){return{...super.exportJSON(),...Te(this.__verticalAlign)&&{verticalAlign:this.__verticalAlign},backgroundColor:this.getBackgroundColor(),colSpan:this.__colSpan,headerState:this.__headerState,rowSpan:this.__rowSpan,width:this.getWidth()}}getColSpan(){return this.getLatest().__colSpan}setColSpan(e){const t=this.getWritable();return t.__colSpan=e,t}getRowSpan(){return this.getLatest().__rowSpan}setRowSpan(e){const t=this.getWritable();return t.__rowSpan=e,t}getTag(){return this.hasHeader()?\"th\":\"td\"}setHeaderStyles(e,t=ve.BOTH){const n=this.getWritable();return n.__headerState=e&t|n.__headerState&~t,n}getHeaderStyles(){return this.getLatest().__headerState}setWidth(e){const t=this.getWritable();return t.__width=e,t}getWidth(){return this.getLatest().__width}getBackgroundColor(){return this.getLatest().__backgroundColor}setBackgroundColor(e){const t=this.getWritable();return t.__backgroundColor=e,t}getVerticalAlign(){return this.getLatest().__verticalAlign}setVerticalAlign(e){const t=this.getWritable();return t.__verticalAlign=e||void 0,t}toggleHeaderStyle(e){const t=this.getWritable();return(t.__headerState&e)===e?t.__headerState-=e:t.__headerState+=e,t}hasHeaderState(e){return(this.getHeaderStyles()&e)===e}hasHeader(){return this.getLatest().__headerState!==ve.NO_STATUS}updateDOM(e){return e.__headerState!==this.__headerState||e.__width!==this.__width||e.__colSpan!==this.__colSpan||e.__rowSpan!==this.__rowSpan||e.__backgroundColor!==this.__backgroundColor||e.__verticalAlign!==this.__verticalAlign}isShadowRoot(){return!0}collapseAtStart(){return!0}canBeEmpty(){return!1}canIndent(){return!1}}function Te(e){return\"middle\"===e||\"bottom\"===e}function Re(e){const t=e,n=e.nodeName.toLowerCase();let o;Ne.test(t.style.width)&&(o=parseFloat(t.style.width));const r=Fe(\"th\"===n?ve.ROW:ve.NO_STATUS,t.colSpan,o);r.__rowSpan=t.rowSpan;const l=t.style.backgroundColor;\"\"!==l&&(r.__backgroundColor=l);const s=t.style.verticalAlign;Te(s)&&(r.__verticalAlign=s);const i=t.style,c=(i&&i.textDecoration||\"\").split(\" \"),a=\"700\"===i.fontWeight||\"bold\"===i.fontWeight,u=c.includes(\"line-through\"),h=\"italic\"===i.fontStyle,p=c.includes(\"underline\");return{after:e=>{const t=[];let n=null;const o=()=>{if(n){const e=n.getFirstChild();g(e)&&1===n.getChildrenSize()&&e.remove()}};for(const r of e)d(r)||f(r)||g(r)?(f(r)&&(a&&r.toggleFormat(\"bold\"),u&&r.toggleFormat(\"strikethrough\"),h&&r.toggleFormat(\"italic\"),p&&r.toggleFormat(\"underline\")),n?n.append(r):(n=m().append(r),t.push(n))):(t.push(r),o(),n=null);return o(),0===t.length&&t.push(m()),t},node:r}}function Fe(e=ve.NO_STATUS,t=1,n){return p(new xe(e,t,n))}function Oe(e){return e instanceof xe}const Ae=C(\"INSERT_TABLE_COMMAND\");function Ke(e,...t){const n=new URL(\"https://lexical.dev/docs/error\"),o=new URLSearchParams;o.append(\"code\",e);for(const e of t)o.append(\"v\",e);throw n.search=o.toString(),Error(`Minified Lexical error #${e}; visit ${n.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}class Ee extends u{__height;static getType(){return\"tablerow\"}static clone(e){return new Ee(e.__height,e.__key)}static importDOM(){return{tr:e=>({conversion:ke,priority:0})}}static importJSON(e){return Me().updateFromJSON(e)}updateFromJSON(e){return super.updateFromJSON(e).setHeight(e.height)}constructor(e,t){super(t),this.__height=e}exportJSON(){const e=this.getHeight();return{...super.exportJSON(),...void 0===e?void 0:{height:e}}}createDOM(t){const n=document.createElement(\"tr\");return this.__height&&(n.style.height=`${this.__height}px`),e(n,t.theme.tableRow),n}extractWithChild(e,t,n){return\"html\"===n}isShadowRoot(){return!0}setHeight(e){const t=this.getWritable();return t.__height=e,t}getHeight(){return this.getLatest().__height}updateDOM(e){return e.__height!==this.__height}canBeEmpty(){return!1}canIndent(){return!1}}function ke(e){const n=e;let o;return Ne.test(n.style.height)&&(o=parseFloat(n.style.height)),{after:e=>t(e,Oe),node:Me(o)}}function Me(e){return p(new Ee(e))}function $e(e){return e instanceof Ee}const ze=\"undefined\"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement,We=ze&&\"documentMode\"in document?document.documentMode:null,He=ze&&/^(?!.*Seamonkey)(?=.*Firefox).*/i.test(navigator.userAgent);function Le(e,t,n=!0){const o=gn();for(let r=0;r<e;r++){const e=Me();for(let o=0;o<t;o++){let t=ve.NO_STATUS;\"object\"==typeof n?(0===r&&n.rows&&(t|=ve.ROW),0===o&&n.columns&&(t|=ve.COLUMN)):n&&(0===r&&(t|=ve.ROW),0===o&&(t|=ve.COLUMN));const l=Fe(t),s=m();s.append(_()),l.append(s),e.append(l)}o.append(e)}return o}function Be(e){const t=n(e,e=>Oe(e));return Oe(t)?t:null}function Pe(e){const t=n(e,e=>$e(e));if($e(t))return t;throw new Error(\"Expected table cell to be inside of table row.\")}function De(e){const t=n(e,e=>mn(e));if(mn(t))return t;throw new Error(\"Expected table cell to be inside of table.\")}function Ie(e){const t=Pe(e);return De(t).getChildren().findIndex(e=>e.is(t))}function Ue(e){return Pe(e).getChildren().findIndex(t=>t.is(e))}function Je(e,t){const n=De(e),{x:o,y:r}=n.getCordsFromCellNode(e,t);return{above:n.getCellNodeFromCords(o,r-1,t),below:n.getCellNodeFromCords(o,r+1,t),left:n.getCellNodeFromCords(o-1,r,t),right:n.getCellNodeFromCords(o+1,r,t)}}function Ye(e,t){const n=e.getChildren();if(t>=n.length||t<0)throw new Error(\"Expected table cell to be inside of table row.\");return n[t].remove(),e}function Xe(e,t,n=!0,o,r){const l=e.getChildren();if(t>=l.length||t<0)throw new Error(\"Table row target index out of range\");const s=l[t];if(!$e(s))throw new Error(\"Row before insertion index does not exist.\");for(let e=0;e<o;e++){const e=s.getChildren(),t=e.length,o=Me();for(let n=0;n<t;n++){const t=e[n];Oe(t)||Ke(12);const{above:l,below:s}=Je(t,r);let i=ve.NO_STATUS;const c=l&&l.getWidth()||s&&s.getWidth()||void 0;(l&&l.hasHeaderState(ve.COLUMN)||s&&s.hasHeaderState(ve.COLUMN))&&(i|=ve.COLUMN);const a=Fe(i,1,c);a.append(m()),o.append(a)}n?s.insertAfter(o):s.insertBefore(o)}return e}ze&&\"InputEvent\"in window&&!We&&new window.InputEvent(\"input\");const qe=(e,t)=>e===ve.BOTH||e===t?t:ve.NO_STATUS;function je(e=!0){const t=S();w(t)||wt(t)||Ke(188);const n=t.anchor.getNode(),o=t.focus.getNode(),[r]=mt(n),[l,,s]=mt(o),[,i,c]=ft(s,l,r),{startRow:a}=c,{startRow:u}=i;return e?Ge(a+r.__rowSpan>u+l.__rowSpan?r:l,!0):Ge(u<a?l:r,!1)}const Ve=je;function Ge(e,t=!0){const[,,n]=mt(e),[o,r]=ft(n,e,e),l=o[0].length,{startRow:s}=r;let i=null;if(t){const t=s+e.__rowSpan-1,r=o[t],c=Me();for(let e=0;e<l;e++){const{cell:n,startRow:o}=r[e];if(o+n.__rowSpan-1<=t){const t=r[e].cell.__headerState,n=qe(t,ve.COLUMN);c.append(Fe(n).append(m()))}else n.setRowSpan(n.__rowSpan+1)}const a=n.getChildAtIndex(t);$e(a)||Ke(256),a.insertAfter(c),i=c}else{const e=s,t=o[e],r=Me();for(let n=0;n<l;n++){const{cell:o,startRow:l}=t[n];if(l===e){const e=t[n].cell.__headerState,o=qe(e,ve.COLUMN);r.append(Fe(o).append(m()))}else o.setRowSpan(o.__rowSpan+1)}const c=n.getChildAtIndex(e);$e(c)||Ke(257),c.insertBefore(r),i=r}return i}function Qe(e,t,n=!0,o,r){const l=e.getChildren(),s=[];for(let e=0;e<l.length;e++){const n=l[e];if($e(n))for(let e=0;e<o;e++){const e=n.getChildren();if(t>=e.length||t<0)throw new Error(\"Table column target index out of range\");const o=e[t];Oe(o)||Ke(12);const{left:l,right:i}=Je(o,r);let c=ve.NO_STATUS;(l&&l.hasHeaderState(ve.ROW)||i&&i.hasHeaderState(ve.ROW))&&(c|=ve.ROW);const a=Fe(c);a.append(m()),s.push({newTableCell:a,targetCell:o})}}return s.forEach(({newTableCell:e,targetCell:t})=>{n?t.insertAfter(e):t.insertBefore(e)}),e}function Ze(e=!0){const t=S();w(t)||wt(t)||Ke(188);const n=t.anchor.getNode(),o=t.focus.getNode(),[r]=mt(n),[l,,s]=mt(o),[,i,c]=ft(s,l,r),{startColumn:a}=c,{startColumn:u}=i;return e?tt(a+r.__colSpan>u+l.__colSpan?r:l,!0):tt(u<a?l:r,!1)}const et=Ze;function tt(e,t=!0,n=!0){const[,,o]=mt(e),[r,l]=ft(o,e,e),s=r.length,{startColumn:i}=l,c=t?i+e.__colSpan-1:i-1,a=o.getFirstChild();$e(a)||Ke(120);let u=null;function h(e=ve.NO_STATUS){const t=Fe(e).append(m());return null===u&&(u=t),t}let d=a;e:for(let e=0;e<s;e++){if(0!==e){const e=d.getNextSibling();$e(e)||Ke(121),d=e}const t=r[e],n=t[c<0?0:c].cell.__headerState,o=qe(n,ve.ROW);if(c<0){ct(d,h(o));continue}const{cell:l,startColumn:s,startRow:i}=t[c];if(s+l.__colSpan-1<=c){let n=l,r=i,s=c;for(;r!==e&&n.__rowSpan>1;){if(s-=l.__colSpan,!(s>=0)){d.append(h(o));continue e}{const{cell:e,startRow:o}=t[s];n=e,r=o}}n.insertAfter(h(o))}else l.setColSpan(l.__colSpan+1)}null!==u&&n&&it(u);const f=o.getColWidths();if(f){const e=[...f],t=c<0?0:c,n=e[t];e.splice(t,0,n),o.setColWidths(e)}return u}function nt(e,t){const n=e.getChildren();for(let e=0;e<n.length;e++){const o=n[e];if($e(o)){const e=o.getChildren();if(t>=e.length||t<0)throw new Error(\"Table column target index out of range\");e[t].remove()}}return e}function ot(){const e=S();w(e)||wt(e)||Ke(188);const[t,n]=e.isBackward()?[e.focus.getNode(),e.anchor.getNode()]:[e.anchor.getNode(),e.focus.getNode()],[o,,r]=mt(t),[l]=mt(n),[s,i,c]=ft(r,o,l),{startRow:a}=i,{startRow:u}=c,h=u+l.__rowSpan-1;if(s.length===h-a+1)return void r.remove();const d=s[0].length,f=s[h+1],g=r.getChildAtIndex(h+1);for(let e=h;e>=a;e--){for(let t=d-1;t>=0;t--){const{cell:n,startRow:o,startColumn:r}=s[e][t];if(r===t){if(o<a||o+n.__rowSpan-1>h){const e=Math.max(o,a),t=Math.min(n.__rowSpan+o-1,h),r=e<=t?t-e+1:0;n.setRowSpan(n.__rowSpan-r)}if(o>=a&&o+n.__rowSpan-1>h&&e===h){null===g&&Ke(122);let o=null;for(let n=0;n<t;n++){const t=f[n],r=t.cell;t.startRow===e+1&&(o=r),r.__colSpan>1&&(n+=r.__colSpan-1)}null===o?ct(g,n):o.insertAfter(n)}}}const t=r.getChildAtIndex(e);$e(t)||Ke(206,String(e)),t.remove()}if(void 0!==f){const{cell:e}=f[0];it(e)}else{const e=s[a-1],{cell:t}=e[0];it(t)}}const rt=ot;function lt(){const e=S();w(e)||wt(e)||Ke(188);const t=e.anchor.getNode(),n=e.focus.getNode(),[o,,r]=mt(t),[l]=mt(n),[s,i,c]=ft(r,o,l),{startColumn:a}=i,{startRow:u,startColumn:h}=c,d=Math.min(a,h),f=Math.max(a+o.__colSpan-1,h+l.__colSpan-1),g=f-d+1;if(s[0].length===f-d+1)return r.selectPrevious(),void r.remove();const m=s.length;for(let e=0;e<m;e++)for(let t=d;t<=f;t++){const{cell:n,startColumn:o}=s[e][t];if(o<d){if(t===d){const e=d-o;n.setColSpan(n.__colSpan-Math.min(g,n.__colSpan-e))}}else if(o+n.__colSpan-1>f){if(t===f){const e=f-o+1;n.setColSpan(n.__colSpan-e)}}else n.remove()}const p=s[u],C=a>h?p[a+o.__colSpan]:p[h+l.__colSpan];if(void 0!==C){const{cell:e}=C;it(e)}else{const e=h<a?p[h-1]:p[a-1],{cell:t}=e;it(t)}const _=r.getColWidths();if(_){const e=[..._];e.splice(d,g),r.setColWidths(e)}}const st=lt;function it(e){const t=e.getFirstDescendant();null==t?e.selectStart():t.getParentOrThrow().selectStart()}function ct(e,t){const n=e.getFirstChild();null!==n?n.insertBefore(t):e.append(t)}function at(e){if(0===e.length)return null;const t=De(e[0]),[n]=gt(t,null,null);let o=1/0,r=-1/0,l=1/0,s=-1/0;const i=new Set;for(const t of n)for(const n of t){if(!n||!n.cell)continue;const t=n.cell.getKey();if(!i.has(t)&&e.some(e=>e.is(n.cell))){i.add(t);const e=n.startRow,c=n.startColumn,a=n.cell.__rowSpan||1,u=n.cell.__colSpan||1;o=Math.min(o,e),r=Math.max(r,e+a-1),l=Math.min(l,c),s=Math.max(s,c+u-1)}}if(o===1/0||l===1/0)return null;const c=r-o+1,a=s-l+1,u=n[o][l];if(!u.cell)return null;const h=u.cell;h.setColSpan(a),h.setRowSpan(c);const d=new Set([h.getKey()]);for(let e=o;e<=r;e++)for(let t=l;t<=s;t++){const o=n[e][t];if(!o.cell)continue;const r=o.cell,l=r.getKey();if(!d.has(l)){d.add(l);ut(r)||h.append(...r.getChildren()),r.remove()}}return 0===h.getChildrenSize()&&h.append(m()),h}function ut(e){if(1!==e.getChildrenSize())return!1;const t=e.getFirstChildOrThrow();return!(!b(t)||!t.isEmpty())}function ht(){const e=S();w(e)||wt(e)||Ke(188);const t=e.anchor.getNode(),o=n(t,Oe);return Oe(o)||Ke(148),dt(o)}function dt(e){const[t,n,o]=mt(e),r=t.__colSpan,l=t.__rowSpan;if(1===r&&1===l)return;const[s,i]=ft(o,t,t),{startColumn:c,startRow:a}=i,u=t.__headerState&ve.COLUMN,h=Array.from({length:r},(e,t)=>{let n=u;for(let e=0;0!==n&&e<s.length;e++)n&=s[e][t+c].cell.__headerState;return n}),d=t.__headerState&ve.ROW,f=Array.from({length:l},(e,t)=>{let n=d;for(let e=0;0!==n&&e<s[0].length;e++)n&=s[t+a][e].cell.__headerState;return n});if(r>1){for(let e=1;e<r;e++)t.insertAfter(Fe(h[e]|f[0]).append(m()));t.setColSpan(1)}if(l>1){let e;for(let t=1;t<l;t++){const o=a+t,l=s[o];e=(e||n).getNextSibling(),$e(e)||Ke(125);let i=null;for(let e=0;e<c;e++){const t=l[e],n=t.cell;t.startRow===o&&(i=n),n.__colSpan>1&&(e+=n.__colSpan-1)}if(null===i)for(let n=r-1;n>=0;n--)ct(e,Fe(h[n]|f[t]).append(m()));else for(let e=r-1;e>=0;e--)i.insertAfter(Fe(h[e]|f[t]).append(m()))}t.setRowSpan(1)}}function ft(e,t,n){const[o,r,l]=gt(e,t,n);return null===r&&Ke(207),null===l&&Ke(208),[o,r,l]}function gt(e,t,n){const o=[];let r=null,l=null;function s(e){let t=o[e];return void 0===t&&(o[e]=t=[]),t}const i=e.getChildren();for(let e=0;e<i.length;e++){const o=i[e];$e(o)||Ke(209);const c=s(e);for(let a=o.getFirstChild(),u=0;null!=a;a=a.getNextSibling()){for(Oe(a)||Ke(147);void 0!==c[u];)u++;const o={cell:a,startColumn:u,startRow:e},{__rowSpan:h,__colSpan:d}=a;for(let t=0;t<h&&!(e+t>=i.length);t++){const n=s(e+t);for(let e=0;e<d;e++)n[u+e]=o}null!==t&&null===r&&t.is(a)&&(r=o),null!==n&&null===l&&n.is(a)&&(l=o)}}return[o,r,l]}function mt(e){let t;if(e instanceof xe)t=e;else if(\"__type\"in e){const o=n(e,Oe);Oe(o)||Ke(148),t=o}else{const o=n(e.getNode(),Oe);Oe(o)||Ke(148),t=o}const o=t.getParent();$e(o)||Ke(149);const r=o.getParent();return mn(r)||Ke(210),[t,o,r]}function pt(e,t,n){let o,r=Math.min(t.startColumn,n.startColumn),l=Math.min(t.startRow,n.startRow),s=Math.max(t.startColumn+t.cell.__colSpan-1,n.startColumn+n.cell.__colSpan-1),i=Math.max(t.startRow+t.cell.__rowSpan-1,n.startRow+n.cell.__rowSpan-1);do{o=!1;for(let t=0;t<e.length;t++)for(let n=0;n<e[0].length;n++){const c=e[t][n];if(!c)continue;const a=c.startColumn+c.cell.__colSpan-1,u=c.startRow+c.cell.__rowSpan-1,h=c.startColumn<=s&&a>=r,d=c.startRow<=i&&u>=l;if(h&&d){const e=Math.min(r,c.startColumn),t=Math.max(s,a),n=Math.min(l,c.startRow),h=Math.max(i,u);e===r&&t===s&&n===l&&h===i||(r=e,s=t,l=n,i=h,o=!0)}}}while(o);return{maxColumn:s,maxRow:i,minColumn:r,minRow:l}}function Ct(e){const[t,,n]=mt(e),o=n.getChildren(),r=o.length,l=o[0].getChildren().length,s=new Array(r);for(let e=0;e<r;e++)s[e]=new Array(l);for(let e=0;e<r;e++){const n=o[e].getChildren();let r=0;for(let o=0;o<n.length;o++){for(;s[e][r];)r++;const l=n[o],i=l.__rowSpan||1,c=l.__colSpan||1;for(let t=0;t<i;t++)for(let n=0;n<c;n++)s[e+t][r+n]=l;if(t===l)return{colSpan:c,columnIndex:r,rowIndex:e,rowSpan:i};r+=c}}return null}function _t(e){const[[t,o,r,l],[s,i,c,a]]=[\"anchor\",\"focus\"].map(t=>{const o=e[t].getNode(),r=n(o,Oe);Oe(r)||Ke(238,t,o.getKey(),o.getType());const l=r.getParent();$e(l)||Ke(239,t);const s=l.getParent();return mn(s)||Ke(240,t),[o,r,l,s]});return l.is(a)||Ke(241),{anchorCell:o,anchorNode:t,anchorRow:r,anchorTable:l,focusCell:i,focusNode:s,focusRow:c,focusTable:a}}class St{tableKey;anchor;focus;_cachedNodes;dirty;constructor(e,t,n){this.anchor=t,this.focus=n,t._selection=this,n._selection=this,this._cachedNodes=null,this.dirty=!1,this.tableKey=e}getStartEndPoints(){return[this.anchor,this.focus]}isValid(){if(\"root\"===this.tableKey||\"root\"===this.anchor.key||\"element\"!==this.anchor.type||\"root\"===this.focus.key||\"element\"!==this.focus.type)return!1;const e=N(this.tableKey),t=N(this.anchor.key),n=N(this.focus.key);return null!==e&&null!==t&&null!==n}isBackward(){return this.focus.isBefore(this.anchor)}getCachedNodes(){return this._cachedNodes}setCachedNodes(e){this._cachedNodes=e}is(e){return wt(e)&&this.tableKey===e.tableKey&&this.anchor.is(e.anchor)&&this.focus.is(e.focus)}set(e,t,n){this.dirty=this.dirty||e!==this.tableKey||t!==this.anchor.key||n!==this.focus.key,this.tableKey=e,this.anchor.key=t,this.focus.key=n,this._cachedNodes=null}clone(){return new St(this.tableKey,y(this.anchor.key,this.anchor.offset,this.anchor.type),y(this.focus.key,this.focus.offset,this.focus.type))}isCollapsed(){return!1}extract(){return this.getNodes()}insertRawText(e){}insertText(){}hasFormat(e){let t=0;this.getNodes().filter(Oe).forEach(e=>{const n=e.getFirstChild();b(n)&&(t|=n.getTextFormat())});const n=R[e];return 0!==(t&n)}insertNodes(e){const t=this.focus.getNode();v(t)||Ke(151);x(t.select(0,t.getChildrenSize())).insertNodes(e)}getShape(){const{anchorCell:e,focusCell:t}=_t(this),n=Ct(e);null===n&&Ke(153);const o=Ct(t);null===o&&Ke(155);const r=Math.min(n.columnIndex,o.columnIndex),l=Math.max(n.columnIndex+n.colSpan-1,o.columnIndex+o.colSpan-1),s=Math.min(n.rowIndex,o.rowIndex),i=Math.max(n.rowIndex+n.rowSpan-1,o.rowIndex+o.rowSpan-1);return{fromX:Math.min(r,l),fromY:Math.min(s,i),toX:Math.max(r,l),toY:Math.max(s,i)}}getNodes(){if(!this.isValid())return[];const e=this._cachedNodes;if(null!==e)return e;const{anchorTable:t,anchorCell:n,focusCell:o}=_t(this),r=o.getParents()[1];if(r!==t){if(t.isParentOf(o)){const e=r.getParent();null==e&&Ke(159),this.set(this.tableKey,o.getKey(),e.getKey())}else{const e=t.getParent();null==e&&Ke(158),this.set(this.tableKey,e.getKey(),o.getKey())}return this.getNodes()}const[l,s,i]=ft(t,n,o),{minColumn:c,maxColumn:a,minRow:u,maxRow:h}=pt(l,s,i),d=new Map([[t.getKey(),t]]);let f=null;for(let e=u;e<=h;e++)for(let t=c;t<=a;t++){const{cell:n}=l[e][t],o=n.getParent();$e(o)||Ke(160),o!==f&&(d.set(o.getKey(),o),f=o),d.has(n.getKey())||Nt(n,e=>{d.set(e.getKey(),e)})}const g=Array.from(d.values());return T()||(this._cachedNodes=g),g}getTextContent(){const e=this.getNodes().filter(e=>Oe(e));let t=\"\";for(let n=0;n<e.length;n++){const o=e[n],r=o.__parent,l=(e[n+1]||{}).__parent;t+=o.getTextContent()+(l!==r?\"\\n\":\"\\t\")}return t}}function wt(e){return e instanceof St}function bt(){const e=y(\"root\",0,\"element\"),t=y(\"root\",0,\"element\");return new St(\"root\",e,t)}function yt(e,t,n){e.getKey(),t.getKey(),n.getKey();const o=S(),r=wt(o)?o.clone():bt();return r.set(e.getKey(),t.getKey(),n.getKey()),r}function Nt(e,t){const n=[[e]];for(let e=n.at(-1);void 0!==e&&n.length>0;e=n.at(-1)){const o=e.pop();void 0===o?n.pop():!1!==t(o)&&v(o)&&n.push(o.getChildren())}}function vt(e,t=F()){const n=N(e);mn(n)||Ke(231,e);const o=Ft(n,t.getElementByKey(e));return null===o&&Ke(232,e),{tableElement:o,tableNode:n}}class xt{focusX;focusY;listenersToRemove;table;isHighlightingCells;anchorX;anchorY;tableNodeKey;anchorCell;focusCell;anchorCellNodeKey;focusCellNodeKey;editor;tableSelection;hasHijackedSelectionStyles;isSelecting;pointerType;shouldCheckSelection;abortController;listenerOptions;nextFocus;constructor(e,t){this.isHighlightingCells=!1,this.anchorX=-1,this.anchorY=-1,this.focusX=-1,this.focusY=-1,this.listenersToRemove=new Set,this.tableNodeKey=t,this.editor=e,this.table={columns:0,domRows:[],rows:0},this.tableSelection=null,this.anchorCellNodeKey=null,this.focusCellNodeKey=null,this.anchorCell=null,this.focusCell=null,this.hasHijackedSelectionStyles=!1,this.isSelecting=!1,this.pointerType=null,this.shouldCheckSelection=!1,this.abortController=new AbortController,this.listenerOptions={signal:this.abortController.signal},this.nextFocus=null,this.trackTable()}getTable(){return this.table}removeListeners(){this.abortController.abort(\"removeListeners\"),Array.from(this.listenersToRemove).forEach(e=>e()),this.listenersToRemove.clear()}$lookup(){return vt(this.tableNodeKey,this.editor)}trackTable(){const e=new MutationObserver(e=>{this.editor.getEditorState().read(()=>{let t=!1;for(let n=0;n<e.length;n++){const o=e[n].target.nodeName;if(\"TABLE\"===o||\"TBODY\"===o||\"THEAD\"===o||\"TR\"===o){t=!0;break}}if(!t)return;const{tableNode:n,tableElement:o}=this.$lookup();this.table=Ht(n,o)},{editor:this.editor})});this.editor.getEditorState().read(()=>{const{tableNode:t,tableElement:n}=this.$lookup();this.table=Ht(t,n),e.observe(n,{attributes:!0,childList:!0,subtree:!0})},{editor:this.editor})}$clearHighlight(){const e=this.editor;this.isHighlightingCells=!1,this.anchorX=-1,this.anchorY=-1,this.focusX=-1,this.focusY=-1,this.tableSelection=null,this.anchorCellNodeKey=null,this.focusCellNodeKey=null,this.anchorCell=null,this.focusCell=null,this.hasHijackedSelectionStyles=!1,this.$enableHighlightStyle();const{tableNode:t,tableElement:n}=this.$lookup();Lt(e,Ht(t,n),null),null!==S()&&(O(null),e.dispatchCommand(A,void 0))}$enableHighlightStyle(){const e=this.editor,{tableElement:t}=this.$lookup();o(t,e._config.theme.tableSelection),t.classList.remove(\"disable-selection\"),this.hasHijackedSelectionStyles=!1}$disableHighlightStyle(){const{tableElement:t}=this.$lookup();e(t,this.editor._config.theme.tableSelection),this.hasHijackedSelectionStyles=!0}$updateTableTableSelection(e){if(null!==e){e.tableKey!==this.tableNodeKey&&Ke(233,e.tableKey,this.tableNodeKey);const t=this.editor;this.tableSelection=e,this.isHighlightingCells=!0,this.$disableHighlightStyle(),this.updateDOMSelection(),Lt(t,this.table,this.tableSelection)}else this.$clearHighlight()}setShouldCheckSelection(){this.shouldCheckSelection=!0}getAndClearShouldCheckSelection(){return!!this.shouldCheckSelection&&(this.shouldCheckSelection=!1,!0)}setNextFocus(e){this.nextFocus=e}getAndClearNextFocus(){const{nextFocus:e}=this;return null!==e&&(this.nextFocus=null),e}updateDOMSelection(){if(null!==this.anchorCell&&null!==this.focusCell){const e=K(this.editor._window);e&&e.rangeCount>0&&e.removeAllRanges()}}$setFocusCellForSelection(e,t=!1){const n=this.editor,{tableNode:o}=this.$lookup(),r=e.x,l=e.y;if(this.focusCell=e,this.isHighlightingCells||this.anchorX===r&&this.anchorY===l&&!t){if(r===this.focusX&&l===this.focusY)return!1}else this.isHighlightingCells=!0,this.$disableHighlightStyle();if(this.focusX=r,this.focusY=l,this.isHighlightingCells){const t=ln(o,e.elem);if(null!=this.tableSelection&&null!=this.anchorCellNodeKey&&null!==t)return this.focusCellNodeKey=t.getKey(),this.tableSelection=yt(o,this.$getAnchorTableCellOrThrow(),t),O(this.tableSelection),n.dispatchCommand(A,void 0),Lt(n,this.table,this.tableSelection),!0}return!1}$getAnchorTableCell(){return this.anchorCellNodeKey?N(this.anchorCellNodeKey):null}$getAnchorTableCellOrThrow(){const e=this.$getAnchorTableCell();return null===e&&Ke(234),e}$getFocusTableCell(){return this.focusCellNodeKey?N(this.focusCellNodeKey):null}$getFocusTableCellOrThrow(){const e=this.$getFocusTableCell();return null===e&&Ke(235),e}$setAnchorCellForSelection(e){this.isHighlightingCells=!1,this.anchorCell=e,this.anchorX=e.x,this.anchorY=e.y;const{tableNode:t}=this.$lookup(),n=ln(t,e.elem);if(null!==n){const e=n.getKey();this.tableSelection=null!=this.tableSelection?this.tableSelection.clone():bt(),this.anchorCellNodeKey=e}}$formatCells(e){const t=S();wt(t)||Ke(236);const n=E(),o=n.anchor,r=n.focus,l=t.getNodes().filter(Oe);l.length>0||Ke(237);const s=l[0].getFirstChild(),i=b(s)?s.getFormatFlags(e,null):null;l.forEach(t=>{o.set(t.getKey(),0,\"element\"),r.set(t.getKey(),t.getChildrenSize(),\"element\"),n.formatText(e,i)}),O(t),this.editor.dispatchCommand(A,void 0)}$clearText(){const{editor:e}=this,t=N(this.tableNodeKey);if(!mn(t))throw new Error(\"Expected TableNode.\");const n=S();wt(n)||Ke(253);const o=n.getNodes().filter(Oe),r=t.getFirstChild(),l=t.getLastChild();if(o.length>0&&null!==r&&null!==l&&$e(r)&&$e(l)&&o[0]===r.getFirstChild()&&o[o.length-1]===l.getLastChild()){t.selectPrevious();const n=t.getParent();return t.remove(),void(k(n)&&n.isEmpty()&&e.dispatchCommand(M,void 0))}o.forEach(e=>{if(v(e)){const t=m(),n=_();t.append(n),e.append(t),e.getChildren().forEach(e=>{e!==t&&e.remove()})}}),Lt(e,this.table,null),O(null),e.dispatchCommand(A,void 0)}}const Tt=\"__lexicalTableSelection\";function Rt(e){return h(e)&&\"TABLE\"===e.nodeName}function Ft(e,t){if(!t)return t;const n=Rt(t)?t:e.getDOMSlot(t).element;return\"TABLE\"!==n.nodeName&&Ke(245,t.nodeName),n}function Ot(e){return e._window}function At(e,t){for(let n=t,o=null;null!==n;n=n.getParent()){if(e.is(n))return o;Oe(n)&&(o=n)}return null}const Kt=[[$,\"down\"],[z,\"up\"],[W,\"backward\"],[H,\"forward\"]],Et=[P,D,I],kt=[U,J];function Mt(e,t,o,l){const s=o.getRootElement(),i=Ot(o);null!==s&&null!==i||Ke(246);const c=new xt(o,e.getKey()),a=Ft(e,t);!function(e,t){null!==$t(e)&&Ke(205);e[Tt]=t}(a,c),c.listenersToRemove.add(()=>function(e,t){$t(e)===t&&delete e[Tt]}(a,c));const u=t=>{if(c.pointerType=t.pointerType,0!==t.button||!ne(t.target)||!i)return;const n=zt(t.target);null!==n&&o.update(()=>{const o=Z();if(He&&t.shiftKey&&Xt(o,e)&&(w(o)||wt(o))){const r=o.anchor.getNode(),l=At(e,o.anchor.getNode());if(l)c.$setAnchorCellForSelection(rn(c,l)),c.$setFocusCellForSelection(n),tn(t);else{(e.isBefore(r)?e.selectStart():e.selectEnd()).anchor.set(o.anchor.key,o.anchor.offset,o.anchor.type)}}else\"touch\"!==t.pointerType&&c.$setAnchorCellForSelection(n)}),(()=>{if(c.isSelecting)return;const e=()=>{c.isSelecting=!1,i.removeEventListener(\"pointerup\",e),i.removeEventListener(\"pointermove\",t)},t=n=>{if(1&~n.buttons&&c.isSelecting)return c.isSelecting=!1,i.removeEventListener(\"pointerup\",e),void i.removeEventListener(\"pointermove\",t);if(!ne(n.target))return;let r=null;const l=!(He||a.contains(n.target));if(l)r=Wt(a,n.target);else for(const e of document.elementsFromPoint(n.clientX,n.clientY))if(r=Wt(a,e),r)break;!r||null!==c.focusCell&&r.elem===c.focusCell.elem||(c.setNextFocus({focusCell:r,override:l}),o.dispatchCommand(A,void 0))};c.isSelecting=!0,i.addEventListener(\"pointerup\",e,c.listenerOptions),i.addEventListener(\"pointermove\",t,c.listenerOptions)})()};a.addEventListener(\"pointerdown\",u,c.listenerOptions),c.listenersToRemove.add(()=>{a.removeEventListener(\"pointerdown\",u)});const h=e=>{if(e.detail>=3&&ne(e.target)){null!==zt(e.target)&&e.preventDefault()}};a.addEventListener(\"mousedown\",h,c.listenerOptions),c.listenersToRemove.add(()=>{a.removeEventListener(\"mousedown\",h)});const d=e=>{const t=e.target;0===e.button&&ne(t)&&o.update(()=>{const e=S();wt(e)&&e.tableKey===c.tableNodeKey&&s.contains(t)&&c.$clearHighlight()})};i.addEventListener(\"pointerdown\",d,c.listenerOptions),c.listenersToRemove.add(()=>{i.removeEventListener(\"pointerdown\",d)});for(const[t,n]of Kt)c.listenersToRemove.add(o.registerCommand(t,t=>en(o,t,n,e,c),L));c.listenersToRemove.add(o.registerCommand(B,t=>{const n=S();if(wt(n)){const o=At(e,n.focus.getNode());if(null!==o)return tn(t),o.selectEnd(),!0}return!1},L));const g=t=>()=>{const o=S();if(!Xt(o,e))return!1;if(wt(o))return c.$clearText(),!0;if(w(o)){if(!Oe(At(e,o.anchor.getNode())))return!1;const r=o.anchor.getNode(),l=o.focus.getNode(),s=e.isParentOf(r),i=e.isParentOf(l);if(s&&!i||i&&!s)return c.$clearText(),!0;const a=n(o.anchor.getNode(),e=>v(e)),u=a&&n(a,e=>v(e)&&Oe(e.getParent()));if(!v(u)||!v(a))return!1;if(t===D&&null===u.getPreviousSibling())return!0}return!1};for(const e of Et)c.listenersToRemove.add(o.registerCommand(e,g(e),L));const p=t=>{const n=S();if(!wt(n)&&!w(n))return!1;const o=e.isParentOf(n.anchor.getNode());if(o!==e.isParentOf(n.focus.getNode())){const t=o?\"anchor\":\"focus\",r=o?\"focus\":\"anchor\",{key:l,offset:s,type:i}=n[r];return e[n[t].isBefore(n[r])?\"selectPrevious\":\"selectNext\"]()[r].set(l,s,i),!1}return!!Xt(n,e)&&(!!wt(n)&&(t&&(t.preventDefault(),t.stopPropagation()),c.$clearText(),!0))};for(const e of kt)c.listenersToRemove.add(o.registerCommand(e,p,L));return c.listenersToRemove.add(o.registerCommand(Y,e=>{const t=S();if(t){if(!wt(t)&&!w(t))return!1;be(o,r(e,ClipboardEvent)?e:null,ye(t));const n=p(e);return w(t)?(t.removeText(),!0):n}return!1},L)),c.listenersToRemove.add(o.registerCommand(X,t=>{const o=S();if(!Xt(o,e))return!1;if(wt(o))return c.$formatCells(t),!0;if(w(o)){const e=n(o.anchor.getNode(),e=>Oe(e));if(!Oe(e))return!1}return!1},L)),c.listenersToRemove.add(o.registerCommand(q,t=>{const n=S();if(!wt(n)||!Xt(n,e))return!1;const o=n.anchor.getNode(),r=n.focus.getNode();if(!Oe(o)||!Oe(r))return!1;if(function(e,t){if(wt(e)){const n=e.anchor.getNode(),o=e.focus.getNode();if(t&&n&&o){const[e]=ft(t,n,o);return n.getKey()===e[0][0].cell.getKey()&&o.getKey()===e[e.length-1].at(-1).cell.getKey()}}return!1}(n,e))return e.setFormat(t),!0;const[l,s,i]=ft(e,o,r),c=Math.max(s.startRow+s.cell.__rowSpan-1,i.startRow+i.cell.__rowSpan-1),a=Math.max(s.startColumn+s.cell.__colSpan-1,i.startColumn+i.cell.__colSpan-1),u=Math.min(s.startRow,i.startRow),h=Math.min(s.startColumn,i.startColumn),d=new Set;for(let e=u;e<=c;e++)for(let n=h;n<=a;n++){const o=l[e][n].cell;if(d.has(o))continue;d.add(o),o.setFormat(t);const r=o.getChildren();for(let e=0;e<r.length;e++){const n=r[e];v(n)&&!n.isInline()&&n.setFormat(t)}}return!0},L)),c.listenersToRemove.add(o.registerCommand(j,t=>{const r=S();if(!Xt(r,e))return!1;if(wt(r))return c.$clearHighlight(),!1;if(w(r)){const l=n(r.anchor.getNode(),e=>Oe(e));if(!Oe(l))return!1;if(\"string\"==typeof t){const n=on(o,r,e);if(n)return nn(n,e,[_(t)]),!0}}return!1},L)),l&&c.listenersToRemove.add(o.registerCommand(V,t=>{const o=S();if(!w(o)||!o.isCollapsed()||!Xt(o,e))return!1;const r=Gt(o.anchor.getNode());return!(null===r||!e.is(Qt(r)))&&(tn(t),function(e,t){const o=\"next\"===t?\"getNextSibling\":\"getPreviousSibling\",r=\"next\"===t?\"getFirstChild\":\"getLastChild\",l=e[o]();if(v(l))return l.selectEnd();const s=n(e,$e);null===s&&Ke(247);for(let e=s[o]();$e(e);e=e[o]()){const t=e[r]();if(v(t))return t.selectEnd()}const i=n(s,mn);null===i&&Ke(248);\"next\"===t?i.selectNext():i.selectPrevious()}(r,t.shiftKey?\"previous\":\"next\"),!0)},L)),c.listenersToRemove.add(o.registerCommand(G,t=>e.isSelected(),L)),c.listenersToRemove.add(o.registerCommand(Q,(e,t)=>{if(o!==t)return!1;const{nodes:r,selection:l}=e,s=l.getStartEndPoints(),i=wt(l),c=w(l)&&null!==n(l.anchor.getNode(),e=>Oe(e))&&null!==n(l.focus.getNode(),e=>Oe(e))||i;if(1!==r.length||!mn(r[0])||!c||null===s)return!1;const[a,u]=s,[h,d,g]=mt(a),p=n(u.getNode(),e=>Oe(e));if(!(Oe(h)&&Oe(p)&&$e(d)&&mn(g)))return!1;const C=r[0],[_,S,b]=ft(g,h,p),[y]=gt(C,null,null),N=_.length,v=N>0?_[0].length:0;let x=S.startRow,T=S.startColumn,R=y.length,F=R>0?y[0].length:0;if(i){const e=pt(_,S,b),t=e.maxRow-e.minRow+1,n=e.maxColumn-e.minColumn+1;x=e.minRow,T=e.minColumn,R=Math.min(R,t),F=Math.min(F,n)}let O=!1;const A=Math.min(N,x+R)-1,K=Math.min(v,T+F)-1,E=new Set;for(let e=x;e<=A;e++)for(let t=T;t<=K;t++){const n=_[e][t];E.has(n.cell.getKey())||(1===n.cell.__rowSpan&&1===n.cell.__colSpan||(dt(n.cell),E.add(n.cell.getKey()),O=!0))}let[k]=gt(g.getWritable(),null,null);const M=R-N+x;for(let e=0;e<M;e++){Ge(k[N-1][0].cell)}const $=F-v+T;for(let e=0;e<$;e++){tt(k[0][v-1].cell,!0,!1)}[k]=gt(g.getWritable(),null,null);for(let e=x;e<x+R;e++)for(let t=T;t<T+F;t++){const n=e-x,o=t-T,r=y[n][o];if(r.startRow!==n||r.startColumn!==o)continue;const l=r.cell;if(1!==l.__rowSpan||1!==l.__colSpan){const n=[],o=Math.min(e+l.__rowSpan,x+R)-1,r=Math.min(t+l.__colSpan,T+F)-1;for(let l=e;l<=o;l++)for(let e=t;e<=r;e++){const t=k[l][e];n.push(t.cell)}at(n),O=!0}const{cell:s}=k[e][t],i=s.getChildren();l.getChildren().forEach(e=>{if(f(e)){m().append(e),s.append(e)}else s.append(e)}),i.forEach(e=>e.remove())}if(i&&O){const[e]=gt(g.getWritable(),null,null);e[S.startRow][S.startColumn].cell.selectEnd()}return!0},L)),c.listenersToRemove.add(o.registerCommand(A,()=>{const t=S(),r=Z(),l=c.getAndClearNextFocus();if(null!==l){const{focusCell:n}=l;if(wt(t)&&t.tableKey===c.tableNodeKey)return(n.x!==c.focusX||n.y!==c.focusY)&&(c.$setFocusCellForSelection(n),!0);if(n!==c.anchorCell&&Xt(t,e))return c.$setFocusCellForSelection(n),!0}if(c.getAndClearShouldCheckSelection()&&w(r)&&w(t)&&t.isCollapsed()){const o=t.anchor.getNode(),r=e.getFirstChild(),l=Gt(o);if(null!==l&&$e(r)){const t=r.getFirstChild();if(Oe(t)&&e.is(n(l,n=>n.is(e)||n.is(t))))return t.selectStart(),!0}}if(w(t)){const{anchor:n,focus:l}=t,s=n.getNode(),i=l.getNode(),a=Gt(s),u=Gt(i),h=!(!a||!e.is(Qt(a))),d=!(!u||!e.is(Qt(u))),f=h!==d,g=h&&d,m=t.isBackward();if(f){const n=t.clone();if(d){const[t]=ft(e,u,u),o=t[0][0].cell,r=t[t.length-1].at(-1).cell;n.focus.set(m?o.getKey():r.getKey(),m?o.getChildrenSize():r.getChildrenSize(),\"element\")}else if(h){const[t]=ft(e,a,a),o=t[0][0].cell,r=t[t.length-1].at(-1).cell;n.anchor.set(m?r.getKey():o.getKey(),m?r.getChildrenSize():0,\"element\")}O(n),Pt(o,c)}else if(g&&(a.is(u)||(c.$setAnchorCellForSelection(rn(c,a)),c.$setFocusCellForSelection(rn(c,u),!0)),\"touch\"===c.pointerType&&c.isSelecting&&t.isCollapsed()&&w(r)&&r.isCollapsed())){const e=Gt(r.anchor.getNode());e&&!e.is(u)&&(c.$setAnchorCellForSelection(rn(c,e)),c.$setFocusCellForSelection(rn(c,u),!0),c.pointerType=null)}}else if(t&&wt(t)&&t.is(r)&&t.tableKey===e.getKey()){const n=K(i);if(n&&n.anchorNode&&n.focusNode){const r=ee(n.focusNode),l=r&&!e.isParentOf(r),s=ee(n.anchorNode),i=s&&e.isParentOf(s);if(l&&i&&n.rangeCount>0){const r=te(n,o);r&&(r.anchor.set(e.getKey(),t.isBackward()?e.getChildrenSize():0,\"element\"),n.removeAllRanges(),O(r))}}}return t&&!t.is(r)&&(wt(t)||wt(r))&&c.tableSelection&&!c.tableSelection.is(r)?(wt(t)&&t.tableKey===c.tableNodeKey?c.$updateTableTableSelection(t):!wt(t)&&wt(r)&&r.tableKey===c.tableNodeKey&&c.$updateTableTableSelection(null),!1):(c.hasHijackedSelectionStyles&&!e.isSelected()?function(e,t){t.$enableHighlightStyle(),Bt(t.table,t=>{const n=t.elem;t.highlighted=!1,Vt(e,t),n.getAttribute(\"style\")||n.removeAttribute(\"style\")})}(o,c):!c.hasHijackedSelectionStyles&&e.isSelected()&&Pt(o,c),!1)},L)),c.listenersToRemove.add(o.registerCommand(M,()=>{const t=S();if(!w(t)||!t.isCollapsed()||!Xt(t,e))return!1;const n=on(o,t,e);return!!n&&(nn(n,e),!0)},L)),c}function $t(e){return e[Tt]||null}function zt(e){let t=e;for(;null!=t;){const e=t.nodeName;if(\"TD\"===e||\"TH\"===e){const e=t._cell;return void 0===e?null:e}t=t.parentNode}return null}function Wt(e,t){if(!e.contains(t))return null;let n=null;for(let o=t;null!=o;o=o.parentNode){if(o===e)return n;const t=o.nodeName;\"TD\"!==t&&\"TH\"!==t||(n=o._cell||null)}return null}function Ht(e,t){const n=[],o={columns:0,domRows:n,rows:0};let r=Ft(e,t).querySelector(\"tr\"),l=0,s=0;for(n.length=0;null!=r;){const e=r.nodeName;if(\"TD\"===e||\"TH\"===e){const e={elem:r,hasBackgroundColor:\"\"!==r.style.backgroundColor,highlighted:!1,x:l,y:s};r._cell=e;let t=n[s];void 0===t&&(t=n[s]=[]),t[l]=e}else{const e=r.firstChild;if(null!=e){r=e;continue}}const t=r.nextSibling;if(null!=t){l++,r=t;continue}const o=r.parentNode;if(null!=o){const e=o.nextSibling;if(null==e)break;s++,l=0,r=e}}return o.columns=l+1,o.rows=s+1,o}function Lt(e,t,n){const o=new Set(n?n.getNodes():[]);Bt(t,(t,n)=>{const r=t.elem;o.has(n)?(t.highlighted=!0,jt(e,t)):(t.highlighted=!1,Vt(e,t),r.getAttribute(\"style\")||r.removeAttribute(\"style\"))})}function Bt(e,t){const{domRows:n}=e;for(let e=0;e<n.length;e++){const o=n[e];if(o)for(let n=0;n<o.length;n++){const r=o[n];if(!r)continue;const l=ee(r.elem);null!==l&&t(r,l,{x:n,y:e})}}}function Pt(e,t){t.$disableHighlightStyle(),Bt(t.table,t=>{t.highlighted=!0,jt(e,t)})}const Dt=(e,t,n,o,r)=>{const l=\"forward\"===r;switch(r){case\"backward\":case\"forward\":return n!==(l?e.table.columns-1:0)?qt(t.getCellNodeFromCordsOrThrow(n+(l?1:-1),o,e.table),l):o!==(l?e.table.rows-1:0)?qt(t.getCellNodeFromCordsOrThrow(l?0:e.table.columns-1,o+(l?1:-1),e.table),l):l?t.selectNext():t.selectPrevious(),!0;case\"up\":return 0!==o?qt(t.getCellNodeFromCordsOrThrow(n,o-1,e.table),!1):t.selectPrevious(),!0;case\"down\":return o!==e.table.rows-1?qt(t.getCellNodeFromCordsOrThrow(n,o+1,e.table),!0):t.selectNext(),!0;default:return!1}};function It(e,t){let n,o;if(t.startColumn===e.minColumn)n=\"minColumn\";else{if(t.startColumn+t.cell.__colSpan-1!==e.maxColumn)return null;n=\"maxColumn\"}if(t.startRow===e.minRow)o=\"minRow\";else{if(t.startRow+t.cell.__rowSpan-1!==e.maxRow)return null;o=\"maxRow\"}return[n,o]}function Ut([e,t]){return[\"minColumn\"===e?\"maxColumn\":\"minColumn\",\"minRow\"===t?\"maxRow\":\"minRow\"]}function Jt(e,t,[n,o]){const r=t[o],l=e[r];void 0===l&&Ke(250,o,String(r));const s=t[n],i=l[s];return void 0===i&&Ke(250,n,String(s)),i}function Yt(e,t,n,o,r){const l=pt(t,n,o),s=function(e,t){const{minColumn:n,maxColumn:o,minRow:r,maxRow:l}=t;let s=1,i=1,c=1,a=1;const u=e[r],h=e[l];for(let e=n;e<=o;e++)s=Math.max(s,u[e].cell.__rowSpan),a=Math.max(a,h[e].cell.__rowSpan);for(let t=r;t<=l;t++)i=Math.max(i,e[t][n].cell.__colSpan),c=Math.max(c,e[t][o].cell.__colSpan);return{bottomSpan:a,leftSpan:i,rightSpan:c,topSpan:s}}(t,l),{topSpan:i,leftSpan:c,bottomSpan:a,rightSpan:u}=s,h=function(e,t){const n=It(e,t);return null===n&&Ke(249,t.cell.getKey()),n}(l,n),[d,f]=Ut(h);let g=l[d],m=l[f];\"forward\"===r?g+=\"maxColumn\"===d?1:c:\"backward\"===r?g-=\"minColumn\"===d?1:u:\"down\"===r?m+=\"maxRow\"===f?1:i:\"up\"===r&&(m-=\"minRow\"===f?1:a);const p=t[m];if(void 0===p)return!1;const C=p[g];if(void 0===C)return!1;const[_,S]=function(e,t,n){const o=pt(e,t,n),r=It(o,t);if(r)return[Jt(e,o,r),Jt(e,o,Ut(r))];const l=It(o,n);if(l)return[Jt(e,o,Ut(l)),Jt(e,o,l)];const s=[\"minColumn\",\"minRow\"];return[Jt(e,o,s),Jt(e,o,Ut(s))]}(t,n,C),w=rn(e,_.cell),b=rn(e,S.cell);return e.$setAnchorCellForSelection(w),e.$setFocusCellForSelection(b,!0),!0}function Xt(e,t){if(w(e)||wt(e)){const n=t.isParentOf(e.anchor.getNode()),o=t.isParentOf(e.focus.getNode());return n&&o}return!1}function qt(e,t){t?e.selectStart():e.selectEnd()}function jt(t,n){const o=n.elem,r=t._config.theme;Oe(ee(o))||Ke(131),e(o,r.tableCellSelected)}function Vt(e,t){const n=t.elem;Oe(ee(n))||Ke(131);const r=e._config.theme;o(n,r.tableCellSelected)}function Gt(e){const t=n(e,Oe);return Oe(t)?t:null}function Qt(e){const t=n(e,mn);return mn(t)?t:null}function Zt(e,t,o,r,l,s,i){const c=re(o.focus,l?\"previous\":\"next\");if(le(c))return!1;let a=c;for(const e of se(c).iterNodeCarets(\"shadowRoot\")){if(!ie(e)||!v(e.origin))return!1;a=e}const u=a.getParentAtCaret();if(!Oe(u))return!1;const h=u,d=function(e){for(const t of se(e).iterNodeCarets(\"root\")){const{origin:n}=t;if(Oe(n)){if(he(t))return de(n,e.direction)}else if(!$e(n))break}return null}(ce(h,a.direction)),f=n(h,mn);if(!f||!f.is(s))return!1;const g=e.getElementByKey(h.getKey()),m=zt(g);if(!g||!m)return!1;const p=dn(e,f);if(i.table=p,d)if(\"extend\"===r){const t=zt(e.getElementByKey(d.origin.getKey()));if(!t)return!1;i.$setAnchorCellForSelection(m),i.$setFocusCellForSelection(t,!0)}else{const e=ue(d);ae(o.anchor,e),ae(o.focus,e)}else if(\"extend\"===r)i.$setAnchorCellForSelection(m),i.$setFocusCellForSelection(m,!0);else{const e=function(e){const t=fe(e);return he(t)?ue(t):e}(ce(f,c.direction));ae(o.anchor,e),ae(o.focus,e)}return tn(t),!0}function en(e,t,o,r,l){if((\"up\"===o||\"down\"===o)&&function(e){const t=e.getRootElement();if(!t)return!1;return t.hasAttribute(\"aria-controls\")&&\"typeahead-menu\"===t.getAttribute(\"aria-controls\")}(e))return!1;const s=S();if(!Xt(s,r)){if(w(s)){if(\"backward\"===o){if(s.focus.offset>0)return!1;const e=function(e){for(let t=e,n=e;null!==n;t=n,n=n.getParent())if(v(n)){if(n!==t&&n.getFirstChild()!==t)return null;if(!n.isInline())return n}return null}(s.focus.getNode());if(!e)return!1;const n=e.getPreviousSibling();return!!mn(n)&&(tn(t),t.shiftKey?s.focus.set(n.getParentOrThrow().getKey(),n.getIndexWithinParent(),\"element\"):n.selectEnd(),!0)}if(t.shiftKey&&(\"up\"===o||\"down\"===o)){const e=s.focus.getNode();if(!s.isCollapsed()&&(\"up\"===o&&!s.isBackward()||\"down\"===o&&s.isBackward())){let l=n(e,e=>mn(e));if(Oe(l)&&(l=n(l,mn)),l!==r)return!1;if(!l)return!1;const i=\"down\"===o?l.getNextSibling():l.getPreviousSibling();if(!i)return!1;let c=0;\"up\"===o&&v(i)&&(c=i.getChildrenSize());let a=i;if(\"up\"===o&&v(i)){const e=i.getLastChild();a=e||i,c=f(a)?a.getTextContentSize():0}const u=s.clone();return u.focus.set(a.getKey(),c,f(a)?\"text\":\"element\"),O(u),tn(t),!0}if(oe(e)){const e=\"up\"===o?s.getNodes()[s.getNodes().length-1]:s.getNodes()[0];if(e){if(null!==At(r,e)){const e=r.getFirstDescendant(),t=r.getLastDescendant();if(!e||!t)return!1;const[n]=mt(e),[o]=mt(t),s=r.getCordsFromCellNode(n,l.table),i=r.getCordsFromCellNode(o,l.table),c=r.getDOMCellFromCordsOrThrow(s.x,s.y,l.table),a=r.getDOMCellFromCordsOrThrow(i.x,i.y,l.table);return l.$setAnchorCellForSelection(c),l.$setFocusCellForSelection(a,!0),!0}}return!1}{let r=n(e,e=>v(e)&&!e.isInline());if(Oe(r)&&(r=n(r,mn)),!r)return!1;const i=\"down\"===o?r.getNextSibling():r.getPreviousSibling();if(mn(i)&&l.tableNodeKey===i.getKey()){const e=i.getFirstDescendant(),n=i.getLastDescendant();if(!e||!n)return!1;const[r]=mt(e),[l]=mt(n),c=s.clone();return c.focus.set((\"up\"===o?r:l).getKey(),\"up\"===o?0:l.getChildrenSize(),\"element\"),tn(t),O(c),!0}}}}return\"down\"===o&&an(e)&&l.setShouldCheckSelection(),!1}if(w(s)){if(\"backward\"===o||\"forward\"===o){return Zt(e,t,s,t.shiftKey?\"extend\":\"move\",\"backward\"===o,r,l)}if(s.isCollapsed()){const{anchor:i,focus:c}=s,a=n(i.getNode(),Oe),u=n(c.getNode(),Oe);if(!Oe(a)||!a.is(u))return!1;const h=Qt(a);if(h!==r&&null!=h){const n=Ft(h,e.getElementByKey(h.getKey()));if(null!=n)return l.table=Ht(h,n),en(e,t,o,h,l)}const d=e.getElementByKey(a.__key),f=e.getElementByKey(i.key);if(null==f||null==d)return!1;let g;if(\"element\"===i.type)g=f.getBoundingClientRect();else{const t=K(Ot(e));if(null===t||0===t.rangeCount)return!1;g=t.getRangeAt(0).getBoundingClientRect()}const m=\"up\"===o?a.getFirstChild():a.getLastChild();if(null==m)return!1;const p=e.getElementByKey(m.__key);if(null==p)return!1;const C=p.getBoundingClientRect();if(\"up\"===o?C.top>g.top-g.height:g.bottom+g.height>C.bottom){tn(t);const e=r.getCordsFromCellNode(a,l.table);if(!t.shiftKey)return Dt(l,r,e.x,e.y,o);{const t=r.getDOMCellFromCordsOrThrow(e.x,e.y,l.table);l.$setAnchorCellForSelection(t),l.$setFocusCellForSelection(t,!0)}return!0}}}else if(wt(s)){const{anchor:i,focus:c}=s,a=n(i.getNode(),Oe),u=n(c.getNode(),Oe),[h]=s.getNodes();mn(h)||Ke(251);const d=Ft(h,e.getElementByKey(h.getKey()));if(!Oe(a)||!Oe(u)||!mn(h)||null==d)return!1;l.$updateTableTableSelection(s);const f=Ht(h,d),g=r.getCordsFromCellNode(a,f),m=r.getDOMCellFromCordsOrThrow(g.x,g.y,f);if(l.$setAnchorCellForSelection(m),tn(t),t.shiftKey){const[e,t,n]=ft(r,a,u);return Yt(l,e,t,n,o)}return u.selectEnd(),!0}return!1}function tn(e){e.preventDefault(),e.stopImmediatePropagation(),e.stopPropagation()}function nn(e,t,n){const o=m();\"first\"===e?t.insertBefore(o):t.insertAfter(o),o.append(...n||[]),o.selectEnd()}function on(e,t,o){const r=o.getParent();if(!r)return;const l=K(Ot(e));if(!l)return;const s=l.anchorNode,i=e.getElementByKey(r.getKey()),c=Ft(o,e.getElementByKey(o.getKey()));if(!s||!i||!c||!i.contains(s)||c.contains(s))return;const a=n(t.anchor.getNode(),e=>Oe(e));if(!a)return;const u=n(a,e=>mn(e));if(!mn(u)||!u.is(o))return;const[h,d]=ft(o,a,a),f=h[0][0],g=h[h.length-1][h[0].length-1],{startRow:m,startColumn:p}=d,C=m===f.startRow&&p===f.startColumn,_=m===g.startRow&&p===g.startColumn;return C?\"first\":_?\"last\":void 0}function rn(e,t){const{tableNode:n}=e.$lookup(),o=n.getCordsFromCellNode(t,e.table);return n.getDOMCellFromCordsOrThrow(o.x,o.y,e.table)}function ln(e,t,n){return At(e,ee(t,n))}function sn(t,n,r){if(!n.theme.tableAlignment)return;const l=[],s=[];for(const e of[\"center\",\"right\"]){const t=n.theme.tableAlignment[e];t&&(e===r?s:l).push(t)}o(t,...l),e(t,...s)}const cn=new WeakSet;function an(e=F()){return cn.has(e)}function un(e,t){t?cn.add(e):cn.delete(e)}class hn extends u{__rowStriping;__frozenColumnCount;__frozenRowCount;__colWidths;static getType(){return\"table\"}getColWidths(){return this.getLatest().__colWidths}setColWidths(e){const t=this.getWritable();return t.__colWidths=e,t}static clone(e){return new hn(e.__key)}afterCloneFrom(e){super.afterCloneFrom(e),this.__colWidths=e.__colWidths,this.__rowStriping=e.__rowStriping,this.__frozenColumnCount=e.__frozenColumnCount,this.__frozenRowCount=e.__frozenRowCount}static importDOM(){return{table:e=>({conversion:fn,priority:1})}}static importJSON(e){return gn().updateFromJSON(e)}updateFromJSON(e){return super.updateFromJSON(e).setRowStriping(e.rowStriping||!1).setFrozenColumns(e.frozenColumnCount||0).setFrozenRows(e.frozenRowCount||0).setColWidths(e.colWidths)}constructor(e){super(e),this.__rowStriping=!1,this.__frozenColumnCount=0,this.__frozenRowCount=0,this.__colWidths=void 0}exportJSON(){return{...super.exportJSON(),colWidths:this.getColWidths(),frozenColumnCount:this.__frozenColumnCount?this.__frozenColumnCount:void 0,frozenRowCount:this.__frozenRowCount?this.__frozenRowCount:void 0,rowStriping:this.__rowStriping?this.__rowStriping:void 0}}extractWithChild(e,t,n){return\"html\"===n}getDOMSlot(e){const t=Rt(e)?e:e.querySelector(\"table\");return Rt(t)||Ke(229),super.getDOMSlot(e).withElement(t).withAfter(t.querySelector(\"colgroup\"))}createDOM(t,n){const o=document.createElement(\"table\");this.__style&&(o.style.cssText=this.__style);const r=document.createElement(\"colgroup\");if(o.appendChild(r),ge(r),e(o,t.theme.table),this.updateTableElement(null,o,t),an(n)){const n=document.createElement(\"div\"),r=t.theme.tableScrollableWrapper;return r?e(n,r):n.style.cssText=\"overflow-x: auto;\",n.appendChild(o),this.updateTableWrapper(null,n,o,t),n}return o}updateTableWrapper(t,n,r,l){this.__frozenColumnCount!==(t?t.__frozenColumnCount:0)&&function(t,n,r,l){l>0?(e(t,r.theme.tableFrozenColumn),n.setAttribute(\"data-lexical-frozen-column\",\"true\")):(o(t,r.theme.tableFrozenColumn),n.removeAttribute(\"data-lexical-frozen-column\"))}(n,r,l,this.__frozenColumnCount),this.__frozenRowCount!==(t?t.__frozenRowCount:0)&&function(t,n,r,l){l>0?(e(t,r.theme.tableFrozenRow),n.setAttribute(\"data-lexical-frozen-row\",\"true\")):(o(t,r.theme.tableFrozenRow),n.removeAttribute(\"data-lexical-frozen-row\"))}(n,r,l,this.__frozenRowCount)}updateTableElement(t,n,r){this.__style!==(t?t.__style:\"\")&&(n.style.cssText=this.__style),this.__rowStriping!==(!!t&&t.__rowStriping)&&function(t,n,r){r?(e(t,n.theme.tableRowStriping),t.setAttribute(\"data-lexical-row-striping\",\"true\")):(o(t,n.theme.tableRowStriping),t.removeAttribute(\"data-lexical-row-striping\"))}(n,r,this.__rowStriping),function(e,t,n,o){const r=e.querySelector(\"colgroup\");if(!r)return;const l=[];for(let e=0;e<n;e++){const t=document.createElement(\"col\"),n=o&&o[e];n&&(t.style.width=`${n}px`),l.push(t)}r.replaceChildren(...l)}(n,0,this.getColumnCount(),this.getColWidths()),sn(n,r,this.getFormatType())}updateDOM(e,t,n){const o=this.getDOMSlot(t).element;return t===o===an()||(l(r=t)&&\"DIV\"===r.nodeName&&this.updateTableWrapper(e,t,o,n),this.updateTableElement(e,o,n),!1);var r}exportDOM(e){const t=super.exportDOM(e),{element:n}=t;return{after:n=>{if(t.after&&(n=t.after(n)),!Rt(n)&&l(n)&&(n=n.querySelector(\"table\")),!Rt(n))return null;sn(n,e._config,this.getFormatType());const[o]=gt(this,null,null),r=new Map;for(const e of o)for(const t of e){const e=t.cell.getKey();r.has(e)||r.set(e,{colSpan:t.cell.getColSpan(),startColumn:t.startColumn})}const s=new Set;for(const e of n.querySelectorAll(\":scope > tr > [data-temporary-table-cell-lexical-key]\")){const t=e.getAttribute(\"data-temporary-table-cell-lexical-key\");if(t){const n=r.get(t);if(e.removeAttribute(\"data-temporary-table-cell-lexical-key\"),n){r.delete(t);for(let e=0;e<n.colSpan;e++)s.add(e+n.startColumn)}}}const i=n.querySelector(\":scope > colgroup\");if(i){const e=Array.from(n.querySelectorAll(\":scope > colgroup > col\")).filter((e,t)=>s.has(t));i.replaceChildren(...e)}const c=n.querySelectorAll(\":scope > tr\");if(c.length>0){const e=document.createElement(\"tbody\");for(const t of c)e.appendChild(t);n.append(e)}return n},element:!Rt(n)&&l(n)?n.querySelector(\"table\"):n}}canBeEmpty(){return!1}isShadowRoot(){return!0}getCordsFromCellNode(e,t){const{rows:n,domRows:o}=t;for(let t=0;t<n;t++){const n=o[t];if(null!=n)for(let o=0;o<n.length;o++){const r=n[o];if(null==r)continue;const{elem:l}=r,s=ln(this,l);if(null!==s&&e.is(s))return{x:o,y:t}}}throw new Error(\"Cell not found in table.\")}getDOMCellFromCords(e,t,n){const{domRows:o}=n,r=o[t];if(null==r)return null;const l=r[e<r.length?e:r.length-1];return null==l?null:l}getDOMCellFromCordsOrThrow(e,t,n){const o=this.getDOMCellFromCords(e,t,n);if(!o)throw new Error(\"Cell not found at cords.\");return o}getCellNodeFromCords(e,t,n){const o=this.getDOMCellFromCords(e,t,n);if(null==o)return null;const r=ee(o.elem);return Oe(r)?r:null}getCellNodeFromCordsOrThrow(e,t,n){const o=this.getCellNodeFromCords(e,t,n);if(!o)throw new Error(\"Node at cords not TableCellNode.\");return o}getRowStriping(){return Boolean(this.getLatest().__rowStriping)}setRowStriping(e){const t=this.getWritable();return t.__rowStriping=e,t}setFrozenColumns(e){const t=this.getWritable();return t.__frozenColumnCount=e,t}getFrozenColumns(){return this.getLatest().__frozenColumnCount}setFrozenRows(e){const t=this.getWritable();return t.__frozenRowCount=e,t}getFrozenRows(){return this.getLatest().__frozenRowCount}canSelectBefore(){return!0}canIndent(){return!1}getColumnCount(){const e=this.getFirstChild();if(!e)return 0;let t=0;return e.getChildren().forEach(e=>{Oe(e)&&(t+=e.getColSpan())}),t}}function dn(e,t){const n=e.getElementByKey(t.getKey());return null===n&&Ke(230),Ht(t,n)}function fn(e){const n=gn();e.hasAttribute(\"data-lexical-row-striping\")&&n.setRowStriping(!0),e.hasAttribute(\"data-lexical-frozen-column\")&&n.setFrozenColumns(1),e.hasAttribute(\"data-lexical-frozen-row\")&&n.setFrozenRows(1);const o=e.querySelector(\":scope > colgroup\");if(o){let e=[];for(const t of o.querySelectorAll(\":scope > col\")){let n=t.style.width||\"\";if(!Ne.test(n)&&(n=t.getAttribute(\"width\")||\"\",!/^\\d+$/.test(n))){e=void 0;break}e.push(parseFloat(n))}e&&n.setColWidths(e)}return{after:e=>t(e,$e),node:n}}function gn(){return p(new hn)}function mn(e){return e instanceof hn}function pn({rows:e,columns:t,includeHeaders:n}){const o=S()||Z();if(!o||!w(o))return!1;if(Qt(o.anchor.getNode()))return!1;const r=Le(Number(e),Number(t),n);c(r);const l=r.getFirstDescendant();return f(l)&&l.select(),!0}function Cn(e){$e(e.getParent())?e.isEmpty()&&e.append(m()):e.remove()}function _n(e){mn(e.getParent())?a(e,Oe):e.remove()}function Sn(e){a(e,$e);const[t]=gt(e,null,null),n=t.reduce((e,t)=>Math.max(e,t.length),0),o=e.getChildren();for(let e=0;e<t.length;++e){const r=o[e];if(!r)continue;$e(r)||Ke(254,r.constructor.name,r.getType());const l=t[e].reduce((e,t)=>t?1+e:e,0);if(l!==n)for(let e=l;e<n;++e){const e=Fe();e.append(m()),r.append(e)}}}function wn(e){if(e.detail<3||!ne(e.target))return!1;const t=ee(e.target);if(null===t)return!1;const o=n(t,e=>v(e)&&!e.isInline());if(null===o)return!1;return!!Oe(o.getParent())&&(o.select(0),!0)}function bn(e){return e.registerNodeTransform(xe,e=>{if(e.getColSpan()>1||e.getRowSpan()>1){const[,,t]=mt(e),[n]=ft(t,e,e),o=n.length,r=n[0].length;let l=t.getFirstChild();$e(l)||Ke(175);const i=[];for(let e=0;e<o;e++){0!==e&&(l=l.getNextSibling(),$e(l)||Ke(175));let t=null;for(let o=0;o<r;o++){const r=n[e][o],c=r.cell;if(r.startRow===e&&r.startColumn===o)t=c,i.push(c);else if(c.getColSpan()>1||c.getRowSpan()>1){Oe(c)||Ke(176);const e=Fe(c.__headerState);null!==t?t.insertAfter(e):s(l,e)}}}for(const e of i)e.setColSpan(1),e.setRowSpan(1)}})}function yn(e,t=!0){const n=new Map,o=(o,r,l)=>{const s=Ft(o,l),i=Mt(o,s,e,t);n.set(r,[i,s])},r=e.registerMutationListener(hn,t=>{e.getEditorState().read(()=>{for(const[e,r]of t){const t=n.get(e);if(\"created\"===r||\"updated\"===r){const{tableNode:r,tableElement:l}=vt(e);void 0===t?o(r,e,l):l!==t[1]&&(t[0].removeListeners(),n.delete(e),o(r,e,l))}else\"destroyed\"===r&&void 0!==t&&(t[0].removeListeners(),n.delete(e))}},{editor:e})},{skipInitialization:!1});return()=>{r();for(const[,[e]]of n)e.removeListeners()}}function Nn(e){return e.hasNodes([hn])||Ke(255),i(e.registerCommand(Ae,pn,me),e.registerCommand(Q,({nodes:t,selection:n},o)=>{if(e!==o||!w(n))return!1;return null!==Qt(n.anchor.getNode())&&t.some(mn)},me),e.registerCommand(pe,wn,me),e.registerNodeTransform(hn,Sn),e.registerNodeTransform(Ee,_n),e.registerNodeTransform(xe,Cn))}const vn=Ce({build:(e,t,n)=>we(t),config:_e({hasCellBackgroundColor:!0,hasCellMerge:!0,hasHorizontalScroll:!0,hasTabHandler:!0}),name:\"@lexical/table/Table\",nodes:[hn,Ee,xe],register(e,t,n){const o=n.getOutput();return i(Se(()=>{const t=o.hasHorizontalScroll.value;an(e)!==t&&(un(e,t),e.registerNodeTransform(hn,()=>{})())}),Nn(e),Se(()=>yn(e,o.hasTabHandler.value)),Se(()=>o.hasCellMerge.value?void 0:bn(e)),Se(()=>o.hasCellBackgroundColor.value?void 0:e.registerNodeTransform(xe,e=>{null!==e.getBackgroundColor()&&e.setBackgroundColor(null)})))}});export{ft as $computeTableMap,gt as $computeTableMapSkipCellCheck,Fe as $createTableCellNode,gn as $createTableNode,Le as $createTableNodeWithDimensions,Me as $createTableRowNode,bt as $createTableSelection,yt as $createTableSelectionFrom,nt as $deleteTableColumn,lt as $deleteTableColumnAtSelection,st as $deleteTableColumn__EXPERIMENTAL,ot as $deleteTableRowAtSelection,rt as $deleteTableRow__EXPERIMENTAL,Gt as $findCellNode,Qt as $findTableNode,dn as $getElementForTableNode,mt as $getNodeTriplet,vt as $getTableAndElementByKey,Be as $getTableCellNodeFromLexicalNode,Ct as $getTableCellNodeRect,Ue as $getTableColumnIndexFromTableCellNode,De as $getTableNodeFromLexicalNodeOrThrow,Ie as $getTableRowIndexFromTableCellNode,Pe as $getTableRowNodeFromTableCellNodeOrThrow,Qe as $insertTableColumn,Ze as $insertTableColumnAtSelection,et as $insertTableColumn__EXPERIMENTAL,Xe as $insertTableRow,je as $insertTableRowAtSelection,Ve as $insertTableRow__EXPERIMENTAL,an as $isScrollableTablesActive,Oe as $isTableCellNode,mn as $isTableNode,$e as $isTableRowNode,wt as $isTableSelection,at as $mergeCells,Ye as $removeTableRowAtIndex,ht as $unmergeCell,Ae as INSERT_TABLE_COMMAND,ve as TableCellHeaderStates,xe as TableCellNode,vn as TableExtension,hn as TableNode,xt as TableObserver,Ee as TableRowNode,Mt as applyTableHandlers,zt as getDOMCellFromTarget,Ft as getTableElement,$t as getTableObserverFromTableElement,bn as registerTableCellUnmergeTransform,Nn as registerTablePlugin,yn as registerTableSelectionObserver,un as setScrollableTablesActive};\n","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 googleDriveConfig?: {\n /** The OAuth 2.0 Client ID obtained from the Google Cloud Console. */\n clientId: string;\n /** The API Key obtained from the Google Cloud Console. Ensure Google Picker API is enabled. */\n apiKey: string;\n /** Optional: List of discovery doc URLs for APIs used. Defaults to Drive v3. */\n discoveryDocs?: string[];\n /** Optional: Scopes required for the picker. Defaults to 'https://www.googleapis.com/auth/drive.readonly'. */\n scopes?: string;\n };\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 googleDriveConfig?: {\n clientId: string;\n apiKey: string;\n discoveryDocs?: string[];\n scopes?: string;\n };\n}\n\nexport const EmailProvider: React.FC<EmailProviderProps> = ({\n children,\n googleDriveConfig,\n}) => {\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 googleDriveConfig,\n }}>\n {children}\n </EmailContext.Provider>\n );\n};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst mod = await (process.env.NODE_ENV !== 'production' ? import('./LexicalTable.dev.mjs') : import('./LexicalTable.prod.mjs'));\nexport const $computeTableMap = mod.$computeTableMap;\nexport const $computeTableMapSkipCellCheck = mod.$computeTableMapSkipCellCheck;\nexport const $createTableCellNode = mod.$createTableCellNode;\nexport const $createTableNode = mod.$createTableNode;\nexport const $createTableNodeWithDimensions = mod.$createTableNodeWithDimensions;\nexport const $createTableRowNode = mod.$createTableRowNode;\nexport const $createTableSelection = mod.$createTableSelection;\nexport const $createTableSelectionFrom = mod.$createTableSelectionFrom;\nexport const $deleteTableColumn = mod.$deleteTableColumn;\nexport const $deleteTableColumnAtSelection = mod.$deleteTableColumnAtSelection;\nexport const $deleteTableColumn__EXPERIMENTAL = mod.$deleteTableColumn__EXPERIMENTAL;\nexport const $deleteTableRowAtSelection = mod.$deleteTableRowAtSelection;\nexport const $deleteTableRow__EXPERIMENTAL = mod.$deleteTableRow__EXPERIMENTAL;\nexport const $findCellNode = mod.$findCellNode;\nexport const $findTableNode = mod.$findTableNode;\nexport const $getElementForTableNode = mod.$getElementForTableNode;\nexport const $getNodeTriplet = mod.$getNodeTriplet;\nexport const $getTableAndElementByKey = mod.$getTableAndElementByKey;\nexport const $getTableCellNodeFromLexicalNode = mod.$getTableCellNodeFromLexicalNode;\nexport const $getTableCellNodeRect = mod.$getTableCellNodeRect;\nexport const $getTableColumnIndexFromTableCellNode = mod.$getTableColumnIndexFromTableCellNode;\nexport const $getTableNodeFromLexicalNodeOrThrow = mod.$getTableNodeFromLexicalNodeOrThrow;\nexport const $getTableRowIndexFromTableCellNode = mod.$getTableRowIndexFromTableCellNode;\nexport const $getTableRowNodeFromTableCellNodeOrThrow = mod.$getTableRowNodeFromTableCellNodeOrThrow;\nexport const $insertTableColumn = mod.$insertTableColumn;\nexport const $insertTableColumnAtSelection = mod.$insertTableColumnAtSelection;\nexport const $insertTableColumn__EXPERIMENTAL = mod.$insertTableColumn__EXPERIMENTAL;\nexport const $insertTableRow = mod.$insertTableRow;\nexport const $insertTableRowAtSelection = mod.$insertTableRowAtSelection;\nexport const $insertTableRow__EXPERIMENTAL = mod.$insertTableRow__EXPERIMENTAL;\nexport const $isScrollableTablesActive = mod.$isScrollableTablesActive;\nexport const $isTableCellNode = mod.$isTableCellNode;\nexport const $isTableNode = mod.$isTableNode;\nexport const $isTableRowNode = mod.$isTableRowNode;\nexport const $isTableSelection = mod.$isTableSelection;\nexport const $mergeCells = mod.$mergeCells;\nexport const $removeTableRowAtIndex = mod.$removeTableRowAtIndex;\nexport const $unmergeCell = mod.$unmergeCell;\nexport const INSERT_TABLE_COMMAND = mod.INSERT_TABLE_COMMAND;\nexport const TableCellHeaderStates = mod.TableCellHeaderStates;\nexport const TableCellNode = mod.TableCellNode;\nexport const TableExtension = mod.TableExtension;\nexport const TableNode = mod.TableNode;\nexport const TableObserver = mod.TableObserver;\nexport const TableRowNode = mod.TableRowNode;\nexport const applyTableHandlers = mod.applyTableHandlers;\nexport const getDOMCellFromTarget = mod.getDOMCellFromTarget;\nexport const getTableElement = mod.getTableElement;\nexport const getTableObserverFromTableElement = mod.getTableObserverFromTableElement;\nexport const registerTableCellUnmergeTransform = mod.registerTableCellUnmergeTransform;\nexport const registerTablePlugin = mod.registerTablePlugin;\nexport const registerTableSelectionObserver = mod.registerTableSelectionObserver;\nexport const setScrollableTablesActive = mod.setScrollableTablesActive;","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 emoji: \"emoji\",\n drive: \"drive\",\n lockClock: \"lockClock\",\n insertSignature: \"insertSignature\",\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 label: \"Formatting options\",\n options: [\n {\n name: eventTypes[\"undo\"],\n type: toolbarComponentType[\"component\"],\n icon: \"Undo\",\n label: \"Undo\",\n id: \"29cf5eb3-37cd-482f-9a15-c358faf19cc2\",\n },\n {\n name: eventTypes[\"redo\"],\n type: toolbarComponentType[\"component\"],\n icon: \"Redo\",\n label: \"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 label: \"Font\",\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 label: \"Size\",\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 label: \"Bold\",\n id: \"ac2b5b54-7323-44a4-bc6d-8bae6e48efe2\",\n },\n {\n name: eventTypes[\"italic\"],\n type: toolbarComponentType[\"component\"],\n icon: \"Italic\",\n label: \"Italic\",\n id: \"6a927c2a-2230-4dc7-af71-47fbe9fb784d\",\n },\n {\n name: eventTypes[\"underline\"],\n type: toolbarComponentType[\"component\"],\n icon: \"Underline\",\n label: \"Underline\",\n id: \"f07b3a6f-ffaa-4153-beae-79a36acb6a08\",\n },\n {\n name: eventTypes[\"color\"].base,\n type: toolbarComponentType[\"component\"],\n icon: \"Text color\",\n label: \"Text 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 label: \"Align\",\n collapse: true,\n },\n {\n type: toolbarComponentType[\"divider\"],\n id: \"9bad0563-6118-4855-9286-402bf98e00ad\",\n hideOnCollapse: true,\n },\n {\n name: eventTypes[\"listNumber\"],\n type: toolbarComponentType[\"component\"],\n icon: \"OrderedList\",\n label: \"Ordered list\",\n id: \"d37865e1-ff54-4118-a5cc-fa147d222471\",\n collapse: true,\n },\n {\n name: eventTypes[\"listBullet\"],\n type: toolbarComponentType[\"component\"],\n icon: \"UnOrderedList\",\n label: \"Unordered list\",\n id: \"ed77e7c9-b89c-41c5-a749-e68ea0b30497\",\n collapse: true,\n },\n {\n type: toolbarComponentType[\"divider\"],\n id: \"e5ecd77b-44cc-42fe-badb-48cadf3ddfb1\",\n hideOnCollapse: true,\n },\n {\n name: eventTypes[\"indentDecrease\"],\n type: toolbarComponentType[\"component\"],\n icon: \"IndentLess\",\n label: \"Decrease indent\",\n id: \"2dc6a5e4-b1b5-47d1-ac2f-5d0becb02d33\",\n collapse: true,\n },\n {\n name: eventTypes[\"indent\"],\n type: toolbarComponentType[\"component\"],\n icon: \"IndentMore\",\n label: \"Increase indent\",\n id: \"6903a3d1-a83f-4bc6-9bd9-f673feffe84f\",\n collapse: true,\n },\n ],\n },\n {\n type: \"component\",\n name: eventTypes[\"attachFile\"],\n icon: \"Attach\",\n label: \"Attach file\",\n id: \"f43a284e-113e-4095-b001-9d00a1dddc4c\",\n },\n {\n type: toolbarComponentType[\"component\"],\n name: eventTypes[\"link\"],\n icon: \"Link\",\n label: \"Insert link\",\n id: \"580db61e-7939-4efe-914c-304b271998ec\",\n },\n {\n type: toolbarComponentType[\"component\"],\n name: eventTypes[\"emoji\"],\n icon: \"Emoji\",\n id: \"e1f2c6d1-emoji\",\n },\n // {\n // type: toolbarComponentType[\"component\"],\n // name: eventTypes[\"drive\"],\n // icon: \"GoogleDrive\",\n // id: \"a9c4b1e2-drive\",\n // },\n {\n type: \"component\",\n name: eventTypes[\"insertPhoto\"],\n icon: \"InsertImage\",\n label: \"Insert photo\",\n id: \"d032ba91-3e78-4ed5-8561-insertPhoto\",\n },\n {\n type: \"component\",\n name: eventTypes[\"lockClock\"],\n icon: \"LockClock\",\n id: \"d032ba91-3e78-4ed5-8561-lockClock\",\n },\n {\n type: \"component\",\n name: eventTypes[\"insertSignature\"],\n icon: \"Signature\",\n label: \"Insert signature\",\n id: \"d032ba91-3e78-4ed5-8561-lockClock\",\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 MdOutlineEmojiEmotions,\n MdPhoto,\n MdLockClock,\n} from \"react-icons/md\";\nimport { TbBrandGoogleDrive } from \"react-icons/tb\";\nimport { RiBallPenFill } from \"react-icons/ri\";\nimport { FaBan } from \"react-icons/fa\";\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 Emoji: MdOutlineEmojiEmotions,\n InsertImage: MdPhoto,\n LockClock: MdLockClock,\n GoogleDrive: TbBrandGoogleDrive,\n Signature: RiBallPenFill,\n Ban: FaBan\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 | \"Emoji\"\n | \"LockClock\"\n | \"GoogleDrive\"\n | \"Signature\"\n | \"InsertImage\"\n | \"Ban\";\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, { useEffect, 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 on?: \"hover\" | \"click\" | \"focus\" | (\"hover\" | \"click\" | \"focus\")[];\n}\n\nconst MyPopup: React.FC<MyPopupProps> = ({\n trigger,\n children,\n popUpDirection = \"top center\",\n on = \"click\",\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 // ...inside MyPopup component, after popupRef declaration...\n\n useEffect(() => {\n const adjustPosition = () => {\n try {\n // let reactjs-popup recompute first\n popupRef.current?.reposition?.();\n\n // popup content created by reactjs-popup often has class `popup-content`\n const popupContent = document.querySelector<HTMLElement>(\n \".mail-inbox-popup .popup-content, .mail-inbox-popup-content, .mail-inbox-popup > .popup-content\",\n );\n if (!popupContent) return;\n\n const rect = popupContent.getBoundingClientRect();\n const margin = 8; // keep a small margin from viewport edges\n\n // If right edge overflows, shift left\n if (rect.right > window.innerWidth - margin) {\n const overflow = rect.right - (window.innerWidth - margin);\n const currentLeft = parseFloat(\n getComputedStyle(popupContent).left || `${rect.left}`,\n );\n popupContent.style.left = `${Math.max(margin, currentLeft - overflow)}px`;\n }\n\n // If left edge overflows (negative), nudge right\n if (rect.left < margin) {\n popupContent.style.left = `${margin}px`;\n }\n } catch (e) {\n // ignore\n }\n };\n\n // Run on resize/scroll\n const handler = () => adjustPosition();\n window.addEventListener(\"resize\", handler);\n window.addEventListener(\"scroll\", handler, true);\n\n // Watch DOM for popup being added (reactjs-popup mounts content on open)\n const observer = new MutationObserver(() => {\n // slight delay to let popup render then adjust\n setTimeout(adjustPosition, 0);\n });\n observer.observe(document.body, { childList: true, subtree: true });\n\n return () => {\n window.removeEventListener(\"resize\", handler);\n window.removeEventListener(\"scroll\", handler, true);\n observer.disconnect();\n };\n }, []);\n\n return (\n <Popup\n ref={popupRef}\n trigger={trigger}\n on={on}\n closeOnDocumentClick\n repositionOnResize\n position={popUpDirection}\n className=\"mail-inbox-popup\"\n >\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, htmlNodeVal: \"2\" },\n { key: \"normal\", label: \"Normal\", sizePx: 18, htmlNodeVal: \"4\" },\n { key: \"large\", label: \"Large\", sizePx: 28, htmlNodeVal: \"6\" },\n { key: \"huge\", label: \"Huge\", sizePx: 56, htmlNodeVal: \"7\" },\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 = \"sans-serif\",\n onChange,\n}: FontSelectProps) {\n const selectedOption = fontOptions?.find((o) => o.value === value);\n const displayLabel =\n selectedOption?.label || (value === \"serif\" ? \"Serif\" : \"Sans Serif\");\n\n return (\n <div>\n <MyPopup\n trigger={\n <button className=\"font-option heading\">\n {displayLabel}\n <Icon name=\"DownArrow\" />\n </button>\n }\n >\n {({ close }) => (\n <div className=\"p-4 mail-inbox-popup-content\">\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 >\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?: number;\n onChange?: (value: string) => void;\n}\n\nexport default function FontSizePicker({\n value = 16,\n onChange = () => {},\n}: FontSizePickerProps) {\n return (\n <div>\n <MyPopup\n trigger={\n <button\n className=\"font-option heading tool-bar-button\"\n data-tooltip=\"Size\"\n >\n <Icon name=\"TextFields\" className=\"tool-bar-button-icon\" />\n <Icon name=\"DownArrow\" className=\"tool-bar-button-icon\" />\n </button>\n }\n >\n {({ close }) => (\n <div className=\"p-4 mail-inbox-popup-content\">\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 >\n <div className=\"font-option\">\n {value === font.sizePx && <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 >\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 | null;\n text: string | null;\n}\n\ninterface ColorPickerProps {\n value?: ColorValue;\n onChange?: (value: ColorValue) => void;\n}\n\nexport default function ColorPicker({\n value = { background: null, text: null },\n onChange = () => {},\n}: ColorPickerProps) {\n function update(which: keyof ColorValue, color: string | null) {\n onChange({ ...value, [which]: color });\n }\n\n return (\n <div>\n <MyPopup\n trigger={\n <button\n className=\"font-option heading tool-bar-button\"\n data-tooltip=\"Text color\"\n >\n <Icon name=\"Styling\" className=\"tool-bar-button-icon\" />\n <Icon name=\"DownArrow\" className=\"tool-bar-button-icon\" />\n </button>\n }\n >\n {({ close }) => (\n <div\n className=\"color-popover mail-inbox-popup-content\"\n role=\"dialog\"\n aria-label=\"Choose colors\"\n >\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 <button\n className=\"swatch clear-swatch\"\n title=\"Remove color\"\n aria-pressed={!value.background}\n onClick={() => {\n update(\"background\", null);\n close();\n }}\n style={{ background: \"transparent\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }}\n >\n <Icon name=\"Ban\" size={14} color=\"#666\" />\n </button>\n </div>\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 <button\n className=\"swatch clear-swatch\"\n title=\"Remove color\"\n aria-pressed={!value.text}\n onClick={() => {\n update(\"text\", null);\n close();\n }}\n style={{ background: \"transparent\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }}\n >\n <Icon name=\"Ban\" size={14} color=\"#666\" />\n </button>\n </div>\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 tool-bar-button\" data-tooltip=\"Align\">\n <Icon\n name={\n OPTIONS?.find((o) => o.key === value)?.iconName || \"LeftAlign\"\n }\n />\n <Icon name=\"DownArrow\" className=\"tool-bar-button-icon\" />\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 <div\n className=\"option-check\"\n style={{ opacity: active ? 1 : 0 }}\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 <Icon\n name={opt.iconName}\n size={20}\n className=\"select-option-icon\"\n />\n </button>\n );\n })}\n </>\n )}\n </MyPopup>\n </div>\n );\n}\n","import {\n TextNode,\n DOMConversionMap,\n DOMConversionOutput,\n DOMExportOutput,\n EditorConfig,\n LexicalEditor,\n SerializedTextNode,\n Spread,\n NodeKey,\n} from \"lexical\";\nimport { extractStyles, mergeStyles, styleStringToMap } from \"../utils/common\";\n\nexport type SerializedStyledTextNode = Spread<\n { style: string },\n SerializedTextNode\n>;\n\n// ─── StyledTextNode ───────────────────────────────────────────────────────────\n\nexport class StyledTextNode extends TextNode {\n __customStyle: string;\n\n static getType(): string {\n return \"styled-text\";\n }\n\n static clone(node: StyledTextNode): StyledTextNode {\n const clone = new StyledTextNode(node.__text, node.__key);\n // Must copy __customStyle — Lexical clones nodes for undo/redo history\n clone.__customStyle = node.__customStyle ?? \"\";\n return clone;\n }\n\n constructor(text: string, key?: NodeKey) {\n super(text, key);\n this.__customStyle = \"\";\n }\n\n // ── Serialization (save/restore editor state) ──────────────────────────────\n\n static importJSON(s: SerializedStyledTextNode): StyledTextNode {\n const node = super.importJSON(s) as StyledTextNode;\n node.__customStyle = s.style ?? \"\";\n return node;\n }\n\n exportJSON(): SerializedStyledTextNode {\n return { ...super.exportJSON(), style: this.__customStyle };\n }\n\n // ── DOM Import (HTML → Lexical nodes) ─────────────────────────────────────\n\n static importDOM(): DOMConversionMap | null {\n const convert = (domNode: HTMLElement): DOMConversionOutput => {\n const tag = domNode.tagName;\n const style = extractStyles(domNode);\n\n return {\n // node: null → skip creating a node for the element itself.\n // Lexical walks into children naturally; forChild stamps\n // styles + format flags onto each child TextNode.\n // Without this, you get duplicate nodes (one per element + one per text child).\n node: null,\n forChild: (child) => {\n if (!(child instanceof TextNode)) return child;\n\n // Promote plain TextNode → StyledTextNode so it can carry custom styles\n const styled =\n child instanceof StyledTextNode\n ? (child.getWritable() as StyledTextNode)\n : new StyledTextNode(child.getTextContent());\n\n // Merge styles from this element into whatever the child already has\n // This handles nesting: <span style=\"color:red\"><strong>text</strong></span>\n // → styled node gets both color:red AND bold format\n if (style) {\n styled.__customStyle = mergeStyles(\n styled.__customStyle,\n styleStringToMap(style),\n );\n }\n\n // Apply semantic format flags from tag name\n if (tag === \"STRONG\" || tag === \"B\") styled.toggleFormat(\"bold\");\n if (tag === \"EM\" || tag === \"I\") styled.toggleFormat(\"italic\");\n if (tag === \"U\") styled.toggleFormat(\"underline\");\n if (tag === \"S\" || tag === \"STRIKE\")\n styled.toggleFormat(\"strikethrough\");\n if (tag === \"CODE\") styled.toggleFormat(\"code\");\n\n return styled;\n },\n };\n };\n\n return {\n span: () => ({ conversion: convert, priority: 2 }),\n strong: () => ({ conversion: convert, priority: 2 }),\n b: () => ({ conversion: convert, priority: 2 }),\n em: () => ({ conversion: convert, priority: 2 }),\n i: () => ({ conversion: convert, priority: 2 }),\n u: () => ({ conversion: convert, priority: 2 }),\n s: () => ({ conversion: convert, priority: 2 }),\n code: () => ({ conversion: convert, priority: 2 }),\n };\n }\n\n // ── DOM Export (Lexical nodes → HTML) ─────────────────────────────────────\n\n exportDOM(editor: LexicalEditor): DOMExportOutput {\n // super.exportDOM handles format flags → <strong>, <em>, <u> etc.\n const { element } = super.exportDOM(editor);\n if (element && \"setAttribute\" in element && this.__customStyle) {\n (element as HTMLElement).setAttribute(\"style\", this.__customStyle);\n }\n return { element };\n }\n\n // ── DOM Rendering ──────────────────────────────────────────────────────────\n\n createDOM(config: EditorConfig): HTMLElement {\n const dom = super.createDOM(config);\n if (this.__customStyle) {\n dom.setAttribute(\"style\", this.__customStyle);\n }\n return dom;\n }\n\n updateDOM(\n prevNode: StyledTextNode,\n dom: HTMLElement,\n config: EditorConfig,\n ): boolean {\n // super.updateDOM returns true when Lexical needs to fully recreate the DOM\n // node (e.g. format flag changed from bold → not bold requires a new element)\n const mustRecreate = super.updateDOM(prevNode as never, dom, config);\n if (mustRecreate) return true;\n\n // Only patch the style attribute — no need to recreate the whole element\n if (prevNode.__customStyle !== this.__customStyle) {\n if (this.__customStyle) dom.setAttribute(\"style\", this.__customStyle);\n else dom.removeAttribute(\"style\");\n }\n return false;\n }\n\n // ── Style API ─────────────────────────────────────────────────────────────\n\n // Merge one or more CSS properties into the existing style.\n // Pass null as a value to remove a specific property.\n //\n // Examples:\n // node.patchStyle({ color: \"#ff0000\" })\n // node.patchStyle({ \"font-size\": \"18px\", \"font-family\": \"Georgia\" })\n // node.patchStyle({ color: null }) // removes color only\n patchStyle(patch: Record<string, string | null>): void {\n const self = this.getWritable() as StyledTextNode;\n self.__customStyle = mergeStyles(self.__customStyle, patch);\n }\n\n // Get a single CSS property value from the custom style\n getStyleProperty(prop: string): string | undefined {\n return styleStringToMap(this.__customStyle)[prop];\n }\n\n // Replace entire style string (use patchStyle for incremental updates)\n setCustomStyle(style: string): void {\n const self = this.getWritable() as StyledTextNode;\n self.__customStyle = style;\n }\n\n // Remove all custom styles\n clearStyle(): void {\n const self = this.getWritable() as StyledTextNode;\n self.__customStyle = \"\";\n }\n\n getCustomStyle(): string {\n return this.__customStyle;\n }\n}\n","import { $getSelection, $isRangeSelection } from \"lexical\";\nimport { StyledTextNode } from \"../plugins/StyledTextNode\";\nimport { $patchStyleText } from \"@lexical/selection\";\n\nfunction isValidEmail(email: string): boolean {\n return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email);\n}\n\nexport { isValidEmail };\n\n// ─── Style Utilities ──────────────────────────────────────────────────────────\n\n// \"color: red; font-size: 14px\" → { color: \"red\", \"font-size\": \"14px\" }\nexport function styleStringToMap(style: string): Record<string, string> {\n return Object.fromEntries(\n style\n .split(\";\")\n .map((s) => s.trim())\n .filter(Boolean)\n .map((s) => {\n const [prop, ...rest] = s.split(\":\");\n return [prop.trim(), rest.join(\":\").trim()];\n }),\n );\n}\n\n// { color: \"red\", \"font-size\": \"14px\" } → \"color: red; font-size: 14px\"\nexport function mapToStyleString(map: Record<string, string>): string {\n return Object.entries(map)\n .filter(([, v]) => v != null && v !== \"\")\n .map(([k, v]) => `${k}: ${v}`)\n .join(\"; \");\n}\n\n// Merge patch into an existing style string — null value removes the property\nexport function mergeStyles(\n existing: string,\n patch: Record<string, string | null>,\n): string {\n const map = styleStringToMap(existing);\n for (const [prop, value] of Object.entries(patch)) {\n if (value === null) delete map[prop];\n else map[prop] = value;\n }\n return mapToStyleString(map);\n}\n\n// Extract inline styles from a DOM element, stripping properties Lexical\n// adds on export that are meaningless on import (white-space: pre-wrap)\nexport function extractStyles(el: HTMLElement): string {\n const map = styleStringToMap(el.getAttribute(\"style\") ?? \"\");\n // Remove Lexical export artifacts that shouldn't influence re-import\n delete map[\"white-space\"];\n return mapToStyleString(map);\n}\n\n// Helper: patch style on all StyledTextNodes in selection\nexport function $patchStyledNodes(patch: Record<string, string | null>): void {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) return;\n\n const nodes = selection.getNodes();\n nodes.forEach((node) => {\n if (node instanceof StyledTextNode) {\n node.patchStyle(patch); // merges, doesn't replace\n } else {\n // fallback for regular TextNodes — use Lexical's built-in\n if (Object.keys(patch).length) {\n $patchStyleText(selection, patch);\n }\n }\n });\n}\n","import { useEffect, useState } from \"react\";\n\n// ─── Dispatch a style command into the signature ──────────────────────────────\n\nexport function dispatchSignatureStyle(command: string, value: string) {\n document.dispatchEvent(\n new CustomEvent(\"signature:style\", { detail: { command, value } }),\n );\n}\n\n// ─── Hook: returns true when the current selection is inside a signature ──────\n\nexport function useIsSignatureActive(): boolean {\n const [active, setActive] = useState(false);\n\n useEffect(() => {\n const check = () => {\n const sel = window.getSelection();\n if (!sel || sel.rangeCount === 0) {\n setActive(false);\n return;\n }\n const node = sel.anchorNode;\n // Signature divs have data-signature=\"true\" — see SignatureDecorator\n const inside =\n !!(node as HTMLElement)?.closest?.('[data-signature=\"true\"]') ||\n !!node?.parentElement?.closest('[data-signature=\"true\"]');\n setActive(inside);\n };\n document.addEventListener(\"selectionchange\", check);\n return () => document.removeEventListener(\"selectionchange\", check);\n }, []);\n\n return active;\n}\n","import { useRef, useCallback, useEffect, useState } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $getNodeByKey } from \"lexical\";\nimport { HtmlNode } from \"./HtmlNode\";\nimport {\n FORMAT_TEXT_COMMAND,\n COMMAND_PRIORITY_CRITICAL,\n LexicalCommand,\n} from \"lexical\";\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\ninterface Props {\n nodeKey: string;\n html: string;\n}\n\n// Map of Lexical FORMAT_TEXT_COMMAND format → execCommand equivalent\nexport const FORMAT_TO_EXEC: Record<string, string> = {\n bold: \"bold\",\n italic: \"italic\",\n underline: \"underline\",\n strikethrough: \"strikeThrough\",\n subscript: \"subscript\",\n superscript: \"superscript\",\n fontSize: \"fontSize\",\n backColor: \"backColor\",\n foreColor: \"foreColor\",\n};\n\n// ─── Hook: track whether selection is inside this signature ───────────────────\n\nfunction useIsSelectionInside(ref: React.RefObject<HTMLDivElement>) {\n const [isInside, setIsInside] = useState(false);\n\n useEffect(() => {\n const check = () => {\n const sel = window.getSelection();\n if (!sel || sel.rangeCount === 0 || !ref.current) {\n setIsInside(false);\n return;\n }\n setIsInside(ref.current.contains(sel.anchorNode));\n };\n\n document.addEventListener(\"selectionchange\", check);\n return () => document.removeEventListener(\"selectionchange\", check);\n }, [ref]);\n\n return isInside;\n}\n\n// ─── Component ────────────────────────────────────────────────────────────────\n\nexport function HtmlDecorator({ nodeKey, html }: Props) {\n const [editor] = useLexicalComposerContext();\n const ref = useRef<HTMLDivElement>(null);\n const isInsideRef = useRef(false);\n const isSelectionInside = useIsSelectionInside(ref);\n\n // Keep a ref in sync so command handlers (which close over stale state) work\n useEffect(() => {\n isInsideRef.current = isSelectionInside;\n }, [isSelectionInside]);\n\n // Sync innerHTML back into SignatureNode on blur\n const syncToNode = useCallback(() => {\n const updatedHTML = ref.current?.innerHTML ?? \"\";\n editor.update(() => {\n const node = $getNodeByKey(nodeKey) as HtmlNode | null;\n if (node && updatedHTML !== node.__html) {\n node.setHTML(updatedHTML);\n }\n });\n }, [editor, nodeKey]);\n\n // ── Intercept Lexical toolbar commands when selection is inside ──────────────\n\n useEffect(() => {\n // Bold / Italic / Underline / Strikethrough etc.\n const unregisterFormat = editor.registerCommand(\n FORMAT_TEXT_COMMAND,\n (format: string) => {\n if (!isInsideRef.current) return false; // let Lexical handle normally\n const execCmd = FORMAT_TO_EXEC[format];\n if (execCmd) document.execCommand(execCmd, false);\n syncToNode();\n return true; // consumed — don't let Lexical process it\n },\n COMMAND_PRIORITY_CRITICAL,\n );\n\n return () => {\n unregisterFormat();\n };\n }, [editor, syncToNode]);\n\n // ── Listen for custom style commands from toolbar (color, font, size) ────────\n // Your toolbar should dispatch these custom events on the document when\n // a style button is clicked. See ToolbarBridge.tsx below.\n\n useEffect(() => {\n const handleStyleCommand = (e: Event) => {\n if (!isInsideRef.current) return;\n const { command, value } = (e as CustomEvent).detail as {\n command: string;\n value: string;\n };\n document.execCommand(command, false, value);\n syncToNode();\n };\n\n document.addEventListener(\"signature:style\", handleStyleCommand);\n return () =>\n document.removeEventListener(\"signature:style\", handleStyleCommand);\n }, [syncToNode]);\n\n const stop = (e: React.SyntheticEvent) => e.stopPropagation();\n\n return (\n <div\n ref={ref}\n contentEditable\n suppressContentEditableWarning\n dangerouslySetInnerHTML={{ __html: html }}\n onBlur={syncToNode}\n onInput={stop}\n onKeyDown={stop}\n onKeyUp={stop}\n onKeyPress={stop}\n onPaste={stop}\n onCut={stop}\n onCopy={stop}\n onClick={stop}\n onMouseDown={stop}\n data-signature=\"true\"\n style={{ outline: \"none\", cursor: \"text\", borderRadius: 4 }}\n onFocus={(e) => {\n // e.currentTarget.style.outline = \"2px solid rgba(59,130,246,0.25)\";\n }}\n onBlurCapture={(e) => {\n e.currentTarget.style.outline = \"none\";\n }}\n />\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 } from \"@lexical/selection\";\nimport { OPTIONS } from \"../utils/core\";\nimport { $patchStyledNodes } from \"../utils/common\";\nimport {\n dispatchSignatureStyle,\n useIsSignatureActive,\n} from \"../plugins/PasterPlugin/ToolbarBridge\";\nimport { FORMAT_TO_EXEC } from \"../plugins/PasterPlugin/HtmlDecorator\";\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 (\n \"#\" +\n [r, g, b]\n .map((x) => {\n const hex = parseInt(x).toString(16);\n return hex.length === 1 ? \"0\" + hex : hex;\n })\n .join(\"\")\n );\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 (\n \"#\" +\n [r, g, b]\n .map((x) => {\n const hex = parseInt(x).toString(16);\n return hex.length === 1 ? \"0\" + hex : hex;\n })\n .join(\"\")\n );\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 [eventTypes.bold]: false,\n [eventTypes.italic]: false,\n [eventTypes.underline]: false,\n });\n const [isLink, setIsLink] = useState(false);\n\n const isSignatureActive = useIsSignatureActive();\n\n const updateToolbar = useCallback(() => {\n editor.getEditorState().read(() => {\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 if (anchorNode === null) return;\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.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 let fontFamily = \"\";\n\n // If selection is collapsed, check for selection style overrides\n if (selection.isCollapsed()) {\n fontFamily =\n selection.style\n .split(\"font-family:\")[1]\n ?.split(\";\")[0]\n ?.trim()\n .replace(/['\"]/g, \"\") || \"\";\n }\n\n if (!fontFamily) {\n fontFamily = computedStyle.getPropertyValue(\"font-family\");\n }\n\n if (fontFamily) {\n let firstFont = fontFamily\n .split(\",\")[0]\n .trim()\n .replace(/['\"]/g, \"\");\n // Normalize system fonts to sans-serif\n if (\n [\n \"-apple-system\",\n \"BlinkMacSystemFont\",\n \"system-ui\",\n \"Arial\",\n \"Helvetica\",\n ].includes(firstFont)\n ) {\n firstFont = \"sans-serif\";\n } else if ([\"Times New Roman\", \"Times\"].includes(firstFont)) {\n firstFont = \"sans-serif\";\n }\n newState[eventTypes.fontFamily] = firstFont;\n }\n\n // Get font size - extract only the number\n let fontSize = \"\";\n if (selection.isCollapsed()) {\n fontSize =\n selection.style.split(\"font-size:\")[1]?.split(\";\")[0]?.trim() ||\n \"\";\n }\n\n if (!fontSize) {\n fontSize = computedStyle.getPropertyValue(\"font-size\");\n }\n\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 // Only set if we have actual colors (not transparent/initial)\n const hexColor = color ? rgbToHex(color) : null;\n const hexBgColor =\n backgroundColor &&\n backgroundColor !== \"rgba(0, 0, 0, 0)\" &&\n backgroundColor !== \"transparent\"\n ? rgbToHex(backgroundColor)\n : null;\n\n if (hexColor || hexBgColor) {\n newState[eventTypes.color.base] = {\n text: hexColor || null,\n background: hexBgColor || null,\n };\n } else {\n newState[eventTypes.color.base] = {\n text: null,\n background: null,\n };\n }\n\n // Get text alignment directly from the Lexical block element\n let textAlign = typeof (element as any).getFormatType === 'function' \n ? (element as any).getFormatType() \n : \"left\";\n if (textAlign === \"start\" || textAlign === \"\") {\n textAlign = \"left\";\n }\n newState[eventTypes.align.base] = textAlign;\n }\n\n setSelectedEventTypes((prev) => ({ ...prev, ...newState }));\n }\n });\n }, [editor]);\n\n const toggleStyle = (\n key: string,\n styleKey: string,\n value: string,\n check: (current: string) => boolean,\n ) => {\n editor.update(() => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) return;\n\n const node = getSelectedNode(selection);\n const el =\n editor.getElementByKey(node.getKey()) ||\n editor.getElementByKey(node.getParent().getKey());\n\n const current = el\n ? window.getComputedStyle(el).getPropertyValue(styleKey)\n : \"\";\n\n const isActive = check(current);\n setSelectedEventTypes((prev: any) => ({ ...prev, [key]: !prev[key] }));\n\n $patchStyledNodes({\n [styleKey]: isActive ? \"\" : value,\n });\n });\n };\n\n useEffect(() => {\n updateToolbar();\n }, [editor, updateToolbar]);\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 toggleStyle(eventTypes.bold, \"font-weight\", \"700\", (current) => {\n return (\n current === \"bold\" || (parseInt(current || \"0\", 10) || 0) >= 600\n );\n });\n break;\n case eventTypes.italic:\n toggleStyle(\n eventTypes.italic,\n \"font-style\",\n \"italic\",\n (current) => current === \"italic\",\n );\n break;\n case eventTypes.underline:\n toggleStyle(\n eventTypes.underline,\n \"text-decoration\",\n \"underline\",\n (current) => current.includes(\"underline\"),\n );\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 const fontFamily = event as string;\n setSelectedEventTypes((prev: any) => ({\n ...prev,\n [eventTypes.fontFamily]: fontFamily,\n }));\n\n applyFontFamily(fontFamily);\n break;\n }\n case eventTypes.fontSize: {\n const fontSizeKey = event as string;\n const fontSizePx =\n OPTIONS.find((i) => i.key === fontSizeKey)?.sizePx ?? 16;\n setSelectedEventTypes((prev: any) => ({\n ...prev,\n [eventTypes.fontSize]: fontSizePx,\n }));\n applyFontSize(fontSizeKey);\n break;\n }\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 $patchStyledNodes({ \"font-family\": fontFamily });\n }\n });\n };\n\n const applyFontSize = (fontSize: string) => {\n if (isSignatureActive) {\n const selectedFontSize =\n OPTIONS.find((i) => i.key === fontSize)?.htmlNodeVal ?? \"2\";\n // execCommand fontSize only accepts 1-7, use CSS instead:\n dispatchSignatureStyle(FORMAT_TO_EXEC.fontSize, selectedFontSize); // triggers styleWith accepted fontSize\n } else {\n const selectedFontSize =\n OPTIONS.find((i) => i.key === fontSize)?.sizePx ?? 16;\n editor.update(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n $patchStyledNodes({ \"font-size\": `${selectedFontSize}px` });\n }\n });\n }\n };\n\n const applyFontColor = (colorObj: { background: string; text: string }) => {\n if (isSignatureActive) {\n dispatchSignatureStyle(FORMAT_TO_EXEC.backColor, colorObj.background); // background color\n dispatchSignatureStyle(FORMAT_TO_EXEC.foreColor, colorObj.text); // text color\n } else {\n editor.update(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n $patchStyledNodes({\n \"background-color\": colorObj.background,\n color: colorObj.text,\n });\n }\n });\n }\n };\n\n const insertLink = useCallback(() => {\n if (!isLink) {\n editor.update(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n if (selection.isCollapsed()) {\n // Select the word to the left if selection is collapsed\n selection.modify(\"extend\", true, \"word\");\n }\n const updatedSelection = $getSelection();\n if (\n $isRangeSelection(updatedSelection) &&\n !updatedSelection.isCollapsed()\n ) {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, \"https://\");\n }\n }\n });\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 [isLink, setIsLink] = 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 let isLinkActive = false;\n let newLinkUrl = \"\";\n\n if ($isRangeSelection(selection)) {\n const node = getSelectedNode(selection);\n const parent = node.getParent();\n if ($isLinkNode(parent)) {\n newLinkUrl = parent.getURL();\n isLinkActive = true;\n } else if ($isLinkNode(node)) {\n newLinkUrl = node.getURL();\n isLinkActive = true;\n }\n }\n\n setLinkUrl(newLinkUrl);\n setIsLink(isLinkActive);\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 rootElement &&\n rootElement.contains(nativeSelection.anchorNode) &&\n (isEditMode || !nativeSelection.isCollapsed || isLinkActive || newLinkUrl !== \"\")\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 useEffect(() => {\n if (linkUrl === \"https://\") {\n setEditMode(true);\n }\n }, [linkUrl]);\n\n return (\n <div className=\"floating-link-editor\" ref={editorRef}>\n {isEditMode ? (\n <>\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 <button\n className=\"link-button\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => {\n if (isEditMode) editor.dispatchCommand(TOGGLE_LINK_COMMAND, linkUrl);\n setEditMode(false);\n }}>\n <Icon name=\"Check\" />\n </button>\n </>\n ) : (\n <div className=\"link-view-mode\">\n <span className=\"link-view-label\">Go to link:</span>\n <a href={linkUrl} target=\"_blank\" rel=\"noopener noreferrer\" className=\"link-view-url\">\n {linkUrl}\n </a>\n <span className=\"link-view-divider\">|</span>\n <button\n className=\"link-text-button\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => setEditMode(true)}\n >\n Change\n </button>\n <span className=\"link-view-divider\">|</span>\n <button\n className=\"link-text-button\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);\n setEditMode(false);\n }}\n >\n Remove\n </button>\n </div>\n )}\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} className=\"tool-bar-button\" data-tooltip=\"Attach files\">\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 { useEffect, useState, useCallback } from 'react';\n\ndeclare global {\n interface Window {\n gapi: any;\n google: any;\n }\n}\n\nexport function useGooglePicker(\n clientId: string | undefined,\n apiKey: string | undefined,\n onSelect: (files: File[]) => void,\n customDiscoveryDocs?: string[],\n customScopes?: string\n) {\n const discoveryDocs = customDiscoveryDocs || [\"https://www.googleapis.com/discovery/v1/apis/drive/v3/rest\"];\n const scopes = customScopes || \"https://www.googleapis.com/auth/drive.readonly\";\n\n const [gapiLoaded, setGapiLoaded] = useState(false);\n const [gisLoaded, setGisLoaded] = useState(false);\n const [tokenClient, setTokenClient] = useState<any>(null);\n const [accessToken, setAccessToken] = useState<string | null>(null);\n\n useEffect(() => {\n const loadScripts = () => {\n const gapiScript = document.createElement('script');\n gapiScript.src = 'https://apis.google.com/js/api.js';\n gapiScript.async = true;\n gapiScript.defer = true;\n gapiScript.onload = () => {\n if (!apiKey) return;\n window.gapi.load('client:picker', async () => {\n await window.gapi.client.init({\n apiKey: apiKey,\n discoveryDocs: discoveryDocs,\n });\n setGapiLoaded(true);\n });\n };\n document.body.appendChild(gapiScript);\n\n const gisScript = document.createElement('script');\n gisScript.src = 'https://accounts.google.com/gsi/client';\n gisScript.async = true;\n gisScript.defer = true;\n gisScript.onload = () => {\n if (!clientId) return;\n const client = window.google.accounts.oauth2.initTokenClient({\n client_id: clientId,\n scope: scopes,\n callback: '', // defined at request time\n });\n setTokenClient(client);\n setGisLoaded(true);\n };\n document.body.appendChild(gisScript);\n };\n\n if (clientId && apiKey) {\n loadScripts();\n }\n }, [clientId, apiKey]);\n\n const createPicker = useCallback((token: string) => {\n if (!apiKey) return;\n const picker = new window.google.picker.PickerBuilder()\n .addView(window.google.picker.ViewId.DOCS)\n .setOAuthToken(token)\n .setDeveloperKey(apiKey)\n .setSize(1051, 650)\n .setCallback(async (data: any) => {\n if (data.action === window.google.picker.Action.PICKED) {\n const files = data.docs.map((doc: any) => {\n // Since we can't easily get the actual File object from Drive without downloading,\n // we create a placeholder File object with the name and metadata.\n // In a real app, you might download the file or just store the Drive URL.\n return new File([], doc.name, { type: doc.mimeType });\n });\n onSelect(files);\n }\n })\n .build();\n picker.setVisible(true);\n }, [onSelect]);\n\n const openPicker = useCallback(() => {\n if (!tokenClient) return;\n\n // Reuse existing token if available\n if (accessToken) {\n createPicker(accessToken);\n return;\n }\n\n tokenClient.callback = async (response: any) => {\n if (response.error !== undefined) {\n throw response;\n }\n setAccessToken(response.access_token);\n createPicker(response.access_token);\n };\n\n tokenClient.requestAccessToken({ prompt: 'consent' });\n }, [tokenClient, accessToken, createPicker]);\n\n return { openPicker, isLoaded: gapiLoaded && gisLoaded };\n}\n","import React, { useEffect, useRef } from \"react\";\nimport Picker from \"@emoji-mart/react\";\nimport data from \"@emoji-mart/data\";\n\ninterface EmojiPickerProps {\n onEmojiSelect: (emoji: any) => void;\n}\n\nconst EmojiPicker: React.FC<EmojiPickerProps> = ({ onEmojiSelect }) => {\n const pickerRef = useRef<HTMLDivElement>(null);\n const [isClient, setIsClient] = React.useState(false);\n\n useEffect(() => {\n setIsClient(true);\n // Log to confirm if Picker component is being initialized\n console.log(\"EmojiPicker: isClient set to true\");\n }, []);\n\n if (!isClient) return null;\n\n return (\n <div\n ref={pickerRef}\n onClick={(e) => e.stopPropagation()}\n onMouseDown={(e) => e.stopPropagation()}\n >\n <Picker\n data={data}\n onEmojiSelect={(emoji: any) => {\n console.log(\"Emoji selected:\", emoji);\n onEmojiSelect(emoji);\n }}\n />\n </div>\n );\n};\n\nexport default EmojiPicker;\n","import {\n DecoratorNode,\n EditorConfig,\n NodeKey,\n SerializedLexicalNode,\n} from \"lexical\";\nimport * as React from \"react\";\nimport { JSX } from \"react\";\n\nfunction ImageComponent({ src, altText }: { src: string; altText: string }) {\n return <img src={src} alt={altText} />;\n}\n\nexport interface SerializedImageNode extends SerializedLexicalNode {\n src: string;\n altText: string;\n type: \"image\";\n version: 1;\n}\n\nexport class ImageNode extends DecoratorNode<JSX.Element> {\n __src: string;\n __altText: string;\n\n static getType(): string {\n return \"image\";\n }\n\n static clone(node: ImageNode): ImageNode {\n const clonedNode = new ImageNode(node.__key);\n clonedNode.__src = node.__src;\n clonedNode.__altText = node.__altText;\n return clonedNode;\n }\n\n constructor(key?: NodeKey) {\n // Constructor now takes 0 required arguments\n super(key);\n this.__src = \"\"; // Initialize with default empty string\n this.__altText = \"\"; // Initialize with default empty string\n }\n\n static importJSON(serializedNode: SerializedImageNode): ImageNode {\n const node = $createImageNode(serializedNode.src, serializedNode.altText); // Still use $createImageNode for consistency\n node.setSrc(serializedNode.src);\n node.setAltText(serializedNode.altText);\n return node;\n }\n\n exportJSON(): SerializedImageNode {\n return {\n altText: this.getAltText(),\n src: this.getSrc(),\n type: \"image\",\n version: 1,\n };\n }\n\n createDOM(config: EditorConfig): HTMLElement {\n const div = document.createElement(\"div\");\n div.style.display = \"contents\";\n return div;\n }\n\n updateDOM(): false {\n return false;\n }\n\n setSrc(src: string): void {\n const writable = this.getWritable();\n writable.__src = src;\n }\n\n getSrc(): string {\n return this.__src;\n }\n\n setAltText(altText: string): void {\n const writable = this.getWritable();\n writable.__altText = altText;\n }\n\n getAltText(): string {\n return this.__altText;\n }\n\n getTextContent(): string {\n return this.__altText;\n }\n\n decorate(): JSX.Element {\n return React.createElement(ImageComponent, {\n src: this.__src,\n altText: this.__altText,\n });\n }\n}\n\nexport function $createImageNode(src: string, altText: string): ImageNode {\n const imageNode = new ImageNode();\n imageNode.setSrc(src);\n imageNode.setAltText(altText);\n return imageNode;\n}\n\nexport function $isImageNode(node: ImageNode | null | undefined): boolean {\n return node instanceof ImageNode;\n}\n","import * as React from \"react\";\nimport { useEffect } from \"react\";\nimport { JSX } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { COMMAND_PRIORITY_EDITOR, createCommand } from \"lexical\";\nimport { $insertNodeToNearestRoot } from \"@lexical/utils\";\nimport { $createImageNode, ImageNode } from \"./ImageNode\";\n\nexport const INSERT_IMAGE_COMMAND = createCommand<{\n src: string;\n altText: string;\n}>();\n\nexport function ImagePlugin(): JSX.Element | null {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n if (!editor.hasNodes([ImageNode])) {\n throw new Error(\"ImagesPlugin: ImageNode not registered on editor\");\n }\n\n return editor.registerCommand(\n INSERT_IMAGE_COMMAND,\n (payload) => {\n const { src, altText } = payload;\n const imageNode = $createImageNode(src, altText);\n $insertNodeToNearestRoot(imageNode);\n\n return true;\n },\n COMMAND_PRIORITY_EDITOR,\n );\n }, [editor]);\n\n return null;\n}\n","import { useEffect, useRef, 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\";\nimport { useGooglePicker } from \"../../../hook/useGooglePicker\";\n\n// Emoji imports\nimport EmojiPicker from \"./EmojiPicker\";\nimport {\n $createTextNode,\n $getSelection,\n LexicalEditor,\n $isRangeSelection,\n} from \"lexical\";\nimport { TOGGLE_LINK_COMMAND } from \"@lexical/link\";\nimport { INSERT_IMAGE_COMMAND } from \"../../../plugins/ImagePlugin/ImagePlugin\"; // Added import\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 setShowEmojiPicker: React.Dispatch<React.SetStateAction<boolean>>;\n setEmojiPosition: React.Dispatch<\n React.SetStateAction<{ top: number; left: number } | null>\n >;\n isLink: boolean;\n editor: LexicalEditor | null;\n openDrivePicker: () => void;\n isMoreVisible: boolean;\n collapsedFormattingPlugins: Record<string, any>;\n visibleFormattingPlugins: Record<string, any>;\n moreOpen: boolean;\n setMoreOpen: React.Dispatch<React.SetStateAction<boolean>>;\n}\n\nconst getToolbarComponent = (\n plugin: any,\n {\n onChange,\n state,\n setState,\n selectedEventTypes,\n blockType,\n setAttachments,\n setShowEmojiPicker,\n setEmojiPosition,\n isLink,\n editor,\n openDrivePicker,\n }: 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.lockClock:\n // case eventTypes.insertSignature:\n return (\n <button\n key={`${plugin.name}-${plugin.icon}`}\n className={`tool-bar-button ${\n selectedEventTypes?.[plugin.name] ? \"active-btn-toolbar\" : \"\"\n }`}\n onClick={() => onChange(plugin.name, true)}\n data-tooltip={plugin.label}\n >\n <Icon className=\"tool-bar-button-icon\" name={plugin.icon} />\n </button>\n );\n\n case eventTypes.drive:\n return (\n <button\n key={`${plugin.name}-${plugin.icon}`}\n className={`tool-bar-button ${\n selectedEventTypes?.[plugin.name] ? \"active-btn-toolbar\" : \"\"\n }`}\n onClick={openDrivePicker}\n data-tooltip=\"Insert files using Drive\"\n >\n <Icon className=\"tool-bar-button-icon\" name={plugin.icon} />\n </button>\n );\n case eventTypes.insertPhoto: // New case for insertPhoto\n return (\n <>\n <input\n type=\"file\"\n accept=\"image/*\"\n style={{ display: \"none\" }}\n id=\"image-upload\"\n onChange={(event) => {\n const files = event.target.files;\n if (files && files.length > 0) {\n const reader = new FileReader();\n reader.onloadend = () => {\n if (editor) {\n editor.dispatchCommand(INSERT_IMAGE_COMMAND, {\n src: reader.result as string,\n altText: files[0].name,\n });\n }\n };\n reader.readAsDataURL(files[0]);\n }\n }}\n />\n <button\n key={`${plugin.name}-${plugin.icon}`}\n className={`tool-bar-button ${\n selectedEventTypes?.[plugin.name] ? \"active-btn-toolbar\" : \"\"\n }`}\n onClick={() => {\n document.getElementById(\"image-upload\")?.click();\n }}\n data-tooltip={plugin.label}\n >\n <Icon className=\"tool-bar-button-icon\" name={plugin.icon} />\n </button>\n </>\n );\n\n case eventTypes.link:\n return (\n <button\n key={`${plugin.name}-${plugin.icon}`}\n className={`tool-bar-button ${isLink ? \"active-btn-toolbar\" : \"\"}`}\n onClick={() => onChange(plugin.name, true)}\n data-tooltip={plugin.label}\n >\n <Icon className=\"tool-bar-button-icon\" name={plugin.icon} />\n </button>\n );\n\n case eventTypes.listNumber:\n return (\n <button\n key={`${plugin.name}-${plugin.icon}`}\n className={`tool-bar-button ${blockType === \"ol\" ? \"active-btn-toolbar\" : \"\"}`}\n onClick={() => onChange(plugin.name, true)}\n data-tooltip={plugin.label}\n >\n <Icon className=\"tool-bar-button-icon\" name={plugin.icon} />\n </button>\n );\n\n case eventTypes.listBullet:\n return (\n <button\n key={`${plugin.name}-${plugin.icon}`}\n className={`tool-bar-button ${blockType === \"ul\" ? \"active-btn-toolbar\" : \"\"}`}\n onClick={() => onChange(plugin.name, true)}\n data-tooltip={plugin.label}\n >\n <Icon className=\"tool-bar-button-icon\" name={plugin.icon} />\n </button>\n );\n\n case eventTypes.attachFile:\n return (\n <FileUploader\n value={state?.[plugin.name]}\n handleFileChange={(files) => {\n setState((prev) => ({ ...prev, [plugin.name]: files }));\n setAttachments(files);\n }}\n />\n );\n\n case eventTypes.fontFamily:\n return (\n <FontSelect\n value={selectedEventTypes?.[plugin.name] || state?.[plugin.name]}\n onChange={(e) => 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) => 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) => 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) => onChange(plugin.name, e)}\n />\n );\n\n case eventTypes.emoji:\n return (\n <button\n key={plugin.name}\n className=\"tool-bar-button\"\n onMouseDown={(e: any) => {\n e.preventDefault();\n e.stopPropagation();\n console.log(\n \"Emoji button clicked, current state:\",\n setShowEmojiPicker,\n );\n const rect = e.currentTarget.getBoundingClientRect();\n const topPosition = rect.top + window.scrollY - 440;\n\n setEmojiPosition({\n top: topPosition < 0 ? rect.bottom + window.scrollY + 10 : topPosition,\n left: Math.max(10, rect.left + window.scrollX),\n });\n\n setShowEmojiPicker((prev) => !prev);\n }}\n type=\"button\"\n data-tooltip=\"Insert emoji\"\n >\n <div style={{ pointerEvents: \"none\" }}>\n <Icon className=\"tool-bar-button-icon\" name={plugin.icon} />\n </div>\n </button>\n );\n\n default:\n break;\n }\n\n if (plugin.type === toolbarComponentType.divider)\n return <span className=\"divider\" />;\n else return;\n};\n\ninterface GetComponentProps extends ToolbarComponentProps {\n toggle: boolean;\n setToggle: React.Dispatch<React.SetStateAction<boolean>>;\n}\n\nconst getComponent = (\n plugin: { type: string; icon?: string; options?: any[]; name?: string },\n props: GetComponentProps & { key: string },\n) => {\n const { key, ...componentProps } = props;\n switch (plugin.type) {\n case toolbarComponentType.divider:\n return <div key={key} className=\"divider\" />;\n\n case toolbarComponentType.component:\n return (\n <div key={key} style={{ display: \"contents\" }}>\n {getToolbarComponent(plugin, componentProps)}\n </div>\n );\n\n case toolbarComponentType.styling:\n return (\n <div key={key} className=\"styling-toolbar\">\n {props.toggle && plugin.options?.length ? (\n <div className=\"styling-options\">\n {props.isMoreVisible\n ? props.visibleFormattingPlugins.map(\n (option: any, index: number) => (\n <div\n key={`${option.name}-${index}`}\n style={{ display: \"contents\" }}\n >\n {!option.hideOnCollapse\n ? getToolbarComponent(option, componentProps)\n : null}\n </div>\n ),\n )\n : plugin.options.map((option: any, index: number) => (\n <div\n key={`${option.name}-${index}`}\n style={{ display: \"contents\" }}\n >\n {getToolbarComponent(option, componentProps)}\n </div>\n ))}\n\n {/* More button (visible on small screens via CSS) */}\n <div className=\"more-wrapper\">\n <button\n className=\"tool-bar-button more-button\"\n onClick={() => props.setMoreOpen((v) => !v)}\n data-tooltip=\"More\"\n >\n <Icon className=\"tool-bar-button-icon\" name=\"DownArrow\" />\n </button>\n\n {props.moreOpen && (\n <div className=\"more-dropdown\">\n {props.collapsedFormattingPlugins.map((option, index) => (\n <div key={`more-${index}`} className=\"more-item\">\n <div\n key={`${option.name}-${index}`}\n style={{ display: \"contents\" }}\n >\n {getToolbarComponent(option, componentProps)}\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n ) : null}\n <button\n onClick={() => props.setToggle((prev) => !prev)}\n className=\"tool-bar-button\"\n data-tooltip=\"Formatting options\"\n >\n <Icon className=\"tool-bar-button-icon\" name={plugin.icon as any} />\n </button>\n </div>\n );\n\n default:\n return;\n }\n};\n\ninterface ToolBarProps {\n rightChildren?: React.ReactNode;\n leftChildren?: React.ReactNode;\n customTool?: React.ReactNode;\n disabled?: boolean;\n}\n\nfunction ToolBar({\n rightChildren,\n leftChildren,\n customTool,\n disabled,\n}: ToolBarProps) {\n const [toggle, setToggle] = useState(true);\n const [state, setState] = useState<Record<string, any>>({});\n const [showEmojiPicker, setShowEmojiPicker] = useState(false);\n const [emojiPosition, setEmojiPosition] = useState<{\n top: number;\n left: number;\n } | null>(null);\n const [moreOpen, setMoreOpen] = useState<boolean>(false);\n const [isMoreVisible, setIsMoreVisible] = useState<boolean>(false);\n const stylingPlugin = pluginList.find(\n (p) => p.type === toolbarComponentType.styling,\n );\n const formattingOptions = stylingPlugin?.options || [];\n\n const collapsedFormattingPlugins = formattingOptions.filter(\n (p: any) => p?.collapse,\n );\n const visibleFormattingPlugins = formattingOptions.filter(\n (p: any) => !p?.collapse,\n );\n\n const { setAttachments, googleDriveConfig } = useEmailContext();\n const { onChange, isLink, editor, selectedEventTypes, blockType } =\n useOnClickListener();\n\n const { openPicker } = useGooglePicker(\n googleDriveConfig?.clientId,\n googleDriveConfig?.apiKey,\n (files) => {\n setState((prev) => {\n const currentFiles = prev[eventTypes.attachFile] || [];\n const updatedFiles = [...currentFiles, ...files];\n setAttachments(updatedFiles);\n return { ...prev, [eventTypes.attachFile]: updatedFiles };\n });\n },\n googleDriveConfig?.discoveryDocs,\n googleDriveConfig?.scopes,\n );\n\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const observer = new ResizeObserver((entries) => {\n const width = entries[0].contentRect.width;\n setIsMoreVisible(width <= 720);\n });\n\n if (containerRef.current) observer.observe(containerRef.current);\n return () => observer.disconnect();\n }, []);\n\n return (\n <div\n ref={containerRef}\n className={`toolbar-container ${disabled ? \"toolbar-disabled\" : \"\"}`}\n >\n {state[eventTypes.attachFile]?.length ? (\n <div className=\"file-upload-container\">\n {state[eventTypes.attachFile].map((item: File, index: number) => (\n <FilePreview\n key={item.name + index}\n file={item}\n index={index}\n onRemove={(i) => {\n setState((prev: any) => {\n const updatedFiles = prev[eventTypes.attachFile].filter(\n (_, idx) => idx !== i,\n );\n setAttachments(updatedFiles);\n return { ...prev, [eventTypes.attachFile]: updatedFiles };\n });\n }}\n />\n ))}\n </div>\n ) : null}\n\n <div className=\"toolbar-wrapper\">\n {leftChildren}\n <div className=\"plugin-wrapper\">\n {pluginList.map((plugin, index) =>\n getComponent(plugin, {\n key: `${plugin.name || plugin.type}-${index}`,\n toggle,\n setToggle,\n onChange,\n state,\n setState,\n selectedEventTypes,\n blockType,\n setAttachments,\n setShowEmojiPicker,\n setEmojiPosition,\n isLink,\n editor,\n openDrivePicker: openPicker,\n isMoreVisible,\n collapsedFormattingPlugins,\n visibleFormattingPlugins,\n moreOpen,\n setMoreOpen,\n }),\n )}\n {customTool}\n </div>\n {rightChildren}\n {isLink &&\n createPortal(<FloatingLinkEditor editor={editor} />, document.body)}\n </div>\n\n {/* Emoji Picker */}\n {showEmojiPicker &&\n emojiPosition &&\n createPortal(\n <div\n className=\"emoji-picker-container\"\n style={{\n position: \"absolute\",\n top: emojiPosition.top,\n left: emojiPosition.left,\n zIndex: 9999,\n }}\n >\n <EmojiPicker\n onEmojiSelect={(emoji: any) => {\n editor?.update(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n selection.insertNodes([$createTextNode(emoji.native)]);\n } else if (selection) {\n selection.insertNodes([$createTextNode(emoji.native)]);\n }\n });\n setShowEmojiPicker(false);\n }}\n />\n </div>,\n document.body,\n )}\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 { 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 { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { useEffect } from \"react\";\nimport { $getRoot, $isParagraphNode } from \"lexical\";\n\nexport default function DirectionPlugin(): null {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n return editor.registerUpdateListener(({ dirtyElements, tags }) => {\n // Don't process if it's a history merge to avoid fighting with history\n if (tags.has(\"history-merge\")) {\n return;\n }\n\n editor.update(() => {\n const root = $getRoot();\n if (root.getDirection() !== \"ltr\") {\n root.setDirection(\"ltr\");\n }\n \n // Enforce LTR on all block level nodes\n const children = root.getChildren();\n for (const child of children) {\n if ($isParagraphNode(child)) {\n if (child.getDirection() !== \"ltr\") {\n child.setDirection(\"ltr\");\n }\n }\n }\n });\n });\n }, [editor]);\n\n return null;\n}\n","/**\n * Maps Lexical-generated class names and inline styles back to attributes\n * that Lexical's importDOM understands natively.\n *\n * Problem: when Lexical exports HTML it uses class names like \"editor-text-bold\"\n * and inline styles like \"white-space: pre-wrap\". When re-importing, $generateNodesFromDOM\n * doesn't recognize these — it looks for <strong>, <em>, <u> tags or specific\n * style properties like font-weight: bold.\n */\nexport function preprocessDOM(dom: Document): Document {\n const removeEditorClasses = (el: Element) => {\n const classList = Array.from(el.classList);\n classList.forEach((className) => {\n if (className.startsWith(\"editor-\")) {\n el.classList.remove(className);\n }\n });\n\n if (el.classList.length === 0) {\n el.removeAttribute(\"class\");\n }\n };\n\n // ── 1. Map class names → semantic tags ──────────────────────────────────────\n // IMPORTANT: a text span can contain MULTIPLE format classes at once\n // (e.g. \"editor-text-bold editor-text-italic\").\n // Replacing by selector one-by-one drops remaining classes.\n dom.querySelectorAll(\"[class*='editor-text-']\").forEach((el) => {\n const htmlEl = el as HTMLElement;\n const classList = Array.from(htmlEl.classList);\n\n const formats: Array<\"strong\" | \"em\" | \"u\" | \"s\" | \"code\"> = [];\n if (classList.includes(\"editor-text-bold\")) formats.push(\"strong\");\n if (classList.includes(\"editor-text-italic\")) formats.push(\"em\");\n if (classList.includes(\"editor-text-underline\")) formats.push(\"u\");\n if (classList.includes(\"editor-text-strikethrough\")) formats.push(\"s\");\n if (classList.includes(\"editor-text-underlineStrikethrough\")) {\n formats.push(\"u\", \"s\");\n }\n if (classList.includes(\"editor-text-code\")) formats.push(\"code\");\n\n if (formats.length === 0) return;\n\n // Preserve non-editor classes and meaningful inline styles.\n const remainingClasses = classList.filter(\n (name) => !name.startsWith(\"editor-text-\"),\n );\n const styleText = htmlEl.getAttribute(\"style\") || \"\";\n\n // Build wrapper tree: <span style... class...><strong><em>...</em></strong></span>\n // span is added only when needed to carry styles/custom classes.\n let top: HTMLElement | null = null;\n let cursor: HTMLElement | null = null;\n\n const appendWrapper = (tag: string): HTMLElement => {\n const wrapper = dom.createElement(tag);\n if (!top) {\n top = wrapper;\n } else if (cursor) {\n cursor.append(wrapper);\n }\n cursor = wrapper;\n return wrapper;\n };\n\n const shouldCreateSpanContainer =\n !!styleText.trim() || remainingClasses.length > 0;\n\n if (shouldCreateSpanContainer) {\n const span = appendWrapper(\"span\");\n if (styleText.trim()) {\n span.setAttribute(\"style\", styleText);\n }\n if (remainingClasses.length > 0) {\n span.setAttribute(\"class\", remainingClasses.join(\" \"));\n }\n }\n\n formats.forEach((tag) => appendWrapper(tag));\n\n if (!top || !cursor) return;\n\n cursor.append(...Array.from(el.childNodes));\n el.replaceWith(top);\n });\n\n // ── 1b. Map inline style text formatting → semantic tags ────────────────────\n // Example: style=\"text-decoration: underline; font-style: italic; ...\"\n // Lexical import is more reliable with semantic tags (<u>, <em>, <strong>, <s>)\n // than class/style-only formatting.\n dom.querySelectorAll(\"[style]\").forEach((el) => {\n const htmlEl = el as HTMLElement;\n const style = htmlEl.style;\n\n const fontWeight = style.fontWeight?.trim().toLowerCase() || \"\";\n const numericFontWeight = Number.parseInt(fontWeight, 10);\n const hasBold =\n fontWeight === \"bold\" ||\n fontWeight === \"bolder\" ||\n (!Number.isNaN(numericFontWeight) && numericFontWeight >= 600);\n\n const fontStyle = style.fontStyle?.trim().toLowerCase() || \"\";\n const hasItalic = fontStyle === \"italic\" || fontStyle === \"oblique\";\n\n const textDecoration = (\n style.textDecorationLine ||\n style.textDecoration ||\n \"\"\n )\n .trim()\n .toLowerCase();\n const hasUnderline = textDecoration.includes(\"underline\");\n const hasStrike = textDecoration.includes(\"line-through\");\n\n const formats: Array<\"strong\" | \"em\" | \"u\" | \"s\"> = [];\n if (hasBold && ![\"STRONG\", \"B\"].includes(el.tagName))\n formats.push(\"strong\");\n if (hasItalic && ![\"EM\", \"I\"].includes(el.tagName)) formats.push(\"em\");\n if (hasUnderline && el.tagName !== \"U\") formats.push(\"u\");\n if (hasStrike && ![\"S\", \"DEL\", \"STRIKE\"].includes(el.tagName)) {\n formats.push(\"s\");\n }\n\n if (formats.length === 0) return;\n\n const originalChildren = Array.from(el.childNodes);\n if (originalChildren.length === 0) return;\n\n let rootWrapper: HTMLElement | null = null;\n let cursor: HTMLElement | null = null;\n\n formats.forEach((tag) => {\n const wrapper = dom.createElement(tag);\n if (!rootWrapper) {\n rootWrapper = wrapper;\n el.append(wrapper);\n } else if (cursor) {\n cursor.append(wrapper);\n }\n cursor = wrapper;\n });\n\n if (cursor) {\n cursor.append(...originalChildren);\n }\n });\n\n // ── 2. Clean up inline styles Lexical doesn't need ──────────────────────────\n\n // Remove \"white-space: pre-wrap\" — Lexical adds this on export but\n // doesn't need it on import. Leaving it causes importDOM to treat\n // the span as a styled node and drop the actual meaningful styles.\n dom.querySelectorAll(\"span, p, div, strong, em, u, s\").forEach((el) => {\n const htmlEl = el as HTMLElement;\n htmlEl.style.removeProperty(\"white-space\");\n\n // If span has no remaining meaningful styles and no classes, unwrap it\n // so Lexical doesn't create a redundant TextNode wrapper\n if (\n el.tagName === \"SPAN\" &&\n !htmlEl.style.cssText.trim() &&\n el.className === \"\"\n ) {\n el.replaceWith(...Array.from(el.childNodes));\n }\n });\n\n // ── 3. Map editor-paragraph → <p> (already a <p> but strip the class) ───────\n dom.querySelectorAll(\".editor-paragraph\").forEach((el) => {\n removeEditorClasses(el);\n // Preserve dir attribute for LTR/RTL\n });\n\n // ── 4. Map editor-heading-h1/h2/h3 → proper heading tags ───────────────────\n [\"h1\", \"h2\", \"h3\", \"h4\", \"h5\", \"h6\"].forEach((tag) => {\n dom.querySelectorAll(`.editor-heading-${tag}`).forEach((el) => {\n const heading = dom.createElement(tag);\n heading.innerHTML = el.innerHTML;\n const htmlEl = el as HTMLElement;\n if (htmlEl.style.cssText) heading.style.cssText = htmlEl.style.cssText;\n heading.style.removeProperty(\"white-space\");\n el.replaceWith(heading);\n });\n });\n\n // ── 5. Map editor-listitem / editor-list-ul / editor-list-ol ────────────────\n dom.querySelectorAll(\".editor-listitem\").forEach((el) => {\n removeEditorClasses(el);\n });\n dom.querySelectorAll(\".editor-list-ul, .editor-list-ol\").forEach((el) => {\n removeEditorClasses(el);\n });\n\n // ── 6. Map editor-link → <a> ─────────────────────────────────────────────────\n dom.querySelectorAll(\".editor-link\").forEach((el) => {\n removeEditorClasses(el);\n });\n\n return dom;\n}\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $generateNodesFromDOM } from \"@lexical/html\";\nimport { $getRoot, $insertNodes, $createParagraphNode } from \"lexical\";\nimport { useEffect, useRef } from \"react\";\nimport { preprocessDOM } from \"../hook/usePreprocessDOM\";\n\n/**\n * Initializes the editor with HTML content and ensures LTR direction.\n * This runs only once when the component mounts.\n */\nexport default function InitialStatePlugin({\n initialHTML,\n}: {\n initialHTML?: string;\n}): null {\n const [editor] = useLexicalComposerContext();\n const isInitialized = useRef(false);\n\n useEffect(() => {\n if (isInitialized.current) return;\n\n editor.update(() => {\n const root = $getRoot();\n\n // Force LTR on root\n root.setDirection(\"ltr\");\n root.clear();\n\n if (initialHTML) {\n const parser = new DOMParser();\n // Parse raw HTML\n const rawDom = parser.parseFromString(initialHTML, \"text/html\");\n // Pre-process: map Lexical class names → semantic tags + clean styles\n const processedDom = preprocessDOM(rawDom);\n //Generating nodes — Lexical can map <strong>, <em>, color styles etc.\n const nodes = $generateNodesFromDOM(editor, processedDom);\n $insertNodes(nodes);\n } else {\n // Ensure at least one paragraph exists\n if (root.isEmpty()) {\n const paragraph = $createParagraphNode();\n paragraph.setDirection(\"ltr\");\n root.append(paragraph);\n }\n }\n\n isInitialized.current = true;\n });\n }, [editor, initialHTML]);\n\n return null;\n}\n","import {\n DecoratorNode,\n NodeKey,\n SerializedLexicalNode,\n Spread,\n LexicalEditor,\n} from \"lexical\";\nimport { JSX } from \"react\";\nimport { HtmlDecorator } from \"./HtmlDecorator\";\n\nexport type SerializedHtmlNode = Spread<\n { html: string; type: \"signature\"; version: 1 },\n SerializedLexicalNode\n>;\n\nexport class HtmlNode extends DecoratorNode<JSX.Element> {\n __html: string;\n\n static getType(): string {\n return \"signature\";\n }\n\n static clone(node: HtmlNode): HtmlNode {\n return new HtmlNode(node.__html, node.__key);\n }\n\n static importJSON(s: SerializedHtmlNode): HtmlNode {\n return new HtmlNode(s.html);\n }\n\n constructor(html: string, key?: NodeKey) {\n super(key);\n this.__html = html;\n }\n\n exportJSON(): SerializedHtmlNode {\n return {\n html: this.__html,\n type: \"signature\",\n version: 1,\n };\n }\n\n // Used when editor exports to HTML (e.g. sending the email)\n exportDOM(_editor: LexicalEditor): { element: HTMLElement } {\n const div = document.createElement(\"div\");\n div.innerHTML = this.__html;\n return { element: div };\n }\n\n // Update the stored HTML and trigger re-render\n setHTML(html: string): void {\n const self = this.getWritable();\n self.__html = html;\n }\n\n isInline(): boolean {\n return false;\n }\n\n createDOM(): HTMLElement {\n return document.createElement(\"div\");\n }\n\n updateDOM(): false {\n return false;\n }\n\n decorate(): JSX.Element {\n return <HtmlDecorator nodeKey={this.__key} html={this.__html} />;\n }\n}\n","import { useEffect } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport {\n PASTE_COMMAND,\n COMMAND_PRIORITY_CRITICAL,\n $getSelection,\n $isRangeSelection,\n $insertNodes,\n $createParagraphNode,\n} from \"lexical\";\nimport { HtmlNode } from \"./HtmlNode\";\n\n/**\n * Detects whether pasted HTML looks like a rich email signature.\n * HubSpot, WiseStamp, Newoldstamp etc. all use deeply nested tables + icon imgs.\n */\nfunction isSignatureHTML(html: string): boolean {\n const doc = new DOMParser().parseFromString(html, \"text/html\");\n const tables = doc.querySelectorAll(\"table\");\n const hasIconImgs = doc.querySelector(\n 'img[alt=\"mobilePhone\"], img[alt=\"emailAddress\"], img[alt=\"website\"]',\n );\n // 3+ nested tables = signature layout\n return tables.length >= 3 || !!hasIconImgs;\n}\n\nexport default function PastePlugin(): null {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n return editor.registerCommand(\n PASTE_COMMAND,\n (event: ClipboardEvent) => {\n const html = event.clipboardData?.getData(\"text/html\");\n const plain = event.clipboardData?.getData(\"text/plain\");\n const selection = $getSelection();\n\n if (!$isRangeSelection(selection)) return false;\n\n if (html && isSignatureHTML(html)) {\n // Signature → store raw HTML in HtmlNode (preserves ALL styles)\n $insertNodes([new HtmlNode(html), $createParagraphNode()]);\n return true;\n }\n\n if (html) {\n // Regular rich text → let Lexical's default RichTextPlugin handle it\n return false;\n }\n\n if (plain) {\n selection.insertText(plain);\n return true;\n }\n\n return false;\n },\n COMMAND_PRIORITY_CRITICAL,\n );\n }, [editor]);\n\n return null;\n}\n","import React, {\n Children,\n cloneElement,\n isValidElement,\n useState,\n useEffect,\n} from \"react\";\nimport { 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 { ListPlugin } from \"@lexical/react/LexicalListPlugin\";\nimport { LinkPlugin } from \"@lexical/react/LexicalLinkPlugin\";\nimport { AutoLinkNode, LinkNode } from \"@lexical/link\";\nimport { ListItemNode, ListNode } from \"@lexical/list\";\nimport { TableNode, TableRowNode, TableCellNode } from \"@lexical/table\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport {\n $getRoot,\n $createParagraphNode,\n $createTextNode,\n $insertNodes,\n} from \"lexical\";\nimport { $generateNodesFromDOM } from \"@lexical/html\";\n\nimport ToolBar from \"../Editor/Toolbar\";\nimport lexicalEditorTheme from \"../../Themes/lexicalEditortheme\";\nimport OnChangePlugin from \"../../plugins/OnChangePlugin\";\nimport { ImageNode } from \"../../plugins/ImagePlugin/ImageNode\";\nimport { ImagePlugin } from \"../../plugins/ImagePlugin/ImagePlugin\";\nimport DirectionPlugin from \"../../plugins/DirectionPlugin\";\nimport InitialStatePlugin from \"../../plugins/InitialStatePlugin\";\nimport PastePlugin from \"../../plugins/PasterPlugin/PastePlugin\";\nimport { HtmlNode } from \"../../plugins/PasterPlugin/HtmlNode\";\nimport { StyledTextNode } from \"../../plugins/StyledTextNode\";\n\nimport { ComposeBoxProps } from \"./types\";\nimport \"./styles.css\";\nimport \"../Editor/EditorWrapper/editor.css\";\n\n// Helper component to handle AI Insertion logic inside the Lexical Context\nconst AiIntegrationPlugin = ({\n aiContent,\n onAiInsert,\n onAiDiscard,\n aiContentComponent,\n showAiPreview,\n}: {\n aiContent?: string;\n onAiInsert?: (content: string) => void;\n onAiDiscard?: () => void;\n aiContentComponent?: React.ReactNode;\n showAiPreview?: boolean;\n}) => {\n const [editor] = useLexicalComposerContext();\n\n const handleInsert = React.useCallback(() => {\n if (!aiContent) return;\n\n editor.update(() => {\n // Create a parser to convert the AI content string (HTML) to nodes\n // Or if it's plain text, just insert text nodes.\n // Assuming aiContent might be HTML or plain text.\n // For safety, let's try to handle as HTML if it looks like it, otherwise text.\n\n try {\n const parser = new DOMParser();\n const dom = parser.parseFromString(aiContent, \"text/html\");\n const nodes = $generateNodesFromDOM(editor, dom);\n // Ensure nodes have LTR direction\n nodes.forEach((node) => {\n if (\"setDirection\" in node) {\n (node as any).setDirection(\"ltr\");\n }\n });\n $insertNodes(nodes);\n } catch (e) {\n // Fallback to plain text insertion\n const textNode = $createTextNode(aiContent);\n $insertNodes([textNode]);\n }\n });\n\n if (onAiInsert) {\n onAiInsert(aiContent);\n }\n }, [editor, aiContent, onAiInsert]);\n\n const handleDiscard = React.useCallback(() => {\n if (onAiDiscard) {\n onAiDiscard();\n }\n }, [onAiDiscard]);\n\n // Clone the AI component to inject handlers\n if (!showAiPreview || !aiContentComponent) return null;\n\n return (\n <div className=\"ai-preview-container\">\n {Children.map(aiContentComponent, (child) => {\n if (isValidElement(child)) {\n return cloneElement(child as React.ReactElement<any>, {\n onInsert: handleInsert,\n onDiscard: handleDiscard,\n });\n }\n return child;\n })}\n </div>\n );\n};\n\nexport function ComposeBox({\n aiContentComponent,\n aiContent,\n showAiPreview,\n onAiInsert,\n onAiDiscard,\n placeholder = \"\",\n initialHTML = \"\",\n rightChildren,\n leftChildren,\n customTool,\n minHeight = \"200px\",\n onChange,\n editorChildren,\n isEditorVisible = true,\n}: ComposeBoxProps) {\n const [currentHTML, setCurrentHTML] = useState(initialHTML);\n\n const handleInternalChange = (html: string) => {\n setCurrentHTML(html);\n if (onChange) {\n onChange(html);\n }\n };\n\n const isAiPreviewActive = showAiPreview && aiContentComponent;\n\n const initialConfig = {\n namespace: \"ComposeBox\",\n theme: lexicalEditorTheme,\n nodes: [\n ListNode,\n ListItemNode,\n LinkNode,\n AutoLinkNode,\n TableNode,\n TableRowNode,\n TableCellNode,\n ImageNode,\n HtmlNode,\n StyledTextNode,\n ],\n onError: (error: Error) => {\n console.error(error);\n },\n };\n\n return (\n <div className=\"compose-box-wrapper\" style={{ minHeight }}>\n <LexicalComposer initialConfig={initialConfig}>\n <div className=\"compose-box-editor-container\" style={{ flex: 1 }}>\n <div\n className=\"compose-box-scroll-area\"\n style={{ flex: 1, overflowY: \"auto\", minHeight }}\n >\n {isAiPreviewActive &&\n currentHTML &&\n currentHTML !== '<p class=\"editor-paragraph\"><br></p>' && (\n <div\n className=\"compose-box-content-preview\"\n dangerouslySetInnerHTML={{ __html: currentHTML }}\n />\n )}\n\n {/* Render AI Component via Plugin to access Editor Context */}\n <AiIntegrationPlugin\n aiContent={aiContent}\n onAiInsert={onAiInsert}\n onAiDiscard={onAiDiscard}\n aiContentComponent={aiContentComponent}\n showAiPreview={showAiPreview}\n />\n\n <div\n style={{\n display: isAiPreviewActive ? \"none\" : \"block\",\n }}\n >\n {isEditorVisible ? (\n <>\n <RichTextPlugin\n contentEditable={\n <ContentEditable\n style={{ minHeight, padding: \"16px\" }}\n className=\"compose-box-content-editable\"\n aria-placeholder={placeholder}\n placeholder={null as any}\n />\n }\n placeholder={\n <div className=\"compose-box-placeholder\">\n {placeholder}\n </div>\n }\n ErrorBoundary={LexicalErrorBoundary}\n />\n <PastePlugin />\n <ImagePlugin />\n </>\n ) : (\n editorChildren\n )}\n </div>\n </div>\n\n <ToolBar\n rightChildren={rightChildren}\n leftChildren={leftChildren}\n customTool={customTool}\n disabled={!!isAiPreviewActive}\n />\n </div>\n\n <HistoryPlugin />\n <InitialStatePlugin initialHTML={initialHTML} />\n <DirectionPlugin />\n <AutoFocusPlugin />\n <ListPlugin />\n <LinkPlugin />\n <ImagePlugin />\n <PastePlugin />\n <OnChangePlugin onChange={handleInternalChange} />\n </LexicalComposer>\n </div>\n );\n}\n\nexport default ComposeBox;\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 === \"Enter\" || e.key === \",\") {\n if (isValidEmail(currentEmail)) {\n e.preventDefault();\n addEmail({ email: currentEmail, name: currentEmail });\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 && !showBCC ? (\n <button\n className=\"btn-mail-editor\"\n onClick={() => setShowBCC?.((prev) => !prev)}\n >\n Bcc\n </button>\n ) : null}\n {needCCAndBCC && !showCC ? (\n <button\n className=\"btn-mail-editor\"\n onClick={() => setShowCC?.((prev) => !prev)}\n >\n Cc\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({\n fetchEmailOptions,\n}: {\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 {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 {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 </div>\n )}\n </div>\n );\n}\n\nexport default ReceiptsHeading;\n","import React from \"react\";\nimport MyPopup from \"../MyPopup\";\nimport type { PopupPosition } from \"reactjs-popup/dist/types\";\n\ninterface TooltipProps {\n content: React.ReactNode;\n children: React.ReactElement;\n position?: PopupPosition | PopupPosition[];\n}\n\nconst Tooltip: React.FC<TooltipProps> = ({\n content,\n children,\n position = \"bottom center\",\n}) => {\n return (\n <MyPopup trigger={children} on=\"hover\" popUpDirection={position}>\n {() => (\n <div\n className=\"mail-inbox-tooltip-content mail-inbox-popup-content\"\n style={{\n padding: \"6px 10px\",\n maxWidth: \"400px\",\n wordBreak: \"break-word\",\n whiteSpace: \"pre-wrap\",\n fontSize: \"12px\",\n borderRadius: \"6px\",\n backgroundColor: \"#333\",\n color: \"#fff\",\n zIndex: 10000,\n boxShadow: \"0 2px 3px rgba(0, 0, 0, 0.2)\",\n }}\n >\n {content}\n </div>\n )}\n </MyPopup>\n );\n};\n\nexport default Tooltip;\n","import { useRef, useState, useLayoutEffect } from \"react\";\nimport ReceiptsHeading from \"../ReceiptsHeading\";\nimport { useEmailContext, type EmailOption } from \"../EmailContext\";\nimport Tooltip from \"../../core/Tooltip\";\n\nfunction GmailHeading({\n fetchEmailOptions,\n}: {\n fetchEmailOptions: (currentEmail: string) => Promise<EmailOption[]>;\n}) {\n const { subject, setSubject, isReply } = useEmailContext();\n const subjectRef = useRef<HTMLDivElement>(null);\n const [isOverflowing, setIsOverflowing] = useState(false);\n\n const displaySubject =\n isReply && subject && !subject.startsWith(\"Re: \")\n ? `Re: ${subject}`\n : subject;\n\n const decodeHtmlEntities = (text: string) => {\n const textArea = document.createElement(\"textarea\");\n textArea.innerHTML = text || \"\";\n return textArea.value;\n };\n\n const finalDisplaySubject = decodeHtmlEntities(displaySubject || \"\");\n\n useLayoutEffect(() => {\n const checkOverflow = () => {\n if (isReply && subjectRef.current) {\n const element = subjectRef.current;\n const overflowing = element.scrollWidth > element.clientWidth;\n setIsOverflowing(overflowing);\n }\n };\n\n checkOverflow();\n window.addEventListener('resize', checkOverflow);\n return () => window.removeEventListener('resize', checkOverflow);\n }, [displaySubject, isReply]);\n\n return (\n <div className=\"gmail-header\">\n <div className=\"receipt-heading\">\n <ReceiptsHeading fetchEmailOptions={fetchEmailOptions} />\n </div>\n <div className=\"reply-heading\">\n {isReply ? (\n isOverflowing ? (\n <Tooltip content={finalDisplaySubject} position=\"bottom center\">\n <div ref={subjectRef} className=\"subject-display\">\n {finalDisplaySubject}\n </div>\n </Tooltip>\n ) : (\n <div ref={subjectRef} className=\"subject-display\">\n {finalDisplaySubject}\n </div>\n )\n ) : (\n <input\n type=\"text\"\n placeholder=\"Subject\"\n className=\"input-header\"\n value={finalDisplaySubject}\n onChange={(e) => setSubject(e.target.value)}\n />\n )}\n </div>\n </div>\n );\n}\n\nexport default GmailHeading;\n","import { useEffect, useState, type ReactNode } from \"react\";\nimport ComposeBox from \"../ComposeBox\";\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 customTool,\n editorChildren,\n isEditorVisible = true,\n showOnlyBody = false,\n aiContentComponent,\n aiContent,\n showAiPreview,\n onAiInsert,\n onAiDiscard,\n placeholder,\n minHeight = \"400px\",\n}: {\n initialData?: Partial<EmailData>;\n fetchEmailOptions: (currentEmail: string) => Promise<EmailOption[]>;\n handleChange: (emailData: EmailData) => void;\n leftChildren?: ReactNode;\n rightChildren?: ReactNode;\n customTool?: ReactNode;\n isReply?: boolean;\n editorChildren?: ReactNode;\n isEditorVisible?: boolean;\n showOnlyBody?: boolean;\n // AI Integration\n aiContentComponent?: ReactNode;\n aiContent?: string;\n showAiPreview?: boolean;\n onAiInsert?: (content: string) => void;\n onAiDiscard?: () => void;\n placeholder?: string;\n minHeight?: string;\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 }, [isReply]);\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 <div className=\"mail-inbox-internal\">\n {!showOnlyBody ? (\n <GmailHeading fetchEmailOptions={fetchEmailOptions} />\n ) : null}\n <ComposeBox\n initialHTML={initialData?.body}\n onChange={handleEditorChange}\n editorChildren={editorChildren}\n rightChildren={rightChildren}\n leftChildren={leftChildren}\n customTool={customTool}\n isEditorVisible={isEditorVisible}\n minHeight={minHeight}\n placeholder={placeholder}\n aiContentComponent={aiContentComponent}\n aiContent={aiContent}\n showAiPreview={showAiPreview}\n onAiInsert={onAiInsert}\n onAiDiscard={onAiDiscard}\n />\n </div>\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 customTool,\n isReply,\n showOnlyBody,\n googleDriveConfig,\n aiContentComponent,\n aiContent,\n showAiPreview,\n onAiInsert,\n onAiDiscard,\n placeholder,\n minHeight = \"400px\",\n}: {\n fetchEmailOptions: (currentEmail: string) => Promise<EmailOption[]>;\n handleChange: (emailData: EmailData) => void;\n initialData?: Partial<EmailData>;\n leftChildren?: ReactNode;\n rightChildren?: ReactNode;\n customTool?: ReactNode;\n isReply?: boolean;\n showOnlyBody?: boolean;\n googleDriveConfig?: {\n clientId: string;\n apiKey: string;\n };\n // AI Integration\n aiContentComponent?: ReactNode;\n aiContent?: string;\n showAiPreview?: boolean;\n onAiInsert?: (content: string) => void;\n onAiDiscard?: () => void;\n placeholder?: string;\n minHeight?: string;\n}) {\n return (\n <EmailProvider googleDriveConfig={googleDriveConfig}>\n <GmailWrapperContent\n fetchEmailOptions={fetchEmailOptions}\n handleChange={handleChange}\n initialData={initialData}\n isReply={isReply}\n leftChildren={leftChildren}\n rightChildren={rightChildren}\n customTool={customTool}\n showOnlyBody={showOnlyBody}\n aiContentComponent={aiContentComponent}\n aiContent={aiContent}\n showAiPreview={showAiPreview}\n onAiInsert={onAiInsert}\n onAiDiscard={onAiDiscard}\n placeholder={placeholder}\n minHeight={minHeight}\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 /** Function to fetch recipient suggestions based on input. */\n fetchEmailOptions: (currentEmail: string) => Promise<EmailOption[]>;\n /** Callback triggered when the email is \"sent\" or updated. */\n handleChange: (emailData: EmailData) => void;\n /** Initial values for the email fields (to, subject, body, etc.). */\n initialData?: Partial<EmailData>;\n /** Default theme for the inbox component ('light' or 'dark'). Defaults to 'dark'. */\n initialTheme?: Theme;\n /** Callback triggered when the theme is toggled. */\n onThemeChange?: (theme: Theme) => void;\n /** Component to render on the left side of the toolbar. */\n leftChildren?: ReactNode;\n /** Component to render on the right side of the toolbar. */\n rightChildren?: ReactNode;\n /** Custom tool to render inside the plugin-wrapper. */\n customTool?: ReactNode;\n /** Placeholder text for the editor. */\n placeholder?: string;\n /** Minimum height of the editor. Defaults to '400px'. */\n minHeight?: string;\n /** If true, only the editor body is rendered, hiding the to/cc/bcc/subject fields. */\n showOnlyBody?: boolean;\n /** If true, the inbox is in reply mode, prefixing the subject with \"Re: \". */\n isReply?: boolean;\n /** Optional: Configuration for Google Drive integration. */\n googleDriveConfig?: {\n /** The OAuth 2.0 Client ID for your Google Cloud project. */\n clientId: string;\n /** The API Key for your Google Cloud project. */\n apiKey: string;\n /** Optional: Scopes required for the Drive picker. */\n scopes?: string;\n /** Optional: Discovery doc URLs for Google APIs. */\n discoveryDocs?: string[];\n };\n // AI Integration Props\n /** Custom AI preview component */\n aiContentComponent?: ReactNode;\n /** The AI-generated content */\n aiContent?: string;\n /** Control visibility of AI preview */\n showAiPreview?: boolean;\n /** Callback when AI content is inserted */\n onAiInsert?: (content: string) => void;\n /** Callback when AI content is discarded */\n onAiDiscard?: () => void;\n}\n\nfunction GmailInbox({\n fetchEmailOptions,\n handleChange,\n initialData,\n initialTheme = \"dark\",\n onThemeChange,\n leftChildren,\n rightChildren,\n customTool,\n showOnlyBody = false,\n isReply = false,\n googleDriveConfig,\n aiContentComponent,\n aiContent,\n showAiPreview,\n onAiInsert,\n onAiDiscard,\n placeholder,\n minHeight,\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 customTool={customTool}\n showOnlyBody={showOnlyBody}\n isReply={isReply}\n googleDriveConfig={googleDriveConfig}\n aiContentComponent={aiContentComponent}\n aiContent={aiContent}\n showAiPreview={showAiPreview}\n onAiInsert={onAiInsert}\n onAiDiscard={onAiDiscard}\n placeholder={placeholder}\n minHeight={minHeight}\n />\n </ThemeProvider>\n );\n}\n\nexport default GmailInbox;\n","// Main component export\nimport GmailInboxComponent from './Components/GmailInbox';\nexport { GmailInboxComponent as GmailInbox };\nexport { default as ComposeBox } from './Components/ComposeBox';\nexport default GmailInboxComponent;\n\n// Type exports\nexport type { EmailData, EmailOption } from './Components/GmailInbox';\nexport { useTheme, type Theme } from './context/ThemeContext';\nexport type { ComposeBoxProps, AiInsertHandler, AiDiscardHandler } from './Components/ComposeBox/types';\n\n// Re-export types for convenience\nexport type { Alignment } from './Components/core/AlignmentSelect';\n"]}