@revolist/revogrid 4.9.4 → 4.9.6

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 (203) hide show
  1. package/dist/cjs/{column.service-01f4a6c7.js → column.service-0615a373.js} +11 -12
  2. package/dist/cjs/column.service-0615a373.js.map +1 -0
  3. package/dist/cjs/{base.plugin-bf5f43a0.js → column.utils-694677fa.js} +136 -11
  4. package/dist/cjs/column.utils-694677fa.js.map +1 -0
  5. package/dist/cjs/edit.utils-2e1f4278.js +20 -0
  6. package/dist/cjs/edit.utils-2e1f4278.js.map +1 -0
  7. package/dist/cjs/{events-b28cc194.js → events-af8f6914.js} +1 -8
  8. package/dist/cjs/events-af8f6914.js.map +1 -0
  9. package/dist/cjs/{header-cell-renderer-3bc70679.js → header-cell-renderer-360528aa.js} +2 -2
  10. package/dist/cjs/{header-cell-renderer-3bc70679.js.map → header-cell-renderer-360528aa.js.map} +1 -1
  11. package/dist/cjs/{dimension.helpers-a6788214.js → index-2991afbb.js} +262 -4
  12. package/dist/cjs/index-2991afbb.js.map +1 -0
  13. package/dist/cjs/index.cjs.js +97 -35
  14. package/dist/cjs/index.cjs.js.map +1 -1
  15. package/dist/cjs/key.utils-b84b0eba.js +111 -0
  16. package/dist/cjs/key.utils-b84b0eba.js.map +1 -0
  17. package/dist/cjs/revo-grid.cjs.entry.js +140 -311
  18. package/dist/cjs/revo-grid.cjs.entry.js.map +1 -1
  19. package/dist/cjs/revogr-attribution_6.cjs.entry.js +37 -37
  20. package/dist/cjs/revogr-attribution_6.cjs.entry.js.map +1 -1
  21. package/dist/cjs/revogr-clipboard_3.cjs.entry.js +10 -10
  22. package/dist/cjs/revogr-clipboard_3.cjs.entry.js.map +1 -1
  23. package/dist/cjs/revogr-data_4.cjs.entry.js +13 -14
  24. package/dist/cjs/revogr-data_4.cjs.entry.js.map +1 -1
  25. package/dist/cjs/{viewport.store-35a3e7ee.js → row-header-utils-b5266b12.js} +13 -6
  26. package/dist/cjs/row-header-utils-b5266b12.js.map +1 -0
  27. package/dist/cjs/{selection.helpers-1a8c8d49.js → selection.helpers-4374518f.js} +13 -13
  28. package/dist/cjs/selection.helpers-4374518f.js.map +1 -0
  29. package/dist/cjs/{throttle-52be9e67.js → throttle-8885fd65.js} +2 -2
  30. package/dist/cjs/{throttle-52be9e67.js.map → throttle-8885fd65.js.map} +1 -1
  31. package/dist/collection/components/clipboard/revogr-clipboard.js +2 -2
  32. package/dist/collection/components/clipboard/revogr-clipboard.js.map +1 -1
  33. package/dist/collection/components/editors/revogr-edit.js +1 -1
  34. package/dist/collection/components/header/revogr-header.js +1 -1
  35. package/dist/collection/components/overlay/revogr-overlay-selection.js +1 -1
  36. package/dist/collection/components/revoGrid/revo-grid.js +12 -11
  37. package/dist/collection/components/revoGrid/revo-grid.js.map +1 -1
  38. package/dist/collection/index.js +1 -1
  39. package/dist/collection/index.js.map +1 -1
  40. package/dist/collection/plugins/base.plugin.js.map +1 -1
  41. package/dist/collection/plugins/column.auto-size.plugin.js +2 -2
  42. package/dist/collection/plugins/column.auto-size.plugin.js.map +1 -1
  43. package/dist/collection/plugins/column.stretch.plugin.js.map +1 -1
  44. package/dist/collection/plugins/groupingRow/grouping.row.plugin.js.map +1 -1
  45. package/dist/collection/plugins/moveColumn/column.drag.plugin.js +1 -1
  46. package/dist/collection/plugins/moveColumn/column.drag.plugin.js.map +1 -1
  47. package/dist/collection/plugins/sorting/sorting.plugin.js +2 -2
  48. package/dist/collection/plugins/sorting/sorting.plugin.js.map +1 -1
  49. package/dist/collection/services/column.data.provider.js +32 -88
  50. package/dist/collection/services/column.data.provider.js.map +1 -1
  51. package/dist/collection/services/dimension.provider.js +2 -2
  52. package/dist/collection/services/dimension.provider.js.map +1 -1
  53. package/dist/collection/types/interfaces.js.map +1 -1
  54. package/dist/collection/utils/column.utils.js +124 -0
  55. package/dist/collection/utils/column.utils.js.map +1 -0
  56. package/dist/collection/utils/index.js +7 -0
  57. package/dist/collection/utils/index.js.map +1 -1
  58. package/dist/esm/{column.service-5d14e7e9.js → column.service-af0694c5.js} +3 -4
  59. package/dist/esm/column.service-af0694c5.js.map +1 -0
  60. package/dist/esm/{base.plugin-5e7a3c51.js → column.utils-78dd3ef2.js} +122 -3
  61. package/dist/esm/column.utils-78dd3ef2.js.map +1 -0
  62. package/dist/esm/edit.utils-ca303802.js +17 -0
  63. package/dist/esm/edit.utils-ca303802.js.map +1 -0
  64. package/dist/esm/{events-77b43b40.js → events-cf0893a3.js} +2 -8
  65. package/dist/esm/events-cf0893a3.js.map +1 -0
  66. package/dist/esm/{header-cell-renderer-fc999784.js → header-cell-renderer-261317c3.js} +2 -2
  67. package/dist/esm/{header-cell-renderer-fc999784.js.map → header-cell-renderer-261317c3.js.map} +1 -1
  68. package/dist/esm/{dimension.helpers-56298828.js → index-f65def08.js} +231 -4
  69. package/dist/esm/index-f65def08.js.map +1 -0
  70. package/dist/esm/index.js +5 -4
  71. package/dist/esm/index.js.map +1 -1
  72. package/dist/esm/key.utils-4b0093d5.js +98 -0
  73. package/dist/esm/key.utils-4b0093d5.js.map +1 -0
  74. package/dist/esm/revo-grid.entry.js +50 -221
  75. package/dist/esm/revo-grid.entry.js.map +1 -1
  76. package/dist/esm/revogr-attribution_6.entry.js +8 -8
  77. package/dist/esm/revogr-clipboard_3.entry.js +5 -5
  78. package/dist/esm/revogr-clipboard_3.entry.js.map +1 -1
  79. package/dist/esm/revogr-data_4.entry.js +5 -6
  80. package/dist/esm/revogr-data_4.entry.js.map +1 -1
  81. package/dist/esm/{viewport.store-d8e03528.js → row-header-utils-6081260c.js} +9 -3
  82. package/dist/esm/row-header-utils-6081260c.js.map +1 -0
  83. package/dist/esm/{selection.helpers-accaad4a.js → selection.helpers-d92697e1.js} +2 -2
  84. package/dist/esm/{selection.helpers-accaad4a.js.map → selection.helpers-d92697e1.js.map} +1 -1
  85. package/dist/esm/{throttle-7283692c.js → throttle-041ded8e.js} +2 -2
  86. package/dist/esm/{throttle-7283692c.js.map → throttle-041ded8e.js.map} +1 -1
  87. package/dist/revo-grid/column.service-af0694c5.js +5 -0
  88. package/dist/revo-grid/{column.service-5d14e7e9.js.map → column.service-af0694c5.js.map} +1 -1
  89. package/dist/revo-grid/column.utils-78dd3ef2.js +5 -0
  90. package/dist/revo-grid/column.utils-78dd3ef2.js.map +1 -0
  91. package/dist/revo-grid/edit.utils-ca303802.js +5 -0
  92. package/dist/revo-grid/edit.utils-ca303802.js.map +1 -0
  93. package/dist/revo-grid/events-cf0893a3.js +5 -0
  94. package/dist/revo-grid/events-cf0893a3.js.map +1 -0
  95. package/dist/revo-grid/{header-cell-renderer-fc999784.js → header-cell-renderer-261317c3.js} +2 -2
  96. package/dist/revo-grid/index-f65def08.js +5 -0
  97. package/dist/revo-grid/index-f65def08.js.map +1 -0
  98. package/dist/revo-grid/index.esm.js +1 -1
  99. package/dist/revo-grid/key.utils-4b0093d5.js +5 -0
  100. package/dist/revo-grid/key.utils-4b0093d5.js.map +1 -0
  101. package/dist/revo-grid/revo-grid.entry.js +1 -1
  102. package/dist/revo-grid/revo-grid.entry.js.map +1 -1
  103. package/dist/revo-grid/revogr-attribution_6.entry.js +1 -1
  104. package/dist/revo-grid/revogr-clipboard_3.entry.js +1 -1
  105. package/dist/revo-grid/revogr-clipboard_3.entry.js.map +1 -1
  106. package/dist/revo-grid/revogr-data_4.entry.js +1 -1
  107. package/dist/revo-grid/revogr-data_4.entry.js.map +1 -1
  108. package/dist/revo-grid/row-header-utils-6081260c.js +5 -0
  109. package/dist/revo-grid/row-header-utils-6081260c.js.map +1 -0
  110. package/dist/revo-grid/selection.helpers-d92697e1.js +5 -0
  111. package/dist/revo-grid/{selection.helpers-accaad4a.js.map → selection.helpers-d92697e1.js.map} +1 -1
  112. package/dist/revo-grid/{throttle-7283692c.js → throttle-041ded8e.js} +2 -2
  113. package/dist/types/components/revoGrid/revo-grid.d.ts +2 -1
  114. package/dist/types/components.d.ts +2 -2
  115. package/dist/types/index.d.ts +1 -1
  116. package/dist/types/plugins/base.plugin.d.ts +1 -1
  117. package/dist/types/plugins/column.auto-size.plugin.d.ts +2 -4
  118. package/dist/types/plugins/column.stretch.plugin.d.ts +2 -4
  119. package/dist/types/services/column.data.provider.d.ts +2 -13
  120. package/dist/types/services/dimension.provider.d.ts +0 -1
  121. package/dist/types/types/interfaces.d.ts +11 -11
  122. package/dist/types/utils/column.utils.d.ts +46 -0
  123. package/dist/types/utils/index.d.ts +7 -0
  124. package/hydrate/index.js +304 -357
  125. package/hydrate/index.mjs +304 -357
  126. package/package.json +2 -2
  127. package/standalone/_stringToPath.js +1389 -0
  128. package/standalone/_stringToPath.js.map +1 -0
  129. package/standalone/column.service.js +4 -3
  130. package/standalone/column.service.js.map +1 -1
  131. package/standalone/consts.js +1 -1
  132. package/standalone/data.store.js +31 -1410
  133. package/standalone/data.store.js.map +1 -1
  134. package/standalone/debounce.js +2 -1
  135. package/standalone/debounce.js.map +1 -1
  136. package/standalone/dimension.helpers.js +2 -2
  137. package/standalone/index.js +6 -3
  138. package/standalone/index.js.map +1 -1
  139. package/standalone/index2.js +160 -1
  140. package/standalone/index2.js.map +1 -1
  141. package/standalone/isObjectLike.js +195 -0
  142. package/standalone/isObjectLike.js.map +1 -0
  143. package/standalone/revo-grid.js +168 -218
  144. package/standalone/revo-grid.js.map +1 -1
  145. package/standalone/revogr-clipboard2.js +2 -2
  146. package/standalone/revogr-clipboard2.js.map +1 -1
  147. package/standalone/revogr-data2.js +3 -2
  148. package/standalone/revogr-data2.js.map +1 -1
  149. package/standalone/revogr-edit.js +1 -1
  150. package/standalone/revogr-edit2.js +57 -83
  151. package/standalone/revogr-edit2.js.map +1 -1
  152. package/standalone/revogr-focus2.js +2 -1
  153. package/standalone/revogr-focus2.js.map +1 -1
  154. package/standalone/revogr-header2.js +4 -3
  155. package/standalone/revogr-header2.js.map +1 -1
  156. package/standalone/revogr-order-editor2.js +3 -2
  157. package/standalone/revogr-order-editor2.js.map +1 -1
  158. package/standalone/revogr-overlay-selection2.js +5 -5
  159. package/standalone/revogr-row-headers2.js +3 -2
  160. package/standalone/revogr-row-headers2.js.map +1 -1
  161. package/standalone/selection.utils.js +2 -1
  162. package/standalone/selection.utils.js.map +1 -1
  163. package/standalone/throttle.js +1 -1
  164. package/standalone/toNumber.js +2 -189
  165. package/standalone/toNumber.js.map +1 -1
  166. package/dist/cjs/base.plugin-bf5f43a0.js.map +0 -1
  167. package/dist/cjs/column.service-01f4a6c7.js.map +0 -1
  168. package/dist/cjs/dimension.helpers-a6788214.js.map +0 -1
  169. package/dist/cjs/events-b28cc194.js.map +0 -1
  170. package/dist/cjs/index-2410bbd9.js +0 -103
  171. package/dist/cjs/index-2410bbd9.js.map +0 -1
  172. package/dist/cjs/key.utils-1e48ab8f.js +0 -144
  173. package/dist/cjs/key.utils-1e48ab8f.js.map +0 -1
  174. package/dist/cjs/selection.helpers-1a8c8d49.js.map +0 -1
  175. package/dist/cjs/viewport.store-35a3e7ee.js.map +0 -1
  176. package/dist/collection/plugins/groupingColumn/grouping.col.plugin.js +0 -43
  177. package/dist/collection/plugins/groupingColumn/grouping.col.plugin.js.map +0 -1
  178. package/dist/esm/base.plugin-5e7a3c51.js.map +0 -1
  179. package/dist/esm/column.service-5d14e7e9.js.map +0 -1
  180. package/dist/esm/dimension.helpers-56298828.js.map +0 -1
  181. package/dist/esm/events-77b43b40.js.map +0 -1
  182. package/dist/esm/index-4e881436.js +0 -77
  183. package/dist/esm/index-4e881436.js.map +0 -1
  184. package/dist/esm/key.utils-425c987d.js +0 -133
  185. package/dist/esm/key.utils-425c987d.js.map +0 -1
  186. package/dist/esm/viewport.store-d8e03528.js.map +0 -1
  187. package/dist/revo-grid/base.plugin-5e7a3c51.js +0 -5
  188. package/dist/revo-grid/base.plugin-5e7a3c51.js.map +0 -1
  189. package/dist/revo-grid/column.service-5d14e7e9.js +0 -5
  190. package/dist/revo-grid/dimension.helpers-56298828.js +0 -5
  191. package/dist/revo-grid/dimension.helpers-56298828.js.map +0 -1
  192. package/dist/revo-grid/events-77b43b40.js +0 -5
  193. package/dist/revo-grid/events-77b43b40.js.map +0 -1
  194. package/dist/revo-grid/index-4e881436.js +0 -5
  195. package/dist/revo-grid/index-4e881436.js.map +0 -1
  196. package/dist/revo-grid/key.utils-425c987d.js +0 -5
  197. package/dist/revo-grid/key.utils-425c987d.js.map +0 -1
  198. package/dist/revo-grid/selection.helpers-accaad4a.js +0 -5
  199. package/dist/revo-grid/viewport.store-d8e03528.js +0 -5
  200. package/dist/revo-grid/viewport.store-d8e03528.js.map +0 -1
  201. package/dist/types/plugins/groupingColumn/grouping.col.plugin.d.ts +0 -17
  202. /package/dist/revo-grid/{header-cell-renderer-fc999784.js.map → header-cell-renderer-261317c3.js.map} +0 -0
  203. /package/dist/revo-grid/{throttle-7283692c.js.map → throttle-041ded8e.js.map} +0 -0
