roosterjs-content-model-plugins 9.44.0 → 9.45.1
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/lib/announce/tableSelectionUtils.js +6 -9
- package/lib/announce/tableSelectionUtils.js.map +1 -1
- package/lib/autoFormat/AutoFormatPlugin.js +4 -4
- package/lib/autoFormat/AutoFormatPlugin.js.map +1 -1
- package/lib/autoFormat/numbers/transformOrdinals.js +3 -2
- package/lib/autoFormat/numbers/transformOrdinals.js.map +1 -1
- package/lib/edit/deleteSteps/deleteList.js +39 -9
- package/lib/edit/deleteSteps/deleteList.js.map +1 -1
- package/lib/findReplace/FindReplacePlugin.js +5 -4
- package/lib/findReplace/FindReplacePlugin.js.map +1 -1
- package/lib/imageEdit/utils/generateDataURL.js +4 -2
- package/lib/imageEdit/utils/generateDataURL.js.map +1 -1
- package/lib/tableEdit/TableEditPlugin.js +4 -4
- package/lib/tableEdit/TableEditPlugin.js.map +1 -1
- package/lib/tableEdit/editors/TableEditor.d.ts +4 -0
- package/lib/tableEdit/editors/TableEditor.js +38 -1
- package/lib/tableEdit/editors/TableEditor.js.map +1 -1
- package/lib/tableEdit/editors/features/CellResizer.d.ts +1 -0
- package/lib/tableEdit/editors/features/CellResizer.js +83 -47
- package/lib/tableEdit/editors/features/CellResizer.js.map +1 -1
- package/lib/tableEdit/editors/features/TableEditFeatureName.d.ts +1 -1
- package/lib/tableEdit/editors/features/TableEditFeatureName.js.map +1 -1
- package/lib/tableEdit/editors/features/TableMover.js +2 -2
- package/lib/tableEdit/editors/features/TableMover.js.map +1 -1
- package/lib/tableEdit/editors/features/TableRowColumnSelector.d.ts +42 -0
- package/lib/tableEdit/editors/features/TableRowColumnSelector.js +223 -0
- package/lib/tableEdit/editors/features/TableRowColumnSelector.js.map +1 -0
- package/lib/tableEdit/editors/utils/getTableFromContentModel.js +1 -0
- package/lib/tableEdit/editors/utils/getTableFromContentModel.js.map +1 -1
- package/lib/touch/TouchPlugin.js +54 -52
- package/lib/touch/TouchPlugin.js.map +1 -1
- package/lib-amd/announce/tableSelectionUtils.js +6 -9
- package/lib-amd/announce/tableSelectionUtils.js.map +1 -1
- package/lib-amd/autoFormat/AutoFormatPlugin.js +4 -4
- package/lib-amd/autoFormat/AutoFormatPlugin.js.map +1 -1
- package/lib-amd/autoFormat/numbers/transformOrdinals.js +3 -2
- package/lib-amd/autoFormat/numbers/transformOrdinals.js.map +1 -1
- package/lib-amd/edit/deleteSteps/deleteList.js +39 -10
- package/lib-amd/edit/deleteSteps/deleteList.js.map +1 -1
- package/lib-amd/findReplace/FindReplacePlugin.js +5 -4
- package/lib-amd/findReplace/FindReplacePlugin.js.map +1 -1
- package/lib-amd/imageEdit/utils/generateDataURL.js +4 -2
- package/lib-amd/imageEdit/utils/generateDataURL.js.map +1 -1
- package/lib-amd/tableEdit/TableEditPlugin.js +4 -4
- package/lib-amd/tableEdit/TableEditPlugin.js.map +1 -1
- package/lib-amd/tableEdit/editors/TableEditor.d.ts +4 -0
- package/lib-amd/tableEdit/editors/TableEditor.js +38 -2
- package/lib-amd/tableEdit/editors/TableEditor.js.map +1 -1
- package/lib-amd/tableEdit/editors/features/CellResizer.d.ts +1 -0
- package/lib-amd/tableEdit/editors/features/CellResizer.js +83 -47
- package/lib-amd/tableEdit/editors/features/CellResizer.js.map +1 -1
- package/lib-amd/tableEdit/editors/features/TableEditFeatureName.d.ts +1 -1
- package/lib-amd/tableEdit/editors/features/TableEditFeatureName.js.map +1 -1
- package/lib-amd/tableEdit/editors/features/TableMover.js +2 -2
- package/lib-amd/tableEdit/editors/features/TableMover.js.map +1 -1
- package/lib-amd/tableEdit/editors/features/TableRowColumnSelector.d.ts +42 -0
- package/lib-amd/tableEdit/editors/features/TableRowColumnSelector.js +221 -0
- package/lib-amd/tableEdit/editors/features/TableRowColumnSelector.js.map +1 -0
- package/lib-amd/tableEdit/editors/utils/getTableFromContentModel.js +1 -0
- package/lib-amd/tableEdit/editors/utils/getTableFromContentModel.js.map +1 -1
- package/lib-amd/touch/TouchPlugin.js +54 -52
- package/lib-amd/touch/TouchPlugin.js.map +1 -1
- package/lib-mjs/announce/tableSelectionUtils.js +6 -9
- package/lib-mjs/announce/tableSelectionUtils.js.map +1 -1
- package/lib-mjs/autoFormat/AutoFormatPlugin.js +4 -4
- package/lib-mjs/autoFormat/AutoFormatPlugin.js.map +1 -1
- package/lib-mjs/autoFormat/numbers/transformOrdinals.js +3 -2
- package/lib-mjs/autoFormat/numbers/transformOrdinals.js.map +1 -1
- package/lib-mjs/edit/deleteSteps/deleteList.js +40 -10
- package/lib-mjs/edit/deleteSteps/deleteList.js.map +1 -1
- package/lib-mjs/findReplace/FindReplacePlugin.js +5 -4
- package/lib-mjs/findReplace/FindReplacePlugin.js.map +1 -1
- package/lib-mjs/imageEdit/utils/generateDataURL.js +4 -2
- package/lib-mjs/imageEdit/utils/generateDataURL.js.map +1 -1
- package/lib-mjs/tableEdit/TableEditPlugin.js +4 -4
- package/lib-mjs/tableEdit/TableEditPlugin.js.map +1 -1
- package/lib-mjs/tableEdit/editors/TableEditor.d.ts +4 -0
- package/lib-mjs/tableEdit/editors/TableEditor.js +38 -1
- package/lib-mjs/tableEdit/editors/TableEditor.js.map +1 -1
- package/lib-mjs/tableEdit/editors/features/CellResizer.d.ts +1 -0
- package/lib-mjs/tableEdit/editors/features/CellResizer.js +84 -48
- package/lib-mjs/tableEdit/editors/features/CellResizer.js.map +1 -1
- package/lib-mjs/tableEdit/editors/features/TableEditFeatureName.d.ts +1 -1
- package/lib-mjs/tableEdit/editors/features/TableEditFeatureName.js.map +1 -1
- package/lib-mjs/tableEdit/editors/features/TableMover.js +2 -2
- package/lib-mjs/tableEdit/editors/features/TableMover.js.map +1 -1
- package/lib-mjs/tableEdit/editors/features/TableRowColumnSelector.d.ts +42 -0
- package/lib-mjs/tableEdit/editors/features/TableRowColumnSelector.js +216 -0
- package/lib-mjs/tableEdit/editors/features/TableRowColumnSelector.js.map +1 -0
- package/lib-mjs/tableEdit/editors/utils/getTableFromContentModel.js +1 -0
- package/lib-mjs/tableEdit/editors/utils/getTableFromContentModel.js.map +1 -1
- package/lib-mjs/touch/TouchPlugin.js +54 -52
- package/lib-mjs/touch/TouchPlugin.js.map +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TouchPlugin.js","sourceRoot":"","sources":["../../../../packages/roosterjs-content-model-plugins/lib/touch/TouchPlugin.ts"],"names":[],"mappings":"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","sourcesContent":["import type { EditorPlugin, IEditor, PluginEvent } from 'roosterjs-content-model-types';\nimport { getNodePositionFromEvent } from '../utils/getNodePositionFromEvent';\n\nconst MAX_TOUCH_MOVE_DISTANCE = 6; // the max number of offsets for the touch selection to move\nconst POINTER_DETECTION_DELAY = 150; // Delay time to wait for selection to be updated and also detect if pointerup is a tap or part of double tap\nconst PUNCTUATION_MATCHING_REGEX = /[.,;:!]/;\nconst SPACE_MATCHING_REGEX = /\\s/;\n\n/**\n * Touch plugin to manage touch behaviors\n */\nexport class TouchPlugin implements EditorPlugin {\n private editor: IEditor | null = null;\n private timer = 0;\n private isDblClicked: boolean = false;\n private isTouchPenPointerEvent: boolean = false;\n\n /**\n * Create an instance of Touch plugin\n */\n constructor() {}\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'Touch';\n }\n\n /**\n * Initialize this plugin. This should only be called from Editor\n * @param editor Editor instance\n */\n initialize(editor: IEditor) {\n this.editor = editor;\n this.isDblClicked = false;\n }\n\n /**\n * Dispose this plugin\n */\n dispose() {\n if (this.timer) {\n this.editor?.getDocument()?.defaultView?.clearTimeout(this.timer);\n this.timer = 0;\n }\n this.editor = null;\n }\n\n /**\n * Handle events triggered from editor\n * @param event PluginEvent object\n */\n onPluginEvent(event: PluginEvent) {\n if (!this.editor) {\n return;\n }\n switch (event.eventType) {\n case 'pointerDown':\n this.isDblClicked = false;\n this.isTouchPenPointerEvent = true;\n event.originalEvent.preventDefault();\n\n const targetWindow = this.editor.getDocument()?.defaultView || window;\n if (this.timer) {\n targetWindow.clearTimeout(this.timer);\n }\n\n this.timer = targetWindow.setTimeout(() => {\n this.timer = 0;\n\n if (this.editor) {\n if (!this.isDblClicked) {\n this.editor.focus();\n const caretPosition = getNodePositionFromEvent(\n this.editor,\n event.rawEvent.x,\n event.rawEvent.y\n );\n\n const newRange = this.editor.getDocument().createRange();\n if (caretPosition) {\n const { node, offset } = caretPosition;\n\n // Place cursor at same position of browser handler by default\n newRange.setStart(node, offset);\n newRange.setEnd(node, offset);\n\n const nodeTextContent = node.textContent || '';\n const charAtSelection = nodeTextContent[offset];\n if (\n node.nodeType === Node.TEXT_NODE &&\n charAtSelection &&\n !SPACE_MATCHING_REGEX.test(charAtSelection) &&\n !PUNCTUATION_MATCHING_REGEX.test(charAtSelection)\n ) {\n const { wordStart, wordEnd } = findWordBoundaries(\n nodeTextContent,\n offset\n );\n\n // Move cursor to the calculated offset\n const leftCursorWordLength = offset - wordStart;\n const rightCursorWordLength = wordEnd - offset;\n let movingOffset: number =\n leftCursorWordLength >= rightCursorWordLength\n ? rightCursorWordLength\n : -leftCursorWordLength;\n movingOffset =\n Math.abs(movingOffset) > MAX_TOUCH_MOVE_DISTANCE\n ? 0\n : movingOffset;\n const newOffsetPosition = offset + movingOffset;\n if (\n movingOffset !== 0 &&\n nodeTextContent.length >= newOffsetPosition\n ) {\n newRange.setStart(node, newOffsetPosition);\n newRange.setEnd(node, newOffsetPosition);\n }\n }\n }\n this.editor.setDOMSelection({\n type: 'range',\n range: newRange,\n isReverted: false,\n });\n\n // reset values\n this.isTouchPenPointerEvent = false;\n }\n }\n }, POINTER_DETECTION_DELAY);\n break;\n case 'doubleClick':\n if (this.isTouchPenPointerEvent) {\n event.rawEvent.preventDefault();\n\n this.isDblClicked = true;\n const caretPosition = getNodePositionFromEvent(\n this.editor,\n event.rawEvent.x,\n event.rawEvent.y\n );\n\n if (caretPosition) {\n const { node, offset } = caretPosition;\n\n if (node.nodeType !== Node.TEXT_NODE) {\n return;\n }\n\n const nodeTextContent = node.nodeValue || '';\n const char = nodeTextContent.charAt(offset);\n\n // Check if the clicked character is a punctuation mark, then highlight that character only\n if (PUNCTUATION_MATCHING_REGEX.test(char)) {\n const newRange = this.editor.getDocument()?.createRange();\n if (newRange) {\n newRange.setStart(node, offset);\n newRange.setEnd(node, offset + 1);\n this.editor.setDOMSelection({\n type: 'range',\n range: newRange,\n isReverted: false,\n });\n }\n } else if (SPACE_MATCHING_REGEX.test(char)) {\n // If the clicked character is an open space with no word of right side\n const rightSideOfChar = nodeTextContent.substring(\n offset,\n nodeTextContent.length\n );\n const isRightSideAllSpaces =\n rightSideOfChar.length > 0 && !/\\S/.test(rightSideOfChar);\n if (isRightSideAllSpaces) {\n // select the first space only\n let start = offset;\n while (\n start > 0 &&\n SPACE_MATCHING_REGEX.test(nodeTextContent.charAt(start - 1))\n ) {\n start--;\n }\n const newRange = this.editor.getDocument()?.createRange();\n if (newRange) {\n newRange.setStart(node, start);\n newRange.setEnd(node, start + 1);\n this.editor.setDOMSelection({\n type: 'range',\n range: newRange,\n isReverted: false,\n });\n }\n }\n } else {\n const { wordStart, wordEnd } = findWordBoundaries(\n nodeTextContent,\n offset\n );\n const newRange = this.editor.getDocument()?.createRange();\n if (newRange) {\n newRange.setStart(node, wordStart);\n newRange.setEnd(node, wordEnd);\n this.editor.setDOMSelection({\n type: 'range',\n range: newRange,\n isReverted: false,\n });\n }\n }\n }\n }\n break;\n }\n }\n}\n\n/**\n * @internal\n * Finds the start and end indices of the word at the given offset in the text.\n * @param text The string to search within.\n * @param offset The index within the string to find the word boundaries around.\n * @returns An object containing wordStart and wordEnd indices.\n */\nfunction findWordBoundaries(text: string, offset: number) {\n let start = offset;\n let end = offset;\n\n // Move start backwards to find word start\n while (\n start > 0 &&\n !SPACE_MATCHING_REGEX.test(text[start - 1]) &&\n !PUNCTUATION_MATCHING_REGEX.test(text[start - 1])\n ) {\n start--;\n }\n\n // Move end forward to find word end\n while (\n end < text.length &&\n !SPACE_MATCHING_REGEX.test(text[end]) &&\n !PUNCTUATION_MATCHING_REGEX.test(text[end])\n ) {\n end++;\n }\n\n return {\n wordStart: start,\n wordEnd: end,\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"TouchPlugin.js","sourceRoot":"","sources":["../../../../packages/roosterjs-content-model-plugins/lib/touch/TouchPlugin.ts"],"names":[],"mappings":"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","sourcesContent":["import { getNodePositionFromEvent } from '../utils/getNodePositionFromEvent';\nimport type { EditorPlugin, IEditor, PluginEvent } from 'roosterjs-content-model-types';\n\nconst MAX_TOUCH_MOVE_DISTANCE = 6; // the max number of offsets for the touch selection to move\nconst POINTER_DETECTION_DELAY = 150; // Delay time to wait for selection to be updated and also detect if pointerup is a tap or part of double tap\nconst PUNCTUATION_MATCHING_REGEX = /[.,;:!]/;\nconst SPACE_MATCHING_REGEX = /\\s/;\n\n/**\n * Touch plugin to manage touch behaviors\n */\nexport class TouchPlugin implements EditorPlugin {\n private editor: IEditor | null = null;\n private timer = 0;\n private isDblClicked: boolean = false;\n private isTouchPenPointerEvent: boolean = false;\n\n /**\n * Create an instance of Touch plugin\n */\n constructor() {}\n\n /**\n * Get a friendly name of this plugin\n */\n getName() {\n return 'Touch';\n }\n\n /**\n * Initialize this plugin. This should only be called from Editor\n * @param editor Editor instance\n */\n initialize(editor: IEditor) {\n this.editor = editor;\n this.isDblClicked = false;\n }\n\n /**\n * Dispose this plugin\n */\n dispose() {\n if (this.timer) {\n this.editor?.getDocument()?.defaultView?.clearTimeout(this.timer);\n this.timer = 0;\n }\n this.editor = null;\n }\n\n /**\n * Handle events triggered from editor\n * @param event PluginEvent object\n */\n onPluginEvent(event: PluginEvent) {\n if (!this.editor) {\n return;\n }\n switch (event.eventType) {\n case 'pointerDown':\n this.isDblClicked = false;\n this.isTouchPenPointerEvent = true;\n event.originalEvent.preventDefault();\n\n const targetWindow = this.editor.getDocument().defaultView;\n\n if (targetWindow) {\n if (this.timer) {\n targetWindow.clearTimeout(this.timer);\n }\n\n this.timer = targetWindow.setTimeout(() => {\n this.timer = 0;\n\n if (this.editor) {\n if (!this.isDblClicked) {\n this.editor.focus();\n const caretPosition = getNodePositionFromEvent(\n this.editor,\n event.rawEvent.x,\n event.rawEvent.y\n );\n\n const newRange = this.editor.getDocument().createRange();\n if (caretPosition) {\n const { node, offset } = caretPosition;\n\n // Place cursor at same position of browser handler by default\n newRange.setStart(node, offset);\n newRange.setEnd(node, offset);\n\n const nodeTextContent = node.textContent || '';\n const charAtSelection = nodeTextContent[offset];\n if (\n node.nodeType === Node.TEXT_NODE &&\n charAtSelection &&\n !SPACE_MATCHING_REGEX.test(charAtSelection) &&\n !PUNCTUATION_MATCHING_REGEX.test(charAtSelection)\n ) {\n const { wordStart, wordEnd } = findWordBoundaries(\n nodeTextContent,\n offset\n );\n\n // Move cursor to the calculated offset\n const leftCursorWordLength = offset - wordStart;\n const rightCursorWordLength = wordEnd - offset;\n let movingOffset: number =\n leftCursorWordLength >= rightCursorWordLength\n ? rightCursorWordLength\n : -leftCursorWordLength;\n movingOffset =\n Math.abs(movingOffset) > MAX_TOUCH_MOVE_DISTANCE\n ? 0\n : movingOffset;\n const newOffsetPosition = offset + movingOffset;\n if (\n movingOffset !== 0 &&\n nodeTextContent.length >= newOffsetPosition\n ) {\n newRange.setStart(node, newOffsetPosition);\n newRange.setEnd(node, newOffsetPosition);\n }\n }\n }\n this.editor.setDOMSelection({\n type: 'range',\n range: newRange,\n isReverted: false,\n });\n\n // reset values\n this.isTouchPenPointerEvent = false;\n }\n }\n }, POINTER_DETECTION_DELAY);\n }\n break;\n case 'doubleClick':\n if (this.isTouchPenPointerEvent) {\n event.rawEvent.preventDefault();\n\n this.isDblClicked = true;\n const caretPosition = getNodePositionFromEvent(\n this.editor,\n event.rawEvent.x,\n event.rawEvent.y\n );\n\n if (caretPosition) {\n const { node, offset } = caretPosition;\n\n if (node.nodeType !== Node.TEXT_NODE) {\n return;\n }\n\n const nodeTextContent = node.nodeValue || '';\n const char = nodeTextContent.charAt(offset);\n\n // Check if the clicked character is a punctuation mark, then highlight that character only\n if (PUNCTUATION_MATCHING_REGEX.test(char)) {\n const newRange = this.editor.getDocument()?.createRange();\n if (newRange) {\n newRange.setStart(node, offset);\n newRange.setEnd(node, offset + 1);\n this.editor.setDOMSelection({\n type: 'range',\n range: newRange,\n isReverted: false,\n });\n }\n } else if (SPACE_MATCHING_REGEX.test(char)) {\n // If the clicked character is an open space with no word of right side\n const rightSideOfChar = nodeTextContent.substring(\n offset,\n nodeTextContent.length\n );\n const isRightSideAllSpaces =\n rightSideOfChar.length > 0 && !/\\S/.test(rightSideOfChar);\n if (isRightSideAllSpaces) {\n // select the first space only\n let start = offset;\n while (\n start > 0 &&\n SPACE_MATCHING_REGEX.test(nodeTextContent.charAt(start - 1))\n ) {\n start--;\n }\n const newRange = this.editor.getDocument()?.createRange();\n if (newRange) {\n newRange.setStart(node, start);\n newRange.setEnd(node, start + 1);\n this.editor.setDOMSelection({\n type: 'range',\n range: newRange,\n isReverted: false,\n });\n }\n }\n } else {\n const { wordStart, wordEnd } = findWordBoundaries(\n nodeTextContent,\n offset\n );\n const newRange = this.editor.getDocument()?.createRange();\n if (newRange) {\n newRange.setStart(node, wordStart);\n newRange.setEnd(node, wordEnd);\n this.editor.setDOMSelection({\n type: 'range',\n range: newRange,\n isReverted: false,\n });\n }\n }\n }\n }\n break;\n }\n }\n}\n\n/**\n * @internal\n * Finds the start and end indices of the word at the given offset in the text.\n * @param text The string to search within.\n * @param offset The index within the string to find the word boundaries around.\n * @returns An object containing wordStart and wordEnd indices.\n */\nfunction findWordBoundaries(text: string, offset: number) {\n let start = offset;\n let end = offset;\n\n // Move start backwards to find word start\n while (\n start > 0 &&\n !SPACE_MATCHING_REGEX.test(text[start - 1]) &&\n !PUNCTUATION_MATCHING_REGEX.test(text[start - 1])\n ) {\n start--;\n }\n\n // Move end forward to find word end\n while (\n end < text.length &&\n !SPACE_MATCHING_REGEX.test(text[end]) &&\n !PUNCTUATION_MATCHING_REGEX.test(text[end])\n ) {\n end++;\n }\n\n return {\n wordStart: start,\n wordEnd: end,\n };\n}\n"]}
|
package/package.json
CHANGED
|
@@ -3,18 +3,18 @@
|
|
|
3
3
|
"description": "Plugins for roosterjs",
|
|
4
4
|
"dependencies": {
|
|
5
5
|
"tslib": "^2.3.1",
|
|
6
|
-
"roosterjs-content-model-core": "^9.
|
|
7
|
-
"roosterjs-content-model-dom": "^9.
|
|
8
|
-
"roosterjs-content-model-types": "^9.
|
|
9
|
-
"roosterjs-content-model-api": "^9.
|
|
6
|
+
"roosterjs-content-model-core": "^9.45.1",
|
|
7
|
+
"roosterjs-content-model-dom": "^9.45.1",
|
|
8
|
+
"roosterjs-content-model-types": "^9.45.1",
|
|
9
|
+
"roosterjs-content-model-api": "^9.45.1"
|
|
10
10
|
},
|
|
11
|
-
"version": "9.
|
|
11
|
+
"version": "9.45.1",
|
|
12
12
|
"main": "./lib/index.js",
|
|
13
13
|
"typings": "./lib/index.d.ts",
|
|
14
14
|
"module": "./lib-mjs/index.js",
|
|
15
15
|
"license": "MIT",
|
|
16
16
|
"repository": {
|
|
17
17
|
"type": "git",
|
|
18
|
-
"url": "https://github.com/Microsoft/roosterjs"
|
|
18
|
+
"url": "git+https://github.com/Microsoft/roosterjs.git"
|
|
19
19
|
}
|
|
20
20
|
}
|