roosterjs 9.54.0 → 9.56.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-adapter-amd-min.js +1 -1
- package/dist/rooster-adapter-amd-min.js.map +1 -1
- package/dist/rooster-adapter-amd.js +8 -8
- package/dist/rooster-adapter-amd.js.map +1 -1
- package/dist/rooster-adapter-min.js +1 -1
- package/dist/rooster-adapter-min.js.map +1 -1
- package/dist/rooster-adapter.js +8 -8
- package/dist/rooster-adapter.js.map +1 -1
- package/dist/rooster-amd-min.js +1 -1
- package/dist/rooster-amd-min.js.map +1 -1
- package/dist/rooster-amd.d.ts +74 -6
- package/dist/rooster-amd.js +285 -47
- package/dist/rooster-amd.js.map +1 -1
- package/dist/rooster-min.js +1 -1
- package/dist/rooster-min.js.map +1 -1
- package/dist/rooster-react-amd-min.js +1 -1
- package/dist/rooster-react-amd-min.js.map +1 -1
- package/dist/rooster-react-amd.d.ts +1 -1
- package/dist/rooster-react-amd.js +60 -58
- package/dist/rooster-react-amd.js.map +1 -1
- package/dist/rooster-react-min.js +1 -1
- package/dist/rooster-react-min.js.map +1 -1
- package/dist/rooster-react.d.ts +1 -1
- package/dist/rooster-react.js +97 -95
- package/dist/rooster-react.js.map +1 -1
- package/dist/rooster.d.ts +74 -6
- package/dist/rooster.js +285 -47
- package/dist/rooster.js.map +1 -1
- package/package.json +7 -7
package/dist/rooster.js
CHANGED
|
@@ -6752,7 +6752,7 @@ var formatSegmentWithContentModel_1 = __webpack_require__(/*! ../utils/formatSeg
|
|
|
6752
6752
|
*/
|
|
6753
6753
|
function changeCapitalization(editor, capitalization, language) {
|
|
6754
6754
|
editor.focus();
|
|
6755
|
-
(0, formatSegmentWithContentModel_1.formatSegmentWithContentModel)(editor, 'changeCapitalization', function (_, __, segment) {
|
|
6755
|
+
(0, formatSegmentWithContentModel_1.formatSegmentWithContentModel)(editor, 'changeCapitalization', function (_, __, segment, paragraph) {
|
|
6756
6756
|
if ((segment === null || segment === void 0 ? void 0 : segment.segmentType) == 'Text') {
|
|
6757
6757
|
switch (capitalization) {
|
|
6758
6758
|
case 'lowerCase':
|
|
@@ -6763,7 +6763,13 @@ function changeCapitalization(editor, capitalization, language) {
|
|
|
6763
6763
|
break;
|
|
6764
6764
|
case 'capitalize':
|
|
6765
6765
|
var wordArray = segment.text.toLocaleLowerCase(language).split(' ');
|
|
6766
|
-
|
|
6766
|
+
// When a collapsed selection is in the middle of a word, the word is split
|
|
6767
|
+
// into multiple text segments around the selection marker. In that case the
|
|
6768
|
+
// first segment of the word continues from a previous segment, so its first
|
|
6769
|
+
// word must not be capitalized to avoid results like "HeLlo" for "he|llo".
|
|
6770
|
+
var precedingChar = getPrecedingCharacter(paragraph, segment);
|
|
6771
|
+
var startIndex = precedingChar && precedingChar != ' ' ? 1 : 0;
|
|
6772
|
+
for (var i = startIndex; i < wordArray.length; i++) {
|
|
6767
6773
|
wordArray[i] =
|
|
6768
6774
|
wordArray[i].charAt(0).toLocaleUpperCase(language) +
|
|
6769
6775
|
wordArray[i].slice(1);
|
|
@@ -6787,6 +6793,30 @@ function changeCapitalization(editor, capitalization, language) {
|
|
|
6787
6793
|
});
|
|
6788
6794
|
}
|
|
6789
6795
|
exports.changeCapitalization = changeCapitalization;
|
|
6796
|
+
/**
|
|
6797
|
+
* Get the character immediately preceding the given segment within its paragraph, skipping
|
|
6798
|
+
* selection markers (which carry no text). Returns an empty string if there is no preceding
|
|
6799
|
+
* text character (e.g. the segment starts the paragraph or follows a non-text segment).
|
|
6800
|
+
*/
|
|
6801
|
+
function getPrecedingCharacter(paragraph, segment) {
|
|
6802
|
+
if (!paragraph) {
|
|
6803
|
+
return '';
|
|
6804
|
+
}
|
|
6805
|
+
var index = paragraph.segments.indexOf(segment);
|
|
6806
|
+
for (var i = index - 1; i >= 0; i--) {
|
|
6807
|
+
var previous = paragraph.segments[i];
|
|
6808
|
+
if (previous.segmentType == 'SelectionMarker') {
|
|
6809
|
+
continue;
|
|
6810
|
+
}
|
|
6811
|
+
else if (previous.segmentType == 'Text' && previous.text.length > 0) {
|
|
6812
|
+
return previous.text[previous.text.length - 1];
|
|
6813
|
+
}
|
|
6814
|
+
else {
|
|
6815
|
+
break;
|
|
6816
|
+
}
|
|
6817
|
+
}
|
|
6818
|
+
return '';
|
|
6819
|
+
}
|
|
6790
6820
|
|
|
6791
6821
|
|
|
6792
6822
|
/***/ },
|
|
@@ -9349,21 +9379,11 @@ exports.generatePasteOptionFromPlugins = generatePasteOptionFromPlugins;
|
|
|
9349
9379
|
"use strict";
|
|
9350
9380
|
|
|
9351
9381
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
9352
|
-
exports.mergePasteContent =
|
|
9382
|
+
exports.mergePasteContent = void 0;
|
|
9353
9383
|
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
9354
9384
|
var createDomToModelContextForSanitizing_1 = __webpack_require__(/*! ../createModelFromHtml/createDomToModelContextForSanitizing */ "./packages/roosterjs-content-model-core/lib/command/createModelFromHtml/createDomToModelContextForSanitizing.ts");
|
|
9355
9385
|
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
9356
9386
|
var BlackColor = 'rgb(0,0,0)';
|
|
9357
|
-
var CloneOption = {
|
|
9358
|
-
includeCachedElement: function (node, type) { return (type == 'cache' ? undefined : node); },
|
|
9359
|
-
};
|
|
9360
|
-
/**
|
|
9361
|
-
* @internal
|
|
9362
|
-
*/
|
|
9363
|
-
function cloneModelForPaste(model) {
|
|
9364
|
-
return (0, roosterjs_content_model_dom_1.cloneModel)(model, CloneOption);
|
|
9365
|
-
}
|
|
9366
|
-
exports.cloneModelForPaste = cloneModelForPaste;
|
|
9367
9387
|
/**
|
|
9368
9388
|
* @internal
|
|
9369
9389
|
*/
|
|
@@ -9371,7 +9391,7 @@ function mergePasteContent(editor, eventResult, isFirstPaste) {
|
|
|
9371
9391
|
var fragment = eventResult.fragment, domToModelOption = eventResult.domToModelOption, customizedMerge = eventResult.customizedMerge, pasteType = eventResult.pasteType, clipboardData = eventResult.clipboardData, containsBlockElements = eventResult.containsBlockElements;
|
|
9372
9392
|
editor.formatContentModel(function (model, context) {
|
|
9373
9393
|
if (!isFirstPaste && clipboardData.modelBeforePaste) {
|
|
9374
|
-
var clonedModel = cloneModelForPaste(clipboardData.modelBeforePaste);
|
|
9394
|
+
var clonedModel = (0, roosterjs_content_model_dom_1.cloneModelForPaste)(clipboardData.modelBeforePaste);
|
|
9375
9395
|
model.blocks = clonedModel.blocks;
|
|
9376
9396
|
}
|
|
9377
9397
|
var domToModelContext = (0, createDomToModelContextForSanitizing_1.createDomToModelContextForSanitizing)(editor.getDocument(), undefined /*defaultFormat*/, editor.getEnvironment().domToModelSettings.customized, domToModelOption, editor.getDOMHelper());
|
|
@@ -9450,10 +9470,11 @@ function getLastSegmentFormat(pasteModel) {
|
|
|
9450
9470
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
9451
9471
|
exports.paste = void 0;
|
|
9452
9472
|
var cleanHtmlComments_1 = __webpack_require__(/*! ./cleanHtmlComments */ "./packages/roosterjs-content-model-core/lib/command/paste/cleanHtmlComments.ts");
|
|
9453
|
-
var
|
|
9473
|
+
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
9454
9474
|
var convertInlineCss_1 = __webpack_require__(/*! ../createModelFromHtml/convertInlineCss */ "./packages/roosterjs-content-model-core/lib/command/createModelFromHtml/convertInlineCss.ts");
|
|
9455
9475
|
var createPasteFragment_1 = __webpack_require__(/*! ./createPasteFragment */ "./packages/roosterjs-content-model-core/lib/command/paste/createPasteFragment.ts");
|
|
9456
9476
|
var generatePasteOptionFromPlugins_1 = __webpack_require__(/*! ./generatePasteOptionFromPlugins */ "./packages/roosterjs-content-model-core/lib/command/paste/generatePasteOptionFromPlugins.ts");
|
|
9477
|
+
var mergePasteContent_1 = __webpack_require__(/*! ./mergePasteContent */ "./packages/roosterjs-content-model-core/lib/command/paste/mergePasteContent.ts");
|
|
9457
9478
|
var retrieveHtmlInfo_1 = __webpack_require__(/*! ./retrieveHtmlInfo */ "./packages/roosterjs-content-model-core/lib/command/paste/retrieveHtmlInfo.ts");
|
|
9458
9479
|
/**
|
|
9459
9480
|
* Paste into editor using a clipboardData object
|
|
@@ -9469,7 +9490,7 @@ function paste(editor, clipboardData, pasteTypeOrGetter) {
|
|
|
9469
9490
|
if (!clipboardData.modelBeforePaste) {
|
|
9470
9491
|
isFirstPaste = true;
|
|
9471
9492
|
editor.formatContentModel(function (model) {
|
|
9472
|
-
clipboardData.modelBeforePaste = (0,
|
|
9493
|
+
clipboardData.modelBeforePaste = (0, roosterjs_content_model_dom_1.cloneModelForPaste)(model);
|
|
9473
9494
|
return false;
|
|
9474
9495
|
});
|
|
9475
9496
|
}
|
|
@@ -12754,7 +12775,7 @@ var CopyPastePlugin = /** @class */ (function () {
|
|
|
12754
12775
|
var dataTransfer = event.clipboardData;
|
|
12755
12776
|
if (shouldPreventDefaultPaste(dataTransfer, editor_1)) {
|
|
12756
12777
|
event.preventDefault();
|
|
12757
|
-
(0, roosterjs_content_model_dom_1.extractClipboardItems)((0, roosterjs_content_model_dom_1.toArray)(dataTransfer.items), _this.state.allowedCustomPasteType).then(function (clipboardData) {
|
|
12778
|
+
(0, roosterjs_content_model_dom_1.extractClipboardItems)((0, roosterjs_content_model_dom_1.toArray)(dataTransfer.items), _this.state.allowedCustomPasteType, true /* isPasteNative */).then(function (clipboardData) {
|
|
12758
12779
|
if (!editor_1.isDisposed()) {
|
|
12759
12780
|
(0, paste_1.paste)(editor_1, clipboardData, _this.state.defaultPasteType);
|
|
12760
12781
|
}
|
|
@@ -16791,6 +16812,8 @@ function createAriaLiveElement(document) {
|
|
|
16791
16812
|
div.style.height = '1px';
|
|
16792
16813
|
div.style.overflow = 'hidden';
|
|
16793
16814
|
div.style.position = 'absolute';
|
|
16815
|
+
div.style.top = '0';
|
|
16816
|
+
div.style.left = '0';
|
|
16794
16817
|
div.style.whiteSpace = 'nowrap';
|
|
16795
16818
|
div.style.width = '1px';
|
|
16796
16819
|
div.ariaLive = 'assertive';
|
|
@@ -17592,6 +17615,9 @@ function createDomToModelDecoratorContext() {
|
|
|
17592
17615
|
code: {
|
|
17593
17616
|
format: {},
|
|
17594
17617
|
},
|
|
17618
|
+
data: {
|
|
17619
|
+
format: {},
|
|
17620
|
+
},
|
|
17595
17621
|
blockDecorator: {
|
|
17596
17622
|
format: {},
|
|
17597
17623
|
tagName: '',
|
|
@@ -17663,6 +17689,7 @@ exports.defaultProcessorMap = void 0;
|
|
|
17663
17689
|
var brProcessor_1 = __webpack_require__(/*! ../processors/brProcessor */ "./packages/roosterjs-content-model-dom/lib/domToModel/processors/brProcessor.ts");
|
|
17664
17690
|
var childProcessor_1 = __webpack_require__(/*! ../processors/childProcessor */ "./packages/roosterjs-content-model-dom/lib/domToModel/processors/childProcessor.ts");
|
|
17665
17691
|
var codeProcessor_1 = __webpack_require__(/*! ../processors/codeProcessor */ "./packages/roosterjs-content-model-dom/lib/domToModel/processors/codeProcessor.ts");
|
|
17692
|
+
var dataProcessor_1 = __webpack_require__(/*! ../processors/dataProcessor */ "./packages/roosterjs-content-model-dom/lib/domToModel/processors/dataProcessor.ts");
|
|
17666
17693
|
var delimiterProcessor_1 = __webpack_require__(/*! ../processors/delimiterProcessor */ "./packages/roosterjs-content-model-dom/lib/domToModel/processors/delimiterProcessor.ts");
|
|
17667
17694
|
var elementProcessor_1 = __webpack_require__(/*! ../processors/elementProcessor */ "./packages/roosterjs-content-model-dom/lib/domToModel/processors/elementProcessor.ts");
|
|
17668
17695
|
var entityProcessor_1 = __webpack_require__(/*! ../processors/entityProcessor */ "./packages/roosterjs-content-model-dom/lib/domToModel/processors/entityProcessor.ts");
|
|
@@ -17689,6 +17716,7 @@ exports.defaultProcessorMap = {
|
|
|
17689
17716
|
blockquote: knownElementProcessor_1.knownElementProcessor,
|
|
17690
17717
|
br: brProcessor_1.brProcessor,
|
|
17691
17718
|
code: codeProcessor_1.codeProcessor,
|
|
17719
|
+
data: dataProcessor_1.dataProcessor,
|
|
17692
17720
|
dd: formatContainerProcessor_1.formatContainerProcessor,
|
|
17693
17721
|
del: knownElementProcessor_1.knownElementProcessor,
|
|
17694
17722
|
div: knownElementProcessor_1.knownElementProcessor,
|
|
@@ -17944,6 +17972,33 @@ var codeProcessor = function (group, element, context) {
|
|
|
17944
17972
|
exports.codeProcessor = codeProcessor;
|
|
17945
17973
|
|
|
17946
17974
|
|
|
17975
|
+
/***/ },
|
|
17976
|
+
|
|
17977
|
+
/***/ "./packages/roosterjs-content-model-dom/lib/domToModel/processors/dataProcessor.ts"
|
|
17978
|
+
/*!*****************************************************************************************!*\
|
|
17979
|
+
!*** ./packages/roosterjs-content-model-dom/lib/domToModel/processors/dataProcessor.ts ***!
|
|
17980
|
+
\*****************************************************************************************/
|
|
17981
|
+
(__unused_webpack_module, exports, __webpack_require__) {
|
|
17982
|
+
|
|
17983
|
+
"use strict";
|
|
17984
|
+
|
|
17985
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
17986
|
+
exports.dataProcessor = void 0;
|
|
17987
|
+
var knownElementProcessor_1 = __webpack_require__(/*! ./knownElementProcessor */ "./packages/roosterjs-content-model-dom/lib/domToModel/processors/knownElementProcessor.ts");
|
|
17988
|
+
var parseFormat_1 = __webpack_require__(/*! ../utils/parseFormat */ "./packages/roosterjs-content-model-dom/lib/domToModel/utils/parseFormat.ts");
|
|
17989
|
+
var stackFormat_1 = __webpack_require__(/*! ../utils/stackFormat */ "./packages/roosterjs-content-model-dom/lib/domToModel/utils/stackFormat.ts");
|
|
17990
|
+
/**
|
|
17991
|
+
* @internal
|
|
17992
|
+
*/
|
|
17993
|
+
var dataProcessor = function (group, element, context) {
|
|
17994
|
+
(0, stackFormat_1.stackFormat)(context, { data: 'empty' }, function () {
|
|
17995
|
+
(0, parseFormat_1.parseFormat)(element, context.formatParsers.data, context.data.format, context);
|
|
17996
|
+
(0, knownElementProcessor_1.knownElementProcessor)(group, element, context);
|
|
17997
|
+
});
|
|
17998
|
+
};
|
|
17999
|
+
exports.dataProcessor = dataProcessor;
|
|
18000
|
+
|
|
18001
|
+
|
|
17947
18002
|
/***/ },
|
|
17948
18003
|
|
|
17949
18004
|
/***/ "./packages/roosterjs-content-model-dom/lib/domToModel/processors/delimiterProcessor.ts"
|
|
@@ -19382,13 +19437,14 @@ var SkippedStylesForTable = [
|
|
|
19382
19437
|
* @internal
|
|
19383
19438
|
*/
|
|
19384
19439
|
function stackFormat(context, options, callback) {
|
|
19385
|
-
var segmentFormat = context.segmentFormat, blockFormat = context.blockFormat, linkFormat = context.link, codeFormat = context.code, decoratorFormat = context.blockDecorator;
|
|
19386
|
-
var segment = options.segment, paragraph = options.paragraph, link = options.link, code = options.code, blockDecorator = options.blockDecorator;
|
|
19440
|
+
var segmentFormat = context.segmentFormat, blockFormat = context.blockFormat, linkFormat = context.link, codeFormat = context.code, dataFormat = context.data, decoratorFormat = context.blockDecorator;
|
|
19441
|
+
var segment = options.segment, paragraph = options.paragraph, link = options.link, code = options.code, data = options.data, blockDecorator = options.blockDecorator;
|
|
19387
19442
|
try {
|
|
19388
19443
|
context.segmentFormat = stackFormatInternal(segmentFormat, segment);
|
|
19389
19444
|
context.blockFormat = stackFormatInternal(blockFormat, paragraph);
|
|
19390
19445
|
context.link = stackLinkInternal(linkFormat, link);
|
|
19391
19446
|
context.code = stackCodeInternal(codeFormat, code);
|
|
19447
|
+
context.data = stackDataInternal(dataFormat, data);
|
|
19392
19448
|
context.blockDecorator = stackDecoratorInternal(decoratorFormat, blockDecorator);
|
|
19393
19449
|
callback();
|
|
19394
19450
|
}
|
|
@@ -19397,6 +19453,7 @@ function stackFormat(context, options, callback) {
|
|
|
19397
19453
|
context.blockFormat = blockFormat;
|
|
19398
19454
|
context.link = linkFormat;
|
|
19399
19455
|
context.code = codeFormat;
|
|
19456
|
+
context.data = dataFormat;
|
|
19400
19457
|
context.blockDecorator = decoratorFormat;
|
|
19401
19458
|
}
|
|
19402
19459
|
}
|
|
@@ -19439,6 +19496,16 @@ function stackCodeInternal(codeFormat, code) {
|
|
|
19439
19496
|
return codeFormat;
|
|
19440
19497
|
}
|
|
19441
19498
|
}
|
|
19499
|
+
function stackDataInternal(dataFormat, data) {
|
|
19500
|
+
switch (data) {
|
|
19501
|
+
case 'empty':
|
|
19502
|
+
return {
|
|
19503
|
+
format: {},
|
|
19504
|
+
};
|
|
19505
|
+
default:
|
|
19506
|
+
return dataFormat;
|
|
19507
|
+
}
|
|
19508
|
+
}
|
|
19442
19509
|
function stackDecoratorInternal(format, decorator) {
|
|
19443
19510
|
switch (decorator) {
|
|
19444
19511
|
case 'empty':
|
|
@@ -19774,7 +19841,7 @@ var ContentHandlers = (_a = {},
|
|
|
19774
19841
|
* @param allowedCustomPasteType Allowed custom content type when paste besides text/plain, text/html and images
|
|
19775
19842
|
Only text types are supported, and do not add "text/" prefix to the type values
|
|
19776
19843
|
*/
|
|
19777
|
-
function extractClipboardItems(items, allowedCustomPasteType) {
|
|
19844
|
+
function extractClipboardItems(items, allowedCustomPasteType, isPasteNative) {
|
|
19778
19845
|
var data = {
|
|
19779
19846
|
types: [],
|
|
19780
19847
|
text: '',
|
|
@@ -19782,7 +19849,7 @@ function extractClipboardItems(items, allowedCustomPasteType) {
|
|
|
19782
19849
|
files: [],
|
|
19783
19850
|
rawHtml: null,
|
|
19784
19851
|
customValues: {},
|
|
19785
|
-
pasteNativeEvent:
|
|
19852
|
+
pasteNativeEvent: !!isPasteNative,
|
|
19786
19853
|
};
|
|
19787
19854
|
return Promise.all((items || []).map(function (item) {
|
|
19788
19855
|
var type = item.type;
|
|
@@ -20723,6 +20790,7 @@ function pruneUnselectedModel(model) {
|
|
|
20723
20790
|
exports.pruneUnselectedModel = pruneUnselectedModel;
|
|
20724
20791
|
function pruneUnselectedModelInternal(model, isSelectionAfterElement) {
|
|
20725
20792
|
var e_1, _a, _b;
|
|
20793
|
+
var _c;
|
|
20726
20794
|
for (var index = model.blocks.length - 1; index >= 0; index--) {
|
|
20727
20795
|
var block = model.blocks[index];
|
|
20728
20796
|
switch (block.blockType) {
|
|
@@ -20746,15 +20814,17 @@ function pruneUnselectedModelInternal(model, isSelectionAfterElement) {
|
|
|
20746
20814
|
case 'Paragraph':
|
|
20747
20815
|
var newSegments = [];
|
|
20748
20816
|
try {
|
|
20749
|
-
for (var
|
|
20750
|
-
var segment =
|
|
20817
|
+
for (var _d = (e_1 = void 0, (0, tslib_1.__values)(block.segments)), _e = _d.next(); !_e.done; _e = _d.next()) {
|
|
20818
|
+
var segment = _e.value;
|
|
20819
|
+
var isSelectedOrUndeletable = segment.isSelected || ((_c = segment.link) === null || _c === void 0 ? void 0 : _c.format.undeletable);
|
|
20751
20820
|
if (segment.segmentType == 'General') {
|
|
20752
20821
|
pruneUnselectedModel(segment);
|
|
20753
|
-
if (segment.blocks.length > 0 ||
|
|
20822
|
+
if (segment.blocks.length > 0 || isSelectedOrUndeletable) {
|
|
20754
20823
|
newSegments.push(segment);
|
|
20755
20824
|
}
|
|
20756
20825
|
}
|
|
20757
|
-
else if (
|
|
20826
|
+
else if (isSelectedOrUndeletable &&
|
|
20827
|
+
segment.segmentType != 'SelectionMarker') {
|
|
20758
20828
|
newSegments.push(segment);
|
|
20759
20829
|
}
|
|
20760
20830
|
}
|
|
@@ -20762,7 +20832,7 @@ function pruneUnselectedModelInternal(model, isSelectionAfterElement) {
|
|
|
20762
20832
|
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
20763
20833
|
finally {
|
|
20764
20834
|
try {
|
|
20765
|
-
if (
|
|
20835
|
+
if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
|
|
20766
20836
|
}
|
|
20767
20837
|
finally { if (e_1) throw e_1.error; }
|
|
20768
20838
|
}
|
|
@@ -22218,6 +22288,7 @@ var borderColorFormatHandler_1 = __webpack_require__(/*! ./common/borderColorFor
|
|
|
22218
22288
|
var borderFormatHandler_1 = __webpack_require__(/*! ./common/borderFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/common/borderFormatHandler.ts");
|
|
22219
22289
|
var boxShadowFormatHandler_1 = __webpack_require__(/*! ./common/boxShadowFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/common/boxShadowFormatHandler.ts");
|
|
22220
22290
|
var datasetFormatHandler_1 = __webpack_require__(/*! ./common/datasetFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/common/datasetFormatHandler.ts");
|
|
22291
|
+
var dataValueFormatHandler_1 = __webpack_require__(/*! ./segment/dataValueFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/segment/dataValueFormatHandler.ts");
|
|
22221
22292
|
var directionFormatHandler_1 = __webpack_require__(/*! ./block/directionFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/block/directionFormatHandler.ts");
|
|
22222
22293
|
var displayFormatHandler_1 = __webpack_require__(/*! ./block/displayFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/block/displayFormatHandler.ts");
|
|
22223
22294
|
var entityFormatHandler_1 = __webpack_require__(/*! ./entity/entityFormatHandler */ "./packages/roosterjs-content-model-dom/lib/formatHandlers/entity/entityFormatHandler.ts");
|
|
@@ -22263,6 +22334,7 @@ var defaultFormatHandlerMap = {
|
|
|
22263
22334
|
borderColor: borderColorFormatHandler_1.borderColorFormatHandler,
|
|
22264
22335
|
boxShadow: boxShadowFormatHandler_1.boxShadowFormatHandler,
|
|
22265
22336
|
dataset: datasetFormatHandler_1.datasetFormatHandler,
|
|
22337
|
+
dataValue: dataValueFormatHandler_1.dataValueFormatHandler,
|
|
22266
22338
|
direction: directionFormatHandler_1.directionFormatHandler,
|
|
22267
22339
|
display: displayFormatHandler_1.displayFormatHandler,
|
|
22268
22340
|
float: floatFormatHandler_1.floatFormatHandler,
|
|
@@ -22404,6 +22476,7 @@ exports.defaultFormatKeysPerCategory = {
|
|
|
22404
22476
|
],
|
|
22405
22477
|
segmentUnderLink: ['textColor'],
|
|
22406
22478
|
code: ['fontFamily', 'display'],
|
|
22479
|
+
data: ['dataValue'],
|
|
22407
22480
|
dataset: ['dataset'],
|
|
22408
22481
|
divider: (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(sharedBlockFormats), false), (0, tslib_1.__read)(sharedContainerFormats), false), ['display', 'size', 'htmlAlign'], false),
|
|
22409
22482
|
container: (0, tslib_1.__spreadArray)((0, tslib_1.__spreadArray)([], (0, tslib_1.__read)(sharedContainerFormats), false), ['htmlAlign', 'size', 'display', 'id'], false),
|
|
@@ -22694,6 +22767,37 @@ exports.boldFormatHandler = {
|
|
|
22694
22767
|
};
|
|
22695
22768
|
|
|
22696
22769
|
|
|
22770
|
+
/***/ },
|
|
22771
|
+
|
|
22772
|
+
/***/ "./packages/roosterjs-content-model-dom/lib/formatHandlers/segment/dataValueFormatHandler.ts"
|
|
22773
|
+
/*!***************************************************************************************************!*\
|
|
22774
|
+
!*** ./packages/roosterjs-content-model-dom/lib/formatHandlers/segment/dataValueFormatHandler.ts ***!
|
|
22775
|
+
\***************************************************************************************************/
|
|
22776
|
+
(__unused_webpack_module, exports) {
|
|
22777
|
+
|
|
22778
|
+
"use strict";
|
|
22779
|
+
|
|
22780
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
22781
|
+
exports.dataValueFormatHandler = void 0;
|
|
22782
|
+
/**
|
|
22783
|
+
* @internal
|
|
22784
|
+
* Format handler for the "value" attribute of a HTML <data> element
|
|
22785
|
+
*/
|
|
22786
|
+
exports.dataValueFormatHandler = {
|
|
22787
|
+
parse: function (format, element) {
|
|
22788
|
+
var _a;
|
|
22789
|
+
if (element.hasAttribute('value')) {
|
|
22790
|
+
format.dataValue = (_a = element.getAttribute('value')) !== null && _a !== void 0 ? _a : '';
|
|
22791
|
+
}
|
|
22792
|
+
},
|
|
22793
|
+
apply: function (format, element) {
|
|
22794
|
+
if (format.dataValue != undefined) {
|
|
22795
|
+
element.setAttribute('value', format.dataValue);
|
|
22796
|
+
}
|
|
22797
|
+
},
|
|
22798
|
+
};
|
|
22799
|
+
|
|
22800
|
+
|
|
22697
22801
|
/***/ },
|
|
22698
22802
|
|
|
22699
22803
|
/***/ "./packages/roosterjs-content-model-dom/lib/formatHandlers/segment/fontFamilyFormatHandler.ts"
|
|
@@ -23734,9 +23838,9 @@ exports.shouldSetValue = shouldSetValue;
|
|
|
23734
23838
|
|
|
23735
23839
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
23736
23840
|
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.formatContainerProcessor = exports.tableProcessor = exports.entityProcessor = exports.processChildNode = exports.handleRegularSelection = exports.childProcessor = exports.contentModelToText = exports.contentModelToDom = exports.domToContentModel = void 0;
|
|
23737
|
-
exports.
|
|
23738
|
-
exports.
|
|
23739
|
-
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 = exports.updateTableCellMetadata = exports.getImageMetadata = exports.updateImageMetadata = void 0;
|
|
23841
|
+
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.addData = 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 = exports.createContentModelDocument = void 0;
|
|
23842
|
+
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.cloneModelForPaste = 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.getNodePositionFromEvent = exports.isCursorMovingKey = exports.isModifierKey = exports.isCharacterValue = exports.trimModelForSelection = void 0;
|
|
23843
|
+
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 = exports.updateTableCellMetadata = exports.getImageMetadata = exports.updateImageMetadata = exports.runEditSteps = exports.getClosestAncestorBlockGroupIndex = void 0;
|
|
23740
23844
|
var domToContentModel_1 = __webpack_require__(/*! ./domToModel/domToContentModel */ "./packages/roosterjs-content-model-dom/lib/domToModel/domToContentModel.ts");
|
|
23741
23845
|
Object.defineProperty(exports, "domToContentModel", ({ enumerable: true, get: function () { return domToContentModel_1.domToContentModel; } }));
|
|
23742
23846
|
var contentModelToDom_1 = __webpack_require__(/*! ./modelToDom/contentModelToDom */ "./packages/roosterjs-content-model-dom/lib/modelToDom/contentModelToDom.ts");
|
|
@@ -23850,7 +23954,9 @@ Object.defineProperty(exports, "addBlock", ({ enumerable: true, get: function ()
|
|
|
23850
23954
|
var addDecorators_1 = __webpack_require__(/*! ./modelApi/common/addDecorators */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/addDecorators.ts");
|
|
23851
23955
|
Object.defineProperty(exports, "addCode", ({ enumerable: true, get: function () { return addDecorators_1.addCode; } }));
|
|
23852
23956
|
var addDecorators_2 = __webpack_require__(/*! ./modelApi/common/addDecorators */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/addDecorators.ts");
|
|
23853
|
-
Object.defineProperty(exports, "
|
|
23957
|
+
Object.defineProperty(exports, "addData", ({ enumerable: true, get: function () { return addDecorators_2.addData; } }));
|
|
23958
|
+
var addDecorators_3 = __webpack_require__(/*! ./modelApi/common/addDecorators */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/addDecorators.ts");
|
|
23959
|
+
Object.defineProperty(exports, "addLink", ({ enumerable: true, get: function () { return addDecorators_3.addLink; } }));
|
|
23854
23960
|
var addTextSegment_1 = __webpack_require__(/*! ./modelApi/common/addTextSegment */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/addTextSegment.ts");
|
|
23855
23961
|
Object.defineProperty(exports, "addTextSegment", ({ enumerable: true, get: function () { return addTextSegment_1.addTextSegment; } }));
|
|
23856
23962
|
var normalizeParagraph_1 = __webpack_require__(/*! ./modelApi/common/normalizeParagraph */ "./packages/roosterjs-content-model-dom/lib/modelApi/common/normalizeParagraph.ts");
|
|
@@ -23967,6 +24073,7 @@ var setSelection_1 = __webpack_require__(/*! ./modelApi/selection/setSelection *
|
|
|
23967
24073
|
Object.defineProperty(exports, "setSelection", ({ enumerable: true, get: function () { return setSelection_1.setSelection; } }));
|
|
23968
24074
|
var cloneModel_1 = __webpack_require__(/*! ./modelApi/editing/cloneModel */ "./packages/roosterjs-content-model-dom/lib/modelApi/editing/cloneModel.ts");
|
|
23969
24075
|
Object.defineProperty(exports, "cloneModel", ({ enumerable: true, get: function () { return cloneModel_1.cloneModel; } }));
|
|
24076
|
+
Object.defineProperty(exports, "cloneModelForPaste", ({ enumerable: true, get: function () { return cloneModel_1.cloneModelForPaste; } }));
|
|
23970
24077
|
var mergeModel_1 = __webpack_require__(/*! ./modelApi/editing/mergeModel */ "./packages/roosterjs-content-model-dom/lib/modelApi/editing/mergeModel.ts");
|
|
23971
24078
|
Object.defineProperty(exports, "mergeModel", ({ enumerable: true, get: function () { return mergeModel_1.mergeModel; } }));
|
|
23972
24079
|
var deleteSelection_1 = __webpack_require__(/*! ./modelApi/editing/deleteSelection */ "./packages/roosterjs-content-model-dom/lib/modelApi/editing/deleteSelection.ts");
|
|
@@ -24170,7 +24277,7 @@ exports.addBlock = addBlock;
|
|
|
24170
24277
|
"use strict";
|
|
24171
24278
|
|
|
24172
24279
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
24173
|
-
exports.addDecorators = exports.addCode = exports.addLink = void 0;
|
|
24280
|
+
exports.addDecorators = exports.addData = exports.addCode = exports.addLink = void 0;
|
|
24174
24281
|
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
24175
24282
|
/**
|
|
24176
24283
|
* @internal
|
|
@@ -24197,12 +24304,27 @@ function addCode(segment, code) {
|
|
|
24197
24304
|
}
|
|
24198
24305
|
}
|
|
24199
24306
|
exports.addCode = addCode;
|
|
24307
|
+
/**
|
|
24308
|
+
* @internal
|
|
24309
|
+
* Add a data decorator into segment if any
|
|
24310
|
+
* @param segment The segment to add decorator to
|
|
24311
|
+
* @param data The data decorator to add
|
|
24312
|
+
*/
|
|
24313
|
+
function addData(segment, data) {
|
|
24314
|
+
if (data.format.dataValue != undefined) {
|
|
24315
|
+
segment.data = {
|
|
24316
|
+
format: (0, tslib_1.__assign)({}, data.format),
|
|
24317
|
+
};
|
|
24318
|
+
}
|
|
24319
|
+
}
|
|
24320
|
+
exports.addData = addData;
|
|
24200
24321
|
/**
|
|
24201
24322
|
* @internal
|
|
24202
24323
|
*/
|
|
24203
24324
|
function addDecorators(segment, context) {
|
|
24204
24325
|
addLink(segment, context.link);
|
|
24205
24326
|
addCode(segment, context.code);
|
|
24327
|
+
addData(segment, context.data);
|
|
24206
24328
|
}
|
|
24207
24329
|
exports.addDecorators = addDecorators;
|
|
24208
24330
|
|
|
@@ -24487,7 +24609,8 @@ function segmentsWithSameFormat(seg1, seg2) {
|
|
|
24487
24609
|
return (!!seg1.isSelected == !!seg2.isSelected &&
|
|
24488
24610
|
(0, areSameFormats_1.areSameFormats)(seg1.format, seg2.format) &&
|
|
24489
24611
|
areSameLinks(seg1.link, seg2.link) &&
|
|
24490
|
-
areSameCodes(seg1.code, seg2.code)
|
|
24612
|
+
areSameCodes(seg1.code, seg2.code) &&
|
|
24613
|
+
areSameData(seg1.data, seg2.data));
|
|
24491
24614
|
}
|
|
24492
24615
|
function areSameLinks(link1, link2) {
|
|
24493
24616
|
return ((!link1 && !link2) ||
|
|
@@ -24499,6 +24622,9 @@ function areSameLinks(link1, link2) {
|
|
|
24499
24622
|
function areSameCodes(code1, code2) {
|
|
24500
24623
|
return (!code1 && !code2) || (code1 && code2 && (0, areSameFormats_1.areSameFormats)(code1.format, code2.format));
|
|
24501
24624
|
}
|
|
24625
|
+
function areSameData(data1, data2) {
|
|
24626
|
+
return (!data1 && !data2) || (data1 && data2 && (0, areSameFormats_1.areSameFormats)(data1.format, data2.format));
|
|
24627
|
+
}
|
|
24502
24628
|
|
|
24503
24629
|
|
|
24504
24630
|
/***/ },
|
|
@@ -24796,7 +24922,34 @@ exports.normalizeAllSegments = normalizeAllSegments;
|
|
|
24796
24922
|
function normalizeSingleSegment(paragraph, segment, ignoreTrailingSpaces) {
|
|
24797
24923
|
if (ignoreTrailingSpaces === void 0) { ignoreTrailingSpaces = false; }
|
|
24798
24924
|
var context = resetNormalizeSegmentContext();
|
|
24925
|
+
var index = paragraph.segments.indexOf(segment);
|
|
24799
24926
|
context.ignoreTrailingSpaces = ignoreTrailingSpaces;
|
|
24927
|
+
// Search backward for the nearest non-empty text segment (skipping SelectionMarkers and empty text),
|
|
24928
|
+
// to determine whether leading spaces of the current segment should be preserved.
|
|
24929
|
+
// If the previous text doesn't end with a space, keep the leading space to maintain word separation.
|
|
24930
|
+
for (var i = index - 1; i >= 0; i--) {
|
|
24931
|
+
var s = paragraph.segments[i];
|
|
24932
|
+
if (s.segmentType == 'Text') {
|
|
24933
|
+
if (s.text.length > 0) {
|
|
24934
|
+
if (s.text.substr(-1) != SPACE) {
|
|
24935
|
+
context.ignoreLeadingSpaces = false;
|
|
24936
|
+
}
|
|
24937
|
+
break;
|
|
24938
|
+
}
|
|
24939
|
+
}
|
|
24940
|
+
else if (s.segmentType == 'Image') {
|
|
24941
|
+
// If the previous segment is an image, we should keep the leading space of the current segment to maintain word separation.
|
|
24942
|
+
context.ignoreLeadingSpaces = false;
|
|
24943
|
+
break;
|
|
24944
|
+
}
|
|
24945
|
+
else if (s.segmentType == 'Br') {
|
|
24946
|
+
// If the previous segment is a line break, we should ignore the leading space of the current segment.
|
|
24947
|
+
context.ignoreLeadingSpaces = true;
|
|
24948
|
+
}
|
|
24949
|
+
else if (s.segmentType != 'SelectionMarker') {
|
|
24950
|
+
break;
|
|
24951
|
+
}
|
|
24952
|
+
}
|
|
24800
24953
|
normalizeSegment(paragraph, segment, context);
|
|
24801
24954
|
}
|
|
24802
24955
|
exports.normalizeSingleSegment = normalizeSingleSegment;
|
|
@@ -24837,6 +24990,10 @@ function normalizeSegment(paragraph, segment, context) {
|
|
|
24837
24990
|
context.ignoreLeadingSpaces = false;
|
|
24838
24991
|
break;
|
|
24839
24992
|
case 'Text':
|
|
24993
|
+
// Skip empty text segments to avoid affecting normalization context
|
|
24994
|
+
if (segment.text.length == 0) {
|
|
24995
|
+
break;
|
|
24996
|
+
}
|
|
24840
24997
|
context.textSegments.push(segment);
|
|
24841
24998
|
context.lastInlineSegment = segment;
|
|
24842
24999
|
context.lastTextSegment = segment;
|
|
@@ -24844,9 +25001,9 @@ function normalizeSegment(paragraph, segment, context) {
|
|
|
24844
25001
|
var last = segment.text.substr(-1);
|
|
24845
25002
|
if (!(0, hasSpacesOnly_1.hasSpacesOnly)(segment.text)) {
|
|
24846
25003
|
if (first == SPACE) {
|
|
24847
|
-
// 1. Multiple leading space => single
|
|
25004
|
+
// 1. Multiple leading space => single space or empty (depends on if previous segment ends with space)
|
|
24848
25005
|
(0, mutate_1.mutateSegment)(paragraph, segment, function (textSegment) {
|
|
24849
|
-
textSegment.text = textSegment.text.replace(LEADING_SPACE_REGEX, context.ignoreLeadingSpaces ? '' :
|
|
25006
|
+
textSegment.text = textSegment.text.replace(LEADING_SPACE_REGEX, context.ignoreLeadingSpaces ? '' : SPACE);
|
|
24850
25007
|
});
|
|
24851
25008
|
}
|
|
24852
25009
|
if (last == SPACE) {
|
|
@@ -25553,9 +25710,10 @@ var addDecorators_1 = __webpack_require__(/*! ../common/addDecorators */ "./pack
|
|
|
25553
25710
|
* @param text Text of this model
|
|
25554
25711
|
* @param format @optional The format of this model
|
|
25555
25712
|
* @param link @optional The link decorator
|
|
25556
|
-
* @param code @
|
|
25713
|
+
* @param code @optional The code decorator
|
|
25714
|
+
* @param data @optional The data decorator
|
|
25557
25715
|
*/
|
|
25558
|
-
function createText(text, format, link, code) {
|
|
25716
|
+
function createText(text, format, link, code, data) {
|
|
25559
25717
|
var result = {
|
|
25560
25718
|
segmentType: 'Text',
|
|
25561
25719
|
text: text,
|
|
@@ -25567,6 +25725,9 @@ function createText(text, format, link, code) {
|
|
|
25567
25725
|
if (code) {
|
|
25568
25726
|
(0, addDecorators_1.addCode)(result, code);
|
|
25569
25727
|
}
|
|
25728
|
+
if (data) {
|
|
25729
|
+
(0, addDecorators_1.addData)(result, data);
|
|
25730
|
+
}
|
|
25570
25731
|
return result;
|
|
25571
25732
|
}
|
|
25572
25733
|
exports.createText = createText;
|
|
@@ -25945,8 +26106,20 @@ function getBorderStyleFromColor(color) {
|
|
|
25945
26106
|
"use strict";
|
|
25946
26107
|
|
|
25947
26108
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
25948
|
-
exports.cloneModel = void 0;
|
|
26109
|
+
exports.cloneModel = exports.cloneModelForPaste = void 0;
|
|
25949
26110
|
var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
|
|
26111
|
+
var CloneOption = {
|
|
26112
|
+
includeCachedElement: function (node, type) { return (type == 'cache' ? undefined : node); },
|
|
26113
|
+
};
|
|
26114
|
+
/**
|
|
26115
|
+
* Clone a content model for paste operations, ensuring that cached elements are handled appropriately.
|
|
26116
|
+
* @param model The content model to clone
|
|
26117
|
+
* @returns A cloned content model suitable for paste operations
|
|
26118
|
+
*/
|
|
26119
|
+
function cloneModelForPaste(model) {
|
|
26120
|
+
return cloneModel(model, CloneOption);
|
|
26121
|
+
}
|
|
26122
|
+
exports.cloneModelForPaste = cloneModelForPaste;
|
|
25950
26123
|
/**
|
|
25951
26124
|
* Clone a content model
|
|
25952
26125
|
* @param model The content model to clone
|
|
@@ -26022,7 +26195,7 @@ function cloneBlockGroupBase(group, options) {
|
|
|
26022
26195
|
};
|
|
26023
26196
|
}
|
|
26024
26197
|
function cloneSegmentBase(segment) {
|
|
26025
|
-
var segmentType = segment.segmentType, isSelected = segment.isSelected, code = segment.code, link = segment.link;
|
|
26198
|
+
var segmentType = segment.segmentType, isSelected = segment.isSelected, code = segment.code, link = segment.link, data = segment.data;
|
|
26026
26199
|
var newSegment = Object.assign({
|
|
26027
26200
|
segmentType: segmentType,
|
|
26028
26201
|
isSelected: isSelected,
|
|
@@ -26033,6 +26206,9 @@ function cloneSegmentBase(segment) {
|
|
|
26033
26206
|
if (link) {
|
|
26034
26207
|
newSegment.link = Object.assign(cloneModelWithFormat(link), cloneModelWithDataset(link));
|
|
26035
26208
|
}
|
|
26209
|
+
if (data) {
|
|
26210
|
+
newSegment.data = cloneModelWithFormat(data);
|
|
26211
|
+
}
|
|
26036
26212
|
return newSegment;
|
|
26037
26213
|
}
|
|
26038
26214
|
function cloneEntity(entity, options) {
|
|
@@ -30068,7 +30244,7 @@ var moveChildNodes_1 = __webpack_require__(/*! ../../domUtils/moveChildNodes */
|
|
|
30068
30244
|
* @internal
|
|
30069
30245
|
*/
|
|
30070
30246
|
var handleSegmentDecorator = function (_, parent, segment, context) {
|
|
30071
|
-
var code = segment.code, link = segment.link;
|
|
30247
|
+
var code = segment.code, link = segment.link, data = segment.data;
|
|
30072
30248
|
if ((0, isNodeOfType_1.isNodeOfType)(parent, 'ELEMENT_NODE')) {
|
|
30073
30249
|
if (link) {
|
|
30074
30250
|
(0, stackFormat_1.stackFormat)(context, 'a', function () {
|
|
@@ -30087,6 +30263,14 @@ var handleSegmentDecorator = function (_, parent, segment, context) {
|
|
|
30087
30263
|
(_a = context.onNodeCreated) === null || _a === void 0 ? void 0 : _a.call(context, code, codeNode);
|
|
30088
30264
|
});
|
|
30089
30265
|
}
|
|
30266
|
+
if (data) {
|
|
30267
|
+
(0, stackFormat_1.stackFormat)(context, 'data', function () {
|
|
30268
|
+
var _a;
|
|
30269
|
+
var dataNode = (0, moveChildNodes_1.wrapAllChildNodes)(parent, 'data');
|
|
30270
|
+
(0, applyFormat_1.applyFormat)(dataNode, context.formatAppliers.data, data.format, context);
|
|
30271
|
+
(_a = context.onNodeCreated) === null || _a === void 0 ? void 0 : _a.call(context, data, dataNode);
|
|
30272
|
+
});
|
|
30273
|
+
}
|
|
30090
30274
|
}
|
|
30091
30275
|
};
|
|
30092
30276
|
exports.handleSegmentDecorator = handleSegmentDecorator;
|
|
@@ -30271,7 +30455,20 @@ exports.handleText = handleText;
|
|
|
30271
30455
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
30272
30456
|
exports.mergeNode = void 0;
|
|
30273
30457
|
var isNodeOfType_1 = __webpack_require__(/*! ../../domUtils/isNodeOfType */ "./packages/roosterjs-content-model-dom/lib/domUtils/isNodeOfType.ts");
|
|
30274
|
-
var OptimizeTags = [
|
|
30458
|
+
var OptimizeTags = [
|
|
30459
|
+
'SPAN',
|
|
30460
|
+
'B',
|
|
30461
|
+
'EM',
|
|
30462
|
+
'I',
|
|
30463
|
+
'U',
|
|
30464
|
+
'SUB',
|
|
30465
|
+
'SUP',
|
|
30466
|
+
'STRIKE',
|
|
30467
|
+
'S',
|
|
30468
|
+
'A',
|
|
30469
|
+
'CODE',
|
|
30470
|
+
'DATA',
|
|
30471
|
+
];
|
|
30275
30472
|
/**
|
|
30276
30473
|
* @internal
|
|
30277
30474
|
*/
|
|
@@ -32020,11 +32217,12 @@ exports.modelProcessor = modelProcessor;
|
|
|
32020
32217
|
|
|
32021
32218
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
32022
32219
|
exports.MarkdownPastePlugin = void 0;
|
|
32023
|
-
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
32024
32220
|
var convertMarkdownToContentModel_1 = __webpack_require__(/*! ../markdownToModel/convertMarkdownToContentModel */ "./packages/roosterjs-content-model-markdown/lib/markdownToModel/convertMarkdownToContentModel.ts");
|
|
32025
32221
|
var isPastedContentMarkdown_1 = __webpack_require__(/*! ../publicApi/isPastedContentMarkdown */ "./packages/roosterjs-content-model-markdown/lib/publicApi/isPastedContentMarkdown.ts");
|
|
32222
|
+
var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
|
|
32026
32223
|
var DefaultOptions = {
|
|
32027
32224
|
autoConversion: false,
|
|
32225
|
+
undoConversion: false,
|
|
32028
32226
|
};
|
|
32029
32227
|
/**
|
|
32030
32228
|
* Markdown paste plugin. Handles the BeforePaste event and, when the pasted content
|
|
@@ -32070,12 +32268,37 @@ var MarkdownPastePlugin = /** @class */ (function () {
|
|
|
32070
32268
|
* @param event The event to handle:
|
|
32071
32269
|
*/
|
|
32072
32270
|
MarkdownPastePlugin.prototype.onPluginEvent = function (event) {
|
|
32073
|
-
if (!this.editor
|
|
32271
|
+
if (!this.editor) {
|
|
32074
32272
|
return;
|
|
32075
32273
|
}
|
|
32076
|
-
|
|
32077
|
-
|
|
32078
|
-
|
|
32274
|
+
if (event.eventType === 'contentChanged' &&
|
|
32275
|
+
event.source === roosterjs_content_model_dom_1.ChangeSource.Paste &&
|
|
32276
|
+
this.options.autoConversion &&
|
|
32277
|
+
event.data) {
|
|
32278
|
+
var clipboardData = event.data;
|
|
32279
|
+
var shouldConvert = clipboardData && clipboardData.pasteNativeEvent && this.options.autoConversion;
|
|
32280
|
+
if (shouldConvert &&
|
|
32281
|
+
(0, isPastedContentMarkdown_1.isPastedContentMarkdown)(this.editor, clipboardData) &&
|
|
32282
|
+
clipboardData.modelBeforePaste) {
|
|
32283
|
+
var modelBeforePaste_1 = (0, roosterjs_content_model_dom_1.cloneModelForPaste)(clipboardData.modelBeforePaste);
|
|
32284
|
+
(0, roosterjs_content_model_dom_1.mergeModel)(modelBeforePaste_1, (0, convertMarkdownToContentModel_1.convertMarkdownToContentModel)(clipboardData.text, { emptyLine: 'merge' }));
|
|
32285
|
+
if (this.options.undoConversion) {
|
|
32286
|
+
this.editor.takeSnapshot();
|
|
32287
|
+
}
|
|
32288
|
+
this.editor.formatContentModel(function (model) {
|
|
32289
|
+
model.blocks = modelBeforePaste_1.blocks;
|
|
32290
|
+
return true;
|
|
32291
|
+
}, {
|
|
32292
|
+
apiName: 'MarkdownConversion',
|
|
32293
|
+
scrollCaretIntoView: true,
|
|
32294
|
+
});
|
|
32295
|
+
}
|
|
32296
|
+
}
|
|
32297
|
+
else if (event.eventType === 'beforePaste' && !event.clipboardData.pasteNativeEvent) {
|
|
32298
|
+
var shouldConvert = event.pasteType === 'asMarkdown';
|
|
32299
|
+
if (shouldConvert && (0, isPastedContentMarkdown_1.isPastedContentMarkdown)(this.editor, event.clipboardData)) {
|
|
32300
|
+
convertPastedTextToMarkdown(this.editor, event.fragment, event.clipboardData.text);
|
|
32301
|
+
}
|
|
32079
32302
|
}
|
|
32080
32303
|
};
|
|
32081
32304
|
return MarkdownPastePlugin;
|
|
@@ -38018,16 +38241,31 @@ function createImageWrapper(editor, image, options, editInfo, htmlOptions, opera
|
|
|
38018
38241
|
croppers = (0, createImageCropper_1.createImageCropper)(doc);
|
|
38019
38242
|
}
|
|
38020
38243
|
var wrapper = createWrapper(editor, imageClone, options, editInfo, resizers, rotators, croppers);
|
|
38244
|
+
// Capture the image footprint before attaching the shadow root, since the light-DOM image
|
|
38245
|
+
// stops being rendered once the shadow root takes over.
|
|
38246
|
+
var imageWidth = image.offsetWidth;
|
|
38247
|
+
var imageHeight = image.offsetHeight;
|
|
38021
38248
|
var imageSpan = (0, roosterjs_content_model_dom_1.wrap)(doc, image, 'span');
|
|
38022
|
-
var shadowSpan = createShadowSpan(wrapper, imageSpan);
|
|
38249
|
+
var shadowSpan = createShadowSpan(wrapper, imageSpan, imageWidth, imageHeight);
|
|
38023
38250
|
return { wrapper: wrapper, shadowSpan: shadowSpan, imageClone: imageClone, resizers: resizers, rotators: rotators, croppers: croppers };
|
|
38024
38251
|
}
|
|
38025
38252
|
exports.createImageWrapper = createImageWrapper;
|
|
38026
|
-
var createShadowSpan = function (wrapper, imageSpan) {
|
|
38253
|
+
var createShadowSpan = function (wrapper, imageSpan, imageWidth, imageHeight) {
|
|
38027
38254
|
var shadowRoot = imageSpan.attachShadow({
|
|
38028
38255
|
mode: 'open',
|
|
38029
38256
|
});
|
|
38030
38257
|
imageSpan.id = IMAGE_EDIT_SHADOW_ROOT;
|
|
38258
|
+
// Pin the shadow host to the original image's box so that wrapping the image does not grow the
|
|
38259
|
+
// surrounding line box. Without this, the taller edit wrapper enlarges the line and the browser
|
|
38260
|
+
// scrolls the selection back into view, making the editor jump. The wrapper and handles still
|
|
38261
|
+
// overflow the host visually because overflow is left visible.
|
|
38262
|
+
if (imageWidth > 0 && imageHeight > 0) {
|
|
38263
|
+
imageSpan.style.display = 'inline-block';
|
|
38264
|
+
imageSpan.style.width = imageWidth + "px";
|
|
38265
|
+
imageSpan.style.height = imageHeight + "px";
|
|
38266
|
+
imageSpan.style.verticalAlign = 'bottom';
|
|
38267
|
+
imageSpan.style.overflow = 'visible';
|
|
38268
|
+
}
|
|
38031
38269
|
shadowRoot.appendChild(wrapper);
|
|
38032
38270
|
return imageSpan;
|
|
38033
38271
|
};
|