handsontable 0.0.0-next-802f59c-20241024 → 0.0.0-next-627918e-20241025

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of handsontable might be problematic. Click here for more details.

Files changed (128) hide show
  1. package/3rdparty/walkontable/src/calculator/index.js +1 -2
  2. package/3rdparty/walkontable/src/calculator/index.mjs +2 -2
  3. package/3rdparty/walkontable/src/calculator/viewportRows.js +3 -3
  4. package/3rdparty/walkontable/src/calculator/viewportRows.mjs +3 -3
  5. package/3rdparty/walkontable/src/core/_base.js +3 -0
  6. package/3rdparty/walkontable/src/core/_base.mjs +3 -0
  7. package/3rdparty/walkontable/src/core/clone.js +1 -0
  8. package/3rdparty/walkontable/src/core/clone.mjs +1 -0
  9. package/3rdparty/walkontable/src/core/core.js +2 -0
  10. package/3rdparty/walkontable/src/core/core.mjs +2 -0
  11. package/3rdparty/walkontable/src/facade/core.js +3 -0
  12. package/3rdparty/walkontable/src/facade/core.mjs +3 -0
  13. package/3rdparty/walkontable/src/index.js +0 -1
  14. package/3rdparty/walkontable/src/index.mjs +2 -2
  15. package/3rdparty/walkontable/src/overlay/_base.js +3 -1
  16. package/3rdparty/walkontable/src/overlay/_base.mjs +3 -1
  17. package/3rdparty/walkontable/src/overlay/bottom.js +2 -2
  18. package/3rdparty/walkontable/src/overlay/bottom.mjs +2 -2
  19. package/3rdparty/walkontable/src/overlay/inlineStart.js +1 -1
  20. package/3rdparty/walkontable/src/overlay/inlineStart.mjs +1 -1
  21. package/3rdparty/walkontable/src/overlay/top.js +1 -1
  22. package/3rdparty/walkontable/src/overlay/top.mjs +1 -1
  23. package/3rdparty/walkontable/src/overlays.js +6 -7
  24. package/3rdparty/walkontable/src/overlays.mjs +6 -7
  25. package/3rdparty/walkontable/src/renderer/colGroup.js +1 -1
  26. package/3rdparty/walkontable/src/renderer/colGroup.mjs +1 -1
  27. package/3rdparty/walkontable/src/renderer/table.js +1 -1
  28. package/3rdparty/walkontable/src/renderer/table.mjs +1 -1
  29. package/3rdparty/walkontable/src/settings.js +8 -2
  30. package/3rdparty/walkontable/src/settings.mjs +8 -2
  31. package/3rdparty/walkontable/src/table.js +35 -8
  32. package/3rdparty/walkontable/src/table.mjs +35 -8
  33. package/3rdparty/walkontable/src/types.js +1 -0
  34. package/3rdparty/walkontable/src/types.mjs +1 -0
  35. package/3rdparty/walkontable/src/utils/column.js +43 -1
  36. package/3rdparty/walkontable/src/utils/column.mjs +43 -1
  37. package/3rdparty/walkontable/src/utils/columnStretching.js +197 -0
  38. package/3rdparty/walkontable/src/utils/columnStretching.mjs +193 -0
  39. package/3rdparty/walkontable/src/utils/stylesHandler.js +179 -0
  40. package/3rdparty/walkontable/src/utils/stylesHandler.mjs +175 -0
  41. package/3rdparty/walkontable/src/viewport.js +88 -66
  42. package/3rdparty/walkontable/src/viewport.mjs +89 -67
  43. package/base.js +2 -2
  44. package/base.mjs +2 -2
  45. package/core/hooks/constants.js +0 -2
  46. package/core/hooks/constants.mjs +0 -2
  47. package/core/hooks/index.d.ts +2 -2
  48. package/core.d.ts +2 -2
  49. package/core.js +18 -6
  50. package/core.mjs +18 -6
  51. package/dataMap/metaManager/metaSchema.js +17 -0
  52. package/dataMap/metaManager/metaSchema.mjs +17 -0
  53. package/dist/handsontable.css +17 -9
  54. package/dist/handsontable.full.css +17 -7
  55. package/dist/handsontable.full.js +4217 -4534
  56. package/dist/handsontable.full.min.css +5 -4
  57. package/dist/handsontable.full.min.js +26 -26
  58. package/dist/handsontable.js +3923 -4234
  59. package/dist/handsontable.min.css +5 -4
  60. package/dist/handsontable.min.js +24 -24
  61. package/editors/autocompleteEditor/autocompleteEditor.js +1 -1
  62. package/editors/autocompleteEditor/autocompleteEditor.mjs +1 -1
  63. package/editors/baseEditor/baseEditor.js +1 -1
  64. package/editors/baseEditor/baseEditor.mjs +1 -1
  65. package/editors/dateEditor/dateEditor.js +2 -0
  66. package/editors/dateEditor/dateEditor.mjs +2 -0
  67. package/editors/handsontableEditor/handsontableEditor.js +1 -1
  68. package/editors/handsontableEditor/handsontableEditor.mjs +1 -1
  69. package/editors/selectEditor/selectEditor.js +20 -9
  70. package/editors/selectEditor/selectEditor.mjs +20 -9
  71. package/editors/textEditor/textEditor.js +4 -11
  72. package/editors/textEditor/textEditor.mjs +4 -11
  73. package/helpers/mixed.js +2 -2
  74. package/helpers/mixed.mjs +2 -2
  75. package/helpers/themes.js +17 -0
  76. package/helpers/themes.mjs +13 -0
  77. package/index.d.ts +0 -7
  78. package/package.json +10 -8
  79. package/plugins/comments/commentEditor.js +8 -1
  80. package/plugins/comments/commentEditor.mjs +8 -1
  81. package/plugins/comments/comments.js +2 -2
  82. package/plugins/comments/comments.mjs +2 -2
  83. package/plugins/contextMenu/menu/menu.js +4 -4
  84. package/plugins/contextMenu/menu/menu.mjs +4 -4
  85. package/plugins/index.d.ts +0 -3
  86. package/plugins/index.js +0 -3
  87. package/plugins/index.mjs +1 -3
  88. package/plugins/manualColumnMove/manualColumnMove.js +3 -1
  89. package/plugins/manualColumnMove/manualColumnMove.mjs +3 -1
  90. package/plugins/manualColumnResize/manualColumnResize.js +12 -24
  91. package/plugins/manualColumnResize/manualColumnResize.mjs +12 -24
  92. package/plugins/manualRowMove/manualRowMove.js +1 -1
  93. package/plugins/manualRowMove/manualRowMove.mjs +1 -1
  94. package/plugins/manualRowResize/manualRowResize.js +1 -2
  95. package/plugins/manualRowResize/manualRowResize.mjs +2 -3
  96. package/plugins/mergeCells/mergeCells.js +1 -1
  97. package/plugins/mergeCells/mergeCells.mjs +1 -1
  98. package/plugins/nestedRows/ui/headers.js +3 -1
  99. package/plugins/nestedRows/ui/headers.mjs +3 -1
  100. package/settings.d.ts +1 -0
  101. package/styles/handsontable.css +1983 -0
  102. package/styles/handsontable.min.css +30 -0
  103. package/styles/ht-theme-gemini.css +706 -0
  104. package/styles/ht-theme-gemini.min.css +30 -0
  105. package/styles/ht-theme-main.css +714 -0
  106. package/styles/ht-theme-main.min.css +30 -0
  107. package/stylesManager.js +1 -0
  108. package/stylesManager.mjs +0 -0
  109. package/tableView.js +40 -39
  110. package/tableView.mjs +40 -39
  111. package/utils/autoResize.js +4 -1
  112. package/utils/autoResize.mjs +4 -1
  113. package/utils/ghostTable.js +1 -1
  114. package/utils/ghostTable.mjs +1 -1
  115. package/plugins/stretchColumns/calculator.js +0 -159
  116. package/plugins/stretchColumns/calculator.mjs +0 -155
  117. package/plugins/stretchColumns/index.d.ts +0 -1
  118. package/plugins/stretchColumns/index.js +0 -7
  119. package/plugins/stretchColumns/index.mjs +0 -1
  120. package/plugins/stretchColumns/strategies/_base.js +0 -85
  121. package/plugins/stretchColumns/strategies/_base.mjs +0 -81
  122. package/plugins/stretchColumns/strategies/all.js +0 -68
  123. package/plugins/stretchColumns/strategies/all.mjs +0 -64
  124. package/plugins/stretchColumns/strategies/last.js +0 -77
  125. package/plugins/stretchColumns/strategies/last.mjs +0 -73
  126. package/plugins/stretchColumns/stretchColumns.d.ts +0 -11
  127. package/plugins/stretchColumns/stretchColumns.js +0 -211
  128. package/plugins/stretchColumns/stretchColumns.mjs +0 -207
