@revolist/revogrid 4.0.4-next → 4.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (802) hide show
  1. package/LICENSE +1 -1
  2. package/dist/cjs/app-globals-53fde1aa.js +14 -0
  3. package/dist/cjs/app-globals-53fde1aa.js.map +1 -0
  4. package/dist/cjs/column.service-2066d651.js +545 -0
  5. package/dist/cjs/column.service-2066d651.js.map +1 -0
  6. package/dist/cjs/debounce-e2b7c6fb.js +226 -0
  7. package/dist/cjs/debounce-e2b7c6fb.js.map +1 -0
  8. package/dist/cjs/dimension.helpers-ee39d6c4.js +4218 -0
  9. package/dist/cjs/dimension.helpers-ee39d6c4.js.map +1 -0
  10. package/dist/cjs/dispatcher-a58fa91a.js +34 -0
  11. package/dist/cjs/dispatcher-a58fa91a.js.map +1 -0
  12. package/dist/cjs/events-7ccd6894.js +233 -0
  13. package/dist/cjs/events-7ccd6894.js.map +1 -0
  14. package/dist/cjs/filter.button-db6cbd2e.js +44 -0
  15. package/dist/cjs/filter.button-db6cbd2e.js.map +1 -0
  16. package/dist/cjs/header-cell-renderer-3df76829.js +304 -0
  17. package/dist/cjs/header-cell-renderer-3df76829.js.map +1 -0
  18. package/dist/cjs/index-73c149e3.js +106 -0
  19. package/dist/cjs/index-73c149e3.js.map +1 -0
  20. package/dist/cjs/index-84e32c2a.js +1868 -0
  21. package/dist/cjs/index-84e32c2a.js.map +1 -0
  22. package/dist/cjs/index.cjs.js +53 -0
  23. package/dist/cjs/index.cjs.js.map +1 -0
  24. package/dist/cjs/key.utils-dc4ac217.js +129 -0
  25. package/dist/cjs/key.utils-dc4ac217.js.map +1 -0
  26. package/dist/cjs/loader.cjs.js +12 -27
  27. package/dist/cjs/loader.cjs.js.map +1 -0
  28. package/dist/cjs/{resize-observer-8dc80084.js → resize-observer-d009a220.js} +30 -13
  29. package/dist/cjs/resize-observer-d009a220.js.map +1 -0
  30. package/dist/cjs/revo-grid.cjs.entry.js +3992 -0
  31. package/dist/cjs/revo-grid.cjs.entry.js.map +1 -0
  32. package/dist/cjs/revo-grid.cjs.js +22 -65
  33. package/dist/cjs/revo-grid.cjs.js.map +1 -0
  34. package/dist/cjs/revogr-attribution_6.cjs.entry.js +1270 -0
  35. package/dist/cjs/revogr-attribution_6.cjs.entry.js.map +1 -0
  36. package/dist/cjs/revogr-clipboard_3.cjs.entry.js +508 -0
  37. package/dist/cjs/revogr-clipboard_3.cjs.entry.js.map +1 -0
  38. package/dist/cjs/revogr-data_4.cjs.entry.js +958 -0
  39. package/dist/cjs/revogr-data_4.cjs.entry.js.map +1 -0
  40. package/dist/cjs/revogr-filter-panel.cjs.entry.js +268 -115
  41. package/dist/cjs/revogr-filter-panel.cjs.entry.js.map +1 -0
  42. package/dist/cjs/selection.store-2e110a67.js +400 -0
  43. package/dist/cjs/selection.store-2e110a67.js.map +1 -0
  44. package/dist/cjs/storeTypes-b3f924b2.js +106 -0
  45. package/dist/cjs/storeTypes-b3f924b2.js.map +1 -0
  46. package/dist/cjs/throttle-f7aee21b.js +240 -0
  47. package/dist/cjs/throttle-f7aee21b.js.map +1 -0
  48. package/dist/cjs/toNumber-838e6ff5.js +340 -0
  49. package/dist/cjs/toNumber-838e6ff5.js.map +1 -0
  50. package/dist/cjs/viewport.helpers-6670177c.js +262 -0
  51. package/dist/cjs/viewport.helpers-6670177c.js.map +1 -0
  52. package/dist/collection/collection-manifest.json +18 -16
  53. package/dist/collection/components/attribution/revogr-attribution.js +20 -0
  54. package/dist/collection/components/attribution/revogr-attribution.js.map +1 -0
  55. package/dist/collection/components/clipboard/revogr-clipboard.js +410 -115
  56. package/dist/collection/components/clipboard/revogr-clipboard.js.map +1 -0
  57. package/dist/collection/components/data/cell-renderer.js +39 -0
  58. package/dist/collection/components/data/cell-renderer.js.map +1 -0
  59. package/dist/collection/components/data/column.service.js +302 -0
  60. package/dist/collection/components/data/column.service.js.map +1 -0
  61. package/dist/collection/components/data/revogr-data-style.css +18 -11
  62. package/dist/collection/components/data/revogr-data.js +626 -301
  63. package/dist/collection/components/data/revogr-data.js.map +1 -0
  64. package/dist/collection/components/data/row-highlight.plugin.js +51 -0
  65. package/dist/collection/components/data/row-highlight.plugin.js.map +1 -0
  66. package/dist/collection/components/data/row-renderer.js +16 -0
  67. package/dist/collection/components/data/row-renderer.js.map +1 -0
  68. package/dist/collection/components/editors/edit.utils.js +9 -0
  69. package/dist/collection/components/editors/edit.utils.js.map +1 -0
  70. package/dist/collection/components/{overlay → editors}/revogr-edit-style.css +15 -9
  71. package/dist/collection/components/editors/revogr-edit.js +316 -0
  72. package/dist/collection/components/editors/revogr-edit.js.map +1 -0
  73. package/dist/collection/components/editors/text-editor.js +73 -0
  74. package/dist/collection/components/editors/text-editor.js.map +1 -0
  75. package/dist/collection/components/header/header-cell-renderer.js +28 -0
  76. package/dist/collection/components/header/header-cell-renderer.js.map +1 -0
  77. package/dist/collection/components/header/header-renderer.js +47 -0
  78. package/dist/collection/components/header/header-renderer.js.map +1 -0
  79. package/dist/collection/components/header/revogr-header-style.css +15 -9
  80. package/dist/collection/components/header/revogr-header.js +421 -297
  81. package/dist/collection/components/header/revogr-header.js.map +1 -0
  82. package/dist/collection/components/order/order-renderer.js +50 -0
  83. package/dist/collection/components/order/order-renderer.js.map +1 -0
  84. package/dist/collection/components/order/order-row.service.js +72 -0
  85. package/dist/collection/components/order/order-row.service.js.map +1 -0
  86. package/dist/collection/components/order/revogr-order-editor.js +381 -350
  87. package/dist/collection/components/order/revogr-order-editor.js.map +1 -0
  88. package/dist/collection/components/overlay/autofill.service.js +206 -179
  89. package/dist/collection/components/overlay/autofill.service.js.map +1 -0
  90. package/dist/collection/components/overlay/keyboard.service.js +137 -124
  91. package/dist/collection/components/overlay/keyboard.service.js.map +1 -0
  92. package/dist/collection/components/overlay/revogr-overlay-selection.js +1208 -703
  93. package/dist/collection/components/overlay/revogr-overlay-selection.js.map +1 -0
  94. package/dist/collection/components/overlay/revogr-overlay-style.css +86 -13
  95. package/dist/collection/components/overlay/selection.utils.js +86 -82
  96. package/dist/collection/components/overlay/selection.utils.js.map +1 -0
  97. package/dist/collection/components/revoGrid/grid.helpers.js +28 -13
  98. package/dist/collection/components/revoGrid/grid.helpers.js.map +1 -0
  99. package/dist/collection/components/revoGrid/revo-grid-style.css +143 -51
  100. package/dist/collection/components/revoGrid/revo-grid.js +2834 -2181
  101. package/dist/collection/components/revoGrid/revo-grid.js.map +1 -0
  102. package/dist/collection/components/revoGrid/viewport.helpers.js +9 -4
  103. package/dist/collection/components/revoGrid/viewport.helpers.js.map +1 -0
  104. package/dist/collection/components/revoGrid/viewport.resize.service.js +23 -19
  105. package/dist/collection/components/revoGrid/viewport.resize.service.js.map +1 -0
  106. package/dist/collection/components/revoGrid/viewport.scrolling.service.js +78 -50
  107. package/dist/collection/components/revoGrid/viewport.scrolling.service.js.map +1 -0
  108. package/dist/collection/components/revoGrid/viewport.service.js +224 -204
  109. package/dist/collection/components/revoGrid/viewport.service.js.map +1 -0
  110. package/dist/collection/components/rowHeaders/revogr-row-headers.js +262 -204
  111. package/dist/collection/components/rowHeaders/revogr-row-headers.js.map +1 -0
  112. package/dist/collection/components/rowHeaders/row-header-render.js +4 -0
  113. package/dist/collection/components/rowHeaders/row-header-render.js.map +1 -0
  114. package/dist/collection/components/scroll/revogr-viewport-scroll-style.css +20 -13
  115. package/dist/collection/components/scroll/revogr-viewport-scroll.js +535 -369
  116. package/dist/collection/components/scroll/revogr-viewport-scroll.js.map +1 -0
  117. package/dist/collection/components/scrollable/autohide-scroll.plugin.js +44 -0
  118. package/dist/collection/components/scrollable/autohide-scroll.plugin.js.map +1 -0
  119. package/dist/collection/components/scrollable/revogr-scroll-style.css +24 -18
  120. package/dist/collection/components/scrollable/revogr-scroll-virtual.js +286 -247
  121. package/dist/collection/components/scrollable/revogr-scroll-virtual.js.map +1 -0
  122. package/dist/collection/components/selectionFocus/revogr-focus-style.css +16 -10
  123. package/dist/collection/components/selectionFocus/revogr-focus.js +366 -96
  124. package/dist/collection/components/selectionFocus/revogr-focus.js.map +1 -0
  125. package/dist/collection/components/selectionTempRange/revogr-temp-range-style.css +16 -10
  126. package/dist/collection/components/selectionTempRange/revogr-temp-range.js +149 -128
  127. package/dist/collection/components/selectionTempRange/revogr-temp-range.js.map +1 -0
  128. package/dist/collection/components/vnode/vnode-converter.js +81 -0
  129. package/dist/collection/components/vnode/vnode-converter.js.map +1 -0
  130. package/dist/collection/components/vnode/vnode.utils.js +18 -0
  131. package/dist/collection/components/vnode/vnode.utils.js.map +1 -0
  132. package/dist/collection/global/global.js +15 -11
  133. package/dist/collection/global/global.js.map +1 -0
  134. package/dist/collection/index.js +18 -0
  135. package/dist/collection/index.js.map +1 -0
  136. package/dist/collection/plugins/base.plugin.js +88 -0
  137. package/dist/collection/plugins/base.plugin.js.map +1 -0
  138. package/dist/collection/plugins/column.auto-size.plugin.js +234 -0
  139. package/dist/collection/plugins/column.auto-size.plugin.js.map +1 -0
  140. package/dist/collection/plugins/column.stretch.plugin.js +96 -0
  141. package/dist/collection/plugins/column.stretch.plugin.js.map +1 -0
  142. package/dist/collection/plugins/dispatcher.js +27 -0
  143. package/dist/collection/plugins/dispatcher.js.map +1 -0
  144. package/dist/collection/plugins/export/csv.js +57 -53
  145. package/dist/collection/plugins/export/csv.js.map +1 -0
  146. package/dist/collection/plugins/export/export.plugin.js +154 -150
  147. package/dist/collection/plugins/export/export.plugin.js.map +1 -0
  148. package/dist/collection/plugins/export/types.js +1 -0
  149. package/dist/collection/plugins/export/types.js.map +1 -0
  150. package/dist/collection/plugins/filter/conditions/equal.js +15 -7
  151. package/dist/collection/plugins/filter/conditions/equal.js.map +1 -0
  152. package/dist/collection/plugins/filter/conditions/number/greaterThan.js +10 -6
  153. package/dist/collection/plugins/filter/conditions/number/greaterThan.js.map +1 -0
  154. package/dist/collection/plugins/filter/conditions/number/greaterThanOrEqual.js +7 -3
  155. package/dist/collection/plugins/filter/conditions/number/greaterThanOrEqual.js.map +1 -0
  156. package/dist/collection/plugins/filter/conditions/number/lessThan.js +12 -8
  157. package/dist/collection/plugins/filter/conditions/number/lessThan.js.map +1 -0
  158. package/dist/collection/plugins/filter/conditions/number/lessThanOrEqual.js +7 -3
  159. package/dist/collection/plugins/filter/conditions/number/lessThanOrEqual.js.map +1 -0
  160. package/dist/collection/plugins/filter/conditions/set.js +4 -0
  161. package/dist/collection/plugins/filter/conditions/set.js.map +1 -0
  162. package/dist/collection/plugins/filter/conditions/string/beginswith.js +17 -13
  163. package/dist/collection/plugins/filter/conditions/string/beginswith.js.map +1 -0
  164. package/dist/collection/plugins/filter/conditions/string/contains.js +17 -10
  165. package/dist/collection/plugins/filter/conditions/string/contains.js.map +1 -0
  166. package/dist/collection/plugins/filter/filter.button.js +21 -13
  167. package/dist/collection/plugins/filter/filter.button.js.map +1 -0
  168. package/dist/collection/plugins/filter/filter.plugin.js +280 -185
  169. package/dist/collection/plugins/filter/filter.plugin.js.map +1 -0
  170. package/dist/collection/plugins/filter/filter.pop.js +492 -246
  171. package/dist/collection/plugins/filter/filter.pop.js.map +1 -0
  172. package/dist/collection/plugins/filter/filter.service.js +42 -38
  173. package/dist/collection/plugins/filter/filter.service.js.map +1 -0
  174. package/dist/collection/plugins/filter/filter.style.css +68 -15
  175. package/dist/collection/plugins/filter/filter.types.js +1 -0
  176. package/dist/collection/plugins/filter/filter.types.js.map +1 -0
  177. package/dist/collection/plugins/groupingColumn/columnGroupsRenderer.js +30 -26
  178. package/dist/collection/plugins/groupingColumn/columnGroupsRenderer.js.map +1 -0
  179. package/dist/collection/plugins/groupingColumn/grouping.col.plugin.js +38 -30
  180. package/dist/collection/plugins/groupingColumn/grouping.col.plugin.js.map +1 -0
  181. package/dist/collection/plugins/groupingColumn/headerGroupRenderer.js +22 -18
  182. package/dist/collection/plugins/groupingColumn/headerGroupRenderer.js.map +1 -0
  183. package/dist/collection/plugins/groupingRow/grouping.const.js +7 -2
  184. package/dist/collection/plugins/groupingRow/grouping.const.js.map +1 -0
  185. package/dist/collection/plugins/groupingRow/grouping.row.expand.service.js +64 -61
  186. package/dist/collection/plugins/groupingRow/grouping.row.expand.service.js.map +1 -0
  187. package/dist/collection/plugins/groupingRow/grouping.row.plugin.js +239 -237
  188. package/dist/collection/plugins/groupingRow/grouping.row.plugin.js.map +1 -0
  189. package/dist/collection/plugins/groupingRow/grouping.row.renderer.js +27 -24
  190. package/dist/collection/plugins/groupingRow/grouping.row.renderer.js.map +1 -0
  191. package/dist/collection/plugins/groupingRow/grouping.row.types.js +1 -0
  192. package/dist/collection/plugins/groupingRow/grouping.row.types.js.map +1 -0
  193. package/dist/collection/plugins/groupingRow/grouping.service.js +101 -131
  194. package/dist/collection/plugins/groupingRow/grouping.service.js.map +1 -0
  195. package/dist/collection/plugins/groupingRow/grouping.trimmed.service.js +47 -43
  196. package/dist/collection/plugins/groupingRow/grouping.trimmed.service.js.map +1 -0
  197. package/dist/collection/plugins/moveColumn/column.drag.plugin.js +167 -0
  198. package/dist/collection/plugins/moveColumn/column.drag.plugin.js.map +1 -0
  199. package/dist/collection/plugins/moveColumn/order-column.handler.js +69 -0
  200. package/dist/collection/plugins/moveColumn/order-column.handler.js.map +1 -0
  201. package/dist/collection/plugins/sorting/sorting.plugin.js +218 -163
  202. package/dist/collection/plugins/sorting/sorting.plugin.js.map +1 -0
  203. package/dist/collection/plugins/sorting/sorting.sign.js +6 -2
  204. package/dist/collection/plugins/sorting/sorting.sign.js.map +1 -0
  205. package/dist/collection/serve/controller.js +233 -0
  206. package/dist/collection/{utilsExternal/generate-data.js → serve/data.js} +72 -32
  207. package/dist/collection/services/cell.helpers.js +9 -5
  208. package/dist/collection/services/cell.helpers.js.map +1 -0
  209. package/dist/collection/services/column.data.provider.js +201 -185
  210. package/dist/collection/services/column.data.provider.js.map +1 -0
  211. package/dist/collection/services/data.provider.js +70 -45
  212. package/dist/collection/services/data.provider.js.map +1 -0
  213. package/dist/collection/services/dimension.provider.js +143 -85
  214. package/dist/collection/services/dimension.provider.js.map +1 -0
  215. package/dist/collection/services/local.scroll.service.js +120 -0
  216. package/dist/collection/services/local.scroll.service.js.map +1 -0
  217. package/dist/collection/services/local.scroll.timer.js +42 -0
  218. package/dist/collection/services/local.scroll.timer.js.map +1 -0
  219. package/dist/collection/services/resizable.directive.js +211 -226
  220. package/dist/collection/services/resizable.directive.js.map +1 -0
  221. package/dist/collection/services/resizable.element.js +39 -0
  222. package/dist/collection/services/resizable.element.js.map +1 -0
  223. package/dist/collection/services/selection.store.connector.js +257 -208
  224. package/dist/collection/services/selection.store.connector.js.map +1 -0
  225. package/dist/collection/services/viewport.provider.js +16 -12
  226. package/dist/collection/services/viewport.provider.js.map +1 -0
  227. package/dist/collection/store/dataSource/data.proxy.js +29 -25
  228. package/dist/collection/store/dataSource/data.proxy.js.map +1 -0
  229. package/dist/collection/store/dataSource/data.store.js +100 -93
  230. package/dist/collection/store/dataSource/data.store.js.map +1 -0
  231. package/dist/collection/store/dataSource/index.js +7 -0
  232. package/dist/collection/store/dataSource/index.js.map +1 -0
  233. package/dist/collection/store/dataSource/trimmed.plugin.js +36 -0
  234. package/dist/collection/store/dataSource/trimmed.plugin.js.map +1 -0
  235. package/dist/collection/store/dimension/dimension.helpers.js +97 -95
  236. package/dist/collection/store/dimension/dimension.helpers.js.map +1 -0
  237. package/dist/collection/store/dimension/dimension.store.js +106 -48
  238. package/dist/collection/store/dimension/dimension.store.js.map +1 -0
  239. package/dist/collection/store/dimension/index.js +6 -0
  240. package/dist/collection/store/dimension/index.js.map +1 -0
  241. package/dist/collection/store/selection/index.js +7 -0
  242. package/dist/collection/store/selection/index.js.map +1 -0
  243. package/dist/collection/store/selection/selection.helpers.js +43 -39
  244. package/dist/collection/store/selection/selection.helpers.js.map +1 -0
  245. package/dist/collection/store/selection/selection.store.js +75 -63
  246. package/dist/collection/store/selection/selection.store.js.map +1 -0
  247. package/dist/collection/store/selection/selection.store.service.js +35 -31
  248. package/dist/collection/store/selection/selection.store.service.js.map +1 -0
  249. package/dist/collection/store/storeTypes.js +10 -2
  250. package/dist/collection/store/storeTypes.js.map +1 -0
  251. package/dist/collection/store/viewport/index.js +6 -0
  252. package/dist/collection/store/viewport/index.js.map +1 -0
  253. package/dist/collection/store/viewport/viewport.helpers.js +247 -0
  254. package/dist/collection/store/viewport/viewport.helpers.js.map +1 -0
  255. package/dist/collection/store/viewport/viewport.store.js +193 -0
  256. package/dist/collection/store/viewport/viewport.store.js.map +1 -0
  257. package/dist/collection/themeManager/theme.compact.js +7 -3
  258. package/dist/collection/themeManager/theme.compact.js.map +1 -0
  259. package/dist/collection/themeManager/theme.default.js +7 -3
  260. package/dist/collection/themeManager/theme.default.js.map +1 -0
  261. package/dist/collection/themeManager/theme.material.js +7 -3
  262. package/dist/collection/themeManager/theme.material.js.map +1 -0
  263. package/dist/collection/themeManager/theme.service.js +53 -0
  264. package/dist/collection/themeManager/theme.service.js.map +1 -0
  265. package/dist/collection/types/dimension.js +2 -0
  266. package/dist/collection/types/dimension.js.map +1 -0
  267. package/dist/collection/types/interfaces.js +2 -0
  268. package/dist/collection/types/interfaces.js.map +1 -0
  269. package/dist/collection/types/plugin.js +2 -0
  270. package/dist/collection/types/plugin.js.map +1 -0
  271. package/dist/collection/types/plugin.types.js +2 -0
  272. package/dist/collection/types/plugin.types.js.map +1 -0
  273. package/dist/collection/types/selection.js +2 -0
  274. package/dist/collection/types/selection.js.map +1 -0
  275. package/dist/collection/types/theme.js +2 -0
  276. package/dist/collection/types/theme.js.map +1 -0
  277. package/dist/collection/types/viewport.interfaces.js +2 -0
  278. package/dist/collection/types/viewport.interfaces.js.map +1 -0
  279. package/dist/collection/utils/browser.js +7 -0
  280. package/dist/collection/utils/browser.js.map +1 -0
  281. package/dist/collection/utils/closest.polifill.js +22 -0
  282. package/dist/collection/utils/closest.polifill.js.map +1 -0
  283. package/dist/collection/utils/consts.js +8 -0
  284. package/dist/collection/utils/consts.js.map +1 -0
  285. package/dist/collection/utils/events.js +29 -0
  286. package/dist/collection/utils/events.js.map +1 -0
  287. package/dist/collection/utils/header.utils.js +24 -0
  288. package/dist/collection/utils/header.utils.js.map +1 -0
  289. package/dist/collection/utils/index.js +125 -0
  290. package/dist/collection/utils/index.js.map +1 -0
  291. package/dist/collection/utils/key.codes.js +76 -0
  292. package/dist/collection/utils/key.codes.js.map +1 -0
  293. package/dist/collection/utils/key.utils.js +84 -0
  294. package/dist/collection/utils/key.utils.js.map +1 -0
  295. package/dist/collection/utils/mobile.js +7 -0
  296. package/dist/collection/utils/mobile.js.map +1 -0
  297. package/dist/collection/utils/platform.js +5 -1
  298. package/dist/collection/utils/platform.js.map +1 -0
  299. package/dist/collection/utils/resize-observer.polifill.js +10 -0
  300. package/dist/collection/utils/resize-observer.polifill.js.map +1 -0
  301. package/dist/collection/utils/row-header-utils.js +9 -0
  302. package/dist/collection/utils/row-header-utils.js.map +1 -0
  303. package/dist/collection/utils/store.utils.js +7 -3
  304. package/dist/collection/utils/store.utils.js.map +1 -0
  305. package/dist/esm/app-globals-ef1fca59.js +12 -0
  306. package/dist/esm/app-globals-ef1fca59.js.map +1 -0
  307. package/dist/esm/column.service-21a3af74.js +520 -0
  308. package/dist/esm/column.service-21a3af74.js.map +1 -0
  309. package/dist/esm/debounce-7781346d.js +224 -0
  310. package/dist/esm/debounce-7781346d.js.map +1 -0
  311. package/dist/esm/dimension.helpers-a3065cb1.js +4185 -0
  312. package/dist/esm/dimension.helpers-a3065cb1.js.map +1 -0
  313. package/dist/esm/dispatcher-8ea9187d.js +30 -0
  314. package/dist/esm/dispatcher-8ea9187d.js.map +1 -0
  315. package/dist/esm/events-3dd8ee7c.js +228 -0
  316. package/dist/esm/events-3dd8ee7c.js.map +1 -0
  317. package/dist/esm/filter.button-46ce4f80.js +38 -0
  318. package/dist/esm/filter.button-46ce4f80.js.map +1 -0
  319. package/dist/esm/header-cell-renderer-1ca84d5f.js +301 -0
  320. package/dist/esm/header-cell-renderer-1ca84d5f.js.map +1 -0
  321. package/dist/esm/index-21436631.js +1837 -0
  322. package/dist/esm/index-21436631.js.map +1 -0
  323. package/dist/esm/index-98fd0168.js +79 -0
  324. package/dist/esm/index-98fd0168.js.map +1 -0
  325. package/dist/esm/index.js +11 -0
  326. package/dist/esm/index.js.map +1 -0
  327. package/dist/esm/key.utils-4586a3d6.js +120 -0
  328. package/dist/esm/key.utils-4586a3d6.js.map +1 -0
  329. package/dist/esm/loader.js +11 -26
  330. package/dist/esm/loader.js.map +1 -0
  331. package/dist/esm/{resize-observer-56b7b34f.js → resize-observer-83c9e167.js} +30 -14
  332. package/dist/esm/resize-observer-83c9e167.js.map +1 -0
  333. package/dist/esm/revo-grid.entry.js +3988 -0
  334. package/dist/esm/revo-grid.entry.js.map +1 -0
  335. package/dist/esm/revo-grid.js +19 -65
  336. package/dist/esm/revo-grid.js.map +1 -0
  337. package/dist/esm/revogr-attribution_6.entry.js +1261 -0
  338. package/dist/esm/revogr-attribution_6.entry.js.map +1 -0
  339. package/dist/esm/revogr-clipboard_3.entry.js +502 -0
  340. package/dist/esm/revogr-clipboard_3.entry.js.map +1 -0
  341. package/dist/esm/revogr-data_4.entry.js +951 -0
  342. package/dist/esm/revogr-data_4.entry.js.map +1 -0
  343. package/dist/esm/revogr-filter-panel.entry.js +268 -115
  344. package/dist/esm/revogr-filter-panel.entry.js.map +1 -0
  345. package/dist/esm/selection.store-2577ddf9.js +391 -0
  346. package/dist/esm/selection.store-2577ddf9.js.map +1 -0
  347. package/dist/esm/storeTypes-f2647985.js +101 -0
  348. package/dist/esm/storeTypes-f2647985.js.map +1 -0
  349. package/dist/esm/throttle-cfd527d6.js +235 -0
  350. package/dist/esm/throttle-cfd527d6.js.map +1 -0
  351. package/dist/esm/toNumber-8de324a7.js +331 -0
  352. package/dist/esm/toNumber-8de324a7.js.map +1 -0
  353. package/dist/esm/viewport.helpers-6591d423.js +251 -0
  354. package/dist/esm/viewport.helpers-6591d423.js.map +1 -0
  355. package/dist/index.js +1 -1
  356. package/dist/revo-grid/app-globals-ef1fca59.js +5 -0
  357. package/dist/revo-grid/app-globals-ef1fca59.js.map +1 -0
  358. package/dist/revo-grid/column.service-21a3af74.js +5 -0
  359. package/dist/revo-grid/column.service-21a3af74.js.map +1 -0
  360. package/dist/revo-grid/debounce-7781346d.js +5 -0
  361. package/dist/revo-grid/debounce-7781346d.js.map +1 -0
  362. package/dist/revo-grid/dimension.helpers-a3065cb1.js +5 -0
  363. package/dist/revo-grid/dimension.helpers-a3065cb1.js.map +1 -0
  364. package/dist/revo-grid/dispatcher-8ea9187d.js +5 -0
  365. package/dist/revo-grid/dispatcher-8ea9187d.js.map +1 -0
  366. package/dist/revo-grid/events-3dd8ee7c.js +5 -0
  367. package/dist/revo-grid/events-3dd8ee7c.js.map +1 -0
  368. package/dist/revo-grid/filter.button-46ce4f80.js +5 -0
  369. package/dist/revo-grid/filter.button-46ce4f80.js.map +1 -0
  370. package/dist/revo-grid/header-cell-renderer-1ca84d5f.js +5 -0
  371. package/dist/revo-grid/header-cell-renderer-1ca84d5f.js.map +1 -0
  372. package/dist/revo-grid/index-21436631.js +6 -0
  373. package/dist/revo-grid/index-21436631.js.map +1 -0
  374. package/dist/revo-grid/index-98fd0168.js +5 -0
  375. package/dist/revo-grid/index-98fd0168.js.map +1 -0
  376. package/dist/revo-grid/index.esm.js +5 -0
  377. package/dist/revo-grid/index.esm.js.map +1 -0
  378. package/dist/revo-grid/key.utils-4586a3d6.js +5 -0
  379. package/dist/revo-grid/key.utils-4586a3d6.js.map +1 -0
  380. package/dist/revo-grid/resize-observer-83c9e167.js +5 -0
  381. package/dist/revo-grid/resize-observer-83c9e167.js.map +1 -0
  382. package/dist/revo-grid/revo-grid.entry.js +5 -0
  383. package/dist/revo-grid/revo-grid.entry.js.map +1 -0
  384. package/dist/revo-grid/revo-grid.esm.js +5 -1
  385. package/dist/revo-grid/revo-grid.esm.js.map +1 -0
  386. package/dist/revo-grid/revogr-attribution_6.entry.js +5 -0
  387. package/dist/revo-grid/revogr-attribution_6.entry.js.map +1 -0
  388. package/dist/revo-grid/revogr-clipboard_3.entry.js +5 -0
  389. package/dist/revo-grid/revogr-clipboard_3.entry.js.map +1 -0
  390. package/dist/revo-grid/revogr-data_4.entry.js +5 -0
  391. package/dist/revo-grid/revogr-data_4.entry.js.map +1 -0
  392. package/dist/revo-grid/revogr-filter-panel.entry.js +5 -1
  393. package/dist/revo-grid/revogr-filter-panel.entry.js.map +1 -0
  394. package/dist/revo-grid/selection.store-2577ddf9.js +5 -0
  395. package/dist/revo-grid/selection.store-2577ddf9.js.map +1 -0
  396. package/dist/revo-grid/storeTypes-f2647985.js +5 -0
  397. package/dist/revo-grid/storeTypes-f2647985.js.map +1 -0
  398. package/dist/revo-grid/throttle-cfd527d6.js +5 -0
  399. package/dist/revo-grid/throttle-cfd527d6.js.map +1 -0
  400. package/dist/revo-grid/toNumber-8de324a7.js +5 -0
  401. package/dist/revo-grid/toNumber-8de324a7.js.map +1 -0
  402. package/dist/revo-grid/viewport.helpers-6591d423.js +5 -0
  403. package/dist/revo-grid/viewport.helpers-6591d423.js.map +1 -0
  404. package/dist/types/components/attribution/revogr-attribution.d.ts +12 -0
  405. package/dist/types/components/clipboard/revogr-clipboard.d.ts +78 -10
  406. package/dist/types/components/data/cell-renderer.d.ts +14 -0
  407. package/dist/types/components/data/column.service.d.ts +60 -0
  408. package/dist/types/components/data/revogr-data.d.ts +101 -27
  409. package/dist/types/components/data/row-highlight.plugin.d.ts +10 -0
  410. package/dist/types/components/data/{rowRenderer.d.ts → row-renderer.d.ts} +6 -5
  411. package/dist/types/components/editors/revogr-edit.d.ts +63 -0
  412. package/dist/types/components/editors/text-editor.d.ts +46 -0
  413. package/dist/types/components/header/header-cell-renderer.d.ts +11 -0
  414. package/dist/types/components/header/header-renderer.d.ts +17 -0
  415. package/dist/types/components/header/revogr-header.d.ts +70 -22
  416. package/dist/types/components/order/order-renderer.d.ts +29 -0
  417. package/dist/types/components/order/order-row.service.d.ts +28 -0
  418. package/dist/types/components/order/revogr-order-editor.d.ts +43 -41
  419. package/dist/types/components/overlay/autofill.service.d.ts +69 -54
  420. package/dist/types/components/overlay/keyboard.service.d.ts +24 -23
  421. package/dist/types/components/overlay/revogr-overlay-selection.d.ts +216 -75
  422. package/dist/types/components/overlay/selection.utils.d.ts +24 -27
  423. package/dist/types/components/revoGrid/grid.helpers.d.ts +16 -11
  424. package/dist/types/components/revoGrid/revo-grid.d.ts +555 -403
  425. package/dist/types/components/revoGrid/viewport.helpers.d.ts +4 -3
  426. package/dist/types/components/revoGrid/viewport.resize.service.d.ts +7 -7
  427. package/dist/types/components/revoGrid/viewport.scrolling.service.d.ts +20 -21
  428. package/dist/types/components/revoGrid/viewport.service.d.ts +54 -56
  429. package/dist/types/components/rowHeaders/revogr-row-headers.d.ts +45 -12
  430. package/dist/types/components/rowHeaders/row-header-render.d.ts +5 -5
  431. package/dist/types/components/scroll/revogr-viewport-scroll.d.ts +115 -76
  432. package/dist/types/components/scrollable/autohide-scroll.plugin.d.ts +22 -0
  433. package/dist/types/components/scrollable/revogr-scroll-virtual.d.ts +39 -22
  434. package/dist/types/components/selectionFocus/revogr-focus.d.ts +61 -9
  435. package/dist/types/components/selectionTempRange/revogr-temp-range.d.ts +26 -11
  436. package/dist/types/components/vnode/vnode-converter.d.ts +19 -0
  437. package/dist/types/components/vnode/vnode.utils.d.ts +8 -0
  438. package/dist/types/components.d.ts +1595 -274
  439. package/dist/types/index.d.ts +14 -0
  440. package/dist/types/plugins/base.plugin.d.ts +49 -0
  441. package/dist/types/plugins/column.auto-size.plugin.d.ts +47 -0
  442. package/dist/types/plugins/column.stretch.plugin.d.ts +22 -0
  443. package/dist/types/plugins/dispatcher.d.ts +16 -0
  444. package/dist/types/plugins/export/csv.d.ts +6 -6
  445. package/dist/types/plugins/export/export.plugin.d.ts +18 -18
  446. package/dist/types/plugins/export/types.d.ts +15 -15
  447. package/dist/types/plugins/filter/filter.button.d.ts +7 -3
  448. package/dist/types/plugins/filter/filter.plugin.d.ts +61 -43
  449. package/dist/types/plugins/filter/filter.pop.d.ts +60 -35
  450. package/dist/types/plugins/filter/filter.service.d.ts +15 -15
  451. package/dist/types/plugins/filter/filter.types.d.ts +7 -7
  452. package/dist/types/plugins/groupingColumn/columnGroupsRenderer.d.ts +16 -13
  453. package/dist/types/plugins/groupingColumn/grouping.col.plugin.d.ts +10 -6
  454. package/dist/types/plugins/groupingColumn/headerGroupRenderer.d.ts +12 -10
  455. package/dist/types/plugins/groupingRow/grouping.const.d.ts +8 -7
  456. package/dist/types/plugins/groupingRow/grouping.row.expand.service.d.ts +6 -6
  457. package/dist/types/plugins/groupingRow/grouping.row.plugin.d.ts +32 -37
  458. package/dist/types/plugins/groupingRow/grouping.row.renderer.d.ts +7 -5
  459. package/dist/types/plugins/groupingRow/grouping.row.types.d.ts +23 -15
  460. package/dist/types/plugins/groupingRow/grouping.service.d.ts +18 -16
  461. package/dist/types/plugins/groupingRow/grouping.trimmed.service.d.ts +1 -1
  462. package/dist/types/plugins/moveColumn/column.drag.plugin.d.ts +56 -0
  463. package/dist/types/plugins/moveColumn/order-column.handler.d.ts +16 -0
  464. package/dist/types/plugins/sorting/sorting.plugin.d.ts +40 -27
  465. package/dist/types/plugins/sorting/sorting.sign.d.ts +3 -3
  466. package/dist/types/services/cell.helpers.d.ts +2 -2
  467. package/dist/types/services/column.data.provider.d.ts +33 -35
  468. package/dist/types/services/data.provider.d.ts +27 -21
  469. package/dist/types/services/dimension.provider.d.ts +52 -34
  470. package/dist/types/services/local.scroll.service.d.ts +37 -0
  471. package/dist/types/services/local.scroll.timer.d.ts +26 -0
  472. package/dist/types/services/resizable.directive.d.ts +52 -51
  473. package/dist/types/services/resizable.element.d.ts +4 -0
  474. package/dist/types/services/selection.store.connector.d.ts +54 -36
  475. package/dist/types/services/viewport.provider.d.ts +6 -8
  476. package/dist/types/stencil-public-runtime.d.ts +331 -217
  477. package/dist/types/store/dataSource/data.proxy.d.ts +3 -3
  478. package/dist/types/store/dataSource/data.store.d.ts +45 -46
  479. package/dist/types/store/dataSource/index.d.ts +3 -0
  480. package/dist/types/store/dataSource/trimmed.plugin.d.ts +10 -0
  481. package/dist/types/store/dimension/dimension.helpers.d.ts +24 -9
  482. package/dist/types/store/dimension/dimension.store.d.ts +29 -11
  483. package/dist/types/store/dimension/index.d.ts +2 -0
  484. package/dist/types/store/selection/index.d.ts +3 -0
  485. package/dist/types/store/selection/selection.helpers.d.ts +1 -3
  486. package/dist/types/store/selection/selection.store.d.ts +19 -17
  487. package/dist/types/store/selection/selection.store.service.d.ts +12 -13
  488. package/dist/types/store/storeTypes.d.ts +4 -4
  489. package/dist/types/store/viewport/index.d.ts +2 -0
  490. package/dist/types/store/viewport/viewport.helpers.d.ts +54 -0
  491. package/dist/types/store/viewport/viewport.store.d.ts +36 -0
  492. package/dist/types/themeManager/theme.compact.d.ts +3 -3
  493. package/dist/types/themeManager/theme.default.d.ts +3 -3
  494. package/dist/types/themeManager/theme.material.d.ts +3 -3
  495. package/dist/types/themeManager/theme.service.d.ts +13 -0
  496. package/dist/types/types/dimension.d.ts +8 -0
  497. package/dist/types/types/interfaces.d.ts +243 -0
  498. package/dist/types/types/plugin.d.ts +9 -0
  499. package/dist/types/types/plugin.types.d.ts +12 -0
  500. package/dist/types/types/selection.d.ts +115 -0
  501. package/dist/types/types/theme.d.ts +7 -0
  502. package/dist/types/types/viewport.interfaces.d.ts +51 -0
  503. package/dist/types/utils/browser.d.ts +1 -0
  504. package/dist/types/utils/consts.d.ts +5 -1
  505. package/dist/types/utils/events.d.ts +2 -0
  506. package/dist/types/utils/{utils.d.ts → index.d.ts} +17 -1
  507. package/dist/types/utils/key.codes.d.ts +70 -0
  508. package/dist/types/utils/{keyCodes.utils.d.ts → key.utils.d.ts} +5 -1
  509. package/dist/types/utils/mobile.d.ts +1 -0
  510. package/dist/types/utils/platform.d.ts +1 -1
  511. package/dist/types/utils/row-header-utils.d.ts +2 -0
  512. package/dist/types/utils/store.utils.d.ts +2 -2
  513. package/hydrate/index.d.ts +218 -0
  514. package/hydrate/index.js +32381 -0
  515. package/hydrate/package.json +6 -0
  516. package/loader/cdn.js +4 -3
  517. package/loader/index.cjs.js +4 -3
  518. package/loader/index.d.ts +10 -2
  519. package/loader/index.es2017.js +4 -3
  520. package/loader/index.js +4 -3
  521. package/package.json +96 -52
  522. package/readme.md +135 -98
  523. package/standalone/_baseIteratee.js +1237 -0
  524. package/standalone/_baseIteratee.js.map +1 -0
  525. package/standalone/_stringToPath.js +1389 -0
  526. package/standalone/_stringToPath.js.map +1 -0
  527. package/standalone/column.service.js +889 -0
  528. package/standalone/column.service.js.map +1 -0
  529. package/standalone/consts.js +30 -0
  530. package/standalone/consts.js.map +1 -0
  531. package/standalone/data.store.js +705 -0
  532. package/standalone/data.store.js.map +1 -0
  533. package/standalone/debounce.js +225 -0
  534. package/standalone/debounce.js.map +1 -0
  535. package/standalone/dimension.helpers.js +355 -0
  536. package/standalone/dimension.helpers.js.map +1 -0
  537. package/standalone/each.js +200 -0
  538. package/standalone/each.js.map +1 -0
  539. package/standalone/filter.button.js +38 -0
  540. package/standalone/filter.button.js.map +1 -0
  541. package/standalone/identity.js +349 -0
  542. package/standalone/identity.js.map +1 -0
  543. package/standalone/index.d.ts +66 -0
  544. package/standalone/index.js +42 -0
  545. package/standalone/index.js.map +1 -0
  546. package/standalone/index2.js +55 -0
  547. package/standalone/index2.js.map +1 -0
  548. package/standalone/isObjectLike.js +195 -0
  549. package/standalone/isObjectLike.js.map +1 -0
  550. package/standalone/local.scroll.timer.js +163 -0
  551. package/standalone/local.scroll.timer.js.map +1 -0
  552. package/{custom-element → standalone}/resize-observer.js +30 -14
  553. package/standalone/resize-observer.js.map +1 -0
  554. package/standalone/revo-grid.d.ts +11 -0
  555. package/standalone/revo-grid.js +4252 -0
  556. package/standalone/revo-grid.js.map +1 -0
  557. package/standalone/revogr-attribution.d.ts +11 -0
  558. package/standalone/revogr-attribution.js +11 -0
  559. package/standalone/revogr-attribution.js.map +1 -0
  560. package/standalone/revogr-attribution2.js +31 -0
  561. package/standalone/revogr-attribution2.js.map +1 -0
  562. package/standalone/revogr-clipboard.d.ts +11 -0
  563. package/standalone/revogr-clipboard.js +11 -0
  564. package/standalone/revogr-clipboard.js.map +1 -0
  565. package/standalone/revogr-clipboard2.js +159 -0
  566. package/standalone/revogr-clipboard2.js.map +1 -0
  567. package/standalone/revogr-data.d.ts +11 -0
  568. package/standalone/revogr-data.js +11 -0
  569. package/standalone/revogr-data.js.map +1 -0
  570. package/standalone/revogr-data2.js +368 -0
  571. package/standalone/revogr-data2.js.map +1 -0
  572. package/standalone/revogr-edit.d.ts +11 -0
  573. package/standalone/revogr-edit.js +11 -0
  574. package/standalone/revogr-edit.js.map +1 -0
  575. package/standalone/revogr-edit2.js +335 -0
  576. package/standalone/revogr-edit2.js.map +1 -0
  577. package/standalone/revogr-filter-panel.d.ts +11 -0
  578. package/standalone/revogr-filter-panel.js +310 -0
  579. package/standalone/revogr-filter-panel.js.map +1 -0
  580. package/standalone/revogr-focus.d.ts +11 -0
  581. package/standalone/revogr-focus.js +11 -0
  582. package/standalone/revogr-focus.js.map +1 -0
  583. package/standalone/revogr-focus2.js +106 -0
  584. package/standalone/revogr-focus2.js.map +1 -0
  585. package/standalone/revogr-header.d.ts +11 -0
  586. package/standalone/revogr-header.js +11 -0
  587. package/standalone/revogr-header.js.map +1 -0
  588. package/standalone/revogr-header2.js +667 -0
  589. package/standalone/revogr-header2.js.map +1 -0
  590. package/standalone/revogr-order-editor.d.ts +11 -0
  591. package/standalone/revogr-order-editor.js +11 -0
  592. package/standalone/revogr-order-editor.js.map +1 -0
  593. package/standalone/revogr-order-editor2.js +199 -0
  594. package/standalone/revogr-order-editor2.js.map +1 -0
  595. package/standalone/revogr-overlay-selection.d.ts +11 -0
  596. package/standalone/revogr-overlay-selection.js +11 -0
  597. package/standalone/revogr-overlay-selection.js.map +1 -0
  598. package/standalone/revogr-overlay-selection2.js +876 -0
  599. package/standalone/revogr-overlay-selection2.js.map +1 -0
  600. package/standalone/revogr-row-headers.d.ts +11 -0
  601. package/standalone/revogr-row-headers.js +11 -0
  602. package/standalone/revogr-row-headers.js.map +1 -0
  603. package/standalone/revogr-row-headers2.js +555 -0
  604. package/standalone/revogr-row-headers2.js.map +1 -0
  605. package/standalone/revogr-scroll-virtual.d.ts +11 -0
  606. package/standalone/revogr-scroll-virtual.js +11 -0
  607. package/standalone/revogr-scroll-virtual.js.map +1 -0
  608. package/standalone/revogr-scroll-virtual2.js +187 -0
  609. package/standalone/revogr-scroll-virtual2.js.map +1 -0
  610. package/standalone/revogr-temp-range.d.ts +11 -0
  611. package/standalone/revogr-temp-range.js +11 -0
  612. package/standalone/revogr-temp-range.js.map +1 -0
  613. package/standalone/revogr-temp-range2.js +90 -0
  614. package/standalone/revogr-temp-range2.js.map +1 -0
  615. package/standalone/revogr-viewport-scroll.d.ts +11 -0
  616. package/standalone/revogr-viewport-scroll.js +11 -0
  617. package/standalone/revogr-viewport-scroll.js.map +1 -0
  618. package/standalone/revogr-viewport-scroll2.js +336 -0
  619. package/standalone/revogr-viewport-scroll2.js.map +1 -0
  620. package/standalone/selection.utils.js +108 -0
  621. package/standalone/selection.utils.js.map +1 -0
  622. package/standalone/throttle.js +79 -0
  623. package/standalone/throttle.js.map +1 -0
  624. package/standalone/toNumber.js +144 -0
  625. package/standalone/toNumber.js.map +1 -0
  626. package/standalone/vnode-converter.js +45 -0
  627. package/standalone/vnode-converter.js.map +1 -0
  628. package/standalone/vnode-html.d.ts +11 -0
  629. package/standalone/vnode-html.js +11 -0
  630. package/standalone/vnode-html.js.map +1 -0
  631. package/custom-element/index.d.ts +0 -117
  632. package/custom-element/index.js +0 -28858
  633. package/dist/cjs/css-shim-e33df79c.js +0 -6
  634. package/dist/cjs/dom-c8b6d1a7.js +0 -75
  635. package/dist/cjs/filter.button-2396a488.js +0 -27
  636. package/dist/cjs/index-d3f67f2e.js +0 -1729
  637. package/dist/cjs/revo-grid_11.cjs.entry.js +0 -28622
  638. package/dist/cjs/revogr-clipboard.cjs.entry.js +0 -53
  639. package/dist/collection/components/button/button.js +0 -4
  640. package/dist/collection/components/data/cellRenderer.js +0 -19
  641. package/dist/collection/components/data/columnService.js +0 -243
  642. package/dist/collection/components/data/rowRenderer.js +0 -6
  643. package/dist/collection/components/header/headerCellRenderer.js +0 -19
  644. package/dist/collection/components/header/headerRenderer.js +0 -45
  645. package/dist/collection/components/order/orderRenderer.js +0 -50
  646. package/dist/collection/components/order/rowOrderService.js +0 -68
  647. package/dist/collection/components/overlay/clipboard.service.js +0 -39
  648. package/dist/collection/components/overlay/editors/edit.utils.js +0 -5
  649. package/dist/collection/components/overlay/editors/text.js +0 -35
  650. package/dist/collection/components/overlay/revogr-edit.js +0 -163
  651. package/dist/collection/components/revoGrid/viewport.interfaces.js +0 -1
  652. package/dist/collection/components/revoGrid/viewport.js +0 -18
  653. package/dist/collection/components/revoGrid/viewport.section.js +0 -28
  654. package/dist/collection/components/rowHeaders/row-header-utils.js +0 -4
  655. package/dist/collection/plugins/autoSizeColumn.d.ts +0 -54
  656. package/dist/collection/plugins/autoSizeColumn.js +0 -230
  657. package/dist/collection/plugins/basePlugin.d.ts +0 -37
  658. package/dist/collection/plugins/basePlugin.js +0 -53
  659. package/dist/collection/plugins/export/csv.d.ts +0 -9
  660. package/dist/collection/plugins/export/export.plugin.d.ts +0 -24
  661. package/dist/collection/plugins/export/types.d.ts +0 -23
  662. package/dist/collection/plugins/filter/conditions/equal.d.ts +0 -4
  663. package/dist/collection/plugins/filter/conditions/number/greaterThan.d.ts +0 -3
  664. package/dist/collection/plugins/filter/conditions/number/greaterThanOrEqual.d.ts +0 -3
  665. package/dist/collection/plugins/filter/conditions/number/lessThan.d.ts +0 -3
  666. package/dist/collection/plugins/filter/conditions/number/lessThanOrEqual.d.ts +0 -3
  667. package/dist/collection/plugins/filter/conditions/set.d.ts +0 -4
  668. package/dist/collection/plugins/filter/conditions/string/beginswith.d.ts +0 -3
  669. package/dist/collection/plugins/filter/conditions/string/contains.d.ts +0 -4
  670. package/dist/collection/plugins/filter/filter.button.d.ts +0 -10
  671. package/dist/collection/plugins/filter/filter.plugin.d.ts +0 -59
  672. package/dist/collection/plugins/filter/filter.pop.d.ts +0 -42
  673. package/dist/collection/plugins/filter/filter.service.d.ts +0 -20
  674. package/dist/collection/plugins/filter/filter.types.d.ts +0 -8
  675. package/dist/collection/plugins/groupingColumn/columnGroupsRenderer.d.ts +0 -16
  676. package/dist/collection/plugins/groupingColumn/grouping.col.plugin.d.ts +0 -13
  677. package/dist/collection/plugins/groupingColumn/headerGroupRenderer.d.ts +0 -14
  678. package/dist/collection/plugins/groupingRow/grouping.const.d.ts +0 -9
  679. package/dist/collection/plugins/groupingRow/grouping.row.expand.service.d.ts +0 -15
  680. package/dist/collection/plugins/groupingRow/grouping.row.plugin.d.ts +0 -40
  681. package/dist/collection/plugins/groupingRow/grouping.row.renderer.d.ts +0 -9
  682. package/dist/collection/plugins/groupingRow/grouping.row.types.d.ts +0 -19
  683. package/dist/collection/plugins/groupingRow/grouping.service.d.ts +0 -25
  684. package/dist/collection/plugins/groupingRow/grouping.trimmed.service.d.ts +0 -10
  685. package/dist/collection/plugins/sorting/sorting.plugin.d.ts +0 -32
  686. package/dist/collection/plugins/sorting/sorting.sign.d.ts +0 -8
  687. package/dist/collection/plugins/stretchPlugin.d.ts +0 -29
  688. package/dist/collection/plugins/stretchPlugin.js +0 -90
  689. package/dist/collection/plugins/trimmed/trimmed.plugin.d.ts +0 -10
  690. package/dist/collection/plugins/trimmed/trimmed.plugin.js +0 -32
  691. package/dist/collection/services/localScrollService.js +0 -80
  692. package/dist/collection/store/viewPort/viewport.helpers.js +0 -180
  693. package/dist/collection/store/viewPort/viewport.store.js +0 -121
  694. package/dist/collection/themeManager/themeService.js +0 -43
  695. package/dist/collection/utils/closestPolifill.js +0 -18
  696. package/dist/collection/utils/generateAlphabetHeader.js +0 -20
  697. package/dist/collection/utils/keyCodes.js +0 -70
  698. package/dist/collection/utils/keyCodes.utils.js +0 -64
  699. package/dist/collection/utils/resizeObserver.js +0 -6
  700. package/dist/collection/utils/utils.js +0 -104
  701. package/dist/esm/css-shim-8d75038b.js +0 -4
  702. package/dist/esm/dom-1b195079.js +0 -73
  703. package/dist/esm/filter.button-53ebca66.js +0 -23
  704. package/dist/esm/index-42c84e7c.js +0 -1694
  705. package/dist/esm/polyfills/core-js.js +0 -11
  706. package/dist/esm/polyfills/css-shim.js +0 -1
  707. package/dist/esm/polyfills/dom.js +0 -79
  708. package/dist/esm/polyfills/es5-html-element.js +0 -1
  709. package/dist/esm/polyfills/index.js +0 -34
  710. package/dist/esm/polyfills/system.js +0 -6
  711. package/dist/esm/revo-grid_11.entry.js +0 -28608
  712. package/dist/esm/revogr-clipboard.entry.js +0 -49
  713. package/dist/esm-es5/css-shim-8d75038b.js +0 -1
  714. package/dist/esm-es5/dom-1b195079.js +0 -21
  715. package/dist/esm-es5/filter.button-53ebca66.js +0 -1
  716. package/dist/esm-es5/index-42c84e7c.js +0 -1
  717. package/dist/esm-es5/loader.js +0 -1
  718. package/dist/esm-es5/resize-observer-56b7b34f.js +0 -1
  719. package/dist/esm-es5/revo-grid.js +0 -1
  720. package/dist/esm-es5/revo-grid_11.entry.js +0 -1
  721. package/dist/esm-es5/revogr-clipboard.entry.js +0 -1
  722. package/dist/esm-es5/revogr-filter-panel.entry.js +0 -1
  723. package/dist/revo-grid/css-shim-88bfb262.system.js +0 -1
  724. package/dist/revo-grid/css-shim-8d75038b.js +0 -1
  725. package/dist/revo-grid/dom-1b195079.js +0 -19
  726. package/dist/revo-grid/dom-ee2dd1b3.system.js +0 -21
  727. package/dist/revo-grid/filter.button-1509c206.js +0 -1
  728. package/dist/revo-grid/filter.button-4bd87101.system.js +0 -1
  729. package/dist/revo-grid/index-a15e7527.system.js +0 -1
  730. package/dist/revo-grid/index-a7f99799.js +0 -1
  731. package/dist/revo-grid/index.system.js +0 -1
  732. package/dist/revo-grid/plugins/autoSizeColumn.d.ts +0 -54
  733. package/dist/revo-grid/plugins/basePlugin.d.ts +0 -37
  734. package/dist/revo-grid/plugins/export/csv.d.ts +0 -9
  735. package/dist/revo-grid/plugins/export/export.plugin.d.ts +0 -24
  736. package/dist/revo-grid/plugins/export/types.d.ts +0 -23
  737. package/dist/revo-grid/plugins/filter/conditions/equal.d.ts +0 -4
  738. package/dist/revo-grid/plugins/filter/conditions/number/greaterThan.d.ts +0 -3
  739. package/dist/revo-grid/plugins/filter/conditions/number/greaterThanOrEqual.d.ts +0 -3
  740. package/dist/revo-grid/plugins/filter/conditions/number/lessThan.d.ts +0 -3
  741. package/dist/revo-grid/plugins/filter/conditions/number/lessThanOrEqual.d.ts +0 -3
  742. package/dist/revo-grid/plugins/filter/conditions/set.d.ts +0 -4
  743. package/dist/revo-grid/plugins/filter/conditions/string/beginswith.d.ts +0 -3
  744. package/dist/revo-grid/plugins/filter/conditions/string/contains.d.ts +0 -4
  745. package/dist/revo-grid/plugins/filter/filter.button.d.ts +0 -10
  746. package/dist/revo-grid/plugins/filter/filter.plugin.d.ts +0 -59
  747. package/dist/revo-grid/plugins/filter/filter.pop.d.ts +0 -42
  748. package/dist/revo-grid/plugins/filter/filter.service.d.ts +0 -20
  749. package/dist/revo-grid/plugins/filter/filter.types.d.ts +0 -8
  750. package/dist/revo-grid/plugins/groupingColumn/columnGroupsRenderer.d.ts +0 -16
  751. package/dist/revo-grid/plugins/groupingColumn/grouping.col.plugin.d.ts +0 -13
  752. package/dist/revo-grid/plugins/groupingColumn/headerGroupRenderer.d.ts +0 -14
  753. package/dist/revo-grid/plugins/groupingRow/grouping.const.d.ts +0 -9
  754. package/dist/revo-grid/plugins/groupingRow/grouping.row.expand.service.d.ts +0 -15
  755. package/dist/revo-grid/plugins/groupingRow/grouping.row.plugin.d.ts +0 -40
  756. package/dist/revo-grid/plugins/groupingRow/grouping.row.renderer.d.ts +0 -9
  757. package/dist/revo-grid/plugins/groupingRow/grouping.row.types.d.ts +0 -19
  758. package/dist/revo-grid/plugins/groupingRow/grouping.service.d.ts +0 -25
  759. package/dist/revo-grid/plugins/groupingRow/grouping.trimmed.service.d.ts +0 -10
  760. package/dist/revo-grid/plugins/sorting/sorting.plugin.d.ts +0 -32
  761. package/dist/revo-grid/plugins/sorting/sorting.sign.d.ts +0 -8
  762. package/dist/revo-grid/plugins/stretchPlugin.d.ts +0 -29
  763. package/dist/revo-grid/plugins/trimmed/trimmed.plugin.d.ts +0 -10
  764. package/dist/revo-grid/resize-observer-56b7b34f.js +0 -1
  765. package/dist/revo-grid/resize-observer-7a7b9757.system.js +0 -1
  766. package/dist/revo-grid/revo-grid.js +0 -132
  767. package/dist/revo-grid/revo-grid.system.js +0 -1
  768. package/dist/revo-grid/revo-grid_11.entry.js +0 -1
  769. package/dist/revo-grid/revo-grid_11.system.entry.js +0 -1
  770. package/dist/revo-grid/revogr-clipboard.entry.js +0 -1
  771. package/dist/revo-grid/revogr-clipboard.system.entry.js +0 -1
  772. package/dist/revo-grid/revogr-filter-panel.system.entry.js +0 -1
  773. package/dist/types/components/button/button.d.ts +0 -5
  774. package/dist/types/components/data/cellRenderer.d.ts +0 -8
  775. package/dist/types/components/data/columnService.d.ts +0 -42
  776. package/dist/types/components/header/headerCellRenderer.d.ts +0 -8
  777. package/dist/types/components/header/headerRenderer.d.ts +0 -15
  778. package/dist/types/components/order/orderRenderer.d.ts +0 -28
  779. package/dist/types/components/order/rowOrderService.d.ts +0 -27
  780. package/dist/types/components/overlay/clipboard.service.d.ts +0 -20
  781. package/dist/types/components/overlay/editors/text.d.ts +0 -13
  782. package/dist/types/components/overlay/revogr-edit.d.ts +0 -19
  783. package/dist/types/components/revoGrid/viewport.d.ts +0 -19
  784. package/dist/types/components/revoGrid/viewport.interfaces.d.ts +0 -66
  785. package/dist/types/components/revoGrid/viewport.section.d.ts +0 -24
  786. package/dist/types/components/rowHeaders/row-header-utils.d.ts +0 -2
  787. package/dist/types/interfaces.d.ts +0 -437
  788. package/dist/types/plugins/autoSizeColumn.d.ts +0 -54
  789. package/dist/types/plugins/basePlugin.d.ts +0 -37
  790. package/dist/types/plugins/stretchPlugin.d.ts +0 -29
  791. package/dist/types/plugins/trimmed/trimmed.plugin.d.ts +0 -10
  792. package/dist/types/services/localScrollService.d.ts +0 -28
  793. package/dist/types/store/viewPort/viewport.helpers.d.ts +0 -30
  794. package/dist/types/store/viewPort/viewport.store.d.ts +0 -18
  795. package/dist/types/themeManager/themeService.d.ts +0 -13
  796. package/dist/types/utils/closestPolifill.d.ts +0 -0
  797. package/dist/types/utils/keyCodes.d.ts +0 -68
  798. package/loader/package.json +0 -10
  799. /package/dist/types/components/{overlay/editors → editors}/edit.utils.d.ts +0 -0
  800. /package/dist/{esm-es5/index.js → types/utils/closest.polifill.d.ts} +0 -0
  801. /package/dist/types/utils/{generateAlphabetHeader.d.ts → header.utils.d.ts} +0 -0
  802. /package/dist/types/utils/{resizeObserver.d.ts → resize-observer.polifill.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter.button.js","sourceRoot":"","sources":["../../../src/plugins/filter/filter.button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAGlC,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAC;AAC/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAAQ,CAAC;AAC7C,MAAM,CAAC,MAAM,WAAW,GAAG,WAAW,CAAC;AACvC,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAC7C,MAAM,CAAC,MAAM,YAAY,GAAG,cAAc,CAAC;AAK3C,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAE,MAAM,EAAS,EAAE,EAAE;IAChD,OAAO,CACL;QACE,cACE,KAAK,EAAE;gBACL,CAAC,mBAAmB,CAAC,EAAE,IAAI;gBAC3B,CAAC,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;aACxD;YAED,WAAK,KAAK,EAAC,YAAY,EAAC,OAAO,EAAC,WAAW;gBACzC,SAAG,MAAM,EAAC,MAAM,kBAAc,GAAG,EAAC,IAAI,EAAC,MAAM,eAAW,SAAS;oBAC/D,YAAM,CAAC,EAAC,2GAA2G,EAAC,IAAI,EAAC,cAAc,GAAQ,CAC7I,CACA,CACC,CACJ,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,EAAE;IAC9B,OAAO,CACL,WAAK,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE;QAClC,WAAK,KAAK,EAAC,WAAW,EAAC,OAAO,EAAC,WAAW;YACxC,YAAM,IAAI,EAAC,cAAc,EAAC,CAAC,EAAC,8GAA8G,GAAG,CACzI,CACF,CACP,CAAC;AACJ,CAAC,CAAC;AACF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAE,KAAK,EAAO,EAAE,EAAE;IAC5C,OAAO,cAAQ,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,IAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAU,CAAC;AAC9G,CAAC,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,CAAc;IACxC,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,OAAO,CAAC,IAAI,mBAAmB,EAAE,CAAC,CAAC;AAC/C,CAAC","sourcesContent":["import { h } from '@stencil/core';\nimport { ColumnRegular } from '../../types/interfaces';\n\nexport const FILTER_BUTTON_CLASS = 'rv-filter';\nexport const FILTER_BUTTON_ACTIVE = 'active';\nexport const FILTER_PROP = 'hasFilter';\nexport const AND_OR_BUTTON = 'and-or-button';\nexport const TRASH_BUTTON = 'trash-button';\n\ntype Props = {\n column: ColumnRegular;\n};\nexport const FilterButton = ({ column }: Props) => {\n return (\n <span>\n <button\n class={{\n [FILTER_BUTTON_CLASS]: true,\n [FILTER_BUTTON_ACTIVE]: column && !!column[FILTER_PROP],\n }}\n >\n <svg class=\"filter-img\" viewBox=\"0 0 64 64\">\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <path d=\"M43,48 L43,56 L21,56 L21,48 L43,48 Z M53,28 L53,36 L12,36 L12,28 L53,28 Z M64,8 L64,16 L0,16 L0,8 L64,8 Z\" fill=\"currentColor\"></path>\n </g>\n </svg>\n </button>\n </span>\n );\n};\n\nexport const TrashButton = () => {\n return (\n <div class={{ [TRASH_BUTTON]: true }}>\n <svg class=\"trash-img\" viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\" d=\"M9,3V4H4V6H5V19A2,2 0 0,0 7,21H17A2,2 0 0,0 19,19V6H20V4H15V3H9M7,6H17V19H7V6M9,8V17H11V8H9M13,8V17H15V8H13Z\" />\n </svg>\n </div>\n );\n};\nexport const AndOrButton = ({ isAnd }: any) => {\n return <button class={{ [AND_OR_BUTTON]: true, 'light revo-button': true }}>{isAnd ? 'and' : 'or'}</button>;\n};\n\nexport function isFilterBtn(e: HTMLElement) {\n if (e.classList.contains(FILTER_BUTTON_CLASS)) {\n return true;\n }\n return e?.closest(`.${FILTER_BUTTON_CLASS}`);\n}\n"]}
@@ -1,200 +1,295 @@
1
- import { h } from '@stencil/core';
2
- import BasePlugin from '../basePlugin';
3
- import { FILTER_PROP, isFilterBtn } from './filter.button';
4
- import { filterEntities, filterNames, filterTypes } from './filter.service';
1
+ /*!
2
+ * Built by Revolist OU ❤️
3
+ */
4
+ import { h } from "@stencil/core";
5
+ import reduce from "lodash/reduce";
6
+ import { BasePlugin } from "../base.plugin";
7
+ import { FILTER_PROP, isFilterBtn } from "./filter.button";
8
+ import { filterEntities, filterNames, filterTypes, } from "./filter.service";
5
9
  export const FILTER_TRIMMED_TYPE = 'filter';
6
- export default class FilterPlugin extends BasePlugin {
7
- constructor(revogrid, uiid, config) {
8
- super(revogrid);
9
- this.revogrid = revogrid;
10
- this.filterCollection = {};
11
- this.possibleFilters = Object.assign({}, filterTypes);
12
- this.possibleFilterNames = Object.assign({}, filterNames);
13
- this.possibleFilterEntities = Object.assign({}, filterEntities);
14
- if (config) {
15
- this.initConfig(config);
10
+ export const FILTER_CONFIG_CHANGED_EVENT = 'filterconfigchanged';
11
+ export class FilterPlugin extends BasePlugin {
12
+ constructor(revogrid, providers, uiid, config) {
13
+ var _a;
14
+ super(revogrid, providers);
15
+ this.revogrid = revogrid;
16
+ this.filterCollection = {};
17
+ this.multiFilterItems = {};
18
+ this.possibleFilters = Object.assign({}, filterTypes);
19
+ this.possibleFilterNames = Object.assign({}, filterNames);
20
+ this.possibleFilterEntities = Object.assign({}, filterEntities);
21
+ this.filterProp = FILTER_PROP;
22
+ if (config) {
23
+ this.initConfig(config);
24
+ }
25
+ const headerclick = (e) => this.headerclick(e);
26
+ const aftersourceset = async () => {
27
+ const filterCollectionProps = Object.keys(this.filterCollection);
28
+ if (filterCollectionProps.length > 0) {
29
+ // handle old way of filtering by reworking FilterCollection to new MultiFilterItem
30
+ filterCollectionProps.forEach((prop, index) => {
31
+ if (!this.multiFilterItems[prop]) {
32
+ this.multiFilterItems[prop] = [
33
+ {
34
+ id: index,
35
+ type: this.filterCollection[prop].type,
36
+ value: this.filterCollection[prop].value,
37
+ relation: 'and',
38
+ },
39
+ ];
40
+ }
41
+ });
42
+ }
43
+ await this.runFiltering();
44
+ };
45
+ this.addEventListener('headerclick', headerclick);
46
+ this.addEventListener(FILTER_CONFIG_CHANGED_EVENT, ({ detail }) => {
47
+ if (!detail) {
48
+ this.clearFiltering();
49
+ return;
50
+ }
51
+ if (typeof detail === 'object') {
52
+ this.initConfig(detail);
53
+ }
54
+ aftersourceset();
55
+ });
56
+ this.addEventListener('aftersourceset', aftersourceset);
57
+ this.addEventListener('filter', ({ detail }) => this.onFilterChange(detail));
58
+ const existingNodes = this.revogrid.registerVNode.filter((n) => n.$tag$ !== 'revogr-filter-panel');
59
+ this.revogrid.registerVNode = [
60
+ ...existingNodes,
61
+ h("revogr-filter-panel", { uuid: `filter-${uiid}`, filterItems: this.multiFilterItems, filterNames: this.possibleFilterNames, filterEntities: this.possibleFilterEntities, 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), disableDynamicFiltering: config === null || config === void 0 ? void 0 : config.disableDynamicFiltering, ref: e => (this.pop = e) }),
62
+ ];
16
63
  }
17
- const headerclick = (e) => this.headerclick(e);
18
- const aftersourceset = () => {
19
- if (Object.keys(this.filterCollection).length) {
20
- this.filterByProps(this.filterCollection);
21
- }
22
- };
23
- this.addEventListener('headerclick', headerclick);
24
- this.addEventListener('aftersourceset', aftersourceset);
25
- this.revogrid.registerVNode([
26
- h("revogr-filter-panel", { uuid: `filter-${uiid}`, filterNames: this.possibleFilterNames, filterEntities: this.possibleFilterEntities, onFilterChange: e => this.onFilterChange(e.detail), ref: e => (this.pop = e) }),
27
- ]);
28
- }
29
- initConfig(config) {
30
- if (config.collection) {
31
- this.filterCollection = Object.assign({}, config.collection);
64
+ initConfig(config) {
65
+ if (config.multiFilterItems) {
66
+ this.multiFilterItems = Object.assign({}, config.multiFilterItems);
67
+ }
68
+ if (config.customFilters) {
69
+ for (let cType in config.customFilters) {
70
+ const cFilter = config.customFilters[cType];
71
+ if (!this.possibleFilters[cFilter.columnFilterType]) {
72
+ this.possibleFilters[cFilter.columnFilterType] = [];
73
+ }
74
+ this.possibleFilters[cFilter.columnFilterType].push(cType);
75
+ this.possibleFilterEntities[cType] = cFilter.func;
76
+ this.possibleFilterNames[cType] = cFilter.name;
77
+ }
78
+ }
79
+ if (config.filterProp) {
80
+ this.filterProp = config.filterProp;
81
+ }
82
+ /**
83
+ * which filters has to be included/excluded
84
+ * convinient way to exclude system filters
85
+ */
86
+ if (config.include) {
87
+ const filters = {};
88
+ for (let t in this.possibleFilters) {
89
+ // validate filters, if appropriate function present
90
+ const newTypes = this.possibleFilters[t].filter(f => config.include.indexOf(f) > -1);
91
+ if (newTypes.length) {
92
+ filters[t] = newTypes;
93
+ }
94
+ }
95
+ // if any valid filters provided show them
96
+ if (Object.keys(filters).length > 0) {
97
+ this.possibleFilters = filters;
98
+ }
99
+ }
100
+ if (config.collection) {
101
+ this.filterCollection = reduce(config.collection, (result, item, prop) => {
102
+ if (this.possibleFilterEntities[item.type]) {
103
+ result[prop] = item;
104
+ }
105
+ else {
106
+ console.warn(`${item.type} type is not found.`);
107
+ }
108
+ return result;
109
+ }, {});
110
+ }
111
+ if (config.localization) {
112
+ if (config.localization.filterNames) {
113
+ Object.entries(config.localization.filterNames).forEach(([k, v]) => {
114
+ if (this.possibleFilterNames[k] != void 0) {
115
+ this.possibleFilterNames[k] = v;
116
+ }
117
+ });
118
+ }
119
+ }
32
120
  }
33
- if (config.customFilters) {
34
- for (let cType in config.customFilters) {
35
- const cFilter = config.customFilters[cType];
36
- if (!this.possibleFilters[cFilter.columnFilterType]) {
37
- this.possibleFilters[cFilter.columnFilterType] = [];
38
- }
39
- this.possibleFilters[cFilter.columnFilterType].push(cType);
40
- this.possibleFilterEntities[cType] = cFilter.func;
41
- this.possibleFilterNames[cType] = cFilter.name;
42
- }
121
+ async headerclick(e) {
122
+ var _a;
123
+ const el = (_a = e.detail.originalEvent) === null || _a === void 0 ? void 0 : _a.target;
124
+ if (!isFilterBtn(el)) {
125
+ return;
126
+ }
127
+ e.preventDefault();
128
+ // close if same
129
+ const changes = await this.pop.getChanges();
130
+ if (changes && (changes === null || changes === void 0 ? void 0 : changes.prop) === e.detail.prop) {
131
+ this.pop.show();
132
+ return;
133
+ }
134
+ // filter button clicked, open filter dialog
135
+ const gridPos = this.revogrid.getBoundingClientRect();
136
+ const buttonPos = el.getBoundingClientRect();
137
+ const prop = e.detail.prop;
138
+ this.pop.filterTypes = this.getColumnFilter(e.detail.filter);
139
+ this.pop.show(Object.assign(Object.assign({}, this.filterCollection[prop]), { x: buttonPos.x - gridPos.x, y: buttonPos.y - gridPos.y + buttonPos.height, prop }));
43
140
  }
44
- /**
45
- * which filters has to be included/excluded
46
- * convinient way to exclude system filters
47
- */
48
- if (config.include) {
49
- const filters = {};
50
- for (let t in this.possibleFilters) {
51
- // validate filters, if appropriate function present
52
- const newTypes = this.possibleFilters[t].filter(f => config.include.indexOf(f) > -1);
53
- if (newTypes.length) {
54
- filters[t] = newTypes;
55
- }
56
- }
57
- // if any valid filters provided show them
58
- if (Object.keys(filters).length > 0) {
59
- this.possibleFilters = filters;
60
- }
141
+ getColumnFilter(type) {
142
+ let filterType = 'string';
143
+ if (!type) {
144
+ return { [filterType]: this.possibleFilters[filterType] };
145
+ }
146
+ // if custom column filter
147
+ if (this.isValidType(type)) {
148
+ filterType = type;
149
+ // if multiple filters applied
150
+ }
151
+ else if (typeof type === 'object' && type.length) {
152
+ return type.reduce((r, multiType) => {
153
+ if (this.isValidType(multiType)) {
154
+ r[multiType] = this.possibleFilters[multiType];
155
+ }
156
+ return r;
157
+ }, {});
158
+ }
159
+ return { [filterType]: this.possibleFilters[filterType] };
61
160
  }
62
- }
63
- async headerclick(e) {
64
- var _a;
65
- const el = (_a = e.detail.originalEvent) === null || _a === void 0 ? void 0 : _a.target;
66
- if (!isFilterBtn(el)) {
67
- return;
161
+ isValidType(type) {
162
+ return !!(typeof type === 'string' && this.possibleFilters[type]);
68
163
  }
69
- e.preventDefault();
70
- // close if same
71
- const changes = await this.pop.getChanges();
72
- if (changes && (changes === null || changes === void 0 ? void 0 : changes.prop) === e.detail.prop) {
73
- this.pop.show();
74
- return;
164
+ // called on internal component change
165
+ async onFilterChange(filterItems) {
166
+ this.multiFilterItems = filterItems;
167
+ this.runFiltering();
75
168
  }
76
- // filter button clicked, open filter dialog
77
- const gridPos = this.revogrid.getBoundingClientRect();
78
- const buttonPos = el.getBoundingClientRect();
79
- const prop = e.detail.prop;
80
- this.pop.filterTypes = this.getColumnFilter(e.detail.filter);
81
- this.pop.show(Object.assign(Object.assign({}, this.filterCollection[prop]), { x: buttonPos.x - gridPos.x, y: buttonPos.y - gridPos.y + buttonPos.height, prop }));
82
- }
83
- getColumnFilter(type) {
84
- let filterType = 'string';
85
- if (!type) {
86
- return { [filterType]: this.possibleFilters[filterType] };
169
+ /**
170
+ * Triggers grid filtering
171
+ */
172
+ async doFiltering(collection, items, columns, filterItems) {
173
+ const columnsToUpdate = [];
174
+ columns.forEach(rgCol => {
175
+ const column = Object.assign({}, rgCol);
176
+ const hasFilter = filterItems[column.prop];
177
+ if (column[this.filterProp] && !hasFilter) {
178
+ delete column[this.filterProp];
179
+ columnsToUpdate.push(column);
180
+ }
181
+ if (!column[this.filterProp] && hasFilter) {
182
+ columnsToUpdate.push(column);
183
+ column[this.filterProp] = true;
184
+ }
185
+ });
186
+ const itemsToFilter = this.getRowFilter(items, filterItems);
187
+ // check is filter event prevented
188
+ const { defaultPrevented, detail } = this.emit('beforefiltertrimmed', {
189
+ collection,
190
+ itemsToFilter,
191
+ source: items,
192
+ filterItems,
193
+ });
194
+ if (defaultPrevented) {
195
+ return;
196
+ }
197
+ // check is trimmed event prevented
198
+ const isAddedEvent = await this.revogrid.addTrimmed(detail.itemsToFilter, FILTER_TRIMMED_TYPE);
199
+ if (isAddedEvent.defaultPrevented) {
200
+ return;
201
+ }
202
+ // applies the hasFilter to the columns to show filter icon
203
+ await this.revogrid.updateColumns(columnsToUpdate);
204
+ this.emit('afterFilterApply');
87
205
  }
88
- // if custom column filter
89
- if (this.isValidType(type)) {
90
- filterType = type;
91
- // if multiple filters applied
206
+ async clearFiltering() {
207
+ this.multiFilterItems = {};
208
+ await this.runFiltering();
92
209
  }
93
- else if (typeof type === 'object' && type.length) {
94
- return type.reduce((r, multiType) => {
95
- if (this.isValidType(multiType)) {
96
- r[multiType] = this.possibleFilters[multiType];
210
+ async runFiltering() {
211
+ const collection = {};
212
+ // handle old filterCollection to return the first filter only (if any) from multiFilterItems
213
+ const filterProps = Object.keys(this.multiFilterItems);
214
+ for (const prop of filterProps) {
215
+ // check if we have any filter for a column
216
+ if (this.multiFilterItems[prop].length > 0) {
217
+ const firstFilterItem = this.multiFilterItems[prop][0];
218
+ collection[prop] = {
219
+ filter: filterEntities[firstFilterItem.type],
220
+ type: firstFilterItem.type,
221
+ value: firstFilterItem.value,
222
+ };
223
+ }
97
224
  }
98
- return r;
99
- }, {});
100
- }
101
- return { [filterType]: this.possibleFilters[filterType] };
102
- }
103
- isValidType(type) {
104
- return !!(typeof type === 'string' && this.possibleFilters[type]);
105
- }
106
- // called on internal component change
107
- async onFilterChange(filterItem) {
108
- this.filterByProps({ [filterItem.prop]: filterItem });
109
- }
110
- /**
111
- * Apply filters collection to extend existing one or override
112
- * @method
113
- * @param conditions - list of filters to apply
114
- */
115
- async filterByProps(conditions, override = false) {
116
- if (override) {
117
- this.filterCollection = {};
225
+ this.filterCollection = collection;
226
+ const { source, columns } = await this.getData();
227
+ const { defaultPrevented, detail } = this.emit('beforefilterapply', {
228
+ collection: this.filterCollection,
229
+ source,
230
+ columns,
231
+ filterItems: this.multiFilterItems,
232
+ });
233
+ if (defaultPrevented) {
234
+ return;
235
+ }
236
+ this.doFiltering(detail.collection, detail.source, detail.columns, detail.filterItems);
118
237
  }
119
- for (const prop in conditions) {
120
- const { type, value } = conditions[prop];
121
- if (type === 'none') {
122
- delete this.filterCollection[prop];
123
- }
124
- else {
125
- const filter = this.possibleFilterEntities[type];
126
- this.filterCollection[prop] = {
127
- filter,
128
- value,
129
- type,
238
+ async getData() {
239
+ return {
240
+ source: await this.revogrid.getSource(),
241
+ columns: await this.revogrid.getColumns(),
130
242
  };
131
- }
132
- }
133
- await this.runFiltering();
134
- }
135
- /**
136
- * Triggers grid filtering
137
- */
138
- async doFiltering(collection, items, columns) {
139
- const columnsToUpdate = [];
140
- // todo improvement: loop through collection of props
141
- columns.forEach(rgCol => {
142
- const column = Object.assign({}, rgCol);
143
- const hasFilter = collection[column.prop];
144
- if (column[FILTER_PROP] && !hasFilter) {
145
- delete column[FILTER_PROP];
146
- columnsToUpdate.push(column);
147
- }
148
- if (!column[FILTER_PROP] && hasFilter) {
149
- columnsToUpdate.push(column);
150
- column[FILTER_PROP] = true;
151
- }
152
- });
153
- const itemsToFilter = this.getRowFilter(items, collection);
154
- // check is filter event prevented
155
- const { defaultPrevented, detail } = this.emit('beforefiltertrimmed', { collection, itemsToFilter, source: items });
156
- if (defaultPrevented) {
157
- return;
158
- }
159
- // check is trimmed event prevented
160
- const isAddedEvent = await this.revogrid.addTrimmed(detail.itemsToFilter, FILTER_TRIMMED_TYPE);
161
- if (isAddedEvent.defaultPrevented) {
162
- return;
163
243
  }
164
- await this.revogrid.updateColumns(columnsToUpdate);
165
- this.emit('afterFilterApply');
166
- }
167
- async clearFiltering() {
168
- this.filterCollection = {};
169
- await this.runFiltering();
170
- }
171
- async runFiltering() {
172
- const { source, columns } = await this.getData();
173
- const { defaultPrevented, detail } = this.emit('beforefilterapply', { collection: this.filterCollection, source, columns });
174
- if (defaultPrevented) {
175
- return;
244
+ getRowFilter(rows, filterItems) {
245
+ const propKeys = Object.keys(filterItems);
246
+ const trimmed = {};
247
+ let propFilterSatisfiedCount = 0;
248
+ let lastFilterResults = [];
249
+ // each rows
250
+ rows.forEach((model, rowIndex) => {
251
+ // working on all props
252
+ for (const prop of propKeys) {
253
+ const propFilters = filterItems[prop];
254
+ propFilterSatisfiedCount = 0;
255
+ lastFilterResults = [];
256
+ // testing each filter for a prop
257
+ for (const [filterIndex, filterData] of propFilters.entries()) {
258
+ // the filter LogicFunction based on the type
259
+ const filter = this.possibleFilterEntities[filterData.type];
260
+ // THE MAGIC OF FILTERING IS HERE
261
+ if (filterData.relation === 'or') {
262
+ lastFilterResults = [];
263
+ if (filter(model[prop], filterData.value)) {
264
+ continue;
265
+ }
266
+ propFilterSatisfiedCount++;
267
+ }
268
+ else {
269
+ // 'and' relation will need to know the next filter
270
+ // so we save this current filter to include it in the next filter
271
+ lastFilterResults.push(!filter(model[prop], filterData.value));
272
+ // check first if we have a filter on the next index to pair it with this current filter
273
+ const nextFilterData = propFilters[filterIndex + 1];
274
+ // stop the sequence if there is no next filter or if the next filter is not an 'and' relation
275
+ if (!nextFilterData || nextFilterData.relation !== 'and') {
276
+ // let's just continue since for sure propFilterSatisfiedCount cannot be satisfied
277
+ if (lastFilterResults.indexOf(true) === -1) {
278
+ lastFilterResults = [];
279
+ continue;
280
+ }
281
+ // we need to add all of the lastFilterResults since we need to satisfy all
282
+ propFilterSatisfiedCount += lastFilterResults.length;
283
+ lastFilterResults = [];
284
+ }
285
+ }
286
+ } // end of propFilters forEach
287
+ // add to the list of removed/trimmed rows of filter condition is satisfied
288
+ if (propFilterSatisfiedCount === propFilters.length)
289
+ trimmed[rowIndex] = true;
290
+ } // end of for-of propKeys
291
+ });
292
+ return trimmed;
176
293
  }
177
- this.doFiltering(detail.collection, detail.source, detail.columns);
178
- }
179
- async getData() {
180
- const source = await this.revogrid.getSource();
181
- const columns = await this.revogrid.getColumns();
182
- return {
183
- source,
184
- columns
185
- };
186
- }
187
- getRowFilter(rows, collection) {
188
- const trimmed = {};
189
- rows.forEach((model, rowIndex) => {
190
- for (const prop in collection) {
191
- const filterItem = collection[prop];
192
- const filter = filterItem.filter;
193
- if (!filter(model[prop], filterItem.value)) {
194
- trimmed[rowIndex] = true;
195
- }
196
- }
197
- });
198
- return trimmed;
199
- }
200
294
  }
295
+ //# 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":["import { h } from '@stencil/core';\nimport reduce from 'lodash/reduce';\n\nimport { BasePlugin } from '../base.plugin';\nimport { FILTER_PROP, isFilterBtn } from './filter.button';\nimport { MultiFilterItem } from './filter.pop';\nimport {\n filterEntities,\n filterNames,\n FilterType,\n filterTypes,\n} from './filter.service';\nimport { LogicFunction } from './filter.types';\nimport { ColumnProp, ColumnRegular, DataType } from '../../types/interfaces';\nimport { PluginProviders } from '../..';\n\ntype CustomFilter = {\n columnFilterType: string; // property defined in column filter: string/number/abstract/enum...etc\n name: string;\n func: LogicFunction;\n};\n\nexport type FilterCaptions = {\n title: string;\n save: string;\n reset: string;\n cancel: string;\n};\n\nexport type FilterLocalization = {\n captions: FilterCaptions;\n filterNames: Record<FilterType, string>;\n};\n\n/**\n * @typedef ColumnFilterConfig\n * @type {object}\n * @property {FilterCollection|undefined} collection - preserved filter data\n * @property {string[]|undefined} include - filters to be included, if defined everything else out of scope will be ignored\n * @property {Record<string, CustomFilter>|undefined} customFilters - hash map of {FilterType:CustomFilter}.\n * @property {FilterLocalization|undefined} localization - translation for filter popup captions.\n * @property {MultiFilterItem|undefined} multiFilterItems - data for multi filtering.\n * @property {boolean|undefined} disableDynamicFiltering - disables dynamic filtering.\n * A way to define your own filter types per column\n */\n/**\n * @internal\n */\nexport type ColumnFilterConfig = {\n collection?: FilterCollection;\n include?: string[];\n customFilters?: Record<string, CustomFilter>;\n filterProp?: string;\n localization?: FilterLocalization;\n multiFilterItems?: MultiFilterItem;\n disableDynamicFiltering?: boolean;\n};\ntype HeaderEvent = CustomEvent<ColumnRegular>;\ntype FilterCollectionItem = {\n filter: LogicFunction;\n type: FilterType;\n value?: any;\n};\n\nexport type FilterCollection = Record<ColumnProp, FilterCollectionItem>;\n\nexport const FILTER_TRIMMED_TYPE = 'filter';\nexport const FILTER_CONFIG_CHANGED_EVENT = 'filterconfigchanged';\n\nexport class FilterPlugin extends BasePlugin {\n private pop: HTMLRevogrFilterPanelElement;\n private filterCollection: FilterCollection = {};\n private multiFilterItems: MultiFilterItem = {};\n private possibleFilters: Record<string, string[]> = { ...filterTypes };\n private possibleFilterNames: Record<string, string> = { ...filterNames };\n private possibleFilterEntities: Record<string, LogicFunction> = {\n ...filterEntities,\n };\n private filterProp = FILTER_PROP;\n\n constructor(\n protected revogrid: HTMLRevoGridElement,\n providers: PluginProviders,\n uiid: string,\n config?: ColumnFilterConfig,\n ) {\n super(revogrid, providers);\n if (config) {\n this.initConfig(config);\n }\n\n const headerclick = (e: HeaderEvent) => this.headerclick(e);\n\n const aftersourceset = async () => {\n const filterCollectionProps = Object.keys(this.filterCollection);\n if (filterCollectionProps.length > 0) {\n // handle old way of filtering by reworking FilterCollection to new MultiFilterItem\n filterCollectionProps.forEach((prop, index) => {\n if (!this.multiFilterItems[prop]) {\n this.multiFilterItems[prop] = [\n {\n id: index,\n type: this.filterCollection[prop].type,\n value: this.filterCollection[prop].value,\n relation: 'and',\n },\n ];\n }\n });\n }\n await this.runFiltering();\n };\n this.addEventListener('headerclick', headerclick);\n this.addEventListener(\n FILTER_CONFIG_CHANGED_EVENT,\n ({ detail }: CustomEvent<ColumnFilterConfig | boolean>) => {\n if (!detail) {\n this.clearFiltering();\n return;\n }\n if (typeof detail === 'object') {\n this.initConfig(detail);\n }\n aftersourceset();\n },\n );\n this.addEventListener('aftersourceset', aftersourceset);\n this.addEventListener('filter', ({ detail }: CustomEvent) =>\n this.onFilterChange(detail),\n );\n\n const existingNodes = this.revogrid.registerVNode.filter((n) => n.$tag$ !== 'revogr-filter-panel');\n this.revogrid.registerVNode = [\n ...existingNodes,\n <revogr-filter-panel\n uuid={`filter-${uiid}`}\n filterItems={this.multiFilterItems}\n filterNames={this.possibleFilterNames}\n filterEntities={this.possibleFilterEntities}\n filterCaptions={config?.localization?.captions}\n onFilterChange={e => this.onFilterChange(e.detail)}\n disableDynamicFiltering={config?.disableDynamicFiltering}\n ref={e => (this.pop = e)}\n />,\n ];\n }\n\n private initConfig(config: ColumnFilterConfig) {\n if (config.multiFilterItems) {\n this.multiFilterItems = { ...config.multiFilterItems };\n }\n if (config.customFilters) {\n for (let cType in config.customFilters) {\n const cFilter = config.customFilters[cType];\n if (!this.possibleFilters[cFilter.columnFilterType]) {\n this.possibleFilters[cFilter.columnFilterType] = [];\n }\n this.possibleFilters[cFilter.columnFilterType].push(cType);\n this.possibleFilterEntities[cType] = cFilter.func;\n this.possibleFilterNames[cType] = cFilter.name;\n }\n }\n\n if (config.filterProp) {\n this.filterProp = config.filterProp;\n }\n\n /**\n * which filters has to be included/excluded\n * convinient way to exclude system filters\n */\n if (config.include) {\n const filters: Record<string, string[]> = {};\n\n for (let t in this.possibleFilters) {\n // validate filters, if appropriate function present\n const newTypes = this.possibleFilters[t].filter(\n f => config.include.indexOf(f) > -1,\n );\n if (newTypes.length) {\n filters[t] = newTypes;\n }\n }\n // if any valid filters provided show them\n if (Object.keys(filters).length > 0) {\n this.possibleFilters = filters;\n }\n }\n if (config.collection) {\n this.filterCollection = reduce(\n config.collection,\n (result: FilterCollection, item, prop) => {\n if (this.possibleFilterEntities[item.type]) {\n result[prop] = item;\n } else {\n console.warn(`${item.type} type is not found.`);\n }\n return result;\n },\n {},\n );\n }\n\n if (config.localization) {\n if (config.localization.filterNames) {\n Object.entries(config.localization.filterNames).forEach(([k, v]) => {\n if (this.possibleFilterNames[k] != void 0) {\n this.possibleFilterNames[k] = v;\n }\n });\n }\n }\n }\n\n private async headerclick(e: HeaderEvent) {\n const el = e.detail.originalEvent?.target as HTMLElement;\n if (!isFilterBtn(el)) {\n return;\n }\n e.preventDefault();\n\n // close if same\n const changes = await this.pop.getChanges();\n if (changes && changes?.prop === e.detail.prop) {\n this.pop.show();\n return;\n }\n\n // filter button clicked, open filter dialog\n const gridPos = this.revogrid.getBoundingClientRect();\n const buttonPos = el.getBoundingClientRect();\n const prop = e.detail.prop;\n this.pop.filterTypes = this.getColumnFilter(e.detail.filter);\n this.pop.show({\n ...this.filterCollection[prop],\n x: buttonPos.x - gridPos.x,\n y: buttonPos.y - gridPos.y + buttonPos.height,\n prop,\n });\n }\n\n private getColumnFilter(\n type?: boolean | string | string[],\n ): Record<string, string[]> {\n let filterType = 'string';\n if (!type) {\n return { [filterType]: this.possibleFilters[filterType] };\n }\n\n // if custom column filter\n if (this.isValidType(type)) {\n filterType = type;\n\n // if multiple filters applied\n } else if (typeof type === 'object' && type.length) {\n return type.reduce((r: Record<string, string[]>, multiType) => {\n if (this.isValidType(multiType)) {\n r[multiType] = this.possibleFilters[multiType];\n }\n return r;\n }, {});\n }\n return { [filterType]: this.possibleFilters[filterType] };\n }\n\n private isValidType(type: any): type is string {\n return !!(typeof type === 'string' && this.possibleFilters[type]);\n }\n\n // called on internal component change\n private async onFilterChange(filterItems: MultiFilterItem) {\n this.multiFilterItems = filterItems;\n this.runFiltering();\n }\n\n /**\n * Triggers grid filtering\n */\n async doFiltering(\n collection: FilterCollection,\n items: DataType[],\n columns: ColumnRegular[],\n filterItems: MultiFilterItem,\n ) {\n const columnsToUpdate: ColumnRegular[] = [];\n\n columns.forEach(rgCol => {\n const column = { ...rgCol };\n const hasFilter = filterItems[column.prop];\n if (column[this.filterProp] && !hasFilter) {\n delete column[this.filterProp];\n columnsToUpdate.push(column);\n }\n if (!column[this.filterProp] && hasFilter) {\n columnsToUpdate.push(column);\n column[this.filterProp] = true;\n }\n });\n const itemsToFilter = this.getRowFilter(items, filterItems);\n // check is filter event prevented\n const { defaultPrevented, detail } = this.emit('beforefiltertrimmed', {\n collection,\n itemsToFilter,\n source: items,\n filterItems,\n });\n if (defaultPrevented) {\n return;\n }\n\n // check is trimmed event prevented\n const isAddedEvent = await this.revogrid.addTrimmed(\n detail.itemsToFilter,\n FILTER_TRIMMED_TYPE,\n );\n if (isAddedEvent.defaultPrevented) {\n return;\n }\n\n // applies the hasFilter to the columns to show filter icon\n await this.revogrid.updateColumns(columnsToUpdate);\n this.emit('afterFilterApply');\n }\n\n async clearFiltering() {\n this.multiFilterItems = {};\n await this.runFiltering();\n }\n\n private async runFiltering() {\n const collection: FilterCollection = {};\n\n // handle old filterCollection to return the first filter only (if any) from multiFilterItems\n const filterProps = Object.keys(this.multiFilterItems);\n\n for (const prop of filterProps) {\n // check if we have any filter for a column\n if (this.multiFilterItems[prop].length > 0) {\n const firstFilterItem = this.multiFilterItems[prop][0];\n collection[prop] = {\n filter: filterEntities[firstFilterItem.type],\n type: firstFilterItem.type,\n value: firstFilterItem.value,\n };\n }\n }\n\n this.filterCollection = collection;\n\n const { source, columns } = await this.getData();\n const { defaultPrevented, detail } = this.emit('beforefilterapply', {\n collection: this.filterCollection,\n source,\n columns,\n filterItems: this.multiFilterItems,\n });\n if (defaultPrevented) {\n return;\n }\n this.doFiltering(\n detail.collection,\n detail.source,\n detail.columns,\n detail.filterItems,\n );\n }\n\n private async getData() {\n return {\n source: await this.revogrid.getSource(),\n columns: await this.revogrid.getColumns(),\n };\n }\n\n private getRowFilter(rows: DataType[], filterItems: MultiFilterItem) {\n const propKeys = Object.keys(filterItems);\n\n const trimmed: Record<number, boolean> = {};\n let propFilterSatisfiedCount = 0;\n let lastFilterResults: boolean[] = [];\n\n // each rows\n rows.forEach((model, rowIndex) => {\n // working on all props\n for (const prop of propKeys) {\n const propFilters = filterItems[prop];\n\n propFilterSatisfiedCount = 0;\n lastFilterResults = [];\n\n // testing each filter for a prop\n for (const [filterIndex, filterData] of propFilters.entries()) {\n // the filter LogicFunction based on the type\n const filter = this.possibleFilterEntities[filterData.type];\n\n // THE MAGIC OF FILTERING IS HERE\n if (filterData.relation === 'or') {\n lastFilterResults = [];\n if (filter(model[prop], filterData.value)) {\n continue;\n }\n propFilterSatisfiedCount++;\n } else {\n // 'and' relation will need to know the next filter\n // so we save this current filter to include it in the next filter\n lastFilterResults.push(!filter(model[prop], filterData.value));\n\n // check first if we have a filter on the next index to pair it with this current filter\n const nextFilterData = propFilters[filterIndex + 1];\n // stop the sequence if there is no next filter or if the next filter is not an 'and' relation\n if (!nextFilterData || nextFilterData.relation !== 'and') {\n // let's just continue since for sure propFilterSatisfiedCount cannot be satisfied\n if (lastFilterResults.indexOf(true) === -1) {\n lastFilterResults = [];\n continue;\n }\n\n // we need to add all of the lastFilterResults since we need to satisfy all\n propFilterSatisfiedCount += lastFilterResults.length;\n lastFilterResults = [];\n }\n }\n } // end of propFilters forEach\n\n // add to the list of removed/trimmed rows of filter condition is satisfied\n if (propFilterSatisfiedCount === propFilters.length)\n trimmed[rowIndex] = true;\n } // end of for-of propKeys\n });\n return trimmed;\n }\n}\n"]}