roosterjs 8.55.0 → 8.56.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 8.55.0)
1
+ // Type definitions for roosterjs (Version 8.56.0)
2
2
  // Generated by dts tool from roosterjs
3
3
  // Project: https://github.com/Microsoft/roosterjs
4
4
 
@@ -2956,6 +2956,10 @@ export interface DOMEventPluginState {
2956
2956
  * Image selection range
2957
2957
  */
2958
2958
  imageSelectionRange: ImageSelectionRange | null;
2959
+ /**
2960
+ * When set to true, onFocus event will not trigger reselect cached range
2961
+ */
2962
+ skipReselectOnFocus?: boolean;
2959
2963
  }
2960
2964
 
2961
2965
  /**
@@ -3845,13 +3849,14 @@ export const enum ExperimentalFeatures {
3845
3849
  */
3846
3850
  EditWithContentModel = "EditWithContentModel",
3847
3851
  /**
3848
- * Provide additional Tab Key Features. Requires Text Features Content Editable Features
3849
- */
3850
- TabKeyTextFeatures = "TabKeyTextFeatures",
3851
- /**
3852
+ * @deprecated This feature is always enabled
3852
3853
  * Trigger formatting by a especial characters. Ex: (A), 1. i).
3853
3854
  */
3854
3855
  AutoFormatList = "AutoFormatList",
3856
+ /**
3857
+ * Provide additional Tab Key Features. Requires Text Features Content Editable Features
3858
+ */
3859
+ TabKeyTextFeatures = "TabKeyTextFeatures",
3855
3860
  /**
3856
3861
  * With this feature enabled, when writing back a list item we will re-use all
3857
3862
  * ancestor list elements, even if they don't match the types currently in the
@@ -8660,13 +8665,14 @@ export enum CompatibleExperimentalFeatures {
8660
8665
  */
8661
8666
  EditWithContentModel = "EditWithContentModel",
8662
8667
  /**
8663
- * Provide additional Tab Key Features. Requires Text Features Content Editable Features
8664
- */
8665
- TabKeyTextFeatures = "TabKeyTextFeatures",
8666
- /**
8668
+ * @deprecated This feature is always enabled
8667
8669
  * Trigger formatting by a especial characters. Ex: (A), 1. i).
8668
8670
  */
8669
8671
  AutoFormatList = "AutoFormatList",
8672
+ /**
8673
+ * Provide additional Tab Key Features. Requires Text Features Content Editable Features
8674
+ */
8675
+ TabKeyTextFeatures = "TabKeyTextFeatures",
8670
8676
  /**
8671
8677
  * With this feature enabled, when writing back a list item we will re-use all
8672
8678
  * ancestor list elements, even if they don't match the types currently in the
@@ -4666,9 +4666,7 @@ function toggleListType(editor, listType, startNumber, includeSiblingLists, orde
4666
4666
  : (0, roosterjs_editor_dom_1.createVListFromRegion)(region, startNumber === 1 ? false : includeSiblingLists);
4667
4667
  if (vList && start && end) {
4668
4668
  vList.changeListType(start, end, listType);
4669
- if (editor.isFeatureEnabled("AutoFormatList" /* AutoFormatList */)) {
4670
- vList.setListStyleType(orderedStyle, unorderedStyle);
4671
- }
4669
+ vList.setListStyleType(orderedStyle, unorderedStyle);
4672
4670
  vList.writeBack(editor.isFeatureEnabled("ReuseAllAncestorListElements" /* ReuseAllAncestorListElements */), editor.isFeatureEnabled("DisableListChain" /* DisableListChain */));
4673
4671
  }
4674
4672
  }, undefined /* beforeRunCallback */, apiNameOverride || 'toggleListType');