@@ -0,0 +1,30 @@
1
+ /*!
2
+ * Copyright (c) HANDSONCODE sp. z o. o.
3
+ *
4
+ * HANDSONTABLE is a software distributed by HANDSONCODE sp. z o. o., a Polish corporation based in
5
+ * Gdynia, Poland, at Aleja Zwyciestwa 96-98, registered by the District Court in Gdansk under number
6
+ * 538651, EU tax ID number: PL5862294002, share capital: PLN 62,800.00.
7
+ *
8
+ * This software is protected by applicable copyright laws, including international treaties, and dual-
9
+ * licensed - depending on whether your use for commercial purposes, meaning intended for or
10
+ * resulting in commercial advantage or monetary compensation, or not.
11
+ *
12
+ * If your use is strictly personal or solely for evaluation purposes, meaning for the purposes of testing
13
+ * the suitability, performance, and usefulness of this software outside the production environment,
14
+ * you agree to be bound by the terms included in the "handsontable-non-commercial-license.pdf" file.
15
+ *
16
+ * Your use of this software for commercial purposes is subject to the terms included in an applicable
17
+ * license agreement.
18
+ *
19
+ * In any case, you must not make any such use of this software as to develop software which may be
20
+ * considered competitive with this software.
21
+ *
22
+ * UNLESS EXPRESSLY AGREED OTHERWISE, HANDSONCODE PROVIDES THIS SOFTWARE ON AN "AS IS"
23
+ * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, AND IN NO EVENT AND UNDER NO
24
+ * LEGAL THEORY, SHALL HANDSONCODE BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY DIRECT,
25
+ * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
26
+ * USE OR INABILITY TO USE THIS SOFTWARE.
27
+ *
28
+ * Version: 0.0.0-next-627918e-20241025
29
+ * Release date: 17/10/2024 (built at 25/10/2024 06:42:21)
30
+ */.ht-theme-main,.ht-theme-main-dark,.ht-theme-main-dark-auto{--ht-font-size:14px;--ht-line-height:20px;--ht-font-weight:400;--ht-letter-spacing:0px;--ht-border-radius:4px;--ht-border-width:1px;--ht-gap-size:4px;--ht-table-transition:0.15s;--ht-row-height:28px;--ht-wrapper-border-width:1px;--ht-wrapper-border-radius:0px;--ht-wrapper-border-color:#e7e7e9;--ht-icon-size:16px;--ht-background-color:#fff;--ht-border-color:#e7e7e9;--ht-accent-color:#1a42e8;--ht-foreground-color:#222;--ht-placeholder-color:#999;--ht-read-only-color:#6a6a6a;--ht-disabled-color:#a3a3a3;--ht-cell-vertical-border-width:1px;--ht-cell-horizontal-border-width:1px;--ht-cell-horizontal-padding:8px;--ht-cell-vertical-padding:4px;--ht-cell-editor-foreground-color:#000;--ht-cell-editor-border-color:#1a42e8;--ht-cell-editor-shadow-blur-radius:0px;--ht-cell-editor-shadow-color:rgba(17,61,201,.6);--ht-cell-editor-border-width:2px;--ht-cell-editor-background-color:#fff;--ht-cell-search-background-color:rgba(251,233,82,.8);--ht-cell-error-background-color:rgba(250,77,50,.2);--ht-cell-success-background-color:rgba(55,188,108,.2);--ht-cell-warning-background-color:rgba(251,233,82,.2);--ht-cell-informational-background-color:rgba(39,194,255,.2);--ht-cell-selection-border-color:#1a42e8;--ht-cell-selection-background-color:#5371ee;--ht-cell-autofill-size:6px;--ht-cell-autofill-border-width:1px;--ht-cell-autofill-border-radius:0px;--ht-cell-autofill-background-color:#1a42e8;--ht-cell-autofill-border-color:#fff;--ht-checkbox-size:16px;--ht-checkbox-border-color:#d1d1d5;--ht-checkbox-background-color:#fff;--ht-checkbox-icon-color:hsla(0,0%,100%,0);--ht-checkbox-focus-background-color:#fff;--ht-checkbox-focus-border-color:#d1d1d5;--ht-checkbox-focus-icon-color:hsla(0,0%,100%,0);--ht-checkbox-focus-ring-color:#1a42e8;--ht-checkbox-disabled-background-color:#d1d1d5;--ht-checkbox-disabled-border-color:#e7e7e9;--ht-checkbox-disabled-icon-color:hsla(0,0%,100%,0);--ht-checkbox-checked-background-color:#1a42e8;--ht-checkbox-checked-border-color:#1a42e8;--ht-checkbox-checked-icon-color:#fff;--ht-checkbox-checked-focus-background-color:#1a42e8;--ht-checkbox-checked-focus-border-color:#fff;--ht-checkbox-checked-focus-icon-color:#fff;--ht-checkbox-checked-disabled-background-color:#d1d1d5;--ht-checkbox-checked-disabled-border-color:#e7e7e9;--ht-checkbox-checked-disabled-icon-color:#a3a3a3;--ht-checkbox-indeterminate-background-color:#1a42e8;--ht-checkbox-indeterminate-border-color:#fff;--ht-checkbox-indeterminate-icon-color:#fff;--ht-checkbox-indeterminate-disabled-background-color:#d1d1d5;--ht-checkbox-indeterminate-disabled-border-color:#e7e7e9;--ht-checkbox-indeterminate-disabled-icon-color:#aeaeae;--ht-checkbox-indeterminate-focus-background-color:#1a42e8;--ht-checkbox-indeterminate-focus-border-color:#fff;--ht-checkbox-indeterminate-focus-icon-color:#fff;--ht-header-active-background-color:#1a42e8;--ht-header-active-foreground-color:#fff;--ht-header-active-border-color:#2e56fc;--ht-header-highlighted-foreground-color:#000;--ht-header-highlighted-background-color:#ebebed;--ht-header-highlighted-shadow-size:0px;--ht-header-background-color:#f7f7f9;--ht-header-row-background-color:#f7f7f9;--ht-header-font-weight:400;--ht-header-foreground-color:#222;--ht-header-filter-background-color:rgba(55,188,108,.2);--ht-frozen-shadow-size:2px;--ht-frozen-shadow-color:#e5e5e9;--ht-row-odd-background-color:rgba(34,34,34,0);--ht-row-even-background-color:rgba(34,34,34,0);--ht-resize-indicator-color:rgba(34,34,34,.6);--ht-icon-button-background-color:hsla(0,0%,100%,0);--ht-icon-button-icon-color:rgba(34,34,34,.6);--ht-icon-active-button-icon-color:#fff;--ht-icon-button-hover-background-color:rgba(34,34,34,.08);--ht-icon-button-hover-icon-color:rgba(34,34,34,.4);--ht-icon-button-focus-background-color:hsla(0,0%,100%,0);--ht-icon-button-focus-icon-color:#1a42e8;--ht-icon-button-border-radius:2px;--ht-icon-button-disabled-background-color:hsla(0,0%,60%,.32);--ht-icon-button-disabled-icon-color:#a3a3a3;--ht-collapse-button-border-radius:4px;--ht-collapse-button-open-background-color:#fff;--ht-collapse-button-open-border-color:#d1d1d5;--ht-collapse-button-open-icon-color:#999;--ht-collapse-button-open-icon-active-color:#999;--ht-collapse-button-open-hover-background-color:#f7f7f9;--ht-collapse-button-open-hover-border-color:#d1d1d5;--ht-collapse-button-open-hover-icon-color:#999;--ht-collapse-button-open-hover-icon-active-color:#999;--ht-collapse-button-open-focus-background-color:#f7f7f9;--ht-collapse-button-open-focus-border-color:#d1d1d5;--ht-collapse-button-open-focus-icon-color:#1a42e8;--ht-collapse-button-close-icon-color:#666;--ht-collapse-button-close-background-color:#ebebed;--ht-collapse-button-close-border-color:#d1d1d5;--ht-collapse-button-close-icon-active-color:#666;--ht-collapse-button-close-hover-background-color:#ebebed;--ht-collapse-button-close-hover-border-color:#d1d1d5;--ht-collapse-button-close-hover-icon-color:#666;--ht-collapse-button-close-hover-icon-active-color:#666;--ht-collapse-button-close-focus-background-color:#ebebed;--ht-collapse-button-close-focus-border-color:#d1d1d5;--ht-collapse-button-close-focus-icon-color:#1a42e8;--ht-primary-button-background-color:#1a42e8;--ht-primary-button-border-color:hsla(0,0%,100%,0);--ht-primary-button-foreground-color:#fff;--ht-primary-button-disabled-background-color:hsla(0,0%,60%,.32);--ht-primary-button-disabled-foreground-color:#a3a3a3;--ht-primary-button-disabled-border-color:hsla(0,0%,100%,0);--ht-primary-button-hover-background-color:#1535bc;--ht-primary-button-hover-foreground-color:#fff;--ht-primary-button-hover-border-color:hsla(0,0%,100%,0);--ht-primary-button-focus-background-color:#1a42e8;--ht-primary-button-focus-foreground-color:#fff;--ht-primary-button-focus-border-color:#fff;--ht-secondary-button-background-color:#fff;--ht-secondary-button-foreground-color:#222;--ht-secondary-button-border-color:#e7e7e9;--ht-secondary-button-disabled-background-color:#ebebed;--ht-secondary-button-disabled-foreground-color:#a3a3a3;--ht-secondary-button-disabled-border-color:#e7e7e9;--ht-secondary-button-hover-background-color:#fff;--ht-secondary-button-hover-foreground-color:#222;--ht-secondary-button-hover-border-color:#e7e7e9;--ht-secondary-button-focus-background-color:#fff;--ht-secondary-button-focus-foreground-color:#222;--ht-secondary-button-focus-border-color:#e7e7e9;--ht-button-horizontal-padding:12px;--ht-button-vertical-padding:6px;--ht-button-border-radius:4px;--ht-move-backlight-color:rgba(34,34,34,.06);--ht-move-indicator-color:#1a42e8;--ht-comments-indicator-size:6px;--ht-comments-indicator-color:#1a42e8;--ht-comments-textarea-vertical-padding:4px;--ht-comments-textarea-background-color:#f7f7f9;--ht-comments-textarea-border-width:1px;--ht-comments-textarea-border-color:hsla(0,0%,100%,0);--ht-comments-textarea-foreground-color:#222;--ht-comments-textarea-focus-background-color:#fff;--ht-comments-textarea-focus-border-color:#1a42e8;--ht-comments-textarea-focus-border-width:1px;--ht-comments-textarea-focus-foreground-color:#222;--ht-comments-textarea-horizontal-padding:8px;--ht-license-background-color:#f7f7f9;--ht-license-horizontal-padding:16px;--ht-license-vertical-padding:8px;--ht-license-foreground-color:#222;--ht-link-color:#1a42e8;--ht-link-hover-color:#3e67ec;--ht-input-background-color:#f7f7f9;--ht-input-border-color:#e7e7e9;--ht-input-foreground-color:#222;--ht-input-border-width:1px;--ht-input-disabled-background-color:hsla(0,0%,60%,.32);--ht-input-disabled-border-color:#e7e7e9;--ht-input-disabled-foreground-color:#a3a3a3;--ht-input-hover-background-color:#fff;--ht-input-hover-border-color:#e7e7e9;--ht-input-hover-foreground-color:#222;--ht-input-focus-background-color:#fff;--ht-input-focus-border-color:#1a42e8;--ht-input-focus-foreground-color:#222;--ht-input-vertical-padding:6px;--ht-input-horizontal-padding:12px;--ht-input-border-radius:4px;--ht-menu-shadow-blur:16px;--ht-menu-shadow-x:0px;--ht-menu-shadow-y:8px;--ht-menu-shadow-color:rgba(0,0,0,.08);--ht-menu-border-color:#e7e7e9;--ht-menu-border-width:1px;--ht-menu-border-radius:4px;--ht-menu-horizontal-padding:0px;--ht-menu-vertical-padding:12px;--ht-menu-item-vertical-padding:4px;--ht-menu-item-horizontal-padding:12px;--ht-menu-item-hover-color:rgba(0,0,0,.05);--ht-menu-item-active-color:rgba(0,0,0,.08);--ht-hidden-indicator-color:rgba(34,34,34,.6);--ht-scrollbar-thumb-color:#999;--ht-scrollbar-track-color:#f7f7f9;--ht-scrollbar-border-radius:8px}.ht-theme-main .pika-single .pika-next,.ht-theme-main-dark .pika-single .pika-next,.ht-theme-main-dark-auto .pika-single .pika-next,.ht-theme-main-dark-auto.htContextMenu table tbody tr td.htSubmenu .htItemWrapper:after,.ht-theme-main-dark-auto.htDropdownMenu table tbody tr td.htSubmenu .htItemWrapper:after,.ht-theme-main-dark-auto.htFiltersConditionsMenu table tbody tr td.htSubmenu .htItemWrapper:after,.ht-theme-main-dark.htContextMenu table tbody tr td.htSubmenu .htItemWrapper:after,.ht-theme-main-dark.htDropdownMenu table tbody tr td.htSubmenu .htItemWrapper:after,.ht-theme-main-dark.htFiltersConditionsMenu table tbody tr td.htSubmenu .htItemWrapper:after,.ht-theme-main.htContextMenu table tbody tr td.htSubmenu .htItemWrapper:after,.ht-theme-main.htDropdownMenu table tbody tr td.htSubmenu .htItemWrapper:after,.ht-theme-main.htFiltersConditionsMenu table tbody tr td.htSubmenu .htItemWrapper:after{background-color:currentColor;height:var(--ht-icon-size);mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none'%3E%3Cpath stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='M6.646 10.94 9.94 7.645 6.646 4.354'/%3E%3C/svg%3E");mask-size:contain;width:var(--ht-icon-size)}.ht-theme-main .pika-single .pika-prev,.ht-theme-main-dark .pika-single .pika-prev,.ht-theme-main-dark-auto .pika-single .pika-prev{background-color:currentColor;height:var(--ht-icon-size);mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none'%3E%3Cpath stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='M9.94 10.94 6.645 7.645 9.94 4.354'/%3E%3C/svg%3E");mask-size:contain;width:var(--ht-icon-size)}.ht-theme-main .changeType:before,.ht-theme-main .htAutocompleteArrow:after,.ht-theme-main .htUISelectCaption:after,.ht-theme-main-dark .changeType:before,.ht-theme-main-dark .htAutocompleteArrow:after,.ht-theme-main-dark .htUISelectCaption:after,.ht-theme-main-dark-auto .changeType:before,.ht-theme-main-dark-auto .htAutocompleteArrow:after,.ht-theme-main-dark-auto .htUISelectCaption:after{background-color:currentColor;height:var(--ht-icon-size);mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none'%3E%3Cpath fill='currentColor' d='M11 6.667a.5.5 0 0 1 .392.811l-.038.042-3 3a.5.5 0 0 1-.66.042l-.047-.042-3-3-.042-.047-.027-.038-.027-.048-.008-.018-.014-.034-.016-.054-.005-.026-.005-.03-.002-.029v-.059l.003-.029.004-.03.005-.026.016-.054.014-.033.035-.066.032-.045.037-.04.047-.042.038-.027.048-.027.018-.009.034-.013.054-.016.026-.005.03-.005.029-.002z'/%3E%3C/svg%3E");mask-size:contain;width:var(--ht-icon-size)}.ht-theme-main .columnSorting.sortAction.ascending:before,.ht-theme-main-dark .columnSorting.sortAction.ascending:before,.ht-theme-main-dark-auto .columnSorting.sortAction.ascending:before{background-color:currentColor;height:var(--ht-icon-size);mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none'%3E%3Cpath stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='M8 12.667V3.333m0 0L5.333 6M8 3.333 10.667 6'/%3E%3C/svg%3E");mask-size:contain;width:var(--ht-icon-size)}.ht-theme-main .columnSorting.sortAction.descending:before,.ht-theme-main-dark .columnSorting.sortAction.descending:before,.ht-theme-main-dark-auto .columnSorting.sortAction.descending:before{background-color:currentColor;height:var(--ht-icon-size);mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none'%3E%3Cpath stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='M8 3.333v9.334m0 0L10.667 10M8 12.667 5.333 10'/%3E%3C/svg%3E");mask-size:contain;width:var(--ht-icon-size)}.ht-theme-main-dark-auto.htContextMenu table tbody tr td .htItemWrapper span.selected:after,.ht-theme-main-dark-auto.htDropdownMenu table tbody tr td .htItemWrapper span.selected:after,.ht-theme-main-dark-auto.htFiltersConditionsMenu table tbody tr td .htItemWrapper span.selected:after,.ht-theme-main-dark.htContextMenu table tbody tr td .htItemWrapper span.selected:after,.ht-theme-main-dark.htDropdownMenu table tbody tr td .htItemWrapper span.selected:after,.ht-theme-main-dark.htFiltersConditionsMenu table tbody tr td .htItemWrapper span.selected:after,.ht-theme-main.htContextMenu table tbody tr td .htItemWrapper span.selected:after,.ht-theme-main.htDropdownMenu table tbody tr td .htItemWrapper span.selected:after,.ht-theme-main.htFiltersConditionsMenu table tbody tr td .htItemWrapper span.selected:after{background-color:currentColor;height:var(--ht-icon-size);mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none'%3E%3Cpath stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='m3.333 8 3.334 3.333 6.666-6.666'/%3E%3C/svg%3E");mask-size:contain;width:var(--ht-icon-size)}.ht-theme-main .htCheckboxRendererInput:after,.ht-theme-main-dark .htCheckboxRendererInput:after,.ht-theme-main-dark-auto .htCheckboxRendererInput:after{background-color:currentColor;height:var(--ht-icon-size);mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none'%3E%3Cpath stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='m5 8 2 2 4-4'/%3E%3C/svg%3E");mask-size:contain;width:var(--ht-icon-size)}.ht-theme-main th.beforeHiddenColumn:after,.ht-theme-main-dark th.beforeHiddenColumn:after,.ht-theme-main-dark-auto th.beforeHiddenColumn:after{background-color:currentColor;height:var(--ht-icon-size);mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' fill='none'%3E%3Cpath fill='currentColor' d='m6.085 1.358.03-.003h.061l.03.003.032.004.027.006.056.016.035.014.069.037.047.034.042.038.043.049.028.04.028.05.01.018.013.035.017.057.005.027.005.031.003.03v6.28a.521.521 0 0 1-.845.409l-.043-.04-3.125-3.125a.52.52 0 0 1-.044-.687l.044-.05 3.125-3.124.048-.044.04-.028.05-.028.02-.009.034-.014.056-.016.028-.006z'/%3E%3C/svg%3E");mask-size:contain;width:var(--ht-icon-size)}.ht-theme-main th.afterHiddenColumn:after,.ht-theme-main-dark th.afterHiddenColumn:after,.ht-theme-main-dark-auto th.afterHiddenColumn:after{background-color:currentColor;height:var(--ht-icon-size);mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' fill='none'%3E%3Cpath fill='currentColor' d='M3.333 1.875c0-.444.514-.676.846-.408l.043.04 3.125 3.125a.52.52 0 0 1 .044.687l-.044.05-3.125 3.124-.049.043-.04.029-.05.028-.018.009-.035.014-.057.016-.027.005-.031.006-.03.002h-.062l-.03-.003-.031-.005-.027-.005-.056-.016-.035-.014-.069-.037-.047-.034-.042-.038-.043-.049-.028-.04-.029-.05-.008-.019-.014-.034-.017-.057-.005-.027-.006-.032-.002-.03z'/%3E%3C/svg%3E");mask-size:contain;width:var(--ht-icon-size)}.ht-theme-main th.beforeHiddenRow:after,.ht-theme-main-dark th.beforeHiddenRow:after,.ht-theme-main-dark-auto th.beforeHiddenRow:after{background-color:currentColor;height:var(--ht-icon-size);mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' fill='none'%3E%3Cpath fill='currentColor' d='M3.764 2.431a.333.333 0 0 1 .44-.028l.032.028 2 2 .027.031.018.026.018.032.006.012.009.022.01.036.004.018.003.02.002.019v.04l-.002.019-.003.02-.003.017-.011.036-.01.022-.022.044-.022.03-.024.027-.032.028-.025.018-.032.018-.012.006-.023.009-.036.01-.017.004-.02.003-.02.001L6 5H2a.334.334 0 0 1-.26-.541l.025-.028z'/%3E%3C/svg%3E");mask-size:contain;width:var(--ht-icon-size)}.ht-theme-main th.afterHiddenRow:after,.ht-theme-main-dark th.afterHiddenRow:after,.ht-theme-main-dark-auto th.afterHiddenRow:after{background-color:currentColor;height:var(--ht-icon-size);mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' fill='none'%3E%3Cpath fill='currentColor' d='M6 3c.284 0 .432.329.26.541l-.024.028-2 2a.333.333 0 0 1-.44.028l-.032-.028-2-2-.027-.031-.018-.026L1.7 3.48l-.006-.012-.01-.022-.01-.036-.003-.018-.003-.02-.002-.019v-.04l.002-.019.003-.02.003-.017.01-.036.01-.022.023-.044.022-.03.024-.027.032-.028.025-.018.032-.018.012-.006.023-.009.036-.01.017-.004.02-.003.02-.001z'/%3E%3C/svg%3E");mask-size:contain;width:var(--ht-icon-size)}.ht-theme-main .collapsibleIndicator:before,.ht-theme-main .ht_nestingButton:before,.ht-theme-main-dark .collapsibleIndicator:before,.ht-theme-main-dark .ht_nestingButton:before,.ht-theme-main-dark-auto .collapsibleIndicator:before,.ht-theme-main-dark-auto .ht_nestingButton:before{background-color:currentColor;height:var(--ht-icon-size);mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none'%3E%3Cpath stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='M4.333 8h7.334'/%3E%3C/svg%3E");mask-size:contain;width:var(--ht-icon-size)}.ht-theme-main .collapsibleIndicator.collapsed:before,.ht-theme-main .collapsibleIndicator.ht_nestingExpand:before,.ht-theme-main .ht_nestingButton.collapsed:before,.ht-theme-main .ht_nestingButton.ht_nestingExpand:before,.ht-theme-main-dark .collapsibleIndicator.collapsed:before,.ht-theme-main-dark .collapsibleIndicator.ht_nestingExpand:before,.ht-theme-main-dark .ht_nestingButton.collapsed:before,.ht-theme-main-dark .ht_nestingButton.ht_nestingExpand:before,.ht-theme-main-dark-auto .collapsibleIndicator.collapsed:before,.ht-theme-main-dark-auto .collapsibleIndicator.ht_nestingExpand:before,.ht-theme-main-dark-auto .ht_nestingButton.collapsed:before,.ht-theme-main-dark-auto .ht_nestingButton.ht_nestingExpand:before{background-color:currentColor;height:var(--ht-icon-size);mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none'%3E%3Cpath fill='currentColor' fill-rule='evenodd' d='M7.5 11.667a.5.5 0 0 0 1 0V8.5h3.167a.5.5 0 0 0 0-1H8.5V4.333a.5.5 0 0 0-1 0V7.5H4.333a.5.5 0 0 0 0 1H7.5z' clip-rule='evenodd'/%3E%3C/svg%3E");mask-size:contain;width:var(--ht-icon-size)}.ht-theme-main .htUIRadio>input[type=radio]:after,.ht-theme-main-dark .htUIRadio>input[type=radio]:after,.ht-theme-main-dark-auto .htUIRadio>input[type=radio]:after{background-color:currentColor;height:var(--ht-icon-size);mask-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none'%3E%3Ccircle cx='8' cy='8' r='4' fill='currentColor'/%3E%3C/svg%3E");mask-size:contain;width:var(--ht-icon-size)}.ht-theme-main-dark{--ht-wrapper-border-color:#313132;--ht-background-color:#0f0f10;--ht-border-color:#313132;--ht-accent-color:#476af7;--ht-foreground-color:#f3f3f3;--ht-placeholder-color:#68696c;--ht-read-only-color:#9a9b9e;--ht-disabled-color:#68696c;--ht-cell-editor-foreground-color:#fff;--ht-cell-editor-border-color:#476af7;--ht-cell-editor-shadow-color:rgba(71,106,247,.6);--ht-cell-editor-background-color:#0f0f10;--ht-cell-search-background-color:rgba(255,231,34,.3);--ht-cell-error-background-color:rgba(255,42,52,.3);--ht-cell-success-background-color:rgba(66,190,101,.3);--ht-cell-warning-background-color:rgba(241,194,28,.3);--ht-cell-informational-background-color:rgba(39,194,255,.3);--ht-cell-selection-border-color:#476af7;--ht-cell-selection-background-color:#476af7;--ht-cell-autofill-background-color:#476af7;--ht-cell-autofill-border-color:#0f0f10;--ht-checkbox-border-color:#404144;--ht-checkbox-background-color:#0f0f10;--ht-checkbox-focus-background-color:#0f0f10;--ht-checkbox-focus-border-color:#404144;--ht-checkbox-focus-ring-color:#476af7;--ht-checkbox-disabled-background-color:#404144;--ht-checkbox-disabled-border-color:#313132;--ht-checkbox-checked-background-color:#476af7;--ht-checkbox-checked-border-color:#476af7;--ht-checkbox-checked-icon-color:#f3f3f3;--ht-checkbox-checked-focus-background-color:#476af7;--ht-checkbox-checked-focus-icon-color:#f3f3f3;--ht-checkbox-checked-disabled-background-color:#36373a;--ht-checkbox-checked-disabled-border-color:#313132;--ht-checkbox-checked-disabled-icon-color:#68696c;--ht-checkbox-indeterminate-background-color:#476af7;--ht-checkbox-indeterminate-border-color:#000;--ht-checkbox-indeterminate-icon-color:#0f0f10;--ht-checkbox-indeterminate-disabled-background-color:#36373a;--ht-checkbox-indeterminate-disabled-border-color:#313132;--ht-checkbox-indeterminate-disabled-icon-color:#727272;--ht-checkbox-indeterminate-focus-background-color:#476af7;--ht-checkbox-indeterminate-focus-border-color:#000;--ht-checkbox-indeterminate-focus-icon-color:#f3f3f3;--ht-header-active-background-color:#476af7;--ht-header-active-foreground-color:#0f0f10;--ht-header-active-border-color:#4767e5;--ht-header-highlighted-foreground-color:#f3f3f3;--ht-header-highlighted-background-color:#262627;--ht-header-background-color:#1e1e1f;--ht-header-row-background-color:#1e1e1f;--ht-header-foreground-color:#f3f3f3;--ht-header-filter-background-color:rgba(66,190,101,.3);--ht-frozen-shadow-color:#48484a;--ht-row-odd-background-color:rgba(239,239,243,0);--ht-row-even-background-color:rgba(239,239,243,0);--ht-resize-indicator-color:hsla(0,0%,100%,.6);--ht-icon-button-background-color:transparent;--ht-icon-button-icon-color:hsla(0,0%,100%,.6);--ht-icon-active-button-icon-color:#0f0f10;--ht-icon-button-hover-background-color:hsla(0,0%,100%,.08);--ht-icon-button-hover-icon-color:hsla(0,0%,100%,.4);--ht-icon-button-focus-background-color:transparent;--ht-icon-button-focus-icon-color:#476af7;--ht-icon-button-disabled-background-color:hsla(225,2%,42%,.32);--ht-icon-button-disabled-icon-color:#68696c;--ht-collapse-button-open-background-color:#000;--ht-collapse-button-open-border-color:rgba(83,83,85,.64);--ht-collapse-button-open-icon-color:#666;--ht-collapse-button-open-icon-active-color:#666;--ht-collapse-button-open-hover-background-color:#1e1e1f;--ht-collapse-button-open-hover-border-color:rgba(83,83,85,.64);--ht-collapse-button-open-hover-icon-color:#666;--ht-collapse-button-open-hover-icon-active-color:#666;--ht-collapse-button-open-focus-background-color:#1e1e1f;--ht-collapse-button-open-focus-border-color:rgba(83,83,85,.64);--ht-collapse-button-open-focus-icon-color:#476af7;--ht-collapse-button-close-icon-color:#999;--ht-collapse-button-close-background-color:#262627;--ht-collapse-button-close-border-color:rgba(83,83,85,.64);--ht-collapse-button-close-icon-active-color:#999;--ht-collapse-button-close-hover-background-color:#262627;--ht-collapse-button-close-hover-border-color:rgba(83,83,85,.64);--ht-collapse-button-close-hover-icon-color:#999;--ht-collapse-button-close-hover-icon-active-color:#999;--ht-collapse-button-close-focus-background-color:#262627;--ht-collapse-button-close-focus-border-color:rgba(83,83,85,.64);--ht-collapse-button-close-focus-icon-color:#476af7;--ht-primary-button-background-color:#476af7;--ht-primary-button-foreground-color:#f3f3f3;--ht-primary-button-disabled-background-color:hsla(225,2%,42%,.32);--ht-primary-button-disabled-foreground-color:#68696c;--ht-primary-button-hover-background-color:#6180ff;--ht-primary-button-hover-foreground-color:#f3f3f3;--ht-primary-button-focus-background-color:#476af7;--ht-primary-button-focus-foreground-color:#f3f3f3;--ht-primary-button-focus-border-color:#0f0f10;--ht-secondary-button-background-color:#0f0f10;--ht-secondary-button-foreground-color:#f3f3f3;--ht-secondary-button-border-color:#313132;--ht-secondary-button-disabled-background-color:#262627;--ht-secondary-button-disabled-foreground-color:#68696c;--ht-secondary-button-disabled-border-color:#313132;--ht-secondary-button-hover-background-color:#0f0f10;--ht-secondary-button-hover-foreground-color:#f3f3f3;--ht-secondary-button-hover-border-color:#313132;--ht-secondary-button-focus-background-color:#0f0f10;--ht-secondary-button-focus-foreground-color:#f3f3f3;--ht-secondary-button-focus-border-color:#313132;--ht-move-backlight-color:hsla(0,0%,87%,.12);--ht-move-indicator-color:#476af7;--ht-comments-indicator-color:#476af7;--ht-comments-textarea-background-color:#1e1e1f;--ht-comments-textarea-foreground-color:#f3f3f3;--ht-comments-textarea-focus-background-color:#0f0f10;--ht-comments-textarea-focus-border-color:#476af7;--ht-comments-textarea-focus-foreground-color:#f3f3f3;--ht-license-background-color:#1e1e1f;--ht-license-foreground-color:#f3f3f3;--ht-link-color:#476af7;--ht-link-hover-color:#728eff;--ht-input-background-color:#1e1e1f;--ht-input-border-color:#313132;--ht-input-foreground-color:#f3f3f3;--ht-input-disabled-background-color:hsla(225,2%,42%,.32);--ht-input-disabled-border-color:#313132;--ht-input-disabled-foreground-color:#68696c;--ht-input-hover-background-color:#0f0f10;--ht-input-hover-border-color:#313132;--ht-input-hover-foreground-color:#f3f3f3;--ht-input-focus-background-color:#0f0f10;--ht-input-focus-border-color:#476af7;--ht-input-focus-foreground-color:#f3f3f3;--ht-menu-shadow-color:rgba(0,0,0,.8);--ht-menu-border-color:#313132;--ht-menu-item-hover-color:rgba(239,239,243,.05);--ht-menu-item-active-color:rgba(239,239,243,.12);--ht-hidden-indicator-color:hsla(0,0%,100%,.6);--ht-scrollbar-thumb-color:#68696c;--ht-scrollbar-track-color:#19191c}@media(prefers-color-scheme:dark){.ht-theme-main-dark-auto{--ht-wrapper-border-color:#313132;--ht-background-color:#0f0f10;--ht-border-color:#313132;--ht-accent-color:#476af7;--ht-foreground-color:#f3f3f3;--ht-placeholder-color:#68696c;--ht-read-only-color:#9a9b9e;--ht-disabled-color:#68696c;--ht-cell-editor-foreground-color:#fff;--ht-cell-editor-border-color:#476af7;--ht-cell-editor-shadow-color:rgba(71,106,247,.6);--ht-cell-editor-background-color:#0f0f10;--ht-cell-search-background-color:rgba(255,231,34,.3);--ht-cell-error-background-color:rgba(255,42,52,.3);--ht-cell-success-background-color:rgba(66,190,101,.3);--ht-cell-warning-background-color:rgba(241,194,28,.3);--ht-cell-informational-background-color:rgba(39,194,255,.3);--ht-cell-selection-border-color:#476af7;--ht-cell-selection-background-color:#476af7;--ht-cell-autofill-background-color:#476af7;--ht-cell-autofill-border-color:#0f0f10;--ht-checkbox-border-color:#404144;--ht-checkbox-background-color:#0f0f10;--ht-checkbox-focus-background-color:#0f0f10;--ht-checkbox-focus-border-color:#404144;--ht-checkbox-focus-ring-color:#476af7;--ht-checkbox-disabled-background-color:#404144;--ht-checkbox-disabled-border-color:#313132;--ht-checkbox-checked-background-color:#476af7;--ht-checkbox-checked-border-color:#476af7;--ht-checkbox-checked-icon-color:#f3f3f3;--ht-checkbox-checked-focus-background-color:#476af7;--ht-checkbox-checked-focus-icon-color:#f3f3f3;--ht-checkbox-checked-disabled-background-color:#36373a;--ht-checkbox-checked-disabled-border-color:#313132;--ht-checkbox-checked-disabled-icon-color:#68696c;--ht-checkbox-indeterminate-background-color:#476af7;--ht-checkbox-indeterminate-border-color:#000;--ht-checkbox-indeterminate-icon-color:#0f0f10;--ht-checkbox-indeterminate-disabled-background-color:#36373a;--ht-checkbox-indeterminate-disabled-border-color:#313132;--ht-checkbox-indeterminate-disabled-icon-color:#727272;--ht-checkbox-indeterminate-focus-background-color:#476af7;--ht-checkbox-indeterminate-focus-border-color:#000;--ht-checkbox-indeterminate-focus-icon-color:#f3f3f3;--ht-header-active-background-color:#476af7;--ht-header-active-foreground-color:#0f0f10;--ht-header-active-border-color:#4767e5;--ht-header-highlighted-foreground-color:#f3f3f3;--ht-header-highlighted-background-color:#262627;--ht-header-background-color:#1e1e1f;--ht-header-row-background-color:#1e1e1f;--ht-header-foreground-color:#f3f3f3;--ht-header-filter-background-color:rgba(66,190,101,.3);--ht-frozen-shadow-color:#48484a;--ht-row-odd-background-color:rgba(239,239,243,0);--ht-row-even-background-color:rgba(239,239,243,0);--ht-resize-indicator-color:hsla(0,0%,100%,.6);--ht-icon-button-background-color:transparent;--ht-icon-button-icon-color:hsla(0,0%,100%,.6);--ht-icon-active-button-icon-color:#0f0f10;--ht-icon-button-hover-background-color:hsla(0,0%,100%,.08);--ht-icon-button-hover-icon-color:hsla(0,0%,100%,.4);--ht-icon-button-focus-background-color:transparent;--ht-icon-button-focus-icon-color:#476af7;--ht-icon-button-disabled-background-color:hsla(225,2%,42%,.32);--ht-icon-button-disabled-icon-color:#68696c;--ht-collapse-button-open-background-color:#000;--ht-collapse-button-open-border-color:rgba(83,83,85,.64);--ht-collapse-button-open-icon-color:#666;--ht-collapse-button-open-icon-active-color:#666;--ht-collapse-button-open-hover-background-color:#1e1e1f;--ht-collapse-button-open-hover-border-color:rgba(83,83,85,.64);--ht-collapse-button-open-hover-icon-color:#666;--ht-collapse-button-open-hover-icon-active-color:#666;--ht-collapse-button-open-focus-background-color:#1e1e1f;--ht-collapse-button-open-focus-border-color:rgba(83,83,85,.64);--ht-collapse-button-open-focus-icon-color:#476af7;--ht-collapse-button-close-icon-color:#999;--ht-collapse-button-close-background-color:#262627;--ht-collapse-button-close-border-color:rgba(83,83,85,.64);--ht-collapse-button-close-icon-active-color:#999;--ht-collapse-button-close-hover-background-color:#262627;--ht-collapse-button-close-hover-border-color:rgba(83,83,85,.64);--ht-collapse-button-close-hover-icon-color:#999;--ht-collapse-button-close-hover-icon-active-color:#999;--ht-collapse-button-close-focus-background-color:#262627;--ht-collapse-button-close-focus-border-color:rgba(83,83,85,.64);--ht-collapse-button-close-focus-icon-color:#476af7;--ht-primary-button-background-color:#476af7;--ht-primary-button-foreground-color:#f3f3f3;--ht-primary-button-disabled-background-color:hsla(225,2%,42%,.32);--ht-primary-button-disabled-foreground-color:#68696c;--ht-primary-button-hover-background-color:#6180ff;--ht-primary-button-hover-foreground-color:#f3f3f3;--ht-primary-button-focus-background-color:#476af7;--ht-primary-button-focus-foreground-color:#f3f3f3;--ht-primary-button-focus-border-color:#0f0f10;--ht-secondary-button-background-color:#0f0f10;--ht-secondary-button-foreground-color:#f3f3f3;--ht-secondary-button-border-color:#313132;--ht-secondary-button-disabled-background-color:#262627;--ht-secondary-button-disabled-foreground-color:#68696c;--ht-secondary-button-disabled-border-color:#313132;--ht-secondary-button-hover-background-color:#0f0f10;--ht-secondary-button-hover-foreground-color:#f3f3f3;--ht-secondary-button-hover-border-color:#313132;--ht-secondary-button-focus-background-color:#0f0f10;--ht-secondary-button-focus-foreground-color:#f3f3f3;--ht-secondary-button-focus-border-color:#313132;--ht-move-backlight-color:hsla(0,0%,87%,.12);--ht-move-indicator-color:#476af7;--ht-comments-indicator-color:#476af7;--ht-comments-textarea-background-color:#1e1e1f;--ht-comments-textarea-foreground-color:#f3f3f3;--ht-comments-textarea-focus-background-color:#0f0f10;--ht-comments-textarea-focus-border-color:#476af7;--ht-comments-textarea-focus-foreground-color:#f3f3f3;--ht-license-background-color:#1e1e1f;--ht-license-foreground-color:#f3f3f3;--ht-link-color:#476af7;--ht-link-hover-color:#728eff;--ht-input-background-color:#1e1e1f;--ht-input-border-color:#313132;--ht-input-foreground-color:#f3f3f3;--ht-input-disabled-background-color:hsla(225,2%,42%,.32);--ht-input-disabled-border-color:#313132;--ht-input-disabled-foreground-color:#68696c;--ht-input-hover-background-color:#0f0f10;--ht-input-hover-border-color:#313132;--ht-input-hover-foreground-color:#f3f3f3;--ht-input-focus-background-color:#0f0f10;--ht-input-focus-border-color:#476af7;--ht-input-focus-foreground-color:#f3f3f3;--ht-menu-shadow-color:rgba(0,0,0,.8);--ht-menu-border-color:#313132;--ht-menu-item-hover-color:rgba(239,239,243,.05);--ht-menu-item-active-color:rgba(239,239,243,.12);--ht-hidden-indicator-color:hsla(0,0%,100%,.6);--ht-scrollbar-thumb-color:#68696c;--ht-scrollbar-track-color:#19191c}}
@@ -0,0 +1 @@
1
+ "use strict";
File without changes
package/tableView.js CHANGED
@@ -158,7 +158,7 @@ class TableView {
158
158
  this.hot.runHooks('beforeRender', this.hot.forceFullRender);
159
159
  if (this.postponedAdjustElementsSize) {
160
160
  this.postponedAdjustElementsSize = false;
161
- this.adjustElementsSize();
161
+ this.adjustElementsSize(true);
162
162
  }
163
163
  this._wt.draw(!this.hot.forceFullRender);
164
164
  this.hot.runHooks('afterRender', this.hot.forceFullRender);
@@ -587,6 +587,39 @@ class TableView {
587
587
  return count;
588
588
  }
589
589
 
590
+ /**
591
+ * Returns the default row height.
592
+ *
593
+ * This method retrieves the default row height from the Walkontable styles handler.
594
+ *
595
+ * @returns {number} The default row height.
596
+ */
597
+ getDefaultRowHeight() {
598
+ return this._wt.stylesHandler.getDefaultRowHeight();
599
+ }
600
+
601
+ /**
602
+ * Retrieves the value of a specified CSS variable for the instance's container.
603
+ *
604
+ * @param {string} variableName - The name of the CSS variable to retrieve.
605
+ * @returns {string} The value of the specified CSS variable.
606
+ */
607
+ getCSSVariableValue(variableName) {
608
+ return this._wt.stylesHandler.getCSSVariableValue(variableName);
609
+ }
610
+
611
+ /**
612
+ * Checks if the classic theme is being used.
613
+ *
614
+ * This method verifies if the current theme applied to the Handsontable instance
615
+ * is the classic theme.
616
+ *
617
+ * @returns {boolean} `true` if the classic theme is being used, `false` otherwise.
618
+ */
619
+ isUsingClassicTheme() {
620
+ return this._wt.stylesHandler.isClassicTheme();
621
+ }
622
+
590
623
  /**
591
624
  * Checks if at least one cell than belongs to the main table is not covered by the top, left or
592
625
  * bottom overlay.
@@ -606,6 +639,7 @@ class TableView {
606
639
  */
607
640
  initializeWalkontable() {
608
641
  const walkontableConfig = {
642
+ themeName: this.settings.themeName,
609
643
  ariaTags: this.settings.ariaTags,
610
644
  rtlMode: this.hot.isRtl(),
611
645
  externalRowCalculator: this.hot.getPlugin('autoRowSize') && this.hot.getPlugin('autoRowSize').isEnabled(),
@@ -613,6 +647,7 @@ class TableView {
613
647
  isDataViewInstance: () => (0, _rootInstance.isRootInstance)(this.hot),
614
648
  preventOverflow: () => this.settings.preventOverflow,
615
649
  preventWheel: () => this.settings.preventWheel,
650
+ stretchH: () => this.settings.stretchH,
616
651
  viewportColumnRenderingThreshold: () => this.settings.viewportColumnRenderingThreshold,
617
652
  viewportRowRenderingThreshold: () => this.settings.viewportRowRenderingThreshold,
618
653
  data: (renderableRow, renderableColumn) => {
@@ -911,6 +946,10 @@ class TableView {
911
946
  },
912
947
  onBeforeTouchScroll: () => this.hot.runHooks('beforeTouchScroll'),
913
948
  onAfterMomentumScroll: () => this.hot.runHooks('afterMomentumScroll'),
949
+ onBeforeStretchingColumnWidth: (stretchedWidth, renderedColumnIndex) => {
950
+ const visualColumnIndex = this.hot.columnIndexMapper.getVisualFromRenderableIndex(renderedColumnIndex);
951
+ return this.hot.runHooks('beforeStretchingColumnWidth', stretchedWidth, visualColumnIndex);
952
+ },
914
953
  onModifyRowHeaderWidth: rowHeaderWidth => this.hot.runHooks('modifyRowHeaderWidth', rowHeaderWidth),
915
954
  onModifyGetCellCoords: (renderableRowIndex, renderableColumnIndex, topmost, source) => {
916
955
  const rowMapper = this.hot.rowIndexMapper;
@@ -1534,44 +1573,6 @@ class TableView {
1534
1573
  getTableHeight() {
1535
1574
  return this._wt.wtTable.getHeight();
1536
1575
  }
1537
-
1538
- /**
1539
- * Gets the row header width. If there are multiple row headers, the width of
1540
- * the sum of all of them is returned.
1541
- *
1542
- * @returns {number}
1543
- */
1544
- getRowHeaderWidth() {
1545
- return this._wt.wtViewport.getRowHeaderWidth();
1546
- }
1547
-
1548
- /**
1549
- * Gets the column header height. If there are multiple column headers, the height
1550
- * of the sum of all of them is returned.
1551
- *
1552
- * @returns {number}
1553
- */
1554
- getColumnHeaderHeight() {
1555
- return this._wt.wtViewport.getColumnHeaderHeight();
1556
- }
1557
-
1558
- /**
1559
- * Checks if the table uses the window as a viewport and if there is a vertical scrollbar.
1560
- *
1561
- * @returns {boolean}
1562
- */
1563
- isVerticallyScrollableByWindow() {
1564
- return this._wt.wtViewport.isVerticallyScrollableByWindow();
1565
- }
1566
-
1567
- /**
1568
- * Checks if the table uses the window as a viewport and if there is a horizontal scrollbar.
1569
- *
1570
- * @returns {boolean}
1571
- */
1572
- isHorizontallyScrollableByWindow() {
1573
- return this._wt.wtViewport.isHorizontallyScrollableByWindow();
1574
- }
1575
1576
  /**
1576
1577
  * Destroys internal WalkOnTable's instance. Detaches all of the bonded listeners.
1577
1578
  *
package/tableView.mjs CHANGED
@@ -154,7 +154,7 @@ class TableView {
154
154
  this.hot.runHooks('beforeRender', this.hot.forceFullRender);
155
155
  if (this.postponedAdjustElementsSize) {
156
156
  this.postponedAdjustElementsSize = false;
157
- this.adjustElementsSize();
157
+ this.adjustElementsSize(true);
158
158
  }
159
159
  this._wt.draw(!this.hot.forceFullRender);
160
160
  this.hot.runHooks('afterRender', this.hot.forceFullRender);
@@ -583,6 +583,39 @@ class TableView {
583
583
  return count;
584
584
  }
585
585
 
586
+ /**
587
+ * Returns the default row height.
588
+ *
589
+ * This method retrieves the default row height from the Walkontable styles handler.
590
+ *
591
+ * @returns {number} The default row height.
592
+ */
593
+ getDefaultRowHeight() {
594
+ return this._wt.stylesHandler.getDefaultRowHeight();
595
+ }
596
+
597
+ /**
598
+ * Retrieves the value of a specified CSS variable for the instance's container.
599
+ *
600
+ * @param {string} variableName - The name of the CSS variable to retrieve.
601
+ * @returns {string} The value of the specified CSS variable.
602
+ */
603
+ getCSSVariableValue(variableName) {
604
+ return this._wt.stylesHandler.getCSSVariableValue(variableName);
605
+ }
606
+
607
+ /**
608
+ * Checks if the classic theme is being used.
609
+ *
610
+ * This method verifies if the current theme applied to the Handsontable instance
611
+ * is the classic theme.
612
+ *
613
+ * @returns {boolean} `true` if the classic theme is being used, `false` otherwise.
614
+ */
615
+ isUsingClassicTheme() {
616
+ return this._wt.stylesHandler.isClassicTheme();
617
+ }
618
+
586
619
  /**
587
620
  * Checks if at least one cell than belongs to the main table is not covered by the top, left or
588
621
  * bottom overlay.
@@ -602,6 +635,7 @@ class TableView {
602
635
  */
603
636
  initializeWalkontable() {
604
637
  const walkontableConfig = {
638
+ themeName: this.settings.themeName,
605
639
  ariaTags: this.settings.ariaTags,
606
640
  rtlMode: this.hot.isRtl(),
607
641
  externalRowCalculator: this.hot.getPlugin('autoRowSize') && this.hot.getPlugin('autoRowSize').isEnabled(),
@@ -609,6 +643,7 @@ class TableView {
609
643
  isDataViewInstance: () => isRootInstance(this.hot),
610
644
  preventOverflow: () => this.settings.preventOverflow,
611
645
  preventWheel: () => this.settings.preventWheel,
646
+ stretchH: () => this.settings.stretchH,
612
647
  viewportColumnRenderingThreshold: () => this.settings.viewportColumnRenderingThreshold,
613
648
  viewportRowRenderingThreshold: () => this.settings.viewportRowRenderingThreshold,
614
649
  data: (renderableRow, renderableColumn) => {
@@ -907,6 +942,10 @@ class TableView {
907
942
  },
908
943
  onBeforeTouchScroll: () => this.hot.runHooks('beforeTouchScroll'),
909
944
  onAfterMomentumScroll: () => this.hot.runHooks('afterMomentumScroll'),
945
+ onBeforeStretchingColumnWidth: (stretchedWidth, renderedColumnIndex) => {
946
+ const visualColumnIndex = this.hot.columnIndexMapper.getVisualFromRenderableIndex(renderedColumnIndex);
947
+ return this.hot.runHooks('beforeStretchingColumnWidth', stretchedWidth, visualColumnIndex);
948
+ },
910
949
  onModifyRowHeaderWidth: rowHeaderWidth => this.hot.runHooks('modifyRowHeaderWidth', rowHeaderWidth),
911
950
  onModifyGetCellCoords: (renderableRowIndex, renderableColumnIndex, topmost, source) => {
912
951
  const rowMapper = this.hot.rowIndexMapper;
@@ -1530,44 +1569,6 @@ class TableView {
1530
1569
  getTableHeight() {
1531
1570
  return this._wt.wtTable.getHeight();
1532
1571
  }
1533
-
1534
- /**
1535
- * Gets the row header width. If there are multiple row headers, the width of
1536
- * the sum of all of them is returned.
1537
- *
1538
- * @returns {number}
1539
- */
1540
- getRowHeaderWidth() {
1541
- return this._wt.wtViewport.getRowHeaderWidth();
1542
- }
1543
-
1544
- /**
1545
- * Gets the column header height. If there are multiple column headers, the height
1546
- * of the sum of all of them is returned.
1547
- *
1548
- * @returns {number}
1549
- */
1550
- getColumnHeaderHeight() {
1551
- return this._wt.wtViewport.getColumnHeaderHeight();
1552
- }
1553
-
1554
- /**
1555
- * Checks if the table uses the window as a viewport and if there is a vertical scrollbar.
1556
- *
1557
- * @returns {boolean}
1558
- */
1559
- isVerticallyScrollableByWindow() {
1560
- return this._wt.wtViewport.isVerticallyScrollableByWindow();
1561
- }
1562
-
1563
- /**
1564
- * Checks if the table uses the window as a viewport and if there is a horizontal scrollbar.
1565
- *
1566
- * @returns {boolean}
1567
- */
1568
- isHorizontallyScrollableByWindow() {
1569
- return this._wt.wtViewport.isHorizontallyScrollableByWindow();
1570
- }
1571
1572
  /**
1572
1573
  * Destroys internal WalkOnTable's instance. Detaches all of the bonded listeners.
1573
1574
  *
@@ -77,6 +77,7 @@ function createInputElementResizer(ownerDocument) {
77
77
  * Resizes the element.
78
78
  */
79
79
  function resize() {
80
+ var _getComputedStyle, _getComputedStyle2;
80
81
  textHolder.textContent = observedElement.value;
81
82
  // Won't expand the element size for displaying body as for example, `grid`, `inline-grid` or `flex` with
82
83
  // `flex-direction` set as `column`.
@@ -85,7 +86,9 @@ function createInputElementResizer(ownerDocument) {
85
86
  textContainer.style.fontFamily = getComputedStyle(observedElement).fontFamily;
86
87
  textContainer.style.whiteSpace = 'pre';
87
88
  body.appendChild(textContainer);
88
- const width = textContainer.clientWidth + 2;
89
+ const paddingStart = parseInt(((_getComputedStyle = getComputedStyle(observedElement)) === null || _getComputedStyle === void 0 ? void 0 : _getComputedStyle.paddingInlineStart) || 0, 10);
90
+ const paddingEnd = parseInt(((_getComputedStyle2 = getComputedStyle(observedElement)) === null || _getComputedStyle2 === void 0 ? void 0 : _getComputedStyle2.paddingInlineEnd) || 0, 10);
91
+ const width = textContainer.clientWidth + 2 + paddingStart + paddingEnd;
89
92
  body.removeChild(textContainer);
90
93
  const elementStyle = observedElement.style;
91
94
  elementStyle.height = `${defaults.minHeight}px`;
@@ -73,6 +73,7 @@ export function createInputElementResizer(ownerDocument) {
73
73
  * Resizes the element.
74
74
  */
75
75
  function resize() {
76
+ var _getComputedStyle, _getComputedStyle2;
76
77
  textHolder.textContent = observedElement.value;
77
78
  // Won't expand the element size for displaying body as for example, `grid`, `inline-grid` or `flex` with
78
79
  // `flex-direction` set as `column`.
@@ -81,7 +82,9 @@ export function createInputElementResizer(ownerDocument) {
81
82
  textContainer.style.fontFamily = getComputedStyle(observedElement).fontFamily;
82
83
  textContainer.style.whiteSpace = 'pre';
83
84
  body.appendChild(textContainer);
84
- const width = textContainer.clientWidth + 2;
85
+ const paddingStart = parseInt(((_getComputedStyle = getComputedStyle(observedElement)) === null || _getComputedStyle === void 0 ? void 0 : _getComputedStyle.paddingInlineStart) || 0, 10);
86
+ const paddingEnd = parseInt(((_getComputedStyle2 = getComputedStyle(observedElement)) === null || _getComputedStyle2 === void 0 ? void 0 : _getComputedStyle2.paddingInlineEnd) || 0, 10);
87
+ const width = textContainer.clientWidth + 2 + paddingStart + paddingEnd;
85
88
  body.removeChild(textContainer);
86
89
  const elementStyle = observedElement.style;
87
90
  elementStyle.height = `${defaults.minHeight}px`;
@@ -131,7 +131,7 @@ class GhostTable {
131
131
  if (this.getSetting('useHeaders') && this.hot.getColHeader(column) !== null) {
132
132
  // Please keep in mind that the renderable column index equal to the visual columns index for the GhostTable.
133
133
  // We render all columns.
134
- this.hot.view.appendColHeader(column, this.table.th);
134
+ this.hot.view.appendColHeader(column, this.table.th, undefined, -1);
135
135
  }
136
136
  this.table.tBody.appendChild(this.createCol(column));
137
137
  this.container.container.appendChild(this.table.fragment);
@@ -128,7 +128,7 @@ class GhostTable {
128
128
  if (this.getSetting('useHeaders') && this.hot.getColHeader(column) !== null) {
129
129
  // Please keep in mind that the renderable column index equal to the visual columns index for the GhostTable.
130
130
  // We render all columns.
131
- this.hot.view.appendColHeader(column, this.table.th);
131
+ this.hot.view.appendColHeader(column, this.table.th, undefined, -1);
132
132
  }
133
133
  this.table.tBody.appendChild(this.createCol(column));
134
134
  this.container.container.appendChild(this.table.fragment);
@@ -1,159 +0,0 @@
1
- "use strict";
2
-
3
- exports.__esModule = true;
4
- require("core-js/modules/es.error.cause.js");
5
- var _src = require("../../3rdparty/walkontable/src");
6
- var _element = require("../../helpers/dom/element");
7
- var _all = require("./strategies/all");
8
- var _last = require("./strategies/last");
9
- function _classPrivateMethodInitSpec(e, a) { _checkPrivateRedeclaration(e, a), a.add(e); }
10
- function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
11
- function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
12
- function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
13
- function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
14
- function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
15
- const STRETCH_WIDTH_MAP_NAME = 'stretchColumns';
16
-
17
- /**
18
- * The class responsible for calculating the column widths based on the specified column stretching strategy.
19
- *
20
- * @private
21
- * @class StretchCalculator
22
- */
23
- var _hot = /*#__PURE__*/new WeakMap();
24
- var _widthsMap = /*#__PURE__*/new WeakMap();
25
- var _stretchStrategies = /*#__PURE__*/new WeakMap();
26
- var _activeStrategy = /*#__PURE__*/new WeakMap();
27
- var _StretchCalculator_brand = /*#__PURE__*/new WeakSet();
28
- class StretchCalculator {
29
- constructor(hotInstance) {
30
- /**
31
- * Checks if the vertical scrollbar will appear. Based on the current data and viewport size
32
- * the method calculates if the vertical scrollbar will appear after the table is rendered.
33
- * The method is a workaround for the issue in the Walkontable that returns unstable viewport
34
- * size.
35
- *
36
- * @returns {boolean}
37
- */
38
- _classPrivateMethodInitSpec(this, _StretchCalculator_brand);
39
- /**
40
- * The Handsontable instance.
41
- *
42
- * @type {Core}
43
- */
44
- _classPrivateFieldInitSpec(this, _hot, void 0);
45
- /**
46
- * The map that stores the calculated column widths.
47
- *
48
- * @type {IndexToValueMap}
49
- */
50
- _classPrivateFieldInitSpec(this, _widthsMap, void 0);
51
- /**
52
- * The map that stores the available stretch strategies.
53
- *
54
- * @type {Map<string, StretchAllStrategy | StretchLastStrategy>}
55
- */
56
- _classPrivateFieldInitSpec(this, _stretchStrategies, new Map([['all', new _all.StretchAllStrategy(_assertClassBrand(_StretchCalculator_brand, this, _overwriteColumnWidthFn).bind(this))], ['last', new _last.StretchLastStrategy(_assertClassBrand(_StretchCalculator_brand, this, _overwriteColumnWidthFn).bind(this))]]));
57
- /**
58
- * The active stretch mode.
59
- *
60
- * @type {'all' | 'last' | 'none'}
61
- */
62
- _classPrivateFieldInitSpec(this, _activeStrategy, 'none');
63
- _classPrivateFieldSet(_hot, this, hotInstance);
64
- _classPrivateFieldSet(_widthsMap, this, _classPrivateFieldGet(_hot, this).columnIndexMapper.createAndRegisterIndexMap(STRETCH_WIDTH_MAP_NAME, 'physicalIndexToValue'));
65
- }
66
-
67
- /**
68
- * Sets the active stretch strategy.
69
- *
70
- * @param {'all' | 'last' | 'none'} strategyName The stretch strategy to use.
71
- */
72
- useStrategy(strategyName) {
73
- _classPrivateFieldSet(_activeStrategy, this, _classPrivateFieldGet(_stretchStrategies, this).has(strategyName) ? strategyName : 'none');
74
- }
75
-
76
- /**
77
- * Recalculates the column widths.
78
- */
79
- refreshStretching() {
80
- if (_classPrivateFieldGet(_activeStrategy, this) === 'none') {
81
- _classPrivateFieldGet(_widthsMap, this).clear();
82
- return;
83
- }
84
- _classPrivateFieldGet(_hot, this).batchExecution(() => {
85
- _classPrivateFieldGet(_widthsMap, this).clear();
86
- const stretchStrategy = _classPrivateFieldGet(_stretchStrategies, this).get(_classPrivateFieldGet(_activeStrategy, this));
87
- const view = _classPrivateFieldGet(_hot, this).view;
88
- let viewportWidth = view.getViewportWidth();
89
- if (_assertClassBrand(_StretchCalculator_brand, this, _willVerticalScrollAppear).call(this)) {
90
- viewportWidth -= (0, _element.getScrollbarWidth)(_classPrivateFieldGet(_hot, this).rootDocument);
91
- }
92
- stretchStrategy.prepare({
93
- viewportWidth
94
- });
95
- for (let columnIndex = 0; columnIndex < _classPrivateFieldGet(_hot, this).countCols(); columnIndex++) {
96
- if (!_classPrivateFieldGet(_hot, this).columnIndexMapper.isHidden(_classPrivateFieldGet(_hot, this).toPhysicalColumn(columnIndex))) {
97
- stretchStrategy.setColumnBaseWidth(columnIndex, _assertClassBrand(_StretchCalculator_brand, this, _getWidthWithoutStretching).call(this, columnIndex));
98
- }
99
- }
100
- stretchStrategy.calculate();
101
- stretchStrategy.getWidths().forEach(_ref => {
102
- let [columnIndex, width] = _ref;
103
- _classPrivateFieldGet(_widthsMap, this).setValueAtIndex(_classPrivateFieldGet(_hot, this).toPhysicalColumn(columnIndex), width);
104
- });
105
- }, true);
106
- }
107
-
108
- /**
109
- * Gets the calculated column width.
110
- *
111
- * @param {number} columnVisualIndex Column visual index.
112
- * @returns {number | null}
113
- */
114
- getStretchedWidth(columnVisualIndex) {
115
- return _classPrivateFieldGet(_widthsMap, this).getValueAtIndex(_classPrivateFieldGet(_hot, this).toPhysicalColumn(columnVisualIndex));
116
- }
117
- }
118
- exports.StretchCalculator = StretchCalculator;
119
- function _willVerticalScrollAppear() {
120
- const {
121
- view
122
- } = _classPrivateFieldGet(_hot, this);
123
- if (view.isVerticallyScrollableByWindow()) {
124
- return false;
125
- }
126
- const viewportHeight = view.getViewportHeight();
127
- const totalRows = _classPrivateFieldGet(_hot, this).countRows();
128
- let totalHeight = 0;
129
- let hasVerticalScroll = false;
130
- for (let row = 0; row < totalRows; row++) {
131
- var _classPrivateFieldGet2;
132
- totalHeight += ((_classPrivateFieldGet2 = _classPrivateFieldGet(_hot, this).getRowHeight(row)) !== null && _classPrivateFieldGet2 !== void 0 ? _classPrivateFieldGet2 : _src.DEFAULT_ROW_HEIGHT) + (row === 0 ? 1 : 0);
133
- if (totalHeight > viewportHeight) {
134
- hasVerticalScroll = true;
135
- break;
136
- }
137
- }
138
- return hasVerticalScroll;
139
- }
140
- /**
141
- * Gets the column width from the Handsontable API without logic related to stretching.
142
- *
143
- * @param {number} columnVisualIndex Column visual index.
144
- * @returns {number}
145
- */
146
- function _getWidthWithoutStretching(columnVisualIndex) {
147
- var _classPrivateFieldGet3;
148
- return (_classPrivateFieldGet3 = _classPrivateFieldGet(_hot, this).getColWidth(columnVisualIndex, 'StretchColumns')) !== null && _classPrivateFieldGet3 !== void 0 ? _classPrivateFieldGet3 : _src.DEFAULT_COLUMN_WIDTH;
149
- }
150
- /**
151
- * Executes the hook that allows to overwrite the column width.
152
- *
153
- * @param {number} columnWidth The column width.
154
- * @param {number} columnVisualIndex Column visual index.
155
- * @returns {number}
156
- */
157
- function _overwriteColumnWidthFn(columnWidth, columnVisualIndex) {
158
- return _classPrivateFieldGet(_hot, this).runHooks('beforeStretchingColumnWidth', columnWidth, columnVisualIndex);
159
- }