@guiexpert/table 0.0.2 → 1.0.1

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 (348) hide show
  1. package/.eslintrc.json +42 -0
  2. package/LICENSE +35 -0
  3. package/README.md +102 -0
  4. package/jest.config.ts +18 -0
  5. package/ng-package.json +7 -0
  6. package/package.json +10 -20
  7. package/project.json +47 -0
  8. package/{index.d.ts → src/index.ts} +69 -20
  9. package/src/lib/table/action/action-id.type.ts +24 -0
  10. package/{lib/table/action/on-action-triggered.if.d.ts → src/lib/table/action/on-action-triggered.if.ts} +4 -1
  11. package/src/lib/table/action/osx-shortcut-actionId-mapping.ts +29 -0
  12. package/src/lib/table/action/shortcut-actionid-mapping.type.ts +3 -0
  13. package/src/lib/table/action/shortcut.service.ts +134 -0
  14. package/src/lib/table/action/windows-shortcut-actionId-mapping.ts +27 -0
  15. package/src/lib/table/checkbox/checkbox-model.if.ts +16 -0
  16. package/src/lib/table/checkbox/checkbox-model.ts +62 -0
  17. package/src/lib/table/checkbox/tree-checkbox-model.ts +123 -0
  18. package/src/lib/table/color/color-rgb.if.ts +7 -0
  19. package/src/lib/table/color/color-rgb.ts +10 -0
  20. package/src/lib/table/color/ge-css-color-util.ts +43 -0
  21. package/src/lib/table/color/three-color-gradient-arg.if.ts +10 -0
  22. package/src/lib/table/color/three-color-gradient-arg.ts +14 -0
  23. package/src/lib/table/color/two-color-gradient-arg.if.ts +8 -0
  24. package/src/lib/table/color/two-color-gradient-arg.ts +12 -0
  25. package/src/lib/table/css-vars.ts +243 -0
  26. package/src/lib/table/data/common/aligns.ts +19 -0
  27. package/src/lib/table/data/common/area-map-factory.ts +14 -0
  28. package/src/lib/table/data/common/area-map.ts +11 -0
  29. package/src/lib/table/data/common/area-map.type.ts +5 -0
  30. package/{lib/table/data/common/args-adjust-columns-to-row-parent-params.d.ts → src/lib/table/data/common/args-adjust-columns-to-row-parent-params.ts} +11 -9
  31. package/src/lib/table/data/common/args-render-cell-div.ts +18 -0
  32. package/src/lib/table/data/common/boolean-function.ts +4 -0
  33. package/src/lib/table/data/common/cell-range.ts +57 -0
  34. package/src/lib/table/data/common/checkbox-column-def.ts +25 -0
  35. package/src/lib/table/data/common/checked-type.ts +1 -0
  36. package/src/lib/table/data/common/event/ge-cell-indices.ts +9 -0
  37. package/src/lib/table/data/common/event/ge-key-event.ts +10 -0
  38. package/src/lib/table/data/common/event/ge-model-change-event.ts +13 -0
  39. package/src/lib/table/data/common/event/ge-mouse-event.ts +38 -0
  40. package/src/lib/table/data/common/event/input/table-cell-update-event.if.ts +10 -0
  41. package/src/lib/table/data/common/event/input/table-cell-update-event.ts +14 -0
  42. package/src/lib/table/data/common/index-and-px.ts +9 -0
  43. package/src/lib/table/data/common/size.if.ts +4 -0
  44. package/src/lib/table/data/common/size.ts +9 -0
  45. package/src/lib/table/data/common/sizes.ts +35 -0
  46. package/src/lib/table/data/common/sort-item.ts +11 -0
  47. package/src/lib/table/data/common/tree-row-if.ts +11 -0
  48. package/src/lib/table/data/common/tree-row.ts +16 -0
  49. package/src/lib/table/data/common/value-label.if.ts +6 -0
  50. package/src/lib/table/data/common/value-label.ts +13 -0
  51. package/src/lib/table/data/div-scope.type.ts +5 -0
  52. package/src/lib/table/data/event/mouse-target-data.ts +45 -0
  53. package/src/lib/table/data/geo-data.ts +13 -0
  54. package/src/lib/table/data/options/auto-restore-options.if.ts +21 -0
  55. package/src/lib/table/data/options/auto-restore-options.ts +50 -0
  56. package/src/lib/table/data/options/default-row-heights.if.ts +5 -0
  57. package/src/lib/table/data/options/default-row-heights.ts +10 -0
  58. package/src/lib/table/data/options/icon.if.ts +7 -0
  59. package/src/lib/table/data/options/icon.ts +10 -0
  60. package/{lib/table/data/options/sorted-options.if.d.ts → src/lib/table/data/options/sorted-options.if.ts} +6 -3
  61. package/src/lib/table/data/options/sorted-options.ts +15 -0
  62. package/src/lib/table/data/options/table-options.if.ts +54 -0
  63. package/src/lib/table/data/options/table-options.ts +66 -0
  64. package/src/lib/table/data/options/tree-options.if.ts +10 -0
  65. package/src/lib/table/data/options/tree-options.ts +32 -0
  66. package/src/lib/table/data/table-model-and-options.if.ts +8 -0
  67. package/src/lib/table/data/table-model-and-options.ts +13 -0
  68. package/src/lib/table/data/tablemodel/area-ident.type.ts +18 -0
  69. package/src/lib/table/data/tablemodel/areamodel/abstract-area-model.ts +183 -0
  70. package/src/lib/table/data/tablemodel/areamodel/area-model-array-of-arrays.ts +59 -0
  71. package/src/lib/table/data/tablemodel/areamodel/area-model-cell-groups.ts +210 -0
  72. package/src/lib/table/data/tablemodel/areamodel/area-model-hidden.ts +120 -0
  73. package/src/lib/table/data/tablemodel/areamodel/area-model-object-array-with-columndefs.ts +23 -0
  74. package/src/lib/table/data/tablemodel/areamodel/area-model-object-array.ts +105 -0
  75. package/src/lib/table/data/tablemodel/areamodel/area-model-tree.ts +215 -0
  76. package/src/lib/table/data/tablemodel/areamodel/area-model.if.ts +186 -0
  77. package/src/lib/table/data/tablemodel/areamodel/area-model.ts +110 -0
  78. package/src/lib/table/data/tablemodel/areamodel/col-and-rowspan-model.ts +61 -0
  79. package/src/lib/table/data/tablemodel/areamodel/has-default-row-height-if.ts +3 -0
  80. package/src/lib/table/data/tablemodel/cellgroup/cell-group-ext.ts +167 -0
  81. package/src/lib/table/data/tablemodel/cellgroup/cell-group.if.ts +12 -0
  82. package/src/lib/table/data/tablemodel/cellgroup/cell-group.ts +18 -0
  83. package/src/lib/table/data/tablemodel/cellgroup/cellgroup-factory.ts +148 -0
  84. package/src/lib/table/data/tablemodel/column/column-def.if.ts +28 -0
  85. package/src/lib/table/data/tablemodel/column/column-def.ts +104 -0
  86. package/src/lib/table/data/tablemodel/padding.ts +9 -0
  87. package/src/lib/table/data/tablemodel/table-model.if.ts +90 -0
  88. package/src/lib/table/data/tablemodel/table-model.ts +352 -0
  89. package/src/lib/table/ele-scope.ts +283 -0
  90. package/src/lib/table/event-adapter.ts +28 -0
  91. package/src/lib/table/event-listener.if.ts +19 -0
  92. package/src/lib/table/factory/table-factory.ts +378 -0
  93. package/src/lib/table/factory/tree-factory.ts +51 -0
  94. package/src/lib/table/focus/focus-model.if.ts +14 -0
  95. package/src/lib/table/focus/focus-model.ts +48 -0
  96. package/{lib/table/focus/focus.type.d.ts → src/lib/table/focus/focus.type.ts} +3 -0
  97. package/src/lib/table/input-handler.ts +34 -0
  98. package/src/lib/table/mouse-handler.ts +237 -0
  99. package/src/lib/table/render-scope.ts +936 -0
  100. package/src/lib/table/renderer/cell-group-ext-cell-renderer.ts +27 -0
  101. package/{lib/table/renderer/cell-render.if.d.ts → src/lib/table/renderer/cell-render.if.ts} +10 -1
  102. package/src/lib/table/renderer/checkbox-boolean-property-cell-renderer.ts +58 -0
  103. package/src/lib/table/renderer/checkbox-cell-renderer.ts +39 -0
  104. package/src/lib/table/renderer/date-to-int-date-cell-renderer.ts +34 -0
  105. package/src/lib/table/renderer/date-to-iso-cell-renderer.ts +25 -0
  106. package/src/lib/table/renderer/date-to-locale-date-cell-renderer.ts +24 -0
  107. package/src/lib/table/renderer/date-to-tec-cell-renderer.ts +28 -0
  108. package/{lib/table/renderer/edit/edit-cell-renderer.type.d.ts → src/lib/table/renderer/edit/edit-cell-renderer.type.ts} +1 -0
  109. package/src/lib/table/renderer/edit/edit-input-pipe-for-number.ts +6 -0
  110. package/src/lib/table/renderer/edit/edit-input-pipe.if.ts +7 -0
  111. package/src/lib/table/renderer/edit/input-cell-renderer.ts +41 -0
  112. package/src/lib/table/renderer/edit/select-cell-renderer.ts +60 -0
  113. package/src/lib/table/renderer/male-female-to-icon-cell-renderer.ts +26 -0
  114. package/src/lib/table/renderer/number-cell-renderer.ts +38 -0
  115. package/src/lib/table/renderer/renderer.ts +11 -0
  116. package/src/lib/table/renderer/true-false-cell-renderer.ts +28 -0
  117. package/src/lib/table/selection/selection-model.if.ts +20 -0
  118. package/src/lib/table/selection/selection-model.ts +109 -0
  119. package/src/lib/table/selection/selection-service.ts +120 -0
  120. package/{lib/table/selection/selection.type.d.ts → src/lib/table/selection/selection.type.ts} +3 -0
  121. package/src/lib/table/service/abstract-store-state.service.ts +105 -0
  122. package/src/lib/table/service/convenience-dom.service.ts +548 -0
  123. package/src/lib/table/service/data/collapsed-expanded.data.ts +11 -0
  124. package/src/lib/table/service/data/html-style.type.ts +1 -0
  125. package/src/lib/table/service/dom-service.if.ts +16 -0
  126. package/src/lib/table/service/ge-filter.service.ts +123 -0
  127. package/src/lib/table/service/simple-dom-service.ts +46 -0
  128. package/src/lib/table/service/sorter.service.ts +30 -0
  129. package/src/lib/table/service/store-state-collapsed-expand.service.ts +76 -0
  130. package/src/lib/table/service/store-state-scroll-pos.service.ts +40 -0
  131. package/src/lib/table/service/store-state-sorting.service.ts +41 -0
  132. package/src/lib/table/service/tree-row.service.ts +31 -0
  133. package/src/lib/table/table-api.ts +61 -0
  134. package/src/lib/table/table-scope.ts +433 -0
  135. package/src/test-setup.ts +1 -0
  136. package/tsconfig.json +22 -0
  137. package/tsconfig.lib.json +19 -0
  138. package/tsconfig.lib.prod.json +7 -0
  139. package/tsconfig.spec.json +20 -0
  140. package/esm2020/guiexpert-table.mjs +0 -5
  141. package/esm2020/index.mjs +0 -108
  142. package/esm2020/lib/table/action/action-id.type.mjs +0 -20
  143. package/esm2020/lib/table/action/on-action-triggered.if.mjs +0 -2
  144. package/esm2020/lib/table/action/osx-shortcut-actionId-mapping.mjs +0 -17
  145. package/esm2020/lib/table/action/shortcut-actionid-mapping.type.mjs +0 -2
  146. package/esm2020/lib/table/action/shortcut.service.mjs +0 -105
  147. package/esm2020/lib/table/action/windows-shortcut-actionId-mapping.mjs +0 -15
  148. package/esm2020/lib/table/checkbox/checkbox-model.if.mjs +0 -2
  149. package/esm2020/lib/table/checkbox/checkbox-model.mjs +0 -52
  150. package/esm2020/lib/table/checkbox/tree-checkbox-model.mjs +0 -106
  151. package/esm2020/lib/table/data/common/aligns.mjs +0 -19
  152. package/esm2020/lib/table/data/common/area-map-factory.mjs +0 -7
  153. package/esm2020/lib/table/data/common/area-map.mjs +0 -8
  154. package/esm2020/lib/table/data/common/area-map.type.mjs +0 -2
  155. package/esm2020/lib/table/data/common/args-adjust-columns-to-row-parent-params.mjs +0 -2
  156. package/esm2020/lib/table/data/common/args-render-cell-div.mjs +0 -2
  157. package/esm2020/lib/table/data/common/boolean-function.mjs +0 -3
  158. package/esm2020/lib/table/data/common/cell-range.mjs +0 -27
  159. package/esm2020/lib/table/data/common/checkbox-column.mjs +0 -15
  160. package/esm2020/lib/table/data/common/checked-type.mjs +0 -2
  161. package/esm2020/lib/table/data/common/event/ge-cell-indices.mjs +0 -7
  162. package/esm2020/lib/table/data/common/event/ge-key-event.mjs +0 -7
  163. package/esm2020/lib/table/data/common/event/ge-model-change-event.mjs +0 -10
  164. package/esm2020/lib/table/data/common/event/ge-mouse-event.mjs +0 -19
  165. package/esm2020/lib/table/data/common/filter-function.mjs +0 -2
  166. package/esm2020/lib/table/data/common/get-t.mjs +0 -2
  167. package/esm2020/lib/table/data/common/index-and-px.mjs +0 -7
  168. package/esm2020/lib/table/data/common/size.if.mjs +0 -2
  169. package/esm2020/lib/table/data/common/size.mjs +0 -7
  170. package/esm2020/lib/table/data/common/sizes.mjs +0 -33
  171. package/esm2020/lib/table/data/common/sort-item.mjs +0 -7
  172. package/esm2020/lib/table/data/common/sort-state.type.mjs +0 -2
  173. package/esm2020/lib/table/data/common/tree-arrow.type.mjs +0 -2
  174. package/esm2020/lib/table/data/common/tree-row-if.mjs +0 -2
  175. package/esm2020/lib/table/data/common/tree-row.mjs +0 -12
  176. package/esm2020/lib/table/data/common/value-label.if.mjs +0 -2
  177. package/esm2020/lib/table/data/common/value-label.mjs +0 -7
  178. package/esm2020/lib/table/data/div-scope.type.mjs +0 -2
  179. package/esm2020/lib/table/data/geo-data.mjs +0 -10
  180. package/esm2020/lib/table/data/options/auto-restore-options.if.mjs +0 -2
  181. package/esm2020/lib/table/data/options/auto-restore-options.mjs +0 -42
  182. package/esm2020/lib/table/data/options/default-row-heights.if.mjs +0 -2
  183. package/esm2020/lib/table/data/options/default-row-heights.mjs +0 -8
  184. package/esm2020/lib/table/data/options/icon.if.mjs +0 -2
  185. package/esm2020/lib/table/data/options/icon.mjs +0 -8
  186. package/esm2020/lib/table/data/options/sorted-options.if.mjs +0 -2
  187. package/esm2020/lib/table/data/options/sorted-options.mjs +0 -9
  188. package/esm2020/lib/table/data/options/table-options.if.mjs +0 -2
  189. package/esm2020/lib/table/data/options/table-options.mjs +0 -37
  190. package/esm2020/lib/table/data/options/tree-options.if.mjs +0 -2
  191. package/esm2020/lib/table/data/options/tree-options.mjs +0 -10
  192. package/esm2020/lib/table/data/side-ident.type.mjs +0 -2
  193. package/esm2020/lib/table/data/tablemodel/area-ident.type.mjs +0 -10
  194. package/esm2020/lib/table/data/tablemodel/areamodel/abstract-area-model.mjs +0 -108
  195. package/esm2020/lib/table/data/tablemodel/areamodel/area-model-array-array.mjs +0 -34
  196. package/esm2020/lib/table/data/tablemodel/areamodel/area-model-hidden.mjs +0 -80
  197. package/esm2020/lib/table/data/tablemodel/areamodel/area-model-object-array-with-columndefs.mjs +0 -11
  198. package/esm2020/lib/table/data/tablemodel/areamodel/area-model-object-array.mjs +0 -79
  199. package/esm2020/lib/table/data/tablemodel/areamodel/area-model-tree.mjs +0 -166
  200. package/esm2020/lib/table/data/tablemodel/areamodel/area-model.if.mjs +0 -2
  201. package/esm2020/lib/table/data/tablemodel/areamodel/col-and-rowspan-model.mjs +0 -48
  202. package/esm2020/lib/table/data/tablemodel/column/column-def.if.mjs +0 -2
  203. package/esm2020/lib/table/data/tablemodel/column/column-def.mjs +0 -32
  204. package/esm2020/lib/table/data/tablemodel/padding.mjs +0 -9
  205. package/esm2020/lib/table/data/tablemodel/table-model.if.mjs +0 -2
  206. package/esm2020/lib/table/data/tablemodel/table-model.mjs +0 -268
  207. package/esm2020/lib/table/ele-scope.mjs +0 -173
  208. package/esm2020/lib/table/event-adapter.mjs +0 -17
  209. package/esm2020/lib/table/event-listener.if.mjs +0 -2
  210. package/esm2020/lib/table/focus/focus-model.if.mjs +0 -2
  211. package/esm2020/lib/table/focus/focus-model.mjs +0 -22
  212. package/esm2020/lib/table/focus/focus.type.mjs +0 -2
  213. package/esm2020/lib/table/input-handler.mjs +0 -24
  214. package/esm2020/lib/table/mouse-handler.mjs +0 -191
  215. package/esm2020/lib/table/render-scope.mjs +0 -595
  216. package/esm2020/lib/table/renderer/cell-render.if.mjs +0 -2
  217. package/esm2020/lib/table/renderer/checkbox-cell-renderer.mjs +0 -22
  218. package/esm2020/lib/table/renderer/date-to-int-date-cell-renderer.mjs +0 -21
  219. package/esm2020/lib/table/renderer/date-to-iso-cell-renderer.mjs +0 -9
  220. package/esm2020/lib/table/renderer/date-to-locale-date-cell-renderer.mjs +0 -9
  221. package/esm2020/lib/table/renderer/date-to-tec-cell-renderer.mjs +0 -12
  222. package/esm2020/lib/table/renderer/edit/edit-cell-renderer.type.mjs +0 -2
  223. package/esm2020/lib/table/renderer/edit/input-cell-renderer.mjs +0 -23
  224. package/esm2020/lib/table/renderer/edit/select-cell-renderer.mjs +0 -35
  225. package/esm2020/lib/table/renderer/male-female-to-icon-cell-renderer.mjs +0 -12
  226. package/esm2020/lib/table/renderer/number-cell-renderer.mjs +0 -19
  227. package/esm2020/lib/table/renderer/renderer-cleanup-fn.type.mjs +0 -2
  228. package/esm2020/lib/table/renderer/renderer.mjs +0 -7
  229. package/esm2020/lib/table/renderer/true-false-cell-renderer.mjs +0 -15
  230. package/esm2020/lib/table/selection/selection-model.if.mjs +0 -2
  231. package/esm2020/lib/table/selection/selection-model.mjs +0 -97
  232. package/esm2020/lib/table/selection/selection-service.mjs +0 -97
  233. package/esm2020/lib/table/selection/selection.type.mjs +0 -2
  234. package/esm2020/lib/table/service/abstract-store-state.service.mjs +0 -49
  235. package/esm2020/lib/table/service/convenience-dom.service.mjs +0 -394
  236. package/esm2020/lib/table/service/data/collapsed-expanded.data.mjs +0 -9
  237. package/esm2020/lib/table/service/data/html-style.type.mjs +0 -2
  238. package/esm2020/lib/table/service/dom-service.if.mjs +0 -2
  239. package/esm2020/lib/table/service/ge-filter.service.mjs +0 -98
  240. package/esm2020/lib/table/service/simple-dom-service.mjs +0 -34
  241. package/esm2020/lib/table/service/sorter.service.mjs +0 -27
  242. package/esm2020/lib/table/service/store-state-collapsed-expand.service.mjs +0 -57
  243. package/esm2020/lib/table/service/store-state-scroll-pos.service.mjs +0 -29
  244. package/esm2020/lib/table/service/store-state-sorting.service.mjs +0 -29
  245. package/esm2020/lib/table/service/tree-row.service.mjs +0 -23
  246. package/esm2020/lib/table/table-api.mjs +0 -38
  247. package/esm2020/lib/table/table-model-factory.mjs +0 -124
  248. package/esm2020/lib/table/table-scope.mjs +0 -313
  249. package/lib/table/action/action-id.type.d.ts +0 -2
  250. package/lib/table/action/osx-shortcut-actionId-mapping.d.ts +0 -6
  251. package/lib/table/action/shortcut-actionid-mapping.type.d.ts +0 -4
  252. package/lib/table/action/shortcut.service.d.ts +0 -17
  253. package/lib/table/action/windows-shortcut-actionId-mapping.d.ts +0 -6
  254. package/lib/table/checkbox/checkbox-model.d.ts +0 -12
  255. package/lib/table/checkbox/checkbox-model.if.d.ts +0 -9
  256. package/lib/table/checkbox/tree-checkbox-model.d.ts +0 -17
  257. package/lib/table/data/common/aligns.d.ts +0 -24
  258. package/lib/table/data/common/area-map-factory.d.ts +0 -5
  259. package/lib/table/data/common/area-map.d.ts +0 -7
  260. package/lib/table/data/common/area-map.type.d.ts +0 -5
  261. package/lib/table/data/common/args-render-cell-div.d.ts +0 -13
  262. package/lib/table/data/common/boolean-function.d.ts +0 -3
  263. package/lib/table/data/common/cell-range.d.ts +0 -17
  264. package/lib/table/data/common/checkbox-column.d.ts +0 -13
  265. package/lib/table/data/common/checked-type.d.ts +0 -1
  266. package/lib/table/data/common/event/ge-cell-indices.d.ts +0 -5
  267. package/lib/table/data/common/event/ge-key-event.d.ts +0 -5
  268. package/lib/table/data/common/event/ge-model-change-event.d.ts +0 -6
  269. package/lib/table/data/common/event/ge-mouse-event.d.ts +0 -17
  270. package/lib/table/data/common/index-and-px.d.ts +0 -5
  271. package/lib/table/data/common/size.d.ts +0 -6
  272. package/lib/table/data/common/size.if.d.ts +0 -4
  273. package/lib/table/data/common/sizes.d.ts +0 -32
  274. package/lib/table/data/common/sort-item.d.ts +0 -6
  275. package/lib/table/data/common/tree-row-if.d.ts +0 -10
  276. package/lib/table/data/common/tree-row.d.ts +0 -11
  277. package/lib/table/data/common/value-label.d.ts +0 -6
  278. package/lib/table/data/common/value-label.if.d.ts +0 -4
  279. package/lib/table/data/div-scope.type.d.ts +0 -7
  280. package/lib/table/data/geo-data.d.ts +0 -8
  281. package/lib/table/data/options/auto-restore-options.d.ts +0 -11
  282. package/lib/table/data/options/auto-restore-options.if.d.ts +0 -16
  283. package/lib/table/data/options/default-row-heights.d.ts +0 -7
  284. package/lib/table/data/options/default-row-heights.if.d.ts +0 -5
  285. package/lib/table/data/options/icon.d.ts +0 -7
  286. package/lib/table/data/options/icon.if.d.ts +0 -5
  287. package/lib/table/data/options/sorted-options.d.ts +0 -8
  288. package/lib/table/data/options/table-options.d.ts +0 -35
  289. package/lib/table/data/options/table-options.if.d.ts +0 -36
  290. package/lib/table/data/options/tree-options.d.ts +0 -9
  291. package/lib/table/data/options/tree-options.if.d.ts +0 -7
  292. package/lib/table/data/tablemodel/area-ident.type.d.ts +0 -2
  293. package/lib/table/data/tablemodel/areamodel/abstract-area-model.d.ts +0 -43
  294. package/lib/table/data/tablemodel/areamodel/area-model-array-array.d.ts +0 -18
  295. package/lib/table/data/tablemodel/areamodel/area-model-hidden.d.ts +0 -37
  296. package/lib/table/data/tablemodel/areamodel/area-model-object-array-with-columndefs.d.ts +0 -10
  297. package/lib/table/data/tablemodel/areamodel/area-model-object-array.d.ts +0 -27
  298. package/lib/table/data/tablemodel/areamodel/area-model-tree.d.ts +0 -39
  299. package/lib/table/data/tablemodel/areamodel/area-model.if.d.ts +0 -146
  300. package/lib/table/data/tablemodel/areamodel/col-and-rowspan-model.d.ts +0 -12
  301. package/lib/table/data/tablemodel/column/column-def.d.ts +0 -46
  302. package/lib/table/data/tablemodel/column/column-def.if.d.ts +0 -22
  303. package/lib/table/data/tablemodel/padding.d.ts +0 -7
  304. package/lib/table/data/tablemodel/table-model.d.ts +0 -61
  305. package/lib/table/data/tablemodel/table-model.if.d.ts +0 -35
  306. package/lib/table/ele-scope.d.ts +0 -37
  307. package/lib/table/event-adapter.d.ts +0 -12
  308. package/lib/table/event-listener.if.d.ts +0 -11
  309. package/lib/table/focus/focus-model.d.ts +0 -12
  310. package/lib/table/focus/focus-model.if.d.ts +0 -6
  311. package/lib/table/input-handler.d.ts +0 -6
  312. package/lib/table/mouse-handler.d.ts +0 -25
  313. package/lib/table/render-scope.d.ts +0 -82
  314. package/lib/table/renderer/checkbox-cell-renderer.d.ts +0 -8
  315. package/lib/table/renderer/date-to-int-date-cell-renderer.d.ts +0 -9
  316. package/lib/table/renderer/date-to-iso-cell-renderer.d.ts +0 -8
  317. package/lib/table/renderer/date-to-locale-date-cell-renderer.d.ts +0 -8
  318. package/lib/table/renderer/date-to-tec-cell-renderer.d.ts +0 -8
  319. package/lib/table/renderer/edit/input-cell-renderer.d.ts +0 -8
  320. package/lib/table/renderer/edit/select-cell-renderer.d.ts +0 -12
  321. package/lib/table/renderer/male-female-to-icon-cell-renderer.d.ts +0 -8
  322. package/lib/table/renderer/number-cell-renderer.d.ts +0 -11
  323. package/lib/table/renderer/renderer.d.ts +0 -5
  324. package/lib/table/renderer/true-false-cell-renderer.d.ts +0 -8
  325. package/lib/table/selection/selection-model.d.ts +0 -21
  326. package/lib/table/selection/selection-model.if.d.ts +0 -11
  327. package/lib/table/selection/selection-service.d.ts +0 -17
  328. package/lib/table/service/abstract-store-state.service.d.ts +0 -10
  329. package/lib/table/service/convenience-dom.service.d.ts +0 -46
  330. package/lib/table/service/data/collapsed-expanded.data.d.ts +0 -7
  331. package/lib/table/service/data/html-style.type.d.ts +0 -3
  332. package/lib/table/service/dom-service.if.d.ts +0 -9
  333. package/lib/table/service/ge-filter.service.d.ts +0 -5
  334. package/lib/table/service/simple-dom-service.d.ts +0 -10
  335. package/lib/table/service/sorter.service.d.ts +0 -3
  336. package/lib/table/service/store-state-collapsed-expand.service.d.ts +0 -15
  337. package/lib/table/service/store-state-scroll-pos.service.d.ts +0 -10
  338. package/lib/table/service/store-state-sorting.service.d.ts +0 -11
  339. package/lib/table/service/tree-row.service.d.ts +0 -5
  340. package/lib/table/table-api.d.ts +0 -16
  341. package/lib/table/table-model-factory.d.ts +0 -60
  342. package/lib/table/table-scope.d.ts +0 -56
  343. /package/{lib/table/data/common/filter-function.d.ts → src/lib/table/data/common/filter-function.ts} +0 -0
  344. /package/{lib/table/data/common/get-t.d.ts → src/lib/table/data/common/get-t.ts} +0 -0
  345. /package/{lib/table/data/common/sort-state.type.d.ts → src/lib/table/data/common/sort-state.type.ts} +0 -0
  346. /package/{lib/table/data/common/tree-arrow.type.d.ts → src/lib/table/data/common/tree-arrow.type.ts} +0 -0
  347. /package/{lib/table/data/side-ident.type.d.ts → src/lib/table/data/side-ident.type.ts} +0 -0
  348. /package/{lib/table/renderer/renderer-cleanup-fn.type.d.ts → src/lib/table/renderer/renderer-cleanup-fn.type.ts} +0 -0
