roosterjs 8.29.3 → 8.30.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/README.md +0 -22
- package/dist/rooster-amd-min.js +1 -1
- package/dist/rooster-amd-min.js.map +1 -1
- package/dist/rooster-amd.d.ts +53 -10
- package/dist/rooster-amd.js +162 -129
- 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.d.ts +53 -10
- package/dist/rooster.js +162 -129
- package/dist/rooster.js.map +1 -1
- package/package.json +7 -7
- package/tsconfig.child.tsbuildinfo +1 -1
package/dist/rooster.js
CHANGED
|
@@ -1337,13 +1337,12 @@ module.exports = {
|
|
|
1337
1337
|
/* MIT license */
|
|
1338
1338
|
var colorNames = __webpack_require__(/*! color-name */ "./node_modules/color-name/index.js");
|
|
1339
1339
|
var swizzle = __webpack_require__(/*! simple-swizzle */ "./node_modules/simple-swizzle/index.js");
|
|
1340
|
-
var hasOwnProperty = Object.hasOwnProperty;
|
|
1341
1340
|
|
|
1342
|
-
var reverseNames =
|
|
1341
|
+
var reverseNames = {};
|
|
1343
1342
|
|
|
1344
1343
|
// create a list of reverse color names
|
|
1345
1344
|
for (var name in colorNames) {
|
|
1346
|
-
if (hasOwnProperty
|
|
1345
|
+
if (colorNames.hasOwnProperty(name)) {
|
|
1347
1346
|
reverseNames[colorNames[name]] = name;
|
|
1348
1347
|
}
|
|
1349
1348
|
}
|
|
@@ -1386,9 +1385,9 @@ cs.get.rgb = function (string) {
|
|
|
1386
1385
|
|
|
1387
1386
|
var abbr = /^#([a-f0-9]{3,4})$/i;
|
|
1388
1387
|
var hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;
|
|
1389
|
-
var rgba = /^rgba?\(\s*([+-]?\d+)
|
|
1390
|
-
var per = /^rgba?\(\s*([+-]?[\d\.]+)\%\s
|
|
1391
|
-
var keyword =
|
|
1388
|
+
var rgba = /^rgba?\(\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*,\s*([+-]?\d+)\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/;
|
|
1389
|
+
var per = /^rgba?\(\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*,\s*([+-]?[\d\.]+)\%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/;
|
|
1390
|
+
var keyword = /(\D+)/;
|
|
1392
1391
|
|
|
1393
1392
|
var rgb = [0, 0, 0, 1];
|
|
1394
1393
|
var match;
|
|
@@ -1425,11 +1424,7 @@ cs.get.rgb = function (string) {
|
|
|
1425
1424
|
}
|
|
1426
1425
|
|
|
1427
1426
|
if (match[4]) {
|
|
1428
|
-
|
|
1429
|
-
rgb[3] = parseFloat(match[4]) * 0.01;
|
|
1430
|
-
} else {
|
|
1431
|
-
rgb[3] = parseFloat(match[4]);
|
|
1432
|
-
}
|
|
1427
|
+
rgb[3] = parseFloat(match[4]);
|
|
1433
1428
|
}
|
|
1434
1429
|
} else if (match = string.match(per)) {
|
|
1435
1430
|
for (i = 0; i < 3; i++) {
|
|
@@ -1437,22 +1432,19 @@ cs.get.rgb = function (string) {
|
|
|
1437
1432
|
}
|
|
1438
1433
|
|
|
1439
1434
|
if (match[4]) {
|
|
1440
|
-
|
|
1441
|
-
rgb[3] = parseFloat(match[4]) * 0.01;
|
|
1442
|
-
} else {
|
|
1443
|
-
rgb[3] = parseFloat(match[4]);
|
|
1444
|
-
}
|
|
1435
|
+
rgb[3] = parseFloat(match[4]);
|
|
1445
1436
|
}
|
|
1446
1437
|
} else if (match = string.match(keyword)) {
|
|
1447
1438
|
if (match[1] === 'transparent') {
|
|
1448
1439
|
return [0, 0, 0, 0];
|
|
1449
1440
|
}
|
|
1450
1441
|
|
|
1451
|
-
|
|
1442
|
+
rgb = colorNames[match[1]];
|
|
1443
|
+
|
|
1444
|
+
if (!rgb) {
|
|
1452
1445
|
return null;
|
|
1453
1446
|
}
|
|
1454
1447
|
|
|
1455
|
-
rgb = colorNames[match[1]];
|
|
1456
1448
|
rgb[3] = 1;
|
|
1457
1449
|
|
|
1458
1450
|
return rgb;
|
|
@@ -1473,12 +1465,12 @@ cs.get.hsl = function (string) {
|
|
|
1473
1465
|
return null;
|
|
1474
1466
|
}
|
|
1475
1467
|
|
|
1476
|
-
var hsl = /^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s
|
|
1468
|
+
var hsl = /^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/;
|
|
1477
1469
|
var match = string.match(hsl);
|
|
1478
1470
|
|
|
1479
1471
|
if (match) {
|
|
1480
1472
|
var alpha = parseFloat(match[4]);
|
|
1481
|
-
var h = (
|
|
1473
|
+
var h = (parseFloat(match[1]) + 360) % 360;
|
|
1482
1474
|
var s = clamp(parseFloat(match[2]), 0, 100);
|
|
1483
1475
|
var l = clamp(parseFloat(match[3]), 0, 100);
|
|
1484
1476
|
var a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);
|
|
@@ -1494,7 +1486,7 @@ cs.get.hwb = function (string) {
|
|
|
1494
1486
|
return null;
|
|
1495
1487
|
}
|
|
1496
1488
|
|
|
1497
|
-
var hwb = /^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?
|
|
1489
|
+
var hwb = /^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*,\s*([+-]?[\d\.]+)%\s*,\s*([+-]?[\d\.]+)%\s*(?:,\s*([+-]?[\d\.]+)\s*)?\)$/;
|
|
1498
1490
|
var match = string.match(hwb);
|
|
1499
1491
|
|
|
1500
1492
|
if (match) {
|
|
@@ -1573,7 +1565,7 @@ function clamp(num, min, max) {
|
|
|
1573
1565
|
}
|
|
1574
1566
|
|
|
1575
1567
|
function hexDouble(num) {
|
|
1576
|
-
var str =
|
|
1568
|
+
var str = num.toString(16).toUpperCase();
|
|
1577
1569
|
return (str.length < 2) ? '0' + str : str;
|
|
1578
1570
|
}
|
|
1579
1571
|
|
|
@@ -2815,9 +2807,14 @@ function getElementBasedFormatState(editor, event) {
|
|
|
2815
2807
|
if (range && !range.collapsed) {
|
|
2816
2808
|
var startingBlock = editor.getBlockElementAtNode(range.startContainer);
|
|
2817
2809
|
var endingBlock = editor.getBlockElementAtNode(range.endContainer);
|
|
2818
|
-
multiline = endingBlock ? !endingBlock.equals(startingBlock) : false;
|
|
2810
|
+
multiline = endingBlock && startingBlock ? !endingBlock.equals(startingBlock) : false;
|
|
2819
2811
|
}
|
|
2820
2812
|
var headerTag = (0, roosterjs_editor_dom_1.getTagOfNode)(editor.getElementAtCursor('H1,H2,H3,H4,H5,H6', null /*startFrom*/, event));
|
|
2813
|
+
var table = editor.queryElements('table', 1 /* OnSelection */)[0];
|
|
2814
|
+
var tableFormat = table ? (0, roosterjs_editor_dom_1.getTableFormatInfo)(table) : undefined;
|
|
2815
|
+
var hasHeader = (table === null || table === void 0 ? void 0 : table.rows[0])
|
|
2816
|
+
? (0, roosterjs_editor_dom_1.toArray)(table.rows[0].cells).every(function (cell) { return (0, roosterjs_editor_dom_1.getTagOfNode)(cell) == 'TH'; })
|
|
2817
|
+
: undefined;
|
|
2821
2818
|
return {
|
|
2822
2819
|
isBullet: listTag == 'UL',
|
|
2823
2820
|
isNumbering: listTag == 'OL',
|
|
@@ -2826,7 +2823,9 @@ function getElementBasedFormatState(editor, event) {
|
|
|
2826
2823
|
canUnlink: !!editor.queryElements('a[href]', 1 /* OnSelection */)[0],
|
|
2827
2824
|
canAddImageAltText: !!editor.queryElements('img', 1 /* OnSelection */)[0],
|
|
2828
2825
|
isBlockQuote: !!editor.queryElements('blockquote', 1 /* OnSelection */)[0],
|
|
2829
|
-
isInTable: !!
|
|
2826
|
+
isInTable: !!table,
|
|
2827
|
+
tableFormat: tableFormat,
|
|
2828
|
+
tableHasHeader: hasHeader,
|
|
2830
2829
|
};
|
|
2831
2830
|
}
|
|
2832
2831
|
exports.getElementBasedFormatState = getElementBasedFormatState;
|
|
@@ -5836,7 +5835,6 @@ function buildCss(table, coordinates, contentDivSelector) {
|
|
|
5836
5835
|
});
|
|
5837
5836
|
(_a = vTable.cells) === null || _a === void 0 ? void 0 : _a.forEach(function (row, rowIndex) {
|
|
5838
5837
|
var tdCount = 0;
|
|
5839
|
-
var thCount = 0;
|
|
5840
5838
|
firstSelected = null;
|
|
5841
5839
|
lastSelected = null;
|
|
5842
5840
|
//Get current TBODY/THEAD/TFOOT
|
|
@@ -5849,12 +5847,7 @@ function buildCss(table, coordinates, contentDivSelector) {
|
|
|
5849
5847
|
var cell = row[cellIndex].td;
|
|
5850
5848
|
if (cell) {
|
|
5851
5849
|
var tag = (0, roosterjs_editor_dom_1.getTagOfNode)(cell);
|
|
5852
|
-
|
|
5853
|
-
tdCount++;
|
|
5854
|
-
}
|
|
5855
|
-
if (tag == 'TH') {
|
|
5856
|
-
thCount++;
|
|
5857
|
-
}
|
|
5850
|
+
tdCount++;
|
|
5858
5851
|
if (rowIndex >= tr1 && rowIndex <= tr2 && cellIndex >= td1 && cellIndex <= td2) {
|
|
5859
5852
|
if (isFirst) {
|
|
5860
5853
|
isFirst = false;
|
|
@@ -5863,7 +5856,7 @@ function buildCss(table, coordinates, contentDivSelector) {
|
|
|
5863
5856
|
css += ',';
|
|
5864
5857
|
}
|
|
5865
5858
|
removeImportant(cell);
|
|
5866
|
-
var selector = generateCssFromCell(contentDivSelector, table.id, middleElSelector, currentRow, tag,
|
|
5859
|
+
var selector = generateCssFromCell(contentDivSelector, table.id, middleElSelector, currentRow, tag, tdCount);
|
|
5867
5860
|
css += selector;
|
|
5868
5861
|
firstSelected = firstSelected || table.querySelector(selector);
|
|
5869
5862
|
lastSelected = table.querySelector(selector);
|
|
@@ -6328,10 +6321,9 @@ var CopyPastePlugin = /** @class */ (function () {
|
|
|
6328
6321
|
function CopyPastePlugin(options) {
|
|
6329
6322
|
var _this = this;
|
|
6330
6323
|
this.onPaste = function (event) {
|
|
6331
|
-
var _a
|
|
6324
|
+
var _a;
|
|
6332
6325
|
var range;
|
|
6333
6326
|
(0, roosterjs_editor_dom_1.extractClipboardEvent)(event, function (clipboardData) { var _a; return (_a = _this.editor) === null || _a === void 0 ? void 0 : _a.paste(clipboardData); }, {
|
|
6334
|
-
allowLinkPreview: (_a = _this.editor) === null || _a === void 0 ? void 0 : _a.isFeatureEnabled("PasteWithLinkPreview" /* PasteWithLinkPreview */),
|
|
6335
6327
|
allowedCustomPasteType: _this.state.allowedCustomPasteType,
|
|
6336
6328
|
getTempDiv: function () {
|
|
6337
6329
|
var _a;
|
|
@@ -6341,7 +6333,7 @@ var CopyPastePlugin = /** @class */ (function () {
|
|
|
6341
6333
|
removeTempDiv: function (div) {
|
|
6342
6334
|
_this.cleanUpAndRestoreSelection(div, range, false /* isCopy */);
|
|
6343
6335
|
},
|
|
6344
|
-
}, (
|
|
6336
|
+
}, (_a = _this.editor) === null || _a === void 0 ? void 0 : _a.getSelectionRange());
|
|
6345
6337
|
};
|
|
6346
6338
|
this.state = {
|
|
6347
6339
|
allowedCustomPasteType: options.allowedCustomPasteType || [],
|
|
@@ -6386,16 +6378,19 @@ var CopyPastePlugin = /** @class */ (function () {
|
|
|
6386
6378
|
if (selection && !selection.areAllCollapsed) {
|
|
6387
6379
|
var html = this.editor.getContent(2 /* RawHTMLWithSelection */);
|
|
6388
6380
|
var tempDiv_1 = this.getTempDiv(true /*forceInLightMode*/);
|
|
6389
|
-
var
|
|
6390
|
-
|
|
6391
|
-
(0, roosterjs_editor_dom_1.
|
|
6392
|
-
|
|
6381
|
+
var metadata = (0, roosterjs_editor_dom_1.setHtmlWithMetadata)(tempDiv_1, html, this.editor.getTrustedHTMLHandler());
|
|
6382
|
+
var newRange = (metadata === null || metadata === void 0 ? void 0 : metadata.type) === 0 /* Normal */
|
|
6383
|
+
? (0, roosterjs_editor_dom_1.createRange)(tempDiv_1, metadata.start, metadata.end)
|
|
6384
|
+
: null;
|
|
6393
6385
|
this.editor.triggerPluginEvent(9 /* BeforeCutCopy */, {
|
|
6394
6386
|
clonedRoot: tempDiv_1,
|
|
6395
6387
|
range: newRange,
|
|
6396
6388
|
rawEvent: event,
|
|
6397
6389
|
isCut: isCut,
|
|
6398
6390
|
});
|
|
6391
|
+
if (newRange) {
|
|
6392
|
+
(0, roosterjs_editor_dom_1.addRangeToSelection)(newRange);
|
|
6393
|
+
}
|
|
6399
6394
|
this.editor.runAsync(function (editor) {
|
|
6400
6395
|
_this.cleanUpAndRestoreSelection(tempDiv_1, selection, !isCut /* isCopy */);
|
|
6401
6396
|
if (isCut) {
|
|
@@ -7414,6 +7409,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
7414
7409
|
var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./packages/roosterjs-editor-dom/lib/index.ts");
|
|
7415
7410
|
/**
|
|
7416
7411
|
* @internal
|
|
7412
|
+
* TODO: Rename this plugin since it is not only for table now
|
|
7413
|
+
*
|
|
7417
7414
|
* NormalizeTable plugin makes sure each table in editor has TBODY/THEAD/TFOOT tag around TR tags
|
|
7418
7415
|
*
|
|
7419
7416
|
* When we retrieve HTML content using innerHTML, browser will always add TBODY around TR nodes if there is not.
|
|
@@ -7470,6 +7467,11 @@ var NormalizeTablePlugin = /** @class */ (function () {
|
|
|
7470
7467
|
this.normalizeTableFromEvent(event.rawEvent);
|
|
7471
7468
|
}
|
|
7472
7469
|
break;
|
|
7470
|
+
case 8 /* ExtractContentWithDom */:
|
|
7471
|
+
if (this.editor.isFeatureEnabled("NormalizeList" /* NormalizeList */)) {
|
|
7472
|
+
normalizeListsForExport(event.clonedRoot);
|
|
7473
|
+
}
|
|
7474
|
+
break;
|
|
7473
7475
|
}
|
|
7474
7476
|
};
|
|
7475
7477
|
NormalizeTablePlugin.prototype.normalizeTableFromEvent = function (event) {
|
|
@@ -7541,6 +7543,15 @@ function normalizeTables(tables) {
|
|
|
7541
7543
|
});
|
|
7542
7544
|
return isDOMChanged;
|
|
7543
7545
|
}
|
|
7546
|
+
function normalizeListsForExport(root) {
|
|
7547
|
+
(0, roosterjs_editor_dom_1.toArray)(root.querySelectorAll('li')).forEach(function (li) {
|
|
7548
|
+
var prevElement = li.previousSibling;
|
|
7549
|
+
if (li.style.display == 'block' && (0, roosterjs_editor_dom_1.safeInstanceOf)(prevElement, 'HTMLLIElement')) {
|
|
7550
|
+
delete li.style.display;
|
|
7551
|
+
prevElement.appendChild((0, roosterjs_editor_dom_1.changeElementTag)(li, 'div'));
|
|
7552
|
+
}
|
|
7553
|
+
});
|
|
7554
|
+
}
|
|
7544
7555
|
|
|
7545
7556
|
|
|
7546
7557
|
/***/ }),
|
|
@@ -9209,17 +9220,6 @@ function removeContents(range) {
|
|
|
9209
9220
|
|
|
9210
9221
|
"use strict";
|
|
9211
9222
|
|
|
9212
|
-
var __assign = (this && this.__assign) || function () {
|
|
9213
|
-
__assign = Object.assign || function(t) {
|
|
9214
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
9215
|
-
s = arguments[i];
|
|
9216
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
9217
|
-
t[p] = s[p];
|
|
9218
|
-
}
|
|
9219
|
-
return t;
|
|
9220
|
-
};
|
|
9221
|
-
return __assign.apply(this, arguments);
|
|
9222
|
-
};
|
|
9223
9223
|
var _a;
|
|
9224
9224
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9225
9225
|
var readFile_1 = __webpack_require__(/*! ../utils/readFile */ "./packages/roosterjs-editor-dom/lib/utils/readFile.ts");
|
|
@@ -9242,6 +9242,7 @@ var ContentHandlers = (_a = {},
|
|
|
9242
9242
|
},
|
|
9243
9243
|
_a["text/plain" /* PlainText */] = function (data, value) { return (data.text = value); },
|
|
9244
9244
|
_a[OTHER_TEXT_TYPE] = function (data, value, type) { return !!type && (data.customValues[type] = value); },
|
|
9245
|
+
_a["text/" /* Text */ + EDGE_LINK_PREVIEW] = tryParseLinkPreview,
|
|
9245
9246
|
_a);
|
|
9246
9247
|
/**
|
|
9247
9248
|
* Extract clipboard items to be a ClipboardData object for IE
|
|
@@ -9264,10 +9265,6 @@ function extractClipboardItems(items, options) {
|
|
|
9264
9265
|
rawHtml: null,
|
|
9265
9266
|
customValues: {},
|
|
9266
9267
|
};
|
|
9267
|
-
var contentHandlers = __assign({}, ContentHandlers);
|
|
9268
|
-
if (options === null || options === void 0 ? void 0 : options.allowLinkPreview) {
|
|
9269
|
-
contentHandlers["text/" /* Text */ + EDGE_LINK_PREVIEW] = tryParseLinkPreview;
|
|
9270
|
-
}
|
|
9271
9268
|
return Promise.all((items || []).map(function (item) {
|
|
9272
9269
|
var type = item.type;
|
|
9273
9270
|
if (type.indexOf("image/" /* Image */) == 0 && !data.image && item.kind == 'file') {
|
|
@@ -9297,7 +9294,7 @@ function extractClipboardItems(items, options) {
|
|
|
9297
9294
|
}
|
|
9298
9295
|
else {
|
|
9299
9296
|
var customType_1 = getAllowedCustomType(type, options === null || options === void 0 ? void 0 : options.allowedCustomPasteType);
|
|
9300
|
-
var handler_1 =
|
|
9297
|
+
var handler_1 = ContentHandlers[type] || (customType_1 ? ContentHandlers[OTHER_TEXT_TYPE] : null);
|
|
9301
9298
|
return new Promise(function (resolve) {
|
|
9302
9299
|
return handler_1
|
|
9303
9300
|
? item.getAsString(function (value) {
|
|
@@ -10325,21 +10322,23 @@ function adjustInsertPositionForTable(root, nodeToInsert, position, range) {
|
|
|
10325
10322
|
var rangeToTraverse = (0, createRange_1.default)(posBefore, position);
|
|
10326
10323
|
var contentTraverser = ContentTraverser_1.default.createSelectionTraverser(root, rangeToTraverse);
|
|
10327
10324
|
var blockElement = contentTraverser && contentTraverser.currentBlockElement;
|
|
10328
|
-
|
|
10329
|
-
|
|
10330
|
-
|
|
10331
|
-
|
|
10332
|
-
|
|
10325
|
+
if (blockElement) {
|
|
10326
|
+
var nextBlockElement = blockElement;
|
|
10327
|
+
while (!nextBlockElement) {
|
|
10328
|
+
nextBlockElement = contentTraverser.getNextBlockElement();
|
|
10329
|
+
if (nextBlockElement) {
|
|
10330
|
+
blockElement = nextBlockElement;
|
|
10331
|
+
}
|
|
10332
|
+
}
|
|
10333
|
+
var prevElement = blockElement === null || blockElement === void 0 ? void 0 : blockElement.getEndNode();
|
|
10334
|
+
if (prevElement && (0, findClosestElementAncestor_1.default)(prevElement, root, 'TABLE')) {
|
|
10335
|
+
var tempRange = (0, createRange_1.default)(position);
|
|
10336
|
+
tempRange.collapse(false /* toStart */);
|
|
10337
|
+
var br = root.ownerDocument.createElement('br');
|
|
10338
|
+
tempRange.insertNode(br);
|
|
10339
|
+
tempRange = (0, createRange_1.default)(br);
|
|
10340
|
+
position = Position_1.default.getEnd(tempRange);
|
|
10333
10341
|
}
|
|
10334
|
-
}
|
|
10335
|
-
var prevElement = blockElement === null || blockElement === void 0 ? void 0 : blockElement.getEndNode();
|
|
10336
|
-
if (prevElement && (0, findClosestElementAncestor_1.default)(prevElement, root, 'TABLE')) {
|
|
10337
|
-
var tempRange = (0, createRange_1.default)(position);
|
|
10338
|
-
tempRange.collapse(false /* toStart */);
|
|
10339
|
-
var br = root.ownerDocument.createElement('br');
|
|
10340
|
-
tempRange.insertNode(br);
|
|
10341
|
-
tempRange = (0, createRange_1.default)(br);
|
|
10342
|
-
position = Position_1.default.getEnd(tempRange);
|
|
10343
10342
|
}
|
|
10344
10343
|
}
|
|
10345
10344
|
return position;
|
|
@@ -11549,8 +11548,8 @@ exports.default = getPredefinedCssForElement;
|
|
|
11549
11548
|
|
|
11550
11549
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11551
11550
|
exports.VTable = exports.moveChildNodes = exports.KnownCreateElementData = exports.createElement = exports.matchesSelector = exports.setColor = exports.getInnerHTML = exports.readFile = exports.safeInstanceOf = exports.normalizeRect = exports.splitTextNode = exports.getLastLeafNode = exports.getFirstLeafNode = exports.getPreviousLeafSibling = exports.getNextLeafSibling = exports.wrap = exports.unwrap = exports.splitBalancedNodeRange = exports.splitParentNode = exports.queryElements = exports.matchLink = exports.isVoidHtmlElement = exports.isNodeEmpty = exports.isBlockElement = exports.getTagOfNode = exports.PendableFormatCommandMap = exports.getPendableFormatState = exports.getComputedStyle = exports.getComputedStyles = exports.fromHtml = exports.findClosestElementAncestor = exports.contains = exports.collapseNodes = exports.changeElementTag = exports.applyFormat = exports.getBrowserInfo = exports.Browser = exports.extractClipboardItemsForIE = exports.extractClipboardItems = exports.extractClipboardEvent = exports.applyTextStyle = exports.PartialInlineElement = exports.NodeInlineElement = exports.LinkInlineElement = exports.ImageInlineElement = exports.getInlineElementAtNode = exports.PositionContentSearcher = exports.ContentTraverser = exports.getFirstLastBlockElement = exports.getBlockElementAtNode = void 0;
|
|
11552
|
-
exports.
|
|
11553
|
-
exports.toArray = exports.getObjectKeys = exports.arrayPush = exports.removeMetadata = exports.setMetadata = exports.getMetadata = exports.createObjectDefinition = exports.createArrayDefinition = exports.createStringDefinition = void 0;
|
|
11551
|
+
exports.createNumberDefinition = exports.validate = exports.getTextContent = exports.deleteSelectedContent = exports.adjustInsertPosition = exports.setStyles = exports.getStyles = exports.isCtrlOrMetaPressed = exports.isCharacterValue = exports.isModifierKey = exports.clearEventDataCache = exports.cacheGetEventData = exports.getEntitySelector = exports.getEntityFromElement = exports.commitEntity = exports.chainSanitizerCallback = exports.createDefaultHtmlSanitizerOptions = exports.getInheritableStyles = exports.HtmlSanitizer = exports.canUndoAutoComplete = exports.createSnapshots = exports.moveCurrentSnapsnot = exports.moveCurrentSnapshot = exports.clearProceedingSnapshotsV2 = exports.clearProceedingSnapshots = exports.canMoveCurrentSnapshot = exports.addSnapshotV2 = exports.addSnapshot = exports.addRangeToSelection = exports.setHtmlWithMetadata = exports.setHtmlWithSelectionPath = exports.getHtmlWithSelectionPath = exports.getSelectionPath = exports.isPositionAtBeginningOf = exports.getPositionRect = exports.createRange = exports.Position = exports.mergeBlocksInRegion = exports.getSelectionRangeInRegion = exports.isNodeInRegion = exports.collapseNodesInRegion = exports.getSelectedBlockElementsInRegion = exports.getRegionsFromRange = exports.getTableFormatInfo = exports.setListItemStyle = exports.VListChain = exports.createVListFromRegion = exports.VListItem = exports.VList = exports.isWholeTableSelected = void 0;
|
|
11552
|
+
exports.toArray = exports.getObjectKeys = exports.arrayPush = exports.removeMetadata = exports.setMetadata = exports.getMetadata = exports.createObjectDefinition = exports.createArrayDefinition = exports.createStringDefinition = exports.createBooleanDefinition = void 0;
|
|
11554
11553
|
var getBlockElementAtNode_1 = __webpack_require__(/*! ./blockElements/getBlockElementAtNode */ "./packages/roosterjs-editor-dom/lib/blockElements/getBlockElementAtNode.ts");
|
|
11555
11554
|
Object.defineProperty(exports, "getBlockElementAtNode", { enumerable: true, get: function () { return getBlockElementAtNode_1.default; } });
|
|
11556
11555
|
var getFirstLastBlockElement_1 = __webpack_require__(/*! ./blockElements/getFirstLastBlockElement */ "./packages/roosterjs-editor-dom/lib/blockElements/getFirstLastBlockElement.ts");
|
|
@@ -11656,6 +11655,8 @@ var VListChain_1 = __webpack_require__(/*! ./list/VListChain */ "./packages/roos
|
|
|
11656
11655
|
Object.defineProperty(exports, "VListChain", { enumerable: true, get: function () { return VListChain_1.default; } });
|
|
11657
11656
|
var setListItemStyle_1 = __webpack_require__(/*! ./list/setListItemStyle */ "./packages/roosterjs-editor-dom/lib/list/setListItemStyle.ts");
|
|
11658
11657
|
Object.defineProperty(exports, "setListItemStyle", { enumerable: true, get: function () { return setListItemStyle_1.default; } });
|
|
11658
|
+
var tableFormatInfo_1 = __webpack_require__(/*! ./table/tableFormatInfo */ "./packages/roosterjs-editor-dom/lib/table/tableFormatInfo.ts");
|
|
11659
|
+
Object.defineProperty(exports, "getTableFormatInfo", { enumerable: true, get: function () { return tableFormatInfo_1.getTableFormatInfo; } });
|
|
11659
11660
|
var getRegionsFromRange_1 = __webpack_require__(/*! ./region/getRegionsFromRange */ "./packages/roosterjs-editor-dom/lib/region/getRegionsFromRange.ts");
|
|
11660
11661
|
Object.defineProperty(exports, "getRegionsFromRange", { enumerable: true, get: function () { return getRegionsFromRange_1.default; } });
|
|
11661
11662
|
var getSelectedBlockElementsInRegion_1 = __webpack_require__(/*! ./region/getSelectedBlockElementsInRegion */ "./packages/roosterjs-editor-dom/lib/region/getSelectedBlockElementsInRegion.ts");
|
|
@@ -16594,7 +16595,6 @@ var TableFormatMetadata = (0, definitionCreators_1.createObjectDefinition)({
|
|
|
16594
16595
|
keepCellShade: BooleanDefinition,
|
|
16595
16596
|
}, false /* isOptional */, true /** allowNull */);
|
|
16596
16597
|
/**
|
|
16597
|
-
* @internal
|
|
16598
16598
|
* Get the format info of a table
|
|
16599
16599
|
* If the table does not have a info saved, it will be retrieved from the css styles
|
|
16600
16600
|
* @param table The table that has the info
|
|
@@ -18678,23 +18678,21 @@ var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./
|
|
|
18678
18678
|
/**
|
|
18679
18679
|
* Generate event names and getXY function based on different platforms to be compatible with desktop and mobile browsers
|
|
18680
18680
|
*/
|
|
18681
|
-
var
|
|
18682
|
-
|
|
18683
|
-
|
|
18684
|
-
|
|
18685
|
-
|
|
18686
|
-
|
|
18687
|
-
|
|
18688
|
-
|
|
18689
|
-
|
|
18690
|
-
|
|
18691
|
-
|
|
18692
|
-
|
|
18693
|
-
|
|
18694
|
-
|
|
18695
|
-
|
|
18696
|
-
};
|
|
18697
|
-
}
|
|
18681
|
+
var MOUSE_EVENT_INFO_DESKTOP = (function () {
|
|
18682
|
+
return {
|
|
18683
|
+
MOUSEDOWN: 'mousedown',
|
|
18684
|
+
MOUSEMOVE: 'mousemove',
|
|
18685
|
+
MOUSEUP: 'mouseup',
|
|
18686
|
+
getPageXY: getMouseEventPageXY,
|
|
18687
|
+
};
|
|
18688
|
+
})();
|
|
18689
|
+
var MOUSE_EVENT_INFO_MOBILE = (function () {
|
|
18690
|
+
return {
|
|
18691
|
+
MOUSEDOWN: 'touchstart',
|
|
18692
|
+
MOUSEMOVE: 'touchmove',
|
|
18693
|
+
MOUSEUP: 'touchend',
|
|
18694
|
+
getPageXY: getTouchEventPageXY,
|
|
18695
|
+
};
|
|
18698
18696
|
})();
|
|
18699
18697
|
function getMouseEventPageXY(e) {
|
|
18700
18698
|
return [e.pageX, e.pageY];
|
|
@@ -18722,8 +18720,10 @@ var DragAndDropHelper = /** @class */ (function () {
|
|
|
18722
18720
|
* so that the handler object knows which element it is triggered from.
|
|
18723
18721
|
* @param onSubmit A callback that will be invoked when event handler in handler object returns true
|
|
18724
18722
|
* @param handler The event handler object, see DragAndDropHandler interface for more information
|
|
18723
|
+
* @param zoomScale The zoom scale of the editor
|
|
18724
|
+
* @param forceMobile A boolean to force the use of touch controls for the helper
|
|
18725
18725
|
*/
|
|
18726
|
-
function DragAndDropHelper(trigger, context, onSubmit, handler, zoomScale) {
|
|
18726
|
+
function DragAndDropHelper(trigger, context, onSubmit, handler, zoomScale, forceMobile) {
|
|
18727
18727
|
var _this = this;
|
|
18728
18728
|
this.trigger = trigger;
|
|
18729
18729
|
this.context = context;
|
|
@@ -18736,13 +18736,13 @@ var DragAndDropHelper = /** @class */ (function () {
|
|
|
18736
18736
|
e.preventDefault();
|
|
18737
18737
|
e.stopPropagation();
|
|
18738
18738
|
_this.addDocumentEvents();
|
|
18739
|
-
_a =
|
|
18739
|
+
_a = _this.dndMouse.getPageXY(e), _this.initX = _a[0], _this.initY = _a[1];
|
|
18740
18740
|
_this.initValue = (_c = (_b = _this.handler).onDragStart) === null || _c === void 0 ? void 0 : _c.call(_b, _this.context, e);
|
|
18741
18741
|
};
|
|
18742
18742
|
this.onMouseMove = function (e) {
|
|
18743
18743
|
var _a, _b, _c;
|
|
18744
18744
|
e.preventDefault();
|
|
18745
|
-
var _d =
|
|
18745
|
+
var _d = _this.dndMouse.getPageXY(e), pageX = _d[0], pageY = _d[1];
|
|
18746
18746
|
var deltaX = (pageX - _this.initX) / _this.zoomScale;
|
|
18747
18747
|
var deltaY = (pageY - _this.initY) / _this.zoomScale;
|
|
18748
18748
|
if ((_b = (_a = _this.handler).onDragging) === null || _b === void 0 ? void 0 : _b.call(_a, _this.context, e, _this.initValue, deltaX, deltaY)) {
|
|
@@ -18757,24 +18757,28 @@ var DragAndDropHelper = /** @class */ (function () {
|
|
|
18757
18757
|
(_c = _this.onSubmit) === null || _c === void 0 ? void 0 : _c.call(_this, _this.context, _this.trigger);
|
|
18758
18758
|
}
|
|
18759
18759
|
};
|
|
18760
|
-
|
|
18760
|
+
this.dndMouse =
|
|
18761
|
+
forceMobile || roosterjs_editor_dom_1.Browser.isMobileOrTablet
|
|
18762
|
+
? MOUSE_EVENT_INFO_MOBILE
|
|
18763
|
+
: MOUSE_EVENT_INFO_DESKTOP;
|
|
18764
|
+
trigger.addEventListener(this.dndMouse.MOUSEDOWN, this.onMouseDown);
|
|
18761
18765
|
}
|
|
18762
18766
|
/**
|
|
18763
18767
|
* Dispose this object, remove all event listeners that has been attached
|
|
18764
18768
|
*/
|
|
18765
18769
|
DragAndDropHelper.prototype.dispose = function () {
|
|
18766
|
-
this.trigger.removeEventListener(
|
|
18770
|
+
this.trigger.removeEventListener(this.dndMouse.MOUSEDOWN, this.onMouseDown);
|
|
18767
18771
|
this.removeDocumentEvents();
|
|
18768
18772
|
};
|
|
18769
18773
|
DragAndDropHelper.prototype.addDocumentEvents = function () {
|
|
18770
18774
|
var doc = this.trigger.ownerDocument;
|
|
18771
|
-
doc.addEventListener(
|
|
18772
|
-
doc.addEventListener(
|
|
18775
|
+
doc.addEventListener(this.dndMouse.MOUSEMOVE, this.onMouseMove, true /*useCapture*/);
|
|
18776
|
+
doc.addEventListener(this.dndMouse.MOUSEUP, this.onMouseUp, true /*useCapture*/);
|
|
18773
18777
|
};
|
|
18774
18778
|
DragAndDropHelper.prototype.removeDocumentEvents = function () {
|
|
18775
18779
|
var doc = this.trigger.ownerDocument;
|
|
18776
|
-
doc.removeEventListener(
|
|
18777
|
-
doc.removeEventListener(
|
|
18780
|
+
doc.removeEventListener(this.dndMouse.MOUSEMOVE, this.onMouseMove, true /*useCapture*/);
|
|
18781
|
+
doc.removeEventListener(this.dndMouse.MOUSEUP, this.onMouseUp, true /*useCapture*/);
|
|
18778
18782
|
};
|
|
18779
18783
|
return DragAndDropHelper;
|
|
18780
18784
|
}());
|
|
@@ -21144,7 +21148,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
|
21144
21148
|
}
|
|
21145
21149
|
return to.concat(ar || Array.prototype.slice.call(from));
|
|
21146
21150
|
};
|
|
21147
|
-
var _a
|
|
21151
|
+
var _a;
|
|
21148
21152
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21149
21153
|
var applyChange_1 = __webpack_require__(/*! ./editInfoUtils/applyChange */ "./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/applyChange.ts");
|
|
21150
21154
|
var canRegenerateImage_1 = __webpack_require__(/*! ./api/canRegenerateImage */ "./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/api/canRegenerateImage.ts");
|
|
@@ -21162,14 +21166,6 @@ var ALT_KEYCODE = 18;
|
|
|
21162
21166
|
var DIRECTIONS = 8;
|
|
21163
21167
|
var DirectionRad = (Math.PI * 2) / DIRECTIONS;
|
|
21164
21168
|
var DirectionOrder = ['nw', 'n', 'ne', 'e', 'se', 's', 'sw', 'w'];
|
|
21165
|
-
/**
|
|
21166
|
-
* Map the experimental features to image edit operations to help determine which operation is allowed
|
|
21167
|
-
*/
|
|
21168
|
-
var FeatureToOperationMap = (_a = {},
|
|
21169
|
-
_a["SingleDirectionResize" /* SingleDirectionResize */] = 2 /* SideResize */,
|
|
21170
|
-
_a["ImageRotate" /* ImageRotate */] = 4 /* Rotate */,
|
|
21171
|
-
_a["ImageCrop" /* ImageCrop */] = 8 /* Crop */,
|
|
21172
|
-
_a);
|
|
21173
21169
|
/**
|
|
21174
21170
|
* Default image edit options
|
|
21175
21171
|
*/
|
|
@@ -21181,17 +21177,20 @@ var DefaultOptions = {
|
|
|
21181
21177
|
minRotateDeg: 5,
|
|
21182
21178
|
imageSelector: 'img',
|
|
21183
21179
|
rotateIconHTML: null,
|
|
21180
|
+
disableCrop: false,
|
|
21181
|
+
disableRotate: false,
|
|
21182
|
+
disableSideResize: false,
|
|
21184
21183
|
};
|
|
21185
21184
|
/**
|
|
21186
21185
|
* Map the image edit operation to a function that returns editing elements HTML to help
|
|
21187
21186
|
* build image editing UI
|
|
21188
21187
|
*/
|
|
21189
|
-
var ImageEditHTMLMap = (
|
|
21190
|
-
|
|
21191
|
-
|
|
21192
|
-
|
|
21193
|
-
|
|
21194
|
-
|
|
21188
|
+
var ImageEditHTMLMap = (_a = {},
|
|
21189
|
+
_a[1 /* CornerResize */] = Resizer_1.getCornerResizeHTML,
|
|
21190
|
+
_a[2 /* SideResize */] = Resizer_1.getSideResizeHTML,
|
|
21191
|
+
_a[4 /* Rotate */] = Rotator_1.getRotateHTML,
|
|
21192
|
+
_a[8 /* Crop */] = Cropper_1.getCropHTML,
|
|
21193
|
+
_a);
|
|
21195
21194
|
/**
|
|
21196
21195
|
* Image edit entity name
|
|
21197
21196
|
*/
|
|
@@ -21219,8 +21218,6 @@ var ImageEdit = /** @class */ (function () {
|
|
|
21219
21218
|
function ImageEdit(options, onShowResizeHandle) {
|
|
21220
21219
|
var _this = this;
|
|
21221
21220
|
this.onShowResizeHandle = onShowResizeHandle;
|
|
21222
|
-
// Allowed editing operations
|
|
21223
|
-
this.allowedOperations = 1 /* CornerResize */;
|
|
21224
21221
|
/**
|
|
21225
21222
|
* quit editing mode when editor lose focus
|
|
21226
21223
|
*/
|
|
@@ -21304,6 +21301,11 @@ var ImageEdit = /** @class */ (function () {
|
|
|
21304
21301
|
}
|
|
21305
21302
|
};
|
|
21306
21303
|
this.options = __assign(__assign({}, DefaultOptions), (options || {}));
|
|
21304
|
+
this.allowedOperations =
|
|
21305
|
+
1 /* CornerResize */ |
|
|
21306
|
+
(this.options.disableCrop ? 0 : 8 /* Crop */) |
|
|
21307
|
+
(this.options.disableRotate ? 0 : 4 /* Rotate */) |
|
|
21308
|
+
(this.options.disableSideResize ? 0 : 2 /* SideResize */);
|
|
21307
21309
|
}
|
|
21308
21310
|
/**
|
|
21309
21311
|
* Get a friendly name of this plugin
|
|
@@ -21316,15 +21318,8 @@ var ImageEdit = /** @class */ (function () {
|
|
|
21316
21318
|
* @param editor Editor instance
|
|
21317
21319
|
*/
|
|
21318
21320
|
ImageEdit.prototype.initialize = function (editor) {
|
|
21319
|
-
var _this = this;
|
|
21320
21321
|
this.editor = editor;
|
|
21321
21322
|
this.disposer = editor.addDomEventHandler('blur', this.onBlur);
|
|
21322
|
-
// Read current enabled features from editor to determine which editing operations are allowed
|
|
21323
|
-
(0, roosterjs_editor_dom_1.getObjectKeys)(FeatureToOperationMap).forEach(function (key) {
|
|
21324
|
-
_this.allowedOperations |= _this.editor.isFeatureEnabled(key)
|
|
21325
|
-
? FeatureToOperationMap[key]
|
|
21326
|
-
: 0;
|
|
21327
|
-
});
|
|
21328
21323
|
};
|
|
21329
21324
|
/**
|
|
21330
21325
|
* Dispose this plugin
|
|
@@ -21397,6 +21392,14 @@ var ImageEdit = /** @class */ (function () {
|
|
|
21397
21392
|
break;
|
|
21398
21393
|
}
|
|
21399
21394
|
};
|
|
21395
|
+
/**
|
|
21396
|
+
* Check if the given image edit operation is allowed by this pluign
|
|
21397
|
+
* @param operation The image edit operation to check
|
|
21398
|
+
* @returns True means it is allowed, otherwise false
|
|
21399
|
+
*/
|
|
21400
|
+
ImageEdit.prototype.isOperationAllowed = function (operation) {
|
|
21401
|
+
return !!(this.allowedOperations & operation);
|
|
21402
|
+
};
|
|
21400
21403
|
ImageEdit.prototype.setEditingImage = function (image, operationOrSelect) {
|
|
21401
21404
|
var _this = this;
|
|
21402
21405
|
var operation = typeof operationOrSelect === 'number' ? operationOrSelect : 0 /* None */;
|
|
@@ -21449,7 +21452,9 @@ var ImageEdit = /** @class */ (function () {
|
|
|
21449
21452
|
wrapper.style.position = 'relative';
|
|
21450
21453
|
wrapper.style.maxWidth = '100%';
|
|
21451
21454
|
// keep the same vertical align
|
|
21452
|
-
var originalVerticalAlign = this.image.ownerDocument.defaultView
|
|
21455
|
+
var originalVerticalAlign = this.image.ownerDocument.defaultView
|
|
21456
|
+
.getComputedStyle(this.image)
|
|
21457
|
+
.getPropertyValue('vertical-align');
|
|
21453
21458
|
if (originalVerticalAlign) {
|
|
21454
21459
|
wrapper.style.verticalAlign = originalVerticalAlign;
|
|
21455
21460
|
}
|
|
@@ -23111,6 +23116,12 @@ var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./
|
|
|
23111
23116
|
var WORD_ONLINE_IDENTIFYING_SELECTOR = 'div.ListContainerWrapper>ul[class^="BulletListStyle"],div.ListContainerWrapper>ol[class^="NumberListStyle"],span.WACImageContainer > img';
|
|
23112
23117
|
var LIST_CONTAINER_ELEMENT_CLASS_NAME = 'ListContainerWrapper';
|
|
23113
23118
|
var IMAGE_CONTAINER_ELEMENT_CLASS_NAME = 'WACImageContainer';
|
|
23119
|
+
//When the list style is a symbol and the value is not in the clipboard, WordOnline
|
|
23120
|
+
var VALID_LIST_STYLE_CHAR_CODES = [
|
|
23121
|
+
'111',
|
|
23122
|
+
'9643',
|
|
23123
|
+
'9830', //'♦'
|
|
23124
|
+
];
|
|
23114
23125
|
/**
|
|
23115
23126
|
* @internal
|
|
23116
23127
|
*/
|
|
@@ -23192,7 +23203,7 @@ function convertPastedContentFromWordOnline(fragment) {
|
|
|
23192
23203
|
var listType = getContainerListType(listItemContainer); // list type that is contained by iterator.
|
|
23193
23204
|
// Initialize processed element with proper listType if this is the first element
|
|
23194
23205
|
if (!convertedListElement) {
|
|
23195
|
-
convertedListElement = doc
|
|
23206
|
+
convertedListElement = createNewList(listItemContainer, doc, listType);
|
|
23196
23207
|
}
|
|
23197
23208
|
// Get all list items(<li>) in the current iterator element.
|
|
23198
23209
|
var currentListItems = (0, roosterjs_editor_dom_1.toArray)(listItemContainer.querySelectorAll('li'));
|
|
@@ -23206,7 +23217,7 @@ function convertPastedContentFromWordOnline(fragment) {
|
|
|
23206
23217
|
// and keep the processing going.
|
|
23207
23218
|
if ((0, roosterjs_editor_dom_1.getTagOfNode)(convertedListElement) != listType && itemLevel == 1) {
|
|
23208
23219
|
insertConvertedListToDoc(convertedListElement, fragment, itemBlock);
|
|
23209
|
-
convertedListElement = doc
|
|
23220
|
+
convertedListElement = createNewList(listItemContainer, doc, listType);
|
|
23210
23221
|
}
|
|
23211
23222
|
insertListItem(convertedListElement, item, listType, doc);
|
|
23212
23223
|
});
|
|
@@ -23243,6 +23254,15 @@ function convertPastedContentFromWordOnline(fragment) {
|
|
|
23243
23254
|
});
|
|
23244
23255
|
}
|
|
23245
23256
|
exports.default = convertPastedContentFromWordOnline;
|
|
23257
|
+
function createNewList(listItemContainer, doc, tag) {
|
|
23258
|
+
var _a;
|
|
23259
|
+
var newList = doc.createElement(tag);
|
|
23260
|
+
var startAttribute = (_a = listItemContainer.firstElementChild) === null || _a === void 0 ? void 0 : _a.getAttribute('start');
|
|
23261
|
+
if (startAttribute) {
|
|
23262
|
+
newList.setAttribute('start', startAttribute);
|
|
23263
|
+
}
|
|
23264
|
+
return newList;
|
|
23265
|
+
}
|
|
23246
23266
|
/**
|
|
23247
23267
|
* The node processing is based on the premise of only ol/ul is in ListContainerWrapper class
|
|
23248
23268
|
* However the html might be malformed, this function is to split all the other elements out of ListContainerWrapper
|
|
@@ -23325,11 +23345,19 @@ function getContainerListType(listItemContainer) {
|
|
|
23325
23345
|
* @param listType Type of list(ul/ol)
|
|
23326
23346
|
*/
|
|
23327
23347
|
function insertListItem(listRootElement, itemToInsert, listType, doc) {
|
|
23348
|
+
var _a;
|
|
23328
23349
|
if (!listType) {
|
|
23329
23350
|
return;
|
|
23330
23351
|
}
|
|
23331
23352
|
// Get item level from 'data-aria-level' attribute
|
|
23332
|
-
var itemLevel = parseInt(itemToInsert.getAttribute('data-aria-level'));
|
|
23353
|
+
var itemLevel = parseInt((_a = itemToInsert.getAttribute('data-aria-level')) !== null && _a !== void 0 ? _a : '');
|
|
23354
|
+
// Try to reuse the List Marker
|
|
23355
|
+
var style = itemToInsert.getAttribute('data-leveltext');
|
|
23356
|
+
if (listType == 'UL' &&
|
|
23357
|
+
style &&
|
|
23358
|
+
VALID_LIST_STYLE_CHAR_CODES.indexOf(style.charCodeAt(0).toString()) > -1) {
|
|
23359
|
+
itemToInsert.style.listStyleType = "\"" + style + " \"";
|
|
23360
|
+
}
|
|
23333
23361
|
var curListLevel = listRootElement; // Level iterator to find the correct place for the current element.
|
|
23334
23362
|
// if the itemLevel is 1 it means the level iterator is at the correct place.
|
|
23335
23363
|
while (itemLevel > 1) {
|
|
@@ -27498,15 +27526,15 @@ var CompatibleExperimentalFeatures;
|
|
|
27498
27526
|
*/
|
|
27499
27527
|
CompatibleExperimentalFeatures["MergePastedLine"] = "MergePastedLine";
|
|
27500
27528
|
/**
|
|
27501
|
-
*
|
|
27529
|
+
* @deprecated This feature is always enabled
|
|
27502
27530
|
*/
|
|
27503
27531
|
CompatibleExperimentalFeatures["SingleDirectionResize"] = "SingleDirectionResize";
|
|
27504
27532
|
/**
|
|
27505
|
-
*
|
|
27533
|
+
* @deprecated This feature is always enabled
|
|
27506
27534
|
*/
|
|
27507
27535
|
CompatibleExperimentalFeatures["PasteWithLinkPreview"] = "PasteWithLinkPreview";
|
|
27508
27536
|
/**
|
|
27509
|
-
*
|
|
27537
|
+
* @deprecated This feature is always enabled
|
|
27510
27538
|
*/
|
|
27511
27539
|
CompatibleExperimentalFeatures["ImageRotate"] = "ImageRotate";
|
|
27512
27540
|
/**
|
|
@@ -27553,6 +27581,11 @@ var CompatibleExperimentalFeatures;
|
|
|
27553
27581
|
* when selection is collapsed. Instead, we will hold the pending format in memory and only apply it when type something
|
|
27554
27582
|
*/
|
|
27555
27583
|
CompatibleExperimentalFeatures["PendingStyleBasedFormat"] = "PendingStyleBasedFormat";
|
|
27584
|
+
/**
|
|
27585
|
+
* Normalize list to make sure it can be displayed correctly in other client
|
|
27586
|
+
* e.g. We will move list items with "display: block" into previous list item and change tag to be DIV
|
|
27587
|
+
*/
|
|
27588
|
+
CompatibleExperimentalFeatures["NormalizeList"] = "NormalizeList";
|
|
27556
27589
|
})(CompatibleExperimentalFeatures = exports.CompatibleExperimentalFeatures || (exports.CompatibleExperimentalFeatures = {}));
|
|
27557
27590
|
|
|
27558
27591
|
|