@37signals/lexxy 0.1.16-beta → 0.1.17-beta
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/lexxy.esm.js +30 -3
- package/package.json +1 -1
package/dist/lexxy.esm.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import DOMPurify from 'dompurify';
|
|
2
|
-
import { $getSelection, $isRangeSelection, DecoratorNode, $getNodeByKey, HISTORY_MERGE_TAG, FORMAT_TEXT_COMMAND, UNDO_COMMAND, REDO_COMMAND, PASTE_COMMAND, COMMAND_PRIORITY_LOW, $isNodeSelection, $getRoot, $isLineBreakNode, $isTextNode, $isElementNode, KEY_ARROW_LEFT_COMMAND, KEY_ARROW_RIGHT_COMMAND, KEY_ARROW_UP_COMMAND, KEY_ARROW_DOWN_COMMAND, KEY_DELETE_COMMAND, KEY_BACKSPACE_COMMAND, SELECTION_CHANGE_COMMAND, $createNodeSelection, $setSelection, $createParagraphNode,
|
|
2
|
+
import { $getSelection, $isRangeSelection, DecoratorNode, $getNodeByKey, HISTORY_MERGE_TAG, FORMAT_TEXT_COMMAND, $createTextNode, UNDO_COMMAND, REDO_COMMAND, PASTE_COMMAND, COMMAND_PRIORITY_LOW, $isNodeSelection, $getRoot, $isLineBreakNode, $isTextNode, $isElementNode, KEY_ARROW_LEFT_COMMAND, KEY_ARROW_RIGHT_COMMAND, KEY_ARROW_UP_COMMAND, KEY_ARROW_DOWN_COMMAND, KEY_DELETE_COMMAND, KEY_BACKSPACE_COMMAND, SELECTION_CHANGE_COMMAND, $createNodeSelection, $setSelection, $createParagraphNode, KEY_ENTER_COMMAND, COMMAND_PRIORITY_HIGH, $isParagraphNode, $insertNodes, $createLineBreakNode, CLEAR_HISTORY_COMMAND, $addUpdateTag, SKIP_DOM_SELECTION_TAG, createEditor, COMMAND_PRIORITY_NORMAL, KEY_TAB_COMMAND, KEY_SPACE_COMMAND } from 'lexical';
|
|
3
3
|
import { $isListNode, $isListItemNode, INSERT_UNORDERED_LIST_COMMAND, INSERT_ORDERED_LIST_COMMAND, $createListNode, ListNode, ListItemNode, registerList } from '@lexical/list';
|
|
4
4
|
import { $isQuoteNode, $isHeadingNode, $createQuoteNode, $createHeadingNode, QuoteNode, HeadingNode, registerRichText } from '@lexical/rich-text';
|
|
5
5
|
import { $isCodeNode, CodeNode, CodeHighlightNode, registerCodeHighlighting, CODE_LANGUAGE_FRIENDLY_NAME_MAP, normalizeCodeLang } from '@lexical/code';
|
|
6
|
-
import { $isLinkNode, $toggleLink, $createLinkNode, LinkNode, AutoLinkNode } from '@lexical/link';
|
|
6
|
+
import { $isLinkNode, $createAutoLinkNode, $toggleLink, $createLinkNode, LinkNode, AutoLinkNode } from '@lexical/link';
|
|
7
7
|
import { $generateNodesFromDOM, $generateHtmlFromNodes } from '@lexical/html';
|
|
8
8
|
import { registerMarkdownShortcuts, TRANSFORMERS } from '@lexical/markdown';
|
|
9
9
|
import { createEmptyHistoryState, registerHistory } from '@lexical/history';
|
|
@@ -1019,7 +1019,19 @@ class CommandDispatcher {
|
|
|
1019
1019
|
}
|
|
1020
1020
|
|
|
1021
1021
|
dispatchLink(url) {
|
|
1022
|
-
this
|
|
1022
|
+
this.editor.update(() => {
|
|
1023
|
+
const selection = $getSelection();
|
|
1024
|
+
if (!$isRangeSelection(selection)) return
|
|
1025
|
+
|
|
1026
|
+
if (selection.isCollapsed()) {
|
|
1027
|
+
const autoLinkNode = $createAutoLinkNode(url);
|
|
1028
|
+
const textNode = $createTextNode(url);
|
|
1029
|
+
autoLinkNode.append(textNode);
|
|
1030
|
+
selection.insertNodes([ autoLinkNode ]);
|
|
1031
|
+
} else {
|
|
1032
|
+
$toggleLink(url);
|
|
1033
|
+
}
|
|
1034
|
+
});
|
|
1023
1035
|
}
|
|
1024
1036
|
|
|
1025
1037
|
dispatchUnlink() {
|
|
@@ -1940,6 +1952,8 @@ class FormatEscaper {
|
|
|
1940
1952
|
|
|
1941
1953
|
const anchorNode = selection.anchor.getNode();
|
|
1942
1954
|
|
|
1955
|
+
if (!this.#isInsideBlockquote(anchorNode)) return false
|
|
1956
|
+
|
|
1943
1957
|
return this.#handleLists(event, anchorNode)
|
|
1944
1958
|
|| this.#handleBlockquotes(event, anchorNode)
|
|
1945
1959
|
}
|
|
@@ -1964,6 +1978,19 @@ class FormatEscaper {
|
|
|
1964
1978
|
return false
|
|
1965
1979
|
}
|
|
1966
1980
|
|
|
1981
|
+
#isInsideBlockquote(node) {
|
|
1982
|
+
let currentNode = node;
|
|
1983
|
+
|
|
1984
|
+
while (currentNode) {
|
|
1985
|
+
if ($isQuoteNode(currentNode)) {
|
|
1986
|
+
return true
|
|
1987
|
+
}
|
|
1988
|
+
currentNode = currentNode.getParent();
|
|
1989
|
+
}
|
|
1990
|
+
|
|
1991
|
+
return false
|
|
1992
|
+
}
|
|
1993
|
+
|
|
1967
1994
|
#shouldEscapeFromEmptyListItem(node) {
|
|
1968
1995
|
const listItem = this.#getListItemNode(node);
|
|
1969
1996
|
if (!listItem) return false
|