@@ -0,0 +1,27 @@
1
+ import { AreaModelIf } from "../data/tablemodel/areamodel/area-model.if";
2
+ import { CellRendererIf } from "./cell-render.if";
3
+ import { DomServiceIf } from "../service/dom-service.if";
4
+ import { AreaIdent } from "../data/tablemodel/area-ident.type";
5
+ import { RendererCleanupFnType } from "./renderer-cleanup-fn.type";
6
+ import { CellGroupExt } from "../data/tablemodel/cellgroup/cell-group-ext";
7
+
8
+
9
+ export class CellGroupExtCellRenderer implements CellRendererIf {
10
+
11
+ render(
12
+ cellDiv: HTMLDivElement,
13
+ _rowIndex: number,
14
+ _columnIndex: number,
15
+ _areaIdent: AreaIdent,
16
+ _areaModel: AreaModelIf,
17
+ cellValue: CellGroupExt | undefined | null,
18
+ _domService: DomServiceIf): RendererCleanupFnType | undefined {
19
+
20
+ const label = cellValue?.data ? cellValue.data : "";
21
+ cellDiv.innerHTML = `${label}`;
22
+
23
+ return undefined;
24
+ }
25
+
26
+
27
+ }
@@ -2,6 +2,15 @@ import { AreaModelIf } from "../data/tablemodel/areamodel/area-model.if";
2
2
  import { DomServiceIf } from "../service/dom-service.if";
