roosterjs 8.22.1 → 8.23.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.
@@ -2929,23 +2929,28 @@ exports.default = insertEntity;
2929
2929
 
2930
2930
  Object.defineProperty(exports, "__esModule", { value: true });
2931
2931
  var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./packages/roosterjs-editor-dom/lib/index.ts");
2932
- function insertImage(editor, imageFile) {
2932
+ function insertImage(editor, imageFile, attributes) {
2933
2933
  if (typeof imageFile == 'string') {
2934
- insertImageWithSrc(editor, imageFile);
2934
+ insertImageWithSrc(editor, imageFile, attributes);
2935
2935
  }
2936
2936
  else {
2937
2937
  (0, roosterjs_editor_dom_1.readFile)(imageFile, function (dataUrl) {
2938
2938
  if (dataUrl && !editor.isDisposed()) {
2939
- insertImageWithSrc(editor, dataUrl);
2939
+ insertImageWithSrc(editor, dataUrl, attributes);
2940
2940
  }
2941
2941
  });
2942
2942
  }
2943
2943
  }
2944
2944
  exports.default = insertImage;
2945
- function insertImageWithSrc(editor, src) {
2945
+ function insertImageWithSrc(editor, src, attributes) {
2946
2946
  editor.addUndoSnapshot(function () {
2947
2947
  var image = editor.getDocument().createElement('img');
2948
2948
  image.src = src;
2949
+ if (attributes) {
2950
+ Object.keys(attributes).forEach(function (attribute) {
2951
+ return image.setAttribute(attribute, attributes[attribute]);
2952
+ });
2953
+ }
2949
2954
  image.style.maxWidth = '100%';
2950
2955
  editor.insertNode(image);
2951
2956
  }, "Format" /* Format */);
@@ -3568,9 +3573,10 @@ var toggleListType_1 = __webpack_require__(/*! ../utils/toggleListType */ "./pac
3568
3573
  * If selection contains both bullet/numbering and normal text, the behavior is decided by corresponding
3569
3574
  * browser execCommand API
3570
3575
  * @param editor The editor instance
3576
+ * @param listStyle (Optional) the style of the bullet list. If not defined, the style will be set to disc.
3571
3577
  */
3572
- function toggleBullet(editor) {
3573
- (0, toggleListType_1.default)(editor, 2 /* Unordered */);
3578
+ function toggleBullet(editor, listStyle) {
3579
+ (0, toggleListType_1.default)(editor, 2 /* Unordered */, undefined /* startNumber */, false /* includeSiblingLists */, listStyle);
3574
3580
  }
3575
3581
  exports.default = toggleBullet;
3576
3582
 
@@ -3718,9 +3724,10 @@ var toggleListType_1 = __webpack_require__(/*! ../utils/toggleListType */ "./pac
3718
3724
  * realization of browser execCommand API
3719
3725
  * @param editor The editor instance
3720
3726
  * @param startNumber (Optional) Start number of the list
3727
+ * @param listStyle (Optional) The style of the numbering list. If not defined, the style will be set to decimal.
3721
3728
  */
3722
- function toggleNumbering(editor, startNumber) {
3723
- (0, toggleListType_1.default)(editor, 1 /* Ordered */, startNumber);
3729
+ function toggleNumbering(editor, startNumber, listStyle) {
3730
+ (0, toggleListType_1.default)(editor, 1 /* Ordered */, startNumber, undefined /* includeSiblingLists */, listStyle);
3724
3731
  }
3725
3732
  exports.default = toggleNumbering;
3726
3733
 
@@ -4476,8 +4483,9 @@ var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./
4476
4483
  * @param listType The list type to toggle
4477
4484
  * @param startNumber (Optional) Start number of the list
4478
4485
  * @param includeSiblingLists Sets wether the operation should include Sibling Lists, by default true
4486
+ * @param listStyle (Optional) the style of an ordered or unordered list. If If not defined, the style will be set to disc or decimal.
4479
4487
  */
4480
- function toggleListType(editor, listType, startNumber, includeSiblingLists) {
4488
+ function toggleListType(editor, listType, startNumber, includeSiblingLists, listStyle) {
4481
4489
  if (includeSiblingLists === void 0) { includeSiblingLists = true; }
4482
4490
  (0, blockFormat_1.default)(editor, function (region, start, end, chains) {
4483
4491
  var _a;
@@ -4487,6 +4495,9 @@ function toggleListType(editor, listType, startNumber, includeSiblingLists) {
4487
4495
  : (0, roosterjs_editor_dom_1.createVListFromRegion)(region, includeSiblingLists);
4488
4496
  if (vList) {
4489
4497
  vList.changeListType(start, end, listType);
4498
+ if (listStyle && editor.isFeatureEnabled("AutoFormatList" /* AutoFormatList */)) {
4499
+ vList.setListStyleType(listStyle);
4500
+ }
4490
4501
  vList.writeBack();
4491
4502
  }
4492
4503
  });
@@ -6152,12 +6163,14 @@ var CopyPastePlugin = /** @class */ (function () {
6152
6163
  function CopyPastePlugin(options) {
6153
6164
  var _this = this;
6154
6165
  this.onPaste = function (event) {
6166
+ var _a;
6155
6167
  var range;
6156
- (0, roosterjs_editor_dom_1.extractClipboardEvent)(event, function (clipboardData) { return _this.editor.paste(clipboardData); }, {
6157
- allowLinkPreview: _this.editor.isFeatureEnabled("PasteWithLinkPreview" /* PasteWithLinkPreview */),
6168
+ (0, roosterjs_editor_dom_1.extractClipboardEvent)(event, function (clipboardData) { var _a; return (_a = _this.editor) === null || _a === void 0 ? void 0 : _a.paste(clipboardData); }, {
6169
+ allowLinkPreview: (_a = _this.editor) === null || _a === void 0 ? void 0 : _a.isFeatureEnabled("PasteWithLinkPreview" /* PasteWithLinkPreview */),
6158
6170
  allowedCustomPasteType: _this.state.allowedCustomPasteType,
6159
6171
  getTempDiv: function () {
6160
- range = _this.editor.getSelectionRange();
6172
+ var _a;
6173
+ range = (_a = _this.editor) === null || _a === void 0 ? void 0 : _a.getSelectionRange();
6161
6174
  return _this.getTempDiv();
6162
6175
  },
6163
6176
  removeTempDiv: function (div) {
@@ -7634,7 +7647,8 @@ var UndoPlugin = /** @class */ (function () {
7634
7647
  UndoPlugin.prototype.onKeyDown = function (evt) {
7635
7648
  // Handle backspace/delete when there is a selection to take a snapshot
7636
7649
  // since we want the state prior to deletion restorable
7637
- if (evt.which == 8 /* BACKSPACE */ || evt.which == 46 /* DELETE */) {
7650
+ // Ignore if keycombo is ALT+BACKSPACE
7651
+ if ((evt.which == 8 /* BACKSPACE */ && !evt.altKey) || evt.which == 46 /* DELETE */) {
7638
7652
  if (evt.which == 8 /* BACKSPACE */ && this.canUndoAutoComplete()) {
7639
7653
  evt.preventDefault();
7640
7654
  this.editor.undo();
@@ -9669,11 +9683,24 @@ var SelectionBlockScoper = /** @class */ (function () {
9669
9683
  * @param startFrom Where to start, can be Begin, End, SelectionStart
9670
9684
  */
9671
9685
  function SelectionBlockScoper(rootNode, position, startFrom) {
9686
+ var _a;
9672
9687
  this.rootNode = rootNode;
9673
9688
  this.startFrom = startFrom;
9674
- position = (0, safeInstanceOf_1.default)(position, 'Range') ? Position_1.default.getStart(position) : position;
9675
- this.position = position.normalize();
9676
- this.block = (0, getBlockElementAtNode_1.default)(this.rootNode, this.position.node);
9689
+ // Debugging info, will be removed later
9690
+ var isPosition = false;
9691
+ if ((0, safeInstanceOf_1.default)(position, 'Range')) {
9692
+ position = Position_1.default.getStart(position);
9693
+ }
9694
+ else {
9695
+ isPosition = true;
9696
+ }
9697
+ try {
9698
+ this.position = position.normalize();
9699
+ this.block = (0, getBlockElementAtNode_1.default)(this.rootNode, this.position.node);
9700
+ }
9701
+ catch (e) {
9702
+ throw new Error(((_a = e) === null || _a === void 0 ? void 0 : _a.message) + "; isPosition: " + isPosition + "; actual type: " + typeof position + "; String name: " + (typeof (position === null || position === void 0 ? void 0 : position.toString) === 'function' ? position.toString() : 'No toString()'));
9703
+ }
9677
9704
  }
9678
9705
  /**
9679
9706
  * Get the start block element
@@ -11231,7 +11258,8 @@ exports.default = getPredefinedCssForElement;
11231
11258
 
11232
11259
  Object.defineProperty(exports, "__esModule", { value: true });
11233
11260
  exports.KnownCreateElementData = exports.createElement = exports.matchesSelector = exports.setColor = exports.getInnerHTML = exports.readFile = exports.safeInstanceOf = exports.toArray = exports.normalizeRect = exports.splitTextNode = exports.getLastLeafNode = exports.getFirstLeafNode = exports.getPreviousLeafSibling = exports.getNextLeafSibling = exports.wrap = exports.unwrap = exports.splitBalancedNodeRange = exports.splitParentNode = exports.queryElements = exports.matchLink = exports.isVoidHtmlElement = exports.isNodeEmpty = exports.isBlockElement = exports.getTagOfNode = exports.PendableFormatCommandMap = exports.getPendableFormatState = exports.getComputedStyle = exports.getComputedStyles = exports.fromHtml = exports.findClosestElementAncestor = exports.contains = exports.collapseNodes = exports.changeElementTag = exports.applyFormat = exports.getBrowserInfo = exports.Browser = exports.arrayPush = exports.extractClipboardItemsForIE = exports.extractClipboardItems = exports.extractClipboardEvent = exports.applyTextStyle = exports.PartialInlineElement = exports.NodeInlineElement = exports.LinkInlineElement = exports.ImageInlineElement = exports.getInlineElementAtNode = exports.PositionContentSearcher = exports.ContentTraverser = exports.getFirstLastBlockElement = exports.getBlockElementAtNode = void 0;
11234
- exports.getTextContent = exports.deleteSelectedContent = exports.adjustInsertPosition = exports.setStyles = exports.getStyles = exports.isCtrlOrMetaPressed = exports.isCharacterValue = exports.isModifierKey = exports.clearEventDataCache = exports.cacheGetEventData = exports.getEntitySelector = exports.getEntityFromElement = exports.commitEntity = exports.chainSanitizerCallback = exports.createDefaultHtmlSanitizerOptions = exports.getInheritableStyles = exports.HtmlSanitizer = exports.canUndoAutoComplete = exports.createSnapshots = exports.moveCurrentSnapsnot = exports.moveCurrentSnapshot = exports.clearProceedingSnapshotsV2 = exports.clearProceedingSnapshots = exports.canMoveCurrentSnapshot = exports.addSnapshotV2 = exports.addSnapshot = exports.addRangeToSelection = exports.setHtmlWithMetadata = exports.setHtmlWithSelectionPath = exports.getHtmlWithSelectionPath = exports.getSelectionPath = exports.isPositionAtBeginningOf = exports.getPositionRect = exports.createRange = exports.Position = exports.mergeBlocksInRegion = exports.getSelectionRangeInRegion = exports.isNodeInRegion = exports.collapseNodesInRegion = exports.getSelectedBlockElementsInRegion = exports.getRegionsFromRange = exports.setListItemStyle = exports.VListChain = exports.createVListFromRegion = exports.VListItem = exports.VList = exports.isWholeTableSelected = exports.VTable = exports.moveChildNodes = void 0;
11261
+ exports.validate = exports.getTextContent = exports.deleteSelectedContent = exports.adjustInsertPosition = exports.setStyles = exports.getStyles = exports.isCtrlOrMetaPressed = exports.isCharacterValue = exports.isModifierKey = exports.clearEventDataCache = exports.cacheGetEventData = exports.getEntitySelector = exports.getEntityFromElement = exports.commitEntity = exports.chainSanitizerCallback = exports.createDefaultHtmlSanitizerOptions = exports.getInheritableStyles = exports.HtmlSanitizer = exports.canUndoAutoComplete = exports.createSnapshots = exports.moveCurrentSnapsnot = exports.moveCurrentSnapshot = exports.clearProceedingSnapshotsV2 = exports.clearProceedingSnapshots = exports.canMoveCurrentSnapshot = exports.addSnapshotV2 = exports.addSnapshot = exports.addRangeToSelection = exports.setHtmlWithMetadata = exports.setHtmlWithSelectionPath = exports.getHtmlWithSelectionPath = exports.getSelectionPath = exports.isPositionAtBeginningOf = exports.getPositionRect = exports.createRange = exports.Position = exports.mergeBlocksInRegion = exports.getSelectionRangeInRegion = exports.isNodeInRegion = exports.collapseNodesInRegion = exports.getSelectedBlockElementsInRegion = exports.getRegionsFromRange = exports.setListItemStyle = exports.VListChain = exports.createVListFromRegion = exports.VListItem = exports.VList = exports.isWholeTableSelected = exports.VTable = exports.moveChildNodes = void 0;
11262
+ exports.removeMetadata = exports.setMetadata = exports.getMetadata = exports.createObjectDefinition = exports.createArrayDefinition = exports.createStringDefinition = exports.createBooleanDefinition = exports.createNumberDefinition = void 0;
11235
11263
  var getBlockElementAtNode_1 = __webpack_require__(/*! ./blockElements/getBlockElementAtNode */ "./packages/roosterjs-editor-dom/lib/blockElements/getBlockElementAtNode.ts");
11236
11264
  Object.defineProperty(exports, "getBlockElementAtNode", { enumerable: true, get: function () { return getBlockElementAtNode_1.default; } });
11237
11265
  var getFirstLastBlockElement_1 = __webpack_require__(/*! ./blockElements/getFirstLastBlockElement */ "./packages/roosterjs-editor-dom/lib/blockElements/getFirstLastBlockElement.ts");
@@ -11419,6 +11447,18 @@ var deleteSelectedContent_1 = __webpack_require__(/*! ./edit/deleteSelectedConte
11419
11447
  Object.defineProperty(exports, "deleteSelectedContent", { enumerable: true, get: function () { return deleteSelectedContent_1.default; } });
11420
11448
  var getTextContent_1 = __webpack_require__(/*! ./edit/getTextContent */ "./packages/roosterjs-editor-dom/lib/edit/getTextContent.ts");
11421
11449
  Object.defineProperty(exports, "getTextContent", { enumerable: true, get: function () { return getTextContent_1.default; } });
11450
+ var validate_1 = __webpack_require__(/*! ./metadata/validate */ "./packages/roosterjs-editor-dom/lib/metadata/validate.ts");
11451
+ Object.defineProperty(exports, "validate", { enumerable: true, get: function () { return validate_1.default; } });
11452
+ var definitionCreators_1 = __webpack_require__(/*! ./metadata/definitionCreators */ "./packages/roosterjs-editor-dom/lib/metadata/definitionCreators.ts");
11453
+ Object.defineProperty(exports, "createNumberDefinition", { enumerable: true, get: function () { return definitionCreators_1.createNumberDefinition; } });
11454
+ Object.defineProperty(exports, "createBooleanDefinition", { enumerable: true, get: function () { return definitionCreators_1.createBooleanDefinition; } });
11455
+ Object.defineProperty(exports, "createStringDefinition", { enumerable: true, get: function () { return definitionCreators_1.createStringDefinition; } });
11456
+ Object.defineProperty(exports, "createArrayDefinition", { enumerable: true, get: function () { return definitionCreators_1.createArrayDefinition; } });
11457
+ Object.defineProperty(exports, "createObjectDefinition", { enumerable: true, get: function () { return definitionCreators_1.createObjectDefinition; } });
11458
+ var metadata_1 = __webpack_require__(/*! ./metadata/metadata */ "./packages/roosterjs-editor-dom/lib/metadata/metadata.ts");
11459
+ Object.defineProperty(exports, "getMetadata", { enumerable: true, get: function () { return metadata_1.getMetadata; } });
11460
+ Object.defineProperty(exports, "setMetadata", { enumerable: true, get: function () { return metadata_1.setMetadata; } });
11461
+ Object.defineProperty(exports, "removeMetadata", { enumerable: true, get: function () { return metadata_1.removeMetadata; } });
11422
11462
 
11423
11463
 
11424
11464
  /***/ }),
@@ -11825,7 +11865,7 @@ var splitTextNode_1 = __webpack_require__(/*! ../utils/splitTextNode */ "./packa
11825
11865
  var wrap_1 = __webpack_require__(/*! ../utils/wrap */ "./packages/roosterjs-editor-dom/lib/utils/wrap.ts");
11826
11866
  var getLeafSibling_1 = __webpack_require__(/*! ../utils/getLeafSibling */ "./packages/roosterjs-editor-dom/lib/utils/getLeafSibling.ts");
11827
11867
  var splitParentNode_1 = __webpack_require__(/*! ../utils/splitParentNode */ "./packages/roosterjs-editor-dom/lib/utils/splitParentNode.ts");
11828
- var STYLET_AGS = 'SPAN,B,I,U,EM,STRONG,STRIKE,S,SMALL'.split(',');
11868
+ var STYLET_AGS = 'SPAN,B,I,U,EM,STRONG,STRIKE,S,SMALL,SUP,SUB'.split(',');
11829
11869
  /**
11830
11870
  * Apply style using a styler function to the given container node in the given range
11831
11871
  * @param container The container node to apply style to
@@ -12089,6 +12129,8 @@ var toArray_1 = __webpack_require__(/*! ../utils/toArray */ "./packages/roosterj
12089
12129
  var unwrap_1 = __webpack_require__(/*! ../utils/unwrap */ "./packages/roosterjs-editor-dom/lib/utils/unwrap.ts");
12090
12130
  var VListItem_1 = __webpack_require__(/*! ./VListItem */ "./packages/roosterjs-editor-dom/lib/list/VListItem.ts");
12091
12131
  var wrap_1 = __webpack_require__(/*! ../utils/wrap */ "./packages/roosterjs-editor-dom/lib/utils/wrap.ts");
12132
+ var definitionCreators_1 = __webpack_require__(/*! ../metadata/definitionCreators */ "./packages/roosterjs-editor-dom/lib/metadata/definitionCreators.ts");
12133
+ var metadata_1 = __webpack_require__(/*! ../metadata/metadata */ "./packages/roosterjs-editor-dom/lib/metadata/metadata.ts");
12092
12134
  /**
12093
12135
  * Represent a bullet or a numbering list
12094
12136
  *
@@ -12262,6 +12304,8 @@ var VList = /** @class */ (function () {
12262
12304
  start++;
12263
12305
  }
12264
12306
  }
12307
+ var itemIndex = _this.getListItemIndex(item.getNode());
12308
+ item.applyListStyle(_this.rootList, itemIndex);
12265
12309
  lastList = topList;
12266
12310
  });
12267
12311
  // Restore the content to the position of placeholder
@@ -12339,6 +12383,14 @@ var VList = /** @class */ (function () {
12339
12383
  return needChangeType ? item.changeListType(targetType) : item.outdent();
12340
12384
  });
12341
12385
  };
12386
+ /**
12387
+ * Change list style of the given range of this list.
12388
+ * If some of the items are not real list item yet, this will make them to be list item with given style
12389
+ * @param targetStyle Target list style
12390
+ */
12391
+ VList.prototype.setListStyleType = function (targetStyle) {
12392
+ (0, metadata_1.setMetadata)(this.rootList, targetStyle, (0, definitionCreators_1.createNumberDefinition)());
12393
+ };
12342
12394
  /**
12343
12395
  * Append a new item to this VList
12344
12396
  * @param node node of the item to append. If it is not wrapped with LI tag, it will be wrapped
@@ -12678,10 +12730,13 @@ var getTagOfNode_1 = __webpack_require__(/*! ../utils/getTagOfNode */ "./package
12678
12730
  var isBlockElement_1 = __webpack_require__(/*! ../utils/isBlockElement */ "./packages/roosterjs-editor-dom/lib/utils/isBlockElement.ts");
12679
12731
  var moveChildNodes_1 = __webpack_require__(/*! ../utils/moveChildNodes */ "./packages/roosterjs-editor-dom/lib/utils/moveChildNodes.ts");
12680
12732
  var safeInstanceOf_1 = __webpack_require__(/*! ../utils/safeInstanceOf */ "./packages/roosterjs-editor-dom/lib/utils/safeInstanceOf.ts");
12733
+ var setBulletListMarkers_1 = __webpack_require__(/*! ./setBulletListMarkers */ "./packages/roosterjs-editor-dom/lib/list/setBulletListMarkers.ts");
12681
12734
  var setListItemStyle_1 = __webpack_require__(/*! ./setListItemStyle */ "./packages/roosterjs-editor-dom/lib/list/setListItemStyle.ts");
12735
+ var setNumberingListMarkers_1 = __webpack_require__(/*! ./setNumberingListMarkers */ "./packages/roosterjs-editor-dom/lib/list/setNumberingListMarkers.ts");
12682
12736
  var toArray_1 = __webpack_require__(/*! ../utils/toArray */ "./packages/roosterjs-editor-dom/lib/utils/toArray.ts");
12683
12737
  var unwrap_1 = __webpack_require__(/*! ../utils/unwrap */ "./packages/roosterjs-editor-dom/lib/utils/unwrap.ts");
12684
12738
  var wrap_1 = __webpack_require__(/*! ../utils/wrap */ "./packages/roosterjs-editor-dom/lib/utils/wrap.ts");
12739
+ var metadata_1 = __webpack_require__(/*! ../metadata/metadata */ "./packages/roosterjs-editor-dom/lib/metadata/metadata.ts");
12685
12740
  var orderListStyles = [null, 'lower-alpha', 'lower-roman'];
12686
12741
  var MARGIN_BASE = '0in 0in 0in 0.5in';
12687
12742
  var NEGATIVE_MARGIN = '-.25in';
@@ -12842,6 +12897,27 @@ var VListItem = /** @class */ (function () {
12842
12897
  VListItem.prototype.setNewListStart = function (startNumber) {
12843
12898
  this.newListStart = startNumber;
12844
12899
  };
12900
+ /**
12901
+ * Apply the list style type
12902
+ * @param rootList the vList that receives the style
12903
+ * @param index the list item index
12904
+ */
12905
+ VListItem.prototype.applyListStyle = function (rootList, index) {
12906
+ var style = (0, metadata_1.getMetadata)(rootList) ? (0, metadata_1.getMetadata)(rootList) : undefined;
12907
+ if (style) {
12908
+ if (this.listTypes.length < 3) {
12909
+ if (this.listTypes[1] === 2 /* Unordered */) {
12910
+ (0, setBulletListMarkers_1.default)(this.node, style);
12911
+ }
12912
+ else if (this.listTypes[1] === 1 /* Ordered */) {
12913
+ (0, setNumberingListMarkers_1.default)(this.node, style, index);
12914
+ }
12915
+ }
12916
+ else {
12917
+ this.node.style.removeProperty('list-style-type');
12918
+ }
12919
+ }
12920
+ };
12845
12921
  /**
12846
12922
  * Write the change result back into DOM
12847
12923
  * @param listStack current stack of list elements
@@ -12971,6 +13047,111 @@ function getChildrenAndUnwrap(node) {
12971
13047
  }
12972
13048
 
12973
13049
 
13050
+ /***/ }),
13051
+
13052
+ /***/ "./packages/roosterjs-editor-dom/lib/list/convertDecimalsToAlpha.ts":
13053
+ /*!**************************************************************************!*\
13054
+ !*** ./packages/roosterjs-editor-dom/lib/list/convertDecimalsToAlpha.ts ***!
13055
+ \**************************************************************************/
13056
+ /*! no static exports found */
13057
+ /***/ (function(module, exports, __webpack_require__) {
13058
+
13059
+ "use strict";
13060
+
13061
+ Object.defineProperty(exports, "__esModule", { value: true });
13062
+ var ALPHABET = {
13063
+ 0: 'A',
13064
+ 1: 'B',
13065
+ 2: 'C',
13066
+ 3: 'D',
13067
+ 4: 'E',
13068
+ 5: 'F',
13069
+ 6: 'G',
13070
+ 7: 'H',
13071
+ 8: 'I',
13072
+ 9: 'J',
13073
+ 10: 'K',
13074
+ 11: 'L',
13075
+ 12: 'M',
13076
+ 13: 'N',
13077
+ 14: 'O',
13078
+ 15: 'P',
13079
+ 16: 'Q',
13080
+ 17: 'R',
13081
+ 18: 'S',
13082
+ 19: 'T',
13083
+ 20: 'U',
13084
+ 21: 'V',
13085
+ 22: 'W',
13086
+ 23: 'X',
13087
+ 24: 'Y',
13088
+ 25: 'Z',
13089
+ };
13090
+ /**
13091
+ * @internal
13092
+ * Convert decimal numbers into english alphabet letters
13093
+ * @param decimal The decimal number that needs to be converted
13094
+ * @param isLowerCase if true the roman value will appear in lower case
13095
+ * @returns
13096
+ */
13097
+ function convertDecimalsToAlpha(decimal, isLowerCase) {
13098
+ var alpha = '';
13099
+ while (decimal >= 0) {
13100
+ alpha = ALPHABET[decimal % 26] + alpha;
13101
+ decimal = Math.floor(decimal / 26) - 1;
13102
+ }
13103
+ return isLowerCase ? alpha.toLowerCase() : alpha;
13104
+ }
13105
+ exports.default = convertDecimalsToAlpha;
13106
+
13107
+
13108
+ /***/ }),
13109
+
13110
+ /***/ "./packages/roosterjs-editor-dom/lib/list/convertDecimalsToRomans.ts":
13111
+ /*!***************************************************************************!*\
13112
+ !*** ./packages/roosterjs-editor-dom/lib/list/convertDecimalsToRomans.ts ***!
13113
+ \***************************************************************************/
13114
+ /*! no static exports found */
13115
+ /***/ (function(module, exports, __webpack_require__) {
13116
+
13117
+ "use strict";
13118
+
13119
+ Object.defineProperty(exports, "__esModule", { value: true });
13120
+ var RomanValues = {
13121
+ M: 1000,
13122
+ CM: 900,
13123
+ D: 500,
13124
+ CD: 400,
13125
+ C: 100,
13126
+ XC: 90,
13127
+ L: 50,
13128
+ XL: 40,
13129
+ X: 10,
13130
+ IX: 9,
13131
+ V: 5,
13132
+ IV: 4,
13133
+ I: 1,
13134
+ };
13135
+ /**
13136
+ * @internal
13137
+ * Convert decimal numbers into roman numbers
13138
+ * @param decimal The decimal number that needs to be converted
13139
+ * @param isLowerCase if true the roman value will appear in lower case
13140
+ * @returns
13141
+ */
13142
+ function convertDecimalsToRoman(decimal, isLowerCase) {
13143
+ var romanValue = '';
13144
+ for (var _i = 0, _a = Object.keys(RomanValues); _i < _a.length; _i++) {
13145
+ var i = _a[_i];
13146
+ var timesRomanCharAppear = Math.floor(decimal / RomanValues[i]);
13147
+ decimal = decimal - timesRomanCharAppear * RomanValues[i];
13148
+ romanValue = romanValue + i.repeat(timesRomanCharAppear);
13149
+ }
13150
+ return isLowerCase ? romanValue.toLocaleLowerCase() : romanValue;
13151
+ }
13152
+ exports.default = convertDecimalsToRoman;
13153
+
13154
+
12974
13155
  /***/ }),
12975
13156
 
12976
13157
  /***/ "./packages/roosterjs-editor-dom/lib/list/createVListFromRegion.ts":
@@ -13172,6 +13353,41 @@ function getRootListNode(region, selector, node) {
13172
13353
  exports.default = getRootListNode;
13173
13354
 
13174
13355
 
13356
+ /***/ }),
13357
+
13358
+ /***/ "./packages/roosterjs-editor-dom/lib/list/setBulletListMarkers.ts":
13359
+ /*!************************************************************************!*\
13360
+ !*** ./packages/roosterjs-editor-dom/lib/list/setBulletListMarkers.ts ***!
13361
+ \************************************************************************/
13362
+ /*! no static exports found */
13363
+ /***/ (function(module, exports, __webpack_require__) {
13364
+
13365
+ "use strict";
13366
+
13367
+ var _a;
13368
+ Object.defineProperty(exports, "__esModule", { value: true });
13369
+ /**
13370
+ * @internal
13371
+ * Set the marker of a bullet list
13372
+ * @param li
13373
+ * @param listStyleType
13374
+ */
13375
+ function setBulletListMarkers(li, listStyleType) {
13376
+ var marker = bulletListStyle[listStyleType];
13377
+ var isDiscOrSquare = listStyleType === 0 /* Disc */ || listStyleType === 2 /* Square */;
13378
+ li.style.listStyleType = isDiscOrSquare ? marker : "\"" + marker + "\"";
13379
+ }
13380
+ exports.default = setBulletListMarkers;
13381
+ var bulletListStyle = (_a = {},
13382
+ _a[0 /* Disc */] = 'disc',
13383
+ _a[2 /* Square */] = 'square',
13384
+ _a[1 /* Dash */] = '- ',
13385
+ _a[4 /* LongArrow */] = '→ ',
13386
+ _a[3 /* ShortArrow */] = '➢ ',
13387
+ _a[5 /* UnfilledArrow */] = '➪ ',
13388
+ _a);
13389
+
13390
+
13175
13391
  /***/ }),
13176
13392
 
13177
13393
  /***/ "./packages/roosterjs-editor-dom/lib/list/setListItemStyle.ts":
@@ -13231,6 +13447,388 @@ function getInlineChildElementsStyle(element) {
13231
13447
  }
13232
13448
 
13233
13449
 
13450
+ /***/ }),
13451
+
13452
+ /***/ "./packages/roosterjs-editor-dom/lib/list/setNumberingListMarkers.ts":
13453
+ /*!***************************************************************************!*\
13454
+ !*** ./packages/roosterjs-editor-dom/lib/list/setNumberingListMarkers.ts ***!
13455
+ \***************************************************************************/
13456
+ /*! no static exports found */
13457
+ /***/ (function(module, exports, __webpack_require__) {
13458
+
13459
+ "use strict";
13460
+
13461
+ var _a;
13462
+ Object.defineProperty(exports, "__esModule", { value: true });
13463
+ var convertDecimalsToAlpha_1 = __webpack_require__(/*! ./convertDecimalsToAlpha */ "./packages/roosterjs-editor-dom/lib/list/convertDecimalsToAlpha.ts");
13464
+ var convertDecimalsToRomans_1 = __webpack_require__(/*! ./convertDecimalsToRomans */ "./packages/roosterjs-editor-dom/lib/list/convertDecimalsToRomans.ts");
13465
+ var MarkerTypes;
13466
+ (function (MarkerTypes) {
13467
+ MarkerTypes[MarkerTypes["Decimal"] = 0] = "Decimal";
13468
+ MarkerTypes[MarkerTypes["Roman"] = 1] = "Roman";
13469
+ MarkerTypes[MarkerTypes["Alpha"] = 2] = "Alpha";
13470
+ })(MarkerTypes || (MarkerTypes = {}));
13471
+ /**
13472
+ * @internal
13473
+ * Set marker style of a numbering list
13474
+ * @param listStyleType
13475
+ * @param li
13476
+ */
13477
+ function setNumberingListMarkers(li, listStyleType, level) {
13478
+ var _a = numberingListStyle[listStyleType], markerSeparator = _a.markerSeparator, markerSecondSeparator = _a.markerSecondSeparator, markerType = _a.markerType, lowerCase = _a.lowerCase;
13479
+ var markerNumber = level.toString();
13480
+ if (markerType === MarkerTypes.Roman) {
13481
+ markerNumber = (0, convertDecimalsToRomans_1.default)(level, lowerCase);
13482
+ }
13483
+ else if (markerType === MarkerTypes.Alpha) {
13484
+ markerNumber = (0, convertDecimalsToAlpha_1.default)(level - 1, lowerCase);
13485
+ }
13486
+ var marker = markerSecondSeparator
13487
+ ? markerSecondSeparator + markerNumber + markerSeparator
13488
+ : markerNumber + markerSeparator;
13489
+ li.style.listStyleType = "\"" + marker + "\"";
13490
+ }
13491
+ exports.default = setNumberingListMarkers;
13492
+ var numberingListStyle = (_a = {},
13493
+ _a[0 /* Decimal */] = {
13494
+ markerType: MarkerTypes.Decimal,
13495
+ markerSeparator: '. ',
13496
+ },
13497
+ _a[1 /* DecimalDash */] = {
13498
+ markerType: MarkerTypes.Decimal,
13499
+ markerSeparator: '- ',
13500
+ },
13501
+ _a[2 /* DecimalParenthesis */] = {
13502
+ markerType: MarkerTypes.Decimal,
13503
+ markerSeparator: ') ',
13504
+ },
13505
+ _a[3 /* DecimalDoubleParenthesis */] = {
13506
+ markerType: MarkerTypes.Decimal,
13507
+ markerSeparator: ') ',
13508
+ markerSecondSeparator: '(',
13509
+ },
13510
+ _a[4 /* LowerAlpha */] = {
13511
+ markerType: MarkerTypes.Alpha,
13512
+ markerSeparator: '. ',
13513
+ lowerCase: true,
13514
+ },
13515
+ _a[7 /* LowerAlphaDash */] = {
13516
+ markerType: MarkerTypes.Alpha,
13517
+ markerSeparator: '- ',
13518
+ lowerCase: true,
13519
+ },
13520
+ _a[5 /* LowerAlphaParenthesis */] = {
13521
+ markerType: MarkerTypes.Alpha,
13522
+ markerSeparator: ') ',
13523
+ lowerCase: true,
13524
+ },
13525
+ _a[6 /* LowerAlphaDoubleParenthesis */] = {
13526
+ markerType: MarkerTypes.Alpha,
13527
+ markerSeparator: ') ',
13528
+ markerSecondSeparator: '(',
13529
+ lowerCase: true,
13530
+ },
13531
+ _a[8 /* UpperAlpha */] = {
13532
+ markerType: MarkerTypes.Alpha,
13533
+ markerSeparator: '. ',
13534
+ },
13535
+ _a[11 /* UpperAlphaDash */] = {
13536
+ markerType: MarkerTypes.Alpha,
13537
+ markerSeparator: '- ',
13538
+ },
13539
+ _a[9 /* UpperAlphaParenthesis */] = {
13540
+ markerType: MarkerTypes.Alpha,
13541
+ markerSeparator: ') ',
13542
+ },
13543
+ _a[10 /* UpperAlphaDoubleParenthesis */] = {
13544
+ markerType: MarkerTypes.Alpha,
13545
+ markerSeparator: ') ',
13546
+ markerSecondSeparator: '(',
13547
+ },
13548
+ _a[12 /* LowerRoman */] = {
13549
+ markerType: MarkerTypes.Roman,
13550
+ markerSeparator: '. ',
13551
+ lowerCase: true,
13552
+ },
13553
+ _a[15 /* LowerRomanDash */] = {
13554
+ markerType: MarkerTypes.Roman,
13555
+ markerSeparator: '- ',
13556
+ lowerCase: true,
13557
+ },
13558
+ _a[13 /* LowerRomanParenthesis */] = {
13559
+ markerType: MarkerTypes.Roman,
13560
+ markerSeparator: ') ',
13561
+ lowerCase: true,
13562
+ },
13563
+ _a[14 /* LowerRomanDoubleParenthesis */] = {
13564
+ markerType: MarkerTypes.Roman,
13565
+ markerSeparator: ') ',
13566
+ markerSecondSeparator: '(',
13567
+ lowerCase: true,
13568
+ },
13569
+ _a[16 /* UpperRoman */] = {
13570
+ markerType: MarkerTypes.Roman,
13571
+ markerSeparator: '. ',
13572
+ },
13573
+ _a[19 /* UpperRomanDash */] = {
13574
+ markerType: MarkerTypes.Roman,
13575
+ markerSeparator: '- ',
13576
+ },
13577
+ _a[17 /* UpperRomanParenthesis */] = {
13578
+ markerType: MarkerTypes.Roman,
13579
+ markerSeparator: ') ',
13580
+ },
13581
+ _a[18 /* UpperRomanDoubleParenthesis */] = {
13582
+ markerType: MarkerTypes.Roman,
13583
+ markerSeparator: ') ',
13584
+ markerSecondSeparator: '(',
13585
+ },
13586
+ _a);
13587
+
13588
+
13589
+ /***/ }),
13590
+
13591
+ /***/ "./packages/roosterjs-editor-dom/lib/metadata/definitionCreators.ts":
13592
+ /*!**************************************************************************!*\
13593
+ !*** ./packages/roosterjs-editor-dom/lib/metadata/definitionCreators.ts ***!
13594
+ \**************************************************************************/
13595
+ /*! no static exports found */
13596
+ /***/ (function(module, exports, __webpack_require__) {
13597
+
13598
+ "use strict";
13599
+
13600
+ Object.defineProperty(exports, "__esModule", { value: true });
13601
+ exports.createObjectDefinition = exports.createArrayDefinition = exports.createStringDefinition = exports.createBooleanDefinition = exports.createNumberDefinition = void 0;
13602
+ /**
13603
+ * Create a number definition
13604
+ * @param isOptional Whether this property is optional
13605
+ * @param value Optional value of the number
13606
+ * @param minValue Optional minimum value
13607
+ * @param maxValue Optional maximum value
13608
+ * @param allowNull Allow the property to be null
13609
+ * @returns The number definition object
13610
+ */
13611
+ function createNumberDefinition(isOptional, value, minValue, maxValue, allowNull) {
13612
+ return {
13613
+ type: 1 /* Number */,
13614
+ isOptional: isOptional,
13615
+ value: value,
13616
+ maxValue: maxValue,
13617
+ minValue: minValue,
13618
+ allowNull: allowNull,
13619
+ };
13620
+ }
13621
+ exports.createNumberDefinition = createNumberDefinition;
13622
+ /**
13623
+ * Create a boolean definition
13624
+ * @param isOptional Whether this property is optional
13625
+ * @param value Optional expected boolean value
13626
+ * @param allowNull Allow the property to be null
13627
+ * @returns The boolean definition object
13628
+ */
13629
+ function createBooleanDefinition(isOptional, value, allowNull) {
13630
+ return {
13631
+ type: 0 /* Boolean */,
13632
+ isOptional: isOptional,
13633
+ value: value,
13634
+ allowNull: allowNull,
13635
+ };
13636
+ }
13637
+ exports.createBooleanDefinition = createBooleanDefinition;
13638
+ /**
13639
+ * Create a string definition
13640
+ * @param isOptional Whether this property is optional
13641
+ * @param value Optional expected string value
13642
+ * @param allowNull Allow the property to be null
13643
+ * @returns The string definition object
13644
+ */
13645
+ function createStringDefinition(isOptional, value, allowNull) {
13646
+ return {
13647
+ type: 2 /* String */,
13648
+ isOptional: isOptional,
13649
+ value: value,
13650
+ allowNull: allowNull,
13651
+ };
13652
+ }
13653
+ exports.createStringDefinition = createStringDefinition;
13654
+ /**
13655
+ * Create an array definition
13656
+ * @param itemDef Definition of each item of the related array
13657
+ * @param isOptional Whether this property is optional
13658
+ * @param allowNull Allow the property to be null
13659
+ * @returns The array definition object
13660
+ */
13661
+ function createArrayDefinition(itemDef, isOptional, minLength, maxLength, allowNull) {
13662
+ return {
13663
+ type: 3 /* Array */,
13664
+ isOptional: isOptional,
13665
+ itemDef: itemDef,
13666
+ minLength: minLength,
13667
+ maxLength: maxLength,
13668
+ allowNull: allowNull,
13669
+ };
13670
+ }
13671
+ exports.createArrayDefinition = createArrayDefinition;
13672
+ /**
13673
+ * Create an object definition
13674
+ * @param propertyDef Definition of each property of the related object
13675
+ * @param isOptional Whether this property is optional
13676
+ * @param allowNull Allow the property to be null
13677
+ * @returns The object definition object
13678
+ */
13679
+ function createObjectDefinition(propertyDef, isOptional, allowNull) {
13680
+ return {
13681
+ type: 4 /* Object */,
13682
+ isOptional: isOptional,
13683
+ propertyDef: propertyDef,
13684
+ allowNull: allowNull,
13685
+ };
13686
+ }
13687
+ exports.createObjectDefinition = createObjectDefinition;
13688
+
13689
+
13690
+ /***/ }),
13691
+
13692
+ /***/ "./packages/roosterjs-editor-dom/lib/metadata/metadata.ts":
13693
+ /*!****************************************************************!*\
13694
+ !*** ./packages/roosterjs-editor-dom/lib/metadata/metadata.ts ***!
13695
+ \****************************************************************/
13696
+ /*! no static exports found */
13697
+ /***/ (function(module, exports, __webpack_require__) {
13698
+
13699
+ "use strict";
13700
+
13701
+ Object.defineProperty(exports, "__esModule", { value: true });
13702
+ exports.removeMetadata = exports.setMetadata = exports.getMetadata = void 0;
13703
+ var validate_1 = __webpack_require__(/*! ./validate */ "./packages/roosterjs-editor-dom/lib/metadata/validate.ts");
13704
+ var MetadataDataSetName = 'editingInfo';
13705
+ /**
13706
+ * Get metadata object from an HTML element
13707
+ * @param element The HTML element to get metadata object from
13708
+ * @param definition The type definition of this metadata used for validate this metadata object.
13709
+ * If not specified, no validation will be performed and always return whatever we get from the element
13710
+ * @param defaultValue The default value to return if the retrieved object cannot pass the validation,
13711
+ * or there is no metadata object at all
13712
+ * @returns The strong-type metadata object if it can be validated, or null
13713
+ */
13714
+ function getMetadata(element, definition, defaultValue) {
13715
+ var str = element.dataset[MetadataDataSetName];
13716
+ var obj;
13717
+ try {
13718
+ obj = str ? JSON.parse(str) : null;
13719
+ }
13720
+ catch (_a) { }
13721
+ if (typeof obj !== 'undefined') {
13722
+ if (!definition) {
13723
+ return obj;
13724
+ }
13725
+ else if ((0, validate_1.default)(obj, definition)) {
13726
+ return obj;
13727
+ }
13728
+ }
13729
+ if (defaultValue) {
13730
+ return defaultValue;
13731
+ }
13732
+ else {
13733
+ return null;
13734
+ }
13735
+ }
13736
+ exports.getMetadata = getMetadata;
13737
+ /**
13738
+ * Set metadata object into an HTML element
13739
+ * @param element The HTML element to set metadata object to
13740
+ * @param metadata The metadata object to set
13741
+ * @param def An optional type definition object used for validate this metadata object.
13742
+ * If not specified, metadata will be set without validation
13743
+ * @returns True if metadata is set, otherwise false
13744
+ */
13745
+ function setMetadata(element, metadata, def) {
13746
+ if (!def || (0, validate_1.default)(metadata, def)) {
13747
+ element.dataset[MetadataDataSetName] = JSON.stringify(metadata);
13748
+ return true;
13749
+ }
13750
+ else {
13751
+ return false;
13752
+ }
13753
+ }
13754
+ exports.setMetadata = setMetadata;
13755
+ /**
13756
+ * Remove metadata from the given element if any
13757
+ * @param element The element to remove metadata from
13758
+ */
13759
+ function removeMetadata(element) {
13760
+ delete element.dataset[MetadataDataSetName];
13761
+ }
13762
+ exports.removeMetadata = removeMetadata;
13763
+
13764
+
13765
+ /***/ }),
13766
+
13767
+ /***/ "./packages/roosterjs-editor-dom/lib/metadata/validate.ts":
13768
+ /*!****************************************************************!*\
13769
+ !*** ./packages/roosterjs-editor-dom/lib/metadata/validate.ts ***!
13770
+ \****************************************************************/
13771
+ /*! no static exports found */
13772
+ /***/ (function(module, exports, __webpack_require__) {
13773
+
13774
+ "use strict";
13775
+
13776
+ Object.defineProperty(exports, "__esModule", { value: true });
13777
+ /**
13778
+ * Validate the given object with a type definition object
13779
+ * @param input The object to validate
13780
+ * @param def The type definition object used for validation
13781
+ * @returns True if the object passed the validation, otherwise false
13782
+ */
13783
+ function validate(input, def) {
13784
+ var result = false;
13785
+ if ((def.isOptional && typeof input === 'undefined') || (def.allowNull && input === null)) {
13786
+ result = true;
13787
+ }
13788
+ else {
13789
+ switch (def.type) {
13790
+ case 2 /* String */:
13791
+ result =
13792
+ typeof input === 'string' &&
13793
+ (typeof def.value === 'undefined' || input === def.value);
13794
+ break;
13795
+ case 1 /* Number */:
13796
+ result =
13797
+ typeof input === 'number' &&
13798
+ (typeof def.value === 'undefined' || areSameNumbers(def.value, input)) &&
13799
+ (typeof def.minValue === 'undefined' || input >= def.minValue) &&
13800
+ (typeof def.maxValue === 'undefined' || input <= def.maxValue);
13801
+ break;
13802
+ case 0 /* Boolean */:
13803
+ result =
13804
+ typeof input === 'boolean' &&
13805
+ (typeof def.value === 'undefined' || input === def.value);
13806
+ break;
13807
+ case 3 /* Array */:
13808
+ result =
13809
+ Array.isArray(input) &&
13810
+ (typeof def.minLength === 'undefined' || input.length >= def.minLength) &&
13811
+ (typeof def.maxLength === 'undefined' || input.length <= def.maxLength) &&
13812
+ input.every(function (x) { return validate(x, def.itemDef); });
13813
+ break;
13814
+ case 4 /* Object */:
13815
+ result =
13816
+ typeof input === 'object' &&
13817
+ Object.keys(def.propertyDef).every(function (x) { return validate(input[x], def.propertyDef[x]); });
13818
+ break;
13819
+ case 5 /* Customize */:
13820
+ result = def.validator(input);
13821
+ break;
13822
+ }
13823
+ }
13824
+ return result;
13825
+ }
13826
+ exports.default = validate;
13827
+ function areSameNumbers(n1, n2) {
13828
+ return Math.abs(n1 - n2) < 1e-3;
13829
+ }
13830
+
13831
+
13234
13832
  /***/ }),
13235
13833
 
13236
13834
  /***/ "./packages/roosterjs-editor-dom/lib/region/collapseNodesInRegion.ts":
@@ -14209,6 +14807,27 @@ Object.defineProperty(exports, "__esModule", { value: true });
14209
14807
  exports.setHtmlWithMetadata = void 0;
14210
14808
  var createRange_1 = __webpack_require__(/*! ./createRange */ "./packages/roosterjs-editor-dom/lib/selection/createRange.ts");
14211
14809
  var safeInstanceOf_1 = __webpack_require__(/*! ../utils/safeInstanceOf */ "./packages/roosterjs-editor-dom/lib/utils/safeInstanceOf.ts");
14810
+ var validate_1 = __webpack_require__(/*! ../metadata/validate */ "./packages/roosterjs-editor-dom/lib/metadata/validate.ts");
14811
+ var definitionCreators_1 = __webpack_require__(/*! ../metadata/definitionCreators */ "./packages/roosterjs-editor-dom/lib/metadata/definitionCreators.ts");
14812
+ var NumberArrayDefinition = (0, definitionCreators_1.createArrayDefinition)((0, definitionCreators_1.createNumberDefinition)());
14813
+ var CoordinatesDefinition = (0, definitionCreators_1.createObjectDefinition)({
14814
+ x: (0, definitionCreators_1.createNumberDefinition)(),
14815
+ y: (0, definitionCreators_1.createNumberDefinition)(),
14816
+ });
14817
+ var IsDarkModeDefinition = (0, definitionCreators_1.createBooleanDefinition)(true /*isOptional*/);
14818
+ var NormalContentMetadataDefinition = (0, definitionCreators_1.createObjectDefinition)({
14819
+ type: (0, definitionCreators_1.createNumberDefinition)(true /*isOptional*/, 0 /* Normal */),
14820
+ isDarkMode: IsDarkModeDefinition,
14821
+ start: NumberArrayDefinition,
14822
+ end: NumberArrayDefinition,
14823
+ });
14824
+ var TableContentMetadataDefinition = (0, definitionCreators_1.createObjectDefinition)({
14825
+ type: (0, definitionCreators_1.createNumberDefinition)(false /*isOptional*/, 1 /* TableSelection */),
14826
+ isDarkMode: IsDarkModeDefinition,
14827
+ tableId: (0, definitionCreators_1.createStringDefinition)(),
14828
+ firstCell: CoordinatesDefinition,
14829
+ lastCell: CoordinatesDefinition,
14830
+ });
14212
14831
  /**
14213
14832
  * @deprecated Use setHtmlWithMetadata instead
14214
14833
  * Restore inner HTML of a root element from given html string. If the string contains selection path,
@@ -14243,8 +14862,11 @@ function setHtmlWithMetadata(rootNode, html, trustedHTMLHandler) {
14243
14862
  if ((0, safeInstanceOf_1.default)(potentialMetadataComment, 'Comment')) {
14244
14863
  try {
14245
14864
  var obj = JSON.parse(potentialMetadataComment.nodeValue || '');
14246
- if (isContentMetadata(obj)) {
14865
+ if ((0, validate_1.default)(obj, NormalContentMetadataDefinition) ||
14866
+ (0, validate_1.default)(obj, TableContentMetadataDefinition)) {
14247
14867
  rootNode.removeChild(potentialMetadataComment);
14868
+ obj.type = typeof obj.type === 'undefined' ? 0 /* Normal */ : obj.type;
14869
+ obj.isDarkMode = obj.isDarkMode || false;
14248
14870
  return obj;
14249
14871
  }
14250
14872
  }
@@ -14253,42 +14875,6 @@ function setHtmlWithMetadata(rootNode, html, trustedHTMLHandler) {
14253
14875
  return undefined;
14254
14876
  }
14255
14877
  exports.setHtmlWithMetadata = setHtmlWithMetadata;
14256
- function isContentMetadata(obj) {
14257
- if (!obj || typeof obj != 'object') {
14258
- return false;
14259
- }
14260
- switch (obj.type || 0 /* Normal */) {
14261
- case 0 /* Normal */:
14262
- var regularMetadata = obj;
14263
- if (isNumberArray(regularMetadata.start) && isNumberArray(regularMetadata.end)) {
14264
- obj.type = 0 /* Normal */;
14265
- obj.isDarkMode = !!obj.isDarkMode;
14266
- return true;
14267
- }
14268
- break;
14269
- case 1 /* TableSelection */:
14270
- var tableMetadata = obj;
14271
- if (typeof tableMetadata.tableId == 'string' &&
14272
- !!tableMetadata.tableId &&
14273
- isCoordinates(tableMetadata.firstCell) &&
14274
- isCoordinates(tableMetadata.lastCell)) {
14275
- obj.isDarkMode = !!obj.isDarkMode;
14276
- return true;
14277
- }
14278
- break;
14279
- }
14280
- return false;
14281
- }
14282
- function isNumberArray(obj) {
14283
- return obj && Array.isArray(obj) && obj.every(function (o) { return typeof o == 'number'; });
14284
- }
14285
- function isCoordinates(obj) {
14286
- var coordinates = obj;
14287
- return (coordinates &&
14288
- typeof coordinates == 'object' &&
14289
- typeof coordinates.x == 'number' &&
14290
- typeof coordinates.y == 'number');
14291
- }
14292
14878
 
14293
14879
 
14294
14880
  /***/ }),
@@ -15579,7 +16165,24 @@ exports.default = isWholeTableSelected;
15579
16165
 
15580
16166
  Object.defineProperty(exports, "__esModule", { value: true });
15581
16167
  exports.saveTableInfo = exports.getTableFormatInfo = void 0;
15582
- var TABLE_STYLE_INFO = 'roosterTableInfo';
16168
+ var metadata_1 = __webpack_require__(/*! ../metadata/metadata */ "./packages/roosterjs-editor-dom/lib/metadata/metadata.ts");
16169
+ var definitionCreators_1 = __webpack_require__(/*! ../metadata/definitionCreators */ "./packages/roosterjs-editor-dom/lib/metadata/definitionCreators.ts");
16170
+ var NullStringDefinition = (0, definitionCreators_1.createStringDefinition)(false /** isOptional */, undefined /** value */, true /** allowNull */);
16171
+ var BooleanDefinition = (0, definitionCreators_1.createBooleanDefinition)(false /** isOptional */);
16172
+ var TableFormatMetadata = (0, definitionCreators_1.createObjectDefinition)({
16173
+ topBorderColor: NullStringDefinition,
16174
+ bottomBorderColor: NullStringDefinition,
16175
+ verticalBorderColor: NullStringDefinition,
16176
+ hasHeaderRow: BooleanDefinition,
16177
+ headerRowColor: NullStringDefinition,
16178
+ hasFirstColumn: BooleanDefinition,
16179
+ hasBandedColumns: BooleanDefinition,
16180
+ hasBandedRows: BooleanDefinition,
16181
+ bgColorEven: NullStringDefinition,
16182
+ bgColorOdd: NullStringDefinition,
16183
+ tableBorderFormat: (0, definitionCreators_1.createNumberDefinition)(false /** isOptional */, undefined /* value */, 0 /* first table border format */, 7 /* last table border format */),
16184
+ keepCellShade: BooleanDefinition,
16185
+ }, false /* isOptional */, true /** allowNull */);
15583
16186
  /**
15584
16187
  * @internal
15585
16188
  * Get the format info of a table
@@ -15587,8 +16190,7 @@ var TABLE_STYLE_INFO = 'roosterTableInfo';
15587
16190
  * @param table The table that has the info
15588
16191
  */
15589
16192
  function getTableFormatInfo(table) {
15590
- var obj = safeParseJSON(table === null || table === void 0 ? void 0 : table.dataset[TABLE_STYLE_INFO]);
15591
- return checkIfTableFormatIsValid(obj) ? obj : null;
16193
+ return (0, metadata_1.getMetadata)(table, TableFormatMetadata);
15592
16194
  }
15593
16195
  exports.getTableFormatInfo = getTableFormatInfo;
15594
16196
  /**
@@ -15599,59 +16201,10 @@ exports.getTableFormatInfo = getTableFormatInfo;
15599
16201
  */
15600
16202
  function saveTableInfo(table, format) {
15601
16203
  if (table && format) {
15602
- table.dataset[TABLE_STYLE_INFO] = JSON.stringify(format);
16204
+ (0, metadata_1.setMetadata)(table, format, TableFormatMetadata);
15603
16205
  }
15604
16206
  }
15605
16207
  exports.saveTableInfo = saveTableInfo;
15606
- function checkIfTableFormatIsValid(format) {
15607
- if (!format) {
15608
- return false;
15609
- }
15610
- var topBorderColor = format.topBorderColor, verticalBorderColor = format.verticalBorderColor, bottomBorderColor = format.bottomBorderColor, bgColorOdd = format.bgColorOdd, bgColorEven = format.bgColorEven, hasBandedColumns = format.hasBandedColumns, hasBandedRows = format.hasBandedRows, hasFirstColumn = format.hasFirstColumn, hasHeaderRow = format.hasHeaderRow, tableBorderFormat = format.tableBorderFormat;
15611
- var colorsValues = [
15612
- topBorderColor,
15613
- verticalBorderColor,
15614
- bottomBorderColor,
15615
- bgColorOdd,
15616
- bgColorEven,
15617
- ];
15618
- var stateValues = [hasBandedColumns, hasBandedRows, hasFirstColumn, hasHeaderRow];
15619
- if (colorsValues.some(function (key) { return !isAValidColor(key); }) ||
15620
- stateValues.some(function (key) { return !isBoolean(key); }) ||
15621
- !isAValidTableBorderType(tableBorderFormat)) {
15622
- return false;
15623
- }
15624
- return true;
15625
- }
15626
- function isAValidColor(color) {
15627
- if (color === null || color === undefined || typeof color === 'string') {
15628
- return true;
15629
- }
15630
- return false;
15631
- }
15632
- function isBoolean(a) {
15633
- if (typeof a === 'boolean') {
15634
- return true;
15635
- }
15636
- return false;
15637
- }
15638
- function isAValidTableBorderType(border) {
15639
- if (-1 < border && border < 8) {
15640
- return true;
15641
- }
15642
- return false;
15643
- }
15644
- function safeParseJSON(json) {
15645
- if (!json) {
15646
- return null;
15647
- }
15648
- try {
15649
- return JSON.parse(json);
15650
- }
15651
- catch (_a) {
15652
- return null;
15653
- }
15654
- }
15655
16208
 
15656
16209
 
15657
16210
  /***/ }),
@@ -15672,9 +16225,10 @@ var isAndroidRegex = /android/i;
15672
16225
  * Get current browser information from user agent string
15673
16226
  * @param userAgent The userAgent string of a browser
15674
16227
  * @param appVersion The appVersion string of a browser
16228
+ * @param vendor The vendor string of a browser
15675
16229
  * @returns The BrowserInfo object calculated from the given userAgent and appVersion
15676
16230
  */
15677
- function getBrowserInfo(userAgent, appVersion) {
16231
+ function getBrowserInfo(userAgent, appVersion, vendor) {
15678
16232
  // checks whether the browser is running in IE
15679
16233
  // IE11 will use rv in UA instead of MSIE. Unfortunately Firefox also uses this. We should also look for "Trident" to confirm this.
15680
16234
  // There have been cases where companies using older version of IE and custom UserAgents have broken this logic (e.g. IE 10 and KellyServices)
@@ -15687,6 +16241,16 @@ function getBrowserInfo(userAgent, appVersion) {
15687
16241
  var isSafari = false;
15688
16242
  var isEdge = false;
15689
16243
  var isWebKit = userAgent.indexOf('WebKit') != -1;
16244
+ var isMobileOrTablet = false;
16245
+ // Reference: http://detectmobilebrowsers.com/
16246
+ // The default regex on the website doesn't consider tablet.
16247
+ // To support tablet, add |android|ipad|playbook|silk to the first regex according to the info in /about page
16248
+ (function (userAgentOrVendor) {
16249
+ if (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(userAgentOrVendor)
16250
+ || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(userAgentOrVendor.substr(0, 4))) {
16251
+ isMobileOrTablet = true;
16252
+ }
16253
+ })(userAgent || vendor || "");
15690
16254
  if (!isIE) {
15691
16255
  isChrome = userAgent.indexOf('Chrome') != -1;
15692
16256
  isFirefox = userAgent.indexOf('Firefox') != -1;
@@ -15716,6 +16280,7 @@ function getBrowserInfo(userAgent, appVersion) {
15716
16280
  isEdge: isEdge,
15717
16281
  isIEOrEdge: isIE || isEdge,
15718
16282
  isAndroid: isAndroid,
16283
+ isMobileOrTablet: isMobileOrTablet,
15719
16284
  };
15720
16285
  }
15721
16286
  exports.getBrowserInfo = getBrowserInfo;
@@ -15723,7 +16288,7 @@ exports.getBrowserInfo = getBrowserInfo;
15723
16288
  * Browser object contains browser and operating system information of current environment
15724
16289
  */
15725
16290
  exports.Browser = window
15726
- ? getBrowserInfo(window.navigator.userAgent, window.navigator.appVersion)
16291
+ ? getBrowserInfo(window.navigator.userAgent, window.navigator.appVersion, window.navigator.vendor)
15727
16292
  : {};
15728
16293
 
15729
16294
 
@@ -17095,7 +17660,7 @@ function getColorsFromRGB(color) {
17095
17660
  Object.defineProperty(exports, "__esModule", { value: true });
17096
17661
  var getTagOfNode_1 = __webpack_require__(/*! ./getTagOfNode */ "./packages/roosterjs-editor-dom/lib/utils/getTagOfNode.ts");
17097
17662
  var getComputedStyles_1 = __webpack_require__(/*! ./getComputedStyles */ "./packages/roosterjs-editor-dom/lib/utils/getComputedStyles.ts");
17098
- var CRLF = /^[\r\n]+$/gm;
17663
+ var CRLF = /^[\r\n]+$/g;
17099
17664
  var CRLF_SPACE = /[\t\r\n\u0020\u200B]/gm; // We should only find new line, real space or ZeroWidthSpace (TAB, %20, but not &nbsp;)
17100
17665
  /**
17101
17666
  * @internal
@@ -17703,6 +18268,26 @@ __exportStar(__webpack_require__(/*! ./TableCellSelection */ "./packages/rooster
17703
18268
  "use strict";
17704
18269
 
17705
18270
  Object.defineProperty(exports, "__esModule", { value: true });
18271
+ var lib_1 = __webpack_require__(/*! roosterjs-editor-dom/lib */ "./packages/roosterjs-editor-dom/lib/index.ts");
18272
+ /**
18273
+ * Generate event names based on different platforms to be compatible with desktop and mobile browsers
18274
+ */
18275
+ var MOUSE_EVENT_NAMES = (function () {
18276
+ if (lib_1.Browser.isMobileOrTablet) {
18277
+ return {
18278
+ MOUSEDOWN: 'touchstart',
18279
+ MOUSEMOVE: 'touchmove',
18280
+ MOUSEUP: 'touchend',
18281
+ };
18282
+ }
18283
+ else {
18284
+ return {
18285
+ MOUSEDOWN: 'mousedown',
18286
+ MOUSEMOVE: 'mousemove',
18287
+ MOUSEUP: 'mouseup',
18288
+ };
18289
+ }
18290
+ })();
17706
18291
  /**
17707
18292
  * @internal
17708
18293
  * A helper class to help manage drag and drop to an HTML element
@@ -17750,24 +18335,24 @@ var DragAndDropHelper = /** @class */ (function () {
17750
18335
  (_c = _this.onSubmit) === null || _c === void 0 ? void 0 : _c.call(_this, _this.context, _this.trigger);
17751
18336
  }
17752
18337
  };
17753
- trigger.addEventListener('mousedown', this.onMouseDown);
18338
+ trigger.addEventListener(MOUSE_EVENT_NAMES.MOUSEDOWN, this.onMouseDown);
17754
18339
  }
17755
18340
  /**
17756
18341
  * Dispose this object, remove all event listeners that has been attached
17757
18342
  */
17758
18343
  DragAndDropHelper.prototype.dispose = function () {
17759
- this.trigger.removeEventListener('mousedown', this.onMouseDown);
18344
+ this.trigger.removeEventListener(MOUSE_EVENT_NAMES.MOUSEDOWN, this.onMouseDown);
17760
18345
  this.removeDocumentEvents();
17761
18346
  };
17762
18347
  DragAndDropHelper.prototype.addDocumentEvents = function () {
17763
18348
  var doc = this.trigger.ownerDocument;
17764
- doc.addEventListener('mousemove', this.onMouseMove, true /*useCapture*/);
17765
- doc.addEventListener('mouseup', this.onMouseUp, true /*useCapture*/);
18349
+ doc.addEventListener(MOUSE_EVENT_NAMES.MOUSEMOVE, this.onMouseMove, true /*useCapture*/);
18350
+ doc.addEventListener(MOUSE_EVENT_NAMES.MOUSEUP, this.onMouseUp, true /*useCapture*/);
17766
18351
  };
17767
18352
  DragAndDropHelper.prototype.removeDocumentEvents = function () {
17768
18353
  var doc = this.trigger.ownerDocument;
17769
- doc.removeEventListener('mousemove', this.onMouseMove, true /*useCapture*/);
17770
- doc.removeEventListener('mouseup', this.onMouseUp, true /*useCapture*/);
18354
+ doc.removeEventListener(MOUSE_EVENT_NAMES.MOUSEMOVE, this.onMouseMove, true /*useCapture*/);
18355
+ doc.removeEventListener(MOUSE_EVENT_NAMES.MOUSEUP, this.onMouseUp, true /*useCapture*/);
17771
18356
  };
17772
18357
  return DragAndDropHelper;
17773
18358
  }());
@@ -18171,6 +18756,8 @@ exports.EntityFeatures = {
18171
18756
 
18172
18757
  Object.defineProperty(exports, "__esModule", { value: true });
18173
18758
  exports.ListFeatures = void 0;
18759
+ var getListStyle_1 = __webpack_require__(/*! ../utils/getListStyle */ "./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getListStyle.ts");
18760
+ var getListType_1 = __webpack_require__(/*! ../utils/getListType */ "./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getListType.ts");
18174
18761
  var roosterjs_editor_api_1 = __webpack_require__(/*! roosterjs-editor-api */ "./packages/roosterjs-editor-api/lib/index.ts");
18175
18762
  var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./packages/roosterjs-editor-dom/lib/index.ts");
18176
18763
  /**
@@ -18274,6 +18861,16 @@ var OutdentWhenEnterOnEmptyLine = {
18274
18861
  },
18275
18862
  defaultDisabled: !roosterjs_editor_dom_1.Browser.isIE && !roosterjs_editor_dom_1.Browser.isChrome,
18276
18863
  };
18864
+ /**
18865
+ * Validate if a block of text is considered a list pattern
18866
+ * The regex expression will look for patterns of the form:
18867
+ * 1. 1> 1) 1- (1)
18868
+ * @returns if a text is considered a list pattern
18869
+ */
18870
+ function isAListPattern(textBeforeCursor) {
18871
+ var REGEX = /^(\*|-|[0-9]{1,2}\.|[0-9]{1,2}\>|[0-9]{1,2}\)|[0-9]{1,2}\-|\([0-9]{1,2}\))$/;
18872
+ return REGEX.test(textBeforeCursor);
18873
+ }
18277
18874
  /**
18278
18875
  * AutoBullet edit feature, provides the ability to automatically convert current line into a list.
18279
18876
  * When user input "1. ", convert into a numbering list
@@ -18285,10 +18882,15 @@ var AutoBullet = {
18285
18882
  if (!cacheGetListElement(event, editor)) {
18286
18883
  var searcher = editor.getContentSearcherOfCursor(event);
18287
18884
  var textBeforeCursor = searcher.getSubStringBefore(4);
18885
+ var listTrigger = function (text) {
18886
+ return editor.isFeatureEnabled("AutoFormatList" /* AutoFormatList */)
18887
+ ? (0, getListType_1.default)(text)
18888
+ : isAListPattern(text);
18889
+ };
18288
18890
  // Auto list is triggered if:
18289
18891
  // 1. Text before cursor exactly matches '*', '-' or '1.'
18290
18892
  // 2. There's no non-text inline entities before cursor
18291
- return isAListPattern(textBeforeCursor) && !searcher.getNearestNonTextInlineElement();
18893
+ return listTrigger(textBeforeCursor) && !searcher.getNearestNonTextInlineElement();
18292
18894
  }
18293
18895
  return false;
18294
18896
  },
@@ -18301,22 +18903,35 @@ var AutoBullet = {
18301
18903
  var searcher = editor.getContentSearcherOfCursor();
18302
18904
  var textBeforeCursor = searcher.getSubStringBefore(4);
18303
18905
  var textRange = searcher.getRangeFromText(textBeforeCursor, true /*exactMatch*/);
18906
+ var listType = 0 /* None */;
18907
+ var listStyle;
18908
+ if (editor.isFeatureEnabled("AutoFormatList" /* AutoFormatList */)) {
18909
+ listType = (0, getListType_1.default)(textBeforeCursor);
18910
+ listStyle = (0, getListStyle_1.default)(textBeforeCursor, listType);
18911
+ }
18912
+ else {
18913
+ listType =
18914
+ textBeforeCursor.indexOf('*') == 0 || textBeforeCursor.indexOf('-') == 0
18915
+ ? 2 /* Unordered */
18916
+ : isAListPattern(textBeforeCursor)
18917
+ ? 1 /* Ordered */
18918
+ : 0 /* None */;
18919
+ }
18304
18920
  if (!textRange) {
18305
18921
  // no op if the range can't be found
18306
18922
  }
18307
- else if (textBeforeCursor.indexOf('*') == 0 ||
18308
- textBeforeCursor.indexOf('-') == 0) {
18923
+ else if (listType === 2 /* Unordered */) {
18309
18924
  prepareAutoBullet(editor, textRange);
18310
- (0, roosterjs_editor_api_1.toggleBullet)(editor);
18925
+ (0, roosterjs_editor_api_1.toggleBullet)(editor, listStyle);
18311
18926
  }
18312
- else if (isAListPattern(textBeforeCursor)) {
18927
+ else if (listType === 1 /* Ordered */) {
18313
18928
  prepareAutoBullet(editor, textRange);
18314
- (0, roosterjs_editor_api_1.toggleNumbering)(editor);
18929
+ (0, roosterjs_editor_api_1.toggleNumbering)(editor, undefined /* startNumber*/, listStyle);
18315
18930
  }
18316
18931
  else if ((regions = editor.getSelectedRegions()) && regions.length == 1) {
18317
18932
  var num = parseInt(textBeforeCursor);
18318
18933
  prepareAutoBullet(editor, textRange);
18319
- (0, roosterjs_editor_api_1.toggleNumbering)(editor, num);
18934
+ (0, roosterjs_editor_api_1.toggleNumbering)(editor, num, listStyle);
18320
18935
  }
18321
18936
  (_a = searcher.getRangeFromText(textBeforeCursor, true /*exactMatch*/)) === null || _a === void 0 ? void 0 : _a.deleteContents();
18322
18937
  }, null /*changeSource*/, true /*canUndoByBackspace*/);
@@ -18339,16 +18954,6 @@ var MaintainListChain = {
18339
18954
  editor.runAsync(function (editor) { return (0, roosterjs_editor_api_1.experimentCommitListChains)(editor, chains); });
18340
18955
  },
18341
18956
  };
18342
- /**
18343
- * Validate if a block of text is considered a list pattern
18344
- * The regex expression will look for patterns of the form:
18345
- * 1. 1> 1) 1- (1)
18346
- * @returns if a text is considered a list pattern
18347
- */
18348
- function isAListPattern(textBeforeCursor) {
18349
- var REGEX = /^(\*|-|[0-9]{1,2}\.|[0-9]{1,2}\>|[0-9]{1,2}\)|[0-9]{1,2}\-|\([0-9]{1,2}\))$/;
18350
- return REGEX.test(textBeforeCursor);
18351
- }
18352
18957
  function getListChains(editor) {
18353
18958
  return roosterjs_editor_dom_1.VListChain.createListChains(editor.getSelectedRegions());
18354
18959
  }
@@ -18654,7 +19259,9 @@ var commands = [
18654
19259
  createCommand(4096 /* Ctrl */ | 66 /* B */, 8192 /* Meta */ | 66 /* B */, roosterjs_editor_api_1.toggleBold),
18655
19260
  createCommand(4096 /* Ctrl */ | 73 /* I */, 8192 /* Meta */ | 73 /* I */, roosterjs_editor_api_1.toggleItalic),
18656
19261
  createCommand(4096 /* Ctrl */ | 85 /* U */, 8192 /* Meta */ | 85 /* U */, roosterjs_editor_api_1.toggleUnderline),
19262
+ createCommand(4096 /* Ctrl */ | 32 /* SPACE */, 8192 /* Meta */ | 32 /* SPACE */, roosterjs_editor_api_1.clearFormat),
18657
19263
  createCommand(4096 /* Ctrl */ | 90 /* Z */, 8192 /* Meta */ | 90 /* Z */, function (editor) { return editor.undo(); }),
19264
+ createCommand(18 /* ALT */ | 8 /* BACKSPACE */, 18 /* ALT */ | 8 /* BACKSPACE */, function (editor) { return editor.undo(); }),
18658
19265
  createCommand(4096 /* Ctrl */ | 89 /* Y */, 8192 /* Meta */ | 16384 /* Shift */ | 90 /* Z */, function (editor) { return editor.redo(); }),
18659
19266
  createCommand(4096 /* Ctrl */ | 190 /* PERIOD */, 8192 /* Meta */ | 190 /* PERIOD */, roosterjs_editor_api_1.toggleBullet),
18660
19267
  createCommand(4096 /* Ctrl */ | 191 /* FORWARD_SLASH */, 8192 /* Meta */ | 191 /* FORWARD_SLASH */, roosterjs_editor_api_1.toggleNumbering),
@@ -18666,6 +19273,8 @@ var commands = [
18666
19273
  * Ctrl/Meta+B: toggle bold style
18667
19274
  * Ctrl/Meta+I: toggle italic style
18668
19275
  * Ctrl/Meta+U: toggle underline style
19276
+ * Ctrl/Meta+Space: clear formatting
19277
+ * Alt+Backspace: undo
18669
19278
  * Ctrl/Meta+Z: undo
18670
19279
  * Ctrl+Y/Meta+Shift+Z: redo
18671
19280
  * Ctrl/Meta+PERIOD: toggle bullet list
@@ -18675,7 +19284,18 @@ var commands = [
18675
19284
  */
18676
19285
  var DefaultShortcut = {
18677
19286
  allowFunctionKeys: true,
18678
- keys: [66 /* B */, 73 /* I */, 85 /* U */, 89 /* Y */, 90 /* Z */, 188 /* COMMA */, 190 /* PERIOD */, 191 /* FORWARD_SLASH */],
19287
+ keys: [
19288
+ 66 /* B */,
19289
+ 73 /* I */,
19290
+ 85 /* U */,
19291
+ 89 /* Y */,
19292
+ 90 /* Z */,
19293
+ 188 /* COMMA */,
19294
+ 190 /* PERIOD */,
19295
+ 191 /* FORWARD_SLASH */,
19296
+ 32 /* SPACE */,
19297
+ 8 /* BACKSPACE */,
19298
+ ],
18679
19299
  shouldHandleEvent: cacheGetCommand,
18680
19300
  handleEvent: function (event, editor) {
18681
19301
  var command = cacheGetCommand(event);
@@ -18690,13 +19310,16 @@ function cacheGetCommand(event) {
18690
19310
  return (0, roosterjs_editor_dom_1.cacheGetEventData)(event, 'DEFAULT_SHORT_COMMAND', function () {
18691
19311
  var e = event.rawEvent;
18692
19312
  var key =
18693
- // Need to check ALT key to be false since in some language (e.g. Polski) uses AltGr to input some special characters
18694
- // In that case, ctrlKey and altKey are both true in Edge, but we should not trigger any shortcut function here
18695
- event.eventType == 0 /* KeyDown */ && !e.altKey
19313
+ // Need to check AltGraph isn't being pressed since some languages (e.g. Polski) use AltGr
19314
+ // to input some special characters. In that case, ctrlKey and altKey are both true in Edge,
19315
+ // but we should not trigger any shortcut function here. However, we still want to capture
19316
+ // the ALT+BACKSPACE combination.
19317
+ event.eventType == 0 /* KeyDown */ && !e.getModifierState('AltGraph')
18696
19318
  ? e.which |
18697
19319
  (e.metaKey && 8192 /* Meta */) |
18698
19320
  (e.shiftKey && 16384 /* Shift */) |
18699
- (e.ctrlKey && 4096 /* Ctrl */)
19321
+ (e.ctrlKey && 4096 /* Ctrl */) |
19322
+ (e.altKey && 18 /* ALT */)
18700
19323
  : 0;
18701
19324
  return key && commands.filter(function (cmd) { return (roosterjs_editor_dom_1.Browser.isMac ? cmd.macKey : cmd.winKey) == key; })[0];
18702
19325
  });
@@ -18944,6 +19567,15 @@ exports.TableFeatures = {
18944
19567
 
18945
19568
  "use strict";
18946
19569
 
19570
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
19571
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
19572
+ if (ar || !(i in from)) {
19573
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
19574
+ ar[i] = from[i];
19575
+ }
19576
+ }
19577
+ return to.concat(ar || Array.prototype.slice.call(from));
19578
+ };
18947
19579
  Object.defineProperty(exports, "__esModule", { value: true });
18948
19580
  exports.TextFeatures = void 0;
18949
19581
  var roosterjs_editor_api_1 = __webpack_require__(/*! roosterjs-editor-api */ "./packages/roosterjs-editor-api/lib/index.ts");
@@ -19018,12 +19650,38 @@ var OutdentWhenTabText = {
19018
19650
  event.rawEvent.preventDefault();
19019
19651
  },
19020
19652
  };
19653
+ /**
19654
+ * Requires @see ExperimentalFeatures.AutoHyphen to be enabled
19655
+ * Automatically transform -- into hyphen, if typed between two words.
19656
+ */
19657
+ var AutoHyphen = {
19658
+ keys: __spreadArray(__spreadArray([], createNumberSequenceArray(48, 57), true), createNumberSequenceArray(65, 90), true),
19659
+ shouldHandleEvent: function (event, editor) {
19660
+ var searcher = editor.getContentSearcherOfCursor(event);
19661
+ var textBeforeCursor = searcher.getSubStringBefore(3);
19662
+ var hasDashes = textBeforeCursor[2] === '-' && textBeforeCursor[1] === '-';
19663
+ var noSpace = textBeforeCursor[0] !== ' ';
19664
+ return hasDashes && noSpace && editor.isFeatureEnabled("AutoHyphen" /* AutoHyphen */);
19665
+ },
19666
+ handleEvent: function (event, editor) {
19667
+ var searcher = editor.getContentSearcherOfCursor(event);
19668
+ var dashes = searcher.getSubStringBefore(2);
19669
+ var textRange = searcher.getRangeFromText(dashes, true /* exactMatch */);
19670
+ var nodeHyphen = document.createTextNode('—');
19671
+ editor.addUndoSnapshot(function () {
19672
+ textRange.deleteContents();
19673
+ textRange.insertNode(nodeHyphen);
19674
+ editor.select(nodeHyphen, -1 /* End */);
19675
+ }, null /*changeSource*/, true /*canUndoByBackspace*/);
19676
+ },
19677
+ };
19021
19678
  /**
19022
19679
  * @internal
19023
19680
  */
19024
19681
  exports.TextFeatures = {
19025
19682
  indentWhenTabText: IndentWhenTabText,
19026
19683
  outdentWhenTabText: OutdentWhenTabText,
19684
+ autoHyphen: AutoHyphen,
19027
19685
  };
19028
19686
  function shouldSetIndentation(editor, range) {
19029
19687
  var result = false;
@@ -19031,6 +19689,9 @@ function shouldSetIndentation(editor, range) {
19031
19689
  var endPosition = roosterjs_editor_dom_1.Position.getEnd(range);
19032
19690
  var firstBlock = editor.getBlockElementAtNode(startPosition.node);
19033
19691
  var lastBlock = editor.getBlockElementAtNode(endPosition.node);
19692
+ if (!firstBlock || !lastBlock) {
19693
+ return false;
19694
+ }
19034
19695
  if (!firstBlock.equals(lastBlock)) {
19035
19696
  //If the selections has more than one block, we indent all the blocks in the selection
19036
19697
  return true;
@@ -19078,6 +19739,9 @@ function insertTab(editor, event) {
19078
19739
  editor.deleteNode(span2);
19079
19740
  }
19080
19741
  }
19742
+ function createNumberSequenceArray(start, end) {
19743
+ return new Array(end - start).fill(start).map(function (keyCodeValue, i) { return i + start; });
19744
+ }
19081
19745
 
19082
19746
 
19083
19747
  /***/ }),
@@ -19142,6 +19806,161 @@ var getAllFeatures_1 = __webpack_require__(/*! ./getAllFeatures */ "./packages/r
19142
19806
  Object.defineProperty(exports, "getAllFeatures", { enumerable: true, get: function () { return getAllFeatures_1.default; } });
19143
19807
 
19144
19808
 
19809
+ /***/ }),
19810
+
19811
+ /***/ "./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getListStyle.ts":
19812
+ /*!*****************************************************************************************!*\
19813
+ !*** ./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getListStyle.ts ***!
19814
+ \*****************************************************************************************/
19815
+ /*! no static exports found */
19816
+ /***/ (function(module, exports, __webpack_require__) {
19817
+
19818
+ "use strict";
19819
+
19820
+ var _a, _b, _c, _d, _e, _f;
19821
+ Object.defineProperty(exports, "__esModule", { value: true });
19822
+ var characters = {
19823
+ '.': 0 /* Dot */,
19824
+ '-': 1 /* Dash */,
19825
+ ')': 2 /* Parenthesis */,
19826
+ '(': 3 /* DoubleParenthesis */,
19827
+ };
19828
+ var identifyCharacter = function (text) {
19829
+ var char = text[0] === '(' ? text[0] : text[text.length - 1];
19830
+ return characters[char];
19831
+ };
19832
+ var identifyNumberingType = function (text) {
19833
+ var char = text[0] === '(' ? text[1] : text[0];
19834
+ if (!isNaN(parseInt(char))) {
19835
+ return 0 /* Decimal */;
19836
+ }
19837
+ else if (/[a-z]+/g.test(char)) {
19838
+ if (char === 'i') {
19839
+ return 3 /* LowerRoman */;
19840
+ }
19841
+ else {
19842
+ return 1 /* LowerAlpha */;
19843
+ }
19844
+ }
19845
+ else if (/[A-Z]+/g.test(char)) {
19846
+ if (char === 'I') {
19847
+ return 4 /* UpperRoman */;
19848
+ }
19849
+ else {
19850
+ return 2 /* UpperAlpha */;
19851
+ }
19852
+ }
19853
+ };
19854
+ var numberingListTypes = (_a = {},
19855
+ _a[0 /* Decimal */] = function (char) { return DecimalsTypes[char]; },
19856
+ _a[1 /* LowerAlpha */] = function (char) { return LowerAlphaTypes[char]; },
19857
+ _a[2 /* UpperAlpha */] = function (char) { return UpperAlphaTypes[char]; },
19858
+ _a[3 /* LowerRoman */] = function (char) { return LowerRomanTypes[char]; },
19859
+ _a[4 /* UpperRoman */] = function (char) { return UpperRomanTypes[char]; },
19860
+ _a);
19861
+ var UpperRomanTypes = (_b = {},
19862
+ _b[0 /* Dot */] = 16 /* UpperRoman */,
19863
+ _b[1 /* Dash */] = 19 /* UpperRomanDash */,
19864
+ _b[2 /* Parenthesis */] = 17 /* UpperRomanParenthesis */,
19865
+ _b[3 /* DoubleParenthesis */] = 18 /* UpperRomanDoubleParenthesis */,
19866
+ _b);
19867
+ var LowerRomanTypes = (_c = {},
19868
+ _c[0 /* Dot */] = 12 /* LowerRoman */,
19869
+ _c[1 /* Dash */] = 15 /* LowerRomanDash */,
19870
+ _c[2 /* Parenthesis */] = 13 /* LowerRomanParenthesis */,
19871
+ _c[3 /* DoubleParenthesis */] = 14 /* LowerRomanDoubleParenthesis */,
19872
+ _c);
19873
+ var UpperAlphaTypes = (_d = {},
19874
+ _d[0 /* Dot */] = 8 /* UpperAlpha */,
19875
+ _d[1 /* Dash */] = 11 /* UpperAlphaDash */,
19876
+ _d[2 /* Parenthesis */] = 9 /* UpperAlphaParenthesis */,
19877
+ _d[3 /* DoubleParenthesis */] = 10 /* UpperAlphaDoubleParenthesis */,
19878
+ _d);
19879
+ var LowerAlphaTypes = (_e = {},
19880
+ _e[0 /* Dot */] = 4 /* LowerAlpha */,
19881
+ _e[1 /* Dash */] = 7 /* LowerAlphaDash */,
19882
+ _e[2 /* Parenthesis */] = 5 /* LowerAlphaParenthesis */,
19883
+ _e[3 /* DoubleParenthesis */] = 6 /* LowerAlphaDoubleParenthesis */,
19884
+ _e);
19885
+ var DecimalsTypes = (_f = {},
19886
+ _f[0 /* Dot */] = 0 /* Decimal */,
19887
+ _f[1 /* Dash */] = 1 /* DecimalDash */,
19888
+ _f[2 /* Parenthesis */] = 2 /* DecimalParenthesis */,
19889
+ _f[3 /* DoubleParenthesis */] = 3 /* DecimalDoubleParenthesis */,
19890
+ _f);
19891
+ var bulletListType = {
19892
+ '*': 0 /* Disc */,
19893
+ '-': 1 /* Dash */,
19894
+ '--': 2 /* Square */,
19895
+ '->': 4 /* LongArrow */,
19896
+ '-->': 4 /* LongArrow */,
19897
+ '=>': 5 /* UnfilledArrow */,
19898
+ '>': 3 /* ShortArrow */,
19899
+ };
19900
+ var identifyNumberingListType = function (textBeforeCursor) {
19901
+ var numbering = textBeforeCursor.replace(/\s/g, '');
19902
+ var char = identifyCharacter(numbering);
19903
+ var numberingType = identifyNumberingType(numbering);
19904
+ return numberingListTypes[numberingType](char);
19905
+ };
19906
+ var identifyBulletListType = function (textBeforeCursor) {
19907
+ var bullet = textBeforeCursor.replace(/\s/g, '');
19908
+ return bulletListType[bullet];
19909
+ };
19910
+ /**
19911
+ * @internal
19912
+ * @param textBeforeCursor The trigger character
19913
+ * @param listType The type of the list (ordered or unordered)
19914
+ * @returns the style of the list
19915
+ */
19916
+ function getListStyle(textBeforeCursor, listType) {
19917
+ if (listType === 1 /* Ordered */) {
19918
+ return identifyNumberingListType(textBeforeCursor);
19919
+ }
19920
+ else {
19921
+ return identifyBulletListType(textBeforeCursor);
19922
+ }
19923
+ }
19924
+ exports.default = getListStyle;
19925
+
19926
+
19927
+ /***/ }),
19928
+
19929
+ /***/ "./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getListType.ts":
19930
+ /*!****************************************************************************************!*\
19931
+ !*** ./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getListType.ts ***!
19932
+ \****************************************************************************************/
19933
+ /*! no static exports found */
19934
+ /***/ (function(module, exports, __webpack_require__) {
19935
+
19936
+ "use strict";
19937
+
19938
+ Object.defineProperty(exports, "__esModule", { value: true });
19939
+ function isABulletList(textBeforeCursor) {
19940
+ var hasTriggers = ['*', '-', '>'].indexOf(textBeforeCursor[0]) > -1;
19941
+ var REGEX = /^(.*?)=>|^(.*?)->|^(.*?)-->|^(.*?)=>|^(.*?)--/;
19942
+ return hasTriggers || REGEX.test(textBeforeCursor);
19943
+ }
19944
+ function isANumberingList(textBeforeCursor) {
19945
+ var REGEX = /^([1-9,a-z, i,A-Z,I]{1,2}\.|[1-9,a-z, i,A-Z,I]{1,2}\)|[1-9,a-z, i,A-Z,I]{1,2}\-|\([1-9,a-z, i,A-Z,I]{1,2}\))$/;
19946
+ return REGEX.test(textBeforeCursor.replace(/\s/g, ''));
19947
+ }
19948
+ /**
19949
+ * @internal
19950
+ * @param textBeforeCursor The trigger character
19951
+ * @returns If the list is ordered or unordered
19952
+ */
19953
+ function getListType(textBeforeCursor) {
19954
+ if (isABulletList(textBeforeCursor)) {
19955
+ return 2 /* Unordered */;
19956
+ }
19957
+ else if (isANumberingList(textBeforeCursor)) {
19958
+ return 1 /* Ordered */;
19959
+ }
19960
+ }
19961
+ exports.default = getListType;
19962
+
19963
+
19145
19964
  /***/ }),
19146
19965
 
19147
19966
  /***/ "./packages/roosterjs-editor-plugins/lib/plugins/ContextMenu/ContextMenu.ts":
@@ -19823,9 +20642,13 @@ var ImageEdit = /** @class */ (function () {
19823
20642
  /**
19824
20643
  * Create a new instance of ImageEdit
19825
20644
  * @param options Image editing options
20645
+ * @param onShowResizeHandle An optional callback to allow customize resize handle element of image resizing.
20646
+ * To customize the resize handle element, add this callback and change the attributes of elementData then it
20647
+ * will be picked up by ImageEdit code
19826
20648
  */
19827
- function ImageEdit(options) {
20649
+ function ImageEdit(options, onShowResizeHandle) {
19828
20650
  var _this = this;
20651
+ this.onShowResizeHandle = onShowResizeHandle;
19829
20652
  // Allowed editing operations
19830
20653
  this.allowedOperations = 1 /* CornerResize */;
19831
20654
  /**
@@ -20078,7 +20901,7 @@ var ImageEdit = /** @class */ (function () {
20078
20901
  var htmlData = [(0, Resizer_1.getResizeBordersHTML)(options)];
20079
20902
  Object.keys(ImageEditHTMLMap).forEach(function (thisOperation) {
20080
20903
  if ((operation & thisOperation) == thisOperation) {
20081
- (0, roosterjs_editor_dom_1.arrayPush)(htmlData, ImageEditHTMLMap[thisOperation](options));
20904
+ (0, roosterjs_editor_dom_1.arrayPush)(htmlData, ImageEditHTMLMap[thisOperation](options, _this.onShowResizeHandle));
20082
20905
  }
20083
20906
  });
20084
20907
  htmlData.forEach(function (data) {
@@ -20962,16 +21785,20 @@ exports.doubleCheckResize = doubleCheckResize;
20962
21785
  * @internal
20963
21786
  * Get HTML for resize handles at the corners
20964
21787
  */
20965
- function getCornerResizeHTML(_a) {
21788
+ function getCornerResizeHTML(_a, onShowResizeHandle) {
20966
21789
  var resizeBorderColor = _a.borderColor, handlesExperimentalFeatures = _a.handlesExperimentalFeatures;
20967
21790
  var result = [];
20968
21791
  Xs.forEach(function (x) {
20969
21792
  return Ys.forEach(function (y) {
20970
- return result.push((x == '') == (y == '')
21793
+ var elementData = (x == '') == (y == '')
20971
21794
  ? getResizeHandleHTML(x, y, resizeBorderColor, handlesExperimentalFeatures
20972
21795
  ? 1 /* CircularHandlesCorner */
20973
21796
  : 0 /* SquareHandles */)
20974
- : null);
21797
+ : null;
21798
+ if (onShowResizeHandle) {
21799
+ onShowResizeHandle(elementData, x, y);
21800
+ }
21801
+ result.push(elementData);
20975
21802
  });
20976
21803
  });
20977
21804
  return result;
@@ -20981,7 +21808,7 @@ exports.getCornerResizeHTML = getCornerResizeHTML;
20981
21808
  * @internal
20982
21809
  * Get HTML for resize handles on the sides
20983
21810
  */
20984
- function getSideResizeHTML(_a) {
21811
+ function getSideResizeHTML(_a, onShowResizeHandle) {
20985
21812
  var resizeBorderColor = _a.borderColor, isSmallImage = _a.isSmallImage, handlesExperimentalFeatures = _a.handlesExperimentalFeatures;
20986
21813
  if (isSmallImage) {
20987
21814
  return null;
@@ -20989,11 +21816,15 @@ function getSideResizeHTML(_a) {
20989
21816
  var result = [];
20990
21817
  Xs.forEach(function (x) {
20991
21818
  return Ys.forEach(function (y) {
20992
- return result.push((x == '') != (y == '')
21819
+ var elementData = (x == '') != (y == '')
20993
21820
  ? getResizeHandleHTML(x, y, resizeBorderColor, handlesExperimentalFeatures
20994
21821
  ? 1 /* CircularHandlesCorner */
20995
21822
  : 0 /* SquareHandles */)
20996
- : null);
21823
+ : null;
21824
+ if (onShowResizeHandle) {
21825
+ onShowResizeHandle(elementData, x, y);
21826
+ }
21827
+ result.push(elementData);
20997
21828
  });
20998
21829
  });
20999
21830
  return result;
@@ -21308,6 +22139,7 @@ var convertPastedContentFromExcel_1 = __webpack_require__(/*! ./excelConverter/c
21308
22139
  var convertPastedContentFromPowerPoint_1 = __webpack_require__(/*! ./pptConverter/convertPastedContentFromPowerPoint */ "./packages/roosterjs-editor-plugins/lib/plugins/Paste/pptConverter/convertPastedContentFromPowerPoint.ts");
21309
22140
  var convertPastedContentFromWord_1 = __webpack_require__(/*! ./wordConverter/convertPastedContentFromWord */ "./packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/convertPastedContentFromWord.ts");
21310
22141
  var handleLineMerge_1 = __webpack_require__(/*! ./lineMerge/handleLineMerge */ "./packages/roosterjs-editor-plugins/lib/plugins/Paste/lineMerge/handleLineMerge.ts");
22142
+ var sanitizeHtmlColorsFromPastedContent_1 = __webpack_require__(/*! ./sanitizeHtmlColorsFromPastedContent/sanitizeHtmlColorsFromPastedContent */ "./packages/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeHtmlColorsFromPastedContent/sanitizeHtmlColorsFromPastedContent.ts");
21311
22143
  var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./packages/roosterjs-editor-dom/lib/index.ts");
21312
22144
  var convertPastedContentFromWordOnline_1 = __webpack_require__(/*! ./officeOnlineConverter/convertPastedContentFromWordOnline */ "./packages/roosterjs-editor-plugins/lib/plugins/Paste/officeOnlineConverter/convertPastedContentFromWordOnline.ts");
21313
22145
  var WORD_ATTRIBUTE_NAME = 'xmlns:w';
@@ -21402,6 +22234,7 @@ var Paste = /** @class */ (function () {
21402
22234
  (0, convertPastedContentForLI_1.default)(fragment);
21403
22235
  (0, handleLineMerge_1.default)(fragment);
21404
22236
  }
22237
+ (0, sanitizeHtmlColorsFromPastedContent_1.default)(sanitizingOption);
21405
22238
  // Replace unknown tags with SPAN
21406
22239
  sanitizingOption.unknownTagReplacement = this.unknownTagReplacement;
21407
22240
  }
@@ -21999,6 +22832,77 @@ function convertPastedContentFromPowerPoint(event, trustedHTMLHandler) {
21999
22832
  exports.default = convertPastedContentFromPowerPoint;
22000
22833
 
22001
22834
 
22835
+ /***/ }),
22836
+
22837
+ /***/ "./packages/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeHtmlColorsFromPastedContent/deprecatedColorList.ts":
22838
+ /*!************************************************************************************************************************!*\
22839
+ !*** ./packages/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeHtmlColorsFromPastedContent/deprecatedColorList.ts ***!
22840
+ \************************************************************************************************************************/
22841
+ /*! no static exports found */
22842
+ /***/ (function(module, exports, __webpack_require__) {
22843
+
22844
+ "use strict";
22845
+
22846
+ /**
22847
+ * @internal
22848
+ * List of deprecated colors that should be removed
22849
+ */
22850
+ Object.defineProperty(exports, "__esModule", { value: true });
22851
+ exports.DeprecatedColorList = void 0;
22852
+ exports.DeprecatedColorList = [
22853
+ 'activeborder',
22854
+ 'activecaption',
22855
+ 'appworkspace',
22856
+ 'background',
22857
+ 'buttonhighlight',
22858
+ 'buttonshadow',
22859
+ 'captiontext',
22860
+ 'inactiveborder',
22861
+ 'inactivecaption',
22862
+ 'inactivecaptiontext',
22863
+ 'infobackground',
22864
+ 'infotext',
22865
+ 'menu',
22866
+ 'menutext',
22867
+ 'scrollbar',
22868
+ 'threeddarkshadow',
22869
+ 'threedface',
22870
+ 'threedhighlight',
22871
+ 'threedlightshadow',
22872
+ 'threedfhadow',
22873
+ 'window',
22874
+ 'windowframe',
22875
+ 'windowtext',
22876
+ ];
22877
+
22878
+
22879
+ /***/ }),
22880
+
22881
+ /***/ "./packages/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeHtmlColorsFromPastedContent/sanitizeHtmlColorsFromPastedContent.ts":
22882
+ /*!****************************************************************************************************************************************!*\
22883
+ !*** ./packages/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeHtmlColorsFromPastedContent/sanitizeHtmlColorsFromPastedContent.ts ***!
22884
+ \****************************************************************************************************************************************/
22885
+ /*! no static exports found */
22886
+ /***/ (function(module, exports, __webpack_require__) {
22887
+
22888
+ "use strict";
22889
+
22890
+ Object.defineProperty(exports, "__esModule", { value: true });
22891
+ var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./packages/roosterjs-editor-dom/lib/index.ts");
22892
+ var deprecatedColorList_1 = __webpack_require__(/*! ./deprecatedColorList */ "./packages/roosterjs-editor-plugins/lib/plugins/Paste/sanitizeHtmlColorsFromPastedContent/deprecatedColorList.ts");
22893
+ /**
22894
+ * @internal
22895
+ * Remove the deprecated colors from pasted content
22896
+ * @param sanitizingOption the sanitizingOption of BeforePasteEvent
22897
+ * */
22898
+ function sanitizeHtmlColorsFromPastedContent(sanitizingOption) {
22899
+ ['color', 'background-color'].forEach(function (property) {
22900
+ (0, roosterjs_editor_dom_1.chainSanitizerCallback)(sanitizingOption.cssStyleCallbacks, property, function (value) { return deprecatedColorList_1.DeprecatedColorList.indexOf(value) < 0; });
22901
+ });
22902
+ }
22903
+ exports.default = sanitizeHtmlColorsFromPastedContent;
22904
+
22905
+
22002
22906
  /***/ }),
22003
22907
 
22004
22908
  /***/ "./packages/roosterjs-editor-plugins/lib/plugins/Paste/wordConverter/LevelLists.ts":
@@ -23535,7 +24439,7 @@ var TableCellSelection = /** @class */ (function () {
23535
24439
  if (shiftKey) {
23536
24440
  if (!this.firstTarget) {
23537
24441
  var pos = this.editor.getFocusedPosition();
23538
- var cell = getCellAtCursor(this.editor, pos.node);
24442
+ var cell = pos && getCellAtCursor(this.editor, pos.node);
23539
24443
  this.firstTarget = this.firstTarget || cell;
23540
24444
  }
23541
24445
  //If first target is not a table cell, we should ignore this plugin
@@ -23544,7 +24448,10 @@ var TableCellSelection = /** @class */ (function () {
23544
24448
  }
23545
24449
  this.editor.runAsync(function (editor) {
23546
24450
  var pos = editor.getFocusedPosition();
23547
- _this.setData(_this.tableSelection ? _this.lastTarget : pos.node);
24451
+ var newTarget = _this.tableSelection ? _this.lastTarget : pos === null || pos === void 0 ? void 0 : pos.node;
24452
+ if (newTarget) {
24453
+ _this.setData(newTarget);
24454
+ }
23548
24455
  if (_this.firstTable == _this.targetTable) {
23549
24456
  if (!_this.shouldConvertToTableSelection() && !_this.tableSelection) {
23550
24457
  return;
@@ -24129,7 +25036,7 @@ var TableResize = /** @class */ (function () {
24129
25036
  break;
24130
25037
  }
24131
25038
  }
24132
- _this.setTableEditor(currentTable);
25039
+ _this.setTableEditor(currentTable, e);
24133
25040
  (_a = _this.tableEditor) === null || _a === void 0 ? void 0 : _a.onMouseMove(x, y);
24134
25041
  };
24135
25042
  this.invalidateTableRects = function () {
@@ -24174,13 +25081,13 @@ var TableResize = /** @class */ (function () {
24174
25081
  break;
24175
25082
  }
24176
25083
  };
24177
- TableResize.prototype.setTableEditor = function (table) {
25084
+ TableResize.prototype.setTableEditor = function (table, e) {
24178
25085
  if (this.tableEditor && table != this.tableEditor.table) {
24179
25086
  this.tableEditor.dispose();
24180
25087
  this.tableEditor = null;
24181
25088
  }
24182
25089
  if (!this.tableEditor && table) {
24183
- this.tableEditor = new TableEditor_1.default(this.editor, table, this.invalidateTableRects, this.onShowHelperElement);
25090
+ this.tableEditor = new TableEditor_1.default(this.editor, table, this.invalidateTableRects, this.onShowHelperElement, e);
24184
25091
  }
24185
25092
  };
24186
25093
  TableResize.prototype.ensureTableRects = function () {
@@ -24424,12 +25331,13 @@ var INSERTER_HOVER_OFFSET = 5;
24424
25331
  * When set a different current table or change current TD, we need to update these areas
24425
25332
  */
24426
25333
  var TableEditor = /** @class */ (function () {
24427
- function TableEditor(editor, table, onChanged, onShowHelperElement) {
25334
+ function TableEditor(editor, table, onChanged, onShowHelperElement, event) {
24428
25335
  var _this = this;
24429
25336
  this.editor = editor;
24430
25337
  this.table = table;
24431
25338
  this.onChanged = onChanged;
24432
25339
  this.onShowHelperElement = onShowHelperElement;
25340
+ this.event = event;
24433
25341
  this.onFinishEditing = function () {
24434
25342
  _this.editor.focus();
24435
25343
  _this.editor.select(_this.start, _this.end);
@@ -24475,7 +25383,7 @@ var TableEditor = /** @class */ (function () {
24475
25383
  };
24476
25384
  this.isRTL = (0, roosterjs_editor_dom_1.getComputedStyle)(table, 'direction') == 'rtl';
24477
25385
  this.tableResizer = (0, TableResizer_1.default)(table, editor.getZoomScale(), this.isRTL, this.onStartTableResize, this.onFinishEditing, this.onShowHelperElement);
24478
- this.tableSelector = (0, TableSelector_1.default)(table, editor.getZoomScale(), this.onSelect, this.onShowHelperElement);
25386
+ this.tableSelector = (0, TableSelector_1.default)(table, editor.getZoomScale(), this.onSelect, this.onShowHelperElement, this.getShouldShowTableSelectorHandler(this.event));
24479
25387
  }
24480
25388
  TableEditor.prototype.dispose = function () {
24481
25389
  this.disposeTableResizer();
@@ -24587,6 +25495,13 @@ var TableEditor = /** @class */ (function () {
24587
25495
  }
24588
25496
  this.editor.addUndoSnapshot();
24589
25497
  };
25498
+ TableEditor.prototype.getShouldShowTableSelectorHandler = function (e) {
25499
+ if ((0, roosterjs_editor_dom_1.safeInstanceOf)(e.currentTarget, 'HTMLElement')) {
25500
+ var containerRect_1 = (0, roosterjs_editor_dom_1.normalizeRect)(e.currentTarget.getBoundingClientRect());
25501
+ return function (rect) { return containerRect_1.top <= rect.top; };
25502
+ }
25503
+ return function () { return true; };
25504
+ };
24590
25505
  return TableEditor;
24591
25506
  }());
24592
25507
  exports.default = TableEditor;
@@ -24846,7 +25761,11 @@ var TABLE_SELECTOR_ID = '_Table_Selector';
24846
25761
  /**
24847
25762
  * @internal
24848
25763
  */
24849
- function createTableSelector(table, zoomScale, onFinishDragging, onShowHelperElement) {
25764
+ function createTableSelector(table, zoomScale, onFinishDragging, onShowHelperElement, shouldShow) {
25765
+ var rect = (0, roosterjs_editor_dom_1.normalizeRect)(table.getBoundingClientRect());
25766
+ if (!shouldShow(rect)) {
25767
+ return undefined;
25768
+ }
24850
25769
  var document = table.ownerDocument;
24851
25770
  var createElementData = {
24852
25771
  tag: 'div',
@@ -24861,6 +25780,7 @@ function createTableSelector(table, zoomScale, onFinishDragging, onShowHelperEle
24861
25780
  var context = {
24862
25781
  table: table,
24863
25782
  zoomScale: zoomScale,
25783
+ rect: rect,
24864
25784
  };
24865
25785
  setSelectorDivPosition(context, div);
24866
25786
  var onDragEnd = function (context, event) {
@@ -24876,8 +25796,7 @@ function createTableSelector(table, zoomScale, onFinishDragging, onShowHelperEle
24876
25796
  }
24877
25797
  exports.default = createTableSelector;
24878
25798
  function setSelectorDivPosition(context, trigger) {
24879
- var table = context.table;
24880
- var rect = (0, roosterjs_editor_dom_1.normalizeRect)(table.getBoundingClientRect());
25799
+ var rect = context.rect;
24881
25800
  if (rect) {
24882
25801
  trigger.style.top = rect.top - TABLE_SELECTOR_LENGTH + "px";
24883
25802
  trigger.style.left = rect.left - TABLE_SELECTOR_LENGTH - 2 + "px";
@@ -25101,6 +26020,51 @@ var CompatibleAlignment;
25101
26020
  })(CompatibleAlignment = exports.CompatibleAlignment || (exports.CompatibleAlignment = {}));
25102
26021
 
25103
26022
 
26023
+ /***/ }),
26024
+
26025
+ /***/ "./packages/roosterjs-editor-types/lib/compatibleEnum/BulletListType.ts":
26026
+ /*!******************************************************************************!*\
26027
+ !*** ./packages/roosterjs-editor-types/lib/compatibleEnum/BulletListType.ts ***!
26028
+ \******************************************************************************/
26029
+ /*! no static exports found */
26030
+ /***/ (function(module, exports, __webpack_require__) {
26031
+
26032
+ "use strict";
26033
+
26034
+ Object.defineProperty(exports, "__esModule", { value: true });
26035
+ exports.CompatibleBulletListType = void 0;
26036
+ /**
26037
+ * Enum used to control the different types of bullet list
26038
+ */
26039
+ var CompatibleBulletListType;
26040
+ (function (CompatibleBulletListType) {
26041
+ /**
26042
+ * Bullet triggered by *
26043
+ */
26044
+ CompatibleBulletListType[CompatibleBulletListType["Disc"] = 0] = "Disc";
26045
+ /**
26046
+ * Bullet triggered by -
26047
+ */
26048
+ CompatibleBulletListType[CompatibleBulletListType["Dash"] = 1] = "Dash";
26049
+ /**
26050
+ * Bullet triggered by --
26051
+ */
26052
+ CompatibleBulletListType[CompatibleBulletListType["Square"] = 2] = "Square";
26053
+ /**
26054
+ * Bullet triggered by >
26055
+ */
26056
+ CompatibleBulletListType[CompatibleBulletListType["ShortArrow"] = 3] = "ShortArrow";
26057
+ /**
26058
+ * Bullet triggered by -> or -->
26059
+ */
26060
+ CompatibleBulletListType[CompatibleBulletListType["LongArrow"] = 4] = "LongArrow";
26061
+ /**
26062
+ * Bullet triggered by =>
26063
+ */
26064
+ CompatibleBulletListType[CompatibleBulletListType["UnfilledArrow"] = 5] = "UnfilledArrow";
26065
+ })(CompatibleBulletListType = exports.CompatibleBulletListType || (exports.CompatibleBulletListType = {}));
26066
+
26067
+
25104
26068
  /***/ }),
25105
26069
 
25106
26070
  /***/ "./packages/roosterjs-editor-types/lib/compatibleEnum/Capitalization.ts":
@@ -25399,6 +26363,51 @@ var CompatibleDarkModeDatasetNames;
25399
26363
  })(CompatibleDarkModeDatasetNames = exports.CompatibleDarkModeDatasetNames || (exports.CompatibleDarkModeDatasetNames = {}));
25400
26364
 
25401
26365
 
26366
+ /***/ }),
26367
+
26368
+ /***/ "./packages/roosterjs-editor-types/lib/compatibleEnum/DefinitionType.ts":
26369
+ /*!******************************************************************************!*\
26370
+ !*** ./packages/roosterjs-editor-types/lib/compatibleEnum/DefinitionType.ts ***!
26371
+ \******************************************************************************/
26372
+ /*! no static exports found */
26373
+ /***/ (function(module, exports, __webpack_require__) {
26374
+
26375
+ "use strict";
26376
+
26377
+ Object.defineProperty(exports, "__esModule", { value: true });
26378
+ exports.CompatibleDefinitionType = void 0;
26379
+ /**
26380
+ * Types of definitions, used by Definition type
26381
+ */
26382
+ var CompatibleDefinitionType;
26383
+ (function (CompatibleDefinitionType) {
26384
+ /**
26385
+ * Boolean type definition, represents a boolean type value
26386
+ */
26387
+ CompatibleDefinitionType[CompatibleDefinitionType["Boolean"] = 0] = "Boolean";
26388
+ /**
26389
+ * Number type definition, represents a number type value
26390
+ */
26391
+ CompatibleDefinitionType[CompatibleDefinitionType["Number"] = 1] = "Number";
26392
+ /**
26393
+ * String type definition, represents a string type value
26394
+ */
26395
+ CompatibleDefinitionType[CompatibleDefinitionType["String"] = 2] = "String";
26396
+ /**
26397
+ * Array type definition, represents an array with a given item type
26398
+ */
26399
+ CompatibleDefinitionType[CompatibleDefinitionType["Array"] = 3] = "Array";
26400
+ /**
26401
+ * Object type definition, represents an object with the given property types
26402
+ */
26403
+ CompatibleDefinitionType[CompatibleDefinitionType["Object"] = 4] = "Object";
26404
+ /**
26405
+ * Customize type definition, represents a customized type with a validator function
26406
+ */
26407
+ CompatibleDefinitionType[CompatibleDefinitionType["Customize"] = 5] = "Customize";
26408
+ })(CompatibleDefinitionType = exports.CompatibleDefinitionType || (exports.CompatibleDefinitionType = {}));
26409
+
26410
+
25402
26411
  /***/ }),
25403
26412
 
25404
26413
  /***/ "./packages/roosterjs-editor-types/lib/compatibleEnum/Direction.ts":
@@ -25899,6 +26908,14 @@ var CompatibleExperimentalFeatures;
25899
26908
  * Align list elements elements to left, center and right using setAlignment API
25900
26909
  */
25901
26910
  CompatibleExperimentalFeatures["ListItemAlignment"] = "ListItemAlignment";
26911
+ /**
26912
+ * Trigger formatting by a especial characters. Ex: (A), 1. i).
26913
+ */
26914
+ CompatibleExperimentalFeatures["AutoFormatList"] = "AutoFormatList";
26915
+ /**
26916
+ * Automatically transform -- into hyphen, if typed between two words.
26917
+ */
26918
+ CompatibleExperimentalFeatures["AutoHyphen"] = "AutoHyphen";
25902
26919
  })(CompatibleExperimentalFeatures = exports.CompatibleExperimentalFeatures || (exports.CompatibleExperimentalFeatures = {}));
25903
26920
 
25904
26921
 
@@ -26284,6 +27301,107 @@ var CompatibleNodeType;
26284
27301
  })(CompatibleNodeType = exports.CompatibleNodeType || (exports.CompatibleNodeType = {}));
26285
27302
 
26286
27303
 
27304
+ /***/ }),
27305
+
27306
+ /***/ "./packages/roosterjs-editor-types/lib/compatibleEnum/NumberingListType.ts":
27307
+ /*!*********************************************************************************!*\
27308
+ !*** ./packages/roosterjs-editor-types/lib/compatibleEnum/NumberingListType.ts ***!
27309
+ \*********************************************************************************/
27310
+ /*! no static exports found */
27311
+ /***/ (function(module, exports, __webpack_require__) {
27312
+
27313
+ "use strict";
27314
+
27315
+ Object.defineProperty(exports, "__esModule", { value: true });
27316
+ exports.CompatibleNumberingListType = void 0;
27317
+ /**
27318
+ * Enum used to control the different types of numbering list
27319
+ */
27320
+ var CompatibleNumberingListType;
27321
+ (function (CompatibleNumberingListType) {
27322
+ /**
27323
+ * Numbering triggered by 1.
27324
+ */
27325
+ CompatibleNumberingListType[CompatibleNumberingListType["Decimal"] = 0] = "Decimal";
27326
+ /**
27327
+ * Numbering triggered by 1-
27328
+ */
27329
+ CompatibleNumberingListType[CompatibleNumberingListType["DecimalDash"] = 1] = "DecimalDash";
27330
+ /**
27331
+ * Numbering triggered by 1)
27332
+ */
27333
+ CompatibleNumberingListType[CompatibleNumberingListType["DecimalParenthesis"] = 2] = "DecimalParenthesis";
27334
+ /**
27335
+ * Numbering triggered by (1)
27336
+ */
27337
+ CompatibleNumberingListType[CompatibleNumberingListType["DecimalDoubleParenthesis"] = 3] = "DecimalDoubleParenthesis";
27338
+ /**
27339
+ * Numbering triggered by a.
27340
+ */
27341
+ CompatibleNumberingListType[CompatibleNumberingListType["LowerAlpha"] = 4] = "LowerAlpha";
27342
+ /**
27343
+ * Numbering triggered by a)
27344
+ */
27345
+ CompatibleNumberingListType[CompatibleNumberingListType["LowerAlphaParenthesis"] = 5] = "LowerAlphaParenthesis";
27346
+ /**
27347
+ * Numbering triggered by (a)
27348
+ */
27349
+ CompatibleNumberingListType[CompatibleNumberingListType["LowerAlphaDoubleParenthesis"] = 6] = "LowerAlphaDoubleParenthesis";
27350
+ /**
27351
+ * Numbering triggered by a-
27352
+ */
27353
+ CompatibleNumberingListType[CompatibleNumberingListType["LowerAlphaDash"] = 7] = "LowerAlphaDash";
27354
+ /**
27355
+ * Numbering triggered by A.
27356
+ */
27357
+ CompatibleNumberingListType[CompatibleNumberingListType["UpperAlpha"] = 8] = "UpperAlpha";
27358
+ /**
27359
+ * Numbering triggered by A)
27360
+ */
27361
+ CompatibleNumberingListType[CompatibleNumberingListType["UpperAlphaParenthesis"] = 9] = "UpperAlphaParenthesis";
27362
+ /**
27363
+ * Numbering triggered by (A)
27364
+ */
27365
+ CompatibleNumberingListType[CompatibleNumberingListType["UpperAlphaDoubleParenthesis"] = 10] = "UpperAlphaDoubleParenthesis";
27366
+ /**
27367
+ * Numbering triggered by A-
27368
+ */
27369
+ CompatibleNumberingListType[CompatibleNumberingListType["UpperAlphaDash"] = 11] = "UpperAlphaDash";
27370
+ /**
27371
+ * Numbering triggered by i.
27372
+ */
27373
+ CompatibleNumberingListType[CompatibleNumberingListType["LowerRoman"] = 12] = "LowerRoman";
27374
+ /**
27375
+ * Numbering triggered by i)
27376
+ */
27377
+ CompatibleNumberingListType[CompatibleNumberingListType["LowerRomanParenthesis"] = 13] = "LowerRomanParenthesis";
27378
+ /**
27379
+ * Numbering triggered by (i)
27380
+ */
27381
+ CompatibleNumberingListType[CompatibleNumberingListType["LowerRomanDoubleParenthesis"] = 14] = "LowerRomanDoubleParenthesis";
27382
+ /**
27383
+ * Numbering triggered by i-
27384
+ */
27385
+ CompatibleNumberingListType[CompatibleNumberingListType["LowerRomanDash"] = 15] = "LowerRomanDash";
27386
+ /**
27387
+ * Numbering triggered by I.
27388
+ */
27389
+ CompatibleNumberingListType[CompatibleNumberingListType["UpperRoman"] = 16] = "UpperRoman";
27390
+ /**
27391
+ * Numbering triggered by I)
27392
+ */
27393
+ CompatibleNumberingListType[CompatibleNumberingListType["UpperRomanParenthesis"] = 17] = "UpperRomanParenthesis";
27394
+ /**
27395
+ * Numbering triggered by (I)
27396
+ */
27397
+ CompatibleNumberingListType[CompatibleNumberingListType["UpperRomanDoubleParenthesis"] = 18] = "UpperRomanDoubleParenthesis";
27398
+ /**
27399
+ * Numbering triggered by I-
27400
+ */
27401
+ CompatibleNumberingListType[CompatibleNumberingListType["UpperRomanDash"] = 19] = "UpperRomanDash";
27402
+ })(CompatibleNumberingListType = exports.CompatibleNumberingListType || (exports.CompatibleNumberingListType = {}));
27403
+
27404
+
26287
27405
  /***/ }),
26288
27406
 
26289
27407
  /***/ "./packages/roosterjs-editor-types/lib/compatibleEnum/PluginEventType.ts":
@@ -26732,9 +27850,11 @@ var CompatibleTableOperation;
26732
27850
  "use strict";
26733
27851
 
26734
27852
  Object.defineProperty(exports, "__esModule", { value: true });
26735
- exports.CompatibleTableOperation = exports.CompatibleTableBorderFormat = exports.CompatibleSelectionRangeTypes = exports.CompatibleRegionType = exports.CompatibleQueryScope = exports.CompatiblePositionType = exports.CompatiblePluginEventType = exports.CompatibleNodeType = exports.CompatibleListType = exports.CompatibleKnownCreateElementDataIndex = exports.CompatibleKeys = exports.CompatibleIndentation = exports.CompatibleImageEditOperation = exports.CompatibleGetContentMode = exports.CompatibleFontSizeChange = exports.CompatibleExperimentalFeatures = exports.CompatibleEntityOperation = exports.CompatibleEntityClasses = exports.CompatibleDocumentPosition = exports.CompatibleDocumentCommand = exports.CompatibleDirection = exports.CompatibleDarkModeDatasetNames = exports.CompatibleContentType = exports.CompatibleContentTypePrefix = exports.CompatibleContentPosition = exports.CompatibleColorTransformDirection = exports.CompatibleClearFormatMode = exports.CompatibleChangeSource = exports.CompatibleCapitalization = exports.CompatibleAlignment = void 0;
27853
+ exports.CompatibleTableOperation = exports.CompatibleTableBorderFormat = exports.CompatibleSelectionRangeTypes = exports.CompatibleRegionType = exports.CompatibleQueryScope = exports.CompatiblePositionType = exports.CompatiblePluginEventType = exports.CompatibleNumberingListType = exports.CompatibleNodeType = exports.CompatibleListType = exports.CompatibleKnownCreateElementDataIndex = exports.CompatibleKeys = exports.CompatibleIndentation = exports.CompatibleImageEditOperation = exports.CompatibleGetContentMode = exports.CompatibleFontSizeChange = exports.CompatibleExperimentalFeatures = exports.CompatibleEntityOperation = exports.CompatibleEntityClasses = exports.CompatibleDocumentPosition = exports.CompatibleDocumentCommand = exports.CompatibleDirection = exports.CompatibleDefinitionType = exports.CompatibleDarkModeDatasetNames = exports.CompatibleContentType = exports.CompatibleContentTypePrefix = exports.CompatibleContentPosition = exports.CompatibleColorTransformDirection = exports.CompatibleClearFormatMode = exports.CompatibleChangeSource = exports.CompatibleCapitalization = exports.CompatibleBulletListType = exports.CompatibleAlignment = void 0;
26736
27854
  var Alignment_1 = __webpack_require__(/*! ./Alignment */ "./packages/roosterjs-editor-types/lib/compatibleEnum/Alignment.ts");
26737
27855
  Object.defineProperty(exports, "CompatibleAlignment", { enumerable: true, get: function () { return Alignment_1.CompatibleAlignment; } });
27856
+ var BulletListType_1 = __webpack_require__(/*! ./BulletListType */ "./packages/roosterjs-editor-types/lib/compatibleEnum/BulletListType.ts");
27857
+ Object.defineProperty(exports, "CompatibleBulletListType", { enumerable: true, get: function () { return BulletListType_1.CompatibleBulletListType; } });
26738
27858
  var Capitalization_1 = __webpack_require__(/*! ./Capitalization */ "./packages/roosterjs-editor-types/lib/compatibleEnum/Capitalization.ts");
26739
27859
  Object.defineProperty(exports, "CompatibleCapitalization", { enumerable: true, get: function () { return Capitalization_1.CompatibleCapitalization; } });
26740
27860
  var ChangeSource_1 = __webpack_require__(/*! ./ChangeSource */ "./packages/roosterjs-editor-types/lib/compatibleEnum/ChangeSource.ts");
@@ -26750,6 +27870,8 @@ Object.defineProperty(exports, "CompatibleContentTypePrefix", { enumerable: true
26750
27870
  Object.defineProperty(exports, "CompatibleContentType", { enumerable: true, get: function () { return ContentType_1.CompatibleContentType; } });
26751
27871
  var DarkModeDatasetNames_1 = __webpack_require__(/*! ./DarkModeDatasetNames */ "./packages/roosterjs-editor-types/lib/compatibleEnum/DarkModeDatasetNames.ts");
26752
27872
  Object.defineProperty(exports, "CompatibleDarkModeDatasetNames", { enumerable: true, get: function () { return DarkModeDatasetNames_1.CompatibleDarkModeDatasetNames; } });
27873
+ var DefinitionType_1 = __webpack_require__(/*! ./DefinitionType */ "./packages/roosterjs-editor-types/lib/compatibleEnum/DefinitionType.ts");
27874
+ Object.defineProperty(exports, "CompatibleDefinitionType", { enumerable: true, get: function () { return DefinitionType_1.CompatibleDefinitionType; } });
26753
27875
  var Direction_1 = __webpack_require__(/*! ./Direction */ "./packages/roosterjs-editor-types/lib/compatibleEnum/Direction.ts");
26754
27876
  Object.defineProperty(exports, "CompatibleDirection", { enumerable: true, get: function () { return Direction_1.CompatibleDirection; } });
26755
27877
  var DocumentCommand_1 = __webpack_require__(/*! ./DocumentCommand */ "./packages/roosterjs-editor-types/lib/compatibleEnum/DocumentCommand.ts");
@@ -26778,6 +27900,8 @@ var ListType_1 = __webpack_require__(/*! ./ListType */ "./packages/roosterjs-edi
26778
27900
  Object.defineProperty(exports, "CompatibleListType", { enumerable: true, get: function () { return ListType_1.CompatibleListType; } });
26779
27901
  var NodeType_1 = __webpack_require__(/*! ./NodeType */ "./packages/roosterjs-editor-types/lib/compatibleEnum/NodeType.ts");
26780
27902
  Object.defineProperty(exports, "CompatibleNodeType", { enumerable: true, get: function () { return NodeType_1.CompatibleNodeType; } });
27903
+ var NumberingListType_1 = __webpack_require__(/*! ./NumberingListType */ "./packages/roosterjs-editor-types/lib/compatibleEnum/NumberingListType.ts");
27904
+ Object.defineProperty(exports, "CompatibleNumberingListType", { enumerable: true, get: function () { return NumberingListType_1.CompatibleNumberingListType; } });
26781
27905
  var PluginEventType_1 = __webpack_require__(/*! ./PluginEventType */ "./packages/roosterjs-editor-types/lib/compatibleEnum/PluginEventType.ts");
26782
27906
  Object.defineProperty(exports, "CompatiblePluginEventType", { enumerable: true, get: function () { return PluginEventType_1.CompatiblePluginEventType; } });
26783
27907
  var PositionType_1 = __webpack_require__(/*! ./PositionType */ "./packages/roosterjs-editor-types/lib/compatibleEnum/PositionType.ts");