roosterjs 9.46.0 → 9.48.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 +95 -2
- package/dist/rooster-amd.js +317 -109
- 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-react.js.map +1 -1
- package/dist/rooster.d.ts +95 -2
- package/dist/rooster.js +317 -109
- package/dist/rooster.js.map +1 -1
- package/package.json +7 -7
package/dist/rooster-amd.js
CHANGED
|
@@ -11683,17 +11683,18 @@ var CachePlugin = /** @class */ (function () {
|
|
|
11683
11683
|
if (contentModel) {
|
|
11684
11684
|
(0, updateCache_1.updateCache)(this.state, contentModel, selection);
|
|
11685
11685
|
}
|
|
11686
|
-
else {
|
|
11687
|
-
this.invalidateCache();
|
|
11688
|
-
}
|
|
11689
11686
|
break;
|
|
11690
11687
|
}
|
|
11691
11688
|
};
|
|
11692
11689
|
CachePlugin.prototype.invalidateCache = function () {
|
|
11693
11690
|
var _a, _b;
|
|
11694
11691
|
if (!((_a = this.editor) === null || _a === void 0 ? void 0 : _a.isInShadowEdit())) {
|
|
11695
|
-
this.state.cachedModel
|
|
11696
|
-
|
|
11692
|
+
if (this.state.cachedModel) {
|
|
11693
|
+
this.state.cachedModel = undefined;
|
|
11694
|
+
}
|
|
11695
|
+
if (this.state.cachedSelection) {
|
|
11696
|
+
this.state.cachedSelection = undefined;
|
|
11697
|
+
}
|
|
11697
11698
|
// Clear paragraph indexer to prevent stale references to old paragraphs
|
|
11698
11699
|
// It will be rebuild next time when we create a new Content Model
|
|
11699
11700
|
(_b = this.state.paragraphMap) === null || _b === void 0 ? void 0 : _b.clear();
|
|
@@ -12427,7 +12428,8 @@ var TextMutationObserverImpl = /** @class */ (function () {
|
|
|
12427
12428
|
continue;
|
|
12428
12429
|
}
|
|
12429
12430
|
else if (!includedNodes.has(target)) {
|
|
12430
|
-
if (
|
|
12431
|
+
if (!_this.domHelper.isNodeInEditor(target) ||
|
|
12432
|
+
(0, roosterjs_content_model_dom_1.findClosestEntityWrapper)(target, _this.domHelper) ||
|
|
12431
12433
|
(0, roosterjs_content_model_dom_1.findClosestBlockEntityContainer)(target, _this.domHelper)) {
|
|
12432
12434
|
ignoredNodes.add(target);
|
|
12433
12435
|
continue;
|
|
@@ -14760,7 +14762,9 @@ var SelectionPlugin = /** @class */ (function () {
|
|
|
14760
14762
|
rawEvent.preventDefault();
|
|
14761
14763
|
}
|
|
14762
14764
|
else {
|
|
14763
|
-
win === null || win === void 0 ? void 0 : win.requestAnimationFrame(function () {
|
|
14765
|
+
win === null || win === void 0 ? void 0 : win.requestAnimationFrame(function () {
|
|
14766
|
+
return _this.handleSelectionInTable(key, selection.range);
|
|
14767
|
+
});
|
|
14764
14768
|
}
|
|
14765
14769
|
}
|
|
14766
14770
|
}
|
|
@@ -14809,7 +14813,7 @@ var SelectionPlugin = /** @class */ (function () {
|
|
|
14809
14813
|
SelectionPlugin.prototype.getTabKey = function (rawEvent) {
|
|
14810
14814
|
return rawEvent.shiftKey ? 'TabLeft' : 'TabRight';
|
|
14811
14815
|
};
|
|
14812
|
-
SelectionPlugin.prototype.handleSelectionInTable = function (key) {
|
|
14816
|
+
SelectionPlugin.prototype.handleSelectionInTable = function (key, rangeBeforeChange) {
|
|
14813
14817
|
var _a, _b, _c, _d, _e, _f;
|
|
14814
14818
|
if (!this.editor || !this.state.tableSelection) {
|
|
14815
14819
|
return;
|
|
@@ -14843,7 +14847,15 @@ var SelectionPlugin = /** @class */ (function () {
|
|
|
14843
14847
|
}
|
|
14844
14848
|
}
|
|
14845
14849
|
if (collapsed && td) {
|
|
14846
|
-
|
|
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
|
+
}
|
|
14847
14859
|
}
|
|
14848
14860
|
else if (!td && (lastCo.row == -1 || lastCo.row <= parsedTable.length)) {
|
|
14849
14861
|
this.selectBeforeOrAfterElement(this.editor, table, change == 1 /* after */, change != 1 /* setSelectionInNextSiblingElement */);
|
|
@@ -14894,8 +14906,23 @@ var SelectionPlugin = /** @class */ (function () {
|
|
|
14894
14906
|
}
|
|
14895
14907
|
}
|
|
14896
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 : rect.top + 1)
|
|
14920
|
+
: null;
|
|
14921
|
+
return textOffset;
|
|
14922
|
+
};
|
|
14897
14923
|
SelectionPlugin.prototype.setRangeSelectionInTable = function (cell, nodeOffset, editor, selectAll) {
|
|
14898
|
-
var
|
|
14924
|
+
var doc = editor.getDocument();
|
|
14925
|
+
var range = doc.createRange();
|
|
14899
14926
|
if (selectAll && cell.firstChild && cell.lastChild) {
|
|
14900
14927
|
var cellStart = cell.firstChild;
|
|
14901
14928
|
var cellEnd = cell.lastChild;
|
|
@@ -19680,6 +19707,52 @@ function getAllowedCustomType(type, allowedCustomPasteType) {
|
|
|
19680
19707
|
}
|
|
19681
19708
|
|
|
19682
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
|
+
|
|
19683
19756
|
/***/ },
|
|
19684
19757
|
|
|
19685
19758
|
/***/ "./packages/roosterjs-content-model-dom/lib/domUtils/getObjectKeys.ts"
|
|
@@ -22082,13 +22155,15 @@ var styleBasedSegmentFormats = [
|
|
|
22082
22155
|
'fontFamily',
|
|
22083
22156
|
'fontSize',
|
|
22084
22157
|
];
|
|
22085
|
-
var
|
|
22158
|
+
var sizeNeutralElementBasedSegmentFormats = [
|
|
22086
22159
|
'strike',
|
|
22087
22160
|
'underline',
|
|
22088
|
-
'superOrSubScript',
|
|
22089
22161
|
'italic',
|
|
22090
22162
|
'bold',
|
|
22091
22163
|
];
|
|
22164
|
+
var elementBasedSegmentFormats = (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(sizeNeutralElementBasedSegmentFormats), false), [
|
|
22165
|
+
'superOrSubScript',
|
|
22166
|
+
], false);
|
|
22092
22167
|
var sharedBlockFormats = [
|
|
22093
22168
|
'direction',
|
|
22094
22169
|
'textAlign',
|
|
@@ -22112,7 +22187,8 @@ exports.defaultFormatKeysPerCategory = {
|
|
|
22112
22187
|
listItemElement: (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(sharedBlockFormats), false), ['listItemAlign', 'margin', 'listStyle'], false),
|
|
22113
22188
|
listLevel: ['direction', 'textAlign', 'margin', 'padding', 'listStyle', 'backgroundColor'],
|
|
22114
22189
|
styleBasedSegment: (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(styleBasedSegmentFormats), false), ['textColor', 'backgroundColor', 'lineHeight'], false),
|
|
22115
|
-
elementBasedSegment:
|
|
22190
|
+
elementBasedSegment: sizeNeutralElementBasedSegmentFormats,
|
|
22191
|
+
superOrSubScript: ['superOrSubScript'],
|
|
22116
22192
|
segment: (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(styleBasedSegmentFormats), false), (0, tslib_1.__read)(elementBasedSegmentFormats), false), [
|
|
22117
22193
|
'textColor',
|
|
22118
22194
|
'backgroundColor',
|
|
@@ -23510,8 +23586,8 @@ exports.shouldSetValue = shouldSetValue;
|
|
|
23510
23586
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
23511
23587
|
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
23588
|
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;
|
|
23589
|
+
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;
|
|
23590
|
+
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
23591
|
var domToContentModel_1 = __webpack_require__(/*! ./domToModel/domToContentModel */ "./packages/roosterjs-content-model-dom/lib/domToModel/domToContentModel.ts");
|
|
23516
23592
|
Object.defineProperty(exports, "domToContentModel", ({ enumerable: true, get: function () { return domToContentModel_1.domToContentModel; } }));
|
|
23517
23593
|
var contentModelToDom_1 = __webpack_require__(/*! ./modelToDom/contentModelToDom */ "./packages/roosterjs-content-model-dom/lib/modelToDom/contentModelToDom.ts");
|
|
@@ -23688,6 +23764,8 @@ var eventUtils_1 = __webpack_require__(/*! ./domUtils/event/eventUtils */ "./pac
|
|
|
23688
23764
|
Object.defineProperty(exports, "isCharacterValue", ({ enumerable: true, get: function () { return eventUtils_1.isCharacterValue; } }));
|
|
23689
23765
|
Object.defineProperty(exports, "isModifierKey", ({ enumerable: true, get: function () { return eventUtils_1.isModifierKey; } }));
|
|
23690
23766
|
Object.defineProperty(exports, "isCursorMovingKey", ({ enumerable: true, get: function () { return eventUtils_1.isCursorMovingKey; } }));
|
|
23767
|
+
var getNodePositionFromEvent_1 = __webpack_require__(/*! ./domUtils/event/getNodePositionFromEvent */ "./packages/roosterjs-content-model-dom/lib/domUtils/event/getNodePositionFromEvent.ts");
|
|
23768
|
+
Object.defineProperty(exports, "getNodePositionFromEvent", ({ enumerable: true, get: function () { return getNodePositionFromEvent_1.getNodePositionFromEvent; } }));
|
|
23691
23769
|
var borderValues_1 = __webpack_require__(/*! ./domUtils/style/borderValues */ "./packages/roosterjs-content-model-dom/lib/domUtils/style/borderValues.ts");
|
|
23692
23770
|
Object.defineProperty(exports, "combineBorderValue", ({ enumerable: true, get: function () { return borderValues_1.combineBorderValue; } }));
|
|
23693
23771
|
Object.defineProperty(exports, "extractBorderValues", ({ enumerable: true, get: function () { return borderValues_1.extractBorderValues; } }));
|
|
@@ -25456,7 +25534,7 @@ var BorderFormatters = (_a = {},
|
|
|
25456
25534
|
* Apply vertical align, borders, and background color to all cells in the table
|
|
25457
25535
|
*/
|
|
25458
25536
|
function formatCells(rows, format, metaOverrides) {
|
|
25459
|
-
var hasBandedRows = format.hasBandedRows, hasBandedColumns = format.hasBandedColumns, bgColorOdd = format.bgColorOdd, bgColorEven = format.bgColorEven, hasFirstColumn = format.hasFirstColumn;
|
|
25537
|
+
var hasBandedRows = format.hasBandedRows, hasBandedColumns = format.hasBandedColumns, bgColorOdd = format.bgColorOdd, bgColorEven = format.bgColorEven, hasFirstColumn = format.hasFirstColumn, hasHeaderRow = format.hasHeaderRow;
|
|
25460
25538
|
rows.forEach(function (row, rowIndex) {
|
|
25461
25539
|
row.cells.forEach(function (readonlyCell, colIndex) {
|
|
25462
25540
|
var _a;
|
|
@@ -25487,19 +25565,14 @@ function formatCells(rows, format, metaOverrides) {
|
|
|
25487
25565
|
}
|
|
25488
25566
|
// Format Background Color
|
|
25489
25567
|
if (!metaOverrides.bgColorOverrides[rowIndex][colIndex]) {
|
|
25490
|
-
var
|
|
25491
|
-
|
|
25492
|
-
|
|
25493
|
-
|
|
25494
|
-
|
|
25495
|
-
|
|
25496
|
-
|
|
25497
|
-
|
|
25498
|
-
(hasBandedRows && rowIndex % 2 != 0)
|
|
25499
|
-
? bgColorOdd
|
|
25500
|
-
: bgColorEven
|
|
25501
|
-
: bgColorEven; /* bgColorEven is the default color */
|
|
25502
|
-
}
|
|
25568
|
+
var bandedColumnMod = hasFirstColumn ? 0 : 1;
|
|
25569
|
+
var bandedRowMod = hasHeaderRow ? 0 : 1;
|
|
25570
|
+
var color = hasBandedRows || hasBandedColumns
|
|
25571
|
+
? (hasBandedColumns && colIndex % 2 != bandedColumnMod) ||
|
|
25572
|
+
(hasBandedRows && rowIndex % 2 != bandedRowMod)
|
|
25573
|
+
? bgColorOdd
|
|
25574
|
+
: bgColorEven
|
|
25575
|
+
: bgColorEven; /* bgColorEven is the default color */
|
|
25503
25576
|
(0, setTableCellBackgroundColor_1.setTableCellBackgroundColor)(cell, color, false /*isColorOverride*/, true /*applyToSegments*/);
|
|
25504
25577
|
}
|
|
25505
25578
|
// Format Vertical Align
|
|
@@ -25517,6 +25590,7 @@ function formatCells(rows, format, metaOverrides) {
|
|
|
25517
25590
|
* @param format The table metadata format
|
|
25518
25591
|
*/
|
|
25519
25592
|
function setFirstColumnFormatBorders(rows, format) {
|
|
25593
|
+
var customStyles = format.hasFirstColumn ? format.firstColumnCustomStyles : undefined;
|
|
25520
25594
|
rows.forEach(function (row, rowIndex) {
|
|
25521
25595
|
row.cells.forEach(function (readonlyCell, cellIndex) {
|
|
25522
25596
|
var e_1, _a, e_2, _b;
|
|
@@ -25525,6 +25599,16 @@ function setFirstColumnFormatBorders(rows, format) {
|
|
|
25525
25599
|
if (rowIndex == 0) {
|
|
25526
25600
|
cell.isHeader = !!format.hasHeaderRow;
|
|
25527
25601
|
}
|
|
25602
|
+
if (format.hasFirstColumn && customStyles) {
|
|
25603
|
+
setStyleIfDefined(cell.format, 'textAlign', customStyles.textAlign);
|
|
25604
|
+
setBorderColorIfExists(cell.format, 'borderTop', customStyles.borderTopColor);
|
|
25605
|
+
setBorderColorIfExists(cell.format, 'borderRight', customStyles.borderRightColor);
|
|
25606
|
+
setBorderColorIfExists(cell.format, 'borderBottom', customStyles.borderBottomColor);
|
|
25607
|
+
setBorderColorIfExists(cell.format, 'borderLeft', customStyles.borderLeftColor);
|
|
25608
|
+
if (customStyles.backgroundColor) {
|
|
25609
|
+
(0, setTableCellBackgroundColor_1.setTableCellBackgroundColor)(cell, customStyles.backgroundColor, false /*isColorOverride*/, true /*applyToSegments*/);
|
|
25610
|
+
}
|
|
25611
|
+
}
|
|
25528
25612
|
try {
|
|
25529
25613
|
for (var _c = (0, tslib_1.__values)(cell.blocks), _d = _c.next(); !_d.done; _d = _c.next()) {
|
|
25530
25614
|
var block = _d.value;
|
|
@@ -25533,9 +25617,12 @@ function setFirstColumnFormatBorders(rows, format) {
|
|
|
25533
25617
|
for (var _e = (e_2 = void 0, (0, tslib_1.__values)(block.segments)), _f = _e.next(); !_f.done; _f = _e.next()) {
|
|
25534
25618
|
var segment = _f.value;
|
|
25535
25619
|
(0, mutate_1.mutateSegment)(block, segment, function (cellSegment) {
|
|
25620
|
+
var _a, _b;
|
|
25536
25621
|
if (format.hasFirstColumn) {
|
|
25537
|
-
cellSegment.format
|
|
25538
|
-
cell.format
|
|
25622
|
+
setStyleIfDefined(cellSegment.format, 'fontWeight', (_a = customStyles === null || customStyles === void 0 ? void 0 : customStyles.fontWeight) !== null && _a !== void 0 ? _a : 'bold');
|
|
25623
|
+
setStyleIfDefined(cell.format, 'textAlign', customStyles === null || customStyles === void 0 ? void 0 : customStyles.textAlign);
|
|
25624
|
+
setStyleIfDefined(cell.format, 'fontWeight', (_b = customStyles === null || customStyles === void 0 ? void 0 : customStyles.fontWeight) !== null && _b !== void 0 ? _b : 'bold');
|
|
25625
|
+
setStyleIfDefined(cellSegment.format, 'italic', customStyles === null || customStyles === void 0 ? void 0 : customStyles.italic);
|
|
25539
25626
|
}
|
|
25540
25627
|
else if (cellSegment.format.fontWeight == 'bold' &&
|
|
25541
25628
|
cell.format.fontWeight == 'bold') {
|
|
@@ -25567,24 +25654,74 @@ function setFirstColumnFormatBorders(rows, format) {
|
|
|
25567
25654
|
});
|
|
25568
25655
|
}
|
|
25569
25656
|
exports.setFirstColumnFormatBorders = setFirstColumnFormatBorders;
|
|
25657
|
+
function setBorderColorIfExists(format, key, value) {
|
|
25658
|
+
if (value !== undefined) {
|
|
25659
|
+
setBorderColor(format, key, value);
|
|
25660
|
+
}
|
|
25661
|
+
}
|
|
25662
|
+
function setStyleIfDefined(format, key, value) {
|
|
25663
|
+
if (value !== undefined) {
|
|
25664
|
+
format[key] = value;
|
|
25665
|
+
}
|
|
25666
|
+
}
|
|
25570
25667
|
function setHeaderRowFormat(rows, format, metaOverrides) {
|
|
25571
25668
|
var _a;
|
|
25572
|
-
// Exit early if hasHeaderRow is not set
|
|
25573
25669
|
if (!format.hasHeaderRow) {
|
|
25574
25670
|
return;
|
|
25575
25671
|
}
|
|
25576
25672
|
var rowIndex = 0;
|
|
25673
|
+
var customStyles = format.headerRowCustomStyles;
|
|
25577
25674
|
(_a = rows[rowIndex]) === null || _a === void 0 ? void 0 : _a.cells.forEach(function (readonlyCell, cellIndex) {
|
|
25675
|
+
var e_3, _a, e_4, _b;
|
|
25676
|
+
var _c, _d, _e, _f;
|
|
25578
25677
|
var cell = (0, mutate_1.mutateBlock)(readonlyCell);
|
|
25579
25678
|
cell.isHeader = true;
|
|
25580
|
-
cell.format.fontWeight = 'bold';
|
|
25679
|
+
cell.format.fontWeight = (_c = customStyles === null || customStyles === void 0 ? void 0 : customStyles.fontWeight) !== null && _c !== void 0 ? _c : 'bold';
|
|
25581
25680
|
if (format.headerRowColor) {
|
|
25582
25681
|
if (!metaOverrides.bgColorOverrides[rowIndex][cellIndex]) {
|
|
25583
25682
|
(0, setTableCellBackgroundColor_1.setTableCellBackgroundColor)(cell, format.headerRowColor, false /*isColorOverride*/, true /*applyToSegments*/);
|
|
25584
25683
|
}
|
|
25585
|
-
setBorderColor(cell.format, 'borderTop', format.headerRowColor);
|
|
25586
|
-
setBorderColor(cell.format, 'borderRight', format.headerRowColor);
|
|
25587
|
-
setBorderColor(cell.format, 'borderLeft', format.headerRowColor);
|
|
25684
|
+
setBorderColor(cell.format, 'borderTop', (_d = customStyles === null || customStyles === void 0 ? void 0 : customStyles.borderTopColor) !== null && _d !== void 0 ? _d : format.headerRowColor);
|
|
25685
|
+
setBorderColor(cell.format, 'borderRight', (_e = customStyles === null || customStyles === void 0 ? void 0 : customStyles.borderRightColor) !== null && _e !== void 0 ? _e : format.headerRowColor);
|
|
25686
|
+
setBorderColor(cell.format, 'borderLeft', (_f = customStyles === null || customStyles === void 0 ? void 0 : customStyles.borderLeftColor) !== null && _f !== void 0 ? _f : format.headerRowColor);
|
|
25687
|
+
}
|
|
25688
|
+
if (customStyles) {
|
|
25689
|
+
setStyleIfDefined(cell.format, 'textAlign', customStyles.textAlign);
|
|
25690
|
+
setBorderColorIfExists(cell.format, 'borderBottom', customStyles.borderBottomColor);
|
|
25691
|
+
try {
|
|
25692
|
+
for (var _g = (0, tslib_1.__values)(cell.blocks), _h = _g.next(); !_h.done; _h = _g.next()) {
|
|
25693
|
+
var block = _h.value;
|
|
25694
|
+
if (block.blockType == 'Paragraph') {
|
|
25695
|
+
try {
|
|
25696
|
+
for (var _j = (e_4 = void 0, (0, tslib_1.__values)(block.segments)), _k = _j.next(); !_k.done; _k = _j.next()) {
|
|
25697
|
+
var segment = _k.value;
|
|
25698
|
+
(0, mutate_1.mutateSegment)(block, segment, function (cellSegment) {
|
|
25699
|
+
if (customStyles.italic) {
|
|
25700
|
+
cellSegment.format.italic = customStyles.italic;
|
|
25701
|
+
}
|
|
25702
|
+
else if (cellSegment.format.italic) {
|
|
25703
|
+
delete cellSegment.format.italic;
|
|
25704
|
+
}
|
|
25705
|
+
});
|
|
25706
|
+
}
|
|
25707
|
+
}
|
|
25708
|
+
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
25709
|
+
finally {
|
|
25710
|
+
try {
|
|
25711
|
+
if (_k && !_k.done && (_b = _j.return)) _b.call(_j);
|
|
25712
|
+
}
|
|
25713
|
+
finally { if (e_4) throw e_4.error; }
|
|
25714
|
+
}
|
|
25715
|
+
}
|
|
25716
|
+
}
|
|
25717
|
+
}
|
|
25718
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
25719
|
+
finally {
|
|
25720
|
+
try {
|
|
25721
|
+
if (_h && !_h.done && (_a = _g.return)) _a.call(_g);
|
|
25722
|
+
}
|
|
25723
|
+
finally { if (e_3) throw e_3.error; }
|
|
25724
|
+
}
|
|
25588
25725
|
}
|
|
25589
25726
|
});
|
|
25590
25727
|
}
|
|
@@ -26498,7 +26635,7 @@ function mergeParagraph(markerPosition, newPara, mergeToCurrentParagraph, contex
|
|
|
26498
26635
|
}
|
|
26499
26636
|
}
|
|
26500
26637
|
function mergeTables(markerPosition, newTable, source) {
|
|
26501
|
-
var _a, _b, _c, _d, _e;
|
|
26638
|
+
var _a, _b, _c, _d, _e, _f;
|
|
26502
26639
|
var tableContext = markerPosition.tableContext, marker = markerPosition.marker;
|
|
26503
26640
|
if (tableContext && source.blocks.length == 1 && source.blocks[0] == newTable) {
|
|
26504
26641
|
var readonlyTable = tableContext.table, colIndex = tableContext.colIndex, rowIndex = tableContext.rowIndex;
|
|
@@ -26535,12 +26672,30 @@ function mergeTables(markerPosition, newTable, source) {
|
|
|
26535
26672
|
}
|
|
26536
26673
|
}
|
|
26537
26674
|
}
|
|
26675
|
+
var logicalRowOffsets = [];
|
|
26676
|
+
var logicalRowCount = 0;
|
|
26677
|
+
for (var i = 0; i < newTableRowCount; i++) {
|
|
26678
|
+
logicalRowOffsets[i] = logicalRowCount;
|
|
26679
|
+
var row = newTable.rows[i];
|
|
26680
|
+
if (row && row.cells.some(function (cell) { return !cell.spanAbove; })) {
|
|
26681
|
+
logicalRowCount++;
|
|
26682
|
+
}
|
|
26683
|
+
}
|
|
26538
26684
|
for (var i = 0; i < newTable.rows.length; i++) {
|
|
26539
|
-
var
|
|
26685
|
+
var sourceRow = newTable.rows[i];
|
|
26686
|
+
var targetRowIndex = getTargetRowIndex(table, rowIndex, logicalRowOffsets[i], colIndex);
|
|
26687
|
+
var logicalColOffsets = [];
|
|
26688
|
+
var logicalColCount = 0;
|
|
26689
|
+
for (var j = 0; j < sourceRow.cells.length; j++) {
|
|
26690
|
+
logicalColOffsets[j] = logicalColCount;
|
|
26691
|
+
if (!((_e = sourceRow.cells[j]) === null || _e === void 0 ? void 0 : _e.spanLeft)) {
|
|
26692
|
+
logicalColCount++;
|
|
26693
|
+
}
|
|
26694
|
+
}
|
|
26540
26695
|
for (var j = 0; j < newTable.rows[i].cells.length; j++) {
|
|
26541
|
-
var newCell =
|
|
26542
|
-
var targetColIndex = getTargetColIndex(table, targetRowIndex, colIndex, j);
|
|
26543
|
-
var oldCell = (
|
|
26696
|
+
var newCell = sourceRow.cells[j];
|
|
26697
|
+
var targetColIndex = getTargetColIndex(table, targetRowIndex, colIndex, logicalColOffsets[j]);
|
|
26698
|
+
var oldCell = (_f = table.rows[targetRowIndex]) === null || _f === void 0 ? void 0 : _f.cells[targetColIndex];
|
|
26544
26699
|
table.rows[targetRowIndex].cells[targetColIndex] = newCell;
|
|
26545
26700
|
if (i == 0 && j == 0) {
|
|
26546
26701
|
var newMarker = (0, createSelectionMarker_1.createSelectionMarker)(marker.format);
|
|
@@ -27779,14 +27934,28 @@ var updateMetadata_1 = __webpack_require__(/*! ./updateMetadata */ "./packages/r
|
|
|
27779
27934
|
var TableBorderFormat_1 = __webpack_require__(/*! ../../constants/TableBorderFormat */ "./packages/roosterjs-content-model-dom/lib/constants/TableBorderFormat.ts");
|
|
27780
27935
|
var definitionCreators_1 = __webpack_require__(/*! ./definitionCreators */ "./packages/roosterjs-content-model-dom/lib/modelApi/metadata/definitionCreators.ts");
|
|
27781
27936
|
var NullStringDefinition = (0, definitionCreators_1.createStringDefinition)(false /** isOptional */, undefined /** value */, true /** allowNull */);
|
|
27937
|
+
var OptionalStringDefinition = (0, definitionCreators_1.createStringDefinition)(true /** isOptional */);
|
|
27938
|
+
var OptionalBooleanDefinition = (0, definitionCreators_1.createBooleanDefinition)(true /** isOptional */);
|
|
27782
27939
|
var BooleanDefinition = (0, definitionCreators_1.createBooleanDefinition)(false /** isOptional */);
|
|
27940
|
+
var TableSpecialCellFormatDefinition = (0, definitionCreators_1.createObjectDefinition)({
|
|
27941
|
+
fontWeight: OptionalStringDefinition,
|
|
27942
|
+
italic: OptionalBooleanDefinition,
|
|
27943
|
+
borderTopColor: OptionalStringDefinition,
|
|
27944
|
+
borderRightColor: OptionalStringDefinition,
|
|
27945
|
+
borderBottomColor: OptionalStringDefinition,
|
|
27946
|
+
borderLeftColor: OptionalStringDefinition,
|
|
27947
|
+
textAlign: OptionalStringDefinition,
|
|
27948
|
+
backgroundColor: OptionalStringDefinition,
|
|
27949
|
+
}, true /* isOptional */, true /** allowNull */);
|
|
27783
27950
|
var TableFormatDefinition = (0, definitionCreators_1.createObjectDefinition)({
|
|
27784
27951
|
topBorderColor: NullStringDefinition,
|
|
27785
27952
|
bottomBorderColor: NullStringDefinition,
|
|
27786
27953
|
verticalBorderColor: NullStringDefinition,
|
|
27787
27954
|
hasHeaderRow: BooleanDefinition,
|
|
27788
27955
|
headerRowColor: NullStringDefinition,
|
|
27956
|
+
headerRowCustomStyles: TableSpecialCellFormatDefinition,
|
|
27789
27957
|
hasFirstColumn: BooleanDefinition,
|
|
27958
|
+
firstColumnCustomStyles: TableSpecialCellFormatDefinition,
|
|
27790
27959
|
hasBandedColumns: BooleanDefinition,
|
|
27791
27960
|
hasBandedRows: BooleanDefinition,
|
|
27792
27961
|
bgColorEven: NullStringDefinition,
|
|
@@ -29513,23 +29682,40 @@ var handleParagraph = function (doc, parent, paragraph, context, refNode) {
|
|
|
29513
29682
|
segment: null,
|
|
29514
29683
|
};
|
|
29515
29684
|
var handleSegments = function () {
|
|
29685
|
+
var e_1, _a;
|
|
29686
|
+
var _b;
|
|
29516
29687
|
var parent = container;
|
|
29517
29688
|
if (parent) {
|
|
29518
29689
|
var firstSegment = paragraph.segments[0];
|
|
29690
|
+
var segmentContext = context;
|
|
29519
29691
|
if ((firstSegment === null || firstSegment === void 0 ? void 0 : firstSegment.segmentType) == 'SelectionMarker') {
|
|
29520
29692
|
// Make sure there is a segment created before selection marker.
|
|
29521
29693
|
// If selection marker is the first selected segment in a paragraph, create a dummy text node,
|
|
29522
29694
|
// 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: '' }),
|
|
29695
|
+
context.modelHandlers.text(doc, parent, (0, tslib_1.__assign)((0, tslib_1.__assign)({}, firstSegment), { segmentType: 'Text', text: '' }), segmentContext, []);
|
|
29524
29696
|
}
|
|
29525
|
-
paragraph.segments.
|
|
29697
|
+
for (var i = 0; i < paragraph.segments.length; i++) {
|
|
29698
|
+
var segment = paragraph.segments[i];
|
|
29699
|
+
segmentContext.noFollowingTextSegmentOrLast =
|
|
29700
|
+
i === paragraph.segments.length - 1 ||
|
|
29701
|
+
!hasTextSegmentAfter(paragraph.segments, i);
|
|
29526
29702
|
var newSegments = [];
|
|
29527
|
-
context.modelHandlers.segment(doc, parent, segment,
|
|
29528
|
-
|
|
29529
|
-
var
|
|
29530
|
-
|
|
29531
|
-
|
|
29532
|
-
|
|
29703
|
+
context.modelHandlers.segment(doc, parent, segment, segmentContext, newSegments);
|
|
29704
|
+
try {
|
|
29705
|
+
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()) {
|
|
29706
|
+
var node = newSegments_1_1.value;
|
|
29707
|
+
(_b = context.domIndexer) === null || _b === void 0 ? void 0 : _b.onSegment(node, paragraph, [segment]);
|
|
29708
|
+
}
|
|
29709
|
+
}
|
|
29710
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
29711
|
+
finally {
|
|
29712
|
+
try {
|
|
29713
|
+
if (newSegments_1_1 && !newSegments_1_1.done && (_a = newSegments_1.return)) _a.call(newSegments_1);
|
|
29714
|
+
}
|
|
29715
|
+
finally { if (e_1) throw e_1.error; }
|
|
29716
|
+
}
|
|
29717
|
+
}
|
|
29718
|
+
delete segmentContext.noFollowingTextSegmentOrLast;
|
|
29533
29719
|
}
|
|
29534
29720
|
};
|
|
29535
29721
|
if (needParagraphWrapper) {
|
|
@@ -29569,6 +29755,21 @@ var handleParagraph = function (doc, parent, paragraph, context, refNode) {
|
|
|
29569
29755
|
return refNode;
|
|
29570
29756
|
};
|
|
29571
29757
|
exports.handleParagraph = handleParagraph;
|
|
29758
|
+
function hasTextSegmentAfter(segments, index) {
|
|
29759
|
+
for (var i = index + 1; i < segments.length; i++) {
|
|
29760
|
+
var type = segments[i].segmentType;
|
|
29761
|
+
if (type === 'SelectionMarker') {
|
|
29762
|
+
continue;
|
|
29763
|
+
}
|
|
29764
|
+
if (type === 'Text') {
|
|
29765
|
+
return true;
|
|
29766
|
+
}
|
|
29767
|
+
else {
|
|
29768
|
+
return false;
|
|
29769
|
+
}
|
|
29770
|
+
}
|
|
29771
|
+
return false;
|
|
29772
|
+
}
|
|
29572
29773
|
|
|
29573
29774
|
|
|
29574
29775
|
/***/ },
|
|
@@ -29809,11 +30010,15 @@ exports.handleTable = handleTable;
|
|
|
29809
30010
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
29810
30011
|
exports.handleText = void 0;
|
|
29811
30012
|
var handleSegmentCommon_1 = __webpack_require__(/*! ../utils/handleSegmentCommon */ "./packages/roosterjs-content-model-dom/lib/modelToDom/utils/handleSegmentCommon.ts");
|
|
30013
|
+
var nonBreakingSpace = '\u00A0';
|
|
29812
30014
|
/**
|
|
29813
30015
|
* @internal
|
|
29814
30016
|
*/
|
|
29815
30017
|
var handleText = function (doc, parent, segment, context, segmentNodes) {
|
|
29816
|
-
var
|
|
30018
|
+
var textContent = context.noFollowingTextSegmentOrLast && segment.text.endsWith(' ')
|
|
30019
|
+
? segment.text.slice(0, -1) + nonBreakingSpace
|
|
30020
|
+
: segment.text;
|
|
30021
|
+
var txt = doc.createTextNode(textContent);
|
|
29817
30022
|
var element = doc.createElement('span');
|
|
29818
30023
|
parent.appendChild(element);
|
|
29819
30024
|
element.appendChild(txt);
|
|
@@ -30099,8 +30304,9 @@ function handleSegmentCommon(doc, segmentNode, containerNode, segment, context,
|
|
|
30099
30304
|
}
|
|
30100
30305
|
(0, applyFormat_1.applyFormat)(containerNode, context.formatAppliers.styleBasedSegment, segment.format, context);
|
|
30101
30306
|
segmentNodes === null || segmentNodes === void 0 ? void 0 : segmentNodes.push(segmentNode);
|
|
30102
|
-
context.modelHandlers.segmentDecorator(doc, containerNode, segment, context, segmentNodes);
|
|
30103
30307
|
(0, applyFormat_1.applyFormat)(containerNode, context.formatAppliers.elementBasedSegment, segment.format, context);
|
|
30308
|
+
context.modelHandlers.segmentDecorator(doc, containerNode, segment, context, segmentNodes);
|
|
30309
|
+
(0, applyFormat_1.applyFormat)(containerNode, context.formatAppliers.superOrSubScript, segment.format, context);
|
|
30104
30310
|
(_a = context.onNodeCreated) === null || _a === void 0 ? void 0 : _a.call(context, segment, segmentNode);
|
|
30105
30311
|
}
|
|
30106
30312
|
exports.handleSegmentCommon = handleSegmentCommon;
|
|
@@ -36315,7 +36521,7 @@ var ImageEditPlugin = /** @class */ (function () {
|
|
|
36315
36521
|
operation === 'crop');
|
|
36316
36522
|
};
|
|
36317
36523
|
ImageEditPlugin.prototype.canRegenerateImage = function (image) {
|
|
36318
|
-
return (0, canRegenerateImage_1.canRegenerateImage)(image);
|
|
36524
|
+
return (0, canRegenerateImage_1.canRegenerateImage)(image, this.options.resolveImageSource);
|
|
36319
36525
|
};
|
|
36320
36526
|
ImageEditPlugin.prototype.startCropMode = function (editor, image, isRTL) {
|
|
36321
36527
|
var _this = this;
|
|
@@ -37076,12 +37282,21 @@ exports.canRegenerateImage = void 0;
|
|
|
37076
37282
|
* Check if we can regenerate edited image from the source image.
|
|
37077
37283
|
* An image can't regenerate result when there is CORS issue of the source content.
|
|
37078
37284
|
* @param img The image element to test
|
|
37285
|
+
* @param resolveImageSource Optional callback to resolve an image `src` into a canvas-safe URL (e.g., a data URL).
|
|
37079
37286
|
* @returns True when we can regenerate the edited image, otherwise false
|
|
37080
37287
|
*/
|
|
37081
|
-
function canRegenerateImage(img) {
|
|
37288
|
+
function canRegenerateImage(img, resolveImageSource) {
|
|
37082
37289
|
if (!img) {
|
|
37083
37290
|
return false;
|
|
37084
37291
|
}
|
|
37292
|
+
// If a resolveImageSource callback is provided, the image source should be resolved to a
|
|
37293
|
+
// canvas-compatible URL when editing starts, so we can assume the image can be regenerated.
|
|
37294
|
+
if (resolveImageSource && img.src) {
|
|
37295
|
+
var resolved = resolveImageSource(img.src);
|
|
37296
|
+
if (resolved && resolved !== img.src) {
|
|
37297
|
+
return true;
|
|
37298
|
+
}
|
|
37299
|
+
}
|
|
37085
37300
|
try {
|
|
37086
37301
|
var canvas = img.ownerDocument.createElement('canvas');
|
|
37087
37302
|
canvas.width = 10;
|
|
@@ -37185,7 +37400,7 @@ var IMAGE_EDIT_SHADOW_ROOT = 'ImageEditShadowRoot';
|
|
|
37185
37400
|
* @internal
|
|
37186
37401
|
*/
|
|
37187
37402
|
function createImageWrapper(editor, image, options, editInfo, htmlOptions, operation) {
|
|
37188
|
-
var imageClone = cloneImage(image, editInfo);
|
|
37403
|
+
var imageClone = cloneImage(image, editInfo, options.resolveImageSource);
|
|
37189
37404
|
var doc = editor.getDocument();
|
|
37190
37405
|
var rotators = [];
|
|
37191
37406
|
if (!options.disableRotate && operation.indexOf('rotate') > -1) {
|
|
@@ -37251,11 +37466,12 @@ var createBorder = function (editor, borderColor) {
|
|
|
37251
37466
|
resizeBorder.setAttribute("style", "position:absolute;left:0;right:0;top:0;bottom:0;border:solid 2px " + borderColor + ";pointer-events:none;");
|
|
37252
37467
|
return resizeBorder;
|
|
37253
37468
|
};
|
|
37254
|
-
var cloneImage = function (image, editInfo) {
|
|
37469
|
+
var cloneImage = function (image, editInfo, resolveImageSource) {
|
|
37470
|
+
var _a;
|
|
37255
37471
|
var imageClone = image.cloneNode(true);
|
|
37256
37472
|
imageClone.style.removeProperty('transform');
|
|
37257
37473
|
if (editInfo.src) {
|
|
37258
|
-
imageClone.src = editInfo.src;
|
|
37474
|
+
imageClone.src = (_a = resolveImageSource === null || resolveImageSource === void 0 ? void 0 : resolveImageSource(editInfo.src)) !== null && _a !== void 0 ? _a : editInfo.src;
|
|
37259
37475
|
imageClone.removeAttribute('id');
|
|
37260
37476
|
imageClone.style.removeProperty('max-width');
|
|
37261
37477
|
imageClone.style.removeProperty('max-height');
|
|
@@ -38920,6 +39136,7 @@ var LIST_ELEMENT_TAGS = ['UL', 'OL', 'LI'];
|
|
|
38920
39136
|
var LIST_ELEMENT_SELECTOR = LIST_ELEMENT_TAGS.join(',');
|
|
38921
39137
|
var END_OF_PARAGRAPH = 'EOP';
|
|
38922
39138
|
var SELECTED_CLASS = 'Selected';
|
|
39139
|
+
var BASE_PADDING_WAC_LISTS = '1em';
|
|
38923
39140
|
/**
|
|
38924
39141
|
* Wac components do not use sub and super tags, instead only add vertical align to a span.
|
|
38925
39142
|
* This parser normalize the content for content model
|
|
@@ -39017,15 +39234,13 @@ var wacListItemParser = function (format, element) {
|
|
|
39017
39234
|
if (element.style.display === 'block') {
|
|
39018
39235
|
format.displayForDummyItem = undefined;
|
|
39019
39236
|
}
|
|
39020
|
-
format.marginLeft = undefined;
|
|
39021
|
-
format.marginRight = undefined;
|
|
39022
39237
|
};
|
|
39023
39238
|
/**
|
|
39024
39239
|
* Wac usually adds padding to lists which is unwanted so remove it.
|
|
39025
39240
|
*/
|
|
39026
39241
|
var wacListLevelParser = function (format) {
|
|
39027
39242
|
format.marginLeft = undefined;
|
|
39028
|
-
format.paddingLeft =
|
|
39243
|
+
format.paddingLeft = BASE_PADDING_WAC_LISTS;
|
|
39029
39244
|
};
|
|
39030
39245
|
/**
|
|
39031
39246
|
* This function returns whether we need to clear the list format.
|
|
@@ -39244,6 +39459,7 @@ var getStyles_1 = __webpack_require__(/*! ../utils/getStyles */ "./packages/roos
|
|
|
39244
39459
|
var listLevelParser_1 = __webpack_require__(/*! ../parsers/listLevelParser */ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/listLevelParser.ts");
|
|
39245
39460
|
var processWordComments_1 = __webpack_require__(/*! ./processWordComments */ "./packages/roosterjs-content-model-plugins/lib/paste/WordDesktop/processWordComments.ts");
|
|
39246
39461
|
var processWordLists_1 = __webpack_require__(/*! ./processWordLists */ "./packages/roosterjs-content-model-plugins/lib/paste/WordDesktop/processWordLists.ts");
|
|
39462
|
+
var adjustWordListMarginParser_1 = __webpack_require__(/*! ../parsers/adjustWordListMarginParser */ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/adjustWordListMarginParser.ts");
|
|
39247
39463
|
var removeNegativeTextIndentParser_1 = __webpack_require__(/*! ../parsers/removeNegativeTextIndentParser */ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/removeNegativeTextIndentParser.ts");
|
|
39248
39464
|
var setProcessor_1 = __webpack_require__(/*! ../utils/setProcessor */ "./packages/roosterjs-content-model-plugins/lib/paste/utils/setProcessor.ts");
|
|
39249
39465
|
var wordContainerParser_1 = __webpack_require__(/*! ../parsers/wordContainerParser */ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/wordContainerParser.ts");
|
|
@@ -39260,6 +39476,7 @@ function processPastedContentFromWordDesktop(domToModelOption, htmlString) {
|
|
|
39260
39476
|
(0, addParser_1.addParser)(domToModelOption, 'block', adjustPercentileLineHeightParser_1.adjustPercentileLineHeight);
|
|
39261
39477
|
(0, addParser_1.addParser)(domToModelOption, 'block', removeNegativeTextIndentParser_1.removeNegativeTextIndentParser);
|
|
39262
39478
|
(0, addParser_1.addParser)(domToModelOption, 'listItemElement', removeNegativeTextIndentParser_1.removeNegativeTextIndentParser);
|
|
39479
|
+
(0, addParser_1.addParser)(domToModelOption, 'listItemElement', adjustWordListMarginParser_1.adjustWordListMarginParser);
|
|
39263
39480
|
(0, addParser_1.addParser)(domToModelOption, 'listLevel', listLevelParser_1.listLevelParser);
|
|
39264
39481
|
(0, addParser_1.addParser)(domToModelOption, 'container', wordContainerParser_1.wordContainerParser);
|
|
39265
39482
|
(0, addParser_1.addParser)(domToModelOption, 'table', wordTableParser_1.wordTableParser);
|
|
@@ -39684,6 +39901,42 @@ function adjustPercentileLineHeight(format, element) {
|
|
|
39684
39901
|
exports.adjustPercentileLineHeight = adjustPercentileLineHeight;
|
|
39685
39902
|
|
|
39686
39903
|
|
|
39904
|
+
/***/ },
|
|
39905
|
+
|
|
39906
|
+
/***/ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/adjustWordListMarginParser.ts"
|
|
39907
|
+
/*!**************************************************************************************************!*\
|
|
39908
|
+
!*** ./packages/roosterjs-content-model-plugins/lib/paste/parsers/adjustWordListMarginParser.ts ***!
|
|
39909
|
+
\**************************************************************************************************/
|
|
39910
|
+
(__unused_webpack_module, exports, __webpack_require__) {
|
|
39911
|
+
|
|
39912
|
+
"use strict";
|
|
39913
|
+
|
|
39914
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
39915
|
+
exports.adjustWordListMarginParser = void 0;
|
|
39916
|
+
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
39917
|
+
var MSO_LIST_PARAGRAPH_CLASS = 'MsoListParagraph';
|
|
39918
|
+
// Default list padding from the HTML user-agent stylesheet (paddingInlineStart for <ul>/<ol>)
|
|
39919
|
+
var DEFAULT_LIST_PADDING_INLINE_START = '40px';
|
|
39920
|
+
/**
|
|
39921
|
+
* @internal
|
|
39922
|
+
* Parser that subtracts the default list format (paddingInlineStart: 40px) from
|
|
39923
|
+
* the marginLeft of list item elements that have the MsoListParagraph class,
|
|
39924
|
+
* since Word adds the full indentation as margin on the paragraph, which
|
|
39925
|
+
* duplicates the padding the list element already provides.
|
|
39926
|
+
*/
|
|
39927
|
+
var adjustWordListMarginParser = function (format, element) {
|
|
39928
|
+
if (element.classList.contains(MSO_LIST_PARAGRAPH_CLASS) && format.marginLeft) {
|
|
39929
|
+
var currentPx = (0, roosterjs_content_model_dom_1.parseValueWithUnit)(format.marginLeft, element);
|
|
39930
|
+
var defaultPx = (0, roosterjs_content_model_dom_1.parseValueWithUnit)(DEFAULT_LIST_PADDING_INLINE_START);
|
|
39931
|
+
var result = currentPx - defaultPx;
|
|
39932
|
+
if (result > 0) {
|
|
39933
|
+
format.marginLeft = result + "px";
|
|
39934
|
+
}
|
|
39935
|
+
}
|
|
39936
|
+
};
|
|
39937
|
+
exports.adjustWordListMarginParser = adjustWordListMarginParser;
|
|
39938
|
+
|
|
39939
|
+
|
|
39687
39940
|
/***/ },
|
|
39688
39941
|
|
|
39689
39942
|
/***/ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/blockElementParser.ts"
|
|
@@ -42569,7 +42822,6 @@ var createElement_1 = __webpack_require__(/*! ../../../pluginUtils/CreateElement
|
|
|
42569
42822
|
var DragAndDropHelper_1 = __webpack_require__(/*! ../../../pluginUtils/DragAndDrop/DragAndDropHelper */ "./packages/roosterjs-content-model-plugins/lib/pluginUtils/DragAndDrop/DragAndDropHelper.ts");
|
|
42570
42823
|
var roosterjs_content_model_api_1 = __webpack_require__(/*! roosterjs-content-model-api */ "./packages/roosterjs-content-model-api/lib/index.ts");
|
|
42571
42824
|
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
42825
|
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
42574
42826
|
var TABLE_MOVER_LENGTH = 12;
|
|
42575
42827
|
/**
|
|
@@ -42697,7 +42949,7 @@ function onDragging(context, event, initValue) {
|
|
|
42697
42949
|
// Move table outline rectangle
|
|
42698
42950
|
tableRect.style.top = event.clientY + TABLE_MOVER_LENGTH + "px";
|
|
42699
42951
|
tableRect.style.left = event.clientX + TABLE_MOVER_LENGTH + "px";
|
|
42700
|
-
var pos = (0,
|
|
42952
|
+
var pos = (0, roosterjs_content_model_dom_1.getNodePositionFromEvent)(editor.getDocument(), editor.getDOMHelper(), event.clientX, event.clientY);
|
|
42701
42953
|
if (pos) {
|
|
42702
42954
|
var range = editor.getDocument().createRange();
|
|
42703
42955
|
range.setStart(pos.node, pos.offset);
|
|
@@ -42737,7 +42989,7 @@ function onDragEnd(context, event, initValue) {
|
|
|
42737
42989
|
}
|
|
42738
42990
|
var insertionSuccess_1 = false;
|
|
42739
42991
|
// Get position to insert table
|
|
42740
|
-
var insertPosition = (0,
|
|
42992
|
+
var insertPosition = (0, roosterjs_content_model_dom_1.getNodePositionFromEvent)(editor.getDocument(), editor.getDOMHelper(), event.clientX, event.clientY);
|
|
42741
42993
|
if (insertPosition) {
|
|
42742
42994
|
// Move table to new position
|
|
42743
42995
|
(0, roosterjs_content_model_api_1.formatInsertPointWithContentModel)(editor, insertPosition, function (model, context, ip) {
|
|
@@ -43274,7 +43526,7 @@ exports.getCMTableFromTable = getCMTableFromTable;
|
|
|
43274
43526
|
|
|
43275
43527
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
43276
43528
|
exports.TouchPlugin = void 0;
|
|
43277
|
-
var
|
|
43529
|
+
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
43278
43530
|
var MAX_TOUCH_MOVE_DISTANCE = 6; // the max number of offsets for the touch selection to move
|
|
43279
43531
|
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
43532
|
var PUNCTUATION_MATCHING_REGEX = /[.,;:!]/;
|
|
@@ -43342,7 +43594,7 @@ var TouchPlugin = /** @class */ (function () {
|
|
|
43342
43594
|
if (_this.editor) {
|
|
43343
43595
|
if (!_this.isDblClicked) {
|
|
43344
43596
|
_this.editor.focus();
|
|
43345
|
-
var caretPosition = (0,
|
|
43597
|
+
var caretPosition = (0, roosterjs_content_model_dom_1.getNodePositionFromEvent)(_this.editor.getDocument(), _this.editor.getDOMHelper(), event.rawEvent.x, event.rawEvent.y);
|
|
43346
43598
|
var newRange = _this.editor.getDocument().createRange();
|
|
43347
43599
|
if (caretPosition) {
|
|
43348
43600
|
var node = caretPosition.node, offset = caretPosition.offset;
|
|
@@ -43390,7 +43642,7 @@ var TouchPlugin = /** @class */ (function () {
|
|
|
43390
43642
|
if (this.isTouchPenPointerEvent) {
|
|
43391
43643
|
event.rawEvent.preventDefault();
|
|
43392
43644
|
this.isDblClicked = true;
|
|
43393
|
-
var caretPosition = (0,
|
|
43645
|
+
var caretPosition = (0, roosterjs_content_model_dom_1.getNodePositionFromEvent)(this.editor.getDocument(), this.editor.getDOMHelper(), event.rawEvent.x, event.rawEvent.y);
|
|
43394
43646
|
if (caretPosition) {
|
|
43395
43647
|
var node = caretPosition.node, offset = caretPosition.offset;
|
|
43396
43648
|
if (node.nodeType !== Node.TEXT_NODE) {
|
|
@@ -43484,50 +43736,6 @@ function findWordBoundaries(text, offset) {
|
|
|
43484
43736
|
}
|
|
43485
43737
|
|
|
43486
43738
|
|
|
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
43739
|
/***/ },
|
|
43532
43740
|
|
|
43533
43741
|
/***/ "./packages/roosterjs-content-model-plugins/lib/watermark/WatermarkPlugin.ts"
|