roosterjs 9.26.0 → 9.29.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 +154 -11
- package/dist/rooster-amd.js +1277 -408
- package/dist/rooster-amd.js.map +1 -1
- package/dist/rooster-min.js +1 -1
- package/dist/rooster-min.js.map +1 -1
- package/dist/rooster-react.js +53 -53
- package/dist/rooster-react.js.map +1 -1
- package/dist/rooster.d.ts +154 -11
- package/dist/rooster.js +1277 -408
- package/dist/rooster.js.map +1 -1
- package/package.json +7 -7
package/dist/rooster-amd.js
CHANGED
|
@@ -2093,8 +2093,8 @@ exports["default"] = getDarkColor;
|
|
|
2093
2093
|
"use strict";
|
|
2094
2094
|
|
|
2095
2095
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
2096
|
-
exports.
|
|
2097
|
-
exports.queryContentModelBlocks = exports.getListAnnounceData = exports.promoteLink = exports.matchLink = exports.setModelIndentation = exports.findListItemsInSameThread = exports.setModelListStartNumber = exports.setModelListStyle = exports.setListType = exports.formatInsertPointWithContentModel = exports.formatTextSegmentBeforeSelectionMarker = void 0;
|
|
2096
|
+
exports.formatParagraphWithContentModel = exports.formatImageWithContentModel = exports.formatTableWithContentModel = exports.createEditorContextForEntity = exports.clearSelectedCells = exports.insertTableColumn = exports.insertTableRow = exports.insertEntity = exports.toggleCode = exports.setParagraphMargin = exports.adjustImageSelection = exports.setImageAltText = exports.adjustLinkSelection = exports.removeLink = exports.insertLink = exports.clearFormat = exports.getFormatState = exports.changeImage = exports.setImageBoxShadow = exports.setImageBorder = exports.setSpacing = exports.toggleBlockQuote = exports.setHeadingLevel = exports.setDirection = exports.setAlignment = exports.setIndentation = exports.setListStartNumber = exports.setListStyle = exports.insertImage = exports.splitTextSegment = exports.changeCapitalization = exports.applySegmentFormat = exports.changeFontSize = exports.setTextColor = exports.setFontSize = exports.setFontName = exports.setBackgroundColor = exports.toggleSuperscript = exports.toggleSubscript = exports.toggleStrikethrough = exports.toggleUnderline = exports.toggleItalic = exports.toggleBold = exports.toggleNumbering = exports.toggleBullet = exports.applyTableBorderFormat = exports.editTable = exports.setTableCellShade = exports.formatTable = exports.insertTable = void 0;
|
|
2097
|
+
exports.queryContentModelBlocks = exports.getListAnnounceData = exports.promoteLink = exports.matchLink = exports.setModelIndentation = exports.findListItemsInSameThread = exports.setModelListStartNumber = exports.setModelListStyle = exports.setListType = exports.formatInsertPointWithContentModel = exports.formatTextSegmentBeforeSelectionMarker = exports.formatSegmentWithContentModel = void 0;
|
|
2098
2098
|
var insertTable_1 = __webpack_require__(/*! ./publicApi/table/insertTable */ "./packages/roosterjs-content-model-api/lib/publicApi/table/insertTable.ts");
|
|
2099
2099
|
Object.defineProperty(exports, "insertTable", ({ enumerable: true, get: function () { return insertTable_1.insertTable; } }));
|
|
2100
2100
|
var formatTable_1 = __webpack_require__(/*! ./publicApi/table/formatTable */ "./packages/roosterjs-content-model-api/lib/publicApi/table/formatTable.ts");
|
|
@@ -2187,6 +2187,8 @@ var insertTableColumn_1 = __webpack_require__(/*! ./modelApi/table/insertTableCo
|
|
|
2187
2187
|
Object.defineProperty(exports, "insertTableColumn", ({ enumerable: true, get: function () { return insertTableColumn_1.insertTableColumn; } }));
|
|
2188
2188
|
var clearSelectedCells_1 = __webpack_require__(/*! ./modelApi/table/clearSelectedCells */ "./packages/roosterjs-content-model-api/lib/modelApi/table/clearSelectedCells.ts");
|
|
2189
2189
|
Object.defineProperty(exports, "clearSelectedCells", ({ enumerable: true, get: function () { return clearSelectedCells_1.clearSelectedCells; } }));
|
|
2190
|
+
var createEditorContextForEntity_1 = __webpack_require__(/*! ./publicApi/utils/createEditorContextForEntity */ "./packages/roosterjs-content-model-api/lib/publicApi/utils/createEditorContextForEntity.ts");
|
|
2191
|
+
Object.defineProperty(exports, "createEditorContextForEntity", ({ enumerable: true, get: function () { return createEditorContextForEntity_1.createEditorContextForEntity; } }));
|
|
2190
2192
|
var formatTableWithContentModel_1 = __webpack_require__(/*! ./publicApi/utils/formatTableWithContentModel */ "./packages/roosterjs-content-model-api/lib/publicApi/utils/formatTableWithContentModel.ts");
|
|
2191
2193
|
Object.defineProperty(exports, "formatTableWithContentModel", ({ enumerable: true, get: function () { return formatTableWithContentModel_1.formatTableWithContentModel; } }));
|
|
2192
2194
|
var formatImageWithContentModel_1 = __webpack_require__(/*! ./publicApi/utils/formatImageWithContentModel */ "./packages/roosterjs-content-model-api/lib/publicApi/utils/formatImageWithContentModel.ts");
|
|
@@ -2852,14 +2854,16 @@ function isWholeBlockSelected(block) {
|
|
|
2852
2854
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
2853
2855
|
exports.queryContentModelBlocks = void 0;
|
|
2854
2856
|
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
2857
|
+
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
2855
2858
|
/**
|
|
2856
2859
|
* Query content model blocks
|
|
2857
2860
|
* @param group The block group to query
|
|
2858
2861
|
* @param type The type of block to query
|
|
2859
2862
|
* @param filter Optional selector to filter the blocks
|
|
2860
2863
|
* @param findFirstOnly True to return the first block only, false to return all blocks
|
|
2864
|
+
* @param shouldExpandEntity Optional function to determine if an entity's children should be recursively queried, should return a EditorContext if the entity should be expanded, or null if not
|
|
2861
2865
|
*/
|
|
2862
|
-
function queryContentModelBlocks(group, type, filter, findFirstOnly) {
|
|
2866
|
+
function queryContentModelBlocks(group, type, filter, findFirstOnly, shouldExpandEntity) {
|
|
2863
2867
|
var e_1, _a, e_2, _b;
|
|
2864
2868
|
var elements = [];
|
|
2865
2869
|
for (var i = 0; i < group.blocks.length; i++) {
|
|
@@ -2874,12 +2878,21 @@ function queryContentModelBlocks(group, type, filter, findFirstOnly) {
|
|
|
2874
2878
|
if (isExpectedBlockType(block, type, filter)) {
|
|
2875
2879
|
elements.push(block);
|
|
2876
2880
|
}
|
|
2881
|
+
if (block.blockType == 'Entity' && shouldExpandEntity) {
|
|
2882
|
+
var editorContext = shouldExpandEntity(block);
|
|
2883
|
+
if (editorContext) {
|
|
2884
|
+
var context = (0, roosterjs_content_model_dom_1.createDomToModelContext)(editorContext);
|
|
2885
|
+
var model = (0, roosterjs_content_model_dom_1.domToContentModel)(block.wrapper, context);
|
|
2886
|
+
var results_1 = queryContentModelBlocks(model, type, filter, findFirstOnly, shouldExpandEntity);
|
|
2887
|
+
elements.push.apply(elements, (0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(results_1), false));
|
|
2888
|
+
}
|
|
2889
|
+
}
|
|
2877
2890
|
break;
|
|
2878
2891
|
case 'BlockGroup':
|
|
2879
2892
|
if (isExpectedBlockType(block, type, filter)) {
|
|
2880
2893
|
elements.push(block);
|
|
2881
2894
|
}
|
|
2882
|
-
var results = queryContentModelBlocks(block, type, filter, findFirstOnly);
|
|
2895
|
+
var results = queryContentModelBlocks(block, type, filter, findFirstOnly, shouldExpandEntity);
|
|
2883
2896
|
elements.push.apply(elements, (0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(results), false));
|
|
2884
2897
|
break;
|
|
2885
2898
|
case 'Table':
|
|
@@ -2892,8 +2905,8 @@ function queryContentModelBlocks(group, type, filter, findFirstOnly) {
|
|
|
2892
2905
|
try {
|
|
2893
2906
|
for (var _e = (e_2 = void 0, (0, tslib_1.__values)(row.cells)), _f = _e.next(); !_f.done; _f = _e.next()) {
|
|
2894
2907
|
var cell = _f.value;
|
|
2895
|
-
var
|
|
2896
|
-
elements.push.apply(elements, (0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(
|
|
2908
|
+
var results_2 = queryContentModelBlocks(cell, type, filter, findFirstOnly, shouldExpandEntity);
|
|
2909
|
+
elements.push.apply(elements, (0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(results_2), false));
|
|
2897
2910
|
}
|
|
2898
2911
|
}
|
|
2899
2912
|
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
@@ -3681,17 +3694,9 @@ function setListType(model, listType, removeMargins) {
|
|
|
3681
3694
|
(0, roosterjs_content_model_dom_1.setParagraphNotImplicit)(block.blocks[0]);
|
|
3682
3695
|
}
|
|
3683
3696
|
if (alreadyInExpectedType) {
|
|
3684
|
-
//if the list item has margins or textAlign, we need to apply them to the block to preserve the indention and alignment
|
|
3697
|
+
// if the list item has margins or textAlign, we need to apply them to the block to preserve the indention and alignment
|
|
3685
3698
|
block.blocks.forEach(function (x) {
|
|
3686
|
-
|
|
3687
|
-
x.format.marginLeft = block.format.marginLeft;
|
|
3688
|
-
}
|
|
3689
|
-
if (block.format.marginRight) {
|
|
3690
|
-
x.format.marginRight = block.format.marginRight;
|
|
3691
|
-
}
|
|
3692
|
-
if (block.format.textAlign) {
|
|
3693
|
-
x.format.textAlign = block.format.textAlign;
|
|
3694
|
-
}
|
|
3699
|
+
(0, roosterjs_content_model_dom_1.copyFormat)(x.format, block.format, roosterjs_content_model_dom_1.ListFormats);
|
|
3695
3700
|
});
|
|
3696
3701
|
}
|
|
3697
3702
|
}
|
|
@@ -3726,17 +3731,8 @@ function setListType(model, listType, removeMargins) {
|
|
|
3726
3731
|
}
|
|
3727
3732
|
var mutableBlock = (0, roosterjs_content_model_dom_1.mutateBlock)(block);
|
|
3728
3733
|
newListItem.blocks.push(mutableBlock);
|
|
3729
|
-
|
|
3730
|
-
|
|
3731
|
-
mutableBlock.format.marginRight = undefined;
|
|
3732
|
-
}
|
|
3733
|
-
if (mutableBlock.format.marginLeft) {
|
|
3734
|
-
newListItem.format.marginLeft = mutableBlock.format.marginLeft;
|
|
3735
|
-
mutableBlock.format.marginLeft = undefined;
|
|
3736
|
-
}
|
|
3737
|
-
if (mutableBlock.format.textAlign) {
|
|
3738
|
-
newListItem.format.textAlign = mutableBlock.format.textAlign;
|
|
3739
|
-
}
|
|
3734
|
+
(0, roosterjs_content_model_dom_1.copyFormat)(newListItem.format, mutableBlock.format, roosterjs_content_model_dom_1.ListFormatsToMove, true /*deleteOriginalFormat*/);
|
|
3735
|
+
(0, roosterjs_content_model_dom_1.copyFormat)(newListItem.format, mutableBlock.format, roosterjs_content_model_dom_1.ListFormatsToKeep);
|
|
3740
3736
|
(0, roosterjs_content_model_dom_1.mutateBlock)(parent).blocks.splice(index, 1, newListItem);
|
|
3741
3737
|
existingListItems.push(newListItem);
|
|
3742
3738
|
var levelIndex = newListItem.levels.length - 1;
|
|
@@ -5614,8 +5610,9 @@ function insertLink(editor, link, anchorTitle, displayText, target) {
|
|
|
5614
5610
|
.map(function (x) { return (x.segmentType == 'Text' ? x.text : ''); })
|
|
5615
5611
|
.join('');
|
|
5616
5612
|
var text = displayText || originalText || '';
|
|
5617
|
-
if (segments.some(function (x) { return x.segmentType != 'SelectionMarker'; }) &&
|
|
5618
|
-
originalText == text)
|
|
5613
|
+
if ((segments.some(function (x) { return x.segmentType != 'SelectionMarker'; }) &&
|
|
5614
|
+
originalText == text) ||
|
|
5615
|
+
(segments.length == 1 && segments[0].segmentType == 'Image')) {
|
|
5619
5616
|
segments.forEach(function (x) {
|
|
5620
5617
|
var link = createLink(linkUrl_1, anchorTitle, target, x.segmentType == 'Text');
|
|
5621
5618
|
(0, roosterjs_content_model_dom_1.addLink)(x, link);
|
|
@@ -6994,6 +6991,46 @@ function setTableCellShade(editor, color) {
|
|
|
6994
6991
|
exports.setTableCellShade = setTableCellShade;
|
|
6995
6992
|
|
|
6996
6993
|
|
|
6994
|
+
/***/ }),
|
|
6995
|
+
|
|
6996
|
+
/***/ "./packages/roosterjs-content-model-api/lib/publicApi/utils/createEditorContextForEntity.ts":
|
|
6997
|
+
/*!**************************************************************************************************!*\
|
|
6998
|
+
!*** ./packages/roosterjs-content-model-api/lib/publicApi/utils/createEditorContextForEntity.ts ***!
|
|
6999
|
+
\**************************************************************************************************/
|
|
7000
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
7001
|
+
|
|
7002
|
+
"use strict";
|
|
7003
|
+
|
|
7004
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
7005
|
+
exports.createEditorContextForEntity = void 0;
|
|
7006
|
+
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
7007
|
+
/**
|
|
7008
|
+
* Create an EditorContext for an entity
|
|
7009
|
+
* @param editor The editor object
|
|
7010
|
+
* @param entity The entity to create the context for
|
|
7011
|
+
* @returns The generated EditorContext for the entity
|
|
7012
|
+
*/
|
|
7013
|
+
function createEditorContextForEntity(editor, entity) {
|
|
7014
|
+
var _a;
|
|
7015
|
+
var domHelper = editor.getDOMHelper();
|
|
7016
|
+
var context = {
|
|
7017
|
+
isDarkMode: editor.isDarkMode(),
|
|
7018
|
+
defaultFormat: (0, tslib_1.__assign)({}, entity.format),
|
|
7019
|
+
darkColorHandler: editor.getColorManager(),
|
|
7020
|
+
addDelimiterForEntity: false,
|
|
7021
|
+
allowCacheElement: false,
|
|
7022
|
+
domIndexer: undefined,
|
|
7023
|
+
zoomScale: domHelper.calculateZoomScale(),
|
|
7024
|
+
experimentalFeatures: [],
|
|
7025
|
+
};
|
|
7026
|
+
if (((_a = editor.getDocument().defaultView) === null || _a === void 0 ? void 0 : _a.getComputedStyle(entity.wrapper).direction) == 'rtl') {
|
|
7027
|
+
context.isRootRtl = true;
|
|
7028
|
+
}
|
|
7029
|
+
return context;
|
|
7030
|
+
}
|
|
7031
|
+
exports.createEditorContextForEntity = createEditorContextForEntity;
|
|
7032
|
+
|
|
7033
|
+
|
|
6997
7034
|
/***/ }),
|
|
6998
7035
|
|
|
6999
7036
|
/***/ "./packages/roosterjs-content-model-api/lib/publicApi/utils/formatImageWithContentModel.ts":
|
|
@@ -7211,8 +7248,9 @@ exports.formatParagraphWithContentModel = formatParagraphWithContentModel;
|
|
|
7211
7248
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
7212
7249
|
exports.formatSegmentWithContentModel = void 0;
|
|
7213
7250
|
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
7214
|
-
var adjustWordSelection_1 = __webpack_require__(/*! ../../modelApi/selection/adjustWordSelection */ "./packages/roosterjs-content-model-api/lib/modelApi/selection/adjustWordSelection.ts");
|
|
7215
7251
|
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
7252
|
+
var adjustWordSelection_1 = __webpack_require__(/*! ../../modelApi/selection/adjustWordSelection */ "./packages/roosterjs-content-model-api/lib/modelApi/selection/adjustWordSelection.ts");
|
|
7253
|
+
var createEditorContextForEntity_1 = __webpack_require__(/*! ./createEditorContextForEntity */ "./packages/roosterjs-content-model-api/lib/publicApi/utils/createEditorContextForEntity.ts");
|
|
7216
7254
|
/**
|
|
7217
7255
|
* Invoke a callback to format the selected segment using Content Model
|
|
7218
7256
|
* @param editor The editor object
|
|
@@ -7286,24 +7324,6 @@ function formatSegmentWithContentModel(editor, apiName, toggleStyleCallback, seg
|
|
|
7286
7324
|
});
|
|
7287
7325
|
}
|
|
7288
7326
|
exports.formatSegmentWithContentModel = formatSegmentWithContentModel;
|
|
7289
|
-
function createEditorContextForEntity(editor, entity) {
|
|
7290
|
-
var _a;
|
|
7291
|
-
var domHelper = editor.getDOMHelper();
|
|
7292
|
-
var context = {
|
|
7293
|
-
isDarkMode: editor.isDarkMode(),
|
|
7294
|
-
defaultFormat: (0, tslib_1.__assign)({}, entity.format),
|
|
7295
|
-
darkColorHandler: editor.getColorManager(),
|
|
7296
|
-
addDelimiterForEntity: false,
|
|
7297
|
-
allowCacheElement: false,
|
|
7298
|
-
domIndexer: undefined,
|
|
7299
|
-
zoomScale: domHelper.calculateZoomScale(),
|
|
7300
|
-
experimentalFeatures: [],
|
|
7301
|
-
};
|
|
7302
|
-
if (((_a = editor.getDocument().defaultView) === null || _a === void 0 ? void 0 : _a.getComputedStyle(entity.wrapper).direction) == 'rtl') {
|
|
7303
|
-
context.isRootRtl = true;
|
|
7304
|
-
}
|
|
7305
|
-
return context;
|
|
7306
|
-
}
|
|
7307
7327
|
function expandEntitySelections(editor, entity, formatsAndSegments, modelsFromEntities) {
|
|
7308
7328
|
var _a = entity.entityFormat, id = _a.id, type = _a.entityType, isReadonly = _a.isReadonly;
|
|
7309
7329
|
if (id && type) {
|
|
@@ -7316,7 +7336,7 @@ function expandEntitySelections(editor, entity, formatsAndSegments, modelsFromEn
|
|
|
7316
7336
|
editor.triggerEvent('entityOperation', entityOperationEventData);
|
|
7317
7337
|
formattableRoots.forEach(function (root) {
|
|
7318
7338
|
if (entity.wrapper.contains(root.element)) {
|
|
7319
|
-
var editorContext = createEditorContextForEntity(editor, entity);
|
|
7339
|
+
var editorContext = (0, createEditorContextForEntity_1.createEditorContextForEntity)(editor, entity);
|
|
7320
7340
|
var context = (0, roosterjs_content_model_dom_1.createDomToModelContext)(editorContext, root.domToModelOptions);
|
|
7321
7341
|
// Treat everything as selected since the parent entity is selected
|
|
7322
7342
|
context.isInSelection = true;
|
|
@@ -7333,7 +7353,7 @@ function expandEntitySelections(editor, entity, formatsAndSegments, modelsFromEn
|
|
|
7333
7353
|
function writeBackEntities(editor, modelsFromEntities) {
|
|
7334
7354
|
modelsFromEntities.forEach(function (_a) {
|
|
7335
7355
|
var _b = (0, tslib_1.__read)(_a, 3), entity = _b[0], root = _b[1], model = _b[2];
|
|
7336
|
-
var editorContext = createEditorContextForEntity(editor, entity);
|
|
7356
|
+
var editorContext = (0, createEditorContextForEntity_1.createEditorContextForEntity)(editor, entity);
|
|
7337
7357
|
var modelToDomContext = (0, roosterjs_content_model_dom_1.createModelToDomContext)(editorContext, root.modelToDomOptions);
|
|
7338
7358
|
(0, roosterjs_content_model_dom_1.contentModelToDom)(editor.getDocument(), root.element, model, modelToDomContext);
|
|
7339
7359
|
});
|
|
@@ -8019,6 +8039,64 @@ function exportContent(editor, mode, optionsOrCallbacks) {
|
|
|
8019
8039
|
exports.exportContent = exportContent;
|
|
8020
8040
|
|
|
8021
8041
|
|
|
8042
|
+
/***/ }),
|
|
8043
|
+
|
|
8044
|
+
/***/ "./packages/roosterjs-content-model-core/lib/command/paste/cleanHtmlComments.ts":
|
|
8045
|
+
/*!**************************************************************************************!*\
|
|
8046
|
+
!*** ./packages/roosterjs-content-model-core/lib/command/paste/cleanHtmlComments.ts ***!
|
|
8047
|
+
\**************************************************************************************/
|
|
8048
|
+
/***/ ((__unused_webpack_module, exports) => {
|
|
8049
|
+
|
|
8050
|
+
"use strict";
|
|
8051
|
+
|
|
8052
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
8053
|
+
exports.cleanHtmlComments = void 0;
|
|
8054
|
+
var HtmlCommentStart = '\x3C!--';
|
|
8055
|
+
var HtmlCommentStart2 = '<!--';
|
|
8056
|
+
var HtmlCommentEnd = '-->';
|
|
8057
|
+
var styleTag = '<style';
|
|
8058
|
+
var styleClosingTag = '</style>';
|
|
8059
|
+
var nonWordCharacterRegex = /\W/;
|
|
8060
|
+
/**
|
|
8061
|
+
* @internal
|
|
8062
|
+
* Exported only for unit test
|
|
8063
|
+
*/
|
|
8064
|
+
function cleanHtmlComments(html) {
|
|
8065
|
+
var _a;
|
|
8066
|
+
var _b = extractHtmlIndexes(html), styleIndex = _b.styleIndex, styleEndIndex = _b.styleEndIndex;
|
|
8067
|
+
while (styleIndex > -1) {
|
|
8068
|
+
html = removeCommentsFromHtml(html, HtmlCommentStart, styleEndIndex, styleIndex);
|
|
8069
|
+
html = removeCommentsFromHtml(html, HtmlCommentStart2, styleEndIndex, styleIndex);
|
|
8070
|
+
html = removeCommentsFromHtml(html, HtmlCommentEnd, styleEndIndex, styleIndex);
|
|
8071
|
+
(_a = extractHtmlIndexes(html, styleEndIndex + 1), styleIndex = _a.styleIndex, styleEndIndex = _a.styleEndIndex);
|
|
8072
|
+
}
|
|
8073
|
+
return html;
|
|
8074
|
+
}
|
|
8075
|
+
exports.cleanHtmlComments = cleanHtmlComments;
|
|
8076
|
+
function extractHtmlIndexes(html, startIndex) {
|
|
8077
|
+
if (startIndex === void 0) { startIndex = 0; }
|
|
8078
|
+
var htmlLowercase = html.toLowerCase();
|
|
8079
|
+
var styleIndex = htmlLowercase.indexOf(styleTag, startIndex);
|
|
8080
|
+
var currentIndex = styleIndex + styleTag.length;
|
|
8081
|
+
var nextChar = html.substring(currentIndex, currentIndex + 1);
|
|
8082
|
+
while (!nonWordCharacterRegex.test(nextChar) && styleIndex > -1) {
|
|
8083
|
+
styleIndex = htmlLowercase.indexOf(styleTag, styleIndex + 1);
|
|
8084
|
+
currentIndex = styleIndex + styleTag.length;
|
|
8085
|
+
nextChar = html.substring(currentIndex, currentIndex + 1);
|
|
8086
|
+
}
|
|
8087
|
+
var styleEndIndex = htmlLowercase.indexOf(styleClosingTag, startIndex);
|
|
8088
|
+
return { styleIndex: styleIndex, styleEndIndex: styleEndIndex };
|
|
8089
|
+
}
|
|
8090
|
+
function removeCommentsFromHtml(html, marker, endId, startId) {
|
|
8091
|
+
var id = html.indexOf(marker, startId);
|
|
8092
|
+
while (id > -1 && id < endId) {
|
|
8093
|
+
html = html.substring(0, id) + html.substring(id + marker.length);
|
|
8094
|
+
id = html.indexOf(marker, id + 1);
|
|
8095
|
+
}
|
|
8096
|
+
return html;
|
|
8097
|
+
}
|
|
8098
|
+
|
|
8099
|
+
|
|
8022
8100
|
/***/ }),
|
|
8023
8101
|
|
|
8024
8102
|
/***/ "./packages/roosterjs-content-model-core/lib/command/paste/createPasteFragment.ts":
|
|
@@ -8258,6 +8336,7 @@ function getLastSegmentFormat(pasteModel) {
|
|
|
8258
8336
|
|
|
8259
8337
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
8260
8338
|
exports.paste = void 0;
|
|
8339
|
+
var cleanHtmlComments_1 = __webpack_require__(/*! ./cleanHtmlComments */ "./packages/roosterjs-content-model-core/lib/command/paste/cleanHtmlComments.ts");
|
|
8261
8340
|
var mergePasteContent_1 = __webpack_require__(/*! ./mergePasteContent */ "./packages/roosterjs-content-model-core/lib/command/paste/mergePasteContent.ts");
|
|
8262
8341
|
var convertInlineCss_1 = __webpack_require__(/*! ../createModelFromHtml/convertInlineCss */ "./packages/roosterjs-content-model-core/lib/command/createModelFromHtml/convertInlineCss.ts");
|
|
8263
8342
|
var createPasteFragment_1 = __webpack_require__(/*! ./createPasteFragment */ "./packages/roosterjs-content-model-core/lib/command/paste/createPasteFragment.ts");
|
|
@@ -8282,7 +8361,11 @@ function paste(editor, clipboardData, pasteTypeOrGetter) {
|
|
|
8282
8361
|
});
|
|
8283
8362
|
}
|
|
8284
8363
|
// 1. Prepare variables
|
|
8285
|
-
var
|
|
8364
|
+
var domCreator = editor.getDOMCreator();
|
|
8365
|
+
if (!domCreator.isBypassed && clipboardData.rawHtml) {
|
|
8366
|
+
clipboardData.rawHtml = (0, cleanHtmlComments_1.cleanHtmlComments)(clipboardData.rawHtml);
|
|
8367
|
+
}
|
|
8368
|
+
var doc = createDOMFromHtml(clipboardData.rawHtml, domCreator);
|
|
8286
8369
|
var pasteType = typeof pasteTypeOrGetter == 'function'
|
|
8287
8370
|
? pasteTypeOrGetter(doc, clipboardData)
|
|
8288
8371
|
: pasteTypeOrGetter;
|
|
@@ -8291,7 +8374,7 @@ function paste(editor, clipboardData, pasteTypeOrGetter) {
|
|
|
8291
8374
|
// 3. Create target fragment
|
|
8292
8375
|
var sourceFragment = (0, createPasteFragment_1.createPasteFragment)(editor.getDocument(), clipboardData, pasteType, (_a = (clipboardData.rawHtml == clipboardData.html
|
|
8293
8376
|
? doc
|
|
8294
|
-
: createDOMFromHtml(clipboardData.html,
|
|
8377
|
+
: createDOMFromHtml(clipboardData.html, domCreator))) === null || _a === void 0 ? void 0 : _a.body);
|
|
8295
8378
|
// 4. Trigger BeforePaste event to allow plugins modify the fragment
|
|
8296
8379
|
var eventResult = (0, generatePasteOptionFromPlugins_1.generatePasteOptionFromPlugins)(editor, clipboardData, sourceFragment, htmlFromClipboard, pasteType);
|
|
8297
8380
|
// 5. Convert global CSS to inline CSS
|
|
@@ -9404,7 +9487,7 @@ var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-mo
|
|
|
9404
9487
|
* @internal
|
|
9405
9488
|
*/
|
|
9406
9489
|
function restoreSnapshotHTML(core, snapshot) {
|
|
9407
|
-
var _a;
|
|
9490
|
+
var _a, _b;
|
|
9408
9491
|
var physicalRoot = core.physicalRoot, entityMap = core.entity.entityMap;
|
|
9409
9492
|
var refNode = physicalRoot.firstChild;
|
|
9410
9493
|
var body = core.domCreator.htmlToDOM(snapshot.html).body;
|
|
@@ -9412,6 +9495,14 @@ function restoreSnapshotHTML(core, snapshot) {
|
|
|
9412
9495
|
var next = currentNode.nextSibling;
|
|
9413
9496
|
var originalEntityElement = tryGetEntityElement(entityMap, currentNode);
|
|
9414
9497
|
if (originalEntityElement) {
|
|
9498
|
+
// After restoring the snapshot, we need to clear the delimiter indexes since cached model will be cleared
|
|
9499
|
+
if ((0, roosterjs_content_model_dom_1.isBlockEntityContainer)(originalEntityElement)) {
|
|
9500
|
+
for (var node = originalEntityElement.firstChild; node; node = node.nextSibling) {
|
|
9501
|
+
if ((0, roosterjs_content_model_dom_1.isNodeOfType)(node, 'ELEMENT_NODE') && (0, roosterjs_content_model_dom_1.isEntityDelimiter)(node)) {
|
|
9502
|
+
(_a = core.cache.domIndexer) === null || _a === void 0 ? void 0 : _a.clearIndex(node);
|
|
9503
|
+
}
|
|
9504
|
+
}
|
|
9505
|
+
}
|
|
9415
9506
|
refNode = (0, roosterjs_content_model_dom_1.reuseCachedElement)(physicalRoot, originalEntityElement, refNode);
|
|
9416
9507
|
}
|
|
9417
9508
|
else {
|
|
@@ -9439,7 +9530,7 @@ function restoreSnapshotHTML(core, snapshot) {
|
|
|
9439
9530
|
}
|
|
9440
9531
|
while (refNode) {
|
|
9441
9532
|
var next = refNode.nextSibling;
|
|
9442
|
-
(
|
|
9533
|
+
(_b = refNode.parentNode) === null || _b === void 0 ? void 0 : _b.removeChild(refNode);
|
|
9443
9534
|
refNode = next;
|
|
9444
9535
|
}
|
|
9445
9536
|
}
|
|
@@ -10739,14 +10830,20 @@ var DomIndexerImpl = /** @class */ (function () {
|
|
|
10739
10830
|
unindex(targetText);
|
|
10740
10831
|
}
|
|
10741
10832
|
};
|
|
10833
|
+
DomIndexerImpl.prototype.clearIndex = function (container) {
|
|
10834
|
+
internalClearIndex(container);
|
|
10835
|
+
};
|
|
10742
10836
|
DomIndexerImpl.prototype.reconcileSelection = function (model, newSelection, oldSelection) {
|
|
10743
10837
|
var _a, _b;
|
|
10744
10838
|
if (oldSelection) {
|
|
10839
|
+
var startNode = void 0;
|
|
10745
10840
|
if (oldSelection.type == 'range' &&
|
|
10746
10841
|
this.isCollapsed(oldSelection) &&
|
|
10747
|
-
(
|
|
10748
|
-
|
|
10749
|
-
|
|
10842
|
+
(startNode = oldSelection.start.node) &&
|
|
10843
|
+
(0, roosterjs_content_model_dom_1.isNodeOfType)(startNode, 'TEXT_NODE') &&
|
|
10844
|
+
isIndexedSegment(startNode) &&
|
|
10845
|
+
startNode.__roosterjsContentModel.segments.length > 0) {
|
|
10846
|
+
this.reconcileTextSelection(startNode);
|
|
10750
10847
|
}
|
|
10751
10848
|
else {
|
|
10752
10849
|
(0, roosterjs_content_model_dom_1.setSelection)(model);
|
|
@@ -11099,6 +11196,12 @@ function getFirstLeaf(node) {
|
|
|
11099
11196
|
}
|
|
11100
11197
|
return node;
|
|
11101
11198
|
}
|
|
11199
|
+
function internalClearIndex(container) {
|
|
11200
|
+
unindex(container);
|
|
11201
|
+
for (var node = container.firstChild; node; node = node.nextSibling) {
|
|
11202
|
+
internalClearIndex(node);
|
|
11203
|
+
}
|
|
11204
|
+
}
|
|
11102
11205
|
|
|
11103
11206
|
|
|
11104
11207
|
/***/ }),
|
|
@@ -11408,6 +11511,7 @@ var adjustImageSelectionOnSafari_1 = __webpack_require__(/*! ./utils/adjustImage
|
|
|
11408
11511
|
var deleteEmptyList_1 = __webpack_require__(/*! ./utils/deleteEmptyList */ "./packages/roosterjs-content-model-core/lib/corePlugin/copyPaste/utils/deleteEmptyList.ts");
|
|
11409
11512
|
var pasteCopyBlockEntityParser_1 = __webpack_require__(/*! ../../override/pasteCopyBlockEntityParser */ "./packages/roosterjs-content-model-core/lib/override/pasteCopyBlockEntityParser.ts");
|
|
11410
11513
|
var paste_1 = __webpack_require__(/*! ../../command/paste/paste */ "./packages/roosterjs-content-model-core/lib/command/paste/paste.ts");
|
|
11514
|
+
var pruneUnselectedModel_1 = __webpack_require__(/*! ./utils/pruneUnselectedModel */ "./packages/roosterjs-content-model-core/lib/corePlugin/copyPaste/utils/pruneUnselectedModel.ts");
|
|
11411
11515
|
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
11412
11516
|
var TEMP_DIV_ID = 'roosterJS_copyCutTempDiv';
|
|
11413
11517
|
/**
|
|
@@ -11422,6 +11526,7 @@ var CopyPastePlugin = /** @class */ (function () {
|
|
|
11422
11526
|
var _this = this;
|
|
11423
11527
|
this.editor = null;
|
|
11424
11528
|
this.disposer = null;
|
|
11529
|
+
this.customCopyCutEnabled = false;
|
|
11425
11530
|
this.onPaste = function (event) {
|
|
11426
11531
|
if (_this.editor && isClipboardEvent(event)) {
|
|
11427
11532
|
var editor_1 = _this.editor;
|
|
@@ -11466,6 +11571,7 @@ var CopyPastePlugin = /** @class */ (function () {
|
|
|
11466
11571
|
beforeDispatch: function (e) { return _this.onCutCopy(e, true /*isCut*/); },
|
|
11467
11572
|
},
|
|
11468
11573
|
});
|
|
11574
|
+
this.customCopyCutEnabled = editor.isExperimentalFeatureEnabled('CustomCopyCut');
|
|
11469
11575
|
};
|
|
11470
11576
|
/**
|
|
11471
11577
|
* Dispose this plugin
|
|
@@ -11490,7 +11596,7 @@ var CopyPastePlugin = /** @class */ (function () {
|
|
|
11490
11596
|
};
|
|
11491
11597
|
CopyPastePlugin.prototype.onCutCopy = function (event, isCut) {
|
|
11492
11598
|
var _this = this;
|
|
11493
|
-
var _a;
|
|
11599
|
+
var _a, _b, _c;
|
|
11494
11600
|
if (!this.editor) {
|
|
11495
11601
|
return;
|
|
11496
11602
|
}
|
|
@@ -11499,6 +11605,7 @@ var CopyPastePlugin = /** @class */ (function () {
|
|
|
11499
11605
|
(0, adjustImageSelectionOnSafari_1.adjustImageSelectionOnSafari)(this.editor, selection);
|
|
11500
11606
|
if (selection && (selection.type != 'range' || !selection.range.collapsed)) {
|
|
11501
11607
|
var pasteModel = this.editor.getContentModelCopy('disconnected');
|
|
11608
|
+
(0, pruneUnselectedModel_1.pruneUnselectedModel)(pasteModel);
|
|
11502
11609
|
if (selection.type === 'table') {
|
|
11503
11610
|
(0, roosterjs_content_model_dom_1.iterateSelections)(pasteModel, function (_, tableContext) {
|
|
11504
11611
|
if (tableContext === null || tableContext === void 0 ? void 0 : tableContext.table) {
|
|
@@ -11525,10 +11632,16 @@ var CopyPastePlugin = /** @class */ (function () {
|
|
|
11525
11632
|
rawEvent: event,
|
|
11526
11633
|
isCut: isCut,
|
|
11527
11634
|
}).range;
|
|
11528
|
-
if (
|
|
11635
|
+
if (this.customCopyCutEnabled && isClipboardEvent(event)) {
|
|
11636
|
+
event.preventDefault();
|
|
11637
|
+
var text = (0, roosterjs_content_model_dom_1.contentModelToText)(pasteModel);
|
|
11638
|
+
(_a = event.clipboardData) === null || _a === void 0 ? void 0 : _a.setData('text/html', tempDiv_1.innerHTML);
|
|
11639
|
+
(_b = event.clipboardData) === null || _b === void 0 ? void 0 : _b.setData('text/plain', text);
|
|
11640
|
+
}
|
|
11641
|
+
else if (newRange) {
|
|
11529
11642
|
(0, addRangeToSelection_1.addRangeToSelection)(doc, newRange);
|
|
11530
11643
|
}
|
|
11531
|
-
(
|
|
11644
|
+
(_c = doc.defaultView) === null || _c === void 0 ? void 0 : _c.requestAnimationFrame(function () {
|
|
11532
11645
|
if (!_this.editor) {
|
|
11533
11646
|
return;
|
|
11534
11647
|
}
|
|
@@ -11565,7 +11678,9 @@ var CopyPastePlugin = /** @class */ (function () {
|
|
|
11565
11678
|
tempDiv.style.left = '0';
|
|
11566
11679
|
tempDiv.style.userSelect = 'text';
|
|
11567
11680
|
tempDiv.contentEditable = 'true';
|
|
11568
|
-
|
|
11681
|
+
if (!this.customCopyCutEnabled) {
|
|
11682
|
+
doc.body.appendChild(tempDiv);
|
|
11683
|
+
}
|
|
11569
11684
|
this.state.tempDiv = tempDiv;
|
|
11570
11685
|
}
|
|
11571
11686
|
var div = this.state.tempDiv;
|
|
@@ -11777,6 +11892,151 @@ var deleteEmptyList = function (context) {
|
|
|
11777
11892
|
exports.deleteEmptyList = deleteEmptyList;
|
|
11778
11893
|
|
|
11779
11894
|
|
|
11895
|
+
/***/ }),
|
|
11896
|
+
|
|
11897
|
+
/***/ "./packages/roosterjs-content-model-core/lib/corePlugin/copyPaste/utils/pruneUnselectedModel.ts":
|
|
11898
|
+
/*!******************************************************************************************************!*\
|
|
11899
|
+
!*** ./packages/roosterjs-content-model-core/lib/corePlugin/copyPaste/utils/pruneUnselectedModel.ts ***!
|
|
11900
|
+
\******************************************************************************************************/
|
|
11901
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
11902
|
+
|
|
11903
|
+
"use strict";
|
|
11904
|
+
|
|
11905
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
11906
|
+
exports.pruneUnselectedModel = void 0;
|
|
11907
|
+
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
11908
|
+
/**
|
|
11909
|
+
* @internal
|
|
11910
|
+
*/
|
|
11911
|
+
function pruneUnselectedModel(model) {
|
|
11912
|
+
pruneUnselectedModelInternal(model, false /* isSelectionAfterElement */);
|
|
11913
|
+
unwrap(model);
|
|
11914
|
+
}
|
|
11915
|
+
exports.pruneUnselectedModel = pruneUnselectedModel;
|
|
11916
|
+
function pruneUnselectedModelInternal(model, isSelectionAfterElement) {
|
|
11917
|
+
var e_1, _a, _b;
|
|
11918
|
+
for (var index = model.blocks.length - 1; index >= 0; index--) {
|
|
11919
|
+
var block = model.blocks[index];
|
|
11920
|
+
switch (block.blockType) {
|
|
11921
|
+
case 'BlockGroup':
|
|
11922
|
+
pruneUnselectedModelInternal(block, isSelectionAfterElement);
|
|
11923
|
+
if (block.blockGroupType == 'General'
|
|
11924
|
+
? block.blocks.length == 0 && !block.isSelected
|
|
11925
|
+
: block.blocks.length == 0) {
|
|
11926
|
+
model.blocks.splice(index, 1);
|
|
11927
|
+
}
|
|
11928
|
+
break;
|
|
11929
|
+
case 'Divider':
|
|
11930
|
+
case 'Entity':
|
|
11931
|
+
if (!block.isSelected) {
|
|
11932
|
+
model.blocks.splice(index, 1);
|
|
11933
|
+
}
|
|
11934
|
+
else {
|
|
11935
|
+
isSelectionAfterElement = true;
|
|
11936
|
+
}
|
|
11937
|
+
break;
|
|
11938
|
+
case 'Paragraph':
|
|
11939
|
+
var newSegments = [];
|
|
11940
|
+
try {
|
|
11941
|
+
for (var _c = (e_1 = void 0, (0, tslib_1.__values)(block.segments)), _d = _c.next(); !_d.done; _d = _c.next()) {
|
|
11942
|
+
var segment = _d.value;
|
|
11943
|
+
if (segment.segmentType == 'General') {
|
|
11944
|
+
pruneUnselectedModel(segment);
|
|
11945
|
+
if (segment.blocks.length > 0 || segment.isSelected) {
|
|
11946
|
+
newSegments.push(segment);
|
|
11947
|
+
}
|
|
11948
|
+
}
|
|
11949
|
+
else if (segment.isSelected && segment.segmentType != 'SelectionMarker') {
|
|
11950
|
+
newSegments.push(segment);
|
|
11951
|
+
}
|
|
11952
|
+
}
|
|
11953
|
+
}
|
|
11954
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
11955
|
+
finally {
|
|
11956
|
+
try {
|
|
11957
|
+
if (_d && !_d.done && (_a = _c.return)) _a.call(_c);
|
|
11958
|
+
}
|
|
11959
|
+
finally { if (e_1) throw e_1.error; }
|
|
11960
|
+
}
|
|
11961
|
+
block.segments = newSegments;
|
|
11962
|
+
if (block.segments.length == 0) {
|
|
11963
|
+
model.blocks.splice(index, 1);
|
|
11964
|
+
}
|
|
11965
|
+
else {
|
|
11966
|
+
isSelectionAfterElement = true;
|
|
11967
|
+
}
|
|
11968
|
+
break;
|
|
11969
|
+
case 'Table':
|
|
11970
|
+
var filteredRows = [];
|
|
11971
|
+
for (var i = 0; i < block.rows.length; i++) {
|
|
11972
|
+
var row = block.rows[i];
|
|
11973
|
+
for (var j = 0; j < row.cells.length; j++) {
|
|
11974
|
+
var cell = row.cells[j];
|
|
11975
|
+
if (!cell.isSelected) {
|
|
11976
|
+
pruneUnselectedModelInternal(cell, isSelectionAfterElement);
|
|
11977
|
+
}
|
|
11978
|
+
else {
|
|
11979
|
+
isSelectionAfterElement = true;
|
|
11980
|
+
}
|
|
11981
|
+
}
|
|
11982
|
+
var newCells = [];
|
|
11983
|
+
for (var k = 0; k < row.cells.length; k++) {
|
|
11984
|
+
var cell = row.cells[k];
|
|
11985
|
+
if (cell.isSelected || cell.blocks.length > 0) {
|
|
11986
|
+
newCells.push(cell);
|
|
11987
|
+
}
|
|
11988
|
+
}
|
|
11989
|
+
row.cells = newCells;
|
|
11990
|
+
if (row.cells.length > 0) {
|
|
11991
|
+
filteredRows.push(row);
|
|
11992
|
+
}
|
|
11993
|
+
}
|
|
11994
|
+
if (!isSelectionAfterElement &&
|
|
11995
|
+
filteredRows.length == 1 &&
|
|
11996
|
+
filteredRows[0].cells.length == 1 &&
|
|
11997
|
+
!filteredRows[0].cells[0].isSelected) {
|
|
11998
|
+
var cell = filteredRows[0].cells[0];
|
|
11999
|
+
(_b = model.blocks).splice.apply(_b, (0, tslib_1.__spreadArray)([index, 1], (0, tslib_1.__read)(cell.blocks), false));
|
|
12000
|
+
}
|
|
12001
|
+
else if (filteredRows.length == 0) {
|
|
12002
|
+
model.blocks.splice(index, 1);
|
|
12003
|
+
}
|
|
12004
|
+
else {
|
|
12005
|
+
block.rows = filteredRows;
|
|
12006
|
+
}
|
|
12007
|
+
break;
|
|
12008
|
+
}
|
|
12009
|
+
}
|
|
12010
|
+
return isSelectionAfterElement;
|
|
12011
|
+
}
|
|
12012
|
+
function unwrap(model) {
|
|
12013
|
+
var block = model.blocks[0];
|
|
12014
|
+
if (model.blocks.length == 1) {
|
|
12015
|
+
while (block.blockType == 'BlockGroup') {
|
|
12016
|
+
model.blocks = block.blocks;
|
|
12017
|
+
block = model.blocks[0];
|
|
12018
|
+
if (model.blocks.length > 1) {
|
|
12019
|
+
return;
|
|
12020
|
+
}
|
|
12021
|
+
}
|
|
12022
|
+
if (block.blockType == 'Paragraph') {
|
|
12023
|
+
block.isImplicit = true;
|
|
12024
|
+
block.format = {};
|
|
12025
|
+
inheritSegmentFormatToChildren(block);
|
|
12026
|
+
}
|
|
12027
|
+
}
|
|
12028
|
+
}
|
|
12029
|
+
function inheritSegmentFormatToChildren(parent) {
|
|
12030
|
+
var value = parent.segmentFormat;
|
|
12031
|
+
if (value !== undefined) {
|
|
12032
|
+
for (var index = 0; index < parent.segments.length; index++) {
|
|
12033
|
+
var segment = parent.segments[index];
|
|
12034
|
+
segment.format = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, parent.segmentFormat), segment.format);
|
|
12035
|
+
}
|
|
12036
|
+
}
|
|
12037
|
+
}
|
|
12038
|
+
|
|
12039
|
+
|
|
11780
12040
|
/***/ }),
|
|
11781
12041
|
|
|
11782
12042
|
/***/ "./packages/roosterjs-content-model-core/lib/corePlugin/createEditorCorePlugins.ts":
|
|
@@ -12545,17 +12805,10 @@ function handleDelimiterKeyDownEvent(editor, event) {
|
|
|
12545
12805
|
var key = rawEvent.key;
|
|
12546
12806
|
switch (key) {
|
|
12547
12807
|
case 'Enter':
|
|
12548
|
-
|
|
12549
|
-
|
|
12550
|
-
|
|
12551
|
-
|
|
12552
|
-
var helper = editor.getDOMHelper();
|
|
12553
|
-
var entity = (0, roosterjs_content_model_dom_1.findClosestEntityWrapper)(range.startContainer, helper);
|
|
12554
|
-
if (entity &&
|
|
12555
|
-
(0, roosterjs_content_model_dom_1.isNodeOfType)(entity, 'ELEMENT_NODE') &&
|
|
12556
|
-
helper.isNodeInEditor(entity)) {
|
|
12557
|
-
triggerEntityEventOnEnter(editor, entity, rawEvent);
|
|
12558
|
-
}
|
|
12808
|
+
var helper = editor.getDOMHelper();
|
|
12809
|
+
var entity = (0, roosterjs_content_model_dom_1.findClosestEntityWrapper)(range.startContainer, helper);
|
|
12810
|
+
if (entity && (0, roosterjs_content_model_dom_1.isNodeOfType)(entity, 'ELEMENT_NODE') && helper.isNodeInEditor(entity)) {
|
|
12811
|
+
triggerEntityEventOnEnter(editor, entity, rawEvent);
|
|
12559
12812
|
}
|
|
12560
12813
|
break;
|
|
12561
12814
|
case 'ArrowLeft':
|
|
@@ -12794,6 +13047,10 @@ var FormatPlugin = /** @class */ (function () {
|
|
|
12794
13047
|
defaultFormat: (0, tslib_1.__assign)({}, option.defaultSegmentFormat),
|
|
12795
13048
|
pendingFormat: null,
|
|
12796
13049
|
};
|
|
13050
|
+
var defaultFormat = this.state.defaultFormat;
|
|
13051
|
+
if (defaultFormat.fontFamily) {
|
|
13052
|
+
defaultFormat.fontFamily = (0, roosterjs_content_model_dom_1.normalizeFontFamily)(defaultFormat.fontFamily);
|
|
13053
|
+
}
|
|
12797
13054
|
this.defaultFormatKeys = new Set();
|
|
12798
13055
|
(0, roosterjs_content_model_dom_1.getObjectKeys)(DefaultStyleKeyMap).forEach(function (key) {
|
|
12799
13056
|
if (_this.state.defaultFormat[key]) {
|
|
@@ -12815,6 +13072,7 @@ var FormatPlugin = /** @class */ (function () {
|
|
|
12815
13072
|
*/
|
|
12816
13073
|
FormatPlugin.prototype.initialize = function (editor) {
|
|
12817
13074
|
this.editor = editor;
|
|
13075
|
+
this.state.defaultFormat = (0, roosterjs_content_model_dom_1.normalizeSegmentFormat)(this.state.defaultFormat, editor.getEnvironment());
|
|
12818
13076
|
};
|
|
12819
13077
|
/**
|
|
12820
13078
|
* The last method that editor will call to a plugin before it is disposed.
|
|
@@ -13491,7 +13749,7 @@ var SelectionPlugin = /** @class */ (function () {
|
|
|
13491
13749
|
}
|
|
13492
13750
|
};
|
|
13493
13751
|
SelectionPlugin.prototype.onMouseDown = function (editor, rawEvent) {
|
|
13494
|
-
var _a;
|
|
13752
|
+
var _a, _b, _c;
|
|
13495
13753
|
var selection = editor.getDOMSelection();
|
|
13496
13754
|
var image;
|
|
13497
13755
|
// Image selection
|
|
@@ -13530,6 +13788,7 @@ var SelectionPlugin = /** @class */ (function () {
|
|
|
13530
13788
|
rawEvent.preventDefault();
|
|
13531
13789
|
}
|
|
13532
13790
|
}
|
|
13791
|
+
(_c = (_b = this.state).mouseDisposer) === null || _c === void 0 ? void 0 : _c.call(_b);
|
|
13533
13792
|
this.state.mouseDisposer = editor.attachDomEvent({
|
|
13534
13793
|
mousemove: {
|
|
13535
13794
|
beforeDispatch: this.onMouseMove,
|
|
@@ -13542,7 +13801,7 @@ var SelectionPlugin = /** @class */ (function () {
|
|
|
13542
13801
|
};
|
|
13543
13802
|
SelectionPlugin.prototype.onKeyDown = function (editor, rawEvent) {
|
|
13544
13803
|
var _this = this;
|
|
13545
|
-
var _a;
|
|
13804
|
+
var _a, _b;
|
|
13546
13805
|
var key = rawEvent.key;
|
|
13547
13806
|
var selection = editor.getDOMSelection();
|
|
13548
13807
|
var win = editor.getDocument().defaultView;
|
|
@@ -13585,7 +13844,25 @@ var SelectionPlugin = /** @class */ (function () {
|
|
|
13585
13844
|
}
|
|
13586
13845
|
break;
|
|
13587
13846
|
case 'table':
|
|
13588
|
-
|
|
13847
|
+
// After a content change event is handled tableSelection state is reset to null
|
|
13848
|
+
// Since we have table selection from DOMSelection, we can use it to re-create the tableSelection state
|
|
13849
|
+
if (this.state.tableSelection == null) {
|
|
13850
|
+
var table = selection.table, firstRow = selection.firstRow, firstColumn = selection.firstColumn, lastRow = selection.lastRow, lastColumn = selection.lastColumn;
|
|
13851
|
+
var parsedTable = (0, roosterjs_content_model_dom_1.parseTableCells)(table);
|
|
13852
|
+
if (parsedTable) {
|
|
13853
|
+
var firstCo = { row: firstRow, col: firstColumn };
|
|
13854
|
+
var lastCo = { row: lastRow, col: lastColumn };
|
|
13855
|
+
// Create the tableSelection with current table info
|
|
13856
|
+
this.state.tableSelection = {
|
|
13857
|
+
table: table,
|
|
13858
|
+
parsedTable: parsedTable,
|
|
13859
|
+
firstCo: firstCo,
|
|
13860
|
+
lastCo: lastCo,
|
|
13861
|
+
startNode: ((_a = (0, findTableCellElement_1.findTableCellElement)(parsedTable, firstCo)) === null || _a === void 0 ? void 0 : _a.cell) || table,
|
|
13862
|
+
};
|
|
13863
|
+
}
|
|
13864
|
+
}
|
|
13865
|
+
if ((_b = this.state.tableSelection) === null || _b === void 0 ? void 0 : _b.lastCo) {
|
|
13589
13866
|
var shiftKey = rawEvent.shiftKey, key_1 = rawEvent.key;
|
|
13590
13867
|
if (shiftKey && (key_1 == Left || key_1 == Right)) {
|
|
13591
13868
|
var isRtl = (win === null || win === void 0 ? void 0 : win.getComputedStyle(this.state.tableSelection.table).direction) ==
|
|
@@ -14378,7 +14655,7 @@ var Editor = /** @class */ (function () {
|
|
|
14378
14655
|
return result;
|
|
14379
14656
|
};
|
|
14380
14657
|
this.core = (0, createEditorCore_1.createEditorCore)(contentDiv, options);
|
|
14381
|
-
var initialModel = (_a = options.initialModel) !== null && _a !== void 0 ? _a : (0, roosterjs_content_model_dom_1.createEmptyModel)(
|
|
14658
|
+
var initialModel = (_a = options.initialModel) !== null && _a !== void 0 ? _a : (0, roosterjs_content_model_dom_1.createEmptyModel)(this.core.format.defaultFormat);
|
|
14382
14659
|
this.core.api.setContentModel(this.core, initialModel, { ignoreSelection: true }, undefined /*onNodeCreated*/, true /*isInitializing*/);
|
|
14383
14660
|
this.core.plugins.forEach(function (plugin) { return plugin.initialize(_this); });
|
|
14384
14661
|
}
|
|
@@ -15436,6 +15713,7 @@ function trustedHTMLHandlerToDOMCreator(trustedHTMLHandler) {
|
|
|
15436
15713
|
var handler = trustedHTMLHandler || exports.defaultTrustHtmlHandler;
|
|
15437
15714
|
return {
|
|
15438
15715
|
htmlToDOM: function (html) { return new DOMParser().parseFromString(handler(html), 'text/html'); },
|
|
15716
|
+
isBypassed: !trustedHTMLHandler,
|
|
15439
15717
|
};
|
|
15440
15718
|
}
|
|
15441
15719
|
|
|
@@ -15704,10 +15982,22 @@ exports.BulletListType = {
|
|
|
15704
15982
|
* Bullet type circle
|
|
15705
15983
|
*/
|
|
15706
15984
|
Circle: 9,
|
|
15985
|
+
/**
|
|
15986
|
+
* Box Shadow bullet type
|
|
15987
|
+
*/
|
|
15988
|
+
BoxShadow: 10,
|
|
15989
|
+
/**
|
|
15990
|
+
* Rhombus with a cross inside
|
|
15991
|
+
*/
|
|
15992
|
+
Xrhombus: 11,
|
|
15993
|
+
/**
|
|
15994
|
+
* Check mark bullet type
|
|
15995
|
+
*/
|
|
15996
|
+
CheckMark: 12,
|
|
15707
15997
|
/**
|
|
15708
15998
|
* Maximum value of the enum
|
|
15709
15999
|
*/
|
|
15710
|
-
Max:
|
|
16000
|
+
Max: 12,
|
|
15711
16001
|
};
|
|
15712
16002
|
|
|
15713
16003
|
|
|
@@ -16080,7 +16370,7 @@ var BulletListType_1 = __webpack_require__(/*! ./BulletListType */ "./packages/r
|
|
|
16080
16370
|
*/
|
|
16081
16371
|
exports.UnorderedListStyleMap = (_a = {},
|
|
16082
16372
|
_a[BulletListType_1.BulletListType.Disc] = 'disc',
|
|
16083
|
-
_a[BulletListType_1.BulletListType.Square] = '
|
|
16373
|
+
_a[BulletListType_1.BulletListType.Square] = 'square',
|
|
16084
16374
|
_a[BulletListType_1.BulletListType.Circle] = 'circle',
|
|
16085
16375
|
_a[BulletListType_1.BulletListType.Dash] = '"- "',
|
|
16086
16376
|
_a[BulletListType_1.BulletListType.LongArrow] = '"➔ "',
|
|
@@ -16088,6 +16378,9 @@ exports.UnorderedListStyleMap = (_a = {},
|
|
|
16088
16378
|
_a[BulletListType_1.BulletListType.ShortArrow] = '"➢ "',
|
|
16089
16379
|
_a[BulletListType_1.BulletListType.UnfilledArrow] = '"➪ "',
|
|
16090
16380
|
_a[BulletListType_1.BulletListType.Hyphen] = '"— "',
|
|
16381
|
+
_a[BulletListType_1.BulletListType.CheckMark] = '"✔ "',
|
|
16382
|
+
_a[BulletListType_1.BulletListType.Xrhombus] = '"❖ "',
|
|
16383
|
+
_a[BulletListType_1.BulletListType.BoxShadow] = '"❑ "',
|
|
16091
16384
|
_a);
|
|
16092
16385
|
|
|
16093
16386
|
|
|
@@ -16976,6 +17269,7 @@ var createParagraph_1 = __webpack_require__(/*! ../../modelApi/creators/createPa
|
|
|
16976
17269
|
var formatContainerProcessor_1 = __webpack_require__(/*! ./formatContainerProcessor */ "./packages/roosterjs-content-model-dom/lib/domToModel/processors/formatContainerProcessor.ts");
|
|
16977
17270
|
var getDefaultStyle_1 = __webpack_require__(/*! ../utils/getDefaultStyle */ "./packages/roosterjs-content-model-dom/lib/domToModel/utils/getDefaultStyle.ts");
|
|
16978
17271
|
var isBlockElement_1 = __webpack_require__(/*! ../utils/isBlockElement */ "./packages/roosterjs-content-model-dom/lib/domToModel/utils/isBlockElement.ts");
|
|
17272
|
+
var entityUtils_1 = __webpack_require__(/*! ../../domUtils/entityUtils */ "./packages/roosterjs-content-model-dom/lib/domUtils/entityUtils.ts");
|
|
16979
17273
|
var parseFormat_1 = __webpack_require__(/*! ../utils/parseFormat */ "./packages/roosterjs-content-model-dom/lib/domToModel/utils/parseFormat.ts");
|
|
16980
17274
|
var stackFormat_1 = __webpack_require__(/*! ../utils/stackFormat */ "./packages/roosterjs-content-model-dom/lib/domToModel/utils/stackFormat.ts");
|
|
16981
17275
|
var FormatContainerTriggerStyles = [
|
|
@@ -16996,6 +17290,7 @@ var FormatContainerTriggerStyles = [
|
|
|
16996
17290
|
'minWidth',
|
|
16997
17291
|
'minHeight',
|
|
16998
17292
|
];
|
|
17293
|
+
var FormatContainerTriggerAttributes = ['id'];
|
|
16999
17294
|
var ByPassFormatContainerTags = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'P', 'A'];
|
|
17000
17295
|
var SegmentDecoratorTags = ['A', 'CODE'];
|
|
17001
17296
|
/**
|
|
@@ -17007,6 +17302,9 @@ var knownElementProcessor = function (group, element, context) {
|
|
|
17007
17302
|
shouldUseFormatContainer(element, context)) {
|
|
17008
17303
|
(0, formatContainerProcessor_1.formatContainerProcessor)(group, element, context);
|
|
17009
17304
|
}
|
|
17305
|
+
else if ((0, entityUtils_1.isBlockEntityContainer)(element)) {
|
|
17306
|
+
context.elementProcessors.child(group, element, context);
|
|
17307
|
+
}
|
|
17010
17308
|
else if (isBlock) {
|
|
17011
17309
|
var decorator = context.blockDecorator.tagName ? context.blockDecorator : undefined;
|
|
17012
17310
|
var isSegmentDecorator = SegmentDecoratorTags.indexOf(element.tagName) >= 0;
|
|
@@ -17049,7 +17347,8 @@ function shouldUseFormatContainer(element, context) {
|
|
|
17049
17347
|
}
|
|
17050
17348
|
// For block element with positive value of border width or top/bottom margin/padding,
|
|
17051
17349
|
// we need to use format container
|
|
17052
|
-
if (FormatContainerTriggerStyles.some(function (key) { return parseInt(style[key] || defaultStyle[key] || '') > 0; })
|
|
17350
|
+
if (FormatContainerTriggerStyles.some(function (key) { return parseInt(style[key] || defaultStyle[key] || '') > 0; }) ||
|
|
17351
|
+
FormatContainerTriggerAttributes.some(function (attr) { return element.hasAttribute(attr); })) {
|
|
17053
17352
|
return true;
|
|
17054
17353
|
}
|
|
17055
17354
|
// For margin left/right with value "auto", we need to use format container
|
|
@@ -17335,6 +17634,7 @@ var tableProcessor = function (group, tableElement, context) {
|
|
|
17335
17634
|
}
|
|
17336
17635
|
(0, parseFormat_1.parseFormat)(tr, context.formatParsers.block, context.blockFormat, context);
|
|
17337
17636
|
(0, parseFormat_1.parseFormat)(tr, context.formatParsers.segmentOnBlock, context.segmentFormat, context);
|
|
17637
|
+
tableRow.height = parseInt(tr.style.height) || 0;
|
|
17338
17638
|
var _loop_2 = function (sourceCol, targetCol) {
|
|
17339
17639
|
for (; tableRow.cells[targetCol]; targetCol++) { }
|
|
17340
17640
|
var td = tr.cells[sourceCol];
|
|
@@ -18406,6 +18706,35 @@ function setHiddenProperty(node, key, value) {
|
|
|
18406
18706
|
exports.setHiddenProperty = setHiddenProperty;
|
|
18407
18707
|
|
|
18408
18708
|
|
|
18709
|
+
/***/ }),
|
|
18710
|
+
|
|
18711
|
+
/***/ "./packages/roosterjs-content-model-dom/lib/domUtils/hiddenProperties/imageState.ts":
|
|
18712
|
+
/*!******************************************************************************************!*\
|
|
18713
|
+
!*** ./packages/roosterjs-content-model-dom/lib/domUtils/hiddenProperties/imageState.ts ***!
|
|
18714
|
+
\******************************************************************************************/
|
|
18715
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
18716
|
+
|
|
18717
|
+
"use strict";
|
|
18718
|
+
|
|
18719
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
18720
|
+
exports.setImageState = exports.getImageState = void 0;
|
|
18721
|
+
var hiddenProperty_1 = __webpack_require__(/*! ./hiddenProperty */ "./packages/roosterjs-content-model-dom/lib/domUtils/hiddenProperties/hiddenProperty.ts");
|
|
18722
|
+
/**
|
|
18723
|
+
* Get image state from element. This is used to store a image state.
|
|
18724
|
+
*/
|
|
18725
|
+
function getImageState(element) {
|
|
18726
|
+
return (0, hiddenProperty_1.getHiddenProperty)(element, 'imageState');
|
|
18727
|
+
}
|
|
18728
|
+
exports.getImageState = getImageState;
|
|
18729
|
+
/**
|
|
18730
|
+
* Set image state to element. This is used to store a image state.
|
|
18731
|
+
*/
|
|
18732
|
+
function setImageState(element, marker) {
|
|
18733
|
+
(0, hiddenProperty_1.setHiddenProperty)(element, 'imageState', marker);
|
|
18734
|
+
}
|
|
18735
|
+
exports.setImageState = setImageState;
|
|
18736
|
+
|
|
18737
|
+
|
|
18409
18738
|
/***/ }),
|
|
18410
18739
|
|
|
18411
18740
|
/***/ "./packages/roosterjs-content-model-dom/lib/domUtils/hiddenProperties/paragraphMarker.ts":
|
|
@@ -18928,6 +19257,56 @@ function isBold(boldStyle) {
|
|
|
18928
19257
|
exports.isBold = isBold;
|
|
18929
19258
|
|
|
18930
19259
|
|
|
19260
|
+
/***/ }),
|
|
19261
|
+
|
|
19262
|
+
/***/ "./packages/roosterjs-content-model-dom/lib/domUtils/style/normalizeFontFamily.ts":
|
|
19263
|
+
/*!****************************************************************************************!*\
|
|
19264
|
+
!*** ./packages/roosterjs-content-model-dom/lib/domUtils/style/normalizeFontFamily.ts ***!
|
|
19265
|
+
\****************************************************************************************/
|
|
19266
|
+
/***/ ((__unused_webpack_module, exports) => {
|
|
19267
|
+
|
|
19268
|
+
"use strict";
|
|
19269
|
+
|
|
19270
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
19271
|
+
exports.normalizeFontFamily = void 0;
|
|
19272
|
+
/**
|
|
19273
|
+
* Normalize font family string to a standard format
|
|
19274
|
+
* Add quotes around font family names that contain non-alphanumeric/dash characters
|
|
19275
|
+
* @param fontFamily The font family string to normalize
|
|
19276
|
+
* @returns The normalized font family string
|
|
19277
|
+
*/
|
|
19278
|
+
function normalizeFontFamily(fontFamily) {
|
|
19279
|
+
var existingQuotedFontsRegex = /".*?"/g;
|
|
19280
|
+
var match = existingQuotedFontsRegex.exec(fontFamily);
|
|
19281
|
+
var start = 0;
|
|
19282
|
+
var result = [];
|
|
19283
|
+
while (match) {
|
|
19284
|
+
process(fontFamily, result, start, match.index);
|
|
19285
|
+
start = match.index + match[0].length;
|
|
19286
|
+
result.push(match[0]);
|
|
19287
|
+
match = existingQuotedFontsRegex.exec(fontFamily);
|
|
19288
|
+
}
|
|
19289
|
+
process(fontFamily, result, start, fontFamily.length);
|
|
19290
|
+
return result.join(', ');
|
|
19291
|
+
}
|
|
19292
|
+
exports.normalizeFontFamily = normalizeFontFamily;
|
|
19293
|
+
function process(fontFamily, result, start, end) {
|
|
19294
|
+
var families = fontFamily.substring(start, end).split(',');
|
|
19295
|
+
families.forEach(function (family) {
|
|
19296
|
+
family = family.trim();
|
|
19297
|
+
if (family) {
|
|
19298
|
+
// Check if the family name contains non-alphanumeric characters
|
|
19299
|
+
if (/[^a-zA-Z0-9\-]/.test(family)) {
|
|
19300
|
+
result.push("\"" + family + "\"");
|
|
19301
|
+
}
|
|
19302
|
+
else {
|
|
19303
|
+
result.push(family);
|
|
19304
|
+
}
|
|
19305
|
+
}
|
|
19306
|
+
});
|
|
19307
|
+
}
|
|
19308
|
+
|
|
19309
|
+
|
|
18931
19310
|
/***/ }),
|
|
18932
19311
|
|
|
18933
19312
|
/***/ "./packages/roosterjs-content-model-dom/lib/domUtils/style/transformColor.ts":
|
|
@@ -19948,6 +20327,7 @@ var fontSizeFormatHandler_1 = __webpack_require__(/*! ./segment/fontSizeFormatHa
|
|
|
19948
20327
|
var getObjectKeys_1 = __webpack_require__(/*! ../domUtils/getObjectKeys */ "./packages/roosterjs-content-model-dom/lib/domUtils/getObjectKeys.ts");
|
|
19949
20328
|
var htmlAlignFormatHandler_1 = __webpack_require__(/*! ./block/htmlAlignFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/block/htmlAlignFormatHandler.ts");
|
|
19950
20329
|
var idFormatHandler_1 = __webpack_require__(/*! ./common/idFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/common/idFormatHandler.ts");
|
|
20330
|
+
var imageStateFormatHandler_1 = __webpack_require__(/*! ./segment/imageStateFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/segment/imageStateFormatHandler.ts");
|
|
19951
20331
|
var italicFormatHandler_1 = __webpack_require__(/*! ./segment/italicFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/segment/italicFormatHandler.ts");
|
|
19952
20332
|
var letterSpacingFormatHandler_1 = __webpack_require__(/*! ./segment/letterSpacingFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/segment/letterSpacingFormatHandler.ts");
|
|
19953
20333
|
var lineHeightFormatHandler_1 = __webpack_require__(/*! ./block/lineHeightFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/block/lineHeightFormatHandler.ts");
|
|
@@ -19987,6 +20367,7 @@ var defaultFormatHandlerMap = {
|
|
|
19987
20367
|
entity: entityFormatHandler_1.entityFormatHandler,
|
|
19988
20368
|
htmlAlign: htmlAlignFormatHandler_1.htmlAlignFormatHandler,
|
|
19989
20369
|
id: idFormatHandler_1.idFormatHandler,
|
|
20370
|
+
imageState: imageStateFormatHandler_1.imageStateFormatHandler,
|
|
19990
20371
|
italic: italicFormatHandler_1.italicFormatHandler,
|
|
19991
20372
|
letterSpacing: letterSpacingFormatHandler_1.letterSpacingFormatHandler,
|
|
19992
20373
|
lineHeight: lineHeightFormatHandler_1.lineHeightFormatHandler,
|
|
@@ -20099,6 +20480,7 @@ exports.defaultFormatKeysPerCategory = {
|
|
|
20099
20480
|
'display',
|
|
20100
20481
|
'float',
|
|
20101
20482
|
'verticalAlign',
|
|
20483
|
+
'imageState',
|
|
20102
20484
|
],
|
|
20103
20485
|
link: [
|
|
20104
20486
|
'link',
|
|
@@ -20117,7 +20499,7 @@ exports.defaultFormatKeysPerCategory = {
|
|
|
20117
20499
|
code: ['fontFamily', 'display'],
|
|
20118
20500
|
dataset: ['dataset'],
|
|
20119
20501
|
divider: (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(sharedBlockFormats), false), (0, tslib_1.__read)(sharedContainerFormats), false), ['display', 'size', 'htmlAlign'], false),
|
|
20120
|
-
container: (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(sharedContainerFormats), false), ['htmlAlign', 'size', 'display'], false),
|
|
20502
|
+
container: (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(sharedContainerFormats), false), ['htmlAlign', 'size', 'display', 'id'], false),
|
|
20121
20503
|
entity: ['entity'],
|
|
20122
20504
|
general: ['textColor', 'backgroundColor'], // General model still need to do color transformation in dark mode
|
|
20123
20505
|
};
|
|
@@ -20476,6 +20858,37 @@ function normalizeFontSize(fontSize, contextFont, context) {
|
|
|
20476
20858
|
}
|
|
20477
20859
|
|
|
20478
20860
|
|
|
20861
|
+
/***/ }),
|
|
20862
|
+
|
|
20863
|
+
/***/ "./packages/roosterjs-content-model-dom/lib/formatHandlers/segment/imageStateFormatHandler.ts":
|
|
20864
|
+
/*!****************************************************************************************************!*\
|
|
20865
|
+
!*** ./packages/roosterjs-content-model-dom/lib/formatHandlers/segment/imageStateFormatHandler.ts ***!
|
|
20866
|
+
\****************************************************************************************************/
|
|
20867
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
20868
|
+
|
|
20869
|
+
"use strict";
|
|
20870
|
+
|
|
20871
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
20872
|
+
exports.imageStateFormatHandler = void 0;
|
|
20873
|
+
var imageState_1 = __webpack_require__(/*! ../../domUtils/hiddenProperties/imageState */ "./packages/roosterjs-content-model-dom/lib/domUtils/hiddenProperties/imageState.ts");
|
|
20874
|
+
/**
|
|
20875
|
+
* @internal
|
|
20876
|
+
*/
|
|
20877
|
+
exports.imageStateFormatHandler = {
|
|
20878
|
+
parse: function (format, element) {
|
|
20879
|
+
var marker = (0, imageState_1.getImageState)(element);
|
|
20880
|
+
if (marker) {
|
|
20881
|
+
format.imageState = marker;
|
|
20882
|
+
}
|
|
20883
|
+
},
|
|
20884
|
+
apply: function (format, element) {
|
|
20885
|
+
if (format.imageState) {
|
|
20886
|
+
(0, imageState_1.setImageState)(element, format.imageState);
|
|
20887
|
+
}
|
|
20888
|
+
},
|
|
20889
|
+
};
|
|
20890
|
+
|
|
20891
|
+
|
|
20479
20892
|
/***/ }),
|
|
20480
20893
|
|
|
20481
20894
|
/***/ "./packages/roosterjs-content-model-dom/lib/formatHandlers/segment/italicFormatHandler.ts":
|
|
@@ -21266,9 +21679,9 @@ exports.shouldSetValue = shouldSetValue;
|
|
|
21266
21679
|
|
|
21267
21680
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
21268
21681
|
exports.createParagraphDecorator = exports.createContentModelDocument = exports.createImage = exports.createText = exports.createTableCell = exports.createTable = exports.createSelectionMarker = exports.createParagraph = exports.createFormatContainer = exports.createListItem = exports.createBr = exports.isLinkUndeletable = exports.setLinkUndeletable = exports.normalizeRect = exports.isWhiteSpacePreserved = exports.reuseCachedElement = exports.findClosestBlockEntityContainer = exports.isBlockEntityContainer = exports.isEntityDelimiter = exports.addDelimiters = exports.generateEntityClassNames = exports.parseEntityFormat = exports.getAllEntityWrappers = exports.findClosestEntityWrapper = exports.isEntityElement = exports.unwrap = exports.wrap = exports.wrapAllChildNodes = exports.moveChildNodes = exports.toArray = exports.getSafeIdSelector = exports.getObjectKeys = exports.isElementOfType = exports.isNodeOfType = exports.hasMetadata = exports.getMetadata = exports.updateMetadata = exports.buildSelectionMarker = exports.isBlockElement = exports.areSameFormats = exports.parseFormat = exports.getRegularSelectionOffsets = exports.tableProcessor = exports.entityProcessor = exports.processChildNode = exports.handleRegularSelection = exports.childProcessor = exports.contentModelToText = exports.contentModelToDom = exports.domToContentModel = void 0;
|
|
21269
|
-
exports.
|
|
21270
|
-
exports.
|
|
21271
|
-
exports.EmptySegmentFormat = void 0;
|
|
21682
|
+
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.ParagraphFormats = exports.ListFormatsToMove = exports.ListFormatsToKeep = exports.ListFormats = exports.copyFormat = exports.setParagraphNotImplicit = exports.normalizeSegmentFormat = exports.mergeTextSegments = exports.normalizeSingleSegment = exports.isEmpty = exports.addSegment = exports.unwrapBlock = exports.isGeneralSegment = exports.normalizeContentModel = exports.normalizeParagraph = exports.addTextSegment = exports.addLink = exports.addCode = exports.addBlock = exports.mutateSegment = exports.mutateSegments = exports.mutateBlock = exports.createTableRow = exports.createEmptyModel = exports.createListLevel = exports.createDivider = exports.createEntity = exports.createGeneralBlock = exports.createGeneralSegment = void 0;
|
|
21683
|
+
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.normalizeFontFamily = exports.transformColor = exports.readFile = exports.parseTableCells = exports.normalizeText = exports.isSpace = exports.isPunctuation = exports.extractBorderValues = exports.combineBorderValue = void 0;
|
|
21684
|
+
exports.EmptySegmentFormat = exports.UnorderedListStyleMap = exports.OrderedListStyleMap = exports.TableBorderFormat = exports.NumberingListType = exports.BulletListType = exports.ChangeSource = exports.ListMetadataDefinition = exports.getListMetadata = exports.updateListMetadata = void 0;
|
|
21272
21685
|
var domToContentModel_1 = __webpack_require__(/*! ./domToModel/domToContentModel */ "./packages/roosterjs-content-model-dom/lib/domToModel/domToContentModel.ts");
|
|
21273
21686
|
Object.defineProperty(exports, "domToContentModel", ({ enumerable: true, get: function () { return domToContentModel_1.domToContentModel; } }));
|
|
21274
21687
|
var contentModelToDom_1 = __webpack_require__(/*! ./modelToDom/contentModelToDom */ "./packages/roosterjs-content-model-dom/lib/modelToDom/contentModelToDom.ts");
|
|
@@ -21397,8 +21810,16 @@ var normalizeSegment_1 = __webpack_require__(/*! ./modelApi/common/normalizeSegm
|
|
|
21397
21810
|
Object.defineProperty(exports, "normalizeSingleSegment", ({ enumerable: true, get: function () { return normalizeSegment_1.normalizeSingleSegment; } }));
|
|
21398
21811
|
var mergeTextSegments_1 = __webpack_require__(/*! ./modelApi/common/mergeTextSegments */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/mergeTextSegments.ts");
|
|
21399
21812
|
Object.defineProperty(exports, "mergeTextSegments", ({ enumerable: true, get: function () { return mergeTextSegments_1.mergeTextSegments; } }));
|
|
21813
|
+
var normalizeSegmentFormat_1 = __webpack_require__(/*! ./modelApi/common/normalizeSegmentFormat */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/normalizeSegmentFormat.ts");
|
|
21814
|
+
Object.defineProperty(exports, "normalizeSegmentFormat", ({ enumerable: true, get: function () { return normalizeSegmentFormat_1.normalizeSegmentFormat; } }));
|
|
21400
21815
|
var setParagraphNotImplicit_1 = __webpack_require__(/*! ./modelApi/block/setParagraphNotImplicit */ "./packages/roosterjs-content-model-dom/lib/modelApi/block/setParagraphNotImplicit.ts");
|
|
21401
21816
|
Object.defineProperty(exports, "setParagraphNotImplicit", ({ enumerable: true, get: function () { return setParagraphNotImplicit_1.setParagraphNotImplicit; } }));
|
|
21817
|
+
var copyFormat_1 = __webpack_require__(/*! ./modelApi/block/copyFormat */ "./packages/roosterjs-content-model-dom/lib/modelApi/block/copyFormat.ts");
|
|
21818
|
+
Object.defineProperty(exports, "copyFormat", ({ enumerable: true, get: function () { return copyFormat_1.copyFormat; } }));
|
|
21819
|
+
Object.defineProperty(exports, "ListFormats", ({ enumerable: true, get: function () { return copyFormat_1.ListFormats; } }));
|
|
21820
|
+
Object.defineProperty(exports, "ListFormatsToKeep", ({ enumerable: true, get: function () { return copyFormat_1.ListFormatsToKeep; } }));
|
|
21821
|
+
Object.defineProperty(exports, "ListFormatsToMove", ({ enumerable: true, get: function () { return copyFormat_1.ListFormatsToMove; } }));
|
|
21822
|
+
Object.defineProperty(exports, "ParagraphFormats", ({ enumerable: true, get: function () { return copyFormat_1.ParagraphFormats; } }));
|
|
21402
21823
|
var getOrderedListNumberStr_1 = __webpack_require__(/*! ./modelApi/list/getOrderedListNumberStr */ "./packages/roosterjs-content-model-dom/lib/modelApi/list/getOrderedListNumberStr.ts");
|
|
21403
21824
|
Object.defineProperty(exports, "getOrderedListNumberStr", ({ enumerable: true, get: function () { return getOrderedListNumberStr_1.getOrderedListNumberStr; } }));
|
|
21404
21825
|
var getAutoListStyleType_1 = __webpack_require__(/*! ./modelApi/list/getAutoListStyleType */ "./packages/roosterjs-content-model-dom/lib/modelApi/list/getAutoListStyleType.ts");
|
|
@@ -21444,6 +21865,8 @@ var readFile_1 = __webpack_require__(/*! ./domUtils/readFile */ "./packages/roos
|
|
|
21444
21865
|
Object.defineProperty(exports, "readFile", ({ enumerable: true, get: function () { return readFile_1.readFile; } }));
|
|
21445
21866
|
var transformColor_1 = __webpack_require__(/*! ./domUtils/style/transformColor */ "./packages/roosterjs-content-model-dom/lib/domUtils/style/transformColor.ts");
|
|
21446
21867
|
Object.defineProperty(exports, "transformColor", ({ enumerable: true, get: function () { return transformColor_1.transformColor; } }));
|
|
21868
|
+
var normalizeFontFamily_1 = __webpack_require__(/*! ./domUtils/style/normalizeFontFamily */ "./packages/roosterjs-content-model-dom/lib/domUtils/style/normalizeFontFamily.ts");
|
|
21869
|
+
Object.defineProperty(exports, "normalizeFontFamily", ({ enumerable: true, get: function () { return normalizeFontFamily_1.normalizeFontFamily; } }));
|
|
21447
21870
|
var extractClipboardItems_1 = __webpack_require__(/*! ./domUtils/event/extractClipboardItems */ "./packages/roosterjs-content-model-dom/lib/domUtils/event/extractClipboardItems.ts");
|
|
21448
21871
|
Object.defineProperty(exports, "extractClipboardItems", ({ enumerable: true, get: function () { return extractClipboardItems_1.extractClipboardItems; } }));
|
|
21449
21872
|
var cacheGetEventData_1 = __webpack_require__(/*! ./domUtils/event/cacheGetEventData */ "./packages/roosterjs-content-model-dom/lib/domUtils/event/cacheGetEventData.ts");
|
|
@@ -21451,6 +21874,9 @@ Object.defineProperty(exports, "cacheGetEventData", ({ enumerable: true, get: fu
|
|
|
21451
21874
|
var paragraphMarker_1 = __webpack_require__(/*! ./domUtils/hiddenProperties/paragraphMarker */ "./packages/roosterjs-content-model-dom/lib/domUtils/hiddenProperties/paragraphMarker.ts");
|
|
21452
21875
|
Object.defineProperty(exports, "setParagraphMarker", ({ enumerable: true, get: function () { return paragraphMarker_1.setParagraphMarker; } }));
|
|
21453
21876
|
Object.defineProperty(exports, "getParagraphMarker", ({ enumerable: true, get: function () { return paragraphMarker_1.getParagraphMarker; } }));
|
|
21877
|
+
var imageState_1 = __webpack_require__(/*! ./domUtils/hiddenProperties/imageState */ "./packages/roosterjs-content-model-dom/lib/domUtils/hiddenProperties/imageState.ts");
|
|
21878
|
+
Object.defineProperty(exports, "setImageState", ({ enumerable: true, get: function () { return imageState_1.setImageState; } }));
|
|
21879
|
+
Object.defineProperty(exports, "getImageState", ({ enumerable: true, get: function () { return imageState_1.getImageState; } }));
|
|
21454
21880
|
var isBlockGroupOfType_1 = __webpack_require__(/*! ./modelApi/typeCheck/isBlockGroupOfType */ "./packages/roosterjs-content-model-dom/lib/modelApi/typeCheck/isBlockGroupOfType.ts");
|
|
21455
21881
|
Object.defineProperty(exports, "isBlockGroupOfType", ({ enumerable: true, get: function () { return isBlockGroupOfType_1.isBlockGroupOfType; } }));
|
|
21456
21882
|
var iterateSelections_1 = __webpack_require__(/*! ./modelApi/selection/iterateSelections */ "./packages/roosterjs-content-model-dom/lib/modelApi/selection/iterateSelections.ts");
|
|
@@ -21530,6 +21956,92 @@ var EmptySegmentFormat_1 = __webpack_require__(/*! ./constants/EmptySegmentForma
|
|
|
21530
21956
|
Object.defineProperty(exports, "EmptySegmentFormat", ({ enumerable: true, get: function () { return EmptySegmentFormat_1.EmptySegmentFormat; } }));
|
|
21531
21957
|
|
|
21532
21958
|
|
|
21959
|
+
/***/ }),
|
|
21960
|
+
|
|
21961
|
+
/***/ "./packages/roosterjs-content-model-dom/lib/modelApi/block/copyFormat.ts":
|
|
21962
|
+
/*!*******************************************************************************!*\
|
|
21963
|
+
!*** ./packages/roosterjs-content-model-dom/lib/modelApi/block/copyFormat.ts ***!
|
|
21964
|
+
\*******************************************************************************/
|
|
21965
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
21966
|
+
|
|
21967
|
+
"use strict";
|
|
21968
|
+
|
|
21969
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
21970
|
+
exports.copyFormat = exports.ParagraphFormats = exports.ListFormats = exports.ListFormatsToKeep = exports.ListFormatsToMove = void 0;
|
|
21971
|
+
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
21972
|
+
/**
|
|
21973
|
+
* When copy format between list and paragraph, these are the formats that we can copy and remove from the source
|
|
21974
|
+
*/
|
|
21975
|
+
exports.ListFormatsToMove = [
|
|
21976
|
+
'marginRight',
|
|
21977
|
+
'marginLeft',
|
|
21978
|
+
'paddingRight',
|
|
21979
|
+
'paddingLeft',
|
|
21980
|
+
];
|
|
21981
|
+
/**
|
|
21982
|
+
* When copy format between list and paragraph, these are the formats that we can copy and keep in the source
|
|
21983
|
+
*/
|
|
21984
|
+
exports.ListFormatsToKeep = [
|
|
21985
|
+
'direction',
|
|
21986
|
+
'textAlign',
|
|
21987
|
+
'htmlAlign',
|
|
21988
|
+
];
|
|
21989
|
+
/**
|
|
21990
|
+
* When copy format from one block to another, these are all the formats that we can copy
|
|
21991
|
+
*/
|
|
21992
|
+
exports.ListFormats = exports.ListFormatsToMove.concat(exports.ListFormatsToKeep);
|
|
21993
|
+
/**
|
|
21994
|
+
* When copy format between paragraphs, these are the formats that we can copy
|
|
21995
|
+
*/
|
|
21996
|
+
exports.ParagraphFormats = [
|
|
21997
|
+
'backgroundColor',
|
|
21998
|
+
'direction',
|
|
21999
|
+
'textAlign',
|
|
22000
|
+
'htmlAlign',
|
|
22001
|
+
'lineHeight',
|
|
22002
|
+
'textIndent',
|
|
22003
|
+
'marginTop',
|
|
22004
|
+
'marginRight',
|
|
22005
|
+
'marginBottom',
|
|
22006
|
+
'marginLeft',
|
|
22007
|
+
'paddingTop',
|
|
22008
|
+
'paddingRight',
|
|
22009
|
+
'paddingBottom',
|
|
22010
|
+
'paddingLeft',
|
|
22011
|
+
];
|
|
22012
|
+
/**
|
|
22013
|
+
* Copy formats from source to target with only specified keys
|
|
22014
|
+
* @param targetFormat The format object to copy format to
|
|
22015
|
+
* @param sourceFormat The format object to copy format from
|
|
22016
|
+
* @param formatKeys The format keys to copy
|
|
22017
|
+
* @param deleteOriginalFormat True to delete the original format from sourceFormat, false to keep it. @default false
|
|
22018
|
+
*/
|
|
22019
|
+
function copyFormat(targetFormat, sourceFormat, formatKeys, deleteOriginalFormat) {
|
|
22020
|
+
var e_1, _a, _b;
|
|
22021
|
+
try {
|
|
22022
|
+
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()) {
|
|
22023
|
+
var key = formatKeys_1_1.value;
|
|
22024
|
+
if (sourceFormat[key] !== undefined) {
|
|
22025
|
+
Object.assign(targetFormat, (_b = {},
|
|
22026
|
+
_b[key] = sourceFormat[key],
|
|
22027
|
+
_b));
|
|
22028
|
+
if (deleteOriginalFormat) {
|
|
22029
|
+
delete sourceFormat[key];
|
|
22030
|
+
}
|
|
22031
|
+
}
|
|
22032
|
+
}
|
|
22033
|
+
}
|
|
22034
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
22035
|
+
finally {
|
|
22036
|
+
try {
|
|
22037
|
+
if (formatKeys_1_1 && !formatKeys_1_1.done && (_a = formatKeys_1.return)) _a.call(formatKeys_1);
|
|
22038
|
+
}
|
|
22039
|
+
finally { if (e_1) throw e_1.error; }
|
|
22040
|
+
}
|
|
22041
|
+
}
|
|
22042
|
+
exports.copyFormat = copyFormat;
|
|
22043
|
+
|
|
22044
|
+
|
|
21533
22045
|
/***/ }),
|
|
21534
22046
|
|
|
21535
22047
|
/***/ "./packages/roosterjs-content-model-dom/lib/modelApi/block/setParagraphNotImplicit.ts":
|
|
@@ -22009,6 +22521,7 @@ function isListItem(obj) {
|
|
|
22009
22521
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
22010
22522
|
exports.normalizeContentModel = void 0;
|
|
22011
22523
|
var isEmpty_1 = __webpack_require__(/*! ./isEmpty */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/isEmpty.ts");
|
|
22524
|
+
var copyFormat_1 = __webpack_require__(/*! ../block/copyFormat */ "./packages/roosterjs-content-model-dom/lib/modelApi/block/copyFormat.ts");
|
|
22012
22525
|
var mutate_1 = __webpack_require__(/*! ./mutate */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/mutate.ts");
|
|
22013
22526
|
var normalizeParagraph_1 = __webpack_require__(/*! ./normalizeParagraph */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/normalizeParagraph.ts");
|
|
22014
22527
|
var unwrapBlock_1 = __webpack_require__(/*! ./unwrapBlock */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/unwrapBlock.ts");
|
|
@@ -22028,7 +22541,7 @@ function normalizeContentModel(group) {
|
|
|
22028
22541
|
case 'BlockGroup':
|
|
22029
22542
|
if (block.blockGroupType == 'ListItem' && block.levels.length == 0) {
|
|
22030
22543
|
i += block.blocks.length;
|
|
22031
|
-
(0, unwrapBlock_1.unwrapBlock)(group, block);
|
|
22544
|
+
(0, unwrapBlock_1.unwrapBlock)(group, block, copyFormat_1.ListFormats);
|
|
22032
22545
|
}
|
|
22033
22546
|
else {
|
|
22034
22547
|
normalizeContentModel(block);
|
|
@@ -22300,6 +22813,44 @@ function normalizeLastTextSegment(paragraph, segment, lastInlineSegment) {
|
|
|
22300
22813
|
}
|
|
22301
22814
|
|
|
22302
22815
|
|
|
22816
|
+
/***/ }),
|
|
22817
|
+
|
|
22818
|
+
/***/ "./packages/roosterjs-content-model-dom/lib/modelApi/common/normalizeSegmentFormat.ts":
|
|
22819
|
+
/*!********************************************************************************************!*\
|
|
22820
|
+
!*** ./packages/roosterjs-content-model-dom/lib/modelApi/common/normalizeSegmentFormat.ts ***!
|
|
22821
|
+
\********************************************************************************************/
|
|
22822
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
22823
|
+
|
|
22824
|
+
"use strict";
|
|
22825
|
+
|
|
22826
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
22827
|
+
exports.normalizeSegmentFormat = void 0;
|
|
22828
|
+
var createContentModelDocument_1 = __webpack_require__(/*! ../creators/createContentModelDocument */ "./packages/roosterjs-content-model-dom/lib/modelApi/creators/createContentModelDocument.ts");
|
|
22829
|
+
var createText_1 = __webpack_require__(/*! ../creators/createText */ "./packages/roosterjs-content-model-dom/lib/modelApi/creators/createText.ts");
|
|
22830
|
+
var ensureParagraph_1 = __webpack_require__(/*! ./ensureParagraph */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/ensureParagraph.ts");
|
|
22831
|
+
var createModelToDomContext_1 = __webpack_require__(/*! ../../modelToDom/context/createModelToDomContext */ "./packages/roosterjs-content-model-dom/lib/modelToDom/context/createModelToDomContext.ts");
|
|
22832
|
+
var createDomToModelContext_1 = __webpack_require__(/*! ../../domToModel/context/createDomToModelContext */ "./packages/roosterjs-content-model-dom/lib/domToModel/context/createDomToModelContext.ts");
|
|
22833
|
+
/**
|
|
22834
|
+
* Some format values can be changed when apply to DOM, such as font family.
|
|
22835
|
+
* This function will normalize the format and return the same string after DOM modification.
|
|
22836
|
+
* @param format The format to be normalized
|
|
22837
|
+
* @return Normalized format
|
|
22838
|
+
*/
|
|
22839
|
+
function normalizeSegmentFormat(format, environment) {
|
|
22840
|
+
var _a, _b;
|
|
22841
|
+
var span = document.createElement('span');
|
|
22842
|
+
var segment = (0, createText_1.createText)('text', format);
|
|
22843
|
+
var domToModelContext = (0, createDomToModelContext_1.createDomToModelContextWithConfig)(environment.domToModelSettings.calculated);
|
|
22844
|
+
var modelToDomContext = (0, createModelToDomContext_1.createModelToDomContextWithConfig)(environment.modelToDomSettings.calculated);
|
|
22845
|
+
var model = (0, createContentModelDocument_1.createContentModelDocument)();
|
|
22846
|
+
modelToDomContext.modelHandlers.segment(span.ownerDocument, span, segment, modelToDomContext, []);
|
|
22847
|
+
domToModelContext.elementProcessors.element(model, span, domToModelContext);
|
|
22848
|
+
var paragraph = (0, ensureParagraph_1.ensureParagraph)(model);
|
|
22849
|
+
return (_b = (_a = paragraph.segments[0]) === null || _a === void 0 ? void 0 : _a.format) !== null && _b !== void 0 ? _b : format;
|
|
22850
|
+
}
|
|
22851
|
+
exports.normalizeSegmentFormat = normalizeSegmentFormat;
|
|
22852
|
+
|
|
22853
|
+
|
|
22303
22854
|
/***/ }),
|
|
22304
22855
|
|
|
22305
22856
|
/***/ "./packages/roosterjs-content-model-dom/lib/modelApi/common/unwrapBlock.ts":
|
|
@@ -22313,6 +22864,7 @@ function normalizeLastTextSegment(paragraph, segment, lastInlineSegment) {
|
|
|
22313
22864
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
22314
22865
|
exports.unwrapBlock = void 0;
|
|
22315
22866
|
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
22867
|
+
var copyFormat_1 = __webpack_require__(/*! ../../modelApi/block/copyFormat */ "./packages/roosterjs-content-model-dom/lib/modelApi/block/copyFormat.ts");
|
|
22316
22868
|
var mutate_1 = __webpack_require__(/*! ./mutate */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/mutate.ts");
|
|
22317
22869
|
var setParagraphNotImplicit_1 = __webpack_require__(/*! ../block/setParagraphNotImplicit */ "./packages/roosterjs-content-model-dom/lib/modelApi/block/setParagraphNotImplicit.ts");
|
|
22318
22870
|
/**
|
|
@@ -22320,14 +22872,21 @@ var setParagraphNotImplicit_1 = __webpack_require__(/*! ../block/setParagraphNot
|
|
|
22320
22872
|
* @param parent Parent block group of the unwrapping group
|
|
22321
22873
|
* @param groupToUnwrap The block group to unwrap
|
|
22322
22874
|
*/
|
|
22323
|
-
function unwrapBlock(parent, groupToUnwrap) {
|
|
22875
|
+
function unwrapBlock(parent, groupToUnwrap, formatsToKeep) {
|
|
22324
22876
|
var _a;
|
|
22325
22877
|
var _b, _c;
|
|
22326
22878
|
var index = (_b = parent === null || parent === void 0 ? void 0 : parent.blocks.indexOf(groupToUnwrap)) !== null && _b !== void 0 ? _b : -1;
|
|
22327
22879
|
if (index >= 0) {
|
|
22328
22880
|
groupToUnwrap.blocks.forEach(setParagraphNotImplicit_1.setParagraphNotImplicit);
|
|
22329
22881
|
if (parent) {
|
|
22330
|
-
(_c = (0, mutate_1.mutateBlock)(parent)) === null || _c === void 0 ? void 0 : (_a = _c.blocks).splice.apply(_a, (0, tslib_1.__spreadArray)([index,
|
|
22882
|
+
(_c = (0, mutate_1.mutateBlock)(parent)) === null || _c === void 0 ? void 0 : (_a = _c.blocks).splice.apply(_a, (0, tslib_1.__spreadArray)([index,
|
|
22883
|
+
1], (0, tslib_1.__read)(groupToUnwrap.blocks.map(function (x) {
|
|
22884
|
+
var mutableBlock = (0, mutate_1.mutateBlock)(x);
|
|
22885
|
+
if (formatsToKeep) {
|
|
22886
|
+
(0, copyFormat_1.copyFormat)(mutableBlock.format, groupToUnwrap.format, formatsToKeep);
|
|
22887
|
+
}
|
|
22888
|
+
return mutableBlock;
|
|
22889
|
+
})), false));
|
|
22331
22890
|
}
|
|
22332
22891
|
}
|
|
22333
22892
|
}
|
|
@@ -24453,6 +25012,7 @@ exports.retrieveModelFormatState = void 0;
|
|
|
24453
25012
|
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
24454
25013
|
var borderValues_1 = __webpack_require__(/*! ../../domUtils/style/borderValues */ "./packages/roosterjs-content-model-dom/lib/domUtils/style/borderValues.ts");
|
|
24455
25014
|
var getClosestAncestorBlockGroupIndex_1 = __webpack_require__(/*! ./getClosestAncestorBlockGroupIndex */ "./packages/roosterjs-content-model-dom/lib/modelApi/editing/getClosestAncestorBlockGroupIndex.ts");
|
|
25015
|
+
var updateImageMetadata_1 = __webpack_require__(/*! ../metadata/updateImageMetadata */ "./packages/roosterjs-content-model-dom/lib/modelApi/metadata/updateImageMetadata.ts");
|
|
24456
25016
|
var updateTableMetadata_1 = __webpack_require__(/*! ../metadata/updateTableMetadata */ "./packages/roosterjs-content-model-dom/lib/modelApi/metadata/updateTableMetadata.ts");
|
|
24457
25017
|
var isBold_1 = __webpack_require__(/*! ../../domUtils/style/isBold */ "./packages/roosterjs-content-model-dom/lib/domUtils/style/isBold.ts");
|
|
24458
25018
|
var iterateSelections_1 = __webpack_require__(/*! ../selection/iterateSelections */ "./packages/roosterjs-content-model-dom/lib/modelApi/selection/iterateSelections.ts");
|
|
@@ -24525,6 +25085,7 @@ function retrieveModelFormatState(model, pendingFormat, formatState, conflictSol
|
|
|
24525
25085
|
}
|
|
24526
25086
|
else {
|
|
24527
25087
|
formatState.imageFormat = undefined;
|
|
25088
|
+
formatState.imageEditingMetadata = undefined;
|
|
24528
25089
|
}
|
|
24529
25090
|
}
|
|
24530
25091
|
});
|
|
@@ -24621,6 +25182,7 @@ function retrieveImageFormat(image, result) {
|
|
|
24621
25182
|
boxShadow: format.boxShadow,
|
|
24622
25183
|
borderRadius: format.borderRadius,
|
|
24623
25184
|
};
|
|
25185
|
+
result.imageEditingMetadata = (0, updateImageMetadata_1.getImageMetadata)(image);
|
|
24624
25186
|
}
|
|
24625
25187
|
function mergeValue(format, key, newValue, isFirst, conflictSolution, parseFn) {
|
|
24626
25188
|
if (conflictSolution === void 0) { conflictSolution = 'remove'; }
|
|
@@ -28956,52 +29518,71 @@ var AutoFormatPlugin = /** @class */ (function () {
|
|
|
28956
29518
|
if (options === void 0) { options = DefaultOptions; }
|
|
28957
29519
|
this.options = options;
|
|
28958
29520
|
this.editor = null;
|
|
28959
|
-
this.
|
|
29521
|
+
this.autoLink = {
|
|
29522
|
+
enabled: !!(this.options.autoLink || this.options.autoTel || this.options.autoMailto),
|
|
29523
|
+
transformFunction: function (_model, previousSegment, paragraph, context) {
|
|
29524
|
+
var _a;
|
|
29525
|
+
var _b = _this.options, autoLink = _b.autoLink, autoTel = _b.autoTel, autoMailto = _b.autoMailto;
|
|
29526
|
+
var linkSegment = (0, roosterjs_content_model_api_1.promoteLink)(previousSegment, paragraph, {
|
|
29527
|
+
autoLink: autoLink,
|
|
29528
|
+
autoTel: autoTel,
|
|
29529
|
+
autoMailto: autoMailto,
|
|
29530
|
+
});
|
|
29531
|
+
if (linkSegment) {
|
|
29532
|
+
return createAnchor(((_a = linkSegment.link) === null || _a === void 0 ? void 0 : _a.format.href) || '', linkSegment.text);
|
|
29533
|
+
}
|
|
29534
|
+
return false;
|
|
29535
|
+
},
|
|
29536
|
+
apiName: 'autoLink',
|
|
29537
|
+
changeSource: roosterjs_content_model_dom_1.ChangeSource.AutoLink,
|
|
29538
|
+
};
|
|
29539
|
+
this.tabFeatures = [
|
|
28960
29540
|
{
|
|
28961
|
-
autoFormat: 'list',
|
|
28962
29541
|
enabled: !!(this.options.autoBullet || this.options.autoNumbering),
|
|
28963
29542
|
transformFunction: function (model, _previousSegment, paragraph, context) {
|
|
28964
29543
|
return (0, keyboardListTrigger_1.keyboardListTrigger)(model, paragraph, context, _this.options.autoBullet, _this.options.autoNumbering, _this.options.removeListMargins);
|
|
28965
29544
|
},
|
|
29545
|
+
apiName: 'autoToggleList',
|
|
29546
|
+
changeSource: roosterjs_content_model_dom_1.ChangeSource.AutoFormat,
|
|
28966
29547
|
},
|
|
29548
|
+
this.autoLink,
|
|
29549
|
+
];
|
|
29550
|
+
this.features = (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(this.tabFeatures), false), [
|
|
28967
29551
|
{
|
|
28968
|
-
autoFormat: 'link',
|
|
28969
|
-
enabled: !!(this.options.autoLink || this.options.autoTel || this.options.autoMailto),
|
|
28970
|
-
transformFunction: function (_model, previousSegment, paragraph, context) {
|
|
28971
|
-
var _a;
|
|
28972
|
-
var _b = _this.options, autoLink = _b.autoLink, autoTel = _b.autoTel, autoMailto = _b.autoMailto;
|
|
28973
|
-
var linkSegment = (0, roosterjs_content_model_api_1.promoteLink)(previousSegment, paragraph, {
|
|
28974
|
-
autoLink: autoLink,
|
|
28975
|
-
autoTel: autoTel,
|
|
28976
|
-
autoMailto: autoMailto,
|
|
28977
|
-
});
|
|
28978
|
-
if (linkSegment) {
|
|
28979
|
-
return createAnchor(((_a = linkSegment.link) === null || _a === void 0 ? void 0 : _a.format.href) || '', linkSegment.text);
|
|
28980
|
-
}
|
|
28981
|
-
return false;
|
|
28982
|
-
},
|
|
28983
|
-
},
|
|
28984
|
-
{
|
|
28985
|
-
autoFormat: 'hyphen',
|
|
28986
29552
|
enabled: !!this.options.autoHyphen,
|
|
29553
|
+
apiName: 'autoHyphen',
|
|
29554
|
+
changeSource: roosterjs_content_model_dom_1.ChangeSource.Format,
|
|
28987
29555
|
transformFunction: function (_model, previousSegment, paragraph, context) {
|
|
28988
29556
|
return (0, transformHyphen_1.transformHyphen)(previousSegment, paragraph, context);
|
|
28989
29557
|
},
|
|
28990
29558
|
},
|
|
28991
29559
|
{
|
|
28992
|
-
autoFormat: 'fraction',
|
|
28993
29560
|
enabled: !!this.options.autoFraction,
|
|
29561
|
+
apiName: 'autoFraction',
|
|
29562
|
+
changeSource: roosterjs_content_model_dom_1.ChangeSource.Format,
|
|
28994
29563
|
transformFunction: function (_model, previousSegment, paragraph, context) {
|
|
28995
29564
|
return (0, transformFraction_1.transformFraction)(previousSegment, paragraph, context);
|
|
28996
29565
|
},
|
|
28997
29566
|
},
|
|
28998
29567
|
{
|
|
28999
|
-
autoFormat: 'ordinal',
|
|
29000
29568
|
enabled: !!this.options.autoOrdinals,
|
|
29569
|
+
apiName: 'autoOrdinal',
|
|
29570
|
+
changeSource: roosterjs_content_model_dom_1.ChangeSource.Format,
|
|
29001
29571
|
transformFunction: function (_model, previousSegment, paragraph, context) {
|
|
29002
29572
|
return (0, transformOrdinals_1.transformOrdinals)(previousSegment, paragraph, context);
|
|
29003
29573
|
},
|
|
29004
29574
|
},
|
|
29575
|
+
], false);
|
|
29576
|
+
this.enterFeatures = [
|
|
29577
|
+
{
|
|
29578
|
+
enabled: !!this.options.autoHorizontalLine,
|
|
29579
|
+
transformFunction: function (model, _previousSegment, paragraph, context) {
|
|
29580
|
+
return (0, checkAndInsertHorizontalLine_1.checkAndInsertHorizontalLine)(model, paragraph, context);
|
|
29581
|
+
},
|
|
29582
|
+
apiName: 'autoHorizontalLine',
|
|
29583
|
+
changeSource: roosterjs_content_model_dom_1.ChangeSource.AutoFormat,
|
|
29584
|
+
},
|
|
29585
|
+
this.autoLink,
|
|
29005
29586
|
];
|
|
29006
29587
|
}
|
|
29007
29588
|
/**
|
|
@@ -29048,8 +29629,51 @@ var AutoFormatPlugin = /** @class */ (function () {
|
|
|
29048
29629
|
}
|
|
29049
29630
|
}
|
|
29050
29631
|
};
|
|
29632
|
+
AutoFormatPlugin.prototype.handleKeyboardEvents = function (editor, features) {
|
|
29633
|
+
var formatOptions = {
|
|
29634
|
+
changeSource: '',
|
|
29635
|
+
apiName: '',
|
|
29636
|
+
getChangeData: undefined,
|
|
29637
|
+
};
|
|
29638
|
+
(0, roosterjs_content_model_api_1.formatTextSegmentBeforeSelectionMarker)(editor, function (model, previousSegment, paragraph, _markerFormat, context) {
|
|
29639
|
+
var e_1, _a;
|
|
29640
|
+
var featureApplied = undefined;
|
|
29641
|
+
var _loop_1 = function (feature) {
|
|
29642
|
+
if (feature.enabled) {
|
|
29643
|
+
var result_1 = feature.transformFunction(model, previousSegment, paragraph, context);
|
|
29644
|
+
if (result_1) {
|
|
29645
|
+
if (typeof result_1 !== 'boolean') {
|
|
29646
|
+
formatOptions.getChangeData = function () { return result_1; };
|
|
29647
|
+
}
|
|
29648
|
+
featureApplied = feature;
|
|
29649
|
+
return "break";
|
|
29650
|
+
}
|
|
29651
|
+
}
|
|
29652
|
+
};
|
|
29653
|
+
try {
|
|
29654
|
+
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()) {
|
|
29655
|
+
var feature = features_1_1.value;
|
|
29656
|
+
var state_1 = _loop_1(feature);
|
|
29657
|
+
if (state_1 === "break")
|
|
29658
|
+
break;
|
|
29659
|
+
}
|
|
29660
|
+
}
|
|
29661
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
29662
|
+
finally {
|
|
29663
|
+
try {
|
|
29664
|
+
if (features_1_1 && !features_1_1.done && (_a = features_1.return)) _a.call(features_1);
|
|
29665
|
+
}
|
|
29666
|
+
finally { if (e_1) throw e_1.error; }
|
|
29667
|
+
}
|
|
29668
|
+
if (featureApplied) {
|
|
29669
|
+
formatOptions.changeSource = featureApplied.changeSource;
|
|
29670
|
+
formatOptions.apiName = featureApplied.apiName;
|
|
29671
|
+
}
|
|
29672
|
+
return !!featureApplied;
|
|
29673
|
+
}, formatOptions);
|
|
29674
|
+
return formatOptions;
|
|
29675
|
+
};
|
|
29051
29676
|
AutoFormatPlugin.prototype.handleEditorInputEvent = function (editor, event) {
|
|
29052
|
-
var _this = this;
|
|
29053
29677
|
var rawEvent = event.rawEvent;
|
|
29054
29678
|
var selection = editor.getDOMSelection();
|
|
29055
29679
|
if (rawEvent.inputType === 'insertText' &&
|
|
@@ -29058,53 +29682,12 @@ var AutoFormatPlugin = /** @class */ (function () {
|
|
|
29058
29682
|
selection.range.collapsed) {
|
|
29059
29683
|
switch (rawEvent.data) {
|
|
29060
29684
|
case ' ':
|
|
29061
|
-
|
|
29062
|
-
changeSource: '',
|
|
29063
|
-
apiName: '',
|
|
29064
|
-
getChangeData: undefined,
|
|
29065
|
-
};
|
|
29066
|
-
(0, roosterjs_content_model_api_1.formatTextSegmentBeforeSelectionMarker)(editor, function (model, previousSegment, paragraph, _markerFormat, context) {
|
|
29067
|
-
var e_1, _a;
|
|
29068
|
-
var formatApplied = undefined;
|
|
29069
|
-
var _loop_1 = function (feature) {
|
|
29070
|
-
if (feature.enabled) {
|
|
29071
|
-
var result_1 = feature.transformFunction(model, previousSegment, paragraph, context);
|
|
29072
|
-
if (result_1) {
|
|
29073
|
-
if (typeof result_1 !== 'boolean') {
|
|
29074
|
-
formatOptions_1.getChangeData = function () { return result_1; };
|
|
29075
|
-
}
|
|
29076
|
-
formatApplied = feature.autoFormat;
|
|
29077
|
-
return "break";
|
|
29078
|
-
}
|
|
29079
|
-
}
|
|
29080
|
-
};
|
|
29081
|
-
try {
|
|
29082
|
-
for (var _b = (0, tslib_1.__values)(_this.features), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
29083
|
-
var feature = _c.value;
|
|
29084
|
-
var state_1 = _loop_1(feature);
|
|
29085
|
-
if (state_1 === "break")
|
|
29086
|
-
break;
|
|
29087
|
-
}
|
|
29088
|
-
}
|
|
29089
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
29090
|
-
finally {
|
|
29091
|
-
try {
|
|
29092
|
-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
29093
|
-
}
|
|
29094
|
-
finally { if (e_1) throw e_1.error; }
|
|
29095
|
-
}
|
|
29096
|
-
if (formatApplied) {
|
|
29097
|
-
formatOptions_1.changeSource = getChangeSource(formatApplied);
|
|
29098
|
-
formatOptions_1.apiName = getApiName(formatApplied);
|
|
29099
|
-
}
|
|
29100
|
-
return !!formatApplied;
|
|
29101
|
-
}, formatOptions_1);
|
|
29685
|
+
this.handleKeyboardEvents(editor, this.features);
|
|
29102
29686
|
break;
|
|
29103
29687
|
}
|
|
29104
29688
|
}
|
|
29105
29689
|
};
|
|
29106
29690
|
AutoFormatPlugin.prototype.handleKeyDownEvent = function (editor, event) {
|
|
29107
|
-
var _this = this;
|
|
29108
29691
|
var rawEvent = event.rawEvent;
|
|
29109
29692
|
if (!rawEvent.defaultPrevented && !event.handledByEditFeature) {
|
|
29110
29693
|
switch (rawEvent.key) {
|
|
@@ -29115,34 +29698,21 @@ var AutoFormatPlugin = /** @class */ (function () {
|
|
|
29115
29698
|
break;
|
|
29116
29699
|
case 'Tab':
|
|
29117
29700
|
if (!rawEvent.shiftKey) {
|
|
29118
|
-
|
|
29119
|
-
|
|
29120
|
-
|
|
29121
|
-
|
|
29122
|
-
shouldList = (0, keyboardListTrigger_1.keyboardListTrigger)(model, paragraph, context, autoBullet, autoNumbering, removeListMargins);
|
|
29123
|
-
context.canUndoByBackspace = shouldList;
|
|
29124
|
-
}
|
|
29125
|
-
if (shouldList) {
|
|
29126
|
-
event.rawEvent.preventDefault();
|
|
29127
|
-
}
|
|
29128
|
-
return shouldList;
|
|
29129
|
-
}, {
|
|
29130
|
-
changeSource: roosterjs_content_model_dom_1.ChangeSource.AutoFormat,
|
|
29131
|
-
apiName: 'autoToggleList',
|
|
29132
|
-
});
|
|
29701
|
+
var eventHandled_1 = this.handleKeyboardEvents(editor, this.tabFeatures);
|
|
29702
|
+
if (eventHandled_1.apiName == 'autoToggleList') {
|
|
29703
|
+
event.rawEvent.preventDefault();
|
|
29704
|
+
}
|
|
29133
29705
|
}
|
|
29134
29706
|
break;
|
|
29135
29707
|
case 'Enter':
|
|
29136
|
-
this.
|
|
29708
|
+
var eventHandled = this.handleKeyboardEvents(editor, this.enterFeatures);
|
|
29709
|
+
if (eventHandled.apiName == 'autoHorizontalLine') {
|
|
29710
|
+
event.rawEvent.preventDefault();
|
|
29711
|
+
}
|
|
29137
29712
|
break;
|
|
29138
29713
|
}
|
|
29139
29714
|
}
|
|
29140
29715
|
};
|
|
29141
|
-
AutoFormatPlugin.prototype.handleEnterKey = function (editor, event) {
|
|
29142
|
-
if (this.options.autoHorizontalLine) {
|
|
29143
|
-
(0, checkAndInsertHorizontalLine_1.checkAndInsertHorizontalLine)(editor, event);
|
|
29144
|
-
}
|
|
29145
|
-
};
|
|
29146
29716
|
AutoFormatPlugin.prototype.handleContentChangedEvent = function (editor, event) {
|
|
29147
29717
|
var _a = this.options, autoLink = _a.autoLink, autoTel = _a.autoTel, autoMailto = _a.autoMailto;
|
|
29148
29718
|
if (event.source == 'Paste' && (autoLink || autoTel || autoMailto)) {
|
|
@@ -29156,16 +29726,6 @@ var AutoFormatPlugin = /** @class */ (function () {
|
|
|
29156
29726
|
return AutoFormatPlugin;
|
|
29157
29727
|
}());
|
|
29158
29728
|
exports.AutoFormatPlugin = AutoFormatPlugin;
|
|
29159
|
-
var getApiName = function (autoFormat) {
|
|
29160
|
-
return autoFormat == 'list' ? 'autoToggleList' : autoFormat == 'hyphen' ? 'autoHyphen' : '';
|
|
29161
|
-
};
|
|
29162
|
-
var getChangeSource = function (autoFormat) {
|
|
29163
|
-
return autoFormat == 'list' || autoFormat == 'hyphen'
|
|
29164
|
-
? roosterjs_content_model_dom_1.ChangeSource.AutoFormat
|
|
29165
|
-
: autoFormat == 'link'
|
|
29166
|
-
? roosterjs_content_model_dom_1.ChangeSource.AutoLink
|
|
29167
|
-
: '';
|
|
29168
|
-
};
|
|
29169
29729
|
var createAnchor = function (url, text) {
|
|
29170
29730
|
var anchor = document.createElement('a');
|
|
29171
29731
|
anchor.href = url;
|
|
@@ -29187,7 +29747,6 @@ var createAnchor = function (url, text) {
|
|
|
29187
29747
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
29188
29748
|
exports.checkAndInsertHorizontalLine = exports.insertHorizontalLineIntoModel = void 0;
|
|
29189
29749
|
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
29190
|
-
var roosterjs_content_model_api_1 = __webpack_require__(/*! roosterjs-content-model-api */ "./packages/roosterjs-content-model-api/lib/index.ts");
|
|
29191
29750
|
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
29192
29751
|
var HorizontalLineTriggerCharacters = [
|
|
29193
29752
|
'-',
|
|
@@ -29251,28 +29810,22 @@ exports.insertHorizontalLineIntoModel = insertHorizontalLineIntoModel;
|
|
|
29251
29810
|
* @param event The keydown event
|
|
29252
29811
|
* @returns True if horizontal line is inserted, otherwise false
|
|
29253
29812
|
*/
|
|
29254
|
-
function
|
|
29255
|
-
|
|
29256
|
-
|
|
29257
|
-
|
|
29258
|
-
|
|
29259
|
-
|
|
29813
|
+
var checkAndInsertHorizontalLine = function (model, paragraph, context) {
|
|
29814
|
+
var allText = paragraph.segments.reduce(function (acc, segment) { return (segment.segmentType === 'Text' ? acc + segment.text : acc); }, '');
|
|
29815
|
+
// At least 3 characters are needed to trigger horizontal line
|
|
29816
|
+
if (allText.length < 3) {
|
|
29817
|
+
return false;
|
|
29818
|
+
}
|
|
29819
|
+
return HorizontalLineTriggerCharacters.some(function (triggerCharacter) {
|
|
29820
|
+
var shouldFormat = allText.split('').every(function (char) { return char === triggerCharacter; });
|
|
29821
|
+
if (shouldFormat) {
|
|
29822
|
+
paragraph.segments = paragraph.segments.filter(function (s) { return s.segmentType != 'Text'; });
|
|
29823
|
+
insertHorizontalLineIntoModel(model, context, triggerCharacter);
|
|
29824
|
+
context.canUndoByBackspace = true;
|
|
29260
29825
|
}
|
|
29261
|
-
return
|
|
29262
|
-
var shouldFormat = allText.split('').every(function (char) { return char === triggerCharacter; });
|
|
29263
|
-
if (shouldFormat) {
|
|
29264
|
-
para.segments = para.segments.filter(function (s) { return s.segmentType != 'Text'; });
|
|
29265
|
-
insertHorizontalLineIntoModel(model, context, triggerCharacter);
|
|
29266
|
-
event.rawEvent.preventDefault();
|
|
29267
|
-
context.canUndoByBackspace = true;
|
|
29268
|
-
}
|
|
29269
|
-
return shouldFormat;
|
|
29270
|
-
});
|
|
29271
|
-
}, {
|
|
29272
|
-
changeSource: roosterjs_content_model_dom_1.ChangeSource.AutoFormat,
|
|
29273
|
-
apiName: 'autoHorizontalLine',
|
|
29826
|
+
return shouldFormat;
|
|
29274
29827
|
});
|
|
29275
|
-
}
|
|
29828
|
+
};
|
|
29276
29829
|
exports.checkAndInsertHorizontalLine = checkAndInsertHorizontalLine;
|
|
29277
29830
|
|
|
29278
29831
|
|
|
@@ -30100,6 +30653,7 @@ exports.CustomReplacePlugin = CustomReplacePlugin;
|
|
|
30100
30653
|
|
|
30101
30654
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
30102
30655
|
exports.EditPlugin = void 0;
|
|
30656
|
+
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
30103
30657
|
var keyboardDelete_1 = __webpack_require__(/*! ./keyboardDelete */ "./packages/roosterjs-content-model-plugins/lib/edit/keyboardDelete.ts");
|
|
30104
30658
|
var keyboardEnter_1 = __webpack_require__(/*! ./keyboardEnter */ "./packages/roosterjs-content-model-plugins/lib/edit/keyboardEnter.ts");
|
|
30105
30659
|
var keyboardInput_1 = __webpack_require__(/*! ./keyboardInput */ "./packages/roosterjs-content-model-plugins/lib/edit/keyboardInput.ts");
|
|
@@ -30137,8 +30691,25 @@ var EditPlugin = /** @class */ (function () {
|
|
|
30137
30691
|
this.disposer = null;
|
|
30138
30692
|
this.shouldHandleNextInputEvent = false;
|
|
30139
30693
|
this.selectionAfterDelete = null;
|
|
30140
|
-
this.handleNormalEnter = false;
|
|
30694
|
+
this.handleNormalEnter = function (editor) { return false; };
|
|
30695
|
+
this.options = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, DefaultOptions), options);
|
|
30141
30696
|
}
|
|
30697
|
+
EditPlugin.prototype.createNormalEnterChecker = function (result) {
|
|
30698
|
+
return result ? function () { return true; } : function () { return false; };
|
|
30699
|
+
};
|
|
30700
|
+
EditPlugin.prototype.getHandleNormalEnter = function (editor) {
|
|
30701
|
+
switch (typeof this.options.shouldHandleEnterKey) {
|
|
30702
|
+
case 'function':
|
|
30703
|
+
return this.options.shouldHandleEnterKey;
|
|
30704
|
+
break;
|
|
30705
|
+
case 'boolean':
|
|
30706
|
+
return this.createNormalEnterChecker(this.options.shouldHandleEnterKey);
|
|
30707
|
+
break;
|
|
30708
|
+
default:
|
|
30709
|
+
return this.createNormalEnterChecker(editor.isExperimentalFeatureEnabled('HandleEnterKey'));
|
|
30710
|
+
break;
|
|
30711
|
+
}
|
|
30712
|
+
};
|
|
30142
30713
|
/**
|
|
30143
30714
|
* Get name of this plugin
|
|
30144
30715
|
*/
|
|
@@ -30154,7 +30725,7 @@ var EditPlugin = /** @class */ (function () {
|
|
|
30154
30725
|
EditPlugin.prototype.initialize = function (editor) {
|
|
30155
30726
|
var _this = this;
|
|
30156
30727
|
this.editor = editor;
|
|
30157
|
-
this.handleNormalEnter = this.editor
|
|
30728
|
+
this.handleNormalEnter = this.getHandleNormalEnter(editor);
|
|
30158
30729
|
if (editor.getEnvironment().isAndroid) {
|
|
30159
30730
|
this.disposer = this.editor.attachDomEvent({
|
|
30160
30731
|
beforeinput: {
|
|
@@ -30261,7 +30832,7 @@ var EditPlugin = /** @class */ (function () {
|
|
|
30261
30832
|
if (!hasCtrlOrMetaKey &&
|
|
30262
30833
|
!event.rawEvent.isComposing &&
|
|
30263
30834
|
event.rawEvent.keyCode !== DEAD_KEY) {
|
|
30264
|
-
(0, keyboardEnter_1.keyboardEnter)(editor, rawEvent, this.handleNormalEnter);
|
|
30835
|
+
(0, keyboardEnter_1.keyboardEnter)(editor, rawEvent, this.handleNormalEnter(editor));
|
|
30265
30836
|
}
|
|
30266
30837
|
break;
|
|
30267
30838
|
default:
|
|
@@ -30941,6 +31512,7 @@ var createNewListItem = function (context, listItem, listParent) {
|
|
|
30941
31512
|
var levels = createNewListLevel(listItem);
|
|
30942
31513
|
var newListItem = (0, roosterjs_content_model_dom_1.createListItem)(levels, listItem.formatHolder.format);
|
|
30943
31514
|
newListItem.blocks.push(newParagraph);
|
|
31515
|
+
(0, roosterjs_content_model_dom_1.copyFormat)(newListItem.format, listItem.format, roosterjs_content_model_dom_1.ListFormats);
|
|
30944
31516
|
var remainingBlockCount = listItem.blocks.length - paraIndex - 1;
|
|
30945
31517
|
if (paraIndex >= 0 && remainingBlockCount > 0) {
|
|
30946
31518
|
(_a = newListItem.blocks).push.apply(_a, (0, tslib_1.__spreadArray)([], (0, tslib_1.__read)((0, roosterjs_content_model_dom_1.mutateBlock)(listItem).blocks.splice(paraIndex + 1, remainingBlockCount)), false));
|
|
@@ -31154,7 +31726,7 @@ var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-mo
|
|
|
31154
31726
|
function keyboardEnter(editor, rawEvent, handleNormalEnter) {
|
|
31155
31727
|
var selection = editor.getDOMSelection();
|
|
31156
31728
|
editor.formatContentModel(function (model, context) {
|
|
31157
|
-
var _a;
|
|
31729
|
+
var _a, _b;
|
|
31158
31730
|
// 1. delete the expanded selection if any, then merge paragraph
|
|
31159
31731
|
var result = (0, roosterjs_content_model_dom_1.deleteSelection)(model, [], context);
|
|
31160
31732
|
// 2. Add line break
|
|
@@ -31165,14 +31737,14 @@ function keyboardEnter(editor, rawEvent, handleNormalEnter) {
|
|
|
31165
31737
|
var steps = rawEvent.shiftKey
|
|
31166
31738
|
? []
|
|
31167
31739
|
: [handleAutoLink_1.handleAutoLink, handleEnterOnList_1.handleEnterOnList, deleteEmptyQuote_1.deleteEmptyQuote];
|
|
31168
|
-
if (handleNormalEnter) {
|
|
31740
|
+
if (handleNormalEnter || hasEnterForEntity((_a = result.insertPoint) === null || _a === void 0 ? void 0 : _a.paragraph)) {
|
|
31169
31741
|
steps.push(handleEnterOnParagraph_1.handleEnterOnParagraph);
|
|
31170
31742
|
}
|
|
31171
31743
|
(0, roosterjs_content_model_dom_1.runEditSteps)(steps, result);
|
|
31172
31744
|
}
|
|
31173
31745
|
if (result.deleteResult == 'range') {
|
|
31174
31746
|
// We have deleted something, next input should inherit the segment format from deleted content, so set pending format here
|
|
31175
|
-
context.newPendingFormat = (
|
|
31747
|
+
context.newPendingFormat = (_b = result.insertPoint) === null || _b === void 0 ? void 0 : _b.marker.format;
|
|
31176
31748
|
(0, roosterjs_content_model_dom_1.normalizeContentModel)(model);
|
|
31177
31749
|
rawEvent.preventDefault();
|
|
31178
31750
|
return true;
|
|
@@ -31189,6 +31761,10 @@ function keyboardEnter(editor, rawEvent, handleNormalEnter) {
|
|
|
31189
31761
|
});
|
|
31190
31762
|
}
|
|
31191
31763
|
exports.keyboardEnter = keyboardEnter;
|
|
31764
|
+
function hasEnterForEntity(paragraph) {
|
|
31765
|
+
return (paragraph &&
|
|
31766
|
+
(paragraph.isImplicit || paragraph.segments.some(function (x) { return x.segmentType == 'SelectionMarker'; })));
|
|
31767
|
+
}
|
|
31192
31768
|
|
|
31193
31769
|
|
|
31194
31770
|
/***/ }),
|
|
@@ -31403,7 +31979,7 @@ var space = ' ';
|
|
|
31403
31979
|
* @internal
|
|
31404
31980
|
The handleTabOnParagraph function will handle the tab key in following scenarios:
|
|
31405
31981
|
* 1. When the selection is collapsed and the cursor is at the end of a paragraph, add 4 spaces.
|
|
31406
|
-
* 2. When the selection is collapsed and the cursor is at the start of a paragraph,
|
|
31982
|
+
* 2. When the selection is collapsed and the cursor is at the start of a paragraph, add 4 spaces.
|
|
31407
31983
|
* 3. When the selection is collapsed and the cursor is at the middle of a paragraph, add 4 spaces.
|
|
31408
31984
|
* 4. When the selection is not collapsed, replace the selected range with a single space.
|
|
31409
31985
|
* 5. When the selection is not collapsed, but all segments are selected, call setModelIndention function to indent the whole paragraph
|
|
@@ -31417,8 +31993,10 @@ var space = ' ';
|
|
|
31417
31993
|
function handleTabOnParagraph(model, paragraph, rawEvent, context) {
|
|
31418
31994
|
var selectedSegments = paragraph.segments.filter(function (segment) { return segment.isSelected; });
|
|
31419
31995
|
var isCollapsed = selectedSegments.length === 1 && selectedSegments[0].segmentType === 'SelectionMarker';
|
|
31420
|
-
var isAllSelected = paragraph.segments.every(function (segment) {
|
|
31421
|
-
|
|
31996
|
+
var isAllSelected = paragraph.segments.every(function (segment) {
|
|
31997
|
+
return segment.isSelected || (segment.segmentType == 'Text' && segment.text.trim().length == 0);
|
|
31998
|
+
});
|
|
31999
|
+
if (isAllSelected) {
|
|
31422
32000
|
var _a = paragraph.format, marginLeft = _a.marginLeft, marginRight = _a.marginRight, direction = _a.direction;
|
|
31423
32001
|
var isRtl = direction === 'rtl';
|
|
31424
32002
|
if (rawEvent.shiftKey &&
|
|
@@ -31458,6 +32036,9 @@ function handleTabOnParagraph(model, paragraph, rawEvent, context) {
|
|
|
31458
32036
|
(0, roosterjs_content_model_dom_1.mutateBlock)(paragraph).segments.splice(markerIndex, 0, tabText);
|
|
31459
32037
|
}
|
|
31460
32038
|
else {
|
|
32039
|
+
if (markerIndex <= 0) {
|
|
32040
|
+
return false;
|
|
32041
|
+
}
|
|
31461
32042
|
var tabText = paragraph.segments[markerIndex - 1];
|
|
31462
32043
|
var tabSpacesLength = tabSpaces.length;
|
|
31463
32044
|
if (tabText.segmentType == 'Text') {
|
|
@@ -31675,19 +32256,23 @@ var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-mo
|
|
|
31675
32256
|
* Split the given paragraph from insert point into two paragraphs,
|
|
31676
32257
|
* and move the selection marker to the beginning of the second paragraph
|
|
31677
32258
|
* @param insertPoint The input insert point which includes the paragraph and selection marker
|
|
32259
|
+
* @param formatKeys The format that needs to be copied from the splitted paragraph, if not specified, some default format will be copied
|
|
31678
32260
|
* @returns The new paragraph it created
|
|
31679
32261
|
*/
|
|
31680
32262
|
function splitParagraph(insertPoint) {
|
|
31681
32263
|
var _a;
|
|
31682
32264
|
var paragraph = insertPoint.paragraph, marker = insertPoint.marker;
|
|
31683
|
-
var newParagraph = (0, roosterjs_content_model_dom_1.createParagraph)(false /*isImplicit*/,
|
|
32265
|
+
var newParagraph = (0, roosterjs_content_model_dom_1.createParagraph)(false /*isImplicit*/, {}, paragraph.segmentFormat);
|
|
32266
|
+
(0, roosterjs_content_model_dom_1.copyFormat)(newParagraph.format, paragraph.format, roosterjs_content_model_dom_1.ParagraphFormats);
|
|
31684
32267
|
var markerIndex = paragraph.segments.indexOf(marker);
|
|
31685
32268
|
var segments = paragraph.segments.splice(markerIndex, paragraph.segments.length - markerIndex);
|
|
31686
|
-
|
|
32269
|
+
(_a = newParagraph.segments).push.apply(_a, (0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(segments), false));
|
|
32270
|
+
if (paragraph.segments.length == 0 && !paragraph.isImplicit) {
|
|
31687
32271
|
paragraph.segments.push((0, roosterjs_content_model_dom_1.createBr)(marker.format));
|
|
31688
32272
|
}
|
|
31689
|
-
|
|
31690
|
-
|
|
32273
|
+
else if (paragraph.segments.length > 0) {
|
|
32274
|
+
(0, roosterjs_content_model_dom_1.setParagraphNotImplicit)(paragraph);
|
|
32275
|
+
}
|
|
31691
32276
|
insertPoint.paragraph = newParagraph;
|
|
31692
32277
|
(0, roosterjs_content_model_dom_1.normalizeParagraph)(paragraph);
|
|
31693
32278
|
return newParagraph;
|
|
@@ -32301,9 +32886,6 @@ var ImageEditPlugin = /** @class */ (function () {
|
|
|
32301
32886
|
ImageEditPlugin.prototype.removeImageEditing = function (clonedRoot) {
|
|
32302
32887
|
var images = clonedRoot.querySelectorAll('img');
|
|
32303
32888
|
images.forEach(function (image) {
|
|
32304
|
-
if (image.dataset.isEditing) {
|
|
32305
|
-
delete image.dataset.isEditing;
|
|
32306
|
-
}
|
|
32307
32889
|
if (image.dataset.editingInfo) {
|
|
32308
32890
|
delete image.dataset.editingInfo;
|
|
32309
32891
|
}
|
|
@@ -32374,8 +32956,11 @@ var ImageEditPlugin = /** @class */ (function () {
|
|
|
32374
32956
|
};
|
|
32375
32957
|
ImageEditPlugin.prototype.setContentHandler = function (editor) {
|
|
32376
32958
|
var selection = editor.getDOMSelection();
|
|
32377
|
-
if ((selection === null || selection === void 0 ? void 0 : selection.type) == 'image'
|
|
32378
|
-
|
|
32959
|
+
if ((selection === null || selection === void 0 ? void 0 : selection.type) == 'image') {
|
|
32960
|
+
this.cleanInfo();
|
|
32961
|
+
(0, roosterjs_content_model_dom_1.setImageState)(selection.image, '');
|
|
32962
|
+
this.isEditing = false;
|
|
32963
|
+
this.isCropMode = false;
|
|
32379
32964
|
}
|
|
32380
32965
|
};
|
|
32381
32966
|
ImageEditPlugin.prototype.formatEventHandler = function (event) {
|
|
@@ -32413,7 +32998,7 @@ var ImageEditPlugin = /** @class */ (function () {
|
|
|
32413
32998
|
var result = false;
|
|
32414
32999
|
if (shouldSelectImage ||
|
|
32415
33000
|
(previousSelectedImage === null || previousSelectedImage === void 0 ? void 0 : previousSelectedImage.image) != (editingImage === null || editingImage === void 0 ? void 0 : editingImage.image) ||
|
|
32416
|
-
(previousSelectedImage === null || previousSelectedImage === void 0 ? void 0 : previousSelectedImage.image.
|
|
33001
|
+
(previousSelectedImage === null || previousSelectedImage === void 0 ? void 0 : previousSelectedImage.image.format.imageState) == findEditingImage_1.EDITING_MARKER ||
|
|
32417
33002
|
isApiOperation) {
|
|
32418
33003
|
var _a = _this, lastSrc_1 = _a.lastSrc, selectedImage_1 = _a.selectedImage, imageEditInfo_1 = _a.imageEditInfo, clonedImage_1 = _a.clonedImage;
|
|
32419
33004
|
if ((_this.isEditing || isApiOperation) &&
|
|
@@ -32426,7 +33011,7 @@ var ImageEditPlugin = /** @class */ (function () {
|
|
|
32426
33011
|
(0, applyChange_1.applyChange)(editor, selectedImage_1, image, imageEditInfo_1, lastSrc_1, _this.wasImageResized || _this.isCropMode, clonedImage_1);
|
|
32427
33012
|
image.isSelected = shouldSelectImage;
|
|
32428
33013
|
image.isSelectedAsImageSelection = shouldSelectImage;
|
|
32429
|
-
|
|
33014
|
+
image.format.imageState = undefined;
|
|
32430
33015
|
if ((selection === null || selection === void 0 ? void 0 : selection.type) == 'range' && !selection.range.collapsed) {
|
|
32431
33016
|
var selectedParagraphs = (0, roosterjs_content_model_dom_1.getSelectedParagraphs)(model, true);
|
|
32432
33017
|
var isImageInRange = selectedParagraphs.some(function (paragraph) {
|
|
@@ -32454,7 +33039,7 @@ var ImageEditPlugin = /** @class */ (function () {
|
|
|
32454
33039
|
(0, roosterjs_content_model_dom_1.mutateSegment)(editingImage.paragraph, editingImage.image, function (image) {
|
|
32455
33040
|
editingImageModel = image;
|
|
32456
33041
|
_this.imageEditInfo = (0, updateImageEditInfo_1.updateImageEditInfo)(image, selection.image);
|
|
32457
|
-
image.
|
|
33042
|
+
image.format.imageState = 'isEditing';
|
|
32458
33043
|
});
|
|
32459
33044
|
result = true;
|
|
32460
33045
|
}
|
|
@@ -32465,7 +33050,7 @@ var ImageEditPlugin = /** @class */ (function () {
|
|
|
32465
33050
|
if (!isApiOperation &&
|
|
32466
33051
|
editingImageModel &&
|
|
32467
33052
|
editingImageModel == model &&
|
|
32468
|
-
editingImageModel.
|
|
33053
|
+
editingImageModel.format.imageState == findEditingImage_1.EDITING_MARKER &&
|
|
32469
33054
|
(0, roosterjs_content_model_dom_1.isNodeOfType)(node, 'ELEMENT_NODE') &&
|
|
32470
33055
|
(0, roosterjs_content_model_dom_1.isElementOfType)(node, 'img')) {
|
|
32471
33056
|
if (isCropMode) {
|
|
@@ -33556,9 +34141,13 @@ exports.doubleCheckResize = doubleCheckResize;
|
|
|
33556
34141
|
"use strict";
|
|
33557
34142
|
|
|
33558
34143
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
33559
|
-
exports.findEditingImage = void 0;
|
|
34144
|
+
exports.findEditingImage = exports.EDITING_MARKER = void 0;
|
|
33560
34145
|
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
33561
34146
|
var roosterjs_content_model_api_1 = __webpack_require__(/*! roosterjs-content-model-api */ "./packages/roosterjs-content-model-api/lib/index.ts");
|
|
34147
|
+
/**
|
|
34148
|
+
* @internal
|
|
34149
|
+
*/
|
|
34150
|
+
exports.EDITING_MARKER = 'isEditing';
|
|
33562
34151
|
/**
|
|
33563
34152
|
* @internal
|
|
33564
34153
|
*/
|
|
@@ -33570,7 +34159,8 @@ function findEditingImage(group, imageId) {
|
|
|
33570
34159
|
for (var _b = (0, tslib_1.__values)(paragraph.segments), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
33571
34160
|
var segment = _c.value;
|
|
33572
34161
|
if (segment.segmentType == 'Image' &&
|
|
33573
|
-
((imageId && segment.format.id == imageId) ||
|
|
34162
|
+
((imageId && segment.format.id == imageId) ||
|
|
34163
|
+
segment.format.imageState == exports.EDITING_MARKER)) {
|
|
33574
34164
|
imageAndParagraph = { image: segment, paragraph: paragraph };
|
|
33575
34165
|
return true;
|
|
33576
34166
|
}
|
|
@@ -34688,15 +35278,17 @@ var addParser_1 = __webpack_require__(/*! ./utils/addParser */ "./packages/roost
|
|
|
34688
35278
|
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
34689
35279
|
var chainSanitizerCallback_1 = __webpack_require__(/*! ./utils/chainSanitizerCallback */ "./packages/roosterjs-content-model-plugins/lib/paste/utils/chainSanitizerCallback.ts");
|
|
34690
35280
|
var DefaultSanitizers_1 = __webpack_require__(/*! ./DefaultSanitizers */ "./packages/roosterjs-content-model-plugins/lib/paste/DefaultSanitizers.ts");
|
|
34691
|
-
var deprecatedColorParser_1 = __webpack_require__(/*! ./
|
|
35281
|
+
var deprecatedColorParser_1 = __webpack_require__(/*! ./parsers/deprecatedColorParser */ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/deprecatedColorParser.ts");
|
|
34692
35282
|
var getPasteSource_1 = __webpack_require__(/*! ./pasteSourceValidations/getPasteSource */ "./packages/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/getPasteSource.ts");
|
|
34693
|
-
var linkParser_1 = __webpack_require__(/*! ./
|
|
35283
|
+
var linkParser_1 = __webpack_require__(/*! ./parsers/linkParser */ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/linkParser.ts");
|
|
35284
|
+
var pasteButtonProcessor_1 = __webpack_require__(/*! ./processors/pasteButtonProcessor */ "./packages/roosterjs-content-model-plugins/lib/paste/processors/pasteButtonProcessor.ts");
|
|
34694
35285
|
var constants_1 = __webpack_require__(/*! ./pasteSourceValidations/constants */ "./packages/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/constants.ts");
|
|
34695
35286
|
var processPastedContentFromExcel_1 = __webpack_require__(/*! ./Excel/processPastedContentFromExcel */ "./packages/roosterjs-content-model-plugins/lib/paste/Excel/processPastedContentFromExcel.ts");
|
|
34696
35287
|
var processPastedContentFromOneNote_1 = __webpack_require__(/*! ./oneNote/processPastedContentFromOneNote */ "./packages/roosterjs-content-model-plugins/lib/paste/oneNote/processPastedContentFromOneNote.ts");
|
|
34697
35288
|
var processPastedContentFromPowerPoint_1 = __webpack_require__(/*! ./PowerPoint/processPastedContentFromPowerPoint */ "./packages/roosterjs-content-model-plugins/lib/paste/PowerPoint/processPastedContentFromPowerPoint.ts");
|
|
34698
35289
|
var processPastedContentFromWordDesktop_1 = __webpack_require__(/*! ./WordDesktop/processPastedContentFromWordDesktop */ "./packages/roosterjs-content-model-plugins/lib/paste/WordDesktop/processPastedContentFromWordDesktop.ts");
|
|
34699
35290
|
var processPastedContentWacComponents_1 = __webpack_require__(/*! ./WacComponents/processPastedContentWacComponents */ "./packages/roosterjs-content-model-plugins/lib/paste/WacComponents/processPastedContentWacComponents.ts");
|
|
35291
|
+
var setProcessor_1 = __webpack_require__(/*! ./utils/setProcessor */ "./packages/roosterjs-content-model-plugins/lib/paste/utils/setProcessor.ts");
|
|
34700
35292
|
/**
|
|
34701
35293
|
* Paste plugin, handles BeforePaste event and reformat some special content, including:
|
|
34702
35294
|
* 1. Content copied from Word
|
|
@@ -34757,11 +35349,11 @@ var PastePlugin = /** @class */ (function () {
|
|
|
34757
35349
|
if (!event.domToModelOption) {
|
|
34758
35350
|
return;
|
|
34759
35351
|
}
|
|
34760
|
-
var pasteSource = (0, getPasteSource_1.getPasteSource)(event, false);
|
|
35352
|
+
var pasteSource = (0, getPasteSource_1.getPasteSource)(event, false /* shouldConvertSingleImage */, this.editor.getEnvironment());
|
|
34761
35353
|
var pasteType = event.pasteType;
|
|
34762
35354
|
switch (pasteSource) {
|
|
34763
35355
|
case 'wordDesktop':
|
|
34764
|
-
(0, processPastedContentFromWordDesktop_1.processPastedContentFromWordDesktop)(event
|
|
35356
|
+
(0, processPastedContentFromWordDesktop_1.processPastedContentFromWordDesktop)(event);
|
|
34765
35357
|
break;
|
|
34766
35358
|
case 'wacComponents':
|
|
34767
35359
|
(0, processPastedContentWacComponents_1.processPastedContentWacComponents)(event);
|
|
@@ -34788,6 +35380,7 @@ var PastePlugin = /** @class */ (function () {
|
|
|
34788
35380
|
(0, addParser_1.addParser)(event.domToModelOption, 'tableCell', deprecatedColorParser_1.deprecatedBorderColorParser);
|
|
34789
35381
|
(0, addParser_1.addParser)(event.domToModelOption, 'tableCell', tableBorderParser);
|
|
34790
35382
|
(0, addParser_1.addParser)(event.domToModelOption, 'table', deprecatedColorParser_1.deprecatedBorderColorParser);
|
|
35383
|
+
(0, setProcessor_1.setProcessor)(event.domToModelOption, 'button', pasteButtonProcessor_1.pasteButtonProcessor);
|
|
34791
35384
|
if (pasteType === 'mergeFormat') {
|
|
34792
35385
|
(0, addParser_1.addParser)(event.domToModelOption, 'block', blockElementParser);
|
|
34793
35386
|
(0, addParser_1.addParser)(event.domToModelOption, 'listLevel', blockElementParser);
|
|
@@ -34853,22 +35446,153 @@ function tableBorderParser(format, element) {
|
|
|
34853
35446
|
|
|
34854
35447
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
34855
35448
|
exports.processPastedContentFromPowerPoint = void 0;
|
|
35449
|
+
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
35450
|
+
var addParser_1 = __webpack_require__(/*! ../utils/addParser */ "./packages/roosterjs-content-model-plugins/lib/paste/utils/addParser.ts");
|
|
35451
|
+
var customListUtils_1 = __webpack_require__(/*! ../utils/customListUtils */ "./packages/roosterjs-content-model-plugins/lib/paste/utils/customListUtils.ts");
|
|
35452
|
+
var removeNegativeTextIndentParser_1 = __webpack_require__(/*! ../parsers/removeNegativeTextIndentParser */ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/removeNegativeTextIndentParser.ts");
|
|
35453
|
+
var setProcessor_1 = __webpack_require__(/*! ../utils/setProcessor */ "./packages/roosterjs-content-model-plugins/lib/paste/utils/setProcessor.ts");
|
|
34856
35454
|
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
35455
|
+
var BulletSelector = '* > span > span[style*=mso-special-format]';
|
|
35456
|
+
var MsOfficeSpecialFormat = 'mso-special-format';
|
|
35457
|
+
var CssStyleKey = 'style';
|
|
35458
|
+
var MsoSpecialFormatRegex = /mso-special-format:\s*([^;]*)/;
|
|
35459
|
+
var clearListItemStyles = function (format) {
|
|
35460
|
+
delete format.textAlign;
|
|
35461
|
+
delete format.marginLeft;
|
|
35462
|
+
delete format.paddingLeft;
|
|
35463
|
+
};
|
|
34857
35464
|
/**
|
|
34858
35465
|
* @internal
|
|
34859
35466
|
* Convert pasted content from PowerPoint
|
|
34860
35467
|
* @param event The BeforePaste event
|
|
34861
35468
|
*/
|
|
34862
35469
|
function processPastedContentFromPowerPoint(event, domCreator) {
|
|
34863
|
-
var fragment = event.fragment, clipboardData = event.clipboardData;
|
|
35470
|
+
var fragment = event.fragment, clipboardData = event.clipboardData, domToModelOption = event.domToModelOption;
|
|
34864
35471
|
if (clipboardData.html && !clipboardData.text && clipboardData.image) {
|
|
34865
35472
|
// It is possible that PowerPoint copied both image and HTML but not plain text.
|
|
34866
35473
|
// We always prefer HTML if any.
|
|
34867
35474
|
var doc = domCreator.htmlToDOM(clipboardData.html);
|
|
34868
35475
|
(0, roosterjs_content_model_dom_1.moveChildNodes)(fragment, doc === null || doc === void 0 ? void 0 : doc.body);
|
|
34869
35476
|
}
|
|
35477
|
+
(0, addParser_1.addParser)(domToModelOption, 'block', removeNegativeTextIndentParser_1.removeNegativeTextIndentParser);
|
|
35478
|
+
(0, setProcessor_1.setProcessor)(domToModelOption, 'element', function (group, element, context) {
|
|
35479
|
+
var _a, _b;
|
|
35480
|
+
var style = element.getAttribute(CssStyleKey) || '';
|
|
35481
|
+
// If the element is the bullet element, just ignore it, otherwise we will see an extra bullet in the list
|
|
35482
|
+
if (style.includes(MsOfficeSpecialFormat) && context.listFormat.levels.length > 0) {
|
|
35483
|
+
return;
|
|
35484
|
+
}
|
|
35485
|
+
var bulletElement = element.querySelector(BulletSelector);
|
|
35486
|
+
if (bulletElement) {
|
|
35487
|
+
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;
|
|
35488
|
+
// Setup the listformat with the metadata extracted from the bullet element
|
|
35489
|
+
(0, customListUtils_1.setupListFormat)(isOrderedList ? 'OL' : 'UL', element, context, depth, context.listFormat, group, [clearListItemStyles]);
|
|
35490
|
+
// Set the metadata for the list item, which will be used to set the correct bullet style type
|
|
35491
|
+
var listMetadata = {
|
|
35492
|
+
unorderedStyleType: !isOrderedList && unorderedBulletType
|
|
35493
|
+
? roosterjs_content_model_dom_1.BulletListType[unorderedBulletType]
|
|
35494
|
+
: undefined,
|
|
35495
|
+
orderedStyleType: isOrderedList && orderedBulletType
|
|
35496
|
+
? roosterjs_content_model_dom_1.NumberingListType[orderedBulletType]
|
|
35497
|
+
: undefined,
|
|
35498
|
+
};
|
|
35499
|
+
// Process the Div element as a list item.
|
|
35500
|
+
(0, customListUtils_1.processAsListItem)(context, element, group, listMetadata, function (listItem) {
|
|
35501
|
+
var _a;
|
|
35502
|
+
var currentMarkerSize = listItem.formatHolder.format.fontSize;
|
|
35503
|
+
var bulletElementSize = (_a = bulletElement.parentElement) === null || _a === void 0 ? void 0 : _a.style.fontSize;
|
|
35504
|
+
listItem.formatHolder.format.fontSize = bulletElementSize || currentMarkerSize;
|
|
35505
|
+
if (isNewList_1) {
|
|
35506
|
+
listItem.levels[listItem.levels.length - 1].format.startNumberOverride = parseInt(startNumberOverrideOrBullet_1);
|
|
35507
|
+
}
|
|
35508
|
+
clearListItemStyles(listItem.levels[listItem.levels.length - 1].format);
|
|
35509
|
+
clearListItemStyles(listItem.format);
|
|
35510
|
+
});
|
|
35511
|
+
}
|
|
35512
|
+
else {
|
|
35513
|
+
(_b = (_a = context.defaultElementProcessors).element) === null || _b === void 0 ? void 0 : _b.call(_a, group, element, context);
|
|
35514
|
+
}
|
|
35515
|
+
});
|
|
34870
35516
|
}
|
|
34871
35517
|
exports.processPastedContentFromPowerPoint = processPastedContentFromPowerPoint;
|
|
35518
|
+
/**
|
|
35519
|
+
* Extract list information from PowerPoint pasted content
|
|
35520
|
+
*
|
|
35521
|
+
* The lists from PowerPoint are represent as:
|
|
35522
|
+
*
|
|
35523
|
+
* - The class 0# represents the depth of the list, if the list is in the first level, the class attribute wont be present.
|
|
35524
|
+
* - The mso-special-format style represents the type of bullet and the start of the list.
|
|
35525
|
+
* The first part of the mso-special-format is the type of bullet, and the second part is the start of the list.
|
|
35526
|
+
* - 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.
|
|
35527
|
+
*
|
|
35528
|
+
* @example
|
|
35529
|
+
* ` <div class="O1" style="...">
|
|
35530
|
+
<span style="font-size: 5pt"
|
|
35531
|
+
><span style="mso-special-format: 'numbullet6\,1'; font-family: +mj-lt"
|
|
35532
|
+
>i.</span
|
|
35533
|
+
></span
|
|
35534
|
+
><span style="...;">123</span>
|
|
35535
|
+
</div> `
|
|
35536
|
+
*
|
|
35537
|
+
* @param element The element to extract list information from
|
|
35538
|
+
* @param bulletElement The bullet element to extract list information from
|
|
35539
|
+
* @returns The extracted list information
|
|
35540
|
+
*/
|
|
35541
|
+
function extractPowerPointListInfo(element, bulletElement) {
|
|
35542
|
+
var className = element.className.substring(1) || '0';
|
|
35543
|
+
var depth = parseInt(className) + 1;
|
|
35544
|
+
var style = bulletElement.getAttribute(CssStyleKey) || '';
|
|
35545
|
+
var msoSpecialFormat = style.match(MsoSpecialFormatRegex);
|
|
35546
|
+
var _a = (0, tslib_1.__read)((msoSpecialFormat === null || msoSpecialFormat === void 0 ? void 0 : msoSpecialFormat[1].replace('"', '').split('\\,')) || [], 2), bulletTypeHtml = _a[0], startNumberOverrideOrBullet = _a[1];
|
|
35547
|
+
var isOrderedList = OrderedListStyleMap.has(bulletTypeHtml);
|
|
35548
|
+
var unorderedBulletType = UnorderedBullets.get(bulletElement.innerText);
|
|
35549
|
+
var orderedBulletType = OrderedListStyleMap.get(bulletTypeHtml);
|
|
35550
|
+
return {
|
|
35551
|
+
depth: depth,
|
|
35552
|
+
unorderedBulletType: unorderedBulletType,
|
|
35553
|
+
orderedBulletType: orderedBulletType,
|
|
35554
|
+
startNumberOverrideOrBullet: startNumberOverrideOrBullet,
|
|
35555
|
+
isOrderedList: isOrderedList,
|
|
35556
|
+
isNewList: isOrderedList &&
|
|
35557
|
+
!!orderedBulletType &&
|
|
35558
|
+
bulletElement.innerText ===
|
|
35559
|
+
getPptListStart(orderedBulletType, startNumberOverrideOrBullet),
|
|
35560
|
+
};
|
|
35561
|
+
}
|
|
35562
|
+
var UnorderedBullets = new Map([
|
|
35563
|
+
['•', 'Disc'],
|
|
35564
|
+
['o', 'Circle'],
|
|
35565
|
+
['§', 'Square'],
|
|
35566
|
+
['q', 'BoxShadow'],
|
|
35567
|
+
['v', 'Xrhombus'],
|
|
35568
|
+
['Ø', 'ShortArrow'],
|
|
35569
|
+
['ü', 'CheckMark'],
|
|
35570
|
+
]);
|
|
35571
|
+
var OrderedListStyleMap = new Map([
|
|
35572
|
+
['numbullet1', 'UpperAlpha'],
|
|
35573
|
+
['numbullet2', 'DecimalParenthesis'],
|
|
35574
|
+
['numbullet3', 'Decimal'],
|
|
35575
|
+
['numbullet7', 'UpperRoman'],
|
|
35576
|
+
['numbullet9', 'LowerAlphaParenthesis'],
|
|
35577
|
+
['numbullet0', 'LowerAlpha'],
|
|
35578
|
+
['numbullet6', 'LowerRoman'],
|
|
35579
|
+
]);
|
|
35580
|
+
function getPptListStart(orderedBulletType, startNumberOverride) {
|
|
35581
|
+
var bullet = (0, roosterjs_content_model_dom_1.getOrderedListNumberStr)(roosterjs_content_model_dom_1.NumberingListType[orderedBulletType], parseInt(startNumberOverride));
|
|
35582
|
+
switch (orderedBulletType) {
|
|
35583
|
+
case 'Decimal':
|
|
35584
|
+
case 'UpperAlpha':
|
|
35585
|
+
case 'LowerAlpha':
|
|
35586
|
+
case 'UpperRoman':
|
|
35587
|
+
case 'LowerRoman':
|
|
35588
|
+
return bullet + '.';
|
|
35589
|
+
case 'DecimalParenthesis':
|
|
35590
|
+
case 'LowerAlphaParenthesis':
|
|
35591
|
+
return bullet + ')';
|
|
35592
|
+
default:
|
|
35593
|
+
return undefined;
|
|
35594
|
+
}
|
|
35595
|
+
}
|
|
34872
35596
|
|
|
34873
35597
|
|
|
34874
35598
|
/***/ }),
|
|
@@ -35164,6 +35888,36 @@ exports.getStyleMetadata = void 0;
|
|
|
35164
35888
|
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
35165
35889
|
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
35166
35890
|
var FORMATING_REGEX = /[\n\t'{}"]+/g;
|
|
35891
|
+
var STYLE_TAG = '<style';
|
|
35892
|
+
var STYLE_TAG_END = '</style>';
|
|
35893
|
+
var nonWordCharacterRegex = /\W/;
|
|
35894
|
+
function extractStyleTagsFromHtml(htmlContent) {
|
|
35895
|
+
var _a;
|
|
35896
|
+
var styles = [];
|
|
35897
|
+
var _b = extractHtmlIndexes(htmlContent), styleIndex = _b.styleIndex, styleEndIndex = _b.styleEndIndex;
|
|
35898
|
+
while (styleIndex >= 0 && styleEndIndex >= 0) {
|
|
35899
|
+
var styleContent = htmlContent
|
|
35900
|
+
.substring(styleIndex + STYLE_TAG.length, styleEndIndex)
|
|
35901
|
+
.trim();
|
|
35902
|
+
styles.push(styleContent);
|
|
35903
|
+
(_a = extractHtmlIndexes(htmlContent, styleEndIndex + 1), styleIndex = _a.styleIndex, styleEndIndex = _a.styleEndIndex);
|
|
35904
|
+
}
|
|
35905
|
+
return styles;
|
|
35906
|
+
}
|
|
35907
|
+
function extractHtmlIndexes(html, startIndex) {
|
|
35908
|
+
if (startIndex === void 0) { startIndex = 0; }
|
|
35909
|
+
var htmlLowercase = html.toLowerCase();
|
|
35910
|
+
var styleIndex = htmlLowercase.indexOf(STYLE_TAG, startIndex);
|
|
35911
|
+
var currentIndex = styleIndex + STYLE_TAG.length;
|
|
35912
|
+
var nextChar = html.substring(currentIndex, currentIndex + 1);
|
|
35913
|
+
while (!nonWordCharacterRegex.test(nextChar) && styleIndex > -1) {
|
|
35914
|
+
styleIndex = htmlLowercase.indexOf(STYLE_TAG, styleIndex + 1);
|
|
35915
|
+
currentIndex = styleIndex + STYLE_TAG.length;
|
|
35916
|
+
nextChar = html.substring(currentIndex, currentIndex + 1);
|
|
35917
|
+
}
|
|
35918
|
+
var styleEndIndex = htmlLowercase.indexOf(STYLE_TAG_END, startIndex);
|
|
35919
|
+
return { styleIndex: styleIndex, styleEndIndex: styleEndIndex };
|
|
35920
|
+
}
|
|
35167
35921
|
/**
|
|
35168
35922
|
* @internal
|
|
35169
35923
|
* Word Desktop content has a style tag that contains data for the lists.
|
|
@@ -35184,12 +35938,10 @@ var FORMATING_REGEX = /[\n\t'{}"]+/g;
|
|
|
35184
35938
|
* 5. Save data in record and only use the required information.
|
|
35185
35939
|
*
|
|
35186
35940
|
*/
|
|
35187
|
-
function getStyleMetadata(ev
|
|
35941
|
+
function getStyleMetadata(ev) {
|
|
35188
35942
|
var metadataMap = new Map();
|
|
35189
|
-
var
|
|
35190
|
-
|
|
35191
|
-
styles.forEach(function (style) {
|
|
35192
|
-
var text = (style === null || style === void 0 ? void 0 : style.innerHTML.trim()) || '';
|
|
35943
|
+
var headStyles = extractStyleTagsFromHtml(ev.htmlBefore || ev.clipboardData.rawHtml || '');
|
|
35944
|
+
headStyles.forEach(function (text) {
|
|
35193
35945
|
var index = 0;
|
|
35194
35946
|
var _loop_1 = function () {
|
|
35195
35947
|
var indexAt = text.indexOf('@', index + 1);
|
|
@@ -35256,7 +36008,7 @@ var getStyleMetadata_1 = __webpack_require__(/*! ./getStyleMetadata */ "./packag
|
|
|
35256
36008
|
var getStyles_1 = __webpack_require__(/*! ../utils/getStyles */ "./packages/roosterjs-content-model-plugins/lib/paste/utils/getStyles.ts");
|
|
35257
36009
|
var processWordComments_1 = __webpack_require__(/*! ./processWordComments */ "./packages/roosterjs-content-model-plugins/lib/paste/WordDesktop/processWordComments.ts");
|
|
35258
36010
|
var processWordLists_1 = __webpack_require__(/*! ./processWordLists */ "./packages/roosterjs-content-model-plugins/lib/paste/WordDesktop/processWordLists.ts");
|
|
35259
|
-
var removeNegativeTextIndentParser_1 = __webpack_require__(/*!
|
|
36011
|
+
var removeNegativeTextIndentParser_1 = __webpack_require__(/*! ../parsers/removeNegativeTextIndentParser */ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/removeNegativeTextIndentParser.ts");
|
|
35260
36012
|
var setProcessor_1 = __webpack_require__(/*! ../utils/setProcessor */ "./packages/roosterjs-content-model-plugins/lib/paste/utils/setProcessor.ts");
|
|
35261
36013
|
var PERCENTAGE_REGEX = /%/;
|
|
35262
36014
|
// Default line height in browsers according to https://developer.mozilla.org/en-US/docs/Web/CSS/line-height#normal
|
|
@@ -35266,8 +36018,8 @@ var DEFAULT_BROWSER_LINE_HEIGHT_PERCENTAGE = 1.2;
|
|
|
35266
36018
|
* Handles Pasted content when source is Word Desktop
|
|
35267
36019
|
* @param ev BeforePasteEvent
|
|
35268
36020
|
*/
|
|
35269
|
-
function processPastedContentFromWordDesktop(ev
|
|
35270
|
-
var metadataMap = (0, getStyleMetadata_1.getStyleMetadata)(ev
|
|
36021
|
+
function processPastedContentFromWordDesktop(ev) {
|
|
36022
|
+
var metadataMap = (0, getStyleMetadata_1.getStyleMetadata)(ev);
|
|
35271
36023
|
(0, setProcessor_1.setProcessor)(ev.domToModelOption, 'element', wordDesktopElementProcessor(metadataMap));
|
|
35272
36024
|
(0, addParser_1.addParser)(ev.domToModelOption, 'block', adjustPercentileLineHeight);
|
|
35273
36025
|
(0, addParser_1.addParser)(ev.domToModelOption, 'block', removeNegativeTextIndentParser_1.removeNegativeTextIndentParser);
|
|
@@ -35295,12 +36047,12 @@ function adjustPercentileLineHeight(format, element) {
|
|
|
35295
36047
|
(parsedLineHeight / 100)).toString();
|
|
35296
36048
|
}
|
|
35297
36049
|
}
|
|
35298
|
-
function
|
|
36050
|
+
var listLevelParser = function (format, element, _context, defaultStyle) {
|
|
35299
36051
|
if (element.style.marginLeft != '') {
|
|
35300
36052
|
format.marginLeft = defaultStyle.marginLeft;
|
|
35301
36053
|
}
|
|
35302
36054
|
format.marginBottom = undefined;
|
|
35303
|
-
}
|
|
36055
|
+
};
|
|
35304
36056
|
var wordTableParser = function (format) {
|
|
35305
36057
|
var _a;
|
|
35306
36058
|
if ((_a = format.marginLeft) === null || _a === void 0 ? void 0 : _a.startsWith('-')) {
|
|
@@ -35354,7 +36106,7 @@ exports.processWordComments = processWordComments;
|
|
|
35354
36106
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
35355
36107
|
exports.processWordList = void 0;
|
|
35356
36108
|
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
35357
|
-
var
|
|
36109
|
+
var customListUtils_1 = __webpack_require__(/*! ../utils/customListUtils */ "./packages/roosterjs-content-model-plugins/lib/paste/utils/customListUtils.ts");
|
|
35358
36110
|
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
35359
36111
|
/** Word list metadata style name */
|
|
35360
36112
|
var MSO_LIST = 'mso-list';
|
|
@@ -35394,28 +36146,28 @@ function processWordList(styles, group, element, context, metadata) {
|
|
|
35394
36146
|
if (wordListStyle && group && typeof listFormat.wordLevel === 'number') {
|
|
35395
36147
|
var wordLevel = listFormat.wordLevel, wordList = listFormat.wordList;
|
|
35396
36148
|
// Retrieve the Fake bullet on the element and also the list type
|
|
35397
|
-
var
|
|
35398
|
-
var
|
|
36149
|
+
var listMetadata_1 = metadata.get(lNumber + ":" + level);
|
|
36150
|
+
var listType_1 = ((_a = listMetadata_1 === null || listMetadata_1 === void 0 ? void 0 : listMetadata_1['mso-level-number-format']) === null || _a === void 0 ? void 0 : _a.toLowerCase()) != BULLET_METADATA
|
|
35399
36151
|
? 'OL'
|
|
35400
36152
|
: 'UL';
|
|
35401
36153
|
// Create the new level of the list item and parse the format
|
|
35402
|
-
|
|
35403
|
-
|
|
35404
|
-
|
|
35405
|
-
// To be in the same level as the provided level metadata.
|
|
35406
|
-
if (wordLevel > listFormat.levels.length) {
|
|
35407
|
-
while (wordLevel != listFormat.levels.length) {
|
|
35408
|
-
listFormat.levels.push(newLevel);
|
|
35409
|
-
}
|
|
35410
|
-
}
|
|
35411
|
-
else {
|
|
35412
|
-
listFormat.levels.splice(wordLevel, listFormat.levels.length - 1);
|
|
35413
|
-
listFormat.levels[wordLevel - 1] = newLevel;
|
|
35414
|
-
}
|
|
36154
|
+
(0, customListUtils_1.setupListFormat)(listType_1, element, context, wordLevel, listFormat, group, [
|
|
36155
|
+
wordListPaddingParser,
|
|
36156
|
+
]);
|
|
35415
36157
|
listFormat.levels[listFormat.levels.length - 1]
|
|
35416
36158
|
.format.wordList = wordList;
|
|
35417
|
-
|
|
35418
|
-
|
|
36159
|
+
var bullet = getBulletFromMetadata(listMetadata_1, listType_1);
|
|
36160
|
+
var listFormatMetadata = bullet
|
|
36161
|
+
? {
|
|
36162
|
+
unorderedStyleType: listType_1 == 'UL' ? bullet : undefined,
|
|
36163
|
+
orderedStyleType: listType_1 == 'OL' ? bullet : undefined,
|
|
36164
|
+
}
|
|
36165
|
+
: undefined;
|
|
36166
|
+
(0, customListUtils_1.processAsListItem)(context, element, group, listFormatMetadata, function (listItem) {
|
|
36167
|
+
if (listType_1 == 'OL') {
|
|
36168
|
+
setStartNumber(listItem, context, listMetadata_1, element);
|
|
36169
|
+
}
|
|
36170
|
+
});
|
|
35419
36171
|
if (listFormat.levels.length > 0 &&
|
|
35420
36172
|
listFormat.wordKnownLevels.get(wordList) != listFormat.levels) {
|
|
35421
36173
|
listFormat.wordKnownLevels.set(wordList, (0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(listFormat.levels), false));
|
|
@@ -35425,28 +36177,6 @@ function processWordList(styles, group, element, context, metadata) {
|
|
|
35425
36177
|
return false;
|
|
35426
36178
|
}
|
|
35427
36179
|
exports.processWordList = processWordList;
|
|
35428
|
-
function processAsListItem(listFormat, context, element, group, listMetadata) {
|
|
35429
|
-
var listLevel = listFormat.levels[listFormat.levels.length - 1];
|
|
35430
|
-
var listType = listLevel.listType;
|
|
35431
|
-
var bullet = getBulletFromMetadata(listMetadata, listType);
|
|
35432
|
-
if (bullet) {
|
|
35433
|
-
(0, roosterjs_content_model_dom_1.updateListMetadata)(listFormat.levels[listFormat.levels.length - 1], function (metadata) {
|
|
35434
|
-
return Object.assign({}, metadata, {
|
|
35435
|
-
unorderedStyleType: listType == 'UL' ? bullet : undefined,
|
|
35436
|
-
orderedStyleType: listType == 'OL' ? bullet : undefined,
|
|
35437
|
-
});
|
|
35438
|
-
});
|
|
35439
|
-
}
|
|
35440
|
-
var listItem = (0, roosterjs_content_model_dom_1.createListItem)(listFormat.levels, context.segmentFormat);
|
|
35441
|
-
(0, roosterjs_content_model_dom_1.parseFormat)(element, context.formatParsers.segmentOnBlock, context.segmentFormat, context);
|
|
35442
|
-
(0, roosterjs_content_model_dom_1.parseFormat)(element, context.formatParsers.listItemElement, listItem.format, context);
|
|
35443
|
-
(0, roosterjs_content_model_dom_1.parseFormat)(element, [removeNegativeTextIndentParser_1.removeNegativeTextIndentParser, nonListElementParser], listItem.format, context);
|
|
35444
|
-
if (listType == 'OL') {
|
|
35445
|
-
setStartNumber(listItem, context, listMetadata);
|
|
35446
|
-
}
|
|
35447
|
-
context.elementProcessors.child(listItem, element, context);
|
|
35448
|
-
(0, roosterjs_content_model_dom_1.addBlock)(group, listItem);
|
|
35449
|
-
}
|
|
35450
36180
|
function getBulletFromMetadata(listMetadata, listType) {
|
|
35451
36181
|
var templateType = (listMetadata === null || listMetadata === void 0 ? void 0 : listMetadata['mso-level-number-format']) || 'decimal';
|
|
35452
36182
|
var templateFinal;
|
|
@@ -35493,15 +36223,7 @@ function getBulletFromMetadata(listMetadata, listType) {
|
|
|
35493
36223
|
}
|
|
35494
36224
|
return (0, roosterjs_content_model_dom_1.getListStyleTypeFromString)(listType, templateFinal);
|
|
35495
36225
|
}
|
|
35496
|
-
function
|
|
35497
|
-
if (element.style.marginLeft && element.style.marginLeft != '0in') {
|
|
35498
|
-
format.paddingLeft = '0px';
|
|
35499
|
-
}
|
|
35500
|
-
if (element.style.marginRight && element.style.marginRight != '0in') {
|
|
35501
|
-
format.paddingRight = '0px';
|
|
35502
|
-
}
|
|
35503
|
-
}
|
|
35504
|
-
function setStartNumber(listItem, context, listMetadata) {
|
|
36226
|
+
function setStartNumber(listItem, context, listMetadata, element) {
|
|
35505
36227
|
var _a, _b;
|
|
35506
36228
|
var _c = context.listFormat, listParent = _c.listParent, wordList = _c.wordList, wordKnownLevels = _c.wordKnownLevels, wordLevel = _c.wordLevel, levels = _c.levels;
|
|
35507
36229
|
var block = getLastNotEmptyBlock(listParent);
|
|
@@ -35517,6 +36239,14 @@ function setStartNumber(listItem, context, listMetadata) {
|
|
|
35517
36239
|
if (start != undefined && !isNaN(start) && knownLevel.length != levels.length) {
|
|
35518
36240
|
listItem.levels[listItem.levels.length - 1].format.startNumberOverride = start;
|
|
35519
36241
|
}
|
|
36242
|
+
else if ((0, roosterjs_content_model_dom_1.isElementOfType)(element, 'li') &&
|
|
36243
|
+
(0, roosterjs_content_model_dom_1.isNodeOfType)(element.parentElement, 'ELEMENT_NODE') &&
|
|
36244
|
+
(0, roosterjs_content_model_dom_1.isElementOfType)(element.parentElement, 'ol') &&
|
|
36245
|
+
element.parentElement.firstElementChild == element &&
|
|
36246
|
+
knownLevel.length != element.parentElement.start) {
|
|
36247
|
+
listItem.levels[listItem.levels.length - 1].format.startNumberOverride =
|
|
36248
|
+
element.parentElement.start;
|
|
36249
|
+
}
|
|
35520
36250
|
}
|
|
35521
36251
|
}
|
|
35522
36252
|
function getLastNotEmptyBlock(listParent) {
|
|
@@ -35528,43 +36258,14 @@ function getLastNotEmptyBlock(listParent) {
|
|
|
35528
36258
|
}
|
|
35529
36259
|
return undefined;
|
|
35530
36260
|
}
|
|
35531
|
-
|
|
35532
|
-
if (
|
|
35533
|
-
|
|
35534
|
-
var key = keyInput;
|
|
35535
|
-
var formatKey = keyInput;
|
|
35536
|
-
if (key != 'display' &&
|
|
35537
|
-
format[formatKey] != undefined &&
|
|
35538
|
-
format[formatKey] == defaultStyle[key]) {
|
|
35539
|
-
delete format[formatKey];
|
|
35540
|
-
}
|
|
35541
|
-
});
|
|
36261
|
+
function wordListPaddingParser(format, element) {
|
|
36262
|
+
if (element.style.marginLeft && element.style.marginLeft != '0in') {
|
|
36263
|
+
format.paddingLeft = '0px';
|
|
35542
36264
|
}
|
|
35543
|
-
|
|
35544
|
-
|
|
35545
|
-
|
|
35546
|
-
/***/ }),
|
|
35547
|
-
|
|
35548
|
-
/***/ "./packages/roosterjs-content-model-plugins/lib/paste/WordDesktop/removeNegativeTextIndentParser.ts":
|
|
35549
|
-
/*!**********************************************************************************************************!*\
|
|
35550
|
-
!*** ./packages/roosterjs-content-model-plugins/lib/paste/WordDesktop/removeNegativeTextIndentParser.ts ***!
|
|
35551
|
-
\**********************************************************************************************************/
|
|
35552
|
-
/***/ ((__unused_webpack_module, exports) => {
|
|
35553
|
-
|
|
35554
|
-
"use strict";
|
|
35555
|
-
|
|
35556
|
-
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
35557
|
-
exports.removeNegativeTextIndentParser = void 0;
|
|
35558
|
-
/**
|
|
35559
|
-
* @internal
|
|
35560
|
-
*/
|
|
35561
|
-
var removeNegativeTextIndentParser = function (format, element) {
|
|
35562
|
-
var _a;
|
|
35563
|
-
if ((_a = format.textIndent) === null || _a === void 0 ? void 0 : _a.startsWith('-')) {
|
|
35564
|
-
delete format.textIndent;
|
|
36265
|
+
if (element.style.marginRight && element.style.marginRight != '0in') {
|
|
36266
|
+
format.paddingRight = '0px';
|
|
35565
36267
|
}
|
|
35566
|
-
}
|
|
35567
|
-
exports.removeNegativeTextIndentParser = removeNegativeTextIndentParser;
|
|
36268
|
+
}
|
|
35568
36269
|
|
|
35569
36270
|
|
|
35570
36271
|
/***/ }),
|
|
@@ -35691,6 +36392,98 @@ function ensureOneNoteListContext(cmContext) {
|
|
|
35691
36392
|
}
|
|
35692
36393
|
|
|
35693
36394
|
|
|
36395
|
+
/***/ }),
|
|
36396
|
+
|
|
36397
|
+
/***/ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/deprecatedColorParser.ts":
|
|
36398
|
+
/*!*********************************************************************************************!*\
|
|
36399
|
+
!*** ./packages/roosterjs-content-model-plugins/lib/paste/parsers/deprecatedColorParser.ts ***!
|
|
36400
|
+
\*********************************************************************************************/
|
|
36401
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
36402
|
+
|
|
36403
|
+
"use strict";
|
|
36404
|
+
|
|
36405
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
36406
|
+
exports.deprecatedBorderColorParser = void 0;
|
|
36407
|
+
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
36408
|
+
/**
|
|
36409
|
+
* @internal
|
|
36410
|
+
*/
|
|
36411
|
+
var deprecatedBorderColorParser = function (format) {
|
|
36412
|
+
roosterjs_content_model_dom_1.BorderKeys.forEach(function (key) {
|
|
36413
|
+
var value = format[key];
|
|
36414
|
+
var color = '';
|
|
36415
|
+
if (value &&
|
|
36416
|
+
roosterjs_content_model_dom_1.DeprecatedColors.some(function (dColor) { return value.indexOf(dColor) > -1 && (color = dColor); })) {
|
|
36417
|
+
var newValue = value.replace(color, '').trimRight();
|
|
36418
|
+
format[key] = newValue;
|
|
36419
|
+
}
|
|
36420
|
+
});
|
|
36421
|
+
};
|
|
36422
|
+
exports.deprecatedBorderColorParser = deprecatedBorderColorParser;
|
|
36423
|
+
|
|
36424
|
+
|
|
36425
|
+
/***/ }),
|
|
36426
|
+
|
|
36427
|
+
/***/ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/linkParser.ts":
|
|
36428
|
+
/*!**********************************************************************************!*\
|
|
36429
|
+
!*** ./packages/roosterjs-content-model-plugins/lib/paste/parsers/linkParser.ts ***!
|
|
36430
|
+
\**********************************************************************************/
|
|
36431
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
36432
|
+
|
|
36433
|
+
"use strict";
|
|
36434
|
+
|
|
36435
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
36436
|
+
exports.parseLink = void 0;
|
|
36437
|
+
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
36438
|
+
var SUPPORTED_PROTOCOLS = ['http:', 'https:', 'notes:', 'mailto:', 'onenote:'];
|
|
36439
|
+
var INVALID_LINKS_REGEX = /^file:\/\/\/[a-zA-Z\/]/i;
|
|
36440
|
+
/**
|
|
36441
|
+
* @internal
|
|
36442
|
+
*/
|
|
36443
|
+
var parseLink = function (format, element) {
|
|
36444
|
+
if (!(0, roosterjs_content_model_dom_1.isElementOfType)(element, 'a')) {
|
|
36445
|
+
return;
|
|
36446
|
+
}
|
|
36447
|
+
var url;
|
|
36448
|
+
try {
|
|
36449
|
+
url = new URL(element.href);
|
|
36450
|
+
}
|
|
36451
|
+
catch (_a) {
|
|
36452
|
+
url = undefined;
|
|
36453
|
+
}
|
|
36454
|
+
if ((url && SUPPORTED_PROTOCOLS.indexOf(url.protocol) === -1) ||
|
|
36455
|
+
INVALID_LINKS_REGEX.test(element.href)) {
|
|
36456
|
+
element.removeAttribute('href');
|
|
36457
|
+
format.href = '';
|
|
36458
|
+
}
|
|
36459
|
+
};
|
|
36460
|
+
exports.parseLink = parseLink;
|
|
36461
|
+
|
|
36462
|
+
|
|
36463
|
+
/***/ }),
|
|
36464
|
+
|
|
36465
|
+
/***/ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/removeNegativeTextIndentParser.ts":
|
|
36466
|
+
/*!******************************************************************************************************!*\
|
|
36467
|
+
!*** ./packages/roosterjs-content-model-plugins/lib/paste/parsers/removeNegativeTextIndentParser.ts ***!
|
|
36468
|
+
\******************************************************************************************************/
|
|
36469
|
+
/***/ ((__unused_webpack_module, exports) => {
|
|
36470
|
+
|
|
36471
|
+
"use strict";
|
|
36472
|
+
|
|
36473
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
36474
|
+
exports.removeNegativeTextIndentParser = void 0;
|
|
36475
|
+
/**
|
|
36476
|
+
* @internal
|
|
36477
|
+
*/
|
|
36478
|
+
var removeNegativeTextIndentParser = function (format) {
|
|
36479
|
+
var _a;
|
|
36480
|
+
if ((_a = format.textIndent) === null || _a === void 0 ? void 0 : _a.startsWith('-')) {
|
|
36481
|
+
delete format.textIndent;
|
|
36482
|
+
}
|
|
36483
|
+
};
|
|
36484
|
+
exports.removeNegativeTextIndentParser = removeNegativeTextIndentParser;
|
|
36485
|
+
|
|
36486
|
+
|
|
35694
36487
|
/***/ }),
|
|
35695
36488
|
|
|
35696
36489
|
/***/ "./packages/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/constants.ts":
|
|
@@ -35787,7 +36580,7 @@ var getSourceFunctions = new Map([
|
|
|
35787
36580
|
* @param shouldConvertSingleImage Whether convert single image is enabled.
|
|
35788
36581
|
* @returns The Type of pasted content, if no type found will return {KnownSourceType.Default}
|
|
35789
36582
|
*/
|
|
35790
|
-
function getPasteSource(event, shouldConvertSingleImage) {
|
|
36583
|
+
function getPasteSource(event, shouldConvertSingleImage, environment) {
|
|
35791
36584
|
var htmlAttributes = event.htmlAttributes, clipboardData = event.clipboardData, fragment = event.fragment;
|
|
35792
36585
|
var result = null;
|
|
35793
36586
|
var param = {
|
|
@@ -35795,6 +36588,7 @@ function getPasteSource(event, shouldConvertSingleImage) {
|
|
|
35795
36588
|
fragment: fragment,
|
|
35796
36589
|
shouldConvertSingleImage: shouldConvertSingleImage,
|
|
35797
36590
|
clipboardData: clipboardData,
|
|
36591
|
+
environment: environment,
|
|
35798
36592
|
};
|
|
35799
36593
|
getSourceFunctions.forEach(function (func, key) {
|
|
35800
36594
|
if (!result && func(param)) {
|
|
@@ -35995,9 +36789,14 @@ var WORD_PROG_ID = 'Word.Document';
|
|
|
35995
36789
|
* @returns
|
|
35996
36790
|
*/
|
|
35997
36791
|
var isWordDesktopDocument = function (props) {
|
|
35998
|
-
var
|
|
36792
|
+
var _a;
|
|
36793
|
+
var htmlAttributes = props.htmlAttributes, clipboardData = props.clipboardData, environment = props.environment;
|
|
35999
36794
|
return (htmlAttributes[WORD_ATTRIBUTE_NAME] == WORD_ATTRIBUTE_VALUE ||
|
|
36000
|
-
htmlAttributes[constants_1.PastePropertyNames.PROG_ID_NAME] == WORD_PROG_ID
|
|
36795
|
+
htmlAttributes[constants_1.PastePropertyNames.PROG_ID_NAME] == WORD_PROG_ID ||
|
|
36796
|
+
// Safari removes the metadata from the clipboard html, so we need to do this check.
|
|
36797
|
+
!!(environment.isSafari &&
|
|
36798
|
+
clipboardData.rawHtml &&
|
|
36799
|
+
((_a = clipboardData.rawHtml) === null || _a === void 0 ? void 0 : _a.replace(/ /g, '').indexOf(WORD_ATTRIBUTE_NAME + "=\"" + WORD_ATTRIBUTE_VALUE)) > -1));
|
|
36001
36800
|
};
|
|
36002
36801
|
exports.isWordDesktopDocument = isWordDesktopDocument;
|
|
36003
36802
|
|
|
@@ -36031,6 +36830,52 @@ var shouldConvertToSingleImage = function (props) {
|
|
|
36031
36830
|
exports.shouldConvertToSingleImage = shouldConvertToSingleImage;
|
|
36032
36831
|
|
|
36033
36832
|
|
|
36833
|
+
/***/ }),
|
|
36834
|
+
|
|
36835
|
+
/***/ "./packages/roosterjs-content-model-plugins/lib/paste/processors/pasteButtonProcessor.ts":
|
|
36836
|
+
/*!***********************************************************************************************!*\
|
|
36837
|
+
!*** ./packages/roosterjs-content-model-plugins/lib/paste/processors/pasteButtonProcessor.ts ***!
|
|
36838
|
+
\***********************************************************************************************/
|
|
36839
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
36840
|
+
|
|
36841
|
+
"use strict";
|
|
36842
|
+
|
|
36843
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
36844
|
+
exports.pasteButtonProcessor = void 0;
|
|
36845
|
+
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
36846
|
+
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
36847
|
+
/**
|
|
36848
|
+
* @internal
|
|
36849
|
+
* This processor is used to process <button> elements in the DOM and convert them into Content Model.
|
|
36850
|
+
* It handles the button element by creating a text segment for each text node within the button.
|
|
36851
|
+
*/
|
|
36852
|
+
var pasteButtonProcessor = function (group, element, context) {
|
|
36853
|
+
var format = {};
|
|
36854
|
+
(0, roosterjs_content_model_dom_1.parseFormat)(element, context.formatParsers.segment, format, context);
|
|
36855
|
+
// Recursively process text nodes in the button
|
|
36856
|
+
processTextNodesRecursively(group, element, context, format);
|
|
36857
|
+
};
|
|
36858
|
+
exports.pasteButtonProcessor = pasteButtonProcessor;
|
|
36859
|
+
/**
|
|
36860
|
+
* Helper function to recursively iterate through nodes and process text nodes
|
|
36861
|
+
*/
|
|
36862
|
+
function processTextNodesRecursively(group, node, context, format) {
|
|
36863
|
+
if (node.nodeType === Node.TEXT_NODE) {
|
|
36864
|
+
// Process text node directly
|
|
36865
|
+
var text = (0, roosterjs_content_model_dom_1.createText)(node.nodeValue || '', format);
|
|
36866
|
+
(0, roosterjs_content_model_dom_1.addSegment)(group, text);
|
|
36867
|
+
}
|
|
36868
|
+
else if ((0, roosterjs_content_model_dom_1.isNodeOfType)(node, 'ELEMENT_NODE')) {
|
|
36869
|
+
var newFormat = (0, tslib_1.__assign)({}, format);
|
|
36870
|
+
(0, roosterjs_content_model_dom_1.parseFormat)(node, context.formatParsers.segment, newFormat, context);
|
|
36871
|
+
// Recursively process all child nodes
|
|
36872
|
+
for (var i = 0; i < node.childNodes.length; i++) {
|
|
36873
|
+
processTextNodesRecursively(group, node.childNodes[i], context, newFormat);
|
|
36874
|
+
}
|
|
36875
|
+
}
|
|
36876
|
+
}
|
|
36877
|
+
|
|
36878
|
+
|
|
36034
36879
|
/***/ }),
|
|
36035
36880
|
|
|
36036
36881
|
/***/ "./packages/roosterjs-content-model-plugins/lib/paste/utils/addParser.ts":
|
|
@@ -36107,32 +36952,75 @@ exports.chainSanitizerCallback = chainSanitizerCallback;
|
|
|
36107
36952
|
|
|
36108
36953
|
/***/ }),
|
|
36109
36954
|
|
|
36110
|
-
/***/ "./packages/roosterjs-content-model-plugins/lib/paste/utils/
|
|
36111
|
-
|
|
36112
|
-
!*** ./packages/roosterjs-content-model-plugins/lib/paste/utils/
|
|
36113
|
-
|
|
36955
|
+
/***/ "./packages/roosterjs-content-model-plugins/lib/paste/utils/customListUtils.ts":
|
|
36956
|
+
/*!*************************************************************************************!*\
|
|
36957
|
+
!*** ./packages/roosterjs-content-model-plugins/lib/paste/utils/customListUtils.ts ***!
|
|
36958
|
+
\*************************************************************************************/
|
|
36114
36959
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
36115
36960
|
|
|
36116
36961
|
"use strict";
|
|
36117
36962
|
|
|
36118
36963
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
36119
|
-
exports.
|
|
36964
|
+
exports.processAsListItem = exports.setupListFormat = void 0;
|
|
36965
|
+
var removeNegativeTextIndentParser_1 = __webpack_require__(/*! ../parsers/removeNegativeTextIndentParser */ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/removeNegativeTextIndentParser.ts");
|
|
36120
36966
|
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
36967
|
+
var removeMargin = function (format) {
|
|
36968
|
+
delete format.marginLeft;
|
|
36969
|
+
};
|
|
36121
36970
|
/**
|
|
36122
36971
|
* @internal
|
|
36123
36972
|
*/
|
|
36124
|
-
|
|
36125
|
-
|
|
36126
|
-
|
|
36127
|
-
|
|
36128
|
-
|
|
36129
|
-
|
|
36130
|
-
|
|
36131
|
-
|
|
36973
|
+
function setupListFormat(listType, element, context, listDepth, listFormat, group, additionalParsers) {
|
|
36974
|
+
if (additionalParsers === void 0) { additionalParsers = []; }
|
|
36975
|
+
var newLevel = (0, roosterjs_content_model_dom_1.createListLevel)(listType);
|
|
36976
|
+
(0, roosterjs_content_model_dom_1.parseFormat)(element, context.formatParsers.listLevel, newLevel.format, context);
|
|
36977
|
+
(0, roosterjs_content_model_dom_1.parseFormat)(element, additionalParsers.concat(removeMargin), newLevel.format, context);
|
|
36978
|
+
// If the list format is in a different level, update the array so we get the new item
|
|
36979
|
+
// To be in the same level as the provided level metadata.
|
|
36980
|
+
if (listDepth > listFormat.levels.length) {
|
|
36981
|
+
while (listDepth != listFormat.levels.length) {
|
|
36982
|
+
listFormat.levels.push(newLevel);
|
|
36132
36983
|
}
|
|
36133
|
-
}
|
|
36984
|
+
}
|
|
36985
|
+
else {
|
|
36986
|
+
listFormat.levels.splice(listDepth, listFormat.levels.length - 1);
|
|
36987
|
+
listFormat.levels[listDepth - 1] = newLevel;
|
|
36988
|
+
}
|
|
36989
|
+
listFormat.listParent = group;
|
|
36990
|
+
}
|
|
36991
|
+
exports.setupListFormat = setupListFormat;
|
|
36992
|
+
/**
|
|
36993
|
+
* @internal
|
|
36994
|
+
*/
|
|
36995
|
+
function processAsListItem(context, element, group, listFormatMetadata, beforeProcessingChildren) {
|
|
36996
|
+
var listFormat = context.listFormat;
|
|
36997
|
+
if (listFormatMetadata) {
|
|
36998
|
+
(0, roosterjs_content_model_dom_1.updateListMetadata)(listFormat.levels[listFormat.levels.length - 1], function (metadata) {
|
|
36999
|
+
return Object.assign({}, metadata, listFormatMetadata);
|
|
37000
|
+
});
|
|
37001
|
+
}
|
|
37002
|
+
var listItem = (0, roosterjs_content_model_dom_1.createListItem)(listFormat.levels, context.segmentFormat);
|
|
37003
|
+
(0, roosterjs_content_model_dom_1.parseFormat)(element, context.formatParsers.segmentOnBlock, context.segmentFormat, context);
|
|
37004
|
+
(0, roosterjs_content_model_dom_1.parseFormat)(element, context.formatParsers.listItemElement, listItem.format, context);
|
|
37005
|
+
(0, roosterjs_content_model_dom_1.parseFormat)(element, [removeNegativeTextIndentParser_1.removeNegativeTextIndentParser, nonListElementParser], listItem.format, context);
|
|
37006
|
+
beforeProcessingChildren === null || beforeProcessingChildren === void 0 ? void 0 : beforeProcessingChildren(listItem);
|
|
37007
|
+
context.elementProcessors.child(listItem, element, context);
|
|
37008
|
+
(0, roosterjs_content_model_dom_1.addBlock)(group, listItem);
|
|
37009
|
+
}
|
|
37010
|
+
exports.processAsListItem = processAsListItem;
|
|
37011
|
+
var nonListElementParser = function (format, element, _context, defaultStyle) {
|
|
37012
|
+
if (!(0, roosterjs_content_model_dom_1.isElementOfType)(element, 'li')) {
|
|
37013
|
+
Object.keys(defaultStyle).forEach(function (keyInput) {
|
|
37014
|
+
var key = keyInput;
|
|
37015
|
+
var formatKey = keyInput;
|
|
37016
|
+
if (key != 'display' &&
|
|
37017
|
+
format[formatKey] != undefined &&
|
|
37018
|
+
format[formatKey] == defaultStyle[key]) {
|
|
37019
|
+
delete format[formatKey];
|
|
37020
|
+
}
|
|
37021
|
+
});
|
|
37022
|
+
}
|
|
36134
37023
|
};
|
|
36135
|
-
exports.deprecatedBorderColorParser = deprecatedBorderColorParser;
|
|
36136
37024
|
|
|
36137
37025
|
|
|
36138
37026
|
/***/ }),
|
|
@@ -36168,44 +37056,6 @@ function getStyles(element) {
|
|
|
36168
37056
|
exports.getStyles = getStyles;
|
|
36169
37057
|
|
|
36170
37058
|
|
|
36171
|
-
/***/ }),
|
|
36172
|
-
|
|
36173
|
-
/***/ "./packages/roosterjs-content-model-plugins/lib/paste/utils/linkParser.ts":
|
|
36174
|
-
/*!********************************************************************************!*\
|
|
36175
|
-
!*** ./packages/roosterjs-content-model-plugins/lib/paste/utils/linkParser.ts ***!
|
|
36176
|
-
\********************************************************************************/
|
|
36177
|
-
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
36178
|
-
|
|
36179
|
-
"use strict";
|
|
36180
|
-
|
|
36181
|
-
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
36182
|
-
exports.parseLink = void 0;
|
|
36183
|
-
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
36184
|
-
var SUPPORTED_PROTOCOLS = ['http:', 'https:', 'notes:', 'mailto:', 'onenote:'];
|
|
36185
|
-
var INVALID_LINKS_REGEX = /^file:\/\/\/[a-zA-Z\/]/i;
|
|
36186
|
-
/**
|
|
36187
|
-
* @internal
|
|
36188
|
-
*/
|
|
36189
|
-
var parseLink = function (format, element) {
|
|
36190
|
-
if (!(0, roosterjs_content_model_dom_1.isElementOfType)(element, 'a')) {
|
|
36191
|
-
return;
|
|
36192
|
-
}
|
|
36193
|
-
var url;
|
|
36194
|
-
try {
|
|
36195
|
-
url = new URL(element.href);
|
|
36196
|
-
}
|
|
36197
|
-
catch (_a) {
|
|
36198
|
-
url = undefined;
|
|
36199
|
-
}
|
|
36200
|
-
if ((url && SUPPORTED_PROTOCOLS.indexOf(url.protocol) === -1) ||
|
|
36201
|
-
INVALID_LINKS_REGEX.test(element.href)) {
|
|
36202
|
-
element.removeAttribute('href');
|
|
36203
|
-
format.href = '';
|
|
36204
|
-
}
|
|
36205
|
-
};
|
|
36206
|
-
exports.parseLink = parseLink;
|
|
36207
|
-
|
|
36208
|
-
|
|
36209
37059
|
/***/ }),
|
|
36210
37060
|
|
|
36211
37061
|
/***/ "./packages/roosterjs-content-model-plugins/lib/paste/utils/setProcessor.ts":
|
|
@@ -37233,6 +38083,7 @@ exports.setShortcutIndentationCommand = setShortcutIndentationCommand;
|
|
|
37233
38083
|
|
|
37234
38084
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
37235
38085
|
exports.TableEditPlugin = void 0;
|
|
38086
|
+
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
37236
38087
|
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
37237
38088
|
var TableEditor_1 = __webpack_require__(/*! ./editors/TableEditor */ "./packages/roosterjs-content-model-plugins/lib/tableEdit/editors/TableEditor.ts");
|
|
37238
38089
|
var TABLE_RESIZER_LENGTH = 12;
|
|
@@ -37247,12 +38098,15 @@ var TableEditPlugin = /** @class */ (function () {
|
|
|
37247
38098
|
* If not specified, the plugin will be inserted in document.body
|
|
37248
38099
|
* @param onTableEditorCreated An optional callback to customize the Table Editors elements when created.
|
|
37249
38100
|
* @param disableFeatures An optional array of TableEditFeatures to disable
|
|
38101
|
+
* @param tableSelector A function to select the tables to be edited. By default, it selects all contentEditable tables.
|
|
37250
38102
|
*/
|
|
37251
|
-
function TableEditPlugin(anchorContainerSelector, onTableEditorCreated, disableFeatures) {
|
|
38103
|
+
function TableEditPlugin(anchorContainerSelector, onTableEditorCreated, disableFeatures, tableSelector) {
|
|
37252
38104
|
var _this = this;
|
|
38105
|
+
if (tableSelector === void 0) { tableSelector = defaultTableSelector; }
|
|
37253
38106
|
this.anchorContainerSelector = anchorContainerSelector;
|
|
37254
38107
|
this.onTableEditorCreated = onTableEditorCreated;
|
|
37255
38108
|
this.disableFeatures = disableFeatures;
|
|
38109
|
+
this.tableSelector = tableSelector;
|
|
37256
38110
|
this.editor = null;
|
|
37257
38111
|
this.onMouseMoveDisposer = null;
|
|
37258
38112
|
this.tableRectMap = null;
|
|
@@ -37283,12 +38137,13 @@ var TableEditPlugin = /** @class */ (function () {
|
|
|
37283
38137
|
//Find table in range of mouse
|
|
37284
38138
|
if (_this.tableRectMap) {
|
|
37285
38139
|
for (var i = _this.tableRectMap.length - 1; i >= 0; i--) {
|
|
37286
|
-
var
|
|
38140
|
+
var entry = _this.tableRectMap[i];
|
|
38141
|
+
var rect = entry.rect;
|
|
37287
38142
|
if (x >= rect.left - TABLE_RESIZER_LENGTH &&
|
|
37288
38143
|
x <= rect.right + TABLE_RESIZER_LENGTH &&
|
|
37289
38144
|
y >= rect.top - TABLE_RESIZER_LENGTH &&
|
|
37290
38145
|
y <= rect.bottom + TABLE_RESIZER_LENGTH) {
|
|
37291
|
-
currentTable =
|
|
38146
|
+
currentTable = entry;
|
|
37292
38147
|
break;
|
|
37293
38148
|
}
|
|
37294
38149
|
}
|
|
@@ -37349,19 +38204,21 @@ var TableEditPlugin = /** @class */ (function () {
|
|
|
37349
38204
|
};
|
|
37350
38205
|
/**
|
|
37351
38206
|
* @internal Public only for unit test
|
|
37352
|
-
* @param
|
|
38207
|
+
* @param entry Table to use when setting the Editors
|
|
37353
38208
|
* @param event (Optional) Mouse event
|
|
37354
38209
|
*/
|
|
37355
|
-
TableEditPlugin.prototype.setTableEditor = function (
|
|
37356
|
-
if (this.tableEditor &&
|
|
38210
|
+
TableEditPlugin.prototype.setTableEditor = function (entry, event) {
|
|
38211
|
+
if (this.tableEditor &&
|
|
38212
|
+
!this.tableEditor.isEditing() &&
|
|
38213
|
+
(entry === null || entry === void 0 ? void 0 : entry.table) != this.tableEditor.table) {
|
|
37357
38214
|
this.disposeTableEditor();
|
|
37358
38215
|
}
|
|
37359
|
-
if (!this.tableEditor &&
|
|
38216
|
+
if (!this.tableEditor && entry && this.editor && entry.table.rows.length > 0) {
|
|
37360
38217
|
// anchorContainerSelector is used to specify the container to host the plugin, which can be outside of the editor's div
|
|
37361
38218
|
var container = this.anchorContainerSelector
|
|
37362
38219
|
? this.editor.getDocument().querySelector(this.anchorContainerSelector)
|
|
37363
38220
|
: undefined;
|
|
37364
|
-
this.tableEditor = new TableEditor_1.TableEditor(this.editor, table, this.invalidateTableRects, (0, roosterjs_content_model_dom_1.isNodeOfType)(container, 'ELEMENT_NODE') ? container : undefined, event === null || event === void 0 ? void 0 : event.currentTarget, this.onTableEditorCreated, this.disableFeatures);
|
|
38221
|
+
this.tableEditor = new TableEditor_1.TableEditor(this.editor, entry.table, entry.logicalRoot, this.invalidateTableRects, (0, roosterjs_content_model_dom_1.isNodeOfType)(container, 'ELEMENT_NODE') ? container : undefined, event === null || event === void 0 ? void 0 : event.currentTarget, this.onTableEditorCreated, this.disableFeatures);
|
|
37365
38222
|
}
|
|
37366
38223
|
};
|
|
37367
38224
|
TableEditPlugin.prototype.disposeTableEditor = function () {
|
|
@@ -37373,16 +38230,11 @@ var TableEditPlugin = /** @class */ (function () {
|
|
|
37373
38230
|
var _this = this;
|
|
37374
38231
|
if (!this.tableRectMap && this.editor) {
|
|
37375
38232
|
this.tableRectMap = [];
|
|
37376
|
-
var tables = this.editor.getDOMHelper()
|
|
38233
|
+
var tables = this.tableSelector(this.editor.getDOMHelper());
|
|
37377
38234
|
tables.forEach(function (table) {
|
|
37378
|
-
|
|
37379
|
-
|
|
37380
|
-
|
|
37381
|
-
_this.tableRectMap.push({
|
|
37382
|
-
table: table,
|
|
37383
|
-
rect: rect,
|
|
37384
|
-
});
|
|
37385
|
-
}
|
|
38235
|
+
var rect = (0, roosterjs_content_model_dom_1.normalizeRect)(table.table.getBoundingClientRect());
|
|
38236
|
+
if (rect && _this.tableRectMap) {
|
|
38237
|
+
_this.tableRectMap.push((0, tslib_1.__assign)((0, tslib_1.__assign)({}, table), { rect: rect }));
|
|
37386
38238
|
}
|
|
37387
38239
|
});
|
|
37388
38240
|
}
|
|
@@ -37390,6 +38242,15 @@ var TableEditPlugin = /** @class */ (function () {
|
|
|
37390
38242
|
return TableEditPlugin;
|
|
37391
38243
|
}());
|
|
37392
38244
|
exports.TableEditPlugin = TableEditPlugin;
|
|
38245
|
+
function defaultTableSelector(domHelper) {
|
|
38246
|
+
return domHelper
|
|
38247
|
+
.queryElements('table')
|
|
38248
|
+
.filter(function (table) { return table.isContentEditable; })
|
|
38249
|
+
.map(function (table) { return ({
|
|
38250
|
+
table: table,
|
|
38251
|
+
logicalRoot: null,
|
|
38252
|
+
}); });
|
|
38253
|
+
}
|
|
37393
38254
|
|
|
37394
38255
|
|
|
37395
38256
|
/***/ }),
|
|
@@ -37446,11 +38307,12 @@ var TOP_OR_SIDE;
|
|
|
37446
38307
|
* When set a different current table or change current TD, we need to update these areas
|
|
37447
38308
|
*/
|
|
37448
38309
|
var TableEditor = /** @class */ (function () {
|
|
37449
|
-
function TableEditor(editor, table, onChanged, anchorContainer, contentDiv, onTableEditorCreated, disableFeatures) {
|
|
38310
|
+
function TableEditor(editor, table, logicalRoot, onChanged, anchorContainer, contentDiv, onTableEditorCreated, disableFeatures) {
|
|
37450
38311
|
var _this = this;
|
|
37451
38312
|
var _a;
|
|
37452
38313
|
this.editor = editor;
|
|
37453
38314
|
this.table = table;
|
|
38315
|
+
this.logicalRoot = logicalRoot;
|
|
37454
38316
|
this.onChanged = onChanged;
|
|
37455
38317
|
this.anchorContainer = anchorContainer;
|
|
37456
38318
|
this.contentDiv = contentDiv;
|
|
@@ -37502,6 +38364,7 @@ var TableEditor = /** @class */ (function () {
|
|
|
37502
38364
|
_this.onStartResize();
|
|
37503
38365
|
};
|
|
37504
38366
|
this.onStartTableMove = function () {
|
|
38367
|
+
_this.onBeforeEditTable();
|
|
37505
38368
|
_this.isCurrentlyEditing = true;
|
|
37506
38369
|
_this.disposeTableResizer();
|
|
37507
38370
|
_this.disposeTableInserter();
|
|
@@ -37513,7 +38376,10 @@ var TableEditor = /** @class */ (function () {
|
|
|
37513
38376
|
}
|
|
37514
38377
|
return _this.onFinishEditing();
|
|
37515
38378
|
};
|
|
37516
|
-
this.
|
|
38379
|
+
this.onBeforeEditTable = function () {
|
|
38380
|
+
_this.editor.setLogicalRoot(_this.logicalRoot);
|
|
38381
|
+
};
|
|
38382
|
+
this.onAfterInsert = function () {
|
|
37517
38383
|
_this.disposeTableResizer();
|
|
37518
38384
|
_this.onFinishEditing();
|
|
37519
38385
|
};
|
|
@@ -37680,7 +38546,7 @@ var TableEditor = /** @class */ (function () {
|
|
|
37680
38546
|
this.disposeTableInserter();
|
|
37681
38547
|
}
|
|
37682
38548
|
if (!this.horizontalInserter && !this.verticalInserter && td) {
|
|
37683
|
-
var newInserter = (0, TableInserter_1.createTableInserter)(this.editor, td, this.table, this.isRTL, !!isHorizontal, this.
|
|
38549
|
+
var newInserter = (0, TableInserter_1.createTableInserter)(this.editor, td, this.table, this.isRTL, !!isHorizontal, this.onBeforeEditTable, this.onAfterInsert, this.anchorContainer, this.onEditorCreated);
|
|
37684
38550
|
if (isHorizontal) {
|
|
37685
38551
|
this.horizontalInserter = newInserter;
|
|
37686
38552
|
}
|
|
@@ -37722,6 +38588,7 @@ var TableEditor = /** @class */ (function () {
|
|
|
37722
38588
|
}
|
|
37723
38589
|
};
|
|
37724
38590
|
TableEditor.prototype.onStartResize = function () {
|
|
38591
|
+
this.onBeforeEditTable();
|
|
37725
38592
|
this.isCurrentlyEditing = true;
|
|
37726
38593
|
var range = this.editor.getDOMSelection();
|
|
37727
38594
|
if (range && range.type == 'range') {
|
|
@@ -38002,7 +38869,7 @@ exports.VERTICAL_INSERTER_ID = 'verticalInserter';
|
|
|
38002
38869
|
/**
|
|
38003
38870
|
* @internal
|
|
38004
38871
|
*/
|
|
38005
|
-
function createTableInserter(editor, td, table, isRTL, isHorizontal,
|
|
38872
|
+
function createTableInserter(editor, td, table, isRTL, isHorizontal, onBeforeInsert, onAfterInserted, anchorContainer, onTableEditorCreated) {
|
|
38006
38873
|
var tdRect = (0, roosterjs_content_model_dom_1.normalizeRect)(td.getBoundingClientRect());
|
|
38007
38874
|
var viewPort = editor.getVisibleViewport();
|
|
38008
38875
|
var tableRect = table && viewPort ? (0, getIntersectedRect_1.getIntersectedRect)([table], [viewPort]) : null;
|
|
@@ -38028,7 +38895,7 @@ function createTableInserter(editor, td, table, isRTL, isHorizontal, onInsert, a
|
|
|
38028
38895
|
div.firstChild.style.height = tableRect.bottom - tableRect.top + "px";
|
|
38029
38896
|
}
|
|
38030
38897
|
(anchorContainer || document_1.body).appendChild(div);
|
|
38031
|
-
var handler = new TableInsertHandler(div, td, table, isHorizontal, editor,
|
|
38898
|
+
var handler = new TableInsertHandler(div, td, table, isHorizontal, editor, onBeforeInsert, onAfterInserted, onTableEditorCreated);
|
|
38032
38899
|
return { div: div, featureHandler: handler, node: td };
|
|
38033
38900
|
}
|
|
38034
38901
|
return null;
|
|
@@ -38039,14 +38906,15 @@ exports.createTableInserter = createTableInserter;
|
|
|
38039
38906
|
* Exported for test only
|
|
38040
38907
|
*/
|
|
38041
38908
|
var TableInsertHandler = /** @class */ (function () {
|
|
38042
|
-
function TableInsertHandler(div, td, table, isHorizontal, editor,
|
|
38909
|
+
function TableInsertHandler(div, td, table, isHorizontal, editor, onBeforeInsert, onAfterInsert, onTableEditorCreated) {
|
|
38043
38910
|
var _this = this;
|
|
38044
38911
|
this.div = div;
|
|
38045
38912
|
this.td = td;
|
|
38046
38913
|
this.table = table;
|
|
38047
38914
|
this.isHorizontal = isHorizontal;
|
|
38048
38915
|
this.editor = editor;
|
|
38049
|
-
this.
|
|
38916
|
+
this.onBeforeInsert = onBeforeInsert;
|
|
38917
|
+
this.onAfterInsert = onAfterInsert;
|
|
38050
38918
|
this.insertTd = function () {
|
|
38051
38919
|
// Get cell coordinates
|
|
38052
38920
|
var columnIndex = _this.td.cellIndex;
|
|
@@ -38057,6 +38925,7 @@ var TableInsertHandler = /** @class */ (function () {
|
|
|
38057
38925
|
if ((row === null || row === void 0 ? void 0 : row.cells) == undefined || rowIndex == undefined) {
|
|
38058
38926
|
return;
|
|
38059
38927
|
}
|
|
38928
|
+
_this.onBeforeInsert();
|
|
38060
38929
|
// Insert row or column
|
|
38061
38930
|
(0, roosterjs_content_model_api_1.formatTableWithContentModel)(_this.editor, 'editTablePlugin', function (tableModel) {
|
|
38062
38931
|
_this.isHorizontal
|
|
@@ -38071,7 +38940,7 @@ var TableInsertHandler = /** @class */ (function () {
|
|
|
38071
38940
|
lastRow: rowIndex,
|
|
38072
38941
|
table: _this.table,
|
|
38073
38942
|
});
|
|
38074
|
-
_this.
|
|
38943
|
+
_this.onAfterInsert();
|
|
38075
38944
|
};
|
|
38076
38945
|
this.div.addEventListener('click', this.insertTd);
|
|
38077
38946
|
this.disposer = onTableEditorCreated === null || onTableEditorCreated === void 0 ? void 0 : onTableEditorCreated(isHorizontal ? 'HorizontalTableInserter' : 'VerticalTableInserter', div);
|
|
@@ -38737,7 +39606,7 @@ var WatermarkPlugin = /** @class */ (function () {
|
|
|
38737
39606
|
this.isShowing = true;
|
|
38738
39607
|
};
|
|
38739
39608
|
WatermarkPlugin.prototype.applyWatermarkStyle = function (editor) {
|
|
38740
|
-
var rule = "position: absolute; pointer-events: none; content: \"" + this.watermark + "\";";
|
|
39609
|
+
var rule = "position: absolute; pointer-events: none; margin-inline-start: 1px; content: \"" + this.watermark + "\";";
|
|
38741
39610
|
var format = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, this.format), { textColor: editor.isDarkMode() ? this.darkTextColor : this.format.textColor });
|
|
38742
39611
|
(0, roosterjs_content_model_dom_1.getObjectKeys)(styleMap).forEach(function (x) {
|
|
38743
39612
|
if (format[x]) {
|