devexpress-richedit 25.2.7 → 26.1.2-beta

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 (62) 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 +0 -1
  9. package/dist/dx.richedit.d.ts +1 -1
  10. package/dist/dx.richedit.js +1271 -701
  11. package/dist/dx.richedit.min.js +2 -2
  12. package/index.d.ts +1 -1
  13. package/index.js +1 -1
  14. package/lib/client/client-rich-edit.js +2 -2
  15. package/lib/client/default-localization.js +25 -7
  16. package/lib/client/dialogs/alert-dialog.d.ts +1 -1
  17. package/lib/client/dialogs/bookmark-dialog.d.ts +1 -1
  18. package/lib/client/dialogs/delete-table-cells-dialog.d.ts +1 -1
  19. package/lib/client/dialogs/dialog-base.d.ts +1 -1
  20. package/lib/client/dialogs/find-replace-dialog.d.ts +1 -1
  21. package/lib/client/dialogs/finish-and-merge-dialog.d.ts +1 -1
  22. package/lib/client/dialogs/font-dialog.d.ts +1 -1
  23. package/lib/client/dialogs/hyperlink-dialog.d.ts +1 -1
  24. package/lib/client/dialogs/insert-merge-field-dialog.d.ts +1 -1
  25. package/lib/client/dialogs/insert-table-cells-dialog.d.ts +1 -1
  26. package/lib/client/dialogs/insert-table-dialog.d.ts +1 -1
  27. package/lib/client/dialogs/page-setup-dialog.d.ts +1 -1
  28. package/lib/client/dialogs/paragraph-dialog.d.ts +1 -1
  29. package/lib/client/dialogs/split-table-cells-dialog.d.ts +1 -1
  30. package/lib/client/dialogs/tabs-dialog.d.ts +1 -1
  31. package/lib/client/public/rich-edit.js +2 -0
  32. package/lib/client/public/utils.js +5 -1
  33. package/lib/common/canvas/renderes/common/document-renderer.js +7 -1
  34. package/lib/common/commands/command-manager.d.ts +2 -0
  35. package/lib/common/commands/command-manager.js +6 -0
  36. package/lib/common/commands/layout/switch-view-command.js +2 -1
  37. package/lib/common/commands/selection/go-to-next-word-command.d.ts +3 -4
  38. package/lib/common/commands/selection/go-to-next-word-command.js +2 -9
  39. package/lib/common/commands/selection/go-to-prev-word-command.d.ts +3 -2
  40. package/lib/common/commands/selection/go-to-prev-word-command.js +2 -2
  41. package/lib/common/commands/selection/select-all-document-command.d.ts +2 -0
  42. package/lib/common/commands/selection/select-all-document-command.js +6 -0
  43. package/lib/common/commands/selection/selection-command-base.d.ts +2 -0
  44. package/lib/common/commands/selection/selection-command-base.js +8 -0
  45. package/lib/common/event-manager.js +0 -1
  46. package/lib/common/formats/txt/txt-exporter.js +1 -1
  47. package/lib/common/input-controller.js +2 -0
  48. package/lib/common/interfaces/i-rich-edit-core.d.ts +2 -0
  49. package/lib/common/layout-formatter/formatter/base-formatter.d.ts +1 -0
  50. package/lib/common/layout-formatter/formatter/base-formatter.js +11 -0
  51. package/lib/common/layout-formatter/row/result.d.ts +0 -1
  52. package/lib/common/layout-formatter/row/result.js +4 -19
  53. package/lib/common/layout-formatter/row/size-engine/row-sizes-manager.js +1 -3
  54. package/lib/common/model/sub-document.d.ts +11 -0
  55. package/lib/common/model/sub-document.js +66 -22
  56. package/lib/common/rich-edit-core.d.ts +3 -0
  57. package/lib/common/rich-edit-core.js +18 -0
  58. package/lib/common/screen-reader-manager.d.ts +45 -0
  59. package/lib/common/screen-reader-manager.js +309 -0
  60. package/lib/common/utils/interval-utils.d.ts +4 -0
  61. package/lib/common/utils/interval-utils.js +25 -0
  62. package/package.json +3 -3
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * DevExpress WebRichEdit (dx.richedit.js)
3
- * Version: 25.2.7
3
+ * Version: 26.1.2-beta
4
4
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
5
5
  * License: https://www.devexpress.com/Support/EULAs",
6
6
  */
@@ -27810,6 +27810,202 @@ class PositionManager {
27810
27810
  }
27811
27811
  }
27812
27812
 
27813
+ ;// ./src/common/layout-formatter/box/generator/one-dimension-itertors.ts
27814
+
27815
+ class OneDimensionItertor {
27816
+ constructor(objects) {
27817
+ this.objects = objects;
27818
+ }
27819
+ init(pos) {
27820
+ this.index = search.SearchUtils.normedInterpolationIndexOf(this.objects, (o) => this.getPosition(o), pos);
27821
+ this.updateNextObjPos();
27822
+ }
27823
+ update(newPosition) {
27824
+ if (newPosition < this.nextObjPosition)
27825
+ return false;
27826
+ while (this.getPosition(this.objects[++this.index]) < newPosition)
27827
+ ;
27828
+ this.updateNextObjPos();
27829
+ return true;
27830
+ }
27831
+ updateNextObjPos() {
27832
+ const nextObj = this.objects[this.index + 1];
27833
+ this.nextObjPosition = nextObj ? this.getPosition(nextObj) : Number.MAX_VALUE;
27834
+ }
27835
+ }
27836
+ class ParagraphIterator extends OneDimensionItertor {
27837
+ getPosition(o) {
27838
+ return o.startLogPosition.value;
27839
+ }
27840
+ }
27841
+ class SectionIterator extends OneDimensionItertor {
27842
+ getPosition(o) {
27843
+ return o.startLogPosition.value;
27844
+ }
27845
+ }
27846
+
27847
+ ;// ./src/common/layout-formatter/box/box-wrap.ts
27848
+
27849
+ class BoxWrap {
27850
+ constructor(box, info) {
27851
+ this.box = box;
27852
+ this.info = info;
27853
+ }
27854
+ splitByPosition(measurer, pos) {
27855
+ return new BoxWrap(this.box.splitBoxByPosition(measurer, pos), this.info);
27856
+ }
27857
+ }
27858
+ class BoxWrapInfo {
27859
+ constructor(paragraphIndex, sectionIndex, tablePosition, fieldsInfo) {
27860
+ this.pageIndexFromWhichTableWasMoved = null;
27861
+ this.paragraphIndex = paragraphIndex;
27862
+ this.sectionIndex = sectionIndex;
27863
+ this.tablePosition = tablePosition;
27864
+ this.fieldsInfo = fieldsInfo;
27865
+ }
27866
+ equalsTablePositions(tablePos) {
27867
+ if (!this.tablePosition)
27868
+ return !tablePos;
27869
+ if (!tablePos || this.tablePosition.length != tablePos.length)
27870
+ return false;
27871
+ return utils_list.ListUtils.allOf2(this.tablePosition, tablePos, (a, b) => a.equals(b));
27872
+ }
27873
+ getTableNestedLevel() {
27874
+ return (this.tablePosition ? this.tablePosition.length : 0) - 1;
27875
+ }
27876
+ }
27877
+ class BoxWrapFieldInfo {
27878
+ constructor(field, isInCodePart) {
27879
+ this.field = field;
27880
+ this.isInCodePart = isInCodePart;
27881
+ }
27882
+ static make(field, pos) {
27883
+ return new BoxWrapFieldInfo(field, field.getCodeIntervalWithBorders().contains(pos));
27884
+ }
27885
+ }
27886
+
27887
+ ;// ./src/common/layout-formatter/box/generator/recursive-objects-iterators.ts
27888
+
27889
+
27890
+
27891
+
27892
+ class RecursiveObjectsIterator {
27893
+ constructor(objects) {
27894
+ this.objects = objects;
27895
+ }
27896
+ getNextObjectPosition() {
27897
+ return this.nextObjPosition;
27898
+ }
27899
+ init(pos) {
27900
+ this.indexes = [];
27901
+ const index = search.SearchUtils.normedInterpolationIndexOf(this.objects, (o) => this.getStartPosition(o), pos);
27902
+ if (index < 0) {
27903
+ this.setNextInfos(0, pos);
27904
+ return;
27905
+ }
27906
+ let obj = this.objects[index];
27907
+ while (pos >= this.getEndPosition(obj)) {
27908
+ const parent = this.getParent(obj);
27909
+ if (!parent) {
27910
+ this.setNextInfos(index + 1, pos);
27911
+ return;
27912
+ }
27913
+ obj = parent;
27914
+ }
27915
+ this.collectIndexes(this.getIndex(obj), pos);
27916
+ }
27917
+ collectIndexes(index, pos) {
27918
+ const insertPos = this.indexes.length;
27919
+ let ind = this.correctBounds(index, pos);
27920
+ let obj = this.objects[ind];
27921
+ const leftBoundIndex = this.indexes.length ? utils_list.ListUtils.last(this.indexes) : -1;
27922
+ while (true) {
27923
+ this.indexes.splice(insertPos, 0, ind);
27924
+ const parent = this.getParent(obj);
27925
+ if (!parent || this.getIndex(parent) == leftBoundIndex)
27926
+ break;
27927
+ ind = this.getIndex(parent);
27928
+ obj = parent;
27929
+ }
27930
+ this.setNextInfos(utils_list.ListUtils.last(this.indexes) + 1, pos);
27931
+ }
27932
+ update(newPosition) {
27933
+ if (!this.objects.length)
27934
+ return false;
27935
+ const indexesDeleted = this.popLastIndexes(newPosition);
27936
+ if (newPosition >= this.nextObjPosition) {
27937
+ this.nextObjIndex = this.correctBounds(this.nextObjIndex, newPosition);
27938
+ this.collectIndexes(this.nextObjIndex, newPosition);
27939
+ return true;
27940
+ }
27941
+ return indexesDeleted;
27942
+ }
27943
+ setNextInfos(ind, pos) {
27944
+ this.nextObjIndex = ind;
27945
+ const obj = this.objects[ind];
27946
+ if (!obj || this.getStartPosition(obj) >= pos)
27947
+ this.nextObjPosition = obj ? this.getStartPosition(obj) : Number.MAX_VALUE;
27948
+ else
27949
+ this.setNextInfos(ind + 1, pos);
27950
+ }
27951
+ popLastIndexes(newPosition) {
27952
+ if (!this.indexes.length || newPosition < this.getEndPosition(this.objects[utils_list.ListUtils.last(this.indexes)]))
27953
+ return false;
27954
+ this.indexes.pop();
27955
+ this.popLastIndexes(newPosition);
27956
+ return true;
27957
+ }
27958
+ }
27959
+ class TableIterator extends RecursiveObjectsIterator {
27960
+ getStartPosition(o) {
27961
+ return o.getStartPosition();
27962
+ }
27963
+ getEndPosition(o) {
27964
+ return o.getEndPosition();
27965
+ }
27966
+ getParent(obj) {
27967
+ return obj.getParentTable();
27968
+ }
27969
+ getIndex(obj) {
27970
+ return obj.index;
27971
+ }
27972
+ correctBounds(objIndex, pos) {
27973
+ return Table.correctBoundTable(this.objects, objIndex, pos, (i) => ++i).index;
27974
+ }
27975
+ generateInfo(pos) {
27976
+ if (!this.indexes.length)
27977
+ return null;
27978
+ return utils_list.ListUtils.map(this.indexes, (ind) => {
27979
+ const table = this.objects[ind];
27980
+ const rowIndex = search.SearchUtils.normedInterpolationIndexOf(table.rows, (r) => r.getStartPosition(), pos);
27981
+ const cellIndex = search.SearchUtils.normedInterpolationIndexOf(table.rows[rowIndex].cells, (c) => c.startParagraphPosition.value, pos);
27982
+ return new TablePosition(table, rowIndex, cellIndex).init();
27983
+ });
27984
+ }
27985
+ }
27986
+ class FieldIterator extends RecursiveObjectsIterator {
27987
+ getStartPosition(o) {
27988
+ return o.getFieldStartPosition();
27989
+ }
27990
+ getEndPosition(o) {
27991
+ return o.getFieldEndPosition();
27992
+ }
27993
+ getParent(obj) {
27994
+ return obj.parent;
27995
+ }
27996
+ getIndex(obj) {
27997
+ return obj.index;
27998
+ }
27999
+ correctBounds(objIndex, _pos) {
28000
+ return objIndex;
28001
+ }
28002
+ generateInfo(pos) {
28003
+ if (!this.indexes.length)
28004
+ return null;
28005
+ return utils_list.ListUtils.map(this.indexes, (ind) => BoxWrapFieldInfo.make(this.objects[ind], pos));
28006
+ }
28007
+ }
28008
+
27813
28009
  ;// ./src/common/model/sub-document.ts
27814
28010
 
27815
28011
 
