sykpcomposer 0.0.386 → 0.0.387
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/{ImageComponent-3ea88307.js → ImageComponent-b9c350b9.js} +3 -3
- package/dist/{ImageComponent-3ea88307.js.map → ImageComponent-b9c350b9.js.map} +1 -1
- package/dist/{InlineImageComponent-5dd3db9b.js → InlineImageComponent-5aed0ed0.js} +3 -3
- package/dist/{InlineImageComponent-5dd3db9b.js.map → InlineImageComponent-5aed0ed0.js.map} +1 -1
- package/dist/{LexicalNestedComposer.esm-e4c542f3.js → LexicalNestedComposer.esm-56222fd8.js} +2 -2
- package/dist/{LexicalNestedComposer.esm-e4c542f3.js.map → LexicalNestedComposer.esm-56222fd8.js.map} +1 -1
- package/dist/{PollComponent-83646e23.js → PollComponent-902c1f15.js} +2 -2
- package/dist/{PollComponent-83646e23.js.map → PollComponent-902c1f15.js.map} +1 -1
- package/dist/{index-095d8c6f.js → index-9730336f.js} +80 -81
- package/dist/{index-095d8c6f.js.map → index-9730336f.js.map} +1 -1
- package/dist/index.es.js +1 -1
- package/dist/index.umd.js +1 -1
- package/dist/index.umd.js.map +1 -1
- package/dist/src/lexical/Editor.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { m as ce, C as Se, $ as Ne, a as V, b as be, c as J, d as xe, e as te, f as U, g as Te, h as ee, i as we, u as Le, j as T, k as Ie, l as Ae, n as oe, o as se, p as fe, S as ze, q as Y, r as Oe, D as Be, K as He, s as Fe, t as Ke, v as We, w as Ue, A as Ye, N as Ge, L as Ve, E as Xe, H as qe, x as Je, R as Qe, y as Ze, P as et, z as tt, B as nt } from "./index-
|
|
2
|
-
import { L as rt } from "./LexicalNestedComposer.esm-
|
|
1
|
+
import { m as ce, C as Se, $ as Ne, a as V, b as be, c as J, d as xe, e as te, f as U, g as Te, h as ee, i as we, u as Le, j as T, k as Ie, l as Ae, n as oe, o as se, p as fe, S as ze, q as Y, r as Oe, D as Be, K as He, s as Fe, t as Ke, v as We, w as Ue, A as Ye, N as Ge, L as Ve, E as Xe, H as qe, x as Je, R as Qe, y as Ze, P as et, z as tt, B as nt } from "./index-9730336f.js";
|
|
2
|
+
import { L as rt } from "./LexicalNestedComposer.esm-56222fd8.js";
|
|
3
3
|
import * as k from "react";
|
|
4
4
|
import { createContext as ot, useContext as st, useState as A, useRef as O, useCallback as G, useEffect as H, useMemo as $e, Suspense as it } from "react";
|
|
5
5
|
import "react-dom";
|
|
@@ -972,4 +972,4 @@ export {
|
|
|
972
972
|
Ce as RIGHT_CLICK_IMAGE_COMMAND,
|
|
973
973
|
Jt as default
|
|
974
974
|
};
|
|
975
|
-
//# sourceMappingURL=ImageComponent-
|
|
975
|
+
//# sourceMappingURL=ImageComponent-b9c350b9.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageComponent-3ea88307.js","sources":["../src/lexical/appSettings.ts","../src/lexical/context/SettingsContext.tsx","../node_modules/@lexical/react/LexicalTreeView.dev.esm.js","../node_modules/@lexical/react/LexicalTreeView.prod.esm.js","../node_modules/@lexical/react/LexicalTreeView.esm.js","../src/lexical/plugins/TreeViewPlugin/index.tsx","../src/lexical/ui/ImageResizer.tsx","../src/lexical/nodes/ImageComponent.tsx"],"sourcesContent":["/**\r\n * Copyright (c) Meta Platforms, Inc. and affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n */\r\n\r\nconst hostName = window.location.hostname;\r\nexport const isDevPlayground: boolean =\r\n hostName !== 'playground.lexical.dev' &&\r\n hostName !== 'lexical-playground.vercel.app';\r\n\r\nexport const DEFAULT_SETTINGS = {\r\n disableBeforeInput: false,\r\n emptyEditor: isDevPlayground,\r\n isAutocomplete: false,\r\n isCharLimit: false,\r\n isCharLimitUtf8: false,\r\n isCollab: false,\r\n isMaxLength: false,\r\n isRichText: true,\r\n measureTypingPerf: false,\r\n shouldUseLexicalContextMenu: false,\r\n showNestedEditorTreeView: false,\r\n showTableOfContents: false,\r\n showTreeView: true,\r\n tableCellBackgroundColor: true,\r\n tableCellMerge: true,\r\n};\r\n\r\nexport type SettingName = keyof typeof DEFAULT_SETTINGS;\r\n\r\nexport type Settings = typeof DEFAULT_SETTINGS;\r\n","/**\r\n * Copyright (c) Meta Platforms, Inc. and affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n */\r\n\r\nimport type {SettingName} from '../appSettings';\r\n\r\nimport * as React from 'react';\r\nimport {\r\n createContext,\r\n ReactNode,\r\n useCallback,\r\n useContext,\r\n useMemo,\r\n useState,\r\n} from 'react';\r\n\r\nimport {DEFAULT_SETTINGS} from '../appSettings';\r\n\r\ntype SettingsContextShape = {\r\n setOption: (name: SettingName, value: boolean) => void;\r\n settings: Record<SettingName, boolean>;\r\n};\r\n\r\nconst Context: React.Context<SettingsContextShape> = createContext({\r\n setOption: (name: SettingName, value: boolean) => {\r\n return;\r\n },\r\n settings: DEFAULT_SETTINGS,\r\n});\r\n\r\nexport const SettingsContext = ({\r\n children,\r\n}: {\r\n children: ReactNode;\r\n}): JSX.Element => {\r\n const [settings, setSettings] = useState(DEFAULT_SETTINGS);\r\n\r\n const setOption = useCallback((setting: SettingName, value: boolean) => {\r\n setSettings((options) => ({\r\n ...options,\r\n [setting as string]: value,\r\n }));\r\n if (DEFAULT_SETTINGS[setting] === value) {\r\n setURLParam(setting, null);\r\n } else {\r\n setURLParam(setting, value);\r\n }\r\n }, []);\r\n\r\n const contextValue = useMemo(() => {\r\n return {setOption, settings};\r\n }, [setOption, settings]);\r\n\r\n return <Context.Provider value={contextValue}>{children}</Context.Provider>;\r\n};\r\n\r\nexport const useSettings = (): SettingsContextShape => {\r\n return useContext(Context);\r\n};\r\n\r\nfunction setURLParam(param: SettingName, value: null | boolean) {\r\n const url = new URL(window.location.href);\r\n const params = new URLSearchParams(url.search);\r\n if (value !== null) {\r\n if (params.has(param)) {\r\n params.set(param, String(value));\r\n } else {\r\n params.append(param, String(value));\r\n }\r\n } else {\r\n if (params.has(param)) {\r\n params.delete(param);\r\n }\r\n }\r\n url.search = params.toString();\r\n window.history.pushState(null, '', url.toString());\r\n}\r\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 */\nimport { $generateHtmlFromNodes } from '@lexical/html';\nimport { $isLinkNode } from '@lexical/link';\nimport { $isMarkNode } from '@lexical/mark';\nimport { $isTableSelection } from '@lexical/table';\nimport { mergeRegister } from '@lexical/utils';\nimport { COMMAND_PRIORITY_HIGH, $getSelection, $getRoot, $isRangeSelection, $isElementNode, $isNodeSelection, $isTextNode } from 'lexical';\nimport * as React from 'react';\nimport { useState, useRef, useMemo, useCallback, useEffect } from 'react';\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 */\nconst NON_SINGLE_WIDTH_CHARS_REPLACEMENT = Object.freeze({\n '\\t': '\\\\t',\n '\\n': '\\\\n'\n});\nconst NON_SINGLE_WIDTH_CHARS_REGEX = new RegExp(Object.keys(NON_SINGLE_WIDTH_CHARS_REPLACEMENT).join('|'), 'g');\nconst SYMBOLS = Object.freeze({\n ancestorHasNextSibling: '|',\n ancestorIsLastChild: ' ',\n hasNextSibling: '├',\n isLastChild: '└',\n selectedChar: '^',\n selectedLine: '>'\n});\nfunction TreeView({\n treeTypeButtonClassName,\n timeTravelButtonClassName,\n timeTravelPanelSliderClassName,\n timeTravelPanelButtonClassName,\n viewClassName,\n timeTravelPanelClassName,\n editor\n}) {\n const [timeStampedEditorStates, setTimeStampedEditorStates] = useState([]);\n const [content, setContent] = useState('');\n const [timeTravelEnabled, setTimeTravelEnabled] = useState(false);\n const [showExportDOM, setShowExportDOM] = useState(false);\n const playingIndexRef = useRef(0);\n const treeElementRef = useRef(null);\n const inputRef = useRef(null);\n const [isPlaying, setIsPlaying] = useState(false);\n const [isLimited, setIsLimited] = useState(false);\n const [showLimited, setShowLimited] = useState(false);\n const lastEditorStateRef = useRef(null);\n const commandsLog = useLexicalCommandsLog(editor);\n const generateTree = useCallback(editorState => {\n const treeText = generateContent(editor, commandsLog, showExportDOM);\n setContent(treeText);\n if (!timeTravelEnabled) {\n setTimeStampedEditorStates(currentEditorStates => [...currentEditorStates, [Date.now(), editorState]]);\n }\n }, [commandsLog, editor, timeTravelEnabled, showExportDOM]);\n useEffect(() => {\n const editorState = editor.getEditorState();\n if (!showLimited && editorState._nodeMap.size < 1000) {\n setContent(generateContent(editor, commandsLog, showExportDOM));\n }\n }, [commandsLog, editor, showLimited, showExportDOM]);\n useEffect(() => {\n return mergeRegister(editor.registerUpdateListener(({\n editorState\n }) => {\n if (!showLimited && editorState._nodeMap.size > 1000) {\n lastEditorStateRef.current = editorState;\n setIsLimited(true);\n if (!showLimited) {\n return;\n }\n }\n generateTree(editorState);\n }), editor.registerEditableListener(() => {\n const treeText = generateContent(editor, commandsLog, showExportDOM);\n setContent(treeText);\n }));\n }, [commandsLog, editor, showExportDOM, isLimited, generateTree, showLimited]);\n const totalEditorStates = timeStampedEditorStates.length;\n useEffect(() => {\n if (isPlaying) {\n let timeoutId;\n const play = () => {\n const currentIndex = playingIndexRef.current;\n if (currentIndex === totalEditorStates - 1) {\n setIsPlaying(false);\n return;\n }\n const currentTime = timeStampedEditorStates[currentIndex][0];\n const nextTime = timeStampedEditorStates[currentIndex + 1][0];\n const timeDiff = nextTime - currentTime;\n timeoutId = setTimeout(() => {\n playingIndexRef.current++;\n const index = playingIndexRef.current;\n const input = inputRef.current;\n if (input !== null) {\n input.value = String(index);\n }\n editor.setEditorState(timeStampedEditorStates[index][1]);\n play();\n }, timeDiff);\n };\n play();\n return () => {\n clearTimeout(timeoutId);\n };\n }\n }, [timeStampedEditorStates, isPlaying, editor, totalEditorStates]);\n useEffect(() => {\n const element = treeElementRef.current;\n if (element !== null) {\n // @ts-ignore Internal field\n element.__lexicalEditor = editor;\n return () => {\n // @ts-ignore Internal field\n element.__lexicalEditor = null;\n };\n }\n }, [editor]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: viewClassName\n }, !showLimited && isLimited ? /*#__PURE__*/React.createElement(\"div\", {\n style: {\n padding: 20\n }\n }, /*#__PURE__*/React.createElement(\"span\", {\n style: {\n marginRight: 20\n }\n }, \"Detected large EditorState, this can impact debugging performance.\"), /*#__PURE__*/React.createElement(\"button\", {\n onClick: () => {\n setShowLimited(true);\n const editorState = lastEditorStateRef.current;\n if (editorState !== null) {\n lastEditorStateRef.current = null;\n generateTree(editorState);\n }\n },\n style: {\n background: 'transparent',\n border: '1px solid white',\n color: 'white',\n cursor: 'pointer',\n padding: 5\n }\n }, \"Show full tree\")) : null, !showLimited ? /*#__PURE__*/React.createElement(\"button\", {\n onClick: () => setShowExportDOM(!showExportDOM),\n className: treeTypeButtonClassName,\n type: \"button\"\n }, showExportDOM ? 'Tree' : 'Export DOM') : null, !timeTravelEnabled && (showLimited || !isLimited) && totalEditorStates > 2 && /*#__PURE__*/React.createElement(\"button\", {\n onClick: () => {\n const rootElement = editor.getRootElement();\n if (rootElement !== null) {\n rootElement.contentEditable = 'false';\n playingIndexRef.current = totalEditorStates - 1;\n setTimeTravelEnabled(true);\n }\n },\n className: timeTravelButtonClassName,\n type: \"button\"\n }, \"Time Travel\"), (showLimited || !isLimited) && /*#__PURE__*/React.createElement(\"pre\", {\n ref: treeElementRef\n }, content), timeTravelEnabled && (showLimited || !isLimited) && /*#__PURE__*/React.createElement(\"div\", {\n className: timeTravelPanelClassName\n }, /*#__PURE__*/React.createElement(\"button\", {\n className: timeTravelPanelButtonClassName,\n onClick: () => {\n if (playingIndexRef.current === totalEditorStates - 1) {\n playingIndexRef.current = 1;\n }\n setIsPlaying(!isPlaying);\n },\n type: \"button\"\n }, isPlaying ? 'Pause' : 'Play'), /*#__PURE__*/React.createElement(\"input\", {\n className: timeTravelPanelSliderClassName,\n ref: inputRef,\n onChange: event => {\n const editorStateIndex = Number(event.target.value);\n const timeStampedEditorState = timeStampedEditorStates[editorStateIndex];\n if (timeStampedEditorState) {\n playingIndexRef.current = editorStateIndex;\n editor.setEditorState(timeStampedEditorState[1]);\n }\n },\n type: \"range\",\n min: \"1\",\n max: totalEditorStates - 1\n }), /*#__PURE__*/React.createElement(\"button\", {\n className: timeTravelPanelButtonClassName,\n onClick: () => {\n const rootElement = editor.getRootElement();\n if (rootElement !== null) {\n rootElement.contentEditable = 'true';\n const index = timeStampedEditorStates.length - 1;\n const timeStampedEditorState = timeStampedEditorStates[index];\n editor.setEditorState(timeStampedEditorState[1]);\n const input = inputRef.current;\n if (input !== null) {\n input.value = String(index);\n }\n setTimeTravelEnabled(false);\n setIsPlaying(false);\n }\n },\n type: \"button\"\n }, \"Exit\")));\n}\nfunction useLexicalCommandsLog(editor) {\n const [loggedCommands, setLoggedCommands] = useState([]);\n useEffect(() => {\n const unregisterCommandListeners = new Set();\n for (const [command] of editor._commands) {\n unregisterCommandListeners.add(editor.registerCommand(command, payload => {\n setLoggedCommands(state => {\n const newState = [...state];\n newState.push({\n payload,\n type: command.type ? command.type : 'UNKNOWN'\n });\n if (newState.length > 10) {\n newState.shift();\n }\n return newState;\n });\n return false;\n }, COMMAND_PRIORITY_HIGH));\n }\n return () => unregisterCommandListeners.forEach(unregister => unregister());\n }, [editor]);\n return useMemo(() => loggedCommands, [loggedCommands]);\n}\nfunction printRangeSelection(selection) {\n let res = '';\n const formatText = printFormatProperties(selection);\n res += `: range ${formatText !== '' ? `{ ${formatText} }` : ''} ${selection.style !== '' ? `{ style: ${selection.style} } ` : ''}`;\n const anchor = selection.anchor;\n const focus = selection.focus;\n const anchorOffset = anchor.offset;\n const focusOffset = focus.offset;\n res += `\\n ├ anchor { key: ${anchor.key}, offset: ${anchorOffset === null ? 'null' : anchorOffset}, type: ${anchor.type} }`;\n res += `\\n └ focus { key: ${focus.key}, offset: ${focusOffset === null ? 'null' : focusOffset}, type: ${focus.type} }`;\n return res;\n}\nfunction printNodeSelection(selection) {\n if (!$isNodeSelection(selection)) {\n return '';\n }\n return `: node\\n └ [${Array.from(selection._nodes).join(', ')}]`;\n}\nfunction printTableSelection(selection) {\n return `: table\\n └ { table: ${selection.tableKey}, anchorCell: ${selection.anchor.key}, focusCell: ${selection.focus.key} }`;\n}\nfunction generateContent(editor, commandsLog, exportDOM) {\n const editorState = editor.getEditorState();\n const editorConfig = editor._config;\n const compositionKey = editor._compositionKey;\n const editable = editor._editable;\n if (exportDOM) {\n let htmlString = '';\n editorState.read(() => {\n htmlString = printPrettyHTML($generateHtmlFromNodes(editor));\n });\n return htmlString;\n }\n let res = ' root\\n';\n const selectionString = editorState.read(() => {\n const selection = $getSelection();\n visitTree($getRoot(), (node, indent) => {\n const nodeKey = node.getKey();\n const nodeKeyDisplay = `(${nodeKey})`;\n const typeDisplay = node.getType() || '';\n const isSelected = node.isSelected();\n const idsDisplay = $isMarkNode(node) ? ` id: [ ${node.getIDs().join(', ')} ] ` : '';\n res += `${isSelected ? SYMBOLS.selectedLine : ' '} ${indent.join(' ')} ${nodeKeyDisplay} ${typeDisplay} ${idsDisplay} ${printNode(node)}\\n`;\n res += printSelectedCharsLine({\n indent,\n isSelected,\n node,\n nodeKeyDisplay,\n selection,\n typeDisplay\n });\n });\n return selection === null ? ': null' : $isRangeSelection(selection) ? printRangeSelection(selection) : $isTableSelection(selection) ? printTableSelection(selection) : printNodeSelection(selection);\n });\n res += '\\n selection' + selectionString;\n res += '\\n\\n commands:';\n if (commandsLog.length) {\n for (const {\n type,\n payload\n } of commandsLog) {\n res += `\\n └ { type: ${type}, payload: ${payload instanceof Event ? payload.constructor.name : payload} }`;\n }\n } else {\n res += '\\n └ None dispatched.';\n }\n res += '\\n\\n editor:';\n res += `\\n └ namespace ${editorConfig.namespace}`;\n if (compositionKey !== null) {\n res += `\\n └ compositionKey ${compositionKey}`;\n }\n res += `\\n └ editable ${String(editable)}`;\n return res;\n}\nfunction visitTree(currentNode, visitor, indent = []) {\n const childNodes = currentNode.getChildren();\n const childNodesLength = childNodes.length;\n childNodes.forEach((childNode, i) => {\n visitor(childNode, indent.concat(i === childNodesLength - 1 ? SYMBOLS.isLastChild : SYMBOLS.hasNextSibling));\n if ($isElementNode(childNode)) {\n visitTree(childNode, visitor, indent.concat(i === childNodesLength - 1 ? SYMBOLS.ancestorIsLastChild : SYMBOLS.ancestorHasNextSibling));\n }\n });\n}\nfunction normalize(text) {\n return Object.entries(NON_SINGLE_WIDTH_CHARS_REPLACEMENT).reduce((acc, [key, value]) => acc.replace(new RegExp(key, 'g'), String(value)), text);\n}\n\n// TODO Pass via props to allow customizability\nfunction printNode(node) {\n if ($isTextNode(node)) {\n const text = node.getTextContent();\n const title = text.length === 0 ? '(empty)' : `\"${normalize(text)}\"`;\n const properties = printAllTextNodeProperties(node);\n return [title, properties.length !== 0 ? `{ ${properties} }` : null].filter(Boolean).join(' ').trim();\n } else if ($isLinkNode(node)) {\n const link = node.getURL();\n const title = link.length === 0 ? '(empty)' : `\"${normalize(link)}\"`;\n const properties = printAllLinkNodeProperties(node);\n return [title, properties.length !== 0 ? `{ ${properties} }` : null].filter(Boolean).join(' ').trim();\n } else {\n return '';\n }\n}\nconst FORMAT_PREDICATES = [node => node.hasFormat('bold') && 'Bold', node => node.hasFormat('code') && 'Code', node => node.hasFormat('italic') && 'Italic', node => node.hasFormat('strikethrough') && 'Strikethrough', node => node.hasFormat('subscript') && 'Subscript', node => node.hasFormat('superscript') && 'Superscript', node => node.hasFormat('underline') && 'Underline'];\nconst DETAIL_PREDICATES = [node => node.isDirectionless() && 'Directionless', node => node.isUnmergeable() && 'Unmergeable'];\nconst MODE_PREDICATES = [node => node.isToken() && 'Token', node => node.isSegmented() && 'Segmented'];\nfunction printAllTextNodeProperties(node) {\n return [printFormatProperties(node), printDetailProperties(node), printModeProperties(node)].filter(Boolean).join(', ');\n}\nfunction printAllLinkNodeProperties(node) {\n return [printTargetProperties(node), printRelProperties(node), printTitleProperties(node)].filter(Boolean).join(', ');\n}\nfunction printDetailProperties(nodeOrSelection) {\n let str = DETAIL_PREDICATES.map(predicate => predicate(nodeOrSelection)).filter(Boolean).join(', ').toLocaleLowerCase();\n if (str !== '') {\n str = 'detail: ' + str;\n }\n return str;\n}\nfunction printModeProperties(nodeOrSelection) {\n let str = MODE_PREDICATES.map(predicate => predicate(nodeOrSelection)).filter(Boolean).join(', ').toLocaleLowerCase();\n if (str !== '') {\n str = 'mode: ' + str;\n }\n return str;\n}\nfunction printFormatProperties(nodeOrSelection) {\n let str = FORMAT_PREDICATES.map(predicate => predicate(nodeOrSelection)).filter(Boolean).join(', ').toLocaleLowerCase();\n if (str !== '') {\n str = 'format: ' + str;\n }\n return str;\n}\nfunction printTargetProperties(node) {\n let str = node.getTarget();\n // TODO Fix nullish on LinkNode\n if (str != null) {\n str = 'target: ' + str;\n }\n return str;\n}\nfunction printRelProperties(node) {\n let str = node.getRel();\n // TODO Fix nullish on LinkNode\n if (str != null) {\n str = 'rel: ' + str;\n }\n return str;\n}\nfunction printTitleProperties(node) {\n let str = node.getTitle();\n // TODO Fix nullish on LinkNode\n if (str != null) {\n str = 'title: ' + str;\n }\n return str;\n}\nfunction printSelectedCharsLine({\n indent,\n isSelected,\n node,\n nodeKeyDisplay,\n selection,\n typeDisplay\n}) {\n // No selection or node is not selected.\n if (!$isTextNode(node) || !$isRangeSelection(selection) || !isSelected || $isElementNode(node)) {\n return '';\n }\n\n // No selected characters.\n const anchor = selection.anchor;\n const focus = selection.focus;\n if (node.getTextContent() === '' || anchor.getNode() === selection.focus.getNode() && anchor.offset === focus.offset) {\n return '';\n }\n const [start, end] = $getSelectionStartEnd(node, selection);\n if (start === end) {\n return '';\n }\n const selectionLastIndent = indent[indent.length - 1] === SYMBOLS.hasNextSibling ? SYMBOLS.ancestorHasNextSibling : SYMBOLS.ancestorIsLastChild;\n const indentionChars = [...indent.slice(0, indent.length - 1), selectionLastIndent];\n const unselectedChars = Array(start + 1).fill(' ');\n const selectedChars = Array(end - start).fill(SYMBOLS.selectedChar);\n const paddingLength = typeDisplay.length + 3; // 2 for the spaces around + 1 for the double quote.\n\n const nodePrintSpaces = Array(nodeKeyDisplay.length + paddingLength).fill(' ');\n return [SYMBOLS.selectedLine, indentionChars.join(' '), [...nodePrintSpaces, ...unselectedChars, ...selectedChars].join('')].join(' ') + '\\n';\n}\nfunction printPrettyHTML(str) {\n const div = document.createElement('div');\n div.innerHTML = str.trim();\n return prettifyHTML(div, 0).innerHTML;\n}\nfunction prettifyHTML(node, level) {\n const indentBefore = new Array(level++ + 1).join(' ');\n const indentAfter = new Array(level - 1).join(' ');\n let textNode;\n for (let i = 0; i < node.children.length; i++) {\n textNode = document.createTextNode('\\n' + indentBefore);\n node.insertBefore(textNode, node.children[i]);\n prettifyHTML(node.children[i], level);\n if (node.lastElementChild === node.children[i]) {\n textNode = document.createTextNode('\\n' + indentAfter);\n node.appendChild(textNode);\n }\n }\n return node;\n}\nfunction $getSelectionStartEnd(node, selection) {\n const anchorAndFocus = selection.getStartEndPoints();\n if ($isNodeSelection(selection) || anchorAndFocus === null) {\n return [-1, -1];\n }\n const [anchor, focus] = anchorAndFocus;\n const textContent = node.getTextContent();\n const textLength = textContent.length;\n let start = -1;\n let end = -1;\n\n // Only one node is being selected.\n if (anchor.type === 'text' && focus.type === 'text') {\n const anchorNode = anchor.getNode();\n const focusNode = focus.getNode();\n if (anchorNode === focusNode && node === anchorNode && anchor.offset !== focus.offset) {\n [start, end] = anchor.offset < focus.offset ? [anchor.offset, focus.offset] : [focus.offset, anchor.offset];\n } else if (node === anchorNode) {\n [start, end] = anchorNode.isBefore(focusNode) ? [anchor.offset, textLength] : [0, anchor.offset];\n } else if (node === focusNode) {\n [start, end] = focusNode.isBefore(anchorNode) ? [focus.offset, textLength] : [0, focus.offset];\n } else {\n // Node is within selection but not the anchor nor focus.\n [start, end] = [0, textLength];\n }\n }\n\n // Account for non-single width characters.\n const numNonSingleWidthCharBeforeSelection = (textContent.slice(0, start).match(NON_SINGLE_WIDTH_CHARS_REGEX) || []).length;\n const numNonSingleWidthCharInSelection = (textContent.slice(start, end).match(NON_SINGLE_WIDTH_CHARS_REGEX) || []).length;\n return [start + numNonSingleWidthCharBeforeSelection, end + numNonSingleWidthCharBeforeSelection + numNonSingleWidthCharInSelection];\n}\n\nexport { TreeView };\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 */\nimport{$generateHtmlFromNodes as e}from\"@lexical/html\";import{$isLinkNode as t}from\"@lexical/link\";import{$isMarkNode as n}from\"@lexical/mark\";import{$isTableSelection as o}from\"@lexical/table\";import{mergeRegister as r}from\"@lexical/utils\";import{COMMAND_PRIORITY_HIGH as l,$getSelection as i,$getRoot as a,$isRangeSelection as s,$isElementNode as c,$isNodeSelection as u,$isTextNode as f}from\"lexical\";import*as d from\"react\";import{useState as m,useRef as g,useMemo as p,useCallback as h,useEffect as y}from\"react\";const b=Object.freeze({\"\\t\":\"\\\\t\",\"\\n\":\"\\\\n\"}),E=new RegExp(Object.keys(b).join(\"|\"),\"g\"),C=Object.freeze({ancestorHasNextSibling:\"|\",ancestorIsLastChild:\" \",hasNextSibling:\"├\",isLastChild:\"└\",selectedChar:\"^\",selectedLine:\">\"});function $({treeTypeButtonClassName:e,timeTravelButtonClassName:t,timeTravelPanelSliderClassName:n,timeTravelPanelButtonClassName:o,viewClassName:i,timeTravelPanelClassName:a,editor:s}){const[c,u]=m([]),[f,b]=m(\"\"),[E,C]=m(!1),[$,S]=m(!1),x=g(0),T=g(null),j=g(null),[k,L]=m(!1),[v,B]=m(!1),[w,_]=m(!1),D=g(null),F=function(e){const[t,n]=m([]);return y((()=>{const t=new Set;for(const[o]of e._commands)t.add(e.registerCommand(o,(e=>(n((t=>{const n=[...t];return n.push({payload:e,type:o.type?o.type:\"UNKNOWN\"}),n.length>10&&n.shift(),n})),!1)),l));return()=>t.forEach((e=>e()))}),[e]),p((()=>t),[t])}(s),K=h((e=>{const t=N(s,F,$);b(t),E||u((t=>[...t,[Date.now(),e]]))}),[F,s,E,$]);y((()=>{const e=s.getEditorState();!w&&e._nodeMap.size<1e3&&b(N(s,F,$))}),[F,s,w,$]),y((()=>r(s.registerUpdateListener((({editorState:e})=>{!w&&e._nodeMap.size>1e3&&(D.current=e,B(!0),!w)||K(e)})),s.registerEditableListener((()=>{const e=N(s,F,$);b(e)})))),[F,s,$,v,K,w]);const R=c.length;return y((()=>{if(k){let e;const t=()=>{const n=x.current;if(n===R-1)return void L(!1);const o=c[n][0],r=c[n+1][0];e=setTimeout((()=>{x.current++;const e=x.current,n=j.current;null!==n&&(n.value=String(e)),s.setEditorState(c[e][1]),t()}),r-o)};return t(),()=>{clearTimeout(e)}}}),[c,k,s,R]),y((()=>{const e=T.current;if(null!==e)return e.__lexicalEditor=s,()=>{e.__lexicalEditor=null}}),[s]),d.createElement(\"div\",{className:i},!w&&v?d.createElement(\"div\",{style:{padding:20}},d.createElement(\"span\",{style:{marginRight:20}},\"Detected large EditorState, this can impact debugging performance.\"),d.createElement(\"button\",{onClick:()=>{_(!0);const e=D.current;null!==e&&(D.current=null,K(e))},style:{background:\"transparent\",border:\"1px solid white\",color:\"white\",cursor:\"pointer\",padding:5}},\"Show full tree\")):null,w?null:d.createElement(\"button\",{onClick:()=>S(!$),className:e,type:\"button\"},$?\"Tree\":\"Export DOM\"),!E&&(w||!v)&&R>2&&d.createElement(\"button\",{onClick:()=>{const e=s.getRootElement();null!==e&&(e.contentEditable=\"false\",x.current=R-1,C(!0))},className:t,type:\"button\"},\"Time Travel\"),(w||!v)&&d.createElement(\"pre\",{ref:T},f),E&&(w||!v)&&d.createElement(\"div\",{className:a},d.createElement(\"button\",{className:o,onClick:()=>{x.current===R-1&&(x.current=1),L(!k)},type:\"button\"},k?\"Pause\":\"Play\"),d.createElement(\"input\",{className:n,ref:j,onChange:e=>{const t=Number(e.target.value),n=c[t];n&&(x.current=t,s.setEditorState(n[1]))},type:\"range\",min:\"1\",max:R-1}),d.createElement(\"button\",{className:o,onClick:()=>{const e=s.getRootElement();if(null!==e){e.contentEditable=\"true\";const t=c.length-1,n=c[t];s.setEditorState(n[1]);const o=j.current;null!==o&&(o.value=String(t)),C(!1),L(!1)}},type:\"button\"},\"Exit\")))}function N(r,l,d){const m=r.getEditorState(),g=r._config,p=r._compositionKey,h=r._editable;if(d){let t=\"\";return m.read((()=>{t=function(e){const t=document.createElement(\"div\");return t.innerHTML=e.trim(),F(t,0).innerHTML}(e(r))})),t}let y=\" root\\n\";const b=m.read((()=>{const e=i();return S(a(),((o,r)=>{const l=`(${o.getKey()})`,i=o.getType()||\"\",a=o.isSelected(),d=n(o)?` id: [ ${o.getIDs().join(\", \")} ] `:\"\";y+=`${a?C.selectedLine:\" \"} ${r.join(\" \")} ${l} ${i} ${d} ${function(e){if(f(e)){const t=e.getTextContent(),n=0===t.length?\"(empty)\":`\"${x(t)}\"`,o=function(e){return[B(e),L(e),v(e)].filter(Boolean).join(\", \")}(e);return[n,0!==o.length?`{ ${o} }`:null].filter(Boolean).join(\" \").trim()}if(t(e)){const t=e.getURL(),n=0===t.length?\"(empty)\":`\"${x(t)}\"`,o=function(e){return[w(e),_(e),D(e)].filter(Boolean).join(\", \")}(e);return[n,0!==o.length?`{ ${o} }`:null].filter(Boolean).join(\" \").trim()}return\"\"}(o)}\\n`,y+=function({indent:e,isSelected:t,node:n,nodeKeyDisplay:o,selection:r,typeDisplay:l}){if(!f(n)||!s(r)||!t||c(n))return\"\";const i=r.anchor,a=r.focus;if(\"\"===n.getTextContent()||i.getNode()===r.focus.getNode()&&i.offset===a.offset)return\"\";const[d,m]=function(e,t){const n=t.getStartEndPoints();if(u(t)||null===n)return[-1,-1];const[o,r]=n,l=e.getTextContent(),i=l.length;let a=-1,s=-1;if(\"text\"===o.type&&\"text\"===r.type){const t=o.getNode(),n=r.getNode();t===n&&e===t&&o.offset!==r.offset?[a,s]=o.offset<r.offset?[o.offset,r.offset]:[r.offset,o.offset]:[a,s]=e===t?t.isBefore(n)?[o.offset,i]:[0,o.offset]:e===n?n.isBefore(t)?[r.offset,i]:[0,r.offset]:[0,i]}const c=(l.slice(0,a).match(E)||[]).length,f=(l.slice(a,s).match(E)||[]).length;return[a+c,s+c+f]}(n,r);if(d===m)return\"\";const g=e[e.length-1]===C.hasNextSibling?C.ancestorHasNextSibling:C.ancestorIsLastChild,p=[...e.slice(0,e.length-1),g],h=Array(d+1).fill(\" \"),y=Array(m-d).fill(C.selectedChar),b=l.length+3,$=Array(o.length+b).fill(\" \");return[C.selectedLine,p.join(\" \"),[...$,...h,...y].join(\"\")].join(\" \")+\"\\n\"}({indent:r,isSelected:a,node:o,nodeKeyDisplay:l,selection:e,typeDisplay:i})})),null===e?\": null\":s(e)?function(e){let t=\"\";const n=B(e);t+=`: range ${\"\"!==n?`{ ${n} }`:\"\"} ${\"\"!==e.style?`{ style: ${e.style} } `:\"\"}`;const o=e.anchor,r=e.focus,l=o.offset,i=r.offset;return t+=`\\n ├ anchor { key: ${o.key}, offset: ${null===l?\"null\":l}, type: ${o.type} }`,t+=`\\n └ focus { key: ${r.key}, offset: ${null===i?\"null\":i}, type: ${r.type} }`,t}(e):o(e)?function(e){return`: table\\n └ { table: ${e.tableKey}, anchorCell: ${e.anchor.key}, focusCell: ${e.focus.key} }`}(e):function(e){return u(e)?`: node\\n └ [${Array.from(e._nodes).join(\", \")}]`:\"\"}(e)}));if(y+=\"\\n selection\"+b,y+=\"\\n\\n commands:\",l.length)for(const{type:e,payload:t}of l)y+=`\\n └ { type: ${e}, payload: ${t instanceof Event?t.constructor.name:t} }`;else y+=\"\\n └ None dispatched.\";return y+=\"\\n\\n editor:\",y+=`\\n └ namespace ${g.namespace}`,null!==p&&(y+=`\\n └ compositionKey ${p}`),y+=`\\n └ editable ${String(h)}`,y}function S(e,t,n=[]){const o=e.getChildren(),r=o.length;o.forEach(((e,o)=>{t(e,n.concat(o===r-1?C.isLastChild:C.hasNextSibling)),c(e)&&S(e,t,n.concat(o===r-1?C.ancestorIsLastChild:C.ancestorHasNextSibling))}))}function x(e){return Object.entries(b).reduce(((e,[t,n])=>e.replace(new RegExp(t,\"g\"),String(n))),e)}const T=[e=>e.hasFormat(\"bold\")&&\"Bold\",e=>e.hasFormat(\"code\")&&\"Code\",e=>e.hasFormat(\"italic\")&&\"Italic\",e=>e.hasFormat(\"strikethrough\")&&\"Strikethrough\",e=>e.hasFormat(\"subscript\")&&\"Subscript\",e=>e.hasFormat(\"superscript\")&&\"Superscript\",e=>e.hasFormat(\"underline\")&&\"Underline\"],j=[e=>e.isDirectionless()&&\"Directionless\",e=>e.isUnmergeable()&&\"Unmergeable\"],k=[e=>e.isToken()&&\"Token\",e=>e.isSegmented()&&\"Segmented\"];function L(e){let t=j.map((t=>t(e))).filter(Boolean).join(\", \").toLocaleLowerCase();return\"\"!==t&&(t=\"detail: \"+t),t}function v(e){let t=k.map((t=>t(e))).filter(Boolean).join(\", \").toLocaleLowerCase();return\"\"!==t&&(t=\"mode: \"+t),t}function B(e){let t=T.map((t=>t(e))).filter(Boolean).join(\", \").toLocaleLowerCase();return\"\"!==t&&(t=\"format: \"+t),t}function w(e){let t=e.getTarget();return null!=t&&(t=\"target: \"+t),t}function _(e){let t=e.getRel();return null!=t&&(t=\"rel: \"+t),t}function D(e){let t=e.getTitle();return null!=t&&(t=\"title: \"+t),t}function F(e,t){const n=new Array(1+t++).join(\" \"),o=new Array(t-1).join(\" \");let r;for(let l=0;l<e.children.length;l++)r=document.createTextNode(\"\\n\"+n),e.insertBefore(r,e.children[l]),F(e.children[l],t),e.lastElementChild===e.children[l]&&(r=document.createTextNode(\"\\n\"+o),e.appendChild(r));return e}export{$ as TreeView};\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 */\nimport * as modDev from './LexicalTreeView.dev.esm.js';\nimport * as modProd from './LexicalTreeView.prod.esm.js';\nconst mod = process.env.NODE_ENV === 'development' ? modDev : modProd;\nexport const TreeView = mod.TreeView;","/**\r\n * Copyright (c) Meta Platforms, Inc. and affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n */\r\n\r\nimport {useLexicalComposerContext} from '@lexical/react/LexicalComposerContext';\r\nimport {TreeView} from '@lexical/react/LexicalTreeView';\r\nimport * as React from 'react';\r\n\r\nexport default function TreeViewPlugin(): JSX.Element {\r\n const [editor] = useLexicalComposerContext();\r\n return (\r\n <TreeView\r\n viewClassName=\"tree-view-output\"\r\n treeTypeButtonClassName=\"debug-treetype-button\"\r\n timeTravelPanelClassName=\"debug-timetravel-panel\"\r\n timeTravelButtonClassName=\"debug-timetravel-button\"\r\n timeTravelPanelSliderClassName=\"debug-timetravel-panel-slider\"\r\n timeTravelPanelButtonClassName=\"debug-timetravel-panel-button\"\r\n editor={editor}\r\n />\r\n );\r\n}\r\n","/**\r\n * Copyright (c) Meta Platforms, Inc. and affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n */\r\n\r\nimport type {LexicalEditor} from 'lexical';\r\n\r\nimport * as React from 'react';\r\nimport {useRef} from 'react';\r\n\r\nfunction clamp(value: number, min: number, max: number) {\r\n return Math.min(Math.max(value, min), max);\r\n}\r\n\r\nconst Direction = {\r\n east: 1 << 0,\r\n north: 1 << 3,\r\n south: 1 << 1,\r\n west: 1 << 2,\r\n};\r\n\r\nexport default function ImageResizer({\r\n onResizeStart,\r\n onResizeEnd,\r\n buttonRef,\r\n imageRef,\r\n maxWidth,\r\n editor,\r\n showCaption,\r\n setShowCaption,\r\n captionsEnabled,\r\n}: {\r\n editor: LexicalEditor;\r\n buttonRef: {current: null | HTMLButtonElement};\r\n imageRef: {current: null | HTMLElement};\r\n maxWidth?: number;\r\n onResizeEnd: (width: 'inherit' | number, height: 'inherit' | number) => void;\r\n onResizeStart: () => void;\r\n setShowCaption: (show: boolean) => void;\r\n showCaption: boolean;\r\n captionsEnabled: boolean;\r\n}): JSX.Element {\r\n const controlWrapperRef = useRef<HTMLDivElement>(null);\r\n const userSelect = useRef({\r\n priority: '',\r\n value: 'default',\r\n });\r\n const positioningRef = useRef<{\r\n currentHeight: 'inherit' | number;\r\n currentWidth: 'inherit' | number;\r\n direction: number;\r\n isResizing: boolean;\r\n ratio: number;\r\n startHeight: number;\r\n startWidth: number;\r\n startX: number;\r\n startY: number;\r\n }>({\r\n currentHeight: 0,\r\n currentWidth: 0,\r\n direction: 0,\r\n isResizing: false,\r\n ratio: 0,\r\n startHeight: 0,\r\n startWidth: 0,\r\n startX: 0,\r\n startY: 0,\r\n });\r\n const editorRootElement = editor.getRootElement();\r\n // Find max width, accounting for editor padding.\r\n const maxWidthContainer = maxWidth\r\n ? maxWidth\r\n : editorRootElement !== null\r\n ? editorRootElement.getBoundingClientRect().width - 20\r\n : 100;\r\n const maxHeightContainer =\r\n editorRootElement !== null\r\n ? editorRootElement.getBoundingClientRect().height - 20\r\n : 100;\r\n\r\n const minWidth = 100;\r\n const minHeight = 100;\r\n\r\n const setStartCursor = (direction: number) => {\r\n const ew = direction === Direction.east || direction === Direction.west;\r\n const ns = direction === Direction.north || direction === Direction.south;\r\n const nwse =\r\n (direction & Direction.north && direction & Direction.west) ||\r\n (direction & Direction.south && direction & Direction.east);\r\n\r\n const cursorDir = ew ? 'ew' : ns ? 'ns' : nwse ? 'nwse' : 'nesw';\r\n\r\n if (editorRootElement !== null) {\r\n editorRootElement.style.setProperty(\r\n 'cursor',\r\n `${cursorDir}-resize`,\r\n 'important',\r\n );\r\n }\r\n if (document.body !== null) {\r\n document.body.style.setProperty(\r\n 'cursor',\r\n `${cursorDir}-resize`,\r\n 'important',\r\n );\r\n userSelect.current.value = document.body.style.getPropertyValue(\r\n '-webkit-user-select',\r\n );\r\n userSelect.current.priority = document.body.style.getPropertyPriority(\r\n '-webkit-user-select',\r\n );\r\n document.body.style.setProperty(\r\n '-webkit-user-select',\r\n `none`,\r\n 'important',\r\n );\r\n }\r\n };\r\n\r\n const setEndCursor = () => {\r\n if (editorRootElement !== null) {\r\n editorRootElement.style.setProperty('cursor', 'text');\r\n }\r\n if (document.body !== null) {\r\n document.body.style.setProperty('cursor', 'default');\r\n document.body.style.setProperty(\r\n '-webkit-user-select',\r\n userSelect.current.value,\r\n userSelect.current.priority,\r\n );\r\n }\r\n };\r\n\r\n const handlePointerDown = (\r\n event: React.PointerEvent<HTMLDivElement>,\r\n direction: number,\r\n ) => {\r\n if (!editor.isEditable()) {\r\n return;\r\n }\r\n\r\n const image = imageRef.current;\r\n const controlWrapper = controlWrapperRef.current;\r\n\r\n if (image !== null && controlWrapper !== null) {\r\n event.preventDefault();\r\n const {width, height} = image.getBoundingClientRect();\r\n const positioning = positioningRef.current;\r\n positioning.startWidth = width;\r\n positioning.startHeight = height;\r\n positioning.ratio = width / height;\r\n positioning.currentWidth = width;\r\n positioning.currentHeight = height;\r\n positioning.startX = event.clientX;\r\n positioning.startY = event.clientY;\r\n positioning.isResizing = true;\r\n positioning.direction = direction;\r\n\r\n setStartCursor(direction);\r\n onResizeStart();\r\n\r\n controlWrapper.classList.add('image-control-wrapper--resizing');\r\n image.style.height = `${height}px`;\r\n image.style.width = `${width}px`;\r\n\r\n document.addEventListener('pointermove', handlePointerMove);\r\n document.addEventListener('pointerup', handlePointerUp);\r\n }\r\n };\r\n const handlePointerMove = (event: PointerEvent) => {\r\n const image = imageRef.current;\r\n const positioning = positioningRef.current;\r\n\r\n const isHorizontal =\r\n positioning.direction & (Direction.east | Direction.west);\r\n const isVertical =\r\n positioning.direction & (Direction.south | Direction.north);\r\n\r\n if (image !== null && positioning.isResizing) {\r\n // Corner cursor\r\n if (isHorizontal && isVertical) {\r\n let diff = Math.floor(positioning.startX - event.clientX);\r\n diff = positioning.direction & Direction.east ? -diff : diff;\r\n\r\n const width = clamp(\r\n positioning.startWidth + diff,\r\n minWidth,\r\n maxWidthContainer,\r\n );\r\n\r\n const height = width / positioning.ratio;\r\n image.style.width = `${width}px`;\r\n image.style.height = `${height}px`;\r\n positioning.currentHeight = height;\r\n positioning.currentWidth = width;\r\n } else if (isVertical) {\r\n let diff = Math.floor(positioning.startY - event.clientY);\r\n diff = positioning.direction & Direction.south ? -diff : diff;\r\n\r\n const height = clamp(\r\n positioning.startHeight + diff,\r\n minHeight,\r\n maxHeightContainer,\r\n );\r\n\r\n image.style.height = `${height}px`;\r\n positioning.currentHeight = height;\r\n } else {\r\n let diff = Math.floor(positioning.startX - event.clientX);\r\n diff = positioning.direction & Direction.east ? -diff : diff;\r\n\r\n const width = clamp(\r\n positioning.startWidth + diff,\r\n minWidth,\r\n maxWidthContainer,\r\n );\r\n\r\n image.style.width = `${width}px`;\r\n positioning.currentWidth = width;\r\n }\r\n }\r\n };\r\n const handlePointerUp = () => {\r\n const image = imageRef.current;\r\n const positioning = positioningRef.current;\r\n const controlWrapper = controlWrapperRef.current;\r\n if (image !== null && controlWrapper !== null && positioning.isResizing) {\r\n const width = positioning.currentWidth;\r\n const height = positioning.currentHeight;\r\n positioning.startWidth = 0;\r\n positioning.startHeight = 0;\r\n positioning.ratio = 0;\r\n positioning.startX = 0;\r\n positioning.startY = 0;\r\n positioning.currentWidth = 0;\r\n positioning.currentHeight = 0;\r\n positioning.isResizing = false;\r\n\r\n controlWrapper.classList.remove('image-control-wrapper--resizing');\r\n\r\n setEndCursor();\r\n onResizeEnd(width, height);\r\n\r\n document.removeEventListener('pointermove', handlePointerMove);\r\n document.removeEventListener('pointerup', handlePointerUp);\r\n }\r\n };\r\n return (\r\n <div ref={controlWrapperRef}>\r\n {!showCaption && captionsEnabled && (\r\n <button\r\n className=\"image-caption-button\"\r\n ref={buttonRef}\r\n onClick={() => {\r\n setShowCaption(!showCaption);\r\n }}>\r\n Add Caption\r\n </button>\r\n )}\r\n <div\r\n className=\"image-resizer image-resizer-n\"\r\n onPointerDown={(event) => {\r\n handlePointerDown(event, Direction.north);\r\n }}\r\n />\r\n <div\r\n className=\"image-resizer image-resizer-ne\"\r\n onPointerDown={(event) => {\r\n handlePointerDown(event, Direction.north | Direction.east);\r\n }}\r\n />\r\n <div\r\n className=\"image-resizer image-resizer-e\"\r\n onPointerDown={(event) => {\r\n handlePointerDown(event, Direction.east);\r\n }}\r\n />\r\n <div\r\n className=\"image-resizer image-resizer-se\"\r\n onPointerDown={(event) => {\r\n handlePointerDown(event, Direction.south | Direction.east);\r\n }}\r\n />\r\n <div\r\n className=\"image-resizer image-resizer-s\"\r\n onPointerDown={(event) => {\r\n handlePointerDown(event, Direction.south);\r\n }}\r\n />\r\n <div\r\n className=\"image-resizer image-resizer-sw\"\r\n onPointerDown={(event) => {\r\n handlePointerDown(event, Direction.south | Direction.west);\r\n }}\r\n />\r\n <div\r\n className=\"image-resizer image-resizer-w\"\r\n onPointerDown={(event) => {\r\n handlePointerDown(event, Direction.west);\r\n }}\r\n />\r\n <div\r\n className=\"image-resizer image-resizer-nw\"\r\n onPointerDown={(event) => {\r\n handlePointerDown(event, Direction.north | Direction.west);\r\n }}\r\n />\r\n </div>\r\n );\r\n}\r\n","/**\r\n * Copyright (c) Meta Platforms, Inc. and affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n */\r\n\r\nimport type {\r\n BaseSelection,\r\n LexicalCommand,\r\n LexicalEditor,\r\n NodeKey,\r\n} from 'lexical';\r\n\r\nimport './ImageNode.css';\r\n\r\nimport {AutoFocusPlugin} from '@lexical/react/LexicalAutoFocusPlugin';\r\nimport {useCollaborationContext} from '@lexical/react/LexicalCollaborationContext';\r\nimport {CollaborationPlugin} from '@lexical/react/LexicalCollaborationPlugin';\r\nimport {useLexicalComposerContext} from '@lexical/react/LexicalComposerContext';\r\nimport LexicalErrorBoundary from '@lexical/react/LexicalErrorBoundary';\r\nimport {HashtagPlugin} from '@lexical/react/LexicalHashtagPlugin';\r\nimport {HistoryPlugin} from '@lexical/react/LexicalHistoryPlugin';\r\nimport {LexicalNestedComposer} from '@lexical/react/LexicalNestedComposer';\r\nimport {RichTextPlugin} from '@lexical/react/LexicalRichTextPlugin';\r\nimport {useLexicalNodeSelection} from '@lexical/react/useLexicalNodeSelection';\r\nimport {mergeRegister} from '@lexical/utils';\r\nimport {\r\n $getNodeByKey,\r\n $getSelection,\r\n $isNodeSelection,\r\n $isRangeSelection,\r\n $setSelection,\r\n CLICK_COMMAND,\r\n COMMAND_PRIORITY_LOW,\r\n createCommand,\r\n DRAGSTART_COMMAND,\r\n KEY_BACKSPACE_COMMAND,\r\n KEY_DELETE_COMMAND,\r\n KEY_ENTER_COMMAND,\r\n KEY_ESCAPE_COMMAND,\r\n SELECTION_CHANGE_COMMAND,\r\n} from 'lexical';\r\nimport * as React from 'react';\r\nimport {Suspense, useCallback, useEffect, useRef, useState} from 'react';\r\n\r\nimport {useSettings} from '../context/SettingsContext';\r\nimport {useSharedHistoryContext} from '../context/SharedHistoryContext';\r\nimport EmojisPlugin from '../plugins/EmojisPlugin';\r\nimport KeywordsPlugin from '../plugins/KeywordsPlugin';\r\nimport LinkPlugin from '../plugins/LinkPlugin';\r\nimport MentionsPlugin from '../plugins/MentionsPlugin';\r\nimport TreeViewPlugin from '../plugins/TreeViewPlugin';\r\nimport ContentEditable from '../ui/ContentEditable';\r\nimport ImageResizer from '../ui/ImageResizer';\r\nimport Placeholder from '../ui/Placeholder';\r\nimport {$isImageNode} from './ImageNode';\r\n\r\nconst imageCache = new Set();\r\n\r\nexport const RIGHT_CLICK_IMAGE_COMMAND: LexicalCommand<MouseEvent> =\r\n createCommand('RIGHT_CLICK_IMAGE_COMMAND');\r\n\r\nfunction useSuspenseImage(src: string) {\r\n if (!imageCache.has(src)) {\r\n throw new Promise((resolve) => {\r\n const img = new Image();\r\n img.src = src;\r\n img.onload = () => {\r\n imageCache.add(src);\r\n resolve(null);\r\n };\r\n });\r\n }\r\n}\r\n\r\nfunction LazyImage({\r\n altText,\r\n className,\r\n imageRef,\r\n src,\r\n width,\r\n height,\r\n maxWidth,\r\n}: {\r\n altText: string;\r\n className: string | null;\r\n height: 'inherit' | number;\r\n imageRef: {current: null | HTMLImageElement};\r\n maxWidth: number;\r\n src: string;\r\n width: 'inherit' | number;\r\n}): JSX.Element {\r\n useSuspenseImage(src);\r\n return (\r\n <img\r\n className={className || undefined}\r\n src={src}\r\n alt={altText}\r\n ref={imageRef}\r\n style={{\r\n height,\r\n maxWidth,\r\n width,\r\n }}\r\n draggable=\"false\"\r\n />\r\n );\r\n}\r\n\r\nexport default function ImageComponent({\r\n src,\r\n altText,\r\n nodeKey,\r\n width,\r\n height,\r\n maxWidth,\r\n resizable,\r\n showCaption,\r\n caption,\r\n captionsEnabled,\r\n}: {\r\n altText: string;\r\n caption: LexicalEditor;\r\n height: 'inherit' | number;\r\n maxWidth: number;\r\n nodeKey: NodeKey;\r\n resizable: boolean;\r\n showCaption: boolean;\r\n src: string;\r\n width: 'inherit' | number;\r\n captionsEnabled: boolean;\r\n}): JSX.Element {\r\n const imageRef = useRef<null | HTMLImageElement>(null);\r\n const buttonRef = useRef<HTMLButtonElement | null>(null);\r\n const [isSelected, setSelected, clearSelection] =\r\n useLexicalNodeSelection(nodeKey);\r\n const [isResizing, setIsResizing] = useState<boolean>(false);\r\n const {isCollabActive} = useCollaborationContext();\r\n const [editor] = useLexicalComposerContext();\r\n const [selection, setSelection] = useState<BaseSelection | null>(null);\r\n const activeEditorRef = useRef<LexicalEditor | null>(null);\r\n\r\n const onDelete = useCallback(\r\n (payload: KeyboardEvent) => {\r\n if (isSelected && $isNodeSelection($getSelection())) {\r\n const event: KeyboardEvent = payload;\r\n event.preventDefault();\r\n const node = $getNodeByKey(nodeKey);\r\n if ($isImageNode(node)) {\r\n node.remove();\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n [isSelected, nodeKey],\r\n );\r\n\r\n const onEnter = useCallback(\r\n (event: KeyboardEvent) => {\r\n const latestSelection = $getSelection();\r\n const buttonElem = buttonRef.current;\r\n if (\r\n isSelected &&\r\n $isNodeSelection(latestSelection) &&\r\n latestSelection.getNodes().length === 1\r\n ) {\r\n if (showCaption) {\r\n // Move focus into nested editor\r\n $setSelection(null);\r\n event.preventDefault();\r\n caption.focus();\r\n return true;\r\n } else if (\r\n buttonElem !== null &&\r\n buttonElem !== document.activeElement\r\n ) {\r\n event.preventDefault();\r\n buttonElem.focus();\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n [caption, isSelected, showCaption],\r\n );\r\n\r\n const onEscape = useCallback(\r\n (event: KeyboardEvent) => {\r\n if (\r\n activeEditorRef.current === caption ||\r\n buttonRef.current === event.target\r\n ) {\r\n $setSelection(null);\r\n editor.update(() => {\r\n setSelected(true);\r\n const parentRootElement = editor.getRootElement();\r\n if (parentRootElement !== null) {\r\n parentRootElement.focus();\r\n }\r\n });\r\n return true;\r\n }\r\n return false;\r\n },\r\n [caption, editor, setSelected],\r\n );\r\n\r\n const onClick = useCallback(\r\n (payload: MouseEvent) => {\r\n const event = payload;\r\n\r\n if (isResizing) {\r\n return true;\r\n }\r\n if (event.target === imageRef.current) {\r\n if (event.shiftKey) {\r\n setSelected(!isSelected);\r\n } else {\r\n clearSelection();\r\n setSelected(true);\r\n }\r\n return true;\r\n }\r\n\r\n return false;\r\n },\r\n [isResizing, isSelected, setSelected, clearSelection],\r\n );\r\n\r\n const onRightClick = useCallback(\r\n (event: MouseEvent): void => {\r\n editor.getEditorState().read(() => {\r\n const latestSelection = $getSelection();\r\n const domElement = event.target as HTMLElement;\r\n if (\r\n domElement.tagName === 'IMG' &&\r\n $isRangeSelection(latestSelection) &&\r\n latestSelection.getNodes().length === 1\r\n ) {\r\n editor.dispatchCommand(\r\n RIGHT_CLICK_IMAGE_COMMAND,\r\n event as MouseEvent,\r\n );\r\n }\r\n });\r\n },\r\n [editor],\r\n );\r\n\r\n useEffect(() => {\r\n let isMounted = true;\r\n const rootElement = editor.getRootElement();\r\n const unregister = mergeRegister(\r\n editor.registerUpdateListener(({editorState}) => {\r\n if (isMounted) {\r\n setSelection(editorState.read(() => $getSelection()));\r\n }\r\n }),\r\n editor.registerCommand(\r\n SELECTION_CHANGE_COMMAND,\r\n (_, activeEditor) => {\r\n activeEditorRef.current = activeEditor;\r\n return false;\r\n },\r\n COMMAND_PRIORITY_LOW,\r\n ),\r\n editor.registerCommand<MouseEvent>(\r\n CLICK_COMMAND,\r\n onClick,\r\n COMMAND_PRIORITY_LOW,\r\n ),\r\n editor.registerCommand<MouseEvent>(\r\n RIGHT_CLICK_IMAGE_COMMAND,\r\n onClick,\r\n COMMAND_PRIORITY_LOW,\r\n ),\r\n editor.registerCommand(\r\n DRAGSTART_COMMAND,\r\n (event) => {\r\n if (event.target === imageRef.current) {\r\n // TODO This is just a temporary workaround for FF to behave like other browsers.\r\n // Ideally, this handles drag & drop too (and all browsers).\r\n event.preventDefault();\r\n return true;\r\n }\r\n return false;\r\n },\r\n COMMAND_PRIORITY_LOW,\r\n ),\r\n editor.registerCommand(\r\n KEY_DELETE_COMMAND,\r\n onDelete,\r\n COMMAND_PRIORITY_LOW,\r\n ),\r\n editor.registerCommand(\r\n KEY_BACKSPACE_COMMAND,\r\n onDelete,\r\n COMMAND_PRIORITY_LOW,\r\n ),\r\n editor.registerCommand(KEY_ENTER_COMMAND, onEnter, COMMAND_PRIORITY_LOW),\r\n editor.registerCommand(\r\n KEY_ESCAPE_COMMAND,\r\n onEscape,\r\n COMMAND_PRIORITY_LOW,\r\n ),\r\n );\r\n\r\n rootElement?.addEventListener('contextmenu', onRightClick);\r\n\r\n return () => {\r\n isMounted = false;\r\n unregister();\r\n rootElement?.removeEventListener('contextmenu', onRightClick);\r\n };\r\n }, [\r\n clearSelection,\r\n editor,\r\n isResizing,\r\n isSelected,\r\n nodeKey,\r\n onDelete,\r\n onEnter,\r\n onEscape,\r\n onClick,\r\n onRightClick,\r\n setSelected,\r\n ]);\r\n\r\n const setShowCaption = () => {\r\n editor.update(() => {\r\n const node = $getNodeByKey(nodeKey);\r\n if ($isImageNode(node)) {\r\n node.setShowCaption(true);\r\n }\r\n });\r\n };\r\n\r\n const onResizeEnd = (\r\n nextWidth: 'inherit' | number,\r\n nextHeight: 'inherit' | number,\r\n ) => {\r\n // Delay hiding the resize bars for click case\r\n setTimeout(() => {\r\n setIsResizing(false);\r\n }, 200);\r\n\r\n editor.update(() => {\r\n const node = $getNodeByKey(nodeKey);\r\n if ($isImageNode(node)) {\r\n node.setWidthAndHeight(nextWidth, nextHeight);\r\n }\r\n });\r\n };\r\n\r\n const onResizeStart = () => {\r\n setIsResizing(true);\r\n };\r\n\r\n const {historyState} = useSharedHistoryContext();\r\n const {\r\n settings: {showNestedEditorTreeView},\r\n } = useSettings();\r\n\r\n const draggable = isSelected && $isNodeSelection(selection) && !isResizing;\r\n const isFocused = isSelected || isResizing;\r\n return (\r\n <Suspense fallback={null}>\r\n <>\r\n <div draggable={draggable}>\r\n <LazyImage\r\n className={\r\n isFocused\r\n ? `focused ${$isNodeSelection(selection) ? 'draggable' : ''}`\r\n : null\r\n }\r\n src={src}\r\n altText={altText}\r\n imageRef={imageRef}\r\n width={width}\r\n height={height}\r\n maxWidth={maxWidth}\r\n />\r\n </div>\r\n {showCaption && (\r\n <div className=\"image-caption-container\">\r\n <LexicalNestedComposer initialEditor={caption}>\r\n <AutoFocusPlugin />\r\n <MentionsPlugin />\r\n <LinkPlugin />\r\n <EmojisPlugin />\r\n <HashtagPlugin />\r\n <KeywordsPlugin />\r\n <RichTextPlugin\r\n contentEditable={\r\n <ContentEditable className=\"ImageNode__contentEditable\" />\r\n }\r\n placeholder={\r\n <Placeholder className=\"ImageNode__placeholder\">\r\n Enter a caption...\r\n </Placeholder>\r\n }\r\n ErrorBoundary={LexicalErrorBoundary}\r\n />\r\n {showNestedEditorTreeView === true ? <TreeViewPlugin /> : null}\r\n </LexicalNestedComposer>\r\n </div>\r\n )}\r\n {resizable && $isNodeSelection(selection) && isFocused && (\r\n <ImageResizer\r\n showCaption={showCaption}\r\n setShowCaption={setShowCaption}\r\n editor={editor}\r\n buttonRef={buttonRef}\r\n imageRef={imageRef}\r\n maxWidth={maxWidth}\r\n onResizeStart={onResizeStart}\r\n onResizeEnd={onResizeEnd}\r\n captionsEnabled={captionsEnabled}\r\n />\r\n )}\r\n </>\r\n </Suspense>\r\n );\r\n}\r\n"],"names":["hostName","isDevPlayground","DEFAULT_SETTINGS","Context","createContext","name","value","useSettings","useContext","NON_SINGLE_WIDTH_CHARS_REPLACEMENT","NON_SINGLE_WIDTH_CHARS_REGEX","SYMBOLS","TreeView","treeTypeButtonClassName","timeTravelButtonClassName","timeTravelPanelSliderClassName","timeTravelPanelButtonClassName","viewClassName","timeTravelPanelClassName","editor","timeStampedEditorStates","setTimeStampedEditorStates","useState","content","setContent","timeTravelEnabled","setTimeTravelEnabled","showExportDOM","setShowExportDOM","playingIndexRef","useRef","treeElementRef","inputRef","isPlaying","setIsPlaying","isLimited","setIsLimited","showLimited","setShowLimited","lastEditorStateRef","commandsLog","useLexicalCommandsLog","generateTree","useCallback","editorState","treeText","generateContent","currentEditorStates","useEffect","mergeRegister","totalEditorStates","timeoutId","play","currentIndex","currentTime","timeDiff","index","input","element","React","rootElement","event","editorStateIndex","timeStampedEditorState","loggedCommands","setLoggedCommands","unregisterCommandListeners","command","payload","state","newState","COMMAND_PRIORITY_HIGH","unregister","useMemo","printRangeSelection","selection","res","formatText","printFormatProperties","anchor","focus","anchorOffset","focusOffset","printNodeSelection","$isNodeSelection","printTableSelection","exportDOM","editorConfig","compositionKey","editable","htmlString","printPrettyHTML","$generateHtmlFromNodes","selectionString","$getSelection","visitTree","$getRoot","node","indent","nodeKeyDisplay","typeDisplay","isSelected","idsDisplay","$isMarkNode","printNode","printSelectedCharsLine","$isRangeSelection","$isTableSelection","type","currentNode","visitor","childNodes","childNodesLength","childNode","i","$isElementNode","normalize","text","acc","key","$isTextNode","title","properties","printAllTextNodeProperties","$isLinkNode","link","printAllLinkNodeProperties","FORMAT_PREDICATES","DETAIL_PREDICATES","MODE_PREDICATES","printDetailProperties","printModeProperties","printTargetProperties","printRelProperties","printTitleProperties","nodeOrSelection","str","predicate","start","end","$getSelectionStartEnd","selectionLastIndent","indentionChars","unselectedChars","selectedChars","paddingLength","nodePrintSpaces","div","prettifyHTML","level","indentBefore","indentAfter","textNode","anchorAndFocus","textContent","textLength","anchorNode","focusNode","numNonSingleWidthCharBeforeSelection","numNonSingleWidthCharInSelection","b","E","C","$","n","o","a","s","c","u","m","f","S","x","g","T","j","k","L","v","w","_","D","F","e","t","y","l","p","K","h","N","r","R","d","B","mod","modDev","modProd","TreeViewPlugin","useLexicalComposerContext","jsx","clamp","min","max","Direction","ImageResizer","onResizeStart","onResizeEnd","buttonRef","imageRef","maxWidth","showCaption","setShowCaption","captionsEnabled","controlWrapperRef","userSelect","positioningRef","editorRootElement","maxWidthContainer","maxHeightContainer","minWidth","minHeight","setStartCursor","direction","ew","ns","nwse","cursorDir","setEndCursor","handlePointerDown","image","controlWrapper","width","height","positioning","handlePointerMove","handlePointerUp","isHorizontal","isVertical","diff","jsxs","imageCache","RIGHT_CLICK_IMAGE_COMMAND","createCommand","useSuspenseImage","src","resolve","img","LazyImage","altText","className","ImageComponent","nodeKey","resizable","caption","setSelected","clearSelection","useLexicalNodeSelection","isResizing","setIsResizing","useCollaborationContext","setSelection","activeEditorRef","onDelete","$getNodeByKey","$isImageNode","onEnter","latestSelection","buttonElem","$setSelection","onEscape","parentRootElement","onClick","onRightClick","isMounted","SELECTION_CHANGE_COMMAND","activeEditor","COMMAND_PRIORITY_LOW","CLICK_COMMAND","DRAGSTART_COMMAND","KEY_DELETE_COMMAND","KEY_BACKSPACE_COMMAND","KEY_ENTER_COMMAND","KEY_ESCAPE_COMMAND","nextWidth","nextHeight","useSharedHistoryContext","showNestedEditorTreeView","draggable","isFocused","Suspense","Fragment","LexicalNestedComposer","AutoFocusPlugin","MentionsPlugin","LinkPlugin","EmojisPlugin","HashtagPlugin","KeywordsPlugin","RichTextPlugin","ContentEditable","Placeholder","LexicalErrorBoundary"],"mappings":"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","x_google_ignoreList":[2,3,4]}
|
|
1
|
+
{"version":3,"file":"ImageComponent-b9c350b9.js","sources":["../src/lexical/appSettings.ts","../src/lexical/context/SettingsContext.tsx","../node_modules/@lexical/react/LexicalTreeView.dev.esm.js","../node_modules/@lexical/react/LexicalTreeView.prod.esm.js","../node_modules/@lexical/react/LexicalTreeView.esm.js","../src/lexical/plugins/TreeViewPlugin/index.tsx","../src/lexical/ui/ImageResizer.tsx","../src/lexical/nodes/ImageComponent.tsx"],"sourcesContent":["/**\r\n * Copyright (c) Meta Platforms, Inc. and affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n */\r\n\r\nconst hostName = window.location.hostname;\r\nexport const isDevPlayground: boolean =\r\n hostName !== 'playground.lexical.dev' &&\r\n hostName !== 'lexical-playground.vercel.app';\r\n\r\nexport const DEFAULT_SETTINGS = {\r\n disableBeforeInput: false,\r\n emptyEditor: isDevPlayground,\r\n isAutocomplete: false,\r\n isCharLimit: false,\r\n isCharLimitUtf8: false,\r\n isCollab: false,\r\n isMaxLength: false,\r\n isRichText: true,\r\n measureTypingPerf: false,\r\n shouldUseLexicalContextMenu: false,\r\n showNestedEditorTreeView: false,\r\n showTableOfContents: false,\r\n showTreeView: true,\r\n tableCellBackgroundColor: true,\r\n tableCellMerge: true,\r\n};\r\n\r\nexport type SettingName = keyof typeof DEFAULT_SETTINGS;\r\n\r\nexport type Settings = typeof DEFAULT_SETTINGS;\r\n","/**\r\n * Copyright (c) Meta Platforms, Inc. and affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n */\r\n\r\nimport type {SettingName} from '../appSettings';\r\n\r\nimport * as React from 'react';\r\nimport {\r\n createContext,\r\n ReactNode,\r\n useCallback,\r\n useContext,\r\n useMemo,\r\n useState,\r\n} from 'react';\r\n\r\nimport {DEFAULT_SETTINGS} from '../appSettings';\r\n\r\ntype SettingsContextShape = {\r\n setOption: (name: SettingName, value: boolean) => void;\r\n settings: Record<SettingName, boolean>;\r\n};\r\n\r\nconst Context: React.Context<SettingsContextShape> = createContext({\r\n setOption: (name: SettingName, value: boolean) => {\r\n return;\r\n },\r\n settings: DEFAULT_SETTINGS,\r\n});\r\n\r\nexport const SettingsContext = ({\r\n children,\r\n}: {\r\n children: ReactNode;\r\n}): JSX.Element => {\r\n const [settings, setSettings] = useState(DEFAULT_SETTINGS);\r\n\r\n const setOption = useCallback((setting: SettingName, value: boolean) => {\r\n setSettings((options) => ({\r\n ...options,\r\n [setting as string]: value,\r\n }));\r\n if (DEFAULT_SETTINGS[setting] === value) {\r\n setURLParam(setting, null);\r\n } else {\r\n setURLParam(setting, value);\r\n }\r\n }, []);\r\n\r\n const contextValue = useMemo(() => {\r\n return {setOption, settings};\r\n }, [setOption, settings]);\r\n\r\n return <Context.Provider value={contextValue}>{children}</Context.Provider>;\r\n};\r\n\r\nexport const useSettings = (): SettingsContextShape => {\r\n return useContext(Context);\r\n};\r\n\r\nfunction setURLParam(param: SettingName, value: null | boolean) {\r\n const url = new URL(window.location.href);\r\n const params = new URLSearchParams(url.search);\r\n if (value !== null) {\r\n if (params.has(param)) {\r\n params.set(param, String(value));\r\n } else {\r\n params.append(param, String(value));\r\n }\r\n } else {\r\n if (params.has(param)) {\r\n params.delete(param);\r\n }\r\n }\r\n url.search = params.toString();\r\n window.history.pushState(null, '', url.toString());\r\n}\r\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 */\nimport { $generateHtmlFromNodes } from '@lexical/html';\nimport { $isLinkNode } from '@lexical/link';\nimport { $isMarkNode } from '@lexical/mark';\nimport { $isTableSelection } from '@lexical/table';\nimport { mergeRegister } from '@lexical/utils';\nimport { COMMAND_PRIORITY_HIGH, $getSelection, $getRoot, $isRangeSelection, $isElementNode, $isNodeSelection, $isTextNode } from 'lexical';\nimport * as React from 'react';\nimport { useState, useRef, useMemo, useCallback, useEffect } from 'react';\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 */\nconst NON_SINGLE_WIDTH_CHARS_REPLACEMENT = Object.freeze({\n '\\t': '\\\\t',\n '\\n': '\\\\n'\n});\nconst NON_SINGLE_WIDTH_CHARS_REGEX = new RegExp(Object.keys(NON_SINGLE_WIDTH_CHARS_REPLACEMENT).join('|'), 'g');\nconst SYMBOLS = Object.freeze({\n ancestorHasNextSibling: '|',\n ancestorIsLastChild: ' ',\n hasNextSibling: '├',\n isLastChild: '└',\n selectedChar: '^',\n selectedLine: '>'\n});\nfunction TreeView({\n treeTypeButtonClassName,\n timeTravelButtonClassName,\n timeTravelPanelSliderClassName,\n timeTravelPanelButtonClassName,\n viewClassName,\n timeTravelPanelClassName,\n editor\n}) {\n const [timeStampedEditorStates, setTimeStampedEditorStates] = useState([]);\n const [content, setContent] = useState('');\n const [timeTravelEnabled, setTimeTravelEnabled] = useState(false);\n const [showExportDOM, setShowExportDOM] = useState(false);\n const playingIndexRef = useRef(0);\n const treeElementRef = useRef(null);\n const inputRef = useRef(null);\n const [isPlaying, setIsPlaying] = useState(false);\n const [isLimited, setIsLimited] = useState(false);\n const [showLimited, setShowLimited] = useState(false);\n const lastEditorStateRef = useRef(null);\n const commandsLog = useLexicalCommandsLog(editor);\n const generateTree = useCallback(editorState => {\n const treeText = generateContent(editor, commandsLog, showExportDOM);\n setContent(treeText);\n if (!timeTravelEnabled) {\n setTimeStampedEditorStates(currentEditorStates => [...currentEditorStates, [Date.now(), editorState]]);\n }\n }, [commandsLog, editor, timeTravelEnabled, showExportDOM]);\n useEffect(() => {\n const editorState = editor.getEditorState();\n if (!showLimited && editorState._nodeMap.size < 1000) {\n setContent(generateContent(editor, commandsLog, showExportDOM));\n }\n }, [commandsLog, editor, showLimited, showExportDOM]);\n useEffect(() => {\n return mergeRegister(editor.registerUpdateListener(({\n editorState\n }) => {\n if (!showLimited && editorState._nodeMap.size > 1000) {\n lastEditorStateRef.current = editorState;\n setIsLimited(true);\n if (!showLimited) {\n return;\n }\n }\n generateTree(editorState);\n }), editor.registerEditableListener(() => {\n const treeText = generateContent(editor, commandsLog, showExportDOM);\n setContent(treeText);\n }));\n }, [commandsLog, editor, showExportDOM, isLimited, generateTree, showLimited]);\n const totalEditorStates = timeStampedEditorStates.length;\n useEffect(() => {\n if (isPlaying) {\n let timeoutId;\n const play = () => {\n const currentIndex = playingIndexRef.current;\n if (currentIndex === totalEditorStates - 1) {\n setIsPlaying(false);\n return;\n }\n const currentTime = timeStampedEditorStates[currentIndex][0];\n const nextTime = timeStampedEditorStates[currentIndex + 1][0];\n const timeDiff = nextTime - currentTime;\n timeoutId = setTimeout(() => {\n playingIndexRef.current++;\n const index = playingIndexRef.current;\n const input = inputRef.current;\n if (input !== null) {\n input.value = String(index);\n }\n editor.setEditorState(timeStampedEditorStates[index][1]);\n play();\n }, timeDiff);\n };\n play();\n return () => {\n clearTimeout(timeoutId);\n };\n }\n }, [timeStampedEditorStates, isPlaying, editor, totalEditorStates]);\n useEffect(() => {\n const element = treeElementRef.current;\n if (element !== null) {\n // @ts-ignore Internal field\n element.__lexicalEditor = editor;\n return () => {\n // @ts-ignore Internal field\n element.__lexicalEditor = null;\n };\n }\n }, [editor]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: viewClassName\n }, !showLimited && isLimited ? /*#__PURE__*/React.createElement(\"div\", {\n style: {\n padding: 20\n }\n }, /*#__PURE__*/React.createElement(\"span\", {\n style: {\n marginRight: 20\n }\n }, \"Detected large EditorState, this can impact debugging performance.\"), /*#__PURE__*/React.createElement(\"button\", {\n onClick: () => {\n setShowLimited(true);\n const editorState = lastEditorStateRef.current;\n if (editorState !== null) {\n lastEditorStateRef.current = null;\n generateTree(editorState);\n }\n },\n style: {\n background: 'transparent',\n border: '1px solid white',\n color: 'white',\n cursor: 'pointer',\n padding: 5\n }\n }, \"Show full tree\")) : null, !showLimited ? /*#__PURE__*/React.createElement(\"button\", {\n onClick: () => setShowExportDOM(!showExportDOM),\n className: treeTypeButtonClassName,\n type: \"button\"\n }, showExportDOM ? 'Tree' : 'Export DOM') : null, !timeTravelEnabled && (showLimited || !isLimited) && totalEditorStates > 2 && /*#__PURE__*/React.createElement(\"button\", {\n onClick: () => {\n const rootElement = editor.getRootElement();\n if (rootElement !== null) {\n rootElement.contentEditable = 'false';\n playingIndexRef.current = totalEditorStates - 1;\n setTimeTravelEnabled(true);\n }\n },\n className: timeTravelButtonClassName,\n type: \"button\"\n }, \"Time Travel\"), (showLimited || !isLimited) && /*#__PURE__*/React.createElement(\"pre\", {\n ref: treeElementRef\n }, content), timeTravelEnabled && (showLimited || !isLimited) && /*#__PURE__*/React.createElement(\"div\", {\n className: timeTravelPanelClassName\n }, /*#__PURE__*/React.createElement(\"button\", {\n className: timeTravelPanelButtonClassName,\n onClick: () => {\n if (playingIndexRef.current === totalEditorStates - 1) {\n playingIndexRef.current = 1;\n }\n setIsPlaying(!isPlaying);\n },\n type: \"button\"\n }, isPlaying ? 'Pause' : 'Play'), /*#__PURE__*/React.createElement(\"input\", {\n className: timeTravelPanelSliderClassName,\n ref: inputRef,\n onChange: event => {\n const editorStateIndex = Number(event.target.value);\n const timeStampedEditorState = timeStampedEditorStates[editorStateIndex];\n if (timeStampedEditorState) {\n playingIndexRef.current = editorStateIndex;\n editor.setEditorState(timeStampedEditorState[1]);\n }\n },\n type: \"range\",\n min: \"1\",\n max: totalEditorStates - 1\n }), /*#__PURE__*/React.createElement(\"button\", {\n className: timeTravelPanelButtonClassName,\n onClick: () => {\n const rootElement = editor.getRootElement();\n if (rootElement !== null) {\n rootElement.contentEditable = 'true';\n const index = timeStampedEditorStates.length - 1;\n const timeStampedEditorState = timeStampedEditorStates[index];\n editor.setEditorState(timeStampedEditorState[1]);\n const input = inputRef.current;\n if (input !== null) {\n input.value = String(index);\n }\n setTimeTravelEnabled(false);\n setIsPlaying(false);\n }\n },\n type: \"button\"\n }, \"Exit\")));\n}\nfunction useLexicalCommandsLog(editor) {\n const [loggedCommands, setLoggedCommands] = useState([]);\n useEffect(() => {\n const unregisterCommandListeners = new Set();\n for (const [command] of editor._commands) {\n unregisterCommandListeners.add(editor.registerCommand(command, payload => {\n setLoggedCommands(state => {\n const newState = [...state];\n newState.push({\n payload,\n type: command.type ? command.type : 'UNKNOWN'\n });\n if (newState.length > 10) {\n newState.shift();\n }\n return newState;\n });\n return false;\n }, COMMAND_PRIORITY_HIGH));\n }\n return () => unregisterCommandListeners.forEach(unregister => unregister());\n }, [editor]);\n return useMemo(() => loggedCommands, [loggedCommands]);\n}\nfunction printRangeSelection(selection) {\n let res = '';\n const formatText = printFormatProperties(selection);\n res += `: range ${formatText !== '' ? `{ ${formatText} }` : ''} ${selection.style !== '' ? `{ style: ${selection.style} } ` : ''}`;\n const anchor = selection.anchor;\n const focus = selection.focus;\n const anchorOffset = anchor.offset;\n const focusOffset = focus.offset;\n res += `\\n ├ anchor { key: ${anchor.key}, offset: ${anchorOffset === null ? 'null' : anchorOffset}, type: ${anchor.type} }`;\n res += `\\n └ focus { key: ${focus.key}, offset: ${focusOffset === null ? 'null' : focusOffset}, type: ${focus.type} }`;\n return res;\n}\nfunction printNodeSelection(selection) {\n if (!$isNodeSelection(selection)) {\n return '';\n }\n return `: node\\n └ [${Array.from(selection._nodes).join(', ')}]`;\n}\nfunction printTableSelection(selection) {\n return `: table\\n └ { table: ${selection.tableKey}, anchorCell: ${selection.anchor.key}, focusCell: ${selection.focus.key} }`;\n}\nfunction generateContent(editor, commandsLog, exportDOM) {\n const editorState = editor.getEditorState();\n const editorConfig = editor._config;\n const compositionKey = editor._compositionKey;\n const editable = editor._editable;\n if (exportDOM) {\n let htmlString = '';\n editorState.read(() => {\n htmlString = printPrettyHTML($generateHtmlFromNodes(editor));\n });\n return htmlString;\n }\n let res = ' root\\n';\n const selectionString = editorState.read(() => {\n const selection = $getSelection();\n visitTree($getRoot(), (node, indent) => {\n const nodeKey = node.getKey();\n const nodeKeyDisplay = `(${nodeKey})`;\n const typeDisplay = node.getType() || '';\n const isSelected = node.isSelected();\n const idsDisplay = $isMarkNode(node) ? ` id: [ ${node.getIDs().join(', ')} ] ` : '';\n res += `${isSelected ? SYMBOLS.selectedLine : ' '} ${indent.join(' ')} ${nodeKeyDisplay} ${typeDisplay} ${idsDisplay} ${printNode(node)}\\n`;\n res += printSelectedCharsLine({\n indent,\n isSelected,\n node,\n nodeKeyDisplay,\n selection,\n typeDisplay\n });\n });\n return selection === null ? ': null' : $isRangeSelection(selection) ? printRangeSelection(selection) : $isTableSelection(selection) ? printTableSelection(selection) : printNodeSelection(selection);\n });\n res += '\\n selection' + selectionString;\n res += '\\n\\n commands:';\n if (commandsLog.length) {\n for (const {\n type,\n payload\n } of commandsLog) {\n res += `\\n └ { type: ${type}, payload: ${payload instanceof Event ? payload.constructor.name : payload} }`;\n }\n } else {\n res += '\\n └ None dispatched.';\n }\n res += '\\n\\n editor:';\n res += `\\n └ namespace ${editorConfig.namespace}`;\n if (compositionKey !== null) {\n res += `\\n └ compositionKey ${compositionKey}`;\n }\n res += `\\n └ editable ${String(editable)}`;\n return res;\n}\nfunction visitTree(currentNode, visitor, indent = []) {\n const childNodes = currentNode.getChildren();\n const childNodesLength = childNodes.length;\n childNodes.forEach((childNode, i) => {\n visitor(childNode, indent.concat(i === childNodesLength - 1 ? SYMBOLS.isLastChild : SYMBOLS.hasNextSibling));\n if ($isElementNode(childNode)) {\n visitTree(childNode, visitor, indent.concat(i === childNodesLength - 1 ? SYMBOLS.ancestorIsLastChild : SYMBOLS.ancestorHasNextSibling));\n }\n });\n}\nfunction normalize(text) {\n return Object.entries(NON_SINGLE_WIDTH_CHARS_REPLACEMENT).reduce((acc, [key, value]) => acc.replace(new RegExp(key, 'g'), String(value)), text);\n}\n\n// TODO Pass via props to allow customizability\nfunction printNode(node) {\n if ($isTextNode(node)) {\n const text = node.getTextContent();\n const title = text.length === 0 ? '(empty)' : `\"${normalize(text)}\"`;\n const properties = printAllTextNodeProperties(node);\n return [title, properties.length !== 0 ? `{ ${properties} }` : null].filter(Boolean).join(' ').trim();\n } else if ($isLinkNode(node)) {\n const link = node.getURL();\n const title = link.length === 0 ? '(empty)' : `\"${normalize(link)}\"`;\n const properties = printAllLinkNodeProperties(node);\n return [title, properties.length !== 0 ? `{ ${properties} }` : null].filter(Boolean).join(' ').trim();\n } else {\n return '';\n }\n}\nconst FORMAT_PREDICATES = [node => node.hasFormat('bold') && 'Bold', node => node.hasFormat('code') && 'Code', node => node.hasFormat('italic') && 'Italic', node => node.hasFormat('strikethrough') && 'Strikethrough', node => node.hasFormat('subscript') && 'Subscript', node => node.hasFormat('superscript') && 'Superscript', node => node.hasFormat('underline') && 'Underline'];\nconst DETAIL_PREDICATES = [node => node.isDirectionless() && 'Directionless', node => node.isUnmergeable() && 'Unmergeable'];\nconst MODE_PREDICATES = [node => node.isToken() && 'Token', node => node.isSegmented() && 'Segmented'];\nfunction printAllTextNodeProperties(node) {\n return [printFormatProperties(node), printDetailProperties(node), printModeProperties(node)].filter(Boolean).join(', ');\n}\nfunction printAllLinkNodeProperties(node) {\n return [printTargetProperties(node), printRelProperties(node), printTitleProperties(node)].filter(Boolean).join(', ');\n}\nfunction printDetailProperties(nodeOrSelection) {\n let str = DETAIL_PREDICATES.map(predicate => predicate(nodeOrSelection)).filter(Boolean).join(', ').toLocaleLowerCase();\n if (str !== '') {\n str = 'detail: ' + str;\n }\n return str;\n}\nfunction printModeProperties(nodeOrSelection) {\n let str = MODE_PREDICATES.map(predicate => predicate(nodeOrSelection)).filter(Boolean).join(', ').toLocaleLowerCase();\n if (str !== '') {\n str = 'mode: ' + str;\n }\n return str;\n}\nfunction printFormatProperties(nodeOrSelection) {\n let str = FORMAT_PREDICATES.map(predicate => predicate(nodeOrSelection)).filter(Boolean).join(', ').toLocaleLowerCase();\n if (str !== '') {\n str = 'format: ' + str;\n }\n return str;\n}\nfunction printTargetProperties(node) {\n let str = node.getTarget();\n // TODO Fix nullish on LinkNode\n if (str != null) {\n str = 'target: ' + str;\n }\n return str;\n}\nfunction printRelProperties(node) {\n let str = node.getRel();\n // TODO Fix nullish on LinkNode\n if (str != null) {\n str = 'rel: ' + str;\n }\n return str;\n}\nfunction printTitleProperties(node) {\n let str = node.getTitle();\n // TODO Fix nullish on LinkNode\n if (str != null) {\n str = 'title: ' + str;\n }\n return str;\n}\nfunction printSelectedCharsLine({\n indent,\n isSelected,\n node,\n nodeKeyDisplay,\n selection,\n typeDisplay\n}) {\n // No selection or node is not selected.\n if (!$isTextNode(node) || !$isRangeSelection(selection) || !isSelected || $isElementNode(node)) {\n return '';\n }\n\n // No selected characters.\n const anchor = selection.anchor;\n const focus = selection.focus;\n if (node.getTextContent() === '' || anchor.getNode() === selection.focus.getNode() && anchor.offset === focus.offset) {\n return '';\n }\n const [start, end] = $getSelectionStartEnd(node, selection);\n if (start === end) {\n return '';\n }\n const selectionLastIndent = indent[indent.length - 1] === SYMBOLS.hasNextSibling ? SYMBOLS.ancestorHasNextSibling : SYMBOLS.ancestorIsLastChild;\n const indentionChars = [...indent.slice(0, indent.length - 1), selectionLastIndent];\n const unselectedChars = Array(start + 1).fill(' ');\n const selectedChars = Array(end - start).fill(SYMBOLS.selectedChar);\n const paddingLength = typeDisplay.length + 3; // 2 for the spaces around + 1 for the double quote.\n\n const nodePrintSpaces = Array(nodeKeyDisplay.length + paddingLength).fill(' ');\n return [SYMBOLS.selectedLine, indentionChars.join(' '), [...nodePrintSpaces, ...unselectedChars, ...selectedChars].join('')].join(' ') + '\\n';\n}\nfunction printPrettyHTML(str) {\n const div = document.createElement('div');\n div.innerHTML = str.trim();\n return prettifyHTML(div, 0).innerHTML;\n}\nfunction prettifyHTML(node, level) {\n const indentBefore = new Array(level++ + 1).join(' ');\n const indentAfter = new Array(level - 1).join(' ');\n let textNode;\n for (let i = 0; i < node.children.length; i++) {\n textNode = document.createTextNode('\\n' + indentBefore);\n node.insertBefore(textNode, node.children[i]);\n prettifyHTML(node.children[i], level);\n if (node.lastElementChild === node.children[i]) {\n textNode = document.createTextNode('\\n' + indentAfter);\n node.appendChild(textNode);\n }\n }\n return node;\n}\nfunction $getSelectionStartEnd(node, selection) {\n const anchorAndFocus = selection.getStartEndPoints();\n if ($isNodeSelection(selection) || anchorAndFocus === null) {\n return [-1, -1];\n }\n const [anchor, focus] = anchorAndFocus;\n const textContent = node.getTextContent();\n const textLength = textContent.length;\n let start = -1;\n let end = -1;\n\n // Only one node is being selected.\n if (anchor.type === 'text' && focus.type === 'text') {\n const anchorNode = anchor.getNode();\n const focusNode = focus.getNode();\n if (anchorNode === focusNode && node === anchorNode && anchor.offset !== focus.offset) {\n [start, end] = anchor.offset < focus.offset ? [anchor.offset, focus.offset] : [focus.offset, anchor.offset];\n } else if (node === anchorNode) {\n [start, end] = anchorNode.isBefore(focusNode) ? [anchor.offset, textLength] : [0, anchor.offset];\n } else if (node === focusNode) {\n [start, end] = focusNode.isBefore(anchorNode) ? [focus.offset, textLength] : [0, focus.offset];\n } else {\n // Node is within selection but not the anchor nor focus.\n [start, end] = [0, textLength];\n }\n }\n\n // Account for non-single width characters.\n const numNonSingleWidthCharBeforeSelection = (textContent.slice(0, start).match(NON_SINGLE_WIDTH_CHARS_REGEX) || []).length;\n const numNonSingleWidthCharInSelection = (textContent.slice(start, end).match(NON_SINGLE_WIDTH_CHARS_REGEX) || []).length;\n return [start + numNonSingleWidthCharBeforeSelection, end + numNonSingleWidthCharBeforeSelection + numNonSingleWidthCharInSelection];\n}\n\nexport { TreeView };\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 */\nimport{$generateHtmlFromNodes as e}from\"@lexical/html\";import{$isLinkNode as t}from\"@lexical/link\";import{$isMarkNode as n}from\"@lexical/mark\";import{$isTableSelection as o}from\"@lexical/table\";import{mergeRegister as r}from\"@lexical/utils\";import{COMMAND_PRIORITY_HIGH as l,$getSelection as i,$getRoot as a,$isRangeSelection as s,$isElementNode as c,$isNodeSelection as u,$isTextNode as f}from\"lexical\";import*as d from\"react\";import{useState as m,useRef as g,useMemo as p,useCallback as h,useEffect as y}from\"react\";const b=Object.freeze({\"\\t\":\"\\\\t\",\"\\n\":\"\\\\n\"}),E=new RegExp(Object.keys(b).join(\"|\"),\"g\"),C=Object.freeze({ancestorHasNextSibling:\"|\",ancestorIsLastChild:\" \",hasNextSibling:\"├\",isLastChild:\"└\",selectedChar:\"^\",selectedLine:\">\"});function $({treeTypeButtonClassName:e,timeTravelButtonClassName:t,timeTravelPanelSliderClassName:n,timeTravelPanelButtonClassName:o,viewClassName:i,timeTravelPanelClassName:a,editor:s}){const[c,u]=m([]),[f,b]=m(\"\"),[E,C]=m(!1),[$,S]=m(!1),x=g(0),T=g(null),j=g(null),[k,L]=m(!1),[v,B]=m(!1),[w,_]=m(!1),D=g(null),F=function(e){const[t,n]=m([]);return y((()=>{const t=new Set;for(const[o]of e._commands)t.add(e.registerCommand(o,(e=>(n((t=>{const n=[...t];return n.push({payload:e,type:o.type?o.type:\"UNKNOWN\"}),n.length>10&&n.shift(),n})),!1)),l));return()=>t.forEach((e=>e()))}),[e]),p((()=>t),[t])}(s),K=h((e=>{const t=N(s,F,$);b(t),E||u((t=>[...t,[Date.now(),e]]))}),[F,s,E,$]);y((()=>{const e=s.getEditorState();!w&&e._nodeMap.size<1e3&&b(N(s,F,$))}),[F,s,w,$]),y((()=>r(s.registerUpdateListener((({editorState:e})=>{!w&&e._nodeMap.size>1e3&&(D.current=e,B(!0),!w)||K(e)})),s.registerEditableListener((()=>{const e=N(s,F,$);b(e)})))),[F,s,$,v,K,w]);const R=c.length;return y((()=>{if(k){let e;const t=()=>{const n=x.current;if(n===R-1)return void L(!1);const o=c[n][0],r=c[n+1][0];e=setTimeout((()=>{x.current++;const e=x.current,n=j.current;null!==n&&(n.value=String(e)),s.setEditorState(c[e][1]),t()}),r-o)};return t(),()=>{clearTimeout(e)}}}),[c,k,s,R]),y((()=>{const e=T.current;if(null!==e)return e.__lexicalEditor=s,()=>{e.__lexicalEditor=null}}),[s]),d.createElement(\"div\",{className:i},!w&&v?d.createElement(\"div\",{style:{padding:20}},d.createElement(\"span\",{style:{marginRight:20}},\"Detected large EditorState, this can impact debugging performance.\"),d.createElement(\"button\",{onClick:()=>{_(!0);const e=D.current;null!==e&&(D.current=null,K(e))},style:{background:\"transparent\",border:\"1px solid white\",color:\"white\",cursor:\"pointer\",padding:5}},\"Show full tree\")):null,w?null:d.createElement(\"button\",{onClick:()=>S(!$),className:e,type:\"button\"},$?\"Tree\":\"Export DOM\"),!E&&(w||!v)&&R>2&&d.createElement(\"button\",{onClick:()=>{const e=s.getRootElement();null!==e&&(e.contentEditable=\"false\",x.current=R-1,C(!0))},className:t,type:\"button\"},\"Time Travel\"),(w||!v)&&d.createElement(\"pre\",{ref:T},f),E&&(w||!v)&&d.createElement(\"div\",{className:a},d.createElement(\"button\",{className:o,onClick:()=>{x.current===R-1&&(x.current=1),L(!k)},type:\"button\"},k?\"Pause\":\"Play\"),d.createElement(\"input\",{className:n,ref:j,onChange:e=>{const t=Number(e.target.value),n=c[t];n&&(x.current=t,s.setEditorState(n[1]))},type:\"range\",min:\"1\",max:R-1}),d.createElement(\"button\",{className:o,onClick:()=>{const e=s.getRootElement();if(null!==e){e.contentEditable=\"true\";const t=c.length-1,n=c[t];s.setEditorState(n[1]);const o=j.current;null!==o&&(o.value=String(t)),C(!1),L(!1)}},type:\"button\"},\"Exit\")))}function N(r,l,d){const m=r.getEditorState(),g=r._config,p=r._compositionKey,h=r._editable;if(d){let t=\"\";return m.read((()=>{t=function(e){const t=document.createElement(\"div\");return t.innerHTML=e.trim(),F(t,0).innerHTML}(e(r))})),t}let y=\" root\\n\";const b=m.read((()=>{const e=i();return S(a(),((o,r)=>{const l=`(${o.getKey()})`,i=o.getType()||\"\",a=o.isSelected(),d=n(o)?` id: [ ${o.getIDs().join(\", \")} ] `:\"\";y+=`${a?C.selectedLine:\" \"} ${r.join(\" \")} ${l} ${i} ${d} ${function(e){if(f(e)){const t=e.getTextContent(),n=0===t.length?\"(empty)\":`\"${x(t)}\"`,o=function(e){return[B(e),L(e),v(e)].filter(Boolean).join(\", \")}(e);return[n,0!==o.length?`{ ${o} }`:null].filter(Boolean).join(\" \").trim()}if(t(e)){const t=e.getURL(),n=0===t.length?\"(empty)\":`\"${x(t)}\"`,o=function(e){return[w(e),_(e),D(e)].filter(Boolean).join(\", \")}(e);return[n,0!==o.length?`{ ${o} }`:null].filter(Boolean).join(\" \").trim()}return\"\"}(o)}\\n`,y+=function({indent:e,isSelected:t,node:n,nodeKeyDisplay:o,selection:r,typeDisplay:l}){if(!f(n)||!s(r)||!t||c(n))return\"\";const i=r.anchor,a=r.focus;if(\"\"===n.getTextContent()||i.getNode()===r.focus.getNode()&&i.offset===a.offset)return\"\";const[d,m]=function(e,t){const n=t.getStartEndPoints();if(u(t)||null===n)return[-1,-1];const[o,r]=n,l=e.getTextContent(),i=l.length;let a=-1,s=-1;if(\"text\"===o.type&&\"text\"===r.type){const t=o.getNode(),n=r.getNode();t===n&&e===t&&o.offset!==r.offset?[a,s]=o.offset<r.offset?[o.offset,r.offset]:[r.offset,o.offset]:[a,s]=e===t?t.isBefore(n)?[o.offset,i]:[0,o.offset]:e===n?n.isBefore(t)?[r.offset,i]:[0,r.offset]:[0,i]}const c=(l.slice(0,a).match(E)||[]).length,f=(l.slice(a,s).match(E)||[]).length;return[a+c,s+c+f]}(n,r);if(d===m)return\"\";const g=e[e.length-1]===C.hasNextSibling?C.ancestorHasNextSibling:C.ancestorIsLastChild,p=[...e.slice(0,e.length-1),g],h=Array(d+1).fill(\" \"),y=Array(m-d).fill(C.selectedChar),b=l.length+3,$=Array(o.length+b).fill(\" \");return[C.selectedLine,p.join(\" \"),[...$,...h,...y].join(\"\")].join(\" \")+\"\\n\"}({indent:r,isSelected:a,node:o,nodeKeyDisplay:l,selection:e,typeDisplay:i})})),null===e?\": null\":s(e)?function(e){let t=\"\";const n=B(e);t+=`: range ${\"\"!==n?`{ ${n} }`:\"\"} ${\"\"!==e.style?`{ style: ${e.style} } `:\"\"}`;const o=e.anchor,r=e.focus,l=o.offset,i=r.offset;return t+=`\\n ├ anchor { key: ${o.key}, offset: ${null===l?\"null\":l}, type: ${o.type} }`,t+=`\\n └ focus { key: ${r.key}, offset: ${null===i?\"null\":i}, type: ${r.type} }`,t}(e):o(e)?function(e){return`: table\\n └ { table: ${e.tableKey}, anchorCell: ${e.anchor.key}, focusCell: ${e.focus.key} }`}(e):function(e){return u(e)?`: node\\n └ [${Array.from(e._nodes).join(\", \")}]`:\"\"}(e)}));if(y+=\"\\n selection\"+b,y+=\"\\n\\n commands:\",l.length)for(const{type:e,payload:t}of l)y+=`\\n └ { type: ${e}, payload: ${t instanceof Event?t.constructor.name:t} }`;else y+=\"\\n └ None dispatched.\";return y+=\"\\n\\n editor:\",y+=`\\n └ namespace ${g.namespace}`,null!==p&&(y+=`\\n └ compositionKey ${p}`),y+=`\\n └ editable ${String(h)}`,y}function S(e,t,n=[]){const o=e.getChildren(),r=o.length;o.forEach(((e,o)=>{t(e,n.concat(o===r-1?C.isLastChild:C.hasNextSibling)),c(e)&&S(e,t,n.concat(o===r-1?C.ancestorIsLastChild:C.ancestorHasNextSibling))}))}function x(e){return Object.entries(b).reduce(((e,[t,n])=>e.replace(new RegExp(t,\"g\"),String(n))),e)}const T=[e=>e.hasFormat(\"bold\")&&\"Bold\",e=>e.hasFormat(\"code\")&&\"Code\",e=>e.hasFormat(\"italic\")&&\"Italic\",e=>e.hasFormat(\"strikethrough\")&&\"Strikethrough\",e=>e.hasFormat(\"subscript\")&&\"Subscript\",e=>e.hasFormat(\"superscript\")&&\"Superscript\",e=>e.hasFormat(\"underline\")&&\"Underline\"],j=[e=>e.isDirectionless()&&\"Directionless\",e=>e.isUnmergeable()&&\"Unmergeable\"],k=[e=>e.isToken()&&\"Token\",e=>e.isSegmented()&&\"Segmented\"];function L(e){let t=j.map((t=>t(e))).filter(Boolean).join(\", \").toLocaleLowerCase();return\"\"!==t&&(t=\"detail: \"+t),t}function v(e){let t=k.map((t=>t(e))).filter(Boolean).join(\", \").toLocaleLowerCase();return\"\"!==t&&(t=\"mode: \"+t),t}function B(e){let t=T.map((t=>t(e))).filter(Boolean).join(\", \").toLocaleLowerCase();return\"\"!==t&&(t=\"format: \"+t),t}function w(e){let t=e.getTarget();return null!=t&&(t=\"target: \"+t),t}function _(e){let t=e.getRel();return null!=t&&(t=\"rel: \"+t),t}function D(e){let t=e.getTitle();return null!=t&&(t=\"title: \"+t),t}function F(e,t){const n=new Array(1+t++).join(\" \"),o=new Array(t-1).join(\" \");let r;for(let l=0;l<e.children.length;l++)r=document.createTextNode(\"\\n\"+n),e.insertBefore(r,e.children[l]),F(e.children[l],t),e.lastElementChild===e.children[l]&&(r=document.createTextNode(\"\\n\"+o),e.appendChild(r));return e}export{$ as TreeView};\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 */\nimport * as modDev from './LexicalTreeView.dev.esm.js';\nimport * as modProd from './LexicalTreeView.prod.esm.js';\nconst mod = process.env.NODE_ENV === 'development' ? modDev : modProd;\nexport const TreeView = mod.TreeView;","/**\r\n * Copyright (c) Meta Platforms, Inc. and affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n */\r\n\r\nimport {useLexicalComposerContext} from '@lexical/react/LexicalComposerContext';\r\nimport {TreeView} from '@lexical/react/LexicalTreeView';\r\nimport * as React from 'react';\r\n\r\nexport default function TreeViewPlugin(): JSX.Element {\r\n const [editor] = useLexicalComposerContext();\r\n return (\r\n <TreeView\r\n viewClassName=\"tree-view-output\"\r\n treeTypeButtonClassName=\"debug-treetype-button\"\r\n timeTravelPanelClassName=\"debug-timetravel-panel\"\r\n timeTravelButtonClassName=\"debug-timetravel-button\"\r\n timeTravelPanelSliderClassName=\"debug-timetravel-panel-slider\"\r\n timeTravelPanelButtonClassName=\"debug-timetravel-panel-button\"\r\n editor={editor}\r\n />\r\n );\r\n}\r\n","/**\r\n * Copyright (c) Meta Platforms, Inc. and affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n */\r\n\r\nimport type {LexicalEditor} from 'lexical';\r\n\r\nimport * as React from 'react';\r\nimport {useRef} from 'react';\r\n\r\nfunction clamp(value: number, min: number, max: number) {\r\n return Math.min(Math.max(value, min), max);\r\n}\r\n\r\nconst Direction = {\r\n east: 1 << 0,\r\n north: 1 << 3,\r\n south: 1 << 1,\r\n west: 1 << 2,\r\n};\r\n\r\nexport default function ImageResizer({\r\n onResizeStart,\r\n onResizeEnd,\r\n buttonRef,\r\n imageRef,\r\n maxWidth,\r\n editor,\r\n showCaption,\r\n setShowCaption,\r\n captionsEnabled,\r\n}: {\r\n editor: LexicalEditor;\r\n buttonRef: {current: null | HTMLButtonElement};\r\n imageRef: {current: null | HTMLElement};\r\n maxWidth?: number;\r\n onResizeEnd: (width: 'inherit' | number, height: 'inherit' | number) => void;\r\n onResizeStart: () => void;\r\n setShowCaption: (show: boolean) => void;\r\n showCaption: boolean;\r\n captionsEnabled: boolean;\r\n}): JSX.Element {\r\n const controlWrapperRef = useRef<HTMLDivElement>(null);\r\n const userSelect = useRef({\r\n priority: '',\r\n value: 'default',\r\n });\r\n const positioningRef = useRef<{\r\n currentHeight: 'inherit' | number;\r\n currentWidth: 'inherit' | number;\r\n direction: number;\r\n isResizing: boolean;\r\n ratio: number;\r\n startHeight: number;\r\n startWidth: number;\r\n startX: number;\r\n startY: number;\r\n }>({\r\n currentHeight: 0,\r\n currentWidth: 0,\r\n direction: 0,\r\n isResizing: false,\r\n ratio: 0,\r\n startHeight: 0,\r\n startWidth: 0,\r\n startX: 0,\r\n startY: 0,\r\n });\r\n const editorRootElement = editor.getRootElement();\r\n // Find max width, accounting for editor padding.\r\n const maxWidthContainer = maxWidth\r\n ? maxWidth\r\n : editorRootElement !== null\r\n ? editorRootElement.getBoundingClientRect().width - 20\r\n : 100;\r\n const maxHeightContainer =\r\n editorRootElement !== null\r\n ? editorRootElement.getBoundingClientRect().height - 20\r\n : 100;\r\n\r\n const minWidth = 100;\r\n const minHeight = 100;\r\n\r\n const setStartCursor = (direction: number) => {\r\n const ew = direction === Direction.east || direction === Direction.west;\r\n const ns = direction === Direction.north || direction === Direction.south;\r\n const nwse =\r\n (direction & Direction.north && direction & Direction.west) ||\r\n (direction & Direction.south && direction & Direction.east);\r\n\r\n const cursorDir = ew ? 'ew' : ns ? 'ns' : nwse ? 'nwse' : 'nesw';\r\n\r\n if (editorRootElement !== null) {\r\n editorRootElement.style.setProperty(\r\n 'cursor',\r\n `${cursorDir}-resize`,\r\n 'important',\r\n );\r\n }\r\n if (document.body !== null) {\r\n document.body.style.setProperty(\r\n 'cursor',\r\n `${cursorDir}-resize`,\r\n 'important',\r\n );\r\n userSelect.current.value = document.body.style.getPropertyValue(\r\n '-webkit-user-select',\r\n );\r\n userSelect.current.priority = document.body.style.getPropertyPriority(\r\n '-webkit-user-select',\r\n );\r\n document.body.style.setProperty(\r\n '-webkit-user-select',\r\n `none`,\r\n 'important',\r\n );\r\n }\r\n };\r\n\r\n const setEndCursor = () => {\r\n if (editorRootElement !== null) {\r\n editorRootElement.style.setProperty('cursor', 'text');\r\n }\r\n if (document.body !== null) {\r\n document.body.style.setProperty('cursor', 'default');\r\n document.body.style.setProperty(\r\n '-webkit-user-select',\r\n userSelect.current.value,\r\n userSelect.current.priority,\r\n );\r\n }\r\n };\r\n\r\n const handlePointerDown = (\r\n event: React.PointerEvent<HTMLDivElement>,\r\n direction: number,\r\n ) => {\r\n if (!editor.isEditable()) {\r\n return;\r\n }\r\n\r\n const image = imageRef.current;\r\n const controlWrapper = controlWrapperRef.current;\r\n\r\n if (image !== null && controlWrapper !== null) {\r\n event.preventDefault();\r\n const {width, height} = image.getBoundingClientRect();\r\n const positioning = positioningRef.current;\r\n positioning.startWidth = width;\r\n positioning.startHeight = height;\r\n positioning.ratio = width / height;\r\n positioning.currentWidth = width;\r\n positioning.currentHeight = height;\r\n positioning.startX = event.clientX;\r\n positioning.startY = event.clientY;\r\n positioning.isResizing = true;\r\n positioning.direction = direction;\r\n\r\n setStartCursor(direction);\r\n onResizeStart();\r\n\r\n controlWrapper.classList.add('image-control-wrapper--resizing');\r\n image.style.height = `${height}px`;\r\n image.style.width = `${width}px`;\r\n\r\n document.addEventListener('pointermove', handlePointerMove);\r\n document.addEventListener('pointerup', handlePointerUp);\r\n }\r\n };\r\n const handlePointerMove = (event: PointerEvent) => {\r\n const image = imageRef.current;\r\n const positioning = positioningRef.current;\r\n\r\n const isHorizontal =\r\n positioning.direction & (Direction.east | Direction.west);\r\n const isVertical =\r\n positioning.direction & (Direction.south | Direction.north);\r\n\r\n if (image !== null && positioning.isResizing) {\r\n // Corner cursor\r\n if (isHorizontal && isVertical) {\r\n let diff = Math.floor(positioning.startX - event.clientX);\r\n diff = positioning.direction & Direction.east ? -diff : diff;\r\n\r\n const width = clamp(\r\n positioning.startWidth + diff,\r\n minWidth,\r\n maxWidthContainer,\r\n );\r\n\r\n const height = width / positioning.ratio;\r\n image.style.width = `${width}px`;\r\n image.style.height = `${height}px`;\r\n positioning.currentHeight = height;\r\n positioning.currentWidth = width;\r\n } else if (isVertical) {\r\n let diff = Math.floor(positioning.startY - event.clientY);\r\n diff = positioning.direction & Direction.south ? -diff : diff;\r\n\r\n const height = clamp(\r\n positioning.startHeight + diff,\r\n minHeight,\r\n maxHeightContainer,\r\n );\r\n\r\n image.style.height = `${height}px`;\r\n positioning.currentHeight = height;\r\n } else {\r\n let diff = Math.floor(positioning.startX - event.clientX);\r\n diff = positioning.direction & Direction.east ? -diff : diff;\r\n\r\n const width = clamp(\r\n positioning.startWidth + diff,\r\n minWidth,\r\n maxWidthContainer,\r\n );\r\n\r\n image.style.width = `${width}px`;\r\n positioning.currentWidth = width;\r\n }\r\n }\r\n };\r\n const handlePointerUp = () => {\r\n const image = imageRef.current;\r\n const positioning = positioningRef.current;\r\n const controlWrapper = controlWrapperRef.current;\r\n if (image !== null && controlWrapper !== null && positioning.isResizing) {\r\n const width = positioning.currentWidth;\r\n const height = positioning.currentHeight;\r\n positioning.startWidth = 0;\r\n positioning.startHeight = 0;\r\n positioning.ratio = 0;\r\n positioning.startX = 0;\r\n positioning.startY = 0;\r\n positioning.currentWidth = 0;\r\n positioning.currentHeight = 0;\r\n positioning.isResizing = false;\r\n\r\n controlWrapper.classList.remove('image-control-wrapper--resizing');\r\n\r\n setEndCursor();\r\n onResizeEnd(width, height);\r\n\r\n document.removeEventListener('pointermove', handlePointerMove);\r\n document.removeEventListener('pointerup', handlePointerUp);\r\n }\r\n };\r\n return (\r\n <div ref={controlWrapperRef}>\r\n {!showCaption && captionsEnabled && (\r\n <button\r\n className=\"image-caption-button\"\r\n ref={buttonRef}\r\n onClick={() => {\r\n setShowCaption(!showCaption);\r\n }}>\r\n Add Caption\r\n </button>\r\n )}\r\n <div\r\n className=\"image-resizer image-resizer-n\"\r\n onPointerDown={(event) => {\r\n handlePointerDown(event, Direction.north);\r\n }}\r\n />\r\n <div\r\n className=\"image-resizer image-resizer-ne\"\r\n onPointerDown={(event) => {\r\n handlePointerDown(event, Direction.north | Direction.east);\r\n }}\r\n />\r\n <div\r\n className=\"image-resizer image-resizer-e\"\r\n onPointerDown={(event) => {\r\n handlePointerDown(event, Direction.east);\r\n }}\r\n />\r\n <div\r\n className=\"image-resizer image-resizer-se\"\r\n onPointerDown={(event) => {\r\n handlePointerDown(event, Direction.south | Direction.east);\r\n }}\r\n />\r\n <div\r\n className=\"image-resizer image-resizer-s\"\r\n onPointerDown={(event) => {\r\n handlePointerDown(event, Direction.south);\r\n }}\r\n />\r\n <div\r\n className=\"image-resizer image-resizer-sw\"\r\n onPointerDown={(event) => {\r\n handlePointerDown(event, Direction.south | Direction.west);\r\n }}\r\n />\r\n <div\r\n className=\"image-resizer image-resizer-w\"\r\n onPointerDown={(event) => {\r\n handlePointerDown(event, Direction.west);\r\n }}\r\n />\r\n <div\r\n className=\"image-resizer image-resizer-nw\"\r\n onPointerDown={(event) => {\r\n handlePointerDown(event, Direction.north | Direction.west);\r\n }}\r\n />\r\n </div>\r\n );\r\n}\r\n","/**\r\n * Copyright (c) Meta Platforms, Inc. and affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n *\r\n */\r\n\r\nimport type {\r\n BaseSelection,\r\n LexicalCommand,\r\n LexicalEditor,\r\n NodeKey,\r\n} from 'lexical';\r\n\r\nimport './ImageNode.css';\r\n\r\nimport {AutoFocusPlugin} from '@lexical/react/LexicalAutoFocusPlugin';\r\nimport {useCollaborationContext} from '@lexical/react/LexicalCollaborationContext';\r\nimport {CollaborationPlugin} from '@lexical/react/LexicalCollaborationPlugin';\r\nimport {useLexicalComposerContext} from '@lexical/react/LexicalComposerContext';\r\nimport LexicalErrorBoundary from '@lexical/react/LexicalErrorBoundary';\r\nimport {HashtagPlugin} from '@lexical/react/LexicalHashtagPlugin';\r\nimport {HistoryPlugin} from '@lexical/react/LexicalHistoryPlugin';\r\nimport {LexicalNestedComposer} from '@lexical/react/LexicalNestedComposer';\r\nimport {RichTextPlugin} from '@lexical/react/LexicalRichTextPlugin';\r\nimport {useLexicalNodeSelection} from '@lexical/react/useLexicalNodeSelection';\r\nimport {mergeRegister} from '@lexical/utils';\r\nimport {\r\n $getNodeByKey,\r\n $getSelection,\r\n $isNodeSelection,\r\n $isRangeSelection,\r\n $setSelection,\r\n CLICK_COMMAND,\r\n COMMAND_PRIORITY_LOW,\r\n createCommand,\r\n DRAGSTART_COMMAND,\r\n KEY_BACKSPACE_COMMAND,\r\n KEY_DELETE_COMMAND,\r\n KEY_ENTER_COMMAND,\r\n KEY_ESCAPE_COMMAND,\r\n SELECTION_CHANGE_COMMAND,\r\n} from 'lexical';\r\nimport * as React from 'react';\r\nimport {Suspense, useCallback, useEffect, useRef, useState} from 'react';\r\n\r\nimport {useSettings} from '../context/SettingsContext';\r\nimport {useSharedHistoryContext} from '../context/SharedHistoryContext';\r\nimport EmojisPlugin from '../plugins/EmojisPlugin';\r\nimport KeywordsPlugin from '../plugins/KeywordsPlugin';\r\nimport LinkPlugin from '../plugins/LinkPlugin';\r\nimport MentionsPlugin from '../plugins/MentionsPlugin';\r\nimport TreeViewPlugin from '../plugins/TreeViewPlugin';\r\nimport ContentEditable from '../ui/ContentEditable';\r\nimport ImageResizer from '../ui/ImageResizer';\r\nimport Placeholder from '../ui/Placeholder';\r\nimport {$isImageNode} from './ImageNode';\r\n\r\nconst imageCache = new Set();\r\n\r\nexport const RIGHT_CLICK_IMAGE_COMMAND: LexicalCommand<MouseEvent> =\r\n createCommand('RIGHT_CLICK_IMAGE_COMMAND');\r\n\r\nfunction useSuspenseImage(src: string) {\r\n if (!imageCache.has(src)) {\r\n throw new Promise((resolve) => {\r\n const img = new Image();\r\n img.src = src;\r\n img.onload = () => {\r\n imageCache.add(src);\r\n resolve(null);\r\n };\r\n });\r\n }\r\n}\r\n\r\nfunction LazyImage({\r\n altText,\r\n className,\r\n imageRef,\r\n src,\r\n width,\r\n height,\r\n maxWidth,\r\n}: {\r\n altText: string;\r\n className: string | null;\r\n height: 'inherit' | number;\r\n imageRef: {current: null | HTMLImageElement};\r\n maxWidth: number;\r\n src: string;\r\n width: 'inherit' | number;\r\n}): JSX.Element {\r\n useSuspenseImage(src);\r\n return (\r\n <img\r\n className={className || undefined}\r\n src={src}\r\n alt={altText}\r\n ref={imageRef}\r\n style={{\r\n height,\r\n maxWidth,\r\n width,\r\n }}\r\n draggable=\"false\"\r\n />\r\n );\r\n}\r\n\r\nexport default function ImageComponent({\r\n src,\r\n altText,\r\n nodeKey,\r\n width,\r\n height,\r\n maxWidth,\r\n resizable,\r\n showCaption,\r\n caption,\r\n captionsEnabled,\r\n}: {\r\n altText: string;\r\n caption: LexicalEditor;\r\n height: 'inherit' | number;\r\n maxWidth: number;\r\n nodeKey: NodeKey;\r\n resizable: boolean;\r\n showCaption: boolean;\r\n src: string;\r\n width: 'inherit' | number;\r\n captionsEnabled: boolean;\r\n}): JSX.Element {\r\n const imageRef = useRef<null | HTMLImageElement>(null);\r\n const buttonRef = useRef<HTMLButtonElement | null>(null);\r\n const [isSelected, setSelected, clearSelection] =\r\n useLexicalNodeSelection(nodeKey);\r\n const [isResizing, setIsResizing] = useState<boolean>(false);\r\n const {isCollabActive} = useCollaborationContext();\r\n const [editor] = useLexicalComposerContext();\r\n const [selection, setSelection] = useState<BaseSelection | null>(null);\r\n const activeEditorRef = useRef<LexicalEditor | null>(null);\r\n\r\n const onDelete = useCallback(\r\n (payload: KeyboardEvent) => {\r\n if (isSelected && $isNodeSelection($getSelection())) {\r\n const event: KeyboardEvent = payload;\r\n event.preventDefault();\r\n const node = $getNodeByKey(nodeKey);\r\n if ($isImageNode(node)) {\r\n node.remove();\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n [isSelected, nodeKey],\r\n );\r\n\r\n const onEnter = useCallback(\r\n (event: KeyboardEvent) => {\r\n const latestSelection = $getSelection();\r\n const buttonElem = buttonRef.current;\r\n if (\r\n isSelected &&\r\n $isNodeSelection(latestSelection) &&\r\n latestSelection.getNodes().length === 1\r\n ) {\r\n if (showCaption) {\r\n // Move focus into nested editor\r\n $setSelection(null);\r\n event.preventDefault();\r\n caption.focus();\r\n return true;\r\n } else if (\r\n buttonElem !== null &&\r\n buttonElem !== document.activeElement\r\n ) {\r\n event.preventDefault();\r\n buttonElem.focus();\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n [caption, isSelected, showCaption],\r\n );\r\n\r\n const onEscape = useCallback(\r\n (event: KeyboardEvent) => {\r\n if (\r\n activeEditorRef.current === caption ||\r\n buttonRef.current === event.target\r\n ) {\r\n $setSelection(null);\r\n editor.update(() => {\r\n setSelected(true);\r\n const parentRootElement = editor.getRootElement();\r\n if (parentRootElement !== null) {\r\n parentRootElement.focus();\r\n }\r\n });\r\n return true;\r\n }\r\n return false;\r\n },\r\n [caption, editor, setSelected],\r\n );\r\n\r\n const onClick = useCallback(\r\n (payload: MouseEvent) => {\r\n const event = payload;\r\n\r\n if (isResizing) {\r\n return true;\r\n }\r\n if (event.target === imageRef.current) {\r\n if (event.shiftKey) {\r\n setSelected(!isSelected);\r\n } else {\r\n clearSelection();\r\n setSelected(true);\r\n }\r\n return true;\r\n }\r\n\r\n return false;\r\n },\r\n [isResizing, isSelected, setSelected, clearSelection],\r\n );\r\n\r\n const onRightClick = useCallback(\r\n (event: MouseEvent): void => {\r\n editor.getEditorState().read(() => {\r\n const latestSelection = $getSelection();\r\n const domElement = event.target as HTMLElement;\r\n if (\r\n domElement.tagName === 'IMG' &&\r\n $isRangeSelection(latestSelection) &&\r\n latestSelection.getNodes().length === 1\r\n ) {\r\n editor.dispatchCommand(\r\n RIGHT_CLICK_IMAGE_COMMAND,\r\n event as MouseEvent,\r\n );\r\n }\r\n });\r\n },\r\n [editor],\r\n );\r\n\r\n useEffect(() => {\r\n let isMounted = true;\r\n const rootElement = editor.getRootElement();\r\n const unregister = mergeRegister(\r\n editor.registerUpdateListener(({editorState}) => {\r\n if (isMounted) {\r\n setSelection(editorState.read(() => $getSelection()));\r\n }\r\n }),\r\n editor.registerCommand(\r\n SELECTION_CHANGE_COMMAND,\r\n (_, activeEditor) => {\r\n activeEditorRef.current = activeEditor;\r\n return false;\r\n },\r\n COMMAND_PRIORITY_LOW,\r\n ),\r\n editor.registerCommand<MouseEvent>(\r\n CLICK_COMMAND,\r\n onClick,\r\n COMMAND_PRIORITY_LOW,\r\n ),\r\n editor.registerCommand<MouseEvent>(\r\n RIGHT_CLICK_IMAGE_COMMAND,\r\n onClick,\r\n COMMAND_PRIORITY_LOW,\r\n ),\r\n editor.registerCommand(\r\n DRAGSTART_COMMAND,\r\n (event) => {\r\n if (event.target === imageRef.current) {\r\n // TODO This is just a temporary workaround for FF to behave like other browsers.\r\n // Ideally, this handles drag & drop too (and all browsers).\r\n event.preventDefault();\r\n return true;\r\n }\r\n return false;\r\n },\r\n COMMAND_PRIORITY_LOW,\r\n ),\r\n editor.registerCommand(\r\n KEY_DELETE_COMMAND,\r\n onDelete,\r\n COMMAND_PRIORITY_LOW,\r\n ),\r\n editor.registerCommand(\r\n KEY_BACKSPACE_COMMAND,\r\n onDelete,\r\n COMMAND_PRIORITY_LOW,\r\n ),\r\n editor.registerCommand(KEY_ENTER_COMMAND, onEnter, COMMAND_PRIORITY_LOW),\r\n editor.registerCommand(\r\n KEY_ESCAPE_COMMAND,\r\n onEscape,\r\n COMMAND_PRIORITY_LOW,\r\n ),\r\n );\r\n\r\n rootElement?.addEventListener('contextmenu', onRightClick);\r\n\r\n return () => {\r\n isMounted = false;\r\n unregister();\r\n rootElement?.removeEventListener('contextmenu', onRightClick);\r\n };\r\n }, [\r\n clearSelection,\r\n editor,\r\n isResizing,\r\n isSelected,\r\n nodeKey,\r\n onDelete,\r\n onEnter,\r\n onEscape,\r\n onClick,\r\n onRightClick,\r\n setSelected,\r\n ]);\r\n\r\n const setShowCaption = () => {\r\n editor.update(() => {\r\n const node = $getNodeByKey(nodeKey);\r\n if ($isImageNode(node)) {\r\n node.setShowCaption(true);\r\n }\r\n });\r\n };\r\n\r\n const onResizeEnd = (\r\n nextWidth: 'inherit' | number,\r\n nextHeight: 'inherit' | number,\r\n ) => {\r\n // Delay hiding the resize bars for click case\r\n setTimeout(() => {\r\n setIsResizing(false);\r\n }, 200);\r\n\r\n editor.update(() => {\r\n const node = $getNodeByKey(nodeKey);\r\n if ($isImageNode(node)) {\r\n node.setWidthAndHeight(nextWidth, nextHeight);\r\n }\r\n });\r\n };\r\n\r\n const onResizeStart = () => {\r\n setIsResizing(true);\r\n };\r\n\r\n const {historyState} = useSharedHistoryContext();\r\n const {\r\n settings: {showNestedEditorTreeView},\r\n } = useSettings();\r\n\r\n const draggable = isSelected && $isNodeSelection(selection) && !isResizing;\r\n const isFocused = isSelected || isResizing;\r\n return (\r\n <Suspense fallback={null}>\r\n <>\r\n <div draggable={draggable}>\r\n <LazyImage\r\n className={\r\n isFocused\r\n ? `focused ${$isNodeSelection(selection) ? 'draggable' : ''}`\r\n : null\r\n }\r\n src={src}\r\n altText={altText}\r\n imageRef={imageRef}\r\n width={width}\r\n height={height}\r\n maxWidth={maxWidth}\r\n />\r\n </div>\r\n {showCaption && (\r\n <div className=\"image-caption-container\">\r\n <LexicalNestedComposer initialEditor={caption}>\r\n <AutoFocusPlugin />\r\n <MentionsPlugin />\r\n <LinkPlugin />\r\n <EmojisPlugin />\r\n <HashtagPlugin />\r\n <KeywordsPlugin />\r\n <RichTextPlugin\r\n contentEditable={\r\n <ContentEditable className=\"ImageNode__contentEditable\" />\r\n }\r\n placeholder={\r\n <Placeholder className=\"ImageNode__placeholder\">\r\n Enter a caption...\r\n </Placeholder>\r\n }\r\n ErrorBoundary={LexicalErrorBoundary}\r\n />\r\n {showNestedEditorTreeView === true ? <TreeViewPlugin /> : null}\r\n </LexicalNestedComposer>\r\n </div>\r\n )}\r\n {resizable && $isNodeSelection(selection) && isFocused && (\r\n <ImageResizer\r\n showCaption={showCaption}\r\n setShowCaption={setShowCaption}\r\n editor={editor}\r\n buttonRef={buttonRef}\r\n imageRef={imageRef}\r\n maxWidth={maxWidth}\r\n onResizeStart={onResizeStart}\r\n onResizeEnd={onResizeEnd}\r\n captionsEnabled={captionsEnabled}\r\n />\r\n )}\r\n </>\r\n </Suspense>\r\n );\r\n}\r\n"],"names":["hostName","isDevPlayground","DEFAULT_SETTINGS","Context","createContext","name","value","useSettings","useContext","NON_SINGLE_WIDTH_CHARS_REPLACEMENT","NON_SINGLE_WIDTH_CHARS_REGEX","SYMBOLS","TreeView","treeTypeButtonClassName","timeTravelButtonClassName","timeTravelPanelSliderClassName","timeTravelPanelButtonClassName","viewClassName","timeTravelPanelClassName","editor","timeStampedEditorStates","setTimeStampedEditorStates","useState","content","setContent","timeTravelEnabled","setTimeTravelEnabled","showExportDOM","setShowExportDOM","playingIndexRef","useRef","treeElementRef","inputRef","isPlaying","setIsPlaying","isLimited","setIsLimited","showLimited","setShowLimited","lastEditorStateRef","commandsLog","useLexicalCommandsLog","generateTree","useCallback","editorState","treeText","generateContent","currentEditorStates","useEffect","mergeRegister","totalEditorStates","timeoutId","play","currentIndex","currentTime","timeDiff","index","input","element","React","rootElement","event","editorStateIndex","timeStampedEditorState","loggedCommands","setLoggedCommands","unregisterCommandListeners","command","payload","state","newState","COMMAND_PRIORITY_HIGH","unregister","useMemo","printRangeSelection","selection","res","formatText","printFormatProperties","anchor","focus","anchorOffset","focusOffset","printNodeSelection","$isNodeSelection","printTableSelection","exportDOM","editorConfig","compositionKey","editable","htmlString","printPrettyHTML","$generateHtmlFromNodes","selectionString","$getSelection","visitTree","$getRoot","node","indent","nodeKeyDisplay","typeDisplay","isSelected","idsDisplay","$isMarkNode","printNode","printSelectedCharsLine","$isRangeSelection","$isTableSelection","type","currentNode","visitor","childNodes","childNodesLength","childNode","i","$isElementNode","normalize","text","acc","key","$isTextNode","title","properties","printAllTextNodeProperties","$isLinkNode","link","printAllLinkNodeProperties","FORMAT_PREDICATES","DETAIL_PREDICATES","MODE_PREDICATES","printDetailProperties","printModeProperties","printTargetProperties","printRelProperties","printTitleProperties","nodeOrSelection","str","predicate","start","end","$getSelectionStartEnd","selectionLastIndent","indentionChars","unselectedChars","selectedChars","paddingLength","nodePrintSpaces","div","prettifyHTML","level","indentBefore","indentAfter","textNode","anchorAndFocus","textContent","textLength","anchorNode","focusNode","numNonSingleWidthCharBeforeSelection","numNonSingleWidthCharInSelection","b","E","C","$","n","o","a","s","c","u","m","f","S","x","g","T","j","k","L","v","w","_","D","F","e","t","y","l","p","K","h","N","r","R","d","B","mod","modDev","modProd","TreeViewPlugin","useLexicalComposerContext","jsx","clamp","min","max","Direction","ImageResizer","onResizeStart","onResizeEnd","buttonRef","imageRef","maxWidth","showCaption","setShowCaption","captionsEnabled","controlWrapperRef","userSelect","positioningRef","editorRootElement","maxWidthContainer","maxHeightContainer","minWidth","minHeight","setStartCursor","direction","ew","ns","nwse","cursorDir","setEndCursor","handlePointerDown","image","controlWrapper","width","height","positioning","handlePointerMove","handlePointerUp","isHorizontal","isVertical","diff","jsxs","imageCache","RIGHT_CLICK_IMAGE_COMMAND","createCommand","useSuspenseImage","src","resolve","img","LazyImage","altText","className","ImageComponent","nodeKey","resizable","caption","setSelected","clearSelection","useLexicalNodeSelection","isResizing","setIsResizing","useCollaborationContext","setSelection","activeEditorRef","onDelete","$getNodeByKey","$isImageNode","onEnter","latestSelection","buttonElem","$setSelection","onEscape","parentRootElement","onClick","onRightClick","isMounted","SELECTION_CHANGE_COMMAND","activeEditor","COMMAND_PRIORITY_LOW","CLICK_COMMAND","DRAGSTART_COMMAND","KEY_DELETE_COMMAND","KEY_BACKSPACE_COMMAND","KEY_ENTER_COMMAND","KEY_ESCAPE_COMMAND","nextWidth","nextHeight","useSharedHistoryContext","showNestedEditorTreeView","draggable","isFocused","Suspense","Fragment","LexicalNestedComposer","AutoFocusPlugin","MentionsPlugin","LinkPlugin","EmojisPlugin","HashtagPlugin","KeywordsPlugin","RichTextPlugin","ContentEditable","Placeholder","LexicalErrorBoundary"],"mappings":"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","x_google_ignoreList":[2,3,4]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { F as H, B as W, u as Y, a as R, c as P, G as V, i as B, I as X, h as q, J, m as O, j as e, T as $, S as G, q as _, M as L, O as Q, k as Z, f as w, n as z, Q as ee, p as U, r as te, D as ne, K as se, s as ae, t as oe, v as ie, A as le, L as re, R as ce, y as ue, P as me, z as de, U as pe, V as ge, W as fe } from "./index-
|
|
2
|
-
import { L as he } from "./LexicalNestedComposer.esm-
|
|
1
|
+
import { F as H, B as W, u as Y, a as R, c as P, G as V, i as B, I as X, h as q, J, m as O, j as e, T as $, S as G, q as _, M as L, O as Q, k as Z, f as w, n as z, Q as ee, p as U, r as te, D as ne, K as se, s as ae, t as oe, v as ie, A as le, L as re, R as ce, y as ue, P as me, z as de, U as pe, V as ge, W as fe } from "./index-9730336f.js";
|
|
2
|
+
import { L as he } from "./LexicalNestedComposer.esm-56222fd8.js";
|
|
3
3
|
import { useState as N, useCallback as F, useEffect as M, useRef as D, Suspense as xe } from "react";
|
|
4
4
|
import { createPortal as Ce } from "react-dom";
|
|
5
5
|
function Ne(t, s) {
|
|
@@ -532,4 +532,4 @@ export {
|
|
|
532
532
|
Me as UpdateInlineImageDialog,
|
|
533
533
|
we as default
|
|
534
534
|
};
|
|
535
|
-
//# sourceMappingURL=InlineImageComponent-
|
|
535
|
+
//# sourceMappingURL=InlineImageComponent-5aed0ed0.js.map
|