roosterjs 9.46.0 → 9.47.0

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/rooster.js CHANGED
@@ -12428,7 +12428,8 @@ var TextMutationObserverImpl = /** @class */ (function () {
12428
12428
  continue;
12429
12429
  }
12430
12430
  else if (!includedNodes.has(target)) {
12431
- if ((0, roosterjs_content_model_dom_1.findClosestEntityWrapper)(target, _this.domHelper) ||
12431
+ if (!_this.domHelper.isNodeInEditor(target) ||
12432
+ (0, roosterjs_content_model_dom_1.findClosestEntityWrapper)(target, _this.domHelper) ||
12432
12433
  (0, roosterjs_content_model_dom_1.findClosestBlockEntityContainer)(target, _this.domHelper)) {
12433
12434
  ignoredNodes.add(target);
12434
12435
  continue;
@@ -14761,7 +14762,9 @@ var SelectionPlugin = /** @class */ (function () {
14761
14762
  rawEvent.preventDefault();
14762
14763
  }
14763
14764
  else {
14764
- win === null || win === void 0 ? void 0 : win.requestAnimationFrame(function () { return _this.handleSelectionInTable(key); });
14765
+ win === null || win === void 0 ? void 0 : win.requestAnimationFrame(function () {
14766
+ return _this.handleSelectionInTable(key, selection.range);
14767
+ });
14765
14768
  }
14766
14769
  }
14767
14770
  }
@@ -14810,7 +14813,7 @@ var SelectionPlugin = /** @class */ (function () {
14810
14813
  SelectionPlugin.prototype.getTabKey = function (rawEvent) {
14811
14814
  return rawEvent.shiftKey ? 'TabLeft' : 'TabRight';
14812
14815
  };
14813
- SelectionPlugin.prototype.handleSelectionInTable = function (key) {
14816
+ SelectionPlugin.prototype.handleSelectionInTable = function (key, rangeBeforeChange) {
14814
14817
  var _a, _b, _c, _d, _e, _f;
14815
14818
  if (!this.editor || !this.state.tableSelection) {
14816
14819
  return;
@@ -14844,7 +14847,15 @@ var SelectionPlugin = /** @class */ (function () {
14844
14847
  }
14845
14848
  }
14846
14849
  if (collapsed && td) {
14847
- this.setRangeSelectionInTable(td, key == Up ? td.childNodes.length : 0, this.editor);
14850
+ var textOffset = (key == 'ArrowUp' || key == 'ArrowDown') && rangeBeforeChange
14851
+ ? this.getTextOffset(this.editor, rangeBeforeChange, td, key == 'ArrowUp')
14852
+ : null;
14853
+ if (textOffset) {
14854
+ this.setRangeSelectionInTable(textOffset.node, textOffset.offset, this.editor, false /* selectAll */);
14855
+ }
14856
+ else {
14857
+ this.setRangeSelectionInTable(td, 0, this.editor, false /* selectAll */);
14858
+ }
14848
14859
  }
14849
14860
  else if (!td && (lastCo.row == -1 || lastCo.row <= parsedTable.length)) {
14850
14861
  this.selectBeforeOrAfterElement(this.editor, table, change == 1 /* after */, change != 1 /* setSelectionInNextSiblingElement */);
@@ -14895,8 +14906,23 @@ var SelectionPlugin = /** @class */ (function () {
14895
14906
  }
14896
14907
  }
14897
14908
  };
14909
+ SelectionPlugin.prototype.getTextOffset = function (editor, range, td, isKeyUp) {
14910
+ var doc = editor.getDocument();
14911
+ var cursorRect = range
14912
+ ? (0, roosterjs_content_model_dom_1.getDOMInsertPointRect)(doc, {
14913
+ node: range.startContainer,
14914
+ offset: range.startOffset,
14915
+ })
14916
+ : undefined;
14917
+ var rect = td === null || td === void 0 ? void 0 : td.getBoundingClientRect();
14918
+ var textOffset = cursorRect && rect
14919
+ ? (0, roosterjs_content_model_dom_1.getNodePositionFromEvent)(doc, editor.getDOMHelper(), cursorRect.left, isKeyUp ? rect.top - 1 : rect.top + 1)
14920
+ : null;
14921
+ return textOffset;
14922
+ };
14898
14923
  SelectionPlugin.prototype.setRangeSelectionInTable = function (cell, nodeOffset, editor, selectAll) {
14899
- var range = editor.getDocument().createRange();
14924
+ var doc = editor.getDocument();
14925
+ var range = doc.createRange();
14900
14926
  if (selectAll && cell.firstChild && cell.lastChild) {
14901
14927
  var cellStart = cell.firstChild;
14902
14928
  var cellEnd = cell.lastChild;
@@ -19681,6 +19707,52 @@ function getAllowedCustomType(type, allowedCustomPasteType) {
19681
19707
  }
19682
19708
 
19683
19709
 
19710
+ /***/ },
19711
+
19712
+ /***/ "./packages/roosterjs-content-model-dom/lib/domUtils/event/getNodePositionFromEvent.ts"
19713
+ /*!*********************************************************************************************!*\
19714
+ !*** ./packages/roosterjs-content-model-dom/lib/domUtils/event/getNodePositionFromEvent.ts ***!
19715
+ \*********************************************************************************************/
19716
+ (__unused_webpack_module, exports) {
19717
+
19718
+ "use strict";
19719
+
19720
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
19721
+ exports.getNodePositionFromEvent = void 0;
19722
+ /**
19723
+ * Get insertion point from coordinate.
19724
+ * @param doc Parent document object
19725
+ * @param domHelper The DOM helper of the editor
19726
+ * @param x The cursor coordinate for the x-axis
19727
+ * @param y The cursor coordinate for the y-axis
19728
+ */
19729
+ function getNodePositionFromEvent(doc, domHelper, x, y) {
19730
+ if ('caretPositionFromPoint' in doc) {
19731
+ // Firefox, Chrome, Edge, Safari, Opera
19732
+ var pos = doc.caretPositionFromPoint(x, y);
19733
+ if (pos && domHelper.isNodeInEditor(pos.offsetNode)) {
19734
+ return { node: pos.offsetNode, offset: pos.offset };
19735
+ }
19736
+ }
19737
+ if (doc.caretRangeFromPoint) {
19738
+ // Safari
19739
+ var range = doc.caretRangeFromPoint(x, y);
19740
+ if (range && domHelper.isNodeInEditor(range.startContainer)) {
19741
+ return { node: range.startContainer, offset: range.startOffset };
19742
+ }
19743
+ }
19744
+ if (doc.elementFromPoint) {
19745
+ // Fallback
19746
+ var element = doc.elementFromPoint(x, y);
19747
+ if (element && domHelper.isNodeInEditor(element)) {
19748
+ return { node: element, offset: 0 };
19749
+ }
19750
+ }
19751
+ return null;
19752
+ }
19753
+ exports.getNodePositionFromEvent = getNodePositionFromEvent;
19754
+
19755
+
19684
19756
  /***/ },
19685
19757
 
19686
19758
  /***/ "./packages/roosterjs-content-model-dom/lib/domUtils/getObjectKeys.ts"
@@ -23511,8 +23583,8 @@ exports.shouldSetValue = shouldSetValue;
23511
23583
  Object.defineProperty(exports, "__esModule", ({ value: true }));
23512
23584
  exports.createImage = exports.createText = exports.createTableCell = exports.createTable = exports.createSelectionMarker = exports.createParagraph = exports.createFormatContainer = exports.createListItem = exports.createBr = exports.isLinkUndeletable = exports.setLinkUndeletable = exports.scrollRectIntoView = exports.normalizeRect = exports.isWhiteSpacePreserved = exports.reuseCachedElement = exports.findClosestBlockEntityContainer = exports.isBlockEntityContainer = exports.isEntityDelimiter = exports.addDelimiters = exports.generateEntityClassNames = exports.parseEntityFormat = exports.getAllEntityWrappers = exports.findClosestEntityWrapper = exports.isEntityElement = exports.unwrap = exports.wrap = exports.wrapAllChildNodes = exports.moveChildNodes = exports.toArray = exports.getSafeIdSelector = exports.getObjectKeys = exports.isElementOfType = exports.isNodeOfType = exports.hasMetadata = exports.getMetadata = exports.updateMetadata = exports.buildSelectionMarker = exports.isBlockElement = exports.areSameFormats = exports.parseFormat = exports.getRegularSelectionOffsets = exports.formatContainerProcessor = exports.tableProcessor = exports.entityProcessor = exports.processChildNode = exports.handleRegularSelection = exports.childProcessor = exports.contentModelToText = exports.contentModelToDom = exports.domToContentModel = void 0;
23513
23585
  exports.trimModelForSelection = exports.getDOMInsertPointRect = exports.getSelectionRootNode = exports.isBold = exports.createModelToDomConfig = exports.createModelToDomContextWithConfig = exports.createModelToDomContext = exports.createDomToModelConfig = exports.createDomToModelContextWithConfig = exports.createDomToModelContext = exports.defaultGenerateColorKey = exports.parseColor = exports.setColor = exports.getColor = exports.DeprecatedColors = exports.BorderKeys = exports.parseValueWithUnit = exports.getAutoListStyleType = exports.getOrderedListNumberStr = exports.ParagraphFormats = exports.ListFormatsToMove = exports.ListFormatsToKeep = exports.ListFormats = exports.copyFormat = exports.setParagraphNotImplicit = exports.normalizeSegmentFormat = exports.mergeTextSegments = exports.normalizeSingleSegment = exports.isEmpty = exports.addSegment = exports.unwrapBlock = exports.isGeneralSegment = exports.normalizeContentModel = exports.normalizeParagraph = exports.addTextSegment = exports.addLink = exports.addCode = exports.addBlock = exports.mutateSegment = exports.mutateSegments = exports.mutateBlock = exports.createTableRow = exports.createEmptyModel = exports.createListLevel = exports.createDivider = exports.createEntity = exports.createGeneralBlock = exports.createGeneralSegment = exports.createParagraphDecorator = exports.createContentModelDocument = void 0;
23514
- exports.updateImageMetadata = exports.runEditSteps = exports.getClosestAncestorBlockGroupIndex = exports.getSegmentTextFormat = exports.getListStyleTypeFromString = exports.retrieveModelFormatState = exports.setTableCellBackgroundColor = exports.MIN_ALLOWED_TABLE_CELL_HEIGHT = exports.MIN_ALLOWED_TABLE_CELL_WIDTH = exports.normalizeTable = exports.setFirstColumnFormatBorders = exports.applyTableFormat = exports.deleteBlock = exports.deleteSegment = exports.deleteSelection = exports.mergeModel = exports.cloneModel = exports.setSelection = exports.hasSelectionInBlockGroup = exports.hasSelectionInSegment = exports.hasSelectionInBlock = exports.getSelectedCells = exports.getSelectedSegmentsAndParagraphs = exports.getSelectedSegments = exports.getSelectedParagraphs = exports.getOperationalBlocks = exports.getFirstSelectedTable = exports.getFirstSelectedListItem = exports.iterateSelections = exports.isBlockGroupOfType = exports.getRangesByText = exports.getImageState = exports.setImageState = exports.getParagraphMarker = exports.setParagraphMarker = exports.cacheGetEventData = exports.extractClipboardItems = exports.normalizeFontFamily = exports.transformColor = exports.retrieveDocumentMetadata = exports.readFile = exports.parseTableCells = exports.normalizeText = exports.isSpace = exports.isPunctuation = exports.extractBorderValues = exports.combineBorderValue = exports.isCursorMovingKey = exports.isModifierKey = exports.isCharacterValue = void 0;
23515
- exports.EmptySegmentFormat = exports.UnorderedListStyleMap = exports.OrderedListStyleMap = exports.TableBorderFormat = exports.NumberingListType = exports.BulletListType = exports.ChangeSource = exports.ListMetadataDefinition = exports.getListMetadata = exports.updateListMetadata = exports.getTableMetadata = exports.updateTableMetadata = exports.getTableCellMetadata = exports.updateTableCellMetadata = exports.getImageMetadata = void 0;
23586
+ exports.runEditSteps = exports.getClosestAncestorBlockGroupIndex = exports.getSegmentTextFormat = exports.getListStyleTypeFromString = exports.retrieveModelFormatState = exports.setTableCellBackgroundColor = exports.MIN_ALLOWED_TABLE_CELL_HEIGHT = exports.MIN_ALLOWED_TABLE_CELL_WIDTH = exports.normalizeTable = exports.setFirstColumnFormatBorders = exports.applyTableFormat = exports.deleteBlock = exports.deleteSegment = exports.deleteSelection = exports.mergeModel = exports.cloneModel = exports.setSelection = exports.hasSelectionInBlockGroup = exports.hasSelectionInSegment = exports.hasSelectionInBlock = exports.getSelectedCells = exports.getSelectedSegmentsAndParagraphs = exports.getSelectedSegments = exports.getSelectedParagraphs = exports.getOperationalBlocks = exports.getFirstSelectedTable = exports.getFirstSelectedListItem = exports.iterateSelections = exports.isBlockGroupOfType = exports.getRangesByText = exports.getImageState = exports.setImageState = exports.getParagraphMarker = exports.setParagraphMarker = exports.cacheGetEventData = exports.extractClipboardItems = exports.normalizeFontFamily = exports.transformColor = exports.retrieveDocumentMetadata = exports.readFile = exports.parseTableCells = exports.normalizeText = exports.isSpace = exports.isPunctuation = exports.extractBorderValues = exports.combineBorderValue = exports.getNodePositionFromEvent = exports.isCursorMovingKey = exports.isModifierKey = exports.isCharacterValue = void 0;
23587
+ exports.EmptySegmentFormat = exports.UnorderedListStyleMap = exports.OrderedListStyleMap = exports.TableBorderFormat = exports.NumberingListType = exports.BulletListType = exports.ChangeSource = exports.ListMetadataDefinition = exports.getListMetadata = exports.updateListMetadata = exports.getTableMetadata = exports.updateTableMetadata = exports.getTableCellMetadata = exports.updateTableCellMetadata = exports.getImageMetadata = exports.updateImageMetadata = void 0;
23516
23588
  var domToContentModel_1 = __webpack_require__(/*! ./domToModel/domToContentModel */ "./packages/roosterjs-content-model-dom/lib/domToModel/domToContentModel.ts");
23517
23589
  Object.defineProperty(exports, "domToContentModel", ({ enumerable: true, get: function () { return domToContentModel_1.domToContentModel; } }));
23518
23590
  var contentModelToDom_1 = __webpack_require__(/*! ./modelToDom/contentModelToDom */ "./packages/roosterjs-content-model-dom/lib/modelToDom/contentModelToDom.ts");
@@ -23689,6 +23761,8 @@ var eventUtils_1 = __webpack_require__(/*! ./domUtils/event/eventUtils */ "./pac
23689
23761
  Object.defineProperty(exports, "isCharacterValue", ({ enumerable: true, get: function () { return eventUtils_1.isCharacterValue; } }));
23690
23762
  Object.defineProperty(exports, "isModifierKey", ({ enumerable: true, get: function () { return eventUtils_1.isModifierKey; } }));
23691
23763
  Object.defineProperty(exports, "isCursorMovingKey", ({ enumerable: true, get: function () { return eventUtils_1.isCursorMovingKey; } }));
23764
+ var getNodePositionFromEvent_1 = __webpack_require__(/*! ./domUtils/event/getNodePositionFromEvent */ "./packages/roosterjs-content-model-dom/lib/domUtils/event/getNodePositionFromEvent.ts");
23765
+ Object.defineProperty(exports, "getNodePositionFromEvent", ({ enumerable: true, get: function () { return getNodePositionFromEvent_1.getNodePositionFromEvent; } }));
23692
23766
  var borderValues_1 = __webpack_require__(/*! ./domUtils/style/borderValues */ "./packages/roosterjs-content-model-dom/lib/domUtils/style/borderValues.ts");
23693
23767
  Object.defineProperty(exports, "combineBorderValue", ({ enumerable: true, get: function () { return borderValues_1.combineBorderValue; } }));
23694
23768
  Object.defineProperty(exports, "extractBorderValues", ({ enumerable: true, get: function () { return borderValues_1.extractBorderValues; } }));
@@ -29514,23 +29588,40 @@ var handleParagraph = function (doc, parent, paragraph, context, refNode) {
29514
29588
  segment: null,
29515
29589
  };
29516
29590
  var handleSegments = function () {
29591
+ var e_1, _a;
29592
+ var _b;
29517
29593
  var parent = container;
29518
29594
  if (parent) {
29519
29595
  var firstSegment = paragraph.segments[0];
29596
+ var segmentContext = context;
29520
29597
  if ((firstSegment === null || firstSegment === void 0 ? void 0 : firstSegment.segmentType) == 'SelectionMarker') {
29521
29598
  // Make sure there is a segment created before selection marker.
29522
29599
  // If selection marker is the first selected segment in a paragraph, create a dummy text node,
29523
29600
  // so after rewrite, the regularSelection object can have a valid segment object set to the text node.
29524
- context.modelHandlers.text(doc, parent, (0, tslib_1.__assign)((0, tslib_1.__assign)({}, firstSegment), { segmentType: 'Text', text: '' }), context, []);
29601
+ context.modelHandlers.text(doc, parent, (0, tslib_1.__assign)((0, tslib_1.__assign)({}, firstSegment), { segmentType: 'Text', text: '' }), segmentContext, []);
29525
29602
  }
29526
- paragraph.segments.forEach(function (segment) {
29603
+ for (var i = 0; i < paragraph.segments.length; i++) {
29604
+ var segment = paragraph.segments[i];
29605
+ segmentContext.noFollowingTextSegmentOrLast =
29606
+ i === paragraph.segments.length - 1 ||
29607
+ !hasTextSegmentAfter(paragraph.segments, i);
29527
29608
  var newSegments = [];
29528
- context.modelHandlers.segment(doc, parent, segment, context, newSegments);
29529
- newSegments.forEach(function (node) {
29530
- var _a;
29531
- (_a = context.domIndexer) === null || _a === void 0 ? void 0 : _a.onSegment(node, paragraph, [segment]);
29532
- });
29533
- });
29609
+ context.modelHandlers.segment(doc, parent, segment, segmentContext, newSegments);
29610
+ try {
29611
+ for (var newSegments_1 = (e_1 = void 0, (0, tslib_1.__values)(newSegments)), newSegments_1_1 = newSegments_1.next(); !newSegments_1_1.done; newSegments_1_1 = newSegments_1.next()) {
29612
+ var node = newSegments_1_1.value;
29613
+ (_b = context.domIndexer) === null || _b === void 0 ? void 0 : _b.onSegment(node, paragraph, [segment]);
29614
+ }
29615
+ }
29616
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
29617
+ finally {
29618
+ try {
29619
+ if (newSegments_1_1 && !newSegments_1_1.done && (_a = newSegments_1.return)) _a.call(newSegments_1);
29620
+ }
29621
+ finally { if (e_1) throw e_1.error; }
29622
+ }
29623
+ }
29624
+ delete segmentContext.noFollowingTextSegmentOrLast;
29534
29625
  }
29535
29626
  };
29536
29627
  if (needParagraphWrapper) {
@@ -29570,6 +29661,21 @@ var handleParagraph = function (doc, parent, paragraph, context, refNode) {
29570
29661
  return refNode;
29571
29662
  };
29572
29663
  exports.handleParagraph = handleParagraph;
29664
+ function hasTextSegmentAfter(segments, index) {
29665
+ for (var i = index + 1; i < segments.length; i++) {
29666
+ var type = segments[i].segmentType;
29667
+ if (type === 'SelectionMarker') {
29668
+ continue;
29669
+ }
29670
+ if (type === 'Text') {
29671
+ return true;
29672
+ }
29673
+ else {
29674
+ return false;
29675
+ }
29676
+ }
29677
+ return false;
29678
+ }
29573
29679
 
29574
29680
 
29575
29681
  /***/ },
@@ -29810,11 +29916,15 @@ exports.handleTable = handleTable;
29810
29916
  Object.defineProperty(exports, "__esModule", ({ value: true }));
29811
29917
  exports.handleText = void 0;
29812
29918
  var handleSegmentCommon_1 = __webpack_require__(/*! ../utils/handleSegmentCommon */ "./packages/roosterjs-content-model-dom/lib/modelToDom/utils/handleSegmentCommon.ts");
29919
+ var nonBreakingSpace = '\u00A0';
29813
29920
  /**
29814
29921
  * @internal
29815
29922
  */
29816
29923
  var handleText = function (doc, parent, segment, context, segmentNodes) {
29817
- var txt = doc.createTextNode(segment.text);
29924
+ var textContent = context.noFollowingTextSegmentOrLast && segment.text.endsWith(' ')
29925
+ ? segment.text.slice(0, -1) + nonBreakingSpace
29926
+ : segment.text;
29927
+ var txt = doc.createTextNode(textContent);
29818
29928
  var element = doc.createElement('span');
29819
29929
  parent.appendChild(element);
29820
29930
  element.appendChild(txt);
@@ -39245,6 +39355,7 @@ var getStyles_1 = __webpack_require__(/*! ../utils/getStyles */ "./packages/roos
39245
39355
  var listLevelParser_1 = __webpack_require__(/*! ../parsers/listLevelParser */ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/listLevelParser.ts");
39246
39356
  var processWordComments_1 = __webpack_require__(/*! ./processWordComments */ "./packages/roosterjs-content-model-plugins/lib/paste/WordDesktop/processWordComments.ts");
39247
39357
  var processWordLists_1 = __webpack_require__(/*! ./processWordLists */ "./packages/roosterjs-content-model-plugins/lib/paste/WordDesktop/processWordLists.ts");
39358
+ var adjustWordListMarginParser_1 = __webpack_require__(/*! ../parsers/adjustWordListMarginParser */ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/adjustWordListMarginParser.ts");
39248
39359
  var removeNegativeTextIndentParser_1 = __webpack_require__(/*! ../parsers/removeNegativeTextIndentParser */ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/removeNegativeTextIndentParser.ts");
39249
39360
  var setProcessor_1 = __webpack_require__(/*! ../utils/setProcessor */ "./packages/roosterjs-content-model-plugins/lib/paste/utils/setProcessor.ts");
39250
39361
  var wordContainerParser_1 = __webpack_require__(/*! ../parsers/wordContainerParser */ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/wordContainerParser.ts");
@@ -39261,6 +39372,7 @@ function processPastedContentFromWordDesktop(domToModelOption, htmlString) {
39261
39372
  (0, addParser_1.addParser)(domToModelOption, 'block', adjustPercentileLineHeightParser_1.adjustPercentileLineHeight);
39262
39373
  (0, addParser_1.addParser)(domToModelOption, 'block', removeNegativeTextIndentParser_1.removeNegativeTextIndentParser);
39263
39374
  (0, addParser_1.addParser)(domToModelOption, 'listItemElement', removeNegativeTextIndentParser_1.removeNegativeTextIndentParser);
39375
+ (0, addParser_1.addParser)(domToModelOption, 'listItemElement', adjustWordListMarginParser_1.adjustWordListMarginParser);
39264
39376
  (0, addParser_1.addParser)(domToModelOption, 'listLevel', listLevelParser_1.listLevelParser);
39265
39377
  (0, addParser_1.addParser)(domToModelOption, 'container', wordContainerParser_1.wordContainerParser);
39266
39378
  (0, addParser_1.addParser)(domToModelOption, 'table', wordTableParser_1.wordTableParser);
@@ -39685,6 +39797,42 @@ function adjustPercentileLineHeight(format, element) {
39685
39797
  exports.adjustPercentileLineHeight = adjustPercentileLineHeight;
39686
39798
 
39687
39799
 
39800
+ /***/ },
39801
+
39802
+ /***/ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/adjustWordListMarginParser.ts"
39803
+ /*!**************************************************************************************************!*\
39804
+ !*** ./packages/roosterjs-content-model-plugins/lib/paste/parsers/adjustWordListMarginParser.ts ***!
39805
+ \**************************************************************************************************/
39806
+ (__unused_webpack_module, exports, __webpack_require__) {
39807
+
39808
+ "use strict";
39809
+
39810
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
39811
+ exports.adjustWordListMarginParser = void 0;
39812
+ var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
39813
+ var MSO_LIST_PARAGRAPH_CLASS = 'MsoListParagraph';
39814
+ // Default list padding from the HTML user-agent stylesheet (paddingInlineStart for <ul>/<ol>)
39815
+ var DEFAULT_LIST_PADDING_INLINE_START = '40px';
39816
+ /**
39817
+ * @internal
39818
+ * Parser that subtracts the default list format (paddingInlineStart: 40px) from
39819
+ * the marginLeft of list item elements that have the MsoListParagraph class,
39820
+ * since Word adds the full indentation as margin on the paragraph, which
39821
+ * duplicates the padding the list element already provides.
39822
+ */
39823
+ var adjustWordListMarginParser = function (format, element) {
39824
+ if (element.classList.contains(MSO_LIST_PARAGRAPH_CLASS) && format.marginLeft) {
39825
+ var currentPx = (0, roosterjs_content_model_dom_1.parseValueWithUnit)(format.marginLeft, element);
39826
+ var defaultPx = (0, roosterjs_content_model_dom_1.parseValueWithUnit)(DEFAULT_LIST_PADDING_INLINE_START);
39827
+ var result = currentPx - defaultPx;
39828
+ if (result > 0) {
39829
+ format.marginLeft = result + "px";
39830
+ }
39831
+ }
39832
+ };
39833
+ exports.adjustWordListMarginParser = adjustWordListMarginParser;
39834
+
39835
+
39688
39836
  /***/ },
39689
39837
 
39690
39838
  /***/ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/blockElementParser.ts"
@@ -42570,7 +42718,6 @@ var createElement_1 = __webpack_require__(/*! ../../../pluginUtils/CreateElement
42570
42718
  var DragAndDropHelper_1 = __webpack_require__(/*! ../../../pluginUtils/DragAndDrop/DragAndDropHelper */ "./packages/roosterjs-content-model-plugins/lib/pluginUtils/DragAndDrop/DragAndDropHelper.ts");
42571
42719
  var roosterjs_content_model_api_1 = __webpack_require__(/*! roosterjs-content-model-api */ "./packages/roosterjs-content-model-api/lib/index.ts");
42572
42720
  var getTableFromContentModel_1 = __webpack_require__(/*! ../utils/getTableFromContentModel */ "./packages/roosterjs-content-model-plugins/lib/tableEdit/editors/utils/getTableFromContentModel.ts");
42573
- var getNodePositionFromEvent_1 = __webpack_require__(/*! ../../../utils/getNodePositionFromEvent */ "./packages/roosterjs-content-model-plugins/lib/utils/getNodePositionFromEvent.ts");
42574
42721
  var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
42575
42722
  var TABLE_MOVER_LENGTH = 12;
42576
42723
  /**
@@ -42698,7 +42845,7 @@ function onDragging(context, event, initValue) {
42698
42845
  // Move table outline rectangle
42699
42846
  tableRect.style.top = event.clientY + TABLE_MOVER_LENGTH + "px";
42700
42847
  tableRect.style.left = event.clientX + TABLE_MOVER_LENGTH + "px";
42701
- var pos = (0, getNodePositionFromEvent_1.getNodePositionFromEvent)(editor, event.clientX, event.clientY);
42848
+ var pos = (0, roosterjs_content_model_dom_1.getNodePositionFromEvent)(editor.getDocument(), editor.getDOMHelper(), event.clientX, event.clientY);
42702
42849
  if (pos) {
42703
42850
  var range = editor.getDocument().createRange();
42704
42851
  range.setStart(pos.node, pos.offset);
@@ -42738,7 +42885,7 @@ function onDragEnd(context, event, initValue) {
42738
42885
  }
42739
42886
  var insertionSuccess_1 = false;
42740
42887
  // Get position to insert table
42741
- var insertPosition = (0, getNodePositionFromEvent_1.getNodePositionFromEvent)(editor, event.clientX, event.clientY);
42888
+ var insertPosition = (0, roosterjs_content_model_dom_1.getNodePositionFromEvent)(editor.getDocument(), editor.getDOMHelper(), event.clientX, event.clientY);
42742
42889
  if (insertPosition) {
42743
42890
  // Move table to new position
42744
42891
  (0, roosterjs_content_model_api_1.formatInsertPointWithContentModel)(editor, insertPosition, function (model, context, ip) {
@@ -43275,7 +43422,7 @@ exports.getCMTableFromTable = getCMTableFromTable;
43275
43422
 
43276
43423
  Object.defineProperty(exports, "__esModule", ({ value: true }));
43277
43424
  exports.TouchPlugin = void 0;
43278
- var getNodePositionFromEvent_1 = __webpack_require__(/*! ../utils/getNodePositionFromEvent */ "./packages/roosterjs-content-model-plugins/lib/utils/getNodePositionFromEvent.ts");
43425
+ var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
43279
43426
  var MAX_TOUCH_MOVE_DISTANCE = 6; // the max number of offsets for the touch selection to move
43280
43427
  var 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
43281
43428
  var PUNCTUATION_MATCHING_REGEX = /[.,;:!]/;
@@ -43343,7 +43490,7 @@ var TouchPlugin = /** @class */ (function () {
43343
43490
  if (_this.editor) {
43344
43491
  if (!_this.isDblClicked) {
43345
43492
  _this.editor.focus();
43346
- var caretPosition = (0, getNodePositionFromEvent_1.getNodePositionFromEvent)(_this.editor, event.rawEvent.x, event.rawEvent.y);
43493
+ var caretPosition = (0, roosterjs_content_model_dom_1.getNodePositionFromEvent)(_this.editor.getDocument(), _this.editor.getDOMHelper(), event.rawEvent.x, event.rawEvent.y);
43347
43494
  var newRange = _this.editor.getDocument().createRange();
43348
43495
  if (caretPosition) {
43349
43496
  var node = caretPosition.node, offset = caretPosition.offset;
@@ -43391,7 +43538,7 @@ var TouchPlugin = /** @class */ (function () {
43391
43538
  if (this.isTouchPenPointerEvent) {
43392
43539
  event.rawEvent.preventDefault();
43393
43540
  this.isDblClicked = true;
43394
- var caretPosition = (0, getNodePositionFromEvent_1.getNodePositionFromEvent)(this.editor, event.rawEvent.x, event.rawEvent.y);
43541
+ var caretPosition = (0, roosterjs_content_model_dom_1.getNodePositionFromEvent)(this.editor.getDocument(), this.editor.getDOMHelper(), event.rawEvent.x, event.rawEvent.y);
43395
43542
  if (caretPosition) {
43396
43543
  var node = caretPosition.node, offset = caretPosition.offset;
43397
43544
  if (node.nodeType !== Node.TEXT_NODE) {
@@ -43485,50 +43632,6 @@ function findWordBoundaries(text, offset) {
43485
43632
  }
43486
43633
 
43487
43634
 
43488
- /***/ },
43489
-
43490
- /***/ "./packages/roosterjs-content-model-plugins/lib/utils/getNodePositionFromEvent.ts"
43491
- /*!****************************************************************************************!*\
43492
- !*** ./packages/roosterjs-content-model-plugins/lib/utils/getNodePositionFromEvent.ts ***!
43493
- \****************************************************************************************/
43494
- (__unused_webpack_module, exports) {
43495
-
43496
- "use strict";
43497
-
43498
- Object.defineProperty(exports, "__esModule", ({ value: true }));
43499
- exports.getNodePositionFromEvent = void 0;
43500
- /**
43501
- * @internal Get insertion point from coordinate.
43502
- */
43503
- function getNodePositionFromEvent(editor, x, y) {
43504
- var doc = editor.getDocument();
43505
- var domHelper = editor.getDOMHelper();
43506
- if ('caretPositionFromPoint' in doc) {
43507
- // Firefox, Chrome, Edge, Safari, Opera
43508
- var pos = doc.caretPositionFromPoint(x, y);
43509
- if (pos && domHelper.isNodeInEditor(pos.offsetNode)) {
43510
- return { node: pos.offsetNode, offset: pos.offset };
43511
- }
43512
- }
43513
- if (doc.caretRangeFromPoint) {
43514
- // Safari
43515
- var range = doc.caretRangeFromPoint(x, y);
43516
- if (range && domHelper.isNodeInEditor(range.startContainer)) {
43517
- return { node: range.startContainer, offset: range.startOffset };
43518
- }
43519
- }
43520
- if (doc.elementFromPoint) {
43521
- // Fallback
43522
- var element = doc.elementFromPoint(x, y);
43523
- if (element && domHelper.isNodeInEditor(element)) {
43524
- return { node: element, offset: 0 };
43525
- }
43526
- }
43527
- return null;
43528
- }
43529
- exports.getNodePositionFromEvent = getNodePositionFromEvent;
43530
-
43531
-
43532
43635
  /***/ },
43533
43636
 
43534
43637
  /***/ "./packages/roosterjs-content-model-plugins/lib/watermark/WatermarkPlugin.ts"