roosterjs 8.24.0 → 8.26.1

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.
@@ -2247,7 +2247,7 @@ function changeCapitalization(editor, capitalization, language) {
2247
2247
  }
2248
2248
  }
2249
2249
  }
2250
- });
2250
+ }, 'changeCapitalization');
2251
2251
  function getCapitalizedText(originalText, language) {
2252
2252
  switch (capitalization) {
2253
2253
  case "lowercase" /* Lowercase */:
@@ -2317,7 +2317,7 @@ function changeFontSize(editor, change, fontSizes) {
2317
2317
  if (lineHeight != 'normal') {
2318
2318
  element.style.lineHeight = 'normal';
2319
2319
  }
2320
- });
2320
+ }, 'changeFontSize');
2321
2321
  }
2322
2322
  exports.default = changeFontSize;
2323
2323
  /**
@@ -2396,6 +2396,7 @@ exports.default = clearBlockFormat;
2396
2396
  Object.defineProperty(exports, "__esModule", { value: true });
2397
2397
  var blockFormat_1 = __webpack_require__(/*! ../utils/blockFormat */ "./packages/roosterjs-editor-api/lib/utils/blockFormat.ts");
2398
2398
  var execCommand_1 = __webpack_require__(/*! ../utils/execCommand */ "./packages/roosterjs-editor-api/lib/utils/execCommand.ts");
2399
+ var formatUndoSnapshot_1 = __webpack_require__(/*! ../utils/formatUndoSnapshot */ "./packages/roosterjs-editor-api/lib/utils/formatUndoSnapshot.ts");
2399
2400
  var setBackgroundColor_1 = __webpack_require__(/*! ./setBackgroundColor */ "./packages/roosterjs-editor-api/lib/format/setBackgroundColor.ts");
2400
2401
  var setFontName_1 = __webpack_require__(/*! ./setFontName */ "./packages/roosterjs-editor-api/lib/format/setFontName.ts");
2401
2402
  var setFontSize_1 = __webpack_require__(/*! ./setFontSize */ "./packages/roosterjs-editor-api/lib/format/setFontSize.ts");
@@ -2466,7 +2467,7 @@ function clearAttribute(element) {
2466
2467
  function updateStyles(element, callbackfn) {
2467
2468
  var styles = (0, roosterjs_editor_dom_1.getStyles)(element);
2468
2469
  var result = {};
2469
- Object.keys(styles).forEach(function (style) { return callbackfn(style, styles, result); });
2470
+ (0, roosterjs_editor_dom_1.getObjectKeys)(styles).forEach(function (style) { return callbackfn(style, styles, result); });
2470
2471
  (0, roosterjs_editor_dom_1.setStyles)(element, styles);
2471
2472
  return result;
2472
2473
  }
@@ -2511,7 +2512,7 @@ function clearAutoDetectFormat(editor) {
2511
2512
  * @param editor The editor instance
2512
2513
  */
2513
2514
  function clearBlockFormat(editor) {
2514
- editor.addUndoSnapshot(function () {
2515
+ (0, formatUndoSnapshot_1.default)(editor, function () {
2515
2516
  (0, blockFormat_1.default)(editor, function (region) {
2516
2517
  var blocks = (0, roosterjs_editor_dom_1.getSelectedBlockElementsInRegion)(region);
2517
2518
  var nodes = (0, roosterjs_editor_dom_1.collapseNodesInRegion)(region, blocks);
@@ -2519,7 +2520,7 @@ function clearBlockFormat(editor) {
2519
2520
  // If there are styles on table cell, wrap all its children and move down all non-border styles.
2520
2521
  // So that we can preserve styles for unselected blocks as well as border styles for table
2521
2522
  var nonborderStyles = removeNonBorderStyles(region.rootNode);
2522
- if (Object.keys(nonborderStyles).length > 0) {
2523
+ if ((0, roosterjs_editor_dom_1.getObjectKeys)(nonborderStyles).length > 0) {
2523
2524
  var wrapper = (0, roosterjs_editor_dom_1.wrap)((0, roosterjs_editor_dom_1.toArray)(region.rootNode.childNodes));
2524
2525
  (0, roosterjs_editor_dom_1.setStyles)(wrapper, nonborderStyles);
2525
2526
  }
@@ -2530,7 +2531,7 @@ function clearBlockFormat(editor) {
2530
2531
  nodes.forEach(clearNodeFormat);
2531
2532
  });
2532
2533
  setDefaultFormat(editor);
2533
- }, "Format" /* Format */);
2534
+ }, 'clearBlockFormat');
2534
2535
  }
2535
2536
  function clearInlineFormat(editor) {
2536
2537
  editor.focus();
@@ -2540,11 +2541,12 @@ function clearInlineFormat(editor) {
2540
2541
  return node.removeAttribute('class');
2541
2542
  });
2542
2543
  setDefaultFormat(editor);
2544
+ return 'clearInlineFormat';
2543
2545
  }, "Format" /* Format */);
2544
2546
  }
2545
2547
  function setDefaultFormat(editor) {
2546
2548
  var defaultFormat = editor.getDefaultFormat();
2547
- var isDefaultFormatEmpty = Object.keys(defaultFormat).length === 0;
2549
+ var isDefaultFormatEmpty = (0, roosterjs_editor_dom_1.getObjectKeys)(defaultFormat).length === 0;
2548
2550
  editor.queryElements('[style]', 2 /* InSelection */, function (node) {
2549
2551
  var tag = (0, roosterjs_editor_dom_1.getTagOfNode)(node);
2550
2552
  if (TAGS_TO_STOP_UNWRAP.indexOf(tag) == -1) {
@@ -2723,11 +2725,13 @@ function createLink(editor, link, altText, displayText, target) {
2723
2725
  editor.getDocument().execCommand("createLink" /* CreateLink */, false, normalizedUrl_1);
2724
2726
  var traverser = editor.getSelectionTraverser();
2725
2727
  var currentInline = traverser.getNextInlineElement();
2728
+ // list for removing unwanted lines
2729
+ var deletionInlineList = [];
2726
2730
  while (currentInline) {
2727
- var a = currentInline.getContainerNode();
2728
- a.parentElement.removeChild(a);
2731
+ deletionInlineList.push(currentInline.getContainerNode());
2729
2732
  currentInline = traverser.getNextInlineElement();
2730
2733
  }
2734
+ deletionInlineList.forEach(function (node) { return editor.deleteNode(node); });
2731
2735
  anchor = getAnchorNodeAtCursor(editor);
2732
2736
  updateAnchorDisplayText(anchor, displayText);
2733
2737
  }
@@ -2928,6 +2932,7 @@ exports.default = insertEntity;
2928
2932
  "use strict";
2929
2933
 
2930
2934
  Object.defineProperty(exports, "__esModule", { value: true });
2935
+ var formatUndoSnapshot_1 = __webpack_require__(/*! ../utils/formatUndoSnapshot */ "./packages/roosterjs-editor-api/lib/utils/formatUndoSnapshot.ts");
2931
2936
  var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./packages/roosterjs-editor-dom/lib/index.ts");
2932
2937
  function insertImage(editor, imageFile, attributes) {
2933
2938
  if (typeof imageFile == 'string') {
@@ -2943,17 +2948,17 @@ function insertImage(editor, imageFile, attributes) {
2943
2948
  }
2944
2949
  exports.default = insertImage;
2945
2950
  function insertImageWithSrc(editor, src, attributes) {
2946
- editor.addUndoSnapshot(function () {
2951
+ (0, formatUndoSnapshot_1.default)(editor, function () {
2947
2952
  var image = editor.getDocument().createElement('img');
2948
2953
  image.src = src;
2949
2954
  if (attributes) {
2950
- Object.keys(attributes).forEach(function (attribute) {
2955
+ (0, roosterjs_editor_dom_1.getObjectKeys)(attributes).forEach(function (attribute) {
2951
2956
  return image.setAttribute(attribute, attributes[attribute]);
2952
2957
  });
2953
2958
  }
2954
2959
  image.style.maxWidth = '100%';
2955
2960
  editor.insertNode(image);
2956
- }, "Format" /* Format */);
2961
+ }, 'insertImage');
2957
2962
  }
2958
2963
 
2959
2964
 
@@ -2969,6 +2974,7 @@ function insertImageWithSrc(editor, src, attributes) {
2969
2974
  "use strict";
2970
2975
 
2971
2976
  Object.defineProperty(exports, "__esModule", { value: true });
2977
+ var formatUndoSnapshot_1 = __webpack_require__(/*! ../utils/formatUndoSnapshot */ "./packages/roosterjs-editor-api/lib/utils/formatUndoSnapshot.ts");
2972
2978
  var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./packages/roosterjs-editor-dom/lib/index.ts");
2973
2979
  /**
2974
2980
  * Remove link at selection. If no links at selection, do nothing.
@@ -2978,10 +2984,10 @@ var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./
2978
2984
  */
2979
2985
  function removeLink(editor) {
2980
2986
  editor.focus();
2981
- editor.addUndoSnapshot(function (start, end) {
2987
+ (0, formatUndoSnapshot_1.default)(editor, function (start, end) {
2982
2988
  editor.queryElements('a[href]', 1 /* OnSelection */, roosterjs_editor_dom_1.unwrap);
2983
2989
  editor.select(start, end);
2984
- }, "Format" /* Format */);
2990
+ }, 'removeLink');
2985
2991
  }
2986
2992
  exports.default = removeLink;
2987
2993
 
@@ -3045,6 +3051,7 @@ exports.default = replaceWithNode;
3045
3051
  "use strict";
3046
3052
 
3047
3053
  Object.defineProperty(exports, "__esModule", { value: true });
3054
+ var formatUndoSnapshot_1 = __webpack_require__(/*! ../utils/formatUndoSnapshot */ "./packages/roosterjs-editor-api/lib/utils/formatUndoSnapshot.ts");
3048
3055
  /**
3049
3056
  * Rotate an element visually
3050
3057
  * @param editor The editor instance
@@ -3053,9 +3060,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3053
3060
  */
3054
3061
  function rotateElement(editor, element, angle) {
3055
3062
  if (element) {
3056
- editor.addUndoSnapshot(function () {
3063
+ (0, formatUndoSnapshot_1.default)(editor, function () {
3057
3064
  element.style.transform = "rotate(" + angle + "deg)";
3058
- }, "Format" /* Format */);
3065
+ }, 'rotateElement');
3059
3066
  }
3060
3067
  }
3061
3068
  exports.default = rotateElement;
@@ -3075,6 +3082,7 @@ exports.default = rotateElement;
3075
3082
  Object.defineProperty(exports, "__esModule", { value: true });
3076
3083
  var blockFormat_1 = __webpack_require__(/*! ../utils/blockFormat */ "./packages/roosterjs-editor-api/lib/utils/blockFormat.ts");
3077
3084
  var execCommand_1 = __webpack_require__(/*! ../utils/execCommand */ "./packages/roosterjs-editor-api/lib/utils/execCommand.ts");
3085
+ var formatUndoSnapshot_1 = __webpack_require__(/*! ../utils/formatUndoSnapshot */ "./packages/roosterjs-editor-api/lib/utils/formatUndoSnapshot.ts");
3078
3086
  var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./packages/roosterjs-editor-dom/lib/index.ts");
3079
3087
  /**
3080
3088
  * Set content alignment
@@ -3083,7 +3091,7 @@ var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./
3083
3091
  * Alignment.Center, Alignment.Left, Alignment.Right
3084
3092
  */
3085
3093
  function setAlignment(editor, alignment) {
3086
- editor.addUndoSnapshot(function () {
3094
+ (0, formatUndoSnapshot_1.default)(editor, function () {
3087
3095
  var selection = editor.getSelectionRangeEx();
3088
3096
  var isATable = selection && selection.type === 1 /* TableSelection */;
3089
3097
  var elementAtCursor = editor.getElementAtCursor();
@@ -3099,7 +3107,7 @@ function setAlignment(editor, alignment) {
3099
3107
  else {
3100
3108
  alignText(editor, alignment);
3101
3109
  }
3102
- }, "Format" /* Format */);
3110
+ }, 'rotateElement');
3103
3111
  }
3104
3112
  exports.default = setAlignment;
3105
3113
  /**
@@ -3154,7 +3162,7 @@ function alignList(editor, alignment) {
3154
3162
  var startNode = blocks[0].getStartNode();
3155
3163
  var vList = (0, roosterjs_editor_dom_1.createVListFromRegion)(region, true /*includeSiblingLists*/, startNode);
3156
3164
  vList.setAlignment(start, end, alignment);
3157
- });
3165
+ }, undefined /* beforeRunCallback */, 'alignList');
3158
3166
  }
3159
3167
 
3160
3168
 
@@ -3185,7 +3193,7 @@ var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./
3185
3193
  function setBackgroundColor(editor, color) {
3186
3194
  (0, applyInlineStyle_1.default)(editor, function (element, isInnerNode) {
3187
3195
  (0, roosterjs_editor_dom_1.setColor)(element, isInnerNode ? '' : color, true /*isBackground*/, editor.isDarkMode());
3188
- });
3196
+ }, 'setBackgroundColor');
3189
3197
  }
3190
3198
  exports.default = setBackgroundColor;
3191
3199
 
@@ -3203,6 +3211,7 @@ exports.default = setBackgroundColor;
3203
3211
 
3204
3212
  Object.defineProperty(exports, "__esModule", { value: true });
3205
3213
  var collapseSelectedBlocks_1 = __webpack_require__(/*! ../utils/collapseSelectedBlocks */ "./packages/roosterjs-editor-api/lib/utils/collapseSelectedBlocks.ts");
3214
+ var formatUndoSnapshot_1 = __webpack_require__(/*! ../utils/formatUndoSnapshot */ "./packages/roosterjs-editor-api/lib/utils/formatUndoSnapshot.ts");
3206
3215
  /**
3207
3216
  * Change direction for the blocks/paragraph at selection
3208
3217
  * @param editor The editor instance
@@ -3211,13 +3220,13 @@ var collapseSelectedBlocks_1 = __webpack_require__(/*! ../utils/collapseSelected
3211
3220
  */
3212
3221
  function setDirection(editor, direction) {
3213
3222
  editor.focus();
3214
- editor.addUndoSnapshot(function (start, end) {
3223
+ (0, formatUndoSnapshot_1.default)(editor, function (start, end) {
3215
3224
  (0, collapseSelectedBlocks_1.default)(editor, function (element) {
3216
3225
  element.setAttribute('dir', direction == 0 /* LeftToRight */ ? 'ltr' : 'rtl');
3217
3226
  element.style.textAlign = direction == 0 /* LeftToRight */ ? 'left' : 'right';
3218
3227
  });
3219
3228
  editor.select(start, end);
3220
- }, "Format" /* Format */);
3229
+ }, 'setDirection');
3221
3230
  }
3222
3231
  exports.default = setDirection;
3223
3232
 
@@ -3246,7 +3255,7 @@ function setFontName(editor, fontName) {
3246
3255
  // (http://www.w3schools.com/tags/tag_font.asp).
3247
3256
  (0, applyListItemWrap_1.default)(editor, 'font-family', function (element, isInnerNode) {
3248
3257
  element.style.fontFamily = isInnerNode ? '' : fontName;
3249
- });
3258
+ }, 'setFontName');
3250
3259
  }
3251
3260
  exports.default = setFontName;
3252
3261
 
@@ -3280,7 +3289,7 @@ function setFontSize(editor, fontSize) {
3280
3289
  if (lineHeight != 'normal') {
3281
3290
  element.style.lineHeight = 'normal';
3282
3291
  }
3283
- });
3292
+ }, 'setFontSize');
3284
3293
  }
3285
3294
  exports.default = setFontSize;
3286
3295
 
@@ -3297,6 +3306,7 @@ exports.default = setFontSize;
3297
3306
  "use strict";
3298
3307
 
3299
3308
  Object.defineProperty(exports, "__esModule", { value: true });
3309
+ var formatUndoSnapshot_1 = __webpack_require__(/*! ../utils/formatUndoSnapshot */ "./packages/roosterjs-editor-api/lib/utils/formatUndoSnapshot.ts");
3300
3310
  /**
3301
3311
  * Set image alt text for all selected images at selection. If no images is contained
3302
3312
  * in selection, do nothing.
@@ -3308,11 +3318,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
3308
3318
  */
3309
3319
  function setImageAltText(editor, altText) {
3310
3320
  editor.focus();
3311
- editor.addUndoSnapshot(function () {
3321
+ (0, formatUndoSnapshot_1.default)(editor, function () {
3312
3322
  editor.queryElements('img', 1 /* OnSelection */, function (node) {
3313
3323
  return node.setAttribute('alt', altText);
3314
3324
  });
3315
- }, "Format" /* Format */);
3325
+ }, 'setImageAltText');
3316
3326
  }
3317
3327
  exports.default = setImageAltText;
3318
3328
 
@@ -3385,7 +3395,7 @@ function setIndentation(editor, indentation) {
3385
3395
  return false;
3386
3396
  }
3387
3397
  return true;
3388
- });
3398
+ }, 'setIndentation');
3389
3399
  }
3390
3400
  exports.default = setIndentation;
3391
3401
  function indent(region, blocks) {
@@ -3431,6 +3441,7 @@ function shouldHandleWithBlockquotes(indentation, editor, startNode) {
3431
3441
  "use strict";
3432
3442
 
3433
3443
  Object.defineProperty(exports, "__esModule", { value: true });
3444
+ var formatUndoSnapshot_1 = __webpack_require__(/*! ../utils/formatUndoSnapshot */ "./packages/roosterjs-editor-api/lib/utils/formatUndoSnapshot.ts");
3434
3445
  var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./packages/roosterjs-editor-dom/lib/index.ts");
3435
3446
  /**
3436
3447
  * Resets Ordered List Numbering back to the value of the parameter startNumber
@@ -3440,7 +3451,7 @@ var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./
3440
3451
  */
3441
3452
  function setOrderedListNumbering(editor, separator, startNumber) {
3442
3453
  if (startNumber === void 0) { startNumber = 1; }
3443
- editor.addUndoSnapshot(function () {
3454
+ (0, formatUndoSnapshot_1.default)(editor, function () {
3444
3455
  editor.focus();
3445
3456
  var regions = editor.getSelectedRegions();
3446
3457
  if (regions[0]) {
@@ -3450,7 +3461,7 @@ function setOrderedListNumbering(editor, separator, startNumber) {
3450
3461
  vList.writeBack();
3451
3462
  }
3452
3463
  }
3453
- }, "Format" /* Format */);
3464
+ }, 'setOrderedListNumbering');
3454
3465
  }
3455
3466
  exports.default = setOrderedListNumbering;
3456
3467
 
@@ -3485,7 +3496,7 @@ function setTextColor(editor, color, shouldApplyInlineStyle) {
3485
3496
  if (!shouldApplyInlineStyle || shouldApplyInlineStyle(element)) {
3486
3497
  (0, roosterjs_editor_dom_1.setColor)(element, isInnerNode ? '' : color, false /*isBackground*/, editor.isDarkMode());
3487
3498
  }
3488
- });
3499
+ }, 'setTextColor');
3489
3500
  }
3490
3501
  exports.default = setTextColor;
3491
3502
 
@@ -3521,7 +3532,7 @@ function toggleBlockQuote(editor, styler) {
3521
3532
  (0, blockWrap_1.default)(editor, function (nodes) {
3522
3533
  var wrapper = (0, roosterjs_editor_dom_1.wrap)(nodes, BLOCKQUOTE_TAG);
3523
3534
  (styler || DEFAULT_STYLER)(wrapper);
3524
- }, function () { return editor.queryElements('blockquote', 1 /* OnSelection */, roosterjs_editor_dom_1.unwrap).length == 0; });
3535
+ }, function () { return editor.queryElements('blockquote', 1 /* OnSelection */, roosterjs_editor_dom_1.unwrap).length == 0; }, 'toggleBlockQuote');
3525
3536
  }
3526
3537
  exports.default = toggleBlockQuote;
3527
3538
 
@@ -3548,7 +3559,7 @@ var execCommand_1 = __webpack_require__(/*! ../utils/execCommand */ "./packages/
3548
3559
  * @param editor The editor instance
3549
3560
  */
3550
3561
  function toggleBold(editor) {
3551
- (0, execCommand_1.default)(editor, "bold" /* Bold */);
3562
+ (0, execCommand_1.default)(editor, "bold" /* Bold */, 'toggleBold');
3552
3563
  }
3553
3564
  exports.default = toggleBold;
3554
3565
 
@@ -3576,7 +3587,7 @@ var toggleListType_1 = __webpack_require__(/*! ../utils/toggleListType */ "./pac
3576
3587
  * @param listStyle (Optional) the style of the bullet list. If not defined, the style will be set to disc.
3577
3588
  */
3578
3589
  function toggleBullet(editor, listStyle) {
3579
- (0, toggleListType_1.default)(editor, 2 /* Unordered */, undefined /* startNumber */, false /* includeSiblingLists */, listStyle);
3590
+ (0, toggleListType_1.default)(editor, 2 /* Unordered */, undefined /* startNumber */, false /* includeSiblingLists */, undefined /** orderedStyle */, listStyle);
3580
3591
  }
3581
3592
  exports.default = toggleBullet;
3582
3593
 
@@ -3617,7 +3628,7 @@ function toggleCodeBlock(editor, styler) {
3617
3628
  (0, roosterjs_editor_dom_1.unwrap)(parent_1);
3618
3629
  }
3619
3630
  }).length == 0;
