@revolist/revogrid 4.0.4-next → 4.0.4

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 (802) hide show
  1. package/LICENSE +1 -1
  2. package/dist/cjs/app-globals-53fde1aa.js +14 -0
  3. package/dist/cjs/app-globals-53fde1aa.js.map +1 -0
  4. package/dist/cjs/column.service-2066d651.js +545 -0
  5. package/dist/cjs/column.service-2066d651.js.map +1 -0
  6. package/dist/cjs/debounce-e2b7c6fb.js +226 -0
  7. package/dist/cjs/debounce-e2b7c6fb.js.map +1 -0
  8. package/dist/cjs/dimension.helpers-ee39d6c4.js +4218 -0
  9. package/dist/cjs/dimension.helpers-ee39d6c4.js.map +1 -0
  10. package/dist/cjs/dispatcher-a58fa91a.js +34 -0
  11. package/dist/cjs/dispatcher-a58fa91a.js.map +1 -0
  12. package/dist/cjs/events-7ccd6894.js +233 -0
  13. package/dist/cjs/events-7ccd6894.js.map +1 -0
  14. package/dist/cjs/filter.button-db6cbd2e.js +44 -0
  15. package/dist/cjs/filter.button-db6cbd2e.js.map +1 -0
  16. package/dist/cjs/header-cell-renderer-3df76829.js +304 -0
  17. package/dist/cjs/header-cell-renderer-3df76829.js.map +1 -0
  18. package/dist/cjs/index-73c149e3.js +106 -0
  19. package/dist/cjs/index-73c149e3.js.map +1 -0
  20. package/dist/cjs/index-84e32c2a.js +1868 -0
  21. package/dist/cjs/index-84e32c2a.js.map +1 -0
  22. package/dist/cjs/index.cjs.js +53 -0
  23. package/dist/cjs/index.cjs.js.map +1 -0
  24. package/dist/cjs/key.utils-dc4ac217.js +129 -0
  25. package/dist/cjs/key.utils-dc4ac217.js.map +1 -0
  26. package/dist/cjs/loader.cjs.js +12 -27
  27. package/dist/cjs/loader.cjs.js.map +1 -0
  28. package/dist/cjs/{resize-observer-8dc80084.js → resize-observer-d009a220.js} +30 -13
  29. package/dist/cjs/resize-observer-d009a220.js.map +1 -0
  30. package/dist/cjs/revo-grid.cjs.entry.js +3992 -0
  31. package/dist/cjs/revo-grid.cjs.entry.js.map +1 -0
  32. package/dist/cjs/revo-grid.cjs.js +22 -65
  33. package/dist/cjs/revo-grid.cjs.js.map +1 -0
  34. package/dist/cjs/revogr-attribution_6.cjs.entry.js +1270 -0
  35. package/dist/cjs/revogr-attribution_6.cjs.entry.js.map +1 -0
  36. package/dist/cjs/revogr-clipboard_3.cjs.entry.js +508 -0
  37. package/dist/cjs/revogr-clipboard_3.cjs.entry.js.map +1 -0
  38. package/dist/cjs/revogr-data_4.cjs.entry.js +958 -0
  39. package/dist/cjs/revogr-data_4.cjs.entry.js.map +1 -0
  40. package/dist/cjs/revogr-filter-panel.cjs.entry.js +268 -115
  41. package/dist/cjs/revogr-filter-panel.cjs.entry.js.map +1 -0
  42. package/dist/cjs/selection.store-2e110a67.js +400 -0
  43. package/dist/cjs/selection.store-2e110a67.js.map +1 -0
  44. package/dist/cjs/storeTypes-b3f924b2.js +106 -0
  45. package/dist/cjs/storeTypes-b3f924b2.js.map +1 -0
  46. package/dist/cjs/throttle-f7aee21b.js +240 -0
  47. package/dist/cjs/throttle-f7aee21b.js.map +1 -0
  48. package/dist/cjs/toNumber-838e6ff5.js +340 -0
  49. package/dist/cjs/toNumber-838e6ff5.js.map +1 -0
  50. package/dist/cjs/viewport.helpers-6670177c.js +262 -0
  51. package/dist/cjs/viewport.helpers-6670177c.js.map +1 -0
  52. package/dist/collection/collection-manifest.json +18 -16
  53. package/dist/collection/components/attribution/revogr-attribution.js +20 -0
  54. package/dist/collection/components/attribution/revogr-attribution.js.map +1 -0
  55. package/dist/collection/components/clipboard/revogr-clipboard.js +410 -115
  56. package/dist/collection/components/clipboard/revogr-clipboard.js.map +1 -0
  57. package/dist/collection/components/data/cell-renderer.js +39 -0
  58. package/dist/collection/components/data/cell-renderer.js.map +1 -0
  59. package/dist/collection/components/data/column.service.js +302 -0
  60. package/dist/collection/components/data/column.service.js.map +1 -0
  61. package/dist/collection/components/data/revogr-data-style.css +18 -11
  62. package/dist/collection/components/data/revogr-data.js +626 -301
  63. package/dist/collection/components/data/revogr-data.js.map +1 -0
  64. package/dist/collection/components/data/row-highlight.plugin.js +51 -0
  65. package/dist/collection/components/data/row-highlight.plugin.js.map +1 -0
  66. package/dist/collection/components/data/row-renderer.js +16 -0
  67. package/dist/collection/components/data/row-renderer.js.map +1 -0
  68. package/dist/collection/components/editors/edit.utils.js +9 -0
  69. package/dist/collection/components/editors/edit.utils.js.map +1 -0
  70. package/dist/collection/components/{overlay → editors}/revogr-edit-style.css +15 -9
  71. package/dist/collection/components/editors/revogr-edit.js +316 -0
  72. package/dist/collection/components/editors/revogr-edit.js.map +1 -0
  73. package/dist/collection/components/editors/text-editor.js +73 -0
  74. package/dist/collection/components/editors/text-editor.js.map +1 -0
  75. package/dist/collection/components/header/header-cell-renderer.js +28 -0
  76. package/dist/collection/components/header/header-cell-renderer.js.map +1 -0
  77. package/dist/collection/components/header/header-renderer.js +47 -0
  78. package/dist/collection/components/header/header-renderer.js.map +1 -0
  79. package/dist/collection/components/header/revogr-header-style.css +15 -9
  80. package/dist/collection/components/header/revogr-header.js +421 -297
  81. package/dist/collection/components/header/revogr-header.js.map +1 -0
  82. package/dist/collection/components/order/order-renderer.js +50 -0
  83. package/dist/collection/components/order/order-renderer.js.map +1 -0
  84. package/dist/collection/components/order/order-row.service.js +72 -0
  85. package/dist/collection/components/order/order-row.service.js.map +1 -0
  86. package/dist/collection/components/order/revogr-order-editor.js +381 -350
  87. package/dist/collection/components/order/revogr-order-editor.js.map +1 -0
  88. package/dist/collection/components/overlay/autofill.service.js +206 -179
  89. package/dist/collection/components/overlay/autofill.service.js.map +1 -0
  90. package/dist/collection/components/overlay/keyboard.service.js +137 -124
  91. package/dist/collection/components/overlay/keyboard.service.js.map +1 -0
  92. package/dist/collection/components/overlay/revogr-overlay-selection.js +1208 -703
  93. package/dist/collection/components/overlay/revogr-overlay-selection.js.map +1 -0
  94. package/dist/collection/components/overlay/revogr-overlay-style.css +86 -13
  95. package/dist/collection/components/overlay/selection.utils.js +86 -82
  96. package/dist/collection/components/overlay/selection.utils.js.map +1 -0
  97. package/dist/collection/components/revoGrid/grid.helpers.js +28 -13
  98. package/dist/collection/components/revoGrid/grid.helpers.js.map +1 -0
  99. package/dist/collection/components/revoGrid/revo-grid-style.css +143 -51
  100. package/dist/collection/components/revoGrid/revo-grid.js +2834 -2181
  101. package/dist/collection/components/revoGrid/revo-grid.js.map +1 -0
  102. package/dist/collection/components/revoGrid/viewport.helpers.js +9 -4
  103. package/dist/collection/components/revoGrid/viewport.helpers.js.map +1 -0
  104. package/dist/collection/components/revoGrid/viewport.resize.service.js +23 -19
  105. package/dist/collection/components/revoGrid/viewport.resize.service.js.map +1 -0
  106. package/dist/collection/components/revoGrid/viewport.scrolling.service.js +78 -50
  107. package/dist/collection/components/revoGrid/viewport.scrolling.service.js.map +1 -0
  108. package/dist/collection/components/revoGrid/viewport.service.js +224 -204
  109. package/dist/collection/components/revoGrid/viewport.service.js.map +1 -0
  110. package/dist/collection/components/rowHeaders/revogr-row-headers.js +262 -204
  111. package/dist/collection/components/rowHeaders/revogr-row-headers.js.map +1 -0
  112. package/dist/collection/components/rowHeaders/row-header-render.js +4 -0
  113. package/dist/collection/components/rowHeaders/row-header-render.js.map +1 -0
  114. package/dist/collection/components/scroll/revogr-viewport-scroll-style.css +20 -13
  115. package/dist/collection/components/scroll/revogr-viewport-scroll.js +535 -369
  116. package/dist/collection/components/scroll/revogr-viewport-scroll.js.map +1 -0
  117. package/dist/collection/components/scrollable/autohide-scroll.plugin.js +44 -0
  118. package/dist/collection/components/scrollable/autohide-scroll.plugin.js.map +1 -0
  119. package/dist/collection/components/scrollable/revogr-scroll-style.css +24 -18
  120. package/dist/collection/components/scrollable/revogr-scroll-virtual.js +286 -247
  121. package/dist/collection/components/scrollable/revogr-scroll-virtual.js.map +1 -0
  122. package/dist/collection/components/selectionFocus/revogr-focus-style.css +16 -10
  123. package/dist/collection/components/selectionFocus/revogr-focus.js +366 -96
  124. package/dist/collection/components/selectionFocus/revogr-focus.js.map +1 -0
  125. package/dist/collection/components/selectionTempRange/revogr-temp-range-style.css +16 -10
  126. package/dist/collection/components/selectionTempRange/revogr-temp-range.js +149 -128
  127. package/dist/collection/components/selectionTempRange/revogr-temp-range.js.map +1 -0
  128. package/dist/collection/components/vnode/vnode-converter.js +81 -0
  129. package/dist/collection/components/vnode/vnode-converter.js.map +1 -0
  130. package/dist/collection/components/vnode/vnode.utils.js +18 -0
  131. package/dist/collection/components/vnode/vnode.utils.js.map +1 -0
  132. package/dist/collection/global/global.js +15 -11
  133. package/dist/collection/global/global.js.map +1 -0
  134. package/dist/collection/index.js +18 -0
  135. package/dist/collection/index.js.map +1 -0
  136. package/dist/collection/plugins/base.plugin.js +88 -0
  137. package/dist/collection/plugins/base.plugin.js.map +1 -0
  138. package/dist/collection/plugins/column.auto-size.plugin.js +234 -0
  139. package/dist/collection/plugins/column.auto-size.plugin.js.map +1 -0
  140. package/dist/collection/plugins/column.stretch.plugin.js +96 -0
  141. package/dist/collection/plugins/column.stretch.plugin.js.map +1 -0
  142. package/dist/collection/plugins/dispatcher.js +27 -0
  143. package/dist/collection/plugins/dispatcher.js.map +1 -0
  144. package/dist/collection/plugins/export/csv.js +57 -53
  145. package/dist/collection/plugins/export/csv.js.map +1 -0
  146. package/dist/collection/plugins/export/export.plugin.js +154 -150
  147. package/dist/collection/plugins/export/export.plugin.js.map +1 -0
  148. package/dist/collection/plugins/export/types.js +1 -0
  149. package/dist/collection/plugins/export/types.js.map +1 -0
  150. package/dist/collection/plugins/filter/conditions/equal.js +15 -7
  151. package/dist/collection/plugins/filter/conditions/equal.js.map +1 -0
  152. package/dist/collection/plugins/filter/conditions/number/greaterThan.js +10 -6
  153. package/dist/collection/plugins/filter/conditions/number/greaterThan.js.map +1 -0
  154. package/dist/collection/plugins/filter/conditions/number/greaterThanOrEqual.js +7 -3
  155. package/dist/collection/plugins/filter/conditions/number/greaterThanOrEqual.js.map +1 -0
  156. package/dist/collection/plugins/filter/conditions/number/lessThan.js +12 -8
  157. package/dist/collection/plugins/filter/conditions/number/lessThan.js.map +1 -0
  158. package/dist/collection/plugins/filter/conditions/number/lessThanOrEqual.js +7 -3
  159. package/dist/collection/plugins/filter/conditions/number/lessThanOrEqual.js.map +1 -0
  160. package/dist/collection/plugins/filter/conditions/set.js +4 -0
  161. package/dist/collection/plugins/filter/conditions/set.js.map +1 -0
  162. package/dist/collection/plugins/filter/conditions/string/beginswith.js +17 -13
  163. package/dist/collection/plugins/filter/conditions/string/beginswith.js.map +1 -0
  164. package/dist/collection/plugins/filter/conditions/string/contains.js +17 -10
  165. package/dist/collection/plugins/filter/conditions/string/contains.js.map +1 -0
  166. package/dist/collection/plugins/filter/filter.button.js +21 -13
  167. package/dist/collection/plugins/filter/filter.button.js.map +1 -0
  168. package/dist/collection/plugins/filter/filter.plugin.js +280 -185
  169. package/dist/collection/plugins/filter/filter.plugin.js.map +1 -0
  170. package/dist/collection/plugins/filter/filter.pop.js +492 -246
  171. package/dist/collection/plugins/filter/filter.pop.js.map +1 -0
  172. package/dist/collection/plugins/filter/filter.service.js +42 -38
  173. package/dist/collection/plugins/filter/filter.service.js.map +1 -0
  174. package/dist/collection/plugins/filter/filter.style.css +68 -15
  175. package/dist/collection/plugins/filter/filter.types.js +1 -0
  176. package/dist/collection/plugins/filter/filter.types.js.map +1 -0
  177. package/dist/collection/plugins/groupingColumn/columnGroupsRenderer.js +30 -26
  178. package/dist/collection/plugins/groupingColumn/columnGroupsRenderer.js.map +1 -0
  179. package/dist/collection/plugins/groupingColumn/grouping.col.plugin.js +38 -30
  180. package/dist/collection/plugins/groupingColumn/grouping.col.plugin.js.map +1 -0
  181. package/dist/collection/plugins/groupingColumn/headerGroupRenderer.js +22 -18
  182. package/dist/collection/plugins/groupingColumn/headerGroupRenderer.js.map +1 -0
  183. package/dist/collection/plugins/groupingRow/grouping.const.js +7 -2
  184. package/dist/collection/plugins/groupingRow/grouping.const.js.map +1 -0
  185. package/dist/collection/plugins/groupingRow/grouping.row.expand.service.js +64 -61
  186. package/dist/collection/plugins/groupingRow/grouping.row.expand.service.js.map +1 -0
  187. package/dist/collection/plugins/groupingRow/grouping.row.plugin.js +239 -237
  188. package/dist/collection/plugins/groupingRow/grouping.row.plugin.js.map +1 -0
  189. package/dist/collection/plugins/groupingRow/grouping.row.renderer.js +27 -24
  190. package/dist/collection/plugins/groupingRow/grouping.row.renderer.js.map +1 -0
  191. package/dist/collection/plugins/groupingRow/grouping.row.types.js +1 -0
  192. package/dist/collection/plugins/groupingRow/grouping.row.types.js.map +1 -0
  193. package/dist/collection/plugins/groupingRow/grouping.service.js +101 -131
  194. package/dist/collection/plugins/groupingRow/grouping.service.js.map +1 -0
  195. package/dist/collection/plugins/groupingRow/grouping.trimmed.service.js +47 -43
  196. package/dist/collection/plugins/groupingRow/grouping.trimmed.service.js.map +1 -0
  197. package/dist/collection/plugins/moveColumn/column.drag.plugin.js +167 -0
  198. package/dist/collection/plugins/moveColumn/column.drag.plugin.js.map +1 -0
  199. package/dist/collection/plugins/moveColumn/order-column.handler.js +69 -0
  200. package/dist/collection/plugins/moveColumn/order-column.handler.js.map +1 -0
  201. package/dist/collection/plugins/sorting/sorting.plugin.js +218 -163
  202. package/dist/collection/plugins/sorting/sorting.plugin.js.map +1 -0
  203. package/dist/collection/plugins/sorting/sorting.sign.js +6 -2
  204. package/dist/collection/plugins/sorting/sorting.sign.js.map +1 -0
  205. package/dist/collection/serve/controller.js +233 -0
  206. package/dist/collection/{utilsExternal/generate-data.js → serve/data.js} +72 -32
  207. package/dist/collection/services/cell.helpers.js +9 -5
  208. package/dist/collection/services/cell.helpers.js.map +1 -0
  209. package/dist/collection/services/column.data.provider.js +201 -185
  210. package/dist/collection/services/column.data.provider.js.map +1 -0
  211. package/dist/collection/services/data.provider.js +70 -45
  212. package/dist/collection/services/data.provider.js.map +1 -0
  213. package/dist/collection/services/dimension.provider.js +143 -85
  214. package/dist/collection/services/dimension.provider.js.map +1 -0
  215. package/dist/collection/services/local.scroll.service.js +120 -0
  216. package/dist/collection/services/local.scroll.service.js.map +1 -0
  217. package/dist/collection/services/local.scroll.timer.js +42 -0
  218. package/dist/collection/services/local.scroll.timer.js.map +1 -0
  219. package/dist/collection/services/resizable.directive.js +211 -226
  220. package/dist/collection/services/resizable.directive.js.map +1 -0
  221. package/dist/collection/services/resizable.element.js +39 -0
  222. package/dist/collection/services/resizable.element.js.map +1 -0
  223. package/dist/collection/services/selection.store.connector.js +257 -208
  224. package/dist/collection/services/selection.store.connector.js.map +1 -0
  225. package/dist/collection/services/viewport.provider.js +16 -12
  226. package/dist/collection/services/viewport.provider.js.map +1 -0
  227. package/dist/collection/store/dataSource/data.proxy.js +29 -25
  228. package/dist/collection/store/dataSource/data.proxy.js.map +1 -0
  229. package/dist/collection/store/dataSource/data.store.js +100 -93
  230. package/dist/collection/store/dataSource/data.store.js.map +1 -0
  231. package/dist/collection/store/dataSource/index.js +7 -0
  232. package/dist/collection/store/dataSource/index.js.map +1 -0
  233. package/dist/collection/store/dataSource/trimmed.plugin.js +36 -0
  234. package/dist/collection/store/dataSource/trimmed.plugin.js.map +1 -0
  235. package/dist/collection/store/dimension/dimension.helpers.js +97 -95
  236. package/dist/collection/store/dimension/dimension.helpers.js.map +1 -0
  237. package/dist/collection/store/dimension/dimension.store.js +106 -48
  238. package/dist/collection/store/dimension/dimension.store.js.map +1 -0
  239. package/dist/collection/store/dimension/index.js +6 -0
  240. package/dist/collection/store/dimension/index.js.map +1 -0
  241. package/dist/collection/store/selection/index.js +7 -0
  242. package/dist/collection/store/selection/index.js.map +1 -0
  243. package/dist/collection/store/selection/selection.helpers.js +43 -39
  244. package/dist/collection/store/selection/selection.helpers.js.map +1 -0
  245. package/dist/collection/store/selection/selection.store.js +75 -63
  246. package/dist/collection/store/selection/selection.store.js.map +1 -0
  247. package/dist/collection/store/selection/selection.store.service.js +35 -31
  248. package/dist/collection/store/selection/selection.store.service.js.map +1 -0
  249. package/dist/collection/store/storeTypes.js +10 -2
  250. package/dist/collection/store/storeTypes.js.map +1 -0
  251. package/dist/collection/store/viewport/index.js +6 -0
  252. package/dist/collection/store/viewport/index.js.map +1 -0
  253. package/dist/collection/store/viewport/viewport.helpers.js +247 -0
  254. package/dist/collection/store/viewport/viewport.helpers.js.map +1 -0
  255. package/dist/collection/store/viewport/viewport.store.js +193 -0
  256. package/dist/collection/store/viewport/viewport.store.js.map +1 -0
  257. package/dist/collection/themeManager/theme.compact.js +7 -3
  258. package/dist/collection/themeManager/theme.compact.js.map +1 -0
  259. package/dist/collection/themeManager/theme.default.js +7 -3
  260. package/dist/collection/themeManager/theme.default.js.map +1 -0
  261. package/dist/collection/themeManager/theme.material.js +7 -3
  262. package/dist/collection/themeManager/theme.material.js.map +1 -0
  263. package/dist/collection/themeManager/theme.service.js +53 -0
  264. package/dist/collection/themeManager/theme.service.js.map +1 -0
  265. package/dist/collection/types/dimension.js +2 -0
  266. package/dist/collection/types/dimension.js.map +1 -0
  267. package/dist/collection/types/interfaces.js +2 -0
  268. package/dist/collection/types/interfaces.js.map +1 -0
  269. package/dist/collection/types/plugin.js +2 -0
  270. package/dist/collection/types/plugin.js.map +1 -0
  271. package/dist/collection/types/plugin.types.js +2 -0
  272. package/dist/collection/types/plugin.types.js.map +1 -0
  273. package/dist/collection/types/selection.js +2 -0
  274. package/dist/collection/types/selection.js.map +1 -0
  275. package/dist/collection/types/theme.js +2 -0
  276. package/dist/collection/types/theme.js.map +1 -0
  277. package/dist/collection/types/viewport.interfaces.js +2 -0
  278. package/dist/collection/types/viewport.interfaces.js.map +1 -0
  279. package/dist/collection/utils/browser.js +7 -0
  280. package/dist/collection/utils/browser.js.map +1 -0
  281. package/dist/collection/utils/closest.polifill.js +22 -0
  282. package/dist/collection/utils/closest.polifill.js.map +1 -0
  283. package/dist/collection/utils/consts.js +8 -0
  284. package/dist/collection/utils/consts.js.map +1 -0
  285. package/dist/collection/utils/events.js +29 -0
  286. package/dist/collection/utils/events.js.map +1 -0
  287. package/dist/collection/utils/header.utils.js +24 -0
  288. package/dist/collection/utils/header.utils.js.map +1 -0
  289. package/dist/collection/utils/index.js +125 -0
  290. package/dist/collection/utils/index.js.map +1 -0
  291. package/dist/collection/utils/key.codes.js +76 -0
  292. package/dist/collection/utils/key.codes.js.map +1 -0
  293. package/dist/collection/utils/key.utils.js +84 -0
  294. package/dist/collection/utils/key.utils.js.map +1 -0
  295. package/dist/collection/utils/mobile.js +7 -0
  296. package/dist/collection/utils/mobile.js.map +1 -0
  297. package/dist/collection/utils/platform.js +5 -1
  298. package/dist/collection/utils/platform.js.map +1 -0
  299. package/dist/collection/utils/resize-observer.polifill.js +10 -0
  300. package/dist/collection/utils/resize-observer.polifill.js.map +1 -0
  301. package/dist/collection/utils/row-header-utils.js +9 -0
  302. package/dist/collection/utils/row-header-utils.js.map +1 -0
  303. package/dist/collection/utils/store.utils.js +7 -3
  304. package/dist/collection/utils/store.utils.js.map +1 -0
  305. package/dist/esm/app-globals-ef1fca59.js +12 -0
  306. package/dist/esm/app-globals-ef1fca59.js.map +1 -0
  307. package/dist/esm/column.service-21a3af74.js +520 -0
  308. package/dist/esm/column.service-21a3af74.js.map +1 -0
  309. package/dist/esm/debounce-7781346d.js +224 -0
  310. package/dist/esm/debounce-7781346d.js.map +1 -0
  311. package/dist/esm/dimension.helpers-a3065cb1.js +4185 -0
  312. package/dist/esm/dimension.helpers-a3065cb1.js.map +1 -0
  313. package/dist/esm/dispatcher-8ea9187d.js +30 -0
  314. package/dist/esm/dispatcher-8ea9187d.js.map +1 -0
  315. package/dist/esm/events-3dd8ee7c.js +228 -0
  316. package/dist/esm/events-3dd8ee7c.js.map +1 -0
  317. package/dist/esm/filter.button-46ce4f80.js +38 -0
  318. package/dist/esm/filter.button-46ce4f80.js.map +1 -0
  319. package/dist/esm/header-cell-renderer-1ca84d5f.js +301 -0
  320. package/dist/esm/header-cell-renderer-1ca84d5f.js.map +1 -0
  321. package/dist/esm/index-21436631.js +1837 -0
  322. package/dist/esm/index-21436631.js.map +1 -0
  323. package/dist/esm/index-98fd0168.js +79 -0
  324. package/dist/esm/index-98fd0168.js.map +1 -0
  325. package/dist/esm/index.js +11 -0
  326. package/dist/esm/index.js.map +1 -0
  327. package/dist/esm/key.utils-4586a3d6.js +120 -0
  328. package/dist/esm/key.utils-4586a3d6.js.map +1 -0
  329. package/dist/esm/loader.js +11 -26
  330. package/dist/esm/loader.js.map +1 -0
  331. package/dist/esm/{resize-observer-56b7b34f.js → resize-observer-83c9e167.js} +30 -14
  332. package/dist/esm/resize-observer-83c9e167.js.map +1 -0
  333. package/dist/esm/revo-grid.entry.js +3988 -0
  334. package/dist/esm/revo-grid.entry.js.map +1 -0
  335. package/dist/esm/revo-grid.js +19 -65
  336. package/dist/esm/revo-grid.js.map +1 -0
  337. package/dist/esm/revogr-attribution_6.entry.js +1261 -0
  338. package/dist/esm/revogr-attribution_6.entry.js.map +1 -0
  339. package/dist/esm/revogr-clipboard_3.entry.js +502 -0
  340. package/dist/esm/revogr-clipboard_3.entry.js.map +1 -0
  341. package/dist/esm/revogr-data_4.entry.js +951 -0
  342. package/dist/esm/revogr-data_4.entry.js.map +1 -0
  343. package/dist/esm/revogr-filter-panel.entry.js +268 -115
  344. package/dist/esm/revogr-filter-panel.entry.js.map +1 -0
  345. package/dist/esm/selection.store-2577ddf9.js +391 -0
  346. package/dist/esm/selection.store-2577ddf9.js.map +1 -0
  347. package/dist/esm/storeTypes-f2647985.js +101 -0
  348. package/dist/esm/storeTypes-f2647985.js.map +1 -0
  349. package/dist/esm/throttle-cfd527d6.js +235 -0
  350. package/dist/esm/throttle-cfd527d6.js.map +1 -0
  351. package/dist/esm/toNumber-8de324a7.js +331 -0
  352. package/dist/esm/toNumber-8de324a7.js.map +1 -0
  353. package/dist/esm/viewport.helpers-6591d423.js +251 -0
  354. package/dist/esm/viewport.helpers-6591d423.js.map +1 -0
  355. package/dist/index.js +1 -1
  356. package/dist/revo-grid/app-globals-ef1fca59.js +5 -0
  357. package/dist/revo-grid/app-globals-ef1fca59.js.map +1 -0
  358. package/dist/revo-grid/column.service-21a3af74.js +5 -0
  359. package/dist/revo-grid/column.service-21a3af74.js.map +1 -0
  360. package/dist/revo-grid/debounce-7781346d.js +5 -0
  361. package/dist/revo-grid/debounce-7781346d.js.map +1 -0
  362. package/dist/revo-grid/dimension.helpers-a3065cb1.js +5 -0
  363. package/dist/revo-grid/dimension.helpers-a3065cb1.js.map +1 -0
  364. package/dist/revo-grid/dispatcher-8ea9187d.js +5 -0
  365. package/dist/revo-grid/dispatcher-8ea9187d.js.map +1 -0
  366. package/dist/revo-grid/events-3dd8ee7c.js +5 -0
  367. package/dist/revo-grid/events-3dd8ee7c.js.map +1 -0
  368. package/dist/revo-grid/filter.button-46ce4f80.js +5 -0
  369. package/dist/revo-grid/filter.button-46ce4f80.js.map +1 -0
  370. package/dist/revo-grid/header-cell-renderer-1ca84d5f.js +5 -0
  371. package/dist/revo-grid/header-cell-renderer-1ca84d5f.js.map +1 -0
  372. package/dist/revo-grid/index-21436631.js +6 -0
  373. package/dist/revo-grid/index-21436631.js.map +1 -0
  374. package/dist/revo-grid/index-98fd0168.js +5 -0
  375. package/dist/revo-grid/index-98fd0168.js.map +1 -0
  376. package/dist/revo-grid/index.esm.js +5 -0
  377. package/dist/revo-grid/index.esm.js.map +1 -0
  378. package/dist/revo-grid/key.utils-4586a3d6.js +5 -0
  379. package/dist/revo-grid/key.utils-4586a3d6.js.map +1 -0
  380. package/dist/revo-grid/resize-observer-83c9e167.js +5 -0
  381. package/dist/revo-grid/resize-observer-83c9e167.js.map +1 -0
  382. package/dist/revo-grid/revo-grid.entry.js +5 -0
  383. package/dist/revo-grid/revo-grid.entry.js.map +1 -0
  384. package/dist/revo-grid/revo-grid.esm.js +5 -1
  385. package/dist/revo-grid/revo-grid.esm.js.map +1 -0
  386. package/dist/revo-grid/revogr-attribution_6.entry.js +5 -0
  387. package/dist/revo-grid/revogr-attribution_6.entry.js.map +1 -0
  388. package/dist/revo-grid/revogr-clipboard_3.entry.js +5 -0
  389. package/dist/revo-grid/revogr-clipboard_3.entry.js.map +1 -0
  390. package/dist/revo-grid/revogr-data_4.entry.js +5 -0
  391. package/dist/revo-grid/revogr-data_4.entry.js.map +1 -0
  392. package/dist/revo-grid/revogr-filter-panel.entry.js +5 -1
  393. package/dist/revo-grid/revogr-filter-panel.entry.js.map +1 -0
  394. package/dist/revo-grid/selection.store-2577ddf9.js +5 -0
  395. package/dist/revo-grid/selection.store-2577ddf9.js.map +1 -0
  396. package/dist/revo-grid/storeTypes-f2647985.js +5 -0
  397. package/dist/revo-grid/storeTypes-f2647985.js.map +1 -0
  398. package/dist/revo-grid/throttle-cfd527d6.js +5 -0
  399. package/dist/revo-grid/throttle-cfd527d6.js.map +1 -0
  400. package/dist/revo-grid/toNumber-8de324a7.js +5 -0
  401. package/dist/revo-grid/toNumber-8de324a7.js.map +1 -0
  402. package/dist/revo-grid/viewport.helpers-6591d423.js +5 -0
  403. package/dist/revo-grid/viewport.helpers-6591d423.js.map +1 -0
  404. package/dist/types/components/attribution/revogr-attribution.d.ts +12 -0
  405. package/dist/types/components/clipboard/revogr-clipboard.d.ts +78 -10
  406. package/dist/types/components/data/cell-renderer.d.ts +14 -0
  407. package/dist/types/components/data/column.service.d.ts +60 -0
  408. package/dist/types/components/data/revogr-data.d.ts +101 -27
  409. package/dist/types/components/data/row-highlight.plugin.d.ts +10 -0
  410. package/dist/types/components/data/{rowRenderer.d.ts → row-renderer.d.ts} +6 -5
  411. package/dist/types/components/editors/revogr-edit.d.ts +63 -0
  412. package/dist/types/components/editors/text-editor.d.ts +46 -0
  413. package/dist/types/components/header/header-cell-renderer.d.ts +11 -0
  414. package/dist/types/components/header/header-renderer.d.ts +17 -0
  415. package/dist/types/components/header/revogr-header.d.ts +70 -22
  416. package/dist/types/components/order/order-renderer.d.ts +29 -0
  417. package/dist/types/components/order/order-row.service.d.ts +28 -0
  418. package/dist/types/components/order/revogr-order-editor.d.ts +43 -41
  419. package/dist/types/components/overlay/autofill.service.d.ts +69 -54
  420. package/dist/types/components/overlay/keyboard.service.d.ts +24 -23
  421. package/dist/types/components/overlay/revogr-overlay-selection.d.ts +216 -75
  422. package/dist/types/components/overlay/selection.utils.d.ts +24 -27
  423. package/dist/types/components/revoGrid/grid.helpers.d.ts +16 -11
  424. package/dist/types/components/revoGrid/revo-grid.d.ts +555 -403
  425. package/dist/types/components/revoGrid/viewport.helpers.d.ts +4 -3
  426. package/dist/types/components/revoGrid/viewport.resize.service.d.ts +7 -7
  427. package/dist/types/components/revoGrid/viewport.scrolling.service.d.ts +20 -21
  428. package/dist/types/components/revoGrid/viewport.service.d.ts +54 -56
  429. package/dist/types/components/rowHeaders/revogr-row-headers.d.ts +45 -12
  430. package/dist/types/components/rowHeaders/row-header-render.d.ts +5 -5
  431. package/dist/types/components/scroll/revogr-viewport-scroll.d.ts +115 -76
  432. package/dist/types/components/scrollable/autohide-scroll.plugin.d.ts +22 -0
  433. package/dist/types/components/scrollable/revogr-scroll-virtual.d.ts +39 -22
  434. package/dist/types/components/selectionFocus/revogr-focus.d.ts +61 -9
  435. package/dist/types/components/selectionTempRange/revogr-temp-range.d.ts +26 -11
  436. package/dist/types/components/vnode/vnode-converter.d.ts +19 -0
  437. package/dist/types/components/vnode/vnode.utils.d.ts +8 -0
  438. package/dist/types/components.d.ts +1595 -274
  439. package/dist/types/index.d.ts +14 -0
  440. package/dist/types/plugins/base.plugin.d.ts +49 -0
  441. package/dist/types/plugins/column.auto-size.plugin.d.ts +47 -0
  442. package/dist/types/plugins/column.stretch.plugin.d.ts +22 -0
  443. package/dist/types/plugins/dispatcher.d.ts +16 -0
  444. package/dist/types/plugins/export/csv.d.ts +6 -6
  445. package/dist/types/plugins/export/export.plugin.d.ts +18 -18
  446. package/dist/types/plugins/export/types.d.ts +15 -15
  447. package/dist/types/plugins/filter/filter.button.d.ts +7 -3
  448. package/dist/types/plugins/filter/filter.plugin.d.ts +61 -43
  449. package/dist/types/plugins/filter/filter.pop.d.ts +60 -35
  450. package/dist/types/plugins/filter/filter.service.d.ts +15 -15
  451. package/dist/types/plugins/filter/filter.types.d.ts +7 -7
  452. package/dist/types/plugins/groupingColumn/columnGroupsRenderer.d.ts +16 -13
  453. package/dist/types/plugins/groupingColumn/grouping.col.plugin.d.ts +10 -6
  454. package/dist/types/plugins/groupingColumn/headerGroupRenderer.d.ts +12 -10
  455. package/dist/types/plugins/groupingRow/grouping.const.d.ts +8 -7
  456. package/dist/types/plugins/groupingRow/grouping.row.expand.service.d.ts +6 -6
  457. package/dist/types/plugins/groupingRow/grouping.row.plugin.d.ts +32 -37
  458. package/dist/types/plugins/groupingRow/grouping.row.renderer.d.ts +7 -5
  459. package/dist/types/plugins/groupingRow/grouping.row.types.d.ts +23 -15
  460. package/dist/types/plugins/groupingRow/grouping.service.d.ts +18 -16
  461. package/dist/types/plugins/groupingRow/grouping.trimmed.service.d.ts +1 -1
  462. package/dist/types/plugins/moveColumn/column.drag.plugin.d.ts +56 -0
  463. package/dist/types/plugins/moveColumn/order-column.handler.d.ts +16 -0
  464. package/dist/types/plugins/sorting/sorting.plugin.d.ts +40 -27
  465. package/dist/types/plugins/sorting/sorting.sign.d.ts +3 -3
  466. package/dist/types/services/cell.helpers.d.ts +2 -2
  467. package/dist/types/services/column.data.provider.d.ts +33 -35
  468. package/dist/types/services/data.provider.d.ts +27 -21
  469. package/dist/types/services/dimension.provider.d.ts +52 -34
  470. package/dist/types/services/local.scroll.service.d.ts +37 -0
  471. package/dist/types/services/local.scroll.timer.d.ts +26 -0
  472. package/dist/types/services/resizable.directive.d.ts +52 -51
  473. package/dist/types/services/resizable.element.d.ts +4 -0
  474. package/dist/types/services/selection.store.connector.d.ts +54 -36
  475. package/dist/types/services/viewport.provider.d.ts +6 -8
  476. package/dist/types/stencil-public-runtime.d.ts +331 -217
  477. package/dist/types/store/dataSource/data.proxy.d.ts +3 -3
  478. package/dist/types/store/dataSource/data.store.d.ts +45 -46
  479. package/dist/types/store/dataSource/index.d.ts +3 -0
  480. package/dist/types/store/dataSource/trimmed.plugin.d.ts +10 -0
  481. package/dist/types/store/dimension/dimension.helpers.d.ts +24 -9
  482. package/dist/types/store/dimension/dimension.store.d.ts +29 -11
  483. package/dist/types/store/dimension/index.d.ts +2 -0
  484. package/dist/types/store/selection/index.d.ts +3 -0
  485. package/dist/types/store/selection/selection.helpers.d.ts +1 -3
  486. package/dist/types/store/selection/selection.store.d.ts +19 -17
  487. package/dist/types/store/selection/selection.store.service.d.ts +12 -13
  488. package/dist/types/store/storeTypes.d.ts +4 -4
  489. package/dist/types/store/viewport/index.d.ts +2 -0
  490. package/dist/types/store/viewport/viewport.helpers.d.ts +54 -0
  491. package/dist/types/store/viewport/viewport.store.d.ts +36 -0
  492. package/dist/types/themeManager/theme.compact.d.ts +3 -3
  493. package/dist/types/themeManager/theme.default.d.ts +3 -3
  494. package/dist/types/themeManager/theme.material.d.ts +3 -3
  495. package/dist/types/themeManager/theme.service.d.ts +13 -0
  496. package/dist/types/types/dimension.d.ts +8 -0
  497. package/dist/types/types/interfaces.d.ts +243 -0
  498. package/dist/types/types/plugin.d.ts +9 -0
  499. package/dist/types/types/plugin.types.d.ts +12 -0
  500. package/dist/types/types/selection.d.ts +115 -0
  501. package/dist/types/types/theme.d.ts +7 -0
  502. package/dist/types/types/viewport.interfaces.d.ts +51 -0
  503. package/dist/types/utils/browser.d.ts +1 -0
  504. package/dist/types/utils/consts.d.ts +5 -1
  505. package/dist/types/utils/events.d.ts +2 -0
  506. package/dist/types/utils/{utils.d.ts → index.d.ts} +17 -1
  507. package/dist/types/utils/key.codes.d.ts +70 -0
  508. package/dist/types/utils/{keyCodes.utils.d.ts → key.utils.d.ts} +5 -1
  509. package/dist/types/utils/mobile.d.ts +1 -0
  510. package/dist/types/utils/platform.d.ts +1 -1
  511. package/dist/types/utils/row-header-utils.d.ts +2 -0
  512. package/dist/types/utils/store.utils.d.ts +2 -2
  513. package/hydrate/index.d.ts +218 -0
  514. package/hydrate/index.js +32381 -0
  515. package/hydrate/package.json +6 -0
  516. package/loader/cdn.js +4 -3
  517. package/loader/index.cjs.js +4 -3
  518. package/loader/index.d.ts +10 -2
  519. package/loader/index.es2017.js +4 -3
  520. package/loader/index.js +4 -3
  521. package/package.json +96 -52
  522. package/readme.md +135 -98
  523. package/standalone/_baseIteratee.js +1237 -0
  524. package/standalone/_baseIteratee.js.map +1 -0
  525. package/standalone/_stringToPath.js +1389 -0
  526. package/standalone/_stringToPath.js.map +1 -0
  527. package/standalone/column.service.js +889 -0
  528. package/standalone/column.service.js.map +1 -0
  529. package/standalone/consts.js +30 -0
  530. package/standalone/consts.js.map +1 -0
  531. package/standalone/data.store.js +705 -0
  532. package/standalone/data.store.js.map +1 -0
  533. package/standalone/debounce.js +225 -0
  534. package/standalone/debounce.js.map +1 -0
  535. package/standalone/dimension.helpers.js +355 -0
  536. package/standalone/dimension.helpers.js.map +1 -0
  537. package/standalone/each.js +200 -0
  538. package/standalone/each.js.map +1 -0
  539. package/standalone/filter.button.js +38 -0
  540. package/standalone/filter.button.js.map +1 -0
  541. package/standalone/identity.js +349 -0
  542. package/standalone/identity.js.map +1 -0
  543. package/standalone/index.d.ts +66 -0
  544. package/standalone/index.js +42 -0
  545. package/standalone/index.js.map +1 -0
  546. package/standalone/index2.js +55 -0
  547. package/standalone/index2.js.map +1 -0
  548. package/standalone/isObjectLike.js +195 -0
  549. package/standalone/isObjectLike.js.map +1 -0
  550. package/standalone/local.scroll.timer.js +163 -0
  551. package/standalone/local.scroll.timer.js.map +1 -0
  552. package/{custom-element → standalone}/resize-observer.js +30 -14
  553. package/standalone/resize-observer.js.map +1 -0
  554. package/standalone/revo-grid.d.ts +11 -0
  555. package/standalone/revo-grid.js +4252 -0
  556. package/standalone/revo-grid.js.map +1 -0
  557. package/standalone/revogr-attribution.d.ts +11 -0
  558. package/standalone/revogr-attribution.js +11 -0
  559. package/standalone/revogr-attribution.js.map +1 -0
  560. package/standalone/revogr-attribution2.js +31 -0
  561. package/standalone/revogr-attribution2.js.map +1 -0
  562. package/standalone/revogr-clipboard.d.ts +11 -0
  563. package/standalone/revogr-clipboard.js +11 -0
  564. package/standalone/revogr-clipboard.js.map +1 -0
  565. package/standalone/revogr-clipboard2.js +159 -0
  566. package/standalone/revogr-clipboard2.js.map +1 -0
  567. package/standalone/revogr-data.d.ts +11 -0
  568. package/standalone/revogr-data.js +11 -0
  569. package/standalone/revogr-data.js.map +1 -0
  570. package/standalone/revogr-data2.js +368 -0
  571. package/standalone/revogr-data2.js.map +1 -0
  572. package/standalone/revogr-edit.d.ts +11 -0
  573. package/standalone/revogr-edit.js +11 -0
  574. package/standalone/revogr-edit.js.map +1 -0
  575. package/standalone/revogr-edit2.js +335 -0
  576. package/standalone/revogr-edit2.js.map +1 -0
  577. package/standalone/revogr-filter-panel.d.ts +11 -0
  578. package/standalone/revogr-filter-panel.js +310 -0
  579. package/standalone/revogr-filter-panel.js.map +1 -0
  580. package/standalone/revogr-focus.d.ts +11 -0
  581. package/standalone/revogr-focus.js +11 -0
  582. package/standalone/revogr-focus.js.map +1 -0
  583. package/standalone/revogr-focus2.js +106 -0
  584. package/standalone/revogr-focus2.js.map +1 -0
  585. package/standalone/revogr-header.d.ts +11 -0
  586. package/standalone/revogr-header.js +11 -0
  587. package/standalone/revogr-header.js.map +1 -0
  588. package/standalone/revogr-header2.js +667 -0
  589. package/standalone/revogr-header2.js.map +1 -0
  590. package/standalone/revogr-order-editor.d.ts +11 -0
  591. package/standalone/revogr-order-editor.js +11 -0
  592. package/standalone/revogr-order-editor.js.map +1 -0
  593. package/standalone/revogr-order-editor2.js +199 -0
  594. package/standalone/revogr-order-editor2.js.map +1 -0
  595. package/standalone/revogr-overlay-selection.d.ts +11 -0
  596. package/standalone/revogr-overlay-selection.js +11 -0
  597. package/standalone/revogr-overlay-selection.js.map +1 -0
  598. package/standalone/revogr-overlay-selection2.js +876 -0
  599. package/standalone/revogr-overlay-selection2.js.map +1 -0
  600. package/standalone/revogr-row-headers.d.ts +11 -0
  601. package/standalone/revogr-row-headers.js +11 -0
  602. package/standalone/revogr-row-headers.js.map +1 -0
  603. package/standalone/revogr-row-headers2.js +555 -0
  604. package/standalone/revogr-row-headers2.js.map +1 -0
  605. package/standalone/revogr-scroll-virtual.d.ts +11 -0
  606. package/standalone/revogr-scroll-virtual.js +11 -0
  607. package/standalone/revogr-scroll-virtual.js.map +1 -0
  608. package/standalone/revogr-scroll-virtual2.js +187 -0
  609. package/standalone/revogr-scroll-virtual2.js.map +1 -0
  610. package/standalone/revogr-temp-range.d.ts +11 -0
  611. package/standalone/revogr-temp-range.js +11 -0
  612. package/standalone/revogr-temp-range.js.map +1 -0
  613. package/standalone/revogr-temp-range2.js +90 -0
  614. package/standalone/revogr-temp-range2.js.map +1 -0
  615. package/standalone/revogr-viewport-scroll.d.ts +11 -0
  616. package/standalone/revogr-viewport-scroll.js +11 -0
  617. package/standalone/revogr-viewport-scroll.js.map +1 -0
  618. package/standalone/revogr-viewport-scroll2.js +336 -0
  619. package/standalone/revogr-viewport-scroll2.js.map +1 -0
  620. package/standalone/selection.utils.js +108 -0
  621. package/standalone/selection.utils.js.map +1 -0
  622. package/standalone/throttle.js +79 -0
  623. package/standalone/throttle.js.map +1 -0
  624. package/standalone/toNumber.js +144 -0
  625. package/standalone/toNumber.js.map +1 -0
  626. package/standalone/vnode-converter.js +45 -0
  627. package/standalone/vnode-converter.js.map +1 -0
  628. package/standalone/vnode-html.d.ts +11 -0
  629. package/standalone/vnode-html.js +11 -0
  630. package/standalone/vnode-html.js.map +1 -0
  631. package/custom-element/index.d.ts +0 -117
  632. package/custom-element/index.js +0 -28858
  633. package/dist/cjs/css-shim-e33df79c.js +0 -6
  634. package/dist/cjs/dom-c8b6d1a7.js +0 -75
  635. package/dist/cjs/filter.button-2396a488.js +0 -27
  636. package/dist/cjs/index-d3f67f2e.js +0 -1729
  637. package/dist/cjs/revo-grid_11.cjs.entry.js +0 -28622
  638. package/dist/cjs/revogr-clipboard.cjs.entry.js +0 -53
  639. package/dist/collection/components/button/button.js +0 -4
  640. package/dist/collection/components/data/cellRenderer.js +0 -19
  641. package/dist/collection/components/data/columnService.js +0 -243
  642. package/dist/collection/components/data/rowRenderer.js +0 -6
  643. package/dist/collection/components/header/headerCellRenderer.js +0 -19
  644. package/dist/collection/components/header/headerRenderer.js +0 -45
  645. package/dist/collection/components/order/orderRenderer.js +0 -50
  646. package/dist/collection/components/order/rowOrderService.js +0 -68
  647. package/dist/collection/components/overlay/clipboard.service.js +0 -39
  648. package/dist/collection/components/overlay/editors/edit.utils.js +0 -5
  649. package/dist/collection/components/overlay/editors/text.js +0 -35
  650. package/dist/collection/components/overlay/revogr-edit.js +0 -163
  651. package/dist/collection/components/revoGrid/viewport.interfaces.js +0 -1
  652. package/dist/collection/components/revoGrid/viewport.js +0 -18
  653. package/dist/collection/components/revoGrid/viewport.section.js +0 -28
  654. package/dist/collection/components/rowHeaders/row-header-utils.js +0 -4
  655. package/dist/collection/plugins/autoSizeColumn.d.ts +0 -54
  656. package/dist/collection/plugins/autoSizeColumn.js +0 -230
  657. package/dist/collection/plugins/basePlugin.d.ts +0 -37
  658. package/dist/collection/plugins/basePlugin.js +0 -53
  659. package/dist/collection/plugins/export/csv.d.ts +0 -9
  660. package/dist/collection/plugins/export/export.plugin.d.ts +0 -24
  661. package/dist/collection/plugins/export/types.d.ts +0 -23
  662. package/dist/collection/plugins/filter/conditions/equal.d.ts +0 -4
  663. package/dist/collection/plugins/filter/conditions/number/greaterThan.d.ts +0 -3
  664. package/dist/collection/plugins/filter/conditions/number/greaterThanOrEqual.d.ts +0 -3
  665. package/dist/collection/plugins/filter/conditions/number/lessThan.d.ts +0 -3
  666. package/dist/collection/plugins/filter/conditions/number/lessThanOrEqual.d.ts +0 -3
  667. package/dist/collection/plugins/filter/conditions/set.d.ts +0 -4
  668. package/dist/collection/plugins/filter/conditions/string/beginswith.d.ts +0 -3
  669. package/dist/collection/plugins/filter/conditions/string/contains.d.ts +0 -4
  670. package/dist/collection/plugins/filter/filter.button.d.ts +0 -10
  671. package/dist/collection/plugins/filter/filter.plugin.d.ts +0 -59
  672. package/dist/collection/plugins/filter/filter.pop.d.ts +0 -42
  673. package/dist/collection/plugins/filter/filter.service.d.ts +0 -20
  674. package/dist/collection/plugins/filter/filter.types.d.ts +0 -8
  675. package/dist/collection/plugins/groupingColumn/columnGroupsRenderer.d.ts +0 -16
  676. package/dist/collection/plugins/groupingColumn/grouping.col.plugin.d.ts +0 -13
  677. package/dist/collection/plugins/groupingColumn/headerGroupRenderer.d.ts +0 -14
  678. package/dist/collection/plugins/groupingRow/grouping.const.d.ts +0 -9
  679. package/dist/collection/plugins/groupingRow/grouping.row.expand.service.d.ts +0 -15
  680. package/dist/collection/plugins/groupingRow/grouping.row.plugin.d.ts +0 -40
  681. package/dist/collection/plugins/groupingRow/grouping.row.renderer.d.ts +0 -9
  682. package/dist/collection/plugins/groupingRow/grouping.row.types.d.ts +0 -19
  683. package/dist/collection/plugins/groupingRow/grouping.service.d.ts +0 -25
  684. package/dist/collection/plugins/groupingRow/grouping.trimmed.service.d.ts +0 -10
  685. package/dist/collection/plugins/sorting/sorting.plugin.d.ts +0 -32
  686. package/dist/collection/plugins/sorting/sorting.sign.d.ts +0 -8
  687. package/dist/collection/plugins/stretchPlugin.d.ts +0 -29
  688. package/dist/collection/plugins/stretchPlugin.js +0 -90
  689. package/dist/collection/plugins/trimmed/trimmed.plugin.d.ts +0 -10
  690. package/dist/collection/plugins/trimmed/trimmed.plugin.js +0 -32
  691. package/dist/collection/services/localScrollService.js +0 -80
  692. package/dist/collection/store/viewPort/viewport.helpers.js +0 -180
  693. package/dist/collection/store/viewPort/viewport.store.js +0 -121
  694. package/dist/collection/themeManager/themeService.js +0 -43
  695. package/dist/collection/utils/closestPolifill.js +0 -18
  696. package/dist/collection/utils/generateAlphabetHeader.js +0 -20
  697. package/dist/collection/utils/keyCodes.js +0 -70
  698. package/dist/collection/utils/keyCodes.utils.js +0 -64
  699. package/dist/collection/utils/resizeObserver.js +0 -6
  700. package/dist/collection/utils/utils.js +0 -104
  701. package/dist/esm/css-shim-8d75038b.js +0 -4
  702. package/dist/esm/dom-1b195079.js +0 -73
  703. package/dist/esm/filter.button-53ebca66.js +0 -23
  704. package/dist/esm/index-42c84e7c.js +0 -1694
  705. package/dist/esm/polyfills/core-js.js +0 -11
  706. package/dist/esm/polyfills/css-shim.js +0 -1
  707. package/dist/esm/polyfills/dom.js +0 -79
  708. package/dist/esm/polyfills/es5-html-element.js +0 -1
  709. package/dist/esm/polyfills/index.js +0 -34
  710. package/dist/esm/polyfills/system.js +0 -6
  711. package/dist/esm/revo-grid_11.entry.js +0 -28608
  712. package/dist/esm/revogr-clipboard.entry.js +0 -49
  713. package/dist/esm-es5/css-shim-8d75038b.js +0 -1
  714. package/dist/esm-es5/dom-1b195079.js +0 -21
  715. package/dist/esm-es5/filter.button-53ebca66.js +0 -1
  716. package/dist/esm-es5/index-42c84e7c.js +0 -1
  717. package/dist/esm-es5/loader.js +0 -1
  718. package/dist/esm-es5/resize-observer-56b7b34f.js +0 -1
  719. package/dist/esm-es5/revo-grid.js +0 -1
  720. package/dist/esm-es5/revo-grid_11.entry.js +0 -1
  721. package/dist/esm-es5/revogr-clipboard.entry.js +0 -1
  722. package/dist/esm-es5/revogr-filter-panel.entry.js +0 -1
  723. package/dist/revo-grid/css-shim-88bfb262.system.js +0 -1
  724. package/dist/revo-grid/css-shim-8d75038b.js +0 -1
  725. package/dist/revo-grid/dom-1b195079.js +0 -19
  726. package/dist/revo-grid/dom-ee2dd1b3.system.js +0 -21
  727. package/dist/revo-grid/filter.button-1509c206.js +0 -1
  728. package/dist/revo-grid/filter.button-4bd87101.system.js +0 -1
  729. package/dist/revo-grid/index-a15e7527.system.js +0 -1
  730. package/dist/revo-grid/index-a7f99799.js +0 -1
  731. package/dist/revo-grid/index.system.js +0 -1
  732. package/dist/revo-grid/plugins/autoSizeColumn.d.ts +0 -54
  733. package/dist/revo-grid/plugins/basePlugin.d.ts +0 -37
  734. package/dist/revo-grid/plugins/export/csv.d.ts +0 -9
  735. package/dist/revo-grid/plugins/export/export.plugin.d.ts +0 -24
  736. package/dist/revo-grid/plugins/export/types.d.ts +0 -23
  737. package/dist/revo-grid/plugins/filter/conditions/equal.d.ts +0 -4
  738. package/dist/revo-grid/plugins/filter/conditions/number/greaterThan.d.ts +0 -3
  739. package/dist/revo-grid/plugins/filter/conditions/number/greaterThanOrEqual.d.ts +0 -3
  740. package/dist/revo-grid/plugins/filter/conditions/number/lessThan.d.ts +0 -3
  741. package/dist/revo-grid/plugins/filter/conditions/number/lessThanOrEqual.d.ts +0 -3
  742. package/dist/revo-grid/plugins/filter/conditions/set.d.ts +0 -4
  743. package/dist/revo-grid/plugins/filter/conditions/string/beginswith.d.ts +0 -3
  744. package/dist/revo-grid/plugins/filter/conditions/string/contains.d.ts +0 -4
  745. package/dist/revo-grid/plugins/filter/filter.button.d.ts +0 -10
  746. package/dist/revo-grid/plugins/filter/filter.plugin.d.ts +0 -59
  747. package/dist/revo-grid/plugins/filter/filter.pop.d.ts +0 -42
  748. package/dist/revo-grid/plugins/filter/filter.service.d.ts +0 -20
  749. package/dist/revo-grid/plugins/filter/filter.types.d.ts +0 -8
  750. package/dist/revo-grid/plugins/groupingColumn/columnGroupsRenderer.d.ts +0 -16
  751. package/dist/revo-grid/plugins/groupingColumn/grouping.col.plugin.d.ts +0 -13
  752. package/dist/revo-grid/plugins/groupingColumn/headerGroupRenderer.d.ts +0 -14
  753. package/dist/revo-grid/plugins/groupingRow/grouping.const.d.ts +0 -9
  754. package/dist/revo-grid/plugins/groupingRow/grouping.row.expand.service.d.ts +0 -15
  755. package/dist/revo-grid/plugins/groupingRow/grouping.row.plugin.d.ts +0 -40
  756. package/dist/revo-grid/plugins/groupingRow/grouping.row.renderer.d.ts +0 -9
  757. package/dist/revo-grid/plugins/groupingRow/grouping.row.types.d.ts +0 -19
  758. package/dist/revo-grid/plugins/groupingRow/grouping.service.d.ts +0 -25
  759. package/dist/revo-grid/plugins/groupingRow/grouping.trimmed.service.d.ts +0 -10
  760. package/dist/revo-grid/plugins/sorting/sorting.plugin.d.ts +0 -32
  761. package/dist/revo-grid/plugins/sorting/sorting.sign.d.ts +0 -8
  762. package/dist/revo-grid/plugins/stretchPlugin.d.ts +0 -29
  763. package/dist/revo-grid/plugins/trimmed/trimmed.plugin.d.ts +0 -10
  764. package/dist/revo-grid/resize-observer-56b7b34f.js +0 -1
  765. package/dist/revo-grid/resize-observer-7a7b9757.system.js +0 -1
  766. package/dist/revo-grid/revo-grid.js +0 -132
  767. package/dist/revo-grid/revo-grid.system.js +0 -1
  768. package/dist/revo-grid/revo-grid_11.entry.js +0 -1
  769. package/dist/revo-grid/revo-grid_11.system.entry.js +0 -1
  770. package/dist/revo-grid/revogr-clipboard.entry.js +0 -1
  771. package/dist/revo-grid/revogr-clipboard.system.entry.js +0 -1
  772. package/dist/revo-grid/revogr-filter-panel.system.entry.js +0 -1
  773. package/dist/types/components/button/button.d.ts +0 -5
  774. package/dist/types/components/data/cellRenderer.d.ts +0 -8
  775. package/dist/types/components/data/columnService.d.ts +0 -42
  776. package/dist/types/components/header/headerCellRenderer.d.ts +0 -8
  777. package/dist/types/components/header/headerRenderer.d.ts +0 -15
  778. package/dist/types/components/order/orderRenderer.d.ts +0 -28
  779. package/dist/types/components/order/rowOrderService.d.ts +0 -27
  780. package/dist/types/components/overlay/clipboard.service.d.ts +0 -20
  781. package/dist/types/components/overlay/editors/text.d.ts +0 -13
  782. package/dist/types/components/overlay/revogr-edit.d.ts +0 -19
  783. package/dist/types/components/revoGrid/viewport.d.ts +0 -19
  784. package/dist/types/components/revoGrid/viewport.interfaces.d.ts +0 -66
  785. package/dist/types/components/revoGrid/viewport.section.d.ts +0 -24
  786. package/dist/types/components/rowHeaders/row-header-utils.d.ts +0 -2
  787. package/dist/types/interfaces.d.ts +0 -437
  788. package/dist/types/plugins/autoSizeColumn.d.ts +0 -54
  789. package/dist/types/plugins/basePlugin.d.ts +0 -37
  790. package/dist/types/plugins/stretchPlugin.d.ts +0 -29
  791. package/dist/types/plugins/trimmed/trimmed.plugin.d.ts +0 -10
  792. package/dist/types/services/localScrollService.d.ts +0 -28
  793. package/dist/types/store/viewPort/viewport.helpers.d.ts +0 -30
  794. package/dist/types/store/viewPort/viewport.store.d.ts +0 -18
  795. package/dist/types/themeManager/themeService.d.ts +0 -13
  796. package/dist/types/utils/closestPolifill.d.ts +0 -0
  797. package/dist/types/utils/keyCodes.d.ts +0 -68
  798. package/loader/package.json +0 -10
  799. /package/dist/types/components/{overlay/editors → editors}/edit.utils.d.ts +0 -0
  800. /package/dist/{esm-es5/index.js → types/utils/closest.polifill.d.ts} +0 -0
  801. /package/dist/types/utils/{generateAlphabetHeader.d.ts → header.utils.d.ts} +0 -0
  802. /package/dist/types/utils/{resizeObserver.d.ts → resize-observer.polifill.d.ts} +0 -0
