lsp-grid 1.0.0

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 (675) hide show
  1. package/README.md +34 -0
  2. package/dist/cjs/app-globals-Bfsg1bDt.js +16 -0
  3. package/dist/cjs/app-globals-Bfsg1bDt.js.map +1 -0
  4. package/dist/cjs/cell-renderer-DtuYp7tj.js +106 -0
  5. package/dist/cjs/cell-renderer-DtuYp7tj.js.map +1 -0
  6. package/dist/cjs/column.drag.plugin-BIptTmfz.js +2554 -0
  7. package/dist/cjs/column.drag.plugin-BIptTmfz.js.map +1 -0
  8. package/dist/cjs/column.service-BnVSAfcu.js +1391 -0
  9. package/dist/cjs/column.service-BnVSAfcu.js.map +1 -0
  10. package/dist/cjs/data.store-CrF4Nf9q.js +3615 -0
  11. package/dist/cjs/data.store-CrF4Nf9q.js.map +1 -0
  12. package/dist/cjs/debounce-DgeyTQM0.js +498 -0
  13. package/dist/cjs/debounce-DgeyTQM0.js.map +1 -0
  14. package/dist/cjs/edit.utils-Bw-E3Fj6.js +118 -0
  15. package/dist/cjs/edit.utils-Bw-E3Fj6.js.map +1 -0
  16. package/dist/cjs/events-D0Syn6ut.js +46 -0
  17. package/dist/cjs/events-D0Syn6ut.js.map +1 -0
  18. package/dist/cjs/filter.button-CaAAXq-6.js +49 -0
  19. package/dist/cjs/filter.button-CaAAXq-6.js.map +1 -0
  20. package/dist/cjs/header-cell-renderer-DhRJqZ-w.js +356 -0
  21. package/dist/cjs/header-cell-renderer-DhRJqZ-w.js.map +1 -0
  22. package/dist/cjs/index-VM40U6Gh.js +2549 -0
  23. package/dist/cjs/index-VM40U6Gh.js.map +1 -0
  24. package/dist/cjs/index.cjs.js +346 -0
  25. package/dist/cjs/index.cjs.js.map +1 -0
  26. package/dist/cjs/loader.cjs.js +19 -0
  27. package/dist/cjs/loader.cjs.js.map +1 -0
  28. package/dist/cjs/revo-grid.cjs.entry.js +2187 -0
  29. package/dist/cjs/revo-grid.cjs.entry.js.map +1 -0
  30. package/dist/cjs/revo-grid.cjs.js +31 -0
  31. package/dist/cjs/revo-grid.cjs.js.map +1 -0
  32. package/dist/cjs/revo-grid.entry.cjs.js.map +1 -0
  33. package/dist/cjs/revogr-attribution.revogr-extra.revogr-focus.revogr-overlay-selection.revogr-row-headers.revogr-scroll-virtual.revogr-temp-range.entry.cjs.js.map +1 -0
  34. package/dist/cjs/revogr-attribution_7.cjs.entry.js +1463 -0
  35. package/dist/cjs/revogr-attribution_7.cjs.entry.js.map +1 -0
  36. package/dist/cjs/revogr-clipboard.revogr-edit.revogr-order-editor.entry.cjs.js.map +1 -0
  37. package/dist/cjs/revogr-clipboard_3.cjs.entry.js +456 -0
  38. package/dist/cjs/revogr-clipboard_3.cjs.entry.js.map +1 -0
  39. package/dist/cjs/revogr-data.revogr-header.revogr-viewport-scroll.vnode-html.entry.cjs.js.map +1 -0
  40. package/dist/cjs/revogr-data_4.cjs.entry.js +948 -0
  41. package/dist/cjs/revogr-data_4.cjs.entry.js.map +1 -0
  42. package/dist/cjs/revogr-filter-panel.cjs.entry.js +382 -0
  43. package/dist/cjs/revogr-filter-panel.cjs.entry.js.map +1 -0
  44. package/dist/cjs/revogr-filter-panel.entry.cjs.js.map +1 -0
  45. package/dist/cjs/row-header-utils-DL640c7x.js +420 -0
  46. package/dist/cjs/row-header-utils-DL640c7x.js.map +1 -0
  47. package/dist/cjs/text-editor-DWChyeVV.js +81 -0
  48. package/dist/cjs/text-editor-DWChyeVV.js.map +1 -0
  49. package/dist/cjs/throttle-Bb1Bbfd1.js +278 -0
  50. package/dist/cjs/throttle-Bb1Bbfd1.js.map +1 -0
  51. package/dist/cjs/viewport.helpers-CI6uB8tu.js +59 -0
  52. package/dist/cjs/viewport.helpers-CI6uB8tu.js.map +1 -0
  53. package/dist/collection/collection-manifest.json +28 -0
  54. package/dist/collection/components/attribution/revogr-attribution.js +20 -0
  55. package/dist/collection/components/attribution/revogr-attribution.js.map +1 -0
  56. package/dist/collection/components/clipboard/revogr-clipboard.js +396 -0
  57. package/dist/collection/components/clipboard/revogr-clipboard.js.map +1 -0
  58. package/dist/collection/components/data/cell-renderer.js +44 -0
  59. package/dist/collection/components/data/cell-renderer.js.map +1 -0
  60. package/dist/collection/components/data/column.service.js +293 -0
  61. package/dist/collection/components/data/column.service.js.map +1 -0
  62. package/dist/collection/components/data/revogr-data-style.css +75 -0
  63. package/dist/collection/components/data/revogr-data.js +697 -0
  64. package/dist/collection/components/data/revogr-data.js.map +1 -0
  65. package/dist/collection/components/data/row-highlight.plugin.js +51 -0
  66. package/dist/collection/components/data/row-highlight.plugin.js.map +1 -0
  67. package/dist/collection/components/data/row-renderer.js +16 -0
  68. package/dist/collection/components/data/row-renderer.js.map +1 -0
  69. package/dist/collection/components/editors/edit.utils.js +13 -0
  70. package/dist/collection/components/editors/edit.utils.js.map +1 -0
  71. package/dist/collection/components/editors/revogr-edit-style.css +16 -0
  72. package/dist/collection/components/editors/revogr-edit.js +346 -0
  73. package/dist/collection/components/editors/revogr-edit.js.map +1 -0
  74. package/dist/collection/components/editors/text-editor.js +74 -0
  75. package/dist/collection/components/editors/text-editor.js.map +1 -0
  76. package/dist/collection/components/extra/revogr-extra.js +125 -0
  77. package/dist/collection/components/extra/revogr-extra.js.map +1 -0
  78. package/dist/collection/components/header/header-cell-renderer.js +34 -0
  79. package/dist/collection/components/header/header-cell-renderer.js.map +1 -0
  80. package/dist/collection/components/header/header-group-renderer.js +25 -0
  81. package/dist/collection/components/header/header-group-renderer.js.map +1 -0
  82. package/dist/collection/components/header/header-renderer.js +61 -0
  83. package/dist/collection/components/header/header-renderer.js.map +1 -0
  84. package/dist/collection/components/header/resizable.directive.js +237 -0
  85. package/dist/collection/components/header/resizable.directive.js.map +1 -0
  86. package/dist/collection/components/header/resizable.element.js +38 -0
  87. package/dist/collection/components/header/resizable.element.js.map +1 -0
  88. package/dist/collection/components/header/revogr-header-style.css +144 -0
  89. package/dist/collection/components/header/revogr-header.js +573 -0
  90. package/dist/collection/components/header/revogr-header.js.map +1 -0
  91. package/dist/collection/components/order/order-renderer.js +50 -0
  92. package/dist/collection/components/order/order-renderer.js.map +1 -0
  93. package/dist/collection/components/order/order-row.service.js +72 -0
  94. package/dist/collection/components/order/order-row.service.js.map +1 -0
  95. package/dist/collection/components/order/revogr-order-editor.js +461 -0
  96. package/dist/collection/components/order/revogr-order-editor.js.map +1 -0
  97. package/dist/collection/components/overlay/autofill.service.js +224 -0
  98. package/dist/collection/components/overlay/autofill.service.js.map +1 -0
  99. package/dist/collection/components/overlay/keyboard.service.js +158 -0
  100. package/dist/collection/components/overlay/keyboard.service.js.map +1 -0
  101. package/dist/collection/components/overlay/revogr-overlay-selection.js +1515 -0
  102. package/dist/collection/components/overlay/revogr-overlay-selection.js.map +1 -0
  103. package/dist/collection/components/overlay/revogr-overlay-style.css +95 -0
  104. package/dist/collection/components/overlay/selection.utils.js +136 -0
  105. package/dist/collection/components/overlay/selection.utils.js.map +1 -0
  106. package/dist/collection/components/revoGrid/grid.helpers.js +33 -0
  107. package/dist/collection/components/revoGrid/grid.helpers.js.map +1 -0
  108. package/dist/collection/components/revoGrid/plugin.service.js +81 -0
  109. package/dist/collection/components/revoGrid/plugin.service.js.map +1 -0
  110. package/dist/collection/components/revoGrid/revo-grid-style.css +567 -0
  111. package/dist/collection/components/revoGrid/revo-grid.js +3671 -0
  112. package/dist/collection/components/revoGrid/revo-grid.js.map +1 -0
  113. package/dist/collection/components/revoGrid/viewport.helpers.js +49 -0
  114. package/dist/collection/components/revoGrid/viewport.helpers.js.map +1 -0
  115. package/dist/collection/components/revoGrid/viewport.resize.service.js +55 -0
  116. package/dist/collection/components/revoGrid/viewport.resize.service.js.map +1 -0
  117. package/dist/collection/components/revoGrid/viewport.scrolling.service.js +90 -0
  118. package/dist/collection/components/revoGrid/viewport.scrolling.service.js.map +1 -0
  119. package/dist/collection/components/revoGrid/viewport.service.js +237 -0
  120. package/dist/collection/components/revoGrid/viewport.service.js.map +1 -0
  121. package/dist/collection/components/rowHeaders/revogr-row-headers.js +291 -0
  122. package/dist/collection/components/rowHeaders/revogr-row-headers.js.map +1 -0
  123. package/dist/collection/components/rowHeaders/row-header-render.js +5 -0
  124. package/dist/collection/components/rowHeaders/row-header-render.js.map +1 -0
  125. package/dist/collection/components/scroll/revogr-viewport-scroll-style.css +69 -0
  126. package/dist/collection/components/scroll/revogr-viewport-scroll.js +601 -0
  127. package/dist/collection/components/scroll/revogr-viewport-scroll.js.map +1 -0
  128. package/dist/collection/components/scrollable/autohide-scroll.plugin.js +44 -0
  129. package/dist/collection/components/scrollable/autohide-scroll.plugin.js.map +1 -0
  130. package/dist/collection/components/scrollable/revogr-scroll-style.css +34 -0
  131. package/dist/collection/components/scrollable/revogr-scroll-virtual.js +295 -0
  132. package/dist/collection/components/scrollable/revogr-scroll-virtual.js.map +1 -0
  133. package/dist/collection/components/selectionFocus/revogr-focus-style.css +7 -0
  134. package/dist/collection/components/selectionFocus/revogr-focus.js +400 -0
  135. package/dist/collection/components/selectionFocus/revogr-focus.js.map +1 -0
  136. package/dist/collection/components/selectionTempRange/revogr-temp-range-style.css +28 -0
  137. package/dist/collection/components/selectionTempRange/revogr-temp-range.js +171 -0
  138. package/dist/collection/components/selectionTempRange/revogr-temp-range.js.map +1 -0
  139. package/dist/collection/components/vnode/vnode-converter.js +84 -0
  140. package/dist/collection/components/vnode/vnode-converter.js.map +1 -0
  141. package/dist/collection/components/vnode/vnode.utils.js +18 -0
  142. package/dist/collection/components/vnode/vnode.utils.js.map +1 -0
  143. package/dist/collection/global/global.js +19 -0
  144. package/dist/collection/global/global.js.map +1 -0
  145. package/dist/collection/index.js +13 -0
  146. package/dist/collection/index.js.map +1 -0
  147. package/dist/collection/plugins/add-rows-on-paste.plugin.js +40 -0
  148. package/dist/collection/plugins/add-rows-on-paste.plugin.js.map +1 -0
  149. package/dist/collection/plugins/base.plugin.js +90 -0
  150. package/dist/collection/plugins/base.plugin.js.map +1 -0
  151. package/dist/collection/plugins/column.auto-size.plugin.js +225 -0
  152. package/dist/collection/plugins/column.auto-size.plugin.js.map +1 -0
  153. package/dist/collection/plugins/column.stretch.plugin.js +96 -0
  154. package/dist/collection/plugins/column.stretch.plugin.js.map +1 -0
  155. package/dist/collection/plugins/dispatcher.js +40 -0
  156. package/dist/collection/plugins/dispatcher.js.map +1 -0
  157. package/dist/collection/plugins/export/csv.js +72 -0
  158. package/dist/collection/plugins/export/csv.js.map +1 -0
  159. package/dist/collection/plugins/export/export.plugin.js +157 -0
  160. package/dist/collection/plugins/export/export.plugin.js.map +1 -0
  161. package/dist/collection/plugins/export/types.js +2 -0
  162. package/dist/collection/plugins/export/types.js.map +1 -0
  163. package/dist/collection/plugins/filter/conditions/equal.js +21 -0
  164. package/dist/collection/plugins/filter/conditions/equal.js.map +1 -0
  165. package/dist/collection/plugins/filter/conditions/number/greaterThan.js +14 -0
  166. package/dist/collection/plugins/filter/conditions/number/greaterThan.js.map +1 -0
  167. package/dist/collection/plugins/filter/conditions/number/greaterThanOrEqual.js +11 -0
  168. package/dist/collection/plugins/filter/conditions/number/greaterThanOrEqual.js.map +1 -0
  169. package/dist/collection/plugins/filter/conditions/number/lessThan.js +16 -0
  170. package/dist/collection/plugins/filter/conditions/number/lessThan.js.map +1 -0
  171. package/dist/collection/plugins/filter/conditions/number/lessThanOrEqual.js +11 -0
  172. package/dist/collection/plugins/filter/conditions/number/lessThanOrEqual.js.map +1 -0
  173. package/dist/collection/plugins/filter/conditions/set.js +7 -0
  174. package/dist/collection/plugins/filter/conditions/set.js.map +1 -0
  175. package/dist/collection/plugins/filter/conditions/string/beginswith.js +21 -0
  176. package/dist/collection/plugins/filter/conditions/string/beginswith.js.map +1 -0
  177. package/dist/collection/plugins/filter/conditions/string/contains.js +25 -0
  178. package/dist/collection/plugins/filter/conditions/string/contains.js.map +1 -0
  179. package/dist/collection/plugins/filter/filter.button.js +28 -0
  180. package/dist/collection/plugins/filter/filter.button.js.map +1 -0
  181. package/dist/collection/plugins/filter/filter.indexed.js +49 -0
  182. package/dist/collection/plugins/filter/filter.indexed.js.map +1 -0
  183. package/dist/collection/plugins/filter/filter.panel.js +610 -0
  184. package/dist/collection/plugins/filter/filter.panel.js.map +1 -0
  185. package/dist/collection/plugins/filter/filter.plugin.js +388 -0
  186. package/dist/collection/plugins/filter/filter.plugin.js.map +1 -0
  187. package/dist/collection/plugins/filter/filter.style.css +165 -0
  188. package/dist/collection/plugins/filter/filter.types.js +9 -0
  189. package/dist/collection/plugins/filter/filter.types.js.map +1 -0
  190. package/dist/collection/plugins/groupingRow/grouping.const.js +16 -0
  191. package/dist/collection/plugins/groupingRow/grouping.const.js.map +1 -0
  192. package/dist/collection/plugins/groupingRow/grouping.row.expand.service.js +79 -0
  193. package/dist/collection/plugins/groupingRow/grouping.row.expand.service.js.map +1 -0
  194. package/dist/collection/plugins/groupingRow/grouping.row.plugin.js +245 -0
  195. package/dist/collection/plugins/groupingRow/grouping.row.plugin.js.map +1 -0
  196. package/dist/collection/plugins/groupingRow/grouping.row.renderer.js +38 -0
  197. package/dist/collection/plugins/groupingRow/grouping.row.renderer.js.map +1 -0
  198. package/dist/collection/plugins/groupingRow/grouping.row.types.js +2 -0
  199. package/dist/collection/plugins/groupingRow/grouping.row.types.js.map +1 -0
  200. package/dist/collection/plugins/groupingRow/grouping.service.js +178 -0
  201. package/dist/collection/plugins/groupingRow/grouping.service.js.map +1 -0
  202. package/dist/collection/plugins/groupingRow/grouping.trimmed.service.js +61 -0
  203. package/dist/collection/plugins/groupingRow/grouping.trimmed.service.js.map +1 -0
  204. package/dist/collection/plugins/index.js +15 -0
  205. package/dist/collection/plugins/index.js.map +1 -0
  206. package/dist/collection/plugins/moveColumn/column.drag.plugin.js +175 -0
  207. package/dist/collection/plugins/moveColumn/column.drag.plugin.js.map +1 -0
  208. package/dist/collection/plugins/moveColumn/order-column.handler.js +71 -0
  209. package/dist/collection/plugins/moveColumn/order-column.handler.js.map +1 -0
  210. package/dist/collection/plugins/rtl/rtl.plugin.js +110 -0
  211. package/dist/collection/plugins/rtl/rtl.plugin.js.map +1 -0
  212. package/dist/collection/plugins/sorting/sorting.func.js +82 -0
  213. package/dist/collection/plugins/sorting/sorting.func.js.map +1 -0
  214. package/dist/collection/plugins/sorting/sorting.plugin.js +224 -0
  215. package/dist/collection/plugins/sorting/sorting.plugin.js.map +1 -0
  216. package/dist/collection/plugins/sorting/sorting.sign.js +9 -0
  217. package/dist/collection/plugins/sorting/sorting.sign.js.map +1 -0
  218. package/dist/collection/plugins/sorting/sorting.types.js +2 -0
  219. package/dist/collection/plugins/sorting/sorting.types.js.map +1 -0
  220. package/dist/collection/plugins/wcag/index.js +84 -0
  221. package/dist/collection/plugins/wcag/index.js.map +1 -0
  222. package/dist/collection/serve/controller.js +344 -0
  223. package/dist/collection/serve/data.js +201 -0
  224. package/dist/collection/services/cell.helpers.js +12 -0
  225. package/dist/collection/services/cell.helpers.js.map +1 -0
  226. package/dist/collection/services/column.data.provider.js +119 -0
  227. package/dist/collection/services/column.data.provider.js.map +1 -0
  228. package/dist/collection/services/data.provider.js +89 -0
  229. package/dist/collection/services/data.provider.js.map +1 -0
  230. package/dist/collection/services/dimension.provider.js +176 -0
  231. package/dist/collection/services/dimension.provider.js.map +1 -0
  232. package/dist/collection/services/local.scroll.service.js +124 -0
  233. package/dist/collection/services/local.scroll.service.js.map +1 -0
  234. package/dist/collection/services/local.scroll.timer.js +81 -0
  235. package/dist/collection/services/local.scroll.timer.js.map +1 -0
  236. package/dist/collection/services/selection.store.connector.js +307 -0
  237. package/dist/collection/services/selection.store.connector.js.map +1 -0
  238. package/dist/collection/services/viewport.provider.js +17 -0
  239. package/dist/collection/services/viewport.provider.js.map +1 -0
  240. package/dist/collection/store/dataSource/data.proxy.js +45 -0
  241. package/dist/collection/store/dataSource/data.proxy.js.map +1 -0
  242. package/dist/collection/store/dataSource/data.store.js +144 -0
  243. package/dist/collection/store/dataSource/data.store.js.map +1 -0
  244. package/dist/collection/store/dataSource/index.js +7 -0
  245. package/dist/collection/store/dataSource/index.js.map +1 -0
  246. package/dist/collection/store/dataSource/trimmed.plugin.js +34 -0
  247. package/dist/collection/store/dataSource/trimmed.plugin.js.map +1 -0
  248. package/dist/collection/store/dimension/dimension.helpers.js +101 -0
  249. package/dist/collection/store/dimension/dimension.helpers.js.map +1 -0
  250. package/dist/collection/store/dimension/dimension.recalculate.plugin.js +35 -0
  251. package/dist/collection/store/dimension/dimension.recalculate.plugin.js.map +1 -0
  252. package/dist/collection/store/dimension/dimension.store.js +109 -0
  253. package/dist/collection/store/dimension/dimension.store.js.map +1 -0
  254. package/dist/collection/store/dimension/dimension.trim.plugin.js +61 -0
  255. package/dist/collection/store/dimension/dimension.trim.plugin.js.map +1 -0
  256. package/dist/collection/store/dimension/index.js +6 -0
  257. package/dist/collection/store/dimension/index.js.map +1 -0
  258. package/dist/collection/store/index.js +17 -0
  259. package/dist/collection/store/index.js.map +1 -0
  260. package/dist/collection/store/selection/index.js +6 -0
  261. package/dist/collection/store/selection/index.js.map +1 -0
  262. package/dist/collection/store/selection/selection.helpers.js +53 -0
  263. package/dist/collection/store/selection/selection.helpers.js.map +1 -0
  264. package/dist/collection/store/selection/selection.store.js +85 -0
  265. package/dist/collection/store/selection/selection.store.js.map +1 -0
  266. package/dist/collection/store/vp/index.js +6 -0
  267. package/dist/collection/store/vp/index.js.map +1 -0
  268. package/dist/collection/store/vp/viewport.helpers.js +251 -0
  269. package/dist/collection/store/vp/viewport.helpers.js.map +1 -0
  270. package/dist/collection/store/vp/viewport.store.js +151 -0
  271. package/dist/collection/store/vp/viewport.store.js.map +1 -0
  272. package/dist/collection/themeManager/theme.compact.js +9 -0
  273. package/dist/collection/themeManager/theme.compact.js.map +1 -0
  274. package/dist/collection/themeManager/theme.default.js +9 -0
  275. package/dist/collection/themeManager/theme.default.js.map +1 -0
  276. package/dist/collection/themeManager/theme.material.js +9 -0
  277. package/dist/collection/themeManager/theme.material.js.map +1 -0
  278. package/dist/collection/themeManager/theme.service.js +53 -0
  279. package/dist/collection/themeManager/theme.service.js.map +1 -0
  280. package/dist/collection/types/dimension.js +2 -0
  281. package/dist/collection/types/dimension.js.map +1 -0
  282. package/dist/collection/types/events.js +118 -0
  283. package/dist/collection/types/events.js.map +1 -0
  284. package/dist/collection/types/index.js +12 -0
  285. package/dist/collection/types/index.js.map +1 -0
  286. package/dist/collection/types/interfaces.js +2 -0
  287. package/dist/collection/types/interfaces.js.map +1 -0
  288. package/dist/collection/types/plugin.js +2 -0
  289. package/dist/collection/types/plugin.js.map +1 -0
  290. package/dist/collection/types/plugin.types.js +2 -0
  291. package/dist/collection/types/plugin.types.js.map +1 -0
  292. package/dist/collection/types/selection.js +2 -0
  293. package/dist/collection/types/selection.js.map +1 -0
  294. package/dist/collection/types/theme.js +2 -0
  295. package/dist/collection/types/theme.js.map +1 -0
  296. package/dist/collection/types/viewport.interfaces.js +2 -0
  297. package/dist/collection/types/viewport.interfaces.js.map +1 -0
  298. package/dist/collection/utils/browser.js +7 -0
  299. package/dist/collection/utils/browser.js.map +1 -0
  300. package/dist/collection/utils/closest.polifill.js +22 -0
  301. package/dist/collection/utils/closest.polifill.js.map +1 -0
  302. package/dist/collection/utils/column.utils.js +153 -0
  303. package/dist/collection/utils/column.utils.js.map +1 -0
  304. package/dist/collection/utils/consts.js +26 -0
  305. package/dist/collection/utils/consts.js.map +1 -0
  306. package/dist/collection/utils/events.js +39 -0
  307. package/dist/collection/utils/events.js.map +1 -0
  308. package/dist/collection/utils/header.utils.js +24 -0
  309. package/dist/collection/utils/header.utils.js.map +1 -0
  310. package/dist/collection/utils/index.js +140 -0
  311. package/dist/collection/utils/index.js.map +1 -0
  312. package/dist/collection/utils/key.codes.js +80 -0
  313. package/dist/collection/utils/key.codes.js.map +1 -0
  314. package/dist/collection/utils/key.utils.js +90 -0
  315. package/dist/collection/utils/key.utils.js.map +1 -0
  316. package/dist/collection/utils/mobile.js +7 -0
  317. package/dist/collection/utils/mobile.js.map +1 -0
  318. package/dist/collection/utils/platform.js +9 -0
  319. package/dist/collection/utils/platform.js.map +1 -0
  320. package/dist/collection/utils/row-header-utils.js +9 -0
  321. package/dist/collection/utils/row-header-utils.js.map +1 -0
  322. package/dist/collection/utils/store.types.js +2 -0
  323. package/dist/collection/utils/store.types.js.map +1 -0
  324. package/dist/collection/utils/store.utils.js +15 -0
  325. package/dist/collection/utils/store.utils.js.map +1 -0
  326. package/dist/esm/app-globals-FBz64o-g.js +14 -0
  327. package/dist/esm/app-globals-FBz64o-g.js.map +1 -0
  328. package/dist/esm/cell-renderer-Ca_PCGjJ.js +98 -0
  329. package/dist/esm/cell-renderer-Ca_PCGjJ.js.map +1 -0
  330. package/dist/esm/column.drag.plugin-BtuUyB-2.js +2528 -0
  331. package/dist/esm/column.drag.plugin-BtuUyB-2.js.map +1 -0
  332. package/dist/esm/column.service-CTqFIQUy.js +1343 -0
  333. package/dist/esm/column.service-CTqFIQUy.js.map +1 -0
  334. package/dist/esm/data.store-B-lvmoFH.js +3553 -0
  335. package/dist/esm/data.store-B-lvmoFH.js.map +1 -0
  336. package/dist/esm/debounce-DTUQ1fY7.js +488 -0
  337. package/dist/esm/debounce-DTUQ1fY7.js.map +1 -0
  338. package/dist/esm/edit.utils-CyCANCLB.js +103 -0
  339. package/dist/esm/edit.utils-CyCANCLB.js.map +1 -0
  340. package/dist/esm/events-CKtYJJSv.js +43 -0
  341. package/dist/esm/events-CKtYJJSv.js.map +1 -0
  342. package/dist/esm/filter.button-CjABZQgg.js +39 -0
  343. package/dist/esm/filter.button-CjABZQgg.js.map +1 -0
  344. package/dist/esm/header-cell-renderer-DnjpJuXq.js +351 -0
  345. package/dist/esm/header-cell-renderer-DnjpJuXq.js.map +1 -0
  346. package/dist/esm/index-BAoInZ4V.js +2519 -0
  347. package/dist/esm/index-BAoInZ4V.js.map +1 -0
  348. package/dist/esm/index.js +181 -0
  349. package/dist/esm/index.js.map +1 -0
  350. package/dist/esm/loader.js +17 -0
  351. package/dist/esm/loader.js.map +1 -0
  352. package/dist/esm/revo-grid.entry.js +2185 -0
  353. package/dist/esm/revo-grid.entry.js.map +1 -0
  354. package/dist/esm/revo-grid.js +27 -0
  355. package/dist/esm/revo-grid.js.map +1 -0
  356. package/dist/esm/revogr-attribution.revogr-extra.revogr-focus.revogr-overlay-selection.revogr-row-headers.revogr-scroll-virtual.revogr-temp-range.entry.js.map +1 -0
  357. package/dist/esm/revogr-attribution_7.entry.js +1455 -0
  358. package/dist/esm/revogr-attribution_7.entry.js.map +1 -0
  359. package/dist/esm/revogr-clipboard.revogr-edit.revogr-order-editor.entry.js.map +1 -0
  360. package/dist/esm/revogr-clipboard_3.entry.js +452 -0
  361. package/dist/esm/revogr-clipboard_3.entry.js.map +1 -0
  362. package/dist/esm/revogr-data.revogr-header.revogr-viewport-scroll.vnode-html.entry.js.map +1 -0
  363. package/dist/esm/revogr-data_4.entry.js +943 -0
  364. package/dist/esm/revogr-data_4.entry.js.map +1 -0
  365. package/dist/esm/revogr-filter-panel.entry.js +380 -0
  366. package/dist/esm/revogr-filter-panel.entry.js.map +1 -0
  367. package/dist/esm/row-header-utils-vnoLGj5A.js +407 -0
  368. package/dist/esm/row-header-utils-vnoLGj5A.js.map +1 -0
  369. package/dist/esm/text-editor-Cp7lwBZi.js +79 -0
  370. package/dist/esm/text-editor-Cp7lwBZi.js.map +1 -0
  371. package/dist/esm/throttle-DiUrHjcY.js +273 -0
  372. package/dist/esm/throttle-DiUrHjcY.js.map +1 -0
  373. package/dist/esm/viewport.helpers-Ch4AQMMg.js +53 -0
  374. package/dist/esm/viewport.helpers-Ch4AQMMg.js.map +1 -0
  375. package/dist/index.cjs.js +1 -0
  376. package/dist/index.d.ts +1 -0
  377. package/dist/index.js +1 -0
  378. package/dist/revo-grid/app-globals-FBz64o-g.js +14 -0
  379. package/dist/revo-grid/app-globals-FBz64o-g.js.map +1 -0
  380. package/dist/revo-grid/cell-renderer-Ca_PCGjJ.js +98 -0
  381. package/dist/revo-grid/cell-renderer-Ca_PCGjJ.js.map +1 -0
  382. package/dist/revo-grid/column.drag.plugin-BtuUyB-2.js +2528 -0
  383. package/dist/revo-grid/column.drag.plugin-BtuUyB-2.js.map +1 -0
  384. package/dist/revo-grid/column.service-CTqFIQUy.js +1343 -0
  385. package/dist/revo-grid/column.service-CTqFIQUy.js.map +1 -0
  386. package/dist/revo-grid/data.store-B-lvmoFH.js +3553 -0
  387. package/dist/revo-grid/data.store-B-lvmoFH.js.map +1 -0
  388. package/dist/revo-grid/debounce-DTUQ1fY7.js +488 -0
  389. package/dist/revo-grid/debounce-DTUQ1fY7.js.map +1 -0
  390. package/dist/revo-grid/edit.utils-CyCANCLB.js +103 -0
  391. package/dist/revo-grid/edit.utils-CyCANCLB.js.map +1 -0
  392. package/dist/revo-grid/events-CKtYJJSv.js +43 -0
  393. package/dist/revo-grid/events-CKtYJJSv.js.map +1 -0
  394. package/dist/revo-grid/filter.button-CjABZQgg.js +39 -0
  395. package/dist/revo-grid/filter.button-CjABZQgg.js.map +1 -0
  396. package/dist/revo-grid/header-cell-renderer-DnjpJuXq.js +351 -0
  397. package/dist/revo-grid/header-cell-renderer-DnjpJuXq.js.map +1 -0
  398. package/dist/revo-grid/index-BAoInZ4V.js +2490 -0
  399. package/dist/revo-grid/index-BAoInZ4V.js.map +1 -0
  400. package/dist/revo-grid/index.esm.js +181 -0
  401. package/dist/revo-grid/index.esm.js.map +1 -0
  402. package/dist/revo-grid/loader.esm.js.map +1 -0
  403. package/dist/revo-grid/revo-grid.entry.esm.js.map +1 -0
  404. package/dist/revo-grid/revo-grid.entry.js +2185 -0
  405. package/dist/revo-grid/revo-grid.entry.js.map +1 -0
  406. package/dist/revo-grid/revo-grid.esm.js +27 -0
  407. package/dist/revo-grid/revo-grid.esm.js.map +1 -0
  408. package/dist/revo-grid/revogr-attribution.revogr-extra.revogr-focus.revogr-overlay-selection.revogr-row-headers.revogr-scroll-virtual.revogr-temp-range.entry.esm.js.map +1 -0
  409. package/dist/revo-grid/revogr-attribution_7.entry.js +1455 -0
  410. package/dist/revo-grid/revogr-attribution_7.entry.js.map +1 -0
  411. package/dist/revo-grid/revogr-clipboard.revogr-edit.revogr-order-editor.entry.esm.js.map +1 -0
  412. package/dist/revo-grid/revogr-clipboard_3.entry.js +452 -0
  413. package/dist/revo-grid/revogr-clipboard_3.entry.js.map +1 -0
  414. package/dist/revo-grid/revogr-data.revogr-header.revogr-viewport-scroll.vnode-html.entry.esm.js.map +1 -0
  415. package/dist/revo-grid/revogr-data_4.entry.js +943 -0
  416. package/dist/revo-grid/revogr-data_4.entry.js.map +1 -0
  417. package/dist/revo-grid/revogr-filter-panel.entry.esm.js.map +1 -0
  418. package/dist/revo-grid/revogr-filter-panel.entry.js +380 -0
  419. package/dist/revo-grid/revogr-filter-panel.entry.js.map +1 -0
  420. package/dist/revo-grid/row-header-utils-vnoLGj5A.js +407 -0
  421. package/dist/revo-grid/row-header-utils-vnoLGj5A.js.map +1 -0
  422. package/dist/revo-grid/text-editor-Cp7lwBZi.js +79 -0
  423. package/dist/revo-grid/text-editor-Cp7lwBZi.js.map +1 -0
  424. package/dist/revo-grid/throttle-DiUrHjcY.js +273 -0
  425. package/dist/revo-grid/throttle-DiUrHjcY.js.map +1 -0
  426. package/dist/revo-grid/viewport.helpers-Ch4AQMMg.js +53 -0
  427. package/dist/revo-grid/viewport.helpers-Ch4AQMMg.js.map +1 -0
  428. package/dist/types/components/attribution/revogr-attribution.d.ts +12 -0
  429. package/dist/types/components/clipboard/revogr-clipboard.d.ts +89 -0
  430. package/dist/types/components/data/cell-renderer.d.ts +12 -0
  431. package/dist/types/components/data/column.service.d.ts +61 -0
  432. package/dist/types/components/data/revogr-data.d.ts +107 -0
  433. package/dist/types/components/data/row-highlight.plugin.d.ts +10 -0
  434. package/dist/types/components/data/row-renderer.d.ts +12 -0
  435. package/dist/types/components/editors/edit.utils.d.ts +3 -0
  436. package/dist/types/components/editors/revogr-edit.d.ts +63 -0
  437. package/dist/types/components/editors/text-editor.d.ts +43 -0
  438. package/dist/types/components/extra/revogr-extra.d.ts +38 -0
  439. package/dist/types/components/header/header-cell-renderer.d.ts +9 -0
  440. package/dist/types/components/header/header-group-renderer.d.ts +15 -0
  441. package/dist/types/components/header/header-renderer.d.ts +16 -0
  442. package/dist/types/components/header/resizable.directive.d.ts +55 -0
  443. package/dist/types/components/header/resizable.element.d.ts +5 -0
  444. package/dist/types/components/header/revogr-header.d.ts +90 -0
  445. package/dist/types/components/order/order-renderer.d.ts +29 -0
  446. package/dist/types/components/order/order-row.service.d.ts +27 -0
  447. package/dist/types/components/order/revogr-order-editor.d.ts +56 -0
  448. package/dist/types/components/overlay/autofill.service.d.ts +80 -0
  449. package/dist/types/components/overlay/keyboard.service.d.ts +28 -0
  450. package/dist/types/components/overlay/revogr-overlay-selection.d.ts +278 -0
  451. package/dist/types/components/overlay/selection.utils.d.ts +47 -0
  452. package/dist/types/components/revoGrid/grid.helpers.d.ts +17 -0
  453. package/dist/types/components/revoGrid/plugin.service.d.ts +37 -0
  454. package/dist/types/components/revoGrid/revo-grid.d.ts +686 -0
  455. package/dist/types/components/revoGrid/viewport.helpers.d.ts +39 -0
  456. package/dist/types/components/revoGrid/viewport.resize.service.d.ts +17 -0
  457. package/dist/types/components/revoGrid/viewport.scrolling.service.d.ts +20 -0
  458. package/dist/types/components/revoGrid/viewport.service.d.ts +59 -0
  459. package/dist/types/components/rowHeaders/revogr-row-headers.d.ts +51 -0
  460. package/dist/types/components/rowHeaders/row-header-render.d.ts +9 -0
  461. package/dist/types/components/scroll/revogr-viewport-scroll.d.ts +117 -0
  462. package/dist/types/components/scrollable/autohide-scroll.plugin.d.ts +22 -0
  463. package/dist/types/components/scrollable/revogr-scroll-virtual.d.ts +43 -0
  464. package/dist/types/components/selectionFocus/revogr-focus.d.ts +58 -0
  465. package/dist/types/components/selectionTempRange/revogr-temp-range.d.ts +28 -0
  466. package/dist/types/components/vnode/vnode-converter.d.ts +19 -0
  467. package/dist/types/components/vnode/vnode.utils.d.ts +9 -0
  468. package/dist/types/components.d.ts +2583 -0
  469. package/dist/types/global/global.d.ts +1 -0
  470. package/dist/types/index.d.ts +9 -0
  471. package/dist/types/plugins/add-rows-on-paste.plugin.d.ts +14 -0
  472. package/dist/types/plugins/base.plugin.d.ts +51 -0
  473. package/dist/types/plugins/column.auto-size.plugin.d.ts +55 -0
  474. package/dist/types/plugins/column.stretch.plugin.d.ts +20 -0
  475. package/dist/types/plugins/dispatcher.d.ts +20 -0
  476. package/dist/types/plugins/export/csv.d.ts +9 -0
  477. package/dist/types/plugins/export/export.plugin.d.ts +24 -0
  478. package/dist/types/plugins/export/types.d.ts +23 -0
  479. package/dist/types/plugins/filter/conditions/equal.d.ts +4 -0
  480. package/dist/types/plugins/filter/conditions/number/greaterThan.d.ts +3 -0
  481. package/dist/types/plugins/filter/conditions/number/greaterThanOrEqual.d.ts +3 -0
  482. package/dist/types/plugins/filter/conditions/number/lessThan.d.ts +3 -0
  483. package/dist/types/plugins/filter/conditions/number/lessThanOrEqual.d.ts +3 -0
  484. package/dist/types/plugins/filter/conditions/set.d.ts +4 -0
  485. package/dist/types/plugins/filter/conditions/string/beginswith.d.ts +3 -0
  486. package/dist/types/plugins/filter/conditions/string/contains.d.ts +4 -0
  487. package/dist/types/plugins/filter/filter.button.d.ts +14 -0
  488. package/dist/types/plugins/filter/filter.indexed.d.ts +20 -0
  489. package/dist/types/plugins/filter/filter.panel.d.ts +53 -0
  490. package/dist/types/plugins/filter/filter.plugin.d.ts +73 -0
  491. package/dist/types/plugins/filter/filter.types.d.ts +129 -0
  492. package/dist/types/plugins/groupingRow/grouping.const.d.ts +12 -0
  493. package/dist/types/plugins/groupingRow/grouping.row.expand.service.d.ts +15 -0
  494. package/dist/types/plugins/groupingRow/grouping.row.plugin.d.ts +39 -0
  495. package/dist/types/plugins/groupingRow/grouping.row.renderer.d.ts +6 -0
  496. package/dist/types/plugins/groupingRow/grouping.row.types.d.ts +103 -0
  497. package/dist/types/plugins/groupingRow/grouping.service.d.ts +36 -0
  498. package/dist/types/plugins/groupingRow/grouping.trimmed.service.d.ts +10 -0
  499. package/dist/types/plugins/index.d.ts +11 -0
  500. package/dist/types/plugins/moveColumn/column.drag.plugin.d.ts +42 -0
  501. package/dist/types/plugins/moveColumn/order-column.handler.d.ts +16 -0
  502. package/dist/types/plugins/rtl/rtl.plugin.d.ts +37 -0
  503. package/dist/types/plugins/sorting/sorting.func.d.ts +9 -0
  504. package/dist/types/plugins/sorting/sorting.plugin.d.ts +48 -0
  505. package/dist/types/plugins/sorting/sorting.sign.d.ts +6 -0
  506. package/dist/types/plugins/sorting/sorting.types.d.ts +14 -0
  507. package/dist/types/plugins/wcag/index.d.ts +26 -0
  508. package/dist/types/services/cell.helpers.d.ts +2 -0
  509. package/dist/types/services/column.data.provider.d.ts +27 -0
  510. package/dist/types/services/data.provider.d.ts +36 -0
  511. package/dist/types/services/dimension.provider.d.ts +66 -0
  512. package/dist/types/services/local.scroll.service.d.ts +36 -0
  513. package/dist/types/services/local.scroll.timer.d.ts +32 -0
  514. package/dist/types/services/selection.store.connector.d.ts +79 -0
  515. package/dist/types/services/viewport.provider.d.ts +7 -0
  516. package/dist/types/stencil-public-runtime.d.ts +1709 -0
  517. package/dist/types/store/dataSource/data.proxy.d.ts +14 -0
  518. package/dist/types/store/dataSource/data.store.d.ts +74 -0
  519. package/dist/types/store/dataSource/index.d.ts +3 -0
  520. package/dist/types/store/dataSource/trimmed.plugin.d.ts +12 -0
  521. package/dist/types/store/dimension/dimension.helpers.d.ts +24 -0
  522. package/dist/types/store/dimension/dimension.recalculate.plugin.d.ts +9 -0
  523. package/dist/types/store/dimension/dimension.store.d.ts +21 -0
  524. package/dist/types/store/dimension/dimension.trim.plugin.d.ts +13 -0
  525. package/dist/types/store/dimension/index.d.ts +2 -0
  526. package/dist/types/store/index.d.ts +8 -0
  527. package/dist/types/store/selection/index.d.ts +2 -0
  528. package/dist/types/store/selection/selection.helpers.d.ts +6 -0
  529. package/dist/types/store/selection/selection.store.d.ts +22 -0
  530. package/dist/types/store/vp/index.d.ts +7 -0
  531. package/dist/types/store/vp/viewport.helpers.d.ts +54 -0
  532. package/dist/types/store/vp/viewport.store.d.ts +26 -0
  533. package/dist/types/themeManager/theme.compact.d.ts +4 -0
  534. package/dist/types/themeManager/theme.default.d.ts +4 -0
  535. package/dist/types/themeManager/theme.material.d.ts +4 -0
  536. package/dist/types/themeManager/theme.service.d.ts +13 -0
  537. package/dist/types/types/dimension.d.ts +8 -0
  538. package/dist/types/types/events.d.ts +2 -0
  539. package/dist/types/types/index.d.ts +8 -0
  540. package/dist/types/types/interfaces.d.ts +768 -0
  541. package/dist/types/types/plugin.d.ts +9 -0
  542. package/dist/types/types/plugin.types.d.ts +48 -0
  543. package/dist/types/types/selection.d.ts +178 -0
  544. package/dist/types/types/theme.d.ts +7 -0
  545. package/dist/types/types/viewport.interfaces.d.ts +45 -0
  546. package/dist/types/utils/browser.d.ts +1 -0
  547. package/dist/types/utils/closest.polifill.d.ts +0 -0
  548. package/dist/types/utils/column.utils.d.ts +52 -0
  549. package/dist/types/utils/consts.d.ts +22 -0
  550. package/dist/types/utils/events.d.ts +5 -0
  551. package/dist/types/utils/header.utils.d.ts +2 -0
  552. package/dist/types/utils/index.d.ts +32 -0
  553. package/dist/types/utils/key.codes.d.ts +73 -0
  554. package/dist/types/utils/key.utils.d.ts +13 -0
  555. package/dist/types/utils/mobile.d.ts +1 -0
  556. package/dist/types/utils/platform.d.ts +4 -0
  557. package/dist/types/utils/row-header-utils.d.ts +2 -0
  558. package/dist/types/utils/store.types.d.ts +97 -0
  559. package/dist/types/utils/store.utils.d.ts +10 -0
  560. package/hydrate/index.d.ts +273 -0
  561. package/hydrate/index.js +33890 -0
  562. package/hydrate/index.mjs +33882 -0
  563. package/hydrate/package.json +12 -0
  564. package/loader/cdn.js +4 -0
  565. package/loader/index.cjs.js +4 -0
  566. package/loader/index.d.ts +24 -0
  567. package/loader/index.es2017.js +4 -0
  568. package/loader/index.js +5 -0
  569. package/package.json +101 -0
  570. package/react/dist/index.d.ts +6191 -0
  571. package/react/dist/react-datagrid.js +260 -0
  572. package/react/dist/react-datagrid.umd.cjs +272 -0
  573. package/standalone/column.service.js +1345 -0
  574. package/standalone/column.service.js.map +1 -0
  575. package/standalone/consts.js +30 -0
  576. package/standalone/consts.js.map +1 -0
  577. package/standalone/data.store.js +3099 -0
  578. package/standalone/data.store.js.map +1 -0
  579. package/standalone/debounce.js +215 -0
  580. package/standalone/debounce.js.map +1 -0
  581. package/standalone/dimension.helpers.js +229 -0
  582. package/standalone/dimension.helpers.js.map +1 -0
  583. package/standalone/filter.button.js +39 -0
  584. package/standalone/filter.button.js.map +1 -0
  585. package/standalone/index.d.ts +68 -0
  586. package/standalone/index.js +217 -0
  587. package/standalone/index.js.map +1 -0
  588. package/standalone/index2.js +140 -0
  589. package/standalone/index2.js.map +1 -0
  590. package/standalone/local.scroll.timer.js +207 -0
  591. package/standalone/local.scroll.timer.js.map +1 -0
  592. package/standalone/platform.js +90 -0
  593. package/standalone/platform.js.map +1 -0
  594. package/standalone/revo-grid.d.ts +11 -0
  595. package/standalone/revo-grid.js +4884 -0
  596. package/standalone/revo-grid.js.map +1 -0
  597. package/standalone/revogr-attribution.d.ts +11 -0
  598. package/standalone/revogr-attribution.js +12 -0
  599. package/standalone/revogr-attribution.js.map +1 -0
  600. package/standalone/revogr-attribution2.js +32 -0
  601. package/standalone/revogr-attribution2.js.map +1 -0
  602. package/standalone/revogr-clipboard.d.ts +11 -0
  603. package/standalone/revogr-clipboard.js +12 -0
  604. package/standalone/revogr-clipboard.js.map +1 -0
  605. package/standalone/revogr-clipboard2.js +164 -0
  606. package/standalone/revogr-clipboard2.js.map +1 -0
  607. package/standalone/revogr-data.d.ts +11 -0
  608. package/standalone/revogr-data.js +12 -0
  609. package/standalone/revogr-data.js.map +1 -0
  610. package/standalone/revogr-data2.js +378 -0
  611. package/standalone/revogr-data2.js.map +1 -0
  612. package/standalone/revogr-edit.d.ts +11 -0
  613. package/standalone/revogr-edit.js +12 -0
  614. package/standalone/revogr-edit.js.map +1 -0
  615. package/standalone/revogr-edit2.js +334 -0
  616. package/standalone/revogr-edit2.js.map +1 -0
  617. package/standalone/revogr-extra.d.ts +11 -0
  618. package/standalone/revogr-extra.js +12 -0
  619. package/standalone/revogr-extra.js.map +1 -0
  620. package/standalone/revogr-extra2.js +73 -0
  621. package/standalone/revogr-extra2.js.map +1 -0
  622. package/standalone/revogr-filter-panel.d.ts +11 -0
  623. package/standalone/revogr-filter-panel.js +411 -0
  624. package/standalone/revogr-filter-panel.js.map +1 -0
  625. package/standalone/revogr-focus.d.ts +11 -0
  626. package/standalone/revogr-focus.js +12 -0
  627. package/standalone/revogr-focus.js.map +1 -0
  628. package/standalone/revogr-focus2.js +112 -0
  629. package/standalone/revogr-focus2.js.map +1 -0
  630. package/standalone/revogr-header.d.ts +11 -0
  631. package/standalone/revogr-header.js +12 -0
  632. package/standalone/revogr-header.js.map +1 -0
  633. package/standalone/revogr-header2.js +707 -0
  634. package/standalone/revogr-header2.js.map +1 -0
  635. package/standalone/revogr-order-editor.d.ts +11 -0
  636. package/standalone/revogr-order-editor.js +12 -0
  637. package/standalone/revogr-order-editor.js.map +1 -0
  638. package/standalone/revogr-order-editor2.js +201 -0
  639. package/standalone/revogr-order-editor2.js.map +1 -0
  640. package/standalone/revogr-overlay-selection.d.ts +11 -0
  641. package/standalone/revogr-overlay-selection.js +12 -0
  642. package/standalone/revogr-overlay-selection.js.map +1 -0
  643. package/standalone/revogr-overlay-selection2.js +972 -0
  644. package/standalone/revogr-overlay-selection2.js.map +1 -0
  645. package/standalone/revogr-row-headers.d.ts +11 -0
  646. package/standalone/revogr-row-headers.js +12 -0
  647. package/standalone/revogr-row-headers.js.map +1 -0
  648. package/standalone/revogr-row-headers2.js +520 -0
  649. package/standalone/revogr-row-headers2.js.map +1 -0
  650. package/standalone/revogr-scroll-virtual.d.ts +11 -0
  651. package/standalone/revogr-scroll-virtual.js +12 -0
  652. package/standalone/revogr-scroll-virtual.js.map +1 -0
  653. package/standalone/revogr-scroll-virtual2.js +184 -0
  654. package/standalone/revogr-scroll-virtual2.js.map +1 -0
  655. package/standalone/revogr-temp-range.d.ts +11 -0
  656. package/standalone/revogr-temp-range.js +12 -0
  657. package/standalone/revogr-temp-range.js.map +1 -0
  658. package/standalone/revogr-temp-range2.js +93 -0
  659. package/standalone/revogr-temp-range2.js.map +1 -0
  660. package/standalone/revogr-viewport-scroll.d.ts +11 -0
  661. package/standalone/revogr-viewport-scroll.js +12 -0
  662. package/standalone/revogr-viewport-scroll.js.map +1 -0
  663. package/standalone/revogr-viewport-scroll2.js +421 -0
  664. package/standalone/revogr-viewport-scroll2.js.map +1 -0
  665. package/standalone/selection.utils.js +179 -0
  666. package/standalone/selection.utils.js.map +1 -0
  667. package/standalone/throttle.js +75 -0
  668. package/standalone/throttle.js.map +1 -0
  669. package/standalone/toNumber.js +282 -0
  670. package/standalone/toNumber.js.map +1 -0
  671. package/standalone/vnode-converter.js +46 -0
  672. package/standalone/vnode-converter.js.map +1 -0
  673. package/standalone/vnode-html.d.ts +11 -0
  674. package/standalone/vnode-html.js +12 -0
  675. package/standalone/vnode-html.js.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter.panel.js","sourceRoot":"","sources":["../../../src/plugins/filter/filter.panel.tsx"],"names":[],"mappings":"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","sourcesContent":["// filter.panel.tsx\r\n\r\nimport {\r\n h,\r\n Component,\r\n Event,\r\n EventEmitter,\r\n Host,\r\n Listen,\r\n Method,\r\n Prop,\r\n State,\r\n type VNode,\r\n Element,\r\n} from '@stencil/core';\r\nimport debounce from 'lodash/debounce';\r\n\r\nimport { AndOrButton, isFilterBtn, TrashButton } from './filter.button';\r\nimport '../../utils/closest.polifill';\r\nimport {\r\n FilterCaptions,\r\n LogicFunction,\r\n MultiFilterItem,\r\n ShowData,\r\n} from './filter.types';\r\nimport type { ColumnProp } from '@type';\r\nimport { FilterType } from './filter.indexed';\r\n\r\nconst defaultType: FilterType = 'none';\r\n\r\nconst FILTER_LIST_CLASS = 'multi-filter-list';\r\nconst FILTER_LIST_CLASS_ACTION = 'multi-filter-list-action';\r\nconst FILTER_ID = 'add-filter';\r\n\r\n/**\r\n * Filter panel for editing filters\r\n */\r\n/**\r\n * @internal\r\n */\r\n@Component({\r\n tag: 'revogr-filter-panel',\r\n styleUrl: 'filter.style.scss',\r\n})\r\nexport class FilterPanel {\r\n private filterCaptionsInternal: FilterCaptions = {\r\n title: 'Filter by',\r\n ok: 'Close',\r\n save: 'Save',\r\n // drops the filter\r\n reset: 'Reset',\r\n cancel: 'Cancel',\r\n add: 'Add condition',\r\n placeholder: 'Enter value...',\r\n and: 'and',\r\n or: 'or',\r\n };\r\n\r\n @Element() element!: HTMLElement;\r\n @State() isFilterIdSet = false;\r\n @State() filterId = 0;\r\n @State() currentFilterId = -1;\r\n @State() currentFilterType: FilterType = defaultType;\r\n @State() changes: ShowData | undefined;\r\n @State() filterItems: MultiFilterItem = {};\r\n @Prop() filterNames: Record<string, string> = {};\r\n @Prop() filterEntities: Record<string, LogicFunction> = {};\r\n @Prop() filterCaptions: Partial<FilterCaptions> | undefined;\r\n /**\r\n * Disables dynamic filtering. A way to apply filters on Save only\r\n */\r\n @Prop() disableDynamicFiltering = false;\r\n /**\r\n * If true, closes the filter panel when clicking outside\r\n */\r\n @Prop() closeOnOutsideClick = true;\r\n @Event() filterChange: EventEmitter<MultiFilterItem>;\r\n @Event() resetChange: EventEmitter<ColumnProp>;\r\n\r\n @Listen('mousedown', { target: 'document' }) onMouseDown(e: MouseEvent) {\r\n // click on anything then select drops values to default\r\n if (!this.changes) {\r\n return;\r\n }\r\n const path = e.composedPath();\r\n const select = document.getElementById(FILTER_ID);\r\n if (select instanceof HTMLSelectElement) {\r\n // click on select should be skipped\r\n if (path.includes(select)) {\r\n return;\r\n }\r\n select.value = defaultType;\r\n }\r\n this.currentFilterType = defaultType;\r\n if (this.changes) {\r\n this.changes.type = defaultType;\r\n }\r\n this.currentFilterId = -1;\r\n\r\n const isOutside = !path.includes(this.element);\r\n\r\n if (\r\n e.target instanceof HTMLElement &&\r\n isOutside &&\r\n !isFilterBtn(e.target) &&\r\n this.closeOnOutsideClick\r\n ) {\r\n this.changes = undefined;\r\n }\r\n }\r\n\r\n @Method() async show(newEntity?: ShowData) {\r\n this.changes = newEntity;\r\n this.filterItems = newEntity?.filterItems || {};\r\n if (this.changes) {\r\n this.changes.type = this.changes.type || defaultType;\r\n }\r\n }\r\n\r\n @Method() async getChanges() {\r\n return this.changes;\r\n }\r\n\r\n componentWillRender() {\r\n if (!this.isFilterIdSet) {\r\n this.isFilterIdSet = true;\r\n const filterItems = Object.keys(this.filterItems);\r\n for (const prop of filterItems) {\r\n // we set the proper filterId so there won't be any conflict when removing filters\r\n this.filterId += this.filterItems[prop].length;\r\n }\r\n }\r\n }\r\n\r\n getFilterItemsList() {\r\n const prop = this.changes?.prop;\r\n if (typeof prop === 'undefined') return '';\r\n\r\n const propFilters = this.filterItems[prop] ?? [];\r\n const capts = Object.assign(\r\n this.filterCaptionsInternal,\r\n this.filterCaptions,\r\n );\r\n return (\r\n <div key={this.filterId}>\r\n {propFilters.map((filter, index) => {\r\n let andOrButton;\r\n if (filter.hidden) {\r\n return;\r\n }\r\n\r\n // hide toggle button if there is only one filter and the last one\r\n if (index !== this.filterItems[prop].length - 1) {\r\n andOrButton = (\r\n <div onClick={() => this.toggleFilterAndOr(filter.id)}>\r\n <AndOrButton\r\n text={filter.relation === 'and' ? capts.and : capts.or}\r\n />\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div key={filter.id} class={FILTER_LIST_CLASS}>\r\n <div class={{ 'select-input': true }}>\r\n <select\r\n class=\"select-css select-filter\"\r\n onChange={e => this.onFilterTypeChange(e, prop, index)}\r\n >\r\n {this.renderSelectOptions(\r\n this.filterItems[prop][index].type,\r\n true,\r\n )}\r\n </select>\r\n <div class={FILTER_LIST_CLASS_ACTION}>{andOrButton}</div>\r\n <div onClick={() => this.onRemoveFilter(filter.id)}>\r\n <TrashButton />\r\n </div>\r\n </div>\r\n <div>{this.renderExtra(prop, index)}</div>\r\n </div>\r\n );\r\n })}\r\n\r\n {propFilters.filter(f => !f.hidden).length > 0 ? <div class=\"add-filter-divider\" /> : ''}\r\n </div>\r\n );\r\n }\r\n\r\n private autoCorrect(el?: HTMLElement | null) {\r\n if (!el) {\r\n return;\r\n }\r\n\r\n const revoGrid = el.closest('revo-grid');\r\n if (!revoGrid) {\r\n return;\r\n }\r\n\r\n const pos = el.getBoundingClientRect();\r\n const gridPos = revoGrid.getBoundingClientRect();\r\n const maxLeft = gridPos.right - pos.width;\r\n\r\n if (pos.left > maxLeft && el.offsetLeft) {\r\n el.style.left = `${maxLeft - (el.parentElement?.getBoundingClientRect().left ?? 0)}px`;\r\n }\r\n }\r\n\r\n private onFilterTypeChange(e: Event, prop: ColumnProp, index: number) {\r\n if (!(e.target instanceof HTMLSelectElement)) {\r\n return;\r\n }\r\n this.filterItems[prop][index].type = e.target.value as FilterType;\r\n\r\n // this re-renders the input to know if we need extra input\r\n this.filterId++;\r\n\r\n // adding setTimeout will wait for the next tick DOM update then focus on input\r\n setTimeout(() => {\r\n const input = document.getElementById(\r\n 'filter-input-' + this.filterItems[prop][index].id,\r\n );\r\n if (input instanceof HTMLInputElement) {\r\n input.focus();\r\n }\r\n }, 0);\r\n\r\n if (!this.disableDynamicFiltering) {\r\n this.debouncedApplyFilter();\r\n }\r\n }\r\n\r\n private debouncedApplyFilter = debounce(() => {\r\n this.filterChange.emit(this.filterItems);\r\n }, 400);\r\n\r\n private onAddNewFilter(e: Event) {\r\n const el = e.target as HTMLSelectElement;\r\n this.currentFilterType = el.value as FilterType;\r\n this.addNewFilterToProp();\r\n\r\n // reset value after adding new filter\r\n const select = document.getElementById('add-filter') as HTMLSelectElement;\r\n if (select) {\r\n select.value = defaultType;\r\n this.currentFilterType = defaultType;\r\n }\r\n\r\n if (!this.disableDynamicFiltering) {\r\n this.debouncedApplyFilter();\r\n }\r\n }\r\n\r\n private addNewFilterToProp() {\r\n const prop = this.changes?.prop;\r\n if (!(prop || prop === 0)) return;\r\n\r\n if (!this.filterItems[prop]) {\r\n this.filterItems[prop] = [];\r\n }\r\n\r\n if (this.currentFilterType === 'none') return;\r\n\r\n this.filterId++;\r\n this.currentFilterId = this.filterId;\r\n\r\n this.filterItems[prop].push({\r\n id: this.currentFilterId,\r\n type: this.currentFilterType,\r\n value: '',\r\n relation: 'and',\r\n });\r\n\r\n // adding setTimeout will wait for the next tick DOM update then focus on input\r\n setTimeout(() => {\r\n const input = document.getElementById(\r\n 'filter-input-' + this.currentFilterId,\r\n ) as HTMLInputElement;\r\n if (input) input.focus();\r\n }, 0);\r\n }\r\n\r\n private onSave() {\r\n this.filterChange.emit(this.filterItems);\r\n }\r\n\r\n private onCancel() {\r\n this.changes = undefined;\r\n }\r\n\r\n private onReset() {\r\n this.assertChanges();\r\n\r\n this.resetChange.emit(this.changes?.prop);\r\n\r\n // this updates the DOM which is used by getFilterItemsList() key\r\n this.filterId++;\r\n }\r\n\r\n private onRemoveFilter(id: number) {\r\n this.assertChanges();\r\n\r\n // this is for reactivity issues for getFilterItemsList()\r\n this.filterId++;\r\n\r\n const prop = this.changes?.prop;\r\n\r\n const items = this.filterItems[prop ?? ''];\r\n if (!items) return;\r\n\r\n const index = items.findIndex(d => d.id === id);\r\n if (index === -1) return;\r\n items.splice(index, 1);\r\n\r\n // let's remove the prop if no more filters so the filter icon will be removed\r\n if (items.length === 0) delete this.filterItems[prop ?? ''];\r\n\r\n if (!this.disableDynamicFiltering) {\r\n this.debouncedApplyFilter();\r\n }\r\n }\r\n\r\n private toggleFilterAndOr(id: number) {\r\n this.assertChanges();\r\n\r\n // this is for reactivity issues for getFilterItemsList()\r\n this.filterId++;\r\n\r\n const prop = this.changes?.prop;\r\n\r\n const items = this.filterItems[prop ?? ''];\r\n if (!items) return;\r\n\r\n const index = items.findIndex(d => d.id === id);\r\n if (index === -1) return;\r\n\r\n items[index].relation = items[index].relation === 'and' ? 'or' : 'and';\r\n if (!this.disableDynamicFiltering) {\r\n this.debouncedApplyFilter();\r\n }\r\n }\r\n\r\n private assertChanges() {\r\n if (!this.changes) {\r\n throw new Error('Changes required per edit');\r\n }\r\n }\r\n\r\n renderSelectOptions(type: FilterType, isDefaultTypeRemoved = false) {\r\n if (!this.changes) {\r\n return;\r\n }\r\n const options: VNode[] = [];\r\n const prop = this.changes.prop;\r\n\r\n const hidden = new Set<string>();\r\n Object.entries(this.filterItems).forEach(([_, values]) => {\r\n values.forEach((filter) => {\r\n if (filter.hidden) {\r\n hidden.add(filter.type);\r\n }\r\n })\r\n });\r\n\r\n if (!isDefaultTypeRemoved) {\r\n const capts = Object.assign(\r\n this.filterCaptionsInternal,\r\n this.filterCaptions,\r\n );\r\n\r\n options.push(\r\n <option\r\n selected={this.currentFilterType === defaultType}\r\n value={defaultType}\r\n >\r\n {prop && this.filterItems[prop] && this.filterItems[prop].length > 0\r\n ? capts.add\r\n : this.filterNames[defaultType]}\r\n </option>,\r\n );\r\n }\r\n\r\n for (let gIndex in this.changes.filterTypes) {\r\n const group = this.changes.filterTypes[gIndex].filter(k => !hidden.has(k));\r\n if (group.length) {\r\n options.push(\r\n ...group.map(k => (\r\n <option value={k} selected={type === k}>\r\n {this.filterNames[k]}\r\n </option>\r\n )),\r\n );\r\n options.push(<option disabled></option>);\r\n }\r\n }\r\n return options;\r\n }\r\n\r\n renderExtra(prop: ColumnProp, index: number) {\r\n const currentFilter = this.filterItems[prop];\r\n\r\n if (!currentFilter) return '';\r\n\r\n const applyFilter = (value?: any) => {\r\n this.filterItems[prop][index].value = value;\r\n if (!this.disableDynamicFiltering) {\r\n this.debouncedApplyFilter();\r\n }\r\n };\r\n\r\n const focusNext = () => {\r\n const select = document.getElementById('add-filter') as HTMLSelectElement;\r\n if (select) {\r\n select.value = defaultType;\r\n this.currentFilterType = defaultType;\r\n this.addNewFilterToProp();\r\n select.focus();\r\n }\r\n };\r\n\r\n const capts = Object.assign(\r\n this.filterCaptionsInternal,\r\n this.filterCaptions,\r\n );\r\n const extra = this.filterEntities[currentFilter[index].type].extra;\r\n if (typeof extra === 'function') {\r\n return extra(h, {\r\n value: currentFilter[index].value,\r\n filter: currentFilter[index],\r\n prop,\r\n index,\r\n placeholder: capts.placeholder,\r\n onInput: (value: any) => {\r\n applyFilter(value);\r\n },\r\n onFocus: () => {\r\n focusNext();\r\n }\r\n });\r\n }\r\n if (extra !== 'input' && extra !== 'datepicker') {\r\n return '';\r\n }\r\n return (\r\n <input\r\n id={`filter-input-${currentFilter[index].id}`}\r\n placeholder={capts.placeholder}\r\n type={extra === 'datepicker' ? 'date' : 'text'}\r\n value={currentFilter[index].value}\r\n onInput={(e) => {\r\n if (e.target instanceof HTMLInputElement) {\r\n applyFilter(e.target.value);\r\n }\r\n }}\r\n onKeyDown={e => {\r\n if (e.key.toLowerCase() === 'enter') {\r\n const select = document.getElementById('add-filter') as HTMLSelectElement;\r\n if (select) {\r\n focusNext();\r\n }\r\n return;\r\n }\r\n // keep event local, don't escalate farther to dom\r\n e.stopPropagation();\r\n }}\r\n />\r\n );\r\n }\r\n\r\n render() {\r\n if (!this.changes) {\r\n return <Host style={{ display: 'none' }}></Host>;\r\n }\r\n const style = {\r\n display: 'block',\r\n left: `${this.changes.x}px`,\r\n top: `${this.changes.y}px`,\r\n };\r\n\r\n const capts = Object.assign(\r\n this.filterCaptionsInternal,\r\n this.filterCaptions,\r\n );\r\n\r\n return (\r\n <Host\r\n style={style}\r\n ref={el => {\r\n this.changes?.autoCorrect !== false && this.autoCorrect(el);\r\n }}\r\n >\r\n <slot slot=\"header\" />\r\n { this.changes.extraContent?.(this.changes) || '' }\r\n\r\n { this.changes?.hideDefaultFilters !== true && (\r\n [\r\n <label>{capts.title}</label>,\r\n <div class=\"filter-holder\">{this.getFilterItemsList()}</div>,\r\n <div class=\"add-filter\">\r\n <select\r\n id={FILTER_ID}\r\n class=\"select-css\"\r\n onChange={e => this.onAddNewFilter(e)}\r\n >\r\n {this.renderSelectOptions(this.currentFilterType)}\r\n </select>\r\n </div>\r\n ]\r\n )}\r\n\r\n <slot />\r\n <div class=\"filter-actions\">\r\n {this.disableDynamicFiltering && [\r\n <button\r\n id=\"revo-button-save\"\r\n aria-label=\"save\"\r\n class=\"revo-button green\"\r\n onClick={() => this.onSave()}\r\n >\r\n {capts.save}\r\n </button>,\r\n <button\r\n id=\"revo-button-ok\"\r\n aria-label=\"ok\"\r\n class=\"revo-button green\"\r\n onClick={() => this.onCancel()}\r\n >\r\n {capts.cancel}\r\n </button>,\r\n ]}\r\n {!this.disableDynamicFiltering && [\r\n <button\r\n id=\"revo-button-ok\"\r\n aria-label=\"ok\"\r\n class=\"revo-button green\"\r\n onClick={() => this.onCancel()}\r\n >\r\n {capts.ok}\r\n </button>,\r\n\r\n <button\r\n id=\"revo-button-reset\"\r\n aria-label=\"reset\"\r\n class=\"revo-button outline\"\r\n onClick={() => this.onReset()}\r\n >\r\n {capts.reset}\r\n </button>,\r\n ]}\r\n </div>\r\n <slot slot=\"footer\" />\r\n </Host>\r\n );\r\n }\r\n}\r\n"]}
