devexpress-richedit 25.1.12 → 25.1.13

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 (53) hide show
  1. package/bin/gulpfile.js +6 -9
  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.d.ts +1 -1
  9. package/dist/dx.richedit.js +392 -185
  10. package/dist/dx.richedit.min.js +3 -3
  11. package/index.d.ts +1 -1
  12. package/index.js +1 -1
  13. package/lib/client/client-rich-edit.js +2 -2
  14. package/lib/client/document-processor/processor.d.ts +1 -0
  15. package/lib/client/document-processor/processor.js +11 -0
  16. package/lib/common/canvas/canvas-manager.d.ts +1 -1
  17. package/lib/common/canvas/canvas-manager.js +7 -3
  18. package/lib/common/canvas/double-tap-detector.d.ts +10 -0
  19. package/lib/common/canvas/double-tap-detector.js +28 -0
  20. package/lib/common/canvas/renderes/common/document-renderer.js +1 -1
  21. package/lib/common/commands/floating-objects/floating-object-drag-drop-change-position-command.js +5 -1
  22. package/lib/common/commands/text/clipboard-commands.d.ts +0 -1
  23. package/lib/common/commands/text/clipboard-commands.js +1 -5
  24. package/lib/common/commands/text/drag-drop-commands.js +2 -0
  25. package/lib/common/layout/main-structures/layout-row.d.ts +2 -1
  26. package/lib/common/layout/main-structures/layout-row.js +1 -0
  27. package/lib/common/layout-formatter/row/formatter.js +4 -1
  28. package/lib/common/layout-formatter/row/result.js +12 -4
  29. package/lib/common/layout-formatter/row/size-engine/row-height-calculator.js +20 -11
  30. package/lib/common/layout-formatter/row/size-engine/row-height-state.d.ts +2 -1
  31. package/lib/common/layout-formatter/row/size-engine/row-height-state.js +7 -2
  32. package/lib/common/layout-formatter/row/utils/line-spacing-calculator.d.ts +4 -3
  33. package/lib/common/layout-formatter/row/utils/line-spacing-calculator.js +16 -14
  34. package/lib/common/layout-formatter/table/borders/border-helper.js +4 -4
  35. package/lib/common/mouse-handler/mouse-handler/mouse-handler-default-state.d.ts +1 -0
  36. package/lib/common/mouse-handler/mouse-handler/mouse-handler-default-state.js +6 -4
  37. package/lib/common/ui/ruler/controls/divisions.d.ts +1 -0
  38. package/lib/common/ui/ruler/controls/divisions.js +4 -0
  39. package/lib/common/ui/ruler/controls/indent/first-line.d.ts +4 -2
  40. package/lib/common/ui/ruler/controls/indent/first-line.js +8 -0
  41. package/lib/common/ui/ruler/controls/indent/left.d.ts +4 -3
  42. package/lib/common/ui/ruler/controls/indent/left.js +10 -8
  43. package/lib/common/ui/ruler/controls/indent/right.d.ts +3 -1
  44. package/lib/common/ui/ruler/controls/indent/right.js +8 -0
  45. package/lib/common/ui/ruler/controls/tab/tab.d.ts +3 -0
  46. package/lib/common/ui/ruler/controls/tab/tab.js +12 -1
  47. package/lib/common/ui/ruler/controls/table.d.ts +4 -1
  48. package/lib/common/ui/ruler/controls/table.js +12 -0
  49. package/lib/common/ui/ruler/layout-recalculation-guard.d.ts +12 -0
  50. package/lib/common/ui/ruler/layout-recalculation-guard.js +23 -0
  51. package/lib/common/ui/ruler/manager.d.ts +3 -0
  52. package/lib/common/ui/ruler/manager.js +29 -0
  53. package/package.json +6 -4
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * DevExpress WebRichEdit (dx.richedit.js)
3
- * Version: 25.1.12
3
+ * Version: 25.1.13
4
4
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
5
5
  * License: https://www.devexpress.com/Support/EULAs",
6
6
  */
@@ -220,8 +220,6 @@ var Browser = (function () {
220
220
  }
221
221
  documentElementClassName += 'dxBrowserVersion-' + Browser.MajorVersion;
222
222
  if (typeof document !== 'undefined' && document && document.documentElement) {
223
- if (document.documentElement.className !== '')
224
- documentElementClassName = ' ' + documentElementClassName;
225
223
  Browser.Info = documentElementClassName;
226
224
  Browser.applyClassNamesOnDemand(document.documentElement, documentElementClassName);
227
225
  }
@@ -230,6 +228,8 @@ var Browser = (function () {
230
228
  return new Promise(function (resolve) {
231
229
  resolveBrowserClassNames = resolve;
232
230
  }).then(function () {
231
+ if (documentElement.className !== '')
232
+ documentElementClassName = ' ' + documentElementClassName;
233
233
  documentElement.className += documentElementClassName;
234
234
  });
235
235
  };
@@ -93764,6 +93764,7 @@ var LayoutRowStateFlags;
93764
93764
  LayoutRowStateFlags[LayoutRowStateFlags["DocumentEnd"] = 16] = "DocumentEnd";
93765
93765
  LayoutRowStateFlags[LayoutRowStateFlags["CellTableEnd"] = 64] = "CellTableEnd";
93766
93766
  LayoutRowStateFlags[LayoutRowStateFlags["PageBreakBefore"] = 128] = "PageBreakBefore";
93767
+ LayoutRowStateFlags[LayoutRowStateFlags["ContainsText"] = 256] = "ContainsText";
93767
93768
  })(LayoutRowStateFlags || (LayoutRowStateFlags = {}));