@@ -5815,6 +5813,27 @@ var roosterjs_editor_dom_1 = __webpack_require__(/*! roosterjs-editor-dom */ "./
5815
5813
  * @param arg4 (optional) An offset number, or a PositionType
5816
5814
  */
5817
5815
  var select = function (core, arg1, arg2, arg3, arg4) {
5816
+ var rangeEx = buildRangeEx(core, arg1, arg2, arg3, arg4);
5817
+ if (rangeEx) {
5818
+ var skipReselectOnFocus = core.domEvent.skipReselectOnFocus;
5819
+ // We are applying a new selection, so we don't need to apply cached selection in DOMEventPlugin.
5820
+ // Set skipReselectOnFocus to skip this behavior
5821
+ core.domEvent.skipReselectOnFocus = true;
5822
+ try {
5823
+ applyRangeEx(core, rangeEx);
5824
+ }
5825
+ finally {
5826
+ core.domEvent.skipReselectOnFocus = skipReselectOnFocus;
5827
+ }
5828
+ }
5829
+ else {
5830
+ core.domEvent.tableSelectionRange = core.api.selectTable(core, null);
5831
+ core.domEvent.imageSelectionRange = core.api.selectImage(core, null);
5832
+ }
5833
+ return !!rangeEx;
5834
+ };
5835
+ exports.select = select;
5836
+ function buildRangeEx(core, arg1, arg2, arg3, arg4) {
5818
5837
  var rangeEx = null;
5819
5838
  if (isSelectionRangeEx(arg1)) {
5820
5839
  rangeEx = arg1;
@@ -5854,45 +5873,40 @@ var select = function (core, arg1, arg2, arg3, arg4) {
5854
5873
  }
5855
5874
  : null;
5856
5875
  }
5857
- if (rangeEx) {
5858
- switch (rangeEx.type) {
5859
- case 1 /* TableSelection */:
5860
- if ((0, roosterjs_editor_dom_1.contains)(core.contentDiv, rangeEx.table)) {
5861
- core.domEvent.imageSelectionRange = core.api.selectImage(core, null);
5862
- core.domEvent.tableSelectionRange = core.api.selectTable(core, rangeEx.table, rangeEx.coordinates);
5863
- rangeEx = core.domEvent.tableSelectionRange;
5864
- }
5865
- break;
5866
- case 2 /* ImageSelection */:
5867
- if ((0, roosterjs_editor_dom_1.contains)(core.contentDiv, rangeEx.image)) {
5868
- core.domEvent.tableSelectionRange = core.api.selectTable(core, null);
5869
- core.domEvent.imageSelectionRange = core.api.selectImage(core, rangeEx.image);
5870
- rangeEx = core.domEvent.imageSelectionRange;
5871
- }
5872
- break;
5873
- case 0 /* Normal */:
5874
- core.domEvent.tableSelectionRange = core.api.selectTable(core, null);
5876
+ return rangeEx;
5877
+ }
5878
+ function applyRangeEx(core, rangeEx) {
5879
+ switch (rangeEx === null || rangeEx === void 0 ? void 0 : rangeEx.type) {
5880
+ case 1 /* TableSelection */:
5881
+ if ((0, roosterjs_editor_dom_1.contains)(core.contentDiv, rangeEx.table)) {
5875
5882
  core.domEvent.imageSelectionRange = core.api.selectImage(core, null);
5876
- if ((0, roosterjs_editor_dom_1.contains)(core.contentDiv, rangeEx.ranges[0])) {
5877
- core.api.selectRange(core, rangeEx.ranges[0]);
5878
- }
5879
- else {
5880
- rangeEx = null;
5881
- }
5882
- break;
5883
- }
5884
- core.api.triggerEvent(core, {
5885
- eventType: 22 /* SelectionChanged */,
5886
- selectionRangeEx: rangeEx,
5887
- }, true /** broadcast **/);
5888
- }
5889
- else {
5890
- core.domEvent.tableSelectionRange = core.api.selectTable(core, null);
5891
- core.domEvent.imageSelectionRange = core.api.selectImage(core, null);
5883
+ core.domEvent.tableSelectionRange = core.api.selectTable(core, rangeEx.table, rangeEx.coordinates);
5884
+ rangeEx = core.domEvent.tableSelectionRange;
5885
+ }
5886
+ break;
5887
+ case 2 /* ImageSelection */:
5888
+ if ((0, roosterjs_editor_dom_1.contains)(core.contentDiv, rangeEx.image)) {
5889
+ core.domEvent.tableSelectionRange = core.api.selectTable(core, null);
5890
+ core.domEvent.imageSelectionRange = core.api.selectImage(core, rangeEx.image);
5891
+ rangeEx = core.domEvent.imageSelectionRange;
5892
+ }
5893
+ break;
5894
+ case 0 /* Normal */:
5895
+ core.domEvent.tableSelectionRange = core.api.selectTable(core, null);
5896
+ core.domEvent.imageSelectionRange = core.api.selectImage(core, null);
5897
+ if ((0, roosterjs_editor_dom_1.contains)(core.contentDiv, rangeEx.ranges[0])) {
5898
+ core.api.selectRange(core, rangeEx.ranges[0]);
5899
+ }
5900
+ else {
5901
+ rangeEx = null;
5902
+ }
5903
+ break;
5892
5904
  }
5893
- return !!rangeEx;
5894
- };
5895
- exports.select = select;
5905
+ core.api.triggerEvent(core, {
5906
+ eventType: 22 /* SelectionChanged */,
5907
+ selectionRangeEx: rangeEx,
5908
+ }, true /** broadcast **/);
5909
+ }
5896
5910
  function isSelectionRangeEx(obj) {
5897
5911
  var rangeEx = obj;
5898
5912
  return (rangeEx &&
@@ -6837,16 +6851,18 @@ var DOMEventPlugin = /** @class */ (function () {
6837
6851
  };
6838
6852
  this.onFocus = function () {
6839
6853
  var _a, _b, _c;
6840
- var _d = _this.state.tableSelectionRange || {}, table = _d.table, coordinates = _d.coordinates;
6841
- var image = (_this.state.imageSelectionRange || {}).image;
6842
- if (table && coordinates) {
6843
- (_a = _this.editor) === null || _a === void 0 ? void 0 : _a.select(table, coordinates);
6844
- }
6845
- else if (image) {
6846
- (_b = _this.editor) === null || _b === void 0 ? void 0 : _b.select(image);
6847
- }
6848
- else if (_this.state.selectionRange) {
6849
- (_c = _this.editor) === null || _c === void 0 ? void 0 : _c.select(_this.state.selectionRange);
6854
+ if (!_this.state.skipReselectOnFocus) {
6855
+ var _d = _this.state.tableSelectionRange || {}, table = _d.table, coordinates = _d.coordinates;
6856
+ var image = (_this.state.imageSelectionRange || {}).image;
6857
+ if (table && coordinates) {
6858
+ (_a = _this.editor) === null || _a === void 0 ? void 0 : _a.select(table, coordinates);
6859
+ }
6860
+ else if (image) {
6861
+ (_b = _this.editor) === null || _b === void 0 ? void 0 : _b.select(image);
6862
+ }
6863
+ else if (_this.state.selectionRange) {
6864
+ (_c = _this.editor) === null || _c === void 0 ? void 0 : _c.select(_this.state.selectionRange);
6865
+ }
6850
6866
  }
6851
6867
  _this.state.selectionRange = null;
6852
6868
  };
@@ -22053,77 +22069,23 @@ var OutdentWhenEnterOnEmptyLine = {
22053
22069
  defaultDisabled: !roosterjs_editor_dom_1.Browser.isIE && !roosterjs_editor_dom_1.Browser.isChrome,
22054
22070
  };
22055
22071
  /**
22056
- * Validate if a block of text is considered a list pattern
22057
- * The regex expression will look for patterns of the form:
22058
- * 1. 1> 1) 1- (1)
22059
- * @returns if a text is considered a list pattern
22060
- */
22061
- function isAListPattern(textBeforeCursor) {
22062
- var REGEX = /^(\*|-|[0-9]{1,2}\.|[0-9]{1,2}\>|[0-9]{1,2}\)|[0-9]{1,2}\-|\([0-9]{1,2}\))$/;
22063
- return REGEX.test(textBeforeCursor);
22064
- }
22065
- /**
22066
- * AutoBullet edit feature, provides the ability to automatically convert current line into a list.
22067
- * When user input "1. ", convert into a numbering list
22068
- * When user input "- " or "* ", convert into a bullet list
22072
+ * @deprecated Use AutoBulletList and AutoNumberingList instead
22069
22073
  */
22070
22074
  var AutoBullet = {
22071
22075
  keys: [32 /* SPACE */],
22072
22076
  shouldHandleEvent: function (event, editor) {
22073
- var searcher;
22074
- if (!cacheGetListElement(event, editor) &&
22075
- !editor.isFeatureEnabled("AutoFormatList" /* AutoFormatList */) &&
22076
- (searcher = editor.getContentSearcherOfCursor(event))) {
22077
- var textBeforeCursor = searcher.getSubStringBefore(4);
22078
- // Auto list is triggered if:
22079
- // 1. Text before cursor exactly matches '*', '-' or '1.'
22080
- // 2. There's no non-text inline entities before cursor
22081
- return isAListPattern(textBeforeCursor) && !searcher.getNearestNonTextInlineElement();
22082
- }
22083
22077
  return false;
22084
22078
  },
22085
- handleEvent: function (event, editor) {
22086
- editor.insertContent(' ');
22087
- event.rawEvent.preventDefault();
22088
- editor.addUndoSnapshot(function () {
22089
- var _a;
22090
- var regions;
22091
- var searcher = editor.getContentSearcherOfCursor();
22092
- if (!searcher) {
22093
- return;
22094
- }
22095
- var textBeforeCursor = searcher.getSubStringBefore(4);
22096
- var textRange = searcher.getRangeFromText(textBeforeCursor, true /*exactMatch*/);
22097
- if (!textRange) {
22098
- // no op if the range can't be found
22099
- }
22100
- else if (textBeforeCursor.indexOf('*') == 0 ||
22101
- textBeforeCursor.indexOf('-') == 0) {
22102
- prepareAutoBullet(editor, textRange);
22103
- (0, roosterjs_editor_api_1.toggleBullet)(editor);
22104
- }
22105
- else if (isAListPattern(textBeforeCursor)) {
22106
- prepareAutoBullet(editor, textRange);
22107
- (0, roosterjs_editor_api_1.toggleNumbering)(editor);
22108
- }
22109
- else if ((regions = editor.getSelectedRegions()) && regions.length == 1) {
22110
- var num = parseInt(textBeforeCursor);
22111
- prepareAutoBullet(editor, textRange);
22112
- (0, roosterjs_editor_api_1.toggleNumbering)(editor, num);
22113
- }
22114
- (_a = searcher.getRangeFromText(textBeforeCursor, true /*exactMatch*/)) === null || _a === void 0 ? void 0 : _a.deleteContents();
22115
- }, undefined /*changeSource*/, true /*canUndoByBackspace*/);
22116
- },
22079
+ handleEvent: function (event, editor) { },
22080
+ defaultDisabled: true,
22117
22081
  };
22118
22082
  /**
22119
- * Requires @see ExperimentalFeatures.AutoFormatList to be enabled
22120
22083
  * AutoBulletList edit feature, provides the ability to automatically convert current line into a bullet list.
22121
22084
  */
22122
22085
  var AutoBulletList = {
22123
22086
  keys: [32 /* SPACE */],
22124
22087
  shouldHandleEvent: function (event, editor) {
22125
- if (!cacheGetListElement(event, editor) &&
22126
- editor.isFeatureEnabled("AutoFormatList" /* AutoFormatList */)) {
22088
+ if (!cacheGetListElement(event, editor)) {
22127
22089
  return shouldTriggerList(event, editor, getAutoBulletListStyle_1.default, 2 /* Unordered */);
22128
22090
  }
22129
22091
  return false;
@@ -22149,14 +22111,12 @@ var AutoBulletList = {
22149
22111
  },
22150
22112
  };
22151
22113
  /**
22152
- * Requires @see ExperimentalFeatures.AutoFormatList to be enabled
22153
22114
  * AutoNumberingList edit feature, provides the ability to automatically convert current line into a numbering list.
22154
22115
  */
22155
22116
  var AutoNumberingList = {
22156
22117
  keys: [32 /* SPACE */],
22157
22118
  shouldHandleEvent: function (event, editor) {
22158
- if (!cacheGetListElement(event, editor) &&
22159
- editor.isFeatureEnabled("AutoFormatList" /* AutoFormatList */)) {
22119
+ if (!cacheGetListElement(event, editor)) {
22160
22120
  return shouldTriggerList(event, editor, getAutoNumberingListStyle_1.default, 1 /* Ordered */);
22161
22121
  }
22162
22122
  return false;
@@ -24506,7 +24466,7 @@ var ImageEdit = /** @class */ (function () {
24506
24466
  mode: 'open',
24507
24467
  });
24508
24468
  this.shadowSpan.style.verticalAlign = 'bottom';
24509
- this.shadowSpan.style.fontSize = '24px';
24469
+ wrapper.style.fontSize = '24px';
24510
24470
  shadowRoot.appendChild(wrapper);
24511
24471
  }
24512
24472
  }
@@ -25639,30 +25599,31 @@ function updateRotateHandleState(editorRect, angleRad, wrapper, rotateCenter, ro
25639
25599
  else {
25640
25600
  rotateCenter.style.display = '';
25641
25601
  rotateHandle.style.display = '';
25642
- var rotateHandleRect = rotateHandle.getBoundingClientRect();
25602
+ var rotateCenterRect = rotateCenter.getBoundingClientRect();
25643
25603
  var wrapperRect = wrapper.getBoundingClientRect();
25644
- if (rotateHandleRect && wrapperRect) {
25604
+ var ROTATOR_HEIGHT = constants_1.ROTATE_SIZE + constants_1.ROTATE_GAP + constants_1.RESIZE_HANDLE_MARGIN;
25605
+ if (rotateCenterRect && wrapperRect) {
25645
25606
  var adjustedDistance = Number.MAX_SAFE_INTEGER;
25646
25607
  var angle = angleRad * constants_1.DEG_PER_RAD;
25647
- if (angle < 45 && angle > -45 && wrapperRect.top - editorRect.top < constants_1.ROTATE_GAP) {
25648
- var top_1 = rotateHandleRect.top - editorRect.top;
25608
+ if (angle < 45 && angle > -45 && wrapperRect.top - editorRect.top < ROTATOR_HEIGHT) {
25609
+ var top_1 = rotateCenterRect.top - editorRect.top;
25649
25610
  adjustedDistance = top_1;
25650
25611
  }
25651
25612
  else if (angle <= -80 &&
25652
25613
  angle >= -100 &&
25653
- wrapperRect.left - editorRect.left < constants_1.ROTATE_GAP) {
25654
- var left = rotateHandleRect.left - editorRect.left;
25614
+ wrapperRect.left - editorRect.left < ROTATOR_HEIGHT) {
25615
+ var left = rotateCenterRect.left - editorRect.left;
25655
25616
  adjustedDistance = left;
25656
25617
  }
25657
25618
  else if (angle >= 80 &&
25658
25619
  angle <= 100 &&
25659
- editorRect.right - wrapperRect.right < constants_1.ROTATE_GAP) {
25660
- var right = rotateHandleRect.right - editorRect.right;
25620
+ editorRect.right - wrapperRect.right < ROTATOR_HEIGHT) {
25621
+ var right = rotateCenterRect.right - editorRect.right;
25661
25622
  adjustedDistance = Math.min(editorRect.right - wrapperRect.right, right);
25662
25623
  }
25663
25624
  else if ((angle <= -160 || angle >= 160) &&
25664
- editorRect.bottom - wrapperRect.bottom < constants_1.ROTATE_GAP) {
25665
- var bottom = rotateHandleRect.bottom - editorRect.bottom;
25625
+ editorRect.bottom - wrapperRect.bottom < ROTATOR_HEIGHT) {
25626
+ var bottom = rotateCenterRect.bottom - editorRect.bottom;
25666
25627
  adjustedDistance = Math.min(editorRect.bottom - wrapperRect.bottom, bottom);
25667
25628
  }
25668
25629
  var rotateGap = Math.max(Math.min(constants_1.ROTATE_GAP, adjustedDistance), 0);
@@ -29979,6 +29940,19 @@ var TableInsertHandler = /** @class */ (function () {
29979
29940
  vtable.edit(_this.isHorizontal ? 1 /* InsertBelow */ : 3 /* InsertRight */);
29980
29941
  vtable.writeBack();
29981
29942
  _this.onInsert(vtable.table);
29943
+ // Select newly inserted row or column
29944
+ if (vtable.row != undefined && vtable.col != undefined && vtable.cells) {
29945
+ var inserted = _this.isHorizontal
29946
+ ? {
29947
+ firstCell: { x: 0, y: vtable.row + 1 },
29948
+ lastCell: { x: vtable.cells[vtable.row].length - 1, y: vtable.row + 1 },
29949
+ }
29950
+ : {
29951
+ firstCell: { x: vtable.col + 1, y: 0 },
29952
+ lastCell: { x: vtable.col + 1, y: vtable.cells.length - 1 },
29953
+ };
29954
+ _this.editor.select(vtable.table, inserted);
29955
+ }
29982
29956
  };
29983
29957
  this.div.addEventListener('click', this.insertTd);
29984
29958
  this.onMouseOutEvent = getOnMouseOut(div);
@@ -31440,15 +31414,16 @@ var CompatibleExperimentalFeatures;
31440
31414
  * Handle keyboard editing event with Content Model
31441
31415
  */
31442
31416
  CompatibleExperimentalFeatures["EditWithContentModel"] = "EditWithContentModel";
31417
+ /**
31418
+ * @deprecated This feature is always enabled
31419
+ * Trigger formatting by a especial characters. Ex: (A), 1. i).
31420
+ */
31421
+ CompatibleExperimentalFeatures["AutoFormatList"] = "AutoFormatList";
31443
31422
  //#endregion
31444
31423
  /**
31445
31424
  * Provide additional Tab Key Features. Requires Text Features Content Editable Features
31446
31425
  */
31447
31426
  CompatibleExperimentalFeatures["TabKeyTextFeatures"] = "TabKeyTextFeatures";
31448
- /**
31449
- * Trigger formatting by a especial characters. Ex: (A), 1. i).
31450
- */
31451
- CompatibleExperimentalFeatures["AutoFormatList"] = "AutoFormatList";
31452
31427
  /**
31453
31428
  * With this feature enabled, when writing back a list item we will re-use all
31454
31429
  * ancestor list elements, even if they don't match the types currently in the
@@ -33609,15 +33584,16 @@ var ExperimentalFeatures;
33609
33584
  * Handle keyboard editing event with Content Model
33610
33585
  */
33611
33586
  ExperimentalFeatures["EditWithContentModel"] = "EditWithContentModel";
33587
+ /**
33588
+ * @deprecated This feature is always enabled
33589
+ * Trigger formatting by a especial characters. Ex: (A), 1. i).
33590
+ */
33591
+ ExperimentalFeatures["AutoFormatList"] = "AutoFormatList";
33612
33592
  //#endregion
33613
33593
  /**
33614
33594
  * Provide additional Tab Key Features. Requires Text Features Content Editable Features
33615
33595
  */
33616
33596
  ExperimentalFeatures["TabKeyTextFeatures"] = "TabKeyTextFeatures";
33617
- /**
33618
- * Trigger formatting by a especial characters. Ex: (A), 1. i).
33619
- */
33620
- ExperimentalFeatures["AutoFormatList"] = "AutoFormatList";
33621
33597
  /**
33622
33598
  * With this feature enabled, when writing back a list item we will re-use all
33623
33599
  * ancestor list elements, even if they don't match the types currently in the