roosterjs 9.7.0 → 9.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- // Type definitions for roosterjs (Version 9.7.0)
1
+ // Type definitions for roosterjs (Version 9.8.0)
2
2
  // Generated by dts tool from roosterjs
3
3
  // Project: https://github.com/Microsoft/roosterjs
4
4
 
@@ -8328,6 +8328,11 @@ export class PastePlugin implements EditorPlugin {
8328
8328
  private setEventSanitizers;
8329
8329
  }
8330
8330
 
8331
+ /**
8332
+ * Default style sanitizers for PastePlugin.
8333
+ */
8334
+ export const DefaultSanitizers: Record<string, ValueSanitizer>;
8335
+
8331
8336
  /**
8332
8337
  * Edit plugins helps editor to do editing operation on top of content model.
8333
8338
  * This includes:
@@ -3461,6 +3461,15 @@ function setListType(model, listType, removeMargins) {
3461
3461
  }
3462
3462
  (0, roosterjs_content_model_dom_1.mutateBlock)(parent).blocks.splice(index, 1, newListItem);
3463
3463
  existingListItems.push(newListItem);
3464
+ var levelIndex = newListItem.levels.length - 1;
3465
+ var level = (0, roosterjs_content_model_dom_1.mutateBlock)(newListItem).levels[levelIndex];
3466
+ if (level) {
3467
+ (0, roosterjs_content_model_dom_1.updateListMetadata)(level, function (metadata) {
3468
+ return Object.assign({}, metadata, {
3469
+ applyListStyleFromLevel: true,
3470
+ });
3471
+ });
3472
+ }
3464
3473
  }
3465
3474
  else {
3466
3475
  existingListItems.forEach(function (x) { return ((0, roosterjs_content_model_dom_1.mutateBlock)(x).levels[0].format.marginBottom = '0px'); });
@@ -8302,12 +8311,14 @@ exports.getPath = getPath;
8302
8311
  /*!********************************************************************************!*\
8303
8312
  !*** ./packages/roosterjs-content-model-core/lib/coreApi/announce/announce.ts ***!
8304
8313
  \********************************************************************************/