@@ -27825,6 +28021,8 @@ class PositionManager {
27825
28021
 
27826
28022
 
27827
28023
 
28024
+
28025
+
27828
28026
  class SubDocument {
27829
28027
  static { this.AUTOGENERATE_ID = -1; }
27830
28028
  static { this.MAIN_SUBDOCUMENT_ID = 0; }
@@ -27876,36 +28074,78 @@ class SubDocument {
27876
28074
  return buffer;
27877
28075
  }
27878
28076
  getSimpleText(interval) {
27879
- let result = "";
28077
+ return this.getVisibleText(interval, {
28078
+ useFieldResult: true,
28079
+ charMap: {
28080
+ [RichUtils.specialCharacters.LineBreak]: ' ',
28081
+ [RichUtils.specialCharacters.SectionMark]: '\r\n',
28082
+ [RichUtils.specialCharacters.ParagraphMark]: '\r\n'
28083
+ }
28084
+ });
28085
+ }
28086
+ getVisibleText(interval, options = {}) {
28087
+ let result = [];
27880
28088
  let pos = interval.start;
27881
- let nested = 0;
27882
- const fieldIndex = Field.normedBinaryIndexOf(this.fields, pos);
27883
- if (fieldIndex > -1) {
27884
- let field = this.fields[fieldIndex];
27885
- while (field.parent)
27886
- field = field.parent;
27887
- pos = field.getFieldStartPosition();
27888
- }
28089
+ const { charMap = {}, useFieldResult = false, includeNumberedListMarks = false, inlinePictureAltText = null, resolveAdditionalText = undefined, } = options;
27889
28090
  const iterator = new ModelIterator(this, true);
27890
28091
  iterator.setPosition(pos);
28092
+ const fieldIterator = new FieldIterator(this.fields);
28093
+ fieldIterator.init(pos);
28094
+ const paragraphIterator = new ParagraphIterator(this.paragraphs);
28095
+ paragraphIterator.init(pos);
27891
28096
  while (pos < interval.end) {
27892
- switch (iterator.run.getType()) {
27893
- case RunType.FieldCodeStartRun:
27894
- nested++;
27895
- break;
27896
- case RunType.FieldCodeEndRun:
27897
- nested--;
27898
- break;
27899
- case RunType.TextRun:
27900
- if (pos >= interval.start && nested == 0)
27901
- result += iterator.getCurrentChar();
28097
+ if (this.isPositionVisible(pos, fieldIterator.indexes, useFieldResult)) {
28098
+ const paragraph = this.paragraphs[paragraphIterator.index];
28099
+ if (includeNumberedListMarks && pos === paragraph.startLogPosition.value && paragraph.isInList())
28100
+ result.push(paragraph.getNumberingListText() + paragraph.getNumberingListSeparatorChar());
28101
+ if (resolveAdditionalText) {
28102
+ const resolved = resolveAdditionalText(fieldIterator.indexes, pos);
28103
+ if (resolved)
28104
+ result.push(resolved);
28105
+ }
28106
+ switch (iterator.run.getType()) {
28107
+ case RunType.InlinePictureRun:
28108
+ if (inlinePictureAltText != null) {
28109
+ let placeholder;
28110
+ if (typeof inlinePictureAltText === "function")
28111
+ placeholder = inlinePictureAltText(iterator.run);
28112
+ else
28113
+ placeholder = inlinePictureAltText;
28114
+ if ((0,common.isDefined)(placeholder))
28115
+ result.push(placeholder);
28116
+ }
28117
+ break;
28118
+ case RunType.SectionRun:
28119
+ case RunType.ParagraphRun:
28120
+ case RunType.FieldCodeStartRun:
28121
+ case RunType.FieldCodeEndRun:
28122
+ case RunType.TextRun:
28123
+ const char = iterator.getCurrentChar();
28124
+ result.push(charMap[char] ?? char);
28125
+ break;
28126
+ }
28127
+ if (!iterator.moveToNextChar())
27902
28128
  break;
27903
28129
  }
27904
- if (!iterator.moveToNextChar())
28130
+ else if (!iterator.moveToNextRun())
27905
28131
  break;
27906
28132
  pos = iterator.getAbsolutePosition();
28133
+ paragraphIterator.update(pos);
28134
+ fieldIterator.update(pos);
28135
+ }
28136
+ return result.join("");
28137
+ }
28138
+ isPositionVisible(pos, fieldIndexes, useFieldResult) {
28139
+ for (const index of fieldIndexes) {
28140
+ const field = this.fields[index];
28141
+ const isCodeView = !useFieldResult && field.showCode;
28142
+ const invisibleInterval = isCodeView
28143
+ ? field.getResultIntervalWithBorders()
28144
+ : field.getCodeIntervalWithBorders();
28145
+ if (invisibleInterval.contains(pos))
28146
+ return false;
27907
28147
  }
27908
- return result.replace(RichUtils.specialCharacters.LineBreak, " ");
28148
+ return true;
27909
28149
  }
27910
28150
  splitRun(position) {
27911
28151
  var info = this.getRunAndIndexesByPosition(position);
@@ -47034,168 +47274,6 @@ class CrossExistingIterator {
47034
47274
  }
47035
47275
  }
47036
47276
 
47037
- ;// ./src/common/layout-formatter/box/box-wrap.ts
47038
-
47039
- class BoxWrap {
47040
- constructor(box, info) {
47041
- this.box = box;
47042
- this.info = info;
47043
- }
47044
- splitByPosition(measurer, pos) {
47045
- return new BoxWrap(this.box.splitBoxByPosition(measurer, pos), this.info);
47046
- }
47047
- }
47048
- class BoxWrapInfo {
47049
- constructor(paragraphIndex, sectionIndex, tablePosition, fieldsInfo) {
47050
- this.pageIndexFromWhichTableWasMoved = null;
47051
- this.paragraphIndex = paragraphIndex;
47052
- this.sectionIndex = sectionIndex;
47053
- this.tablePosition = tablePosition;
47054
- this.fieldsInfo = fieldsInfo;
47055
- }
47056
- equalsTablePositions(tablePos) {
47057
- if (!this.tablePosition)
47058
- return !tablePos;
47059
- if (!tablePos || this.tablePosition.length != tablePos.length)
47060
- return false;
47061
- return utils_list.ListUtils.allOf2(this.tablePosition, tablePos, (a, b) => a.equals(b));
47062
- }
47063
- getTableNestedLevel() {
47064
- return (this.tablePosition ? this.tablePosition.length : 0) - 1;
47065
- }
47066
- }
47067
- class BoxWrapFieldInfo {
47068
- constructor(field, isInCodePart) {
47069
- this.field = field;
47070
- this.isInCodePart = isInCodePart;
47071
- }
47072
- static make(field, pos) {
47073
- return new BoxWrapFieldInfo(field, field.getCodeIntervalWithBorders().contains(pos));
47074
- }
47075
- }
47076
-
47077
- ;// ./src/common/layout-formatter/box/generator/recursive-objects-iterators.ts
47078
-
47079
-
47080
-
47081
-
47082
- class RecursiveObjectsIterator {
47083
- constructor(objects) {
47084
- this.objects = objects;
47085
- }
47086
- getNextObjectPosition() {
47087
- return this.nextObjPosition;
47088
- }
47089
- init(pos) {
47090
- this.indexes = [];
47091
- const index = search.SearchUtils.normedInterpolationIndexOf(this.objects, (o) => this.getStartPosition(o), pos);
47092
- if (index < 0) {
47093
- this.setNextInfos(0, pos);
47094
- return;
47095
- }
47096
- let obj = this.objects[index];
47097
- while (pos >= this.getEndPosition(obj)) {
47098
- const parent = this.getParent(obj);
47099
- if (!parent) {
47100
- this.setNextInfos(index + 1, pos);
47101
- return;
47102
- }
47103
- obj = parent;
47104
- }
47105
- this.collectIndexes(this.getIndex(obj), pos);
47106
- }
47107
- collectIndexes(index, pos) {
47108
- const insertPos = this.indexes.length;
47109
- let ind = this.correctBounds(index, pos);
47110
- let obj = this.objects[ind];
47111
- const leftBoundIndex = this.indexes.length ? utils_list.ListUtils.last(this.indexes) : -1;
47112
- while (true) {
47113
- this.indexes.splice(insertPos, 0, ind);
47114
- const parent = this.getParent(obj);
47115
- if (!parent || this.getIndex(parent) == leftBoundIndex)
47116
- break;
47117
- ind = this.getIndex(parent);
47118
- obj = parent;
47119
- }
47120
- this.setNextInfos(utils_list.ListUtils.last(this.indexes) + 1, pos);
47121
- }
47122
- update(newPosition) {
47123
- if (!this.objects.length)
47124
- return false;
47125
- const indexesDeleted = this.popLastIndexes(newPosition);
47126
- if (newPosition >= this.nextObjPosition) {
47127
- this.nextObjIndex = this.correctBounds(this.nextObjIndex, newPosition);
47128
- this.collectIndexes(this.nextObjIndex, newPosition);
47129
- return true;
47130
- }
47131
- return indexesDeleted;
47132
- }
47133
- setNextInfos(ind, pos) {
47134
- this.nextObjIndex = ind;
47135
- const obj = this.objects[ind];
47136
- if (!obj || this.getStartPosition(obj) >= pos)
47137
- this.nextObjPosition = obj ? this.getStartPosition(obj) : Number.MAX_VALUE;
47138
- else
47139
- this.setNextInfos(ind + 1, pos);
47140
- }
47141
- popLastIndexes(newPosition) {
47142
- if (!this.indexes.length || newPosition < this.getEndPosition(this.objects[utils_list.ListUtils.last(this.indexes)]))
47143
- return false;
47144
- this.indexes.pop();
47145
- this.popLastIndexes(newPosition);
47146
- return true;
47147
- }
47148
- }
47149
- class TableIterator extends RecursiveObjectsIterator {
47150
- getStartPosition(o) {
47151
- return o.getStartPosition();
47152
- }
47153
- getEndPosition(o) {
47154
- return o.getEndPosition();
47155
- }
47156
- getParent(obj) {
47157
- return obj.getParentTable();
47158
- }
47159
- getIndex(obj) {
47160
- return obj.index;
47161
- }
47162
- correctBounds(objIndex, pos) {
47163
- return Table.correctBoundTable(this.objects, objIndex, pos, (i) => ++i).index;
47164
- }
47165
- generateInfo(pos) {
47166
- if (!this.indexes.length)
47167
- return null;
47168
- return utils_list.ListUtils.map(this.indexes, (ind) => {
47169
- const table = this.objects[ind];
47170
- const rowIndex = search.SearchUtils.normedInterpolationIndexOf(table.rows, (r) => r.getStartPosition(), pos);
47171
- const cellIndex = search.SearchUtils.normedInterpolationIndexOf(table.rows[rowIndex].cells, (c) => c.startParagraphPosition.value, pos);
47172
- return new TablePosition(table, rowIndex, cellIndex).init();
47173
- });
47174
- }
47175
- }
47176
- class FieldIterator extends RecursiveObjectsIterator {
47177
- getStartPosition(o) {
47178
- return o.getFieldStartPosition();
47179
- }
47180
- getEndPosition(o) {
47181
- return o.getFieldEndPosition();
47182
- }
47183
- getParent(obj) {
47184
- return obj.parent;
47185
- }
47186
- getIndex(obj) {
47187
- return obj.index;
47188
- }
47189
- correctBounds(objIndex, _pos) {
47190
- return objIndex;
47191
- }
47192
- generateInfo(pos) {
47193
- if (!this.indexes.length)
47194
- return null;
47195
- return utils_list.ListUtils.map(this.indexes, (ind) => BoxWrapFieldInfo.make(this.objects[ind], pos));
47196
- }
47197
- }
47198
-
47199
47277
  ;// ./src/common/formats/rtf/import/model/section/general-section-info.ts
47200
47278
  var VerticalAlignment;
47201
47279
  (function (VerticalAlignment) {
@@ -91839,7 +91917,7 @@ class TxtExporter {
91839
91917
  this.model.mainSubDocument.paragraphs.forEach((p, index) => {
91840
91918
  if (index > 0)
91841
91919
  text += '\r\n';
91842
- text += this.model.mainSubDocument.getSimpleText(new fixed.FixedInterval(p.startLogPosition.value, p.length));
91920
+ text += this.model.mainSubDocument.getSimpleText(new fixed.FixedInterval(p.startLogPosition.value, p.length - 1));
91843
91921
  });
91844
91922
  callback(new Blob([text], { type: mime_type.PlainTextMimeType }));
91845
91923
  });
@@ -93908,8 +93986,6 @@ class BoxAligner {
93908
93986
 
93909
93987
 
93910
93988
 
93911
-
93912
-
93913
93989
  var RowFormatterResultFlag;
93914
93990
  (function (RowFormatterResultFlag) {
93915
93991
  RowFormatterResultFlag[RowFormatterResultFlag["None"] = 0] = "None";
@@ -93953,7 +94029,8 @@ class RowFormatterResult {
93953
94029
  }
93954
94030
  finishRow() {
93955
94031
  this.finishLogicalRow(this.rowFormatter.rowSizesManager.rowFormattingInfo.lastNonEmptyInterval.end);
93956
- const lastBoxOffset = utils_list.ListUtils.last(this.row.boxes).rowOffset;
94032
+ const lastBox = utils_list.ListUtils.last(this.row.boxes);
94033
+ const lastBoxOffset = lastBox.rowOffset;
93957
94034
  for (let ind = 0, anc; anc = this.newAnchoredObjects[ind]; ind++) {
93958
94035
  if (anc.rowOffset > lastBoxOffset) {
93959
94036
  this.deleteSomeAnchorObjects(ind, anc.rowOffset);
@@ -93982,25 +94059,11 @@ class RowFormatterResult {
93982
94059
  }
93983
94060
  this.row.columnOffset = rowStartPos -
93984
94061
  this.rowFormatter.manager.activeFormatter.layoutPosition.getLogPosition(DocumentLayoutDetailsLevel.Column);
93985
- const pictBox = this.onlyInlinePictureBox();
93986
- if (pictBox && pictBox.width > this.row.width)
93987
- this.row.width = pictBox.width;
94062
+ const firstBox = this.row.boxes[0];
94063
+ this.row.width = Math.max(this.row.width, lastBox.right - firstBox.x);
93988
94064
  const currState = this.rowFormatter.rowSizesManager.heightCalculator.currState;
93989
94065
  this.row.increaseRowHeightFromSpacingBeforeAndAfter(currState.maxAscent, currState.maxDescent);
93990
94066
  }
93991
- onlyInlinePictureBox() {
93992
- let pictBox;
93993
- for (let ind = this.row.boxes.length - 1; ind >= 0; ind--) {
93994
- const box = this.row.boxes[ind];
93995
- if (box.getType() == LayoutBoxType.Picture) {
93996
- pictBox = box;
93997
- }
93998
- else if (!utils_enum/* EnumUtils */.h.isAnyOf(box.getType(), LayoutBoxType.ParagraphMark, LayoutBoxType.SectionMark, LayoutBoxType.LineBreak, LayoutBoxType.PageBreak)) {
93999
- return null;
94000
- }
94001
- }
94002
- return pictBox;
94003
- }
94004
94067
  addBracketBox(boxType, color, x, layoutBox) {
94005
94068
  const box = new BookmarkBox(boxType);
94006
94069
  box.x = x - (boxType == LayoutBookmarkBoxType.EndBox ? BookmarkBox.DEFAULT_BORDER_WIDTH : 0);
@@ -94036,40 +94099,6 @@ class RowFormatterResult {
94036
94099
  }
94037
94100
  }
94038
94101
 
94039
- ;// ./src/common/layout-formatter/box/generator/one-dimension-itertors.ts
94040
-
94041
- class OneDimensionItertor {
94042
- constructor(objects) {
94043
- this.objects = objects;
94044
- }
94045
- init(pos) {
94046
- this.index = search.SearchUtils.normedInterpolationIndexOf(this.objects, (o) => this.getPosition(o), pos);
94047
- this.updateNextObjPos();
94048
- }
94049
- update(newPosition) {
94050
- if (newPosition < this.nextObjPosition)
94051
- return false;
94052
- while (this.getPosition(this.objects[++this.index]) < newPosition)
94053
- ;
94054
- this.updateNextObjPos();
94055
- return true;
94056
- }
94057
- updateNextObjPos() {
94058
- const nextObj = this.objects[this.index + 1];
94059
- this.nextObjPosition = nextObj ? this.getPosition(nextObj) : Number.MAX_VALUE;
94060
- }
94061
- }
94062
- class ParagraphIterator extends OneDimensionItertor {
94063
- getPosition(o) {
94064
- return o.startLogPosition.value;
94065
- }
94066
- }
94067
- class SectionIterator extends OneDimensionItertor {
94068
- getPosition(o) {
94069
- return o.startLogPosition.value;
94070
- }
94071
- }
94072
-
94073
94102
  ;// ./src/common/layout-formatter/box/generator/box-infos-generator.ts
94074
94103
 
94075
94104
 
@@ -95404,7 +95433,7 @@ class RowSizesManager {
95404
95433
  }
95405
95434
  else {
95406
95435
  box.x = this.rowFormattingInfo.intervals[0].startOfFreeSpace;
95407
- this.rowFormattingInfo.intervals[0].avaliableWidth -= Math.min(box.width, this.rowFormattingInfo.intervals[0].avaliableWidth);
95436
+ this.rowFormattingInfo.intervals[0].avaliableWidth -= box.width;
95408
95437
  this.addBoxIgnoreWidth();
95409
95438
  }
95410
95439
  }
@@ -95441,8 +95470,6 @@ class RowSizesManager {
95441
95470
  const box = this.rowFormatter.currBox;
95442
95471
  box.x = this.rowFormattingInfo.currInterval.startOfFreeSpace;
95443
95472
  this.rowFormattingInfo.currInterval.avaliableWidth -= box.width;
95444
- if (this.rowFormattingInfo.currInterval.avaliableWidth < 0)
95445
- this.rowFormattingInfo.currInterval.avaliableWidth = 0;
95446
95473
  this.row.boxes.push(box);
95447
95474
  this.rowFormattingInfo.lastNonEmptyIntervalIndex = this.rowFormattingInfo.currIndex;
95448
95475
  this.rowFormatter.setBoxInfo(true);
@@ -99216,6 +99243,7 @@ class BaseFormatter {
99216
99243
  this.layoutPosition.column.height = columnHeight;
99217
99244
  this.layoutPosition.pageArea.height = columnHeight;
99218
99245
  this.layoutPosition.page.height = finalPageHeight;
99246
+ this.layoutPosition.page.width = this.calculateContentWidth(this.layoutPosition.column) + margins.horizontal;
99219
99247
  this.layoutPosition.page.minContentHeight = minVisibleAreaHeight;
99220
99248
  }
99221
99249
  createdColumn.paragraphFrames = ParagraphFrameCollector.collect(this.manager.model.colorProvider, createdColumn, this.subDocument.isMain() ?
@@ -99235,6 +99263,16 @@ class BaseFormatter {
99235
99263
  }
99236
99264
  return true;
99237
99265
  }
99266
+ calculateContentWidth(column) {
99267
+ let maxRight = 0;
99268
+ column.tablesInfo.forEach(tableInfo => {
99269
+ maxRight = Math.max(maxRight, tableInfo.right);
99270
+ });
99271
+ column.rows.forEach(row => {
99272
+ maxRight = Math.max(maxRight, row.right);
99273
+ });
99274
+ return maxRight;
99275
+ }
99238
99276
  createNextPageArea() {
99239
99277
  const newPageArea = new LayoutPageArea(this.subDocument);
99240
99278
  newPageArea.setGeomerty(this.pageAreaBounds);
@@ -103641,8 +103679,14 @@ class DocumentRenderer {
103641
103679
  }
103642
103680
  }
103643
103681
  updatePageSize(page, pageElement) {
103644
- if (pageElement.offsetHeight != Math.round(page.height) || pageElement.offsetWidth != Math.round(page.width))
103682
+ if (pageElement.offsetHeight != Math.round(page.height) || pageElement.offsetWidth != Math.round(page.width)) {
103645
103683
  dom.DomUtils.setStyleSize(pageElement.style, page);
103684
+ if (this.viewManager.innerClientProperties.viewsSettings.isSimpleView) {
103685
+ const paddings = this.viewManager.innerClientProperties.viewsSettings.paddings;
103686
+ if (page.width - paddings.right <= this.viewManager.sizes.getVisibleAreaWidth(false))
103687
+ pageElement.style.width = "100%";
103688
+ }
103689
+ }
103646
103690
  }
103647
103691
  updatePageClasses(pageElement) {
103648
103692
  pageElement.className = RendererClassNames.PAGE;
@@ -107620,7 +107664,6 @@ class EventManager {
107620
107664
  onMouseDblClick(evt) {
107621
107665
  Log.print(LogSource.EventManager, "onMouseDoubleClick", LogObjToStrCanvas.richMouseEvent(evt));
107622
107666
  this.mouseHandler.onMouseDoubleClick(evt);
107623
- this.control.inputController.setPosition(evt.absolutePoint.x, evt.absolutePoint.y);
107624
107667
  }
107625
107668
  onMouseWheel(evt) {
107626
107669
  Log.print(LogSource.EventManager, "onMouseWheel", LogObjToStrCanvas.richMouseEvent(evt));
@@ -110803,6 +110846,7 @@ class InputEditorBase {
110803
110846
  createHierarchy(parent) {
110804
110847
  this.inputElement = this.createInputElement();
110805
110848
  this.inputElement.classList.add(INPUT_CLASS_NAME);
110849
+ this.inputElement.setAttribute('aria-hidden', 'true');
110806
110850
  parent.appendChild(this.inputElement);
110807
110851
  this.createHierarchyCore();
110808
110852
  this.inputElement.addEventListener("load", () => this.recreateIfNeeded(), true);
@@ -111297,6 +111341,7 @@ class IFrameInputEditor extends InputEditorBase {
111297
111341
  }
111298
111342
  createInputElement() {
111299
111343
  const element = document.createElement("IFRAME");
111344
+ element.setAttribute("aria-hidden", "true");
111300
111345
  element.src = "about:blank";
111301
111346
  if (browser.Browser.Safari) {
111302
111347
  element.style.width = "100%";
@@ -115815,6 +115860,344 @@ class SearchManager {
115815
115860
  }
115816
115861
  }
115817
115862
 
115863
+ ;// ./src/common/utils/interval-utils.ts
115864
+
115865
+ class IntervalUtils {
115866
+ static subtractIntervals(a, b) {
115867
+ const result = [];
115868
+ let bIndex = 0;
115869
+ for (const interval of a) {
115870
+ let currentFrom = interval.start;
115871
+ const currentTo = interval.end;
115872
+ for (; bIndex < b.length && b[bIndex].start < currentTo; bIndex++) {
115873
+ if (b[bIndex].end <= currentFrom)
115874
+ continue;
115875
+ if (b[bIndex].start > currentFrom)
115876
+ result.push(fixed.FixedInterval.fromPositions(currentFrom, Math.min(b[bIndex].start, currentTo)));
115877
+ currentFrom = Math.max(currentFrom, b[bIndex].end);
115878
+ if (currentFrom >= currentTo) {
115879
+ bIndex++;
115880
+ break;
115881
+ }
115882
+ }
115883
+ if (currentFrom < currentTo)
115884
+ result.push(fixed.FixedInterval.fromPositions(currentFrom, currentTo));
115885
+ }
115886
+ return result;
115887
+ }
115888
+ }
115889
+
115890
+ ;// ./src/common/screen-reader-manager.ts
115891
+
115892
+
115893
+
115894
+
115895
+
115896
+
115897
+
115898
+
115899
+
115900
+
115901
+
115902
+
115903
+
115904
+ class screen_reader_manager_TableInfo {
115905
+ constructor(index, columnIndex, rowIndex) {
115906
+ this.index = index;
115907
+ this.columnIndex = columnIndex;
115908
+ this.rowIndex = rowIndex;
115909
+ }
115910
+ }
115911
+ class ScreenReaderManager {
115912
+ static { this._maxAnnouncedTextLength = 500; }
115913
+ static { this._spaceSeparatorRegex = /^\p{Zs}$/u; }
115914
+ static { this._specialCharSubstitutionTable = {
115915
+ [RichUtils.specialCharacters.SectionMark]: RichUtils.specialCharacters.PageBreak + "\u200C",
115916
+ [RichUtils.specialCharacters.PageBreak]: RichUtils.specialCharacters.PageBreak + "\u200C",
115917
+ }; }
115918
+ constructor(control, liveRegion) {
115919
+ this._charNames = Object.assign({
115920
+ [RichUtils.specialCharacters.TabMark]: getString("TabAnnouncement"),
115921
+ [RichUtils.specialCharacters.ParagraphMark]: getString("CarriageReturnAnnouncement"),
115922
+ [RichUtils.specialCharacters.LineBreak]: getString("LineBreakAnnouncement"),
115923
+ }, ScreenReaderManager._specialCharSubstitutionTable);
115924
+ this._handlers = new Map([
115925
+ [RichEditClientCommand.NextCharacter, (selection, lp) => this._getCurrentCharacterAnnouncement(selection, lp)],
115926
+ [RichEditClientCommand.PreviousCharacter, (selection, lp) => this._getCurrentCharacterAnnouncement(selection, lp)],
115927
+ [RichEditClientCommand.LineUp, (selection, lp) => this._getCurrentLineAnnouncement(selection, lp)],
115928
+ [RichEditClientCommand.LineDown, (selection, lp) => this._getCurrentLineAnnouncement(selection, lp)],
115929
+ [RichEditClientCommand.GoToNextWord, (selection, lp) => this._getCurrentWordAnnouncement(selection, lp)],
115930
+ [RichEditClientCommand.GoToPrevWord, (selection, lp) => this._getCurrentWordAnnouncement(selection, lp)],
115931
+ [RichEditClientCommand.GoToStartParagraph, (selection, lp) => this._getCurrentParagraphAnnouncement(selection, lp)],
115932
+ [RichEditClientCommand.GoToEndParagraph, (selection, lp) => this._getCurrentParagraphAnnouncement(selection, lp)],
115933
+ [RichEditClientCommand.NextPage, (selection, lp) => this._getCurrentLineAnnouncement(selection, lp)],
115934
+ [RichEditClientCommand.PreviousPage, (selection, lp) => this._getCurrentLineAnnouncement(selection, lp)],
115935
+ [RichEditClientCommand.GoToStartNextPage, (selection, lp) => this._getCurrentLineAnnouncement(selection, lp)],
115936
+ [RichEditClientCommand.GoToStartPrevPage, (selection, lp) => this._getCurrentLineAnnouncement(selection, lp)],
115937
+ ]);
115938
+ this._selectionIntervals = [];
115939
+ this._commandId = null;
115940
+ this._announceTimeoutId = null;
115941
+ this._pageIndex = null;
115942
+ this._tableInfo = null;
115943
+ this._prevNavInHyperlink = false;
115944
+ this._control = control;
115945
+ this._liveRegion = liveRegion;
115946
+ }
115947
+ _announce(...announcment) {
115948
+ this._clearAnnouncement();
115949
+ this._liveRegion.textContent = '';
115950
+ this._announceTimeoutId = setTimeout(() => {
115951
+ const textContent = announcment.join(' ');
115952
+ this._liveRegion.textContent = textContent;
115953
+ this._announceTimeoutId = null;
115954
+ }, 50);
115955
+ }
115956
+ _clearAnnouncement() {
115957
+ if (this._announceTimeoutId !== null) {
115958
+ clearTimeout(this._announceTimeoutId);
115959
+ this._announceTimeoutId = null;
115960
+ }
115961
+ }
115962
+ beginExecute(commandId) {
115963
+ this._commandId = commandId;
115964
+ }
115965
+ endExecute() {
115966
+ this._commandId = null;
115967
+ }
115968
+ NotifySelectionChanged(selection) {
115969
+ const currentIntervals = !selection.isCollapsed() ? [...selection.intervals].sort((x, y) => x.start - y.start) : [];
115970
+ if (this._commandId != null) {
115971
+ let announcments = [];
115972
+ const handler = this._handlers.get(this._commandId);
115973
+ if (handler) {
115974
+ const pos = selection.intervals[0].start;
115975
+ const subDocument = selection.activeSubDocument;
115976
+ const lp = LayoutPositionCreator.createLightLayoutPosition(this._control.layout, subDocument, pos, selection.pageIndex, DocumentLayoutDetailsLevel.Box, selection.endOfLine, false);
115977
+ const pagePrefix = this._getPageChangePrefix(lp.pageIndex);
115978
+ if (pagePrefix)
115979
+ announcments.push(pagePrefix);
115980
+ const tableAnnouncements = this._processTable(selection.tableInfo);
115981
+ if (tableAnnouncements.length > 0)
115982
+ announcments.push(...tableAnnouncements);
115983
+ const content = handler(selection, lp);
115984
+ this._updateHyperlinkState(lp);
115985
+ if (content)
115986
+ announcments.push(content);
115987
+ }
115988
+ if ((!handler && currentIntervals.length > 0) || this._selectionIntervals.length > 0)
115989
+ announcments.push(...this._processExtendSelectionCommand(currentIntervals));
115990
+ if (announcments.length > 0)
115991
+ this._announce(...announcments);
115992
+ }
115993
+ this._selectionIntervals = currentIntervals;
115994
+ }
115995
+ _processTable(tableInfo) {
115996
+ const result = [];
115997
+ if (!tableInfo.table) {
115998
+ if (this._tableInfo) {
115999
+ result.push(getString("OutOfTableAnnouncement"));
116000
+ this._tableInfo = null;
116001
+ }
116002
+ return result;
116003
+ }
116004
+ const extendedData = tableInfo.extendedData;
116005
+ const tableCellGridInfos = tableInfo.gridInfoManager.tableCellGridInfos;
116006
+ const cellGridInfo = tableInfo.gridInfoManager.gridInfosByTablePosition(new TablePositionIndexes(extendedData.firstRowInfo.rowIndex, extendedData.firstCellInfo.cellIndex));
116007
+ const colIndex = cellGridInfo.getGridCellIndex();
116008
+ const rowIndex = cellGridInfo.getStartRowIndex();
116009
+ const currentTableInfo = new screen_reader_manager_TableInfo(tableInfo.table.index, colIndex, rowIndex);
116010
+ if (!this._tableInfo || this._tableInfo.index !== currentTableInfo.index)
116011
+ result.push(getString("InTableAnnouncement", tableCellGridInfos.length, tableCellGridInfos[0].length));
116012
+ if (!this._tableInfo || this._tableInfo.rowIndex !== currentTableInfo.rowIndex)
116013
+ result.push(getString("TableRowAnnouncement", rowIndex + 1));
116014
+ if (!this._tableInfo || this._tableInfo.columnIndex !== currentTableInfo.columnIndex)
116015
+ result.push(getString("TableColumnAnnouncement", colIndex + 1));
116016
+ this._tableInfo = currentTableInfo;
116017
+ return result;
116018
+ }
116019
+ _processExtendSelectionCommand(intervals) {
116020
+ let announcments = [];
116021
+ if (this._commandId === RichEditClientCommand.SelectAll)
116022
+ announcments.push(getString("SelectAllAnnouncement"), "\n");
116023
+ const selectedIntervals = IntervalUtils.subtractIntervals(intervals, this._selectionIntervals);
116024
+ if (selectedIntervals.length > 0)
116025
+ announcments.push(getString("TextSelectedAnnouncement", this._getTextByIntervals(selectedIntervals)));
116026
+ const unselectedIntervals = IntervalUtils.subtractIntervals(this._selectionIntervals, intervals);
116027
+ if (unselectedIntervals.length > 0)
116028
+ announcments.push(getString("TextUnselectedAnnouncement", this._getTextByIntervals(unselectedIntervals)));
116029
+ return announcments;
116030
+ }
116031
+ _getTextByIntervals(intervals) {
116032
+ const length = intervals.reduce((total, interval) => total + interval.length, 0);
116033
+ if (length > ScreenReaderManager._maxAnnouncedTextLength)
116034
+ return `${length} characters`;
116035
+ const subDocument = this._control.selection.activeSubDocument;
116036
+ return intervals.map(i => subDocument.getVisibleText(i, {
116037
+ includeNumberedListMarks: true,
116038
+ charMap: ScreenReaderManager._specialCharSubstitutionTable
116039
+ })).join('');
116040
+ }
116041
+ _updateHyperlinkState(lp) {
116042
+ this._prevNavInHyperlink = lp.box?.hyperlinkTip != null;
116043
+ }
116044
+ _getLinkTransitionPrefix(lp) {
116045
+ const inHyperlink = lp.box?.hyperlinkTip != null;
116046
+ const prevInHyperlink = this._prevNavInHyperlink;
116047
+ if (inHyperlink && !prevInHyperlink)
116048
+ return getString("LinkAnnouncement");
116049
+ if (!inHyperlink && prevInHyperlink)
116050
+ return getString("OutOfLinkAnnouncement");
116051
+ return null;
116052
+ }
116053
+ _getCurrentCharacterAnnouncement(selection, lp) {
116054
+ const pos = selection.intervals[0].start;
116055
+ const subDocument = selection.activeSubDocument;
116056
+ const info = subDocument.getRunAndIndexesByPosition(pos);
116057
+ if (info.run instanceof InlinePictureRun)
116058
+ return ScreenReaderManager._getInlinePictureText(info.run);
116059
+ const isFieldCodeStartRun = info.run.getType() === RunType.FieldCodeStartRun;
116060
+ const charInfo = isFieldCodeStartRun
116061
+ ? subDocument.getRunAndIndexesByPosition(lp.getLogPosition(DocumentLayoutDetailsLevel.Box))
116062
+ : info;
116063
+ const char = charInfo.getCurrentChar();
116064
+ let content = this._getCharName(char);
116065
+ return this._buildContextualAnnouncement(content, new SubDocumentPosition(subDocument, pos), lp);
116066
+ }
116067
+ _buildContextualAnnouncement(content, pos, lp) {
116068
+ const paragraph = pos.subDocument.getParagraphByPosition(pos.position);
116069
+ const linkPrefix = this._getLinkTransitionPrefix(lp);
116070
+ if (linkPrefix)
116071
+ content = `${linkPrefix} ${content}`;
116072
+ const listContent = this._getListItemAnnouncement(paragraph, pos.position, lp, content);
116073
+ return listContent ? listContent : content;
116074
+ }
116075
+ _getCurrentLineAnnouncement(selection, lp) {
116076
+ const pos = selection.intervals[0].start;
116077
+ const subDocument = selection.activeSubDocument;
116078
+ const rowStart = lp.getLogPosition(DocumentLayoutDetailsLevel.Row);
116079
+ const rowEnd = rowStart + lp.row.getLastBoxEndPositionInRow();
116080
+ const intervalStart = rowStart;
116081
+ const text = this._getVisibleText(subDocument, fixed.FixedInterval.fromPositions(intervalStart, rowEnd));
116082
+ const listMarker = lp.row.numberingListBox
116083
+ ? this._resolveListMarker(subDocument.getParagraphByPosition(pos))
116084
+ : null;
116085
+ return listMarker ? `${listMarker} ${text}`.trim() : text;
116086
+ }
116087
+ _getCurrentWordAnnouncement(selection, lp) {
116088
+ const pos = selection.intervals[0].start;
116089
+ const subDocument = selection.activeSubDocument;
116090
+ const wordEnd = LayoutWordBounds.getLayoutWordEndBound(this._control.layout, subDocument, selection, pos, false);
116091
+ let text = subDocument.getVisibleText(fixed.FixedInterval.fromPositions(pos, wordEnd), {
116092
+ inlinePictureAltText: ScreenReaderManager._getInlinePictureText,
116093
+ charMap: ScreenReaderManager._specialCharSubstitutionTable
116094
+ });
116095
+ return this._buildContextualAnnouncement(text, new SubDocumentPosition(subDocument, pos), lp);
116096
+ }
116097
+ _getCurrentParagraphAnnouncement(selection, _lp) {
116098
+ const pos = selection.intervals[0].start;
116099
+ const subDocument = selection.activeSubDocument;
116100
+ const paragraph = subDocument.getParagraphByPosition(pos);
116101
+ const text = this._getVisibleText(subDocument, fixed.FixedInterval.fromPositions(paragraph.startLogPosition.value, paragraph.getEndPosition()), true);
116102
+ return text;
116103
+ }
116104
+ _getHyperlinkField(fieldIndexes, _subDocument) {
116105
+ return fieldIndexes
116106
+ .map(index => _subDocument.fields[index])
116107
+ .find(field => field.isHyperlinkField());
116108
+ }
116109
+ _onHyperlinkFieldStart(fieldIndexes, subDocument, pos) {
116110
+ const field = this._getHyperlinkField(fieldIndexes, subDocument);
116111
+ return field && pos === field.getResultStartPosition() ? ` ${getString("LinkAnnouncement")} ` : null;
116112
+ }
116113
+ _getVisibleText(subDocument, interval, includeNumberedListMarks = false) {
116114
+ const result = subDocument.getVisibleText(interval, {
116115
+ includeNumberedListMarks,
116116
+ inlinePictureAltText: ScreenReaderManager._getInlinePictureText,
116117
+ charMap: ScreenReaderManager._specialCharSubstitutionTable,
116118
+ resolveAdditionalText: (fieldIndexes, pos) => this._onHyperlinkFieldStart(fieldIndexes, subDocument, pos)
116119
+ });
116120
+ return result === RichUtils.specialCharacters.ParagraphMark
116121
+ ? getString("BlankAnnouncement")
116122
+ : result;
116123
+ }
116124
+ static _getInlinePictureText(run) {
116125
+ const nonVisualProps = run.info.nonVisualDrawingProperties;
116126
+ return getString("PictureAnnouncement", nonVisualProps.description ?? nonVisualProps.name ?? '');
116127
+ }
116128
+ _getPageChangePrefix(pageIndex) {
116129
+ if (this._pageIndex === null) {
116130
+ this._pageIndex = pageIndex;
116131
+ return '';
116132
+ }
116133
+ if (pageIndex !== this._pageIndex) {
116134
+ this._pageIndex = pageIndex;
116135
+ return getString("PageAnnouncement", pageIndex + 1);
116136
+ }
116137
+ return '';
116138
+ }
116139
+ _getCharName(char) {
116140
+ if (char in this._charNames)
116141
+ return this._charNames[char];
116142
+ return ScreenReaderManager._spaceSeparatorRegex.test(char) ? getString("SpaceAnnouncement") : char;
116143
+ }
116144
+ _resolveListMarker(paragraph) {
116145
+ const levelIndex = paragraph.getListLevelIndex();
116146
+ const levelType = paragraph.getNumberingList().getLevelType(levelIndex);
116147
+ if (levelType === NumberingType.Bullet)
116148
+ return getString("BulletAnnouncement");
116149
+ return paragraph.getNumberingListText();
116150
+ }
116151
+ _getListItemAnnouncement(paragraph, pos, lp, content) {
116152
+ if (!paragraph.isInList() || pos !== paragraph.startLogPosition.value || !lp?.row?.numberingListBox)
116153
+ return null;
116154
+ const level = paragraph.getListLevelIndex() + 1;
116155
+ const listMarker = this._resolveListMarker(paragraph);
116156
+ return `${getString("ListItemAnnouncement", level, listMarker)} ${content}`;
116157
+ }
116158
+ dispose() {
116159
+ this._clearAnnouncement();
116160
+ this._liveRegion.remove();
116161
+ }
116162
+ }
116163
+ const stringCache = {};
116164
+ function createFormatter(template) {
116165
+ const tokens = [];
116166
+ let lastIndex = 0;
116167
+ template.replace(/\{(\d+)\}/g, (match, p1, offset) => {
116168
+ if (lastIndex < offset)
116169
+ tokens.push(template.slice(lastIndex, offset));
116170
+ tokens.push(Number(p1));
116171
+ lastIndex = offset + match.length;
116172
+ return match;
116173
+ });
116174
+ if (lastIndex < template.length)
116175
+ tokens.push(template.slice(lastIndex));
116176
+ return (args) => {
116177
+ let result = '';
116178
+ for (const token of tokens) {
116179
+ if (typeof token === 'string')
116180
+ result += token;
116181
+ else {
116182
+ const value = args[token];
116183
+ result += value ?? '';
116184
+ }
116185
+ }
116186
+ return result;
116187
+ };
116188
+ }
116189
+ function getString(key, ...args) {
116190
+ let entry = stringCache[key];
116191
+ if (!entry) {
116192
+ const str = (0,external_DevExpress_localization_namespaceObject.formatMessage)(`AspNetCoreRichEditStringId.${key}`);
116193
+ entry = args.length > 0 ? createFormatter(str) : str;
116194
+ stringCache[key] = entry;
116195
+ }
116196
+ if (typeof entry === "function")
116197
+ return entry(args);
116198
+ return entry;
116199
+ }
116200
+
115818
116201
  ;// ./src/common/rich-edit-core.ts
115819
116202
 
115820
116203
 
@@ -115860,6 +116243,7 @@ class SearchManager {
115860
116243
 
115861
116244
 
115862
116245
 
116246
+
115863
116247
 
115864
116248
 
115865
116249
  class RichEditCore {
@@ -115902,6 +116286,7 @@ class RichEditCore {
115902
116286
  this.commandManager = this.createCommandManager();
115903
116287
  this.shortcutManager = this.createShortcutManager();
115904
116288
  this.searchManager = new SearchManager(this);
116289
+ this.screenReaderManager = new ScreenReaderManager(this, this.createAriaLiveElement(element));
115905
116290
  this.boxVisualizerManager.initListeners(this.viewManager);
115906
116291
  this.autoCorrectService = new AutoCorrectService(this, this.modelManager.richOptions.autoCorrect);
115907
116292
  this.clientSideEvents = new ClientSideEvents(this.owner);
@@ -115960,6 +116345,7 @@ class RichEditCore {
115960
116345
  this.selection.onChanged.add(this.boxVisualizerManager.resizeBoxVisualizer);
115961
116346
  this.selection.onChanged.add(this.boxVisualizerManager.anchorVisualizer);
115962
116347
  this.selection.onChanged.add(this.barHolder.contextMenu);
116348
+ this.selection.onChanged.add(this.screenReaderManager);
115963
116349
  if (this.barHolder.ribbon)
115964
116350
  this.selection.onChanged.add(this.barHolder.ribbon);
115965
116351
  this.selection.onSearchChanged.add(this.selectionFormatter);
@@ -116009,6 +116395,7 @@ class RichEditCore {
116009
116395
  this.spellChecker.dispose();
116010
116396
  this.selection.dispose();
116011
116397
  this.barHolder.dispose?.();
116398
+ this.screenReaderManager.dispose?.();
116012
116399
  this.modelManager = null;
116013
116400
  this.commandManager = null;
116014
116401
  this.shortcutManager = null;
@@ -116219,6 +116606,20 @@ class RichEditCore {
116219
116606
  this.layoutFormatterManager.forceFormatPage(this.layout.validPageCount + 1);
116220
116607
  }
116221
116608
  }
116609
+ createAriaLiveElement(element) {
116610
+ const ariaLiveElement = document.createElement("DIV");
116611
+ ariaLiveElement.setAttribute('aria-live', 'polite');
116612
+ ariaLiveElement.setAttribute('aria-atomic', 'true');
116613
+ ariaLiveElement.style.position = 'absolute';
116614
+ ariaLiveElement.style.width = '1px';
116615
+ ariaLiveElement.style.height = '1px';
116616
+ ariaLiveElement.style.overflow = 'hidden';
116617
+ ariaLiveElement.style.whiteSpace = 'nowrap';
116618
+ ariaLiveElement.style.border = '0';
116619
+ ariaLiveElement.style.whiteSpace = 'pre-line';
116620
+ element.appendChild(ariaLiveElement);
116621
+ return ariaLiveElement;
116622
+ }
116222
116623
  createViewElement(id, element) {
116223
116624
  const viewElement = document.createElement("DIV");
116224
116625
  viewElement.id = id + "_View";
@@ -119568,7 +119969,11 @@ class Utils {
119568
119969
  static getTrimmedMessage(id) {
119569
119970
  const message = (0,external_DevExpress_localization_namespaceObject.formatMessage)(id);
119570
119971
  const trimmedFromEnd = utils_string.StringUtils.trimEnd(message, ['\\.']);
119571
- return trimmedFromEnd.replace(/&&|&/g, match => (match === "&&" ? "&" : ""));
119972
+ return trimmedFromEnd
119973
+ .replace(/&&/g, '\u0000')
119974
+ .replace(/(\S)&/g, "$1")
119975
+ .replace(/&(\S)/g, "$1")
119976
+ .replace(/\u0000/g, '&');
119572
119977
  }
119573
119978
  }
119574
119979
  class TypeConverterFactory {
@@ -120101,9 +120506,9 @@ function loadDefaultMessages() {
120101
120506
  "XtraRichEditStringId.Caption_FollowingParagraphText": "Following Paragraph ",
120102
120507
  "XtraRichEditStringId.Caption_GroupTableAlignment": "Alignment",
120103
120508
  "XtraRichEditStringId.Caption_GroupTableCellSize": "Cell Size",
120104
- "XtraRichEditStringId.Caption_GroupTableDrawBorders": "Borders && Shadings",
120509
+ "XtraRichEditStringId.Caption_GroupTableDrawBorders": "Borders & Shadings",
120105
120510
  "XtraRichEditStringId.Caption_GroupTableMerge": "Merge",
120106
- "XtraRichEditStringId.Caption_GroupTableRowsAndColumns": "Rows && Columns",
120511
+ "XtraRichEditStringId.Caption_GroupTableRowsAndColumns": "Rows & Columns",
120107
120512
  "XtraRichEditStringId.Caption_GroupTableStyleOptions": "Table Style Options",
120108
120513
  "XtraRichEditStringId.Caption_GroupTableStyles": "Table Styles",
120109
120514
  "XtraRichEditStringId.Caption_GroupTableTable": "Table",
@@ -121601,7 +122006,7 @@ function loadDefaultMessages() {
121601
122006
  "ASPxRichEditStringId.PageMailings": "Mail Merge",
121602
122007
  "ASPxRichEditStringId.PageReview": "Review",
121603
122008
  "ASPxRichEditStringId.PageView": "View",
121604
- "ASPxRichEditStringId.PageHeaderAndFooter": "Header && Footer",
122009
+ "ASPxRichEditStringId.PageHeaderAndFooter": "Header & Footer",
121605
122010
  "ASPxRichEditStringId.PageTableDesign": "Design",
121606
122011
  "ASPxRichEditStringId.PageTableLayout": "Layout",
121607
122012
  "ASPxRichEditStringId.PageFloatingObjects": "Format",
@@ -121620,7 +122025,7 @@ function loadDefaultMessages() {
121620
122025
  "ASPxRichEditStringId.GroupSymbols": "Symbols",
121621
122026
  "ASPxRichEditStringId.GroupLinks": "Links",
121622
122027
  "ASPxRichEditStringId.GroupPages": "Pages",
121623
- "ASPxRichEditStringId.GroupHeaderFooter": "Header && Footer",
122028
+ "ASPxRichEditStringId.GroupHeaderFooter": "Header & Footer",
121624
122029
  "ASPxRichEditStringId.GroupHeaderFooterToolsDesignClose": "Close",
121625
122030
  "ASPxRichEditStringId.GroupHeaderFooterToolsDesignNavigation": "Navigation",
121626
122031
  "ASPxRichEditStringId.GroupMailMerge": "Mail Merge",
@@ -121645,9 +122050,9 @@ function loadDefaultMessages() {
121645
122050
  "ASPxRichEditStringId.GroupView": "View",
121646
122051
  "ASPxRichEditStringId.GroupTableToolsDesignTableStyleOptions": "Table Style Options",
121647
122052
  "ASPxRichEditStringId.GroupTableToolsDesignTableStyles": "Table Styles",
121648
- "ASPxRichEditStringId.GroupTableToolsDesignBordersAndShadings": "Borders && Shadings",
122053
+ "ASPxRichEditStringId.GroupTableToolsDesignBordersAndShadings": "Borders & Shadings",
121649
122054
  "ASPxRichEditStringId.GroupTableToolsLayoutTable": "Table",
121650
- "ASPxRichEditStringId.GroupTableToolsLayoutRowsAndColumns": "Rows && Columns",
122055
+ "ASPxRichEditStringId.GroupTableToolsLayoutRowsAndColumns": "Rows & Columns",
121651
122056
  "ASPxRichEditStringId.GroupTableToolsLayoutMerge": "Merge",
121652
122057
  "ASPxRichEditStringId.GroupTableToolsLayoutCellSize": "Cell Size",
121653
122058
  "ASPxRichEditStringId.GroupTableToolsLayoutAlignment": "Alignment",
@@ -122040,7 +122445,7 @@ function loadDefaultMessages() {
122040
122445
  "RichEditExtensionsStringId.Caption_GroupFloatingPictureToolsArrange": "Arrange",
122041
122446
  "RichEditExtensionsStringId.Caption_GroupFloatingPictureToolsShapeStyles": "Shape Styles",
122042
122447
  "RichEditExtensionsStringId.Caption_GroupFont": "Font",
122043
- "RichEditExtensionsStringId.Caption_GroupHeaderFooter": "Header && Footer",
122448
+ "RichEditExtensionsStringId.Caption_GroupHeaderFooter": "Header & Footer",
122044
122449
  "RichEditExtensionsStringId.Caption_GroupHeaderFooterToolsDesignClose": "Close",
122045
122450
  "RichEditExtensionsStringId.Caption_GroupHeaderFooterToolsDesignNavigation": "Navigation",
122046
122451
  "RichEditExtensionsStringId.Caption_GroupHeaderFooterToolsDesignOptions": "Options",
@@ -122080,6 +122485,24 @@ function loadDefaultMessages() {
122080
122485
  "ASPxRichEditStringId.Download_RichTextFormat": "Rich Text Format (*.rtf)",
122081
122486
  "ASPxRichEditStringId.Download_PlainText": "Plain Text (*.txt)",
122082
122487
  "ASPxRichEditStringId.Download_Html": "Html Document (*.html, *.htm)",
122488
+ "AspNetCoreRichEditStringId.InTableAnnouncement": "table with {0} rows and {1} columns",
122489
+ "AspNetCoreRichEditStringId.OutOfTableAnnouncement": "out of table",
122490
+ "AspNetCoreRichEditStringId.TableRowAnnouncement": "row {0}",
122491
+ "AspNetCoreRichEditStringId.TableColumnAnnouncement": "column {0}",
122492
+ "AspNetCoreRichEditStringId.SelectAllAnnouncement": "select all",
122493
+ "AspNetCoreRichEditStringId.TextSelectedAnnouncement": "{0} selected",
122494
+ "AspNetCoreRichEditStringId.TextUnselectedAnnouncement": "{0} unselected",
122495
+ "AspNetCoreRichEditStringId.PictureAnnouncement": "graphic {0}",
122496
+ "AspNetCoreRichEditStringId.PageAnnouncement": "page {0}",
122497
+ "AspNetCoreRichEditStringId.SpaceAnnouncement": "space",
122498
+ "AspNetCoreRichEditStringId.BulletAnnouncement": "bullet",
122499
+ "AspNetCoreRichEditStringId.ListItemAnnouncement": "list item level {0} {1}",
122500
+ "AspNetCoreRichEditStringId.TabAnnouncement": "tab",
122501
+ "AspNetCoreRichEditStringId.CarriageReturnAnnouncement": "carriage return",
122502
+ "AspNetCoreRichEditStringId.LineBreakAnnouncement": "line break",
122503
+ "AspNetCoreRichEditStringId.LinkAnnouncement": "link",
122504
+ "AspNetCoreRichEditStringId.OutOfLinkAnnouncement": "out of link",
122505
+ "AspNetCoreRichEditStringId.BlankAnnouncement": "blank",
122083
122506
  }
122084
122507
  });
122085
122508
  }
@@ -130428,7 +130851,8 @@ class ChangeViewTypeCommand extends CommandBase {
130428
130851
  return true;
130429
130852
  }
130430
130853
  executeCore(_state, options) {
130431
- if (this.control.innerClientProperties.viewsSettings.viewType != options.param) {
130854
+ const currentViewType = this.control.innerClientProperties.viewsSettings.viewType;
130855
+ if (currentViewType != options.param) {
130432
130856
  if (this.selection.activeSubDocument.isHeaderFooter())
130433
130857
  this.control.commandManager.getCommand(RichEditClientCommand.ChangeActiveSubDocumentToMain)
130434
130858
  .execute(this.control.commandManager.isPublicApiCall, new CommandOptions(this.control));
@@ -132606,6 +133030,14 @@ class SelectionCommandBase extends CommandBase {
132606
133030
  selection.deprecatedSetSelection(pos, pos, false, -1, true);
132607
133031
  return true;
132608
133032
  }
133033
+ beforeExecute() {
133034
+ super.beforeExecute();
133035
+ this.control.screenReaderManager.beginExecute(this.commandId);
133036
+ }
133037
+ afterExecute() {
133038
+ super.afterExecute();
133039
+ this.control.screenReaderManager.endExecute();
133040
+ }
132609
133041
  }
132610
133042
 
132611
133043
  ;// ./src/common/commands/selection/go-to-line-vertically-command-base.ts
@@ -133377,18 +133809,11 @@ class ExtendGoToNextPageCommand extends GoToNextPageCommandBase {
133377
133809
 
133378
133810
 
133379
133811
 
133380
-
133381
- class GoToNextWordCommandBase extends CommandBase {
133382
- getState() {
133383
- return new SimpleCommandState(this.isEnabled());
133384
- }
133812
+ class GoToNextWordCommandBase extends SelectionCommandBase {
133385
133813
  getStartPosition() {
133386
133814
  var selection = this.selection;
133387
133815
  return selection.forwardDirection ? selection.lastSelectedInterval.end : selection.lastSelectedInterval.start;
133388
133816
  }
133389
- isEnabledInReadOnlyMode() {
133390
- return true;
133391
- }
133392
133817
  }
133393
133818
  class GoToNextWordCommand extends GoToNextWordCommandBase {
133394
133819
  executeCore(_state, _options) {
@@ -133716,7 +134141,7 @@ class ExtendGoToPrevPageCommand extends GoToPrevPageCommandBase {
133716
134141
 
133717
134142
 
133718
134143
 
133719
- class GoToPrevWordCommandBase extends CommandBase {
134144
+ class GoToPrevWordCommandBase extends SelectionCommandBase {
133720
134145
  getState() {
133721
134146
  return new SimpleCommandState(this.isEnabled());
133722
134147
  }
@@ -133838,6 +134263,12 @@ class SelectAllDocumentCommand extends CommandBase {
133838
134263
  this.control.focusManager.captureFocus();
133839
134264
  return true;
133840
134265
  }
134266
+ beforeExecute() {
134267
+ this.control.screenReaderManager.beginExecute(this.commandId);
134268
+ }
134269
+ afterExecute() {
134270
+ this.control.screenReaderManager.endExecute();
134271
+ }
133841
134272
  isEnabledInReadOnlyMode() {
133842
134273
  return true;
133843
134274
  }
@@ -137830,6 +138261,12 @@ class CommandManager {
137830
138261
  getCommand(key) {
137831
138262
  return this.commands[key];
137832
138263
  }
138264
+ getExecutingCommandsChainDebug() {
138265
+ return this.executingCommandsChain.map(command => command?.constructor?.name || 'UnknownCommand');
138266
+ }
138267
+ getLastCommandsChainDebug() {
138268
+ return this.lastCommandsChain.map(command => command?.constructor?.name || 'UnknownCommand');
138269
+ }
137833
138270
  beforeExecuting(command) {
137834
138271
  this.executingCommandsChain.push(command);
137835
138272
  this.executingCommandCounter++;
@@ -141621,8 +142058,8 @@ class DialogManager {
141621
142058
  ;// ./node_modules/devextreme/esm/__internal/core/localization/cldr-data/first_day_of_week_data.js
141622
142059
  /**
141623
142060
  * DevExtreme (esm/__internal/core/localization/cldr-data/first_day_of_week_data.js)
141624
- * Version: 25.2.7
141625
- * Build date: Tue May 05 2026
142061
+ * Version: 26.1.2-beta
142062
+ * Build date: Fri May 08 2026
141626
142063
  *
141627
142064
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
141628
142065
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -141821,8 +142258,8 @@ class DialogManager {
141821
142258
  ;// ./node_modules/devextreme/esm/__internal/core/localization/cldr-data/parent_locales.js
141822
142259
  /**
141823
142260
  * DevExtreme (esm/__internal/core/localization/cldr-data/parent_locales.js)
141824
- * Version: 25.2.7
141825
- * Build date: Tue May 05 2026
142261
+ * Version: 26.1.2-beta
142262
+ * Build date: Fri May 08 2026
141826
142263
  *
141827
142264
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
141828
142265
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -142007,8 +142444,8 @@ class DialogManager {
142007
142444
  ;// ./node_modules/devextreme/esm/__internal/core/localization/parentLocale.js
142008
142445
  /**
142009
142446
  * DevExtreme (esm/__internal/core/localization/parentLocale.js)
142010
- * Version: 25.2.7
142011
- * Build date: Tue May 05 2026
142447
+ * Version: 26.1.2-beta
142448
+ * Build date: Fri May 08 2026
142012
142449
  *
142013
142450
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
142014
142451
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -142025,8 +142462,8 @@ const PARENT_LOCALE_SEPARATOR = "-";
142025
142462
  ;// ./node_modules/devextreme/esm/__internal/core/utils/m_type.js
142026
142463
  /**
142027
142464
  * DevExtreme (esm/__internal/core/utils/m_type.js)
142028
- * Version: 25.2.7
142029
- * Build date: Tue May 05 2026
142465
+ * Version: 26.1.2-beta
142466
+ * Build date: Fri May 08 2026
142030
142467
  *
142031
142468
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
142032
142469
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -142128,8 +142565,8 @@ const isEvent = function(object) {
142128
142565
  ;// ./node_modules/devextreme/esm/core/utils/type.js
142129
142566
  /**
142130
142567
  * DevExtreme (esm/core/utils/type.js)
142131
- * Version: 25.2.7
142132
- * Build date: Tue May 05 2026
142568
+ * Version: 26.1.2-beta
142569
+ * Build date: Fri May 08 2026
142133
142570
  *
142134
142571
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
142135
142572
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -142139,8 +142576,8 @@ const isEvent = function(object) {
142139
142576
  ;// ./node_modules/devextreme/esm/__internal/core/utils/m_extend.js
142140
142577
  /**
142141
142578
  * DevExtreme (esm/__internal/core/utils/m_extend.js)
142142
- * Version: 25.2.7
142143
- * Build date: Tue May 05 2026
142579
+ * Version: 26.1.2-beta
142580
+ * Build date: Fri May 08 2026
142144
142581
  *
142145
142582
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
142146
142583
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -142198,8 +142635,8 @@ const extend = function(target) {
142198
142635
  ;// ./node_modules/devextreme/esm/core/utils/extend.js
142199
142636
  /**
142200
142637
  * DevExtreme (esm/core/utils/extend.js)
142201
- * Version: 25.2.7
142202
- * Build date: Tue May 05 2026
142638
+ * Version: 26.1.2-beta
142639
+ * Build date: Fri May 08 2026
142203
142640
  *
142204
142641
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
142205
142642
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -142209,8 +142646,8 @@ const extend = function(target) {
142209
142646
  ;// ./node_modules/devextreme/esm/__internal/core/utils/m_string.js
142210
142647
  /**
142211
142648
  * DevExtreme (esm/__internal/core/utils/m_string.js)
142212
- * Version: 25.2.7
142213
- * Build date: Tue May 05 2026
142649
+ * Version: 26.1.2-beta
142650
+ * Build date: Fri May 08 2026
142214
142651
  *
142215
142652
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
142216
142653
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -142285,8 +142722,8 @@ const isEmpty = function() {
142285
142722
  ;// ./node_modules/devextreme/esm/core/utils/string.js
142286
142723
  /**
142287
142724
  * DevExtreme (esm/core/utils/string.js)
142288
- * Version: 25.2.7
142289
- * Build date: Tue May 05 2026
142725
+ * Version: 26.1.2-beta
142726
+ * Build date: Fri May 08 2026
142290
142727
  *
142291
142728
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
142292
142729
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -142296,20 +142733,20 @@ const isEmpty = function() {
142296
142733
  ;// ./node_modules/devextreme/esm/core/version.js
142297
142734
  /**
142298
142735
  * DevExtreme (esm/core/version.js)
142299
- * Version: 25.2.7
142300
- * Build date: Tue May 05 2026
142736
+ * Version: 26.1.2-beta
142737
+ * Build date: Fri May 08 2026
142301
142738
  *
142302
142739
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
142303
142740
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
142304
142741
  */
142305
- const version = "25.2.7";
142306
- const fullVersion = "25.2.7";
142742
+ const version = "26.1.2";
142743
+ const fullVersion = "26.1.2";
142307
142744
 
142308
142745
  ;// ./node_modules/devextreme/esm/__internal/core/utils/m_console.js
142309
142746
  /**
142310
142747
  * DevExtreme (esm/__internal/core/utils/m_console.js)
142311
- * Version: 25.2.7
142312
- * Build date: Tue May 05 2026
142748
+ * Version: 26.1.2-beta
142749
+ * Build date: Fri May 08 2026
142313
142750
  *
142314
142751
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
142315
142752
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -142349,8 +142786,8 @@ const debug = function() {
142349
142786
  ;// ./node_modules/devextreme/esm/__internal/core/utils/m_error.js
142350
142787
  /**
142351
142788
  * DevExtreme (esm/__internal/core/utils/m_error.js)
142352
- * Version: 25.2.7
142353
- * Build date: Tue May 05 2026
142789
+ * Version: 26.1.2-beta
142790
+ * Build date: Fri May 08 2026
142354
142791
  *
142355
142792
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
142356
142793
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -142421,8 +142858,8 @@ function error(baseErrors, errors) {
142421
142858
  ;// ./node_modules/devextreme/esm/core/utils/error.js
142422
142859
  /**
142423
142860
  * DevExtreme (esm/core/utils/error.js)
142424
- * Version: 25.2.7
142425
- * Build date: Tue May 05 2026
142861
+ * Version: 26.1.2-beta
142862
+ * Build date: Fri May 08 2026
142426
142863
  *
142427
142864
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
142428
142865
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -142433,8 +142870,8 @@ function error(baseErrors, errors) {
142433
142870
  ;// ./node_modules/devextreme/esm/__internal/core/m_errors.js
142434
142871
  /**
142435
142872
  * DevExtreme (esm/__internal/core/m_errors.js)
142436
- * Version: 25.2.7
142437
- * Build date: Tue May 05 2026
142873
+ * Version: 26.1.2-beta
142874
+ * Build date: Fri May 08 2026
142438
142875
  *
142439
142876
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
142440
142877
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -142494,16 +142931,14 @@ function error(baseErrors, errors) {
142494
142931
  W0019: "DevExtreme: Unable to Locate a Valid License Key.\n\nDetailed license/registration related information and instructions: https://js.devexpress.com/Documentation/Licensing/.\n\nIf you are using a 30-day trial version of DevExtreme, you must uninstall all copies of DevExtreme once your 30-day trial period expires. For terms and conditions that govern use of DevExtreme UI components/libraries, please refer to the DevExtreme End User License Agreement: https://js.devexpress.com/EULAs/DevExtremeComplete.\n\nTo use DevExtreme in a commercial project, you must purchase a license. For pricing/licensing options, please visit: https://js.devexpress.com/Buy.\n\nIf you have licensing-related questions or need help with a purchase, please email clientservices@devexpress.com.\n\n",
142495
142932
  W0020: "DevExtreme: License Key Has Expired.\n\nDetailed license/registration related information and instructions: https://js.devexpress.com/Documentation/Licensing/.\n\nA mismatch exists between the license key used and the DevExtreme version referenced in this project.\n\nTo proceed, you can:\n\u2022 use a version of DevExtreme linked to your license key: https://www.devexpress.com/ClientCenter/DownloadManager\n\u2022 renew your DevExpress Subscription: https://www.devexpress.com/buy/renew (once you renew your subscription, you will be entitled to product updates and support service as defined in the DevExtreme End User License Agreement)\n\nIf you have licensing-related questions or need help with a renewal, please email clientservices@devexpress.com.\n\n",
142496
142933
  W0021: "DevExtreme: License Key Verification Has Failed.\n\nDetailed license/registration related information and instructions: https://js.devexpress.com/Documentation/Licensing/.\n\nTo verify your DevExtreme license, make certain to specify a correct key in the GlobalConfig. If you continue to encounter this error, please visit https://www.devexpress.com/ClientCenter/DownloadManager to obtain a valid license key.\n\nIf you have a valid license and this problem persists, please submit a support ticket via the DevExpress Support Center. We will be happy to follow-up: https://supportcenter.devexpress.com/ticket/create.\n\n",
142497
- W0022: "DevExtreme: Pre-release software. Not suitable for commercial use.\n\nDetailed license/registration related information and instructions: https://js.devexpress.com/Documentation/Licensing/.\n\nPre-release software may contain deficiencies and as such, should not be considered for use or integrated in any mission critical application.\n\n",
142498
- W0023: "DevExtreme: the following 'devextreme' package version does not match versions of other DevExpress products used in this application:\n\n{0}\n\nInteroperability between different versions of the products listed herein cannot be guaranteed.\n\n",
142499
- W0024: "DevExtreme: Use Your DevExtreme License Key - Not Your DevExpress .NET License Key\n\nInvalid/incorrect license key. You used your DevExpress .NET license key instead of your DevExtreme (React, Angular, Vue, JS) license key. Please copy your DevExtreme license key and try again. \n\nGo to https://www.devexpress.com/ClientCenter/DownloadManager (navigate to the DevExtreme Subscription section) to obtain a valid DevExtreme license key. To validate your license, specify the correct key within GlobalConfig.\n\nFor detailed license/registration information, visit https://js.devexpress.com/Documentation/Licensing/.\n\nIf you have a valid license and the issue persists, submit a support ticket via the DevExpress Support Center. We will be happy to follow-up: https://supportcenter.devexpress.com/ticket/create.\n\n"
142934
+ W0023: "DevExtreme: the following 'devextreme' package version does not match versions of other DevExpress products used in this application:\n\n{0}\n\nInteroperability between different versions of the products listed herein cannot be guaranteed.\n\n"
142500
142935
  }));
142501
142936
 
142502
142937
  ;// ./node_modules/devextreme/esm/core/errors.js
142503
142938
  /**
142504
142939
  * DevExtreme (esm/core/errors.js)
142505
- * Version: 25.2.7
142506
- * Build date: Tue May 05 2026
142940
+ * Version: 26.1.2-beta
142941
+ * Build date: Fri May 08 2026
142507
142942
  *
142508
142943
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
142509
142944
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -142514,8 +142949,8 @@ function error(baseErrors, errors) {
142514
142949
  ;// ./node_modules/devextreme/esm/__internal/core/m_class.js
142515
142950
  /**
142516
142951
  * DevExtreme (esm/__internal/core/m_class.js)
142517
- * Version: 25.2.7
142518
- * Build date: Tue May 05 2026
142952
+ * Version: 26.1.2-beta
142953
+ * Build date: Fri May 08 2026
142519
142954
  *
142520
142955
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
142521
142956
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -142648,8 +143083,8 @@ classImpl.abstract = m_class_abstract;
142648
143083
  ;// ./node_modules/devextreme/esm/core/class.js
142649
143084
  /**
142650
143085
  * DevExtreme (esm/core/class.js)
142651
- * Version: 25.2.7
142652
- * Build date: Tue May 05 2026
143086
+ * Version: 26.1.2-beta
143087
+ * Build date: Fri May 08 2026
142653
143088
  *
142654
143089
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
142655
143090
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -142660,8 +143095,8 @@ classImpl.abstract = m_class_abstract;
142660
143095
  ;// ./node_modules/devextreme/esm/__internal/core/utils/m_iterator.js
142661
143096
  /**
142662
143097
  * DevExtreme (esm/__internal/core/utils/m_iterator.js)
142663
- * Version: 25.2.7
142664
- * Build date: Tue May 05 2026
143098
+ * Version: 26.1.2-beta
143099
+ * Build date: Fri May 08 2026
142665
143100
  *
142666
143101
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
142667
143102
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -142710,8 +143145,8 @@ const reverseEach = (array, callback) => {
142710
143145
  ;// ./node_modules/devextreme/esm/__internal/core/utils/m_dependency_injector.js
142711
143146
  /**
142712
143147
  * DevExtreme (esm/__internal/core/utils/m_dependency_injector.js)
142713
- * Version: 25.2.7
142714
- * Build date: Tue May 05 2026
143148
+ * Version: 26.1.2-beta
143149
+ * Build date: Fri May 08 2026
142715
143150
  *
142716
143151
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
142717
143152
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -142760,8 +143195,8 @@ function injector(object) {
142760
143195
  ;// ./node_modules/devextreme/esm/__internal/core/localization/core.js
142761
143196
  /**
142762
143197
  * DevExtreme (esm/__internal/core/localization/core.js)
142763
- * Version: 25.2.7
142764
- * Build date: Tue May 05 2026
143198
+ * Version: 26.1.2-beta
143199
+ * Build date: Fri May 08 2026
142765
143200
  *
142766
143201
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
142767
143202
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -142802,8 +143237,8 @@ const DEFAULT_LOCALE = "en";
142802
143237
  ;// ./node_modules/devextreme/esm/__internal/core/localization/default_date_names.js
142803
143238
  /**
142804
143239
  * DevExtreme (esm/__internal/core/localization/default_date_names.js)
142805
- * Version: 25.2.7
142806
- * Build date: Tue May 05 2026
143240
+ * Version: 26.1.2-beta
143241
+ * Build date: Fri May 08 2026
142807
143242
  *
142808
143243
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
142809
143244
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -142828,327 +143263,11 @@ const cutCaptions = (captions, format) => {
142828
143263
  getPeriodNames: _format => PERIODS
142829
143264
  });
142830
143265
 
142831
- ;// ./node_modules/devextreme/esm/__internal/core/localization/intl/date.js
142832
- /**
142833
- * DevExtreme (esm/__internal/core/localization/intl/date.js)
142834
- * Version: 25.2.7
142835
- * Build date: Tue May 05 2026
142836
- *
142837
- * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
142838
- * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
142839
- */
142840
-
142841
-
142842
- const SYMBOLS_TO_REMOVE_REGEX = /[\u200E\u200F]/g;
142843
- const NARROW_NO_BREAK_SPACE_REGEX = /[\u202F]/g;
142844
- const formattersCache = {};
142845
- const getFormatter = format => {
142846
- const key = `${core.locale()}/${JSON.stringify(format)}`;
142847
- if (!formattersCache[key]) {
142848
- formattersCache[key] = new Intl.DateTimeFormat(core.locale(), format).format
142849
- }
142850
- return formattersCache[key]
142851
- };
142852
-
142853
- function formatDateTime(date, format) {
142854
- return getFormatter(format)(date).replace(SYMBOLS_TO_REMOVE_REGEX, "").replace(NARROW_NO_BREAK_SPACE_REGEX, " ")
142855
- }
142856
- const getIntlFormatter = format => date => {
142857
- if (!format.timeZoneName) {
142858
- const year = date.getFullYear();
142859
- const recognizableAsTwentyCentury = String(year).length < 3;
142860
- const safeYearShift = 400;
142861
- const temporaryYearValue = recognizableAsTwentyCentury ? year + safeYearShift : year;
142862
- const utcDate = new Date(Date.UTC(temporaryYearValue, date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));
142863
- if (recognizableAsTwentyCentury) {
142864
- utcDate.setFullYear(year)
142865
- }
142866
- const utcFormat = extend({
142867
- timeZone: "UTC"
142868
- }, format);
142869
- return formatDateTime(utcDate, utcFormat)
142870
- }
142871
- return formatDateTime(date, format)
142872
- };
142873
- const formatNumber = number => new Intl.NumberFormat(core.locale()).format(number);
142874
- const getAlternativeNumeralsMap = (() => {
142875
- const numeralsMapCache = {};
142876
- return locale => {
142877
- if (!(locale in numeralsMapCache)) {
142878
- if ("0" === formatNumber(0)) {
142879
- numeralsMapCache[locale] = false;
142880
- return false
142881
- }
142882
- numeralsMapCache[locale] = {};
142883
- for (let i = 0; i < 10; ++i) {
142884
- numeralsMapCache[locale][formatNumber(i)] = i
142885
- }
142886
- }
142887
- return numeralsMapCache[locale]
142888
- }
142889
- })();
142890
- const normalizeNumerals = dateString => {
142891
- const alternativeNumeralsMap = getAlternativeNumeralsMap(core.locale());
142892
- if (!alternativeNumeralsMap) {
142893
- return dateString
142894
- }
142895
- return dateString.split("").map(sign => sign in alternativeNumeralsMap ? String(alternativeNumeralsMap[sign]) : sign).join("")
142896
- };
142897
- const removeLeadingZeroes = str => str.replace(/(\D)0+(\d)/g, "$1$2");
142898
- const dateStringEquals = (actual, expected) => removeLeadingZeroes(actual) === removeLeadingZeroes(expected);
142899
- const normalizeMonth = text => text.replace("d\u2019", "de ");
142900
- const intlFormats = {
142901
- day: {
142902
- day: "numeric"
142903
- },
142904
- date: {
142905
- year: "numeric",
142906
- month: "long",
142907
- day: "numeric"
142908
- },
142909
- dayofweek: {
142910
- weekday: "long"
142911
- },
142912
- longdate: {
142913
- weekday: "long",
142914
- year: "numeric",
142915
- month: "long",
142916
- day: "numeric"
142917
- },
142918
- longdatelongtime: {
142919
- weekday: "long",
142920
- year: "numeric",
142921
- month: "long",
142922
- day: "numeric",
142923
- hour: "numeric",
142924
- minute: "numeric",
142925
- second: "numeric"
142926
- },
142927
- longtime: {
142928
- hour: "numeric",
142929
- minute: "numeric",
142930
- second: "numeric"
142931
- },
142932
- month: {
142933
- month: "long"
142934
- },
142935
- monthandday: {
142936
- month: "long",
142937
- day: "numeric"
142938
- },
142939
- monthandyear: {
142940
- year: "numeric",
142941
- month: "long"
142942
- },
142943
- shortdate: {},
142944
- shorttime: {
142945
- hour: "numeric",
142946
- minute: "numeric"
142947
- },
142948
- shortyear: {
142949
- year: "2-digit"
142950
- },
142951
- year: {
142952
- year: "numeric"
142953
- }
142954
- };
142955
- Object.defineProperty(intlFormats, "shortdateshorttime", {
142956
- get() {
142957
- const defaultOptions = Intl.DateTimeFormat(core.locale()).resolvedOptions();
142958
- return {
142959
- year: defaultOptions.year,
142960
- month: defaultOptions.month,
142961
- day: defaultOptions.day,
142962
- hour: "numeric",
142963
- minute: "numeric"
142964
- }
142965
- }
142966
- });
142967
- const getIntlFormat = format => "string" === typeof format && intlFormats[format.toLowerCase()];
142968
- const monthNameStrategies = {
142969
- standalone(monthIndex, monthFormat) {
142970
- const date = new Date(1999, monthIndex, 13, 1);
142971
- return getIntlFormatter({
142972
- month: monthFormat
142973
- })(date)
142974
- },
142975
- format(monthIndex, monthFormat) {
142976
- const date = new Date(0, monthIndex, 13, 1);
142977
- const dateString = normalizeMonth(getIntlFormatter({
142978
- day: "numeric",
142979
- month: monthFormat
142980
- })(date));
142981
- const parts = dateString.split(" ").filter(part => !part.includes("13"));
142982
- if (1 === parts.length) {
142983
- return parts[0]
142984
- }
142985
- if (2 === parts.length) {
142986
- return parts[0].length > parts[1].length ? parts[0] : parts[1]
142987
- }
142988
- return monthNameStrategies.standalone(monthIndex, monthFormat)
142989
- }
142990
- };
142991
- /* harmony default export */ var date = ({
142992
- engine: () => "intl",
142993
- getMonthNames(format, type) {
142994
- const monthFormat = {
142995
- wide: "long",
142996
- abbreviated: "short",
142997
- narrow: "narrow"
142998
- } [format || "wide"];
142999
- type = "format" === type ? type : "standalone";
143000
- return Array.from({
143001
- length: 12
143002
- }, (_, monthIndex) => monthNameStrategies[type](monthIndex, monthFormat))
143003
- },
143004
- getDayNames: format => (format => Array.from({
143005
- length: 7
143006
- }, (_, dayIndex) => getIntlFormatter({
143007
- weekday: format
143008
- })(new Date(0, 0, dayIndex))))({
143009
- wide: "long",
143010
- abbreviated: "short",
143011
- short: "narrow",
143012
- narrow: "narrow"
143013
- } [format || "wide"]),
143014
- getPeriodNames() {
143015
- const hour12Formatter = getIntlFormatter({
143016
- hour: "numeric",
143017
- hour12: true
143018
- });
143019
- return [1, 13].map(hours => {
143020
- const hourNumberText = formatNumber(1);
143021
- const timeParts = hour12Formatter(new Date(0, 0, 1, hours)).split(hourNumberText);
143022
- if (2 !== timeParts.length) {
143023
- return ""
143024
- }
143025
- const biggerPart = timeParts[0].length > timeParts[1].length ? timeParts[0] : timeParts[1];
143026
- return biggerPart.trim()
143027
- })
143028
- },
143029
- format(date, format) {
143030
- if (!date) {
143031
- return
143032
- }
143033
- if (!format) {
143034
- return date
143035
- }
143036
- if ("function" !== typeof format && !format.formatter) {
143037
- format = format.type ?? format
143038
- }
143039
- const intlFormat = getIntlFormat(format);
143040
- if (intlFormat) {
143041
- return getIntlFormatter(intlFormat)(date)
143042
- }
143043
- const formatType = typeof format;
143044
- if (format.formatter || "function" === formatType || "string" === formatType) {
143045
- return this.callBase.apply(this, [date, format])
143046
- }
143047
- return getIntlFormatter(format)(date)
143048
- },
143049
- parse(dateString, format) {
143050
- let formatter;
143051
- if (format && !format.parser && "string" === typeof dateString) {
143052
- dateString = normalizeMonth(dateString);
143053
- formatter = date => normalizeMonth(this.format(date, format))
143054
- }
143055
- return this.callBase(dateString, formatter ?? format)
143056
- },
143057
- _parseDateBySimpleFormat(dateString, format) {
143058
- dateString = normalizeNumerals(dateString);
143059
- const formatParts = this.getFormatParts(format);
143060
- const dateParts = dateString.split(/\D+/).filter(part => part.length > 0);
143061
- if (formatParts.length !== dateParts.length) {
143062
- return
143063
- }
143064
- const dateArgs = this._generateDateArgs(formatParts, dateParts);
143065
- const constructValidDate = ampmShift => {
143066
- const parsedDate = ((dateArgs, ampmShift) => {
143067
- const hoursShift = ampmShift ? 12 : 0;
143068
- return new Date(dateArgs.year, dateArgs.month, dateArgs.day, (dateArgs.hours + hoursShift) % 24, dateArgs.minutes, dateArgs.seconds)
143069
- })(dateArgs, ampmShift);
143070
- if (dateStringEquals(normalizeNumerals(this.format(parsedDate, format)), dateString)) {
143071
- return parsedDate
143072
- }
143073
- return
143074
- };
143075
- return constructValidDate(false) ?? constructValidDate(true)
143076
- },
143077
- _generateDateArgs(formatParts, dateParts) {
143078
- const currentDate = new Date;
143079
- const dateArgs = {
143080
- year: currentDate.getFullYear(),
143081
- month: currentDate.getMonth(),
143082
- day: currentDate.getDate(),
143083
- hours: 0,
143084
- minutes: 0,
143085
- seconds: 0
143086
- };
143087
- formatParts.forEach((formatPart, index) => {
143088
- const datePart = dateParts[index];
143089
- let parsed = parseInt(datePart, 10);
143090
- if ("month" === formatPart) {
143091
- parsed -= 1
143092
- }
143093
- dateArgs[formatPart] = parsed
143094
- });
143095
- return dateArgs
143096
- },
143097
- formatUsesMonthName(format) {
143098
- if ("object" === typeof format && !(format.type || format.format)) {
143099
- return "long" === format.month
143100
- }
143101
- return this.callBase.apply(this, [format])
143102
- },
143103
- formatUsesDayName(format) {
143104
- if ("object" === typeof format && !(format.type || format.format)) {
143105
- return "long" === format.weekday
143106
- }
143107
- return this.callBase.apply(this, [format])
143108
- },
143109
- getTimeSeparator: () => normalizeNumerals(formatDateTime(new Date(2001, 1, 1, 11, 11), {
143110
- hour: "numeric",
143111
- minute: "numeric",
143112
- hour12: false
143113
- })).replace(/\d/g, ""),
143114
- getFormatParts(format) {
143115
- if ("string" === typeof format) {
143116
- return this.callBase(format)
143117
- }
143118
- const intlFormat = extend({}, intlFormats[format.toLowerCase()]);
143119
- const date = new Date(2001, 2, 4, 5, 6, 7);
143120
- let formattedDate = getIntlFormatter(intlFormat)(date);
143121
- formattedDate = normalizeNumerals(formattedDate);
143122
- return [{
143123
- name: "year",
143124
- value: 1
143125
- }, {
143126
- name: "month",
143127
- value: 3
143128
- }, {
143129
- name: "day",
143130
- value: 4
143131
- }, {
143132
- name: "hours",
143133
- value: 5
143134
- }, {
143135
- name: "minutes",
143136
- value: 6
143137
- }, {
143138
- name: "seconds",
143139
- value: 7
143140
- }].map(part => ({
143141
- name: part.name,
143142
- index: formattedDate.indexOf(`${part.value}`)
143143
- })).filter(part => part.index > -1).sort((a, b) => a.index - b.index).map(part => part.name)
143144
- }
143145
- });
143146
-
143147
143266
  ;// ./node_modules/devextreme/esm/__internal/core/m_config.js
143148
143267
  /**
143149
143268
  * DevExtreme (esm/__internal/core/m_config.js)
143150
- * Version: 25.2.7
143151
- * Build date: Tue May 05 2026
143269
+ * Version: 26.1.2-beta
143270
+ * Build date: Fri May 08 2026
143152
143271
  *
143153
143272
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
143154
143273
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143171,6 +143290,11 @@ const config = {
143171
143290
  useLegacyVisibleIndex: false,
143172
143291
  versionAssertions: [],
143173
143292
  copyStylesToShadowDom: true,
143293
+ dateFormat: void 0,
143294
+ timeFormat: void 0,
143295
+ dateTimeFormat: void 0,
143296
+ numberFormat: void 0,
143297
+ dateTimeFormatPresets: void 0,
143174
143298
  licenseKey: "/* ___$$$$$___devextreme___lcp___placeholder____$$$$$ */",
143175
143299
  floatingActionButtonConfig: {
143176
143300
  icon: "add",
@@ -143226,8 +143350,8 @@ if ("undefined" !== typeof DevExpress && DevExpress.config) {
143226
143350
  ;// ./node_modules/devextreme/esm/common/config.js
143227
143351
  /**
143228
143352
  * DevExtreme (esm/common/config.js)
143229
- * Version: 25.2.7
143230
- * Build date: Tue May 05 2026
143353
+ * Version: 26.1.2-beta
143354
+ * Build date: Fri May 08 2026
143231
143355
  *
143232
143356
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
143233
143357
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143238,8 +143362,8 @@ if ("undefined" !== typeof DevExpress && DevExpress.config) {
143238
143362
  ;// ./node_modules/devextreme/esm/__internal/core/m_guid.js
143239
143363
  /**
143240
143364
  * DevExtreme (esm/__internal/core/m_guid.js)
143241
- * Version: 25.2.7
143242
- * Build date: Tue May 05 2026
143365
+ * Version: 26.1.2-beta
143366
+ * Build date: Fri May 08 2026
143243
143367
  *
143244
143368
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
143245
143369
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143281,8 +143405,8 @@ const Guid = core_class.inherit({
143281
143405
  ;// ./node_modules/devextreme/esm/common/guid.js
143282
143406
  /**
143283
143407
  * DevExtreme (esm/common/guid.js)
143284
- * Version: 25.2.7
143285
- * Build date: Tue May 05 2026
143408
+ * Version: 26.1.2-beta
143409
+ * Build date: Fri May 08 2026
143286
143410
  *
143287
143411
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
143288
143412
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143295,8 +143419,8 @@ const Guid = core_class.inherit({
143295
143419
  /* unused harmony import specifier */ var m_template_engine_registry_isString;
143296
143420
  /**
143297
143421
  * DevExtreme (esm/__internal/core/templates/m_template_engine_registry.js)
143298
- * Version: 25.2.7
143299
- * Build date: Tue May 05 2026
143422
+ * Version: 26.1.2-beta
143423
+ * Build date: Fri May 08 2026
143300
143424
  *
143301
143425
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
143302
143426
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143325,8 +143449,8 @@ function getCurrentTemplateEngine() {
143325
143449
  ;// ./node_modules/devextreme/esm/core/templates/template_engine_registry.js
143326
143450
  /**
143327
143451
  * DevExtreme (esm/core/templates/template_engine_registry.js)
143328
- * Version: 25.2.7
143329
- * Build date: Tue May 05 2026
143452
+ * Version: 26.1.2-beta
143453
+ * Build date: Fri May 08 2026
143330
143454
  *
143331
143455
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
143332
143456
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143336,8 +143460,8 @@ function getCurrentTemplateEngine() {
143336
143460
  ;// ./node_modules/devextreme/esm/__internal/core/m_set_template_engine.js
143337
143461
  /**
143338
143462
  * DevExtreme (esm/__internal/core/m_set_template_engine.js)
143339
- * Version: 25.2.7
143340
- * Build date: Tue May 05 2026
143463
+ * Version: 26.1.2-beta
143464
+ * Build date: Fri May 08 2026
143341
143465
  *
143342
143466
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
143343
143467
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143348,8 +143472,8 @@ function getCurrentTemplateEngine() {
143348
143472
  /* unused harmony import specifier */ var set_template_engine_setTemplateEngine;
143349
143473
  /**
143350
143474
  * DevExtreme (esm/common/set_template_engine.js)
143351
- * Version: 25.2.7
143352
- * Build date: Tue May 05 2026
143475
+ * Version: 26.1.2-beta
143476
+ * Build date: Fri May 08 2026
143353
143477
  *
143354
143478
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
143355
143479
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143360,8 +143484,8 @@ function getCurrentTemplateEngine() {
143360
143484
  ;// ./node_modules/devextreme/esm/common.js
143361
143485
  /**
143362
143486
  * DevExtreme (esm/common.js)
143363
- * Version: 25.2.7
143364
- * Build date: Tue May 05 2026
143487
+ * Version: 26.1.2-beta
143488
+ * Build date: Fri May 08 2026
143365
143489
  *
143366
143490
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
143367
143491
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143374,8 +143498,8 @@ function getCurrentTemplateEngine() {
143374
143498
  ;// ./node_modules/devextreme/esm/core/config.js
143375
143499
  /**
143376
143500
  * DevExtreme (esm/core/config.js)
143377
- * Version: 25.2.7
143378
- * Build date: Tue May 05 2026
143501
+ * Version: 26.1.2-beta
143502
+ * Build date: Fri May 08 2026
143379
143503
  *
143380
143504
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
143381
143505
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143383,11 +143507,426 @@ function getCurrentTemplateEngine() {
143383
143507
 
143384
143508
  /* harmony default export */ var core_config = (common_config);
143385
143509
 
143510
+ ;// ./node_modules/devextreme/esm/common/core/localization/core.js
143511
+ /**
143512
+ * DevExtreme (esm/common/core/localization/core.js)
143513
+ * Version: 26.1.2-beta
143514
+ * Build date: Fri May 08 2026
143515
+ *
143516
+ * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
143517
+ * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
143518
+ */
143519
+
143520
+ /* harmony default export */ var localization_core = (core);
143521
+
143522
+ ;// ./node_modules/devextreme/esm/__internal/core/m_global_format_config.js
143523
+ /**
143524
+ * DevExtreme (esm/__internal/core/m_global_format_config.js)
143525
+ * Version: 26.1.2-beta
143526
+ * Build date: Fri May 08 2026
143527
+ *
143528
+ * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
143529
+ * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
143530
+ */
143531
+
143532
+
143533
+
143534
+
143535
+
143536
+ const hasOwn = Object.prototype.hasOwnProperty;
143537
+ const resolveByLocaleMap = localeMap => {
143538
+ let currentLocale = localization_core.locale();
143539
+ while (currentLocale) {
143540
+ if (hasOwn.call(localeMap, currentLocale) && void 0 !== localeMap[currentLocale]) {
143541
+ return localeMap[currentLocale]
143542
+ }
143543
+ currentLocale = parentLocale(parent_locales, currentLocale)
143544
+ }
143545
+ if (hasOwn.call(localeMap, "default")) {
143546
+ return localeMap.default
143547
+ }
143548
+ return
143549
+ };
143550
+ const resolveConfigValue = value => {
143551
+ if (void 0 === value) {
143552
+ return
143553
+ }
143554
+ if (isString(value) || isFunction(value)) {
143555
+ return value
143556
+ }
143557
+ if (isPlainObject(value)) {
143558
+ return resolveByLocaleMap(value)
143559
+ }
143560
+ return
143561
+ };
143562
+ const resolveGlobalFormat = optionName => {
143563
+ const optionValue = core_config()[optionName];
143564
+ return resolveConfigValue(optionValue)
143565
+ };
143566
+ const getGlobalFormatByDataType = dataType => {
143567
+ switch (dataType) {
143568
+ case "date":
143569
+ return resolveGlobalFormat("dateFormat");
143570
+ case "datetime":
143571
+ return resolveGlobalFormat("dateTimeFormat");
143572
+ case "time":
143573
+ return resolveGlobalFormat("timeFormat");
143574
+ case "number":
143575
+ return resolveGlobalFormat("numberFormat");
143576
+ default:
143577
+ return
143578
+ }
143579
+ };
143580
+ const resolvePresetOverride = presetName => {
143581
+ const presets = core_config().dateTimeFormatPresets;
143582
+ if (!presets || !isPlainObject(presets)) {
143583
+ return
143584
+ }
143585
+ const lowerName = presetName.toLowerCase();
143586
+ const keys = Object.keys(presets);
143587
+ for (let i = 0; i < keys.length; i++) {
143588
+ if (keys[i].toLowerCase() === lowerName) {
143589
+ return resolveConfigValue(presets[keys[i]])
143590
+ }
143591
+ }
143592
+ return
143593
+ };
143594
+ /* harmony default export */ var m_global_format_config = ({
143595
+ getGlobalFormatByDataType: getGlobalFormatByDataType,
143596
+ resolvePresetOverride: resolvePresetOverride
143597
+ });
143598
+
143599
+ ;// ./node_modules/devextreme/esm/__internal/core/localization/intl/date.js
143600
+ /**
143601
+ * DevExtreme (esm/__internal/core/localization/intl/date.js)
143602
+ * Version: 26.1.2-beta
143603
+ * Build date: Fri May 08 2026
143604
+ *
143605
+ * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
143606
+ * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
143607
+ */
143608
+
143609
+
143610
+
143611
+ const SYMBOLS_TO_REMOVE_REGEX = /[\u200E\u200F]/g;
143612
+ const NARROW_NO_BREAK_SPACE_REGEX = /[\u202F]/g;
143613
+ const formattersCache = {};
143614
+ const getFormatter = format => {
143615
+ const key = `${core.locale()}/${JSON.stringify(format)}`;
143616
+ if (!formattersCache[key]) {
143617
+ formattersCache[key] = new Intl.DateTimeFormat(core.locale(), format).format
143618
+ }
143619
+ return formattersCache[key]
143620
+ };
143621
+
143622
+ function formatDateTime(date, format) {
143623
+ return getFormatter(format)(date).replace(SYMBOLS_TO_REMOVE_REGEX, "").replace(NARROW_NO_BREAK_SPACE_REGEX, " ")
143624
+ }
143625
+ const getIntlFormatter = format => date => {
143626
+ if (!format.timeZoneName) {
143627
+ const year = date.getFullYear();
143628
+ const recognizableAsTwentyCentury = String(year).length < 3;
143629
+ const safeYearShift = 400;
143630
+ const temporaryYearValue = recognizableAsTwentyCentury ? year + safeYearShift : year;
143631
+ const utcDate = new Date(Date.UTC(temporaryYearValue, date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));
143632
+ if (recognizableAsTwentyCentury) {
143633
+ utcDate.setFullYear(year)
143634
+ }
143635
+ const utcFormat = extend({
143636
+ timeZone: "UTC"
143637
+ }, format);
143638
+ return formatDateTime(utcDate, utcFormat)
143639
+ }
143640
+ return formatDateTime(date, format)
143641
+ };
143642
+ const formatNumber = number => new Intl.NumberFormat(core.locale()).format(number);
143643
+ const getAlternativeNumeralsMap = (() => {
143644
+ const numeralsMapCache = {};
143645
+ return locale => {
143646
+ if (!(locale in numeralsMapCache)) {
143647
+ if ("0" === formatNumber(0)) {
143648
+ numeralsMapCache[locale] = false;
143649
+ return false
143650
+ }
143651
+ numeralsMapCache[locale] = {};
143652
+ for (let i = 0; i < 10; ++i) {
143653
+ numeralsMapCache[locale][formatNumber(i)] = i
143654
+ }
143655
+ }
143656
+ return numeralsMapCache[locale]
143657
+ }
143658
+ })();
143659
+ const normalizeNumerals = dateString => {
143660
+ const alternativeNumeralsMap = getAlternativeNumeralsMap(core.locale());
143661
+ if (!alternativeNumeralsMap) {
143662
+ return dateString
143663
+ }
143664
+ return dateString.split("").map(sign => sign in alternativeNumeralsMap ? String(alternativeNumeralsMap[sign]) : sign).join("")
143665
+ };
143666
+ const removeLeadingZeroes = str => str.replace(/(\D)0+(\d)/g, "$1$2");
143667
+ const dateStringEquals = (actual, expected) => removeLeadingZeroes(actual) === removeLeadingZeroes(expected);
143668
+ const normalizeMonth = text => text.replace("d\u2019", "de ");
143669
+ const intlFormats = {
143670
+ day: {
143671
+ day: "numeric"
143672
+ },
143673
+ date: {
143674
+ year: "numeric",
143675
+ month: "long",
143676
+ day: "numeric"
143677
+ },
143678
+ dayofweek: {
143679
+ weekday: "long"
143680
+ },
143681
+ longdate: {
143682
+ weekday: "long",
143683
+ year: "numeric",
143684
+ month: "long",
143685
+ day: "numeric"
143686
+ },
143687
+ longdatelongtime: {
143688
+ weekday: "long",
143689
+ year: "numeric",
143690
+ month: "long",
143691
+ day: "numeric",
143692
+ hour: "numeric",
143693
+ minute: "numeric",
143694
+ second: "numeric"
143695
+ },
143696
+ longtime: {
143697
+ hour: "numeric",
143698
+ minute: "numeric",
143699
+ second: "numeric"
143700
+ },
143701
+ month: {
143702
+ month: "long"
143703
+ },
143704
+ monthandday: {
143705
+ month: "long",
143706
+ day: "numeric"
143707
+ },
143708
+ monthandyear: {
143709
+ year: "numeric",
143710
+ month: "long"
143711
+ },
143712
+ shortdate: {},
143713
+ shorttime: {
143714
+ hour: "numeric",
143715
+ minute: "numeric"
143716
+ },
143717
+ shortyear: {
143718
+ year: "2-digit"
143719
+ },
143720
+ year: {
143721
+ year: "numeric"
143722
+ }
143723
+ };
143724
+ Object.defineProperty(intlFormats, "shortdateshorttime", {
143725
+ get() {
143726
+ const defaultOptions = Intl.DateTimeFormat(core.locale()).resolvedOptions();
143727
+ return {
143728
+ year: defaultOptions.year,
143729
+ month: defaultOptions.month,
143730
+ day: defaultOptions.day,
143731
+ hour: "numeric",
143732
+ minute: "numeric"
143733
+ }
143734
+ }
143735
+ });
143736
+ const getIntlFormat = format => "string" === typeof format && intlFormats[format.toLowerCase()];
143737
+ const monthNameStrategies = {
143738
+ standalone(monthIndex, monthFormat) {
143739
+ const date = new Date(1999, monthIndex, 13, 1);
143740
+ return getIntlFormatter({
143741
+ month: monthFormat
143742
+ })(date)
143743
+ },
143744
+ format(monthIndex, monthFormat) {
143745
+ const date = new Date(0, monthIndex, 13, 1);
143746
+ const dateString = normalizeMonth(getIntlFormatter({
143747
+ day: "numeric",
143748
+ month: monthFormat
143749
+ })(date));
143750
+ const parts = dateString.split(" ").filter(part => !part.includes("13"));
143751
+ if (1 === parts.length) {
143752
+ return parts[0]
143753
+ }
143754
+ if (2 === parts.length) {
143755
+ return parts[0].length > parts[1].length ? parts[0] : parts[1]
143756
+ }
143757
+ return monthNameStrategies.standalone(monthIndex, monthFormat)
143758
+ }
143759
+ };
143760
+ /* harmony default export */ var date = ({
143761
+ engine: () => "intl",
143762
+ getMonthNames(format, type) {
143763
+ const monthFormat = {
143764
+ wide: "long",
143765
+ abbreviated: "short",
143766
+ narrow: "narrow"
143767
+ } [format || "wide"];
143768
+ type = "format" === type ? type : "standalone";
143769
+ return Array.from({
143770
+ length: 12
143771
+ }, (_, monthIndex) => monthNameStrategies[type](monthIndex, monthFormat))
143772
+ },
143773
+ getDayNames: format => (format => Array.from({
143774
+ length: 7
143775
+ }, (_, dayIndex) => getIntlFormatter({
143776
+ weekday: format
143777
+ })(new Date(0, 0, dayIndex))))({
143778
+ wide: "long",
143779
+ abbreviated: "short",
143780
+ short: "narrow",
143781
+ narrow: "narrow"
143782
+ } [format || "wide"]),
143783
+ getPeriodNames() {
143784
+ const hour12Formatter = getIntlFormatter({
143785
+ hour: "numeric",
143786
+ hour12: true
143787
+ });
143788
+ return [1, 13].map(hours => {
143789
+ const hourNumberText = formatNumber(1);
143790
+ const timeParts = hour12Formatter(new Date(0, 0, 1, hours)).split(hourNumberText);
143791
+ if (2 !== timeParts.length) {
143792
+ return ""
143793
+ }
143794
+ const biggerPart = timeParts[0].length > timeParts[1].length ? timeParts[0] : timeParts[1];
143795
+ return biggerPart.trim()
143796
+ })
143797
+ },
143798
+ format(date, format) {
143799
+ if (!date) {
143800
+ return
143801
+ }
143802
+ if (!format) {
143803
+ return date
143804
+ }
143805
+ if ("function" !== typeof format && !format.formatter) {
143806
+ format = format.type ?? format
143807
+ }
143808
+ if ("string" === typeof format) {
143809
+ const presetOverride = resolvePresetOverride(format);
143810
+ if (void 0 !== presetOverride) {
143811
+ if ("function" === typeof presetOverride) {
143812
+ return presetOverride(date)
143813
+ }
143814
+ format = presetOverride
143815
+ }
143816
+ }
143817
+ const intlFormat = getIntlFormat(format);
143818
+ if (intlFormat) {
143819
+ return getIntlFormatter(intlFormat)(date)
143820
+ }
143821
+ const formatType = typeof format;
143822
+ if (format.formatter || "function" === formatType || "string" === formatType) {
143823
+ return this.callBase.apply(this, [date, format])
143824
+ }
143825
+ return getIntlFormatter(format)(date)
143826
+ },
143827
+ parse(dateString, format) {
143828
+ let formatter;
143829
+ if (format && !format.parser && "string" === typeof dateString) {
143830
+ dateString = normalizeMonth(dateString);
143831
+ formatter = date => normalizeMonth(this.format(date, format))
143832
+ }
143833
+ return this.callBase(dateString, formatter ?? format)
143834
+ },
143835
+ _parseDateBySimpleFormat(dateString, format) {
143836
+ dateString = normalizeNumerals(dateString);
143837
+ const formatParts = this.getFormatParts(format);
143838
+ const dateParts = dateString.split(/\D+/).filter(part => part.length > 0);
143839
+ if (formatParts.length !== dateParts.length) {
143840
+ return
143841
+ }
143842
+ const dateArgs = this._generateDateArgs(formatParts, dateParts);
143843
+ const constructValidDate = ampmShift => {
143844
+ const parsedDate = ((dateArgs, ampmShift) => {
143845
+ const hoursShift = ampmShift ? 12 : 0;
143846
+ return new Date(dateArgs.year, dateArgs.month, dateArgs.day, (dateArgs.hours + hoursShift) % 24, dateArgs.minutes, dateArgs.seconds)
143847
+ })(dateArgs, ampmShift);
143848
+ if (dateStringEquals(normalizeNumerals(this.format(parsedDate, format)), dateString)) {
143849
+ return parsedDate
143850
+ }
143851
+ return
143852
+ };
143853
+ return constructValidDate(false) ?? constructValidDate(true)
143854
+ },
143855
+ _generateDateArgs(formatParts, dateParts) {
143856
+ const currentDate = new Date;
143857
+ const dateArgs = {
143858
+ year: currentDate.getFullYear(),
143859
+ month: currentDate.getMonth(),
143860
+ day: currentDate.getDate(),
143861
+ hours: 0,
143862
+ minutes: 0,
143863
+ seconds: 0
143864
+ };
143865
+ formatParts.forEach((formatPart, index) => {
143866
+ const datePart = dateParts[index];
143867
+ let parsed = parseInt(datePart, 10);
143868
+ if ("month" === formatPart) {
143869
+ parsed -= 1
143870
+ }
143871
+ dateArgs[formatPart] = parsed
143872
+ });
143873
+ return dateArgs
143874
+ },
143875
+ formatUsesMonthName(format) {
143876
+ if ("object" === typeof format && !(format.type || format.format)) {
143877
+ return "long" === format.month
143878
+ }
143879
+ return this.callBase.apply(this, [format])
143880
+ },
143881
+ formatUsesDayName(format) {
143882
+ if ("object" === typeof format && !(format.type || format.format)) {
143883
+ return "long" === format.weekday
143884
+ }
143885
+ return this.callBase.apply(this, [format])
143886
+ },
143887
+ getTimeSeparator: () => normalizeNumerals(formatDateTime(new Date(2001, 1, 1, 11, 11), {
143888
+ hour: "numeric",
143889
+ minute: "numeric",
143890
+ hour12: false
143891
+ })).replace(/\d/g, ""),
143892
+ getFormatParts(format) {
143893
+ if ("string" === typeof format) {
143894
+ return this.callBase(format)
143895
+ }
143896
+ const intlFormat = extend({}, intlFormats[format.toLowerCase()]);
143897
+ const date = new Date(2001, 2, 4, 5, 6, 7);
143898
+ let formattedDate = getIntlFormatter(intlFormat)(date);
143899
+ formattedDate = normalizeNumerals(formattedDate);
143900
+ return [{
143901
+ name: "year",
143902
+ value: 1
143903
+ }, {
143904
+ name: "month",
143905
+ value: 3
143906
+ }, {
143907
+ name: "day",
143908
+ value: 4
143909
+ }, {
143910
+ name: "hours",
143911
+ value: 5
143912
+ }, {
143913
+ name: "minutes",
143914
+ value: 6
143915
+ }, {
143916
+ name: "seconds",
143917
+ value: 7
143918
+ }].map(part => ({
143919
+ name: part.name,
143920
+ index: formattedDate.indexOf(`${part.value}`)
143921
+ })).filter(part => part.index > -1).sort((a, b) => a.index - b.index).map(part => part.name)
143922
+ }
143923
+ });
143924
+
143386
143925
  ;// ./node_modules/devextreme/esm/__internal/core/localization/currency.js
143387
143926
  /**
143388
143927
  * DevExtreme (esm/__internal/core/localization/currency.js)
143389
- * Version: 25.2.7
143390
- * Build date: Tue May 05 2026
143928
+ * Version: 26.1.2-beta
143929
+ * Build date: Fri May 08 2026
143391
143930
  *
143392
143931
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
143393
143932
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143414,8 +143953,8 @@ function getCurrentTemplateEngine() {
143414
143953
  ;// ./node_modules/devextreme/esm/__internal/core/localization/cldr-data/accounting_formats.js
143415
143954
  /**
143416
143955
  * DevExtreme (esm/__internal/core/localization/cldr-data/accounting_formats.js)
143417
- * Version: 25.2.7
143418
- * Build date: Tue May 05 2026
143956
+ * Version: 26.1.2-beta
143957
+ * Build date: Fri May 08 2026
143419
143958
  *
143420
143959
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
143421
143960
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -144001,8 +144540,8 @@ function getCurrentTemplateEngine() {
144001
144540
  ;// ./node_modules/devextreme/esm/__internal/core/localization/open_xml_currency_format.js
144002
144541
  /**
144003
144542
  * DevExtreme (esm/__internal/core/localization/open_xml_currency_format.js)
144004
- * Version: 25.2.7
144005
- * Build date: Tue May 05 2026
144543
+ * Version: 26.1.2-beta
144544
+ * Build date: Fri May 08 2026
144006
144545
  *
144007
144546
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
144008
144547
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -144044,8 +144583,8 @@ function getCurrentTemplateEngine() {
144044
144583
  ;// ./node_modules/devextreme/esm/__internal/core/localization/intl/number.js
144045
144584
  /**
144046
144585
  * DevExtreme (esm/__internal/core/localization/intl/number.js)
144047
- * Version: 25.2.7
144048
- * Build date: Tue May 05 2026
144586
+ * Version: 26.1.2-beta
144587
+ * Build date: Fri May 08 2026
144049
144588
  *
144050
144589
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
144051
144590
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -144054,6 +144593,7 @@ function getCurrentTemplateEngine() {
144054
144593
 
144055
144594
 
144056
144595
 
144596
+
144057
144597
  const CURRENCY_STYLES = ["standard", "accounting"];
144058
144598
  const MAX_FRACTION_DIGITS = 20;
144059
144599
  const detectCurrencySymbolRegex = /([^\s0]+)?(\s*)0*[.,]*0*(\s*)([^\s0]+)?/;
@@ -144119,6 +144659,10 @@ const getCurrencyFormatter = currency => new Intl.NumberFormat(core.locale(), {
144119
144659
  if ("number" !== typeof value) {
144120
144660
  return value
144121
144661
  }
144662
+ const globalNumberFormat = getGlobalFormatByDataType("number");
144663
+ if (!format && globalNumberFormat) {
144664
+ format = globalNumberFormat
144665
+ }
144122
144666
  format = this._normalizeFormat(format);
144123
144667
  if ("default" === format.currency) {
144124
144668
  format.currency = core_config().defaultCurrency
@@ -144164,8 +144708,8 @@ const getCurrencyFormatter = currency => new Intl.NumberFormat(core.locale(), {
144164
144708
  /* unused harmony import specifier */ var m_math_isExponential;
144165
144709
  /**
144166
144710
  * DevExtreme (esm/__internal/core/utils/m_math.js)
144167
- * Version: 25.2.7
144168
- * Build date: Tue May 05 2026
144711
+ * Version: 26.1.2-beta
144712
+ * Build date: Fri May 08 2026
144169
144713
  *
144170
144714
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
144171
144715
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -144343,8 +144887,8 @@ function roundFloatPart(value) {
144343
144887
  ;// ./node_modules/devextreme/esm/__internal/core/localization/utils.js
144344
144888
  /**
144345
144889
  * DevExtreme (esm/__internal/core/localization/utils.js)
144346
- * Version: 25.2.7
144347
- * Build date: Tue May 05 2026
144890
+ * Version: 26.1.2-beta
144891
+ * Build date: Fri May 08 2026
144348
144892
  *
144349
144893
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
144350
144894
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -144371,8 +144915,8 @@ function toFixed(value, precision) {
144371
144915
  ;// ./node_modules/devextreme/esm/__internal/core/localization/ldml/number.js
144372
144916
  /**
144373
144917
  * DevExtreme (esm/__internal/core/localization/ldml/number.js)
144374
- * Version: 25.2.7
144375
- * Build date: Tue May 05 2026
144918
+ * Version: 26.1.2-beta
144919
+ * Build date: Fri May 08 2026
144376
144920
  *
144377
144921
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
144378
144922
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -144612,8 +145156,8 @@ function getFormat(formatter) {
144612
145156
  ;// ./node_modules/devextreme/esm/core/guid.js
144613
145157
  /**
144614
145158
  * DevExtreme (esm/core/guid.js)
144615
- * Version: 25.2.7
144616
- * Build date: Tue May 05 2026
145159
+ * Version: 26.1.2-beta
145160
+ * Build date: Fri May 08 2026
144617
145161
  *
144618
145162
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
144619
145163
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -144624,8 +145168,8 @@ function getFormat(formatter) {
144624
145168
  ;// ./node_modules/devextreme/esm/core/utils/console.js
144625
145169
  /**
144626
145170
  * DevExtreme (esm/core/utils/console.js)
144627
- * Version: 25.2.7
144628
- * Build date: Tue May 05 2026
145171
+ * Version: 26.1.2-beta
145172
+ * Build date: Fri May 08 2026
144629
145173
  *
144630
145174
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
144631
145175
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -144635,8 +145179,8 @@ function getFormat(formatter) {
144635
145179
  ;// ./node_modules/devextreme/esm/core/utils/dependency_injector.js
144636
145180
  /**
144637
145181
  * DevExtreme (esm/core/utils/dependency_injector.js)
144638
- * Version: 25.2.7
144639
- * Build date: Tue May 05 2026
145182
+ * Version: 26.1.2-beta
145183
+ * Build date: Fri May 08 2026
144640
145184
  *
144641
145185
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
144642
145186
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -144647,8 +145191,8 @@ function getFormat(formatter) {
144647
145191
  ;// ./node_modules/devextreme/esm/__internal/core/utils/m_variable_wrapper.js
144648
145192
  /**
144649
145193
  * DevExtreme (esm/__internal/core/utils/m_variable_wrapper.js)
144650
- * Version: 25.2.7
144651
- * Build date: Tue May 05 2026
145194
+ * Version: 26.1.2-beta
145195
+ * Build date: Fri May 08 2026
144652
145196
  *
144653
145197
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
144654
145198
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -144677,8 +145221,8 @@ const variableWrapper = dependency_injector({
144677
145221
  ;// ./node_modules/devextreme/esm/core/utils/variable_wrapper.js
144678
145222
  /**
144679
145223
  * DevExtreme (esm/core/utils/variable_wrapper.js)
144680
- * Version: 25.2.7
144681
- * Build date: Tue May 05 2026
145224
+ * Version: 26.1.2-beta
145225
+ * Build date: Fri May 08 2026
144682
145226
  *
144683
145227
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
144684
145228
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -144693,8 +145237,8 @@ const variableWrapper = dependency_injector({
144693
145237
  /* unused harmony import specifier */ var m_object_variableWrapper;
144694
145238
  /**
144695
145239
  * DevExtreme (esm/__internal/core/utils/m_object.js)
144696
- * Version: 25.2.7
144697
- * Build date: Tue May 05 2026
145240
+ * Version: 26.1.2-beta
145241
+ * Build date: Fri May 08 2026
144698
145242
  *
144699
145243
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
144700
145244
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -144800,8 +145344,8 @@ const deepExtendArraySafe = function(target, changes, extendComplexObject, assig
144800
145344
  ;// ./node_modules/devextreme/esm/core/utils/object.js
144801
145345
  /**
144802
145346
  * DevExtreme (esm/core/utils/object.js)
144803
- * Version: 25.2.7
144804
- * Build date: Tue May 05 2026
145347
+ * Version: 26.1.2-beta
145348
+ * Build date: Fri May 08 2026
144805
145349
  *
144806
145350
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
144807
145351
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -144818,8 +145362,8 @@ const deepExtendArraySafe = function(target, changes, extendComplexObject, assig
144818
145362
  /* unused harmony import specifier */ var m_data_isPlainObject;
144819
145363
  /**
144820
145364
  * DevExtreme (esm/__internal/core/utils/m_data.js)
144821
- * Version: 25.2.7
144822
- * Build date: Tue May 05 2026
145365
+ * Version: 26.1.2-beta
145366
+ * Build date: Fri May 08 2026
144823
145367
  *
144824
145368
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
144825
145369
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -145016,8 +145560,8 @@ const toComparable = function(value, caseSensitive) {
145016
145560
  ;// ./node_modules/devextreme/esm/core/utils/data.js
145017
145561
  /**
145018
145562
  * DevExtreme (esm/core/utils/data.js)
145019
- * Version: 25.2.7
145020
- * Build date: Tue May 05 2026
145563
+ * Version: 26.1.2-beta
145564
+ * Build date: Fri May 08 2026
145021
145565
  *
145022
145566
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
145023
145567
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -145027,8 +145571,8 @@ const toComparable = function(value, caseSensitive) {
145027
145571
  ;// ./node_modules/devextreme/esm/__internal/core/utils/m_callbacks.js
145028
145572
  /**
145029
145573
  * DevExtreme (esm/__internal/core/utils/m_callbacks.js)
145030
- * Version: 25.2.7
145031
- * Build date: Tue May 05 2026
145574
+ * Version: 26.1.2-beta
145575
+ * Build date: Fri May 08 2026
145032
145576
  *
145033
145577
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
145034
145578
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -145123,8 +145667,8 @@ const Callbacks = function(options) {
145123
145667
  ;// ./node_modules/devextreme/esm/core/utils/callbacks.js
145124
145668
  /**
145125
145669
  * DevExtreme (esm/core/utils/callbacks.js)
145126
- * Version: 25.2.7
145127
- * Build date: Tue May 05 2026
145670
+ * Version: 26.1.2-beta
145671
+ * Build date: Fri May 08 2026
145128
145672
  *
145129
145673
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
145130
145674
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -145135,8 +145679,8 @@ const Callbacks = function(options) {
145135
145679
  ;// ./node_modules/devextreme/esm/__internal/core/utils/m_deferred.js
145136
145680
  /**
145137
145681
  * DevExtreme (esm/__internal/core/utils/m_deferred.js)
145138
- * Version: 25.2.7
145139
- * Build date: Tue May 05 2026
145682
+ * Version: 26.1.2-beta
145683
+ * Build date: Fri May 08 2026
145140
145684
  *
145141
145685
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
145142
145686
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -145301,8 +145845,8 @@ function when() {
145301
145845
  ;// ./node_modules/devextreme/esm/core/utils/deferred.js
145302
145846
  /**
145303
145847
  * DevExtreme (esm/core/utils/deferred.js)
145304
- * Version: 25.2.7
145305
- * Build date: Tue May 05 2026
145848
+ * Version: 26.1.2-beta
145849
+ * Build date: Fri May 08 2026
145306
145850
  *
145307
145851
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
145308
145852
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -145312,8 +145856,8 @@ function when() {
145312
145856
  ;// ./node_modules/devextreme/esm/__internal/core/utils/m_common.js
145313
145857
  /**
145314
145858
  * DevExtreme (esm/__internal/core/utils/m_common.js)
145315
- * Version: 25.2.7
145316
- * Build date: Tue May 05 2026
145859
+ * Version: 26.1.2-beta
145860
+ * Build date: Fri May 08 2026
145317
145861
  *
145318
145862
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
145319
145863
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -145607,8 +146151,8 @@ const equalByValue = function(value1, value2) {
145607
146151
  ;// ./node_modules/devextreme/esm/__internal/core/localization/number.js
145608
146152
  /**
145609
146153
  * DevExtreme (esm/__internal/core/localization/number.js)
145610
- * Version: 25.2.7
145611
- * Build date: Tue May 05 2026
146154
+ * Version: 26.1.2-beta
146155
+ * Build date: Fri May 08 2026
145612
146156
  *
145613
146157
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
145614
146158
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -145623,6 +146167,7 @@ const equalByValue = function(value1, value2) {
145623
146167
 
145624
146168
 
145625
146169
 
146170
+
145626
146171
  const hasIntl = "undefined" !== typeof Intl;
145627
146172
  const MAX_LARGE_NUMBER_POWER = 4;
145628
146173
  const number_DECIMAL_BASE = 10;
@@ -145830,6 +146375,10 @@ const numberLocalization = injector({
145830
146375
  if ("number" === typeof format) {
145831
146376
  return value
145832
146377
  }
146378
+ const globalNumberFormat = getGlobalFormatByDataType("number");
146379
+ if (!format && globalNumberFormat) {
146380
+ format = globalNumberFormat
146381
+ }
145833
146382
  format = (null === (_format = format) || void 0 === _format ? void 0 : _format.formatter) || format;
145834
146383
  if ("function" === typeof format) {
145835
146384
  return format(value)
@@ -145917,8 +146466,8 @@ if (hasIntl) {
145917
146466
  ;// ./node_modules/devextreme/esm/__internal/core/localization/ldml/date.format.js
145918
146467
  /**
145919
146468
  * DevExtreme (esm/__internal/core/localization/ldml/date.format.js)
145920
- * Version: 25.2.7
145921
- * Build date: Tue May 05 2026
146469
+ * Version: 26.1.2-beta
146470
+ * Build date: Fri May 08 2026
145922
146471
  *
145923
146472
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
145924
146473
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -146111,8 +146660,8 @@ const date_format_getFormat = formatter => {
146111
146660
  ;// ./node_modules/devextreme/esm/__internal/core/localization/ldml/date.formatter.js
146112
146661
  /**
146113
146662
  * DevExtreme (esm/__internal/core/localization/ldml/date.formatter.js)
146114
- * Version: 25.2.7
146115
- * Build date: Tue May 05 2026
146663
+ * Version: 26.1.2-beta
146664
+ * Build date: Fri May 08 2026
146116
146665
  *
146117
146666
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
146118
146667
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -146240,8 +146789,8 @@ const date_formatter_getFormatter = (format, dateParts) => date => {
146240
146789
  ;// ./node_modules/devextreme/esm/__internal/core/localization/ldml/date.parser.js
146241
146790
  /**
146242
146791
  * DevExtreme (esm/__internal/core/localization/ldml/date.parser.js)
146243
- * Version: 25.2.7
146244
- * Build date: Tue May 05 2026
146792
+ * Version: 26.1.2-beta
146793
+ * Build date: Fri May 08 2026
146245
146794
  *
146246
146795
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
146247
146796
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -146519,8 +147068,8 @@ const getParser = (format, dateParts) => {
146519
147068
  ;// ./node_modules/devextreme/esm/__internal/core/localization/date.js
146520
147069
  /**
146521
147070
  * DevExtreme (esm/__internal/core/localization/date.js)
146522
- * Version: 25.2.7
146523
- * Build date: Tue May 05 2026
147071
+ * Version: 26.1.2-beta
147072
+ * Build date: Fri May 08 2026
146524
147073
  *
146525
147074
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
146526
147075
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -146537,6 +147086,7 @@ const getParser = (format, dateParts) => {
146537
147086
 
146538
147087
 
146539
147088
 
147089
+
146540
147090
  const DEFAULT_DAY_OF_WEEK_INDEX = 0;
146541
147091
  const date_hasIntl = "undefined" !== typeof Intl;
146542
147092
  const FORMATS_TO_PATTERN_MAP = {
@@ -146576,6 +147126,20 @@ const dateLocalization = injector({
146576
147126
  _expandPattern(pattern) {
146577
147127
  return this._getPatternByFormat(pattern) || pattern
146578
147128
  },
147129
+ _resolveStringFormat(format, date) {
147130
+ const presetOverride = resolvePresetOverride(format);
147131
+ if (void 0 === presetOverride) {
147132
+ return
147133
+ }
147134
+ if ("function" === typeof presetOverride) {
147135
+ return presetOverride(date)
147136
+ }
147137
+ if (isString(presetOverride)) {
147138
+ const pattern = FORMATS_TO_PATTERN_MAP[presetOverride.toLowerCase()] || presetOverride;
147139
+ return localization_number.convertDigits(date_formatter_getFormatter(pattern, this)(date))
147140
+ }
147141
+ return
147142
+ },
146579
147143
  formatUsesMonthName(format) {
146580
147144
  return -1 !== this._expandPattern(format).indexOf("MMMM")
146581
147145
  },
@@ -146626,6 +147190,10 @@ const dateLocalization = injector({
146626
147190
  } else {
146627
147191
  format = format.type ?? format;
146628
147192
  if (isString(format)) {
147193
+ const resolvedFormat = this._resolveStringFormat(format, date);
147194
+ if (void 0 !== resolvedFormat) {
147195
+ return resolvedFormat
147196
+ }
146629
147197
  format = FORMATS_TO_PATTERN_MAP[format.toLowerCase()] || format;
146630
147198
  return localization_number.convertDigits(date_formatter_getFormatter(format, this)(date))
146631
147199
  }
@@ -146683,8 +147251,8 @@ if (date_hasIntl) {
146683
147251
  ;// ./node_modules/devextreme/esm/common/core/localization/date.js
146684
147252
  /**
146685
147253
  * DevExtreme (esm/common/core/localization/date.js)
146686
- * Version: 25.2.7
146687
- * Build date: Tue May 05 2026
147254
+ * Version: 26.1.2-beta
147255
+ * Build date: Fri May 08 2026
146688
147256
  *
146689
147257
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
146690
147258
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -146695,8 +147263,8 @@ if (date_hasIntl) {
146695
147263
  ;// ./node_modules/devextreme/esm/common/core/localization/number.js
146696
147264
  /**
146697
147265
  * DevExtreme (esm/common/core/localization/number.js)
146698
- * Version: 25.2.7
146699
- * Build date: Tue May 05 2026
147266
+ * Version: 26.1.2-beta
147267
+ * Build date: Fri May 08 2026
146700
147268
  *
146701
147269
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
146702
147270
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -147779,7 +148347,7 @@ class ClientRichEdit {
147779
148347
  this.contextMenuSettings = settings.contextMenuSettings;
147780
148348
  this.fullScreenHelper = new FullScreenHelper(element);
147781
148349
  if (true)
147782
- external_DevExpress_config_default()(JSON.parse(atob('eyJsaWNlbnNlS2V5IjoiTENQdjFTSFFbZUxha0d5IVM+S20tPl8rLSFKZWllNyw5KDxTNCVKITxTK3RbOishNiU+OUI3aTkxIT5lQiFfbWI+YnQhPj46MWVfNEw2Snl2PlEtbix5ZWlaajM4Pk5SeSU8dEgoTGF2OW8rVjNuRXpWZWM4Nyt0dixSZTMlPiFMJVksUyxfLWs6PCtFWmptJFM8KzcoJS0kOjFtdElRLEs3ZVJYN2UrOVZuLCUhS21rZW4tViFMUW1rJSE2MiUhRzI8KS1wUSk7NjwtQGFRdDZwS0ZFNjdARiVpUkA5ano8MnAhOj4lLSlwZ0BAIVE0NjJiLXYyJWQpSTwtQGFRZEBwZ0BAIVE0QDJfQEYhUWQ6SXAhQEk8NClhS3o8SV95QEliUnZJPC0pOU5YPD5RNDo+UTh2SWJSKTlqejshakw7OWp5Rkk3eUZJN3lGSTlsbCJ9')));
148350
+ external_DevExpress_config_default()(JSON.parse(atob('eyJsaWNlbnNlS2V5IjoiTENQdjE+eWUzLGp0LWNfVmZwK2Q0Y3BGOyhqbWQyPjl5PjdEOGNqWG9JeSUxN2JSZz5SPG4zYis3JUhkTDpRZVFaUUZKN2I6SiU8WHlWaSFvMlJjejllUjlJb2RZIW8peSw8ZXooN2E2JSVMMSgrVmRJPHktU29TIWVZKUo3UlMzKCtkejpRVnQhUVMhZUwtYUdMcm9waWROSWlSUjpvPDEsbmFlKExtZ0dMNEtwZWQ6Pkh0LTNlUW1rJSk7cEtGITY8ISk2JUZRJWUrPHBRZCk+Sy1AMnAhJD5qei1TUTgtMmlYOz4lWDwycEBAIVE0QDJfQEYhUWQ6SXAhQEk8NClhS0BAIVE0QDJfQEYhUWQ6SXAhQEk8NClhS3o8SV95QEliUnZJPC0pOU5YPD5RNDo+UTh2SWJSKTlqejshakw7OWp5Rkk3eUZJN3lGSSV5NjlRWHYyJSE6cGItJEliUik5akA2MnAhKTIlWHYyJSE6MmktdkklISk+akw8MjdAOjlLOXZhakBGMjdAQElfQDY5UWQkYVE0Oj5RNDpHX0BAOVFkdjY8IUY2PGRGSTd5Rkk3eUZJN0xsIn0=')));
147783
148351
  this.prepareElement(element, settings);
147784
148352
  this.initDefaultFontsAndStyles();
147785
148353
  this.initBars(settings.ribbon, settings.fonts);
@@ -150257,6 +150825,8 @@ class RichEditPublic {
150257
150825
  return this._native.core.innerClientProperties.viewsSettings.viewType;
150258
150826
  }
150259
150827
  set viewType(type) {
150828
+ if (typeof console !== 'undefined' && console.log)
150829
+ console.log(`[RichEdit] ${new Date().toISOString()} PublicAPI.set viewType`, { to: type, stack: new Error().stack });
150260
150830
  const command = this._native.core.commandManager.getCommand(RichEditClientCommand.ChangeViewType);
150261
150831
  command.execute(true, type);
150262
150832
  }