@revolist/revogrid 3.6.13 → 3.6.14

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 (451) hide show
  1. package/custom-element/_baseIteratee.js +1 -3
  2. package/custom-element/columnService.js +4 -6
  3. package/custom-element/consts.js +1 -3
  4. package/custom-element/data.store.js +33 -55
  5. package/custom-element/debounce.js +1 -3
  6. package/custom-element/dimension.helpers.js +1 -3
  7. package/custom-element/each.js +0 -2
  8. package/custom-element/filter.button.js +0 -2
  9. package/custom-element/identity.js +0 -2
  10. package/custom-element/index.d.ts +16 -9
  11. package/custom-element/index.js +15 -4
  12. package/custom-element/isSymbol.js +1 -3
  13. package/custom-element/keys.js +1 -3
  14. package/custom-element/localScrollService.js +0 -2
  15. package/custom-element/resize-observer.js +0 -2
  16. package/custom-element/revo-grid.js +154 -29
  17. package/custom-element/revogr-clipboard.js +4 -4
  18. package/custom-element/revogr-data.js +0 -2
  19. package/custom-element/revogr-data2.js +3 -14
  20. package/custom-element/revogr-edit.js +0 -2
  21. package/custom-element/revogr-edit2.js +3 -7
  22. package/custom-element/revogr-filter-panel.js +6 -10
  23. package/custom-element/revogr-focus.js +0 -2
  24. package/custom-element/revogr-focus2.js +2 -8
  25. package/custom-element/revogr-header.js +0 -2
  26. package/custom-element/revogr-header2.js +3 -11
  27. package/custom-element/revogr-order-editor.js +0 -2
  28. package/custom-element/revogr-order-editor2.js +3 -8
  29. package/custom-element/revogr-overlay-selection.js +0 -2
  30. package/custom-element/revogr-overlay-selection2.js +3 -15
  31. package/custom-element/revogr-row-headers.js +0 -2
  32. package/custom-element/revogr-row-headers2.js +2 -9
  33. package/custom-element/revogr-scroll-virtual.js +0 -2
  34. package/custom-element/revogr-scroll-virtual2.js +2 -5
  35. package/custom-element/revogr-temp-range.js +0 -2
  36. package/custom-element/revogr-temp-range2.js +4 -8
  37. package/custom-element/revogr-viewport-scroll.js +0 -2
  38. package/custom-element/revogr-viewport-scroll2.js +11 -6
  39. package/custom-element/selection.utils.js +0 -2
  40. package/custom-element/toInteger.js +0 -2
  41. package/custom-element/toNumber.js +1 -3
  42. package/custom-element/utils.js +0 -2
  43. package/dist/cjs/css-shim-9f5bc84d.js +9 -0
  44. package/dist/cjs/{debounce-a0628875.js → debounce-6cea2774.js} +1 -3
  45. package/dist/cjs/dom-fcb646f0.js +78 -0
  46. package/dist/cjs/{index-c209f988.js → index-cb904e00.js} +315 -667
  47. package/dist/cjs/index.cjs.js +0 -2
  48. package/dist/cjs/loader.cjs.js +25 -5
  49. package/dist/cjs/{resize-observer-cc749e66.js → resize-observer-bf327d6a.js} +0 -2
  50. package/dist/cjs/revo-grid.cjs.js +59 -8
  51. package/dist/cjs/revo-grid_11.cjs.entry.js +144 -143
  52. package/dist/cjs/revogr-clipboard.cjs.entry.js +3 -4
  53. package/dist/cjs/revogr-filter-panel.cjs.entry.js +6 -11
  54. package/dist/collection/collection-manifest.json +16 -16
  55. package/dist/collection/components/button/button.js +1 -2
  56. package/dist/collection/components/clipboard/revogr-clipboard.js +80 -86
  57. package/dist/collection/components/data/cellRenderer.js +5 -5
  58. package/dist/collection/components/data/columnService.js +8 -9
  59. package/dist/collection/components/data/revogr-data.js +226 -258
  60. package/dist/collection/components/data/rowRenderer.js +1 -2
  61. package/dist/collection/components/header/headerCellRenderer.js +7 -6
  62. package/dist/collection/components/header/headerRenderer.js +8 -7
  63. package/dist/collection/components/header/revogr-header.js +233 -259
  64. package/dist/collection/components/order/orderRenderer.js +6 -3
  65. package/dist/collection/components/order/revogr-order-editor.js +252 -279
  66. package/dist/collection/components/order/rowOrderService.js +1 -2
  67. package/dist/collection/components/overlay/autofill.service.js +7 -8
  68. package/dist/collection/components/overlay/clipboard.service.js +3 -4
  69. package/dist/collection/components/overlay/editors/edit.utils.js +1 -2
  70. package/dist/collection/components/overlay/editors/text.js +3 -4
  71. package/dist/collection/components/overlay/keyboard.service.js +5 -6
  72. package/dist/collection/components/overlay/revogr-edit.js +96 -112
  73. package/dist/collection/components/overlay/revogr-overlay-selection.js +476 -520
  74. package/dist/collection/components/overlay/selection.utils.js +1 -2
  75. package/dist/collection/components/revo-grid/revo-grid-style.css +13 -7
  76. package/dist/collection/components/revo-grid/revo-grid.js +1638 -1668
  77. package/dist/collection/components/revo-grid/viewport.helpers.js +0 -1
  78. package/dist/collection/components/revo-grid/viewport.interfaces.js +3 -1
  79. package/dist/collection/components/revo-grid/viewport.js +7 -4
  80. package/dist/collection/components/revo-grid/viewport.resize.service.js +2 -3
  81. package/dist/collection/components/revo-grid/viewport.scrolling.service.js +0 -1
  82. package/dist/collection/components/revo-grid/viewport.section.js +7 -5
  83. package/dist/collection/components/revo-grid/viewport.service.js +6 -7
  84. package/dist/collection/components/rowHeaders/revogr-row-headers.js +147 -161
  85. package/dist/collection/components/rowHeaders/row-header-render.js +0 -1
  86. package/dist/collection/components/scroll/revogr-viewport-scroll-style.css +4 -2
  87. package/dist/collection/components/scroll/revogr-viewport-scroll.js +168 -172
  88. package/dist/collection/components/scrollable/revogr-scroll-virtual.js +137 -159
  89. package/dist/collection/components/selection-focus/revogr-focus.js +128 -153
  90. package/dist/collection/components/selection-temp-range/revogr-temp-range-style.css +1 -1
  91. package/dist/collection/components/selection-temp-range/revogr-temp-range.js +77 -92
  92. package/dist/collection/global/global.js +2 -3
  93. package/dist/collection/index.js +0 -1
  94. package/dist/collection/plugins/autoSizeColumn.js +6 -7
  95. package/dist/collection/plugins/basePlugin.js +0 -1
  96. package/dist/collection/plugins/dispatcher.js +0 -1
  97. package/dist/collection/plugins/export/csv.js +1 -2
  98. package/dist/collection/plugins/export/export.plugin.js +5 -6
  99. package/dist/collection/plugins/export/types.js +3 -1
  100. package/dist/collection/plugins/filter/conditions/equal.js +0 -1
  101. package/dist/collection/plugins/filter/conditions/number/greaterThan.js +0 -1
  102. package/dist/collection/plugins/filter/conditions/number/greaterThanOrEqual.js +2 -3
  103. package/dist/collection/plugins/filter/conditions/number/lessThan.js +0 -1
  104. package/dist/collection/plugins/filter/conditions/number/lessThanOrEqual.js +2 -3
  105. package/dist/collection/plugins/filter/conditions/set.js +0 -1
  106. package/dist/collection/plugins/filter/conditions/string/beginswith.js +0 -1
  107. package/dist/collection/plugins/filter/conditions/string/contains.js +0 -1
  108. package/dist/collection/plugins/filter/filter.button.js +12 -7
  109. package/dist/collection/plugins/filter/filter.plugin.js +4 -5
  110. package/dist/collection/plugins/filter/filter.pop.js +238 -254
  111. package/dist/collection/plugins/filter/filter.service.js +8 -9
  112. package/dist/collection/plugins/filter/filter.style.css +3 -2
  113. package/dist/collection/plugins/filter/filter.types.js +3 -1
  114. package/dist/collection/plugins/groupingColumn/columnGroupsRenderer.js +5 -6
  115. package/dist/collection/plugins/groupingColumn/grouping.col.plugin.js +3 -4
  116. package/dist/collection/plugins/groupingColumn/headerGroupRenderer.js +3 -4
  117. package/dist/collection/plugins/groupingRow/grouping.const.js +1 -2
  118. package/dist/collection/plugins/groupingRow/grouping.row.expand.service.js +2 -3
  119. package/dist/collection/plugins/groupingRow/grouping.row.plugin.js +13 -14
  120. package/dist/collection/plugins/groupingRow/grouping.row.renderer.js +10 -6
  121. package/dist/collection/plugins/groupingRow/grouping.row.types.js +3 -1
  122. package/dist/collection/plugins/groupingRow/grouping.service.js +1 -2
  123. package/dist/collection/plugins/groupingRow/grouping.trimmed.service.js +1 -2
  124. package/dist/collection/plugins/moveColumn/columnDragPlugin.js +7 -8
  125. package/dist/collection/plugins/moveColumn/columnOrderHandler.js +1 -2
  126. package/dist/collection/plugins/sorting/sorting.plugin.js +7 -8
  127. package/dist/collection/plugins/sorting/sorting.sign.js +1 -2
  128. package/dist/collection/plugins/stretchPlugin.js +3 -4
  129. package/dist/collection/plugins/trimmed/trimmed.plugin.js +0 -1
  130. package/dist/collection/services/cell.helpers.js +1 -2
  131. package/dist/collection/services/column.data.provider.js +13 -14
  132. package/dist/collection/services/data.provider.js +3 -4
  133. package/dist/collection/services/dimension.provider.js +4 -5
  134. package/dist/collection/services/localScrollService.js +1 -2
  135. package/dist/collection/services/resizable.directive.js +4 -3
  136. package/dist/collection/services/selection.store.connector.js +2 -3
  137. package/dist/collection/services/viewport.provider.js +3 -4
  138. package/dist/collection/store/dataSource/data.proxy.js +0 -1
  139. package/dist/collection/store/dataSource/data.store.js +9 -10
  140. package/dist/collection/store/dimension/dimension.helpers.js +4 -5
  141. package/dist/collection/store/dimension/dimension.store.js +7 -9
  142. package/dist/collection/store/selection/selection.helpers.js +1 -2
  143. package/dist/collection/store/selection/selection.store.js +3 -4
  144. package/dist/collection/store/selection/selection.store.service.js +1 -2
  145. package/dist/collection/store/storeTypes.js +0 -1
  146. package/dist/collection/store/viewPort/viewport.helpers.js +1 -2
  147. package/dist/collection/store/viewPort/viewport.store.js +3 -4
  148. package/dist/collection/themeManager/theme.compact.js +0 -1
  149. package/dist/collection/themeManager/theme.default.js +0 -1
  150. package/dist/collection/themeManager/theme.material.js +0 -1
  151. package/dist/collection/themeManager/themeService.js +8 -9
  152. package/dist/collection/utils/closestPolifill.js +0 -1
  153. package/dist/collection/utils/consts.js +0 -1
  154. package/dist/collection/utils/generateAlphabetHeader.js +0 -1
  155. package/dist/collection/utils/keyCodes.js +0 -1
  156. package/dist/collection/utils/keyCodes.utils.js +3 -4
  157. package/dist/collection/utils/platform.js +0 -1
  158. package/dist/collection/utils/resizeObserver.js +0 -1
  159. package/dist/collection/utils/store.utils.js +0 -1
  160. package/dist/collection/utils/utils.js +0 -1
  161. package/dist/esm/css-shim-e1e1ea5e.js +7 -0
  162. package/dist/esm/{debounce-cb7aac48.js → debounce-e4e6dd45.js} +1 -3
  163. package/dist/esm/dom-21bd1807.js +76 -0
  164. package/dist/esm/{index-f21f8a13.js → index-6f753b3c.js} +311 -667
  165. package/dist/esm/index.js +0 -2
  166. package/dist/esm/loader.js +25 -5
  167. package/dist/esm/polyfills/css-shim.js +1 -0
  168. package/dist/esm/{resize-observer-4f34a839.js → resize-observer-00c48d78.js} +0 -2
  169. package/dist/esm/revo-grid.js +60 -6
  170. package/dist/esm/revo-grid_11.entry.js +144 -143
  171. package/dist/esm/revogr-clipboard.entry.js +3 -4
  172. package/dist/esm/revogr-filter-panel.entry.js +6 -11
  173. package/dist/esm-es5/css-shim-e1e1ea5e.js +4 -0
  174. package/dist/esm-es5/{debounce-cb7aac48.js → debounce-e4e6dd45.js} +1 -2
  175. package/dist/esm-es5/dom-21bd1807.js +24 -0
  176. package/dist/esm-es5/index-6f753b3c.js +4 -0
  177. package/dist/esm-es5/index.js +0 -1
  178. package/dist/esm-es5/loader.js +1 -2
  179. package/dist/esm-es5/{resize-observer-4f34a839.js → resize-observer-00c48d78.js} +1 -2
  180. package/dist/esm-es5/revo-grid.js +1 -2
  181. package/dist/esm-es5/revo-grid_11.entry.js +2 -3
  182. package/dist/esm-es5/revogr-clipboard.entry.js +2 -3
  183. package/dist/esm-es5/revogr-filter-panel.entry.js +2 -3
  184. package/dist/revo-grid/css-shim-bcf89cc0.system.js +4 -0
  185. package/dist/revo-grid/css-shim-e1e1ea5e.js +4 -0
  186. package/dist/revo-grid/{debounce-3aba7c4d.system.js → debounce-5a33c710.system.js} +1 -2
  187. package/dist/revo-grid/debounce-726bdadb.js +4 -0
  188. package/dist/revo-grid/dom-21bd1807.js +22 -0
  189. package/dist/revo-grid/dom-726246e2.system.js +24 -0
  190. package/dist/revo-grid/index-f14b41a0.system.js +5 -0
  191. package/dist/revo-grid/index-f30d1de1.js +5 -0
  192. package/dist/revo-grid/index.esm.js +0 -2
  193. package/dist/revo-grid/index.system.js +1 -2
  194. package/dist/revo-grid/resize-observer-00c48d78.js +4 -0
  195. package/dist/revo-grid/{resize-observer-2a36c9e4.system.js → resize-observer-8af0bc0e.system.js} +1 -2
  196. package/dist/revo-grid/revo-grid.esm.js +1 -2
  197. package/dist/revo-grid/revo-grid.js +7 -1
  198. package/dist/revo-grid/revo-grid.system.js +1 -2
  199. package/dist/revo-grid/revo-grid_11.entry.js +1 -2
  200. package/dist/revo-grid/revo-grid_11.system.entry.js +2 -3
  201. package/dist/revo-grid/revogr-clipboard.entry.js +1 -2
  202. package/dist/revo-grid/revogr-clipboard.system.entry.js +2 -3
  203. package/dist/revo-grid/revogr-filter-panel.entry.js +1 -2
  204. package/dist/revo-grid/revogr-filter-panel.system.entry.js +2 -3
  205. package/dist/types/components/data/cellRenderer.d.ts +1 -1
  206. package/dist/types/components/data/columnService.d.ts +4 -4
  207. package/dist/types/components/header/headerCellRenderer.d.ts +1 -1
  208. package/dist/types/components/header/headerRenderer.d.ts +1 -1
  209. package/dist/types/components/order/orderRenderer.d.ts +1 -1
  210. package/dist/types/components/order/rowOrderService.d.ts +1 -1
  211. package/dist/types/components/overlay/autofill.service.d.ts +1 -1
  212. package/dist/types/components/overlay/clipboard.service.d.ts +1 -1
  213. package/dist/types/components/overlay/editors/text.d.ts +1 -1
  214. package/dist/types/components/overlay/keyboard.service.d.ts +1 -1
  215. package/dist/types/components/overlay/selection.utils.d.ts +1 -1
  216. package/dist/types/components/revo-grid/viewport.d.ts +1 -1
  217. package/dist/types/components/revo-grid/viewport.interfaces.d.ts +5 -5
  218. package/dist/types/components/revo-grid/viewport.scrolling.service.d.ts +1 -1
  219. package/dist/types/components/revo-grid/viewport.section.d.ts +1 -1
  220. package/dist/types/components/revo-grid/viewport.service.d.ts +3 -3
  221. package/dist/types/components/rowHeaders/row-header-render.d.ts +1 -1
  222. package/dist/types/components.d.ts +0 -26
  223. package/dist/types/plugins/autoSizeColumn.d.ts +1 -1
  224. package/dist/types/plugins/dispatcher.d.ts +1 -1
  225. package/dist/types/plugins/export/csv.d.ts +1 -1
  226. package/dist/types/plugins/export/export.plugin.d.ts +1 -1
  227. package/dist/types/plugins/export/types.d.ts +2 -2
  228. package/dist/types/plugins/filter/filter.button.d.ts +1 -1
  229. package/dist/types/plugins/filter/filter.plugin.d.ts +6 -6
  230. package/dist/types/plugins/filter/filter.pop.d.ts +4 -4
  231. package/dist/types/plugins/filter/filter.service.d.ts +1 -1
  232. package/dist/types/plugins/filter/filter.types.d.ts +5 -5
  233. package/dist/types/plugins/groupingColumn/columnGroupsRenderer.d.ts +1 -1
  234. package/dist/types/plugins/groupingColumn/grouping.col.plugin.d.ts +1 -1
  235. package/dist/types/plugins/groupingColumn/headerGroupRenderer.d.ts +1 -1
  236. package/dist/types/plugins/groupingRow/grouping.row.renderer.d.ts +1 -1
  237. package/dist/types/plugins/groupingRow/grouping.row.types.d.ts +5 -5
  238. package/dist/types/plugins/groupingRow/grouping.service.d.ts +1 -1
  239. package/dist/types/plugins/moveColumn/columnDragPlugin.d.ts +5 -5
  240. package/dist/types/plugins/sorting/sorting.plugin.d.ts +1 -1
  241. package/dist/types/plugins/sorting/sorting.sign.d.ts +1 -1
  242. package/dist/types/plugins/trimmed/trimmed.plugin.d.ts +2 -2
  243. package/dist/types/services/column.data.provider.d.ts +4 -4
  244. package/dist/types/services/data.provider.d.ts +1 -1
  245. package/dist/types/services/dimension.provider.d.ts +2 -2
  246. package/dist/types/services/localScrollService.d.ts +1 -1
  247. package/dist/types/services/resizable.directive.d.ts +2 -2
  248. package/dist/types/services/selection.store.connector.d.ts +2 -2
  249. package/dist/types/services/viewport.provider.d.ts +1 -1
  250. package/dist/types/stencil-public-runtime.d.ts +20 -95
  251. package/dist/types/store/dataSource/data.proxy.d.ts +1 -1
  252. package/dist/types/store/dataSource/data.store.d.ts +4 -4
  253. package/dist/types/store/dimension/dimension.helpers.d.ts +3 -3
  254. package/dist/types/store/selection/selection.store.d.ts +1 -1
  255. package/dist/types/store/viewPort/viewport.helpers.d.ts +2 -2
  256. package/loader/index.d.ts +1 -10
  257. package/loader/package.json +0 -1
  258. package/package.json +1 -1
  259. package/custom-element/_baseIteratee.js.map +0 -1
  260. package/custom-element/columnService.js.map +0 -1
  261. package/custom-element/consts.js.map +0 -1
  262. package/custom-element/data.store.js.map +0 -1
  263. package/custom-element/debounce.js.map +0 -1
  264. package/custom-element/dimension.helpers.js.map +0 -1
  265. package/custom-element/each.js.map +0 -1
  266. package/custom-element/filter.button.js.map +0 -1
  267. package/custom-element/identity.js.map +0 -1
  268. package/custom-element/index.js.map +0 -1
  269. package/custom-element/isSymbol.js.map +0 -1
  270. package/custom-element/keys.js.map +0 -1
  271. package/custom-element/localScrollService.js.map +0 -1
  272. package/custom-element/resize-observer.js.map +0 -1
  273. package/custom-element/revo-grid.js.map +0 -1
  274. package/custom-element/revogr-clipboard.js.map +0 -1
  275. package/custom-element/revogr-data.js.map +0 -1
  276. package/custom-element/revogr-data2.js.map +0 -1
  277. package/custom-element/revogr-edit.js.map +0 -1
  278. package/custom-element/revogr-edit2.js.map +0 -1
  279. package/custom-element/revogr-filter-panel.js.map +0 -1
  280. package/custom-element/revogr-focus.js.map +0 -1
  281. package/custom-element/revogr-focus2.js.map +0 -1
  282. package/custom-element/revogr-header.js.map +0 -1
  283. package/custom-element/revogr-header2.js.map +0 -1
  284. package/custom-element/revogr-order-editor.js.map +0 -1
  285. package/custom-element/revogr-order-editor2.js.map +0 -1
  286. package/custom-element/revogr-overlay-selection.js.map +0 -1
  287. package/custom-element/revogr-overlay-selection2.js.map +0 -1
  288. package/custom-element/revogr-row-headers.js.map +0 -1
  289. package/custom-element/revogr-row-headers2.js.map +0 -1
  290. package/custom-element/revogr-scroll-virtual.js.map +0 -1
  291. package/custom-element/revogr-scroll-virtual2.js.map +0 -1
  292. package/custom-element/revogr-temp-range.js.map +0 -1
  293. package/custom-element/revogr-temp-range2.js.map +0 -1
  294. package/custom-element/revogr-viewport-scroll.js.map +0 -1
  295. package/custom-element/revogr-viewport-scroll2.js.map +0 -1
  296. package/custom-element/selection.utils.js.map +0 -1
  297. package/custom-element/themeService.js +0 -65
  298. package/custom-element/themeService.js.map +0 -1
  299. package/custom-element/toInteger.js.map +0 -1
  300. package/custom-element/toNumber.js.map +0 -1
  301. package/custom-element/utils.js.map +0 -1
  302. package/dist/cjs/debounce-a0628875.js.map +0 -1
  303. package/dist/cjs/index-c209f988.js.map +0 -1
  304. package/dist/cjs/index.cjs.js.map +0 -1
  305. package/dist/cjs/loader.cjs.js.map +0 -1
  306. package/dist/cjs/resize-observer-cc749e66.js.map +0 -1
  307. package/dist/cjs/revo-grid.cjs.js.map +0 -1
  308. package/dist/cjs/revo-grid_11.cjs.entry.js.map +0 -1
  309. package/dist/cjs/revogr-clipboard.cjs.entry.js.map +0 -1
  310. package/dist/cjs/revogr-filter-panel.cjs.entry.js.map +0 -1
  311. package/dist/collection/components/button/button.js.map +0 -1
  312. package/dist/collection/components/clipboard/revogr-clipboard.js.map +0 -1
  313. package/dist/collection/components/data/cellRenderer.js.map +0 -1
  314. package/dist/collection/components/data/columnService.js.map +0 -1
  315. package/dist/collection/components/data/revogr-data.js.map +0 -1
  316. package/dist/collection/components/data/rowRenderer.js.map +0 -1
  317. package/dist/collection/components/header/headerCellRenderer.js.map +0 -1
  318. package/dist/collection/components/header/headerRenderer.js.map +0 -1
  319. package/dist/collection/components/header/revogr-header.js.map +0 -1
  320. package/dist/collection/components/order/orderRenderer.js.map +0 -1
  321. package/dist/collection/components/order/revogr-order-editor.js.map +0 -1
  322. package/dist/collection/components/order/rowOrderService.js.map +0 -1
  323. package/dist/collection/components/overlay/autofill.service.js.map +0 -1
  324. package/dist/collection/components/overlay/clipboard.service.js.map +0 -1
  325. package/dist/collection/components/overlay/editors/edit.utils.js.map +0 -1
  326. package/dist/collection/components/overlay/editors/text.js.map +0 -1
  327. package/dist/collection/components/overlay/keyboard.service.js.map +0 -1
  328. package/dist/collection/components/overlay/revogr-edit.js.map +0 -1
  329. package/dist/collection/components/overlay/revogr-overlay-selection.js.map +0 -1
  330. package/dist/collection/components/overlay/selection.utils.js.map +0 -1
  331. package/dist/collection/components/revo-grid/revo-grid.js.map +0 -1
  332. package/dist/collection/components/revo-grid/viewport.helpers.js.map +0 -1
  333. package/dist/collection/components/revo-grid/viewport.interfaces.js.map +0 -1
  334. package/dist/collection/components/revo-grid/viewport.js.map +0 -1
  335. package/dist/collection/components/revo-grid/viewport.resize.service.js.map +0 -1
  336. package/dist/collection/components/revo-grid/viewport.scrolling.service.js.map +0 -1
  337. package/dist/collection/components/revo-grid/viewport.section.js.map +0 -1
  338. package/dist/collection/components/revo-grid/viewport.service.js.map +0 -1
  339. package/dist/collection/components/rowHeaders/revogr-row-headers.js.map +0 -1
  340. package/dist/collection/components/rowHeaders/row-header-render.js.map +0 -1
  341. package/dist/collection/components/scroll/revogr-viewport-scroll.js.map +0 -1
  342. package/dist/collection/components/scrollable/revogr-scroll-virtual.js.map +0 -1
  343. package/dist/collection/components/selection-focus/revogr-focus.js.map +0 -1
  344. package/dist/collection/components/selection-temp-range/revogr-temp-range.js.map +0 -1
  345. package/dist/collection/global/global.js.map +0 -1
  346. package/dist/collection/index.js.map +0 -1
  347. package/dist/collection/plugins/autoSizeColumn.js.map +0 -1
  348. package/dist/collection/plugins/basePlugin.js.map +0 -1
  349. package/dist/collection/plugins/dispatcher.js.map +0 -1
  350. package/dist/collection/plugins/export/csv.js.map +0 -1
  351. package/dist/collection/plugins/export/export.plugin.js.map +0 -1
  352. package/dist/collection/plugins/export/types.js.map +0 -1
  353. package/dist/collection/plugins/filter/conditions/equal.js.map +0 -1
  354. package/dist/collection/plugins/filter/conditions/number/greaterThan.js.map +0 -1
  355. package/dist/collection/plugins/filter/conditions/number/greaterThanOrEqual.js.map +0 -1
  356. package/dist/collection/plugins/filter/conditions/number/lessThan.js.map +0 -1
  357. package/dist/collection/plugins/filter/conditions/number/lessThanOrEqual.js.map +0 -1
  358. package/dist/collection/plugins/filter/conditions/set.js.map +0 -1
  359. package/dist/collection/plugins/filter/conditions/string/beginswith.js.map +0 -1
  360. package/dist/collection/plugins/filter/conditions/string/contains.js.map +0 -1
  361. package/dist/collection/plugins/filter/filter.button.js.map +0 -1
  362. package/dist/collection/plugins/filter/filter.plugin.js.map +0 -1
  363. package/dist/collection/plugins/filter/filter.pop.js.map +0 -1
  364. package/dist/collection/plugins/filter/filter.service.js.map +0 -1
  365. package/dist/collection/plugins/filter/filter.types.js.map +0 -1
  366. package/dist/collection/plugins/groupingColumn/columnGroupsRenderer.js.map +0 -1
  367. package/dist/collection/plugins/groupingColumn/grouping.col.plugin.js.map +0 -1
  368. package/dist/collection/plugins/groupingColumn/headerGroupRenderer.js.map +0 -1
  369. package/dist/collection/plugins/groupingRow/grouping.const.js.map +0 -1
  370. package/dist/collection/plugins/groupingRow/grouping.row.expand.service.js.map +0 -1
  371. package/dist/collection/plugins/groupingRow/grouping.row.plugin.js.map +0 -1
  372. package/dist/collection/plugins/groupingRow/grouping.row.renderer.js.map +0 -1
  373. package/dist/collection/plugins/groupingRow/grouping.row.types.js.map +0 -1
  374. package/dist/collection/plugins/groupingRow/grouping.service.js.map +0 -1
  375. package/dist/collection/plugins/groupingRow/grouping.trimmed.service.js.map +0 -1
  376. package/dist/collection/plugins/moveColumn/columnDragPlugin.js.map +0 -1
  377. package/dist/collection/plugins/moveColumn/columnOrderHandler.js.map +0 -1
  378. package/dist/collection/plugins/sorting/sorting.plugin.js.map +0 -1
  379. package/dist/collection/plugins/sorting/sorting.sign.js.map +0 -1
  380. package/dist/collection/plugins/stretchPlugin.js.map +0 -1
  381. package/dist/collection/plugins/trimmed/trimmed.plugin.js.map +0 -1
  382. package/dist/collection/services/cell.helpers.js.map +0 -1
  383. package/dist/collection/services/column.data.provider.js.map +0 -1
  384. package/dist/collection/services/data.provider.js.map +0 -1
  385. package/dist/collection/services/dimension.provider.js.map +0 -1
  386. package/dist/collection/services/localScrollService.js.map +0 -1
  387. package/dist/collection/services/resizable.directive.js.map +0 -1
  388. package/dist/collection/services/selection.store.connector.js.map +0 -1
  389. package/dist/collection/services/viewport.provider.js.map +0 -1
  390. package/dist/collection/store/dataSource/data.proxy.js.map +0 -1
  391. package/dist/collection/store/dataSource/data.store.js.map +0 -1
  392. package/dist/collection/store/dimension/dimension.helpers.js.map +0 -1
  393. package/dist/collection/store/dimension/dimension.store.js.map +0 -1
  394. package/dist/collection/store/selection/selection.helpers.js.map +0 -1
  395. package/dist/collection/store/selection/selection.store.js.map +0 -1
  396. package/dist/collection/store/selection/selection.store.service.js.map +0 -1
  397. package/dist/collection/store/storeTypes.js.map +0 -1
  398. package/dist/collection/store/viewPort/viewport.helpers.js.map +0 -1
  399. package/dist/collection/store/viewPort/viewport.store.js.map +0 -1
  400. package/dist/collection/themeManager/theme.compact.js.map +0 -1
  401. package/dist/collection/themeManager/theme.default.js.map +0 -1
  402. package/dist/collection/themeManager/theme.material.js.map +0 -1
  403. package/dist/collection/themeManager/themeService.js.map +0 -1
  404. package/dist/collection/utils/closestPolifill.js.map +0 -1
  405. package/dist/collection/utils/consts.js.map +0 -1
  406. package/dist/collection/utils/generateAlphabetHeader.js.map +0 -1
  407. package/dist/collection/utils/keyCodes.js.map +0 -1
  408. package/dist/collection/utils/keyCodes.utils.js.map +0 -1
  409. package/dist/collection/utils/platform.js.map +0 -1
  410. package/dist/collection/utils/resizeObserver.js.map +0 -1
  411. package/dist/collection/utils/store.utils.js.map +0 -1
  412. package/dist/collection/utils/utils.js.map +0 -1
  413. package/dist/esm/debounce-cb7aac48.js.map +0 -1
  414. package/dist/esm/index-f21f8a13.js.map +0 -1
  415. package/dist/esm/index.js.map +0 -1
  416. package/dist/esm/loader.js.map +0 -1
  417. package/dist/esm/resize-observer-4f34a839.js.map +0 -1
  418. package/dist/esm/revo-grid.js.map +0 -1
  419. package/dist/esm/revo-grid_11.entry.js.map +0 -1
  420. package/dist/esm/revogr-clipboard.entry.js.map +0 -1
  421. package/dist/esm/revogr-filter-panel.entry.js.map +0 -1
  422. package/dist/esm-es5/debounce-cb7aac48.js.map +0 -1
  423. package/dist/esm-es5/index-f21f8a13.js +0 -5
  424. package/dist/esm-es5/index-f21f8a13.js.map +0 -1
  425. package/dist/esm-es5/index.js.map +0 -1
  426. package/dist/esm-es5/loader.js.map +0 -1
  427. package/dist/esm-es5/resize-observer-4f34a839.js.map +0 -1
  428. package/dist/esm-es5/revo-grid.js.map +0 -1
  429. package/dist/esm-es5/revo-grid_11.entry.js.map +0 -1
  430. package/dist/esm-es5/revogr-clipboard.entry.js.map +0 -1
  431. package/dist/esm-es5/revogr-filter-panel.entry.js.map +0 -1
  432. package/dist/revo-grid/debounce-3aba7c4d.system.js.map +0 -1
  433. package/dist/revo-grid/debounce-cb7aac48.js +0 -5
  434. package/dist/revo-grid/debounce-cb7aac48.js.map +0 -1
  435. package/dist/revo-grid/index-20224007.system.js +0 -6
  436. package/dist/revo-grid/index-20224007.system.js.map +0 -1
  437. package/dist/revo-grid/index-f21f8a13.js +0 -6
  438. package/dist/revo-grid/index-f21f8a13.js.map +0 -1
  439. package/dist/revo-grid/index.esm.js.map +0 -1
  440. package/dist/revo-grid/index.system.js.map +0 -1
  441. package/dist/revo-grid/resize-observer-2a36c9e4.system.js.map +0 -1
  442. package/dist/revo-grid/resize-observer-4f34a839.js +0 -5
  443. package/dist/revo-grid/resize-observer-4f34a839.js.map +0 -1
  444. package/dist/revo-grid/revo-grid.esm.js.map +0 -1
  445. package/dist/revo-grid/revo-grid.system.js.map +0 -1
  446. package/dist/revo-grid/revo-grid_11.entry.js.map +0 -1
  447. package/dist/revo-grid/revo-grid_11.system.entry.js.map +0 -1
  448. package/dist/revo-grid/revogr-clipboard.entry.js.map +0 -1
  449. package/dist/revo-grid/revogr-clipboard.system.entry.js.map +0 -1
  450. package/dist/revo-grid/revogr-filter-panel.entry.js.map +0 -1
  451. package/dist/revo-grid/revogr-filter-panel.system.entry.js.map +0 -1
