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-amd-min.js +1 -1
- package/dist/rooster-amd-min.js.map +1 -1
- package/dist/rooster-amd.d.ts +23 -2
- package/dist/rooster-amd.js +169 -66
- package/dist/rooster-amd.js.map +1 -1
- package/dist/rooster-min.js +1 -1
- package/dist/rooster-min.js.map +1 -1
- package/dist/rooster-react.js +53 -53
- package/dist/rooster.d.ts +23 -2
- package/dist/rooster.js +169 -66
- package/dist/rooster.js.map +1 -1
- package/package.json +7 -7
package/dist/rooster-amd.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Type definitions for roosterjs (Version 9.
|
|
1
|
+
// Type definitions for roosterjs (Version 9.47.0)
|
|
2
2
|
// Generated by dts tool from roosterjs
|
|
3
3
|
// Project: https://github.com/Microsoft/roosterjs
|
|
4
4
|
|
|
@@ -3011,6 +3011,18 @@ export interface DomToModelListFormat {
|
|
|
3011
3011
|
export interface ModelToDomContext extends EditorContext, ModelToDomSelectionContext, ModelToDomFormatContext, ModelToDomSettings, RewriteFromModelContext {
|
|
3012
3012
|
}
|
|
3013
3013
|
|
|
3014
|
+
/**
|
|
3015
|
+
* Extended context used by segment and text handlers to carry per-paragraph segment state
|
|
3016
|
+
*/
|
|
3017
|
+
export interface ModelToDomSegmentContext extends ModelToDomContext {
|
|
3018
|
+
/**
|
|
3019
|
+
* Whether the current segment is the last segment in the paragraph,
|
|
3020
|
+
* or there are no more Text segments after it (excluding SelectionMarkers).
|
|
3021
|
+
* When true, trailing spaces should be converted to  .
|
|
3022
|
+
*/
|
|
3023
|
+
noFollowingTextSegmentOrLast?: boolean;
|
|
3024
|
+
}
|
|
3025
|
+
|
|
3014
3026
|
/**
|
|
3015
3027
|
* Represents internal data structure for a selection position, combined by block and segment node
|
|
3016
3028
|
*/
|
|
@@ -3151,7 +3163,7 @@ export type ContentModelHandler<T extends ContentModelSegment | ContentModelBloc
|
|
|
3151
3163
|
* - For segments with decorators: decorator elements will also be included
|
|
3152
3164
|
* - For inline entity segment, the delimiter SPANs will also be included
|
|
3153
3165
|
*/
|
|
3154
|
-
export type ContentModelSegmentHandler<T extends ContentModelSegment> = (doc: Document, parent: Node, model: T, context:
|
|
3166
|
+
export type ContentModelSegmentHandler<T extends ContentModelSegment> = (doc: Document, parent: Node, model: T, context: ModelToDomSegmentContext, segmentNodes: Node[]) => void;
|
|
3155
3167
|
|
|
3156
3168
|
/**
|
|
3157
3169
|
* Type of Content Model to DOM handler for block
|
|
@@ -7615,6 +7627,15 @@ export function isModifierKey(event: KeyboardEvent): boolean;
|
|
|
7615
7627
|
*/
|
|
7616
7628
|
export function isCursorMovingKey(event: KeyboardEvent): boolean;
|
|
7617
7629
|
|
|
7630
|
+
/**
|
|
7631
|
+
* Get insertion point from coordinate.
|
|
7632
|
+
* @param doc Parent document object
|
|
7633
|
+
* @param domHelper The DOM helper of the editor
|
|
7634
|
+
* @param x The cursor coordinate for the x-axis
|
|
7635
|
+
* @param y The cursor coordinate for the y-axis
|
|
7636
|
+
*/
|
|
7637
|
+
export function getNodePositionFromEvent(doc: Document, domHelper: DOMHelper, x: number, y: number): DOMInsertPoint | null;
|
|
7638
|
+
|
|
7618
7639
|
/**
|
|
7619
7640
|
* Combine border value array back to string
|
|
7620
7641
|
* @param values Input string values
|
package/dist/rooster-amd.js
CHANGED
|
@@ -12427,7 +12427,8 @@ var TextMutationObserverImpl = /** @class */ (function () {
|
|
|
12427
12427
|
continue;
|
|
12428
12428
|
}
|
|
12429
12429
|
else if (!includedNodes.has(target)) {
|
|
12430
|
-
if (
|
|
12430
|
+
if (!_this.domHelper.isNodeInEditor(target) ||
|
|
12431
|
+
(0, roosterjs_content_model_dom_1.findClosestEntityWrapper)(target, _this.domHelper) ||
|
|
12431
12432
|
(0, roosterjs_content_model_dom_1.findClosestBlockEntityContainer)(target, _this.domHelper)) {
|
|
12432
12433
|
ignoredNodes.add(target);
|
|
12433
12434
|
continue;
|
|
@@ -14760,7 +14761,9 @@ var SelectionPlugin = /** @class */ (function () {
|
|
|
14760
14761
|
rawEvent.preventDefault();
|
|
14761
14762
|
}
|
|
14762
14763
|
else {
|
|
14763
|
-
win === null || win === void 0 ? void 0 : win.requestAnimationFrame(function () {
|
|
14764
|
+
win === null || win === void 0 ? void 0 : win.requestAnimationFrame(function () {
|
|
14765
|
+
return _this.handleSelectionInTable(key, selection.range);
|
|
14766
|
+
});
|
|
14764
14767
|
}
|
|
14765
14768
|
}
|
|
14766
14769
|
}
|
|
@@ -14809,7 +14812,7 @@ var SelectionPlugin = /** @class */ (function () {
|
|
|
14809
14812
|
SelectionPlugin.prototype.getTabKey = function (rawEvent) {
|
|
14810
14813
|
return rawEvent.shiftKey ? 'TabLeft' : 'TabRight';
|
|
14811
14814
|
};
|
|
14812
|
-
SelectionPlugin.prototype.handleSelectionInTable = function (key) {
|
|
14815
|
+
SelectionPlugin.prototype.handleSelectionInTable = function (key, rangeBeforeChange) {
|
|
14813
14816
|
var _a, _b, _c, _d, _e, _f;
|
|
14814
14817
|
if (!this.editor || !this.state.tableSelection) {
|
|
14815
14818
|
return;
|
|
@@ -14843,7 +14846,15 @@ var SelectionPlugin = /** @class */ (function () {
|
|
|
14843
14846
|
}
|
|
14844
14847
|
}
|
|
14845
14848
|
if (collapsed && td) {
|
|
14846
|
-
|
|
14849
|
+
var textOffset = (key == 'ArrowUp' || key == 'ArrowDown') && rangeBeforeChange
|
|
14850
|
+
? this.getTextOffset(this.editor, rangeBeforeChange, td, key == 'ArrowUp')
|
|
14851
|
+
: null;
|
|
14852
|
+
if (textOffset) {
|
|
14853
|
+
this.setRangeSelectionInTable(textOffset.node, textOffset.offset, this.editor, false /* selectAll */);
|
|
14854
|
+
}
|
|
14855
|
+
else {
|
|
14856
|
+
this.setRangeSelectionInTable(td, 0, this.editor, false /* selectAll */);
|
|
14857
|
+
}
|
|
14847
14858
|
}
|
|
14848
14859
|
else if (!td && (lastCo.row == -1 || lastCo.row <= parsedTable.length)) {
|
|
14849
14860
|
this.selectBeforeOrAfterElement(this.editor, table, change == 1 /* after */, change != 1 /* setSelectionInNextSiblingElement */);
|
|
@@ -14894,8 +14905,23 @@ var SelectionPlugin = /** @class */ (function () {
|
|
|
14894
14905
|
}
|
|
14895
14906
|
}
|
|
14896
14907
|
};
|
|
14908
|
+
SelectionPlugin.prototype.getTextOffset = function (editor, range, td, isKeyUp) {
|
|
14909
|
+
var doc = editor.getDocument();
|
|
14910
|
+
var cursorRect = range
|
|
14911
|
+
? (0, roosterjs_content_model_dom_1.getDOMInsertPointRect)(doc, {
|
|
14912
|
+
node: range.startContainer,
|
|
14913
|
+
offset: range.startOffset,
|
|
14914
|
+
})
|
|
14915
|
+
: undefined;
|
|
14916
|
+
var rect = td === null || td === void 0 ? void 0 : td.getBoundingClientRect();
|
|
14917
|
+
var textOffset = cursorRect && rect
|
|
14918
|
+
? (0, roosterjs_content_model_dom_1.getNodePositionFromEvent)(doc, editor.getDOMHelper(), cursorRect.left, isKeyUp ? rect.top - 1 : rect.top + 1)
|
|
14919
|
+
: null;
|
|
14920
|
+
return textOffset;
|
|
14921
|
+
};
|
|
14897
14922
|
SelectionPlugin.prototype.setRangeSelectionInTable = function (cell, nodeOffset, editor, selectAll) {
|
|
14898
|
-
var
|
|
14923
|
+
var doc = editor.getDocument();
|
|
14924
|
+
var range = doc.createRange();
|
|
14899
14925
|
if (selectAll && cell.firstChild && cell.lastChild) {
|
|
14900
14926
|
var cellStart = cell.firstChild;
|
|
14901
14927
|
var cellEnd = cell.lastChild;
|
|
@@ -19680,6 +19706,52 @@ function getAllowedCustomType(type, allowedCustomPasteType) {
|
|
|
19680
19706
|
}
|
|
19681
19707
|
|
|
19682
19708
|
|
|
19709
|
+
/***/ },
|
|
19710
|
+
|
|
19711
|
+
/***/ "./packages/roosterjs-content-model-dom/lib/domUtils/event/getNodePositionFromEvent.ts"
|
|
19712
|
+
/*!*********************************************************************************************!*\
|
|
19713
|
+
!*** ./packages/roosterjs-content-model-dom/lib/domUtils/event/getNodePositionFromEvent.ts ***!
|
|
19714
|
+
\*********************************************************************************************/
|
|
19715
|
+
(__unused_webpack_module, exports) {
|
|
19716
|
+
|
|
19717
|
+
"use strict";
|
|
19718
|
+
|
|
19719
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
19720
|
+
exports.getNodePositionFromEvent = void 0;
|
|
19721
|
+
/**
|
|
19722
|
+
* Get insertion point from coordinate.
|
|
19723
|
+
* @param doc Parent document object
|
|
19724
|
+
* @param domHelper The DOM helper of the editor
|
|
19725
|
+
* @param x The cursor coordinate for the x-axis
|
|
19726
|
+
* @param y The cursor coordinate for the y-axis
|
|
19727
|
+
*/
|
|
19728
|
+
function getNodePositionFromEvent(doc, domHelper, x, y) {
|
|
19729
|
+
if ('caretPositionFromPoint' in doc) {
|
|
19730
|
+
// Firefox, Chrome, Edge, Safari, Opera
|
|
19731
|
+
var pos = doc.caretPositionFromPoint(x, y);
|
|
19732
|
+
if (pos && domHelper.isNodeInEditor(pos.offsetNode)) {
|
|
19733
|
+
return { node: pos.offsetNode, offset: pos.offset };
|
|
19734
|
+
}
|
|
19735
|
+
}
|
|
19736
|
+
if (doc.caretRangeFromPoint) {
|
|
19737
|
+
// Safari
|
|
19738
|
+
var range = doc.caretRangeFromPoint(x, y);
|
|
19739
|
+
if (range && domHelper.isNodeInEditor(range.startContainer)) {
|
|
19740
|
+
return { node: range.startContainer, offset: range.startOffset };
|
|
19741
|
+
}
|
|
19742
|
+
}
|
|
19743
|
+
if (doc.elementFromPoint) {
|
|
19744
|
+
// Fallback
|
|
19745
|
+
var element = doc.elementFromPoint(x, y);
|
|
19746
|
+
if (element && domHelper.isNodeInEditor(element)) {
|
|
19747
|
+
return { node: element, offset: 0 };
|
|
19748
|
+
}
|
|
19749
|
+
}
|
|
19750
|
+
return null;
|
|
19751
|
+
}
|
|
19752
|
+
exports.getNodePositionFromEvent = getNodePositionFromEvent;
|
|
19753
|
+
|
|
19754
|
+
|
|
19683
19755
|
/***/ },
|
|
19684
19756
|
|
|
19685
19757
|
/***/ "./packages/roosterjs-content-model-dom/lib/domUtils/getObjectKeys.ts"
|
|
@@ -23510,8 +23582,8 @@ exports.shouldSetValue = shouldSetValue;
|
|
|
23510
23582
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
23511
23583
|
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;
|
|
23512
23584
|
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;
|
|
23513
|
-
exports.
|
|
23514
|
-
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;
|
|
23585
|
+
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;
|
|
23586
|
+
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;
|
|
23515
23587
|
var domToContentModel_1 = __webpack_require__(/*! ./domToModel/domToContentModel */ "./packages/roosterjs-content-model-dom/lib/domToModel/domToContentModel.ts");
|
|
23516
23588
|
Object.defineProperty(exports, "domToContentModel", ({ enumerable: true, get: function () { return domToContentModel_1.domToContentModel; } }));
|
|
23517
23589
|
var contentModelToDom_1 = __webpack_require__(/*! ./modelToDom/contentModelToDom */ "./packages/roosterjs-content-model-dom/lib/modelToDom/contentModelToDom.ts");
|
|
@@ -23688,6 +23760,8 @@ var eventUtils_1 = __webpack_require__(/*! ./domUtils/event/eventUtils */ "./pac
|
|
|
23688
23760
|
Object.defineProperty(exports, "isCharacterValue", ({ enumerable: true, get: function () { return eventUtils_1.isCharacterValue; } }));
|
|
23689
23761
|
Object.defineProperty(exports, "isModifierKey", ({ enumerable: true, get: function () { return eventUtils_1.isModifierKey; } }));
|
|
23690
23762
|
Object.defineProperty(exports, "isCursorMovingKey", ({ enumerable: true, get: function () { return eventUtils_1.isCursorMovingKey; } }));
|
|
23763
|
+
var getNodePositionFromEvent_1 = __webpack_require__(/*! ./domUtils/event/getNodePositionFromEvent */ "./packages/roosterjs-content-model-dom/lib/domUtils/event/getNodePositionFromEvent.ts");
|
|
23764
|
+
Object.defineProperty(exports, "getNodePositionFromEvent", ({ enumerable: true, get: function () { return getNodePositionFromEvent_1.getNodePositionFromEvent; } }));
|
|
23691
23765
|
var borderValues_1 = __webpack_require__(/*! ./domUtils/style/borderValues */ "./packages/roosterjs-content-model-dom/lib/domUtils/style/borderValues.ts");
|
|
23692
23766
|
Object.defineProperty(exports, "combineBorderValue", ({ enumerable: true, get: function () { return borderValues_1.combineBorderValue; } }));
|
|
23693
23767
|
Object.defineProperty(exports, "extractBorderValues", ({ enumerable: true, get: function () { return borderValues_1.extractBorderValues; } }));
|
|
@@ -29513,23 +29587,40 @@ var handleParagraph = function (doc, parent, paragraph, context, refNode) {
|
|
|
29513
29587
|
segment: null,
|
|
29514
29588
|
};
|
|
29515
29589
|
var handleSegments = function () {
|
|
29590
|
+
var e_1, _a;
|
|
29591
|
+
var _b;
|
|
29516
29592
|
var parent = container;
|
|
29517
29593
|
if (parent) {
|
|
29518
29594
|
var firstSegment = paragraph.segments[0];
|
|
29595
|
+
var segmentContext = context;
|
|
29519
29596
|
if ((firstSegment === null || firstSegment === void 0 ? void 0 : firstSegment.segmentType) == 'SelectionMarker') {
|
|
29520
29597
|
// Make sure there is a segment created before selection marker.
|
|
29521
29598
|
// If selection marker is the first selected segment in a paragraph, create a dummy text node,
|
|
29522
29599
|
// so after rewrite, the regularSelection object can have a valid segment object set to the text node.
|
|
29523
|
-
context.modelHandlers.text(doc, parent, (0, tslib_1.__assign)((0, tslib_1.__assign)({}, firstSegment), { segmentType: 'Text', text: '' }),
|
|
29600
|
+
context.modelHandlers.text(doc, parent, (0, tslib_1.__assign)((0, tslib_1.__assign)({}, firstSegment), { segmentType: 'Text', text: '' }), segmentContext, []);
|
|
29524
29601
|
}
|
|
29525
|
-
paragraph.segments.
|
|
29602
|
+
for (var i = 0; i < paragraph.segments.length; i++) {
|
|
29603
|
+
var segment = paragraph.segments[i];
|
|
29604
|
+
segmentContext.noFollowingTextSegmentOrLast =
|
|
29605
|
+
i === paragraph.segments.length - 1 ||
|
|
29606
|
+
!hasTextSegmentAfter(paragraph.segments, i);
|
|
29526
29607
|
var newSegments = [];
|
|
29527
|
-
context.modelHandlers.segment(doc, parent, segment,
|
|
29528
|
-
|
|
29529
|
-
var
|
|
29530
|
-
|
|
29531
|
-
|
|
29532
|
-
|
|
29608
|
+
context.modelHandlers.segment(doc, parent, segment, segmentContext, newSegments);
|
|
29609
|
+
try {
|
|
29610
|
+
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()) {
|
|
29611
|
+
var node = newSegments_1_1.value;
|
|
29612
|
+
(_b = context.domIndexer) === null || _b === void 0 ? void 0 : _b.onSegment(node, paragraph, [segment]);
|
|
29613
|
+
}
|
|
29614
|
+
}
|
|
29615
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
29616
|
+
finally {
|
|
29617
|
+
try {
|
|
29618
|
+
if (newSegments_1_1 && !newSegments_1_1.done && (_a = newSegments_1.return)) _a.call(newSegments_1);
|
|
29619
|
+
}
|
|
29620
|
+
finally { if (e_1) throw e_1.error; }
|
|
29621
|
+
}
|
|
29622
|
+
}
|
|
29623
|
+
delete segmentContext.noFollowingTextSegmentOrLast;
|
|
29533
29624
|
}
|
|
29534
29625
|
};
|
|
29535
29626
|
if (needParagraphWrapper) {
|
|
@@ -29569,6 +29660,21 @@ var handleParagraph = function (doc, parent, paragraph, context, refNode) {
|
|
|
29569
29660
|
return refNode;
|
|
29570
29661
|
};
|
|
29571
29662
|
exports.handleParagraph = handleParagraph;
|
|
29663
|
+
function hasTextSegmentAfter(segments, index) {
|
|
29664
|
+
for (var i = index + 1; i < segments.length; i++) {
|
|
29665
|
+
var type = segments[i].segmentType;
|
|
29666
|
+
if (type === 'SelectionMarker') {
|
|
29667
|
+
continue;
|
|
29668
|
+
}
|
|
29669
|
+
if (type === 'Text') {
|
|
29670
|
+
return true;
|
|
29671
|
+
}
|
|
29672
|
+
else {
|
|
29673
|
+
return false;
|
|
29674
|
+
}
|
|
29675
|
+
}
|
|
29676
|
+
return false;
|
|
29677
|
+
}
|
|
29572
29678
|
|
|
29573
29679
|
|
|
29574
29680
|
/***/ },
|
|
@@ -29809,11 +29915,15 @@ exports.handleTable = handleTable;
|
|
|
29809
29915
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
29810
29916
|
exports.handleText = void 0;
|
|
29811
29917
|
var handleSegmentCommon_1 = __webpack_require__(/*! ../utils/handleSegmentCommon */ "./packages/roosterjs-content-model-dom/lib/modelToDom/utils/handleSegmentCommon.ts");
|
|
29918
|
+
var nonBreakingSpace = '\u00A0';
|
|
29812
29919
|
/**
|
|
29813
29920
|
* @internal
|
|
29814
29921
|
*/
|
|
29815
29922
|
var handleText = function (doc, parent, segment, context, segmentNodes) {
|
|
29816
|
-
var
|
|
29923
|
+
var textContent = context.noFollowingTextSegmentOrLast && segment.text.endsWith(' ')
|
|
29924
|
+
? segment.text.slice(0, -1) + nonBreakingSpace
|
|
29925
|
+
: segment.text;
|
|
29926
|
+
var txt = doc.createTextNode(textContent);
|
|
29817
29927
|
var element = doc.createElement('span');
|
|
29818
29928
|
parent.appendChild(element);
|
|
29819
29929
|
element.appendChild(txt);
|
|
@@ -39244,6 +39354,7 @@ var getStyles_1 = __webpack_require__(/*! ../utils/getStyles */ "./packages/roos
|
|
|
39244
39354
|
var listLevelParser_1 = __webpack_require__(/*! ../parsers/listLevelParser */ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/listLevelParser.ts");
|
|
39245
39355
|
var processWordComments_1 = __webpack_require__(/*! ./processWordComments */ "./packages/roosterjs-content-model-plugins/lib/paste/WordDesktop/processWordComments.ts");
|
|
39246
39356
|
var processWordLists_1 = __webpack_require__(/*! ./processWordLists */ "./packages/roosterjs-content-model-plugins/lib/paste/WordDesktop/processWordLists.ts");
|
|
39357
|
+
var adjustWordListMarginParser_1 = __webpack_require__(/*! ../parsers/adjustWordListMarginParser */ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/adjustWordListMarginParser.ts");
|
|
39247
39358
|
var removeNegativeTextIndentParser_1 = __webpack_require__(/*! ../parsers/removeNegativeTextIndentParser */ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/removeNegativeTextIndentParser.ts");
|
|
39248
39359
|
var setProcessor_1 = __webpack_require__(/*! ../utils/setProcessor */ "./packages/roosterjs-content-model-plugins/lib/paste/utils/setProcessor.ts");
|
|
39249
39360
|
var wordContainerParser_1 = __webpack_require__(/*! ../parsers/wordContainerParser */ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/wordContainerParser.ts");
|
|
@@ -39260,6 +39371,7 @@ function processPastedContentFromWordDesktop(domToModelOption, htmlString) {
|
|
|
39260
39371
|
(0, addParser_1.addParser)(domToModelOption, 'block', adjustPercentileLineHeightParser_1.adjustPercentileLineHeight);
|
|
39261
39372
|
(0, addParser_1.addParser)(domToModelOption, 'block', removeNegativeTextIndentParser_1.removeNegativeTextIndentParser);
|
|
39262
39373
|
(0, addParser_1.addParser)(domToModelOption, 'listItemElement', removeNegativeTextIndentParser_1.removeNegativeTextIndentParser);
|
|
39374
|
+
(0, addParser_1.addParser)(domToModelOption, 'listItemElement', adjustWordListMarginParser_1.adjustWordListMarginParser);
|
|
39263
39375
|
(0, addParser_1.addParser)(domToModelOption, 'listLevel', listLevelParser_1.listLevelParser);
|
|
39264
39376
|
(0, addParser_1.addParser)(domToModelOption, 'container', wordContainerParser_1.wordContainerParser);
|
|
39265
39377
|
(0, addParser_1.addParser)(domToModelOption, 'table', wordTableParser_1.wordTableParser);
|
|
@@ -39684,6 +39796,42 @@ function adjustPercentileLineHeight(format, element) {
|
|
|
39684
39796
|
exports.adjustPercentileLineHeight = adjustPercentileLineHeight;
|
|
39685
39797
|
|
|
39686
39798
|
|
|
39799
|
+
/***/ },
|
|
39800
|
+
|
|
39801
|
+
/***/ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/adjustWordListMarginParser.ts"
|
|
39802
|
+
/*!**************************************************************************************************!*\
|
|
39803
|
+
!*** ./packages/roosterjs-content-model-plugins/lib/paste/parsers/adjustWordListMarginParser.ts ***!
|
|
39804
|
+
\**************************************************************************************************/
|
|
39805
|
+
(__unused_webpack_module, exports, __webpack_require__) {
|
|
39806
|
+
|
|
39807
|
+
"use strict";
|
|
39808
|
+
|
|
39809
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
39810
|
+
exports.adjustWordListMarginParser = void 0;
|
|
39811
|
+
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
39812
|
+
var MSO_LIST_PARAGRAPH_CLASS = 'MsoListParagraph';
|
|
39813
|
+
// Default list padding from the HTML user-agent stylesheet (paddingInlineStart for <ul>/<ol>)
|
|
39814
|
+
var DEFAULT_LIST_PADDING_INLINE_START = '40px';
|
|
39815
|
+
/**
|
|
39816
|
+
* @internal
|
|
39817
|
+
* Parser that subtracts the default list format (paddingInlineStart: 40px) from
|
|
39818
|
+
* the marginLeft of list item elements that have the MsoListParagraph class,
|
|
39819
|
+
* since Word adds the full indentation as margin on the paragraph, which
|
|
39820
|
+
* duplicates the padding the list element already provides.
|
|
39821
|
+
*/
|
|
39822
|
+
var adjustWordListMarginParser = function (format, element) {
|
|
39823
|
+
if (element.classList.contains(MSO_LIST_PARAGRAPH_CLASS) && format.marginLeft) {
|
|
39824
|
+
var currentPx = (0, roosterjs_content_model_dom_1.parseValueWithUnit)(format.marginLeft, element);
|
|
39825
|
+
var defaultPx = (0, roosterjs_content_model_dom_1.parseValueWithUnit)(DEFAULT_LIST_PADDING_INLINE_START);
|
|
39826
|
+
var result = currentPx - defaultPx;
|
|
39827
|
+
if (result > 0) {
|
|
39828
|
+
format.marginLeft = result + "px";
|
|
39829
|
+
}
|
|
39830
|
+
}
|
|
39831
|
+
};
|
|
39832
|
+
exports.adjustWordListMarginParser = adjustWordListMarginParser;
|
|
39833
|
+
|
|
39834
|
+
|
|
39687
39835
|
/***/ },
|
|
39688
39836
|
|
|
39689
39837
|
/***/ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/blockElementParser.ts"
|
|
@@ -42569,7 +42717,6 @@ var createElement_1 = __webpack_require__(/*! ../../../pluginUtils/CreateElement
|
|
|
42569
42717
|
var DragAndDropHelper_1 = __webpack_require__(/*! ../../../pluginUtils/DragAndDrop/DragAndDropHelper */ "./packages/roosterjs-content-model-plugins/lib/pluginUtils/DragAndDrop/DragAndDropHelper.ts");
|
|
42570
42718
|
var roosterjs_content_model_api_1 = __webpack_require__(/*! roosterjs-content-model-api */ "./packages/roosterjs-content-model-api/lib/index.ts");
|
|
42571
42719
|
var getTableFromContentModel_1 = __webpack_require__(/*! ../utils/getTableFromContentModel */ "./packages/roosterjs-content-model-plugins/lib/tableEdit/editors/utils/getTableFromContentModel.ts");
|
|
42572
|
-
var getNodePositionFromEvent_1 = __webpack_require__(/*! ../../../utils/getNodePositionFromEvent */ "./packages/roosterjs-content-model-plugins/lib/utils/getNodePositionFromEvent.ts");
|
|
42573
42720
|
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
42574
42721
|
var TABLE_MOVER_LENGTH = 12;
|
|
42575
42722
|
/**
|
|
@@ -42697,7 +42844,7 @@ function onDragging(context, event, initValue) {
|
|
|
42697
42844
|
// Move table outline rectangle
|
|
42698
42845
|
tableRect.style.top = event.clientY + TABLE_MOVER_LENGTH + "px";
|
|
42699
42846
|
tableRect.style.left = event.clientX + TABLE_MOVER_LENGTH + "px";
|
|
42700
|
-
var pos = (0,
|
|
42847
|
+
var pos = (0, roosterjs_content_model_dom_1.getNodePositionFromEvent)(editor.getDocument(), editor.getDOMHelper(), event.clientX, event.clientY);
|
|
42701
42848
|
if (pos) {
|
|
42702
42849
|
var range = editor.getDocument().createRange();
|
|
42703
42850
|
range.setStart(pos.node, pos.offset);
|
|
@@ -42737,7 +42884,7 @@ function onDragEnd(context, event, initValue) {
|
|
|
42737
42884
|
}
|
|
42738
42885
|
var insertionSuccess_1 = false;
|
|
42739
42886
|
// Get position to insert table
|
|
42740
|
-
var insertPosition = (0,
|
|
42887
|
+
var insertPosition = (0, roosterjs_content_model_dom_1.getNodePositionFromEvent)(editor.getDocument(), editor.getDOMHelper(), event.clientX, event.clientY);
|
|
42741
42888
|
if (insertPosition) {
|
|
42742
42889
|
// Move table to new position
|
|
42743
42890
|
(0, roosterjs_content_model_api_1.formatInsertPointWithContentModel)(editor, insertPosition, function (model, context, ip) {
|
|
@@ -43274,7 +43421,7 @@ exports.getCMTableFromTable = getCMTableFromTable;
|
|
|
43274
43421
|
|
|
43275
43422
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
43276
43423
|
exports.TouchPlugin = void 0;
|
|
43277
|
-
var
|
|
43424
|
+
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
43278
43425
|
var MAX_TOUCH_MOVE_DISTANCE = 6; // the max number of offsets for the touch selection to move
|
|
43279
43426
|
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
|
|
43280
43427
|
var PUNCTUATION_MATCHING_REGEX = /[.,;:!]/;
|
|
@@ -43342,7 +43489,7 @@ var TouchPlugin = /** @class */ (function () {
|
|
|
43342
43489
|
if (_this.editor) {
|
|
43343
43490
|
if (!_this.isDblClicked) {
|
|
43344
43491
|
_this.editor.focus();
|
|
43345
|
-
var caretPosition = (0,
|
|
43492
|
+
var caretPosition = (0, roosterjs_content_model_dom_1.getNodePositionFromEvent)(_this.editor.getDocument(), _this.editor.getDOMHelper(), event.rawEvent.x, event.rawEvent.y);
|
|
43346
43493
|
var newRange = _this.editor.getDocument().createRange();
|
|
43347
43494
|
if (caretPosition) {
|
|
43348
43495
|
var node = caretPosition.node, offset = caretPosition.offset;
|
|
@@ -43390,7 +43537,7 @@ var TouchPlugin = /** @class */ (function () {
|
|
|
43390
43537
|
if (this.isTouchPenPointerEvent) {
|
|
43391
43538
|
event.rawEvent.preventDefault();
|
|
43392
43539
|
this.isDblClicked = true;
|
|
43393
|
-
var caretPosition = (0,
|
|
43540
|
+
var caretPosition = (0, roosterjs_content_model_dom_1.getNodePositionFromEvent)(this.editor.getDocument(), this.editor.getDOMHelper(), event.rawEvent.x, event.rawEvent.y);
|
|
43394
43541
|
if (caretPosition) {
|
|
43395
43542
|
var node = caretPosition.node, offset = caretPosition.offset;
|
|
43396
43543
|
if (node.nodeType !== Node.TEXT_NODE) {
|
|
@@ -43484,50 +43631,6 @@ function findWordBoundaries(text, offset) {
|
|
|
43484
43631
|
}
|
|
43485
43632
|
|
|
43486
43633
|
|
|
43487
|
-
/***/ },
|
|
43488
|
-
|
|
43489
|
-
/***/ "./packages/roosterjs-content-model-plugins/lib/utils/getNodePositionFromEvent.ts"
|
|
43490
|
-
/*!****************************************************************************************!*\
|
|
43491
|
-
!*** ./packages/roosterjs-content-model-plugins/lib/utils/getNodePositionFromEvent.ts ***!
|
|
43492
|
-
\****************************************************************************************/
|
|
43493
|
-
(__unused_webpack_module, exports) {
|
|
43494
|
-
|
|
43495
|
-
"use strict";
|
|
43496
|
-
|
|
43497
|
-
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
43498
|
-
exports.getNodePositionFromEvent = void 0;
|
|
43499
|
-
/**
|
|
43500
|
-
* @internal Get insertion point from coordinate.
|
|
43501
|
-
*/
|
|
43502
|
-
function getNodePositionFromEvent(editor, x, y) {
|
|
43503
|
-
var doc = editor.getDocument();
|
|
43504
|
-
var domHelper = editor.getDOMHelper();
|
|
43505
|
-
if ('caretPositionFromPoint' in doc) {
|
|
43506
|
-
// Firefox, Chrome, Edge, Safari, Opera
|
|
43507
|
-
var pos = doc.caretPositionFromPoint(x, y);
|
|
43508
|
-
if (pos && domHelper.isNodeInEditor(pos.offsetNode)) {
|
|
43509
|
-
return { node: pos.offsetNode, offset: pos.offset };
|
|
43510
|
-
}
|
|
43511
|
-
}
|
|
43512
|
-
if (doc.caretRangeFromPoint) {
|
|
43513
|
-
// Safari
|
|
43514
|
-
var range = doc.caretRangeFromPoint(x, y);
|
|
43515
|
-
if (range && domHelper.isNodeInEditor(range.startContainer)) {
|
|
43516
|
-
return { node: range.startContainer, offset: range.startOffset };
|
|
43517
|
-
}
|
|
43518
|
-
}
|
|
43519
|
-
if (doc.elementFromPoint) {
|
|
43520
|
-
// Fallback
|
|
43521
|
-
var element = doc.elementFromPoint(x, y);
|
|
43522
|
-
if (element && domHelper.isNodeInEditor(element)) {
|
|
43523
|
-
return { node: element, offset: 0 };
|
|
43524
|
-
}
|
|
43525
|
-
}
|
|
43526
|
-
return null;
|
|
43527
|
-
}
|
|
43528
|
-
exports.getNodePositionFromEvent = getNodePositionFromEvent;
|
|
43529
|
-
|
|
43530
|
-
|
|
43531
43634
|
/***/ },
|
|
43532
43635
|
|
|
43533
43636
|
/***/ "./packages/roosterjs-content-model-plugins/lib/watermark/WatermarkPlugin.ts"
|