roosterjs 9.3.1 → 9.4.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 +867 -93
- package/dist/rooster-amd.js +576 -326
- 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-amd.js +54 -54
- package/dist/rooster-react-amd.js.map +1 -1
- package/dist/rooster.d.ts +867 -93
- package/dist/rooster.js +576 -326
- package/dist/rooster.js.map +1 -1
- package/package.json +6 -6
package/dist/rooster.js
CHANGED
|
@@ -2446,7 +2446,7 @@ function setModelIndentation(model, indentation, length, context) {
|
|
|
2446
2446
|
var currentParent = parent;
|
|
2447
2447
|
while (currentParent && modifiedBlocks.indexOf(currentBlock) < 0) {
|
|
2448
2448
|
var index = path.indexOf(currentParent);
|
|
2449
|
-
var format = currentBlock.format;
|
|
2449
|
+
var format = (0, roosterjs_content_model_dom_1.mutateBlock)(currentBlock).format;
|
|
2450
2450
|
var newValue = calculateMarginValue(format, isIndent, length);
|
|
2451
2451
|
if (newValue !== null) {
|
|
2452
2452
|
var isRtl = format.direction == 'rtl';
|
|
@@ -2894,7 +2894,7 @@ function insertEntityModel(model, entityModel, position, isBlock, focusAfterEnti
|
|
|
2894
2894
|
var pathIndex = position == 'root'
|
|
2895
2895
|
? (0, roosterjs_content_model_dom_1.getClosestAncestorBlockGroupIndex)(path, ['TableCell', 'Document'])
|
|
2896
2896
|
: 0;
|
|
2897
|
-
blockParent = path[pathIndex];
|
|
2897
|
+
blockParent = (0, roosterjs_content_model_dom_1.mutateBlock)(path[pathIndex]);
|
|
2898
2898
|
var child = path[pathIndex - 1];
|
|
2899
2899
|
var directChild = (child === null || child === void 0 ? void 0 : child.blockGroupType) == 'FormatContainer' ||
|
|
2900
2900
|
(child === null || child === void 0 ? void 0 : child.blockGroupType) == 'General' ||
|
|
@@ -2912,7 +2912,7 @@ function insertEntityModel(model, entityModel, position, isBlock, focusAfterEnti
|
|
|
2912
2912
|
var nextBlock = blockParent.blocks[blockIndex];
|
|
2913
2913
|
blocksToInsert.push(entityModel);
|
|
2914
2914
|
if ((nextBlock === null || nextBlock === void 0 ? void 0 : nextBlock.blockType) == 'Paragraph') {
|
|
2915
|
-
nextParagraph = nextBlock;
|
|
2915
|
+
nextParagraph = (0, roosterjs_content_model_dom_1.mutateBlock)(nextBlock);
|
|
2916
2916
|
}
|
|
2917
2917
|
else if (!nextBlock || nextBlock.blockType == 'Entity' || focusAfterEntity) {
|
|
2918
2918
|
nextParagraph = (0, roosterjs_content_model_dom_1.createParagraph)(false /*isImplicit*/, {}, model.format);
|
|
@@ -3134,11 +3134,6 @@ exports.matchLink = matchLink;
|
|
|
3134
3134
|
|
|
3135
3135
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
3136
3136
|
exports.findListItemsInSameThread = void 0;
|
|
3137
|
-
/**
|
|
3138
|
-
* @param model The content model
|
|
3139
|
-
* @param currentItem The current list item
|
|
3140
|
-
* Search for all list items in the same thread as the current list item
|
|
3141
|
-
*/
|
|
3142
3137
|
function findListItemsInSameThread(group, currentItem) {
|
|
3143
3138
|
var items = [];
|
|
3144
3139
|
findListItems(group, items);
|
|
@@ -3280,7 +3275,7 @@ function getListAnnounceData(path) {
|
|
|
3280
3275
|
}
|
|
3281
3276
|
else if (level.listType == 'OL') {
|
|
3282
3277
|
var listNumber = getListNumber(path, listItem);
|
|
3283
|
-
var metadata = (0, roosterjs_content_model_dom_1.
|
|
3278
|
+
var metadata = (0, roosterjs_content_model_dom_1.getListMetadata)(level);
|
|
3284
3279
|
var listStyle = (0, roosterjs_content_model_dom_1.getAutoListStyleType)('OL', metadata !== null && metadata !== void 0 ? metadata : {}, listItem.levels.length - 1, level.format.listStyleType);
|
|
3285
3280
|
return listStyle === undefined
|
|
3286
3281
|
? null
|
|
@@ -5024,7 +5019,7 @@ function changeImage(editor, file) {
|
|
|
5024
5019
|
if (dataUrl && !editor.isDisposed() && (selection === null || selection === void 0 ? void 0 : selection.type) === 'image') {
|
|
5025
5020
|
(0, formatImageWithContentModel_1.formatImageWithContentModel)(editor, 'changeImage', function (image) {
|
|
5026
5021
|
var _a, _b;
|
|
5027
|
-
var originalSrc = (_b = (_a = (0, roosterjs_content_model_dom_1.
|
|
5022
|
+
var originalSrc = (_b = (_a = (0, roosterjs_content_model_dom_1.getImageMetadata)(image)) === null || _a === void 0 ? void 0 : _a.src) !== null && _b !== void 0 ? _b : '';
|
|
5028
5023
|
var previousSrc = image.src;
|
|
5029
5024
|
image.src = dataUrl;
|
|
5030
5025
|
image.dataset = {};
|
|
@@ -6296,6 +6291,11 @@ function applyTableBorderFormat(editor, border, operation) {
|
|
|
6296
6291
|
//Format perimeter if necessary or possible
|
|
6297
6292
|
modifyPerimeter(tableModel, sel, borderFormat, perimeter, isRtl);
|
|
6298
6293
|
}
|
|
6294
|
+
var tableMeta = (0, roosterjs_content_model_dom_1.hasMetadata)(tableModel) ? (0, roosterjs_content_model_dom_1.getTableMetadata)(tableModel) : {};
|
|
6295
|
+
if (tableMeta) {
|
|
6296
|
+
// Enforce first column format if necessary
|
|
6297
|
+
(0, roosterjs_content_model_dom_1.setFirstColumnFormatBorders)(tableModel.rows, tableMeta);
|
|
6298
|
+
}
|
|
6299
6299
|
return true;
|
|
6300
6300
|
}
|
|
6301
6301
|
else {
|
|
@@ -6602,7 +6602,6 @@ function setTableCellShade(editor, color) {
|
|
|
6602
6602
|
editor.formatContentModel(function (model) {
|
|
6603
6603
|
var _a = (0, tslib_1.__read)((0, roosterjs_content_model_dom_1.getFirstSelectedTable)(model), 1), table = _a[0];
|
|
6604
6604
|
if (table) {
|
|
6605
|
-
(0, roosterjs_content_model_dom_1.normalizeTable)(table);
|
|
6606
6605
|
table.rows.forEach(function (row) {
|
|
6607
6606
|
return row.cells.forEach(function (cell) {
|
|
6608
6607
|
if ((0, roosterjs_content_model_dom_1.hasSelectionInBlockGroup)(cell)) {
|
|
@@ -9293,8 +9292,6 @@ var HIDE_CURSOR_CSS_KEY = '_DOMSelectionHideCursor';
|
|
|
9293
9292
|
var HIDE_SELECTION_CSS_KEY = '_DOMSelectionHideSelection';
|
|
9294
9293
|
var IMAGE_ID = 'image';
|
|
9295
9294
|
var TABLE_ID = 'table';
|
|
9296
|
-
var DEFAULT_SELECTION_BORDER_COLOR = '#DB626C';
|
|
9297
|
-
var TABLE_CSS_RULE = 'background-color:#C6C6C6!important;';
|
|
9298
9295
|
var CARET_CSS_RULE = 'caret-color: transparent';
|
|
9299
9296
|
var TRANSPARENT_SELECTION_CSS_RULE = 'background-color: transparent !important;';
|
|
9300
9297
|
var SELECTION_SELECTOR = '*::selection';
|
|
@@ -9307,6 +9304,7 @@ var setDOMSelection = function (core, selection, skipSelectionChangedEvent) {
|
|
|
9307
9304
|
// Set skipReselectOnFocus to skip this behavior
|
|
9308
9305
|
var skipReselectOnFocus = core.selection.skipReselectOnFocus;
|
|
9309
9306
|
var doc = core.physicalRoot.ownerDocument;
|
|
9307
|
+
var isDarkMode = core.lifecycle.isDarkMode;
|
|
9310
9308
|
core.selection.skipReselectOnFocus = true;
|
|
9311
9309
|
core.api.setEditorStyle(core, DOM_SELECTION_CSS_KEY, null /*cssRule*/);
|
|
9312
9310
|
core.api.setEditorStyle(core, HIDE_CURSOR_CSS_KEY, null /*cssRule*/);
|
|
@@ -9319,7 +9317,10 @@ var setDOMSelection = function (core, selection, skipSelectionChangedEvent) {
|
|
|
9319
9317
|
type: 'image',
|
|
9320
9318
|
image: image,
|
|
9321
9319
|
};
|
|
9322
|
-
|
|
9320
|
+
var imageSelectionColor = isDarkMode
|
|
9321
|
+
? core.selection.imageSelectionBorderColorDark
|
|
9322
|
+
: core.selection.imageSelectionBorderColor;
|
|
9323
|
+
core.api.setEditorStyle(core, DOM_SELECTION_CSS_KEY, "outline-style:auto!important; outline-color:" + imageSelectionColor + "!important;", ["span:has(>img#" + (0, ensureUniqueId_1.ensureUniqueId)(image, IMAGE_ID) + ")"]);
|
|
9323
9324
|
core.api.setEditorStyle(core, HIDE_SELECTION_CSS_KEY, TRANSPARENT_SELECTION_CSS_RULE, [SELECTION_SELECTOR]);
|
|
9324
9325
|
setRangeSelection(doc, image, false /* collapse */);
|
|
9325
9326
|
break;
|
|
@@ -9359,7 +9360,10 @@ var setDOMSelection = function (core, selection, skipSelectionChangedEvent) {
|
|
|
9359
9360
|
? ["#" + tableId, "#" + tableId + " *"]
|
|
9360
9361
|
: handleTableSelected(parsedTable, tableId, table, firstCell, lastCell);
|
|
9361
9362
|
core.selection.selection = selection;
|
|
9362
|
-
|
|
9363
|
+
var tableSelectionColor = isDarkMode
|
|
9364
|
+
? core.selection.tableCellSelectionBackgroundColorDark
|
|
9365
|
+
: core.selection.tableCellSelectionBackgroundColor;
|
|
9366
|
+
core.api.setEditorStyle(core, DOM_SELECTION_CSS_KEY, "background-color:" + tableSelectionColor + "!important;", tableSelectors);
|
|
9363
9367
|
core.api.setEditorStyle(core, HIDE_CURSOR_CSS_KEY, CARET_CSS_RULE);
|
|
9364
9368
|
var nodeToSelect = ((_c = firstCell.cell) === null || _c === void 0 ? void 0 : _c.firstElementChild) || firstCell.cell;
|
|
9365
9369
|
if (nodeToSelect) {
|
|
@@ -10667,7 +10671,7 @@ var deleteEmptyList = function (context) {
|
|
|
10667
10671
|
(!previousBlock || (0, roosterjs_content_model_dom_1.hasSelectionInBlock)(previousBlock)) &&
|
|
10668
10672
|
nextBlock &&
|
|
10669
10673
|
isEmptyBlock(nextBlock)) {
|
|
10670
|
-
item.levels = [];
|
|
10674
|
+
(0, roosterjs_content_model_dom_1.mutateBlock)(item).levels = [];
|
|
10671
10675
|
}
|
|
10672
10676
|
}
|
|
10673
10677
|
}
|
|
@@ -12104,7 +12108,7 @@ exports.createLifecyclePlugin = createLifecyclePlugin;
|
|
|
12104
12108
|
"use strict";
|
|
12105
12109
|
|
|
12106
12110
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
12107
|
-
exports.createSelectionPlugin = void 0;
|
|
12111
|
+
exports.createSelectionPlugin = exports.DEFAULT_TABLE_CELL_SELECTION_BACKGROUND_COLOR = exports.DEFAULT_SELECTION_BORDER_COLOR = void 0;
|
|
12108
12112
|
var findCoordinate_1 = __webpack_require__(/*! ./findCoordinate */ "./packages/roosterjs-content-model-core/lib/corePlugin/selection/findCoordinate.ts");
|
|
12109
12113
|
var findTableCellElement_1 = __webpack_require__(/*! ../../coreApi/setDOMSelection/findTableCellElement */ "./packages/roosterjs-content-model-core/lib/coreApi/setDOMSelection/findTableCellElement.ts");
|
|
12110
12114
|
var isSingleImageInSelection_1 = __webpack_require__(/*! ./isSingleImageInSelection */ "./packages/roosterjs-content-model-core/lib/corePlugin/selection/isSingleImageInSelection.ts");
|
|
@@ -12118,9 +12122,18 @@ var Down = 'ArrowDown';
|
|
|
12118
12122
|
var Left = 'ArrowLeft';
|
|
12119
12123
|
var Right = 'ArrowRight';
|
|
12120
12124
|
var Tab = 'Tab';
|
|
12125
|
+
/**
|
|
12126
|
+
* @internal
|
|
12127
|
+
*/
|
|
12128
|
+
exports.DEFAULT_SELECTION_BORDER_COLOR = '#DB626C';
|
|
12129
|
+
/**
|
|
12130
|
+
* @internal
|
|
12131
|
+
*/
|
|
12132
|
+
exports.DEFAULT_TABLE_CELL_SELECTION_BACKGROUND_COLOR = '#C6C6C6';
|
|
12121
12133
|
var SelectionPlugin = /** @class */ (function () {
|
|
12122
12134
|
function SelectionPlugin(options) {
|
|
12123
12135
|
var _this = this;
|
|
12136
|
+
var _a, _b;
|
|
12124
12137
|
this.editor = null;
|
|
12125
12138
|
this.disposer = null;
|
|
12126
12139
|
this.isSafari = false;
|
|
@@ -12241,7 +12254,14 @@ var SelectionPlugin = /** @class */ (function () {
|
|
|
12241
12254
|
this.state = {
|
|
12242
12255
|
selection: null,
|
|
12243
12256
|
tableSelection: null,
|
|
12244
|
-
imageSelectionBorderColor: options.imageSelectionBorderColor,
|
|
12257
|
+
imageSelectionBorderColor: (_a = options.imageSelectionBorderColor) !== null && _a !== void 0 ? _a : exports.DEFAULT_SELECTION_BORDER_COLOR,
|
|
12258
|
+
imageSelectionBorderColorDark: options.imageSelectionBorderColor
|
|
12259
|
+
? undefined
|
|
12260
|
+
: exports.DEFAULT_SELECTION_BORDER_COLOR,
|
|
12261
|
+
tableCellSelectionBackgroundColor: (_b = options.tableCellSelectionBackgroundColor) !== null && _b !== void 0 ? _b : exports.DEFAULT_TABLE_CELL_SELECTION_BACKGROUND_COLOR,
|
|
12262
|
+
tableCellSelectionBackgroundColorDark: options.tableCellSelectionBackgroundColor
|
|
12263
|
+
? undefined
|
|
12264
|
+
: exports.DEFAULT_TABLE_CELL_SELECTION_BACKGROUND_COLOR,
|
|
12245
12265
|
};
|
|
12246
12266
|
}
|
|
12247
12267
|
SelectionPlugin.prototype.getName = function () {
|
|
@@ -12249,6 +12269,17 @@ var SelectionPlugin = /** @class */ (function () {
|
|
|
12249
12269
|
};
|
|
12250
12270
|
SelectionPlugin.prototype.initialize = function (editor) {
|
|
12251
12271
|
this.editor = editor;
|
|
12272
|
+
if (!this.state.imageSelectionBorderColorDark && this.state.imageSelectionBorderColor) {
|
|
12273
|
+
this.state.imageSelectionBorderColorDark = editor
|
|
12274
|
+
.getColorManager()
|
|
12275
|
+
.getDarkColor(this.state.imageSelectionBorderColor, undefined, 'border');
|
|
12276
|
+
}
|
|
12277
|
+
if (!this.state.tableCellSelectionBackgroundColorDark &&
|
|
12278
|
+
this.state.tableCellSelectionBackgroundColor) {
|
|
12279
|
+
this.state.tableCellSelectionBackgroundColorDark = editor
|
|
12280
|
+
.getColorManager()
|
|
12281
|
+
.getDarkColor(this.state.tableCellSelectionBackgroundColor, undefined, 'background');
|
|
12282
|
+
}
|
|
12252
12283
|
var env = this.editor.getEnvironment();
|
|
12253
12284
|
var document = this.editor.getDocument();
|
|
12254
12285
|
this.isSafari = !!env.isSafari;
|
|
@@ -12555,6 +12586,7 @@ var SelectionPlugin = /** @class */ (function () {
|
|
|
12555
12586
|
var parsedTable;
|
|
12556
12587
|
var firstCo;
|
|
12557
12588
|
if ((table = domHelper.findClosestElementAncestor(tableStart, 'table')) &&
|
|
12589
|
+
table.isContentEditable &&
|
|
12558
12590
|
(parsedTable = (0, roosterjs_content_model_dom_1.parseTableCells)(table)) &&
|
|
12559
12591
|
(firstCo = (0, findCoordinate_1.findCoordinate)(parsedTable, tdStart, domHelper))) {
|
|
12560
12592
|
return { table: table, parsedTable: parsedTable, firstCo: firstCo, startNode: tdStart };
|
|
@@ -19583,9 +19615,9 @@ exports.shouldSetValue = shouldSetValue;
|
|
|
19583
19615
|
"use strict";
|
|
19584
19616
|
|
|
19585
19617
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
19586
|
-
exports.
|
|
19587
|
-
exports.
|
|
19588
|
-
exports.UnorderedListStyleMap = exports.OrderedListStyleMap = exports.TableBorderFormat = exports.NumberingListType = exports.BulletListType = exports.ChangeSource = exports.ListMetadataDefinition = exports.updateListMetadata = exports.updateTableMetadata = exports.updateTableCellMetadata = exports.updateImageMetadata = exports.getSegmentTextFormat = exports.getListStyleTypeFromString = exports.retrieveModelFormatState = exports.setTableCellBackgroundColor = exports.MIN_ALLOWED_TABLE_CELL_WIDTH = exports.normalizeTable = exports.applyTableFormat = exports.deleteBlock = exports.deleteSegment = exports.deleteSelection = exports.mergeModel = exports.cloneModel = exports.setSelection = exports.hasSelectionInBlockGroup = exports.hasSelectionInSegment = exports.hasSelectionInBlock = exports.getSelectedCells = exports.getSelectedSegmentsAndParagraphs = void 0;
|
|
19618
|
+
exports.createDivider = exports.createEntity = exports.createGeneralBlock = exports.createGeneralSegment = exports.createParagraphDecorator = exports.createContentModelDocument = exports.createImage = exports.createText = exports.createTableCell = exports.createTable = exports.createSelectionMarker = exports.createParagraph = exports.createFormatContainer = exports.createListItem = exports.createBr = 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.wrap = exports.wrapAllChildNodes = exports.moveChildNodes = exports.toArray = exports.getObjectKeys = exports.isElementOfType = exports.isNodeOfType = exports.hasMetadata = exports.getMetadata = exports.updateMetadata = exports.buildSelectionMarker = exports.isBlockElement = exports.areSameFormats = exports.parseFormat = exports.getRegularSelectionOffsets = exports.tableProcessor = exports.entityProcessor = exports.processChildNode = exports.handleRegularSelection = exports.childProcessor = exports.contentModelToText = exports.contentModelToDom = exports.domToContentModel = void 0;
|
|
19619
|
+
exports.iterateSelections = exports.getClosestAncestorBlockGroupIndex = exports.isBlockGroupOfType = exports.cacheGetEventData = exports.extractClipboardItems = exports.transformColor = exports.readFile = exports.parseTableCells = exports.normalizeText = exports.isSpace = exports.isPunctuation = exports.extractBorderValues = exports.combineBorderValue = exports.isCursorMovingKey = exports.isModifierKey = exports.isCharacterValue = exports.getSelectionRootNode = exports.isBold = exports.createModelToDomConfig = exports.createModelToDomContextWithConfig = exports.createModelToDomContext = exports.createDomToModelConfig = exports.createDomToModelContextWithConfig = exports.createDomToModelContext = exports.parseColor = exports.setColor = exports.getColor = exports.DeprecatedColors = exports.BorderKeys = exports.parseValueWithUnit = exports.getAutoListStyleType = exports.getOrderedListNumberStr = exports.setParagraphNotImplicit = 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 = void 0;
|
|
19620
|
+
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 = exports.getSegmentTextFormat = exports.getListStyleTypeFromString = exports.retrieveModelFormatState = exports.setTableCellBackgroundColor = 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 = void 0;
|
|
19589
19621
|
var domToContentModel_1 = __webpack_require__(/*! ./domToModel/domToContentModel */ "./packages/roosterjs-content-model-dom/lib/domToModel/domToContentModel.ts");
|
|
19590
19622
|
Object.defineProperty(exports, "domToContentModel", ({ enumerable: true, get: function () { return domToContentModel_1.domToContentModel; } }));
|
|
19591
19623
|
var contentModelToDom_1 = __webpack_require__(/*! ./modelToDom/contentModelToDom */ "./packages/roosterjs-content-model-dom/lib/modelToDom/contentModelToDom.ts");
|
|
@@ -19612,6 +19644,7 @@ var buildSelectionMarker_1 = __webpack_require__(/*! ./domToModel/utils/buildSel
|
|
|
19612
19644
|
Object.defineProperty(exports, "buildSelectionMarker", ({ enumerable: true, get: function () { return buildSelectionMarker_1.buildSelectionMarker; } }));
|
|
19613
19645
|
var updateMetadata_1 = __webpack_require__(/*! ./modelApi/metadata/updateMetadata */ "./packages/roosterjs-content-model-dom/lib/modelApi/metadata/updateMetadata.ts");
|
|
19614
19646
|
Object.defineProperty(exports, "updateMetadata", ({ enumerable: true, get: function () { return updateMetadata_1.updateMetadata; } }));
|
|
19647
|
+
Object.defineProperty(exports, "getMetadata", ({ enumerable: true, get: function () { return updateMetadata_1.getMetadata; } }));
|
|
19615
19648
|
Object.defineProperty(exports, "hasMetadata", ({ enumerable: true, get: function () { return updateMetadata_1.hasMetadata; } }));
|
|
19616
19649
|
var isNodeOfType_1 = __webpack_require__(/*! ./domUtils/isNodeOfType */ "./packages/roosterjs-content-model-dom/lib/domUtils/isNodeOfType.ts");
|
|
19617
19650
|
Object.defineProperty(exports, "isNodeOfType", ({ enumerable: true, get: function () { return isNodeOfType_1.isNodeOfType; } }));
|
|
@@ -19676,6 +19709,12 @@ var createListLevel_1 = __webpack_require__(/*! ./modelApi/creators/createListLe
|
|
|
19676
19709
|
Object.defineProperty(exports, "createListLevel", ({ enumerable: true, get: function () { return createListLevel_1.createListLevel; } }));
|
|
19677
19710
|
var createEmptyModel_1 = __webpack_require__(/*! ./modelApi/creators/createEmptyModel */ "./packages/roosterjs-content-model-dom/lib/modelApi/creators/createEmptyModel.ts");
|
|
19678
19711
|
Object.defineProperty(exports, "createEmptyModel", ({ enumerable: true, get: function () { return createEmptyModel_1.createEmptyModel; } }));
|
|
19712
|
+
var createTableRow_1 = __webpack_require__(/*! ./modelApi/creators/createTableRow */ "./packages/roosterjs-content-model-dom/lib/modelApi/creators/createTableRow.ts");
|
|
19713
|
+
Object.defineProperty(exports, "createTableRow", ({ enumerable: true, get: function () { return createTableRow_1.createTableRow; } }));
|
|
19714
|
+
var mutate_1 = __webpack_require__(/*! ./modelApi/common/mutate */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/mutate.ts");
|
|
19715
|
+
Object.defineProperty(exports, "mutateBlock", ({ enumerable: true, get: function () { return mutate_1.mutateBlock; } }));
|
|
19716
|
+
Object.defineProperty(exports, "mutateSegments", ({ enumerable: true, get: function () { return mutate_1.mutateSegments; } }));
|
|
19717
|
+
Object.defineProperty(exports, "mutateSegment", ({ enumerable: true, get: function () { return mutate_1.mutateSegment; } }));
|
|
19679
19718
|
var addBlock_1 = __webpack_require__(/*! ./modelApi/common/addBlock */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/addBlock.ts");
|
|
19680
19719
|
Object.defineProperty(exports, "addBlock", ({ enumerable: true, get: function () { return addBlock_1.addBlock; } }));
|
|
19681
19720
|
var addDecorators_1 = __webpack_require__(/*! ./modelApi/common/addDecorators */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/addDecorators.ts");
|
|
@@ -19781,6 +19820,7 @@ var deleteBlock_1 = __webpack_require__(/*! ./modelApi/editing/deleteBlock */ ".
|
|
|
19781
19820
|
Object.defineProperty(exports, "deleteBlock", ({ enumerable: true, get: function () { return deleteBlock_1.deleteBlock; } }));
|
|
19782
19821
|
var applyTableFormat_1 = __webpack_require__(/*! ./modelApi/editing/applyTableFormat */ "./packages/roosterjs-content-model-dom/lib/modelApi/editing/applyTableFormat.ts");
|
|
19783
19822
|
Object.defineProperty(exports, "applyTableFormat", ({ enumerable: true, get: function () { return applyTableFormat_1.applyTableFormat; } }));
|
|
19823
|
+
Object.defineProperty(exports, "setFirstColumnFormatBorders", ({ enumerable: true, get: function () { return applyTableFormat_1.setFirstColumnFormatBorders; } }));
|
|
19784
19824
|
var normalizeTable_1 = __webpack_require__(/*! ./modelApi/editing/normalizeTable */ "./packages/roosterjs-content-model-dom/lib/modelApi/editing/normalizeTable.ts");
|
|
19785
19825
|
Object.defineProperty(exports, "normalizeTable", ({ enumerable: true, get: function () { return normalizeTable_1.normalizeTable; } }));
|
|
19786
19826
|
Object.defineProperty(exports, "MIN_ALLOWED_TABLE_CELL_WIDTH", ({ enumerable: true, get: function () { return normalizeTable_1.MIN_ALLOWED_TABLE_CELL_WIDTH; } }));
|
|
@@ -19794,12 +19834,16 @@ var getSegmentTextFormat_1 = __webpack_require__(/*! ./modelApi/editing/getSegme
|
|
|
19794
19834
|
Object.defineProperty(exports, "getSegmentTextFormat", ({ enumerable: true, get: function () { return getSegmentTextFormat_1.getSegmentTextFormat; } }));
|
|
19795
19835
|
var updateImageMetadata_1 = __webpack_require__(/*! ./modelApi/metadata/updateImageMetadata */ "./packages/roosterjs-content-model-dom/lib/modelApi/metadata/updateImageMetadata.ts");
|
|
19796
19836
|
Object.defineProperty(exports, "updateImageMetadata", ({ enumerable: true, get: function () { return updateImageMetadata_1.updateImageMetadata; } }));
|
|
19837
|
+
Object.defineProperty(exports, "getImageMetadata", ({ enumerable: true, get: function () { return updateImageMetadata_1.getImageMetadata; } }));
|
|
19797
19838
|
var updateTableCellMetadata_1 = __webpack_require__(/*! ./modelApi/metadata/updateTableCellMetadata */ "./packages/roosterjs-content-model-dom/lib/modelApi/metadata/updateTableCellMetadata.ts");
|
|
19798
19839
|
Object.defineProperty(exports, "updateTableCellMetadata", ({ enumerable: true, get: function () { return updateTableCellMetadata_1.updateTableCellMetadata; } }));
|
|
19840
|
+
Object.defineProperty(exports, "getTableCellMetadata", ({ enumerable: true, get: function () { return updateTableCellMetadata_1.getTableCellMetadata; } }));
|
|
19799
19841
|
var updateTableMetadata_1 = __webpack_require__(/*! ./modelApi/metadata/updateTableMetadata */ "./packages/roosterjs-content-model-dom/lib/modelApi/metadata/updateTableMetadata.ts");
|
|
19800
19842
|
Object.defineProperty(exports, "updateTableMetadata", ({ enumerable: true, get: function () { return updateTableMetadata_1.updateTableMetadata; } }));
|
|
19843
|
+
Object.defineProperty(exports, "getTableMetadata", ({ enumerable: true, get: function () { return updateTableMetadata_1.getTableMetadata; } }));
|
|
19801
19844
|
var updateListMetadata_1 = __webpack_require__(/*! ./modelApi/metadata/updateListMetadata */ "./packages/roosterjs-content-model-dom/lib/modelApi/metadata/updateListMetadata.ts");
|
|
19802
19845
|
Object.defineProperty(exports, "updateListMetadata", ({ enumerable: true, get: function () { return updateListMetadata_1.updateListMetadata; } }));
|
|
19846
|
+
Object.defineProperty(exports, "getListMetadata", ({ enumerable: true, get: function () { return updateListMetadata_1.getListMetadata; } }));
|
|
19803
19847
|
Object.defineProperty(exports, "ListMetadataDefinition", ({ enumerable: true, get: function () { return updateListMetadata_1.ListMetadataDefinition; } }));
|
|
19804
19848
|
var ChangeSource_1 = __webpack_require__(/*! ./constants/ChangeSource */ "./packages/roosterjs-content-model-dom/lib/constants/ChangeSource.ts");
|
|
19805
19849
|
Object.defineProperty(exports, "ChangeSource", ({ enumerable: true, get: function () { return ChangeSource_1.ChangeSource; } }));
|
|
@@ -19821,19 +19865,20 @@ Object.defineProperty(exports, "UnorderedListStyleMap", ({ enumerable: true, get
|
|
|
19821
19865
|
/*!********************************************************************************************!*\
|
|
19822
19866
|
!*** ./packages/roosterjs-content-model-dom/lib/modelApi/block/setParagraphNotImplicit.ts ***!
|
|
19823
19867
|
\********************************************************************************************/
|
|
19824
|
-
/***/ ((__unused_webpack_module, exports) => {
|
|
19868
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
19825
19869
|
|
|
19826
19870
|
"use strict";
|
|
19827
19871
|
|
|
19828
19872
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
19829
19873
|
exports.setParagraphNotImplicit = void 0;
|
|
19874
|
+
var mutate_1 = __webpack_require__(/*! ../common/mutate */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/mutate.ts");
|
|
19830
19875
|
/**
|
|
19831
19876
|
* For a given block, if it is a paragraph, set it to be not-implicit
|
|
19832
19877
|
* @param block The block to check
|
|
19833
19878
|
*/
|
|
19834
19879
|
function setParagraphNotImplicit(block) {
|
|
19835
19880
|
if (block.blockType == 'Paragraph' && block.isImplicit) {
|
|
19836
|
-
block.isImplicit = false;
|
|
19881
|
+
(0, mutate_1.mutateBlock)(block).isImplicit = false;
|
|
19837
19882
|
}
|
|
19838
19883
|
}
|
|
19839
19884
|
exports.setParagraphNotImplicit = setParagraphNotImplicit;
|
|
@@ -19923,13 +19968,6 @@ exports.addDecorators = addDecorators;
|
|
|
19923
19968
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
19924
19969
|
exports.addSegment = void 0;
|
|
19925
19970
|
var ensureParagraph_1 = __webpack_require__(/*! ./ensureParagraph */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/ensureParagraph.ts");
|
|
19926
|
-
/**
|
|
19927
|
-
* Add a given segment into a paragraph from its parent group. If the last block of the given group is not paragraph, create a new paragraph.
|
|
19928
|
-
* @param group The parent block group of the paragraph to add segment into
|
|
19929
|
-
* @param newSegment The segment to add
|
|
19930
|
-
* @param blockFormat The block format used for creating a new paragraph when need
|
|
19931
|
-
* @returns The parent paragraph where the segment is added to
|
|
19932
|
-
*/
|
|
19933
19971
|
function addSegment(group, newSegment, blockFormat, segmentFormat) {
|
|
19934
19972
|
var paragraph = (0, ensureParagraph_1.ensureParagraph)(group, blockFormat, segmentFormat);
|
|
19935
19973
|
var lastSegment = paragraph.segments[paragraph.segments.length - 1];
|
|
@@ -20022,16 +20060,11 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
|
20022
20060
|
exports.ensureParagraph = void 0;
|
|
20023
20061
|
var addBlock_1 = __webpack_require__(/*! ./addBlock */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/addBlock.ts");
|
|
20024
20062
|
var createParagraph_1 = __webpack_require__(/*! ../creators/createParagraph */ "./packages/roosterjs-content-model-dom/lib/modelApi/creators/createParagraph.ts");
|
|
20025
|
-
|
|
20026
|
-
* @internal
|
|
20027
|
-
* Ensure there is a Paragraph that can insert segments in a Content Model Block Group
|
|
20028
|
-
* @param group The parent block group of the target paragraph
|
|
20029
|
-
* @param blockFormat Format of the paragraph. This is only used if we need to create a new paragraph
|
|
20030
|
-
*/
|
|
20063
|
+
var mutate_1 = __webpack_require__(/*! ./mutate */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/mutate.ts");
|
|
20031
20064
|
function ensureParagraph(group, blockFormat, segmentFormat) {
|
|
20032
20065
|
var lastBlock = group.blocks[group.blocks.length - 1];
|
|
20033
20066
|
if ((lastBlock === null || lastBlock === void 0 ? void 0 : lastBlock.blockType) == 'Paragraph') {
|
|
20034
|
-
return lastBlock;
|
|
20067
|
+
return (0, mutate_1.mutateBlock)(lastBlock);
|
|
20035
20068
|
}
|
|
20036
20069
|
else {
|
|
20037
20070
|
var paragraph = (0, createParagraph_1.createParagraph)(true, blockFormat, segmentFormat);
|
|
@@ -20159,6 +20192,87 @@ function isBlockGroup(model) {
|
|
|
20159
20192
|
}
|
|
20160
20193
|
|
|
20161
20194
|
|
|
20195
|
+
/***/ }),
|
|
20196
|
+
|
|
20197
|
+
/***/ "./packages/roosterjs-content-model-dom/lib/modelApi/common/mutate.ts":
|
|
20198
|
+
/*!****************************************************************************!*\
|
|
20199
|
+
!*** ./packages/roosterjs-content-model-dom/lib/modelApi/common/mutate.ts ***!
|
|
20200
|
+
\****************************************************************************/
|
|
20201
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
20202
|
+
|
|
20203
|
+
"use strict";
|
|
20204
|
+
|
|
20205
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
20206
|
+
exports.mutateSegment = exports.mutateSegments = exports.mutateBlock = void 0;
|
|
20207
|
+
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
20208
|
+
/**
|
|
20209
|
+
* Convert a readonly block to mutable block, clear cached element if exist
|
|
20210
|
+
* @param block The block to convert from
|
|
20211
|
+
* @returns The same block object of its related mutable type
|
|
20212
|
+
*/
|
|
20213
|
+
function mutateBlock(block) {
|
|
20214
|
+
if (block.cachedElement) {
|
|
20215
|
+
delete block.cachedElement;
|
|
20216
|
+
}
|
|
20217
|
+
if (isTable(block)) {
|
|
20218
|
+
block.rows.forEach(function (row) {
|
|
20219
|
+
delete row.cachedElement;
|
|
20220
|
+
});
|
|
20221
|
+
}
|
|
20222
|
+
else if (isListItem(block)) {
|
|
20223
|
+
block.levels.forEach(function (level) { return delete level.cachedElement; });
|
|
20224
|
+
}
|
|
20225
|
+
var result = block;
|
|
20226
|
+
return result;
|
|
20227
|
+
}
|
|
20228
|
+
exports.mutateBlock = mutateBlock;
|
|
20229
|
+
/**
|
|
20230
|
+
* Convert segments of a readonly paragraph to be mutable.
|
|
20231
|
+
* Segments that are not belong to the given paragraph will be skipped
|
|
20232
|
+
* @param paragraph The readonly paragraph to convert from
|
|
20233
|
+
* @param segments The segments to convert from
|
|
20234
|
+
*/
|
|
20235
|
+
function mutateSegments(paragraph, segments) {
|
|
20236
|
+
var mutablePara = mutateBlock(paragraph);
|
|
20237
|
+
var result = [mutablePara, [], []];
|
|
20238
|
+
if (segments) {
|
|
20239
|
+
segments.forEach(function (segment) {
|
|
20240
|
+
var index = paragraph.segments.indexOf(segment);
|
|
20241
|
+
if (index >= 0) {
|
|
20242
|
+
result[1].push(mutablePara.segments[index]);
|
|
20243
|
+
result[2].push(index);
|
|
20244
|
+
}
|
|
20245
|
+
});
|
|
20246
|
+
}
|
|
20247
|
+
return result;
|
|
20248
|
+
}
|
|
20249
|
+
exports.mutateSegments = mutateSegments;
|
|
20250
|
+
/**
|
|
20251
|
+
* Convert a readonly segment to be mutable, together with its owner paragraph
|
|
20252
|
+
* If the segment does not belong to the given paragraph, return null for the segment
|
|
20253
|
+
* @param paragraph The readonly paragraph to convert from
|
|
20254
|
+
* @param segment The segment to convert from
|
|
20255
|
+
*/
|
|
20256
|
+
function mutateSegment(paragraph, segment, callback) {
|
|
20257
|
+
var _a;
|
|
20258
|
+
var _b = (0, tslib_1.__read)(mutateSegments(paragraph, [segment]), 3), mutablePara = _b[0], mutableSegments = _b[1], indexes = _b[2];
|
|
20259
|
+
var mutableSegment = mutableSegments[0] == segment
|
|
20260
|
+
? mutableSegments[0]
|
|
20261
|
+
: null;
|
|
20262
|
+
if (callback && mutableSegment) {
|
|
20263
|
+
callback(mutableSegments[0], mutablePara, indexes[0]);
|
|
20264
|
+
}
|
|
20265
|
+
return [mutablePara, mutableSegment, (_a = indexes[0]) !== null && _a !== void 0 ? _a : -1];
|
|
20266
|
+
}
|
|
20267
|
+
exports.mutateSegment = mutateSegment;
|
|
20268
|
+
function isTable(obj) {
|
|
20269
|
+
return obj.blockType == 'Table';
|
|
20270
|
+
}
|
|
20271
|
+
function isListItem(obj) {
|
|
20272
|
+
return obj.blockGroupType == 'ListItem';
|
|
20273
|
+
}
|
|
20274
|
+
|
|
20275
|
+
|
|
20162
20276
|
/***/ }),
|
|
20163
20277
|
|
|
20164
20278
|
/***/ "./packages/roosterjs-content-model-dom/lib/modelApi/common/normalizeContentModel.ts":
|
|
@@ -20172,6 +20286,7 @@ function isBlockGroup(model) {
|
|
|
20172
20286
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
20173
20287
|
exports.normalizeContentModel = void 0;
|
|
20174
20288
|
var isEmpty_1 = __webpack_require__(/*! ./isEmpty */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/isEmpty.ts");
|
|
20289
|
+
var mutate_1 = __webpack_require__(/*! ./mutate */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/mutate.ts");
|
|
20175
20290
|
var normalizeParagraph_1 = __webpack_require__(/*! ./normalizeParagraph */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/normalizeParagraph.ts");
|
|
20176
20291
|
var unwrapBlock_1 = __webpack_require__(/*! ./unwrapBlock */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/unwrapBlock.ts");
|
|
20177
20292
|
/**
|
|
@@ -20210,7 +20325,7 @@ function normalizeContentModel(group) {
|
|
|
20210
20325
|
break;
|
|
20211
20326
|
}
|
|
20212
20327
|
if ((0, isEmpty_1.isBlockEmpty)(block)) {
|
|
20213
|
-
group.blocks.splice(i, 1);
|
|
20328
|
+
(0, mutate_1.mutateBlock)(group).blocks.splice(i, 1);
|
|
20214
20329
|
}
|
|
20215
20330
|
}
|
|
20216
20331
|
}
|
|
@@ -20233,6 +20348,7 @@ var areSameFormats_1 = __webpack_require__(/*! ../../domToModel/utils/areSameFor
|
|
|
20233
20348
|
var createBr_1 = __webpack_require__(/*! ../creators/createBr */ "./packages/roosterjs-content-model-dom/lib/modelApi/creators/createBr.ts");
|
|
20234
20349
|
var isEmpty_1 = __webpack_require__(/*! ./isEmpty */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/isEmpty.ts");
|
|
20235
20350
|
var isWhiteSpacePreserved_1 = __webpack_require__(/*! ../../domUtils/isWhiteSpacePreserved */ "./packages/roosterjs-content-model-dom/lib/domUtils/isWhiteSpacePreserved.ts");
|
|
20351
|
+
var mutate_1 = __webpack_require__(/*! ./mutate */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/mutate.ts");
|
|
20236
20352
|
var normalizeSegment_1 = __webpack_require__(/*! ./normalizeSegment */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/normalizeSegment.ts");
|
|
20237
20353
|
/**
|
|
20238
20354
|
* @param paragraph The paragraph to normalize
|
|
@@ -20245,7 +20361,7 @@ function normalizeParagraph(paragraph) {
|
|
|
20245
20361
|
var secondLast = segments[segments.length - 2];
|
|
20246
20362
|
if (last.segmentType == 'SelectionMarker' &&
|
|
20247
20363
|
(!secondLast || secondLast.segmentType == 'Br')) {
|
|
20248
|
-
segments.push((0, createBr_1.createBr)(last.format));
|
|
20364
|
+
(0, mutate_1.mutateBlock)(paragraph).segments.push((0, createBr_1.createBr)(last.format));
|
|
20249
20365
|
}
|
|
20250
20366
|
else if (segments.length > 1 && segments[segments.length - 1].segmentType == 'Br') {
|
|
20251
20367
|
var noMarkerSegments = segments.filter(function (x) { return x.segmentType != 'SelectionMarker'; });
|
|
@@ -20253,7 +20369,7 @@ function normalizeParagraph(paragraph) {
|
|
|
20253
20369
|
// But if there are more than one <BR> at the end, do not remove them.
|
|
20254
20370
|
if (noMarkerSegments.length > 1 &&
|
|
20255
20371
|
noMarkerSegments[noMarkerSegments.length - 2].segmentType != 'Br') {
|
|
20256
|
-
segments.pop();
|
|
20372
|
+
(0, mutate_1.mutateBlock)(paragraph).segments.pop();
|
|
20257
20373
|
}
|
|
20258
20374
|
}
|
|
20259
20375
|
}
|
|
@@ -20268,7 +20384,7 @@ exports.normalizeParagraph = normalizeParagraph;
|
|
|
20268
20384
|
function removeEmptySegments(block) {
|
|
20269
20385
|
for (var j = block.segments.length - 1; j >= 0; j--) {
|
|
20270
20386
|
if ((0, isEmpty_1.isSegmentEmpty)(block.segments[j])) {
|
|
20271
|
-
block.segments.splice(j, 1);
|
|
20387
|
+
(0, mutate_1.mutateBlock)(block).segments.splice(j, 1);
|
|
20272
20388
|
}
|
|
20273
20389
|
}
|
|
20274
20390
|
}
|
|
@@ -20288,7 +20404,9 @@ function removeEmptyLinks(paragraph) {
|
|
|
20288
20404
|
next &&
|
|
20289
20405
|
!next.link &&
|
|
20290
20406
|
(0, areSameFormats_1.areSameFormats)(next.format, marker.format))) {
|
|
20291
|
-
|
|
20407
|
+
(0, mutate_1.mutateSegment)(paragraph, marker, function (mutableMarker) {
|
|
20408
|
+
delete mutableMarker.link;
|
|
20409
|
+
});
|
|
20292
20410
|
}
|
|
20293
20411
|
}
|
|
20294
20412
|
}
|
|
@@ -20303,7 +20421,7 @@ function moveUpSegmentFormat(paragraph) {
|
|
|
20303
20421
|
changed_1 = internalMoveUpSegmentFormat(segments_1, target_1, key) || changed_1;
|
|
20304
20422
|
});
|
|
20305
20423
|
if (changed_1) {
|
|
20306
|
-
paragraph.segmentFormat = target_1;
|
|
20424
|
+
(0, mutate_1.mutateBlock)(paragraph).segmentFormat = target_1;
|
|
20307
20425
|
}
|
|
20308
20426
|
}
|
|
20309
20427
|
}
|
|
@@ -20334,6 +20452,7 @@ function internalMoveUpSegmentFormat(segments, target, formatKey) {
|
|
|
20334
20452
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
20335
20453
|
exports.normalizeSegment = exports.createNormalizeSegmentContext = exports.normalizeSingleSegment = exports.normalizeAllSegments = void 0;
|
|
20336
20454
|
var hasSpacesOnly_1 = __webpack_require__(/*! ./hasSpacesOnly */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/hasSpacesOnly.ts");
|
|
20455
|
+
var mutate_1 = __webpack_require__(/*! ./mutate */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/mutate.ts");
|
|
20337
20456
|
var SPACE = '\u0020';
|
|
20338
20457
|
var NONE_BREAK_SPACE = '\u00A0';
|
|
20339
20458
|
var LEADING_SPACE_REGEX = /^\u0020+/;
|
|
@@ -20344,10 +20463,10 @@ var TRAILING_SPACE_REGEX = /\u0020+$/;
|
|
|
20344
20463
|
function normalizeAllSegments(paragraph) {
|
|
20345
20464
|
var context = resetNormalizeSegmentContext();
|
|
20346
20465
|
paragraph.segments.forEach(function (segment) {
|
|
20347
|
-
normalizeSegment(segment, context);
|
|
20466
|
+
normalizeSegment(paragraph, segment, context);
|
|
20348
20467
|
});
|
|
20349
|
-
normalizeTextSegments(context.textSegments, context.lastInlineSegment);
|
|
20350
|
-
normalizeLastTextSegment(context.lastTextSegment, context.lastInlineSegment);
|
|
20468
|
+
normalizeTextSegments(paragraph, context.textSegments, context.lastInlineSegment);
|
|
20469
|
+
normalizeLastTextSegment(paragraph, context.lastTextSegment, context.lastInlineSegment);
|
|
20351
20470
|
}
|
|
20352
20471
|
exports.normalizeAllSegments = normalizeAllSegments;
|
|
20353
20472
|
/**
|
|
@@ -20355,11 +20474,11 @@ exports.normalizeAllSegments = normalizeAllSegments;
|
|
|
20355
20474
|
* @param segment The segment to normalize
|
|
20356
20475
|
* @param ignoreTrailingSpaces Whether we should ignore the trailing space of the text segment @default false
|
|
20357
20476
|
*/
|
|
20358
|
-
function normalizeSingleSegment(segment, ignoreTrailingSpaces) {
|
|
20477
|
+
function normalizeSingleSegment(paragraph, segment, ignoreTrailingSpaces) {
|
|
20359
20478
|
if (ignoreTrailingSpaces === void 0) { ignoreTrailingSpaces = false; }
|
|
20360
20479
|
var context = resetNormalizeSegmentContext();
|
|
20361
20480
|
context.ignoreTrailingSpaces = ignoreTrailingSpaces;
|
|
20362
|
-
normalizeSegment(segment, context);
|
|
20481
|
+
normalizeSegment(paragraph, segment, context);
|
|
20363
20482
|
}
|
|
20364
20483
|
exports.normalizeSingleSegment = normalizeSingleSegment;
|
|
20365
20484
|
/**
|
|
@@ -20381,11 +20500,11 @@ function resetNormalizeSegmentContext(context) {
|
|
|
20381
20500
|
/**
|
|
20382
20501
|
* @internal Export for test only
|
|
20383
20502
|
*/
|
|
20384
|
-
function normalizeSegment(segment, context) {
|
|
20503
|
+
function normalizeSegment(paragraph, segment, context) {
|
|
20385
20504
|
switch (segment.segmentType) {
|
|
20386
20505
|
case 'Br':
|
|
20387
|
-
normalizeTextSegments(context.textSegments, context.lastInlineSegment);
|
|
20388
|
-
normalizeLastTextSegment(context.lastTextSegment, context.lastInlineSegment);
|
|
20506
|
+
normalizeTextSegments(paragraph, context.textSegments, context.lastInlineSegment);
|
|
20507
|
+
normalizeLastTextSegment(paragraph, context.lastTextSegment, context.lastInlineSegment);
|
|
20389
20508
|
// Line ends, reset all states
|
|
20390
20509
|
resetNormalizeSegmentContext(context);
|
|
20391
20510
|
break;
|
|
@@ -20407,11 +20526,15 @@ function normalizeSegment(segment, context) {
|
|
|
20407
20526
|
if (!(0, hasSpacesOnly_1.hasSpacesOnly)(segment.text)) {
|
|
20408
20527
|
if (first == SPACE) {
|
|
20409
20528
|
// 1. Multiple leading space => single or empty (depends on if previous segment ends with space)
|
|
20410
|
-
|
|
20529
|
+
(0, mutate_1.mutateSegment)(paragraph, segment, function (textSegment) {
|
|
20530
|
+
textSegment.text = textSegment.text.replace(LEADING_SPACE_REGEX, context.ignoreLeadingSpaces ? '' : NONE_BREAK_SPACE);
|
|
20531
|
+
});
|
|
20411
20532
|
}
|
|
20412
20533
|
if (last == SPACE) {
|
|
20413
20534
|
// 2. Multiple trailing space => single space
|
|
20414
|
-
|
|
20535
|
+
(0, mutate_1.mutateSegment)(paragraph, segment, function (textSegment) {
|
|
20536
|
+
textSegment.text = textSegment.text.replace(TRAILING_SPACE_REGEX, context.ignoreTrailingSpaces ? SPACE : NONE_BREAK_SPACE);
|
|
20537
|
+
});
|
|
20415
20538
|
}
|
|
20416
20539
|
}
|
|
20417
20540
|
context.ignoreLeadingSpaces = last == SPACE;
|
|
@@ -20419,24 +20542,28 @@ function normalizeSegment(segment, context) {
|
|
|
20419
20542
|
}
|
|
20420
20543
|
}
|
|
20421
20544
|
exports.normalizeSegment = normalizeSegment;
|
|
20422
|
-
function normalizeTextSegments(segments, lastInlineSegment) {
|
|
20545
|
+
function normalizeTextSegments(paragraph, segments, lastInlineSegment) {
|
|
20423
20546
|
segments.forEach(function (segment) {
|
|
20424
20547
|
// 3. Segment ends with replace it with space if the previous char is not space so that next segment can wrap
|
|
20425
20548
|
// Only do this for segments that is not the last one since the last space will be removed in step 4
|
|
20426
20549
|
if (segment != lastInlineSegment) {
|
|
20427
|
-
var
|
|
20428
|
-
if (
|
|
20429
|
-
|
|
20430
|
-
|
|
20431
|
-
|
|
20550
|
+
var text_1 = segment.text;
|
|
20551
|
+
if (text_1.substr(-1) == NONE_BREAK_SPACE &&
|
|
20552
|
+
text_1.length > 1 &&
|
|
20553
|
+
text_1.substr(-2, 1) != SPACE) {
|
|
20554
|
+
(0, mutate_1.mutateSegment)(paragraph, segment, function (textSegment) {
|
|
20555
|
+
textSegment.text = text_1.substring(0, text_1.length - 1) + SPACE;
|
|
20556
|
+
});
|
|
20432
20557
|
}
|
|
20433
20558
|
}
|
|
20434
20559
|
});
|
|
20435
20560
|
}
|
|
20436
|
-
function normalizeLastTextSegment(segment, lastInlineSegment) {
|
|
20561
|
+
function normalizeLastTextSegment(paragraph, segment, lastInlineSegment) {
|
|
20437
20562
|
if (segment && segment == lastInlineSegment && (segment === null || segment === void 0 ? void 0 : segment.text.substr(-1)) == SPACE) {
|
|
20438
20563
|
// 4. last text segment of the paragraph, remove trailing space
|
|
20439
|
-
|
|
20564
|
+
(0, mutate_1.mutateSegment)(paragraph, segment, function (textSegment) {
|
|
20565
|
+
textSegment.text = textSegment.text.replace(TRAILING_SPACE_REGEX, '');
|
|
20566
|
+
});
|
|
20440
20567
|
}
|
|
20441
20568
|
}
|
|
20442
20569
|
|
|
@@ -20454,6 +20581,7 @@ function normalizeLastTextSegment(segment, lastInlineSegment) {
|
|
|
20454
20581
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
20455
20582
|
exports.unwrapBlock = void 0;
|
|
20456
20583
|
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
20584
|
+
var mutate_1 = __webpack_require__(/*! ./mutate */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/mutate.ts");
|
|
20457
20585
|
var setParagraphNotImplicit_1 = __webpack_require__(/*! ../block/setParagraphNotImplicit */ "./packages/roosterjs-content-model-dom/lib/modelApi/block/setParagraphNotImplicit.ts");
|
|
20458
20586
|
/**
|
|
20459
20587
|
* Unwrap a given block group, move its child blocks to be under its parent group
|
|
@@ -20462,11 +20590,13 @@ var setParagraphNotImplicit_1 = __webpack_require__(/*! ../block/setParagraphNot
|
|
|
20462
20590
|
*/
|
|
20463
20591
|
function unwrapBlock(parent, groupToUnwrap) {
|
|
20464
20592
|
var _a;
|
|
20465
|
-
var _b;
|
|
20593
|
+
var _b, _c;
|
|
20466
20594
|
var index = (_b = parent === null || parent === void 0 ? void 0 : parent.blocks.indexOf(groupToUnwrap)) !== null && _b !== void 0 ? _b : -1;
|
|
20467
20595
|
if (index >= 0) {
|
|
20468
20596
|
groupToUnwrap.blocks.forEach(setParagraphNotImplicit_1.setParagraphNotImplicit);
|
|
20469
|
-
|
|
20597
|
+
if (parent) {
|
|
20598
|
+
(_c = (0, mutate_1.mutateBlock)(parent)) === null || _c === void 0 ? void 0 : (_a = _c.blocks).splice.apply(_a, (0, tslib_1.__spreadArray)([index, 1], (0, tslib_1.__read)(groupToUnwrap.blocks.map(mutate_1.mutateBlock)), false));
|
|
20599
|
+
}
|
|
20470
20600
|
}
|
|
20471
20601
|
}
|
|
20472
20602
|
exports.unwrapBlock = unwrapBlock;
|
|
@@ -20492,7 +20622,7 @@ var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.m
|
|
|
20492
20622
|
function createBr(format) {
|
|
20493
20623
|
return {
|
|
20494
20624
|
segmentType: 'Br',
|
|
20495
|
-
format:
|
|
20625
|
+
format: (0, tslib_1.__assign)({}, format),
|
|
20496
20626
|
};
|
|
20497
20627
|
}
|
|
20498
20628
|
exports.createBr = createBr;
|
|
@@ -20549,7 +20679,7 @@ function createDivider(tagName, format) {
|
|
|
20549
20679
|
return {
|
|
20550
20680
|
blockType: 'Divider',
|
|
20551
20681
|
tagName: tagName,
|
|
20552
|
-
format:
|
|
20682
|
+
format: (0, tslib_1.__assign)({}, format),
|
|
20553
20683
|
};
|
|
20554
20684
|
}
|
|
20555
20685
|
exports.createDivider = createDivider;
|
|
@@ -20647,7 +20777,7 @@ function createFormatContainer(tag, format) {
|
|
|
20647
20777
|
blockGroupType: 'FormatContainer',
|
|
20648
20778
|
tagName: tag,
|
|
20649
20779
|
blocks: [],
|
|
20650
|
-
format: (0, tslib_1.__assign)({},
|
|
20780
|
+
format: (0, tslib_1.__assign)({}, format),
|
|
20651
20781
|
};
|
|
20652
20782
|
}
|
|
20653
20783
|
exports.createFormatContainer = createFormatContainer;
|
|
@@ -20704,7 +20834,7 @@ function createGeneralSegment(element, format) {
|
|
|
20704
20834
|
blockType: 'BlockGroup',
|
|
20705
20835
|
blockGroupType: 'General',
|
|
20706
20836
|
segmentType: 'General',
|
|
20707
|
-
format:
|
|
20837
|
+
format: (0, tslib_1.__assign)({}, format),
|
|
20708
20838
|
blocks: [],
|
|
20709
20839
|
element: element,
|
|
20710
20840
|
};
|
|
@@ -20734,7 +20864,7 @@ function createImage(src, format) {
|
|
|
20734
20864
|
return {
|
|
20735
20865
|
segmentType: 'Image',
|
|
20736
20866
|
src: src,
|
|
20737
|
-
format:
|
|
20867
|
+
format: (0, tslib_1.__assign)({}, format),
|
|
20738
20868
|
dataset: {},
|
|
20739
20869
|
};
|
|
20740
20870
|
}
|
|
@@ -20830,7 +20960,7 @@ function createParagraph(isImplicit, blockFormat, segmentFormat, decorator) {
|
|
|
20830
20960
|
var result = {
|
|
20831
20961
|
blockType: 'Paragraph',
|
|
20832
20962
|
segments: [],
|
|
20833
|
-
format:
|
|
20963
|
+
format: (0, tslib_1.__assign)({}, blockFormat),
|
|
20834
20964
|
};
|
|
20835
20965
|
if (segmentFormat && Object.keys(segmentFormat).length > 0) {
|
|
20836
20966
|
result.segmentFormat = (0, tslib_1.__assign)({}, segmentFormat);
|
|
@@ -20870,7 +21000,7 @@ var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.m
|
|
|
20870
21000
|
function createParagraphDecorator(tagName, format) {
|
|
20871
21001
|
return {
|
|
20872
21002
|
tagName: tagName.toLocaleLowerCase(),
|
|
20873
|
-
format: (0, tslib_1.__assign)({},
|
|
21003
|
+
format: (0, tslib_1.__assign)({}, format),
|
|
20874
21004
|
};
|
|
20875
21005
|
}
|
|
20876
21006
|
exports.createParagraphDecorator = createParagraphDecorator;
|
|
@@ -20897,7 +21027,7 @@ function createSelectionMarker(format) {
|
|
|
20897
21027
|
return {
|
|
20898
21028
|
segmentType: 'SelectionMarker',
|
|
20899
21029
|
isSelected: true,
|
|
20900
|
-
format:
|
|
21030
|
+
format: (0, tslib_1.__assign)({}, format),
|
|
20901
21031
|
};
|
|
20902
21032
|
}
|
|
20903
21033
|
exports.createSelectionMarker = createSelectionMarker;
|
|
@@ -20916,6 +21046,7 @@ exports.createSelectionMarker = createSelectionMarker;
|
|
|
20916
21046
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
20917
21047
|
exports.createTable = void 0;
|
|
20918
21048
|
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
21049
|
+
var createTableRow_1 = __webpack_require__(/*! ./createTableRow */ "./packages/roosterjs-content-model-dom/lib/modelApi/creators/createTableRow.ts");
|
|
20919
21050
|
/**
|
|
20920
21051
|
* Create a ContentModelTable model
|
|
20921
21052
|
* @param rowCount Count of rows of this table
|
|
@@ -20924,16 +21055,12 @@ var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.m
|
|
|
20924
21055
|
function createTable(rowCount, format) {
|
|
20925
21056
|
var rows = [];
|
|
20926
21057
|
for (var i = 0; i < rowCount; i++) {
|
|
20927
|
-
rows.push(
|
|
20928
|
-
height: 0,
|
|
20929
|
-
format: {},
|
|
20930
|
-
cells: [],
|
|
20931
|
-
});
|
|
21058
|
+
rows.push((0, createTableRow_1.createTableRow)());
|
|
20932
21059
|
}
|
|
20933
21060
|
return {
|
|
20934
21061
|
blockType: 'Table',
|
|
20935
21062
|
rows: rows,
|
|
20936
|
-
format: (0, tslib_1.__assign)({},
|
|
21063
|
+
format: (0, tslib_1.__assign)({}, format),
|
|
20937
21064
|
widths: [],
|
|
20938
21065
|
dataset: {},
|
|
20939
21066
|
};
|
|
@@ -20967,7 +21094,7 @@ function createTableCell(spanLeftOrColSpan, spanAboveOrRowSpan, isHeader, format
|
|
|
20967
21094
|
return {
|
|
20968
21095
|
blockGroupType: 'TableCell',
|
|
20969
21096
|
blocks: [],
|
|
20970
|
-
format:
|
|
21097
|
+
format: (0, tslib_1.__assign)({}, format),
|
|
20971
21098
|
spanLeft: spanLeft,
|
|
20972
21099
|
spanAbove: spanAbove,
|
|
20973
21100
|
isHeader: !!isHeader,
|
|
@@ -20977,6 +21104,34 @@ function createTableCell(spanLeftOrColSpan, spanAboveOrRowSpan, isHeader, format
|
|
|
20977
21104
|
exports.createTableCell = createTableCell;
|
|
20978
21105
|
|
|
20979
21106
|
|
|
21107
|
+
/***/ }),
|
|
21108
|
+
|
|
21109
|
+
/***/ "./packages/roosterjs-content-model-dom/lib/modelApi/creators/createTableRow.ts":
|
|
21110
|
+
/*!**************************************************************************************!*\
|
|
21111
|
+
!*** ./packages/roosterjs-content-model-dom/lib/modelApi/creators/createTableRow.ts ***!
|
|
21112
|
+
\**************************************************************************************/
|
|
21113
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
21114
|
+
|
|
21115
|
+
"use strict";
|
|
21116
|
+
|
|
21117
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
21118
|
+
exports.createTableRow = void 0;
|
|
21119
|
+
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
21120
|
+
/**
|
|
21121
|
+
* Create a ContentModelTableRow model
|
|
21122
|
+
* @param format @optional The format of this model
|
|
21123
|
+
*/
|
|
21124
|
+
function createTableRow(format, height) {
|
|
21125
|
+
if (height === void 0) { height = 0; }
|
|
21126
|
+
return {
|
|
21127
|
+
height: height,
|
|
21128
|
+
format: (0, tslib_1.__assign)({}, format),
|
|
21129
|
+
cells: [],
|
|
21130
|
+
};
|
|
21131
|
+
}
|
|
21132
|
+
exports.createTableRow = createTableRow;
|
|
21133
|
+
|
|
21134
|
+
|
|
20980
21135
|
/***/ }),
|
|
20981
21136
|
|
|
20982
21137
|
/***/ "./packages/roosterjs-content-model-dom/lib/modelApi/creators/createText.ts":
|
|
@@ -21002,7 +21157,7 @@ function createText(text, format, link, code) {
|
|
|
21002
21157
|
var result = {
|
|
21003
21158
|
segmentType: 'Text',
|
|
21004
21159
|
text: text,
|
|
21005
|
-
format:
|
|
21160
|
+
format: (0, tslib_1.__assign)({}, format),
|
|
21006
21161
|
};
|
|
21007
21162
|
if (link) {
|
|
21008
21163
|
(0, addDecorators_1.addLink)(result, link);
|
|
@@ -21027,10 +21182,11 @@ exports.createText = createText;
|
|
|
21027
21182
|
|
|
21028
21183
|
var _a;
|
|
21029
21184
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
21030
|
-
exports.applyTableFormat = void 0;
|
|
21185
|
+
exports.setFirstColumnFormatBorders = exports.applyTableFormat = void 0;
|
|
21031
21186
|
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
21032
21187
|
var borderFormatHandler_1 = __webpack_require__(/*! ../../formatHandlers/common/borderFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/common/borderFormatHandler.ts");
|
|
21033
21188
|
var borderValues_1 = __webpack_require__(/*! ../../domUtils/style/borderValues */ "./packages/roosterjs-content-model-dom/lib/domUtils/style/borderValues.ts");
|
|
21189
|
+
var mutate_1 = __webpack_require__(/*! ../common/mutate */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/mutate.ts");
|
|
21034
21190
|
var setTableCellBackgroundColor_1 = __webpack_require__(/*! ./setTableCellBackgroundColor */ "./packages/roosterjs-content-model-dom/lib/modelApi/editing/setTableCellBackgroundColor.ts");
|
|
21035
21191
|
var TableBorderFormat_1 = __webpack_require__(/*! ../../constants/TableBorderFormat */ "./packages/roosterjs-content-model-dom/lib/constants/TableBorderFormat.ts");
|
|
21036
21192
|
var updateTableCellMetadata_1 = __webpack_require__(/*! ../metadata/updateTableCellMetadata */ "./packages/roosterjs-content-model-dom/lib/modelApi/metadata/updateTableCellMetadata.ts");
|
|
@@ -21056,27 +21212,18 @@ var DEFAULT_FORMAT = {
|
|
|
21056
21212
|
* @param keepCellShade @optional When pass true, table cells with customized shade color will not be overwritten. @default false
|
|
21057
21213
|
*/
|
|
21058
21214
|
function applyTableFormat(table, newFormat, keepCellShade) {
|
|
21059
|
-
var
|
|
21060
|
-
|
|
21061
|
-
|
|
21215
|
+
var mutableTable = (0, mutate_1.mutateBlock)(table);
|
|
21216
|
+
var rows = mutableTable.rows;
|
|
21217
|
+
(0, updateTableMetadata_1.updateTableMetadata)(mutableTable, function (format) {
|
|
21218
|
+
var effectiveMetadata = (0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)({}, DEFAULT_FORMAT), format), newFormat);
|
|
21062
21219
|
var metaOverrides = updateOverrides(rows, !keepCellShade);
|
|
21063
|
-
delete table.cachedElement;
|
|
21064
|
-
clearCache(rows);
|
|
21065
21220
|
formatCells(rows, effectiveMetadata, metaOverrides);
|
|
21066
|
-
|
|
21221
|
+
setFirstColumnFormatBorders(rows, effectiveMetadata);
|
|
21067
21222
|
setHeaderRowFormat(rows, effectiveMetadata, metaOverrides);
|
|
21068
21223
|
return effectiveMetadata;
|
|
21069
21224
|
});
|
|
21070
21225
|
}
|
|
21071
21226
|
exports.applyTableFormat = applyTableFormat;
|
|
21072
|
-
function clearCache(rows) {
|
|
21073
|
-
rows.forEach(function (row) {
|
|
21074
|
-
row.cells.forEach(function (cell) {
|
|
21075
|
-
delete cell.cachedElement;
|
|
21076
|
-
});
|
|
21077
|
-
delete row.cachedElement;
|
|
21078
|
-
});
|
|
21079
|
-
}
|
|
21080
21227
|
function updateOverrides(rows, removeCellShade) {
|
|
21081
21228
|
var overrides = {
|
|
21082
21229
|
bgColorOverrides: [],
|
|
@@ -21091,7 +21238,7 @@ function updateOverrides(rows, removeCellShade) {
|
|
|
21091
21238
|
overrides.vAlignOverrides.push(vAlignOverrides);
|
|
21092
21239
|
overrides.borderOverrides.push(borderOverrides);
|
|
21093
21240
|
row.cells.forEach(function (cell) {
|
|
21094
|
-
(0, updateTableCellMetadata_1.updateTableCellMetadata)(cell, function (metadata) {
|
|
21241
|
+
(0, updateTableCellMetadata_1.updateTableCellMetadata)((0, mutate_1.mutateBlock)(cell), function (metadata) {
|
|
21095
21242
|
if (metadata && removeCellShade) {
|
|
21096
21243
|
bgColorOverrides.push(false);
|
|
21097
21244
|
delete metadata.bgColorOverride;
|
|
@@ -21178,10 +21325,11 @@ var BorderFormatters = (_a = {},
|
|
|
21178
21325
|
* Apply vertical align, borders, and background color to all cells in the table
|
|
21179
21326
|
*/
|
|
21180
21327
|
function formatCells(rows, format, metaOverrides) {
|
|
21181
|
-
var hasBandedRows = format.hasBandedRows, hasBandedColumns = format.hasBandedColumns, bgColorOdd = format.bgColorOdd, bgColorEven = format.bgColorEven;
|
|
21328
|
+
var hasBandedRows = format.hasBandedRows, hasBandedColumns = format.hasBandedColumns, bgColorOdd = format.bgColorOdd, bgColorEven = format.bgColorEven, hasFirstColumn = format.hasFirstColumn;
|
|
21182
21329
|
rows.forEach(function (row, rowIndex) {
|
|
21183
|
-
row.cells.forEach(function (
|
|
21330
|
+
row.cells.forEach(function (readonlyCell, colIndex) {
|
|
21184
21331
|
var _a;
|
|
21332
|
+
var cell = (0, mutate_1.mutateBlock)(readonlyCell);
|
|
21185
21333
|
// Format Borders
|
|
21186
21334
|
if (!metaOverrides.borderOverrides[rowIndex][colIndex] &&
|
|
21187
21335
|
typeof format.tableBorderFormat == 'number') {
|
|
@@ -21208,46 +21356,76 @@ function formatCells(rows, format, metaOverrides) {
|
|
|
21208
21356
|
}
|
|
21209
21357
|
// Format Background Color
|
|
21210
21358
|
if (!metaOverrides.bgColorOverrides[rowIndex][colIndex]) {
|
|
21211
|
-
var color =
|
|
21212
|
-
|
|
21213
|
-
|
|
21214
|
-
|
|
21215
|
-
|
|
21216
|
-
|
|
21359
|
+
var color = void 0;
|
|
21360
|
+
if (hasFirstColumn && colIndex == 0 && rowIndex > 0) {
|
|
21361
|
+
color = null;
|
|
21362
|
+
}
|
|
21363
|
+
else {
|
|
21364
|
+
color =
|
|
21365
|
+
hasBandedRows || hasBandedColumns
|
|
21366
|
+
? (hasBandedColumns && colIndex % 2 != 0) ||
|
|
21367
|
+
(hasBandedRows && rowIndex % 2 != 0)
|
|
21368
|
+
? bgColorOdd
|
|
21369
|
+
: bgColorEven
|
|
21370
|
+
: bgColorEven; /* bgColorEven is the default color */
|
|
21371
|
+
}
|
|
21217
21372
|
(0, setTableCellBackgroundColor_1.setTableCellBackgroundColor)(cell, color, false /*isColorOverride*/, true /*applyToSegments*/);
|
|
21218
21373
|
}
|
|
21219
21374
|
// Format Vertical Align
|
|
21220
21375
|
if (format.verticalAlign && !metaOverrides.vAlignOverrides[rowIndex][colIndex]) {
|
|
21221
21376
|
cell.format.verticalAlign = format.verticalAlign;
|
|
21222
21377
|
}
|
|
21378
|
+
// Format Header
|
|
21379
|
+
cell.isHeader = false;
|
|
21223
21380
|
});
|
|
21224
21381
|
});
|
|
21225
21382
|
}
|
|
21226
|
-
|
|
21383
|
+
/**
|
|
21384
|
+
* Set the first column format borders for the table as well as header property
|
|
21385
|
+
* @param rows The rows of the table
|
|
21386
|
+
* @param format The table metadata format
|
|
21387
|
+
*/
|
|
21388
|
+
function setFirstColumnFormatBorders(rows, format) {
|
|
21389
|
+
// Exit early hasFirstColumn is not set
|
|
21390
|
+
if (!format.hasFirstColumn) {
|
|
21391
|
+
return;
|
|
21392
|
+
}
|
|
21227
21393
|
rows.forEach(function (row, rowIndex) {
|
|
21228
|
-
row.cells.forEach(function (
|
|
21229
|
-
|
|
21394
|
+
row.cells.forEach(function (readonlyCell, cellIndex) {
|
|
21395
|
+
var cell = (0, mutate_1.mutateBlock)(readonlyCell);
|
|
21396
|
+
if (cellIndex === 0) {
|
|
21230
21397
|
cell.isHeader = true;
|
|
21231
|
-
|
|
21232
|
-
|
|
21233
|
-
|
|
21234
|
-
|
|
21235
|
-
|
|
21236
|
-
|
|
21398
|
+
switch (rowIndex) {
|
|
21399
|
+
case 0:
|
|
21400
|
+
cell.isHeader = !!format.hasHeaderRow;
|
|
21401
|
+
break;
|
|
21402
|
+
case rows.length - 1:
|
|
21403
|
+
setBorderColor(cell.format, 'borderTop');
|
|
21404
|
+
break;
|
|
21405
|
+
case 1:
|
|
21406
|
+
setBorderColor(cell.format, 'borderBottom');
|
|
21407
|
+
break;
|
|
21408
|
+
default:
|
|
21409
|
+
setBorderColor(cell.format, 'borderTop');
|
|
21410
|
+
setBorderColor(cell.format, 'borderBottom');
|
|
21411
|
+
break;
|
|
21237
21412
|
}
|
|
21238
21413
|
}
|
|
21239
|
-
else {
|
|
21240
|
-
cell.isHeader = false;
|
|
21241
|
-
}
|
|
21242
21414
|
});
|
|
21243
21415
|
});
|
|
21244
21416
|
}
|
|
21417
|
+
exports.setFirstColumnFormatBorders = setFirstColumnFormatBorders;
|
|
21245
21418
|
function setHeaderRowFormat(rows, format, metaOverrides) {
|
|
21246
21419
|
var _a;
|
|
21420
|
+
// Exit early if hasHeaderRow is not set
|
|
21421
|
+
if (!format.hasHeaderRow) {
|
|
21422
|
+
return;
|
|
21423
|
+
}
|
|
21247
21424
|
var rowIndex = 0;
|
|
21248
|
-
(_a = rows[rowIndex]) === null || _a === void 0 ? void 0 : _a.cells.forEach(function (
|
|
21249
|
-
cell
|
|
21250
|
-
|
|
21425
|
+
(_a = rows[rowIndex]) === null || _a === void 0 ? void 0 : _a.cells.forEach(function (readonlyCell, cellIndex) {
|
|
21426
|
+
var cell = (0, mutate_1.mutateBlock)(readonlyCell);
|
|
21427
|
+
cell.isHeader = true;
|
|
21428
|
+
if (format.headerRowColor) {
|
|
21251
21429
|
if (!metaOverrides.bgColorOverrides[rowIndex][cellIndex]) {
|
|
21252
21430
|
(0, setTableCellBackgroundColor_1.setTableCellBackgroundColor)(cell, format.headerRowColor, false /*isColorOverride*/, true /*applyToSegments*/);
|
|
21253
21431
|
}
|
|
@@ -21257,6 +21435,11 @@ function setHeaderRowFormat(rows, format, metaOverrides) {
|
|
|
21257
21435
|
}
|
|
21258
21436
|
});
|
|
21259
21437
|
}
|
|
21438
|
+
/**
|
|
21439
|
+
* @param format The cell format to set the border color
|
|
21440
|
+
* @param key The border key to set the color
|
|
21441
|
+
* @param value The color to set. If not given, it removes the color and sets the style to transparent
|
|
21442
|
+
*/
|
|
21260
21443
|
function setBorderColor(format, key, value) {
|
|
21261
21444
|
var border = (0, borderValues_1.extractBorderValues)(format[key]);
|
|
21262
21445
|
border.color = value || '';
|
|
@@ -21426,10 +21609,11 @@ function cloneFormatContainer(container, options) {
|
|
|
21426
21609
|
return newContainer;
|
|
21427
21610
|
}
|
|
21428
21611
|
function cloneListItem(item, options) {
|
|
21429
|
-
var formatHolder = item.formatHolder, levels = item.levels;
|
|
21612
|
+
var formatHolder = item.formatHolder, levels = item.levels, cachedElement = item.cachedElement;
|
|
21430
21613
|
return Object.assign({
|
|
21431
21614
|
formatHolder: cloneSelectionMarker(formatHolder),
|
|
21432
21615
|
levels: levels.map(cloneListLevel),
|
|
21616
|
+
cachedElement: handleCachedElement(cachedElement, 'cache', options),
|
|
21433
21617
|
}, cloneBlockBase(item), cloneBlockGroupBase(item, options));
|
|
21434
21618
|
}
|
|
21435
21619
|
function cloneListLevel(level) {
|
|
@@ -21571,6 +21755,7 @@ var deleteBlock_1 = __webpack_require__(/*! ./deleteBlock */ "./packages/rooster
|
|
|
21571
21755
|
var deleteSegment_1 = __webpack_require__(/*! ./deleteSegment */ "./packages/roosterjs-content-model-dom/lib/modelApi/editing/deleteSegment.ts");
|
|
21572
21756
|
var getSegmentTextFormat_1 = __webpack_require__(/*! ./getSegmentTextFormat */ "./packages/roosterjs-content-model-dom/lib/modelApi/editing/getSegmentTextFormat.ts");
|
|
21573
21757
|
var iterateSelections_1 = __webpack_require__(/*! ../selection/iterateSelections */ "./packages/roosterjs-content-model-dom/lib/modelApi/selection/iterateSelections.ts");
|
|
21758
|
+
var mutate_1 = __webpack_require__(/*! ../common/mutate */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/mutate.ts");
|
|
21574
21759
|
var setParagraphNotImplicit_1 = __webpack_require__(/*! ../block/setParagraphNotImplicit */ "./packages/roosterjs-content-model-dom/lib/modelApi/block/setParagraphNotImplicit.ts");
|
|
21575
21760
|
var DeleteSelectionIteratingOptions = {
|
|
21576
21761
|
contentUnderSelectedTableCell: 'ignoreForTableOrCell',
|
|
@@ -21588,19 +21773,20 @@ function deleteExpandedSelection(model, formatContext) {
|
|
|
21588
21773
|
insertPoint: null,
|
|
21589
21774
|
formatContext: formatContext,
|
|
21590
21775
|
};
|
|
21591
|
-
(0, iterateSelections_1.iterateSelections)(model, function (path, tableContext,
|
|
21776
|
+
(0, iterateSelections_1.iterateSelections)(model, function (path, tableContext, readonlyBlock, readonlySegments) {
|
|
21592
21777
|
// Set paragraph, format and index for default position where we will put cursor to.
|
|
21593
21778
|
// Later we can overwrite these info when process the selections
|
|
21594
21779
|
var paragraph = (0, createParagraph_1.createParagraph)(true /*implicit*/, undefined /*blockFormat*/, model.format);
|
|
21595
21780
|
var markerFormat = model.format;
|
|
21596
21781
|
var insertMarkerIndex = 0;
|
|
21597
|
-
if (
|
|
21782
|
+
if (readonlySegments && (readonlyBlock === null || readonlyBlock === void 0 ? void 0 : readonlyBlock.blockType) == 'Paragraph') {
|
|
21783
|
+
var _a = (0, tslib_1.__read)((0, mutate_1.mutateSegments)(readonlyBlock, readonlySegments), 3), block_1 = _a[0], segments = _a[1], indexes = _a[2];
|
|
21598
21784
|
// Delete segments inside a paragraph
|
|
21599
|
-
if (segments[0]
|
|
21785
|
+
if (segments[0]) {
|
|
21600
21786
|
// Now that we have found a paragraph with selections, we can overwrite the default paragraph with this one
|
|
21601
21787
|
// so we can put cursor here after delete
|
|
21602
|
-
paragraph =
|
|
21603
|
-
insertMarkerIndex =
|
|
21788
|
+
paragraph = block_1;
|
|
21789
|
+
insertMarkerIndex = indexes[0];
|
|
21604
21790
|
markerFormat = (0, getSegmentTextFormat_1.getSegmentTextFormat)(segments[0]);
|
|
21605
21791
|
context.lastParagraph = paragraph;
|
|
21606
21792
|
context.lastTableContext = tableContext;
|
|
@@ -21610,9 +21796,9 @@ function deleteExpandedSelection(model, formatContext) {
|
|
|
21610
21796
|
segment.segmentType == 'SelectionMarker') {
|
|
21611
21797
|
// First time we hit a selection and it is a selection marker, just mark it and not need to delete
|
|
21612
21798
|
// because this is possible a collapsed selection, then it will be handled later
|
|
21613
|
-
context.insertPoint = createInsertPoint(segment,
|
|
21799
|
+
context.insertPoint = createInsertPoint(segment, block_1, path, tableContext);
|
|
21614
21800
|
}
|
|
21615
|
-
else if ((0, deleteSegment_1.deleteSegment)(
|
|
21801
|
+
else if ((0, deleteSegment_1.deleteSegment)(block_1, segment, context.formatContext)) {
|
|
21616
21802
|
context.deleteResult = 'range';
|
|
21617
21803
|
}
|
|
21618
21804
|
});
|
|
@@ -21620,27 +21806,26 @@ function deleteExpandedSelection(model, formatContext) {
|
|
|
21620
21806
|
// Need to make it "not implicit" so that it will always have a container element, so that when we do normalization
|
|
21621
21807
|
// of this paragraph, a BR can be added if need
|
|
21622
21808
|
if (context.deleteResult == 'range') {
|
|
21623
|
-
(0, setParagraphNotImplicit_1.setParagraphNotImplicit)(
|
|
21809
|
+
(0, setParagraphNotImplicit_1.setParagraphNotImplicit)(block_1);
|
|
21624
21810
|
}
|
|
21625
21811
|
}
|
|
21626
21812
|
}
|
|
21627
|
-
else if (
|
|
21813
|
+
else if (readonlyBlock) {
|
|
21628
21814
|
// Delete a whole block (divider, table, ...)
|
|
21629
|
-
var blocks = path[0].blocks;
|
|
21630
|
-
if ((0, deleteBlock_1.deleteBlock)(blocks,
|
|
21815
|
+
var blocks = (0, mutate_1.mutateBlock)(path[0]).blocks;
|
|
21816
|
+
if ((0, deleteBlock_1.deleteBlock)(blocks, readonlyBlock, paragraph, context.formatContext)) {
|
|
21631
21817
|
context.deleteResult = 'range';
|
|
21632
21818
|
}
|
|
21633
21819
|
}
|
|
21634
21820
|
else if (tableContext) {
|
|
21635
21821
|
// Delete a whole table cell
|
|
21636
21822
|
var table = tableContext.table, colIndex = tableContext.colIndex, rowIndex = tableContext.rowIndex;
|
|
21637
|
-
var
|
|
21638
|
-
var
|
|
21823
|
+
var mutableTable = (0, mutate_1.mutateBlock)(table);
|
|
21824
|
+
var row = mutableTable.rows[rowIndex];
|
|
21825
|
+
var cell = (0, mutate_1.mutateBlock)(row.cells[colIndex]);
|
|
21639
21826
|
path = (0, tslib_1.__spreadArray)([cell], (0, tslib_1.__read)(path), false);
|
|
21640
21827
|
paragraph.segments.push((0, createBr_1.createBr)(model.format));
|
|
21641
21828
|
cell.blocks = [paragraph];
|
|
21642
|
-
delete cell.cachedElement;
|
|
21643
|
-
delete row.cachedElement;
|
|
21644
21829
|
context.deleteResult = 'range';
|
|
21645
21830
|
}
|
|
21646
21831
|
if (!context.insertPoint) {
|
|
@@ -21676,28 +21861,30 @@ function createInsertPoint(marker, paragraph, path, tableContext) {
|
|
|
21676
21861
|
|
|
21677
21862
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
21678
21863
|
exports.deleteSegment = void 0;
|
|
21864
|
+
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
21679
21865
|
var deleteSingleChar_1 = __webpack_require__(/*! ./deleteSingleChar */ "./packages/roosterjs-content-model-dom/lib/modelApi/editing/deleteSingleChar.ts");
|
|
21680
21866
|
var isWhiteSpacePreserved_1 = __webpack_require__(/*! ../../domUtils/isWhiteSpacePreserved */ "./packages/roosterjs-content-model-dom/lib/domUtils/isWhiteSpacePreserved.ts");
|
|
21867
|
+
var mutate_1 = __webpack_require__(/*! ../common/mutate */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/mutate.ts");
|
|
21681
21868
|
var normalizeSegment_1 = __webpack_require__(/*! ../common/normalizeSegment */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/normalizeSegment.ts");
|
|
21682
21869
|
var stringUtil_1 = __webpack_require__(/*! ../../domUtils/stringUtil */ "./packages/roosterjs-content-model-dom/lib/domUtils/stringUtil.ts");
|
|
21683
21870
|
/**
|
|
21684
21871
|
* Delete a content model segment from current selection
|
|
21685
|
-
* @param
|
|
21686
|
-
* @param
|
|
21872
|
+
* @param readonlyParagraph Parent paragraph of the segment to delete
|
|
21873
|
+
* @param readonlySegmentToDelete The segment to delete
|
|
21687
21874
|
* @param context @optional Context object provided by formatContentModel API
|
|
21688
21875
|
* @param direction @optional Whether this is deleting forward or backward. This is only used for deleting entity.
|
|
21689
21876
|
* If not specified, only selected entity will be deleted
|
|
21690
21877
|
*/
|
|
21691
|
-
function deleteSegment(
|
|
21878
|
+
function deleteSegment(readonlyParagraph, readonlySegmentToDelete, context, direction) {
|
|
21879
|
+
var _a = (0, tslib_1.__read)((0, mutate_1.mutateSegment)(readonlyParagraph, readonlySegmentToDelete), 3), paragraph = _a[0], segmentToDelete = _a[1], index = _a[2];
|
|
21692
21880
|
var segments = paragraph.segments;
|
|
21693
|
-
var index = segments.indexOf(segmentToDelete);
|
|
21694
21881
|
var preserveWhiteSpace = (0, isWhiteSpacePreserved_1.isWhiteSpacePreserved)(paragraph.format.whiteSpace);
|
|
21695
21882
|
var isForward = direction == 'forward';
|
|
21696
21883
|
var isBackward = direction == 'backward';
|
|
21697
21884
|
if (!preserveWhiteSpace) {
|
|
21698
|
-
normalizePreviousSegment(segments, index);
|
|
21885
|
+
normalizePreviousSegment(paragraph, segments, index);
|
|
21699
21886
|
}
|
|
21700
|
-
switch (segmentToDelete.segmentType) {
|
|
21887
|
+
switch (segmentToDelete === null || segmentToDelete === void 0 ? void 0 : segmentToDelete.segmentType) {
|
|
21701
21888
|
case 'Br':
|
|
21702
21889
|
case 'Image':
|
|
21703
21890
|
case 'SelectionMarker':
|
|
@@ -21745,10 +21932,12 @@ function deleteSegment(paragraph, segmentToDelete, context, direction) {
|
|
|
21745
21932
|
else {
|
|
21746
21933
|
return false;
|
|
21747
21934
|
}
|
|
21935
|
+
default:
|
|
21936
|
+
return false;
|
|
21748
21937
|
}
|
|
21749
21938
|
}
|
|
21750
21939
|
exports.deleteSegment = deleteSegment;
|
|
21751
|
-
function normalizePreviousSegment(segments, currentIndex) {
|
|
21940
|
+
function normalizePreviousSegment(paragraph, segments, currentIndex) {
|
|
21752
21941
|
var _a;
|
|
21753
21942
|
var index = currentIndex - 1;
|
|
21754
21943
|
while (((_a = segments[index]) === null || _a === void 0 ? void 0 : _a.segmentType) == 'SelectionMarker') {
|
|
@@ -21756,7 +21945,7 @@ function normalizePreviousSegment(segments, currentIndex) {
|
|
|
21756
21945
|
}
|
|
21757
21946
|
var segment = segments[index];
|
|
21758
21947
|
if (segment) {
|
|
21759
|
-
(0, normalizeSegment_1.normalizeSingleSegment)(segment);
|
|
21948
|
+
(0, normalizeSegment_1.normalizeSingleSegment)(paragraph, segment);
|
|
21760
21949
|
}
|
|
21761
21950
|
}
|
|
21762
21951
|
|
|
@@ -21775,6 +21964,7 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
|
21775
21964
|
exports.deleteSelection = void 0;
|
|
21776
21965
|
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
21777
21966
|
var deleteExpandedSelection_1 = __webpack_require__(/*! ./deleteExpandedSelection */ "./packages/roosterjs-content-model-dom/lib/modelApi/editing/deleteExpandedSelection.ts");
|
|
21967
|
+
var mutate_1 = __webpack_require__(/*! ../common/mutate */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/mutate.ts");
|
|
21778
21968
|
/**
|
|
21779
21969
|
* Delete selected content from Content Model
|
|
21780
21970
|
* @param model The model to delete selected content from
|
|
@@ -21807,8 +21997,9 @@ function mergeParagraphAfterDelete(context) {
|
|
|
21807
21997
|
lastParagraph &&
|
|
21808
21998
|
lastParagraph != insertPoint.paragraph &&
|
|
21809
21999
|
lastTableContext == insertPoint.tableContext) {
|
|
21810
|
-
|
|
21811
|
-
|
|
22000
|
+
var mutableLastParagraph = (0, mutate_1.mutateBlock)(lastParagraph);
|
|
22001
|
+
(_a = (0, mutate_1.mutateBlock)(insertPoint.paragraph).segments).push.apply(_a, (0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(mutableLastParagraph.segments), false));
|
|
22002
|
+
mutableLastParagraph.segments = [];
|
|
21812
22003
|
}
|
|
21813
22004
|
}
|
|
21814
22005
|
|
|
@@ -21995,6 +22186,7 @@ var createTableCell_1 = __webpack_require__(/*! ../creators/createTableCell */ "
|
|
|
21995
22186
|
var deleteSelection_1 = __webpack_require__(/*! ./deleteSelection */ "./packages/roosterjs-content-model-dom/lib/modelApi/editing/deleteSelection.ts");
|
|
21996
22187
|
var getClosestAncestorBlockGroupIndex_1 = __webpack_require__(/*! ./getClosestAncestorBlockGroupIndex */ "./packages/roosterjs-content-model-dom/lib/modelApi/editing/getClosestAncestorBlockGroupIndex.ts");
|
|
21997
22188
|
var getObjectKeys_1 = __webpack_require__(/*! ../..//domUtils/getObjectKeys */ "./packages/roosterjs-content-model-dom/lib/domUtils/getObjectKeys.ts");
|
|
22189
|
+
var mutate_1 = __webpack_require__(/*! ../common/mutate */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/mutate.ts");
|
|
21998
22190
|
var normalizeContentModel_1 = __webpack_require__(/*! ../common/normalizeContentModel */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/normalizeContentModel.ts");
|
|
21999
22191
|
var normalizeTable_1 = __webpack_require__(/*! ./normalizeTable */ "./packages/roosterjs-content-model-dom/lib/modelApi/editing/normalizeTable.ts");
|
|
22000
22192
|
var HeadingTags = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];
|
|
@@ -22103,7 +22295,8 @@ function mergeTable(markerPosition, newTable, source) {
|
|
|
22103
22295
|
var _a, _b;
|
|
22104
22296
|
var tableContext = markerPosition.tableContext, marker = markerPosition.marker;
|
|
22105
22297
|
if (tableContext && source.blocks.length == 1 && source.blocks[0] == newTable) {
|
|
22106
|
-
var
|
|
22298
|
+
var readonlyTable = tableContext.table, colIndex = tableContext.colIndex, rowIndex = tableContext.rowIndex;
|
|
22299
|
+
var table = (0, mutate_1.mutateBlock)(readonlyTable);
|
|
22107
22300
|
for (var i = 0; i < newTable.rows.length; i++) {
|
|
22108
22301
|
for (var j = 0; j < newTable.rows[i].cells.length; j++) {
|
|
22109
22302
|
var newCell = newTable.rows[i].cells[j];
|
|
@@ -22155,7 +22348,7 @@ function mergeList(markerPosition, newList) {
|
|
|
22155
22348
|
var listParent = path[listItemIndex + 1]; // It is ok here when index is -1, that means there is no list and we just insert a new paragraph and use path[0] as its parent
|
|
22156
22349
|
var blockIndex = listParent.blocks.indexOf(listItem || paragraph);
|
|
22157
22350
|
if (blockIndex >= 0) {
|
|
22158
|
-
listParent.blocks.splice(blockIndex, 0, newList);
|
|
22351
|
+
(0, mutate_1.mutateBlock)(listParent).blocks.splice(blockIndex, 0, newList);
|
|
22159
22352
|
}
|
|
22160
22353
|
if (listItem) {
|
|
22161
22354
|
listItem === null || listItem === void 0 ? void 0 : listItem.levels.forEach(function (level, i) {
|
|
@@ -22172,7 +22365,7 @@ function splitParagraph(markerPosition, newParaFormat) {
|
|
|
22172
22365
|
newParagraph.segments = paragraph.segments.splice(segmentIndex);
|
|
22173
22366
|
}
|
|
22174
22367
|
if (paraIndex >= 0) {
|
|
22175
|
-
path[0].blocks.splice(paraIndex + 1, 0, newParagraph);
|
|
22368
|
+
(0, mutate_1.mutateBlock)(path[0]).blocks.splice(paraIndex + 1, 0, newParagraph);
|
|
22176
22369
|
}
|
|
22177
22370
|
var listItemIndex = (0, getClosestAncestorBlockGroupIndex_1.getClosestAncestorBlockGroupIndex)(path, ['ListItem'], ['FormatContainer', 'TableCell']);
|
|
22178
22371
|
var listItem = path[listItemIndex];
|
|
@@ -22185,7 +22378,7 @@ function splitParagraph(markerPosition, newParaFormat) {
|
|
|
22185
22378
|
newListItem.blocks = listItem.blocks.splice(paraIndex + 1);
|
|
22186
22379
|
}
|
|
22187
22380
|
if (blockIndex >= 0) {
|
|
22188
|
-
listParent.blocks.splice(blockIndex + 1, 0, newListItem);
|
|
22381
|
+
(0, mutate_1.mutateBlock)(listParent).blocks.splice(blockIndex + 1, 0, newListItem);
|
|
22189
22382
|
}
|
|
22190
22383
|
path[listItemIndex] = newListItem;
|
|
22191
22384
|
}
|
|
@@ -22199,7 +22392,7 @@ function insertBlock(markerPosition, block) {
|
|
|
22199
22392
|
var newPara = splitParagraph(markerPosition, newParaFormat);
|
|
22200
22393
|
var blockIndex = path[0].blocks.indexOf(newPara);
|
|
22201
22394
|
if (blockIndex >= 0) {
|
|
22202
|
-
path[0].blocks.splice(blockIndex, 0, block);
|
|
22395
|
+
(0, mutate_1.mutateBlock)(path[0]).blocks.splice(blockIndex, 0, block);
|
|
22203
22396
|
}
|
|
22204
22397
|
}
|
|
22205
22398
|
function applyDefaultFormat(group, format, applyDefaultFormatOption) {
|
|
@@ -22209,7 +22402,7 @@ function applyDefaultFormat(group, format, applyDefaultFormatOption) {
|
|
|
22209
22402
|
switch (block.blockType) {
|
|
22210
22403
|
case 'BlockGroup':
|
|
22211
22404
|
if (block.blockGroupType == 'ListItem') {
|
|
22212
|
-
block.formatHolder.format = mergeSegmentFormat(applyDefaultFormatOption, format, block.formatHolder.format);
|
|
22405
|
+
(0, mutate_1.mutateBlock)(block).formatHolder.format = mergeSegmentFormat(applyDefaultFormatOption, format, block.formatHolder.format);
|
|
22213
22406
|
}
|
|
22214
22407
|
applyDefaultFormat(block, format, applyDefaultFormatOption);
|
|
22215
22408
|
break;
|
|
@@ -22222,14 +22415,15 @@ function applyDefaultFormat(group, format, applyDefaultFormatOption) {
|
|
|
22222
22415
|
break;
|
|
22223
22416
|
case 'Paragraph':
|
|
22224
22417
|
var paragraphFormat_1 = ((_a = block.decorator) === null || _a === void 0 ? void 0 : _a.format) || {};
|
|
22225
|
-
|
|
22418
|
+
var paragraph = (0, mutate_1.mutateBlock)(block);
|
|
22419
|
+
paragraph.segments.forEach(function (segment) {
|
|
22226
22420
|
if (segment.segmentType == 'General') {
|
|
22227
22421
|
applyDefaultFormat(segment, format, applyDefaultFormatOption);
|
|
22228
22422
|
}
|
|
22229
22423
|
segment.format = mergeSegmentFormat(applyDefaultFormatOption, format, (0, tslib_1.__assign)((0, tslib_1.__assign)({}, paragraphFormat_1), segment.format));
|
|
22230
22424
|
});
|
|
22231
22425
|
if (applyDefaultFormatOption === 'keepSourceEmphasisFormat') {
|
|
22232
|
-
delete
|
|
22426
|
+
delete paragraph.decorator;
|
|
22233
22427
|
}
|
|
22234
22428
|
break;
|
|
22235
22429
|
}
|
|
@@ -22237,12 +22431,12 @@ function applyDefaultFormat(group, format, applyDefaultFormatOption) {
|
|
|
22237
22431
|
}
|
|
22238
22432
|
function mergeBlockFormat(applyDefaultFormatOption, block) {
|
|
22239
22433
|
if (applyDefaultFormatOption == 'keepSourceEmphasisFormat' && block.format.backgroundColor) {
|
|
22240
|
-
delete block.format.backgroundColor;
|
|
22434
|
+
delete (0, mutate_1.mutateBlock)(block).format.backgroundColor;
|
|
22241
22435
|
}
|
|
22242
22436
|
}
|
|
22243
|
-
function mergeSegmentFormat(applyDefaultFormatOption,
|
|
22437
|
+
function mergeSegmentFormat(applyDefaultFormatOption, targetFormat, sourceFormat) {
|
|
22244
22438
|
return applyDefaultFormatOption == 'mergeAll'
|
|
22245
|
-
? (0, tslib_1.__assign)((0, tslib_1.__assign)({},
|
|
22439
|
+
? (0, tslib_1.__assign)((0, tslib_1.__assign)({}, targetFormat), sourceFormat) : (0, tslib_1.__assign)((0, tslib_1.__assign)({}, targetFormat), getSemanticFormat(sourceFormat));
|
|
22246
22440
|
}
|
|
22247
22441
|
function getSemanticFormat(segmentFormat) {
|
|
22248
22442
|
var result = {};
|
|
@@ -22277,6 +22471,7 @@ var addBlock_1 = __webpack_require__(/*! ../common/addBlock */ "./packages/roost
|
|
|
22277
22471
|
var addSegment_1 = __webpack_require__(/*! ../common/addSegment */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/addSegment.ts");
|
|
22278
22472
|
var createBr_1 = __webpack_require__(/*! ../creators/createBr */ "./packages/roosterjs-content-model-dom/lib/modelApi/creators/createBr.ts");
|
|
22279
22473
|
var createParagraph_1 = __webpack_require__(/*! ../creators/createParagraph */ "./packages/roosterjs-content-model-dom/lib/modelApi/creators/createParagraph.ts");
|
|
22474
|
+
var mutate_1 = __webpack_require__(/*! ../common/mutate */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/mutate.ts");
|
|
22280
22475
|
/**
|
|
22281
22476
|
* Minimum width for a table cell
|
|
22282
22477
|
*/
|
|
@@ -22285,16 +22480,17 @@ var MIN_HEIGHT = 22;
|
|
|
22285
22480
|
/**
|
|
22286
22481
|
* Normalize a Content Model table, make sure:
|
|
22287
22482
|
* 1. Fist cells are not spanned
|
|
22288
|
-
* 2.
|
|
22483
|
+
* 2. Only first column and row can have headers
|
|
22289
22484
|
* 3. All cells have content and width
|
|
22290
22485
|
* 4. Table and table row have correct width/height
|
|
22291
22486
|
* 5. Spanned cell has no child blocks
|
|
22292
22487
|
* 6. default format is correctly applied
|
|
22293
|
-
* @param
|
|
22488
|
+
* @param readonlyTable The table to normalize
|
|
22294
22489
|
* @param defaultSegmentFormat @optional Default segment format to apply to cell
|
|
22295
22490
|
*/
|
|
22296
|
-
function normalizeTable(
|
|
22491
|
+
function normalizeTable(readonlyTable, defaultSegmentFormat) {
|
|
22297
22492
|
var _a;
|
|
22493
|
+
var table = (0, mutate_1.mutateBlock)(readonlyTable);
|
|
22298
22494
|
// Always collapse border and use border box for table in roosterjs to make layout simpler
|
|
22299
22495
|
var format = table.format;
|
|
22300
22496
|
if (!format.borderCollapse || !format.useBorderBox) {
|
|
@@ -22305,7 +22501,8 @@ function normalizeTable(table, defaultSegmentFormat) {
|
|
|
22305
22501
|
// Make sure all inner cells are not header
|
|
22306
22502
|
// Make sure all cells have content and width
|
|
22307
22503
|
table.rows.forEach(function (row, rowIndex) {
|
|
22308
|
-
row.cells.forEach(function (
|
|
22504
|
+
row.cells.forEach(function (readonlyCell, colIndex) {
|
|
22505
|
+
var cell = (0, mutate_1.mutateBlock)(readonlyCell);
|
|
22309
22506
|
if (cell.blocks.length == 0) {
|
|
22310
22507
|
var format_1 = cell.format.textColor
|
|
22311
22508
|
? (0, tslib_1.__assign)((0, tslib_1.__assign)({}, defaultSegmentFormat), { textColor: cell.format.textColor }) : defaultSegmentFormat;
|
|
@@ -22315,7 +22512,7 @@ function normalizeTable(table, defaultSegmentFormat) {
|
|
|
22315
22512
|
if (rowIndex == 0) {
|
|
22316
22513
|
cell.spanAbove = false;
|
|
22317
22514
|
}
|
|
22318
|
-
else if (rowIndex > 0 && cell.isHeader) {
|
|
22515
|
+
else if (rowIndex > 0 && colIndex > 0 && cell.isHeader) {
|
|
22319
22516
|
cell.isHeader = false;
|
|
22320
22517
|
delete cell.cachedElement;
|
|
22321
22518
|
}
|
|
@@ -22391,8 +22588,8 @@ function tryMoveBlocks(targetCell, sourceCell) {
|
|
|
22391
22588
|
var _a;
|
|
22392
22589
|
var onlyHasEmptyOrBr = sourceCell.blocks.every(function (block) { return block.blockType == 'Paragraph' && hasOnlyBrSegment(block.segments); });
|
|
22393
22590
|
if (!onlyHasEmptyOrBr) {
|
|
22394
|
-
(_a = targetCell.blocks).push.apply(_a, (0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(sourceCell.blocks), false));
|
|
22395
|
-
sourceCell.blocks = [];
|
|
22591
|
+
(_a = (0, mutate_1.mutateBlock)(targetCell).blocks).push.apply(_a, (0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(sourceCell.blocks), false));
|
|
22592
|
+
(0, mutate_1.mutateBlock)(sourceCell).blocks = [];
|
|
22396
22593
|
}
|
|
22397
22594
|
}
|
|
22398
22595
|
function hasOnlyBrSegment(segments) {
|
|
@@ -22413,12 +22610,13 @@ function hasOnlyBrSegment(segments) {
|
|
|
22413
22610
|
|
|
22414
22611
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
22415
22612
|
exports.retrieveModelFormatState = void 0;
|
|
22613
|
+
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
22416
22614
|
var borderValues_1 = __webpack_require__(/*! ../../domUtils/style/borderValues */ "./packages/roosterjs-content-model-dom/lib/domUtils/style/borderValues.ts");
|
|
22417
22615
|
var getClosestAncestorBlockGroupIndex_1 = __webpack_require__(/*! ./getClosestAncestorBlockGroupIndex */ "./packages/roosterjs-content-model-dom/lib/modelApi/editing/getClosestAncestorBlockGroupIndex.ts");
|
|
22616
|
+
var updateTableMetadata_1 = __webpack_require__(/*! ../metadata/updateTableMetadata */ "./packages/roosterjs-content-model-dom/lib/modelApi/metadata/updateTableMetadata.ts");
|
|
22418
22617
|
var isBold_1 = __webpack_require__(/*! ../../domUtils/style/isBold */ "./packages/roosterjs-content-model-dom/lib/domUtils/style/isBold.ts");
|
|
22419
22618
|
var iterateSelections_1 = __webpack_require__(/*! ../selection/iterateSelections */ "./packages/roosterjs-content-model-dom/lib/modelApi/selection/iterateSelections.ts");
|
|
22420
22619
|
var parseValueWithUnit_1 = __webpack_require__(/*! ../../formatHandlers/utils/parseValueWithUnit */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/utils/parseValueWithUnit.ts");
|
|
22421
|
-
var updateTableMetadata_1 = __webpack_require__(/*! ../metadata/updateTableMetadata */ "./packages/roosterjs-content-model-dom/lib/modelApi/metadata/updateTableMetadata.ts");
|
|
22422
22620
|
/**
|
|
22423
22621
|
* Retrieve format state from the given Content Model
|
|
22424
22622
|
* @param model The Content Model to retrieve format state from
|
|
@@ -22450,10 +22648,10 @@ function retrieveModelFormatState(model, pendingFormat, formatState) {
|
|
|
22450
22648
|
segments === null || segments === void 0 ? void 0 : segments.forEach(function (segment) {
|
|
22451
22649
|
var _a, _b, _c;
|
|
22452
22650
|
if (isFirstSegment || segment.segmentType != 'SelectionMarker') {
|
|
22453
|
-
var modelFormat =
|
|
22454
|
-
|
|
22455
|
-
|
|
22456
|
-
|
|
22651
|
+
var modelFormat = (0, tslib_1.__assign)({}, model.format);
|
|
22652
|
+
delete modelFormat.italic;
|
|
22653
|
+
delete modelFormat.underline;
|
|
22654
|
+
delete modelFormat.fontWeight;
|
|
22457
22655
|
retrieveSegmentFormat(formatState, isFirst, Object.assign({}, modelFormat, block.format, (_a = block.decorator) === null || _a === void 0 ? void 0 : _a.format, segment.format, (_b = segment.code) === null || _b === void 0 ? void 0 : _b.format, (_c = segment.link) === null || _c === void 0 ? void 0 : _c.format, pendingFormat));
|
|
22458
22656
|
mergeValue(formatState, 'isCodeInline', !!(segment === null || segment === void 0 ? void 0 : segment.code), isFirst);
|
|
22459
22657
|
}
|
|
@@ -22544,7 +22742,7 @@ function retrieveStructureFormat(result, path, isFirst) {
|
|
|
22544
22742
|
((_b = path[containerIndex]) === null || _b === void 0 ? void 0 : _b.tagName) == 'blockquote', isFirst);
|
|
22545
22743
|
}
|
|
22546
22744
|
function retrieveTableFormat(tableContext, result) {
|
|
22547
|
-
var tableFormat = (0, updateTableMetadata_1.
|
|
22745
|
+
var tableFormat = (0, updateTableMetadata_1.getTableMetadata)(tableContext.table);
|
|
22548
22746
|
result.isInTable = true;
|
|
22549
22747
|
result.tableHasHeader = tableContext.table.rows.some(function (row) {
|
|
22550
22748
|
return row.cells.some(function (cell) { return cell.isHeader; });
|
|
@@ -22602,6 +22800,7 @@ function px2Pt(px) {
|
|
|
22602
22800
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
22603
22801
|
exports.setTableCellBackgroundColor = void 0;
|
|
22604
22802
|
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
22803
|
+
var mutate_1 = __webpack_require__(/*! ../common/mutate */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/mutate.ts");
|
|
22605
22804
|
var color_1 = __webpack_require__(/*! ../../formatHandlers/utils/color */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/utils/color.ts");
|
|
22606
22805
|
var updateTableCellMetadata_1 = __webpack_require__(/*! ../metadata/updateTableCellMetadata */ "./packages/roosterjs-content-model-dom/lib/modelApi/metadata/updateTableCellMetadata.ts");
|
|
22607
22806
|
// Using the HSL (hue, saturation and lightness) representation for RGB color values.
|
|
@@ -22653,9 +22852,10 @@ function setTableCellBackgroundColor(cell, color, isColorOverride, applyToSegmen
|
|
|
22653
22852
|
}
|
|
22654
22853
|
exports.setTableCellBackgroundColor = setTableCellBackgroundColor;
|
|
22655
22854
|
function removeAdaptiveCellColor(cell) {
|
|
22656
|
-
cell.blocks.forEach(function (
|
|
22855
|
+
cell.blocks.forEach(function (readonlyBlock) {
|
|
22657
22856
|
var _a, _b;
|
|
22658
|
-
if (
|
|
22857
|
+
if (readonlyBlock.blockType == 'Paragraph') {
|
|
22858
|
+
var block = (0, mutate_1.mutateBlock)(readonlyBlock);
|
|
22659
22859
|
if (((_a = block.segmentFormat) === null || _a === void 0 ? void 0 : _a.textColor) &&
|
|
22660
22860
|
shouldRemoveColor((_b = block.segmentFormat) === null || _b === void 0 ? void 0 : _b.textColor, cell.format.backgroundColor || '')) {
|
|
22661
22861
|
delete block.segmentFormat.textColor;
|
|
@@ -22671,9 +22871,10 @@ function removeAdaptiveCellColor(cell) {
|
|
|
22671
22871
|
}
|
|
22672
22872
|
function setAdaptiveCellColor(cell) {
|
|
22673
22873
|
if (cell.format.textColor) {
|
|
22674
|
-
cell.blocks.forEach(function (
|
|
22874
|
+
cell.blocks.forEach(function (readonlyBlock) {
|
|
22675
22875
|
var _a;
|
|
22676
|
-
if (
|
|
22876
|
+
if (readonlyBlock.blockType == 'Paragraph') {
|
|
22877
|
+
var block = (0, mutate_1.mutateBlock)(readonlyBlock);
|
|
22677
22878
|
if (!((_a = block.segmentFormat) === null || _a === void 0 ? void 0 : _a.textColor)) {
|
|
22678
22879
|
block.segmentFormat = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, block.segmentFormat), { textColor: cell.format.textColor });
|
|
22679
22880
|
}
|
|
@@ -23005,7 +23206,7 @@ exports.createObjectDefinition = createObjectDefinition;
|
|
|
23005
23206
|
"use strict";
|
|
23006
23207
|
|
|
23007
23208
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
23008
|
-
exports.updateImageMetadata = void 0;
|
|
23209
|
+
exports.updateImageMetadata = exports.getImageMetadata = void 0;
|
|
23009
23210
|
var updateMetadata_1 = __webpack_require__(/*! ./updateMetadata */ "./packages/roosterjs-content-model-dom/lib/modelApi/metadata/updateMetadata.ts");
|
|
23010
23211
|
var definitionCreators_1 = __webpack_require__(/*! ./definitionCreators */ "./packages/roosterjs-content-model-dom/lib/modelApi/metadata/definitionCreators.ts");
|
|
23011
23212
|
var NumberDefinition = (0, definitionCreators_1.createNumberDefinition)();
|
|
@@ -23021,6 +23222,14 @@ var ImageMetadataFormatDefinition = (0, definitionCreators_1.createObjectDefinit
|
|
|
23021
23222
|
naturalHeight: NumberDefinition,
|
|
23022
23223
|
naturalWidth: NumberDefinition,
|
|
23023
23224
|
});
|
|
23225
|
+
/**
|
|
23226
|
+
* Get image metadata
|
|
23227
|
+
* @param image The image Content Model
|
|
23228
|
+
*/
|
|
23229
|
+
function getImageMetadata(image) {
|
|
23230
|
+
return (0, updateMetadata_1.getMetadata)(image, ImageMetadataFormatDefinition);
|
|
23231
|
+
}
|
|
23232
|
+
exports.getImageMetadata = getImageMetadata;
|
|
23024
23233
|
/**
|
|
23025
23234
|
* Update image metadata with a callback
|
|
23026
23235
|
* @param image The image Content Model
|
|
@@ -23043,10 +23252,10 @@ exports.updateImageMetadata = updateImageMetadata;
|
|
|
23043
23252
|
"use strict";
|
|
23044
23253
|
|
|
23045
23254
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
23046
|
-
exports.updateListMetadata = exports.ListMetadataDefinition = void 0;
|
|
23255
|
+
exports.updateListMetadata = exports.getListMetadata = exports.ListMetadataDefinition = void 0;
|
|
23047
23256
|
var BulletListType_1 = __webpack_require__(/*! ../../constants/BulletListType */ "./packages/roosterjs-content-model-dom/lib/constants/BulletListType.ts");
|
|
23048
|
-
var NumberingListType_1 = __webpack_require__(/*! ../../constants/NumberingListType */ "./packages/roosterjs-content-model-dom/lib/constants/NumberingListType.ts");
|
|
23049
23257
|
var updateMetadata_1 = __webpack_require__(/*! ./updateMetadata */ "./packages/roosterjs-content-model-dom/lib/modelApi/metadata/updateMetadata.ts");
|
|
23258
|
+
var NumberingListType_1 = __webpack_require__(/*! ../../constants/NumberingListType */ "./packages/roosterjs-content-model-dom/lib/constants/NumberingListType.ts");
|
|
23050
23259
|
var definitionCreators_1 = __webpack_require__(/*! ./definitionCreators */ "./packages/roosterjs-content-model-dom/lib/modelApi/metadata/definitionCreators.ts");
|
|
23051
23260
|
/**
|
|
23052
23261
|
* Metadata definition for List
|
|
@@ -23056,6 +23265,14 @@ exports.ListMetadataDefinition = (0, definitionCreators_1.createObjectDefinition
|
|
|
23056
23265
|
unorderedStyleType: (0, definitionCreators_1.createNumberDefinition)(true /** isOptional */, undefined /** value **/, BulletListType_1.BulletListType.Min, BulletListType_1.BulletListType.Max),
|
|
23057
23266
|
applyListStyleFromLevel: (0, definitionCreators_1.createBooleanDefinition)(true /*isOptional*/),
|
|
23058
23267
|
}, true /** isOptional */, true /** allowNull */);
|
|
23268
|
+
/**
|
|
23269
|
+
* Get list metadata
|
|
23270
|
+
* @param list The list Content Model (metadata holder)
|
|
23271
|
+
*/
|
|
23272
|
+
function getListMetadata(list) {
|
|
23273
|
+
return (0, updateMetadata_1.getMetadata)(list, exports.ListMetadataDefinition);
|
|
23274
|
+
}
|
|
23275
|
+
exports.getListMetadata = getListMetadata;
|
|
23059
23276
|
/**
|
|
23060
23277
|
* Update list metadata with a callback
|
|
23061
23278
|
* @param list The list Content Model (metadata holder)
|
|
@@ -23078,26 +23295,34 @@ exports.updateListMetadata = updateListMetadata;
|
|
|
23078
23295
|
"use strict";
|
|
23079
23296
|
|
|
23080
23297
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
23081
|
-
exports.hasMetadata = exports.updateMetadata = void 0;
|
|
23298
|
+
exports.hasMetadata = exports.updateMetadata = exports.getMetadata = void 0;
|
|
23082
23299
|
var validate_1 = __webpack_require__(/*! ./validate */ "./packages/roosterjs-content-model-dom/lib/modelApi/metadata/validate.ts");
|
|
23083
23300
|
var EditingInfoDatasetName = 'editingInfo';
|
|
23084
23301
|
/**
|
|
23085
|
-
*
|
|
23086
|
-
* @param model The
|
|
23087
|
-
* @param
|
|
23088
|
-
* @
|
|
23089
|
-
* @returns The metadata object if any, or null
|
|
23302
|
+
* Retrieve metadata from the given model.
|
|
23303
|
+
* @param model The Content Model to retrieve metadata from
|
|
23304
|
+
* @param definition Definition of this metadata type, used for validate the metadata object
|
|
23305
|
+
* @returns Metadata of the model, or null if it does not contain a valid metadata
|
|
23090
23306
|
*/
|
|
23091
|
-
function
|
|
23307
|
+
function getMetadata(model, definition) {
|
|
23092
23308
|
var metadataString = model.dataset[EditingInfoDatasetName];
|
|
23093
23309
|
var obj = null;
|
|
23094
23310
|
try {
|
|
23095
23311
|
obj = JSON.parse(metadataString);
|
|
23096
23312
|
}
|
|
23097
23313
|
catch (_a) { }
|
|
23098
|
-
|
|
23099
|
-
|
|
23100
|
-
|
|
23314
|
+
return !definition || (0, validate_1.validate)(obj, definition) ? obj : null;
|
|
23315
|
+
}
|
|
23316
|
+
exports.getMetadata = getMetadata;
|
|
23317
|
+
/**
|
|
23318
|
+
* Update metadata of the given model
|
|
23319
|
+
* @param model The model to update metadata to
|
|
23320
|
+
* @param callback A callback function to update metadata
|
|
23321
|
+
* @param definition @optional Metadata definition used for verify the metadata object
|
|
23322
|
+
* @returns The metadata object if any, or null
|
|
23323
|
+
*/
|
|
23324
|
+
function updateMetadata(model, callback, definition) {
|
|
23325
|
+
var obj = getMetadata(model, definition);
|
|
23101
23326
|
if (callback) {
|
|
23102
23327
|
obj = callback(obj);
|
|
23103
23328
|
if (!obj) {
|
|
@@ -23131,7 +23356,7 @@ exports.hasMetadata = hasMetadata;
|
|
|
23131
23356
|
"use strict";
|
|
23132
23357
|
|
|
23133
23358
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
23134
|
-
exports.updateTableCellMetadata = void 0;
|
|
23359
|
+
exports.updateTableCellMetadata = exports.getTableCellMetadata = void 0;
|
|
23135
23360
|
var definitionCreators_1 = __webpack_require__(/*! ./definitionCreators */ "./packages/roosterjs-content-model-dom/lib/modelApi/metadata/definitionCreators.ts");
|
|
23136
23361
|
var updateMetadata_1 = __webpack_require__(/*! ./updateMetadata */ "./packages/roosterjs-content-model-dom/lib/modelApi/metadata/updateMetadata.ts");
|
|
23137
23362
|
var TableCellMetadataFormatDefinition = (0, definitionCreators_1.createObjectDefinition)({
|
|
@@ -23139,6 +23364,14 @@ var TableCellMetadataFormatDefinition = (0, definitionCreators_1.createObjectDef
|
|
|
23139
23364
|
vAlignOverride: (0, definitionCreators_1.createBooleanDefinition)(true /** isOptional */),
|
|
23140
23365
|
borderOverride: (0, definitionCreators_1.createBooleanDefinition)(true /** isOptional */),
|
|
23141
23366
|
}, false /* isOptional */, true /** allowNull */);
|
|
23367
|
+
/**
|
|
23368
|
+
* Get table cell metadata
|
|
23369
|
+
* @param cell The table cell Content Model
|
|
23370
|
+
*/
|
|
23371
|
+
function getTableCellMetadata(cell) {
|
|
23372
|
+
return (0, updateMetadata_1.getMetadata)(cell, TableCellMetadataFormatDefinition);
|
|
23373
|
+
}
|
|
23374
|
+
exports.getTableCellMetadata = getTableCellMetadata;
|
|
23142
23375
|
/**
|
|
23143
23376
|
* Update table cell metadata with a callback
|
|
23144
23377
|
* @param cell The table cell Content Model
|
|
@@ -23161,9 +23394,9 @@ exports.updateTableCellMetadata = updateTableCellMetadata;
|
|
|
23161
23394
|
"use strict";
|
|
23162
23395
|
|
|
23163
23396
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
23164
|
-
exports.updateTableMetadata = void 0;
|
|
23165
|
-
var TableBorderFormat_1 = __webpack_require__(/*! ../../constants/TableBorderFormat */ "./packages/roosterjs-content-model-dom/lib/constants/TableBorderFormat.ts");
|
|
23397
|
+
exports.updateTableMetadata = exports.getTableMetadata = void 0;
|
|
23166
23398
|
var updateMetadata_1 = __webpack_require__(/*! ./updateMetadata */ "./packages/roosterjs-content-model-dom/lib/modelApi/metadata/updateMetadata.ts");
|
|
23399
|
+
var TableBorderFormat_1 = __webpack_require__(/*! ../../constants/TableBorderFormat */ "./packages/roosterjs-content-model-dom/lib/constants/TableBorderFormat.ts");
|
|
23167
23400
|
var definitionCreators_1 = __webpack_require__(/*! ./definitionCreators */ "./packages/roosterjs-content-model-dom/lib/modelApi/metadata/definitionCreators.ts");
|
|
23168
23401
|
var NullStringDefinition = (0, definitionCreators_1.createStringDefinition)(false /** isOptional */, undefined /** value */, true /** allowNull */);
|
|
23169
23402
|
var BooleanDefinition = (0, definitionCreators_1.createBooleanDefinition)(false /** isOptional */);
|
|
@@ -23181,6 +23414,14 @@ var TableFormatDefinition = (0, definitionCreators_1.createObjectDefinition)({
|
|
|
23181
23414
|
tableBorderFormat: (0, definitionCreators_1.createNumberDefinition)(false /** isOptional */, undefined /* value */, TableBorderFormat_1.TableBorderFormat.Min /* first table border format */, TableBorderFormat_1.TableBorderFormat.Max /* last table border format */),
|
|
23182
23415
|
verticalAlign: NullStringDefinition,
|
|
23183
23416
|
}, false /* isOptional */, true /** allowNull */);
|
|
23417
|
+
/**
|
|
23418
|
+
* Get table metadata
|
|
23419
|
+
* @param table The table Content Model
|
|
23420
|
+
*/
|
|
23421
|
+
function getTableMetadata(table) {
|
|
23422
|
+
return (0, updateMetadata_1.getMetadata)(table, TableFormatDefinition);
|
|
23423
|
+
}
|
|
23424
|
+
exports.getTableMetadata = getTableMetadata;
|
|
23184
23425
|
/**
|
|
23185
23426
|
* Update table metadata with a callback
|
|
23186
23427
|
* @param table The table Content Model
|
|
@@ -23280,64 +23521,63 @@ var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.m
|
|
|
23280
23521
|
var getClosestAncestorBlockGroupIndex_1 = __webpack_require__(/*! ../editing/getClosestAncestorBlockGroupIndex */ "./packages/roosterjs-content-model-dom/lib/modelApi/editing/getClosestAncestorBlockGroupIndex.ts");
|
|
23281
23522
|
var isBlockGroupOfType_1 = __webpack_require__(/*! ../typeCheck/isBlockGroupOfType */ "./packages/roosterjs-content-model-dom/lib/modelApi/typeCheck/isBlockGroupOfType.ts");
|
|
23282
23523
|
var iterateSelections_1 = __webpack_require__(/*! ./iterateSelections */ "./packages/roosterjs-content-model-dom/lib/modelApi/selection/iterateSelections.ts");
|
|
23283
|
-
|
|
23284
|
-
|
|
23285
|
-
* @param model The Content Model to get selection from
|
|
23286
|
-
* @param includingFormatHolder True means also include format holder as segment from list item, in that case paragraph will be null
|
|
23287
|
-
*/
|
|
23288
|
-
function getSelectedSegmentsAndParagraphs(model, includingFormatHolder, includingEntity) {
|
|
23524
|
+
var mutate_1 = __webpack_require__(/*! ../common/mutate */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/mutate.ts");
|
|
23525
|
+
function getSelectedSegmentsAndParagraphs(model, includingFormatHolder, includingEntity, mutate) {
|
|
23289
23526
|
var selections = collectSelections(model, {
|
|
23290
23527
|
includeListFormatHolder: includingFormatHolder ? 'allSegments' : 'never',
|
|
23291
23528
|
});
|
|
23292
23529
|
var result = [];
|
|
23293
23530
|
selections.forEach(function (_a) {
|
|
23294
23531
|
var segments = _a.segments, block = _a.block, path = _a.path;
|
|
23295
|
-
if (segments
|
|
23296
|
-
|
|
23297
|
-
|
|
23298
|
-
|
|
23299
|
-
|
|
23300
|
-
|
|
23532
|
+
if (segments) {
|
|
23533
|
+
if (includingFormatHolder &&
|
|
23534
|
+
!block &&
|
|
23535
|
+
segments.length == 1 &&
|
|
23536
|
+
path[0].blockGroupType == 'ListItem' &&
|
|
23537
|
+
segments[0] == path[0].formatHolder) {
|
|
23538
|
+
var list = path[0];
|
|
23539
|
+
if (mutate) {
|
|
23540
|
+
(0, mutate_1.mutateBlock)(list);
|
|
23301
23541
|
}
|
|
23302
|
-
|
|
23542
|
+
result.push([list.formatHolder, null, path]);
|
|
23543
|
+
}
|
|
23544
|
+
else if ((block === null || block === void 0 ? void 0 : block.blockType) == 'Paragraph') {
|
|
23545
|
+
if (mutate) {
|
|
23546
|
+
(0, mutate_1.mutateBlock)(block);
|
|
23547
|
+
}
|
|
23548
|
+
segments.forEach(function (segment) {
|
|
23549
|
+
if (includingEntity ||
|
|
23550
|
+
segment.segmentType != 'Entity' ||
|
|
23551
|
+
!segment.entityFormat.isReadonly) {
|
|
23552
|
+
result.push([segment, block, path]);
|
|
23553
|
+
}
|
|
23554
|
+
});
|
|
23555
|
+
}
|
|
23303
23556
|
}
|
|
23304
23557
|
});
|
|
23305
23558
|
return result;
|
|
23306
23559
|
}
|
|
23307
23560
|
exports.getSelectedSegmentsAndParagraphs = getSelectedSegmentsAndParagraphs;
|
|
23308
|
-
|
|
23309
|
-
|
|
23310
|
-
|
|
23311
|
-
|
|
23312
|
-
|
|
23313
|
-
function getSelectedSegments(model, includingFormatHolder) {
|
|
23314
|
-
return getSelectedSegmentsAndParagraphs(model, includingFormatHolder).map(function (x) { return x[0]; });
|
|
23561
|
+
function getSelectedSegments(model, includingFormatHolder, mutate) {
|
|
23562
|
+
var segments = mutate
|
|
23563
|
+
? getSelectedSegmentsAndParagraphs(model, includingFormatHolder, false /*includeEntity*/, true /*mutate*/)
|
|
23564
|
+
: getSelectedSegmentsAndParagraphs(model, includingFormatHolder);
|
|
23565
|
+
return segments.map(function (x) { return x[0]; });
|
|
23315
23566
|
}
|
|
23316
23567
|
exports.getSelectedSegments = getSelectedSegments;
|
|
23317
|
-
|
|
23318
|
-
* Get any array of selected paragraphs from a content model
|
|
23319
|
-
* @param model The Content Model to get selection from
|
|
23320
|
-
*/
|
|
23321
|
-
function getSelectedParagraphs(model) {
|
|
23568
|
+
function getSelectedParagraphs(model, mutate) {
|
|
23322
23569
|
var selections = collectSelections(model, { includeListFormatHolder: 'never' });
|
|
23323
23570
|
var result = [];
|
|
23324
23571
|
removeUnmeaningfulSelections(selections);
|
|
23325
23572
|
selections.forEach(function (_a) {
|
|
23326
23573
|
var block = _a.block;
|
|
23327
23574
|
if ((block === null || block === void 0 ? void 0 : block.blockType) == 'Paragraph') {
|
|
23328
|
-
result.push(block);
|
|
23575
|
+
result.push(mutate ? (0, mutate_1.mutateBlock)(block) : block);
|
|
23329
23576
|
}
|
|
23330
23577
|
});
|
|
23331
23578
|
return result;
|
|
23332
23579
|
}
|
|
23333
23580
|
exports.getSelectedParagraphs = getSelectedParagraphs;
|
|
23334
|
-
/**
|
|
23335
|
-
* Get an array of block group - block pair that is of the expected block group type from selection
|
|
23336
|
-
* @param group The root block group to search
|
|
23337
|
-
* @param blockGroupTypes The expected block group types
|
|
23338
|
-
* @param stopTypes Block group types that will stop searching when hit
|
|
23339
|
-
* @param deepFirst True means search in deep first, otherwise wide first
|
|
23340
|
-
*/
|
|
23341
23581
|
function getOperationalBlocks(group, blockGroupTypes, stopTypes, deepFirst) {
|
|
23342
23582
|
var result = [];
|
|
23343
23583
|
var findSequence = deepFirst ? blockGroupTypes.map(function (type) { return [type]; }) : [blockGroupTypes];
|
|
@@ -23378,10 +23618,6 @@ function getOperationalBlocks(group, blockGroupTypes, stopTypes, deepFirst) {
|
|
|
23378
23618
|
return result;
|
|
23379
23619
|
}
|
|
23380
23620
|
exports.getOperationalBlocks = getOperationalBlocks;
|
|
23381
|
-
/**
|
|
23382
|
-
* Get the first selected table from content model
|
|
23383
|
-
* @param model The Content Model to get selection from
|
|
23384
|
-
*/
|
|
23385
23621
|
function getFirstSelectedTable(model) {
|
|
23386
23622
|
var selections = collectSelections(model, { includeListFormatHolder: 'never' });
|
|
23387
23623
|
var table;
|
|
@@ -23405,10 +23641,6 @@ function getFirstSelectedTable(model) {
|
|
|
23405
23641
|
return [table, resultPath];
|
|
23406
23642
|
}
|
|
23407
23643
|
exports.getFirstSelectedTable = getFirstSelectedTable;
|
|
23408
|
-
/**
|
|
23409
|
-
* Get the first selected list item from content model
|
|
23410
|
-
* @param model The Content Model to get selection from
|
|
23411
|
-
*/
|
|
23412
23644
|
function getFirstSelectedListItem(model) {
|
|
23413
23645
|
var listItem;
|
|
23414
23646
|
getOperationalBlocks(model, ['ListItem'], ['TableCell']).forEach(function (r) {
|
|
@@ -23431,6 +23663,8 @@ function collectSelections(group, option) {
|
|
|
23431
23663
|
}, option);
|
|
23432
23664
|
return selections;
|
|
23433
23665
|
}
|
|
23666
|
+
//#endregion
|
|
23667
|
+
//#region utils
|
|
23434
23668
|
function removeUnmeaningfulSelections(selections) {
|
|
23435
23669
|
if (selections.length > 1 &&
|
|
23436
23670
|
isOnlySelectionMarkerSelected(selections, false /*checkFirstParagraph*/)) {
|
|
@@ -23458,6 +23692,7 @@ function isOnlySelectionMarkerSelected(selections, checkFirstParagraph) {
|
|
|
23458
23692
|
return false;
|
|
23459
23693
|
}
|
|
23460
23694
|
}
|
|
23695
|
+
//#endregion
|
|
23461
23696
|
|
|
23462
23697
|
|
|
23463
23698
|
/***/ }),
|
|
@@ -23605,12 +23840,6 @@ exports.hasSelectionInSegment = hasSelectionInSegment;
|
|
|
23605
23840
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
23606
23841
|
exports.iterateSelections = void 0;
|
|
23607
23842
|
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
23608
|
-
/**
|
|
23609
|
-
* Iterate all selected elements in a given model
|
|
23610
|
-
* @param group The given Content Model to iterate selection from
|
|
23611
|
-
* @param callback The callback function to access the selected element
|
|
23612
|
-
* @param option Option to determine how to iterate
|
|
23613
|
-
*/
|
|
23614
23843
|
function iterateSelections(group, callback, option) {
|
|
23615
23844
|
var internalCallback = function (path, tableContext, block, segments) {
|
|
23616
23845
|
var _a;
|
|
@@ -23760,6 +23989,7 @@ function internalIterateSelections(path, callback, option, table, treatAllAsSele
|
|
|
23760
23989
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
23761
23990
|
exports.setSelection = void 0;
|
|
23762
23991
|
var isGeneralSegment_1 = __webpack_require__(/*! ../typeCheck/isGeneralSegment */ "./packages/roosterjs-content-model-dom/lib/modelApi/typeCheck/isGeneralSegment.ts");
|
|
23992
|
+
var mutate_1 = __webpack_require__(/*! ../common/mutate */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/mutate.ts");
|
|
23763
23993
|
/**
|
|
23764
23994
|
* Set selection into Content Model. If the Content Model already has selection, existing selection will be overwritten by the new one.
|
|
23765
23995
|
* @param group The root level group of Content Model
|
|
@@ -23772,8 +24002,8 @@ function setSelection(group, start, end) {
|
|
|
23772
24002
|
exports.setSelection = setSelection;
|
|
23773
24003
|
function setSelectionToBlockGroup(group, isInSelection, start, end) {
|
|
23774
24004
|
return handleSelection(isInSelection, group, start, end, function (isInSelection) {
|
|
23775
|
-
if ((0, isGeneralSegment_1.isGeneralSegment)(group)) {
|
|
23776
|
-
setIsSelected(group, isInSelection);
|
|
24005
|
+
if ((0, isGeneralSegment_1.isGeneralSegment)(group) && needToSetSelection(group, isInSelection)) {
|
|
24006
|
+
setIsSelected((0, mutate_1.mutateBlock)(group), isInSelection);
|
|
23777
24007
|
}
|
|
23778
24008
|
group.blocks.forEach(function (block) {
|
|
23779
24009
|
isInSelection = setSelectionToBlock(block, isInSelection, start, end);
|
|
@@ -23790,11 +24020,14 @@ function setSelectionToBlock(block, isInSelection, start, end) {
|
|
|
23790
24020
|
case 'Divider':
|
|
23791
24021
|
case 'Entity':
|
|
23792
24022
|
return handleSelection(isInSelection, block, start, end, function (isInSelection) {
|
|
23793
|
-
if (isInSelection) {
|
|
23794
|
-
|
|
23795
|
-
|
|
23796
|
-
|
|
23797
|
-
|
|
24023
|
+
if (needToSetSelection(block, isInSelection)) {
|
|
24024
|
+
var mutableBlock = (0, mutate_1.mutateBlock)(block);
|
|
24025
|
+
if (isInSelection) {
|
|
24026
|
+
mutableBlock.isSelected = true;
|
|
24027
|
+
}
|
|
24028
|
+
else {
|
|
24029
|
+
delete mutableBlock.isSelected;
|
|
24030
|
+
}
|
|
23798
24031
|
}
|
|
23799
24032
|
return isInSelection;
|
|
23800
24033
|
});
|
|
@@ -23802,13 +24035,13 @@ function setSelectionToBlock(block, isInSelection, start, end) {
|
|
|
23802
24035
|
var segmentsToDelete_1 = [];
|
|
23803
24036
|
block.segments.forEach(function (segment, i) {
|
|
23804
24037
|
isInSelection = handleSelection(isInSelection, segment, start, end, function (isInSelection) {
|
|
23805
|
-
return setSelectionToSegment(segment, isInSelection, segmentsToDelete_1, start, end, i);
|
|
24038
|
+
return setSelectionToSegment(block, segment, isInSelection, segmentsToDelete_1, start, end, i);
|
|
23806
24039
|
});
|
|
23807
24040
|
});
|
|
23808
|
-
|
|
23809
|
-
|
|
24041
|
+
var index = void 0;
|
|
24042
|
+
while ((index = segmentsToDelete_1.pop()) !== undefined) {
|
|
23810
24043
|
if (index >= 0) {
|
|
23811
|
-
block.segments.splice(index, 1);
|
|
24044
|
+
(0, mutate_1.mutateBlock)(block).segments.splice(index, 1);
|
|
23812
24045
|
}
|
|
23813
24046
|
}
|
|
23814
24047
|
return isInSelection;
|
|
@@ -23825,7 +24058,9 @@ function setSelectionToTable(table, isInSelection, start, end) {
|
|
|
23825
24058
|
for (var col = 0; col < currentRow.cells.length; col++) {
|
|
23826
24059
|
var currentCell = table.rows[row].cells[col];
|
|
23827
24060
|
var isSelected = row >= first.row && row <= last.row && col >= first.col && col <= last.col;
|
|
23828
|
-
|
|
24061
|
+
if (needToSetSelection(currentCell, isSelected)) {
|
|
24062
|
+
setIsSelected((0, mutate_1.mutateBlock)(currentCell), isSelected);
|
|
24063
|
+
}
|
|
23829
24064
|
if (!isSelected) {
|
|
23830
24065
|
setSelectionToBlockGroup(currentCell, false /*isInSelection*/, start, end);
|
|
23831
24066
|
}
|
|
@@ -23848,7 +24083,7 @@ function findCell(table, cell) {
|
|
|
23848
24083
|
: -1;
|
|
23849
24084
|
return { row: row, col: col };
|
|
23850
24085
|
}
|
|
23851
|
-
function setSelectionToSegment(segment, isInSelection, segmentsToDelete, start, end, i) {
|
|
24086
|
+
function setSelectionToSegment(paragraph, segment, isInSelection, segmentsToDelete, start, end, i) {
|
|
23852
24087
|
switch (segment.segmentType) {
|
|
23853
24088
|
case 'SelectionMarker':
|
|
23854
24089
|
if (!isInSelection || (segment != start && segment != end)) {
|
|
@@ -23859,19 +24094,32 @@ function setSelectionToSegment(segment, isInSelection, segmentsToDelete, start,
|
|
|
23859
24094
|
}
|
|
23860
24095
|
return isInSelection;
|
|
23861
24096
|
case 'General':
|
|
23862
|
-
|
|
24097
|
+
internalSetSelectionToSegment(paragraph, segment, isInSelection);
|
|
23863
24098
|
return segment != start && segment != end
|
|
23864
24099
|
? setSelectionToBlockGroup(segment, isInSelection, start, end)
|
|
23865
24100
|
: isInSelection;
|
|
23866
24101
|
case 'Image':
|
|
23867
|
-
|
|
23868
|
-
segment
|
|
24102
|
+
var isSelectedAsImageSelection_1 = start == segment && (!end || end == segment);
|
|
24103
|
+
internalSetSelectionToSegment(paragraph, segment, isInSelection, !segment.isSelectedAsImageSelection != !isSelectedAsImageSelection_1
|
|
24104
|
+
? function (image) { return (image.isSelectedAsImageSelection = isSelectedAsImageSelection_1); }
|
|
24105
|
+
: undefined);
|
|
23869
24106
|
return isInSelection;
|
|
23870
24107
|
default:
|
|
23871
|
-
|
|
24108
|
+
internalSetSelectionToSegment(paragraph, segment, isInSelection);
|
|
23872
24109
|
return isInSelection;
|
|
23873
24110
|
}
|
|
23874
24111
|
}
|
|
24112
|
+
function internalSetSelectionToSegment(paragraph, segment, isInSelection, additionAction) {
|
|
24113
|
+
if (additionAction || needToSetSelection(segment, isInSelection)) {
|
|
24114
|
+
(0, mutate_1.mutateSegment)(paragraph, segment, function (mutableSegment) {
|
|
24115
|
+
setIsSelected(mutableSegment, isInSelection);
|
|
24116
|
+
additionAction === null || additionAction === void 0 ? void 0 : additionAction(mutableSegment);
|
|
24117
|
+
});
|
|
24118
|
+
}
|
|
24119
|
+
}
|
|
24120
|
+
function needToSetSelection(selectable, isSelected) {
|
|
24121
|
+
return !selectable.isSelected != !isSelected;
|
|
24122
|
+
}
|
|
23875
24123
|
function setIsSelected(selectable, value) {
|
|
23876
24124
|
if (value) {
|
|
23877
24125
|
selectable.isSelected = true;
|
|
@@ -23900,11 +24148,6 @@ function handleSelection(isInSelection, model, start, end, callback) {
|
|
|
23900
24148
|
|
|
23901
24149
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
23902
24150
|
exports.isBlockGroupOfType = void 0;
|
|
23903
|
-
/**
|
|
23904
|
-
* Check if the given content model block or block group is of the expected block group type
|
|
23905
|
-
* @param input The object to check
|
|
23906
|
-
* @param type The expected type
|
|
23907
|
-
*/
|
|
23908
24151
|
function isBlockGroupOfType(input, type) {
|
|
23909
24152
|
var item = input;
|
|
23910
24153
|
return (item === null || item === void 0 ? void 0 : item.blockGroupType) == type;
|
|
@@ -23924,10 +24167,6 @@ exports.isBlockGroupOfType = isBlockGroupOfType;
|
|
|
23924
24167
|
|
|
23925
24168
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
23926
24169
|
exports.isGeneralSegment = void 0;
|
|
23927
|
-
/**
|
|
23928
|
-
* Check if the given block group is a general segment
|
|
23929
|
-
* @param group The group to check
|
|
23930
|
-
*/
|
|
23931
24170
|
function isGeneralSegment(group) {
|
|
23932
24171
|
return (group.blockGroupType == 'General' &&
|
|
23933
24172
|
group.segmentType == 'General');
|
|
@@ -25637,7 +25876,11 @@ var roosterjs_content_model_api_1 = __webpack_require__(/*! roosterjs-content-mo
|
|
|
25637
25876
|
* @internal
|
|
25638
25877
|
*/
|
|
25639
25878
|
function createLink(editor) {
|
|
25879
|
+
var anchorNode = null;
|
|
25640
25880
|
(0, roosterjs_content_model_api_1.formatTextSegmentBeforeSelectionMarker)(editor, function (_model, linkSegment, _paragraph) {
|
|
25881
|
+
if (linkSegment.link) {
|
|
25882
|
+
return true;
|
|
25883
|
+
}
|
|
25641
25884
|
var linkData = null;
|
|
25642
25885
|
if (!linkSegment.link && (linkData = (0, roosterjs_content_model_api_1.matchLink)(linkSegment.text))) {
|
|
25643
25886
|
(0, roosterjs_content_model_dom_1.addLink)(linkSegment, {
|
|
@@ -25652,6 +25895,12 @@ function createLink(editor) {
|
|
|
25652
25895
|
return false;
|
|
25653
25896
|
}, {
|
|
25654
25897
|
changeSource: roosterjs_content_model_dom_1.ChangeSource.AutoLink,
|
|
25898
|
+
onNodeCreated: function (_modelElement, node) {
|
|
25899
|
+
if (!anchorNode) {
|
|
25900
|
+
anchorNode = node;
|
|
25901
|
+
}
|
|
25902
|
+
},
|
|
25903
|
+
getChangeData: function () { return anchorNode; },
|
|
25655
25904
|
});
|
|
25656
25905
|
}
|
|
25657
25906
|
exports.createLink = createLink;
|
|
@@ -26392,6 +26641,7 @@ var EditPlugin = /** @class */ (function () {
|
|
|
26392
26641
|
this.editor = null;
|
|
26393
26642
|
this.disposer = null;
|
|
26394
26643
|
this.shouldHandleNextInputEvent = false;
|
|
26644
|
+
this.selectionAfterDelete = null;
|
|
26395
26645
|
}
|
|
26396
26646
|
/**
|
|
26397
26647
|
* Get name of this plugin
|
|
@@ -26439,6 +26689,12 @@ var EditPlugin = /** @class */ (function () {
|
|
|
26439
26689
|
case 'keyDown':
|
|
26440
26690
|
this.handleKeyDownEvent(this.editor, event);
|
|
26441
26691
|
break;
|
|
26692
|
+
case 'keyUp':
|
|
26693
|
+
if (this.selectionAfterDelete) {
|
|
26694
|
+
this.editor.setDOMSelection(this.selectionAfterDelete);
|
|
26695
|
+
this.selectionAfterDelete = null;
|
|
26696
|
+
}
|
|
26697
|
+
break;
|
|
26442
26698
|
}
|
|
26443
26699
|
}
|
|
26444
26700
|
};
|
|
@@ -26475,8 +26731,6 @@ var EditPlugin = /** @class */ (function () {
|
|
|
26475
26731
|
}
|
|
26476
26732
|
};
|
|
26477
26733
|
EditPlugin.prototype.handleBeforeInputEvent = function (editor, rawEvent) {
|
|
26478
|
-
var _this = this;
|
|
26479
|
-
var _a, _b;
|
|
26480
26734
|
// Some Android IMEs doesn't fire correct keydown event for BACKSPACE/DELETE key
|
|
26481
26735
|
// Here we translate input event to BACKSPACE/DELETE keydown event to be compatible with existing logic
|
|
26482
26736
|
if (!this.shouldHandleNextInputEvent ||
|
|
@@ -26504,15 +26758,9 @@ var EditPlugin = /** @class */ (function () {
|
|
|
26504
26758
|
}
|
|
26505
26759
|
if (handled) {
|
|
26506
26760
|
rawEvent.preventDefault();
|
|
26507
|
-
// Restore the selection to avoid the cursor jump issue
|
|
26761
|
+
// Restore the selection on keyup event to avoid the cursor jump issue
|
|
26508
26762
|
// See: https://issues.chromium.org/issues/330596261
|
|
26509
|
-
|
|
26510
|
-
var doc = (_a = this.editor) === null || _a === void 0 ? void 0 : _a.getDocument();
|
|
26511
|
-
(_b = doc === null || doc === void 0 ? void 0 : doc.defaultView) === null || _b === void 0 ? void 0 : _b.requestAnimationFrame(function () {
|
|
26512
|
-
if (_this.editor) {
|
|
26513
|
-
_this.editor.setDOMSelection(selection_1);
|
|
26514
|
-
}
|
|
26515
|
-
});
|
|
26763
|
+
this.selectionAfterDelete = editor.getDOMSelection();
|
|
26516
26764
|
}
|
|
26517
26765
|
};
|
|
26518
26766
|
return EditPlugin;
|
|
@@ -26596,8 +26844,9 @@ function getDeleteCollapsedSelection(direction) {
|
|
|
26596
26844
|
context.deleteResult = 'range';
|
|
26597
26845
|
}
|
|
26598
26846
|
else if ((blockToDelete = (0, getLeafSiblingBlock_1.getLeafSiblingBlock)(path, paragraph, isForward))) {
|
|
26599
|
-
var
|
|
26600
|
-
if (
|
|
26847
|
+
var readonlyBlock = blockToDelete.block, path_1 = blockToDelete.path, siblingSegment = blockToDelete.siblingSegment;
|
|
26848
|
+
if (readonlyBlock.blockType == 'Paragraph') {
|
|
26849
|
+
var block = (0, roosterjs_content_model_dom_1.mutateBlock)(readonlyBlock);
|
|
26601
26850
|
if (siblingSegment) {
|
|
26602
26851
|
// When selection is under general segment, need to check if it has a sibling sibling, and delete from it
|
|
26603
26852
|
if ((0, roosterjs_content_model_dom_1.deleteSegment)(block, siblingSegment, context.formatContext, direction)) {
|
|
@@ -26619,7 +26868,6 @@ function getDeleteCollapsedSelection(direction) {
|
|
|
26619
26868
|
tableContext: tableContext,
|
|
26620
26869
|
};
|
|
26621
26870
|
context.lastParagraph = paragraph;
|
|
26622
|
-
delete block.cachedElement;
|
|
26623
26871
|
}
|
|
26624
26872
|
context.deleteResult = 'range';
|
|
26625
26873
|
}
|
|
@@ -26627,7 +26875,7 @@ function getDeleteCollapsedSelection(direction) {
|
|
|
26627
26875
|
context.lastTableContext = tableContext;
|
|
26628
26876
|
}
|
|
26629
26877
|
else {
|
|
26630
|
-
if ((0, roosterjs_content_model_dom_1.deleteBlock)(path_1[0].blocks,
|
|
26878
|
+
if ((0, roosterjs_content_model_dom_1.deleteBlock)((0, roosterjs_content_model_dom_1.mutateBlock)(path_1[0]).blocks, readonlyBlock, undefined /*replacement*/, context.formatContext, direction)) {
|
|
26631
26879
|
context.deleteResult = 'range';
|
|
26632
26880
|
}
|
|
26633
26881
|
}
|
|
@@ -26740,7 +26988,7 @@ var insertNewLine = function (quote, parent, index) {
|
|
|
26740
26988
|
var marker = (0, roosterjs_content_model_dom_1.createSelectionMarker)();
|
|
26741
26989
|
var newParagraph = (0, roosterjs_content_model_dom_1.createParagraph)(false /* isImplicit */);
|
|
26742
26990
|
newParagraph.segments.push(marker);
|
|
26743
|
-
parent.blocks.splice(index + 1, 0, newParagraph);
|
|
26991
|
+
(0, roosterjs_content_model_dom_1.mutateBlock)(parent).blocks.splice(index + 1, 0, newParagraph);
|
|
26744
26992
|
};
|
|
26745
26993
|
|
|
26746
26994
|
|
|
@@ -27080,7 +27328,7 @@ var handleEnterOnList = function (context) {
|
|
|
27080
27328
|
lastParagraph.blockType === 'Paragraph' &&
|
|
27081
27329
|
lastParagraph.segments[lastParagraph.segments.length - 1].segmentType ===
|
|
27082
27330
|
'SelectionMarker') {
|
|
27083
|
-
lastParagraph.segments.pop();
|
|
27331
|
+
(0, roosterjs_content_model_dom_1.mutateBlock)(lastParagraph).segments.pop();
|
|
27084
27332
|
nextParagraph.segments.unshift((0, roosterjs_content_model_dom_1.createSelectionMarker)(insertPoint.marker.format));
|
|
27085
27333
|
}
|
|
27086
27334
|
context.lastParagraph = undefined;
|
|
@@ -27088,7 +27336,7 @@ var handleEnterOnList = function (context) {
|
|
|
27088
27336
|
}
|
|
27089
27337
|
else if (deleteResult !== 'range') {
|
|
27090
27338
|
if (isEmptyListItem(listItem_1)) {
|
|
27091
|
-
listItem_1.levels.pop();
|
|
27339
|
+
(0, roosterjs_content_model_dom_1.mutateBlock)(listItem_1).levels.pop();
|
|
27092
27340
|
}
|
|
27093
27341
|
else {
|
|
27094
27342
|
var newListItem = createNewListItem(context, listItem_1, listParent);
|
|
@@ -27121,7 +27369,7 @@ var createNewListItem = function (context, listItem, listParent) {
|
|
|
27121
27369
|
newListItem.blocks.push(newParagraph);
|
|
27122
27370
|
insertPoint.paragraph = newParagraph;
|
|
27123
27371
|
context.lastParagraph = newParagraph;
|
|
27124
|
-
listParent.blocks.splice(listIndex + 1, 0, newListItem);
|
|
27372
|
+
(0, roosterjs_content_model_dom_1.mutateBlock)(listParent).blocks.splice(listIndex + 1, 0, newListItem);
|
|
27125
27373
|
return newListItem;
|
|
27126
27374
|
};
|
|
27127
27375
|
var createNewListLevel = function (listItem) {
|
|
@@ -27615,9 +27863,6 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
|
27615
27863
|
exports.getLeafSiblingBlock = void 0;
|
|
27616
27864
|
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
27617
27865
|
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
27618
|
-
/**
|
|
27619
|
-
* @internal
|
|
27620
|
-
*/
|
|
27621
27866
|
function getLeafSiblingBlock(path, block, isNext) {
|
|
27622
27867
|
var _a;
|
|
27623
27868
|
var newPath = (0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(path), false);
|
|
@@ -31133,6 +31378,7 @@ exports.createCellResizer = exports.VERTICAL_RESIZER_ID = exports.HORIZONTAL_RES
|
|
|
31133
31378
|
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
31134
31379
|
var createElement_1 = __webpack_require__(/*! ../../../pluginUtils/CreateElement/createElement */ "./packages/roosterjs-content-model-plugins/lib/pluginUtils/CreateElement/createElement.ts");
|
|
31135
31380
|
var DragAndDropHelper_1 = __webpack_require__(/*! ../../../pluginUtils/DragAndDrop/DragAndDropHelper */ "./packages/roosterjs-content-model-plugins/lib/pluginUtils/DragAndDrop/DragAndDropHelper.ts");
|
|
31381
|
+
var getTableFromContentModel_1 = __webpack_require__(/*! ../utils/getTableFromContentModel */ "./packages/roosterjs-content-model-plugins/lib/tableEdit/editors/utils/getTableFromContentModel.ts");
|
|
31136
31382
|
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
31137
31383
|
var CELL_RESIZER_WIDTH = 4;
|
|
31138
31384
|
/**
|
|
@@ -31185,21 +31431,8 @@ function onDragStart(context, event) {
|
|
|
31185
31431
|
}; // Just a fallback
|
|
31186
31432
|
}
|
|
31187
31433
|
var editor = context.editor, table = context.table;
|
|
31188
|
-
// Get
|
|
31189
|
-
var
|
|
31190
|
-
// Select first cell of the table
|
|
31191
|
-
editor.setDOMSelection({
|
|
31192
|
-
type: 'table',
|
|
31193
|
-
firstColumn: 0,
|
|
31194
|
-
firstRow: 0,
|
|
31195
|
-
lastColumn: 0,
|
|
31196
|
-
lastRow: 0,
|
|
31197
|
-
table: table,
|
|
31198
|
-
});
|
|
31199
|
-
// Get the table content model
|
|
31200
|
-
var cmTable = (0, roosterjs_content_model_dom_1.getFirstSelectedTable)(editor.getContentModelCopy('disconnected'))[0];
|
|
31201
|
-
// Restore selection
|
|
31202
|
-
editor.setDOMSelection(selection);
|
|
31434
|
+
// Get Table block in content model
|
|
31435
|
+
var cmTable = (0, getTableFromContentModel_1.getCMTableFromTable)(editor, table);
|
|
31203
31436
|
if (rect && cmTable) {
|
|
31204
31437
|
onStart();
|
|
31205
31438
|
return {
|
|
@@ -31476,6 +31709,7 @@ var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.m
|
|
|
31476
31709
|
var createElement_1 = __webpack_require__(/*! ../../../pluginUtils/CreateElement/createElement */ "./packages/roosterjs-content-model-plugins/lib/pluginUtils/CreateElement/createElement.ts");
|
|
31477
31710
|
var DragAndDropHelper_1 = __webpack_require__(/*! ../../../pluginUtils/DragAndDrop/DragAndDropHelper */ "./packages/roosterjs-content-model-plugins/lib/pluginUtils/DragAndDrop/DragAndDropHelper.ts");
|
|
31478
31711
|
var roosterjs_content_model_api_1 = __webpack_require__(/*! roosterjs-content-model-api */ "./packages/roosterjs-content-model-api/lib/index.ts");
|
|
31712
|
+
var getTableFromContentModel_1 = __webpack_require__(/*! ../utils/getTableFromContentModel */ "./packages/roosterjs-content-model-plugins/lib/tableEdit/editors/utils/getTableFromContentModel.ts");
|
|
31479
31713
|
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
31480
31714
|
var TABLE_MOVER_LENGTH = 12;
|
|
31481
31715
|
/**
|
|
@@ -31609,21 +31843,10 @@ function onDragStart(context) {
|
|
|
31609
31843
|
tableRect.style.top = trect.top + "px";
|
|
31610
31844
|
tableRect.style.left = trect.left + "px";
|
|
31611
31845
|
(_a = div.parentNode) === null || _a === void 0 ? void 0 : _a.appendChild(tableRect);
|
|
31612
|
-
// Get
|
|
31846
|
+
// Get drag start selection
|
|
31613
31847
|
var initialSelection = editor.getDOMSelection();
|
|
31614
|
-
//
|
|
31615
|
-
|
|
31616
|
-
type: 'table',
|
|
31617
|
-
firstColumn: 0,
|
|
31618
|
-
firstRow: 0,
|
|
31619
|
-
lastColumn: 0,
|
|
31620
|
-
lastRow: 0,
|
|
31621
|
-
table: table,
|
|
31622
|
-
});
|
|
31623
|
-
// Get the table content model
|
|
31624
|
-
var _b = (0, tslib_1.__read)((0, roosterjs_content_model_dom_1.getFirstSelectedTable)(editor.getContentModelCopy('disconnected')), 1), cmTable = _b[0];
|
|
31625
|
-
// Restore selection
|
|
31626
|
-
editor.setDOMSelection(initialSelection);
|
|
31848
|
+
// Get Table block in content model
|
|
31849
|
+
var cmTable = (0, getTableFromContentModel_1.getCMTableFromTable)(editor, table);
|
|
31627
31850
|
return {
|
|
31628
31851
|
cmTable: cmTable,
|
|
31629
31852
|
initialSelection: initialSelection,
|
|
@@ -31756,6 +31979,7 @@ exports.createTableResizer = exports.TABLE_RESIZER_ID = void 0;
|
|
|
31756
31979
|
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
31757
31980
|
var createElement_1 = __webpack_require__(/*! ../../../pluginUtils/CreateElement/createElement */ "./packages/roosterjs-content-model-plugins/lib/pluginUtils/CreateElement/createElement.ts");
|
|
31758
31981
|
var DragAndDropHelper_1 = __webpack_require__(/*! ../../../pluginUtils/DragAndDrop/DragAndDropHelper */ "./packages/roosterjs-content-model-plugins/lib/pluginUtils/DragAndDrop/DragAndDropHelper.ts");
|
|
31982
|
+
var getTableFromContentModel_1 = __webpack_require__(/*! ../utils/getTableFromContentModel */ "./packages/roosterjs-content-model-plugins/lib/tableEdit/editors/utils/getTableFromContentModel.ts");
|
|
31759
31983
|
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
31760
31984
|
var TABLE_RESIZER_LENGTH = 12;
|
|
31761
31985
|
/**
|
|
@@ -31819,21 +32043,8 @@ var TableResizer = /** @class */ (function (_super) {
|
|
|
31819
32043
|
function onDragStart(context, event) {
|
|
31820
32044
|
context.onStart();
|
|
31821
32045
|
var editor = context.editor, table = context.table;
|
|
31822
|
-
// Get
|
|
31823
|
-
var
|
|
31824
|
-
// Select first cell of the table
|
|
31825
|
-
editor.setDOMSelection({
|
|
31826
|
-
type: 'table',
|
|
31827
|
-
firstColumn: 0,
|
|
31828
|
-
firstRow: 0,
|
|
31829
|
-
lastColumn: 0,
|
|
31830
|
-
lastRow: 0,
|
|
31831
|
-
table: table,
|
|
31832
|
-
});
|
|
31833
|
-
// Get the table content model
|
|
31834
|
-
var cmTable = (0, roosterjs_content_model_dom_1.getFirstSelectedTable)(editor.getContentModelCopy('disconnected'))[0];
|
|
31835
|
-
// Restore selection
|
|
31836
|
-
editor.setDOMSelection(selection);
|
|
32046
|
+
// Get Table block in content model
|
|
32047
|
+
var cmTable = (0, getTableFromContentModel_1.getCMTableFromTable)(editor, table);
|
|
31837
32048
|
// Save original widths and heights
|
|
31838
32049
|
var heights = [];
|
|
31839
32050
|
cmTable === null || cmTable === void 0 ? void 0 : cmTable.rows.forEach(function (row) {
|
|
@@ -31935,6 +32146,45 @@ function isTableBottomVisible(editor, rect, contentDiv) {
|
|
|
31935
32146
|
}
|
|
31936
32147
|
|
|
31937
32148
|
|
|
32149
|
+
/***/ }),
|
|
32150
|
+
|
|
32151
|
+
/***/ "./packages/roosterjs-content-model-plugins/lib/tableEdit/editors/utils/getTableFromContentModel.ts":
|
|
32152
|
+
/*!**********************************************************************************************************!*\
|
|
32153
|
+
!*** ./packages/roosterjs-content-model-plugins/lib/tableEdit/editors/utils/getTableFromContentModel.ts ***!
|
|
32154
|
+
\**********************************************************************************************************/
|
|
32155
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
32156
|
+
|
|
32157
|
+
"use strict";
|
|
32158
|
+
|
|
32159
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
32160
|
+
exports.getCMTableFromTable = void 0;
|
|
32161
|
+
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
32162
|
+
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
32163
|
+
/**
|
|
32164
|
+
* @internal
|
|
32165
|
+
* Get ContentModelTable from a table element if it is present in the content model
|
|
32166
|
+
*/
|
|
32167
|
+
function getCMTableFromTable(editor, table) {
|
|
32168
|
+
var cmTable;
|
|
32169
|
+
editor.formatContentModel(function (model) {
|
|
32170
|
+
var _a;
|
|
32171
|
+
_a = (0, tslib_1.__read)((0, roosterjs_content_model_dom_1.getFirstSelectedTable)(model), 1), cmTable = _a[0];
|
|
32172
|
+
return false;
|
|
32173
|
+
}, {
|
|
32174
|
+
selectionOverride: {
|
|
32175
|
+
type: 'table',
|
|
32176
|
+
firstColumn: 0,
|
|
32177
|
+
firstRow: 0,
|
|
32178
|
+
lastColumn: 0,
|
|
32179
|
+
lastRow: 0,
|
|
32180
|
+
table: table,
|
|
32181
|
+
},
|
|
32182
|
+
});
|
|
32183
|
+
return cmTable;
|
|
32184
|
+
}
|
|
32185
|
+
exports.getCMTableFromTable = getCMTableFromTable;
|
|
32186
|
+
|
|
32187
|
+
|
|
31938
32188
|
/***/ }),
|
|
31939
32189
|
|
|
31940
32190
|
/***/ "./packages/roosterjs-content-model-plugins/lib/watermark/WatermarkPlugin.ts":
|