@revolist/revogrid 4.1.0-next.4 → 4.1.0-next.40

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 (214) hide show
  1. package/custom-element/index.js +778 -634
  2. package/dist/cjs/{css-shim-e33df79c.js → css-shim-9670f2f3.js} +1 -1
  3. package/dist/cjs/{dom-c8b6d1a7.js → dom-3e7d9c3b.js} +1 -1
  4. package/dist/cjs/{filter.button-2396a488.js → filter.button-0f120ce0.js} +1 -1
  5. package/dist/cjs/{index-d3f67f2e.js → index-416980db.js} +80 -30
  6. package/dist/cjs/loader.cjs.js +4 -4
  7. package/dist/cjs/revo-grid.cjs.js +10 -7
  8. package/dist/cjs/revo-grid_11.cjs.entry.js +777 -633
  9. package/dist/cjs/revogr-clipboard.cjs.entry.js +1 -1
  10. package/dist/cjs/revogr-filter-panel.cjs.entry.js +2 -2
  11. package/dist/collection/collection-manifest.json +1 -1
  12. package/dist/collection/components/button/button.d.ts +5 -0
  13. package/dist/collection/components/clipboard/revogr-clipboard.d.ts +13 -0
  14. package/dist/collection/components/data/cellRenderer.d.ts +11 -0
  15. package/dist/collection/components/data/cellRenderer.js +1 -1
  16. package/dist/collection/components/data/columnService.d.ts +42 -0
  17. package/dist/collection/components/data/columnService.js +27 -11
  18. package/dist/collection/components/data/revogr-data.d.ts +28 -0
  19. package/dist/collection/components/data/revogr-data.js +55 -14
  20. package/dist/collection/components/data/rowRenderer.d.ts +11 -0
  21. package/dist/collection/components/header/headerCellRenderer.d.ts +8 -0
  22. package/dist/collection/components/header/headerRenderer.d.ts +15 -0
  23. package/dist/collection/components/header/revogr-header.d.ts +25 -0
  24. package/dist/collection/components/header/revogr-header.js +44 -0
  25. package/dist/collection/components/order/orderRenderer.d.ts +28 -0
  26. package/dist/collection/components/order/revogr-order-editor.d.ts +44 -0
  27. package/dist/collection/components/order/rowOrderService.d.ts +27 -0
  28. package/dist/collection/components/overlay/autofill.service.d.ts +61 -0
  29. package/dist/collection/components/overlay/autofill.service.js +6 -7
  30. package/dist/collection/components/overlay/clipboard.service.d.ts +20 -0
  31. package/dist/collection/components/overlay/editors/edit.utils.d.ts +1 -0
  32. package/dist/collection/components/overlay/editors/text.d.ts +13 -0
  33. package/dist/collection/components/overlay/editors/text.js +1 -1
  34. package/dist/collection/components/overlay/keyboard.service.d.ts +28 -0
  35. package/dist/collection/components/overlay/keyboard.service.js +11 -10
  36. package/dist/collection/components/overlay/revogr-edit.d.ts +19 -0
  37. package/dist/collection/components/overlay/revogr-overlay-selection.d.ts +79 -0
  38. package/dist/collection/components/overlay/revogr-overlay-selection.js +4 -4
  39. package/dist/collection/components/overlay/selection.utils.d.ts +36 -0
  40. package/dist/collection/components/revoGrid/grid.helpers.d.ts +17 -0
  41. package/dist/collection/components/revoGrid/grid.helpers.js +11 -0
  42. package/dist/collection/components/revoGrid/revo-grid-style.css +1 -0
  43. package/dist/collection/components/revoGrid/revo-grid.d.ts +430 -0
  44. package/dist/collection/components/revoGrid/revo-grid.js +112 -55
  45. package/dist/collection/components/revoGrid/viewport.d.ts +19 -0
  46. package/dist/collection/components/revoGrid/viewport.helpers.d.ts +9 -0
  47. package/dist/collection/components/revoGrid/viewport.interfaces.d.ts +67 -0
  48. package/dist/collection/components/revoGrid/viewport.js +4 -2
  49. package/dist/collection/components/revoGrid/viewport.resize.service.d.ts +12 -0
  50. package/dist/collection/components/revoGrid/viewport.scrolling.service.d.ts +23 -0
  51. package/dist/collection/components/revoGrid/viewport.section.d.ts +24 -0
  52. package/dist/collection/components/revoGrid/viewport.section.js +2 -1
  53. package/dist/collection/components/revoGrid/viewport.service.d.ts +65 -0
  54. package/dist/collection/components/revoGrid/viewport.service.js +13 -22
  55. package/dist/collection/components/rowHeaders/revogr-row-headers.d.ts +19 -0
  56. package/dist/collection/components/rowHeaders/revogr-row-headers.js +5 -4
  57. package/dist/collection/components/rowHeaders/row-header-render.d.ts +9 -0
  58. package/dist/collection/components/rowHeaders/row-header-utils.d.ts +2 -0
  59. package/dist/collection/components/scroll/revogr-viewport-scroll.d.ts +89 -0
  60. package/dist/collection/components/scroll/revogr-viewport-scroll.js +14 -4
  61. package/dist/collection/components/scrollable/revogr-scroll-virtual.d.ts +25 -0
  62. package/dist/collection/components/scrollable/revogr-scroll-virtual.js +1 -1
  63. package/dist/collection/components/selectionFocus/revogr-focus.d.ts +11 -0
  64. package/dist/collection/components/selectionTempRange/revogr-temp-range.d.ts +13 -0
  65. package/dist/collection/components.d.ts +892 -0
  66. package/dist/collection/global/global.d.ts +1 -0
  67. package/dist/collection/index.d.ts +1 -0
  68. package/dist/collection/interfaces.d.ts +339 -0
  69. package/dist/collection/plugins/autoSizeColumn.js +1 -1
  70. package/dist/collection/plugins/export/export.plugin.js +1 -1
  71. package/dist/collection/plugins/groupingColumn/headerGroupRenderer.js +1 -1
  72. package/dist/collection/plugins/groupingRow/grouping.row.plugin.d.ts +1 -1
  73. package/dist/collection/plugins/stretchPlugin.js +1 -1
  74. package/dist/collection/services/cell.helpers.d.ts +2 -0
  75. package/dist/collection/services/column.data.provider.d.ts +37 -0
  76. package/dist/collection/services/column.data.provider.js +19 -18
  77. package/dist/collection/services/data.provider.d.ts +26 -0
  78. package/dist/collection/services/dimension.provider.d.ts +37 -0
  79. package/dist/collection/services/dimension.provider.js +13 -10
  80. package/dist/collection/services/localScrollService.d.ts +28 -0
  81. package/dist/collection/services/localScrollService.js +1 -1
  82. package/dist/collection/services/resizable.directive.d.ts +55 -0
  83. package/dist/collection/services/selection.store.connector.d.ts +56 -0
  84. package/dist/collection/services/selection.store.connector.js +42 -17
  85. package/dist/collection/services/viewport.provider.d.ts +10 -0
  86. package/dist/collection/services/viewport.provider.js +1 -1
  87. package/dist/collection/stencil-public-runtime.d.ts +1563 -0
  88. package/dist/collection/store/dataSource/data.proxy.d.ts +10 -0
  89. package/dist/collection/store/dataSource/data.store.d.ts +58 -0
  90. package/dist/collection/store/dimension/dimension.helpers.d.ts +14 -0
  91. package/dist/collection/store/dimension/dimension.helpers.js +14 -11
  92. package/dist/collection/store/dimension/dimension.store.d.ts +15 -0
  93. package/dist/collection/store/dimension/dimension.store.js +4 -1
  94. package/dist/collection/store/selection/selection.helpers.d.ts +8 -0
  95. package/dist/collection/store/selection/selection.store.d.ts +19 -0
  96. package/dist/collection/store/selection/selection.store.js +11 -6
  97. package/dist/collection/store/selection/selection.store.service.d.ts +18 -0
  98. package/dist/collection/store/storeTypes.d.ts +4 -0
  99. package/dist/collection/store/viewPort/viewport.helpers.d.ts +30 -0
  100. package/dist/collection/store/viewPort/viewport.store.d.ts +21 -0
  101. package/dist/collection/store/viewPort/viewport.store.js +37 -6
  102. package/dist/collection/themeManager/theme.compact.d.ts +4 -0
  103. package/dist/collection/themeManager/theme.default.d.ts +4 -0
  104. package/dist/collection/themeManager/theme.material.d.ts +4 -0
  105. package/dist/collection/themeManager/themeService.d.ts +13 -0
  106. package/dist/{esm-es5/index.js → collection/utils/closestPolifill.d.ts} +0 -0
  107. package/dist/collection/utils/consts.d.ts +20 -0
  108. package/dist/collection/utils/consts.js +1 -0
  109. package/dist/collection/utils/generateAlphabetHeader.d.ts +2 -0
  110. package/dist/{types/utils/utils.d.ts → collection/utils/index.d.ts} +13 -0
  111. package/dist/collection/utils/{utils.js → index.js} +13 -0
  112. package/dist/collection/utils/keyCodes.d.ts +68 -0
  113. package/dist/collection/utils/keyCodes.utils.d.ts +8 -0
  114. package/dist/collection/utils/platform.d.ts +4 -0
  115. package/dist/collection/utils/resizeObserver.d.ts +1 -0
  116. package/dist/collection/utils/store.utils.d.ts +6 -0
  117. package/dist/esm/{css-shim-8d75038b.js → css-shim-a7f418e3.js} +1 -1
  118. package/dist/esm/{dom-1b195079.js → dom-1f98a75f.js} +1 -1
  119. package/dist/esm/{filter.button-53ebca66.js → filter.button-a5e248dd.js} +1 -1
  120. package/dist/esm/{index-42c84e7c.js → index-daa8bdd4.js} +80 -30
  121. package/dist/esm/loader.js +4 -4
  122. package/dist/esm/revo-grid.js +10 -7
  123. package/dist/esm/revo-grid_11.entry.js +777 -633
  124. package/dist/esm/revogr-clipboard.entry.js +1 -1
  125. package/dist/esm/revogr-filter-panel.entry.js +2 -2
  126. package/dist/index.js +1 -1
  127. package/dist/revo-grid/{css-shim-8d75038b.js → css-shim-a7f418e3.js} +0 -0
  128. package/dist/revo-grid/{dom-1b195079.js → dom-1f98a75f.js} +0 -0
  129. package/dist/revo-grid/{filter.button-1509c206.js → filter.button-bd0e2b0e.js} +1 -1
  130. package/dist/revo-grid/index-51ec8665.js +1 -0
  131. package/dist/revo-grid/revo-grid.esm.js +1 -1
  132. package/dist/revo-grid/revo-grid_11.entry.js +1 -1
  133. package/dist/revo-grid/revogr-clipboard.entry.js +1 -1
  134. package/dist/revo-grid/revogr-filter-panel.entry.js +1 -1
  135. package/dist/types/components/data/cellRenderer.d.ts +4 -1
  136. package/dist/types/components/data/columnService.d.ts +9 -9
  137. package/dist/types/components/data/revogr-data.d.ts +5 -6
  138. package/dist/types/components/header/revogr-header.d.ts +3 -5
  139. package/dist/types/components/revoGrid/grid.helpers.d.ts +5 -0
  140. package/dist/types/components/revoGrid/revo-grid.d.ts +25 -9
  141. package/dist/types/components/revoGrid/viewport.interfaces.d.ts +3 -2
  142. package/dist/types/components/revoGrid/viewport.service.d.ts +4 -7
  143. package/dist/types/components/scroll/revogr-viewport-scroll.d.ts +8 -0
  144. package/dist/types/components.d.ts +30 -12
  145. package/dist/types/interfaces.d.ts +70 -168
  146. package/dist/types/plugins/groupingRow/grouping.row.plugin.d.ts +1 -1
  147. package/dist/types/services/column.data.provider.d.ts +17 -20
  148. package/dist/types/services/dimension.provider.d.ts +3 -4
  149. package/dist/types/services/selection.store.connector.d.ts +18 -4
  150. package/dist/types/stencil-public-runtime.d.ts +183 -182
  151. package/dist/types/store/dataSource/data.store.d.ts +4 -16
  152. package/dist/types/store/dimension/dimension.helpers.d.ts +5 -3
  153. package/dist/types/store/dimension/dimension.store.d.ts +3 -5
  154. package/dist/types/store/selection/selection.store.d.ts +1 -1
  155. package/dist/types/store/viewPort/viewport.helpers.d.ts +1 -1
  156. package/dist/types/store/viewPort/viewport.store.d.ts +5 -2
  157. package/dist/types/utils/consts.d.ts +1 -0
  158. package/dist/types/utils/index.d.ts +21 -0
  159. package/loader/index.js +1 -1
  160. package/package.json +7 -6
  161. package/dist/esm-es5/css-shim-8d75038b.js +0 -1
  162. package/dist/esm-es5/dom-1b195079.js +0 -21
  163. package/dist/esm-es5/filter.button-53ebca66.js +0 -1
  164. package/dist/esm-es5/index-42c84e7c.js +0 -1
  165. package/dist/esm-es5/loader.js +0 -1
  166. package/dist/esm-es5/resize-observer-56b7b34f.js +0 -1
  167. package/dist/esm-es5/revo-grid.js +0 -1
  168. package/dist/esm-es5/revo-grid_11.entry.js +0 -1
  169. package/dist/esm-es5/revogr-clipboard.entry.js +0 -1
  170. package/dist/esm-es5/revogr-filter-panel.entry.js +0 -1
  171. package/dist/revo-grid/css-shim-88bfb262.system.js +0 -1
  172. package/dist/revo-grid/dom-ee2dd1b3.system.js +0 -21
  173. package/dist/revo-grid/filter.button-4bd87101.system.js +0 -1
  174. package/dist/revo-grid/index-a15e7527.system.js +0 -1
  175. package/dist/revo-grid/index-a7f99799.js +0 -1
  176. package/dist/revo-grid/index.system.js +0 -1
  177. package/dist/revo-grid/plugins/autoSizeColumn.d.ts +0 -54
  178. package/dist/revo-grid/plugins/basePlugin.d.ts +0 -46
  179. package/dist/revo-grid/plugins/export/csv.d.ts +0 -9
  180. package/dist/revo-grid/plugins/export/export.plugin.d.ts +0 -24
  181. package/dist/revo-grid/plugins/export/types.d.ts +0 -23
  182. package/dist/revo-grid/plugins/filter/conditions/equal.d.ts +0 -4
  183. package/dist/revo-grid/plugins/filter/conditions/number/greaterThan.d.ts +0 -3
  184. package/dist/revo-grid/plugins/filter/conditions/number/greaterThanOrEqual.d.ts +0 -3
  185. package/dist/revo-grid/plugins/filter/conditions/number/lessThan.d.ts +0 -3
  186. package/dist/revo-grid/plugins/filter/conditions/number/lessThanOrEqual.d.ts +0 -3
  187. package/dist/revo-grid/plugins/filter/conditions/set.d.ts +0 -4
  188. package/dist/revo-grid/plugins/filter/conditions/string/beginswith.d.ts +0 -3
  189. package/dist/revo-grid/plugins/filter/conditions/string/contains.d.ts +0 -4
  190. package/dist/revo-grid/plugins/filter/filter.button.d.ts +0 -10
  191. package/dist/revo-grid/plugins/filter/filter.plugin.d.ts +0 -59
  192. package/dist/revo-grid/plugins/filter/filter.pop.d.ts +0 -42
  193. package/dist/revo-grid/plugins/filter/filter.service.d.ts +0 -20
  194. package/dist/revo-grid/plugins/filter/filter.types.d.ts +0 -8
  195. package/dist/revo-grid/plugins/groupingColumn/columnGroupsRenderer.d.ts +0 -16
  196. package/dist/revo-grid/plugins/groupingColumn/grouping.col.plugin.d.ts +0 -13
  197. package/dist/revo-grid/plugins/groupingColumn/headerGroupRenderer.d.ts +0 -14
  198. package/dist/revo-grid/plugins/groupingRow/grouping.const.d.ts +0 -9
  199. package/dist/revo-grid/plugins/groupingRow/grouping.row.expand.service.d.ts +0 -15
  200. package/dist/revo-grid/plugins/groupingRow/grouping.row.plugin.d.ts +0 -43
  201. package/dist/revo-grid/plugins/groupingRow/grouping.row.renderer.d.ts +0 -9
  202. package/dist/revo-grid/plugins/groupingRow/grouping.row.types.d.ts +0 -19
  203. package/dist/revo-grid/plugins/groupingRow/grouping.service.d.ts +0 -25
  204. package/dist/revo-grid/plugins/groupingRow/grouping.trimmed.service.d.ts +0 -10
  205. package/dist/revo-grid/plugins/sorting/sorting.plugin.d.ts +0 -32
  206. package/dist/revo-grid/plugins/sorting/sorting.sign.d.ts +0 -8
  207. package/dist/revo-grid/plugins/stretchPlugin.d.ts +0 -29
  208. package/dist/revo-grid/plugins/trimmed/trimmed.plugin.d.ts +0 -10
  209. package/dist/revo-grid/resize-observer-7a7b9757.system.js +0 -1
  210. package/dist/revo-grid/revo-grid.js +0 -132
  211. package/dist/revo-grid/revo-grid.system.js +0 -1
  212. package/dist/revo-grid/revo-grid_11.system.entry.js +0 -1
  213. package/dist/revo-grid/revogr-clipboard.system.entry.js +0 -1
  214. package/dist/revo-grid/revogr-filter-panel.system.entry.js +0 -1
@@ -4316,17 +4316,31 @@ class ColumnDataProvider {
4316
4316
  }
4317
4317
  // columns processing
4318
4318
  static getColumns(columns, level = 0, types) {
4319
+ const collection = {
4320
+ columns: {
4321
+ rgCol: [],
4322
+ colPinStart: [],
4323
+ colPinEnd: [],
4324
+ },
4325
+ columnGrouping: {
4326
+ rgCol: [],
4327
+ colPinStart: [],
4328
+ colPinEnd: [],
4329
+ },
4330
+ maxLevel: level,
4331
+ sort: {},
4332
+ };
4319
4333
  return reduce_1(columns, (res, colData) => {
4320
- /** Grouped column */
4334
+ // Grouped column
4321
4335
  if (GroupingColumnPlugin.isColGrouping(colData)) {
4322
4336
  return GroupingColumnPlugin.gatherGroup(res, colData, ColumnDataProvider.getColumns(colData.children, level + 1, types), level);
4323
4337
  }
4324
- /** Regular column */
4338
+ // Regular column
4325
4339
  const regularColumn = Object.assign(Object.assign({}, (colData.columnType && types && types[colData.columnType])), colData);
4326
- // not pin
4340
+ // Regular column, no Pin
4327
4341
  if (!regularColumn.pin) {
4328
4342
  res.columns.rgCol.push(regularColumn);
4329
- // pin
4343
+ // Pin
4330
4344
  }
4331
4345
  else {
4332
4346
  res.columns[regularColumn.pin].push(regularColumn);
@@ -4337,20 +4351,7 @@ class ColumnDataProvider {
4337
4351
  // trigger setup hook if present
4338
4352
  regularColumn.beforeSetup && regularColumn.beforeSetup(regularColumn);
4339
4353
  return res;
4340
- }, {
4341
- columns: {
4342
- rgCol: [],
4343
- colPinStart: [],
4344
- colPinEnd: [],
4345
- },
4346
- columnGrouping: {
4347
- rgCol: [],
4348
- colPinStart: [],
4349
- colPinEnd: [],
4350
- },
4351
- maxLevel: level,
4352
- sort: {},
4353
- });
4354
+ }, collection);
4354
4355
  }
