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