3
3
  import { AreaIdent } from "../data/tablemodel/area-ident.type";
4
4
  import { RendererCleanupFnType } from "./renderer-cleanup-fn.type";
5
+
5
6
  export interface CellRendererIf {
6
- render(cellDiv: HTMLDivElement, rowIndex: number, columnIndex: number, areaIdent: AreaIdent, areaModel: AreaModelIf, cellValue: any, domService: DomServiceIf): RendererCleanupFnType | undefined;
7
+
8
+ render(
9
+ cellDiv: HTMLDivElement,
10
+ rowIndex: number,
11
+ columnIndex: number,
12
+ areaIdent: AreaIdent,
13
+ areaModel: AreaModelIf,
14
+ cellValue: any,
15
+ domService: DomServiceIf): RendererCleanupFnType | undefined;
7
16
  }
@@ -0,0 +1,58 @@
1
+ import { CellRendererIf } from "./cell-render.if";
2
+ import { DomServiceIf } from "../service/dom-service.if";
3
+ import { AreaIdent } from "../data/tablemodel/area-ident.type";
4
+ import { RendererCleanupFnType } from "./renderer-cleanup-fn.type";
5
+ import { AreaModelObjectyArray } from "../data/tablemodel/areamodel/area-model-object-array";
6
+
7
+ /**
8
+ * Works with AreaModelObjectArray only
9
+ */
10
+ export class CheckboxBooleanPropertyCellRenderer<T> implements CellRendererIf {
11
+
12
+ constructor(
13
+ public property: string,
14
+ public skipCheckableCheck: boolean = true
15
+ ) {
16
+ }
17
+
18
+ render(
19
+ cellDiv: HTMLDivElement,
20
+ rowIndex: number,
21
+ columnIndex: number,
22
+ areaIdent: AreaIdent,
23
+ areaModel: AreaModelObjectyArray<T>,
24
+ _cellValue: any,
25
+ domService: DomServiceIf): RendererCleanupFnType | undefined {
26
+
27
+ if (this.skipCheckableCheck || areaModel.isRowCheckable(rowIndex)) {
28
+ domService.addClass(cellDiv, "ge-table-row-checkbox-div");
29
+ const row = areaModel.getRowByIndex(rowIndex);
30
+ const rowChecked = areaModel.getValueByT(row, this.property) === true;
31
+ const checked = rowChecked ? "checked" : "";
32
+
33
+ domService.addClass(cellDiv, "ge-padding-property-checkbox");
34
+ cellDiv.innerHTML = `
35
+ <input
36
+ type="checkbox"
37
+ data-area="${areaIdent}"
38
+ data-row-index="${rowIndex}"
39
+ data-col-index="${columnIndex}"
40
+ data-property-index="${this.property}"
41
+ data-input-type="checkbox"
42
+ ${checked}
43
+ class="ge-input-checkbox">`;
44
+
45
+ const inputEle = cellDiv.querySelector<HTMLInputElement>(".ge-input-checkbox");
46
+ if (inputEle) {
47
+ // @ts-ignore
48
+ inputEle.addEventListener("click", (_ele: HTMLInputElement, _evt: MouseEvent) => {
49
+ // @ts-ignore
50
+ row[this.property] = !row[this.property];
51
+ return true;
52
+ });
53
+ }
54
+ }
55
+ return undefined;
56
+ }
57
+
58
+ }
@@ -0,0 +1,39 @@
1
+ import { AreaModelIf } from "../data/tablemodel/areamodel/area-model.if";
2
+ import { CellRendererIf } from "./cell-render.if";
3
+ import { DomServiceIf } from "../service/dom-service.if";
4
+ import { AreaIdent } from "../data/tablemodel/area-ident.type";
5
+ import { RendererCleanupFnType } from "./renderer-cleanup-fn.type";
6
+
7
+
8
+ export class CheckboxCellRenderer implements CellRendererIf {
9
+
10
+ render(
11
+ cellDiv: HTMLDivElement,
12
+ rowIndex: number,
13
+ columnIndex: number,
14
+ areaIdent: AreaIdent,
15
+ areaModel: AreaModelIf,
16
+ _cellValue: any,
17
+ domService: DomServiceIf): RendererCleanupFnType | undefined {
18
+
19
+ if (areaModel.isRowCheckable(rowIndex)) {
20
+ domService.addClass(cellDiv, "ge-table-row-checkbox-div");
21
+ const rowChecked = areaModel.isRowChecked(rowIndex);
22
+ const checked = (rowChecked === "full") ? "checked" : "";
23
+ const semi = (rowChecked === "semi") ? "<span style=\"opacity: 0.4;\">✓<span>" : "";
24
+ cellDiv.innerHTML = `
25
+ <input
26
+ type="checkbox"
27
+ data-area="${areaIdent}"
28
+ data-row-index="${rowIndex}"
29
+ data-col-index="${columnIndex}"
30
+ data-input-type="checkbox"
31
+ ${checked}
32
+ class="ge-table-row-checkbox">
33
+ ${semi} `;
34
+ }
35
+ return undefined;
36
+ }
37
+
38
+
39
+ }
@@ -0,0 +1,34 @@
1
+ import { CellRendererIf } from "./cell-render.if";
2
+ import { AreaModelIf } from "../data/tablemodel/areamodel/area-model.if";
3
+ import { DomServiceIf } from "../service/dom-service.if";
4
+ import { AreaIdent } from "../data/tablemodel/area-ident.type";
5
+ import { RendererCleanupFnType } from "./renderer-cleanup-fn.type";
6
+
7
+
8
+ export class DateToIntlDDMMYYYYCellRenderer implements CellRendererIf {
9
+
10
+ readonly formatter = new Intl.DateTimeFormat("de-DE", {
11
+ year: "numeric",
12
+ month: "2-digit",
13
+ day: "2-digit"
14
+ });
15
+
16
+ render(
17
+ cellDiv: HTMLDivElement,
18
+ _rowIndex: number,
19
+ _columnIndex: number,
20
+ _areaIdent: AreaIdent,
21
+ _areaModel: AreaModelIf,
22
+ cellValue: any,
23
+ _domService: DomServiceIf): RendererCleanupFnType | undefined {
24
+ if (cellValue) {
25
+ try {
26
+ cellDiv.innerText = this.formatter.format(new Date(cellValue));
27
+ } catch (e) {
28
+ cellDiv.innerText = cellValue;
29
+ }
30
+ }
31
+ return undefined;
32
+ }
33
+
34
+ }
@@ -0,0 +1,25 @@
1
+ import { CellRendererIf } from "./cell-render.if";
2
+ import { AreaModelIf } from "../data/tablemodel/areamodel/area-model.if";
3
+ import { DomServiceIf } from "../service/dom-service.if";
4
+ import { AreaIdent } from "../data/tablemodel/area-ident.type";
5
+ import { RendererCleanupFnType } from "./renderer-cleanup-fn.type";
6
+
7
+
8
+ export class DateToIsoCellRenderer implements CellRendererIf {
9
+
10
+ render(
11
+ cellDiv: HTMLDivElement,
12
+ _rowIndex: number,
13
+ _columnIndex: number,
14
+ _areaIdent: AreaIdent,
15
+ _areaModel: AreaModelIf,
16
+ cellValue: any,
17
+ _domService: DomServiceIf): RendererCleanupFnType | undefined {
18
+ if (cellValue) {
19
+ cellDiv.innerText = new Date(cellValue).toISOString();
20
+ }
21
+ return undefined;
22
+ }
23
+
24
+ }
25
+
@@ -0,0 +1,24 @@
1
+ import { CellRendererIf } from "./cell-render.if";
2
+ import { AreaModelIf } from "../data/tablemodel/areamodel/area-model.if";
3
+ import { DomServiceIf } from "../service/dom-service.if";
4
+ import { AreaIdent } from "../data/tablemodel/area-ident.type";
5
+ import { RendererCleanupFnType } from "./renderer-cleanup-fn.type";
6
+
7
+
8
+ export class DateToLocaleDateCellRenderer implements CellRendererIf {
9
+
10
+ render(
11
+ cellDiv: HTMLDivElement,
12
+ _rowIndex: number,
13
+ _columnIndex: number,
14
+ _areaIdent: AreaIdent,
15
+ _areaModel: AreaModelIf,
16
+ cellValue: any,
17
+ _domService: DomServiceIf): RendererCleanupFnType | undefined {
18
+ if (cellValue) {
19
+ cellDiv.innerText = new Date(cellValue).toLocaleDateString();
20
+ }
21
+ return undefined;
22
+ }
23
+
24
+ }
@@ -0,0 +1,28 @@
1
+ import { CellRendererIf } from "./cell-render.if";
2
+ import { AreaModelIf } from "../data/tablemodel/areamodel/area-model.if";
3
+ import { DomServiceIf } from "../service/dom-service.if";
4
+ import { AreaIdent } from "../data/tablemodel/area-ident.type";
5
+ import { RendererCleanupFnType } from "./renderer-cleanup-fn.type";
6
+
7
+
8
+ export class DateToTecCellRenderer implements CellRendererIf {
9
+
10
+ render(
11
+ cellDiv: HTMLDivElement,
12
+ _rowIndex: number,
13
+ _columnIndex: number,
14
+ _areaIdent: AreaIdent,
15
+ _areaModel: AreaModelIf,
16
+ cellValue: any,
17
+ _domService: DomServiceIf): RendererCleanupFnType | undefined {
18
+ if (cellValue) {
19
+ cellDiv.innerText = new Date(cellValue)
20
+ .toISOString()
21
+ .replace(/T/g, " ")
22
+ .replace(/\..*/g, "");
23
+ }
24
+ return undefined;
25
+ }
26
+
27
+ }
28
+
@@ -1,2 +1,3 @@
1
1
  import { CellRendererIf } from "../cell-render.if";
