@guiexpert/table 0.0.1 → 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 (350) 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 +9 -20
  7. package/project.json +47 -0
  8. package/src/index.ts +156 -0
  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 -10
  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/filter-function.ts +1 -0
  43. package/src/lib/table/data/common/get-t.ts +1 -0
  44. package/src/lib/table/data/common/index-and-px.ts +9 -0
  45. package/src/lib/table/data/common/size.if.ts +4 -0
  46. package/src/lib/table/data/common/size.ts +9 -0
  47. package/src/lib/table/data/common/sizes.ts +35 -0
  48. package/src/lib/table/data/common/sort-item.ts +11 -0
  49. package/src/lib/table/data/common/sort-state.type.ts +1 -0
  50. package/src/lib/table/data/common/tree-arrow.type.ts +1 -0
  51. package/src/lib/table/data/common/tree-row-if.ts +11 -0
  52. package/src/lib/table/data/common/tree-row.ts +16 -0
  53. package/src/lib/table/data/common/value-label.if.ts +6 -0
  54. package/src/lib/table/data/common/value-label.ts +13 -0
  55. package/src/lib/table/data/div-scope.type.ts +5 -0
  56. package/src/lib/table/data/event/mouse-target-data.ts +45 -0
  57. package/src/lib/table/data/geo-data.ts +13 -0
  58. package/src/lib/table/data/options/auto-restore-options.if.ts +21 -0
  59. package/src/lib/table/data/options/auto-restore-options.ts +50 -0
  60. package/src/lib/table/data/options/default-row-heights.if.ts +5 -0
  61. package/src/lib/table/data/options/default-row-heights.ts +10 -0
  62. package/src/lib/table/data/options/icon.if.ts +7 -0
  63. package/src/lib/table/data/options/icon.ts +10 -0
  64. package/{lib/table/data/options/sorted-options.if.d.ts → src/lib/table/data/options/sorted-options.if.ts} +6 -3
  65. package/src/lib/table/data/options/sorted-options.ts +15 -0
  66. package/src/lib/table/data/options/table-options.if.ts +54 -0
  67. package/src/lib/table/data/options/table-options.ts +66 -0
  68. package/src/lib/table/data/options/tree-options.if.ts +10 -0
  69. package/src/lib/table/data/options/tree-options.ts +32 -0
  70. package/src/lib/table/data/side-ident.type.ts +1 -0
  71. package/src/lib/table/data/table-model-and-options.if.ts +8 -0
  72. package/src/lib/table/data/table-model-and-options.ts +13 -0
  73. package/src/lib/table/data/tablemodel/area-ident.type.ts +18 -0
  74. package/src/lib/table/data/tablemodel/areamodel/abstract-area-model.ts +183 -0
  75. package/src/lib/table/data/tablemodel/areamodel/area-model-array-of-arrays.ts +59 -0
  76. package/src/lib/table/data/tablemodel/areamodel/area-model-cell-groups.ts +210 -0
  77. package/src/lib/table/data/tablemodel/areamodel/area-model-hidden.ts +120 -0
  78. package/src/lib/table/data/tablemodel/areamodel/area-model-object-array-with-columndefs.ts +23 -0
  79. package/src/lib/table/data/tablemodel/areamodel/area-model-object-array.ts +105 -0
  80. package/src/lib/table/data/tablemodel/areamodel/area-model-tree.ts +215 -0
  81. package/src/lib/table/data/tablemodel/areamodel/area-model.if.ts +186 -0
  82. package/src/lib/table/data/tablemodel/areamodel/area-model.ts +110 -0
  83. package/src/lib/table/data/tablemodel/areamodel/col-and-rowspan-model.ts +61 -0
  84. package/src/lib/table/data/tablemodel/areamodel/has-default-row-height-if.ts +3 -0
  85. package/src/lib/table/data/tablemodel/cellgroup/cell-group-ext.ts +167 -0
  86. package/src/lib/table/data/tablemodel/cellgroup/cell-group.if.ts +12 -0
  87. package/src/lib/table/data/tablemodel/cellgroup/cell-group.ts +18 -0
  88. package/src/lib/table/data/tablemodel/cellgroup/cellgroup-factory.ts +148 -0
  89. package/src/lib/table/data/tablemodel/column/column-def.if.ts +28 -0
  90. package/src/lib/table/data/tablemodel/column/column-def.ts +104 -0
  91. package/src/lib/table/data/tablemodel/padding.ts +9 -0
  92. package/src/lib/table/data/tablemodel/table-model.if.ts +90 -0
  93. package/src/lib/table/data/tablemodel/table-model.ts +352 -0
  94. package/src/lib/table/ele-scope.ts +283 -0
  95. package/src/lib/table/event-adapter.ts +28 -0
  96. package/src/lib/table/event-listener.if.ts +19 -0
  97. package/src/lib/table/factory/table-factory.ts +378 -0
  98. package/src/lib/table/factory/tree-factory.ts +51 -0
  99. package/src/lib/table/focus/focus-model.if.ts +14 -0
  100. package/src/lib/table/focus/focus-model.ts +48 -0
  101. package/src/lib/table/focus/focus.type.ts +4 -0
  102. package/src/lib/table/input-handler.ts +34 -0
  103. package/src/lib/table/mouse-handler.ts +237 -0
  104. package/src/lib/table/render-scope.ts +936 -0
  105. package/src/lib/table/renderer/cell-group-ext-cell-renderer.ts +27 -0
  106. package/{lib/table/renderer/cell-render.if.d.ts → src/lib/table/renderer/cell-render.if.ts} +10 -1
  107. package/src/lib/table/renderer/checkbox-boolean-property-cell-renderer.ts +58 -0
  108. package/src/lib/table/renderer/checkbox-cell-renderer.ts +39 -0
  109. package/src/lib/table/renderer/date-to-int-date-cell-renderer.ts +34 -0
  110. package/src/lib/table/renderer/date-to-iso-cell-renderer.ts +25 -0
  111. package/src/lib/table/renderer/date-to-locale-date-cell-renderer.ts +24 -0
  112. package/src/lib/table/renderer/date-to-tec-cell-renderer.ts +28 -0
  113. package/src/lib/table/renderer/edit/edit-cell-renderer.type.ts +3 -0
  114. package/src/lib/table/renderer/edit/edit-input-pipe-for-number.ts +6 -0
  115. package/src/lib/table/renderer/edit/edit-input-pipe.if.ts +7 -0
  116. package/src/lib/table/renderer/edit/input-cell-renderer.ts +41 -0
  117. package/src/lib/table/renderer/edit/select-cell-renderer.ts +60 -0
  118. package/src/lib/table/renderer/male-female-to-icon-cell-renderer.ts +26 -0
  119. package/src/lib/table/renderer/number-cell-renderer.ts +38 -0
  120. package/src/lib/table/renderer/renderer-cleanup-fn.type.ts +1 -0
  121. package/src/lib/table/renderer/renderer.ts +11 -0
  122. package/src/lib/table/renderer/true-false-cell-renderer.ts +28 -0
  123. package/src/lib/table/selection/selection-model.if.ts +20 -0
  124. package/src/lib/table/selection/selection-model.ts +109 -0
  125. package/src/lib/table/selection/selection-service.ts +120 -0
  126. package/src/lib/table/selection/selection.type.ts +5 -0
  127. package/src/lib/table/service/abstract-store-state.service.ts +105 -0
  128. package/src/lib/table/service/convenience-dom.service.ts +548 -0
  129. package/src/lib/table/service/data/collapsed-expanded.data.ts +11 -0
  130. package/src/lib/table/service/data/html-style.type.ts +1 -0
  131. package/src/lib/table/service/dom-service.if.ts +16 -0
  132. package/src/lib/table/service/ge-filter.service.ts +123 -0
  133. package/src/lib/table/service/simple-dom-service.ts +46 -0
  134. package/src/lib/table/service/sorter.service.ts +30 -0
  135. package/src/lib/table/service/store-state-collapsed-expand.service.ts +76 -0
  136. package/src/lib/table/service/store-state-scroll-pos.service.ts +40 -0
  137. package/src/lib/table/service/store-state-sorting.service.ts +41 -0
  138. package/src/lib/table/service/tree-row.service.ts +31 -0
  139. package/src/lib/table/table-api.ts +61 -0
  140. package/src/lib/table/table-scope.ts +433 -0
  141. package/src/test-setup.ts +1 -0
  142. package/tsconfig.json +22 -0
  143. package/tsconfig.lib.json +19 -0
  144. package/tsconfig.lib.prod.json +7 -0
  145. package/tsconfig.spec.json +20 -0
  146. package/esm2020/guiexpert-table.mjs +0 -5
  147. package/esm2020/index.mjs +0 -102
  148. package/esm2020/lib/table/action/action-id.type.mjs +0 -20
  149. package/esm2020/lib/table/action/on-action-triggered.if.mjs +0 -2
  150. package/esm2020/lib/table/action/osx-shortcut-actionId-mapping.mjs +0 -17
  151. package/esm2020/lib/table/action/shortcut-actionid-mapping.type.mjs +0 -2
  152. package/esm2020/lib/table/action/shortcut.service.mjs +0 -105
  153. package/esm2020/lib/table/action/windows-shortcut-actionId-mapping.mjs +0 -15
  154. package/esm2020/lib/table/checkbox/checkbox-model.if.mjs +0 -2
  155. package/esm2020/lib/table/checkbox/checkbox-model.mjs +0 -52
  156. package/esm2020/lib/table/checkbox/tree-checkbox-model.mjs +0 -106
  157. package/esm2020/lib/table/data/common/aligns.mjs +0 -19
  158. package/esm2020/lib/table/data/common/area-map-factory.mjs +0 -7
  159. package/esm2020/lib/table/data/common/area-map.mjs +0 -8
  160. package/esm2020/lib/table/data/common/area-map.type.mjs +0 -2
  161. package/esm2020/lib/table/data/common/args-adjust-columns-to-row-parent-params.mjs +0 -2
  162. package/esm2020/lib/table/data/common/args-render-cell-div.mjs +0 -2
  163. package/esm2020/lib/table/data/common/boolean-function.mjs +0 -3
  164. package/esm2020/lib/table/data/common/cell-range.mjs +0 -27
  165. package/esm2020/lib/table/data/common/checkbox-column.mjs +0 -15
  166. package/esm2020/lib/table/data/common/checked-type.mjs +0 -2
  167. package/esm2020/lib/table/data/common/event/ge-cell-indices.mjs +0 -7
  168. package/esm2020/lib/table/data/common/event/ge-key-event.mjs +0 -7
  169. package/esm2020/lib/table/data/common/event/ge-model-change-event.mjs +0 -10
  170. package/esm2020/lib/table/data/common/event/ge-mouse-event.mjs +0 -19
  171. package/esm2020/lib/table/data/common/filter-function.mjs +0 -2
  172. package/esm2020/lib/table/data/common/get-t.mjs +0 -2
  173. package/esm2020/lib/table/data/common/index-and-px.mjs +0 -7
  174. package/esm2020/lib/table/data/common/size.if.mjs +0 -2
  175. package/esm2020/lib/table/data/common/size.mjs +0 -7
  176. package/esm2020/lib/table/data/common/sizes.mjs +0 -33
  177. package/esm2020/lib/table/data/common/sort-item.mjs +0 -7
  178. package/esm2020/lib/table/data/common/sort-state.type.mjs +0 -2
  179. package/esm2020/lib/table/data/common/tree-arrow.type.mjs +0 -2
  180. package/esm2020/lib/table/data/common/tree-row-if.mjs +0 -2
  181. package/esm2020/lib/table/data/common/tree-row.mjs +0 -12
  182. package/esm2020/lib/table/data/common/value-label.if.mjs +0 -2
  183. package/esm2020/lib/table/data/common/value-label.mjs +0 -7
  184. package/esm2020/lib/table/data/div-scope.type.mjs +0 -2
  185. package/esm2020/lib/table/data/geo-data.mjs +0 -10
  186. package/esm2020/lib/table/data/options/auto-restore-options.if.mjs +0 -2
  187. package/esm2020/lib/table/data/options/auto-restore-options.mjs +0 -42
  188. package/esm2020/lib/table/data/options/default-row-heights.if.mjs +0 -2
  189. package/esm2020/lib/table/data/options/default-row-heights.mjs +0 -8
  190. package/esm2020/lib/table/data/options/icon.if.mjs +0 -2
  191. package/esm2020/lib/table/data/options/icon.mjs +0 -8
  192. package/esm2020/lib/table/data/options/sorted-options.if.mjs +0 -2
  193. package/esm2020/lib/table/data/options/sorted-options.mjs +0 -9
  194. package/esm2020/lib/table/data/options/table-options.if.mjs +0 -2
  195. package/esm2020/lib/table/data/options/table-options.mjs +0 -38
  196. package/esm2020/lib/table/data/options/tree-options.if.mjs +0 -2
  197. package/esm2020/lib/table/data/options/tree-options.mjs +0 -10
  198. package/esm2020/lib/table/data/side-ident.type.mjs +0 -2
  199. package/esm2020/lib/table/data/tablemodel/area-ident.type.mjs +0 -10
  200. package/esm2020/lib/table/data/tablemodel/areamodel/abstract-area-model.mjs +0 -108
  201. package/esm2020/lib/table/data/tablemodel/areamodel/area-model-array-array.mjs +0 -34
  202. package/esm2020/lib/table/data/tablemodel/areamodel/area-model-hidden.mjs +0 -76
  203. package/esm2020/lib/table/data/tablemodel/areamodel/area-model-object-array-with-columndefs.mjs +0 -11
  204. package/esm2020/lib/table/data/tablemodel/areamodel/area-model-object-array.mjs +0 -79
  205. package/esm2020/lib/table/data/tablemodel/areamodel/area-model-tree.mjs +0 -166
  206. package/esm2020/lib/table/data/tablemodel/areamodel/area-model.if.mjs +0 -2
  207. package/esm2020/lib/table/data/tablemodel/areamodel/col-and-rowspan-model.mjs +0 -48
  208. package/esm2020/lib/table/data/tablemodel/column/column-def.if.mjs +0 -2
  209. package/esm2020/lib/table/data/tablemodel/column/column-def.mjs +0 -32
  210. package/esm2020/lib/table/data/tablemodel/padding.mjs +0 -9
  211. package/esm2020/lib/table/data/tablemodel/table-model.if.mjs +0 -2
  212. package/esm2020/lib/table/data/tablemodel/table-model.mjs +0 -262
  213. package/esm2020/lib/table/ele-scope.mjs +0 -173
  214. package/esm2020/lib/table/event-listener.if.mjs +0 -2
  215. package/esm2020/lib/table/focus/focus-model.if.mjs +0 -2
  216. package/esm2020/lib/table/focus/focus-model.mjs +0 -22
  217. package/esm2020/lib/table/focus/focus.type.mjs +0 -2
  218. package/esm2020/lib/table/input-handler.mjs +0 -24
  219. package/esm2020/lib/table/mouse-handler.mjs +0 -197
  220. package/esm2020/lib/table/render-scope.mjs +0 -575
  221. package/esm2020/lib/table/renderer/cell-render.if.mjs +0 -2
  222. package/esm2020/lib/table/renderer/checkbox-cell-renderer.mjs +0 -22
  223. package/esm2020/lib/table/renderer/date-to-int-date-cell-renderer.mjs +0 -21
  224. package/esm2020/lib/table/renderer/date-to-iso-cell-renderer.mjs +0 -9
  225. package/esm2020/lib/table/renderer/date-to-locale-date-cell-renderer.mjs +0 -9
  226. package/esm2020/lib/table/renderer/edit/edit-cell-renderer.type.mjs +0 -2
  227. package/esm2020/lib/table/renderer/edit/input-cell-renderer.mjs +0 -23
  228. package/esm2020/lib/table/renderer/edit/select-cell-renderer.mjs +0 -35
  229. package/esm2020/lib/table/renderer/male-female-to-icon-cell-renderer.mjs +0 -12
  230. package/esm2020/lib/table/renderer/number-cell-renderer.mjs +0 -19
  231. package/esm2020/lib/table/renderer/renderer-cleanup-fn.type.mjs +0 -2
  232. package/esm2020/lib/table/renderer/renderer.mjs +0 -7
  233. package/esm2020/lib/table/selection/selection-model.if.mjs +0 -2
  234. package/esm2020/lib/table/selection/selection-model.mjs +0 -97
  235. package/esm2020/lib/table/selection/selection-service.mjs +0 -97
  236. package/esm2020/lib/table/selection/selection.type.mjs +0 -2
  237. package/esm2020/lib/table/service/abstract-store-state.service.mjs +0 -49
  238. package/esm2020/lib/table/service/convenience-dom.service.mjs +0 -386
  239. package/esm2020/lib/table/service/data/collapsed-expanded.data.mjs +0 -9
  240. package/esm2020/lib/table/service/data/html-style.type.mjs +0 -2
  241. package/esm2020/lib/table/service/dom-service.if.mjs +0 -2
  242. package/esm2020/lib/table/service/ge-filter.service.mjs +0 -98
  243. package/esm2020/lib/table/service/sorter.service.mjs +0 -27
  244. package/esm2020/lib/table/service/store-state-collapsed-expand.service.mjs +0 -57
  245. package/esm2020/lib/table/service/store-state-scroll-pos.service.mjs +0 -29
  246. package/esm2020/lib/table/service/store-state-sorting.service.mjs +0 -29
  247. package/esm2020/lib/table/service/tree-row.service.mjs +0 -23
  248. package/esm2020/lib/table/table-api.mjs +0 -38
  249. package/esm2020/lib/table/table-model-factory.mjs +0 -125
  250. package/esm2020/lib/table/table-scope.mjs +0 -307
  251. package/index.d.ts +0 -103
  252. package/lib/table/action/action-id.type.d.ts +0 -2
  253. package/lib/table/action/osx-shortcut-actionId-mapping.d.ts +0 -6
  254. package/lib/table/action/shortcut-actionid-mapping.type.d.ts +0 -4
  255. package/lib/table/action/shortcut.service.d.ts +0 -17
  256. package/lib/table/action/windows-shortcut-actionId-mapping.d.ts +0 -6
  257. package/lib/table/checkbox/checkbox-model.d.ts +0 -12
  258. package/lib/table/checkbox/checkbox-model.if.d.ts +0 -9
  259. package/lib/table/checkbox/tree-checkbox-model.d.ts +0 -17
  260. package/lib/table/data/common/aligns.d.ts +0 -24
  261. package/lib/table/data/common/area-map-factory.d.ts +0 -5
  262. package/lib/table/data/common/area-map.d.ts +0 -7
  263. package/lib/table/data/common/area-map.type.d.ts +0 -5
  264. package/lib/table/data/common/args-render-cell-div.d.ts +0 -13
  265. package/lib/table/data/common/boolean-function.d.ts +0 -3
  266. package/lib/table/data/common/cell-range.d.ts +0 -17
  267. package/lib/table/data/common/checkbox-column.d.ts +0 -13
  268. package/lib/table/data/common/checked-type.d.ts +0 -1
  269. package/lib/table/data/common/event/ge-cell-indices.d.ts +0 -5
  270. package/lib/table/data/common/event/ge-key-event.d.ts +0 -5
  271. package/lib/table/data/common/event/ge-model-change-event.d.ts +0 -6
  272. package/lib/table/data/common/event/ge-mouse-event.d.ts +0 -17
  273. package/lib/table/data/common/filter-function.d.ts +0 -1
  274. package/lib/table/data/common/get-t.d.ts +0 -1
  275. package/lib/table/data/common/index-and-px.d.ts +0 -5
  276. package/lib/table/data/common/size.d.ts +0 -6
  277. package/lib/table/data/common/size.if.d.ts +0 -4
  278. package/lib/table/data/common/sizes.d.ts +0 -32
  279. package/lib/table/data/common/sort-item.d.ts +0 -6
  280. package/lib/table/data/common/sort-state.type.d.ts +0 -1
  281. package/lib/table/data/common/tree-arrow.type.d.ts +0 -1
  282. package/lib/table/data/common/tree-row-if.d.ts +0 -10
  283. package/lib/table/data/common/tree-row.d.ts +0 -11
  284. package/lib/table/data/common/value-label.d.ts +0 -6
  285. package/lib/table/data/common/value-label.if.d.ts +0 -4
  286. package/lib/table/data/div-scope.type.d.ts +0 -7
  287. package/lib/table/data/geo-data.d.ts +0 -8
  288. package/lib/table/data/options/auto-restore-options.d.ts +0 -11
  289. package/lib/table/data/options/auto-restore-options.if.d.ts +0 -13
  290. package/lib/table/data/options/default-row-heights.d.ts +0 -7
  291. package/lib/table/data/options/default-row-heights.if.d.ts +0 -5
  292. package/lib/table/data/options/icon.d.ts +0 -7
  293. package/lib/table/data/options/icon.if.d.ts +0 -5
  294. package/lib/table/data/options/sorted-options.d.ts +0 -8
  295. package/lib/table/data/options/table-options.d.ts +0 -36
  296. package/lib/table/data/options/table-options.if.d.ts +0 -37
  297. package/lib/table/data/options/tree-options.d.ts +0 -9
  298. package/lib/table/data/options/tree-options.if.d.ts +0 -7
  299. package/lib/table/data/side-ident.type.d.ts +0 -1
  300. package/lib/table/data/tablemodel/area-ident.type.d.ts +0 -2
  301. package/lib/table/data/tablemodel/areamodel/abstract-area-model.d.ts +0 -43
  302. package/lib/table/data/tablemodel/areamodel/area-model-array-array.d.ts +0 -18
  303. package/lib/table/data/tablemodel/areamodel/area-model-hidden.d.ts +0 -32
  304. package/lib/table/data/tablemodel/areamodel/area-model-object-array-with-columndefs.d.ts +0 -10
  305. package/lib/table/data/tablemodel/areamodel/area-model-object-array.d.ts +0 -27
  306. package/lib/table/data/tablemodel/areamodel/area-model-tree.d.ts +0 -39
  307. package/lib/table/data/tablemodel/areamodel/area-model.if.d.ts +0 -33
  308. package/lib/table/data/tablemodel/areamodel/col-and-rowspan-model.d.ts +0 -12
  309. package/lib/table/data/tablemodel/column/column-def.d.ts +0 -46
  310. package/lib/table/data/tablemodel/column/column-def.if.d.ts +0 -22
  311. package/lib/table/data/tablemodel/padding.d.ts +0 -7
  312. package/lib/table/data/tablemodel/table-model.d.ts +0 -60
  313. package/lib/table/data/tablemodel/table-model.if.d.ts +0 -34
  314. package/lib/table/ele-scope.d.ts +0 -37
  315. package/lib/table/event-listener.if.d.ts +0 -11
  316. package/lib/table/focus/focus-model.d.ts +0 -12
  317. package/lib/table/focus/focus-model.if.d.ts +0 -6
  318. package/lib/table/focus/focus.type.d.ts +0 -1
  319. package/lib/table/input-handler.d.ts +0 -6
  320. package/lib/table/mouse-handler.d.ts +0 -27
  321. package/lib/table/render-scope.d.ts +0 -77
  322. package/lib/table/renderer/checkbox-cell-renderer.d.ts +0 -8
  323. package/lib/table/renderer/date-to-int-date-cell-renderer.d.ts +0 -9
  324. package/lib/table/renderer/date-to-iso-cell-renderer.d.ts +0 -8
  325. package/lib/table/renderer/date-to-locale-date-cell-renderer.d.ts +0 -8
  326. package/lib/table/renderer/edit/edit-cell-renderer.type.d.ts +0 -2
  327. package/lib/table/renderer/edit/input-cell-renderer.d.ts +0 -8
  328. package/lib/table/renderer/edit/select-cell-renderer.d.ts +0 -12
  329. package/lib/table/renderer/male-female-to-icon-cell-renderer.d.ts +0 -8
  330. package/lib/table/renderer/number-cell-renderer.d.ts +0 -11
  331. package/lib/table/renderer/renderer-cleanup-fn.type.d.ts +0 -1
  332. package/lib/table/renderer/renderer.d.ts +0 -5
  333. package/lib/table/selection/selection-model.d.ts +0 -21
  334. package/lib/table/selection/selection-model.if.d.ts +0 -11
  335. package/lib/table/selection/selection-service.d.ts +0 -17
  336. package/lib/table/selection/selection.type.d.ts +0 -2
  337. package/lib/table/service/abstract-store-state.service.d.ts +0 -10
  338. package/lib/table/service/convenience-dom.service.d.ts +0 -44
  339. package/lib/table/service/data/collapsed-expanded.data.d.ts +0 -7
  340. package/lib/table/service/data/html-style.type.d.ts +0 -3
  341. package/lib/table/service/dom-service.if.d.ts +0 -9
  342. package/lib/table/service/ge-filter.service.d.ts +0 -5
  343. package/lib/table/service/sorter.service.d.ts +0 -3
  344. package/lib/table/service/store-state-collapsed-expand.service.d.ts +0 -15
  345. package/lib/table/service/store-state-scroll-pos.service.d.ts +0 -10
  346. package/lib/table/service/store-state-sorting.service.d.ts +0 -11
  347. package/lib/table/service/tree-row.service.d.ts +0 -5
  348. package/lib/table/table-api.d.ts +0 -16
  349. package/lib/table/table-model-factory.d.ts +0 -61
  350. package/lib/table/table-scope.d.ts +0 -55
