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,307 @@
1
+ /*!
2
+ * Built by LevelSkill.Pro
3
+ */
4
+ import { cropCellToMax, isHiddenStore, nextCell, SelectionStore } from "../store/index";
5
+ export const EMPTY_INDEX = -1;
6
+ export class SelectionStoreConnector {
7
+ constructor() {
8
+ // dirty flag required to cleanup whole store in case visibility of panels changed
9
+ this.dirty = false;
10
+ this.stores = {};
11
+ this.columnStores = {};
12
+ this.rowStores = {};
13
+ /**
14
+ * Helpers for data conversion
15
+ */
16
+ this.storesByType = {};
17
+ this.storesXToType = {};
18
+ this.storesYToType = {};
19
+ this.sections = [];
20
+ }
21
+ get focusedStore() {
22
+ var _a;
23
+ for (let y in this.stores) {
24
+ for (let x in this.stores[y]) {
25
+ const focused = (_a = this.stores[y][x]) === null || _a === void 0 ? void 0 : _a.store.get('focus');
26
+ if (focused) {
27
+ return {
28
+ entity: this.stores[y][x],
29
+ cell: focused,
30
+ position: {
31
+ x: parseInt(x, 10),
32
+ y: parseInt(y, 10),
33
+ },
34
+ };
35
+ }
36
+ }
37
+ }
38
+ return null;
39
+ }
40
+ get edit() {
41
+ var _a;
42
+ return (_a = this.focusedStore) === null || _a === void 0 ? void 0 : _a.entity.store.get('edit');
43
+ }
44
+ get focused() {
45
+ var _a;
46
+ return (_a = this.focusedStore) === null || _a === void 0 ? void 0 : _a.entity.store.get('focus');
47
+ }
48
+ get selectedRange() {
49
+ var _a;
50
+ return (_a = this.focusedStore) === null || _a === void 0 ? void 0 : _a.entity.store.get('range');
51
+ }
52
+ registerSection(e) {
53
+ if (!e) {
54
+ this.sections.length = 0;
55
+ // some elements removed, rebuild stores
56
+ this.dirty = true;
57
+ return;
58
+ }
59
+ if (this.sections.indexOf(e) === -1) {
60
+ this.sections.push(e);
61
+ }
62
+ }
63
+ // check if require to cleanup all stores
64
+ beforeUpdate() {
65
+ if (this.dirty) {
66
+ for (let y in this.stores) {
67
+ for (let x in this.stores[y]) {
68
+ this.stores[y][x].dispose();
69
+ }
70
+ }
71
+ this.dirty = false;
72
+ }
73
+ }
74
+ registerColumn(x, type) {
75
+ // if hidden just create store but no operations needed
76
+ if (isHiddenStore(x)) {
77
+ return new SelectionStore();
78
+ }
79
+ if (this.columnStores[x]) {
80
+ return this.columnStores[x];
81
+ }
82
+ this.columnStores[x] = new SelectionStore();
83
+ // build cross-linking type to position
84
+ this.storesByType[type] = x;
85
+ this.storesXToType[x] = type;
86
+ return this.columnStores[x];
87
+ }
88
+ registerRow(y, type) {
89
+ // if hidden just create store
90
+ if (isHiddenStore(y)) {
91
+ return new SelectionStore();
92
+ }
93
+ if (this.rowStores[y]) {
94
+ return this.rowStores[y];
95
+ }
96
+ this.rowStores[y] = new SelectionStore();
97
+ // build cross linking type to position
98
+ this.storesByType[type] = y;
99
+ this.storesYToType[y] = type;
100
+ return this.rowStores[y];
101
+ }
102
+ /**
103
+ * Cross store proxy, based on multiple dimensions
104
+ */
105
+ register({ x, y }) {
106
+ var _a, _b;
107
+ // if hidden just create store
108
+ if (isHiddenStore(x) || isHiddenStore(y)) {
109
+ return new SelectionStore();
110
+ }
111
+ if (!this.stores[y]) {
112
+ this.stores[y] = {};
113
+ }
114
+ if (this.stores[y][x]) {
115
+ // Store already registered. Do not register twice
116
+ return this.stores[y][x];
117
+ }
118
+ this.stores[y][x] = new SelectionStore();
119
+ // proxy update, column store trigger only range area
120
+ (_a = this.stores[y][x]) === null || _a === void 0 ? void 0 : _a.onChange('range', c => {
121
+ this.columnStores[x].setRangeArea(c);
122
+ this.rowStores[y].setRangeArea(c);
123
+ });
124
+ // clean up on remove
125
+ (_b = this.stores[y][x]) === null || _b === void 0 ? void 0 : _b.store.on('dispose', () => this.destroy(x, y));
126
+ return this.stores[y][x];
127
+ }
128
+ destroy(x, y) {
129
+ var _a, _b;
130
+ (_a = this.columnStores[x]) === null || _a === void 0 ? void 0 : _a.dispose();
131
+ (_b = this.rowStores[y]) === null || _b === void 0 ? void 0 : _b.dispose();
132
+ delete this.rowStores[y];
133
+ delete this.columnStores[x];
134
+ // clear x cross-link
135
+ if (this.storesXToType[x]) {
136
+ const type = this.storesXToType[x];
137
+ delete this.storesXToType[x];
138
+ delete this.storesByType[type];
139
+ }
140
+ // clear y cross-link
141
+ if (this.storesYToType[y]) {
142
+ const type = this.storesYToType[y];
143
+ delete this.storesYToType[y];
144
+ delete this.storesByType[type];
145
+ }
146
+ if (this.stores[y]) {
147
+ delete this.stores[y][x];
148
+ }
149
+ // clear empty rows
150
+ if (!Object.keys(this.stores[y] || {}).length) {
151
+ delete this.stores[y];
152
+ }
153
+ }
154
+ setEditByCell(storePos, editCell) {
155
+ this.focusByCell(storePos, editCell, editCell);
156
+ this.setEdit('');
157
+ }
158
+ /**
159
+ * Sets the next focus cell before the current one.
160
+ *
161
+ * @param focus - The cell to set as the next focus.
162
+ */
163
+ beforeNextFocusCell(focus) {
164
+ var _a;
165
+ // If there is no focused store, return early.
166
+ if (!this.focusedStore) {
167
+ return;
168
+ }
169
+ // Get the next store based on the current focus and the last cell.
170
+ const lastCell = this.focusedStore.entity.store.get('lastCell');
171
+ const next = lastCell && this.getNextStore(focus, this.focusedStore.position, lastCell);
172
+ // Set the next focus cell in the store.
173
+ (_a = next === null || next === void 0 ? void 0 : next.store) === null || _a === void 0 ? void 0 : _a.setNextFocus(Object.assign(Object.assign({}, focus), next.item));
174
+ }
175
+ focusByCell(storePos, start, end) {
176
+ const store = this.stores[storePos.y][storePos.x];
177
+ this.focus(store, { focus: start, end });
178
+ }
179
+ focus(store, { focus, end }) {
180
+ const currentStorePointer = this.getCurrentStorePointer(store);
181
+ if (!currentStorePointer) {
182
+ return null;
183
+ }
184
+ // check for the focus in nearby store/viewport
185
+ const lastCell = store.store.get('lastCell');
186
+ const next = lastCell && this.getNextStore(focus, currentStorePointer, lastCell);
187
+ // if next store present - update
188
+ if (next === null || next === void 0 ? void 0 : next.store) {
189
+ const item = Object.assign(Object.assign({}, focus), next.item);
190
+ this.focus(next.store, { focus: item, end: item });
191
+ return null;
192
+ }
193
+ if (lastCell) {
194
+ focus = cropCellToMax(focus, lastCell);
195
+ end = cropCellToMax(end, lastCell);
196
+ }
197
+ store.setFocus(focus, end);
198
+ return focus;
199
+ }
200
+ /**
201
+ * Retrieves the current store pointer based on the active store.
202
+ * Clears focus from all stores except the active one.
203
+ */
204
+ getCurrentStorePointer(store) {
205
+ let currentStorePointer;
206
+ // Iterate through all stores
207
+ for (let y in this.stores) {
208
+ for (let x in this.stores[y]) {
209
+ const s = this.stores[y][x];
210
+ // Clear focus from stores other than the active one
211
+ if (s !== store) {
212
+ s.clearFocus();
213
+ }
214
+ else {
215
+ // Update the current store pointer with the active store coordinates
216
+ currentStorePointer = {
217
+ x: parseInt(x, 10),
218
+ y: parseInt(y, 10)
219
+ };
220
+ }
221
+ }
222
+ }
223
+ return currentStorePointer;
224
+ }
225
+ /**
226
+ * Retrieves the next store based on the focus cell and current store pointer.
227
+ * If the next store exists, returns an object with the next store and the item in the new store.
228
+ * If the next store does not exist, returns null.
229
+ */
230
+ getNextStore(focus, currentStorePointer, lastCell) {
231
+ // item in new store
232
+ const nextItem = nextCell(focus, lastCell);
233
+ let nextStore;
234
+ if (nextItem) {
235
+ Object.entries(nextItem).forEach(([type, nextItemCoord]) => {
236
+ let stores;
237
+ switch (type) {
238
+ case 'x':
239
+ // Get the X stores for the current Y coordinate of the current store pointer
240
+ stores = this.getXStores(currentStorePointer.y);
241
+ break;
242
+ case 'y':
243
+ // Get the Y stores for the current X coordinate of the current store pointer
244
+ stores = this.getYStores(currentStorePointer.x);
245
+ break;
246
+ }
247
+ // Get the next store based on the item in the new store
248
+ if (nextItemCoord >= 0) {
249
+ nextStore = stores[++currentStorePointer[type]];
250
+ }
251
+ else {
252
+ nextStore = stores[--currentStorePointer[type]];
253
+ const nextLastCell = nextStore === null || nextStore === void 0 ? void 0 : nextStore.store.get('lastCell');
254
+ if (nextLastCell) {
255
+ nextItem[type] = nextLastCell[type] + nextItemCoord;
256
+ }
257
+ }
258
+ });
259
+ }
260
+ return {
261
+ store: nextStore,
262
+ item: nextItem,
263
+ };
264
+ }
265
+ clearAll() {
266
+ var _a;
267
+ for (let y in this.stores) {
268
+ for (let x in this.stores[y]) {
269
+ (_a = this.stores[y][x]) === null || _a === void 0 ? void 0 : _a.clearFocus();
270
+ }
271
+ }
272
+ }
273
+ setEdit(val) {
274
+ if (!this.focusedStore) {
275
+ return;
276
+ }
277
+ this.focusedStore.entity.setEdit(val);
278
+ }
279
+ /**
280
+ * Select all cells across all stores
281
+ */
282
+ selectAll() {
283
+ for (let y in this.stores) {
284
+ for (let x in this.stores[y]) {
285
+ const store = this.stores[y][x];
286
+ if (!store) {
287
+ continue;
288
+ }
289
+ const lastCell = store.store.get('lastCell');
290
+ if (lastCell) {
291
+ store.setRange({ x: 0, y: 0 }, { x: lastCell.x - 1, y: lastCell.y - 1 });
292
+ }
293
+ }
294
+ }
295
+ }
296
+ getXStores(y) {
297
+ return this.stores[y];
298
+ }
299
+ getYStores(x) {
300
+ const stores = {};
301
+ for (let i in this.stores) {
302
+ stores[i] = this.stores[i][x];
303
+ }
304
+ return stores;
305
+ }
306
+ }
307
+ //# sourceMappingURL=selection.store.connector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selection.store.connector.js","sourceRoot":"","sources":["../../src/services/selection.store.connector.ts"],"names":[],"mappings":"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","sourcesContent":["import { cropCellToMax, isHiddenStore, nextCell, SelectionStore } from '@store';\r\nimport type {\r\n MultiDimensionType,\r\n DimensionCols,\r\n DimensionRows,\r\n Cell,\r\n EditCellStore,\r\n RangeArea,\r\n} from '@type';\r\n\r\ntype StoreByDimension = Record<number, SelectionStore>;\r\ntype FocusedStore = {\r\n entity: SelectionStore;\r\n cell: Cell;\r\n position: Cell;\r\n};\r\n\r\ntype StoresMapping<T> = { [xOrY: number]: Partial<T> };\r\n\r\nexport const EMPTY_INDEX = -1;\r\n\r\nexport class SelectionStoreConnector {\r\n // dirty flag required to cleanup whole store in case visibility of panels changed\r\n private dirty = false;\r\n readonly stores: { [y: number]: { [x: number]: SelectionStore } } = {};\r\n\r\n readonly columnStores: StoreByDimension = {};\r\n readonly rowStores: { [y: number]: SelectionStore } = {};\r\n\r\n /**\r\n * Helpers for data conversion\r\n */\r\n readonly storesByType: Partial<Record<MultiDimensionType, number>> = {};\r\n readonly storesXToType: StoresMapping<DimensionCols> = {};\r\n readonly storesYToType: StoresMapping<DimensionRows> = {};\r\n\r\n get focusedStore(): FocusedStore | null {\r\n for (let y in this.stores) {\r\n for (let x in this.stores[y]) {\r\n const focused = this.stores[y][x]?.store.get('focus');\r\n if (focused) {\r\n return {\r\n entity: this.stores[y][x],\r\n cell: focused,\r\n position: {\r\n x: parseInt(x, 10),\r\n y: parseInt(y, 10),\r\n },\r\n };\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n get edit(): EditCellStore | null | undefined {\r\n return this.focusedStore?.entity.store.get('edit');\r\n }\r\n\r\n get focused(): Cell | null | undefined {\r\n return this.focusedStore?.entity.store.get('focus');\r\n }\r\n\r\n get selectedRange(): RangeArea | null | undefined {\r\n return this.focusedStore?.entity.store.get('range');\r\n }\r\n\r\n private readonly sections: Element[] = [];\r\n\r\n registerSection(e?: Element) {\r\n if (!e) {\r\n this.sections.length = 0;\r\n // some elements removed, rebuild stores\r\n this.dirty = true;\r\n return;\r\n }\r\n if (this.sections.indexOf(e) === -1) {\r\n this.sections.push(e);\r\n }\r\n }\r\n\r\n // check if require to cleanup all stores\r\n beforeUpdate() {\r\n if (this.dirty) {\r\n for (let y in this.stores) {\r\n for (let x in this.stores[y]) {\r\n this.stores[y][x].dispose();\r\n }\r\n }\r\n this.dirty = false;\r\n }\r\n }\r\n\r\n registerColumn(x: number, type: DimensionCols): SelectionStore {\r\n // if hidden just create store but no operations needed\r\n if (isHiddenStore(x)) {\r\n return new SelectionStore();\r\n }\r\n if (this.columnStores[x]) {\r\n return this.columnStores[x];\r\n }\r\n this.columnStores[x] = new SelectionStore();\r\n // build cross-linking type to position\r\n this.storesByType[type] = x;\r\n this.storesXToType[x] = type;\r\n return this.columnStores[x];\r\n }\r\n\r\n registerRow(y: number, type: DimensionRows): SelectionStore {\r\n // if hidden just create store\r\n if (isHiddenStore(y)) {\r\n return new SelectionStore();\r\n }\r\n if (this.rowStores[y]) {\r\n return this.rowStores[y];\r\n }\r\n this.rowStores[y] = new SelectionStore();\r\n // build cross linking type to position\r\n this.storesByType[type] = y;\r\n this.storesYToType[y] = type;\r\n return this.rowStores[y];\r\n }\r\n\r\n /**\r\n * Cross store proxy, based on multiple dimensions\r\n */\r\n register({ x, y }: Cell): SelectionStore {\r\n // if hidden just create store\r\n if (isHiddenStore(x) || isHiddenStore(y)) {\r\n return new SelectionStore();\r\n }\r\n if (!this.stores[y]) {\r\n this.stores[y] = {};\r\n }\r\n if (this.stores[y][x]) {\r\n // Store already registered. Do not register twice\r\n return this.stores[y][x];\r\n }\r\n this.stores[y][x] = new SelectionStore();\r\n // proxy update, column store trigger only range area\r\n this.stores[y][x]?.onChange('range', c => {\r\n this.columnStores[x].setRangeArea(c);\r\n this.rowStores[y].setRangeArea(c);\r\n });\r\n // clean up on remove\r\n this.stores[y][x]?.store.on('dispose', () => this.destroy(x, y));\r\n return this.stores[y][x];\r\n }\r\n\r\n private destroy(x: number, y: number) {\r\n this.columnStores[x]?.dispose();\r\n this.rowStores[y]?.dispose();\r\n\r\n delete this.rowStores[y];\r\n delete this.columnStores[x];\r\n // clear x cross-link\r\n if (this.storesXToType[x]) {\r\n const type = this.storesXToType[x];\r\n delete this.storesXToType[x];\r\n delete this.storesByType[type];\r\n }\r\n // clear y cross-link\r\n if (this.storesYToType[y]) {\r\n const type = this.storesYToType[y];\r\n delete this.storesYToType[y];\r\n delete this.storesByType[type];\r\n }\r\n if (this.stores[y]) {\r\n delete this.stores[y][x];\r\n }\r\n // clear empty rows\r\n if (!Object.keys(this.stores[y] || {}).length) {\r\n delete this.stores[y];\r\n }\r\n }\r\n\r\n setEditByCell<T extends Cell>(storePos: T, editCell: T) {\r\n this.focusByCell(storePos, editCell, editCell);\r\n this.setEdit('');\r\n }\r\n\r\n /**\r\n * Sets the next focus cell before the current one.\r\n * \r\n * @param focus - The cell to set as the next focus.\r\n */\r\n beforeNextFocusCell(focus: Cell) {\r\n // If there is no focused store, return early.\r\n if (!this.focusedStore) {\r\n return;\r\n }\r\n\r\n // Get the next store based on the current focus and the last cell.\r\n const lastCell = this.focusedStore.entity.store.get('lastCell');\r\n const next = lastCell && this.getNextStore(focus, this.focusedStore.position, lastCell);\r\n\r\n // Set the next focus cell in the store.\r\n next?.store?.setNextFocus({ ...focus, ...next.item });\r\n }\r\n\r\n focusByCell<T extends Cell>(storePos: T, start: T, end: T) {\r\n const store = this.stores[storePos.y][storePos.x];\r\n this.focus(store, { focus: start, end });\r\n }\r\n\r\n focus(store: SelectionStore, { focus, end }: { focus: Cell; end: Cell }) {\r\n const currentStorePointer = this.getCurrentStorePointer(store);\r\n if (!currentStorePointer) {\r\n return null;\r\n }\r\n\r\n // check for the focus in nearby store/viewport\r\n const lastCell = store.store.get('lastCell');\r\n const next = lastCell && this.getNextStore(focus, currentStorePointer, lastCell);\r\n\r\n // if next store present - update\r\n if (next?.store) {\r\n const item = { ...focus, ...next.item };\r\n this.focus(next.store, { focus: item, end: item });\r\n return null;\r\n }\r\n\r\n if (lastCell) {\r\n focus = cropCellToMax(focus, lastCell);\r\n end = cropCellToMax(end, lastCell); \r\n }\r\n store.setFocus(focus, end);\r\n return focus;\r\n }\r\n\r\n /**\r\n * Retrieves the current store pointer based on the active store.\r\n * Clears focus from all stores except the active one.\r\n */\r\n getCurrentStorePointer(store: SelectionStore) {\r\n let currentStorePointer: Cell | undefined;\r\n\r\n // Iterate through all stores\r\n for (let y in this.stores) {\r\n for (let x in this.stores[y]) {\r\n const s = this.stores[y][x];\r\n\r\n // Clear focus from stores other than the active one\r\n if (s !== store) {\r\n s.clearFocus();\r\n } else {\r\n // Update the current store pointer with the active store coordinates\r\n currentStorePointer = { \r\n x: parseInt(x, 10), \r\n y: parseInt(y, 10) \r\n };\r\n }\r\n }\r\n }\r\n\r\n return currentStorePointer;\r\n }\r\n\r\n /**\r\n * Retrieves the next store based on the focus cell and current store pointer.\r\n * If the next store exists, returns an object with the next store and the item in the new store.\r\n * If the next store does not exist, returns null.\r\n */\r\n getNextStore(\r\n focus: Cell,\r\n currentStorePointer: Cell,\r\n lastCell: Cell,\r\n ) {\r\n // item in new store\r\n const nextItem: Partial<Cell> | null = nextCell(focus, lastCell);\r\n\r\n let nextStore: SelectionStore | undefined;\r\n if (nextItem) {\r\n Object.entries(nextItem).forEach(([type, nextItemCoord]: [keyof Cell, number]) => {\r\n let stores;\r\n switch (type) {\r\n case 'x':\r\n // Get the X stores for the current Y coordinate of the current store pointer\r\n stores = this.getXStores(currentStorePointer.y);\r\n break;\r\n case 'y':\r\n // Get the Y stores for the current X coordinate of the current store pointer\r\n stores = this.getYStores(currentStorePointer.x);\r\n break;\r\n }\r\n\r\n // Get the next store based on the item in the new store\r\n if (nextItemCoord >= 0) {\r\n nextStore = stores[++currentStorePointer[type]];\r\n } else {\r\n nextStore = stores[--currentStorePointer[type]];\r\n const nextLastCell = nextStore?.store.get('lastCell');\r\n if (nextLastCell) {\r\n nextItem[type] = nextLastCell[type] + nextItemCoord;\r\n }\r\n }\r\n });\r\n }\r\n return {\r\n store: nextStore,\r\n item: nextItem,\r\n };\r\n }\r\n\r\n clearAll() {\r\n for (let y in this.stores) {\r\n for (let x in this.stores[y]) {\r\n this.stores[y][x]?.clearFocus();\r\n }\r\n }\r\n }\r\n\r\n setEdit(val?: string | boolean) {\r\n if (!this.focusedStore) {\r\n return;\r\n }\r\n this.focusedStore.entity.setEdit(val);\r\n }\r\n\r\n /**\r\n * Select all cells across all stores\r\n */\r\n selectAll() {\r\n for (let y in this.stores) {\r\n for (let x in this.stores[y]) {\r\n const store = this.stores[y][x];\r\n if (!store) {\r\n continue;\r\n }\r\n const lastCell = store.store.get('lastCell');\r\n if (lastCell) {\r\n store.setRange(\r\n { x: 0, y: 0 },\r\n { x: lastCell.x - 1, y: lastCell.y - 1 },\r\n );\r\n }\r\n }\r\n }\r\n }\r\n\r\n private getXStores(y: number) {\r\n return this.stores[y];\r\n }\r\n\r\n private getYStores(x: number) {\r\n const stores: { [p: number]: SelectionStore } = {};\r\n for (let i in this.stores) {\r\n stores[i] = this.stores[i][x];\r\n }\r\n return stores;\r\n }\r\n}\r\n"]}
@@ -0,0 +1,17 @@
1
+ /*!
2
+ * Built by LevelSkill.Pro
3
+ */
4
+ import reduce from "lodash/reduce";
5
+ import { columnTypes, rowTypes, ViewportStore } from "../store/index";
6
+ export default class ViewportProvider {
7
+ constructor() {
8
+ this.stores = reduce([...rowTypes, ...columnTypes], (sources, k) => {
9
+ sources[k] = new ViewportStore(k);
10
+ return sources;
11
+ }, {});
12
+ }
13
+ setViewport(type, data) {
14
+ this.stores[type].setViewport(data);
15
+ }
16
+ }
17
+ //# sourceMappingURL=viewport.provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewport.provider.js","sourceRoot":"","sources":["../../src/services/viewport.provider.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,eAAe,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAgC,aAAa,EAAE,MAAM,QAAQ,CAAC;AAI5F,MAAM,CAAC,OAAO,OAAO,gBAAgB;IAEnC;QACE,IAAI,CAAC,MAAM,GAAG,MAAM,CAClB,CAAC,GAAG,QAAQ,EAAE,GAAG,WAAW,CAAC,EAC7B,CAAC,OAAyC,EAAE,CAAqB,EAAE,EAAE;YACnE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;YAClC,OAAO,OAAO,CAAC;QACjB,CAAC,EACD,EAAE,CACwB,CAAC;IAC/B,CAAC;IAED,WAAW,CAAC,IAAwB,EAAE,IAA4B;QAChE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;CACF","sourcesContent":["import reduce from 'lodash/reduce';\r\nimport { columnTypes, rowTypes, type ViewportStoreCollection, ViewportStore } from '@store';\r\nimport type { MultiDimensionType, ViewportState } from '@type';\r\n\r\n\r\nexport default class ViewportProvider {\r\n readonly stores: ViewportStoreCollection;\r\n constructor() {\r\n this.stores = reduce(\r\n [...rowTypes, ...columnTypes],\r\n (sources: Partial<ViewportStoreCollection>, k: MultiDimensionType) => {\r\n sources[k] = new ViewportStore(k);\r\n return sources;\r\n },\r\n {},\r\n ) as ViewportStoreCollection;\r\n }\r\n\r\n setViewport(type: MultiDimensionType, data: Partial<ViewportState>) {\r\n this.stores[type].setViewport(data);\r\n }\r\n}\r\n"]}
@@ -0,0 +1,45 @@
1
+ /*!
2
+ * Built by LevelSkill.Pro
3
+ */
4
+ /**
5
+ * Todo:
6
+ * Refactor proxy plugin: when items changed outside proxy get recalculated
7
+ */
8
+ /**
9
+ * Proxy plugin for data source.
10
+ *
11
+ * This plugin is used keep sortint in the data source, even when trimming is applied sorting has to be preserved.
12
+ */
13
+ export const proxyPlugin = (store) => ({
14
+ /**
15
+ * Set the value of a property in the store.
16
+ * If the key is 'proxyItems' it will filter the items in the data source according to the new value.
17
+ * The new value should be an array of numbers representing the indexes of the items that should be visible.
18
+ * The method will return a new array of numbers with the indexes of the items that should be visible.
19
+ * The method will also update the 'items' property of the store with the new array.
20
+ */
21
+ set(k, newVal) {
22
+ if (k !== 'proxyItems') {
23
+ return;
24
+ }
25
+ /**
26
+ * Getting existing collection of items (trimmed and filtered)
27
+ * Mark indexes as visible
28
+ */
29
+ const oldItems = store.get('items').reduce((r, v) => {
30
+ r.add(v);
31
+ return r;
32
+ }, new Set());
33
+ /**
34
+ * Check if new values where present in items, keep filtering and trimming
35
+ */
36
+ const newItems = newVal.reduce((r, i) => {
37
+ if (oldItems.has(i)) {
38
+ r.push(i);
39
+ }
40
+ return r;
41
+ }, []);
42
+ store.set('items', newItems);
43
+ },
44
+ });
45
+ //# sourceMappingURL=data.proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.proxy.js","sourceRoot":"","sources":["../../../src/store/dataSource/data.proxy.ts"],"names":[],"mappings":"AAKA;;;GAGG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAwB,EAA0B,EAAE,CAAC,CAAC;IAChF;;;;;;OAMG;IACH,GAAG,CAAC,CAAC,EAAE,MAAM;QACX,IAAI,CAAC,KAAK,YAAY,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QACD;;;WAGG;QACH,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAS,EAAE,EAAE;YAC1D,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACT,OAAO,CAAC,CAAC;QACX,CAAC,EAAE,IAAI,GAAG,EAAU,CAAC,CAAC;QACtB;;WAEG;QACH,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAW,EAAE,CAAS,EAAE,EAAE;YACxD,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACZ,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC/B,CAAC;CACF,CAAC,CAAC","sourcesContent":["import { DSourceState } from '@store';\r\nimport type { Observable, PluginSubscribe } from '../../utils';\r\n\r\ntype State = DSourceState<any, any>;\r\n\r\n/**\r\n * Todo:\r\n * Refactor proxy plugin: when items changed outside proxy get recalculated\r\n */\r\n\r\n/**\r\n * Proxy plugin for data source.\r\n * \r\n * This plugin is used keep sortint in the data source, even when trimming is applied sorting has to be preserved.\r\n */\r\nexport const proxyPlugin = (store: Observable<State>): PluginSubscribe<State> => ({\r\n /**\r\n * Set the value of a property in the store.\r\n * If the key is 'proxyItems' it will filter the items in the data source according to the new value.\r\n * The new value should be an array of numbers representing the indexes of the items that should be visible.\r\n * The method will return a new array of numbers with the indexes of the items that should be visible.\r\n * The method will also update the 'items' property of the store with the new array.\r\n */\r\n set(k, newVal) {\r\n if (k !== 'proxyItems') {\r\n return;\r\n }\r\n /**\r\n * Getting existing collection of items (trimmed and filtered)\r\n * Mark indexes as visible\r\n */\r\n const oldItems = store.get('items').reduce((r, v: number) => {\r\n r.add(v);\r\n return r;\r\n }, new Set<number>());\r\n /**\r\n * Check if new values where present in items, keep filtering and trimming\r\n */\r\n const newItems = newVal.reduce((r: number[], i: number) => {\r\n if (oldItems.has(i)) {\r\n r.push(i);\r\n }\r\n return r;\r\n }, []);\r\n store.set('items', newItems);\r\n },\r\n});\r\n"]}
@@ -0,0 +1,144 @@
1
+ /*!
2
+ * Built by LevelSkill.Pro
3
+ */
4
+ import findIndex from "lodash/findIndex";
5
+ import range from "lodash/range";
6
+ import { createStore } from "@stencil/store";
7
+ import { trimmedPlugin } from "./trimmed.plugin";
8
+ import { setStore } from "../../utils";
9
+ import { proxyPlugin } from "./data.proxy";
10
+ /**
11
+ * Data store
12
+ * Manage the state of a data source and provide methods for updating, adding, and refreshing the data.
13
+ */
14
+ export class DataStore {
15
+ get store() {
16
+ return this.dataStore;
17
+ }
18
+ constructor(type, storeData) {
19
+ const store = (this.dataStore = createStore(Object.assign({ items: [], proxyItems: [], source: [], groupingDepth: 0, groups: {}, type, trimmed: {}, groupingCustomRenderer: undefined }, storeData)));
20
+ store.use(proxyPlugin(store));
21
+ store.use(trimmedPlugin(store));
22
+ }
23
+ /**
24
+ * full data source update
25
+ * @param source - data column/rgRow source
26
+ * @param grouping - grouping information if present
27
+ */
28
+ updateData(source, grouping, silent = false) {
29
+ // during full update we do drop trim
30
+ if (!silent) {
31
+ this.store.set('trimmed', {});
32
+ }
33
+ // clear items
34
+ this.store.set('items', []);
35
+ const items = range(0, (source === null || source === void 0 ? void 0 : source.length) || 0);
36
+ // set proxy first
37
+ setStore(this.store, {
38
+ source,
39
+ proxyItems: [...items],
40
+ });
41
+ // update data items
42
+ this.store.set('items', items);
43
+ // apply grouping if present
44
+ if (grouping) {
45
+ setStore(this.store, {
46
+ groupingDepth: grouping.depth,
47
+ groups: grouping.groups,
48
+ groupingCustomRenderer: grouping.customRenderer,
49
+ });
50
+ }
51
+ }
52
+ addTrimmed(some) {
53
+ let trimmed = this.store.get('trimmed');
54
+ trimmed = Object.assign(Object.assign({}, trimmed), some);
55
+ setStore(this.store, { trimmed });
56
+ }
57
+ setSourceData(items, mutate = true) {
58
+ setSourceByVirtualIndex(this.store, items, mutate);
59
+ }
60
+ // local data update
61
+ setData(input) {
62
+ const data = Object.assign({}, input);
63
+ setStore(this.store, data);
64
+ }
65
+ refresh() {
66
+ const source = this.store.get('source');
67
+ this.store.set('source', [...source]);
68
+ }
69
+ }
70
+ /**
71
+ * get physical index by virtual
72
+ * @param store - store to process
73
+ */
74
+ export function getPhysical(store, virtualIndex) {
75
+ const items = store.get('items');
76
+ return items[virtualIndex];
77
+ }
78
+ /**
79
+ * get all visible items
80
+ * @param store - store to process
81
+ */
82
+ export function getVisibleSourceItem(store) {
83
+ const source = store.get('source');
84
+ return store.get('items').map(v => source[v]);
85
+ }
86
+ /**
87
+ * get mapped item from source
88
+ * @param store - store to process
89
+ * @param virtualIndex - virtual index to process
90
+ */
91
+ export const getSourceItem = (store, virtualIndex) => {
92
+ const source = store.get('source');
93
+ return source[getSourcePhysicalIndex(store, virtualIndex)];
94
+ };
95
+ /**
96
+ * Get physical index from virtual index
97
+ */
98
+ export const getSourcePhysicalIndex = (store, virtualIndex) => {
99
+ const items = store.get('items');
100
+ return items[virtualIndex];
101
+ };
102
+ /**
103
+ * Apply silently item/model/row value to data source
104
+ * @param store - data source with changes
105
+ * @param modelByIndex - collection of rows/values with virtual indexes to setup/replace in store/data source
106
+ * @param mutate - if true, store will be mutated and whole viewport will be re-rendered
107
+ */
108
+ export function setSourceByVirtualIndex(store, modelByIndex, mutate = true) {
109
+ const items = store.get('items');
110
+ const source = store.get('source');
111
+ for (let virtualIndex in modelByIndex) {
112
+ const realIndex = items[virtualIndex];
113
+ const item = modelByIndex[virtualIndex];
114
+ source[realIndex] = item;
115
+ }
116
+ if (mutate) {
117
+ store.set('source', [...source]);
118
+ }
119
+ }
120
+ /**
121
+ * set item to source
122
+ * @param store - store to process
123
+ * @param modelByIndex - collection of rows with physical indexes to setup
124
+ * @param mutate - if true, store will be mutated and whole viewport will be re-rendered
125
+ */
126
+ export function setSourceByPhysicalIndex(store, modelByIndex, mutate = true) {
127
+ const source = store.get('source');
128
+ for (let index in modelByIndex) {
129
+ source[index] = modelByIndex[index];
130
+ }
131
+ if (mutate) {
132
+ store.set('source', [...source]);
133
+ }
134
+ }
135
+ export function setItems(store, items) {
136
+ store.set('items', items);
137
+ }
138
+ export function getSourceItemVirtualIndexByProp(store, prop) {
139
+ const items = store.get('items');
140
+ const source = store.get('source');
141
+ const physicalIndex = findIndex(source, { prop });
142
+ return items.indexOf(physicalIndex);
143
+ }
144
+ //# sourceMappingURL=data.store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.store.js","sourceRoot":"","sources":["../../../src/store/dataSource/data.store.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,kBAAkB,CAAC;AACzC,OAAO,KAAK,MAAM,cAAc,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAW,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAc,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AA6B3C;;;GAGG;AACH,MAAM,OAAO,SAAS;IAEpB,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IACD,YAAY,IAAQ,EAAE,SAA+B;QACnD,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,WAAW,iBACzC,KAAK,EAAE,EAAE,EACT,UAAU,EAAE,EAAE,EACd,MAAM,EAAE,EAAE,EACV,aAAa,EAAE,CAAC,EAChB,MAAM,EAAE,EAAE,EACV,IAAI,EACJ,OAAO,EAAE,EAAE,EACX,sBAAsB,EAAE,SAAS,IAC9B,SAAS,EACZ,CAAC,CAAC;QACJ,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9B,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACH,UAAU,CACR,MAAW,EACX,QAIC,EACD,MAAM,GAAG,KAAK;QAEd,qCAAqC;QACrC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAChC,CAAC;QACD,cAAc;QACd,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,EAAE,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,KAAI,CAAC,CAAC,CAAC;QAE5C,kBAAkB;QAClB,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;YACnB,MAAM;YACN,UAAU,EAAE,CAAC,GAAG,KAAK,CAAC;SACvB,CAAC,CAAC;QACH,oBAAoB;QACpB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC/B,4BAA4B;QAC5B,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE;gBACnB,aAAa,EAAE,QAAQ,CAAC,KAAK;gBAC7B,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,sBAAsB,EAAE,QAAQ,CAAC,cAAc;aAChD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,UAAU,CAAC,IAAsB;QAC/B,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACxC,OAAO,mCAAQ,OAAO,GAAK,IAAI,CAAE,CAAC;QAClC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,aAAa,CAAC,KAA0B,EAAE,MAAM,GAAG,IAAI;QACrD,uBAAuB,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;IAED,oBAAoB;IACpB,OAAO,CAAC,KAAmC;QACzC,MAAM,IAAI,qBACL,KAAK,CACT,CAAC;QACF,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO;QACL,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IACxC,CAAC;CACF;AACD;;;GAGG;AACH,MAAM,UAAU,WAAW,CACzB,KAAyC,EACzC,YAAoB;IAEpB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACjC,OAAO,KAAK,CAAC,YAAY,CAAC,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAyC;IAEzC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnC,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,KAAuC,EACvC,YAAoB,EACpB,EAAE;IACF,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnC,OAAO,MAAM,CAAC,sBAAsB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;AAC7D,CAAC,CAAC;AACF;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,KAAuC,EACvC,YAAoB,EACpB,EAAE;IACF,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACjC,OAAO,KAAK,CAAC,YAAY,CAAC,CAAC;AAC7B,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACrC,KAAuC,EACvC,YAA2C,EAC3C,MAAM,GAAG,IAAI;IAEb,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEnC,KAAK,IAAI,YAAY,IAAI,YAAY,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;QACxC,MAAM,CAAC,SAAS,CAAC,GAAG,IAAS,CAAC;IAChC,CAAC;IACD,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IACnC,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACtC,KAAuC,EACvC,YAA+B,EAC/B,MAAM,GAAG,IAAI;IAEb,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnC,KAAK,IAAI,KAAK,IAAI,YAAY,EAAE,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,MAAM,EAAE,CAAC;QACX,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IACnC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CACtB,KAAuC,EACvC,KAAe;IAEf,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,KAAyC,EACzC,IAAgB;IAEhB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,OAAO,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AACtC,CAAC","sourcesContent":["import findIndex from 'lodash/findIndex';\r\nimport range from 'lodash/range';\r\nimport { createStore } from '@stencil/store';\r\n\r\nimport { Trimmed, trimmedPlugin } from './trimmed.plugin';\r\nimport { setStore, Observable } from '../../utils';\r\nimport { proxyPlugin } from './data.proxy';\r\nimport type { GroupLabelTemplateFunc } from '../../plugins/groupingRow/grouping.row.types';\r\nimport type {\r\n DimensionRows,\r\n DimensionCols,\r\n ColumnProperties,\r\n ColumnGrouping,\r\n ColumnRegular,\r\n DataType,\r\n DataSourceState,\r\n ColumnProp,\r\n} from '@type';\r\n\r\nexport interface Group extends ColumnProperties {\r\n name: string;\r\n children: (ColumnGrouping | ColumnRegular)[];\r\n // physical indexes to start from\r\n indexes: number[];\r\n}\r\nexport type Groups = Record<number, Group[]>;\r\nexport type GDataType = DataType | ColumnRegular;\r\nexport type GDimension = DimensionRows | DimensionCols;\r\nexport type DSourceState<\r\n T1 extends GDataType,\r\n T2 extends GDimension,\r\n> = DataSourceState<T1, T2> & {\r\n groupingCustomRenderer?: GroupLabelTemplateFunc | null;\r\n};\r\n\r\n/**\r\n * Data store\r\n * Manage the state of a data source and provide methods for updating, adding, and refreshing the data.\r\n */\r\nexport class DataStore<T extends GDataType, ST extends GDimension> {\r\n private readonly dataStore: Observable<DSourceState<T, ST>>;\r\n get store(): Observable<DSourceState<T, ST>> {\r\n return this.dataStore;\r\n }\r\n constructor(type: ST, storeData?: DSourceState<T, ST>) {\r\n const store = (this.dataStore = createStore<DSourceState<T, ST>>({\r\n items: [],\r\n proxyItems: [],\r\n source: [],\r\n groupingDepth: 0,\r\n groups: {},\r\n type,\r\n trimmed: {},\r\n groupingCustomRenderer: undefined,\r\n ...storeData,\r\n }));\r\n store.use(proxyPlugin(store));\r\n store.use(trimmedPlugin(store));\r\n }\r\n\r\n /**\r\n * full data source update\r\n * @param source - data column/rgRow source\r\n * @param grouping - grouping information if present\r\n */\r\n updateData(\r\n source: T[],\r\n grouping?: {\r\n depth: number;\r\n groups?: Groups;\r\n customRenderer?: GroupLabelTemplateFunc;\r\n },\r\n silent = false,\r\n ) {\r\n // during full update we do drop trim\r\n if (!silent) {\r\n this.store.set('trimmed', {});\r\n }\r\n // clear items\r\n this.store.set('items', []);\r\n const items = range(0, source?.length || 0);\r\n\r\n // set proxy first\r\n setStore(this.store, {\r\n source,\r\n proxyItems: [...items],\r\n });\r\n // update data items\r\n this.store.set('items', items);\r\n // apply grouping if present\r\n if (grouping) {\r\n setStore(this.store, {\r\n groupingDepth: grouping.depth,\r\n groups: grouping.groups,\r\n groupingCustomRenderer: grouping.customRenderer,\r\n });\r\n }\r\n }\r\n\r\n addTrimmed(some: Partial<Trimmed>) {\r\n let trimmed = this.store.get('trimmed');\r\n trimmed = { ...trimmed, ...some };\r\n setStore(this.store, { trimmed });\r\n }\r\n\r\n setSourceData(items: Record<number, any>, mutate = true) {\r\n setSourceByVirtualIndex(this.store, items, mutate);\r\n }\r\n\r\n // local data update\r\n setData(input: Partial<DSourceState<T, ST>>) {\r\n const data: Partial<DSourceState<T, ST>> = {\r\n ...input,\r\n };\r\n setStore(this.store, data);\r\n }\r\n\r\n refresh() {\r\n const source = this.store.get('source');\r\n this.store.set('source', [...source]);\r\n }\r\n}\r\n/**\r\n * get physical index by virtual\r\n * @param store - store to process\r\n */\r\nexport function getPhysical(\r\n store: Observable<DSourceState<any, any>>,\r\n virtualIndex: number,\r\n) {\r\n const items = store.get('items');\r\n return items[virtualIndex];\r\n}\r\n\r\n/**\r\n * get all visible items\r\n * @param store - store to process\r\n */\r\nexport function getVisibleSourceItem(\r\n store: Observable<DSourceState<any, any>>,\r\n) {\r\n const source = store.get('source');\r\n return store.get('items').map(v => source[v]);\r\n}\r\n\r\n/**\r\n * get mapped item from source\r\n * @param store - store to process\r\n * @param virtualIndex - virtual index to process\r\n */\r\nexport const getSourceItem = <T1 extends GDataType, T2 extends GDimension>(\r\n store: Observable<DSourceState<T1, T2>>,\r\n virtualIndex: number,\r\n) => {\r\n const source = store.get('source');\r\n return source[getSourcePhysicalIndex(store, virtualIndex)];\r\n};\r\n/**\r\n * Get physical index from virtual index\r\n */\r\nexport const getSourcePhysicalIndex = <T1 extends GDataType, T2 extends GDimension>(\r\n store: Observable<DSourceState<T1, T2>>,\r\n virtualIndex: number,\r\n) => {\r\n const items = store.get('items');\r\n return items[virtualIndex];\r\n};\r\n\r\n/**\r\n * Apply silently item/model/row value to data source\r\n * @param store - data source with changes\r\n * @param modelByIndex - collection of rows/values with virtual indexes to setup/replace in store/data source\r\n * @param mutate - if true, store will be mutated and whole viewport will be re-rendered\r\n */\r\nexport function setSourceByVirtualIndex<T extends GDataType>(\r\n store: Observable<DSourceState<T, any>>,\r\n modelByIndex: Record<number, T | undefined>,\r\n mutate = true,\r\n) {\r\n const items = store.get('items');\r\n const source = store.get('source');\r\n\r\n for (let virtualIndex in modelByIndex) {\r\n const realIndex = items[virtualIndex];\r\n const item = modelByIndex[virtualIndex];\r\n source[realIndex] = item as T;\r\n }\r\n if (mutate) {\r\n store.set('source', [...source]);\r\n }\r\n}\r\n\r\n/**\r\n * set item to source\r\n * @param store - store to process\r\n * @param modelByIndex - collection of rows with physical indexes to setup\r\n * @param mutate - if true, store will be mutated and whole viewport will be re-rendered\r\n */\r\nexport function setSourceByPhysicalIndex<T extends GDataType>(\r\n store: Observable<DSourceState<T, any>>,\r\n modelByIndex: Record<number, T>,\r\n mutate = true,\r\n) {\r\n const source = store.get('source');\r\n for (let index in modelByIndex) {\r\n source[index] = modelByIndex[index];\r\n }\r\n if (mutate) {\r\n store.set('source', [...source]);\r\n }\r\n}\r\n\r\nexport function setItems<T extends GDataType>(\r\n store: Observable<DSourceState<T, any>>,\r\n items: number[],\r\n) {\r\n store.set('items', items);\r\n}\r\n\r\nexport function getSourceItemVirtualIndexByProp(\r\n store: Observable<DSourceState<any, any>>,\r\n prop: ColumnProp,\r\n) {\r\n const items = store.get('items');\r\n const source = store.get('source');\r\n const physicalIndex = findIndex(source, { prop });\r\n return items.indexOf(physicalIndex);\r\n}\r\n"]}
@@ -0,0 +1,7 @@
1
+ /*!
2
+ * Built by LevelSkill.Pro
3
+ */
4
+ export * from './data.proxy';
5
+ export * from './data.store';
6
+ export * from './trimmed.plugin';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/store/dataSource/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC","sourcesContent":["export * from './data.proxy';\r\nexport * from './data.store';\r\nexport * from './trimmed.plugin';\r\n"]}
@@ -0,0 +1,34 @@
1
+ /*!
2
+ * Built by LevelSkill.Pro
3
+ */
4
+ /**
5
+ * Hide items from main collection
6
+ * But keep them in store
7
+ */
8
+ export const trimmedPlugin = (store) => ({
9
+ set(k, newVal) {
10
+ switch (k) {
11
+ case 'trimmed': {
12
+ // full sorted items list
13
+ const proxy = store.get('proxyItems');
14
+ const trimmed = gatherTrimmedItems(newVal);
15
+ // filter our physical indexes which are not trimmed
16
+ const newItems = proxy.filter(v => !trimmed[v]);
17
+ // set trimmed items in store
18
+ store.set('items', newItems);
19
+ break;
20
+ }
21
+ }
22
+ },
23
+ });
24
+ export function gatherTrimmedItems(trimmedItems) {
25
+ const trimmed = {};
26
+ for (let trimmedKey in trimmedItems) {
27
+ // trimmed overweight not trimmed
28
+ for (let t in trimmedItems[trimmedKey]) {
29
+ trimmed[t] = trimmed[t] || trimmedItems[trimmedKey][t];
30
+ }
31
+ }
32
+ return trimmed;
33
+ }
34
+ //# sourceMappingURL=trimmed.plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trimmed.plugin.js","sourceRoot":"","sources":["../../../src/store/dataSource/trimmed.plugin.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,KAAuC,EACA,EAAE,CAAC,CAAC;IAC3C,GAAG,CAAC,CAAC,EAAE,MAAM;QACX,QAAQ,CAAC,EAAE,CAAC;YACV,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,yBAAyB;gBACzB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBACtC,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAiB,CAAC,CAAC;gBAEtD,oDAAoD;gBACpD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEhD,6BAA6B;gBAC7B,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBAC7B,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;CACF,CAAC,CAAC;AAEH,MAAM,UAAU,kBAAkB,CAAC,YAAqB;IACtD,MAAM,OAAO,GAAkB,EAAE,CAAC;IAElC,KAAK,IAAI,UAAU,IAAI,YAAY,EAAE,CAAC;QACpC,iCAAiC;QACjC,KAAK,IAAI,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;YACvC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC","sourcesContent":["import { Observable, PluginSubscribe } from '../../utils';\r\nimport { DSourceState, GDataType } from './data.store';\r\n\r\nexport type TrimmedEntity = { [physicalIndexInSource: number]: boolean };\r\nexport type Trimmed = Record<string, TrimmedEntity>;\r\n\r\n/**\r\n * Hide items from main collection\r\n * But keep them in store\r\n */\r\nexport const trimmedPlugin = <T extends GDataType>(\r\n store: Observable<DSourceState<T, any>>,\r\n): PluginSubscribe<DSourceState<T, any>> => ({\r\n set(k, newVal) {\r\n switch (k) {\r\n case 'trimmed': {\r\n // full sorted items list\r\n const proxy = store.get('proxyItems');\r\n const trimmed = gatherTrimmedItems(newVal as Trimmed);\r\n\r\n // filter our physical indexes which are not trimmed\r\n const newItems = proxy.filter(v => !trimmed[v]);\r\n\r\n // set trimmed items in store\r\n store.set('items', newItems);\r\n break;\r\n }\r\n }\r\n },\r\n});\r\n\r\nexport function gatherTrimmedItems(trimmedItems: Trimmed) {\r\n const trimmed: TrimmedEntity = {};\r\n\r\n for (let trimmedKey in trimmedItems) {\r\n // trimmed overweight not trimmed\r\n for (let t in trimmedItems[trimmedKey]) {\r\n trimmed[t] = trimmed[t] || trimmedItems[trimmedKey][t];\r\n }\r\n }\r\n return trimmed;\r\n}\r\n"]}