2
+
2
3
  export type GetEditRenderer = (rowIndex: number, columnIndex: number) => CellRendererIf | undefined;
@@ -0,0 +1,6 @@
1
+ import { editInputPipe } from "./edit-input-pipe.if";
2
+
3
+ export const editInputPipeForNumber: editInputPipe = function(value: any, _rowIndex: number, _columnIndex: number) {
4
+ return value ? Number(value) : "";
5
+ }
6
+
@@ -0,0 +1,7 @@
1
+
2
+
3
+ export interface editInputPipe {
4
+ (input: any, rowIndex: number, columnIndex: number): any | undefined;
5
+ }
6
+
7
+
@@ -0,0 +1,41 @@
1
+ import { CellRendererIf } from "../cell-render.if";
2
+ import { AreaIdent } from "../../data/tablemodel/area-ident.type";
3
+ import { AreaModelIf } from "../../data/tablemodel/areamodel/area-model.if";
4
+ import { DomServiceIf } from "../../service/dom-service.if";
5
+ import { RendererCleanupFnType } from "../renderer-cleanup-fn.type";
6
+
7
+
8
+ export class InputCellRenderer implements CellRendererIf {
9
+
10
+
11
+ render(
12
+ cellDiv: HTMLDivElement,
13
+ rowIndex: number,
14
+ columnIndex: number,
15
+ areaIdent: AreaIdent,
16
+ areaModel: AreaModelIf,
17
+ _cellValue: any,
18
+ domService: DomServiceIf): RendererCleanupFnType | undefined {
19
+
20
+ if (areaModel.isEditable(rowIndex, columnIndex)) {
21
+ domService.addClass(cellDiv, "ge-table-row-input-div");
22
+
23
+ const val = areaModel.getValueAt(rowIndex, columnIndex);
24
+ cellDiv.innerHTML = `
25
+ <input
26
+ type="text"
27
+ value="${val}"
28
+ autofocus
29
+ onfocus="this.setSelectionRange(0, this.value.length)"
30
+ data-listen="change"
31
+ data-area="${areaIdent}"
32
+ data-row-index="${rowIndex}"
33
+ data-col-index="${columnIndex}"
34
+ data-input-type="text"
35
+ style="width:calc(100% - 8px);height:100%;border:0;padding:0 0 0 8px;"
36
+ class="ge-table-cell-editor-input">`;
37
+ }
38
+ return undefined;
39
+ }
40
+
41
+ }
@@ -0,0 +1,60 @@
1
+ import { CellRendererIf } from "../cell-render.if";
2
+ import { AreaIdent } from "../../data/tablemodel/area-ident.type";
3
+ import { AreaModelIf } from "../../data/tablemodel/areamodel/area-model.if";
4
+ import { DomServiceIf } from "../../service/dom-service.if";
5
+ import { RendererCleanupFnType } from "../renderer-cleanup-fn.type";
6
+ import { ValueLabelIf } from "../../data/common/value-label.if";
7
+ import { ValueLabel } from "../../data/common/value-label";
8
+
9
+
10
+ export class SelectCellRenderer implements CellRendererIf {
11
+
12
+ constructor(
13
+ protected options: ValueLabelIf[]
14
+ ) {
15
+ }
16
+
17
+ static create(values: string[]) {
18
+ return new SelectCellRenderer(
19
+ values.map(v => new ValueLabel(v, v))
20
+ );
21
+ }
22
+
23
+ render(
24
+ cellDiv: HTMLDivElement,
25
+ rowIndex: number,
26
+ columnIndex: number,
27
+ areaIdent: AreaIdent,
28
+ areaModel: AreaModelIf,
29
+ _cellValue: any,
30
+ domService: DomServiceIf): RendererCleanupFnType | undefined {
31
+
32
+ if (areaModel.isEditable(rowIndex, columnIndex)) {
33
+ domService.addClass(cellDiv, "ge-table-row-select-div");
34
+
35
+ const val = areaModel.getValueAt(rowIndex, columnIndex);
36
+
37
+ let opts = [];
38
+ for (let option of this.options) {
39
+ const selected = (option.value === val) ? " selected " : "";
40
+ opts.push(`<option value="${option.value}" ${selected}>${option.label}</option>`);
41
+ }
42
+ const o = opts.join("");
43
+
44
+ cellDiv.innerHTML = `
45
+ <select
46
+ type="text"
47
+ value="${val}"
48
+ autofocus
49
+ data-listen="change"
50
+ data-area="${areaIdent}"
51
+ data-row-index="${rowIndex}"
52
+ data-col-index="${columnIndex}"
53
+ data-input-type="text"
54
+ style="width:100%;height:100%;border:0;padding:0 0 0 8px;"
55
+ class="ge-table-cell-editor-select">${o}</select>`;
56
+ }
57
+ return undefined;
58
+ }
59
+
60
+ }
@@ -0,0 +1,26 @@
1
+ import { AreaModelIf } from "../data/tablemodel/areamodel/area-model.if";
2
+ import { CellRendererIf } from "./cell-render.if";
3
+ import { DomServiceIf } from "../service/dom-service.if";
4
+ import { AreaIdent } from "../data/tablemodel/area-ident.type";
5
+ import { RendererCleanupFnType } from "./renderer-cleanup-fn.type";
6
+
7
+
8
+ export class MaleFemaleToIconCellRenderer implements CellRendererIf {
9
+
10
+ render(
11
+ cellDiv: HTMLDivElement,
12
+ _rowIndex: number,
13
+ _columnIndex: number,
14
+ _areaIdent: AreaIdent,
15
+ _areaModel: AreaModelIf,
16
+ cellValue: any,
17
+ _domService: DomServiceIf): RendererCleanupFnType | undefined {
18
+ if (cellValue === "male" || cellValue === "m") {
19
+ cellDiv.innerText = "♂";
20
+ } else if (cellValue === "female" || cellValue === "f") {
21
+ cellDiv.innerText = "♀";
22
+ }
23
+ return undefined;
24
+ }
25
+
26
+ }
@@ -0,0 +1,38 @@
1
+ import { CellRendererIf } from "./cell-render.if";
2
+ import { AreaModelIf } from "../data/tablemodel/areamodel/area-model.if";
3
+ import { DomServiceIf } from "../service/dom-service.if";
4
+ import { AreaIdent } from "../data/tablemodel/area-ident.type";
5
+ import { RendererCleanupFnType } from "./renderer-cleanup-fn.type";
6
+
7
+
8
+ export class NumberCellRenderer implements CellRendererIf {
9
+
10
+ constructor(
11
+ protected min: number = Number.MIN_SAFE_INTEGER,
12
+ protected max: number = Number.MAX_SAFE_INTEGER) {
13
+ }
14
+
15
+ render(
16
+ cellDiv: HTMLDivElement,
17
+ _rowIndex: number,
18
+ _columnIndex: number,
19
+ _areaIdent: AreaIdent,
20
+ _areaModel: AreaModelIf,
21
+ cellValue: any,
22
+ domService: DomServiceIf): RendererCleanupFnType | undefined {
23
+
24
+ if (cellValue) {
25
+ cellDiv.innerText = cellValue;
26
+ if (typeof cellValue === "string"
27
+ || isNaN(cellValue)
28
+ || cellValue < this.min
29
+ || cellValue > this.max
30
+ ) {
31
+ domService.addClass(cellDiv, "ge-cell-error");
32
+ }
33
+ }
34
+ return undefined;
35
+ }
36
+
37
+ }
38
+
@@ -0,0 +1,11 @@
1
+ import { CellRendererIf } from "./cell-render.if";
2
+ import { AreaObjectMap } from "../data/common/area-map";
3
+
4
+
5
+ export class Renderer {
6
+
7
+ static bodyRenderer(bodyCellRenderer: CellRendererIf): AreaObjectMap<CellRendererIf> {
8
+ return new AreaObjectMap<CellRendererIf>(undefined, bodyCellRenderer, undefined);
9
+ }
10
+
11
+ }
@@ -0,0 +1,28 @@
1
+ import { AreaModelIf } from "../data/tablemodel/areamodel/area-model.if";
2
+ import { CellRendererIf } from "./cell-render.if";
3
+ import { DomServiceIf } from "../service/dom-service.if";
4
+ import { AreaIdent } from "../data/tablemodel/area-ident.type";
5
+ import { RendererCleanupFnType } from "./renderer-cleanup-fn.type";
6
+
7
+
8
+ export class TrueFalseCellRenderer implements CellRendererIf {
9
+
10
+ render(
11
+ cellDiv: HTMLDivElement,
12
+ _rowIndex: number,
13
+ _columnIndex: number,
14
+ _areaIdent: AreaIdent,
15
+ _areaModel: AreaModelIf,
16
+ cellValue: any,
17
+ _domService: DomServiceIf): RendererCleanupFnType | undefined {
18
+ if (cellValue === "true" || cellValue === true) {
19
+ cellDiv.innerHTML = "<span class=\"ge-true-text-color\">✅</span>";
20
+ } else if (cellValue === "false" || cellValue === false) {
21
+ cellDiv.innerHTML = "<span class=\"ge-false-text-color\">❌</span>";
22
+ } else {
23
+ cellDiv.innerText = "";
24
+ }
25
+ return undefined;
26
+ }
27
+
28
+ }
@@ -0,0 +1,20 @@
1
+ import { CellRange } from "../data/common/cell-range";
2
+
3
+ export interface SelectionModelIf {
4
+
5
+ togglePoint(row: number, col: number): void;
6
+
7
+ getRanges(): CellRange[];
8
+
9
+ clear(): void;
10
+
11
+ hasSelection(): boolean;
12
+
13
+ addSelection(range: CellRange): void;
14
+
15
+ removeSelection(range: CellRange): void;
16
+
17
+ getSelectionCount(rowIndex: number, columnIndex: number): number;
18
+
19
+ selectAll(): void;
20
+ }
@@ -0,0 +1,109 @@
1
+ import { CellRange } from "../data/common/cell-range";
2
+ import { SelectionMode, SelectionType } from "./selection.type";
3
+ import { SelectionModelIf } from "./selection-model.if";
4
+
5
+ export class SelectionModel implements SelectionModelIf {
6
+
7
+ protected ranges: CellRange[] = [];
8
+ protected negativeRanges: CellRange[] = [];
9
+ protected allSelected: boolean = false;
10
+
11
+ constructor(
12
+ public selectionType: SelectionType = "none",
13
+ public selectionMode: SelectionMode = "single"
14
+ ) {
15
+ }
16
+
17
+ getSelectionCount(rowIndex: number, columnIndex: number): number {
18
+ let count = 0;
19
+ for (const range of this.ranges) {
20
+ if (range.isInRange(rowIndex, columnIndex)) {
21
+ count++;
22
+ }
23
+ }
24
+ if (this.allSelected) {
25
+ count++;
26
+ }
27
+ if (this.isInNegativeRange(rowIndex, columnIndex)) {
28
+ count = 0;
29
+ }
30
+ return count;
31
+ }
32
+
33
+ isInNegativeRange(rowIndex: number, columnIndex: number): boolean {
34
+ for (const range of this.negativeRanges) {
35
+ if (range.isInRange(rowIndex, columnIndex)) {
36
+ return true;
37
+ }
38
+ }
39
+ return false;
40
+ }
41
+
42
+ getRanges() {
43
+ return this.ranges;
44
+ }
45
+
46
+ clear(): void {
47
+ this.ranges = [];
48
+ this.negativeRanges = [];
49
+ this.allSelected = false;
50
+ }
51
+
52
+ hasSelection(): boolean {
53
+ return !!this.ranges.length;
54
+ }
55
+
56
+ selectAll() {
57
+ this.allSelected = true;
58
+ }
59
+
60
+ addSelection(range: CellRange): void {
61
+ this.addRange(range);
62
+ }
63
+
64
+ removeSelection(range: CellRange): void {
65
+ if (this.selectionType === "none") {
66
+ return; // skip!
67
+ }
68
+ let r = range;
69
+ if (this.selectionType === "row") {
70
+ r = CellRange.singleRow(range.r1);
71
+ } else if (this.selectionType === "column") {
72
+ r = CellRange.singleColumn(range.c1);
73
+ }
74
+ this.negativeRanges.push(r);
75
+ }
76
+
77
+ togglePoint(row: number, col: number): void {
78
+ if (this.getSelectionCount(row, col) > 0) {
79
+ this.removeSelection(CellRange.singleCell(row, col));
80
+ } else {
81
+ this.addSelection(CellRange.singleCell(row, col));
82
+ }
83
+ }
84
+
85
+
86
+ private addRange(range: CellRange) {
87
+ if (this.selectionType === "none") {
88
+ return; // skip!
89
+ }
90
+ this.allSelected = false;
91
+ if (this.selectionMode === "single") {
92
+ this.ranges = [];
93
+ }
94
+ if (this.selectionType === "row") {
95
+ range.c1 = 0;
96
+ range.c2 = Number.MAX_SAFE_INTEGER;
97
+ } else if (this.selectionType === "column") {
98
+ range.r1 = 0;
99
+ range.r2 = Number.MAX_SAFE_INTEGER;
100
+ } else if (this.selectionType === "cell") {
101
+ range.r2 = range.r1;
102
+ range.c2 = range.c1;
103
+ } else if (this.selectionType === "range") {
104
+ //
105
+ }
106
+ this.ranges.push(range);
107
+ }
108
+
109
+ }