@webiny/lexical-editor 5.37.2-beta.0 → 5.37.2-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,8 @@
1
1
  import React from "react";
2
- import { LexicalValue, ThemeEmotionMap, ToolbarActionPlugin } from "../../types";
2
+ import { CSSObject } from "@emotion/react";
3
3
  import { Klass, LexicalNode } from "lexical";
4
+ import { LexicalValue, ThemeEmotionMap, ToolbarActionPlugin } from "../../types";
4
5
  import { WebinyTheme } from "../../themes/webinyLexicalTheme";
5
- import { CSSObject } from "@emotion/react";
6
6
  export interface RichTextEditorProps {
7
7
  toolbar?: React.ReactNode;
8
8
  staticToolbar?: React.ReactNode;
@@ -10,8 +10,7 @@ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/obje
10
10
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
11
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
12
  var _react = _interopRequireWildcard(require("react"));
13
- var _Placeholder = require("../../ui/Placeholder");
14
- var _generateInitialLexicalValue = require("../../utils/generateInitialLexicalValue");
13
+ var _react2 = require("@emotion/react");
15
14
  var _LexicalComposer = require("@lexical/react/LexicalComposer");
16
15
  var _LexicalOnChangePlugin = require("@lexical/react/LexicalOnChangePlugin");
17
16
  var _LexicalAutoFocusPlugin = require("@lexical/react/LexicalAutoFocusPlugin");
@@ -19,17 +18,18 @@ var _LexicalClearEditorPlugin = require("@lexical/react/LexicalClearEditorPlugin
19
18
  var _LexicalRichTextPlugin = require("@lexical/react/LexicalRichTextPlugin");
20
19
  var _LexicalErrorBoundary = _interopRequireDefault(require("@lexical/react/LexicalErrorBoundary"));
21
20
  var _reactComposition = require("@webiny/react-composition");
21
+ var _LexicalHistoryPlugin = require("@lexical/react/LexicalHistoryPlugin");
22
22
  var _LexicalContentEditable = require("@lexical/react/LexicalContentEditable");
23
23
  var _RichTextEditorContext = require("../../context/RichTextEditorContext");
24
24
  var _isValidLexicalData = require("../../utils/isValidLexicalData");
25
25
  var _LexicalUpdateStatePlugin = require("../../plugins/LexicalUpdateStatePlugin");
26
26
  var _BlurEventPlugin = require("../../plugins/BlurEventPlugin/BlurEventPlugin");
27
+ var _Placeholder = require("../../ui/Placeholder");
28
+ var _generateInitialLexicalValue = require("../../utils/generateInitialLexicalValue");
27
29
  var _webinyLexicalTheme = require("../../themes/webinyLexicalTheme");
28
30
  var _webinyNodes = require("../../nodes/webinyNodes");
29
- var _LexicalHistoryPlugin = require("@lexical/react/LexicalHistoryPlugin");
30
31
  var _SharedHistoryContext = require("../../context/SharedHistoryContext");
31
32
  var _useRichTextEditor2 = require("../../hooks/useRichTextEditor");
32
- var _react2 = require("@emotion/react");
33
33
  var _toTypographyEmotionMap = require("../../utils/toTypographyEmotionMap");
34
34
  var _LexicalEditorConfig = require("../LexicalEditorConfig/LexicalEditorConfig");
35
35
  var BaseRichTextEditor = function BaseRichTextEditor(_ref) {
@@ -113,10 +113,10 @@ var BaseRichTextEditor = function BaseRichTextEditor(_ref) {
113
113
  return /*#__PURE__*/_react.default.createElement(_LexicalComposer.LexicalComposer, {
114
114
  initialConfig: initialConfig
115
115
  }, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, staticToolbar && staticToolbar, /*#__PURE__*/_react.default.createElement("div", {
116
- className: "editor-shell",
117
116
  ref: scrollRef,
118
117
  style: (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, styles), sizeStyle), {}, {
119
- overflow: "auto"
118
+ overflow: "auto",
119
+ position: "relative"
120
120
  })
121
121
  }, /*#__PURE__*/_react.default.createElement(_LexicalOnChangePlugin.OnChangePlugin, {
122
122
  onChange: handleOnChange
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_Placeholder","_generateInitialLexicalValue","_LexicalComposer","_LexicalOnChangePlugin","_LexicalAutoFocusPlugin","_LexicalClearEditorPlugin","_LexicalRichTextPlugin","_LexicalErrorBoundary","_interopRequireDefault","_reactComposition","_LexicalContentEditable","_RichTextEditorContext","_isValidLexicalData","_LexicalUpdateStatePlugin","_BlurEventPlugin","_webinyLexicalTheme","_webinyNodes","_LexicalHistoryPlugin","_SharedHistoryContext","_useRichTextEditor2","_react2","_toTypographyEmotionMap","_LexicalEditorConfig","BaseRichTextEditor","_ref","toolbar","staticToolbar","onChange","value","nodes","placeholder","children","onBlur","focus","styles","width","height","theme","themeEmotionMap","toolbarActionPlugins","contentEditableStyles","placeholderStyles","config","useLexicalEditorConfig","_useSharedHistoryCont","useSharedHistoryContext","historyState","placeholderElem","default","createElement","Placeholder","scrollRef","useRef","_useState","useState","undefined","_useState2","_slicedToArray2","floatingAnchorElem","setFloatingAnchorElem","_useRichTextEditor","useRichTextEditor","setTheme","setThemeEmotionMap","setToolbarActionPlugins","useEffect","onRef","_floatingAnchorElem","sizeStyle","configNodes","map","node","configPlugins","plugins","plugin","Fragment","key","name","element","initialConfig","editorState","isValidLexicalData","generateInitialLexicalValue","namespace","onError","error","concat","_toConsumableArray2","WebinyNodes","_objectSpread2","webinyEditorTheme","emotionMap","handleOnChange","editor","read","getEditorState","JSON","stringify","toJSON","LexicalComposer","className","ref","style","overflow","OnChangePlugin","LexicalUpdateStatePlugin","ClearEditorPlugin","HistoryPlugin","externalHistoryState","BlurEventPlugin","AutoFocusPlugin","RichTextPlugin","contentEditable","ContentEditable","outline","ErrorBoundary","LexicalErrorBoundary","RichTextEditor","makeComposable","props","LexicalEditorWithConfig","RichTextEditorProvider","ClassNames","_ref2","_props$themeEmotionMa","css","toTypographyEmotionMap","themeStylesTransformer","SharedHistoryContext","Object","assign","exports"],"sources":["RichTextEditor.tsx"],"sourcesContent":["import React, { Fragment, useEffect, useRef, useState } from \"react\";\nimport { LexicalValue, ThemeEmotionMap, ToolbarActionPlugin } from \"~/types\";\nimport { Placeholder } from \"~/ui/Placeholder\";\nimport { generateInitialLexicalValue } from \"~/utils/generateInitialLexicalValue\";\nimport { EditorState } from \"lexical/LexicalEditorState\";\nimport { Klass, LexicalEditor, LexicalNode } from \"lexical\";\nimport { LexicalComposer } from \"@lexical/react/LexicalComposer\";\nimport { OnChangePlugin } from \"@lexical/react/LexicalOnChangePlugin\";\nimport { AutoFocusPlugin } from \"@lexical/react/LexicalAutoFocusPlugin\";\nimport { ClearEditorPlugin } from \"@lexical/react/LexicalClearEditorPlugin\";\nimport { RichTextPlugin } from \"@lexical/react/LexicalRichTextPlugin\";\nimport LexicalErrorBoundary from \"@lexical/react/LexicalErrorBoundary\";\nimport { makeComposable } from \"@webiny/react-composition\";\nimport { ContentEditable } from \"@lexical/react/LexicalContentEditable\";\nimport { RichTextEditorProvider } from \"~/context/RichTextEditorContext\";\nimport { isValidLexicalData } from \"~/utils/isValidLexicalData\";\nimport { LexicalUpdateStatePlugin } from \"~/plugins/LexicalUpdateStatePlugin\";\nimport { BlurEventPlugin } from \"~/plugins/BlurEventPlugin/BlurEventPlugin\";\nimport { webinyEditorTheme, WebinyTheme } from \"~/themes/webinyLexicalTheme\";\nimport { WebinyNodes } from \"~/nodes/webinyNodes\";\nimport { HistoryPlugin } from \"@lexical/react/LexicalHistoryPlugin\";\nimport { SharedHistoryContext, useSharedHistoryContext } from \"~/context/SharedHistoryContext\";\nimport { useRichTextEditor } from \"~/hooks/useRichTextEditor\";\nimport { ClassNames, CSSObject } from \"@emotion/react\";\nimport { toTypographyEmotionMap } from \"~/utils/toTypographyEmotionMap\";\nimport {\n LexicalEditorWithConfig,\n useLexicalEditorConfig\n} from \"~/components/LexicalEditorConfig/LexicalEditorConfig\";\n\nexport interface RichTextEditorProps {\n toolbar?: React.ReactNode;\n staticToolbar?: React.ReactNode;\n toolbarActionPlugins?: ToolbarActionPlugin[];\n tag?: string;\n onChange?: (json: LexicalValue) => void;\n value: LexicalValue | null;\n focus?: boolean;\n placeholder?: string;\n nodes?: Klass<LexicalNode>[];\n /**\n * @description Lexical plugins\n */\n children?: React.ReactNode | React.ReactNode[];\n onBlur?: (editorState: LexicalValue) => void;\n height?: number | string;\n width?: number | string;\n /*\n * @description Theme to be injected into lexical editor\n */\n theme: WebinyTheme;\n themeStylesTransformer?: (cssObject: Record<string, any>) => CSSObject;\n themeEmotionMap?: ThemeEmotionMap;\n\n placeholderStyles?: React.CSSProperties;\n /*\n * Set inline styles to lexical editor container\n * */\n styles?: React.CSSProperties;\n\n /*\n * Set inline styles to lexical editor editable content\n * */\n contentEditableStyles?: React.CSSProperties;\n\n /*\n * Set classes to lexical input container\n * */\n classes?: string;\n}\n\nconst BaseRichTextEditor: React.FC<RichTextEditorProps> = ({\n toolbar,\n staticToolbar,\n onChange,\n value,\n nodes,\n placeholder,\n children,\n onBlur,\n focus,\n styles,\n width,\n height,\n theme,\n themeEmotionMap,\n toolbarActionPlugins,\n contentEditableStyles,\n placeholderStyles\n}: RichTextEditorProps) => {\n const config = useLexicalEditorConfig();\n const { historyState } = useSharedHistoryContext();\n const placeholderElem = (\n <Placeholder styles={placeholderStyles}>{placeholder || \"Enter text...\"}</Placeholder>\n );\n const scrollRef = useRef(null);\n const [floatingAnchorElem, setFloatingAnchorElem] = useState<HTMLElement | undefined>(\n undefined\n );\n const { setTheme, setThemeEmotionMap, setToolbarActionPlugins } = useRichTextEditor();\n\n useEffect(() => {\n setTheme(theme);\n setThemeEmotionMap(themeEmotionMap);\n }, [themeEmotionMap, theme]);\n\n useEffect(() => {\n if (toolbarActionPlugins) {\n setToolbarActionPlugins(toolbarActionPlugins || []);\n }\n }, [toolbarActionPlugins]);\n\n const onRef = (_floatingAnchorElem: HTMLDivElement) => {\n if (_floatingAnchorElem !== null) {\n setFloatingAnchorElem(_floatingAnchorElem);\n }\n };\n\n const sizeStyle = {\n height: height || \"\",\n width: width || \"\"\n };\n\n const configNodes = config.nodes.map(node => node.node);\n const configPlugins = config.plugins.map(plugin => (\n <Fragment key={plugin.name}>{plugin.element}</Fragment>\n ));\n\n const initialConfig = {\n editorState: isValidLexicalData(value) ? value : generateInitialLexicalValue(),\n namespace: \"webiny\",\n onError: (error: Error) => {\n throw error;\n },\n nodes: [...WebinyNodes, ...configNodes, ...(nodes || [])],\n theme: { ...webinyEditorTheme, emotionMap: themeEmotionMap }\n };\n\n function handleOnChange(editorState: EditorState, editor: LexicalEditor) {\n editorState.read(() => {\n if (typeof onChange === \"function\") {\n const editorState = editor.getEditorState();\n onChange(JSON.stringify(editorState.toJSON()));\n }\n });\n }\n\n return (\n <LexicalComposer initialConfig={initialConfig}>\n <>\n {staticToolbar && staticToolbar}\n <div\n className={\"editor-shell\"}\n ref={scrollRef}\n style={{ ...styles, ...sizeStyle, overflow: \"auto\" }}\n >\n {/* data */}\n <OnChangePlugin onChange={handleOnChange} />\n {value && <LexicalUpdateStatePlugin value={value} />}\n <ClearEditorPlugin />\n <HistoryPlugin externalHistoryState={historyState} />\n {/* Events */}\n {onBlur && <BlurEventPlugin onBlur={onBlur} />}\n {focus && <AutoFocusPlugin />}\n {/* External plugins and components */}\n {configPlugins}\n {children}\n <RichTextPlugin\n contentEditable={\n <div className=\"editor-scroller\" style={{ ...sizeStyle }}>\n <div className=\"editor\" ref={onRef}>\n <ContentEditable\n style={{ outline: 0, ...contentEditableStyles }}\n />\n </div>\n </div>\n }\n placeholder={placeholderElem}\n ErrorBoundary={LexicalErrorBoundary}\n />\n {/* Toolbar */}\n {floatingAnchorElem && toolbar}\n </div>\n </>\n </LexicalComposer>\n );\n};\n\n/**\n * @description Main editor container\n */\nexport const RichTextEditor = makeComposable<RichTextEditorProps>(\"RichTextEditor\", props => {\n return (\n <LexicalEditorWithConfig>\n <RichTextEditorProvider>\n <ClassNames>\n {({ css }) => {\n const themeEmotionMap =\n props?.themeEmotionMap ??\n toTypographyEmotionMap(css, props.theme, props.themeStylesTransformer);\n return (\n <SharedHistoryContext>\n <BaseRichTextEditor {...props} themeEmotionMap={themeEmotionMap} />\n </SharedHistoryContext>\n );\n }}\n </ClassNames>\n </RichTextEditorProvider>\n </LexicalEditorWithConfig>\n );\n});\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_react2","_LexicalComposer","_LexicalOnChangePlugin","_LexicalAutoFocusPlugin","_LexicalClearEditorPlugin","_LexicalRichTextPlugin","_LexicalErrorBoundary","_interopRequireDefault","_reactComposition","_LexicalHistoryPlugin","_LexicalContentEditable","_RichTextEditorContext","_isValidLexicalData","_LexicalUpdateStatePlugin","_BlurEventPlugin","_Placeholder","_generateInitialLexicalValue","_webinyLexicalTheme","_webinyNodes","_SharedHistoryContext","_useRichTextEditor2","_toTypographyEmotionMap","_LexicalEditorConfig","BaseRichTextEditor","_ref","toolbar","staticToolbar","onChange","value","nodes","placeholder","children","onBlur","focus","styles","width","height","theme","themeEmotionMap","toolbarActionPlugins","contentEditableStyles","placeholderStyles","config","useLexicalEditorConfig","_useSharedHistoryCont","useSharedHistoryContext","historyState","placeholderElem","default","createElement","Placeholder","scrollRef","useRef","_useState","useState","undefined","_useState2","_slicedToArray2","floatingAnchorElem","setFloatingAnchorElem","_useRichTextEditor","useRichTextEditor","setTheme","setThemeEmotionMap","setToolbarActionPlugins","useEffect","onRef","_floatingAnchorElem","sizeStyle","configNodes","map","node","configPlugins","plugins","plugin","Fragment","key","name","element","initialConfig","editorState","isValidLexicalData","generateInitialLexicalValue","namespace","onError","error","concat","_toConsumableArray2","WebinyNodes","_objectSpread2","webinyEditorTheme","emotionMap","handleOnChange","editor","read","getEditorState","JSON","stringify","toJSON","LexicalComposer","ref","style","overflow","position","OnChangePlugin","LexicalUpdateStatePlugin","ClearEditorPlugin","HistoryPlugin","externalHistoryState","BlurEventPlugin","AutoFocusPlugin","RichTextPlugin","contentEditable","className","ContentEditable","outline","ErrorBoundary","LexicalErrorBoundary","RichTextEditor","makeComposable","props","LexicalEditorWithConfig","RichTextEditorProvider","ClassNames","_ref2","_props$themeEmotionMa","css","toTypographyEmotionMap","themeStylesTransformer","SharedHistoryContext","Object","assign","exports"],"sources":["RichTextEditor.tsx"],"sourcesContent":["import React, { Fragment, useEffect, useRef, useState } from \"react\";\nimport { ClassNames, CSSObject } from \"@emotion/react\";\nimport { Klass, LexicalEditor, LexicalNode } from \"lexical\";\nimport { EditorState } from \"lexical/LexicalEditorState\";\nimport { LexicalComposer } from \"@lexical/react/LexicalComposer\";\nimport { OnChangePlugin } from \"@lexical/react/LexicalOnChangePlugin\";\nimport { AutoFocusPlugin } from \"@lexical/react/LexicalAutoFocusPlugin\";\nimport { ClearEditorPlugin } from \"@lexical/react/LexicalClearEditorPlugin\";\nimport { RichTextPlugin } from \"@lexical/react/LexicalRichTextPlugin\";\nimport LexicalErrorBoundary from \"@lexical/react/LexicalErrorBoundary\";\nimport { makeComposable } from \"@webiny/react-composition\";\nimport { HistoryPlugin } from \"@lexical/react/LexicalHistoryPlugin\";\nimport { ContentEditable } from \"@lexical/react/LexicalContentEditable\";\nimport { RichTextEditorProvider } from \"~/context/RichTextEditorContext\";\nimport { isValidLexicalData } from \"~/utils/isValidLexicalData\";\nimport { LexicalUpdateStatePlugin } from \"~/plugins/LexicalUpdateStatePlugin\";\nimport { BlurEventPlugin } from \"~/plugins/BlurEventPlugin/BlurEventPlugin\";\nimport { LexicalValue, ThemeEmotionMap, ToolbarActionPlugin } from \"~/types\";\nimport { Placeholder } from \"~/ui/Placeholder\";\nimport { generateInitialLexicalValue } from \"~/utils/generateInitialLexicalValue\";\nimport { webinyEditorTheme, WebinyTheme } from \"~/themes/webinyLexicalTheme\";\nimport { WebinyNodes } from \"~/nodes/webinyNodes\";\nimport { SharedHistoryContext, useSharedHistoryContext } from \"~/context/SharedHistoryContext\";\nimport { useRichTextEditor } from \"~/hooks/useRichTextEditor\";\nimport { toTypographyEmotionMap } from \"~/utils/toTypographyEmotionMap\";\nimport {\n LexicalEditorWithConfig,\n useLexicalEditorConfig\n} from \"~/components/LexicalEditorConfig/LexicalEditorConfig\";\n\nexport interface RichTextEditorProps {\n toolbar?: React.ReactNode;\n staticToolbar?: React.ReactNode;\n toolbarActionPlugins?: ToolbarActionPlugin[];\n tag?: string;\n onChange?: (json: LexicalValue) => void;\n value: LexicalValue | null;\n focus?: boolean;\n placeholder?: string;\n nodes?: Klass<LexicalNode>[];\n /**\n * @description Lexical plugins\n */\n children?: React.ReactNode | React.ReactNode[];\n onBlur?: (editorState: LexicalValue) => void;\n height?: number | string;\n width?: number | string;\n /*\n * @description Theme to be injected into lexical editor\n */\n theme: WebinyTheme;\n themeStylesTransformer?: (cssObject: Record<string, any>) => CSSObject;\n themeEmotionMap?: ThemeEmotionMap;\n\n placeholderStyles?: React.CSSProperties;\n /*\n * Set inline styles to lexical editor container\n * */\n styles?: React.CSSProperties;\n\n /*\n * Set inline styles to lexical editor editable content\n * */\n contentEditableStyles?: React.CSSProperties;\n\n /*\n * Set classes to lexical input container\n * */\n classes?: string;\n}\n\nconst BaseRichTextEditor: React.FC<RichTextEditorProps> = ({\n toolbar,\n staticToolbar,\n onChange,\n value,\n nodes,\n placeholder,\n children,\n onBlur,\n focus,\n styles,\n width,\n height,\n theme,\n themeEmotionMap,\n toolbarActionPlugins,\n contentEditableStyles,\n placeholderStyles\n}: RichTextEditorProps) => {\n const config = useLexicalEditorConfig();\n const { historyState } = useSharedHistoryContext();\n const placeholderElem = (\n <Placeholder styles={placeholderStyles}>{placeholder || \"Enter text...\"}</Placeholder>\n );\n const scrollRef = useRef(null);\n const [floatingAnchorElem, setFloatingAnchorElem] = useState<HTMLElement | undefined>(\n undefined\n );\n const { setTheme, setThemeEmotionMap, setToolbarActionPlugins } = useRichTextEditor();\n\n useEffect(() => {\n setTheme(theme);\n setThemeEmotionMap(themeEmotionMap);\n }, [themeEmotionMap, theme]);\n\n useEffect(() => {\n if (toolbarActionPlugins) {\n setToolbarActionPlugins(toolbarActionPlugins || []);\n }\n }, [toolbarActionPlugins]);\n\n const onRef = (_floatingAnchorElem: HTMLDivElement) => {\n if (_floatingAnchorElem !== null) {\n setFloatingAnchorElem(_floatingAnchorElem);\n }\n };\n\n const sizeStyle = {\n height: height || \"\",\n width: width || \"\"\n };\n\n const configNodes = config.nodes.map(node => node.node);\n const configPlugins = config.plugins.map(plugin => (\n <Fragment key={plugin.name}>{plugin.element}</Fragment>\n ));\n\n const initialConfig = {\n editorState: isValidLexicalData(value) ? value : generateInitialLexicalValue(),\n namespace: \"webiny\",\n onError: (error: Error) => {\n throw error;\n },\n nodes: [...WebinyNodes, ...configNodes, ...(nodes || [])],\n theme: { ...webinyEditorTheme, emotionMap: themeEmotionMap }\n };\n\n function handleOnChange(editorState: EditorState, editor: LexicalEditor) {\n editorState.read(() => {\n if (typeof onChange === \"function\") {\n const editorState = editor.getEditorState();\n onChange(JSON.stringify(editorState.toJSON()));\n }\n });\n }\n\n return (\n <LexicalComposer initialConfig={initialConfig}>\n <>\n {staticToolbar && staticToolbar}\n <div\n ref={scrollRef}\n style={{ ...styles, ...sizeStyle, overflow: \"auto\", position: \"relative\" }}\n >\n {/* data */}\n <OnChangePlugin onChange={handleOnChange} />\n {value && <LexicalUpdateStatePlugin value={value} />}\n <ClearEditorPlugin />\n <HistoryPlugin externalHistoryState={historyState} />\n {/* Events */}\n {onBlur && <BlurEventPlugin onBlur={onBlur} />}\n {focus && <AutoFocusPlugin />}\n {/* External plugins and components */}\n {configPlugins}\n {children}\n <RichTextPlugin\n contentEditable={\n <div className=\"editor-scroller\" style={{ ...sizeStyle }}>\n <div className=\"editor\" ref={onRef}>\n <ContentEditable\n style={{ outline: 0, ...contentEditableStyles }}\n />\n </div>\n </div>\n }\n placeholder={placeholderElem}\n ErrorBoundary={LexicalErrorBoundary}\n />\n {/* Toolbar */}\n {floatingAnchorElem && toolbar}\n </div>\n </>\n </LexicalComposer>\n );\n};\n\n/**\n * @description Main editor container\n */\nexport const RichTextEditor = makeComposable<RichTextEditorProps>(\"RichTextEditor\", props => {\n return (\n <LexicalEditorWithConfig>\n <RichTextEditorProvider>\n <ClassNames>\n {({ css }) => {\n const themeEmotionMap =\n props?.themeEmotionMap ??\n toTypographyEmotionMap(css, props.theme, props.themeStylesTransformer);\n return (\n <SharedHistoryContext>\n <BaseRichTextEditor {...props} themeEmotionMap={themeEmotionMap} />\n </SharedHistoryContext>\n );\n }}\n </ClassNames>\n </RichTextEditorProvider>\n </LexicalEditorWithConfig>\n );\n});\n"],"mappings":"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"}
@@ -9,6 +9,7 @@ export declare type SerializedLinkNode = Spread<{
9
9
  export declare class LinkNode extends BaseLinkNode {
10
10
  constructor(url: string, attributes?: LinkAttributes, key?: NodeKey);
11
11
  static getType(): string;
12
+ static clone(node: LinkNode): LinkNode;
12
13
  createDOM(config: EditorConfig): HTMLAnchorElement;
13
14
  static importDOM(): DOMConversionMap | null;
14
15
  static importJSON(serializedNode: BaseSerializedLinkNode | SerializedLinkNode | SerializedAutoLinkNode): LinkNode;
@@ -54,6 +54,15 @@ var LinkNode = /*#__PURE__*/function (_BaseLinkNode) {
54
54
  value: function getType() {
55
55
  return "link-node";
56
56
  }
57
+ }, {
58
+ key: "clone",
59
+ value: function clone(node) {
60
+ return new LinkNode(node.__url, {
61
+ rel: node.__rel,
62
+ target: node.__target,
63
+ title: node.__title
64
+ }, node.__key);
65
+ }
57
66
  }, {
58
67
  key: "importDOM",
59
68
  value: function importDOM() {
@@ -1 +1 @@
1
- {"version":3,"names":["_link","require","_utils","_sanitizeUrl","LinkNode","_BaseLinkNode","_inherits2","default","_super","_createSuper2","url","attributes","arguments","length","undefined","key","_classCallCheck2","call","_createClass2","value","createDOM","config","element","document","createElement","href","sanitizeUrl","__url","__target","target","__rel","rel","__title","title","addClassNamesToElement","theme","link","exportJSON","_objectSpread2","_get2","_getPrototypeOf2","prototype","type","version","getType","importDOM","a","conversion","convertAnchorElement","priority","importJSON","serializedNode","node","$createLinkNode","setFormat","format","setIndent","indent","setDirection","direction","BaseLinkNode","exports","domNode","isHTMLAnchorElement","content","textContent","getAttribute","$isLinkNode"],"sources":["link-node.ts"],"sourcesContent":["import {\n LinkAttributes,\n LinkNode as BaseLinkNode,\n SerializedAutoLinkNode,\n SerializedLinkNode as BaseSerializedLinkNode\n} from \"@lexical/link\";\nimport { DOMConversionMap, DOMConversionOutput, EditorConfig, NodeKey, Spread } from \"lexical\";\nimport { addClassNamesToElement, isHTMLAnchorElement } from \"@lexical/utils\";\nimport { sanitizeUrl } from \"~/utils/sanitizeUrl\";\n\nexport type SerializedLinkNode = Spread<\n {\n type: \"link-node\";\n version: 1;\n },\n Spread<LinkAttributes, BaseSerializedLinkNode>\n>;\n\nexport class LinkNode extends BaseLinkNode {\n constructor(url: string, attributes: LinkAttributes = {}, key?: NodeKey) {\n super(url, attributes, key);\n }\n\n static override getType(): string {\n return \"link-node\";\n }\n\n override createDOM(config: EditorConfig): HTMLAnchorElement {\n const element = document.createElement(\"a\");\n element.href = sanitizeUrl(this.__url);\n if (this.__target !== null) {\n element.target = this.__target;\n }\n if (this.__rel !== null) {\n element.rel = this.__rel;\n }\n if (this.__title !== null) {\n element.title = this.__title;\n }\n addClassNamesToElement(element, config.theme.link);\n return element;\n }\n\n static override importDOM(): DOMConversionMap | null {\n return {\n a: () => ({\n conversion: convertAnchorElement,\n priority: 1\n })\n };\n }\n\n static override importJSON(\n serializedNode: BaseSerializedLinkNode | SerializedLinkNode | SerializedAutoLinkNode\n ): LinkNode {\n const node = $createLinkNode(serializedNode.url, {\n rel: serializedNode.rel,\n target: serializedNode.target,\n title: serializedNode.title\n });\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n return node;\n }\n\n override exportJSON(): BaseSerializedLinkNode | SerializedLinkNode | SerializedAutoLinkNode {\n return {\n ...super.exportJSON(),\n type: \"link-node\",\n version: 1\n };\n }\n}\n\nfunction convertAnchorElement(domNode: Node): DOMConversionOutput {\n let node = null;\n if (isHTMLAnchorElement(domNode)) {\n const content = domNode.textContent;\n if (content !== null && content !== \"\") {\n node = $createLinkNode(domNode.getAttribute(\"href\") || \"\", {\n rel: domNode.getAttribute(\"rel\"),\n target: domNode.getAttribute(\"target\"),\n title: domNode.getAttribute(\"title\")\n });\n }\n }\n return { node };\n}\n\nexport const $isLinkNode = (node: any): node is LinkNode => {\n return node instanceof LinkNode;\n};\n\nexport const $createLinkNode = (url: string, attributes: LinkAttributes = {}, key?: KeyType) => {\n return new LinkNode(url, attributes, key);\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_link","require","_utils","_sanitizeUrl","LinkNode","_BaseLinkNode","_inherits2","default","_super","_createSuper2","url","attributes","arguments","length","undefined","key","_classCallCheck2","call","_createClass2","value","createDOM","config","element","document","createElement","href","sanitizeUrl","__url","__target","target","__rel","rel","__title","title","addClassNamesToElement","theme","link","exportJSON","_objectSpread2","_get2","_getPrototypeOf2","prototype","type","version","getType","clone","node","__key","importDOM","a","conversion","convertAnchorElement","priority","importJSON","serializedNode","$createLinkNode","setFormat","format","setIndent","indent","setDirection","direction","BaseLinkNode","exports","domNode","isHTMLAnchorElement","content","textContent","getAttribute","$isLinkNode"],"sources":["link-node.ts"],"sourcesContent":["import {\n LinkAttributes,\n LinkNode as BaseLinkNode,\n SerializedAutoLinkNode,\n SerializedLinkNode as BaseSerializedLinkNode\n} from \"@lexical/link\";\nimport { DOMConversionMap, DOMConversionOutput, EditorConfig, NodeKey, Spread } from \"lexical\";\nimport { addClassNamesToElement, isHTMLAnchorElement } from \"@lexical/utils\";\nimport { sanitizeUrl } from \"~/utils/sanitizeUrl\";\n\nexport type SerializedLinkNode = Spread<\n {\n type: \"link-node\";\n version: 1;\n },\n Spread<LinkAttributes, BaseSerializedLinkNode>\n>;\n\nexport class LinkNode extends BaseLinkNode {\n constructor(url: string, attributes: LinkAttributes = {}, key?: NodeKey) {\n super(url, attributes, key);\n }\n\n static override getType(): string {\n return \"link-node\";\n }\n\n static override clone(node: LinkNode): LinkNode {\n return new LinkNode(\n node.__url,\n { rel: node.__rel, target: node.__target, title: node.__title },\n node.__key\n );\n }\n\n override createDOM(config: EditorConfig): HTMLAnchorElement {\n const element = document.createElement(\"a\");\n element.href = sanitizeUrl(this.__url);\n if (this.__target !== null) {\n element.target = this.__target;\n }\n if (this.__rel !== null) {\n element.rel = this.__rel;\n }\n if (this.__title !== null) {\n element.title = this.__title;\n }\n addClassNamesToElement(element, config.theme.link);\n return element;\n }\n\n static override importDOM(): DOMConversionMap | null {\n return {\n a: () => ({\n conversion: convertAnchorElement,\n priority: 1\n })\n };\n }\n\n static override importJSON(\n serializedNode: BaseSerializedLinkNode | SerializedLinkNode | SerializedAutoLinkNode\n ): LinkNode {\n const node = $createLinkNode(serializedNode.url, {\n rel: serializedNode.rel,\n target: serializedNode.target,\n title: serializedNode.title\n });\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n return node;\n }\n\n override exportJSON(): BaseSerializedLinkNode | SerializedLinkNode | SerializedAutoLinkNode {\n return {\n ...super.exportJSON(),\n type: \"link-node\",\n version: 1\n };\n }\n}\n\nfunction convertAnchorElement(domNode: Node): DOMConversionOutput {\n let node = null;\n if (isHTMLAnchorElement(domNode)) {\n const content = domNode.textContent;\n if (content !== null && content !== \"\") {\n node = $createLinkNode(domNode.getAttribute(\"href\") || \"\", {\n rel: domNode.getAttribute(\"rel\"),\n target: domNode.getAttribute(\"target\"),\n title: domNode.getAttribute(\"title\")\n });\n }\n }\n return { node };\n}\n\nexport const $isLinkNode = (node: any): node is LinkNode => {\n return node instanceof LinkNode;\n};\n\nexport const $createLinkNode = (url: string, attributes: LinkAttributes = {}, key?: KeyType) => {\n return new LinkNode(url, attributes, key);\n};\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/lexical-editor",
3
- "version": "5.37.2-beta.0",
3
+ "version": "5.37.2-beta.2",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/webiny/webiny-js.git"
@@ -19,16 +19,16 @@
19
19
  "@lexical/rich-text": "0.11.3",
20
20
  "@lexical/selection": "0.11.3",
21
21
  "@lexical/utils": "0.11.3",
22
- "@webiny/react-composition": "5.37.2-beta.0",
23
- "@webiny/react-properties": "5.37.2-beta.0",
22
+ "@webiny/react-composition": "5.37.2-beta.2",
23
+ "@webiny/react-properties": "5.37.2-beta.2",
24
24
  "lexical": "0.11.3",
25
25
  "react": "17.0.2",
26
26
  "react-dom": "17.0.2",
27
27
  "react-style-object-to-css": "1.1.2"
28
28
  },
29
29
  "devDependencies": {
30
- "@webiny/cli": "5.37.2-beta.0",
31
- "@webiny/project-utils": "5.37.2-beta.0"
30
+ "@webiny/cli": "5.37.2-beta.2",
31
+ "@webiny/project-utils": "5.37.2-beta.2"
32
32
  },
33
33
  "publishConfig": {
34
34
  "access": "public",
@@ -38,5 +38,5 @@
38
38
  "build": "yarn webiny run build",
39
39
  "watch": "yarn webiny run watch"
40
40
  },
41
- "gitHead": "f6ce49cc7eaf13904a366391210cd56951fe5d21"
41
+ "gitHead": "35ac9634636144d945bede6aaafd99b3255a19f9"
42
42
  }
@@ -153,7 +153,7 @@ function FloatingLinkEditor(_ref) {
153
153
  target: linkUrl.target ? null : "_blank"
154
154
  }));
155
155
  }
156
- }), " ", /*#__PURE__*/_react.default.createElement("span", null, "Open in new page")), /*#__PURE__*/_react.default.createElement("input", {
156
+ }), " ", /*#__PURE__*/_react.default.createElement("span", null, "New tab")), /*#__PURE__*/_react.default.createElement("input", {
157
157
  ref: inputRef,
158
158
  className: "link-input",
159
159
  value: linkUrl.url,
@@ -186,7 +186,7 @@ function FloatingLinkEditor(_ref) {
186
186
  type: "checkbox",
187
187
  checked: linkUrl.target === "_blank",
188
188
  readOnly: true
189
- }), " ", /*#__PURE__*/_react.default.createElement("span", null, "Open in new page")), /*#__PURE__*/_react.default.createElement("div", {
189
+ }), " ", /*#__PURE__*/_react.default.createElement("span", null, "New tab")), /*#__PURE__*/_react.default.createElement("div", {
190
190
  className: "link-input"
191
191
  }, /*#__PURE__*/_react.default.createElement("a", {
192
192
  href: linkUrl.url,
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_link","_LexicalComposerContext","_utils","_lexical","_reactDom","_LinkPreview","_getSelectedNode","_sanitizeUrl","_setFloatingElemPosition","_isUrlLinkReference","FloatingLinkEditor","_ref","editor","anchorElem","editorRef","useRef","inputRef","_useState","useState","url","target","_useState2","_slicedToArray2","default","linkUrl","setLinkUrl","_useState3","_useState4","isEditMode","setEditMode","_useState5","_useState6","lastSelection","setLastSelection","updateLinkEditor","useCallback","selection","$getSelection","$isRangeSelection","node","getSelectedNode","parent","getParent","$isLinkNode","getURL","getTarget","editorElem","current","nativeSelection","window","getSelection","activeElement","document","rootElement","getRootElement","contains","anchorNode","domRange","getRangeAt","rect","inner","firstElementChild","getBoundingClientRect","setFloatingElemPosition","className","removeLink","dispatchCommand","TOGGLE_LINK_COMMAND","useEffect","scrollerElem","parentElement","update","getEditorState","read","addEventListener","removeEventListener","mergeRegister","registerUpdateListener","_ref2","editorState","registerCommand","SELECTION_CHANGE_COMMAND","COMMAND_PRIORITY_LOW","focus","createElement","ref","Fragment","type","checked","disabled","isUrlLinkReference","onChange","_objectSpread2","value","event","onKeyDown","key","preventDefault","sanitizeUrl","readOnly","href","rel","role","tabIndex","onMouseDown","onClick","LinkPreview","useFloatingLinkEditorToolbar","_useState7","_useState8","activeEditor","setActiveEditor","_useState9","_useState10","isLink","setIsLink","updateToolbar","linkParent","$findMatchingParent","autoLinkParent","$isAutoLinkNode","_payload","newEditor","COMMAND_PRIORITY_CRITICAL","createPortal","FloatingLinkEditorPlugin","_ref3","_ref3$anchorElem","body","_useLexicalComposerCo","useLexicalComposerContext","_useLexicalComposerCo2"],"sources":["FloatingLinkEditorPlugin.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport \"./FloatingLinkEditorPlugin.css\";\nimport { $isAutoLinkNode, $isLinkNode, TOGGLE_LINK_COMMAND } from \"@lexical/link\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $findMatchingParent, mergeRegister } from \"@lexical/utils\";\nimport {\n $getSelection,\n $isRangeSelection,\n COMMAND_PRIORITY_CRITICAL,\n COMMAND_PRIORITY_LOW,\n GridSelection,\n LexicalEditor,\n NodeSelection,\n RangeSelection,\n SELECTION_CHANGE_COMMAND\n} from \"lexical\";\n\nimport { createPortal } from \"react-dom\";\nimport { LinkPreview } from \"../../ui/LinkPreview\";\nimport { getSelectedNode } from \"../../utils/getSelectedNode\";\nimport { sanitizeUrl } from \"../../utils/sanitizeUrl\";\nimport { setFloatingElemPosition } from \"../../utils/setFloatingElemPosition\";\nimport { isUrlLinkReference } from \"~/utils/isUrlLinkReference\";\n\nfunction FloatingLinkEditor({\n editor,\n anchorElem\n}: {\n editor: LexicalEditor;\n anchorElem: HTMLElement;\n}): JSX.Element {\n const editorRef = useRef<HTMLDivElement | null>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const [linkUrl, setLinkUrl] = useState<{ url: string; target: string | null }>({\n url: \"\",\n target: null\n });\n const [isEditMode, setEditMode] = useState(false);\n const [lastSelection, setLastSelection] = useState<\n RangeSelection | GridSelection | NodeSelection | null\n >(null);\n\n const updateLinkEditor = useCallback(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n const node = getSelectedNode(selection);\n const parent = node.getParent();\n if ($isLinkNode(parent)) {\n setLinkUrl({ url: parent.getURL(), target: parent.getTarget() });\n } else if ($isLinkNode(node)) {\n setLinkUrl({ url: node.getURL(), target: node.getTarget() });\n } else {\n setLinkUrl({ url: \"\", target: null });\n }\n }\n const editorElem = editorRef.current;\n const nativeSelection = window.getSelection();\n const activeElement = document.activeElement;\n\n if (editorElem === null) {\n return;\n }\n\n const rootElement = editor.getRootElement();\n\n if (\n selection !== null &&\n nativeSelection !== null &&\n rootElement !== null &&\n rootElement.contains(nativeSelection.anchorNode)\n ) {\n const domRange = nativeSelection.getRangeAt(0);\n let rect;\n if (nativeSelection.anchorNode === rootElement) {\n let inner = rootElement;\n while (inner.firstElementChild != null) {\n inner = inner.firstElementChild as HTMLElement;\n }\n rect = inner.getBoundingClientRect();\n } else {\n rect = domRange.getBoundingClientRect();\n }\n\n setFloatingElemPosition(rect, editorElem, anchorElem);\n setLastSelection(selection);\n } else if (!activeElement || activeElement.className !== \"link-input\") {\n if (rootElement !== null) {\n setFloatingElemPosition(null, editorElem, anchorElem);\n }\n setLastSelection(null);\n setEditMode(false);\n setLinkUrl({ url: \"\", target: null });\n }\n\n return true;\n }, [anchorElem, editor]);\n\n const removeLink = () => {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);\n setEditMode(false);\n };\n\n useEffect(() => {\n const scrollerElem = anchorElem.parentElement;\n\n const update = () => {\n editor.getEditorState().read(() => {\n updateLinkEditor();\n });\n };\n\n window.addEventListener(\"resize\", update);\n\n if (scrollerElem) {\n scrollerElem.addEventListener(\"scroll\", update);\n }\n\n return () => {\n window.removeEventListener(\"resize\", update);\n\n if (scrollerElem) {\n scrollerElem.removeEventListener(\"scroll\", update);\n }\n };\n }, [anchorElem.parentElement, editor, updateLinkEditor]);\n\n useEffect(() => {\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n updateLinkEditor();\n });\n }),\n\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n updateLinkEditor();\n return true;\n },\n COMMAND_PRIORITY_LOW\n )\n );\n }, [editor, updateLinkEditor]);\n\n useEffect(() => {\n editor.getEditorState().read(() => {\n updateLinkEditor();\n });\n }, [editor, updateLinkEditor]);\n\n useEffect(() => {\n if (isEditMode && inputRef.current) {\n inputRef.current.focus();\n }\n }, [isEditMode]);\n\n return (\n <div ref={editorRef} className=\"link-editor\">\n {isEditMode ? (\n <>\n <div className={\"link-editor-target-checkbox\"}>\n <input\n type={\"checkbox\"}\n checked={linkUrl.target === \"_blank\"}\n disabled={isUrlLinkReference(linkUrl.url)}\n onChange={() =>\n setLinkUrl({ ...linkUrl, target: linkUrl.target ? null : \"_blank\" })\n }\n />{\" \"}\n <span>Open in new page</span>\n </div>\n <input\n ref={inputRef}\n className=\"link-input\"\n value={linkUrl.url}\n onChange={event => {\n setLinkUrl({ url: event.target.value, target: null });\n }}\n onKeyDown={event => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n if (lastSelection !== null) {\n if (linkUrl.url !== \"\") {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, {\n url: sanitizeUrl(linkUrl.url),\n target: linkUrl.target\n });\n }\n setEditMode(false);\n }\n } else if (event.key === \"Escape\") {\n event.preventDefault();\n setEditMode(false);\n }\n }}\n />\n </>\n ) : (\n <>\n <div className={\"link-editor-target-checkbox\"}>\n <input type={\"checkbox\"} checked={linkUrl.target === \"_blank\"} readOnly />{\" \"}\n <span>Open in new page</span>\n </div>\n <div className=\"link-input\">\n <a href={linkUrl.url} target=\"_blank\" rel=\"noopener noreferrer\">\n {linkUrl.url}\n </a>\n <div\n className=\"link-edit\"\n role=\"button\"\n tabIndex={0}\n onMouseDown={event => event.preventDefault()}\n onClick={() => {\n setEditMode(true);\n }}\n />\n <div\n className=\"link-unlink\"\n role=\"button\"\n tabIndex={0}\n onMouseDown={event => event.preventDefault()}\n onClick={() => {\n removeLink();\n }}\n />\n </div>\n <LinkPreview url={linkUrl.url} />\n </>\n )}\n </div>\n );\n}\n\nfunction useFloatingLinkEditorToolbar(\n editor: LexicalEditor,\n anchorElem: HTMLElement\n): JSX.Element | null {\n const [activeEditor, setActiveEditor] = useState(editor);\n const [isLink, setIsLink] = useState(false);\n\n const updateToolbar = useCallback(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n const node = getSelectedNode(selection);\n const linkParent = $findMatchingParent(node, $isLinkNode);\n const autoLinkParent = $findMatchingParent(node, $isAutoLinkNode);\n\n // We don't want this menu to open for auto links.\n if (linkParent != null && autoLinkParent == null) {\n setIsLink(true);\n } else {\n setIsLink(false);\n }\n }\n }, []);\n\n useEffect(() => {\n return editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n (_payload, newEditor) => {\n updateToolbar();\n setActiveEditor(newEditor);\n return false;\n },\n COMMAND_PRIORITY_CRITICAL\n );\n }, [editor, updateToolbar]);\n\n return isLink\n ? createPortal(\n <FloatingLinkEditor editor={activeEditor} anchorElem={anchorElem} />,\n anchorElem\n )\n : null;\n}\n\nexport function FloatingLinkEditorPlugin({\n anchorElem = document.body\n}: {\n anchorElem?: HTMLElement;\n}): JSX.Element | null {\n const [editor] = useLexicalComposerContext();\n return useFloatingLinkEditorToolbar(editor, anchorElem);\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_link","_LexicalComposerContext","_utils","_lexical","_reactDom","_LinkPreview","_getSelectedNode","_sanitizeUrl","_setFloatingElemPosition","_isUrlLinkReference","FloatingLinkEditor","_ref","editor","anchorElem","editorRef","useRef","inputRef","_useState","useState","url","target","_useState2","_slicedToArray2","default","linkUrl","setLinkUrl","_useState3","_useState4","isEditMode","setEditMode","_useState5","_useState6","lastSelection","setLastSelection","updateLinkEditor","useCallback","selection","$getSelection","$isRangeSelection","node","getSelectedNode","parent","getParent","$isLinkNode","getURL","getTarget","editorElem","current","nativeSelection","window","getSelection","activeElement","document","rootElement","getRootElement","contains","anchorNode","domRange","getRangeAt","rect","inner","firstElementChild","getBoundingClientRect","setFloatingElemPosition","className","removeLink","dispatchCommand","TOGGLE_LINK_COMMAND","useEffect","scrollerElem","parentElement","update","getEditorState","read","addEventListener","removeEventListener","mergeRegister","registerUpdateListener","_ref2","editorState","registerCommand","SELECTION_CHANGE_COMMAND","COMMAND_PRIORITY_LOW","focus","createElement","ref","Fragment","type","checked","disabled","isUrlLinkReference","onChange","_objectSpread2","value","event","onKeyDown","key","preventDefault","sanitizeUrl","readOnly","href","rel","role","tabIndex","onMouseDown","onClick","LinkPreview","useFloatingLinkEditorToolbar","_useState7","_useState8","activeEditor","setActiveEditor","_useState9","_useState10","isLink","setIsLink","updateToolbar","linkParent","$findMatchingParent","autoLinkParent","$isAutoLinkNode","_payload","newEditor","COMMAND_PRIORITY_CRITICAL","createPortal","FloatingLinkEditorPlugin","_ref3","_ref3$anchorElem","body","_useLexicalComposerCo","useLexicalComposerContext","_useLexicalComposerCo2"],"sources":["FloatingLinkEditorPlugin.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport \"./FloatingLinkEditorPlugin.css\";\nimport { $isAutoLinkNode, $isLinkNode, TOGGLE_LINK_COMMAND } from \"@lexical/link\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $findMatchingParent, mergeRegister } from \"@lexical/utils\";\nimport {\n $getSelection,\n $isRangeSelection,\n COMMAND_PRIORITY_CRITICAL,\n COMMAND_PRIORITY_LOW,\n GridSelection,\n LexicalEditor,\n NodeSelection,\n RangeSelection,\n SELECTION_CHANGE_COMMAND\n} from \"lexical\";\n\nimport { createPortal } from \"react-dom\";\nimport { LinkPreview } from \"../../ui/LinkPreview\";\nimport { getSelectedNode } from \"../../utils/getSelectedNode\";\nimport { sanitizeUrl } from \"../../utils/sanitizeUrl\";\nimport { setFloatingElemPosition } from \"../../utils/setFloatingElemPosition\";\nimport { isUrlLinkReference } from \"~/utils/isUrlLinkReference\";\n\nfunction FloatingLinkEditor({\n editor,\n anchorElem\n}: {\n editor: LexicalEditor;\n anchorElem: HTMLElement;\n}): JSX.Element {\n const editorRef = useRef<HTMLDivElement | null>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const [linkUrl, setLinkUrl] = useState<{ url: string; target: string | null }>({\n url: \"\",\n target: null\n });\n const [isEditMode, setEditMode] = useState(false);\n const [lastSelection, setLastSelection] = useState<\n RangeSelection | GridSelection | NodeSelection | null\n >(null);\n\n const updateLinkEditor = useCallback(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n const node = getSelectedNode(selection);\n const parent = node.getParent();\n if ($isLinkNode(parent)) {\n setLinkUrl({ url: parent.getURL(), target: parent.getTarget() });\n } else if ($isLinkNode(node)) {\n setLinkUrl({ url: node.getURL(), target: node.getTarget() });\n } else {\n setLinkUrl({ url: \"\", target: null });\n }\n }\n const editorElem = editorRef.current;\n const nativeSelection = window.getSelection();\n const activeElement = document.activeElement;\n\n if (editorElem === null) {\n return;\n }\n\n const rootElement = editor.getRootElement();\n\n if (\n selection !== null &&\n nativeSelection !== null &&\n rootElement !== null &&\n rootElement.contains(nativeSelection.anchorNode)\n ) {\n const domRange = nativeSelection.getRangeAt(0);\n let rect;\n if (nativeSelection.anchorNode === rootElement) {\n let inner = rootElement;\n while (inner.firstElementChild != null) {\n inner = inner.firstElementChild as HTMLElement;\n }\n rect = inner.getBoundingClientRect();\n } else {\n rect = domRange.getBoundingClientRect();\n }\n\n setFloatingElemPosition(rect, editorElem, anchorElem);\n setLastSelection(selection);\n } else if (!activeElement || activeElement.className !== \"link-input\") {\n if (rootElement !== null) {\n setFloatingElemPosition(null, editorElem, anchorElem);\n }\n setLastSelection(null);\n setEditMode(false);\n setLinkUrl({ url: \"\", target: null });\n }\n\n return true;\n }, [anchorElem, editor]);\n\n const removeLink = () => {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null);\n setEditMode(false);\n };\n\n useEffect(() => {\n const scrollerElem = anchorElem.parentElement;\n\n const update = () => {\n editor.getEditorState().read(() => {\n updateLinkEditor();\n });\n };\n\n window.addEventListener(\"resize\", update);\n\n if (scrollerElem) {\n scrollerElem.addEventListener(\"scroll\", update);\n }\n\n return () => {\n window.removeEventListener(\"resize\", update);\n\n if (scrollerElem) {\n scrollerElem.removeEventListener(\"scroll\", update);\n }\n };\n }, [anchorElem.parentElement, editor, updateLinkEditor]);\n\n useEffect(() => {\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n updateLinkEditor();\n });\n }),\n\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n updateLinkEditor();\n return true;\n },\n COMMAND_PRIORITY_LOW\n )\n );\n }, [editor, updateLinkEditor]);\n\n useEffect(() => {\n editor.getEditorState().read(() => {\n updateLinkEditor();\n });\n }, [editor, updateLinkEditor]);\n\n useEffect(() => {\n if (isEditMode && inputRef.current) {\n inputRef.current.focus();\n }\n }, [isEditMode]);\n\n return (\n <div ref={editorRef} className=\"link-editor\">\n {isEditMode ? (\n <>\n <div className={\"link-editor-target-checkbox\"}>\n <input\n type={\"checkbox\"}\n checked={linkUrl.target === \"_blank\"}\n disabled={isUrlLinkReference(linkUrl.url)}\n onChange={() =>\n setLinkUrl({ ...linkUrl, target: linkUrl.target ? null : \"_blank\" })\n }\n />{\" \"}\n <span>New tab</span>\n </div>\n <input\n ref={inputRef}\n className=\"link-input\"\n value={linkUrl.url}\n onChange={event => {\n setLinkUrl({ url: event.target.value, target: null });\n }}\n onKeyDown={event => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n if (lastSelection !== null) {\n if (linkUrl.url !== \"\") {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, {\n url: sanitizeUrl(linkUrl.url),\n target: linkUrl.target\n });\n }\n setEditMode(false);\n }\n } else if (event.key === \"Escape\") {\n event.preventDefault();\n setEditMode(false);\n }\n }}\n />\n </>\n ) : (\n <>\n <div className={\"link-editor-target-checkbox\"}>\n <input type={\"checkbox\"} checked={linkUrl.target === \"_blank\"} readOnly />{\" \"}\n <span>New tab</span>\n </div>\n <div className=\"link-input\">\n <a href={linkUrl.url} target=\"_blank\" rel=\"noopener noreferrer\">\n {linkUrl.url}\n </a>\n <div\n className=\"link-edit\"\n role=\"button\"\n tabIndex={0}\n onMouseDown={event => event.preventDefault()}\n onClick={() => {\n setEditMode(true);\n }}\n />\n <div\n className=\"link-unlink\"\n role=\"button\"\n tabIndex={0}\n onMouseDown={event => event.preventDefault()}\n onClick={() => {\n removeLink();\n }}\n />\n </div>\n <LinkPreview url={linkUrl.url} />\n </>\n )}\n </div>\n );\n}\n\nfunction useFloatingLinkEditorToolbar(\n editor: LexicalEditor,\n anchorElem: HTMLElement\n): JSX.Element | null {\n const [activeEditor, setActiveEditor] = useState(editor);\n const [isLink, setIsLink] = useState(false);\n\n const updateToolbar = useCallback(() => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n const node = getSelectedNode(selection);\n const linkParent = $findMatchingParent(node, $isLinkNode);\n const autoLinkParent = $findMatchingParent(node, $isAutoLinkNode);\n\n // We don't want this menu to open for auto links.\n if (linkParent != null && autoLinkParent == null) {\n setIsLink(true);\n } else {\n setIsLink(false);\n }\n }\n }, []);\n\n useEffect(() => {\n return editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n (_payload, newEditor) => {\n updateToolbar();\n setActiveEditor(newEditor);\n return false;\n },\n COMMAND_PRIORITY_CRITICAL\n );\n }, [editor, updateToolbar]);\n\n return isLink\n ? createPortal(\n <FloatingLinkEditor editor={activeEditor} anchorElem={anchorElem} />,\n anchorElem\n )\n : null;\n}\n\nexport function FloatingLinkEditorPlugin({\n anchorElem = document.body\n}: {\n anchorElem?: HTMLElement;\n}): JSX.Element | null {\n const [editor] = useLexicalComposerContext();\n return useFloatingLinkEditorToolbar(editor, anchorElem);\n}\n"],"mappings":"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"}