@guiexpert/table 1.0.2 → 1.0.5

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 (407) hide show
  1. package/esm2022/guiexpert-table.mjs +5 -0
  2. package/esm2022/index.mjs +140 -0
  3. package/esm2022/lib/table/action/action-id.type.mjs +20 -0
  4. package/esm2022/lib/table/action/on-action-triggered.if.mjs +2 -0
  5. package/esm2022/lib/table/action/osx-shortcut-actionId-mapping.mjs +21 -0
  6. package/esm2022/lib/table/action/shortcut-actionid-mapping.type.mjs +2 -0
  7. package/esm2022/lib/table/action/shortcut.service.mjs +114 -0
  8. package/esm2022/lib/table/action/windows-shortcut-actionId-mapping.mjs +19 -0
  9. package/esm2022/lib/table/checkbox/checkbox-model.if.mjs +2 -0
  10. package/esm2022/lib/table/checkbox/checkbox-model.mjs +50 -0
  11. package/esm2022/lib/table/checkbox/tree-checkbox-model.mjs +107 -0
  12. package/esm2022/lib/table/color/color-rgb.if.mjs +2 -0
  13. package/esm2022/lib/table/color/color-rgb.mjs +11 -0
  14. package/esm2022/lib/table/color/ge-css-color-util.mjs +26 -0
  15. package/esm2022/lib/table/color/three-color-gradient-arg.if.mjs +2 -0
  16. package/esm2022/lib/table/color/three-color-gradient-arg.mjs +17 -0
  17. package/esm2022/lib/table/color/two-color-gradient-arg.if.mjs +2 -0
  18. package/esm2022/lib/table/color/two-color-gradient-arg.mjs +13 -0
  19. package/esm2022/lib/table/css-vars.mjs +238 -0
  20. package/esm2022/lib/table/data/chunk/chunk.data-event.if.mjs +2 -0
  21. package/esm2022/lib/table/data/chunk/chunk.data-event.mjs +12 -0
  22. package/esm2022/lib/table/data/chunk/request-chunk.if.mjs +2 -0
  23. package/esm2022/lib/table/data/chunk/request-chunk.mjs +22 -0
  24. package/esm2022/lib/table/data/common/aligns.mjs +19 -0
  25. package/esm2022/lib/table/data/common/area-map-factory.mjs +7 -0
  26. package/esm2022/lib/table/data/common/area-map.mjs +11 -0
  27. package/esm2022/lib/table/data/common/area-map.type.mjs +2 -0
  28. package/esm2022/lib/table/data/common/args-adjust-columns-to-row-parent-params.mjs +2 -0
  29. package/esm2022/lib/table/data/common/args-render-cell-div.mjs +2 -0
  30. package/esm2022/lib/table/data/common/boolean-function.mjs +3 -0
  31. package/esm2022/lib/table/data/common/cell-range.mjs +36 -0
  32. package/esm2022/lib/table/data/common/checkbox-column-def.mjs +13 -0
  33. package/esm2022/lib/table/data/common/checked-type.mjs +2 -0
  34. package/esm2022/lib/table/data/common/event/ge-cell-indices.mjs +9 -0
  35. package/esm2022/lib/table/data/common/event/ge-key-event.mjs +9 -0
  36. package/esm2022/lib/table/data/common/event/ge-model-change-event.mjs +11 -0
  37. package/esm2022/lib/table/data/common/event/ge-mouse-event.mjs +30 -0
  38. package/esm2022/lib/table/data/common/event/input/table-cell-update-event.if.mjs +2 -0
  39. package/esm2022/lib/table/data/common/event/input/table-cell-update-event.mjs +13 -0
  40. package/esm2022/lib/table/data/common/filter-function.mjs +2 -0
  41. package/esm2022/lib/table/data/common/get-t.mjs +2 -0
  42. package/esm2022/lib/table/data/common/index-and-px.mjs +9 -0
  43. package/esm2022/lib/table/data/common/size.if.mjs +2 -0
  44. package/esm2022/lib/table/data/common/size.mjs +9 -0
  45. package/esm2022/lib/table/data/common/sizes.mjs +33 -0
  46. package/esm2022/lib/table/data/common/sort-item.mjs +9 -0
  47. package/esm2022/lib/table/data/common/sort-state.type.mjs +2 -0
  48. package/esm2022/lib/table/data/common/tree-arrow.type.mjs +2 -0
  49. package/esm2022/lib/table/data/common/tree-row-if.mjs +2 -0
  50. package/esm2022/lib/table/data/common/tree-row.mjs +19 -0
  51. package/esm2022/lib/table/data/common/value-label.if.mjs +2 -0
  52. package/esm2022/lib/table/data/common/value-label.mjs +9 -0
  53. package/esm2022/lib/table/data/div-scope.type.mjs +2 -0
  54. package/esm2022/lib/table/data/event/mouse-target-data.mjs +36 -0
  55. package/esm2022/lib/table/data/geo-data.mjs +15 -0
  56. package/esm2022/lib/table/data/options/auto-restore-options.if.mjs +2 -0
  57. package/esm2022/lib/table/data/options/auto-restore-options.mjs +40 -0
  58. package/esm2022/lib/table/data/options/default-row-heights.if.mjs +2 -0
  59. package/esm2022/lib/table/data/options/default-row-heights.mjs +11 -0
  60. package/esm2022/lib/table/data/options/icon.if.mjs +2 -0
  61. package/esm2022/lib/table/data/options/icon.mjs +11 -0
  62. package/esm2022/lib/table/data/options/sorted-options.if.mjs +2 -0
  63. package/esm2022/lib/table/data/options/sorted-options.mjs +12 -0
  64. package/esm2022/lib/table/data/options/table-options.if.mjs +2 -0
  65. package/esm2022/lib/table/data/options/table-options.mjs +44 -0
  66. package/esm2022/lib/table/data/options/tree-options.if.mjs +2 -0
  67. package/esm2022/lib/table/data/options/tree-options.mjs +14 -0
  68. package/esm2022/lib/table/data/side-ident.type.mjs +2 -0
  69. package/esm2022/lib/table/data/table-model-and-options.if.mjs +2 -0
  70. package/esm2022/lib/table/data/table-model-and-options.mjs +9 -0
  71. package/esm2022/lib/table/data/tablemodel/area-ident.type.mjs +14 -0
  72. package/esm2022/lib/table/data/tablemodel/areamodel/abstract-area-model.mjs +137 -0
  73. package/esm2022/lib/table/data/tablemodel/areamodel/area-model-array-of-arrays.mjs +47 -0
  74. package/esm2022/lib/table/data/tablemodel/areamodel/area-model-cell-groups.mjs +163 -0
  75. package/esm2022/lib/table/data/tablemodel/areamodel/area-model-hidden.mjs +84 -0
  76. package/esm2022/lib/table/data/tablemodel/areamodel/area-model-object-array-with-columndefs.mjs +15 -0
  77. package/esm2022/lib/table/data/tablemodel/areamodel/area-model-object-array.mjs +88 -0
  78. package/esm2022/lib/table/data/tablemodel/areamodel/area-model-tree.mjs +181 -0
  79. package/esm2022/lib/table/data/tablemodel/areamodel/area-model.if.mjs +2 -0
  80. package/esm2022/lib/table/data/tablemodel/areamodel/area-model.mjs +76 -0
  81. package/esm2022/lib/table/data/tablemodel/areamodel/col-and-rowspan-model.mjs +51 -0
  82. package/esm2022/lib/table/data/tablemodel/areamodel/has-default-row-height-if.mjs +2 -0
  83. package/esm2022/lib/table/data/tablemodel/cellgroup/cell-group-ext.mjs +133 -0
  84. package/esm2022/lib/table/data/tablemodel/cellgroup/cell-group.if.mjs +2 -0
  85. package/esm2022/lib/table/data/tablemodel/cellgroup/cell-group.mjs +18 -0
  86. package/esm2022/lib/table/data/tablemodel/cellgroup/cellgroup-factory.mjs +110 -0
  87. package/esm2022/lib/table/data/tablemodel/column/column-def.if.mjs +2 -0
  88. package/esm2022/lib/table/data/tablemodel/column/column-def.mjs +52 -0
  89. package/esm2022/lib/table/data/tablemodel/padding.mjs +13 -0
  90. package/esm2022/lib/table/data/tablemodel/table-model.if.mjs +2 -0
  91. package/esm2022/lib/table/data/tablemodel/table-model.mjs +308 -0
  92. package/esm2022/lib/table/ele-scope.mjs +199 -0
  93. package/esm2022/lib/table/event-adapter.mjs +17 -0
  94. package/esm2022/lib/table/event-listener.if.mjs +2 -0
  95. package/esm2022/lib/table/factory/table-factory.mjs +186 -0
  96. package/esm2022/lib/table/factory/tree-factory.mjs +32 -0
  97. package/esm2022/lib/table/focus/focus-model.if.mjs +2 -0
  98. package/esm2022/lib/table/focus/focus-model.mjs +33 -0
  99. package/esm2022/lib/table/focus/focus.type.mjs +2 -0
  100. package/esm2022/lib/table/input-handler.mjs +25 -0
  101. package/esm2022/lib/table/mouse-handler.mjs +196 -0
  102. package/esm2022/lib/table/render-scope.mjs +719 -0
  103. package/esm2022/lib/table/renderer/cell-group-ext-cell-renderer.mjs +8 -0
  104. package/esm2022/lib/table/renderer/cell-render.if.mjs +2 -0
  105. package/esm2022/lib/table/renderer/checkbox-boolean-property-cell-renderer.mjs +47 -0
  106. package/esm2022/lib/table/renderer/checkbox-cell-renderer.mjs +22 -0
  107. package/esm2022/lib/table/renderer/date-to-int-date-cell-renderer.mjs +24 -0
  108. package/esm2022/lib/table/renderer/date-to-iso-cell-renderer.mjs +9 -0
  109. package/esm2022/lib/table/renderer/date-to-locale-date-cell-renderer.mjs +9 -0
  110. package/esm2022/lib/table/renderer/date-to-tec-cell-renderer.mjs +12 -0
  111. package/esm2022/lib/table/renderer/edit/edit-cell-renderer.type.mjs +2 -0
  112. package/esm2022/lib/table/renderer/edit/edit-input-pipe-for-number.mjs +4 -0
  113. package/esm2022/lib/table/renderer/edit/edit-input-pipe.if.mjs +2 -0
  114. package/esm2022/lib/table/renderer/edit/input-cell-renderer.mjs +23 -0
  115. package/esm2022/lib/table/renderer/edit/select-cell-renderer.mjs +36 -0
  116. package/esm2022/lib/table/renderer/male-female-to-icon-cell-renderer.mjs +12 -0
  117. package/esm2022/lib/table/renderer/number-cell-renderer.mjs +21 -0
  118. package/esm2022/lib/table/renderer/progress-bar-cell-renderer.mjs +44 -0
  119. package/esm2022/lib/table/renderer/renderer-cleanup-fn.type.mjs +2 -0
  120. package/esm2022/lib/table/renderer/renderer.mjs +7 -0
  121. package/esm2022/lib/table/renderer/star-rating-cell-renderer.mjs +27 -0
  122. package/esm2022/lib/table/renderer/true-false-cell-renderer.mjs +15 -0
  123. package/esm2022/lib/table/selection/selection-model.if.mjs +2 -0
  124. package/esm2022/lib/table/selection/selection-model.mjs +99 -0
  125. package/esm2022/lib/table/selection/selection-service.mjs +101 -0
  126. package/esm2022/lib/table/selection/selection.type.mjs +2 -0
  127. package/esm2022/lib/table/service/abstract-store-state.service.mjs +50 -0
  128. package/esm2022/lib/table/service/convenience-dom.service.mjs +405 -0
  129. package/esm2022/lib/table/service/data/collapsed-expanded.data.mjs +13 -0
  130. package/esm2022/lib/table/service/data/html-style.type.mjs +2 -0
  131. package/esm2022/lib/table/service/dom-service.if.mjs +2 -0
  132. package/esm2022/lib/table/service/ge-filter.service.mjs +98 -0
  133. package/esm2022/lib/table/service/simple-dom-service.mjs +34 -0
  134. package/esm2022/lib/table/service/sorter.service.mjs +27 -0
  135. package/esm2022/lib/table/service/store-state-collapsed-expand.service.mjs +57 -0
  136. package/esm2022/lib/table/service/store-state-scroll-pos.service.mjs +29 -0
  137. package/esm2022/lib/table/service/store-state-sorting.service.mjs +29 -0
  138. package/esm2022/lib/table/service/tree-row.service.mjs +23 -0
  139. package/esm2022/lib/table/table-api.mjs +42 -0
  140. package/esm2022/lib/table/table-scope.mjs +364 -0
  141. package/{src/index.ts → index.d.ts} +4 -24
  142. package/lib/table/action/action-id.type.d.ts +2 -0
  143. package/{src/lib/table/action/on-action-triggered.if.ts → lib/table/action/on-action-triggered.if.d.ts} +1 -4
  144. package/lib/table/action/osx-shortcut-actionId-mapping.d.ts +6 -0
  145. package/lib/table/action/shortcut-actionid-mapping.type.d.ts +4 -0
  146. package/lib/table/action/shortcut.service.d.ts +18 -0
  147. package/lib/table/action/windows-shortcut-actionId-mapping.d.ts +6 -0
  148. package/lib/table/checkbox/checkbox-model.d.ts +12 -0
  149. package/lib/table/checkbox/checkbox-model.if.d.ts +9 -0
  150. package/lib/table/checkbox/tree-checkbox-model.d.ts +17 -0
  151. package/lib/table/color/color-rgb.d.ts +7 -0
  152. package/lib/table/color/color-rgb.if.d.ts +5 -0
  153. package/lib/table/color/ge-css-color-util.d.ts +7 -0
  154. package/lib/table/color/three-color-gradient-arg.d.ts +11 -0
  155. package/lib/table/color/three-color-gradient-arg.if.d.ts +9 -0
  156. package/lib/table/color/two-color-gradient-arg.d.ts +9 -0
  157. package/lib/table/color/two-color-gradient-arg.if.d.ts +7 -0
  158. package/lib/table/css-vars.d.ts +9 -0
  159. package/lib/table/data/chunk/chunk.data-event.d.ts +9 -0
  160. package/lib/table/data/chunk/chunk.data-event.if.d.ts +4 -0
  161. package/lib/table/data/chunk/request-chunk.d.ts +14 -0
  162. package/lib/table/data/chunk/request-chunk.if.d.ts +9 -0
  163. package/lib/table/data/common/aligns.d.ts +24 -0
  164. package/lib/table/data/common/area-map-factory.d.ts +5 -0
  165. package/lib/table/data/common/area-map.d.ts +7 -0
  166. package/lib/table/data/common/area-map.type.d.ts +5 -0
  167. package/{src/lib/table/data/common/args-adjust-columns-to-row-parent-params.ts → lib/table/data/common/args-adjust-columns-to-row-parent-params.d.ts} +10 -11
  168. package/lib/table/data/common/args-render-cell-div.d.ts +17 -0
  169. package/lib/table/data/common/boolean-function.d.ts +3 -0
  170. package/lib/table/data/common/cell-range.d.ts +19 -0
  171. package/lib/table/data/common/checkbox-column-def.d.ts +13 -0
  172. package/lib/table/data/common/event/ge-cell-indices.d.ts +5 -0
  173. package/lib/table/data/common/event/ge-key-event.d.ts +5 -0
  174. package/lib/table/data/common/event/ge-model-change-event.d.ts +6 -0
  175. package/lib/table/data/common/event/ge-mouse-event.d.ts +17 -0
  176. package/lib/table/data/common/event/input/table-cell-update-event.d.ts +9 -0
  177. package/{src/lib/table/data/common/event/input/table-cell-update-event.if.ts → lib/table/data/common/event/input/table-cell-update-event.if.d.ts} +4 -7
  178. package/lib/table/data/common/index-and-px.d.ts +5 -0
  179. package/lib/table/data/common/size.d.ts +6 -0
  180. package/lib/table/data/common/size.if.d.ts +4 -0
  181. package/lib/table/data/common/sizes.d.ts +32 -0
  182. package/lib/table/data/common/sort-item.d.ts +6 -0
  183. package/lib/table/data/common/tree-row-if.d.ts +10 -0
  184. package/lib/table/data/common/tree-row.d.ts +11 -0
  185. package/lib/table/data/common/value-label.d.ts +6 -0
  186. package/lib/table/data/common/value-label.if.d.ts +4 -0
  187. package/lib/table/data/div-scope.type.d.ts +7 -0
  188. package/lib/table/data/event/mouse-target-data.d.ts +15 -0
  189. package/lib/table/data/geo-data.d.ts +8 -0
  190. package/lib/table/data/options/auto-restore-options.d.ts +11 -0
  191. package/lib/table/data/options/auto-restore-options.if.d.ts +16 -0
  192. package/lib/table/data/options/default-row-heights.d.ts +7 -0
  193. package/lib/table/data/options/default-row-heights.if.d.ts +5 -0
  194. package/lib/table/data/options/icon.d.ts +7 -0
  195. package/lib/table/data/options/icon.if.d.ts +5 -0
  196. package/lib/table/data/options/sorted-options.d.ts +8 -0
  197. package/{src/lib/table/data/options/sorted-options.if.ts → lib/table/data/options/sorted-options.if.d.ts} +3 -6
  198. package/lib/table/data/options/table-options.d.ts +41 -0
  199. package/lib/table/data/options/table-options.if.d.ts +42 -0
  200. package/lib/table/data/options/tree-options.d.ts +9 -0
  201. package/lib/table/data/options/tree-options.if.d.ts +7 -0
  202. package/lib/table/data/table-model-and-options.d.ts +8 -0
  203. package/{src/lib/table/data/table-model-and-options.if.ts → lib/table/data/table-model-and-options.if.d.ts} +2 -4
  204. package/{src/lib/table/data/tablemodel/area-ident.type.ts → lib/table/data/tablemodel/area-ident.type.d.ts} +1 -10
  205. package/lib/table/data/tablemodel/areamodel/abstract-area-model.d.ts +47 -0
  206. package/lib/table/data/tablemodel/areamodel/area-model-array-of-arrays.d.ts +19 -0
  207. package/lib/table/data/tablemodel/areamodel/area-model-cell-groups.d.ts +51 -0
  208. package/lib/table/data/tablemodel/areamodel/area-model-hidden.d.ts +41 -0
  209. package/lib/table/data/tablemodel/areamodel/area-model-object-array-with-columndefs.d.ts +10 -0
  210. package/lib/table/data/tablemodel/areamodel/area-model-object-array.d.ts +28 -0
  211. package/lib/table/data/tablemodel/areamodel/area-model-tree.d.ts +39 -0
  212. package/lib/table/data/tablemodel/areamodel/area-model.d.ts +37 -0
  213. package/lib/table/data/tablemodel/areamodel/area-model.if.d.ts +158 -0
  214. package/lib/table/data/tablemodel/areamodel/col-and-rowspan-model.d.ts +12 -0
  215. package/{src/lib/table/data/tablemodel/areamodel/has-default-row-height-if.ts → lib/table/data/tablemodel/areamodel/has-default-row-height-if.d.ts} +1 -1
  216. package/lib/table/data/tablemodel/cellgroup/cell-group-ext.d.ts +21 -0
  217. package/lib/table/data/tablemodel/cellgroup/cell-group.d.ts +11 -0
  218. package/lib/table/data/tablemodel/cellgroup/cell-group.if.d.ts +9 -0
  219. package/lib/table/data/tablemodel/cellgroup/cellgroup-factory.d.ts +10 -0
  220. package/lib/table/data/tablemodel/column/column-def.d.ts +52 -0
  221. package/lib/table/data/tablemodel/column/column-def.if.d.ts +25 -0
  222. package/lib/table/data/tablemodel/padding.d.ts +7 -0
  223. package/lib/table/data/tablemodel/table-model.d.ts +88 -0
  224. package/lib/table/data/tablemodel/table-model.if.d.ts +56 -0
  225. package/lib/table/ele-scope.d.ts +37 -0
  226. package/lib/table/event-adapter.d.ts +12 -0
  227. package/lib/table/event-listener.if.d.ts +11 -0
  228. package/lib/table/factory/table-factory.d.ts +65 -0
  229. package/lib/table/factory/tree-factory.d.ts +6 -0
  230. package/lib/table/focus/focus-model.d.ts +15 -0
  231. package/lib/table/focus/focus-model.if.d.ts +8 -0
  232. package/{src/lib/table/focus/focus.type.ts → lib/table/focus/focus.type.d.ts} +0 -3
  233. package/lib/table/input-handler.d.ts +6 -0
  234. package/lib/table/mouse-handler.d.ts +25 -0
  235. package/lib/table/render-scope.d.ts +86 -0
  236. package/lib/table/renderer/cell-group-ext-cell-renderer.d.ts +9 -0
  237. package/{src/lib/table/renderer/cell-render.if.ts → lib/table/renderer/cell-render.if.d.ts} +1 -10
  238. package/lib/table/renderer/checkbox-boolean-property-cell-renderer.d.ts +15 -0
  239. package/lib/table/renderer/checkbox-cell-renderer.d.ts +8 -0
  240. package/lib/table/renderer/date-to-int-date-cell-renderer.d.ts +9 -0
  241. package/lib/table/renderer/date-to-iso-cell-renderer.d.ts +8 -0
  242. package/lib/table/renderer/date-to-locale-date-cell-renderer.d.ts +8 -0
  243. package/lib/table/renderer/date-to-tec-cell-renderer.d.ts +8 -0
  244. package/{src/lib/table/renderer/edit/edit-cell-renderer.type.ts → lib/table/renderer/edit/edit-cell-renderer.type.d.ts} +0 -1
  245. package/lib/table/renderer/edit/edit-input-pipe-for-number.d.ts +2 -0
  246. package/lib/table/renderer/edit/edit-input-pipe.if.d.ts +3 -0
  247. package/lib/table/renderer/edit/input-cell-renderer.d.ts +8 -0
  248. package/lib/table/renderer/edit/select-cell-renderer.d.ts +12 -0
  249. package/lib/table/renderer/male-female-to-icon-cell-renderer.d.ts +8 -0
  250. package/lib/table/renderer/number-cell-renderer.d.ts +11 -0
  251. package/lib/table/renderer/progress-bar-cell-renderer.d.ts +15 -0
  252. package/lib/table/renderer/renderer.d.ts +5 -0
  253. package/lib/table/renderer/star-rating-cell-renderer.d.ts +13 -0
  254. package/lib/table/renderer/true-false-cell-renderer.d.ts +8 -0
  255. package/lib/table/selection/selection-model.d.ts +21 -0
  256. package/lib/table/selection/selection-model.if.d.ts +11 -0
  257. package/lib/table/selection/selection-service.d.ts +17 -0
  258. package/{src/lib/table/selection/selection.type.ts → lib/table/selection/selection.type.d.ts} +0 -3
  259. package/lib/table/service/abstract-store-state.service.d.ts +10 -0
  260. package/lib/table/service/convenience-dom.service.d.ts +46 -0
  261. package/lib/table/service/data/collapsed-expanded.data.d.ts +7 -0
  262. package/lib/table/service/data/html-style.type.d.ts +3 -0
  263. package/lib/table/service/dom-service.if.d.ts +9 -0
  264. package/lib/table/service/ge-filter.service.d.ts +5 -0
  265. package/lib/table/service/simple-dom-service.d.ts +10 -0
  266. package/lib/table/service/sorter.service.d.ts +3 -0
  267. package/lib/table/service/store-state-collapsed-expand.service.d.ts +15 -0
  268. package/lib/table/service/store-state-scroll-pos.service.d.ts +10 -0
  269. package/lib/table/service/store-state-sorting.service.d.ts +11 -0
  270. package/lib/table/service/tree-row.service.d.ts +5 -0
  271. package/lib/table/table-api.d.ts +18 -0
  272. package/lib/table/table-scope.d.ts +56 -0
  273. package/package.json +17 -10
  274. package/.eslintrc.json +0 -42
  275. package/LICENSE +0 -35
  276. package/README.md +0 -102
  277. package/jest.config.ts +0 -18
  278. package/ng-package.json +0 -7
  279. package/project.json +0 -47
  280. package/src/lib/table/action/action-id.type.ts +0 -24
  281. package/src/lib/table/action/osx-shortcut-actionId-mapping.ts +0 -29
  282. package/src/lib/table/action/shortcut-actionid-mapping.type.ts +0 -3
  283. package/src/lib/table/action/shortcut.service.ts +0 -134
  284. package/src/lib/table/action/windows-shortcut-actionId-mapping.ts +0 -27
  285. package/src/lib/table/checkbox/checkbox-model.if.ts +0 -16
  286. package/src/lib/table/checkbox/checkbox-model.ts +0 -62
  287. package/src/lib/table/checkbox/tree-checkbox-model.ts +0 -123
  288. package/src/lib/table/color/color-rgb.if.ts +0 -7
  289. package/src/lib/table/color/color-rgb.ts +0 -10
  290. package/src/lib/table/color/ge-css-color-util.ts +0 -43
  291. package/src/lib/table/color/three-color-gradient-arg.if.ts +0 -10
  292. package/src/lib/table/color/three-color-gradient-arg.ts +0 -14
  293. package/src/lib/table/color/two-color-gradient-arg.if.ts +0 -8
  294. package/src/lib/table/color/two-color-gradient-arg.ts +0 -12
  295. package/src/lib/table/css-vars.ts +0 -243
  296. package/src/lib/table/data/common/aligns.ts +0 -19
  297. package/src/lib/table/data/common/area-map-factory.ts +0 -14
  298. package/src/lib/table/data/common/area-map.ts +0 -11
  299. package/src/lib/table/data/common/area-map.type.ts +0 -5
  300. package/src/lib/table/data/common/args-render-cell-div.ts +0 -18
  301. package/src/lib/table/data/common/boolean-function.ts +0 -4
  302. package/src/lib/table/data/common/cell-range.ts +0 -57
  303. package/src/lib/table/data/common/checkbox-column-def.ts +0 -25
  304. package/src/lib/table/data/common/event/ge-cell-indices.ts +0 -9
  305. package/src/lib/table/data/common/event/ge-key-event.ts +0 -10
  306. package/src/lib/table/data/common/event/ge-model-change-event.ts +0 -13
  307. package/src/lib/table/data/common/event/ge-mouse-event.ts +0 -38
  308. package/src/lib/table/data/common/event/input/table-cell-update-event.ts +0 -14
  309. package/src/lib/table/data/common/index-and-px.ts +0 -9
  310. package/src/lib/table/data/common/size.if.ts +0 -4
  311. package/src/lib/table/data/common/size.ts +0 -9
  312. package/src/lib/table/data/common/sizes.ts +0 -35
  313. package/src/lib/table/data/common/sort-item.ts +0 -11
  314. package/src/lib/table/data/common/tree-row-if.ts +0 -11
  315. package/src/lib/table/data/common/tree-row.ts +0 -16
  316. package/src/lib/table/data/common/value-label.if.ts +0 -6
  317. package/src/lib/table/data/common/value-label.ts +0 -13
  318. package/src/lib/table/data/div-scope.type.ts +0 -5
  319. package/src/lib/table/data/event/mouse-target-data.ts +0 -45
  320. package/src/lib/table/data/geo-data.ts +0 -13
  321. package/src/lib/table/data/options/auto-restore-options.if.ts +0 -21
  322. package/src/lib/table/data/options/auto-restore-options.ts +0 -50
  323. package/src/lib/table/data/options/default-row-heights.if.ts +0 -5
  324. package/src/lib/table/data/options/default-row-heights.ts +0 -10
  325. package/src/lib/table/data/options/icon.if.ts +0 -7
  326. package/src/lib/table/data/options/icon.ts +0 -10
  327. package/src/lib/table/data/options/sorted-options.ts +0 -15
  328. package/src/lib/table/data/options/table-options.if.ts +0 -54
  329. package/src/lib/table/data/options/table-options.ts +0 -66
  330. package/src/lib/table/data/options/tree-options.if.ts +0 -10
  331. package/src/lib/table/data/options/tree-options.ts +0 -32
  332. package/src/lib/table/data/table-model-and-options.ts +0 -13
  333. package/src/lib/table/data/tablemodel/areamodel/abstract-area-model.ts +0 -183
  334. package/src/lib/table/data/tablemodel/areamodel/area-model-array-of-arrays.ts +0 -59
  335. package/src/lib/table/data/tablemodel/areamodel/area-model-cell-groups.ts +0 -210
  336. package/src/lib/table/data/tablemodel/areamodel/area-model-hidden.ts +0 -120
  337. package/src/lib/table/data/tablemodel/areamodel/area-model-object-array-with-columndefs.ts +0 -23
  338. package/src/lib/table/data/tablemodel/areamodel/area-model-object-array.ts +0 -105
  339. package/src/lib/table/data/tablemodel/areamodel/area-model-tree.ts +0 -215
  340. package/src/lib/table/data/tablemodel/areamodel/area-model.if.ts +0 -186
  341. package/src/lib/table/data/tablemodel/areamodel/area-model.ts +0 -110
  342. package/src/lib/table/data/tablemodel/areamodel/col-and-rowspan-model.ts +0 -61
  343. package/src/lib/table/data/tablemodel/cellgroup/cell-group-ext.ts +0 -167
  344. package/src/lib/table/data/tablemodel/cellgroup/cell-group.if.ts +0 -12
  345. package/src/lib/table/data/tablemodel/cellgroup/cell-group.ts +0 -18
  346. package/src/lib/table/data/tablemodel/cellgroup/cellgroup-factory.ts +0 -148
  347. package/src/lib/table/data/tablemodel/column/column-def.if.ts +0 -28
  348. package/src/lib/table/data/tablemodel/column/column-def.ts +0 -104
  349. package/src/lib/table/data/tablemodel/padding.ts +0 -9
  350. package/src/lib/table/data/tablemodel/table-model.if.ts +0 -90
  351. package/src/lib/table/data/tablemodel/table-model.ts +0 -352
  352. package/src/lib/table/ele-scope.ts +0 -283
  353. package/src/lib/table/event-adapter.ts +0 -28
  354. package/src/lib/table/event-listener.if.ts +0 -19
  355. package/src/lib/table/factory/table-factory.ts +0 -378
  356. package/src/lib/table/factory/tree-factory.ts +0 -51
  357. package/src/lib/table/focus/focus-model.if.ts +0 -14
  358. package/src/lib/table/focus/focus-model.ts +0 -48
  359. package/src/lib/table/input-handler.ts +0 -34
  360. package/src/lib/table/mouse-handler.ts +0 -236
  361. package/src/lib/table/render-scope.ts +0 -936
  362. package/src/lib/table/renderer/cell-group-ext-cell-renderer.ts +0 -27
  363. package/src/lib/table/renderer/checkbox-boolean-property-cell-renderer.ts +0 -63
  364. package/src/lib/table/renderer/checkbox-cell-renderer.ts +0 -39
  365. package/src/lib/table/renderer/date-to-int-date-cell-renderer.ts +0 -39
  366. package/src/lib/table/renderer/date-to-iso-cell-renderer.ts +0 -25
  367. package/src/lib/table/renderer/date-to-locale-date-cell-renderer.ts +0 -24
  368. package/src/lib/table/renderer/date-to-tec-cell-renderer.ts +0 -28
  369. package/src/lib/table/renderer/edit/edit-input-pipe-for-number.ts +0 -6
  370. package/src/lib/table/renderer/edit/edit-input-pipe.if.ts +0 -7
  371. package/src/lib/table/renderer/edit/input-cell-renderer.ts +0 -41
  372. package/src/lib/table/renderer/edit/select-cell-renderer.ts +0 -60
  373. package/src/lib/table/renderer/male-female-to-icon-cell-renderer.ts +0 -26
  374. package/src/lib/table/renderer/number-cell-renderer.ts +0 -38
  375. package/src/lib/table/renderer/progress-bar-cell-renderer.ts +0 -60
  376. package/src/lib/table/renderer/renderer.ts +0 -11
  377. package/src/lib/table/renderer/star-rating-cell-renderer.ts +0 -45
  378. package/src/lib/table/renderer/true-false-cell-renderer.ts +0 -28
  379. package/src/lib/table/selection/selection-model.if.ts +0 -20
  380. package/src/lib/table/selection/selection-model.ts +0 -109
  381. package/src/lib/table/selection/selection-service.ts +0 -120
  382. package/src/lib/table/service/abstract-store-state.service.ts +0 -105
  383. package/src/lib/table/service/convenience-dom.service.ts +0 -548
  384. package/src/lib/table/service/data/collapsed-expanded.data.ts +0 -11
  385. package/src/lib/table/service/data/html-style.type.ts +0 -1
  386. package/src/lib/table/service/dom-service.if.ts +0 -16
  387. package/src/lib/table/service/ge-filter.service.ts +0 -123
  388. package/src/lib/table/service/simple-dom-service.ts +0 -46
  389. package/src/lib/table/service/sorter.service.ts +0 -30
  390. package/src/lib/table/service/store-state-collapsed-expand.service.ts +0 -76
  391. package/src/lib/table/service/store-state-scroll-pos.service.ts +0 -40
  392. package/src/lib/table/service/store-state-sorting.service.ts +0 -41
  393. package/src/lib/table/service/tree-row.service.ts +0 -31
  394. package/src/lib/table/table-api.ts +0 -61
  395. package/src/lib/table/table-scope.ts +0 -433
  396. package/src/test-setup.ts +0 -1
  397. package/tsconfig.json +0 -22
  398. package/tsconfig.lib.json +0 -19
  399. package/tsconfig.lib.prod.json +0 -7
  400. package/tsconfig.spec.json +0 -20
  401. /package/{src/lib/table/data/common/checked-type.ts → lib/table/data/common/checked-type.d.ts} +0 -0
  402. /package/{src/lib/table/data/common/filter-function.ts → lib/table/data/common/filter-function.d.ts} +0 -0
  403. /package/{src/lib/table/data/common/get-t.ts → lib/table/data/common/get-t.d.ts} +0 -0
  404. /package/{src/lib/table/data/common/sort-state.type.ts → lib/table/data/common/sort-state.type.d.ts} +0 -0
  405. /package/{src/lib/table/data/common/tree-arrow.type.ts → lib/table/data/common/tree-arrow.type.d.ts} +0 -0
  406. /package/{src/lib/table/data/side-ident.type.ts → lib/table/data/side-ident.type.d.ts} +0 -0
  407. /package/{src/lib/table/renderer/renderer-cleanup-fn.type.ts → lib/table/renderer/renderer-cleanup-fn.type.d.ts} +0 -0