3620
- });
3631
+ }, 'toggleCodeBlock');
3621
3632
  }
3622
3633
  exports.default = toggleCodeBlock;
3623
3634
 
@@ -3634,6 +3645,7 @@ exports.default = toggleCodeBlock;
3634
3645
  "use strict";
3635
3646
 
3636
3647
  Object.defineProperty(exports, "__esModule", { value: true });
3648
+ var formatUndoSnapshot_1 = __webpack_require__(/*! ../utils/formatUndoSnapshot */ "./packages/roosterjs-editor-api/lib/utils/formatUndoSnapshot.ts");
3637
3649
  var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./packages/roosterjs-editor-dom/lib/index.ts");
3638
3650
  /**
3639
3651
  * Toggle header at selection
@@ -3644,7 +3656,7 @@ var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./
3644
3656
  */
3645
3657
  function toggleHeader(editor, level) {
3646
3658
  level = Math.min(Math.max(Math.round(level), 0), 6);
3647
- editor.addUndoSnapshot(function () {
3659
+ (0, formatUndoSnapshot_1.default)(editor, function () {
3648
3660
  editor.focus();
3649
3661
  var wrapped = false;
3650
3662
  editor.queryElements('H1,H2,H3,H4,H5,H6', 1 /* OnSelection */, function (header) {
@@ -3671,7 +3683,7 @@ function toggleHeader(editor, level) {
3671
3683
  }
3672
3684
  editor.getDocument().execCommand("formatBlock" /* FormatBlock */, false, "<H" + level + ">");
3673
3685
  }
3674
- }, "Format" /* Format */);
3686
+ }, 'toggleHeader');
3675
3687
  }
3676
3688
  exports.default = toggleHeader;
3677
3689
 
@@ -3698,7 +3710,7 @@ var execCommand_1 = __webpack_require__(/*! ../utils/execCommand */ "./packages/
3698
3710
  * @param editor The editor instance
3699
3711
  */
3700
3712
  function toggleItalic(editor) {
3701
- (0, execCommand_1.default)(editor, "italic" /* Italic */);
3713
+ (0, execCommand_1.default)(editor, "italic" /* Italic */, 'toggleItalic');
3702
3714
  }
3703
3715
  exports.default = toggleItalic;
3704
3716
 
@@ -3754,7 +3766,7 @@ var execCommand_1 = __webpack_require__(/*! ../utils/execCommand */ "./packages/
3754
3766
  * @param editor The editor instance
3755
3767
  */
3756
3768
  function toggleStrikethrough(editor) {
3757
- (0, execCommand_1.default)(editor, "strikeThrough" /* StrikeThrough */);
3769
+ (0, execCommand_1.default)(editor, "strikeThrough" /* StrikeThrough */, 'toggleStrikethrough');
3758
3770
  }
3759
3771
  exports.default = toggleStrikethrough;
3760
3772
 
@@ -3783,7 +3795,7 @@ var execCommand_1 = __webpack_require__(/*! ../utils/execCommand */ "./packages/
3783
3795
  * @param editor The editor instance
3784
3796
  */
3785
3797
  function toggleSubscript(editor) {
3786
- (0, execCommand_1.default)(editor, "subscript" /* Subscript */);
3798
+ (0, execCommand_1.default)(editor, "subscript" /* Subscript */, 'toggleSubscript');
3787
3799
  }
3788
3800
  exports.default = toggleSubscript;
3789
3801
 
@@ -3812,7 +3824,7 @@ var execCommand_1 = __webpack_require__(/*! ../utils/execCommand */ "./packages/
3812
3824
  * @param editor The editor instance
3813
3825
  */
3814
3826
  function toggleSuperscript(editor) {
3815
- (0, execCommand_1.default)(editor, "superscript" /* Superscript */);
3827
+ (0, execCommand_1.default)(editor, "superscript" /* Superscript */, 'toggleSuperscript');
3816
3828
  }
3817
3829
  exports.default = toggleSuperscript;
3818
3830
 
@@ -3839,7 +3851,7 @@ var execCommand_1 = __webpack_require__(/*! ../utils/execCommand */ "./packages/
3839
3851
  * @param editor The editor instance
3840
3852
  */
3841
3853
  function toggleUnderline(editor) {
3842
- (0, execCommand_1.default)(editor, "underline" /* Underline */);
3854
+ (0, execCommand_1.default)(editor, "underline" /* Underline */, 'toggleUnderline');
3843
3855
  }
3844
3856
  exports.default = toggleUnderline;
3845
3857
 
@@ -3949,6 +3961,7 @@ Object.defineProperty(exports, "experimentCommitListChains", { enumerable: true,
3949
3961
  "use strict";
3950
3962
 
3951
3963
  Object.defineProperty(exports, "__esModule", { value: true });
3964
+ var formatUndoSnapshot_1 = __webpack_require__(/*! ../utils/formatUndoSnapshot */ "./packages/roosterjs-editor-api/lib/utils/formatUndoSnapshot.ts");
3952
3965
  var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./packages/roosterjs-editor-dom/lib/index.ts");
3953
3966
  var TEMP_BACKGROUND_COLOR = 'originalBackgroundColor';
3954
3967
  var CELL_SHADE = 'cellShade';
@@ -3959,7 +3972,7 @@ var CELL_SHADE = 'cellShade';
3959
3972
  **/
3960
3973
  function applyCellShading(editor, color) {
3961
3974
  editor.focus();
3962
- editor.addUndoSnapshot(function () {
3975
+ (0, formatUndoSnapshot_1.default)(editor, function () {
3963
3976
  var regions = editor.getSelectedRegions();
3964
3977
  regions.forEach(function (region) {
3965
3978
  if ((0, roosterjs_editor_dom_1.safeInstanceOf)(region.rootNode, 'HTMLTableCellElement')) {
@@ -3969,7 +3982,7 @@ function applyCellShading(editor, color) {
3969
3982
  region.rootNode.style.backgroundColor;
3970
3983
  }
3971
3984
  });
3972
- });
3985
+ }, 'applyCellShading');
3973
3986
  }
3974
3987
  exports.default = applyCellShading;
3975
3988
 
@@ -3986,6 +3999,7 @@ exports.default = applyCellShading;
3986
3999
  "use strict";
3987
4000
 
3988
4001
  Object.defineProperty(exports, "__esModule", { value: true });
4002
+ var formatUndoSnapshot_1 = __webpack_require__(/*! ../utils/formatUndoSnapshot */ "./packages/roosterjs-editor-api/lib/utils/formatUndoSnapshot.ts");
3989
4003
  var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./packages/roosterjs-editor-dom/lib/index.ts");
3990
4004
  /**
3991
4005
  * Edit table with given operation. If there is no table at cursor then no op.
@@ -3995,7 +4009,7 @@ var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./
3995
4009
  function editTable(editor, operation) {
3996
4010
  var td = editor.getElementAtCursor('TD,TH');
3997
4011
  if (td) {
3998
- editor.addUndoSnapshot(function () {
4012
+ (0, formatUndoSnapshot_1.default)(editor, function () {
3999
4013
  var vtable = new roosterjs_editor_dom_1.VTable(td);
4000
4014
  saveTableSelection(editor, vtable);
4001
4015
  vtable.edit(operation);
@@ -4004,7 +4018,7 @@ function editTable(editor, operation) {
4004
4018
  editor.focus();
4005
4019
  var cellToSelect = calculateCellToSelect(operation, vtable.row, vtable.col);
4006
4020
  editor.select(vtable.getCell(cellToSelect.newRow, cellToSelect.newCol).td, 0 /* Begin */);
4007
- }, "Format" /* Format */);
4021
+ }, 'editTable');
4008
4022
  }
4009
4023
  }
4010
4024
  exports.default = editTable;
@@ -4052,6 +4066,7 @@ function saveTableSelection(editor, vtable) {
4052
4066
  "use strict";
4053
4067
 
4054
4068
  Object.defineProperty(exports, "__esModule", { value: true });
4069
+ var formatUndoSnapshot_1 = __webpack_require__(/*! ../utils/formatUndoSnapshot */ "./packages/roosterjs-editor-api/lib/utils/formatUndoSnapshot.ts");
4055
4070
  var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./packages/roosterjs-editor-dom/lib/index.ts");
4056
4071
  /**
4057
4072
  * Format table
@@ -4062,14 +4077,14 @@ var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./
4062
4077
  function formatTable(editor, format, table) {
4063
4078
  table = table || editor.getElementAtCursor('TABLE');
4064
4079
  if (table) {
4065
- editor.addUndoSnapshot(function (start, end) {
4080
+ (0, formatUndoSnapshot_1.default)(editor, function (start, end) {
4066
4081
  var vtable = new roosterjs_editor_dom_1.VTable(table);
4067
4082
  vtable.applyFormat(format);
4068
4083
  vtable.writeBack();
4069
4084
  editor.transformToDarkColor(vtable.table);
4070
4085
  editor.focus();
4071
4086
  editor.select(start, end);
4072
- }, "Format" /* Format */);
4087
+ }, 'formatTable');
4073
4088
  }
4074
4089
  }
4075
4090
  exports.default = formatTable;
@@ -4087,6 +4102,7 @@ exports.default = formatTable;
4087
4102
  "use strict";
4088
4103
 
4089
4104
  Object.defineProperty(exports, "__esModule", { value: true });
4105
+ var formatUndoSnapshot_1 = __webpack_require__(/*! ../utils/formatUndoSnapshot */ "./packages/roosterjs-editor-api/lib/utils/formatUndoSnapshot.ts");
4090
4106
  var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./packages/roosterjs-editor-dom/lib/index.ts");
4091
4107
  /**
4092
4108
  * Insert table into editor at current selection
@@ -4115,7 +4131,7 @@ function insertTable(editor, columns, rows, format) {
4115
4131
  }
4116
4132
  }
4117
4133
  editor.focus();
4118
- editor.addUndoSnapshot(function () {
4134
+ (0, formatUndoSnapshot_1.default)(editor, function () {
4119
4135
  var vtable = new roosterjs_editor_dom_1.VTable(table);
4120
4136
  vtable.applyFormat(format);
4121
4137
  vtable.writeBack();
@@ -4123,7 +4139,7 @@ function insertTable(editor, columns, rows, format) {
4123
4139
  editor.runAsync(function (editor) {
4124
4140
  return editor.select(new roosterjs_editor_dom_1.Position(table, 0 /* Begin */).normalize());
4125
4141
  });
4126
- }, "Format" /* Format */);
4142
+ }, 'insertTable');
4127
4143
  }
4128
4144
  exports.default = insertTable;