@@ -0,0 +1,234 @@
1
+ /*!
2
+ * Built by Revolist OU ❤️
3
+ */
4
+ /**
5
+ * Plugin module for revo-grid grid system
6
+ * Add support for automatic column resize
7
+ */
8
+ import each from "lodash/each";
9
+ import reduce from "lodash/reduce";
10
+ import { BasePlugin } from "./base.plugin";
11
+ import ColumnDataProvider from "../services/column.data.provider";
12
+ import { columnTypes } from "../store/storeTypes";
13
+ import { getSourceItem } from "../store/dataSource/data.store";
14
+ const LETTER_BLOCK_SIZE = 7;
15
+ var ColumnAutoSizeMode;
16
+ (function (ColumnAutoSizeMode) {
17
+ // increases column width on header click according the largest text value
18
+ ColumnAutoSizeMode["headerClickAutosize"] = "headerClickAutoSize";
19
+ // increases column width on data set and text edit, decreases performance
20
+ ColumnAutoSizeMode["autoSizeOnTextOverlap"] = "autoSizeOnTextOverlap";
21
+ // increases and decreases column width based on all items sizes, worst for performance
22
+ ColumnAutoSizeMode["autoSizeAll"] = "autoSizeAll";
23
+ })(ColumnAutoSizeMode || (ColumnAutoSizeMode = {}));
24
+ export default class AutoSizeColumnPlugin extends BasePlugin {
25
+ constructor(revogrid, providers, config) {
26
+ super(revogrid, providers);
27
+ this.providers = providers;
28
+ this.config = config;
29
+ this.autoSizeColumns = null;
30
+ /** for edge case when no columns defined before data */
31
+ this.dataResolve = null;
32
+ this.dataReject = null;
33
+ this.letterBlockSize = (config === null || config === void 0 ? void 0 : config.letterBlockSize) || LETTER_BLOCK_SIZE;
34
+ // create test container to check text width
35
+ if (config === null || config === void 0 ? void 0 : config.preciseSize) {
36
+ this.precsizeCalculationArea = this.initiatePresizeElement();
37
+ revogrid.appendChild(this.precsizeCalculationArea);
38
+ }
39
+ const aftersourceset = ({ detail: { source } }) => {
40
+ this.setSource(source);
41
+ };
42
+ const afteredit = ({ detail }) => {
43
+ this.afteredit(detail);
44
+ };
45
+ const afterEditAll = ({ detail }) => {
46
+ this.afterEditAll(detail);
47
+ };
48
+ const beforecolumnsset = ({ detail: { columns } }) => {
49
+ this.columnSet(columns);
50
+ };
51
+ const headerDblClick = ({ detail }) => {
52
+ const type = ColumnDataProvider.getColumnType(detail.column);
53
+ const size = this.getColumnSize(detail.index, type);
54
+ if (size) {
55
+ this.providers.dimension.setCustomSizes(type, {
56
+ [detail.index]: size,
57
+ }, true);
58
+ }
59
+ };
60
+ this.addEventListener('beforecolumnsset', beforecolumnsset);
61
+ switch (config === null || config === void 0 ? void 0 : config.mode) {
62
+ case ColumnAutoSizeMode.autoSizeOnTextOverlap:
63
+ this.addEventListener('aftersourceset', aftersourceset);
64
+ this.addEventListener('afteredit', afteredit);
65
+ break;
66
+ case ColumnAutoSizeMode.autoSizeAll:
67
+ this.addEventListener('aftersourceset', aftersourceset);
68
+ this.addEventListener('afteredit', afterEditAll);
69
+ break;
70
+ default:
71
+ this.addEventListener('headerdblclick', headerDblClick);
72
+ break;
73
+ }
74
+ }
75
+ async setSource(source) {
76
+ let autoSize = this.autoSizeColumns;
77
+ if (this.dataReject) {
78
+ this.dataReject();
79
+ this.clearPromise();
80
+ }
81
+ /** If data set first and no column provided await until get one */
82
+ if (!autoSize) {
83
+ const request = new Promise((resolve, reject) => {
84
+ this.dataResolve = resolve;
85
+ this.dataReject = reject;
86
+ });
87
+ try {
88
+ autoSize = await request;
89
+ }
90
+ catch (e) {
91
+ return;
92
+ }
93
+ }
94
+ // calculate sizes
95
+ each(autoSize, (_v, type) => {
96
+ const sizes = {};
97
+ each(autoSize[type], rgCol => {
98
+ // calculate size
99
+ rgCol.size = sizes[rgCol.index] = source.reduce((prev, rgRow) => Math.max(prev, this.getLength(rgRow[rgCol.prop])), this.getLength(rgCol.name || ''));
100
+ });
101
+ this.providers.dimension.setCustomSizes(type, sizes, true);
102
+ });
103
+ }
104
+ getLength(len) {
105
+ var _a;
106
+ const padding = 15;
107
+ if (!len) {
108
+ return 0;
109
+ }
110
+ try {
111
+ const str = len.toString();
112
+ /**if exact calculation required proxy with html element, slow operation */
113
+ if ((_a = this.config) === null || _a === void 0 ? void 0 : _a.preciseSize) {
114
+ this.precsizeCalculationArea.innerText = str;
115
+ return this.precsizeCalculationArea.scrollWidth + padding * 2;
116
+ }
117
+ return str.length * this.letterBlockSize + padding * 2;
118
+ }
119
+ catch (e) {
120
+ return 0;
121
+ }
122
+ }
123
+ afteredit(e) {
124
+ let data;
125
+ if (this.isRangeEdit(e)) {
126
+ data = e.data;
127
+ }
128
+ else {
129
+ data = { 0: { [e.prop]: e.val } };
130
+ }
131
+ each(this.autoSizeColumns, (columns, type) => {
132
+ const sizes = {};
133
+ each(columns, rgCol => {
134
+ // calculate size
135
+ const size = reduce(data, (prev, rgRow) => {
136
+ if (typeof rgRow[rgCol.prop] === 'undefined') {
137
+ return prev;
138
+ }
139
+ return Math.max(prev || 0, this.getLength(rgRow[rgCol.prop]));
140
+ }, undefined);
141
+ if (size && rgCol.size < size) {
142
+ rgCol.size = sizes[rgCol.index] = size;
143
+ }
144
+ });
145
+ this.providers.dimension.setCustomSizes(type, sizes, true);
146
+ });
147
+ }
148
+ afterEditAll(e) {
149
+ const props = {};
150
+ if (this.isRangeEdit(e)) {
151
+ each(e.data, r => each(r, (_v, p) => (props[p] = true)));
152
+ }
153
+ else {
154
+ props[e.prop] = true;
155
+ }
156
+ each(this.autoSizeColumns, (columns, type) => {
157
+ const sizes = {};
158
+ each(columns, rgCol => {
159
+ if (props[rgCol.prop]) {
160
+ const size = this.getColumnSize(rgCol.index, type);
161
+ if (size) {
162
+ sizes[rgCol.index] = size;
163
+ }
164
+ }
165
+ });
166
+ this.providers.dimension.setCustomSizes(type, sizes, true);
167
+ });
168
+ }
169
+ getColumnSize(index, type) {
170
+ const rgCol = this.autoSizeColumns[type][index];
171
+ if (!rgCol) {
172
+ return 0;
173
+ }
174
+ return reduce(this.providers.data.stores, (r, s) => {
175
+ const perStore = reduce(s.store.get('items'), (prev, _row, i) => {
176
+ const item = getSourceItem(s.store, i);
177
+ return Math.max(prev || 0, this.getLength(item[rgCol.prop]));
178
+ }, 0);
179
+ return Math.max(r, perStore);
180
+ }, rgCol.size || 0);
181
+ }
182
+ columnSet(columns) {
183
+ var _a;
184
+ for (let t of columnTypes) {
185
+ const type = t;
186
+ const cols = columns[type];
187
+ for (let i in cols) {
188
+ if (cols[i].autoSize || ((_a = this.config) === null || _a === void 0 ? void 0 : _a.allColumns)) {
189
+ if (!this.autoSizeColumns) {
190
+ this.autoSizeColumns = {};
191
+ }
192
+ if (!this.autoSizeColumns[type]) {
193
+ this.autoSizeColumns[type] = {};
194
+ }
195
+ this.autoSizeColumns[type][i] = Object.assign(Object.assign({}, cols[i]), { index: parseInt(i, 10) });
196
+ }
197
+ }
198
+ }
199
+ if (this.dataResolve) {
200
+ this.dataResolve(this.autoSizeColumns);
201
+ this.clearPromise();
202
+ }
203
+ }
204
+ clearPromise() {
205
+ this.dataResolve = null;
206
+ this.dataReject = null;
207
+ }
208
+ isRangeEdit(e) {
209
+ return !!e.data;
210
+ }
211
+ initiatePresizeElement() {
212
+ const styleForFontTest = {
213
+ position: 'absolute',
214
+ fontSize: '14px',
215
+ height: '0',
216
+ width: '0',
217
+ whiteSpace: 'nowrap',
218
+ top: '0',
219
+ overflowX: 'scroll',
220
+ };
221
+ const el = document.createElement('div');
222
+ for (let s in styleForFontTest) {
223
+ el.style[s] = styleForFontTest[s];
224
+ }
225
+ el.classList.add('revo-test-container');
226
+ return el;
227
+ }
228
+ destroy() {
229
+ var _a;
230
+ super.destroy();
231
+ (_a = this.precsizeCalculationArea) === null || _a === void 0 ? void 0 : _a.remove();
232
+ }
233
+ }
234
+ //# sourceMappingURL=column.auto-size.plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column.auto-size.plugin.js","sourceRoot":"","sources":["../../src/plugins/column.auto-size.plugin.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Plugin module for revo-grid grid system\n * Add support for automatic column resize\n */\nimport each from 'lodash/each';\nimport reduce from 'lodash/reduce';\nimport { BasePlugin } from './base.plugin';\nimport ColumnDataProvider, { ColumnCollection } from '../services/column.data.provider';\nimport { columnTypes } from '../store/storeTypes';\nimport { ColumnItems } from '../services/dimension.provider';\nimport { getSourceItem } from '../store/dataSource/data.store';\nimport { DimensionCols, DimensionRows } from '..';\nimport { ColumnRegular, DataType, InitialHeaderClick, ViewSettingSizeProp } from '..';\nimport { BeforeSaveDataDetails, BeforeRangeSaveDataDetails } from '..';\nimport { PluginProviders } from '../';\n\ninterface Column extends ColumnRegular {\n index: number;\n}\n\ntype AutoSizeColumns = Record<DimensionCols, ColumnRecords>;\ntype ColumnRecords = Record<any, Column>;\ntype SourceSetEvent = { type: DimensionRows; source: DataType[] };\ntype EditEvent = BeforeSaveDataDetails | BeforeRangeSaveDataDetails;\ntype Resolve = (cols: Partial<AutoSizeColumns>) => void;\ntype Reject = () => void;\n\nexport type AutoSizeColumnConfig = {\n // ui behavior mode\n mode?: ColumnAutoSizeMode;\n /**\n * autoSize for all columns\n * if allColumnes true all columns treated as autoSize, worse for performance\n * false by default\n */\n allColumns?: boolean;\n /**\n * assumption per characted size\n * by default defined as 8, can be changed in this config\n */\n letterBlockSize?: number;\n /** make size calculation exact\n * by default it based on assumption each character takes some space defined in letterBlockSize */\n preciseSize?: boolean;\n};\n\nconst LETTER_BLOCK_SIZE = 7;\n\nenum ColumnAutoSizeMode {\n // increases column width on header click according the largest text value\n headerClickAutosize = 'headerClickAutoSize',\n // increases column width on data set and text edit, decreases performance\n autoSizeOnTextOverlap = 'autoSizeOnTextOverlap',\n // increases and decreases column width based on all items sizes, worst for performance\n autoSizeAll = 'autoSizeAll',\n}\n\nexport default class AutoSizeColumnPlugin extends BasePlugin {\n private autoSizeColumns: Partial<AutoSizeColumns> | null = null;\n private readonly letterBlockSize: number;\n\n /** for config option when @preciseSize enabled */\n private readonly precsizeCalculationArea: HTMLElement;\n\n /** for edge case when no columns defined before data */\n private dataResolve: Resolve | null = null;\n private dataReject: Reject | null = null;\n\n constructor(revogrid: HTMLRevoGridElement, protected providers: PluginProviders, private config?: AutoSizeColumnConfig) {\n super(revogrid, providers);\n this.letterBlockSize = config?.letterBlockSize || LETTER_BLOCK_SIZE;\n\n // create test container to check text width\n if (config?.preciseSize) {\n this.precsizeCalculationArea = this.initiatePresizeElement();\n revogrid.appendChild(this.precsizeCalculationArea);\n }\n\n const aftersourceset = ({ detail: { source } }: CustomEvent<SourceSetEvent>) => {\n this.setSource(source);\n };\n const afteredit = ({ detail }: CustomEvent<EditEvent>) => {\n this.afteredit(detail);\n };\n const afterEditAll = ({ detail }: CustomEvent<EditEvent>) => {\n this.afterEditAll(detail);\n };\n const beforecolumnsset = ({ detail: { columns } }: CustomEvent<ColumnCollection>) => {\n this.columnSet(columns);\n };\n const headerDblClick = ({ detail }: CustomEvent<InitialHeaderClick>) => {\n const type = ColumnDataProvider.getColumnType(detail.column);\n const size = this.getColumnSize(detail.index, type);\n if (size) {\n this.providers.dimension.setCustomSizes(type, {\n [detail.index]: size,\n }, true);\n }\n };\n this.addEventListener('beforecolumnsset', beforecolumnsset);\n switch (config?.mode) {\n case ColumnAutoSizeMode.autoSizeOnTextOverlap:\n this.addEventListener('aftersourceset', aftersourceset);\n this.addEventListener('afteredit', afteredit);\n break;\n case ColumnAutoSizeMode.autoSizeAll:\n this.addEventListener('aftersourceset', aftersourceset);\n this.addEventListener('afteredit', afterEditAll);\n break;\n default:\n this.addEventListener('headerdblclick', headerDblClick);\n break;\n }\n }\n\n private async setSource(source: DataType[]): Promise<void> {\n let autoSize = this.autoSizeColumns;\n if (this.dataReject) {\n this.dataReject();\n this.clearPromise();\n }\n\n /** If data set first and no column provided await until get one */\n if (!autoSize) {\n const request = new Promise((resolve: Resolve, reject: Reject) => {\n this.dataResolve = resolve;\n this.dataReject = reject;\n });\n try {\n autoSize = await request;\n } catch (e) {\n return;\n }\n }\n\n // calculate sizes\n each(autoSize, (_v, type: DimensionCols) => {\n const sizes: ViewSettingSizeProp = {};\n each(autoSize[type], rgCol => {\n // calculate size\n rgCol.size = sizes[rgCol.index] = source.reduce((prev, rgRow) => Math.max(prev, this.getLength(rgRow[rgCol.prop])), this.getLength(rgCol.name || ''));\n });\n this.providers.dimension.setCustomSizes(type, sizes, true);\n });\n }\n\n private getLength(len?: any): number {\n const padding = 15;\n if (!len) {\n return 0;\n }\n try {\n const str = len.toString();\n\n /**if exact calculation required proxy with html element, slow operation */\n if (this.config?.preciseSize) {\n this.precsizeCalculationArea.innerText = str;\n return this.precsizeCalculationArea.scrollWidth + padding * 2;\n }\n return str.length * this.letterBlockSize + padding * 2;\n } catch (e) {\n return 0;\n }\n }\n\n private afteredit(e: EditEvent) {\n let data: Record<string, DataType>;\n if (this.isRangeEdit(e)) {\n data = e.data;\n } else {\n data = { 0: { [e.prop]: e.val } };\n }\n each(this.autoSizeColumns, (columns, type: DimensionCols) => {\n const sizes: ViewSettingSizeProp = {};\n\n each(columns, rgCol => {\n // calculate size\n const size = reduce(\n data,\n (prev: number | undefined, rgRow) => {\n if (typeof rgRow[rgCol.prop] === 'undefined') {\n return prev;\n }\n return Math.max(prev || 0, this.getLength(rgRow[rgCol.prop]));\n },\n undefined,\n );\n\n if (size && rgCol.size < size) {\n rgCol.size = sizes[rgCol.index] = size;\n }\n });\n\n this.providers.dimension.setCustomSizes(type, sizes, true);\n });\n }\n\n private afterEditAll(e: EditEvent) {\n const props: Record<any, true> = {};\n if (this.isRangeEdit(e)) {\n each(e.data, r => each(r, (_v, p) => (props[p] = true)));\n } else {\n props[e.prop] = true;\n }\n each(this.autoSizeColumns, (columns, type: DimensionCols) => {\n const sizes: ViewSettingSizeProp = {};\n\n each(columns, rgCol => {\n if (props[rgCol.prop]) {\n const size = this.getColumnSize(rgCol.index, type);\n if (size) {\n sizes[rgCol.index] = size;\n }\n }\n });\n this.providers.dimension.setCustomSizes(type, sizes, true);\n });\n }\n\n private getColumnSize(index: number, type: DimensionCols): number {\n const rgCol = this.autoSizeColumns[type][index];\n if (!rgCol) {\n return 0;\n }\n return reduce(\n this.providers.data.stores,\n (r, s) => {\n const perStore = reduce(\n s.store.get('items'),\n (prev, _row, i) => {\n const item = getSourceItem(s.store, i);\n return Math.max(prev || 0, this.getLength(item[rgCol.prop]));\n },\n 0,\n );\n return Math.max(r, perStore);\n },\n rgCol.size || 0,\n );\n }\n\n private columnSet(columns: ColumnItems) {\n for (let t of columnTypes) {\n const type = t as DimensionCols;\n const cols = columns[type];\n\n for (let i in cols) {\n if (cols[i].autoSize || this.config?.allColumns) {\n if (!this.autoSizeColumns) {\n this.autoSizeColumns = {};\n }\n if (!this.autoSizeColumns[type]) {\n this.autoSizeColumns[type] = {};\n }\n this.autoSizeColumns[type][i] = {\n ...cols[i],\n index: parseInt(i, 10),\n };\n }\n }\n }\n\n if (this.dataResolve) {\n this.dataResolve(this.autoSizeColumns);\n this.clearPromise();\n }\n }\n\n private clearPromise() {\n this.dataResolve = null;\n this.dataReject = null;\n }\n\n private isRangeEdit(e: EditEvent): e is BeforeRangeSaveDataDetails {\n return !!(e as BeforeRangeSaveDataDetails).data;\n }\n\n private initiatePresizeElement(): HTMLElement {\n const styleForFontTest: Partial<CSSStyleDeclaration> = {\n position: 'absolute',\n fontSize: '14px',\n height: '0',\n width: '0',\n whiteSpace: 'nowrap',\n top: '0',\n overflowX: 'scroll',\n };\n\n const el = document.createElement('div');\n for (let s in styleForFontTest) {\n el.style[s] = styleForFontTest[s];\n }\n el.classList.add('revo-test-container');\n return el;\n }\n\n destroy() {\n super.destroy();\n this.precsizeCalculationArea?.remove();\n }\n}\n"]}
@@ -0,0 +1,96 @@
1
+ /*!
2
+ * Built by Revolist OU ❤️
3
+ */
4
+ import each from "lodash/each";
5
+ import { calculateRowHeaderSize } from "../utils/row-header-utils";
6
+ import { getScrollbarSize } from "../utils";
7
+ import { BasePlugin } from "./base.plugin";
8
+ export default class StretchColumn extends BasePlugin {
9
+ constructor(revogrid, providers) {
10
+ super(revogrid, providers);
11
+ this.providers = providers;
12
+ this.stretchedColumn = null;
13
+ // calculate scroll bar size for current user session
14
+ this.scrollSize = getScrollbarSize(document);
15
+ // subscribe to column changes
16
+ const beforecolumnapplied = ({ detail: { columns }, }) => this.applyStretch(columns);
17
+ this.addEventListener('beforecolumnapplied', beforecolumnapplied);
18
+ }
19
+ setScroll({ type, hasScroll }) {
20
+ var _a;
21
+ if (type === 'rgRow' &&
22
+ this.stretchedColumn &&
23
+ ((_a = this.stretchedColumn) === null || _a === void 0 ? void 0 : _a.initialSize) === this.stretchedColumn.size) {
24
+ if (hasScroll) {
25
+ this.stretchedColumn.size -= this.scrollSize;
26
+ this.apply();
27
+ this.dropChanges();
28
+ }
29
+ }
30
+ }
31
+ activateChanges() {
32
+ const setScroll = ({ detail }) => this.setScroll(detail);
33
+ this.addEventListener('scrollchange', setScroll);
34
+ }
35
+ dropChanges() {
36
+ this.stretchedColumn = null;
37
+ this.removeEventListener('scrollchange');
38
+ }
39
+ apply() {
40
+ if (!this.stretchedColumn) {
41
+ return;
42
+ }
43
+ const type = 'rgCol';
44
+ const sizes = this.providers.dimension.stores[type].store.get('sizes');
45
+ this.providers.dimension.setCustomSizes(type, Object.assign(Object.assign({}, sizes), { [this.stretchedColumn.index]: this.stretchedColumn.size }), true);
46
+ }
47
+ /**
48
+ * Apply stretch changes
49
+ */
50
+ applyStretch(columns) {
51
+ // unsubscribe from all events
52
+ this.dropChanges();
53
+ // calculate grid size
54
+ let sizeDifference = this.revogrid.clientWidth - 1;
55
+ each(columns, (_, type) => {
56
+ const realSize = this.providers.dimension.stores[type].store.get('realSize');
57
+ sizeDifference -= realSize;
58
+ });
59
+ if (this.revogrid.rowHeaders) {
60
+ const itemsLength = this.providers.data.stores.rgRow.store.get('source').length;
61
+ const header = this.revogrid.rowHeaders;
62
+ const rowHeaderSize = calculateRowHeaderSize(itemsLength, typeof header === 'object' ? header : undefined);
63
+ if (rowHeaderSize) {
64
+ sizeDifference -= rowHeaderSize;
65
+ }
66
+ }
67
+ if (sizeDifference > 0) {
68
+ // currently plugin accepts last column only
69
+ const index = columns.rgCol.length - 1;
70
+ const last = columns.rgCol[index];
71
+ /**
72
+ * has column
73
+ * no auto size applied
74
+ * size for column shouldn't be defined
75
+ */
76
+ const colSize = (last === null || last === void 0 ? void 0 : last.size) || this.revogrid.colSize || 0;
77
+ const size = sizeDifference + colSize - 1;
78
+ if (last && !last.autoSize && colSize < size) {
79
+ this.stretchedColumn = {
80
+ initialSize: size,
81
+ index,
82
+ size,
83
+ };
84
+ this.apply();
85
+ this.activateChanges();
86
+ }
87
+ }
88
+ }
89
+ }
90
+ /**
91
+ * Check plugin type is Stretch
92
+ */
93
+ export function isStretchPlugin(plugin) {
94
+ return !!plugin.applyStretch;
95
+ }
96
+ //# sourceMappingURL=column.stretch.plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"column.stretch.plugin.js","sourceRoot":"","sources":["../../src/plugins/column.stretch.plugin.ts"],"names":[],"mappings":"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","sourcesContent":["import each from 'lodash/each';\nimport { calculateRowHeaderSize } from '../utils/row-header-utils';\nimport { ColumnCollection } from '../services/column.data.provider';\nimport { ColumnItems } from '../services/dimension.provider';\nimport { getScrollbarSize } from '../utils';\nimport { BasePlugin } from './base.plugin';\nimport { DimensionCols, DimensionType } from '..';\nimport { PluginBaseComponent } from '../';\nimport { PluginProviders } from '../';\n\n/**\n * This plugin serves to recalculate columns initially\n * Base on empty space if there is any\n * Currently plugin supports only increasing last column\n */\ntype ScrollChange = {\n type: DimensionType;\n hasScroll: boolean;\n};\ntype StretchedData = {\n initialSize: number;\n size: number;\n index: number;\n};\n\nexport default class StretchColumn extends BasePlugin {\n private stretchedColumn: StretchedData | null = null;\n private readonly scrollSize;\n constructor(\n revogrid: HTMLRevoGridElement,\n protected providers: PluginProviders,\n ) {\n super(revogrid, providers);\n\n // calculate scroll bar size for current user session\n this.scrollSize = getScrollbarSize(document);\n\n // subscribe to column changes\n const beforecolumnapplied = ({\n detail: { columns },\n }: CustomEvent<ColumnCollection>) => this.applyStretch(columns);\n this.addEventListener('beforecolumnapplied', beforecolumnapplied);\n }\n\n private setScroll({ type, hasScroll }: ScrollChange) {\n if (\n type === 'rgRow' &&\n this.stretchedColumn &&\n this.stretchedColumn?.initialSize === this.stretchedColumn.size\n ) {\n if (hasScroll) {\n this.stretchedColumn.size -= this.scrollSize;\n this.apply();\n this.dropChanges();\n }\n }\n }\n\n private activateChanges() {\n const setScroll = ({ detail }: CustomEvent<ScrollChange>) =>\n this.setScroll(detail);\n this.addEventListener('scrollchange', setScroll);\n }\n\n private dropChanges() {\n this.stretchedColumn = null;\n this.removeEventListener('scrollchange');\n }\n\n private apply() {\n if (!this.stretchedColumn) {\n return;\n }\n const type: DimensionCols = 'rgCol';\n const sizes = this.providers.dimension.stores[type].store.get('sizes');\n this.providers.dimension.setCustomSizes(\n type,\n {\n ...sizes,\n [this.stretchedColumn.index]: this.stretchedColumn.size,\n },\n true,\n );\n }\n\n /**\n * Apply stretch changes\n */\n applyStretch(columns: ColumnItems) {\n // unsubscribe from all events\n this.dropChanges();\n // calculate grid size\n let sizeDifference = this.revogrid.clientWidth - 1;\n each(columns, (_, type: DimensionCols) => {\n const realSize =\n this.providers.dimension.stores[type].store.get('realSize');\n sizeDifference -= realSize;\n });\n if (this.revogrid.rowHeaders) {\n const itemsLength =\n this.providers.data.stores.rgRow.store.get('source').length;\n const header = this.revogrid.rowHeaders;\n const rowHeaderSize = calculateRowHeaderSize(\n itemsLength,\n typeof header === 'object' ? header : undefined,\n );\n if (rowHeaderSize) {\n sizeDifference -= rowHeaderSize;\n }\n }\n if (sizeDifference > 0) {\n // currently plugin accepts last column only\n const index = columns.rgCol.length - 1;\n const last = columns.rgCol[index];\n /**\n * has column\n * no auto size applied\n * size for column shouldn't be defined\n */\n const colSize = last?.size || this.revogrid.colSize || 0;\n const size = sizeDifference + colSize - 1;\n\n if (last && !last.autoSize && colSize < size) {\n this.stretchedColumn = {\n initialSize: size,\n index,\n size,\n };\n this.apply();\n this.activateChanges();\n }\n }\n }\n}\n\n/**\n * Check plugin type is Stretch\n */\nexport function isStretchPlugin(\n plugin: PluginBaseComponent | StretchColumn,\n): plugin is StretchColumn {\n return !!(plugin as StretchColumn).applyStretch;\n}\n"]}
@@ -0,0 +1,27 @@
1
+ /*!
2
+ * Built by Revolist OU ❤️
3
+ */
4
+ /**
5
+ * Dispatch custom event to element
6
+ */
7
+ export function dispatch(target, eventName, detail) {
8
+ const event = new CustomEvent(eventName, {
9
+ detail,
10
+ cancelable: true,
11
+ bubbles: true,
12
+ });
13
+ target === null || target === void 0 ? void 0 : target.dispatchEvent(event);
14
+ return event;
15
+ }
16
+ export function dispatchByEvent(e, eventName, detail) {
17
+ e.preventDefault();
18
+ return dispatch(e.target, eventName, detail);
19
+ }
20
+ /**
21
+ * Dispatch event by other event target
22
+ */
23
+ export function dispatchOnEvent(e, eventName, detail) {
24
+ e.preventDefault();
25
+ return dispatch(e.target, eventName, detail);
26
+ }
27
+ //# sourceMappingURL=dispatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../src/plugins/dispatcher.ts"],"names":[],"mappings":"AASA;;GAEG;AACH,MAAM,UAAU,QAAQ,CACtB,MAAc,EACd,SAAiB,EACjB,MAAuB;IAEvB,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,SAAS,EAAE;QACvC,MAAM;QACN,UAAU,EAAE,IAAI;QAChB,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;IACH,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IAC7B,OAAO,KAAK,CAAC;AACf,CAAC;AACD,MAAM,UAAU,eAAe,CAC7B,CAAQ,EACR,SAAiB,EACjB,MAAsB;IAEtB,CAAC,CAAC,cAAc,EAAE,CAAC;IACnB,OAAO,QAAQ,CAAC,CAAC,CAAC,MAAgB,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AACzD,CAAC;AACD;;GAEG;AACH,MAAM,UAAU,eAAe,CAC3B,CAA2B,EAC3B,SAAiB,EACjB,MAAY;IAEZ,CAAC,CAAC,cAAc,EAAE,CAAC;IACnB,OAAO,QAAQ,CAAC,CAAC,CAAC,MAAgB,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAC3D,CAAC","sourcesContent":["export type Target = HTMLElement | Element | null;\n\nexport type DispatchDetail = any;\ntype Event = {\n target: HTMLElement | null;\n preventDefault(): void;\n};\n\n\n/**\n * Dispatch custom event to element\n */\nexport function dispatch(\n target: Target,\n eventName: string,\n detail?: DispatchDetail,\n): CustomEvent {\n const event = new CustomEvent(eventName, {\n detail,\n cancelable: true,\n bubbles: true,\n });\n target?.dispatchEvent(event);\n return event;\n}\nexport function dispatchByEvent(\n e: Event,\n eventName: string,\n detail: DispatchDetail,\n): CustomEvent {\n e.preventDefault();\n return dispatch(e.target as Target, eventName, detail);\n}\n/**\n * Dispatch event by other event target\n */\nexport function dispatchOnEvent(\n e: MouseEvent | CustomEvent,\n eventName: string,\n detail?: any\n ): CustomEvent {\n e.preventDefault();\n return dispatch(e.target as Target, eventName, detail);\n}\n"]}
@@ -1,12 +1,15 @@
1
- import { getGroupingName, isGrouping } from '../groupingRow/grouping.service';
1
+ /*!
2
+ * Built by Revolist OU ❤️
3
+ */
4
+ import { getGroupingName, isGrouping } from "../groupingRow/grouping.service";
2
5
  const INITIAL = {
3
- mime: 'text/csv',
4
- fileKind: 'csv',
5
- // BOM signature
6
- bom: true,
7
- columnDelimiter: ',',
8
- rowDelimiter: '\r\n',
9
- encoding: '',
6
+ mime: 'text/csv',
7
+ fileKind: 'csv',
8
+ // BOM signature
9
+ bom: true,
10
+ columnDelimiter: ',',
11
+ rowDelimiter: '\r\n',
12
+ encoding: '',
10
13
  };