@@ -0,0 +1,388 @@
1
+ /*!
2
+ * Built by LevelSkill.Pro
3
+ */
4
+ // filter.plugin.tsx
5
+ import { h } from "@stencil/core";
6
+ import { BasePlugin } from "../base.plugin";
7
+ import { FILTER_PROP, isFilterBtn } from "./filter.button";
8
+ import { filterCoreFunctionsIndexedByType, filterNames, filterTypes, } from "./filter.indexed";
9
+ import { getCellDataParsed } from "../../utils";
10
+ export * from './filter.types';
11
+ export * from './filter.indexed';
12
+ export * from './filter.button';
13
+ export const FILTER_TRIMMED_TYPE = 'filter';
14
+ export const FILTER_CONFIG_CHANGED_EVENT = 'filterconfigchanged';
15
+ export const FILTE_PANEL = 'revogr-filter-panel';
16
+ /**
17
+ * @typedef ColumnFilterConfig
18
+ * @type {object}
19
+ *
20
+ * @property {MultiFilterItem|undefined} multiFilterItems - data for multi filtering with relation
21
+ *
22
+ * @property {Record<ColumnProp, FilterCollectionItem>|undefined} collection - preserved filter data, relation for filters will be applied as 'and'
23
+ *
24
+ * @property {string[]|undefined} include - filters to be included, if defined everything else out of scope will be ignored
25
+ *
26
+ * @property {Record<string, CustomFilter>|undefined} customFilters - hash map of {FilterType:CustomFilter}.
27
+ *
28
+ * @property {FilterLocalization|undefined} localization - translation for filter popup captions.
29
+ *
30
+ * @property {boolean|undefined} disableDynamicFiltering - disables dynamic filtering. A way to apply filters on Save only.
31
+ */
32
+ /**
33
+ * @internal
34
+ */
35
+ export class FilterPlugin extends BasePlugin {
36
+ constructor(revogrid, providers, config) {
37
+ var _a;
38
+ super(revogrid, providers);
39
+ this.revogrid = revogrid;
40
+ this.config = config;
41
+ this.filterCollection = {};
42
+ this.multiFilterItems = {};
43
+ /**
44
+ * Filter types
45
+ * @example
46
+ * {
47
+ * string: ['contains', 'beginswith'],
48
+ * number: ['eqN', 'neqN', 'gt']
49
+ * }
50
+ */
51
+ this.filterByType = Object.assign({}, filterTypes);
52
+ this.filterNameIndexByType = Object.assign({}, filterNames);
53
+ this.filterFunctionsIndexedByType = Object.assign({}, filterCoreFunctionsIndexedByType);
54
+ this.filterProp = FILTER_PROP;
55
+ if (config) {
56
+ this.initConfig(config);
57
+ }
58
+ const existingNodes = this.revogrid.registerVNode.filter(n => typeof n === 'object' && n.$tag$ !== FILTE_PANEL);
59
+ this.revogrid.registerVNode = [
60
+ ...existingNodes,
61
+ h("revogr-filter-panel", { filterNames: this.filterNameIndexByType, filterEntities: this.filterFunctionsIndexedByType, filterCaptions: (_a = config === null || config === void 0 ? void 0 : config.localization) === null || _a === void 0 ? void 0 : _a.captions, onFilterChange: e => this.onFilterChange(e.detail), onResetChange: e => this.onFilterReset(e.detail), disableDynamicFiltering: config === null || config === void 0 ? void 0 : config.disableDynamicFiltering, closeOnOutsideClick: config === null || config === void 0 ? void 0 : config.closeFilterPanelOnOutsideClick, ref: e => (this.pop = e) }, ' ', this.extraContent()),
62
+ ];
63
+ const aftersourceset = async () => {
64
+ const filterCollectionProps = Object.keys(this.filterCollection);
65
+ if (filterCollectionProps.length > 0) {
66
+ // handle old way of filtering by reworking FilterCollection to new MultiFilterItem
67
+ filterCollectionProps.forEach((prop, index) => {
68
+ if (!this.multiFilterItems[prop]) {
69
+ this.multiFilterItems[prop] = [
70
+ {
71
+ id: index,
72
+ type: this.filterCollection[prop].type,
73
+ value: this.filterCollection[prop].value,
74
+ relation: 'and',
75
+ },
76
+ ];
77
+ }
78
+ });
79
+ }
80
+ if (Object.keys(this.multiFilterItems).length === 0) {
81
+ return;
82
+ }
83
+ await this.runFiltering(this.multiFilterItems);
84
+ };
85
+ this.addEventListener('headerclick', e => this.headerclick(e));
86
+ this.addEventListener(FILTER_CONFIG_CHANGED_EVENT, ({ detail }) => {
87
+ if (!detail ||
88
+ (typeof detail === 'object' &&
89
+ (!detail.multiFilterItems ||
90
+ !Object.keys(detail.multiFilterItems).length))) {
91
+ this.clearFiltering();
92
+ return;
93
+ }
94
+ if (typeof detail === 'object') {
95
+ this.initConfig(detail);
96
+ }
97
+ aftersourceset();
98
+ });
99
+ this.addEventListener('aftersourceset', aftersourceset);
100
+ this.addEventListener('filter', ({ detail }) => this.onFilterChange(detail));
101
+ }
102
+ beforeshow(_) {
103
+ // used as hook for filter panel
104
+ }
105
+ extraContent() {
106
+ return null;
107
+ }
108
+ initConfig(config) {
109
+ if (config.multiFilterItems) {
110
+ this.multiFilterItems = Object.assign({}, config.multiFilterItems);
111
+ }
112
+ else {
113
+ this.multiFilterItems = {};
114
+ }
115
+ // Add custom filters
116
+ if (config.customFilters) {
117
+ for (let customFilterType in config.customFilters) {
118
+ const cFilter = config.customFilters[customFilterType];
119
+ if (!this.filterByType[cFilter.columnFilterType]) {
120
+ this.filterByType[cFilter.columnFilterType] = [];
121
+ }
122
+ // add custom filter type
123
+ this.filterByType[cFilter.columnFilterType].push(customFilterType);
124
+ // add custom filter function
125
+ this.filterFunctionsIndexedByType[customFilterType] = cFilter.func;
126
+ // add custom filter name
127
+ this.filterNameIndexByType[customFilterType] = cFilter.name;
128
+ }
129
+ }
130
+ // Add filterProp if provided in config
131
+ if (config.filterProp) {
132
+ this.filterProp = config.filterProp;
133
+ }
134
+ /**
135
+ * which filters has to be included/excluded
136
+ * convenient way to exclude system filters
137
+ */
138
+ const cfgInlcude = config.include;
139
+ if (cfgInlcude) {
140
+ const filters = {};
141
+ for (let t in this.filterByType) {
142
+ // validate filters, if appropriate function present
143
+ const newTypes = this.filterByType[t].filter(f => cfgInlcude.indexOf(f) > -1);
144
+ if (newTypes.length) {
145
+ filters[t] = newTypes;
146
+ }
147
+ }
148
+ // if any valid filters provided show them
149
+ if (Object.keys(filters).length > 0) {
150
+ this.filterByType = filters;
151
+ }
152
+ }
153
+ if (config.collection) {
154
+ const filtersWithFilterFunctionPresent = Object.entries(config.collection).filter(([, item]) => this.filterFunctionsIndexedByType[item.type]);
155
+ this.filterCollection = Object.fromEntries(filtersWithFilterFunctionPresent);
156
+ }
157
+ else {
158
+ this.filterCollection = {};
159
+ }
160
+ if (config.localization) {
161
+ if (config.localization.filterNames) {
162
+ Object.entries(config.localization.filterNames).forEach(([k, v]) => {
163
+ if (this.filterNameIndexByType[k] != void 0) {
164
+ this.filterNameIndexByType[k] = v;
165
+ }
166
+ });
167
+ }
168
+ }
169
+ }
170
+ async headerclick(e) {
171
+ var _a, _b;
172
+ const el = (_a = e.detail.originalEvent) === null || _a === void 0 ? void 0 : _a.target;
173
+ if (!isFilterBtn(el)) {
174
+ return;
175
+ }
176
+ e.preventDefault();
177
+ if (!this.pop) {
178
+ return;
179
+ }
180
+ // filter button clicked, open filter dialog
181
+ const gridPos = this.revogrid.getBoundingClientRect();
182
+ const buttonPos = el.getBoundingClientRect();
183
+ const prop = e.detail.prop;
184
+ const data = Object.assign(Object.assign(Object.assign({}, e.detail), this.filterCollection[prop]), { x: buttonPos.x - gridPos.x, y: buttonPos.y - gridPos.y + buttonPos.height, autoCorrect: true, filterTypes: this.getColumnFilter(e.detail.filter), filterItems: this.multiFilterItems, extraContent: this.extraHyperContent });
185
+ (_b = this.beforeshow) === null || _b === void 0 ? void 0 : _b.call(this, data);
186
+ this.pop.show(data);
187
+ }
188
+ getColumnFilter(type) {
189
+ let filterType = 'string';
190
+ if (!type) {
191
+ return { [filterType]: this.filterByType[filterType] };
192
+ }
193
+ // if custom column filter
194
+ if (this.isValidType(type)) {
195
+ filterType = type;
196
+ // if multiple filters applied
197
+ }
198
+ else if (typeof type === 'object' && type.length) {
199
+ return type.reduce((r, multiType) => {
200
+ if (this.isValidType(multiType)) {
201
+ r[multiType] = this.filterByType[multiType];
202
+ }
203
+ return r;
204
+ }, {});
205
+ }
206
+ return { [filterType]: this.filterByType[filterType] };
207
+ }
208
+ isValidType(type) {
209
+ return !!(typeof type === 'string' && this.filterByType[type]);
210
+ }
211
+ /**
212
+ * Called on internal component change
213
+ */
214
+ async onFilterChange(filterItems) {
215
+ // store the filter items
216
+ this.multiFilterItems = filterItems;
217
+ // run the filtering when the items change
218
+ this.runFiltering(this.multiFilterItems);
219
+ }
220
+ onFilterReset(prop) {
221
+ delete this.multiFilterItems[prop !== null && prop !== void 0 ? prop : ''];
222
+ this.onFilterChange(this.multiFilterItems);
223
+ }
224
+ /**
225
+ * Triggers grid filtering
226
+ */
227
+ async doFiltering(collection, source, columns, filterItems) {
228
+ const columnsToUpdate = [];
229
+ /**
230
+ * Loop through the columns and update the columns that need to be updated with the `hasFilter` property.
231
+ */
232
+ const columnByProp = {};
233
+ columns.forEach(rgCol => {
234
+ const column = Object.assign({}, rgCol);
235
+ const hasFilter = filterItems[column.prop];
236
+ columnByProp[column.prop] = column;
237
+ /**
238
+ * If the column has a filter and it's not already marked as filtered, update the column.
239
+ */
240
+ if (column[this.filterProp] && !hasFilter) {
241
+ delete column[this.filterProp];
242
+ columnsToUpdate.push(column);
243
+ }
244
+ /**
245
+ * If the column does not have a filter and it's marked as filtered, update the column.
246
+ */
247
+ if (!column[this.filterProp] && hasFilter) {
248
+ columnsToUpdate.push(column);
249
+ column[this.filterProp] = true;
250
+ }
251
+ });
252
+ const itemsToTrim = this.getRowFilter(source, filterItems, columnByProp);
253
+ // check is filter event prevented
254
+ const { defaultPrevented, detail } = this.emit('beforefiltertrimmed', {
255
+ collection,
256
+ itemsToFilter: itemsToTrim,
257
+ source,
258
+ filterItems,
259
+ });
260
+ if (defaultPrevented) {
261
+ return;
262
+ }
263
+ this.providers.data.setTrimmed({ [FILTER_TRIMMED_TYPE]: detail.itemsToFilter });
264
+ // applies the hasFilter to the columns to show filter icon
265
+ this.providers.column.updateColumns(columnsToUpdate);
266
+ this.emit('afterfilterapply', {
267
+ multiFilterItems: filterItems,
268
+ source,
269
+ collection,
270
+ });
271
+ }
272
+ async clearFiltering() {
273
+ this.multiFilterItems = {};
274
+ await this.runFiltering(this.multiFilterItems);
275
+ }
276
+ async runFiltering(multiFilterItems) {
277
+ const collection = {};
278
+ // handle old filterCollection to return the first filter only (if any) from multiFilterItems
279
+ const filterProps = Object.keys(multiFilterItems);
280
+ for (const prop of filterProps) {
281
+ // check if we have any filter for a column
282
+ if (multiFilterItems[prop].length > 0) {
283
+ const firstFilterItem = multiFilterItems[prop][0];
284
+ collection[prop] = {
285
+ type: firstFilterItem.type,
286
+ value: firstFilterItem.value,
287
+ };
288
+ }
289
+ }
290
+ this.filterCollection = collection;
291
+ const columns = this.providers.column.getColumns();
292
+ // run the filtering on the main source only
293
+ const source = this.providers.data.stores['rgRow'].store.get('source');
294
+ const { defaultPrevented, detail } = this.emit('beforefilterapply', {
295
+ collection: this.filterCollection,
296
+ source,
297
+ columns,
298
+ filterItems: this.multiFilterItems,
299
+ });
300
+ if (defaultPrevented) {
301
+ return;
302
+ }
303
+ this.doFiltering(detail.collection, detail.source, detail.columns, detail.filterItems);
304
+ }
305
+ /**
306
+ * Get trimmed rows based on filter
307
+ */
308
+ getRowFilter(rows, filterItems, columnByProp) {
309
+ const propKeys = Object.keys(filterItems);
310
+ const trimmed = {};
311
+ // each rows
312
+ for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {
313
+ // check filter by column properties
314
+ for (const prop of propKeys) {
315
+ // add to the list of removed/trimmed rows of filter condition is satisfied
316
+ if (this.shouldTrimRow(filterItems[prop], prop, columnByProp[prop], rows[rowIndex])) {
317
+ trimmed[rowIndex] = true;
318
+ }
319
+ } // end of for-of propKeys
320
+ }
321
+ return trimmed;
322
+ }
323
+ shouldTrimRow(propFilters, prop, column, model = {}) {
324
+ // reset the count of satisfied filters
325
+ let propFilterSatisfiedCount = 0;
326
+ // reset the array of last filter results
327
+ let lastFilterResults = [];
328
+ // testing each filter for a prop
329
+ for (const [filterIndex, filterData] of propFilters.entries()) {
330
+ // the filter LogicFunction based on the type
331
+ const filterFunc = this.filterFunctionsIndexedByType[filterData.type];
332
+ // THE MAGIC OF FILTERING IS HERE
333
+ // If there is no column but user wants to filter by a property
334
+ const value = column ? getCellDataParsed(model, column) : model[prop];
335
+ // OR relation
336
+ if (filterData.relation === 'or') {
337
+ // reset the array of last filter results
338
+ lastFilterResults = [];
339
+ // if the filter is satisfied, continue to the next filter
340
+ if (filterFunc(value, filterData.value)) {
341
+ continue;
342
+ }
343
+ // if the filter is not satisfied, count it
344
+ propFilterSatisfiedCount++;
345
+ // AND relation
346
+ }
347
+ else {
348
+ // 'and' relation will need to know the next filter
349
+ // so we save this current filter to include it in the next filter
350
+ lastFilterResults.push(!filterFunc(value, filterData.value));
351
+ if (isFinalAndFilter(filterIndex, propFilters)) {
352
+ // let's just continue since for sure propFilterSatisfiedCount cannot be satisfied
353
+ if (allAndConditionsSatisfied(lastFilterResults)) {
354
+ // reset the array of last filter results
355
+ lastFilterResults = [];
356
+ continue;
357
+ }
358
+ // we need to add all of the lastFilterResults since we need to satisfy all
359
+ propFilterSatisfiedCount += lastFilterResults.length;
360
+ // reset the array of last filter results
361
+ lastFilterResults = [];
362
+ }
363
+ }
364
+ } // end of propFilters forEach
365
+ return propFilterSatisfiedCount === propFilters.length;
366
+ }
367
+ }
368
+ /**
369
+ * Checks if the current filter is the final one in an AND sequence.
370
+ * @param index - Current filter index in the list.
371
+ * @param filters - Array of filters for the property.
372
+ * @returns True if this is the last AND condition; false otherwise.
373
+ */
374
+ function isFinalAndFilter(index, filters) {
375
+ const nextFilter = filters[index + 1]; // Get the next filter in the list.
376
+ // Return true if there's no next filter or if the next filter defined and is not part of the AND sequence.
377
+ return !nextFilter || (!!nextFilter.relation && nextFilter.relation !== 'and');
378
+ }
379
+ /**
380
+ * Determines if all conditions in an AND sequence are satisfied.
381
+ * @param pendingResults - An array of results from the AND conditions.
382
+ * @returns True if all conditions are satisfied; false otherwise.
383
+ */
384
+ function allAndConditionsSatisfied(pendingResults) {
385
+ // Check if there are any failed conditions in the pending results.
386
+ return !pendingResults.includes(true);
387
+ }
388
+ //# sourceMappingURL=filter.plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter.plugin.js","sourceRoot":"","sources":["../../../src/plugins/filter/filter.plugin.tsx"],"names":[],"mappings":"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","sourcesContent":["// filter.plugin.tsx\r\nimport { h, type VNode } from '@stencil/core';\r\n\r\nimport type {\r\n ColumnProp,\r\n ColumnRegular,\r\n DataType,\r\n PluginProviders,\r\n} from '@type';\r\nimport { BasePlugin } from '../base.plugin';\r\nimport { FILTER_PROP, isFilterBtn } from './filter.button';\r\nimport {\r\n filterCoreFunctionsIndexedByType,\r\n filterNames,\r\n filterTypes,\r\n} from './filter.indexed';\r\n\r\nimport type {\r\n ColumnFilterConfig,\r\n FilterCollectionItem,\r\n FilterData,\r\n LogicFunction,\r\n MultiFilterItem,\r\n ShowData,\r\n} from './filter.types';\r\n\r\nimport { getCellDataParsed } from '../../utils';\r\nimport { TrimmedEntity } from '@store';\r\n\r\nexport * from './filter.types';\r\nexport * from './filter.indexed';\r\nexport * from './filter.button';\r\n\r\nexport const FILTER_TRIMMED_TYPE = 'filter';\r\nexport const FILTER_CONFIG_CHANGED_EVENT = 'filterconfigchanged';\r\nexport const FILTE_PANEL = 'revogr-filter-panel';\r\n\r\n/**\r\n * @typedef ColumnFilterConfig\r\n * @type {object}\r\n *\r\n * @property {MultiFilterItem|undefined} multiFilterItems - data for multi filtering with relation\r\n *\r\n * @property {Record<ColumnProp, FilterCollectionItem>|undefined} collection - preserved filter data, relation for filters will be applied as 'and'\r\n *\r\n * @property {string[]|undefined} include - filters to be included, if defined everything else out of scope will be ignored\r\n *\r\n * @property {Record<string, CustomFilter>|undefined} customFilters - hash map of {FilterType:CustomFilter}.\r\n *\r\n * @property {FilterLocalization|undefined} localization - translation for filter popup captions.\r\n *\r\n * @property {boolean|undefined} disableDynamicFiltering - disables dynamic filtering. A way to apply filters on Save only.\r\n */\r\n/**\r\n * @internal\r\n */\r\n\r\nexport class FilterPlugin extends BasePlugin {\r\n pop?: HTMLRevogrFilterPanelElement;\r\n filterCollection: Record<ColumnProp, FilterCollectionItem> = {};\r\n multiFilterItems: MultiFilterItem = {};\r\n\r\n /**\r\n * Filter types\r\n * @example\r\n * {\r\n * string: ['contains', 'beginswith'],\r\n * number: ['eqN', 'neqN', 'gt']\r\n * }\r\n */\r\n filterByType: Record<string, string[]> = { ...filterTypes };\r\n filterNameIndexByType: Record<string, string> = {\r\n ...filterNames,\r\n };\r\n filterFunctionsIndexedByType: Record<string, LogicFunction> = {\r\n ...filterCoreFunctionsIndexedByType,\r\n };\r\n\r\n filterProp = FILTER_PROP;\r\n\r\n extraHyperContent?: (data: ShowData) => VNode | VNode[];\r\n\r\n constructor(\r\n public revogrid: HTMLRevoGridElement,\r\n providers: PluginProviders,\r\n public config?: ColumnFilterConfig,\r\n ) {\r\n super(revogrid, providers);\r\n if (config) {\r\n this.initConfig(config);\r\n }\r\n\r\n const existingNodes = this.revogrid.registerVNode.filter(\r\n n => typeof n === 'object' && n.$tag$ !== FILTE_PANEL,\r\n );\r\n this.revogrid.registerVNode = [\r\n ...existingNodes,\r\n <revogr-filter-panel\r\n filterNames={this.filterNameIndexByType}\r\n filterEntities={this.filterFunctionsIndexedByType}\r\n filterCaptions={config?.localization?.captions}\r\n onFilterChange={e => this.onFilterChange(e.detail)}\r\n onResetChange={e => this.onFilterReset(e.detail)}\r\n disableDynamicFiltering={config?.disableDynamicFiltering}\r\n closeOnOutsideClick={config?.closeFilterPanelOnOutsideClick}\r\n ref={e => (this.pop = e)}\r\n >\r\n {' '}\r\n {this.extraContent()}\r\n </revogr-filter-panel>,\r\n ];\r\n\r\n const aftersourceset = async () => {\r\n const filterCollectionProps = Object.keys(this.filterCollection);\r\n if (filterCollectionProps.length > 0) {\r\n // handle old way of filtering by reworking FilterCollection to new MultiFilterItem\r\n filterCollectionProps.forEach((prop, index) => {\r\n if (!this.multiFilterItems[prop]) {\r\n this.multiFilterItems[prop] = [\r\n {\r\n id: index,\r\n type: this.filterCollection[prop].type,\r\n value: this.filterCollection[prop].value,\r\n relation: 'and',\r\n },\r\n ];\r\n }\r\n });\r\n }\r\n if (Object.keys(this.multiFilterItems).length === 0) {\r\n return;\r\n }\r\n await this.runFiltering(this.multiFilterItems);\r\n };\r\n this.addEventListener('headerclick', e => this.headerclick(e));\r\n this.addEventListener(\r\n FILTER_CONFIG_CHANGED_EVENT,\r\n ({ detail }: CustomEvent<ColumnFilterConfig | boolean>) => {\r\n if (\r\n !detail ||\r\n (typeof detail === 'object' &&\r\n (!detail.multiFilterItems ||\r\n !Object.keys(detail.multiFilterItems).length))\r\n ) {\r\n this.clearFiltering();\r\n return;\r\n }\r\n if (typeof detail === 'object') {\r\n this.initConfig(detail);\r\n }\r\n aftersourceset();\r\n },\r\n );\r\n this.addEventListener('aftersourceset', aftersourceset);\r\n this.addEventListener('filter', ({ detail }: CustomEvent) =>\r\n this.onFilterChange(detail),\r\n );\r\n }\r\n\r\n beforeshow(_: ShowData) {\r\n // used as hook for filter panel\r\n }\r\n\r\n extraContent(): any {\r\n return null;\r\n }\r\n\r\n initConfig(config: ColumnFilterConfig) {\r\n if (config.multiFilterItems) {\r\n this.multiFilterItems = { ...config.multiFilterItems };\r\n } else {\r\n this.multiFilterItems = {};\r\n }\r\n // Add custom filters\r\n if (config.customFilters) {\r\n for (let customFilterType in config.customFilters) {\r\n const cFilter = config.customFilters[customFilterType];\r\n if (!this.filterByType[cFilter.columnFilterType]) {\r\n this.filterByType[cFilter.columnFilterType] = [];\r\n }\r\n // add custom filter type\r\n this.filterByType[cFilter.columnFilterType].push(customFilterType);\r\n // add custom filter function\r\n this.filterFunctionsIndexedByType[customFilterType] = cFilter.func;\r\n // add custom filter name\r\n this.filterNameIndexByType[customFilterType] = cFilter.name;\r\n }\r\n }\r\n\r\n // Add filterProp if provided in config\r\n if (config.filterProp) {\r\n this.filterProp = config.filterProp;\r\n }\r\n\r\n /**\r\n * which filters has to be included/excluded\r\n * convenient way to exclude system filters\r\n */\r\n const cfgInlcude = config.include;\r\n if (cfgInlcude) {\r\n const filters: Record<string, string[]> = {};\r\n\r\n for (let t in this.filterByType) {\r\n // validate filters, if appropriate function present\r\n const newTypes = this.filterByType[t].filter(\r\n f => cfgInlcude.indexOf(f) > -1,\r\n );\r\n if (newTypes.length) {\r\n filters[t] = newTypes;\r\n }\r\n }\r\n // if any valid filters provided show them\r\n if (Object.keys(filters).length > 0) {\r\n this.filterByType = filters;\r\n }\r\n }\r\n\r\n if (config.collection) {\r\n const filtersWithFilterFunctionPresent = Object.entries(\r\n config.collection,\r\n ).filter(([, item]) => this.filterFunctionsIndexedByType[item.type]);\r\n this.filterCollection = Object.fromEntries(\r\n filtersWithFilterFunctionPresent,\r\n );\r\n } else {\r\n this.filterCollection = {};\r\n }\r\n\r\n if (config.localization) {\r\n if (config.localization.filterNames) {\r\n Object.entries(config.localization.filterNames).forEach(([k, v]) => {\r\n if (this.filterNameIndexByType[k] != void 0) {\r\n this.filterNameIndexByType[k] = v;\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n async headerclick(e: CustomEvent<ColumnRegular>) {\r\n const el = e.detail.originalEvent?.target as HTMLElement;\r\n if (!isFilterBtn(el)) {\r\n return;\r\n }\r\n e.preventDefault();\r\n if (!this.pop) {\r\n return;\r\n }\r\n\r\n // filter button clicked, open filter dialog\r\n const gridPos = this.revogrid.getBoundingClientRect();\r\n const buttonPos = el.getBoundingClientRect();\r\n const prop = e.detail.prop;\r\n\r\n const data: ShowData = {\r\n ...e.detail,\r\n ...this.filterCollection[prop],\r\n x: buttonPos.x - gridPos.x,\r\n y: buttonPos.y - gridPos.y + buttonPos.height,\r\n autoCorrect: true,\r\n filterTypes: this.getColumnFilter(e.detail.filter),\r\n filterItems: this.multiFilterItems,\r\n extraContent: this.extraHyperContent,\r\n };\r\n this.beforeshow?.(data);\r\n this.pop.show(data);\r\n }\r\n\r\n getColumnFilter(\r\n type?: boolean | string | string[],\r\n ): Record<string, string[]> {\r\n let filterType = 'string';\r\n if (!type) {\r\n return { [filterType]: this.filterByType[filterType] };\r\n }\r\n\r\n // if custom column filter\r\n if (this.isValidType(type)) {\r\n filterType = type;\r\n\r\n // if multiple filters applied\r\n } else if (typeof type === 'object' && type.length) {\r\n return type.reduce((r: Record<string, string[]>, multiType) => {\r\n if (this.isValidType(multiType)) {\r\n r[multiType] = this.filterByType[multiType];\r\n }\r\n return r;\r\n }, {});\r\n }\r\n return { [filterType]: this.filterByType[filterType] };\r\n }\r\n\r\n isValidType(type: any): type is string {\r\n return !!(typeof type === 'string' && this.filterByType[type]);\r\n }\r\n\r\n /**\r\n * Called on internal component change\r\n */\r\n async onFilterChange(filterItems: MultiFilterItem) {\r\n // store the filter items\r\n this.multiFilterItems = filterItems;\r\n\r\n // run the filtering when the items change\r\n this.runFiltering(this.multiFilterItems);\r\n }\r\n\r\n onFilterReset(prop?: ColumnProp) {\r\n delete this.multiFilterItems[prop ?? ''];\r\n this.onFilterChange(this.multiFilterItems);\r\n }\r\n\r\n /**\r\n * Triggers grid filtering\r\n */\r\n async doFiltering(\r\n collection: Record<ColumnProp, FilterCollectionItem>,\r\n source: DataType[],\r\n columns: ColumnRegular[],\r\n filterItems: MultiFilterItem,\r\n ) {\r\n const columnsToUpdate: ColumnRegular[] = [];\r\n\r\n /**\r\n * Loop through the columns and update the columns that need to be updated with the `hasFilter` property.\r\n */\r\n const columnByProp: Record<string, ColumnRegular> = {};\r\n columns.forEach(rgCol => {\r\n const column = { ...rgCol };\r\n const hasFilter = filterItems[column.prop];\r\n columnByProp[column.prop] = column;\r\n\r\n /**\r\n * If the column has a filter and it's not already marked as filtered, update the column.\r\n */\r\n if (column[this.filterProp] && !hasFilter) {\r\n delete column[this.filterProp];\r\n columnsToUpdate.push(column);\r\n }\r\n\r\n /**\r\n * If the column does not have a filter and it's marked as filtered, update the column.\r\n */\r\n\r\n if (!column[this.filterProp] && hasFilter) {\r\n columnsToUpdate.push(column);\r\n column[this.filterProp] = true;\r\n }\r\n });\r\n const itemsToTrim = this.getRowFilter(source, filterItems, columnByProp);\r\n // check is filter event prevented\r\n const { defaultPrevented, detail } = this.emit('beforefiltertrimmed', {\r\n collection,\r\n itemsToFilter: itemsToTrim,\r\n source,\r\n filterItems,\r\n });\r\n if (defaultPrevented) {\r\n return;\r\n }\r\n\r\n this.providers.data.setTrimmed({ [FILTER_TRIMMED_TYPE]: detail.itemsToFilter });\r\n\r\n // applies the hasFilter to the columns to show filter icon\r\n this.providers.column.updateColumns(columnsToUpdate);\r\n this.emit('afterfilterapply', {\r\n multiFilterItems: filterItems,\r\n source,\r\n collection,\r\n });\r\n }\r\n\r\n async clearFiltering() {\r\n this.multiFilterItems = {};\r\n await this.runFiltering(this.multiFilterItems);\r\n }\r\n\r\n async runFiltering(multiFilterItems: MultiFilterItem) {\r\n const collection: Record<ColumnProp, FilterCollectionItem> = {};\r\n\r\n // handle old filterCollection to return the first filter only (if any) from multiFilterItems\r\n const filterProps = Object.keys(multiFilterItems);\r\n\r\n for (const prop of filterProps) {\r\n // check if we have any filter for a column\r\n if (multiFilterItems[prop].length > 0) {\r\n const firstFilterItem = multiFilterItems[prop][0];\r\n collection[prop] = {\r\n type: firstFilterItem.type,\r\n value: firstFilterItem.value,\r\n };\r\n }\r\n }\r\n\r\n this.filterCollection = collection;\r\n const columns = this.providers.column.getColumns();\r\n // run the filtering on the main source only\r\n const source = this.providers.data.stores['rgRow'].store.get('source');\r\n\r\n const { defaultPrevented, detail } = this.emit('beforefilterapply', {\r\n collection: this.filterCollection,\r\n source,\r\n columns,\r\n filterItems: this.multiFilterItems,\r\n });\r\n if (defaultPrevented) {\r\n return;\r\n }\r\n this.doFiltering(\r\n detail.collection,\r\n detail.source,\r\n detail.columns,\r\n detail.filterItems,\r\n );\r\n }\r\n\r\n /**\r\n * Get trimmed rows based on filter\r\n */\r\n getRowFilter(\r\n rows: DataType[],\r\n filterItems: MultiFilterItem,\r\n columnByProp: Record<string, ColumnRegular>,\r\n ): TrimmedEntity {\r\n const propKeys = Object.keys(filterItems);\r\n\r\n const trimmed: TrimmedEntity = {};\r\n\r\n // each rows\r\n for (let rowIndex = 0; rowIndex < rows.length; rowIndex++) {\r\n // check filter by column properties\r\n for (const prop of propKeys) {\r\n // add to the list of removed/trimmed rows of filter condition is satisfied\r\n if (\r\n this.shouldTrimRow(\r\n filterItems[prop],\r\n prop,\r\n columnByProp[prop],\r\n rows[rowIndex],\r\n )\r\n ) {\r\n trimmed[rowIndex] = true;\r\n }\r\n } // end of for-of propKeys\r\n }\r\n return trimmed;\r\n }\r\n\r\n private shouldTrimRow(\r\n propFilters: FilterData[],\r\n prop: ColumnProp,\r\n column?: ColumnRegular,\r\n model: DataType = {},\r\n ) {\r\n // reset the count of satisfied filters\r\n let propFilterSatisfiedCount = 0;\r\n // reset the array of last filter results\r\n let lastFilterResults: boolean[] = [];\r\n\r\n // testing each filter for a prop\r\n for (const [filterIndex, filterData] of propFilters.entries()) {\r\n // the filter LogicFunction based on the type\r\n const filterFunc = this.filterFunctionsIndexedByType[filterData.type];\r\n\r\n // THE MAGIC OF FILTERING IS HERE\r\n // If there is no column but user wants to filter by a property\r\n const value = column ? getCellDataParsed(model, column) : model[prop];\r\n // OR relation\r\n if (filterData.relation === 'or') {\r\n // reset the array of last filter results\r\n lastFilterResults = [];\r\n // if the filter is satisfied, continue to the next filter\r\n if (filterFunc(value, filterData.value)) {\r\n continue;\r\n }\r\n // if the filter is not satisfied, count it\r\n propFilterSatisfiedCount++;\r\n\r\n // AND relation\r\n } else {\r\n // 'and' relation will need to know the next filter\r\n // so we save this current filter to include it in the next filter\r\n lastFilterResults.push(!filterFunc(value, filterData.value));\r\n\r\n if (isFinalAndFilter(filterIndex, propFilters)) {\r\n // let's just continue since for sure propFilterSatisfiedCount cannot be satisfied\r\n if (allAndConditionsSatisfied(lastFilterResults)) {\r\n // reset the array of last filter results\r\n lastFilterResults = [];\r\n continue;\r\n }\r\n\r\n // we need to add all of the lastFilterResults since we need to satisfy all\r\n propFilterSatisfiedCount += lastFilterResults.length;\r\n // reset the array of last filter results\r\n lastFilterResults = [];\r\n }\r\n }\r\n } // end of propFilters forEach\r\n return propFilterSatisfiedCount === propFilters.length;\r\n }\r\n}\r\n/**\r\n * Checks if the current filter is the final one in an AND sequence.\r\n * @param index - Current filter index in the list.\r\n * @param filters - Array of filters for the property.\r\n * @returns True if this is the last AND condition; false otherwise.\r\n */\r\nfunction isFinalAndFilter(index: number, filters: MultiFilterItem[string]): boolean {\r\n const nextFilter = filters[index + 1]; // Get the next filter in the list.\r\n // Return true if there's no next filter or if the next filter defined and is not part of the AND sequence.\r\n return !nextFilter || (!!nextFilter.relation && nextFilter.relation !== 'and');\r\n}\r\n\r\n/**\r\n * Determines if all conditions in an AND sequence are satisfied.\r\n * @param pendingResults - An array of results from the AND conditions.\r\n * @returns True if all conditions are satisfied; false otherwise.\r\n */\r\nfunction allAndConditionsSatisfied(pendingResults: boolean[]): boolean {\r\n // Check if there are any failed conditions in the pending results.\r\n return !pendingResults.includes(true);\r\n}\r\n"]}