roosterjs 8.34.0 → 8.35.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/README.md +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 +25 -4
- package/dist/rooster-amd.js +335 -149
- 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 +25 -4
- package/dist/rooster.js +335 -149
- package/dist/rooster.js.map +1 -1
- package/package.json +7 -7
- package/tsconfig.child.tsbuildinfo +1 -1
package/dist/rooster-amd.js
CHANGED
|
@@ -2276,7 +2276,7 @@ function changeFontSize(editor, change, fontSizes) {
|
|
|
2276
2276
|
var pt = parseFloat((0, roosterjs_editor_dom_1.getComputedStyle)(element, 'font-size') || element.style.fontSize);
|
|
2277
2277
|
element.style.fontSize = getNewFontSize(pt, changeBase, fontSizes) + 'pt';
|
|
2278
2278
|
var lineHeight = (0, roosterjs_editor_dom_1.getComputedStyle)(element, 'line-height');
|
|
2279
|
-
if (lineHeight != 'normal') {
|
|
2279
|
+
if (lineHeight && lineHeight != 'normal') {
|
|
2280
2280
|
element.style.lineHeight = 'normal';
|
|
2281
2281
|
}
|
|
2282
2282
|
}, 'changeFontSize');
|
|
@@ -3281,7 +3281,7 @@ function setFontSize(editor, fontSize) {
|
|
|
3281
3281
|
(0, applyListItemWrap_1.default)(editor, 'font-size', function (element, isInnerNode) {
|
|
3282
3282
|
element.style.fontSize = isInnerNode ? '' : fontSize;
|
|
3283
3283
|
var lineHeight = (0, roosterjs_editor_dom_1.getComputedStyle)(element, 'line-height');
|
|
3284
|
-
if (lineHeight != 'normal') {
|
|
3284
|
+
if (lineHeight && lineHeight != 'normal') {
|
|
3285
3285
|
element.style.lineHeight = 'normal';
|
|
3286
3286
|
}
|
|
3287
3287
|
}, 'setFontSize');
|
|
@@ -4323,8 +4323,8 @@ function blockFormat(editor, callback, beforeRunCallback, apiName) {
|
|
|
4323
4323
|
if (selection.type == 0 /* Normal */) {
|
|
4324
4324
|
editor.select(start, end);
|
|
4325
4325
|
}
|
|
4326
|
-
else
|
|
4327
|
-
editor.select(selection
|
|
4326
|
+
else {
|
|
4327
|
+
editor.select(selection);
|
|
4328
4328
|
}
|
|
4329
4329
|
}, apiName);
|
|
4330
4330
|
}
|
|
@@ -4502,16 +4502,15 @@ function execCommand(editor, command, apiName) {
|
|
|
4502
4502
|
}
|
|
4503
4503
|
else {
|
|
4504
4504
|
(0, formatUndoSnapshot_1.default)(editor, function () {
|
|
4505
|
-
var
|
|
4505
|
+
var needToSwitchSelection = selection.type != 0 /* Normal */;
|
|
4506
4506
|
selection.ranges.forEach(function (range) {
|
|
4507
|
-
if (
|
|
4507
|
+
if (needToSwitchSelection) {
|
|
4508
4508
|
editor.select(range);
|
|
4509
4509
|
}
|
|
4510
4510
|
formatter();
|
|
4511
|
-
tempRange = range;
|
|
4512
4511
|
});
|
|
4513
|
-
if (
|
|
4514
|
-
editor.select(selection
|
|
4512
|
+
if (needToSwitchSelection) {
|
|
4513
|
+
editor.select(selection);
|
|
4515
4514
|
}
|
|
4516
4515
|
}, apiName);
|
|
4517
4516
|
}
|
|
@@ -4643,7 +4642,7 @@ function toggleListType(editor, listType, startNumber, includeSiblingLists, orde
|
|
|
4643
4642
|
var chain = startNumber > 0 && chains.filter(function (chain) { return chain.canAppendAtCursor(startNumber); })[0];
|
|
4644
4643
|
var vList = chain && start.equalTo(end)
|
|
4645
4644
|
? chain.createVListAtBlock((_a = (0, roosterjs_editor_dom_1.getBlockElementAtNode)(region.rootNode, start.node)) === null || _a === void 0 ? void 0 : _a.collapseToSingleElement(), startNumber)
|
|
4646
|
-
: (0, roosterjs_editor_dom_1.createVListFromRegion)(region, includeSiblingLists);
|
|
4645
|
+
: (0, roosterjs_editor_dom_1.createVListFromRegion)(region, startNumber === 1 ? false : includeSiblingLists);
|
|
4647
4646
|
if (vList) {
|
|
4648
4647
|
vList.changeListType(start, end, listType);
|
|
4649
4648
|
if (editor.isFeatureEnabled("AutoFormatList" /* AutoFormatList */)) {
|
|
@@ -4735,8 +4734,7 @@ function addUndoSnapshotInternal(core, canUndoByBackspace) {
|
|
|
4735
4734
|
if (!core.lifecycle.shadowEditFragment) {
|
|
4736
4735
|
var rangeEx = core.api.getSelectionRangeEx(core);
|
|
4737
4736
|
var isDarkMode = core.lifecycle.isDarkMode;
|
|
4738
|
-
var metadata = (
|
|
4739
|
-
? __assign({ type: 1 /* TableSelection */, tableId: rangeEx.table.id, isDarkMode: isDarkMode }, rangeEx.coordinates) : __assign({ type: 0 /* Normal */, isDarkMode: isDarkMode, start: [], end: [] }, ((0, roosterjs_editor_dom_1.getSelectionPath)(core.contentDiv, rangeEx.ranges[0]) || {}));
|
|
4737
|
+
var metadata = createContentMetadata(core.contentDiv, rangeEx, isDarkMode) || null;
|
|
4740
4738
|
core.undo.snapshotsService.addSnapshot({
|
|
4741
4739
|
html: core.contentDiv.innerHTML,
|
|
4742
4740
|
metadata: metadata,
|
|
@@ -4744,6 +4742,20 @@ function addUndoSnapshotInternal(core, canUndoByBackspace) {
|
|
|
4744
4742
|
core.undo.hasNewContent = false;
|
|
4745
4743
|
}
|
|
4746
4744
|
}
|
|
4745
|
+
function createContentMetadata(root, rangeEx, isDarkMode) {
|
|
4746
|
+
switch (rangeEx === null || rangeEx === void 0 ? void 0 : rangeEx.type) {
|
|
4747
|
+
case 1 /* TableSelection */:
|
|
4748
|
+
return __assign({ type: 1 /* TableSelection */, tableId: rangeEx.table.id, isDarkMode: !!isDarkMode }, rangeEx.coordinates);
|
|
4749
|
+
case 2 /* ImageSelection */:
|
|
4750
|
+
return {
|
|
4751
|
+
type: 2 /* ImageSelection */,
|
|
4752
|
+
imageId: rangeEx.image.id,
|
|
4753
|
+
isDarkMode: !!isDarkMode,
|
|
4754
|
+
};
|
|
4755
|
+
case 0 /* Normal */:
|
|
4756
|
+
return __assign({ type: 0 /* Normal */, isDarkMode: !!isDarkMode, start: [], end: [] }, ((0, roosterjs_editor_dom_1.getSelectionPath)(root, rangeEx.ranges[0]) || {}));
|
|
4757
|
+
}
|
|
4758
|
+
}
|
|
4747
4759
|
|
|
4748
4760
|
|
|
4749
4761
|
/***/ }),
|
|
@@ -5843,6 +5855,7 @@ var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./
|
|
|
5843
5855
|
var IMAGE_ID = 'imageSelected';
|
|
5844
5856
|
var CONTENT_DIV_ID = 'contentDiv_';
|
|
5845
5857
|
var STYLE_ID = 'imageStyle';
|
|
5858
|
+
var DEFAULT_SELECTION_BORDER_COLOR = '#DB626C';
|
|
5846
5859
|
/**
|
|
5847
5860
|
* @internal
|
|
5848
5861
|
* Select a image and save data of the selected range
|
|
@@ -5851,23 +5864,21 @@ var STYLE_ID = 'imageStyle';
|
|
|
5851
5864
|
*/
|
|
5852
5865
|
var selectImage = function (core, image) {
|
|
5853
5866
|
unselect(core);
|
|
5867
|
+
var selection = null;
|
|
5854
5868
|
if (image) {
|
|
5855
5869
|
var range = (0, roosterjs_editor_dom_1.createRange)(image);
|
|
5856
5870
|
(0, addUniqueId_1.default)(image, IMAGE_ID);
|
|
5857
5871
|
(0, addUniqueId_1.default)(core.contentDiv, CONTENT_DIV_ID);
|
|
5858
5872
|
core.api.selectRange(core, (0, roosterjs_editor_dom_1.createRange)(new roosterjs_editor_dom_1.Position(image, -3 /* After */)));
|
|
5859
5873
|
select(core, image);
|
|
5860
|
-
|
|
5874
|
+
selection = {
|
|
5861
5875
|
type: 2 /* ImageSelection */,
|
|
5862
5876
|
ranges: [range],
|
|
5863
5877
|
image: image,
|
|
5864
5878
|
areAllCollapsed: range.collapsed,
|
|
5865
5879
|
};
|
|
5866
|
-
core.domEvent.imageSelectionRange = selection;
|
|
5867
|
-
return selection;
|
|
5868
5880
|
}
|
|
5869
|
-
|
|
5870
|
-
return null;
|
|
5881
|
+
return selection;
|
|
5871
5882
|
};
|
|
5872
5883
|
exports.selectImage = selectImage;
|
|
5873
5884
|
var select = function (core, image) {
|
|
@@ -5876,14 +5887,9 @@ var select = function (core, image) {
|
|
|
5876
5887
|
(0, addSelectionStyle_1.default)(core, borderCSS, STYLE_ID);
|
|
5877
5888
|
};
|
|
5878
5889
|
var buildBorderCSS = function (core, imageId) {
|
|
5879
|
-
var
|
|
5880
|
-
|
|
5881
|
-
|
|
5882
|
-
' #' +
|
|
5883
|
-
imageId +
|
|
5884
|
-
' { margin: -2px !important; border: 2px solid' +
|
|
5885
|
-
borderColor +
|
|
5886
|
-
' !important; }');
|
|
5890
|
+
var divId = core.contentDiv.id;
|
|
5891
|
+
var color = core.imageSelectionBorderColor || DEFAULT_SELECTION_BORDER_COLOR;
|
|
5892
|
+
return "#" + divId + " #" + imageId + " {outline-style: auto!important;outline-color: " + color + "!important;caret-color: transparent!important;}";
|
|
5887
5893
|
};
|
|
5888
5894
|
var unselect = function (core) {
|
|
5889
5895
|
var doc = core.contentDiv.ownerDocument;
|
|
@@ -6021,12 +6027,11 @@ function buildCss(table, coordinates, contentDivSelector) {
|
|
|
6021
6027
|
var ranges = [];
|
|
6022
6028
|
var firstSelected = null;
|
|
6023
6029
|
var lastSelected = null;
|
|
6024
|
-
var
|
|
6025
|
-
var isFirst = true;
|
|
6030
|
+
var selectors = [];
|
|
6026
6031
|
var vTable = new roosterjs_editor_dom_1.VTable(table);
|
|
6027
6032
|
// Get whether table has thead, tbody or tfoot.
|
|
6028
6033
|
var tableChildren = (0, roosterjs_editor_dom_1.toArray)(table.childNodes).filter(function (node) { return ['THEAD', 'TBODY', 'TFOOT'].indexOf((0, roosterjs_editor_dom_1.getTagOfNode)(node)) > -1; });
|
|
6029
|
-
// Set the start and end of each of the table
|
|
6034
|
+
// Set the start and end of each of the table children, so we can build the selector according the element between the table and the row.
|
|
6030
6035
|
var cont = 0;
|
|
6031
6036
|
var indexes = tableChildren.map(function (node) {
|
|
6032
6037
|
var result = {
|
|
@@ -6053,15 +6058,9 @@ function buildCss(table, coordinates, contentDivSelector) {
|
|
|
6053
6058
|
var tag = (0, roosterjs_editor_dom_1.getTagOfNode)(cell);
|
|
6054
6059
|
tdCount++;
|
|
6055
6060
|
if (rowIndex >= tr1 && rowIndex <= tr2 && cellIndex >= td1 && cellIndex <= td2) {
|
|
6056
|
-
if (isFirst) {
|
|
6057
|
-
isFirst = false;
|
|
6058
|
-
}
|
|
6059
|
-
else if (!css.endsWith(',')) {
|
|
6060
|
-
css += ',';
|
|
6061
|
-
}
|
|
6062
6061
|
removeImportant(cell);
|
|
6063
6062
|
var selector = generateCssFromCell(contentDivSelector, table.id, middleElSelector, currentRow, tag, tdCount);
|
|
6064
|
-
|
|
6063
|
+
selectors.push(selector);
|
|
6065
6064
|
firstSelected = firstSelected || table.querySelector(selector);
|
|
6066
6065
|
lastSelected = table.querySelector(selector);
|
|
6067
6066
|
}
|
|
@@ -6074,7 +6073,7 @@ function buildCss(table, coordinates, contentDivSelector) {
|
|
|
6074
6073
|
ranges.push(rowRange);
|
|
6075
6074
|
}
|
|
6076
6075
|
});
|
|
6077
|
-
css
|
|
6076
|
+
var css = selectors.join(',') + " {background-color: rgba(198,198,198,0.7) !important; caret-color: transparent}";
|
|
6078
6077
|
return { css: css, ranges: ranges };
|
|
6079
6078
|
}
|
|
6080
6079
|
function select(core, table, coordinates) {
|
|
@@ -6182,17 +6181,30 @@ var setContent = function (core, content, triggerContentChangedEvent, metadata)
|
|
|
6182
6181
|
};
|
|
6183
6182
|
exports.setContent = setContent;
|
|
6184
6183
|
function selectContentMetadata(core, metadata) {
|
|
6185
|
-
|
|
6186
|
-
|
|
6187
|
-
|
|
6188
|
-
|
|
6189
|
-
|
|
6190
|
-
|
|
6191
|
-
|
|
6192
|
-
|
|
6193
|
-
|
|
6194
|
-
|
|
6195
|
-
|
|
6184
|
+
if (!core.lifecycle.shadowEditSelectionPath && metadata) {
|
|
6185
|
+
core.domEvent.tableSelectionRange = null;
|
|
6186
|
+
core.domEvent.imageSelectionRange = null;
|
|
6187
|
+
core.domEvent.selectionRange = null;
|
|
6188
|
+
switch (metadata.type) {
|
|
6189
|
+
case 0 /* Normal */:
|
|
6190
|
+
core.api.selectTable(core, null);
|
|
6191
|
+
core.api.selectImage(core, null);
|
|
6192
|
+
var range = (0, roosterjs_editor_dom_1.createRange)(core.contentDiv, metadata.start, metadata.end);
|
|
6193
|
+
core.api.selectRange(core, range);
|
|
6194
|
+
break;
|
|
6195
|
+
case 1 /* TableSelection */:
|
|
6196
|
+
var table = (0, roosterjs_editor_dom_1.queryElements)(core.contentDiv, '#' + metadata.tableId)[0];
|
|
6197
|
+
if (table) {
|
|
6198
|
+
core.domEvent.tableSelectionRange = core.api.selectTable(core, table, metadata);
|
|
6199
|
+
}
|
|
6200
|
+
break;
|
|
6201
|
+
case 2 /* ImageSelection */:
|
|
6202
|
+
var image = (0, roosterjs_editor_dom_1.queryElements)(core.contentDiv, '#' + metadata.imageId)[0];
|
|
6203
|
+
if (image) {
|
|
6204
|
+
core.domEvent.imageSelectionRange = core.api.selectImage(core, image);
|
|
6205
|
+
}
|
|
6206
|
+
break;
|
|
6207
|
+
}
|
|
6196
6208
|
}
|
|
6197
6209
|
}
|
|
6198
6210
|
|
|
@@ -6646,7 +6658,7 @@ var CopyPastePlugin = /** @class */ (function () {
|
|
|
6646
6658
|
var html = this.editor.getContent(2 /* RawHTMLWithSelection */);
|
|
6647
6659
|
var tempDiv_1 = this.getTempDiv(this.editor, true /*forceInLightMode*/);
|
|
6648
6660
|
var metadata = (0, roosterjs_editor_dom_1.setHtmlWithMetadata)(tempDiv_1, html, this.editor.getTrustedHTMLHandler());
|
|
6649
|
-
var newRange =
|
|
6661
|
+
var newRange = null;
|
|
6650
6662
|
if (selection_1.type === 1 /* TableSelection */ &&
|
|
6651
6663
|
selection_1.coordinates) {
|
|
6652
6664
|
var table = tempDiv_1.querySelector("#" + selection_1.table.id);
|
|
@@ -6655,6 +6667,12 @@ var CopyPastePlugin = /** @class */ (function () {
|
|
|
6655
6667
|
this.deleteTableContent(this.editor, selection_1.table, selection_1.coordinates);
|
|
6656
6668
|
}
|
|
6657
6669
|
}
|
|
6670
|
+
else if (selection_1.type === 2 /* ImageSelection */) {
|
|
6671
|
+
var image = tempDiv_1.querySelector('#' + selection_1.image.id);
|
|
6672
|
+
if (image) {
|
|
6673
|
+
newRange = (0, roosterjs_editor_dom_1.createRange)(image);
|
|
6674
|
+
}
|
|
6675
|
+
}
|
|
6658
6676
|
else {
|
|
6659
6677
|
newRange =
|
|
6660
6678
|
(metadata === null || metadata === void 0 ? void 0 : metadata.type) === 0 /* Normal */
|
|
@@ -6702,17 +6720,16 @@ var CopyPastePlugin = /** @class */ (function () {
|
|
|
6702
6720
|
return div;
|
|
6703
6721
|
};
|
|
6704
6722
|
CopyPastePlugin.prototype.cleanUpAndRestoreSelection = function (tempDiv, range, isCopy) {
|
|
6705
|
-
var _a, _b;
|
|
6723
|
+
var _a, _b, _c;
|
|
6706
6724
|
if (!!((_a = range) === null || _a === void 0 ? void 0 : _a.type) || range.type == 0) {
|
|
6707
6725
|
var selection = range;
|
|
6708
6726
|
switch (selection.type) {
|
|
6709
6727
|
case 1 /* TableSelection */:
|
|
6710
|
-
|
|
6711
|
-
|
|
6712
|
-
}
|
|
6728
|
+
case 2 /* ImageSelection */:
|
|
6729
|
+
(_b = this.editor) === null || _b === void 0 ? void 0 : _b.select(selection);
|
|
6713
6730
|
break;
|
|
6714
6731
|
case 0 /* Normal */:
|
|
6715
|
-
var range_1 = (
|
|
6732
|
+
var range_1 = (_c = selection.ranges) === null || _c === void 0 ? void 0 : _c[0];
|
|
6716
6733
|
this.restoreRange(range_1, isCopy);
|
|
6717
6734
|
break;
|
|
6718
6735
|
}
|
|
@@ -6850,7 +6867,9 @@ var DOMEventPlugin = /** @class */ (function () {
|
|
|
6850
6867
|
});
|
|
6851
6868
|
};
|
|
6852
6869
|
this.onKeyboardEvent = function (event) {
|
|
6853
|
-
if ((0, roosterjs_editor_dom_1.isCharacterValue)(event)) {
|
|
6870
|
+
if ((0, roosterjs_editor_dom_1.isCharacterValue)(event) || (event.which >= 33 /* PAGEUP */ && event.which <= 40 /* DOWN */)) {
|
|
6871
|
+
// Stop propagation for Character keys and Up/Down/Left/Right/Home/End/PageUp/PageDown
|
|
6872
|
+
// since editor already handles these keys and no need to propagate to parents
|
|
6854
6873
|
event.stopPropagation();
|
|
6855
6874
|
}
|
|
6856
6875
|
};
|
|
@@ -8012,6 +8031,7 @@ var PendingFormatStatePlugin = /** @class */ (function () {
|
|
|
8012
8031
|
event.eventType == 0 /* KeyDown */ &&
|
|
8013
8032
|
(0, roosterjs_editor_dom_1.isCharacterValue)(event.rawEvent) &&
|
|
8014
8033
|
this.state.pendableFormatSpan) {
|
|
8034
|
+
this.state.pendableFormatSpan.removeAttribute('contentEditable');
|
|
8015
8035
|
this.editor.insertNode(this.state.pendableFormatSpan);
|
|
8016
8036
|
this.editor.select(this.state.pendableFormatSpan, -2 /* Before */, this.state.pendableFormatSpan, -1 /* End */);
|
|
8017
8037
|
this.clear();
|
|
@@ -8860,44 +8880,83 @@ var Editor = /** @class */ (function () {
|
|
|
8860
8880
|
};
|
|
8861
8881
|
Editor.prototype.select = function (arg1, arg2, arg3, arg4) {
|
|
8862
8882
|
var core = this.getCore();
|
|
8863
|
-
|
|
8864
|
-
|
|
8865
|
-
|
|
8866
|
-
this.triggerSelectionChanged(selection);
|
|
8867
|
-
return !!selection;
|
|
8883
|
+
var rangeEx = null;
|
|
8884
|
+
if (isSelectionRangeEx(arg1)) {
|
|
8885
|
+
rangeEx = arg1;
|
|
8868
8886
|
}
|
|
8869
|
-
else {
|
|
8870
|
-
|
|
8871
|
-
|
|
8887
|
+
else if ((0, roosterjs_editor_dom_1.safeInstanceOf)(arg1, 'HTMLTableElement') && isTableSelection(arg2)) {
|
|
8888
|
+
rangeEx = {
|
|
8889
|
+
type: 1 /* TableSelection */,
|
|
8890
|
+
ranges: [],
|
|
8891
|
+
areAllCollapsed: false,
|
|
8892
|
+
table: arg1,
|
|
8893
|
+
coordinates: arg2,
|
|
8894
|
+
};
|
|
8872
8895
|
}
|
|
8873
|
-
if (this.isFeatureEnabled("ImageSelection" /* ImageSelection */) &&
|
|
8896
|
+
else if (this.isFeatureEnabled("ImageSelection" /* ImageSelection */) &&
|
|
8874
8897
|
(0, roosterjs_editor_dom_1.safeInstanceOf)(arg1, 'HTMLImageElement') &&
|
|
8875
|
-
|
|
8876
|
-
|
|
8877
|
-
|
|
8878
|
-
|
|
8898
|
+
typeof arg2 == 'undefined') {
|
|
8899
|
+
rangeEx = {
|
|
8900
|
+
type: 2 /* ImageSelection */,
|
|
8901
|
+
ranges: [],
|
|
8902
|
+
areAllCollapsed: false,
|
|
8903
|
+
image: arg1,
|
|
8904
|
+
};
|
|
8879
8905
|
}
|
|
8880
8906
|
else {
|
|
8881
|
-
|
|
8907
|
+
var range = !arg1
|
|
8908
|
+
? null
|
|
8909
|
+
: (0, roosterjs_editor_dom_1.safeInstanceOf)(arg1, 'Range')
|
|
8910
|
+
? arg1
|
|
8911
|
+
: isSelectionPath(arg1)
|
|
8912
|
+
? (0, roosterjs_editor_dom_1.createRange)(core.contentDiv, arg1.start, arg1.end)
|
|
8913
|
+
: isNodePosition(arg1) || (0, roosterjs_editor_dom_1.safeInstanceOf)(arg1, 'Node')
|
|
8914
|
+
? (0, roosterjs_editor_dom_1.createRange)(arg1, arg2, arg3, arg4)
|
|
8915
|
+
: null;
|
|
8916
|
+
rangeEx = range
|
|
8917
|
+
? {
|
|
8918
|
+
type: 0 /* Normal */,
|
|
8919
|
+
ranges: [range],
|
|
8920
|
+
areAllCollapsed: range.collapsed,
|
|
8921
|
+
}
|
|
8922
|
+
: null;
|
|
8882
8923
|
}
|
|
8883
|
-
|
|
8884
|
-
|
|
8885
|
-
|
|
8886
|
-
|
|
8887
|
-
|
|
8888
|
-
|
|
8889
|
-
|
|
8890
|
-
|
|
8891
|
-
|
|
8892
|
-
|
|
8893
|
-
|
|
8894
|
-
|
|
8895
|
-
|
|
8896
|
-
|
|
8897
|
-
|
|
8898
|
-
|
|
8899
|
-
|
|
8900
|
-
|
|
8924
|
+
if (rangeEx) {
|
|
8925
|
+
switch (rangeEx.type) {
|
|
8926
|
+
case 1 /* TableSelection */:
|
|
8927
|
+
if (this.contains(rangeEx.table)) {
|
|
8928
|
+
core.domEvent.imageSelectionRange = core.api.selectImage(core, null);
|
|
8929
|
+
core.domEvent.tableSelectionRange = core.api.selectTable(core, rangeEx.table, rangeEx.coordinates);
|
|
8930
|
+
rangeEx = core.domEvent.tableSelectionRange;
|
|
8931
|
+
}
|
|
8932
|
+
break;
|
|
8933
|
+
case 2 /* ImageSelection */:
|
|
8934
|
+
if (this.contains(rangeEx.image)) {
|
|
8935
|
+
core.domEvent.tableSelectionRange = core.api.selectTable(core, null);
|
|
8936
|
+
core.domEvent.imageSelectionRange = core.api.selectImage(core, rangeEx.image);
|
|
8937
|
+
rangeEx = core.domEvent.imageSelectionRange;
|
|
8938
|
+
}
|
|
8939
|
+
break;
|
|
8940
|
+
case 0 /* Normal */:
|
|
8941
|
+
core.domEvent.tableSelectionRange = core.api.selectTable(core, null);
|
|
8942
|
+
core.domEvent.imageSelectionRange = core.api.selectImage(core, null);
|
|
8943
|
+
if (this.contains(rangeEx.ranges[0])) {
|
|
8944
|
+
core.api.selectRange(core, rangeEx.ranges[0]);
|
|
8945
|
+
}
|
|
8946
|
+
else {
|
|
8947
|
+
rangeEx = null;
|
|
8948
|
+
}
|
|
8949
|
+
break;
|
|
8950
|
+
}
|
|
8951
|
+
this.triggerPluginEvent(22 /* SelectionChanged */, {
|
|
8952
|
+
selectionRangeEx: rangeEx,
|
|
8953
|
+
}, true /** broadcast **/);
|
|
8954
|
+
}
|
|
8955
|
+
else {
|
|
8956
|
+
core.domEvent.tableSelectionRange = core.api.selectTable(core, null);
|
|
8957
|
+
core.domEvent.imageSelectionRange = core.api.selectImage(core, null);
|
|
8958
|
+
}
|
|
8959
|
+
return !!rangeEx;
|
|
8901
8960
|
};
|
|
8902
8961
|
/**
|
|
8903
8962
|
* Get current focused position. Return null if editor doesn't have focus at this time.
|
|
@@ -9379,6 +9438,31 @@ var Editor = /** @class */ (function () {
|
|
|
9379
9438
|
return Editor;
|
|
9380
9439
|
}());
|
|
9381
9440
|
exports.default = Editor;
|
|
9441
|
+
function isSelectionRangeEx(obj) {
|
|
9442
|
+
var rangeEx = obj;
|
|
9443
|
+
return (rangeEx &&
|
|
9444
|
+
typeof rangeEx == 'object' &&
|
|
9445
|
+
typeof rangeEx.type == 'number' &&
|
|
9446
|
+
Array.isArray(rangeEx.ranges));
|
|
9447
|
+
}
|
|
9448
|
+
function isTableSelection(obj) {
|
|
9449
|
+
var selection = obj;
|
|
9450
|
+
return (selection &&
|
|
9451
|
+
typeof selection == 'object' &&
|
|
9452
|
+
typeof selection.firstCell == 'object' &&
|
|
9453
|
+
typeof selection.lastCell == 'object');
|
|
9454
|
+
}
|
|
9455
|
+
function isSelectionPath(obj) {
|
|
9456
|
+
var path = obj;
|
|
9457
|
+
return path && typeof path == 'object' && Array.isArray(path.start) && Array.isArray(path.end);
|
|
9458
|
+
}
|
|
9459
|
+
function isNodePosition(obj) {
|
|
9460
|
+
var pos = obj;
|
|
9461
|
+
return (pos &&
|
|
9462
|
+
typeof pos == 'object' &&
|
|
9463
|
+
typeof pos.node == 'object' &&
|
|
9464
|
+
typeof pos.offset == 'number');
|
|
9465
|
+
}
|
|
9382
9466
|
|
|
9383
9467
|
|
|
9384
9468
|
/***/ }),
|
|
@@ -11365,6 +11449,7 @@ var safeInstanceOf_1 = __webpack_require__(/*! ../utils/safeInstanceOf */ "./pac
|
|
|
11365
11449
|
var setStyles_1 = __webpack_require__(/*! ../style/setStyles */ "./packages/roosterjs-editor-dom/lib/style/setStyles.ts");
|
|
11366
11450
|
var toArray_1 = __webpack_require__(/*! ../jsUtils/toArray */ "./packages/roosterjs-editor-dom/lib/jsUtils/toArray.ts");
|
|
11367
11451
|
var cloneObject_1 = __webpack_require__(/*! ./cloneObject */ "./packages/roosterjs-editor-dom/lib/htmlSanitizer/cloneObject.ts");
|
|
11452
|
+
var processCssVariable_1 = __webpack_require__(/*! ./processCssVariable */ "./packages/roosterjs-editor-dom/lib/htmlSanitizer/processCssVariable.ts");
|
|
11368
11453
|
var getAllowedValues_1 = __webpack_require__(/*! ./getAllowedValues */ "./packages/roosterjs-editor-dom/lib/htmlSanitizer/getAllowedValues.ts");
|
|
11369
11454
|
/**
|
|
11370
11455
|
* HTML sanitizer class provides two features:
|
|
@@ -11582,17 +11667,29 @@ var HtmlSanitizer = /** @class */ (function () {
|
|
|
11582
11667
|
var value = styles[name];
|
|
11583
11668
|
var callback = _this.styleCallbacks[name];
|
|
11584
11669
|
var isInheritable = thisStyle[name] != undefined;
|
|
11585
|
-
var keep =
|
|
11586
|
-
|
|
11587
|
-
value
|
|
11588
|
-
|
|
11589
|
-
|
|
11590
|
-
|
|
11591
|
-
|
|
11670
|
+
var keep = true;
|
|
11671
|
+
if (keep && !!callback) {
|
|
11672
|
+
keep = callback(value, element, thisStyle, context);
|
|
11673
|
+
}
|
|
11674
|
+
if (keep && (0, processCssVariable_1.isCssVariable)(value)) {
|
|
11675
|
+
value = (0, processCssVariable_1.processCssVariable)(value);
|
|
11676
|
+
keep = !!value;
|
|
11677
|
+
}
|
|
11678
|
+
keep =
|
|
11679
|
+
keep &&
|
|
11680
|
+
value != 'inherit' &&
|
|
11681
|
+
value.indexOf('expression') < 0 &&
|
|
11682
|
+
name.substr(0, 1) != '-' &&
|
|
11683
|
+
_this.defaultStyleValues[name] != value &&
|
|
11684
|
+
((isInheritable && value != thisStyle[name]) ||
|
|
11685
|
+
(!isInheritable && value != 'initial' && value != 'normal'));
|
|
11592
11686
|
if (keep && isInheritable) {
|
|
11593
11687
|
thisStyle[name] = value;
|
|
11594
11688
|
}
|
|
11595
|
-
if (
|
|
11689
|
+
if (keep) {
|
|
11690
|
+
styles[name] = value;
|
|
11691
|
+
}
|
|
11692
|
+
else {
|
|
11596
11693
|
delete styles[name];
|
|
11597
11694
|
}
|
|
11598
11695
|
});
|
|
@@ -12118,6 +12215,39 @@ function getPredefinedCssForElement(element, additionalPredefinedCssForElement)
|
|
|
12118
12215
|
exports.default = getPredefinedCssForElement;
|
|
12119
12216
|
|
|
12120
12217
|
|
|
12218
|
+
/***/ }),
|
|
12219
|
+
|
|
12220
|
+
/***/ "./packages/roosterjs-editor-dom/lib/htmlSanitizer/processCssVariable.ts":
|
|
12221
|
+
/*!*******************************************************************************!*\
|
|
12222
|
+
!*** ./packages/roosterjs-editor-dom/lib/htmlSanitizer/processCssVariable.ts ***!
|
|
12223
|
+
\*******************************************************************************/
|
|
12224
|
+
/*! no static exports found */
|
|
12225
|
+
/***/ (function(module, exports, __webpack_require__) {
|
|
12226
|
+
|
|
12227
|
+
"use strict";
|
|
12228
|
+
|
|
12229
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12230
|
+
exports.isCssVariable = exports.processCssVariable = void 0;
|
|
12231
|
+
var VARIABLE_REGEX = /^\s*var\(\s*[a-zA-Z0-9-_]+\s*(,\s*(.*))?\)\s*$/;
|
|
12232
|
+
var VARIABLE_PREFIX = 'var(';
|
|
12233
|
+
/**
|
|
12234
|
+
* @internal
|
|
12235
|
+
* Handle CSS variable format. e.g.: var(--name, fallbackValue)
|
|
12236
|
+
*/
|
|
12237
|
+
function processCssVariable(value) {
|
|
12238
|
+
var match = VARIABLE_REGEX.exec(value);
|
|
12239
|
+
return (match === null || match === void 0 ? void 0 : match[2]) || ''; // Without fallback value, we don't know what does the original value mean, so ignore it
|
|
12240
|
+
}
|
|
12241
|
+
exports.processCssVariable = processCssVariable;
|
|
12242
|
+
/**
|
|
12243
|
+
* @internal
|
|
12244
|
+
*/
|
|
12245
|
+
function isCssVariable(value) {
|
|
12246
|
+
return value.indexOf(VARIABLE_PREFIX) == 0;
|
|
12247
|
+
}
|
|
12248
|
+
exports.isCssVariable = isCssVariable;
|
|
12249
|
+
|
|
12250
|
+
|
|
12121
12251
|
/***/ }),
|
|
12122
12252
|
|
|
12123
12253
|
/***/ "./packages/roosterjs-editor-dom/lib/index.ts":
|
|
@@ -13624,7 +13754,7 @@ var VListChain = /** @class */ (function () {
|
|
|
13624
13754
|
var lastNumber = 0;
|
|
13625
13755
|
for (var i = 0; i < lists.length; i++) {
|
|
13626
13756
|
var list = lists[i];
|
|
13627
|
-
list.start = lastNumber + 1;
|
|
13757
|
+
list.start = list.start > 1 ? list.start : lastNumber + 1;
|
|
13628
13758
|
var vlist = new VList_1.default(list);
|
|
13629
13759
|
lastNumber = vlist.getLastItemNumber() || 0;
|
|
13630
13760
|
delete list.dataset[CHAIN_DATASET_NAME];
|
|
@@ -14387,16 +14517,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
14387
14517
|
*/
|
|
14388
14518
|
function setBulletListMarkers(li, listStyleType) {
|
|
14389
14519
|
var marker = bulletListStyle[listStyleType];
|
|
14390
|
-
var
|
|
14391
|
-
li.style.listStyleType =
|
|
14520
|
+
var isDisc = listStyleType === 1 /* Disc */;
|
|
14521
|
+
li.style.listStyleType = isDisc ? marker : "\"" + marker + "\"";
|
|
14392
14522
|
}
|
|
14393
14523
|
exports.default = setBulletListMarkers;
|
|
14394
14524
|
var bulletListStyle = (_a = {},
|
|
14395
14525
|
_a[1 /* Disc */] = 'disc',
|
|
14396
|
-
_a[3 /* Square */] = '
|
|
14526
|
+
_a[3 /* Square */] = '∎ ',
|
|
14397
14527
|
_a[2 /* Dash */] = '- ',
|
|
14398
|
-
_a[5 /* LongArrow */] = '
|
|
14399
|
-
_a[8 /* DoubleLongArrow */] = '
|
|
14528
|
+
_a[5 /* LongArrow */] = '➔ ',
|
|
14529
|
+
_a[8 /* DoubleLongArrow */] = '➔ ',
|
|
14400
14530
|
_a[4 /* ShortArrow */] = '➢ ',
|
|
14401
14531
|
_a[6 /* UnfilledArrow */] = '➪ ',
|
|
14402
14532
|
_a[7 /* Hyphen */] = '— ',
|
|
@@ -15870,6 +16000,11 @@ var TableContentMetadataDefinition = (0, definitionCreators_1.createObjectDefini
|
|
|
15870
16000
|
firstCell: CoordinatesDefinition,
|
|
15871
16001
|
lastCell: CoordinatesDefinition,
|
|
15872
16002
|
});
|
|
16003
|
+
var ImageContentMetadataDefinition = (0, definitionCreators_1.createObjectDefinition)({
|
|
16004
|
+
type: (0, definitionCreators_1.createNumberDefinition)(false /*isOptional*/, 2 /* ImageSelection */),
|
|
16005
|
+
isDarkMode: IsDarkModeDefinition,
|
|
16006
|
+
imageId: (0, definitionCreators_1.createStringDefinition)(),
|
|
16007
|
+
});
|
|
15873
16008
|
/**
|
|
15874
16009
|
* @deprecated Use setHtmlWithMetadata instead
|
|
15875
16010
|
* Restore inner HTML of a root element from given html string. If the string contains selection path,
|
|
@@ -15905,7 +16040,8 @@ function setHtmlWithMetadata(rootNode, html, trustedHTMLHandler) {
|
|
|
15905
16040
|
try {
|
|
15906
16041
|
var obj = JSON.parse(potentialMetadataComment.nodeValue || '');
|
|
15907
16042
|
if ((0, validate_1.default)(obj, NormalContentMetadataDefinition) ||
|
|
15908
|
-
(0, validate_1.default)(obj, TableContentMetadataDefinition)
|
|
16043
|
+
(0, validate_1.default)(obj, TableContentMetadataDefinition) ||
|
|
16044
|
+
(0, validate_1.default)(obj, ImageContentMetadataDefinition)) {
|
|
15909
16045
|
rootNode.removeChild(potentialMetadataComment);
|
|
15910
16046
|
obj.type = typeof obj.type === 'undefined' ? 0 /* Normal */ : obj.type;
|
|
15911
16047
|
obj.isDarkMode = obj.isDarkMode || false;
|
|
@@ -20157,7 +20293,7 @@ var DeleteBeforeEntityFeature = {
|
|
|
20157
20293
|
function cacheGetNeighborEntityElement(event, editor, isNext, collapseOnly, operation) {
|
|
20158
20294
|
var element = (0, roosterjs_editor_dom_1.cacheGetEventData)(event, 'NEIGHBOR_ENTITY_ELEMENT_' + isNext + '_' + collapseOnly, function () {
|
|
20159
20295
|
var range = editor.getSelectionRange();
|
|
20160
|
-
if (collapseOnly && !range.collapsed) {
|
|
20296
|
+
if (!range || (collapseOnly && !range.collapsed)) {
|
|
20161
20297
|
return null;
|
|
20162
20298
|
}
|
|
20163
20299
|
range.commonAncestorContainer.normalize();
|
|
@@ -20222,6 +20358,10 @@ var getAutoBulletListStyle_1 = __webpack_require__(/*! ../utils/getAutoBulletLis
|
|
|
20222
20358
|
var getAutoNumberingListStyle_1 = __webpack_require__(/*! ../utils/getAutoNumberingListStyle */ "./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getAutoNumberingListStyle.ts");
|
|
20223
20359
|
var roosterjs_editor_api_1 = __webpack_require__(/*! roosterjs-editor-api */ "./packages/roosterjs-editor-api/lib/index.ts");
|
|
20224
20360
|
var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./packages/roosterjs-editor-dom/lib/index.ts");
|
|
20361
|
+
var ListStyleDefinitionMetadata = (0, roosterjs_editor_dom_1.createObjectDefinition)({
|
|
20362
|
+
orderedStyleType: (0, roosterjs_editor_dom_1.createNumberDefinition)(true /** isOptional */, undefined /** value **/, 1 /* Min */, 20 /* Max */),
|
|
20363
|
+
unorderedStyleType: (0, roosterjs_editor_dom_1.createNumberDefinition)(true /** isOptional */, undefined /** value **/, 1 /* Min */, 9 /* Max */),
|
|
20364
|
+
}, true /** isOptional */, true /** allowNull */);
|
|
20225
20365
|
/**
|
|
20226
20366
|
* IndentWhenTab edit feature, provides the ability to indent current list when user press TAB
|
|
20227
20367
|
*/
|
|
@@ -20391,7 +20531,7 @@ var AutoBulletList = {
|
|
|
20391
20531
|
shouldHandleEvent: function (event, editor) {
|
|
20392
20532
|
if (!cacheGetListElement(event, editor) &&
|
|
20393
20533
|
editor.isFeatureEnabled("AutoFormatList" /* AutoFormatList */)) {
|
|
20394
|
-
return shouldTriggerList(event, editor, getAutoBulletListStyle_1.default);
|
|
20534
|
+
return shouldTriggerList(event, editor, getAutoBulletListStyle_1.default, 2 /* Unordered */);
|
|
20395
20535
|
}
|
|
20396
20536
|
return false;
|
|
20397
20537
|
},
|
|
@@ -20421,7 +20561,7 @@ var AutoNumberingList = {
|
|
|
20421
20561
|
shouldHandleEvent: function (event, editor) {
|
|
20422
20562
|
if (!cacheGetListElement(event, editor) &&
|
|
20423
20563
|
editor.isFeatureEnabled("AutoFormatList" /* AutoFormatList */)) {
|
|
20424
|
-
return shouldTriggerList(event, editor, getAutoNumberingListStyle_1.default);
|
|
20564
|
+
return shouldTriggerList(event, editor, getAutoNumberingListStyle_1.default, 1 /* Ordered */);
|
|
20425
20565
|
}
|
|
20426
20566
|
return false;
|
|
20427
20567
|
},
|
|
@@ -20434,21 +20574,42 @@ var AutoNumberingList = {
|
|
|
20434
20574
|
var textBeforeCursor = searcher.getSubStringBefore(5);
|
|
20435
20575
|
var textRange = searcher.getRangeFromText(textBeforeCursor, true /*exactMatch*/);
|
|
20436
20576
|
if (textRange) {
|
|
20437
|
-
var number =
|
|
20438
|
-
|
|
20439
|
-
|
|
20440
|
-
|
|
20441
|
-
var isLi = previousNode
|
|
20442
|
-
? (0, roosterjs_editor_dom_1.getTagOfNode)(previousNode === null || previousNode === void 0 ? void 0 : previousNode.collapseToSingleElement()) === 'LI'
|
|
20443
|
-
: false;
|
|
20577
|
+
var number = isFirstItemOfAList(textBeforeCursor)
|
|
20578
|
+
? 1
|
|
20579
|
+
: parseInt(textBeforeCursor);
|
|
20580
|
+
var isLi = getPreviousList(editor, textRange);
|
|
20444
20581
|
var listStyle = (0, getAutoNumberingListStyle_1.default)(textBeforeCursor);
|
|
20445
20582
|
prepareAutoBullet(editor, textRange);
|
|
20446
|
-
(0, roosterjs_editor_api_1.toggleNumbering)(editor, isLi ? undefined : number /** startNumber */, listStyle, 'autoToggleList' /** apiNameOverride */);
|
|
20583
|
+
(0, roosterjs_editor_api_1.toggleNumbering)(editor, isLi && number !== 1 ? undefined : number /** startNumber */, listStyle, 'autoToggleList' /** apiNameOverride */);
|
|
20447
20584
|
}
|
|
20448
20585
|
(_a = searcher.getRangeFromText(textBeforeCursor, true /*exactMatch*/)) === null || _a === void 0 ? void 0 : _a.deleteContents();
|
|
20449
20586
|
}, null /*changeSource*/, true /*canUndoByBackspace*/);
|
|
20450
20587
|
},
|
|
20451
20588
|
};
|
|
20589
|
+
var getPreviousList = function (editor, textRange) {
|
|
20590
|
+
var _a;
|
|
20591
|
+
var previousNode = (_a = editor
|
|
20592
|
+
.getBodyTraverser(textRange === null || textRange === void 0 ? void 0 : textRange.startContainer)
|
|
20593
|
+
.getPreviousBlockElement()) === null || _a === void 0 ? void 0 : _a.collapseToSingleElement();
|
|
20594
|
+
return (0, roosterjs_editor_dom_1.getTagOfNode)(previousNode) === 'LI' ? previousNode : undefined;
|
|
20595
|
+
};
|
|
20596
|
+
var getPreviousListType = function (editor, textRange, listType) {
|
|
20597
|
+
var type = listType === 1 /* Ordered */ ? 'orderedStyleType' : 'unorderedStyleType';
|
|
20598
|
+
var previousNode = getPreviousList(editor, textRange);
|
|
20599
|
+
return previousNode && (0, roosterjs_editor_dom_1.getTagOfNode)(previousNode) === 'LI'
|
|
20600
|
+
? (0, roosterjs_editor_dom_1.getMetadata)(previousNode.parentElement, ListStyleDefinitionMetadata)[type]
|
|
20601
|
+
: null;
|
|
20602
|
+
};
|
|
20603
|
+
var isFirstItemOfAList = function (item) {
|
|
20604
|
+
var number = parseInt(item);
|
|
20605
|
+
if (number && number === 1) {
|
|
20606
|
+
return 1;
|
|
20607
|
+
}
|
|
20608
|
+
else {
|
|
20609
|
+
var letter = item.replace(/\(|\)|\-|\./g, '').trim();
|
|
20610
|
+
return letter.length === 1 && ['i', 'a', 'I', 'A'].indexOf(letter) > -1 ? 1 : undefined;
|
|
20611
|
+
}
|
|
20612
|
+
};
|
|
20452
20613
|
/**
|
|
20453
20614
|
* Maintain the list numbers in list chain
|
|
20454
20615
|
* e.g. we have two lists:
|
|
@@ -20511,14 +20672,23 @@ function cacheGetListElement(event, editor) {
|
|
|
20511
20672
|
var listElement = li && (0, roosterjs_editor_dom_1.getTagOfNode)(li) == 'LI' && editor.getElementAtCursor('UL,OL', li);
|
|
20512
20673
|
return listElement ? [listElement, li] : null;
|
|
20513
20674
|
}
|
|
20514
|
-
function shouldTriggerList(event, editor, getListStyle) {
|
|
20675
|
+
function shouldTriggerList(event, editor, getListStyle, listType) {
|
|
20515
20676
|
var searcher = editor.getContentSearcherOfCursor(event);
|
|
20516
20677
|
var textBeforeCursor = searcher.getSubStringBefore(4);
|
|
20517
20678
|
var itHasSpace = /\s/g.test(textBeforeCursor);
|
|
20518
20679
|
var listChains = getListChains(editor);
|
|
20680
|
+
var textRange = searcher.getRangeFromText(textBeforeCursor, true /*exactMatch*/);
|
|
20681
|
+
var previousListType = getPreviousListType(editor, textRange, listType);
|
|
20682
|
+
var isFirstItem = isFirstItemOfAList(textBeforeCursor);
|
|
20683
|
+
var listStyle = getListStyle(textBeforeCursor, listChains, previousListType);
|
|
20684
|
+
var shouldTriggerNewListStyle = isFirstItem ||
|
|
20685
|
+
!previousListType ||
|
|
20686
|
+
previousListType === listStyle ||
|
|
20687
|
+
listType === 2 /* Unordered */;
|
|
20519
20688
|
return (!itHasSpace &&
|
|
20520
20689
|
!searcher.getNearestNonTextInlineElement() &&
|
|
20521
|
-
|
|
20690
|
+
listStyle &&
|
|
20691
|
+
shouldTriggerNewListStyle);
|
|
20522
20692
|
}
|
|
20523
20693
|
/**
|
|
20524
20694
|
* @internal
|
|
@@ -20581,8 +20751,12 @@ function cacheGetRangeForMarkdownOperation(event, editor, triggerCharacter) {
|
|
|
20581
20751
|
if (inlineTextContent[inlineTextContent.length - 1].trim().length == 0) {
|
|
20582
20752
|
return false;
|
|
20583
20753
|
}
|
|
20754
|
+
//if the text is pasted, it might create a inner element inside the text element,
|
|
20755
|
+
// then is necessary to check the parent block to get whole text
|
|
20756
|
+
var parentBlockText = textInlineElement.getParentBlock().getTextContent();
|
|
20584
20757
|
// special case for consecutive trigger characters
|
|
20585
|
-
|
|
20758
|
+
// check parent block in case of pasted text
|
|
20759
|
+
if (parentBlockText[parentBlockText.length - 1].trim() === triggerCharacter) {
|
|
20586
20760
|
return false;
|
|
20587
20761
|
}
|
|
20588
20762
|
if (!endPosition) {
|
|
@@ -21367,24 +21541,42 @@ var characters = {
|
|
|
21367
21541
|
'-': 2 /* Dash */,
|
|
21368
21542
|
')': 3 /* Parenthesis */,
|
|
21369
21543
|
};
|
|
21544
|
+
var lowerRomanTypes = [
|
|
21545
|
+
13 /* LowerRoman */,
|
|
21546
|
+
16 /* LowerRomanDash */,
|
|
21547
|
+
15 /* LowerRomanDoubleParenthesis */,
|
|
21548
|
+
14 /* LowerRomanParenthesis */,
|
|
21549
|
+
];
|
|
21550
|
+
var upperRomanTypes = [
|
|
21551
|
+
17 /* UpperRoman */,
|
|
21552
|
+
20 /* UpperRomanDash */,
|
|
21553
|
+
19 /* UpperRomanDoubleParenthesis */,
|
|
21554
|
+
18 /* UpperRomanParenthesis */,
|
|
21555
|
+
];
|
|
21370
21556
|
var numberingTriggers = ['1', 'a', 'A', 'I', 'i'];
|
|
21371
|
-
var
|
|
21557
|
+
var lowerRomanNumbers = ['i', 'v', 'x', 'l', 'c', 'd', 'm'];
|
|
21558
|
+
var upperRomanNumbers = ['I', 'V', 'X', 'L', 'C', 'D', 'M'];
|
|
21559
|
+
var identifyNumberingType = function (text, previousListStyle) {
|
|
21372
21560
|
if (!isNaN(parseInt(text))) {
|
|
21373
21561
|
return 1 /* Decimal */;
|
|
21374
21562
|
}
|
|
21375
21563
|
else if (/[a-z]+/g.test(text)) {
|
|
21376
|
-
if (
|
|
21564
|
+
if ((lowerRomanTypes.indexOf(previousListStyle) > -1 &&
|
|
21565
|
+
lowerRomanNumbers.indexOf(text[0]) > -1) ||
|
|
21566
|
+
(!previousListStyle && text === 'i')) {
|
|
21377
21567
|
return 4 /* LowerRoman */;
|
|
21378
21568
|
}
|
|
21379
|
-
else {
|
|
21569
|
+
else if (previousListStyle || (!previousListStyle && text === 'a')) {
|
|
21380
21570
|
return 2 /* LowerAlpha */;
|
|
21381
21571
|
}
|
|
21382
21572
|
}
|
|
21383
21573
|
else if (/[A-Z]+/g.test(text)) {
|
|
21384
|
-
if (
|
|
21574
|
+
if ((upperRomanTypes.indexOf(previousListStyle) > -1 &&
|
|
21575
|
+
upperRomanNumbers.indexOf(text[0]) > -1) ||
|
|
21576
|
+
(!previousListStyle && text === 'I')) {
|
|
21385
21577
|
return 5 /* UpperRoman */;
|
|
21386
21578
|
}
|
|
21387
|
-
else {
|
|
21579
|
+
else if (previousListStyle || (!previousListStyle && text === 'A')) {
|
|
21388
21580
|
return 3 /* UpperAlpha */;
|
|
21389
21581
|
}
|
|
21390
21582
|
}
|
|
@@ -21426,14 +21618,14 @@ var DecimalsTypes = (_f = {},
|
|
|
21426
21618
|
_f[3 /* Parenthesis */] = 3 /* DecimalParenthesis */,
|
|
21427
21619
|
_f[4 /* DoubleParenthesis */] = 4 /* DecimalDoubleParenthesis */,
|
|
21428
21620
|
_f);
|
|
21429
|
-
var identifyNumberingListType = function (numbering, isDoubleParenthesis) {
|
|
21621
|
+
var identifyNumberingListType = function (numbering, isDoubleParenthesis, previousListStyle) {
|
|
21430
21622
|
var separatorCharacter = isDoubleParenthesis
|
|
21431
21623
|
? 4 /* DoubleParenthesis */
|
|
21432
|
-
: characters[numbering[1]];
|
|
21624
|
+
: characters[numbering[numbering.length - 1]];
|
|
21433
21625
|
// if separator is not valid, no need to check if the number is valid.
|
|
21434
21626
|
if (separatorCharacter) {
|
|
21435
|
-
var number = numbering
|
|
21436
|
-
var numberingType = identifyNumberingType(number);
|
|
21627
|
+
var number = isDoubleParenthesis ? numbering.slice(1, -1) : numbering.slice(0, -1);
|
|
21628
|
+
var numberingType = identifyNumberingType(number, previousListStyle);
|
|
21437
21629
|
return numberingType ? numberingListTypes[numberingType](separatorCharacter) : null;
|
|
21438
21630
|
}
|
|
21439
21631
|
return null;
|
|
@@ -21441,10 +21633,11 @@ var identifyNumberingListType = function (numbering, isDoubleParenthesis) {
|
|
|
21441
21633
|
/**
|
|
21442
21634
|
* @internal
|
|
21443
21635
|
* @param textBeforeCursor The trigger character
|
|
21444
|
-
* @param previousListChain
|
|
21636
|
+
* @param previousListChain @optional This parameters is used to keep the list chain, if the is not a new list
|
|
21637
|
+
* @param previousListStyle @optional The list style of the previous list
|
|
21445
21638
|
* @returns The style of a numbering list triggered by a string
|
|
21446
21639
|
*/
|
|
21447
|
-
function getAutoNumberingListStyle(textBeforeCursor, previousListChain) {
|
|
21640
|
+
function getAutoNumberingListStyle(textBeforeCursor, previousListChain, previousListStyle) {
|
|
21448
21641
|
var _a;
|
|
21449
21642
|
var trigger = textBeforeCursor.trim();
|
|
21450
21643
|
//Only the staring items ['1', 'a', 'A', 'I', 'i'] must trigger a new list. All the other triggers is used to keep the list chain.
|
|
@@ -21458,12 +21651,8 @@ function getAutoNumberingListStyle(textBeforeCursor, previousListChain) {
|
|
|
21458
21651
|
return null;
|
|
21459
21652
|
}
|
|
21460
21653
|
}
|
|
21461
|
-
|
|
21462
|
-
|
|
21463
|
-
var isDoubleParenthesis = trigger.length === 3 && trigger[0] === '(' && trigger[2] === ')';
|
|
21464
|
-
var numberingType = trigger.length === 2 || isDoubleParenthesis
|
|
21465
|
-
? identifyNumberingListType(trigger, isDoubleParenthesis)
|
|
21466
|
-
: null;
|
|
21654
|
+
var isDoubleParenthesis = trigger[0] === '(' && trigger[trigger.length - 1] === ')';
|
|
21655
|
+
var numberingType = identifyNumberingListType(trigger, isDoubleParenthesis, previousListStyle);
|
|
21467
21656
|
return numberingType;
|
|
21468
21657
|
}
|
|
21469
21658
|
exports.default = getAutoNumberingListStyle;
|
|
@@ -22694,7 +22883,7 @@ var editInfo_1 = __webpack_require__(/*! ../editInfoUtils/editInfo */ "./package
|
|
|
22694
22883
|
function resizeByPercentage(editor, image, percentage, minWidth, minHeight) {
|
|
22695
22884
|
var editInfo = (0, editInfo_1.getEditInfoFromImage)(image);
|
|
22696
22885
|
if (!(0, isResizedTo_1.default)(image, percentage)) {
|
|
22697
|
-
loadImage(image,
|
|
22886
|
+
loadImage(image, image.src, function () {
|
|
22698
22887
|
if (!editor.isDisposed() && editor.contains(image)) {
|
|
22699
22888
|
var lastSrc_1 = image.getAttribute('src');
|
|
22700
22889
|
var _a = (0, getTargetSizeByPercentage_1.default)(editInfo, percentage), width = _a.width, height = _a.height;
|
|
@@ -22883,7 +23072,7 @@ function areSameNumber(n1, n2) {
|
|
|
22883
23072
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22884
23073
|
exports.getEditInfoFromImage = exports.deleteEditInfo = exports.saveEditInfo = void 0;
|
|
22885
23074
|
var checkEditInfoState_1 = __webpack_require__(/*! ./checkEditInfoState */ "./packages/roosterjs-editor-plugins/lib/plugins/ImageEdit/editInfoUtils/checkEditInfoState.ts");
|
|
22886
|
-
var
|
|
23075
|
+
var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./packages/roosterjs-editor-dom/lib/index.ts");
|
|
22887
23076
|
/**
|
|
22888
23077
|
* @internal
|
|
22889
23078
|
* Save edit info to image
|
|
@@ -22892,7 +23081,7 @@ var IMAGE_EDIT_INFO_NAME = 'roosterEditInfo';
|
|
|
22892
23081
|
*/
|
|
22893
23082
|
function saveEditInfo(image, editInfo) {
|
|
22894
23083
|
if (image) {
|
|
22895
|
-
|
|
23084
|
+
(0, roosterjs_editor_dom_1.setMetadata)(image, editInfo);
|
|
22896
23085
|
}
|
|
22897
23086
|
}
|
|
22898
23087
|
exports.saveEditInfo = saveEditInfo;
|
|
@@ -22903,7 +23092,7 @@ exports.saveEditInfo = saveEditInfo;
|
|
|
22903
23092
|
*/
|
|
22904
23093
|
function deleteEditInfo(image) {
|
|
22905
23094
|
if (image) {
|
|
22906
|
-
|
|
23095
|
+
(0, roosterjs_editor_dom_1.removeMetadata)(image);
|
|
22907
23096
|
}
|
|
22908
23097
|
}
|
|
22909
23098
|
exports.deleteEditInfo = deleteEditInfo;
|
|
@@ -22916,7 +23105,7 @@ exports.deleteEditInfo = deleteEditInfo;
|
|
|
22916
23105
|
* @param image The image to get edit info from
|
|
22917
23106
|
*/
|
|
22918
23107
|
function getEditInfoFromImage(image) {
|
|
22919
|
-
var obj =
|
|
23108
|
+
var obj = (0, roosterjs_editor_dom_1.getMetadata)(image);
|
|
22920
23109
|
return (0, checkEditInfoState_1.default)(obj) == 0 /* Invalid */ ? getInitialEditInfo(image) : obj;
|
|
22921
23110
|
}
|
|
22922
23111
|
exports.getEditInfoFromImage = getEditInfoFromImage;
|
|
@@ -22934,14 +23123,6 @@ function getInitialEditInfo(image) {
|
|
|
22934
23123
|
angleRad: 0,
|
|
22935
23124
|
};
|
|
22936
23125
|
}
|
|
22937
|
-
function safeParseJSON(json) {
|
|
22938
|
-
try {
|
|
22939
|
-
return JSON.parse(json);
|
|
22940
|
-
}
|
|
22941
|
-
catch (_a) {
|
|
22942
|
-
return null;
|
|
22943
|
-
}
|
|
22944
|
-
}
|
|
22945
23126
|
|
|
22946
23127
|
|
|
22947
23128
|
/***/ }),
|
|
@@ -26326,7 +26507,8 @@ var TableCellSelection = /** @class */ (function () {
|
|
|
26326
26507
|
*/
|
|
26327
26508
|
TableCellSelection.prototype.handleKeyDownEvent = function (event) {
|
|
26328
26509
|
var _this = this;
|
|
26329
|
-
var _a
|
|
26510
|
+
var _a;
|
|
26511
|
+
var _b = event.rawEvent, shiftKey = _b.shiftKey, ctrlKey = _b.ctrlKey, metaKey = _b.metaKey, which = _b.which, defaultPrevented = _b.defaultPrevented;
|
|
26330
26512
|
if ((shiftKey && (ctrlKey || metaKey)) || which == 16 /* SHIFT */ || defaultPrevented) {
|
|
26331
26513
|
this.preventKeyUp = defaultPrevented;
|
|
26332
26514
|
return;
|
|
@@ -26362,6 +26544,10 @@ var TableCellSelection = /** @class */ (function () {
|
|
|
26362
26544
|
}
|
|
26363
26545
|
});
|
|
26364
26546
|
}
|
|
26547
|
+
else if (((_a = this.editor.getSelectionRangeEx()) === null || _a === void 0 ? void 0 : _a.type) == 1 /* TableSelection */ &&
|
|
26548
|
+
(!(0, roosterjs_editor_dom_1.isCtrlOrMetaPressed)(event.rawEvent) || which == 36 /* HOME */ || which == 35 /* END */)) {
|
|
26549
|
+
this.editor.select(null);
|
|
26550
|
+
}
|
|
26365
26551
|
};
|
|
26366
26552
|
TableCellSelection.prototype.handleKeyUpEvent = function (event) {
|
|
26367
26553
|
var _a = event.rawEvent, shiftKey = _a.shiftKey, which = _a.which, ctrlKey = _a.ctrlKey;
|
|
@@ -27242,9 +27428,7 @@ var TableEditor = /** @class */ (function () {
|
|
|
27242
27428
|
var rows = vTable.cells.length - 1;
|
|
27243
27429
|
var lastCellIndex_1 = 0;
|
|
27244
27430
|
vTable.cells[rows].forEach(function (cell, index) {
|
|
27245
|
-
|
|
27246
|
-
lastCellIndex_1 = index;
|
|
27247
|
-
}
|
|
27431
|
+
lastCellIndex_1 = index;
|
|
27248
27432
|
});
|
|
27249
27433
|
var selection = {
|
|
27250
27434
|
firstCell: {
|
|
@@ -29070,6 +29254,8 @@ var CompatibleKeys;
|
|
|
29070
29254
|
CompatibleKeys[CompatibleKeys["ESCAPE"] = 27] = "ESCAPE";
|
|
29071
29255
|
CompatibleKeys[CompatibleKeys["SPACE"] = 32] = "SPACE";
|
|
29072
29256
|
CompatibleKeys[CompatibleKeys["PAGEUP"] = 33] = "PAGEUP";
|
|
29257
|
+
CompatibleKeys[CompatibleKeys["END"] = 35] = "END";
|
|
29258
|
+
CompatibleKeys[CompatibleKeys["HOME"] = 36] = "HOME";
|
|
29073
29259
|
CompatibleKeys[CompatibleKeys["LEFT"] = 37] = "LEFT";
|
|
29074
29260
|
CompatibleKeys[CompatibleKeys["UP"] = 38] = "UP";
|
|
29075
29261
|
CompatibleKeys[CompatibleKeys["RIGHT"] = 39] = "RIGHT";
|