package/hydrate/index.mjs CHANGED
@@ -156,7 +156,7 @@ function queryNonceMetaTagContent(doc2) {
156
156
  var result_exports = {};
157
157
  __export(result_exports, {
158
158
  err: () => err,
159
- map: () => map$1,
159
+ map: () => map,
160
160
  ok: () => ok,
161
161
  unwrap: () => unwrap$1,
162
162
  unwrapErr: () => unwrapErr
@@ -171,7 +171,7 @@ var err = (value) => ({
171
171
  isErr: true,
172
172
  value
173
173
  });
174
- function map$1(result, fn) {
174
+ function map(result, fn) {
175
175
  if (result.isOk) {
176
176
  const val = fn(result.value);
177
177
  if (val instanceof Promise) {
@@ -2291,13 +2291,13 @@ class Clipboard {
2291
2291
  registerInstance(this, hostRef);
2292
2292
  this.beforePaste = createEvent(this, "beforepaste", 7);
2293
2293
  this.beforePasteApply = createEvent(this, "beforepasteapply", 7);
2294
- this.pasteRegion = createEvent(this, "pasteregion", 3);
2294
+ this.pasteRegion = createEvent(this, "pasteregion", 7);
2295
2295
  this.afterPasteApply = createEvent(this, "afterpasteapply", 7);
2296
2296
  this.beforeCut = createEvent(this, "beforecut", 7);
2297
2297
  this.clearRegion = createEvent(this, "clearregion", 7);
2298
2298
  this.beforeCopy = createEvent(this, "beforecopy", 7);
2299
2299
  this.beforeCopyApply = createEvent(this, "beforecopyapply", 7);
2300
- this.copyRegion = createEvent(this, "copyregion", 3);
2300
+ this.copyRegion = createEvent(this, "copyregion", 7);
2301
2301
  this.readonly = undefined;
2302
2302
  }
2303
2303
  onPaste(e) {
@@ -4621,12 +4621,12 @@ var _arrayPush = arrayPush$1;
4621
4621
  * // => false
4622
4622
  */
4623
4623
 
4624
- var isArray$d = Array.isArray;
4624
+ var isArray$c = Array.isArray;
4625
4625
 
4626
- var isArray_1 = isArray$d;
4626
+ var isArray_1 = isArray$c;
4627
4627
 
4628
4628
  var arrayPush = _arrayPush,
4629
- isArray$c = isArray_1;
4629
+ isArray$b = isArray_1;
4630
4630
 
4631
4631
  /**
4632
4632
  * The base implementation of `getAllKeys` and `getAllKeysIn` which uses
@@ -4641,7 +4641,7 @@ var arrayPush = _arrayPush,
4641
4641
  */
4642
4642
  function baseGetAllKeys$1(object, keysFunc, symbolsFunc) {
4643
4643
  var result = keysFunc(object);
4644
- return isArray$c(object) ? result : arrayPush(result, symbolsFunc(object));
4644
+ return isArray$b(object) ? result : arrayPush(result, symbolsFunc(object));
4645
4645
  }
4646
4646
 
4647
4647
  var _baseGetAllKeys = baseGetAllKeys$1;
@@ -5076,7 +5076,7 @@ var isTypedArray_1 = isTypedArray$2;
5076
5076
 
5077
5077
  var baseTimes = _baseTimes,
5078
5078
  isArguments$1 = isArguments_1,
5079
- isArray$b = isArray_1,
5079
+ isArray$a = isArray_1,
5080
5080
  isBuffer$1 = isBuffer$2.exports,
5081
5081
  isIndex$2 = _isIndex,
5082
5082
  isTypedArray$1 = isTypedArray_1;
@@ -5096,7 +5096,7 @@ var hasOwnProperty$3 = objectProto$4.hasOwnProperty;
5096
5096
  * @returns {Array} Returns the array of property names.
5097
5097
  */
5098
5098
  function arrayLikeKeys$1(value, inherited) {
5099
- var isArr = isArray$b(value),
5099
+ var isArr = isArray$a(value),
5100
5100
  isArg = !isArr && isArguments$1(value),
5101
5101
  isBuff = !isArr && !isArg && isBuffer$1(value),
5102
5102
  isType = !isArr && !isArg && !isBuff && isTypedArray$1(value),
@@ -5227,15 +5227,15 @@ var isFunction = isFunction_1,
5227
5227
  * _.isArrayLike(_.noop);
5228
5228
  * // => false
5229
5229
  */
5230
- function isArrayLike$6(value) {
5230
+ function isArrayLike$5(value) {
5231
5231
  return value != null && isLength$1(value.length) && !isFunction(value);
5232
5232
  }
5233
5233
 
5234
- var isArrayLike_1 = isArrayLike$6;
5234
+ var isArrayLike_1 = isArrayLike$5;
5235
5235
 
5236
5236
  var arrayLikeKeys = _arrayLikeKeys,
5237
5237
  baseKeys$1 = _baseKeys,
5238
- isArrayLike$5 = isArrayLike_1;
5238
+ isArrayLike$4 = isArrayLike_1;
5239
5239
 
5240
5240
  /**
5241
5241
  * Creates an array of the own enumerable property names of `object`.
@@ -5266,7 +5266,7 @@ var arrayLikeKeys = _arrayLikeKeys,
5266
5266
  * // => ['0', '1']
5267
5267
  */
5268
5268
  function keys$4(object) {
5269
- return isArrayLike$5(object) ? arrayLikeKeys(object) : baseKeys$1(object);
5269
+ return isArrayLike$4(object) ? arrayLikeKeys(object) : baseKeys$1(object);
5270
5270
  }
5271
5271
 
5272
5272
  var keys_1 = keys$4;
@@ -5475,7 +5475,7 @@ var Stack$1 = _Stack,
5475
5475
  equalByTag = _equalByTag,
5476
5476
  equalObjects = _equalObjects,
5477
5477
  getTag$1 = _getTag,
5478
- isArray$a = isArray_1,
5478
+ isArray$9 = isArray_1,
5479
5479
  isBuffer = isBuffer$2.exports,
5480
5480
  isTypedArray = isTypedArray_1;
5481
5481
 
@@ -5508,8 +5508,8 @@ var hasOwnProperty = objectProto.hasOwnProperty;
5508
5508
  * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
5509
5509
  */
5510
5510
  function baseIsEqualDeep$1(object, other, bitmask, customizer, equalFunc, stack) {
5511
- var objIsArr = isArray$a(object),
5512
- othIsArr = isArray$a(other),
5511
+ var objIsArr = isArray$9(object),
5512
+ othIsArr = isArray$9(other),
5513
5513
  objTag = objIsArr ? arrayTag : getTag$1(object),
5514
5514
  othTag = othIsArr ? arrayTag : getTag$1(other);
5515
5515
 
@@ -5732,7 +5732,7 @@ function baseMatches$1(source) {
5732
5732
 
5733
5733
  var _baseMatches = baseMatches$1;
5734
5734
 
5735
- var isArray$9 = isArray_1,
5735
+ var isArray$8 = isArray_1,
5736
5736
  isSymbol$4 = isSymbol_1;
5737
5737
 
5738
5738
  /** Used to match property names within property paths. */
@@ -5748,7 +5748,7 @@ var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
5748
5748
  * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
5749
5749
  */
5750
5750
  function isKey$3(value, object) {
5751
- if (isArray$9(value)) {
5751
+ if (isArray$8(value)) {
5752
5752
  return false;
5753
5753
  }
5754
5754
  var type = typeof value;
@@ -5901,7 +5901,7 @@ var _stringToPath = stringToPath$1;
5901
5901
  * @returns {Array} Returns the new mapped array.
5902
5902
  */
5903
5903
 
5904
- function arrayMap$2(array, iteratee) {
5904
+ function arrayMap$1(array, iteratee) {
5905
5905
  var index = -1,
5906
5906
  length = array == null ? 0 : array.length,
5907
5907
  result = Array(length);
@@ -5912,11 +5912,11 @@ function arrayMap$2(array, iteratee) {
5912
5912
  return result;
5913
5913
  }
5914
5914
 
5915
- var _arrayMap = arrayMap$2;
5915
+ var _arrayMap = arrayMap$1;
5916
5916
 
5917
5917
  var Symbol = _Symbol,
5918
- arrayMap$1 = _arrayMap,
5919
- isArray$8 = isArray_1,
5918
+ arrayMap = _arrayMap,
5919
+ isArray$7 = isArray_1,
5920
5920
  isSymbol$3 = isSymbol_1;
5921
5921
 
5922
5922
  /** Used as references for various `Number` constants. */
@@ -5939,9 +5939,9 @@ function baseToString$1(value) {
5939
5939
  if (typeof value == 'string') {
5940
5940
  return value;
5941
5941
  }
5942
- if (isArray$8(value)) {
5942
+ if (isArray$7(value)) {
5943
5943
  // Recursively convert values (susceptible to call stack limits).
5944
- return arrayMap$1(value, baseToString$1) + '';
5944
+ return arrayMap(value, baseToString$1) + '';
5945
5945
  }
5946
5946
  if (isSymbol$3(value)) {
5947
5947
  return symbolToString ? symbolToString.call(value) : '';
@@ -5981,7 +5981,7 @@ function toString$1(value) {
5981
5981
 
5982
5982
  var toString_1 = toString$1;
5983
5983
 
5984
- var isArray$7 = isArray_1,
5984
+ var isArray$6 = isArray_1,
5985
5985
  isKey$2 = _isKey,
5986
5986
  stringToPath = _stringToPath,
5987
5987
  toString = toString_1;
@@ -5995,7 +5995,7 @@ var isArray$7 = isArray_1,
5995
5995
  * @returns {Array} Returns the cast property path array.
5996
5996
  */
5997
5997
  function castPath$2(value, object) {
5998
- if (isArray$7(value)) {
5998
+ if (isArray$6(value)) {
5999
5999
  return value;
6000
6000
  }
6001
6001
  return isKey$2(value, object) ? [value] : stringToPath(toString(value));
@@ -6101,7 +6101,7 @@ var _baseHasIn = baseHasIn$1;
6101
6101
 
6102
6102
  var castPath = _castPath,
6103
6103
  isArguments = isArguments_1,
6104
- isArray$6 = isArray_1,
6104
+ isArray$5 = isArray_1,
6105
6105
  isIndex$1 = _isIndex,
6106
6106
  isLength = isLength_1,
6107
6107
  toKey$2 = _toKey;
@@ -6134,7 +6134,7 @@ function hasPath$1(object, path, hasFunc) {
6134
6134
  }
6135
6135
  length = object == null ? 0 : object.length;
6136
6136
  return !!length && isLength(length) && isIndex$1(key, length) &&
6137
- (isArray$6(object) || isArguments(object));
6137
+ (isArray$5(object) || isArguments(object));
6138
6138
  }
6139
6139
 
6140
6140
  var _hasPath = hasPath$1;
@@ -6300,7 +6300,7 @@ var property_1 = property$1;
6300
6300
  var baseMatches = _baseMatches,
6301
6301
  baseMatchesProperty = _baseMatchesProperty,
6302
6302
  identity$2 = identity_1,
6303
- isArray$5 = isArray_1,
6303
+ isArray$4 = isArray_1,
6304
6304
  property = property_1;
6305
6305
 
6306
6306
  /**
@@ -6310,7 +6310,7 @@ var baseMatches = _baseMatches,
6310
6310
  * @param {*} [value=_.identity] The value to convert to an iteratee.
6311
6311
  * @returns {Function} Returns the iteratee.
6312
6312
  */
6313
- function baseIteratee$5(value) {
6313
+ function baseIteratee$4(value) {
6314
6314
  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.
6315
6315
  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.
6316
6316
  if (typeof value == 'function') {
@@ -6320,14 +6320,14 @@ function baseIteratee$5(value) {
6320
6320
  return identity$2;
6321
6321
  }
6322
6322
  if (typeof value == 'object') {
6323
- return isArray$5(value)
6323
+ return isArray$4(value)
6324
6324
  ? baseMatchesProperty(value[0], value[1])
6325
6325
  : baseMatches(value);
6326
6326
  }
6327
6327
  return property(value);
6328
6328
  }
6329
6329
 
6330
- var _baseIteratee = baseIteratee$5;
6330
+ var _baseIteratee = baseIteratee$4;
6331
6331
 
6332
6332
  var toNumber = toNumber_1;
6333
6333
 
@@ -6410,7 +6410,7 @@ function toInteger$4(value) {
6410
6410
  var toInteger_1 = toInteger$4;
6411
6411
 
6412
6412
  var baseFindIndex = _baseFindIndex,
6413
- baseIteratee$4 = _baseIteratee,
6413
+ baseIteratee$3 = _baseIteratee,
6414
6414
  toInteger$3 = toInteger_1;
6415
6415
 
6416
6416
  /* Built-in method references for those with the same name as other `lodash` methods. */
@@ -6460,7 +6460,7 @@ function findIndex$1(array, predicate, fromIndex) {
6460
6460
  if (index < 0) {
6461
6461
  index = nativeMax$1(length + index, 0);
6462
6462
  }
6463
- return baseFindIndex(array, baseIteratee$4(predicate), index);
6463
+ return baseFindIndex(array, baseIteratee$3(predicate), index);
6464
6464
  }
6465
6465
 
6466
6466
  var findIndex_1 = findIndex$1;
@@ -6496,7 +6496,7 @@ function baseRange$1(start, end, step, fromRight) {
6496
6496
  var _baseRange = baseRange$1;
6497
6497
 
6498
6498
  var eq$1 = eq_1,
6499
- isArrayLike$4 = isArrayLike_1,
6499
+ isArrayLike$3 = isArrayLike_1,
6500
6500
  isIndex = _isIndex,
6501
6501
  isObject$1 = isObject_1;
6502
6502
 
@@ -6516,7 +6516,7 @@ function isIterateeCall$3(value, index, object) {
6516
6516
  }
6517
6517
  var type = typeof index;
6518
6518
  if (type == 'number'
6519
- ? (isArrayLike$4(object) && isIndex(index, object.length))
6519
+ ? (isArrayLike$3(object) && isIndex(index, object.length))
6520
6520
  : (type == 'string' && index in object)
6521
6521
  ) {
6522
6522
  return eq$1(object[index], value);
@@ -7039,7 +7039,7 @@ function baseForOwn$1(object, iteratee) {
7039
7039
 
7040
7040
  var _baseForOwn = baseForOwn$1;
7041
7041
 
7042
- var isArrayLike$3 = isArrayLike_1;
7042
+ var isArrayLike$2 = isArrayLike_1;
7043
7043
 
7044
7044
  /**
7045
7045
  * Creates a `baseEach` or `baseEachRight` function.
@@ -7054,7 +7054,7 @@ function createBaseEach$1(eachFunc, fromRight) {
7054
7054
  if (collection == null) {
7055
7055
  return collection;
7056
7056
  }
7057
- if (!isArrayLike$3(collection)) {
7057
+ if (!isArrayLike$2(collection)) {
7058
7058
  return eachFunc(collection, iteratee);
7059
7059
  }
7060
7060
  var length = collection.length,
@@ -7083,9 +7083,9 @@ var baseForOwn = _baseForOwn,
7083
7083
  * @param {Function} iteratee The function invoked per iteration.
7084
7084
  * @returns {Array|Object} Returns `collection`.
7085
7085
  */
7086
- var baseEach$4 = createBaseEach(baseForOwn);
7086
+ var baseEach$3 = createBaseEach(baseForOwn);
7087
7087
 
7088
- var _baseEach = baseEach$4;
7088
+ var _baseEach = baseEach$3;
7089
7089
 
7090
7090
  /**
7091
7091
  * The base implementation of `_.reduce` and `_.reduceRight`, without support
@@ -7113,10 +7113,10 @@ function baseReduce$1(collection, iteratee, accumulator, initAccum, eachFunc) {
7113
7113
  var _baseReduce = baseReduce$1;
7114
7114
 
7115
7115
  var arrayReduce = _arrayReduce,
7116
- baseEach$3 = _baseEach,
7117
- baseIteratee$3 = _baseIteratee,
7116
+ baseEach$2 = _baseEach,
7117
+ baseIteratee$2 = _baseIteratee,
7118
7118
  baseReduce = _baseReduce,
7119
- isArray$4 = isArray_1;
7119
+ isArray$3 = isArray_1;
7120
7120
 
7121
7121
  /**
7122
7122
  * Reduces `collection` to a value which is the accumulated result of running
@@ -7156,10 +7156,10 @@ var arrayReduce = _arrayReduce,
7156
7156
  * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)
7157
7157
  */
7158
7158
  function reduce(collection, iteratee, accumulator) {
7159
- var func = isArray$4(collection) ? arrayReduce : baseReduce,
7159
+ var func = isArray$3(collection) ? arrayReduce : baseReduce,
7160
7160
  initAccum = arguments.length < 3;
7161
7161
 
7162
- return func(collection, baseIteratee$3(iteratee), accumulator, initAccum, baseEach$3);
7162
+ return func(collection, baseIteratee$2(iteratee), accumulator, initAccum, baseEach$2);
7163
7163
  }
7164
7164
 
7165
7165
  var reduce_1 = reduce;
@@ -7204,9 +7204,9 @@ function castFunction$1(value) {
7204
7204
  var _castFunction = castFunction$1;
7205
7205
 
7206
7206
  var arrayEach = _arrayEach,
7207
- baseEach$2 = _baseEach,
7207
+ baseEach$1 = _baseEach,
7208
7208
  castFunction = _castFunction,
7209
- isArray$3 = isArray_1;
7209
+ isArray$2 = isArray_1;
7210
7210
 
7211
7211
  /**
7212
7212
  * Iterates over elements of `collection` and invokes `iteratee` for each element.
@@ -7239,7 +7239,7 @@ var arrayEach = _arrayEach,
7239
7239
  * // => Logs 'a' then 'b' (iteration order is not guaranteed).
7240
7240
  */
7241
7241
  function forEach(collection, iteratee) {
7242
- var func = isArray$3(collection) ? arrayEach : baseEach$2;
7242
+ var func = isArray$2(collection) ? arrayEach : baseEach$1;
7243
7243
  return func(collection, castFunction(iteratee));
7244
7244
  }
7245
7245
 
@@ -9433,8 +9433,131 @@ function isAll(event) {
9433
9433
  (event.metaKey && event.code === 'KeyA')); // Cmd + A on Mac
9434
9434
  }
9435
9435
 
9436
- /* Generate range on size
9436
+ function getColumnType(rgCol) {
9437
+ if (rgCol.pin) {
9438
+ return rgCol.pin;
9439
+ }
9440
+ return 'rgCol';
9441
+ }
9442
+ function getColumnSizes(cols) {
9443
+ const res = {};
9444
+ for (const [i, c] of cols.entries()) {
9445
+ if (c.size) {
9446
+ res[i] = c.size;
9447
+ }
9448
+ }
9449
+ return res;
9450
+ }
9451
+ /**
9452
+ * Check if column is grouping column
9437
9453
  */
9454
+ function isColGrouping(colData) {
9455
+ return !!colData.children;
9456
+ }
9457
+ /**
9458
+ * This function is used to create a collection of columns.
9459
+ */
9460
+ function getColumns(columns, level = 0, types) {
9461
+ const collection = {
9462
+ // columns as they are in stores per type
9463
+ columns: {
9464
+ rgCol: [],
9465
+ colPinStart: [],
9466
+ colPinEnd: [],
9467
+ },
9468
+ // columns indexed by prop for quick access
9469
+ columnByProp: {},
9470
+ // column grouping
9471
+ columnGrouping: {
9472
+ rgCol: [],
9473
+ colPinStart: [],
9474
+ colPinEnd: [],
9475
+ },
9476
+ // max depth level for column grouping
9477
+ maxLevel: level,
9478
+ // sorting
9479
+ sort: {},
9480
+ };
9481
+ return reduce_1(columns, (res, colData) => {
9482
+ // Grouped column
9483
+ if (isColGrouping(colData)) {
9484
+ return gatherGroup(res, colData, getColumns(colData.children, level + 1, types), level);
9485
+ }
9486
+ // Regular column
9487
+ const regularColumn = Object.assign(Object.assign({}, (colData.columnType && types && types[colData.columnType])), colData);
9488
+ // Regular column, no Pin
9489
+ if (!regularColumn.pin) {
9490
+ res.columns.rgCol.push(regularColumn);
9491
+ // Pin
9492
+ }
9493
+ else {
9494
+ res.columns[regularColumn.pin].push(regularColumn);
9495
+ }
9496
+ if (regularColumn.order) {
9497
+ res.sort[regularColumn.prop] = regularColumn;
9498
+ }
9499
+ // it's possible that some columns have same prop, but better to avoid it
9500
+ if (!res.columnByProp[regularColumn.prop]) {
9501
+ res.columnByProp[regularColumn.prop] = [];
9502
+ }
9503
+ res.columnByProp[regularColumn.prop].push(regularColumn);
9504
+ // trigger setup hook if present
9505
+ regularColumn.beforeSetup && regularColumn.beforeSetup(regularColumn);
9506
+ return res;
9507
+ }, collection);
9508
+ }
9509
+ function gatherGroup(res, colData, collection, level = 0) {
9510
+ // group template
9511
+ const group = Object.assign(Object.assign({}, colData), { level, ids: [] });
9512
+ // check columns for update
9513
+ for (let k in collection.columns) {
9514
+ const key = k;
9515
+ const resultItem = res.columns[key];
9516
+ const collectionItem = collection.columns[key];
9517
+ // if column data
9518
+ if (isArray_1(resultItem) && isArray_1(collectionItem)) {
9519
+ // fill columns
9520
+ resultItem.push(...collectionItem);
9521
+ // fill grouping
9522
+ if (collectionItem.length) {
9523
+ res.columnGrouping[key].push(Object.assign(Object.assign({}, group), { ids: collectionItem.map(item => item.prop) }));
9524
+ }
9525
+ }
9526
+ }
9527
+ // merge column groupings
9528
+ for (let k in collection.columnGrouping) {
9529
+ const key = k;
9530
+ const collectionItem = collection.columnGrouping[key];
9531
+ res.columnGrouping[key].push(...collectionItem);
9532
+ }
9533
+ res.maxLevel = Math.max(res.maxLevel, collection.maxLevel);
9534
+ res.sort = Object.assign(Object.assign({}, res.sort), collection.sort);
9535
+ return res;
9536
+ }
9537
+ function findColumn(columns, prop) {
9538
+ for (const c of columns) {
9539
+ if (isColGrouping(c)) {
9540
+ const found = findColumn(c.children, prop);
9541
+ if (found) {
9542
+ return found;
9543
+ }
9544
+ }
9545
+ else if (c.prop === prop) {
9546
+ return c;
9547
+ }
9548
+ }
9549
+ return undefined;
9550
+ }
9551
+ function getColumnByProp(columns, prop) {
9552
+ return findColumn(columns, prop);
9553
+ }
9554
+
9555
+ const LETTER_BLOCK_SIZE$1 = 10;
9556
+ const calculateRowHeaderSize = (itemsLength, rowHeaderColumn, minWidth = 50) => {
9557
+ return ((rowHeaderColumn === null || rowHeaderColumn === void 0 ? void 0 : rowHeaderColumn.size) ||
9558
+ Math.max((itemsLength.toString().length + 1) * LETTER_BLOCK_SIZE$1, minWidth));
9559
+ };
9560
+
9438
9561
  /**
9439
9562
  * Calculate system scrollbar size
9440
9563
  */
@@ -10589,8 +10712,8 @@ class RevoEdit {
10589
10712
  }; }
10590
10713
  }
10591
10714
 
10592
- var baseIteratee$2 = _baseIteratee,
10593
- isArrayLike$2 = isArrayLike_1,
10715
+ var baseIteratee$1 = _baseIteratee,
10716
+ isArrayLike$1 = isArrayLike_1,
10594
10717
  keys = keys_1;
10595
10718
 
10596
10719
  /**
@@ -10603,8 +10726,8 @@ var baseIteratee$2 = _baseIteratee,
10603
10726
  function createFind$1(findIndexFunc) {
10604
10727
  return function(collection, predicate, fromIndex) {
10605
10728
  var iterable = Object(collection);
10606
- if (!isArrayLike$2(collection)) {
10607
- var iteratee = baseIteratee$2(predicate);
10729
+ if (!isArrayLike$1(collection)) {
10730
+ var iteratee = baseIteratee$1(predicate);
10608
10731
  collection = keys(collection);
10609
10732
  predicate = function(key) { return iteratee(iterable[key], key, iterable); };
10610
10733
  }
@@ -10658,219 +10781,23 @@ var find = createFind(findIndex);
10658
10781
 
10659
10782
  var find_1 = find;
10660
10783
 
10661
- var baseEach$1 = _baseEach,
10662
- isArrayLike$1 = isArrayLike_1;
10663
-
10664
- /**
10665
- * The base implementation of `_.map` without support for iteratee shorthands.
10666
- *
10667
- * @private
10668
- * @param {Array|Object} collection The collection to iterate over.
10669
- * @param {Function} iteratee The function invoked per iteration.
10670
- * @returns {Array} Returns the new mapped array.
10671
- */
10672
- function baseMap$1(collection, iteratee) {
10673
- var index = -1,
10674
- result = isArrayLike$1(collection) ? Array(collection.length) : [];
10675
-
10676
- baseEach$1(collection, function(value, key, collection) {
10677
- result[++index] = iteratee(value, key, collection);
10678
- });
10679
- return result;
10680
- }
10681
-
10682
- var _baseMap = baseMap$1;
10683
-
10684
- var arrayMap = _arrayMap,
10685
- baseIteratee$1 = _baseIteratee,
10686
- baseMap = _baseMap,
10687
- isArray$2 = isArray_1;
10688
-
10689
- /**
10690
- * Creates an array of values by running each element in `collection` thru
10691
- * `iteratee`. The iteratee is invoked with three arguments:
10692
- * (value, index|key, collection).
10693
- *
10694
- * Many lodash methods are guarded to work as iteratees for methods like
10695
- * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.
10696
- *
10697
- * The guarded methods are:
10698
- * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,
10699
- * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,
10700
- * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,
10701
- * `template`, `trim`, `trimEnd`, `trimStart`, and `words`
10702
- *
10703
- * @static
10704
- * @memberOf _
10705
- * @since 0.1.0
10706
- * @category Collection
10707
- * @param {Array|Object} collection The collection to iterate over.
10708
- * @param {Function} [iteratee=_.identity] The function invoked per iteration.
10709
- * @returns {Array} Returns the new mapped array.
10710
- * @example
10711
- *
10712
- * function square(n) {
10713
- * return n * n;
10714
- * }
10715
- *
10716
- * _.map([4, 8], square);
10717
- * // => [16, 64]
10718
- *
10719
- * _.map({ 'a': 4, 'b': 8 }, square);
10720
- * // => [16, 64] (iteration order is not guaranteed)
10721
- *
10722
- * var users = [
10723
- * { 'user': 'barney' },
10724
- * { 'user': 'fred' }
10725
- * ];
10726
- *
10727
- * // The `_.property` iteratee shorthand.
10728
- * _.map(users, 'user');
10729
- * // => ['barney', 'fred']
10730
- */
10731
- function map(collection, iteratee) {
10732
- var func = isArray$2(collection) ? arrayMap : baseMap;
10733
- return func(collection, baseIteratee$1(iteratee));
10734
- }
10735
-
10736
- var map_1 = map;
10737
-
10738
- /**
10739
- * Base layer for plugins
10740
- * Provide minimal starting core for plugins to work
10741
- * Extend this class to create plugin
10742
- */
10743
- class BasePlugin {
10744
- constructor(revogrid, providers) {
10745
- this.revogrid = revogrid;
10746
- this.providers = providers;
10747
- this.h = hAsync;
10748
- this.subscriptions = {};
10749
- }
10750
- /**
10751
- *
10752
- * @param eventName - event name to subscribe to in revo-grid component (e.g. 'beforeheaderclick')
10753
- * @param callback - callback function for event
10754
- */
10755
- addEventListener(eventName, callback) {
10756
- this.revogrid.addEventListener(eventName, callback);
10757
- this.subscriptions[eventName] = callback;
10758
- }
10759
- /**
10760
- * Subscribe to property change in revo-grid component
10761
- * You can return false in callback to prevent default value set
10762
- *
10763
- * @param prop - property name
10764
- * @param callback - callback function
10765
- * @param immediate - trigger callback immediately with current value
10766
- */
10767
- watch(prop, callback, { immediate } = { immediate: false }) {
10768
- const nativeValueDesc = Object.getOwnPropertyDescriptor(this.revogrid, prop) ||
10769
- Object.getOwnPropertyDescriptor(this.revogrid.constructor.prototype, prop);
10770
- // Overwrite property descriptor for this instance
10771
- Object.defineProperty(this.revogrid, prop, {
10772
- set(val) {
10773
- var _a;
10774
- const keepDefault = callback(val);
10775
- if (keepDefault === false) {
10776
- return;
10777
- }
10778
- // Continue with native behavior
10779
- return (_a = nativeValueDesc === null || nativeValueDesc === void 0 ? void 0 : nativeValueDesc.set) === null || _a === void 0 ? void 0 : _a.call(this, val);
10780
- },
10781
- get() {
10782
- var _a;
10783
- // Continue with native behavior
10784
- return (_a = nativeValueDesc === null || nativeValueDesc === void 0 ? void 0 : nativeValueDesc.get) === null || _a === void 0 ? void 0 : _a.call(this);
10785
- },
10786
- });
10787
- if (immediate) {
10788
- callback(nativeValueDesc === null || nativeValueDesc === void 0 ? void 0 : nativeValueDesc.value);
10789
- }
10790
- }
10791
- /**
10792
- * Remove event listener
10793
- * @param eventName
10794
- */
10795
- removeEventListener(eventName) {
10796
- this.revogrid.removeEventListener(eventName, this.subscriptions[eventName]);
10797
- delete this.subscriptions[eventName];
10798
- }
10799
- /**
10800
- * Emit event from revo-grid component
10801
- * Event can be cancelled by calling event.preventDefault() in callback
10802
- */
10803
- emit(eventName, detail) {
10804
- const event = new CustomEvent(eventName, { detail, cancelable: true });
10805
- this.revogrid.dispatchEvent(event);
10806
- return event;
10807
- }
10808
- /**
10809
- * Clear all subscriptions
10810
- */
10811
- clearSubscriptions() {
10812
- for (let type in this.subscriptions) {
10813
- this.removeEventListener(type);
10814
- }
10815
- }
10816
- /**
10817
- * Destroy plugin and clear all subscriptions
10818
- */
10819
- destroy() {
10820
- this.clearSubscriptions();
10821
- }
10822
- }
10823
-
10824
- class GroupingColumnPlugin extends BasePlugin {
10825
- static gatherGroup(res, colData, collection, level = 0) {
10826
- // group template
10827
- const group = Object.assign(Object.assign({}, colData), { level, ids: [] });
10828
- // check columns for update
10829
- for (let k in collection.columns) {
10830
- const key = k;
10831
- const resultItem = res.columns[key];
10832
- const collectionItem = collection.columns[key];
10833
- // if column data
10834
- if (isArray_1(resultItem) && isArray_1(collectionItem)) {
10835
- // fill columns
10836
- resultItem.push(...collectionItem);
10837
- // fill grouping
10838
- if (collectionItem.length) {
10839
- res.columnGrouping[key].push(Object.assign(Object.assign({}, group), { ids: map_1(collectionItem, 'prop') }));
10840
- }
10841
- }
10842
- }
10843
- // merge column groupings
10844
- for (let k in collection.columnGrouping) {
10845
- const key = k;
10846
- const collectionItem = collection.columnGrouping[key];
10847
- res.columnGrouping[key].push(...collectionItem);
10848
- }
10849
- res.maxLevel = Math.max(res.maxLevel, collection.maxLevel);
10850
- res.sort = Object.assign(Object.assign({}, res.sort), collection.sort);
10851
- return res;
10852
- }
10853
- }
10854
- /**
10855
- * Check if column is grouping column
10856
- */
10857
- function isColGrouping(colData) {
10858
- return !!colData.children;
10859
- }
10860
-
10861
10784
  class ColumnDataProvider {
10862
10785
  get order() {
10863
- return reduce_1(this.sorting, (r, c, prop) => {
10864
- r[prop] = c.order;
10865
- return r;
10866
- }, {});
10786
+ const order = {};
10787
+ const sorting = this.sorting;
10788
+ if (sorting) {
10789
+ Object.keys(sorting).forEach((prop) => {
10790
+ order[prop] = sorting[prop].order;
10791
+ });
10792
+ }
10793
+ return order;
10867
10794
  }
10868
10795
  get stores() {
10869
10796
  return this.dataSources;
10870
10797
  }
10871
10798
  constructor() {
10872
10799
  this.sorting = null;
10873
- this.dataSources = reduce_1(columnTypes, (sources, k) => {
10800
+ this.dataSources = columnTypes.reduce((sources, k) => {
10874
10801
  sources[k] = new DataStore(k);
10875
10802
  return sources;
10876
10803
  }, {});
@@ -10932,7 +10859,7 @@ class ColumnDataProvider {
10932
10859
  updateColumns(cols) {
10933
10860
  // collect column by type and propert
10934
10861
  const columnByKey = cols.reduce((res, c) => {
10935
- const type = ColumnDataProvider.getColumnType(c);
10862
+ const type = getColumnType(c);
10936
10863
  if (!res[type]) {
10937
10864
  res[type] = {};
10938
10865
  }
@@ -10941,20 +10868,32 @@ class ColumnDataProvider {
10941
10868
  }, {});
10942
10869
  // find indexes in source
10943
10870
  const colByIndex = {};
10944
- each(columnByKey, (colsToUpdate, type) => {
10871
+ for (const t in columnByKey) {
10872
+ if (!columnByKey.hasOwnProperty(t)) {
10873
+ continue;
10874
+ }
10875
+ const type = t;
10876
+ const colsToUpdate = columnByKey[type];
10945
10877
  const items = this.dataSources[type].store.get('source');
10946
- colByIndex[type] = items.reduce((result, rgCol, index) => {
10878
+ colByIndex[type] = {};
10879
+ for (let i = 0; i < items.length; i++) {
10880
+ const rgCol = items[i];
10947
10881
  const colToUpdateIfExists = colsToUpdate === null || colsToUpdate === void 0 ? void 0 : colsToUpdate[rgCol.prop];
10948
10882
  if (colToUpdateIfExists) {
10949
- result[index] = colToUpdateIfExists;
10883
+ colByIndex[type][i] = colToUpdateIfExists;
10950
10884
  }
10951
- return result;
10952
- }, {});
10953
- });
10954
- each(colByIndex, (colsToUpdate, type) => setSourceByVirtualIndex(this.dataSources[type].store, colsToUpdate || {}));
10885
+ }
10886
+ }
10887
+ for (const t in colByIndex) {
10888
+ if (!colByIndex.hasOwnProperty(t)) {
10889
+ continue;
10890
+ }
10891
+ const type = t;
10892
+ setSourceByVirtualIndex(this.dataSources[type].store, colByIndex[type] || {});
10893
+ }
10955
10894
  }
10956
10895
  updateColumn(column, index) {
10957
- const type = ColumnDataProvider.getColumnType(column);
10896
+ const type = getColumnType(column);
10958
10897
  setSourceByVirtualIndex(this.dataSources[type].store, { [index]: column });
10959
10898
  }
10960
10899
  updateColumnSorting(column, index, sorting, additive) {
@@ -10971,7 +10910,7 @@ class ColumnDataProvider {
10971
10910
  }
10972
10911
  clearSorting() {
10973
10912
  const types = reduce_1(this.sorting, (r, c) => {
10974
- const k = ColumnDataProvider.getColumnType(c);
10913
+ const k = getColumnType(c);
10975
10914
  r[k] = true;
10976
10915
  return r;
10977
10916
  }, {});
@@ -10982,78 +10921,6 @@ class ColumnDataProvider {
10982
10921
  });
10983
10922
  this.sorting = {};
10984
10923
  }
10985
- static getSizes(cols) {
10986
- return reduce_1(cols, (res, c, i) => {
10987
- if (c.size) {
10988
- res[i] = c.size;
10989
- }
10990
- return res;
10991
- }, {});
10992
- }
10993
- static getColumnByProp(columns, prop) {
10994
- return find_1(columns, c => {
10995
- if (isColGrouping(c)) {
10996
- return ColumnDataProvider.getColumnByProp(c.children, prop);
10997
- }
10998
- return c.prop === prop;
10999
- });
11000
- }
11001
- // columns processing
11002
- static getColumns(columns, level = 0, types) {
11003
- const collection = {
11004
- // columns as they are in stores per type
11005
- columns: {
11006
- rgCol: [],
11007
- colPinStart: [],
11008
- colPinEnd: [],
11009
- },
11010
- // columns grouped by prop for quick access
11011
- columnByProp: {},
11012
- // column grouping
11013
- columnGrouping: {
11014
- rgCol: [],
11015
- colPinStart: [],
11016
- colPinEnd: [],
11017
- },
11018
- // max depth level for column grouping
11019
- maxLevel: level,
11020
- // sorting
11021
- sort: {},
11022
- };
11023
- return reduce_1(columns, (res, colData) => {
11024
- // Grouped column
11025
- if (isColGrouping(colData)) {
11026
- return GroupingColumnPlugin.gatherGroup(res, colData, ColumnDataProvider.getColumns(colData.children, level + 1, types), level);
11027
- }
11028
- // Regular column
11029
- const regularColumn = Object.assign(Object.assign({}, (colData.columnType && types && types[colData.columnType])), colData);
11030
- // Regular column, no Pin
11031
- if (!regularColumn.pin) {
11032
- res.columns.rgCol.push(regularColumn);
11033
- // Pin
11034
- }
11035
- else {
11036
- res.columns[regularColumn.pin].push(regularColumn);
11037
- }
11038
- if (regularColumn.order) {
11039
- res.sort[regularColumn.prop] = regularColumn;
11040
- }
11041
- // technically it's possible that some columns have same prop, but better to avoid it
11042
- if (!res.columnByProp[regularColumn.prop]) {
11043
- res.columnByProp[regularColumn.prop] = [];
11044
- }
11045
- res.columnByProp[regularColumn.prop].push(regularColumn);
11046
- // trigger setup hook if present
11047
- regularColumn.beforeSetup && regularColumn.beforeSetup(regularColumn);
11048
- return res;
11049
- }, collection);
11050
- }
11051
- static getColumnType(rgCol) {
11052
- if (rgCol.pin) {
11053
- return rgCol.pin;
11054
- }
11055
- return 'rgCol';
11056
- }
11057
10924
  }
11058
10925
 
11059
10926
  /**
@@ -11204,7 +11071,7 @@ class DimensionProvider {
11204
11071
  // setItemCount
11205
11072
  this.stores[type].setStore({ count: items.length });
11206
11073
  // setCustomSizes
11207
- const newSizes = ColumnDataProvider.getSizes(items);
11074
+ const newSizes = getColumnSizes(items);
11208
11075
  this.stores[type].setDimensionSize(newSizes);
11209
11076
  const vpUpdate = {
11210
11077
  // this triggers drop on realCount change
@@ -11342,11 +11209,97 @@ class ThemeService {
11342
11209
  }
11343
11210
  }
11344
11211
 
11212
+ /**
11213
+ * Base layer for plugins
11214
+ * Provide minimal starting core for plugins to work
11215
+ * Extend this class to create plugin
11216
+ */
11217
+ class BasePlugin {
11218
+ constructor(revogrid, providers) {
11219
+ this.revogrid = revogrid;
11220
+ this.providers = providers;
11221
+ this.h = hAsync;
11222
+ this.subscriptions = {};
11223
+ }
11224
+ /**
11225
+ *
11226
+ * @param eventName - event name to subscribe to in revo-grid component (e.g. 'beforeheaderclick')
11227
+ * @param callback - callback function for event
11228
+ */
11229
+ addEventListener(eventName, callback) {
11230
+ this.revogrid.addEventListener(eventName, callback);
11231
+ this.subscriptions[eventName] = callback;
11232
+ }
11233
+ /**
11234
+ * Subscribe to property change in revo-grid component
11235
+ * You can return false in callback to prevent default value set
11236
+ *
11237
+ * @param prop - property name
11238
+ * @param callback - callback function
11239
+ * @param immediate - trigger callback immediately with current value
11240
+ */
11241
+ watch(prop, callback, { immediate } = { immediate: false }) {
11242
+ const nativeValueDesc = Object.getOwnPropertyDescriptor(this.revogrid, prop) ||
11243
+ Object.getOwnPropertyDescriptor(this.revogrid.constructor.prototype, prop);
11244
+ // Overwrite property descriptor for this instance
11245
+ Object.defineProperty(this.revogrid, prop, {
11246
+ set(val) {
11247
+ var _a;
11248
+ const keepDefault = callback(val);
11249
+ if (keepDefault === false) {
11250
+ return;
11251
+ }
11252
+ // Continue with native behavior
11253
+ return (_a = nativeValueDesc === null || nativeValueDesc === void 0 ? void 0 : nativeValueDesc.set) === null || _a === void 0 ? void 0 : _a.call(this, val);
11254
+ },
11255
+ get() {
11256
+ var _a;
11257
+ // Continue with native behavior
11258
+ return (_a = nativeValueDesc === null || nativeValueDesc === void 0 ? void 0 : nativeValueDesc.get) === null || _a === void 0 ? void 0 : _a.call(this);
11259
+ },
11260
+ });
11261
+ if (immediate) {
11262
+ callback(nativeValueDesc === null || nativeValueDesc === void 0 ? void 0 : nativeValueDesc.value);
11263
+ }
11264
+ }
11265
+ /**
11266
+ * Remove event listener
11267
+ * @param eventName
11268
+ */
11269
+ removeEventListener(eventName) {
11270
+ this.revogrid.removeEventListener(eventName, this.subscriptions[eventName]);
11271
+ delete this.subscriptions[eventName];
11272
+ }
11273
+ /**
11274
+ * Emit event from revo-grid component
11275
+ * Event can be cancelled by calling event.preventDefault() in callback
11276
+ */
11277
+ emit(eventName, detail) {
11278
+ const event = new CustomEvent(eventName, { detail, cancelable: true });
11279
+ this.revogrid.dispatchEvent(event);
11280
+ return event;
11281
+ }
11282
+ /**
11283
+ * Clear all subscriptions
11284
+ */
11285
+ clearSubscriptions() {
11286
+ for (let type in this.subscriptions) {
11287
+ this.removeEventListener(type);
11288
+ }
11289
+ }
11290
+ /**
11291
+ * Destroy plugin and clear all subscriptions
11292
+ */
11293
+ destroy() {
11294
+ this.clearSubscriptions();
11295
+ }
11296
+ }
11297
+
11345
11298
  /**
11346
11299
  * Plugin module for revo-grid grid system
11347
11300
  * Add support for automatic column resize
11348
11301
  */
11349
- const LETTER_BLOCK_SIZE$1 = 7;
11302
+ const LETTER_BLOCK_SIZE = 7;
11350
11303
  var ColumnAutoSizeMode;
11351
11304
  (function (ColumnAutoSizeMode) {
11352
11305
  // increases column width on header click according the largest text value
@@ -11365,7 +11318,7 @@ class AutoSizeColumnPlugin extends BasePlugin {
11365
11318
  /** for edge case when no columns defined before data */
11366
11319
  this.dataResolve = null;
11367
11320
  this.dataReject = null;
11368
- this.letterBlockSize = (config === null || config === void 0 ? void 0 : config.letterBlockSize) || LETTER_BLOCK_SIZE$1;
11321
+ this.letterBlockSize = (config === null || config === void 0 ? void 0 : config.letterBlockSize) || LETTER_BLOCK_SIZE;
11369
11322
  // create test container to check text width
11370
11323
  if (config === null || config === void 0 ? void 0 : config.preciseSize) {
11371
11324
  this.precsizeCalculationArea = this.initiatePresizeElement();
@@ -11384,7 +11337,7 @@ class AutoSizeColumnPlugin extends BasePlugin {
11384
11337
  this.columnSet(columns);
11385
11338
  };
11386
11339
  const headerDblClick = ({ detail }) => {
11387
- const type = ColumnDataProvider.getColumnType(detail.column);
11340
+ const type = getColumnType(detail.column);
11388
11341
  const size = this.getColumnSize(detail.index, type);
11389
11342
  if (size) {
11390
11343
  this.providers.dimension.setCustomSizes(type, {
@@ -12207,7 +12160,7 @@ class SortingPlugin extends BasePlugin {
12207
12160
  const columns = (await this.revogrid.getColumns());
12208
12161
  const sortingFunc = {};
12209
12162
  for (let prop in order) {
12210
- const cmp = this.getComparer(ColumnDataProvider.getColumnByProp(columns, prop), order[prop]);
12163
+ const cmp = this.getComparer(getColumnByProp(columns, prop), order[prop]);
12211
12164
  sortingFunc[prop] = cmp;
12212
12165
  }
12213
12166
  this.runSorting(order, sortingFunc);
@@ -13529,12 +13482,6 @@ const OrderRenderer = ({ ref }) => {
13529
13482
  hAsync("div", { class: "drag-position", ref: e => (service.rgRow = e) })));
13530
13483
  };
13531
13484
 
13532
- const LETTER_BLOCK_SIZE = 10;
13533
- const calculateRowHeaderSize = (itemsLength, rowHeaderColumn, minWidth = 50) => {
13534
- return ((rowHeaderColumn === null || rowHeaderColumn === void 0 ? void 0 : rowHeaderColumn.size) ||
13535
- Math.max((itemsLength.toString().length + 1) * LETTER_BLOCK_SIZE, minWidth));
13536
- };
13537
-
13538
13485
  class StretchColumn extends BasePlugin {
13539
13486
  constructor(revogrid, providers) {
13540
13487
  super(revogrid, providers);
@@ -14377,7 +14324,7 @@ class RevoGridComponent {
14377
14324
  /** Open editor for cell. */
14378
14325
  async setCellEdit(rgRow, prop, rowSource = 'rgRow') {
14379
14326
  var _a;
14380
- const rgCol = ColumnDataProvider.getColumnByProp(this.columns, prop);
14327
+ const rgCol = getColumnByProp(this.columns, prop);
14381
14328
  if (!rgCol) {
14382
14329
  return;
14383
14330
  }
@@ -14601,7 +14548,7 @@ class RevoGridComponent {
14601
14548
  this.columnChanged(this.columns);
14602
14549
  }
14603
14550
  columnChanged(newVal = []) {
14604
- const columnGather = ColumnDataProvider.getColumns(newVal, 0, this.columnTypes);
14551
+ const columnGather = getColumns(newVal, 0, this.columnTypes);
14605
14552
  this.beforecolumnsset.emit(columnGather);
14606
14553
  this.dimensionProvider.applyNewColumns(columnGather.columns, this.disableVirtualX);
14607
14554
  this.beforecolumnapplied.emit(columnGather);
@@ -14911,7 +14858,7 @@ class RevoGridComponent {
14911
14858
  const headerProperties = Object.assign(Object.assign({}, view.headerProp), { type: view.type, additionalData: this.additionalData, viewportCol: view.viewportCol, selectionStore: view.columnSelectionStore, canResize: this.resize, readonly: this.readonly, columnFilter: !!this.filter });
14912
14859
  // Column headers
14913
14860
  const dataViews = [
14914
- hAsync("revogr-header", Object.assign({ key: 'b08c837765cf20c88cb5b253a876f0f442c31628' }, headerProperties, { slot: HEADER_SLOT })),
14861
+ hAsync("revogr-header", Object.assign({ key: 'bada77126c317da09a9826312186c16617c7b0af' }, headerProperties, { slot: HEADER_SLOT })),
14915
14862
  ];
14916
14863
  // Render viewport data (vertical sections)
14917
14864
  view.dataPorts.forEach(data => {
@@ -14933,12 +14880,12 @@ class RevoGridComponent {
14933
14880
  const typeCol = 'rgCol';
14934
14881
  const viewports = this.viewportProvider.stores;
14935
14882
  const dimensions = this.dimensionProvider.stores;
14936
- return (hAsync(Host, { key: '057a2cf1a64aaeec12d2aca17b09316fb3cbfde6' }, this.hideAttribution ? null : (hAsync("revogr-attribution", { class: "attribution" })), hAsync("div", { key: 'e89e3d136d756f80421f42f47e09583985edb1bc', class: "main-viewport", onClick: (e) => {
14883
+ return (hAsync(Host, { key: '9b95aef4de8af770036a733986e7e0fe2dd3ffda' }, this.hideAttribution ? null : (hAsync("revogr-attribution", { class: "attribution" })), hAsync("div", { key: '68dbc0fca826a0089402157d301c49a0776e9007', class: "main-viewport", onClick: (e) => {
14937
14884
  var _a;
14938
14885
  if (e.currentTarget === e.target) {
14939
14886
  (_a = this.viewport) === null || _a === void 0 ? void 0 : _a.clearEdit();
14940
14887
  }
14941
- } }, hAsync("div", { key: '177db78970907d36b8d56549386a18a683573944', class: "viewports" }, hAsync("slot", { key: '481d830a232b1969fcaa2519a5306fafaff58fb4', name: "viewport" }), viewportSections, hAsync("revogr-scroll-virtual", { key: '6a123b2e84bec95d7a63a73322fe167248e8415e', class: "vertical", dimension: typeRow, viewportStore: viewports[typeRow].store, dimensionStore: dimensions[typeRow].store, ref: el => this.scrollingService.registerElement(el, 'rowScroll'), onScrollvirtual: e => this.scrollingService.proxyScroll(e.detail) }), hAsync(OrderRenderer, { key: 'fea1be24668f2039746fff93d0ab5e76d932a166', ref: e => (this.orderService = e) }))), hAsync("revogr-scroll-virtual", { key: '74c6e05c81b2782320755c910b098edf8858d6db', class: "horizontal", dimension: typeCol, viewportStore: viewports[typeCol].store, dimensionStore: dimensions[typeCol].store, ref: el => this.scrollingService.registerElement(el, 'colScroll'), onScrollvirtual: e => this.scrollingService.proxyScroll(e.detail) }), this.extraElements));
14888
+ } }, hAsync("div", { key: '6f927e04dd8c7e542a87fdc0a4f6d74248c65ccb', class: "viewports" }, hAsync("slot", { key: 'b6d421fa412b34ce9821cd1fa30a80ae37282f37', name: "viewport" }), viewportSections, hAsync("revogr-scroll-virtual", { key: '4ce3045201685f6c6c617c84fddc5a3d531034bd', class: "vertical", dimension: typeRow, viewportStore: viewports[typeRow].store, dimensionStore: dimensions[typeRow].store, ref: el => this.scrollingService.registerElement(el, 'rowScroll'), onScrollvirtual: e => this.scrollingService.proxyScroll(e.detail) }), hAsync(OrderRenderer, { key: 'e5bd92c37bdc31f0601a4d4cf4a62026e0e25406', ref: e => (this.orderService = e) }))), hAsync("revogr-scroll-virtual", { key: 'dbda0fb90cf6a9eb6ac66ca16bcff30cf254b1e1', class: "horizontal", dimension: typeCol, viewportStore: viewports[typeCol].store, dimensionStore: dimensions[typeCol].store, ref: el => this.scrollingService.registerElement(el, 'colScroll'), onScrollvirtual: e => this.scrollingService.proxyScroll(e.detail) }), this.extraElements));
14942
14889
  }
14943
14890
  disconnectedCallback() {
14944
14891
  // Remove all plugins, to avoid memory leaks and unexpected behaviour when the component is removed