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