devexpress-richedit 26.1.2-beta → 26.1.3

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.
Files changed (56) hide show
  1. package/bin/gulpfile.js +1 -1
  2. package/bin/index-custom.js +1 -1
  3. package/bin/localization-builder.js +1 -1
  4. package/bin/nspell-index.js +1 -1
  5. package/bin/nspell.webpack.config.js +1 -1
  6. package/bin/webpack-externals.js +1 -1
  7. package/bin/webpack.config.js +1 -1
  8. package/dist/dx.richedit.css +26 -0
  9. package/dist/dx.richedit.d.ts +1 -1
  10. package/dist/dx.richedit.js +6016 -5627
  11. package/dist/dx.richedit.min.js +3 -3
  12. package/dist/pdfkit.js +21908 -22350
  13. package/dist/pdfkit.min.js +1 -1
  14. package/index.d.ts +1 -1
  15. package/index.js +1 -1
  16. package/lib/client/client-rich-edit.d.ts +0 -1
  17. package/lib/client/client-rich-edit.js +2 -25
  18. package/lib/client/default-localization.js +1 -0
  19. package/lib/common/canvas/canvas-manager.d.ts +1 -1
  20. package/lib/common/canvas/canvas-manager.js +7 -3
  21. package/lib/common/canvas/double-tap-detector.d.ts +10 -0
  22. package/lib/common/canvas/double-tap-detector.js +28 -0
  23. package/lib/common/canvas/renderer-class-names.d.ts +2 -0
  24. package/lib/common/canvas/renderer-class-names.js +2 -0
  25. package/lib/common/canvas/renderes/common/document-renderer.d.ts +20 -7
  26. package/lib/common/canvas/renderes/common/document-renderer.js +236 -47
  27. package/lib/common/canvas/renderes/common/simple-view-renderer.d.ts +3 -1
  28. package/lib/common/canvas/renderes/common/simple-view-renderer.js +35 -2
  29. package/lib/common/canvas/renderes/view-manager.d.ts +3 -0
  30. package/lib/common/canvas/renderes/view-manager.js +34 -7
  31. package/lib/common/commands/border-command-options.d.ts +7 -0
  32. package/lib/common/commands/border-command-options.js +8 -0
  33. package/lib/common/commands/dialogs/dialog-border-shading-command.js +13 -6
  34. package/lib/common/commands/dialogs/dialog-custom-numbering-list-command.js +1 -1
  35. package/lib/common/commands/tables/toggle-table-cells-border-command.d.ts +1 -1
  36. package/lib/common/commands/tables/toggle-table-cells-border-command.js +10 -3
  37. package/lib/common/event-manager.js +2 -0
  38. package/lib/common/layout/main-structures/layout-boxes/layout-box.js +1 -1
  39. package/lib/common/layout/main-structures/layout-column.d.ts +1 -0
  40. package/lib/common/layout/main-structures/layout-column.js +3 -0
  41. package/lib/common/layout/selection/layout-selection-items.d.ts +3 -0
  42. package/lib/common/layout/selection/layout-selection-items.js +5 -0
  43. package/lib/common/layout-engine/selection/selection-formatter.js +7 -3
  44. package/lib/common/layout-formatter/box/generator/box-infos-generator.js +8 -4
  45. package/lib/common/layout-formatter/row/result.d.ts +1 -0
  46. package/lib/common/layout-formatter/row/result.js +11 -1
  47. package/lib/common/layout-formatter/row/size-engine/row-formatting-info.d.ts +2 -1
  48. package/lib/common/layout-formatter/row/size-engine/row-formatting-info.js +7 -4
  49. package/lib/common/model/sub-document.d.ts +12 -5
  50. package/lib/common/model/sub-document.js +36 -31
  51. package/lib/common/rich-edit-core.js +1 -1
  52. package/lib/common/screen-reader-manager.d.ts +6 -3
  53. package/lib/common/screen-reader-manager.js +66 -49
  54. package/lib/common/string-resources.d.ts +23 -0
  55. package/lib/common/string-resources.js +43 -0
  56. package/package.json +3 -3
@@ -8,9 +8,8 @@ import { NumberingType } from "./model/numbering-lists/numbering-list";
8
8
  import { TablePositionIndexes } from "./model/tables/main-structures/table";
9
9
  import { InlinePictureRun } from "./model/runs/inline-picture-run";
10
10
  import { RichUtils } from "./model/rich-utils";