93768
93769
  class layout_row_LayoutRow extends rectangle.Rectangle {
93769
93770
  get hasEffectToPageHeight() { return this.boxes.length != 1 || !this.boxes[0].isSectionBreakBox; }
@@ -95023,18 +95024,26 @@ class RowFormatterResult {
95023
95024
  this.rowFormatter.manager.activeFormatter.layoutPosition.getLogPosition(DocumentLayoutDetailsLevel.Column);
95024
95025
  const firstBox = this.row.boxes[0];
95025
95026
  const lastVisibleBox = this.getLastVisibleBox();
95026
- if (lastVisibleBox)
95027
- this.row.width = Math.max(this.row.width, lastVisibleBox.right - firstBox.x);
95027
+ if (lastVisibleBox) {
95028
+ const actualContentWidth = Math.max(0, lastVisibleBox.right - firstBox.x);
95029
+ this.row.width = this.rowFormatter.rowSizesManager.isInfinityWidth ?
95030
+ actualContentWidth : Math.max(this.row.width, actualContentWidth);
95031
+ }
95028
95032
  const currState = this.rowFormatter.rowSizesManager.heightCalculator.currState;
95029
95033
  this.row.increaseRowHeightFromSpacingBeforeAndAfter(currState.maxAscent, currState.maxDescent);
95030
95034
  }
95031
95035
  getLastVisibleBox() {
95036
+ let lastVisibleWhitespaceBox = null;
95032
95037
  for (let i = this.row.boxes.length - 1; i >= 0; i--) {
95033
95038
  const box = this.row.boxes[i];
95034
- if (box.isVisible() && !box.isWhitespace())
95039
+ if (!box.isVisible())
95040
+ continue;
95041
+ if (!box.isWhitespace())
95035
95042
  return box;
95043
+ if (!lastVisibleWhitespaceBox)
95044
+ lastVisibleWhitespaceBox = box;
95036
95045
  }
95037
- return null;
95046
+ return lastVisibleWhitespaceBox;
95038
95047
  }
95039
95048
  addBracketBox(boxType, color, x, layoutBox) {
95040
95049
  const box = new BookmarkBox(boxType);
@@ -96080,19 +96089,21 @@ class LineSpacingCalculator {
96080
96089
  return new SingleSpacingCalculator();
96081
96090
  }
96082
96091
  }
96083
- calculate(rowHeight, maxAscent, maxDescent, maxPictureHeight) {
96084
- const maxTextHeight = maxAscent + maxDescent;
96085
- if (maxTextHeight == 0)
96092
+ calculate(rowHeight, maxAscent, maxDescent, maxPictureHeight, containsText) {
96093
+ if (maxAscent == 0 && maxDescent == 0)
96086
96094
  return rowHeight;
96087
- const rowTextSpacing = this.calculateSpacing(maxTextHeight);
96088
- if (!maxPictureHeight || maxAscent > maxPictureHeight)
96095
+ const descent = this.calculateDescent(maxAscent, maxDescent, maxPictureHeight, containsText);
96096
+ const textHeight = maxAscent + descent;
96097
+ const rowTextSpacing = this.calculateSpacing(textHeight);
96098
+ if (!maxPictureHeight || textHeight > maxPictureHeight)
96089
96099
  return rowTextSpacing;
96090
- else {
96091
- if (maxDescent == 0)
96092
- return rowHeight;
96093
- else
96094
- return this.calculateSpacingInlineObjectCase(maxTextHeight, rowTextSpacing, maxPictureHeight, maxDescent);
96095
- }
96100
+ else
96101
+ return this.calculateSpacingInlineObjectCase(textHeight, rowTextSpacing, maxPictureHeight, descent);
96102
+ }
96103
+ calculateDescent(maxAscent, maxDescent, maxPictureHeight, containsText) {
96104
+ if (!containsText && maxPictureHeight !== 0)
96105
+ return (maxPictureHeight >= maxAscent + maxDescent) ? 0 : maxDescent;
96106
+ return maxDescent;
96096
96107
  }
96097
96108
  }
96098
96109
  class MultipleSpacingCalculator extends LineSpacingCalculator {
@@ -96144,7 +96155,7 @@ class ExactlySpacingCalculator extends LineSpacingCalculator {
96144
96155
  calculateSpacingInlineObjectCase(_maxTextHeight, _rowTextSpacing, _maxPictureHeight, _maxDescent) {
96145
96156
  throw new Error(lib_errors/* Errors */.D.NotImplemented);
96146
96157
  }
96147
- calculate(_rowHeight, _maxAscent, _maxDescent, _maxPictureHeight) {
96158
+ calculate(_rowHeight, _maxAscent, _maxDescent, _maxPictureHeight, _containsText) {
96148
96159
  return this.lineSpacing;
96149
96160
  }
96150
96161
  }
@@ -96155,8 +96166,8 @@ class AtLeastSpacingCalculator extends SingleSpacingCalculator {
96155
96166
  throw new Error(argumentException("lineSpacing", lineSpacing));
96156
96167
  this.lineSpacing = lineSpacing;
96157
96168
  }
96158
- calculate(rowHeight, maxAscent, maxDescent, maxPictureHeight) {
96159
- var result = super.calculate(rowHeight, maxAscent, maxDescent, maxPictureHeight);
96169
+ calculate(rowHeight, maxAscent, maxDescent, maxPictureHeight, containsText) {
96170
+ var result = super.calculate(rowHeight, maxAscent, maxDescent, maxPictureHeight, containsText);
96160
96171
  return Math.max(result, this.lineSpacing);
96161
96172
  }
96162
96173
  }
@@ -96165,23 +96176,27 @@ function argumentException(argument, value) {
96165
96176
  }
96166
96177
 
96167
96178
  ;// CONCATENATED MODULE: ./src/common/layout-formatter/row/size-engine/row-height-state.ts
96179
+
96168
96180
  class RowHeightState {
96169
- constructor(maxBoxHeight, maxAscent, maxDescent, maxPictureBoxHeight) {
96181
+ constructor(maxBoxHeight, maxAscent, maxDescent, maxPictureBoxHeight, containsText) {
96170
96182
  this.maxBoxHeight = maxBoxHeight;
96171
96183
  this.maxAscent = maxAscent;
96172
96184
  this.maxDescent = maxDescent;
96173
96185
  this.maxPictureBoxHeight = maxPictureBoxHeight;
96186
+ this.containsText = containsText;
96174
96187
  }
96175
96188
  initFromRow(row) {
96176
96189
  this.height = row.height;
96177
96190
  this.baseLine = row.baseLine;
96178
96191
  this.spacingBefore = row.getSpacingBefore();
96192
+ this.containsText = row.flags.get(LayoutRowStateFlags.ContainsText);
96179
96193
  }
96180
96194
  applyToRow(row) {
96181
96195
  row.rollbackSpacingBefore();
96182
96196
  row.applySpacingBefore(this.spacingBefore);
96183
96197
  row.height = this.height;
96184
96198
  row.baseLine = this.baseLine;
96199
+ row.flags.set(LayoutRowStateFlags.ContainsText, this.containsText);
96185
96200
  }
96186
96201
  getFullRowHeight() {
96187
96202
  return this.height + this.spacingBefore;
@@ -96190,7 +96205,8 @@ class RowHeightState {
96190
96205
  return this.maxBoxHeight == obj.maxBoxHeight &&
96191
96206
  this.maxAscent == obj.maxAscent &&
96192
96207
  this.maxDescent == obj.maxDescent &&
96193
- this.maxPictureBoxHeight == obj.maxPictureBoxHeight;
96208
+ this.maxPictureBoxHeight == obj.maxPictureBoxHeight &&
96209
+ this.containsText == obj.containsText;
96194
96210
  }
96195
96211
  }
96196
96212
 
@@ -96201,6 +96217,7 @@ class RowHeightState {
96201
96217
 
96202
96218
 
96203
96219
 
96220
+
96204
96221
  class RowHeightCalculator {
96205
96222
  get row() {
96206
96223
  return this.rowFormatter.row;
@@ -96209,7 +96226,7 @@ class RowHeightCalculator {
96209
96226
  this.rowFormatter = rowFormatter;
96210
96227
  this.rowSpacingBeforeApplier = rowSpacingBeforeApplier;
96211
96228
  this.lineSpacingCalculator = LineSpacingCalculator.create(this.rowFormatter.paragraphProps.lineSpacing, this.rowFormatter.paragraphProps.lineSpacingType);
96212
- this.currState = new RowHeightState(0, 0, 0, 0);
96229
+ this.currState = new RowHeightState(0, 0, 0, 0, false);
96213
96230
  this.currState.height = 0;
96214
96231
  this.currState.baseLine = 0;
96215
96232
  this.currState.spacingBefore = 0;
@@ -96222,11 +96239,11 @@ class RowHeightCalculator {
96222
96239
  case LayoutBoxType.FieldCodeStart:
96223
96240
  case LayoutBoxType.FieldCodeEnd:
96224
96241
  case LayoutBoxType.Dash: {
96225
- info = new RowHeightState(Math.max(box.height, this.currState.maxBoxHeight), Math.max(box.getAscent(), this.currState.maxAscent), Math.max(box.getDescent(), this.currState.maxDescent), this.currState.maxPictureBoxHeight);
96242
+ info = new RowHeightState(Math.max(box.height, this.currState.maxBoxHeight), Math.max(box.getAscent(), this.currState.maxAscent), Math.max(box.getDescent(), this.currState.maxDescent), this.currState.maxPictureBoxHeight, this.currState.containsText || true);
96226
96243
  break;
96227
96244
  }
96228
96245
  case LayoutBoxType.Picture: {
96229
- info = new RowHeightState(Math.max(box.height, this.currState.maxBoxHeight), this.currState.maxAscent, this.currState.maxDescent, Math.max(box.height, this.currState.maxPictureBoxHeight));
96246
+ info = new RowHeightState(Math.max(box.height, this.currState.maxBoxHeight), this.currState.maxAscent, this.currState.maxDescent, Math.max(box.height, this.currState.maxPictureBoxHeight), this.currState.containsText || false);
96230
96247
  break;
96231
96248
  }
96232
96249
  default:
@@ -96237,7 +96254,7 @@ class RowHeightCalculator {
96237
96254
  calcNewState(newInfo) {
96238
96255
  if (this.currState.equalHeights(newInfo) || newInfo.maxBoxHeight == 0)
96239
96256
  return this.currState;
96240
- this.calcRowParams(newInfo.maxBoxHeight, newInfo.maxAscent, newInfo.maxDescent, newInfo.maxPictureBoxHeight);
96257
+ this.calcRowParams(newInfo.maxBoxHeight, newInfo.maxAscent, newInfo.maxDescent, newInfo.maxPictureBoxHeight, newInfo.containsText);
96241
96258
  newInfo.initFromRow(this.row);
96242
96259
  return newInfo;
96243
96260
  }
@@ -96268,7 +96285,7 @@ class RowHeightCalculator {
96268
96285
  }
96269
96286
  }
96270
96287
  applyT584234Height(b) {
96271
- const info = new RowHeightState(Math.max(b.height, this.currState.maxBoxHeight), Math.max(b.getAscent(), this.currState.maxAscent), Math.max(b.getDescent(), this.currState.maxDescent), this.currState.maxPictureBoxHeight);
96288
+ const info = new RowHeightState(Math.max(b.height, this.currState.maxBoxHeight), Math.max(b.getAscent(), this.currState.maxAscent), Math.max(b.getDescent(), this.currState.maxDescent), this.currState.maxPictureBoxHeight, this.currState.containsText);
96272
96289
  this.applyState(this.calcNewState(info));
96273
96290
  }
96274
96291
  setFinalRowParams() {
@@ -96281,23 +96298,31 @@ class RowHeightCalculator {
96281
96298
  const lastBox = utils_list.ListUtils.last(row.boxes);
96282
96299
  if (!lastBox && utils_list.ListUtils.unsafeAnyOf(this.rowFormatter.result.newAnchoredObjects, (obj) => obj.levelType == AnchoredObjectLevelType.InText))
96283
96300
  return true;
96284
- this.calcRowParams(lastBox.height, lastBox.getAscent(), lastBox.getDescent(), this.currState.maxPictureBoxHeight);
96301
+ this.calcRowParams(lastBox.height, lastBox.getAscent(), lastBox.getDescent(), this.currState.maxPictureBoxHeight, this.currState.containsText);
96285
96302
  this.currState.initFromRow(this.row);
96286
96303
  return false;
96287
96304
  }
96288
- calcRowParams(maxBoxHeight, maxAscent, maxDescent, maxPictureBoxHeight) {
96305
+ calcRowParams(maxBoxHeight, maxAscent, maxDescent, maxPictureBoxHeight, containsText) {
96289
96306
  const row = this.row;
96290
96307
  row.rollbackSpacingBefore();
96291
- row.height = this.lineSpacingCalculator.calculate(maxBoxHeight, maxAscent, maxDescent, maxPictureBoxHeight);
96308
+ row.flags.set(LayoutRowStateFlags.ContainsText, containsText);
96309
+ row.height = this.lineSpacingCalculator.calculate(maxBoxHeight, maxAscent, maxDescent, maxPictureBoxHeight, containsText);
96310
+ const descent = this.lineSpacingCalculator.calculateDescent(maxAscent, maxDescent, maxPictureBoxHeight, containsText);
96292
96311
  switch (this.rowFormatter.paragraphProps.lineSpacingType) {
96293
96312
  case ParagraphLineSpacingType.AtLeast:
96294
96313
  case ParagraphLineSpacingType.Exactly:
96295
- row.baseLine = Math.max(0, row.height - maxDescent);
96314
+ row.baseLine = Math.max(0, row.height - descent);
96296
96315
  row.lineHeight = row.height;
96297
96316
  break;
96298
96317
  default:
96299
- row.baseLine = Math.max(maxAscent, maxPictureBoxHeight);
96300
- row.lineHeight = Math.max(maxAscent + maxDescent, maxPictureBoxHeight);
96318
+ const textHeight = maxAscent + descent;
96319
+ if (textHeight < maxPictureBoxHeight)
96320
+ row.baseLine = maxPictureBoxHeight;
96321
+ else if (!containsText && maxPictureBoxHeight > 0)
96322
+ row.baseLine = textHeight;
96323
+ else
96324
+ row.baseLine = maxAscent;
96325
+ row.lineHeight = Math.max(textHeight, maxPictureBoxHeight);
96301
96326
  }
96302
96327
  this.rowSpacingBeforeApplier.apply(this.row, this.rowFormatter.result.paragraphIndex);
96303
96328
  }
@@ -96991,9 +97016,12 @@ class RowFormatter {
96991
97016
  const prevRow = this.manager.activeFormatter.lastRowInfo.row;
96992
97017
  const isFirstRowInParagraph = !prevRow || prevRow.flags.get(LayoutRowStateFlags.ParagraphEnd) ||
96993
97018
  this.manager.activeFormatter.lastRowInfo.paragraphIndex != this.currWrapInfo.paragraphIndex;
96994
- const rowParagraphLeftIndent = isFirstRowInParagraph ?
97019
+ let rowParagraphLeftIndent = isFirstRowInParagraph ?
96995
97020
  unit_converter/* UnitConverter */.u.twipsToPixelsF(this.paragraphProps.getLeftIndentForFirstRow()) :
96996
97021
  unit_converter/* UnitConverter */.u.twipsToPixelsF(this.paragraphProps.getLeftIndentForOtherRow());
97022
+ if (this.manager.innerClientProperties.viewsSettings.isSimpleView) {
97023
+ rowParagraphLeftIndent = Math.max(0, rowParagraphLeftIndent);
97024
+ }
96997
97025
  const rowContentHorizontalBounds = fixed.FixedInterval.fromPositions(paragraphHorizontalBounds.start + rowParagraphLeftIndent, paragraphHorizontalBounds.end - unit_converter/* UnitConverter */.u.twipsToPixelsF(this.paragraphProps.rightIndent));
96998
97026
  this.rowSizesManager = new RowSizesManager(this, rowContentHorizontalBounds, minY, rowSpacingBeforeApplier, this.manager.activeFormatter.layoutRowBoundsCalculator.getRectangleBounds(this.manager), isFirstRowInParagraph);
96999
97027
  this.tabInfo = new RowTabInfo(this, paragraphHorizontalBounds.start);
@@ -97620,7 +97648,7 @@ class BorderHelper {
97620
97648
  constructor(tableInfo, model) {
97621
97649
  this.colorProvider = model.colorProvider;
97622
97650
  this.tableInfo = tableInfo;
97623
- this.tblbrdProvider = new TableBorderInfoProvider(model, tableInfo.table, unit_converter/* UnitConverter */.u.twipsToPixels);
97651
+ this.tblbrdProvider = new TableBorderInfoProvider(model, tableInfo.table, unit_converter/* UnitConverter */.u.twipsToPixelsF);
97624
97652
  }
97625
97653
  getVerticalBorders() {
97626
97654
  const verticalBorders = [];
@@ -97708,7 +97736,7 @@ class BorderHelper {
97708
97736
  return new LayoutCursorVerticalTableBorder(Math.floor(modelXPos - size / 2), 0, 0, new BorderInfo().getLayoutBorder(this.colorProvider));
97709
97737
  }
97710
97738
  mergeVerticalBorders(cellA, mergerCellA, cellB, mergerCellB, isOutsideCellBorders, tableBorderInfo, getX) {
97711
- const brd = BorderHelper.mergeThreeBorders(this.colorProvider, cellA, mergerCellA, cellB, mergerCellB, isOutsideCellBorders, tableBorderInfo, this.tblStyle, unit_converter/* UnitConverter */.u.twipsToPixels);
97739
+ const brd = BorderHelper.mergeThreeBorders(this.colorProvider, cellA, mergerCellA, cellB, mergerCellB, isOutsideCellBorders, tableBorderInfo, this.tblStyle, unit_converter/* UnitConverter */.u.twipsToPixelsF);
97712
97740
  const tableVerticalBorder = new LayoutTableBorder(0, 0, 0, brd ? brd.getLayoutBorder(this.colorProvider) : null);
97713
97741
  if (tableVerticalBorder.borderInfo)
97714
97742
  tableVerticalBorder.xPos = getX(tableVerticalBorder.borderInfo.width);
@@ -97766,7 +97794,7 @@ class BorderHelper {
97766
97794
  const currCellEndGridColumn = Math.ceil(this.grid.columns.positions[currCellGridStartIndex + cell.columnSpan] - rowCellSpacing * (cellIndex == cells.length - 1 ? 2 : 1));
97767
97795
  const currCellBorder = getCurrCellBorderMerger ?
97768
97796
  TableBorderInfoProvider.borderConvertToPixels((new getCurrCellBorderMerger(cell.parentRow.tablePropertiesException, !isTableBorderRowIndexValid))
97769
- .getProperty(cell.properties, this.tblStyle, cell.conditionalFormatting, null), unit_converter/* UnitConverter */.u.twipsToPixels) :
97797
+ .getProperty(cell.properties, this.tblStyle, cell.conditionalFormatting, null), unit_converter/* UnitConverter */.u.twipsToPixelsF) :
97770
97798
  null;
97771
97799
  const horizBorder = new LayoutTableHorizontalBorder();
97772
97800
  horizBorder.xPosition = currCellXPosition;
@@ -97797,7 +97825,7 @@ class BorderHelper {
97797
97825
  const horizBorder = new LayoutTableHorizontalBorder();
97798
97826
  horizBorder.xPosition = Math.floor(this.grid.columns.positions[cellGridIndex]);
97799
97827
  horizBorder.length = Math.ceil(this.grid.columns.width[cellGridIndex]);
97800
- const brd = BorderHelper.mergeThreeBorders(this.colorProvider, currCell, getCurrCellBorderMerger, prevCell, getTopCellBorderMerger, false, tableBorderInfo, this.tblStyle, unit_converter/* UnitConverter */.u.twipsToPixels);
97828
+ const brd = BorderHelper.mergeThreeBorders(this.colorProvider, currCell, getCurrCellBorderMerger, prevCell, getTopCellBorderMerger, false, tableBorderInfo, this.tblStyle, unit_converter/* UnitConverter */.u.twipsToPixelsF);
97801
97829
  horizBorder.borderInfo = brd ? brd.getLayoutBorder(this.colorProvider) : null;
97802
97830
  horizBordersInfo.updateWidth(horizBorder.borderInfo ? horizBorder.borderInfo.width : 0);
97803
97831
  horizBordersInfo.borders.push(horizBorder);
@@ -105292,7 +105320,7 @@ class DocumentRenderer {
105292
105320
  }
105293
105321
  if ((0,common.isDefined)(altText) && !utils_string.StringUtils.isNullOrEmpty(altText))
105294
105322
  img.alt = altText;
105295
- img.style.cssText = `height: ${math.MathUtils.round(size.height, 3)}px; width: ${math.MathUtils.round(size.width, 3)}px; vertical-align: baseline`;
105323
+ img.style.cssText = `height: ${math.MathUtils.round(size.height, 3)}px; width: ${math.MathUtils.round(size.width, 3)}px`;
105296
105324
  img.setAttribute('class', RendererClassNames.PICTURE);
105297
105325
  return img;
105298
105326
  }
@@ -106510,7 +106538,11 @@ class FloatingObjectDragDropChangePositionCommand extends CommandBase {
106510
106538
  moveOutsideTable(oldRun, oldRunPos, endPageIndex, pagePosition) {
106511
106539
  this.removeOldRun(oldRun, oldRunPos);
106512
106540
  this.control.layoutFormatterManager.forceFormatPage(endPageIndex);
106513
- const layoutPoint = new LayoutPoint(Math.min(endPageIndex, this.control.layout.pages.length), pagePosition.x, pagePosition.y);
106541
+ if (endPageIndex >= this.control.layout.pages.length) {
106542
+ this.addRun(oldRun, oldRunPos, oldRun.anchorInfo);
106543
+ return;
106544
+ }
106545
+ const layoutPoint = new LayoutPoint(endPageIndex, pagePosition.x, pagePosition.y);
106514
106546
  const htr = this.control.hitTestManager.calculate(layoutPoint, DocumentLayoutDetailsLevel.Row, this.activeSubDocument);
106515
106547
  const paragraphStartHTR = this.findParagraphStartOnThisPage(htr);
106516
106548
  const newLogPos = this.getNewLogPosition(this.activeSubDocument, paragraphStartHTR);
@@ -107584,12 +107616,9 @@ class MouseHandlerDefaultState extends MouseHandlerStateBase {
107584
107616
  }
107585
107617
  isLeftAreaOffset(htr, evt) {
107586
107618
  if (htr) {
107587
- const columnX = htr.pageArea.x + htr.column.x;
107588
- const rowX = columnX + htr.row.x;
107589
- const leftAreaX = Math.min(columnX - MouseHandler.LEFT_AREA_COMMANDS_OFFSET, rowX);
107590
107619
  if (htr.exactlyDetailLevel >= DocumentLayoutDetailsLevel.Page &&
107591
107620
  htr.deviations[DocumentLayoutDetailsLevel.Column] & rectangle.HitTestDeviation.Left &&
107592
- evt.layoutPoint.x <= leftAreaX)
107621
+ evt.layoutPoint.x <= this.getLeftAreaOffset(htr))
107593
107622
  return true;
107594
107623
  if (htr.detailsLevel >= DocumentLayoutDetailsLevel.Box &&
107595
107624
  htr.exactlyDetailLevel >= DocumentLayoutDetailsLevel.Row &&
@@ -107603,6 +107632,11 @@ class MouseHandlerDefaultState extends MouseHandlerStateBase {
107603
107632
  }
107604
107633
  return false;
107605
107634
  }
107635
+ getLeftAreaOffset(htr) {
107636
+ const columnX = htr.pageArea.x + htr.column.x;
107637
+ const rowX = columnX + htr.row.x;
107638
+ return Math.min(columnX - MouseHandler.LEFT_AREA_COMMANDS_OFFSET, rowX);
107639
+ }
107606
107640
  shouldProcessResizeBoxVisualizer(evt) {
107607
107641
  return this.handler.boxVisualizerManager.resizeBoxVisualizer.shouldCapture(evt) &&
107608
107642
  this.handler.control.selection.activeSubDocument.isEditable([new fixed.FixedInterval(this.handler.control.selection.specialRunInfo.getPosition(), 1)]);
@@ -108845,6 +108879,36 @@ class RichMouseEvent {
108845
108879
  }
108846
108880
  }
108847
108881
 
108882
+ ;// CONCATENATED MODULE: ./src/common/canvas/double-tap-detector.ts
108883
+ class DoubleTapDetector {
108884
+ constructor(maxDistance, maxInterval) {
108885
+ this.maxDistance = maxDistance;
108886
+ this.maxInterval = maxInterval;
108887
+ this.lastTime = null;
108888
+ this.lastX = -1;
108889
+ this.lastY = -1;
108890
+ }
108891
+ isDoubleTap(x, y) {
108892
+ const now = Date.now();
108893
+ const result = this.lastTime !== null &&
108894
+ (now - this.lastTime) < this.maxInterval &&
108895
+ Math.abs(x - this.lastX) <= this.maxDistance &&
108896
+ Math.abs(y - this.lastY) <= this.maxDistance;
108897
+ if (result) {
108898
+ this.reset();
108899
+ }
108900
+ else {
108901
+ this.lastTime = now;
108902
+ this.lastX = x;
108903
+ this.lastY = y;
108904
+ }
108905
+ return result;
108906
+ }
108907
+ reset() {
108908
+ this.lastTime = null;
108909
+ }
108910
+ }
108911
+
108848
108912
  ;// CONCATENATED MODULE: ./src/common/canvas/listeners/resize-box-listener.ts
108849
108913
 
108850
108914
 
@@ -109129,11 +109193,14 @@ class MixedSize {
109129
109193
 
109130
109194
 
109131
109195
 
109196
+
109132
109197
  const SCROLL_INTERVAL_MS = 50;
109133
109198
  const CSSCLASS_FOCUSED = "dxreInFocus";
109134
109199
  const AUTOSCROLL_AREA_SIZE = 10;
109135
109200
  const AUTOSCROLL_STEP = 10;
109136
109201
  const MSTOUCH_MOVE_SENSITIVITY = 5;
109202
+ const DOUBLE_TAP_MAX_DISTANCE = 20;
109203
+ const DOUBLE_TAP_MAX_INTERVAL = 600;
109137
109204
  class CanvasManager extends batch_updatable/* BatchUpdatableObject */.IS {
109138
109205
  get sizes() { return this.viewManager.sizes; }
109139
109206
  get scroll() { return this.viewManager.scroll; }
@@ -109142,6 +109209,7 @@ class CanvasManager extends batch_updatable/* BatchUpdatableObject */.IS {
109142
109209
  super();
109143
109210
  this.lastMousePosition = { x: -1, y: -1 };
109144
109211
  this.canvasPosition = { x: -1, y: -1 };
109212
+ this.doubleTapDetector = new DoubleTapDetector(DOUBLE_TAP_MAX_DISTANCE, DOUBLE_TAP_MAX_INTERVAL);
109145
109213
  this.pointer = CursorPointer.Auto;
109146
109214
  this.blockNotPointerEvents = false;
109147
109215
  this.lastPointerPosition = { x: -1, y: -1 };
@@ -109252,12 +109320,12 @@ class CanvasManager extends batch_updatable/* BatchUpdatableObject */.IS {
109252
109320
  onCanvasTouchStartInternal(evt) {
109253
109321
  this.saveMousePosition(evt);
109254
109322
  let richMouseEvent = new RichMouseEvent(evt, this.getLayoutPoint(evt, true), CanvasManager.getMouseEventSource(utils_evt/* EvtUtils */.g.getEventSource(evt)), this.scroll.lastScrollTop, this.scroll.lastScrollLeft);
109255
- if (this.doubleTapStartDate && ((new Date()) - this.doubleTapStartDate) < 600) {
109256
- this.doubleTapStartDate = null;
109323
+ const evtX = utils_evt/* EvtUtils */.g.getEventX(evt);
109324
+ const evtY = utils_evt/* EvtUtils */.g.getEventY(evt);
109325
+ if (this.doubleTapDetector.isDoubleTap(evtX, evtY)) {
109257
109326
  this.onCanvasDoubleTap(richMouseEvent);
109258
109327
  }
109259
109328
  else {
109260
- this.doubleTapStartDate = new Date();
109261
109329
  this.eventManager.onTouchStart(richMouseEvent);
109262
109330
  }
109263
109331
  }
@@ -114265,6 +114333,10 @@ class RulerDivisionsControl extends RulerBase {
114265
114333
  this.rootElement.offsetParent;
114266
114334
  this.render();
114267
114335
  }
114336
+ recalculateLayout() {
114337
+ this._height = SizeUtils.getOffsetHeight(this.rootElement);
114338
+ this.render();
114339
+ }
114268
114340
  render() {
114269
114341
  const unitCount = Math.ceil(this.maxPageWidth / this.divisionInfo.unitSize);
114270
114342
  this.rootElement.style.width = this.divisionInfo.unitSize * (unitCount * 2 + 1) + "px";
@@ -114550,6 +114622,14 @@ class RulerFirstLineIndentDragHandle extends RulerBaseIndentControl {
114550
114622
  this.rootElement.innerHTML = template;
114551
114623
  this.rootElement.title = this.modelData.titles.firstLineIndent;
114552
114624
  this.controls.ruler.rootElement.appendChild(this.rootElement);
114625
+ this.applyLayout();
114626
+ }
114627
+ recalculateLayout() {
114628
+ this.applyLayout();
114629
+ if (this.modelData.showLeftIndent)
114630
+ this.rootElement.style.left = this.viewState + RULLER_NUMBER_CORRECTION - this.leftCorrection + "px";
114631
+ }
114632
+ applyLayout() {
114553
114633
  this.adjustByTop();
114554
114634
  this.leftCorrection = Math.round(SizeUtils.getOffsetWidth(this.rootElement) / 2);
114555
114635
  this._heightOfProtrudingPart = SizeUtils.getOffsetHeight(this.rootElement) - this.controls.divisions.height / 2;
@@ -114616,23 +114696,25 @@ class RulerLeftIndentDragHandle extends RulerBaseIndentControl {
114616
114696
  this.rootElement.appendChild(this.topElement);
114617
114697
  this.rootElement.appendChild(this.bodyElement);
114618
114698
  this.controls.ruler.rootElement.appendChild(this.rootElement);
114619
- this.adjustByTop();
114699
+ this.bodyElement.title = this.modelData.titles.leftIndent;
114700
+ this.topElement.title = this.modelData.titles.hangingIndent;
114701
+ this.applyLayout();
114702
+ }
114703
+ recalculateLayout() {
114704
+ this.applyLayout();
114705
+ if (this.modelData.showLeftIndent)
114706
+ this.rootElement.style.left = this.viewState + RULLER_NUMBER_CORRECTION - this.leftCorrection + "px";
114707
+ }
114708
+ applyLayout() {
114620
114709
  const mainElementWidth = this.topElement.offsetWidth;
114621
114710
  this.bodyElement.style.width = mainElementWidth + "px";
114622
114711
  const style = this.rootElement.style;
114623
114712
  style.height = SizeUtils.getOffsetHeight(this.topElement) + SizeUtils.getOffsetHeight(this.bodyElement) + "px";
114624
114713
  style.width = mainElementWidth + "px";
114625
114714
  style.marginTop = this.controls.divisions.height / 2 + "px";
114626
- this.bodyElement.title = this.modelData.titles.leftIndent;
114627
- this.topElement.title = this.modelData.titles.hangingIndent;
114628
114715
  this.leftCorrection = Math.round(SizeUtils.getOffsetWidth(this.rootElement) / 2);
114629
114716
  this._heightOfProtrudingPart = SizeUtils.getOffsetHeight(this.rootElement) - this.controls.divisions.height / 2;
114630
114717
  }
114631
- adjustByTop() {
114632
- const mainElementHeight = SizeUtils.getOffsetHeight(this.rootElement);
114633
- const divisionsControlHeight = this.controls.divisions.height;
114634
- this.rootElement.style.marginTop = (mainElementHeight - divisionsControlHeight) / 2 + "px";
114635
- }
114636
114718
  getModelState() {
114637
114719
  const state = this.modelData.commandManager.getCommand(RichEditClientCommand.RulerParagraphLeftIndents).getState();
114638
114720
  return new RulerModelState(state.value.hanging, state.enabled, this.modelData);
@@ -114714,6 +114796,14 @@ class RulerRightIndentDragHandle extends RulerBaseIndentControl {
114714
114796
  this.rootElement.innerHTML = template;
114715
114797
  this.rootElement.title = this.modelData.titles.rightIndent;
114716
114798
  this.controls.ruler.rootElement.appendChild(this.rootElement);
114799
+ this.applyLayout();
114800
+ }
114801
+ recalculateLayout() {
114802
+ this.applyLayout();
114803
+ if (this.modelData.showRightIndent)
114804
+ this.rootElement.style.right = this.viewState + RULLER_NUMBER_CORRECTION - this.leftCorrection + "px";
114805
+ }
114806
+ applyLayout() {
114717
114807
  this.adjustByTop();
114718
114808
  this.leftCorrection = Math.round(this.rootElement.offsetWidth / 2);
114719
114809
  }
@@ -115088,6 +115178,10 @@ class RulerTabsControl extends RulerMultiControl {
115088
115178
  this.newTab = null;
115089
115179
  this.deleteTab = false;
115090
115180
  }
115181
+ recalculateSubControlLayouts() {
115182
+ for (const control of this.subControls)
115183
+ control.recalculateLayout();
115184
+ }
115091
115185
  getModelState() {
115092
115186
  this.modelData.showTabs = this.modelData.commandManager.getCommand(RichEditClientCommand.InsertTabRuler).getState().enabled;
115093
115187
  if (this.modelData.showTabs) {
@@ -115235,7 +115329,14 @@ class RulerTabControl {
115235
115329
  this.rootElement = DocumentRenderer.renderContainer(modelData.styles.tab.className + " " + RulerTabUtils.getSpriteClassName(this.viewState.align, modelData.styles));
115236
115330
  this.applyTemplate();
115237
115331
  controls.ruler.rootElement.appendChild(this.rootElement);
115238
- this.rootElement.style.marginTop = (controls.divisions.height - this.rootElement.offsetHeight) + "px";
115332
+ this.applyLayout();
115333
+ }
115334
+ recalculateLayout() {
115335
+ this.applyLayout();
115336
+ this.rootElement.style.left = this.viewState.position - this.leftCorrection + RULLER_NUMBER_CORRECTION + "px";
115337
+ }
115338
+ applyLayout() {
115339
+ this.rootElement.style.marginTop = (this.controls.divisions.height - this.rootElement.offsetHeight) + "px";
115239
115340
  this.setCorrection();
115240
115341
  }
115241
115342
  dispose() {
@@ -115993,6 +116094,10 @@ class RulerTableColumnViewState {
115993
116094
  }
115994
116095
  }
115995
116096
  class RulerTablesControl extends RulerMultiControl {
116097
+ recalculateSubControlLayouts() {
116098
+ for (const control of this.subControls)
116099
+ control.recalculateLayout();
116100
+ }
115996
116101
  getModelState() {
115997
116102
  const state = this.modelData.commandManager.getCommand(RichEditClientCommand.RulerTableColumnSeparators).getState();
115998
116103
  return state.enabled ?
@@ -116060,6 +116165,14 @@ class RulerTableColumnState {
116060
116165
  this.separatorElement.innerHTML = template;
116061
116166
  this.rootElement.appendChild(this.separatorElement);
116062
116167
  controls.ruler.rootElement.appendChild(this.rootElement);
116168
+ this.applyLayout();
116169
+ }
116170
+ recalculateLayout() {
116171
+ this.applyLayout();
116172
+ if (this.viewState)
116173
+ this.separatorElement.style.left = this.viewState.rightMarginOfPrevColumn - this.corectionValue + "px";
116174
+ }
116175
+ applyLayout() {
116063
116176
  this.corectionValue = Math.floor(this.separatorElement.offsetWidth / 2);
116064
116177
  }
116065
116178
  dispose() {
@@ -116313,6 +116426,31 @@ class RulerMouseHandler {
116313
116426
  }
116314
116427
  }
116315
116428
 
116429
+ ;// CONCATENATED MODULE: ./src/common/ui/ruler/layout-recalculation-guard.ts
116430
+ const DEFAULT_SVG_SIZE = 300;
116431
+ function installLayoutRecalculationGuard(options) {
116432
+ const { divisions, leftIndent, divisionsHeight, leftIndentWidth, onHealthy } = options;
116433
+ const isSuspicious = divisionsHeight === 0 || leftIndentWidth >= DEFAULT_SVG_SIZE;
116434
+ if (!isSuspicious)
116435
+ return null;
116436
+ const targets = [divisions.rootElement, leftIndent.rootElement];
116437
+ const initialSizes = targets.map(el => ({ width: el.offsetWidth, height: el.offsetHeight }));
116438
+ const observer = new ResizeObserver(() => {
116439
+ const hasRealChange = targets.some((el, i) => {
116440
+ const w = el.offsetWidth;
116441
+ const h = el.offsetHeight;
116442
+ const changed = w !== initialSizes[i].width || h !== initialSizes[i].height;
116443
+ return changed && (w > 0 || h > 0);
116444
+ });
116445
+ if (!hasRealChange)
116446
+ return;
116447
+ observer.disconnect();
116448
+ onHealthy();
116449
+ });
116450
+ targets.forEach(el => observer.observe(el));
116451
+ return observer;
116452
+ }
116453
+
116316
116454
  ;// CONCATENATED MODULE: ./src/common/ui/ruler/manager.ts
116317
116455
 
116318
116456
 
@@ -116333,6 +116471,7 @@ class RulerMouseHandler {
116333
116471
 
116334
116472
 
116335
116473
 
116474
+
116336
116475
 
116337
116476
 
116338
116477
  class RulerControls {
@@ -116357,6 +116496,7 @@ class RulerControls {
116357
116496
  constructor(canvas, modelData) {
116358
116497
  this.mouseEventsManager = new RulerMouseEventsManager();
116359
116498
  this.viewElementScrollManager = new RulerViewElementScrollManager();
116499
+ this.layoutRecalculationObserver = null;
116360
116500
  this.canvas = canvas;
116361
116501
  this.modelData = modelData;
116362
116502
  this.divisionInfo = DivisionInfo.create(modelData.unitType, this.modelData.innerClientProperties.viewsSettings);
@@ -116380,6 +116520,29 @@ class RulerControls {
116380
116520
  this.mouseHandler = new RulerMouseHandler(modelData, this);
116381
116521
  this.mouseEventsManager.addListener(this.mouseHandler);
116382
116522
  this.viewElementScrollManager.addListener(this.ruler, this.canvas);
116523
+ this.setupLayoutRecalculationGuard();
116524
+ }
116525
+ setupLayoutRecalculationGuard() {
116526
+ this.layoutRecalculationObserver = installLayoutRecalculationGuard({
116527
+ divisions: this.divisions,
116528
+ leftIndent: this.leftIndent,
116529
+ divisionsHeight: this.divisions.height,
116530
+ leftIndentWidth: this.leftIndent.leftCorrection * 2,
116531
+ onHealthy: () => {
116532
+ this.layoutRecalculationObserver = null;
116533
+ this.recalculateLayout();
116534
+ },
116535
+ });
116536
+ }
116537
+ recalculateLayout() {
116538
+ this.divisions.recalculateLayout();
116539
+ this.leftIndent.recalculateLayout();
116540
+ this.firstLineIndent.recalculateLayout();
116541
+ this.rightIndent.recalculateLayout();
116542
+ this.tabs.recalculateSubControlLayouts();
116543
+ this.tables.recalculateSubControlLayouts();
116544
+ this.ruler.init();
116545
+ this.tabTypeBox.adjust();
116383
116546
  }
116384
116547
  calculateMoveStepSize() {
116385
116548
  this.moveStepSize = this.modelData.unitType == RichEditUnit.Inch ? this.divisionInfo.stepSize / 2 : this.divisionInfo.stepSize;
@@ -116388,6 +116551,10 @@ class RulerControls {
116388
116551
  this.divisionInfo.updateZoomLevel();
116389
116552
  }
116390
116553
  dispose() {
116554
+ if (this.layoutRecalculationObserver) {
116555
+ this.layoutRecalculationObserver.disconnect();
116556
+ this.layoutRecalculationObserver = null;
116557
+ }
116391
116558
  this.lineControl.dispose();
116392
116559
  this.wrapper.dispose();
116393
116560
  this.ruler.dispose();
@@ -137141,8 +137308,7 @@ class ClipboardCommand extends CommandBase {
137141
137308
  }
137142
137309
  }
137143
137310
  ClipboardCommand.additionalWaitingTimeForMac = 10;
137144
- ClipboardCommand.timeout = browser.Browser.Firefox ? 10 :
137145
- (browser.Browser.MacOSPlatform && (browser.Browser.WebKitFamily || browser.Browser.Opera) ? 10 : 0);
137311
+ ClipboardCommand.timeout = 0;
137146
137312
  class CopySelectionCommand extends ClipboardCommand {
137147
137313
  constructor(control) {
137148
137314
  super(control, "copy");
@@ -137210,9 +137376,6 @@ class PasteSelectionCommand extends ClipboardCommand {
137210
137376
  constructor(control) {
137211
137377
  super(control, "paste");
137212
137378
  }
137213
- getTimeout() {
137214
- return browser.Browser.MacOSPlatform ? 300 : super.getTimeout();
137215
- }
137216
137379
  pasteEventRaised() {
137217
137380
  if (browser.Browser.MacOSPlatform && this.control.commandManager.clipboardTimerId !== null) {
137218
137381
  setTimeout(() => {
@@ -137626,6 +137789,8 @@ class DragMoveContentCommand extends CommandBase {
137626
137789
  tryMoveIntervalInsideTable(intervalsInfo, positionTo) {
137627
137790
  if (!intervalsInfo.tableInfo.extendedData.numRows)
137628
137791
  return false;
137792
+ if (utils_list.ListUtils.unsafeAnyOf(intervalsInfo.intervals, (interval) => interval.start <= positionTo && interval.end >= positionTo))
137793
+ return true;
137629
137794
  const subDocument = intervalsInfo.subDocument;
137630
137795
  const linkedIntervals = utils_list.ListUtils.map(intervalsInfo.intervals, (curr) => new LinkedInterval(intervalsInfo.subDocument.positionManager, curr));
137631
137796
  this.history.addTransaction(() => {
@@ -142675,8 +142840,8 @@ class DialogManager {
142675
142840
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/localization/cldr-data/first_day_of_week_data.js
142676
142841
  /**
142677
142842
  * DevExtreme (esm/__internal/core/localization/cldr-data/first_day_of_week_data.js)
142678
- * Version: 25.1.12
142679
- * Build date: Mon Jun 08 2026
142843
+ * Version: 25.1.13
142844
+ * Build date: Mon Jul 20 2026
142680
142845
  *
142681
142846
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
142682
142847
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -142875,8 +143040,8 @@ class DialogManager {
142875
143040
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/localization/cldr-data/parent_locales.js
142876
143041
  /**
142877
143042
  * DevExtreme (esm/__internal/core/localization/cldr-data/parent_locales.js)
142878
- * Version: 25.1.12
142879
- * Build date: Mon Jun 08 2026
143043
+ * Version: 25.1.13
143044
+ * Build date: Mon Jul 20 2026
142880
143045
  *
142881
143046
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
142882
143047
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143061,8 +143226,8 @@ class DialogManager {
143061
143226
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/localization/parentLocale.js
143062
143227
  /**
143063
143228
  * DevExtreme (esm/__internal/core/localization/parentLocale.js)
143064
- * Version: 25.1.12
143065
- * Build date: Mon Jun 08 2026
143229
+ * Version: 25.1.13
143230
+ * Build date: Mon Jul 20 2026
143066
143231
  *
143067
143232
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
143068
143233
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143079,8 +143244,8 @@ const PARENT_LOCALE_SEPARATOR = "-";
143079
143244
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/utils/m_type.js
143080
143245
  /**
143081
143246
  * DevExtreme (esm/__internal/core/utils/m_type.js)
143082
- * Version: 25.1.12
143083
- * Build date: Mon Jun 08 2026
143247
+ * Version: 25.1.13
143248
+ * Build date: Mon Jul 20 2026
143084
143249
  *
143085
143250
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
143086
143251
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143182,8 +143347,8 @@ const isEvent = function(object) {
143182
143347
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/core/utils/type.js
143183
143348
  /**
143184
143349
  * DevExtreme (esm/core/utils/type.js)
143185
- * Version: 25.1.12
143186
- * Build date: Mon Jun 08 2026
143350
+ * Version: 25.1.13
143351
+ * Build date: Mon Jul 20 2026
143187
143352
  *
143188
143353
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
143189
143354
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143193,8 +143358,8 @@ const isEvent = function(object) {
143193
143358
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/utils/m_extend.js
143194
143359
  /**
143195
143360
  * DevExtreme (esm/__internal/core/utils/m_extend.js)
143196
- * Version: 25.1.12
143197
- * Build date: Mon Jun 08 2026
143361
+ * Version: 25.1.13
143362
+ * Build date: Mon Jul 20 2026
143198
143363
  *
143199
143364
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
143200
143365
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143252,8 +143417,8 @@ const extend = function(target) {
143252
143417
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/core/utils/extend.js
143253
143418
  /**
143254
143419
  * DevExtreme (esm/core/utils/extend.js)
143255
- * Version: 25.1.12
143256
- * Build date: Mon Jun 08 2026
143420
+ * Version: 25.1.13
143421
+ * Build date: Mon Jul 20 2026
143257
143422
  *
143258
143423
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
143259
143424
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143263,8 +143428,8 @@ const extend = function(target) {
143263
143428
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/utils/m_string.js
143264
143429
  /**
143265
143430
  * DevExtreme (esm/__internal/core/utils/m_string.js)
143266
- * Version: 25.1.12
143267
- * Build date: Mon Jun 08 2026
143431
+ * Version: 25.1.13
143432
+ * Build date: Mon Jul 20 2026
143268
143433
  *
143269
143434
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
143270
143435
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143339,8 +143504,8 @@ const isEmpty = function() {
143339
143504
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/core/utils/string.js
143340
143505
  /**
143341
143506
  * DevExtreme (esm/core/utils/string.js)
143342
- * Version: 25.1.12
143343
- * Build date: Mon Jun 08 2026
143507
+ * Version: 25.1.13
143508
+ * Build date: Mon Jul 20 2026
143344
143509
  *
143345
143510
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
143346
143511
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143350,20 +143515,20 @@ const isEmpty = function() {
143350
143515
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/core/version.js
143351
143516
  /**
143352
143517
  * DevExtreme (esm/core/version.js)
143353
- * Version: 25.1.12
143354
- * Build date: Mon Jun 08 2026
143518
+ * Version: 25.1.13
143519
+ * Build date: Mon Jul 20 2026
143355
143520
  *
143356
143521
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
143357
143522
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
143358
143523
  */
143359
- const version = "25.1.12";
143360
- const fullVersion = "25.1.12";
143524
+ const version = "25.1.13";
143525
+ const fullVersion = "25.1.13";
143361
143526
 
143362
143527
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/utils/m_console.js
143363
143528
  /**
143364
143529
  * DevExtreme (esm/__internal/core/utils/m_console.js)
143365
- * Version: 25.1.12
143366
- * Build date: Mon Jun 08 2026
143530
+ * Version: 25.1.13
143531
+ * Build date: Mon Jul 20 2026
143367
143532
  *
143368
143533
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
143369
143534
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143403,8 +143568,8 @@ const debug = function() {
143403
143568
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/utils/m_error.js
143404
143569
  /**
143405
143570
  * DevExtreme (esm/__internal/core/utils/m_error.js)
143406
- * Version: 25.1.12
143407
- * Build date: Mon Jun 08 2026
143571
+ * Version: 25.1.13
143572
+ * Build date: Mon Jul 20 2026
143408
143573
  *
143409
143574
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
143410
143575
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143475,8 +143640,8 @@ function error(baseErrors, errors) {
143475
143640
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/core/utils/error.js
143476
143641
  /**
143477
143642
  * DevExtreme (esm/core/utils/error.js)
143478
- * Version: 25.1.12
143479
- * Build date: Mon Jun 08 2026
143643
+ * Version: 25.1.13
143644
+ * Build date: Mon Jul 20 2026
143480
143645
  *
143481
143646
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
143482
143647
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143487,8 +143652,8 @@ function error(baseErrors, errors) {
143487
143652
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/m_errors.js
143488
143653
  /**
143489
143654
  * DevExtreme (esm/__internal/core/m_errors.js)
143490
- * Version: 25.1.12
143491
- * Build date: Mon Jun 08 2026
143655
+ * Version: 25.1.13
143656
+ * Build date: Mon Jul 20 2026
143492
143657
  *
143493
143658
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
143494
143659
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143526,6 +143691,7 @@ function error(baseErrors, errors) {
143526
143691
  E0120: "Adapter for a DevExpressValidator component cannot be configured",
143527
143692
  E0121: "The 'customItem' parameter of the 'onCustomItemCreating' function is empty or contains invalid data. Assign a custom object or a Promise that is resolved after the item is created.",
143528
143693
  E0122: "AIIntegration: The sendRequest method is missing.",
143694
+ E0123: "Disallowed property name in expression: '{0}'",
143529
143695
  W0000: "'{0}' is deprecated in {1}. {2}",
143530
143696
  W0001: "{0} - '{1}' option is deprecated in {2}. {3}",
143531
143697
  W0002: "{0} - '{1}' method is deprecated in {2}. {3}",
@@ -143556,8 +143722,8 @@ function error(baseErrors, errors) {
143556
143722
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/core/errors.js
143557
143723
  /**
143558
143724
  * DevExtreme (esm/core/errors.js)
143559
- * Version: 25.1.12
143560
- * Build date: Mon Jun 08 2026
143725
+ * Version: 25.1.13
143726
+ * Build date: Mon Jul 20 2026
143561
143727
  *
143562
143728
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
143563
143729
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143568,8 +143734,8 @@ function error(baseErrors, errors) {
143568
143734
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/m_class.js
143569
143735
  /**
143570
143736
  * DevExtreme (esm/__internal/core/m_class.js)
143571
- * Version: 25.1.12
143572
- * Build date: Mon Jun 08 2026
143737
+ * Version: 25.1.13
143738
+ * Build date: Mon Jul 20 2026
143573
143739
  *
143574
143740
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
143575
143741
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143702,8 +143868,8 @@ classImpl.abstract = m_class_abstract;
143702
143868
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/core/class.js
143703
143869
  /**
143704
143870
  * DevExtreme (esm/core/class.js)
143705
- * Version: 25.1.12
143706
- * Build date: Mon Jun 08 2026
143871
+ * Version: 25.1.13
143872
+ * Build date: Mon Jul 20 2026
143707
143873
  *
143708
143874
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
143709
143875
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143714,8 +143880,8 @@ classImpl.abstract = m_class_abstract;
143714
143880
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/utils/m_iterator.js
143715
143881
  /**
143716
143882
  * DevExtreme (esm/__internal/core/utils/m_iterator.js)
143717
- * Version: 25.1.12
143718
- * Build date: Mon Jun 08 2026
143883
+ * Version: 25.1.13
143884
+ * Build date: Mon Jul 20 2026
143719
143885
  *
143720
143886
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
143721
143887
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143764,8 +143930,8 @@ const reverseEach = (array, callback) => {
143764
143930
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/utils/m_dependency_injector.js
143765
143931
  /**
143766
143932
  * DevExtreme (esm/__internal/core/utils/m_dependency_injector.js)
143767
- * Version: 25.1.12
143768
- * Build date: Mon Jun 08 2026
143933
+ * Version: 25.1.13
143934
+ * Build date: Mon Jul 20 2026
143769
143935
  *
143770
143936
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
143771
143937
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143814,8 +143980,8 @@ function injector(object) {
143814
143980
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/localization/core.js
143815
143981
  /**
143816
143982
  * DevExtreme (esm/__internal/core/localization/core.js)
143817
- * Version: 25.1.12
143818
- * Build date: Mon Jun 08 2026
143983
+ * Version: 25.1.13
143984
+ * Build date: Mon Jul 20 2026
143819
143985
  *
143820
143986
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
143821
143987
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143856,8 +144022,8 @@ const DEFAULT_LOCALE = "en";
143856
144022
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/localization/default_date_names.js
143857
144023
  /**
143858
144024
  * DevExtreme (esm/__internal/core/localization/default_date_names.js)
143859
- * Version: 25.1.12
143860
- * Build date: Mon Jun 08 2026
144025
+ * Version: 25.1.13
144026
+ * Build date: Mon Jul 20 2026
143861
144027
  *
143862
144028
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
143863
144029
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143885,8 +144051,8 @@ const cutCaptions = (captions, format) => {
143885
144051
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/localization/intl/date.js
143886
144052
  /**
143887
144053
  * DevExtreme (esm/__internal/core/localization/intl/date.js)
143888
- * Version: 25.1.12
143889
- * Build date: Mon Jun 08 2026
144054
+ * Version: 25.1.13
144055
+ * Build date: Mon Jul 20 2026
143890
144056
  *
143891
144057
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
143892
144058
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -144201,8 +144367,8 @@ const monthNameStrategies = {
144201
144367
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/m_config.js
144202
144368
  /**
144203
144369
  * DevExtreme (esm/__internal/core/m_config.js)
144204
- * Version: 25.1.12
144205
- * Build date: Mon Jun 08 2026
144370
+ * Version: 25.1.13
144371
+ * Build date: Mon Jul 20 2026
144206
144372
  *
144207
144373
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
144208
144374
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -144279,8 +144445,8 @@ if ("undefined" !== typeof DevExpress && DevExpress.config) {
144279
144445
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/common/config.js
144280
144446
  /**
144281
144447
  * DevExtreme (esm/common/config.js)
144282
- * Version: 25.1.12
144283
- * Build date: Mon Jun 08 2026
144448
+ * Version: 25.1.13
144449
+ * Build date: Mon Jul 20 2026
144284
144450
  *
144285
144451
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
144286
144452
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -144291,8 +144457,8 @@ if ("undefined" !== typeof DevExpress && DevExpress.config) {
144291
144457
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/m_guid.js
144292
144458
  /**
144293
144459
  * DevExtreme (esm/__internal/core/m_guid.js)
144294
- * Version: 25.1.12
144295
- * Build date: Mon Jun 08 2026
144460
+ * Version: 25.1.13
144461
+ * Build date: Mon Jul 20 2026
144296
144462
  *
144297
144463
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
144298
144464
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -144334,8 +144500,8 @@ const Guid = core_class.inherit({
144334
144500
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/common/guid.js
144335
144501
  /**
144336
144502
  * DevExtreme (esm/common/guid.js)
144337
- * Version: 25.1.12
144338
- * Build date: Mon Jun 08 2026
144503
+ * Version: 25.1.13
144504
+ * Build date: Mon Jul 20 2026
144339
144505
  *
144340
144506
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
144341
144507
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -144346,8 +144512,8 @@ const Guid = core_class.inherit({
144346
144512
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/templates/m_template_engine_registry.js
144347
144513
  /**
144348
144514
  * DevExtreme (esm/__internal/core/templates/m_template_engine_registry.js)
144349
- * Version: 25.1.12
144350
- * Build date: Mon Jun 08 2026
144515
+ * Version: 25.1.13
144516
+ * Build date: Mon Jul 20 2026
144351
144517
  *
144352
144518
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
144353
144519
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -144376,8 +144542,8 @@ function getCurrentTemplateEngine() {
144376
144542
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/core/templates/template_engine_registry.js
144377
144543
  /**
144378
144544
  * DevExtreme (esm/core/templates/template_engine_registry.js)
144379
- * Version: 25.1.12
144380
- * Build date: Mon Jun 08 2026
144545
+ * Version: 25.1.13
144546
+ * Build date: Mon Jul 20 2026
144381
144547
  *
144382
144548
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
144383
144549
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -144387,8 +144553,8 @@ function getCurrentTemplateEngine() {
144387
144553
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/m_set_template_engine.js
144388
144554
  /**
144389
144555
  * DevExtreme (esm/__internal/core/m_set_template_engine.js)
144390
- * Version: 25.1.12
144391
- * Build date: Mon Jun 08 2026
144556
+ * Version: 25.1.13
144557
+ * Build date: Mon Jul 20 2026
144392
144558
  *
144393
144559
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
144394
144560
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -144398,8 +144564,8 @@ function getCurrentTemplateEngine() {
144398
144564
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/common/set_template_engine.js
144399
144565
  /**
144400
144566
  * DevExtreme (esm/common/set_template_engine.js)
144401
- * Version: 25.1.12
144402
- * Build date: Mon Jun 08 2026
144567
+ * Version: 25.1.13
144568
+ * Build date: Mon Jul 20 2026
144403
144569
  *
144404
144570
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
144405
144571
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -144410,8 +144576,8 @@ function getCurrentTemplateEngine() {
144410
144576
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/common.js
144411
144577
  /**
144412
144578
  * DevExtreme (esm/common.js)
144413
- * Version: 25.1.12
144414
- * Build date: Mon Jun 08 2026
144579
+ * Version: 25.1.13
144580
+ * Build date: Mon Jul 20 2026
144415
144581
  *
144416
144582
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
144417
144583
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -144424,8 +144590,8 @@ function getCurrentTemplateEngine() {
144424
144590
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/core/config.js
144425
144591
  /**
144426
144592
  * DevExtreme (esm/core/config.js)
144427
- * Version: 25.1.12
144428
- * Build date: Mon Jun 08 2026
144593
+ * Version: 25.1.13
144594
+ * Build date: Mon Jul 20 2026
144429
144595
  *
144430
144596
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
144431
144597
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -144436,8 +144602,8 @@ function getCurrentTemplateEngine() {
144436
144602
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/localization/currency.js
144437
144603
  /**
144438
144604
  * DevExtreme (esm/__internal/core/localization/currency.js)
144439
- * Version: 25.1.12
144440
- * Build date: Mon Jun 08 2026
144605
+ * Version: 25.1.13
144606
+ * Build date: Mon Jul 20 2026
144441
144607
  *
144442
144608
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
144443
144609
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -144464,8 +144630,8 @@ function getCurrentTemplateEngine() {
144464
144630
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/localization/cldr-data/accounting_formats.js
144465
144631
  /**
144466
144632
  * DevExtreme (esm/__internal/core/localization/cldr-data/accounting_formats.js)
144467
- * Version: 25.1.12
144468
- * Build date: Mon Jun 08 2026
144633
+ * Version: 25.1.13
144634
+ * Build date: Mon Jul 20 2026
144469
144635
  *
144470
144636
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
144471
144637
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -145051,8 +145217,8 @@ function getCurrentTemplateEngine() {
145051
145217
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/localization/open_xml_currency_format.js
145052
145218
  /**
145053
145219
  * DevExtreme (esm/__internal/core/localization/open_xml_currency_format.js)
145054
- * Version: 25.1.12
145055
- * Build date: Mon Jun 08 2026
145220
+ * Version: 25.1.13
145221
+ * Build date: Mon Jul 20 2026
145056
145222
  *
145057
145223
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
145058
145224
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -145094,8 +145260,8 @@ function getCurrentTemplateEngine() {
145094
145260
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/localization/intl/number.js
145095
145261
  /**
145096
145262
  * DevExtreme (esm/__internal/core/localization/intl/number.js)
145097
- * Version: 25.1.12
145098
- * Build date: Mon Jun 08 2026
145263
+ * Version: 25.1.13
145264
+ * Build date: Mon Jul 20 2026
145099
145265
  *
145100
145266
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
145101
145267
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -145213,8 +145379,8 @@ const getCurrencyFormatter = currency => new Intl.NumberFormat(core.locale(), {
145213
145379
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/utils/m_math.js
145214
145380
  /**
145215
145381
  * DevExtreme (esm/__internal/core/utils/m_math.js)
145216
- * Version: 25.1.12
145217
- * Build date: Mon Jun 08 2026
145382
+ * Version: 25.1.13
145383
+ * Build date: Mon Jul 20 2026
145218
145384
  *
145219
145385
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
145220
145386
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -145392,8 +145558,8 @@ function roundFloatPart(value) {
145392
145558
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/localization/utils.js
145393
145559
  /**
145394
145560
  * DevExtreme (esm/__internal/core/localization/utils.js)
145395
- * Version: 25.1.12
145396
- * Build date: Mon Jun 08 2026
145561
+ * Version: 25.1.13
145562
+ * Build date: Mon Jul 20 2026
145397
145563
  *
145398
145564
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
145399
145565
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -145420,8 +145586,8 @@ function toFixed(value, precision) {
145420
145586
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/localization/ldml/number.js
145421
145587
  /**
145422
145588
  * DevExtreme (esm/__internal/core/localization/ldml/number.js)
145423
- * Version: 25.1.12
145424
- * Build date: Mon Jun 08 2026
145589
+ * Version: 25.1.13
145590
+ * Build date: Mon Jul 20 2026
145425
145591
  *
145426
145592
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
145427
145593
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -145661,8 +145827,8 @@ function getFormat(formatter) {
145661
145827
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/core/guid.js
145662
145828
  /**
145663
145829
  * DevExtreme (esm/core/guid.js)
145664
- * Version: 25.1.12
145665
- * Build date: Mon Jun 08 2026
145830
+ * Version: 25.1.13
145831
+ * Build date: Mon Jul 20 2026
145666
145832
  *
145667
145833
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
145668
145834
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -145673,8 +145839,8 @@ function getFormat(formatter) {
145673
145839
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/core/utils/console.js
145674
145840
  /**
145675
145841
  * DevExtreme (esm/core/utils/console.js)
145676
- * Version: 25.1.12
145677
- * Build date: Mon Jun 08 2026
145842
+ * Version: 25.1.13
145843
+ * Build date: Mon Jul 20 2026
145678
145844
  *
145679
145845
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
145680
145846
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -145684,8 +145850,8 @@ function getFormat(formatter) {
145684
145850
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/core/utils/dependency_injector.js
145685
145851
  /**
145686
145852
  * DevExtreme (esm/core/utils/dependency_injector.js)
145687
- * Version: 25.1.12
145688
- * Build date: Mon Jun 08 2026
145853
+ * Version: 25.1.13
145854
+ * Build date: Mon Jul 20 2026
145689
145855
  *
145690
145856
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
145691
145857
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -145696,8 +145862,8 @@ function getFormat(formatter) {
145696
145862
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/utils/m_variable_wrapper.js
145697
145863
  /**
145698
145864
  * DevExtreme (esm/__internal/core/utils/m_variable_wrapper.js)
145699
- * Version: 25.1.12
145700
- * Build date: Mon Jun 08 2026
145865
+ * Version: 25.1.13
145866
+ * Build date: Mon Jul 20 2026
145701
145867
  *
145702
145868
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
145703
145869
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -145726,8 +145892,8 @@ const m_variable_wrapper_variableWrapper = dependency_injector({
145726
145892
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/core/utils/variable_wrapper.js
145727
145893
  /**
145728
145894
  * DevExtreme (esm/core/utils/variable_wrapper.js)
145729
- * Version: 25.1.12
145730
- * Build date: Mon Jun 08 2026
145895
+ * Version: 25.1.13
145896
+ * Build date: Mon Jul 20 2026
145731
145897
  *
145732
145898
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
145733
145899
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -145738,8 +145904,8 @@ const m_variable_wrapper_variableWrapper = dependency_injector({
145738
145904
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/utils/m_object.js
145739
145905
  /**
145740
145906
  * DevExtreme (esm/__internal/core/utils/m_object.js)
145741
- * Version: 25.1.12
145742
- * Build date: Mon Jun 08 2026
145907
+ * Version: 25.1.13
145908
+ * Build date: Mon Jul 20 2026
145743
145909
  *
145744
145910
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
145745
145911
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -145851,8 +146017,8 @@ const m_object_deepExtendArraySafe = function(target, changes, extendComplexObje
145851
146017
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/core/utils/object.js
145852
146018
  /**
145853
146019
  * DevExtreme (esm/core/utils/object.js)
145854
- * Version: 25.1.12
145855
- * Build date: Mon Jun 08 2026
146020
+ * Version: 25.1.13
146021
+ * Build date: Mon Jul 20 2026
145856
146022
  *
145857
146023
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
145858
146024
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -145862,8 +146028,8 @@ const m_object_deepExtendArraySafe = function(target, changes, extendComplexObje
145862
146028
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/utils/m_data.js
145863
146029
  /**
145864
146030
  * DevExtreme (esm/__internal/core/utils/m_data.js)
145865
- * Version: 25.1.12
145866
- * Build date: Mon Jun 08 2026
146031
+ * Version: 25.1.13
146032
+ * Build date: Mon Jul 20 2026
145867
146033
  *
145868
146034
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
145869
146035
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -145884,6 +146050,9 @@ const {
145884
146050
  const bracketsToDots = function(expr) {
145885
146051
  return expr.replace(/\[/g, ".").replace(/\]/g, "")
145886
146052
  };
146053
+ const UNSAFE_PATH_FRAGMENTS = new Set(["__proto__", "constructor"]);
146054
+ const isUnsafePathFragment = name => UNSAFE_PATH_FRAGMENTS.has(name);
146055
+ const isUnsafePrototypeAccess = (obj, name) => "prototype" === name && "function" === typeof obj;
145887
146056
  const getPathParts = function(name) {
145888
146057
  return bracketsToDots(name).split(".")
145889
146058
  };
@@ -145925,12 +146094,23 @@ const compileGetter = function(expr) {
145925
146094
  }
145926
146095
  if ("string" === typeof expr) {
145927
146096
  const path = getPathParts(expr);
146097
+ const unsafeFragment = path.find(isUnsafePathFragment);
146098
+ if (void 0 !== unsafeFragment) {
146099
+ errors.log("E0123", unsafeFragment);
146100
+ return function() {
146101
+ return
146102
+ }
146103
+ }
145928
146104
  return function(obj, options) {
145929
146105
  options = prepareOptions(options);
145930
146106
  const functionAsIs = options.functionsAsIs;
145931
146107
  const hasDefaultValue = "defaultValue" in options;
145932
146108
  let current = unwrap(obj, options);
145933
146109
  for (let i = 0; i < path.length; i++) {
146110
+ if (isUnsafePrototypeAccess(current, path[i])) {
146111
+ errors.log("E0123", path[i]);
146112
+ return
146113
+ }
145934
146114
  if (!current) {
145935
146115
  if (null == current && hasDefaultValue) {
145936
146116
  return options.defaultValue
@@ -146005,10 +146185,26 @@ const ensurePropValueDefined = function(obj, propName, value, options) {
146005
146185
  const compileSetter = function(expr) {
146006
146186
  expr = getPathParts(expr || "this");
146007
146187
  const lastLevelIndex = expr.length - 1;
146188
+ const unsafeFragment = expr.find(isUnsafePathFragment);
146189
+ if (void 0 !== unsafeFragment) {
146190
+ errors.log("E0123", unsafeFragment);
146191
+ return function() {
146192
+ return
146193
+ }
146194
+ }
146008
146195
  return function(obj, value, options) {
146009
146196
  options = prepareOptions(options);
146010
146197
  let currentValue = unwrap(obj, options);
146198
+ let hasUnsafePrototypeAccess = false;
146011
146199
  expr.forEach(function(propertyName, levelIndex) {
146200
+ if (hasUnsafePrototypeAccess) {
146201
+ return
146202
+ }
146203
+ if (isUnsafePrototypeAccess(currentValue, propertyName)) {
146204
+ errors.log("E0123", propertyName);
146205
+ hasUnsafePrototypeAccess = true;
146206
+ return
146207
+ }
146012
146208
  let propertyValue = readPropValue(currentValue, propertyName, options);
146013
146209
  const isPropertyFunc = !options.functionsAsIs && isFunction(propertyValue) && !isWrapped(propertyValue);
146014
146210
  if (levelIndex === lastLevelIndex) {
@@ -146060,8 +146256,8 @@ const toComparable = function(value, caseSensitive) {
146060
146256
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/core/utils/data.js
146061
146257
  /**
146062
146258
  * DevExtreme (esm/core/utils/data.js)
146063
- * Version: 25.1.12
146064
- * Build date: Mon Jun 08 2026
146259
+ * Version: 25.1.13
146260
+ * Build date: Mon Jul 20 2026
146065
146261
  *
146066
146262
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
146067
146263
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -146071,8 +146267,8 @@ const toComparable = function(value, caseSensitive) {
146071
146267
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/utils/m_callbacks.js
146072
146268
  /**
146073
146269
  * DevExtreme (esm/__internal/core/utils/m_callbacks.js)
146074
- * Version: 25.1.12
146075
- * Build date: Mon Jun 08 2026
146270
+ * Version: 25.1.13
146271
+ * Build date: Mon Jul 20 2026
146076
146272
  *
146077
146273
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
146078
146274
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -146167,8 +146363,8 @@ const Callbacks = function(options) {
146167
146363
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/core/utils/callbacks.js
146168
146364
  /**
146169
146365
  * DevExtreme (esm/core/utils/callbacks.js)
146170
- * Version: 25.1.12
146171
- * Build date: Mon Jun 08 2026
146366
+ * Version: 25.1.13
146367
+ * Build date: Mon Jul 20 2026
146172
146368
  *
146173
146369
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
146174
146370
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -146179,8 +146375,8 @@ const Callbacks = function(options) {
146179
146375
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/utils/m_deferred.js
146180
146376
  /**
146181
146377
  * DevExtreme (esm/__internal/core/utils/m_deferred.js)
146182
- * Version: 25.1.12
146183
- * Build date: Mon Jun 08 2026
146378
+ * Version: 25.1.13
146379
+ * Build date: Mon Jul 20 2026
146184
146380
  *
146185
146381
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
146186
146382
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -146345,8 +146541,8 @@ function when() {
146345
146541
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/core/utils/deferred.js
146346
146542
  /**
146347
146543
  * DevExtreme (esm/core/utils/deferred.js)
146348
- * Version: 25.1.12
146349
- * Build date: Mon Jun 08 2026
146544
+ * Version: 25.1.13
146545
+ * Build date: Mon Jul 20 2026
146350
146546
  *
146351
146547
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
146352
146548
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -146356,8 +146552,8 @@ function when() {
146356
146552
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/utils/m_common.js
146357
146553
  /**
146358
146554
  * DevExtreme (esm/__internal/core/utils/m_common.js)
146359
- * Version: 25.1.12
146360
- * Build date: Mon Jun 08 2026
146555
+ * Version: 25.1.13
146556
+ * Build date: Mon Jul 20 2026
146361
146557
  *
146362
146558
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
146363
146559
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -146651,8 +146847,8 @@ const equalByValue = function(value1, value2) {
146651
146847
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/localization/number.js
146652
146848
  /**
146653
146849
  * DevExtreme (esm/__internal/core/localization/number.js)
146654
- * Version: 25.1.12
146655
- * Build date: Mon Jun 08 2026
146850
+ * Version: 25.1.13
146851
+ * Build date: Mon Jul 20 2026
146656
146852
  *
146657
146853
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
146658
146854
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -146961,8 +147157,8 @@ if (hasIntl) {
146961
147157
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/localization/ldml/date.format.js
146962
147158
  /**
146963
147159
  * DevExtreme (esm/__internal/core/localization/ldml/date.format.js)
146964
- * Version: 25.1.12
146965
- * Build date: Mon Jun 08 2026
147160
+ * Version: 25.1.13
147161
+ * Build date: Mon Jul 20 2026
146966
147162
  *
146967
147163
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
146968
147164
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -147155,8 +147351,8 @@ const date_format_getFormat = formatter => {
147155
147351
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/localization/ldml/date.formatter.js
147156
147352
  /**
147157
147353
  * DevExtreme (esm/__internal/core/localization/ldml/date.formatter.js)
147158
- * Version: 25.1.12
147159
- * Build date: Mon Jun 08 2026
147354
+ * Version: 25.1.13
147355
+ * Build date: Mon Jul 20 2026
147160
147356
  *
147161
147357
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
147162
147358
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -147284,8 +147480,8 @@ const date_formatter_getFormatter = (format, dateParts) => date => {
147284
147480
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/localization/ldml/date.parser.js
147285
147481
  /**
147286
147482
  * DevExtreme (esm/__internal/core/localization/ldml/date.parser.js)
147287
- * Version: 25.1.12
147288
- * Build date: Mon Jun 08 2026
147483
+ * Version: 25.1.13
147484
+ * Build date: Mon Jul 20 2026
147289
147485
  *
147290
147486
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
147291
147487
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -147563,8 +147759,8 @@ const getParser = (format, dateParts) => {
147563
147759
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/localization/date.js
147564
147760
  /**
147565
147761
  * DevExtreme (esm/__internal/core/localization/date.js)
147566
- * Version: 25.1.12
147567
- * Build date: Mon Jun 08 2026
147762
+ * Version: 25.1.13
147763
+ * Build date: Mon Jul 20 2026
147568
147764
  *
147569
147765
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
147570
147766
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -147727,8 +147923,8 @@ if (date_hasIntl) {
147727
147923
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/common/core/localization/date.js
147728
147924
  /**
147729
147925
  * DevExtreme (esm/common/core/localization/date.js)
147730
- * Version: 25.1.12
147731
- * Build date: Mon Jun 08 2026
147926
+ * Version: 25.1.13
147927
+ * Build date: Mon Jul 20 2026
147732
147928
  *
147733
147929
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
147734
147930
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -147739,8 +147935,8 @@ if (date_hasIntl) {
147739
147935
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/common/core/localization/number.js
147740
147936
  /**
147741
147937
  * DevExtreme (esm/common/core/localization/number.js)
147742
- * Version: 25.1.12
147743
- * Build date: Mon Jun 08 2026
147938
+ * Version: 25.1.13
147939
+ * Build date: Mon Jul 20 2026
147744
147940
  *
147745
147941
  * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED
147746
147942
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -148825,7 +149021,7 @@ class ClientRichEdit {
148825
149021
  this.contextMenuSettings = settings.contextMenuSettings;
148826
149022
  this.fullScreenHelper = new FullScreenHelper(element);
148827
149023
  if (true)
148828
- external_DevExpress_config_default()(JSON.parse(atob('eyJsaWNlbnNlS2V5IjoiZXdvZ0lDSm1iM0p0WVhRaU9pQXhMQW9nSUNKcGJuUmxjbTVoYkZWellXZGxTV1FpT2lBaWFFVTFORFkxU3pSUlpYaFNVWGxFWjIxTldtaHRVeUlLZlE9PS5hc1crYVJtdENhb2ZiRVJBTERDVkNmVTlCOGgxS3Y5SHBRRFhCQWphWUIxNHRmUEx6a09xdkhRbnlieFNVdEdKbmZ0dnkxNDQ5UE9QL1pmd1pzRThBTG4zWnpIaWEvWlVmTWNNUytOL2liNEM3VEhOS2tZYnZyL3AxaEVzTnVnRDgzZnhxdz09In0=')));
149024
+ external_DevExpress_config_default()(JSON.parse(atob('eyJsaWNlbnNlS2V5IjoiZXdvZ0lDSm1iM0p0WVhRaU9pQXhMQW9nSUNKcGJuUmxjbTVoYkZWellXZGxTV1FpT2lBaWRVSmhTVkoxT1hFNFoxTkpiemx6ZHpKd01GbElNQ0lLZlE9PS5NZW93UmpFY0N3YjVSZ0REdCtQRmNaTnZmUklyZERYRUp3Z3llYi9hd1BnTHVUWGxSMTRlTjdPNFVIelZDNzZxOEd0MDc4ZDJTYThRUktlVXVSVDh0TVVoVC9sV1VSOW52a1ZjcHhOWEN5V1BYV0dTWkM3SGhnVnlseTFacVUxeXAralhGUT09In0=')));
148829
149025
  this.prepareElement(element, settings);
148830
149026
  this.initDefaultFontsAndStyles();
148831
149027
  this.initBars(settings.ribbon, settings.fonts);
@@ -150676,11 +150872,22 @@ class DocumentProcessorBase {
150676
150872
  this.layoutFormatterManager.invalidator.onChangedAllLayout();
150677
150873
  }
150678
150874
  }
150875
+ ensureDocumentIsFullyFormatted() {
150876
+ if (this.layoutFormatterManager.isDocumentOpened) {
150877
+ while (!this.layoutFormatterManager.layout.isFullyFormatted)
150878
+ this.layoutFormatterManager.forceFormatPage(this.layoutFormatterManager.layout.validPageCount + 1);
150879
+ }
150880
+ }
150679
150881
  getExportModelOptions(initOptions = {}) {
150882
+ let grids;
150680
150883
  return {
150681
150884
  modelManager: (0,common.isDefined)(initOptions.modelManager) ? initOptions.modelManager : this.modelManager,
150682
150885
  pictureRenderer: this.documentRenderer,
150683
150886
  uiUnitConverter: this.uiUnitConverter,
150887
+ getGrids: () => {
150888
+ this.ensureDocumentIsFullyFormatted();
150889
+ return grids !== null && grids !== void 0 ? grids : (grids = this.layoutFormatterManager.layout.grids);
150890
+ },
150684
150891
  sessionGuid: this.sessionGuid,
150685
150892
  clientGuid: this.clientGuid,
150686
150893
  documentFormat: (0,common.isDefined)(initOptions.documentFormat) ? initOptions.documentFormat : DocumentFormat.OpenXml,