@@ -1 +0,0 @@
1
- {"file":"revogr-clipboard.entry.cjs.js","mappings":";;;;;;;;;MAIa,SAAS;;;;;;EAGqB,OAAO,CAAC,CAAiB;IAChE,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACzF,MAAM,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACxE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC,CAAC,cAAc,EAAE,CAAC;GACpB;EACuC,WAAW,CAAC,CAAiB;IACnE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,cAAc,EAAE,CAAC;GACpB;EACS,MAAM,MAAM,CAAC,CAAe,EAAE,IAA8B;IACpE,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;GAC5D;EAED,UAAU,CAAC,IAA6B;IACtC,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;GACvD;EAEO,SAAS,CAAC,IAAY;IAC5B,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACtC,KAAK,IAAI,CAAC,IAAI,IAAI,EAAE;MAClB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;KAClC;IACD,OAAO,MAAM,CAAC;GACf;EAEO,SAAS,CAAC,IAAY;IAC5B,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC3F,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;MAC1C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;KAClE;IACD,OAAO,MAAM,CAAC;GACf;EAEO,OAAO,CAAC,CAAiB;IAC/B,OAAO,CAAC,CAAC,aAAa,KAAM,MAA6D,aAA7D,MAAM,uBAAN,MAAM,CAAyD,aAAa,CAAA,CAAC;GAC1G;;;;;","names":[],"sources":["src/components/clipboard/revogr-clipboard.tsx"],"sourcesContent":["import { Component, Listen, Method, Event, EventEmitter } from '@stencil/core';\nimport { RevoGrid } from '../../interfaces';\n\n@Component({ tag: 'revogr-clipboard' })\nexport class Clipboard {\n @Event({ bubbles: false }) copyRegion: EventEmitter<DataTransfer>;\n @Event({ bubbles: false }) pasteRegion: EventEmitter<string[][]>;\n @Listen('paste', { target: 'document' }) onPaste(e: ClipboardEvent) {\n const clipboardData = this.getData(e);\n const isHTML = clipboardData.types.indexOf('text/html') > -1;\n const data = isHTML ? clipboardData.getData('text/html') : clipboardData.getData('text');\n const parsedData = isHTML ? this.htmlParse(data) : this.textParse(data);\n this.pasteRegion.emit(parsedData);\n e.preventDefault();\n }\n @Listen('copy', { target: 'document' }) copyStarted(e: ClipboardEvent) {\n this.copyRegion.emit(this.getData(e));\n e.preventDefault();\n }\n @Method() async doCopy(e: DataTransfer, data?: RevoGrid.DataFormat[][]) {\n e.setData('text/plain', data ? this.parserCopy(data) : '');\n }\n\n parserCopy(data: RevoGrid.DataFormat[][]) {\n return data.map(rgRow => rgRow.join('\\t')).join('\\n');\n }\n\n private textParse(data: string) {\n const result: string[][] = [];\n const rows = data.split(/\\r\\n|\\n|\\r/);\n for (let y in rows) {\n result.push(rows[y].split('\\t'));\n }\n return result;\n }\n\n private htmlParse(data: string) {\n const result: string[][] = [];\n const table = document.createRange().createContextualFragment(data).querySelector('table');\n for (const rgRow of Array.from(table.rows)) {\n result.push(Array.from(rgRow.cells).map(cell => cell.innerText));\n }\n return result;\n }\n\n private getData(e: ClipboardEvent) {\n return e.clipboardData || ((window as unknown) as { clipboardData: DataTransfer | null })?.clipboardData;\n }\n}\n"],"version":3}
@@ -1 +0,0 @@
1
- {"file":"revogr-filter-panel.entry.cjs.js","mappings":"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","names":["h","debounce","isFilterBtn","index","AndOrButton","TrashButton","Host"],"sources":["src/components/button/button.tsx","src/utils/closestPolifill.ts","src/plugins/filter/filter.style.scss?tag=revogr-filter-panel","src/plugins/filter/filter.pop.tsx"],"sourcesContent":["import { h } from '@stencil/core';\nimport { JSXBase, VNode } from '@stencil/core/internal';\n\ninterface Props extends Partial<JSXBase.ButtonHTMLAttributes<HTMLButtonElement>> {}\n\nexport const RevoButton = (props: Props, children: VNode[]) => {\n return (\n <button\n {...props}\n class={{\n ...(typeof props.class === 'object' ? props.class : props.class ? { [props.class]: true } : ''),\n ['revo-button']: true,\n }}\n >\n {children}\n </button>\n );\n};\n","(function closest() {\n if (!Element.prototype.matches) {\n Element.prototype.matches =\n ((Element.prototype as unknown) as { msMatchesSelector: (selectors: string) => boolean }).msMatchesSelector || Element.prototype.webkitMatchesSelector;\n }\n\n if (!Element.prototype.closest) {\n Element.prototype.closest = function (s: string) {\n let el: HTMLElement | Element | (Node & ParentNode) = this;\n\n do {\n if (Element.prototype.matches.call(el, s)) {\n return el;\n }\n el = el.parentElement || el.parentNode;\n } while (el !== null && el.nodeType === 1);\n return null;\n };\n }\n})();\n","revogr-filter-panel {\n position: absolute;\n display: block;\n top: 0;\n left: 0;\n z-index: 100;\n\n opacity: 1;\n transform: none;\n background-color: #fff;\n transform-origin: 62px 0px;\n box-shadow: 0 5px 18px -2px rgba(black, 20%);\n padding: 10px;\n border-radius: 4px;\n\n min-width: 220px;\n text-align: left;\n\n .filter-holder > div {\n display: flex;\n flex-direction: column;\n }\n\n label {\n color: gray;\n font-size: 13px;\n font-weight: 600;\n display: block;\n padding: 8px 0;\n }\n\n select {\n width: 100%;\n }\n\n input[type=\"text\"] {\n border: 0;\n min-height: 34px;\n margin: 5px 0;\n background: #f3f3f3;\n border-radius: 5px;\n padding: 0 10px;\n box-sizing: border-box;\n width: 100%;\n }\n\n button {\n margin-top: 10px;\n margin-right: 5px;\n }\n\n\n .filter-actions {\n text-align: right;\n margin-right: -5px;\n }\n}\n\n.rgHeaderCell {\n &:hover .rv-filter {\n transition: opacity 267ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, transform 178ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;\n }\n &:hover .rv-filter,\n .rv-filter.active {\n opacity: 1;\n }\n\n .rv-filter {\n $btn-size: 24px;\n height: $btn-size;\n width: $btn-size;\n background: none;\n border: 0;\n opacity: 0;\n visibility: visible;\n cursor: pointer;\n border-radius: 4px;\n\n &.active {\n color: #10224a;\n }\n\n .filter-img {\n $img-size: 11px;\n color: gray;\n width: $img-size;\n }\n }\n}\n\n.select-css {\n $gradient: \"data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23007CB2%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E\";\n $linearGradient: linear-gradient(to bottom, #ffffff 0%, #ffffff 100%);\n $borderColor: #f1f1f1;\n\n display: block;\n font-family: sans-serif;\n font-weight: 600;\n color: #444;\n line-height: 1.3;\n padding: 0.6em 1.4em 0.5em 0.8em;\n width: 100%;\n max-width: 100%; /* useful when width is set to anything other than 100% */\n box-sizing: border-box;\n margin: 0;\n border: 1px solid $borderColor;\n box-shadow: transparent;\n border-radius: 0.5em;\n appearance: none;\n background-color: #fff;\n background-image: url($gradient), $linearGradient;\n background-repeat: no-repeat, repeat;\n /* arrow icon position (1em from the right, 50% vertical) , then gradient position*/\n background-position: right 0.7em top 50%, 0 0;\n /* icon size, then gradient */\n background-size: 0.65em auto, 100%;\n\n /* Hide arrow icon in IE browsers */\n &::-ms-expand {\n display: none;\n }\n /* Hover style */\n &:hover {\n border-color: rgb(197, 197, 197);\n }\n /* Focus style */\n &:focus {\n border-color: $borderColor;\n box-shadow: 0 0 1px 3px rgba(59, 153, 252, 0.7);\n box-shadow: 0 0 0 3px -moz-mac-focusring;\n color: #222;\n outline: none;\n }\n\n /* Set options to normal weight */\n option {\n font-weight: normal;\n }\n\n /* Disabled styles */\n &:disabled,\n &[aria-disabled=\"true\"] {\n color: gray;\n background-image: url(\"data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22graytext%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E\"),\n linear-gradient(to bottom, #ffffff 0%, #ffffff 100%);\n }\n\n &:disabled:hover,\n &[aria-disabled=\"true\"] {\n border-color: $borderColor;\n }\n}\n\n.multi-filter-list {\n margin-top: 5px;\n margin-bottom: 5px;\n\n div {\n white-space: nowrap;\n }\n\n .multi-filter-list-action {\n display: flex;\n\n justify-content: space-between;\n align-items: center;\n }\n\n .and-or-button {\n margin: 0 0 0 10px;\n min-width: 58px;\n cursor: pointer;\n }\n .trash-button {\n $btn-remove-size: 22px;\n margin: 0 0 -2px 6px;\n cursor: pointer;\n\n width: $btn-remove-size;\n height: $btn-remove-size;\n color: gray;\n font-size: 18px;\n\n\n .trash-img {\n width: 1em;\n }\n }\n}\n\n.add-filter-divider {\n display: block;\n margin: 0 -10px 10px -10px;\n\n border-bottom: 1px solid #d9d9d9;\n height: 10px;\n box-shadow: 0 4px 5px rgb(0 0 0 / 5%);\n}\n\n.select-input {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}","import { Component, h, Host, Listen, Prop, State, Event, EventEmitter, VNode, Method } from '@stencil/core';\nimport { FilterType } from './filter.service';\nimport { RevoGrid } from '../../interfaces';\nimport { AndOrButton, isFilterBtn, TrashButton } from './filter.button';\nimport { RevoButton } from '../../components/button/button';\nimport '../../utils/closestPolifill';\nimport { LogicFunction } from './filter.types';\nimport { FilterCaptions } from './filter.plugin';\nimport debounce from 'lodash/debounce';\n\n/**\n * @typedef FilterItem\n * @type {object}\n * @property {ColumnProp} prop - column id\n * @property {FilterType} type - filter type definition\n * @property {any} value - value for additional filtering, text value or some id\n */\nexport type FilterItem = {\n prop?: RevoGrid.ColumnProp;\n type?: FilterType;\n value?: any;\n};\n\nexport type FilterData = {\n id: number;\n type: FilterType;\n value?: any;\n relation: 'and' | 'or';\n};\n\nexport type MultiFilterItem = {\n [prop: string]: FilterData[];\n};\n\nexport type ShowData = {\n x: number;\n y: number;\n} & FilterItem;\n\nconst defaultType: FilterType = 'none';\n\nconst FILTER_LIST_CLASS = 'multi-filter-list';\nconst FILTER_LIST_CLASS_ACTION = 'multi-filter-list-action';\n\n@Component({\n tag: 'revogr-filter-panel',\n styleUrl: 'filter.style.scss',\n})\nexport class FilterPanel {\n private filterCaptionsInternal: FilterCaptions = {\n title: 'Filter by condition',\n save: 'Save',\n reset: 'Reset',\n cancel: 'Close',\n };\n @State() isFilterIdSet = false;\n @State() filterId = 0;\n @State() currentFilterId: number = -1;\n @State() currentFilterType: FilterType = defaultType;\n @State() changes: ShowData | undefined;\n @Prop({ mutable: true, reflect: true }) uuid: string;\n @Prop() filterItems: MultiFilterItem = {};\n @Prop() filterTypes: Record<string, string[]> = {};\n @Prop() filterNames: Record<string, string> = {};\n @Prop() filterEntities: Record<string, LogicFunction> = {};\n @Prop() filterCaptions: FilterCaptions | undefined;\n @Prop() disableDynamicFiltering: boolean = false;\n @Event() filterChange: EventEmitter<MultiFilterItem>;\n @Listen('mousedown', { target: 'document' }) onMouseDown(e: MouseEvent): void {\n if (this.changes && !e.defaultPrevented) {\n const el = e.target as HTMLElement;\n if (this.isOutside(el) && !isFilterBtn(el)) {\n this.changes = undefined;\n }\n }\n }\n @Method() async show(newEntity?: ShowData) {\n this.changes = newEntity;\n if (this.changes) {\n this.changes.type = this.changes.type || defaultType;\n }\n }\n\n @Method() async getChanges() {\n return this.changes;\n }\n\n componentWillRender() {\n if (!this.isFilterIdSet) {\n this.isFilterIdSet = true;\n const filterItems = Object.keys(this.filterItems);\n for (const prop of filterItems) {\n // we set the proper filterId so there won't be any conflict when removing filters\n this.filterId += this.filterItems[prop].length;\n }\n }\n }\n\n renderSelectOptions(type: FilterType, isDefaultTypeRemoved = false) {\n const options: VNode[] = [];\n const prop = this.changes?.prop;\n\n if (!isDefaultTypeRemoved) {\n options.push(\n <option selected={this.currentFilterType === defaultType} value={defaultType}>\n {prop && this.filterItems[prop] && this.filterItems[prop].length > 0 ? 'Add more condition...' : this.filterNames[defaultType]}\n </option>,\n );\n }\n\n for (let gIndex in this.filterTypes) {\n options.push(\n ...this.filterTypes[gIndex].map(k => (\n <option value={k} selected={type === k}>\n {this.filterNames[k]}\n </option>\n )),\n );\n options.push(<option disabled></option>);\n }\n return options;\n }\n\n renderExtra(prop: RevoGrid.ColumnProp, index: number) {\n const currentFilter = this.filterItems[prop];\n\n if (!currentFilter) return '';\n\n if (this.filterEntities[currentFilter[index].type].extra !== 'input') return '';\n\n return (\n <input\n id={`filter-input-${currentFilter[index].id}`}\n placeholder=\"Enter value...\"\n type=\"text\"\n value={currentFilter[index].value}\n onInput={this.onUserInput.bind(this, index, prop)}\n onKeyDown={e => this.onKeyDown(e)}\n />\n );\n }\n\n getFilterItemsList() {\n const prop = this.changes?.prop;\n if (!(prop || prop === 0)) return '';\n\n const propFilters = this.filterItems[prop] || [];\n return (\n <div key={this.filterId}>\n {propFilters.map((d, index) => {\n let andOrButton;\n\n // hide toggle button if there is only one filter and the last one\n if (index !== this.filterItems[prop].length - 1) {\n andOrButton = (\n <div onClick={() => this.toggleFilterAndOr(d.id)}>\n <AndOrButton isAnd={d.relation === 'and'} />\n </div>\n );\n }\n\n return (\n <div key={d.id} class={FILTER_LIST_CLASS}>\n <div class={{ 'select-input': true }}>\n <select class=\"select-css select-filter\" onChange={e => this.onFilterTypeChange(e, prop, index)}>\n {this.renderSelectOptions(this.filterItems[prop][index].type, true)}\n </select>\n <div class={FILTER_LIST_CLASS_ACTION}>{andOrButton}</div>\n <div onClick={() => this.onRemoveFilter(d.id)}>\n <TrashButton />\n </div>\n </div>\n <div>{this.renderExtra(prop, index)}</div>\n </div>\n );\n })}\n\n {propFilters.length > 0 ? <div class=\"add-filter-divider\"></div> : ''}\n </div>\n );\n }\n\n render() {\n if (!this.changes) {\n return <Host style={{ display: 'none' }}></Host>;\n }\n const style = {\n display: 'block',\n left: `${this.changes.x}px`,\n top: `${this.changes.y}px`,\n };\n\n const capts = Object.assign(this.filterCaptionsInternal, this.filterCaptions);\n\n return (\n <Host style={style}>\n <label>{capts.title}</label>\n <div class=\"filter-holder\">{this.getFilterItemsList()}</div>\n\n <div class=\"add-filter\">\n <select id=\"add-filter\" class=\"select-css\" onChange={e => this.onAddNewFilter(e)}>\n {this.renderSelectOptions(this.currentFilterType)}\n </select>\n </div>\n <div class=\"filter-actions\">\n {this.disableDynamicFiltering &&\n <RevoButton class={{ red: true, save: true }} onClick={() => this.onSave()}>\n {capts.save}\n </RevoButton>\n }\n <RevoButton class={{ red: true, reset: true }} onClick={() => this.onReset()}>\n {capts.reset}\n </RevoButton>\n <RevoButton class={{ light: true, cancel: true }} onClick={() => this.onCancel()}>\n {capts.cancel}\n </RevoButton>\n </div>\n </Host>\n );\n }\n\n private onFilterTypeChange(e: Event, prop: RevoGrid.ColumnProp, index: number) {\n const el = e.target as HTMLSelectElement;\n const type = el.value as FilterType;\n\n this.filterItems[prop][index].type = type;\n\n // this re-renders the input to know if we need extra input\n this.filterId++;\n\n // adding setTimeout will wait for the next tick DOM update then focus on input\n setTimeout(() => {\n const input = document.getElementById('filter-input-' + this.filterItems[prop][index].id) as HTMLInputElement;\n if (input) input.focus();\n }, 0);\n\n if (!this.disableDynamicFiltering) this.debouncedApplyFilter();\n }\n\n private debouncedApplyFilter = debounce(() => {\n this.filterChange.emit(this.filterItems);\n }, 400);\n\n private onAddNewFilter(e: Event) {\n const el = e.target as HTMLSelectElement;\n const type = el.value as FilterType;\n\n this.currentFilterType = type;\n this.addNewFilterToProp();\n\n // reset value after adding new filter\n const select = document.getElementById('add-filter') as HTMLSelectElement;\n if (select) {\n select.value = defaultType;\n this.currentFilterType = defaultType;\n }\n\n if (!this.disableDynamicFiltering) this.debouncedApplyFilter();\n }\n\n private addNewFilterToProp() {\n const prop = this.changes?.prop;\n if (!(prop || prop === 0)) return;\n\n if (!this.filterItems[prop]) {\n this.filterItems[prop] = [];\n }\n\n if (this.currentFilterType === 'none') return;\n\n this.filterId++;\n this.currentFilterId = this.filterId;\n\n this.filterItems[prop].push({\n id: this.currentFilterId,\n type: this.currentFilterType,\n value: '',\n relation: 'and',\n });\n\n // adding setTimeout will wait for the next tick DOM update then focus on input\n setTimeout(() => {\n const input = document.getElementById('filter-input-' + this.currentFilterId) as HTMLInputElement;\n if (input) input.focus();\n }, 0);\n }\n\n private onUserInput(index: number, prop: RevoGrid.ColumnProp, event: Event) {\n // update the value of the filter item\n this.filterItems[prop][index].value = (event.target as HTMLInputElement).value;\n\n if (!this.disableDynamicFiltering) this.debouncedApplyFilter();\n }\n\n private onKeyDown(e: KeyboardEvent) {\n if (e.key.toLowerCase() === 'enter') {\n const select = document.getElementById('add-filter') as HTMLSelectElement;\n if (select) {\n select.value = defaultType;\n this.currentFilterType = defaultType;\n this.addNewFilterToProp();\n select.focus();\n }\n return;\n }\n // keep event local, don't escalate farther to dom\n e.stopPropagation();\n }\n\n private onSave() {\n this.filterChange.emit(this.filterItems);\n }\n\n private onCancel() {\n this.changes = undefined;\n }\n\n private onReset() {\n this.assertChanges();\n\n delete this.filterItems[this.changes.prop];\n\n // this updates the DOM which is used by getFilterItemsList() key\n this.filterId++;\n\n this.filterChange.emit(this.filterItems);\n }\n\n private onRemoveFilter(id: number) {\n this.assertChanges();\n\n // this is for reactivity issues for getFilterItemsList()\n this.filterId++;\n\n const prop = this.changes.prop;\n\n const items = this.filterItems[prop];\n if (!items) return;\n\n const index = items.findIndex(d => d.id === id);\n if (index === -1) return;\n items.splice(index, 1);\n\n // let's remove the prop if no more filters so the filter icon will be removed\n if (items.length === 0) delete this.filterItems[prop];\n\n if (!this.disableDynamicFiltering) this.debouncedApplyFilter();\n }\n\n private toggleFilterAndOr(id: number) {\n this.assertChanges();\n\n // this is for reactivity issues for getFilterItemsList()\n this.filterId++;\n\n const prop = this.changes.prop;\n\n const items = this.filterItems[prop];\n if (!items) return;\n\n const index = items.findIndex(d => d.id === id);\n if (index === -1) return;\n\n items[index].relation = items[index].relation === 'and' ? 'or' : 'and';\n if (!this.disableDynamicFiltering) this.debouncedApplyFilter();\n }\n\n private assertChanges() {\n if (!this.changes) {\n throw new Error('Changes required per edit');\n }\n }\n\n private isOutside(e: HTMLElement | null) {\n const select = document.getElementById('add-filter') as HTMLSelectElement;\n if (select) select.value = defaultType;\n\n this.currentFilterType = defaultType;\n this.changes.type = defaultType;\n this.currentFilterId = -1;\n if (e.classList.contains(`[uuid=\"${this.uuid}\"]`)) {\n return false;\n }\n return !e?.closest(`[uuid=\"${this.uuid}\"]`);\n }\n}\n"],"version":3}
@@ -1 +0,0 @@
1
- {"version":3,"file":"button.js","sourceRoot":"","sources":["../../../src/components/button/button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAKlC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAY,EAAE,QAAiB,EAAE,EAAE;EAC5D,OAAO,CACL,8BACM,KAAK,IACT,KAAK,kCACA,CAAC,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAC/F,CAAC,aAAa,CAAC,EAAE,IAAI,QAGtB,QAAQ,CACF,CACV,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { h } from '@stencil/core';\nimport { JSXBase, VNode } from '@stencil/core/internal';\n\ninterface Props extends Partial<JSXBase.ButtonHTMLAttributes<HTMLButtonElement>> {}\n\nexport const RevoButton = (props: Props, children: VNode[]) => {\n return (\n <button\n {...props}\n class={{\n ...(typeof props.class === 'object' ? props.class : props.class ? { [props.class]: true } : ''),\n ['revo-button']: true,\n }}\n >\n {children}\n </button>\n );\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"revogr-clipboard.js","sourceRoot":"","sources":["../../../src/components/clipboard/revogr-clipboard.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAgB,MAAM,eAAe,CAAC;AAI/E,MAAM,OAAO,SAAS;EAGqB,OAAO,CAAC,CAAiB;IAChE,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACzF,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACxE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC,CAAC,cAAc,EAAE,CAAC;EACrB,CAAC;EACuC,WAAW,CAAC,CAAiB;IACnE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC,CAAC,cAAc,EAAE,CAAC;EACrB,CAAC;EACS,KAAK,CAAC,MAAM,CAAC,CAAe,EAAE,IAA8B;IACpE,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;EAC7D,CAAC;EAED,UAAU,CAAC,IAA6B;IACtC,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACxD,CAAC;EAEO,SAAS,CAAC,IAAY;IAC5B,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACtC,KAAK,IAAI,CAAC,IAAI,IAAI,EAAE;MAClB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;KAClC;IACD,OAAO,MAAM,CAAC;EAChB,CAAC;EAEO,SAAS,CAAC,IAAY;IAC5B,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC3F,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;MAC1C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;KAClE;IACD,OAAO,MAAM,CAAC;EAChB,CAAC;EAEO,OAAO,CAAC,CAAiB;IAC/B,OAAO,CAAC,CAAC,aAAa,KAAM,MAA6D,aAA7D,MAAM,uBAAN,MAAM,CAAyD,aAAa,CAAA,CAAC;EAC3G,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Listen, Method, Event, EventEmitter } from '@stencil/core';\nimport { RevoGrid } from '../../interfaces';\n\n@Component({ tag: 'revogr-clipboard' })\nexport class Clipboard {\n @Event({ bubbles: false }) copyRegion: EventEmitter<DataTransfer>;\n @Event({ bubbles: false }) pasteRegion: EventEmitter<string[][]>;\n @Listen('paste', { target: 'document' }) onPaste(e: ClipboardEvent) {\n const clipboardData = this.getData(e);\n const isHTML = clipboardData.types.indexOf('text/html') > -1;\n const data = isHTML ? clipboardData.getData('text/html') : clipboardData.getData('text');\n const parsedData = isHTML ? this.htmlParse(data) : this.textParse(data);\n this.pasteRegion.emit(parsedData);\n e.preventDefault();\n }\n @Listen('copy', { target: 'document' }) copyStarted(e: ClipboardEvent) {\n this.copyRegion.emit(this.getData(e));\n e.preventDefault();\n }\n @Method() async doCopy(e: DataTransfer, data?: RevoGrid.DataFormat[][]) {\n e.setData('text/plain', data ? this.parserCopy(data) : '');\n }\n\n parserCopy(data: RevoGrid.DataFormat[][]) {\n return data.map(rgRow => rgRow.join('\\t')).join('\\n');\n }\n\n private textParse(data: string) {\n const result: string[][] = [];\n const rows = data.split(/\\r\\n|\\n|\\r/);\n for (let y in rows) {\n result.push(rows[y].split('\\t'));\n }\n return result;\n }\n\n private htmlParse(data: string) {\n const result: string[][] = [];\n const table = document.createRange().createContextualFragment(data).querySelector('table');\n for (const rgRow of Array.from(table.rows)) {\n result.push(Array.from(rgRow.cells).map(cell => cell.innerText));\n }\n return result;\n }\n\n private getData(e: ClipboardEvent) {\n return e.clipboardData || ((window as unknown) as { clipboardData: DataTransfer | null })?.clipboardData;\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"cellRenderer.js","sourceRoot":"","sources":["../../../src/components/data/cellRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAS,MAAM,eAAe,CAAC;AAEzC,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAQtE,MAAM,YAAY,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAS,EAAE,EAAE;EAC9D,MAAM,GAAG,GAAuB,EAAE,CAAC;EACnC,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;IACzE,IAAI,OAAO,EAAE;MACX,GAAG,CAAC,IAAI,CACN,YAAM,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QAC5D,YAAM,KAAK,EAAE,eAAe,GAAI,CAC3B,CACR,CAAC;KACH;SAAM;MACL,GAAG,CAAC,IAAI,CAAC,YAAM,KAAK,EAAE,eAAe,GAAI,CAAC,CAAC;KAC5C;GACF;EACD,GAAG,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;EAC9D,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC;AAE5B,SAAS,gBAAgB,CAAC,OAAyB,EAAE,KAAqC;EACxF,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;IACjC,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC;GACvB;EACD,OAAO,CAAC,CAAC,OAAO,CAAC;AACnB,CAAC","sourcesContent":["import { h, VNode } from '@stencil/core';\nimport { RevoGrid } from '../../interfaces';\nimport ColumnService from './columnService';\nimport { DRAG_ICON_CLASS, DRAGGABLE_CLASS } from '../../utils/consts';\n\ntype Props = {\n model: RevoGrid.ColumnDataSchemaModel;\n canDrag?: boolean;\n onDragStart?(e: MouseEvent): void;\n};\n\nconst CellRenderer = ({ model, canDrag, onDragStart }: Props) => {\n const els: (VNode | string)[] = [];\n if (model.column.rowDrag && isRowDragService(model.column.rowDrag, model)) {\n if (canDrag) {\n els.push(\n <span class={DRAGGABLE_CLASS} onMouseDown={e => onDragStart(e)}>\n <span class={DRAG_ICON_CLASS} />\n </span>,\n );\n } else {\n els.push(<span class={DRAGGABLE_CLASS} />);\n }\n }\n els.push(`${ColumnService.getData(model.model[model.prop])}`);\n return els;\n};\n\nexport default CellRenderer;\n\nfunction isRowDragService(rowDrag: RevoGrid.RowDrag, model: RevoGrid.ColumnDataSchemaModel): boolean {\n if (typeof rowDrag === 'function') {\n return rowDrag(model);\n }\n return !!rowDrag;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"columnService.js","sourceRoot":"","sources":["../../../src/components/data/columnService.ts"],"names":[],"mappings":"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","sourcesContent":["import { h, VNode } from '@stencil/core';\nimport { DataSourceState, getSourceItem, getVisibleSourceItem, setSourceByVirtualIndex } from '../../store/dataSource/data.store';\nimport { CELL_CLASS, DISABLED_CLASS } from '../../utils/consts';\nimport { Edition, Observable, RevoGrid, Selection } from '../../interfaces';\nimport { getRange } from '../../store/selection/selection.helpers';\n\nimport BeforeSaveDataDetails = Edition.BeforeSaveDataDetails;\nimport ColumnDataSchemaModel = RevoGrid.ColumnDataSchemaModel;\nimport ColumnProp = RevoGrid.ColumnProp;\nimport DataType = RevoGrid.DataType;\nimport { isGroupingColumn } from '../../plugins/groupingRow/grouping.service';\n\nexport interface ColumnServiceI {\n columns: RevoGrid.ColumnRegular[];\n customRenderer(r: number, c: number, model: ColumnDataSchemaModel): VNode | string | void;\n isReadOnly(r: number, c: number): boolean;\n getCellData(r: number, c: number): string;\n}\n\nexport type ColumnSource = Observable<DataSourceState<RevoGrid.ColumnRegular, RevoGrid.DimensionCols>>;\nexport type RowSource = Observable<DataSourceState<DataType, RevoGrid.DimensionRows>>;\n\nexport type ColumnStores = {\n [T in RevoGrid.DimensionCols]: ColumnSource;\n};\nexport type RowStores = {\n [T in RevoGrid.DimensionRows]: RowSource;\n};\n\nexport default class ColumnService implements ColumnServiceI {\n private unsubscribe: { (): void }[] = [];\n get columns(): RevoGrid.ColumnRegular[] {\n return getVisibleSourceItem(this.source);\n }\n\n hasGrouping = false;\n\n constructor(private dataStore: RowSource, private source: ColumnSource) {\n this.unsubscribe.push(source.onChange('source', s => this.checkGrouping(s)));\n this.checkGrouping(source.get('source'));\n }\n\n private checkGrouping(cols: RevoGrid.ColumnRegular[]) {\n for (let rgCol of cols) {\n if (isGroupingColumn(rgCol)) {\n this.hasGrouping = true;\n return;\n }\n this.hasGrouping = false;\n }\n }\n\n isReadOnly(r: number, c: number): boolean {\n const readOnly: RevoGrid.ReadOnlyFormat = this.columns[c]?.readonly;\n if (typeof readOnly === 'function') {\n const data = this.rowDataModel(r, c);\n return readOnly(data);\n }\n return readOnly;\n }\n\n static doMerge(existing: RevoGrid.CellProps, extra: RevoGrid.CellProps) {\n let props: RevoGrid.CellProps = { ...extra, ...existing };\n // extend existing props\n if (extra.class) {\n if (typeof extra.class === 'object' && typeof props.class === 'object') {\n props.class = { ...extra.class, ...props.class };\n } else if (typeof extra.class === 'string' && typeof props.class === 'object') {\n props.class[extra.class] = true;\n } else if (typeof props.class === 'string') {\n props.class += ' ' + extra.class;\n }\n }\n if (extra.style) {\n props.style = { ...extra.style, ...props.style };\n }\n return props;\n }\n\n mergeProperties(r: number, c: number, defaultProps: RevoGrid.CellProps): RevoGrid.CellProps {\n const cellClass: { [key: string]: boolean } = {\n [CELL_CLASS]: true,\n [DISABLED_CLASS]: this.isReadOnly(r, c),\n };\n let props: RevoGrid.CellProps = {\n ...defaultProps,\n class: cellClass,\n };\n const extraPropsFunc = this.columns[c]?.cellProperties;\n if (extraPropsFunc) {\n const data = this.rowDataModel(r, c);\n const extra = extraPropsFunc(data);\n if (!extra) {\n return props;\n }\n return ColumnService.doMerge(props, extra);\n }\n return props;\n }\n\n customRenderer(_r: number, c: number, model: ColumnDataSchemaModel): VNode | string | void {\n const tpl = this.columns[c]?.cellTemplate;\n if (tpl) {\n return tpl((h as unknown) as RevoGrid.HyperFunc<VNode>, model);\n }\n return;\n }\n\n getRowClass(r: number, prop: string): string {\n const model: DataType = getSourceItem(this.dataStore, r) || {};\n return model[prop] || '';\n }\n\n getCellData(r: number, c: number): string {\n const data = this.rowDataModel(r, c);\n return ColumnService.getData(data.model[data.prop as number]);\n }\n\n getSaveData(rowIndex: number, c: number, val?: string): BeforeSaveDataDetails {\n if (typeof val === 'undefined') {\n val = this.getCellData(rowIndex, c);\n }\n const data = this.rowDataModel(rowIndex, c);\n return {\n prop: data.prop,\n rowIndex,\n val,\n model: data.model,\n type: this.dataStore.get('type'),\n };\n }\n\n getCellEditor(_r: number, c: number, editors: Edition.Editors): Edition.EditorCtr | undefined {\n const editor = this.columns[c]?.editor;\n if (!editor) {\n return undefined;\n }\n // reference\n if (typeof editor === 'string') {\n return editors[editor];\n }\n return editor;\n }\n\n rowDataModel(rowIndex: number, c: number): ColumnDataSchemaModel {\n const column = this.columns[c];\n const prop: ColumnProp | undefined = column?.prop;\n const model = getSourceItem(this.dataStore, rowIndex) || {};\n return {\n prop,\n model,\n data: this.dataStore.get('source'),\n column,\n rowIndex,\n };\n }\n\n getRangeData(d: Selection.ChangedRange): RevoGrid.DataLookup {\n const changed: RevoGrid.DataLookup = {};\n\n // get original length sizes\n const copyColLength = d.oldProps.length;\n const copyFrom = this.copyRangeArray(d.oldRange, d.oldProps, this.dataStore);\n const copyRowLength = copyFrom.length;\n\n // rows\n for (let rowIndex = d.newRange.y, i = 0; rowIndex < d.newRange.y1 + 1; rowIndex++, i++) {\n // copy original data link\n const copyRow = copyFrom[i % copyRowLength];\n\n // columns\n for (let colIndex = d.newRange.x, j = 0; colIndex < d.newRange.x1 + 1; colIndex++, j++) {\n // check if old range area\n if (rowIndex >= d.oldRange.y && rowIndex <= d.oldRange.y1 && colIndex >= d.oldRange.x && colIndex <= d.oldRange.x1) {\n continue;\n }\n\n const p = this.columns[colIndex].prop;\n const currentCol = j % copyColLength;\n\n /** if can write */\n if (!this.isReadOnly(rowIndex, colIndex)) {\n /** to show before save */\n if (!changed[rowIndex]) {\n changed[rowIndex] = {};\n }\n changed[rowIndex][p] = copyRow[currentCol];\n }\n }\n }\n return changed;\n }\n\n getTransformedDataToApply(\n start: Selection.Cell,\n data: RevoGrid.DataFormat[][],\n ): {\n changed: RevoGrid.DataLookup;\n range: Selection.RangeArea;\n } {\n const changed: RevoGrid.DataLookup = {};\n const copyRowLength = data.length;\n const colLength = this.columns.length;\n const rowLength = this.dataStore.get('items').length;\n // rows\n let rowIndex = start.y;\n let maxCol = 0;\n for (let i = 0; rowIndex < rowLength && i < copyRowLength; rowIndex++, i++) {\n // copy original data link\n const copyRow = data[i % copyRowLength];\n const copyColLength = copyRow?.length || 0;\n // columns\n let colIndex = start.x;\n for (let j = 0; colIndex < colLength && j < copyColLength; colIndex++, j++) {\n const p = this.columns[colIndex].prop;\n const currentCol = j % colLength;\n\n /** if can write */\n if (!this.isReadOnly(rowIndex, colIndex)) {\n /** to show before save */\n if (!changed[rowIndex]) {\n changed[rowIndex] = {};\n }\n changed[rowIndex][p] = copyRow[currentCol];\n }\n }\n maxCol = Math.max(maxCol, colIndex - 1);\n }\n const range = getRange(start, {\n y: rowIndex - 1,\n x: maxCol,\n });\n return {\n changed,\n range,\n };\n }\n\n applyRangeData(data: RevoGrid.DataLookup) {\n const items: Record<number, DataType> = {};\n for (let rowIndex in data) {\n const oldModel = (items[rowIndex] = getSourceItem(this.dataStore, parseInt(rowIndex, 10)));\n for (let prop in data[rowIndex]) {\n oldModel[prop] = data[rowIndex][prop];\n }\n }\n setSourceByVirtualIndex(this.dataStore, items);\n }\n\n getRangeStaticData(d: Selection.RangeArea, value: RevoGrid.DataFormat): RevoGrid.DataLookup {\n const changed: RevoGrid.DataLookup = {};\n\n // rows\n for (let rowIndex = d.y, i = 0; rowIndex < d.y1 + 1; rowIndex++, i++) {\n // columns\n for (let colIndex = d.x, j = 0; colIndex < d.x1 + 1; colIndex++, j++) {\n const p = this.columns[colIndex].prop;\n\n /** if can write */\n if (!this.isReadOnly(rowIndex, colIndex)) {\n /** to show before save */\n if (!changed[rowIndex]) {\n changed[rowIndex] = {};\n }\n changed[rowIndex][p] = value;\n }\n }\n }\n return changed;\n }\n\n copyRangeArray(\n range: Selection.RangeArea,\n rangeProps: RevoGrid.ColumnProp[],\n store: Observable<DataSourceState<RevoGrid.DataType, RevoGrid.DimensionRows>>,\n ): RevoGrid.DataFormat[][] {\n const toCopy: RevoGrid.DataFormat[][] = [];\n for (let i = range.y; i < range.y1 + 1; i++) {\n const rgRow: RevoGrid.DataFormat[] = [];\n for (let prop of rangeProps) {\n const item = getSourceItem(store, i);\n rgRow.push(item[prop]);\n }\n toCopy.push(rgRow);\n }\n return toCopy;\n }\n\n static getData(val?: any): string {\n if (typeof val === 'undefined' || val === null) {\n return '';\n }\n return val.toString();\n }\n\n destroy() {\n this.unsubscribe.forEach(f => f());\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"revogr-data.js","sourceRoot":"","sources":["../../../src/components/data/revogr-data.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Event, Prop, VNode, EventEmitter, h } from '@stencil/core';\nimport { HTMLStencilElement, Watch } from '@stencil/core/internal';\n\nimport ColumnService, { ColumnSource, RowSource } from './columnService';\nimport { DATA_COL, DATA_ROW } from '../../utils/consts';\n\nimport { getSourceItem } from '../../store/dataSource/data.store';\nimport { Observable, RevoGrid, Selection } from '../../interfaces';\nimport CellRenderer from './cellRenderer';\nimport RowRenderer, { PADDING_DEPTH } from './rowRenderer';\nimport GroupingRowRenderer from '../../plugins/groupingRow/grouping.row.renderer';\nimport { isGrouping } from '../../plugins/groupingRow/grouping.service';\n\n@Component({\n tag: 'revogr-data',\n styleUrl: 'revogr-data-style.scss',\n})\nexport class RevogrData {\n private columnService: ColumnService;\n\n @Element() element!: HTMLStencilElement;\n\n @Prop() readonly: boolean;\n @Prop() range: boolean;\n @Prop() canDrag: boolean;\n\n @Prop() rowClass: string;\n @Prop() rowSelectionStore: Observable<Selection.SelectionStoreState>;\n @Prop() viewportRow: Observable<RevoGrid.ViewportState>;\n @Prop() viewportCol: Observable<RevoGrid.ViewportState>;\n\n @Prop() dimensionRow: Observable<RevoGrid.DimensionSettingsState>;\n\n /** Static stores, not expected to change during component lifetime */\n @Prop() colData: ColumnSource;\n @Prop() dataStore: RowSource;\n\n @Event() dragStartCell: EventEmitter<MouseEvent>;\n\n @Watch('dataStore')\n @Watch('colData')\n onStoreChange() {\n this.columnService?.destroy();\n this.columnService = new ColumnService(this.dataStore, this.colData);\n }\n\n connectedCallback() {\n this.onStoreChange();\n }\n\n disconnectedCallback() {\n this.columnService?.destroy();\n }\n\n render() {\n const rows = this.viewportRow.get('items');\n const cols = this.viewportCol.get('items');\n if (!this.columnService.columns.length || !rows.length || !cols.length) {\n return '';\n }\n const range = this.rowSelectionStore?.get('range');\n const rowsEls: VNode[] = [];\n\n const depth = this.dataStore.get('groupingDepth');\n const groupingCustomRenderer = this.dataStore.get('groupingCustomRenderer');\n for (let rgRow of rows) {\n const dataRow = getSourceItem(this.dataStore, rgRow.itemIndex);\n /** grouping */\n if (isGrouping(dataRow)) {\n rowsEls.push(<GroupingRowRenderer {...rgRow} model={dataRow} groupingCustomRenderer={groupingCustomRenderer} hasExpand={this.columnService.hasGrouping} />);\n continue;\n }\n /** grouping end */\n\n const cells: (VNode | string | void)[] = [];\n let rowClass = this.rowClass ? this.columnService.getRowClass(rgRow.itemIndex, this.rowClass) : '';\n if (range && rgRow.itemIndex >= range.y && rgRow.itemIndex <= range.y1) {\n rowClass += ' focused-rgRow';\n }\n for (let rgCol of cols) {\n cells.push(this.getCellRenderer(rgRow, rgCol, this.canDrag, /** grouping apply*/ this.columnService.hasGrouping ? depth : 0));\n }\n rowsEls.push(\n <RowRenderer rowClass={rowClass} size={rgRow.size} start={rgRow.start}>\n {cells}\n </RowRenderer>,\n );\n }\n return rowsEls;\n }\n\n private getCellRenderer(rgRow: RevoGrid.VirtualPositionItem, rgCol: RevoGrid.VirtualPositionItem, draggable = false, depth = 0) {\n const model = this.columnService.rowDataModel(rgRow.itemIndex, rgCol.itemIndex);\n const defaultProps: RevoGrid.CellProps = {\n [DATA_COL]: rgCol.itemIndex,\n [DATA_ROW]: rgRow.itemIndex,\n style: {\n width: `${rgCol.size}px`,\n transform: `translateX(${rgCol.start}px)`,\n },\n };\n if (depth && !rgCol.itemIndex) {\n defaultProps.style.paddingLeft = `${PADDING_DEPTH * depth}px`;\n }\n const props = this.columnService.mergeProperties(rgRow.itemIndex, rgCol.itemIndex, defaultProps);\n const custom = this.columnService.customRenderer(rgRow.itemIndex, rgCol.itemIndex, model);\n\n // if custom render\n if (typeof custom !== 'undefined') {\n return <div {...props}>{custom}</div>;\n }\n\n // something is wrong with data\n if (!model.column) {\n console.error('Investigate column problem');\n return;\n }\n\n // if regular render\n return (\n <div {...props}>\n <CellRenderer model={model} canDrag={draggable} onDragStart={e => this.dragStartCell.emit(e)} />\n </div>\n );\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"rowRenderer.js","sourceRoot":"","sources":["../../../src/components/data/rowRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAS,MAAM,eAAe,CAAC;AAUzC,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC;AAEhC,MAAM,WAAW,GAAG,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAY,EAAE,KAAc,EAAE,EAAE;EACxF,OAAO,CACL,WACE,KAAK,EAAE,SAAS,QAAQ,IAAI,EAAE,EAAE,EAChC,KAAK,kCACA,KAAK,KACR,MAAM,EAAE,GAAG,IAAI,IAAI,EACnB,SAAS,EAAE,cAAc,KAAK,KAAK,EACnC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,aAAa,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,OAG9D,KAAK,CACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,WAAW,CAAC","sourcesContent":["import { h, VNode } from '@stencil/core';\nimport { JSXBase } from '@stencil/core/internal';\n\nexport interface RowProps extends JSXBase.HTMLAttributes {\n size: number;\n start: number;\n rowClass?: string;\n depth?: number;\n}\n\nexport const PADDING_DEPTH = 10;\n\nconst RowRenderer = ({ rowClass, size, start, style, depth }: RowProps, cells: VNode[]) => {\n return (\n <div\n class={`rgRow ${rowClass || ''}`}\n style={{\n ...style,\n height: `${size}px`,\n transform: `translateY(${start}px)`,\n paddingLeft: depth ? `${PADDING_DEPTH * depth}px` : undefined,\n }}\n >\n {cells}\n </div>\n );\n};\n\nexport default RowRenderer;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"headerCellRenderer.js","sourceRoot":"","sources":["../../../src/components/header/headerCellRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAS,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,aAAa,MAAM,uBAAuB,CAAC;AAOlD,MAAM,eAAe,GAAG,cAAc,CAAC;AAEvC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,EAAS,EAAE,QAAiB,EAAS,EAAE;EACrF,IAAI,WAAW,GAA6B,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,KAAI,EAAE,CAAC;EAC7D,IAAI,SAAS,GAAG,KAAK,CAAC;EACtB,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,cAAc,EAAE;IACxB,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;GAC5C;EACD,IAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,gBAAgB,EAAE;IAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;MACtC,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;KACjD;GACF;EACD,OAAO,CACL,EAAC,gBAAgB,oBAAK,SAAS,IAAE,WAAW,EAAE,CAAC,CAAa,EAAE,EAAE;MAC9D,QAAQ,CAAC,CAAC,CAAC,aAA4B,EAAE,eAAe,EAAE;QACxD,IAAI;QACJ,KAAK,EAAE,CAAC;OACT,CAAC,CAAC;IACJ,CAAC;IACA,WAAK,KAAK,EAAC,gBAAgB,IAAE,WAAW,CAAO;IAC9C,QAAQ,CACQ,CACpB,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { h, VNode } from '@stencil/core';\nimport { RevoGrid } from '../../interfaces';\nimport { dispatch } from '../../plugins/dispatcher';\nimport { ResizableElement } from '../../services/resizable.directive';\nimport ColumnService from '../data/columnService';\n\ntype Props = {\n data?: RevoGrid.ColumnRegular;\n props: RevoGrid.CellProps;\n};\n\nconst ON_COLUMN_CLICK = 'column-click';\n\nexport const HeaderCellRenderer = ({ data, props }: Props, children: VNode[]): VNode => {\n let colTemplate: VNode | VNode[] | string = data?.name || '';\n let cellProps = props;\n if (data?.columnTemplate) {\n colTemplate = data.columnTemplate(h, data);\n }\n if (data?.columnProperties) {\n const extra = data.columnProperties(data);\n if (extra && typeof extra === 'object') {\n cellProps = ColumnService.doMerge(props, extra);\n }\n }\n return (\n <ResizableElement {...cellProps} onMouseDown={(e: MouseEvent) => {\n dispatch(e.currentTarget as HTMLElement, ON_COLUMN_CLICK, {\n data,\n event: e,\n });\n }}>\n <div class=\"header-content\">{colTemplate}</div>\n {children}\n </ResizableElement>\n );\n};\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"headerRenderer.js","sourceRoot":"","sources":["../../../src/components/header/headerRenderer.tsx"],"names":[],"mappings":"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","sourcesContent":["import { h, VNode } from '@stencil/core';\nimport { RevoGrid, Selection } from '../../interfaces';\nimport { FilterButton } from '../../plugins/filter/filter.button';\nimport { SortingSign } from '../../plugins/sorting/sorting.sign';\nimport { ResizeEvent } from '../../services/resizable.directive';\nimport { DATA_COL, FOCUS_CLASS, HEADER_CLASS, HEADER_SORTABLE_CLASS, MIN_COL_SIZE } from '../../utils/consts';\nimport { HeaderCellRenderer } from './headerCellRenderer';\n\ntype Props = {\n column: RevoGrid.VirtualPositionItem;\n data?: RevoGrid.ColumnRegular;\n range?: Selection.RangeArea;\n canResize?: boolean;\n canFilter?: boolean;\n onResize?(e: ResizeEvent): void;\n onClick?(data: RevoGrid.InitialHeaderClick): void;\n onDoubleClick?(data: RevoGrid.InitialHeaderClick): void;\n};\n\nconst HeaderRenderer = (p: Props): VNode => {\n const cellClass: { [key: string]: boolean } = {\n [HEADER_CLASS]: true,\n [HEADER_SORTABLE_CLASS]: !!p.data?.sortable,\n };\n if (p.data?.order) {\n cellClass[p.data.order] = true;\n }\n const dataProps = {\n [DATA_COL]: p.column.itemIndex,\n canResize: p.canResize,\n minWidth: p.data?.minSize || MIN_COL_SIZE,\n maxWidth: p.data?.maxSize,\n active: ['r'],\n class: cellClass,\n style: { width: `${p.column.size}px`, transform: `translateX(${p.column.start}px)` },\n onResize: p.onResize,\n onDoubleClick(originalEvent: MouseEvent) {\n p.onDoubleClick({ column: p.data, index: p.column.itemIndex, originalEvent });\n },\n onClick(originalEvent: MouseEvent) {\n if (originalEvent.defaultPrevented || !p.onClick) {\n return;\n }\n p.onClick({ column: p.data, index: p.column.itemIndex, originalEvent });\n },\n };\n if (p.range) {\n if (p.column.itemIndex >= p.range.x && p.column.itemIndex <= p.range.x1) {\n if (typeof dataProps.class === 'object') {\n dataProps.class[FOCUS_CLASS] = true;\n }\n }\n }\n\n return (\n <HeaderCellRenderer data={p.data} props={dataProps}>\n {p.data?.order ? <SortingSign column={p.data} /> : ''}\n {p.canFilter && p.data?.filter !== false ? <FilterButton column={p.data} /> : ''}\n </HeaderCellRenderer>\n );\n};\n\nexport default HeaderRenderer;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"revogr-header.js","sourceRoot":"","sources":["../../../src/components/header/revogr-header.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Event, EventEmitter, h, Prop } from '@stencil/core';\nimport { HTMLStencilElement, VNode } from '@stencil/core/internal';\nimport keyBy from 'lodash/keyBy';\n\nimport { HEADER_ACTUAL_ROW_CLASS, HEADER_ROW_CLASS } from '../../utils/consts';\nimport { Observable, RevoGrid, Selection } from '../../interfaces';\nimport { Groups } from '../../store/dataSource/data.store';\nimport HeaderRenderer from './headerRenderer';\nimport ColumnGroupsRenderer from '../../plugins/groupingColumn/columnGroupsRenderer';\n\n@Component({\n tag: 'revogr-header',\n styleUrl: 'revogr-header-style.scss',\n})\nexport class RevogrHeaderComponent {\n @Element() element!: HTMLStencilElement;\n @Prop() viewportCol: Observable<RevoGrid.ViewportState>;\n @Prop() dimensionCol: Observable<RevoGrid.DimensionSettingsState>;\n @Prop() selectionStore: Observable<Selection.SelectionStoreState>;\n\n @Prop() parent: string = '';\n @Prop() groups: Groups;\n @Prop() groupingDepth: number = 0;\n @Prop() canResize: boolean;\n @Prop() colData: RevoGrid.ColumnRegular[];\n @Prop() columnFilter: boolean;\n\n @Event() initialHeaderClick: EventEmitter<RevoGrid.InitialHeaderClick>;\n @Event() headerresize: EventEmitter<RevoGrid.ViewSettingSizeProp>;\n @Event() headerdblClick: EventEmitter<RevoGrid.InitialHeaderClick>;\n\n private onResize({ width }: { width?: number }, index: number): void {\n this.headerresize.emit({ [index]: width || 0 });\n }\n\n private onResizeGroup(changedX: number, startIndex: number, endIndex: number): void {\n const sizes: RevoGrid.ViewSettingSizeProp = {};\n const cols = keyBy(this.viewportCol.get('items'), 'itemIndex');\n const change = changedX / (endIndex - startIndex + 1);\n for (let i = startIndex; i <= endIndex; i++) {\n const item = cols[i];\n if (item) {\n sizes[i] = item.size + change;\n }\n }\n this.headerresize.emit(sizes);\n }\n\n render() {\n const cols = this.viewportCol.get('items');\n const range = this.selectionStore?.get('range');\n const cells: VNode[] = [];\n const visibleProps: { [prop: string]: number } = {};\n\n // render header columns\n for (let rgCol of cols) {\n const colData = this.colData[rgCol.itemIndex];\n cells.push(\n <HeaderRenderer\n range={range}\n column={rgCol}\n data={colData}\n canFilter={!!this.columnFilter}\n canResize={this.canResize}\n onResize={e => this.onResize(e, rgCol.itemIndex)}\n onDoubleClick={e => this.headerdblClick.emit(e)}\n onClick={e => this.initialHeaderClick.emit(e)}\n />,\n );\n visibleProps[colData?.prop] = rgCol.itemIndex;\n }\n\n return [\n <div class=\"group-rgRow\">\n <ColumnGroupsRenderer\n canResize={this.canResize}\n visibleProps={visibleProps}\n groups={this.groups}\n dimensionCol={this.dimensionCol.state}\n depth={this.groupingDepth}\n onResize={(changedX, startIndex, endIndex) => this.onResizeGroup(changedX, startIndex, endIndex)}\n />\n </div>,\n <div class={`${HEADER_ROW_CLASS} ${HEADER_ACTUAL_ROW_CLASS}`}>{cells}</div>,\n ];\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"orderRenderer.js","sourceRoot":"","sources":["../../../src/components/order/orderRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAS,MAAM,eAAe,CAAC;AAKzC;;GAEG;AACH,MAAM,OAAO,cAAc;EAA3B;IACU,YAAO,GAAW,CAAC,CAAC;EAoC9B,CAAC;EA9BC,KAAK,CAAC,MAAmB,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAmE;;IAC9G,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;IAC/C,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;IACnB,IAAI,IAAI,CAAC,IAAI,EAAE;MACb,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;KAC5B;IACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACf,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IACzC,MAAA,IAAI,CAAC,EAAE,0CAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;EACtC,CAAC;EACD,GAAG;;IACD,MAAA,IAAI,CAAC,EAAE,0CAAE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;EACnC,CAAC;EACD,IAAI,CAAC,GAA0B;IAC7B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;EAC3C,CAAC;EACD,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAkB;IAC9B,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;MACnB,OAAO;KACR;IACD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACrC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC;EACtC,CAAC;EAEO,WAAW,CAAC,CAAS;IAC3B,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;MACf,OAAO;KACR;IACD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC;EACpD,CAAC;CACF;AAED,MAAM,aAAa,GAAG,CAAC,EAAE,GAAG,EAAS,EAAW,EAAE;EAChD,MAAM,OAAO,GAAG,IAAI,cAAc,EAAE,CAAC;EACrC,GAAG,CAAC,OAAO,CAAC,CAAC;EACb,OAAO,CACL,WAAK,KAAK,EAAC,0BAA0B,EAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC;IAC9D,WAAK,KAAK,EAAC,WAAW,EAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,GAAG,EAAE,CAAC;MACxD,YAAM,KAAK,EAAC,eAAe,GAAG;MAC9B,YAAM,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAI,CAClC;IACN,WAAK,KAAK,EAAC,eAAe,EAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,GAAI,CACxD,CACP,CAAC;AACJ,CAAC,CAAC;AACF,eAAe,aAAa,CAAC","sourcesContent":["import { h, VNode } from '@stencil/core';\nimport { RevoGrid, Selection } from '../../interfaces';\n\ntype Props = { ref: { (e: OrdererService): void } };\n\n/**\n * Draw drag\n */\nexport class OrdererService {\n private parentY: number = 0;\n el!: HTMLElement;\n rgRow!: HTMLElement;\n text!: HTMLElement;\n draggable!: HTMLElement;\n\n start(parent: HTMLElement, { pos, text, event }: { pos: RevoGrid.PositionItem; text: string; event: MouseEvent }): void {\n const { top } = parent.getBoundingClientRect();\n this.parentY = top;\n if (this.text) {\n this.text.innerText = text;\n }\n this.move(pos);\n this.moveTip({ x: event.x, y: event.y });\n this.el?.classList.remove('hidden');\n }\n end(): void {\n this.el?.classList.add('hidden');\n }\n move(pos: RevoGrid.PositionItem): void {\n this.moveElement(pos.end - this.parentY);\n }\n moveTip({ x, y }: Selection.Cell): void {\n if (!this.draggable) {\n return;\n }\n this.draggable.style.left = `${x}px`;\n this.draggable.style.top = `${y}px`;\n }\n\n private moveElement(y: number): void {\n if (!this.rgRow) {\n return;\n }\n this.rgRow.style.transform = `translateY(${y}px)`;\n }\n}\n\nconst OrderRenderer = ({ ref }: Props): VNode[] => {\n const service = new OrdererService();\n ref(service);\n return (\n <div class=\"draggable-wrapper hidden\" ref={e => (service.el = e)}>\n <div class=\"draggable\" ref={el => (service.draggable = el)}>\n <span class=\"revo-alt-icon\" />\n <span ref={e => (service.text = e)} />\n </div>\n <div class=\"drag-position\" ref={e => (service.rgRow = e)} />\n </div>\n );\n};\nexport default OrderRenderer;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"revogr-order-editor.js","sourceRoot":"","sources":["../../../src/components/order/revogr-order-editor.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Method, Event, EventEmitter, Prop, Listen } from '@stencil/core';\nimport debounce from 'lodash/debounce';\n\nimport { Observable, RevoGrid, Selection } from '../../interfaces';\nimport { DataSourceState, setItems } from '../../store/dataSource/data.store';\nimport { DRAGG_TEXT } from '../../utils/consts';\nimport RowOrderService from './rowOrderService';\n\n@Component({ tag: 'revogr-order-editor' })\nexport class OrderEditor {\n private rowOrderService: RowOrderService;\n private moveFunc: ((e: Selection.Cell) => void) | null;\n private rowMoveFunc = debounce((y: number) => {\n const rgRow = this.rowOrderService.move(y, this.getData());\n if (rgRow !== null) {\n this.internalRowDrag.emit(rgRow);\n }\n }, 5);\n\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n @Prop() parent: HTMLElement;\n @Prop() dimensionRow: Observable<RevoGrid.DimensionSettingsState>;\n @Prop() dimensionCol: Observable<RevoGrid.DimensionSettingsState>;\n\n /** Static stores, not expected to change during component lifetime */\n @Prop() dataStore: Observable<DataSourceState<RevoGrid.DataType, RevoGrid.DimensionRows>>;\n\n // --------------------------------------------------------------------------\n //\n // Events\n //\n // --------------------------------------------------------------------------\n\n /** Row drag started */\n @Event({ cancelable: true }) internalRowDragStart: EventEmitter<{\n cell: Selection.Cell;\n text: string;\n pos: RevoGrid.PositionItem;\n event: MouseEvent;\n }>;\n\n /** Row drag ended */\n @Event({ cancelable: true }) internalRowDragEnd: EventEmitter;\n\n /** Row move */\n @Event({ cancelable: true }) internalRowDrag: EventEmitter<RevoGrid.PositionItem>;\n\n /** Row mouse move */\n @Event({ cancelable: true }) internalRowMouseMove: EventEmitter<Selection.Cell>;\n\n /** Row dragged, new range ready to be applied */\n @Event({ cancelable: true }) initialRowDropped: EventEmitter<{ from: number; to: number }>;\n\n // --------------------------------------------------------------------------\n //\n // Listeners\n //\n // --------------------------------------------------------------------------\n\n @Listen('mouseleave', { target: 'document' })\n onMouseOut(): void {\n this.clearOrder();\n }\n\n /** Action finished inside of the document */\n @Listen('mouseup', { target: 'document' })\n onMouseUp(e: MouseEvent): void {\n this.endOrder(e);\n }\n\n // --------------------------------------------------------------------------\n //\n // Methods\n //\n // --------------------------------------------------------------------------\n\n @Method() async dragStart(e: MouseEvent): Promise<void> {\n e.preventDefault();\n\n // extra check if previous ended\n if (this.moveFunc) {\n this.clearOrder();\n }\n\n const data = this.getData();\n const cell = this.rowOrderService.startOrder(e, data);\n const pos = this.rowOrderService.getRow(e.y, data);\n const dragStartEvent = this.internalRowDragStart.emit({ cell, text: DRAGG_TEXT, pos, event: e });\n if (dragStartEvent.defaultPrevented) {\n return;\n }\n\n this.moveFunc = (e: MouseEvent) => this.move(e);\n document.addEventListener('mousemove', this.moveFunc);\n }\n\n @Method() async endOrder(e: MouseEvent): Promise<void> {\n this.rowOrderService.endOrder(e, this.getData());\n this.clearOrder();\n }\n\n @Method() async clearOrder(): Promise<void> {\n this.rowOrderService.clear();\n document.removeEventListener('mousemove', this.moveFunc);\n this.moveFunc = null;\n this.internalRowDragEnd.emit();\n }\n\n // --------------------------------------------------------------------------\n //\n // Component methods\n //\n // --------------------------------------------------------------------------\n\n move({ x, y }: { x: number; y: number }): void {\n this.internalRowMouseMove.emit({ x, y });\n this.rowMoveFunc(y);\n }\n\n connectedCallback(): void {\n this.rowOrderService = new RowOrderService({ positionChanged: (f, t) => this.onPositionChanged(f, t) });\n }\n\n private onPositionChanged(from: number, to: number) {\n const dropEvent = this.initialRowDropped.emit({ from, to });\n if (dropEvent.defaultPrevented) {\n return;\n }\n const items = [...this.dataStore.get('items')];\n const toMove = items.splice(from, 1);\n items.splice(to, 0, ...toMove);\n setItems(this.dataStore, items);\n }\n\n private getData() {\n return {\n el: this.parent,\n rows: this.dimensionRow.state,\n cols: this.dimensionCol.state,\n };\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"rowOrderService.js","sourceRoot":"","sources":["../../../src/components/order/rowOrderService.ts"],"names":[],"mappings":"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","sourcesContent":["import { RevoGrid, Selection } from '../../interfaces';\nimport { getItemByPosition } from '../../store/dimension/dimension.helpers';\n\ntype EventData = { el: HTMLElement; rows: RevoGrid.DimensionSettingsState; cols: RevoGrid.DimensionSettingsState };\ninterface Config {\n positionChanged(from: number, to: number): void;\n}\n\nexport default class RowOrderService {\n private currentCell: Selection.Cell | null = null;\n private previousRow: number | null = null;\n\n constructor(private config: Config) {}\n\n /** Drag finished, calculate and apply changes */\n endOrder(e: MouseEvent, data: EventData): void {\n if (this.currentCell === null) {\n return;\n }\n const newRow = this.getCell(e, data);\n\n // if position changed\n if (newRow.y !== this.currentCell.y) {\n // rgRow dragged out table\n if (newRow.y < 0) {\n newRow.y = 0;\n }\n // rgRow dragged to the top\n else if (newRow.y < this.currentCell.y) {\n newRow.y++;\n }\n this.config.positionChanged(this.currentCell.y, newRow.y);\n }\n this.clear();\n }\n\n /** Drag started, reserve initial cell for farther use */\n startOrder(e: MouseEvent, data: EventData): Selection.Cell {\n this.currentCell = this.getCell(e, data);\n return this.currentCell;\n }\n\n move(y: number, data: EventData): RevoGrid.PositionItem | null {\n const rgRow = this.getRow(y, data);\n // if rgRow same as previous or below range (-1 = 0) do nothing\n if (this.previousRow === rgRow.itemIndex || rgRow.itemIndex < -1) {\n return null;\n }\n this.previousRow = rgRow.itemIndex;\n return rgRow;\n }\n\n /** Drag stopped, probably cursor outside of document area */\n clear(): void {\n this.currentCell = null;\n this.previousRow = null;\n }\n\n /** Calculate cell based on x, y position */\n getRow(y: number, { el, rows }: EventData): RevoGrid.PositionItem {\n const { top } = el.getBoundingClientRect();\n const topRelative = y - top;\n const rgRow = getItemByPosition(rows, topRelative);\n const absolutePosition = {\n itemIndex: rgRow.itemIndex,\n start: rgRow.start + top,\n end: rgRow.end + top,\n };\n return absolutePosition;\n }\n\n /** Calculate cell based on x, y position */\n getCell({ x, y }: Selection.Cell, { el, rows, cols }: EventData): Selection.Cell {\n const { top, left } = el.getBoundingClientRect();\n const topRelative = y - top;\n const leftRelative = x - left;\n const rgRow = getItemByPosition(rows, topRelative);\n const rgCol = getItemByPosition(cols, leftRelative);\n return { x: rgCol.itemIndex, y: rgRow.itemIndex };\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"autofill.service.js","sourceRoot":"","sources":["../../../src/components/overlay/autofill.service.tsx"],"names":[],"mappings":"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","sourcesContent":["import debounce from 'lodash/debounce';\nimport { DebouncedFunc } from 'lodash';\nimport slice from 'lodash/slice';\n\nimport { h } from '@stencil/core';\nimport { CELL_HANDLER_CLASS } from '../../utils/consts';\nimport { Observable, Selection, RevoGrid, Edition } from '../../interfaces';\nimport { EventData, getCell, getCurrentCell, isAfterLast } from './selection.utils';\nimport { getRange } from '../../store/selection/selection.helpers';\nimport SelectionStoreService from '../../store/selection/selection.store.service';\nimport ColumnService from '../data/columnService';\nimport { DataSourceState, getSourceItem } from '../../store/dataSource/data.store';\n\ntype Config = {\n selectionStoreService: SelectionStoreService;\n dimensionRow: Observable<RevoGrid.DimensionSettingsState>;\n dimensionCol: Observable<RevoGrid.DimensionSettingsState>;\n columnService: ColumnService;\n dataStore: Observable<DataSourceState<RevoGrid.DataType, RevoGrid.DimensionRows>>;\n\n setTempRange(e: Selection.TempRange | null): Event;\n internalSelectionChanged(e: Selection.ChangedRange): Event;\n internalRangeDataApply(e: Edition.BeforeRangeSaveDataDetails): Event;\n setRange(e: Selection.RangeArea): Event;\n\n getData(): any;\n};\n\nenum AutoFillType {\n selection = 'Selection',\n autoFill = 'AutoFill',\n}\n\nexport class AutoFillService {\n private autoFillType: AutoFillType | null = null;\n private autoFillInitial: Selection.Cell | null = null;\n private autoFillStart: Selection.Cell | null = null;\n private autoFillLast: Selection.Cell | null = null;\n\n private onMouseMoveAutofill: DebouncedFunc<(e: MouseEvent, data: EventData) => void>;\n\n constructor(private sv: Config) {\n\n }\n\n /**\n * Render autofill box\n * @param range\n * @param selectionFocus\n */\n renderAutofill(range: Selection.RangeArea, selectionFocus: Selection.Cell) {\n let handlerStyle;\n if (range) {\n handlerStyle = getCell(range, this.sv.dimensionRow.state, this.sv.dimensionCol.state);\n } else {\n handlerStyle = getCell(\n {\n ...selectionFocus,\n x1: selectionFocus.x,\n y1: selectionFocus.y,\n },\n this.sv.dimensionRow.state,\n this.sv.dimensionCol.state,\n );\n }\n return (\n <div\n class={CELL_HANDLER_CLASS}\n style={{ left: `${handlerStyle.right}px`, top: `${handlerStyle.bottom}px` }}\n onMouseDown={(e: MouseEvent) => this.selectionStart(e, this.sv.getData(), AutoFillType.autoFill)}\n />\n );\n }\n\n get isAutoFill() {\n return !!this.autoFillType;\n }\n\n /** Process mouse move events */\n selectionMouseMove(e: MouseEvent) {\n // initiate mouse move debounce if not present\n if (!this.onMouseMoveAutofill) {\n this.onMouseMoveAutofill = debounce((e: MouseEvent, data: EventData) => this.doAutofillMouseMove(e, data), 5);\n }\n if (this.isAutoFill) {\n this.onMouseMoveAutofill(e, this.sv.getData());\n }\n }\n\n private getFocus() {\n let focus = this.sv.selectionStoreService.focused;\n const range = this.sv.selectionStoreService.ranged;\n if (range) {\n focus = { x: range.x, y: range.y };\n }\n if (!focus && !range) {\n return null;\n }\n return focus;\n }\n\n /**\n * Autofill logic:\n * on mouse move apply based on previous direction (if present)\n */\n private doAutofillMouseMove({ x, y }: MouseEvent, data: EventData) {\n if (!this.autoFillInitial) {\n return;\n }\n let current = getCurrentCell({ x, y }, data);\n\n // first time or direction equal to start(same as first time)\n if (!this.autoFillLast) {\n if (!this.autoFillLast) {\n this.autoFillLast = this.autoFillStart;\n }\n }\n\n // check if not the latest, if latest - do nothing\n if (isAfterLast(current, data)) {\n return;\n }\n this.autoFillLast = current;\n\n const isSame = current.x === this.autoFillInitial.x && current.y === this.autoFillInitial.y;\n // if same as initial - clear\n if (isSame) {\n this.sv.setTempRange(null);\n } else {\n this.sv.setTempRange({\n area: getRange(this.autoFillInitial, this.autoFillLast),\n type: this.autoFillType,\n });\n }\n }\n\n /**\n * Range selection started\n * Mode @param type:\n * Can be triggered from MouseDown selection on element\n * Or can be triggered on corner square drag\n */\n selectionStart(e: MouseEvent, data: EventData, type = AutoFillType.selection) {\n /** Get cell by autofill element */\n const { top, left } = (e.target as HTMLElement).getBoundingClientRect();\n this.autoFillInitial = this.getFocus();\n this.autoFillType = type;\n this.autoFillStart = getCurrentCell({ x: left, y: top }, data);\n e.preventDefault();\n }\n\n /** Clear current range selection */\n clearAutoFillSelection() {\n // Apply autofill values on mouse up\n if (this.autoFillInitial) {\n // Get latest\n this.autoFillInitial = this.getFocus();\n if (this.autoFillType === AutoFillType.autoFill) {\n this.applyRangeWithData(this.autoFillInitial, this.autoFillLast);\n } else {\n this.applyRangeOnly(this.autoFillInitial, this.autoFillLast);\n }\n }\n\n this.autoFillType = null;\n this.autoFillInitial = null;\n this.autoFillLast = null;\n this.autoFillStart = null;\n }\n\n /** Trigger range apply events and handle responses */\n onRangeApply(data: RevoGrid.DataLookup, range: Selection.RangeArea): void {\n const models: RevoGrid.DataLookup = {};\n for (let rowIndex in data) {\n models[rowIndex] = getSourceItem(this.sv.dataStore, parseInt(rowIndex, 10));\n }\n const dataEvent = this.sv.internalRangeDataApply({\n data,\n models,\n type: this.sv.dataStore.get('type'),\n });\n if (!dataEvent.defaultPrevented) {\n this.sv.columnService.applyRangeData(data);\n }\n this.sv.setRange(range);\n }\n\n /** Apply range and copy data during range application */\n private applyRangeWithData(start?: Selection.Cell, end?: Selection.Cell) {\n // no changes to apply\n if (!start || !end) {\n return;\n }\n\n const oldRange = this.sv.selectionStoreService.ranged;\n const newRange = getRange(start, end);\n const columns = [...this.sv.columnService.columns];\n const rangeData: Selection.ChangedRange = {\n type: this.sv.dataStore.get('type'),\n newData: {},\n newRange,\n oldRange,\n newProps: slice(columns, newRange.x, newRange.x1 + 1).map(v => v.prop),\n oldProps: slice(columns, oldRange.x, oldRange.x1 + 1).map(v => v.prop),\n };\n\n rangeData.newData = this.sv.columnService.getRangeData(rangeData);\n const selectionEndEvent = this.sv.internalSelectionChanged(rangeData);\n if (selectionEndEvent.defaultPrevented) {\n this.sv.setTempRange(null);\n return;\n }\n this.onRangeApply(rangeData.newData, newRange);\n }\n\n /** Update range selection ony, no data change (mouse selection) */\n private applyRangeOnly(start?: Selection.Cell, end?: Selection.Cell) {\n // no changes to apply\n if (!start || !end) {\n return;\n }\n\n const newRange = getRange(start, end);\n this.sv.setRange(newRange);\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"clipboard.service.js","sourceRoot":"","sources":["../../../src/components/overlay/clipboard.service.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,cAAc,CAAC;AACjC,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAGlC,OAAO,EAAE,QAAQ,EAAE,MAAM,yCAAyC,CAAC;AAYnE,MAAM,OAAO,gBAAgB;EAE3B,YAAoB,EAAU;IAAV,OAAE,GAAF,EAAE,CAAQ;EAAG,CAAC;EAC1B,MAAM,CAAC,CAAe;IAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC;IACvC,IAAI,OAAO,CAAC,gBAAgB,EAAE;MAC5B,OAAO,KAAK,CAAC;KACd;IACD,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC;IAClD,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC;IACjD,IAAI,IAA6B,CAAC;IAClC,IAAI,CAAC,KAAK,EAAE;MACV,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;KAChC;IACD,IAAI,KAAK,EAAE;MACT,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;MACnD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;MACrE,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;KAC9E;IACD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAC/B,OAAO,IAAI,CAAC;EACd,CAAC;EAED,eAAe;IACb,OAAO,wBAAkB,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAI,CAAC;EACpJ,CAAC;EAEO,OAAO,CAAC,IAAgB;IAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC;IACpD,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC,MAAM,KAAK,IAAI,CAAC;IAChE,IAAI,CAAC,KAAK,IAAI,SAAS,EAAE;MACvB,OAAO;KACR;IACD,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,yBAAyB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACxF,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;EACvC,CAAC;CACF","sourcesContent":["import slice from 'lodash/slice';\nimport { h } from '@stencil/core';\nimport SelectionStoreService from '../../store/selection/selection.store.service';\nimport { Observable, RevoGrid, Selection } from '../../interfaces';\nimport { getRange } from '../../store/selection/selection.helpers';\nimport ColumnService from '../data/columnService';\nimport { DataSourceState } from '../../store/dataSource/data.store';\n\ntype Config = {\n selectionStoreService: SelectionStoreService;\n columnService: ColumnService;\n dataStore: Observable<DataSourceState<RevoGrid.DataType, RevoGrid.DimensionRows>>;\n onRangeApply(data: RevoGrid.DataLookup, range: Selection.RangeArea): void;\n internalCopy(): Event;\n};\n\nexport class ClipboardService {\n private clipboard: HTMLRevogrClipboardElement;\n constructor(private sv: Config) {}\n private onCopy(e: DataTransfer) {\n const canCopy = this.sv.internalCopy();\n if (canCopy.defaultPrevented) {\n return false;\n }\n let focus = this.sv.selectionStoreService.focused;\n let range = this.sv.selectionStoreService.ranged;\n let data: RevoGrid.DataFormat[][];\n if (!range) {\n range = getRange(focus, focus);\n }\n if (range) {\n const columns = [...this.sv.columnService.columns];\n const props = slice(columns, range.x, range.x1 + 1).map(v => v.prop);\n data = this.sv.columnService.copyRangeArray(range, props, this.sv.dataStore);\n }\n this.clipboard.doCopy(e, data);\n return true;\n }\n\n renderClipboard() {\n return <revogr-clipboard onCopyRegion={e => this.onCopy(e.detail)} ref={e => (this.clipboard = e)} onPasteRegion={e => this.onPaste(e.detail)} />;\n }\n\n private onPaste(data: string[][]) {\n const focus = this.sv.selectionStoreService.focused;\n const isEditing = this.sv.selectionStoreService.edited !== null;\n if (!focus || isEditing) {\n return;\n }\n const { changed, range } = this.sv.columnService.getTransformedDataToApply(focus, data);\n this.sv.onRangeApply(changed, range);\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"edit.utils.js","sourceRoot":"","sources":["../../../../src/components/overlay/editors/edit.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,gBAAgB;AAChB,MAAM,UAAU,WAAW,CAAC,EAAgB;EAC1C,OAAO,CAAC,CAAC,CAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,OAAO,CAAC,IAAI,aAAa,EAAE,CAAC,CAAA,CAAC;AAC5C,CAAC","sourcesContent":["import { EDIT_INPUT_WR } from '../../../utils/consts';\n\n// is edit input\nexport function isEditInput(el?: HTMLElement) {\n return !!el?.closest(`.${EDIT_INPUT_WR}`);\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"text.js","sourceRoot":"","sources":["../../../../src/components/overlay/editors/text.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAElE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAS/C,MAAM,OAAO,UAAU;EAMrB,YAAmB,MAA8B,EAAU,YAA2B;IAAnE,WAAM,GAAN,MAAM,CAAwB;IAAU,iBAAY,GAAZ,YAAY,CAAe;IAH/E,YAAO,GAAmB,IAAI,CAAC;IAC/B,aAAQ,GAA4B,IAAI,CAAC;EAEyC,CAAC;EAE1F,KAAK,CAAC,kBAAkB;;IACtB,IAAI,IAAI,CAAC,SAAS,EAAE;MAClB,MAAM,OAAO,EAAE,CAAC;MAChB,MAAA,IAAI,CAAC,SAAS,0CAAE,KAAK,EAAE,CAAC;KACzB;EACH,CAAC;EAEO,SAAS,CAAC,CAAgB;IAChC,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAE/B,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE;MAC5E,qCAAqC;MACrC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;MACtB,mDAAmD;MACnD,IAAI,CAAC,YAAY,CAAE,CAAC,CAAC,MAA2B,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;KACnE;EACH,CAAC;EAED,WAAW;EACX,MAAM;;IACJ,OAAO,CACL,aACE,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,CAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,GAAG,KAAI,EAAE,EAC/B,GAAG,EAAE,EAAE,CAAC,EAAE;QACR,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;MACtB,CAAC,EACD,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GACjC,CACH,CAAC;EACJ,CAAC;CACF","sourcesContent":["import { h } from '@stencil/core';\nimport { isEnterKey, isTab } from '../../../utils/keyCodes.utils';\nimport { Edition, RevoGrid } from '../../../interfaces';\nimport { timeout } from '../../../utils/utils';\n\n/**\n * Callback triggered on cell editor save\n * Closes editor when called\n * @param preventFocus - if true editor will not be closed and next cell will not be focused\n */\nexport type SaveCallback = (value: Edition.SaveData, preventFocus: boolean) => void;\n\nexport class TextEditor implements Edition.EditorBase {\n private editInput!: HTMLInputElement;\n\n public element: Element | null = null;\n public editCell: Edition.EditCell | null = null;\n\n constructor(public column: RevoGrid.ColumnRegular, private saveCallback?: SaveCallback) {}\n\n async componentDidRender(): Promise<void> {\n if (this.editInput) {\n await timeout();\n this.editInput?.focus();\n }\n }\n\n private onKeyDown(e: KeyboardEvent): void {\n const isEnter = isEnterKey(e.code);\n const isKeyTab = isTab(e.code);\n\n if ((isKeyTab || isEnter) && e.target && this.saveCallback && !e.isComposing) {\n // blur is needed to avoid autoscroll\n this.editInput.blur();\n // request callback which will close cell after all\n this.saveCallback((e.target as HTMLInputElement).value, isKeyTab);\n }\n }\n\n // required\n render() {\n return (\n <input\n type=\"text\"\n value={this.editCell?.val || ''}\n ref={el => {\n this.editInput = el;\n }}\n onKeyDown={e => this.onKeyDown(e)}\n />\n );\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"keyboard.service.js","sourceRoot":"","sources":["../../../src/components/overlay/keyboard.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Observable, Selection } from '../../interfaces';\nimport { getRange } from '../../store/selection/selection.helpers';\nimport SelectionStoreService from '../../store/selection/selection.store.service';\nimport { codesLetter } from '../../utils/keyCodes';\nimport { isClear, isCtrlKey, isEnterKey, isLetterKey } from '../../utils/keyCodes.utils';\nimport { timeout } from '../../utils/utils';\nimport { EventData, getCoordinate, isAfterLast, isBeforeFirst } from './selection.utils';\n\ntype Config = {\n selectionStoreService: SelectionStoreService;\n selectionStore: Observable<Selection.SelectionStoreState>;\n doEdit(val?: any): void;\n cancelEdit(): void;\n clearCell(): void;\n getData(): any;\n internalPaste(): void;\n};\n\nexport class KeyboardService {\n private ctrlDown = false;\n\n constructor(private sv: Config) {}\n\n async keyDown(e: KeyboardEvent, canRange: boolean) {\n if (!this.sv.selectionStoreService.focused) {\n return;\n }\n if (isCtrlKey(e.keyCode, navigator.platform)) {\n this.ctrlDown = true;\n }\n\n // tab key means same as arrow right\n if (codesLetter.TAB === e.code) {\n this.keyChangeSelection(e, canRange);\n return;\n }\n\n /**\n * IF EDIT MODE\n */\n if (this.sv.selectionStoreService.edited) {\n switch (e.code) {\n case codesLetter.ESCAPE:\n this.sv.cancelEdit();\n break;\n }\n return;\n }\n\n /**\n * IF NOT EDIT MODE\n */\n\n // pressed clear key\n if (isClear(e.code)) {\n this.sv.clearCell();\n return;\n }\n\n // pressed enter\n if (isEnterKey(e.code)) {\n this.sv.doEdit();\n return;\n }\n\n // copy operation\n if (this.isCopy(e)) {\n return;\n }\n\n // paste operation\n if (this.isPaste(e)) {\n this.sv.internalPaste();\n return;\n }\n\n // pressed letter key\n if (isLetterKey(e.keyCode)) {\n this.sv.doEdit(e.key);\n return;\n }\n\n // pressed arrow, change selection position\n if (await this.keyChangeSelection(e, canRange)) {\n return;\n }\n }\n\n async keyChangeSelection(e: KeyboardEvent, canRange: boolean) {\n const data = this.changeDirectionKey(e, canRange);\n if (!data) {\n return false;\n }\n await timeout();\n\n const range = this.sv.selectionStore.get('range');\n const focus = this.sv.selectionStore.get('focus');\n return this.keyPositionChange(data.changes, this.sv.getData(), range, focus, data.isMulti);\n }\n\n keyPositionChange(changes: Partial<Selection.Cell>, eData: EventData, range?: Selection.RangeArea, focus?: Selection.Cell, isMulti = false) {\n if (!range || !focus) {\n return false;\n }\n const data = getCoordinate(range, focus, changes, isMulti);\n if (!data) {\n return false;\n }\n if (isMulti) {\n if (isAfterLast(data.end, eData) || isBeforeFirst(data.start)) {\n return false;\n }\n const range = getRange(data.start, data.end);\n return this.sv.selectionStoreService.changeRange(range);\n }\n return this.sv.selectionStoreService.focus(data.start);\n }\n\n keyUp(e: KeyboardEvent): void {\n if (isCtrlKey(e.keyCode, navigator.platform)) {\n this.ctrlDown = false;\n }\n }\n\n isCopy(e: KeyboardEvent): boolean {\n return this.ctrlDown && e.code == codesLetter.C;\n }\n isPaste(e: KeyboardEvent): boolean {\n return this.ctrlDown && e.code == codesLetter.V;\n }\n\n /** Monitor key direction changes */\n changeDirectionKey(e: KeyboardEvent, canRange: boolean): { changes: Partial<Selection.Cell>; isMulti?: boolean } | void {\n const isMulti: boolean = canRange && e.shiftKey;\n switch (e.code) {\n case codesLetter.TAB:\n case codesLetter.ARROW_UP:\n case codesLetter.ARROW_DOWN:\n case codesLetter.ARROW_LEFT:\n case codesLetter.ARROW_RIGHT:\n e.preventDefault();\n break;\n }\n switch (e.code) {\n case codesLetter.ARROW_UP:\n return { changes: { y: -1 }, isMulti };\n case codesLetter.ARROW_DOWN:\n return { changes: { y: 1 }, isMulti };\n case codesLetter.ARROW_LEFT:\n return { changes: { x: -1 }, isMulti };\n case codesLetter.TAB:\n case codesLetter.ARROW_RIGHT:\n return { changes: { x: 1 }, isMulti };\n }\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"revogr-edit.js","sourceRoot":"","sources":["../../../src/components/overlay/revogr-edit.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAgB,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAGvF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAM5C,MAAM,OAAO,IAAI;;IAGP,kBAAa,GAA8B,IAAI,CAAC;;;;;EAcxD;;;;KAIG;EACH,MAAM,CAAC,GAAqB,EAAE,YAAsB;IAClD,IAAI,IAAI,CAAC,QAAQ,EAAE;MACjB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACjB,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtB,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtB,GAAG;QACH,YAAY;OACb,CAAC,CAAC;KACJ;EACH,CAAC;EAED,mBAAmB;IACjB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;MACvB,IAAI,IAAI,CAAC,MAAM,EAAE;QACf,IAAI,CAAC,aAAa,GAAG,IAAI,IAAI,CAAC,MAAM,CAClC,IAAI,CAAC,MAAM,EACX,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,EACjD,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAC5C,CAAC;OACH;WAAM;QACL,IAAI,CAAC,aAAa,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;OACrG;KACF;EACH,CAAC;EAED,kBAAkB;IAChB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;MACvB,OAAO;KACR;IACD,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;IAC5D,IAAI,CAAC,aAAa,CAAC,kBAAkB,IAAI,IAAI,CAAC,aAAa,CAAC,kBAAkB,EAAE,CAAC;EACnF,CAAC;EAED,oBAAoB;IAClB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;MACvB,OAAO;KACR;IAED,IAAI,CAAC,aAAa,CAAC,oBAAoB,IAAI,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAE,CAAC;IACrF,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;MAC9B,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC;KACnC;IACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;EAC5B,CAAC;EAED,MAAM;IACJ,IAAI,IAAI,CAAC,aAAa,EAAE;MACtB,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;MAC5C,OAAO,EAAC,IAAI,IAAC,KAAK,EAAE,aAAa,IAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAQ,CAAC;KAC1E;IACD,OAAO,EAAE,CAAC;EACZ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Event, EventEmitter, Prop, h, Element, Host } from '@stencil/core';\n\nimport { Edition, RevoGrid } from '../../interfaces';\nimport { EDIT_INPUT_WR } from '../../utils/consts';\nimport { TextEditor } from './editors/text';\n\n@Component({\n tag: 'revogr-edit',\n styleUrl: 'revogr-edit-style.scss',\n})\nexport class Edit {\n @Element() element: HTMLElement;\n @Prop() editCell: Edition.EditCell;\n private currentEditor: Edition.EditorBase | null = null;\n\n @Prop() column: RevoGrid.ColumnRegular | null;\n /** Custom editors register */\n @Prop() editor: Edition.EditorCtr | null;\n\n @Event({ bubbles: false }) cellEdit: EventEmitter<Edition.SaveDataDetails>;\n\n /**\n * Close editor event\n * pass true if requires focus next\n */\n @Event({ bubbles: false }) closeEdit: EventEmitter<boolean | undefined>;\n\n /**\n * Callback triggered on cell editor save\n * Closes editor when called\n * @param preventFocus - if true editor will not be closed and next cell will not be focused\n */\n onSave(val: Edition.SaveData, preventFocus?: boolean): void {\n if (this.editCell) {\n this.cellEdit.emit({\n rgCol: this.editCell.x,\n rgRow: this.editCell.y,\n val,\n preventFocus,\n });\n }\n }\n\n componentWillRender(): void {\n if (!this.currentEditor) {\n if (this.editor) {\n this.currentEditor = new this.editor(\n this.column,\n (e, preventFocus) => this.onSave(e, preventFocus),\n focusNext => this.closeEdit.emit(focusNext),\n );\n } else {\n this.currentEditor = new TextEditor(this.column, (e, preventFocus) => this.onSave(e, preventFocus));\n }\n }\n }\n\n componentDidRender(): void {\n if (!this.currentEditor) {\n return;\n }\n this.currentEditor.element = this.element.firstElementChild;\n this.currentEditor.componentDidRender && this.currentEditor.componentDidRender();\n }\n\n disconnectedCallback(): void {\n if (!this.currentEditor) {\n return;\n }\n\n this.currentEditor.disconnectedCallback && this.currentEditor.disconnectedCallback();\n if (this.currentEditor.element) {\n this.currentEditor.element = null;\n }\n this.currentEditor = null;\n }\n\n render() {\n if (this.currentEditor) {\n this.currentEditor.editCell = this.editCell;\n return <Host class={EDIT_INPUT_WR}>{this.currentEditor.render(h)}</Host>;\n }\n return '';\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"revogr-overlay-selection.js","sourceRoot":"","sources":["../../../src/components/overlay/revogr-overlay-selection.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Event, EventEmitter, h, Host, Listen, Prop, VNode, Element, Watch } from '@stencil/core';\n\nimport { Edition, Observable, RevoGrid, Selection } from '../../interfaces';\nimport ColumnService from '../data/columnService';\nimport SelectionStoreService from '../../store/selection/selection.store.service';\nimport { codesLetter } from '../../utils/keyCodes';\nimport { SELECTION_BORDER_CLASS } from '../../utils/consts';\nimport { DataSourceState } from '../../store/dataSource/data.store';\nimport { isRangeSingleCell } from '../../store/selection/selection.helpers';\nimport { getCurrentCell, getElStyle } from './selection.utils';\nimport { isEditInput } from './editors/edit.utils';\nimport { KeyboardService } from './keyboard.service';\nimport { AutoFillService } from './autofill.service';\nimport { ClipboardService } from './clipboard.service';\n\n@Component({\n tag: 'revogr-overlay-selection',\n styleUrl: 'revogr-overlay-style.scss',\n})\nexport class OverlaySelection {\n protected columnService: ColumnService;\n\n protected selectionStoreService: SelectionStoreService;\n private keyboardService: KeyboardService | null = null;\n private autoFillService: AutoFillService | null = null;\n private clipboardService: ClipboardService | null = null;\n private orderEditor: HTMLRevogrOrderEditorElement;\n\n @Element() element: HTMLElement;\n\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n\n @Prop() readonly: boolean;\n @Prop() range: boolean;\n @Prop() canDrag: boolean;\n @Prop() useClipboard: boolean;\n\n /** Dynamic stores */\n @Prop() selectionStore: Observable<Selection.SelectionStoreState>;\n @Prop() dimensionRow: Observable<RevoGrid.DimensionSettingsState>;\n @Prop() dimensionCol: Observable<RevoGrid.DimensionSettingsState>;\n\n /** Static stores, not expected to change during component lifetime */\n @Prop() dataStore: Observable<DataSourceState<RevoGrid.DataType, RevoGrid.DimensionRows>>;\n\n @Prop() colData: Observable<DataSourceState<RevoGrid.ColumnRegular, RevoGrid.DimensionCols>>;\n /** Last cell position */\n @Prop() lastCell: Selection.Cell;\n /** Custom editors register */\n @Prop() editors: Edition.Editors;\n\n // --------------------------------------------------------------------------\n //\n // Events\n //\n // --------------------------------------------------------------------------\n\n @Event({ cancelable: true }) internalCopy: EventEmitter;\n @Event({ cancelable: true }) internalPaste: EventEmitter;\n\n @Event({ cancelable: true }) internalCellEdit: EventEmitter<Edition.BeforeSaveDataDetails>;\n @Event({ cancelable: true }) internalFocusCell: EventEmitter<Edition.BeforeSaveDataDetails>;\n\n @Event({ bubbles: false }) setEdit: EventEmitter<Edition.BeforeEdit>;\n /**\n * Used for editors support when close requested\n */\n @Event() cancelEdit: EventEmitter;\n @Event() setRange: EventEmitter<Selection.RangeArea>;\n @Event() setTempRange: EventEmitter<Selection.TempRange | null>;\n\n @Event({ bubbles: false }) focusCell: EventEmitter<Selection.FocusedCells>;\n /** Selection range changed */\n @Event({ cancelable: true }) internalSelectionChanged: EventEmitter<Selection.ChangedRange>;\n\n /** Range data apply */\n @Event({ cancelable: true }) internalRangeDataApply: EventEmitter<Edition.BeforeRangeSaveDataDetails>;\n\n // --------------------------------------------------------------------------\n //\n // Listeners\n //\n // --------------------------------------------------------------------------\n\n @Listen('mousemove', { target: 'document' }) onMouseMove(e: MouseEvent) {\n if (this.selectionStoreService.focused) {\n this.autoFillService.selectionMouseMove(e);\n }\n }\n\n /** Pointer left document, clear any active operation */\n @Listen('mouseleave', { target: 'document' }) onMouseOut() {\n this.autoFillService.clearAutoFillSelection();\n }\n\n /** Action finished inside of the document */\n @Listen('mouseup', { target: 'document' }) onMouseUp() {\n this.autoFillService.clearAutoFillSelection();\n }\n\n /** Row drag started */\n @Listen('dragStartCell') onCellDrag(e: CustomEvent<MouseEvent>) {\n this.orderEditor?.dragStart(e.detail);\n }\n\n /** Recived keyboard down from element */\n @Listen('keyup', { target: 'document' }) onKeyUp(e: KeyboardEvent) {\n this.keyboardService?.keyUp(e);\n }\n\n /** Recived keyboard down from element */\n @Listen('keydown', { target: 'document' }) onKeyDown(e: KeyboardEvent) {\n if (e.defaultPrevented) {\n return;\n }\n this.keyboardService?.keyDown(e, this.range);\n }\n\n /** Create selection store */\n @Watch('selectionStore') selectionServiceSet(s: Observable<Selection.SelectionStoreState>) {\n this.selectionStoreService = new SelectionStoreService(s, {\n changeRange: range => !this.setRange.emit(range)?.defaultPrevented,\n focus: (focus, end) => {\n const focused = { focus, end };\n const { defaultPrevented } = this.internalFocusCell.emit(this.columnService.getSaveData(focus.y, focus.x));\n if (defaultPrevented) {\n return false;\n }\n return !this.focusCell.emit(focused)?.defaultPrevented;\n },\n });\n\n this.keyboardService = new KeyboardService({\n selectionStoreService: this.selectionStoreService,\n selectionStore: s,\n doEdit: (v) => this.doEdit(v),\n cancelEdit: () => this.closeEdit(),\n clearCell: () => this.clearCell(),\n getData: () => this.getData(),\n internalPaste: () => this.internalPaste.emit()\n });\n this.createAutoFillService();\n this.createClipboardService();\n }\n\n @Watch('dimensionRow')\n @Watch('dimensionCol')\n createAutoFillService() {\n this.autoFillService = new AutoFillService({\n selectionStoreService: this.selectionStoreService,\n dimensionRow: this.dimensionRow,\n dimensionCol: this.dimensionCol,\n columnService: this.columnService,\n dataStore: this.dataStore,\n\n setTempRange: (e) => this.setTempRange.emit(e),\n internalSelectionChanged: (e) => this.internalSelectionChanged.emit(e),\n internalRangeDataApply: (e) => this.internalRangeDataApply.emit(e),\n setRange: (e) => this.setRange.emit(e),\n getData: () => this.getData(),\n });\n }\n\n @Watch('dataStore')\n @Watch('colData')\n columnServiceSet() {\n this.columnService?.destroy();\n this.columnService = new ColumnService(this.dataStore, this.colData);\n this.createAutoFillService();\n this.createClipboardService();\n }\n\n createClipboardService() {\n this.clipboardService = new ClipboardService({\n selectionStoreService: this.selectionStoreService,\n columnService: this.columnService,\n dataStore: this.dataStore,\n onRangeApply: (d, r) => this.autoFillService.onRangeApply(d, r),\n internalCopy: () => this.internalCopy.emit()\n });\n }\n\n connectedCallback() {\n this.columnServiceSet();\n this.selectionServiceSet(this.selectionStore);\n }\n\n disconnectedCallback() {\n this.columnService?.destroy();\n }\n\n private renderRange(range: Selection.RangeArea) {\n const style = getElStyle(range, this.dimensionRow.state, this.dimensionCol.state);\n return [<div class={SELECTION_BORDER_CLASS} style={style} />];\n }\n\n private renderEditCell() {\n // if can edit\n const editCell = this.selectionStore.get('edit');\n if (this.readonly || !editCell) {\n return;\n }\n const val = editCell.val || this.columnService.getCellData(editCell.y, editCell.x);\n const editable = {\n ...editCell,\n ...this.columnService.getSaveData(editCell.y, editCell.x, val),\n };\n\n const style = getElStyle({ ...editCell, x1: editCell.x, y1: editCell.y }, this.dimensionRow.state, this.dimensionCol.state);\n return (\n <revogr-edit\n onCellEdit={e => this.onCellEdit(e.detail)}\n onCloseEdit={e => this.closeEdit(e)}\n editCell={editable}\n column={this.columnService.columns[editCell.x]}\n editor={this.columnService.getCellEditor(editCell.y, editCell.x, this.editors)}\n style={style}\n />\n );\n }\n\n render() {\n const range = this.selectionStoreService.ranged;\n const selectionFocus = this.selectionStoreService.focused;\n const els: VNode[] = [];\n if ((range || selectionFocus) && this.useClipboard) {\n els.push(this.clipboardService.renderClipboard());\n }\n\n if (range) {\n els.push(...this.renderRange(range));\n }\n\n const editCell = this.renderEditCell();\n if (editCell) {\n els.push(editCell);\n }\n if (selectionFocus && !this.readonly && !editCell && this.range) {\n els.push(this.autoFillService.renderAutofill(range, selectionFocus));\n }\n\n if (this.canDrag) {\n els.push(\n <revogr-order-editor\n ref={e => (this.orderEditor = e)}\n dataStore={this.dataStore}\n dimensionRow={this.dimensionRow}\n dimensionCol={this.dimensionCol}\n parent={this.element}\n onInternalRowDragStart={e => this.onRowDragStart(e)}\n />,\n );\n }\n return (\n <Host onDblClick={() => this.doEdit()} onMouseDown={(e: MouseEvent) => this.onElementMouseDown(e)}>\n {els}\n <slot name=\"data\" />\n </Host>\n );\n }\n\n protected onElementMouseDown(e: MouseEvent) {\n // Ignore focus if clicked input\n if (isEditInput(e.target as HTMLElement | undefined)) {\n return;\n }\n const data = this.getData();\n if (e.defaultPrevented) {\n return;\n }\n // Regular cell click\n const focusCell = getCurrentCell({ x: e.x, y: e.y }, data);\n this.selectionStoreService.focus(focusCell, this.range && e.shiftKey);\n\n // Initiate autofill selection\n if (this.range) {\n this.autoFillService.selectionStart(e, data);\n }\n }\n\n protected doEdit(val = '') {\n if (this.canEdit()) {\n const editCell = this.selectionStore.get('focus');\n const data = this.columnService.getSaveData(editCell.y, editCell.x);\n this.setEdit?.emit({\n ...data,\n val,\n });\n }\n }\n\n /**\n * Close editor event triggered\n * @param details - if requires focus next\n */\n private closeEdit(e?: CustomEvent<boolean>) {\n this.cancelEdit.emit();\n if (e?.detail) {\n this.focusNext();\n }\n }\n\n private async focusNext() {\n const canFocus = await this.keyboardService.keyChangeSelection(\n new KeyboardEvent('keydown', {\n code: codesLetter.ARROW_DOWN,\n }),\n this.range\n );\n if (!canFocus) {\n this.closeEdit();\n }\n }\n\n protected clearCell() {\n if (this.selectionStoreService.ranged && !isRangeSingleCell(this.selectionStoreService.ranged)) {\n const data = this.columnService.getRangeStaticData(this.selectionStoreService.ranged, '');\n this.autoFillService.onRangeApply(data, this.selectionStoreService.ranged);\n } else if (this.canEdit()) {\n const focused = this.selectionStoreService.focused;\n this.onCellEdit({ rgRow: focused.y, rgCol: focused.x, val: '' }, true);\n }\n }\n\n /** Edit finished, close cell and save */\n protected onCellEdit(e: Edition.SaveDataDetails, clear = false) {\n const dataToSave = this.columnService.getSaveData(e.rgRow, e.rgCol, e.val);\n this.internalCellEdit.emit(dataToSave);\n // if not clear navigate to next cell after edit\n if (!clear && !e.preventFocus) {\n this.focusNext();\n }\n }\n\n private onRowDragStart({ detail }: CustomEvent<{ cell: Selection.Cell; text: string }>) {\n detail.text = this.columnService.getCellData(detail.cell.y, detail.cell.x);\n }\n\n /** Check if edit possible */\n protected canEdit() {\n if (this.readonly) {\n return false;\n }\n const editCell = this.selectionStoreService.focused;\n return editCell && !this.columnService?.isReadOnly(editCell.y, editCell.x);\n }\n\n /** Collect data from element */\n protected getData() {\n return {\n el: this.element,\n rows: this.dimensionRow.state,\n cols: this.dimensionCol.state,\n lastCell: this.lastCell,\n };\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"selection.utils.js","sourceRoot":"","sources":["../../../src/components/overlay/selection.utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { getItemByIndex, getItemByPosition } from '../../store/dimension/dimension.helpers';\nimport { Selection, RevoGrid } from '../../interfaces';\nimport Cell = Selection.Cell;\n\nexport type EventData = {\n el: HTMLElement;\n rows: RevoGrid.DimensionSettingsState;\n cols: RevoGrid.DimensionSettingsState;\n lastCell: Selection.Cell;\n};\n\n/** Calculate cell based on x, y position */\nexport function getCurrentCell({ x, y }: Cell, { el, rows, cols }: EventData): Cell {\n const { top, left, height, width } = el.getBoundingClientRect();\n let cellY = y - top;\n\n // limit to element height\n\n if (cellY >= height) {\n cellY = height - 1;\n }\n let cellX = x - left;\n // limit to element width\n if (cellX >= width) {\n cellX = width - 1;\n }\n const rgRow = getItemByPosition(rows, cellY);\n const rgCol = getItemByPosition(cols, cellX);\n // before first\n if (rgCol.itemIndex < 0) {\n rgCol.itemIndex = 0;\n }\n // before first\n if (rgRow.itemIndex < 0) {\n rgRow.itemIndex = 0;\n }\n return { x: rgCol.itemIndex, y: rgRow.itemIndex };\n}\n\nexport function getCoordinate(range: Selection.RangeArea, focus: Cell, changes: Partial<Cell>, isMulti = false) {\n const updateCoordinate = (c: keyof Cell) => {\n const start = { x: range.x, y: range.y };\n const end = isMulti ? { x: range.x1, y: range.y1 } : start;\n const point = end[c] > focus[c] ? end : start;\n point[c] += changes[c];\n return { start, end };\n };\n\n if (changes.x) {\n return updateCoordinate('x');\n }\n if (changes.y) {\n return updateCoordinate('y');\n }\n return null;\n}\n\n/** check if out of range */\nexport function isAfterLast({ x, y }: Cell, { lastCell }: EventData) {\n return x >= lastCell.x || y >= lastCell.y;\n}\n\n/** check if out of range */\nexport function isBeforeFirst({ x, y }: Cell) {\n return x < 0 || y < 0;\n}\n\n/** Compare cells, only 1 coordinate difference is possible */\nexport function getDirectionCoordinate(initial: Cell, last: Cell): Partial<Cell> | null {\n const c: (keyof Cell)[] = ['x', 'y'];\n for (let k of c) {\n if (initial[k] !== last[k]) {\n return { [k]: 1 };\n }\n }\n return null;\n}\n\nexport function getLargestAxis(initial: Cell, last: Cell): Partial<Cell> | null {\n const cell: Partial<Cell> = {};\n const c: (keyof Cell)[] = ['x', 'y'];\n for (let k of c) {\n cell[k] = Math.abs(initial[k] - last[k]);\n }\n if (cell.x > cell.y) {\n return { x: 1 };\n }\n if (cell.y > cell.x) {\n return { y: 1 };\n }\n return null;\n}\n\nfunction styleByCellProps(styles: { [key: string]: number }): Selection.RangeAreaCss {\n return {\n left: `${styles.left}px`,\n top: `${styles.top}px`,\n width: `${styles.width}px`,\n height: `${styles.height}px`,\n };\n}\n\nexport function getCell({ x, y, x1, y1 }: Selection.RangeArea, dimensionRow: RevoGrid.DimensionSettingsState, dimensionCol: RevoGrid.DimensionSettingsState) {\n const top: number = getItemByIndex(dimensionRow, y).start;\n const left: number = getItemByIndex(dimensionCol, x).start;\n const bottom: number = getItemByIndex(dimensionRow, y1).end;\n const right: number = getItemByIndex(dimensionCol, x1).end;\n\n return {\n left,\n right,\n top,\n bottom,\n width: right - left,\n height: bottom - top,\n };\n}\n\nexport function getElStyle(range: Selection.RangeArea, dimensionRow: RevoGrid.DimensionSettingsState, dimensionCol: RevoGrid.DimensionSettingsState): Selection.RangeAreaCss {\n const styles = getCell(range, dimensionRow, dimensionCol);\n return styleByCellProps(styles);\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"revo-grid.js","sourceRoot":"","sources":["../../../src/components/revo-grid/revo-grid.tsx"],"names":[],"mappings":"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AC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Prop, h, Watch, Element, Listen, Event, EventEmitter, Method, VNode, State, Host } from '@stencil/core';\nimport reduce from 'lodash/reduce';\nimport each from 'lodash/each';\n\nimport ColumnDataProvider, { ColumnCollection } from '../../services/column.data.provider';\nimport { DataProvider } from '../../services/data.provider';\nimport { getVisibleSourceItem } from '../../store/dataSource/data.store';\nimport DimensionProvider from '../../services/dimension.provider';\nimport ViewportProvider from '../../services/viewport.provider';\nimport { Edition, Selection, RevoGrid, ThemeSpace, RevoPlugin } from '../../interfaces';\nimport ThemeService from '../../themeManager/themeService';\nimport { timeout } from '../../utils/utils';\nimport AutoSize, { AutoSizeColumnConfig } from '../../plugins/autoSizeColumn';\nimport { columnTypes } from '../../store/storeTypes';\nimport FilterPlugin, { ColumnFilterConfig, FilterCollection } from '../../plugins/filter/filter.plugin';\nimport SortingPlugin from '../../plugins/sorting/sorting.plugin';\nimport ExportFilePlugin from '../../plugins/export/export.plugin';\nimport { DataInput } from '../../plugins/export/types';\nimport GroupingRowPlugin from '../../plugins/groupingRow/grouping.row.plugin';\nimport { GroupingOptions } from '../../plugins/groupingRow/grouping.row.types';\nimport { ColumnSource, RowSource } from '../data/columnService';\nimport { RevoViewPort } from './viewport';\nimport ViewportService, { FocusedData } from './viewport.service';\nimport { ViewPortSections } from './viewport.section';\nimport GridScrollingService from './viewport.scrolling.service';\nimport { UUID } from '../../utils/consts';\nimport SelectionStoreConnector from '../../services/selection.store.connector';\nimport { OrdererService } from '../order/orderRenderer';\nimport StretchColumn, { isStretchPlugin } from '../../plugins/stretchPlugin';\nimport ColumnPlugin from '../../plugins/moveColumn/columnDragPlugin';\n\n@Component({\n tag: 'revo-grid',\n styleUrl: 'revo-grid-style.scss'\n})\nexport class RevoGridComponent {\n // --------------------------------------------------------------------------\n //\n // Properties\n //\n // --------------------------------------------------------------------------\n\n /** Excel like show rgRow indexe per rgRow */\n @Prop() rowHeaders: RevoGrid.RowHeaders | boolean;\n /**\n * Defines how many rows/columns should be rendered outside visible area.\n */\n @Prop() frameSize: number = 1;\n /**\n * Indicates default rgRow size.\n * By default 0, means theme package size will be applied\n */\n @Prop() rowSize: number = 0;\n /** Indicates default column size. */\n @Prop() colSize: number = 100;\n /** When true, user can range selection. */\n @Prop() range: boolean = false;\n /** When true, grid in read only mode. */\n @Prop() readonly: boolean = false;\n /** When true, columns are resizable. */\n @Prop() resize: boolean = false;\n /** When true cell focus appear. */\n @Prop() canFocus: boolean = true;\n /** When true enable clipboard. */\n @Prop() useClipboard: boolean = true;\n /**\n * Columns - defines an array of grid columns.\n * Can be column or grouped column.\n */\n @Prop() columns: (RevoGrid.ColumnRegular | RevoGrid.ColumnGrouping)[] = [];\n /**\n * Source - defines main data source.\n * Can be an Object or 2 dimensional array([][]);\n * Keys/indexes referenced from columns Prop\n */\n @Prop() source: RevoGrid.DataType[] = [];\n /** Pinned top Source: {[T in ColumnProp]: any} - defines pinned top rows data source. */\n @Prop() pinnedTopSource: RevoGrid.DataType[] = [];\n /** Pinned bottom Source: {[T in ColumnProp]: any} - defines pinned bottom rows data source. */\n @Prop() pinnedBottomSource: RevoGrid.DataType[] = [];\n /** Row properies applied */\n @Prop() rowDefinitions: RevoGrid.RowDefinition[] = [];\n\n /** Custom editors register */\n @Prop() editors: Edition.Editors = {};\n\n /**\n * Custom grid plugins\n * Has to be predefined during first grid init\n * Every plugin should be inherited from BasePlugin\n */\n @Prop() plugins: RevoPlugin.PluginClass[];\n\n /** Types\n * Every type represent multiple column properties\n * Types will be merged but can be replaced with column properties\n */\n @Prop() columnTypes: { [name: string]: RevoGrid.ColumnType } = {};\n\n /** Theme name */\n @Prop({ reflect: true, mutable: true }) theme: ThemeSpace.Theme = 'default';\n\n /**\n * Row class property\n * Define this property in rgRow object and this will be mapped as rgRow class\n */\n @Prop({ reflect: true }) rowClass: string = '';\n\n /**\n * Autosize config\n * Enable columns autoSize, for more details check @autoSizeColumn plugin\n * By default disabled, hence operation is not resource efficient\n * true to enable with default params (double header separator click for autosize)\n * or provide config\n */\n @Prop() autoSizeColumn: boolean | AutoSizeColumnConfig = false;\n\n /**\n * Enables filter plugin\n * Can be boolean\n * Can be filter collection\n */\n @Prop() filter: boolean | ColumnFilterConfig = false;\n\n /**\n * Enables column move plugin\n * Can be boolean\n */\n @Prop() canMoveColumns: boolean = false;\n /**\n * Trimmed rows\n * Functionality which allows to hide rows from main data set\n * @trimmedRows are physical rgRow indexes to hide\n */\n @Prop() trimmedRows: Record<number, boolean> = {};\n\n /**\n * Enables export plugin\n * Can be boolean\n * Can be export options\n */\n @Prop() exporting = false;\n\n /**\n * Group models by provided properties\n * Define properties to be groped by\n */\n @Prop() grouping: GroupingOptions;\n\n /**\n * Defines stretch strategy for columns with @StretchColumn plugin\n * if there are more space on the right last column size would be increased\n */\n @Prop() stretch: boolean | string = true;\n\n // --------------------------------------------------------------------------\n //\n // Events\n //\n // --------------------------------------------------------------------------\n\n /**\n * Before edit event.\n * Triggered before edit data applied.\n * Use e.preventDefault() to prevent edit data set and use you own.\n * Use e.val = {your value} to replace edit result with your own.\n */\n @Event() beforeedit: EventEmitter<Edition.BeforeSaveDataDetails>;\n\n /**\n * Before range edit event.\n * Triggered before range data applied, when range selection happened.\n * Use e.preventDefault() to prevent edit data set and use you own.\n */\n @Event() beforerangeedit: EventEmitter<Edition.BeforeRangeSaveDataDetails>;\n\n /**\n * After edit.\n * Triggered when after data applied or Range changeged.\n */\n @Event() afteredit: EventEmitter<Edition.BeforeSaveDataDetails | Edition.BeforeRangeSaveDataDetails>;\n\n /**\n * Before autofill.\n * Triggered before autofill applied.\n * Use e.preventDefault() to prevent edit data apply.\n */\n @Event() beforeautofill: EventEmitter<Selection.ChangedRange>;\n\n /**\n * Before range apply.\n * Triggered before range applied.\n * Use e.preventDefault() to prevent range.\n */\n @Event() beforeaange: EventEmitter<Selection.ChangedRange>;\n\n /**\n * Triggered after focus render finished.\n * Can be used to access a focus element through @event.target\n */\n @Event() afterfocus: EventEmitter<{ model: any; column: RevoGrid.ColumnRegular; }>;\n\n /**\n * Before rgRow order apply.\n * Use e.preventDefault() to prevent rgRow order change.\n */\n @Event() roworderchanged: EventEmitter<{ from: number; to: number }>;\n\n /**\n * Before source update sorting apply.\n * Use this event if you intended to prevent sorting on data update.\n * Use e.preventDefault() to prevent sorting data change during rows source update.\n */\n @Event() beforesourcesortingapply: EventEmitter;\n\n /**\n * Before sorting apply.\n * Use e.preventDefault() to prevent sorting data change.\n */\n @Event() beforesortingapply: EventEmitter<{\n column: RevoGrid.ColumnRegular;\n order: 'desc' | 'asc';\n additive: boolean;\n }>;\n /**\n * Before sorting event.\n * Initial sorting triggered, if this event stops no other event called.\n * Use e.preventDefault() to prevent sorting.\n */\n @Event() beforesorting: EventEmitter<{\n column: RevoGrid.ColumnRegular;\n order: 'desc' | 'asc';\n additive: boolean;\n }>;\n\n /**\n * Row order change started.\n * Use e.preventDefault() to prevent rgRow order change.\n * Use e.text = 'new name' to change item name on start.\n */\n @Event() rowdragstart: EventEmitter<{ pos: RevoGrid.PositionItem; text: string }>;\n\n /**\n * On header click.\n */\n @Event() headerclick: EventEmitter<RevoGrid.ColumnRegular>;\n\n /**\n * Before cell focus changed.\n * Use e.preventDefault() to prevent cell focus change.\n */\n @Event() beforecellfocus: EventEmitter<Edition.BeforeSaveDataDetails>;\n\n /**\n * Before grid focus lost happened.\n * Use e.preventDefault() to prevent cell focus change.\n */\n @Event() beforefocuslost: EventEmitter<FocusedData|null>;\n /**\n * Before data apply.\n * You can override data source here\n */\n @Event() beforesourceset: EventEmitter<{\n type: RevoGrid.DimensionRows;\n source: RevoGrid.DataType[];\n }>;\n\n /** After rows updated */\n @Event() aftersourceset: EventEmitter<{\n type: RevoGrid.DimensionRows;\n source: RevoGrid.DataType[];\n }>;\n\n /** Before column update */\n @Event() beforecolumnsset: EventEmitter<ColumnCollection>;\n\n /** Before column applied but after column set gathered and viewport updated */\n @Event() beforecolumnapplied: EventEmitter<ColumnCollection>;\n \n\n /** Column updated */\n @Event() aftercolumnsset: EventEmitter<{\n columns: ColumnCollection;\n order: Record<RevoGrid.ColumnProp, 'asc' | 'desc'>;\n }>;\n\n /**\n * Before filter applied to data source\n * Use e.preventDefault() to prevent cell focus change\n * Update @collection if you wish to change filters\n */\n @Event() beforefilterapply: EventEmitter<{ collection: FilterCollection }>;\n\n /**\n * Before filter trimmed values\n * Use e.preventDefault() to prevent value trimming and filter apply\n * Update @collection if you wish to change filters\n * Update @itemsToFilter if you wish to filter indexes of trimming\n */\n @Event() beforefiltertrimmed: EventEmitter<{ collection: FilterCollection; itemsToFilter: Record<number, boolean> }>;\n\n /**\n * Before trimmed values\n * Use e.preventDefault() to prevent value trimming\n * Update @trimmed if you wish to filter indexes of trimming\n */\n @Event() beforetrimmed: EventEmitter<{ trimmed: Record<number, boolean>; trimmedType: string; type: string }>;\n\n /**\n * Notify trimmed applied\n */\n @Event() aftertrimmed: EventEmitter;\n\n /**\n * Triggered when view port scrolled\n */\n @Event() viewportscroll: EventEmitter<RevoGrid.ViewPortScrollEvent>;\n /**\n * Before export\n * Use e.preventDefault() to prevent export\n * Replace data in Event in case you want to modify it in export\n */\n @Event() beforeexport: EventEmitter<DataInput>;\n\n /**\n * Before edit started\n * Use e.preventDefault() to prevent edit\n */\n @Event() beforeeditstart: EventEmitter<Edition.BeforeSaveDataDetails>;\n /**\n * After column resize\n * Get resized columns\n */\n @Event() aftercolumnresize: EventEmitter<Record<RevoGrid.ColumnProp, RevoGrid.ColumnRegular>>;\n\n // --------------------------------------------------------------------------\n //\n // Methods\n //\n // --------------------------------------------------------------------------\n /**\n * Refreshes data viewport.\n * Can be specific part as rgRow or pinned rgRow or 'all' by default.\n */\n @Method() async refresh(type: RevoGrid.DimensionRows | 'all' = 'all') {\n this.dataProvider.refresh(type);\n }\n\n /** Scrolls view port to specified rgRow index */\n @Method() async scrollToRow(coordinate: number = 0) {\n const y = this.dimensionProvider.getViewPortPos({\n coordinate,\n dimension: 'rgRow',\n });\n await this.scrollToCoordinate({ y });\n }\n\n /** Scrolls view port to specified column index */\n @Method() async scrollToColumnIndex(coordinate: number = 0) {\n const x = this.dimensionProvider.getViewPortPos({\n coordinate,\n dimension: 'rgCol',\n });\n await this.scrollToCoordinate({ x });\n }\n\n /** Scrolls view port to specified column prop */\n @Method() async scrollToColumnProp(prop: RevoGrid.ColumnProp) {\n const coordinate = this.columnProvider.getColumnIndexByProp(prop, 'rgCol');\n if (coordinate < 0) {\n // already on the screen\n return;\n }\n const x = this.dimensionProvider.getViewPortPos({\n coordinate,\n dimension: 'rgCol',\n });\n await this.scrollToCoordinate({ x });\n }\n\n /** Update columns */\n @Method() async updateColumns(cols: RevoGrid.ColumnRegular[]) {\n this.columnProvider.updateColumns(cols);\n }\n\n /** Add trimmed by type */\n @Method() async addTrimmed(trimmed: Record<number, boolean>, trimmedType = 'external', type: RevoGrid.DimensionRows = 'rgRow') {\n const event = this.beforetrimmed.emit({\n trimmed,\n trimmedType,\n type,\n });\n if (event.defaultPrevented) {\n return event;\n }\n this.dataProvider.setTrimmed({ [trimmedType]: event.detail.trimmed }, type);\n this.aftertrimmed.emit();\n return event;\n }\n\n /** Scrolls view port to coordinate */\n @Method() async scrollToCoordinate(cell: Partial<Selection.Cell>) {\n this.viewport?.scrollToCell(cell);\n }\n\n /** Bring cell to edit mode */\n @Method() async setCellEdit(rgRow: number, prop: RevoGrid.ColumnProp, rowSource: RevoGrid.DimensionRows = 'rgRow') {\n const rgCol = ColumnDataProvider.getColumnByProp(this.columns, prop);\n if (!rgCol) {\n return;\n }\n await timeout();\n const colGroup = rgCol.pin || 'rgCol';\n this.viewport?.setEdit(rgRow, this.columnProvider.getColumnIndexByProp(prop, colGroup), colGroup, rowSource);\n }\n\n /**\n * Register new virtual node inside of grid\n * Used for additional items creation such as plugin elements\n */\n @Method() async registerVNode(elements: VNode[]) {\n this.extraElements.push(...elements);\n this.extraElements = [...this.extraElements];\n }\n\n /** Get data from source */\n @Method() async getSource(type: RevoGrid.DimensionRows = 'rgRow') {\n return this.dataProvider.stores[type].store.get('source');\n }\n\n /**\n * Get data from visible part of source\n * Trimmed/filtered rows will be excluded\n * @param type - type of source\n */\n @Method() async getVisibleSource(type: RevoGrid.DimensionRows = 'rgRow') {\n return getVisibleSourceItem(this.dataProvider.stores[type].store);\n }\n\n /**\n * Provides access to rows internal store observer\n * Can be used for plugin support\n * @param type - type of source\n */\n @Method() async getSourceStore(type: RevoGrid.DimensionRows = 'rgRow'): Promise<RowSource> {\n return this.dataProvider.stores[type].store;\n }\n /**\n * Provides access to column internal store observer\n * Can be used for plugin support\n * @param type - type of column\n */\n @Method() async getColumnStore(type: RevoGrid.DimensionCols = 'rgCol'): Promise<ColumnSource> {\n return this.columnProvider.stores[type].store;\n }\n\n /**\n * Update column sorting\n * @param column - full column details to update\n * @param index - virtual column index\n * @param order - order to apply\n */\n @Method() async updateColumnSorting(column: RevoGrid.ColumnRegular, index: number, order: 'asc' | 'desc', additive: boolean) {\n return this.columnProvider.updateColumnSorting(column, index, order, additive);\n }\n\n /**\n * Clears column sorting\n */\n @Method() async clearSorting() {\n this.columnProvider.clearSorting();\n }\n\n /**\n * Receive all columns in data source\n */\n @Method() async getColumns(): Promise<RevoGrid.ColumnRegular[]> {\n return this.columnProvider.getColumns();\n }\n\n /**\n * Clear current grid focus\n */\n @Method() async clearFocus() {\n const focused = this.viewport?.getFocused();\n const event = this.beforefocuslost.emit(focused);\n if (event.defaultPrevented) {\n return;\n }\n this.selectionStoreConnector.clearAll();\n this.viewport?.clearFocused();\n }\n\n /**\n * Get all active plugins instances\n */\n @Method() async getPlugins(): Promise<RevoPlugin.Plugin[]> {\n return [...this.internalPlugins];\n }\n\n /**\n * Get the currently focused cell.\n */\n @Method() async getFocused(): Promise<FocusedData|null> {\n return this.viewport?.getFocused();\n }\n\n /**\n * Get the currently selected Range.\n */\n @Method() async getSelectedRange(): Promise<Selection.RangeArea|null> {\n return this.viewport?.getSelectedRange();\n }\n\n\n // --------------------------------------------------------------------------\n //\n // Listeners outside scope\n //\n // --------------------------------------------------------------------------\n \n /** Clear data which is outside of grid container */\n private handleOutsideClick({ target }: { target: HTMLElement | null }) {\n if (!target?.closest(`[${UUID}=\"${this.uuid}\"]`)) {\n this.clearFocus();\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // Listeners\n //\n // --------------------------------------------------------------------------\n\n\n\n /** DRAG AND DROP */\n @Listen('internalRowDragStart') onRowDragStarted(e: CustomEvent<{ pos: RevoGrid.PositionItem; text: string; event: MouseEvent }>) {\n e.cancelBubble = true;\n const dragStart = this.rowdragstart.emit(e.detail);\n if (dragStart.defaultPrevented) {\n e.preventDefault();\n return;\n }\n this.orderService?.start(this.element, { ...e.detail, ...dragStart.detail });\n }\n\n @Listen('internalRowDragEnd') onRowDragEnd() {\n this.orderService?.end();\n }\n\n @Listen('internalRowDrag') onRowDrag({ detail }: CustomEvent<RevoGrid.PositionItem>) {\n this.orderService?.move(detail);\n }\n\n @Listen('internalRowMouseMove') onRowMouseMove(e: CustomEvent<Selection.Cell>): void {\n e.cancelBubble = true;\n this.orderService?.moveTip(e.detail);\n }\n\n @Listen('internalCellEdit') async onBeforeEdit(e: CustomEvent<Edition.BeforeSaveDataDetails>) {\n e.cancelBubble = true;\n const { defaultPrevented, detail } = this.beforeedit.emit(e.detail);\n await timeout();\n // apply data\n if (!defaultPrevented) {\n this.dataProvider.setCellData(detail);\n this.afteredit.emit(detail);\n }\n }\n\n @Listen('internalRangeDataApply') onBeforeRangeEdit(e: CustomEvent<Edition.BeforeRangeSaveDataDetails>) {\n e.cancelBubble = true;\n const { defaultPrevented } = this.beforerangeedit.emit(e.detail);\n if (defaultPrevented) {\n e.preventDefault();\n return;\n }\n this.afteredit.emit(e.detail);\n }\n\n @Listen('internalSelectionChanged') onRangeChanged(e: CustomEvent<Selection.ChangedRange>) {\n e.cancelBubble = true;\n const beforeaange = this.beforeaange.emit(e.detail);\n if (beforeaange.defaultPrevented) {\n e.preventDefault();\n }\n const beforeFill = this.beforeautofill.emit(e.detail);\n if (beforeFill.defaultPrevented) {\n return;\n }\n }\n\n @Listen('initialRowDropped') onRowDropped(e: CustomEvent<{ from: number; to: number }>) {\n e.cancelBubble = true;\n const { defaultPrevented } = this.roworderchanged.emit(e.detail);\n if (defaultPrevented) {\n e.preventDefault();\n }\n }\n\n @Listen('initialHeaderClick') onHeaderClick(e: CustomEvent<RevoGrid.InitialHeaderClick>) {\n const { defaultPrevented } = this.headerclick.emit({\n ...e.detail.column,\n originalEvent: e.detail.originalEvent,\n });\n if (defaultPrevented) {\n e.preventDefault();\n }\n }\n\n @Listen('internalFocusCell') onCellFocus(e: CustomEvent<Edition.BeforeSaveDataDetails>) {\n e.cancelBubble = true;\n const { defaultPrevented } = this.beforecellfocus.emit(e.detail);\n if (!this.canFocus || defaultPrevented) {\n e.preventDefault();\n }\n }\n\n // --------------------------------------------------------------------------\n //\n // Private Properties\n //\n // --------------------------------------------------------------------------\n\n // for internal plugin usage\n @State() extraElements: VNode[] = [];\n\n uuid: string | null = null;\n columnProvider: ColumnDataProvider;\n dataProvider: DataProvider;\n dimensionProvider: DimensionProvider;\n viewportProvider: ViewportProvider;\n private themeService: ThemeService;\n private viewport: ViewportService | null = null;\n\n private orderService: OrdererService;\n private selectionStoreConnector: SelectionStoreConnector;\n private scrollingService: GridScrollingService;\n\n /**\n * Plugins\n * Define plugins collection\n */\n private internalPlugins: RevoPlugin.Plugin[] = [];\n private subscribers: Record<string, () => void> = {};\n\n @Element() element: HTMLRevoGridElement;\n\n @Watch('columns') columnChanged(newVal: RevoGrid.ColumnDataSchema[] = []) {\n this.dimensionProvider.dropColumns();\n const columnGather = ColumnDataProvider.getColumns(newVal, 0, this.columnTypes);\n this.beforecolumnsset.emit(columnGather);\n for (let type of columnTypes) {\n const items = columnGather.columns[type];\n this.dimensionProvider.setColumns(type, items.length, ColumnDataProvider.getSizes(items), type !== 'rgCol');\n }\n this.beforecolumnapplied.emit(columnGather);\n const columns = this.columnProvider.setColumns(columnGather);\n this.aftercolumnsset.emit({\n columns,\n order: this.columnProvider.order,\n });\n }\n\n @Watch('theme') themeChanged(t: ThemeSpace.Theme) {\n this.themeService.register(t);\n this.dimensionProvider.setSettings({ originItemSize: this.themeService.rowSize, frameOffset: this.frameSize || 0 }, 'rgRow');\n this.dimensionProvider.setSettings({ originItemSize: this.colSize, frameOffset: this.frameSize || 0 }, 'rgCol');\n }\n\n @Watch('source') dataChanged(source: RevoGrid.DataType[] = []) {\n let newSource = [...source];\n const beforesourceset = this.beforesourceset.emit({\n type: 'rgRow',\n source: newSource,\n });\n newSource = beforesourceset.detail.source;\n\n newSource = this.dataProvider.setData(newSource, 'rgRow');\n this.aftersourceset.emit({\n type: 'rgRow',\n source: newSource,\n });\n }\n\n @Watch('pinnedBottomSource') dataBottomChanged(newVal: RevoGrid.DataType[] = []) {\n this.dataProvider.setData(newVal, 'rowPinEnd');\n }\n\n @Watch('pinnedTopSource') dataTopChanged(newVal: RevoGrid.DataType[] = []) {\n this.dataProvider.setData(newVal, 'rowPinStart');\n }\n\n @Watch('rowDefinitions') rowDefChanged(newVal: RevoGrid.RowDefinition[] = []) {\n if (!newVal.length) {\n return;\n }\n const rows = reduce(\n newVal,\n (\n r: Partial<\n {\n [T in RevoGrid.DimensionRows]: {\n sizes?: Record<number, number>;\n };\n }\n >,\n v,\n ) => {\n if (!r[v.type]) {\n r[v.type] = {};\n }\n if (v.size) {\n if (!r[v.type].sizes) {\n r[v.type].sizes = {};\n }\n r[v.type].sizes[v.index] = v.size;\n }\n return r;\n },\n {},\n );\n each(rows, (r, k: RevoGrid.DimensionRows) => {\n if (r.sizes) {\n this.dimensionProvider.setDimensionSize(k, r.sizes);\n }\n });\n }\n\n @Watch('trimmedRows') trimmedRowsChanged(newVal: Record<number, boolean> = {}) {\n this.addTrimmed(newVal);\n }\n\n @Watch('grouping') groupingChanged(newVal: GroupingOptions = {}) {\n let grPlugin: GroupingRowPlugin | undefined;\n for (let p of this.internalPlugins) {\n const isGrouping = (p as unknown) as GroupingRowPlugin;\n if (isGrouping.setGrouping) {\n grPlugin = isGrouping;\n break;\n }\n }\n if (!grPlugin) {\n return;\n }\n grPlugin.setGrouping(newVal || {});\n }\n\n @Watch('stretch') applyStretch(isStretch: boolean | string) {\n if (isStretch === 'false') {\n isStretch = false;\n }\n let stretch = this.internalPlugins.filter(p => isStretchPlugin(p))[0];\n if (isStretch) {\n if(!stretch) {\n this.internalPlugins.push(new StretchColumn(this.element, this.dimensionProvider));\n } else {\n (stretch as StretchColumn).applyStretch(this.columnProvider.getRawColumns());\n }\n } else if (stretch) {\n const index = this.internalPlugins.indexOf(stretch);\n this.internalPlugins.splice(index, 1);\n }\n }\n\n connectedCallback() {\n this.viewportProvider = new ViewportProvider();\n this.themeService = new ThemeService({\n rowSize: this.rowSize,\n });\n this.dimensionProvider = new DimensionProvider(this.viewportProvider);\n this.columnProvider = new ColumnDataProvider();\n this.dataProvider = new DataProvider(this.dimensionProvider);\n this.uuid = `${new Date().getTime()}-rvgrid`;\n\n const pluginData = {\n data: this.dataProvider,\n column: this.columnProvider,\n dimension: this.dimensionProvider,\n viewport: this.viewportProvider,\n selection: this.selectionStoreConnector,\n };\n\n if (this.autoSizeColumn) {\n this.internalPlugins.push(\n new AutoSize(\n this.element,\n {\n dataProvider: this.dataProvider,\n columnProvider: this.columnProvider,\n dimensionProvider: this.dimensionProvider,\n },\n typeof this.autoSizeColumn === 'object' ? this.autoSizeColumn : undefined,\n ),\n );\n }\n if (this.filter) {\n this.internalPlugins.push(new FilterPlugin(this.element, this.uuid, typeof this.filter === 'object' ? this.filter : undefined));\n }\n if (this.exporting) {\n this.internalPlugins.push(new ExportFilePlugin(this.element));\n }\n this.internalPlugins.push(new SortingPlugin(this.element));\n if (this.plugins) {\n this.plugins.forEach(p => {\n this.internalPlugins.push(new p(this.element, pluginData));\n });\n }\n\n if (this.canMoveColumns) {\n this.internalPlugins.push(new ColumnPlugin(this.element, pluginData));\n }\n\n this.internalPlugins.push(\n new GroupingRowPlugin(this.element, {\n dataProvider: this.dataProvider,\n columnProvider: this.columnProvider,\n }),\n );\n this.applyStretch(this.stretch);\n this.themeChanged(this.theme);\n this.columnChanged(this.columns);\n this.dataChanged(this.source);\n this.dataTopChanged(this.pinnedTopSource);\n this.dataBottomChanged(this.pinnedBottomSource);\n this.trimmedRowsChanged(this.trimmedRows);\n this.rowDefChanged(this.rowDefinitions);\n this.groupingChanged(this.grouping);\n \n this.selectionStoreConnector = new SelectionStoreConnector();\n this.scrollingService = new GridScrollingService((e: RevoGrid.ViewPortScrollEvent) => {\n this.dimensionProvider.setViewPortCoordinate({\n coordinate: e.coordinate,\n type: e.dimension,\n });\n this.viewportscroll.emit(e);\n });\n this.subscribers = { 'click': this.handleOutsideClick.bind(this) };\n for (let type in this.subscribers) {\n document.addEventListener(type, this.subscribers[type]);\n }\n }\n\n disconnectedCallback() {\n // destroy plugins on element disconnect\n each(this.internalPlugins, p => p.destroy());\n this.internalPlugins = [];\n // clear events\n for (let type in this.subscribers) {\n document.removeEventListener(type, this.subscribers[type]);\n delete this.subscribers[type];\n }\n }\n\n render() {\n const contentHeight = this.dimensionProvider.stores['rgRow'].store.get('realSize');\n this.viewport = new ViewportService({\n columnProvider: this.columnProvider,\n dataProvider: this.dataProvider,\n dimensionProvider: this.dimensionProvider,\n viewportProvider: this.viewportProvider,\n uuid: this.uuid,\n scrollingService: this.scrollingService,\n orderService: this.orderService,\n selectionStoreConnector: this.selectionStoreConnector,\n resize: c => this.aftercolumnresize.emit(c)\n }, contentHeight);\n\n const views: VNode[] = [];\n if (this.rowHeaders) {\n const anyView = this.viewport.columns[0];\n views.push(<revogr-row-headers\n height={contentHeight}\n resize={this.resize}\n dataPorts={anyView.dataPorts}\n headerProp={anyView.headerProp}\n uiid={anyView.prop[UUID]}\n rowHeaderColumn={typeof this.rowHeaders === 'object' ? this.rowHeaders : undefined}\n onScrollViewport={({ detail: e }: CustomEvent) => this.scrollingService.onScroll(e, 'headerRow')}\n onElementToScroll={({ detail: e }: CustomEvent) => this.scrollingService.registerElement(e, 'headerRow')}\n />);\n }\n views.push(<ViewPortSections\n columnFilter={!!this.filter}\n resize={this.resize}\n readonly={this.readonly}\n range={this.range}\n rowClass={this.rowClass}\n editors={this.editors}\n useClipboard={this.useClipboard}\n columns={this.viewport.columns}\n onCancelEdit={() => {\n this.selectionStoreConnector.setEdit(false);\n }}\n onEdit={detail => {\n const event = this.beforeeditstart.emit(detail);\n if (!event.defaultPrevented) {\n this.selectionStoreConnector.setEdit(detail.val);\n }\n }}\n registerElement={(e, k) => this.scrollingService.registerElement(e, k)}\n onScroll={details => this.scrollingService.onScroll(details)}\n />);\n return (\n <Host {...{ [`${UUID}`]: this.uuid }}>\n <RevoViewPort\n viewports={this.viewportProvider.stores}\n dimensions={this.dimensionProvider.stores}\n orderRef={e => (this.orderService = e)}\n registerElement={(e, k) => this.scrollingService.registerElement(e, k)}\n nakedClick={() => this.viewport.clearEdit()}\n onScroll={details => this.scrollingService.onScroll(details)}\n >{views}</RevoViewPort>\n {this.extraElements}\n </Host>\n );\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"viewport.helpers.js","sourceRoot":"","sources":["../../../src/components/revo-grid/viewport.helpers.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC;AACpC,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC;AACpC,MAAM,CAAC,MAAM,YAAY,GAAG,SAAS,CAAC;AACtC,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC;AAEhC,wDAAwD;AACxD,MAAM,UAAU,WAAW,CAAC,IAAoB,EAAE,OAAoC;EACpF,OAAO;IACL,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;IACtD,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC;GAClD,CAAC;AACJ,CAAC","sourcesContent":["/** Collect data for pinned columns in required @ViewportProps format */\nimport { RevoGrid, Selection } from '../../interfaces';\nimport { ViewportColumn } from './viewport.interfaces';\n\nexport const HEADER_SLOT = 'header';\nexport const FOOTER_SLOT = 'footer';\nexport const CONTENT_SLOT = 'content';\nexport const DATA_SLOT = 'data';\n\n/** Receive last visible in viewport by required type */\nexport function getLastCell(data: ViewportColumn, rowType: RevoGrid.MultiDimensionType): Selection.Cell {\n return {\n x: data.viewports[data.colType].store.get('realCount'),\n y: data.viewports[rowType].store.get('realCount'),\n };\n}\n"]}