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,224 @@
1
+ /*!
2
+ * Built by LevelSkill.Pro
3
+ */
4
+ import debounce from "lodash/debounce";
5
+ import { h } from "@stencil/core";
6
+ import { CELL_HANDLER_CLASS, MOBILE_CLASS } from "../../utils/consts";
7
+ import { collectModelsOfRange, getCell, getCurrentCell, isAfterLast, } from "./selection.utils";
8
+ import { getRange } from "../../store/index";
9
+ import { getPropertyFromEvent } from "../../utils/events";
10
+ export class AutoFillService {
11
+ constructor(sv) {
12
+ this.sv = sv;
13
+ this.autoFillType = null;
14
+ this.autoFillInitial = null;
15
+ this.autoFillStart = null;
16
+ this.autoFillLast = null;
17
+ }
18
+ /**
19
+ * Render autofill box
20
+ * @param range
21
+ * @param selectionFocus
22
+ */
23
+ renderAutofill(range, selectionFocus, isMobile = false) {
24
+ let handlerStyle;
25
+ if (range) {
26
+ handlerStyle = getCell(range, this.sv.dimensionRow.state, this.sv.dimensionCol.state);
27
+ }
28
+ else {
29
+ handlerStyle = getCell(Object.assign(Object.assign({}, selectionFocus), { x1: selectionFocus.x, y1: selectionFocus.y }), this.sv.dimensionRow.state, this.sv.dimensionCol.state);
30
+ }
31
+ return (h("div", { class: {
32
+ [CELL_HANDLER_CLASS]: true,
33
+ [MOBILE_CLASS]: isMobile,
34
+ }, style: {
35
+ left: `${handlerStyle.right}px`,
36
+ top: `${handlerStyle.bottom}px`,
37
+ }, onMouseDown: (e) => this.autoFillHandler(e), onTouchStart: (e) => this.autoFillHandler(e) }));
38
+ }
39
+ autoFillHandler(e, type = "AutoFill" /* AutoFillType.autoFill */) {
40
+ let target = null;
41
+ if (e.target instanceof Element) {
42
+ target = e.target;
43
+ }
44
+ if (!target) {
45
+ return;
46
+ }
47
+ this.selectionStart(target, this.sv.getData(), type);
48
+ e.preventDefault();
49
+ }
50
+ get isAutoFill() {
51
+ return !!this.autoFillType;
52
+ }
53
+ /**
54
+ * Process mouse move events
55
+ */
56
+ selectionMouseMove(e) {
57
+ // initiate mouse move debounce if not present
58
+ if (!this.onMouseMoveAutofill) {
59
+ this.onMouseMoveAutofill = debounce((e, data) => this.doAutofillMouseMove(e, data), 5);
60
+ }
61
+ if (this.isAutoFill) {
62
+ this.onMouseMoveAutofill(e, this.sv.getData());
63
+ }
64
+ }
65
+ getFocus(focus, range) {
66
+ // there was an issue that it was taking last cell from range but focus was out
67
+ if (!focus && range) {
68
+ focus = { x: range.x, y: range.y };
69
+ }
70
+ return focus || null;
71
+ }
72
+ /**
73
+ * Autofill logic:
74
+ * on mouse move apply based on previous direction (if present)
75
+ */
76
+ doAutofillMouseMove(event, data) {
77
+ // if no initial - not started
78
+ if (!this.autoFillInitial) {
79
+ return;
80
+ }
81
+ const x = getPropertyFromEvent(event, 'clientX', MOBILE_CLASS);
82
+ const y = getPropertyFromEvent(event, 'clientY', MOBILE_CLASS);
83
+ // skip touch
84
+ if (x === null || y === null) {
85
+ return;
86
+ }
87
+ const current = getCurrentCell({ x, y }, data);
88
+ // first time or direction equal to start(same as first time)
89
+ if (!this.autoFillLast) {
90
+ if (!this.autoFillLast) {
91
+ this.autoFillLast = this.autoFillStart;
92
+ }
93
+ }
94
+ // check if not the latest, if latest - do nothing
95
+ if (isAfterLast(current, data.lastCell)) {
96
+ return;
97
+ }
98
+ this.autoFillLast = current;
99
+ const isSame = current.x === this.autoFillInitial.x &&
100
+ current.y === this.autoFillInitial.y;
101
+ // if same as initial - clear
102
+ if (isSame) {
103
+ this.sv.setTempRange(null);
104
+ }
105
+ else {
106
+ const area = getRange(this.autoFillInitial, this.autoFillLast);
107
+ this.sv.setTempRange({
108
+ area,
109
+ type: this.autoFillType,
110
+ });
111
+ }
112
+ }
113
+ /**
114
+ * Range selection started
115
+ * Mode @param type:
116
+ * Can be triggered from MouseDown selection on element
117
+ * Or can be triggered on corner square drag
118
+ */
119
+ selectionStart(target, data, type = "Selection" /* AutoFillType.selection */) {
120
+ /** Get cell by autofill element */
121
+ const { top, left } = target.getBoundingClientRect();
122
+ this.autoFillInitial = this.getFocus(data.focus, data.range);
123
+ this.autoFillType = type;
124
+ this.autoFillStart = getCurrentCell({ x: left, y: top }, data);
125
+ }
126
+ /**
127
+ * Clear current range selection on mouse up and mouse leave events
128
+ */
129
+ clearAutoFillSelection(focus, oldRange) {
130
+ // If autofill was active, apply autofill values
131
+ if (this.autoFillInitial) {
132
+ // Fetch latest focus
133
+ this.autoFillInitial = this.getFocus(focus, oldRange);
134
+ // Apply range data if autofill mode is active
135
+ if (this.autoFillType === "AutoFill" /* AutoFillType.autoFill */) {
136
+ const range = getRange(this.autoFillInitial, this.autoFillLast);
137
+ // If range is present, apply data
138
+ if (range) {
139
+ const { defaultPrevented: stopApply, detail: { range: newRange }, } = this.sv.clearRangeDataApply({
140
+ range,
141
+ });
142
+ // If data apply was not prevented, apply new range
143
+ if (!stopApply && oldRange) {
144
+ this.applyRangeWithData(newRange, oldRange);
145
+ }
146
+ else {
147
+ // If data apply was prevented, clear temporary range
148
+ this.sv.setTempRange(null);
149
+ }
150
+ }
151
+ }
152
+ else {
153
+ // If not autofill mode, apply range only
154
+ this.applyRangeOnly(this.autoFillInitial, this.autoFillLast);
155
+ }
156
+ }
157
+ // Reset autofill state
158
+ this.resetAutoFillState();
159
+ }
160
+ /**
161
+ * Reset autofill state
162
+ */
163
+ resetAutoFillState() {
164
+ this.autoFillType = null;
165
+ this.autoFillInitial = null;
166
+ this.autoFillLast = null;
167
+ this.autoFillStart = null;
168
+ }
169
+ /**
170
+ * Trigger range apply events and handle responses
171
+ */
172
+ onRangeApply(newData, newRange, oldRange, copy = false, clear = false) {
173
+ this.sv.rangeDataApply({
174
+ data: newData,
175
+ models: collectModelsOfRange(newData, this.sv.dataStore),
176
+ type: this.sv.dataStore.get('type'),
177
+ oldRange,
178
+ newRange,
179
+ previousModels: null,
180
+ copy,
181
+ clearByKeyboard: clear,
182
+ });
183
+ this.sv.setRange(newRange);
184
+ }
185
+ /** Apply range and copy data during range application */
186
+ applyRangeWithData(newRange, rangeToCopy) {
187
+ const rangeData = {
188
+ type: this.sv.dataStore.get('type'),
189
+ colType: this.sv.columnService.type,
190
+ newData: {},
191
+ mapping: {},
192
+ newRange,
193
+ oldRange: rangeToCopy,
194
+ };
195
+ const { mapping, changed } = this.sv.columnService.getRangeData(rangeData, this.sv.columnService.columns);
196
+ rangeData.newData = changed;
197
+ rangeData.mapping = mapping;
198
+ let e = this.sv.selectionChanged(rangeData);
199
+ // if default prevented - clear range
200
+ if (e.defaultPrevented) {
201
+ this.sv.setTempRange(null);
202
+ return;
203
+ }
204
+ e = this.sv.rangeCopy(rangeData);
205
+ if (e.defaultPrevented) {
206
+ this.sv.setRange(newRange);
207
+ return;
208
+ }
209
+ this.onRangeApply(rangeData.newData, newRange, rangeToCopy);
210
+ }
211
+ /**
212
+ * Update range selection only,
213
+ * no data change (mouse selection)
214
+ */
215
+ applyRangeOnly(start, end) {
216
+ // no changes to apply
217
+ if (!start || !end) {
218
+ return;
219
+ }
220
+ const newRange = getRange(start, end);
221
+ this.sv.setRange(newRange);
222
+ }
223
+ }
224
+ //# sourceMappingURL=autofill.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autofill.service.js","sourceRoot":"","sources":["../../../src/components/overlay/autofill.service.tsx"],"names":[],"mappings":"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","sourcesContent":["import debounce from 'lodash/debounce';\r\nimport { DebouncedFunc } from 'lodash';\r\n\r\nimport { h } from '@stencil/core';\r\nimport { CELL_HANDLER_CLASS, MOBILE_CLASS } from '../../utils/consts';\r\nimport {\r\n collectModelsOfRange,\r\n EventData,\r\n getCell,\r\n getCurrentCell,\r\n isAfterLast,\r\n} from './selection.utils';\r\nimport { DSourceState, getRange } from '@store';\r\nimport ColumnService from '../data/column.service';\r\nimport { getPropertyFromEvent } from '../../utils/events';\r\nimport {\r\n DataLookup,\r\n DataType,\r\n DimensionSettingsState,\r\n TempRange,\r\n ChangedRange,\r\n BeforeRangeSaveDataDetails,\r\n RangeArea,\r\n Cell,\r\n DimensionRows,\r\n Nullable,\r\n} from '@type';\r\nimport { Observable } from '../../utils';\r\n\r\ntype Config = {\r\n dimensionRow: Observable<DimensionSettingsState>;\r\n dimensionCol: Observable<DimensionSettingsState>;\r\n columnService: ColumnService;\r\n dataStore: Observable<DSourceState<DataType, DimensionRows>>;\r\n\r\n setTempRange(e: Nullable<TempRange> | null): Event | null;\r\n selectionChanged(e: ChangedRange): Event;\r\n rangeCopy(e: ChangedRange): Event;\r\n rangeDataApply(e: BeforeRangeSaveDataDetails): CustomEvent;\r\n setRange(e: RangeArea | null): boolean;\r\n clearRangeDataApply(e: { range: RangeArea }): CustomEvent<{\r\n range: RangeArea;\r\n }>;\r\n\r\n getData(): any;\r\n};\r\n\r\nconst enum AutoFillType {\r\n selection = 'Selection',\r\n autoFill = 'AutoFill',\r\n}\r\n\r\nexport class AutoFillService {\r\n private autoFillType: AutoFillType | null = null;\r\n private autoFillInitial: Cell | null = null;\r\n private autoFillStart: Cell | null = null;\r\n private autoFillLast: Cell | null = null;\r\n\r\n private onMouseMoveAutofill: DebouncedFunc<\r\n (e: MouseEvent | TouchEvent, data: EventData) => void\r\n >;\r\n\r\n constructor(private sv: Config) {}\r\n\r\n /**\r\n * Render autofill box\r\n * @param range\r\n * @param selectionFocus\r\n */\r\n renderAutofill(\r\n range: RangeArea | null,\r\n selectionFocus: Cell,\r\n isMobile = false,\r\n ) {\r\n let handlerStyle;\r\n if (range) {\r\n handlerStyle = getCell(\r\n range,\r\n this.sv.dimensionRow.state,\r\n this.sv.dimensionCol.state,\r\n );\r\n } else {\r\n handlerStyle = getCell(\r\n {\r\n ...selectionFocus,\r\n x1: selectionFocus.x,\r\n y1: selectionFocus.y,\r\n },\r\n this.sv.dimensionRow.state,\r\n this.sv.dimensionCol.state,\r\n );\r\n }\r\n return (\r\n <div\r\n class={{\r\n [CELL_HANDLER_CLASS]: true,\r\n [MOBILE_CLASS]: isMobile,\r\n }}\r\n style={{\r\n left: `${handlerStyle.right}px`,\r\n top: `${handlerStyle.bottom}px`,\r\n }}\r\n onMouseDown={(e: MouseEvent) => this.autoFillHandler(e)}\r\n onTouchStart={(e: TouchEvent) => this.autoFillHandler(e)}\r\n />\r\n );\r\n }\r\n\r\n private autoFillHandler(\r\n e: MouseEvent | TouchEvent,\r\n type = AutoFillType.autoFill,\r\n ) {\r\n let target: Element | null = null;\r\n if (e.target instanceof Element) {\r\n target = e.target;\r\n }\r\n if (!target) {\r\n return;\r\n }\r\n this.selectionStart(target, this.sv.getData(), type);\r\n e.preventDefault();\r\n }\r\n\r\n get isAutoFill() {\r\n return !!this.autoFillType;\r\n }\r\n\r\n /**\r\n * Process mouse move events\r\n */\r\n selectionMouseMove(e: MouseEvent | TouchEvent) {\r\n // initiate mouse move debounce if not present\r\n if (!this.onMouseMoveAutofill) {\r\n this.onMouseMoveAutofill = debounce(\r\n (e: MouseEvent | TouchEvent, data: EventData) =>\r\n this.doAutofillMouseMove(e, data),\r\n 5,\r\n );\r\n }\r\n if (this.isAutoFill) {\r\n this.onMouseMoveAutofill(e, this.sv.getData());\r\n }\r\n }\r\n\r\n private getFocus(focus: Cell | null, range: RangeArea | null) {\r\n // there was an issue that it was taking last cell from range but focus was out\r\n if (!focus && range) {\r\n focus = { x: range.x, y: range.y };\r\n }\r\n return focus || null;\r\n }\r\n\r\n /**\r\n * Autofill logic:\r\n * on mouse move apply based on previous direction (if present)\r\n */\r\n private doAutofillMouseMove(event: MouseEvent | TouchEvent, data: EventData) {\r\n // if no initial - not started\r\n if (!this.autoFillInitial) {\r\n return;\r\n }\r\n const x = getPropertyFromEvent(event, 'clientX', MOBILE_CLASS);\r\n const y = getPropertyFromEvent(event, 'clientY', MOBILE_CLASS);\r\n // skip touch\r\n if (x === null || y === null) {\r\n return;\r\n }\r\n const current = getCurrentCell({ x, y }, data);\r\n\r\n // first time or direction equal to start(same as first time)\r\n if (!this.autoFillLast) {\r\n if (!this.autoFillLast) {\r\n this.autoFillLast = this.autoFillStart;\r\n }\r\n }\r\n\r\n // check if not the latest, if latest - do nothing\r\n if (isAfterLast(current, data.lastCell)) {\r\n return;\r\n }\r\n this.autoFillLast = current;\r\n\r\n const isSame =\r\n current.x === this.autoFillInitial.x &&\r\n current.y === this.autoFillInitial.y;\r\n\r\n // if same as initial - clear\r\n if (isSame) {\r\n this.sv.setTempRange(null);\r\n } else {\r\n const area = getRange(this.autoFillInitial, this.autoFillLast);\r\n this.sv.setTempRange({\r\n area,\r\n type: this.autoFillType,\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Range selection started\r\n * Mode @param type:\r\n * Can be triggered from MouseDown selection on element\r\n * Or can be triggered on corner square drag\r\n */\r\n selectionStart(\r\n target: Element,\r\n data: EventData,\r\n type = AutoFillType.selection,\r\n ) {\r\n /** Get cell by autofill element */\r\n const { top, left } = target.getBoundingClientRect();\r\n this.autoFillInitial = this.getFocus(data.focus, data.range);\r\n this.autoFillType = type;\r\n this.autoFillStart = getCurrentCell({ x: left, y: top }, data);\r\n }\r\n\r\n /**\r\n * Clear current range selection on mouse up and mouse leave events\r\n */\r\n clearAutoFillSelection(focus: Cell | null, oldRange: RangeArea | null) {\r\n // If autofill was active, apply autofill values\r\n if (this.autoFillInitial) {\r\n // Fetch latest focus\r\n this.autoFillInitial = this.getFocus(focus, oldRange);\r\n\r\n // Apply range data if autofill mode is active\r\n if (this.autoFillType === AutoFillType.autoFill) {\r\n const range = getRange(this.autoFillInitial, this.autoFillLast);\r\n\r\n // If range is present, apply data\r\n if (range) {\r\n const {\r\n defaultPrevented: stopApply,\r\n detail: { range: newRange },\r\n } = this.sv.clearRangeDataApply({\r\n range,\r\n });\r\n\r\n // If data apply was not prevented, apply new range\r\n if (!stopApply && oldRange) {\r\n this.applyRangeWithData(newRange, oldRange);\r\n } else {\r\n // If data apply was prevented, clear temporary range\r\n this.sv.setTempRange(null);\r\n }\r\n }\r\n } else {\r\n // If not autofill mode, apply range only\r\n this.applyRangeOnly(this.autoFillInitial, this.autoFillLast);\r\n }\r\n }\r\n\r\n // Reset autofill state\r\n this.resetAutoFillState();\r\n }\r\n\r\n /**\r\n * Reset autofill state\r\n */\r\n private resetAutoFillState() {\r\n this.autoFillType = null;\r\n this.autoFillInitial = null;\r\n this.autoFillLast = null;\r\n this.autoFillStart = null;\r\n }\r\n\r\n /**\r\n * Trigger range apply events and handle responses\r\n */\r\n onRangeApply(\r\n newData: DataLookup,\r\n newRange: RangeArea | null,\r\n oldRange: RangeArea | null,\r\n copy: boolean = false,\r\n clear: boolean = false,\r\n ) {\r\n this.sv.rangeDataApply({\r\n data: newData,\r\n models: collectModelsOfRange(newData, this.sv.dataStore),\r\n type: this.sv.dataStore.get('type'),\r\n oldRange,\r\n newRange,\r\n previousModels: null,\r\n copy,\r\n clearByKeyboard: clear,\r\n });\r\n\r\n this.sv.setRange(newRange);\r\n }\r\n\r\n /** Apply range and copy data during range application */\r\n private applyRangeWithData(newRange: RangeArea, rangeToCopy: RangeArea) {\r\n const rangeData: ChangedRange = {\r\n type: this.sv.dataStore.get('type'),\r\n colType: this.sv.columnService.type,\r\n newData: {},\r\n mapping: {},\r\n newRange,\r\n oldRange: rangeToCopy,\r\n };\r\n const { mapping, changed } = this.sv.columnService.getRangeData(\r\n rangeData,\r\n this.sv.columnService.columns,\r\n );\r\n rangeData.newData = changed;\r\n rangeData.mapping = mapping;\r\n let e = this.sv.selectionChanged(rangeData);\r\n\r\n // if default prevented - clear range\r\n if (e.defaultPrevented) {\r\n this.sv.setTempRange(null);\r\n return;\r\n }\r\n\r\n e = this.sv.rangeCopy(rangeData);\r\n if (e.defaultPrevented) {\r\n this.sv.setRange(newRange);\r\n return;\r\n }\r\n this.onRangeApply(rangeData.newData, newRange, rangeToCopy);\r\n }\r\n\r\n /**\r\n * Update range selection only,\r\n * no data change (mouse selection)\r\n */\r\n private applyRangeOnly(start?: Cell | null, end?: Cell | null) {\r\n // no changes to apply\r\n if (!start || !end) {\r\n return;\r\n }\r\n\r\n const newRange = getRange(start, end);\r\n this.sv.setRange(newRange);\r\n }\r\n}\r\n"]}
@@ -0,0 +1,158 @@
1
+ /*!
2
+ * Built by LevelSkill.Pro
3
+ */
4
+ import { getRange } from "../../store/index";
5
+ import { codesLetter, isAll, isClear, isCopy, isCut, isEnterKeyValue, isPaste, isTab, timeout, RESIZE_INTERVAL, isBack, } from "../../utils";
6
+ import { getCoordinate, isAfterLast, isBeforeFirst, } from "./selection.utils";
7
+ const DIRECTION_CODES = [
8
+ codesLetter.TAB,
9
+ codesLetter.ARROW_UP,
10
+ codesLetter.ARROW_DOWN,
11
+ codesLetter.ARROW_LEFT,
12
+ codesLetter.ARROW_RIGHT,
13
+ ];
14
+ export class KeyboardService {
15
+ constructor(sv) {
16
+ this.sv = sv;
17
+ }
18
+ async keyDown(e, canRange, isEditMode, { range, focus }) {
19
+ // IF EDIT MODE
20
+ if (isEditMode) {
21
+ switch (e.code) {
22
+ case codesLetter.ESCAPE:
23
+ this.sv.cancel();
24
+ break;
25
+ case codesLetter.TAB:
26
+ this.keyChangeSelection(e, canRange);
27
+ break;
28
+ }
29
+ return;
30
+ }
31
+ // IF NOT EDIT MODE
32
+ // pressed clear key
33
+ if (range && isClear(e.code)) {
34
+ this.sv.clearCell();
35
+ return;
36
+ }
37
+ // below works with focus only
38
+ if (!focus) {
39
+ return;
40
+ }
41
+ // tab key means same as arrow right
42
+ if (isTab(e.code)) {
43
+ this.keyChangeSelection(e, canRange);
44
+ return;
45
+ }
46
+ // pressed enter
47
+ if (isEnterKeyValue(e.key)) {
48
+ this.sv.change();
49
+ return;
50
+ }
51
+ // copy operation
52
+ if (isCopy(e)) {
53
+ return;
54
+ }
55
+ // cut operation
56
+ if (isCut(e)) {
57
+ return;
58
+ }
59
+ // paste operation
60
+ if (isPaste(e)) {
61
+ this.sv.internalPaste();
62
+ return;
63
+ }
64
+ if (isBack(e)) {
65
+ // rollback
66
+ e.preventDefault();
67
+ this.sv.rollback();
68
+ return;
69
+ }
70
+ // select all
71
+ if (isAll(e)) {
72
+ e.preventDefault();
73
+ // if (canRange) {
74
+ // this.selectAll(e);
75
+ // }
76
+ return;
77
+ }
78
+ // pressed letter key
79
+ if (e.key.length === 1) {
80
+ this.sv.change(e.key);
81
+ return;
82
+ }
83
+ // pressed arrow, change selection position
84
+ if (await this.keyChangeSelection(e, canRange)) {
85
+ return;
86
+ }
87
+ }
88
+ // private selectAll(e: KeyboardEvent) {
89
+ // const range = this.sv.selectionStore.get('range');
90
+ // const focus = this.sv.selectionStore.get('focus');
91
+ // // if no range or focus - do nothing
92
+ // if (!range || !focus) {
93
+ // return;
94
+ // }
95
+ // e.preventDefault();
96
+ // this.sv.selectAll();
97
+ // }
98
+ async keyChangeSelection(e, canRange) {
99
+ const data = this.changeDirectionKey(e, canRange);
100
+ if (!data) {
101
+ return false;
102
+ }
103
+ // this interval needed for several cases
104
+ // grid could be resized before next click
105
+ // at this case to avoid screen jump we use this interval
106
+ await timeout(RESIZE_INTERVAL + 30);
107
+ const range = this.sv.selectionStore.get('range');
108
+ const focus = this.sv.selectionStore.get('focus');
109
+ return this.keyPositionChange(data.changes, range, focus, data.isMulti);
110
+ }
111
+ keyPositionChange(changes, range, focus, isMulti = false) {
112
+ if (!range || !focus) {
113
+ return false;
114
+ }
115
+ const data = getCoordinate(range, focus, changes, isMulti);
116
+ if (!data) {
117
+ return false;
118
+ }
119
+ const eData = this.sv.getData();
120
+ if (isMulti) {
121
+ if (isAfterLast(data.end, eData.lastCell) || isBeforeFirst(data.start)) {
122
+ return false;
123
+ }
124
+ const range = getRange(data.start, data.end);
125
+ return this.sv.range(range);
126
+ }
127
+ return this.sv.focus(data.start, changes, isAfterLast(data.start, eData.lastCell)
128
+ ? 1
129
+ : isBeforeFirst(data.start)
130
+ ? -1
131
+ : 0);
132
+ }
133
+ /** Monitor key direction changes */
134
+ changeDirectionKey(e, canRange) {
135
+ const isMulti = canRange && e.shiftKey;
136
+ if (DIRECTION_CODES.includes(e.code)) {
137
+ e.preventDefault();
138
+ }
139
+ if (e.shiftKey) {
140
+ switch (e.code) {
141
+ case codesLetter.TAB:
142
+ return { changes: { x: -1 }, isMulti: false };
143
+ }
144
+ }
145
+ switch (e.code) {
146
+ case codesLetter.ARROW_UP:
147
+ return { changes: { y: -1 }, isMulti };
148
+ case codesLetter.ARROW_DOWN:
149
+ return { changes: { y: 1 }, isMulti };
150
+ case codesLetter.ARROW_LEFT:
151
+ return { changes: { x: -1 }, isMulti };
152
+ case codesLetter.TAB:
153
+ case codesLetter.ARROW_RIGHT:
154
+ return { changes: { x: 1 }, isMulti };
155
+ }
156
+ }
157
+ }
158
+ //# sourceMappingURL=keyboard.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyboard.service.js","sourceRoot":"","sources":["../../../src/components/overlay/keyboard.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { getRange } from '@store';\r\nimport {\r\n codesLetter,\r\n isAll,\r\n isClear,\r\n isCopy,\r\n isCut,\r\n isEnterKeyValue,\r\n isPaste,\r\n isTab,\r\n timeout,\r\n RESIZE_INTERVAL,\r\n type Observable,\r\n isBack,\r\n} from '../../utils';\r\nimport {\r\n EventData,\r\n getCoordinate,\r\n isAfterLast,\r\n isBeforeFirst,\r\n} from './selection.utils';\r\nimport { Cell, Nullable, RangeArea, SelectionStoreState } from '@type';\r\n\r\ntype Config = {\r\n selectionStore: Observable<SelectionStoreState>;\r\n\r\n // Apply changes from edit.\r\n change(val?: any): void;\r\n // Cancels edit. Escape changes.\r\n cancel(): void;\r\n\r\n clearCell(): void;\r\n focus(\r\n focus: Cell,\r\n changes: Partial<Cell>,\r\n focusNextViewport?: number,\r\n ): boolean;\r\n\r\n getData(): any;\r\n internalPaste(): void;\r\n range(range: RangeArea | null): boolean;\r\n selectAll(): void;\r\n\r\n rollback(): void;\r\n};\r\n\r\nconst DIRECTION_CODES: string[] = [\r\n codesLetter.TAB,\r\n codesLetter.ARROW_UP,\r\n codesLetter.ARROW_DOWN,\r\n codesLetter.ARROW_LEFT,\r\n codesLetter.ARROW_RIGHT,\r\n];\r\nexport class KeyboardService {\r\n constructor(private sv: Config) {}\r\n\r\n async keyDown(\r\n e: KeyboardEvent,\r\n canRange: boolean,\r\n isEditMode: boolean,\r\n { range, focus }: Nullable<Pick<EventData, 'range' | 'focus'>>,\r\n ) {\r\n // IF EDIT MODE\r\n if (isEditMode) {\r\n switch (e.code) {\r\n case codesLetter.ESCAPE:\r\n this.sv.cancel();\r\n break;\r\n case codesLetter.TAB:\r\n this.keyChangeSelection(e, canRange);\r\n break;\r\n }\r\n return;\r\n }\r\n\r\n // IF NOT EDIT MODE\r\n\r\n // pressed clear key\r\n if (range && isClear(e.code)) {\r\n this.sv.clearCell();\r\n return;\r\n }\r\n\r\n // below works with focus only\r\n if (!focus) {\r\n return;\r\n }\r\n\r\n // tab key means same as arrow right\r\n if (isTab(e.code)) {\r\n this.keyChangeSelection(e, canRange);\r\n return;\r\n }\r\n\r\n // pressed enter\r\n if (isEnterKeyValue(e.key)) {\r\n this.sv.change();\r\n return;\r\n }\r\n\r\n // copy operation\r\n if (isCopy(e)) {\r\n return;\r\n }\r\n\r\n // cut operation\r\n if (isCut(e)) {\r\n return;\r\n }\r\n\r\n // paste operation\r\n if (isPaste(e)) {\r\n this.sv.internalPaste();\r\n return;\r\n }\r\n\r\n if (isBack(e)) {\r\n // rollback\r\n e.preventDefault();\r\n this.sv.rollback();\r\n return;\r\n }\r\n\r\n // select all\r\n if (isAll(e)) {\r\n e.preventDefault();\r\n // if (canRange) {\r\n // this.selectAll(e);\r\n // }\r\n return;\r\n }\r\n\r\n // pressed letter key\r\n if (e.key.length === 1) {\r\n this.sv.change(e.key);\r\n return;\r\n }\r\n\r\n // pressed arrow, change selection position\r\n if (await this.keyChangeSelection(e, canRange)) {\r\n return;\r\n }\r\n }\r\n\r\n // private selectAll(e: KeyboardEvent) {\r\n // const range = this.sv.selectionStore.get('range');\r\n // const focus = this.sv.selectionStore.get('focus');\r\n // // if no range or focus - do nothing\r\n // if (!range || !focus) {\r\n // return;\r\n // }\r\n // e.preventDefault();\r\n // this.sv.selectAll();\r\n // }\r\n\r\n async keyChangeSelection(e: KeyboardEvent, canRange: boolean) {\r\n const data = this.changeDirectionKey(e, canRange);\r\n if (!data) {\r\n return false;\r\n }\r\n\r\n // this interval needed for several cases\r\n // grid could be resized before next click\r\n // at this case to avoid screen jump we use this interval\r\n await timeout(RESIZE_INTERVAL + 30);\r\n\r\n const range = this.sv.selectionStore.get('range');\r\n const focus = this.sv.selectionStore.get('focus');\r\n return this.keyPositionChange(data.changes, range, focus, data.isMulti);\r\n }\r\n\r\n keyPositionChange(\r\n changes: Partial<Cell>,\r\n range: RangeArea | null,\r\n focus: Cell | null,\r\n isMulti = false,\r\n ) {\r\n if (!range || !focus) {\r\n return false;\r\n }\r\n const data = getCoordinate(range, focus, changes, isMulti);\r\n if (!data) {\r\n return false;\r\n }\r\n const eData: EventData = this.sv.getData();\r\n if (isMulti) {\r\n if (isAfterLast(data.end, eData.lastCell) || isBeforeFirst(data.start)) {\r\n return false;\r\n }\r\n const range = getRange(data.start, data.end);\r\n return this.sv.range(range);\r\n }\r\n return this.sv.focus(\r\n data.start,\r\n changes,\r\n isAfterLast(data.start, eData.lastCell)\r\n ? 1\r\n : isBeforeFirst(data.start)\r\n ? -1\r\n : 0,\r\n );\r\n }\r\n\r\n /** Monitor key direction changes */\r\n changeDirectionKey(\r\n e: KeyboardEvent,\r\n canRange: boolean,\r\n ): { changes: Partial<Cell>; isMulti?: boolean } | void {\r\n const isMulti = canRange && e.shiftKey;\r\n if (DIRECTION_CODES.includes(e.code)) {\r\n e.preventDefault();\r\n }\r\n\r\n if (e.shiftKey) {\r\n switch (e.code) {\r\n case codesLetter.TAB:\r\n return { changes: { x: -1 }, isMulti: false };\r\n }\r\n }\r\n\r\n switch (e.code) {\r\n case codesLetter.ARROW_UP:\r\n return { changes: { y: -1 }, isMulti };\r\n case codesLetter.ARROW_DOWN:\r\n return { changes: { y: 1 }, isMulti };\r\n case codesLetter.ARROW_LEFT:\r\n return { changes: { x: -1 }, isMulti };\r\n case codesLetter.TAB:\r\n case codesLetter.ARROW_RIGHT:\r\n return { changes: { x: 1 }, isMulti };\r\n }\r\n }\r\n}\r\n"]}