@revolist/revogrid 3.6.4 → 3.6.5

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 +3 -5
  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-25dce8a1.js → debounce-6cea2774.js} +1 -3
  45. package/dist/cjs/dom-fcb646f0.js +78 -0
  46. package/dist/cjs/{index-5f3dfe40.js → index-cb904e00.js} +283 -577
  47. package/dist/cjs/index.cjs.js +0 -2
  48. package/dist/cjs/loader.cjs.js +16 -5
  49. package/dist/cjs/{resize-observer-7f159b88.js → resize-observer-bf327d6a.js} +3 -5
  50. package/dist/cjs/revo-grid.cjs.js +59 -11
  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 +2 -2
  55. package/dist/collection/components/button/button.js +0 -1
  56. package/dist/collection/components/clipboard/revogr-clipboard.js +80 -82
  57. package/dist/collection/components/data/cellRenderer.js +2 -2
  58. package/dist/collection/components/data/columnService.js +3 -4
  59. package/dist/collection/components/data/revogr-data.js +219 -240
  60. package/dist/collection/components/data/rowRenderer.js +0 -1
  61. package/dist/collection/components/header/headerCellRenderer.js +3 -2
  62. package/dist/collection/components/header/headerRenderer.js +3 -2
  63. package/dist/collection/components/header/revogr-header.js +229 -244
  64. package/dist/collection/components/order/orderRenderer.js +5 -2
  65. package/dist/collection/components/order/revogr-order-editor.js +248 -257
  66. package/dist/collection/components/order/rowOrderService.js +0 -1
  67. package/dist/collection/components/overlay/autofill.service.js +0 -1
  68. package/dist/collection/components/overlay/clipboard.service.js +0 -1
  69. package/dist/collection/components/overlay/editors/edit.utils.js +0 -1
  70. package/dist/collection/components/overlay/editors/text.js +0 -1
  71. package/dist/collection/components/overlay/keyboard.service.js +0 -1
  72. package/dist/collection/components/overlay/revogr-edit.js +94 -106
  73. package/dist/collection/components/overlay/revogr-overlay-selection.js +466 -488
  74. package/dist/collection/components/overlay/selection.utils.js +0 -1
  75. package/dist/collection/components/revo-grid/revo-grid-style.css +13 -7
  76. package/dist/collection/components/revo-grid/revo-grid.js +1615 -1562
  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 +5 -2
  80. package/dist/collection/components/revo-grid/viewport.resize.service.js +0 -1
  81. package/dist/collection/components/revo-grid/viewport.scrolling.service.js +0 -1
  82. package/dist/collection/components/revo-grid/viewport.section.js +4 -2
  83. package/dist/collection/components/revo-grid/viewport.service.js +0 -1
  84. package/dist/collection/components/rowHeaders/revogr-row-headers.js +142 -151
  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 +164 -161
  88. package/dist/collection/components/scrollable/revogr-scroll-virtual.js +135 -147
  89. package/dist/collection/components/selection-focus/revogr-focus.js +125 -141
  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 +74 -83
  92. package/dist/collection/global/global.js +0 -1
  93. package/dist/collection/index.js +0 -1
  94. package/dist/collection/plugins/autoSizeColumn.js +0 -1
  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 +0 -1
  98. package/dist/collection/plugins/export/export.plugin.js +0 -1
  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 +0 -1
  103. package/dist/collection/plugins/filter/conditions/number/lessThan.js +0 -1
  104. package/dist/collection/plugins/filter/conditions/number/lessThanOrEqual.js +0 -1
  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 +11 -6
  109. package/dist/collection/plugins/filter/filter.plugin.js +0 -1
  110. package/dist/collection/plugins/filter/filter.pop.js +234 -239
  111. package/dist/collection/plugins/filter/filter.service.js +0 -1
  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 +0 -1
  115. package/dist/collection/plugins/groupingColumn/grouping.col.plugin.js +0 -1
  116. package/dist/collection/plugins/groupingColumn/headerGroupRenderer.js +0 -1
  117. package/dist/collection/plugins/groupingRow/grouping.const.js +0 -1
  118. package/dist/collection/plugins/groupingRow/grouping.row.expand.service.js +0 -1
  119. package/dist/collection/plugins/groupingRow/grouping.row.plugin.js +5 -6
  120. package/dist/collection/plugins/groupingRow/grouping.row.renderer.js +7 -3
  121. package/dist/collection/plugins/groupingRow/grouping.row.types.js +3 -1
  122. package/dist/collection/plugins/groupingRow/grouping.service.js +0 -1
  123. package/dist/collection/plugins/groupingRow/grouping.trimmed.service.js +0 -1
  124. package/dist/collection/plugins/moveColumn/columnDragPlugin.js +0 -1
  125. package/dist/collection/plugins/moveColumn/columnOrderHandler.js +0 -1
  126. package/dist/collection/plugins/sorting/sorting.plugin.js +3 -4
  127. package/dist/collection/plugins/sorting/sorting.sign.js +0 -1
  128. package/dist/collection/plugins/stretchPlugin.js +0 -1
  129. package/dist/collection/plugins/trimmed/trimmed.plugin.js +0 -1
  130. package/dist/collection/services/cell.helpers.js +0 -1
  131. package/dist/collection/services/column.data.provider.js +7 -8
  132. package/dist/collection/services/data.provider.js +0 -1
  133. package/dist/collection/services/dimension.provider.js +0 -1
  134. package/dist/collection/services/localScrollService.js +0 -1
  135. package/dist/collection/services/resizable.directive.js +3 -2
  136. package/dist/collection/services/selection.store.connector.js +0 -1
  137. package/dist/collection/services/viewport.provider.js +0 -1
  138. package/dist/collection/store/dataSource/data.proxy.js +0 -1
  139. package/dist/collection/store/dataSource/data.store.js +3 -4
  140. package/dist/collection/store/dimension/dimension.helpers.js +0 -1
  141. package/dist/collection/store/dimension/dimension.store.js +3 -5
  142. package/dist/collection/store/selection/selection.helpers.js +0 -1
  143. package/dist/collection/store/selection/selection.store.js +0 -1
  144. package/dist/collection/store/selection/selection.store.service.js +0 -1
  145. package/dist/collection/store/storeTypes.js +0 -1
  146. package/dist/collection/store/viewPort/viewport.helpers.js +0 -1
  147. package/dist/collection/store/viewPort/viewport.store.js +0 -1
  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 +5 -6
  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 +0 -1
  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-7221834a.js → debounce-e4e6dd45.js} +1 -3
  163. package/dist/esm/dom-21bd1807.js +76 -0
  164. package/dist/esm/{index-068eebfc.js → index-6f753b3c.js} +279 -577
  165. package/dist/esm/index.js +0 -2
  166. package/dist/esm/loader.js +16 -5
  167. package/dist/esm/polyfills/css-shim.js +1 -1
  168. package/dist/esm/{resize-observer-d817c4b6.js → resize-observer-00c48d78.js} +3 -5
  169. package/dist/esm/revo-grid.js +60 -9
  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-7221834a.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-d817c4b6.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-fa358fc7.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-64c845eb.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 +2 -0
  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 +19 -91
  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 +0 -9
  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-25dce8a1.js.map +0 -1
  303. package/dist/cjs/index-5f3dfe40.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-7f159b88.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-7221834a.js.map +0 -1
  414. package/dist/esm/index-068eebfc.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-d817c4b6.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-7221834a.js.map +0 -1
  423. package/dist/esm-es5/index-068eebfc.js +0 -5
  424. package/dist/esm-es5/index-068eebfc.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-d817c4b6.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-7221834a.js +0 -5
  433. package/dist/revo-grid/debounce-7221834a.js.map +0 -1
  434. package/dist/revo-grid/debounce-fa358fc7.system.js.map +0 -1
  435. package/dist/revo-grid/index-068eebfc.js +0 -6
  436. package/dist/revo-grid/index-068eebfc.js.map +0 -1
  437. package/dist/revo-grid/index-36847b63.system.js +0 -6
  438. package/dist/revo-grid/index-36847b63.system.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-64c845eb.system.js.map +0 -1
  442. package/dist/revo-grid/resize-observer-d817c4b6.js +0 -5
  443. package/dist/revo-grid/resize-observer-d817c4b6.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.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-data.js","mappings":";;;;;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