@@ -0,0 +1,110 @@
1
+ import { ColumnDef } from "../column/column-def";
2
+ import { CellGroupExt } from "./cell-group-ext";
3
+ export class CellgroupFactory {
4
+ static buildColumnDefs(cellGroups, ret = []) {
5
+ for (const cellGroup of cellGroups) {
6
+ if (cellGroup.property) {
7
+ ret.push(ColumnDef.create({
8
+ property: cellGroup.property,
9
+ headerLabel: cellGroup.data ? cellGroup.data : cellGroup.property,
10
+ isVisible: () => {
11
+ // @ts-ignore
12
+ if (typeof cellGroup["isVisible"] === "function") {
13
+ const cge = cellGroup;
14
+ return cge.isVisible();
15
+ }
16
+ return true;
17
+ }
18
+ }));
19
+ }
20
+ if (cellGroup.children) {
21
+ CellgroupFactory.buildColumnDefs(cellGroup.children, ret);
22
+ }
23
+ }
24
+ return ret;
25
+ }
26
+ /*
27
+ static buildDeepMap(
28
+ cellGroups: CellGroupIf[],
29
+ ret: { [key: string]: number } = {},
30
+ deep = 0
31
+ ): { [key: string]: number } {
32
+
33
+ for (const cellGroup of cellGroups) {
34
+ //if (cellGroup.property) {
35
+ ret[cellGroup.data] = deep;
36
+ //}
37
+ if (cellGroup.children) {
38
+ CellgroupFactory.buildDeepMap(cellGroup.children, ret, deep + 1);
39
+ }
40
+ }
41
+ return ret;
42
+ }
43
+ */
44
+ static buildGroupExts(cellGroups, ret = [], deep = 0, parent) {
45
+ let last = undefined;
46
+ for (let i = 0; i < cellGroups.length; i++) {
47
+ const cellGroup = cellGroups[i];
48
+ const cge = new CellGroupExt(cellGroup, deep, i, parent);
49
+ if (last) {
50
+ cge.leftNeighbour = last;
51
+ last.rightNeighbour = cge;
52
+ }
53
+ ret.push(cge);
54
+ if (cellGroup.children) {
55
+ cge.children = CellgroupFactory.buildGroupExts(cellGroup.children, [], deep + 1, cge);
56
+ }
57
+ last = cge;
58
+ }
59
+ return ret;
60
+ }
61
+ static flattenGroupExts(cellGroups, ret = []) {
62
+ for (const cellGroup of cellGroups) {
63
+ ret.push(cellGroup);
64
+ if (cellGroup.children) {
65
+ CellgroupFactory.flattenGroupExts(cellGroup.children, ret);
66
+ }
67
+ }
68
+ return ret;
69
+ }
70
+ /*
71
+
72
+ Gold Hohenwarte
73
+ Gold AB Gold CD HOH AB HOH CD
74
+ . Gold A Gold B Gold C Gold D Gold Sum . HOH Loc HOH A HOH B HOH C HOH D
75
+
76
+ */
77
+ static buildArrayOfArrays(flatten, arrs) {
78
+ let col = -1;
79
+ let lastRowIdx = 99999;
80
+ for (const cellGroup of flatten) {
81
+ if (cellGroup.rowIndex <= lastRowIdx) {
82
+ col++;
83
+ for (let r = 0; r < arrs.length; r++) {
84
+ arrs[r][col] = null;
85
+ }
86
+ }
87
+ arrs[cellGroup.rowIndex][col] = cellGroup;
88
+ lastRowIdx = cellGroup.rowIndex;
89
+ if (cellGroup.ownColumn() && cellGroup.children?.length) {
90
+ for (let r = cellGroup.rowIndex + 1; r < arrs.length; r++) {
91
+ arrs[r][col] = undefined;
92
+ }
93
+ col++;
94
+ for (let r = 0; r < arrs.length; r++) {
95
+ arrs[r][col] = null;
96
+ }
97
+ }
98
+ }
99
+ return arrs;
100
+ }
101
+ static iterateThrowColumns(sb = [], cellGroups) {
102
+ for (const cellGroup of cellGroups) {
103
+ sb.push(cellGroup.data + " rowIndex:" + cellGroup.rowIndex);
104
+ if (cellGroup.children?.length) {
105
+ CellgroupFactory.iterateThrowColumns(sb, cellGroup.children);
106
+ }
107
+ }
108
+ }
109
+ }
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VsbGdyb3VwLWZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3RhYmxlL3NyYy9saWIvdGFibGUvZGF0YS90YWJsZW1vZGVsL2NlbGxncm91cC9jZWxsZ3JvdXAtZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWhELE1BQU0sT0FBTyxnQkFBZ0I7SUFHM0IsTUFBTSxDQUFDLGVBQWUsQ0FDcEIsVUFBeUIsRUFDekIsTUFBcUIsRUFBRTtRQUd2QixLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRTtZQUNsQyxJQUFJLFNBQVMsQ0FBQyxRQUFRLEVBQUU7Z0JBQ3RCLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztvQkFDdEIsUUFBUSxFQUFFLFNBQVMsQ0FBQyxRQUFRO29CQUM1QixXQUFXLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVE7b0JBQ2pFLFNBQVMsRUFBRSxHQUFHLEVBQUU7d0JBQ2QsYUFBYTt3QkFDYixJQUFJLE9BQU8sU0FBUyxDQUFDLFdBQVcsQ0FBQyxLQUFLLFVBQVUsRUFBRTs0QkFDaEQsTUFBTSxHQUFHLEdBQUcsU0FBeUIsQ0FBQzs0QkFDdEMsT0FBTyxHQUFHLENBQUMsU0FBUyxFQUFFLENBQUM7eUJBQ3hCO3dCQUNELE9BQU8sSUFBSSxDQUFDO29CQUNkLENBQUM7aUJBQ0YsQ0FBQyxDQUNILENBQUM7YUFDSDtZQUNELElBQUksU0FBUyxDQUFDLFFBQVEsRUFBRTtnQkFDdEIsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxD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TUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUNwQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO2lCQUNyQjthQUNGO1NBQ0Y7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFHRCxNQUFNLENBQUMsbUJBQW1CLENBQ3hCLEtBQWUsRUFBRSxFQUNqQixVQUEwQjtRQUcxQixLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRTtZQUNsQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsZUFBZSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMvRCxJQUFJLFNBQVMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFO2dCQUM5QixnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzlEO1NBQ0Y7SUFDSCxDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZWxsR3JvdXBJZiB9IGZyb20gXCIuL2NlbGwtZ3JvdXAuaWZcIjtcbmltcG9ydCB7IENvbHVtbkRlZklmIH0gZnJvbSBcIi4uL2NvbHVtbi9jb2x1bW4tZGVmLmlmXCI7XG5pbXBvcnQgeyBDb2x1bW5EZWYgfSBmcm9tIFwiLi4vY29sdW1uL2NvbHVtbi1kZWZcIjtcbmltcG9ydCB7IENlbGxHcm91cEV4dCB9IGZyb20gXCIuL2NlbGwtZ3JvdXAtZXh0XCI7XG5cbmV4cG9ydCBjbGFzcyBDZWxsZ3JvdXBGYWN0b3J5IHtcblxuXG4gIHN0YXRpYyBidWlsZENvbHVtbkRlZnMoXG4gICAgY2VsbEdyb3VwczogQ2VsbEdyb3VwSWZbXSxcbiAgICByZXQ6IENvbHVtbkRlZklmW10gPSBbXVxuICApOiBDb2x1bW5EZWZJZltdIHtcblxuICAgIGZvciAoY29uc3QgY2VsbEdyb3VwIG9mIGNlbGxHcm91cHMpIHtcbiAgICAgIGlmIChjZWxsR3JvdXAucHJvcGVydHkpIHtcbiAgICAgICAgcmV0LnB1c2goQ29sdW1uRGVmLmNyZWF0ZSh7XG4gICAgICAgICAgICBwcm9wZXJ0eTogY2VsbEdyb3VwLnByb3BlcnR5LFxuICAgICAgICAgICAgaGVhZGVyTGFiZWw6IGNlbGxHcm91cC5kYXRhID8gY2VsbEdyb3VwLmRhdGEgOiBjZWxsR3JvdXAucHJvcGVydHksXG4gICAgICAgICAgICBpc1Zpc2libGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICBpZiAodHlwZW9mIGNlbGxHcm91cFtcImlzVmlzaWJsZVwiXSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2dlID0gY2VsbEdyb3VwIGFzIENlbGxHcm91cEV4dDtcbiAgICAgICAgICAgICAgICByZXR1cm4gY2dlLmlzVmlzaWJsZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoY2VsbEdyb3VwLmNoaWxkcmVuKSB7XG4gICAgICAgIENlbGxncm91cEZhY3RvcnkuYnVpbGRDb2x1bW5EZWZzKGNlbGxHcm91cC5jaGlsZHJlbiwgcmV0KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuLypcbiAgc3RhdGljIGJ1aWxkRGVlcE1hcChcbiAgICBjZWxsR3JvdXBzOiBDZWxsR3JvdXBJZltdLFxuICAgIHJldDogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9LFxuICAgIGRlZXAgPSAwXG4gICk6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0ge1xuXG4gICAgZm9yIChjb25zdCBjZWxsR3JvdXAgb2YgY2VsbEdyb3Vwcykge1xuICAgICAgLy9pZiAoY2VsbEdyb3VwLnByb3BlcnR5KSB7XG4gICAgICByZXRbY2VsbEdyb3VwLmRhdGFdID0gZGVlcDtcbiAgICAgIC8vfVxuICAgICAgaWYgKGNlbGxHcm91cC5jaGlsZHJlbikge1xuICAgICAgICBDZWxsZ3JvdXBGYWN0b3J5LmJ1aWxkRGVlcE1hcChjZWxsR3JvdXAuY2hpbGRyZW4sIHJldCwgZGVlcCArIDEpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9XG4qL1xuICBzdGF0aWMgYnVpbGRHcm91cEV4dHMoXG4gICAgY2VsbEdyb3VwczogQ2VsbEdyb3VwSWZbXSxcbiAgICByZXQ6IENlbGxHcm91cEV4dFtdID0gW10sXG4gICAgZGVlcCA9IDAsXG4gICAgcGFyZW50PzogQ2VsbEdyb3VwRXh0XG4gICk6IENlbGxHcm91cEV4dFtdIHtcblxuICAgIGxldCBsYXN0OiBDZWxsR3JvdXBFeHQgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjZWxsR3JvdXBzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBjZWxsR3JvdXAgPSBjZWxsR3JvdXBzW2ldO1xuICAgICAgY29uc3QgY2dlID0gbmV3IENlbGxHcm91cEV4dChjZWxsR3JvdXAsIGRlZXAsIGksIHBhcmVudCk7XG5cbiAgICAgIGlmIChsYXN0KSB7XG4gICAgICAgIGNnZS5sZWZ0TmVpZ2hib3VyID0gbGFzdDtcbiAgICAgICAgbGFzdC5yaWdodE5laWdoYm91ciA9IGNnZTtcbiAgICAgIH1cbiAgICAgIHJldC5wdXNoKGNnZSk7XG4gICAgICBpZiAoY2VsbEdyb3VwLmNoaWxkcmVuKSB7XG4gICAgICAgIGNnZS5jaGlsZHJlbiA9IENlbGxncm91cEZhY3RvcnkuYnVpbGRHcm91cEV4dHMoY2VsbEdyb3VwLmNoaWxkcmVuLCBbXSwgZGVlcCArIDEsIGNnZSk7XG4gICAgICB9XG4gICAgICBsYXN0ID0gY2dlO1xuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cblxuICBzdGF0aWMgZmxhdHRlbkdyb3VwRXh0cyhcbiAgICBjZWxsR3JvdXBzOiBDZWxsR3JvdXBFeHRbXSxcbiAgICByZXQ6IENlbGxHcm91cEV4dFtdID0gW11cbiAgKTogQ2VsbEdyb3VwRXh0W10ge1xuXG4gICAgZm9yIChjb25zdCBjZWxsR3JvdXAgb2YgY2VsbEdyb3Vwcykge1xuICAgICAgcmV0LnB1c2goY2VsbEdyb3VwKTtcbiAgICAgIGlmIChjZWxsR3JvdXAuY2hpbGRyZW4pIHtcbiAgICAgICAgQ2VsbGdyb3VwRmFjdG9yeS5mbGF0dGVuR3JvdXBFeHRzKGNlbGxHcm91cC5jaGlsZHJlbiwgcmV0KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIC8qXG5cbiAgR29sZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSG9oZW53YXJ0ZVxuICBHb2xkIEFCICAgICAgICAgICAgICAgICAgICAgICAgIEdvbGQgQ0QgICAgICAgICAgICAgICAgICAgICAgICBIT0ggQUIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSE9IIENEXG4gIC4gICAgICAgICAgR29sZCBBICAgICBHb2xkIEIgICAgR29sZCBDICAgR29sZCBEICAgIEdvbGQgU3VtICAgIC4gICAgICAgICAgIEhPSCBMb2MgICAgSE9IIEEgICAgSE9IIEIgICBIT0ggQyAgICBIT0ggRFxuXG4gICovXG5cbiAgc3RhdGljIGJ1aWxkQXJyYXlPZkFycmF5cyhcbiAgICBmbGF0dGVuOiBDZWxsR3JvdXBFeHRbXSxcbiAgICBhcnJzOiAoQ2VsbEdyb3VwRXh0IHwgbnVsbCB8IHVuZGVmaW5lZClbXVtdXG4gICk6IChDZWxsR3JvdXBFeHQgfCBudWxsIHwgdW5kZWZpbmVkKVtdW10ge1xuXG4gICAgbGV0IGNvbCA9IC0xO1xuICAgIGxldCBsYXN0Um93SWR4ID0gOTk5OTk7XG4gICAgZm9yIChjb25zdCBjZWxsR3JvdXAgb2YgZmxhdHRlbikge1xuICAgICAgaWYgKGNlbGxHcm91cC5yb3dJbmRleCA8PSBsYXN0Um93SWR4KSB7XG4gICAgICAgIGNvbCsrO1xuICAgICAgICBmb3IgKGxldCByID0gMDsgciA8IGFycnMubGVuZ3RoOyByKyspIHtcbiAgICAgICAgICBhcnJzW3JdW2NvbF0gPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGFycnNbY2VsbEdyb3VwLnJvd0luZGV4XVtjb2xdID0gY2VsbEdyb3VwO1xuICAgICAgbGFzdFJvd0lkeCA9IGNlbGxHcm91cC5yb3dJbmRleDtcblxuICAgICAgaWYgKGNlbGxHcm91cC5vd25Db2x1bW4oKSAmJiBjZWxsR3JvdXAuY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICBmb3IgKGxldCByID0gY2VsbEdyb3VwLnJvd0luZGV4ICsgMTsgciA8IGFycnMubGVuZ3RoOyByKyspIHtcbiAgICAgICAgICBhcnJzW3JdW2NvbF0gPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgY29sKys7XG4gICAgICAgIGZvciAobGV0IHIgPSAwOyByIDwgYXJycy5sZW5ndGg7IHIrKykge1xuICAgICAgICAgIGFycnNbcl1bY29sXSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFycnM7XG4gIH1cblxuXG4gIHN0YXRpYyBpdGVyYXRlVGhyb3dDb2x1bW5zKFxuICAgIHNiOiBzdHJpbmdbXSA9IFtdLFxuICAgIGNlbGxHcm91cHM6IENlbGxHcm91cEV4dFtdXG4gICkge1xuXG4gICAgZm9yIChjb25zdCBjZWxsR3JvdXAgb2YgY2VsbEdyb3Vwcykge1xuICAgICAgc2IucHVzaChjZWxsR3JvdXAuZGF0YSArIFwiICAgIHJvd0luZGV4OlwiICsgY2VsbEdyb3VwLnJvd0luZGV4KTtcbiAgICAgIGlmIChjZWxsR3JvdXAuY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICBDZWxsZ3JvdXBGYWN0b3J5Lml0ZXJhdGVUaHJvd0NvbHVtbnMoc2IsIGNlbGxHcm91cC5jaGlsZHJlbik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbn1cblxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWRlZi5pZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdGFibGUvc3JjL2xpYi90YWJsZS9kYXRhL3RhYmxlbW9kZWwvY29sdW1uL2NvbHVtbi1kZWYuaWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNpemVJZiB9IGZyb20gXCIuLi8uLi9jb21tb24vc2l6ZS5pZlwiO1xuaW1wb3J0IHsgQ2VsbFJlbmRlcmVySWYgfSBmcm9tIFwiLi4vLi4vLi4vcmVuZGVyZXIvY2VsbC1yZW5kZXIuaWZcIjtcbmltcG9ydCB7IEFyZWFPYmplY3RNYXBUeXBlIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9hcmVhLW1hcC50eXBlXCI7XG5pbXBvcnQgeyBCb29sZWFuRnVuY3Rpb24gfSBmcm9tIFwiLi4vLi4vY29tbW9uL2Jvb2xlYW4tZnVuY3Rpb25cIjtcbmltcG9ydCB7IFNvcnRTdGF0ZSB9IGZyb20gXCIuLi8uLi9jb21tb24vc29ydC1zdGF0ZS50eXBlXCI7XG5pbXBvcnQgeyBHZXRFZGl0UmVuZGVyZXIgfSBmcm9tIFwiLi4vLi4vLi4vcmVuZGVyZXIvZWRpdC9lZGl0LWNlbGwtcmVuZGVyZXIudHlwZVwiO1xuaW1wb3J0IHsgZWRpdElucHV0UGlwZSB9IGZyb20gXCIuLi8uLi8uLi9yZW5kZXJlci9lZGl0L2VkaXQtaW5wdXQtcGlwZS5pZlwiO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uRGVmSWYge1xuICBwcm9wZXJ0eTogc3RyaW5nO1xuICBoZWFkZXJMYWJlbDogc3RyaW5nO1xuICB3aWR0aDogU2l6ZUlmO1xuICBtaW5XaWR0aDogU2l6ZUlmO1xuICBtYXhXaWR0aDogU2l6ZUlmO1xuICByZW5kZXJlck1hcDogQXJlYU9iamVjdE1hcFR5cGU8Q2VsbFJlbmRlcmVySWY+O1xuICBjbGFzc2VzOiBBcmVhT2JqZWN0TWFwVHlwZTxzdHJpbmdbXT47XG4gIHNvcnRhYmxlPzogQm9vbGVhbkZ1bmN0aW9uLFxuICBzb3J0SWNvblZpc2libGU/OiBCb29sZWFuRnVuY3Rpb24sXG4gIHNvcnRDb21wYXJhdG9yPzogPFQ+KGE6IFQsIGI6IFQpID0+IG51bWJlcixcbiAgc29ydFN0YXRlPzogU29ydFN0YXRlLFxuICBzb3J0U3RhdGVzT3JkZXI/OiBTb3J0U3RhdGVbXSxcbiAgZWRpdGFibGU/OiBCb29sZWFuRnVuY3Rpb24sXG4gIGlzVmlzaWJsZT86IEJvb2xlYW5GdW5jdGlvbixcbiAgZ2V0RWRpdFJlbmRlcmVyPzogR2V0RWRpdFJlbmRlcmVyLFxuICBlZGl0SW5wdXRQaXBlPzogZWRpdElucHV0UGlwZVxufVxuXG4iXX0=
@@ -0,0 +1,52 @@
1
+ import { Size } from "../../common/size";
2
+ import { AreaObjectMap } from "../../common/area-map";
3
+ import { FalseFn, TrueFn } from "../../common/boolean-function";
4
+ export class ColumnDef {
5
+ property;
6
+ headerLabel;
7
+ width;
8
+ classes;
9
+ rendererMap;
10
+ minWidth;
11
+ maxWidth;
12
+ sortable;
13
+ sortComparator;
14
+ sortState;
15
+ sortStatesOrder;
16
+ sortIconVisible;
17
+ editable;
18
+ getEditRenderer;
19
+ editInputPipe;
20
+ isVisible;
21
+ visible = true;
22
+ constructor(property, headerLabel, width = new Size(100, "px"), classes = new AreaObjectMap(), rendererMap = new AreaObjectMap(), minWidth = new Size(100, "px"), maxWidth = new Size(100, "px"), sortable, sortComparator, sortState, sortStatesOrder, sortIconVisible, editable, getEditRenderer, editInputPipe, isVisible = () => this.visible) {
23
+ this.property = property;
24
+ this.headerLabel = headerLabel;
25
+ this.width = width;
26
+ this.classes = classes;
27
+ this.rendererMap = rendererMap;
28
+ this.minWidth = minWidth;
29
+ this.maxWidth = maxWidth;
30
+ this.sortable = sortable;
31
+ this.sortComparator = sortComparator;
32
+ this.sortState = sortState;
33
+ this.sortStatesOrder = sortStatesOrder;
34
+ this.sortIconVisible = sortIconVisible;
35
+ this.editable = editable;
36
+ this.getEditRenderer = getEditRenderer;
37
+ this.editInputPipe = editInputPipe;
38
+ this.isVisible = isVisible;
39
+ }
40
+ static bodyRenderer(bodyRenderer) {
41
+ return new AreaObjectMap(undefined, bodyRenderer, undefined);
42
+ }
43
+ static create(param) {
44
+ const am = new AreaObjectMap(param.headerRenderer, param.bodyRenderer, param.footerRenderer);
45
+ const cm = new AreaObjectMap(param.headerClasses, param.bodyClasses, param.footerClasses);
46
+ const sortIconVisible = param.sortIconVisible ?? param.sortable ?? FalseFn;
47
+ const editable = param.editable ?? param.editable ?? FalseFn;
48
+ const isVisible = param.isVisible ?? param.isVisible ?? TrueFn;
49
+ return new ColumnDef(param.property ?? "", param.headerLabel ?? "", param.width ?? new Size(100, "px"), cm, am, param.minWidth ?? new Size(100, "px"), param.maxWidth ?? new Size(100, "px"), param.sortable, param.sortComparator, param.sortState, param.sortStatesOrder, sortIconVisible, editable, param.getEditRenderer, param.editInputPipe, isVisible);
50
+ }
51
+ }
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLWRlZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdGFibGUvc3JjL2xpYi90YWJsZS9kYXRhL3RhYmxlbW9kZWwvY29sdW1uL2NvbHVtbi1kZWYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBS3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RCxPQUFPLEVBQW1CLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQU1qRixNQUFNLE9BQU8sU0FBUztJQUtYO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBbEJGLE9BQU8sR0FBRyxJQUFJLENBQUM7SUFFdEIsWUFDUyxRQUFnQixFQUNoQixXQUFtQixFQUNuQixRQUFnQixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQ25DLFVBQXVDLElBQUksYUFBYSxFQUFZLEVBQ3BFLGNBQWlELElBQUksYUFBYSxFQUFrQixFQUNwRixXQUFtQixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQ3RDLFdBQW1CLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFDdEMsUUFBMEIsRUFDMUIsY0FBMEMsRUFDMUMsU0FBcUIsRUFDckIsZUFBNkIsRUFDN0IsZUFBaUMsRUFDakMsUUFBMEIsRUFDMUIsZUFBaUMsRUFDakMsYUFBNkIsRUFDN0IsWUFBNkIsR0FBRSxFQUFFLENBQUEsSUFBSSxDQUFDLE9BQU87UUFmN0MsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUNoQixnQkFBVyxHQUFYLFdBQVcsQ0FBUTtRQUNuQixVQUFLLEdBQUwsS0FBSyxDQUE4QjtRQUNuQyxZQUFPLEdBQVAsT0FBTyxDQUE2RDtRQUNwRSxnQkFBVyxHQUFYLFdBQVcsQ0FBeUU7UUFDcEYsYUFBUSxHQUFSLFFBQVEsQ0FBOEI7UUFDdEMsYUFBUSxHQUFSLFFBQVEsQ0FBOEI7UUFDdEMsYUFBUSxHQUFSLFFBQVEsQ0FBa0I7UUFDMUIsbUJBQWMsR0FBZCxjQUFjLENBQTRCO1FBQzFDLGNBQVMsR0FBVCxTQUFTLENBQVk7UUFDckIsb0JBQWUsR0FBZixlQUFlLENBQWM7UUFDN0Isb0JBQWUsR0FBZixlQUFlLENBQWtCO1FBQ2pDLGFBQVEsR0FBUixRQUFRLENBQWtCO1FBQzFCLG9CQUFlLEdBQWYsZUFBZSxDQUFrQjtRQUNqQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7UUFDN0IsY0FBUyxHQUFULFNBQVMsQ0FBb0M7SUFFdEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxZQUFZLENBQUMsWUFBNEI7UUFDOUMsT0FBTyxJQUFJLGFBQWEsQ0FDdEIsU0FBUyxFQUNULFlBQVksRUFDWixTQUFTLENBQ1YsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFDLEtBcUJiO1FBRUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxhQUFhLENBQzFCLEtBQUssQ0FBQyxjQUFjLEVBQ3BCLEtBQUssQ0FBQyxZQUFZLEVBQ2xCLEtBQUssQ0FBQyxjQUFjLENBQ3JCLENBQUM7UUFFRixNQUFNLEVBQUUsR0FBRyxJQUFJLGFBQWEsQ0FDMUIsS0FBSyxDQUFDLGFBQWEsRUFDbkIsS0FBSyxDQUFDLFdBQVcsRUFDakIsS0FBSyxDQUFDLGFBQWEsQ0FDcEIsQ0FBQztRQUVGLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxlQUFlLElBQUksS0FBSyxDQUFDLFFBQVEsSUFBSSxPQUFPLENBQUM7UUFDM0UsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQztRQUM3RCxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDO1FBRS9ELE9BQU8sSUFBSSxTQUFTLENBQ2xCLEtBQUssQ0FBQyxRQUFRLElBQUksRUFBRSxFQUNwQixLQUFLLENBQUMsV0FBVyxJQUFJLEVBQUUsRUFDdkIsS0FBSyxDQUFDLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQ2xDLEVBQUUsRUFDRixFQUFFLEVBQ0YsS0FBSyxDQUFDLFFBQVEsSUFBSSxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQ3JDLEtBQUssQ0FBQyxRQUFRLElBQUksSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUNyQyxLQUFLLENBQUMsUUFBUSxFQUNkLEtBQUssQ0FBQyxjQUFjLEVBQ3BCLEtBQUssQ0FBQyxTQUFTLEVBQ2YsS0FBSyxDQUFDLGVBQWUsRUFDckIsZUFBZSxFQUNmLFFBQVEsRUFDUixLQUFLLENBQUMsZUFBZSxFQUNyQixLQUFLLENBQUMsYUFBYSxFQUNuQixTQUFTLENBQ1YsQ0FBQztJQUNKLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNpemUgfSBmcm9tIFwiLi4vLi4vY29tbW9uL3NpemVcIjtcbmltcG9ydCB7IFNpemVJZiB9IGZyb20gXCIuLi8uLi9jb21tb24vc2l6ZS5pZlwiO1xuaW1wb3J0IHsgQ29sdW1uRGVmSWYgfSBmcm9tIFwiLi9jb2x1bW4tZGVmLmlmXCI7XG5pbXBvcnQgeyBDZWxsUmVuZGVyZXJJZiB9IGZyb20gXCIuLi8uLi8uLi9yZW5kZXJlci9jZWxsLXJlbmRlci5pZlwiO1xuaW1wb3J0IHsgQXJlYU9iamVjdE1hcFR5cGUgfSBmcm9tIFwiLi4vLi4vY29tbW9uL2FyZWEtbWFwLnR5cGVcIjtcbmltcG9ydCB7IEFyZWFPYmplY3RNYXAgfSBmcm9tIFwiLi4vLi4vY29tbW9uL2FyZWEtbWFwXCI7XG5pbXBvcnQgeyBCb29sZWFuRnVuY3Rpb24sIEZhbHNlRm4sIFRydWVGbiB9IGZyb20gXCIuLi8uLi9jb21tb24vYm9vbGVhbi1mdW5jdGlvblwiO1xuaW1wb3J0IHsgU29ydFN0YXRlIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi9zb3J0LXN0YXRlLnR5cGVcIjtcbmltcG9ydCB7IEdldEVkaXRSZW5kZXJlciB9IGZyb20gXCIuLi8uLi8uLi9yZW5kZXJlci9lZGl0L2VkaXQtY2VsbC1yZW5kZXJlci50eXBlXCI7XG5pbXBvcnQgeyBlZGl0SW5wdXRQaXBlIH0gZnJvbSBcIi4uLy4uLy4uL3JlbmRlcmVyL2VkaXQvZWRpdC1pbnB1dC1waXBlLmlmXCI7XG5cblxuZXhwb3J0IGNsYXNzIENvbHVtbkRlZiBpbXBsZW1lbnRzIENvbHVtbkRlZklmIHtcblxuICBwdWJsaWMgdmlzaWJsZSA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHByb3BlcnR5OiBzdHJpbmcsXG4gICAgcHVibGljIGhlYWRlckxhYmVsOiBzdHJpbmcsXG4gICAgcHVibGljIHdpZHRoOiBTaXplSWYgPSBuZXcgU2l6ZSgxMDAsIFwicHhcIiksXG4gICAgcHVibGljIGNsYXNzZXM6IEFyZWFPYmplY3RNYXBUeXBlPHN0cmluZ1tdPiA9IG5ldyBBcmVhT2JqZWN0TWFwPHN0cmluZ1tdPigpLFxuICAgIHB1YmxpYyByZW5kZXJlck1hcDogQXJlYU9iamVjdE1hcFR5cGU8Q2VsbFJlbmRlcmVySWY+ID0gbmV3IEFyZWFPYmplY3RNYXA8Q2VsbFJlbmRlcmVySWY+KCksXG4gICAgcHVibGljIG1pbldpZHRoOiBTaXplSWYgPSBuZXcgU2l6ZSgxMDAsIFwicHhcIiksXG4gICAgcHVibGljIG1heFdpZHRoOiBTaXplSWYgPSBuZXcgU2l6ZSgxMDAsIFwicHhcIiksXG4gICAgcHVibGljIHNvcnRhYmxlPzogQm9vbGVhbkZ1bmN0aW9uLFxuICAgIHB1YmxpYyBzb3J0Q29tcGFyYXRvcj86IDxUPihhOiBULCBiOiBUKSA9PiBudW1iZXIsXG4gICAgcHVibGljIHNvcnRTdGF0ZT86IFNvcnRTdGF0ZSxcbiAgICBwdWJsaWMgc29ydFN0YXRlc09yZGVyPzogU29ydFN0YXRlW10sXG4gICAgcHVibGljIHNvcnRJY29uVmlzaWJsZT86IEJvb2xlYW5GdW5jdGlvbixcbiAgICBwdWJsaWMgZWRpdGFibGU/OiBCb29sZWFuRnVuY3Rpb24sXG4gICAgcHVibGljIGdldEVkaXRSZW5kZXJlcj86IEdldEVkaXRSZW5kZXJlcixcbiAgICBwdWJsaWMgZWRpdElucHV0UGlwZT86IGVkaXRJbnB1dFBpcGUsXG4gICAgcHVibGljIGlzVmlzaWJsZTogQm9vbGVhbkZ1bmN0aW9uID0gKCk9PnRoaXMudmlzaWJsZVxuICApIHtcbiAgfVxuXG4gIHN0YXRpYyBib2R5UmVuZGVyZXIoYm9keVJlbmRlcmVyOiBDZWxsUmVuZGVyZXJJZikge1xuICAgIHJldHVybiBuZXcgQXJlYU9iamVjdE1hcDxDZWxsUmVuZGVyZXJJZj4oXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBib2R5UmVuZGVyZXIsXG4gICAgICB1bmRlZmluZWRcbiAgICApO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZShwYXJhbToge1xuICAgIHByb3BlcnR5Pzogc3RyaW5nLFxuICAgIGhlYWRlckxhYmVsPzogc3RyaW5nLFxuICAgIHdpZHRoPzogU2l6ZUlmLFxuICAgIG1pbldpZHRoPzogU2l6ZUlmLFxuICAgIG1heFdpZHRoPzogU2l6ZUlmLFxuICAgIGhlYWRlclJlbmRlcmVyPzogQ2VsbFJlbmRlcmVySWYsXG4gICAgYm9keVJlbmRlcmVyPzogQ2VsbFJlbmRlcmVySWYsXG4gICAgZm9vdGVyUmVuZGVyZXI/OiBDZWxsUmVuZGVyZXJJZixcbiAgICBoZWFkZXJDbGFzc2VzPzogc3RyaW5nW11cbiAgICBib2R5Q2xhc3Nlcz86IHN0cmluZ1tdXG4gICAgZm9vdGVyQ2xhc3Nlcz86IHN0cmluZ1tdLFxuICAgIHNvcnRhYmxlPzogQm9vbGVhbkZ1bmN0aW9uLFxuICAgIHNvcnRJY29uVmlzaWJsZT86IEJvb2xlYW5GdW5jdGlvbixcbiAgICBzb3J0Q29tcGFyYXRvcj86IDxUPihhOiBULCBiOiBUKSA9PiBudW1iZXIsXG4gICAgc29ydFN0YXRlPzogU29ydFN0YXRlLFxuICAgIHNvcnRTdGF0ZXNPcmRlcj86IFNvcnRTdGF0ZVtdLFxuICAgIGVkaXRhYmxlPzogQm9vbGVhbkZ1bmN0aW9uLFxuICAgIGlzVmlzaWJsZT86IEJvb2xlYW5GdW5jdGlvbixcbiAgICBnZXRFZGl0UmVuZGVyZXI/OiBHZXRFZGl0UmVuZGVyZXIsXG4gICAgZWRpdElucHV0UGlwZT86IGVkaXRJbnB1dFBpcGUsXG4gIH0pOiBDb2x1bW5EZWZJZiB7XG5cbiAgICBjb25zdCBhbSA9IG5ldyBBcmVhT2JqZWN0TWFwPENlbGxSZW5kZXJlcklmPihcbiAgICAgIHBhcmFtLmhlYWRlclJlbmRlcmVyLFxuICAgICAgcGFyYW0uYm9keVJlbmRlcmVyLFxuICAgICAgcGFyYW0uZm9vdGVyUmVuZGVyZXJcbiAgICApO1xuXG4gICAgY29uc3QgY20gPSBuZXcgQXJlYU9iamVjdE1hcDxzdHJpbmdbXT4oXG4gICAgICBwYXJhbS5oZWFkZXJDbGFzc2VzLFxuICAgICAgcGFyYW0uYm9keUNsYXNzZXMsXG4gICAgICBwYXJhbS5mb290ZXJDbGFzc2VzXG4gICAgKTtcblxuICAgIGNvbnN0IHNvcnRJY29uVmlzaWJsZSA9IHBhcmFtLnNvcnRJY29uVmlzaWJsZSA/PyBwYXJhbS5zb3J0YWJsZSA/PyBGYWxzZUZuO1xuICAgIGNvbnN0IGVkaXRhYmxlID0gcGFyYW0uZWRpdGFibGUgPz8gcGFyYW0uZWRpdGFibGUgPz8gRmFsc2VGbjtcbiAgICBjb25zdCBpc1Zpc2libGUgPSBwYXJhbS5pc1Zpc2libGUgPz8gcGFyYW0uaXNWaXNpYmxlID8/IFRydWVGbjtcblxuICAgIHJldHVybiBuZXcgQ29sdW1uRGVmKFxuICAgICAgcGFyYW0ucHJvcGVydHkgPz8gXCJcIixcbiAgICAgIHBhcmFtLmhlYWRlckxhYmVsID8/IFwiXCIsXG4gICAgICBwYXJhbS53aWR0aCA/PyBuZXcgU2l6ZSgxMDAsIFwicHhcIiksXG4gICAgICBjbSxcbiAgICAgIGFtLFxuICAgICAgcGFyYW0ubWluV2lkdGggPz8gbmV3IFNpemUoMTAwLCBcInB4XCIpLFxuICAgICAgcGFyYW0ubWF4V2lkdGggPz8gbmV3IFNpemUoMTAwLCBcInB4XCIpLFxuICAgICAgcGFyYW0uc29ydGFibGUsXG4gICAgICBwYXJhbS5zb3J0Q29tcGFyYXRvcixcbiAgICAgIHBhcmFtLnNvcnRTdGF0ZSxcbiAgICAgIHBhcmFtLnNvcnRTdGF0ZXNPcmRlcixcbiAgICAgIHNvcnRJY29uVmlzaWJsZSxcbiAgICAgIGVkaXRhYmxlLFxuICAgICAgcGFyYW0uZ2V0RWRpdFJlbmRlcmVyLFxuICAgICAgcGFyYW0uZWRpdElucHV0UGlwZSxcbiAgICAgIGlzVmlzaWJsZSxcbiAgICApO1xuICB9XG5cbn1cbiJdfQ==
@@ -0,0 +1,13 @@
1
+ export class Padding {
2
+ top;
3
+ right;
4
+ bottom;
5
+ left;
6
+ constructor(top = 0, right = 0, bottom = 0, left = 0) {
7
+ this.top = top;
8
+ this.right = right;
9
+ this.bottom = bottom;
10
+ this.left = left;
11
+ }
12
+ }
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFkZGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdGFibGUvc3JjL2xpYi90YWJsZS9kYXRhL3RhYmxlbW9kZWwvcGFkZGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sT0FBTztJQUVUO0lBQ0E7SUFDQTtJQUNBO0lBSlQsWUFDUyxNQUFjLENBQUMsRUFDZixRQUFnQixDQUFDLEVBQ2pCLFNBQWlCLENBQUMsRUFDbEIsT0FBZSxDQUFDO1FBSGhCLFFBQUcsR0FBSCxHQUFHLENBQVk7UUFDZixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQ2pCLFdBQU0sR0FBTixNQUFNLENBQVk7UUFDbEIsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUV6QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgUGFkZGluZyB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyB0b3A6IG51bWJlciA9IDAsXG4gICAgcHVibGljIHJpZ2h0OiBudW1iZXIgPSAwLFxuICAgIHB1YmxpYyBib3R0b206IG51bWJlciA9IDAsXG4gICAgcHVibGljIGxlZnQ6IG51bWJlciA9IDBcbiAgKSB7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtbW9kZWwuaWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3RhYmxlL3NyYy9saWIvdGFibGUvZGF0YS90YWJsZW1vZGVsL3RhYmxlLW1vZGVsLmlmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYWRkaW5nIH0gZnJvbSBcIi4vcGFkZGluZ1wiO1xuaW1wb3J0IHsgQXJlYUlkZW50IH0gZnJvbSBcIi4vYXJlYS1pZGVudC50eXBlXCI7XG5pbXBvcnQgeyBDb2x1bW5EZWZJZiB9IGZyb20gXCIuL2NvbHVtbi9jb2x1bW4tZGVmLmlmXCI7XG5pbXBvcnQgeyBBcmVhTW9kZWxJZiB9IGZyb20gXCIuL2FyZWFtb2RlbC9hcmVhLW1vZGVsLmlmXCI7XG5pbXBvcnQgeyBGaWx0ZXJGdW5jdGlvbiB9IGZyb20gXCIuLi9jb21tb24vZmlsdGVyLWZ1bmN0aW9uXCI7XG5pbXBvcnQgeyBTb3J0SXRlbSB9IGZyb20gXCIuLi9jb21tb24vc29ydC1pdGVtXCI7XG5pbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbElmIH0gZnJvbSBcIi4uLy4uL3NlbGVjdGlvbi9zZWxlY3Rpb24tbW9kZWwuaWZcIjtcblxuLyoqXG4gKiBUaGUgVGFibGVNb2RlbElmIGlzIG9uIG9uZSBoYW5kIGEgY29udGFpbmVyIGZvciB0aGUgaGVhZGVyLCBib2R5LCBhbmQgZm9vdGVyIG1vZGVsc1xuICogKHNlZSA6ICNnZXRBcmVhTW9kZWwsIGFuZCAjQXJlYU1vZGVsSWYpLCBhbmQgb24gdGhlIG90aGVyIGhhbmQgdGhlIG1hc3RlciBvZlxuICogdGhlIGNvbHVtbiBpbmZvcm1hdGlvbiAoI2dldENvbHVtbkNvdW50KCksICNnZXRDb2x1bW5XaWR0aChjb2x1bW5JbmRleDogbnVtYmVyKSkuXG4gKlxuICogSWYgZ2V0Rml4ZWRMZWZ0Q29sdW1uQ291bnQoKSByZXR1cm5zIGEgdmFsdWUgZ3JlYXRlciB0aGFuIDAsIGEgZml4ZWQgd2VzdCBhcmVhIHdpbGwgYmUgcmVuZGVyZWQgaW4gdGhlXG4gKiBoZWFkZXIsIGJvZHksIGFuZCBmb290ZXIuIEEgdmFsdWUgZ3JlYXRlciB0aGFuIDAgZm9yIGdldEZpeGVkTGVmdENvbHVtbkNvdW50KClcbiAqIHdpbGwgcmVzdWx0IGluIHRoZSBwcmVzZW5jZSBvZiBhbiBlYXN0IGFyZWEuXG4gKiA8cHJlPlxuICogICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rXG4gKiAgfCAgaGVhZGVyL3dlc3QgICB8ICBoZWFkZXIvY2VudGVyICAgIHwgaGVhZGVyL2Vhc3QgIHxcbiAqICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tK1xuICogIHwgIGJvZHkvd2VzdCAgICAgfCAgYm9keS9jZW50ZXIgICAgICB8IGJvZHkvZWFzdCAgICB8XG4gKiAgKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLStcbiAqICB8ICBmb290ZXIvd2VzdCAgIHwgIGZvb3Rlci9jZW50ZXIgICAgfCBmb290ZXIvZWFzdCAgfFxuICogICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rPC9wcmU+XG4gKlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYmxlTW9kZWxJZiB7XG5cbiAgY2hhbmdlQ29sdW1uT3JkZXIoc291cmNlQ29sdW1uSW5kZXg6IG51bWJlciwgdGFyZ2V0Q29sdW1uSW5kZXg6IG51bWJlcik6IHZvaWQ7XG5cbiAgaXNTb3J0YWJsZShjb2xJZHg6IG51bWJlcik6IGJvb2xlYW47XG5cbiAgaW5pdCgpOiB2b2lkO1xuXG4gIGdldENvbHVtbkNvdW50KCk6IG51bWJlcjtcblxuICBnZXRDb2x1bW5XaWR0aChjb2x1bW5JbmRleDogbnVtYmVyKTogbnVtYmVyO1xuXG4gIGdldFhQb3NCeUNvbHVtbkluZGV4KGNvbHVtbkluZGV4OiBudW1iZXIpOiBudW1iZXI7XG5cbiAgZ2V0QXJlYU1vZGVsKHJvd0FyZWFJZGVudDogQXJlYUlkZW50KTogQXJlYU1vZGVsSWY7XG5cbiAgZ2V0Qm9keU1vZGVsKCk6IEFyZWFNb2RlbElmO1xuXG4gIGdldEZpeGVkTGVmdENvbHVtbkNvdW50KCk6IG51bWJlcjtcblxuICBnZXRGaXhlZFJpZ2h0Q29sdW1uQ291bnQoKTogbnVtYmVyO1xuXG4gIGlzSGVhZGVyVmlzaWJlKCk6IGJvb2xlYW47XG5cbiAgaXNGb290ZXJWaXNpYmUoKTogYm9vbGVhbjtcblxuICBpc1Jvd0NoZWNrYm94VmlzaWJsZSgpOiBib29sZWFuO1xuXG4gIGdldFJvd0hlaWdodChyb3dBcmVhSWRlbnQ6IEFyZWFJZGVudCwgcm93SW5kZXg6IG51bWJlcik6IG51bWJlcjtcblxuICBnZXRDb2x1bW5EZWYoaW5kZXg6IG51bWJlcik6IENvbHVtbkRlZklmIHwgdW5kZWZpbmVkO1xuXG4gIGdldENvbHVtbkRlZnMoKTogQ29sdW1uRGVmSWZbXSB8IHVuZGVmaW5lZDtcblxuICBnZXRDb2x1bW5Qcm9wZXJ0eShjb2x1bW5JbmRleDogbnVtYmVyKTogc3RyaW5nO1xuXG4gIGdldEJvZHlSb3dCeUluZGV4KHJvd0luZGV4OiBudW1iZXIpOiBhbnk7XG5cbiAgZ2V0Q29sdW1uV2lkdGgoY29sdW1uSW5kZXg6IG51bWJlcik6IG51bWJlcjtcblxuICBzZXRDb2x1bW5XaWR0aChjb2x1bW5JbmRleDogbnVtYmVyLCB3aWR0aDogbnVtYmVyKTogdm9pZDtcblxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgcmVjYWxjU2l6ZShjbGllbnRXaWR0aDogbnVtYmVyKTogdm9pZDtcblxuICByZWNhbGNQYWRkaW5nKCk6IHZvaWQ7XG5cbiAgcmVjYWxjSGVpZ2h0QW5kUGFkZGluZygpOiB2b2lkO1xuXG4gIGdldFBhZGRpbmcoKTogUGFkZGluZztcblxuICBnZXRDb250ZW50SGVpZ2h0SW5QaXhlbCgpOiBudW1iZXI7XG5cbiAgZ2V0Q29udGVudFdpZHRoSW5QaXhlbCgpOiBudW1iZXI7XG5cblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIGV4dGVybmFsRmlsdGVyQ2hhbmdlZDxUPihwcmVkaWN0Rm46IEZpbHRlckZ1bmN0aW9uPFQ+KTogdm9pZDtcblxuICBkb1NvcnQoc29ydEl0ZW1zOiBTb3J0SXRlbVtdKTogYm9vbGVhbjtcblxuICBnZXRTZWxlY3Rpb25Nb2RlbCgpOiBTZWxlY3Rpb25Nb2RlbElmfHVuZGVmaW5lZDtcbn1cbiJdfQ==
@@ -0,0 +1,308 @@
1
+ import { Padding } from "./padding";
2
+ import { DefaultRowHeights } from "../options/default-row-heights";
3
+ import { CheckboxColumnDef } from "../common/checkbox-column-def";
4
+ import { CheckboxModel } from "../../checkbox/checkbox-model";
5
+ /**
6
+ * This is a default implementation of TableModelIf.
7
+ * Ths TableModel is on one hand a container for the header, body, and footer models
8
+ * (see : #getAreaModel, and #AreaModelIf), and on the other hand the master of
9
+ * the column information (#getColumnCount(), #getColumnWidth(columnIndex: number)).
10
+ *
11
+ * If getFixedLeftColumnCount() returns a value greater than 0, a fixed west area will be rendered in the
12
+ * header, body, and footer. A value greater than 0 for getFixedLeftColumnCount()
13
+ * will result in the presence of an east area.
14
+ *
15
+ * <pre>
16
+ * +----------------+-------------------+--------------+
17
+ * | header/west | header/center | header/east |
18
+ * +----------------+-------------------+--------------+
19
+ * | body/west | body/center | body/east |
20
+ * +----------------+-------------------+--------------+
21
+ * | footer/west | footer/center | footer/east |
22
+ * +----------------+-------------------+--------------+ </pre>
23
+ *
24
+ */
25
+ export class TableModel {
26
+ headerAreaModel;
27
+ bodyAreaModel;
28
+ footerAreaModel;
29
+ fixedLeftColumnCount;
30
+ fixedRightColumnCount;
31
+ rowCheckboxVisible;
32
+ defaultRowHeights;
33
+ columnDefs;
34
+ columnSizes;
35
+ overridingColumnWidth;
36
+ columnCount;
37
+ parentSize;
38
+ getSelectionModel;
39
+ rowCount = 0;
40
+ contentHeightInPx = 0;
41
+ contentWidthInPx = 0;
42
+ // in case of a fixed header, left or right column, footer:
43
+ padding = new Padding(0, 0, 0, 0); // the dimension of the 'body/center'
44
+ xPositions = [];
45
+ constructor(headerAreaModel, bodyAreaModel, footerAreaModel, fixedLeftColumnCount = 0, fixedRightColumnCount = 0, rowCheckboxVisible = false, defaultRowHeights = new DefaultRowHeights(), columnDefs = [], columnSizes = [], overridingColumnWidth = -1, columnCount = 0, parentSize = 400, // can be important when we have percentage widthes,
46
+ getSelectionModel = () => undefined) {
47
+ this.headerAreaModel = headerAreaModel;
48
+ this.bodyAreaModel = bodyAreaModel;
49
+ this.footerAreaModel = footerAreaModel;
50
+ this.fixedLeftColumnCount = fixedLeftColumnCount;
51
+ this.fixedRightColumnCount = fixedRightColumnCount;
52
+ this.rowCheckboxVisible = rowCheckboxVisible;
53
+ this.defaultRowHeights = defaultRowHeights;
54
+ this.columnDefs = columnDefs;
55
+ this.columnSizes = columnSizes;
56
+ this.overridingColumnWidth = overridingColumnWidth;
57
+ this.columnCount = columnCount;
58
+ this.parentSize = parentSize;
59
+ this.getSelectionModel = getSelectionModel;
60
+ headerAreaModel.areaIdent = "header";
61
+ bodyAreaModel.areaIdent = "body";
62
+ footerAreaModel.areaIdent = "footer";
63
+ if (!this.columnCount) {
64
+ if (this.columnDefs?.length) {
65
+ this.columnCount = this.columnDefs.length;
66
+ }
67
+ else if (this.columnSizes?.length) {
68
+ this.columnCount = this.columnSizes?.length;
69
+ }
70
+ }
71
+ if (this.columnDefs?.length
72
+ && this.columnDefs[0] instanceof CheckboxColumnDef
73
+ && !bodyAreaModel.rowSelectionModel) {
74
+ bodyAreaModel.rowSelectionModel = new CheckboxModel();
75
+ }
76
+ }
77
+ init() {
78
+ this.recalcSize(this.parentSize);
79
+ if (this.overridingColumnWidth === -1) {
80
+ this.calcXPositions();
81
+ }
82
+ if (this.headerAreaModel) {
83
+ this.headerAreaModel.init();
84
+ }
85
+ if (this.bodyAreaModel) {
86
+ this.bodyAreaModel.init();
87
+ }
88
+ if (this.footerAreaModel) {
89
+ this.footerAreaModel.init();
90
+ }
91
+ }
92
+ getColumnCount() {
93
+ return this.columnCount;
94
+ }
95
+ ;
96
+ setColumnWidth(columnIndex, width) {
97
+ width = Math.max(0, width);
98
+ if (this.overridingColumnWidth !== -1) {
99
+ this.overridingColumnWidth = width;
100
+ }
101
+ if (columnIndex > -1 && columnIndex < this.columnSizes?.length) {
102
+ this.columnSizes[columnIndex] = width;
103
+ }
104
+ this.recalcContentWidthInPx();
105
+ }
106
+ getColumnWidth(columnIndex) {
107
+ const cd = this.getColumnDef(columnIndex);
108
+ if (cd && cd.isVisible && !cd.isVisible()) {
109
+ return 0;
110
+ }
111
+ if (this.overridingColumnWidth !== -1) {
112
+ return this.overridingColumnWidth;
113
+ }
114
+ if (columnIndex > -1 && columnIndex < this.columnSizes?.length) {
115
+ return this.columnSizes[columnIndex];
116
+ }
117
+ return 0;
118
+ }
119
+ ;
120
+ getXPosByColumnIndex(columnIndex) {
121
+ if (columnIndex === 0) {
122
+ return 0;
123
+ }
124
+ if (this.overridingColumnWidth > -1) {
125
+ return this.overridingColumnWidth * columnIndex;
126
+ }
127
+ return this.xPositions[columnIndex];
128
+ }
129
+ recalcSize(clientWidth) {
130
+ this.recalcColumnWidthes(clientWidth);
131
+ this.recalcHeightAndPadding();
132
+ }
133
+ recalcHeightAndPadding() {
134
+ const bodyModel = this.getAreaModel("body");
135
+ this.rowCount = bodyModel.getRowCount();
136
+ this.contentHeightInPx = this.getAreaHeight("body");
137
+ this.recalcContentWidthInPx();
138
+ this.recalcPadding();
139
+ }
140
+ recalcPadding() {
141
+ const westWidth = this.getSideAreaWidth("west");
142
+ const eastWidth = this.getSideAreaWidth("east");
143
+ const headerHeight = this.getAreaHeight("header");
144
+ const footerHeight = this.getAreaHeight("footer");
145
+ this.padding = new Padding(headerHeight, eastWidth, footerHeight, westWidth);
146
+ }
147
+ getPadding() {
148
+ return this.padding;
149
+ }
150
+ getContentHeightInPixel() {
151
+ return this.contentHeightInPx;
152
+ }
153
+ getContentWidthInPixel() {
154
+ return this.contentWidthInPx;
155
+ }
156
+ getRowHeight(rowAreaIdent, rowIndex) {
157
+ return this.getAreaModel(rowAreaIdent).getRowHeight(rowIndex);
158
+ }
159
+ getModel(rowAreaIdent) {
160
+ return this.getAreaModel(rowAreaIdent);
161
+ }
162
+ getAreaHeight(areaIdent) {
163
+ const model = this.getModel(areaIdent);
164
+ const rowCount = model.getRowCount();
165
+ if (this.defaultRowHeights[areaIdent]) {
166
+ return rowCount * this.defaultRowHeights[areaIdent];
167
+ }
168
+ let ret = 0;
169
+ for (let i = 0; i < rowCount; i++) {
170
+ ret = ret + model.getRowHeight(i);
171
+ }
172
+ return ret;
173
+ }
174
+ getSideAreaWidth(sideIdent) {
175
+ const [cStart, cEnd] = this.getSideStartAndEndColumnIndex(sideIdent);
176
+ let ret = 0;
177
+ for (let i = cStart; i <= cEnd; i++) {
178
+ ret = ret + this.getColumnWidth(i);
179
+ }
180
+ return ret;
181
+ }
182
+ getSideStartAndEndColumnIndex(sideIdent) {
183
+ const c1 = this.getFixedLeftColumnCount();
184
+ const c2 = this.getFixedRightColumnCount();
185
+ let cStart = 0;
186
+ let cEnd = this.columnCount - 1;
187
+ if (sideIdent === "west") {
188
+ cEnd = c1 - 1;
189
+ }
190
+ else if (sideIdent === "east") {
191
+ cStart = this.columnCount - c2;
192
+ }
193
+ else {
194
+ // center:
195
+ cStart = c1;
196
+ cEnd = this.columnCount - c2 - 1;
197
+ }
198
+ return [cStart, cEnd];
199
+ }
200
+ getColumnDef(index) {
201
+ if (index < this.columnDefs.length) {
202
+ return this.columnDefs[index];
203
+ }
204
+ return undefined;
205
+ }
206
+ getFixedLeftColumnCount() {
207
+ return this.fixedLeftColumnCount;
208
+ }
209
+ getFixedRightColumnCount() {
210
+ return this.fixedRightColumnCount;
211
+ }
212
+ getAreaModel(area) {
213
+ if (area === "header") {
214
+ return this.headerAreaModel;
215
+ }
216
+ if (area === "body") {
217
+ return this.bodyAreaModel;
218
+ }
219
+ if (area === "footer") {
220
+ return this.footerAreaModel;
221
+ }
222
+ throw new Error("Wrong ident.");
223
+ }
224
+ getBodyModel() {
225
+ return this.bodyAreaModel;
226
+ }
227
+ isFooterVisibe() {
228
+ return (this.footerAreaModel?.getRowCount() ?? 0) > 0;
229
+ }
230
+ isHeaderVisibe() {
231
+ return (this.headerAreaModel?.getRowCount() ?? 0) > 0;
232
+ }
233
+ isRowCheckboxVisible() {
234
+ return this.rowCheckboxVisible;
235
+ }
236
+ externalFilterChanged(predictFn) {
237
+ this.getAreaModel("body").externalFilterChanged(predictFn);
238
+ }
239
+ doSort(sortItems) {
240
+ return this.getAreaModel("body").doSort(sortItems);
241
+ }
242
+ getColumnDefs() {
243
+ return this.columnDefs;
244
+ }
245
+ getColumnProperty(columnIndex) {
246
+ return this.columnDefs[columnIndex].property;
247
+ }
248
+ getBodyRowByIndex(rowIndex) {
249
+ return this.getBodyModel().getRowByIndex(rowIndex);
250
+ }
251
+ isSortable(columnIndex) {
252
+ if (this.columnDefs
253
+ && columnIndex < this.columnDefs.length
254
+ && this.columnDefs[columnIndex].sortable) {
255
+ // @ts-ignore
256
+ return this.columnDefs[columnIndex].sortable();
257
+ }
258
+ return false;
259
+ }
260
+ changeColumnOrder(sourceColumnIndex, targetColumnIndex) {
261
+ this.arrayMove(this.columnDefs, sourceColumnIndex, targetColumnIndex);
262
+ this.arrayMove(this.columnSizes, sourceColumnIndex, targetColumnIndex);
263
+ this.headerAreaModel?.changeColumnOrder(sourceColumnIndex, targetColumnIndex);
264
+ this.bodyAreaModel?.changeColumnOrder(sourceColumnIndex, targetColumnIndex);
265
+ this.footerAreaModel?.changeColumnOrder(sourceColumnIndex, targetColumnIndex);
266
+ this.calcXPositions();
267
+ }
268
+ recalcColumnWidthes(clientWidth) {
269
+ if (!this.columnDefs?.length && !this.columnSizes?.length) {
270
+ this.columnSizes = new Array(this.getColumnCount()).fill(this.overridingColumnWidth);
271
+ }
272
+ if (this.columnDefs?.length) {
273
+ this.columnSizes = this.columnDefs.map(def => {
274
+ if (def.width.unit === "%" && clientWidth) {
275
+ // only for a % value we have to check min and max:
276
+ let px = Math.floor(def.width.value * clientWidth / 100);
277
+ if (def.minWidth) {
278
+ let pxMin = def.minWidth.unit === "px" ? def.minWidth.value : Math.floor(def.minWidth.value * clientWidth / 100);
279
+ px = Math.max(pxMin, px);
280
+ }
281
+ if (def.maxWidth) {
282
+ let pxMax = def.maxWidth.unit === "px" ? def.maxWidth.value : Math.floor(def.maxWidth.value * clientWidth / 100);
283
+ px = Math.min(pxMax, px);
284
+ }
285
+ return px;
286
+ }
287
+ return def.width.value;
288
+ });
289
+ }
290
+ }
291
+ arrayMove(arr, fromIndex, toIndex) {
292
+ const element = arr.splice(fromIndex, 1)[0];
293
+ arr.splice(toIndex, 0, element);
294
+ return arr;
295
+ }
296
+ recalcContentWidthInPx() {
297
+ this.contentWidthInPx = this.getSideAreaWidth("center");
298
+ }
299
+ calcXPositions() {
300
+ const columnCount = this.getColumnCount();
301
+ this.xPositions = new Array(columnCount + 1);
302
+ this.xPositions[0] = 0;
303
+ for (let i = 0; i < columnCount; i++) {
304
+ this.xPositions[i + 1] = this.getColumnWidth(i) + this.xPositions[i];
305
+ }
306
+ }
307
+ }
308
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3RhYmxlL3NyYy9saWIvdGFibGUvZGF0YS90YWJsZW1vZGVsL3RhYmxlLW1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFLcEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFNbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRzlEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJHO0FBQ0gsTUFBTSxPQUFPLFVBQVU7SUFXSDtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNUO0lBQ0E7SUFDRztJQUNBO0lBQ0E7SUFDTTtJQXJCUixRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQ2IsaUJBQWlCLEdBQUcsQ0FBQyxDQUFDO0lBQ3RCLGdCQUFnQixHQUFHLENBQUMsQ0FBQztJQUUvQiwyREFBMkQ7SUFDakQsT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMscUNBQXFDO0lBQ3hFLFVBQVUsR0FBYSxFQUFFLENBQUM7SUFFcEMsWUFDa0IsZUFBNEIsRUFDNUIsYUFBMEIsRUFDMUIsZUFBNEIsRUFDNUIsdUJBQStCLENBQUMsRUFDaEMsd0JBQWdDLENBQUMsRUFDakMscUJBQThCLEtBQUssRUFDbkMsb0JBQXlDLElBQUksaUJBQWlCLEVBQUUsRUFDekUsYUFBNEIsRUFBRSxFQUM5QixjQUF3QixFQUFFLEVBQ3ZCLHdCQUFnQyxDQUFDLENBQUMsRUFDbEMsY0FBc0IsQ0FBQyxFQUN2QixhQUFxQixHQUFHLEVBQUUsb0RBQW9EO0lBQ3hF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Z0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRU8sY0FBYztRQUNwQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDMUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLEtBQUssQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNwQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdEU7SUFDSCxDQUFDO0NBR0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYWJsZU1vZGVsSWYgfSBmcm9tIFwiLi90YWJsZS1tb2RlbC5pZlwiO1xuaW1wb3J0IHsgUGFkZGluZyB9IGZyb20gXCIuL3BhZGRpbmdcIjtcbmltcG9ydCB7IEFyZWFJZGVudCB9IGZyb20gXCIuL2FyZWEtaWRlbnQudHlwZVwiO1xuaW1wb3J0IHsgQXJlYU1vZGVsSWYgfSBmcm9tIFwiLi9hcmVhbW9kZWwvYXJlYS1tb2RlbC5pZlwiO1xuaW1wb3J0IHsgU2lkZUlkZW50IH0gZnJvbSBcIi4uL3NpZGUtaWRlbnQudHlwZVwiO1xuaW1wb3J0IHsgRGVmYXVsdFJvd0hlaWdodHNJZiB9IGZyb20gXCIuLi9vcHRpb25zL2RlZmF1bHQtcm93LWhlaWdodHMuaWZcIjtcbmltcG9ydCB7IERlZmF1bHRSb3dIZWlnaHRzIH0gZnJvbSBcIi4uL29wdGlvbnMvZGVmYXVsdC1yb3ctaGVpZ2h0c1wiO1xuaW1wb3J0IHsgQ29sdW1uRGVmSWYgfSBmcm9tIFwiLi9jb2x1bW4vY29sdW1uLWRlZi5pZlwiO1xuaW1wb3J0IHsgRmlsdGVyRnVuY3Rpb24gfSBmcm9tIFwiLi4vY29tbW9uL2ZpbHRlci1mdW5jdGlvblwiO1xuaW1wb3J0IHsgU29ydEl0ZW0gfSBmcm9tIFwiLi4vY29tbW9uL3NvcnQtaXRlbVwiO1xuaW1wb3J0IHsgU2VsZWN0aW9uTW9kZWxJZiB9IGZyb20gXCIuLi8uLi9zZWxlY3Rpb24vc2VsZWN0aW9uLW1vZGVsLmlmXCI7XG5pbXBvcnQgeyBHZXRUIH0gZnJvbSBcIi4uL2NvbW1vbi9nZXQtdFwiO1xuaW1wb3J0IHsgQ2hlY2tib3hDb2x1bW5EZWYgfSBmcm9tIFwiLi4vY29tbW9uL2NoZWNrYm94LWNvbHVtbi1kZWZcIjtcbmltcG9ydCB7IENoZWNrYm94TW9kZWwgfSBmcm9tIFwiLi4vLi4vY2hlY2tib3gvY2hlY2tib3gtbW9kZWxcIjtcblxuXG4vKipcbiAqIFRoaXMgaXMgYSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIFRhYmxlTW9kZWxJZi5cbiAqIFRocyBUYWJsZU1vZGVsIGlzIG9uIG9uZSBoYW5kIGEgY29udGFpbmVyIGZvciB0aGUgaGVhZGVyLCBib2R5LCBhbmQgZm9vdGVyIG1vZGVsc1xuICogKHNlZSA6ICNnZXRBcmVhTW9kZWwsIGFuZCAjQXJlYU1vZGVsSWYpLCBhbmQgb24gdGhlIG90aGVyIGhhbmQgdGhlIG1hc3RlciBvZlxuICogdGhlIGNvbHVtbiBpbmZvcm1hdGlvbiAoI2dldENvbHVtbkNvdW50KCksICNnZXRDb2x1bW5XaWR0aChjb2x1bW5JbmRleDogbnVtYmVyKSkuXG4gKlxuICogSWYgZ2V0Rml4ZWRMZWZ0Q29sdW1uQ291bnQoKSByZXR1cm5zIGEgdmFsdWUgZ3JlYXRlciB0aGFuIDAsIGEgZml4ZWQgd2VzdCBhcmVhIHdpbGwgYmUgcmVuZGVyZWQgaW4gdGhlXG4gKiBoZWFkZXIsIGJvZHksIGFuZCBmb290ZXIuIEEgdmFsdWUgZ3JlYXRlciB0aGFuIDAgZm9yIGdldEZpeGVkTGVmdENvbHVtbkNvdW50KClcbiAqIHdpbGwgcmVzdWx0IGluIHRoZSBwcmVzZW5jZSBvZiBhbiBlYXN0IGFyZWEuXG4gKlxuICogPHByZT5cbiAqICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tK1xuICogIHwgIGhlYWRlci93ZXN0ICAgfCAgaGVhZGVyL2NlbnRlciAgICB8IGhlYWRlci9lYXN0ICB8XG4gKiAgKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLStcbiAqICB8ICBib2R5L3dlc3QgICAgIHwgIGJvZHkvY2VudGVyICAgICAgfCBib2R5L2Vhc3QgICAgfFxuICogICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rXG4gKiAgfCAgZm9vdGVyL3dlc3QgICB8ICBmb290ZXIvY2VudGVyICAgIHwgZm9vdGVyL2Vhc3QgIHxcbiAqICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tKyA8L3ByZT5cbiAqXG4gKi9cbmV4cG9ydCBjbGFzcyBUYWJsZU1vZGVsIGltcGxlbWVudHMgVGFibGVNb2RlbElmIHtcblxuICBwcm90ZWN0ZWQgcm93Q291bnQgPSAwO1xuICBwcm90ZWN0ZWQgY29udGVudEhlaWdodEluUHggPSAwO1xuICBwcm90ZWN0ZWQgY29udGVudFdpZHRoSW5QeCA9IDA7XG5cbiAgLy8gaW4gY2FzZSBvZiBhIGZpeGVkIGhlYWRlciwgbGVmdCBvciByaWdodCBjb2x1bW4sIGZvb3RlcjpcbiAgcHJvdGVjdGVkIHBhZGRpbmcgPSBuZXcgUGFkZGluZygwLCAwLCAwLCAwKTsgLy8gdGhlIGRpbWVuc2lvbiBvZiB0aGUgJ2JvZHkvY2VudGVyJ1xuICBwcm90ZWN0ZWQgeFBvc2l0aW9uczogbnVtYmVyW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgaGVhZGVyQXJlYU1vZGVsOiBBcmVhTW9kZWxJZixcbiAgICBwdWJsaWMgcmVhZG9ubHkgYm9keUFyZWFNb2RlbDogQXJlYU1vZGVsSWYsXG4gICAgcHVibGljIHJlYWRvbmx5IGZvb3RlckFyZWFNb2RlbDogQXJlYU1vZGVsSWYsXG4gICAgcHVibGljIHJlYWRvbmx5IGZpeGVkTGVmdENvbHVtbkNvdW50OiBudW1iZXIgPSAwLFxuICAgIHB1YmxpYyByZWFkb25seSBmaXhlZFJpZ2h0Q29sdW1uQ291bnQ6IG51bWJlciA9IDAsXG4gICAgcHVibGljIHJlYWRvbmx5IHJvd0NoZWNrYm94VmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlLFxuICAgIHB1YmxpYyByZWFkb25seSBkZWZhdWx0Um93SGVpZ2h0czogRGVmYXVsdFJvd0hlaWdodHNJZiA9IG5ldyBEZWZhdWx0Um93SGVpZ2h0cygpLFxuICAgIHB1YmxpYyBjb2x1bW5EZWZzOiBDb2x1bW5EZWZJZltdID0gW10sXG4gICAgcHVibGljIGNvbHVtblNpemVzOiBudW1iZXJbXSA9IFtdLFxuICAgIHByb3RlY3RlZCBvdmVycmlkaW5nQ29sdW1uV2lkdGg6IG51bWJlciA9IC0xLFxuICAgIHByb3RlY3RlZCBjb2x1bW5Db3VudDogbnVtYmVyID0gMCxcbiAgICBwcm90ZWN0ZWQgcGFyZW50U2l6ZTogbnVtYmVyID0gNDAwLCAvLyBjYW4gYmUgaW1wb3J0YW50IHdoZW4gd2UgaGF2ZSBwZXJjZW50YWdlIHdpZHRoZXMsXG4gICAgcHVibGljIHJlYWRvbmx5IGdldFNlbGVjdGlvbk1vZGVsOiBHZXRUPFNlbGVjdGlvbk1vZGVsSWY+ID0gKCkgPT4gdW5kZWZpbmVkXG4gICkge1xuICAgIGhlYWRlckFyZWFNb2RlbC5hcmVhSWRlbnQgPSBcImhlYWRlclwiO1xuICAgIGJvZHlBcmVhTW9kZWwuYXJlYUlkZW50ID0gXCJib2R5XCI7XG4gICAgZm9vdGVyQXJlYU1vZGVsLmFyZWFJZGVudCA9IFwiZm9vdGVyXCI7XG4gICAgaWYgKCF0aGlzLmNvbHVtbkNvdW50KSB7XG4gICAgICBpZiAodGhpcy5jb2x1bW5EZWZzPy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5jb2x1bW5Db3VudCA9IHRoaXMuY29sdW1uRGVmcy5sZW5ndGg7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuY29sdW1uU2l6ZXM/Lmxlbmd0aCkge1xuICAgICAgICB0aGlzLmNvbHVtbkNvdW50ID0gdGhpcy5jb2x1bW5TaXplcz8ubGVuZ3RoO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5jb2x1bW5EZWZzPy5sZW5ndGhcbiAgICAgICYmIHRoaXMuY29sdW1uRGVmc1swXSBpbnN0YW5jZW9mIENoZWNrYm94Q29sdW1uRGVmXG4gICAgICAmJiAhYm9keUFyZWFNb2RlbC5yb3dTZWxlY3Rpb25Nb2RlbCkge1xuICAgICAgYm9keUFyZWFNb2RlbC5yb3dTZWxlY3Rpb25Nb2RlbCA9IG5ldyBDaGVja2JveE1vZGVsKCk7XG4gICAgfVxuICB9XG5cbiAgaW5pdCgpIHtcbiAgICB0aGlzLnJlY2FsY1NpemUodGhpcy5wYXJlbnRTaXplKTtcbiAgICBpZiAodGhpcy5vdmVycmlkaW5nQ29sdW1uV2lkdGggPT09IC0xKSB7XG4gICAgICB0aGlzLmNhbGNYUG9zaXRpb25zKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmhlYWRlckFyZWFNb2RlbCkge1xuICAgICAgdGhpcy5oZWFkZXJBcmVhTW9kZWwuaW5pdCgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5ib2R5QXJlYU1vZGVsKSB7XG4gICAgICB0aGlzLmJvZHlBcmVhTW9kZWwuaW5pdCgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5mb290ZXJBcmVhTW9kZWwpIHtcbiAgICAgIHRoaXMuZm9vdGVyQXJlYU1vZGVsLmluaXQoKTtcbiAgICB9XG4gIH1cblxuICBnZXRDb2x1bW5Db3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmNvbHVtbkNvdW50O1xuICB9O1xuXG4gIHNldENvbHVtbldpZHRoKGNvbHVtbkluZGV4OiBudW1iZXIsIHdpZHRoOiBudW1iZXIpOiB2b2lkIHtcbiAgICB3aWR0aCA9IE1hdGgubWF4KDAsIHdpZHRoKTtcbiAgICBpZiAodGhpcy5vdmVycmlkaW5nQ29sdW1uV2lkdGggIT09IC0xKSB7XG4gICAgICB0aGlzLm92ZXJyaWRpbmdDb2x1bW5XaWR0aCA9IHdpZHRoO1xuICAgIH1cbiAgICBpZiAoY29sdW1uSW5kZXggPiAtMSAmJiBjb2x1bW5JbmRleCA8IHRoaXMuY29sdW1uU2l6ZXM/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5jb2x1bW5TaXplc1tjb2x1bW5JbmRleF0gPSB3aWR0aDtcbiAgICB9XG4gICAgdGhpcy5yZWNhbGNDb250ZW50V2lkdGhJblB4KCk7XG4gIH1cblxuICBnZXRDb2x1bW5XaWR0aChjb2x1bW5JbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBjZCA9IHRoaXMuZ2V0Q29sdW1uRGVmKGNvbHVtbkluZGV4KTtcbiAgICBpZiAoY2QgJiYgY2QuaXNWaXNpYmxlICYmICFjZC5pc1Zpc2libGUoKSkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGlmICh0aGlzLm92ZXJyaWRpbmdDb2x1bW5XaWR0aCAhPT0gLTEpIHtcbiAgICAgIHJldHVybiB0aGlzLm92ZXJyaWRpbmdDb2x1bW5XaWR0aDtcbiAgICB9XG4gICAgaWYgKGNvbHVtbkluZGV4ID4gLTEgJiYgY29sdW1uSW5kZXggPCB0aGlzLmNvbHVtblNpemVzPy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbHVtblNpemVzW2NvbHVtbkluZGV4XTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH07XG5cbiAgZ2V0WFBvc0J5Q29sdW1uSW5kZXgoY29sdW1uSW5kZXg6IG51bWJlcik6IG51bWJlciB7XG4gICAgaWYgKGNvbHVtbkluZGV4ID09PSAwKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgaWYgKHRoaXMub3ZlcnJpZGluZ0NvbHVtbldpZHRoID4gLTEpIHtcbiAgICAgIHJldHVybiB0aGlzLm92ZXJyaWRpbmdDb2x1bW5XaWR0aCAqIGNvbHVtbkluZGV4O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy54UG9zaXRpb25zW2NvbHVtbkluZGV4XTtcbiAgfVxuXG4gIHJlY2FsY1NpemUoY2xpZW50V2lkdGg6IG51bWJlcikge1xuICAgIHRoaXMucmVjYWxjQ29sdW1uV2lkdGhlcyhjbGllbnRXaWR0aCk7XG4gICAgdGhpcy5yZWNhbGNIZWlnaHRBbmRQYWRkaW5nKCk7XG4gIH1cblxuICByZWNhbGNIZWlnaHRBbmRQYWRkaW5nKCkge1xuICAgIGNvbnN0IGJvZHlNb2RlbCA9IHRoaXMuZ2V0QXJlYU1vZGVsKFwiYm9keVwiKTtcbiAgICB0aGlzLnJvd0NvdW50ID0gYm9keU1vZGVsLmdldFJvd0NvdW50KCk7XG4gICAgdGhpcy5jb250ZW50SGVpZ2h0SW5QeCA9IHRoaXMuZ2V0QXJlYUhlaWdodChcImJvZHlcIik7XG4gICAgdGhpcy5yZWNhbGNDb250ZW50V2lkdGhJblB4KCk7XG5cbiAgICB0aGlzLnJlY2FsY1BhZGRpbmcoKTtcbiAgfVxuXG4gIHJlY2FsY1BhZGRpbmcoKSB7XG4gICAgY29uc3Qgd2VzdFdpZHRoID0gdGhpcy5nZXRTaWRlQXJlYVdpZHRoKFwid2VzdFwiKTtcbiAgICBjb25zdCBlYXN0V2lkdGggPSB0aGlzLmdldFNpZGVBcmVhV2lkdGgoXCJlYXN0XCIpO1xuICAgIGNvbnN0IGhlYWRlckhlaWdodCA9IHRoaXMuZ2V0QXJlYUhlaWdodChcImhlYWRlclwiKTtcbiAgICBjb25zdCBmb290ZXJIZWlnaHQgPSB0aGlzLmdldEFyZWFIZWlnaHQoXCJmb290ZXJcIik7XG5cbiAgICB0aGlzLnBhZGRpbmcgPSBuZXcgUGFkZGluZyhcbiAgICAgIGhlYWRlckhlaWdodCxcbiAgICAgIGVhc3RXaWR0aCxcbiAgICAgIGZvb3RlckhlaWdodCxcbiAgICAgIHdlc3RXaWR0aCk7XG4gIH1cblxuICBnZXRQYWRkaW5nKCk6IFBhZGRpbmcge1xuICAgIHJldHVybiB0aGlzLnBhZGRpbmc7XG4gIH1cblxuICBnZXRDb250ZW50SGVpZ2h0SW5QaXhlbCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmNvbnRlbnRIZWlnaHRJblB4O1xuICB9XG5cbiAgZ2V0Q29udGVudFdpZHRoSW5QaXhlbCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmNvbnRlbnRXaWR0aEluUHg7XG4gIH1cblxuICBnZXRSb3dIZWlnaHQocm93QXJlYUlkZW50OiBBcmVhSWRlbnQsIHJvd0luZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmdldEFyZWFNb2RlbChyb3dBcmVhSWRlbnQpLmdldFJvd0hlaWdodChyb3dJbmRleCk7XG4gIH1cblxuICBnZXRNb2RlbChyb3dBcmVhSWRlbnQ6IEFyZWFJZGVudCk6IEFyZWFNb2RlbElmIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBcmVhTW9kZWwocm93QXJlYUlkZW50KTtcbiAgfVxuXG4gIGdldEFyZWFIZWlnaHQoYXJlYUlkZW50OiBBcmVhSWRlbnQpOiBudW1iZXIge1xuICAgIGNvbnN0IG1vZGVsID0gdGhpcy5nZXRNb2RlbChhcmVhSWRlbnQpO1xuICAgIGNvbnN0IHJvd0NvdW50ID0gbW9kZWwuZ2V0Um93Q291bnQoKTtcbiAgICBpZiAodGhpcy5kZWZhdWx0Um93SGVpZ2h0c1thcmVhSWRlbnRdKSB7XG4gICAgICByZXR1cm4gcm93Q291bnQgKiB0aGlzLmRlZmF1bHRSb3dIZWlnaHRzW2FyZWFJZGVudF07XG4gICAgfVxuXG4gICAgbGV0IHJldCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dDb3VudDsgaSsrKSB7XG4gICAgICByZXQgPSByZXQgKyBtb2RlbC5nZXRSb3dIZWlnaHQoaSk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICBnZXRTaWRlQXJlYVdpZHRoKHNpZGVJZGVudDogU2lkZUlkZW50KTogbnVtYmVyIHtcbiAgICBjb25zdCBbY1N0YXJ0LCBjRW5kXSA9IHRoaXMuZ2V0U2lkZVN0YXJ0QW5kRW5kQ29sdW1uSW5kZXgoc2lkZUlkZW50KTtcbiAgICBsZXQgcmV0ID0gMDtcbiAgICBmb3IgKGxldCBpID0gY1N0YXJ0OyBpIDw9IGNFbmQ7IGkrKykge1xuICAgICAgcmV0ID0gcmV0ICsgdGhpcy5nZXRDb2x1bW5XaWR0aChpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIGdldFNpZGVTdGFydEFuZEVuZENvbHVtbkluZGV4KHNpZGVJZGVudDogU2lkZUlkZW50KTogW251bWJlciwgbnVtYmVyXSB7XG4gICAgY29uc3QgYzEgPSB0aGlzLmdldEZpeGVkTGVmdENvbHVtbkNvdW50KCk7XG4gICAgY29uc3QgYzIgPSB0aGlzLmdldEZpeGVkUmlnaHRDb2x1bW5Db3VudCgpO1xuXG4gICAgbGV0IGNTdGFydCA9IDA7XG4gICAgbGV0IGNFbmQgPSB0aGlzLmNvbHVtbkNvdW50IC0gMTtcbiAgICBpZiAoc2lkZUlkZW50ID09PSBcIndlc3RcIikge1xuICAgICAgY0VuZCA9IGMxIC0gMTtcbiAgICB9IGVsc2UgaWYgKHNpZGVJZGVudCA9PT0gXCJlYXN0XCIpIHtcbiAgICAgIGNTdGFydCA9IHRoaXMuY29sdW1uQ291bnQgLSBjMjtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gY2VudGVyOlxuICAgICAgY1N0YXJ0ID0gYzE7XG4gICAgICBjRW5kID0gdGhpcy5jb2x1bW5Db3VudCAtIGMyIC0gMTtcbiAgICB9XG4gICAgcmV0dXJuIFtjU3RhcnQsIGNFbmRdO1xuICB9XG5cbiAgZ2V0Q29sdW1uRGVmKGluZGV4OiBudW1iZXIpOiBDb2x1bW5EZWZJZiB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKGluZGV4IDwgdGhpcy5jb2x1bW5EZWZzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29sdW1uRGVmc1tpbmRleF07XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXRGaXhlZExlZnRDb2x1bW5Db3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmZpeGVkTGVmdENvbHVtbkNvdW50O1xuICB9XG5cbiAgZ2V0Rml4ZWRSaWdodENvbHVtbkNvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZml4ZWRSaWdodENvbHVtbkNvdW50O1xuICB9XG5cbiAgZ2V0QXJlYU1vZGVsKGFyZWE6IEFyZWFJZGVudCk6IEFyZWFNb2RlbElmIHtcbiAgICBpZiAoYXJlYSA9PT0gXCJoZWFkZXJcIikge1xuICAgICAgcmV0dXJuIHRoaXMuaGVhZGVyQXJlYU1vZGVsO1xuICAgIH1cbiAgICBpZiAoYXJlYSA9PT0gXCJib2R5XCIpIHtcbiAgICAgIHJldHVybiB0aGlzLmJvZHlBcmVhTW9kZWw7XG4gICAgfVxuICAgIGlmIChhcmVhID09PSBcImZvb3RlclwiKSB7XG4gICAgICByZXR1cm4gdGhpcy5mb290ZXJBcmVhTW9kZWw7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihcIldyb25nIGlkZW50LlwiKTtcbiAgfVxuXG4gIGdldEJvZHlNb2RlbCgpOiBBcmVhTW9kZWxJZiB7XG4gICAgcmV0dXJuIHRoaXMuYm9keUFyZWFNb2RlbDtcbiAgfVxuXG4gIGlzRm9vdGVyVmlzaWJlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5mb290ZXJBcmVhTW9kZWw/LmdldFJvd0NvdW50KCkgPz8gMCkgPiAwO1xuICB9XG5cbiAgaXNIZWFkZXJWaXNpYmUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLmhlYWRlckFyZWFNb2RlbD8uZ2V0Um93Q291bnQoKSA/PyAwKSA+IDA7XG4gIH1cblxuICBpc1Jvd0NoZWNrYm94VmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yb3dDaGVja2JveFZpc2libGU7XG4gIH1cblxuICBleHRlcm5hbEZpbHRlckNoYW5nZWQ8VD4ocHJlZGljdEZuOiBGaWx0ZXJGdW5jdGlvbjxUPik6IHZvaWQge1xuICAgIHRoaXMuZ2V0QXJlYU1vZGVsKFwiYm9keVwiKS5leHRlcm5hbEZpbHRlckNoYW5nZWQocHJlZGljdEZuKTtcbiAgfVxuXG4gIGRvU29ydChzb3J0SXRlbXM6IFNvcnRJdGVtW10pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5nZXRBcmVhTW9kZWwoXCJib2R5XCIpLmRvU29ydChzb3J0SXRlbXMpO1xuICB9XG5cbiAgZ2V0Q29sdW1uRGVmcygpOiBDb2x1bW5EZWZJZltdIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5EZWZzO1xuICB9XG5cbiAgZ2V0Q29sdW1uUHJvcGVydHkoY29sdW1uSW5kZXg6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1uRGVmc1tjb2x1bW5JbmRleF0ucHJvcGVydHk7XG4gIH1cblxuICBnZXRCb2R5Um93QnlJbmRleChyb3dJbmRleDogbnVtYmVyKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5nZXRCb2R5TW9kZWwoKS5nZXRSb3dCeUluZGV4KHJvd0luZGV4KTtcbiAgfVxuXG4gIGlzU29ydGFibGUoY29sdW1uSW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmNvbHVtbkRlZnNcbiAgICAgICYmIGNvbHVtbkluZGV4IDwgdGhpcy5jb2x1bW5EZWZzLmxlbmd0aFxuICAgICAgJiYgdGhpcy5jb2x1bW5EZWZzW2NvbHVtbkluZGV4XS5zb3J0YWJsZSkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcmV0dXJuIHRoaXMuY29sdW1uRGVmc1tjb2x1bW5JbmRleF0uc29ydGFibGUoKTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY2hhbmdlQ29sdW1uT3JkZXIoc291cmNlQ29sdW1uSW5kZXg6IG51bWJlciwgdGFyZ2V0Q29sdW1uSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuYXJyYXlNb3ZlKHRoaXMuY29sdW1uRGVmcywgc291cmNlQ29sdW1uSW5kZXgsIHRhcmdldENvbHVtbkluZGV4KTtcbiAgICB0aGlzLmFycmF5TW92ZSh0aGlzLmNvbHVtblNpemVzLCBzb3VyY2VDb2x1bW5JbmRleCwgdGFyZ2V0Q29sdW1uSW5kZXgpO1xuICAgIHRoaXMuaGVhZGVyQXJlYU1vZGVsPy5jaGFuZ2VDb2x1bW5PcmRlcihzb3VyY2VDb2x1bW5JbmRleCwgdGFyZ2V0Q29sdW1uSW5kZXgpO1xuICAgIHRoaXMuYm9keUFyZWFNb2RlbD8uY2hhbmdlQ29sdW1uT3JkZXIoc291cmNlQ29sdW1uSW5kZXgsIHRhcmdldENvbHVtbkluZGV4KTtcbiAgICB0aGlzLmZvb3RlckFyZWFNb2RlbD8uY2hhbmdlQ29sdW1uT3JkZXIoc291cmNlQ29sdW1uSW5kZXgsIHRhcmdldENvbHVtbkluZGV4KTtcbiAgICB0aGlzLmNhbGNYUG9zaXRpb25zKCk7XG4gIH1cblxuXG4gIHByaXZhdGUgcmVjYWxjQ29sdW1uV2lkdGhlcyhjbGllbnRXaWR0aDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmNvbHVtbkRlZnM/Lmxlbmd0aCAmJiAhdGhpcy5jb2x1bW5TaXplcz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLmNvbHVtblNpemVzID0gbmV3IEFycmF5KHRoaXMuZ2V0Q29sdW1uQ291bnQoKSkuZmlsbCh0aGlzLm92ZXJyaWRpbmdDb2x1bW5XaWR0aCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbHVtbkRlZnM/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5jb2x1bW5TaXplcyA9IHRoaXMuY29sdW1uRGVmcy5tYXAoZGVmID0+IHtcbiAgICAgICAgaWYgKGRlZi53aWR0aC51bml0ID09PSBcIiVcIiAmJiBjbGllbnRXaWR0aCkge1xuICAgICAgICAgIC8vIG9ubHkgZm9yIGEgJSB2YWx1ZSB3ZSBoYXZlIHRvIGNoZWNrIG1pbiBhbmQgbWF4OlxuICAgICAgICAgIGxldCBweCA9IE1hdGguZmxvb3IoZGVmLndpZHRoLnZhbHVlICogY2xpZW50V2lkdGggLyAxMDApO1xuICAgICAgICAgIGlmIChkZWYubWluV2lkdGgpIHtcbiAgICAgICAgICAgIGxldCBweE1pbiA9IGRlZi5taW5XaWR0aC51bml0ID09PSBcInB4XCIgPyBkZWYubWluV2lkdGgudmFsdWUgOiBNYXRoLmZsb29yKGRlZi5taW5XaWR0aC52YWx1ZSAqIGNsaWVudFdpZHRoIC8gMTAwKTtcbiAgICAgICAgICAgIHB4ID0gTWF0aC5tYXgocHhNaW4sIHB4KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGRlZi5tYXhXaWR0aCkge1xuICAgICAgICAgICAgbGV0IHB4TWF4ID0gZGVmLm1heFdpZHRoLnVuaXQgPT09IFwicHhcIiA/IGRlZi5tYXhXaWR0aC52YWx1ZSA6IE1hdGguZmxvb3IoZGVmLm1heFdpZHRoLnZhbHVlICogY2xpZW50V2lkdGggLyAxMDApO1xuICAgICAgICAgICAgcHggPSBNYXRoLm1pbihweE1heCwgcHgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcHg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRlZi53aWR0aC52YWx1ZTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXJyYXlNb3ZlKGFycjogYW55W10sIGZyb21JbmRleDogbnVtYmVyLCB0b0luZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gYXJyLnNwbGljZShmcm9tSW5kZXgsIDEpWzBdO1xuICAgIGFyci5zcGxpY2UodG9JbmRleCwgMCwgZWxlbWVudCk7XG4gICAgcmV0dXJuIGFycjtcbiAgfVxuXG4gIHByaXZhdGUgcmVjYWxjQ29udGVudFdpZHRoSW5QeCgpIHtcbiAgICB0aGlzLmNvbnRlbnRXaWR0aEluUHggPSB0aGlzLmdldFNpZGVBcmVhV2lkdGgoXCJjZW50ZXJcIik7XG4gIH1cblxuICBwcml2YXRlIGNhbGNYUG9zaXRpb25zKCkge1xuICAgIGNvbnN0IGNvbHVtbkNvdW50ID0gdGhpcy5nZXRDb2x1bW5Db3VudCgpO1xuICAgIHRoaXMueFBvc2l0aW9ucyA9IG5ldyBBcnJheShjb2x1bW5Db3VudCArIDEpO1xuICAgIHRoaXMueFBvc2l0aW9uc1swXSA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2x1bW5Db3VudDsgaSsrKSB7XG4gICAgICB0aGlzLnhQb3NpdGlvbnNbaSArIDFdID0gdGhpcy5nZXRDb2x1bW5XaWR0aChpKSArIHRoaXMueFBvc2l0aW9uc1tpXTtcbiAgICB9XG4gIH1cblxuXG59XG5cblxuIl19