roosterjs 9.7.0 → 9.8.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.
package/dist/rooster.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- // Type definitions for roosterjs (Version 9.7.0)
1
+ // Type definitions for roosterjs (Version 9.8.1)
2
2
  // Generated by dts tool from roosterjs
3
3
  // Project: https://github.com/Microsoft/roosterjs
4
4
 
@@ -3467,7 +3467,11 @@ type ExperimentalFeature = /**
3467
3467
  * When this feature is enabled, we will persist a content model in memory as long as we can,
3468
3468
  * and use cached element when write back if it is not changed.
3469
3469
  */
3470
- 'PersistCache';
3470
+ 'PersistCache'
3471
+ /**
3472
+ * Workaround for the Legacy Image Edit
3473
+ */
3474
+ | 'LegacyImageSelection';
3471
3475
 
3472
3476
  /**
3473
3477
  * Options for editor
@@ -5047,6 +5051,11 @@ interface AnnounceData {
5047
5051
  * @optional if provided, will attempt to replace {n} with each of the values inside of the array.
5048
5052
  */
5049
5053
  formatStrings?: string[];
5054
+ /**
5055
+ * @optional if provided, will set the ariaLive property of the announce container element to the provided value.
5056
+ * @see https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-live#values
5057
+ */
5058
+ ariaLiveMode?: 'assertive' | 'polite' | 'off';
5050
5059
  }
5051
5060
 
5052
5061
  /**
@@ -6196,6 +6205,15 @@ function isElementOfType<Tag extends keyof HTMLElementTagNameMap>(element: HTMLE
6196
6205
  */
6197
6206
  function getObjectKeys<T extends string | number | symbol>(obj: Record<T, any> | Partial<Record<T, any>>): T[];
6198
6207
 
6208
+ /**
6209
+ * Returns a safe Id to use in Native APIs.
6210
+ * IDs that start with number or hyphen can throw errors if used.
6211
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id
6212
+ * @param id
6213
+ * @returns
6214
+ */
6215
+ function getSafeIdSelector(id: string): string;
6216
+
6199
6217
  /**
6200
6218
  * Convert a named node map to an array
6201
6219
  * @param collection The map to convert
@@ -8329,6 +8347,11 @@ class PastePlugin implements EditorPlugin {
8329
8347
  private setEventSanitizers;
8330
8348
  }
8331
8349
 
8350
+ /**
8351
+ * Default style sanitizers for PastePlugin.
8352
+ */
8353
+ const DefaultSanitizers: Record<string, ValueSanitizer>;
8354
+
8332
8355
  /**
8333
8356
  * Edit plugins helps editor to do editing operation on top of content model.
8334
8357
  * This includes:
package/dist/rooster.js CHANGED
@@ -3462,6 +3462,15 @@ function setListType(model, listType, removeMargins) {
3462
3462
  }
3463
3463
  (0, roosterjs_content_model_dom_1.mutateBlock)(parent).blocks.splice(index, 1, newListItem);
3464
3464
  existingListItems.push(newListItem);
3465
+ var levelIndex = newListItem.levels.length - 1;
3466
+ var level = (0, roosterjs_content_model_dom_1.mutateBlock)(newListItem).levels[levelIndex];
3467
+ if (level) {
3468
+ (0, roosterjs_content_model_dom_1.updateListMetadata)(level, function (metadata) {
3469
+ return Object.assign({}, metadata, {
3470
+ applyListStyleFromLevel: true,
3471
+ });
3472
+ });
3473
+ }
3465
3474
  }
3466
3475
  else {
3467
3476
  existingListItems.forEach(function (x) { return ((0, roosterjs_content_model_dom_1.mutateBlock)(x).levels[0].format.marginBottom = '0px'); });
@@ -8303,12 +8312,14 @@ exports.getPath = getPath;
8303
8312
  /*!********************************************************************************!*\
8304
8313
  !*** ./packages/roosterjs-content-model-core/lib/coreApi/announce/announce.ts ***!
8305
8314
  \********************************************************************************/
