roosterjs 9.42.0 → 9.44.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 +81 -6
- package/dist/rooster-amd.js +382 -161
- package/dist/rooster-amd.js.map +1 -1
- package/dist/rooster-min.js +1 -1
- package/dist/rooster-min.js.map +1 -1
- package/dist/rooster.d.ts +81 -6
- package/dist/rooster.js +382 -161
- package/dist/rooster.js.map +1 -1
- package/package.json +7 -7
package/dist/rooster.js
CHANGED
|
@@ -2095,7 +2095,7 @@ exports["default"] = getDarkColor;
|
|
|
2095
2095
|
|
|
2096
2096
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
2097
2097
|
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;
|
|
2098
|
-
exports.adjustWordSelection = 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
|
+
exports.adjustWordSelection = exports.queryContentModelBlocks = exports.getListAnnounceData = exports.getPromoteLink = exports.promoteLink = exports.matchLink = exports.setModelIndentation = exports.findListItemsInSameThread = exports.setModelListStartNumber = exports.setModelListStyle = exports.setListType = exports.formatInsertPointWithContentModel = exports.formatTextSegmentBeforeSelectionMarker = exports.formatSegmentWithContentModel = void 0;
|
|
2099
2099
|
var insertTable_1 = __webpack_require__(/*! ./publicApi/table/insertTable */ "./packages/roosterjs-content-model-api/lib/publicApi/table/insertTable.ts");
|
|
2100
2100
|
Object.defineProperty(exports, "insertTable", ({ enumerable: true, get: function () { return insertTable_1.insertTable; } }));
|
|
2101
2101
|
var formatTable_1 = __webpack_require__(/*! ./publicApi/table/formatTable */ "./packages/roosterjs-content-model-api/lib/publicApi/table/formatTable.ts");
|
|
@@ -2216,6 +2216,7 @@ var matchLink_1 = __webpack_require__(/*! ./modelApi/link/matchLink */ "./packag
|
|
|
2216
2216
|
Object.defineProperty(exports, "matchLink", ({ enumerable: true, get: function () { return matchLink_1.matchLink; } }));
|
|
2217
2217
|
var promoteLink_1 = __webpack_require__(/*! ./modelApi/link/promoteLink */ "./packages/roosterjs-content-model-api/lib/modelApi/link/promoteLink.ts");
|
|
2218
2218
|
Object.defineProperty(exports, "promoteLink", ({ enumerable: true, get: function () { return promoteLink_1.promoteLink; } }));
|
|
2219
|
+
Object.defineProperty(exports, "getPromoteLink", ({ enumerable: true, get: function () { return promoteLink_1.getPromoteLink; } }));
|
|
2219
2220
|
var getListAnnounceData_1 = __webpack_require__(/*! ./modelApi/list/getListAnnounceData */ "./packages/roosterjs-content-model-api/lib/modelApi/list/getListAnnounceData.ts");
|
|
2220
2221
|
Object.defineProperty(exports, "getListAnnounceData", ({ enumerable: true, get: function () { return getListAnnounceData_1.getListAnnounceData; } }));
|
|
2221
2222
|
var queryContentModelBlocks_1 = __webpack_require__(/*! ./modelApi/common/queryContentModelBlocks */ "./packages/roosterjs-content-model-api/lib/modelApi/common/queryContentModelBlocks.ts");
|
|
@@ -2534,7 +2535,13 @@ function setModelIndentation(model, indentation, length, context) {
|
|
|
2534
2535
|
}
|
|
2535
2536
|
}
|
|
2536
2537
|
});
|
|
2537
|
-
|
|
2538
|
+
if (paragraphOrListItem.length > 0) {
|
|
2539
|
+
(0, roosterjs_content_model_dom_1.normalizeContentModel)(model);
|
|
2540
|
+
return true;
|
|
2541
|
+
}
|
|
2542
|
+
else {
|
|
2543
|
+
return false;
|
|
2544
|
+
}
|
|
2538
2545
|
}
|
|
2539
2546
|
exports.setModelIndentation = setModelIndentation;
|
|
2540
2547
|
function isSelected(listItem) {
|
|
@@ -3449,9 +3456,12 @@ var MAILTO_REGEX = "(M|m)ailto:" + COMMON_REGEX;
|
|
|
3449
3456
|
function getLinkUrl(text, autoLinkOptions) {
|
|
3450
3457
|
var _a;
|
|
3451
3458
|
var _b = autoLinkOptions !== null && autoLinkOptions !== void 0 ? autoLinkOptions : {}, autoLink = _b.autoLink, autoMailto = _b.autoMailto, autoTel = _b.autoTel;
|
|
3459
|
+
var mailtoMatch = matchMailTo(text);
|
|
3460
|
+
if (mailtoMatch && !autoMailto) {
|
|
3461
|
+
return undefined;
|
|
3462
|
+
}
|
|
3452
3463
|
var linkMatch = autoLink ? (_a = (0, matchLink_1.matchLink)(text)) === null || _a === void 0 ? void 0 : _a.normalizedUrl : undefined;
|
|
3453
3464
|
var telMatch = autoTel ? matchTel(text) : undefined;
|
|
3454
|
-
var mailtoMatch = autoMailto ? matchMailTo(text) : undefined;
|
|
3455
3465
|
return linkMatch || telMatch || mailtoMatch;
|
|
3456
3466
|
}
|
|
3457
3467
|
exports.getLinkUrl = getLinkUrl;
|
|
@@ -3578,7 +3588,7 @@ exports.matchLink = matchLink;
|
|
|
3578
3588
|
"use strict";
|
|
3579
3589
|
|
|
3580
3590
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
3581
|
-
exports.promoteLink = void 0;
|
|
3591
|
+
exports.getPromoteLink = exports.promoteLink = void 0;
|
|
3582
3592
|
var getLinkUrl_1 = __webpack_require__(/*! ./getLinkUrl */ "./packages/roosterjs-content-model-api/lib/modelApi/link/getLinkUrl.ts");
|
|
3583
3593
|
var splitTextSegment_1 = __webpack_require__(/*! ../../publicApi/segment/splitTextSegment */ "./packages/roosterjs-content-model-api/lib/publicApi/segment/splitTextSegment.ts");
|
|
3584
3594
|
/**
|
|
@@ -3596,14 +3606,12 @@ function promoteLink(segment, paragraph, autoLinkOptions) {
|
|
|
3596
3606
|
if (segment.link) {
|
|
3597
3607
|
return null;
|
|
3598
3608
|
}
|
|
3599
|
-
var
|
|
3600
|
-
|
|
3601
|
-
|
|
3602
|
-
if (url && link && (linkUrl = (0, getLinkUrl_1.getLinkUrl)(url, autoLinkOptions))) {
|
|
3603
|
-
var linkSegment = (0, splitTextSegment_1.splitTextSegment)(segment, paragraph, segment.text.length - link.trimLeft().length, segment.text.trimRight().length);
|
|
3609
|
+
var promotedLink = getPromoteLink(segment, autoLinkOptions);
|
|
3610
|
+
if (promotedLink) {
|
|
3611
|
+
var linkSegment = (0, splitTextSegment_1.splitTextSegment)(segment, paragraph, segment.text.length - promotedLink.label.trimLeft().length, segment.text.trimRight().length);
|
|
3604
3612
|
linkSegment.link = {
|
|
3605
3613
|
format: {
|
|
3606
|
-
href:
|
|
3614
|
+
href: promotedLink.href,
|
|
3607
3615
|
underline: true,
|
|
3608
3616
|
},
|
|
3609
3617
|
dataset: {},
|
|
@@ -3613,6 +3621,25 @@ function promoteLink(segment, paragraph, autoLinkOptions) {
|
|
|
3613
3621
|
return null;
|
|
3614
3622
|
}
|
|
3615
3623
|
exports.promoteLink = promoteLink;
|
|
3624
|
+
/**
|
|
3625
|
+
* Verify if the link can be promoted
|
|
3626
|
+
* @param segment The text segment to search link text from
|
|
3627
|
+
* @param options Options of auto link
|
|
3628
|
+
* @returns if a link can be promoted
|
|
3629
|
+
*/
|
|
3630
|
+
function getPromoteLink(segment, autoLinkOptions) {
|
|
3631
|
+
var link = segment.text.split(' ').pop();
|
|
3632
|
+
var url = link === null || link === void 0 ? void 0 : link.trim();
|
|
3633
|
+
var linkUrl = undefined;
|
|
3634
|
+
if (url && link && (linkUrl = (0, getLinkUrl_1.getLinkUrl)(url, autoLinkOptions))) {
|
|
3635
|
+
return {
|
|
3636
|
+
label: link,
|
|
3637
|
+
href: linkUrl,
|
|
3638
|
+
};
|
|
3639
|
+
}
|
|
3640
|
+
return undefined;
|
|
3641
|
+
}
|
|
3642
|
+
exports.getPromoteLink = getPromoteLink;
|
|
3616
3643
|
|
|
3617
3644
|
|
|
3618
3645
|
/***/ }),
|
|
@@ -3856,7 +3883,8 @@ function setListType(model, listType, removeMargins) {
|
|
|
3856
3883
|
var _b, _c;
|
|
3857
3884
|
var block = _a.block, parent = _a.parent;
|
|
3858
3885
|
if ((0, roosterjs_content_model_dom_1.isBlockGroupOfType)(block, 'ListItem')) {
|
|
3859
|
-
var
|
|
3886
|
+
var mutableBlock = (0, roosterjs_content_model_dom_1.mutateBlock)(block);
|
|
3887
|
+
var level = mutableBlock.levels.pop();
|
|
3860
3888
|
if (!alreadyInExpectedType && level) {
|
|
3861
3889
|
level.listType = listType;
|
|
3862
3890
|
(0, roosterjs_content_model_dom_1.updateListMetadata)(level, function (metadata) {
|
|
@@ -3864,7 +3892,7 @@ function setListType(model, listType, removeMargins) {
|
|
|
3864
3892
|
applyListStyleFromLevel: true,
|
|
3865
3893
|
});
|
|
3866
3894
|
});
|
|
3867
|
-
|
|
3895
|
+
mutableBlock.levels.push(level);
|
|
3868
3896
|
}
|
|
3869
3897
|
else if (block.blocks.length == 1) {
|
|
3870
3898
|
(0, roosterjs_content_model_dom_1.setParagraphNotImplicit)(block.blocks[0]);
|
|
@@ -5147,7 +5175,6 @@ function getExistingHeadingTag(decorator) {
|
|
|
5147
5175
|
|
|
5148
5176
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
5149
5177
|
exports.setIndentation = void 0;
|
|
5150
|
-
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
5151
5178
|
var setModelIndentation_1 = __webpack_require__(/*! ../../modelApi/block/setModelIndentation */ "./packages/roosterjs-content-model-api/lib/modelApi/block/setModelIndentation.ts");
|
|
5152
5179
|
/**
|
|
5153
5180
|
* Indent or outdent to selected paragraphs
|
|
@@ -5159,9 +5186,6 @@ function setIndentation(editor, indentation, length) {
|
|
|
5159
5186
|
editor.focus();
|
|
5160
5187
|
editor.formatContentModel(function (model, context) {
|
|
5161
5188
|
var result = (0, setModelIndentation_1.setModelIndentation)(model, indentation, length);
|
|
5162
|
-
if (result) {
|
|
5163
|
-
(0, roosterjs_content_model_dom_1.normalizeContentModel)(model);
|
|
5164
|
-
}
|
|
5165
5189
|
context.newPendingFormat = 'preserve';
|
|
5166
5190
|
return result;
|
|
5167
5191
|
}, {
|
|
@@ -7483,7 +7507,7 @@ function formatSegmentWithContentModel(editor, apiName, toggleStyleCallback, seg
|
|
|
7483
7507
|
var modelsFromEntities = [];
|
|
7484
7508
|
segmentAndParagraphs.forEach(function (item) {
|
|
7485
7509
|
if (item[0].segmentType == 'Entity') {
|
|
7486
|
-
expandEntitySelections(editor, item[0], formatsAndSegments, modelsFromEntities);
|
|
7510
|
+
expandEntitySelections(editor, item[0], formatsAndSegments, modelsFromEntities, item[1]);
|
|
7487
7511
|
}
|
|
7488
7512
|
else {
|
|
7489
7513
|
formatsAndSegments.push([item[0].format, item[0], item[1]]);
|
|
@@ -7528,7 +7552,7 @@ function formatSegmentWithContentModel(editor, apiName, toggleStyleCallback, seg
|
|
|
7528
7552
|
});
|
|
7529
7553
|
}
|
|
7530
7554
|
exports.formatSegmentWithContentModel = formatSegmentWithContentModel;
|
|
7531
|
-
function expandEntitySelections(editor, entity, formatsAndSegments, modelsFromEntities) {
|
|
7555
|
+
function expandEntitySelections(editor, entity, formatsAndSegments, modelsFromEntities, paragraph) {
|
|
7532
7556
|
var _a = entity.entityFormat, id = _a.id, type = _a.entityType, isReadonly = _a.isReadonly;
|
|
7533
7557
|
if (id && type) {
|
|
7534
7558
|
var formattableRoots = [];
|
|
@@ -7552,6 +7576,9 @@ function expandEntitySelections(editor, entity, formatsAndSegments, modelsFromEn
|
|
|
7552
7576
|
modelsFromEntities.push([entity, root, model]);
|
|
7553
7577
|
}
|
|
7554
7578
|
});
|
|
7579
|
+
if (formattableRoots.length > 0) {
|
|
7580
|
+
formatsAndSegments.push([entity.format, entity, paragraph]);
|
|
7581
|
+
}
|
|
7555
7582
|
}
|
|
7556
7583
|
}
|
|
7557
7584
|
function writeBackEntities(editor, modelsFromEntities) {
|
|
@@ -8969,8 +8996,8 @@ function createDOMFromHtml(html, domCreator) {
|
|
|
8969
8996
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
8970
8997
|
exports.retrieveHtmlInfo = void 0;
|
|
8971
8998
|
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
8972
|
-
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
8973
8999
|
var convertInlineCss_1 = __webpack_require__(/*! ../createModelFromHtml/convertInlineCss */ "./packages/roosterjs-content-model-core/lib/command/createModelFromHtml/convertInlineCss.ts");
|
|
9000
|
+
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
8974
9001
|
var START_FRAGMENT = '<!--StartFragment-->';
|
|
8975
9002
|
var END_FRAGMENT = '<!--EndFragment-->';
|
|
8976
9003
|
/**
|
|
@@ -8982,7 +9009,7 @@ function retrieveHtmlInfo(doc, clipboardData) {
|
|
|
8982
9009
|
globalCssRules: [],
|
|
8983
9010
|
};
|
|
8984
9011
|
if (doc) {
|
|
8985
|
-
result = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, retrieveHtmlStrings(clipboardData)), { globalCssRules: (0, convertInlineCss_1.retrieveCssRules)(doc), metadata:
|
|
9012
|
+
result = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, retrieveHtmlStrings(clipboardData)), { globalCssRules: (0, convertInlineCss_1.retrieveCssRules)(doc), metadata: (0, roosterjs_content_model_dom_1.retrieveDocumentMetadata)(doc), containsBlockElements: checkBlockElements(doc) });
|
|
8986
9013
|
clipboardData.htmlFirstLevelChildTags = retrieveTopLevelTags(doc);
|
|
8987
9014
|
}
|
|
8988
9015
|
return result;
|
|
@@ -9004,18 +9031,6 @@ function retrieveTopLevelTags(doc) {
|
|
|
9004
9031
|
}
|
|
9005
9032
|
return topLevelTags;
|
|
9006
9033
|
}
|
|
9007
|
-
function retrieveMetadata(doc) {
|
|
9008
|
-
var _a;
|
|
9009
|
-
var result = {};
|
|
9010
|
-
var attributes = (_a = doc.querySelector('html')) === null || _a === void 0 ? void 0 : _a.attributes;
|
|
9011
|
-
(attributes ? (0, roosterjs_content_model_dom_1.toArray)(attributes) : []).forEach(function (attr) {
|
|
9012
|
-
result[attr.name] = attr.value;
|
|
9013
|
-
});
|
|
9014
|
-
(0, roosterjs_content_model_dom_1.toArray)(doc.querySelectorAll('meta')).forEach(function (meta) {
|
|
9015
|
-
result[meta.name] = meta.content;
|
|
9016
|
-
});
|
|
9017
|
-
return result;
|
|
9018
|
-
}
|
|
9019
9034
|
function retrieveHtmlStrings(clipboardData) {
|
|
9020
9035
|
var _a;
|
|
9021
9036
|
var rawHtml = (_a = clipboardData.rawHtml) !== null && _a !== void 0 ? _a : '';
|
|
@@ -9610,10 +9625,10 @@ var getRootComputedStyleForContext_1 = __webpack_require__(/*! ./getRootComputed
|
|
|
9610
9625
|
* Create a EditorContext object used by ContentModel API
|
|
9611
9626
|
*/
|
|
9612
9627
|
var createEditorContext = function (core, saveIndex) {
|
|
9613
|
-
var _a, _b;
|
|
9628
|
+
var _a, _b, _c;
|
|
9614
9629
|
var lifecycle = core.lifecycle, format = core.format, darkColorHandler = core.darkColorHandler, logicalRoot = core.logicalRoot, cache = core.cache, domHelper = core.domHelper;
|
|
9615
9630
|
saveIndex = saveIndex && !core.lifecycle.shadowEditFragment;
|
|
9616
|
-
var context = (0, tslib_1.__assign)({ isDarkMode: lifecycle.isDarkMode, defaultFormat: format.defaultFormat, pendingFormat: (_a = format.pendingFormat) !== null && _a !== void 0 ? _a : undefined, darkColorHandler: darkColorHandler, addDelimiterForEntity: true, allowCacheElement: true, domIndexer: saveIndex ? cache.domIndexer : undefined, zoomScale: domHelper.calculateZoomScale(), experimentalFeatures: (
|
|
9631
|
+
var context = (0, tslib_1.__assign)({ isDarkMode: lifecycle.isDarkMode, defaultFormat: format.defaultFormat, pendingFormat: (_a = format.pendingFormat) !== null && _a !== void 0 ? _a : undefined, darkColorHandler: darkColorHandler, addDelimiterForEntity: true, allowCacheElement: true, allowCacheListItem: !!((_b = core.experimentalFeatures) === null || _b === void 0 ? void 0 : _b.includes('CacheList')), domIndexer: saveIndex ? cache.domIndexer : undefined, zoomScale: domHelper.calculateZoomScale(), experimentalFeatures: (_c = core.experimentalFeatures) !== null && _c !== void 0 ? _c : [], paragraphMap: core.cache.paragraphMap, editorViewWidth: domHelper.getClientWidth() }, (0, getRootComputedStyleForContext_1.getRootComputedStyleForContext)(logicalRoot.ownerDocument));
|
|
9617
9632
|
if (core.domHelper.isRightToLeft()) {
|
|
9618
9633
|
context.isRootRtl = true;
|
|
9619
9634
|
}
|
|
@@ -11447,7 +11462,7 @@ var DomIndexerImpl = /** @class */ (function () {
|
|
|
11447
11462
|
var startContainer = newRange.startContainer, startOffset = newRange.startOffset, endContainer = newRange.endContainer, endOffset = newRange.endOffset, collapsed = newRange.collapsed;
|
|
11448
11463
|
delete model.hasRevertedRangeSelection;
|
|
11449
11464
|
if (collapsed) {
|
|
11450
|
-
return !!this.reconcileNodeSelection(startContainer, startOffset, model.format);
|
|
11465
|
+
return !!this.reconcileNodeSelection(startContainer, startOffset, model.format, selectionMarker);
|
|
11451
11466
|
}
|
|
11452
11467
|
else if (startContainer == endContainer &&
|
|
11453
11468
|
(0, roosterjs_content_model_dom_1.isNodeOfType)(startContainer, 'TEXT_NODE')) {
|
|
@@ -11535,10 +11550,10 @@ var DomIndexerImpl = /** @class */ (function () {
|
|
|
11535
11550
|
var start = selection.start, end = selection.end;
|
|
11536
11551
|
return start.node == end.node && start.offset == end.offset;
|
|
11537
11552
|
};
|
|
11538
|
-
DomIndexerImpl.prototype.reconcileNodeSelection = function (node, offset, defaultFormat) {
|
|
11553
|
+
DomIndexerImpl.prototype.reconcileNodeSelection = function (node, offset, defaultFormat, selectionMarker) {
|
|
11539
11554
|
if ((0, roosterjs_content_model_dom_1.isNodeOfType)(node, 'TEXT_NODE')) {
|
|
11540
11555
|
if (isIndexedSegment(node)) {
|
|
11541
|
-
return this.reconcileTextSelection(node, offset);
|
|
11556
|
+
return this.reconcileTextSelection(node, offset, undefined, selectionMarker);
|
|
11542
11557
|
}
|
|
11543
11558
|
else if (isIndexedDelimiter(node)) {
|
|
11544
11559
|
return this.reconcileDelimiterSelection(node, defaultFormat);
|
|
@@ -19549,6 +19564,39 @@ function readFile(file, callback) {
|
|
|
19549
19564
|
exports.readFile = readFile;
|
|
19550
19565
|
|
|
19551
19566
|
|
|
19567
|
+
/***/ }),
|
|
19568
|
+
|
|
19569
|
+
/***/ "./packages/roosterjs-content-model-dom/lib/domUtils/retrieveDocumentMetadata.ts":
|
|
19570
|
+
/*!***************************************************************************************!*\
|
|
19571
|
+
!*** ./packages/roosterjs-content-model-dom/lib/domUtils/retrieveDocumentMetadata.ts ***!
|
|
19572
|
+
\***************************************************************************************/
|
|
19573
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
19574
|
+
|
|
19575
|
+
"use strict";
|
|
19576
|
+
|
|
19577
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
19578
|
+
exports.retrieveDocumentMetadata = void 0;
|
|
19579
|
+
var toArray_1 = __webpack_require__(/*! ./toArray */ "./packages/roosterjs-content-model-dom/lib/domUtils/toArray.ts");
|
|
19580
|
+
/**
|
|
19581
|
+
* Retrieves metadata from the given document, including HTML attributes and meta tags.
|
|
19582
|
+
* @param doc The document from which to retrieve metadata.
|
|
19583
|
+
* @returns A record containing metadata key-value pairs.
|
|
19584
|
+
*/
|
|
19585
|
+
function retrieveDocumentMetadata(doc) {
|
|
19586
|
+
var _a;
|
|
19587
|
+
var result = {};
|
|
19588
|
+
var attributes = (_a = doc.querySelector('html')) === null || _a === void 0 ? void 0 : _a.attributes;
|
|
19589
|
+
(attributes ? (0, toArray_1.toArray)(attributes) : []).forEach(function (attr) {
|
|
19590
|
+
result[attr.name] = attr.value;
|
|
19591
|
+
});
|
|
19592
|
+
(0, toArray_1.toArray)(doc.querySelectorAll('meta')).forEach(function (meta) {
|
|
19593
|
+
result[meta.name] = meta.content;
|
|
19594
|
+
});
|
|
19595
|
+
return result;
|
|
19596
|
+
}
|
|
19597
|
+
exports.retrieveDocumentMetadata = retrieveDocumentMetadata;
|
|
19598
|
+
|
|
19599
|
+
|
|
19552
19600
|
/***/ }),
|
|
19553
19601
|
|
|
19554
19602
|
/***/ "./packages/roosterjs-content-model-dom/lib/domUtils/reuseCachedElement.ts":
|
|
@@ -22386,8 +22434,8 @@ exports.shouldSetValue = shouldSetValue;
|
|
|
22386
22434
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
22387
22435
|
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.scrollRectIntoView = 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;
|
|
22388
22436
|
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 = exports.createParagraphDecorator = void 0;
|
|
22389
|
-
exports.
|
|
22390
|
-
exports.EmptySegmentFormat = exports.UnorderedListStyleMap = exports.OrderedListStyleMap = exports.TableBorderFormat = exports.NumberingListType = exports.BulletListType = exports.ChangeSource = exports.ListMetadataDefinition = exports.getListMetadata = exports.updateListMetadata = exports.getTableMetadata = exports.updateTableMetadata = void 0;
|
|
22437
|
+
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.getRangesByText = exports.getImageState = exports.setImageState = exports.getParagraphMarker = exports.setParagraphMarker = exports.cacheGetEventData = exports.extractClipboardItems = exports.normalizeFontFamily = exports.transformColor = exports.retrieveDocumentMetadata = exports.readFile = exports.parseTableCells = exports.normalizeText = exports.isSpace = exports.isPunctuation = exports.extractBorderValues = exports.combineBorderValue = exports.isCursorMovingKey = void 0;
|
|
22438
|
+
exports.EmptySegmentFormat = exports.UnorderedListStyleMap = exports.OrderedListStyleMap = exports.TableBorderFormat = exports.NumberingListType = exports.BulletListType = exports.ChangeSource = exports.ListMetadataDefinition = exports.getListMetadata = exports.updateListMetadata = exports.getTableMetadata = exports.updateTableMetadata = exports.getTableCellMetadata = void 0;
|
|
22391
22439
|
var domToContentModel_1 = __webpack_require__(/*! ./domToModel/domToContentModel */ "./packages/roosterjs-content-model-dom/lib/domToModel/domToContentModel.ts");
|
|
22392
22440
|
Object.defineProperty(exports, "domToContentModel", ({ enumerable: true, get: function () { return domToContentModel_1.domToContentModel; } }));
|
|
22393
22441
|
var contentModelToDom_1 = __webpack_require__(/*! ./modelToDom/contentModelToDom */ "./packages/roosterjs-content-model-dom/lib/modelToDom/contentModelToDom.ts");
|
|
@@ -22571,6 +22619,8 @@ var parseTableCells_1 = __webpack_require__(/*! ./domUtils/table/parseTableCells
|
|
|
22571
22619
|
Object.defineProperty(exports, "parseTableCells", ({ enumerable: true, get: function () { return parseTableCells_1.parseTableCells; } }));
|
|
22572
22620
|
var readFile_1 = __webpack_require__(/*! ./domUtils/readFile */ "./packages/roosterjs-content-model-dom/lib/domUtils/readFile.ts");
|
|
22573
22621
|
Object.defineProperty(exports, "readFile", ({ enumerable: true, get: function () { return readFile_1.readFile; } }));
|
|
22622
|
+
var retrieveDocumentMetadata_1 = __webpack_require__(/*! ./domUtils/retrieveDocumentMetadata */ "./packages/roosterjs-content-model-dom/lib/domUtils/retrieveDocumentMetadata.ts");
|
|
22623
|
+
Object.defineProperty(exports, "retrieveDocumentMetadata", ({ enumerable: true, get: function () { return retrieveDocumentMetadata_1.retrieveDocumentMetadata; } }));
|
|
22574
22624
|
var transformColor_1 = __webpack_require__(/*! ./domUtils/style/transformColor */ "./packages/roosterjs-content-model-dom/lib/domUtils/style/transformColor.ts");
|
|
22575
22625
|
Object.defineProperty(exports, "transformColor", ({ enumerable: true, get: function () { return transformColor_1.transformColor; } }));
|
|
22576
22626
|
var normalizeFontFamily_1 = __webpack_require__(/*! ./domUtils/style/normalizeFontFamily */ "./packages/roosterjs-content-model-dom/lib/domUtils/style/normalizeFontFamily.ts");
|
|
@@ -27726,12 +27776,11 @@ exports.handleBlock = handleBlock;
|
|
|
27726
27776
|
|
|
27727
27777
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
27728
27778
|
exports.handleBlockGroupChildren = void 0;
|
|
27729
|
-
var
|
|
27779
|
+
var cleanUpRestNodes_1 = __webpack_require__(/*! ../utils/cleanUpRestNodes */ "./packages/roosterjs-content-model-dom/lib/modelToDom/utils/cleanUpRestNodes.ts");
|
|
27730
27780
|
/**
|
|
27731
27781
|
* @internal
|
|
27732
27782
|
*/
|
|
27733
27783
|
var handleBlockGroupChildren = function (doc, parent, group, context) {
|
|
27734
|
-
var _a;
|
|
27735
27784
|
var listFormat = context.listFormat;
|
|
27736
27785
|
var nodeStack = listFormat.nodeStack;
|
|
27737
27786
|
var refNode = parent.firstChild;
|
|
@@ -27745,28 +27794,35 @@ var handleBlockGroupChildren = function (doc, parent, group, context) {
|
|
|
27745
27794
|
if (index == 0 ||
|
|
27746
27795
|
childBlock.blockType != 'BlockGroup' ||
|
|
27747
27796
|
childBlock.blockGroupType != 'ListItem') {
|
|
27748
|
-
listFormat.nodeStack
|
|
27797
|
+
cleanUpNodeStack(listFormat.nodeStack, context);
|
|
27798
|
+
if (listFormat.nodeStack.length > 0) {
|
|
27799
|
+
listFormat.nodeStack = [];
|
|
27800
|
+
}
|
|
27749
27801
|
}
|
|
27750
27802
|
refNode = context.modelHandlers.block(doc, parent, childBlock, context, refNode);
|
|
27751
27803
|
if (childBlock.blockType == 'Entity') {
|
|
27752
27804
|
(_a = context.domIndexer) === null || _a === void 0 ? void 0 : _a.onBlockEntity(childBlock, group);
|
|
27753
27805
|
}
|
|
27754
27806
|
});
|
|
27807
|
+
cleanUpNodeStack(listFormat.nodeStack, context);
|
|
27755
27808
|
// Remove all rest node if any since they don't appear in content model
|
|
27756
|
-
|
|
27757
|
-
var next = refNode.nextSibling;
|
|
27758
|
-
if ((0, isNodeOfType_1.isNodeOfType)(refNode, 'ELEMENT_NODE')) {
|
|
27759
|
-
context.rewriteFromModel.removedBlockElements.push(refNode);
|
|
27760
|
-
}
|
|
27761
|
-
(_a = refNode.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(refNode);
|
|
27762
|
-
refNode = next;
|
|
27763
|
-
}
|
|
27809
|
+
(0, cleanUpRestNodes_1.cleanUpRestNodes)(refNode, context.rewriteFromModel);
|
|
27764
27810
|
}
|
|
27765
27811
|
finally {
|
|
27766
27812
|
listFormat.nodeStack = nodeStack;
|
|
27767
27813
|
}
|
|
27768
27814
|
};
|
|
27769
27815
|
exports.handleBlockGroupChildren = handleBlockGroupChildren;
|
|
27816
|
+
function cleanUpNodeStack(nodeStack, context) {
|
|
27817
|
+
var _a, _b;
|
|
27818
|
+
if (context.allowCacheListItem && nodeStack.length > 0) {
|
|
27819
|
+
// Clear list stack, only run to nodeStack[1] because nodeStack[0] is the parent node
|
|
27820
|
+
for (var i = nodeStack.length - 1; i > 0; i--) {
|
|
27821
|
+
var node = (_b = (_a = nodeStack.pop()) === null || _a === void 0 ? void 0 : _a.refNode) !== null && _b !== void 0 ? _b : null;
|
|
27822
|
+
(0, cleanUpRestNodes_1.cleanUpRestNodes)(node, context.rewriteFromModel);
|
|
27823
|
+
}
|
|
27824
|
+
}
|
|
27825
|
+
}
|
|
27770
27826
|
|
|
27771
27827
|
|
|
27772
27828
|
/***/ }),
|
|
@@ -28101,20 +28157,24 @@ exports.handleList = void 0;
|
|
|
28101
28157
|
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
28102
28158
|
var applyFormat_1 = __webpack_require__(/*! ../utils/applyFormat */ "./packages/roosterjs-content-model-dom/lib/modelToDom/utils/applyFormat.ts");
|
|
28103
28159
|
var applyMetadata_1 = __webpack_require__(/*! ../utils/applyMetadata */ "./packages/roosterjs-content-model-dom/lib/modelToDom/utils/applyMetadata.ts");
|
|
28160
|
+
var cleanUpRestNodes_1 = __webpack_require__(/*! ../utils/cleanUpRestNodes */ "./packages/roosterjs-content-model-dom/lib/modelToDom/utils/cleanUpRestNodes.ts");
|
|
28161
|
+
var reuseCachedElement_1 = __webpack_require__(/*! ../../domUtils/reuseCachedElement */ "./packages/roosterjs-content-model-dom/lib/domUtils/reuseCachedElement.ts");
|
|
28104
28162
|
/**
|
|
28105
28163
|
* @internal
|
|
28106
28164
|
*/
|
|
28107
28165
|
var handleList = function (doc, parent, listItem, context, refNode) {
|
|
28108
|
-
var _a, _b, _c;
|
|
28166
|
+
var _a, _b, _c, _d;
|
|
28109
28167
|
var layer = 0;
|
|
28110
28168
|
var nodeStack = context.listFormat.nodeStack;
|
|
28111
28169
|
if (nodeStack.length == 0) {
|
|
28112
28170
|
nodeStack.push({
|
|
28113
28171
|
node: parent,
|
|
28172
|
+
refNode: refNode,
|
|
28114
28173
|
});
|
|
28115
28174
|
}
|
|
28116
28175
|
// Skip existing list levels that has same properties so we can reuse them
|
|
28117
28176
|
for (; layer < listItem.levels.length && layer + 1 < nodeStack.length; layer++) {
|
|
28177
|
+
var parentLevel = nodeStack[layer];
|
|
28118
28178
|
var stackLevel = nodeStack[layer + 1];
|
|
28119
28179
|
var itemLevel = listItem.levels[layer];
|
|
28120
28180
|
if (stackLevel.listType != itemLevel.listType ||
|
|
@@ -28125,30 +28185,66 @@ var handleList = function (doc, parent, listItem, context, refNode) {
|
|
|
28125
28185
|
itemLevel.format.listStyleType != ((_b = stackLevel.format) === null || _b === void 0 ? void 0 : _b.listStyleType))) {
|
|
28126
28186
|
break;
|
|
28127
28187
|
}
|
|
28188
|
+
if (context.allowCacheListItem &&
|
|
28189
|
+
parentLevel.refNode &&
|
|
28190
|
+
itemLevel.cachedElement == parentLevel.refNode) {
|
|
28191
|
+
// Move refNode to next node since we are reusing this cached element
|
|
28192
|
+
parentLevel.refNode = parentLevel.refNode.nextSibling;
|
|
28193
|
+
}
|
|
28128
28194
|
}
|
|
28129
28195
|
// Cut off remained list levels that we can't reuse
|
|
28196
|
+
if (context.allowCacheListItem) {
|
|
28197
|
+
// Clean up all rest nodes in the reused list levels
|
|
28198
|
+
for (var i = layer + 1; i < nodeStack.length; i++) {
|
|
28199
|
+
var stackLevel = nodeStack[i];
|
|
28200
|
+
(0, cleanUpRestNodes_1.cleanUpRestNodes)(stackLevel.refNode, context.rewriteFromModel);
|
|
28201
|
+
}
|
|
28202
|
+
}
|
|
28130
28203
|
nodeStack.splice(layer + 1);
|
|
28131
28204
|
// Create new list levels that are after reused ones
|
|
28132
28205
|
for (; layer < listItem.levels.length; layer++) {
|
|
28133
28206
|
var level = listItem.levels[layer];
|
|
28134
|
-
var newList = doc.createElement(level.listType || 'UL');
|
|
28135
28207
|
var lastParent = nodeStack[nodeStack.length - 1].node;
|
|
28136
|
-
|
|
28137
|
-
|
|
28138
|
-
|
|
28139
|
-
|
|
28140
|
-
|
|
28141
|
-
|
|
28142
|
-
|
|
28208
|
+
var newList = void 0;
|
|
28209
|
+
var isNewlyCreated = false;
|
|
28210
|
+
var levelRefNode = (_c = nodeStack[layer].refNode) !== null && _c !== void 0 ? _c : null;
|
|
28211
|
+
if (context.allowCacheListItem && level.cachedElement) {
|
|
28212
|
+
newList = level.cachedElement;
|
|
28213
|
+
nodeStack[layer].refNode = (0, reuseCachedElement_1.reuseCachedElement)(lastParent, level.cachedElement, levelRefNode, context.rewriteFromModel);
|
|
28214
|
+
nodeStack.push({
|
|
28215
|
+
node: newList,
|
|
28216
|
+
refNode: newList.firstChild,
|
|
28217
|
+
listType: level.listType,
|
|
28218
|
+
format: (0, tslib_1.__assign)({}, level.format),
|
|
28219
|
+
dataset: (0, tslib_1.__assign)({}, level.dataset),
|
|
28220
|
+
});
|
|
28221
|
+
}
|
|
28222
|
+
else {
|
|
28223
|
+
newList = doc.createElement(level.listType == 'OL' ? 'ol' : 'ul');
|
|
28224
|
+
isNewlyCreated = true;
|
|
28225
|
+
lastParent.insertBefore(newList, levelRefNode);
|
|
28226
|
+
nodeStack.push({
|
|
28227
|
+
node: newList,
|
|
28228
|
+
refNode: null,
|
|
28229
|
+
listType: level.listType,
|
|
28230
|
+
format: (0, tslib_1.__assign)({}, level.format),
|
|
28231
|
+
dataset: (0, tslib_1.__assign)({}, level.dataset),
|
|
28232
|
+
});
|
|
28233
|
+
if (context.allowCacheListItem) {
|
|
28234
|
+
level.cachedElement = newList;
|
|
28235
|
+
}
|
|
28236
|
+
}
|
|
28143
28237
|
(0, applyFormat_1.applyFormat)(newList, context.formatAppliers.listLevelThread, level.format, context);
|
|
28144
28238
|
// Need to apply metadata after applying list level format since the list numbers value relies on the result of list thread handling
|
|
28145
28239
|
(0, applyMetadata_1.applyMetadata)(level, context.metadataAppliers.listLevel, level.format, context);
|
|
28146
28240
|
// Need to apply listItemElement formats after applying metadata since the list numbers value relies on the result of metadata handling
|
|
28147
28241
|
(0, applyFormat_1.applyFormat)(newList, context.formatAppliers.listLevel, level.format, context);
|
|
28148
28242
|
(0, applyFormat_1.applyFormat)(newList, context.formatAppliers.dataset, level.dataset, context);
|
|
28149
|
-
(
|
|
28243
|
+
if (isNewlyCreated) {
|
|
28244
|
+
(_d = context.onNodeCreated) === null || _d === void 0 ? void 0 : _d.call(context, level, newList);
|
|
28245
|
+
}
|
|
28150
28246
|
}
|
|
28151
|
-
return refNode;
|
|
28247
|
+
return nodeStack[0].refNode;
|
|
28152
28248
|
};
|
|
28153
28249
|
exports.handleList = handleList;
|
|
28154
28250
|
|
|
@@ -28168,6 +28264,7 @@ exports.handleListItem = void 0;
|
|
|
28168
28264
|
var applyFormat_1 = __webpack_require__(/*! ../utils/applyFormat */ "./packages/roosterjs-content-model-dom/lib/modelToDom/utils/applyFormat.ts");
|
|
28169
28265
|
var applyMetadata_1 = __webpack_require__(/*! ../utils/applyMetadata */ "./packages/roosterjs-content-model-dom/lib/modelToDom/utils/applyMetadata.ts");
|
|
28170
28266
|
var isGenericRoleElement_1 = __webpack_require__(/*! ../../domUtils/isGenericRoleElement */ "./packages/roosterjs-content-model-dom/lib/domUtils/isGenericRoleElement.ts");
|
|
28267
|
+
var reuseCachedElement_1 = __webpack_require__(/*! ../../domUtils/reuseCachedElement */ "./packages/roosterjs-content-model-dom/lib/domUtils/reuseCachedElement.ts");
|
|
28171
28268
|
var setParagraphNotImplicit_1 = __webpack_require__(/*! ../../modelApi/block/setParagraphNotImplicit */ "./packages/roosterjs-content-model-dom/lib/modelApi/block/setParagraphNotImplicit.ts");
|
|
28172
28269
|
var stackFormat_1 = __webpack_require__(/*! ../utils/stackFormat */ "./packages/roosterjs-content-model-dom/lib/modelToDom/utils/stackFormat.ts");
|
|
28173
28270
|
var unwrap_1 = __webpack_require__(/*! ../../domUtils/unwrap */ "./packages/roosterjs-content-model-dom/lib/domUtils/unwrap.ts");
|
|
@@ -28180,13 +28277,35 @@ var handleListItem = function (doc, parent, listItem, context, refNode) {
|
|
|
28180
28277
|
var _a, _b;
|
|
28181
28278
|
refNode = context.modelHandlers.list(doc, parent, listItem, context, refNode);
|
|
28182
28279
|
var nodeStack = context.listFormat.nodeStack;
|
|
28183
|
-
var
|
|
28184
|
-
var
|
|
28280
|
+
var leafLevel = (_a = nodeStack === null || nodeStack === void 0 ? void 0 : nodeStack[nodeStack.length - 1]) !== null && _a !== void 0 ? _a : {};
|
|
28281
|
+
var itemRefNode = leafLevel.refNode || null;
|
|
28282
|
+
var listParent = leafLevel.node || parent;
|
|
28185
28283
|
var level = listItem.levels[listItem.levels.length - 1];
|
|
28186
|
-
|
|
28187
|
-
|
|
28188
|
-
|
|
28189
|
-
|
|
28284
|
+
var li;
|
|
28285
|
+
var isNewlyCreated = false;
|
|
28286
|
+
if (context.allowCacheListItem && listItem.cachedElement) {
|
|
28287
|
+
li = listItem.cachedElement;
|
|
28288
|
+
// Check if the cached LI is used as refNode under another list level,
|
|
28289
|
+
// since we know we are going to move it under the current listParent,
|
|
28290
|
+
// we need to update the refNode of the previous list level to avoid removing it later
|
|
28291
|
+
for (var i = 0; i < nodeStack.length - 1; i++) {
|
|
28292
|
+
if (nodeStack[i].refNode === li) {
|
|
28293
|
+
nodeStack[i].refNode = li.nextSibling;
|
|
28294
|
+
}
|
|
28295
|
+
}
|
|
28296
|
+
leafLevel.refNode = (0, reuseCachedElement_1.reuseCachedElement)(listParent, li, itemRefNode, context.rewriteFromModel);
|
|
28297
|
+
}
|
|
28298
|
+
else {
|
|
28299
|
+
li = doc.createElement('li');
|
|
28300
|
+
isNewlyCreated = true;
|
|
28301
|
+
// It is possible listParent is the same with parent param.
|
|
28302
|
+
// This happens when outdent a list item to cause it has no list level
|
|
28303
|
+
listParent.insertBefore(li, (itemRefNode === null || itemRefNode === void 0 ? void 0 : itemRefNode.parentNode) == listParent ? itemRefNode : null);
|
|
28304
|
+
context.rewriteFromModel.addedBlockElements.push(li);
|
|
28305
|
+
if (context.allowCacheListItem) {
|
|
28306
|
+
listItem.cachedElement = li;
|
|
28307
|
+
}
|
|
28308
|
+
}
|
|
28190
28309
|
if (level) {
|
|
28191
28310
|
(0, applyFormat_1.applyFormat)(li, context.formatAppliers.segment, listItem.formatHolder.format, context);
|
|
28192
28311
|
(0, applyFormat_1.applyFormat)(li, context.formatAppliers.listItemThread, level.format, context);
|
|
@@ -28214,7 +28333,9 @@ var handleListItem = function (doc, parent, listItem, context, refNode) {
|
|
|
28214
28333
|
element.setAttribute(HtmlRoleAttribute, PresentationRoleValue);
|
|
28215
28334
|
}
|
|
28216
28335
|
}
|
|
28217
|
-
(
|
|
28336
|
+
if (isNewlyCreated) {
|
|
28337
|
+
(_b = context.onNodeCreated) === null || _b === void 0 ? void 0 : _b.call(context, listItem, li);
|
|
28338
|
+
}
|
|
28218
28339
|
return refNode;
|
|
28219
28340
|
};
|
|
28220
28341
|
exports.handleListItem = handleListItem;
|
|
@@ -28794,6 +28915,40 @@ function applyMetadata(model, applier, format, context) {
|
|
|
28794
28915
|
exports.applyMetadata = applyMetadata;
|
|
28795
28916
|
|
|
28796
28917
|
|
|
28918
|
+
/***/ }),
|
|
28919
|
+
|
|
28920
|
+
/***/ "./packages/roosterjs-content-model-dom/lib/modelToDom/utils/cleanUpRestNodes.ts":
|
|
28921
|
+
/*!***************************************************************************************!*\
|
|
28922
|
+
!*** ./packages/roosterjs-content-model-dom/lib/modelToDom/utils/cleanUpRestNodes.ts ***!
|
|
28923
|
+
\***************************************************************************************/
|
|
28924
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
28925
|
+
|
|
28926
|
+
"use strict";
|
|
28927
|
+
|
|
28928
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
28929
|
+
exports.cleanUpRestNodes = void 0;
|
|
28930
|
+
var isNodeOfType_1 = __webpack_require__(/*! ../../domUtils/isNodeOfType */ "./packages/roosterjs-content-model-dom/lib/domUtils/isNodeOfType.ts");
|
|
28931
|
+
/**
|
|
28932
|
+
* @internal
|
|
28933
|
+
* Cleans up all rest nodes starting from refNode
|
|
28934
|
+
* @param refNode The reference node to start cleaning up
|
|
28935
|
+
* @param rewriteContext The context for rewrite process
|
|
28936
|
+
*/
|
|
28937
|
+
function cleanUpRestNodes(refNode, rewriteContext) {
|
|
28938
|
+
while (refNode) {
|
|
28939
|
+
var next = refNode.nextSibling;
|
|
28940
|
+
if (refNode.parentNode) {
|
|
28941
|
+
if ((0, isNodeOfType_1.isNodeOfType)(refNode, 'ELEMENT_NODE')) {
|
|
28942
|
+
rewriteContext.removedBlockElements.push(refNode);
|
|
28943
|
+
}
|
|
28944
|
+
refNode.parentNode.removeChild(refNode);
|
|
28945
|
+
}
|
|
28946
|
+
refNode = next;
|
|
28947
|
+
}
|
|
28948
|
+
}
|
|
28949
|
+
exports.cleanUpRestNodes = cleanUpRestNodes;
|
|
28950
|
+
|
|
28951
|
+
|
|
28797
28952
|
/***/ }),
|
|
28798
28953
|
|
|
28799
28954
|
/***/ "./packages/roosterjs-content-model-dom/lib/modelToDom/utils/handleSegmentCommon.ts":
|
|
@@ -28846,12 +29001,15 @@ function stackFormat(context, tagNameOrFormat, callback) {
|
|
|
28846
29001
|
: tagNameOrFormat;
|
|
28847
29002
|
if (newFormat) {
|
|
28848
29003
|
var implicitFormat = context.implicitFormat;
|
|
29004
|
+
var nodeStack = context.listFormat.nodeStack;
|
|
28849
29005
|
try {
|
|
28850
29006
|
context.implicitFormat = (0, tslib_1.__assign)((0, tslib_1.__assign)({}, implicitFormat), newFormat);
|
|
29007
|
+
context.listFormat.nodeStack = [];
|
|
28851
29008
|
callback();
|
|
28852
29009
|
}
|
|
28853
29010
|
finally {
|
|
28854
29011
|
context.implicitFormat = implicitFormat;
|
|
29012
|
+
context.listFormat.nodeStack = nodeStack;
|
|
28855
29013
|
}
|
|
28856
29014
|
}
|
|
28857
29015
|
else {
|
|
@@ -30509,13 +30667,13 @@ var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.m
|
|
|
30509
30667
|
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
30510
30668
|
var checkAndInsertHorizontalLine_1 = __webpack_require__(/*! ./horizontalLine/checkAndInsertHorizontalLine */ "./packages/roosterjs-content-model-plugins/lib/autoFormat/horizontalLine/checkAndInsertHorizontalLine.ts");
|
|
30511
30669
|
var createLink_1 = __webpack_require__(/*! ./link/createLink */ "./packages/roosterjs-content-model-plugins/lib/autoFormat/link/createLink.ts");
|
|
30512
|
-
var roosterjs_content_model_api_1 = __webpack_require__(/*! roosterjs-content-model-api */ "./packages/roosterjs-content-model-api/lib/index.ts");
|
|
30513
30670
|
var getListTypeStyle_1 = __webpack_require__(/*! ./list/getListTypeStyle */ "./packages/roosterjs-content-model-plugins/lib/autoFormat/list/getListTypeStyle.ts");
|
|
30514
30671
|
var keyboardListTrigger_1 = __webpack_require__(/*! ./list/keyboardListTrigger */ "./packages/roosterjs-content-model-plugins/lib/autoFormat/list/keyboardListTrigger.ts");
|
|
30515
30672
|
var transformFraction_1 = __webpack_require__(/*! ./numbers/transformFraction */ "./packages/roosterjs-content-model-plugins/lib/autoFormat/numbers/transformFraction.ts");
|
|
30516
30673
|
var transformHyphen_1 = __webpack_require__(/*! ./hyphen/transformHyphen */ "./packages/roosterjs-content-model-plugins/lib/autoFormat/hyphen/transformHyphen.ts");
|
|
30517
30674
|
var transformOrdinals_1 = __webpack_require__(/*! ./numbers/transformOrdinals */ "./packages/roosterjs-content-model-plugins/lib/autoFormat/numbers/transformOrdinals.ts");
|
|
30518
30675
|
var unlink_1 = __webpack_require__(/*! ./link/unlink */ "./packages/roosterjs-content-model-plugins/lib/autoFormat/link/unlink.ts");
|
|
30676
|
+
var roosterjs_content_model_api_1 = __webpack_require__(/*! roosterjs-content-model-api */ "./packages/roosterjs-content-model-api/lib/index.ts");
|
|
30519
30677
|
/**
|
|
30520
30678
|
* @internal
|
|
30521
30679
|
*/
|
|
@@ -30645,7 +30803,6 @@ var AutoFormatPlugin = /** @class */ (function () {
|
|
|
30645
30803
|
this.editor = null;
|
|
30646
30804
|
};
|
|
30647
30805
|
AutoFormatPlugin.prototype.shouldHandleInputEventExclusively = function (editor, event) {
|
|
30648
|
-
var _this = this;
|
|
30649
30806
|
var rawEvent = event.rawEvent;
|
|
30650
30807
|
var selection = editor.getDOMSelection();
|
|
30651
30808
|
var shouldHandle = false;
|
|
@@ -30654,15 +30811,15 @@ var AutoFormatPlugin = /** @class */ (function () {
|
|
|
30654
30811
|
selection.type === 'range' &&
|
|
30655
30812
|
selection.range.collapsed &&
|
|
30656
30813
|
rawEvent.data == ' ') {
|
|
30657
|
-
|
|
30658
|
-
|
|
30659
|
-
var list = (0, getListTypeStyle_1.getListTypeStyle)(model,
|
|
30660
|
-
var
|
|
30661
|
-
autoLink:
|
|
30662
|
-
autoTel:
|
|
30663
|
-
autoMailto:
|
|
30814
|
+
var _a = this.options, autoLink_1 = _a.autoLink, autoTel_1 = _a.autoTel, autoMailto_1 = _a.autoMailto, autoBullet_1 = _a.autoBullet, autoNumbering_1 = _a.autoNumbering;
|
|
30815
|
+
(0, roosterjs_content_model_api_1.formatTextSegmentBeforeSelectionMarker)(editor, function (model, previousSegment, _paragraph, _markerFormat) {
|
|
30816
|
+
var list = (0, getListTypeStyle_1.getListTypeStyle)(model, autoBullet_1, autoNumbering_1);
|
|
30817
|
+
var promotedLink = (0, roosterjs_content_model_api_1.getPromoteLink)(previousSegment, {
|
|
30818
|
+
autoLink: autoLink_1,
|
|
30819
|
+
autoTel: autoTel_1,
|
|
30820
|
+
autoMailto: autoMailto_1,
|
|
30664
30821
|
});
|
|
30665
|
-
shouldHandle = !!
|
|
30822
|
+
shouldHandle = !!promotedLink || !!list;
|
|
30666
30823
|
return false;
|
|
30667
30824
|
});
|
|
30668
30825
|
}
|
|
@@ -31747,8 +31904,22 @@ var DELETE_KEY = 46;
|
|
|
31747
31904
|
* Other cases: https://stackoverflow.com/questions/25043934/is-it-ok-to-ignore-keydown-events-with-keycode-229
|
|
31748
31905
|
*/
|
|
31749
31906
|
var DEAD_KEY = 229;
|
|
31907
|
+
var DefaultHandleTabOptions = {
|
|
31908
|
+
indentMultipleBlocks: true,
|
|
31909
|
+
indentTable: true,
|
|
31910
|
+
appendTableRow: true,
|
|
31911
|
+
indentList: true,
|
|
31912
|
+
indentParagraph: true,
|
|
31913
|
+
};
|
|
31914
|
+
var DisabledHandleTabOptions = {
|
|
31915
|
+
indentMultipleBlocks: false,
|
|
31916
|
+
indentTable: false,
|
|
31917
|
+
appendTableRow: false,
|
|
31918
|
+
indentList: false,
|
|
31919
|
+
indentParagraph: false,
|
|
31920
|
+
};
|
|
31750
31921
|
var DefaultOptions = {
|
|
31751
|
-
handleTabKey:
|
|
31922
|
+
handleTabKey: DefaultHandleTabOptions,
|
|
31752
31923
|
handleExpandedSelectionOnDelete: true,
|
|
31753
31924
|
};
|
|
31754
31925
|
/**
|
|
@@ -31761,17 +31932,21 @@ var DefaultOptions = {
|
|
|
31761
31932
|
var EditPlugin = /** @class */ (function () {
|
|
31762
31933
|
/**
|
|
31763
31934
|
* @param options An optional parameter that takes in an object of type EditOptions, which includes the following properties:
|
|
31764
|
-
* handleTabKey: A boolean
|
|
31935
|
+
* handleTabKey: A boolean or HandleTabOptions object that controls Tab key handling. When a boolean, true enables all features and false disables all. When an object, individual features can be controlled. Defaults to all enabled.
|
|
31765
31936
|
*/
|
|
31766
31937
|
function EditPlugin(options) {
|
|
31767
31938
|
if (options === void 0) { options = DefaultOptions; }
|
|
31768
|
-
this.options = options;
|
|
31769
31939
|
this.editor = null;
|
|
31770
31940
|
this.disposer = null;
|
|
31771
31941
|
this.shouldHandleNextInputEvent = false;
|
|
31772
31942
|
this.selectionAfterDelete = null;
|
|
31773
31943
|
this.handleNormalEnter = function () { return false; };
|
|
31774
|
-
|
|
31944
|
+
var tabOptions = options.handleTabKey === false
|
|
31945
|
+
? DisabledHandleTabOptions
|
|
31946
|
+
: options.handleTabKey === true || !options.handleTabKey
|
|
31947
|
+
? DefaultHandleTabOptions
|
|
31948
|
+
: (0, tslib_1.__assign)((0, tslib_1.__assign)({}, DefaultHandleTabOptions), options.handleTabKey);
|
|
31949
|
+
this.options = (0, tslib_1.__assign)((0, tslib_1.__assign)((0, tslib_1.__assign)({}, DefaultOptions), options), { handleTabKey: tabOptions });
|
|
31775
31950
|
}
|
|
31776
31951
|
EditPlugin.prototype.createNormalEnterChecker = function (result) {
|
|
31777
31952
|
return result ? function () { return true; } : function () { return false; };
|
|
@@ -31852,7 +32027,7 @@ var EditPlugin = /** @class */ (function () {
|
|
|
31852
32027
|
*/
|
|
31853
32028
|
EditPlugin.prototype.willHandleEventExclusively = function (event) {
|
|
31854
32029
|
if (this.editor &&
|
|
31855
|
-
this.options.handleTabKey &&
|
|
32030
|
+
this.options.handleTabKey.appendTableRow &&
|
|
31856
32031
|
event.eventType == 'keyDown' &&
|
|
31857
32032
|
event.rawEvent.key == 'Tab' &&
|
|
31858
32033
|
!event.rawEvent.shiftKey) {
|
|
@@ -31895,8 +32070,8 @@ var EditPlugin = /** @class */ (function () {
|
|
|
31895
32070
|
}
|
|
31896
32071
|
break;
|
|
31897
32072
|
case 'Tab':
|
|
31898
|
-
if (
|
|
31899
|
-
(0, keyboardTab_1.keyboardTab)(editor, rawEvent);
|
|
32073
|
+
if (!hasCtrlOrMetaKey) {
|
|
32074
|
+
(0, keyboardTab_1.keyboardTab)(editor, rawEvent, this.options.handleTabKey);
|
|
31900
32075
|
}
|
|
31901
32076
|
break;
|
|
31902
32077
|
case 'Unidentified':
|
|
@@ -32987,29 +33162,31 @@ var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-mo
|
|
|
32987
33162
|
/**
|
|
32988
33163
|
* @internal
|
|
32989
33164
|
*/
|
|
32990
|
-
function keyboardTab(editor, rawEvent) {
|
|
33165
|
+
function keyboardTab(editor, rawEvent, options) {
|
|
32991
33166
|
var selection = editor.getDOMSelection();
|
|
32992
33167
|
switch (selection === null || selection === void 0 ? void 0 : selection.type) {
|
|
32993
33168
|
case 'range':
|
|
32994
33169
|
editor.formatContentModel(function (model, context) {
|
|
32995
|
-
return handleTab(model, rawEvent, context);
|
|
33170
|
+
return handleTab(model, rawEvent, context, options);
|
|
32996
33171
|
}, {
|
|
32997
33172
|
apiName: 'handleTabKey',
|
|
32998
33173
|
rawEvent: rawEvent,
|
|
32999
33174
|
changeSource: roosterjs_content_model_dom_1.ChangeSource.Keyboard,
|
|
33000
33175
|
getChangeData: function () { return rawEvent.which; },
|
|
33001
33176
|
});
|
|
33002
|
-
|
|
33177
|
+
break;
|
|
33003
33178
|
case 'table':
|
|
33004
|
-
|
|
33005
|
-
|
|
33006
|
-
|
|
33007
|
-
|
|
33008
|
-
|
|
33009
|
-
|
|
33010
|
-
|
|
33011
|
-
|
|
33012
|
-
|
|
33179
|
+
if (options.indentTable) {
|
|
33180
|
+
editor.formatContentModel(function (model) {
|
|
33181
|
+
return (0, handleTabOnTable_1.handleTabOnTable)(model, rawEvent);
|
|
33182
|
+
}, {
|
|
33183
|
+
apiName: 'handleTabKey',
|
|
33184
|
+
rawEvent: rawEvent,
|
|
33185
|
+
changeSource: roosterjs_content_model_dom_1.ChangeSource.Keyboard,
|
|
33186
|
+
getChangeData: function () { return rawEvent.which; },
|
|
33187
|
+
});
|
|
33188
|
+
}
|
|
33189
|
+
break;
|
|
33013
33190
|
}
|
|
33014
33191
|
}
|
|
33015
33192
|
exports.keyboardTab = keyboardTab;
|
|
@@ -33020,22 +33197,30 @@ exports.keyboardTab = keyboardTab;
|
|
|
33020
33197
|
* - If it is a paragraph, call handleTabOnParagraph to handle the tab key.
|
|
33021
33198
|
* - If it is a list item, call handleTabOnList to handle the tab key.
|
|
33022
33199
|
*/
|
|
33023
|
-
function handleTab(model, rawEvent, context) {
|
|
33200
|
+
function handleTab(model, rawEvent, context, options) {
|
|
33024
33201
|
var blocks = (0, roosterjs_content_model_dom_1.getOperationalBlocks)(model, ['ListItem', 'TableCell'], []);
|
|
33025
33202
|
var block = blocks.length > 0 ? blocks[0].block : undefined;
|
|
33026
33203
|
if (blocks.length > 1) {
|
|
33027
|
-
(
|
|
33028
|
-
|
|
33029
|
-
|
|
33204
|
+
if (options.indentMultipleBlocks) {
|
|
33205
|
+
(0, roosterjs_content_model_api_1.setModelIndentation)(model, rawEvent.shiftKey ? 'outdent' : 'indent');
|
|
33206
|
+
rawEvent.preventDefault();
|
|
33207
|
+
return true;
|
|
33208
|
+
}
|
|
33030
33209
|
}
|
|
33031
33210
|
else if ((0, roosterjs_content_model_dom_1.isBlockGroupOfType)(block, 'TableCell')) {
|
|
33032
|
-
|
|
33211
|
+
if (options.appendTableRow) {
|
|
33212
|
+
return (0, handleTabOnTableCell_1.handleTabOnTableCell)(model, block, rawEvent);
|
|
33213
|
+
}
|
|
33033
33214
|
}
|
|
33034
33215
|
else if ((block === null || block === void 0 ? void 0 : block.blockType) === 'Paragraph') {
|
|
33035
|
-
|
|
33216
|
+
if (options.indentParagraph) {
|
|
33217
|
+
return (0, handleTabOnParagraph_1.handleTabOnParagraph)(model, block, rawEvent, context);
|
|
33218
|
+
}
|
|
33036
33219
|
}
|
|
33037
33220
|
else if ((0, roosterjs_content_model_dom_1.isBlockGroupOfType)(block, 'ListItem')) {
|
|
33038
|
-
|
|
33221
|
+
if (options.indentList) {
|
|
33222
|
+
return (0, handleTabOnList_1.handleTabOnList)(model, block, rawEvent, context);
|
|
33223
|
+
}
|
|
33039
33224
|
}
|
|
33040
33225
|
return false;
|
|
33041
33226
|
}
|
|
@@ -34723,11 +34908,10 @@ var ImageEditPlugin = /** @class */ (function () {
|
|
|
34723
34908
|
}
|
|
34724
34909
|
}
|
|
34725
34910
|
};
|
|
34726
|
-
ImageEditPlugin.prototype.setContentHandler = function (
|
|
34727
|
-
|
|
34728
|
-
if ((selection === null || selection === void 0 ? void 0 : selection.type) == 'image') {
|
|
34911
|
+
ImageEditPlugin.prototype.setContentHandler = function () {
|
|
34912
|
+
if (this.selectedImage) {
|
|
34729
34913
|
this.cleanInfo();
|
|
34730
|
-
(0, roosterjs_content_model_dom_1.setImageState)(
|
|
34914
|
+
(0, roosterjs_content_model_dom_1.setImageState)(this.selectedImage, '');
|
|
34731
34915
|
this.isEditing = false;
|
|
34732
34916
|
this.isCropMode = false;
|
|
34733
34917
|
}
|
|
@@ -34742,7 +34926,7 @@ var ImageEditPlugin = /** @class */ (function () {
|
|
|
34742
34926
|
ImageEditPlugin.prototype.contentChangedHandler = function (editor, event) {
|
|
34743
34927
|
switch (event.source) {
|
|
34744
34928
|
case roosterjs_content_model_dom_1.ChangeSource.SetContent:
|
|
34745
|
-
this.setContentHandler(
|
|
34929
|
+
this.setContentHandler();
|
|
34746
34930
|
break;
|
|
34747
34931
|
case roosterjs_content_model_dom_1.ChangeSource.Format:
|
|
34748
34932
|
this.formatEventHandler(event);
|
|
@@ -36076,14 +36260,19 @@ function generateDataURL(image, editInfo) {
|
|
|
36076
36260
|
canvas.width = targetWidth * devicePixelRatio;
|
|
36077
36261
|
canvas.height = targetHeight * devicePixelRatio;
|
|
36078
36262
|
var context = canvas.getContext('2d');
|
|
36079
|
-
|
|
36080
|
-
context
|
|
36081
|
-
|
|
36082
|
-
|
|
36083
|
-
|
|
36084
|
-
|
|
36263
|
+
try {
|
|
36264
|
+
if (context) {
|
|
36265
|
+
context.scale(devicePixelRatio, devicePixelRatio);
|
|
36266
|
+
context.translate(targetWidth / 2, targetHeight / 2);
|
|
36267
|
+
context.rotate(angle);
|
|
36268
|
+
context.scale(editInfo.flippedHorizontal ? -1 : 1, editInfo.flippedVertical ? -1 : 1);
|
|
36269
|
+
context.drawImage(image, nWidth * left, nHeight * top, imageWidth, imageHeight, -width / 2, -height / 2, width, height);
|
|
36270
|
+
}
|
|
36271
|
+
return canvas.toDataURL('image/png', 1.0);
|
|
36272
|
+
}
|
|
36273
|
+
catch (_a) {
|
|
36274
|
+
return image.src;
|
|
36085
36275
|
}
|
|
36086
|
-
return canvas.toDataURL('image/png', 1.0);
|
|
36087
36276
|
}
|
|
36088
36277
|
exports.generateDataURL = generateDataURL;
|
|
36089
36278
|
|
|
@@ -37155,8 +37344,8 @@ var blockElementParser_1 = __webpack_require__(/*! ./parsers/blockElementParser
|
|
|
37155
37344
|
var chainSanitizerCallback_1 = __webpack_require__(/*! ./utils/chainSanitizerCallback */ "./packages/roosterjs-content-model-plugins/lib/paste/utils/chainSanitizerCallback.ts");
|
|
37156
37345
|
var DefaultSanitizers_1 = __webpack_require__(/*! ./DefaultSanitizers */ "./packages/roosterjs-content-model-plugins/lib/paste/DefaultSanitizers.ts");
|
|
37157
37346
|
var deprecatedColorParser_1 = __webpack_require__(/*! ./parsers/deprecatedColorParser */ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/deprecatedColorParser.ts");
|
|
37347
|
+
var getDocumentSource_1 = __webpack_require__(/*! ./pasteSourceValidations/getDocumentSource */ "./packages/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/getDocumentSource.ts");
|
|
37158
37348
|
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
37159
|
-
var getPasteSource_1 = __webpack_require__(/*! ./pasteSourceValidations/getPasteSource */ "./packages/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/getPasteSource.ts");
|
|
37160
37349
|
var imageSizeParser_1 = __webpack_require__(/*! ./parsers/imageSizeParser */ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/imageSizeParser.ts");
|
|
37161
37350
|
var linkParser_1 = __webpack_require__(/*! ./parsers/linkParser */ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/linkParser.ts");
|
|
37162
37351
|
var pasteButtonProcessor_1 = __webpack_require__(/*! ./processors/pasteButtonProcessor */ "./packages/roosterjs-content-model-plugins/lib/paste/processors/pasteButtonProcessor.ts");
|
|
@@ -37228,11 +37417,19 @@ var PastePlugin = /** @class */ (function () {
|
|
|
37228
37417
|
if (!event.domToModelOption) {
|
|
37229
37418
|
return;
|
|
37230
37419
|
}
|
|
37231
|
-
var
|
|
37420
|
+
var htmlAttributes = event.htmlAttributes, clipboardData = event.clipboardData, fragment = event.fragment;
|
|
37421
|
+
var pasteSource = (0, getDocumentSource_1.getDocumentSource)({
|
|
37422
|
+
htmlAttributes: htmlAttributes,
|
|
37423
|
+
fragment: fragment,
|
|
37424
|
+
clipboardItemTypes: clipboardData.types,
|
|
37425
|
+
htmlFirstLevelChildTags: clipboardData.htmlFirstLevelChildTags,
|
|
37426
|
+
environment: this.editor.getEnvironment(),
|
|
37427
|
+
rawHtml: clipboardData.rawHtml,
|
|
37428
|
+
});
|
|
37232
37429
|
var pasteType = event.pasteType;
|
|
37233
37430
|
switch (pasteSource) {
|
|
37234
37431
|
case 'wordDesktop':
|
|
37235
|
-
(0, processPastedContentFromWordDesktop_1.processPastedContentFromWordDesktop)(event);
|
|
37432
|
+
(0, processPastedContentFromWordDesktop_1.processPastedContentFromWordDesktop)(event.domToModelOption, event.htmlBefore || event.clipboardData.rawHtml || '');
|
|
37236
37433
|
break;
|
|
37237
37434
|
case 'wacComponents':
|
|
37238
37435
|
(0, processPastedContentWacComponents_1.processPastedContentWacComponents)(event);
|
|
@@ -37786,9 +37983,12 @@ function extractHtmlIndexes(html, startIndex) {
|
|
|
37786
37983
|
* 5. Save data in record and only use the required information.
|
|
37787
37984
|
*
|
|
37788
37985
|
*/
|
|
37789
|
-
function getStyleMetadata(
|
|
37986
|
+
function getStyleMetadata(htmlString) {
|
|
37790
37987
|
var metadataMap = new Map();
|
|
37791
|
-
|
|
37988
|
+
if (!htmlString) {
|
|
37989
|
+
return metadataMap;
|
|
37990
|
+
}
|
|
37991
|
+
var headStyles = extractStyleTagsFromHtml(htmlString);
|
|
37792
37992
|
headStyles.forEach(function (text) {
|
|
37793
37993
|
var index = 0;
|
|
37794
37994
|
var _loop_1 = function () {
|
|
@@ -37860,20 +38060,23 @@ var processWordComments_1 = __webpack_require__(/*! ./processWordComments */ "./
|
|
|
37860
38060
|
var processWordLists_1 = __webpack_require__(/*! ./processWordLists */ "./packages/roosterjs-content-model-plugins/lib/paste/WordDesktop/processWordLists.ts");
|
|
37861
38061
|
var removeNegativeTextIndentParser_1 = __webpack_require__(/*! ../parsers/removeNegativeTextIndentParser */ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/removeNegativeTextIndentParser.ts");
|
|
37862
38062
|
var setProcessor_1 = __webpack_require__(/*! ../utils/setProcessor */ "./packages/roosterjs-content-model-plugins/lib/paste/utils/setProcessor.ts");
|
|
38063
|
+
var wordContainerParser_1 = __webpack_require__(/*! ../parsers/wordContainerParser */ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/wordContainerParser.ts");
|
|
37863
38064
|
var wordTableParser_1 = __webpack_require__(/*! ../parsers/wordTableParser */ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/wordTableParser.ts");
|
|
37864
38065
|
/**
|
|
37865
38066
|
* @internal
|
|
37866
|
-
* Handles
|
|
37867
|
-
* @param
|
|
38067
|
+
* Handles pasted content when the source is Word Desktop.
|
|
38068
|
+
* @param domToModelOption Options for DOM to Content Model conversion
|
|
38069
|
+
* @param htmlString The HTML string to process
|
|
37868
38070
|
*/
|
|
37869
|
-
function processPastedContentFromWordDesktop(
|
|
37870
|
-
var metadataMap = (0, getStyleMetadata_1.getStyleMetadata)(
|
|
37871
|
-
(0, setProcessor_1.setProcessor)(
|
|
37872
|
-
(0, addParser_1.addParser)(
|
|
37873
|
-
(0, addParser_1.addParser)(
|
|
37874
|
-
(0, addParser_1.addParser)(
|
|
37875
|
-
(0, addParser_1.addParser)(
|
|
37876
|
-
(0, addParser_1.addParser)(
|
|
38071
|
+
function processPastedContentFromWordDesktop(domToModelOption, htmlString) {
|
|
38072
|
+
var metadataMap = (0, getStyleMetadata_1.getStyleMetadata)(htmlString);
|
|
38073
|
+
(0, setProcessor_1.setProcessor)(domToModelOption, 'element', wordDesktopElementProcessor(metadataMap));
|
|
38074
|
+
(0, addParser_1.addParser)(domToModelOption, 'block', adjustPercentileLineHeightParser_1.adjustPercentileLineHeight);
|
|
38075
|
+
(0, addParser_1.addParser)(domToModelOption, 'block', removeNegativeTextIndentParser_1.removeNegativeTextIndentParser);
|
|
38076
|
+
(0, addParser_1.addParser)(domToModelOption, 'listItemElement', removeNegativeTextIndentParser_1.removeNegativeTextIndentParser);
|
|
38077
|
+
(0, addParser_1.addParser)(domToModelOption, 'listLevel', listLevelParser_1.listLevelParser);
|
|
38078
|
+
(0, addParser_1.addParser)(domToModelOption, 'container', wordContainerParser_1.wordContainerParser);
|
|
38079
|
+
(0, addParser_1.addParser)(domToModelOption, 'table', wordTableParser_1.wordTableParser);
|
|
37877
38080
|
}
|
|
37878
38081
|
exports.processPastedContentFromWordDesktop = processPastedContentFromWordDesktop;
|
|
37879
38082
|
var wordDesktopElementProcessor = function (metadataKey) {
|
|
@@ -38466,7 +38669,7 @@ exports.removeNegativeTextIndentParser = void 0;
|
|
|
38466
38669
|
/**
|
|
38467
38670
|
* @internal
|
|
38468
38671
|
*/
|
|
38469
|
-
var removeNegativeTextIndentParser = function (format) {
|
|
38672
|
+
var removeNegativeTextIndentParser = function (format, element) {
|
|
38470
38673
|
var _a;
|
|
38471
38674
|
if ((_a = format.textIndent) === null || _a === void 0 ? void 0 : _a.startsWith('-')) {
|
|
38472
38675
|
delete format.textIndent;
|
|
@@ -38513,6 +38716,33 @@ var tableBorderParser = function (format, element) {
|
|
|
38513
38716
|
exports.tableBorderParser = tableBorderParser;
|
|
38514
38717
|
|
|
38515
38718
|
|
|
38719
|
+
/***/ }),
|
|
38720
|
+
|
|
38721
|
+
/***/ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/wordContainerParser.ts":
|
|
38722
|
+
/*!*******************************************************************************************!*\
|
|
38723
|
+
!*** ./packages/roosterjs-content-model-plugins/lib/paste/parsers/wordContainerParser.ts ***!
|
|
38724
|
+
\*******************************************************************************************/
|
|
38725
|
+
/***/ ((__unused_webpack_module, exports) => {
|
|
38726
|
+
|
|
38727
|
+
"use strict";
|
|
38728
|
+
|
|
38729
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
38730
|
+
exports.wordContainerParser = void 0;
|
|
38731
|
+
/**
|
|
38732
|
+
* @internal
|
|
38733
|
+
* Parser for processing container formatting specific to Word Desktop
|
|
38734
|
+
* Removes negative margin-left values which are commonly used in Word lists
|
|
38735
|
+
* @param format The container format to modify
|
|
38736
|
+
*/
|
|
38737
|
+
var wordContainerParser = function (format) {
|
|
38738
|
+
var _a;
|
|
38739
|
+
if ((_a = format.marginLeft) === null || _a === void 0 ? void 0 : _a.startsWith('-')) {
|
|
38740
|
+
delete format.marginLeft;
|
|
38741
|
+
}
|
|
38742
|
+
};
|
|
38743
|
+
exports.wordContainerParser = wordContainerParser;
|
|
38744
|
+
|
|
38745
|
+
|
|
38516
38746
|
/***/ }),
|
|
38517
38747
|
|
|
38518
38748
|
/***/ "./packages/roosterjs-content-model-plugins/lib/paste/parsers/wordTableParser.ts":
|
|
@@ -38602,16 +38832,16 @@ exports.documentContainWacElements = documentContainWacElements;
|
|
|
38602
38832
|
|
|
38603
38833
|
/***/ }),
|
|
38604
38834
|
|
|
38605
|
-
/***/ "./packages/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/
|
|
38606
|
-
|
|
38607
|
-
!*** ./packages/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/
|
|
38608
|
-
|
|
38835
|
+
/***/ "./packages/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/getDocumentSource.ts":
|
|
38836
|
+
/*!********************************************************************************************************!*\
|
|
38837
|
+
!*** ./packages/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/getDocumentSource.ts ***!
|
|
38838
|
+
\********************************************************************************************************/
|
|
38609
38839
|
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
38610
38840
|
|
|
38611
38841
|
"use strict";
|
|
38612
38842
|
|
|
38613
38843
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
38614
|
-
exports.
|
|
38844
|
+
exports.getDocumentSource = void 0;
|
|
38615
38845
|
var documentContainWacElements_1 = __webpack_require__(/*! ./documentContainWacElements */ "./packages/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/documentContainWacElements.ts");
|
|
38616
38846
|
var isExcelDesktopDocument_1 = __webpack_require__(/*! ./isExcelDesktopDocument */ "./packages/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/isExcelDesktopDocument.ts");
|
|
38617
38847
|
var isExcelNonNativeEvent_1 = __webpack_require__(/*! ./isExcelNonNativeEvent */ "./packages/roosterjs-content-model-plugins/lib/paste/pasteSourceValidations/isExcelNonNativeEvent.ts");
|
|
@@ -38639,16 +38869,8 @@ var getSourceFunctions = new Map([
|
|
|
38639
38869
|
* @param shouldConvertSingleImage Whether convert single image is enabled.
|
|
38640
38870
|
* @returns The Type of pasted content, if no type found will return {KnownSourceType.Default}
|
|
38641
38871
|
*/
|
|
38642
|
-
function
|
|
38643
|
-
var htmlAttributes = event.htmlAttributes, clipboardData = event.clipboardData, fragment = event.fragment;
|
|
38872
|
+
function getDocumentSource(param) {
|
|
38644
38873
|
var result = null;
|
|
38645
|
-
var param = {
|
|
38646
|
-
htmlAttributes: htmlAttributes,
|
|
38647
|
-
fragment: fragment,
|
|
38648
|
-
shouldConvertSingleImage: shouldConvertSingleImage,
|
|
38649
|
-
clipboardData: clipboardData,
|
|
38650
|
-
environment: environment,
|
|
38651
|
-
};
|
|
38652
38874
|
getSourceFunctions.forEach(function (func, key) {
|
|
38653
38875
|
if (!result && func(param)) {
|
|
38654
38876
|
result = key;
|
|
@@ -38656,7 +38878,7 @@ function getPasteSource(event, shouldConvertSingleImage, environment) {
|
|
|
38656
38878
|
});
|
|
38657
38879
|
return result !== null && result !== void 0 ? result : 'default';
|
|
38658
38880
|
}
|
|
38659
|
-
exports.
|
|
38881
|
+
exports.getDocumentSource = getDocumentSource;
|
|
38660
38882
|
|
|
38661
38883
|
|
|
38662
38884
|
/***/ }),
|
|
@@ -38706,11 +38928,11 @@ var ShadowWorkbookClipboardType = 'web data/shadow-workbook';
|
|
|
38706
38928
|
* attributes we use to determine if the content is from Excel. This function is used to handle that case.
|
|
38707
38929
|
*/
|
|
38708
38930
|
var isExcelNotNativeEvent = function (props) {
|
|
38709
|
-
var
|
|
38710
|
-
|
|
38711
|
-
|
|
38712
|
-
(
|
|
38713
|
-
|
|
38931
|
+
var clipboardItemTypes = props.clipboardItemTypes, htmlFirstLevelChildTags = props.htmlFirstLevelChildTags;
|
|
38932
|
+
return !!(clipboardItemTypes &&
|
|
38933
|
+
clipboardItemTypes.includes(ShadowWorkbookClipboardType) &&
|
|
38934
|
+
(htmlFirstLevelChildTags === null || htmlFirstLevelChildTags === void 0 ? void 0 : htmlFirstLevelChildTags.length) == 1 &&
|
|
38935
|
+
htmlFirstLevelChildTags[0] == 'TABLE');
|
|
38714
38936
|
};
|
|
38715
38937
|
exports.isExcelNotNativeEvent = isExcelNotNativeEvent;
|
|
38716
38938
|
|
|
@@ -38848,14 +39070,14 @@ var WORD_PROG_ID = 'Word.Document';
|
|
|
38848
39070
|
* @returns
|
|
38849
39071
|
*/
|
|
38850
39072
|
var isWordDesktopDocument = function (props) {
|
|
38851
|
-
var
|
|
38852
|
-
var htmlAttributes = props.htmlAttributes, clipboardData = props.clipboardData, environment = props.environment;
|
|
39073
|
+
var htmlAttributes = props.htmlAttributes, rawHtml = props.rawHtml, environment = props.environment;
|
|
38853
39074
|
return (htmlAttributes[WORD_ATTRIBUTE_NAME] == WORD_ATTRIBUTE_VALUE ||
|
|
38854
39075
|
htmlAttributes[constants_1.PastePropertyNames.PROG_ID_NAME] == WORD_PROG_ID ||
|
|
38855
39076
|
// Safari removes the metadata from the clipboard html, so we need to do this check.
|
|
38856
39077
|
!!(environment.isSafari &&
|
|
38857
|
-
|
|
38858
|
-
(
|
|
39078
|
+
rawHtml &&
|
|
39079
|
+
(rawHtml === null || rawHtml === void 0 ? void 0 : rawHtml.replace(/ /g, '').indexOf(WORD_ATTRIBUTE_NAME + "=\"" + WORD_ATTRIBUTE_VALUE)) >
|
|
39080
|
+
-1));
|
|
38859
39081
|
};
|
|
38860
39082
|
exports.isWordDesktopDocument = isWordDesktopDocument;
|
|
38861
39083
|
|
|
@@ -38880,11 +39102,10 @@ exports.shouldConvertToSingleImage = void 0;
|
|
|
38880
39102
|
* @returns
|
|
38881
39103
|
*/
|
|
38882
39104
|
var shouldConvertToSingleImage = function (props) {
|
|
38883
|
-
var
|
|
38884
|
-
|
|
38885
|
-
|
|
38886
|
-
|
|
38887
|
-
clipboardData.htmlFirstLevelChildTags[0] == 'IMG');
|
|
39105
|
+
var shouldConvertSingleImage = props.shouldConvertSingleImage, htmlFirstLevelChildTags = props.htmlFirstLevelChildTags;
|
|
39106
|
+
return !!(shouldConvertSingleImage &&
|
|
39107
|
+
(htmlFirstLevelChildTags === null || htmlFirstLevelChildTags === void 0 ? void 0 : htmlFirstLevelChildTags.length) == 1 &&
|
|
39108
|
+
htmlFirstLevelChildTags[0] == 'IMG');
|
|
38888
39109
|
};
|
|
38889
39110
|
exports.shouldConvertToSingleImage = shouldConvertToSingleImage;
|
|
38890
39111
|
|