4355
4356
  static getColumnType(rgCol) {
4356
4357
  if (rgCol.pin) {
@@ -4405,424 +4406,71 @@ class DataProvider {
4405
4406
  }
4406
4407
  }
4407
4408
 
4408
- /** Used as references for the maximum length and index of an array. */
4409
- var MAX_ARRAY_LENGTH$2 = 4294967295,
4410
- MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH$2 - 1;
4409
+ var lodash = createCommonjsModule(function (module, exports) {
4410
+ (function() {
4411
4411
 
4412
- /* Built-in method references for those with the same name as other `lodash` methods. */
4413
- var nativeFloor = Math.floor,
4414
- nativeMin$1 = Math.min;
4412
+ /** Used as a safe reference for `undefined` in pre-ES5 environments. */
4413
+ var undefined$1;
4415
4414
 
4416
- /**
4417
- * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`
4418
- * which invokes `iteratee` for `value` and each element of `array` to compute
4419
- * their sort ranking. The iteratee is invoked with one argument; (value).
4420
- *
4421
- * @private
4422
- * @param {Array} array The sorted array to inspect.
4423
- * @param {*} value The value to evaluate.
4424
- * @param {Function} iteratee The iteratee invoked per element.
4425
- * @param {boolean} [retHighest] Specify returning the highest qualified index.
4426
- * @returns {number} Returns the index at which `value` should be inserted
4427
- * into `array`.
4428
- */
4429
- function baseSortedIndexBy(array, value, iteratee, retHighest) {
4430
- var low = 0,
4431
- high = array == null ? 0 : array.length;
4432
- if (high === 0) {
4433
- return 0;
4434
- }
4415
+ /** Used as the semantic version number. */
4416
+ var VERSION = '4.17.21';
4435
4417
 
4436
- value = iteratee(value);
4437
- var valIsNaN = value !== value,
4438
- valIsNull = value === null,
4439
- valIsSymbol = isSymbol_1(value),
4440
- valIsUndefined = value === undefined;
4418
+ /** Used as the size to enable large array optimizations. */
4419
+ var LARGE_ARRAY_SIZE = 200;
4441
4420
 
4442
- while (low < high) {
4443
- var mid = nativeFloor((low + high) / 2),
4444
- computed = iteratee(array[mid]),
4445
- othIsDefined = computed !== undefined,
4446
- othIsNull = computed === null,
4447
- othIsReflexive = computed === computed,
4448
- othIsSymbol = isSymbol_1(computed);
4421
+ /** Error message constants. */
4422
+ var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',
4423
+ FUNC_ERROR_TEXT = 'Expected a function',
4424
+ INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';
4449
4425
 
4450
- if (valIsNaN) {
4451
- var setLow = retHighest || othIsReflexive;
4452
- } else if (valIsUndefined) {
4453
- setLow = othIsReflexive && (retHighest || othIsDefined);
4454
- } else if (valIsNull) {
4455
- setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);
4456
- } else if (valIsSymbol) {
4457
- setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);
4458
- } else if (othIsNull || othIsSymbol) {
4459
- setLow = false;
4460
- } else {
4461
- setLow = retHighest ? (computed <= value) : (computed < value);
4462
- }
4463
- if (setLow) {
4464
- low = mid + 1;
4465
- } else {
4466
- high = mid;
4467
- }
4468
- }
4469
- return nativeMin$1(high, MAX_ARRAY_INDEX);
4470
- }
4426
+ /** Used to stand-in for `undefined` hash values. */
4427
+ var HASH_UNDEFINED = '__lodash_hash_undefined__';
4471
4428
 
4472
- var _baseSortedIndexBy = baseSortedIndexBy;
4429
+ /** Used as the maximum memoize cache size. */
4430
+ var MAX_MEMOIZE_SIZE = 500;
4473
4431
 
4474
- /** Used as references for the maximum length and index of an array. */
4475
- var MAX_ARRAY_LENGTH$1 = 4294967295,
4476
- HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH$1 >>> 1;
4432
+ /** Used as the internal argument placeholder. */
4433
+ var PLACEHOLDER = '__lodash_placeholder__';
4477
4434
 
4478
- /**
4479
- * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which
4480
- * performs a binary search of `array` to determine the index at which `value`
4481
- * should be inserted into `array` in order to maintain its sort order.
4482
- *
4483
- * @private
4484
- * @param {Array} array The sorted array to inspect.
4485
- * @param {*} value The value to evaluate.
4486
- * @param {boolean} [retHighest] Specify returning the highest qualified index.
4487
- * @returns {number} Returns the index at which `value` should be inserted
4488
- * into `array`.
4489
- */
4490
- function baseSortedIndex(array, value, retHighest) {
4491
- var low = 0,
4492
- high = array == null ? low : array.length;
4435
+ /** Used to compose bitmasks for cloning. */
4436
+ var CLONE_DEEP_FLAG = 1,
4437
+ CLONE_FLAT_FLAG = 2,
4438
+ CLONE_SYMBOLS_FLAG = 4;
4493
4439
 
4494
- if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {
4495
- while (low < high) {
4496
- var mid = (low + high) >>> 1,
4497
- computed = array[mid];
4440
+ /** Used to compose bitmasks for value comparisons. */
4441
+ var COMPARE_PARTIAL_FLAG = 1,
4442
+ COMPARE_UNORDERED_FLAG = 2;
4498
4443
 
4499
- if (computed !== null && !isSymbol_1(computed) &&
4500
- (retHighest ? (computed <= value) : (computed < value))) {
4501
- low = mid + 1;
4502
- } else {
4503
- high = mid;
4504
- }
4505
- }
4506
- return high;
4507
- }
4508
- return _baseSortedIndexBy(array, value, identity_1, retHighest);
4509
- }
4444
+ /** Used to compose bitmasks for function metadata. */
4445
+ var WRAP_BIND_FLAG = 1,
4446
+ WRAP_BIND_KEY_FLAG = 2,
4447
+ WRAP_CURRY_BOUND_FLAG = 4,
4448
+ WRAP_CURRY_FLAG = 8,
4449
+ WRAP_CURRY_RIGHT_FLAG = 16,
4450
+ WRAP_PARTIAL_FLAG = 32,
4451
+ WRAP_PARTIAL_RIGHT_FLAG = 64,
4452
+ WRAP_ARY_FLAG = 128,
4453
+ WRAP_REARG_FLAG = 256,
4454
+ WRAP_FLIP_FLAG = 512;
4510
4455
 
4511
- var _baseSortedIndex = baseSortedIndex;
4456
+ /** Used as default options for `_.truncate`. */
4457
+ var DEFAULT_TRUNC_LENGTH = 30,
4458
+ DEFAULT_TRUNC_OMISSION = '...';
4512
4459
 
4513
- /**
4514
- * Uses a binary search to determine the lowest index at which `value`
4515
- * should be inserted into `array` in order to maintain its sort order.
4516
- *
4517
- * @static
4518
- * @memberOf _
4519
- * @since 0.1.0
4520
- * @category Array
4521
- * @param {Array} array The sorted array to inspect.
4522
- * @param {*} value The value to evaluate.
4523
- * @returns {number} Returns the index at which `value` should be inserted
4524
- * into `array`.
4525
- * @example
4526
- *
4527
- * _.sortedIndex([30, 50], 40);
4528
- * // => 1
4529
- */
4530
- function sortedIndex(array, value) {
4531
- return _baseSortedIndex(array, value);
4532
- }
4460
+ /** Used to detect hot functions by number of calls within a span of milliseconds. */
4461
+ var HOT_COUNT = 800,
4462
+ HOT_SPAN = 16;
4533
4463
 
4534
- var sortedIndex_1 = sortedIndex;
4464
+ /** Used to indicate the type of lazy iteratees. */
4465
+ var LAZY_FILTER_FLAG = 1,
4466
+ LAZY_MAP_FLAG = 2,
4467
+ LAZY_WHILE_FLAG = 3;
4535
4468
 
4536
- /* Generate range on size
4537
- */
4538
- // (arr1[index1] < arr2[index2])
4539
- function simpleCompare(el1, el2) {
4540
- return el1 < el2;
4541
- }
4542
- function mergeSortedArray(arr1, arr2, compareFn = simpleCompare) {
4543
- const merged = [];
4544
- let index1 = 0;
4545
- let index2 = 0;
4546
- let current = 0;
4547
- while (current < arr1.length + arr2.length) {
4548
- let isArr1Depleted = index1 >= arr1.length;
4549
- let isArr2Depleted = index2 >= arr2.length;
4550
- if (!isArr1Depleted && (isArr2Depleted || compareFn(arr1[index1], arr2[index2]))) {
4551
- merged[current] = arr1[index1];
4552
- index1++;
4553
- }
4554
- else {
4555
- merged[current] = arr2[index2];
4556
- index2++;
4557
- }
4558
- current++;
4559
- }
4560
- return merged;
4561
- }
4562
- /* Calculate system scrollbar width */
4563
- function getScrollbarWidth(doc) {
4564
- // Creating invisible container
4565
- const outer = doc.createElement('div');
4566
- const styles = outer.style;
4567
- styles.visibility = 'hidden';
4568
- styles.overflow = 'scroll'; // forcing scrollbar to appear
4569
- styles.msOverflowStyle = 'scrollbar'; // needed for WinJS apps
4570
- doc.body.appendChild(outer);
4571
- // Creating inner element and placing it in the container
4572
- const inner = doc.createElement('div');
4573
- outer.appendChild(inner);
4574
- // Calculating difference between container's full width and the child width
4575
- const scrollbarWidth = outer.offsetWidth - inner.offsetWidth;
4576
- // Removing temporary elements from the DOM
4577
- outer.parentNode.removeChild(outer);
4578
- return scrollbarWidth;
4579
- }
4580
- /* Scale a value between 2 ranges
4581
- *
4582
- * Sample:
4583
- * // 55 from a 0-100 range to a 0-1000 range (Ranges don't have to be positive)
4584
- * const n = scaleValue(55, [0,100], [0,1000]);
4585
- *
4586
- * Ranges of two values
4587
- * @from
4588
- * @to
4589
- *
4590
- * ~~ return value does the equivalent of Math.floor but faster.
4591
- */
4592
- function scaleValue(value, from, to) {
4593
- return ((to[1] - to[0]) * (value - from[0])) / (from[1] - from[0]) + to[0];
4594
- }
4595
- async function timeout(delay = 0) {
4596
- await new Promise((r) => {
4597
- setTimeout(() => r(), delay);
4598
- });
4599
- }
4600
-
4601
- /**
4602
- * Pre-calculation
4603
- * Dimension sizes for each cell
4604
- */
4605
- function calculateDimensionData(state, newSizes) {
4606
- let positionIndexes = [];
4607
- const positionIndexToItem = {};
4608
- const indexToItem = {};
4609
- // to compare how real width changed
4610
- let newTotal = 0;
4611
- // combine all sizes
4612
- const sizes = Object.assign(Object.assign({}, state.sizes), newSizes);
4613
- // prepare order sorted new sizes and calculate changed real size
4614
- let newIndexes = [];
4615
- each(newSizes, (size, index) => {
4616
- // if first introduced custom size
4617
- if (!state.sizes[index]) {
4618
- newTotal += size - (state.realSize ? state.originItemSize : 0);
4619
- newIndexes.splice(sortedIndex_1(newIndexes, parseInt(index, 10)), 0, parseInt(index, 10));
4620
- }
4621
- else {
4622
- newTotal += size - state.sizes[index];
4623
- }
4624
- });
4625
- // add order to cached order collection for faster linking
4626
- const updatedIndexesCache = mergeSortedArray(state.indexes, newIndexes);
4627
- // fill new coordinates
4628
- reduce_1(updatedIndexesCache, (previous, itemIndex, i) => {
4629
- const newItem = {
4630
- itemIndex,
4631
- start: 0,
4632
- end: 0,
4633
- };
4634
- if (previous) {
4635
- newItem.start = (itemIndex - previous.itemIndex - 1) * state.originItemSize + previous.end;
4636
- }
4637
- else {
4638
- newItem.start = itemIndex * state.originItemSize;
4639
- }
4640
- newItem.end = newItem.start + sizes[itemIndex];
4641
- positionIndexes.push(newItem.start);
4642
- indexToItem[itemIndex] = positionIndexToItem[i] = newItem;
4643
- return newItem;
4644
- }, undefined);
4645
- return {
4646
- indexes: updatedIndexesCache,
4647
- positionIndexes: [...positionIndexes],
4648
- positionIndexToItem: Object.assign({}, positionIndexToItem),
4649
- indexToItem,
4650
- realSize: state.realSize + newTotal,
4651
- sizes,
4652
- };
4653
- }
4654
- function getItemByPosition({ indexes, positionIndexes, originItemSize, positionIndexToItem }, pos) {
4655
- const item = {
4656
- itemIndex: 0,
4657
- start: 0,
4658
- end: 0,
4659
- };
4660
- const currentPlace = indexes.length ? sortedIndex_1(positionIndexes, pos) : 0;
4661
- // not found or first index
4662
- if (!currentPlace) {
4663
- item.itemIndex = Math.floor(pos / originItemSize);
4664
- item.start = item.itemIndex * originItemSize;
4665
- item.end = item.start + originItemSize;
4666
- return item;
4667
- }
4668
- const positionItem = positionIndexToItem[currentPlace - 1];
4669
- // if item has specified size
4670
- if (positionItem.end > pos) {
4671
- return positionItem;
4672
- }
4673
- // special size item was present before
4674
- const relativePos = pos - positionItem.end;
4675
- const relativeIndex = Math.floor(relativePos / originItemSize);
4676
- item.itemIndex = positionItem.itemIndex + 1 + relativeIndex;
4677
- item.start = positionItem.end + relativeIndex * originItemSize;
4678
- item.end = item.start + originItemSize;
4679
- return item;
4680
- }
4681
- function getItemByIndex(dimension, index) {
4682
- let item = {
4683
- itemIndex: index,
4684
- start: 0,
4685
- end: 0,
4686
- };
4687
- // if item has specified size
4688
- if (dimension.indexToItem[index]) {
4689
- return dimension.indexToItem[index];
4690
- }
4691
- const currentPlace = dimension.indexes.length ? sortedIndex_1(dimension.indexes, index) : 0;
4692
- // not found or first index
4693
- if (!currentPlace) {
4694
- item.start = item.itemIndex * dimension.originItemSize;
4695
- item.end = item.start + dimension.originItemSize;
4696
- return item;
4697
- }
4698
- // special size item was present before
4699
- const positionItem = dimension.indexToItem[dimension.indexes[currentPlace - 1]];
4700
- item.start = positionItem.end + (index - positionItem.itemIndex - 1) * dimension.originItemSize;
4701
- item.end = item.start + dimension.originItemSize;
4702
- return item;
4703
- }
4704
-
4705
- /**
4706
- * Storing pre-calculated
4707
- * Dimension information and sizes
4708
- */
4709
- function initialBase() {
4710
- return {
4711
- indexes: [],
4712
- // item index to size
4713
- sizes: {},
4714
- // order in indexes[] to coordinate
4715
- positionIndexToItem: {},
4716
- // initial element to coordinate ^
4717
- indexToItem: {},
4718
- positionIndexes: [],
4719
- };
4720
- }
4721
- function initialState$1() {
4722
- return Object.assign(Object.assign({}, initialBase()), {
4723
- // size which all items can take
4724
- realSize: 0,
4725
- // initial item size if it wasn't changed
4726
- originItemSize: 0, frameOffset: 0 });
4727
- }
4728
- class DimensionStore {
4729
- constructor() {
4730
- this.store = createStore(initialState$1());
4731
- }
4732
- getCurrentState() {
4733
- const state = initialState$1();
4734
- const keys = Object.keys(state);
4735
- return reduce_1(keys, (r, k) => {
4736
- const data = this.store.get(k);
4737
- r[k] = data;
4738
- return r;
4739
- }, state);
4740
- }
4741
- setRealSize(count) {
4742
- let realSize = 0;
4743
- for (let i = 0; i < count; i++) {
4744
- realSize += this.store.get('sizes')[i] || this.store.get('originItemSize');
4745
- }
4746
- setStore(this.store, { realSize });
4747
- }
4748
- setStore(data) {
4749
- setStore(this.store, data);
4750
- }
4751
- drop() {
4752
- setStore(this.store, initialBase());
4753
- }
4754
- setDimensionSize(sizes) {
4755
- const dimensionData = calculateDimensionData(this.getCurrentState(), sizes);
4756
- setStore(this.store, dimensionData);
4757
- return dimensionData;
4758
- }
4759
- }
4760
-
4761
- var lodash = createCommonjsModule(function (module, exports) {
4762
- (function() {
4763
-
4764
- /** Used as a safe reference for `undefined` in pre-ES5 environments. */
4765
- var undefined$1;
4766
-
4767
- /** Used as the semantic version number. */
4768
- var VERSION = '4.17.21';
4769
-
4770
- /** Used as the size to enable large array optimizations. */
4771
- var LARGE_ARRAY_SIZE = 200;
4772
-
4773
- /** Error message constants. */
4774
- var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',
4775
- FUNC_ERROR_TEXT = 'Expected a function',
4776
- INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';
4777
-
4778
- /** Used to stand-in for `undefined` hash values. */
4779
- var HASH_UNDEFINED = '__lodash_hash_undefined__';
4780
-
4781
- /** Used as the maximum memoize cache size. */
4782
- var MAX_MEMOIZE_SIZE = 500;
4783
-
4784
- /** Used as the internal argument placeholder. */
4785
- var PLACEHOLDER = '__lodash_placeholder__';
4786
-
4787
- /** Used to compose bitmasks for cloning. */
4788
- var CLONE_DEEP_FLAG = 1,
4789
- CLONE_FLAT_FLAG = 2,
4790
- CLONE_SYMBOLS_FLAG = 4;
4791
-
4792
- /** Used to compose bitmasks for value comparisons. */
4793
- var COMPARE_PARTIAL_FLAG = 1,
4794
- COMPARE_UNORDERED_FLAG = 2;
4795
-
4796
- /** Used to compose bitmasks for function metadata. */
4797
- var WRAP_BIND_FLAG = 1,
4798
- WRAP_BIND_KEY_FLAG = 2,
4799
- WRAP_CURRY_BOUND_FLAG = 4,
4800
- WRAP_CURRY_FLAG = 8,
4801
- WRAP_CURRY_RIGHT_FLAG = 16,
4802
- WRAP_PARTIAL_FLAG = 32,
4803
- WRAP_PARTIAL_RIGHT_FLAG = 64,
4804
- WRAP_ARY_FLAG = 128,
4805
- WRAP_REARG_FLAG = 256,
4806
- WRAP_FLIP_FLAG = 512;
4807
-
4808
- /** Used as default options for `_.truncate`. */
4809
- var DEFAULT_TRUNC_LENGTH = 30,
4810
- DEFAULT_TRUNC_OMISSION = '...';
4811
-
4812
- /** Used to detect hot functions by number of calls within a span of milliseconds. */
4813
- var HOT_COUNT = 800,
4814
- HOT_SPAN = 16;
4815
-
4816
- /** Used to indicate the type of lazy iteratees. */
4817
- var LAZY_FILTER_FLAG = 1,
4818
- LAZY_MAP_FLAG = 2,
4819
- LAZY_WHILE_FLAG = 3;
4820
-
4821
- /** Used as references for various `Number` constants. */
4822
- var INFINITY = 1 / 0,
4823
- MAX_SAFE_INTEGER = 9007199254740991,
4824
- MAX_INTEGER = 1.7976931348623157e+308,
4825
- NAN = 0 / 0;
4469
+ /** Used as references for various `Number` constants. */
4470
+ var INFINITY = 1 / 0,
4471
+ MAX_SAFE_INTEGER = 9007199254740991,
4472
+ MAX_INTEGER = 1.7976931348623157e+308,
4473
+ NAN = 0 / 0;
4826
4474
 
4827
4475
  /** Used as references for the maximum length and index of an array. */
4828
4476
  var MAX_ARRAY_LENGTH = 4294967295,
@@ -21948,22 +21596,388 @@ var lodash = createCommonjsModule(function (module, exports) {
21948
21596
  }.call(commonjsGlobal));
21949
21597
  });
21950
21598
 
21599
+ /** Used as references for the maximum length and index of an array. */
21600
+ var MAX_ARRAY_LENGTH$2 = 4294967295,
21601
+ MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH$2 - 1;
21602
+
21603
+ /* Built-in method references for those with the same name as other `lodash` methods. */
21604
+ var nativeFloor = Math.floor,
21605
+ nativeMin$1 = Math.min;
21606
+
21607
+ /**
21608
+ * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`
21609
+ * which invokes `iteratee` for `value` and each element of `array` to compute
21610
+ * their sort ranking. The iteratee is invoked with one argument; (value).
21611
+ *
21612
+ * @private
21613
+ * @param {Array} array The sorted array to inspect.
21614
+ * @param {*} value The value to evaluate.
21615
+ * @param {Function} iteratee The iteratee invoked per element.
21616
+ * @param {boolean} [retHighest] Specify returning the highest qualified index.
21617
+ * @returns {number} Returns the index at which `value` should be inserted
21618
+ * into `array`.
21619
+ */
21620
+ function baseSortedIndexBy(array, value, iteratee, retHighest) {
21621
+ var low = 0,
21622
+ high = array == null ? 0 : array.length;
21623
+ if (high === 0) {
21624
+ return 0;
21625
+ }
21626
+
21627
+ value = iteratee(value);
21628
+ var valIsNaN = value !== value,
21629
+ valIsNull = value === null,
21630
+ valIsSymbol = isSymbol_1(value),
21631
+ valIsUndefined = value === undefined;
21632
+
21633
+ while (low < high) {
21634
+ var mid = nativeFloor((low + high) / 2),
21635
+ computed = iteratee(array[mid]),
21636
+ othIsDefined = computed !== undefined,
21637
+ othIsNull = computed === null,
21638
+ othIsReflexive = computed === computed,
21639
+ othIsSymbol = isSymbol_1(computed);
21640
+
21641
+ if (valIsNaN) {
21642
+ var setLow = retHighest || othIsReflexive;
21643
+ } else if (valIsUndefined) {
21644
+ setLow = othIsReflexive && (retHighest || othIsDefined);
21645
+ } else if (valIsNull) {
21646
+ setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);
21647
+ } else if (valIsSymbol) {
21648
+ setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);
21649
+ } else if (othIsNull || othIsSymbol) {
21650
+ setLow = false;
21651
+ } else {
21652
+ setLow = retHighest ? (computed <= value) : (computed < value);
21653
+ }
21654
+ if (setLow) {
21655
+ low = mid + 1;
21656
+ } else {
21657
+ high = mid;
21658
+ }
21659
+ }
21660
+ return nativeMin$1(high, MAX_ARRAY_INDEX);
21661
+ }
21662
+
21663
+ var _baseSortedIndexBy = baseSortedIndexBy;
21664
+
21665
+ /** Used as references for the maximum length and index of an array. */
21666
+ var MAX_ARRAY_LENGTH$1 = 4294967295,
21667
+ HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH$1 >>> 1;
21668
+
21669
+ /**
21670
+ * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which
21671
+ * performs a binary search of `array` to determine the index at which `value`
21672
+ * should be inserted into `array` in order to maintain its sort order.
21673
+ *
21674
+ * @private
21675
+ * @param {Array} array The sorted array to inspect.
21676
+ * @param {*} value The value to evaluate.
21677
+ * @param {boolean} [retHighest] Specify returning the highest qualified index.
21678
+ * @returns {number} Returns the index at which `value` should be inserted
21679
+ * into `array`.
21680
+ */
21681
+ function baseSortedIndex(array, value, retHighest) {
21682
+ var low = 0,
21683
+ high = array == null ? low : array.length;
21684
+
21685
+ if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {
21686
+ while (low < high) {
21687
+ var mid = (low + high) >>> 1,
21688
+ computed = array[mid];
21689
+
21690
+ if (computed !== null && !isSymbol_1(computed) &&
21691
+ (retHighest ? (computed <= value) : (computed < value))) {
21692
+ low = mid + 1;
21693
+ } else {
21694
+ high = mid;
21695
+ }
21696
+ }
21697
+ return high;
21698
+ }
21699
+ return _baseSortedIndexBy(array, value, identity_1, retHighest);
21700
+ }
21701
+
21702
+ var _baseSortedIndex = baseSortedIndex;
21703
+
21704
+ /**
21705
+ * Uses a binary search to determine the lowest index at which `value`
21706
+ * should be inserted into `array` in order to maintain its sort order.
21707
+ *
21708
+ * @static
21709
+ * @memberOf _
21710
+ * @since 0.1.0
21711
+ * @category Array
21712
+ * @param {Array} array The sorted array to inspect.
21713
+ * @param {*} value The value to evaluate.
21714
+ * @returns {number} Returns the index at which `value` should be inserted
21715
+ * into `array`.
21716
+ * @example
21717
+ *
21718
+ * _.sortedIndex([30, 50], 40);
21719
+ * // => 1
21720
+ */
21721
+ function sortedIndex(array, value) {
21722
+ return _baseSortedIndex(array, value);
21723
+ }
21724
+
21725
+ var sortedIndex_1 = sortedIndex;
21726
+
21727
+ // (arr1[index1] < arr2[index2])
21728
+ function simpleCompare(el1, el2) {
21729
+ return el1 < el2;
21730
+ }
21731
+ /**
21732
+ * Merge sorted array helper function
21733
+ */
21734
+ function mergeSortedArray(arr1, arr2, compareFn = simpleCompare) {
21735
+ const merged = [];
21736
+ let index1 = 0;
21737
+ let index2 = 0;
21738
+ let current = 0;
21739
+ while (current < arr1.length + arr2.length) {
21740
+ let isArr1Depleted = index1 >= arr1.length;
21741
+ let isArr2Depleted = index2 >= arr2.length;
21742
+ if (!isArr1Depleted && (isArr2Depleted || compareFn(arr1[index1], arr2[index2]))) {
21743
+ merged[current] = arr1[index1];
21744
+ index1++;
21745
+ }
21746
+ else {
21747
+ merged[current] = arr2[index2];
21748
+ index2++;
21749
+ }
21750
+ current++;
21751
+ }
21752
+ return merged;
21753
+ }
21754
+ /* Calculate system scrollbar width */
21755
+ function getScrollbarWidth(doc) {
21756
+ // Creating invisible container
21757
+ const outer = doc.createElement('div');
21758
+ const styles = outer.style;
21759
+ styles.visibility = 'hidden';
21760
+ styles.overflow = 'scroll'; // forcing scrollbar to appear
21761
+ styles.msOverflowStyle = 'scrollbar'; // needed for WinJS apps
21762
+ doc.body.appendChild(outer);
21763
+ // Creating inner element and placing it in the container
21764
+ const inner = doc.createElement('div');
21765
+ outer.appendChild(inner);
21766
+ // Calculating difference between container's full width and the child width
21767
+ const scrollbarWidth = outer.offsetWidth - inner.offsetWidth;
21768
+ // Removing temporary elements from the DOM
21769
+ outer.parentNode.removeChild(outer);
21770
+ return scrollbarWidth;
21771
+ }
21772
+ /* Scale a value between 2 ranges
21773
+ *
21774
+ * Sample:
21775
+ * // 55 from a 0-100 range to a 0-1000 range (Ranges don't have to be positive)
21776
+ * const n = scaleValue(55, [0,100], [0,1000]);
21777
+ *
21778
+ * Ranges of two values
21779
+ * @from
21780
+ * @to
21781
+ *
21782
+ * ~~ return value does the equivalent of Math.floor but faster.
21783
+ */
21784
+ function scaleValue(value, from, to) {
21785
+ return ((to[1] - to[0]) * (value - from[0])) / (from[1] - from[0]) + to[0];
21786
+ }
21787
+ /**
21788
+ * Async timeout
21789
+ */
21790
+ async function timeout(delay = 0) {
21791
+ await new Promise((r) => {
21792
+ setTimeout(() => r(), delay);
21793
+ });
21794
+ }
21795
+
21796
+ /**
21797
+ * Pre-calculation
21798
+ * Dimension sizes for each cell
21799
+ */
21800
+ function calculateDimensionData({ sizes: oldSizes, indexes: oldIndexes, originItemSize, realSize }, newSizes = {}) {
21801
+ const positionIndexes = [];
21802
+ const positionIndexToItem = {};
21803
+ const indexToItem = {};
21804
+ // to compare how real width changed
21805
+ let newTotal = 0;
21806
+ // combine all sizes
21807
+ const sizes = Object.assign(Object.assign({}, oldSizes), newSizes);
21808
+ // prepare order sorted new sizes and calculate changed real size
21809
+ let newIndexes = [];
21810
+ each(newSizes, (size, index) => {
21811
+ // if first introduced custom size
21812
+ if (!oldSizes[index]) {
21813
+ newTotal += size - (realSize ? originItemSize : 0);
21814
+ newIndexes.splice(sortedIndex_1(newIndexes, parseInt(index, 10)), 0, parseInt(index, 10));
21815
+ }
21816
+ else {
21817
+ newTotal += size - oldSizes[index];
21818
+ }
21819
+ });
21820
+ // add order to cached order collection for faster linking
21821
+ const updatedIndexesCache = mergeSortedArray(oldIndexes, newIndexes);
21822
+ // fill new coordinates
21823
+ reduce_1(updatedIndexesCache, (previous, itemIndex, i) => {
21824
+ const newItem = {
21825
+ itemIndex,
21826
+ start: 0,
21827
+ end: 0,
21828
+ };
21829
+ if (previous) {
21830
+ newItem.start = (itemIndex - previous.itemIndex - 1) * originItemSize + previous.end;
21831
+ }
21832
+ else {
21833
+ newItem.start = itemIndex * originItemSize;
21834
+ }
21835
+ newItem.end = newItem.start + sizes[itemIndex];
21836
+ positionIndexes.push(newItem.start);
21837
+ indexToItem[itemIndex] = positionIndexToItem[i] = newItem;
21838
+ return newItem;
21839
+ }, undefined);
21840
+ return {
21841
+ indexes: updatedIndexesCache,
21842
+ positionIndexes: [...positionIndexes],
21843
+ positionIndexToItem: Object.assign({}, positionIndexToItem),
21844
+ indexToItem,
21845
+ realSize: realSize + newTotal,
21846
+ sizes,
21847
+ };
21848
+ }
21849
+ /**
21850
+ * Calculate item by position
21851
+ */
21852
+ function getItemByPosition({ indexes, positionIndexes, originItemSize, positionIndexToItem }, pos) {
21853
+ const item = {
21854
+ itemIndex: 0,
21855
+ start: 0,
21856
+ end: 0,
21857
+ };
21858
+ const currentPlace = indexes.length ? sortedIndex_1(positionIndexes, pos) : 0;
21859
+ // not found or first index
21860
+ if (!currentPlace) {
21861
+ item.itemIndex = Math.floor(pos / originItemSize);
21862
+ item.start = item.itemIndex * originItemSize;
21863
+ item.end = item.start + originItemSize;
21864
+ return item;
21865
+ }
21866
+ const positionItem = positionIndexToItem[currentPlace - 1];
21867
+ // if item has specified size
21868
+ if (positionItem.end > pos) {
21869
+ return positionItem;
21870
+ }
21871
+ // special size item was present before
21872
+ const relativePos = pos - positionItem.end;
21873
+ const relativeIndex = Math.floor(relativePos / originItemSize);
21874
+ item.itemIndex = positionItem.itemIndex + 1 + relativeIndex;
21875
+ item.start = positionItem.end + relativeIndex * originItemSize;
21876
+ item.end = item.start + originItemSize;
21877
+ return item;
21878
+ }
21879
+ function getItemByIndex(dimension, index) {
21880
+ let item = {
21881
+ itemIndex: index,
21882
+ start: 0,
21883
+ end: 0,
21884
+ };
21885
+ // if item has specified size
21886
+ if (dimension.indexToItem[index]) {
21887
+ return dimension.indexToItem[index];
21888
+ }
21889
+ const currentPlace = dimension.indexes.length ? sortedIndex_1(dimension.indexes, index) : 0;
21890
+ // not found or first index
21891
+ if (!currentPlace) {
21892
+ item.start = item.itemIndex * dimension.originItemSize;
21893
+ item.end = item.start + dimension.originItemSize;
21894
+ return item;
21895
+ }
21896
+ // special size item was present before
21897
+ const positionItem = dimension.indexToItem[dimension.indexes[currentPlace - 1]];
21898
+ item.start = positionItem.end + (index - positionItem.itemIndex - 1) * dimension.originItemSize;
21899
+ item.end = item.start + dimension.originItemSize;
21900
+ return item;
21901
+ }
21902
+
21903
+ /**
21904
+ * Storing pre-calculated
21905
+ * Dimension information and sizes
21906
+ */
21907
+ function initialBase() {
21908
+ return {
21909
+ indexes: [],
21910
+ // item index to size
21911
+ sizes: {},
21912
+ // order in indexes[] to coordinate
21913
+ positionIndexToItem: {},
21914
+ // initial element to coordinate ^
21915
+ indexToItem: {},
21916
+ positionIndexes: [],
21917
+ };
21918
+ }
21919
+ function initialState$1() {
21920
+ return Object.assign(Object.assign({}, initialBase()), {
21921
+ // size which all items can take
21922
+ realSize: 0,
21923
+ // initial item size if it wasn't changed
21924
+ originItemSize: 0 });
21925
+ }
21926
+ class DimensionStore {
21927
+ constructor() {
21928
+ this.store = createStore(initialState$1());
21929
+ }
21930
+ getCurrentState() {
21931
+ const state = initialState$1();
21932
+ const keys = Object.keys(state);
21933
+ return reduce_1(keys, (r, k) => {
21934
+ const data = this.store.get(k);
21935
+ r[k] = data;
21936
+ return r;
21937
+ }, state);
21938
+ }
21939
+ setRealSize(count) {
21940
+ let realSize = 0;
21941
+ for (let i = 0; i < count; i++) {
21942
+ realSize += this.store.get('sizes')[i] || this.store.get('originItemSize');
21943
+ }
21944
+ setStore(this.store, { realSize });
21945
+ }
21946
+ dispose() {
21947
+ setStore(this.store, initialState$1());
21948
+ }
21949
+ setStore(data) {
21950
+ setStore(this.store, data);
21951
+ }
21952
+ drop() {
21953
+ setStore(this.store, initialBase());
21954
+ }
21955
+ setDimensionSize(sizes) {
21956
+ const dimensionData = calculateDimensionData(this.getCurrentState(), sizes);
21957
+ setStore(this.store, dimensionData);
21958
+ return dimensionData;
21959
+ }
21960
+ }
21961
+
21951
21962
  class DimensionProvider {
21952
21963
  constructor(viewports, config) {
21953
21964
  this.viewports = viewports;
21954
- const sizeChanged = lodash.debounce(() => config.realSizeChanged(), 100);
21965
+ const sizeChanged = lodash.debounce((k) => config.realSizeChanged(k), 100);
21955
21966
  this.stores = reduce_1([...rowTypes, ...columnTypes], (sources, k) => {
21956
21967
  sources[k] = new DimensionStore();
21957
- sources[k].store.onChange('realSize', () => sizeChanged());
21968
+ sources[k].store.onChange('realSize', () => sizeChanged(k));
21958
21969
  return sources;
21959
21970
  }, {});
21960
21971
  }
21961
- getItemByPosition(data, pos) {
21962
- return getItemByPosition(data, pos);
21972
+ clearSize(t, count) {
21973
+ this.stores[t].drop();
21974
+ // after we done with drop trigger viewport recalculaction
21975
+ this.viewports.stores[t].setOriginalSizes(this.stores[t].store.get('originItemSize'));
21976
+ this.setRealSize(count, t);
21963
21977
  }
21964
- setDimensionSize(dimensionType, sizes) {
21965
- this.stores[dimensionType].setDimensionSize(sizes);
21966
- this.viewports.stores[dimensionType].setViewPortDimension(sizes);
21978
+ setDimensionSize(type, sizes) {
21979
+ this.stores[type].setDimensionSize(sizes);
21980
+ this.viewports.stores[type].setViewPortDimension(sizes);
21967
21981
  }
21968
21982
  setRealSize(realCount, type) {
21969
21983
  this.viewports.stores[type].setViewport({ realCount });
@@ -22006,7 +22020,7 @@ class DimensionProvider {
22006
22020
  return { y, x };
22007
22021
  }
22008
22022
  setColumns(type, sizes, noVirtual = false) {
22009
- this.stores[type].setDimensionSize(sizes);
22023
+ this.setDimensionSize(type, sizes);
22010
22024
  if (noVirtual) {
22011
22025
  this.setNoVirtual(type);
22012
22026
  }
@@ -22225,7 +22239,7 @@ function getLastItem(s) {
22225
22239
  * Viewport information for each dimension
22226
22240
  * Redraw items during scrolling
22227
22241
  */
22228
- function initialState() {
22242
+ function initialState(type) {
22229
22243
  return {
22230
22244
  // virtual item information per rendered item
22231
22245
  items: [],
@@ -22238,12 +22252,15 @@ function initialState() {
22238
22252
  realCount: 0,
22239
22253
  // last coordinate for store position restore
22240
22254
  lastCoordinate: 0,
22255
+ type
22241
22256
  };
22242
22257
  }
22243
22258
  class ViewportStore {
22244
- constructor() {
22245
- this.store = createStore(initialState());
22246
- this.store.onChange('realCount', () => this.clear());
22259
+ constructor(type) {
22260
+ this.store = createStore(initialState(type));
22261
+ this.store.onChange('realCount', () => {
22262
+ this.clear();
22263
+ });
22247
22264
  }
22248
22265
  /** Render viewport based on coordinate, this is main method for draw */
22249
22266
  setViewPortCoordinate(position, dimension) {
@@ -22252,7 +22269,7 @@ class ViewportStore {
22252
22269
  if (!virtualSize) {
22253
22270
  return;
22254
22271
  }
22255
- const frameOffset = dimension.frameOffset;
22272
+ const frameOffset = 1;
22256
22273
  const outsize = frameOffset * 2 * dimension.originItemSize;
22257
22274
  virtualSize += outsize;
22258
22275
  let maxCoordinate = virtualSize;
@@ -22288,7 +22305,9 @@ class ViewportStore {
22288
22305
  }
22289
22306
  }
22290
22307
  }
22291
- /** Update viewport sizes */
22308
+ /**
22309
+ * Update viewport sizes
22310
+ */
22292
22311
  setViewPortDimension(sizes) {
22293
22312
  const items = this.store.get('items');
22294
22313
  const count = items.length;
@@ -22324,6 +22343,32 @@ class ViewportStore {
22324
22343
  }
22325
22344
  setStore(this.store, { items: [...items] });
22326
22345
  }
22346
+ setOriginalSizes(size) {
22347
+ const items = this.store.get('items');
22348
+ const count = items.length;
22349
+ // viewport not inited
22350
+ if (!count) {
22351
+ return;
22352
+ }
22353
+ let i = 0;
22354
+ let start = this.store.get('start');
22355
+ let pos = this.store.get('lastCoordinate');
22356
+ // loop through array from initial item after recombination
22357
+ while (i < count) {
22358
+ const item = items[start];
22359
+ item.start = pos;
22360
+ item.size = size;
22361
+ item.end = item.start + size;
22362
+ pos = item.end;
22363
+ // loop by start index
22364
+ start++;
22365
+ i++;
22366
+ if (start === count) {
22367
+ start = 0;
22368
+ }
22369
+ }
22370
+ setStore(this.store, { items: [...items] });
22371
+ }
22327
22372
  getItems() {
22328
22373
  return {
22329
22374
  items: this.store.get('items'),
@@ -22342,7 +22387,7 @@ class ViewportStore {
22342
22387
  class ViewportProvider {
22343
22388
  constructor() {
22344
22389
  this.stores = reduce_1([...rowTypes, ...columnTypes], (sources, k) => {
22345
- sources[k] = new ViewportStore();
22390
+ sources[k] = new ViewportStore(k);
22346
22391
  return sources;
22347
22392
  }, {});
22348
22393
  }
@@ -22393,7 +22438,7 @@ class AutoSizeColumn extends BasePlugin {
22393
22438
  this.columnSet(columns);
22394
22439
  };
22395
22440
  const headerDblClick = ({ detail }) => {
22396
- const type = ColumnDataProvider.getColumnType(detail);
22441
+ const type = ColumnDataProvider.getColumnType(detail.column);
22397
22442
  const size = this.getColumnSize(detail.index, type);
22398
22443
  if (size) {
22399
22444
  this.providers.dimensionProvider.setDimensionSize(type, {
@@ -23394,6 +23439,7 @@ const DATA_ROW = 'data-rgRow';
23394
23439
  const UUID = 'grid-uuid';
23395
23440
  const DISABLED_CLASS = 'disabled';
23396
23441
  const CELL_CLASS = 'rgCell';
23442
+ const ROW_HEADER_TYPE = 'rowHeaders';
23397
23443
  const HEADER_CLASS = 'rgHeaderCell';
23398
23444
  const HEADER_SORTABLE_CLASS = 'sortable';
23399
23445
  const HEADER_ROW_CLASS = 'header-rgRow';
@@ -24229,13 +24275,15 @@ const RevoViewPort = ({ viewports, dimensions, orderRef, nakedClick, registerEle
24229
24275
  }
24230
24276
  };
24231
24277
  let el;
24278
+ const typeRow = 'rgRow';
24279
+ const typeCol = 'rgCol';
24232
24280
  return [
24233
24281
  h("div", { class: "main-viewport", ref: e => (el = e), onClick: e => viewPortClick(e, el) },
24234
24282
  h("div", { class: "viewports" },
24235
24283
  children,
24236
- h("revogr-scroll-virtual", { class: "vertical", dimension: "rgRow", viewportStore: viewports['rgRow'].store, dimensionStore: dimensions['rgRow'].store, ref: el => registerElement(el, 'rowScroll'), onScrollVirtual: e => onScroll(e.detail) }),
24284
+ h("revogr-scroll-virtual", { class: "vertical", dimension: typeRow, viewportStore: viewports[typeRow].store, dimensionStore: dimensions[typeRow].store, ref: el => registerElement(el, 'rowScroll'), onScrollVirtual: e => onScroll(e.detail) }),
24237
24285
  h(OrderRenderer, { ref: orderRef }))),
24238
- h("revogr-scroll-virtual", { class: "horizontal", dimension: "rgCol", viewportStore: viewports['rgCol'].store, dimensionStore: dimensions['rgCol'].store, ref: el => registerElement(el, 'colScroll'), onScrollVirtual: e => onScroll(e.detail) }),
24286
+ h("revogr-scroll-virtual", { class: "horizontal", dimension: typeCol, viewportStore: viewports[typeCol].store, dimensionStore: dimensions[typeCol].store, ref: el => registerElement(el, 'colScroll'), onScrollVirtual: e => onScroll(e.detail) }),
24239
24287
  ];
24240
24288
  };
24241
24289
 
@@ -24319,12 +24367,17 @@ class SelectionStore {
24319
24367
  setStore(this.store, { focus: null, range: null, edit: null, tempRange: null });
24320
24368
  }
24321
24369
  setFocus(focus, end) {
24322
- setStore(this.store, {
24323
- focus,
24324
- range: getRange(focus, end),
24325
- edit: null,
24326
- tempRange: null,
24327
- });
24370
+ if (!end) {
24371
+ setStore(this.store, { focus });
24372
+ }
24373
+ else {
24374
+ setStore(this.store, {
24375
+ focus,
24376
+ range: getRange(focus, end),
24377
+ edit: null,
24378
+ tempRange: null,
24379
+ });
24380
+ }
24328
24381
  }
24329
24382
  setTempArea(range) {
24330
24383
  setStore(this.store, { tempRange: range === null || range === void 0 ? void 0 : range.area, tempRangeType: range === null || range === void 0 ? void 0 : range.type, edit: null });
@@ -24366,6 +24419,12 @@ class SelectionStoreConnector {
24366
24419
  this.stores = {};
24367
24420
  this.columnStores = {};
24368
24421
  this.rowStores = {};
24422
+ /**
24423
+ * Helpers for data conversion
24424
+ */
24425
+ this.storesByType = {};
24426
+ this.storesXToType = {};
24427
+ this.storesYToType = {};
24369
24428
  this.sections = [];
24370
24429
  }
24371
24430
  get focusedStore() {
@@ -24417,8 +24476,8 @@ class SelectionStoreConnector {
24417
24476
  this.dirty = false;
24418
24477
  }
24419
24478
  }
24420
- registerColumn(x) {
24421
- // if hidden just create store
24479
+ registerColumn(x, type) {
24480
+ // if hidden just create store but no operations needed
24422
24481
  if (isHiddenStore(x)) {
24423
24482
  return new SelectionStore();
24424
24483
  }
@@ -24426,9 +24485,12 @@ class SelectionStoreConnector {
24426
24485
  return this.columnStores[x];
24427
24486
  }
24428
24487
  this.columnStores[x] = new SelectionStore();
24488
+ // build cross linking type to position
24489
+ this.storesByType[type] = x;
24490
+ this.storesXToType[x] = type;
24429
24491
  return this.columnStores[x];
24430
24492
  }
24431
- registerRow(y) {
24493
+ registerRow(y, type) {
24432
24494
  // if hidden just create store
24433
24495
  if (isHiddenStore(y)) {
24434
24496
  return new SelectionStore();
@@ -24437,6 +24499,9 @@ class SelectionStoreConnector {
24437
24499
  return this.rowStores[y];
24438
24500
  }
24439
24501
  this.rowStores[y] = new SelectionStore();
24502
+ // build cross linking type to position
24503
+ this.storesByType[type] = y;
24504
+ this.storesYToType[y] = type;
24440
24505
  return this.rowStores[y];
24441
24506
  }
24442
24507
  /**
@@ -24462,22 +24527,35 @@ class SelectionStoreConnector {
24462
24527
  this.rowStores[y].setRangeArea(c);
24463
24528
  });
24464
24529
  // clean up on remove
24465
- (_b = this.stores[y][x]) === null || _b === void 0 ? void 0 : _b.store.on('dispose', () => {
24466
- var _a, _b;
24467
- (_a = this.columnStores[x]) === null || _a === void 0 ? void 0 : _a.dispose();
24468
- (_b = this.rowStores[y]) === null || _b === void 0 ? void 0 : _b.dispose();
24469
- delete this.rowStores[y];
24470
- delete this.columnStores[x];
24471
- if (this.stores[y]) {
24472
- delete this.stores[y][x];
24473
- }
24474
- // clear empty rows
24475
- if (!Object.keys(this.stores[y] || {}).length) {
24476
- delete this.stores[y];
24477
- }
24478
- });
24530
+ (_b = this.stores[y][x]) === null || _b === void 0 ? void 0 : _b.store.on('dispose', () => this.destroy(x, y));
24479
24531
  return this.stores[y][x];
24480
24532
  }
24533
+ destroy(x, y) {
24534
+ var _a, _b;
24535
+ (_a = this.columnStores[x]) === null || _a === void 0 ? void 0 : _a.dispose();
24536
+ (_b = this.rowStores[y]) === null || _b === void 0 ? void 0 : _b.dispose();
24537
+ delete this.rowStores[y];
24538
+ delete this.columnStores[x];
24539
+ // clear x cross link
24540
+ if (this.storesXToType[x]) {
24541
+ const type = this.storesXToType[x];
24542
+ delete this.storesXToType[x];
24543
+ delete this.storesByType[type];
24544
+ }
24545
+ // clear y cross link
24546
+ if (this.storesYToType[y]) {
24547
+ const type = this.storesYToType[y];
24548
+ delete this.storesYToType[y];
24549
+ delete this.storesByType[type];
24550
+ }
24551
+ if (this.stores[y]) {
24552
+ delete this.stores[y][x];
24553
+ }
24554
+ // clear empty rows
24555
+ if (!Object.keys(this.stores[y] || {}).length) {
24556
+ delete this.stores[y];
24557
+ }
24558
+ }
24481
24559
  setEditByCell(storePos, editCell) {
24482
24560
  this.focusByCell(storePos, editCell, editCell);
24483
24561
  this.setEdit('');
@@ -24585,20 +24663,18 @@ class ViewportService {
24585
24663
  constructor(sv, contentHeight) {
24586
24664
  var _a, _b;
24587
24665
  this.sv = sv;
24588
- this.storesByType = {};
24589
- this.storesXToType = {};
24590
- this.storesYToType = {};
24591
24666
  (_a = this.sv.selectionStoreConnector) === null || _a === void 0 ? void 0 : _a.beforeUpdate();
24592
24667
  this.columns = this.getViewportColumnData(contentHeight);
24593
24668
  (_b = this.sv.scrollingService) === null || _b === void 0 ? void 0 : _b.unregister();
24594
24669
  }
24595
- onColumnResize(type, e, store) {
24670
+ onColumnResize(type, { detail }, store) {
24596
24671
  var _a;
24597
- (_a = this.sv.dimensionProvider) === null || _a === void 0 ? void 0 : _a.setDimensionSize(type, e.detail);
24598
- const changedItems = lodash.reduce(e.detail || {}, (r, size, index) => {
24599
- const item = getSourceItem(store, parseInt(index, 10));
24672
+ (_a = this.sv.dimensionProvider) === null || _a === void 0 ? void 0 : _a.setDimensionSize(type, detail);
24673
+ const changedItems = lodash.reduce(detail || {}, (r, size, i) => {
24674
+ const index = parseInt(i, 10);
24675
+ const item = getSourceItem(store, index);
24600
24676
  if (item) {
24601
- r[item.prop] = Object.assign(Object.assign({}, item), { size });
24677
+ r[index] = Object.assign(Object.assign({}, item), { size });
24602
24678
  }
24603
24679
  return r;
24604
24680
  }, {});
@@ -24628,9 +24704,7 @@ class ViewportService {
24628
24704
  colStore,
24629
24705
  onHeaderresize: e => this.onColumnResize(val, e, colStore),
24630
24706
  };
24631
- if (val === 'rgCol') {
24632
- column.onResizeViewport = (e) => { var _a; return (_a = this.sv.viewportProvider) === null || _a === void 0 ? void 0 : _a.setViewport(e.detail.dimension, { virtualSize: e.detail.size }); };
24633
- }
24707
+ column.onResizeViewport = (e) => { var _a; return (_a = this.sv.viewportProvider) === null || _a === void 0 ? void 0 : _a.setViewport(e.detail.dimension, { virtualSize: e.detail.size }); };
24634
24708
  const colData = this.gatherColumnData(column);
24635
24709
  const columnSelectionStore = this.registerCol(colData.position.x, val);
24636
24710
  // render per each column data collections vertically
@@ -24659,17 +24733,11 @@ class ViewportService {
24659
24733
  }
24660
24734
  /** register selection store for Row */
24661
24735
  registerRow(y, type) {
24662
- // link to position
24663
- this.storesByType[type] = y;
24664
- this.storesYToType[y] = type;
24665
- return this.sv.selectionStoreConnector.registerRow(y).store;
24736
+ return this.sv.selectionStoreConnector.registerRow(y, type).store;
24666
24737
  }
24667
24738
  /** register selection store for Column */
24668
24739
  registerCol(x, type) {
24669
- // link to position
24670
- this.storesByType[type] = x;
24671
- this.storesXToType[x] = type;
24672
- return this.sv.selectionStoreConnector.registerColumn(x).store;
24740
+ return this.sv.selectionStoreConnector.registerColumn(x, type).store;
24673
24741
  }
24674
24742
  /** Collect Column data */
24675
24743
  gatherColumnData(data) {
@@ -24696,6 +24764,7 @@ class ViewportService {
24696
24764
  };
24697
24765
  return {
24698
24766
  prop,
24767
+ type: data.colType,
24699
24768
  position: data.position,
24700
24769
  headerProp,
24701
24770
  parent,
@@ -24759,9 +24828,9 @@ class ViewportService {
24759
24828
  if (!focused) {
24760
24829
  return null;
24761
24830
  }
24762
- const colType = this.storesXToType[focused.position.x];
24831
+ const colType = this.sv.selectionStoreConnector.storesXToType[focused.position.x];
24763
24832
  const column = this.sv.columnProvider.getColumn(focused.cell.x, colType);
24764
- const rowType = this.storesYToType[focused.position.x];
24833
+ const rowType = this.sv.selectionStoreConnector.storesYToType[focused.position.x];
24765
24834
  const model = this.sv.dataProvider.getModel(focused.cell.x, rowType);
24766
24835
  return {
24767
24836
  column,
@@ -24772,7 +24841,7 @@ class ViewportService {
24772
24841
  };
24773
24842
  }
24774
24843
  getStoreCoordinateByType(colType, rowType) {
24775
- const stores = this.storesByType;
24844
+ const stores = this.sv.selectionStoreConnector.storesByType;
24776
24845
  const storeCoordinate = {
24777
24846
  x: stores[colType],
24778
24847
  y: stores[rowType],
@@ -24799,8 +24868,9 @@ const ViewPortSections = ({ resize, editors, rowClass, readonly, range, columns,
24799
24868
  /** render viewports columns */
24800
24869
  for (let view of columns) {
24801
24870
  /** render viewports rows */
24871
+ const headerProperties = Object.assign(Object.assign({}, view.headerProp), { type: view.type, viewportCol: view.viewportCol, selectionStore: view.columnSelectionStore, canResize: resize, columnFilter });
24802
24872
  const dataViews = [
24803
- h("revogr-header", Object.assign({ viewportCol: view.viewportCol }, view.headerProp, { selectionStore: view.columnSelectionStore, slot: HEADER_SLOT, columnFilter: columnFilter, canResize: resize })),
24873
+ h("revogr-header", Object.assign({}, headerProperties, { slot: HEADER_SLOT })),
24804
24874
  ];
24805
24875
  view.dataPorts.forEach((data, j) => {
24806
24876
  const key = view.prop.key + (j + 1);
@@ -24981,8 +25051,19 @@ const rowDefinitionByType = (newVal = []) => {
24981
25051
  return r;
24982
25052
  }, {});
24983
25053
  };
25054
+ const rowDefinitionRemoveByType = (oldVal = []) => {
25055
+ return reduce_1(oldVal, (r, v) => {
25056
+ if (!r[v.type]) {
25057
+ r[v.type] = [];
25058
+ }
25059
+ if (v.size) {
25060
+ r[v.type].push(v.index);
25061
+ }
25062
+ return r;
25063
+ }, {});
25064
+ };
24984
25065
 
24985
- const revoGridStyleCss = ".revo-drag-icon{-webkit-mask-image:url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg viewBox='0 0 438 383' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cg%3E%3Cpath d='M421.875,70.40625 C426.432292,70.40625 430.175781,68.9414062 433.105469,66.0117188 C436.035156,63.0820312 437.5,59.3385417 437.5,54.78125 L437.5,54.78125 L437.5,15.71875 C437.5,11.1614583 436.035156,7.41796875 433.105469,4.48828125 C430.175781,1.55859375 426.432292,0.09375 421.875,0.09375 L421.875,0.09375 L15.625,0.09375 C11.0677083,0.09375 7.32421875,1.55859375 4.39453125,4.48828125 C1.46484375,7.41796875 0,11.1614583 0,15.71875 L0,15.71875 L0,54.78125 C0,59.3385417 1.46484375,63.0820312 4.39453125,66.0117188 C7.32421875,68.9414062 11.0677083,70.40625 15.625,70.40625 L15.625,70.40625 L421.875,70.40625 Z M421.875,226.65625 C426.432292,226.65625 430.175781,225.191406 433.105469,222.261719 C436.035156,219.332031 437.5,215.588542 437.5,211.03125 L437.5,211.03125 L437.5,171.96875 C437.5,167.411458 436.035156,163.667969 433.105469,160.738281 C430.175781,157.808594 426.432292,156.34375 421.875,156.34375 L421.875,156.34375 L15.625,156.34375 C11.0677083,156.34375 7.32421875,157.808594 4.39453125,160.738281 C1.46484375,163.667969 0,167.411458 0,171.96875 L0,171.96875 L0,211.03125 C0,215.588542 1.46484375,219.332031 4.39453125,222.261719 C7.32421875,225.191406 11.0677083,226.65625 15.625,226.65625 L15.625,226.65625 L421.875,226.65625 Z M421.875,382.90625 C426.432292,382.90625 430.175781,381.441406 433.105469,378.511719 C436.035156,375.582031 437.5,371.838542 437.5,367.28125 L437.5,367.28125 L437.5,328.21875 C437.5,323.661458 436.035156,319.917969 433.105469,316.988281 C430.175781,314.058594 426.432292,312.59375 421.875,312.59375 L421.875,312.59375 L15.625,312.59375 C11.0677083,312.59375 7.32421875,314.058594 4.39453125,316.988281 C1.46484375,319.917969 0,323.661458 0,328.21875 L0,328.21875 L0,367.28125 C0,371.838542 1.46484375,375.582031 4.39453125,378.511719 C7.32421875,381.441406 11.0677083,382.90625 15.625,382.90625 L15.625,382.90625 L421.875,382.90625 Z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg viewBox='0 0 438 383' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cg%3E%3Cpath d='M421.875,70.40625 C426.432292,70.40625 430.175781,68.9414062 433.105469,66.0117188 C436.035156,63.0820312 437.5,59.3385417 437.5,54.78125 L437.5,54.78125 L437.5,15.71875 C437.5,11.1614583 436.035156,7.41796875 433.105469,4.48828125 C430.175781,1.55859375 426.432292,0.09375 421.875,0.09375 L421.875,0.09375 L15.625,0.09375 C11.0677083,0.09375 7.32421875,1.55859375 4.39453125,4.48828125 C1.46484375,7.41796875 0,11.1614583 0,15.71875 L0,15.71875 L0,54.78125 C0,59.3385417 1.46484375,63.0820312 4.39453125,66.0117188 C7.32421875,68.9414062 11.0677083,70.40625 15.625,70.40625 L15.625,70.40625 L421.875,70.40625 Z M421.875,226.65625 C426.432292,226.65625 430.175781,225.191406 433.105469,222.261719 C436.035156,219.332031 437.5,215.588542 437.5,211.03125 L437.5,211.03125 L437.5,171.96875 C437.5,167.411458 436.035156,163.667969 433.105469,160.738281 C430.175781,157.808594 426.432292,156.34375 421.875,156.34375 L421.875,156.34375 L15.625,156.34375 C11.0677083,156.34375 7.32421875,157.808594 4.39453125,160.738281 C1.46484375,163.667969 0,167.411458 0,171.96875 L0,171.96875 L0,211.03125 C0,215.588542 1.46484375,219.332031 4.39453125,222.261719 C7.32421875,225.191406 11.0677083,226.65625 15.625,226.65625 L15.625,226.65625 L421.875,226.65625 Z M421.875,382.90625 C426.432292,382.90625 430.175781,381.441406 433.105469,378.511719 C436.035156,375.582031 437.5,371.838542 437.5,367.28125 L437.5,367.28125 L437.5,328.21875 C437.5,323.661458 436.035156,319.917969 433.105469,316.988281 C430.175781,314.058594 426.432292,312.59375 421.875,312.59375 L421.875,312.59375 L15.625,312.59375 C11.0677083,312.59375 7.32421875,314.058594 4.39453125,316.988281 C1.46484375,319.917969 0,323.661458 0,328.21875 L0,328.21875 L0,367.28125 C0,371.838542 1.46484375,375.582031 4.39453125,378.511719 C7.32421875,381.441406 11.0677083,382.90625 15.625,382.90625 L15.625,382.90625 L421.875,382.90625 Z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\");width:11px;height:7px;background-size:cover;background-repeat:no-repeat}.revo-alt-icon{-webkit-mask-image:url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg viewBox='0 0 384 383' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cg%3E%3Cpath d='M192.4375,383 C197.424479,383 201.663411,381.254557 205.154297,377.763672 L205.154297,377.763672 L264.25,318.667969 C270.234375,312.683594 271.605794,306.075846 268.364258,298.844727 C265.122721,291.613607 259.51237,287.998047 251.533203,287.998047 L251.533203,287.998047 L213.382812,287.998047 L213.382812,212.445312 L288.935547,212.445312 L288.935547,250.595703 C288.935547,258.57487 292.551107,264.185221 299.782227,267.426758 C307.013346,270.668294 313.621094,269.296875 319.605469,263.3125 L319.605469,263.3125 L378.701172,204.216797 C382.192057,200.725911 383.9375,196.486979 383.9375,191.5 C383.9375,186.513021 382.192057,182.274089 378.701172,178.783203 L378.701172,178.783203 L319.605469,119.6875 C313.621094,114.201823 307.013346,112.955078 299.782227,115.947266 C292.551107,118.939453 288.935547,124.42513 288.935547,132.404297 L288.935547,132.404297 L288.935547,170.554688 L213.382812,170.554688 L213.382812,95.0019531 L251.533203,95.0019531 C259.51237,95.0019531 264.998047,91.3863932 267.990234,84.1552734 C270.982422,76.9241536 269.735677,70.3164062 264.25,64.3320312 L264.25,64.3320312 L205.154297,5.23632812 C201.663411,1.74544271 197.424479,0 192.4375,0 C187.450521,0 183.211589,1.74544271 179.720703,5.23632812 L179.720703,5.23632812 L120.625,64.3320312 C114.640625,70.3164062 113.269206,76.9241536 116.510742,84.1552734 C119.752279,91.3863932 125.36263,95.0019531 133.341797,95.0019531 L133.341797,95.0019531 L171.492188,95.0019531 L171.492188,170.554688 L95.9394531,170.554688 L95.9394531,132.404297 C95.9394531,124.42513 92.3238932,118.814779 85.0927734,115.573242 C77.8616536,112.331706 71.2539062,113.703125 65.2695312,119.6875 L65.2695312,119.6875 L6.17382812,178.783203 C2.68294271,182.274089 0.9375,186.513021 0.9375,191.5 C0.9375,196.486979 2.68294271,200.725911 6.17382812,204.216797 L6.17382812,204.216797 L65.2695312,263.3125 C71.2539062,268.798177 77.8616536,270.044922 85.0927734,267.052734 C92.3238932,264.060547 95.9394531,258.57487 95.9394531,250.595703 L95.9394531,250.595703 L95.9394531,212.445312 L171.492188,212.445312 L171.492188,287.998047 L133.341797,287.998047 C125.36263,287.998047 119.876953,291.613607 116.884766,298.844727 C113.892578,306.075846 115.139323,312.683594 120.625,318.667969 L120.625,318.667969 L179.720703,377.763672 C183.211589,381.254557 187.450521,383 192.4375,383 Z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg viewBox='0 0 384 383' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cg%3E%3Cpath d='M192.4375,383 C197.424479,383 201.663411,381.254557 205.154297,377.763672 L205.154297,377.763672 L264.25,318.667969 C270.234375,312.683594 271.605794,306.075846 268.364258,298.844727 C265.122721,291.613607 259.51237,287.998047 251.533203,287.998047 L251.533203,287.998047 L213.382812,287.998047 L213.382812,212.445312 L288.935547,212.445312 L288.935547,250.595703 C288.935547,258.57487 292.551107,264.185221 299.782227,267.426758 C307.013346,270.668294 313.621094,269.296875 319.605469,263.3125 L319.605469,263.3125 L378.701172,204.216797 C382.192057,200.725911 383.9375,196.486979 383.9375,191.5 C383.9375,186.513021 382.192057,182.274089 378.701172,178.783203 L378.701172,178.783203 L319.605469,119.6875 C313.621094,114.201823 307.013346,112.955078 299.782227,115.947266 C292.551107,118.939453 288.935547,124.42513 288.935547,132.404297 L288.935547,132.404297 L288.935547,170.554688 L213.382812,170.554688 L213.382812,95.0019531 L251.533203,95.0019531 C259.51237,95.0019531 264.998047,91.3863932 267.990234,84.1552734 C270.982422,76.9241536 269.735677,70.3164062 264.25,64.3320312 L264.25,64.3320312 L205.154297,5.23632812 C201.663411,1.74544271 197.424479,0 192.4375,0 C187.450521,0 183.211589,1.74544271 179.720703,5.23632812 L179.720703,5.23632812 L120.625,64.3320312 C114.640625,70.3164062 113.269206,76.9241536 116.510742,84.1552734 C119.752279,91.3863932 125.36263,95.0019531 133.341797,95.0019531 L133.341797,95.0019531 L171.492188,95.0019531 L171.492188,170.554688 L95.9394531,170.554688 L95.9394531,132.404297 C95.9394531,124.42513 92.3238932,118.814779 85.0927734,115.573242 C77.8616536,112.331706 71.2539062,113.703125 65.2695312,119.6875 L65.2695312,119.6875 L6.17382812,178.783203 C2.68294271,182.274089 0.9375,186.513021 0.9375,191.5 C0.9375,196.486979 2.68294271,200.725911 6.17382812,204.216797 L6.17382812,204.216797 L65.2695312,263.3125 C71.2539062,268.798177 77.8616536,270.044922 85.0927734,267.052734 C92.3238932,264.060547 95.9394531,258.57487 95.9394531,250.595703 L95.9394531,250.595703 L95.9394531,212.445312 L171.492188,212.445312 L171.492188,287.998047 L133.341797,287.998047 C125.36263,287.998047 119.876953,291.613607 116.884766,298.844727 C113.892578,306.075846 115.139323,312.683594 120.625,318.667969 L120.625,318.667969 L179.720703,377.763672 C183.211589,381.254557 187.450521,383 192.4375,383 Z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\");width:11px;height:11px;background-size:cover;background-repeat:no-repeat}.arrow-down{position:absolute;right:5px;top:0}.arrow-down svg{width:8px;margin-top:5px;margin-left:5px;opacity:0.4}.cell-value-wrapper{margin-right:10px;overflow:hidden;text-overflow:ellipsis}.revo-button{position:relative;overflow:hidden;color:#fff;background-color:#6200ee;height:34px;line-height:34px;padding:0 15px;outline:0;border:0;border-radius:7px;box-sizing:border-box;cursor:pointer}.revo-button.green{background-color:#2ee072;border:1px solid #20d565}.revo-button.light{border:2px solid #cedefa;line-height:32px;background:none;color:#4876ca;box-shadow:none}revo-grid[theme=default]{font-size:12px}revo-grid[theme=default] revogr-header{text-align:center;line-height:30px;background-color:#f8f9fa}revo-grid[theme=default] revogr-header .group-rgRow{box-shadow:none}revo-grid[theme=default] revogr-header .header-rgRow,revo-grid[theme=default] revogr-header .group-rgRow{text-transform:uppercase;font-size:12px;color:#61656a}revo-grid[theme=default] revogr-header .header-rgRow{height:30px;box-shadow:0 -1px 0 0 #c0c0c0 inset}revo-grid[theme=default] revogr-header .rgHeaderCell{box-shadow:-1px 0 0 0 #c0c0c0, -1px 0 0 0 #c0c0c0 inset, 0 -1px 0 0 #c0c0c0, 0 -1px 0 0 #c0c0c0 inset}revo-grid[theme=default] revogr-header .rgHeaderCell.focused-cell{background:rgba(233, 234, 237, 0.5)}revo-grid[theme=default] .rowHeaders{background-color:#f8f9fa}revo-grid[theme=default] .rowHeaders revogr-data .rgCell{color:#61656a;box-shadow:0 -1px 0 0 #c0c0c0 inset, -1px 0 0 0 #c0c0c0 inset}revo-grid[theme=default] .rowHeaders revogr-header{box-shadow:0 -1px 0 0 #c0c0c0 inset, -1px 0 0 0 #c0c0c0 inset}revo-grid[theme=default] revogr-viewport-scroll.colPinStart revogr-data .rgRow .rgCell:last-child{box-shadow:0 -1px 0 0 #e2e3e3 inset, -1px 0 0 0 #c0c0c0 inset}revo-grid[theme=default] revogr-viewport-scroll.colPinStart .footer-wrapper revogr-data .rgRow:first-child .rgCell{box-shadow:0 1px 0 0 #c0c0c0 inset, -1px 0 0 0 #c0c0c0 inset}revo-grid[theme=default] revogr-viewport-scroll.colPinEnd,revo-grid[theme=default] revogr-viewport-scroll.colPinEnd revogr-header{box-shadow:1px 0 0 #c0c0c0 inset}revo-grid[theme=default] .footer-wrapper revogr-data .rgRow:first-child .rgCell{box-shadow:0 1px 0 0 #e2e3e3 inset, -1px 0 0 0 #e2e3e3 inset, 0 -1px 0 0 #e2e3e3 inset}revo-grid[theme=default] revogr-data{text-align:center}revo-grid[theme=default] revogr-data .rgRow{line-height:27px;box-shadow:0 -1px 0 0 #e2e3e3 inset, -1px 0 0 0 #e2e3e3 inset}revo-grid[theme=default] revogr-data .rgRow.focused-rgRow{background-color:rgba(233, 234, 237, 0.5)}revo-grid[theme=default] revogr-data .rgCell{box-shadow:0 -1px 0 0 #e2e3e3 inset, -1px 0 0 0 #e2e3e3 inset}revo-grid[theme=default] revogr-data .rgCell.disabled{background-color:0 -1px 0 0 #e2e3e3 inset, -1px 0 0 0 #e2e3e3 inset}revo-grid[theme=material]{font-family:Nunito, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"}revo-grid[theme=material] revogr-header{line-height:50px;font-weight:600;text-align:left}revo-grid[theme=material] revogr-header .rgHeaderCell{padding:0 15px;text-overflow:ellipsis}revo-grid[theme=material] revogr-header .header-rgRow{height:50px}revo-grid[theme=material] revogr-data{text-align:left}revo-grid[theme=material] revogr-data .rgRow{line-height:42px}revo-grid[theme=material] revogr-data .rgCell{padding:0 15px}revo-grid[theme=material] .viewports{width:100%}revo-grid[theme=material] .rowHeaders{background-color:#f7faff}revo-grid[theme=material] .rowHeaders revogr-data .rgCell{color:#757a82}revo-grid[theme=material] revogr-header .header-rgRow.group{box-shadow:0 -1px 0 0 #f1f1f1 inset}revo-grid[theme=material] revogr-header .header-rgRow:not(.group){box-shadow:0 -1px 0 0 #f1f1f1, 0 -1px 0 0 #f1f1f1 inset}revo-grid[theme=material] revogr-header .rgHeaderCell.sortable:hover{background-color:#f1f1f1}revo-grid[theme=material] revogr-header .rgHeaderCell.focused-cell{background:rgba(233, 234, 237, 0.5)}revo-grid[theme=material] .footer-wrapper revogr-data{box-shadow:0 -1px 0 #f1f1f1}revo-grid[theme=material] revogr-viewport-scroll.colPinStart{box-shadow:-1px 0 0 #f1f1f1 inset}revo-grid[theme=material] revogr-viewport-scroll.colPinEnd{box-shadow:-1px 0 0 #f1f1f1}revo-grid[theme=material] revogr-data .rgRow{box-shadow:0 -1px 0 0 #f1f1f1 inset}revo-grid[theme=material] revogr-data .rgRow.focused-rgRow{background-color:rgba(233, 234, 237, 0.5)}revo-grid[theme=material] revogr-data .rgCell{color:rgba(0, 0, 0, 0.87)}revo-grid[theme=material] revogr-data .rgCell.disabled{background-color:#f7f7f7}revo-grid[theme=material] revogr-data .revo-draggable>.revo-drag-icon{background-color:#d4d4d4}revo-grid[theme=material] revogr-data .revo-draggable:hover>.revo-drag-icon{background-color:black}revo-grid[theme=darkMaterial]{font-family:Nunito, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#d8d8d8}revo-grid[theme=darkMaterial] revogr-header{line-height:50px;font-weight:600;text-align:left}revo-grid[theme=darkMaterial] revogr-header .rgHeaderCell{padding:0 15px;text-overflow:ellipsis}revo-grid[theme=darkMaterial] revogr-header .header-rgRow{height:50px}revo-grid[theme=darkMaterial] revogr-data{text-align:left}revo-grid[theme=darkMaterial] revogr-data .rgRow{line-height:42px}revo-grid[theme=darkMaterial] revogr-data .rgCell{padding:0 15px}revo-grid[theme=darkMaterial] .viewports{width:100%}revo-grid[theme=darkMaterial] .rowHeaders{background-color:rgba(40, 39, 43, 0.8)}revo-grid[theme=darkMaterial] .rowHeaders revogr-data .rgCell{color:rgba(216, 216, 216, 0.8)}revo-grid[theme=darkMaterial] revogr-header .header-rgRow.group{box-shadow:0 -1px 0 0 #404040 inset}revo-grid[theme=darkMaterial] revogr-header .header-rgRow:not(.group){box-shadow:0 -1px 0 0 #404040, 0 -1px 0 0 #404040 inset}revo-grid[theme=darkMaterial] revogr-header .rgHeaderCell.sortable:hover{background-color:rgba(64, 64, 64, 0.5)}revo-grid[theme=darkMaterial] revogr-header .rgHeaderCell.focused-cell{background:rgba(115, 148, 160, 0.15)}revo-grid[theme=darkMaterial] .footer-wrapper revogr-data{box-shadow:0 -1px 0 #404040}revo-grid[theme=darkMaterial] revogr-data .rgCell{color:rgba(216, 216, 216, 0.9)}revo-grid[theme=darkMaterial] revogr-data .rgRow{box-shadow:0 -1px 0 0 #404040 inset}revo-grid[theme=darkMaterial] revogr-data .rgRow.focused-rgRow{background-color:rgba(115, 148, 160, 0.15)}revo-grid[theme=darkMaterial] revogr-data .revo-draggable>.revo-drag-icon{background-color:rgba(216, 216, 216, 0.5)}revo-grid[theme=darkMaterial] revogr-data .revo-draggable:hover>.revo-drag-icon{background-color:rgba(216, 216, 216, 0.7)}revo-grid[theme=darkMaterial] revogr-viewport-scroll.colPinStart{box-shadow:-1px 0 0 #404040 inset}revo-grid[theme=darkMaterial] revogr-viewport-scroll.colPinEnd{box-shadow:-1px 0 0 #404040}revo-grid[theme=darkCompact]{font-family:Nunito, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#d8d8d8}revo-grid[theme=darkCompact] revogr-header{line-height:45px;font-weight:600;text-align:left}revo-grid[theme=darkCompact] revogr-header .rgHeaderCell{padding:0 15px;text-overflow:ellipsis}revo-grid[theme=darkCompact] revogr-header .header-rgRow{height:45px}revo-grid[theme=darkCompact] revogr-data{text-align:left}revo-grid[theme=darkCompact] revogr-data .rgRow{line-height:32px}revo-grid[theme=darkCompact] revogr-data .rgCell{padding:0 15px}revo-grid[theme=darkCompact] .viewports{width:100%}revo-grid[theme=darkCompact] .rowHeaders{background-color:rgba(40, 39, 43, 0.8)}revo-grid[theme=darkCompact] .rowHeaders revogr-data .rgCell{color:rgba(216, 216, 216, 0.8)}revo-grid[theme=darkCompact] revogr-header .header-rgRow.group{box-shadow:0 -1px 0 0 #404040 inset}revo-grid[theme=darkCompact] revogr-header .header-rgRow:not(.group){box-shadow:0 -1px 0 0 #404040, 0 -1px 0 0 #404040 inset}revo-grid[theme=darkCompact] revogr-header .rgHeaderCell.sortable:hover{background-color:rgba(64, 64, 64, 0.5)}revo-grid[theme=darkCompact] revogr-header .rgHeaderCell.focused-cell{background:rgba(115, 148, 160, 0.15)}revo-grid[theme=darkCompact] .footer-wrapper revogr-data{box-shadow:0 -1px 0 #404040}revo-grid[theme=darkCompact] revogr-data .rgCell{color:rgba(216, 216, 216, 0.9)}revo-grid[theme=darkCompact] revogr-data .rgRow{box-shadow:0 -1px 0 0 #404040 inset}revo-grid[theme=darkCompact] revogr-data .rgRow.focused-rgRow{background-color:rgba(115, 148, 160, 0.15)}revo-grid[theme=darkCompact] revogr-data .revo-draggable>.revo-drag-icon{background-color:rgba(216, 216, 216, 0.5)}revo-grid[theme=darkCompact] revogr-data .revo-draggable:hover>.revo-drag-icon{background-color:rgba(216, 216, 216, 0.7)}revo-grid[theme=darkCompact] revogr-viewport-scroll.colPinStart{box-shadow:-1px 0 0 #404040 inset}revo-grid[theme=darkCompact] revogr-viewport-scroll.colPinEnd{box-shadow:-1px 0 0 #404040}revo-grid[theme=compact]{font-family:Nunito, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"}revo-grid[theme=compact] revogr-header{line-height:45px;font-weight:600;text-align:left}revo-grid[theme=compact] revogr-header .rgHeaderCell{padding:0 15px;text-overflow:ellipsis}revo-grid[theme=compact] revogr-header .header-rgRow{height:45px}revo-grid[theme=compact] revogr-data{text-align:left}revo-grid[theme=compact] revogr-data .rgRow{line-height:32px}revo-grid[theme=compact] revogr-data .rgCell{padding:0 15px}revo-grid[theme=compact] .viewports{width:100%}revo-grid[theme=compact] .rowHeaders{background-color:#f7faff}revo-grid[theme=compact] .rowHeaders revogr-data .rgCell{color:#757a82}revo-grid[theme=compact] revogr-header .header-rgRow.group{box-shadow:0 -1px 0 0 #f1f1f1 inset}revo-grid[theme=compact] revogr-header .header-rgRow:not(.group){box-shadow:0 -1px 0 0 #f1f1f1, 0 -1px 0 0 #f1f1f1 inset}revo-grid[theme=compact] revogr-header .rgHeaderCell.sortable:hover{background-color:#f1f1f1}revo-grid[theme=compact] revogr-header .rgHeaderCell.focused-cell{background:rgba(233, 234, 237, 0.5)}revo-grid[theme=compact] .footer-wrapper revogr-data{box-shadow:0 -1px 0 #f1f1f1}revo-grid[theme=compact] revogr-viewport-scroll.colPinStart{box-shadow:-1px 0 0 #f1f1f1 inset}revo-grid[theme=compact] revogr-viewport-scroll.colPinEnd{box-shadow:-1px 0 0 #f1f1f1}revo-grid[theme=compact] revogr-data .rgRow{box-shadow:0 -1px 0 0 #f1f1f1 inset}revo-grid[theme=compact] revogr-data .rgRow.focused-rgRow{background-color:rgba(233, 234, 237, 0.5)}revo-grid[theme=compact] revogr-data .rgCell{color:rgba(0, 0, 0, 0.87)}revo-grid[theme=compact] revogr-data .rgCell.disabled{background-color:#f7f7f7}revo-grid[theme=compact] revogr-data .revo-draggable>.revo-drag-icon{background-color:#d4d4d4}revo-grid[theme=compact] revogr-data .revo-draggable:hover>.revo-drag-icon{background-color:black}revo-grid[theme=compact] revo-dropdown .rv-dr-root{padding:0px 9px}revo-grid{display:block;height:100%;font-family:Helvetica, Arial, Sans-Serif, serif;font-size:14px;position:relative;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;flex-direction:column;width:100%;height:100%}revo-grid .footer-wrapper,revo-grid .header-wrapper{width:100%}revo-grid .footer-wrapper revogr-data,revo-grid .header-wrapper revogr-data{z-index:3}revo-grid revo-dropdown{width:100%}revo-grid revo-dropdown .rv-dr-root{max-height:100%}revo-grid revo-dropdown.shrink label{opacity:0}revo-grid .viewports{max-height:100%;display:flex;flex-direction:row;align-items:flex-start;max-width:100%}revo-grid .main-viewport{flex-grow:1;height:0;display:flex;flex-direction:row}revo-grid .draggable{position:fixed;height:30px;line-height:30px;background:#fff;border-radius:3px;display:block;z-index:100;margin-top:5px;margin-right:-20px;box-shadow:0 4px 20px 0 rgba(0, 0, 0, 0.15);padding-left:20px;padding-right:5px}revo-grid .draggable.hidden{display:none}revo-grid .draggable .revo-alt-icon{background-color:black;position:absolute;left:5px;top:10px}revo-grid .draggable-wrapper.hidden{display:none}revo-grid .drag-position{position:absolute;left:0;right:0;height:1px;z-index:2;background:red}revo-grid .clipboard{position:absolute;left:0;top:0}revo-grid revogr-scroll-virtual{position:relative}revo-grid revogr-scroll-virtual.vertical,revo-grid revogr-scroll-virtual.horizontal{z-index:3}";
25066
+ const revoGridStyleCss = ".revo-drag-icon{-webkit-mask-image:url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg viewBox='0 0 438 383' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cg%3E%3Cpath d='M421.875,70.40625 C426.432292,70.40625 430.175781,68.9414062 433.105469,66.0117188 C436.035156,63.0820312 437.5,59.3385417 437.5,54.78125 L437.5,54.78125 L437.5,15.71875 C437.5,11.1614583 436.035156,7.41796875 433.105469,4.48828125 C430.175781,1.55859375 426.432292,0.09375 421.875,0.09375 L421.875,0.09375 L15.625,0.09375 C11.0677083,0.09375 7.32421875,1.55859375 4.39453125,4.48828125 C1.46484375,7.41796875 0,11.1614583 0,15.71875 L0,15.71875 L0,54.78125 C0,59.3385417 1.46484375,63.0820312 4.39453125,66.0117188 C7.32421875,68.9414062 11.0677083,70.40625 15.625,70.40625 L15.625,70.40625 L421.875,70.40625 Z M421.875,226.65625 C426.432292,226.65625 430.175781,225.191406 433.105469,222.261719 C436.035156,219.332031 437.5,215.588542 437.5,211.03125 L437.5,211.03125 L437.5,171.96875 C437.5,167.411458 436.035156,163.667969 433.105469,160.738281 C430.175781,157.808594 426.432292,156.34375 421.875,156.34375 L421.875,156.34375 L15.625,156.34375 C11.0677083,156.34375 7.32421875,157.808594 4.39453125,160.738281 C1.46484375,163.667969 0,167.411458 0,171.96875 L0,171.96875 L0,211.03125 C0,215.588542 1.46484375,219.332031 4.39453125,222.261719 C7.32421875,225.191406 11.0677083,226.65625 15.625,226.65625 L15.625,226.65625 L421.875,226.65625 Z M421.875,382.90625 C426.432292,382.90625 430.175781,381.441406 433.105469,378.511719 C436.035156,375.582031 437.5,371.838542 437.5,367.28125 L437.5,367.28125 L437.5,328.21875 C437.5,323.661458 436.035156,319.917969 433.105469,316.988281 C430.175781,314.058594 426.432292,312.59375 421.875,312.59375 L421.875,312.59375 L15.625,312.59375 C11.0677083,312.59375 7.32421875,314.058594 4.39453125,316.988281 C1.46484375,319.917969 0,323.661458 0,328.21875 L0,328.21875 L0,367.28125 C0,371.838542 1.46484375,375.582031 4.39453125,378.511719 C7.32421875,381.441406 11.0677083,382.90625 15.625,382.90625 L15.625,382.90625 L421.875,382.90625 Z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg viewBox='0 0 438 383' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cg%3E%3Cpath d='M421.875,70.40625 C426.432292,70.40625 430.175781,68.9414062 433.105469,66.0117188 C436.035156,63.0820312 437.5,59.3385417 437.5,54.78125 L437.5,54.78125 L437.5,15.71875 C437.5,11.1614583 436.035156,7.41796875 433.105469,4.48828125 C430.175781,1.55859375 426.432292,0.09375 421.875,0.09375 L421.875,0.09375 L15.625,0.09375 C11.0677083,0.09375 7.32421875,1.55859375 4.39453125,4.48828125 C1.46484375,7.41796875 0,11.1614583 0,15.71875 L0,15.71875 L0,54.78125 C0,59.3385417 1.46484375,63.0820312 4.39453125,66.0117188 C7.32421875,68.9414062 11.0677083,70.40625 15.625,70.40625 L15.625,70.40625 L421.875,70.40625 Z M421.875,226.65625 C426.432292,226.65625 430.175781,225.191406 433.105469,222.261719 C436.035156,219.332031 437.5,215.588542 437.5,211.03125 L437.5,211.03125 L437.5,171.96875 C437.5,167.411458 436.035156,163.667969 433.105469,160.738281 C430.175781,157.808594 426.432292,156.34375 421.875,156.34375 L421.875,156.34375 L15.625,156.34375 C11.0677083,156.34375 7.32421875,157.808594 4.39453125,160.738281 C1.46484375,163.667969 0,167.411458 0,171.96875 L0,171.96875 L0,211.03125 C0,215.588542 1.46484375,219.332031 4.39453125,222.261719 C7.32421875,225.191406 11.0677083,226.65625 15.625,226.65625 L15.625,226.65625 L421.875,226.65625 Z M421.875,382.90625 C426.432292,382.90625 430.175781,381.441406 433.105469,378.511719 C436.035156,375.582031 437.5,371.838542 437.5,367.28125 L437.5,367.28125 L437.5,328.21875 C437.5,323.661458 436.035156,319.917969 433.105469,316.988281 C430.175781,314.058594 426.432292,312.59375 421.875,312.59375 L421.875,312.59375 L15.625,312.59375 C11.0677083,312.59375 7.32421875,314.058594 4.39453125,316.988281 C1.46484375,319.917969 0,323.661458 0,328.21875 L0,328.21875 L0,367.28125 C0,371.838542 1.46484375,375.582031 4.39453125,378.511719 C7.32421875,381.441406 11.0677083,382.90625 15.625,382.90625 L15.625,382.90625 L421.875,382.90625 Z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\");width:11px;height:7px;background-size:cover;background-repeat:no-repeat}.revo-alt-icon{-webkit-mask-image:url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg viewBox='0 0 384 383' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cg%3E%3Cpath d='M192.4375,383 C197.424479,383 201.663411,381.254557 205.154297,377.763672 L205.154297,377.763672 L264.25,318.667969 C270.234375,312.683594 271.605794,306.075846 268.364258,298.844727 C265.122721,291.613607 259.51237,287.998047 251.533203,287.998047 L251.533203,287.998047 L213.382812,287.998047 L213.382812,212.445312 L288.935547,212.445312 L288.935547,250.595703 C288.935547,258.57487 292.551107,264.185221 299.782227,267.426758 C307.013346,270.668294 313.621094,269.296875 319.605469,263.3125 L319.605469,263.3125 L378.701172,204.216797 C382.192057,200.725911 383.9375,196.486979 383.9375,191.5 C383.9375,186.513021 382.192057,182.274089 378.701172,178.783203 L378.701172,178.783203 L319.605469,119.6875 C313.621094,114.201823 307.013346,112.955078 299.782227,115.947266 C292.551107,118.939453 288.935547,124.42513 288.935547,132.404297 L288.935547,132.404297 L288.935547,170.554688 L213.382812,170.554688 L213.382812,95.0019531 L251.533203,95.0019531 C259.51237,95.0019531 264.998047,91.3863932 267.990234,84.1552734 C270.982422,76.9241536 269.735677,70.3164062 264.25,64.3320312 L264.25,64.3320312 L205.154297,5.23632812 C201.663411,1.74544271 197.424479,0 192.4375,0 C187.450521,0 183.211589,1.74544271 179.720703,5.23632812 L179.720703,5.23632812 L120.625,64.3320312 C114.640625,70.3164062 113.269206,76.9241536 116.510742,84.1552734 C119.752279,91.3863932 125.36263,95.0019531 133.341797,95.0019531 L133.341797,95.0019531 L171.492188,95.0019531 L171.492188,170.554688 L95.9394531,170.554688 L95.9394531,132.404297 C95.9394531,124.42513 92.3238932,118.814779 85.0927734,115.573242 C77.8616536,112.331706 71.2539062,113.703125 65.2695312,119.6875 L65.2695312,119.6875 L6.17382812,178.783203 C2.68294271,182.274089 0.9375,186.513021 0.9375,191.5 C0.9375,196.486979 2.68294271,200.725911 6.17382812,204.216797 L6.17382812,204.216797 L65.2695312,263.3125 C71.2539062,268.798177 77.8616536,270.044922 85.0927734,267.052734 C92.3238932,264.060547 95.9394531,258.57487 95.9394531,250.595703 L95.9394531,250.595703 L95.9394531,212.445312 L171.492188,212.445312 L171.492188,287.998047 L133.341797,287.998047 C125.36263,287.998047 119.876953,291.613607 116.884766,298.844727 C113.892578,306.075846 115.139323,312.683594 120.625,318.667969 L120.625,318.667969 L179.720703,377.763672 C183.211589,381.254557 187.450521,383 192.4375,383 Z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\");mask-image:url(\"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8'%3F%3E%3Csvg viewBox='0 0 384 383' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cg%3E%3Cpath d='M192.4375,383 C197.424479,383 201.663411,381.254557 205.154297,377.763672 L205.154297,377.763672 L264.25,318.667969 C270.234375,312.683594 271.605794,306.075846 268.364258,298.844727 C265.122721,291.613607 259.51237,287.998047 251.533203,287.998047 L251.533203,287.998047 L213.382812,287.998047 L213.382812,212.445312 L288.935547,212.445312 L288.935547,250.595703 C288.935547,258.57487 292.551107,264.185221 299.782227,267.426758 C307.013346,270.668294 313.621094,269.296875 319.605469,263.3125 L319.605469,263.3125 L378.701172,204.216797 C382.192057,200.725911 383.9375,196.486979 383.9375,191.5 C383.9375,186.513021 382.192057,182.274089 378.701172,178.783203 L378.701172,178.783203 L319.605469,119.6875 C313.621094,114.201823 307.013346,112.955078 299.782227,115.947266 C292.551107,118.939453 288.935547,124.42513 288.935547,132.404297 L288.935547,132.404297 L288.935547,170.554688 L213.382812,170.554688 L213.382812,95.0019531 L251.533203,95.0019531 C259.51237,95.0019531 264.998047,91.3863932 267.990234,84.1552734 C270.982422,76.9241536 269.735677,70.3164062 264.25,64.3320312 L264.25,64.3320312 L205.154297,5.23632812 C201.663411,1.74544271 197.424479,0 192.4375,0 C187.450521,0 183.211589,1.74544271 179.720703,5.23632812 L179.720703,5.23632812 L120.625,64.3320312 C114.640625,70.3164062 113.269206,76.9241536 116.510742,84.1552734 C119.752279,91.3863932 125.36263,95.0019531 133.341797,95.0019531 L133.341797,95.0019531 L171.492188,95.0019531 L171.492188,170.554688 L95.9394531,170.554688 L95.9394531,132.404297 C95.9394531,124.42513 92.3238932,118.814779 85.0927734,115.573242 C77.8616536,112.331706 71.2539062,113.703125 65.2695312,119.6875 L65.2695312,119.6875 L6.17382812,178.783203 C2.68294271,182.274089 0.9375,186.513021 0.9375,191.5 C0.9375,196.486979 2.68294271,200.725911 6.17382812,204.216797 L6.17382812,204.216797 L65.2695312,263.3125 C71.2539062,268.798177 77.8616536,270.044922 85.0927734,267.052734 C92.3238932,264.060547 95.9394531,258.57487 95.9394531,250.595703 L95.9394531,250.595703 L95.9394531,212.445312 L171.492188,212.445312 L171.492188,287.998047 L133.341797,287.998047 C125.36263,287.998047 119.876953,291.613607 116.884766,298.844727 C113.892578,306.075846 115.139323,312.683594 120.625,318.667969 L120.625,318.667969 L179.720703,377.763672 C183.211589,381.254557 187.450521,383 192.4375,383 Z'%3E%3C/path%3E%3C/g%3E%3C/svg%3E\");width:11px;height:11px;background-size:cover;background-repeat:no-repeat}.arrow-down{position:absolute;right:5px;top:0}.arrow-down svg{width:8px;margin-top:5px;margin-left:5px;opacity:0.4}.cell-value-wrapper{margin-right:10px;overflow:hidden;text-overflow:ellipsis}.revo-button{position:relative;overflow:hidden;color:#fff;background-color:#6200ee;height:34px;line-height:34px;padding:0 15px;outline:0;border:0;border-radius:7px;box-sizing:border-box;cursor:pointer}.revo-button.green{background-color:#2ee072;border:1px solid #20d565}.revo-button.light{border:2px solid #cedefa;line-height:32px;background:none;color:#4876ca;box-shadow:none}revo-grid[theme=default]{font-size:12px}revo-grid[theme=default] revogr-header{text-align:center;line-height:30px;background-color:#f8f9fa}revo-grid[theme=default] revogr-header .group-rgRow{box-shadow:none}revo-grid[theme=default] revogr-header .header-rgRow,revo-grid[theme=default] revogr-header .group-rgRow{text-transform:uppercase;font-size:12px;color:#61656a}revo-grid[theme=default] revogr-header .header-rgRow{height:30px;box-shadow:0 -1px 0 0 #c0c0c0 inset}revo-grid[theme=default] revogr-header .rgHeaderCell{box-shadow:-1px 0 0 0 #c0c0c0, -1px 0 0 0 #c0c0c0 inset, 0 -1px 0 0 #c0c0c0, 0 -1px 0 0 #c0c0c0 inset}revo-grid[theme=default] revogr-header .rgHeaderCell.focused-cell{background:rgba(233, 234, 237, 0.5)}revo-grid[theme=default] .rowHeaders{background-color:#f8f9fa}revo-grid[theme=default] .rowHeaders revogr-data .rgCell{color:#61656a;box-shadow:0 -1px 0 0 #c0c0c0 inset, -1px 0 0 0 #c0c0c0 inset}revo-grid[theme=default] .rowHeaders revogr-header{box-shadow:0 -1px 0 0 #c0c0c0 inset, -1px 0 0 0 #c0c0c0 inset}revo-grid[theme=default] revogr-viewport-scroll.colPinStart revogr-data .rgRow .rgCell:last-child{box-shadow:0 -1px 0 0 #e2e3e3 inset, -1px 0 0 0 #c0c0c0 inset}revo-grid[theme=default] revogr-viewport-scroll.colPinStart .footer-wrapper revogr-data .rgRow:first-child .rgCell{box-shadow:0 1px 0 0 #c0c0c0 inset, -1px 0 0 0 #c0c0c0 inset}revo-grid[theme=default] revogr-viewport-scroll.colPinEnd,revo-grid[theme=default] revogr-viewport-scroll.colPinEnd revogr-header{box-shadow:1px 0 0 #c0c0c0 inset}revo-grid[theme=default] .footer-wrapper revogr-data .rgRow:first-child .rgCell{box-shadow:0 1px 0 0 #e2e3e3 inset, -1px 0 0 0 #e2e3e3 inset, 0 -1px 0 0 #e2e3e3 inset}revo-grid[theme=default] revogr-data{text-align:center}revo-grid[theme=default] revogr-data .rgRow{line-height:27px;box-shadow:0 -1px 0 0 #e2e3e3 inset, -1px 0 0 0 #e2e3e3 inset}revo-grid[theme=default] revogr-data .rgRow.focused-rgRow{background-color:rgba(233, 234, 237, 0.5)}revo-grid[theme=default] revogr-data .rgCell{box-shadow:0 -1px 0 0 #e2e3e3 inset, -1px 0 0 0 #e2e3e3 inset}revo-grid[theme=default] revogr-data .rgCell.disabled{background-color:0 -1px 0 0 #e2e3e3 inset, -1px 0 0 0 #e2e3e3 inset}revo-grid[theme=material]{font-family:Nunito, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"}revo-grid[theme=material] revogr-header{line-height:50px;font-weight:600;text-align:left}revo-grid[theme=material] revogr-header .rgHeaderCell{padding:0 15px;text-overflow:ellipsis}revo-grid[theme=material] revogr-header .header-rgRow{height:50px}revo-grid[theme=material] revogr-data{text-align:left}revo-grid[theme=material] revogr-data .rgRow{line-height:42px}revo-grid[theme=material] revogr-data .rgCell{padding:0 15px}revo-grid[theme=material] .viewports{width:100%}revo-grid[theme=material] .rowHeaders{background-color:#f7faff}revo-grid[theme=material] .rowHeaders revogr-data .rgCell{color:#757a82}revo-grid[theme=material] revogr-header .header-rgRow.group{box-shadow:0 -1px 0 0 #f1f1f1 inset}revo-grid[theme=material] revogr-header .header-rgRow:not(.group){box-shadow:0 -1px 0 0 #f1f1f1, 0 -1px 0 0 #f1f1f1 inset}revo-grid[theme=material] revogr-header .rgHeaderCell.sortable:hover{background-color:#f1f1f1}revo-grid[theme=material] revogr-header .rgHeaderCell.focused-cell{background:rgba(233, 234, 237, 0.5)}revo-grid[theme=material] .footer-wrapper revogr-data{box-shadow:0 -1px 0 #f1f1f1}revo-grid[theme=material] revogr-viewport-scroll.colPinStart{box-shadow:-1px 0 0 #f1f1f1 inset}revo-grid[theme=material] revogr-viewport-scroll.colPinEnd{box-shadow:-1px 0 0 #f1f1f1}revo-grid[theme=material] revogr-data .rgRow{box-shadow:0 -1px 0 0 #f1f1f1 inset}revo-grid[theme=material] revogr-data .rgRow.focused-rgRow{background-color:rgba(233, 234, 237, 0.5)}revo-grid[theme=material] revogr-data .rgCell{color:rgba(0, 0, 0, 0.87)}revo-grid[theme=material] revogr-data .rgCell.disabled{background-color:#f7f7f7}revo-grid[theme=material] revogr-data .revo-draggable>.revo-drag-icon{background-color:#d4d4d4}revo-grid[theme=material] revogr-data .revo-draggable:hover>.revo-drag-icon{background-color:black}revo-grid[theme=darkMaterial]{font-family:Nunito, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#d8d8d8}revo-grid[theme=darkMaterial] revogr-header{line-height:50px;font-weight:600;text-align:left}revo-grid[theme=darkMaterial] revogr-header .rgHeaderCell{padding:0 15px;text-overflow:ellipsis}revo-grid[theme=darkMaterial] revogr-header .header-rgRow{height:50px}revo-grid[theme=darkMaterial] revogr-data{text-align:left}revo-grid[theme=darkMaterial] revogr-data .rgRow{line-height:42px}revo-grid[theme=darkMaterial] revogr-data .rgCell{padding:0 15px}revo-grid[theme=darkMaterial] .viewports{width:100%}revo-grid[theme=darkMaterial] .rowHeaders{background-color:rgba(40, 39, 43, 0.8)}revo-grid[theme=darkMaterial] .rowHeaders revogr-data .rgCell{color:rgba(216, 216, 216, 0.8)}revo-grid[theme=darkMaterial] revogr-header .header-rgRow.group{box-shadow:0 -1px 0 0 #404040 inset}revo-grid[theme=darkMaterial] revogr-header .header-rgRow:not(.group){box-shadow:0 -1px 0 0 #404040, 0 -1px 0 0 #404040 inset}revo-grid[theme=darkMaterial] revogr-header .rgHeaderCell.sortable:hover{background-color:rgba(64, 64, 64, 0.5)}revo-grid[theme=darkMaterial] revogr-header .rgHeaderCell.focused-cell{background:rgba(115, 148, 160, 0.15)}revo-grid[theme=darkMaterial] .footer-wrapper revogr-data{box-shadow:0 -1px 0 #404040}revo-grid[theme=darkMaterial] revogr-data .rgCell{color:rgba(216, 216, 216, 0.9)}revo-grid[theme=darkMaterial] revogr-data .rgRow{box-shadow:0 -1px 0 0 #404040 inset}revo-grid[theme=darkMaterial] revogr-data .rgRow.focused-rgRow{background-color:rgba(115, 148, 160, 0.15)}revo-grid[theme=darkMaterial] revogr-data .revo-draggable>.revo-drag-icon{background-color:rgba(216, 216, 216, 0.5)}revo-grid[theme=darkMaterial] revogr-data .revo-draggable:hover>.revo-drag-icon{background-color:rgba(216, 216, 216, 0.7)}revo-grid[theme=darkMaterial] revogr-viewport-scroll.colPinStart{box-shadow:-1px 0 0 #404040 inset}revo-grid[theme=darkMaterial] revogr-viewport-scroll.colPinEnd{box-shadow:-1px 0 0 #404040}revo-grid[theme=darkCompact]{font-family:Nunito, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";color:#d8d8d8}revo-grid[theme=darkCompact] revogr-header{line-height:45px;font-weight:600;text-align:left}revo-grid[theme=darkCompact] revogr-header .rgHeaderCell{padding:0 15px;text-overflow:ellipsis}revo-grid[theme=darkCompact] revogr-header .header-rgRow{height:45px}revo-grid[theme=darkCompact] revogr-data{text-align:left}revo-grid[theme=darkCompact] revogr-data .rgRow{line-height:32px}revo-grid[theme=darkCompact] revogr-data .rgCell{padding:0 15px}revo-grid[theme=darkCompact] .viewports{width:100%}revo-grid[theme=darkCompact] .rowHeaders{background-color:rgba(40, 39, 43, 0.8)}revo-grid[theme=darkCompact] .rowHeaders revogr-data .rgCell{color:rgba(216, 216, 216, 0.8)}revo-grid[theme=darkCompact] revogr-header .header-rgRow.group{box-shadow:0 -1px 0 0 #404040 inset}revo-grid[theme=darkCompact] revogr-header .header-rgRow:not(.group){box-shadow:0 -1px 0 0 #404040, 0 -1px 0 0 #404040 inset}revo-grid[theme=darkCompact] revogr-header .rgHeaderCell.sortable:hover{background-color:rgba(64, 64, 64, 0.5)}revo-grid[theme=darkCompact] revogr-header .rgHeaderCell.focused-cell{background:rgba(115, 148, 160, 0.15)}revo-grid[theme=darkCompact] .footer-wrapper revogr-data{box-shadow:0 -1px 0 #404040}revo-grid[theme=darkCompact] revogr-data .rgCell{color:rgba(216, 216, 216, 0.9)}revo-grid[theme=darkCompact] revogr-data .rgRow{box-shadow:0 -1px 0 0 #404040 inset}revo-grid[theme=darkCompact] revogr-data .rgRow.focused-rgRow{background-color:rgba(115, 148, 160, 0.15)}revo-grid[theme=darkCompact] revogr-data .revo-draggable>.revo-drag-icon{background-color:rgba(216, 216, 216, 0.5)}revo-grid[theme=darkCompact] revogr-data .revo-draggable:hover>.revo-drag-icon{background-color:rgba(216, 216, 216, 0.7)}revo-grid[theme=darkCompact] revogr-viewport-scroll.colPinStart{box-shadow:-1px 0 0 #404040 inset}revo-grid[theme=darkCompact] revogr-viewport-scroll.colPinEnd{box-shadow:-1px 0 0 #404040}revo-grid[theme=compact]{font-family:Nunito, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"}revo-grid[theme=compact] revogr-header{line-height:45px;font-weight:600;text-align:left}revo-grid[theme=compact] revogr-header .rgHeaderCell{padding:0 15px;text-overflow:ellipsis}revo-grid[theme=compact] revogr-header .header-rgRow{height:45px}revo-grid[theme=compact] revogr-data{text-align:left}revo-grid[theme=compact] revogr-data .rgRow{line-height:32px}revo-grid[theme=compact] revogr-data .rgCell{padding:0 15px}revo-grid[theme=compact] .viewports{width:100%}revo-grid[theme=compact] .rowHeaders{background-color:#f7faff}revo-grid[theme=compact] .rowHeaders revogr-data .rgCell{color:#757a82}revo-grid[theme=compact] revogr-header .header-rgRow.group{box-shadow:0 -1px 0 0 #f1f1f1 inset}revo-grid[theme=compact] revogr-header .header-rgRow:not(.group){box-shadow:0 -1px 0 0 #f1f1f1, 0 -1px 0 0 #f1f1f1 inset}revo-grid[theme=compact] revogr-header .rgHeaderCell.sortable:hover{background-color:#f1f1f1}revo-grid[theme=compact] revogr-header .rgHeaderCell.focused-cell{background:rgba(233, 234, 237, 0.5)}revo-grid[theme=compact] .footer-wrapper revogr-data{box-shadow:0 -1px 0 #f1f1f1}revo-grid[theme=compact] revogr-viewport-scroll.colPinStart{box-shadow:-1px 0 0 #f1f1f1 inset}revo-grid[theme=compact] revogr-viewport-scroll.colPinEnd{box-shadow:-1px 0 0 #f1f1f1}revo-grid[theme=compact] revogr-data .rgRow{box-shadow:0 -1px 0 0 #f1f1f1 inset}revo-grid[theme=compact] revogr-data .rgRow.focused-rgRow{background-color:rgba(233, 234, 237, 0.5)}revo-grid[theme=compact] revogr-data .rgCell{color:rgba(0, 0, 0, 0.87)}revo-grid[theme=compact] revogr-data .rgCell.disabled{background-color:#f7f7f7}revo-grid[theme=compact] revogr-data .revo-draggable>.revo-drag-icon{background-color:#d4d4d4}revo-grid[theme=compact] revogr-data .revo-draggable:hover>.revo-drag-icon{background-color:black}revo-grid[theme=compact] revo-dropdown .rv-dr-root{padding:0px 9px}revo-grid{display:block;height:100%;font-family:Helvetica, Arial, Sans-Serif, serif;font-size:14px;position:relative;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;flex-direction:column;width:100%;height:100%}revo-grid .footer-wrapper,revo-grid .header-wrapper{width:100%}revo-grid .footer-wrapper revogr-data,revo-grid .header-wrapper revogr-data{z-index:3}revo-grid revo-dropdown{width:100%}revo-grid revo-dropdown .rv-dr-root{max-height:100%}revo-grid revo-dropdown.shrink label{opacity:0}revo-grid .viewports{max-height:100%;display:flex;flex-direction:row;align-items:flex-start;max-width:100%}revo-grid .main-viewport{flex-grow:1;height:0;display:flex;flex-direction:row}revo-grid .draggable{position:fixed;height:30px;line-height:30px;background:#fff;border-radius:3px;display:block;z-index:100;margin-top:5px;margin-right:-20px;box-shadow:0 4px 20px 0 rgba(0, 0, 0, 0.15);padding-left:20px;padding-right:5px}revo-grid .draggable.hidden{display:none}revo-grid .draggable .revo-alt-icon{background-color:black;position:absolute;left:5px;top:10px}revo-grid .draggable-wrapper.hidden{display:none}revo-grid .drag-position{position:absolute;left:0;right:0;height:1px;z-index:2;background:red;pointer-events:none}revo-grid .clipboard{position:absolute;left:0;top:0}revo-grid revogr-scroll-virtual{position:relative}revo-grid revogr-scroll-virtual.vertical,revo-grid revogr-scroll-virtual.horizontal{z-index:3}";
24986
25067
 
24987
25068
  const RevoGridComponent = class extends HTMLElement {
24988
25069
  constructor() {
@@ -24993,7 +25074,7 @@ const RevoGridComponent = class extends HTMLElement {
24993
25074
  this.beforerangeedit = createEvent(this, "beforerangeedit", 7);
24994
25075
  this.afteredit = createEvent(this, "afteredit", 7);
24995
25076
  this.beforeautofill = createEvent(this, "beforeautofill", 7);
24996
- this.beforeaange = createEvent(this, "beforeaange", 7);
25077
+ this.beforeange = createEvent(this, "beforeange", 7);
24997
25078
  this.roworderchanged = createEvent(this, "roworderchanged", 7);
24998
25079
  this.beforesourcesortingapply = createEvent(this, "beforesourcesortingapply", 7);
24999
25080
  this.beforesortingapply = createEvent(this, "beforesortingapply", 7);
@@ -25003,6 +25084,7 @@ const RevoGridComponent = class extends HTMLElement {
25003
25084
  this.beforecellfocus = createEvent(this, "beforecellfocus", 7);
25004
25085
  this.beforefocuslost = createEvent(this, "beforefocuslost", 7);
25005
25086
  this.beforesourceset = createEvent(this, "beforesourceset", 7);
25087
+ this.beforeAnySource = createEvent(this, "before-any-source", 7);
25006
25088
  this.aftersourceset = createEvent(this, "aftersourceset", 7);
25007
25089
  this.beforecolumnsset = createEvent(this, "beforecolumnsset", 7);
25008
25090
  this.beforecolumnapplied = createEvent(this, "beforecolumnapplied", 7);
@@ -25015,6 +25097,7 @@ const RevoGridComponent = class extends HTMLElement {
25015
25097
  this.beforeexport = createEvent(this, "beforeexport", 7);
25016
25098
  this.beforeeditstart = createEvent(this, "beforeeditstart", 7);
25017
25099
  this.aftercolumnresize = createEvent(this, "aftercolumnresize", 7);
25100
+ this.beforerowdefinition = createEvent(this, "beforerowdefinition", 7);
25018
25101
  /**
25019
25102
  * Defines how many rows/columns should be rendered outside visible area.
25020
25103
  */
@@ -25342,13 +25425,13 @@ const RevoGridComponent = class extends HTMLElement {
25342
25425
  }
25343
25426
  onRangeChanged(e) {
25344
25427
  e.cancelBubble = true;
25345
- const beforeaange = this.beforeaange.emit(e.detail);
25346
- if (beforeaange.defaultPrevented) {
25428
+ const beforeange = this.beforeange.emit(e.detail);
25429
+ if (beforeange.defaultPrevented) {
25347
25430
  e.preventDefault();
25348
25431
  }
25349
25432
  const beforeFill = this.beforeautofill.emit(e.detail);
25350
25433
  if (beforeFill.defaultPrevented) {
25351
- return;
25434
+ e.preventDefault();
25352
25435
  }
25353
25436
  }
25354
25437
  onRowDropped(e) {
@@ -25389,39 +25472,55 @@ const RevoGridComponent = class extends HTMLElement {
25389
25472
  }
25390
25473
  themeChanged(t) {
25391
25474
  this.themeService.register(t);
25392
- this.dimensionProvider.setSettings({ originItemSize: this.themeService.rowSize, frameOffset: this.frameSize || 0 }, 'rgRow');
25393
- this.dimensionProvider.setSettings({ originItemSize: this.colSize, frameOffset: this.frameSize || 0 }, 'rgCol');
25394
- }
25395
- dataChanged(source = []) {
25396
- let newSource = [...source];
25397
- const beforesourceset = this.beforesourceset.emit({
25398
- type: 'rgRow',
25399
- source: newSource,
25400
- });
25401
- newSource = beforesourceset.detail.source;
25402
- newSource = this.dataProvider.setData(newSource, 'rgRow');
25403
- this.aftersourceset.emit({
25404
- type: 'rgRow',
25405
- source: newSource,
25406
- });
25407
- }
25408
- dataBottomChanged(newVal = []) {
25409
- this.dataProvider.setData(newVal, 'rowPinEnd');
25410
- }
25411
- dataTopChanged(newVal = []) {
25412
- this.dataProvider.setData(newVal, 'rowPinStart');
25475
+ this.dimensionProvider.setSettings({ originItemSize: this.themeService.rowSize }, 'rgRow');
25476
+ this.dimensionProvider.setSettings({ originItemSize: this.colSize }, 'rgCol');
25477
+ }
25478
+ dataSourceChanged(newVal = [], _, watchName) {
25479
+ let type = 'rgRow';
25480
+ switch (watchName) {
25481
+ case 'pinnedBottomSource':
25482
+ type = 'rowPinEnd';
25483
+ break;
25484
+ case 'pinnedTopSource':
25485
+ type = 'rowPinStart';
25486
+ break;
25487
+ case 'source':
25488
+ type = 'rgRow';
25489
+ /** applied for source only for cross compatability between plugins */
25490
+ const beforesourceset = this.beforesourceset.emit({
25491
+ type,
25492
+ source: newVal,
25493
+ });
25494
+ newVal = beforesourceset.detail.source;
25495
+ break;
25496
+ }
25497
+ this.dataSourceApply(newVal, type);
25498
+ /** applied for source only for cross compatability between plugins */
25499
+ if (watchName === 'source') {
25500
+ this.aftersourceset.emit({
25501
+ type,
25502
+ source: newVal,
25503
+ });
25504
+ }
25413
25505
  }
25414
- rowDefChanged(newVal = [], oldVal) {
25506
+ rowDefChanged(after, before) {
25507
+ const { detail: { vals: newVal, oldVals: oldVal } } = this.beforerowdefinition.emit({
25508
+ vals: after,
25509
+ oldVals: before
25510
+ });
25511
+ // apply new vals
25512
+ const newRows = rowDefinitionByType(newVal);
25415
25513
  // clear current defs
25416
25514
  if (oldVal) {
25417
- let oldRows = rowDefinitionByType(oldVal.map(v => (Object.assign(Object.assign({}, v), { size: this.rowSize }))));
25418
- each(oldRows, (r, k) => this.dimensionProvider.setDimensionSize(k, r.sizes || {}));
25515
+ const remove = rowDefinitionRemoveByType(oldVal);
25516
+ // clear all old data and drop sizes
25517
+ each(remove, (_, t) => {
25518
+ this.dimensionProvider.clearSize(t, this.dataProvider.stores[t].store.get('source').length);
25519
+ });
25419
25520
  }
25420
25521
  if (!newVal.length) {
25421
25522
  return;
25422
25523
  }
25423
- // apply new vals
25424
- const newRows = rowDefinitionByType(newVal);
25425
25524
  each(newRows, (r, k) => this.dimensionProvider.setDimensionSize(k, r.sizes || {}));
25426
25525
  }
25427
25526
  trimmedRowsChanged(newVal = {}) {
@@ -25466,13 +25565,21 @@ const RevoGridComponent = class extends HTMLElement {
25466
25565
  this.internalPlugins.splice(index, 1);
25467
25566
  }
25468
25567
  }
25568
+ dataSourceApply(source = [], type = 'rgRow') {
25569
+ const beforesourceset = this.beforeAnySource.emit({
25570
+ type,
25571
+ source,
25572
+ });
25573
+ const newSource = [...beforesourceset.detail.source];
25574
+ return this.dataProvider.setData(newSource, type);
25575
+ }
25469
25576
  connectedCallback() {
25470
25577
  this.viewportProvider = new ViewportProvider();
25471
25578
  this.themeService = new ThemeService({
25472
25579
  rowSize: this.rowSize,
25473
25580
  });
25474
25581
  const dimensionProviderConfig = {
25475
- realSizeChanged: () => this.contentsizechanged.emit(),
25582
+ realSizeChanged: (k) => this.contentsizechanged.emit(k),
25476
25583
  };
25477
25584
  this.dimensionProvider = new DimensionProvider(this.viewportProvider, dimensionProviderConfig);
25478
25585
  this.columnProvider = new ColumnDataProvider();
@@ -25511,9 +25618,9 @@ const RevoGridComponent = class extends HTMLElement {
25511
25618
  this.applyStretch(this.stretch);
25512
25619
  this.themeChanged(this.theme);
25513
25620
  this.columnChanged(this.columns);
25514
- this.dataChanged(this.source);
25515
- this.dataTopChanged(this.pinnedTopSource);
25516
- this.dataBottomChanged(this.pinnedBottomSource);
25621
+ this.dataSourceChanged(this.source, undefined, 'source');
25622
+ this.dataSourceChanged(this.pinnedTopSource, undefined, 'pinnedTopSource');
25623
+ this.dataSourceChanged(this.pinnedBottomSource, undefined, 'pinnedBottomSource');
25517
25624
  this.trimmedRowsChanged(this.trimmedRows);
25518
25625
  this.rowDefChanged(this.rowDefinitions);
25519
25626
  this.groupingChanged(this.grouping);
@@ -25569,9 +25676,9 @@ const RevoGridComponent = class extends HTMLElement {
25569
25676
  static get watchers() { return {
25570
25677
  "columns": ["columnChanged"],
25571
25678
  "theme": ["themeChanged"],
25572
- "source": ["dataChanged"],
25573
- "pinnedBottomSource": ["dataBottomChanged"],
25574
- "pinnedTopSource": ["dataTopChanged"],
25679
+ "source": ["dataSourceChanged"],
25680
+ "pinnedBottomSource": ["dataSourceChanged"],
25681
+ "pinnedTopSource": ["dataSourceChanged"],
25575
25682
  "rowDefinitions": ["rowDefChanged"],
25576
25683
  "trimmedRows": ["trimmedRowsChanged"],
25577
25684
  "grouping": ["groupingChanged"],
@@ -25694,7 +25801,7 @@ class ColumnService {
25694
25801
  }
25695
25802
  return props;
25696
25803
  }
25697
- customRenderer(_r, c, model, providers) {
25804
+ customRenderer(_, c, model, providers) {
25698
25805
  var _a;
25699
25806
  const tpl = (_a = this.columns[c]) === null || _a === void 0 ? void 0 : _a.cellTemplate;
25700
25807
  if (tpl) {
@@ -25747,16 +25854,17 @@ class ColumnService {
25747
25854
  rowIndex,
25748
25855
  };
25749
25856
  }
25750
- getRangeData(d) {
25857
+ getRangeData(d, columns) {
25751
25858
  const changed = {};
25752
25859
  // get original length sizes
25753
- const copyColLength = d.oldProps.length;
25754
- const copyFrom = this.copyRangeArray(d.oldRange, d.oldProps, this.dataStore);
25755
- const copyRowLength = copyFrom.length;
25860
+ const copyColLength = d.oldRange.x1 - d.oldRange.x + 1;
25861
+ const copyRowLength = d.oldRange.y1 - d.oldRange.y + 1;
25862
+ const mapping = {};
25756
25863
  // rows
25757
25864
  for (let rowIndex = d.newRange.y, i = 0; rowIndex < d.newRange.y1 + 1; rowIndex++, i++) {
25758
25865
  // copy original data link
25759
- const copyRow = copyFrom[i % copyRowLength];
25866
+ const oldRowIndex = d.oldRange.y + i % copyRowLength;
25867
+ const copyRow = getSourceItem(this.dataStore, oldRowIndex);
25760
25868
  // columns
25761
25869
  for (let colIndex = d.newRange.x, j = 0; colIndex < d.newRange.x1 + 1; colIndex++, j++) {
25762
25870
  // check if old range area
@@ -25764,18 +25872,30 @@ class ColumnService {
25764
25872
  continue;
25765
25873
  }
25766
25874
  const p = this.columns[colIndex].prop;
25767
- const currentCol = j % copyColLength;
25875
+ const copyColIndex = d.oldRange.x + j % copyColLength;
25876
+ const copyColumnProp = columns[copyColIndex].prop;
25768
25877
  /** if can write */
25769
25878
  if (!this.isReadOnly(rowIndex, colIndex)) {
25770
25879
  /** to show before save */
25771
25880
  if (!changed[rowIndex]) {
25772
25881
  changed[rowIndex] = {};
25773
25882
  }
25774
- changed[rowIndex][p] = copyRow[currentCol];
25883
+ changed[rowIndex][p] = copyRow[copyColumnProp];
25884
+ /** Generate mapping object */
25885
+ if (!mapping[rowIndex]) {
25886
+ mapping[rowIndex] = {};
25887
+ }
25888
+ mapping[rowIndex][p] = {
25889
+ colProp: copyColumnProp,
25890
+ rowIndex: oldRowIndex
25891
+ };
25775
25892
  }
25776
25893
  }
25777
25894
  }
25778
- return changed;
25895
+ return {
25896
+ changed,
25897
+ mapping,
25898
+ };
25779
25899
  }
25780
25900
  getTransformedDataToApply(start, data) {
25781
25901
  const changed = {};
@@ -25818,6 +25938,9 @@ class ColumnService {
25818
25938
  const items = {};
25819
25939
  for (let rowIndex in data) {
25820
25940
  const oldModel = (items[rowIndex] = getSourceItem(this.dataStore, parseInt(rowIndex, 10)));
25941
+ if (!oldModel) {
25942
+ continue;
25943
+ }
25821
25944
  for (let prop in data[rowIndex]) {
25822
25945
  oldModel[prop] = data[rowIndex][prop];
25823
25946
  }
@@ -25845,7 +25968,7 @@ class ColumnService {
25845
25968
  }
25846
25969
  copyRangeArray(range, rangeProps, store) {
25847
25970
  const toCopy = [];
25848
- for (let i = range.y; i < range.y1 + 1; i++) {
25971
+ for (let i = range.y; i <= range.y1; i++) {
25849
25972
  const rgRow = [];
25850
25973
  for (let prop of rangeProps) {
25851
25974
  const item = getSourceItem(store, i);
@@ -25859,7 +25982,7 @@ class ColumnService {
25859
25982
  if (typeof val === 'undefined' || val === null) {
25860
25983
  return '';
25861
25984
  }
25862
- return val.toString();
25985
+ return val;
25863
25986
  }
25864
25987
  destroy() {
25865
25988
  this.unsubscribe.forEach(f => f());
@@ -25869,7 +25992,7 @@ class ColumnService {
25869
25992
  const CellRenderer = ({ model, onDragStart }) => {
25870
25993
  const els = [];
25871
25994
  if (model.column.rowDrag && isRowDragService(model.column.rowDrag, model)) {
25872
- els.push(h("span", { class: DRAGGABLE_CLASS, onMouseDown: e => onDragStart(e) },
25995
+ els.push(h("span", { class: DRAGGABLE_CLASS, onMouseDown: e => onDragStart(Object.assign(Object.assign({}, e), { model })) },
25873
25996
  h("span", { class: DRAG_ICON_CLASS })));
25874
25997
  }
25875
25998
  els.push(`${ColumnService.getData(model.model[model.prop])}`);
@@ -25920,6 +26043,7 @@ const RevogrData$1 = class extends HTMLElement {
25920
26043
  super();
25921
26044
  this.__registerHost();
25922
26045
  this.dragStartCell = createEvent(this, "dragStartCell", 7);
26046
+ this.beforeRowRender = createEvent(this, "beforeRowRender", 7);
25923
26047
  }
25924
26048
  onStoreChange() {
25925
26049
  var _a;
@@ -25944,10 +26068,10 @@ const RevogrData$1 = class extends HTMLElement {
25944
26068
  const rowsEls = [];
25945
26069
  const depth = this.dataStore.get('groupingDepth');
25946
26070
  for (let rgRow of rows) {
25947
- const dataRow = getSourceItem(this.dataStore, rgRow.itemIndex);
26071
+ const dataItem = getSourceItem(this.dataStore, rgRow.itemIndex);
25948
26072
  /** grouping */
25949
- if (isGrouping(dataRow)) {
25950
- rowsEls.push(h(GroupingRowRenderer, Object.assign({}, rgRow, { model: dataRow, hasExpand: this.columnService.hasGrouping })));
26073
+ if (isGrouping(dataItem)) {
26074
+ rowsEls.push(h(GroupingRowRenderer, Object.assign({}, rgRow, { model: dataItem, hasExpand: this.columnService.hasGrouping })));
25951
26075
  continue;
25952
26076
  }
25953
26077
  /** grouping end */
@@ -25959,7 +26083,13 @@ const RevogrData$1 = class extends HTMLElement {
25959
26083
  for (let rgCol of cols) {
25960
26084
  cells.push(this.getCellRenderer(rgRow, rgCol, /** grouping apply*/ this.columnService.hasGrouping ? depth : 0));
25961
26085
  }
25962
- rowsEls.push(h(RowRenderer, { rowClass: rowClass, size: rgRow.size, start: rgRow.start }, cells));
26086
+ const row = h(RowRenderer, { rowClass: rowClass, size: rgRow.size, start: rgRow.start }, cells);
26087
+ this.beforeRowRender.emit({
26088
+ node: row,
26089
+ item: rgRow,
26090
+ dataItem
26091
+ });
26092
+ rowsEls.push(row);
25963
26093
  }
25964
26094
  return rowsEls;
25965
26095
  }
@@ -25992,6 +26122,8 @@ const RevogrData$1 = class extends HTMLElement {
25992
26122
  }
25993
26123
  get providers() {
25994
26124
  return {
26125
+ type: this.type,
26126
+ data: this.dataStore,
25995
26127
  viewport: this.viewportCol,
25996
26128
  dimension: this.dimensionRow,
25997
26129
  selection: this.rowSelectionStore,
@@ -27061,7 +27193,7 @@ const GroupHeaderRenderer = (p) => {
27061
27193
  },
27062
27194
  onResize: p.onResize,
27063
27195
  };
27064
- return (h(HeaderCellRenderer, { data: Object.assign(Object.assign({}, p.group), { providers: p.providers, index: p.start }), props: groupProps }));
27196
+ return (h(HeaderCellRenderer, { data: Object.assign(Object.assign({}, p.group), { prop: '', providers: p.providers, index: p.start }), props: groupProps }));
27065
27197
  };
27066
27198
 
27067
27199
  const ColumnGroupsRenderer = ({ providers, depth, groups, visibleProps, dimensionCol, canResize, onResize }) => {
@@ -27097,11 +27229,17 @@ const RevogrHeaderComponent = class extends HTMLElement {
27097
27229
  this.__registerHost();
27098
27230
  this.initialHeaderClick = createEvent(this, "initialHeaderClick", 7);
27099
27231
  this.headerresize = createEvent(this, "headerresize", 7);
27232
+ this.beforeResize = createEvent(this, "before-resize", 7);
27100
27233
  this.headerdblClick = createEvent(this, "headerdblClick", 7);
27101
27234
  this.parent = '';
27102
27235
  this.groupingDepth = 0;
27103
27236
  }
27104
27237
  onResize({ width }, index) {
27238
+ const col = this.colData[index];
27239
+ const event = this.beforeResize.emit([Object.assign(Object.assign({}, col), { size: width || undefined })]);
27240
+ if (event.defaultPrevented) {
27241
+ return;
27242
+ }
27105
27243
  this.headerresize.emit({ [index]: width || 0 });
27106
27244
  }
27107
27245
  onResizeGroup(changedX, startIndex, endIndex) {
@@ -27135,6 +27273,8 @@ const RevogrHeaderComponent = class extends HTMLElement {
27135
27273
  }
27136
27274
  get providers() {
27137
27275
  return {
27276
+ type: this.type,
27277
+ data: this.colData,
27138
27278
  viewport: this.viewportCol,
27139
27279
  dimension: this.dimensionCol,
27140
27280
  selection: this.selectionStore,
@@ -27558,17 +27698,9 @@ class KeyboardService {
27558
27698
  this.ctrlDown = false;
27559
27699
  }
27560
27700
  async keyDown(e, canRange) {
27561
- if (!this.sv.selectionStoreService.focused) {
27562
- return;
27563
- }
27564
27701
  if (isCtrlKey(e.keyCode, navigator.platform)) {
27565
27702
  this.ctrlDown = true;
27566
27703
  }
27567
- // tab key means same as arrow right
27568
- if (codesLetter.TAB === e.code) {
27569
- this.keyChangeSelection(e, canRange);
27570
- return;
27571
- }
27572
27704
  /**
27573
27705
  * IF EDIT MODE
27574
27706
  */
@@ -27584,10 +27716,19 @@ class KeyboardService {
27584
27716
  * IF NOT EDIT MODE
27585
27717
  */
27586
27718
  // pressed clear key
27587
- if (isClear(e.code)) {
27719
+ if (this.sv.selectionStoreService.ranged && isClear(e.code)) {
27588
27720
  this.sv.clearCell();
27589
27721
  return;
27590
27722
  }
27723
+ // below works with focus only
27724
+ if (!this.sv.selectionStoreService.focused) {
27725
+ return;
27726
+ }
27727
+ // tab key means same as arrow right
27728
+ if (codesLetter.TAB === e.code) {
27729
+ this.keyChangeSelection(e, canRange);
27730
+ return;
27731
+ }
27591
27732
  // pressed enter
27592
27733
  if (isEnterKey(e.code)) {
27593
27734
  this.sv.doEdit();
@@ -27676,72 +27817,6 @@ class KeyboardService {
27676
27817
  }
27677
27818
  }
27678
27819
 
27679
- /**
27680
- * The base implementation of `_.slice` without an iteratee call guard.
27681
- *
27682
- * @private
27683
- * @param {Array} array The array to slice.
27684
- * @param {number} [start=0] The start position.
27685
- * @param {number} [end=array.length] The end position.
27686
- * @returns {Array} Returns the slice of `array`.
27687
- */
27688
- function baseSlice(array, start, end) {
27689
- var index = -1,
27690
- length = array.length;
27691
-
27692
- if (start < 0) {
27693
- start = -start > length ? 0 : (length + start);
27694
- }
27695
- end = end > length ? length : end;
27696
- if (end < 0) {
27697
- end += length;
27698
- }
27699
- length = start > end ? 0 : ((end - start) >>> 0);
27700
- start >>>= 0;
27701
-
27702
- var result = Array(length);
27703
- while (++index < length) {
27704
- result[index] = array[index + start];
27705
- }
27706
- return result;
27707
- }
27708
-
27709
- var _baseSlice = baseSlice;
27710
-
27711
- /**
27712
- * Creates a slice of `array` from `start` up to, but not including, `end`.
27713
- *
27714
- * **Note:** This method is used instead of
27715
- * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are
27716
- * returned.
27717
- *
27718
- * @static
27719
- * @memberOf _
27720
- * @since 3.0.0
27721
- * @category Array
27722
- * @param {Array} array The array to slice.
27723
- * @param {number} [start=0] The start position.
27724
- * @param {number} [end=array.length] The end position.
27725
- * @returns {Array} Returns the slice of `array`.
27726
- */
27727
- function slice(array, start, end) {
27728
- var length = array == null ? 0 : array.length;
27729
- if (!length) {
27730
- return [];
27731
- }
27732
- if (end && typeof end != 'number' && _isIterateeCall(array, start, end)) {
27733
- start = 0;
27734
- end = length;
27735
- }
27736
- else {
27737
- start = start == null ? 0 : toInteger_1(start);
27738
- end = end === undefined ? length : toInteger_1(end);
27739
- }
27740
- return _baseSlice(array, start, end);
27741
- }
27742
-
27743
- var slice_1 = slice;
27744
-
27745
27820
  var AutoFillType;
27746
27821
  (function (AutoFillType) {
27747
27822
  AutoFillType["selection"] = "Selection";
@@ -27889,18 +27964,18 @@ class AutoFillService {
27889
27964
  }
27890
27965
  const oldRange = this.sv.selectionStoreService.ranged;
27891
27966
  const newRange = getRange(start, end);
27892
- const columns = [...this.sv.columnService.columns];
27893
27967
  const rangeData = {
27894
27968
  type: this.sv.dataStore.get('type'),
27895
27969
  newData: {},
27970
+ mapping: {},
27896
27971
  newRange,
27897
27972
  oldRange,
27898
- newProps: slice_1(columns, newRange.x, newRange.x1 + 1).map(v => v.prop),
27899
- oldProps: slice_1(columns, oldRange.x, oldRange.x1 + 1).map(v => v.prop),
27900
27973
  };
27901
- rangeData.newData = this.sv.columnService.getRangeData(rangeData);
27902
- const selectionEndEvent = this.sv.internalSelectionChanged(rangeData);
27903
- if (selectionEndEvent.defaultPrevented) {
27974
+ const { mapping, changed } = this.sv.columnService.getRangeData(rangeData, this.sv.columnService.columns);
27975
+ rangeData.newData = changed;
27976
+ rangeData.mapping = mapping;
27977
+ const e = this.sv.internalSelectionChanged(rangeData);
27978
+ if (e.defaultPrevented) {
27904
27979
  this.sv.setTempRange(null);
27905
27980
  return;
27906
27981
  }
@@ -27917,6 +27992,72 @@ class AutoFillService {
27917
27992
  }
27918
27993
  }
27919
27994
 
27995
+ /**
27996
+ * The base implementation of `_.slice` without an iteratee call guard.
27997
+ *
27998
+ * @private
27999
+ * @param {Array} array The array to slice.
28000
+ * @param {number} [start=0] The start position.
28001
+ * @param {number} [end=array.length] The end position.
28002
+ * @returns {Array} Returns the slice of `array`.
28003
+ */
28004
+ function baseSlice(array, start, end) {
28005
+ var index = -1,
28006
+ length = array.length;
28007
+
28008
+ if (start < 0) {
28009
+ start = -start > length ? 0 : (length + start);
28010
+ }
28011
+ end = end > length ? length : end;
28012
+ if (end < 0) {
28013
+ end += length;
28014
+ }
28015
+ length = start > end ? 0 : ((end - start) >>> 0);
28016
+ start >>>= 0;
28017
+
28018
+ var result = Array(length);
28019
+ while (++index < length) {
28020
+ result[index] = array[index + start];
28021
+ }
28022
+ return result;
28023
+ }
28024
+
28025
+ var _baseSlice = baseSlice;
28026
+
28027
+ /**
28028
+ * Creates a slice of `array` from `start` up to, but not including, `end`.
28029
+ *
28030
+ * **Note:** This method is used instead of
28031
+ * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are
28032
+ * returned.
28033
+ *
28034
+ * @static
28035
+ * @memberOf _
28036
+ * @since 3.0.0
28037
+ * @category Array
28038
+ * @param {Array} array The array to slice.
28039
+ * @param {number} [start=0] The start position.
28040
+ * @param {number} [end=array.length] The end position.
28041
+ * @returns {Array} Returns the slice of `array`.
28042
+ */
28043
+ function slice(array, start, end) {
28044
+ var length = array == null ? 0 : array.length;
28045
+ if (!length) {
28046
+ return [];
28047
+ }
28048
+ if (end && typeof end != 'number' && _isIterateeCall(array, start, end)) {
28049
+ start = 0;
28050
+ end = length;
28051
+ }
28052
+ else {
28053
+ start = start == null ? 0 : toInteger_1(start);
28054
+ end = end === undefined ? length : toInteger_1(end);
28055
+ }
28056
+ return _baseSlice(array, start, end);
28057
+ }
28058
+
28059
+ var slice_1 = slice;
28060
+
27920
28061
  class ClipboardService {
27921
28062
  constructor(sv) {
27922
28063
  this.sv = sv;
@@ -28024,10 +28165,10 @@ const OverlaySelection = class extends HTMLElement {
28024
28165
  this.keyboardService = new KeyboardService({
28025
28166
  selectionStoreService: this.selectionStoreService,
28026
28167
  selectionStore: s,
28027
- doEdit: (v, c) => this.doEdit(v, c),
28028
- clearCell: () => this.clearCell(),
28168
+ doEdit: (v, c) => !this.readonly && this.doEdit(v, c),
28169
+ clearCell: () => !this.readonly && this.clearCell(),
28170
+ internalPaste: () => !this.readonly && this.internalPaste.emit(),
28029
28171
  getData: () => this.getData(),
28030
- internalPaste: () => this.internalPaste.emit(),
28031
28172
  });
28032
28173
  this.createAutoFillService();
28033
28174
  this.createClipboardService();
@@ -28209,7 +28350,7 @@ const RevogrRowHeaders$1 = class extends HTMLElement {
28209
28350
  }
28210
28351
  render() {
28211
28352
  const dataViews = [];
28212
- const viewport = new ViewportStore();
28353
+ const viewport = new ViewportStore('colPinStart');
28213
28354
  /** render viewports rows */
28214
28355
  let totalLength = 1;
28215
28356
  for (let data of this.dataPorts) {
@@ -28247,8 +28388,8 @@ const RevogrRowHeaders$1 = class extends HTMLElement {
28247
28388
  ref: (el) => this.elementToScroll.emit(el),
28248
28389
  onScrollViewport: (e) => this.scrollViewport.emit(e.detail),
28249
28390
  };
28250
- const viewportHeader = Object.assign(Object.assign({}, this.headerProp), { colData: typeof this.rowHeaderColumn === 'object' ? [this.rowHeaderColumn] : [], viewportCol: viewport.store, canResize: false, parent, slot: 'header' });
28251
- return (h(Host, { class: "rowHeaders", key: "rowHeaders" }, h("revogr-viewport-scroll", Object.assign({}, viewportScroll), h("revogr-header", Object.assign({}, viewportHeader)), dataViews)));
28391
+ const viewportHeader = Object.assign(Object.assign({}, this.headerProp), { colData: typeof this.rowHeaderColumn === 'object' ? [this.rowHeaderColumn] : [], viewportCol: viewport.store, canResize: false, type: ROW_HEADER_TYPE, parent, slot: HEADER_SLOT });
28392
+ return (h(Host, { class: { [ROW_HEADER_TYPE]: true }, key: ROW_HEADER_TYPE }, h("revogr-viewport-scroll", Object.assign({}, viewportScroll), h("revogr-header", Object.assign({}, viewportHeader)), dataViews)));
28252
28393
  }
28253
28394
  };
28254
28395
 
@@ -28600,7 +28741,7 @@ const RevogrViewportScroll$1 = class extends HTMLElement {
28600
28741
  this.scrollViewport = createEvent(this, "scrollViewport", 3);
28601
28742
  this.resizeViewport = createEvent(this, "resizeViewport", 7);
28602
28743
  this.scrollchange = createEvent(this, "scrollchange", 7);
28603
- this.scrollThrottling = 30;
28744
+ this.scrollThrottling = 10;
28604
28745
  /**
28605
28746
  * Width of inner content
28606
28747
  */
@@ -28640,6 +28781,9 @@ const RevogrViewportScroll$1 = class extends HTMLElement {
28640
28781
  }
28641
28782
  return e;
28642
28783
  }
28784
+ mousewheelVertical({ detail: e }) {
28785
+ this.verticalMouseWheel(e);
28786
+ }
28643
28787
  connectedCallback() {
28644
28788
  /**
28645
28789
  * Bind scroll functions for farther usage
@@ -28801,7 +28945,7 @@ const RevogrViewportScroll$1 = class extends HTMLElement {
28801
28945
  */
28802
28946
  onVerticalMouseWheel(type, delta, e) {
28803
28947
  var _a;
28804
- e.preventDefault();
28948
+ e.preventDefault && e.preventDefault();
28805
28949
  const pos = this.verticalScroll.scrollTop + e[delta];
28806
28950
  (_a = this.scrollService) === null || _a === void 0 ? void 0 : _a.scroll(pos, type, undefined, e[delta]);
28807
28951
  this.latestScrollUpdate(type);
@@ -28814,7 +28958,7 @@ const RevogrViewportScroll$1 = class extends HTMLElement {
28814
28958
  */
28815
28959
  onHorizontalMouseWheel(type, delta, e) {
28816
28960
  var _a;
28817
- e.preventDefault();
28961
+ e.preventDefault && e.preventDefault();
28818
28962
  const pos = this.horizontalScroll.scrollLeft + e[delta];
28819
28963
  (_a = this.scrollService) === null || _a === void 0 ? void 0 : _a.scroll(pos, type, undefined, e[delta]);
28820
28964
  this.latestScrollUpdate(type);
@@ -28825,17 +28969,17 @@ const RevogrViewportScroll$1 = class extends HTMLElement {
28825
28969
 
28826
28970
  const RevoGrid = /*@__PURE__*/proxyCustomElement(RevoGridComponent, [0,"revo-grid",{"rowHeaders":[4,"row-headers"],"frameSize":[2,"frame-size"],"rowSize":[2,"row-size"],"colSize":[2,"col-size"],"range":[4],"readonly":[4],"resize":[4],"canFocus":[4,"can-focus"],"useClipboard":[4,"use-clipboard"],"columns":[16],"source":[16],"pinnedTopSource":[16],"pinnedBottomSource":[16],"rowDefinitions":[16],"editors":[16],"plugins":[16],"columnTypes":[16],"theme":[1537],"rowClass":[513,"row-class"],"autoSizeColumn":[4,"auto-size-column"],"filter":[4],"trimmedRows":[16],"exporting":[4],"grouping":[16],"stretch":[8],"extraElements":[32]},[[0,"internalRowDragStart","onRowDragStarted"],[0,"internalRowDragEnd","onRowDragEnd"],[0,"internalRowDrag","onRowDrag"],[0,"internalRowMouseMove","onRowMouseMove"],[0,"internalCellEdit","onBeforeEdit"],[0,"internalRangeDataApply","onBeforeRangeEdit"],[0,"internalSelectionChanged","onRangeChanged"],[0,"initialRowDropped","onRowDropped"],[0,"initialHeaderClick","onHeaderClick"],[0,"internalFocusCell","onCellFocus"]]]);
28827
28971
  const RevogrClipboard = /*@__PURE__*/proxyCustomElement(Clipboard, [0,"revogr-clipboard",null,[[4,"paste","onPaste"],[4,"copy","copyStarted"]]]);
28828
- const RevogrData = /*@__PURE__*/proxyCustomElement(RevogrData$1, [0,"revogr-data",{"readonly":[4],"range":[4],"rowClass":[1,"row-class"],"rowSelectionStore":[16],"viewportRow":[16],"viewportCol":[16],"dimensionRow":[16],"colData":[16],"dataStore":[16]}]);
28972
+ const RevogrData = /*@__PURE__*/proxyCustomElement(RevogrData$1, [0,"revogr-data",{"readonly":[4],"range":[4],"rowClass":[1,"row-class"],"rowSelectionStore":[16],"viewportRow":[16],"viewportCol":[16],"dimensionRow":[16],"colData":[16],"dataStore":[16],"type":[1]}]);
28829
28973
  const RevogrEdit = /*@__PURE__*/proxyCustomElement(Edit, [0,"revogr-edit",{"editCell":[16],"column":[16],"editor":[16]}]);
28830
28974
  const RevogrFilterPanel = /*@__PURE__*/proxyCustomElement(FilterPanel, [0,"revogr-filter-panel",{"uuid":[1537],"filterTypes":[16],"filterNames":[16],"filterEntities":[16],"changes":[32]},[[5,"mousedown","onMouseDown"]]]);
28831
28975
  const RevogrFocus = /*@__PURE__*/proxyCustomElement(RevogrFocus$2, [0,"revogr-focus",{"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16]}]);
28832
- const RevogrHeader = /*@__PURE__*/proxyCustomElement(RevogrHeaderComponent, [0,"revogr-header",{"viewportCol":[16],"dimensionCol":[16],"selectionStore":[16],"parent":[1],"groups":[16],"groupingDepth":[2,"grouping-depth"],"canResize":[4,"can-resize"],"colData":[16],"columnFilter":[4,"column-filter"]}]);
28976
+ const RevogrHeader = /*@__PURE__*/proxyCustomElement(RevogrHeaderComponent, [0,"revogr-header",{"viewportCol":[16],"dimensionCol":[16],"selectionStore":[16],"parent":[1],"groups":[16],"groupingDepth":[2,"grouping-depth"],"canResize":[4,"can-resize"],"colData":[16],"columnFilter":[4,"column-filter"],"type":[1]}]);
28833
28977
  const RevogrOrderEditor = /*@__PURE__*/proxyCustomElement(OrderEditor, [0,"revogr-order-editor",{"parent":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16]},[[5,"mouseleave","onMouseOut"],[5,"mouseup","onMouseUp"]]]);
28834
28978
  const RevogrOverlaySelection = /*@__PURE__*/proxyCustomElement(OverlaySelection, [4,"revogr-overlay-selection",{"readonly":[4],"range":[4],"canDrag":[4,"can-drag"],"useClipboard":[4,"use-clipboard"],"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16],"dataStore":[16],"colData":[16],"lastCell":[16],"editors":[16]},[[5,"mousemove","onMouseMove"],[5,"mouseleave","onMouseOut"],[5,"mouseup","onMouseUp"],[0,"dragStartCell","onCellDrag"],[4,"keyup","onKeyUp"],[4,"keydown","onKeyDown"]]]);
28835
28979
  const RevogrRowHeaders = /*@__PURE__*/proxyCustomElement(RevogrRowHeaders$1, [0,"revogr-row-headers",{"height":[2],"dataPorts":[16],"headerProp":[16],"uiid":[1],"resize":[4],"rowHeaderColumn":[16]}]);
28836
28980
  const RevogrScrollVirtual = /*@__PURE__*/proxyCustomElement(RevogrScrollVirtual$1, [0,"revogr-scroll-virtual",{"dimension":[1],"viewportStore":[16],"dimensionStore":[16]}]);
28837
28981
  const RevogrTempRange = /*@__PURE__*/proxyCustomElement(RevogrFocus$1, [0,"revogr-temp-range",{"selectionStore":[16],"dimensionRow":[16],"dimensionCol":[16]}]);
28838
- const RevogrViewportScroll = /*@__PURE__*/proxyCustomElement(RevogrViewportScroll$1, [4,"revogr-viewport-scroll",{"contentWidth":[2,"content-width"],"contentHeight":[2,"content-height"]}]);
28982
+ const RevogrViewportScroll = /*@__PURE__*/proxyCustomElement(RevogrViewportScroll$1, [4,"revogr-viewport-scroll",{"contentWidth":[2,"content-width"],"contentHeight":[2,"content-height"]},[[0,"mousewheel-vertical","mousewheelVertical"]]]);
28839
28983
  const defineCustomElements = (opts) => {
28840
28984
  if (typeof customElements !== 'undefined') {
28841
28985
  [