8306
- /***/ ((__unused_webpack_module, exports) => {
8315
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
8307
8316
 
8308
8317
  "use strict";
8309
8318
 
8310
8319
  Object.defineProperty(exports, "__esModule", ({ value: true }));
8311
8320
  exports.announce = void 0;
8321
+ var createAriaLiveElement_1 = __webpack_require__(/*! ../../utils/createAriaLiveElement */ "./packages/roosterjs-content-model-core/lib/utils/createAriaLiveElement.ts");
8322
+ var DOT_STRING = '.';
8312
8323
  /**
8313
8324
  * @internal
8314
8325
  * Announce the given data
@@ -8316,17 +8327,20 @@ exports.announce = void 0;
8316
8327
  * @param announceData Data to announce
8317
8328
  */
8318
8329
  var announce = function (core, announceData) {
8319
- var _a;
8320
- var text = announceData.text, defaultStrings = announceData.defaultStrings, _b = announceData.formatStrings, formatStrings = _b === void 0 ? [] : _b;
8330
+ var text = announceData.text, defaultStrings = announceData.defaultStrings, _a = announceData.formatStrings, formatStrings = _a === void 0 ? [] : _a, _b = announceData.ariaLiveMode, ariaLiveMode = _b === void 0 ? 'assertive' : _b;
8321
8331
  var announcerStringGetter = core.lifecycle.announcerStringGetter;
8322
8332
  var template = defaultStrings && (announcerStringGetter === null || announcerStringGetter === void 0 ? void 0 : announcerStringGetter(defaultStrings));
8323
8333
  var textToAnnounce = formatString(template || text, formatStrings);
8324
- if (textToAnnounce) {
8334
+ if (!core.lifecycle.announceContainer) {
8335
+ core.lifecycle.announceContainer = (0, createAriaLiveElement_1.createAriaLiveElement)(core.physicalRoot.ownerDocument);
8336
+ }
8337
+ if (textToAnnounce && core.lifecycle.announceContainer) {
8325
8338
  var announceContainer = core.lifecycle.announceContainer;
8326
- if (!announceContainer || textToAnnounce == announceContainer.textContent) {
8327
- (_a = announceContainer === null || announceContainer === void 0 ? void 0 : announceContainer.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(announceContainer);
8328
- announceContainer = createAriaLiveElement(core.physicalRoot.ownerDocument);
8329
- core.lifecycle.announceContainer = announceContainer;
8339
+ if (announceContainer.ariaLive != ariaLiveMode) {
8340
+ announceContainer.ariaLive = ariaLiveMode;
8341
+ }
8342
+ if (textToAnnounce == announceContainer.textContent) {
8343
+ textToAnnounce += DOT_STRING;
8330
8344
  }
8331
8345
  if (announceContainer) {
8332
8346
  announceContainer.textContent = textToAnnounce;
@@ -8345,19 +8359,6 @@ function formatString(text, formatStrings) {
8345
8359
  });
8346
8360
  return text;
8347
8361
  }
8348
- function createAriaLiveElement(document) {
8349
- var div = document.createElement('div');
8350
- div.style.clip = 'rect(0px, 0px, 0px, 0px)';
8351
- div.style.clipPath = 'inset(100%)';
8352
- div.style.height = '1px';
8353
- div.style.overflow = 'hidden';
8354
- div.style.position = 'absolute';
8355
- div.style.whiteSpace = 'nowrap';
8356
- div.style.width = '1px';
8357
- div.ariaLive = 'assertive';
8358
- document.body.appendChild(div);
8359
- return div;
8360
- }
8361
8362
 
8362
8363
 
8363
8364
  /***/ }),
@@ -9092,6 +9093,7 @@ exports.restoreSnapshotLogicalRoot = restoreSnapshotLogicalRoot;
9092
9093
  Object.defineProperty(exports, "__esModule", ({ value: true }));
9093
9094
  exports.restoreSnapshotSelection = void 0;
9094
9095
  var getPositionFromPath_1 = __webpack_require__(/*! ./getPositionFromPath */ "./packages/roosterjs-content-model-core/lib/coreApi/restoreUndoSnapshot/getPositionFromPath.ts");
9096
+ var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
9095
9097
  /**
9096
9098
  * @internal
9097
9099
  */
@@ -9116,7 +9118,7 @@ function restoreSnapshotSelection(core, snapshot) {
9116
9118
  };
9117
9119
  break;
9118
9120
  case 'table':
9119
- var table = physicalRoot.querySelector('#' + snapshotSelection.tableId);
9121
+ var table = physicalRoot.querySelector((0, roosterjs_content_model_dom_1.getSafeIdSelector)(snapshotSelection.tableId));
9120
9122
  if (table) {
9121
9123
  domSelection = {
9122
9124
  type: 'table',
@@ -9129,7 +9131,7 @@ function restoreSnapshotSelection(core, snapshot) {
9129
9131
  }
9130
9132
  break;
9131
9133
  case 'image':
9132
- var image = physicalRoot.querySelector('#' + snapshotSelection.imageId);
9134
+ var image = physicalRoot.querySelector((0, roosterjs_content_model_dom_1.getSafeIdSelector)(snapshotSelection.imageId));
9133
9135
  if (image) {
9134
9136
  domSelection = {
9135
9137
  type: 'image',
@@ -9420,7 +9422,7 @@ var setDOMSelection = function (core, selection, skipSelectionChangedEvent) {
9420
9422
  var imageSelectionColor = isDarkMode
9421
9423
  ? core.selection.imageSelectionBorderColorDark
9422
9424
  : core.selection.imageSelectionBorderColor;
9423
- core.api.setEditorStyle(core, DOM_SELECTION_CSS_KEY, "outline-style:solid!important; outline-color:" + (imageSelectionColor || DEFAULT_SELECTION_BORDER_COLOR) + "!important;", ["#" + (0, ensureUniqueId_1.ensureUniqueId)(image, IMAGE_ID)]);
9425
+ core.api.setEditorStyle(core, DOM_SELECTION_CSS_KEY, "outline-style:solid!important; outline-color:" + (imageSelectionColor || DEFAULT_SELECTION_BORDER_COLOR) + "!important;", [(0, roosterjs_content_model_dom_1.getSafeIdSelector)((0, ensureUniqueId_1.ensureUniqueId)(image, IMAGE_ID))]);
9424
9426
  core.api.setEditorStyle(core, HIDE_SELECTION_CSS_KEY, TRANSPARENT_SELECTION_CSS_RULE, [SELECTION_SELECTOR]);
9425
9427
  setRangeSelection(doc, image, false /* collapse */);
9426
9428
  break;
@@ -9453,12 +9455,13 @@ var setDOMSelection = function (core, selection, skipSelectionChangedEvent) {
9453
9455
  lastColumn: lastCell.col,
9454
9456
  };
9455
9457
  var tableId = (0, ensureUniqueId_1.ensureUniqueId)(table, TABLE_ID);
9458
+ var tableSelector = (0, roosterjs_content_model_dom_1.getSafeIdSelector)(tableId);
9456
9459
  var tableSelectors = firstCell.row == 0 &&
9457
9460
  firstCell.col == 0 &&
9458
9461
  lastCell.row == parsedTable.length - 1 &&
9459
9462
  lastCell.col == ((_b = (_a = parsedTable[lastCell.row]) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) - 1
9460
- ? ["#" + tableId, "#" + tableId + " *"]
9461
- : handleTableSelected(parsedTable, tableId, table, firstCell, lastCell);
9463
+ ? [tableSelector, tableSelector + " *"]
9464
+ : handleTableSelected(parsedTable, tableSelector, table, firstCell, lastCell);
9462
9465
  core.selection.selection = selection;
9463
9466
  var tableSelectionColor = isDarkMode
9464
9467
  ? core.selection.tableCellSelectionBackgroundColorDark
@@ -9491,7 +9494,7 @@ var setDOMSelection = function (core, selection, skipSelectionChangedEvent) {
9491
9494
  }
9492
9495
  };
9493
9496
  exports.setDOMSelection = setDOMSelection;
9494
- function handleTableSelected(parsedTable, tableId, table, firstCell, lastCell) {
9497
+ function handleTableSelected(parsedTable, tableSelector, table, firstCell, lastCell) {
9495
9498
  var selectors = [];
9496
9499
  // Get whether table has thead, tbody or tfoot, then Set the start and end of each of the table children,
9497
9500
  // so we can build the selector according the element between the table and the row.
@@ -9525,7 +9528,7 @@ function handleTableSelected(parsedTable, tableId, table, firstCell, lastCell) {
9525
9528
  rowIndex <= lastCell.row &&
9526
9529
  cellIndex >= firstCell.col &&
9527
9530
  cellIndex <= lastCell.col) {
9528
- var selector = "#" + tableId + middleElSelector + " tr:nth-child(" + currentRow + ")>" + cell.tagName + ":nth-child(" + tdCount + ")";
9531
+ var selector = "" + tableSelector + middleElSelector + " tr:nth-child(" + currentRow + ")>" + cell.tagName + ":nth-child(" + tdCount + ")";
9529
9532
  selectors.push(selector, selector + ' *');
9530
9533
  }
9531
9534
  }
@@ -9562,12 +9565,13 @@ function setRangeSelection(doc, element, collapse) {
9562
9565
  /*!********************************************************************************************!*\
9563
9566
  !*** ./packages/roosterjs-content-model-core/lib/coreApi/setEditorStyle/ensureUniqueId.ts ***!
9564
9567
  \********************************************************************************************/
9565
- /***/ ((__unused_webpack_module, exports) => {
9568
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
9566
9569
 
9567
9570
  "use strict";
9568
9571
 
9569
9572
  Object.defineProperty(exports, "__esModule", ({ value: true }));
9570
9573
  exports.ensureUniqueId = void 0;
9574
+ var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
9571
9575
  /**
9572
9576
  * @internal
9573
9577
  */
@@ -9575,7 +9579,7 @@ function ensureUniqueId(element, idPrefix) {
9575
9579
  idPrefix = element.id || idPrefix;
9576
9580
  var doc = element.ownerDocument;
9577
9581
  var i = 0;
9578
- while (!element.id || doc.querySelectorAll('#' + element.id).length > 1) {
9582
+ while (!element.id || doc.querySelectorAll((0, roosterjs_content_model_dom_1.getSafeIdSelector)(element.id)).length > 1) {
9579
9583
  element.id = idPrefix + '_' + i++;
9580
9584
  }
9581
9585
  return element.id;
@@ -9596,6 +9600,7 @@ exports.ensureUniqueId = ensureUniqueId;
9596
9600
  Object.defineProperty(exports, "__esModule", ({ value: true }));
9597
9601
  exports.setEditorStyle = void 0;
9598
9602
  var ensureUniqueId_1 = __webpack_require__(/*! ./ensureUniqueId */ "./packages/roosterjs-content-model-core/lib/coreApi/setEditorStyle/ensureUniqueId.ts");
9603
+ var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
9599
9604
  var MAX_RULE_SELECTOR_LENGTH = 9000;
9600
9605
  var CONTENT_DIV_ID = 'contentDiv';
9601
9606
  /**
@@ -9617,7 +9622,7 @@ var setEditorStyle = function (core, key, cssRule, subSelectors, maxRuleLength)
9617
9622
  sheet.deleteRule(i);
9618
9623
  }
9619
9624
  if (cssRule) {
9620
- var rootSelector = '#' + (0, ensureUniqueId_1.ensureUniqueId)(core.physicalRoot, CONTENT_DIV_ID);
9625
+ var rootSelector = (0, roosterjs_content_model_dom_1.getSafeIdSelector)((0, ensureUniqueId_1.ensureUniqueId)(core.physicalRoot, CONTENT_DIV_ID));
9621
9626
  var selectors = !subSelectors
9622
9627
  ? [rootSelector]
9623
9628
  : typeof subSelectors === 'string'
@@ -12278,6 +12283,7 @@ exports.applyPendingFormat = applyPendingFormat;
12278
12283
  Object.defineProperty(exports, "__esModule", ({ value: true }));
12279
12284
  exports.createLifecyclePlugin = void 0;
12280
12285
  var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
12286
+ var createAriaLiveElement_1 = __webpack_require__(/*! ../../utils/createAriaLiveElement */ "./packages/roosterjs-content-model-core/lib/utils/createAriaLiveElement.ts");
12281
12287
  var ContentEditableAttributeName = 'contenteditable';
12282
12288
  var DefaultTextColor = '#000000';
12283
12289
  var DefaultBackColor = '#ffffff';
@@ -12337,6 +12343,8 @@ var LifecyclePlugin = /** @class */ (function () {
12337
12343
  this.adjustColor();
12338
12344
  // Let other plugins know that we are ready
12339
12345
  this.editor.triggerEvent('editorReady', {}, true /*broadcast*/);
12346
+ // Initialize the Announce container.
12347
+ this.state.announceContainer = (0, createAriaLiveElement_1.createAriaLiveElement)(editor.getDocument());
12340
12348
  };
12341
12349
  /**
12342
12350
  * Dispose this plugin
@@ -12420,6 +12428,7 @@ var isSingleImageInSelection_1 = __webpack_require__(/*! ./isSingleImageInSelect
12420
12428
  var normalizePos_1 = __webpack_require__(/*! ./normalizePos */ "./packages/roosterjs-content-model-core/lib/corePlugin/selection/normalizePos.ts");
12421
12429
  var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
12422
12430
  var MouseLeftButton = 0;
12431
+ var MouseMiddleButton = 1;
12423
12432
  var MouseRightButton = 2;
12424
12433
  var Up = 'ArrowUp';
12425
12434
  var Down = 'ArrowDown';
@@ -12626,7 +12635,7 @@ var SelectionPlugin = /** @class */ (function () {
12626
12635
  this.onMouseDown(this.editor, event.rawEvent);
12627
12636
  break;
12628
12637
  case 'mouseUp':
12629
- this.onMouseUp();
12638
+ this.onMouseUp(this.editor, event);
12630
12639
  break;
12631
12640
  case 'keyDown':
12632
12641
  this.onKeyDown(this.editor, event.rawEvent);
@@ -12642,25 +12651,40 @@ var SelectionPlugin = /** @class */ (function () {
12642
12651
  }
12643
12652
  };
12644
12653
  SelectionPlugin.prototype.onMouseDown = function (editor, rawEvent) {
12645
- var _a;
12654
+ var _a, _b;
12646
12655
  var selection = editor.getDOMSelection();
12647
12656
  var image;
12648
12657
  // Image selection
12649
- if ((selection === null || selection === void 0 ? void 0 : selection.type) == 'image' &&
12650
- (rawEvent.button == MouseLeftButton ||
12651
- (rawEvent.button == MouseRightButton &&
12652
- !this.getClickingImage(rawEvent) &&
12653
- !this.getContainedTargetImage(rawEvent, selection)))) {
12654
- this.setDOMSelection(null /*domSelection*/, null /*tableSelection*/);
12658
+ if (editor.isExperimentalFeatureEnabled('LegacyImageSelection')) {
12659
+ if (rawEvent.button === MouseRightButton &&
12660
+ (image =
12661
+ (_a = this.getClickingImage(rawEvent)) !== null && _a !== void 0 ? _a : this.getContainedTargetImage(rawEvent, selection)) &&
12662
+ image.isContentEditable) {
12663
+ this.selectImageWithRange(image, rawEvent);
12664
+ return;
12665
+ }
12666
+ else if ((selection === null || selection === void 0 ? void 0 : selection.type) == 'image' && selection.image !== rawEvent.target) {
12667
+ this.selectBeforeOrAfterElement(editor, selection.image);
12668
+ return;
12669
+ }
12655
12670
  }
12656
- if ((image =
12657
- (_a = this.getClickingImage(rawEvent)) !== null && _a !== void 0 ? _a : this.getContainedTargetImage(rawEvent, selection)) &&
12658
- image.isContentEditable) {
12659
- this.setDOMSelection({
12660
- type: 'image',
12661
- image: image,
12662
- }, null);
12663
- return;
12671
+ else {
12672
+ if ((selection === null || selection === void 0 ? void 0 : selection.type) == 'image' &&
12673
+ (rawEvent.button == MouseLeftButton ||
12674
+ (rawEvent.button == MouseRightButton &&
12675
+ !this.getClickingImage(rawEvent) &&
12676
+ !this.getContainedTargetImage(rawEvent, selection)))) {
12677
+ this.setDOMSelection(null /*domSelection*/, null /*tableSelection*/);
12678
+ }
12679
+ if ((image =
12680
+ (_b = this.getClickingImage(rawEvent)) !== null && _b !== void 0 ? _b : this.getContainedTargetImage(rawEvent, selection)) &&
12681
+ image.isContentEditable) {
12682
+ this.setDOMSelection({
12683
+ type: 'image',
12684
+ image: image,
12685
+ }, null);
12686
+ return;
12687
+ }
12664
12688
  }
12665
12689
  // Table selection
12666
12690
  if ((selection === null || selection === void 0 ? void 0 : selection.type) == 'table' && rawEvent.button == MouseLeftButton) {
@@ -12688,7 +12712,33 @@ var SelectionPlugin = /** @class */ (function () {
12688
12712
  });
12689
12713
  }
12690
12714
  };
12691
- SelectionPlugin.prototype.onMouseUp = function () {
12715
+ SelectionPlugin.prototype.selectImageWithRange = function (image, event) {
12716
+ var _a;
12717
+ var range = image.ownerDocument.createRange();
12718
+ range.selectNode(image);
12719
+ var domSelection = (_a = this.editor) === null || _a === void 0 ? void 0 : _a.getDOMSelection();
12720
+ if ((domSelection === null || domSelection === void 0 ? void 0 : domSelection.type) == 'image' && image == domSelection.image) {
12721
+ event.preventDefault();
12722
+ }
12723
+ else {
12724
+ this.setDOMSelection({
12725
+ type: 'range',
12726
+ isReverted: false,
12727
+ range: range,
12728
+ }, null);
12729
+ }
12730
+ };
12731
+ SelectionPlugin.prototype.onMouseUp = function (editor, event) {
12732
+ var image;
12733
+ if (editor.isExperimentalFeatureEnabled('LegacyImageSelection') &&
12734
+ (image = this.getClickingImage(event.rawEvent)) &&
12735
+ image.isContentEditable &&
12736
+ event.rawEvent.button != MouseMiddleButton &&
12737
+ (event.rawEvent.button ==
12738
+ MouseRightButton /* it's not possible to drag using right click */ ||
12739
+ event.isClicking)) {
12740
+ this.selectImageWithRange(image, event.rawEvent);
12741
+ }
12692
12742
  this.detachMouseEvent();
12693
12743
  };
12694
12744
  SelectionPlugin.prototype.onKeyDown = function (editor, rawEvent) {
@@ -14472,6 +14522,37 @@ function shouldUseTableProcessor(element, context) {
14472
14522
  }
14473
14523
 
14474
14524
 
14525
+ /***/ }),
14526
+
14527
+ /***/ "./packages/roosterjs-content-model-core/lib/utils/createAriaLiveElement.ts":
14528
+ /*!**********************************************************************************!*\
14529
+ !*** ./packages/roosterjs-content-model-core/lib/utils/createAriaLiveElement.ts ***!
14530
+ \**********************************************************************************/
14531
+ /***/ ((__unused_webpack_module, exports) => {
14532
+
14533
+ "use strict";
14534
+
14535
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
14536
+ exports.createAriaLiveElement = void 0;
14537
+ /**
14538
+ * @internal
14539
+ */
14540
+ function createAriaLiveElement(document) {
14541
+ var div = document.createElement('div');
14542
+ div.style.clip = 'rect(0px, 0px, 0px, 0px)';
14543
+ div.style.clipPath = 'inset(100%)';
14544
+ div.style.height = '1px';
14545
+ div.style.overflow = 'hidden';
14546
+ div.style.position = 'absolute';
14547
+ div.style.whiteSpace = 'nowrap';
14548
+ div.style.width = '1px';
14549
+ div.ariaLive = 'assertive';
14550
+ document.body.appendChild(div);
14551
+ return div;
14552
+ }
14553
+ exports.createAriaLiveElement = createAriaLiveElement;
14554
+
14555
+
14475
14556
  /***/ }),
14476
14557
 
14477
14558
  /***/ "./packages/roosterjs-content-model-dom/lib/config/defaultContentModelFormatMap.ts":
@@ -17311,6 +17392,40 @@ function getObjectKeys(obj) {
17311
17392
  exports.getObjectKeys = getObjectKeys;
17312
17393
 
17313
17394
 
17395
+ /***/ }),
17396
+
17397
+ /***/ "./packages/roosterjs-content-model-dom/lib/domUtils/getSafeIdSelector.ts":
17398
+ /*!********************************************************************************!*\
17399
+ !*** ./packages/roosterjs-content-model-dom/lib/domUtils/getSafeIdSelector.ts ***!
17400
+ \********************************************************************************/
17401
+ /***/ ((__unused_webpack_module, exports) => {
17402
+
17403
+ "use strict";
17404
+
17405
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
17406
+ exports.getSafeIdSelector = void 0;
17407
+ var StartsWithUnsupportedCharacter = /^[.|\-|_|\d]/;
17408
+ /**
17409
+ * Returns a safe Id to use in Native APIs.
17410
+ * IDs that start with number or hyphen can throw errors if used.
17411
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id
17412
+ * @param id
17413
+ * @returns
17414
+ */
17415
+ function getSafeIdSelector(id) {
17416
+ if (!id) {
17417
+ return id;
17418
+ }
17419
+ if (id.match(StartsWithUnsupportedCharacter)) {
17420
+ return "[id=\"" + id + "\"]";
17421
+ }
17422
+ else {
17423
+ return "#" + id;
17424
+ }
17425
+ }
17426
+ exports.getSafeIdSelector = getSafeIdSelector;
17427
+
17428
+
17314
17429
  /***/ }),
17315
17430
 
17316
17431
  /***/ "./packages/roosterjs-content-model-dom/lib/domUtils/isElementOfType.ts":
@@ -20026,9 +20141,9 @@ exports.shouldSetValue = shouldSetValue;
20026
20141
  "use strict";
20027
20142
 
20028
20143
  Object.defineProperty(exports, "__esModule", ({ value: true }));
20029
- exports.createEntity = exports.createGeneralBlock = exports.createGeneralSegment = exports.createParagraphDecorator = exports.createContentModelDocument = exports.createImage = exports.createText = exports.createTableCell = exports.createTable = exports.createSelectionMarker = exports.createParagraph = exports.createFormatContainer = exports.createListItem = exports.createBr = exports.normalizeRect = exports.isWhiteSpacePreserved = exports.reuseCachedElement = exports.findClosestBlockEntityContainer = exports.isBlockEntityContainer = exports.isEntityDelimiter = exports.addDelimiters = exports.generateEntityClassNames = exports.parseEntityFormat = exports.getAllEntityWrappers = exports.findClosestEntityWrapper = exports.isEntityElement = exports.unwrap = exports.wrap = exports.wrapAllChildNodes = exports.moveChildNodes = exports.toArray = exports.getObjectKeys = exports.isElementOfType = exports.isNodeOfType = exports.hasMetadata = exports.getMetadata = exports.updateMetadata = exports.buildSelectionMarker = exports.isBlockElement = exports.areSameFormats = exports.parseFormat = exports.getRegularSelectionOffsets = exports.tableProcessor = exports.entityProcessor = exports.processChildNode = exports.handleRegularSelection = exports.childProcessor = exports.contentModelToText = exports.contentModelToDom = exports.domToContentModel = void 0;
20030
- exports.cacheGetEventData = exports.extractClipboardItems = exports.transformColor = exports.readFile = exports.parseTableCells = exports.normalizeText = exports.isSpace = exports.isPunctuation = exports.extractBorderValues = exports.combineBorderValue = exports.isCursorMovingKey = exports.isModifierKey = exports.isCharacterValue = exports.getDOMInsertPointRect = exports.getSelectionRootNode = exports.isBold = exports.createModelToDomConfig = exports.createModelToDomContextWithConfig = exports.createModelToDomContext = exports.createDomToModelConfig = exports.createDomToModelContextWithConfig = exports.createDomToModelContext = exports.defaultGenerateColorKey = exports.parseColor = exports.setColor = exports.getColor = exports.DeprecatedColors = exports.BorderKeys = exports.parseValueWithUnit = exports.getAutoListStyleType = exports.getOrderedListNumberStr = exports.setParagraphNotImplicit = exports.normalizeSingleSegment = exports.isEmpty = exports.addSegment = exports.unwrapBlock = exports.isGeneralSegment = exports.normalizeContentModel = exports.normalizeParagraph = exports.addTextSegment = exports.addLink = exports.addCode = exports.addBlock = exports.mutateSegment = exports.mutateSegments = exports.mutateBlock = exports.createTableRow = exports.createEmptyModel = exports.createListLevel = exports.createDivider = void 0;
20031
- exports.EmptySegmentFormat = exports.UnorderedListStyleMap = exports.OrderedListStyleMap = exports.TableBorderFormat = exports.NumberingListType = exports.BulletListType = exports.ChangeSource = exports.ListMetadataDefinition = exports.getListMetadata = exports.updateListMetadata = exports.getTableMetadata = exports.updateTableMetadata = exports.getTableCellMetadata = exports.updateTableCellMetadata = exports.getImageMetadata = exports.updateImageMetadata = exports.runEditSteps = exports.getClosestAncestorBlockGroupIndex = exports.getSegmentTextFormat = exports.getListStyleTypeFromString = exports.retrieveModelFormatState = exports.setTableCellBackgroundColor = exports.MIN_ALLOWED_TABLE_CELL_HEIGHT = exports.MIN_ALLOWED_TABLE_CELL_WIDTH = exports.normalizeTable = exports.setFirstColumnFormatBorders = exports.applyTableFormat = exports.deleteBlock = exports.deleteSegment = exports.deleteSelection = exports.mergeModel = exports.cloneModel = exports.setSelection = exports.hasSelectionInBlockGroup = exports.hasSelectionInSegment = exports.hasSelectionInBlock = exports.getSelectedCells = exports.getSelectedSegmentsAndParagraphs = exports.getSelectedSegments = exports.getSelectedParagraphs = exports.getOperationalBlocks = exports.getFirstSelectedTable = exports.getFirstSelectedListItem = exports.iterateSelections = exports.isBlockGroupOfType = void 0;
20144
+ exports.createGeneralBlock = exports.createGeneralSegment = exports.createParagraphDecorator = exports.createContentModelDocument = exports.createImage = exports.createText = exports.createTableCell = exports.createTable = exports.createSelectionMarker = exports.createParagraph = exports.createFormatContainer = exports.createListItem = exports.createBr = exports.normalizeRect = exports.isWhiteSpacePreserved = exports.reuseCachedElement = exports.findClosestBlockEntityContainer = exports.isBlockEntityContainer = exports.isEntityDelimiter = exports.addDelimiters = exports.generateEntityClassNames = exports.parseEntityFormat = exports.getAllEntityWrappers = exports.findClosestEntityWrapper = exports.isEntityElement = exports.unwrap = exports.wrap = exports.wrapAllChildNodes = exports.moveChildNodes = exports.toArray = exports.getSafeIdSelector = exports.getObjectKeys = exports.isElementOfType = exports.isNodeOfType = exports.hasMetadata = exports.getMetadata = exports.updateMetadata = exports.buildSelectionMarker = exports.isBlockElement = exports.areSameFormats = exports.parseFormat = exports.getRegularSelectionOffsets = exports.tableProcessor = exports.entityProcessor = exports.processChildNode = exports.handleRegularSelection = exports.childProcessor = exports.contentModelToText = exports.contentModelToDom = exports.domToContentModel = void 0;
20145
+ exports.extractClipboardItems = exports.transformColor = exports.readFile = exports.parseTableCells = exports.normalizeText = exports.isSpace = exports.isPunctuation = exports.extractBorderValues = exports.combineBorderValue = exports.isCursorMovingKey = exports.isModifierKey = exports.isCharacterValue = exports.getDOMInsertPointRect = exports.getSelectionRootNode = exports.isBold = exports.createModelToDomConfig = exports.createModelToDomContextWithConfig = exports.createModelToDomContext = exports.createDomToModelConfig = exports.createDomToModelContextWithConfig = exports.createDomToModelContext = exports.defaultGenerateColorKey = exports.parseColor = exports.setColor = exports.getColor = exports.DeprecatedColors = exports.BorderKeys = exports.parseValueWithUnit = exports.getAutoListStyleType = exports.getOrderedListNumberStr = exports.setParagraphNotImplicit = exports.normalizeSingleSegment = exports.isEmpty = exports.addSegment = exports.unwrapBlock = exports.isGeneralSegment = exports.normalizeContentModel = exports.normalizeParagraph = exports.addTextSegment = exports.addLink = exports.addCode = exports.addBlock = exports.mutateSegment = exports.mutateSegments = exports.mutateBlock = exports.createTableRow = exports.createEmptyModel = exports.createListLevel = exports.createDivider = exports.createEntity = void 0;
20146
+ exports.EmptySegmentFormat = exports.UnorderedListStyleMap = exports.OrderedListStyleMap = exports.TableBorderFormat = exports.NumberingListType = exports.BulletListType = exports.ChangeSource = exports.ListMetadataDefinition = exports.getListMetadata = exports.updateListMetadata = exports.getTableMetadata = exports.updateTableMetadata = exports.getTableCellMetadata = exports.updateTableCellMetadata = exports.getImageMetadata = exports.updateImageMetadata = exports.runEditSteps = exports.getClosestAncestorBlockGroupIndex = exports.getSegmentTextFormat = exports.getListStyleTypeFromString = exports.retrieveModelFormatState = exports.setTableCellBackgroundColor = exports.MIN_ALLOWED_TABLE_CELL_HEIGHT = exports.MIN_ALLOWED_TABLE_CELL_WIDTH = exports.normalizeTable = exports.setFirstColumnFormatBorders = exports.applyTableFormat = exports.deleteBlock = exports.deleteSegment = exports.deleteSelection = exports.mergeModel = exports.cloneModel = exports.setSelection = exports.hasSelectionInBlockGroup = exports.hasSelectionInSegment = exports.hasSelectionInBlock = exports.getSelectedCells = exports.getSelectedSegmentsAndParagraphs = exports.getSelectedSegments = exports.getSelectedParagraphs = exports.getOperationalBlocks = exports.getFirstSelectedTable = exports.getFirstSelectedListItem = exports.iterateSelections = exports.isBlockGroupOfType = exports.cacheGetEventData = void 0;
20032
20147
  var domToContentModel_1 = __webpack_require__(/*! ./domToModel/domToContentModel */ "./packages/roosterjs-content-model-dom/lib/domToModel/domToContentModel.ts");
20033
20148
  Object.defineProperty(exports, "domToContentModel", ({ enumerable: true, get: function () { return domToContentModel_1.domToContentModel; } }));
20034
20149
  var contentModelToDom_1 = __webpack_require__(/*! ./modelToDom/contentModelToDom */ "./packages/roosterjs-content-model-dom/lib/modelToDom/contentModelToDom.ts");
@@ -20063,6 +20178,8 @@ var isElementOfType_1 = __webpack_require__(/*! ./domUtils/isElementOfType */ ".
20063
20178
  Object.defineProperty(exports, "isElementOfType", ({ enumerable: true, get: function () { return isElementOfType_1.isElementOfType; } }));
20064
20179
  var getObjectKeys_1 = __webpack_require__(/*! ./domUtils/getObjectKeys */ "./packages/roosterjs-content-model-dom/lib/domUtils/getObjectKeys.ts");
20065
20180
  Object.defineProperty(exports, "getObjectKeys", ({ enumerable: true, get: function () { return getObjectKeys_1.getObjectKeys; } }));
20181
+ var getSafeIdSelector_1 = __webpack_require__(/*! ./domUtils/getSafeIdSelector */ "./packages/roosterjs-content-model-dom/lib/domUtils/getSafeIdSelector.ts");
20182
+ Object.defineProperty(exports, "getSafeIdSelector", ({ enumerable: true, get: function () { return getSafeIdSelector_1.getSafeIdSelector; } }));
20066
20183
  var toArray_1 = __webpack_require__(/*! ./domUtils/toArray */ "./packages/roosterjs-content-model-dom/lib/domUtils/toArray.ts");
20067
20184
  Object.defineProperty(exports, "toArray", ({ enumerable: true, get: function () { return toArray_1.toArray; } }));
20068
20185
  var moveChildNodes_1 = __webpack_require__(/*! ./domUtils/moveChildNodes */ "./packages/roosterjs-content-model-dom/lib/domUtils/moveChildNodes.ts");
@@ -26814,7 +26931,9 @@ function canAppendList(index, previousListIndex) {
26814
26931
 
26815
26932
  Object.defineProperty(exports, "__esModule", ({ value: true }));
26816
26933
  exports.keyboardListTrigger = void 0;
26934
+ var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
26817
26935
  var getListTypeStyle_1 = __webpack_require__(/*! ./getListTypeStyle */ "./packages/roosterjs-content-model-plugins/lib/autoFormat/list/getListTypeStyle.ts");
26936
+ var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
26818
26937
  var roosterjs_content_model_api_1 = __webpack_require__(/*! roosterjs-content-model-api */ "./packages/roosterjs-content-model-api/lib/index.ts");
26819
26938
  /**
26820
26939
  * @internal
@@ -26828,6 +26947,7 @@ function keyboardListTrigger(model, paragraph, context, shouldSearchForBullet, s
26828
26947
  var listType = listStyleType.listType, styleType = listStyleType.styleType, index = listStyleType.index;
26829
26948
  triggerList(model, listType, styleType, index);
26830
26949
  context.canUndoByBackspace = true;
26950
+ setAnnounceData(model, context);
26831
26951
  return true;
26832
26952
  }
26833
26953
  return false;
@@ -26842,11 +26962,21 @@ var triggerList = function (model, listType, styleType, index) {
26842
26962
  (0, roosterjs_content_model_api_1.setModelListStyle)(model, isOrderedList
26843
26963
  ? {
26844
26964
  orderedStyleType: styleType,
26965
+ applyListStyleFromLevel: false,
26845
26966
  }
26846
26967
  : {
26847
26968
  unorderedStyleType: styleType,
26969
+ applyListStyleFromLevel: false,
26848
26970
  });
26849
26971
  };
26972
+ function setAnnounceData(model, context) {
26973
+ var _a = (0, tslib_1.__read)((0, roosterjs_content_model_dom_1.getOperationalBlocks)(model, ['ListItem'], [] // Set stop types to be empty so we can find list items even cross the boundary of table, then we can always operation on the list item if any
26974
+ ), 1), paragraphOrListItems = _a[0];
26975
+ if (paragraphOrListItems && (0, roosterjs_content_model_dom_1.isBlockGroupOfType)(paragraphOrListItems.block, 'ListItem')) {
26976
+ var path = paragraphOrListItems.path, block = paragraphOrListItems.block;
26977
+ context.announceData = (0, roosterjs_content_model_api_1.getListAnnounceData)((0, tslib_1.__spreadArray)([block], (0, tslib_1.__read)(path), false));
26978
+ }
26979
+ }
26850
26980
 
26851
26981
 
26852
26982
  /***/ }),
@@ -28938,6 +29068,7 @@ var getHTMLImageOptions_1 = __webpack_require__(/*! ./utils/getHTMLImageOptions
28938
29068
  var getSelectedImage_1 = __webpack_require__(/*! ./utils/getSelectedImage */ "./packages/roosterjs-content-model-plugins/lib/imageEdit/utils/getSelectedImage.ts");
28939
29069
  var updateImageEditInfo_1 = __webpack_require__(/*! ./utils/updateImageEditInfo */ "./packages/roosterjs-content-model-plugins/lib/imageEdit/utils/updateImageEditInfo.ts");
28940
29070
  var ImageEditElementClass_1 = __webpack_require__(/*! ./types/ImageEditElementClass */ "./packages/roosterjs-content-model-plugins/lib/imageEdit/types/ImageEditElementClass.ts");
29071
+ var normalizeImageSelection_1 = __webpack_require__(/*! ./utils/normalizeImageSelection */ "./packages/roosterjs-content-model-plugins/lib/imageEdit/utils/normalizeImageSelection.ts");
28941
29072
  var resizerContext_1 = __webpack_require__(/*! ./Resizer/resizerContext */ "./packages/roosterjs-content-model-plugins/lib/imageEdit/Resizer/resizerContext.ts");
28942
29073
  var rotatorContext_1 = __webpack_require__(/*! ./Rotator/rotatorContext */ "./packages/roosterjs-content-model-plugins/lib/imageEdit/Rotator/rotatorContext.ts");
28943
29074
  var updateRotateHandle_1 = __webpack_require__(/*! ./Rotator/updateRotateHandle */ "./packages/roosterjs-content-model-plugins/lib/imageEdit/Rotator/updateRotateHandle.ts");
@@ -29120,6 +29251,9 @@ var ImageEditPlugin = /** @class */ (function () {
29120
29251
  image.isSelected = shouldSelectImage;
29121
29252
  image.isSelectedAsImageSelection = shouldSelectImage;
29122
29253
  });
29254
+ if (shouldSelectImage) {
29255
+ (0, normalizeImageSelection_1.normalizeImageSelection)(previousSelectedImage);
29256
+ }
29123
29257
  _this.cleanInfo();
29124
29258
  result = true;
29125
29259
  }
@@ -29177,7 +29311,7 @@ var ImageEditPlugin = /** @class */ (function () {
29177
29311
  this.croppers = croppers;
29178
29312
  this.zoomScale = editor.getDOMHelper().calculateZoomScale();
29179
29313
  editor.setEditorStyle('imageEdit', "outline-style:none!important;", [
29180
- "span:has(>img#" + this.selectedImage.id + ")",
29314
+ "span:has(>img" + (0, roosterjs_content_model_dom_1.getSafeIdSelector)(this.selectedImage.id) + ")",
29181
29315
  ]);
29182
29316
  };
29183
29317
  ImageEditPlugin.prototype.startRotateAndResize = function (editor, image) {
@@ -30602,6 +30736,48 @@ function isFixedNumberValue(value) {
30602
30736
  }
30603
30737
 
30604
30738
 
30739
+ /***/ }),
30740
+
30741
+ /***/ "./packages/roosterjs-content-model-plugins/lib/imageEdit/utils/normalizeImageSelection.ts":
30742
+ /*!*************************************************************************************************!*\
30743
+ !*** ./packages/roosterjs-content-model-plugins/lib/imageEdit/utils/normalizeImageSelection.ts ***!
30744
+ \*************************************************************************************************/
30745
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
30746
+
30747
+ "use strict";
30748
+
30749
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
30750
+ exports.normalizeImageSelection = void 0;
30751
+ var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
30752
+ /**
30753
+ * Selecting directly on the image will only capture the image segment.
30754
+ * However, if the selection is made while the image is within a wrapper, it will capture the span that encloses the image.
30755
+ * In the last case, the selection will be marked as <---SelectionMarker---><---Image---><---SelectionMarker--->.
30756
+ * To fix this behavior the extra selection markers are removed.
30757
+ * @internal
30758
+ */
30759
+ function normalizeImageSelection(imageAndParagraph) {
30760
+ var paragraph = imageAndParagraph.paragraph;
30761
+ var index = paragraph.segments.indexOf(imageAndParagraph.image);
30762
+ if (index > 0) {
30763
+ var markerBefore = paragraph.segments[index - 1];
30764
+ var markerAfter = paragraph.segments[index + 1];
30765
+ if (markerBefore &&
30766
+ markerAfter &&
30767
+ markerAfter.segmentType == 'SelectionMarker' &&
30768
+ markerBefore.segmentType == 'SelectionMarker' &&
30769
+ markerAfter.isSelected &&
30770
+ markerBefore.isSelected) {
30771
+ var mutatedParagraph = (0, roosterjs_content_model_dom_1.mutateBlock)(paragraph);
30772
+ mutatedParagraph.segments.splice(index - 1, 1);
30773
+ mutatedParagraph.segments.splice(index, 1);
30774
+ }
30775
+ return imageAndParagraph;
30776
+ }
30777
+ }
30778
+ exports.normalizeImageSelection = normalizeImageSelection;
30779
+
30780
+
30605
30781
  /***/ }),
30606
30782
 
30607
30783
  /***/ "./packages/roosterjs-content-model-plugins/lib/imageEdit/utils/updateHandleCursor.ts":
@@ -30817,11 +30993,13 @@ exports.updateWrapper = updateWrapper;
30817
30993
  "use strict";
30818
30994
 
30819
30995
  Object.defineProperty(exports, "__esModule", ({ value: true }));
30820
- exports.ImageEditPlugin = exports.CustomReplacePlugin = exports.PickerPlugin = exports.HyperlinkPlugin = exports.MarkdownPlugin = exports.WatermarkPlugin = exports.ContextMenuPluginBase = exports.ShortcutPlugin = exports.ShortcutOutdentList = exports.ShortcutIndentList = exports.ShortcutDecreaseFont = exports.ShortcutIncreaseFont = exports.ShortcutNumbering = exports.ShortcutBullet = exports.ShortcutRedoMacOS = exports.ShortcutRedoAlt = exports.ShortcutRedo = exports.ShortcutUndo2 = exports.ShortcutUndo = exports.ShortcutClearFormat = exports.ShortcutUnderline = exports.ShortcutItalic = exports.ShortcutBold = exports.AutoFormatPlugin = exports.EditPlugin = exports.PastePlugin = exports.TableEditPlugin = void 0;
30996
+ exports.ImageEditPlugin = exports.CustomReplacePlugin = exports.PickerPlugin = exports.HyperlinkPlugin = exports.MarkdownPlugin = exports.WatermarkPlugin = exports.ContextMenuPluginBase = exports.ShortcutPlugin = exports.ShortcutOutdentList = exports.ShortcutIndentList = exports.ShortcutDecreaseFont = exports.ShortcutIncreaseFont = exports.ShortcutNumbering = exports.ShortcutBullet = exports.ShortcutRedoMacOS = exports.ShortcutRedoAlt = exports.ShortcutRedo = exports.ShortcutUndo2 = exports.ShortcutUndo = exports.ShortcutClearFormat = exports.ShortcutUnderline = exports.ShortcutItalic = exports.ShortcutBold = exports.AutoFormatPlugin = exports.EditPlugin = exports.DefaultSanitizers = exports.PastePlugin = exports.TableEditPlugin = void 0;
30821
30997
  var TableEditPlugin_1 = __webpack_require__(/*! ./tableEdit/TableEditPlugin */ "./packages/roosterjs-content-model-plugins/lib/tableEdit/TableEditPlugin.ts");
30822
30998
  Object.defineProperty(exports, "TableEditPlugin", ({ enumerable: true, get: function () { return TableEditPlugin_1.TableEditPlugin; } }));
30823
30999
  var PastePlugin_1 = __webpack_require__(/*! ./paste/PastePlugin */ "./packages/roosterjs-content-model-plugins/lib/paste/PastePlugin.ts");
30824
31000
  Object.defineProperty(exports, "PastePlugin", ({ enumerable: true, get: function () { return PastePlugin_1.PastePlugin; } }));
31001
+ var DefaultSanitizers_1 = __webpack_require__(/*! ./paste/DefaultSanitizers */ "./packages/roosterjs-content-model-plugins/lib/paste/DefaultSanitizers.ts");
31002
+ Object.defineProperty(exports, "DefaultSanitizers", ({ enumerable: true, get: function () { return DefaultSanitizers_1.DefaultSanitizers; } }));
30825
31003
  var EditPlugin_1 = __webpack_require__(/*! ./edit/EditPlugin */ "./packages/roosterjs-content-model-plugins/lib/edit/EditPlugin.ts");
30826
31004
  Object.defineProperty(exports, "EditPlugin", ({ enumerable: true, get: function () { return EditPlugin_1.EditPlugin; } }));
30827
31005
  var AutoFormatPlugin_1 = __webpack_require__(/*! ./autoFormat/AutoFormatPlugin */ "./packages/roosterjs-content-model-plugins/lib/autoFormat/AutoFormatPlugin.ts");
@@ -31126,7 +31304,7 @@ exports.setFormat = setFormat;
31126
31304
  Object.defineProperty(exports, "__esModule", ({ value: true }));
31127
31305
  exports.divParagraphSanitizer = exports.DefaultSanitizers = void 0;
31128
31306
  /**
31129
- * @internal
31307
+ * Default style sanitizers for PastePlugin.
31130
31308
  */
31131
31309
  exports.DefaultSanitizers = {
31132
31310
  width: divParagraphSanitizer,