11
- import { formatMessage } from "devextreme/localization";
12
11
  import { RunType } from "./model/runs/run-type";
13
- import { SubDocumentPosition } from "./model/sub-document";
12
+ import { SubDocumentPosition, TransformAction } from "./model/sub-document";
14
13
  class TableInfo {
15
14
  constructor(index, columnIndex, rowIndex) {
16
15
  this.index = index;
@@ -21,16 +20,7 @@ class TableInfo {
21
20
  export class ScreenReaderManager {
22
21
  static { this._maxAnnouncedTextLength = 500; }
23
22
  static { this._spaceSeparatorRegex = /^\p{Zs}$/u; }
24
- static { this._specialCharSubstitutionTable = {
25
- [RichUtils.specialCharacters.SectionMark]: RichUtils.specialCharacters.PageBreak + "\u200C",
26
- [RichUtils.specialCharacters.PageBreak]: RichUtils.specialCharacters.PageBreak + "\u200C",
27
- }; }
28
- constructor(control, liveRegion) {
29
- this._charNames = Object.assign({
30
- [RichUtils.specialCharacters.TabMark]: getString("TabAnnouncement"),
31
- [RichUtils.specialCharacters.ParagraphMark]: getString("CarriageReturnAnnouncement"),
32
- [RichUtils.specialCharacters.LineBreak]: getString("LineBreakAnnouncement"),
33
- }, ScreenReaderManager._specialCharSubstitutionTable);
23
+ constructor(control, liveRegion, resources) {
34
24
  this._handlers = new Map([
35
25
  [RichEditClientCommand.NextCharacter, (selection, lp) => this._getCurrentCharacterAnnouncement(selection, lp)],
36
26
  [RichEditClientCommand.PreviousCharacter, (selection, lp) => this._getCurrentCharacterAnnouncement(selection, lp)],
@@ -53,6 +43,14 @@ export class ScreenReaderManager {
53
43
  this._prevNavInHyperlink = false;
54
44
  this._control = control;
55
45
  this._liveRegion = liveRegion;
46
+ this._announcements = resources.announcements;
47
+ this._charNames = {
48
+ [RichUtils.specialCharacters.TabMark]: this._announcements.tab,
49
+ [RichUtils.specialCharacters.ParagraphMark]: this._announcements.carriageReturn,
50
+ [RichUtils.specialCharacters.LineBreak]: this._announcements.lineBreak,
51
+ [RichUtils.specialCharacters.PageBreak]: this._announcements.pageBreak,
52
+ [RichUtils.specialCharacters.SectionMark]: this._announcements.pageBreak,
53
+ };
56
54
  }
57
55
  _announce(...announcment) {
58
56
  this._clearAnnouncement();
@@ -106,7 +104,7 @@ export class ScreenReaderManager {
106
104
  const result = [];
107
105
  if (!tableInfo.table) {
108
106
  if (this._tableInfo) {
109
- result.push(getString("OutOfTableAnnouncement"));
107
+ result.push(this._announcements.outOfTable);
110
108
  this._tableInfo = null;
111
109
  }
112
110
  return result;
@@ -117,35 +115,40 @@ export class ScreenReaderManager {
117
115
  const colIndex = cellGridInfo.getGridCellIndex();
118
116
  const rowIndex = cellGridInfo.getStartRowIndex();
119
117
  const currentTableInfo = new TableInfo(tableInfo.table.index, colIndex, rowIndex);
120
- if (!this._tableInfo || this._tableInfo.index !== currentTableInfo.index)
121
- result.push(getString("InTableAnnouncement", tableCellGridInfos.length, tableCellGridInfos[0].length));
118
+ if (!this._tableInfo || this._tableInfo.index !== currentTableInfo.index) {
119
+ if (this._tableInfo) {
120
+ result.push(this._announcements.outOfTable);
121
+ this._tableInfo = null;
122
+ }
123
+ result.push(formatString(this._announcements.inTable, tableCellGridInfos.length, tableCellGridInfos[0].length));
124
+ }
122
125
  if (!this._tableInfo || this._tableInfo.rowIndex !== currentTableInfo.rowIndex)
123
- result.push(getString("TableRowAnnouncement", rowIndex + 1));
126
+ result.push(formatString(this._announcements.tableRow, rowIndex + 1));
124
127
  if (!this._tableInfo || this._tableInfo.columnIndex !== currentTableInfo.columnIndex)
125
- result.push(getString("TableColumnAnnouncement", colIndex + 1));
128
+ result.push(formatString(this._announcements.tableColumn, colIndex + 1));
126
129
  this._tableInfo = currentTableInfo;
127
130
  return result;
128
131
  }
129
132
  _processExtendSelectionCommand(intervals) {
130
133
  let announcments = [];
131
134
  if (this._commandId === RichEditClientCommand.SelectAll)
132
- announcments.push(getString("SelectAllAnnouncement"), "\n");
135
+ announcments.push(this._announcements.selectAll, "\n");
136
+ const subDocument = this._control.selection.activeSubDocument;
133
137
  const selectedIntervals = IntervalUtils.subtractIntervals(intervals, this._selectionIntervals);
134
138
  if (selectedIntervals.length > 0)
135
- announcments.push(getString("TextSelectedAnnouncement", this._getTextByIntervals(selectedIntervals)));
139
+ announcments.push(formatString(this._announcements.textSelected, this._getTextByIntervals(subDocument, selectedIntervals)));
136
140
  const unselectedIntervals = IntervalUtils.subtractIntervals(this._selectionIntervals, intervals);
137
141
  if (unselectedIntervals.length > 0)
138
- announcments.push(getString("TextUnselectedAnnouncement", this._getTextByIntervals(unselectedIntervals)));
142
+ announcments.push(formatString(this._announcements.textUnselected, this._getTextByIntervals(subDocument, unselectedIntervals)));
139
143
  return announcments;
140
144
  }
141
- _getTextByIntervals(intervals) {
145
+ _getTextByIntervals(subDocument, intervals) {
142
146
  const length = intervals.reduce((total, interval) => total + interval.length, 0);
143
147
  if (length > ScreenReaderManager._maxAnnouncedTextLength)
144
148
  return `${length} characters`;
145
- const subDocument = this._control.selection.activeSubDocument;
146
149
  return intervals.map(i => subDocument.getVisibleText(i, {
147
150
  includeNumberedListMarks: true,
148
- charMap: ScreenReaderManager._specialCharSubstitutionTable
151
+ transform: this._tryResolveDocumentElements.bind(this)
149
152
  })).join('');
150
153
  }
151
154
  _updateHyperlinkState(lp) {
@@ -155,9 +158,9 @@ export class ScreenReaderManager {
155
158
  const inHyperlink = lp.box?.hyperlinkTip != null;
156
159
  const prevInHyperlink = this._prevNavInHyperlink;
157
160
  if (inHyperlink && !prevInHyperlink)
158
- return getString("LinkAnnouncement");
161
+ return this._announcements.link;
159
162
  if (!inHyperlink && prevInHyperlink)
160
- return getString("OutOfLinkAnnouncement");
163
+ return this._announcements.outOfLink;
161
164
  return null;
162
165
  }
163
166
  _getCurrentCharacterAnnouncement(selection, lp) {
@@ -165,7 +168,7 @@ export class ScreenReaderManager {
165
168
  const subDocument = selection.activeSubDocument;
166
169
  const info = subDocument.getRunAndIndexesByPosition(pos);
167
170
  if (info.run instanceof InlinePictureRun)
168
- return ScreenReaderManager._getInlinePictureText(info.run);
171
+ return this._getInlinePictureText(info.run);
169
172
  const isFieldCodeStartRun = info.run.getType() === RunType.FieldCodeStartRun;
170
173
  const charInfo = isFieldCodeStartRun
171
174
  ? subDocument.getRunAndIndexesByPosition(lp.getLogPosition(DocumentLayoutDetailsLevel.Box))
@@ -199,8 +202,7 @@ export class ScreenReaderManager {
199
202
  const subDocument = selection.activeSubDocument;
200
203
  const wordEnd = LayoutWordBounds.getLayoutWordEndBound(this._control.layout, subDocument, selection, pos, false);
201
204
  let text = subDocument.getVisibleText(FixedInterval.fromPositions(pos, wordEnd), {
202
- inlinePictureAltText: ScreenReaderManager._getInlinePictureText,
203
- charMap: ScreenReaderManager._specialCharSubstitutionTable
205
+ transform: this._tryResolveDocumentElements.bind(this)
204
206
  });
205
207
  return this._buildContextualAnnouncement(text, new SubDocumentPosition(subDocument, pos), lp);
206
208
  }
@@ -218,22 +220,40 @@ export class ScreenReaderManager {
218
220
  }
219
221
  _onHyperlinkFieldStart(fieldIndexes, subDocument, pos) {
220
222
  const field = this._getHyperlinkField(fieldIndexes, subDocument);
221
- return field && pos === field.getResultStartPosition() ? ` ${getString("LinkAnnouncement")} ` : null;
223
+ return field && pos === field.getResultStartPosition() ? ` ${this._announcements.link} ` : null;
222
224
  }
223
225
  _getVisibleText(subDocument, interval, includeNumberedListMarks = false) {
224
226
  const result = subDocument.getVisibleText(interval, {
225
227
  includeNumberedListMarks,
226
- inlinePictureAltText: ScreenReaderManager._getInlinePictureText,
227
- charMap: ScreenReaderManager._specialCharSubstitutionTable,
228
- resolveAdditionalText: (fieldIndexes, pos) => this._onHyperlinkFieldStart(fieldIndexes, subDocument, pos)
228
+ transform: (info, fieldIndexes) => {
229
+ const prefix = this._onHyperlinkFieldStart(fieldIndexes, subDocument, info.getAbsolutePosition());
230
+ const text = this._tryResolveDocumentElements(info);
231
+ if (prefix == null && text == null)
232
+ return null;
233
+ return {
234
+ text: (prefix ?? '') + (text ?? ''),
235
+ action: text != null ? TransformAction.Replace : TransformAction.InsertBefore
236
+ };
237
+ }
229
238
  });
230
239
  return result === RichUtils.specialCharacters.ParagraphMark
231
- ? getString("BlankAnnouncement")
240
+ ? this._announcements.blank
232
241
  : result;
233
242
  }
234
- static _getInlinePictureText(run) {
243
+ _tryResolveDocumentElements(info) {
244
+ return info.run.getType() === RunType.InlinePictureRun
245
+ ? this._getInlinePictureText(info.run)
246
+ : this._tryResolveSpecialCharacters(info);
247
+ }
248
+ _tryResolveSpecialCharacters(info) {
249
+ const char = info.getCurrentChar();
250
+ if (char === RichUtils.specialCharacters.PageBreak || char === RichUtils.specialCharacters.SectionMark)
251
+ return ` ${this._announcements.pageBreak} `;
252
+ return null;
253
+ }
254
+ _getInlinePictureText(run) {
235
255
  const nonVisualProps = run.info.nonVisualDrawingProperties;
236
- return getString("PictureAnnouncement", nonVisualProps.description ?? nonVisualProps.name ?? '');
256
+ return formatString(this._announcements.picture, nonVisualProps.description ?? nonVisualProps.name ?? '');
237
257
  }
238
258
  _getPageChangePrefix(pageIndex) {
239
259
  if (this._pageIndex === null) {
@@ -242,20 +262,20 @@ export class ScreenReaderManager {
242
262
  }
243
263
  if (pageIndex !== this._pageIndex) {
244
264
  this._pageIndex = pageIndex;
245
- return getString("PageAnnouncement", pageIndex + 1);
265
+ return formatString(this._announcements.page, pageIndex + 1);
246
266
  }
247
267
  return '';
248
268
  }
249
269
  _getCharName(char) {
250
270
  if (char in this._charNames)
251
271
  return this._charNames[char];
252
- return ScreenReaderManager._spaceSeparatorRegex.test(char) ? getString("SpaceAnnouncement") : char;
272
+ return ScreenReaderManager._spaceSeparatorRegex.test(char) ? this._announcements.space : char;
253
273
  }
254
274
  _resolveListMarker(paragraph) {
255
275
  const levelIndex = paragraph.getListLevelIndex();
256
276
  const levelType = paragraph.getNumberingList().getLevelType(levelIndex);
257
277
  if (levelType === NumberingType.Bullet)
258
- return getString("BulletAnnouncement");
278
+ return this._announcements.bullet;
259
279
  return paragraph.getNumberingListText();
260
280
  }
261
281
  _getListItemAnnouncement(paragraph, pos, lp, content) {
@@ -263,14 +283,14 @@ export class ScreenReaderManager {
263
283
  return null;
264
284
  const level = paragraph.getListLevelIndex() + 1;
265
285
  const listMarker = this._resolveListMarker(paragraph);
266
- return `${getString("ListItemAnnouncement", level, listMarker)} ${content}`;
286
+ return `${formatString(this._announcements.listItem, level, listMarker)} ${content}`;
267
287
  }
268
288
  dispose() {
269
289
  this._clearAnnouncement();
270
290
  this._liveRegion.remove();
271
291
  }
272
292
  }
273
- const stringCache = {};
293
+ const stringFormatterCache = {};
274
294
  function createFormatter(template) {
275
295
  const tokens = [];
276
296
  let lastIndex = 0;
@@ -296,14 +316,11 @@ function createFormatter(template) {
296
316
  return result;
297
317
  };
298
318
  }
299
- function getString(key, ...args) {
300
- let entry = stringCache[key];
301
- if (!entry) {
302
- const str = formatMessage(`AspNetCoreRichEditStringId.${key}`);
303
- entry = args.length > 0 ? createFormatter(str) : str;
304
- stringCache[key] = entry;
319
+ function formatString(template, ...args) {
320
+ let formatter = stringFormatterCache[template];
321
+ if (!formatter) {
322
+ formatter = createFormatter(template);
323
+ stringFormatterCache[template] = formatter;
305
324
  }
306
- if (typeof entry === "function")
307
- return entry(args);
308
- return entry;
325
+ return formatter(args);
309
326
  }
@@ -3,6 +3,7 @@ export declare class StringResources {
3
3
  seqCaptionPrefixes: SeqCaptionPrefixes;
4
4
  commonLabels: CommonLabels;
5
5
  quickSearchPanel: QuickSearchPanelStringResources;
6
+ announcements: IAnnouncementStringResources;
6
7
  constructor();
7
8
  }
8
9
  export declare class HeaderFooterStringResources {
@@ -31,3 +32,25 @@ export declare class QuickSearchPanelStringResources {
31
32
  noMatches: string;
32
33
  of: string;
33
34
  }
35
+ export interface IAnnouncementStringResources {
36
+ inTable?: string;
37
+ outOfTable?: string;
38
+ tableRow?: string;
39
+ tableColumn?: string;
40
+ selectAll?: string;
41
+ textSelected?: string;
42
+ textUnselected?: string;
43
+ tab?: string;
44
+ carriageReturn?: string;
45
+ lineBreak?: string;
46
+ picture?: string;
47
+ page?: string;
48
+ space?: string;
49
+ bullet?: string;
50
+ listItem?: string;
51
+ link?: string;
52
+ outOfLink?: string;
53
+ blank?: string;
54
+ pageBreak?: string;
55
+ }
56
+ export declare function getStringResources(): StringResources;
@@ -1,9 +1,11 @@
1
+ import { formatMessage } from "devextreme/localization";
1
2
  export class StringResources {
2
3
  constructor() {
3
4
  this.headerFooter = new HeaderFooterStringResources();
4
5
  this.seqCaptionPrefixes = new SeqCaptionPrefixes();
5
6
  this.commonLabels = new CommonLabels();
6
7
  this.quickSearchPanel = new QuickSearchPanelStringResources();
8
+ this.announcements = {};
7
9
  }
8
10
  }
9
11
  export class HeaderFooterStringResources {
@@ -14,3 +16,44 @@ export class CommonLabels {
14
16
  }
15
17
  export class QuickSearchPanelStringResources {
16
18
  }
19
+ export function getStringResources() {
20
+ const sr = new StringResources();
21
+ sr.headerFooter.evenPageFooter = formatMessage('XtraRichEditStringId.Caption_EvenPageFooter');
22
+ sr.headerFooter.evenPageHeader = formatMessage('XtraRichEditStringId.Caption_EvenPageHeader');
23
+ sr.headerFooter.firstPageFooter = formatMessage('XtraRichEditStringId.Caption_FirstPageFooter');
24
+ sr.headerFooter.firstPageHeader = formatMessage('XtraRichEditStringId.Caption_FirstPageHeader');
25
+ sr.headerFooter.footer = formatMessage('XtraRichEditStringId.Caption_PageFooter');
26
+ sr.headerFooter.header = formatMessage('XtraRichEditStringId.Caption_PageHeader');
27
+ sr.headerFooter.oddPageFooter = formatMessage('XtraRichEditStringId.Caption_OddPageFooter');
28
+ sr.headerFooter.oddPageHeader = formatMessage('XtraRichEditStringId.Caption_OddPageHeader');
29
+ sr.headerFooter.sameAsPrevious = formatMessage('XtraRichEditStringId.Caption_SameAsPrevious');
30
+ sr.seqCaptionPrefixes.figurePrefix = formatMessage('XtraRichEditStringId.Caption_CaptionPrefixFigure');
31
+ sr.seqCaptionPrefixes.tablePrefix = formatMessage('XtraRichEditStringId.Caption_CaptionPrefixTable');
32
+ sr.seqCaptionPrefixes.equationPrefix = formatMessage('XtraRichEditStringId.Caption_CaptionPrefixEquation');
33
+ sr.commonLabels.noTocEntriesFound = formatMessage('XtraRichEditStringId.Msg_NoTocEntriesFound');
34
+ sr.commonLabels.clickToFollowHyperlink = formatMessage('XtraRichEditStringId.Msg_ClickToFollowHyperlink');
35
+ sr.commonLabels.currentDocumentHyperlinkTooltip = formatMessage('XtraRichEditStringId.Caption_CurrentDocumentHyperlinkTooltip');
36
+ sr.quickSearchPanel.of = formatMessage('ASPxRichEditStringId.FindReplace_Of');
37
+ sr.quickSearchPanel.items = formatMessage('ASPxRichEditStringId.FindReplace_Items');
38
+ sr.quickSearchPanel.noMatches = formatMessage('ASPxRichEditStringId.FindReplace_NoMatches');
39
+ sr.announcements.inTable = formatMessage('AspNetCoreRichEditStringId.InTableAnnouncement');
40
+ sr.announcements.outOfTable = formatMessage('AspNetCoreRichEditStringId.OutOfTableAnnouncement');
41
+ sr.announcements.tableRow = formatMessage('AspNetCoreRichEditStringId.TableRowAnnouncement');
42
+ sr.announcements.tableColumn = formatMessage('AspNetCoreRichEditStringId.TableColumnAnnouncement');
43
+ sr.announcements.selectAll = formatMessage('AspNetCoreRichEditStringId.SelectAllAnnouncement');
44
+ sr.announcements.textSelected = formatMessage('AspNetCoreRichEditStringId.TextSelectedAnnouncement');
45
+ sr.announcements.textUnselected = formatMessage('AspNetCoreRichEditStringId.TextUnselectedAnnouncement');
46
+ sr.announcements.picture = formatMessage('AspNetCoreRichEditStringId.PictureAnnouncement');
47
+ sr.announcements.page = formatMessage('AspNetCoreRichEditStringId.PageAnnouncement');
48
+ sr.announcements.space = formatMessage('AspNetCoreRichEditStringId.SpaceAnnouncement');
49
+ sr.announcements.bullet = formatMessage('AspNetCoreRichEditStringId.BulletAnnouncement');
50
+ sr.announcements.listItem = formatMessage('AspNetCoreRichEditStringId.ListItemAnnouncement');
51
+ sr.announcements.tab = formatMessage('AspNetCoreRichEditStringId.TabAnnouncement');
52
+ sr.announcements.carriageReturn = formatMessage('AspNetCoreRichEditStringId.CarriageReturnAnnouncement');
53
+ sr.announcements.lineBreak = formatMessage('AspNetCoreRichEditStringId.LineBreakAnnouncement');
54
+ sr.announcements.link = formatMessage('AspNetCoreRichEditStringId.LinkAnnouncement');
55
+ sr.announcements.outOfLink = formatMessage('AspNetCoreRichEditStringId.OutOfLinkAnnouncement');
56
+ sr.announcements.blank = formatMessage('AspNetCoreRichEditStringId.BlankAnnouncement');
57
+ sr.announcements.pageBreak = formatMessage('AspNetCoreRichEditStringId.PageBreakAnnouncement');
58
+ return sr;
59
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devexpress-richedit",
3
- "version": "26.1.2-beta",
3
+ "version": "26.1.3",
4
4
  "homepage": "https://www.devexpress.com/",
5
5
  "bugs": "https://www.devexpress.com/support/",
6
6
  "author": "Developer Express Inc.",
@@ -11,8 +11,8 @@
11
11
  "build-nspell": "webpack --mode production --config=bin/nspell.webpack.config.js"
12
12
  },
13
13
  "peerDependencies": {
14
- "devextreme": "26.1.2-beta",
15
- "devextreme-dist": "26.1.2-beta"
14
+ "devextreme": "26.1.3",
15
+ "devextreme-dist": "26.1.3"
16
16
  },
17
17
  "devDependencies": {
18
18
  "dictionary-en": "3.2.0",