@@ -1,307 +0,0 @@
1
- import { GeMouseEvent } from "./data/common/event/ge-mouse-event";
2
- import { ConvenienceDomService } from "./service/convenience-dom.service";
3
- import { MouseHandler } from "./mouse-handler";
4
- import { TableApi } from "./table-api";
5
- import { AreaModelTree } from "./data/tablemodel/areamodel/area-model-tree";
6
- import { StoreStateScrollPosService } from "./service/store-state-scroll-pos.service";
7
- import { StoreStateCollapsedExpandService } from "./service/store-state-collapsed-expand.service";
8
- import { StoreStateSortingService } from "./service/store-state-sorting.service";
9
- import { RenderScope } from "./render-scope";
10
- import { SortItem } from "./data/common/sort-item";
11
- import { InputHandler } from "./input-handler";
12
- import { GeModelChangeEvent } from "./data/common/event/ge-model-change-event";
13
- import { SelectionService } from "./selection/selection-service";
14
- import { ShortcutService } from "./action/shortcut.service";
15
- export class TableScope extends RenderScope {
16
- constructor(hostElement, tableModel, domService, tableOptions, eventListener) {
17
- super(hostElement, tableModel, new ConvenienceDomService(domService), tableOptions);
18
- this.eventListener = eventListener;
19
- this.selectionService = new SelectionService(this);
20
- this.api = new TableApi(this);
21
- this.mouseStartAction = '';
22
- this.mouseStartWidth = -1;
23
- this.mouseStartColumnIndex = -1;
24
- this.dragFrom = -1;
25
- this.dragTo = -1;
26
- if (this.tableOptions?.autoRestoreOptions) {
27
- const autoRestoreOptions = this.tableOptions.autoRestoreOptions;
28
- const keyFn = autoRestoreOptions.getStorageKeyFn;
29
- if (keyFn) {
30
- if (autoRestoreOptions.autoRestoreScrollPosition) {
31
- this.storeScrollPosStateService = new StoreStateScrollPosService(keyFn);
32
- }
33
- if (autoRestoreOptions.autoRestoreCollapsedExpandedState) {
34
- this.storeStateCollapsedExpandService = new StoreStateCollapsedExpandService(keyFn);
35
- }
36
- if (autoRestoreOptions.autoRestoreSortingState) {
37
- this.storeSortingService = new StoreStateSortingService(keyFn);
38
- }
39
- }
40
- }
41
- this.mouseHandler = new MouseHandler(this);
42
- this.inputHandler = new InputHandler(this);
43
- this.shortcutService = new ShortcutService(this);
44
- this.shortcutService.addListener(this.selectionService);
45
- }
46
- onActionTriggered(actionId) {
47
- if (actionId === 'START_EDITING') {
48
- if (this.getFocusModel) {
49
- const fm = this.getFocusModel();
50
- if (fm) {
51
- const [rowIdx, colIdx] = fm.getFocus();
52
- if (this.tableModel.getBodyModel().isEditable(rowIdx, colIdx)) {
53
- this.clearSelection();
54
- this.initRenderEditor(rowIdx, colIdx);
55
- }
56
- }
57
- }
58
- }
59
- return false;
60
- }
61
- updateModelValue(areaIdent, rowIndex, columnIndex, value) {
62
- if (areaIdent === 'body') {
63
- const bodyAreaModel = this.tableModel.getAreaModel(areaIdent);
64
- const ok = bodyAreaModel.setValue(rowIndex, columnIndex, value, this.tableModel);
65
- if (ok) {
66
- this.resetEditorRenderer();
67
- this.repaint();
68
- this.eventListener.onModelChanged(GeModelChangeEvent.createSingle(rowIndex, columnIndex));
69
- }
70
- }
71
- }
72
- getApi() {
73
- return this.api;
74
- }
75
- /*
76
- * Called by the table component
77
- */
78
- firstInit() {
79
- this.tableModel.init();
80
- this.autoRestoreCollapsedExpandedState();
81
- this.autoRestoreSortingState();
82
- this.resetSizeOfWrapperDiv();
83
- this.adjustContainersAndRows();
84
- this.autoRestoreScrollPosition();
85
- }
86
- createGeMouseEvent(mouseEvent) {
87
- const ret = new GeMouseEvent();
88
- ret.originalEvent = mouseEvent;
89
- if (mouseEvent) {
90
- const target = mouseEvent.target;
91
- [ret.areaIdent, ret.sideIdent] = this.getAreaAndSideIdentByAttr(target);
92
- ret.rowIndex = this.getNumberByAttr(target, 'data-row-index');
93
- ret.columnIndex = this.getNumberByAttr(target, 'data-col-index');
94
- ret.action = target.closest('[data-ge-action]')?.getAttribute('data-ge-action') ?? '';
95
- if (mouseEvent.ctrlKey && mouseEvent.altKey) {
96
- const bodyY = mouseEvent.clientY - this.hostElement.offsetTop - this.areaHeaderCenter.parent.clientHeight;
97
- const bodyX = mouseEvent.clientX - this.hostElement.offsetLeft - this.areaBodyWestGeo.width;
98
- this.debugOnce(bodyX, bodyY);
99
- }
100
- }
101
- return ret;
102
- }
103
- onMouseDown(mouseEvent) {
104
- if (mouseEvent.columnIndex > -1
105
- && mouseEvent.action
106
- && ['resize-column', 'drag-column'].includes(mouseEvent.action)) {
107
- let w = this.tableModel.getColumnWidth(mouseEvent.columnIndex);
108
- this.mouseStartWidth = w;
109
- this.mouseStartAction = mouseEvent.action;
110
- this.mouseStartColumnIndex = mouseEvent.columnIndex;
111
- if (this.mouseStartAction === 'drag-column') {
112
- this.dragFrom = this.mouseStartColumnIndex;
113
- }
114
- }
115
- }
116
- mouseDraggingOnFrame(mouseEvent) {
117
- this.eventListener.onMouseDragging(mouseEvent);
118
- this.mouseEvent = mouseEvent;
119
- if (this.mouseStartColumnIndex > -1 && this.mouseStartAction === 'resize-column') {
120
- let w = this.tableModel.getColumnWidth(this.mouseStartColumnIndex);
121
- this.tableModel.setColumnWidth(this.mouseStartColumnIndex, this.mouseStartWidth + mouseEvent.draggingX);
122
- this.resetSizeOfWrapperDiv();
123
- this.adjustContainersAndRows();
124
- }
125
- else if (this.mouseStartAction === 'drag-column' && mouseEvent.columnIndex > -1) {
126
- this.draggingTargetColumnIndex = mouseEvent.columnIndex;
127
- this.dragTo = this.draggingTargetColumnIndex;
128
- if (this.dragFrom > -1 && this.dragTo > -1 && this.dragFrom !== this.dragTo) {
129
- this.tableModel.changeColumnOrder(this.dragFrom, this.dragTo);
130
- this.dragFrom = this.dragTo;
131
- this.resetSizeOfWrapperDiv();
132
- this.adjustContainersAndRows();
133
- }
134
- this.repaint();
135
- }
136
- }
137
- mouseDraggingEndOnFrame(mouseEvent) {
138
- this.eventListener.onMouseDraggingEnd(mouseEvent);
139
- this.draggingTargetColumnIndex = -1;
140
- if (this.mouseStartAction === 'resize-column') {
141
- let w = this.tableModel.getColumnWidth(this.mouseStartColumnIndex);
142
- this.tableModel.setColumnWidth(this.mouseStartColumnIndex, this.mouseStartWidth + mouseEvent.draggingX);
143
- this.resetSizeOfWrapperDiv();
144
- this.adjustContainersAndRows();
145
- }
146
- else if (this.mouseStartAction === 'drag-column') {
147
- // this.draggingTargetColumnIndex = mouseEvent.columnIndex;
148
- // this.dragTo = this.draggingTargetColumnIndex;
149
- // if (this.dragFrom !== this.dragTo) {
150
- // this.tableModel.changeColumnOrder(this.dragFrom, this.dragTo);
151
- // this.dragFrom = this.dragTo;
152
- // this.resetSizeOfWrapperDiv();
153
- // this.adjustContainersAndRows();
154
- // }
155
- this.repaint();
156
- }
157
- this.mouseStartWidth = -1;
158
- this.mouseStartColumnIndex = -1;
159
- this.dragFrom = -1;
160
- this.dragTo = -1;
161
- this.mouseStartAction = '';
162
- }
163
- mouseMove(mouseMoveEvent) {
164
- this.eventListener.onMouseMoved(mouseMoveEvent);
165
- this.adjustHoverRows(mouseMoveEvent);
166
- this.adjustHoverColumns(mouseMoveEvent);
167
- }
168
- contextmenu(mouseMoveEvent) {
169
- this.eventListener.onContextmenu(mouseMoveEvent);
170
- }
171
- toggleExpandCollapseAll(expand = true) {
172
- const bodyAreaModel = this.tableModel.getBodyModel();
173
- if (bodyAreaModel instanceof AreaModelTree) {
174
- const amt = bodyAreaModel;
175
- amt.toggleExpandCollapseAll(expand);
176
- this.repaint();
177
- this.storeStateCollapsedExpandService?.collapsedStateAll(expand);
178
- }
179
- }
180
- toggleRowCheckbox(rowIdx, colIdx, areaIdent) {
181
- const areaModel = this.tableModel.getAreaModel(areaIdent);
182
- const state = areaModel.isRowChecked(rowIdx);
183
- const sel = (state === undefined || state === 'semi' || state === 'none');
184
- areaModel.setRowChecked(rowIdx, sel);
185
- this.repaint();
186
- const selectedRows = areaModel.rowSelectionModel?.getCheckedRows();
187
- this.eventListener.onCheckboxChanged(selectedRows ? selectedRows : []);
188
- }
189
- onMouseClicked(evt, previousEvt) {
190
- const dirty = this.selectionService.onMouseClicked(evt, previousEvt);
191
- this.eventListener.onMouseClicked(evt);
192
- if (dirty) {
193
- this.debounce(this.repaint.bind(this), 10);
194
- }
195
- }
196
- externalFilterChanged() {
197
- const predictFn = this.tableOptions.externalFilterFunction;
198
- if (predictFn) {
199
- this.clearSelectionModel();
200
- this.tableModel.externalFilterChanged(predictFn);
201
- this.repaint();
202
- }
203
- }
204
- onHeaderDblClicked(event, rowIdx, colIdx) {
205
- const colDef = this.tableModel.getColumnDef(colIdx);
206
- if (colDef?.sortable && colDef.sortable()) {
207
- event.preventDefault();
208
- const states = colDef.sortStatesOrder ? colDef.sortStatesOrder : this.tableOptions.sortOrder;
209
- const currentState = colDef.sortState ?? '';
210
- const newState = states[(states.indexOf(currentState) + 1) % states.length];
211
- const sortItem = new SortItem(colIdx, newState);
212
- const done = this.tableModel.doSort([sortItem]);
213
- if (done) {
214
- this.tableModel.getColumnDefs()?.forEach(cd => cd.sortState = '');
215
- colDef.sortState = newState;
216
- }
217
- this.repaint();
218
- this.storeSortingService?.setSortItems([sortItem]);
219
- }
220
- }
221
- onKeyEvent(evt) {
222
- this.keyEvent = evt;
223
- console.info(this.keyEvent); // TODO
224
- if (this.keyEvent.status === 'up' && this.keyEvent.originalEvent?.code === 'F2') {
225
- this.keyEvent.originalEvent.stopPropagation();
226
- console.info('F2...');
227
- // TODO check, if we can start to edit a cell
228
- }
229
- }
230
- clearSelectionModel() {
231
- if (this.getSelectionModel) {
232
- this.getSelectionModel()?.clear();
233
- }
234
- }
235
- debugOnce(bodyX, bodyY) {
236
- console.clear();
237
- console.info('this.hostElement.offsetTop', this.hostElement.offsetTop); // pageY of table tag
238
- console.info('this.hostElement.scrollHeight', this.hostElement.scrollHeight); // height of visible scroll area
239
- console.info('this.scrollViewportTop', this.scrollTop); // amount of px scrolled to top (initial : 0)
240
- console.info('this.areaHeaderCenter.parent.clientHeight', this.areaHeaderCenter.parent.clientHeight);
241
- console.info('bodyY', bodyY);
242
- console.info('bodyX', bodyX);
243
- console.info('rows', this.firstVisibleRowIndex);
244
- console.info('');
245
- console.info('this.tableModel', this.tableModel);
246
- console.info('');
247
- console.info('this.mouseMoveEvent.clientX', this.mouseHandler.mouseEvent?.clientX);
248
- console.info('this.hostElement.offsetLeft', this.hostElement.offsetLeft);
249
- console.info('this.areaBodyWestGeo.width', this.areaBodyWestGeo.width);
250
- }
251
- autoRestoreScrollPosition() {
252
- if (this.tableOptions?.autoRestoreOptions && this.storeScrollPosStateService) {
253
- const autoRestoreOptions = this.tableOptions.autoRestoreOptions;
254
- if (autoRestoreOptions.autoRestoreScrollPosition) {
255
- const scrollOffset = this.storeScrollPosStateService.getScrollOffset();
256
- if (scrollOffset) {
257
- this.scrollViewport.scrollTo(...scrollOffset);
258
- }
259
- }
260
- }
261
- }
262
- autoRestoreSortingState() {
263
- if (this.tableOptions?.autoRestoreOptions?.autoRestoreSortingState && this.storeSortingService) {
264
- const sortItems = this.storeSortingService.getSortItems();
265
- if (sortItems?.length) {
266
- const areaModel = this.tableModel.getBodyModel();
267
- areaModel.doSort(sortItems);
268
- }
269
- }
270
- }
271
- autoRestoreCollapsedExpandedState() {
272
- if (this.tableOptions?.autoRestoreOptions?.getRowId && this.storeStateCollapsedExpandService) {
273
- const autoRestoreOptions = this.tableOptions.autoRestoreOptions;
274
- const getRowId = autoRestoreOptions.getRowId;
275
- if (autoRestoreOptions.autoRestoreCollapsedExpandedState && getRowId) {
276
- const state = this.storeStateCollapsedExpandService.collapsedExpandedStateGet();
277
- const areaModel = this.tableModel.getAreaModel('body');
278
- if (areaModel instanceof AreaModelTree) {
279
- const amtr = areaModel;
280
- const rowCount = areaModel.getRowCount();
281
- for (let i = 0; i < rowCount; i++) {
282
- const row = areaModel.getRowByIndex(i);
283
- if (row) {
284
- if (state.allExpanded) {
285
- row.expanded = true;
286
- }
287
- else if (state.allCollapsed) {
288
- row.expanded = false;
289
- }
290
- else {
291
- const rowId = getRowId(row.data);
292
- if (state.mode === 'expanded') {
293
- row.expanded = (this.storeStateCollapsedExpandService.collapsedExpandedStateIncludes(rowId));
294
- }
295
- else if (state.mode === 'collapsed') {
296
- row.expanded = (!this.storeStateCollapsedExpandService.collapsedExpandedStateIncludes(rowId));
297
- }
298
- }
299
- }
300
- }
301
- amtr.recalcVisibleTreeRows();
302
- }
303
- }
304
- }
305
- }
306
- }
307
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtc2NvcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3RhYmxlL3NyYy9saWIvdGFibGUvdGFibGUtc2NvcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBRWhFLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBR3hFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUU3QyxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBRXJDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSw2Q0FBNkMsQ0FBQztBQUMxRSxPQUFPLEVBQUMsMEJBQTBCLEVBQUMsTUFBTSwwQ0FBMEMsQ0FBQztBQUNwRixPQUFPLEVBQUMsZ0NBQWdDLEVBQUMsTUFBTSxnREFBZ0QsQ0FBQztBQUNoRyxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ2pELE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUM3RSxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQztBQUkvRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFHMUQsTUFBTSxPQUFPLFVBQVcsU0FBUSxXQUFXO0lBb0J6QyxZQUNFLFdBQTJCLEVBQzNCLFVBQXdCLEVBQ3hCLFVBQXdCLEVBQ3hCLFlBQTRCLEVBQ1QsYUFBOEI7UUFFakQsS0FBSyxDQUNILFdBQVcsRUFDWCxVQUFVLEVBQ1YsSUFBSSxxQkFB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b0NBQ3JDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyw4QkFBOEIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2lDQUMvRjs2QkFDRjt5QkFDRjtxQkFDRjtvQkFDRCxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztpQkFDOUI7YUFDRjtTQUNGO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUYWJsZU1vZGVsSWZ9IGZyb20gXCIuL2RhdGEvdGFibGVtb2RlbC90YWJsZS1tb2RlbC5pZlwiO1xuaW1wb3J0IHtBcmVhSWRlbnR9IGZyb20gXCIuL2RhdGEvdGFibGVtb2RlbC9hcmVhLWlkZW50LnR5cGVcIjtcbmltcG9ydCB7R2VNb3VzZUV2ZW50fSBmcm9tIFwiLi9kYXRhL2NvbW1vbi9ldmVudC9nZS1tb3VzZS1ldmVudFwiO1xuaW1wb3J0IHtEb21TZXJ2aWNlSWZ9IGZyb20gXCIuL3NlcnZpY2UvZG9tLXNlcnZpY2UuaWZcIjtcbmltcG9ydCB7Q29udmVuaWVuY2VEb21TZXJ2aWNlfSBmcm9tIFwiLi9zZXJ2aWNlL2NvbnZlbmllbmNlLWRvbS5zZXJ2aWNlXCI7XG5pbXBvcnQge1RhYmxlT3B0aW9uc0lmfSBmcm9tIFwiLi9kYXRhL29wdGlvbnMvdGFibGUtb3B0aW9ucy5pZlwiO1xuaW1wb3J0IHtUcmVlUm93fSBmcm9tIFwiLi9kYXRhL2NvbW1vbi90cmVlLXJvd1wiO1xuaW1wb3J0IHtNb3VzZUhhbmRsZXJ9IGZyb20gXCIuL21vdXNlLWhhbmRsZXJcIjtcbmltcG9ydCB7RXZlbnRMaXN0ZW5lcklmfSBmcm9tIFwiLi9ldmVudC1saXN0ZW5lci5pZlwiO1xuaW1wb3J0IHtUYWJsZUFwaX0gZnJvbSBcIi4vdGFibGUtYXBpXCI7XG5pbXBvcnQge1NvcnRTdGF0ZX0gZnJvbSBcIi4vZGF0YS9jb21tb24vc29ydC1zdGF0ZS50eXBlXCI7XG5pbXBvcnQge0FyZWFNb2RlbFRyZWV9IGZyb20gXCIuL2RhdGEvdGFibGVtb2RlbC9hcmVhbW9kZWwvYXJlYS1tb2RlbC10cmVlXCI7XG5pbXBvcnQge1N0b3JlU3RhdGVTY3JvbGxQb3NTZXJ2aWNlfSBmcm9tIFwiLi9zZXJ2aWNlL3N0b3JlLXN0YXRlLXNjcm9sbC1wb3Muc2VydmljZVwiO1xuaW1wb3J0IHtTdG9yZVN0YXRlQ29sbGFwc2VkRXhwYW5kU2VydmljZX0gZnJvbSBcIi4vc2VydmljZS9zdG9yZS1zdGF0ZS1jb2xsYXBzZWQtZXhwYW5kLnNlcnZpY2VcIjtcbmltcG9ydCB7U3RvcmVTdGF0ZVNvcnRpbmdTZXJ2aWNlfSBmcm9tIFwiLi9zZXJ2aWNlL3N0b3JlLXN0YXRlLXNvcnRpbmcuc2VydmljZVwiO1xuaW1wb3J0IHtSZW5kZXJTY29wZX0gZnJvbSBcIi4vcmVuZGVyLXNjb3BlXCI7XG5pbXBvcnQge1NvcnRJdGVtfSBmcm9tIFwiLi9kYXRhL2NvbW1vbi9zb3J0LWl0ZW1cIjtcbmltcG9ydCB7SW5wdXRIYW5kbGVyfSBmcm9tIFwiLi9pbnB1dC1oYW5kbGVyXCI7XG5pbXBvcnQge0dlTW9kZWxDaGFuZ2VFdmVudH0gZnJvbSBcIi4vZGF0YS9jb21tb24vZXZlbnQvZ2UtbW9kZWwtY2hhbmdlLWV2ZW50XCI7XG5pbXBvcnQge1NlbGVjdGlvblNlcnZpY2V9IGZyb20gXCIuL3NlbGVjdGlvbi9zZWxlY3Rpb24tc2VydmljZVwiO1xuaW1wb3J0IHtHZUtleUV2ZW50fSBmcm9tIFwiLi9kYXRhL2NvbW1vbi9ldmVudC9nZS1rZXktZXZlbnRcIjtcbmltcG9ydCB7T25BY3Rpb25UcmlnZ2VyZWRJZn0gZnJvbSBcIi4vYWN0aW9uL29uLWFjdGlvbi10cmlnZ2VyZWQuaWZcIjtcbmltcG9ydCB7QWN0aW9uSWR9IGZyb20gXCIuL2FjdGlvbi9hY3Rpb24taWQudHlwZVwiO1xuaW1wb3J0IHtTaG9ydGN1dFNlcnZpY2V9IGZyb20gXCIuL2FjdGlvbi9zaG9ydGN1dC5zZXJ2aWNlXCI7XG5cblxuZXhwb3J0IGNsYXNzIFRhYmxlU2NvcGUgZXh0ZW5kcyBSZW5kZXJTY29wZSBpbXBsZW1lbnRzIE9uQWN0aW9uVHJpZ2dlcmVkSWYge1xuXG5cbiAgcHVibGljIG1vdXNlSGFuZGxlcjogTW91c2VIYW5kbGVyO1xuICBwdWJsaWMgaW5wdXRIYW5kbGVyOiBJbnB1dEhhbmRsZXI7XG4gIHB1YmxpYyBzaG9ydGN1dFNlcnZpY2U6IFNob3J0Y3V0U2VydmljZTtcblxuICBwdWJsaWMgc3RvcmVTdGF0ZUNvbGxhcHNlZEV4cGFuZFNlcnZpY2U/OiBTdG9yZVN0YXRlQ29sbGFwc2VkRXhwYW5kU2VydmljZTtcbiAgcHVibGljIHN0b3JlU29ydGluZ1NlcnZpY2U/OiBTdG9yZVN0YXRlU29ydGluZ1NlcnZpY2U7XG5cbiAgcHJvdGVjdGVkIHNlbGVjdGlvblNlcnZpY2U6IFNlbGVjdGlvblNlcnZpY2UgPSBuZXcgU2VsZWN0aW9uU2VydmljZSh0aGlzKTtcbiAgcHJvdGVjdGVkIGtleUV2ZW50PzogR2VLZXlFdmVudDtcbiAgcHJpdmF0ZSBhcGkgPSBuZXcgVGFibGVBcGkodGhpcyk7XG5cbiAgcHJpdmF0ZSBtb3VzZVN0YXJ0QWN0aW9uID0gJyc7XG4gIHByaXZhdGUgbW91c2VTdGFydFdpZHRoID0gLTE7XG4gIHByaXZhdGUgbW91c2VTdGFydENvbHVtbkluZGV4ID0gLTE7XG4gIHByaXZhdGUgZHJhZ0Zyb20gPSAtMTtcbiAgcHJpdmF0ZSBkcmFnVG8gPSAtMTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBob3N0RWxlbWVudDogSFRNTERpdkVsZW1lbnQsXG4gICAgdGFibGVNb2RlbDogVGFibGVNb2RlbElmLFxuICAgIGRvbVNlcnZpY2U6IERvbVNlcnZpY2VJZixcbiAgICB0YWJsZU9wdGlvbnM6IFRhYmxlT3B0aW9uc0lmLFxuICAgIHByb3RlY3RlZCByZWFkb25seSBldmVudExpc3RlbmVyOiBFdmVudExpc3RlbmVySWYsXG4gICkge1xuICAgIHN1cGVyKFxuICAgICAgaG9zdEVsZW1lbnQsXG4gICAgICB0YWJsZU1vZGVsLFxuICAgICAgbmV3IENvbnZlbmllbmNlRG9tU2VydmljZShkb21TZXJ2aWNlKSxcbiAgICAgIHRhYmxlT3B0aW9uc1xuICAgICk7XG4gICAgaWYgKHRoaXMudGFibGVPcHRpb25zPy5hdXRvUmVzdG9yZU9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IGF1dG9SZXN0b3JlT3B0aW9ucyA9IHRoaXMudGFibGVPcHRpb25zLmF1dG9SZXN0b3JlT3B0aW9ucztcbiAgICAgIGNvbnN0IGtleUZuID0gYXV0b1Jlc3RvcmVPcHRpb25zLmdldFN0b3JhZ2VLZXlGbjtcbiAgICAgIGlmIChrZXlGbikge1xuICAgICAgICBpZiAoYXV0b1Jlc3RvcmVPcHRpb25zLmF1dG9SZXN0b3JlU2Nyb2xsUG9zaXRpb24pIHtcbiAgICAgICAgICB0aGlzLnN0b3JlU2Nyb2xsUG9zU3RhdGVTZXJ2aWNlID0gbmV3IFN0b3JlU3RhdGVTY3JvbGxQb3NTZXJ2aWNlKGtleUZuKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYXV0b1Jlc3RvcmVPcHRpb25zLmF1dG9SZXN0b3JlQ29sbGFwc2VkRXhwYW5kZWRTdGF0ZSkge1xuICAgICAgICAgIHRoaXMuc3RvcmVTdGF0ZUNvbGxhcHNlZEV4cGFuZFNlcnZpY2UgPSBuZXcgU3RvcmVTdGF0ZUNvbGxhcHNlZEV4cGFuZFNlcnZpY2Uoa2V5Rm4pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhdXRvUmVzdG9yZU9wdGlvbnMuYXV0b1Jlc3RvcmVTb3J0aW5nU3RhdGUpIHtcbiAgICAgICAgICB0aGlzLnN0b3JlU29ydGluZ1NlcnZpY2UgPSBuZXcgU3RvcmVTdGF0ZVNvcnRpbmdTZXJ2aWNlKGtleUZuKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLm1vdXNlSGFuZGxlciA9IG5ldyBNb3VzZUhhbmRsZXIodGhpcyk7XG4gICAgdGhpcy5pbnB1dEhhbmRsZXIgPSBuZXcgSW5wdXRIYW5kbGVyKHRoaXMpO1xuXG4gICAgdGhpcy5zaG9ydGN1dFNlcnZpY2UgPSBuZXcgU2hvcnRjdXRTZXJ2aWNlKHRoaXMpO1xuICAgIHRoaXMuc2hvcnRjdXRTZXJ2aWNlLmFkZExpc3RlbmVyKHRoaXMuc2VsZWN0aW9uU2VydmljZSk7XG4gIH1cblxuICBvbkFjdGlvblRyaWdnZXJlZChhY3Rpb25JZDogQWN0aW9uSWQpOiBib29sZWFuIHtcbiAgICBpZiAoYWN0aW9uSWQgPT09ICdTVEFSVF9FRElUSU5HJykge1xuICAgICAgaWYgKHRoaXMuZ2V0Rm9jdXNNb2RlbCkge1xuICAgICAgICBjb25zdCBmbSA9IHRoaXMuZ2V0Rm9jdXNNb2RlbCgpO1xuICAgICAgICBpZiAoZm0pIHtcbiAgICAgICAgICBjb25zdCBbcm93SWR4LCBjb2xJZHhdID0gZm0uZ2V0Rm9jdXMoKTtcbiAgICAgICAgICBpZiAodGhpcy50YWJsZU1vZGVsLmdldEJvZHlNb2RlbCgpLmlzRWRpdGFibGUocm93SWR4LCBjb2xJZHgpKSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLmluaXRSZW5kZXJFZGl0b3Iocm93SWR4LCBjb2xJZHgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB1cGRhdGVNb2RlbFZhbHVlKGFyZWFJZGVudDogQXJlYUlkZW50LCByb3dJbmRleDogbnVtYmVyLCBjb2x1bW5JbmRleDogbnVtYmVyLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKGFyZWFJZGVudCA9PT0gJ2JvZHknKSB7XG4gICAgICBjb25zdCBib2R5QXJlYU1vZGVsID0gdGhpcy50YWJsZU1vZGVsLmdldEFyZWFNb2RlbChhcmVhSWRlbnQpO1xuICAgICAgY29uc3Qgb2s6IGJvb2xlYW4gPSBib2R5QXJlYU1vZGVsLnNldFZhbHVlKHJvd0luZGV4LCBjb2x1bW5JbmRleCwgdmFsdWUsIHRoaXMudGFibGVNb2RlbCk7XG4gICAgICBpZiAob2spIHtcbiAgICAgICAgdGhpcy5yZXNldEVkaXRvclJlbmRlcmVyKCk7XG4gICAgICAgIHRoaXMucmVwYWludCgpO1xuICAgICAgICB0aGlzLmV2ZW50TGlzdGVuZXIub25Nb2RlbENoYW5nZWQoR2VNb2RlbENoYW5nZUV2ZW50LmNyZWF0ZVNpbmdsZShyb3dJbmRleCwgY29sdW1uSW5kZXgpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRBcGkoKTogVGFibGVBcGkge1xuICAgIHJldHVybiB0aGlzLmFwaTtcbiAgfVxuXG4gIC8qXG4gICAqIENhbGxlZCBieSB0aGUgdGFibGUgY29tcG9uZW50XG4gICAqL1xuICBmaXJzdEluaXQoKSB7XG4gICAgdGhpcy50YWJsZU1vZGVsLmluaXQoKTtcbiAgICB0aGlzLmF1dG9SZXN0b3JlQ29sbGFwc2VkRXhwYW5kZWRTdGF0ZSgpO1xuICAgIHRoaXMuYXV0b1Jlc3RvcmVTb3J0aW5nU3RhdGUoKTtcbiAgICB0aGlzLnJlc2V0U2l6ZU9mV3JhcHBlckRpdigpO1xuICAgIHRoaXMuYWRqdXN0Q29udGFpbmVyc0FuZFJvd3MoKTtcbiAgICB0aGlzLmF1dG9SZXN0b3JlU2Nyb2xsUG9zaXRpb24oKTtcbiAgfVxuXG4gIGNyZWF0ZUdlTW91c2VFdmVudChtb3VzZUV2ZW50OiBNb3VzZUV2ZW50KTogR2VNb3VzZUV2ZW50IHtcbiAgICBjb25zdCByZXQ6IEdlTW91c2VFdmVudCA9IG5ldyBHZU1vdXNlRXZlbnQoKTtcbiAgICByZXQub3JpZ2luYWxFdmVudCA9IG1vdXNlRXZlbnQ7XG5cbiAgICBpZiAobW91c2VFdmVudCkge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gbW91c2VFdmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICBbcmV0LmFyZWFJZGVudCwgcmV0LnNpZGVJZGVudF0gPSB0aGlzLmdldEFyZWFBbmRTaWRlSWRlbnRCeUF0dHIodGFyZ2V0KTtcbiAgICAgIHJldC5yb3dJbmRleCA9IHRoaXMuZ2V0TnVtYmVyQnlBdHRyKHRhcmdldCwgJ2RhdGEtcm93LWluZGV4Jyk7XG4gICAgICByZXQuY29sdW1uSW5kZXggPSB0aGlzLmdldE51bWJlckJ5QXR0cih0YXJnZXQsICdkYXRhLWNvbC1pbmRleCcpO1xuICAgICAgcmV0LmFjdGlvbiA9IHRhcmdldC5jbG9zZXN0KCdbZGF0YS1nZS1hY3Rpb25dJyk/LmdldEF0dHJpYnV0ZSgnZGF0YS1nZS1hY3Rpb24nKSA/PyAnJztcblxuICAgICAgaWYgKG1vdXNlRXZlbnQuY3RybEtleSAmJiBtb3VzZUV2ZW50LmFsdEtleSkge1xuICAgICAgICBjb25zdCBib2R5WSA9IG1vdXNlRXZlbnQuY2xpZW50WSAtIHRoaXMuaG9zdEVsZW1lbnQub2Zmc2V0VG9wIC0gdGhpcy5hcmVhSGVhZGVyQ2VudGVyLnBhcmVudC5jbGllbnRIZWlnaHQ7XG4gICAgICAgIGNvbnN0IGJvZHlYID0gbW91c2VFdmVudC5jbGllbnRYIC0gdGhpcy5ob3N0RWxlbWVudC5vZmZzZXRMZWZ0IC0gdGhpcy5hcmVhQm9keVdlc3RHZW8ud2lkdGg7XG4gICAgICAgIHRoaXMuZGVidWdPbmNlKGJvZHlYLCBib2R5WSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICBvbk1vdXNlRG93bihtb3VzZUV2ZW50OiBHZU1vdXNlRXZlbnQpIHtcbiAgICBpZiAobW91c2VFdmVudC5jb2x1bW5JbmRleCA+IC0xXG4gICAgICAmJiBtb3VzZUV2ZW50LmFjdGlvblxuICAgICAgJiYgWydyZXNpemUtY29sdW1uJywgJ2RyYWctY29sdW1uJ10uaW5jbHVkZXMobW91c2VFdmVudC5hY3Rpb24pKSB7XG4gICAgICBsZXQgdyA9IHRoaXMudGFibGVNb2RlbC5nZXRDb2x1bW5XaWR0aChtb3VzZUV2ZW50LmNvbHVtbkluZGV4KTtcbiAgICAgIHRoaXMubW91c2VTdGFydFdpZHRoID0gdztcbiAgICAgIHRoaXMubW91c2VTdGFydEFjdGlvbiA9IG1vdXNlRXZlbnQuYWN0aW9uO1xuICAgICAgdGhpcy5tb3VzZVN0YXJ0Q29sdW1uSW5kZXggPSBtb3VzZUV2ZW50LmNvbHVtbkluZGV4O1xuXG4gICAgICBpZiAodGhpcy5tb3VzZVN0YXJ0QWN0aW9uID09PSAnZHJhZy1jb2x1bW4nKSB7XG4gICAgICAgIHRoaXMuZHJhZ0Zyb20gPSB0aGlzLm1vdXNlU3RhcnRDb2x1bW5JbmRleDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBtb3VzZURyYWdnaW5nT25GcmFtZShtb3VzZUV2ZW50OiBHZU1vdXNlRXZlbnQpIHtcbiAgICB0aGlzLmV2ZW50TGlzdGVuZXIub25Nb3VzZURyYWdnaW5nKG1vdXNlRXZlbnQpO1xuICAgIHRoaXMubW91c2VFdmVudCA9IG1vdXNlRXZlbnQ7XG5cbiAgICBpZiAodGhpcy5tb3VzZVN0YXJ0Q29sdW1uSW5kZXggPiAtMSAmJiB0aGlzLm1vdXNlU3RhcnRBY3Rpb24gPT09ICdyZXNpemUtY29sdW1uJykge1xuICAgICAgbGV0IHcgPSB0aGlzLnRhYmxlTW9kZWwuZ2V0Q29sdW1uV2lkdGgodGhpcy5tb3VzZVN0YXJ0Q29sdW1uSW5kZXgpO1xuICAgICAgdGhpcy50YWJsZU1vZGVsLnNldENvbHVtbldpZHRoKHRoaXMubW91c2VTdGFydENvbHVtbkluZGV4LCB0aGlzLm1vdXNlU3RhcnRXaWR0aCArIG1vdXNlRXZlbnQuZHJhZ2dpbmdYKTtcblxuICAgICAgdGhpcy5yZXNldFNpemVPZldyYXBwZXJEaXYoKTtcbiAgICAgIHRoaXMuYWRqdXN0Q29udGFpbmVyc0FuZFJvd3MoKTtcblxuICAgIH0gZWxzZSBpZiAodGhpcy5tb3VzZVN0YXJ0QWN0aW9uID09PSAnZHJhZy1jb2x1bW4nICYmIG1vdXNlRXZlbnQuY29sdW1uSW5kZXggPiAtMSkge1xuXG4gICAgICB0aGlzLmRyYWdnaW5nVGFyZ2V0Q29sdW1uSW5kZXggPSBtb3VzZUV2ZW50LmNvbHVtbkluZGV4O1xuICAgICAgdGhpcy5kcmFnVG8gPSB0aGlzLmRyYWdnaW5nVGFyZ2V0Q29sdW1uSW5kZXg7XG5cbiAgICAgIGlmICh0aGlzLmRyYWdGcm9tID4gLTEgJiYgdGhpcy5kcmFnVG8gPiAtMSAmJiB0aGlzLmRyYWdGcm9tICE9PSB0aGlzLmRyYWdUbykge1xuICAgICAgICB0aGlzLnRhYmxlTW9kZWwuY2hhbmdlQ29sdW1uT3JkZXIodGhpcy5kcmFnRnJvbSwgdGhpcy5kcmFnVG8pO1xuICAgICAgICB0aGlzLmRyYWdGcm9tID0gdGhpcy5kcmFnVG87XG4gICAgICAgIHRoaXMucmVzZXRTaXplT2ZXcmFwcGVyRGl2KCk7XG4gICAgICAgIHRoaXMuYWRqdXN0Q29udGFpbmVyc0FuZFJvd3MoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucmVwYWludCgpO1xuICAgIH1cbiAgfVxuXG4gIG1vdXNlRHJhZ2dpbmdFbmRPbkZyYW1lKG1vdXNlRXZlbnQ6IEdlTW91c2VFdmVudCkge1xuICAgIHRoaXMuZXZlbnRMaXN0ZW5lci5vbk1vdXNlRHJhZ2dpbmdFbmQobW91c2VFdmVudCk7XG5cbiAgICB0aGlzLmRyYWdnaW5nVGFyZ2V0Q29sdW1uSW5kZXggPSAtMTtcbiAgICBpZiAodGhpcy5tb3VzZVN0YXJ0QWN0aW9uID09PSAncmVzaXplLWNvbHVtbicpIHtcbiAgICAgIGxldCB3ID0gdGhpcy50YWJsZU1vZGVsLmdldENvbHVtbldpZHRoKHRoaXMubW91c2VTdGFydENvbHVtbkluZGV4KTtcbiAgICAgIHRoaXMudGFibGVNb2RlbC5zZXRDb2x1bW5XaWR0aCh0aGlzLm1vdXNlU3RhcnRDb2x1bW5JbmRleCwgdGhpcy5tb3VzZVN0YXJ0V2lkdGggKyBtb3VzZUV2ZW50LmRyYWdnaW5nWCk7XG5cbiAgICAgIHRoaXMucmVzZXRTaXplT2ZXcmFwcGVyRGl2KCk7XG4gICAgICB0aGlzLmFkanVzdENvbnRhaW5lcnNBbmRSb3dzKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLm1vdXNlU3RhcnRBY3Rpb24gPT09ICdkcmFnLWNvbHVtbicpIHtcbiAgICAgIC8vIHRoaXMuZHJhZ2dpbmdUYXJnZXRDb2x1bW5JbmRleCA9IG1vdXNlRXZlbnQuY29sdW1uSW5kZXg7XG4gICAgICAvLyB0aGlzLmRyYWdUbyA9IHRoaXMuZHJhZ2dpbmdUYXJnZXRDb2x1bW5JbmRleDtcbiAgICAgIC8vIGlmICh0aGlzLmRyYWdGcm9tICE9PSB0aGlzLmRyYWdUbykge1xuICAgICAgLy8gICB0aGlzLnRhYmxlTW9kZWwuY2hhbmdlQ29sdW1uT3JkZXIodGhpcy5kcmFnRnJvbSwgdGhpcy5kcmFnVG8pO1xuICAgICAgLy8gICB0aGlzLmRyYWdGcm9tID0gdGhpcy5kcmFnVG87XG4gICAgICAvLyAgIHRoaXMucmVzZXRTaXplT2ZXcmFwcGVyRGl2KCk7XG4gICAgICAvLyAgIHRoaXMuYWRqdXN0Q29udGFpbmVyc0FuZFJvd3MoKTtcbiAgICAgIC8vIH1cbiAgICAgIHRoaXMucmVwYWludCgpO1xuICAgIH1cbiAgICB0aGlzLm1vdXNlU3RhcnRXaWR0aCA9IC0xO1xuICAgIHRoaXMubW91c2VTdGFydENvbHVtbkluZGV4ID0gLTE7XG4gICAgdGhpcy5kcmFnRnJvbSA9IC0xO1xuICAgIHRoaXMuZHJhZ1RvID0gLTE7XG4gICAgdGhpcy5tb3VzZVN0YXJ0QWN0aW9uID0gJyc7XG4gIH1cblxuICBtb3VzZU1vdmUobW91c2VNb3ZlRXZlbnQ6IEdlTW91c2VFdmVudCkge1xuICAgIHRoaXMuZXZlbnRMaXN0ZW5lci5vbk1vdXNlTW92ZWQobW91c2VNb3ZlRXZlbnQpO1xuICAgIHRoaXMuYWRqdXN0SG92ZXJSb3dzKG1vdXNlTW92ZUV2ZW50KTtcbiAgICB0aGlzLmFkanVzdEhvdmVyQ29sdW1ucyhtb3VzZU1vdmVFdmVudCk7XG4gIH1cblxuICBjb250ZXh0bWVudShtb3VzZU1vdmVFdmVudDogR2VNb3VzZUV2ZW50KSB7XG4gICAgdGhpcy5ldmVudExpc3RlbmVyLm9uQ29udGV4dG1lbnUobW91c2VNb3ZlRXZlbnQpO1xuICB9XG5cbiAgdG9nZ2xlRXhwYW5kQ29sbGFwc2VBbGwoZXhwYW5kOiBib29sZWFuID0gdHJ1ZSkge1xuICAgIGNvbnN0IGJvZHlBcmVhTW9kZWwgPSB0aGlzLnRhYmxlTW9kZWwuZ2V0Qm9keU1vZGVsKCk7XG4gICAgaWYgKGJvZHlBcmVhTW9kZWwgaW5zdGFuY2VvZiBBcmVhTW9kZWxUcmVlKSB7XG4gICAgICBjb25zdCBhbXQ6IEFyZWFNb2RlbFRyZWU8YW55PiA9IGJvZHlBcmVhTW9kZWw7XG4gICAgICBhbXQudG9nZ2xlRXhwYW5kQ29sbGFwc2VBbGwoZXhwYW5kKTtcbiAgICAgIHRoaXMucmVwYWludCgpO1xuICAgICAgdGhpcy5zdG9yZVN0YXRlQ29sbGFwc2VkRXhwYW5kU2VydmljZT8uY29sbGFwc2VkU3RhdGVBbGwoZXhwYW5kKTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVSb3dDaGVja2JveChyb3dJZHg6IG51bWJlciwgY29sSWR4OiBudW1iZXIsIGFyZWFJZGVudDogQXJlYUlkZW50KSB7XG4gICAgY29uc3QgYXJlYU1vZGVsID0gdGhpcy50YWJsZU1vZGVsLmdldEFyZWFNb2RlbChhcmVhSWRlbnQpO1xuICAgIGNvbnN0IHN0YXRlID0gYXJlYU1vZGVsLmlzUm93Q2hlY2tlZChyb3dJZHgpO1xuICAgIGNvbnN0IHNlbCA9IChzdGF0ZSA9PT0gdW5kZWZpbmVkIHx8IHN0YXRlID09PSAnc2VtaScgfHwgc3RhdGUgPT09ICdub25lJyk7XG4gICAgYXJlYU1vZGVsLnNldFJvd0NoZWNrZWQocm93SWR4LCBzZWwpO1xuICAgIHRoaXMucmVwYWludCgpO1xuICAgIGNvbnN0IHNlbGVjdGVkUm93cyA9IGFyZWFNb2RlbC5yb3dTZWxlY3Rpb25Nb2RlbD8uZ2V0Q2hlY2tlZFJvd3MoKTtcbiAgICB0aGlzLmV2ZW50TGlzdGVuZXIub25DaGVja2JveENoYW5nZWQoc2VsZWN0ZWRSb3dzID8gc2VsZWN0ZWRSb3dzIDogW10pO1xuICB9XG5cbiAgb25Nb3VzZUNsaWNrZWQoZXZ0OiBHZU1vdXNlRXZlbnQsIHByZXZpb3VzRXZ0OiBHZU1vdXNlRXZlbnQgfCB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBkaXJ0eSA9IHRoaXMuc2VsZWN0aW9uU2VydmljZS5vbk1vdXNlQ2xpY2tlZChldnQsIHByZXZpb3VzRXZ0KTtcbiAgICB0aGlzLmV2ZW50TGlzdGVuZXIub25Nb3VzZUNsaWNrZWQoZXZ0KTtcbiAgICBpZiAoZGlydHkpIHtcbiAgICAgIHRoaXMuZGVib3VuY2UodGhpcy5yZXBhaW50LmJpbmQodGhpcyksIDEwKTtcbiAgICB9XG4gIH1cblxuICBleHRlcm5hbEZpbHRlckNoYW5nZWQoKSB7XG4gICAgY29uc3QgcHJlZGljdEZuID0gdGhpcy50YWJsZU9wdGlvbnMuZXh0ZXJuYWxGaWx0ZXJGdW5jdGlvbjtcbiAgICBpZiAocHJlZGljdEZuKSB7XG4gICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uTW9kZWwoKTtcbiAgICAgIHRoaXMudGFibGVNb2RlbC5leHRlcm5hbEZpbHRlckNoYW5nZWQocHJlZGljdEZuKTtcbiAgICAgIHRoaXMucmVwYWludCgpO1xuICAgIH1cbiAgfVxuXG4gIG9uSGVhZGVyRGJsQ2xpY2tlZChldmVudDogTW91c2VFdmVudCwgcm93SWR4OiBudW1iZXIsIGNvbElkeDogbnVtYmVyKSB7XG4gICAgY29uc3QgY29sRGVmID0gdGhpcy50YWJsZU1vZGVsLmdldENvbHVtbkRlZihjb2xJZHgpO1xuICAgIGlmIChjb2xEZWY/LnNvcnRhYmxlICYmIGNvbERlZi5zb3J0YWJsZSgpKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgY29uc3Qgc3RhdGVzOiBTb3J0U3RhdGVbXSA9IGNvbERlZi5zb3J0U3RhdGVzT3JkZXIgPyBjb2xEZWYuc29ydFN0YXRlc09yZGVyIDogdGhpcy50YWJsZU9wdGlvbnMuc29ydE9yZGVyO1xuICAgICAgY29uc3QgY3VycmVudFN0YXRlOiBTb3J0U3RhdGUgPSBjb2xEZWYuc29ydFN0YXRlID8/ICcnO1xuICAgICAgY29uc3QgbmV3U3RhdGUgPSBzdGF0ZXNbKHN0YXRlcy5pbmRleE9mKGN1cnJlbnRTdGF0ZSkgKyAxKSAlIHN0YXRlcy5sZW5ndGhdO1xuXG4gICAgICBjb25zdCBzb3J0SXRlbSA9IG5ldyBTb3J0SXRlbShjb2xJZHgsIG5ld1N0YXRlKTtcbiAgICAgIGNvbnN0IGRvbmUgPSB0aGlzLnRhYmxlTW9kZWwuZG9Tb3J0KFtzb3J0SXRlbV0pO1xuICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgdGhpcy50YWJsZU1vZGVsLmdldENvbHVtbkRlZnMoKT8uZm9yRWFjaChjZCA9PiBjZC5zb3J0U3RhdGUgPSAnJyk7XG4gICAgICAgIGNvbERlZi5zb3J0U3RhdGUgPSBuZXdTdGF0ZTtcbiAgICAgIH1cbiAgICAgIHRoaXMucmVwYWludCgpO1xuICAgICAgdGhpcy5zdG9yZVNvcnRpbmdTZXJ2aWNlPy5zZXRTb3J0SXRlbXMoW3NvcnRJdGVtXSk7XG4gICAgfVxuICB9XG5cbiAgb25LZXlFdmVudChldnQ6IEdlS2V5RXZlbnQpIHtcbiAgICB0aGlzLmtleUV2ZW50ID0gZXZ0O1xuICAgIGNvbnNvbGUuaW5mbyh0aGlzLmtleUV2ZW50KTsgLy8gVE9ET1xuICAgIGlmICh0aGlzLmtleUV2ZW50LnN0YXR1cyA9PT0gJ3VwJyAmJiB0aGlzLmtleUV2ZW50Lm9yaWdpbmFsRXZlbnQ/LmNvZGUgPT09ICdGMicpIHtcbiAgICAgIHRoaXMua2V5RXZlbnQub3JpZ2luYWxFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGNvbnNvbGUuaW5mbygnRjIuLi4nKTtcbiAgICAgIC8vIFRPRE8gIGNoZWNrLCBpZiB3ZSBjYW4gc3RhcnQgdG8gZWRpdCBhIGNlbGxcbiAgICB9XG4gIH1cblxuXG4gIHByaXZhdGUgY2xlYXJTZWxlY3Rpb25Nb2RlbCgpIHtcbiAgICBpZiAodGhpcy5nZXRTZWxlY3Rpb25Nb2RlbCkge1xuICAgICAgdGhpcy5nZXRTZWxlY3Rpb25Nb2RlbCgpPy5jbGVhcigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZGVidWdPbmNlKFxuICAgIGJvZHlYOiBudW1iZXIsXG4gICAgYm9keVk6IG51bWJlcixcbiAgKSB7XG4gICAgY29uc29sZS5jbGVhcigpO1xuICAgIGNvbnNvbGUuaW5mbygndGhpcy5ob3N0RWxlbWVudC5vZmZzZXRUb3AnLCB0aGlzLmhvc3RFbGVtZW50Lm9mZnNldFRvcCk7IC8vIHBhZ2VZIG9mIHRhYmxlIHRhZ1xuICAgIGNvbnNvbGUuaW5mbygndGhpcy5ob3N0RWxlbWVudC5zY3JvbGxIZWlnaHQnLCB0aGlzLmhvc3RFbGVtZW50LnNjcm9sbEhlaWdodCk7IC8vIGhlaWdodCBvZiB2aXNpYmxlIHNjcm9sbCBhcmVhXG4gICAgY29uc29sZS5pbmZvKCd0aGlzLnNjcm9sbFZpZXdwb3J0VG9wJywgdGhpcy5zY3JvbGxUb3ApOyAvLyBhbW91bnQgb2YgcHggc2Nyb2xsZWQgdG8gdG9wIChpbml0aWFsIDogMClcbiAgICBjb25zb2xlLmluZm8oJ3RoaXMuYXJlYUhlYWRlckNlbnRlci5wYXJlbnQuY2xpZW50SGVpZ2h0JywgdGhpcy5hcmVhSGVhZGVyQ2VudGVyLnBhcmVudC5jbGllbnRIZWlnaHQpO1xuICAgIGNvbnNvbGUuaW5mbygnYm9keVknLCBib2R5WSk7XG4gICAgY29uc29sZS5pbmZvKCdib2R5WCcsIGJvZHlYKTtcbiAgICBjb25zb2xlLmluZm8oJ3Jvd3MnLCB0aGlzLmZpcnN0VmlzaWJsZVJvd0luZGV4KTtcbiAgICBjb25zb2xlLmluZm8oJycsKTtcbiAgICBjb25zb2xlLmluZm8oJ3RoaXMudGFibGVNb2RlbCcsIHRoaXMudGFibGVNb2RlbCk7XG4gICAgY29uc29sZS5pbmZvKCcnLCk7XG4gICAgY29uc29sZS5pbmZvKCd0aGlzLm1vdXNlTW92ZUV2ZW50LmNsaWVudFgnLCB0aGlzLm1vdXNlSGFuZGxlci5tb3VzZUV2ZW50Py5jbGllbnRYKTtcbiAgICBjb25zb2xlLmluZm8oJ3RoaXMuaG9zdEVsZW1lbnQub2Zmc2V0TGVmdCcsIHRoaXMuaG9zdEVsZW1lbnQub2Zmc2V0TGVmdCk7XG4gICAgY29uc29sZS5pbmZvKCd0aGlzLmFyZWFCb2R5V2VzdEdlby53aWR0aCcsIHRoaXMuYXJlYUJvZHlXZXN0R2VvLndpZHRoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXV0b1Jlc3RvcmVTY3JvbGxQb3NpdGlvbigpIHtcbiAgICBpZiAodGhpcy50YWJsZU9wdGlvbnM/LmF1dG9SZXN0b3JlT3B0aW9ucyAmJiB0aGlzLnN0b3JlU2Nyb2xsUG9zU3RhdGVTZXJ2aWNlKSB7XG4gICAgICBjb25zdCBhdXRvUmVzdG9yZU9wdGlvbnMgPSB0aGlzLnRhYmxlT3B0aW9ucy5hdXRvUmVzdG9yZU9wdGlvbnM7XG4gICAgICBpZiAoYXV0b1Jlc3RvcmVPcHRpb25zLmF1dG9SZXN0b3JlU2Nyb2xsUG9zaXRpb24pIHtcbiAgICAgICAgY29uc3Qgc2Nyb2xsT2Zmc2V0ID0gdGhpcy5zdG9yZVNjcm9sbFBvc1N0YXRlU2VydmljZS5nZXRTY3JvbGxPZmZzZXQoKTtcbiAgICAgICAgaWYgKHNjcm9sbE9mZnNldCkge1xuICAgICAgICAgIHRoaXMuc2Nyb2xsVmlld3BvcnQuc2Nyb2xsVG8oLi4uc2Nyb2xsT2Zmc2V0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXV0b1Jlc3RvcmVTb3J0aW5nU3RhdGUoKSB7XG4gICAgaWYgKHRoaXMudGFibGVPcHRpb25zPy5hdXRvUmVzdG9yZU9wdGlvbnM/LmF1dG9SZXN0b3JlU29ydGluZ1N0YXRlICYmIHRoaXMuc3RvcmVTb3J0aW5nU2VydmljZSkge1xuICAgICAgY29uc3Qgc29ydEl0ZW1zID0gdGhpcy5zdG9yZVNvcnRpbmdTZXJ2aWNlLmdldFNvcnRJdGVtcygpO1xuICAgICAgaWYgKHNvcnRJdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGFyZWFNb2RlbCA9IHRoaXMudGFibGVNb2RlbC5nZXRCb2R5TW9kZWwoKTtcbiAgICAgICAgYXJlYU1vZGVsLmRvU29ydChzb3J0SXRlbXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXV0b1Jlc3RvcmVDb2xsYXBzZWRFeHBhbmRlZFN0YXRlKCkge1xuICAgIGlmICh0aGlzLnRhYmxlT3B0aW9ucz8uYXV0b1Jlc3RvcmVPcHRpb25zPy5nZXRSb3dJZCAmJiB0aGlzLnN0b3JlU3RhdGVDb2xsYXBzZWRFeHBhbmRTZXJ2aWNlKSB7XG4gICAgICBjb25zdCBhdXRvUmVzdG9yZU9wdGlvbnMgPSB0aGlzLnRhYmxlT3B0aW9ucy5hdXRvUmVzdG9yZU9wdGlvbnM7XG4gICAgICBjb25zdCBnZXRSb3dJZCA9IGF1dG9SZXN0b3JlT3B0aW9ucy5nZXRSb3dJZDtcbiAgICAgIGlmIChhdXRvUmVzdG9yZU9wdGlvbnMuYXV0b1Jlc3RvcmVDb2xsYXBzZWRFeHBhbmRlZFN0YXRlICYmIGdldFJvd0lkKSB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdG9yZVN0YXRlQ29sbGFwc2VkRXhwYW5kU2VydmljZS5jb2xsYXBzZWRFeHBhbmRlZFN0YXRlR2V0KCk7XG4gICAgICAgIGNvbnN0IGFyZWFNb2RlbCA9IHRoaXMudGFibGVNb2RlbC5nZXRBcmVhTW9kZWwoJ2JvZHknKTtcbiAgICAgICAgaWYgKGFyZWFNb2RlbCBpbnN0YW5jZW9mIEFyZWFNb2RlbFRyZWUpIHtcbiAgICAgICAgICBjb25zdCBhbXRyOiBBcmVhTW9kZWxUcmVlPGFueT4gPSBhcmVhTW9kZWw7XG4gICAgICAgICAgY29uc3Qgcm93Q291bnQgPSBhcmVhTW9kZWwuZ2V0Um93Q291bnQoKTtcblxuXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCByb3c6IFRyZWVSb3c8YW55PiB8IHVuZGVmaW5lZCA9IGFyZWFNb2RlbC5nZXRSb3dCeUluZGV4KGkpO1xuICAgICAgICAgICAgaWYgKHJvdykge1xuICAgICAgICAgICAgICBpZiAoc3RhdGUuYWxsRXhwYW5kZWQpIHtcbiAgICAgICAgICAgICAgICByb3cuZXhwYW5kZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhdGUuYWxsQ29sbGFwc2VkKSB7XG4gICAgICAgICAgICAgICAgcm93LmV4cGFuZGVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCByb3dJZCA9IGdldFJvd0lkKHJvdy5kYXRhKTtcbiAgICAgICAgICAgICAgICBpZiAoc3RhdGUubW9kZSA9PT0gJ2V4cGFuZGVkJykge1xuICAgICAgICAgICAgICAgICAgcm93LmV4cGFuZGVkID0gKHRoaXMuc3RvcmVTdGF0ZUNvbGxhcHNlZEV4cGFuZFNlcnZpY2UuY29sbGFwc2VkRXhwYW5kZWRTdGF0ZUluY2x1ZGVzKHJvd0lkKSk7XG5cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0YXRlLm1vZGUgPT09ICdjb2xsYXBzZWQnKSB7XG4gICAgICAgICAgICAgICAgICByb3cuZXhwYW5kZWQgPSAoIXRoaXMuc3RvcmVTdGF0ZUNvbGxhcHNlZEV4cGFuZFNlcnZpY2UuY29sbGFwc2VkRXhwYW5kZWRTdGF0ZUluY2x1ZGVzKHJvd0lkKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGFtdHIucmVjYWxjVmlzaWJsZVRyZWVSb3dzKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuIl19
package/index.d.ts DELETED
@@ -1,103 +0,0 @@
1
- export * from './lib/table/table-scope';
2
- export * from './lib/table/table-model-factory';
3
- export * from './lib/table/table-api';
4
- export * from './lib/table/ele-scope';
5
- export * from './lib/table/render-scope';
6
- export * from './lib/table/mouse-handler';
7
- export * from './lib/table/input-handler';
8
- export * from './lib/table/event-listener.if';
9
- export * from './lib/table/action/action-id.type';
10
- export * from './lib/table/action/shortcut.service';
11
- export * from './lib/table/action/shortcut-actionid-mapping.type';
12
- export * from './lib/table/action/windows-shortcut-actionId-mapping';
13
- export * from './lib/table/action/osx-shortcut-actionId-mapping';
14
- export * from './lib/table/action/on-action-triggered.if';
15
- export * from './lib/table/renderer/renderer';
16
- export * from './lib/table/data/side-ident.type';
17
- export * from './lib/table/data/div-scope.type';
18
- export * from './lib/table/data/geo-data';
19
- export * from './lib/table/data/common/get-t';
20
- export * from './lib/table/data/common/value-label.if';
21
- export * from './lib/table/data/common/value-label';
22
- export * from './lib/table/data/common/sort-item';
23
- export * from './lib/table/data/common/sort-state.type';
24
- export * from './lib/table/data/common/index-and-px';
25
- export * from './lib/table/data/common/cell-range';
26
- export * from './lib/table/data/common/checked-type';
27
- export * from './lib/table/data/common/sizes';
28
- export * from './lib/table/data/common/aligns';
29
- export * from './lib/table/data/common/boolean-function';
30
- export * from './lib/table/data/common/checkbox-column';
31
- export * from './lib/table/data/common/size';
32
- export * from './lib/table/data/common/size.if';
33
- export * from './lib/table/data/common/area-map';
34
- export * from './lib/table/data/common/area-map.type';
35
- export * from './lib/table/data/common/area-map-factory';
36
- export * from './lib/table/data/common/filter-function';
37
- export * from './lib/table/data/common/args-render-cell-div';
38
- export * from './lib/table/data/common/args-adjust-columns-to-row-parent-params';
39
- export * from './lib/table/data/common/event/ge-mouse-event';
40
- export * from './lib/table/data/common/event/ge-model-change-event';
41
- export * from './lib/table/data/common/event/ge-cell-indices';
42
- export * from './lib/table/data/common/event/ge-key-event';
43
- export * from './lib/table/focus/focus-model';
44
- export * from './lib/table/focus/focus-model.if';
45
- export * from './lib/table/focus/focus.type';
46
- export * from './lib/table/checkbox/checkbox-model';
47
- export * from './lib/table/checkbox/tree-checkbox-model';
48
- export * from './lib/table/checkbox/checkbox-model.if';
49
- export * from './lib/table/data/options/auto-restore-options.if';
50
- export * from './lib/table/data/options/auto-restore-options';
51
- export * from './lib/table/data/options/table-options';
52
- export * from './lib/table/data/options/table-options.if';
53
- export * from './lib/table/data/options/default-row-heights.if';
54
- export * from './lib/table/data/options/default-row-heights';
55
- export * from './lib/table/data/options/tree-options';
56
- export * from './lib/table/data/options/tree-options.if';
57
- export * from './lib/table/data/options/icon';
58
- export * from './lib/table/data/options/icon.if';
59
- export * from './lib/table/data/options/sorted-options.if';
60
- export * from './lib/table/data/options/sorted-options';
61
- export * from './lib/table/data/tablemodel/padding';
62
- export * from './lib/table/data/tablemodel/table-model.if';
63
- export * from './lib/table/data/tablemodel/table-model';
64
- export * from './lib/table/data/tablemodel/area-ident.type';
65
- export * from './lib/table/data/tablemodel/column/column-def';
66
- export * from './lib/table/data/tablemodel/column/column-def.if';
67
- export * from './lib/table/data/tablemodel/areamodel/area-model.if';
68
- export * from './lib/table/data/tablemodel/areamodel/abstract-area-model';
69
- export * from './lib/table/data/tablemodel/areamodel/area-model-array-array';
70
- export * from './lib/table/data/tablemodel/areamodel/area-model-hidden';
71
- export * from './lib/table/data/tablemodel/areamodel/area-model-object-array';
72
- export * from './lib/table/data/tablemodel/areamodel/area-model-tree';
73
- export * from './lib/table/data/tablemodel/areamodel/col-and-rowspan-model';
74
- export * from './lib/table/data/common/tree-row';
75
- export * from './lib/table/data/common/tree-row-if';
76
- export * from './lib/table/data/common/tree-arrow.type';
77
- export * from './lib/table/data/tablemodel/areamodel/area-model-object-array-with-columndefs';
78
- export * from './lib/table/service/convenience-dom.service';
79
- export * from './lib/table/service/dom-service.if';
80
- export * from './lib/table/service/tree-row.service';
81
- export * from './lib/table/service/store-state-scroll-pos.service';
82
- export * from './lib/table/service/store-state-collapsed-expand.service';
83
- export * from './lib/table/service/store-state-sorting.service';
84
- export * from './lib/table/service/data/collapsed-expanded.data';
85
- export * from './lib/table/service/data/html-style.type';
86
- export * from './lib/table/service/ge-filter.service';
87
- export * from './lib/table/renderer/cell-render.if';
88
- export * from './lib/table/renderer/checkbox-cell-renderer';
89
- export * from './lib/table/renderer/date-to-iso-cell-renderer';
90
- export * from './lib/table/renderer/date-to-int-date-cell-renderer';
91
- export * from './lib/table/renderer/date-to-locale-date-cell-renderer';
92
- export * from './lib/table/renderer/male-female-to-icon-cell-renderer';
93
- export * from './lib/table/renderer/renderer-cleanup-fn.type';
94
- export * from './lib/table/renderer/number-cell-renderer';
95
- export * from './lib/table/renderer/edit/edit-cell-renderer.type';
96
- export * from './lib/table/renderer/edit/input-cell-renderer';
97
- export * from './lib/table/renderer/edit/select-cell-renderer';
98
- export * from './lib/table/selection/selection-model';
99
- export * from './lib/table/selection/selection-model.if';
100
- export * from './lib/table/selection/selection.type';
101
- export * from './lib/table/selection/selection-service';
102
- export { ArgsRenderCellDiv } from "./lib/table/data/common/args-render-cell-div";
103
- export { ArgsAdjustColumnsToRowParentParams } from "./lib/table/data/common/args-adjust-columns-to-row-parent-params";
@@ -1,2 +0,0 @@
1
- export declare const actionIds: readonly ["START_EDITING", "TOGGLE_SELECTION", "SELECT_ALL", "DESELECT_ALL"];
2
- export declare type ActionId = typeof actionIds[number];
@@ -1,6 +0,0 @@
1
- import { ActionId } from "./action-id.type";
2
- export declare class OsxShortcutActionIdMapping {
3
- get(): {
4
- [key: string]: ActionId;
5
- };
6
- }
@@ -1,4 +0,0 @@
1
- import { ActionId } from "./action-id.type";
2
- export declare type ShortcutActionIdMapping = {
3
- [key: string]: ActionId;
4
- };
@@ -1,17 +0,0 @@
1
- import { TableScope } from "../table-scope";
2
- import { OnActionTriggeredIf } from "./on-action-triggered.if";
3
- export declare class ShortcutService {
4
- protected tableScope: TableScope;
5
- private shortcutActionIdMapping;
6
- private listener;
7
- constructor(tableScope: TableScope);
8
- addListener(listener: OnActionTriggeredIf): void;
9
- init(): void;
10
- private isMacintosh;
11
- private isLocalhost;
12
- private onKeyDown;
13
- private emit;
14
- private findEnty;
15
- private areTokensEquals;
16
- private getTokenByEvent;
17
- }
@@ -1,6 +0,0 @@
1
- import { ActionId } from "./action-id.type";
2
- export declare class WindowsShortcutActionIdMapping {
3
- get(): {
4
- [key: string]: ActionId;
5
- };
6
- }
@@ -1,12 +0,0 @@
1
- import { CheckedType } from "../data/common/checked-type";
2
- import { CheckboxModelIf } from "./checkbox-model.if";
3
- export declare class CheckboxModel<T> implements CheckboxModelIf<T> {
4
- protected checkedRows: Array<T>;
5
- getCheckedRows(): T[];
6
- setCheckedRows(rows: T[]): void;
7
- addCheckedRows(rows: T[]): void;
8
- checkRow(row: T, sel: boolean): void;
9
- isRowChecked(row: T): CheckedType;
10
- checkAll(_rows: T[]): void;
11
- private removeSelectedRow;
12
- }
@@ -1,9 +0,0 @@
1
- import { CheckedType } from "../data/common/checked-type";
2
- export interface CheckboxModelIf<T> {
3
- getCheckedRows(): T[];
4
- setCheckedRows(value: T[]): void;
5
- addCheckedRows(value: T[]): void;
6
- checkRow(row: T, check: boolean): void;
7
- isRowChecked(row: T): CheckedType;
8
- checkAll(value: T[]): void;
9
- }
@@ -1,17 +0,0 @@
1
- import { CheckedType } from "../data/common/checked-type";
2
- import { CheckboxModelIf } from "./checkbox-model.if";
3
- import { TreeRowIf } from "../data/common/tree-row-if";
4
- export declare class TreeCheckboxModel<T extends TreeRowIf<any>> implements CheckboxModelIf<T> {
5
- protected allRootNodes: T[];
6
- constructor(allRootNodes?: T[]);
7
- checkRow(row: T, sel: boolean): void;
8
- checkAll(arr: T[]): void;
9
- getCheckedRows(): T[];
10
- isRowChecked(row: T): CheckedType;
11
- setCheckedRows(rows: T[]): void;
12
- addCheckedRows(rows: T[]): void;
13
- private autoCheckParent;
14
- private areAllChildrenChecked;
15
- private areAllChildrenUnchecked;
16
- private addSelectedRecursive;
17
- }
@@ -1,24 +0,0 @@
1
- export declare const bodyLeft: {
2
- body: string[];
3
- };
4
- export declare const bodyCenter: {
5
- body: string[];
6
- };
7
- export declare const bodyRight: {
8
- body: string[];
9
- };
10
- export declare const allLeft: {
11
- header: string[];
12
- body: string[];
13
- footer: string[];
14
- };
15
- export declare const allCenter: {
16
- header: string[];
17
- body: string[];
18
- footer: string[];
19
- };
20
- export declare const allRight: {
21
- header: string[];
22
- body: string[];
23
- footer: string[];
24
- };
@@ -1,5 +0,0 @@
1
- import { AreaObjectMap } from "./area-map";
2
- import { CellRendererIf } from "../../renderer/cell-render.if";
3
- export declare class AreaMapFactory {
4
- static body(bodyRenderer: CellRendererIf): AreaObjectMap<CellRendererIf>;
5
- }
@@ -1,7 +0,0 @@
1
- import { AreaObjectMapType } from "./area-map.type";
2
- export declare class AreaObjectMap<T> implements AreaObjectMapType<T> {
3
- header?: T | undefined;
4
- body?: T | undefined;
5
- footer?: T | undefined;
6
- constructor(header?: T | undefined, body?: T | undefined, footer?: T | undefined);
7
- }
@@ -1,5 +0,0 @@
1
- export declare type AreaObjectMapType<T> = {
2
- header?: T | undefined;
3
- body?: T | undefined;
4
- footer?: T | undefined;
5
- };
@@ -1,13 +0,0 @@
1
- import { AreaModelIf } from "../tablemodel/areamodel/area-model.if";
2
- import { AreaIdent } from "../tablemodel/area-ident.type";
3
- export interface ArgsRenderCellDiv {
4
- areaModel: AreaModelIf;
5
- areaIdent: AreaIdent;
6
- rowIndex: number;
7
- index: number;
8
- left: number;
9
- width: number;
10
- height: number;
11
- top: number;
12
- parent: HTMLDivElement;
13
- }
@@ -1,3 +0,0 @@
1
- export declare type BooleanFunction = () => boolean;
2
- export declare const TrueFn: () => boolean;
3
- export declare const FalseFn: () => boolean;