8305
- /***/ ((__unused_webpack_module, exports) => {
8314
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
8306
8315
 
8307
8316
  "use strict";
8308
8317
 
8309
8318
  Object.defineProperty(exports, "__esModule", ({ value: true }));
8310
8319
  exports.announce = void 0;
8320
+ var createAriaLiveElement_1 = __webpack_require__(/*! ../../utils/createAriaLiveElement */ "./packages/roosterjs-content-model-core/lib/utils/createAriaLiveElement.ts");
8321
+ var DOT_STRING = '.';
8311
8322
  /**
8312
8323
  * @internal
8313
8324
  * Announce the given data
@@ -8315,17 +8326,17 @@ exports.announce = void 0;
8315
8326
  * @param announceData Data to announce
8316
8327
  */
8317
8328
  var announce = function (core, announceData) {
8318
- var _a;
8319
- var text = announceData.text, defaultStrings = announceData.defaultStrings, _b = announceData.formatStrings, formatStrings = _b === void 0 ? [] : _b;
8329
+ var text = announceData.text, defaultStrings = announceData.defaultStrings, _a = announceData.formatStrings, formatStrings = _a === void 0 ? [] : _a;
8320
8330
  var announcerStringGetter = core.lifecycle.announcerStringGetter;
8321
8331
  var template = defaultStrings && (announcerStringGetter === null || announcerStringGetter === void 0 ? void 0 : announcerStringGetter(defaultStrings));
8322
8332
  var textToAnnounce = formatString(template || text, formatStrings);
8323
- if (textToAnnounce) {
8333
+ if (!core.lifecycle.announceContainer) {
8334
+ core.lifecycle.announceContainer = (0, createAriaLiveElement_1.createAriaLiveElement)(core.physicalRoot.ownerDocument);
8335
+ }
8336
+ if (textToAnnounce && core.lifecycle.announceContainer) {
8324
8337
  var announceContainer = core.lifecycle.announceContainer;
8325
- if (!announceContainer || textToAnnounce == announceContainer.textContent) {
8326
- (_a = announceContainer === null || announceContainer === void 0 ? void 0 : announceContainer.parentElement) === null || _a === void 0 ? void 0 : _a.removeChild(announceContainer);
8327
- announceContainer = createAriaLiveElement(core.physicalRoot.ownerDocument);
8328
- core.lifecycle.announceContainer = announceContainer;
8338
+ if (textToAnnounce == announceContainer.textContent) {
8339
+ textToAnnounce += DOT_STRING;
8329
8340
  }
8330
8341
  if (announceContainer) {
8331
8342
  announceContainer.textContent = textToAnnounce;
@@ -8344,19 +8355,6 @@ function formatString(text, formatStrings) {
8344
8355
  });
8345
8356
  return text;
8346
8357
  }
8347
- function createAriaLiveElement(document) {
8348
- var div = document.createElement('div');
8349
- div.style.clip = 'rect(0px, 0px, 0px, 0px)';
8350
- div.style.clipPath = 'inset(100%)';
8351
- div.style.height = '1px';
8352
- div.style.overflow = 'hidden';
8353
- div.style.position = 'absolute';
8354
- div.style.whiteSpace = 'nowrap';
8355
- div.style.width = '1px';
8356
- div.ariaLive = 'assertive';
8357
- document.body.appendChild(div);
8358
- return div;
8359
- }
8360
8358
 
8361
8359
 
8362
8360
  /***/ }),
@@ -9574,7 +9572,7 @@ function ensureUniqueId(element, idPrefix) {
9574
9572
  idPrefix = element.id || idPrefix;
9575
9573
  var doc = element.ownerDocument;
9576
9574
  var i = 0;
9577
- while (!element.id || doc.querySelectorAll('#' + element.id).length > 1) {
9575
+ while (!element.id || doc.querySelectorAll("[id=\"" + element.id + "\"]").length > 1) {
9578
9576
  element.id = idPrefix + '_' + i++;
9579
9577
  }
9580
9578
  return element.id;
@@ -12277,6 +12275,7 @@ exports.applyPendingFormat = applyPendingFormat;
12277
12275
  Object.defineProperty(exports, "__esModule", ({ value: true }));
12278
12276
  exports.createLifecyclePlugin = void 0;
12279
12277
  var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
12278
+ var createAriaLiveElement_1 = __webpack_require__(/*! ../../utils/createAriaLiveElement */ "./packages/roosterjs-content-model-core/lib/utils/createAriaLiveElement.ts");
12280
12279
  var ContentEditableAttributeName = 'contenteditable';
12281
12280
  var DefaultTextColor = '#000000';
12282
12281
  var DefaultBackColor = '#ffffff';
@@ -12336,6 +12335,8 @@ var LifecyclePlugin = /** @class */ (function () {
12336
12335
  this.adjustColor();
12337
12336
  // Let other plugins know that we are ready
12338
12337
  this.editor.triggerEvent('editorReady', {}, true /*broadcast*/);
12338
+ // Initialize the Announce container.
12339
+ this.state.announceContainer = (0, createAriaLiveElement_1.createAriaLiveElement)(editor.getDocument());
12339
12340
  };
12340
12341
  /**
12341
12342
  * Dispose this plugin
@@ -14471,6 +14472,37 @@ function shouldUseTableProcessor(element, context) {
14471
14472
  }
14472
14473
 
14473
14474
 
14475
+ /***/ }),
14476
+
14477
+ /***/ "./packages/roosterjs-content-model-core/lib/utils/createAriaLiveElement.ts":
14478
+ /*!**********************************************************************************!*\
14479
+ !*** ./packages/roosterjs-content-model-core/lib/utils/createAriaLiveElement.ts ***!
14480
+ \**********************************************************************************/
14481
+ /***/ ((__unused_webpack_module, exports) => {
14482
+
14483
+ "use strict";
14484
+
14485
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
14486
+ exports.createAriaLiveElement = void 0;
14487
+ /**
14488
+ * @internal
14489
+ */
14490
+ function createAriaLiveElement(document) {
14491
+ var div = document.createElement('div');
14492
+ div.style.clip = 'rect(0px, 0px, 0px, 0px)';
14493
+ div.style.clipPath = 'inset(100%)';
14494
+ div.style.height = '1px';
14495
+ div.style.overflow = 'hidden';
14496
+ div.style.position = 'absolute';
14497
+ div.style.whiteSpace = 'nowrap';
14498
+ div.style.width = '1px';
14499
+ div.ariaLive = 'assertive';
14500
+ document.body.appendChild(div);
14501
+ return div;
14502
+ }
14503
+ exports.createAriaLiveElement = createAriaLiveElement;
14504
+
14505
+
14474
14506
  /***/ }),
14475
14507
 
14476
14508
  /***/ "./packages/roosterjs-content-model-dom/lib/config/defaultContentModelFormatMap.ts":
@@ -26813,7 +26845,9 @@ function canAppendList(index, previousListIndex) {
26813
26845
 
26814
26846
  Object.defineProperty(exports, "__esModule", ({ value: true }));
26815
26847
  exports.keyboardListTrigger = void 0;
26848
+ var tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.mjs");
26816
26849
  var getListTypeStyle_1 = __webpack_require__(/*! ./getListTypeStyle */ "./packages/roosterjs-content-model-plugins/lib/autoFormat/list/getListTypeStyle.ts");
26850
+ var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
26817
26851
  var roosterjs_content_model_api_1 = __webpack_require__(/*! roosterjs-content-model-api */ "./packages/roosterjs-content-model-api/lib/index.ts");
26818
26852
  /**
26819
26853
  * @internal
@@ -26827,6 +26861,7 @@ function keyboardListTrigger(model, paragraph, context, shouldSearchForBullet, s
26827
26861
  var listType = listStyleType.listType, styleType = listStyleType.styleType, index = listStyleType.index;
26828
26862
  triggerList(model, listType, styleType, index);
26829
26863
  context.canUndoByBackspace = true;
26864
+ setAnnounceData(model, context);
26830
26865
  return true;
26831
26866
  }
26832
26867
  return false;
@@ -26841,11 +26876,21 @@ var triggerList = function (model, listType, styleType, index) {
26841
26876
  (0, roosterjs_content_model_api_1.setModelListStyle)(model, isOrderedList
26842
26877
  ? {
26843
26878
  orderedStyleType: styleType,
26879
+ applyListStyleFromLevel: false,
26844
26880
  }
26845
26881
  : {
26846
26882
  unorderedStyleType: styleType,
26883
+ applyListStyleFromLevel: false,
26847
26884
  });
26848
26885
  };
26886
+ function setAnnounceData(model, context) {
26887
+ 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
26888
+ ), 1), paragraphOrListItems = _a[0];
26889
+ if (paragraphOrListItems && (0, roosterjs_content_model_dom_1.isBlockGroupOfType)(paragraphOrListItems.block, 'ListItem')) {
26890
+ var path = paragraphOrListItems.path, block = paragraphOrListItems.block;
26891
+ context.announceData = (0, roosterjs_content_model_api_1.getListAnnounceData)((0, tslib_1.__spreadArray)([block], (0, tslib_1.__read)(path), false));
26892
+ }
26893
+ }
26849
26894
 
26850
26895
 
26851
26896
  /***/ }),
@@ -28937,6 +28982,7 @@ var getHTMLImageOptions_1 = __webpack_require__(/*! ./utils/getHTMLImageOptions
28937
28982
  var getSelectedImage_1 = __webpack_require__(/*! ./utils/getSelectedImage */ "./packages/roosterjs-content-model-plugins/lib/imageEdit/utils/getSelectedImage.ts");
28938
28983
  var updateImageEditInfo_1 = __webpack_require__(/*! ./utils/updateImageEditInfo */ "./packages/roosterjs-content-model-plugins/lib/imageEdit/utils/updateImageEditInfo.ts");
28939
28984
  var ImageEditElementClass_1 = __webpack_require__(/*! ./types/ImageEditElementClass */ "./packages/roosterjs-content-model-plugins/lib/imageEdit/types/ImageEditElementClass.ts");
28985
+ var normalizeImageSelection_1 = __webpack_require__(/*! ./utils/normalizeImageSelection */ "./packages/roosterjs-content-model-plugins/lib/imageEdit/utils/normalizeImageSelection.ts");
28940
28986
  var resizerContext_1 = __webpack_require__(/*! ./Resizer/resizerContext */ "./packages/roosterjs-content-model-plugins/lib/imageEdit/Resizer/resizerContext.ts");
28941
28987
  var rotatorContext_1 = __webpack_require__(/*! ./Rotator/rotatorContext */ "./packages/roosterjs-content-model-plugins/lib/imageEdit/Rotator/rotatorContext.ts");
28942
28988
  var updateRotateHandle_1 = __webpack_require__(/*! ./Rotator/updateRotateHandle */ "./packages/roosterjs-content-model-plugins/lib/imageEdit/Rotator/updateRotateHandle.ts");
@@ -29119,6 +29165,9 @@ var ImageEditPlugin = /** @class */ (function () {
29119
29165
  image.isSelected = shouldSelectImage;
29120
29166
  image.isSelectedAsImageSelection = shouldSelectImage;
29121
29167
  });
29168
+ if (shouldSelectImage) {
29169
+ (0, normalizeImageSelection_1.normalizeImageSelection)(previousSelectedImage);
29170
+ }
29122
29171
  _this.cleanInfo();
29123
29172
  result = true;
29124
29173
  }
@@ -30601,6 +30650,48 @@ function isFixedNumberValue(value) {
30601
30650
  }
30602
30651
 
30603
30652
 
30653
+ /***/ }),
30654
+
30655
+ /***/ "./packages/roosterjs-content-model-plugins/lib/imageEdit/utils/normalizeImageSelection.ts":
30656
+ /*!*************************************************************************************************!*\
30657
+ !*** ./packages/roosterjs-content-model-plugins/lib/imageEdit/utils/normalizeImageSelection.ts ***!
30658
+ \*************************************************************************************************/
30659
+ /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
30660
+
30661
+ "use strict";
30662
+
30663
+ Object.defineProperty(exports, "__esModule", ({ value: true }));
30664
+ exports.normalizeImageSelection = void 0;
30665
+ var roosterjs_content_model_dom_1 = __webpack_require__(/*! roosterjs-content-model-dom */ "./packages/roosterjs-content-model-dom/lib/index.ts");
30666
+ /**
30667
+ * Selecting directly on the image will only capture the image segment.
30668
+ * However, if the selection is made while the image is within a wrapper, it will capture the span that encloses the image.
30669
+ * In the last case, the selection will be marked as <---SelectionMarker---><---Image---><---SelectionMarker--->.
30670
+ * To fix this behavior the extra selection markers are removed.
30671
+ * @internal
30672
+ */
30673
+ function normalizeImageSelection(imageAndParagraph) {
30674
+ var paragraph = imageAndParagraph.paragraph;
30675
+ var index = paragraph.segments.indexOf(imageAndParagraph.image);
30676
+ if (index > 0) {
30677
+ var markerBefore = paragraph.segments[index - 1];
30678
+ var markerAfter = paragraph.segments[index + 1];
30679
+ if (markerBefore &&
30680
+ markerAfter &&
30681
+ markerAfter.segmentType == 'SelectionMarker' &&
30682
+ markerBefore.segmentType == 'SelectionMarker' &&
30683
+ markerAfter.isSelected &&
30684
+ markerBefore.isSelected) {
30685
+ var mutatedParagraph = (0, roosterjs_content_model_dom_1.mutateBlock)(paragraph);
30686
+ mutatedParagraph.segments.splice(index - 1, 1);
30687
+ mutatedParagraph.segments.splice(index, 1);
30688
+ }
30689
+ return imageAndParagraph;
30690
+ }
30691
+ }
30692
+ exports.normalizeImageSelection = normalizeImageSelection;
30693
+
30694
+
30604
30695
  /***/ }),
