devexpress-richedit 24.2.6 → 25.1.1-alpha

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 (98) 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 +1 -1
  9. package/dist/dx.richedit.d.ts +11 -3
  10. package/dist/dx.richedit.js +1555 -1230
  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/_constants.d.ts +1 -0
  15. package/lib/client/_constants.js +3 -0
  16. package/lib/client/bars/ribbon.d.ts +1 -0
  17. package/lib/client/bars/ribbon.js +3 -1
  18. package/lib/client/bars/rich-edit-ribbon/ribbon-items-data.js +11 -0
  19. package/lib/client/client-rich-edit.js +4 -2
  20. package/lib/client/commands/commands.js +12 -0
  21. package/lib/client/i-rich-constructor-settings.d.ts +2 -0
  22. package/lib/client/model-api/api-utils/parameter-checker.d.ts +1 -1
  23. package/lib/client/model-api/api-utils/parameter-checker.js +2 -2
  24. package/lib/client/public/commands/enum.d.ts +3 -1
  25. package/lib/client/public/commands/enum.js +2 -0
  26. package/lib/client/public/options.d.ts +2 -0
  27. package/lib/client/public/options.js +2 -0
  28. package/lib/client/public/rich-edit.d.ts +4 -0
  29. package/lib/client/public/rich-edit.js +21 -0
  30. package/lib/client/ribbon/i-toolbar-item-options.d.ts +1 -1
  31. package/lib/client/settings.js +4 -0
  32. package/lib/client/utils/focus-helper.d.ts +4 -0
  33. package/lib/client/utils/focus-helper.js +36 -0
  34. package/lib/common/canvas/canvas-manager.d.ts +2 -0
  35. package/lib/common/canvas/canvas-manager.js +11 -5
  36. package/lib/common/canvas/renderes/common/document-renderer.d.ts +1 -1
  37. package/lib/common/canvas/renderes/view-manager.d.ts +4 -0
  38. package/lib/common/canvas/renderes/view-manager.js +17 -0
  39. package/lib/common/commands/client-command.d.ts +3 -1
  40. package/lib/common/commands/client-command.js +2 -0
  41. package/lib/common/commands/command-manager.js +4 -0
  42. package/lib/common/commands/layout/apply-style-command.d.ts +12 -7
  43. package/lib/common/commands/layout/apply-style-command.js +44 -36
  44. package/lib/common/commands/layout/change-zoom-level-command.d.ts +10 -0
  45. package/lib/common/commands/layout/change-zoom-level-command.js +30 -0
  46. package/lib/common/commands/layout/toggle-allow-zoom-command.d.ts +7 -0
  47. package/lib/common/commands/layout/toggle-allow-zoom-command.js +17 -0
  48. package/lib/common/commands/ruler/ruler-table-column-separators-command.d.ts +9 -2
  49. package/lib/common/commands/ruler/ruler-table-column-separators-command.js +24 -15
  50. package/lib/common/commands/toc/set-paragraph-level-command.d.ts +2 -0
  51. package/lib/common/commands/toc/set-paragraph-level-command.js +13 -7
  52. package/lib/common/interfaces/i-zoom-level-holder.d.ts +3 -0
  53. package/lib/common/interfaces/i-zoom-level-holder.js +1 -0
  54. package/lib/common/layout/main-structures/layout-row.d.ts +2 -1
  55. package/lib/common/layout/main-structures/layout-row.js +3 -1
  56. package/lib/common/layout-formatter/formatter/base-formatter.js +2 -1
  57. package/lib/common/layout-formatter/row/result.js +2 -1
  58. package/lib/common/layout-formatter/row/tab-info.js +3 -1
  59. package/lib/common/model/json/enums/json-control-enums.d.ts +2 -1
  60. package/lib/common/model/json/enums/json-control-enums.js +1 -0
  61. package/lib/common/model/json/exporters/json-control-options-converter.js +2 -0
  62. package/lib/common/model/json/importers/json-importer.js +2 -0
  63. package/lib/common/model/options/control.d.ts +1 -0
  64. package/lib/common/model/options/control.js +1 -0
  65. package/lib/common/model/paragraph/paragraph-style.d.ts +9 -4
  66. package/lib/common/model/paragraph/paragraph-style.js +20 -13
  67. package/lib/common/model/rich-utils.d.ts +2 -0
  68. package/lib/common/model/rich-utils.js +2 -0
  69. package/lib/common/mouse-handler/resize-box-helper.js +2 -2
  70. package/lib/common/rich-edit-core.d.ts +0 -1
  71. package/lib/common/rich-edit-core.js +2 -6
  72. package/lib/common/ui/ruler/controls/base.d.ts +7 -2
  73. package/lib/common/ui/ruler/controls/base.js +11 -3
  74. package/lib/common/ui/ruler/controls/column.d.ts +17 -5
  75. package/lib/common/ui/ruler/controls/column.js +37 -21
  76. package/lib/common/ui/ruler/controls/divisions.d.ts +18 -5
  77. package/lib/common/ui/ruler/controls/divisions.js +41 -13
  78. package/lib/common/ui/ruler/controls/indent/first-line.js +2 -2
  79. package/lib/common/ui/ruler/controls/indent/left.js +2 -2
  80. package/lib/common/ui/ruler/controls/indent/right.js +2 -2
  81. package/lib/common/ui/ruler/controls/margin/base.js +3 -3
  82. package/lib/common/ui/ruler/controls/owner.d.ts +2 -0
  83. package/lib/common/ui/ruler/controls/owner.js +4 -0
  84. package/lib/common/ui/ruler/controls/ruler.js +2 -2
  85. package/lib/common/ui/ruler/controls/tab/tab-info.d.ts +15 -0
  86. package/lib/common/ui/ruler/controls/tab/tab-info.js +19 -0
  87. package/lib/common/ui/ruler/controls/tab/tab.d.ts +3 -3
  88. package/lib/common/ui/ruler/controls/tab/tab.js +10 -11
  89. package/lib/common/ui/ruler/controls/table.js +5 -4
  90. package/lib/common/ui/ruler/controls/zoomable-value.d.ts +8 -0
  91. package/lib/common/ui/ruler/controls/zoomable-value.js +15 -0
  92. package/lib/common/ui/ruler/manager.d.ts +6 -2
  93. package/lib/common/ui/ruler/manager.js +13 -4
  94. package/lib/common/ui/ruler/model-data.d.ts +1 -0
  95. package/lib/common/ui/ruler/model-data.js +1 -0
  96. package/lib/common/view-settings/views-settings.d.ts +2 -0
  97. package/lib/common/view-settings/views-settings.js +3 -0
  98. package/package.json +7 -7
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * DevExpress WebRichEdit (dx.richedit.js)
3
- * Version: 24.2.6
3
+ * Version: 25.1.1
4
4
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
5
5
  * License: https://www.devexpress.com/Support/EULAs
6
6
  */
@@ -14600,6 +14600,8 @@ RichUtils.isAlphanumeric = /^[\u00C0-\u1FFF\u2C00-\uD7FF\w]+$/;
14600
14600
  RichUtils.predefinedFontSizes = [8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48, 72];
14601
14601
  RichUtils.minFontSize = 1;
14602
14602
  RichUtils.maxFontSize = 600;
14603
+ RichUtils.minZoomLevel = 0.5;
14604
+ RichUtils.maxZoomLevel = 2.0;
14603
14605
  RichUtils.specialCharacters = new SpecialCharacters();
14604
14606
 
14605
14607
  ;// CONCATENATED MODULE: ./src/common/model/numbering-lists/list-level-properties.ts
@@ -19657,7 +19659,7 @@ class ParagraphStyle extends StyleBase {
19657
19659
  }
19658
19660
  }
19659
19661
  ParagraphStyle.normalStyleName = "Normal";
19660
- ParagraphStyle.headingStyleName = "heading";
19662
+ ParagraphStyle.headingStyleName = "Heading";
19661
19663
  ParagraphStyle.tocStyleName = "toc";
19662
19664
  class TabProperties {
19663
19665
  constructor() {
@@ -19702,25 +19704,32 @@ class TabProperties {
19702
19704
  this.sort();
19703
19705
  }
19704
19706
  }
19705
- class TabInfo {
19706
- constructor(position, alignment, leader, deleted, isDefault) {
19707
- this.position = position;
19707
+ class TabInfoBase {
19708
+ constructor(alignment, leader, deleted, isDefault) {
19708
19709
  this.alignment = alignment;
19709
19710
  this.leader = leader;
19710
- this.isDefault = isDefault;
19711
19711
  this.deleted = deleted;
19712
- }
19713
- clone() {
19714
- return new TabInfo(this.position, this.alignment, this.leader, this.deleted, this.isDefault);
19712
+ this.isDefault = isDefault;
19715
19713
  }
19716
19714
  equals(obj) {
19717
19715
  if (!obj)
19718
19716
  return false;
19719
- return this.alignment == obj.alignment &&
19720
- this.leader == obj.leader &&
19721
- this.position == obj.position &&
19722
- this.deleted == obj.deleted &&
19723
- this.isDefault == obj.isDefault;
19717
+ return this.alignment === obj.alignment &&
19718
+ this.leader === obj.leader &&
19719
+ this.deleted === obj.deleted &&
19720
+ this.isDefault === obj.isDefault;
19721
+ }
19722
+ }
19723
+ class TabInfo extends TabInfoBase {
19724
+ constructor(position, alignment, leader, deleted, isDefault) {
19725
+ super(alignment, leader, deleted, isDefault);
19726
+ this.position = position;
19727
+ }
19728
+ equals(obj) {
19729
+ return super.equals(obj) && this.position == obj.position;
19730
+ }
19731
+ clone() {
19732
+ return new TabInfo(this.position, this.alignment, this.leader, this.deleted, this.isDefault);
19724
19733
  }
19725
19734
  }
19726
19735
 
@@ -25143,6 +25152,7 @@ var JSONControlOptionsProperty;
25143
25152
  JSONControlOptionsProperty[JSONControlOptionsProperty["AcceptsTab"] = 32] = "AcceptsTab";
25144
25153
  JSONControlOptionsProperty[JSONControlOptionsProperty["Download"] = 33] = "Download";
25145
25154
  JSONControlOptionsProperty[JSONControlOptionsProperty["RaiseClientEventsOnModificationsViaAPI"] = 34] = "RaiseClientEventsOnModificationsViaAPI";
25155
+ JSONControlOptionsProperty[JSONControlOptionsProperty["AllowZoom"] = 35] = "AllowZoom";
25146
25156
  })(JSONControlOptionsProperty || (JSONControlOptionsProperty = {}));
25147
25157
 
25148
25158
  ;// CONCATENATED MODULE: ./src/common/model/json/enums/json-section-enums.ts
@@ -25932,6 +25942,8 @@ class JSONImporter {
25932
25942
  controlOptions.acceptsTab = !!json[JSONControlOptionsProperty.AcceptsTab];
25933
25943
  if (json[JSONControlOptionsProperty.Download] !== undefined)
25934
25944
  controlOptions.download = json[JSONControlOptionsProperty.Download];
25945
+ if (json[JSONControlOptionsProperty.AllowZoom] !== undefined)
25946
+ controlOptions.allowZoom = json[JSONControlOptionsProperty.AllowZoom];
25935
25947
  controlOptions.raiseClientEventsOnModificationsViaAPI = !!json[JSONControlOptionsProperty.RaiseClientEventsOnModificationsViaAPI];
25936
25948
  }
25937
25949
  }