4129
4145
  function getTableCellWidth(columns) {
@@ -4151,6 +4167,7 @@ function getTableCellWidth(columns) {
4151
4167
  "use strict";
4152
4168
 
4153
4169
  Object.defineProperty(exports, "__esModule", { value: true });
4170
+ var formatUndoSnapshot_1 = __webpack_require__(/*! ./formatUndoSnapshot */ "./packages/roosterjs-editor-api/lib/utils/formatUndoSnapshot.ts");
4154
4171
  var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./packages/roosterjs-editor-dom/lib/index.ts");
4155
4172
  var ZERO_WIDTH_SPACE = '\u200B';
4156
4173
  /**
@@ -4159,7 +4176,7 @@ var ZERO_WIDTH_SPACE = '\u200B';
4159
4176
  * @param editor The editor instance
4160
4177
  * @param callback The callback function to apply style
4161
4178
  */
4162
- function applyInlineStyle(editor, callback) {
4179
+ function applyInlineStyle(editor, callback, apiName) {
4163
4180
  editor.focus();
4164
4181
  var selection = editor.getSelectionRangeEx();
4165
4182
  if (selection && selection.areAllCollapsed) {
@@ -4192,7 +4209,7 @@ function applyInlineStyle(editor, callback) {
4192
4209
  else {
4193
4210
  // This is start and end node that get the style. The start and end needs to be recorded so that selection
4194
4211
  // can be re-applied post-applying style
4195
- editor.addUndoSnapshot(function () {
4212
+ (0, formatUndoSnapshot_1.default)(editor, function () {
4196
4213
  var firstNode;
4197
4214
  var lastNode;
4198
4215
  selection.ranges.forEach(function (range) {
@@ -4211,7 +4228,7 @@ function applyInlineStyle(editor, callback) {
4211
4228
  if (firstNode && lastNode && selection.type == 0 /* Normal */) {
4212
4229
  editor.select(firstNode, -2 /* Before */, lastNode, -3 /* After */);
4213
4230
  }
4214
- }, "Format" /* Format */);
4231
+ }, apiName);
4215
4232
  }
4216
4233
  }
4217
4234
  exports.default = applyInlineStyle;
@@ -4238,7 +4255,7 @@ var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./
4238
4255
  * @param styleName Name of the style to apply to the list item
4239
4256
  * @param formatCallback callback to apply the style to each element
4240
4257
  */
4241
- function applyListItemStyleWrap(editor, styleName, formatCallback) {
4258
+ function applyListItemStyleWrap(editor, styleName, formatCallback, apiName) {
4242
4259
  var parentNodes = [];
4243
4260
  (0, applyInlineStyle_1.default)(editor, function (element, isInnerNode) {
4244
4261
  formatCallback(element, isInnerNode);
@@ -4246,7 +4263,7 @@ function applyListItemStyleWrap(editor, styleName, formatCallback) {
4246
4263
  if (parent && parentNodes.indexOf(parent) === -1) {
4247
4264
  parentNodes.push(parent);
4248
4265
  }
4249
- });
4266
+ }, apiName);
4250
4267
  applyStyleToListItems(parentNodes, [styleName]);
4251
4268
  }
4252
4269
  exports.default = applyListItemStyleWrap;
@@ -4278,14 +4295,15 @@ function applyStyleToListItems(parentNodes, styles) {
4278
4295
 
4279
4296
  Object.defineProperty(exports, "__esModule", { value: true });
4280
4297
  var experimentCommitListChains_1 = __webpack_require__(/*! ../experiment/experimentCommitListChains */ "./packages/roosterjs-editor-api/lib/experiment/experimentCommitListChains.ts");
4298
+ var formatUndoSnapshot_1 = __webpack_require__(/*! ./formatUndoSnapshot */ "./packages/roosterjs-editor-api/lib/utils/formatUndoSnapshot.ts");
4281
4299
  var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./packages/roosterjs-editor-dom/lib/index.ts");
4282
4300
  /**
4283
4301
  * Split selection into regions, and perform a block-wise formatting action for each region.
4284
4302
  */
4285
- function blockFormat(editor, callback, beforeRunCallback) {
4303
+ function blockFormat(editor, callback, beforeRunCallback, apiName) {
4286
4304
  editor.focus();
4287
4305
  var selection = editor.getSelectionRangeEx();
4288
- editor.addUndoSnapshot(function (start, end) {
4306
+ (0, formatUndoSnapshot_1.default)(editor, function (start, end) {
4289
4307
  if (!beforeRunCallback || beforeRunCallback()) {
4290
4308
  var regions = editor.getSelectedRegions();
4291
4309
  var chains_1 = roosterjs_editor_dom_1.VListChain.createListChains(regions, start === null || start === void 0 ? void 0 : start.node);
@@ -4298,7 +4316,7 @@ function blockFormat(editor, callback, beforeRunCallback) {
4298
4316
  else if (selection.type == 1 /* TableSelection */) {
4299
4317
  editor.select(selection.table, selection.coordinates);
4300
4318
  }
4301
- }, "Format" /* Format */);
4319
+ }, apiName);
4302
4320
  }
4303
4321
  exports.default = blockFormat;
4304
4322
 
@@ -4326,7 +4344,7 @@ var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./
4326
4344
  * @param beforeRunCallback A callback function to run before looping all regions. If it returns false,
4327
4345
  * the loop for regions will be skipped
4328
4346
  */
4329
- function blockWrap(editor, wrapFunction, beforeRunCallback) {
4347
+ function blockWrap(editor, wrapFunction, beforeRunCallback, apiName) {
4330
4348
  (0, blockFormat_1.default)(editor, function (region) {
4331
4349
  var blocks = (0, roosterjs_editor_dom_1.getSelectedBlockElementsInRegion)(region, true /*createBlockIfEmpty*/);
4332
4350
  var nodes = (0, roosterjs_editor_dom_1.collapseNodesInRegion)(region, blocks);
@@ -4347,7 +4365,7 @@ function blockWrap(editor, wrapFunction, beforeRunCallback) {
4347
4365
  }
4348
4366
  wrapFunction(nodes);
4349
4367
  }
4350
- }, beforeRunCallback);
4368
+ }, beforeRunCallback, apiName);
4351
4369
  }
4352
4370
  exports.default = blockWrap;
4353
4371
 
@@ -4407,6 +4425,7 @@ function isEmptyBlockUnderTR(block) {
4407
4425
  "use strict";
4408
4426
 
4409
4427
  Object.defineProperty(exports, "__esModule", { value: true });
4428
+ var formatUndoSnapshot_1 = __webpack_require__(/*! ./formatUndoSnapshot */ "./packages/roosterjs-editor-api/lib/utils/formatUndoSnapshot.ts");
4410
4429
  var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./packages/roosterjs-editor-dom/lib/index.ts");
4411
4430
  /**
4412
4431
  * @internal
@@ -4418,7 +4437,7 @@ var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./
4418
4437
  * @param doWorkaroundForList Optional, set to true to do workaround for list in order to keep current format.
4419
4438
  * Default value is false.
4420
4439
  */
4421
- function execCommand(editor, command) {
4440
+ function execCommand(editor, command, apiName) {
4422
4441
  editor.focus();
4423
4442
  var formatter = function () { return editor.getDocument().execCommand(command, false, null); };
4424
4443
  var selection = editor.getSelectionRangeEx();
@@ -4426,7 +4445,7 @@ function execCommand(editor, command) {
4426
4445
  editor.addUndoSnapshot();
4427
4446
  var formatState = editor.getPendableFormatState(false /* forceGetStateFromDom */);
4428
4447
  formatter();
4429
- var formatName = Object.keys(roosterjs_editor_dom_1.PendableFormatCommandMap).filter(function (x) { return roosterjs_editor_dom_1.PendableFormatCommandMap[x] == command; })[0];
4448
+ var formatName = (0, roosterjs_editor_dom_1.getObjectKeys)(roosterjs_editor_dom_1.PendableFormatCommandMap).filter(function (x) { return roosterjs_editor_dom_1.PendableFormatCommandMap[x] == command; })[0];
4430
4449
  if (formatName) {
4431
4450
  formatState[formatName] = !formatState[formatName];
4432
4451
  editor.triggerPluginEvent(13 /* PendingFormatStateChanged */, {
@@ -4435,7 +4454,7 @@ function execCommand(editor, command) {
4435
4454
  }
4436
4455
  }
4437
4456
  else {
4438
- editor.addUndoSnapshot(function () {
4457
+ (0, formatUndoSnapshot_1.default)(editor, function () {
4439
4458
  var tempRange;
4440
4459
  selection.ranges.forEach(function (range) {
4441
4460
  if (selection.type == 1 /* TableSelection */) {
@@ -4447,12 +4466,40 @@ function execCommand(editor, command) {
4447
4466
  if (tempRange && selection.type == 1 /* TableSelection */) {
4448
4467
  editor.select(selection.table, selection.coordinates);
4449
4468
  }
4450
- }, "Format" /* Format */);
4469
+ }, apiName);
4451
4470
  }
4452
4471
  }
4453
4472
  exports.default = execCommand;
4454
4473
 
4455
4474
 
4475
+ /***/ }),
4476
+
4477
+ /***/ "./packages/roosterjs-editor-api/lib/utils/formatUndoSnapshot.ts":
4478
+ /*!***********************************************************************!*\
4479
+ !*** ./packages/roosterjs-editor-api/lib/utils/formatUndoSnapshot.ts ***!
4480
+ \***********************************************************************/
4481
+ /*! no static exports found */
4482
+ /***/ (function(module, exports, __webpack_require__) {
4483
+
4484
+ "use strict";
4485
+
4486
+ Object.defineProperty(exports, "__esModule", { value: true });
4487
+ /**
4488
+ * @internal
4489
+ * Execute add undo snapshot for the Format APIs
4490
+ * @param editor The editor instance
4491
+ * @param command Optional, The callback function to perform formatting, returns a data object which will be used as the data field in ContentChangedEvent if changeSource is not null.
4492
+ * @param apiName Optional, name of the API that was is going to be executed.
4493
+ * Default value is false.
4494
+ */
4495
+ function formatUndoSnapshot(editor, callback, apiName) {
4496
+ editor.addUndoSnapshot(callback, "Format" /* Format */, undefined /* canUndoByBackspace */, apiName && {
4497
+ formatApiName: apiName,
4498
+ });
4499
+ }
4500
+ exports.default = formatUndoSnapshot;
4501
+
4502
+
4456
4503
  /***/ }),
4457
4504
 
4458
4505
  /***/ "./packages/roosterjs-editor-api/lib/utils/toggleListType.ts":
@@ -4483,9 +4530,10 @@ var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./
4483
4530
  * @param listType The list type to toggle
4484
4531
  * @param startNumber (Optional) Start number of the list
4485
4532
  * @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.
4533
+ * @param orderedStyle (Optional) the style of an ordered. If not defined, the style will be set to decimal.
4534
+ * @param unorderedStyle (Optional) the style of an unordered list. If not defined, the style will be set to disc.
4487
4535
  */
4488
- function toggleListType(editor, listType, startNumber, includeSiblingLists, listStyle) {
4536
+ function toggleListType(editor, listType, startNumber, includeSiblingLists, orderedStyle, unorderedStyle) {
4489
4537
  if (includeSiblingLists === void 0) { includeSiblingLists = true; }
4490
4538
  (0, blockFormat_1.default)(editor, function (region, start, end, chains) {
4491
4539
  var _a;
@@ -4495,12 +4543,12 @@ function toggleListType(editor, listType, startNumber, includeSiblingLists, list
4495
4543
  : (0, roosterjs_editor_dom_1.createVListFromRegion)(region, includeSiblingLists);
4496
4544
  if (vList) {
4497
4545
  vList.changeListType(start, end, listType);
4498
- if (listStyle && editor.isFeatureEnabled("AutoFormatList" /* AutoFormatList */)) {
4499
- vList.setListStyleType(listStyle);
4546
+ if (editor.isFeatureEnabled("AutoFormatList" /* AutoFormatList */)) {
4547
+ vList.setListStyleType(orderedStyle, unorderedStyle);
4500
4548
  }
4501
4549
  vList.writeBack();
4502
4550
  }
4503
- });
4551
+ }, undefined /* beforeRunCallback */, 'toggleListType');
4504
4552
  }
4505
4553
  exports.default = toggleListType;
4506
4554
 
@@ -4538,8 +4586,10 @@ var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./
4538
4586
  * @param callback The editing callback, accepting current selection start and end position, returns an optional object used as the data field of ContentChangedEvent.
4539
4587
  * @param changeSource The ChangeSource string of ContentChangedEvent. @default ChangeSource.Format. Set to null to avoid triggering ContentChangedEvent
4540
4588
  * @param canUndoByBackspace True if this action can be undone when user press Backspace key (aka Auto Complete).
4589
+ * @param formatApiName Optional parameter to provide the ContentChangeEvent which FormatApi was invoked.
4541
4590
  */
4542
- var addUndoSnapshot = function (core, callback, changeSource, canUndoByBackspace) {
4591
+ var addUndoSnapshot = function (core, callback, changeSource, canUndoByBackspace, additionalData) {
4592
+ if (additionalData === void 0) { additionalData = undefined; }
4543
4593
  var undoState = core.undo;
4544
4594
  var isNested = undoState.isNested;
4545
4595
  var data;
@@ -4566,6 +4616,7 @@ var addUndoSnapshot = function (core, callback, changeSource, canUndoByBackspace
4566
4616
  eventType: 7 /* ContentChanged */,
4567
4617
  source: changeSource,
4568
4618
  data: data,
4619
+ additionalData: additionalData,
4569
4620
  };
4570
4621
  core.api.triggerEvent(core, event_1, true /*broadcast*/);
4571
4622
  }
@@ -4606,6 +4657,7 @@ function addUndoSnapshotInternal(core, canUndoByBackspace) {
4606
4657
 
4607
4658
  Object.defineProperty(exports, "__esModule", { value: true });
4608
4659
  exports.attachDomEvent = void 0;
4660
+ var lib_1 = __webpack_require__(/*! roosterjs-editor-dom/lib */ "./packages/roosterjs-editor-dom/lib/index.ts");
4609
4661
  /**
4610
4662
  * @internal
4611
4663
  * Attach a DOM event to the editor content DIV
@@ -4615,7 +4667,7 @@ exports.attachDomEvent = void 0;
4615
4667
  * @param beforeDispatch Optional callback function to be invoked when the DOM event is triggered before trigger plugin event
4616
4668
  */
4617
4669
  var attachDomEvent = function (core, eventMap) {
4618
- var disposers = Object.keys(eventMap || {}).map(function (eventName) {
4670
+ var disposers = (0, lib_1.getObjectKeys)(eventMap || {}).map(function (eventName) {
4619
4671
  var _a = extractHandler(eventMap[eventName]), pluginEventType = _a.pluginEventType, beforeDispatch = _a.beforeDispatch;
4620
4672
  var onEvent = function (event) {
4621
4673
  if (beforeDispatch) {
@@ -4934,6 +4986,10 @@ var ensureTypeInContainer = function (core, position, keyboardEvent) {
4934
4986
  var formatNode;
4935
4987
  if (block) {
4936
4988
  formatNode = block.collapseToSingleElement();
4989
+ if ((0, roosterjs_editor_dom_1.isNodeEmpty)(formatNode, false /* trimContent */, true /* shouldCountBrAsVisible */)) {
4990
+ var brEl = formatNode.ownerDocument.createElement('br');
4991
+ formatNode.append(brEl);
4992
+ }
4937
4993
  // if the block is empty, apply default format
4938
4994
  // Otherwise, leave it as it is as we don't want to change the style for existing data
4939
4995
  // unless the block was just created by the keyboard event (e.g. ctrl+a & start typing)
@@ -5177,7 +5233,7 @@ function queryCommandStateFromDOM(core, currentPosition) {
5177
5233
  var tag = (0, roosterjs_editor_dom_1.getTagOfNode)(node);
5178
5234
  var style = node.nodeType == 1 /* Element */ && node.style;
5179
5235
  if (tag && style) {
5180
- Object.keys(PendableStyleCheckers).forEach(function (key) {
5236
+ (0, roosterjs_editor_dom_1.getObjectKeys)(PendableStyleCheckers).forEach(function (key) {
5181
5237
  if (!(pendableKeys.indexOf(key) >= 0)) {
5182
5238
  formatState[key] = formatState[key] || PendableStyleCheckers[key](tag, style);
5183
5239
  if (CssFalsyCheckers[key](style)) {
@@ -5624,7 +5680,7 @@ function restorePendingFormatState(core) {
5624
5680
  if (pendingFormatState.pendableFormatState) {
5625
5681
  var document_1 = contentDiv.ownerDocument;
5626
5682
  var formatState_1 = (0, roosterjs_editor_dom_1.getPendableFormatState)(document_1);
5627
- Object.keys(roosterjs_editor_dom_1.PendableFormatCommandMap).forEach(function (key) {
5683
+ (0, roosterjs_editor_dom_1.getObjectKeys)(roosterjs_editor_dom_1.PendableFormatCommandMap).forEach(function (key) {
5628
5684
  if (!!pendingFormatState.pendableFormatState[key] != formatState_1[key]) {
5629
5685
  document_1.execCommand(roosterjs_editor_dom_1.PendableFormatCommandMap[key], false, null);
5630
5686
  }
@@ -6188,7 +6244,7 @@ var CopyPastePlugin = /** @class */ (function () {
6188
6244
  function CopyPastePlugin(options) {
6189
6245
  var _this = this;
6190
6246
  this.onPaste = function (event) {
6191
- var _a;
6247
+ var _a, _b;
6192
6248
  var range;
6193
6249
  (0, roosterjs_editor_dom_1.extractClipboardEvent)(event, function (clipboardData) { var _a; return (_a = _this.editor) === null || _a === void 0 ? void 0 : _a.paste(clipboardData); }, {
6194
6250
  allowLinkPreview: (_a = _this.editor) === null || _a === void 0 ? void 0 : _a.isFeatureEnabled("PasteWithLinkPreview" /* PasteWithLinkPreview */),
@@ -6201,7 +6257,7 @@ var CopyPastePlugin = /** @class */ (function () {
6201
6257
  removeTempDiv: function (div) {
6202
6258
  _this.cleanUpAndRestoreSelection(div, range, false /* isCopy */);
6203
6259
  },
6204
- });
6260
+ }, (_b = _this.editor) === null || _b === void 0 ? void 0 : _b.getSelectionRange());
6205
6261
  };
6206
6262
  this.state = {
6207
6263
  allowedCustomPasteType: options.allowedCustomPasteType || [],
@@ -6810,7 +6866,7 @@ var EntityPlugin = /** @class */ (function () {
6810
6866
  (0, roosterjs_editor_dom_1.commitEntity)(wrapper, type, isReadonly, entity.id); // Use entity.id here because it is newly updated
6811
6867
  _this.handleNewEntity(entity);
6812
6868
  });
6813
- Object.keys(this.state.shadowEntityCache).forEach(function (id) {
6869
+ (0, roosterjs_editor_dom_1.getObjectKeys)(this.state.shadowEntityCache).forEach(function (id) {
6814
6870
  _this.triggerEvent(_this.state.shadowEntityCache[id], 6 /* Overwrite */);
6815
6871
  delete _this.state.shadowEntityCache[id];
6816
6872
  });
@@ -7097,7 +7153,7 @@ var LifecyclePlugin = /** @class */ (function () {
7097
7153
  LifecyclePlugin.prototype.dispose = function () {
7098
7154
  var _this = this;
7099
7155
  this.editor.triggerPluginEvent(12 /* BeforeDispose */, {}, true /*broadcast*/);
7100
- Object.keys(this.state.customData).forEach(function (key) {
7156
+ (0, roosterjs_editor_dom_1.getObjectKeys)(this.state.customData).forEach(function (key) {
7101
7157
  var data = _this.state.customData[key];
7102
7158
  if (data && data.disposer) {
7103
7159
  data.disposer(data.value);
@@ -7132,7 +7188,7 @@ var LifecyclePlugin = /** @class */ (function () {
7132
7188
  };
7133
7189
  LifecyclePlugin.prototype.adjustBrowserBehavior = function () {
7134
7190
  var _this = this;
7135
- Object.keys(COMMANDS).forEach(function (command) {
7191
+ (0, roosterjs_editor_dom_1.getObjectKeys)(COMMANDS).forEach(function (command) {
7136
7192
  // Catch any possible exception since this should not block the initialization of editor
7137
7193
  try {
7138
7194
  _this.editor.getDocument().execCommand(command, false, COMMANDS[command]);
@@ -7150,7 +7206,7 @@ var LifecyclePlugin = /** @class */ (function () {
7150
7206
  baseFormat.textColors = DARK_MODE_DEFAULT_FORMAT.textColors;
7151
7207
  }
7152
7208
  }
7153
- if (baseFormat && Object.keys(baseFormat).length === 0) {
7209
+ if (baseFormat && (0, roosterjs_editor_dom_1.getObjectKeys)(baseFormat).length === 0) {
7154
7210
  return;
7155
7211
  }
7156
7212
  var _b = baseFormat || {}, fontFamily = _b.fontFamily, fontSize = _b.fontSize, textColor = _b.textColor, textColors = _b.textColors, backgroundColor = _b.backgroundColor, backgroundColors = _b.backgroundColors, bold = _b.bold, italic = _b.italic, underline = _b.underline;
@@ -7868,8 +7924,8 @@ var __assign = (this && this.__assign) || function () {
7868
7924
  return __assign.apply(this, arguments);
7869
7925
  };
7870
7926
  Object.defineProperty(exports, "__esModule", { value: true });
7871
- var coreApiMap_1 = __webpack_require__(/*! ../coreApi/coreApiMap */ "./packages/roosterjs-editor-core/lib/coreApi/coreApiMap.ts");
7872
7927
  var createCorePlugins_1 = __webpack_require__(/*! ../corePlugins/createCorePlugins */ "./packages/roosterjs-editor-core/lib/corePlugins/createCorePlugins.ts");
7928
+ var coreApiMap_1 = __webpack_require__(/*! ../coreApi/coreApiMap */ "./packages/roosterjs-editor-core/lib/coreApi/coreApiMap.ts");
7873
7929
  var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./packages/roosterjs-editor-dom/lib/index.ts");
7874
7930
  /**
7875
7931
  * RoosterJs core editor class
@@ -7891,7 +7947,7 @@ var Editor = /** @class */ (function () {
7891
7947
  // 2. Store options values to local variables
7892
7948
  var corePlugins = (0, createCorePlugins_1.default)(contentDiv, options);
7893
7949
  var plugins = [];
7894
- Object.keys(corePlugins).forEach(function (name) {
7950
+ (0, roosterjs_editor_dom_1.getObjectKeys)(corePlugins).forEach(function (name) {
7895
7951
  if (name == '_placeholder') {
7896
7952
  (0, roosterjs_editor_dom_1.arrayPush)(plugins, options.plugins);
7897
7953
  }
@@ -8960,13 +9016,15 @@ exports.default = getFirstLastBlockElement;
8960
9016
  Object.defineProperty(exports, "__esModule", { value: true });
8961
9017
  var extractClipboardItems_1 = __webpack_require__(/*! ./extractClipboardItems */ "./packages/roosterjs-editor-dom/lib/clipboard/extractClipboardItems.ts");
8962
9018
  var extractClipboardItemsForIE_1 = __webpack_require__(/*! ./extractClipboardItemsForIE */ "./packages/roosterjs-editor-dom/lib/clipboard/extractClipboardItemsForIE.ts");
8963
- var toArray_1 = __webpack_require__(/*! ../utils/toArray */ "./packages/roosterjs-editor-dom/lib/utils/toArray.ts");
9019
+ var toArray_1 = __webpack_require__(/*! ../jsUtils/toArray */ "./packages/roosterjs-editor-dom/lib/jsUtils/toArray.ts");
9020
+ var Browser_1 = __webpack_require__(/*! ../utils/Browser */ "./packages/roosterjs-editor-dom/lib/utils/Browser.ts");
8964
9021
  /**
8965
9022
  * @deprecated Use extractClipboardItems and extractClipboardItemsForIE instead
8966
9023
  * Extract a Clipboard event
8967
9024
  * @param event The paste event
8968
9025
  * @param callback Callback function when data is ready
8969
9026
  * @param options Options to retrieve more items from the event, including HTML string and other customized items
9027
+ * @param rangeBeforePaste Optional range to be removed when pasting in Android
8970
9028
  * @returns An object with the following properties:
8971
9029
  * types: Available types from the clipboard event
8972
9030
  * text: Plain text from the clipboard event
@@ -8975,19 +9033,27 @@ var toArray_1 = __webpack_require__(/*! ../utils/toArray */ "./packages/roosterj
8975
9033
  * When set to undefined, it means can't retrieve HTML string, there may be HTML string but direct retrieving is
8976
9034
  * not supported by browser.
8977
9035
  */
8978
- function extractClipboardEvent(event, callback, options) {
9036
+ function extractClipboardEvent(event, callback, options, rangeBeforePaste) {
8979
9037
  var _a;
8980
9038
  var dataTransfer = event.clipboardData ||
8981
9039
  ((_a = event.target.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView).clipboardData;
8982
9040
  if (dataTransfer.items) {
8983
9041
  event.preventDefault();
8984
- (0, extractClipboardItems_1.default)((0, toArray_1.default)(dataTransfer.items), options).then(callback);
9042
+ (0, extractClipboardItems_1.default)((0, toArray_1.default)(dataTransfer.items), options).then(function (clipboardData) {
9043
+ removeContents(rangeBeforePaste);
9044
+ callback(clipboardData);
9045
+ });
8985
9046
  }
8986
9047
  else {
8987
9048
  (0, extractClipboardItemsForIE_1.default)(dataTransfer, callback, options);
8988
9049
  }
8989
9050
  }
8990
9051
  exports.default = extractClipboardEvent;
9052
+ function removeContents(range) {
9053
+ if (Browser_1.Browser.isAndroid && range) {
9054
+ range.deleteContents();
9055
+ }
9056
+ }
8991
9057
 
8992
9058
 
8993
9059
  /***/ }),
@@ -9148,7 +9214,7 @@ function getAllowedCustomType(type, allowedCustomPasteType) {
9148
9214
 
9149
9215
  Object.defineProperty(exports, "__esModule", { value: true });
9150
9216
  var readFile_1 = __webpack_require__(/*! ../utils/readFile */ "./packages/roosterjs-editor-dom/lib/utils/readFile.ts");
9151
- var toArray_1 = __webpack_require__(/*! ../utils/toArray */ "./packages/roosterjs-editor-dom/lib/utils/toArray.ts");
9217
+ var toArray_1 = __webpack_require__(/*! ../jsUtils/toArray */ "./packages/roosterjs-editor-dom/lib/jsUtils/toArray.ts");
9152
9218
  /**
9153
9219
  * Extract clipboard items to be a ClipboardData object for IE
9154
9220
  * @param dataTransfer The clipboard items retrieve from a DataTransfer object
@@ -9941,17 +10007,19 @@ var Position_1 = __webpack_require__(/*! ../selection/Position */ "./packages/ro
9941
10007
  var PositionContentSearcher_1 = __webpack_require__(/*! ../contentTraverser/PositionContentSearcher */ "./packages/roosterjs-editor-dom/lib/contentTraverser/PositionContentSearcher.ts");
9942
10008
  var queryElements_1 = __webpack_require__(/*! ../utils/queryElements */ "./packages/roosterjs-editor-dom/lib/utils/queryElements.ts");
9943
10009
  var splitTextNode_1 = __webpack_require__(/*! ../utils/splitTextNode */ "./packages/roosterjs-editor-dom/lib/utils/splitTextNode.ts");
9944
- var toArray_1 = __webpack_require__(/*! ../utils/toArray */ "./packages/roosterjs-editor-dom/lib/utils/toArray.ts");
10010
+ var toArray_1 = __webpack_require__(/*! ../jsUtils/toArray */ "./packages/roosterjs-editor-dom/lib/jsUtils/toArray.ts");
9945
10011
  var unwrap_1 = __webpack_require__(/*! ../utils/unwrap */ "./packages/roosterjs-editor-dom/lib/utils/unwrap.ts");
9946
10012
  var VTable_1 = __webpack_require__(/*! ../table/VTable */ "./packages/roosterjs-editor-dom/lib/table/VTable.ts");
9947
10013
  var wrap_1 = __webpack_require__(/*! ../utils/wrap */ "./packages/roosterjs-editor-dom/lib/utils/wrap.ts");
9948
10014
  var splitParentNode_1 = __webpack_require__(/*! ../utils/splitParentNode */ "./packages/roosterjs-editor-dom/lib/utils/splitParentNode.ts");
10015
+ var NOT_EDITABLE_SELECTOR = '[contenteditable=false]';
9949
10016
  var adjustSteps = [
9950
10017
  adjustInsertPositionForHyperLink,
9951
10018
  adjustInsertPositionForStructuredNode,
9952
10019
  adjustInsertPositionForParagraph,
9953
10020
  adjustInsertPositionForVoidElement,
9954
10021
  adjustInsertPositionForMoveCursorOutOfALink,
10022
+ adjustInsertPositionForNotEditableNode,
9955
10023
  ];
9956
10024
  /**
9957
10025
  * Adjust position for A tag don't be nested inside another A tag.
@@ -10091,6 +10159,26 @@ function adjustInsertPositionForMoveCursorOutOfALink(root, nodeToInsert, positio
10091
10159
  }
10092
10160
  return position;
10093
10161
  }
10162
+ /**
10163
+ * Adjust the position cursor out of a not contenteditable element.
10164
+ */
10165
+ function adjustInsertPositionForNotEditableNode(root, nodeToInsert, position, range) {
10166
+ if (!position.element.isContentEditable) {
10167
+ var nonEditableElement = void 0;
10168
+ var lastNonEditableElement = (0, findClosestElementAncestor_1.default)(position.node, root, NOT_EDITABLE_SELECTOR);
10169
+ while (lastNonEditableElement) {
10170
+ nonEditableElement = lastNonEditableElement;
10171
+ lastNonEditableElement = (nonEditableElement === null || nonEditableElement === void 0 ? void 0 : nonEditableElement.parentElement)
10172
+ ? (0, findClosestElementAncestor_1.default)(nonEditableElement.parentElement, root, NOT_EDITABLE_SELECTOR)
10173
+ : null;
10174
+ }
10175
+ if (nonEditableElement) {
10176
+ position = new Position_1.default(nonEditableElement, -3 /* After */);
10177
+ return adjustInsertPositionForNotEditableNode(root, nodeToInsert, position, range);
10178
+ }
10179
+ }
10180
+ return position;
10181
+ }
10094
10182
  /**
10095
10183
  *
10096
10184
  * @param root the contentDiv of the ditor
@@ -10124,7 +10212,7 @@ function safeRemove(node) {
10124
10212
  "use strict";
10125
10213
 
10126
10214
  Object.defineProperty(exports, "__esModule", { value: true });
10127
- var arrayPush_1 = __webpack_require__(/*! ../utils/arrayPush */ "./packages/roosterjs-editor-dom/lib/utils/arrayPush.ts");
10215
+ var arrayPush_1 = __webpack_require__(/*! ../jsUtils/arrayPush */ "./packages/roosterjs-editor-dom/lib/jsUtils/arrayPush.ts");
10128
10216
  var collapseNodesInRegion_1 = __webpack_require__(/*! ../region/collapseNodesInRegion */ "./packages/roosterjs-editor-dom/lib/region/collapseNodesInRegion.ts");
10129
10217
  var getRegionsFromRange_1 = __webpack_require__(/*! ../region/getRegionsFromRange */ "./packages/roosterjs-editor-dom/lib/region/getRegionsFromRange.ts");
10130
10218
  var getSelectionRangeInRegion_1 = __webpack_require__(/*! ../region/getSelectionRangeInRegion */ "./packages/roosterjs-editor-dom/lib/region/getSelectionRangeInRegion.ts");
@@ -10517,12 +10605,13 @@ exports.default = isModifierKey;
10517
10605
  Object.defineProperty(exports, "__esModule", { value: true });
10518
10606
  var changeElementTag_1 = __webpack_require__(/*! ../utils/changeElementTag */ "./packages/roosterjs-editor-dom/lib/utils/changeElementTag.ts");
10519
10607
  var getInheritableStyles_1 = __webpack_require__(/*! ./getInheritableStyles */ "./packages/roosterjs-editor-dom/lib/htmlSanitizer/getInheritableStyles.ts");
10608
+ var getObjectKeys_1 = __webpack_require__(/*! ../jsUtils/getObjectKeys */ "./packages/roosterjs-editor-dom/lib/jsUtils/getObjectKeys.ts");
10520
10609
  var getPredefinedCssForElement_1 = __webpack_require__(/*! ./getPredefinedCssForElement */ "./packages/roosterjs-editor-dom/lib/htmlSanitizer/getPredefinedCssForElement.ts");
10521
10610
  var getStyles_1 = __webpack_require__(/*! ../style/getStyles */ "./packages/roosterjs-editor-dom/lib/style/getStyles.ts");
10522
10611
  var getTagOfNode_1 = __webpack_require__(/*! ../utils/getTagOfNode */ "./packages/roosterjs-editor-dom/lib/utils/getTagOfNode.ts");
10523
10612
  var safeInstanceOf_1 = __webpack_require__(/*! ../utils/safeInstanceOf */ "./packages/roosterjs-editor-dom/lib/utils/safeInstanceOf.ts");
10524
10613
  var setStyles_1 = __webpack_require__(/*! ../style/setStyles */ "./packages/roosterjs-editor-dom/lib/style/setStyles.ts");
10525
- var toArray_1 = __webpack_require__(/*! ../utils/toArray */ "./packages/roosterjs-editor-dom/lib/utils/toArray.ts");
10614
+ var toArray_1 = __webpack_require__(/*! ../jsUtils/toArray */ "./packages/roosterjs-editor-dom/lib/jsUtils/toArray.ts");
10526
10615
  var cloneObject_1 = __webpack_require__(/*! ./cloneObject */ "./packages/roosterjs-editor-dom/lib/htmlSanitizer/cloneObject.ts");
10527
10616
  var getAllowedValues_1 = __webpack_require__(/*! ./getAllowedValues */ "./packages/roosterjs-editor-dom/lib/htmlSanitizer/getAllowedValues.ts");
10528
10617
  /**
@@ -10729,7 +10818,7 @@ var HtmlSanitizer = /** @class */ (function () {
10729
10818
  HtmlSanitizer.prototype.preprocessCss = function (element, thisStyle) {
10730
10819
  var predefinedStyles = (0, getPredefinedCssForElement_1.default)(element, this.additionalPredefinedCssForElement);
10731
10820
  if (predefinedStyles) {
10732
- Object.keys(predefinedStyles).forEach(function (name) {
10821
+ (0, getObjectKeys_1.default)(predefinedStyles).forEach(function (name) {
10733
10822
  thisStyle[name] = predefinedStyles[name];
10734
10823
  });
10735
10824
  }
@@ -10737,7 +10826,7 @@ var HtmlSanitizer = /** @class */ (function () {
10737
10826
  HtmlSanitizer.prototype.processCss = function (element, thisStyle, context) {
10738
10827
  var _this = this;
10739
10828
  var styles = (0, getStyles_1.default)(element);
10740
- Object.keys(styles).forEach(function (name) {
10829
+ (0, getObjectKeys_1.default)(styles).forEach(function (name) {
10741
10830
  var value = styles[name];
10742
10831
  var callback = _this.styleCallbacks[name];
10743
10832
  var isInheritable = thisStyle[name] != undefined;
@@ -10852,13 +10941,14 @@ exports.default = chainSanitizerCallback;
10852
10941
 
10853
10942
  Object.defineProperty(exports, "__esModule", { value: true });
10854
10943
  exports.cloneObject = void 0;
10944
+ var getObjectKeys_1 = __webpack_require__(/*! ../jsUtils/getObjectKeys */ "./packages/roosterjs-editor-dom/lib/jsUtils/getObjectKeys.ts");
10855
10945
  function nativeClone(source, existingObj) {
10856
10946
  return Object.assign(existingObj || {}, source);
10857
10947
  }
10858
10948
  function customClone(source, existingObj) {
10859
10949
  var result = existingObj || {};
10860
10950
  if (source) {
10861
- for (var _i = 0, _a = Object.keys(source); _i < _a.length; _i++) {
10951
+ for (var _i = 0, _a = (0, getObjectKeys_1.default)(source); _i < _a.length; _i++) {
10862
10952
  var key = _a[_i];
10863
10953
  result[key] = source[key];
10864
10954
  }
@@ -10933,6 +11023,7 @@ var __assign = (this && this.__assign) || function () {
10933
11023
  };
10934
11024
  Object.defineProperty(exports, "__esModule", { value: true });
10935
11025
  exports.getStyleCallbacks = exports.getDefaultStyleValues = exports.getAllowedCssClassesRegex = exports.getAllowedAttributes = exports.getTagReplacement = void 0;
11026
+ var getObjectKeys_1 = __webpack_require__(/*! ../jsUtils/getObjectKeys */ "./packages/roosterjs-editor-dom/lib/jsUtils/getObjectKeys.ts");
10936
11027
  var cloneObject_1 = __webpack_require__(/*! ./cloneObject */ "./packages/roosterjs-editor-dom/lib/htmlSanitizer/cloneObject.ts");
10937
11028
  var HTML_TAG_REPLACEMENT = {
10938
11029
  // Allowed tags
@@ -11117,7 +11208,7 @@ var ALLOWED_CSS_CLASSES = [];
11117
11208
  function getTagReplacement(additionalReplacements) {
11118
11209
  var result = __assign({}, HTML_TAG_REPLACEMENT);
11119
11210
  var replacements = additionalReplacements || {};
11120
- Object.keys(replacements).forEach(function (key) {
11211
+ (0, getObjectKeys_1.default)(replacements).forEach(function (key) {
11121
11212
  if (key) {
11122
11213
  result[key.toLowerCase()] = replacements[key];
11123
11214
  }
@@ -11287,9 +11378,9 @@ exports.default = getPredefinedCssForElement;
11287
11378
  "use strict";
11288
11379
 
11289
11380
  Object.defineProperty(exports, "__esModule", { value: true });
11290
- 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;
11291
- 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;
11292
- exports.removeMetadata = exports.setMetadata = exports.getMetadata = exports.createObjectDefinition = exports.createArrayDefinition = exports.createStringDefinition = exports.createBooleanDefinition = exports.createNumberDefinition = void 0;
11381
+ exports.VTable = exports.moveChildNodes = exports.KnownCreateElementData = exports.createElement = exports.matchesSelector = exports.setColor = exports.getInnerHTML = exports.readFile = exports.safeInstanceOf = 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.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;
11382
+ exports.createBooleanDefinition = exports.createNumberDefinition = 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 = void 0;
11383
+ exports.toArray = exports.getObjectKeys = exports.arrayPush = exports.removeMetadata = exports.setMetadata = exports.getMetadata = exports.createObjectDefinition = exports.createArrayDefinition = exports.createStringDefinition = void 0;
11293
11384
  var getBlockElementAtNode_1 = __webpack_require__(/*! ./blockElements/getBlockElementAtNode */ "./packages/roosterjs-editor-dom/lib/blockElements/getBlockElementAtNode.ts");
11294
11385
  Object.defineProperty(exports, "getBlockElementAtNode", { enumerable: true, get: function () { return getBlockElementAtNode_1.default; } });
11295
11386
  var getFirstLastBlockElement_1 = __webpack_require__(/*! ./blockElements/getFirstLastBlockElement */ "./packages/roosterjs-editor-dom/lib/blockElements/getFirstLastBlockElement.ts");
@@ -11316,8 +11407,6 @@ var extractClipboardItems_1 = __webpack_require__(/*! ./clipboard/extractClipboa
11316
11407
  Object.defineProperty(exports, "extractClipboardItems", { enumerable: true, get: function () { return extractClipboardItems_1.default; } });
11317
11408
  var extractClipboardItemsForIE_1 = __webpack_require__(/*! ./clipboard/extractClipboardItemsForIE */ "./packages/roosterjs-editor-dom/lib/clipboard/extractClipboardItemsForIE.ts");
11318
11409
  Object.defineProperty(exports, "extractClipboardItemsForIE", { enumerable: true, get: function () { return extractClipboardItemsForIE_1.default; } });
11319
- var arrayPush_1 = __webpack_require__(/*! ./utils/arrayPush */ "./packages/roosterjs-editor-dom/lib/utils/arrayPush.ts");
11320
- Object.defineProperty(exports, "arrayPush", { enumerable: true, get: function () { return arrayPush_1.default; } });
11321
11410
  var Browser_1 = __webpack_require__(/*! ./utils/Browser */ "./packages/roosterjs-editor-dom/lib/utils/Browser.ts");
11322
11411
  Object.defineProperty(exports, "Browser", { enumerable: true, get: function () { return Browser_1.Browser; } });
11323
11412
  Object.defineProperty(exports, "getBrowserInfo", { enumerable: true, get: function () { return Browser_1.getBrowserInfo; } });
@@ -11368,8 +11457,6 @@ var splitTextNode_1 = __webpack_require__(/*! ./utils/splitTextNode */ "./packag
11368
11457
  Object.defineProperty(exports, "splitTextNode", { enumerable: true, get: function () { return splitTextNode_1.default; } });
11369
11458
  var normalizeRect_1 = __webpack_require__(/*! ./utils/normalizeRect */ "./packages/roosterjs-editor-dom/lib/utils/normalizeRect.ts");
11370
11459
  Object.defineProperty(exports, "normalizeRect", { enumerable: true, get: function () { return normalizeRect_1.default; } });
11371
- var toArray_1 = __webpack_require__(/*! ./utils/toArray */ "./packages/roosterjs-editor-dom/lib/utils/toArray.ts");
11372
- Object.defineProperty(exports, "toArray", { enumerable: true, get: function () { return toArray_1.default; } });
11373
11460
  var safeInstanceOf_1 = __webpack_require__(/*! ./utils/safeInstanceOf */ "./packages/roosterjs-editor-dom/lib/utils/safeInstanceOf.ts");
11374
11461
  Object.defineProperty(exports, "safeInstanceOf", { enumerable: true, get: function () { return safeInstanceOf_1.default; } });
11375
11462
  var readFile_1 = __webpack_require__(/*! ./utils/readFile */ "./packages/roosterjs-editor-dom/lib/utils/readFile.ts");
@@ -11489,6 +11576,12 @@ var metadata_1 = __webpack_require__(/*! ./metadata/metadata */ "./packages/roos
11489
11576
  Object.defineProperty(exports, "getMetadata", { enumerable: true, get: function () { return metadata_1.getMetadata; } });
11490
11577
  Object.defineProperty(exports, "setMetadata", { enumerable: true, get: function () { return metadata_1.setMetadata; } });
11491
11578
  Object.defineProperty(exports, "removeMetadata", { enumerable: true, get: function () { return metadata_1.removeMetadata; } });
11579
+ var arrayPush_1 = __webpack_require__(/*! ./jsUtils/arrayPush */ "./packages/roosterjs-editor-dom/lib/jsUtils/arrayPush.ts");
11580
+ Object.defineProperty(exports, "arrayPush", { enumerable: true, get: function () { return arrayPush_1.default; } });
11581
+ var getObjectKeys_1 = __webpack_require__(/*! ./jsUtils/getObjectKeys */ "./packages/roosterjs-editor-dom/lib/jsUtils/getObjectKeys.ts");
11582
+ Object.defineProperty(exports, "getObjectKeys", { enumerable: true, get: function () { return getObjectKeys_1.default; } });
11583
+ var toArray_1 = __webpack_require__(/*! ./jsUtils/toArray */ "./packages/roosterjs-editor-dom/lib/jsUtils/toArray.ts");
11584
+ Object.defineProperty(exports, "toArray", { enumerable: true, get: function () { return toArray_1.default; } });
11492
11585
 
11493
11586
 
11494
11587
  /***/ }),
@@ -12125,6 +12218,70 @@ function getInlineElementBeforeAfter(root, position, isAfter) {
12125
12218
  exports.getInlineElementBeforeAfter = getInlineElementBeforeAfter;
12126
12219
 
12127
12220
 
12221
+ /***/ }),
12222
+
12223
+ /***/ "./packages/roosterjs-editor-dom/lib/jsUtils/arrayPush.ts":
12224
+ /*!****************************************************************!*\
12225
+ !*** ./packages/roosterjs-editor-dom/lib/jsUtils/arrayPush.ts ***!
12226
+ \****************************************************************/
12227
+ /*! no static exports found */
12228
+ /***/ (function(module, exports, __webpack_require__) {
12229
+
12230
+ "use strict";
12231
+
12232
+ Object.defineProperty(exports, "__esModule", { value: true });
12233
+ /**
12234
+ * A type-safe wrapper for Array.prototype.push.apply()
12235
+ * @param mainArray The main array to push items into
12236
+ * @param itemsArray The items to push to main array
12237
+ */
12238
+ function arrayPush(mainArray, itemsArray) {
12239
+ Array.prototype.push.apply(mainArray, itemsArray);
12240
+ }
12241
+ exports.default = arrayPush;
12242
+
12243
+
12244
+ /***/ }),
12245
+
12246
+ /***/ "./packages/roosterjs-editor-dom/lib/jsUtils/getObjectKeys.ts":
12247
+ /*!********************************************************************!*\
12248
+ !*** ./packages/roosterjs-editor-dom/lib/jsUtils/getObjectKeys.ts ***!
12249
+ \********************************************************************/
12250
+ /*! no static exports found */
12251
+ /***/ (function(module, exports, __webpack_require__) {
12252
+
12253
+ "use strict";
12254
+
12255
+ Object.defineProperty(exports, "__esModule", { value: true });
12256
+ /**
12257
+ * Provide a strong-typed version of Object.keys()
12258
+ * @param obj The source object
12259
+ * @returns Array of keys
12260
+ */
12261
+ function getObjectKeys(obj) {
12262
+ return Object.keys(obj);
12263
+ }
12264
+ exports.default = getObjectKeys;
12265
+
12266
+
12267
+ /***/ }),
12268
+
12269
+ /***/ "./packages/roosterjs-editor-dom/lib/jsUtils/toArray.ts":
12270
+ /*!**************************************************************!*\
12271
+ !*** ./packages/roosterjs-editor-dom/lib/jsUtils/toArray.ts ***!
12272
+ \**************************************************************/
12273
+ /*! no static exports found */
12274
+ /***/ (function(module, exports, __webpack_require__) {
12275
+
12276
+ "use strict";
12277
+
12278
+ Object.defineProperty(exports, "__esModule", { value: true });
12279
+ function toArray(collection) {
12280
+ return [].slice.call(collection);
12281
+ }
12282
+ exports.default = toArray;
12283
+
12284
+
12128
12285
  /***/ }),
12129
12286
 
12130
12287
  /***/ "./packages/roosterjs-editor-dom/lib/list/VList.ts":
@@ -12155,11 +12312,10 @@ var Position_1 = __webpack_require__(/*! ../selection/Position */ "./packages/ro
12155
12312
  var queryElements_1 = __webpack_require__(/*! ../utils/queryElements */ "./packages/roosterjs-editor-dom/lib/utils/queryElements.ts");
12156
12313
  var safeInstanceOf_1 = __webpack_require__(/*! ../utils/safeInstanceOf */ "./packages/roosterjs-editor-dom/lib/utils/safeInstanceOf.ts");
12157
12314
  var splitParentNode_1 = __webpack_require__(/*! ../utils/splitParentNode */ "./packages/roosterjs-editor-dom/lib/utils/splitParentNode.ts");
12158
- var toArray_1 = __webpack_require__(/*! ../utils/toArray */ "./packages/roosterjs-editor-dom/lib/utils/toArray.ts");
12315
+ var toArray_1 = __webpack_require__(/*! ../jsUtils/toArray */ "./packages/roosterjs-editor-dom/lib/jsUtils/toArray.ts");
12159
12316
  var unwrap_1 = __webpack_require__(/*! ../utils/unwrap */ "./packages/roosterjs-editor-dom/lib/utils/unwrap.ts");
12160
12317
  var VListItem_1 = __webpack_require__(/*! ./VListItem */ "./packages/roosterjs-editor-dom/lib/list/VListItem.ts");
12161
12318
  var wrap_1 = __webpack_require__(/*! ../utils/wrap */ "./packages/roosterjs-editor-dom/lib/utils/wrap.ts");
12162
- var definitionCreators_1 = __webpack_require__(/*! ../metadata/definitionCreators */ "./packages/roosterjs-editor-dom/lib/metadata/definitionCreators.ts");
12163
12319
  var metadata_1 = __webpack_require__(/*! ../metadata/metadata */ "./packages/roosterjs-editor-dom/lib/metadata/metadata.ts");
12164
12320
  /**
12165
12321
  * Represent a bullet or a numbering list
@@ -12416,10 +12572,13 @@ var VList = /** @class */ (function () {
12416
12572
  /**
12417
12573
  * Change list style of the given range of this list.
12418
12574
  * If some of the items are not real list item yet, this will make them to be list item with given style
12419
- * @param targetStyle Target list style
12575
+ * @param orderedStyle The style of ordered list
12576
+ * @param unorderedStyle The style of unordered list
12420
12577
  */
12421
- VList.prototype.setListStyleType = function (targetStyle) {
12422
- (0, metadata_1.setMetadata)(this.rootList, targetStyle, (0, definitionCreators_1.createNumberDefinition)());
12578
+ VList.prototype.setListStyleType = function (orderedStyle, unorderedStyle) {
12579
+ var style = (0, metadata_1.getMetadata)(this.rootList, VListItem_1.ListStyleDefinitionMetadata);
12580
+ var styleMetadata = createListStyleMetadata(style, orderedStyle, unorderedStyle);
12581
+ (0, metadata_1.setMetadata)(this.rootList, styleMetadata, VListItem_1.ListStyleDefinitionMetadata);
12423
12582
  };
12424
12583
  /**
12425
12584
  * Append a new item to this VList
@@ -12575,6 +12734,19 @@ function moveLiToList(li) {
12575
12734
  (0, unwrap_1.default)(li.parentNode);
12576
12735
  }
12577
12736
  }
12737
+ function getValidValue() {
12738
+ var values = [];
12739
+ for (var _i = 0; _i < arguments.length; _i++) {
12740
+ values[_i] = arguments[_i];
12741
+ }
12742
+ return values.filter(function (x) { return x !== undefined; })[0];
12743
+ }
12744
+ function createListStyleMetadata(style, orderedStyle, unorderedStyle) {
12745
+ return {
12746
+ orderedStyleType: getValidValue(orderedStyle, style === null || style === void 0 ? void 0 : style.orderedStyleType, 1 /* Decimal */),
12747
+ unorderedStyleType: getValidValue(unorderedStyle, style === null || style === void 0 ? void 0 : style.unorderedStyleType, 1 /* Disc */),
12748
+ };
12749
+ }
12578
12750
 
12579
12751
 
12580
12752
  /***/ }),
@@ -12589,7 +12761,7 @@ function moveLiToList(li) {
12589
12761
  "use strict";
12590
12762
 
12591
12763
  Object.defineProperty(exports, "__esModule", { value: true });
12592
- var arrayPush_1 = __webpack_require__(/*! ../utils/arrayPush */ "./packages/roosterjs-editor-dom/lib/utils/arrayPush.ts");
12764
+ var arrayPush_1 = __webpack_require__(/*! ../jsUtils/arrayPush */ "./packages/roosterjs-editor-dom/lib/jsUtils/arrayPush.ts");
12593
12765
  var getRootListNode_1 = __webpack_require__(/*! ./getRootListNode */ "./packages/roosterjs-editor-dom/lib/list/getRootListNode.ts");
12594
12766
  var isNodeAfter_1 = __webpack_require__(/*! ../utils/isNodeAfter */ "./packages/roosterjs-editor-dom/lib/utils/isNodeAfter.ts");
12595
12767
  var isNodeInRegion_1 = __webpack_require__(/*! ../region/isNodeInRegion */ "./packages/roosterjs-editor-dom/lib/region/isNodeInRegion.ts");
@@ -12754,6 +12926,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
12754
12926
  return to.concat(ar || Array.prototype.slice.call(from));
12755
12927
  };
12756
12928
  Object.defineProperty(exports, "__esModule", { value: true });
12929
+ exports.ListStyleDefinitionMetadata = void 0;
12757
12930
  var contains_1 = __webpack_require__(/*! ../utils/contains */ "./packages/roosterjs-editor-dom/lib/utils/contains.ts");
12758
12931
  var getListTypeFromNode_1 = __webpack_require__(/*! ./getListTypeFromNode */ "./packages/roosterjs-editor-dom/lib/list/getListTypeFromNode.ts");
12759
12932
  var getTagOfNode_1 = __webpack_require__(/*! ../utils/getTagOfNode */ "./packages/roosterjs-editor-dom/lib/utils/getTagOfNode.ts");
@@ -12763,13 +12936,23 @@ var safeInstanceOf_1 = __webpack_require__(/*! ../utils/safeInstanceOf */ "./pac
12763
12936
  var setBulletListMarkers_1 = __webpack_require__(/*! ./setBulletListMarkers */ "./packages/roosterjs-editor-dom/lib/list/setBulletListMarkers.ts");
12764
12937
  var setListItemStyle_1 = __webpack_require__(/*! ./setListItemStyle */ "./packages/roosterjs-editor-dom/lib/list/setListItemStyle.ts");
12765
12938
  var setNumberingListMarkers_1 = __webpack_require__(/*! ./setNumberingListMarkers */ "./packages/roosterjs-editor-dom/lib/list/setNumberingListMarkers.ts");
12766
- var toArray_1 = __webpack_require__(/*! ../utils/toArray */ "./packages/roosterjs-editor-dom/lib/utils/toArray.ts");
12939
+ var toArray_1 = __webpack_require__(/*! ../jsUtils/toArray */ "./packages/roosterjs-editor-dom/lib/jsUtils/toArray.ts");
12767
12940
  var unwrap_1 = __webpack_require__(/*! ../utils/unwrap */ "./packages/roosterjs-editor-dom/lib/utils/unwrap.ts");
12768
12941
  var wrap_1 = __webpack_require__(/*! ../utils/wrap */ "./packages/roosterjs-editor-dom/lib/utils/wrap.ts");
12942
+ var definitionCreators_1 = __webpack_require__(/*! ../metadata/definitionCreators */ "./packages/roosterjs-editor-dom/lib/metadata/definitionCreators.ts");
12769
12943
  var metadata_1 = __webpack_require__(/*! ../metadata/metadata */ "./packages/roosterjs-editor-dom/lib/metadata/metadata.ts");
12770
12944
  var orderListStyles = [null, 'lower-alpha', 'lower-roman'];
12945
+ var unorderedListStyles = ['disc', 'circle', 'square'];
12771
12946
  var MARGIN_BASE = '0in 0in 0in 0.5in';
12772
12947
  var NEGATIVE_MARGIN = '-.25in';
12948
+ /**
12949
+ * @internal
12950
+ * The definition for the number of BulletListType or NumberingListType
12951
+ */
12952
+ exports.ListStyleDefinitionMetadata = (0, definitionCreators_1.createObjectDefinition)({
12953
+ orderedStyleType: (0, definitionCreators_1.createNumberDefinition)(true /** isOptional */, undefined /** value **/, 1 /* Min */, 20 /* Max */),
12954
+ unorderedStyleType: (0, definitionCreators_1.createNumberDefinition)(true /** isOptional */, undefined /** value **/, 1 /* Min */, 7 /* Max */),
12955
+ }, true /** isOptional */, true /** allowNull */);
12773
12956
  /**
12774
12957
  * !!! Never directly create instance of this class. It should be created within VList class !!!
12775
12958
  *
@@ -12933,15 +13116,19 @@ var VListItem = /** @class */ (function () {
12933
13116
  * @param index the list item index
12934
13117
  */
12935
13118
  VListItem.prototype.applyListStyle = function (rootList, index) {
12936
- var style = (0, metadata_1.getMetadata)(rootList) ? (0, metadata_1.getMetadata)(rootList) : undefined;
13119
+ var style = (0, metadata_1.getMetadata)(rootList, exports.ListStyleDefinitionMetadata);
13120
+ // The list just need to be styled if it is at top level, so the listType length for this Vlist must be 2.
13121
+ var isFirstLevel = this.listTypes.length < 3;
12937
13122
  if (style) {
12938
- if (this.listTypes.length < 3) {
12939
- if (this.listTypes[1] === 2 /* Unordered */) {
12940
- (0, setBulletListMarkers_1.default)(this.node, style);
12941
- }
12942
- else if (this.listTypes[1] === 1 /* Ordered */) {
12943
- (0, setNumberingListMarkers_1.default)(this.node, style, index);
12944
- }
13123
+ if (isFirstLevel &&
13124
+ this.listTypes[1] === 2 /* Unordered */ &&
13125
+ style.unorderedStyleType) {
13126
+ (0, setBulletListMarkers_1.default)(this.node, style.unorderedStyleType);
13127
+ }
13128
+ else if (isFirstLevel &&
13129
+ this.listTypes[1] === 1 /* Ordered */ &&
13130
+ style.orderedStyleType) {
13131
+ (0, setNumberingListMarkers_1.default)(this.node, style.orderedStyleType, index);
12945
13132
  }
12946
13133
  else {
12947
13134
  this.node.style.removeProperty('list-style-type');
@@ -13057,9 +13244,19 @@ function createListElement(newRoot, listType, nextLevel, originalRoot) {
13057
13244
  // Can't be reused, can't clone, let's create a new one
13058
13245
  result = doc.createElement(listType == 1 /* Ordered */ ? 'ol' : 'ul');
13059
13246
  }
13247
+ // Always maintain the metadata saved in the list
13248
+ if (originalRoot && nextLevel == 1 && listType != (0, getListTypeFromNode_1.default)(originalRoot)) {
13249
+ var style = (0, metadata_1.getMetadata)(originalRoot, exports.ListStyleDefinitionMetadata);
13250
+ if (style) {
13251
+ (0, metadata_1.setMetadata)(result, style, exports.ListStyleDefinitionMetadata);
13252
+ }
13253
+ }
13060
13254
  if (listType == 1 /* Ordered */ && nextLevel > 1) {
13061
13255
  result.style.setProperty('list-style-type', orderListStyles[(nextLevel - 1) % orderListStyles.length]);
13062
13256
  }
13257
+ if (listType == 2 /* Unordered */ && nextLevel > 1) {
13258
+ result.style.setProperty('list-style-type', unorderedListStyles[(nextLevel - 1) % unorderedListStyles.length]);
13259
+ }
13063
13260
  return result;
13064
13261
  }
13065
13262
  function wrapIfNotBlockNode(nodes, checkFirst, checkLast) {
@@ -13147,6 +13344,7 @@ exports.default = convertDecimalsToAlpha;
13147
13344
  "use strict";
13148
13345
 
13149
13346
  Object.defineProperty(exports, "__esModule", { value: true });
13347
+ var getObjectKeys_1 = __webpack_require__(/*! ../jsUtils/getObjectKeys */ "./packages/roosterjs-editor-dom/lib/jsUtils/getObjectKeys.ts");
13150
13348
  var RomanValues = {
13151
13349
  M: 1000,
13152
13350
  CM: 900,
@@ -13171,7 +13369,7 @@ var RomanValues = {
13171
13369
  */
13172
13370
  function convertDecimalsToRoman(decimal, isLowerCase) {
13173
13371
  var romanValue = '';
13174
- for (var _i = 0, _a = Object.keys(RomanValues); _i < _a.length; _i++) {
13372
+ for (var _i = 0, _a = (0, getObjectKeys_1.default)(RomanValues); _i < _a.length; _i++) {
13175
13373
  var i = _a[_i];
13176
13374
  var timesRomanCharAppear = Math.floor(decimal / RomanValues[i]);
13177
13375
  decimal = decimal - timesRomanCharAppear * RomanValues[i];
@@ -13201,7 +13399,7 @@ var isNodeInRegion_1 = __webpack_require__(/*! ../region/isNodeInRegion */ "./pa
13201
13399
  var Position_1 = __webpack_require__(/*! ../selection/Position */ "./packages/roosterjs-editor-dom/lib/selection/Position.ts");
13202
13400
  var safeInstanceOf_1 = __webpack_require__(/*! ../utils/safeInstanceOf */ "./packages/roosterjs-editor-dom/lib/utils/safeInstanceOf.ts");
13203
13401
  var shouldSkipNode_1 = __webpack_require__(/*! ../utils/shouldSkipNode */ "./packages/roosterjs-editor-dom/lib/utils/shouldSkipNode.ts");
13204
- var toArray_1 = __webpack_require__(/*! ../utils/toArray */ "./packages/roosterjs-editor-dom/lib/utils/toArray.ts");
13402
+ var toArray_1 = __webpack_require__(/*! ../jsUtils/toArray */ "./packages/roosterjs-editor-dom/lib/jsUtils/toArray.ts");
13205
13403
  var VList_1 = __webpack_require__(/*! ./VList */ "./packages/roosterjs-editor-dom/lib/list/VList.ts");
13206
13404
  var wrap_1 = __webpack_require__(/*! ../utils/wrap */ "./packages/roosterjs-editor-dom/lib/utils/wrap.ts");
13207
13405
  var getLeafSibling_1 = __webpack_require__(/*! ../utils/getLeafSibling */ "./packages/roosterjs-editor-dom/lib/utils/getLeafSibling.ts");
@@ -13404,17 +13602,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
13404
13602
  */
13405
13603
  function setBulletListMarkers(li, listStyleType) {
13406
13604
  var marker = bulletListStyle[listStyleType];
13407
- var isDiscOrSquare = listStyleType === 0 /* Disc */ || listStyleType === 2 /* Square */;
13605
+ var isDiscOrSquare = listStyleType === 1 /* Disc */ || listStyleType === 3 /* Square */;
13408
13606
  li.style.listStyleType = isDiscOrSquare ? marker : "\"" + marker + "\"";
13409
13607
  }
13410
13608
  exports.default = setBulletListMarkers;
13411
13609
  var bulletListStyle = (_a = {},
13412
- _a[0 /* Disc */] = 'disc',
13413
- _a[2 /* Square */] = 'square',
13414
- _a[1 /* Dash */] = '- ',
13415
- _a[4 /* LongArrow */] = '→ ',
13416
- _a[3 /* ShortArrow */] = '➢ ',
13417
- _a[5 /* UnfilledArrow */] = '➪ ',
13610
+ _a[1 /* Disc */] = 'disc',
13611
+ _a[3 /* Square */] = 'square',
13612
+ _a[2 /* Dash */] = '- ',
13613
+ _a[5 /* LongArrow */] = '→ ',
13614
+ _a[4 /* ShortArrow */] = '➢ ',
13615
+ _a[6 /* UnfilledArrow */] = '➪ ',
13616
+ _a[7 /* Hyphen */] = '— ',
13418
13617
  _a);
13419
13618
 
13420
13619
 
@@ -13520,95 +13719,95 @@ function setNumberingListMarkers(li, listStyleType, level) {
13520
13719
  }
13521
13720
  exports.default = setNumberingListMarkers;
13522
13721
  var numberingListStyle = (_a = {},
13523
- _a[0 /* Decimal */] = {
13722
+ _a[1 /* Decimal */] = {
13524
13723
  markerType: MarkerTypes.Decimal,
13525
13724
  markerSeparator: '. ',
13526
13725
  },
13527
- _a[1 /* DecimalDash */] = {
13726
+ _a[2 /* DecimalDash */] = {
13528
13727
  markerType: MarkerTypes.Decimal,
13529
13728
  markerSeparator: '- ',
13530
13729
  },
13531
- _a[2 /* DecimalParenthesis */] = {
13730
+ _a[3 /* DecimalParenthesis */] = {
13532
13731
  markerType: MarkerTypes.Decimal,
13533
13732
  markerSeparator: ') ',
13534
13733
  },
13535
- _a[3 /* DecimalDoubleParenthesis */] = {
13734
+ _a[4 /* DecimalDoubleParenthesis */] = {
13536
13735
  markerType: MarkerTypes.Decimal,
13537
13736
  markerSeparator: ') ',
13538
13737
  markerSecondSeparator: '(',
13539
13738
  },
13540
- _a[4 /* LowerAlpha */] = {
13739
+ _a[5 /* LowerAlpha */] = {
13541
13740
  markerType: MarkerTypes.Alpha,
13542
13741
  markerSeparator: '. ',
13543
13742
  lowerCase: true,
13544
13743
  },
13545
- _a[7 /* LowerAlphaDash */] = {
13744
+ _a[8 /* LowerAlphaDash */] = {
13546
13745
  markerType: MarkerTypes.Alpha,
13547
13746
  markerSeparator: '- ',
13548
13747
  lowerCase: true,
13549
13748
  },
13550
- _a[5 /* LowerAlphaParenthesis */] = {
13749
+ _a[6 /* LowerAlphaParenthesis */] = {
13551
13750
  markerType: MarkerTypes.Alpha,
13552
13751
  markerSeparator: ') ',
13553
13752
  lowerCase: true,
13554
13753
  },
13555
- _a[6 /* LowerAlphaDoubleParenthesis */] = {
13754
+ _a[7 /* LowerAlphaDoubleParenthesis */] = {
13556
13755
  markerType: MarkerTypes.Alpha,
13557
13756
  markerSeparator: ') ',
13558
13757
  markerSecondSeparator: '(',
13559
13758
  lowerCase: true,
13560
13759
  },
13561
- _a[8 /* UpperAlpha */] = {
13760
+ _a[9 /* UpperAlpha */] = {
13562
13761
  markerType: MarkerTypes.Alpha,
13563
13762
  markerSeparator: '. ',
13564
13763
  },
13565
- _a[11 /* UpperAlphaDash */] = {
13764
+ _a[12 /* UpperAlphaDash */] = {
13566
13765
  markerType: MarkerTypes.Alpha,
13567
13766
  markerSeparator: '- ',
13568
13767
  },
13569
- _a[9 /* UpperAlphaParenthesis */] = {
13768
+ _a[10 /* UpperAlphaParenthesis */] = {
13570
13769
  markerType: MarkerTypes.Alpha,
13571
13770
  markerSeparator: ') ',
13572
13771
  },
13573
- _a[10 /* UpperAlphaDoubleParenthesis */] = {
13772
+ _a[11 /* UpperAlphaDoubleParenthesis */] = {
13574
13773
  markerType: MarkerTypes.Alpha,
13575
13774
  markerSeparator: ') ',
13576
13775
  markerSecondSeparator: '(',
13577
13776
  },
13578
- _a[12 /* LowerRoman */] = {
13777
+ _a[13 /* LowerRoman */] = {
13579
13778
  markerType: MarkerTypes.Roman,
13580
13779
  markerSeparator: '. ',
13581
13780
  lowerCase: true,
13582
13781
  },
13583
- _a[15 /* LowerRomanDash */] = {
13782
+ _a[16 /* LowerRomanDash */] = {
13584
13783
  markerType: MarkerTypes.Roman,
13585
13784
  markerSeparator: '- ',
13586
13785
  lowerCase: true,
13587
13786
  },
13588
- _a[13 /* LowerRomanParenthesis */] = {
13787
+ _a[14 /* LowerRomanParenthesis */] = {
13589
13788
  markerType: MarkerTypes.Roman,
13590
13789
  markerSeparator: ') ',
13591
13790
  lowerCase: true,
13592
13791
  },
13593
- _a[14 /* LowerRomanDoubleParenthesis */] = {
13792
+ _a[15 /* LowerRomanDoubleParenthesis */] = {
13594
13793
  markerType: MarkerTypes.Roman,
13595
13794
  markerSeparator: ') ',
13596
13795
  markerSecondSeparator: '(',
13597
13796
  lowerCase: true,
13598
13797
  },
13599
- _a[16 /* UpperRoman */] = {
13798
+ _a[17 /* UpperRoman */] = {
13600
13799
  markerType: MarkerTypes.Roman,
13601
13800
  markerSeparator: '. ',
13602
13801
  },
13603
- _a[19 /* UpperRomanDash */] = {
13802
+ _a[20 /* UpperRomanDash */] = {
13604
13803
  markerType: MarkerTypes.Roman,
13605
13804
  markerSeparator: '- ',
13606
13805
  },
13607
- _a[17 /* UpperRomanParenthesis */] = {
13806
+ _a[18 /* UpperRomanParenthesis */] = {
13608
13807
  markerType: MarkerTypes.Roman,
13609
13808
  markerSeparator: ') ',
13610
13809
  },
13611
- _a[18 /* UpperRomanDoubleParenthesis */] = {
13810
+ _a[19 /* UpperRomanDoubleParenthesis */] = {
13612
13811
  markerType: MarkerTypes.Roman,
13613
13812
  markerSeparator: ') ',
13614
13813
  markerSecondSeparator: '(',
@@ -13804,6 +14003,7 @@ exports.removeMetadata = removeMetadata;
13804
14003
  "use strict";
13805
14004
 
13806
14005
  Object.defineProperty(exports, "__esModule", { value: true });
14006
+ var getObjectKeys_1 = __webpack_require__(/*! ../jsUtils/getObjectKeys */ "./packages/roosterjs-editor-dom/lib/jsUtils/getObjectKeys.ts");
13807
14007
  /**
13808
14008
  * Validate the given object with a type definition object
13809
14009
  * @param input The object to validate
@@ -13844,7 +14044,9 @@ function validate(input, def) {
13844
14044
  case 4 /* Object */:
13845
14045
  result =
13846
14046
  typeof input === 'object' &&
13847
- Object.keys(def.propertyDef).every(function (x) { return validate(input[x], def.propertyDef[x]); });
14047
+ (0, getObjectKeys_1.default)(def.propertyDef).every(function (x) {
14048
+ return validate(input[x], def.propertyDef[x]);
14049
+ });
13848
14050
  break;
13849
14051
  case 5 /* Customize */:
13850
14052
  result = def.validator(input);
@@ -15163,6 +15365,7 @@ exports.default = getStyles;
15163
15365
  "use strict";
15164
15366
 
15165
15367
  Object.defineProperty(exports, "__esModule", { value: true });
15368
+ var getObjectKeys_1 = __webpack_require__(/*! ../jsUtils/getObjectKeys */ "./packages/roosterjs-editor-dom/lib/jsUtils/getObjectKeys.ts");
15166
15369
  /**
15167
15370
  * Set styles to an HTML element. If styles are empty, remove 'style' attribute
15168
15371
  * @param element The element to set styles
@@ -15170,7 +15373,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
15170
15373
  */
15171
15374
  function setStyles(element, styles) {
15172
15375
  if (element) {
15173
- var style = Object.keys(styles || {})
15376
+ var style = (0, getObjectKeys_1.default)(styles || {})
15174
15377
  .map(function (name) {
15175
15378
  var value = styles[name];
15176
15379
  var trimmedName = name ? name.trim() : null;
@@ -15217,7 +15420,7 @@ var applyTableFormat_1 = __webpack_require__(/*! ./applyTableFormat */ "./packag
15217
15420
  var moveChildNodes_1 = __webpack_require__(/*! ../utils/moveChildNodes */ "./packages/roosterjs-editor-dom/lib/utils/moveChildNodes.ts");
15218
15421
  var normalizeRect_1 = __webpack_require__(/*! ../utils/normalizeRect */ "./packages/roosterjs-editor-dom/lib/utils/normalizeRect.ts");
15219
15422
  var safeInstanceOf_1 = __webpack_require__(/*! ../utils/safeInstanceOf */ "./packages/roosterjs-editor-dom/lib/utils/safeInstanceOf.ts");
15220
- var toArray_1 = __webpack_require__(/*! ../utils/toArray */ "./packages/roosterjs-editor-dom/lib/utils/toArray.ts");
15423
+ var toArray_1 = __webpack_require__(/*! ../jsUtils/toArray */ "./packages/roosterjs-editor-dom/lib/jsUtils/toArray.ts");
15221
15424
  var tableFormatInfo_1 = __webpack_require__(/*! ./tableFormatInfo */ "./packages/roosterjs-editor-dom/lib/table/tableFormatInfo.ts");
15222
15425
  var CELL_SHADE = 'cellShade';
15223
15426
  var DEFAULT_FORMAT = {
@@ -16376,29 +16579,6 @@ function applyFormat(element, format, isDarkMode) {
16376
16579
  exports.default = applyFormat;
16377
16580
 
16378
16581
 
16379
- /***/ }),
16380
-
16381
- /***/ "./packages/roosterjs-editor-dom/lib/utils/arrayPush.ts":
16382
- /*!**************************************************************!*\
16383
- !*** ./packages/roosterjs-editor-dom/lib/utils/arrayPush.ts ***!
16384
- \**************************************************************/
16385
- /*! no static exports found */
16386
- /***/ (function(module, exports, __webpack_require__) {
16387
-
16388
- "use strict";
16389
-
16390
- Object.defineProperty(exports, "__esModule", { value: true });
16391
- /**
16392
- * A type-safe wrapper for Array.prototype.push.apply()
16393
- * @param mainArray The main array to push items into
16394
- * @param itemsArray The items to push to main array
16395
- */
16396
- function arrayPush(mainArray, itemsArray) {
16397
- Array.prototype.push.apply(mainArray, itemsArray);
16398
- }
16399
- exports.default = arrayPush;
16400
-
16401
-
16402
16582
  /***/ }),
16403
16583
 
16404
16584
  /***/ "./packages/roosterjs-editor-dom/lib/utils/changeElementTag.ts":
@@ -16459,7 +16639,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
16459
16639
  exports.collapse = void 0;
16460
16640
  var contains_1 = __webpack_require__(/*! ./contains */ "./packages/roosterjs-editor-dom/lib/utils/contains.ts");
16461
16641
  var splitParentNode_1 = __webpack_require__(/*! ./splitParentNode */ "./packages/roosterjs-editor-dom/lib/utils/splitParentNode.ts");
16462
- var toArray_1 = __webpack_require__(/*! ./toArray */ "./packages/roosterjs-editor-dom/lib/utils/toArray.ts");
16642
+ var toArray_1 = __webpack_require__(/*! ../jsUtils/toArray */ "./packages/roosterjs-editor-dom/lib/jsUtils/toArray.ts");
16463
16643
  /**
16464
16644
  * Collapse nodes within the given start and end nodes to their common ancestor node,
16465
16645
  * split parent nodes if necessary
@@ -16589,6 +16769,7 @@ function internalContains(container, contained) {
16589
16769
  var _a;
16590
16770
  Object.defineProperty(exports, "__esModule", { value: true });
16591
16771
  exports.KnownCreateElementData = void 0;
16772
+ var getObjectKeys_1 = __webpack_require__(/*! ../jsUtils/getObjectKeys */ "./packages/roosterjs-editor-dom/lib/jsUtils/getObjectKeys.ts");
16592
16773
  var safeInstanceOf_1 = __webpack_require__(/*! ./safeInstanceOf */ "./packages/roosterjs-editor-dom/lib/utils/safeInstanceOf.ts");
16593
16774
  var Browser_1 = __webpack_require__(/*! ./Browser */ "./packages/roosterjs-editor-dom/lib/utils/Browser.ts");
16594
16775
  /**
@@ -16666,12 +16847,12 @@ function createElement(elementData, document) {
16666
16847
  result.className = className;
16667
16848
  }
16668
16849
  if (dataset && (0, safeInstanceOf_1.default)(result, 'HTMLElement')) {
16669
- Object.keys(dataset).forEach(function (datasetName) {
16850
+ (0, getObjectKeys_1.default)(dataset).forEach(function (datasetName) {
16670
16851
  result.dataset[datasetName] = dataset[datasetName];
16671
16852
  });
16672
16853
  }
16673
16854
  if (attributes) {
16674
- Object.keys(attributes).forEach(function (attrName) {
16855
+ (0, getObjectKeys_1.default)(attributes).forEach(function (attrName) {
16675
16856
  result.setAttribute(attrName, attributes[attrName]);
16676
16857
  });
16677
16858
  }
@@ -16745,7 +16926,7 @@ exports.default = findClosestElementAncestor;
16745
16926
  "use strict";
16746
16927
 
16747
16928
  Object.defineProperty(exports, "__esModule", { value: true });
16748
- var toArray_1 = __webpack_require__(/*! ./toArray */ "./packages/roosterjs-editor-dom/lib/utils/toArray.ts");
16929
+ var toArray_1 = __webpack_require__(/*! ../jsUtils/toArray */ "./packages/roosterjs-editor-dom/lib/jsUtils/toArray.ts");
16749
16930
  /**
16750
16931
  * @deprecated
16751
16932
  * Creates an HTML node array from html
@@ -17001,6 +17182,7 @@ exports.getPreviousLeafSibling = getPreviousLeafSibling;
17001
17182
 
17002
17183
  Object.defineProperty(exports, "__esModule", { value: true });
17003
17184
  exports.PendableFormatCommandMap = void 0;
17185
+ var getObjectKeys_1 = __webpack_require__(/*! ../jsUtils/getObjectKeys */ "./packages/roosterjs-editor-dom/lib/jsUtils/getObjectKeys.ts");
17004
17186
  /**
17005
17187
  * A map from pendable format name to document command
17006
17188
  */
@@ -17036,7 +17218,7 @@ exports.PendableFormatCommandMap = {
17036
17218
  * @returns A PendableFormatState object which contains the values of pendable format states
17037
17219
  */
17038
17220
  function getPendableFormatState(document) {
17039
- var keys = Object.keys(exports.PendableFormatCommandMap);
17221
+ var keys = (0, getObjectKeys_1.default)(exports.PendableFormatCommandMap);
17040
17222
  return keys.reduce(function (state, key) {
17041
17223
  state[key] = document.queryCommandState(exports.PendableFormatCommandMap[key]);
17042
17224
  return state;
@@ -17148,7 +17330,7 @@ var ZERO_WIDTH_SPACE = /\u200b/g;
17148
17330
  * Default value is false
17149
17331
  * @returns True if there isn't any visible element inside node, otherwise false
17150
17332
  */
17151
- function isNodeEmpty(node, trimContent) {
17333
+ function isNodeEmpty(node, trimContent, shouldCountBrAsVisible) {
17152
17334
  if (!node) {
17153
17335
  return false;
17154
17336
  }
@@ -17158,9 +17340,12 @@ function isNodeEmpty(node, trimContent) {
17158
17340
  else if (node.nodeType == 1 /* Element */) {
17159
17341
  var element = node;
17160
17342
  var textContent = trim(element.textContent || '', trimContent);
17343
+ var visibleSelector = shouldCountBrAsVisible
17344
+ ? VISIBLE_CHILD_ELEMENT_SELECTOR + ",BR"
17345
+ : VISIBLE_CHILD_ELEMENT_SELECTOR;
17161
17346
  if (textContent != '' ||
17162
17347
  VISIBLE_ELEMENT_TAGS.indexOf((0, getTagOfNode_1.default)(element)) >= 0 ||
17163
- element.querySelectorAll(VISIBLE_CHILD_ELEMENT_SELECTOR)[0]) {
17348
+ element.querySelectorAll(visibleSelector)[0]) {
17164
17349
  return false;
17165
17350
  }
17166
17351
  }
@@ -17215,6 +17400,7 @@ exports.default = isVoidHtmlElement;
17215
17400
  "use strict";
17216
17401
 
17217
17402
  Object.defineProperty(exports, "__esModule", { value: true });
17403
+ var getObjectKeys_1 = __webpack_require__(/*! ../jsUtils/getObjectKeys */ "./packages/roosterjs-editor-dom/lib/jsUtils/getObjectKeys.ts");
17218
17404
  // http exclude matching regex
17219
17405
  // invalid URL example (in particular on IE and Edge):
17220
17406
  // - http://www.bing.com%00, %00 before ? (question mark) is considered invalid. IE/Edge throws invalid argument exception
@@ -17277,7 +17463,7 @@ var linkMatchRules = {
17277
17463
  */
17278
17464
  function matchLink(url) {
17279
17465
  if (url) {
17280
- for (var _i = 0, _a = Object.keys(linkMatchRules); _i < _a.length; _i++) {
17466
+ for (var _i = 0, _a = (0, getObjectKeys_1.default)(linkMatchRules); _i < _a.length; _i++) {
17281
17467
  var schema = _a[_i];
17282
17468
  var rule = linkMatchRules[schema];
17283
17469
  var matches = url.match(rule.match);
@@ -17394,7 +17580,7 @@ exports.default = normalizeRect;
17394
17580
  "use strict";
17395
17581
 
17396
17582
  Object.defineProperty(exports, "__esModule", { value: true });
17397
- var toArray_1 = __webpack_require__(/*! ./toArray */ "./packages/roosterjs-editor-dom/lib/utils/toArray.ts");
17583
+ var toArray_1 = __webpack_require__(/*! ../jsUtils/toArray */ "./packages/roosterjs-editor-dom/lib/jsUtils/toArray.ts");
17398
17584
  /**
17399
17585
  * Query HTML elements in the container by a selector string
17400
17586
  * @param container Container element to query from
@@ -17505,10 +17691,9 @@ exports.getTargetWindow = void 0;
17505
17691
  /**
17506
17692
  * @internal Export for test only
17507
17693
  * Try get window from the given node or range
17508
- * @param source Source node or range
17694
+ * @param node Source node to get window from
17509
17695
  */
17510
- function getTargetWindow(source) {
17511
- var node = source && (source.commonAncestorContainer || source);
17696
+ function getTargetWindow(node) {
17512
17697
  var document = node &&
17513
17698
  (node.ownerDocument ||
17514
17699
  (Object.prototype.toString.apply(node) == '[object HTMLDocument]'
@@ -17525,6 +17710,11 @@ exports.getTargetWindow = getTargetWindow;
17525
17710
  * @param typeName Target type name
17526
17711
  */
17527
17712
  function safeInstanceOf(obj, typeName) {
17713
+ var _a;
17714
+ if (typeName == 'Range') {
17715
+ return (Object.prototype.toString.apply(obj) == '[object Range]' &&
17716
+ !!((_a = obj) === null || _a === void 0 ? void 0 : _a.commonAncestorContainer));
17717
+ }
17528
17718
  var targetWindow = getTargetWindow(obj);
17529
17719
  var targetType = targetWindow && targetWindow[typeName];
17530
17720
  var mainWindow = window;
@@ -17854,24 +18044,6 @@ function splitTextNode(textNode, offset, returnFirstPart) {
17854
18044
  exports.default = splitTextNode;
17855
18045
 
17856
18046
 
17857
- /***/ }),
17858
-
17859
- /***/ "./packages/roosterjs-editor-dom/lib/utils/toArray.ts":
17860
- /*!************************************************************!*\
17861
- !*** ./packages/roosterjs-editor-dom/lib/utils/toArray.ts ***!
17862
- \************************************************************/
17863
- /*! no static exports found */
17864
- /***/ (function(module, exports, __webpack_require__) {
17865
-
17866
- "use strict";
17867
-
17868
- Object.defineProperty(exports, "__esModule", { value: true });
17869
- function toArray(collection) {
17870
- return [].slice.call(collection);
17871
- }
17872
- exports.default = toArray;
17873
-
17874
-
17875
18047
  /***/ }),
17876
18048
 
17877
18049
  /***/ "./packages/roosterjs-editor-dom/lib/utils/unwrap.ts":
@@ -18550,6 +18722,7 @@ Object.defineProperty(exports, "AutoFormat", { enumerable: true, get: function (
18550
18722
 
18551
18723
  Object.defineProperty(exports, "__esModule", { value: true });
18552
18724
  var getAllFeatures_1 = __webpack_require__(/*! ./getAllFeatures */ "./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/getAllFeatures.ts");
18725
+ var lib_1 = __webpack_require__(/*! roosterjs-editor-dom/lib */ "./packages/roosterjs-editor-dom/lib/index.ts");
18553
18726
  /**
18554
18727
  * An editor plugin to handle content edit event.
18555
18728
  * The following cases are included:
@@ -18586,7 +18759,7 @@ var ContentEdit = /** @class */ (function () {
18586
18759
  var _this = this;
18587
18760
  var features = [];
18588
18761
  var allFeatures = (0, getAllFeatures_1.default)();
18589
- Object.keys(allFeatures).forEach(function (key) {
18762
+ (0, lib_1.getObjectKeys)(allFeatures).forEach(function (key) {
18590
18763
  var feature = allFeatures[key];
18591
18764
  var hasSettingForKey = _this.settingsOverride && _this.settingsOverride[key] !== undefined;
18592
18765
  if ((hasSettingForKey && _this.settingsOverride[key]) ||
@@ -18934,8 +19107,8 @@ exports.EntityFeatures = {
18934
19107
 
18935
19108
  Object.defineProperty(exports, "__esModule", { value: true });
18936
19109
  exports.ListFeatures = void 0;
18937
- var getListStyle_1 = __webpack_require__(/*! ../utils/getListStyle */ "./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getListStyle.ts");
18938
- var getListType_1 = __webpack_require__(/*! ../utils/getListType */ "./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getListType.ts");
19110
+ var getAutoBulletListStyle_1 = __webpack_require__(/*! ../utils/getAutoBulletListStyle */ "./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getAutoBulletListStyle.ts");
19111
+ var getAutoNumberingListStyle_1 = __webpack_require__(/*! ../utils/getAutoNumberingListStyle */ "./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getAutoNumberingListStyle.ts");
18939
19112
  var roosterjs_editor_api_1 = __webpack_require__(/*! roosterjs-editor-api */ "./packages/roosterjs-editor-api/lib/index.ts");
18940
19113
  var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./packages/roosterjs-editor-dom/lib/index.ts");
18941
19114
  /**
@@ -19060,15 +19233,10 @@ var AutoBullet = {
19060
19233
  if (!cacheGetListElement(event, editor)) {
19061
19234
  var searcher = editor.getContentSearcherOfCursor(event);
19062
19235
  var textBeforeCursor = searcher.getSubStringBefore(4);
19063
- var listTrigger = function (text) {
19064
- return editor.isFeatureEnabled("AutoFormatList" /* AutoFormatList */)
19065
- ? (0, getListType_1.default)(text)
19066
- : isAListPattern(text);
19067
- };
19068
19236
  // Auto list is triggered if:
19069
19237
  // 1. Text before cursor exactly matches '*', '-' or '1.'
19070
19238
  // 2. There's no non-text inline entities before cursor
19071
- return listTrigger(textBeforeCursor) && !searcher.getNearestNonTextInlineElement();
19239
+ return isAListPattern(textBeforeCursor) && !searcher.getNearestNonTextInlineElement();
19072
19240
  }
19073
19241
  return false;
19074
19242
  },
@@ -19081,36 +19249,92 @@ var AutoBullet = {
19081
19249
  var searcher = editor.getContentSearcherOfCursor();
19082
19250
  var textBeforeCursor = searcher.getSubStringBefore(4);
19083
19251
  var textRange = searcher.getRangeFromText(textBeforeCursor, true /*exactMatch*/);
19084
- var listType = 0 /* None */;
19085
- var listStyle;
19086
- if (editor.isFeatureEnabled("AutoFormatList" /* AutoFormatList */)) {
19087
- listType = (0, getListType_1.default)(textBeforeCursor);
19088
- listStyle = (0, getListStyle_1.default)(textBeforeCursor, listType);
19089
- }
19090
- else {
19091
- listType =
19092
- textBeforeCursor.indexOf('*') == 0 || textBeforeCursor.indexOf('-') == 0
19093
- ? 2 /* Unordered */
19094
- : isAListPattern(textBeforeCursor)
19095
- ? 1 /* Ordered */
19096
- : 0 /* None */;
19097
- }
19098
19252
  if (!textRange) {
19099
19253
  // no op if the range can't be found
19100
19254
  }
19101
- else if (listType === 2 /* Unordered */) {
19255
+ else if (textBeforeCursor.indexOf('*') == 0 ||
19256
+ textBeforeCursor.indexOf('-') == 0) {
19102
19257
  prepareAutoBullet(editor, textRange);
19103
- (0, roosterjs_editor_api_1.toggleBullet)(editor, listStyle);
19258
+ (0, roosterjs_editor_api_1.toggleBullet)(editor);
19104
19259
  }
19105
- else if (listType === 1 /* Ordered */) {
19260
+ else if (isAListPattern(textBeforeCursor)) {
19106
19261
  prepareAutoBullet(editor, textRange);
19107
- (0, roosterjs_editor_api_1.toggleNumbering)(editor, undefined /* startNumber*/, listStyle);
19262
+ (0, roosterjs_editor_api_1.toggleNumbering)(editor);
19263
+ }
19264
+ else if ((regions = editor.getSelectedRegions()) && regions.length == 1) {
19265
+ var num = parseInt(textBeforeCursor);
19266
+ prepareAutoBullet(editor, textRange);
19267
+ (0, roosterjs_editor_api_1.toggleNumbering)(editor, num);
19268
+ }
19269
+ (_a = searcher.getRangeFromText(textBeforeCursor, true /*exactMatch*/)) === null || _a === void 0 ? void 0 : _a.deleteContents();
19270
+ }, null /*changeSource*/, true /*canUndoByBackspace*/);
19271
+ },
19272
+ };
19273
+ /**
19274
+ * Requires @see ExperimentalFeatures.AutoFormatList to be enabled
19275
+ * AutoBulletList edit feature, provides the ability to automatically convert current line into a bullet list.
19276
+ */
19277
+ var AutoBulletList = {
19278
+ keys: [32 /* SPACE */],
19279
+ shouldHandleEvent: function (event, editor) {
19280
+ if (!cacheGetListElement(event, editor) &&
19281
+ editor.isFeatureEnabled("AutoFormatList" /* AutoFormatList */)) {
19282
+ return shouldTriggerList(event, editor, getAutoBulletListStyle_1.default);
19283
+ }
19284
+ return false;
19285
+ },
19286
+ handleEvent: function (event, editor) {
19287
+ editor.insertContent('&nbsp;');
19288
+ event.rawEvent.preventDefault();
19289
+ editor.addUndoSnapshot(function () {
19290
+ var _a;
19291
+ var searcher = editor.getContentSearcherOfCursor();
19292
+ var textBeforeCursor = searcher.getSubStringBefore(5);
19293
+ var textRange = searcher.getRangeFromText(textBeforeCursor, true /*exactMatch*/);
19294
+ var listStyle = (0, getAutoBulletListStyle_1.default)(textBeforeCursor);
19295
+ if (textRange) {
19296
+ prepareAutoBullet(editor, textRange);
19297
+ (0, roosterjs_editor_api_1.toggleBullet)(editor, listStyle);
19298
+ }
19299
+ (_a = searcher.getRangeFromText(textBeforeCursor, true /*exactMatch*/)) === null || _a === void 0 ? void 0 : _a.deleteContents();
19300
+ }, null /*changeSource*/, true /*canUndoByBackspace*/);
19301
+ },
19302
+ };
19303
+ /**
19304
+ * Requires @see ExperimentalFeatures.AutoFormatList to be enabled
19305
+ * AutoNumberingList edit feature, provides the ability to automatically convert current line into a numbering list.
19306
+ */
19307
+ var AutoNumberingList = {
19308
+ keys: [32 /* SPACE */],
19309
+ shouldHandleEvent: function (event, editor) {
19310
+ if (!cacheGetListElement(event, editor) &&
19311
+ editor.isFeatureEnabled("AutoFormatList" /* AutoFormatList */)) {
19312
+ return shouldTriggerList(event, editor, getAutoNumberingListStyle_1.default);
19313
+ }
19314
+ return false;
19315
+ },
19316
+ handleEvent: function (event, editor) {
19317
+ editor.insertContent('&nbsp;');
19318
+ event.rawEvent.preventDefault();
19319
+ editor.addUndoSnapshot(function () {
19320
+ var _a;
19321
+ var regions;
19322
+ var searcher = editor.getContentSearcherOfCursor();
19323
+ var textBeforeCursor = searcher.getSubStringBefore(5);
19324
+ var textRange = searcher.getRangeFromText(textBeforeCursor, true /*exactMatch*/);
19325
+ var listStyle = (0, getAutoNumberingListStyle_1.default)(textBeforeCursor);
19326
+ if (!textRange) {
19327
+ // no op if the range can't be found
19108
19328
  }
19109
19329
  else if ((regions = editor.getSelectedRegions()) && regions.length == 1) {
19110
19330
  var num = parseInt(textBeforeCursor);
19111
19331
  prepareAutoBullet(editor, textRange);
19112
19332
  (0, roosterjs_editor_api_1.toggleNumbering)(editor, num, listStyle);
19113
19333
  }
19334
+ else {
19335
+ prepareAutoBullet(editor, textRange);
19336
+ (0, roosterjs_editor_api_1.toggleNumbering)(editor, undefined /* startNumber*/, listStyle);
19337
+ }
19114
19338
  (_a = searcher.getRangeFromText(textBeforeCursor, true /*exactMatch*/)) === null || _a === void 0 ? void 0 : _a.deleteContents();
19115
19339
  }, null /*changeSource*/, true /*canUndoByBackspace*/);
19116
19340
  },
@@ -19177,6 +19401,12 @@ function cacheGetListElement(event, editor) {
19177
19401
  var listElement = li && (0, roosterjs_editor_dom_1.getTagOfNode)(li) == 'LI' && editor.getElementAtCursor('UL,OL', li);
19178
19402
  return listElement ? [listElement, li] : null;
19179
19403
  }
19404
+ function shouldTriggerList(event, editor, getListStyle) {
19405
+ var searcher = editor.getContentSearcherOfCursor(event);
19406
+ var textBeforeCursor = searcher.getSubStringBefore(4);
19407
+ var itHasSpace = /\s/g.test(textBeforeCursor);
19408
+ return (!itHasSpace && !searcher.getNearestNonTextInlineElement() && getListStyle(textBeforeCursor));
19409
+ }
19180
19410
  /**
19181
19411
  * @internal
19182
19412
  */
@@ -19189,6 +19419,8 @@ exports.ListFeatures = {
19189
19419
  mergeInNewLineWhenBackspaceOnFirstChar: MergeInNewLine,
19190
19420
  maintainListChain: MaintainListChain,
19191
19421
  maintainListChainWhenDelete: MaintainListChainWhenDelete,
19422
+ autoNumberingList: AutoNumberingList,
19423
+ autoBulletList: AutoBulletList,
19192
19424
  };
19193
19425
 
19194
19426
 
@@ -19529,7 +19761,7 @@ var CHILD_PARENT_TAG_MAP = {
19529
19761
  TH: 'TABLE',
19530
19762
  LI: 'OL,UL',
19531
19763
  };
19532
- var CHILD_SELECTOR = Object.keys(CHILD_PARENT_TAG_MAP).join(',');
19764
+ var CHILD_SELECTOR = (0, roosterjs_editor_dom_1.getObjectKeys)(CHILD_PARENT_TAG_MAP).join(',');
19533
19765
  /**
19534
19766
  * InsertLineBeforeStructuredNode edit feature, provides the ability to insert an empty line before
19535
19767
  * a structured element (bullet/numbering list, blockquote, table) if the element is at beginning of
@@ -19963,10 +20195,48 @@ Object.defineProperty(exports, "getAllFeatures", { enumerable: true, get: functi
19963
20195
 
19964
20196
  /***/ }),
19965
20197
 
19966
- /***/ "./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getListStyle.ts":
19967
- /*!*****************************************************************************************!*\
19968
- !*** ./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getListStyle.ts ***!
19969
- \*****************************************************************************************/
20198
+ /***/ "./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getAutoBulletListStyle.ts":
20199
+ /*!***************************************************************************************************!*\
20200
+ !*** ./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getAutoBulletListStyle.ts ***!
20201
+ \***************************************************************************************************/
20202
+ /*! no static exports found */
20203
+ /***/ (function(module, exports, __webpack_require__) {
20204
+
20205
+ "use strict";
20206
+
20207
+ Object.defineProperty(exports, "__esModule", { value: true });
20208
+ var bulletListType = {
20209
+ '*': 1 /* Disc */,
20210
+ '-': 2 /* Dash */,
20211
+ '--': 3 /* Square */,
20212
+ '->': 5 /* LongArrow */,
20213
+ '-->': 5 /* LongArrow */,
20214
+ '=>': 6 /* UnfilledArrow */,
20215
+ '>': 4 /* ShortArrow */,
20216
+ '—': 7 /* Hyphen */,
20217
+ };
20218
+ var identifyBulletListType = function (bullet) {
20219
+ return bulletListType[bullet] || null;
20220
+ };
20221
+ /**
20222
+ * @internal
20223
+ * @param textBeforeCursor The trigger character
20224
+ * @returns The style of a bullet list triggered by a string
20225
+ */
20226
+ function getAutoBulletListStyle(textBeforeCursor) {
20227
+ var trigger = textBeforeCursor.trim();
20228
+ var bulletType = identifyBulletListType(trigger);
20229
+ return bulletType;
20230
+ }
20231
+ exports.default = getAutoBulletListStyle;
20232
+
20233
+
20234
+ /***/ }),
20235
+
20236
+ /***/ "./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getAutoNumberingListStyle.ts":
20237
+ /*!******************************************************************************************************!*\
20238
+ !*** ./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getAutoNumberingListStyle.ts ***!
20239
+ \******************************************************************************************************/
19970
20240
  /*! no static exports found */
19971
20241
  /***/ (function(module, exports, __webpack_require__) {
19972
20242
 
@@ -19975,145 +20245,100 @@ Object.defineProperty(exports, "getAllFeatures", { enumerable: true, get: functi
19975
20245
  var _a, _b, _c, _d, _e, _f;
19976
20246
  Object.defineProperty(exports, "__esModule", { value: true });
19977
20247
  var characters = {
19978
- '.': 0 /* Dot */,
19979
- '-': 1 /* Dash */,
19980
- ')': 2 /* Parenthesis */,
19981
- '(': 3 /* DoubleParenthesis */,
20248
+ '.': 1 /* Dot */,
20249
+ '-': 2 /* Dash */,
20250
+ ')': 3 /* Parenthesis */,
20251
+ '(': 4 /* DoubleParenthesis */,
19982
20252
  };
19983
- var identifyCharacter = function (text) {
19984
- var char = text[0] === '(' ? text[0] : text[text.length - 1];
19985
- return characters[char];
20253
+ var identifyCharacter = function (text, secondSeparator) {
20254
+ var charType = characters[text];
20255
+ return charType === 4 /* DoubleParenthesis */ && secondSeparator !== ')'
20256
+ ? undefined
20257
+ : charType;
19986
20258
  };
19987
20259
  var identifyNumberingType = function (text) {
19988
- var char = text[0] === '(' ? text[1] : text[0];
19989
- if (!isNaN(parseInt(char))) {
19990
- return 0 /* Decimal */;
20260
+ if (!isNaN(parseInt(text))) {
20261
+ return 1 /* Decimal */;
19991
20262
  }
19992
- else if (/[a-z]+/g.test(char)) {
19993
- if (char === 'i') {
19994
- return 3 /* LowerRoman */;
20263
+ else if (/[a-z]+/g.test(text)) {
20264
+ if (text === 'i') {
20265
+ return 4 /* LowerRoman */;
19995
20266
  }
19996
20267
  else {
19997
- return 1 /* LowerAlpha */;
20268
+ return 2 /* LowerAlpha */;
19998
20269
  }
19999
20270
  }
20000
- else if (/[A-Z]+/g.test(char)) {
20001
- if (char === 'I') {
20002
- return 4 /* UpperRoman */;
20271
+ else if (/[A-Z]+/g.test(text)) {
20272
+ if (text === 'I') {
20273
+ return 5 /* UpperRoman */;
20003
20274
  }
20004
20275
  else {
20005
- return 2 /* UpperAlpha */;
20276
+ return 3 /* UpperAlpha */;
20006
20277
  }
20007
20278
  }
20008
20279
  };
20009
20280
  var numberingListTypes = (_a = {},
20010
- _a[0 /* Decimal */] = function (char) { return DecimalsTypes[char]; },
20011
- _a[1 /* LowerAlpha */] = function (char) { return LowerAlphaTypes[char]; },
20012
- _a[2 /* UpperAlpha */] = function (char) { return UpperAlphaTypes[char]; },
20013
- _a[3 /* LowerRoman */] = function (char) { return LowerRomanTypes[char]; },
20014
- _a[4 /* UpperRoman */] = function (char) { return UpperRomanTypes[char]; },
20281
+ _a[1 /* Decimal */] = function (char) { return DecimalsTypes[char] || null; },
20282
+ _a[2 /* LowerAlpha */] = function (char) { return LowerAlphaTypes[char] || null; },
20283
+ _a[3 /* UpperAlpha */] = function (char) { return UpperAlphaTypes[char] || null; },
20284
+ _a[4 /* LowerRoman */] = function (char) { return LowerRomanTypes[char] || null; },
20285
+ _a[5 /* UpperRoman */] = function (char) { return UpperRomanTypes[char] || null; },
20015
20286
  _a);
20016
20287
  var UpperRomanTypes = (_b = {},
20017
- _b[0 /* Dot */] = 16 /* UpperRoman */,
20018
- _b[1 /* Dash */] = 19 /* UpperRomanDash */,
20019
- _b[2 /* Parenthesis */] = 17 /* UpperRomanParenthesis */,
20020
- _b[3 /* DoubleParenthesis */] = 18 /* UpperRomanDoubleParenthesis */,
20288
+ _b[1 /* Dot */] = 17 /* UpperRoman */,
20289
+ _b[2 /* Dash */] = 20 /* UpperRomanDash */,
20290
+ _b[3 /* Parenthesis */] = 18 /* UpperRomanParenthesis */,
20291
+ _b[4 /* DoubleParenthesis */] = 19 /* UpperRomanDoubleParenthesis */,
20021
20292
  _b);
20022
20293
  var LowerRomanTypes = (_c = {},
20023
- _c[0 /* Dot */] = 12 /* LowerRoman */,
20024
- _c[1 /* Dash */] = 15 /* LowerRomanDash */,
20025
- _c[2 /* Parenthesis */] = 13 /* LowerRomanParenthesis */,
20026
- _c[3 /* DoubleParenthesis */] = 14 /* LowerRomanDoubleParenthesis */,
20294
+ _c[1 /* Dot */] = 13 /* LowerRoman */,
20295
+ _c[2 /* Dash */] = 16 /* LowerRomanDash */,
20296
+ _c[3 /* Parenthesis */] = 14 /* LowerRomanParenthesis */,
20297
+ _c[4 /* DoubleParenthesis */] = 15 /* LowerRomanDoubleParenthesis */,
20027
20298
  _c);
20028
20299
  var UpperAlphaTypes = (_d = {},
20029
- _d[0 /* Dot */] = 8 /* UpperAlpha */,
20030
- _d[1 /* Dash */] = 11 /* UpperAlphaDash */,
20031
- _d[2 /* Parenthesis */] = 9 /* UpperAlphaParenthesis */,
20032
- _d[3 /* DoubleParenthesis */] = 10 /* UpperAlphaDoubleParenthesis */,
20300
+ _d[1 /* Dot */] = 9 /* UpperAlpha */,
20301
+ _d[2 /* Dash */] = 12 /* UpperAlphaDash */,
20302
+ _d[3 /* Parenthesis */] = 10 /* UpperAlphaParenthesis */,
20303
+ _d[4 /* DoubleParenthesis */] = 11 /* UpperAlphaDoubleParenthesis */,
20033
20304
  _d);
20034
20305
  var LowerAlphaTypes = (_e = {},
20035
- _e[0 /* Dot */] = 4 /* LowerAlpha */,
20036
- _e[1 /* Dash */] = 7 /* LowerAlphaDash */,
20037
- _e[2 /* Parenthesis */] = 5 /* LowerAlphaParenthesis */,
20038
- _e[3 /* DoubleParenthesis */] = 6 /* LowerAlphaDoubleParenthesis */,
20306
+ _e[1 /* Dot */] = 5 /* LowerAlpha */,
20307
+ _e[2 /* Dash */] = 8 /* LowerAlphaDash */,
20308
+ _e[3 /* Parenthesis */] = 6 /* LowerAlphaParenthesis */,
20309
+ _e[4 /* DoubleParenthesis */] = 7 /* LowerAlphaDoubleParenthesis */,
20039
20310
  _e);
20040
20311
  var DecimalsTypes = (_f = {},
20041
- _f[0 /* Dot */] = 0 /* Decimal */,
20042
- _f[1 /* Dash */] = 1 /* DecimalDash */,
20043
- _f[2 /* Parenthesis */] = 2 /* DecimalParenthesis */,
20044
- _f[3 /* DoubleParenthesis */] = 3 /* DecimalDoubleParenthesis */,
20312
+ _f[1 /* Dot */] = 1 /* Decimal */,
20313
+ _f[2 /* Dash */] = 2 /* DecimalDash */,
20314
+ _f[3 /* Parenthesis */] = 3 /* DecimalParenthesis */,
20315
+ _f[4 /* DoubleParenthesis */] = 4 /* DecimalDoubleParenthesis */,
20045
20316
  _f);
20046
- var bulletListType = {
20047
- '*': 0 /* Disc */,
20048
- '-': 1 /* Dash */,
20049
- '--': 2 /* Square */,
20050
- '->': 4 /* LongArrow */,
20051
- '-->': 4 /* LongArrow */,
20052
- '=>': 5 /* UnfilledArrow */,
20053
- '>': 3 /* ShortArrow */,
20054
- };
20055
- var identifyNumberingListType = function (textBeforeCursor) {
20056
- var numbering = textBeforeCursor.replace(/\s/g, '');
20057
- var char = identifyCharacter(numbering);
20058
- var numberingType = identifyNumberingType(numbering);
20059
- return numberingListTypes[numberingType](char);
20060
- };
20061
- var identifyBulletListType = function (textBeforeCursor) {
20062
- var bullet = textBeforeCursor.replace(/\s/g, '');
20063
- return bulletListType[bullet];
20064
- };
20065
- /**
20066
- * @internal
20067
- * @param textBeforeCursor The trigger character
20068
- * @param listType The type of the list (ordered or unordered)
20069
- * @returns the style of the list
20070
- */
20071
- function getListStyle(textBeforeCursor, listType) {
20072
- if (listType === 1 /* Ordered */) {
20073
- return identifyNumberingListType(textBeforeCursor);
20317
+ var identifyNumberingListType = function (numbering) {
20318
+ // If the marker length is 3, the marker style is double parenthis such as (1), (A). Then the number is second character of the string and the separator is first character and last character.
20319
+ var separator = numbering.length === 3 ? numbering[0] : numbering[1];
20320
+ var secondSeparator = numbering.length === 3 ? numbering[2] : undefined;
20321
+ var char = identifyCharacter(separator, secondSeparator);
20322
+ // if separator is not valid, no need to check if the number is valid.
20323
+ if (char) {
20324
+ var number = numbering.length === 3 ? numbering[1] : numbering[0];
20325
+ var numberingType = identifyNumberingType(number);
20326
+ return numberingType ? numberingListTypes[numberingType](char) : null;
20074
20327
  }
20075
- else {
20076
- return identifyBulletListType(textBeforeCursor);
20077
- }
20078
- }
20079
- exports.default = getListStyle;
20080
-
20081
-
20082
- /***/ }),
20083
-
20084
- /***/ "./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getListType.ts":
20085
- /*!****************************************************************************************!*\
20086
- !*** ./packages/roosterjs-editor-plugins/lib/plugins/ContentEdit/utils/getListType.ts ***!
20087
- \****************************************************************************************/
20088
- /*! no static exports found */
20089
- /***/ (function(module, exports, __webpack_require__) {
20090
-
20091
- "use strict";
20092
-
20093
- Object.defineProperty(exports, "__esModule", { value: true });
20094
- function isABulletList(textBeforeCursor) {
20095
- var hasTriggers = ['*', '-', '>'].indexOf(textBeforeCursor[0]) > -1;
20096
- var REGEX = /^(.*?)=>|^(.*?)->|^(.*?)-->|^(.*?)=>|^(.*?)--/;
20097
- return hasTriggers || REGEX.test(textBeforeCursor);
20098
- }
20099
- function isANumberingList(textBeforeCursor) {
20100
- 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}\))$/;
20101
- return REGEX.test(textBeforeCursor.replace(/\s/g, ''));
20102
- }
20328
+ return null;
20329
+ };
20103
20330
  /**
20104
20331
  * @internal
20105
20332
  * @param textBeforeCursor The trigger character
20106
- * @returns If the list is ordered or unordered
20333
+ * @returns The style of a numbering list triggered by a string
20107
20334
  */
20108
- function getListType(textBeforeCursor) {
20109
- if (isABulletList(textBeforeCursor)) {
20110
- return 2 /* Unordered */;
20111
- }
20112
- else if (isANumberingList(textBeforeCursor)) {
20113
- return 1 /* Ordered */;
20114
- }
20335
+ function getAutoNumberingListStyle(textBeforeCursor) {
20336
+ var trigger = textBeforeCursor.trim();
20337
+ // the marker must be a combination of 2 or 3 characters, so if the length is less than 2, no need to check
20338
+ var numberingType = trigger.length > 1 ? identifyNumberingListType(trigger) : null;
20339
+ return numberingType;
20115
20340
  }
20116
- exports.default = getListType;
20341
+ exports.default = getAutoNumberingListStyle;
20117
20342
 
20118
20343
 
20119
20344
  /***/ }),
@@ -20905,7 +21130,7 @@ var ImageEdit = /** @class */ (function () {
20905
21130
  this.editor = editor;
20906
21131
  this.disposer = editor.addDomEventHandler('blur', this.onBlur);
20907
21132
  // Read current enabled features from editor to determine which editing operations are allowed
20908
- Object.keys(FeatureToOperationMap).forEach(function (key) {
21133
+ (0, roosterjs_editor_dom_1.getObjectKeys)(FeatureToOperationMap).forEach(function (key) {
20909
21134
  _this.allowedOperations |= _this.editor.isFeatureEnabled(key)
20910
21135
  ? FeatureToOperationMap[key]
20911
21136
  : 0;
@@ -20990,14 +21215,13 @@ var ImageEdit = /** @class */ (function () {
20990
21215
  // When there is image in editing, clean up any cached objects and elements
20991
21216
  this.clearDndHelpers();
20992
21217
  // Apply the changes, and add undo snapshot if necessary
20993
- if ((0, applyChange_1.default)(this.editor, this.image, this.editInfo, this.lastSrc, this.wasResized)) {
20994
- this.editor.addUndoSnapshot(function () { return _this.image; }, "ImageResize" /* ImageResize */);
20995
- }
21218
+ (0, applyChange_1.default)(this.editor, this.image, this.editInfo, this.lastSrc, this.wasResized);
20996
21219
  // Remove editing wrapper
20997
21220
  var wrapper = this.getImageWrapper(this.image);
20998
21221
  if (wrapper) {
20999
21222
  this.removeWrapper(wrapper);
21000
21223
  }
21224
+ this.editor.addUndoSnapshot(function () { return _this.image; }, "ImageResize" /* ImageResize */);
21001
21225
  if (selectImage) {
21002
21226
  this.editor.select(this.image);
21003
21227
  }
@@ -21045,7 +21269,7 @@ var ImageEdit = /** @class */ (function () {
21045
21269
  var isExperimentalHandlesEnabled = this.editor.isFeatureEnabled("AdaptiveHandlesResizer" /* AdaptiveHandlesResizer */);
21046
21270
  // Get HTML for all edit elements (resize handle, rotate handle, crop handle and overlay, ...) and create HTML element
21047
21271
  var options = {
21048
- borderColor: this.options.borderColor,
21272
+ borderColor: getColorString(this.options.borderColor, this.editor.isDarkMode()),
21049
21273
  rotateIconHTML: this.options.rotateIconHTML,
21050
21274
  rotateHandleBackColor: this.editor.isDarkMode()
21051
21275
  ? DARK_MODE_BGCOLOR
@@ -21054,7 +21278,7 @@ var ImageEdit = /** @class */ (function () {
21054
21278
  handlesExperimentalFeatures: isExperimentalHandlesEnabled,
21055
21279
  };
21056
21280
  var htmlData = [(0, Resizer_1.getResizeBordersHTML)(options)];
21057
- Object.keys(ImageEditHTMLMap).forEach(function (thisOperation) {
21281
+ (0, roosterjs_editor_dom_1.getObjectKeys)(ImageEditHTMLMap).forEach(function (thisOperation) {
21058
21282
  if ((operation & thisOperation) == thisOperation) {
21059
21283
  (0, roosterjs_editor_dom_1.arrayPush)(htmlData, ImageEditHTMLMap[thisOperation](options, _this.onShowResizeHandle));
21060
21284
  }
@@ -21175,6 +21399,12 @@ function isASmallImage(editInfo, isFeatureEnabled) {
21175
21399
  var widthPx = editInfo.widthPx, heightPx = editInfo.heightPx;
21176
21400
  return widthPx && heightPx && widthPx * widthPx < MAX_SMALL_SIZE_IMAGE && isFeatureEnabled;
21177
21401
  }
21402
+ function getColorString(color, isDarkMode) {
21403
+ if (typeof color === 'string') {
21404
+ return color.trim();
21405
+ }
21406
+ return isDarkMode ? color.darkModeColor.trim() : color.lightModeColor.trim();
21407
+ }
21178
21408
 
21179
21409
 
21180
21410
  /***/ }),
@@ -21354,7 +21584,6 @@ var editInfo_1 = __webpack_require__(/*! ./editInfo */ "./packages/roosterjs-edi
21354
21584
  * @param image The image to apply the change
21355
21585
  * @param editInfo Edit info that contains the changed information of the image
21356
21586
  * @param previousSrc Last src value of the image before the change was made
21357
- * @returns True if the image is changed, otherwise false
21358
21587
  */
21359
21588
  function applyChange(editor, image, editInfo, previousSrc, wasResized) {
21360
21589
  var newSrc = '';
@@ -21401,9 +21630,6 @@ function applyChange(editor, image, editInfo, previousSrc, wasResized) {
21401
21630
  var _a = (0, getGeneratedImageSize_1.default)(editInfo), targetWidth = _a.targetWidth, targetHeight = _a.targetHeight;
21402
21631
  image.src = newSrc;
21403
21632
  setImageSize(image, wasResized, targetWidth, targetHeight);
21404
- return (srcChanged ||
21405
- editInfo.widthPx != initEditInfo.widthPx ||
21406
- editInfo.heightPx != initEditInfo.heightPx);
21407
21633
  }
21408
21634
  exports.default = applyChange;
21409
21635
  /**
@@ -23201,7 +23427,9 @@ function getAndSetNodeId(wordCustomData, element) {
23201
23427
 
23202
23428
  Object.defineProperty(exports, "__esModule", { value: true });
23203
23429
  var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./packages/roosterjs-editor-dom/lib/index.ts");
23430
+ var MSO_COMMENT_PARENT = 'mso-comment-parent';
23204
23431
  var MSO_COMMENT_REFERENCE = 'mso-comment-reference';
23432
+ var MSO_COMMENT_DATE = 'mso-comment-date';
23205
23433
  var MSO_COMMENT_ANCHOR_HREF_REGEX = /#_msocom_/;
23206
23434
  var MSO_SPECIAL_CHARACTER = 'mso-special-character';
23207
23435
  var MSO_SPECIAL_CHARACTER_COMMENT = 'comment';
@@ -23212,7 +23440,7 @@ var MSO_ELEMENT_COMMENT_LIST = 'comment-list';
23212
23440
  * @internal
23213
23441
  * Removes comments when pasting Word content.
23214
23442
  */
23215
- function commentsRemoval(elementCallbacks) {
23443
+ function commentsRemoval(elementCallbacks, styleCallbacks) {
23216
23444
  // 1st Step, Remove SPAN elements added after each comment.
23217
23445
  // Word adds multiple elements for comments as SPAN elements.
23218
23446
  // In this step we remove these elements:
@@ -23244,11 +23472,7 @@ function commentsRemoval(elementCallbacks) {
23244
23472
  // In this step we remove this Anchor elements.
23245
23473
  (0, roosterjs_editor_dom_1.chainSanitizerCallback)(elementCallbacks, 'A', function (element) {
23246
23474
  var _a;
23247
- var styles = (0, roosterjs_editor_dom_1.getStyles)(element);
23248
- if (!!styles[MSO_COMMENT_REFERENCE]) {
23249
- (0, roosterjs_editor_dom_1.changeElementTag)(element, 'span');
23250
- }
23251
- else if ((0, roosterjs_editor_dom_1.safeInstanceOf)(element, 'HTMLAnchorElement') &&
23475
+ if ((0, roosterjs_editor_dom_1.safeInstanceOf)(element, 'HTMLAnchorElement') &&
23252
23476
  MSO_COMMENT_ANCHOR_HREF_REGEX.test(element.href)) {
23253
23477
  (_a = element.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(element);
23254
23478
  }
@@ -23273,6 +23497,13 @@ function commentsRemoval(elementCallbacks) {
23273
23497
  }
23274
23498
  return true;
23275
23499
  });
23500
+ /**
23501
+ * Remove styles related to Office Comments that can cause unwanted behaviors
23502
+ * depending on the user client
23503
+ */
23504
+ (0, roosterjs_editor_dom_1.chainSanitizerCallback)(styleCallbacks, MSO_COMMENT_REFERENCE, function () { return false; });
23505
+ (0, roosterjs_editor_dom_1.chainSanitizerCallback)(styleCallbacks, MSO_COMMENT_DATE, function () { return false; });
23506
+ (0, roosterjs_editor_dom_1.chainSanitizerCallback)(styleCallbacks, MSO_COMMENT_PARENT, function () { return false; });
23276
23507
  }
23277
23508
  exports.default = commentsRemoval;
23278
23509
 
@@ -23339,7 +23570,7 @@ function convertPastedContentFromWord(event) {
23339
23570
  }
23340
23571
  return true;
23341
23572
  });
23342
- (0, commentsRemoval_1.default)(sanitizingOption.elementCallbacks);
23573
+ (0, commentsRemoval_1.default)(sanitizingOption.elementCallbacks, sanitizingOption.cssStyleCallbacks);
23343
23574
  }
23344
23575
  exports.default = convertPastedContentFromWord;
23345
23576
 
@@ -23890,8 +24121,6 @@ var UNIDENTIFIED_CODE = [0, 229];
23890
24121
  * - Apply selected item in picker
23891
24122
  *
23892
24123
  * PickerPlugin doesn't provide any UI, it just wraps related DOM events and invoke callback functions.
23893
- * To show a picker UI, you need to build your own UI component. Please reference to
23894
- * https://github.com/microsoft/roosterjs/tree/master/demo/scripts/controls/samplepicker
23895
24124
  */
23896
24125
  var PickerPlugin = /** @class */ (function () {
23897
24126
  function PickerPlugin(dataProvider, pickerOptions) {
@@ -25191,7 +25420,7 @@ var TableResize = /** @class */ (function () {
25191
25420
  break;
25192
25421
  }
25193
25422
  }
25194
- _this.setTableEditor(currentTable);
25423
+ _this.setTableEditor(currentTable, e);
25195
25424
  (_a = _this.tableEditor) === null || _a === void 0 ? void 0 : _a.onMouseMove(x, y);
25196
25425
  };
25197
25426
  this.invalidateTableRects = function () {
@@ -25236,13 +25465,13 @@ var TableResize = /** @class */ (function () {
25236
25465
  break;
25237
25466
  }
25238
25467
  };
25239
- TableResize.prototype.setTableEditor = function (table) {
25468
+ TableResize.prototype.setTableEditor = function (table, e) {
25240
25469
  if (this.tableEditor && table != this.tableEditor.table) {
25241
25470
  this.tableEditor.dispose();
25242
25471
  this.tableEditor = null;
25243
25472
  }
25244
25473
  if (!this.tableEditor && table) {
25245
- this.tableEditor = new TableEditor_1.default(this.editor, table, this.invalidateTableRects, this.onShowHelperElement);
25474
+ this.tableEditor = new TableEditor_1.default(this.editor, table, this.invalidateTableRects, this.onShowHelperElement, e.currentTarget);
25246
25475
  }
25247
25476
  };
25248
25477
  TableResize.prototype.ensureTableRects = function () {
@@ -25486,7 +25715,7 @@ var INSERTER_HOVER_OFFSET = 5;
25486
25715
  * When set a different current table or change current TD, we need to update these areas
25487
25716
  */
25488
25717
  var TableEditor = /** @class */ (function () {
25489
- function TableEditor(editor, table, onChanged, onShowHelperElement) {
25718
+ function TableEditor(editor, table, onChanged, onShowHelperElement, eventTarget) {
25490
25719
  var _this = this;
25491
25720
  this.editor = editor;
25492
25721
  this.table = table;
@@ -25515,29 +25744,31 @@ var TableEditor = /** @class */ (function () {
25515
25744
  _this.editor.focus();
25516
25745
  if (table) {
25517
25746
  var vTable = new roosterjs_editor_dom_1.VTable(table);
25518
- var rows = vTable.cells.length - 1;
25519
- var lastCellIndex_1 = 0;
25520
- vTable.cells[rows].forEach(function (cell, index) {
25521
- if (cell.td) {
25522
- lastCellIndex_1 = index;
25523
- }
25524
- });
25525
- var selection = {
25526
- firstCell: {
25527
- x: 0,
25528
- y: 0,
25529
- },
25530
- lastCell: {
25531
- y: rows,
25532
- x: lastCellIndex_1,
25533
- },
25534
- };
25535
- _this.editor.select(table, selection);
25747
+ if (vTable.cells) {
25748
+ var rows = vTable.cells.length - 1;
25749
+ var lastCellIndex_1 = 0;
25750
+ vTable.cells[rows].forEach(function (cell, index) {
25751
+ if (cell.td) {
25752
+ lastCellIndex_1 = index;
25753
+ }
25754
+ });
25755
+ var selection = {
25756
+ firstCell: {
25757
+ x: 0,
25758
+ y: 0,
25759
+ },
25760
+ lastCell: {
25761
+ y: rows,
25762
+ x: lastCellIndex_1,
25763
+ },
25764
+ };
25765
+ _this.editor.select(table, selection);
25766
+ }
25536
25767
  }
25537
25768
  };
25538
25769
  this.isRTL = (0, roosterjs_editor_dom_1.getComputedStyle)(table, 'direction') == 'rtl';
25539
25770
  this.tableResizer = (0, TableResizer_1.default)(table, editor.getZoomScale(), this.isRTL, this.onStartTableResize, this.onFinishEditing, this.onShowHelperElement);
25540
- this.tableSelector = (0, TableSelector_1.default)(table, editor.getZoomScale(), this.onSelect, this.onShowHelperElement);
25771
+ this.tableSelector = (0, TableSelector_1.default)(table, editor.getZoomScale(), this.onSelect, this.onShowHelperElement, this.getShouldShowTableSelectorHandler(this.editor.getScrollContainer(), eventTarget));
25541
25772
  }
25542
25773
  TableEditor.prototype.dispose = function () {
25543
25774
  this.disposeTableResizer();
@@ -25649,6 +25880,21 @@ var TableEditor = /** @class */ (function () {
25649
25880
  }
25650
25881
  this.editor.addUndoSnapshot();
25651
25882
  };
25883
+ TableEditor.prototype.getShouldShowTableSelectorHandler = function (scrollContainer, eventTarget) {
25884
+ if (eventTarget && (0, roosterjs_editor_dom_1.safeInstanceOf)(eventTarget, 'HTMLElement') && scrollContainer) {
25885
+ var scrollContainerRect_1 = (0, roosterjs_editor_dom_1.normalizeRect)(scrollContainer.getBoundingClientRect());
25886
+ var containerRect_1 = (0, roosterjs_editor_dom_1.normalizeRect)(eventTarget.getBoundingClientRect());
25887
+ if (scrollContainerRect_1 && containerRect_1) {
25888
+ var scrollContainerVisibleTop_1 = scrollContainer.scrollTop - scrollContainerRect_1.top;
25889
+ return function (rect) {
25890
+ return containerRect_1.top <= rect.top &&
25891
+ scrollContainerVisibleTop_1 <= rect.top &&
25892
+ scrollContainerRect_1.top <= rect.top;
25893
+ };
25894
+ }
25895
+ }
25896
+ return function () { return true; };
25897
+ };
25652
25898
  return TableEditor;
25653
25899
  }());
25654
25900
  exports.default = TableEditor;
@@ -25671,10 +25917,10 @@ exports.disposeTableEditFeature = void 0;
25671
25917
  * @internal
25672
25918
  */
25673
25919
  function disposeTableEditFeature(resizer) {
25674
- var _a;
25675
- (_a = resizer.div.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(resizer.div);
25920
+ var _a, _b, _c;
25921
+ (_b = (_a = resizer.div) === null || _a === void 0 ? void 0 : _a.parentNode) === null || _b === void 0 ? void 0 : _b.removeChild(resizer.div);
25676
25922
  resizer.div = null;
25677
- resizer.featureHandler.dispose();
25923
+ (_c = resizer.featureHandler) === null || _c === void 0 ? void 0 : _c.dispose();
25678
25924
  resizer.featureHandler = null;
25679
25925
  }
25680
25926
  exports.disposeTableEditFeature = disposeTableEditFeature;
@@ -25908,7 +26154,11 @@ var TABLE_SELECTOR_ID = '_Table_Selector';
25908
26154
  /**
25909
26155
  * @internal
25910
26156
  */
25911
- function createTableSelector(table, zoomScale, onFinishDragging, onShowHelperElement) {
26157
+ function createTableSelector(table, zoomScale, onFinishDragging, onShowHelperElement, shouldShow) {
26158
+ var rect = (0, roosterjs_editor_dom_1.normalizeRect)(table.getBoundingClientRect());
26159
+ if (rect && shouldShow && !shouldShow(rect)) {
26160
+ return { div: null, featureHandler: null, node: table };
26161
+ }
25912
26162
  var document = table.ownerDocument;
25913
26163
  var createElementData = {
25914
26164
  tag: 'div',
@@ -25923,6 +26173,7 @@ function createTableSelector(table, zoomScale, onFinishDragging, onShowHelperEle
25923
26173
  var context = {
25924
26174
  table: table,
25925
26175
  zoomScale: zoomScale,
26176
+ rect: rect,
25926
26177
  };
25927
26178
  setSelectorDivPosition(context, div);
25928
26179
  var onDragEnd = function (context, event) {
@@ -25938,8 +26189,7 @@ function createTableSelector(table, zoomScale, onFinishDragging, onShowHelperEle
25938
26189
  }
25939
26190
  exports.default = createTableSelector;
25940
26191
  function setSelectorDivPosition(context, trigger) {
25941
- var table = context.table;
25942
- var rect = (0, roosterjs_editor_dom_1.normalizeRect)(table.getBoundingClientRect());
26192
+ var rect = context.rect;
25943
26193
  if (rect) {
25944
26194
  trigger.style.top = rect.top - TABLE_SELECTOR_LENGTH + "px";
25945
26195
  trigger.style.left = rect.left - TABLE_SELECTOR_LENGTH - 2 + "px";
@@ -26181,30 +26431,42 @@ exports.CompatibleBulletListType = void 0;
26181
26431
  */
26182
26432
  var CompatibleBulletListType;
26183
26433
  (function (CompatibleBulletListType) {
26434
+ /**
26435
+ * Minimum value of the enum
26436
+ */
26437
+ CompatibleBulletListType[CompatibleBulletListType["Min"] = 1] = "Min";
26184
26438
  /**
26185
26439
  * Bullet triggered by *
26186
26440
  */
26187
- CompatibleBulletListType[CompatibleBulletListType["Disc"] = 0] = "Disc";
26441
+ CompatibleBulletListType[CompatibleBulletListType["Disc"] = 1] = "Disc";
26188
26442
  /**
26189
26443
  * Bullet triggered by -
26190
26444
  */
26191
- CompatibleBulletListType[CompatibleBulletListType["Dash"] = 1] = "Dash";
26445
+ CompatibleBulletListType[CompatibleBulletListType["Dash"] = 2] = "Dash";
26192
26446
  /**
26193
26447
  * Bullet triggered by --
26194
26448
  */
26195
- CompatibleBulletListType[CompatibleBulletListType["Square"] = 2] = "Square";
26449
+ CompatibleBulletListType[CompatibleBulletListType["Square"] = 3] = "Square";
26196
26450
  /**
26197
26451
  * Bullet triggered by >
26198
26452
  */
26199
- CompatibleBulletListType[CompatibleBulletListType["ShortArrow"] = 3] = "ShortArrow";
26453
+ CompatibleBulletListType[CompatibleBulletListType["ShortArrow"] = 4] = "ShortArrow";
26200
26454
  /**
26201
26455
  * Bullet triggered by -> or -->
26202
26456
  */
26203
- CompatibleBulletListType[CompatibleBulletListType["LongArrow"] = 4] = "LongArrow";
26457
+ CompatibleBulletListType[CompatibleBulletListType["LongArrow"] = 5] = "LongArrow";
26204
26458
  /**
26205
26459
  * Bullet triggered by =>
26206
26460
  */
26207
- CompatibleBulletListType[CompatibleBulletListType["UnfilledArrow"] = 5] = "UnfilledArrow";
26461
+ CompatibleBulletListType[CompatibleBulletListType["UnfilledArrow"] = 6] = "UnfilledArrow";
26462
+ /**
26463
+ * Bullet triggered by —
26464
+ */
26465
+ CompatibleBulletListType[CompatibleBulletListType["Hyphen"] = 7] = "Hyphen";
26466
+ /**
26467
+ * Maximum value of the enum
26468
+ */
26469
+ CompatibleBulletListType[CompatibleBulletListType["Max"] = 7] = "Max";
26208
26470
  })(CompatibleBulletListType = exports.CompatibleBulletListType || (exports.CompatibleBulletListType = {}));
26209
26471
 
26210
26472
 
@@ -27463,86 +27725,94 @@ exports.CompatibleNumberingListType = void 0;
27463
27725
  */
27464
27726
  var CompatibleNumberingListType;
27465
27727
  (function (CompatibleNumberingListType) {
27728
+ /**
27729
+ * Minimum value of the enum
27730
+ */
27731
+ CompatibleNumberingListType[CompatibleNumberingListType["Min"] = 1] = "Min";
27466
27732
  /**
27467
27733
  * Numbering triggered by 1.
27468
27734
  */
27469
- CompatibleNumberingListType[CompatibleNumberingListType["Decimal"] = 0] = "Decimal";
27735
+ CompatibleNumberingListType[CompatibleNumberingListType["Decimal"] = 1] = "Decimal";
27470
27736
  /**
27471
27737
  * Numbering triggered by 1-
27472
27738
  */
27473
- CompatibleNumberingListType[CompatibleNumberingListType["DecimalDash"] = 1] = "DecimalDash";
27739
+ CompatibleNumberingListType[CompatibleNumberingListType["DecimalDash"] = 2] = "DecimalDash";
27474
27740
  /**
27475
27741
  * Numbering triggered by 1)
27476
27742
  */
27477
- CompatibleNumberingListType[CompatibleNumberingListType["DecimalParenthesis"] = 2] = "DecimalParenthesis";
27743
+ CompatibleNumberingListType[CompatibleNumberingListType["DecimalParenthesis"] = 3] = "DecimalParenthesis";
27478
27744
  /**
27479
27745
  * Numbering triggered by (1)
27480
27746
  */
27481
- CompatibleNumberingListType[CompatibleNumberingListType["DecimalDoubleParenthesis"] = 3] = "DecimalDoubleParenthesis";
27747
+ CompatibleNumberingListType[CompatibleNumberingListType["DecimalDoubleParenthesis"] = 4] = "DecimalDoubleParenthesis";
27482
27748
  /**
27483
27749
  * Numbering triggered by a.
27484
27750
  */
27485
- CompatibleNumberingListType[CompatibleNumberingListType["LowerAlpha"] = 4] = "LowerAlpha";
27751
+ CompatibleNumberingListType[CompatibleNumberingListType["LowerAlpha"] = 5] = "LowerAlpha";
27486
27752
  /**
27487
27753
  * Numbering triggered by a)
27488
27754
  */
27489
- CompatibleNumberingListType[CompatibleNumberingListType["LowerAlphaParenthesis"] = 5] = "LowerAlphaParenthesis";
27755
+ CompatibleNumberingListType[CompatibleNumberingListType["LowerAlphaParenthesis"] = 6] = "LowerAlphaParenthesis";
27490
27756
  /**
27491
27757
  * Numbering triggered by (a)
27492
27758
  */
27493
- CompatibleNumberingListType[CompatibleNumberingListType["LowerAlphaDoubleParenthesis"] = 6] = "LowerAlphaDoubleParenthesis";
27759
+ CompatibleNumberingListType[CompatibleNumberingListType["LowerAlphaDoubleParenthesis"] = 7] = "LowerAlphaDoubleParenthesis";
27494
27760
  /**
27495
27761
  * Numbering triggered by a-
27496
27762
  */
27497
- CompatibleNumberingListType[CompatibleNumberingListType["LowerAlphaDash"] = 7] = "LowerAlphaDash";
27763
+ CompatibleNumberingListType[CompatibleNumberingListType["LowerAlphaDash"] = 8] = "LowerAlphaDash";
27498
27764
  /**
27499
27765
  * Numbering triggered by A.
27500
27766
  */
27501
- CompatibleNumberingListType[CompatibleNumberingListType["UpperAlpha"] = 8] = "UpperAlpha";
27767
+ CompatibleNumberingListType[CompatibleNumberingListType["UpperAlpha"] = 9] = "UpperAlpha";
27502
27768
  /**
27503
27769
  * Numbering triggered by A)
27504
27770
  */
27505
- CompatibleNumberingListType[CompatibleNumberingListType["UpperAlphaParenthesis"] = 9] = "UpperAlphaParenthesis";
27771
+ CompatibleNumberingListType[CompatibleNumberingListType["UpperAlphaParenthesis"] = 10] = "UpperAlphaParenthesis";
27506
27772
  /**
27507
27773
  * Numbering triggered by (A)
27508
27774
  */
27509
- CompatibleNumberingListType[CompatibleNumberingListType["UpperAlphaDoubleParenthesis"] = 10] = "UpperAlphaDoubleParenthesis";
27775
+ CompatibleNumberingListType[CompatibleNumberingListType["UpperAlphaDoubleParenthesis"] = 11] = "UpperAlphaDoubleParenthesis";
27510
27776
  /**
27511
27777
  * Numbering triggered by A-
27512
27778
  */
27513
- CompatibleNumberingListType[CompatibleNumberingListType["UpperAlphaDash"] = 11] = "UpperAlphaDash";
27779
+ CompatibleNumberingListType[CompatibleNumberingListType["UpperAlphaDash"] = 12] = "UpperAlphaDash";
27514
27780
  /**
27515
27781
  * Numbering triggered by i.
27516
27782
  */
27517
- CompatibleNumberingListType[CompatibleNumberingListType["LowerRoman"] = 12] = "LowerRoman";
27783
+ CompatibleNumberingListType[CompatibleNumberingListType["LowerRoman"] = 13] = "LowerRoman";
27518
27784
  /**
27519
27785
  * Numbering triggered by i)
27520
27786
  */
27521
- CompatibleNumberingListType[CompatibleNumberingListType["LowerRomanParenthesis"] = 13] = "LowerRomanParenthesis";
27787
+ CompatibleNumberingListType[CompatibleNumberingListType["LowerRomanParenthesis"] = 14] = "LowerRomanParenthesis";
27522
27788
  /**
27523
27789
  * Numbering triggered by (i)
27524
27790
  */
27525
- CompatibleNumberingListType[CompatibleNumberingListType["LowerRomanDoubleParenthesis"] = 14] = "LowerRomanDoubleParenthesis";
27791
+ CompatibleNumberingListType[CompatibleNumberingListType["LowerRomanDoubleParenthesis"] = 15] = "LowerRomanDoubleParenthesis";
27526
27792
  /**
27527
27793
  * Numbering triggered by i-
27528
27794
  */
27529
- CompatibleNumberingListType[CompatibleNumberingListType["LowerRomanDash"] = 15] = "LowerRomanDash";
27795
+ CompatibleNumberingListType[CompatibleNumberingListType["LowerRomanDash"] = 16] = "LowerRomanDash";
27530
27796
  /**
27531
27797
  * Numbering triggered by I.
27532
27798
  */
27533
- CompatibleNumberingListType[CompatibleNumberingListType["UpperRoman"] = 16] = "UpperRoman";
27799
+ CompatibleNumberingListType[CompatibleNumberingListType["UpperRoman"] = 17] = "UpperRoman";
27534
27800
  /**
27535
27801
  * Numbering triggered by I)
27536
27802
  */
27537
- CompatibleNumberingListType[CompatibleNumberingListType["UpperRomanParenthesis"] = 17] = "UpperRomanParenthesis";
27803
+ CompatibleNumberingListType[CompatibleNumberingListType["UpperRomanParenthesis"] = 18] = "UpperRomanParenthesis";
27538
27804
  /**
27539
27805
  * Numbering triggered by (I)
27540
27806
  */
27541
- CompatibleNumberingListType[CompatibleNumberingListType["UpperRomanDoubleParenthesis"] = 18] = "UpperRomanDoubleParenthesis";
27807
+ CompatibleNumberingListType[CompatibleNumberingListType["UpperRomanDoubleParenthesis"] = 19] = "UpperRomanDoubleParenthesis";
27542
27808
  /**
27543
27809
  * Numbering triggered by I-
27544
27810
  */
27545
- CompatibleNumberingListType[CompatibleNumberingListType["UpperRomanDash"] = 19] = "UpperRomanDash";
27811
+ CompatibleNumberingListType[CompatibleNumberingListType["UpperRomanDash"] = 20] = "UpperRomanDash";
27812
+ /**
27813
+ * Maximum value of the enum
27814
+ */
27815
+ CompatibleNumberingListType[CompatibleNumberingListType["Max"] = 20] = "Max";
27546
27816
  })(CompatibleNumberingListType = exports.CompatibleNumberingListType || (exports.CompatibleNumberingListType = {}));
27547
27817
 
27548
27818