30605
30696
 
30606
30697
  /***/ "./packages/roosterjs-content-model-plugins/lib/imageEdit/utils/updateHandleCursor.ts":
@@ -30816,11 +30907,13 @@ exports.updateWrapper = updateWrapper;
30816
30907
  "use strict";
30817
30908
 
30818
30909
  Object.defineProperty(exports, "__esModule", ({ value: true }));
30819
- 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;
30910
+ 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;
30820
30911
  var TableEditPlugin_1 = __webpack_require__(/*! ./tableEdit/TableEditPlugin */ "./packages/roosterjs-content-model-plugins/lib/tableEdit/TableEditPlugin.ts");
30821
30912
  Object.defineProperty(exports, "TableEditPlugin", ({ enumerable: true, get: function () { return TableEditPlugin_1.TableEditPlugin; } }));
30822
30913
  var PastePlugin_1 = __webpack_require__(/*! ./paste/PastePlugin */ "./packages/roosterjs-content-model-plugins/lib/paste/PastePlugin.ts");
30823
30914
  Object.defineProperty(exports, "PastePlugin", ({ enumerable: true, get: function () { return PastePlugin_1.PastePlugin; } }));
30915
+ var DefaultSanitizers_1 = __webpack_require__(/*! ./paste/DefaultSanitizers */ "./packages/roosterjs-content-model-plugins/lib/paste/DefaultSanitizers.ts");
30916
+ Object.defineProperty(exports, "DefaultSanitizers", ({ enumerable: true, get: function () { return DefaultSanitizers_1.DefaultSanitizers; } }));
30824
30917
  var EditPlugin_1 = __webpack_require__(/*! ./edit/EditPlugin */ "./packages/roosterjs-content-model-plugins/lib/edit/EditPlugin.ts");
30825
30918
  Object.defineProperty(exports, "EditPlugin", ({ enumerable: true, get: function () { return EditPlugin_1.EditPlugin; } }));
30826
30919
  var AutoFormatPlugin_1 = __webpack_require__(/*! ./autoFormat/AutoFormatPlugin */ "./packages/roosterjs-content-model-plugins/lib/autoFormat/AutoFormatPlugin.ts");
@@ -31125,7 +31218,7 @@ exports.setFormat = setFormat;
31125
31218
  Object.defineProperty(exports, "__esModule", ({ value: true }));
31126
31219
  exports.divParagraphSanitizer = exports.DefaultSanitizers = void 0;
31127
31220
  /**
31128
- * @internal
31221
+ * Default style sanitizers for PastePlugin.
31129
31222
  */
31130
31223
  exports.DefaultSanitizers = {
31131
31224
  width: divParagraphSanitizer,