11
14
  // The ASCII character code 13 is called a Carriage Return or CR.
12
15
  const CARRIAGE_RETURN = String.fromCharCode(13);
@@ -16,53 +19,54 @@ const DOUBLE_QT = String.fromCharCode(34);
16
19
  const NO_BREAK_SPACE = String.fromCharCode(0xfeff);
17
20
  const escapeRegex = new RegExp('"', 'g');
18
21
  export default class ExportCsv {
19
- constructor(options = {}) {
20
- this.options = Object.assign(Object.assign({}, INITIAL), options);
21
- }
22
- doExport({ data, headers, props }) {
23
- let result = this.options.bom ? NO_BREAK_SPACE : '';
24
- // any header
25
- if ((headers === null || headers === void 0 ? void 0 : headers.length) > 0) {
26
- headers.forEach(header => {
27
- // ignore empty
28
- if (!header.length) {
29
- return;
30
- }
31
- result += this.prepareHeader(header, this.options.columnDelimiter);
32
- result += this.options.rowDelimiter;
33
- });
22
+ constructor(options = {}) {
23
+ this.options = Object.assign(Object.assign({}, INITIAL), options);
34
24
  }
35
- data.forEach((rgRow, index) => {
36
- if (index > 0) {
37
- result += this.options.rowDelimiter;
38
- }
39
- // support grouping
40
- if (isGrouping(rgRow)) {
41
- result += this.parseCell(getGroupingName(rgRow), this.options.columnDelimiter);
42
- return;
43
- }
44
- result += props.map(p => this.parseCell(rgRow[p], this.options.columnDelimiter)).join(this.options.columnDelimiter);
45
- });
46
- return result;
47
- }
48
- prepareHeader(columnHeaders, columnDelimiter) {
49
- let result = '';
50
- const newColumnHeaders = columnHeaders.map(v => this.parseCell(v, columnDelimiter, true));
51
- result += newColumnHeaders.join(columnDelimiter);
52
- return result;
53
- }
54
- parseCell(value, columnDelimiter, force = false) {
55
- let escape = value;
56
- if (typeof value !== 'string') {
57
- escape = JSON.stringify(value);
25
+ doExport({ data, headers, props }) {
26
+ let result = this.options.bom ? NO_BREAK_SPACE : '';
27
+ // any header
28
+ if ((headers === null || headers === void 0 ? void 0 : headers.length) > 0) {
29
+ headers.forEach(header => {
30
+ // ignore empty
31
+ if (!header.length) {
32
+ return;
33
+ }
34
+ result += this.prepareHeader(header, this.options.columnDelimiter);
35
+ result += this.options.rowDelimiter;
36
+ });
37
+ }
38
+ data.forEach((rgRow, index) => {
39
+ if (index > 0) {
40
+ result += this.options.rowDelimiter;
41
+ }
42
+ // support grouping
43
+ if (isGrouping(rgRow)) {
44
+ result += this.parseCell(getGroupingName(rgRow), this.options.columnDelimiter);
45
+ return;
46
+ }
47
+ result += props.map(p => this.parseCell(rgRow[p], this.options.columnDelimiter)).join(this.options.columnDelimiter);
48
+ });
49
+ return result;
58
50
  }
59
- const toEscape = [CARRIAGE_RETURN, DOUBLE_QT, LINE_FEED, columnDelimiter];
60
- if (typeof escape === 'undefined') {
61
- return '';
51
+ prepareHeader(columnHeaders, columnDelimiter) {
52
+ let result = '';
53
+ const newColumnHeaders = columnHeaders.map(v => this.parseCell(v, columnDelimiter, true));
54
+ result += newColumnHeaders.join(columnDelimiter);
55
+ return result;
62
56
  }
63
- if (escape !== '' && (force || toEscape.some(i => escape.indexOf(i) >= 0))) {
64
- return `"${escape.replace(escapeRegex, '""')}"`;
57
+ parseCell(value, columnDelimiter, force = false) {
58
+ let escape = value;
59
+ if (typeof value !== 'string') {
60
+ escape = JSON.stringify(value);
61
+ }
62
+ const toEscape = [CARRIAGE_RETURN, DOUBLE_QT, LINE_FEED, columnDelimiter];
63
+ if (typeof escape === 'undefined') {
64
+ return '';
65
+ }
66
+ if (escape !== '' && (force || toEscape.some(i => escape.indexOf(i) >= 0))) {
67
+ return `"${escape.replace(escapeRegex, '""')}"`;
68
+ }
69
+ return escape;
65
70
  }
66
- return escape;
67
- }
68
71
  }
72
+ //# sourceMappingURL=csv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csv.js","sourceRoot":"","sources":["../../../src/plugins/export/csv.ts"],"names":[],"mappings":"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","sourcesContent":["import { getGroupingName, isGrouping } from '../groupingRow/grouping.service';\nimport { CSVFormat, DataInput, Formatter } from './types';\n\nconst INITIAL: CSVFormat = {\n mime: 'text/csv',\n fileKind: 'csv',\n // BOM signature\n bom: true,\n columnDelimiter: ',',\n rowDelimiter: '\\r\\n',\n encoding: '',\n};\n\nexport type CSVFormatter = (options: Partial<CSVFormat>, data: DataInput) => string;\n\n// The ASCII character code 13 is called a Carriage Return or CR.\nconst CARRIAGE_RETURN = String.fromCharCode(13);\n// Chr(13) followed by a Chr(10) that compose a proper CRLF.\nconst LINE_FEED = String.fromCharCode(10);\nconst DOUBLE_QT = String.fromCharCode(34);\nconst NO_BREAK_SPACE = String.fromCharCode(0xfeff);\nconst escapeRegex = new RegExp('\"', 'g');\n\nexport default class ExportCsv implements Formatter {\n readonly options: Readonly<CSVFormat>;\n constructor(options: Partial<CSVFormat> = {}) {\n this.options = { ...INITIAL, ...options };\n }\n\n doExport({ data, headers, props }: DataInput) {\n let result = this.options.bom ? NO_BREAK_SPACE : '';\n\n // any header\n if (headers?.length > 0) {\n headers.forEach(header => {\n // ignore empty\n if (!header.length) {\n return;\n }\n result += this.prepareHeader(header, this.options.columnDelimiter);\n result += this.options.rowDelimiter;\n });\n }\n\n data.forEach((rgRow, index) => {\n if (index > 0) {\n result += this.options.rowDelimiter;\n }\n // support grouping\n if (isGrouping(rgRow)) {\n result += this.parseCell(getGroupingName(rgRow), this.options.columnDelimiter);\n return;\n }\n result += props.map(p => this.parseCell(rgRow[p], this.options.columnDelimiter)).join(this.options.columnDelimiter);\n });\n\n return result;\n }\n\n private prepareHeader(columnHeaders: string[], columnDelimiter: string) {\n let result = '';\n const newColumnHeaders = columnHeaders.map(v => this.parseCell(v, columnDelimiter, true));\n result += newColumnHeaders.join(columnDelimiter);\n return result;\n }\n\n private parseCell(value: any, columnDelimiter: string, force = false) {\n let escape = value;\n if (typeof value !== 'string') {\n escape = JSON.stringify(value);\n }\n const toEscape = [CARRIAGE_RETURN, DOUBLE_QT, LINE_FEED, columnDelimiter];\n if (typeof escape === 'undefined') {\n return '';\n }\n if (escape !== '' && (force || toEscape.some(i => escape.indexOf(i) >= 0))) {\n return `\"${escape.replace(escapeRegex, '\"\"')}\"`;\n }\n\n return escape;\n }\n}\n"]}