@@ -35788,8 +35800,8 @@ class ApiParametersChecker {
35788
35800
  static defaultDescriptor(getResult) {
35789
35801
  return new ApiParameterDescriptor('', '', () => true, getResult);
35790
35802
  }
35791
- static numberDescriptor(parameterName, getResult, minBound = constants.Constants.MIN_SAFE_INTEGER, maxBound = constants.Constants.MAX_SAFE_INTEGER) {
35792
- return new ApiParameterDescriptor(parameterName, `number on interval [${minBound}, ${maxBound}]`, (value) => (0,common.isNumber)(value) && (value >= minBound && value < maxBound), getResult);
35803
+ static numberDescriptor(parameterName, getResult, minBound = constants.Constants.MIN_SAFE_INTEGER, maxBound = constants.Constants.MAX_SAFE_INTEGER, closedMaxBound = false) {
35804
+ return new ApiParameterDescriptor(parameterName, `number on interval [${minBound}, ${maxBound}]`, (value) => (0,common.isNumber)(value) && (value >= minBound && (closedMaxBound ? value <= maxBound : value < maxBound)), getResult);
35793
35805
  }
35794
35806
  static booleanDescriptor(parameterName, getResult) {
35795
35807
  return new ApiParameterDescriptor(parameterName, 'boolean', (value) => typeof value === 'boolean', getResult);
@@ -40173,6 +40185,7 @@ class ControlOptions {
40173
40185
  this.tables = DocumentCapability.Default;
40174
40186
  this.tableStyle = DocumentCapability.Default;
40175
40187
  this.floatingObjects = DocumentCapability.Default;
40188
+ this.allowZoom = DocumentCapability.Default;
40176
40189
  this.acceptsTab = true;
40177
40190
  this.raiseClientEventsOnModificationsViaAPI = true;
40178
40191
  }
@@ -86264,6 +86277,8 @@ var RichEditClientCommand;
86264
86277
  RichEditClientCommand[RichEditClientCommand["NoSpellingSuggestions"] = 457] = "NoSpellingSuggestions";
86265
86278
  RichEditClientCommand[RichEditClientCommand["GetHtml"] = 458] = "GetHtml";
86266
86279
  RichEditClientCommand[RichEditClientCommand["CreateEmptyIfField"] = 459] = "CreateEmptyIfField";
86280
+ RichEditClientCommand[RichEditClientCommand["ChangeZoomLevel"] = 460] = "ChangeZoomLevel";
86281
+ RichEditClientCommand[RichEditClientCommand["ToggleAllowZoom"] = 461] = "ToggleAllowZoom";
86267
86282
  })(RichEditClientCommand || (RichEditClientCommand = {}));
86268
86283
 
86269
86284
  ;// CONCATENATED MODULE: ./src/common/interfaces/i-rich-edit-core.ts
@@ -92782,6 +92797,7 @@ class LayoutPageArea extends rectangle.Rectangle {
92782
92797
 
92783
92798
 
92784
92799
 
92800
+
92785
92801
  var LayoutRowStateFlags;
92786
92802
  (function (LayoutRowStateFlags) {
92787
92803
  LayoutRowStateFlags[LayoutRowStateFlags["NormallyEnd"] = 0] = "NormallyEnd";
@@ -92792,6 +92808,7 @@ var LayoutRowStateFlags;
92792
92808
  LayoutRowStateFlags[LayoutRowStateFlags["DocumentEnd"] = 16] = "DocumentEnd";
92793
92809
  LayoutRowStateFlags[LayoutRowStateFlags["CellTableEnd"] = 64] = "CellTableEnd";
92794
92810
  LayoutRowStateFlags[LayoutRowStateFlags["PageBreakBefore"] = 128] = "PageBreakBefore";
92811
+ LayoutRowStateFlags[LayoutRowStateFlags["InfinityWidth"] = 256] = "InfinityWidth";
92795
92812
  })(LayoutRowStateFlags || (LayoutRowStateFlags = {}));
92796
92813
  class layout_row_LayoutRow extends rectangle.Rectangle {
92797
92814
  get hasEffectToPageHeight() { return this.boxes.length != 1 || !this.boxes[0].isSectionBreakBox; }
@@ -92907,7 +92924,7 @@ class layout_row_LayoutRow extends rectangle.Rectangle {
92907
92924
  return lastBoxIndexWhatCanStrikeoutAndUnderline;
92908
92925
  }
92909
92926
  containsSpacesOnly() {
92910
- return this.boxes.length > 0 && utils_list.ListUtils.allOf(this.boxes, val => val.isWhitespace());
92927
+ return this.boxes.length > 0 && utils_list.ListUtils.allOf(this.boxes, val => val.isWhitespace() || val.getType() === LayoutBoxType.ParagraphMark);
92911
92928
  }
92912
92929
  }
92913
92930
  class LayoutRowWithIndex extends (/* unused pure expression or super */ null && (layout_row_LayoutRow)) {
@@ -94011,7 +94028,8 @@ class RowFormatterResult {
94011
94028
  return;
94012
94029
  this.rowFormatter.tabInfo.shiftBoxesAfterLastTab();
94013
94030
  const dontJustifyLinesEndingInSoftLineBreak = this.rowFormatter.manager.model.compatibilitySettings.dontJustifyLinesEndingInSoftLineBreak;
94014
- BoxAligner.align(this.row, this.rowFormatter.paragraphProps.alignment, currLogicRowEndPos, this.rowBoxIndexStart, dontJustifyLinesEndingInSoftLineBreak);
94031
+ if (!this.row.flags.get(LayoutRowStateFlags.InfinityWidth))
94032
+ BoxAligner.align(this.row, this.rowFormatter.paragraphProps.alignment, currLogicRowEndPos, this.rowBoxIndexStart, dontJustifyLinesEndingInSoftLineBreak);
94015
94033
  this.rowBoxIndexStart = this.row.boxes.length;
94016
94034
  }
94017
94035
  deleteSomeAnchorObjects(index, posToRestart) {
@@ -95711,6 +95729,7 @@ class RowEndedWithPageBreakState extends RowEndedWithParagraphMarkFormatterState
95711
95729
 
95712
95730
 
95713
95731
 
95732
+
95714
95733
  class RowTabInfo {
95715
95734
  get row() {
95716
95735
  return this.rowFormatter.row;
@@ -95781,9 +95800,10 @@ class RowTabInfo {
95781
95800
  if (tabXPosRelativePage > lastInterval.end) {
95782
95801
  if (lastInterval.end < this.rowFormatter.paragraphHorizontalBounds.end) {
95783
95802
  if (this.rowFormatter.manager.model.compatibilitySettings.compatibilityMode < CompatibilityMode.Word2013) {
95803
+ this.currInterval.avaliableWidth = Number.MAX_SAFE_INTEGER - this.currInterval.busyWidth;
95784
95804
  this.currInterval.length = Number.MAX_SAFE_INTEGER;
95785
- this.currInterval.avaliableWidth = Number.MAX_SAFE_INTEGER;
95786
95805
  this.row.width = Number.MAX_SAFE_INTEGER;
95806
+ this.row.flags.set(LayoutRowStateFlags.InfinityWidth, true);
95787
95807
  return this.addTabBox();
95788
95808
  }
95789
95809
  else if (tabBox.right < this.rowFormatter.paragraphHorizontalBounds.end) {
@@ -99346,7 +99366,8 @@ class BaseFormatter {
99346
99366
  const minPageContentHeight = bottomPosition + margins.bottom;
99347
99367
  const minVisibleAreaHeight = minPageContentHeight +
99348
99368
  pageInfo.topMargin + pageInfo.topPageBorderWidth + pageInfo.bottomPageBorderWidth + pageInfo.bottomMargin;
99349
- const diff = Math.floor(Math.max(0, this.manager.controlHeightProvider.getVisibleAreaHeight(false) - minVisibleAreaHeight));
99369
+ const zoomLevel = this.manager.innerClientProperties.viewsSettings.zoomLevel;
99370
+ const diff = Math.floor(Math.max(0, this.manager.controlHeightProvider.getVisibleAreaHeight(false) / zoomLevel - minVisibleAreaHeight));
99350
99371
  const finalPageHeight = minPageContentHeight + diff;
99351
99372
  const columnHeight = finalPageHeight - margins.vertical;
99352
99373
  this.layoutPosition.column.height = columnHeight;
@@ -101772,6 +101793,7 @@ class ViewSettings {
101772
101793
  this.paddings = new margins/* Margins */.m(15, 15, 15, 15);
101773
101794
  this.pageVerticalInfo = new RenderPageVertivalInfo();
101774
101795
  this.showHorizontalRuler = true;
101796
+ this.zoomLevel = 1.0;
101775
101797
  }
101776
101798
  copyFrom(obj) {
101777
101799
  this.paddings = new margins/* Margins */.m(obj.paddings.left, obj.paddings.right, obj.paddings.top, obj.paddings.bottom);
@@ -101779,6 +101801,8 @@ class ViewSettings {
101779
101801
  this._widthOfPage = obj._widthOfPage;
101780
101802
  this.fixedWidth = obj.fixedWidth;
101781
101803
  this.showHorizontalRuler = obj.showHorizontalRuler;
101804
+ this.zoomLevel = obj.zoomLevel;
101805
+ this.allowZoom = obj.allowZoom;
101782
101806
  this.pageVerticalInfo.copyFrom(obj.pageVerticalInfo);
101783
101807
  }
101784
101808
  }
@@ -102225,953 +102249,6 @@ const RendererClassNames = {
102225
102249
  CURSOR_NO_BLINK_CLASS_NAME: "dxreSelNoblink",
102226
102250
  };
102227
102251
 
102228
- ;// CONCATENATED MODULE: ./src/common/canvas/renderes/z-index-helper.ts
102229
- var zIndexCssClassType;
102230
- (function (zIndexCssClassType) {
102231
- zIndexCssClassType[zIndexCssClassType["TextBoxBg"] = 0] = "TextBoxBg";
102232
- zIndexCssClassType[zIndexCssClassType["TblRowBg"] = 1] = "TblRowBg";
102233
- zIndexCssClassType[zIndexCssClassType["TblCellBg"] = 2] = "TblCellBg";
102234
- zIndexCssClassType[zIndexCssClassType["ParBg"] = 3] = "ParBg";
102235
- zIndexCssClassType[zIndexCssClassType["BoxBg"] = 4] = "BoxBg";
102236
- zIndexCssClassType[zIndexCssClassType["FieldBg"] = 5] = "FieldBg";
102237
- zIndexCssClassType[zIndexCssClassType["SelRange"] = 6] = "SelRange";
102238
- zIndexCssClassType[zIndexCssClassType["BoxSpace"] = 7] = "BoxSpace";
102239
- zIndexCssClassType[zIndexCssClassType["SelSearch"] = 8] = "SelSearch";
102240
- zIndexCssClassType[zIndexCssClassType["SelRow"] = 9] = "SelRow";
102241
- zIndexCssClassType[zIndexCssClassType["Box"] = 10] = "Box";
102242
- zIndexCssClassType[zIndexCssClassType["Bookmark"] = 11] = "Bookmark";
102243
- zIndexCssClassType[zIndexCssClassType["TableBorder"] = 12] = "TableBorder";
102244
- zIndexCssClassType[zIndexCssClassType["SelMissp"] = 13] = "SelMissp";
102245
- zIndexCssClassType[zIndexCssClassType["SelCursor"] = 14] = "SelCursor";
102246
- zIndexCssClassType[zIndexCssClassType["SelTouchBar"] = 15] = "SelTouchBar";
102247
- zIndexCssClassType[zIndexCssClassType["TblCursor"] = 16] = "TblCursor";
102248
- zIndexCssClassType[zIndexCssClassType["AnchoredPicture"] = 17] = "AnchoredPicture";
102249
- zIndexCssClassType[zIndexCssClassType["TextBox"] = 18] = "TextBox";
102250
- })(zIndexCssClassType || (zIndexCssClassType = {}));
102251
- class ZIndexHelper {
102252
- static getClassName(level, zIndexCssNames) {
102253
- return `dxre${ZIndexHelper.names[zIndexCssNames]}ZL${level}`;
102254
- }
102255
- }
102256
- ZIndexHelper.names = {
102257
- [zIndexCssClassType.TextBoxBg]: "TextBoxBg",
102258
- [zIndexCssClassType.TblRowBg]: "TblRowBg",
102259
- [zIndexCssClassType.TblCellBg]: "TblCellBg",
102260
- [zIndexCssClassType.ParBg]: "ParBg",
102261
- [zIndexCssClassType.BoxBg]: "BoxBg",
102262
- [zIndexCssClassType.FieldBg]: "FieldBg",
102263
- [zIndexCssClassType.SelRange]: "SelRange",
102264
- [zIndexCssClassType.BoxSpace]: "BoxSpace",
102265
- [zIndexCssClassType.SelSearch]: "SelSearch",
102266
- [zIndexCssClassType.SelRow]: "SelRow",
102267
- [zIndexCssClassType.Box]: "Box",
102268
- [zIndexCssClassType.Bookmark]: "Bookmark",
102269
- [zIndexCssClassType.TableBorder]: "TableBorder",
102270
- [zIndexCssClassType.SelMissp]: "SelMissp",
102271
- [zIndexCssClassType.SelCursor]: "SelCursor",
102272
- [zIndexCssClassType.SelTouchBar]: "SelTouchBar",
102273
- [zIndexCssClassType.TblCursor]: "TblCursor",
102274
- [zIndexCssClassType.AnchoredPicture]: "AnchoredPicture",
102275
- [zIndexCssClassType.TextBox]: "TextBox",
102276
- };
102277
-
102278
- ;// CONCATENATED MODULE: ./src/common/canvas/utils.ts
102279
- class CanvasUtils {
102280
- static buildHyperlinkTipString(hyperlinkTip, clickText, settings) {
102281
- if (!hyperlinkTip)
102282
- hyperlinkTip = "";
102283
- return settings.createHyperlinkTooltip(hyperlinkTip, `\nCtrl + ${clickText}`).replace(/['|"]/g, "&quot;");
102284
- }
102285
- }
102286
-
102287
- ;// CONCATENATED MODULE: ./src/common/canvas/renderes/common/document-renderer.ts
102288
-
102289
-
102290
-
102291
-
102292
-
102293
-
102294
-
102295
-
102296
-
102297
-
102298
-
102299
-
102300
-
102301
-
102302
-
102303
-
102304
-
102305
-
102306
-
102307
-
102308
-
102309
-
102310
-
102311
-
102312
-
102313
-
102314
-
102315
-
102316
-
102317
-
102318
- class SimpleViewCanvasSizeManager {
102319
- constructor(canvasManager, control) {
102320
- this.size = new geometry_size.Size(0, 0);
102321
- this.isSizeObserving = false;
102322
- this.sizeUpdated = false;
102323
- this.resizeFrameId = null;
102324
- this.canvasManager = canvasManager;
102325
- this.control = control;
102326
- this.resizeObserver = new ResizeObserver(() => {
102327
- this.sizeUpdated = false;
102328
- this.resizeFrameId = requestAnimationFrame(() => {
102329
- if (!this.sizeUpdated)
102330
- this.changeSize(false);
102331
- this.sizeUpdated = true;
102332
- this.resizeFrameId = null;
102333
- });
102334
- });
102335
- }
102336
- dispose() {
102337
- if (this.resizeFrameId)
102338
- cancelAnimationFrame(this.resizeFrameId);
102339
- this.resizeFrameId = null;
102340
- this.resizeObserver.disconnect();
102341
- }
102342
- changeSize(force) {
102343
- const curr = new geometry_size.Size(this.canvasManager.getCanvasWidth(), this.canvasManager.controlHeightProvider.getVisibleAreaHeight(false));
102344
- if (force || !curr.equals(this.size)) {
102345
- this.size = curr;
102346
- this.changeSizeCore();
102347
- }
102348
- }
102349
- setViewMode(val) {
102350
- if (val) {
102351
- this.changeSize(true);
102352
- if (!this.isSizeObserving) {
102353
- this.resizeObserver.observe(this.canvasManager.canvas);
102354
- this.isSizeObserving = true;
102355
- }
102356
- }
102357
- else {
102358
- if (this.isSizeObserving) {
102359
- this.resizeObserver.unobserve(this.canvasManager.canvas);
102360
- this.isSizeObserving = false;
102361
- }
102362
- this.changeSizeCore();
102363
- }
102364
- this.sizeUpdated = true;
102365
- }
102366
- changeSizeCore() {
102367
- {
102368
- utils_list.ListUtils.forEach(this.control.viewManager.cache, (_val) => this.control.viewManager.renderer.removePage(1), 1);
102369
- this.control.viewManager.ensureFirstPageIsRendered();
102370
- this.control.innerClientProperties.viewsSettings.widthOfPage = this.canvasManager.getCanvasWidth();
102371
- if (this.control.layoutFormatterManager) {
102372
- this.control.layoutFormatterManager.invalidator.onChangedAllLayout();
102373
- this.control.selection.scrollManager.setScroll(new ScrollState().byModelPosition(this.control.selection)
102374
- .setModelPosition(this.control.selection.lastSelectedInterval.start).useStdRelativePosition().useStdOffset());
102375
- }
102376
- this.control.owner.adjustControl();
102377
- this.control.horizontalRulerControl.update();
102378
- }
102379
- }
102380
- }
102381
- class DocumentRenderer {
102382
- get cache() { return this.viewManager.cache; }
102383
- constructor(viewManager) {
102384
- this.viewManager = viewManager;
102385
- if (this.viewManager.innerClientProperties.viewsSettings.isSimpleView)
102386
- dom.DomUtils.addClassName(this.viewManager.canvas, RendererClassNames.SIMPLE_VIEW);
102387
- }
102388
- onViewTypeChanged() {
102389
- switch (this.viewManager.innerClientProperties.viewsSettings.viewType) {
102390
- case ViewType.Simple:
102391
- dom.DomUtils.addClassName(this.viewManager.canvas, RendererClassNames.SIMPLE_VIEW);
102392
- break;
102393
- case ViewType.PrintLayout:
102394
- dom.DomUtils.removeClassName(this.viewManager.canvas, RendererClassNames.SIMPLE_VIEW);
102395
- break;
102396
- }
102397
- }
102398
- applyPageChange(layoutPage, pageChange) {
102399
- Log.print(LogSource.DocumentRenderer, "applyPageChanges", `pageIndex ${pageChange.index}`);
102400
- const pageFromCache = this.cache[pageChange.index];
102401
- for (let pageAreaChange of pageChange.mainPageAreaChanges)
102402
- this.applyMainPageAreaChange(pageFromCache, layoutPage, pageAreaChange);
102403
- for (let pageAreaChange of pageChange.otherPageAreaChanges)
102404
- this.applyOtherPageAreaChange(pageFromCache, layoutPage, pageAreaChange);
102405
- for (let anchoredPictureChange of pageChange.anchoredPictureChanges)
102406
- this.applyAnchorPictureChange(pageFromCache, layoutPage, anchoredPictureChange);
102407
- }
102408
- applyAnchorPictureChange(cache, layoutPage, ancPicChange) {
102409
- const objId = ancPicChange.index;
102410
- switch (ancPicChange.changeType) {
102411
- case LayoutChangeType.Deleted: {
102412
- DocumentRenderer.removeFromContainerByObject(objId, DocumentRenderer.getAnchoredObjectsContainer(cache.page), cache.anchoredPicture);
102413
- break;
102414
- }
102415
- case LayoutChangeType.Replaced: {
102416
- const obj = layoutPage.anchoredObjectHolder.getObjById(objId);
102417
- DocumentRenderer.replaceFromContainerByObject(objId, DocumentRenderer.getAnchoredObjectsContainer(cache.page), cache.anchoredPicture, this.renderFloatingPicture(obj, layoutPage.renderLevelCalculator));
102418
- break;
102419
- }
102420
- case LayoutChangeType.Updated: {
102421
- break;
102422
- }
102423
- case LayoutChangeType.Inserted: {
102424
- const obj = layoutPage.anchoredObjectHolder.getObjById(objId);
102425
- DocumentRenderer.insertToContainerByObject(objId, DocumentRenderer.getAnchoredObjectsContainer(cache.page), cache.anchoredPicture, this.renderFloatingPicture(obj, layoutPage.renderLevelCalculator));
102426
- break;
102427
- }
102428
- default: throw new Error(lib_errors/* Errors */.D.InternalException);
102429
- }
102430
- }
102431
- applyMainPageAreaChange(pageCache, layoutPage, pageAreaChange) {
102432
- switch (pageAreaChange.changeType) {
102433
- case LayoutChangeType.Deleted:
102434
- DocumentRenderer.removeFromContainerByIndex(pageCache.page, pageAreaChange.canvasIndex, DocumentRenderer.getMainPageAreaContainerCore);
102435
- break;
102436
- case LayoutChangeType.Replaced:
102437
- DocumentRenderer.replaceInContainer(pageCache.page, pageAreaChange.canvasIndex, this.renderPageArea(layoutPage.renderLevelCalculator, pageCache, layoutPage.mainSubDocumentPageAreas[pageAreaChange.layoutIndex], null), DocumentRenderer.getMainPageAreaContainerCore);
102438
- break;
102439
- case LayoutChangeType.Updated: {
102440
- const layoutPageArea = layoutPage.mainSubDocumentPageAreas[pageAreaChange.layoutIndex];
102441
- const pageAreaElement = DocumentRenderer.getMainPageAreaContainerCore(pageCache.page).childNodes[pageAreaChange.canvasIndex];
102442
- for (let columnChange of pageAreaChange.columnChanges)
102443
- this.applyColumnChange(pageAreaElement, layoutPageArea, columnChange, layoutPage.renderLevelCalculator.renderMainPageAreaLevel);
102444
- break;
102445
- }
102446
- default: throw new Error(lib_errors/* Errors */.D.InternalException);
102447
- }
102448
- }
102449
- applyOtherPageAreaChange(cache, layoutPage, pageAreaChange) {
102450
- const subDocId = pageAreaChange.index;
102451
- const pageArea = layoutPage.otherPageAreas[subDocId];
102452
- switch (pageAreaChange.changeType) {
102453
- case LayoutChangeType.Deleted: {
102454
- DocumentRenderer.removeFromContainerByObject(subDocId, DocumentRenderer.getOtherPageAreaContainerCore(cache.page), cache.otherAreas);
102455
- DocumentRenderer.removeFromContainerByObject(subDocId, DocumentRenderer.getTextBoxBackgroundContainer(cache.page), cache.textBoxBgElements);
102456
- break;
102457
- }
102458
- case LayoutChangeType.Replaced: {
102459
- DocumentRenderer.replaceFromContainerByObject(subDocId, DocumentRenderer.getOtherPageAreaContainerCore(cache.page), cache.otherAreas, this.renderPageArea(layoutPage.renderLevelCalculator, cache, pageArea, pageArea.subDocument.isTextBox() ? layoutPage.anchoredObjectHolder.getTextBoxByInternalSubDocId(subDocId) : null));
102460
- break;
102461
- }
102462
- case LayoutChangeType.Updated: {
102463
- const pageAreaElement = cache.otherAreas[subDocId];
102464
- const level = pageArea.subDocument.isTextBox() ?
102465
- layoutPage.renderLevelCalculator.getRenderLevel(layoutPage.anchoredObjectHolder.getTextBoxByInternalSubDocId(subDocId).rendererLevel) :
102466
- layoutPage.renderLevelCalculator.renderHeaderFooterPageAreasLevel;
102467
- for (let columnChange of pageAreaChange.columnChanges)
102468
- this.applyColumnChange(pageAreaElement, pageArea, columnChange, level);
102469
- break;
102470
- }
102471
- case LayoutChangeType.Inserted: {
102472
- DocumentRenderer.insertToContainerByObject(subDocId, DocumentRenderer.getOtherPageAreaContainerCore(cache.page), cache.otherAreas, this.renderPageArea(layoutPage.renderLevelCalculator, cache, pageArea, pageArea.subDocument.isTextBox() ? layoutPage.anchoredObjectHolder.getTextBoxByInternalSubDocId(subDocId) : null));
102473
- break;
102474
- }
102475
- default: throw new Error(lib_errors/* Errors */.D.InternalException);
102476
- }
102477
- }
102478
- applyColumnChange(pageAreaElement, layoutPageArea, columnChange, level) {
102479
- switch (columnChange.changeType) {
102480
- case LayoutChangeType.Deleted:
102481
- DocumentRenderer.removeFromContainerByIndex(pageAreaElement, columnChange.canvasIndex, DocumentRenderer.getColumnsContainerCore);
102482
- break;
102483
- case LayoutChangeType.Replaced: {
102484
- const renderedColumn = this.renderColumn(layoutPageArea.columns[columnChange.layoutIndex], level, layoutPageArea.subDocument.isMain());
102485
- DocumentRenderer.replaceInContainer(pageAreaElement, columnChange.canvasIndex, renderedColumn, DocumentRenderer.getColumnsContainerCore);
102486
- break;
102487
- }
102488
- case LayoutChangeType.Updated: {
102489
- const layoutColumn = layoutPageArea.columns[columnChange.layoutIndex];
102490
- const columnElement = DocumentRenderer.getColumnsContainerCore(pageAreaElement).childNodes[columnChange.canvasIndex];
102491
- for (var rowChange of columnChange.rowChanges)
102492
- DocumentRenderer.applyChange(columnElement, rowChange, DocumentRenderer.getRowsContainerCore, () => this.renderRow(layoutColumn.rows[rowChange.layoutIndex], level));
102493
- for (var tableChange of columnChange.tableChanges)
102494
- DocumentRenderer.applyChange(columnElement, tableChange, DocumentRenderer.getTablesContainerCore, () => DocumentRenderer.renderTable(layoutColumn.tablesInfo[tableChange.layoutIndex], level, this.viewManager.innerClientProperties.showTableGridLines));
102495
- for (var paragraphFrameChange of columnChange.paragraphFrameChanges)
102496
- DocumentRenderer.applyChange(columnElement, paragraphFrameChange, DocumentRenderer.getParagraphFramesContainerCore, () => DocumentRenderer.renderParagraphFrame(layoutColumn.paragraphFrames[paragraphFrameChange.layoutIndex], level));
102497
- break;
102498
- }
102499
- case LayoutChangeType.Inserted: {
102500
- const renderedColumn = this.renderColumn(layoutPageArea.columns[columnChange.layoutIndex], level, layoutPageArea.subDocument.isMain());
102501
- DocumentRenderer.insertInContainer(pageAreaElement, columnChange.canvasIndex, renderedColumn, DocumentRenderer.getColumnsContainerCore);
102502
- break;
102503
- }
102504
- default: throw new Error(lib_errors/* Errors */.D.InternalException);
102505
- }
102506
- }
102507
- static applyChange(topLevelNode, change, getContainer, getRenderedElement) {
102508
- switch (change.changeType) {
102509
- case LayoutChangeType.Deleted:
102510
- DocumentRenderer.removeFromContainerByIndex(topLevelNode, change.canvasIndex, getContainer);
102511
- break;
102512
- case LayoutChangeType.Replaced:
102513
- DocumentRenderer.replaceInContainer(topLevelNode, change.canvasIndex, getRenderedElement(), getContainer);
102514
- break;
102515
- case LayoutChangeType.Inserted:
102516
- DocumentRenderer.insertInContainer(topLevelNode, change.canvasIndex, getRenderedElement(), getContainer);
102517
- break;
102518
- case LayoutChangeType.Updated:
102519
- break;
102520
- default: throw new Error(lib_errors/* Errors */.D.InternalException);
102521
- }
102522
- }
102523
- getPageRender(layoutPageIndex, layoutPage) {
102524
- const cachedPage = this.cache[layoutPageIndex].page;
102525
- if (!DocumentRenderer.isPageElementConsiderAllContainers(cachedPage))
102526
- this.renderPageContent(layoutPage, layoutPageIndex);
102527
- return this.cache[layoutPageIndex].page;
102528
- }
102529
- renderPage(layoutPage, layoutPageIndex, renderInnerContent) {
102530
- layoutPage.flags.set(LayoutPageFlags.IsSelectionRendered, false);
102531
- layoutPage.flags.set(LayoutPageFlags.IsMisspelledSelectionRendered, false);
102532
- layoutPage.flags.set(LayoutPageFlags.IsRangePermissionsRendered, false);
102533
- let pageCache = this.cache[layoutPageIndex];
102534
- if (pageCache) {
102535
- const pageElement = pageCache.page;
102536
- this.updatePageClasses(pageElement);
102537
- this.updatePageSize(layoutPage, pageElement);
102538
- DocumentRenderer.updatePageColor(pageElement, this.viewManager.layout.pageColor);
102539
- if (!DocumentRenderer.isPageElementEmpty(pageElement))
102540
- this.removePageContent(layoutPageIndex);
102541
- }
102542
- else {
102543
- const pageElement = DocumentRenderer.renderContainer("");
102544
- pageElement.appendChild(DocumentRenderer.renderContainer(RendererClassNames.SERVICE_CONTAINER));
102545
- DocumentRenderer.updatePageColor(pageElement, this.viewManager.layout.pageColor);
102546
- this.updatePageClasses(pageElement);
102547
- this.updatePageSize(layoutPage, pageElement);
102548
- DocumentRenderer.insertInContainer(this.viewManager.pagesContainer, layoutPageIndex, pageElement, (node) => node);
102549
- this.cache.splice(layoutPageIndex, 0, new DocumentRendererPageCache(pageElement));
102550
- }
102551
- if (renderInnerContent)
102552
- this.renderPageContent(layoutPage, layoutPageIndex);
102553
- }
102554
- removePage(pageIndex) {
102555
- const pageCache = this.cache[pageIndex];
102556
- if (pageCache) {
102557
- pageCache.page.parentNode.removeChild(pageCache.page);
102558
- this.cache.splice(pageIndex, 1);
102559
- }
102560
- }
102561
- updatePageSize(page, pageElement) {
102562
- if (pageElement.offsetHeight != page.height || pageElement.offsetWidth != page.width)
102563
- dom.DomUtils.setStyleSize(pageElement.style, page);
102564
- }
102565
- updatePageClasses(pageElement) {
102566
- pageElement.className = RendererClassNames.PAGE;
102567
- if (this.viewManager.innerClientProperties.viewsSettings.isSimpleView &&
102568
- !this.viewManager.innerClientProperties.viewsSettings.isFixedWidthMode)
102569
- dom.DomUtils.addClassName(pageElement, RendererClassNames.SIMPLE_PAGE_FLOW_MODE);
102570
- }
102571
- removePageContent(pageIndex) {
102572
- const pageCache = this.cache[pageIndex];
102573
- if (pageCache)
102574
- pageCache.removeContent();
102575
- }
102576
- renderPageContainers(pageCache) {
102577
- pageCache.page.appendChild(DocumentRenderer.renderContainer(RendererClassNames.SELECTION_CONTAINER));
102578
- pageCache.page.appendChild(DocumentRenderer.renderContainer(RendererClassNames.SEARCH_SELECTION_CONTAINER));
102579
- pageCache.page.appendChild(DocumentRenderer.renderContainer(RendererClassNames.MISSPELLED_SELECTION_CONTAINER));
102580
- pageCache.page.appendChild(DocumentRenderer.renderContainer(RendererClassNames.RANGE_PERMISSIONS_CONTAINER));
102581
- const result = [
102582
- pageCache.page.appendChild(DocumentRenderer.renderContainer(RendererClassNames.MAIN_PAGE_AREA_CONTAINER)),
102583
- pageCache.page.appendChild(DocumentRenderer.renderContainer(RendererClassNames.OTHER_PAGE_AREA_CONTAINER)),
102584
- pageCache.page.appendChild(DocumentRenderer.renderContainer(RendererClassNames.FLOATING_OBJECTS_CONTAINER))
102585
- ];
102586
- pageCache.page.appendChild(DocumentRenderer.renderContainer(RendererClassNames.SHAPE_BG_CONTAINER));
102587
- return result;
102588
- }
102589
- renderPageContent(page, pageIndex) {
102590
- const pageCache = this.cache[pageIndex];
102591
- const [mainPageAreasContainer, otherPageAreasContainer, floatingObjectsContainer] = this.renderPageContainers(pageCache);
102592
- utils_list.ListUtils.forEach(page.mainSubDocumentPageAreas, (area) => mainPageAreasContainer.appendChild(this.renderPageArea(page.renderLevelCalculator, pageCache, area, null)));
102593
- if (!this.viewManager.innerClientProperties.viewsSettings.isSimpleView)
102594
- number/* NumberMapUtils */.j.forEach(page.otherPageAreas, (pageArea, subDocId) => {
102595
- if (!pageArea.subDocument.isTextBox())
102596
- DocumentRenderer.insertToContainerByObject(subDocId, otherPageAreasContainer, pageCache.otherAreas, this.renderPageArea(page.renderLevelCalculator, pageCache, pageArea, null));
102597
- });
102598
- for (let ancObjProps of this.renderPageContentGetFloatingObjects(page)) {
102599
- switch (ancObjProps.getType()) {
102600
- case LayoutBoxType.AnchorTextBox:
102601
- const internalSubDocId = ancObjProps.internalSubDocId;
102602
- DocumentRenderer.insertToContainerByObject(internalSubDocId, otherPageAreasContainer, pageCache.otherAreas, this.renderPageArea(page.renderLevelCalculator, pageCache, page.otherPageAreas[internalSubDocId], ancObjProps));
102603
- break;
102604
- case LayoutBoxType.AnchorPicture:
102605
- DocumentRenderer.insertToContainerByObject(ancObjProps.objectId, floatingObjectsContainer, pageCache.anchoredPicture, this.renderFloatingPicture(ancObjProps, page.renderLevelCalculator));
102606
- break;
102607
- }
102608
- }
102609
- }
102610
- static updatePageColor(pageElement, newColor) {
102611
- const newStringColor = utils_color/* ColorUtils */.i.colorToHash(newColor);
102612
- if (pageElement.style.backgroundColor != newStringColor)
102613
- pageElement.style.backgroundColor = ColorHelper.isEmptyBgColor(newColor) ? "" : newStringColor;
102614
- }
102615
- static getPageAreaClassname(area) {
102616
- switch (area.subDocument.info.getType()) {
102617
- case SubDocumentInfoType.Main:
102618
- case SubDocumentInfoType.Header:
102619
- case SubDocumentInfoType.Footer:
102620
- return RendererClassNames.PAGE_AREA;
102621
- case SubDocumentInfoType.TextBox:
102622
- return `${RendererClassNames.PAGE_AREA} ${RendererClassNames.FLOATING_OBJECT_TEXT_BOX_AREA}`;
102623
- }
102624
- throw new Error(lib_errors/* Errors */.D.InternalException);
102625
- }
102626
- renderPageArea(renderLevelCalculator, pageCache, area, textBox, renderContent = true) {
102627
- const element = DocumentRenderer.renderContainer(DocumentRenderer.getPageAreaClassname(area));
102628
- if (area.subDocument.isTextBox())
102629
- element.style.overflow = "hidden";
102630
- dom.DomUtils.setStyleSizeAndPosition(element.style, area);
102631
- let level;
102632
- switch (area.subDocument.info.getType()) {
102633
- case SubDocumentInfoType.TextBox:
102634
- level = renderLevelCalculator.getRenderLevel(textBox.rendererLevel);
102635
- break;
102636
- case SubDocumentInfoType.Footer:
102637
- case SubDocumentInfoType.Header:
102638
- level = renderLevelCalculator.renderHeaderFooterPageAreasLevel;
102639
- break;
102640
- case SubDocumentInfoType.Main:
102641
- level = renderLevelCalculator.renderMainPageAreaLevel;
102642
- break;
102643
- default: throw new Error(lib_errors/* Errors */.D.NotImplemented);
102644
- }
102645
- if (area.subDocument.isTextBox()) {
102646
- const textBoxShapeInfo = DocumentRenderer.renderContainer(RendererClassNames.TEXT_BOX_BG + " " + ZIndexHelper.getClassName(level, zIndexCssClassType.TextBoxBg));
102647
- const oldBgElem = pageCache.textBoxBgElements[area.subDocument.id];
102648
- if (oldBgElem)
102649
- dom.DomUtils.hideNode(oldBgElem);
102650
- pageCache.textBoxBgElements[area.subDocument.id] = textBoxShapeInfo;
102651
- DocumentRenderer.setShapePropertiesToElement(textBoxShapeInfo, textBox.shape, true);
102652
- dom.DomUtils.setStyleSize(textBoxShapeInfo.style, area);
102653
- dom.DomUtils.setStylePosition(textBoxShapeInfo.style, textBox.getExtendedBounds());
102654
- DocumentRenderer.setRotationInRadians(textBoxShapeInfo, textBox.rotationInRadians);
102655
- DocumentRenderer.getTextBoxBackgroundContainer(pageCache.page).appendChild(textBoxShapeInfo);
102656
- dom.DomUtils.setStylePosition(element.style, area);
102657
- if (DocumentRenderer.setRotationInRadians(element, textBox.rotationInRadians))
102658
- dom.DomUtils.addClassName(element, ZIndexHelper.getClassName(level, zIndexCssClassType.TextBox));
102659
- }
102660
- else {
102661
- const color = ColorHelper.isEmptyBgColor(this.viewManager.layout.pageColor) ?
102662
- utils_color/* ColorUtils */.i.LIGHT_COLOR : this.viewManager.layout.pageColor;
102663
- DocumentRenderer.updatePageColor(element, color);
102664
- }
102665
- if (renderContent)
102666
- for (let column of area.columns)
102667
- element.appendChild(this.renderColumn(column, level, area.subDocument.isMain()));
102668
- return element;
102669
- }
102670
- renderColumn(column, level, _isMainPageArea) {
102671
- const columnElement = DocumentRenderer.renderContainer(RendererClassNames.COLUMN);
102672
- dom.DomUtils.setStyleSizeAndPosition(columnElement.style, column);
102673
- const rowsContainer = columnElement.appendChild(DocumentRenderer.renderContainer(RendererClassNames.ROWS_CONTAINER));
102674
- const paragraphFramesContainer = columnElement.appendChild(DocumentRenderer.renderContainer(RendererClassNames.PARAGRAPHFRAMES_CONTAINER));
102675
- const tablesContainer = columnElement.appendChild(DocumentRenderer.renderContainer(RendererClassNames.TABLES_CONTAINER));
102676
- for (let row of column.rows)
102677
- rowsContainer.appendChild(this.renderRow(row, level));
102678
- for (let frame of column.paragraphFrames)
102679
- paragraphFramesContainer.appendChild(DocumentRenderer.renderParagraphFrame(frame, level));
102680
- for (let tableColumn of column.tablesInfo)
102681
- tablesContainer.appendChild(DocumentRenderer.renderTable(tableColumn, level, this.viewManager.innerClientProperties.showTableGridLines));
102682
- return columnElement;
102683
- }
102684
- renderRow(row, level) {
102685
- const lastBoxIndexWhatCanStrikeoutAndUnderline = row.getLastBoxIndexWhatCanStrikeoutAndUnderline();
102686
- const rowElement = DocumentRenderer.renderContainer(RendererClassNames.ROW);
102687
- rowElement.innerHTML = "";
102688
- if (row.numberingListBox) {
102689
- let box = this.renderBox(row, row.numberingListBox.textBox, 0 > lastBoxIndexWhatCanStrikeoutAndUnderline, level).html;
102690
- if (typeof box === 'string')
102691
- rowElement.innerHTML += box;
102692
- else
102693
- rowElement.appendChild(box);
102694
- if (row.numberingListBox.separatorBox) {
102695
- let box = this.renderBox(row, row.numberingListBox.separatorBox, 0 > lastBoxIndexWhatCanStrikeoutAndUnderline, level).html;
102696
- if (typeof box === 'string')
102697
- rowElement.innerHTML += box;
102698
- else
102699
- rowElement.appendChild(box);
102700
- }
102701
- }
102702
- let increaseRowHeight = false;
102703
- for (let boxIndex = 0, box; box = row.boxes[boxIndex]; boxIndex++) {
102704
- if (box.getType() == LayoutBoxType.AnchorTextBox || box.getType() == LayoutBoxType.AnchorPicture)
102705
- continue;
102706
- const boxRenderResult = this.renderBox(row, box, boxIndex > lastBoxIndexWhatCanStrikeoutAndUnderline, level);
102707
- const boxRenderResultHtml = boxRenderResult.html;
102708
- if (typeof boxRenderResultHtml === 'string')
102709
- rowElement.innerHTML += boxRenderResultHtml;
102710
- else
102711
- rowElement.appendChild(boxRenderResultHtml);
102712
- increaseRowHeight = increaseRowHeight || boxRenderResult.increaseRowHeight;
102713
- }
102714
- for (let bookmarkBox of row.bookmarkBoxes)
102715
- rowElement.appendChild(DocumentRenderer.renderBookmark(bookmarkBox, level));
102716
- dom.DomUtils.setStyleSizeAndPosition(rowElement.style, new rectangle.Rectangle(row.x, row.y + row.getSpacingBefore(), row.width, (row.height - row.getSpacingBefore()) + (increaseRowHeight ? 1 : 0)));
102717
- return rowElement;
102718
- }
102719
- renderBox(row, box, noNeedUnderlineAndStrikeout, level) {
102720
- let content = box.renderGetContent(this);
102721
- let top = box.getTop(row);
102722
- const left = box.x;
102723
- if (box.characterProperties.script === CharacterFormattingScript.Subscript) {
102724
- const multiplier = box.characterProperties.fontInfo.scriptMultiplier;
102725
- top += unit_converter/* UnitConverter */.u.pointsToPixelsF(box.characterProperties.fontSize) * (box.characterProperties.fontInfo.subScriptOffset * multiplier - multiplier + 1);
102726
- }
102727
- const delta = box.height > row.height && top >= 0 ? math.MathUtils.round(box.height - row.height) * 3 / 4 : 0;
102728
- let boxStyles = [];
102729
- boxStyles.push("left: " + math.MathUtils.round(left, 3) + "px");
102730
- boxStyles.push("top: " + math.MathUtils.round(top - delta, 3) + "px");
102731
- const height = math.MathUtils.round(box.height, 3);
102732
- boxStyles.push("height: " + height + "px");
102733
- if (browser.Browser.MacOSPlatform || browser.Browser.MacOSMobilePlatform)
102734
- boxStyles.push("line-height: " + height + "px");
102735
- if (box.characterProperties.smallCaps)
102736
- boxStyles.push("font-variant: small-caps");
102737
- const props = box.renderGetCharacterProperties();
102738
- const charProps = props.initProps;
102739
- const colorProps = props.colorInfo;
102740
- const underlineColor = colorProps.underlineColor;
102741
- const strikeoutColor = colorProps.strikeoutColor;
102742
- const textColor = colorProps.textColor;
102743
- const needUnderline = !noNeedUnderlineAndStrikeout && (charProps.fontUnderlineType != UnderlineType.None) && (box.getType() != LayoutBoxType.Space || !charProps.underlineWordsOnly);
102744
- const needStrikeout = !noNeedUnderlineAndStrikeout && (charProps.fontStrikeoutType != StrikeoutType.None) && (box.getType() != LayoutBoxType.Space || !charProps.strikeoutWordsOnly);
102745
- const noStrikeoutAndUnderline = (needStrikeout && needUnderline) || (needStrikeout && strikeoutColor != ColorHelper.AUTOMATIC_COLOR) || (needUnderline && underlineColor != ColorHelper.AUTOMATIC_COLOR);
102746
- let commonStyles;
102747
- if (noStrikeoutAndUnderline) {
102748
- commonStyles = HtmlConverter.getCssRules(charProps, textColor, box.renderIsWordBox(), noStrikeoutAndUnderline, true);
102749
- boxStyles = boxStyles.concat(HtmlConverter.getSizeSignificantRules(charProps));
102750
- boxStyles.push(HtmlConverter.getForeColorRule(textColor));
102751
- const needColor = strikeoutColor != ColorHelper.AUTOMATIC_COLOR ||
102752
- underlineColor != ColorHelper.AUTOMATIC_COLOR;
102753
- if (needColor && (!needStrikeout || strikeoutColor != ColorHelper.AUTOMATIC_COLOR)) {
102754
- const span = document.createElement('span');
102755
- span.style.cssText = commonStyles.join(";") + ';color: ' + ColorHelper.getCssString(textColor, true);
102756
- if (typeof content === 'string') {
102757
- span.innerHTML = content;
102758
- }
102759
- else {
102760
- span.appendChild(content);
102761
- }
102762
- content = span;
102763
- }
102764
- if (needStrikeout) {
102765
- const strikeoutColorStyle = needColor ? ("color: " + ColorHelper.getCssString(strikeoutColor == ColorHelper.AUTOMATIC_COLOR ? textColor : strikeoutColor, true)) : "";
102766
- const span = document.createElement('span');
102767
- span.style.cssText = commonStyles.join(";") + ';text-decoration: line-through;' + strikeoutColorStyle;
102768
- if (typeof content === 'string') {
102769
- span.innerHTML = content;
102770
- }
102771
- else {
102772
- span.appendChild(content);
102773
- }
102774
- content = span;
102775
- }
102776
- if (needUnderline) {
102777
- const underlineColorStyle = needColor ? ("color: " + ColorHelper.getCssString(underlineColor == ColorHelper.AUTOMATIC_COLOR ? textColor : underlineColor, true)) : "";
102778
- const span = document.createElement('span');
102779
- span.style.cssText = commonStyles.join(";") + ';text-decoration: underline;' + underlineColorStyle;
102780
- if (typeof content === 'string') {
102781
- span.innerHTML = content;
102782
- }
102783
- else {
102784
- span.appendChild(content);
102785
- }
102786
- content = span;
102787
- }
102788
- }
102789
- else
102790
- boxStyles = boxStyles.concat(HtmlConverter.getCssRules(charProps, textColor, box.renderIsWordBox(), noNeedUnderlineAndStrikeout, true));
102791
- let boxClass = "";
102792
- switch (box.getType()) {
102793
- case LayoutBoxType.Text:
102794
- case LayoutBoxType.LayoutDependent:
102795
- case LayoutBoxType.FieldCodeEnd:
102796
- case LayoutBoxType.FieldCodeStart:
102797
- case LayoutBoxType.ColumnBreak:
102798
- case LayoutBoxType.LineBreak:
102799
- case LayoutBoxType.PageBreak:
102800
- case LayoutBoxType.ParagraphMark:
102801
- case LayoutBoxType.SectionMark:
102802
- boxClass = RendererClassNames.BOX + " " + ZIndexHelper.getClassName(level, zIndexCssClassType.Box);
102803
- break;
102804
- default:
102805
- boxClass = RendererClassNames.BOX_SPACE + " " + ZIndexHelper.getClassName(level, zIndexCssClassType.BoxSpace);
102806
- }
102807
- if (charProps.hidden && this.viewManager.innerClientProperties.showHiddenSymbols)
102808
- boxClass += ' ' + RendererClassNames.HIDDEN_BOX;
102809
- const result = new DocumentFragment();
102810
- const contentSpan = document.createElement('span');
102811
- contentSpan.style.cssText = boxStyles.join(";");
102812
- contentSpan.setAttribute('class', boxClass);
102813
- if (typeof content === 'string') {
102814
- contentSpan.innerHTML = content;
102815
- }
102816
- else if (!!content) {
102817
- contentSpan.appendChild(content);
102818
- }
102819
- result.appendChild(contentSpan);
102820
- const backColor = colorProps.foregroundColor;
102821
- if (box.fieldLevel && (backColor == ColorHelper.AUTOMATIC_COLOR || backColor == ColorHelper.NO_COLOR)) {
102822
- let fieldBgClass = RendererClassNames.FIELD_BG + " " + ZIndexHelper.getClassName(level, zIndexCssClassType.FieldBg);
102823
- switch (box.fieldLevel) {
102824
- case 1:
102825
- fieldBgClass += ' ' + RendererClassNames.FIELD_BOX_LEVEL1;
102826
- break;
102827
- case 2:
102828
- fieldBgClass += ' ' + RendererClassNames.FIELD_BOX_LEVEL2;
102829
- break;
102830
- default: fieldBgClass += ' ' + RendererClassNames.FIELD_BOX_LEVEL3;
102831
- }
102832
- const span = document.createElement('span');
102833
- span.setAttribute('class', fieldBgClass);
102834
- span.style.cssText = 'top: ' + math.MathUtils.round(top, 3) + 'px; left: ' + math.MathUtils.round(left, 3) + 'px; width: ' +
102835
- math.MathUtils.round(box.width, 3) + 'px; height: ' + math.MathUtils.round(box.height, 3) + 'px';
102836
- result.appendChild(span);
102837
- }
102838
- if (utils_color/* ColorUtils */.i.getAlpha(backColor) > 0 && !noNeedUnderlineAndStrikeout) {
102839
- const height = row.height - row.getSpacingAfter();
102840
- const bgBoxStyle = "top: 0px; left: " + Math.floor(box.x) + "px; width: " + Math.ceil(box.width) + "px; height: " + math.MathUtils.round(height, 3) +
102841
- "px; background: " + ColorHelper.getCssStringInternal(backColor) + ";";
102842
- const span = document.createElement('span');
102843
- span.setAttribute('class', RendererClassNames.BOX_BG + " " + ZIndexHelper.getClassName(level, zIndexCssClassType.BoxBg));
102844
- span.style.cssText = bgBoxStyle;
102845
- result.appendChild(span);
102846
- }
102847
- if (box.hyperlinkTip) {
102848
- const tip = CanvasUtils.buildHyperlinkTipString(box.hyperlinkTip, this.viewManager.stringResources.commonLabels.clickToFollowHyperlink, this.viewManager.fieldOptions);
102849
- if (tip) {
102850
- const span = document.createElement('span');
102851
- span.setAttribute('title', tip);
102852
- result.replaceChild(span, contentSpan);
102853
- span.appendChild(contentSpan);
102854
- }
102855
- }
102856
- return new BoxRenderResult(result, charProps.hidden);
102857
- }
102858
- static renderBookmark(box, level) {
102859
- const className = (box.boxType == LayoutBookmarkBoxType.StartBox ?
102860
- RendererClassNames.START_BOOKMARK :
102861
- RendererClassNames.END_BOOKMARK) + " " + ZIndexHelper.getClassName(level, zIndexCssClassType.Bookmark);
102862
- const div = document.createElement('div');
102863
- div.setAttribute('class', className);
102864
- div.style.cssText = `width: ${math.MathUtils.round(box.width, 3)}px; height: ${math.MathUtils.round(box.height, 3)}px; ` +
102865
- `left: ${math.MathUtils.round(box.x, 3)}px; top: ${math.MathUtils.round(box.y, 3)}px; border-color: ${box.color}`;
102866
- return div;
102867
- }
102868
- renderPicture(box) {
102869
- return this.renderPictureBoxContent(box.createSize(), box.cacheInfo, box.hyperlinkTip, box.description);
102870
- }
102871
- renderFloatingPicture(box, renderLevelCalculator) {
102872
- const element = DocumentRenderer.renderContainer(RendererClassNames.ANCHORED_PICTURE + " " + ZIndexHelper.getClassName(renderLevelCalculator.getRenderLevel(box.rendererLevel), zIndexCssClassType.AnchoredPicture));
102873
- dom.DomUtils.setStyleSize(element.style, box);
102874
- dom.DomUtils.setStylePosition(element.style, new geometry_point.Point(box.x - box.shape.outlineWidth, box.y - box.shape.outlineWidth));
102875
- DocumentRenderer.setShapePropertiesToElement(element, box.shape, false);
102876
- DocumentRenderer.setRotationInRadians(element, box.rotationInRadians);
102877
- const content = box.renderGetContent(this);
102878
- element.innerHTML = '';
102879
- if (typeof content === 'string') {
102880
- element.innerHTML = content;
102881
- }
102882
- else {
102883
- element.appendChild(content);
102884
- }
102885
- return element;
102886
- }
102887
- static setShapePropertiesToElement(element, shape, isTextBox) {
102888
- element.style.backgroundColor = ColorHelper.getCssStringInternal(shape.fillColor);
102889
- element.style.borderStyle = DocumentRenderer.borderTypeToString(BorderLineStyle.Single);
102890
- element.style.borderColor = ColorHelper.getCssString(shape.outlineColor, false);
102891
- element.style.borderWidth = Math.max(isTextBox ? 1 : 0, shape.outlineWidth).toString() + "px";
102892
- element.style.boxSizing = "content-box";
102893
- }
102894
- static setRotationInRadians(element, rotation) {
102895
- const isSetRotation = rotation != 0;
102896
- element.style.transform = isSetRotation ? "rotate(" + rotation + "rad)" : "none";
102897
- return isSetRotation;
102898
- }
102899
- static renderParagraphFrame(paragraphFrame, level) {
102900
- const element = DocumentRenderer.renderContainer(RendererClassNames.PARAGRAPH_FRAME + " " + ZIndexHelper.getClassName(level, zIndexCssClassType.ParBg));
102901
- DocumentRenderer.updateParagraphFrame(paragraphFrame, element);
102902
- return element;
102903
- }
102904
- static updateParagraphFrame(frame, frameElement) {
102905
- dom.DomUtils.setStyleSizeAndPosition(frameElement.style, frame);
102906
- frameElement.style.background = ColorHelper.getCssStringInternal(frame.paragraphColor);
102907
- }
102908
- static renderTable(tableColumnInfo, level, showTableGridLines) {
102909
- const tblXPos = tableColumnInfo.x;
102910
- const tblYPos = tableColumnInfo.y;
102911
- const tblBgColor = tableColumnInfo.logicInfo.backgroundColor;
102912
- const tableElement = DocumentRenderer.renderContainer(RendererClassNames.TABLE_ELEMENTS_CONTAINER);
102913
- dom.DomUtils.setStylePosition(tableElement.style, tableColumnInfo);
102914
- const tblBordersContainer = tableElement.appendChild(DocumentRenderer.renderContainer(RendererClassNames.TABLE_BORDERS_CONTAINER));
102915
- const tblRowsBgContainer = tableElement.appendChild(DocumentRenderer.renderContainer(RendererClassNames.TABLE_ROW_BACKGROUND_CONTAINER));
102916
- const tblCellsBgContainer = tableElement.appendChild(DocumentRenderer.renderContainer(RendererClassNames.TABLE_CELL_BACKGROUND_CONTAINER));
102917
- const tblCursorsContainer = DocumentRenderer.renderContainer(RendererClassNames.TABLE_CURSORS_CONTAINER);
102918
- tblCursorsContainer.style.width = tableColumnInfo.width + "px";
102919
- tblCursorsContainer.style.height = tableColumnInfo.height + "px";
102920
- tableElement.appendChild(tblCursorsContainer);
102921
- tblCursorsContainer["dxTableIndex"] = tableColumnInfo.logicInfo.grid.table.index;
102922
- for (let i = 0, border; border = tableColumnInfo.horizontalBorders[i]; i++)
102923
- DocumentRenderer.renderHorizontalBorder(tblBordersContainer, border, level, showTableGridLines);
102924
- for (let i = 0, border; border = tableColumnInfo.verticalBorders[i]; i++)
102925
- DocumentRenderer.renderVerticalBorder(tblBordersContainer, border, level, showTableGridLines);
102926
- if (tableColumnInfo.logicInfo.isEditable) {
102927
- for (let border of tableColumnInfo.verticalCursorBorders) {
102928
- let element = DocumentRenderer.renderContainer(RendererClassNames.TABLE_COLUMN_CURSOR + " " +
102929
- ZIndexHelper.getClassName(level, zIndexCssClassType.TblCursor));
102930
- dom.DomUtils.setStylePosition(element.style, new geometry_point.Point(border.xPos, border.yPos));
102931
- element.style.height = border.length + "px";
102932
- tblCursorsContainer.appendChild(element);
102933
- }
102934
- for (let border of tableColumnInfo.horizontalCursorBorders) {
102935
- let element = DocumentRenderer.renderContainer(RendererClassNames.TABLE_ROW_CURSOR + " " +
102936
- ZIndexHelper.getClassName(level, zIndexCssClassType.TblCursor));
102937
- dom.DomUtils.setStylePosition(element.style, new geometry_point.Point(border.xPos, border.yPos));
102938
- element.style.width = border.length + "px";
102939
- element["dxLayoutRowIndex"] = border.layoutRowIndex;
102940
- tblCursorsContainer.appendChild(element);
102941
- }
102942
- }
102943
- for (let tblRow of tableColumnInfo.tableRows) {
102944
- DocumentRenderer.renderTableBackgroundElement(RendererClassNames.TABLE_ROW_BG + " " + ZIndexHelper.getClassName(level, zIndexCssClassType.TblRowBg), tblRowsBgContainer, tblRow, tblXPos, tblYPos, tblBgColor);
102945
- for (let cellBgInfo of tblRow.backgroundInfos)
102946
- DocumentRenderer.renderTableBackgroundElement(RendererClassNames.TABLE_CELL_BG + " " + ZIndexHelper.getClassName(level, zIndexCssClassType.TblCellBg), tblCellsBgContainer, cellBgInfo, 0, 0, cellBgInfo.color);
102947
- }
102948
- return tableElement;
102949
- }
102950
- static renderTableBackgroundElement(className, container, bound, tblXPos, tblYPos, color) {
102951
- if (ColorHelper.isEmptyBgColor(color))
102952
- return;
102953
- const elem = DocumentRenderer.renderContainer(className);
102954
- dom.DomUtils.setStylePosition(elem.style, new geometry_point.Point(bound.x - tblXPos, bound.y - tblYPos));
102955
- dom.DomUtils.setStyleSize(elem.style, bound);
102956
- elem.style.backgroundColor = utils_color/* ColorUtils */.i.colorToHash(color);
102957
- container.appendChild(elem);
102958
- }
102959
- static renderVerticalBorder(tableBordersContainer, border, level, showTableGridLines) {
102960
- const borderInfo = border.borderInfo;
102961
- if (DocumentRenderer.isNotRenderTableBorder(borderInfo)) {
102962
- if (showTableGridLines) {
102963
- const element = DocumentRenderer.createBorderElement(utils_color/* ColorUtils */.i.LIGHT_COLOR, level);
102964
- dom.DomUtils.setStyleSizeAndPosition(element.style, new rectangle.Rectangle(border.xPos, border.yPos, 0, border.length));
102965
- element.style.borderStyle = "None";
102966
- element.style.borderRightWidth = DocumentRenderer.getTableGridLineBorderWidth();
102967
- element.style.borderRightStyle = "dashed";
102968
- tableBordersContainer.appendChild(element);
102969
- }
102970
- }
102971
- else {
102972
- const element = DocumentRenderer.createBorderElement(borderInfo.color, level);
102973
- dom.DomUtils.setStyleSizeAndPosition(element.style, new rectangle.Rectangle(border.xPos, border.yPos, 0, border.length));
102974
- element.style.backgroundColor = "";
102975
- element.style.borderStyle = "None";
102976
- element.style.borderRightColor = utils_color/* ColorUtils */.i.colorToHash(borderInfo.color);
102977
- element.style.borderRightWidth = DocumentRenderer.getBorderTypeWidth(borderInfo);
102978
- element.style.borderRightStyle = DocumentRenderer.borderTypeToString(borderInfo.style);
102979
- tableBordersContainer.appendChild(element);
102980
- }
102981
- }
102982
- static getTableGridLineBorderWidth() {
102983
- const devicePixelRatio = window.devicePixelRatio;
102984
- if (browser.Browser.Chrome && devicePixelRatio > 1 && devicePixelRatio < 1.5)
102985
- return "1.5px";
102986
- return "1px";
102987
- }
102988
- static renderHorizontalBorder(tableBordersContainer, border, level, showTableGridLines) {
102989
- const borderInfo = border.borderInfo;
102990
- if (DocumentRenderer.isNotRenderTableBorder(borderInfo)) {
102991
- if (!showTableGridLines)
102992
- return;
102993
- const element = DocumentRenderer.createBorderElement(utils_color/* ColorUtils */.i.LIGHT_COLOR, level);
102994
- dom.DomUtils.setStyleSizeAndPosition(element.style, new rectangle.Rectangle(border.xPos, border.yPos, border.length, 0));
102995
- element.style.borderStyle = "None";
102996
- element.style.borderBottomWidth = DocumentRenderer.getTableGridLineBorderWidth();
102997
- element.style.borderBottomStyle = "dashed";
102998
- tableBordersContainer.appendChild(element);
102999
- }
103000
- else {
103001
- const element = DocumentRenderer.createBorderElement(borderInfo.color, level);
103002
- dom.DomUtils.setStyleSizeAndPosition(element.style, new rectangle.Rectangle(border.xPos, border.yPos, border.length, 0));
103003
- element.style.backgroundColor = "";
103004
- element.style.borderStyle = "None";
103005
- element.style.borderBottomColor = utils_color/* ColorUtils */.i.colorToHash(borderInfo.color);
103006
- element.style.borderBottomWidth = DocumentRenderer.getBorderTypeWidth(borderInfo);
103007
- element.style.borderBottomStyle = DocumentRenderer.borderTypeToString(borderInfo.style);
103008
- tableBordersContainer.appendChild(element);
103009
- }
103010
- }
103011
- static createBorderElement(color, level) {
103012
- const element = DocumentRenderer.renderContainer(RendererClassNames.TABLE_BORDER + " " + ZIndexHelper.getClassName(level, zIndexCssClassType.TableBorder));
103013
- element.style.backgroundColor = utils_color/* ColorUtils */.i.colorToHash(color);
103014
- return element;
103015
- }
103016
- static isNotRenderTableBorder(borderInfo) {
103017
- return !borderInfo || borderInfo.style == BorderLineStyle.None || borderInfo.style == BorderLineStyle.Nil;
103018
- }
103019
- static borderTypeToString(style) {
103020
- const str = DocumentRenderer.mapBorderTypeToString[style];
103021
- return str ? str : "solid";
103022
- }
103023
- static getBorderTypeWidth(borderInfo) {
103024
- const mimWidth = this.getBorderTypeMinWidth(borderInfo.style);
103025
- return Math.max(mimWidth, borderInfo.width) + "px";
103026
- }
103027
- static getBorderTypeMinWidth(style) {
103028
- if (style == BorderLineStyle.Double)
103029
- return 3;
103030
- return 1;
103031
- }
103032
- static getServiceContainerCore(pageElement) {
103033
- return pageElement.firstChild;
103034
- }
103035
- static getSelectionContainerCore(pageElement) {
103036
- return pageElement.childNodes[1];
103037
- }
103038
- static getSearchSelectionContainerCore(pageElement) {
103039
- return pageElement.childNodes[2];
103040
- }
103041
- static getMisspelledSelectionContainerCore(pageElement) {
103042
- return pageElement.childNodes[3];
103043
- }
103044
- static getRangePermissionsContainerCore(pageElement) {
103045
- return pageElement.childNodes[4];
103046
- }
103047
- static isPageElementConsiderAllContainers(pageElement) {
103048
- return pageElement.childNodes.length > 1;
103049
- }
103050
- static getMainPageAreaContainerCore(pageElement) {
103051
- return pageElement.childNodes[5];
103052
- }
103053
- static getOtherPageAreaContainerCore(pageElement) {
103054
- return pageElement.childNodes[6];
103055
- }
103056
- static getAnchoredObjectsContainer(pageElement) {
103057
- return pageElement.childNodes[7];
103058
- }
103059
- static getTextBoxBackgroundContainer(pageElement) {
103060
- return pageElement.childNodes[8];
103061
- }
103062
- static getRowsContainerCore(columnElement) {
103063
- return columnElement.firstChild;
103064
- }
103065
- static getParagraphFramesContainerCore(columnElement) {
103066
- return browser.Browser.Chrome ? columnElement.firstChild.nextSibling : columnElement.childNodes[1];
103067
- }
103068
- static getTablesContainerCore(columnElement) {
103069
- return columnElement.lastChild;
103070
- }
103071
- static getColumnsContainerCore(pageAreaElement) {
103072
- return pageAreaElement;
103073
- }
103074
- static renderContainer(className) {
103075
- const element = document.createElement("DIV");
103076
- element.className = className;
103077
- return element;
103078
- }
103079
- static removeFromContainerByIndex(node, index, getContainer) {
103080
- const container = getContainer(node);
103081
- const child = container.childNodes[index];
103082
- if (child)
103083
- container.removeChild(child);
103084
- }
103085
- static replaceInContainer(node, index, newRenderedElement, getContainer) {
103086
- const container = getContainer(node);
103087
- container.replaceChild(newRenderedElement, container.childNodes[index]);
103088
- }
103089
- static insertInContainer(node, index, newRenderedElement, getContainer) {
103090
- const container = getContainer(node);
103091
- if (index < container.childNodes.length)
103092
- container.insertBefore(newRenderedElement, container.childNodes[index]);
103093
- else
103094
- container.appendChild(newRenderedElement);
103095
- }
103096
- static removeFromContainerByObject(id, container, cache) {
103097
- const obj = cache[id];
103098
- if (obj) {
103099
- container.removeChild(obj);
103100
- delete cache[id];
103101
- }
103102
- }
103103
- static replaceFromContainerByObject(id, container, cache, newNode) {
103104
- container.replaceChild(newNode, cache[id]);
103105
- cache[id] = newNode;
103106
- }
103107
- static insertToContainerByObject(id, container, cache, newNode) {
103108
- cache[id] = newNode;
103109
- container.appendChild(newNode);
103110
- }
103111
- static isPageElementEmpty(pageElement) {
103112
- return pageElement.childNodes.length == 0;
103113
- }
103114
- renderPictureBoxContent(size, cacheInfo, tip, altText) {
103115
- const tooltip = tip ? CanvasUtils.buildHyperlinkTipString(tip, this.viewManager.stringResources.commonLabels.clickToFollowHyperlink, this.viewManager.fieldOptions) : "";
103116
- const img = document.createElement('img');
103117
- img.setAttribute('src', cacheInfo.base64);
103118
- if (tooltip) {
103119
- img.setAttribute('title', tooltip);
103120
- }
103121
- if ((0,common.isDefined)(altText) && !utils_string.StringUtils.isNullOrEmpty(altText))
103122
- img.alt = altText;
103123
- img.style.cssText = `height: ${math.MathUtils.round(size.height, 3)}px; width: ${math.MathUtils.round(size.width, 3)}px; vertical-align: baseline`;
103124
- img.setAttribute('class', RendererClassNames.PICTURE);
103125
- return img;
103126
- }
103127
- }
103128
- DocumentRenderer.mapBorderTypeToString = new MapCreator()
103129
- .add(BorderLineStyle.Single, "solid")
103130
- .add(BorderLineStyle.Dotted, "dotted")
103131
- .add(BorderLineStyle.Dashed, "dashed")
103132
- .add(BorderLineStyle.Double, "double")
103133
- .add(BorderLineStyle.DashSmallGap, "dashed")
103134
- .add(BorderLineStyle.DotDash, "dashed")
103135
- .add(BorderLineStyle.DotDotDash, "dashed")
103136
- .get();
103137
- class DocumentRendererPageCache {
103138
- constructor(page) {
103139
- this.page = page;
103140
- this.init();
103141
- }
103142
- removeContent() {
103143
- const serviceContainer = DocumentRenderer.getServiceContainerCore(this.page);
103144
- dom.DomUtils.clearInnerHtml(this.page);
103145
- this.page.appendChild(serviceContainer);
103146
- this.init();
103147
- }
103148
- init() {
103149
- this.otherAreas = {};
103150
- this.anchoredPicture = {};
103151
- this.textBoxBgElements = {};
103152
- }
103153
- }
103154
- class BoxRenderResult {
103155
- constructor(html, increaseRowHeight) {
103156
- this.html = html;
103157
- this.increaseRowHeight = increaseRowHeight;
103158
- }
103159
- toString() {
103160
- if (typeof this.html === 'string')
103161
- return this.html;
103162
- else {
103163
- const result = [];
103164
- if (this.html) {
103165
- const length = this.html.children.length;
103166
- for (let i = 0; i < length; i++) {
103167
- result.push(this.html.children.item(i).outerHTML);
103168
- }
103169
- }
103170
- return result.join('');
103171
- }
103172
- }
103173
- }
103174
-
103175
102252
  // EXTERNAL MODULE: ./node_modules/@devexpress/utils/lib/utils/evt.js
103176
102253
  var utils_evt = __webpack_require__(3714);
103177
102254
  // EXTERNAL MODULE: ./node_modules/@devexpress/utils/lib/class/event-handlers-holder.js
@@ -104327,6 +103404,953 @@ class LayoutAnchorObjectFinder {
104327
103404
  }
104328
103405
  }
104329
103406
 
103407
+ ;// CONCATENATED MODULE: ./src/common/canvas/renderes/z-index-helper.ts
103408
+ var zIndexCssClassType;
103409
+ (function (zIndexCssClassType) {
103410
+ zIndexCssClassType[zIndexCssClassType["TextBoxBg"] = 0] = "TextBoxBg";
103411
+ zIndexCssClassType[zIndexCssClassType["TblRowBg"] = 1] = "TblRowBg";
103412
+ zIndexCssClassType[zIndexCssClassType["TblCellBg"] = 2] = "TblCellBg";
103413
+ zIndexCssClassType[zIndexCssClassType["ParBg"] = 3] = "ParBg";
103414
+ zIndexCssClassType[zIndexCssClassType["BoxBg"] = 4] = "BoxBg";
103415
+ zIndexCssClassType[zIndexCssClassType["FieldBg"] = 5] = "FieldBg";
103416
+ zIndexCssClassType[zIndexCssClassType["SelRange"] = 6] = "SelRange";
103417
+ zIndexCssClassType[zIndexCssClassType["BoxSpace"] = 7] = "BoxSpace";
103418
+ zIndexCssClassType[zIndexCssClassType["SelSearch"] = 8] = "SelSearch";
103419
+ zIndexCssClassType[zIndexCssClassType["SelRow"] = 9] = "SelRow";
103420
+ zIndexCssClassType[zIndexCssClassType["Box"] = 10] = "Box";
103421
+ zIndexCssClassType[zIndexCssClassType["Bookmark"] = 11] = "Bookmark";
103422
+ zIndexCssClassType[zIndexCssClassType["TableBorder"] = 12] = "TableBorder";
103423
+ zIndexCssClassType[zIndexCssClassType["SelMissp"] = 13] = "SelMissp";
103424
+ zIndexCssClassType[zIndexCssClassType["SelCursor"] = 14] = "SelCursor";
103425
+ zIndexCssClassType[zIndexCssClassType["SelTouchBar"] = 15] = "SelTouchBar";
103426
+ zIndexCssClassType[zIndexCssClassType["TblCursor"] = 16] = "TblCursor";
103427
+ zIndexCssClassType[zIndexCssClassType["AnchoredPicture"] = 17] = "AnchoredPicture";
103428
+ zIndexCssClassType[zIndexCssClassType["TextBox"] = 18] = "TextBox";
103429
+ })(zIndexCssClassType || (zIndexCssClassType = {}));
103430
+ class ZIndexHelper {
103431
+ static getClassName(level, zIndexCssNames) {
103432
+ return `dxre${ZIndexHelper.names[zIndexCssNames]}ZL${level}`;
103433
+ }
103434
+ }
103435
+ ZIndexHelper.names = {
103436
+ [zIndexCssClassType.TextBoxBg]: "TextBoxBg",
103437
+ [zIndexCssClassType.TblRowBg]: "TblRowBg",
103438
+ [zIndexCssClassType.TblCellBg]: "TblCellBg",
103439
+ [zIndexCssClassType.ParBg]: "ParBg",
103440
+ [zIndexCssClassType.BoxBg]: "BoxBg",
103441
+ [zIndexCssClassType.FieldBg]: "FieldBg",
103442
+ [zIndexCssClassType.SelRange]: "SelRange",
103443
+ [zIndexCssClassType.BoxSpace]: "BoxSpace",
103444
+ [zIndexCssClassType.SelSearch]: "SelSearch",
103445
+ [zIndexCssClassType.SelRow]: "SelRow",
103446
+ [zIndexCssClassType.Box]: "Box",
103447
+ [zIndexCssClassType.Bookmark]: "Bookmark",
103448
+ [zIndexCssClassType.TableBorder]: "TableBorder",
103449
+ [zIndexCssClassType.SelMissp]: "SelMissp",
103450
+ [zIndexCssClassType.SelCursor]: "SelCursor",
103451
+ [zIndexCssClassType.SelTouchBar]: "SelTouchBar",
103452
+ [zIndexCssClassType.TblCursor]: "TblCursor",
103453
+ [zIndexCssClassType.AnchoredPicture]: "AnchoredPicture",
103454
+ [zIndexCssClassType.TextBox]: "TextBox",
103455
+ };
103456
+
103457
+ ;// CONCATENATED MODULE: ./src/common/canvas/utils.ts
103458
+ class CanvasUtils {
103459
+ static buildHyperlinkTipString(hyperlinkTip, clickText, settings) {
103460
+ if (!hyperlinkTip)
103461
+ hyperlinkTip = "";
103462
+ return settings.createHyperlinkTooltip(hyperlinkTip, `\nCtrl + ${clickText}`).replace(/['|"]/g, "&quot;");
103463
+ }
103464
+ }
103465
+
103466
+ ;// CONCATENATED MODULE: ./src/common/canvas/renderes/common/document-renderer.ts
103467
+
103468
+
103469
+
103470
+
103471
+
103472
+
103473
+
103474
+
103475
+
103476
+
103477
+
103478
+
103479
+
103480
+
103481
+
103482
+
103483
+
103484
+
103485
+
103486
+
103487
+
103488
+
103489
+
103490
+
103491
+
103492
+
103493
+
103494
+
103495
+
103496
+
103497
+ class SimpleViewCanvasSizeManager {
103498
+ constructor(canvasManager, control) {
103499
+ this.size = new geometry_size.Size(0, 0);
103500
+ this.isSizeObserving = false;
103501
+ this.sizeUpdated = false;
103502
+ this.resizeFrameId = null;
103503
+ this.canvasManager = canvasManager;
103504
+ this.control = control;
103505
+ this.resizeObserver = new ResizeObserver(() => {
103506
+ this.sizeUpdated = false;
103507
+ this.resizeFrameId = requestAnimationFrame(() => {
103508
+ if (!this.sizeUpdated)
103509
+ this.changeSize(false);
103510
+ this.sizeUpdated = true;
103511
+ this.resizeFrameId = null;
103512
+ });
103513
+ });
103514
+ }
103515
+ dispose() {
103516
+ if (this.resizeFrameId)
103517
+ cancelAnimationFrame(this.resizeFrameId);
103518
+ this.resizeFrameId = null;
103519
+ this.resizeObserver.disconnect();
103520
+ }
103521
+ changeSize(force) {
103522
+ const curr = new geometry_size.Size(this.canvasManager.getCanvasWidth(), this.canvasManager.controlHeightProvider.getVisibleAreaHeight(false));
103523
+ if (force || !curr.equals(this.size)) {
103524
+ this.size = curr;
103525
+ this.changeSizeCore();
103526
+ }
103527
+ }
103528
+ setViewMode(val) {
103529
+ if (val) {
103530
+ this.changeSize(true);
103531
+ if (!this.isSizeObserving) {
103532
+ this.resizeObserver.observe(this.canvasManager.canvas);
103533
+ this.isSizeObserving = true;
103534
+ }
103535
+ }
103536
+ else {
103537
+ if (this.isSizeObserving) {
103538
+ this.resizeObserver.unobserve(this.canvasManager.canvas);
103539
+ this.isSizeObserving = false;
103540
+ }
103541
+ this.changeSizeCore();
103542
+ }
103543
+ this.sizeUpdated = true;
103544
+ }
103545
+ changeSizeCore() {
103546
+ {
103547
+ utils_list.ListUtils.forEach(this.control.viewManager.cache, (_val) => this.control.viewManager.renderer.removePage(1), 1);
103548
+ this.control.viewManager.ensureFirstPageIsRendered();
103549
+ this.control.innerClientProperties.viewsSettings.widthOfPage = this.canvasManager.getCanvasWidth();
103550
+ if (this.control.layoutFormatterManager) {
103551
+ this.control.layoutFormatterManager.invalidator.onChangedAllLayout();
103552
+ this.control.selection.scrollManager.setScroll(new ScrollState().byModelPosition(this.control.selection)
103553
+ .setModelPosition(this.control.selection.lastSelectedInterval.start).useStdRelativePosition().useStdOffset());
103554
+ }
103555
+ this.control.owner.adjustControl();
103556
+ this.control.horizontalRulerControl.update();
103557
+ }
103558
+ }
103559
+ }
103560
+ class DocumentRenderer {
103561
+ get cache() { return this.viewManager.cache; }
103562
+ constructor(viewManager) {
103563
+ this.viewManager = viewManager;
103564
+ if (this.viewManager.innerClientProperties.viewsSettings.isSimpleView)
103565
+ dom.DomUtils.addClassName(this.viewManager.canvas, RendererClassNames.SIMPLE_VIEW);
103566
+ }
103567
+ onViewTypeChanged() {
103568
+ switch (this.viewManager.innerClientProperties.viewsSettings.viewType) {
103569
+ case ViewType.Simple:
103570
+ dom.DomUtils.addClassName(this.viewManager.canvas, RendererClassNames.SIMPLE_VIEW);
103571
+ break;
103572
+ case ViewType.PrintLayout:
103573
+ dom.DomUtils.removeClassName(this.viewManager.canvas, RendererClassNames.SIMPLE_VIEW);
103574
+ break;
103575
+ }
103576
+ }
103577
+ applyPageChange(layoutPage, pageChange) {
103578
+ Log.print(LogSource.DocumentRenderer, "applyPageChanges", `pageIndex ${pageChange.index}`);
103579
+ const pageFromCache = this.cache[pageChange.index];
103580
+ for (let pageAreaChange of pageChange.mainPageAreaChanges)
103581
+ this.applyMainPageAreaChange(pageFromCache, layoutPage, pageAreaChange);
103582
+ for (let pageAreaChange of pageChange.otherPageAreaChanges)
103583
+ this.applyOtherPageAreaChange(pageFromCache, layoutPage, pageAreaChange);
103584
+ for (let anchoredPictureChange of pageChange.anchoredPictureChanges)
103585
+ this.applyAnchorPictureChange(pageFromCache, layoutPage, anchoredPictureChange);
103586
+ }
103587
+ applyAnchorPictureChange(cache, layoutPage, ancPicChange) {
103588
+ const objId = ancPicChange.index;
103589
+ switch (ancPicChange.changeType) {
103590
+ case LayoutChangeType.Deleted: {
103591
+ DocumentRenderer.removeFromContainerByObject(objId, DocumentRenderer.getAnchoredObjectsContainer(cache.page), cache.anchoredPicture);
103592
+ break;
103593
+ }
103594
+ case LayoutChangeType.Replaced: {
103595
+ const obj = layoutPage.anchoredObjectHolder.getObjById(objId);
103596
+ DocumentRenderer.replaceFromContainerByObject(objId, DocumentRenderer.getAnchoredObjectsContainer(cache.page), cache.anchoredPicture, this.renderFloatingPicture(obj, layoutPage.renderLevelCalculator));
103597
+ break;
103598
+ }
103599
+ case LayoutChangeType.Updated: {
103600
+ break;
103601
+ }
103602
+ case LayoutChangeType.Inserted: {
103603
+ const obj = layoutPage.anchoredObjectHolder.getObjById(objId);
103604
+ DocumentRenderer.insertToContainerByObject(objId, DocumentRenderer.getAnchoredObjectsContainer(cache.page), cache.anchoredPicture, this.renderFloatingPicture(obj, layoutPage.renderLevelCalculator));
103605
+ break;
103606
+ }
103607
+ default: throw new Error(lib_errors/* Errors */.D.InternalException);
103608
+ }
103609
+ }
103610
+ applyMainPageAreaChange(pageCache, layoutPage, pageAreaChange) {
103611
+ switch (pageAreaChange.changeType) {
103612
+ case LayoutChangeType.Deleted:
103613
+ DocumentRenderer.removeFromContainerByIndex(pageCache.page, pageAreaChange.canvasIndex, DocumentRenderer.getMainPageAreaContainerCore);
103614
+ break;
103615
+ case LayoutChangeType.Replaced:
103616
+ DocumentRenderer.replaceInContainer(pageCache.page, pageAreaChange.canvasIndex, this.renderPageArea(layoutPage.renderLevelCalculator, pageCache, layoutPage.mainSubDocumentPageAreas[pageAreaChange.layoutIndex], null), DocumentRenderer.getMainPageAreaContainerCore);
103617
+ break;
103618
+ case LayoutChangeType.Updated: {
103619
+ const layoutPageArea = layoutPage.mainSubDocumentPageAreas[pageAreaChange.layoutIndex];
103620
+ const pageAreaElement = DocumentRenderer.getMainPageAreaContainerCore(pageCache.page).childNodes[pageAreaChange.canvasIndex];
103621
+ for (let columnChange of pageAreaChange.columnChanges)
103622
+ this.applyColumnChange(pageAreaElement, layoutPageArea, columnChange, layoutPage.renderLevelCalculator.renderMainPageAreaLevel);
103623
+ break;
103624
+ }
103625
+ default: throw new Error(lib_errors/* Errors */.D.InternalException);
103626
+ }
103627
+ }
103628
+ applyOtherPageAreaChange(cache, layoutPage, pageAreaChange) {
103629
+ const subDocId = pageAreaChange.index;
103630
+ const pageArea = layoutPage.otherPageAreas[subDocId];
103631
+ switch (pageAreaChange.changeType) {
103632
+ case LayoutChangeType.Deleted: {
103633
+ DocumentRenderer.removeFromContainerByObject(subDocId, DocumentRenderer.getOtherPageAreaContainerCore(cache.page), cache.otherAreas);
103634
+ DocumentRenderer.removeFromContainerByObject(subDocId, DocumentRenderer.getTextBoxBackgroundContainer(cache.page), cache.textBoxBgElements);
103635
+ break;
103636
+ }
103637
+ case LayoutChangeType.Replaced: {
103638
+ DocumentRenderer.replaceFromContainerByObject(subDocId, DocumentRenderer.getOtherPageAreaContainerCore(cache.page), cache.otherAreas, this.renderPageArea(layoutPage.renderLevelCalculator, cache, pageArea, pageArea.subDocument.isTextBox() ? layoutPage.anchoredObjectHolder.getTextBoxByInternalSubDocId(subDocId) : null));
103639
+ break;
103640
+ }
103641
+ case LayoutChangeType.Updated: {
103642
+ const pageAreaElement = cache.otherAreas[subDocId];
103643
+ const level = pageArea.subDocument.isTextBox() ?
103644
+ layoutPage.renderLevelCalculator.getRenderLevel(layoutPage.anchoredObjectHolder.getTextBoxByInternalSubDocId(subDocId).rendererLevel) :
103645
+ layoutPage.renderLevelCalculator.renderHeaderFooterPageAreasLevel;
103646
+ for (let columnChange of pageAreaChange.columnChanges)
103647
+ this.applyColumnChange(pageAreaElement, pageArea, columnChange, level);
103648
+ break;
103649
+ }
103650
+ case LayoutChangeType.Inserted: {
103651
+ DocumentRenderer.insertToContainerByObject(subDocId, DocumentRenderer.getOtherPageAreaContainerCore(cache.page), cache.otherAreas, this.renderPageArea(layoutPage.renderLevelCalculator, cache, pageArea, pageArea.subDocument.isTextBox() ? layoutPage.anchoredObjectHolder.getTextBoxByInternalSubDocId(subDocId) : null));
103652
+ break;
103653
+ }
103654
+ default: throw new Error(lib_errors/* Errors */.D.InternalException);
103655
+ }
103656
+ }
103657
+ applyColumnChange(pageAreaElement, layoutPageArea, columnChange, level) {
103658
+ switch (columnChange.changeType) {
103659
+ case LayoutChangeType.Deleted:
103660
+ DocumentRenderer.removeFromContainerByIndex(pageAreaElement, columnChange.canvasIndex, DocumentRenderer.getColumnsContainerCore);
103661
+ break;
103662
+ case LayoutChangeType.Replaced: {
103663
+ const renderedColumn = this.renderColumn(layoutPageArea.columns[columnChange.layoutIndex], level, layoutPageArea.subDocument.isMain());
103664
+ DocumentRenderer.replaceInContainer(pageAreaElement, columnChange.canvasIndex, renderedColumn, DocumentRenderer.getColumnsContainerCore);
103665
+ break;
103666
+ }
103667
+ case LayoutChangeType.Updated: {
103668
+ const layoutColumn = layoutPageArea.columns[columnChange.layoutIndex];
103669
+ const columnElement = DocumentRenderer.getColumnsContainerCore(pageAreaElement).childNodes[columnChange.canvasIndex];
103670
+ for (var rowChange of columnChange.rowChanges)
103671
+ DocumentRenderer.applyChange(columnElement, rowChange, DocumentRenderer.getRowsContainerCore, () => this.renderRow(layoutColumn.rows[rowChange.layoutIndex], level));
103672
+ for (var tableChange of columnChange.tableChanges)
103673
+ DocumentRenderer.applyChange(columnElement, tableChange, DocumentRenderer.getTablesContainerCore, () => DocumentRenderer.renderTable(layoutColumn.tablesInfo[tableChange.layoutIndex], level, this.viewManager.innerClientProperties.showTableGridLines));
103674
+ for (var paragraphFrameChange of columnChange.paragraphFrameChanges)
103675
+ DocumentRenderer.applyChange(columnElement, paragraphFrameChange, DocumentRenderer.getParagraphFramesContainerCore, () => DocumentRenderer.renderParagraphFrame(layoutColumn.paragraphFrames[paragraphFrameChange.layoutIndex], level));
103676
+ break;
103677
+ }
103678
+ case LayoutChangeType.Inserted: {
103679
+ const renderedColumn = this.renderColumn(layoutPageArea.columns[columnChange.layoutIndex], level, layoutPageArea.subDocument.isMain());
103680
+ DocumentRenderer.insertInContainer(pageAreaElement, columnChange.canvasIndex, renderedColumn, DocumentRenderer.getColumnsContainerCore);
103681
+ break;
103682
+ }
103683
+ default: throw new Error(lib_errors/* Errors */.D.InternalException);
103684
+ }
103685
+ }
103686
+ static applyChange(topLevelNode, change, getContainer, getRenderedElement) {
103687
+ switch (change.changeType) {
103688
+ case LayoutChangeType.Deleted:
103689
+ DocumentRenderer.removeFromContainerByIndex(topLevelNode, change.canvasIndex, getContainer);
103690
+ break;
103691
+ case LayoutChangeType.Replaced:
103692
+ DocumentRenderer.replaceInContainer(topLevelNode, change.canvasIndex, getRenderedElement(), getContainer);
103693
+ break;
103694
+ case LayoutChangeType.Inserted:
103695
+ DocumentRenderer.insertInContainer(topLevelNode, change.canvasIndex, getRenderedElement(), getContainer);
103696
+ break;
103697
+ case LayoutChangeType.Updated:
103698
+ break;
103699
+ default: throw new Error(lib_errors/* Errors */.D.InternalException);
103700
+ }
103701
+ }
103702
+ getPageRender(layoutPageIndex, layoutPage) {
103703
+ const cachedPage = this.cache[layoutPageIndex].page;
103704
+ if (!DocumentRenderer.isPageElementConsiderAllContainers(cachedPage))
103705
+ this.renderPageContent(layoutPage, layoutPageIndex);
103706
+ return this.cache[layoutPageIndex].page;
103707
+ }
103708
+ renderPage(layoutPage, layoutPageIndex, renderInnerContent) {
103709
+ layoutPage.flags.set(LayoutPageFlags.IsSelectionRendered, false);
103710
+ layoutPage.flags.set(LayoutPageFlags.IsMisspelledSelectionRendered, false);
103711
+ layoutPage.flags.set(LayoutPageFlags.IsRangePermissionsRendered, false);
103712
+ let pageCache = this.cache[layoutPageIndex];
103713
+ if (pageCache) {
103714
+ const pageElement = pageCache.page;
103715
+ this.updatePageClasses(pageElement);
103716
+ this.updatePageSize(layoutPage, pageElement);
103717
+ DocumentRenderer.updatePageColor(pageElement, this.viewManager.layout.pageColor);
103718
+ if (!DocumentRenderer.isPageElementEmpty(pageElement))
103719
+ this.removePageContent(layoutPageIndex);
103720
+ }
103721
+ else {
103722
+ const pageElement = DocumentRenderer.renderContainer("");
103723
+ pageElement.appendChild(DocumentRenderer.renderContainer(RendererClassNames.SERVICE_CONTAINER));
103724
+ DocumentRenderer.updatePageColor(pageElement, this.viewManager.layout.pageColor);
103725
+ this.updatePageClasses(pageElement);
103726
+ this.updatePageSize(layoutPage, pageElement);
103727
+ DocumentRenderer.insertInContainer(this.viewManager.pagesContainer, layoutPageIndex, pageElement, (node) => node);
103728
+ this.cache.splice(layoutPageIndex, 0, new DocumentRendererPageCache(pageElement));
103729
+ }
103730
+ if (renderInnerContent)
103731
+ this.renderPageContent(layoutPage, layoutPageIndex);
103732
+ }
103733
+ removePage(pageIndex) {
103734
+ const pageCache = this.cache[pageIndex];
103735
+ if (pageCache) {
103736
+ pageCache.page.parentNode.removeChild(pageCache.page);
103737
+ this.cache.splice(pageIndex, 1);
103738
+ }
103739
+ }
103740
+ updatePageSize(page, pageElement) {
103741
+ if (pageElement.offsetHeight != page.height || pageElement.offsetWidth != page.width)
103742
+ dom.DomUtils.setStyleSize(pageElement.style, page);
103743
+ }
103744
+ updatePageClasses(pageElement) {
103745
+ pageElement.className = RendererClassNames.PAGE;
103746
+ if (this.viewManager.innerClientProperties.viewsSettings.isSimpleView &&
103747
+ !this.viewManager.innerClientProperties.viewsSettings.isFixedWidthMode)
103748
+ dom.DomUtils.addClassName(pageElement, RendererClassNames.SIMPLE_PAGE_FLOW_MODE);
103749
+ }
103750
+ removePageContent(pageIndex) {
103751
+ const pageCache = this.cache[pageIndex];
103752
+ if (pageCache)
103753
+ pageCache.removeContent();
103754
+ }
103755
+ renderPageContainers(pageCache) {
103756
+ pageCache.page.appendChild(DocumentRenderer.renderContainer(RendererClassNames.SELECTION_CONTAINER));
103757
+ pageCache.page.appendChild(DocumentRenderer.renderContainer(RendererClassNames.SEARCH_SELECTION_CONTAINER));
103758
+ pageCache.page.appendChild(DocumentRenderer.renderContainer(RendererClassNames.MISSPELLED_SELECTION_CONTAINER));
103759
+ pageCache.page.appendChild(DocumentRenderer.renderContainer(RendererClassNames.RANGE_PERMISSIONS_CONTAINER));
103760
+ const result = [
103761
+ pageCache.page.appendChild(DocumentRenderer.renderContainer(RendererClassNames.MAIN_PAGE_AREA_CONTAINER)),
103762
+ pageCache.page.appendChild(DocumentRenderer.renderContainer(RendererClassNames.OTHER_PAGE_AREA_CONTAINER)),
103763
+ pageCache.page.appendChild(DocumentRenderer.renderContainer(RendererClassNames.FLOATING_OBJECTS_CONTAINER))
103764
+ ];
103765
+ pageCache.page.appendChild(DocumentRenderer.renderContainer(RendererClassNames.SHAPE_BG_CONTAINER));
103766
+ return result;
103767
+ }
103768
+ renderPageContent(page, pageIndex) {
103769
+ const pageCache = this.cache[pageIndex];
103770
+ const [mainPageAreasContainer, otherPageAreasContainer, floatingObjectsContainer] = this.renderPageContainers(pageCache);
103771
+ utils_list.ListUtils.forEach(page.mainSubDocumentPageAreas, (area) => mainPageAreasContainer.appendChild(this.renderPageArea(page.renderLevelCalculator, pageCache, area, null)));
103772
+ if (!this.viewManager.innerClientProperties.viewsSettings.isSimpleView)
103773
+ number/* NumberMapUtils */.j.forEach(page.otherPageAreas, (pageArea, subDocId) => {
103774
+ if (!pageArea.subDocument.isTextBox())
103775
+ DocumentRenderer.insertToContainerByObject(subDocId, otherPageAreasContainer, pageCache.otherAreas, this.renderPageArea(page.renderLevelCalculator, pageCache, pageArea, null));
103776
+ });
103777
+ for (let ancObjProps of this.renderPageContentGetFloatingObjects(page)) {
103778
+ switch (ancObjProps.getType()) {
103779
+ case LayoutBoxType.AnchorTextBox:
103780
+ const internalSubDocId = ancObjProps.internalSubDocId;
103781
+ DocumentRenderer.insertToContainerByObject(internalSubDocId, otherPageAreasContainer, pageCache.otherAreas, this.renderPageArea(page.renderLevelCalculator, pageCache, page.otherPageAreas[internalSubDocId], ancObjProps));
103782
+ break;
103783
+ case LayoutBoxType.AnchorPicture:
103784
+ DocumentRenderer.insertToContainerByObject(ancObjProps.objectId, floatingObjectsContainer, pageCache.anchoredPicture, this.renderFloatingPicture(ancObjProps, page.renderLevelCalculator));
103785
+ break;
103786
+ }
103787
+ }
103788
+ }
103789
+ static updatePageColor(pageElement, newColor) {
103790
+ const newStringColor = utils_color/* ColorUtils */.i.colorToHash(newColor);
103791
+ if (pageElement.style.backgroundColor != newStringColor)
103792
+ pageElement.style.backgroundColor = ColorHelper.isEmptyBgColor(newColor) ? "" : newStringColor;
103793
+ }
103794
+ static getPageAreaClassname(area) {
103795
+ switch (area.subDocument.info.getType()) {
103796
+ case SubDocumentInfoType.Main:
103797
+ case SubDocumentInfoType.Header:
103798
+ case SubDocumentInfoType.Footer:
103799
+ return RendererClassNames.PAGE_AREA;
103800
+ case SubDocumentInfoType.TextBox:
103801
+ return `${RendererClassNames.PAGE_AREA} ${RendererClassNames.FLOATING_OBJECT_TEXT_BOX_AREA}`;
103802
+ }
103803
+ throw new Error(lib_errors/* Errors */.D.InternalException);
103804
+ }
103805
+ renderPageArea(renderLevelCalculator, pageCache, area, textBox, renderContent = true) {
103806
+ const element = DocumentRenderer.renderContainer(DocumentRenderer.getPageAreaClassname(area));
103807
+ if (area.subDocument.isTextBox())
103808
+ element.style.overflow = "hidden";
103809
+ dom.DomUtils.setStyleSizeAndPosition(element.style, area);
103810
+ let level;
103811
+ switch (area.subDocument.info.getType()) {
103812
+ case SubDocumentInfoType.TextBox:
103813
+ level = renderLevelCalculator.getRenderLevel(textBox.rendererLevel);
103814
+ break;
103815
+ case SubDocumentInfoType.Footer:
103816
+ case SubDocumentInfoType.Header:
103817
+ level = renderLevelCalculator.renderHeaderFooterPageAreasLevel;
103818
+ break;
103819
+ case SubDocumentInfoType.Main:
103820
+ level = renderLevelCalculator.renderMainPageAreaLevel;
103821
+ break;
103822
+ default: throw new Error(lib_errors/* Errors */.D.NotImplemented);
103823
+ }
103824
+ if (area.subDocument.isTextBox()) {
103825
+ const textBoxShapeInfo = DocumentRenderer.renderContainer(RendererClassNames.TEXT_BOX_BG + " " + ZIndexHelper.getClassName(level, zIndexCssClassType.TextBoxBg));
103826
+ const oldBgElem = pageCache.textBoxBgElements[area.subDocument.id];
103827
+ if (oldBgElem)
103828
+ dom.DomUtils.hideNode(oldBgElem);
103829
+ pageCache.textBoxBgElements[area.subDocument.id] = textBoxShapeInfo;
103830
+ DocumentRenderer.setShapePropertiesToElement(textBoxShapeInfo, textBox.shape, true);
103831
+ dom.DomUtils.setStyleSize(textBoxShapeInfo.style, area);
103832
+ dom.DomUtils.setStylePosition(textBoxShapeInfo.style, textBox.getExtendedBounds());
103833
+ DocumentRenderer.setRotationInRadians(textBoxShapeInfo, textBox.rotationInRadians);
103834
+ DocumentRenderer.getTextBoxBackgroundContainer(pageCache.page).appendChild(textBoxShapeInfo);
103835
+ dom.DomUtils.setStylePosition(element.style, area);
103836
+ if (DocumentRenderer.setRotationInRadians(element, textBox.rotationInRadians))
103837
+ dom.DomUtils.addClassName(element, ZIndexHelper.getClassName(level, zIndexCssClassType.TextBox));
103838
+ }
103839
+ else {
103840
+ const color = ColorHelper.isEmptyBgColor(this.viewManager.layout.pageColor) ?
103841
+ utils_color/* ColorUtils */.i.LIGHT_COLOR : this.viewManager.layout.pageColor;
103842
+ DocumentRenderer.updatePageColor(element, color);
103843
+ }
103844
+ if (renderContent)
103845
+ for (let column of area.columns)
103846
+ element.appendChild(this.renderColumn(column, level, area.subDocument.isMain()));
103847
+ return element;
103848
+ }
103849
+ renderColumn(column, level, _isMainPageArea) {
103850
+ const columnElement = DocumentRenderer.renderContainer(RendererClassNames.COLUMN);
103851
+ dom.DomUtils.setStyleSizeAndPosition(columnElement.style, column);
103852
+ const rowsContainer = columnElement.appendChild(DocumentRenderer.renderContainer(RendererClassNames.ROWS_CONTAINER));
103853
+ const paragraphFramesContainer = columnElement.appendChild(DocumentRenderer.renderContainer(RendererClassNames.PARAGRAPHFRAMES_CONTAINER));
103854
+ const tablesContainer = columnElement.appendChild(DocumentRenderer.renderContainer(RendererClassNames.TABLES_CONTAINER));
103855
+ for (let row of column.rows)
103856
+ rowsContainer.appendChild(this.renderRow(row, level));
103857
+ for (let frame of column.paragraphFrames)
103858
+ paragraphFramesContainer.appendChild(DocumentRenderer.renderParagraphFrame(frame, level));
103859
+ for (let tableColumn of column.tablesInfo)
103860
+ tablesContainer.appendChild(DocumentRenderer.renderTable(tableColumn, level, this.viewManager.innerClientProperties.showTableGridLines));
103861
+ return columnElement;
103862
+ }
103863
+ renderRow(row, level) {
103864
+ const lastBoxIndexWhatCanStrikeoutAndUnderline = row.getLastBoxIndexWhatCanStrikeoutAndUnderline();
103865
+ const rowElement = DocumentRenderer.renderContainer(RendererClassNames.ROW);
103866
+ rowElement.innerHTML = "";
103867
+ if (row.numberingListBox) {
103868
+ let box = this.renderBox(row, row.numberingListBox.textBox, 0 > lastBoxIndexWhatCanStrikeoutAndUnderline, level).html;
103869
+ if (typeof box === 'string')
103870
+ rowElement.innerHTML += box;
103871
+ else
103872
+ rowElement.appendChild(box);
103873
+ if (row.numberingListBox.separatorBox) {
103874
+ let box = this.renderBox(row, row.numberingListBox.separatorBox, 0 > lastBoxIndexWhatCanStrikeoutAndUnderline, level).html;
103875
+ if (typeof box === 'string')
103876
+ rowElement.innerHTML += box;
103877
+ else
103878
+ rowElement.appendChild(box);
103879
+ }
103880
+ }
103881
+ let increaseRowHeight = false;
103882
+ for (let boxIndex = 0, box; box = row.boxes[boxIndex]; boxIndex++) {
103883
+ if (box.getType() == LayoutBoxType.AnchorTextBox || box.getType() == LayoutBoxType.AnchorPicture)
103884
+ continue;
103885
+ const boxRenderResult = this.renderBox(row, box, boxIndex > lastBoxIndexWhatCanStrikeoutAndUnderline, level);
103886
+ const boxRenderResultHtml = boxRenderResult.html;
103887
+ if (typeof boxRenderResultHtml === 'string')
103888
+ rowElement.innerHTML += boxRenderResultHtml;
103889
+ else
103890
+ rowElement.appendChild(boxRenderResultHtml);
103891
+ increaseRowHeight = increaseRowHeight || boxRenderResult.increaseRowHeight;
103892
+ }
103893
+ for (let bookmarkBox of row.bookmarkBoxes)
103894
+ rowElement.appendChild(DocumentRenderer.renderBookmark(bookmarkBox, level));
103895
+ dom.DomUtils.setStyleSizeAndPosition(rowElement.style, new rectangle.Rectangle(row.x, row.y + row.getSpacingBefore(), row.width, (row.height - row.getSpacingBefore()) + (increaseRowHeight ? 1 : 0)));
103896
+ return rowElement;
103897
+ }
103898
+ renderBox(row, box, noNeedUnderlineAndStrikeout, level) {
103899
+ let content = box.renderGetContent(this);
103900
+ let top = box.getTop(row);
103901
+ const left = box.x;
103902
+ if (box.characterProperties.script === CharacterFormattingScript.Subscript) {
103903
+ const multiplier = box.characterProperties.fontInfo.scriptMultiplier;
103904
+ top += unit_converter/* UnitConverter */.u.pointsToPixelsF(box.characterProperties.fontSize) * (box.characterProperties.fontInfo.subScriptOffset * multiplier - multiplier + 1);
103905
+ }
103906
+ const delta = box.height > row.height && top >= 0 ? math.MathUtils.round(box.height - row.height) * 3 / 4 : 0;
103907
+ let boxStyles = [];
103908
+ boxStyles.push("left: " + math.MathUtils.round(left, 3) + "px");
103909
+ boxStyles.push("top: " + math.MathUtils.round(top - delta, 3) + "px");
103910
+ const height = math.MathUtils.round(box.height, 3);
103911
+ boxStyles.push("height: " + height + "px");
103912
+ if (browser.Browser.MacOSPlatform || browser.Browser.MacOSMobilePlatform)
103913
+ boxStyles.push("line-height: " + height + "px");
103914
+ if (box.characterProperties.smallCaps)
103915
+ boxStyles.push("font-variant: small-caps");
103916
+ const props = box.renderGetCharacterProperties();
103917
+ const charProps = props.initProps;
103918
+ const colorProps = props.colorInfo;
103919
+ const underlineColor = colorProps.underlineColor;
103920
+ const strikeoutColor = colorProps.strikeoutColor;
103921
+ const textColor = colorProps.textColor;
103922
+ const needUnderline = !noNeedUnderlineAndStrikeout && (charProps.fontUnderlineType != UnderlineType.None) && (box.getType() != LayoutBoxType.Space || !charProps.underlineWordsOnly);
103923
+ const needStrikeout = !noNeedUnderlineAndStrikeout && (charProps.fontStrikeoutType != StrikeoutType.None) && (box.getType() != LayoutBoxType.Space || !charProps.strikeoutWordsOnly);
103924
+ const noStrikeoutAndUnderline = (needStrikeout && needUnderline) || (needStrikeout && strikeoutColor != ColorHelper.AUTOMATIC_COLOR) || (needUnderline && underlineColor != ColorHelper.AUTOMATIC_COLOR);
103925
+ let commonStyles;
103926
+ if (noStrikeoutAndUnderline) {
103927
+ commonStyles = HtmlConverter.getCssRules(charProps, textColor, box.renderIsWordBox(), noStrikeoutAndUnderline, true);
103928
+ boxStyles = boxStyles.concat(HtmlConverter.getSizeSignificantRules(charProps));
103929
+ boxStyles.push(HtmlConverter.getForeColorRule(textColor));
103930
+ const needColor = strikeoutColor != ColorHelper.AUTOMATIC_COLOR ||
103931
+ underlineColor != ColorHelper.AUTOMATIC_COLOR;
103932
+ if (needColor && (!needStrikeout || strikeoutColor != ColorHelper.AUTOMATIC_COLOR)) {
103933
+ const span = document.createElement('span');
103934
+ span.style.cssText = commonStyles.join(";") + ';color: ' + ColorHelper.getCssString(textColor, true);
103935
+ if (typeof content === 'string') {
103936
+ span.innerHTML = content;
103937
+ }
103938
+ else {
103939
+ span.appendChild(content);
103940
+ }
103941
+ content = span;
103942
+ }
103943
+ if (needStrikeout) {
103944
+ const strikeoutColorStyle = needColor ? ("color: " + ColorHelper.getCssString(strikeoutColor == ColorHelper.AUTOMATIC_COLOR ? textColor : strikeoutColor, true)) : "";
103945
+ const span = document.createElement('span');
103946
+ span.style.cssText = commonStyles.join(";") + ';text-decoration: line-through;' + strikeoutColorStyle;
103947
+ if (typeof content === 'string') {
103948
+ span.innerHTML = content;
103949
+ }
103950
+ else {
103951
+ span.appendChild(content);
103952
+ }
103953
+ content = span;
103954
+ }
103955
+ if (needUnderline) {
103956
+ const underlineColorStyle = needColor ? ("color: " + ColorHelper.getCssString(underlineColor == ColorHelper.AUTOMATIC_COLOR ? textColor : underlineColor, true)) : "";
103957
+ const span = document.createElement('span');
103958
+ span.style.cssText = commonStyles.join(";") + ';text-decoration: underline;' + underlineColorStyle;
103959
+ if (typeof content === 'string') {
103960
+ span.innerHTML = content;
103961
+ }
103962
+ else {
103963
+ span.appendChild(content);
103964
+ }
103965
+ content = span;
103966
+ }
103967
+ }
103968
+ else
103969
+ boxStyles = boxStyles.concat(HtmlConverter.getCssRules(charProps, textColor, box.renderIsWordBox(), noNeedUnderlineAndStrikeout, true));
103970
+ let boxClass = "";
103971
+ switch (box.getType()) {
103972
+ case LayoutBoxType.Text:
103973
+ case LayoutBoxType.LayoutDependent:
103974
+ case LayoutBoxType.FieldCodeEnd:
103975
+ case LayoutBoxType.FieldCodeStart:
103976
+ case LayoutBoxType.ColumnBreak:
103977
+ case LayoutBoxType.LineBreak:
103978
+ case LayoutBoxType.PageBreak:
103979
+ case LayoutBoxType.ParagraphMark:
103980
+ case LayoutBoxType.SectionMark:
103981
+ boxClass = RendererClassNames.BOX + " " + ZIndexHelper.getClassName(level, zIndexCssClassType.Box);
103982
+ break;
103983
+ default:
103984
+ boxClass = RendererClassNames.BOX_SPACE + " " + ZIndexHelper.getClassName(level, zIndexCssClassType.BoxSpace);
103985
+ }
103986
+ if (charProps.hidden && this.viewManager.innerClientProperties.showHiddenSymbols)
103987
+ boxClass += ' ' + RendererClassNames.HIDDEN_BOX;
103988
+ const result = new DocumentFragment();
103989
+ const contentSpan = document.createElement('span');
103990
+ contentSpan.style.cssText = boxStyles.join(";");
103991
+ contentSpan.setAttribute('class', boxClass);
103992
+ if (typeof content === 'string') {
103993
+ contentSpan.innerHTML = content;
103994
+ }
103995
+ else if (!!content) {
103996
+ contentSpan.appendChild(content);
103997
+ }
103998
+ result.appendChild(contentSpan);
103999
+ const backColor = colorProps.foregroundColor;
104000
+ if (box.fieldLevel && (backColor == ColorHelper.AUTOMATIC_COLOR || backColor == ColorHelper.NO_COLOR)) {
104001
+ let fieldBgClass = RendererClassNames.FIELD_BG + " " + ZIndexHelper.getClassName(level, zIndexCssClassType.FieldBg);
104002
+ switch (box.fieldLevel) {
104003
+ case 1:
104004
+ fieldBgClass += ' ' + RendererClassNames.FIELD_BOX_LEVEL1;
104005
+ break;
104006
+ case 2:
104007
+ fieldBgClass += ' ' + RendererClassNames.FIELD_BOX_LEVEL2;
104008
+ break;
104009
+ default: fieldBgClass += ' ' + RendererClassNames.FIELD_BOX_LEVEL3;
104010
+ }
104011
+ const span = document.createElement('span');
104012
+ span.setAttribute('class', fieldBgClass);
104013
+ span.style.cssText = 'top: ' + math.MathUtils.round(top, 3) + 'px; left: ' + math.MathUtils.round(left, 3) + 'px; width: ' +
104014
+ math.MathUtils.round(box.width, 3) + 'px; height: ' + math.MathUtils.round(box.height, 3) + 'px';
104015
+ result.appendChild(span);
104016
+ }
104017
+ if (utils_color/* ColorUtils */.i.getAlpha(backColor) > 0 && !noNeedUnderlineAndStrikeout) {
104018
+ const height = row.height - row.getSpacingAfter();
104019
+ const bgBoxStyle = "top: 0px; left: " + Math.floor(box.x) + "px; width: " + Math.ceil(box.width) + "px; height: " + math.MathUtils.round(height, 3) +
104020
+ "px; background: " + ColorHelper.getCssStringInternal(backColor) + ";";
104021
+ const span = document.createElement('span');
104022
+ span.setAttribute('class', RendererClassNames.BOX_BG + " " + ZIndexHelper.getClassName(level, zIndexCssClassType.BoxBg));
104023
+ span.style.cssText = bgBoxStyle;
104024
+ result.appendChild(span);
104025
+ }
104026
+ if (box.hyperlinkTip) {
104027
+ const tip = CanvasUtils.buildHyperlinkTipString(box.hyperlinkTip, this.viewManager.stringResources.commonLabels.clickToFollowHyperlink, this.viewManager.fieldOptions);
104028
+ if (tip) {
104029
+ const span = document.createElement('span');
104030
+ span.setAttribute('title', tip);
104031
+ result.replaceChild(span, contentSpan);
104032
+ span.appendChild(contentSpan);
104033
+ }
104034
+ }
104035
+ return new BoxRenderResult(result, charProps.hidden);
104036
+ }
104037
+ static renderBookmark(box, level) {
104038
+ const className = (box.boxType == LayoutBookmarkBoxType.StartBox ?
104039
+ RendererClassNames.START_BOOKMARK :
104040
+ RendererClassNames.END_BOOKMARK) + " " + ZIndexHelper.getClassName(level, zIndexCssClassType.Bookmark);
104041
+ const div = document.createElement('div');
104042
+ div.setAttribute('class', className);
104043
+ div.style.cssText = `width: ${math.MathUtils.round(box.width, 3)}px; height: ${math.MathUtils.round(box.height, 3)}px; ` +
104044
+ `left: ${math.MathUtils.round(box.x, 3)}px; top: ${math.MathUtils.round(box.y, 3)}px; border-color: ${box.color}`;
104045
+ return div;
104046
+ }
104047
+ renderPicture(box) {
104048
+ return this.renderPictureBoxContent(box.createSize(), box.cacheInfo, box.hyperlinkTip, box.description);
104049
+ }
104050
+ renderFloatingPicture(box, renderLevelCalculator) {
104051
+ const element = DocumentRenderer.renderContainer(RendererClassNames.ANCHORED_PICTURE + " " + ZIndexHelper.getClassName(renderLevelCalculator.getRenderLevel(box.rendererLevel), zIndexCssClassType.AnchoredPicture));
104052
+ dom.DomUtils.setStyleSize(element.style, box);
104053
+ dom.DomUtils.setStylePosition(element.style, new geometry_point.Point(box.x - box.shape.outlineWidth, box.y - box.shape.outlineWidth));
104054
+ DocumentRenderer.setShapePropertiesToElement(element, box.shape, false);
104055
+ DocumentRenderer.setRotationInRadians(element, box.rotationInRadians);
104056
+ const content = box.renderGetContent(this);
104057
+ element.innerHTML = '';
104058
+ if (typeof content === 'string') {
104059
+ element.innerHTML = content;
104060
+ }
104061
+ else {
104062
+ element.appendChild(content);
104063
+ }
104064
+ return element;
104065
+ }
104066
+ static setShapePropertiesToElement(element, shape, isTextBox) {
104067
+ element.style.backgroundColor = ColorHelper.getCssStringInternal(shape.fillColor);
104068
+ element.style.borderStyle = DocumentRenderer.borderTypeToString(BorderLineStyle.Single);
104069
+ element.style.borderColor = ColorHelper.getCssString(shape.outlineColor, false);
104070
+ element.style.borderWidth = Math.max(isTextBox ? 1 : 0, shape.outlineWidth).toString() + "px";
104071
+ element.style.boxSizing = "content-box";
104072
+ }
104073
+ static setRotationInRadians(element, rotation) {
104074
+ const isSetRotation = rotation != 0;
104075
+ element.style.transform = isSetRotation ? "rotate(" + rotation + "rad)" : "none";
104076
+ return isSetRotation;
104077
+ }
104078
+ static renderParagraphFrame(paragraphFrame, level) {
104079
+ const element = DocumentRenderer.renderContainer(RendererClassNames.PARAGRAPH_FRAME + " " + ZIndexHelper.getClassName(level, zIndexCssClassType.ParBg));
104080
+ DocumentRenderer.updateParagraphFrame(paragraphFrame, element);
104081
+ return element;
104082
+ }
104083
+ static updateParagraphFrame(frame, frameElement) {
104084
+ dom.DomUtils.setStyleSizeAndPosition(frameElement.style, frame);
104085
+ frameElement.style.background = ColorHelper.getCssStringInternal(frame.paragraphColor);
104086
+ }
104087
+ static renderTable(tableColumnInfo, level, showTableGridLines) {
104088
+ const tblXPos = tableColumnInfo.x;
104089
+ const tblYPos = tableColumnInfo.y;
104090
+ const tblBgColor = tableColumnInfo.logicInfo.backgroundColor;
104091
+ const tableElement = DocumentRenderer.renderContainer(RendererClassNames.TABLE_ELEMENTS_CONTAINER);
104092
+ dom.DomUtils.setStylePosition(tableElement.style, tableColumnInfo);
104093
+ const tblBordersContainer = tableElement.appendChild(DocumentRenderer.renderContainer(RendererClassNames.TABLE_BORDERS_CONTAINER));
104094
+ const tblRowsBgContainer = tableElement.appendChild(DocumentRenderer.renderContainer(RendererClassNames.TABLE_ROW_BACKGROUND_CONTAINER));
104095
+ const tblCellsBgContainer = tableElement.appendChild(DocumentRenderer.renderContainer(RendererClassNames.TABLE_CELL_BACKGROUND_CONTAINER));
104096
+ const tblCursorsContainer = DocumentRenderer.renderContainer(RendererClassNames.TABLE_CURSORS_CONTAINER);
104097
+ tblCursorsContainer.style.width = tableColumnInfo.width + "px";
104098
+ tblCursorsContainer.style.height = tableColumnInfo.height + "px";
104099
+ tableElement.appendChild(tblCursorsContainer);
104100
+ tblCursorsContainer["dxTableIndex"] = tableColumnInfo.logicInfo.grid.table.index;
104101
+ for (let i = 0, border; border = tableColumnInfo.horizontalBorders[i]; i++)
104102
+ DocumentRenderer.renderHorizontalBorder(tblBordersContainer, border, level, showTableGridLines);
104103
+ for (let i = 0, border; border = tableColumnInfo.verticalBorders[i]; i++)
104104
+ DocumentRenderer.renderVerticalBorder(tblBordersContainer, border, level, showTableGridLines);
104105
+ if (tableColumnInfo.logicInfo.isEditable) {
104106
+ for (let border of tableColumnInfo.verticalCursorBorders) {
104107
+ let element = DocumentRenderer.renderContainer(RendererClassNames.TABLE_COLUMN_CURSOR + " " +
104108
+ ZIndexHelper.getClassName(level, zIndexCssClassType.TblCursor));
104109
+ dom.DomUtils.setStylePosition(element.style, new geometry_point.Point(border.xPos, border.yPos));
104110
+ element.style.height = border.length + "px";
104111
+ tblCursorsContainer.appendChild(element);
104112
+ }
104113
+ for (let border of tableColumnInfo.horizontalCursorBorders) {
104114
+ let element = DocumentRenderer.renderContainer(RendererClassNames.TABLE_ROW_CURSOR + " " +
104115
+ ZIndexHelper.getClassName(level, zIndexCssClassType.TblCursor));
104116
+ dom.DomUtils.setStylePosition(element.style, new geometry_point.Point(border.xPos, border.yPos));
104117
+ element.style.width = border.length + "px";
104118
+ element["dxLayoutRowIndex"] = border.layoutRowIndex;
104119
+ tblCursorsContainer.appendChild(element);
104120
+ }
104121
+ }
104122
+ for (let tblRow of tableColumnInfo.tableRows) {
104123
+ DocumentRenderer.renderTableBackgroundElement(RendererClassNames.TABLE_ROW_BG + " " + ZIndexHelper.getClassName(level, zIndexCssClassType.TblRowBg), tblRowsBgContainer, tblRow, tblXPos, tblYPos, tblBgColor);
104124
+ for (let cellBgInfo of tblRow.backgroundInfos)
104125
+ DocumentRenderer.renderTableBackgroundElement(RendererClassNames.TABLE_CELL_BG + " " + ZIndexHelper.getClassName(level, zIndexCssClassType.TblCellBg), tblCellsBgContainer, cellBgInfo, 0, 0, cellBgInfo.color);
104126
+ }
104127
+ return tableElement;
104128
+ }
104129
+ static renderTableBackgroundElement(className, container, bound, tblXPos, tblYPos, color) {
104130
+ if (ColorHelper.isEmptyBgColor(color))
104131
+ return;
104132
+ const elem = DocumentRenderer.renderContainer(className);
104133
+ dom.DomUtils.setStylePosition(elem.style, new geometry_point.Point(bound.x - tblXPos, bound.y - tblYPos));
104134
+ dom.DomUtils.setStyleSize(elem.style, bound);
104135
+ elem.style.backgroundColor = utils_color/* ColorUtils */.i.colorToHash(color);
104136
+ container.appendChild(elem);
104137
+ }
104138
+ static renderVerticalBorder(tableBordersContainer, border, level, showTableGridLines) {
104139
+ const borderInfo = border.borderInfo;
104140
+ if (DocumentRenderer.isNotRenderTableBorder(borderInfo)) {
104141
+ if (showTableGridLines) {
104142
+ const element = DocumentRenderer.createBorderElement(utils_color/* ColorUtils */.i.LIGHT_COLOR, level);
104143
+ dom.DomUtils.setStyleSizeAndPosition(element.style, new rectangle.Rectangle(border.xPos, border.yPos, 0, border.length));
104144
+ element.style.borderStyle = "None";
104145
+ element.style.borderRightWidth = DocumentRenderer.getTableGridLineBorderWidth();
104146
+ element.style.borderRightStyle = "dashed";
104147
+ tableBordersContainer.appendChild(element);
104148
+ }
104149
+ }
104150
+ else {
104151
+ const element = DocumentRenderer.createBorderElement(borderInfo.color, level);
104152
+ dom.DomUtils.setStyleSizeAndPosition(element.style, new rectangle.Rectangle(border.xPos, border.yPos, 0, border.length));
104153
+ element.style.backgroundColor = "";
104154
+ element.style.borderStyle = "None";
104155
+ element.style.borderRightColor = utils_color/* ColorUtils */.i.colorToHash(borderInfo.color);
104156
+ element.style.borderRightWidth = DocumentRenderer.getBorderTypeWidth(borderInfo);
104157
+ element.style.borderRightStyle = DocumentRenderer.borderTypeToString(borderInfo.style);
104158
+ tableBordersContainer.appendChild(element);
104159
+ }
104160
+ }
104161
+ static getTableGridLineBorderWidth() {
104162
+ const devicePixelRatio = window.devicePixelRatio;
104163
+ if (browser.Browser.Chrome && devicePixelRatio > 1 && devicePixelRatio < 1.5)
104164
+ return "1.5px";
104165
+ return "1px";
104166
+ }
104167
+ static renderHorizontalBorder(tableBordersContainer, border, level, showTableGridLines) {
104168
+ const borderInfo = border.borderInfo;
104169
+ if (DocumentRenderer.isNotRenderTableBorder(borderInfo)) {
104170
+ if (!showTableGridLines)
104171
+ return;
104172
+ const element = DocumentRenderer.createBorderElement(utils_color/* ColorUtils */.i.LIGHT_COLOR, level);
104173
+ dom.DomUtils.setStyleSizeAndPosition(element.style, new rectangle.Rectangle(border.xPos, border.yPos, border.length, 0));
104174
+ element.style.borderStyle = "None";
104175
+ element.style.borderBottomWidth = DocumentRenderer.getTableGridLineBorderWidth();
104176
+ element.style.borderBottomStyle = "dashed";
104177
+ tableBordersContainer.appendChild(element);
104178
+ }
104179
+ else {
104180
+ const element = DocumentRenderer.createBorderElement(borderInfo.color, level);
104181
+ dom.DomUtils.setStyleSizeAndPosition(element.style, new rectangle.Rectangle(border.xPos, border.yPos, border.length, 0));
104182
+ element.style.backgroundColor = "";
104183
+ element.style.borderStyle = "None";
104184
+ element.style.borderBottomColor = utils_color/* ColorUtils */.i.colorToHash(borderInfo.color);
104185
+ element.style.borderBottomWidth = DocumentRenderer.getBorderTypeWidth(borderInfo);
104186
+ element.style.borderBottomStyle = DocumentRenderer.borderTypeToString(borderInfo.style);
104187
+ tableBordersContainer.appendChild(element);
104188
+ }
104189
+ }
104190
+ static createBorderElement(color, level) {
104191
+ const element = DocumentRenderer.renderContainer(RendererClassNames.TABLE_BORDER + " " + ZIndexHelper.getClassName(level, zIndexCssClassType.TableBorder));
104192
+ element.style.backgroundColor = utils_color/* ColorUtils */.i.colorToHash(color);
104193
+ return element;
104194
+ }
104195
+ static isNotRenderTableBorder(borderInfo) {
104196
+ return !borderInfo || borderInfo.style == BorderLineStyle.None || borderInfo.style == BorderLineStyle.Nil;
104197
+ }
104198
+ static borderTypeToString(style) {
104199
+ const str = DocumentRenderer.mapBorderTypeToString[style];
104200
+ return str ? str : "solid";
104201
+ }
104202
+ static getBorderTypeWidth(borderInfo) {
104203
+ const mimWidth = this.getBorderTypeMinWidth(borderInfo.style);
104204
+ return Math.max(mimWidth, borderInfo.width) + "px";
104205
+ }
104206
+ static getBorderTypeMinWidth(style) {
104207
+ if (style == BorderLineStyle.Double)
104208
+ return 3;
104209
+ return 1;
104210
+ }
104211
+ static getServiceContainerCore(pageElement) {
104212
+ return pageElement.firstChild;
104213
+ }
104214
+ static getSelectionContainerCore(pageElement) {
104215
+ return pageElement.childNodes[1];
104216
+ }
104217
+ static getSearchSelectionContainerCore(pageElement) {
104218
+ return pageElement.childNodes[2];
104219
+ }
104220
+ static getMisspelledSelectionContainerCore(pageElement) {
104221
+ return pageElement.childNodes[3];
104222
+ }
104223
+ static getRangePermissionsContainerCore(pageElement) {
104224
+ return pageElement.childNodes[4];
104225
+ }
104226
+ static isPageElementConsiderAllContainers(pageElement) {
104227
+ return pageElement.childNodes.length > 1;
104228
+ }
104229
+ static getMainPageAreaContainerCore(pageElement) {
104230
+ return pageElement.childNodes[5];
104231
+ }
104232
+ static getOtherPageAreaContainerCore(pageElement) {
104233
+ return pageElement.childNodes[6];
104234
+ }
104235
+ static getAnchoredObjectsContainer(pageElement) {
104236
+ return pageElement.childNodes[7];
104237
+ }
104238
+ static getTextBoxBackgroundContainer(pageElement) {
104239
+ return pageElement.childNodes[8];
104240
+ }
104241
+ static getRowsContainerCore(columnElement) {
104242
+ return columnElement.firstChild;
104243
+ }
104244
+ static getParagraphFramesContainerCore(columnElement) {
104245
+ return browser.Browser.Chrome ? columnElement.firstChild.nextSibling : columnElement.childNodes[1];
104246
+ }
104247
+ static getTablesContainerCore(columnElement) {
104248
+ return columnElement.lastChild;
104249
+ }
104250
+ static getColumnsContainerCore(pageAreaElement) {
104251
+ return pageAreaElement;
104252
+ }
104253
+ static renderContainer(className) {
104254
+ const element = document.createElement("DIV");
104255
+ element.className = className;
104256
+ return element;
104257
+ }
104258
+ static removeFromContainerByIndex(node, index, getContainer) {
104259
+ const container = getContainer(node);
104260
+ const child = container.childNodes[index];
104261
+ if (child)
104262
+ container.removeChild(child);
104263
+ }
104264
+ static replaceInContainer(node, index, newRenderedElement, getContainer) {
104265
+ const container = getContainer(node);
104266
+ container.replaceChild(newRenderedElement, container.childNodes[index]);
104267
+ }
104268
+ static insertInContainer(node, index, newRenderedElement, getContainer) {
104269
+ const container = getContainer(node);
104270
+ if (index < container.childNodes.length)
104271
+ container.insertBefore(newRenderedElement, container.childNodes[index]);
104272
+ else
104273
+ container.appendChild(newRenderedElement);
104274
+ }
104275
+ static removeFromContainerByObject(id, container, cache) {
104276
+ const obj = cache[id];
104277
+ if (obj) {
104278
+ container.removeChild(obj);
104279
+ delete cache[id];
104280
+ }
104281
+ }
104282
+ static replaceFromContainerByObject(id, container, cache, newNode) {
104283
+ container.replaceChild(newNode, cache[id]);
104284
+ cache[id] = newNode;
104285
+ }
104286
+ static insertToContainerByObject(id, container, cache, newNode) {
104287
+ cache[id] = newNode;
104288
+ container.appendChild(newNode);
104289
+ }
104290
+ static isPageElementEmpty(pageElement) {
104291
+ return pageElement.childNodes.length == 0;
104292
+ }
104293
+ renderPictureBoxContent(size, cacheInfo, tip, altText) {
104294
+ const tooltip = tip ? CanvasUtils.buildHyperlinkTipString(tip, this.viewManager.stringResources.commonLabels.clickToFollowHyperlink, this.viewManager.fieldOptions) : "";
104295
+ const img = document.createElement('img');
104296
+ img.setAttribute('src', cacheInfo.base64);
104297
+ if (tooltip) {
104298
+ img.setAttribute('title', tooltip);
104299
+ }
104300
+ if ((0,common.isDefined)(altText) && !utils_string.StringUtils.isNullOrEmpty(altText))
104301
+ img.alt = altText;
104302
+ img.style.cssText = `height: ${math.MathUtils.round(size.height, 3)}px; width: ${math.MathUtils.round(size.width, 3)}px; vertical-align: baseline`;
104303
+ img.setAttribute('class', RendererClassNames.PICTURE);
104304
+ return img;
104305
+ }
104306
+ }
104307
+ DocumentRenderer.mapBorderTypeToString = new MapCreator()
104308
+ .add(BorderLineStyle.Single, "solid")
104309
+ .add(BorderLineStyle.Dotted, "dotted")
104310
+ .add(BorderLineStyle.Dashed, "dashed")
104311
+ .add(BorderLineStyle.Double, "double")
104312
+ .add(BorderLineStyle.DashSmallGap, "dashed")
104313
+ .add(BorderLineStyle.DotDash, "dashed")
104314
+ .add(BorderLineStyle.DotDotDash, "dashed")
104315
+ .get();
104316
+ class DocumentRendererPageCache {
104317
+ constructor(page) {
104318
+ this.page = page;
104319
+ this.init();
104320
+ }
104321
+ removeContent() {
104322
+ const serviceContainer = DocumentRenderer.getServiceContainerCore(this.page);
104323
+ dom.DomUtils.clearInnerHtml(this.page);
104324
+ this.page.appendChild(serviceContainer);
104325
+ this.init();
104326
+ }
104327
+ init() {
104328
+ this.otherAreas = {};
104329
+ this.anchoredPicture = {};
104330
+ this.textBoxBgElements = {};
104331
+ }
104332
+ }
104333
+ class BoxRenderResult {
104334
+ constructor(html, increaseRowHeight) {
104335
+ this.html = html;
104336
+ this.increaseRowHeight = increaseRowHeight;
104337
+ }
104338
+ toString() {
104339
+ if (typeof this.html === 'string')
104340
+ return this.html;
104341
+ else {
104342
+ const result = [];
104343
+ if (this.html) {
104344
+ const length = this.html.children.length;
104345
+ for (let i = 0; i < length; i++) {
104346
+ result.push(this.html.children.item(i).outerHTML);
104347
+ }
104348
+ }
104349
+ return result.join('');
104350
+ }
104351
+ }
104352
+ }
104353
+
104330
104354
  ;// CONCATENATED MODULE: ./src/common/canvas/listeners/frame-base-listener.ts
104331
104355
 
104332
104356
 
@@ -105786,8 +105810,8 @@ class ResizeBoxHelper {
105786
105810
  }
105787
105811
  }
105788
105812
  getSize(evt) {
105789
- var absDeltaX = evt.absolutePoint.x - (this.startScrollLeft - evt.scroll.x) - this.startX;
105790
- var absDeltaY = evt.absolutePoint.y - (this.startScrollTop - evt.scroll.y) - this.startY;
105813
+ var absDeltaX = (evt.absolutePoint.x - (this.startScrollLeft - evt.scroll.x) - this.startX) / this.control.viewManager.zoomLevel;
105814
+ var absDeltaY = (evt.absolutePoint.y - (this.startScrollTop - evt.scroll.y) - this.startY) / this.control.viewManager.zoomLevel;
105791
105815
  var deltaX = absDeltaX * Math.cos(this.rotation) - (-absDeltaY) * Math.sin(this.rotation);
105792
105816
  var deltaY = -(absDeltaX * Math.sin(this.rotation) + (-absDeltaY) * Math.cos(this.rotation));
105793
105817
  var newWidth, newHeight;
@@ -107908,6 +107932,7 @@ class DimensionInfo {
107908
107932
 
107909
107933
 
107910
107934
 
107935
+
107911
107936
  const SCROLL_INTERVAL_MS = 50;
107912
107937
  const CSSCLASS_FOCUSED = "dxreInFocus";
107913
107938
  const AUTOSCROLL_AREA_SIZE = 10;
@@ -107925,6 +107950,7 @@ class CanvasManager extends batch_updatable/* BatchUpdatableObject */.IS {
107925
107950
  this.blockNotPointerEvents = false;
107926
107951
  this.lastPointerPosition = { x: -1, y: -1 };
107927
107952
  this.evtHandlersHolder = new event_handlers_holder/* DomEventHandlersHolder */.$();
107953
+ this.simpleViewCanvasSizeManager = new SimpleViewCanvasSizeManager(this, viewManager.control);
107928
107954
  this.viewManager = viewManager;
107929
107955
  this.eventManager = eventManager;
107930
107956
  this.initCommonEvents();
@@ -107943,6 +107969,8 @@ class CanvasManager extends batch_updatable/* BatchUpdatableObject */.IS {
107943
107969
  }
107944
107970
  dispose() {
107945
107971
  this.evtHandlersHolder.removeAllListeners();
107972
+ this.simpleViewCanvasSizeManager.dispose();
107973
+ this.simpleViewCanvasSizeManager = null;
107946
107974
  }
107947
107975
  onUpdateUnlocked(_occurredEvents) {
107948
107976
  this.viewManager.canvasListener.updateVisibleParts();
@@ -107969,7 +107997,7 @@ class CanvasManager extends batch_updatable/* BatchUpdatableObject */.IS {
107969
107997
  dom.DomUtils.removeClassName(this.viewManager.canvas, CSSCLASS_FOCUSED);
107970
107998
  }
107971
107999
  getCanvasWidth() {
107972
- return SizeUtils.getClientWidth(this.viewManager.canvas);
108000
+ return SizeUtils.getClientWidth(this.viewManager.canvas) / this.viewManager.zoomLevel;
107973
108001
  }
107974
108002
  onCanvasMouseWheel(evt) {
107975
108003
  if (!this.viewManager.layout)
@@ -108131,7 +108159,7 @@ class CanvasManager extends batch_updatable/* BatchUpdatableObject */.IS {
108131
108159
  this.saveMousePosition(evt);
108132
108160
  }
108133
108161
  getScale(actualSize, originalSize) {
108134
- return actualSize != 0 && originalSize != 0 ? actualSize / originalSize : 1;
108162
+ return (actualSize != 0 && originalSize != 0 ? actualSize / originalSize : 1) * this.viewManager.zoomLevel;
108135
108163
  }
108136
108164
  getLayoutPoint(evt, checkScroll) {
108137
108165
  if (!this.viewManager.layout)
@@ -108144,12 +108172,14 @@ class CanvasManager extends batch_updatable/* BatchUpdatableObject */.IS {
108144
108172
  const clientY = utils_evt/* EvtUtils */.g.getEventY(evt) / scaleY;
108145
108173
  const canvasX = dom.DomUtils.getAbsolutePositionX(canvas) / scaleX;
108146
108174
  const canvasY = dom.DomUtils.getAbsolutePositionY(canvas) / scaleY;
108147
- const offsetY = canvas.scrollTop + clientY - canvasY;
108175
+ const offsetY = canvas.scrollTop / scaleY + clientY - canvasY;
108148
108176
  const pageIndex = this.sizes.findPageIndexByOffsetY(this.viewManager.layout.pages, offsetY);
108177
+ const visibleAreaWidth = this.sizes.getVisibleAreaWidth(false) / scaleX;
108178
+ const visibleAreaHeight = this.sizes.getVisibleAreaHeight(false) / scaleY;
108149
108179
  if (checkScroll) {
108150
- if (this.sizes.scrollYVisible && canvasX + this.sizes.getVisibleAreaWidth(false) - clientX < 0)
108180
+ if (this.sizes.scrollYVisible && canvasX + visibleAreaWidth - clientX < 0)
108151
108181
  return LayoutPoint.Empty();
108152
- if (this.sizes.scrollXVisible && canvasY + this.sizes.getVisibleAreaHeight(false) - clientY < 0)
108182
+ if (this.sizes.scrollXVisible && canvasY + visibleAreaHeight - clientY < 0)
108153
108183
  return LayoutPoint.Empty();
108154
108184
  }
108155
108185
  const layoutPage = this.viewManager.layout.pages[pageIndex];
@@ -109758,6 +109788,8 @@ class SelectionRenderer extends SelectionRendererBase {
109758
109788
 
109759
109789
 
109760
109790
 
109791
+
109792
+
109761
109793
 
109762
109794
 
109763
109795
 
@@ -109865,6 +109897,7 @@ class ViewManager {
109865
109897
  }
109866
109898
  addTopLevelContainers() {
109867
109899
  this.pagesContainer = DocumentRenderer.renderContainer(RendererClassNames.PAGES);
109900
+ this.pagesContainer.style.zoom = this.zoomLevel.toString();
109868
109901
  this.serviceContainer = DocumentRenderer.renderContainer(RendererClassNames.TOP_LEVEL_SERVICE_CONTAINER);
109869
109902
  DocumentRenderer.insertInContainer(this.canvas, 0, this.pagesContainer, (node) => node);
109870
109903
  this.canvas.appendChild(this.serviceContainer);
@@ -109901,6 +109934,20 @@ class ViewManager {
109901
109934
  firstPage.flags.set(LayoutPageFlags.ContentRendered, true);
109902
109935
  }
109903
109936
  }
109937
+ get zoomLevel() { return this.innerClientProperties.viewsSettings.zoomLevel; }
109938
+ set zoomLevel(value) {
109939
+ this.pagesContainer.style.zoom = value.toString();
109940
+ this.innerClientProperties.viewsSettings.zoomLevel = value;
109941
+ if (this.control.innerClientProperties.viewsSettings.isSimpleView) {
109942
+ this.canvasManager.simpleViewCanvasSizeManager.changeSize(true);
109943
+ }
109944
+ this.control.horizontalRulerControl.update();
109945
+ }
109946
+ get allowZoom() { return ControlOptions.isEnabled(this.control.modelManager.richOptions.control.allowZoom); }
109947
+ set allowZoom(value) {
109948
+ this.control.modelManager.richOptions.control.allowZoom = value ? DocumentCapability.Enabled : DocumentCapability.Hidden;
109949
+ this.control.barHolder.forceUpdate({ [RichEditClientCommand.ChangeZoomLevel]: true });
109950
+ }
109904
109951
  }
109905
109952
 
109906
109953
  ;// CONCATENATED MODULE: ./src/common/client-side-events.ts
@@ -112394,6 +112441,8 @@ class RulerMultiControl {
112394
112441
  this.subControls = [];
112395
112442
  this.handleControlIndex = -1;
112396
112443
  this.viewState = [];
112444
+ this.zoomLevel = 1.0;
112445
+ this.zoomChanged = false;
112397
112446
  this.modelData = modelData;
112398
112447
  this.controls = controls;
112399
112448
  }
@@ -112409,6 +112458,8 @@ class RulerMultiControl {
112409
112458
  updateModelState() {
112410
112459
  this.currModelState = this.getModelState();
112411
112460
  this.prevModelState = this.currModelState.clone();
112461
+ this.zoomChanged = this.zoomLevel != this.modelData.zoomLevel;
112462
+ this.zoomLevel = this.modelData.zoomLevel;
112412
112463
  }
112413
112464
  onMouseMove(distance, _source) {
112414
112465
  this.calculateNewModelState(distance);
@@ -112493,6 +112544,23 @@ class RulerVerticalLineControl {
112493
112544
  }
112494
112545
  }
112495
112546
 
112547
+ ;// CONCATENATED MODULE: ./src/common/ui/ruler/controls/zoomable-value.ts
112548
+ class RulerValue {
112549
+ set value(value) {
112550
+ this.originalValue = value / this.zoomLevelHolder.zoomLevel;
112551
+ }
112552
+ ;
112553
+ get value() {
112554
+ const calculatedValue = this.originalValue * this.zoomLevelHolder.zoomLevel;
112555
+ return calculatedValue;
112556
+ }
112557
+ ;
112558
+ constructor(originalValue, zoomLevelHolder) {
112559
+ this.originalValue = originalValue;
112560
+ this.zoomLevelHolder = zoomLevelHolder;
112561
+ }
112562
+ }
112563
+
112496
112564
  ;// CONCATENATED MODULE: ./src/common/ui/ruler/controls/column.ts
112497
112565
 
112498
112566
 
@@ -112503,6 +112571,7 @@ class RulerVerticalLineControl {
112503
112571
 
112504
112572
 
112505
112573
 
112574
+
112506
112575
  const MinColumnWidth = unit_converter/* UnitConverter */.u.centimeterToPixel(1.5);
112507
112576
  const MinColumnSpace = unit_converter/* UnitConverter */.u.centimeterToPixel(0.25);
112508
112577
  const COLUMN_HANDLE_CLASS_NAME = RICH_EDIT_CLASS_NAME_PREFIX + "columnHandle";
@@ -112529,14 +112598,25 @@ var ColumnAction;
112529
112598
  ColumnAction[ColumnAction["ColumnWidth"] = 3] = "ColumnWidth";
112530
112599
  })(ColumnAction || (ColumnAction = {}));
112531
112600
  class RulerColumnModelState {
112601
+ get leftPos() { return this.zoomableLeftPos.value; }
112602
+ get originalLeftPos() { return this.zoomableLeftPos.originalValue; }
112603
+ set leftPos(value) { this.zoomableLeftPos.value = value; }
112604
+ get width() { return this.zoomableWidth.value; }
112605
+ get originalWidth() { return this.zoomableWidth.originalValue; }
112606
+ set width(value) { this.zoomableWidth.value = value; }
112607
+ get space() { return this.zoomableSpace.value; }
112608
+ get originalSpace() { return this.zoomableSpace.originalValue; }
112609
+ set space(value) { this.zoomableSpace.value = value; }
112532
112610
  get rightPos() { return this.leftPos + this.width; }
112533
- constructor(leftPos, width, space) {
112534
- this.leftPos = leftPos;
112535
- this.width = width;
112536
- this.space = space;
112611
+ get originalRightPos() { return this.originalLeftPos + this.originalWidth; }
112612
+ constructor(leftPos, width, space, zoomLevelHolder) {
112613
+ this.zoomLevelHolder = zoomLevelHolder;
112614
+ this.zoomableLeftPos = new RulerValue(leftPos, this.zoomLevelHolder);
112615
+ this.zoomableWidth = new RulerValue(width, this.zoomLevelHolder);
112616
+ this.zoomableSpace = new RulerValue(space, this.zoomLevelHolder);
112537
112617
  }
112538
112618
  clone() {
112539
- return new RulerColumnModelState(this.leftPos, this.width, this.space);
112619
+ return new RulerColumnModelState(this.originalLeftPos, this.originalWidth, this.originalSpace, this.zoomLevelHolder);
112540
112620
  }
112541
112621
  equals(obj) {
112542
112622
  return this.leftPos == obj.leftPos &&
@@ -112553,7 +112633,8 @@ class RulerColumnsModelState {
112553
112633
  }
112554
112634
  get activeColumn() { return this.columns[this.columnActiveIndex]; }
112555
112635
  clone() {
112556
- return new RulerColumnsModelState(utils_list.ListUtils.deepCopy(this.columns), this.equalWidth, this.columnActiveIndex, this.enabled);
112636
+ const clonedColumns = utils_list.ListUtils.deepCopy(this.columns);
112637
+ return new RulerColumnsModelState(clonedColumns, this.equalWidth, this.columnActiveIndex, this.enabled);
112557
112638
  }
112558
112639
  }
112559
112640
  class RulerColumnsControl extends RulerMultiControl {
@@ -112561,8 +112642,8 @@ class RulerColumnsControl extends RulerMultiControl {
112561
112642
  const state = this.modelData.commandManager.getCommand(RichEditClientCommand.RulerSectionColumnsSettings).getState();
112562
112643
  let prevColumnLeftPos = 0;
112563
112644
  const modelColumns = utils_list.ListUtils.map(state.value, (column) => {
112564
- const result = new RulerColumnModelState(prevColumnLeftPos, column.width, column.space);
112565
- prevColumnLeftPos = result.rightPos + result.space;
112645
+ const result = new RulerColumnModelState(prevColumnLeftPos, column.width, column.space, this.modelData);
112646
+ prevColumnLeftPos = result.originalRightPos + result.originalSpace;
112566
112647
  return result;
112567
112648
  });
112568
112649
  return new RulerColumnsModelState(modelColumns, state.equalWidth, state.activeIndex, state.enabled);
@@ -112580,7 +112661,7 @@ class RulerColumnsControl extends RulerMultiControl {
112580
112661
  return result;
112581
112662
  }, 0, this.currModelState.columns.length - 1);
112582
112663
  this.setCount(this.viewState.length);
112583
- utils_list.ListUtils.forEach2(this.subControls, this.viewState, (control, viewState) => control.setValue(viewState));
112664
+ utils_list.ListUtils.forEach2(this.subControls, this.viewState, (control, viewState) => control.setValue(viewState, this.zoomChanged));
112584
112665
  }
112585
112666
  }
112586
112667
  createSubControl() {
@@ -112592,8 +112673,8 @@ class RulerColumnsControl extends RulerMultiControl {
112592
112673
  const columnWidthDiff = diff / colCount;
112593
112674
  let prevColumnLeftPos = 0;
112594
112675
  this.currModelState.columns = this.prevModelState.columns.map(oldColumn => {
112595
- const result = new RulerColumnModelState(prevColumnLeftPos, oldColumn.width - columnWidthDiff, oldColumn.space);
112596
- prevColumnLeftPos = result.rightPos + result.space;
112676
+ const result = new RulerColumnModelState(prevColumnLeftPos, oldColumn.originalWidth - columnWidthDiff, oldColumn.originalSpace, this.modelData);
112677
+ prevColumnLeftPos = result.originalRightPos + result.originalSpace;
112597
112678
  return result;
112598
112679
  });
112599
112680
  }
@@ -112618,7 +112699,7 @@ class RulerColumnsControl extends RulerMultiControl {
112618
112699
  }
112619
112700
  onMouseUp() {
112620
112701
  this.modelData.commandManager.getCommand(RichEditClientCommand.RulerSectionColumnsSettings)
112621
- .execute(this.modelData.commandManager.isPublicApiCall, this.currModelState.columns.map(col => new ColumnSectionProperties(col.width, col.space)));
112702
+ .execute(this.modelData.commandManager.isPublicApiCall, this.currModelState.columns.map(col => new ColumnSectionProperties(col.originalWidth, col.originalSpace)));
112622
112703
  this.finishHandle();
112623
112704
  }
112624
112705
  calculateNewModelState(distance) {
@@ -112635,10 +112716,11 @@ class RulerColumnsControl extends RulerMultiControl {
112635
112716
  }
112636
112717
  }
112637
112718
  calculateNewModelStateColumnMove(distance) {
112719
+ const minColumnWidth = MinColumnWidth * this.modelData.zoomLevel;
112638
112720
  const leftMargin = this.controls.leftMargin.prevModelState.modelValue;
112639
112721
  const column = this.prevModelState.columns[this.handleControlIndex];
112640
112722
  const initialPos = leftMargin + column.rightPos;
112641
- const newPos = this.controls.chooseClosestAnchorPosition(initialPos + distance, [initialPos], new min_max.MinMaxNumber(leftMargin + column.leftPos + MinColumnWidth, leftMargin + this.prevModelState.columns[this.handleControlIndex + 1].rightPos - MinColumnWidth - column.space));
112723
+ const newPos = this.controls.chooseClosestAnchorPosition(initialPos + distance, [initialPos], new min_max.MinMaxNumber(leftMargin + column.leftPos + minColumnWidth, leftMargin + this.prevModelState.columns[this.handleControlIndex + 1].rightPos - minColumnWidth - column.space));
112642
112724
  const correctedDistance = newPos - initialPos;
112643
112725
  const currColumn = this.currModelState.columns[this.handleControlIndex] = this.prevModelState.columns[this.handleControlIndex].clone();
112644
112726
  const nextColumn = this.currModelState.columns[this.handleControlIndex + 1] = this.prevModelState.columns[this.handleControlIndex + 1].clone();
@@ -112647,15 +112729,17 @@ class RulerColumnsControl extends RulerMultiControl {
112647
112729
  nextColumn.width -= correctedDistance;
112648
112730
  }
112649
112731
  calculateNewModelStateColumnSpace(distance, leftEdge) {
112732
+ const minColumnWidth = MinColumnWidth * this.modelData.zoomLevel;
112733
+ const minColumnSpace = MinColumnSpace * this.modelData.zoomLevel;
112650
112734
  if (this.prevModelState.equalWidth) {
112651
112735
  const columnCount = this.currModelState.columns.length;
112652
112736
  const leftMargin = this.controls.leftMargin.prevModelState.modelValue;
112653
112737
  const column = this.prevModelState.columns[this.handleControlIndex];
112654
- const maxColumnSpace = (utils_list.ListUtils.last(this.prevModelState.columns).rightPos - MinColumnWidth * columnCount) / (columnCount - 1);
112655
- const maxColumnWidth = (utils_list.ListUtils.last(this.prevModelState.columns).rightPos - MinColumnSpace * (columnCount - 1)) / columnCount;
112738
+ const maxColumnSpace = (utils_list.ListUtils.last(this.prevModelState.columns).rightPos - minColumnWidth * columnCount) / (columnCount - 1);
112739
+ const maxColumnWidth = (utils_list.ListUtils.last(this.prevModelState.columns).rightPos - minColumnSpace * (columnCount - 1)) / columnCount;
112656
112740
  const bounds = leftEdge ?
112657
- new min_max.MinMaxNumber(leftMargin + MinColumnWidth * (this.handleControlIndex + 1) + maxColumnSpace * this.handleControlIndex, leftMargin + maxColumnWidth * (this.handleControlIndex + 1) + MinColumnSpace * this.handleControlIndex) :
112658
- new min_max.MinMaxNumber(leftMargin + (maxColumnWidth + MinColumnSpace) * (this.handleControlIndex + 1), leftMargin + (MinColumnWidth + maxColumnSpace) * (this.handleControlIndex + 1));
112741
+ new min_max.MinMaxNumber(leftMargin + minColumnWidth * (this.handleControlIndex + 1) + maxColumnSpace * this.handleControlIndex, leftMargin + maxColumnWidth * (this.handleControlIndex + 1) + minColumnSpace * this.handleControlIndex) :
112742
+ new min_max.MinMaxNumber(leftMargin + (maxColumnWidth + minColumnSpace) * (this.handleControlIndex + 1), leftMargin + (minColumnWidth + maxColumnSpace) * (this.handleControlIndex + 1));
112659
112743
  const initialPos = leftMargin + column.rightPos + (leftEdge ? 0 : column.space);
112660
112744
  const newPos = this.controls.chooseClosestAnchorPosition(initialPos + distance, [initialPos], bounds);
112661
112745
  const correctedDistance = newPos - initialPos;
@@ -112678,8 +112762,8 @@ class RulerColumnsControl extends RulerMultiControl {
112678
112762
  const leftMargin = this.controls.leftMargin.prevModelState.modelValue;
112679
112763
  const column = this.prevModelState.columns[this.handleControlIndex];
112680
112764
  const bounds = leftEdge ?
112681
- new min_max.MinMaxNumber(leftMargin + column.leftPos + MinColumnWidth, leftMargin + this.prevModelState.columns[this.handleControlIndex + 1].leftPos - MinColumnSpace) :
112682
- new min_max.MinMaxNumber(leftMargin + column.rightPos + MinColumnSpace, leftMargin + this.prevModelState.columns[this.handleControlIndex + 1].rightPos - MinColumnWidth);
112765
+ new min_max.MinMaxNumber(leftMargin + column.leftPos + minColumnWidth, leftMargin + this.prevModelState.columns[this.handleControlIndex + 1].leftPos - minColumnSpace) :
112766
+ new min_max.MinMaxNumber(leftMargin + column.rightPos + minColumnSpace, leftMargin + this.prevModelState.columns[this.handleControlIndex + 1].rightPos - minColumnWidth);
112683
112767
  const initialPos = leftMargin + column.rightPos + (leftEdge ? 0 : column.space);
112684
112768
  const newPos = this.controls.chooseClosestAnchorPosition(initialPos + distance, [initialPos], bounds);
112685
112769
  const correctedDistance = newPos - initialPos;
@@ -112728,8 +112812,8 @@ class RulerColumnState {
112728
112812
  }
112729
112813
  this.controls.lineControl.setPosition(pos, SnapTo.LeftSide);
112730
112814
  }
112731
- setValue(viewState) {
112732
- if (!this.viewState || !this.viewState.equals(viewState)) {
112815
+ setValue(viewState, forceUpdate = false) {
112816
+ if (forceUpdate || !this.viewState || !this.viewState.equals(viewState)) {
112733
112817
  this.viewState = viewState.clone();
112734
112818
  this.rootElement.style.left = RULLER_NUMBER_CORRECTION + viewState.rightPos + "px";
112735
112819
  this.rootElement.style.width = viewState.space + "px";
@@ -112749,13 +112833,21 @@ class RulerColumnState {
112749
112833
  ;// CONCATENATED MODULE: ./src/common/ui/ruler/controls/base.ts
112750
112834
 
112751
112835
 
112836
+
112752
112837
  class RulerModelState {
112753
- constructor(modelValue, enabled) {
112754
- this.modelValue = modelValue;
112838
+ get modelValue() { return this._modelValue.value; }
112839
+ ;
112840
+ get originalModelValue() { return this._modelValue.originalValue; }
112841
+ ;
112842
+ set modelValue(value) { this._modelValue.value = value; }
112843
+ ;
112844
+ constructor(modelValue, enabled, zoomLevelHolder) {
112755
112845
  this.enabled = enabled;
112846
+ this.zoomLevelHolder = zoomLevelHolder;
112847
+ this._modelValue = new RulerValue(modelValue, zoomLevelHolder);
112756
112848
  }
112757
112849
  clone() {
112758
- return new RulerModelState(this.modelValue, this.enabled);
112850
+ return new RulerModelState(this.originalModelValue, this.enabled, this.zoomLevelHolder);
112759
112851
  }
112760
112852
  }
112761
112853
  class RulerBase {
@@ -112794,25 +112886,40 @@ const DIVISION_MINOR_CLASS_NAME = RULER_CLASS_NAME + "Minor" + DIVISION_CLASS_NA
112794
112886
  const DIVISION_MAJOR_CLASS_NAME = RULER_CLASS_NAME + "Major" + DIVISION_CLASS_NAME;
112795
112887
  const DIVISION_NUMBER_CLASS_NAME = RULER_CLASS_NAME + "Number" + DIVISION_CLASS_NAME;
112796
112888
  class RulerDivisionsControl extends RulerBase {
112889
+ get height() { return this._height; }
112797
112890
  getRootClassName() { return DIVISION_CONTAINER_CLASS_NAME; }
112798
112891
  constructor(modelData, controls, divisionInfo, maxPageWidth) {
112799
112892
  super(modelData, controls);
112800
- this.height = 0;
112801
- const unitCount = Math.ceil(maxPageWidth / divisionInfo.unitSize);
112802
- this.rootElement.style.width = divisionInfo.unitSize * (unitCount * 2 + 1) + "px";
112893
+ this.zoomLevel = 1.0;
112894
+ this.zoomChanged = false;
112895
+ this._height = 0;
112896
+ this.divisionInfo = divisionInfo;
112897
+ this.maxPageWidth = maxPageWidth;
112803
112898
  this.controls.ruler.rootElement.appendChild(this.rootElement);
112899
+ this._height = SizeUtils.getOffsetHeight(this.rootElement);
112804
112900
  if (browser.Browser.IE && browser.Browser.MajorVersion <= 9)
112805
112901
  this.rootElement.offsetParent;
112806
- this.height = SizeUtils.getOffsetHeight(this.rootElement);
112807
- createDivisionElements(this.rootElement, unitCount, divisionInfo, this.height);
112808
- this.initialLeft = -(unitCount * divisionInfo.unitSize - RULLER_NUMBER_CORRECTION);
112902
+ this.render();
112903
+ }
112904
+ render() {
112905
+ const unitCount = Math.ceil(this.maxPageWidth / this.divisionInfo.unitSize);
112906
+ this.rootElement.style.width = this.divisionInfo.unitSize * (unitCount * 2 + 1) + "px";
112907
+ createDivisionElements(this.rootElement, unitCount, this.divisionInfo, this.height);
112908
+ this.initialLeft = -(unitCount * this.divisionInfo.unitSize - RULLER_NUMBER_CORRECTION);
112809
112909
  }
112810
112910
  update() {
112811
112911
  this.updateModelState();
112812
112912
  this.updateView();
112813
112913
  }
112814
- updateModelState() { }
112914
+ updateModelState() {
112915
+ this.zoomChanged = this.zoomLevel != this.modelData.zoomLevel;
112916
+ this.zoomLevel = this.modelData.zoomLevel;
112917
+ }
112815
112918
  updateView() {
112919
+ if (this.zoomChanged) {
112920
+ this.render();
112921
+ this.zoomChanged = false;
112922
+ }
112816
112923
  const newViewState = this.getViewValue();
112817
112924
  if (newViewState != this.viewState) {
112818
112925
  this.viewState = newViewState;
@@ -112829,6 +112936,9 @@ class RulerDivisionsControl extends RulerBase {
112829
112936
  }
112830
112937
  }
112831
112938
  function createDivisionElements(rootElement, unitCount, divisionInfo, height) {
112939
+ while (rootElement.firstChild) {
112940
+ rootElement.removeChild(rootElement.lastChild);
112941
+ }
112832
112942
  let divisionLeftPosition = 0;
112833
112943
  const createSimpleDivision = (className, topAndBottomMargin) => {
112834
112944
  const stepSize = divisionInfo.stepSize;
@@ -112880,16 +112990,26 @@ var DivisionType;
112880
112990
  DivisionType[DivisionType["Major"] = 2] = "Major";
112881
112991
  })(DivisionType || (DivisionType = {}));
112882
112992
  class DivisionInfo {
112883
- constructor(map, unitSize) {
112993
+ get unitSize() { return this._unitSize; }
112994
+ ;
112995
+ get stepSize() { return this._stepSize; }
112996
+ ;
112997
+ constructor(map, originalUnitSize, zoomLevelHolder) {
112998
+ this.originalUnitSize = originalUnitSize;
112999
+ this.zoomLevelHolder = zoomLevelHolder;
112884
113000
  this.unitMap = map;
112885
- this.unitSize = unitSize;
112886
- this.stepSize = this.unitSize / this.unitMap.length;
113001
+ this.updateZoomLevel();
113002
+ }
113003
+ updateZoomLevel() {
113004
+ const zoomLevel = this.zoomLevelHolder.zoomLevel;
113005
+ this._unitSize = this.originalUnitSize * zoomLevel;
113006
+ this._stepSize = this.unitSize / this.unitMap.length;
112887
113007
  }
112888
- static create(unitType) {
113008
+ static create(unitType, viewSettings) {
112889
113009
  return unitType == RichEditUnit.Inch ?
112890
113010
  new DivisionInfo([DivisionType.Number, DivisionType.Minor, DivisionType.Minor, DivisionType.Minor,
112891
- DivisionType.Major, DivisionType.Minor, DivisionType.Minor, DivisionType.Minor], unit_converter/* UnitConverter */.u.inchesToPixels(1)) :
112892
- new DivisionInfo([DivisionType.Number, DivisionType.Minor, DivisionType.Major, DivisionType.Minor], unit_converter/* UnitConverter */.u.centimeterToPixelF(1));
113011
+ DivisionType.Major, DivisionType.Minor, DivisionType.Minor, DivisionType.Minor], unit_converter/* UnitConverter */.u.inchesToPixels(1), viewSettings) :
113012
+ new DivisionInfo([DivisionType.Number, DivisionType.Minor, DivisionType.Major, DivisionType.Minor], unit_converter/* UnitConverter */.u.centimeterToPixelF(1), viewSettings);
112893
113013
  }
112894
113014
  }
112895
113015
 
@@ -113077,7 +113197,7 @@ class RulerFirstLineIndentDragHandle extends RulerBaseIndentControl {
113077
113197
  }
113078
113198
  getModelState() {
113079
113199
  const state = this.modelData.commandManager.getCommand(RichEditClientCommand.RulerParagraphLeftIndents).getState();
113080
- return new RulerModelState(state.value.firstLine, state.enabled);
113200
+ return new RulerModelState(state.value.firstLine, state.enabled, this.modelData);
113081
113201
  }
113082
113202
  updateView() {
113083
113203
  const newViewState = this.controls.paragraphLeftPosition + this.currModelState.modelValue;
@@ -113091,7 +113211,7 @@ class RulerFirstLineIndentDragHandle extends RulerBaseIndentControl {
113091
113211
  }
113092
113212
  canHandle(source) { return source == this.rootElement; }
113093
113213
  onMouseUp() {
113094
- const commandValue = new RulerParagraphLeftIndentsCommandValue(null, this.controls.leftIndent.currModelState.modelValue, this.currModelState.modelValue);
113214
+ const commandValue = new RulerParagraphLeftIndentsCommandValue(null, this.controls.leftIndent.currModelState.originalModelValue, this.currModelState.originalModelValue);
113095
113215
  commandValue.setIntervalsInfo(this.modelData.selection.intervalsInfo);
113096
113216
  this.modelData.commandManager.getCommand(RichEditClientCommand.RulerParagraphLeftIndents)
113097
113217
  .execute(this.modelData.commandManager.isPublicApiCall, commandValue);
@@ -113151,7 +113271,7 @@ class RulerLeftIndentDragHandle extends RulerBaseIndentControl {
113151
113271
  }
113152
113272
  getModelState() {
113153
113273
  const state = this.modelData.commandManager.getCommand(RichEditClientCommand.RulerParagraphLeftIndents).getState();
113154
- return new RulerModelState(state.value.hanging, state.enabled);
113274
+ return new RulerModelState(state.value.hanging, state.enabled, this.modelData);
113155
113275
  }
113156
113276
  updateView() {
113157
113277
  const newViewState = this.controls.paragraphLeftPosition + this.currModelState.modelValue;
@@ -113175,7 +113295,7 @@ class RulerLeftIndentDragHandle extends RulerBaseIndentControl {
113175
113295
  return false;
113176
113296
  }
113177
113297
  onMouseUp() {
113178
- const commandValue = new RulerParagraphLeftIndentsCommandValue(null, this.currModelState.modelValue, this.controls.firstLineIndent.currModelState.modelValue);
113298
+ const commandValue = new RulerParagraphLeftIndentsCommandValue(null, this.currModelState.originalModelValue, this.controls.firstLineIndent.currModelState.originalModelValue);
113179
113299
  commandValue.setIntervalsInfo(this.modelData.selection.intervalsInfo);
113180
113300
  this.modelData.commandManager.getCommand(RichEditClientCommand.RulerParagraphLeftIndents)
113181
113301
  .execute(this.modelData.commandManager.isPublicApiCall, commandValue);
@@ -113240,7 +113360,7 @@ class RulerRightIndentDragHandle extends RulerBaseIndentControl {
113240
113360
  getModelState() {
113241
113361
  const state = this.modelData.commandManager
113242
113362
  .getCommand(RichEditClientCommand.RulerParagraphRightIndent).getState();
113243
- return new RulerModelState(state.value.hanging, state.enabled);
113363
+ return new RulerModelState(state.value.hanging, state.enabled, this.modelData);
113244
113364
  }
113245
113365
  updateView() {
113246
113366
  const newViewState = this.correctRelativeLeftIndents(this.controls.ruler.pageWidth - this.controls.paragraphRightPosition + this.currModelState.modelValue);
@@ -113259,7 +113379,7 @@ class RulerRightIndentDragHandle extends RulerBaseIndentControl {
113259
113379
  canHandle(source) { return source == this.rootElement; }
113260
113380
  onMouseUp() {
113261
113381
  this.modelData.commandManager.getCommand(RichEditClientCommand.RulerParagraphRightIndent)
113262
- .execute(this.modelData.commandManager.isPublicApiCall, this.currModelState.modelValue);
113382
+ .execute(this.modelData.commandManager.isPublicApiCall, this.currModelState.originalModelValue);
113263
113383
  this.finishHandle();
113264
113384
  }
113265
113385
  lineControlSetPosition() {
@@ -113307,12 +113427,12 @@ class RulerBaseMarginControl extends RulerBase {
113307
113427
  }
113308
113428
  onMouseMove(distance, _source) {
113309
113429
  this.calculateNewModelState(distance);
113310
- this.controls.columns.marginsChanged(this.currModelState.modelValue - this.prevModelState.modelValue);
113430
+ this.controls.columns.marginsChanged(this.currModelState.originalModelValue - this.prevModelState.originalModelValue);
113311
113431
  this.updateView();
113312
113432
  this.lineControlSetPosition();
113313
113433
  }
113314
113434
  onMouseUp() {
113315
- this.modelData.commandManager.getCommand(this.commandType).execute(this.modelData.commandManager.isPublicApiCall, this.currModelState.modelValue);
113435
+ this.modelData.commandManager.getCommand(this.commandType).execute(this.modelData.commandManager.isPublicApiCall, this.currModelState.originalModelValue);
113316
113436
  this.finishHandle();
113317
113437
  }
113318
113438
  onEscPress() {
@@ -113321,7 +113441,7 @@ class RulerBaseMarginControl extends RulerBase {
113321
113441
  }
113322
113442
  getModelState() {
113323
113443
  const state = this.modelData.commandManager.getCommand(this.commandType).getState();
113324
- return new RulerModelState(state.value, state.enabled);
113444
+ return new RulerModelState(state.value, state.enabled, this.modelData);
113325
113445
  }
113326
113446
  finishHandle() {
113327
113447
  this.controls.lineControl.hide();
@@ -113454,7 +113574,7 @@ class RulerControl extends RulerBase {
113454
113574
  this.rootElement.style.paddingTop = this.controls.firstLineIndent.heightOfProtrudingPart + "px";
113455
113575
  }
113456
113576
  updateModelState() {
113457
- this.currPageWidth = unit_converter/* UnitConverter */.u.twipsToPixelsF(this.modelData.inputPosition.getMergedSectionPropertiesRaw().pageSize.width);
113577
+ this.currPageWidth = unit_converter/* UnitConverter */.u.twipsToPixelsF(this.modelData.inputPosition.getMergedSectionPropertiesRaw().pageSize.width) * this.modelData.zoomLevel;
113458
113578
  }
113459
113579
  updateView() {
113460
113580
  if (this.prevPageWidth != this.currPageWidth) {
@@ -113465,7 +113585,7 @@ class RulerControl extends RulerBase {
113465
113585
  }
113466
113586
  adjust() {
113467
113587
  const viewWidth = this.controls.canvas.clientWidth;
113468
- if (viewWidth > this.controls.ruler.pageWidth)
113588
+ if (viewWidth > this.pageWidth)
113469
113589
  this.initialMarginLeftElement = (viewWidth - this.pageWidth - RULLER_NUMBER_CORRECTION * 2) / 2;
113470
113590
  else {
113471
113591
  const paddingLeft = dom.DomUtils.pxToInt(dom.DomUtils.getCurrentStyle(this.controls.canvas).paddingLeft);
@@ -113534,6 +113654,27 @@ class RulerTabUtils {
113534
113654
  }
113535
113655
  }
113536
113656
 
113657
+ ;// CONCATENATED MODULE: ./src/common/ui/ruler/controls/tab/tab-info.ts
113658
+
113659
+
113660
+ class RulerTabInfo extends TabInfoBase {
113661
+ get position() { return this.zoomablePosition.value; }
113662
+ set position(value) { this.zoomablePosition.value = value; }
113663
+ get originalPosition() { return this.zoomablePosition.originalValue; }
113664
+ set originalPosition(value) { this.zoomablePosition.originalValue = value; }
113665
+ constructor(position, alignment, leader, deleted, isDefault, zoomLevelHolder) {
113666
+ super(alignment, leader, deleted, isDefault);
113667
+ this.zoomLevelHolder = zoomLevelHolder;
113668
+ this.zoomablePosition = new RulerValue(position, zoomLevelHolder);
113669
+ }
113670
+ clone() {
113671
+ return new RulerTabInfo(this.originalPosition, this.alignment, this.leader, this.deleted, this.isDefault, this.zoomLevelHolder);
113672
+ }
113673
+ equals(obj) {
113674
+ return super.equals(obj) && this.originalPosition == obj.originalPosition;
113675
+ }
113676
+ }
113677
+
113537
113678
  ;// CONCATENATED MODULE: ./src/common/ui/ruler/controls/tab/tab.ts
113538
113679
 
113539
113680
 
@@ -113564,7 +113705,8 @@ class RulerTabsControlState {
113564
113705
  this.enabled = enabled;
113565
113706
  }
113566
113707
  clone() {
113567
- return new RulerTabsControlState(utils_list.ListUtils.deepCopy(this.tabs), this.enabled);
113708
+ const clonedTabs = utils_list.ListUtils.deepCopy(this.tabs);
113709
+ return new RulerTabsControlState(clonedTabs, this.enabled);
113568
113710
  }
113569
113711
  }
113570
113712
  class RulerTabViewState {
@@ -113591,9 +113733,7 @@ class RulerTabsControl extends RulerMultiControl {
113591
113733
  if (this.modelData.showTabs) {
113592
113734
  const paragraph = this.modelData.selection.activeSubDocument.getParagraphByPosition(this.modelData.selection.intervalsInfo.interval.start);
113593
113735
  const tabs = utils_list.ListUtils.map(paragraph.getTabs().positions, tab => {
113594
- const newTab = tab.clone();
113595
- newTab.position = unit_converter/* UnitConverter */.u.twipsToPixelsF(tab.position);
113596
- return newTab;
113736
+ return new RulerTabInfo(unit_converter/* UnitConverter */.u.twipsToPixelsF(tab.position), tab.alignment, tab.leader, tab.deleted, tab.isDefault, this.modelData);
113597
113737
  });
113598
113738
  return new RulerTabsControlState(tabs, true);
113599
113739
  }
@@ -113643,8 +113783,8 @@ class RulerTabsControl extends RulerMultiControl {
113643
113783
  if (this.isTabMarkZone(evt) && pos >= this.minPosition() && pos <= this.maxPosition()) {
113644
113784
  this.tabAction = TabAction.Insert;
113645
113785
  this.handleControlIndex = this.currModelState.tabs.length;
113646
- const tabPosition = this.controls.chooseClosestAnchorPosition(pos, [], new min_max.MinMaxNumber(this.minPosition(), this.maxPosition()));
113647
- this.newTab = new TabInfo(tabPosition, this.controls.tabTypeBox.align, TabLeaderType.None, false, false);
113786
+ const tabPosition = this.controls.chooseClosestAnchorPosition(pos, [], new min_max.MinMaxNumber(this.minPosition(), this.maxPosition())) / this.modelData.zoomLevel;
113787
+ this.newTab = new RulerTabInfo(tabPosition, this.controls.tabTypeBox.align, TabLeaderType.None, false, false, this.modelData);
113648
113788
  this.currModelState.tabs.push(this.newTab.clone());
113649
113789
  this.updateView();
113650
113790
  this.updatePresentation();
@@ -113675,20 +113815,20 @@ class RulerTabsControl extends RulerMultiControl {
113675
113815
  else {
113676
113816
  const tab = this.currModelState.tabs[this.handleControlIndex];
113677
113817
  this.modelData.commandManager.getCommand(RichEditClientCommand.InsertTabRuler)
113678
- .execute(this.modelData.commandManager.isPublicApiCall, { position: tab.position, align: tab.alignment });
113818
+ .execute(this.modelData.commandManager.isPublicApiCall, { position: tab.originalPosition, align: tab.alignment });
113679
113819
  }
113680
113820
  break;
113681
113821
  }
113682
113822
  case TabAction.Move: {
113683
113823
  if (this.deleteTab) {
113684
113824
  this.modelData.commandManager.getCommand(RichEditClientCommand.DeleteTabRuler)
113685
- .execute(this.modelData.commandManager.isPublicApiCall, this.prevModelState.tabs[this.handleControlIndex].position);
113825
+ .execute(this.modelData.commandManager.isPublicApiCall, this.prevModelState.tabs[this.handleControlIndex].originalPosition);
113686
113826
  }
113687
113827
  else {
113688
113828
  this.modelData.commandManager.getCommand(RichEditClientCommand.MoveTabRuler)
113689
113829
  .execute(this.modelData.commandManager.isPublicApiCall, {
113690
- start: this.prevModelState.tabs[this.handleControlIndex].position,
113691
- end: this.currModelState.tabs[this.handleControlIndex].position
113830
+ start: this.prevModelState.tabs[this.handleControlIndex].originalPosition,
113831
+ end: this.currModelState.tabs[this.handleControlIndex].originalPosition
113692
113832
  });
113693
113833
  }
113694
113834
  break;
@@ -114299,8 +114439,16 @@ class TableCellIterator {
114299
114439
 
114300
114440
 
114301
114441
 
114442
+
114302
114443
  class TableColumnSeparatorStruct {
114303
- constructor() {
114444
+ get currItem() {
114445
+ return this.items[this.index];
114446
+ }
114447
+ get hasItems() {
114448
+ return this.items.length > 0;
114449
+ }
114450
+ constructor(zoomLevelHolder) {
114451
+ this.zoomLevelHolder = zoomLevelHolder;
114304
114452
  this.index = 0;
114305
114453
  this.tableIndex = 0;
114306
114454
  this.cellSpacing = 0;
@@ -114308,17 +114456,11 @@ class TableColumnSeparatorStruct {
114308
114456
  this.maxValue = -1;
114309
114457
  this.items = [];
114310
114458
  }
114311
- get currItem() {
114312
- return this.items[this.index];
114313
- }
114314
- get hasItems() {
114315
- return this.items.length > 0;
114316
- }
114317
114459
  createItem(position, marginLeft, marginRight) {
114318
- this.items.push(new TableColumnSeparatorItem(position, marginLeft, marginRight));
114460
+ this.items.push(new TableColumnSeparatorItem(position, marginLeft, marginRight, this.zoomLevelHolder));
114319
114461
  }
114320
114462
  clone() {
114321
- const result = new TableColumnSeparatorStruct();
114463
+ const result = new TableColumnSeparatorStruct(this.zoomLevelHolder);
114322
114464
  result.index = this.index;
114323
114465
  result.tableIndex = this.tableIndex;
114324
114466
  result.minValue = this.minValue;
@@ -114328,13 +114470,20 @@ class TableColumnSeparatorStruct {
114328
114470
  }
114329
114471
  }
114330
114472
  class TableColumnSeparatorItem {
114331
- constructor(position, leftMargin, rightMargin) {
114332
- this.position = position;
114473
+ get position() { return this.zoomablePosition.value; }
114474
+ ;
114475
+ get originalPosition() { return this.zoomablePosition.originalValue; }
114476
+ ;
114477
+ set position(value) { this.zoomablePosition.value = value; }
114478
+ ;
114479
+ constructor(position, leftMargin, rightMargin, zoomLevelHolder) {
114480
+ this.zoomLevelHolder = zoomLevelHolder;
114481
+ this.zoomablePosition = new RulerValue(position, this.zoomLevelHolder);
114333
114482
  this.leftMargin = leftMargin;
114334
114483
  this.rightMargin = rightMargin;
114335
114484
  }
114336
114485
  clone() {
114337
- return new TableColumnSeparatorItem(this.position, this.leftMargin, this.rightMargin);
114486
+ return new TableColumnSeparatorItem(this.originalPosition, this.leftMargin, this.rightMargin, this.zoomLevelHolder);
114338
114487
  }
114339
114488
  }
114340
114489
  class RulerTableColumnSeparatorsCommand extends CommandBase {
@@ -114374,7 +114523,7 @@ class RulerTableColumnSeparatorsCommand extends CommandBase {
114374
114523
  }
114375
114524
  return sellSpacing;
114376
114525
  };
114377
- let struct = new TableColumnSeparatorStruct();
114526
+ let struct = new TableColumnSeparatorStruct(this.control.viewManager);
114378
114527
  if (this.selection.tableInfo.extendedData.numRows) {
114379
114528
  let layoutPosition = (subDocument.isMain()
114380
114529
  ? new LayoutPositionMainSubDocumentCreator(this.control.layout, subDocument, position, DocumentLayoutDetailsLevel.Character)
@@ -114417,8 +114566,8 @@ class RulerTableColumnSeparatorsCommand extends CommandBase {
114417
114566
  struct.createItem(lastLayoutCell.right, 0, 0);
114418
114567
  }
114419
114568
  struct.tableIndex = currLogicGrid.table.index;
114420
- struct.items = struct.items.sort((a, b) => a.position - b.position);
114421
- struct.index = search.SearchUtils.normedInterpolationIndexOf(struct.items, (item) => item.position, layoutCell.x);
114569
+ struct.items = struct.items.sort((a, b) => a.originalPosition - b.originalPosition);
114570
+ struct.index = search.SearchUtils.normedInterpolationIndexOf(struct.items, (item) => item.originalPosition, layoutCell.x);
114422
114571
  if (currLayoutGrid.parentCell) {
114423
114572
  struct.minValue = currLayoutGrid.parentCell.x;
114424
114573
  struct.maxValue = currLayoutGrid.parentCell.right;
@@ -114488,7 +114637,7 @@ class RulerTablesControl extends RulerMultiControl {
114488
114637
  const state = this.modelData.commandManager.getCommand(RichEditClientCommand.RulerTableColumnSeparators).getState();
114489
114638
  return state.enabled ?
114490
114639
  new RulerTableModelState(state.value, state.value.tableIndex, state.enabled) :
114491
- new RulerTableModelState(new TableColumnSeparatorStruct(), -1, false);
114640
+ new RulerTableModelState(new TableColumnSeparatorStruct(this.modelData), -1, false);
114492
114641
  }
114493
114642
  updateView() {
114494
114643
  const offset = this.controls.leftMargin.currModelState.modelValue + this.controls.columns.currModelState.activeColumn.leftPos;
@@ -114520,9 +114669,10 @@ class RulerTablesControl extends RulerMultiControl {
114520
114669
  });
114521
114670
  }
114522
114671
  onMouseUp() {
114523
- const oldPos = this.prevModelState.columnSeparators.items[this.handleControlIndex].position;
114524
- const newPos = this.currModelState.columnSeparators.items[this.handleControlIndex].position;
114525
- const param = new RulerChangeTableColumnWidthCommandParameters(this.currModelState.tableIndex, newPos - oldPos, null, oldPos, true);
114672
+ const oldPos = this.prevModelState.columnSeparators.items[this.handleControlIndex].originalPosition;
114673
+ const newPos = this.currModelState.columnSeparators.items[this.handleControlIndex].originalPosition;
114674
+ const diffPos = newPos - oldPos;
114675
+ const param = new RulerChangeTableColumnWidthCommandParameters(this.currModelState.tableIndex, diffPos, null, oldPos, true);
114526
114676
  this.modelData.commandManager.getCommand(RichEditClientCommand.RulerChangeTableColumnWidth)
114527
114677
  .execute(this.modelData.commandManager.isPublicApiCall, param);
114528
114678
  this.finishHandle();
@@ -114848,13 +114998,14 @@ class RulerControls {
114848
114998
  this.mouseEventsManager = new RulerMouseEventsManager();
114849
114999
  this.viewElementScrollManager = new RulerViewElementScrollManager();
114850
115000
  this.canvas = canvas;
114851
- const divisionInfo = DivisionInfo.create(modelData.unitType);
114852
- const maxPageWidth = unit_converter/* UnitConverter */.u.twipsToPixelsF(PaperSizeConverter.calculatePaperSize(PaperKind.PrcEnvelopeNumber10Rotated).width);
114853
- this.moveStepSize = modelData.unitType == RichEditUnit.Inch ? divisionInfo.stepSize / 2 : divisionInfo.stepSize;
115001
+ this.modelData = modelData;
115002
+ this.divisionInfo = DivisionInfo.create(modelData.unitType, this.modelData.innerClientProperties.viewsSettings);
115003
+ this.calculateMoveStepSize();
115004
+ const maxPageWidth = unit_converter/* UnitConverter */.u.twipsToPixelsF(PaperSizeConverter.calculatePaperSize(PaperKind.PrcEnvelopeNumber10Rotated).width) * this.modelData.zoomLevel;
114854
115005
  this.wrapper = new RulerWrapper(modelData, this);
114855
115006
  this.ruler = new RulerControl(modelData, this);
114856
115007
  this.tabTypeBox = new RulerTabTypeControl(modelData, this);
114857
- this.divisions = new RulerDivisionsControl(modelData, this, divisionInfo, maxPageWidth);
115008
+ this.divisions = new RulerDivisionsControl(modelData, this, this.divisionInfo, maxPageWidth);
114858
115009
  this.leftMargin = new RulerLeftMarginDragHandle(modelData, this, maxPageWidth);
114859
115010
  this.rightMargin = new RulerRightMarginDragHandle(modelData, this, maxPageWidth);
114860
115011
  this.leftIndent = new RulerLeftIndentDragHandle(modelData, this);
@@ -114870,6 +115021,12 @@ class RulerControls {
114870
115021
  this.mouseEventsManager.addListener(this.mouseHandler);
114871
115022
  this.viewElementScrollManager.addListener(this.ruler, this.canvas);
114872
115023
  }
115024
+ calculateMoveStepSize() {
115025
+ this.moveStepSize = this.modelData.unitType == RichEditUnit.Inch ? this.divisionInfo.stepSize / 2 : this.divisionInfo.stepSize;
115026
+ }
115027
+ updateZoomLevel() {
115028
+ this.divisionInfo.updateZoomLevel();
115029
+ }
114873
115030
  dispose() {
114874
115031
  this.lineControl.dispose();
114875
115032
  this.wrapper.dispose();
@@ -114888,8 +115045,10 @@ class RulerControls {
114888
115045
  this.viewElementScrollManager.dispose();
114889
115046
  }
114890
115047
  update() {
115048
+ this.updateZoomLevel();
114891
115049
  this.updateModelState();
114892
115050
  this.updateView();
115051
+ this.calculateMoveStepSize();
114893
115052
  }
114894
115053
  updateModelState() {
114895
115054
  this.ruler.updateModelState();
@@ -114950,6 +115109,7 @@ class RulerModelData {
114950
115109
  get isReadOnly() { return this.core.readOnly != ReadOnlyMode.None; }
114951
115110
  get unitType() { return this.core.uiUnitConverter.getUnits(); }
114952
115111
  get selection() { return this.core.selection; }
115112
+ get zoomLevel() { return this.core.viewManager.zoomLevel; }
114953
115113
  constructor(core, settings) {
114954
115114
  this.core = core;
114955
115115
  this.settings = this.fixSettings(settings);
@@ -115403,7 +115563,6 @@ class SearchManager {
115403
115563
 
115404
115564
 
115405
115565
 
115406
-
115407
115566
 
115408
115567
 
115409
115568
  class RichEditCore {
@@ -115452,9 +115611,8 @@ class RichEditCore {
115452
115611
  this.searchManager.raiseSearchReset();
115453
115612
  this.clientSideEvents.raiseDocumentChanged();
115454
115613
  });
115455
- this.simpleViewCanvasSizeManager = new SimpleViewCanvasSizeManager(this.viewManager.canvasManager, this);
115456
115614
  if (this.innerClientProperties.viewsSettings.isSimpleView)
115457
- this.simpleViewCanvasSizeManager.setViewMode(true);
115615
+ this.viewManager.canvasManager.simpleViewCanvasSizeManager.setViewMode(true);
115458
115616
  if ((0,utils_fonts/* fontWebApiAvailable */.lX)())
115459
115617
  (0,utils_fonts/* afterFontsLoaded */.mw)(() => {
115460
115618
  this.invalidateLayoutAfterFontsLoaded();
@@ -115544,7 +115702,6 @@ class RichEditCore {
115544
115702
  this.viewManager.dispose();
115545
115703
  this.layoutFormatterManager.dispose();
115546
115704
  this.eventManager.dispose();
115547
- this.simpleViewCanvasSizeManager.dispose();
115548
115705
  this.loadingPanelManager.dispose();
115549
115706
  this.commandManager.dispose();
115550
115707
  this.spellChecker.dispose();
@@ -115577,7 +115734,6 @@ class RichEditCore {
115577
115734
  this.scrollFormatter = null;
115578
115735
  this.boxVisualizerManager = null;
115579
115736
  this.globalEventDispatcher = null;
115580
- this.simpleViewCanvasSizeManager = null;
115581
115737
  this.selectionModelChangesListener = null;
115582
115738
  this.loadingPanelManager = null;
115583
115739
  this.inputPositionModelChangesListener = null;
@@ -115712,7 +115868,7 @@ class RichEditCore {
115712
115868
  onViewTypeChanged() {
115713
115869
  this.viewManager.renderer.onViewTypeChanged();
115714
115870
  this.horizontalRulerControl.onViewTypeChanged();
115715
- this.simpleViewCanvasSizeManager.setViewMode(this.innerClientProperties.viewsSettings.isSimpleView);
115871
+ this.viewManager.canvasManager.simpleViewCanvasSizeManager.setViewMode(this.innerClientProperties.viewsSettings.isSimpleView);
115716
115872
  }
115717
115873
  getModifiedState() {
115718
115874
  if (this.lastSavedHistoryItemId != this.modelManager.history.getCurrentItemId())
@@ -116527,6 +116683,9 @@ class Constants {
116527
116683
  static getFontSizesList() {
116528
116684
  return [8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48, 72];
116529
116685
  }
116686
+ static getZoomLevelsList() {
116687
+ return [0.5, 0.75, 1.0, 1.25, 1.5, 2.0];
116688
+ }
116530
116689
  static getParagraphStylesList() {
116531
116690
  const styles = Constants.getLocalizedDefaultPresetStyles();
116532
116691
  return styles['1'].filter(f => f['4'] == 0).map(f => {
@@ -117441,6 +117600,8 @@ var ViewTabCommandId;
117441
117600
  ViewTabCommandId[ViewTabCommandId["SwitchToPrintLayout"] = 406] = "SwitchToPrintLayout";
117442
117601
  ViewTabCommandId[ViewTabCommandId["ToggleShowHorizontalRuler"] = 94] = "ToggleShowHorizontalRuler";
117443
117602
  ViewTabCommandId[ViewTabCommandId["ToggleFullScreen"] = 98] = "ToggleFullScreen";
117603
+ ViewTabCommandId[ViewTabCommandId["ChangeZoomLevel"] = 460] = "ChangeZoomLevel";
117604
+ ViewTabCommandId[ViewTabCommandId["ToggleAllowZoom"] = 461] = "ToggleAllowZoom";
117444
117605
  })(ViewTabCommandId || (ViewTabCommandId = {}));
117445
117606
  var HeaderAndFooterTabCommandId;
117446
117607
  (function (HeaderAndFooterTabCommandId) {
@@ -121532,6 +121693,7 @@ class RibbonItemsData {
121532
121693
  const fontSizes = Constants.getFontSizesList().map(s => {
121533
121694
  return { text: s.toString(), value: s };
121534
121695
  });
121696
+ const zoomLevels = Constants.getZoomLevelsList();
121535
121697
  function getTrimmedMessage(id) {
121536
121698
  const message = (0,external_DevExpress_localization_namespaceObject.formatMessage)(id);
121537
121699
  const trimmedFromEnd = utils_string.StringUtils.trimEnd(message, ['\\.']);
@@ -121792,6 +121954,16 @@ class RibbonItemsData {
121792
121954
  { type: 'Button', text: (0,external_DevExpress_localization_namespaceObject.formatMessage)('XtraRichEditStringId.MenuCmd_SwitchToPrintLayoutView'), icon: 'dxre-icon-PrintLayoutView', alwaysShowText: true, name: RichEditClientCommand.SwitchToPrintLayoutView, isToggleMode: true },
121793
121955
  { type: 'Button', text: (0,external_DevExpress_localization_namespaceObject.formatMessage)('XtraRichEditStringId.MenuCmd_ToggleShowHorizontalRuler'), icon: 'dxre-icon-RulerHorizontal', alwaysShowText: true, name: RichEditClientCommand.ToggleShowHorizontalRuler, isToggleMode: true, beginGroup: true },
121794
121956
  { type: 'Button', text: (0,external_DevExpress_localization_namespaceObject.formatMessage)('ASPxRichEditStringId.MenuCmd_ToggleFullScreen'), icon: 'dxre-icon-FullScreen', alwaysShowText: true, name: RichEditClientCommand.FullScreen, isToggleMode: true, beginGroup: true },
121957
+ { type: 'SelectBox', dataSource: zoomLevels, width: 90, name: RichEditClientCommand.ChangeZoomLevel, beginGroup: true, acceptCustomValue: true, valueExpr: "this",
121958
+ onCustomItemCreating: function (e) {
121959
+ const parsed = parseFloat(e.text);
121960
+ e.customItem = isNaN(parsed) ? e.text : parsed / 100;
121961
+ },
121962
+ displayExpr: function (item) {
121963
+ const parsed = parseFloat(item);
121964
+ return isNaN(parsed) ? item : Math.round(parsed * 100) + '%';
121965
+ }
121966
+ },
121795
121967
  ];
121796
121968
  return [
121797
121969
  { title: (0,external_DevExpress_localization_namespaceObject.formatMessage)('ASPxRichEditStringId.PageFile'), items: fileToolBarItems, id: RibbonTabType.File },
@@ -122503,6 +122675,44 @@ function createInnerItems(items) {
122503
122675
  }
122504
122676
  }
122505
122677
 
122678
+ ;// CONCATENATED MODULE: ./src/client/utils/focus-helper.ts
122679
+ class FocusHelper {
122680
+ static preventFocusOnClick(element) {
122681
+ return new FocusBlocker(element);
122682
+ }
122683
+ }
122684
+ class FocusBlocker {
122685
+ constructor(target) {
122686
+ this.target = target;
122687
+ this.onPointerDownBinded = this.onPointerDown.bind(this);
122688
+ this.addEventListeners(target);
122689
+ }
122690
+ addEventListeners(element) {
122691
+ element.addEventListener("pointerdown", this.onPointerDownBinded);
122692
+ }
122693
+ removeEventListeners(element) {
122694
+ element.removeEventListener("pointerdown", this.onPointerDownBinded);
122695
+ }
122696
+ onPointerDown(event) {
122697
+ for (const element of event.composedPath()) {
122698
+ if (!(element instanceof HTMLElement))
122699
+ continue;
122700
+ if (element === this.target) {
122701
+ event.preventDefault();
122702
+ break;
122703
+ }
122704
+ if (!this.target.contains(element) || element.tabIndex > -1)
122705
+ break;
122706
+ }
122707
+ }
122708
+ dispose() {
122709
+ if (this.target) {
122710
+ this.removeEventListeners(this.target);
122711
+ this.target = null;
122712
+ }
122713
+ }
122714
+ }
122715
+
122506
122716
  ;// CONCATENATED MODULE: ./src/client/bars/ribbon.ts
122507
122717
 
122508
122718
 
@@ -122512,6 +122722,7 @@ function createInnerItems(items) {
122512
122722
 
122513
122723
 
122514
122724
 
122725
+
122515
122726
  class ClientRibbonBar extends RibbonBarBase {
122516
122727
  constructor(ownerControl, ownerElement, apiRibbon, fonts) {
122517
122728
  var _a;
@@ -122520,6 +122731,7 @@ class ClientRibbonBar extends RibbonBarBase {
122520
122731
  this.ownerElement = ownerElement;
122521
122732
  this.init(apiRibbon, fonts);
122522
122733
  this.createControl((_a = apiRibbon.activeTabIndex) !== null && _a !== void 0 ? _a : 1);
122734
+ this.focusHandler = FocusHelper.preventFocusOnClick(this.ribbon.element);
122523
122735
  }
122524
122736
  updateContextItem(_commandKey) {
122525
122737
  }
@@ -122545,13 +122757,13 @@ class ClientRibbonBar extends RibbonBarBase {
122545
122757
  }
122546
122758
  dispose() {
122547
122759
  this.ribbon.dispose();
122760
+ this.focusHandler.dispose();
122548
122761
  }
122549
122762
  checkActivateHeaderFooter(_selection) {
122550
122763
  return false;
122551
122764
  }
122552
122765
  createControl(activeTabIndex) {
122553
122766
  const element = document.createElement('div');
122554
- element.tabIndex = 0;
122555
122767
  const firstChild = this.ownerElement.firstChild;
122556
122768
  if (firstChild)
122557
122769
  this.ownerElement.insertBefore(element, firstChild);
@@ -129509,7 +129721,6 @@ class LinkHeaderFooterToPreviousCommand extends HeaderFooterCommandBase {
129509
129721
 
129510
129722
 
129511
129723
 
129512
-
129513
129724
  class ApplyStyleCommand extends CommandBase {
129514
129725
  getState() {
129515
129726
  var interval = this.selection.lastSelectedInterval.clone();
@@ -129546,16 +129757,19 @@ class ApplyStyleCommand extends CommandBase {
129546
129757
  getStyleName(style) {
129547
129758
  return style.styleName;
129548
129759
  }
129760
+ DEPRECATEDConvertOptionsParameter(parameter) {
129761
+ return typeof parameter === 'string' ? { styleName: parameter } : parameter;
129762
+ }
129549
129763
  executeCore(state, options) {
129550
129764
  const parameter = options.param;
129551
- if (utils_string.StringUtils.isNullOrEmpty(parameter))
129765
+ if (utils_string.StringUtils.isNullOrEmpty(parameter.styleName))
129552
129766
  return false;
129553
- let interval = state.interval.clone();
129767
+ const subDocumentInterval = new SubDocumentInterval(options.subDocument, state.interval.clone());
129554
129768
  let executed = true;
129555
129769
  let isPresetStyle = false;
129556
129770
  this.history.beginTransaction();
129557
- if (StylesManager.isParagraphStyle(parameter) && state.paragraphStyleChangeEnabled) {
129558
- const styleName = StylesManager.getStyleNameWithoutPrefix(parameter);
129771
+ if (StylesManager.isParagraphStyle(parameter.styleName) && state.paragraphStyleChangeEnabled) {
129772
+ const styleName = StylesManager.getStyleNameWithoutPrefix(parameter.styleName);
129559
129773
  let paragraphStyle = this.control.modelManager.model.getParagraphStyleByName(styleName);
129560
129774
  if (!paragraphStyle) {
129561
129775
  const presetStyle = StylesManager.getPresetParagraphStyleByName(styleName);
@@ -129564,12 +129778,12 @@ class ApplyStyleCommand extends CommandBase {
129564
129778
  paragraphStyle = StylesManager.getPresetParagraphStyleByName(styleName).clone();
129565
129779
  isPresetStyle = true;
129566
129780
  }
129567
- this.applyParagraphStyle(interval, paragraphStyle, isPresetStyle, options.subDocument);
129781
+ this.applyParagraphStyle(subDocumentInterval, paragraphStyle, isPresetStyle, parameter.keepDirectFormatting);
129568
129782
  }
129569
- else if (!StylesManager.isParagraphStyle(parameter) && state.characterStyleChangeEnabled) {
129570
- const styleName = StylesManager.getStyleNameWithoutPrefix(parameter);
129571
- if (interval.length == 0)
129572
- interval = options.subDocument.getWholeWordInterval(interval.start);
129783
+ else if (!StylesManager.isParagraphStyle(parameter.styleName) && state.characterStyleChangeEnabled) {
129784
+ const styleName = StylesManager.getStyleNameWithoutPrefix(parameter.styleName);
129785
+ if (subDocumentInterval.interval.length == 0)
129786
+ subDocumentInterval.interval = options.subDocument.getWholeWordInterval(subDocumentInterval.interval.start);
129573
129787
  let characterStyle = this.control.modelManager.model.getCharacterStyleByName(styleName);
129574
129788
  if (!characterStyle) {
129575
129789
  const presetStyle = StylesManager.getPresetCharacterStyleByName(styleName);
@@ -129578,9 +129792,9 @@ class ApplyStyleCommand extends CommandBase {
129578
129792
  characterStyle = presetStyle.clone();
129579
129793
  isPresetStyle = true;
129580
129794
  }
129581
- if (interval.length == 0) {
129795
+ if (subDocumentInterval.interval.length == 0) {
129582
129796
  if (isPresetStyle) {
129583
- let fontInfo = characterStyle.maskedCharacterProperties.fontInfo;
129797
+ const fontInfo = characterStyle.maskedCharacterProperties.fontInfo;
129584
129798
  if (fontInfo && fontInfo.measurer === undefined)
129585
129799
  characterStyle.maskedCharacterProperties.fontInfo = this.control.modelManager.model.cache.fontInfoCache.getItemByName(fontInfo.name);
129586
129800
  }
@@ -129588,50 +129802,56 @@ class ApplyStyleCommand extends CommandBase {
129588
129802
  executed = false;
129589
129803
  }
129590
129804
  else
129591
- this.applyCharacterStyle(interval, characterStyle, isPresetStyle, options.subDocument);
129805
+ this.applyCharacterStyle(subDocumentInterval, characterStyle, isPresetStyle);
129592
129806
  }
129593
129807
  this.history.endTransaction();
129594
129808
  return executed;
129595
129809
  }
129596
- applyCharacterStyle(interval, style, isPresetStyle, subDocument) {
129810
+ applyCharacterStyle(subDocumentInterval, style, isPresetStyle) {
129597
129811
  if (ControlOptions.isEnabled(this.control.modelManager.richOptions.control.characterStyle)) {
129598
- this.modelManipulator.style.applyCharacterStyle(new SubDocumentInterval(subDocument, interval), isPresetStyle ? this.control.modelManager.model.stylesManager.addCharacterStyle(style) : style, false);
129812
+ const characterStyle = isPresetStyle ? this.control.modelManager.model.stylesManager.addCharacterStyle(style) : style;
129813
+ this.modelManipulator.style.applyCharacterStyle(subDocumentInterval, characterStyle, false);
129599
129814
  }
129600
129815
  }
129601
- applyParagraphStyle(interval, style, isPresetStyle, subDocument) {
129602
- var count = this.calculateAffectedParagraphCount(interval, subDocument);
129816
+ applyParagraphStyle(subDocumentInterval, style, isPresetStyle, keepDirectFormatting = false) {
129817
+ const count = this.calculateAffectedParagraphCount(subDocumentInterval);
129603
129818
  if (count > 0 && ControlOptions.isEnabled(this.control.modelManager.richOptions.control.paragraphStyle)) {
129604
- var paragraphIndex = search.SearchUtils.normedInterpolationIndexOf(subDocument.paragraphs, p => p.startLogPosition.value, interval.start);
129605
- for (var i = 0; i < count; i++) {
129606
- var paragraph = subDocument.paragraphs[paragraphIndex + i];
129607
- var paragraphInterval = new fixed.FixedInterval(paragraph.startLogPosition.value, paragraph.length);
129608
- var modelManipulator = this.modelManipulator;
129609
- this.history.addAndRedo(new ApplyParagraphStyleHistoryItem(modelManipulator, new SubDocumentInterval(subDocument, paragraphInterval), isPresetStyle ? modelManipulator.model.stylesManager.addParagraphStyle(style) : style));
129610
- this.history.addAndRedo(new ParagraphUseValueHistoryItem(modelManipulator, new SubDocumentInterval(subDocument, paragraphInterval), 0));
129611
- this.history.addAndRedo(new FontUseValueHistoryItem(modelManipulator, new SubDocumentInterval(subDocument, paragraphInterval), 0));
129612
- this.history.addAndRedo(new AddParagraphToListHistoryItem(this.modelManipulator, subDocument, paragraphIndex, NumberingList.NumberingListNotSettedIndex, -1));
129819
+ const { interval, subDocument } = subDocumentInterval;
129820
+ const paragraphs = subDocument.paragraphs;
129821
+ const paragraphIndex = search.SearchUtils.normedInterpolationIndexOf(paragraphs, p => p.startLogPosition.value, interval.start);
129822
+ for (let i = 0; i < count; i++) {
129823
+ const paragraph = paragraphs[paragraphIndex + i];
129824
+ const modelManipulator = this.modelManipulator;
129825
+ const paragraphSubDocumentInterval = new SubDocumentInterval(subDocument, paragraph.interval);
129826
+ style = isPresetStyle ? modelManipulator.model.stylesManager.addParagraphStyle(style) : style;
129827
+ this.history.addAndRedo(new ApplyParagraphStyleHistoryItem(modelManipulator, paragraphSubDocumentInterval, style));
129828
+ this.history.addAndRedo(new ParagraphUseValueHistoryItem(modelManipulator, paragraphSubDocumentInterval, 0));
129829
+ if (!keepDirectFormatting)
129830
+ this.history.addAndRedo(new FontUseValueHistoryItem(modelManipulator, paragraphSubDocumentInterval, 0));
129831
+ this.history.addAndRedo(new AddParagraphToListHistoryItem(modelManipulator, subDocument, paragraphIndex, NumberingList.NumberingListNotSettedIndex, -1));
129613
129832
  }
129614
129833
  }
129615
129834
  else
129616
- this.applyParagraphLinkedStyle(interval, style, isPresetStyle, subDocument);
129835
+ this.applyParagraphLinkedStyle(subDocumentInterval, style, isPresetStyle);
129617
129836
  }
129618
- applyParagraphLinkedStyle(interval, style, isPresetStyle, subDocument) {
129837
+ applyParagraphLinkedStyle(subDocumentInterval, style, isPresetStyle) {
129619
129838
  if (ControlOptions.isEnabled(this.control.modelManager.richOptions.control.characterStyle)) {
129620
129839
  if (!style.linkedStyle)
129621
- this.createCharacterStyle(style);
129622
- this.applyCharacterStyle(interval, style.linkedStyle, isPresetStyle, subDocument);
129840
+ this.addLinkedCharacterStyle(style);
129841
+ this.applyCharacterStyle(subDocumentInterval, style.linkedStyle, isPresetStyle);
129623
129842
  }
129624
129843
  }
129625
- createCharacterStyle(paragraphStyle) {
129626
- var style = new CharacterStyle(paragraphStyle.styleName + " Char", paragraphStyle.localizedName + " Char", false, false, false, false, paragraphStyle.maskedCharacterProperties);
129844
+ addLinkedCharacterStyle(paragraphStyle) {
129845
+ const style = new CharacterStyle(paragraphStyle.styleName + " Char", paragraphStyle.localizedName + " Char", false, false, false, false, paragraphStyle.maskedCharacterProperties);
129627
129846
  this.history.addAndRedo(new CreateStyleLinkHistoryItem(this.modelManipulator, style, paragraphStyle));
129628
129847
  }
129629
- calculateAffectedParagraphCount(interval, subDocument) {
129630
- var paragraphs = subDocument.getParagraphsByInterval(interval);
129848
+ calculateAffectedParagraphCount(subDocumentInterval) {
129849
+ const { interval, subDocument } = subDocumentInterval;
129850
+ const paragraphs = subDocument.getParagraphsByInterval(interval);
129631
129851
  if (paragraphs.length > 1)
129632
129852
  return paragraphs.length;
129633
- var paragraph = paragraphs[0];
129634
- var lastParagraphCharSelected = interval.length >= paragraph.length - 1;
129853
+ const paragraph = paragraphs[0];
129854
+ const lastParagraphCharSelected = interval.length >= paragraph.length - 1;
129635
129855
  if (interval.start === paragraph.startLogPosition.value && lastParagraphCharSelected || interval.length === 0)
129636
129856
  return 1;
129637
129857
  return 0;
@@ -129647,6 +129867,57 @@ class ApplyStyleCommand extends CommandBase {
129647
129867
  }
129648
129868
  }
129649
129869
 
129870
+ ;// CONCATENATED MODULE: ./src/common/commands/layout/toggle-allow-zoom-command.ts
129871
+
129872
+
129873
+ class ToggleAllowZoomCommand extends CommandBase {
129874
+ getState() {
129875
+ return new SimpleCommandState(this.isEnabled(), this.control.viewManager.allowZoom);
129876
+ }
129877
+ executeCore(_state, options) {
129878
+ const allowZoom = this.control.viewManager.allowZoom;
129879
+ if (options.param === allowZoom)
129880
+ return false;
129881
+ this.control.viewManager.allowZoom = !allowZoom;
129882
+ return true;
129883
+ }
129884
+ isEnabledInReadOnlyMode() {
129885
+ return true;
129886
+ }
129887
+ }
129888
+
129889
+ ;// CONCATENATED MODULE: ./src/common/commands/layout/change-zoom-level-command.ts
129890
+
129891
+
129892
+
129893
+
129894
+ class ChangeZoomLevelCommand extends CommandBase {
129895
+ getState() {
129896
+ const state = new SimpleCommandState(this.isEnabled(), this.control.viewManager.zoomLevel);
129897
+ state.visible = this.control.viewManager.allowZoom;
129898
+ return state;
129899
+ }
129900
+ executeCore(_state, options) {
129901
+ if (options.param == this.control.viewManager.zoomLevel)
129902
+ return false;
129903
+ this.control.viewManager.zoomLevel = options.param;
129904
+ return true;
129905
+ }
129906
+ isEnabledInReadOnlyMode() {
129907
+ return true;
129908
+ }
129909
+ isEnabled() {
129910
+ return this.control.viewManager.allowZoom;
129911
+ }
129912
+ DEPRECATEDConvertOptionsParameter(parameter) {
129913
+ const res = typeof parameter == "string" ? parseFloat(parameter) : parameter;
129914
+ return this.isZoomLevelValueCorrect(res) ? res : this.control.viewManager.zoomLevel;
129915
+ }
129916
+ isZoomLevelValueCorrect(size) {
129917
+ return (0,common.isNumber)(size) && !isNaN(size) && size >= RichUtils.minZoomLevel && size <= RichUtils.maxZoomLevel;
129918
+ }
129919
+ }
129920
+
129650
129921
  ;// CONCATENATED MODULE: ./src/common/commands/layout/clear-formatting-command.ts
129651
129922
 
129652
129923
 
@@ -136127,24 +136398,30 @@ class RemoveNextWordCommand extends RemoveWordCommandBase {
136127
136398
 
136128
136399
 
136129
136400
  class SetParagraphLevelCommandBase extends CommandBase {
136401
+ get commandManager() { return this.control.commandManager; }
136402
+ get modelManager() { return this.control.modelManager; }
136130
136403
  isEnabled() {
136131
- return super.isEnabled() && ControlOptions.isEnabled(this.control.modelManager.richOptions.control.paragraphFormatting);
136404
+ return super.isEnabled() && ControlOptions.isEnabled(this.modelManager.richOptions.control.paragraphFormatting);
136132
136405
  }
136133
136406
  getState() {
136134
136407
  const state = new SimpleCommandState(this.isEnabled());
136135
- state.value = this.control.commandManager.getCommand(RichEditClientCommand.ChangeHeadingLevel).getState().value == this.getLevel(null);
136408
+ state.value = this.commandManager.getCommand(RichEditClientCommand.ChangeHeadingLevel).getState().value == this.getLevel(null);
136136
136409
  return state;
136137
136410
  }
136138
136411
  executeCore(_state, options) {
136139
136412
  const level = this.getLevel(options.param);
136140
136413
  const styleName = level > 0 ? `${ParagraphStyle.headingStyleName} ${level}` : ParagraphStyle.normalStyleName;
136141
- let paragraphStyle = this.control.modelManager.model.getParagraphStyleByName(styleName);
136414
+ let paragraphStyle = this.modelManager.model.getParagraphStyleByName(styleName);
136142
136415
  if (!paragraphStyle)
136143
136416
  paragraphStyle = StylesManager.getPresetParagraphStyleByName(styleName);
136144
- if (paragraphStyle)
136145
- this.control.commandManager.getCommand(RichEditClientCommand.ChangeStyle).execute(this.control.commandManager.isPublicApiCall, new CommandSimpleOptions(this.control, StylesManager.paragraphPrefix + styleName));
136146
- else
136147
- this.control.commandManager.getCommand(RichEditClientCommand.ChangeHeadingLevel).execute(this.control.commandManager.isPublicApiCall, new CommandSimpleOptions(this.control, level));
136417
+ if (paragraphStyle) {
136418
+ const commandOptions = new CommandSimpleOptions(this.control, { styleName: StylesManager.paragraphPrefix + styleName, keepDirectFormatting: true });
136419
+ this.commandManager.getCommand(RichEditClientCommand.ChangeStyle).execute(this.commandManager.isPublicApiCall, commandOptions);
136420
+ }
136421
+ else {
136422
+ const commandOptions = new CommandSimpleOptions(this.control, level);
136423
+ this.commandManager.getCommand(RichEditClientCommand.ChangeHeadingLevel).execute(this.commandManager.isPublicApiCall, commandOptions);
136424
+ }
136148
136425
  return true;
136149
136426
  }
136150
136427
  getRelatedCommands() {
@@ -136399,6 +136676,8 @@ class UndoCommand extends CommandBase {
136399
136676
 
136400
136677
 
136401
136678
 
136679
+
136680
+
136402
136681
 
136403
136682
 
136404
136683
 
@@ -136784,6 +137063,8 @@ class CommandManager {
136784
137063
  this.createCommand(control, RichEditClientCommand.ChangeViewType, ChangeViewTypeCommand);
136785
137064
  this.createCommand(control, RichEditClientCommand.SwitchToSimpleView, SwitchToSimpleViewCommand);
136786
137065
  this.createCommand(control, RichEditClientCommand.SwitchToPrintLayoutView, SwitchToPrintLayoutViewCommand);
137066
+ this.createCommand(control, RichEditClientCommand.ChangeZoomLevel, ChangeZoomLevelCommand);
137067
+ this.createCommand(control, RichEditClientCommand.ToggleAllowZoom, ToggleAllowZoomCommand);
136787
137068
  this.createCommand(control, RichEditClientCommand.ShowErrorLoadPictureMessage, ShowLoadPictureErrorDialogCommand);
136788
137069
  this.assingCommand(RichEditClientCommand.PrintDocumentOnClient, new PrintDocumentOnClient(control, printNonce));
136789
137070
  }
@@ -140811,8 +141092,8 @@ class DialogManager {
140811
141092
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/utils/m_type.js
140812
141093
  /**
140813
141094
  * DevExtreme (esm/__internal/core/utils/m_type.js)
140814
- * Version: 24.2.6
140815
- * Build date: Mon Mar 17 2025
141095
+ * Version: 25.1.1-alpha
141096
+ * Build date: Wed Apr 02 2025
140816
141097
  *
140817
141098
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
140818
141099
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -140914,8 +141195,8 @@ const isEvent = function(object) {
140914
141195
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/core/utils/type.js
140915
141196
  /**
140916
141197
  * DevExtreme (esm/core/utils/type.js)
140917
- * Version: 24.2.6
140918
- * Build date: Mon Mar 17 2025
141198
+ * Version: 25.1.1-alpha
141199
+ * Build date: Wed Apr 02 2025
140919
141200
  *
140920
141201
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
140921
141202
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -140925,8 +141206,8 @@ const isEvent = function(object) {
140925
141206
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/utils/m_extend.js
140926
141207
  /**
140927
141208
  * DevExtreme (esm/__internal/core/utils/m_extend.js)
140928
- * Version: 24.2.6
140929
- * Build date: Mon Mar 17 2025
141209
+ * Version: 25.1.1-alpha
141210
+ * Build date: Wed Apr 02 2025
140930
141211
  *
140931
141212
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
140932
141213
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -140984,8 +141265,8 @@ const extend = function(target) {
140984
141265
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/core/utils/extend.js
140985
141266
  /**
140986
141267
  * DevExtreme (esm/core/utils/extend.js)
140987
- * Version: 24.2.6
140988
- * Build date: Mon Mar 17 2025
141268
+ * Version: 25.1.1-alpha
141269
+ * Build date: Wed Apr 02 2025
140989
141270
  *
140990
141271
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
140991
141272
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -140995,8 +141276,8 @@ const extend = function(target) {
140995
141276
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/utils/m_string.js
140996
141277
  /**
140997
141278
  * DevExtreme (esm/__internal/core/utils/m_string.js)
140998
- * Version: 24.2.6
140999
- * Build date: Mon Mar 17 2025
141279
+ * Version: 25.1.1-alpha
141280
+ * Build date: Wed Apr 02 2025
141000
141281
  *
141001
141282
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
141002
141283
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -141071,8 +141352,8 @@ const isEmpty = function() {
141071
141352
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/core/utils/string.js
141072
141353
  /**
141073
141354
  * DevExtreme (esm/core/utils/string.js)
141074
- * Version: 24.2.6
141075
- * Build date: Mon Mar 17 2025
141355
+ * Version: 25.1.1-alpha
141356
+ * Build date: Wed Apr 02 2025
141076
141357
  *
141077
141358
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
141078
141359
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -141082,20 +141363,20 @@ const isEmpty = function() {
141082
141363
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/core/version.js
141083
141364
  /**
141084
141365
  * DevExtreme (esm/core/version.js)
141085
- * Version: 24.2.6
141086
- * Build date: Mon Mar 17 2025
141366
+ * Version: 25.1.1-alpha
141367
+ * Build date: Wed Apr 02 2025
141087
141368
  *
141088
141369
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
141089
141370
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
141090
141371
  */
141091
- const version = "24.2.6";
141092
- const fullVersion = "24.2.6";
141372
+ const version = "25.1.1";
141373
+ const fullVersion = "25.1.1";
141093
141374
 
141094
141375
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/utils/m_console.js
141095
141376
  /**
141096
141377
  * DevExtreme (esm/__internal/core/utils/m_console.js)
141097
- * Version: 24.2.6
141098
- * Build date: Mon Mar 17 2025
141378
+ * Version: 25.1.1-alpha
141379
+ * Build date: Wed Apr 02 2025
141099
141380
  *
141100
141381
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
141101
141382
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -141135,8 +141416,8 @@ const debug = function() {
141135
141416
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/utils/m_error.js
141136
141417
  /**
141137
141418
  * DevExtreme (esm/__internal/core/utils/m_error.js)
141138
- * Version: 24.2.6
141139
- * Build date: Mon Mar 17 2025
141419
+ * Version: 25.1.1-alpha
141420
+ * Build date: Wed Apr 02 2025
141140
141421
  *
141141
141422
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
141142
141423
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -141207,8 +141488,8 @@ function error(baseErrors, errors) {
141207
141488
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/core/utils/error.js
141208
141489
  /**
141209
141490
  * DevExtreme (esm/core/utils/error.js)
141210
- * Version: 24.2.6
141211
- * Build date: Mon Mar 17 2025
141491
+ * Version: 25.1.1-alpha
141492
+ * Build date: Wed Apr 02 2025
141212
141493
  *
141213
141494
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
141214
141495
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -141219,8 +141500,8 @@ function error(baseErrors, errors) {
141219
141500
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/m_errors.js
141220
141501
  /**
141221
141502
  * DevExtreme (esm/__internal/core/m_errors.js)
141222
- * Version: 24.2.6
141223
- * Build date: Mon Mar 17 2025
141503
+ * Version: 25.1.1-alpha
141504
+ * Build date: Wed Apr 02 2025
141224
141505
  *
141225
141506
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
141226
141507
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -141286,8 +141567,8 @@ function error(baseErrors, errors) {
141286
141567
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/core/errors.js
141287
141568
  /**
141288
141569
  * DevExtreme (esm/core/errors.js)
141289
- * Version: 24.2.6
141290
- * Build date: Mon Mar 17 2025
141570
+ * Version: 25.1.1-alpha
141571
+ * Build date: Wed Apr 02 2025
141291
141572
  *
141292
141573
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
141293
141574
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -141298,8 +141579,8 @@ function error(baseErrors, errors) {
141298
141579
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/m_class.js
141299
141580
  /**
141300
141581
  * DevExtreme (esm/__internal/core/m_class.js)
141301
- * Version: 24.2.6
141302
- * Build date: Mon Mar 17 2025
141582
+ * Version: 25.1.1-alpha
141583
+ * Build date: Wed Apr 02 2025
141303
141584
  *
141304
141585
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
141305
141586
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -141432,8 +141713,8 @@ classImpl.abstract = m_class_abstract;
141432
141713
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/core/class.js
141433
141714
  /**
141434
141715
  * DevExtreme (esm/core/class.js)
141435
- * Version: 24.2.6
141436
- * Build date: Mon Mar 17 2025
141716
+ * Version: 25.1.1-alpha
141717
+ * Build date: Wed Apr 02 2025
141437
141718
  *
141438
141719
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
141439
141720
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -141444,8 +141725,8 @@ classImpl.abstract = m_class_abstract;
141444
141725
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/utils/m_iterator.js
141445
141726
  /**
141446
141727
  * DevExtreme (esm/__internal/core/utils/m_iterator.js)
141447
- * Version: 24.2.6
141448
- * Build date: Mon Mar 17 2025
141728
+ * Version: 25.1.1-alpha
141729
+ * Build date: Wed Apr 02 2025
141449
141730
  *
141450
141731
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
141451
141732
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -141494,8 +141775,8 @@ const reverseEach = (array, callback) => {
141494
141775
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/utils/m_dependency_injector.js
141495
141776
  /**
141496
141777
  * DevExtreme (esm/__internal/core/utils/m_dependency_injector.js)
141497
- * Version: 24.2.6
141498
- * Build date: Mon Mar 17 2025
141778
+ * Version: 25.1.1-alpha
141779
+ * Build date: Wed Apr 02 2025
141499
141780
  *
141500
141781
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
141501
141782
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -141544,8 +141825,8 @@ function injector(object) {
141544
141825
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/core/utils/dependency_injector.js
141545
141826
  /**
141546
141827
  * DevExtreme (esm/core/utils/dependency_injector.js)
141547
- * Version: 24.2.6
141548
- * Build date: Mon Mar 17 2025
141828
+ * Version: 25.1.1-alpha
141829
+ * Build date: Wed Apr 02 2025
141549
141830
  *
141550
141831
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
141551
141832
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -141556,8 +141837,8 @@ function injector(object) {
141556
141837
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/common/core/localization/ldml/date.formatter.js
141557
141838
  /**
141558
141839
  * DevExtreme (esm/common/core/localization/ldml/date.formatter.js)
141559
- * Version: 24.2.6
141560
- * Build date: Mon Mar 17 2025
141840
+ * Version: 25.1.1-alpha
141841
+ * Build date: Wed Apr 02 2025
141561
141842
  *
141562
141843
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
141563
141844
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -141710,8 +141991,8 @@ function _extends() {
141710
141991
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/m_config.js
141711
141992
  /**
141712
141993
  * DevExtreme (esm/__internal/core/m_config.js)
141713
- * Version: 24.2.6
141714
- * Build date: Mon Mar 17 2025
141994
+ * Version: 25.1.1-alpha
141995
+ * Build date: Wed Apr 02 2025
141715
141996
  *
141716
141997
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
141717
141998
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -141786,8 +142067,8 @@ if ("undefined" !== typeof DevExpress && DevExpress.config) {
141786
142067
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/common/config.js
141787
142068
  /**
141788
142069
  * DevExtreme (esm/common/config.js)
141789
- * Version: 24.2.6
141790
- * Build date: Mon Mar 17 2025
142070
+ * Version: 25.1.1-alpha
142071
+ * Build date: Wed Apr 02 2025
141791
142072
  *
141792
142073
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
141793
142074
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -141798,8 +142079,8 @@ if ("undefined" !== typeof DevExpress && DevExpress.config) {
141798
142079
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/m_guid.js
141799
142080
  /**
141800
142081
  * DevExtreme (esm/__internal/core/m_guid.js)
141801
- * Version: 24.2.6
141802
- * Build date: Mon Mar 17 2025
142082
+ * Version: 25.1.1-alpha
142083
+ * Build date: Wed Apr 02 2025
141803
142084
  *
141804
142085
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
141805
142086
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -141841,8 +142122,8 @@ const Guid = core_class.inherit({
141841
142122
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/common/guid.js
141842
142123
  /**
141843
142124
  * DevExtreme (esm/common/guid.js)
141844
- * Version: 24.2.6
141845
- * Build date: Mon Mar 17 2025
142125
+ * Version: 25.1.1-alpha
142126
+ * Build date: Wed Apr 02 2025
141846
142127
  *
141847
142128
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
141848
142129
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -141853,8 +142134,8 @@ const Guid = core_class.inherit({
141853
142134
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/templates/m_template_engine_registry.js
141854
142135
  /**
141855
142136
  * DevExtreme (esm/__internal/core/templates/m_template_engine_registry.js)
141856
- * Version: 24.2.6
141857
- * Build date: Mon Mar 17 2025
142137
+ * Version: 25.1.1-alpha
142138
+ * Build date: Wed Apr 02 2025
141858
142139
  *
141859
142140
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
141860
142141
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -141883,8 +142164,8 @@ function getCurrentTemplateEngine() {
141883
142164
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/core/templates/template_engine_registry.js
141884
142165
  /**
141885
142166
  * DevExtreme (esm/core/templates/template_engine_registry.js)
141886
- * Version: 24.2.6
141887
- * Build date: Mon Mar 17 2025
142167
+ * Version: 25.1.1-alpha
142168
+ * Build date: Wed Apr 02 2025
141888
142169
  *
141889
142170
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
141890
142171
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -141894,8 +142175,8 @@ function getCurrentTemplateEngine() {
141894
142175
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/m_set_template_engine.js
141895
142176
  /**
141896
142177
  * DevExtreme (esm/__internal/core/m_set_template_engine.js)
141897
- * Version: 24.2.6
141898
- * Build date: Mon Mar 17 2025
142178
+ * Version: 25.1.1-alpha
142179
+ * Build date: Wed Apr 02 2025
141899
142180
  *
141900
142181
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
141901
142182
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -141905,8 +142186,8 @@ function getCurrentTemplateEngine() {
141905
142186
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/common/set_template_engine.js
141906
142187
  /**
141907
142188
  * DevExtreme (esm/common/set_template_engine.js)
141908
- * Version: 24.2.6
141909
- * Build date: Mon Mar 17 2025
142189
+ * Version: 25.1.1-alpha
142190
+ * Build date: Wed Apr 02 2025
141910
142191
  *
141911
142192
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
141912
142193
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -141917,8 +142198,8 @@ function getCurrentTemplateEngine() {
141917
142198
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/common.js
141918
142199
  /**
141919
142200
  * DevExtreme (esm/common.js)
141920
- * Version: 24.2.6
141921
- * Build date: Mon Mar 17 2025
142201
+ * Version: 25.1.1-alpha
142202
+ * Build date: Wed Apr 02 2025
141922
142203
  *
141923
142204
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
141924
142205
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -141931,8 +142212,8 @@ function getCurrentTemplateEngine() {
141931
142212
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/core/config.js
141932
142213
  /**
141933
142214
  * DevExtreme (esm/core/config.js)
141934
- * Version: 24.2.6
141935
- * Build date: Mon Mar 17 2025
142215
+ * Version: 25.1.1-alpha
142216
+ * Build date: Wed Apr 02 2025
141936
142217
  *
141937
142218
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
141938
142219
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -141943,8 +142224,8 @@ function getCurrentTemplateEngine() {
141943
142224
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/core/guid.js
141944
142225
  /**
141945
142226
  * DevExtreme (esm/core/guid.js)
141946
- * Version: 24.2.6
141947
- * Build date: Mon Mar 17 2025
142227
+ * Version: 25.1.1-alpha
142228
+ * Build date: Wed Apr 02 2025
141948
142229
  *
141949
142230
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
141950
142231
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -141955,8 +142236,8 @@ function getCurrentTemplateEngine() {
141955
142236
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/core/utils/console.js
141956
142237
  /**
141957
142238
  * DevExtreme (esm/core/utils/console.js)
141958
- * Version: 24.2.6
141959
- * Build date: Mon Mar 17 2025
142239
+ * Version: 25.1.1-alpha
142240
+ * Build date: Wed Apr 02 2025
141960
142241
  *
141961
142242
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
141962
142243
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -141966,8 +142247,8 @@ function getCurrentTemplateEngine() {
141966
142247
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/utils/m_variable_wrapper.js
141967
142248
  /**
141968
142249
  * DevExtreme (esm/__internal/core/utils/m_variable_wrapper.js)
141969
- * Version: 24.2.6
141970
- * Build date: Mon Mar 17 2025
142250
+ * Version: 25.1.1-alpha
142251
+ * Build date: Wed Apr 02 2025
141971
142252
  *
141972
142253
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
141973
142254
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -141996,8 +142277,8 @@ const m_variable_wrapper_variableWrapper = dependency_injector({
141996
142277
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/core/utils/variable_wrapper.js
141997
142278
  /**
141998
142279
  * DevExtreme (esm/core/utils/variable_wrapper.js)
141999
- * Version: 24.2.6
142000
- * Build date: Mon Mar 17 2025
142280
+ * Version: 25.1.1-alpha
142281
+ * Build date: Wed Apr 02 2025
142001
142282
  *
142002
142283
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
142003
142284
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -142008,8 +142289,8 @@ const m_variable_wrapper_variableWrapper = dependency_injector({
142008
142289
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/utils/m_object.js
142009
142290
  /**
142010
142291
  * DevExtreme (esm/__internal/core/utils/m_object.js)
142011
- * Version: 24.2.6
142012
- * Build date: Mon Mar 17 2025
142292
+ * Version: 25.1.1-alpha
142293
+ * Build date: Wed Apr 02 2025
142013
142294
  *
142014
142295
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
142015
142296
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -142109,8 +142390,8 @@ const m_object_deepExtendArraySafe = function(target, changes, extendComplexObje
142109
142390
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/core/utils/object.js
142110
142391
  /**
142111
142392
  * DevExtreme (esm/core/utils/object.js)
142112
- * Version: 24.2.6
142113
- * Build date: Mon Mar 17 2025
142393
+ * Version: 25.1.1-alpha
142394
+ * Build date: Wed Apr 02 2025
142114
142395
  *
142115
142396
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
142116
142397
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -142120,8 +142401,8 @@ const m_object_deepExtendArraySafe = function(target, changes, extendComplexObje
142120
142401
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/utils/m_data.js
142121
142402
  /**
142122
142403
  * DevExtreme (esm/__internal/core/utils/m_data.js)
142123
- * Version: 24.2.6
142124
- * Build date: Mon Mar 17 2025
142404
+ * Version: 25.1.1-alpha
142405
+ * Build date: Wed Apr 02 2025
142125
142406
  *
142126
142407
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
142127
142408
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -142317,8 +142598,8 @@ const toComparable = function(value, caseSensitive) {
142317
142598
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/core/utils/data.js
142318
142599
  /**
142319
142600
  * DevExtreme (esm/core/utils/data.js)
142320
- * Version: 24.2.6
142321
- * Build date: Mon Mar 17 2025
142601
+ * Version: 25.1.1-alpha
142602
+ * Build date: Wed Apr 02 2025
142322
142603
  *
142323
142604
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
142324
142605
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -142328,8 +142609,8 @@ const toComparable = function(value, caseSensitive) {
142328
142609
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/utils/m_callbacks.js
142329
142610
  /**
142330
142611
  * DevExtreme (esm/__internal/core/utils/m_callbacks.js)
142331
- * Version: 24.2.6
142332
- * Build date: Mon Mar 17 2025
142612
+ * Version: 25.1.1-alpha
142613
+ * Build date: Wed Apr 02 2025
142333
142614
  *
142334
142615
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
142335
142616
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -142424,8 +142705,8 @@ const Callbacks = function(options) {
142424
142705
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/core/utils/callbacks.js
142425
142706
  /**
142426
142707
  * DevExtreme (esm/core/utils/callbacks.js)
142427
- * Version: 24.2.6
142428
- * Build date: Mon Mar 17 2025
142708
+ * Version: 25.1.1-alpha
142709
+ * Build date: Wed Apr 02 2025
142429
142710
  *
142430
142711
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
142431
142712
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -142436,8 +142717,8 @@ const Callbacks = function(options) {
142436
142717
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/utils/m_deferred.js
142437
142718
  /**
142438
142719
  * DevExtreme (esm/__internal/core/utils/m_deferred.js)
142439
- * Version: 24.2.6
142440
- * Build date: Mon Mar 17 2025
142720
+ * Version: 25.1.1-alpha
142721
+ * Build date: Wed Apr 02 2025
142441
142722
  *
142442
142723
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
142443
142724
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -142602,8 +142883,8 @@ function when() {
142602
142883
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/core/utils/deferred.js
142603
142884
  /**
142604
142885
  * DevExtreme (esm/core/utils/deferred.js)
142605
- * Version: 24.2.6
142606
- * Build date: Mon Mar 17 2025
142886
+ * Version: 25.1.1-alpha
142887
+ * Build date: Wed Apr 02 2025
142607
142888
  *
142608
142889
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
142609
142890
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -142613,8 +142894,8 @@ function when() {
142613
142894
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/utils/m_common.js
142614
142895
  /**
142615
142896
  * DevExtreme (esm/__internal/core/utils/m_common.js)
142616
- * Version: 24.2.6
142617
- * Build date: Mon Mar 17 2025
142897
+ * Version: 25.1.1-alpha
142898
+ * Build date: Wed Apr 02 2025
142618
142899
  *
142619
142900
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
142620
142901
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -142909,8 +143190,8 @@ const equalByValue = function(value1, value2) {
142909
143190
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/core/utils/common.js
142910
143191
  /**
142911
143192
  * DevExtreme (esm/core/utils/common.js)
142912
- * Version: 24.2.6
142913
- * Build date: Mon Mar 17 2025
143193
+ * Version: 25.1.1-alpha
143194
+ * Build date: Wed Apr 02 2025
142914
143195
  *
142915
143196
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
142916
143197
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -142920,8 +143201,8 @@ const equalByValue = function(value1, value2) {
142920
143201
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/__internal/core/utils/m_math.js
142921
143202
  /**
142922
143203
  * DevExtreme (esm/__internal/core/utils/m_math.js)
142923
- * Version: 24.2.6
142924
- * Build date: Mon Mar 17 2025
143204
+ * Version: 25.1.1-alpha
143205
+ * Build date: Wed Apr 02 2025
142925
143206
  *
142926
143207
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
142927
143208
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143090,8 +143371,8 @@ function roundFloatPart(value) {
143090
143371
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/core/utils/math.js
143091
143372
  /**
143092
143373
  * DevExtreme (esm/core/utils/math.js)
143093
- * Version: 24.2.6
143094
- * Build date: Mon Mar 17 2025
143374
+ * Version: 25.1.1-alpha
143375
+ * Build date: Wed Apr 02 2025
143095
143376
  *
143096
143377
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
143097
143378
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143101,8 +143382,8 @@ function roundFloatPart(value) {
143101
143382
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/common/core/localization/utils.js
143102
143383
  /**
143103
143384
  * DevExtreme (esm/common/core/localization/utils.js)
143104
- * Version: 24.2.6
143105
- * Build date: Mon Mar 17 2025
143385
+ * Version: 25.1.1-alpha
143386
+ * Build date: Wed Apr 02 2025
143106
143387
  *
143107
143388
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
143108
143389
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143129,8 +143410,8 @@ function toFixed(value, precision) {
143129
143410
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/common/core/localization/ldml/number.js
143130
143411
  /**
143131
143412
  * DevExtreme (esm/common/core/localization/ldml/number.js)
143132
- * Version: 24.2.6
143133
- * Build date: Mon Mar 17 2025
143413
+ * Version: 25.1.1-alpha
143414
+ * Build date: Wed Apr 02 2025
143134
143415
  *
143135
143416
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
143136
143417
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143371,8 +143652,8 @@ function getFormat(formatter) {
143371
143652
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/common/core/localization/currency.js
143372
143653
  /**
143373
143654
  * DevExtreme (esm/common/core/localization/currency.js)
143374
- * Version: 24.2.6
143375
- * Build date: Mon Mar 17 2025
143655
+ * Version: 25.1.1-alpha
143656
+ * Build date: Wed Apr 02 2025
143376
143657
  *
143377
143658
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
143378
143659
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143404,8 +143685,8 @@ function getFormat(formatter) {
143404
143685
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/common/core/localization/cldr-data/parent_locales.js
143405
143686
  /**
143406
143687
  * DevExtreme (esm/common/core/localization/cldr-data/parent_locales.js)
143407
- * Version: 24.2.6
143408
- * Build date: Mon Mar 17 2025
143688
+ * Version: 25.1.1-alpha
143689
+ * Build date: Wed Apr 02 2025
143409
143690
  *
143410
143691
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
143411
143692
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143590,8 +143871,8 @@ function getFormat(formatter) {
143590
143871
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/common/core/localization/parentLocale.js
143591
143872
  /**
143592
143873
  * DevExtreme (esm/common/core/localization/parentLocale.js)
143593
- * Version: 24.2.6
143594
- * Build date: Mon Mar 17 2025
143874
+ * Version: 25.1.1-alpha
143875
+ * Build date: Wed Apr 02 2025
143595
143876
  *
143596
143877
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
143597
143878
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143608,8 +143889,8 @@ const PARENT_LOCALE_SEPARATOR = "-";
143608
143889
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/common/core/localization/core.js
143609
143890
  /**
143610
143891
  * DevExtreme (esm/common/core/localization/core.js)
143611
- * Version: 24.2.6
143612
- * Build date: Mon Mar 17 2025
143892
+ * Version: 25.1.1-alpha
143893
+ * Build date: Wed Apr 02 2025
143613
143894
  *
143614
143895
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
143615
143896
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143650,8 +143931,8 @@ const DEFAULT_LOCALE = "en";
143650
143931
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/common/core/localization/open_xml_currency_format.js
143651
143932
  /**
143652
143933
  * DevExtreme (esm/common/core/localization/open_xml_currency_format.js)
143653
- * Version: 24.2.6
143654
- * Build date: Mon Mar 17 2025
143934
+ * Version: 25.1.1-alpha
143935
+ * Build date: Wed Apr 02 2025
143655
143936
  *
143656
143937
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
143657
143938
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -143693,8 +143974,8 @@ const DEFAULT_LOCALE = "en";
143693
143974
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/common/core/localization/cldr-data/accounting_formats.js
143694
143975
  /**
143695
143976
  * DevExtreme (esm/common/core/localization/cldr-data/accounting_formats.js)
143696
- * Version: 24.2.6
143697
- * Build date: Mon Mar 17 2025
143977
+ * Version: 25.1.1-alpha
143978
+ * Build date: Wed Apr 02 2025
143698
143979
  *
143699
143980
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
143700
143981
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -144280,8 +144561,8 @@ const DEFAULT_LOCALE = "en";
144280
144561
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/common/core/localization/intl/number.js
144281
144562
  /**
144282
144563
  * DevExtreme (esm/common/core/localization/intl/number.js)
144283
- * Version: 24.2.6
144284
- * Build date: Mon Mar 17 2025
144564
+ * Version: 25.1.1-alpha
144565
+ * Build date: Wed Apr 02 2025
144285
144566
  *
144286
144567
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
144287
144568
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -144364,7 +144645,8 @@ const getCurrencyFormatter = currency => new Intl.NumberFormat(core.locale(), {
144364
144645
  if (!format || "function" !== typeof format && !format.type && !format.formatter) {
144365
144646
  return intl_number_getFormatter(format)(value)
144366
144647
  }
144367
- return this.callBase.apply(this, arguments)
144648
+ const result = this.callBase.apply(this, arguments);
144649
+ return result
144368
144650
  },
144369
144651
  _getCurrencySymbolInfo: function(currency) {
144370
144652
  const formatter = getCurrencyFormatter(currency);
@@ -144401,8 +144683,8 @@ const getCurrencyFormatter = currency => new Intl.NumberFormat(core.locale(), {
144401
144683
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/common/core/localization/number.js
144402
144684
  /**
144403
144685
  * DevExtreme (esm/common/core/localization/number.js)
144404
- * Version: 24.2.6
144405
- * Build date: Mon Mar 17 2025
144686
+ * Version: 25.1.1-alpha
144687
+ * Build date: Wed Apr 02 2025
144406
144688
  *
144407
144689
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
144408
144690
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -144634,7 +144916,9 @@ const numberLocalization = dependency_injector({
144634
144916
  if (!numberConfig) {
144635
144917
  const formatterConfig = this._getSeparators();
144636
144918
  formatterConfig.unlimitedIntegerDigits = format.unlimitedIntegerDigits;
144637
- return this.convertDigits(number_getFormatter(format.type, formatterConfig)(value))
144919
+ const formatter = number_getFormatter(format.type, formatterConfig)(value);
144920
+ const result = this.convertDigits(formatter);
144921
+ return result
144638
144922
  }
144639
144923
  return this._formatNumber(value, numberConfig, format)
144640
144924
  },
@@ -144707,8 +144991,8 @@ if (hasIntl) {
144707
144991
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/common/core/localization/ldml/date.format.js
144708
144992
  /**
144709
144993
  * DevExtreme (esm/common/core/localization/ldml/date.format.js)
144710
- * Version: 24.2.6
144711
- * Build date: Mon Mar 17 2025
144994
+ * Version: 25.1.1-alpha
144995
+ * Build date: Wed Apr 02 2025
144712
144996
  *
144713
144997
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
144714
144998
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -144905,8 +145189,8 @@ const date_format_getFormat = function(formatter) {
144905
145189
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/common/core/localization/ldml/date.parser.js
144906
145190
  /**
144907
145191
  * DevExtreme (esm/common/core/localization/ldml/date.parser.js)
144908
- * Version: 24.2.6
144909
- * Build date: Mon Mar 17 2025
145192
+ * Version: 25.1.1-alpha
145193
+ * Build date: Wed Apr 02 2025
144910
145194
  *
144911
145195
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
144912
145196
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -145224,8 +145508,8 @@ const getParser = function(format, dateParts) {
145224
145508
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/common/core/localization/default_date_names.js
145225
145509
  /**
145226
145510
  * DevExtreme (esm/common/core/localization/default_date_names.js)
145227
- * Version: 24.2.6
145228
- * Build date: Mon Mar 17 2025
145511
+ * Version: 25.1.1-alpha
145512
+ * Build date: Wed Apr 02 2025
145229
145513
  *
145230
145514
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
145231
145515
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -145261,8 +145545,8 @@ const cutCaptions = (captions, format) => {
145261
145545
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/common/core/localization/cldr-data/first_day_of_week_data.js
145262
145546
  /**
145263
145547
  * DevExtreme (esm/common/core/localization/cldr-data/first_day_of_week_data.js)
145264
- * Version: 24.2.6
145265
- * Build date: Mon Mar 17 2025
145548
+ * Version: 25.1.1-alpha
145549
+ * Build date: Wed Apr 02 2025
145266
145550
  *
145267
145551
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
145268
145552
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -145461,8 +145745,8 @@ const cutCaptions = (captions, format) => {
145461
145745
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/common/core/localization/intl/date.js
145462
145746
  /**
145463
145747
  * DevExtreme (esm/common/core/localization/intl/date.js)
145464
- * Version: 24.2.6
145465
- * Build date: Mon Mar 17 2025
145748
+ * Version: 25.1.1-alpha
145749
+ * Build date: Wed Apr 02 2025
145466
145750
  *
145467
145751
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
145468
145752
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -145779,8 +146063,8 @@ const monthNameStrategies = {
145779
146063
  ;// CONCATENATED MODULE: ./node_modules/devextreme/esm/common/core/localization/date.js
145780
146064
  /**
145781
146065
  * DevExtreme (esm/common/core/localization/date.js)
145782
- * Version: 24.2.6
145783
- * Build date: Mon Mar 17 2025
146066
+ * Version: 25.1.1-alpha
146067
+ * Build date: Wed Apr 02 2025
145784
146068
  *
145785
146069
  * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
145786
146070
  * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
@@ -146310,6 +146594,10 @@ class Settings {
146310
146594
  if ((0,common.isDefined)(settings.view)) {
146311
146595
  if ((0,common.isDefined)(settings.view.viewType))
146312
146596
  result.view.viewType = settings.view.viewType;
146597
+ if ((0,common.isDefined)(settings.view.zoomLevel))
146598
+ result.view.zoomLevel = settings.view.zoomLevel;
146599
+ if ((0,common.isDefined)(settings.view.allowZoom))
146600
+ result.view.allowZoom = settings.view.allowZoom;
146313
146601
  if ((0,common.isDefined)(settings.view.simpleViewSettings)) {
146314
146602
  const paddings = settings.view.simpleViewSettings.paddings;
146315
146603
  if ((0,common.isDefined)(paddings)) {
@@ -146985,6 +147273,7 @@ var external_DevExpress_config_default = /*#__PURE__*/__webpack_require__.n(exte
146985
147273
 
146986
147274
 
146987
147275
 
147276
+
146988
147277
 
146989
147278
 
146990
147279
  class ClientRichEdit {
@@ -147017,7 +147306,7 @@ class ClientRichEdit {
147017
147306
  this.contextMenuSettings = settings.contextMenuSettings;
147018
147307
  this.fullScreenHelper = new FullScreenHelper(element);
147019
147308
  if (true)
147020
- external_DevExpress_config_default()(JSON.parse(atob('eyJsaWNlbnNlS2V5IjoiZXdvZ0lDSm1iM0p0WVhRaU9pQXhMQW9nSUNKcGJuUmxjbTVoYkZWellXZGxTV1FpT2lBaVZqWlNVWEpJWkdZelVXRmlNbGQ1YldsWlpIZFlUU0lLZlE9PS53aEFZRnYvUVRDWlVKalVITm14M25DLzVnWE9aV09wQmFYbm9JMlg1MHJadTdrbm9Mc2lIRUs0REoyZWlQZi9tSEExRk9ySlltanFtSWdKWTZpQ2prSTVtYlVnN1N6ZEI0SUIvektuMTdlQlRUQit0YThVZDNzSThNK3NES2ZRd3NMNU5tdz09In0=')));
147309
+ external_DevExpress_config_default()(JSON.parse(atob('eyJsaWNlbnNlS2V5IjoiZXdvZ0lDSm1iM0p0WVhRaU9pQXhMQW9nSUNKcGJuUmxjbTVoYkZWellXZGxTV1FpT2lBaVJWTTBSVlk0YmxKaVpYVk9OVGRWVEdSbFlVeHhZeUlLZlE9PS5MN1o0YXlNMTRnUWtScExSaEt6MGZSMDU5d1E5cWhhMi9ESThnRG83SEJxbFM2L1BMNVRtTmRrTVRzMmdUL3oyUFVQZDgyZGRMM0dsbjZiQUM0aXB4cUI0Y1ozT1FkZjhVc1pmMm9TOCs5SnliZGdCS1diYnFseXdEMUVFbkwwNmV0eWdtQT09In0=')));
147021
147310
  this.prepareElement(element, settings);
147022
147311
  this.initDefaultFontsAndStyles();
147023
147312
  this.initBars(settings.ribbon, settings.fonts);
@@ -147121,6 +147410,7 @@ class ClientRichEdit {
147121
147410
  options.fonts = settings.fonts;
147122
147411
  options.spellChecker = settings.spellCheck;
147123
147412
  options.nonce = settings.nonce;
147413
+ options.control.allowZoom = settings.view.allowZoom ? DocumentCapability.Enabled : DocumentCapability.Disabled;
147124
147414
  this.core = new ClientRichEditCore(this, this.name, this.element, Math.random().toString(), settings.readOnly, this.barHolder, settings.unit, this.rulerSettings, options, settings.view, this.getStringResources());
147125
147415
  }
147126
147416
  initCore() {
@@ -148153,6 +148443,18 @@ function executeApiCommandCore(commandManager, commandId, parameter) {
148153
148443
  case ViewTabCommandId.ToggleFullScreen:
148154
148444
  parameter = undefined;
148155
148445
  break;
148446
+ case ViewTabCommandId.ChangeZoomLevel:
148447
+ {
148448
+ const zoomLevel = ApiParametersChecker.check(parameter, 2, false, [
148449
+ ApiParametersChecker.numberDescriptor('parameter', val => val)
148450
+ ]);
148451
+ parameter = zoomLevel;
148452
+ break;
148453
+ }
148454
+ ;
148455
+ case ViewTabCommandId.ToggleAllowZoom:
148456
+ parameter = undefined;
148457
+ break;
148156
148458
  case HeaderAndFooterTabCommandId.GoToPageHeader:
148157
148459
  parameter = undefined;
148158
148460
  break;
@@ -149344,6 +149646,8 @@ external_DevExpress_trial_default().registerTrialPanelComponents();
149344
149646
 
149345
149647
 
149346
149648
 
149649
+
149650
+
149347
149651
 
149348
149652
 
149349
149653
 
@@ -149527,6 +149831,25 @@ class RichEditPublic {
149527
149831
  }
149528
149832
  get hasUnsavedChanges() { return !this._native.documentSaved; }
149529
149833
  set hasUnsavedChanges(value) { this._native.documentSaved = !value; }
149834
+ get zoomLevel() {
149835
+ return this._native.core.viewManager.zoomLevel;
149836
+ }
149837
+ set zoomLevel(value) {
149838
+ const zoomLevelValue = ApiParametersChecker.check(value, 1, false, [
149839
+ ApiParametersChecker.numberDescriptor('value', val => val, RichUtils.minZoomLevel, RichUtils.maxZoomLevel, true)
149840
+ ]);
149841
+ this._native.core.viewManager.zoomLevel = zoomLevelValue;
149842
+ this._native.core.barHolder.forceUpdate({ [RichEditClientCommand.ChangeZoomLevel]: true });
149843
+ }
149844
+ get allowZoom() {
149845
+ return this._native.core.viewManager.allowZoom;
149846
+ }
149847
+ set allowZoom(value) {
149848
+ const allowZoomValue = ApiParametersChecker.check(value, 1, false, [
149849
+ ApiParametersChecker.booleanDescriptor('value', val => val)
149850
+ ]);
149851
+ this._native.core.viewManager.allowZoom = allowZoomValue;
149852
+ }
149530
149853
  newDocument() {
149531
149854
  this._native.core.commandManager.getCommand(RichEditClientCommand.CreateNewDocumentLocally)
149532
149855
  .execute(true);
@@ -150018,6 +150341,8 @@ function createOptions() {
150018
150341
  showBrackets: true,
150019
150342
  },
150020
150343
  view: {
150344
+ zoomLevel: 1.0,
150345
+ allowZoom: true,
150021
150346
  simpleViewSettings: {
150022
150347
  paddings: {
150023
150348
  left: 15,