roosterjs 9.26.0 → 9.27.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 +80 -6
- package/dist/rooster-amd.js +891 -302
- 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 +55 -55
- package/dist/rooster-react-amd.js.map +1 -1
- package/dist/rooster-react.js +53 -53
- package/dist/rooster-react.js.map +1 -1
- package/dist/rooster.d.ts +80 -6
- package/dist/rooster.js +891 -302
- package/dist/rooster.js.map +1 -1
- package/package.json +7 -7
package/dist/rooster-amd.js
CHANGED
|
@@ -5614,8 +5614,9 @@ function insertLink(editor, link, anchorTitle, displayText, target) {
|
|
|
5614
5614
|
.map(function (x) { return (x.segmentType == 'Text' ? x.text : ''); })
|
|
5615
5615
|
.join('');
|
|
5616
5616
|
var text = displayText || originalText || '';
|
|
5617
|
-
if (segments.some(function (x) { return x.segmentType != 'SelectionMarker'; }) &&
|
|
5618
|
-
originalText == text)
|
|
5617
|
+
if ((segments.some(function (x) { return x.segmentType != 'SelectionMarker'; }) &&
|
|
5618
|
+
originalText == text) ||
|
|
5619
|
+
(segments.length == 1 && segments[0].segmentType == 'Image')) {
|
|
5619
5620
|
segments.forEach(function (x) {
|
|
5620
5621
|
var link = createLink(linkUrl_1, anchorTitle, target, x.segmentType == 'Text');
|
|
5621
5622
|
(0, roosterjs_content_model_dom_1.addLink)(x, link);
|
|
@@ -8019,6 +8020,64 @@ function exportContent(editor, mode, optionsOrCallbacks) {
|
|
|
8019
8020
|
exports.exportContent = exportContent;
|
|
8020
8021
|
|
|
8021
8022
|
|
|
8023
|
+
/***/ }),
|
|
8024
|
+
|
|
8025
|
+
/***/ "./packages/roosterjs-content-model-core/lib/command/paste/cleanHtmlComments.ts":
|
|
8026
|
+
/*!**************************************************************************************!*\
|
|
8027
|
+
!*** ./packages/roosterjs-content-model-core/lib/command/paste/cleanHtmlComments.ts ***!
|
|
8028
|
+
\**************************************************************************************/
|
|
8029
|
+
/***/ ((__unused_webpack_module, exports) => {
|
|
8030
|
+
|
|
8031
|
+
"use strict";
|
|
8032
|
+
|
|
8033
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
8034
|
+
exports.cleanHtmlComments = void 0;
|
|
8035
|
+
var HtmlCommentStart = '\x3C!--';
|
|
8036
|
+
var HtmlCommentStart2 = '<!--';
|
|
8037
|
+
var HtmlCommentEnd = '-->';
|
|
8038
|
+
var styleTag = '<style';
|
|
8039
|
+
var styleClosingTag = '</style>';
|
|
8040
|
+
var nonWordCharacterRegex = /\W/;
|
|
8041
|
+
/**
|
|
8042
|
+
* @internal
|
|
8043
|
+
* Exported only for unit test
|
|
8044
|
+
*/
|
|
8045
|
+
function cleanHtmlComments(html) {
|
|
8046
|
+
var _a;
|
|
8047
|
+
var _b = extractHtmlIndexes(html), styleIndex = _b.styleIndex, styleEndIndex = _b.styleEndIndex;
|
|
8048
|
+
while (styleIndex > -1) {
|
|
8049
|
+
html = removeCommentsFromHtml(html, HtmlCommentStart, styleEndIndex, styleIndex);
|
|
8050
|
+
html = removeCommentsFromHtml(html, HtmlCommentStart2, styleEndIndex, styleIndex);
|
|
8051
|
+
html = removeCommentsFromHtml(html, HtmlCommentEnd, styleEndIndex, styleIndex);
|
|
8052
|
+
(_a = extractHtmlIndexes(html, styleEndIndex + 1), styleIndex = _a.styleIndex, styleEndIndex = _a.styleEndIndex);
|
|
8053
|
+
}
|
|
8054
|
+
return html;
|
|
8055
|
+
}
|
|
8056
|
+
exports.cleanHtmlComments = cleanHtmlComments;
|
|
8057
|
+
function extractHtmlIndexes(html, startIndex) {
|
|
8058
|
+
if (startIndex === void 0) { startIndex = 0; }
|
|
8059
|
+
var htmlLowercase = html.toLowerCase();
|
|
8060
|
+
var styleIndex = htmlLowercase.indexOf(styleTag, startIndex);
|
|
8061
|
+
var currentIndex = styleIndex + styleTag.length;
|
|
8062
|
+
var nextChar = html.substring(currentIndex, currentIndex + 1);
|
|
8063
|
+
while (!nonWordCharacterRegex.test(nextChar) && styleIndex > -1) {
|
|
8064
|
+
styleIndex = htmlLowercase.indexOf(styleTag, styleIndex + 1);
|
|
8065
|
+
currentIndex = styleIndex + styleTag.length;
|
|
8066
|
+
nextChar = html.substring(currentIndex, currentIndex + 1);
|
|
8067
|
+
}
|
|
8068
|
+
var styleEndIndex = htmlLowercase.indexOf(styleClosingTag, startIndex);
|
|
8069
|
+
return { styleIndex: styleIndex, styleEndIndex: styleEndIndex };
|
|
8070
|
+
}
|
|
8071
|
+
function removeCommentsFromHtml(html, marker, endId, startId) {
|
|
8072
|
+
var id = html.indexOf(marker, startId);
|
|
8073
|
+
while (id > -1 && id < endId) {
|
|
8074
|
+
html = html.substring(0, id) + html.substring(id + marker.length);
|
|
8075
|
+
id = html.indexOf(marker, id + 1);
|
|
8076
|
+
}
|
|
8077
|
+
return html;
|
|
8078
|
+
}
|
|
8079
|
+
|
|
8080
|
+
|
|
8022
8081
|
/***/ }),
|
|
8023
8082
|
|
|
8024
8083
|
/***/ "./packages/roosterjs-content-model-core/lib/command/paste/createPasteFragment.ts":
|
|
@@ -8258,6 +8317,7 @@ function getLastSegmentFormat(pasteModel) {
|
|
|
8258
8317
|
|
|
8259
8318
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
8260
8319
|
exports.paste = void 0;
|
|
8320
|
+
var cleanHtmlComments_1 = __webpack_require__(/*! ./cleanHtmlComments */ "./packages/roosterjs-content-model-core/lib/command/paste/cleanHtmlComments.ts");
|
|
8261
8321
|
var mergePasteContent_1 = __webpack_require__(/*! ./mergePasteContent */ "./packages/roosterjs-content-model-core/lib/command/paste/mergePasteContent.ts");
|
|
8262
8322
|
var convertInlineCss_1 = __webpack_require__(/*! ../createModelFromHtml/convertInlineCss */ "./packages/roosterjs-content-model-core/lib/command/createModelFromHtml/convertInlineCss.ts");
|
|
8263
8323
|
var createPasteFragment_1 = __webpack_require__(/*! ./createPasteFragment */ "./packages/roosterjs-content-model-core/lib/command/paste/createPasteFragment.ts");
|
|
@@ -8282,7 +8342,11 @@ function paste(editor, clipboardData, pasteTypeOrGetter) {
|
|
|
8282
8342
|
});
|
|
8283
8343
|
}
|
|
8284
8344
|
// 1. Prepare variables
|
|
8285
|
-
var
|
|
8345
|
+
var domCreator = editor.getDOMCreator();
|
|
8346
|
+
if (!domCreator.isBypassed && clipboardData.rawHtml) {
|
|
8347
|
+
clipboardData.rawHtml = (0, cleanHtmlComments_1.cleanHtmlComments)(clipboardData.rawHtml);
|
|
8348
|
+
}
|
|
8349
|
+
var doc = createDOMFromHtml(clipboardData.rawHtml, domCreator);
|
|
8286
8350
|
var pasteType = typeof pasteTypeOrGetter == 'function'
|
|
8287
8351
|
? pasteTypeOrGetter(doc, clipboardData)
|
|
8288
8352
|
: pasteTypeOrGetter;
|
|
@@ -8291,7 +8355,7 @@ function paste(editor, clipboardData, pasteTypeOrGetter) {
|
|
|
8291
8355
|
// 3. Create target fragment
|
|
8292
8356
|
var sourceFragment = (0, createPasteFragment_1.createPasteFragment)(editor.getDocument(), clipboardData, pasteType, (_a = (clipboardData.rawHtml == clipboardData.html
|
|
8293
8357
|
? doc
|
|
8294
|
-
: createDOMFromHtml(clipboardData.html,
|
|
8358
|
+
: createDOMFromHtml(clipboardData.html, domCreator))) === null || _a === void 0 ? void 0 : _a.body);
|
|
8295
8359
|
// 4. Trigger BeforePaste event to allow plugins modify the fragment
|
|
8296
8360
|
var eventResult = (0, generatePasteOptionFromPlugins_1.generatePasteOptionFromPlugins)(editor, clipboardData, sourceFragment, htmlFromClipboard, pasteType);
|
|
8297
8361
|
// 5. Convert global CSS to inline CSS
|
|
@@ -10742,11 +10806,14 @@ var DomIndexerImpl = /** @class */ (function () {
|
|
|
10742
10806
|
DomIndexerImpl.prototype.reconcileSelection = function (model, newSelection, oldSelection) {
|
|
10743
10807
|
var _a, _b;
|
|
10744
10808
|
if (oldSelection) {
|
|
10809
|
+
var startNode = void 0;
|
|
10745
10810
|
if (oldSelection.type == 'range' &&
|
|
10746
10811
|
this.isCollapsed(oldSelection) &&
|
|
10747
|
-
(
|
|
10748
|
-
|
|
10749
|
-
|
|
10812
|
+
(startNode = oldSelection.start.node) &&
|
|
10813
|
+
(0, roosterjs_content_model_dom_1.isNodeOfType)(startNode, 'TEXT_NODE') &&
|
|
10814
|
+
isIndexedSegment(startNode) &&
|
|
10815
|
+
startNode.__roosterjsContentModel.segments.length > 0) {
|
|
10816
|
+
this.reconcileTextSelection(startNode);
|
|
10750
10817
|
}
|
|
10751
10818
|
else {
|
|
10752
10819
|
(0, roosterjs_content_model_dom_1.setSelection)(model);
|
|
@@ -11408,6 +11475,7 @@ var adjustImageSelectionOnSafari_1 = __webpack_require__(/*! ./utils/adjustImage
|
|
|
11408
11475
|
var deleteEmptyList_1 = __webpack_require__(/*! ./utils/deleteEmptyList */ "./packages/roosterjs-content-model-core/lib/corePlugin/copyPaste/utils/deleteEmptyList.ts");
|
|
11409
11476
|
var pasteCopyBlockEntityParser_1 = __webpack_require__(/*! ../../override/pasteCopyBlockEntityParser */ "./packages/roosterjs-content-model-core/lib/override/pasteCopyBlockEntityParser.ts");
|
|
11410
11477
|
var paste_1 = __webpack_require__(/*! ../../command/paste/paste */ "./packages/roosterjs-content-model-core/lib/command/paste/paste.ts");
|
|
11478
|
+
var pruneUnselectedModel_1 = __webpack_require__(/*! ./utils/pruneUnselectedModel */ "./packages/roosterjs-content-model-core/lib/corePlugin/copyPaste/utils/pruneUnselectedModel.ts");
|
|
11411
11479
|
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
11412
11480
|
var TEMP_DIV_ID = 'roosterJS_copyCutTempDiv';
|
|
11413
11481
|
/**
|
|
@@ -11422,6 +11490,7 @@ var CopyPastePlugin = /** @class */ (function () {
|
|
|
11422
11490
|
var _this = this;
|
|
11423
11491
|
this.editor = null;
|
|
11424
11492
|
this.disposer = null;
|
|
11493
|
+
this.customCopyCutEnabled = false;
|
|
11425
11494
|
this.onPaste = function (event) {
|
|
11426
11495
|
if (_this.editor && isClipboardEvent(event)) {
|
|
11427
11496
|
var editor_1 = _this.editor;
|
|
@@ -11466,6 +11535,7 @@ var CopyPastePlugin = /** @class */ (function () {
|
|
|
11466
11535
|
beforeDispatch: function (e) { return _this.onCutCopy(e, true /*isCut*/); },
|
|
11467
11536
|
},
|
|
11468
11537
|
});
|
|
11538
|
+
this.customCopyCutEnabled = editor.isExperimentalFeatureEnabled('CustomCopyCut');
|
|
11469
11539
|
};
|
|
11470
11540
|
/**
|
|
11471
11541
|
* Dispose this plugin
|
|
@@ -11490,7 +11560,7 @@ var CopyPastePlugin = /** @class */ (function () {
|
|
|
11490
11560
|
};
|
|
11491
11561
|
CopyPastePlugin.prototype.onCutCopy = function (event, isCut) {
|
|
11492
11562
|
var _this = this;
|
|
11493
|
-
var _a;
|
|
11563
|
+
var _a, _b, _c;
|
|
11494
11564
|
if (!this.editor) {
|
|
11495
11565
|
return;
|
|
11496
11566
|
}
|
|
@@ -11499,6 +11569,7 @@ var CopyPastePlugin = /** @class */ (function () {
|
|
|
11499
11569
|
(0, adjustImageSelectionOnSafari_1.adjustImageSelectionOnSafari)(this.editor, selection);
|
|
11500
11570
|
if (selection && (selection.type != 'range' || !selection.range.collapsed)) {
|
|
11501
11571
|
var pasteModel = this.editor.getContentModelCopy('disconnected');
|
|
11572
|
+
(0, pruneUnselectedModel_1.pruneUnselectedModel)(pasteModel);
|
|
11502
11573
|
if (selection.type === 'table') {
|
|
11503
11574
|
(0, roosterjs_content_model_dom_1.iterateSelections)(pasteModel, function (_, tableContext) {
|
|
11504
11575
|
if (tableContext === null || tableContext === void 0 ? void 0 : tableContext.table) {
|
|
@@ -11525,10 +11596,16 @@ var CopyPastePlugin = /** @class */ (function () {
|
|
|
11525
11596
|
rawEvent: event,
|
|
11526
11597
|
isCut: isCut,
|
|
11527
11598
|
}).range;
|
|
11528
|
-
if (
|
|
11599
|
+
if (this.customCopyCutEnabled && isClipboardEvent(event)) {
|
|
11600
|
+
event.preventDefault();
|
|
11601
|
+
var text = (0, roosterjs_content_model_dom_1.contentModelToText)(pasteModel);
|
|
11602
|
+
(_a = event.clipboardData) === null || _a === void 0 ? void 0 : _a.setData('text/html', tempDiv_1.innerHTML);
|
|
11603
|
+
(_b = event.clipboardData) === null || _b === void 0 ? void 0 : _b.setData('text/plain', text);
|
|
11604
|
+
}
|
|
11605
|
+
else if (newRange) {
|
|
11529
11606
|
(0, addRangeToSelection_1.addRangeToSelection)(doc, newRange);
|
|
11530
11607
|
}
|
|
11531
|
-
(
|
|
11608
|
+
(_c = doc.defaultView) === null || _c === void 0 ? void 0 : _c.requestAnimationFrame(function () {
|
|
11532
11609
|
if (!_this.editor) {
|
|
11533
11610
|
return;
|
|
11534
11611
|
}
|
|
@@ -11565,7 +11642,9 @@ var CopyPastePlugin = /** @class */ (function () {
|
|
|
11565
11642
|
tempDiv.style.left = '0';
|
|
11566
11643
|
tempDiv.style.userSelect = 'text';
|
|
11567
11644
|
tempDiv.contentEditable = 'true';
|
|
11568
|
-
|
|
11645
|
+
if (!this.customCopyCutEnabled) {
|
|
11646
|
+
doc.body.appendChild(tempDiv);
|
|
11647
|
+
}
|
|
11569
11648
|
this.state.tempDiv = tempDiv;
|
|
11570
11649
|
}
|
|
11571
11650
|
var div = this.state.tempDiv;
|
|
@@ -11777,6 +11856,151 @@ var deleteEmptyList = function (context) {
|
|
|
11777
11856
|
exports.deleteEmptyList = deleteEmptyList;
|
|
11778
11857
|
|
|
11779
11858
|
|
|
11859
|
+
/***/ }),
|
|
11860
|
+
|
|
11861
|
+
/***/ "./packages/roosterjs-content-model-core/lib/corePlugin/copyPaste/utils/pruneUnselectedModel.ts":
|
|
11862
|
+
/*!******************************************************************************************************!*\
|
|
11863
|
+
!*** ./packages/roosterjs-content-model-core/lib/corePlugin/copyPaste/utils/pruneUnselectedModel.ts ***!
|
|
11864
|
+
\******************************************************************************************************/
|
|
11865
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
11866
|
+
|
|
11867
|
+
"use strict";
|
|
11868
|
+
|
|
11869
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
11870
|
+
exports.pruneUnselectedModel = void 0;
|
|
11871
|
+
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
11872
|
+
/**
|
|
11873
|
+
* @internal
|
|
11874
|
+
*/
|
|
11875
|
+
function pruneUnselectedModel(model) {
|
|
11876
|
+
pruneUnselectedModelInternal(model, false /* isSelectionAfterElement */);
|
|
11877
|
+
unwrap(model);
|
|
11878
|
+
}
|
|
11879
|
+
exports.pruneUnselectedModel = pruneUnselectedModel;
|
|
11880
|
+
function pruneUnselectedModelInternal(model, isSelectionAfterElement) {
|
|
11881
|
+
var e_1, _a, _b;
|
|
11882
|
+
for (var index = model.blocks.length - 1; index >= 0; index--) {
|
|
11883
|
+
var block = model.blocks[index];
|
|
11884
|
+
switch (block.blockType) {
|
|
11885
|
+
case 'BlockGroup':
|
|
11886
|
+
pruneUnselectedModelInternal(block, isSelectionAfterElement);
|
|
11887
|
+
if (block.blockGroupType == 'General'
|
|
11888
|
+
? block.blocks.length == 0 && !block.isSelected
|
|
11889
|
+
: block.blocks.length == 0) {
|
|
11890
|
+
model.blocks.splice(index, 1);
|
|
11891
|
+
}
|
|
11892
|
+
break;
|
|
11893
|
+
case 'Divider':
|
|
11894
|
+
case 'Entity':
|
|
11895
|
+
if (!block.isSelected) {
|
|
11896
|
+
model.blocks.splice(index, 1);
|
|
11897
|
+
}
|
|
11898
|
+
else {
|
|
11899
|
+
isSelectionAfterElement = true;
|
|
11900
|
+
}
|
|
11901
|
+
break;
|
|
11902
|
+
case 'Paragraph':
|
|
11903
|
+
var newSegments = [];
|
|
11904
|
+
try {
|
|
11905
|
+
for (var _c = (e_1 = void 0, (0, tslib_1.__values)(block.segments)), _d = _c.next(); !_d.done; _d = _c.next()) {
|
|
11906
|
+
var segment = _d.value;
|
|
11907
|
+
if (segment.segmentType == 'General') {
|
|
11908
|
+
pruneUnselectedModel(segment);
|
|
11909
|
+
if (segment.blocks.length > 0 || segment.isSelected) {
|
|
11910
|
+
newSegments.push(segment);
|
|
11911
|
+
}
|
|
11912
|
+
}
|
|
11913
|
+
else if (segment.isSelected && segment.segmentType != 'SelectionMarker') {
|
|
11914
|
+
newSegments.push(segment);
|
|
11915
|
+
}
|
|
11916
|
+
}
|
|
11917
|
+
}
|
|
11918
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
11919
|
+
finally {
|
|
11920
|
+
try {
|
|
11921
|
+
if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
|
|
11922
|
+
}
|
|
11923
|
+
finally { if (e_1) throw e_1.error; }
|
|
11924
|
+
}
|
|
11925
|
+
block.segments = newSegments;
|
|
11926
|
+
if (block.segments.length == 0) {
|
|
11927
|
+
model.blocks.splice(index, 1);
|
|
11928
|
+
}
|
|
11929
|
+
else {
|
|
11930
|
+
isSelectionAfterElement = true;
|
|
11931
|
+
}
|
|
11932
|
+
break;
|
|
11933
|
+
case 'Table':
|
|
11934
|
+
var filteredRows = [];
|
|
11935
|
+
for (var i = 0; i < block.rows.length; i++) {
|
|
11936
|
+
var row = block.rows[i];
|
|
11937
|
+
for (var j = 0; j < row.cells.length; j++) {
|
|
11938
|
+
var cell = row.cells[j];
|
|
11939
|
+
if (!cell.isSelected) {
|
|
11940
|
+
pruneUnselectedModelInternal(cell, isSelectionAfterElement);
|
|
11941
|
+
}
|
|
11942
|
+
else {
|
|
11943
|
+
isSelectionAfterElement = true;
|
|
11944
|
+
}
|
|
11945
|
+
}
|
|
11946
|
+
var newCells = [];
|
|
11947
|
+
for (var k = 0; k < row.cells.length; k++) {
|
|
11948
|
+
var cell = row.cells[k];
|
|
11949
|
+
if (cell.isSelected || cell.blocks.length > 0) {
|
|
11950
|
+
newCells.push(cell);
|
|
11951
|
+
}
|
|
11952
|
+
}
|
|
11953
|
+
row.cells = newCells;
|
|
11954
|
+
if (row.cells.length > 0) {
|
|
11955
|
+
filteredRows.push(row);
|
|
11956
|
+
}
|
|
11957
|
+
}
|
|
11958
|
+
if (!isSelectionAfterElement &&
|
|
11959
|
+
filteredRows.length == 1 &&
|
|
11960
|
+
filteredRows[0].cells.length == 1 &&
|
|
11961
|
+
!filteredRows[0].cells[0].isSelected) {
|
|
11962
|
+
var cell = filteredRows[0].cells[0];
|
|
11963
|
+
(_b = model.blocks).splice.apply(_b, (0, tslib_1.__spreadArray)([index, 1], (0, tslib_1.__read)(cell.blocks), false));
|
|
11964
|
+
}
|
|
11965
|
+
else if (filteredRows.length == 0) {
|
|
11966
|
+
model.blocks.splice(index, 1);
|
|
11967
|
+
}
|
|
11968
|
+
else {
|
|
11969
|
+
block.rows = filteredRows;
|
|
11970
|
+
}
|
|
11971
|
+
break;
|
|
11972
|
+
}
|
|
11973
|
+
}
|
|
11974
|
+
return isSelectionAfterElement;
|
|
11975
|
+
}
|
|
11976
|
+
function unwrap(model) {
|
|
11977
|
+
var block = model.blocks[0];
|
|
11978
|
+
if (model.blocks.length == 1) {
|
|
11979
|
+
while (block.blockType == 'BlockGroup') {
|
|
11980
|
+
model.blocks = block.blocks;
|
|
11981
|
+
block = model.blocks[0];
|
|
11982
|
+
if (model.blocks.length > 1) {
|
|
11983
|
+
return;
|
|
11984
|
+
}
|
|
11985
|
+
}
|
|
11986
|
+
if (block.blockType == 'Paragraph') {
|
|
11987
|
+
block.isImplicit = true;
|
|
11988
|
+
block.format = {};
|
|
11989
|
+
inheritSegmentFormatToChildren(block);
|
|
11990
|
+
}
|
|
11991
|
+
}
|
|
11992
|
+
}
|
|
11993
|
+
function inheritSegmentFormatToChildren(parent) {
|
|
11994
|
+
var value = parent.segmentFormat;
|
|
11995
|
+
if (value !== undefined) {
|
|
11996
|
+
for (var index = 0; index < parent.segments.length; index++) {
|
|
11997
|
+
var segment = parent.segments[index];
|
|
11998
|
+
segment.format = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, parent.segmentFormat), segment.format);
|
|
11999
|
+
}
|
|
12000
|
+
}
|
|
12001
|
+
}
|
|
12002
|
+
|
|
12003
|
+
|
|
11780
12004
|
/***/ }),
|
|
11781
12005
|
|
|
11782
12006
|
/***/ "./packages/roosterjs-content-model-core/lib/corePlugin/createEditorCorePlugins.ts":
|
|
@@ -12815,6 +13039,7 @@ var FormatPlugin = /** @class */ (function () {
|
|
|
12815
13039
|
*/
|
|
12816
13040
|
FormatPlugin.prototype.initialize = function (editor) {
|
|
12817
13041
|
this.editor = editor;
|
|
13042
|
+
this.state.defaultFormat = (0, roosterjs_content_model_dom_1.normalizeSegmentFormat)(this.state.defaultFormat, editor.getEnvironment());
|
|
12818
13043
|
};
|
|
12819
13044
|
/**
|
|
12820
13045
|
* The last method that editor will call to a plugin before it is disposed.
|
|
@@ -15436,6 +15661,7 @@ function trustedHTMLHandlerToDOMCreator(trustedHTMLHandler) {
|
|
|
15436
15661
|
var handler = trustedHTMLHandler || exports.defaultTrustHtmlHandler;
|
|
15437
15662
|
return {
|
|
15438
15663
|
htmlToDOM: function (html) { return new DOMParser().parseFromString(handler(html), 'text/html'); },
|
|
15664
|
+
isBypassed: !trustedHTMLHandler,
|
|
15439
15665
|
};
|
|
15440
15666
|
}
|
|
15441
15667
|
|
|
@@ -15704,10 +15930,22 @@ exports.BulletListType = {
|
|
|
15704
15930
|
* Bullet type circle
|
|
15705
15931
|
*/
|
|
15706
15932
|
Circle: 9,
|
|
15933
|
+
/**
|
|
15934
|
+
* Box Shadow bullet type
|
|
15935
|
+
*/
|
|
15936
|
+
BoxShadow: 10,
|
|
15937
|
+
/**
|
|
15938
|
+
* Rhombus with a cross inside
|
|
15939
|
+
*/
|
|
15940
|
+
Xrhombus: 11,
|
|
15941
|
+
/**
|
|
15942
|
+
* Check mark bullet type
|
|
15943
|
+
*/
|
|
15944
|
+
CheckMark: 12,
|
|
15707
15945
|
/**
|
|
15708
15946
|
* Maximum value of the enum
|
|
15709
15947
|
*/
|
|
15710
|
-
Max:
|
|
15948
|
+
Max: 12,
|
|
15711
15949
|
};
|
|
15712
15950
|
|
|
15713
15951
|
|
|
@@ -16080,7 +16318,7 @@ var BulletListType_1 = __webpack_require__(/*! ./BulletListType */ "./packages/r
|
|
|
16080
16318
|
*/
|
|
16081
16319
|
exports.UnorderedListStyleMap = (_a = {},
|
|
16082
16320
|
_a[BulletListType_1.BulletListType.Disc] = 'disc',
|
|
16083
|
-
_a[BulletListType_1.BulletListType.Square] = '
|
|
16321
|
+
_a[BulletListType_1.BulletListType.Square] = 'square',
|
|
16084
16322
|
_a[BulletListType_1.BulletListType.Circle] = 'circle',
|
|
16085
16323
|
_a[BulletListType_1.BulletListType.Dash] = '"- "',
|
|
16086
16324
|
_a[BulletListType_1.BulletListType.LongArrow] = '"➔ "',
|
|
@@ -16088,6 +16326,9 @@ exports.UnorderedListStyleMap = (_a = {},
|
|
|
16088
16326
|
_a[BulletListType_1.BulletListType.ShortArrow] = '"➢ "',
|
|
16089
16327
|
_a[BulletListType_1.BulletListType.UnfilledArrow] = '"➪ "',
|
|
16090
16328
|
_a[BulletListType_1.BulletListType.Hyphen] = '"— "',
|
|
16329
|
+
_a[BulletListType_1.BulletListType.CheckMark] = '"✔ "',
|
|
16330
|
+
_a[BulletListType_1.BulletListType.Xrhombus] = '"❖ "',
|
|
16331
|
+
_a[BulletListType_1.BulletListType.BoxShadow] = '"❑ "',
|
|
16091
16332
|
_a);
|
|
16092
16333
|
|
|
16093
16334
|
|
|
@@ -16996,6 +17237,7 @@ var FormatContainerTriggerStyles = [
|
|
|
16996
17237
|
'minWidth',
|
|
16997
17238
|
'minHeight',
|
|
16998
17239
|
];
|
|
17240
|
+
var FormatContainerTriggerAttributes = ['id'];
|
|
16999
17241
|
var ByPassFormatContainerTags = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'P', 'A'];
|
|
17000
17242
|
var SegmentDecoratorTags = ['A', 'CODE'];
|
|
17001
17243
|
/**
|
|
@@ -17049,7 +17291,8 @@ function shouldUseFormatContainer(element, context) {
|
|
|
17049
17291
|
}
|
|
17050
17292
|
// For block element with positive value of border width or top/bottom margin/padding,
|
|
17051
17293
|
// we need to use format container
|
|
17052
|
-
if (FormatContainerTriggerStyles.some(function (key) { return parseInt(style[key] || defaultStyle[key] || '') > 0; })
|
|
17294
|
+
if (FormatContainerTriggerStyles.some(function (key) { return parseInt(style[key] || defaultStyle[key] || '') > 0; }) ||
|
|
17295
|
+
FormatContainerTriggerAttributes.some(function (attr) { return element.hasAttribute(attr); })) {
|
|
17053
17296
|
return true;
|
|
17054
17297
|
}
|
|
17055
17298
|
// For margin left/right with value "auto", we need to use format container
|
|
@@ -18406,6 +18649,35 @@ function setHiddenProperty(node, key, value) {
|
|
|
18406
18649
|
exports.setHiddenProperty = setHiddenProperty;
|
|
18407
18650
|
|
|
18408
18651
|
|
|
18652
|
+
/***/ }),
|
|
18653
|
+
|
|
18654
|
+
/***/ "./packages/roosterjs-content-model-dom/lib/domUtils/hiddenProperties/imageState.ts":
|
|
18655
|
+
/*!******************************************************************************************!*\
|
|
18656
|
+
!*** ./packages/roosterjs-content-model-dom/lib/domUtils/hiddenProperties/imageState.ts ***!
|
|
18657
|
+
\******************************************************************************************/
|
|
18658
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
18659
|
+
|
|
18660
|
+
"use strict";
|
|
18661
|
+
|
|
18662
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
18663
|
+
exports.setImageState = exports.getImageState = void 0;
|
|
18664
|
+
var hiddenProperty_1 = __webpack_require__(/*! ./hiddenProperty */ "./packages/roosterjs-content-model-dom/lib/domUtils/hiddenProperties/hiddenProperty.ts");
|
|
18665
|
+
/**
|
|
18666
|
+
* Get image state from element. This is used to store a image state.
|
|
18667
|
+
*/
|
|
18668
|
+
function getImageState(element) {
|
|
18669
|
+
return (0, hiddenProperty_1.getHiddenProperty)(element, 'imageState');
|
|
18670
|
+
}
|
|
18671
|
+
exports.getImageState = getImageState;
|
|
18672
|
+
/**
|
|
18673
|
+
* Set image state to element. This is used to store a image state.
|
|
18674
|
+
*/
|
|
18675
|
+
function setImageState(element, marker) {
|
|
18676
|
+
(0, hiddenProperty_1.setHiddenProperty)(element, 'imageState', marker);
|
|
18677
|
+
}
|
|
18678
|
+
exports.setImageState = setImageState;
|
|
18679
|
+
|
|
18680
|
+
|
|
18409
18681
|
/***/ }),
|
|
18410
18682
|
|
|
18411
18683
|
/***/ "./packages/roosterjs-content-model-dom/lib/domUtils/hiddenProperties/paragraphMarker.ts":
|
|
@@ -19948,6 +20220,7 @@ var fontSizeFormatHandler_1 = __webpack_require__(/*! ./segment/fontSizeFormatHa
|
|
|
19948
20220
|
var getObjectKeys_1 = __webpack_require__(/*! ../domUtils/getObjectKeys */ "./packages/roosterjs-content-model-dom/lib/domUtils/getObjectKeys.ts");
|
|
19949
20221
|
var htmlAlignFormatHandler_1 = __webpack_require__(/*! ./block/htmlAlignFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/block/htmlAlignFormatHandler.ts");
|
|
19950
20222
|
var idFormatHandler_1 = __webpack_require__(/*! ./common/idFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/common/idFormatHandler.ts");
|
|
20223
|
+
var imageStateFormatHandler_1 = __webpack_require__(/*! ./segment/imageStateFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/segment/imageStateFormatHandler.ts");
|
|
19951
20224
|
var italicFormatHandler_1 = __webpack_require__(/*! ./segment/italicFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/segment/italicFormatHandler.ts");
|
|
19952
20225
|
var letterSpacingFormatHandler_1 = __webpack_require__(/*! ./segment/letterSpacingFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/segment/letterSpacingFormatHandler.ts");
|
|
19953
20226
|
var lineHeightFormatHandler_1 = __webpack_require__(/*! ./block/lineHeightFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/block/lineHeightFormatHandler.ts");
|
|
@@ -19987,6 +20260,7 @@ var defaultFormatHandlerMap = {
|
|
|
19987
20260
|
entity: entityFormatHandler_1.entityFormatHandler,
|
|
19988
20261
|
htmlAlign: htmlAlignFormatHandler_1.htmlAlignFormatHandler,
|
|
19989
20262
|
id: idFormatHandler_1.idFormatHandler,
|
|
20263
|
+
imageState: imageStateFormatHandler_1.imageStateFormatHandler,
|
|
19990
20264
|
italic: italicFormatHandler_1.italicFormatHandler,
|
|
19991
20265
|
letterSpacing: letterSpacingFormatHandler_1.letterSpacingFormatHandler,
|
|
19992
20266
|
lineHeight: lineHeightFormatHandler_1.lineHeightFormatHandler,
|
|
@@ -20099,6 +20373,7 @@ exports.defaultFormatKeysPerCategory = {
|
|
|
20099
20373
|
'display',
|
|
20100
20374
|
'float',
|
|
20101
20375
|
'verticalAlign',
|
|
20376
|
+
'imageState',
|
|
20102
20377
|
],
|
|
20103
20378
|
link: [
|
|
20104
20379
|
'link',
|
|
@@ -20117,7 +20392,7 @@ exports.defaultFormatKeysPerCategory = {
|
|
|
20117
20392
|
code: ['fontFamily', 'display'],
|
|
20118
20393
|
dataset: ['dataset'],
|
|
20119
20394
|
divider: (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(sharedBlockFormats), false), (0, tslib_1.__read)(sharedContainerFormats), false), ['display', 'size', 'htmlAlign'], false),
|
|
20120
|
-
container: (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(sharedContainerFormats), false), ['htmlAlign', 'size', 'display'], false),
|
|
20395
|
+
container: (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(sharedContainerFormats), false), ['htmlAlign', 'size', 'display', 'id'], false),
|
|
20121
20396
|
entity: ['entity'],
|
|
20122
20397
|
general: ['textColor', 'backgroundColor'], // General model still need to do color transformation in dark mode
|
|
20123
20398
|
};
|
|
@@ -20476,6 +20751,37 @@ function normalizeFontSize(fontSize, contextFont, context) {
|
|
|
20476
20751
|
}
|
|
20477
20752
|
|
|
20478
20753
|
|
|
20754
|
+
/***/ }),
|
|
20755
|
+
|
|
20756
|
+
/***/ "./packages/roosterjs-content-model-dom/lib/formatHandlers/segment/imageStateFormatHandler.ts":
|
|
20757
|
+
/*!****************************************************************************************************!*\
|
|
20758
|
+
!*** ./packages/roosterjs-content-model-dom/lib/formatHandlers/segment/imageStateFormatHandler.ts ***!
|
|
20759
|
+
\****************************************************************************************************/
|
|
20760
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
20761
|
+
|
|
20762
|
+
"use strict";
|
|
20763
|
+
|
|
20764
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
20765
|
+
exports.imageStateFormatHandler = void 0;
|
|
20766
|
+
var imageState_1 = __webpack_require__(/*! ../../domUtils/hiddenProperties/imageState */ "./packages/roosterjs-content-model-dom/lib/domUtils/hiddenProperties/imageState.ts");
|
|
20767
|
+
/**
|
|
20768
|
+
* @internal
|
|
20769
|
+
*/
|
|
20770
|
+
exports.imageStateFormatHandler = {
|
|
20771
|
+
parse: function (format, element) {
|
|
20772
|
+
var marker = (0, imageState_1.getImageState)(element);
|
|
20773
|
+
if (marker) {
|
|
20774
|
+
format.imageState = marker;
|
|
20775
|
+
}
|
|
20776
|
+
},
|
|
20777
|
+
apply: function (format, element) {
|
|
20778
|
+
if (format.imageState) {
|
|
20779
|
+
(0, imageState_1.setImageState)(element, format.imageState);
|
|
20780
|
+
}
|
|
20781
|
+
},
|
|
20782
|
+
};
|
|
20783
|
+
|
|
20784
|
+
|
|
20479
20785
|
/***/ }),
|
|
20480
20786
|
|
|
20481
20787
|
/***/ "./packages/roosterjs-content-model-dom/lib/formatHandlers/segment/italicFormatHandler.ts":
|
|
@@ -21266,9 +21572,9 @@ exports.shouldSetValue = shouldSetValue;
|
|
|
21266
21572
|
|
|
21267
21573
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
21268
21574
|
exports.createParagraphDecorator = exports.createContentModelDocument = exports.createImage = exports.createText = exports.createTableCell = exports.createTable = exports.createSelectionMarker = exports.createParagraph = exports.createFormatContainer = exports.createListItem = exports.createBr = exports.isLinkUndeletable = exports.setLinkUndeletable = exports.normalizeRect = exports.isWhiteSpacePreserved = exports.reuseCachedElement = exports.findClosestBlockEntityContainer = exports.isBlockEntityContainer = exports.isEntityDelimiter = exports.addDelimiters = exports.generateEntityClassNames = exports.parseEntityFormat = exports.getAllEntityWrappers = exports.findClosestEntityWrapper = exports.isEntityElement = exports.unwrap = exports.wrap = exports.wrapAllChildNodes = exports.moveChildNodes = exports.toArray = exports.getSafeIdSelector = exports.getObjectKeys = exports.isElementOfType = exports.isNodeOfType = exports.hasMetadata = exports.getMetadata = exports.updateMetadata = exports.buildSelectionMarker = exports.isBlockElement = exports.areSameFormats = exports.parseFormat = exports.getRegularSelectionOffsets = exports.tableProcessor = exports.entityProcessor = exports.processChildNode = exports.handleRegularSelection = exports.childProcessor = exports.contentModelToText = exports.contentModelToDom = exports.domToContentModel = void 0;
|
|
21269
|
-
exports.
|
|
21270
|
-
exports.
|
|
21271
|
-
exports.EmptySegmentFormat = void 0;
|
|
21575
|
+
exports.normalizeText = exports.isSpace = exports.isPunctuation = exports.extractBorderValues = exports.combineBorderValue = exports.isCursorMovingKey = exports.isModifierKey = exports.isCharacterValue = exports.getDOMInsertPointRect = exports.getSelectionRootNode = exports.isBold = exports.createModelToDomConfig = exports.createModelToDomContextWithConfig = exports.createModelToDomContext = exports.createDomToModelConfig = exports.createDomToModelContextWithConfig = exports.createDomToModelContext = exports.defaultGenerateColorKey = exports.parseColor = exports.setColor = exports.getColor = exports.DeprecatedColors = exports.BorderKeys = exports.parseValueWithUnit = exports.getAutoListStyleType = exports.getOrderedListNumberStr = exports.setParagraphNotImplicit = exports.normalizeSegmentFormat = exports.mergeTextSegments = exports.normalizeSingleSegment = exports.isEmpty = exports.addSegment = exports.unwrapBlock = exports.isGeneralSegment = exports.normalizeContentModel = exports.normalizeParagraph = exports.addTextSegment = exports.addLink = exports.addCode = exports.addBlock = exports.mutateSegment = exports.mutateSegments = exports.mutateBlock = exports.createTableRow = exports.createEmptyModel = exports.createListLevel = exports.createDivider = exports.createEntity = exports.createGeneralBlock = exports.createGeneralSegment = void 0;
|
|
21576
|
+
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.runEditSteps = exports.getClosestAncestorBlockGroupIndex = exports.getSegmentTextFormat = exports.getListStyleTypeFromString = exports.retrieveModelFormatState = exports.setTableCellBackgroundColor = exports.MIN_ALLOWED_TABLE_CELL_HEIGHT = exports.MIN_ALLOWED_TABLE_CELL_WIDTH = exports.normalizeTable = exports.setFirstColumnFormatBorders = exports.applyTableFormat = exports.deleteBlock = exports.deleteSegment = exports.deleteSelection = exports.mergeModel = exports.cloneModel = exports.setSelection = exports.hasSelectionInBlockGroup = exports.hasSelectionInSegment = exports.hasSelectionInBlock = exports.getSelectedCells = exports.getSelectedSegmentsAndParagraphs = exports.getSelectedSegments = exports.getSelectedParagraphs = exports.getOperationalBlocks = exports.getFirstSelectedTable = exports.getFirstSelectedListItem = exports.iterateSelections = exports.isBlockGroupOfType = exports.getImageState = exports.setImageState = exports.getParagraphMarker = exports.setParagraphMarker = exports.cacheGetEventData = exports.extractClipboardItems = exports.transformColor = exports.readFile = exports.parseTableCells = void 0;
|
|
21577
|
+
exports.EmptySegmentFormat = exports.UnorderedListStyleMap = exports.OrderedListStyleMap = exports.TableBorderFormat = void 0;
|
|
21272
21578
|
var domToContentModel_1 = __webpack_require__(/*! ./domToModel/domToContentModel */ "./packages/roosterjs-content-model-dom/lib/domToModel/domToContentModel.ts");
|
|
21273
21579
|
Object.defineProperty(exports, "domToContentModel", ({ enumerable: true, get: function () { return domToContentModel_1.domToContentModel; } }));
|
|
21274
21580
|
var contentModelToDom_1 = __webpack_require__(/*! ./modelToDom/contentModelToDom */ "./packages/roosterjs-content-model-dom/lib/modelToDom/contentModelToDom.ts");
|
|
@@ -21397,6 +21703,8 @@ var normalizeSegment_1 = __webpack_require__(/*! ./modelApi/common/normalizeSegm
|
|
|
21397
21703
|
Object.defineProperty(exports, "normalizeSingleSegment", ({ enumerable: true, get: function () { return normalizeSegment_1.normalizeSingleSegment; } }));
|
|
21398
21704
|
var mergeTextSegments_1 = __webpack_require__(/*! ./modelApi/common/mergeTextSegments */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/mergeTextSegments.ts");
|
|
21399
21705
|
Object.defineProperty(exports, "mergeTextSegments", ({ enumerable: true, get: function () { return mergeTextSegments_1.mergeTextSegments; } }));
|
|
21706
|
+
var normalizeSegmentFormat_1 = __webpack_require__(/*! ./modelApi/common/normalizeSegmentFormat */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/normalizeSegmentFormat.ts");
|
|
21707
|
+
Object.defineProperty(exports, "normalizeSegmentFormat", ({ enumerable: true, get: function () { return normalizeSegmentFormat_1.normalizeSegmentFormat; } }));
|
|
21400
21708
|
var setParagraphNotImplicit_1 = __webpack_require__(/*! ./modelApi/block/setParagraphNotImplicit */ "./packages/roosterjs-content-model-dom/lib/modelApi/block/setParagraphNotImplicit.ts");
|
|
21401
21709
|
Object.defineProperty(exports, "setParagraphNotImplicit", ({ enumerable: true, get: function () { return setParagraphNotImplicit_1.setParagraphNotImplicit; } }));
|
|
21402
21710
|
var getOrderedListNumberStr_1 = __webpack_require__(/*! ./modelApi/list/getOrderedListNumberStr */ "./packages/roosterjs-content-model-dom/lib/modelApi/list/getOrderedListNumberStr.ts");
|
|
@@ -21451,6 +21759,9 @@ Object.defineProperty(exports, "cacheGetEventData", ({ enumerable: true, get: fu
|
|
|
21451
21759
|
var paragraphMarker_1 = __webpack_require__(/*! ./domUtils/hiddenProperties/paragraphMarker */ "./packages/roosterjs-content-model-dom/lib/domUtils/hiddenProperties/paragraphMarker.ts");
|
|
21452
21760
|
Object.defineProperty(exports, "setParagraphMarker", ({ enumerable: true, get: function () { return paragraphMarker_1.setParagraphMarker; } }));
|
|
21453
21761
|
Object.defineProperty(exports, "getParagraphMarker", ({ enumerable: true, get: function () { return paragraphMarker_1.getParagraphMarker; } }));
|
|
21762
|
+
var imageState_1 = __webpack_require__(/*! ./domUtils/hiddenProperties/imageState */ "./packages/roosterjs-content-model-dom/lib/domUtils/hiddenProperties/imageState.ts");
|
|
21763
|
+
Object.defineProperty(exports, "setImageState", ({ enumerable: true, get: function () { return imageState_1.setImageState; } }));
|
|
21764
|
+
Object.defineProperty(exports, "getImageState", ({ enumerable: true, get: function () { return imageState_1.getImageState; } }));
|
|
21454
21765
|
var isBlockGroupOfType_1 = __webpack_require__(/*! ./modelApi/typeCheck/isBlockGroupOfType */ "./packages/roosterjs-content-model-dom/lib/modelApi/typeCheck/isBlockGroupOfType.ts");
|
|
21455
21766
|
Object.defineProperty(exports, "isBlockGroupOfType", ({ enumerable: true, get: function () { return isBlockGroupOfType_1.isBlockGroupOfType; } }));
|
|
21456
21767
|
var iterateSelections_1 = __webpack_require__(/*! ./modelApi/selection/iterateSelections */ "./packages/roosterjs-content-model-dom/lib/modelApi/selection/iterateSelections.ts");
|
|
@@ -22300,6 +22611,44 @@ function normalizeLastTextSegment(paragraph, segment, lastInlineSegment) {
|
|
|
22300
22611
|
}
|
|
22301
22612
|
|
|
22302
22613
|
|
|
22614
|
+
/***/ }),
|
|
22615
|
+
|
|
22616
|
+
/***/ "./packages/roosterjs-content-model-dom/lib/modelApi/common/normalizeSegmentFormat.ts":
|
|
22617
|
+
/*!********************************************************************************************!*\
|
|
22618
|
+
!*** ./packages/roosterjs-content-model-dom/lib/modelApi/common/normalizeSegmentFormat.ts ***!
|
|
22619
|
+
\********************************************************************************************/
|
|
22620
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
22621
|
+
|
|
22622
|
+
"use strict";
|
|
22623
|
+
|
|
22624
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
22625
|
+
exports.normalizeSegmentFormat = void 0;
|
|
22626
|
+
var createContentModelDocument_1 = __webpack_require__(/*! ../creators/createContentModelDocument */ "./packages/roosterjs-content-model-dom/lib/modelApi/creators/createContentModelDocument.ts");
|
|
22627
|
+
var createText_1 = __webpack_require__(/*! ../creators/createText */ "./packages/roosterjs-content-model-dom/lib/modelApi/creators/createText.ts");
|
|
22628
|
+
var ensureParagraph_1 = __webpack_require__(/*! ./ensureParagraph */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/ensureParagraph.ts");
|
|
22629
|
+
var createModelToDomContext_1 = __webpack_require__(/*! ../../modelToDom/context/createModelToDomContext */ "./packages/roosterjs-content-model-dom/lib/modelToDom/context/createModelToDomContext.ts");
|
|
22630
|
+
var createDomToModelContext_1 = __webpack_require__(/*! ../../domToModel/context/createDomToModelContext */ "./packages/roosterjs-content-model-dom/lib/domToModel/context/createDomToModelContext.ts");
|
|
22631
|
+
/**
|
|
22632
|
+
* Some format values can be changed when apply to DOM, such as font family.
|
|
22633
|
+
* This function will normalize the format and return the same string after DOM modification.
|
|
22634
|
+
* @param format The format to be normalized
|
|
22635
|
+
* @return Normalized format
|
|
22636
|
+
*/
|
|
22637
|
+
function normalizeSegmentFormat(format, environment) {
|
|
22638
|
+
var _a, _b;
|
|
22639
|
+
var span = document.createElement('span');
|
|
22640
|
+
var segment = (0, createText_1.createText)('text', format);
|
|
22641
|
+
var domToModelContext = (0, createDomToModelContext_1.createDomToModelContextWithConfig)(environment.domToModelSettings.calculated);
|
|
22642
|
+
var modelToDomContext = (0, createModelToDomContext_1.createModelToDomContextWithConfig)(environment.modelToDomSettings.calculated);
|
|
22643
|
+
var model = (0, createContentModelDocument_1.createContentModelDocument)();
|
|
22644
|
+
modelToDomContext.modelHandlers.segment(span.ownerDocument, span, segment, modelToDomContext, []);
|
|
22645
|
+
domToModelContext.elementProcessors.element(model, span, domToModelContext);
|
|
22646
|
+
var paragraph = (0, ensureParagraph_1.ensureParagraph)(model);
|
|
22647
|
+
return (_b = (_a = paragraph.segments[0]) === null || _a === void 0 ? void 0 : _a.format) !== null && _b !== void 0 ? _b : format;
|
|
22648
|
+
}
|
|
22649
|
+
exports.normalizeSegmentFormat = normalizeSegmentFormat;
|
|
22650
|
+
|
|
22651
|
+
|
|
22303
22652
|
/***/ }),
|
|
22304
22653
|
|
|
22305
22654
|
/***/ "./packages/roosterjs-content-model-dom/lib/modelApi/common/unwrapBlock.ts":
|
|
@@ -24453,6 +24802,7 @@ exports.retrieveModelFormatState = void 0;
|
|
|
24453
24802
|
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
24454
24803
|
var borderValues_1 = __webpack_require__(/*! ../../domUtils/style/borderValues */ "./packages/roosterjs-content-model-dom/lib/domUtils/style/borderValues.ts");
|
|
24455
24804
|
var getClosestAncestorBlockGroupIndex_1 = __webpack_require__(/*! ./getClosestAncestorBlockGroupIndex */ "./packages/roosterjs-content-model-dom/lib/modelApi/editing/getClosestAncestorBlockGroupIndex.ts");
|
|
24805
|
+
var updateImageMetadata_1 = __webpack_require__(/*! ../metadata/updateImageMetadata */ "./packages/roosterjs-content-model-dom/lib/modelApi/metadata/updateImageMetadata.ts");
|
|
24456
24806
|
var updateTableMetadata_1 = __webpack_require__(/*! ../metadata/updateTableMetadata */ "./packages/roosterjs-content-model-dom/lib/modelApi/metadata/updateTableMetadata.ts");
|
|
24457
24807
|
var isBold_1 = __webpack_require__(/*! ../../domUtils/style/isBold */ "./packages/roosterjs-content-model-dom/lib/domUtils/style/isBold.ts");
|
|
24458
24808
|
var iterateSelections_1 = __webpack_require__(/*! ../selection/iterateSelections */ "./packages/roosterjs-content-model-dom/lib/modelApi/selection/iterateSelections.ts");
|
|
@@ -24525,6 +24875,7 @@ function retrieveModelFormatState(model, pendingFormat, formatState, conflictSol
|
|
|
24525
24875
|
}
|
|
24526
24876
|
else {
|
|
24527
24877
|
formatState.imageFormat = undefined;
|
|
24878
|
+
formatState.imageEditingMetadata = undefined;
|
|
24528
24879
|
}
|
|
24529
24880
|
}
|
|
24530
24881
|
});
|
|
@@ -24621,6 +24972,7 @@ function retrieveImageFormat(image, result) {
|
|
|
24621
24972
|
boxShadow: format.boxShadow,
|
|
24622
24973
|
borderRadius: format.borderRadius,
|
|
24623
24974
|
};
|
|
24975
|
+
result.imageEditingMetadata = (0, updateImageMetadata_1.getImageMetadata)(image);
|
|
24624
24976
|
}
|
|
24625
24977
|
function mergeValue(format, key, newValue, isFirst, conflictSolution, parseFn) {
|
|
24626
24978
|
if (conflictSolution === void 0) { conflictSolution = 'remove'; }
|
|
@@ -28956,52 +29308,71 @@ var AutoFormatPlugin = /** @class */ (function () {
|
|
|
28956
29308
|
if (options === void 0) { options = DefaultOptions; }
|
|
28957
29309
|
this.options = options;
|
|
28958
29310
|
this.editor = null;
|
|
28959
|
-
this.
|
|
29311
|
+
this.autoLink = {
|
|
29312
|
+
enabled: !!(this.options.autoLink || this.options.autoTel || this.options.autoMailto),
|
|
29313
|
+
transformFunction: function (_model, previousSegment, paragraph, context) {
|
|
29314
|
+
var _a;
|
|
29315
|
+
var _b = _this.options, autoLink = _b.autoLink, autoTel = _b.autoTel, autoMailto = _b.autoMailto;
|
|
29316
|
+
var linkSegment = (0, roosterjs_content_model_api_1.promoteLink)(previousSegment, paragraph, {
|
|
29317
|
+
autoLink: autoLink,
|
|
29318
|
+
autoTel: autoTel,
|
|
29319
|
+
autoMailto: autoMailto,
|
|
29320
|
+
});
|
|
29321
|
+
if (linkSegment) {
|
|
29322
|
+
return createAnchor(((_a = linkSegment.link) === null || _a === void 0 ? void 0 : _a.format.href) || '', linkSegment.text);
|
|
29323
|
+
}
|
|
29324
|
+
return false;
|
|
29325
|
+
},
|
|
29326
|
+
apiName: 'autoLink',
|
|
29327
|
+
changeSource: roosterjs_content_model_dom_1.ChangeSource.AutoLink,
|
|
29328
|
+
};
|
|
29329
|
+
this.tabFeatures = [
|
|
28960
29330
|
{
|
|
28961
|
-
autoFormat: 'list',
|
|
28962
29331
|
enabled: !!(this.options.autoBullet || this.options.autoNumbering),
|
|
28963
29332
|
transformFunction: function (model, _previousSegment, paragraph, context) {
|
|
28964
29333
|
return (0, keyboardListTrigger_1.keyboardListTrigger)(model, paragraph, context, _this.options.autoBullet, _this.options.autoNumbering, _this.options.removeListMargins);
|
|
28965
29334
|
},
|
|
29335
|
+
apiName: 'autoToggleList',
|
|
29336
|
+
changeSource: roosterjs_content_model_dom_1.ChangeSource.AutoFormat,
|
|
28966
29337
|
},
|
|
29338
|
+
this.autoLink,
|
|
29339
|
+
];
|
|
29340
|
+
this.features = (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(this.tabFeatures), false), [
|
|
28967
29341
|
{
|
|
28968
|
-
autoFormat: 'link',
|
|
28969
|
-
enabled: !!(this.options.autoLink || this.options.autoTel || this.options.autoMailto),
|
|
28970
|
-
transformFunction: function (_model, previousSegment, paragraph, context) {
|
|
28971
|
-
var _a;
|
|
28972
|
-
var _b = _this.options, autoLink = _b.autoLink, autoTel = _b.autoTel, autoMailto = _b.autoMailto;
|
|
28973
|
-
var linkSegment = (0, roosterjs_content_model_api_1.promoteLink)(previousSegment, paragraph, {
|
|
28974
|
-
autoLink: autoLink,
|
|
28975
|
-
autoTel: autoTel,
|
|
28976
|
-
autoMailto: autoMailto,
|
|
28977
|
-
});
|
|
28978
|
-
if (linkSegment) {
|
|
28979
|
-
return createAnchor(((_a = linkSegment.link) === null || _a === void 0 ? void 0 : _a.format.href) || '', linkSegment.text);
|
|
28980
|
-
}
|
|
28981
|
-
return false;
|
|
28982
|
-
},
|
|
28983
|
-
},
|
|
28984
|
-
{
|
|
28985
|
-
autoFormat: 'hyphen',
|
|
28986
29342
|
enabled: !!this.options.autoHyphen,
|
|
29343
|
+
apiName: 'autoHyphen',
|
|
29344
|
+
changeSource: roosterjs_content_model_dom_1.ChangeSource.Format,
|
|
28987
29345
|
transformFunction: function (_model, previousSegment, paragraph, context) {
|
|
28988
29346
|
return (0, transformHyphen_1.transformHyphen)(previousSegment, paragraph, context);
|
|
28989
29347
|
},
|
|
28990
29348
|
},
|
|
28991
29349
|
{
|
|
28992
|
-
autoFormat: 'fraction',
|
|
28993
29350
|
enabled: !!this.options.autoFraction,
|
|
29351
|
+
apiName: 'autoFraction',
|
|
29352
|
+
changeSource: roosterjs_content_model_dom_1.ChangeSource.Format,
|
|
28994
29353
|
transformFunction: function (_model, previousSegment, paragraph, context) {
|
|
28995
29354
|
return (0, transformFraction_1.transformFraction)(previousSegment, paragraph, context);
|
|
28996
29355
|
},
|
|
28997
29356
|
},
|
|
28998
29357
|
{
|
|
28999
|
-
autoFormat: 'ordinal',
|
|
29000
29358
|
enabled: !!this.options.autoOrdinals,
|
|
29359
|
+
apiName: 'autoOrdinal',
|
|
29360
|
+
changeSource: roosterjs_content_model_dom_1.ChangeSource.Format,
|
|
29001
29361
|
transformFunction: function (_model, previousSegment, paragraph, context) {
|
|
29002
29362
|
return (0, transformOrdinals_1.transformOrdinals)(previousSegment, paragraph, context);
|
|
29003
29363
|
},
|
|
29004
29364
|
},
|
|
29365
|
+
], false);
|
|
29366
|
+
this.enterFeatures = [
|
|
29367
|
+
{
|
|
29368
|
+
enabled: !!this.options.autoHorizontalLine,
|
|
29369
|
+
transformFunction: function (model, _previousSegment, paragraph, context) {
|
|
29370
|
+
return (0, checkAndInsertHorizontalLine_1.checkAndInsertHorizontalLine)(model, paragraph, context);
|
|
29371
|
+
},
|
|
29372
|
+
apiName: 'autoHorizontalLine',
|
|
29373
|
+
changeSource: roosterjs_content_model_dom_1.ChangeSource.AutoFormat,
|
|
29374
|
+
},
|
|
29375
|
+
this.autoLink,
|
|
29005
29376
|
];
|
|
29006
29377
|
}
|
|
29007
29378
|
/**
|
|
@@ -29048,8 +29419,51 @@ var AutoFormatPlugin = /** @class */ (function () {
|
|
|
29048
29419
|
}
|
|
29049
29420
|
}
|
|
29050
29421
|
};
|
|
29422
|
+
AutoFormatPlugin.prototype.handleKeyboardEvents = function (editor, features) {
|
|
29423
|
+
var formatOptions = {
|
|
29424
|
+
changeSource: '',
|
|
29425
|
+
apiName: '',
|
|
29426
|
+
getChangeData: undefined,
|
|
29427
|
+
};
|
|
29428
|
+
(0, roosterjs_content_model_api_1.formatTextSegmentBeforeSelectionMarker)(editor, function (model, previousSegment, paragraph, _markerFormat, context) {
|
|
29429
|
+
var e_1, _a;
|
|
29430
|
+
var featureApplied = undefined;
|
|
29431
|
+
var _loop_1 = function (feature) {
|
|
29432
|
+
if (feature.enabled) {
|
|
29433
|
+
var result_1 = feature.transformFunction(model, previousSegment, paragraph, context);
|
|
29434
|
+
if (result_1) {
|
|
29435
|
+
if (typeof result_1 !== 'boolean') {
|
|
29436
|
+
formatOptions.getChangeData = function () { return result_1; };
|
|
29437
|
+
}
|
|
29438
|
+
featureApplied = feature;
|
|
29439
|
+
return "break";
|
|
29440
|
+
}
|
|
29441
|
+
}
|
|
29442
|
+
};
|
|
29443
|
+
try {
|
|
29444
|
+
for (var features_1 = (0, tslib_1.__values)(features), features_1_1 = features_1.next(); !features_1_1.done; features_1_1 = features_1.next()) {
|
|
29445
|
+
var feature = features_1_1.value;
|
|
29446
|
+
var state_1 = _loop_1(feature);
|
|
29447
|
+
if (state_1 === "break")
|
|
29448
|
+
break;
|
|
29449
|
+
}
|
|
29450
|
+
}
|
|
29451
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
29452
|
+
finally {
|
|
29453
|
+
try {
|
|
29454
|
+
if (features_1_1 && !features_1_1.done && (_a = features_1.return)) _a.call(features_1);
|
|
29455
|
+
}
|
|
29456
|
+
finally { if (e_1) throw e_1.error; }
|
|
29457
|
+
}
|
|
29458
|
+
if (featureApplied) {
|
|
29459
|
+
formatOptions.changeSource = featureApplied.changeSource;
|
|
29460
|
+
formatOptions.apiName = featureApplied.apiName;
|
|
29461
|
+
}
|
|
29462
|
+
return !!featureApplied;
|
|
29463
|
+
}, formatOptions);
|
|
29464
|
+
return formatOptions;
|
|
29465
|
+
};
|
|
29051
29466
|
AutoFormatPlugin.prototype.handleEditorInputEvent = function (editor, event) {
|
|
29052
|
-
var _this = this;
|
|
29053
29467
|
var rawEvent = event.rawEvent;
|
|
29054
29468
|
var selection = editor.getDOMSelection();
|
|
29055
29469
|
if (rawEvent.inputType === 'insertText' &&
|
|
@@ -29058,53 +29472,12 @@ var AutoFormatPlugin = /** @class */ (function () {
|
|
|
29058
29472
|
selection.range.collapsed) {
|
|
29059
29473
|
switch (rawEvent.data) {
|
|
29060
29474
|
case ' ':
|
|
29061
|
-
|
|
29062
|
-
changeSource: '',
|
|
29063
|
-
apiName: '',
|
|
29064
|
-
getChangeData: undefined,
|
|
29065
|
-
};
|
|
29066
|
-
(0, roosterjs_content_model_api_1.formatTextSegmentBeforeSelectionMarker)(editor, function (model, previousSegment, paragraph, _markerFormat, context) {
|
|
29067
|
-
var e_1, _a;
|
|
29068
|
-
var formatApplied = undefined;
|
|
29069
|
-
var _loop_1 = function (feature) {
|
|
29070
|
-
if (feature.enabled) {
|
|
29071
|
-
var result_1 = feature.transformFunction(model, previousSegment, paragraph, context);
|
|
29072
|
-
if (result_1) {
|
|
29073
|
-
if (typeof result_1 !== 'boolean') {
|
|
29074
|
-
formatOptions_1.getChangeData = function () { return result_1; };
|
|
29075
|
-
}
|
|
29076
|
-
formatApplied = feature.autoFormat;
|
|
29077
|
-
return "break";
|
|
29078
|
-
}
|
|
29079
|
-
}
|
|
29080
|
-
};
|
|
29081
|
-
try {
|
|
29082
|
-
for (var _b = (0, tslib_1.__values)(_this.features), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
29083
|
-
var feature = _c.value;
|
|
29084
|
-
var state_1 = _loop_1(feature);
|
|
29085
|
-
if (state_1 === "break")
|
|
29086
|
-
break;
|
|
29087
|
-
}
|
|
29088
|
-
}
|
|
29089
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
29090
|
-
finally {
|
|
29091
|
-
try {
|
|
29092
|
-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
29093
|
-
}
|
|
29094
|
-
finally { if (e_1) throw e_1.error; }
|
|
29095
|
-
}
|
|
29096
|
-
if (formatApplied) {
|
|
29097
|
-
formatOptions_1.changeSource = getChangeSource(formatApplied);
|
|
29098
|
-
formatOptions_1.apiName = getApiName(formatApplied);
|
|
29099
|
-
}
|
|
29100
|
-
return !!formatApplied;
|
|
29101
|
-
}, formatOptions_1);
|
|
29475
|
+
this.handleKeyboardEvents(editor, this.features);
|
|
29102
29476
|
break;
|
|
29103
29477
|
}
|
|
29104
29478
|
}
|
|
29105
29479
|
};
|
|
29106
29480
|
AutoFormatPlugin.prototype.handleKeyDownEvent = function (editor, event) {
|
|
29107
|
-
var _this = this;
|
|
29108
29481
|
var rawEvent = event.rawEvent;
|
|
29109
29482
|
if (!rawEvent.defaultPrevented && !event.handledByEditFeature) {
|
|
29110
29483
|
switch (rawEvent.key) {
|
|
@@ -29115,34 +29488,21 @@ var AutoFormatPlugin = /** @class */ (function () {
|
|
|
29115
29488
|
break;
|
|
29116
29489
|
case 'Tab':
|
|
29117
29490
|
if (!rawEvent.shiftKey) {
|
|
29118
|
-
|
|
29119
|
-
|
|
29120
|
-
|
|
29121
|
-
|
|
29122
|
-
shouldList = (0, keyboardListTrigger_1.keyboardListTrigger)(model, paragraph, context, autoBullet, autoNumbering, removeListMargins);
|
|
29123
|
-
context.canUndoByBackspace = shouldList;
|
|
29124
|
-
}
|
|
29125
|
-
if (shouldList) {
|
|
29126
|
-
event.rawEvent.preventDefault();
|
|
29127
|
-
}
|
|
29128
|
-
return shouldList;
|
|
29129
|
-
}, {
|
|
29130
|
-
changeSource: roosterjs_content_model_dom_1.ChangeSource.AutoFormat,
|
|
29131
|
-
apiName: 'autoToggleList',
|
|
29132
|
-
});
|
|
29491
|
+
var eventHandled_1 = this.handleKeyboardEvents(editor, this.tabFeatures);
|
|
29492
|
+
if (eventHandled_1.apiName == 'autoToggleList') {
|
|
29493
|
+
event.rawEvent.preventDefault();
|
|
29494
|
+
}
|
|
29133
29495
|
}
|
|
29134
29496
|
break;
|
|
29135
29497
|
case 'Enter':
|
|
29136
|
-
this.
|
|
29498
|
+
var eventHandled = this.handleKeyboardEvents(editor, this.enterFeatures);
|
|
29499
|
+
if (eventHandled.apiName == 'autoHorizontalLine') {
|
|
29500
|
+
event.rawEvent.preventDefault();
|
|
29501
|
+
}
|
|
29137
29502
|
break;
|
|
29138
29503
|
}
|
|
29139
29504
|
}
|
|
29140
29505
|
};
|
|
29141
|
-
AutoFormatPlugin.prototype.handleEnterKey = function (editor, event) {
|
|
29142
|
-
if (this.options.autoHorizontalLine) {
|
|
29143
|
-
(0, checkAndInsertHorizontalLine_1.checkAndInsertHorizontalLine)(editor, event);
|
|
29144
|
-
}
|
|
29145
|
-
};
|
|
29146
29506
|
AutoFormatPlugin.prototype.handleContentChangedEvent = function (editor, event) {
|
|
29147
29507
|
var _a = this.options, autoLink = _a.autoLink, autoTel = _a.autoTel, autoMailto = _a.autoMailto;
|
|
29148
29508
|
if (event.source == 'Paste' && (autoLink || autoTel || autoMailto)) {
|
|
@@ -29156,16 +29516,6 @@ var AutoFormatPlugin = /** @class */ (function () {
|
|
|
29156
29516
|
return AutoFormatPlugin;
|
|
29157
29517
|
}());
|
|
29158
29518
|
exports.AutoFormatPlugin = AutoFormatPlugin;
|
|
29159
|
-
var getApiName = function (autoFormat) {
|
|
29160
|
-
return autoFormat == 'list' ? 'autoToggleList' : autoFormat == 'hyphen' ? 'autoHyphen' : '';
|
|
29161
|
-
};
|
|
29162
|
-
var getChangeSource = function (autoFormat) {
|
|
29163
|
-
return autoFormat == 'list' || autoFormat == 'hyphen'
|
|
29164
|
-
? roosterjs_content_model_dom_1.ChangeSource.AutoFormat
|
|
29165
|
-
: autoFormat == 'link'
|
|
29166
|
-
? roosterjs_content_model_dom_1.ChangeSource.AutoLink
|
|
29167
|
-
: '';
|
|
29168
|
-
};
|
|
29169
29519
|
var createAnchor = function (url, text) {
|
|
29170
29520
|
var anchor = document.createElement('a');
|
|
29171
29521
|
anchor.href = url;
|
|
@@ -29187,7 +29537,6 @@ var createAnchor = function (url, text) {
|
|
|
29187
29537
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
29188
29538
|
exports.checkAndInsertHorizontalLine = exports.insertHorizontalLineIntoModel = void 0;
|
|
29189
29539
|
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
29190
|
-
var roosterjs_content_model_api_1 = __webpack_require__(/*! roosterjs-content-model-api */ "./packages/roosterjs-content-model-api/lib/index.ts");
|
|
29191
29540
|
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
29192
29541
|
var HorizontalLineTriggerCharacters = [
|
|
29193
29542
|
'-',
|
|
@@ -29251,28 +29600,22 @@ exports.insertHorizontalLineIntoModel = insertHorizontalLineIntoModel;
|
|
|
29251
29600
|
* @param event The keydown event
|
|
29252
29601
|
* @returns True if horizontal line is inserted, otherwise false
|
|
29253
29602
|
*/
|
|
29254
|
-
function
|
|
29255
|
-
|
|
29256
|
-
|
|
29257
|
-
|
|
29258
|
-
|
|
29259
|
-
|
|
29603
|
+
var checkAndInsertHorizontalLine = function (model, paragraph, context) {
|
|
29604
|
+
var allText = paragraph.segments.reduce(function (acc, segment) { return (segment.segmentType === 'Text' ? acc + segment.text : acc); }, '');
|
|
29605
|
+
// At least 3 characters are needed to trigger horizontal line
|
|
29606
|
+
if (allText.length < 3) {
|
|
29607
|
+
return false;
|
|
29608
|
+
}
|
|
29609
|
+
return HorizontalLineTriggerCharacters.some(function (triggerCharacter) {
|
|
29610
|
+
var shouldFormat = allText.split('').every(function (char) { return char === triggerCharacter; });
|
|
29611
|
+
if (shouldFormat) {
|
|
29612
|
+
paragraph.segments = paragraph.segments.filter(function (s) { return s.segmentType != 'Text'; });
|
|
29613
|
+
insertHorizontalLineIntoModel(model, context, triggerCharacter);
|
|
29614
|
+
context.canUndoByBackspace = true;
|
|
29260
29615
|
}
|
|
29261
|
-
return
|
|
29262
|
-
var shouldFormat = allText.split('').every(function (char) { return char === triggerCharacter; });
|
|
29263
|
-
if (shouldFormat) {
|
|
29264
|
-
para.segments = para.segments.filter(function (s) { return s.segmentType != 'Text'; });
|
|
29265
|
-
insertHorizontalLineIntoModel(model, context, triggerCharacter);
|
|
29266
|
-
event.rawEvent.preventDefault();
|
|
29267
|
-
context.canUndoByBackspace = true;
|
|
29268
|
-
}
|
|
29269
|
-
return shouldFormat;
|
|
29270
|
-
});
|
|
29271
|
-
}, {
|
|
29272
|
-
changeSource: roosterjs_content_model_dom_1.ChangeSource.AutoFormat,
|
|
29273
|
-
apiName: 'autoHorizontalLine',
|
|
29616
|
+
return shouldFormat;
|
|
29274
29617
|
});
|
|
29275
|
-
}
|
|
29618
|
+
};
|
|
29276
29619
|
exports.checkAndInsertHorizontalLine = checkAndInsertHorizontalLine;
|
|
29277
29620
|
|
|
29278
29621
|
|
|
@@ -30137,8 +30480,24 @@ var EditPlugin = /** @class */ (function () {
|
|
|
30137
30480
|
this.disposer = null;
|
|
30138
30481
|
this.shouldHandleNextInputEvent = false;
|
|
30139
30482
|
this.selectionAfterDelete = null;
|
|
30140
|
-
this.handleNormalEnter = false;
|
|
30483
|
+
this.handleNormalEnter = function (editor) { return false; };
|
|
30141
30484
|
}
|
|
30485
|
+
EditPlugin.prototype.createNormalEnterChecker = function (result) {
|
|
30486
|
+
return result ? function () { return true; } : function () { return false; };
|
|
30487
|
+
};
|
|
30488
|
+
EditPlugin.prototype.getHandleNormalEnter = function (editor) {
|
|
30489
|
+
switch (typeof this.options.shouldHandleEnterKey) {
|
|
30490
|
+
case 'function':
|
|
30491
|
+
return this.options.shouldHandleEnterKey;
|
|
30492
|
+
break;
|
|
30493
|
+
case 'boolean':
|
|
30494
|
+
return this.createNormalEnterChecker(this.options.shouldHandleEnterKey);
|
|
30495
|
+
break;
|
|
30496
|
+
default:
|
|
30497
|
+
return this.createNormalEnterChecker(editor.isExperimentalFeatureEnabled('HandleEnterKey'));
|
|
30498
|
+
break;
|
|
30499
|
+
}
|
|
30500
|
+
};
|
|
30142
30501
|
/**
|
|
30143
30502
|
* Get name of this plugin
|
|
30144
30503
|
*/
|
|
@@ -30154,7 +30513,7 @@ var EditPlugin = /** @class */ (function () {
|
|
|
30154
30513
|
EditPlugin.prototype.initialize = function (editor) {
|
|
30155
30514
|
var _this = this;
|
|
30156
30515
|
this.editor = editor;
|
|
30157
|
-
this.handleNormalEnter = this.editor
|
|
30516
|
+
this.handleNormalEnter = this.getHandleNormalEnter(editor);
|
|
30158
30517
|
if (editor.getEnvironment().isAndroid) {
|
|
30159
30518
|
this.disposer = this.editor.attachDomEvent({
|
|
30160
30519
|
beforeinput: {
|
|
@@ -30261,7 +30620,7 @@ var EditPlugin = /** @class */ (function () {
|
|
|
30261
30620
|
if (!hasCtrlOrMetaKey &&
|
|
30262
30621
|
!event.rawEvent.isComposing &&
|
|
30263
30622
|
event.rawEvent.keyCode !== DEAD_KEY) {
|
|
30264
|
-
(0, keyboardEnter_1.keyboardEnter)(editor, rawEvent, this.handleNormalEnter);
|
|
30623
|
+
(0, keyboardEnter_1.keyboardEnter)(editor, rawEvent, this.handleNormalEnter(editor));
|
|
30265
30624
|
}
|
|
30266
30625
|
break;
|
|
30267
30626
|
default:
|
|
@@ -31670,17 +32029,36 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
|
31670
32029
|
exports.splitParagraph = void 0;
|
|
31671
32030
|
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
31672
32031
|
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
32032
|
+
var DEFAULT_FORMAT_KEYS = [
|
|
32033
|
+
'backgroundColor',
|
|
32034
|
+
'direction',
|
|
32035
|
+
'textAlign',
|
|
32036
|
+
'htmlAlign',
|
|
32037
|
+
'lineHeight',
|
|
32038
|
+
'textIndent',
|
|
32039
|
+
'marginTop',
|
|
32040
|
+
'marginRight',
|
|
32041
|
+
'marginBottom',
|
|
32042
|
+
'marginLeft',
|
|
32043
|
+
'paddingTop',
|
|
32044
|
+
'paddingRight',
|
|
32045
|
+
'paddingBottom',
|
|
32046
|
+
'paddingLeft',
|
|
32047
|
+
];
|
|
31673
32048
|
/**
|
|
31674
32049
|
* @internal
|
|
31675
32050
|
* Split the given paragraph from insert point into two paragraphs,
|
|
31676
32051
|
* and move the selection marker to the beginning of the second paragraph
|
|
31677
32052
|
* @param insertPoint The input insert point which includes the paragraph and selection marker
|
|
32053
|
+
* @param formatKeys The format that needs to be copied from the splitted paragraph, if not specified, some default format will be copied
|
|
31678
32054
|
* @returns The new paragraph it created
|
|
31679
32055
|
*/
|
|
31680
|
-
function splitParagraph(insertPoint) {
|
|
32056
|
+
function splitParagraph(insertPoint, formatKeys) {
|
|
31681
32057
|
var _a;
|
|
32058
|
+
if (formatKeys === void 0) { formatKeys = DEFAULT_FORMAT_KEYS; }
|
|
31682
32059
|
var paragraph = insertPoint.paragraph, marker = insertPoint.marker;
|
|
31683
|
-
var
|
|
32060
|
+
var newFormat = createNewFormat(paragraph.format, formatKeys);
|
|
32061
|
+
var newParagraph = (0, roosterjs_content_model_dom_1.createParagraph)(false /*isImplicit*/, newFormat, paragraph.segmentFormat);
|
|
31684
32062
|
var markerIndex = paragraph.segments.indexOf(marker);
|
|
31685
32063
|
var segments = paragraph.segments.splice(markerIndex, paragraph.segments.length - markerIndex);
|
|
31686
32064
|
if (paragraph.segments.length == 0) {
|
|
@@ -31693,6 +32071,26 @@ function splitParagraph(insertPoint) {
|
|
|
31693
32071
|
return newParagraph;
|
|
31694
32072
|
}
|
|
31695
32073
|
exports.splitParagraph = splitParagraph;
|
|
32074
|
+
var createNewFormat = function (format, formatKeys) {
|
|
32075
|
+
var e_1, _a, _b;
|
|
32076
|
+
var newFormat = {};
|
|
32077
|
+
try {
|
|
32078
|
+
for (var formatKeys_1 = (0, tslib_1.__values)(formatKeys), formatKeys_1_1 = formatKeys_1.next(); !formatKeys_1_1.done; formatKeys_1_1 = formatKeys_1.next()) {
|
|
32079
|
+
var key = formatKeys_1_1.value;
|
|
32080
|
+
if (format[key]) {
|
|
32081
|
+
newFormat = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, newFormat), (_b = {}, _b[key] = format[key], _b));
|
|
32082
|
+
}
|
|
32083
|
+
}
|
|
32084
|
+
}
|
|
32085
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
32086
|
+
finally {
|
|
32087
|
+
try {
|
|
32088
|
+
if (formatKeys_1_1 && !formatKeys_1_1.done && (_a = formatKeys_1.return)) _a.call(formatKeys_1);
|
|
32089
|
+
}
|
|
32090
|
+
finally { if (e_1) throw e_1.error; }
|
|
32091
|
+
}
|
|
32092
|
+
return newFormat;
|
|
32093
|
+
};
|
|
31696
32094
|
|
|
31697
32095
|
|
|
31698
32096
|
/***/ }),
|
|
@@ -32301,9 +32699,6 @@ var ImageEditPlugin = /** @class */ (function () {
|
|
|
32301
32699
|
ImageEditPlugin.prototype.removeImageEditing = function (clonedRoot) {
|
|
32302
32700
|
var images = clonedRoot.querySelectorAll('img');
|
|
32303
32701
|
images.forEach(function (image) {
|
|
32304
|
-
if (image.dataset.isEditing) {
|
|
32305
|
-
delete image.dataset.isEditing;
|
|
32306
|
-
}
|
|
32307
32702
|
if (image.dataset.editingInfo) {
|
|
32308
32703
|
delete image.dataset.editingInfo;
|
|
32309
32704
|
}
|
|
@@ -32374,8 +32769,11 @@ var ImageEditPlugin = /** @class */ (function () {
|
|
|
32374
32769
|
};
|
|
32375
32770
|
ImageEditPlugin.prototype.setContentHandler = function (editor) {
|
|
32376
32771
|
var selection = editor.getDOMSelection();
|
|
32377
|
-
if ((selection === null || selection === void 0 ? void 0 : selection.type) == 'image'
|
|
32378
|
-
|
|
32772
|
+
if ((selection === null || selection === void 0 ? void 0 : selection.type) == 'image') {
|
|
32773
|
+
this.cleanInfo();
|
|
32774
|
+
(0, roosterjs_content_model_dom_1.setImageState)(selection.image, '');
|
|
32775
|
+
this.isEditing = false;
|
|
32776
|
+
this.isCropMode = false;
|
|
32379
32777
|
}
|
|
32380
32778
|
};
|
|
32381
32779
|
ImageEditPlugin.prototype.formatEventHandler = function (event) {
|
|
@@ -32413,7 +32811,7 @@ var ImageEditPlugin = /** @class */ (function () {
|
|
|
32413
32811
|
var result = false;
|
|
32414
32812
|
if (shouldSelectImage ||
|
|
32415
32813
|
(previousSelectedImage === null || previousSelectedImage === void 0 ? void 0 : previousSelectedImage.image) != (editingImage === null || editingImage === void 0 ? void 0 : editingImage.image) ||
|
|
32416
|
-
(previousSelectedImage === null || previousSelectedImage === void 0 ? void 0 : previousSelectedImage.image.
|
|
32814
|
+
(previousSelectedImage === null || previousSelectedImage === void 0 ? void 0 : previousSelectedImage.image.format.imageState) == findEditingImage_1.EDITING_MARKER ||
|
|
32417
32815
|
isApiOperation) {
|
|
32418
32816
|
var _a = _this, lastSrc_1 = _a.lastSrc, selectedImage_1 = _a.selectedImage, imageEditInfo_1 = _a.imageEditInfo, clonedImage_1 = _a.clonedImage;
|
|
32419
32817
|
if ((_this.isEditing || isApiOperation) &&
|
|
@@ -32426,7 +32824,7 @@ var ImageEditPlugin = /** @class */ (function () {
|
|
|
32426
32824
|
(0, applyChange_1.applyChange)(editor, selectedImage_1, image, imageEditInfo_1, lastSrc_1, _this.wasImageResized || _this.isCropMode, clonedImage_1);
|
|
32427
32825
|
image.isSelected = shouldSelectImage;
|
|
32428
32826
|
image.isSelectedAsImageSelection = shouldSelectImage;
|
|
32429
|
-
|
|
32827
|
+
image.format.imageState = undefined;
|
|
32430
32828
|
if ((selection === null || selection === void 0 ? void 0 : selection.type) == 'range' && !selection.range.collapsed) {
|
|
32431
32829
|
var selectedParagraphs = (0, roosterjs_content_model_dom_1.getSelectedParagraphs)(model, true);
|
|
32432
32830
|
var isImageInRange = selectedParagraphs.some(function (paragraph) {
|
|
@@ -32454,7 +32852,7 @@ var ImageEditPlugin = /** @class */ (function () {
|
|
|
32454
32852
|
(0, roosterjs_content_model_dom_1.mutateSegment)(editingImage.paragraph, editingImage.image, function (image) {
|
|
32455
32853
|
editingImageModel = image;
|
|
32456
32854
|
_this.imageEditInfo = (0, updateImageEditInfo_1.updateImageEditInfo)(image, selection.image);
|
|
32457
|
-
image.
|
|
32855
|
+
image.format.imageState = 'isEditing';
|
|
32458
32856
|
});
|
|
32459
32857
|
result = true;
|
|
32460
32858
|
}
|
|
@@ -32465,7 +32863,7 @@ var ImageEditPlugin = /** @class */ (function () {
|
|
|
32465
32863
|
if (!isApiOperation &&
|
|
32466
32864
|
editingImageModel &&
|
|
32467
32865
|
editingImageModel == model &&
|
|
32468
|
-
editingImageModel.
|
|
32866
|
+
editingImageModel.format.imageState == findEditingImage_1.EDITING_MARKER &&
|
|
32469
32867
|
(0, roosterjs_content_model_dom_1.isNodeOfType)(node, 'ELEMENT_NODE') &&
|
|
32470
32868
|
(0, roosterjs_content_model_dom_1.isElementOfType)(node, 'img')) {
|
|
32471
32869
|
if (isCropMode) {
|
|
@@ -33556,9 +33954,13 @@ exports.doubleCheckResize = doubleCheckResize;
|
|
|
33556
33954
|
"use strict";
|
|
33557
33955
|
|
|
33558
33956
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
33559
|
-
exports.findEditingImage = void 0;
|
|
33957
|
+
exports.findEditingImage = exports.EDITING_MARKER = void 0;
|
|
33560
33958
|
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
33561
33959
|
var roosterjs_content_model_api_1 = __webpack_require__(/*! roosterjs-content-model-api */ "./packages/roosterjs-content-model-api/lib/index.ts");
|
|
33960
|
+
/**
|
|
33961
|
+
* @internal
|
|
33962
|
+
*/
|
|
33963
|
+
exports.EDITING_MARKER = 'isEditing';
|
|
33562
33964
|
/**
|
|
33563
33965
|
* @internal
|
|
33564
33966
|
*/
|
|
@@ -33570,7 +33972,8 @@ function findEditingImage(group, imageId) {
|
|
|
33570
33972
|
for (var _b = (0, tslib_1.__values)(paragraph.segments), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
33571
33973
|
var segment = _c.value;
|
|
33572
33974
|
if (segment.segmentType == 'Image' &&
|
|
33573
|
-
((imageId && segment.format.id == imageId) ||
|
|
33975
|
+
((imageId && segment.format.id == imageId) ||
|
|
33976
|
+
segment.format.imageState == exports.EDITING_MARKER)) {
|
|
33574
33977
|
imageAndParagraph = { image: segment, paragraph: paragraph };
|
|
33575
33978
|
return true;
|
|
33576
33979
|
}
|
|
@@ -34688,9 +35091,9 @@ var addParser_1 = __webpack_require__(/*! ./utils/addParser */ "./packages/roost
|
|
|
34688
35091
|
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
34689
35092
|
var chainSanitizerCallback_1 = __webpack_require__(/*! ./utils/chainSanitizerCallback */ "./packages/roosterjs-content-model-plugins/lib/paste/utils/chainSanitizerCallback.ts");
|
|
34690
35093
|
var DefaultSanitizers_1 = __webpack_require__(/*! ./DefaultSanitizers */ "./packages/roosterjs-content-model-plugins/lib/paste/DefaultSanitizers.ts");
|
|
34691
|
-
var deprecatedColorParser_1 = __webpack_require__(/*! ./
|
|
35094
|
+
var deprecatedColorParser_1 = __webpack_require__(/*! ./parsers/deprecatedColorParser */ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/deprecatedColorParser.ts");
|
|
34692
35095
|
var getPasteSource_1 = __webpack_require__(/*! ./pasteSourceValidations/getPasteSource */ "./packages/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/getPasteSource.ts");
|
|
34693
|
-
var linkParser_1 = __webpack_require__(/*! ./
|
|
35096
|
+
var linkParser_1 = __webpack_require__(/*! ./parsers/linkParser */ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/linkParser.ts");
|
|
34694
35097
|
var constants_1 = __webpack_require__(/*! ./pasteSourceValidations/constants */ "./packages/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/constants.ts");
|
|
34695
35098
|
var processPastedContentFromExcel_1 = __webpack_require__(/*! ./Excel/processPastedContentFromExcel */ "./packages/roosterjs-content-model-plugins/lib/paste/Excel/processPastedContentFromExcel.ts");
|
|
34696
35099
|
var processPastedContentFromOneNote_1 = __webpack_require__(/*! ./oneNote/processPastedContentFromOneNote */ "./packages/roosterjs-content-model-plugins/lib/paste/oneNote/processPastedContentFromOneNote.ts");
|
|
@@ -34761,7 +35164,7 @@ var PastePlugin = /** @class */ (function () {
|
|
|
34761
35164
|
var pasteType = event.pasteType;
|
|
34762
35165
|
switch (pasteSource) {
|
|
34763
35166
|
case 'wordDesktop':
|
|
34764
|
-
(0, processPastedContentFromWordDesktop_1.processPastedContentFromWordDesktop)(event
|
|
35167
|
+
(0, processPastedContentFromWordDesktop_1.processPastedContentFromWordDesktop)(event);
|
|
34765
35168
|
break;
|
|
34766
35169
|
case 'wacComponents':
|
|
34767
35170
|
(0, processPastedContentWacComponents_1.processPastedContentWacComponents)(event);
|
|
@@ -34853,22 +35256,153 @@ function tableBorderParser(format, element) {
|
|
|
34853
35256
|
|
|
34854
35257
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
34855
35258
|
exports.processPastedContentFromPowerPoint = void 0;
|
|
35259
|
+
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
35260
|
+
var addParser_1 = __webpack_require__(/*! ../utils/addParser */ "./packages/roosterjs-content-model-plugins/lib/paste/utils/addParser.ts");
|
|
35261
|
+
var customListUtils_1 = __webpack_require__(/*! ../utils/customListUtils */ "./packages/roosterjs-content-model-plugins/lib/paste/utils/customListUtils.ts");
|
|
35262
|
+
var removeNegativeTextIndentParser_1 = __webpack_require__(/*! ../parsers/removeNegativeTextIndentParser */ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/removeNegativeTextIndentParser.ts");
|
|
35263
|
+
var setProcessor_1 = __webpack_require__(/*! ../utils/setProcessor */ "./packages/roosterjs-content-model-plugins/lib/paste/utils/setProcessor.ts");
|
|
34856
35264
|
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
35265
|
+
var BulletSelector = '* > span > span[style*=mso-special-format]';
|
|
35266
|
+
var MsOfficeSpecialFormat = 'mso-special-format';
|
|
35267
|
+
var CssStyleKey = 'style';
|
|
35268
|
+
var MsoSpecialFormatRegex = /mso-special-format:\s*([^;]*)/;
|
|
35269
|
+
var clearListItemStyles = function (format) {
|
|
35270
|
+
delete format.textAlign;
|
|
35271
|
+
delete format.marginLeft;
|
|
35272
|
+
delete format.paddingLeft;
|
|
35273
|
+
};
|
|
34857
35274
|
/**
|
|
34858
35275
|
* @internal
|
|
34859
35276
|
* Convert pasted content from PowerPoint
|
|
34860
35277
|
* @param event The BeforePaste event
|
|
34861
35278
|
*/
|
|
34862
35279
|
function processPastedContentFromPowerPoint(event, domCreator) {
|
|
34863
|
-
var fragment = event.fragment, clipboardData = event.clipboardData;
|
|
35280
|
+
var fragment = event.fragment, clipboardData = event.clipboardData, domToModelOption = event.domToModelOption;
|
|
34864
35281
|
if (clipboardData.html && !clipboardData.text && clipboardData.image) {
|
|
34865
35282
|
// It is possible that PowerPoint copied both image and HTML but not plain text.
|
|
34866
35283
|
// We always prefer HTML if any.
|
|
34867
35284
|
var doc = domCreator.htmlToDOM(clipboardData.html);
|
|
34868
35285
|
(0, roosterjs_content_model_dom_1.moveChildNodes)(fragment, doc === null || doc === void 0 ? void 0 : doc.body);
|
|
34869
35286
|
}
|
|
35287
|
+
(0, addParser_1.addParser)(domToModelOption, 'block', removeNegativeTextIndentParser_1.removeNegativeTextIndentParser);
|
|
35288
|
+
(0, setProcessor_1.setProcessor)(domToModelOption, 'element', function (group, element, context) {
|
|
35289
|
+
var _a, _b;
|
|
35290
|
+
var style = element.getAttribute(CssStyleKey) || '';
|
|
35291
|
+
// If the element is the bullet element, just ignore it, otherwise we will see an extra bullet in the list
|
|
35292
|
+
if (style.includes(MsOfficeSpecialFormat) && context.listFormat.levels.length > 0) {
|
|
35293
|
+
return;
|
|
35294
|
+
}
|
|
35295
|
+
var bulletElement = element.querySelector(BulletSelector);
|
|
35296
|
+
if (bulletElement) {
|
|
35297
|
+
var _c = extractPowerPointListInfo(element, bulletElement), depth = _c.depth, unorderedBulletType = _c.unorderedBulletType, orderedBulletType = _c.orderedBulletType, startNumberOverrideOrBullet_1 = _c.startNumberOverrideOrBullet, isOrderedList = _c.isOrderedList, isNewList_1 = _c.isNewList;
|
|
35298
|
+
// Setup the listformat with the metadata extracted from the bullet element
|
|
35299
|
+
(0, customListUtils_1.setupListFormat)(isOrderedList ? 'OL' : 'UL', element, context, depth, context.listFormat, group, [clearListItemStyles]);
|
|
35300
|
+
// Set the metadata for the list item, which will be used to set the correct bullet style type
|
|
35301
|
+
var listMetadata = {
|
|
35302
|
+
unorderedStyleType: !isOrderedList && unorderedBulletType
|
|
35303
|
+
? roosterjs_content_model_dom_1.BulletListType[unorderedBulletType]
|
|
35304
|
+
: undefined,
|
|
35305
|
+
orderedStyleType: isOrderedList && orderedBulletType
|
|
35306
|
+
? roosterjs_content_model_dom_1.NumberingListType[orderedBulletType]
|
|
35307
|
+
: undefined,
|
|
35308
|
+
};
|
|
35309
|
+
// Process the Div element as a list item.
|
|
35310
|
+
(0, customListUtils_1.processAsListItem)(context, element, group, listMetadata, function (listItem) {
|
|
35311
|
+
var _a;
|
|
35312
|
+
var currentMarkerSize = listItem.formatHolder.format.fontSize;
|
|
35313
|
+
var bulletElementSize = (_a = bulletElement.parentElement) === null || _a === void 0 ? void 0 : _a.style.fontSize;
|
|
35314
|
+
listItem.formatHolder.format.fontSize = bulletElementSize || currentMarkerSize;
|
|
35315
|
+
if (isNewList_1) {
|
|
35316
|
+
listItem.levels[listItem.levels.length - 1].format.startNumberOverride = parseInt(startNumberOverrideOrBullet_1);
|
|
35317
|
+
}
|
|
35318
|
+
clearListItemStyles(listItem.levels[listItem.levels.length - 1].format);
|
|
35319
|
+
clearListItemStyles(listItem.format);
|
|
35320
|
+
});
|
|
35321
|
+
}
|
|
35322
|
+
else {
|
|
35323
|
+
(_b = (_a = context.defaultElementProcessors).element) === null || _b === void 0 ? void 0 : _b.call(_a, group, element, context);
|
|
35324
|
+
}
|
|
35325
|
+
});
|
|
34870
35326
|
}
|
|
34871
35327
|
exports.processPastedContentFromPowerPoint = processPastedContentFromPowerPoint;
|
|
35328
|
+
/**
|
|
35329
|
+
* Extract list information from PowerPoint pasted content
|
|
35330
|
+
*
|
|
35331
|
+
* The lists from PowerPoint are represent as:
|
|
35332
|
+
*
|
|
35333
|
+
* - The class 0# represents the depth of the list, if the list is in the first level, the class attribute wont be present.
|
|
35334
|
+
* - The mso-special-format style represents the type of bullet and the start of the list.
|
|
35335
|
+
* The first part of the mso-special-format is the type of bullet, and the second part is the start of the list.
|
|
35336
|
+
* - All the items that are in the same list have the same mso-special-format style. Which we are leveraging to identify when a list is new or part of the existing list thread.
|
|
35337
|
+
*
|
|
35338
|
+
* @example
|
|
35339
|
+
* ` <div class="O1" style="...">
|
|
35340
|
+
<span style="font-size: 5pt"
|
|
35341
|
+
><span style="mso-special-format: 'numbullet6\,1'; font-family: +mj-lt"
|
|
35342
|
+
>i.</span
|
|
35343
|
+
></span
|
|
35344
|
+
><span style="...;">123</span>
|
|
35345
|
+
</div> `
|
|
35346
|
+
*
|
|
35347
|
+
* @param element The element to extract list information from
|
|
35348
|
+
* @param bulletElement The bullet element to extract list information from
|
|
35349
|
+
* @returns The extracted list information
|
|
35350
|
+
*/
|
|
35351
|
+
function extractPowerPointListInfo(element, bulletElement) {
|
|
35352
|
+
var className = element.className.substring(1) || '0';
|
|
35353
|
+
var depth = parseInt(className) + 1;
|
|
35354
|
+
var style = bulletElement.getAttribute(CssStyleKey) || '';
|
|
35355
|
+
var msoSpecialFormat = style.match(MsoSpecialFormatRegex);
|
|
35356
|
+
var _a = (0, tslib_1.__read)((msoSpecialFormat === null || msoSpecialFormat === void 0 ? void 0 : msoSpecialFormat[1].replace('"', '').split('\\,')) || [], 2), bulletTypeHtml = _a[0], startNumberOverrideOrBullet = _a[1];
|
|
35357
|
+
var isOrderedList = OrderedListStyleMap.has(bulletTypeHtml);
|
|
35358
|
+
var unorderedBulletType = UnorderedBullets.get(bulletElement.innerText);
|
|
35359
|
+
var orderedBulletType = OrderedListStyleMap.get(bulletTypeHtml);
|
|
35360
|
+
return {
|
|
35361
|
+
depth: depth,
|
|
35362
|
+
unorderedBulletType: unorderedBulletType,
|
|
35363
|
+
orderedBulletType: orderedBulletType,
|
|
35364
|
+
startNumberOverrideOrBullet: startNumberOverrideOrBullet,
|
|
35365
|
+
isOrderedList: isOrderedList,
|
|
35366
|
+
isNewList: isOrderedList &&
|
|
35367
|
+
!!orderedBulletType &&
|
|
35368
|
+
bulletElement.innerText ===
|
|
35369
|
+
getPptListStart(orderedBulletType, startNumberOverrideOrBullet),
|
|
35370
|
+
};
|
|
35371
|
+
}
|
|
35372
|
+
var UnorderedBullets = new Map([
|
|
35373
|
+
['•', 'Disc'],
|
|
35374
|
+
['o', 'Circle'],
|
|
35375
|
+
['§', 'Square'],
|
|
35376
|
+
['q', 'BoxShadow'],
|
|
35377
|
+
['v', 'Xrhombus'],
|
|
35378
|
+
['Ø', 'ShortArrow'],
|
|
35379
|
+
['ü', 'CheckMark'],
|
|
35380
|
+
]);
|
|
35381
|
+
var OrderedListStyleMap = new Map([
|
|
35382
|
+
['numbullet1', 'UpperAlpha'],
|
|
35383
|
+
['numbullet2', 'DecimalParenthesis'],
|
|
35384
|
+
['numbullet3', 'Decimal'],
|
|
35385
|
+
['numbullet7', 'UpperRoman'],
|
|
35386
|
+
['numbullet9', 'LowerAlphaParenthesis'],
|
|
35387
|
+
['numbullet0', 'LowerAlpha'],
|
|
35388
|
+
['numbullet6', 'LowerRoman'],
|
|
35389
|
+
]);
|
|
35390
|
+
function getPptListStart(orderedBulletType, startNumberOverride) {
|
|
35391
|
+
var bullet = (0, roosterjs_content_model_dom_1.getOrderedListNumberStr)(roosterjs_content_model_dom_1.NumberingListType[orderedBulletType], parseInt(startNumberOverride));
|
|
35392
|
+
switch (orderedBulletType) {
|
|
35393
|
+
case 'Decimal':
|
|
35394
|
+
case 'UpperAlpha':
|
|
35395
|
+
case 'LowerAlpha':
|
|
35396
|
+
case 'UpperRoman':
|
|
35397
|
+
case 'LowerRoman':
|
|
35398
|
+
return bullet + '.';
|
|
35399
|
+
case 'DecimalParenthesis':
|
|
35400
|
+
case 'LowerAlphaParenthesis':
|
|
35401
|
+
return bullet + ')';
|
|
35402
|
+
default:
|
|
35403
|
+
return undefined;
|
|
35404
|
+
}
|
|
35405
|
+
}
|
|
34872
35406
|
|
|
34873
35407
|
|
|
34874
35408
|
/***/ }),
|
|
@@ -35164,6 +35698,25 @@ exports.getStyleMetadata = void 0;
|
|
|
35164
35698
|
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
35165
35699
|
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
35166
35700
|
var FORMATING_REGEX = /[\n\t'{}"]+/g;
|
|
35701
|
+
var STYLE_TAG = '<style>';
|
|
35702
|
+
var STYLE_TAG_END = '</style>';
|
|
35703
|
+
function extractStyleTagsFromHtml(htmlContent) {
|
|
35704
|
+
var styles = [];
|
|
35705
|
+
var lowerCaseHtmlContent = htmlContent.toLowerCase();
|
|
35706
|
+
var styleStartIndex = lowerCaseHtmlContent.indexOf(STYLE_TAG);
|
|
35707
|
+
while (styleStartIndex >= 0) {
|
|
35708
|
+
var styleEndIndex = lowerCaseHtmlContent.indexOf(STYLE_TAG_END, styleStartIndex);
|
|
35709
|
+
if (styleEndIndex >= 0) {
|
|
35710
|
+
var styleContent = htmlContent.substring(styleStartIndex + STYLE_TAG.length, styleEndIndex).trim();
|
|
35711
|
+
styles.push(styleContent);
|
|
35712
|
+
styleStartIndex = lowerCaseHtmlContent.indexOf(STYLE_TAG, styleEndIndex);
|
|
35713
|
+
}
|
|
35714
|
+
else {
|
|
35715
|
+
break;
|
|
35716
|
+
}
|
|
35717
|
+
}
|
|
35718
|
+
return styles;
|
|
35719
|
+
}
|
|
35167
35720
|
/**
|
|
35168
35721
|
* @internal
|
|
35169
35722
|
* Word Desktop content has a style tag that contains data for the lists.
|
|
@@ -35184,12 +35737,10 @@ var FORMATING_REGEX = /[\n\t'{}"]+/g;
|
|
|
35184
35737
|
* 5. Save data in record and only use the required information.
|
|
35185
35738
|
*
|
|
35186
35739
|
*/
|
|
35187
|
-
function getStyleMetadata(ev
|
|
35740
|
+
function getStyleMetadata(ev) {
|
|
35188
35741
|
var metadataMap = new Map();
|
|
35189
|
-
var
|
|
35190
|
-
|
|
35191
|
-
styles.forEach(function (style) {
|
|
35192
|
-
var text = (style === null || style === void 0 ? void 0 : style.innerHTML.trim()) || '';
|
|
35742
|
+
var headStyles = extractStyleTagsFromHtml(ev.htmlBefore);
|
|
35743
|
+
headStyles.forEach(function (text) {
|
|
35193
35744
|
var index = 0;
|
|
35194
35745
|
var _loop_1 = function () {
|
|
35195
35746
|
var indexAt = text.indexOf('@', index + 1);
|
|
@@ -35256,7 +35807,7 @@ var getStyleMetadata_1 = __webpack_require__(/*! ./getStyleMetadata */ "./packag
|
|
|
35256
35807
|
var getStyles_1 = __webpack_require__(/*! ../utils/getStyles */ "./packages/roosterjs-content-model-plugins/lib/paste/utils/getStyles.ts");
|
|
35257
35808
|
var processWordComments_1 = __webpack_require__(/*! ./processWordComments */ "./packages/roosterjs-content-model-plugins/lib/paste/WordDesktop/processWordComments.ts");
|
|
35258
35809
|
var processWordLists_1 = __webpack_require__(/*! ./processWordLists */ "./packages/roosterjs-content-model-plugins/lib/paste/WordDesktop/processWordLists.ts");
|
|
35259
|
-
var removeNegativeTextIndentParser_1 = __webpack_require__(/*!
|
|
35810
|
+
var removeNegativeTextIndentParser_1 = __webpack_require__(/*! ../parsers/removeNegativeTextIndentParser */ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/removeNegativeTextIndentParser.ts");
|
|
35260
35811
|
var setProcessor_1 = __webpack_require__(/*! ../utils/setProcessor */ "./packages/roosterjs-content-model-plugins/lib/paste/utils/setProcessor.ts");
|
|
35261
35812
|
var PERCENTAGE_REGEX = /%/;
|
|
35262
35813
|
// Default line height in browsers according to https://developer.mozilla.org/en-US/docs/Web/CSS/line-height#normal
|
|
@@ -35266,8 +35817,8 @@ var DEFAULT_BROWSER_LINE_HEIGHT_PERCENTAGE = 1.2;
|
|
|
35266
35817
|
* Handles Pasted content when source is Word Desktop
|
|
35267
35818
|
* @param ev BeforePasteEvent
|
|
35268
35819
|
*/
|
|
35269
|
-
function processPastedContentFromWordDesktop(ev
|
|
35270
|
-
var metadataMap = (0, getStyleMetadata_1.getStyleMetadata)(ev
|
|
35820
|
+
function processPastedContentFromWordDesktop(ev) {
|
|
35821
|
+
var metadataMap = (0, getStyleMetadata_1.getStyleMetadata)(ev);
|
|
35271
35822
|
(0, setProcessor_1.setProcessor)(ev.domToModelOption, 'element', wordDesktopElementProcessor(metadataMap));
|
|
35272
35823
|
(0, addParser_1.addParser)(ev.domToModelOption, 'block', adjustPercentileLineHeight);
|
|
35273
35824
|
(0, addParser_1.addParser)(ev.domToModelOption, 'block', removeNegativeTextIndentParser_1.removeNegativeTextIndentParser);
|
|
@@ -35295,12 +35846,12 @@ function adjustPercentileLineHeight(format, element) {
|
|
|
35295
35846
|
(parsedLineHeight / 100)).toString();
|
|
35296
35847
|
}
|
|
35297
35848
|
}
|
|
35298
|
-
function
|
|
35849
|
+
var listLevelParser = function (format, element, _context, defaultStyle) {
|
|
35299
35850
|
if (element.style.marginLeft != '') {
|
|
35300
35851
|
format.marginLeft = defaultStyle.marginLeft;
|
|
35301
35852
|
}
|
|
35302
35853
|
format.marginBottom = undefined;
|
|
35303
|
-
}
|
|
35854
|
+
};
|
|
35304
35855
|
var wordTableParser = function (format) {
|
|
35305
35856
|
var _a;
|
|
35306
35857
|
if ((_a = format.marginLeft) === null || _a === void 0 ? void 0 : _a.startsWith('-')) {
|
|
@@ -35354,8 +35905,8 @@ exports.processWordComments = processWordComments;
|
|
|
35354
35905
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
35355
35906
|
exports.processWordList = void 0;
|
|
35356
35907
|
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
35357
|
-
var removeNegativeTextIndentParser_1 = __webpack_require__(/*! ./removeNegativeTextIndentParser */ "./packages/roosterjs-content-model-plugins/lib/paste/WordDesktop/removeNegativeTextIndentParser.ts");
|
|
35358
35908
|
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
35909
|
+
var customListUtils_1 = __webpack_require__(/*! ../utils/customListUtils */ "./packages/roosterjs-content-model-plugins/lib/paste/utils/customListUtils.ts");
|
|
35359
35910
|
/** Word list metadata style name */
|
|
35360
35911
|
var MSO_LIST = 'mso-list';
|
|
35361
35912
|
var MSO_LIST_IGNORE = 'ignore';
|
|
@@ -35394,28 +35945,28 @@ function processWordList(styles, group, element, context, metadata) {
|
|
|
35394
35945
|
if (wordListStyle && group && typeof listFormat.wordLevel === 'number') {
|
|
35395
35946
|
var wordLevel = listFormat.wordLevel, wordList = listFormat.wordList;
|
|
35396
35947
|
// Retrieve the Fake bullet on the element and also the list type
|
|
35397
|
-
var
|
|
35398
|
-
var
|
|
35948
|
+
var listMetadata_1 = metadata.get(lNumber + ":" + level);
|
|
35949
|
+
var listType_1 = ((_a = listMetadata_1 === null || listMetadata_1 === void 0 ? void 0 : listMetadata_1['mso-level-number-format']) === null || _a === void 0 ? void 0 : _a.toLowerCase()) != BULLET_METADATA
|
|
35399
35950
|
? 'OL'
|
|
35400
35951
|
: 'UL';
|
|
35401
35952
|
// Create the new level of the list item and parse the format
|
|
35402
|
-
|
|
35403
|
-
|
|
35404
|
-
|
|
35405
|
-
// To be in the same level as the provided level metadata.
|
|
35406
|
-
if (wordLevel > listFormat.levels.length) {
|
|
35407
|
-
while (wordLevel != listFormat.levels.length) {
|
|
35408
|
-
listFormat.levels.push(newLevel);
|
|
35409
|
-
}
|
|
35410
|
-
}
|
|
35411
|
-
else {
|
|
35412
|
-
listFormat.levels.splice(wordLevel, listFormat.levels.length - 1);
|
|
35413
|
-
listFormat.levels[wordLevel - 1] = newLevel;
|
|
35414
|
-
}
|
|
35953
|
+
(0, customListUtils_1.setupListFormat)(listType_1, element, context, wordLevel, listFormat, group, [
|
|
35954
|
+
wordListPaddingParser,
|
|
35955
|
+
]);
|
|
35415
35956
|
listFormat.levels[listFormat.levels.length - 1]
|
|
35416
35957
|
.format.wordList = wordList;
|
|
35417
|
-
|
|
35418
|
-
|
|
35958
|
+
var bullet = getBulletFromMetadata(listMetadata_1, listType_1);
|
|
35959
|
+
var listFormatMetadata = bullet
|
|
35960
|
+
? {
|
|
35961
|
+
unorderedStyleType: listType_1 == 'UL' ? bullet : undefined,
|
|
35962
|
+
orderedStyleType: listType_1 == 'OL' ? bullet : undefined,
|
|
35963
|
+
}
|
|
35964
|
+
: undefined;
|
|
35965
|
+
(0, customListUtils_1.processAsListItem)(context, element, group, listFormatMetadata, function (listItem) {
|
|
35966
|
+
if (listType_1 == 'OL') {
|
|
35967
|
+
setStartNumber(listItem, context, listMetadata_1);
|
|
35968
|
+
}
|
|
35969
|
+
});
|
|
35419
35970
|
if (listFormat.levels.length > 0 &&
|
|
35420
35971
|
listFormat.wordKnownLevels.get(wordList) != listFormat.levels) {
|
|
35421
35972
|
listFormat.wordKnownLevels.set(wordList, (0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(listFormat.levels), false));
|
|
@@ -35425,28 +35976,6 @@ function processWordList(styles, group, element, context, metadata) {
|
|
|
35425
35976
|
return false;
|
|
35426
35977
|
}
|
|
35427
35978
|
exports.processWordList = processWordList;
|
|
35428
|
-
function processAsListItem(listFormat, context, element, group, listMetadata) {
|
|
35429
|
-
var listLevel = listFormat.levels[listFormat.levels.length - 1];
|
|
35430
|
-
var listType = listLevel.listType;
|
|
35431
|
-
var bullet = getBulletFromMetadata(listMetadata, listType);
|
|
35432
|
-
if (bullet) {
|
|
35433
|
-
(0, roosterjs_content_model_dom_1.updateListMetadata)(listFormat.levels[listFormat.levels.length - 1], function (metadata) {
|
|
35434
|
-
return Object.assign({}, metadata, {
|
|
35435
|
-
unorderedStyleType: listType == 'UL' ? bullet : undefined,
|
|
35436
|
-
orderedStyleType: listType == 'OL' ? bullet : undefined,
|
|
35437
|
-
});
|
|
35438
|
-
});
|
|
35439
|
-
}
|
|
35440
|
-
var listItem = (0, roosterjs_content_model_dom_1.createListItem)(listFormat.levels, context.segmentFormat);
|
|
35441
|
-
(0, roosterjs_content_model_dom_1.parseFormat)(element, context.formatParsers.segmentOnBlock, context.segmentFormat, context);
|
|
35442
|
-
(0, roosterjs_content_model_dom_1.parseFormat)(element, context.formatParsers.listItemElement, listItem.format, context);
|
|
35443
|
-
(0, roosterjs_content_model_dom_1.parseFormat)(element, [removeNegativeTextIndentParser_1.removeNegativeTextIndentParser, nonListElementParser], listItem.format, context);
|
|
35444
|
-
if (listType == 'OL') {
|
|
35445
|
-
setStartNumber(listItem, context, listMetadata);
|
|
35446
|
-
}
|
|
35447
|
-
context.elementProcessors.child(listItem, element, context);
|
|
35448
|
-
(0, roosterjs_content_model_dom_1.addBlock)(group, listItem);
|
|
35449
|
-
}
|
|
35450
35979
|
function getBulletFromMetadata(listMetadata, listType) {
|
|
35451
35980
|
var templateType = (listMetadata === null || listMetadata === void 0 ? void 0 : listMetadata['mso-level-number-format']) || 'decimal';
|
|
35452
35981
|
var templateFinal;
|
|
@@ -35493,14 +36022,6 @@ function getBulletFromMetadata(listMetadata, listType) {
|
|
|
35493
36022
|
}
|
|
35494
36023
|
return (0, roosterjs_content_model_dom_1.getListStyleTypeFromString)(listType, templateFinal);
|
|
35495
36024
|
}
|
|
35496
|
-
function wordListPaddingParser(format, element) {
|
|
35497
|
-
if (element.style.marginLeft && element.style.marginLeft != '0in') {
|
|
35498
|
-
format.paddingLeft = '0px';
|
|
35499
|
-
}
|
|
35500
|
-
if (element.style.marginRight && element.style.marginRight != '0in') {
|
|
35501
|
-
format.paddingRight = '0px';
|
|
35502
|
-
}
|
|
35503
|
-
}
|
|
35504
36025
|
function setStartNumber(listItem, context, listMetadata) {
|
|
35505
36026
|
var _a, _b;
|
|
35506
36027
|
var _c = context.listFormat, listParent = _c.listParent, wordList = _c.wordList, wordKnownLevels = _c.wordKnownLevels, wordLevel = _c.wordLevel, levels = _c.levels;
|
|
@@ -35528,43 +36049,14 @@ function getLastNotEmptyBlock(listParent) {
|
|
|
35528
36049
|
}
|
|
35529
36050
|
return undefined;
|
|
35530
36051
|
}
|
|
35531
|
-
|
|
35532
|
-
if (
|
|
35533
|
-
|
|
35534
|
-
var key = keyInput;
|
|
35535
|
-
var formatKey = keyInput;
|
|
35536
|
-
if (key != 'display' &&
|
|
35537
|
-
format[formatKey] != undefined &&
|
|
35538
|
-
format[formatKey] == defaultStyle[key]) {
|
|
35539
|
-
delete format[formatKey];
|
|
35540
|
-
}
|
|
35541
|
-
});
|
|
36052
|
+
function wordListPaddingParser(format, element) {
|
|
36053
|
+
if (element.style.marginLeft && element.style.marginLeft != '0in') {
|
|
36054
|
+
format.paddingLeft = '0px';
|
|
35542
36055
|
}
|
|
35543
|
-
|
|
35544
|
-
|
|
35545
|
-
|
|
35546
|
-
/***/ }),
|
|
35547
|
-
|
|
35548
|
-
/***/ "./packages/roosterjs-content-model-plugins/lib/paste/WordDesktop/removeNegativeTextIndentParser.ts":
|
|
35549
|
-
/*!**********************************************************************************************************!*\
|
|
35550
|
-
!*** ./packages/roosterjs-content-model-plugins/lib/paste/WordDesktop/removeNegativeTextIndentParser.ts ***!
|
|
35551
|
-
\**********************************************************************************************************/
|
|
35552
|
-
/***/ ((__unused_webpack_module, exports) => {
|
|
35553
|
-
|
|
35554
|
-
"use strict";
|
|
35555
|
-
|
|
35556
|
-
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
35557
|
-
exports.removeNegativeTextIndentParser = void 0;
|
|
35558
|
-
/**
|
|
35559
|
-
* @internal
|
|
35560
|
-
*/
|
|
35561
|
-
var removeNegativeTextIndentParser = function (format, element) {
|
|
35562
|
-
var _a;
|
|
35563
|
-
if ((_a = format.textIndent) === null || _a === void 0 ? void 0 : _a.startsWith('-')) {
|
|
35564
|
-
delete format.textIndent;
|
|
36056
|
+
if (element.style.marginRight && element.style.marginRight != '0in') {
|
|
36057
|
+
format.paddingRight = '0px';
|
|
35565
36058
|
}
|
|
35566
|
-
}
|
|
35567
|
-
exports.removeNegativeTextIndentParser = removeNegativeTextIndentParser;
|
|
36059
|
+
}
|
|
35568
36060
|
|
|
35569
36061
|
|
|
35570
36062
|
/***/ }),
|
|
@@ -35691,6 +36183,98 @@ function ensureOneNoteListContext(cmContext) {
|
|
|
35691
36183
|
}
|
|
35692
36184
|
|
|
35693
36185
|
|
|
36186
|
+
/***/ }),
|
|
36187
|
+
|
|
36188
|
+
/***/ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/deprecatedColorParser.ts":
|
|
36189
|
+
/*!*********************************************************************************************!*\
|
|
36190
|
+
!*** ./packages/roosterjs-content-model-plugins/lib/paste/parsers/deprecatedColorParser.ts ***!
|
|
36191
|
+
\*********************************************************************************************/
|
|
36192
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
36193
|
+
|
|
36194
|
+
"use strict";
|
|
36195
|
+
|
|
36196
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
36197
|
+
exports.deprecatedBorderColorParser = void 0;
|
|
36198
|
+
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
36199
|
+
/**
|
|
36200
|
+
* @internal
|
|
36201
|
+
*/
|
|
36202
|
+
var deprecatedBorderColorParser = function (format) {
|
|
36203
|
+
roosterjs_content_model_dom_1.BorderKeys.forEach(function (key) {
|
|
36204
|
+
var value = format[key];
|
|
36205
|
+
var color = '';
|
|
36206
|
+
if (value &&
|
|
36207
|
+
roosterjs_content_model_dom_1.DeprecatedColors.some(function (dColor) { return value.indexOf(dColor) > -1 && (color = dColor); })) {
|
|
36208
|
+
var newValue = value.replace(color, '').trimRight();
|
|
36209
|
+
format[key] = newValue;
|
|
36210
|
+
}
|
|
36211
|
+
});
|
|
36212
|
+
};
|
|
36213
|
+
exports.deprecatedBorderColorParser = deprecatedBorderColorParser;
|
|
36214
|
+
|
|
36215
|
+
|
|
36216
|
+
/***/ }),
|
|
36217
|
+
|
|
36218
|
+
/***/ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/linkParser.ts":
|
|
36219
|
+
/*!**********************************************************************************!*\
|
|
36220
|
+
!*** ./packages/roosterjs-content-model-plugins/lib/paste/parsers/linkParser.ts ***!
|
|
36221
|
+
\**********************************************************************************/
|
|
36222
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
36223
|
+
|
|
36224
|
+
"use strict";
|
|
36225
|
+
|
|
36226
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
36227
|
+
exports.parseLink = void 0;
|
|
36228
|
+
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
36229
|
+
var SUPPORTED_PROTOCOLS = ['http:', 'https:', 'notes:', 'mailto:', 'onenote:'];
|
|
36230
|
+
var INVALID_LINKS_REGEX = /^file:\/\/\/[a-zA-Z\/]/i;
|
|
36231
|
+
/**
|
|
36232
|
+
* @internal
|
|
36233
|
+
*/
|
|
36234
|
+
var parseLink = function (format, element) {
|
|
36235
|
+
if (!(0, roosterjs_content_model_dom_1.isElementOfType)(element, 'a')) {
|
|
36236
|
+
return;
|
|
36237
|
+
}
|
|
36238
|
+
var url;
|
|
36239
|
+
try {
|
|
36240
|
+
url = new URL(element.href);
|
|
36241
|
+
}
|
|
36242
|
+
catch (_a) {
|
|
36243
|
+
url = undefined;
|
|
36244
|
+
}
|
|
36245
|
+
if ((url && SUPPORTED_PROTOCOLS.indexOf(url.protocol) === -1) ||
|
|
36246
|
+
INVALID_LINKS_REGEX.test(element.href)) {
|
|
36247
|
+
element.removeAttribute('href');
|
|
36248
|
+
format.href = '';
|
|
36249
|
+
}
|
|
36250
|
+
};
|
|
36251
|
+
exports.parseLink = parseLink;
|
|
36252
|
+
|
|
36253
|
+
|
|
36254
|
+
/***/ }),
|
|
36255
|
+
|
|
36256
|
+
/***/ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/removeNegativeTextIndentParser.ts":
|
|
36257
|
+
/*!******************************************************************************************************!*\
|
|
36258
|
+
!*** ./packages/roosterjs-content-model-plugins/lib/paste/parsers/removeNegativeTextIndentParser.ts ***!
|
|
36259
|
+
\******************************************************************************************************/
|
|
36260
|
+
/***/ ((__unused_webpack_module, exports) => {
|
|
36261
|
+
|
|
36262
|
+
"use strict";
|
|
36263
|
+
|
|
36264
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
36265
|
+
exports.removeNegativeTextIndentParser = void 0;
|
|
36266
|
+
/**
|
|
36267
|
+
* @internal
|
|
36268
|
+
*/
|
|
36269
|
+
var removeNegativeTextIndentParser = function (format) {
|
|
36270
|
+
var _a;
|
|
36271
|
+
if ((_a = format.textIndent) === null || _a === void 0 ? void 0 : _a.startsWith('-')) {
|
|
36272
|
+
delete format.textIndent;
|
|
36273
|
+
}
|
|
36274
|
+
};
|
|
36275
|
+
exports.removeNegativeTextIndentParser = removeNegativeTextIndentParser;
|
|
36276
|
+
|
|
36277
|
+
|
|
35694
36278
|
/***/ }),
|
|
35695
36279
|
|
|
35696
36280
|
/***/ "./packages/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/constants.ts":
|
|
@@ -36107,32 +36691,75 @@ exports.chainSanitizerCallback = chainSanitizerCallback;
|
|
|
36107
36691
|
|
|
36108
36692
|
/***/ }),
|
|
36109
36693
|
|
|
36110
|
-
/***/ "./packages/roosterjs-content-model-plugins/lib/paste/utils/
|
|
36111
|
-
|
|
36112
|
-
!*** ./packages/roosterjs-content-model-plugins/lib/paste/utils/
|
|
36113
|
-
|
|
36694
|
+
/***/ "./packages/roosterjs-content-model-plugins/lib/paste/utils/customListUtils.ts":
|
|
36695
|
+
/*!*************************************************************************************!*\
|
|
36696
|
+
!*** ./packages/roosterjs-content-model-plugins/lib/paste/utils/customListUtils.ts ***!
|
|
36697
|
+
\*************************************************************************************/
|
|
36114
36698
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
36115
36699
|
|
|
36116
36700
|
"use strict";
|
|
36117
36701
|
|
|
36118
36702
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
36119
|
-
exports.
|
|
36703
|
+
exports.processAsListItem = exports.setupListFormat = void 0;
|
|
36704
|
+
var removeNegativeTextIndentParser_1 = __webpack_require__(/*! ../parsers/removeNegativeTextIndentParser */ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/removeNegativeTextIndentParser.ts");
|
|
36120
36705
|
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
36706
|
+
var removeMargin = function (format) {
|
|
36707
|
+
delete format.marginLeft;
|
|
36708
|
+
};
|
|
36121
36709
|
/**
|
|
36122
36710
|
* @internal
|
|
36123
36711
|
*/
|
|
36124
|
-
|
|
36125
|
-
|
|
36126
|
-
|
|
36127
|
-
|
|
36128
|
-
|
|
36129
|
-
|
|
36130
|
-
|
|
36131
|
-
|
|
36712
|
+
function setupListFormat(listType, element, context, listDepth, listFormat, group, additionalParsers) {
|
|
36713
|
+
if (additionalParsers === void 0) { additionalParsers = []; }
|
|
36714
|
+
var newLevel = (0, roosterjs_content_model_dom_1.createListLevel)(listType);
|
|
36715
|
+
(0, roosterjs_content_model_dom_1.parseFormat)(element, context.formatParsers.listLevel, newLevel.format, context);
|
|
36716
|
+
(0, roosterjs_content_model_dom_1.parseFormat)(element, additionalParsers.concat(removeMargin), newLevel.format, context);
|
|
36717
|
+
// If the list format is in a different level, update the array so we get the new item
|
|
36718
|
+
// To be in the same level as the provided level metadata.
|
|
36719
|
+
if (listDepth > listFormat.levels.length) {
|
|
36720
|
+
while (listDepth != listFormat.levels.length) {
|
|
36721
|
+
listFormat.levels.push(newLevel);
|
|
36132
36722
|
}
|
|
36133
|
-
}
|
|
36723
|
+
}
|
|
36724
|
+
else {
|
|
36725
|
+
listFormat.levels.splice(listDepth, listFormat.levels.length - 1);
|
|
36726
|
+
listFormat.levels[listDepth - 1] = newLevel;
|
|
36727
|
+
}
|
|
36728
|
+
listFormat.listParent = group;
|
|
36729
|
+
}
|
|
36730
|
+
exports.setupListFormat = setupListFormat;
|
|
36731
|
+
/**
|
|
36732
|
+
* @internal
|
|
36733
|
+
*/
|
|
36734
|
+
function processAsListItem(context, element, group, listFormatMetadata, beforeProcessingChildren) {
|
|
36735
|
+
var listFormat = context.listFormat;
|
|
36736
|
+
if (listFormatMetadata) {
|
|
36737
|
+
(0, roosterjs_content_model_dom_1.updateListMetadata)(listFormat.levels[listFormat.levels.length - 1], function (metadata) {
|
|
36738
|
+
return Object.assign({}, metadata, listFormatMetadata);
|
|
36739
|
+
});
|
|
36740
|
+
}
|
|
36741
|
+
var listItem = (0, roosterjs_content_model_dom_1.createListItem)(listFormat.levels, context.segmentFormat);
|
|
36742
|
+
(0, roosterjs_content_model_dom_1.parseFormat)(element, context.formatParsers.segmentOnBlock, context.segmentFormat, context);
|
|
36743
|
+
(0, roosterjs_content_model_dom_1.parseFormat)(element, context.formatParsers.listItemElement, listItem.format, context);
|
|
36744
|
+
(0, roosterjs_content_model_dom_1.parseFormat)(element, [removeNegativeTextIndentParser_1.removeNegativeTextIndentParser, nonListElementParser], listItem.format, context);
|
|
36745
|
+
beforeProcessingChildren === null || beforeProcessingChildren === void 0 ? void 0 : beforeProcessingChildren(listItem);
|
|
36746
|
+
context.elementProcessors.child(listItem, element, context);
|
|
36747
|
+
(0, roosterjs_content_model_dom_1.addBlock)(group, listItem);
|
|
36748
|
+
}
|
|
36749
|
+
exports.processAsListItem = processAsListItem;
|
|
36750
|
+
var nonListElementParser = function (format, element, _context, defaultStyle) {
|
|
36751
|
+
if (!(0, roosterjs_content_model_dom_1.isElementOfType)(element, 'li')) {
|
|
36752
|
+
Object.keys(defaultStyle).forEach(function (keyInput) {
|
|
36753
|
+
var key = keyInput;
|
|
36754
|
+
var formatKey = keyInput;
|
|
36755
|
+
if (key != 'display' &&
|
|
36756
|
+
format[formatKey] != undefined &&
|
|
36757
|
+
format[formatKey] == defaultStyle[key]) {
|
|
36758
|
+
delete format[formatKey];
|
|
36759
|
+
}
|
|
36760
|
+
});
|
|
36761
|
+
}
|
|
36134
36762
|
};
|
|
36135
|
-
exports.deprecatedBorderColorParser = deprecatedBorderColorParser;
|
|
36136
36763
|
|
|
36137
36764
|
|
|
36138
36765
|
/***/ }),
|
|
@@ -36168,44 +36795,6 @@ function getStyles(element) {
|
|
|
36168
36795
|
exports.getStyles = getStyles;
|
|
36169
36796
|
|
|
36170
36797
|
|
|
36171
|
-
/***/ }),
|
|
36172
|
-
|
|
36173
|
-
/***/ "./packages/roosterjs-content-model-plugins/lib/paste/utils/linkParser.ts":
|
|
36174
|
-
/*!********************************************************************************!*\
|
|
36175
|
-
!*** ./packages/roosterjs-content-model-plugins/lib/paste/utils/linkParser.ts ***!
|
|
36176
|
-
\********************************************************************************/
|
|
36177
|
-
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
36178
|
-
|
|
36179
|
-
"use strict";
|
|
36180
|
-
|
|
36181
|
-
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
36182
|
-
exports.parseLink = void 0;
|
|
36183
|
-
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
36184
|
-
var SUPPORTED_PROTOCOLS = ['http:', 'https:', 'notes:', 'mailto:', 'onenote:'];
|
|
36185
|
-
var INVALID_LINKS_REGEX = /^file:\/\/\/[a-zA-Z\/]/i;
|
|
36186
|
-
/**
|
|
36187
|
-
* @internal
|
|
36188
|
-
*/
|
|
36189
|
-
var parseLink = function (format, element) {
|
|
36190
|
-
if (!(0, roosterjs_content_model_dom_1.isElementOfType)(element, 'a')) {
|
|
36191
|
-
return;
|
|
36192
|
-
}
|
|
36193
|
-
var url;
|
|
36194
|
-
try {
|
|
36195
|
-
url = new URL(element.href);
|
|
36196
|
-
}
|
|
36197
|
-
catch (_a) {
|
|
36198
|
-
url = undefined;
|
|
36199
|
-
}
|
|
36200
|
-
if ((url && SUPPORTED_PROTOCOLS.indexOf(url.protocol) === -1) ||
|
|
36201
|
-
INVALID_LINKS_REGEX.test(element.href)) {
|
|
36202
|
-
element.removeAttribute('href');
|
|
36203
|
-
format.href = '';
|
|
36204
|
-
}
|
|
36205
|
-
};
|
|
36206
|
-
exports.parseLink = parseLink;
|
|
36207
|
-
|
|
36208
|
-
|
|
36209
36798
|
/***/ }),
|
|
36210
36799
|
|
|
36211
36800
|
/***/ "./packages/roosterjs-content-model-plugins/lib/paste/utils/setProcessor.ts":
|
|
@@ -38737,7 +39326,7 @@ var WatermarkPlugin = /** @class */ (function () {
|
|
|
38737
39326
|
this.isShowing = true;
|
|
38738
39327
|
};
|
|
38739
39328
|
WatermarkPlugin.prototype.applyWatermarkStyle = function (editor) {
|
|
38740
|
-
var rule = "position: absolute; pointer-events: none; content: \"" + this.watermark + "\";";
|
|
39329
|
+
var rule = "position: absolute; pointer-events: none; margin-inline-start: 1px; content: \"" + this.watermark + "\";";
|
|
38741
39330
|
var format = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, this.format), { textColor: editor.isDarkMode() ? this.darkTextColor : this.format.textColor });
|
|
38742
39331
|
(0, roosterjs_content_model_dom_1.getObjectKeys)(styleMap).forEach(function (x) {
|
|
38743
39332
|
if (format[x]) {
|