@@ -1 +0,0 @@
1
- {"file":"revogr-data2.js","mappings":"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","names":[],"sources":["./src/components/data/cellRenderer.tsx","./src/components/data/rowRenderer.tsx","./src/plugins/groupingRow/grouping.row.renderer.tsx","./src/components/data/revogr-data-style.scss?tag=revogr-data","./src/components/data/revogr-data.tsx"],"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","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","import { h } from '@stencil/core';\nimport RowRenderer, { RowProps } from '../../components/data/rowRenderer';\nimport { RevoGrid } from '../../interfaces';\nimport { GROUP_DEPTH, GROUP_EXPANDED, GROUP_EXPAND_BTN, GROUP_EXPAND_EVENT, PSEUDO_GROUP_ITEM } from './grouping.const';\nimport { GroupLabelTemplateFunc } from './grouping.row.types';\n\ninterface GroupRowPros extends RowProps {\n model: RevoGrid.DataType;\n hasExpand: boolean;\n groupingCustomRenderer?: GroupLabelTemplateFunc;\n}\ntype Props = GroupRowPros & RevoGrid.PositionItem;\n\nfunction expandEvent(e: MouseEvent, model: RevoGrid.DataType, virtualIndex: number) {\n const event = new CustomEvent(GROUP_EXPAND_EVENT, {\n detail: {\n model,\n virtualIndex,\n },\n cancelable: true,\n bubbles: true,\n });\n e.target.dispatchEvent(event);\n}\n\nconst GroupingRowRenderer = (props: Props) => {\n const { model, itemIndex, hasExpand, groupingCustomRenderer } = props;\n const name: string = model[PSEUDO_GROUP_ITEM];\n const expanded: boolean = model[GROUP_EXPANDED];\n const depth = parseInt(model[GROUP_DEPTH], 10) || 0;\n if (!hasExpand) {\n return <RowRenderer {...props} rowClass=\"groupingRow\" depth={depth} />;\n }\n\n if (groupingCustomRenderer) {\n return (\n <RowRenderer {...props} rowClass=\"groupingRow\" depth={depth}>\n <div onClick={e => expandEvent(e, model, itemIndex)}>\n {groupingCustomRenderer(h, { name, itemIndex, expanded, depth })}\n </div>\n </RowRenderer>\n );\n }\n\n return (\n <RowRenderer {...props} rowClass=\"groupingRow\" depth={depth}>\n <button class={{ [GROUP_EXPAND_BTN]: true }} onClick={e => expandEvent(e, model, itemIndex)}>\n <svg aria-hidden=\"true\" style={{ transform: `rotate(${!expanded ? -90 : 0}deg)` }} focusable=\"false\" viewBox=\"0 0 448 512\">\n <path\n fill=\"currentColor\"\n d=\"M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z\"\n ></path>\n </svg>\n </button>\n {name}\n </RowRenderer>\n );\n};\nexport default GroupingRowRenderer;\n","revogr-data {\n display: block;\n width: 100%;\n position: relative;\n\n .rgRow {\n position: absolute;\n width: 100%;\n left: 0;\n\n &.groupingRow {\n font-weight: 600;\n\n .group-expand {\n width: 25px;\n height: 100%;\n max-height: 25px;\n margin-right: 2px;\n background-color: transparent;\n border-color: transparent;\n\n svg {\n width: 7px;\n }\n }\n }\n }\n\n .revo-draggable {\n $w: 24px;\n\n border: none;\n height: 32px;\n display: inline-flex;\n outline: 0;\n padding: 0;\n font-size: 0.8125rem;\n box-sizing: border-box;\n align-items: center;\n white-space: nowrap;\n vertical-align: middle;\n justify-content: center;\n text-decoration: none;\n width: $w;\n height: 100%;\n cursor: pointer;\n\n > .revo-drag-icon {\n vertical-align: middle;\n display: inline-block;\n pointer-events: none;\n transition: background-color 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms, box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;\n }\n }\n\n .rgCell {\n top: 0;\n position: absolute;\n box-sizing: border-box;\n height: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n &.align-center {\n text-align: center;\n }\n &.align-left {\n text-align: left;\n }\n &.align-right {\n text-align: right;\n }\n }\n}\n","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"],"version":3}
@@ -1 +0,0 @@
1
- {"file":"revogr-edit.js","mappings":";;;;;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
@@ -1 +0,0 @@
1
- {"file":"revogr-edit2.js","mappings":"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","names":["isArray","isObjectLike","baseGetTag","strictIndexOf","baseFindIndex","baseIsNaN","arrayMap","baseValues","keys","isArrayLike","values","toInteger","isString","baseIndexOf","includes"],"sources":["./node_modules/lodash/isString.js","./src/utils/keyCodes.ts","./src/utils/platform.ts","./node_modules/lodash/_baseIsNaN.js","./node_modules/lodash/_strictIndexOf.js","./node_modules/lodash/_baseIndexOf.js","./node_modules/lodash/_baseValues.js","./node_modules/lodash/values.js","./node_modules/lodash/includes.js","./src/utils/keyCodes.utils.ts","./src/components/overlay/editors/text.tsx","./src/components/overlay/revogr-edit-style.scss?tag=revogr-edit","./src/components/overlay/revogr-edit.tsx"],"sourcesContent":["var baseGetTag = require('./_baseGetTag'),\n isArray = require('./isArray'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n}\n\nmodule.exports = isString;\n","enum codes {\n MOUSE_LEFT = 1,\n MOUSE_RIGHT = 3,\n MOUSE_MIDDLE = 2,\n BACKSPACE = 8,\n COMMA = 188,\n INSERT = 45,\n DELETE = 46,\n END = 35,\n ENTER = 13,\n ESCAPE = 27,\n CONTROL = 17,\n COMMAND_LEFT = 91,\n COMMAND_RIGHT = 93,\n COMMAND_FIREFOX = 224,\n ALT = 18,\n HOME = 36,\n PAGE_DOWN = 34,\n PAGE_UP = 33,\n PERIOD = 190,\n SPACE = 32,\n SHIFT = 16,\n CAPS_LOCK = 20,\n TAB = 9,\n ARROW_RIGHT = 39,\n ARROW_LEFT = 37,\n ARROW_UP = 38,\n ARROW_DOWN = 40,\n F1 = 112,\n F2 = 113,\n F3 = 114,\n F4 = 115,\n F5 = 116,\n F6 = 117,\n F7 = 118,\n F8 = 119,\n F9 = 120,\n F10 = 121,\n F11 = 122,\n F12 = 123,\n A = 65,\n C = 67,\n D = 68,\n F = 70,\n L = 76,\n O = 79,\n P = 80,\n S = 83,\n V = 86,\n X = 88,\n}\n\nenum codesLetter {\n ENTER = 'Enter',\n ENTER_NUM = 'NumpadEnter',\n V = 'KeyV',\n C = 'KeyC',\n ESCAPE = 'Escape',\n TAB = 'Tab',\n BACKSPACE = 'Backspace',\n DELETE = 'Delete',\n ARROW_RIGHT = 'ArrowRight',\n ARROW_LEFT = 'ArrowLeft',\n ARROW_UP = 'ArrowUp',\n ARROW_DOWN = 'ArrowDown',\n SHIFT = 'Shift',\n}\n\nexport default codes;\nexport { codesLetter };\n","enum osPlatform {\n mac = 'Mac',\n}\nexport default osPlatform;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var arrayMap = require('./_arrayMap');\n\n/**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\nfunction baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n}\n\nmodule.exports = baseValues;\n","var baseValues = require('./_baseValues'),\n keys = require('./keys');\n\n/**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\nfunction values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n}\n\nmodule.exports = values;\n","var baseIndexOf = require('./_baseIndexOf'),\n isArrayLike = require('./isArrayLike'),\n isString = require('./isString'),\n toInteger = require('./toInteger'),\n values = require('./values');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\nfunction includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n}\n\nmodule.exports = includes;\n","import KeyCodesEnum, { codesLetter } from './keyCodes';\nimport OsPlatform from './platform';\nimport includes from 'lodash/includes';\n\nexport function isLetterKey(code: number): boolean {\n return (\n code === 32 || // space\n (code >= 48 && code <= 57) ||\n (code >= 96 && code <= 111) ||\n (code >= 186 && code <= 192) ||\n (code >= 219 && code <= 222) ||\n code >= 226 ||\n (code >= 65 && code <= 90)\n ); // a-z\n}\n\nexport function isMetaKey(code: number): boolean {\n const keys: KeyCodesEnum[] = [\n KeyCodesEnum.ARROW_DOWN,\n KeyCodesEnum.ARROW_UP,\n KeyCodesEnum.ARROW_LEFT,\n KeyCodesEnum.ARROW_RIGHT,\n KeyCodesEnum.HOME,\n KeyCodesEnum.END,\n KeyCodesEnum.DELETE,\n KeyCodesEnum.BACKSPACE,\n KeyCodesEnum.F1,\n KeyCodesEnum.F2,\n KeyCodesEnum.F3,\n KeyCodesEnum.F4,\n KeyCodesEnum.F5,\n KeyCodesEnum.F6,\n KeyCodesEnum.F7,\n KeyCodesEnum.F8,\n KeyCodesEnum.F9,\n KeyCodesEnum.F10,\n KeyCodesEnum.F11,\n KeyCodesEnum.F12,\n KeyCodesEnum.TAB,\n KeyCodesEnum.PAGE_DOWN,\n KeyCodesEnum.PAGE_UP,\n KeyCodesEnum.ENTER,\n KeyCodesEnum.ESCAPE,\n KeyCodesEnum.SHIFT,\n KeyCodesEnum.CAPS_LOCK,\n KeyCodesEnum.ALT,\n ];\n\n return keys.indexOf(code) !== -1;\n}\n\n// navigator.platform\nexport function isCtrlKey(code: number, platform: string): boolean {\n if (platform.includes(OsPlatform.mac)) {\n return includes([KeyCodesEnum.COMMAND_LEFT, KeyCodesEnum.COMMAND_RIGHT, KeyCodesEnum.COMMAND_FIREFOX], code);\n }\n\n return KeyCodesEnum.CONTROL === code;\n}\n\nexport function isCtrlMetaKey(code: KeyCodesEnum): boolean {\n return includes([KeyCodesEnum.CONTROL, KeyCodesEnum.COMMAND_LEFT, KeyCodesEnum.COMMAND_RIGHT, KeyCodesEnum.COMMAND_FIREFOX], code);\n}\n\nexport function isClear(code: string): boolean {\n return codesLetter.BACKSPACE === code || codesLetter.DELETE === code;\n}\n\nexport function isTab(code: string): boolean {\n return codesLetter.TAB === code;\n}\n\nexport function isEnterKey(code: string): boolean {\n return code === codesLetter.ENTER || code === codesLetter.ENTER_NUM;\n}\n","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","revogr-edit {\n display: block;\n position: absolute;\n background-color: #fff;\n\n input {\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n }\n\n revo-dropdown {\n height: 100%;\n\n &.shrink {\n fieldset legend > span {\n display: none;\n }\n }\n }\n}\n","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"],"version":3}
@@ -1 +0,0 @@
1
- {"file":"revogr-filter-panel.js","mappings":";;;;;;;AAKO,MAAM,UAAU,GAAG,CAAC,KAAY,EAAE,QAAiB;EACxD,QACE,8BACM,KAAK,IACT,KAAK,mCACC,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,MAC9F,CAAC,aAAa,GAAG,IAAI,QAGtB,QAAQ,CACF,EACT;AACJ,CAAC;;ACjBD,CAAC,SAAS,OAAO;EACf,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE;IAC9B,OAAO,CAAC,SAAS,CAAC,OAAO;MACrB,OAAO,CAAC,SAA+E,CAAC,iBAAiB,IAAI,OAAO,CAAC,SAAS,CAAC,qBAAqB,CAAC;GAC1J;EAED,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE;IAC9B,OAAO,CAAC,SAAS,CAAC,OAAO,GAAG,UAAU,CAAS;MAC7C,IAAI,EAAE,GAAgD,IAAI,CAAC;MAE3D,GAAG;QACD,IAAI,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;UACzC,OAAO,EAAE,CAAC;SACX;QACD,EAAE,GAAG,EAAE,CAAC,aAAa,IAAI,EAAE,CAAC,UAAU,CAAC;OACxC,QAAQ,EAAE,KAAK,IAAI,IAAI,EAAE,CAAC,QAAQ,KAAK,CAAC,EAAE;MAC3C,OAAO,IAAI,CAAC;KACb,CAAC;GACH;AACH,CAAC,GAAG;;ACnBJ,MAAM,cAAc,GAAG,60bAA60b;;ACuCp2b,MAAM,WAAW,GAAe,MAAM,CAAC;AAEvC,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAC9C,MAAM,wBAAwB,GAAG,0BAA0B,CAAC;MAM/C,WAAW;;;;;IACd,2BAAsB,GAAmB;MAC/C,KAAK,EAAE,qBAAqB;MAC5B,IAAI,EAAE,MAAM;MACZ,KAAK,EAAE,OAAO;MACd,MAAM,EAAE,OAAO;KAChB,CAAC;IAyLM,yBAAoB,GAAGA,UAAQ,CAAC;MACtC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KAC1C,EAAE,GAAG,CAAC,CAAC;yBA1LiB,KAAK;oBACV,CAAC;2BACc,CAAC,CAAC;6BACI,WAAW;;;uBAGb,EAAE;uBACO,EAAE;uBACJ,EAAE;0BACQ,EAAE;;mCAEf,KAAK;;EAEH,WAAW,CAAC,CAAa;IACpE,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,gBAAgB,EAAE;MACvC,MAAM,EAAE,GAAG,CAAC,CAAC,MAAqB,CAAC;MACnC,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE;QAC1C,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;OAC1B;KACF;GACF;EACS,MAAM,IAAI,CAAC,SAAoB;IACvC,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;IACzB,IAAI,IAAI,CAAC,OAAO,EAAE;MAChB,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,WAAW,CAAC;KACtD;GACF;EAES,MAAM,UAAU;IACxB,OAAO,IAAI,CAAC,OAAO,CAAC;GACrB;EAED,mBAAmB;IACjB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;MACvB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;MAC1B,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;MAClD,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE;;QAE9B,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;OAChD;KACF;GACF;EAED,mBAAmB,CAAC,IAAgB,EAAE,oBAAoB,GAAG,KAAK;;IAChE,MAAM,OAAO,GAAY,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAG,MAAA,IAAI,CAAC,OAAO,0CAAE,IAAI,CAAC;IAEhC,IAAI,CAAC,oBAAoB,EAAE;MACzB,OAAO,CAAC,IAAI,CACV,cAAQ,QAAQ,EAAE,IAAI,CAAC,iBAAiB,KAAK,WAAW,EAAE,KAAK,EAAE,WAAW,IACzE,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,GAAG,uBAAuB,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CACvH,CACV,CAAC;KACH;IAED,KAAK,IAAI,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE;MACnC,OAAO,CAAC,IAAI,CACV,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAC/B,cAAQ,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,KAAK,CAAC,IACnC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CACb,CACV,CAAC,CACH,CAAC;MACF,OAAO,CAAC,IAAI,CAAC,cAAQ,QAAQ,SAAU,CAAC,CAAC;KAC1C;IACD,OAAO,OAAO,CAAC;GAChB;EAED,WAAW,CAAC,IAAyB,EAAE,KAAa;IAClD,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAE7C,IAAI,CAAC,aAAa;MAAE,OAAO,EAAE,CAAC;IAE9B,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,OAAO;MAAE,OAAO,EAAE,CAAC;IAEhF,QACE,aACE,EAAE,EAAE,gBAAgB,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAC7C,WAAW,EAAC,gBAAgB,EAC5B,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,KAAK,EACjC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,EACjD,SAAS,EAAE,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GACjC,EACF;GACH;EAED,kBAAkB;;IAChB,MAAM,IAAI,GAAG,MAAA,IAAI,CAAC,OAAO,0CAAE,IAAI,CAAC;IAChC,IAAI,EAAE,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC;MAAE,OAAO,EAAE,CAAC;IAErC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACjD,QACE,WAAK,GAAG,EAAE,IAAI,CAAC,QAAQ,IACpB,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK;MACxB,IAAI,WAAW,CAAC;;MAGhB,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;QAC/C,WAAW,IACT,WAAK,OAAO,EAAE,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,IAC9C,EAAC,WAAW,IAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,KAAK,KAAK,GAAI,CACxC,CACP,CAAC;OACH;MAED,QACE,WAAK,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,iBAAiB,IACtC,WAAK,KAAK,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,IAClC,cAAQ,KAAK,EAAC,0BAA0B,EAAC,QAAQ,EAAE,CAAC,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAC5F,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAC5D,EACT,WAAK,KAAK,EAAE,wBAAwB,IAAG,WAAW,CAAO,EACzD,WAAK,OAAO,EAAE,MAAM,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,IAC3C,EAAC,WAAW,OAAG,CACX,CACF,EACN,eAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAO,CACtC,EACN;KACH,CAAC,EAED,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,WAAK,KAAK,EAAC,oBAAoB,GAAO,GAAG,EAAE,CACjE,EACN;GACH;EAED,MAAM;IACJ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;MACjB,OAAO,EAAC,IAAI,IAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAS,CAAC;KAClD;IACD,MAAM,KAAK,GAAG;MACZ,OAAO,EAAE,OAAO;MAChB,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI;MAC3B,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI;KAC3B,CAAC;IAEF,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAE9E,QACE,EAAC,IAAI,IAAC,KAAK,EAAE,KAAK,IAChB,iBAAQ,KAAK,CAAC,KAAK,CAAS,EAC5B,WAAK,KAAK,EAAC,eAAe,IAAE,IAAI,CAAC,kBAAkB,EAAE,CAAO,EAE5D,WAAK,KAAK,EAAC,YAAY,IACrB,cAAQ,EAAE,EAAC,YAAY,EAAC,KAAK,EAAC,YAAY,EAAC,QAAQ,EAAE,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAC7E,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAC1C,CACL,EACN,WAAK,KAAK,EAAC,gBAAgB,IACxB,IAAI,CAAC,uBAAuB;MAC3B,EAAC,UAAU,IAAC,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,MAAM,EAAE,IACvE,KAAK,CAAC,IAAI,CACA,EAEf,EAAC,UAAU,IAAC,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,OAAO,EAAE,IACzE,KAAK,CAAC,KAAK,CACD,EACb,EAAC,UAAU,IAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,QAAQ,EAAE,IAC7E,KAAK,CAAC,MAAM,CACF,CACT,CACD,EACP;GACH;EAEO,kBAAkB,CAAC,CAAQ,EAAE,IAAyB,EAAE,KAAa;IAC3E,MAAM,EAAE,GAAG,CAAC,CAAC,MAA2B,CAAC;IACzC,MAAM,IAAI,GAAG,EAAE,CAAC,KAAmB,CAAC;IAEpC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;;IAG1C,IAAI,CAAC,QAAQ,EAAE,CAAC;;IAGhB,UAAU,CAAC;MACT,MAAM,KAAK,GAAG,QAAQ,CAAC,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAqB,CAAC;MAC9G,IAAI,KAAK;QAAE,KAAK,CAAC,KAAK,EAAE,CAAC;KAC1B,EAAE,CAAC,CAAC,CAAC;IAEN,IAAI,CAAC,IAAI,CAAC,uBAAuB;MAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC;GAChE;EAMO,cAAc,CAAC,CAAQ;IAC7B,MAAM,EAAE,GAAG,CAAC,CAAC,MAA2B,CAAC;IACzC,MAAM,IAAI,GAAG,EAAE,CAAC,KAAmB,CAAC;IAEpC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAC9B,IAAI,CAAC,kBAAkB,EAAE,CAAC;;IAG1B,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAsB,CAAC;IAC1E,IAAI,MAAM,EAAE;MACV,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC;MAC3B,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC;KACtC;IAED,IAAI,CAAC,IAAI,CAAC,uBAAuB;MAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC;GAChE;EAEO,kBAAkB;;IACxB,MAAM,IAAI,GAAG,MAAA,IAAI,CAAC,OAAO,0CAAE,IAAI,CAAC;IAChC,IAAI,EAAE,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC;MAAE,OAAO;IAElC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;MAC3B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;KAC7B;IAED,IAAI,IAAI,CAAC,iBAAiB,KAAK,MAAM;MAAE,OAAO;IAE9C,IAAI,CAAC,QAAQ,EAAE,CAAC;IAChB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC;IAErC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;MAC1B,EAAE,EAAE,IAAI,CAAC,eAAe;MACxB,IAAI,EAAE,IAAI,CAAC,iBAAiB;MAC5B,KAAK,EAAE,EAAE;MACT,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;;IAGH,UAAU,CAAC;MACT,MAAM,KAAK,GAAG,QAAQ,CAAC,cAAc,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAqB,CAAC;MAClG,IAAI,KAAK;QAAE,KAAK,CAAC,KAAK,EAAE,CAAC;KAC1B,EAAE,CAAC,CAAC,CAAC;GACP;EAEO,WAAW,CAAC,KAAa,EAAE,IAAyB,EAAE,KAAY;;IAExE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,GAAI,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC;IAE/E,IAAI,CAAC,IAAI,CAAC,uBAAuB;MAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC;GAChE;EAEO,SAAS,CAAC,CAAgB;IAChC,IAAI,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE;MACnC,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAsB,CAAC;MAC1E,IAAI,MAAM,EAAE;QACV,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC;QAC3B,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC;QACrC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,MAAM,CAAC,KAAK,EAAE,CAAC;OAChB;MACD,OAAO;KACR;;IAED,CAAC,CAAC,eAAe,EAAE,CAAC;GACrB;EAEO,MAAM;IACZ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;GAC1C;EAEO,QAAQ;IACd,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;GAC1B;EAEO,OAAO;IACb,IAAI,CAAC,aAAa,EAAE,CAAC;IAErB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;;IAG3C,IAAI,CAAC,QAAQ,EAAE,CAAC;IAEhB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;GAC1C;EAEO,cAAc,CAAC,EAAU;IAC/B,IAAI,CAAC,aAAa,EAAE,CAAC;;IAGrB,IAAI,CAAC,QAAQ,EAAE,CAAC;IAEhB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAE/B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,KAAK;MAAE,OAAO;IAEnB,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAChD,IAAI,KAAK,KAAK,CAAC,CAAC;MAAE,OAAO;IACzB,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;;IAGvB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;MAAE,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAEtD,IAAI,CAAC,IAAI,CAAC,uBAAuB;MAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC;GAChE;EAEO,iBAAiB,CAAC,EAAU;IAClC,IAAI,CAAC,aAAa,EAAE,CAAC;;IAGrB,IAAI,CAAC,QAAQ,EAAE,CAAC;IAEhB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAE/B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,KAAK;MAAE,OAAO;IAEnB,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAChD,IAAI,KAAK,KAAK,CAAC,CAAC;MAAE,OAAO;IAEzB,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,KAAK,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;IACvE,IAAI,CAAC,IAAI,CAAC,uBAAuB;MAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC;GAChE;EAEO,aAAa;IACnB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;MACjB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;KAC9C;GACF;EAEO,SAAS,CAAC,CAAqB;IACrC,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAsB,CAAC;IAC1E,IAAI,MAAM;MAAE,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC;IAEvC,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC;IACrC,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,WAAW,CAAC;IAChC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;IAC1B,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE;MACjD,OAAO,KAAK,CAAC;KACd;IACD,OAAO,EAAC,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,OAAO,CAAC,UAAU,IAAI,CAAC,IAAI,IAAI,CAAC,CAAA,CAAC;GAC7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["debounce"],"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
- {"file":"revogr-focus.js","mappings":";;;;;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
@@ -1 +0,0 @@
1
- {"file":"revogr-focus2.js","mappings":";;;;;;;;AAAA,MAAM,mBAAmB,GAAG,myUAAmyU;;MCWlzU,WAAW;;;;;;;;;;;EAcd,OAAO,CAAC,CAAc,EAAE,KAAqB;IACnD,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,cAAc,CAAC;MAChB,KAAK,EAAE,SAAS;MAChB,MAAM,EAAE,SAAS;KAClB,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACpD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;MACnB,KAAK;MACL,MAAM;KACP,CAAC,CAAC;GACJ;EAED,kBAAkB;IAChB,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtD,YAAY,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;GAChE;EAED,MAAM;IACJ,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,IAAI,EAAE;MACR,MAAM,KAAK,GAAG,UAAU,iCAEjB,IAAI,KACP,EAAE,EAAE,IAAI,CAAC,CAAC,EACV,EAAE,EAAE,IAAI,CAAC,CAAC,KAEZ,IAAI,CAAC,YAAY,CAAC,KAAK,EACvB,IAAI,CAAC,YAAY,CAAC,KAAK,CACxB,CAAC;MACF,OAAO,EAAC,IAAI,IAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,GAAI,CAAC;KACnD;GACF;;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["./src/components/selection-focus/revogr-focus-style.scss?tag=revogr-focus","./src/components/selection-focus/revogr-focus.tsx"],"sourcesContent":["revogr-focus.focused-cell {\n @include selection(1px);\n\n position: absolute;\n pointer-events: none;\n z-index: 9;\n display: block;\n}\n","import { Component, Prop, h, Host, Element, Event, EventEmitter } from '@stencil/core';\nimport { Observable, RevoGrid, Selection } from '../../interfaces';\nimport { getSourceItem } from '../../store/dataSource/data.store';\nimport { FOCUS_CLASS } from '../../utils/consts';\nimport { ColumnSource, RowSource } from '../data/columnService';\nimport { getElStyle } from '../overlay/selection.utils';\n\n@Component({\n tag: 'revogr-focus',\n styleUrl: 'revogr-focus-style.scss',\n})\nexport class RevogrFocus {\n @Element() el: HTMLElement;\n\n /** Dynamic stores */\n @Prop() dataStore!: RowSource;\n @Prop() colData!: ColumnSource;\n @Prop() selectionStore!: Observable<Selection.SelectionStoreState>;\n @Prop() dimensionRow!: Observable<RevoGrid.DimensionSettingsState>;\n @Prop() dimensionCol!: Observable<RevoGrid.DimensionSettingsState>;\n @Event({ eventName: 'afterfocus' }) afterFocus: EventEmitter<{\n model: any;\n column: RevoGrid.ColumnRegular;\n }>;\n\n private changed(e: HTMLElement, focus: Selection.Cell): void {\n e?.scrollIntoView({\n block: 'nearest',\n inline: 'nearest',\n });\n const model = getSourceItem(this.dataStore, focus.y);\n const column = getSourceItem(this.colData, focus.x);\n this.afterFocus.emit({\n model,\n column\n });\n }\n\n componentDidRender(): void {\n const currentFocus = this.selectionStore.get('focus');\n currentFocus && this.el && this.changed(this.el, currentFocus);\n }\n\n render() {\n const data = this.selectionStore.get('focus');\n if (data) {\n const style = getElStyle(\n {\n ...data,\n x1: data.x,\n y1: data.y,\n },\n this.dimensionRow.state,\n this.dimensionCol.state,\n );\n return <Host class={FOCUS_CLASS} style={style} />;\n }\n }\n}\n"],"version":3}
@@ -1 +0,0 @@
1
- {"file":"revogr-header.js","mappings":";;;;;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
@@ -1 +0,0 @@
1
- {"file":"revogr-header2.js","mappings":"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","names":["getNative","defineProperty","baseEach","isArray","arrayAggregator","baseAggregator","baseIteratee","createAggregator","baseAssignValue","findIndex","keyBy"],"sources":["./src/plugins/dispatcher.ts","./node_modules/lodash/_defineProperty.js","./node_modules/lodash/_baseAssignValue.js","./node_modules/lodash/_arrayAggregator.js","./node_modules/lodash/_baseAggregator.js","./node_modules/lodash/_createAggregator.js","./node_modules/lodash/keyBy.js","./src/plugins/sorting/sorting.sign.tsx","./src/services/resizable.directive.tsx","./src/components/header/headerCellRenderer.tsx","./src/components/header/headerRenderer.tsx","./src/plugins/groupingColumn/headerGroupRenderer.tsx","./src/plugins/groupingColumn/columnGroupsRenderer.tsx","./src/components/header/revogr-header-style.scss?tag=revogr-header","./src/components/header/revogr-header.tsx"],"sourcesContent":["type Target = HTMLElement | Element | null;\n/**\n * Dispatch custom event to element\n */\nexport function dispatch(\n target: Target,\n eventName: string,\n detail?: any\n): CustomEvent {\n const event = new CustomEvent(eventName, {\n detail,\n cancelable: true,\n bubbles: true,\n });\n target?.dispatchEvent(event);\n return event;\n}\n\n/**\n * Dispatch event by other event target\n */\nexport function dispatchOnEvent(\n e: MouseEvent | CustomEvent,\n eventName: string,\n detail?: any\n ): CustomEvent {\n e.preventDefault();\n return dispatch(e.target as Target, eventName, detail);\n}\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","/**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayAggregator;\n","var baseEach = require('./_baseEach');\n\n/**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\nfunction baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n}\n\nmodule.exports = baseAggregator;\n","var arrayAggregator = require('./_arrayAggregator'),\n baseAggregator = require('./_baseAggregator'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\nfunction createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, baseIteratee(iteratee, 2), accumulator);\n };\n}\n\nmodule.exports = createAggregator;\n","var baseAssignValue = require('./_baseAssignValue'),\n createAggregator = require('./_createAggregator');\n\n/**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\nvar keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n});\n\nmodule.exports = keyBy;\n","import { h } from '@stencil/core';\nimport { RevoGrid } from '../../interfaces';\n\nexport const FILTER_BUTTON_CLASS = 'rv-filter';\nexport const FILTER_BUTTON_ACTIVE = 'active';\n\ntype Props = {\n column: RevoGrid.ColumnRegular;\n};\nexport const SortingSign = ({ column }: Props) => {\n return <i class={column.order} />;\n};\n","import { h, VNode } from '@stencil/core';\nimport { RevoGrid } from '../interfaces';\n\ntype Props = {\n active: ('r' | 'rb' | 'b' | 'lb' | 'l' | 'lt' | 't' | 'rt')[]; // all\n fitParent: boolean; // false\n minWidth: number; // 0\n minHeight: number; // 0\n\n disableAttributes: ('l' | 't' | 'w' | 'h')[]; // []\n maxWidth?: number;\n maxHeight?: number;\n\n onResize?(e: ResizeEvent): void;\n onDoubleClick?(): void;\n};\n\nexport type ResizeEvent = {\n eventName: string;\n changedX?: number;\n changedY?: number;\n width?: number;\n height?: number;\n};\n\nenum ResizeEvents {\n start = 'resize:start',\n move = 'resize:move',\n end = 'resize:end',\n}\n\nconst RESIZE_MASK: { [key: string]: any } = {\n 'resizable-r': { bit: 0b0001, cursor: 'ew-resize' },\n 'resizable-rb': { bit: 0b0011, cursor: 'se-resize' },\n 'resizable-b': { bit: 0b0010, cursor: 's-resize' },\n 'resizable-lb': { bit: 0b0110, cursor: 'sw-resize' },\n 'resizable-l': { bit: 0b0100, cursor: 'w-resize' },\n 'resizable-lt': { bit: 0b1100, cursor: 'nw-resize' },\n 'resizable-t': { bit: 0b1000, cursor: 'n-resize' },\n 'resizable-rt': { bit: 0b1001, cursor: 'ne-resize' },\n};\n\nconst DISABLE_MASK = {\n l: 0b0001,\n t: 0b0010,\n w: 0b0100,\n h: 0b1000,\n};\n\nconst defaultProps = (props: Partial<Props>): Props => {\n return {\n ...props,\n fitParent: props.fitParent || false,\n active: props.active || [],\n disableAttributes: props.disableAttributes || [],\n minWidth: props.minWidth || 0,\n minHeight: props.minHeight || 0,\n };\n};\n\nexport class ResizeDirective {\n private $el: HTMLElement;\n private props: Props;\n private minW: number;\n private minH: number;\n private maxW: number;\n private maxH: number;\n\n private mouseX: number = 0;\n private mouseY: number = 0;\n\n private width: number = 0;\n private height: number = 0;\n\n private changeX: number = 0;\n private changeY: number = 0;\n\n private parent: { width: number; height: number };\n private resizeState: number;\n private activeResizer: HTMLElement | null;\n private disableCalcMap: number = 0b1111;\n\n private mouseMoveFunc: () => void;\n private mouseUpFunc: () => void;\n\n constructor(private initialProps: Partial<Props>, private $event?: (e: ResizeEvent) => void) {\n this.props = defaultProps(initialProps);\n this.mouseMoveFunc = this.handleMove.bind(this);\n this.mouseUpFunc = this.handleUp.bind(this);\n\n this.minW = this.props.minWidth;\n this.minH = this.props.minHeight;\n this.maxW = this.props.maxWidth;\n this.maxH = this.props.maxHeight;\n this.parent = { width: 0, height: 0 };\n this.resizeState = 0;\n }\n\n set($el: HTMLElement) {\n this.$el = $el;\n this.props.disableAttributes.forEach(attr => {\n switch (attr) {\n case 'l':\n this.disableCalcMap &= ~DISABLE_MASK.l;\n break;\n case 't':\n this.disableCalcMap &= ~DISABLE_MASK.t;\n break;\n case 'w':\n this.disableCalcMap &= ~DISABLE_MASK.w;\n break;\n case 'h':\n this.disableCalcMap &= ~DISABLE_MASK.h;\n }\n });\n }\n emitEvent(eventName: string, additionalOptions?: any) {\n if (!this.$event) {\n return;\n }\n this.$event({\n eventName,\n width: this.width + this.changeX,\n height: this.height + this.changeY,\n changedX: this.changeX,\n changedY: this.changeY,\n ...additionalOptions,\n });\n }\n\n private static isTouchEvent(e: MouseEvent | TouchEvent): e is TouchEvent {\n const event = e as TouchEvent;\n return event.touches?.length >= 0;\n }\n\n handleMove(event: MouseEvent | TouchEvent) {\n if (!this.resizeState) {\n return;\n }\n let eventY, eventX;\n if (ResizeDirective.isTouchEvent(event)) {\n eventY = event.touches[0].clientY;\n eventX = event.touches[0].clientX;\n } else {\n eventY = event.clientY;\n eventX = event.clientX;\n }\n let isX = this.resizeState & RESIZE_MASK['resizable-r'].bit || this.resizeState & RESIZE_MASK['resizable-l'].bit;\n\n let isY = this.resizeState & RESIZE_MASK['resizable-t'].bit || this.resizeState & RESIZE_MASK['resizable-b'].bit;\n\n if (isY && this.disableCalcMap & DISABLE_MASK.h) {\n let diffY = eventY - this.mouseY;\n let changedY = this.changeY + diffY;\n const newHeight = this.height + changedY;\n // if overcrossed min height\n if (newHeight < this.minH) {\n changedY = -(this.height - this.minH);\n }\n // if overcrossed max heiht\n if (this.maxH && newHeight > this.maxH) {\n changedY = this.maxH - this.height;\n }\n\n this.changeY = changedY;\n this.mouseY = eventY;\n\n if (this.activeResizer) {\n this.activeResizer.style.bottom = `${-this.changeY}px`;\n }\n }\n if (isX && this.disableCalcMap & DISABLE_MASK.w) {\n let diffX = eventX - this.mouseX;\n let changedX = this.changeX + diffX;\n const newWidth = this.width + changedX;\n\n // if overcrossed min width\n if (newWidth < this.minW) {\n changedX = -(this.width - this.minW);\n }\n // if overcrossed max width\n if (this.maxW && newWidth > this.maxW) {\n changedX = this.maxW - this.width;\n }\n\n this.changeX = changedX;\n this.mouseX = eventX;\n\n if (this.activeResizer) {\n this.activeResizer.style.right = `${-this.changeX}px`;\n }\n }\n this.emitEvent(ResizeEvents.move);\n }\n\n handleDown(event: MouseEvent | TouchEvent) {\n if (event.defaultPrevented) {\n return;\n }\n // stop other events if resize in progress\n event.preventDefault();\n\n this.dropInitial();\n for (let elClass in RESIZE_MASK) {\n const target = event.target as HTMLElement | null;\n if (this.$el.contains(target) && target?.classList.contains(elClass)) {\n document.body.style.cursor = RESIZE_MASK[elClass].cursor;\n if (ResizeDirective.isTouchEvent(event)) {\n this.setInitials(event.touches[0], target);\n } else {\n event.preventDefault && event.preventDefault();\n this.setInitials(event, target);\n }\n this.resizeState = RESIZE_MASK[elClass].bit;\n const eventName = ResizeEvents.start;\n this.emitEvent(eventName);\n break;\n }\n }\n this.bindMove();\n }\n\n handleUp(e: MouseEvent) {\n e.preventDefault();\n if (this.resizeState !== 0) {\n this.resizeState = 0;\n document.body.style.cursor = '';\n const eventName = ResizeEvents.end;\n this.emitEvent(eventName);\n }\n this.dropInitial();\n this.unbindMove();\n }\n\n private setInitials({ clientX, clientY }: { clientX: number; clientY: number }, target?: HTMLElement) {\n const computedStyle = getComputedStyle(this.$el);\n this.$el.classList.add('active');\n this.activeResizer = target;\n\n if (this.disableCalcMap & DISABLE_MASK.w) {\n this.mouseX = clientX;\n this.width = this.$el.clientWidth;\n this.parent.width = this.$el.parentElement.clientWidth;\n\n // min width\n const minPaddingX = parseFloat(computedStyle.paddingLeft) + parseFloat(computedStyle.paddingRight);\n this.minW = Math.max(minPaddingX, this.initialProps.minWidth || 0);\n\n // max width\n if (this.initialProps.maxWidth) {\n this.maxW = Math.max(this.width, this.initialProps.maxWidth);\n }\n }\n\n if (this.disableCalcMap & DISABLE_MASK.h) {\n this.mouseY = clientY;\n this.height = this.$el.clientHeight;\n this.parent.height = this.$el.parentElement.clientHeight;\n\n // min height\n const minPaddingY = parseFloat(computedStyle.paddingTop) + parseFloat(computedStyle.paddingBottom);\n this.minH = Math.max(minPaddingY, this.initialProps.minHeight || 0);\n // max height\n if (this.initialProps.maxHeight) {\n this.maxH = Math.max(this.height, this.initialProps.maxHeight);\n }\n }\n }\n\n private dropInitial() {\n this.changeX = this.changeY = this.minW = this.minH;\n this.width = this.height = 0;\n if (this.activeResizer) {\n this.activeResizer.removeAttribute('style');\n }\n this.$el.classList.remove('active');\n this.activeResizer = null;\n }\n\n private bindMove() {\n document.documentElement.addEventListener('mouseup', this.mouseUpFunc, true);\n document.documentElement.addEventListener('touchend', this.mouseUpFunc, true);\n document.documentElement.addEventListener('mousemove', this.mouseMoveFunc, true);\n document.documentElement.addEventListener('touchmove', this.mouseMoveFunc, true);\n document.documentElement.addEventListener('mouseleave', this.mouseUpFunc);\n }\n\n private unbindMove() {\n document.documentElement.removeEventListener('mouseup', this.mouseUpFunc, true);\n document.documentElement.removeEventListener('touchend', this.mouseUpFunc, true);\n document.documentElement.removeEventListener('mousemove', this.mouseMoveFunc, true);\n document.documentElement.removeEventListener('touchmove', this.mouseMoveFunc, true);\n document.documentElement.removeEventListener('mouseleave', this.mouseUpFunc);\n }\n}\n\nexport const ResizableElement = (props: Partial<Props> & RevoGrid.CellProps, children: VNode[]) => {\n const resizeEls: VNode[] = [];\n const directive =\n (props.canResize &&\n new ResizeDirective(props, e => {\n if (e.eventName === ResizeEvents.end) {\n props.onResize && props.onResize(e);\n }\n })) ||\n null;\n if (props.canResize) {\n if (props.active) {\n for (let p in props.active) {\n resizeEls.push(\n <div\n onClick={e => e.preventDefault()}\n onDblClick={e => {\n e.preventDefault();\n props.onDoubleClick && props.onDoubleClick();\n }}\n onMouseDown={(e: MouseEvent) => directive?.handleDown(e)}\n onTouchStart={(e: TouchEvent) => directive?.handleDown(e)}\n class={`resizable resizable-${props.active[p]}`}\n />,\n );\n }\n }\n } else {\n if (props.active) {\n for (let p in props.active) {\n resizeEls.push(\n <div\n onClick={e => e.preventDefault()}\n onDblClick={e => {\n e.preventDefault();\n props.onDoubleClick && props.onDoubleClick();\n }}\n class={`no-resize resizable resizable-${props.active[p]}`}\n />,\n );\n }\n }\n }\n return (\n <div {...props} ref={(e: HTMLElement) => directive?.set(e)}>\n {children}\n {resizeEls}\n </div>\n );\n};\n","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","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","import { h, VNode } from '@stencil/core';\nimport { ResizeEvent } from '../../services/resizable.directive';\nimport { Group } from '../../store/dataSource/data.store';\nimport { HEADER_CLASS, MIN_COL_SIZE } from '../../utils/consts';\nimport { HeaderCellRenderer } from '../../components/header/headerCellRenderer';\n\ntype Props = {\n start: number;\n end: number;\n group: Group;\n canResize?: boolean;\n onResize?(e: ResizeEvent): void;\n};\n\nconst GroupHeaderRenderer = (p: Props): VNode[] => {\n const groupProps = {\n canResize: p.canResize,\n minWidth: p.group.ids.length * MIN_COL_SIZE,\n maxWidth: 0,\n\n active: ['r'],\n class: {\n [HEADER_CLASS]: true,\n },\n style: {\n transform: `translateX(${p.start}px)`,\n width: `${p.end - p.start}px`,\n },\n onResize: p.onResize,\n };\n return <HeaderCellRenderer data={p.group} props={groupProps} />;\n};\n\nexport default GroupHeaderRenderer;\n","import { h, VNode } from '@stencil/core';\nimport findIndex from 'lodash/findIndex';\nimport { RevoGrid } from '../../interfaces';\nimport { Group } from '../../store/dataSource/data.store';\nimport { getItemByIndex } from '../../store/dimension/dimension.helpers';\nimport { HEADER_ROW_CLASS } from '../../utils/consts';\nimport GroupHeaderRenderer from './headerGroupRenderer';\n\ntype Props = {\n visibleProps: { [prop: string]: number };\n groups: Record<number, Group[]>;\n dimensionCol: Pick<RevoGrid.DimensionSettingsState, 'indexes' | 'originItemSize' | 'indexToItem'>;\n depth: number;\n canResize: boolean;\n onResize(changedX: number, startIndex: number, endIndex: number): void;\n};\n\nconst ColumnGroupsRenderer = ({ depth, groups, visibleProps, dimensionCol, canResize, onResize }: Props): VNode[] => {\n // render group columns\n const groupRow: VNode[] = [];\n for (let i = 0; i < depth; i++) {\n if (groups[i]) {\n for (let group of groups[i]) {\n // if group in visible range\n // find first visible group prop in visible columns range\n const indexFirstVisibleCol: number | undefined = findIndex(group.ids, id => typeof visibleProps[id] === 'number');\n if (indexFirstVisibleCol > -1) {\n const colVisibleIndex = visibleProps[group.ids[indexFirstVisibleCol]]; // get column index\n const groupStartIndex = colVisibleIndex - indexFirstVisibleCol; // first column index in group\n const groupEndIndex = groupStartIndex + group.ids.length - 1; // last column index in group\n\n // coordinates\n const groupStart = getItemByIndex(dimensionCol, groupStartIndex).start;\n const groupEnd = getItemByIndex(dimensionCol, groupEndIndex).end;\n groupRow.push(\n <GroupHeaderRenderer start={groupStart} end={groupEnd} group={group} canResize={canResize} onResize={e => onResize(e.changedX, groupStartIndex, groupEndIndex)} />,\n );\n }\n }\n }\n groupRow.push(<div class={`${HEADER_ROW_CLASS} group`} />);\n }\n return groupRow;\n};\n\nexport default ColumnGroupsRenderer;\n","revogr-header {\n position: relative;\n z-index: 5;\n display: block;\n\n .rgHeaderCell {\n display: flex;\n\n &.align-center {\n text-align: center;\n }\n &.align-left {\n text-align: left;\n }\n &.align-right {\n text-align: right;\n }\n &.sortable {\n cursor: pointer;\n }\n\n i {\n &.asc,\n &.desc {\n &:after {\n font-size: 13px;\n }\n }\n &.asc {\n &:after {\n content: '↑';\n }\n }\n &.desc {\n &:after {\n content: '↓';\n }\n }\n }\n }\n\n .rgHeaderCell,\n .grouped-cell {\n position: absolute;\n box-sizing: border-box;\n height: 100%;\n z-index: 1;\n }\n\n .header-rgRow {\n display: block;\n position: relative;\n\n &.group {\n z-index: 0;\n }\n }\n\n .group-rgRow {\n position: relative;\n }\n\n .rgHeaderCell {\n &.active {\n z-index: 10;\n\n .resizable {\n background-color: deepskyblue;\n }\n }\n .header-content {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex-grow: 1;\n }\n .resizable {\n display: block;\n position: absolute;\n z-index: 90;\n touch-action: none;\n user-select: none;\n &:hover {\n background-color: deepskyblue;\n }\n }\n $size: 6px;\n > .resizable-r {\n cursor: ew-resize;\n width: $size;\n right: 0;\n top: 0;\n height: 100%;\n }\n > .resizable-rb {\n cursor: se-resize;\n width: $size;\n height: $size;\n right: 0;\n bottom: 0;\n }\n\n > .resizable-b {\n cursor: s-resize;\n height: $size;\n bottom: 0;\n width: 100%;\n left: 0;\n }\n\n > .resizable-lb {\n cursor: sw-resize;\n width: $size;\n height: $size;\n left: 0;\n bottom: 0;\n }\n\n > .resizable-l {\n cursor: w-resize;\n width: $size;\n left: 0;\n height: 100%;\n top: 0;\n }\n\n > .resizable-lt {\n cursor: nw-resize;\n width: $size;\n height: $size;\n left: 0;\n top: 0;\n }\n\n > .resizable-t {\n cursor: n-resize;\n height: $size;\n top: 0;\n width: 100%;\n left: 0;\n }\n\n > .resizable-rt {\n cursor: ne-resize;\n width: $size;\n height: $size;\n right: 0;\n top: 0;\n }\n }\n .rv-filter {\n visibility: hidden;\n }\n}\n","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"],"version":3}
@@ -1 +0,0 @@
1
- {"file":"revogr-order-editor.js","mappings":";;;;;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
@@ -1 +0,0 @@
1
- {"file":"revogr-order-editor2.js","mappings":"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","names":["debounce"],"sources":["./src/components/order/rowOrderService.ts","./src/components/order/revogr-order-editor.tsx"],"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","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"],"version":3}
@@ -1 +0,0 @@
1
- {"file":"revogr-overlay-selection.js","mappings":";;;;;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
@@ -1 +0,0 @@
1
- {"file":"revogr-overlay-selection2.js","mappings":";;;;;;;;;;;;;;MAUqB,qBAAqB;EACxC,YAAmB,KAAgD,EAAU,MAAc;IAAxE,UAAK,GAAL,KAAK,CAA2C;IAAU,WAAM,GAAN,MAAM,CAAQ;IACzF,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;GACpB;EAED,IAAI,MAAM;IACR,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;GAC/B;EAED,IAAI,OAAO;IACT,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;GAChC;EAED,IAAI,MAAM;IACR,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;GAChC;EAED,WAAW,CAAC,KAAY;IACtB,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;GACvC;EAED,KAAK,CAAC,IAAW,EAAE,OAAO,GAAG,KAAK;IAChC,IAAI,CAAC,IAAI,EAAE;MACT,OAAO,KAAK,CAAC;KACd;IACD,IAAI,GAAG,GAAS,IAAI,CAAC;;IAGrB,IAAI,OAAO,EAAE;MACX,IAAI,KAAK,GAAgB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;MACjD,IAAI,KAAK,EAAE;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;OACtD;KACF;;IAGD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;GACrC;;;AC7CH;SACgB,WAAW,CAAC,EAAgB;EAC1C,OAAO,CAAC,EAAC,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,OAAO,CAAC,IAAI,aAAa,EAAE,CAAC,CAAA,CAAC;AAC5C;;MCaa,eAAe;EAG1B,YAAoB,EAAU;IAAV,OAAE,GAAF,EAAE,CAAQ;IAFtB,aAAQ,GAAG,KAAK,CAAC;GAES;EAElC,MAAM,OAAO,CAAC,CAAgB,EAAE,QAAiB;IAC/C,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC,OAAO,EAAE;MAC1C,OAAO;KACR;IACD,IAAI,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE;MAC5C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;KACtB;;IAGD,IAAI,WAAW,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE;MAC9B,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;MACrC,OAAO;KACR;;;;IAKD,IAAI,IAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC,MAAM,EAAE;MACxC,QAAQ,CAAC,CAAC,IAAI;QACZ,KAAK,WAAW,CAAC,MAAM;UACrB,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC;UACrB,MAAM;OACT;MACD,OAAO;KACR;;;;;IAOD,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;MACnB,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;MACpB,OAAO;KACR;;IAGD,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;MACtB,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;MACjB,OAAO;KACR;;IAGD,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;MAClB,OAAO;KACR;;IAGD,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;MACnB,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;MACxB,OAAO;KACR;;IAGD,IAAI,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE;MAC1B,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;MACtB,OAAO;KACR;;IAGD,IAAI,MAAM,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE;MAC9C,OAAO;KACR;GACF;EAED,MAAM,kBAAkB,CAAC,CAAgB,EAAE,QAAiB;IAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAClD,IAAI,CAAC,IAAI,EAAE;MACT,OAAO,KAAK,CAAC;KACd;IACD,MAAM,OAAO,EAAE,CAAC;IAEhB,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;GAC5F;EAED,iBAAiB,CAAC,OAAgC,EAAE,KAAgB,EAAE,KAA2B,EAAE,KAAsB,EAAE,OAAO,GAAG,KAAK;IACxI,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;MACpB,OAAO,KAAK,CAAC;KACd;IACD,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC3D,IAAI,CAAC,IAAI,EAAE;MACT,OAAO,KAAK,CAAC;KACd;IACD,IAAI,OAAO,EAAE;MACX,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;QAC7D,OAAO,KAAK,CAAC;OACd;MACD,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;MAC7C,OAAO,IAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;KACzD;IACD,OAAO,IAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;GACxD;EAED,KAAK,CAAC,CAAgB;IACpB,IAAI,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE;MAC5C,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACvB;GACF;EAED,MAAM,CAAC,CAAgB;IACrB,OAAO,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,WAAW,CAAC,CAAC,CAAC;GACjD;EACD,OAAO,CAAC,CAAgB;IACtB,OAAO,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,WAAW,CAAC,CAAC,CAAC;GACjD;;EAGD,kBAAkB,CAAC,CAAgB,EAAE,QAAiB;IACpD,MAAM,OAAO,GAAY,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC;IAChD,QAAQ,CAAC,CAAC,IAAI;MACZ,KAAK,WAAW,CAAC,GAAG,CAAC;MACrB,KAAK,WAAW,CAAC,QAAQ,CAAC;MAC1B,KAAK,WAAW,CAAC,UAAU,CAAC;MAC5B,KAAK,WAAW,CAAC,UAAU,CAAC;MAC5B,KAAK,WAAW,CAAC,WAAW;QAC1B,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,MAAM;KACT;IACD,QAAQ,CAAC,CAAC,IAAI;MACZ,KAAK,WAAW,CAAC,QAAQ;QACvB,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC;MACzC,KAAK,WAAW,CAAC,UAAU;QACzB,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC;MACxC,KAAK,WAAW,CAAC,UAAU;QACzB,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC;MACzC,KAAK,WAAW,CAAC,GAAG,CAAC;MACrB,KAAK,WAAW,CAAC,WAAW;QAC1B,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC;KACzC;GACF;;;AC1JH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE;AACtC,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC;AAChB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;AAC5B;AACA,EAAE,IAAI,KAAK,GAAG,CAAC,EAAE;AACjB,IAAI,KAAK,GAAG,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC;AACnD,GAAG;AACH,EAAE,GAAG,GAAG,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC;AACpC,EAAE,IAAI,GAAG,GAAG,CAAC,EAAE;AACf,IAAI,GAAG,IAAI,MAAM,CAAC;AAClB,GAAG;AACH,EAAE,MAAM,GAAG,KAAK,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC;AACnD,EAAE,KAAK,MAAM,CAAC,CAAC;AACf;AACA,EAAE,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AAC7B,EAAE,OAAO,EAAE,KAAK,GAAG,MAAM,EAAE;AAC3B,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC;AACzC,GAAG;AACH,EAAE,OAAO,MAAM,CAAC;AAChB,CAAC;AACD;AACA,cAAc,GAAG,SAAS;;AC1B1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE;AAClC,EAAE,IAAI,MAAM,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;AAChD,EAAE,IAAI,CAAC,MAAM,EAAE;AACf,IAAI,OAAO,EAAE,CAAC;AACd,GAAG;AACH,EAAE,IAAI,GAAG,IAAI,OAAO,GAAG,IAAI,QAAQ,IAAIA,eAAc,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE;AAC1E,IAAI,KAAK,GAAG,CAAC,CAAC;AACd,IAAI,GAAG,GAAG,MAAM,CAAC;AACjB,GAAG;AACH,OAAO;AACP,IAAI,KAAK,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,GAAGC,WAAS,CAAC,KAAK,CAAC,CAAC;AACjD,IAAI,GAAG,GAAG,GAAG,KAAK,SAAS,GAAG,MAAM,GAAGA,WAAS,CAAC,GAAG,CAAC,CAAC;AACtD,GAAG;AACH,EAAE,OAAOC,UAAS,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;AACtC,CAAC;AACD;AACA,WAAc,GAAG,KAAK;;ACRtB,IAAK,YAGJ;AAHD,WAAK,YAAY;EACf,uCAAuB,CAAA;EACvB,qCAAqB,CAAA;AACvB,CAAC,EAHI,YAAY,KAAZ,YAAY,QAGhB;MAEY,eAAe;EAQ1B,YAAoB,EAAU;IAAV,OAAE,GAAF,EAAE,CAAQ;IAPtB,iBAAY,GAAwB,IAAI,CAAC;IACzC,oBAAe,GAA0B,IAAI,CAAC;IAC9C,kBAAa,GAA0B,IAAI,CAAC;IAC5C,iBAAY,GAA0B,IAAI,CAAC;GAMlD;;;;;;EAOD,cAAc,CAAC,KAA0B,EAAE,cAA8B;IACvE,IAAI,YAAY,CAAC;IACjB,IAAI,KAAK,EAAE;MACT,YAAY,GAAG,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;KACvF;SAAM;MACL,YAAY,GAAG,OAAO,iCAEf,cAAc,KACjB,EAAE,EAAE,cAAc,CAAC,CAAC,EACpB,EAAE,EAAE,cAAc,CAAC,CAAC,KAEtB,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,EAC1B,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,CAC3B,CAAC;KACH;IACD,QACE,WACE,KAAK,EAAE,kBAAkB,EACzB,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,YAAY,CAAC,KAAK,IAAI,EAAE,GAAG,EAAE,GAAG,YAAY,CAAC,MAAM,IAAI,EAAE,EAC3E,WAAW,EAAE,CAAC,CAAa,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,QAAQ,CAAC,GAChG,EACF;GACH;EAED,IAAI,UAAU;IACZ,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;GAC5B;;EAGD,kBAAkB,CAAC,CAAa;;IAE9B,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;MAC7B,IAAI,CAAC,mBAAmB,GAAGC,UAAQ,CAAC,CAAC,CAAa,EAAE,IAAe,KAAK,IAAI,CAAC,mBAAmB,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;KAC/G;IACD,IAAI,IAAI,CAAC,UAAU,EAAE;MACnB,IAAI,CAAC,mBAAmB,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;KAChD;GACF;EAEO,QAAQ;IACd,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC;IAClD,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC;IACnD,IAAI,KAAK,EAAE;MACT,KAAK,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;KACpC;IACD,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;MACpB,OAAO,IAAI,CAAC;KACb;IACD,OAAO,KAAK,CAAC;GACd;;;;;EAMO,mBAAmB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAc,EAAE,IAAe;IAC/D,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;MACzB,OAAO;KACR;IACD,IAAI,OAAO,GAAG,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;;IAG7C,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;MACtB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;QACtB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;OACxC;KACF;;IAGD,IAAI,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;MAC9B,OAAO;KACR;IACD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;IAE5B,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;;IAE5F,IAAI,MAAM,EAAE;MACV,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;KAC5B;SAAM;MACL,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC;QACnB,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC;QACvD,IAAI,EAAE,IAAI,CAAC,YAAY;OACxB,CAAC,CAAC;KACJ;GACF;;;;;;;EAQD,cAAc,CAAC,CAAa,EAAE,IAAe,EAAE,IAAI,GAAG,YAAY,CAAC,SAAS;;IAE1E,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAI,CAAC,CAAC,MAAsB,CAAC,qBAAqB,EAAE,CAAC;IACxE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IACvC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IACzB,IAAI,CAAC,aAAa,GAAG,cAAc,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC;IAC/D,CAAC,CAAC,cAAc,EAAE,CAAC;GACpB;;EAGD,sBAAsB;;IAEpB,IAAI,IAAI,CAAC,eAAe,EAAE;;MAExB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;MACvC,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC,QAAQ,EAAE;QAC/C,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;OAClE;WAAM;QACL,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;OAC9D;KACF;IAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IACzB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IACzB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;GAC3B;;EAGD,YAAY,CAAC,IAAyB,EAAE,KAA0B;IAChE,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,KAAK,IAAI,QAAQ,IAAI,IAAI,EAAE;MACzB,MAAM,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;KAC7E;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,sBAAsB,CAAC;MAC/C,IAAI;MACJ,MAAM;MACN,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;KACpC,CAAC,CAAC;IACH,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE;MAC/B,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;KAC5C;IACD,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;GACzB;;EAGO,kBAAkB,CAAC,KAAsB,EAAE,GAAoB;;IAErE,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE;MAClB,OAAO;KACR;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC;IACtD,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,SAAS,GAA2B;MACxC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;MACnC,OAAO,EAAE,EAAE;MACX,QAAQ;MACR,QAAQ;MACR,QAAQ,EAAEC,OAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;MACtE,QAAQ,EAAEA,OAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;KACvE,CAAC;IAEF,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAClE,MAAM,iBAAiB,GAAG,IAAI,CAAC,EAAE,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;IACtE,IAAI,iBAAiB,CAAC,gBAAgB,EAAE;MACtC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;MAC3B,OAAO;KACR;IACD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;GAChD;;EAGO,cAAc,CAAC,KAAsB,EAAE,GAAoB;;IAEjE,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE;MAClB,OAAO;KACR;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACtC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;GAC5B;;;MChNU,gBAAgB;EAE3B,YAAoB,EAAU;IAAV,OAAE,GAAF,EAAE,CAAQ;GAAI;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,GAAGA,OAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,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;GACb;EAED,eAAe;IACb,OAAO,wBAAkB,YAAY,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAI,CAAC;GACnJ;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;GACtC;;;ACnDH,MAAM,qBAAqB,GAAG,iqVAAiqV;;MCmBlrV,gBAAgB;;;;;;;;;;;;;;;IAInB,oBAAe,GAA2B,IAAI,CAAC;IAC/C,oBAAe,GAA2B,IAAI,CAAC;IAC/C,qBAAgB,GAA4B,IAAI,CAAC;;;;;;;;;;;;;;;;;;EA+DZ,WAAW,CAAC,CAAa;IACpE,IAAI,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE;MACtC,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;KAC5C;GACF;;EAG6C,UAAU;IACtD,IAAI,CAAC,eAAe,CAAC,sBAAsB,EAAE,CAAC;GAC/C;;EAG0C,SAAS;IAClD,IAAI,CAAC,eAAe,CAAC,sBAAsB,EAAE,CAAC;GAC/C;;EAGwB,UAAU,CAAC,CAA0B;;IAC5D,MAAA,IAAI,CAAC,WAAW,0CAAE,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;GACvC;;EAGwC,OAAO,CAAC,CAAgB;;IAC/D,MAAA,IAAI,CAAC,eAAe,0CAAE,KAAK,CAAC,CAAC,CAAC,CAAC;GAChC;;EAG0C,SAAS,CAAC,CAAgB;;IACnE,IAAI,CAAC,CAAC,gBAAgB,EAAE;MACtB,OAAO;KACR;IACD,MAAA,IAAI,CAAC,eAAe,0CAAE,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;GAC9C;;EAGwB,mBAAmB,CAAC,CAA4C;IACvF,IAAI,CAAC,qBAAqB,GAAG,IAAI,qBAAqB,CAAC,CAAC,EAAE;MACxD,WAAW,EAAE,KAAK,cAAI,OAAA,EAAC,MAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,0CAAE,gBAAgB,CAAA,CAAA,EAAA;MAClE,KAAK,EAAE,CAAC,KAAK,EAAE,GAAG;;QAChB,MAAM,OAAO,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QAC/B,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3G,IAAI,gBAAgB,EAAE;UACpB,OAAO,KAAK,CAAC;SACd;QACD,OAAO,EAAC,MAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,0CAAE,gBAAgB,CAAA,CAAC;OACxD;KACF,CAAC,CAAC;IAEH,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,CAAC;MACzC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;MACjD,cAAc,EAAE,CAAC;MACjB,MAAM,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;MAC7B,UAAU,EAAE,MAAM,IAAI,CAAC,SAAS,EAAE;MAClC,SAAS,EAAE,MAAM,IAAI,CAAC,SAAS,EAAE;MACjC,OAAO,EAAE,MAAM,IAAI,CAAC,OAAO,EAAE;MAC7B,aAAa,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;KAC/C,CAAC,CAAC;IACH,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC7B,IAAI,CAAC,sBAAsB,EAAE,CAAC;GAC/B;EAID,qBAAqB;IACnB,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,CAAC;MACzC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;MACjD,YAAY,EAAE,IAAI,CAAC,YAAY;MAC/B,YAAY,EAAE,IAAI,CAAC,YAAY;MAC/B,aAAa,EAAE,IAAI,CAAC,aAAa;MACjC,SAAS,EAAE,IAAI,CAAC,SAAS;MAEzB,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;MAC9C,wBAAwB,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC;MACtE,sBAAsB,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;MAClE,QAAQ,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;MACtC,OAAO,EAAE,MAAM,IAAI,CAAC,OAAO,EAAE;KAC9B,CAAC,CAAC;GACJ;EAID,gBAAgB;;IACd,MAAA,IAAI,CAAC,aAAa,0CAAE,OAAO,EAAE,CAAC;IAC9B,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACrE,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC7B,IAAI,CAAC,sBAAsB,EAAE,CAAC;GAC/B;EAED,sBAAsB;IACpB,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC;MAC3C,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;MACjD,aAAa,EAAE,IAAI,CAAC,aAAa;MACjC,SAAS,EAAE,IAAI,CAAC,SAAS;MACzB,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC;MAC/D,YAAY,EAAE,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;KAC7C,CAAC,CAAC;GACJ;EAED,iBAAiB;IACf,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACxB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;GAC/C;EAED,oBAAoB;;IAClB,MAAA,IAAI,CAAC,aAAa,0CAAE,OAAO,EAAE,CAAC;GAC/B;EAEO,WAAW,CAAC,KAA0B;IAC5C,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAClF,OAAO,CAAC,WAAK,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,KAAK,GAAI,CAAC,CAAC;GAC/D;EAEO,cAAc;;IAEpB,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACjD,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE;MAC9B,OAAO;KACR;IACD,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACnF,MAAM,QAAQ,mCACT,QAAQ,GACR,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAC/D,CAAC;IAEF,MAAM,KAAK,GAAG,UAAU,iCAAM,QAAQ,KAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,KAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC5H,QACE,mBACE,UAAU,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,EAC1C,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EACnC,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAC9C,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,EAC9E,KAAK,EAAE,KAAK,GACZ,EACF;GACH;EAED,MAAM;IACJ,MAAM,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC;IAChD,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC;IAC1D,MAAM,GAAG,GAAY,EAAE,CAAC;IACxB,IAAI,CAAC,KAAK,IAAI,cAAc,KAAK,IAAI,CAAC,YAAY,EAAE;MAClD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC,CAAC;KACnD;IAED,IAAI,KAAK,EAAE;MACT,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;KACtC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACvC,IAAI,QAAQ,EAAE;MACZ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACpB;IACD,IAAI,cAAc,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE;MAC/D,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;KACtE;IAED,IAAI,IAAI,CAAC,OAAO,EAAE;MAChB,GAAG,CAAC,IAAI,CACN,2BACE,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,EAChC,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,YAAY,EAAE,IAAI,CAAC,YAAY,EAC/B,YAAY,EAAE,IAAI,CAAC,YAAY,EAC/B,MAAM,EAAE,IAAI,CAAC,OAAO,EACpB,sBAAsB,EAAE,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GACnD,CACH,CAAC;KACH;IACD,QACE,EAAC,IAAI,IAAC,UAAU,EAAE,MAAM,IAAI,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,CAAa,KAAK,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAC9F,GAAG,EACJ,YAAM,IAAI,EAAC,MAAM,GAAG,CACf,EACP;GACH;EAES,kBAAkB,CAAC,CAAa;;IAExC,IAAI,WAAW,CAAC,CAAC,CAAC,MAAiC,CAAC,EAAE;MACpD,OAAO;KACR;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAC5B,IAAI,CAAC,CAAC,gBAAgB,EAAE;MACtB,OAAO;KACR;;IAED,MAAM,SAAS,GAAG,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAC3D,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;;IAGtE,IAAI,IAAI,CAAC,KAAK,EAAE;MACd,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;KAC9C;GACF;EAES,MAAM,CAAC,GAAG,GAAG,EAAE;;IACvB,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;MAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;MAClD,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;MACpE,MAAA,IAAI,CAAC,OAAO,0CAAE,IAAI,iCACb,IAAI,KACP,GAAG,IACH,CAAC;KACJ;GACF;;;;;EAMO,SAAS,CAAC,CAAwB;IACxC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IACvB,IAAI,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,MAAM,EAAE;MACb,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;GACF;EAEO,MAAM,SAAS;IACrB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAC5D,IAAI,aAAa,CAAC,SAAS,EAAE;MAC3B,IAAI,EAAE,WAAW,CAAC,UAAU;KAC7B,CAAC,EACF,IAAI,CAAC,KAAK,CACX,CAAC;IACF,IAAI,CAAC,QAAQ,EAAE;MACb,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;GACF;EAES,SAAS;IACjB,IAAI,IAAI,CAAC,qBAAqB,CAAC,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE;MAC9F,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;MAC1F,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;KAC5E;SAAM,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;MACzB,MAAM,OAAO,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC;MACnD,IAAI,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;KACxE;GACF;;EAGS,UAAU,CAAC,CAA0B,EAAE,KAAK,GAAG,KAAK;IAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3E,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;;IAEvC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,EAAE;MAC7B,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;GACF;EAEO,cAAc,CAAC,EAAE,MAAM,EAAuD;IACpF,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;GAC5E;;EAGS,OAAO;;IACf,IAAI,IAAI,CAAC,QAAQ,EAAE;MACjB,OAAO,KAAK,CAAC;KACd;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC;IACpD,OAAO,QAAQ,IAAI,EAAC,MAAA,IAAI,CAAC,aAAa,0CAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAA,CAAC;GAC5E;;EAGS,OAAO;IACf,OAAO;MACL,EAAE,EAAE,IAAI,CAAC,OAAO;MAChB,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK;MAC7B,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK;MAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB,CAAC;GACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":["isIterateeCall","toInteger","baseSlice","debounce","slice"],"sources":["./src/store/selection/selection.store.service.ts","./src/components/overlay/editors/edit.utils.ts","./src/components/overlay/keyboard.service.ts","./node_modules/lodash/_baseSlice.js","./node_modules/lodash/slice.js","./src/components/overlay/autofill.service.tsx","./src/components/overlay/clipboard.service.tsx","./src/components/overlay/revogr-overlay-style.scss?tag=revogr-overlay-selection","./src/components/overlay/revogr-overlay-selection.tsx"],"sourcesContent":["import { Edition, Observable, Selection } from '../../interfaces';\nimport { getRange } from './selection.helpers';\nimport Cell = Selection.Cell;\nimport Range = Selection.RangeArea;\n\ninterface Config {\n changeRange(range: Range): boolean;\n focus(focus: Cell, end: Cell): boolean;\n}\n\nexport default class SelectionStoreService {\n constructor(public store: Observable<Selection.SelectionStoreState>, private config: Config) {\n this.store = store;\n }\n\n get edited(): Edition.EditCellStore | null {\n return this.store.get('edit');\n }\n\n get focused(): Cell | null {\n return this.store.get('focus');\n }\n\n get ranged(): Range | null {\n return this.store.get('range');\n }\n\n changeRange(range: Range) {\n return this.config.changeRange(range);\n }\n\n focus(cell?: Cell, isMulti = false) {\n if (!cell) {\n return false;\n }\n let end: Cell = cell;\n\n // range edit\n if (isMulti) {\n let start: Cell | null = this.store.get('focus');\n if (start) {\n return this.config.changeRange(getRange(start, end));\n }\n }\n\n // single focus\n return this.config.focus(cell, end);\n }\n}\n","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","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","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","var baseSlice = require('./_baseSlice'),\n isIterateeCall = require('./_isIterateeCall'),\n toInteger = require('./toInteger');\n\n/**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n}\n\nmodule.exports = slice;\n","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","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","revogr-overlay-selection {\n display: block;\n position: relative;\n width: 100%;\n\n .autofill-handle {\n $handler-size: 10px;\n position: absolute;\n width: $handler-size;\n height: $handler-size;\n background: $selection-border;\n margin-left: -$handler-size + 1;\n margin-top: -$handler-size + 1;\n border: 1px solid white;\n box-sizing: border-box;\n z-index: 10;\n cursor: crosshair;\n }\n\n .selection-border-range {\n position: absolute;\n pointer-events: none;\n z-index: 9;\n }\n\n .selection-border-range {\n @include selection();\n }\n\n revogr-edit {\n z-index: 10;\n }\n}\n","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"],"version":3}
@@ -1 +0,0 @@
1
- {"file":"revogr-row-headers.js","mappings":";;;;;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
@@ -1 +0,0 @@
1
- {"file":"revogr-row-headers2.js","mappings":"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","names":[],"sources":["./src/store/viewPort/viewport.helpers.ts","./src/store/viewPort/viewport.store.ts","./src/components/rowHeaders/row-header-render.tsx","./src/components/rowHeaders/revogr-row-headers.tsx"],"sourcesContent":["import { getItemByPosition } from '../dimension/dimension.helpers';\nimport { RevoGrid } from '../../interfaces';\n\nexport type DimensionDataViewport = Pick<\n RevoGrid.DimensionSettingsState,\n 'indexes' | 'positionIndexes' | 'positionIndexToItem' | 'sizes' | 'originItemSize' | 'realSize' | 'frameOffset'\n>;\n\ntype ItemsToUpdate = Pick<RevoGrid.ViewportStateItems, 'items' | 'start' | 'end'>;\n/**\n * Update items based on new scroll position\n * If viewport wasn't changed fully simple recombination of positions\n * Otherwise rebuild viewport items\n */\nexport function getUpdatedItemsByPosition<T extends ItemsToUpdate>(\n pos: number, // coordinate\n items: T,\n realCount: number,\n virtualSize: number,\n dimension: DimensionDataViewport\n): ItemsToUpdate {\n const activeItem: RevoGrid.PositionItem = getItemByPosition(dimension, pos);\n const firstItem: RevoGrid.PositionItem = getFirstItem(items);\n let toUpdate: ItemsToUpdate;\n // do simple position recombination if items already present in viewport\n if (firstItem) {\n let changedOffsetStart = activeItem.itemIndex - (firstItem.itemIndex || 0);\n // if item changed\n if (changedOffsetStart) {\n // simple recombination\n toUpdate = recombineByOffset(Math.abs(changedOffsetStart), {\n positiveDirection: changedOffsetStart > -1,\n ...dimension,\n ...items,\n });\n }\n }\n\n const maxSizeVirtualSize = getMaxVirtualSize(virtualSize, dimension.realSize, activeItem);\n // if partial recombination add items if revo-viewport has some space left\n if (toUpdate) {\n const extra = addMissingItems(activeItem, realCount, maxSizeVirtualSize, toUpdate, dimension);\n if (extra.length) {\n updateMissingAndRange(toUpdate.items, extra, toUpdate);\n }\n }\n\n // new collection if no items after replacement full replacement\n if (!toUpdate) {\n const items = getItems({\n firstItemStart: activeItem.start,\n firstItemIndex: activeItem.itemIndex,\n origSize: dimension.originItemSize,\n maxSize: maxSizeVirtualSize,\n maxCount: realCount,\n sizes: dimension.sizes,\n });\n\n // range now comes from 0 to length - 1\n toUpdate = {\n items,\n start: 0,\n end: items.length - 1,\n };\n }\n return toUpdate;\n}\n\n// virtual size can differ based on scroll position if some big items are present\n// scroll can be in the middle of item and virtual size will be larger\n// so we need to exclude this part from virtual size hence it's already passed\nfunction getMaxVirtualSize(virtualSize: number, realSize: number, activeItem: RevoGrid.PositionItem) {\n return Math.min(virtualSize + (activeItem.end - activeItem.start), realSize)\n}\n\nexport function updateMissingAndRange(\n items: RevoGrid.VirtualPositionItem[],\n missing: RevoGrid.VirtualPositionItem[],\n range: RevoGrid.Range\n) {\n items.splice(range.end + 1, 0, ...missing);\n // update range if start larger after recombination\n if (range.start >= range.end && !(range.start === range.end && range.start === 0)) {\n range.start += missing.length;\n }\n range.end += missing.length;\n}\n\n/**\n * If partial replacement\n * this function adds items if viewport has some space left\n */\nexport function addMissingItems<T extends ItemsToUpdate>(\n firstItem: RevoGrid.PositionItem,\n realCount: number,\n virtualSize: number,\n existingCollection: T,\n dimension: Pick<RevoGrid.DimensionSettingsState, 'sizes' | 'originItemSize'>,\n): RevoGrid.VirtualPositionItem[] {\n const lastItem: RevoGrid.VirtualPositionItem = getLastItem(existingCollection);\n const items = getItems({\n sizes: dimension.sizes,\n firstItemStart: lastItem.end,\n firstItemIndex: lastItem.itemIndex + 1,\n origSize: dimension.originItemSize,\n maxSize: virtualSize - (lastItem.end - firstItem.start),\n maxCount: realCount,\n });\n return items;\n}\n\n/**\n * Get wiewport items parameters\n * caching position and calculating items count in viewport\n */\nexport function getItems(\n opt: {\n firstItemIndex: number;\n firstItemStart: number;\n origSize: number;\n maxSize: number; // virtual size\n maxCount: number; // real item count, where the last item\n sizes?: RevoGrid.ViewSettingSizeProp;\n },\n currentSize = 0,\n) {\n const items: RevoGrid.VirtualPositionItem[] = [];\n\n let index = opt.firstItemIndex;\n let size = currentSize;\n\n // max size or max count\n while (size <= opt.maxSize && index < opt.maxCount) {\n const newSize = getItemSize(index, opt.sizes, opt.origSize);\n items.push({\n start: opt.firstItemStart + size,\n end: opt.firstItemStart + size + newSize,\n itemIndex: index,\n size: newSize,\n });\n size += newSize;\n index++;\n }\n return items;\n}\n\n/**\n * Do batch items recombination\n * If items not overlapped with existing viewport returns null\n */\nexport function recombineByOffset(\n offset: number,\n data: {\n positiveDirection: boolean;\n } & ItemsToUpdate &\n Pick<RevoGrid.DimensionSettingsState, 'sizes' | 'realSize' | 'originItemSize'>,\n): ItemsToUpdate | null {\n const newItems = [...data.items];\n const itemsCount = newItems.length;\n let newRange = {\n start: data.start,\n end: data.end,\n };\n\n // if offset out of revo-viewport, makes sense whole redraw\n if (offset > itemsCount) {\n return null;\n }\n\n // is direction of scroll positive\n if (data.positiveDirection) {\n // push item to the end\n let lastItem: RevoGrid.VirtualPositionItem = getLastItem(data);\n\n let i: number = newRange.start;\n const length = i + offset;\n for (; i < length; i++) {\n const newIndex: number = lastItem.itemIndex + 1;\n const size: number = getItemSize(newIndex, data.sizes, data.originItemSize);\n\n // if item overlapped limit break a loop\n if (lastItem.end + size > data.realSize) {\n break;\n }\n\n // new item index to recombine\n let newEnd = i % itemsCount;\n\n // item should always present, we do not create new item, we recombine them\n if (!newItems[newEnd]) {\n throw new Error('incorrect index');\n }\n\n // do recombination\n newItems[newEnd] = lastItem = {\n start: lastItem.end,\n end: lastItem.end + size,\n itemIndex: newIndex,\n size: size,\n };\n // update range\n newRange.start++;\n newRange.end = newEnd;\n }\n\n // direction is negative\n } else {\n // push item to the start\n let firstItem: RevoGrid.VirtualPositionItem = getFirstItem(data);\n\n const end = newRange.end;\n for (let i = 0; i < offset; i++) {\n const newIndex: number = firstItem.itemIndex - 1;\n const size: number = getItemSize(newIndex, data.sizes, data.originItemSize);\n\n // new item index to recombine\n let newStart = end - i;\n newStart = (newStart < 0 ? itemsCount + newStart : newStart) % itemsCount;\n\n // item should always present, we do not create new item, we recombine them\n if (!newItems[newStart]) {\n throw new Error('incorrect index');\n }\n\n // do recombination\n newItems[newStart] = firstItem = {\n start: firstItem.start - size,\n end: firstItem.start,\n itemIndex: newIndex,\n size: size,\n };\n // update range\n newRange.start = newStart;\n newRange.end--;\n }\n }\n const range = {\n start: (newRange.start < 0 ? itemsCount + newRange.start : newRange.start) % itemsCount,\n end: (newRange.end < 0 ? itemsCount + newRange.end : newRange.end) % itemsCount,\n };\n return {\n items: newItems,\n ...range,\n };\n}\n\nfunction getItemSize(index: number, sizes?: RevoGrid.ViewSettingSizeProp, origSize: number = 0): number {\n if (sizes && sizes[index]) {\n return sizes[index];\n }\n return origSize;\n}\n\n/**\n * Verify if position is in range of the PositionItem, start and end are included\n */\nexport function isActiveRange(\n pos: number,\n realSize: number,\n first?: RevoGrid.PositionItem,\n last?: RevoGrid.PositionItem\n): boolean {\n if (!first || !last) {\n return false;\n }\n // if position is in range of first item\n // or position is after first item and last item is the last item in real size\n return pos >= first.start && pos <= first.end ||\n pos > first.end && last.end === realSize;\n}\n\nexport function isActiveRangeOutsideLastItem(pos: number, virtualSize: number, firstItem?: RevoGrid.PositionItem, lastItem?: RevoGrid.PositionItem) {\n // if no first item, means no items in viewport\n if (!firstItem) {\n return false;\n }\n return virtualSize + pos > lastItem?.end\n}\n\nexport function getFirstItem(s: ItemsToUpdate): RevoGrid.VirtualPositionItem | undefined {\n return s.items[s.start];\n}\n\nexport function getLastItem(s: ItemsToUpdate): RevoGrid.VirtualPositionItem {\n return s.items[s.end];\n}\n\n/**\n * Set items sizes from start index to end\n * @param vpItems\n * @param start\n * @param size\n * @param lastCoordinate\n * @returns\n */\nexport function setItemSizes(\n vpItems: RevoGrid.VirtualPositionItem[],\n initialIndex: number,\n size: number,\n lastCoordinate: number\n) {\n const items = [...vpItems];\n const count = items.length;\n\n let pos = lastCoordinate;\n let i = 0;\n let start = initialIndex;\n\n // viewport not inited\n if (!count) {\n return [];\n }\n // loop through array from initial item after recombination\n while (i < count) {\n const item = items[start];\n item.start = pos;\n item.size = size;\n item.end = item.start + size;\n pos = item.end;\n // loop by start index\n start++;\n i++;\n\n // if start index out of array, reset it\n if (start === count) {\n start = 0;\n }\n }\n return items;\n}\n","/**\n * Store is responsible for visible\n * Viewport information for each dimension\n * Redraw items during scrolling\n */\n\nimport { createStore } from '@stencil/store';\n\nimport { addMissingItems, DimensionDataViewport, getFirstItem, getLastItem, getUpdatedItemsByPosition, isActiveRange, isActiveRangeOutsideLastItem, setItemSizes, updateMissingAndRange } from './viewport.helpers';\n\nimport { setStore } from '../../utils/store.utils';\nimport { Observable, RevoGrid } from '../../interfaces';\n\nfunction initialState(): RevoGrid.ViewportState {\n return {\n // virtual item information per rendered item\n items: [],\n // virtual dom item order to render\n start: 0,\n\n end: 0,\n\n // size of viewport in px\n virtualSize: 0,\n\n // total number of items\n realCount: 0,\n\n // last coordinate for store position restore\n lastCoordinate: 0,\n };\n}\n\nexport default class ViewportStore {\n readonly store: Observable<RevoGrid.ViewportState>;\n constructor() {\n this.store = createStore(initialState());\n this.store.onChange('realCount', () => this.clear());\n }\n\n /** Render viewport based on coordinate, this is main method for draw */\n setViewPortCoordinate(position: number, dimension: DimensionDataViewport): void {\n let virtualSize = this.store.get('virtualSize');\n // no visible data to calculate\n if (!virtualSize) {\n return;\n }\n\n const frameOffset = dimension.frameOffset;\n const singleOffsetInPx = dimension.originItemSize * frameOffset;\n // add offset to virtual size from both sides\n const outsize = singleOffsetInPx * 2;\n virtualSize += outsize;\n\n // expected no scroll if real size less than virtual size, position is 0\n let maxCoordinate = 0;\n // if there is nodes outside of viewport, max coordinate has to be adjusted\n if (dimension.realSize > virtualSize) {\n // max coordinate is real size minus virtual/rendered space\n maxCoordinate = dimension.realSize - virtualSize;\n }\n let toUpdate: Partial<RevoGrid.ViewportState> = {\n lastCoordinate: position,\n };\n let pos = position;\n pos -= singleOffsetInPx;\n pos = pos < 0 ? 0 : pos < maxCoordinate ? pos : maxCoordinate;\n\n const allItems = this.getItems();\n const firstItem: RevoGrid.VirtualPositionItem | undefined = getFirstItem(allItems);\n const lastItem: RevoGrid.VirtualPositionItem | undefined = getLastItem(allItems);\n\n // left position changed\n // verify if new position is in range of previously rendered first item\n if (!isActiveRange(pos, dimension.realSize, firstItem, lastItem)) {\n toUpdate = {\n ...toUpdate,\n ...getUpdatedItemsByPosition(pos, allItems, this.store.get('realCount'), virtualSize, dimension),\n };\n this.setViewport({ ...toUpdate });\n // right position changed\n } else if (isActiveRangeOutsideLastItem(pos, virtualSize, firstItem, lastItem)) {\n // check is any item missing for full fill content\n const missing = addMissingItems(firstItem, this.store.get('realCount'), virtualSize + pos - firstItem.start, allItems, dimension);\n\n // update missing items\n if (missing.length) {\n const items = [...this.store.get('items')];\n const range = {\n start: this.store.get('start'),\n end: this.store.get('end'),\n };\n updateMissingAndRange(items, missing, range);\n toUpdate = {\n ...toUpdate,\n items: [...items],\n ...range,\n };\n this.setViewport({ ...toUpdate });\n }\n }\n }\n\n /** Update viewport sizes */\n setViewPortDimension(sizes: RevoGrid.ViewSettingSizeProp, dropToOriginalSize?: number): void {\n let items = this.store.get('items');\n const count = items.length;\n // viewport not inited\n if (!count) {\n return;\n }\n\n let changedCoordinate = 0;\n let i = 0;\n let start = this.store.get('start');\n\n // drop to original size if requested\n if (dropToOriginalSize) {\n items = setItemSizes(\n items,\n start,\n dropToOriginalSize,\n this.store.get('lastCoordinate')\n );\n }\n\n // loop through array from initial item after recombination\n while (i < count) {\n const item = items[start];\n // change pos if size change present before\n if (changedCoordinate) {\n item.start += changedCoordinate;\n item.end += changedCoordinate;\n }\n // change size\n const size: number | undefined = sizes[item.itemIndex];\n if (size) {\n const changedSize = size - item.size;\n changedCoordinate += changedSize;\n item.size = size;\n item.end = item.start + size;\n }\n\n // loop by start index\n start++;\n i++;\n if (start === count) {\n start = 0;\n }\n }\n\n this.setViewport({ items: [...items] });\n }\n\n getItems(): Pick<RevoGrid.ViewportStateItems, 'items' | 'start' | 'end'> {\n return {\n items: this.store.get('items'),\n start: this.store.get('start'),\n end: this.store.get('end'),\n };\n }\n\n setViewport(data: Partial<RevoGrid.ViewportState>): void {\n setStore(this.store, data);\n }\n\n clear(): void {\n this.store.set('items', []);\n }\n}\n","import { VNode } from '@stencil/core';\nimport { RevoGrid } from '../../interfaces';\n\ntype HeaderRender = {\n (start: number): (h: RevoGrid.HyperFunc<VNode>, e: { rowIndex: number }) => number;\n}\nexport const RowHeaderRender: HeaderRender = s => (__, { rowIndex: i }) => s + i;\n","import { h, Host } from '@stencil/core';\nimport { Component, Prop, Event, EventEmitter } from '@stencil/core';\nimport { RevoGrid } from '../../interfaces';\nimport DataStore from '../../store/dataSource/data.store';\nimport ViewportStore from '../../store/viewPort/viewport.store';\nimport { UUID } from '../../utils/consts';\nimport { ElementScroll } from '../revo-grid/viewport.scrolling.service';\nimport { ViewportData } from '../revo-grid/viewport.interfaces';\nimport { RowHeaderRender } from './row-header-render';\n\n\n\nconst LETTER_BLOCK_SIZE = 10;\n\n@Component({ tag: 'revogr-row-headers' })\nexport class RevogrRowHeaders {\n @Prop() height: number;\n\n @Prop() dataPorts: ViewportData[];\n @Prop() headerProp: Record<string, any>;\n @Prop() uiid: string;\n\n @Prop() resize: boolean;\n @Prop() rowHeaderColumn: RevoGrid.RowHeaders;\n // @Event({ bubbles: false }) beforeRowAdd(y: number): EventEmitter<SelectionStore>;\n @Event({ bubbles: false }) scrollViewport: EventEmitter<RevoGrid.ViewPortScrollEvent>;\n @Event({ bubbles: false }) elementToScroll: EventEmitter<ElementScroll>;\n\n render() {\n const dataViews: HTMLElement[] = [];\n const viewport = new ViewportStore();\n\n /** render viewports rows */\n let totalLength = 1;\n for (let data of this.dataPorts) {\n const itemCount = data.dataStore.get('items').length;\n // initiate row data\n const dataStore = new DataStore<RevoGrid.DataType, RevoGrid.DimensionRows>(data.type);\n dataStore.updateData(data.dataStore.get('source'));\n // initiate column data\n const colData = new DataStore<RevoGrid.ColumnRegular, RevoGrid.DimensionCols>('colPinStart');\n const column = {\n cellTemplate: RowHeaderRender(totalLength),\n ...this.rowHeaderColumn,\n };\n colData.updateData([column]);\n\n const viewData = {\n ...data,\n dataStore: dataStore.store,\n colData: colData.store,\n viewportCol: viewport.store,\n readonly: true,\n range: false,\n };\n dataViews.push(<revogr-data {...viewData} />);\n totalLength += itemCount;\n }\n\n const colSize = this.rowHeaderColumn?.size || (totalLength.toString().length + 1) * LETTER_BLOCK_SIZE;\n viewport.setViewport({\n realCount: 1,\n virtualSize: 0,\n items: [\n {\n size: colSize,\n start: 0,\n end: colSize,\n itemIndex: 0,\n },\n ],\n });\n\n const parent = `${this.uiid}-rowHeaders`;\n const viewportScroll = {\n [UUID]: parent,\n contentHeight: this.height,\n contentWidth: 0,\n style: { minWidth: `${colSize}px` },\n ref: (el: ElementScroll) => this.elementToScroll.emit(el),\n onScrollViewport: (e: CustomEvent) => this.scrollViewport.emit(e.detail),\n };\n const viewportHeader = {\n ...this.headerProp,\n colData: typeof this.rowHeaderColumn === 'object' ? [this.rowHeaderColumn] : [],\n viewportCol: viewport.store,\n canResize: false,\n parent,\n slot: 'header',\n }\n return <Host class=\"rowHeaders\" key=\"rowHeaders\">\n <revogr-viewport-scroll {...viewportScroll}>\n <revogr-header {...viewportHeader} />\n {dataViews}\n </revogr-viewport-scroll>\n </Host>;\n }\n}\n"],"version":3}
@@ -1 +0,0 @@
1
- {"file":"revogr-scroll-virtual.js","mappings":";;;;;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}