@one-paragon/angular-utilities 0.3.10 → 0.3.11-beta.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 (395) hide show
  1. package/karma.conf.js +44 -0
  2. package/ng-package.json +7 -0
  3. package/package.json +16 -30
  4. package/src/action-state/action-state-spinner/action-state-spinner.component.css +16 -0
  5. package/src/action-state/action-state-spinner/action-state-spinner.component.html +6 -0
  6. package/src/action-state/action-state-spinner/action-state-spinner.component.spec.ts +25 -0
  7. package/src/action-state/action-state-spinner/action-state-spinner.component.ts +26 -0
  8. package/src/action-state/action-state-ui/action-state-ui.module.ts +13 -0
  9. package/{action-state/index.d.ts → src/action-state/index.ts} +8 -4
  10. package/src/action-state/ngrx-ext/ngrx-ext.module.ts +15 -0
  11. package/src/action-state/ngrx.ts +69 -0
  12. package/src/http-request-state/HttpRequestStateFactory.ts +29 -0
  13. package/src/http-request-state/HttpRequestStateStore.ts +147 -0
  14. package/src/http-request-state/directives/HttpStateDirectiveBase.ts +38 -0
  15. package/src/http-request-state/directives/http-error-state-directive.ts +32 -0
  16. package/src/http-request-state/directives/http-inProgress-state-directive.ts +32 -0
  17. package/src/http-request-state/directives/http-notStarted-state-directive.ts +31 -0
  18. package/src/http-request-state/directives/http-success-state-directive.ts +40 -0
  19. package/src/http-request-state/directives/request-state-directive.spec.ts +72 -0
  20. package/src/http-request-state/directives/request-state-directive.ts +79 -0
  21. package/src/http-request-state/helpers.ts +30 -0
  22. package/src/http-request-state/http-request-state.ts +69 -0
  23. package/src/http-request-state/http-state-module.ts +23 -0
  24. package/{http-request-state/index.d.ts → src/http-request-state/index.ts} +1 -1
  25. package/src/http-request-state/observable.spec.ts +43 -0
  26. package/src/http-request-state/rxjs/getRequestorBody.ts +10 -0
  27. package/src/http-request-state/rxjs/getRequestorState.ts +8 -0
  28. package/src/http-request-state/rxjs/tapError.ts +16 -0
  29. package/src/http-request-state/rxjs/tapSuccess.ts +16 -0
  30. package/src/http-request-state/strategies.spec.ts +42 -0
  31. package/src/http-request-state/types.ts +50 -0
  32. package/src/ngrx/actionable-selector.ts +95 -0
  33. package/src/ngrx/index.ts +1 -0
  34. package/{public-api.d.ts → src/public-api.ts} +35 -16
  35. package/src/rxjs/defaultShareReplay.ts +8 -0
  36. package/{rxjs/index.d.ts → src/rxjs/index.ts} +4 -4
  37. package/src/rxjs/mapError.ts +8 -0
  38. package/src/rxjs/rxjs-operators.ts +132 -0
  39. package/src/rxjs/subjectifier.ts +15 -0
  40. package/src/specs/clickSubject.spec.ts +95 -0
  41. package/src/specs/dialog.spec.ts +101 -0
  42. package/src/specs/toggleGroupDirective.spec.ts +229 -0
  43. package/src/table-builder/classes/DefaultSettings.ts +11 -0
  44. package/src/table-builder/classes/MatTableObservableDataSource.ts +23 -0
  45. package/src/table-builder/classes/TableBuilderConfig.ts +35 -0
  46. package/src/table-builder/classes/TableBuilderDataSource.ts +57 -0
  47. package/src/table-builder/classes/TableState.ts +83 -0
  48. package/src/table-builder/classes/filter-info.ts +131 -0
  49. package/src/table-builder/classes/table-builder-general-settings.ts +90 -0
  50. package/src/table-builder/classes/table-builder.ts +52 -0
  51. package/src/table-builder/classes/table-store.ts +394 -0
  52. package/src/table-builder/components/array-column.component.ts +36 -0
  53. package/src/table-builder/components/column-builder/column-builder.component.html +58 -0
  54. package/src/table-builder/components/column-builder/column-builder.component.scss +43 -0
  55. package/src/table-builder/components/column-builder/column-builder.component.spec.ts +49 -0
  56. package/src/table-builder/components/column-builder/column-builder.component.ts +117 -0
  57. package/src/table-builder/components/column-builder/column-helpers.ts +38 -0
  58. package/src/table-builder/components/date-filter/date-filter.component.html +23 -0
  59. package/src/table-builder/components/date-filter/date-filter.component.ts +24 -0
  60. package/src/table-builder/components/date-time-filter/date-time-filter.component.html +9 -0
  61. package/src/table-builder/components/date-time-filter/date-time-filter.component.ts +22 -0
  62. package/src/table-builder/components/filter/filter.component.html +88 -0
  63. package/src/table-builder/components/filter/filter.component.scss +64 -0
  64. package/src/table-builder/components/filter/filter.component.spec.ts +87 -0
  65. package/src/table-builder/components/filter/filter.component.ts +55 -0
  66. package/src/table-builder/components/filter/in-list/in-list-filter.component.ts +92 -0
  67. package/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.html +55 -0
  68. package/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.scss +57 -0
  69. package/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.ts +55 -0
  70. package/src/table-builder/components/generic-table/generic-table.component.html +71 -0
  71. package/src/table-builder/components/generic-table/generic-table.component.scss +51 -0
  72. package/src/table-builder/components/generic-table/generic-table.component.ts +220 -0
  73. package/src/table-builder/components/generic-table/paginator.component.ts +94 -0
  74. package/src/table-builder/components/group-by-list/group-by-list.component.css +8 -0
  75. package/src/table-builder/components/group-by-list/group-by-list.component.html +12 -0
  76. package/src/table-builder/components/group-by-list/group-by-list.component.spec.ts +23 -0
  77. package/src/table-builder/components/group-by-list/group-by-list.component.ts +21 -0
  78. package/src/table-builder/components/header-menu/header-menu.component.html +98 -0
  79. package/src/table-builder/components/header-menu/header-menu.component.scss +96 -0
  80. package/src/table-builder/components/header-menu/header-menu.component.ts +98 -0
  81. package/src/table-builder/components/in-filter/in-filter.component.css +3 -0
  82. package/src/table-builder/components/in-filter/in-filter.component.html +20 -0
  83. package/src/table-builder/components/in-filter/in-filter.component.ts +64 -0
  84. package/{table-builder/components/index.d.ts → src/table-builder/components/index.ts} +9 -9
  85. package/src/table-builder/components/initialization-component/initialization-component.html +29 -0
  86. package/src/table-builder/components/initialization-component/initialization-component.ts +24 -0
  87. package/src/table-builder/components/link-column.component.ts +47 -0
  88. package/src/table-builder/components/number-filter/number-filter.component.css +10 -0
  89. package/src/table-builder/components/number-filter/number-filter.component.html +19 -0
  90. package/src/table-builder/components/number-filter/number-filter.component.spec.ts +30 -0
  91. package/src/table-builder/components/number-filter/number-filter.component.ts +25 -0
  92. package/src/table-builder/components/scroll-strategy.ts +82 -0
  93. package/src/table-builder/components/sort-menu/sort-menu.component-store.ts +62 -0
  94. package/src/table-builder/components/sort-menu/sort-menu.component.html +111 -0
  95. package/src/table-builder/components/sort-menu/sort-menu.component.scss +119 -0
  96. package/src/table-builder/components/sort-menu/sort-menu.component.ts +95 -0
  97. package/{table-builder/components/table-container/table-container-imports.d.ts → src/table-builder/components/table-container/table-container-imports.ts} +30 -14
  98. package/src/table-builder/components/table-container/table-container.css +45 -0
  99. package/src/table-builder/components/table-container/table-container.helpers/data-state.helpers.ts +141 -0
  100. package/src/table-builder/components/table-container/table-container.helpers/filter-state.helpers.ts +106 -0
  101. package/src/table-builder/components/table-container/table-container.helpers/groupBy.helpers.ts +69 -0
  102. package/src/table-builder/components/table-container/table-container.helpers/sort-state.helpers.ts +45 -0
  103. package/src/table-builder/components/table-container/table-container.html +117 -0
  104. package/src/table-builder/components/table-container/table-container.spec.ts +154 -0
  105. package/src/table-builder/components/table-container/table-container.ts +325 -0
  106. package/src/table-builder/components/table-container/tableProps.ts +18 -0
  107. package/src/table-builder/components/table-container/virtual-scroll-container.ts +126 -0
  108. package/src/table-builder/components/table-container-filter/filter-list/filter-list.component.html +31 -0
  109. package/src/table-builder/components/table-container-filter/filter-list/filter-list.component.ts +52 -0
  110. package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.css +42 -0
  111. package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.html +10 -0
  112. package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.spec.ts +86 -0
  113. package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.ts +38 -0
  114. package/src/table-builder/components/table-container-filter/table-wrapper-filter-store.ts +23 -0
  115. package/src/table-builder/directives/custom-cell-directive.ts +46 -0
  116. package/{table-builder/directives/index.d.ts → src/table-builder/directives/index.ts} +6 -5
  117. package/src/table-builder/directives/multi-sort.directive.spec.ts +124 -0
  118. package/src/table-builder/directives/multi-sort.directive.ts +49 -0
  119. package/src/table-builder/directives/resize-column.directive.ts +105 -0
  120. package/src/table-builder/directives/table-wrapper.directive.ts +14 -0
  121. package/src/table-builder/directives/tb-filter.directive.ts +370 -0
  122. package/src/table-builder/enums/filterTypes.ts +79 -0
  123. package/src/table-builder/functions/boolean-filter-function.ts +13 -0
  124. package/src/table-builder/functions/date-filter-function.ts +69 -0
  125. package/src/table-builder/functions/download-data.ts +11 -0
  126. package/src/table-builder/functions/null-filter-function.ts +9 -0
  127. package/src/table-builder/functions/number-filter-function.ts +42 -0
  128. package/src/table-builder/functions/sort-data-function.ts +23 -0
  129. package/src/table-builder/functions/string-filter-function.ts +52 -0
  130. package/{table-builder/interfaces/ColumnInfo.d.ts → src/table-builder/interfaces/ColumnInfo.ts} +3 -2
  131. package/src/table-builder/interfaces/column-template.ts +9 -0
  132. package/{table-builder/interfaces/dictionary.d.ts → src/table-builder/interfaces/dictionary.ts} +3 -3
  133. package/src/table-builder/interfaces/report-def.ts +153 -0
  134. package/src/table-builder/ngrx/tableBuilderStateStore.ts +143 -0
  135. package/src/table-builder/pipes/column-total.pipe.ts +17 -0
  136. package/src/table-builder/pipes/format-filter-type.pipe.ts +12 -0
  137. package/src/table-builder/pipes/format-filter-value.pipe.ts +41 -0
  138. package/src/table-builder/pipes/key-display.ts +16 -0
  139. package/src/table-builder/services/export-to-csv.service.ts +96 -0
  140. package/src/table-builder/services/link-creator.service.ts +68 -0
  141. package/src/table-builder/services/table-template-service.ts +55 -0
  142. package/src/table-builder/services/transform-creator.ts +92 -0
  143. package/src/table-builder/specs/table-custom-filters.spec.ts +262 -0
  144. package/src/table-builder/styles/collapser.styles.scss +15 -0
  145. package/src/table-builder/table-builder.module.ts +73 -0
  146. package/src/test.ts +17 -0
  147. package/src/utilities/array-helpers.ts +13 -0
  148. package/src/utilities/directives/auto-focus.directive.ts +20 -0
  149. package/src/utilities/directives/clickEmitterDirective.ts +16 -0
  150. package/src/utilities/directives/clickSubject.ts +20 -0
  151. package/src/utilities/directives/conditional-classes.directive.ts +36 -0
  152. package/src/utilities/directives/dialog-service.ts +19 -0
  153. package/src/utilities/directives/dialog.ts +142 -0
  154. package/src/utilities/directives/mat-toggle-group-directive.ts +61 -0
  155. package/src/utilities/directives/prevent-enter.directive.ts +13 -0
  156. package/src/utilities/directives/stop-propagation.directive.ts +20 -0
  157. package/src/utilities/directives/styler.ts +39 -0
  158. package/src/utilities/directives/trim-whitespace.directive.ts +21 -0
  159. package/{utilities/index.d.ts → src/utilities/index.ts} +22 -15
  160. package/src/utilities/module.ts +55 -0
  161. package/src/utilities/pipes/function.pipe.ts +16 -0
  162. package/src/utilities/pipes/phone.pipe.ts +15 -0
  163. package/src/utilities/pipes/space-case.pipes.spec.ts +47 -0
  164. package/src/utilities/pipes/space-case.pipes.ts +23 -0
  165. package/tsconfig.lib.json +19 -0
  166. package/tsconfig.lib.prod.json +10 -0
  167. package/tsconfig.spec.json +17 -0
  168. package/action-state/action-state-spinner/action-state-spinner.component.d.ts +0 -12
  169. package/action-state/action-state-ui/action-state-ui.module.d.ts +0 -7
  170. package/action-state/ngrx-ext/ngrx-ext.module.d.ts +0 -8
  171. package/action-state/ngrx.d.ts +0 -31
  172. package/esm2022/action-state/action-state-spinner/action-state-spinner.component.mjs +0 -24
  173. package/esm2022/action-state/action-state-ui/action-state-ui.module.mjs +0 -20
  174. package/esm2022/action-state/index.mjs +0 -8
  175. package/esm2022/action-state/ngrx-ext/ngrx-ext.module.mjs +0 -23
  176. package/esm2022/action-state/ngrx.mjs +0 -42
  177. package/esm2022/http-request-state/HttpRequestStateFactory.mjs +0 -27
  178. package/esm2022/http-request-state/HttpRequestStateStore.mjs +0 -98
  179. package/esm2022/http-request-state/directives/HttpStateDirectiveBase.mjs +0 -34
  180. package/esm2022/http-request-state/directives/http-error-state-directive.mjs +0 -29
  181. package/esm2022/http-request-state/directives/http-inProgress-state-directive.mjs +0 -29
  182. package/esm2022/http-request-state/directives/http-notStarted-state-directive.mjs +0 -29
  183. package/esm2022/http-request-state/directives/http-success-state-directive.mjs +0 -34
  184. package/esm2022/http-request-state/directives/index.mjs +0 -6
  185. package/esm2022/http-request-state/directives/request-state-directive.mjs +0 -60
  186. package/esm2022/http-request-state/helpers.mjs +0 -22
  187. package/esm2022/http-request-state/http-request-state.mjs +0 -39
  188. package/esm2022/http-request-state/http-state-module.mjs +0 -40
  189. package/esm2022/http-request-state/index.mjs +0 -7
  190. package/esm2022/http-request-state/rxjs/getRequestorBody.mjs +0 -4
  191. package/esm2022/http-request-state/rxjs/getRequestorState.mjs +0 -3
  192. package/esm2022/http-request-state/rxjs/index.mjs +0 -5
  193. package/esm2022/http-request-state/rxjs/tapError.mjs +0 -12
  194. package/esm2022/http-request-state/rxjs/tapSuccess.mjs +0 -12
  195. package/esm2022/http-request-state/types.mjs +0 -16
  196. package/esm2022/ngrx/actionable-selector.mjs +0 -73
  197. package/esm2022/ngrx/index.mjs +0 -2
  198. package/esm2022/one-paragon-angular-utilities.mjs +0 -5
  199. package/esm2022/public-api.mjs +0 -20
  200. package/esm2022/rxjs/defaultShareReplay.mjs +0 -7
  201. package/esm2022/rxjs/index.mjs +0 -5
  202. package/esm2022/rxjs/mapError.mjs +0 -8
  203. package/esm2022/rxjs/rxjs-operators.mjs +0 -92
  204. package/esm2022/rxjs/subjectifier.mjs +0 -15
  205. package/esm2022/table-builder/classes/DefaultSettings.mjs +0 -6
  206. package/esm2022/table-builder/classes/MatTableObservableDataSource.mjs +0 -21
  207. package/esm2022/table-builder/classes/TableBuilderConfig.mjs +0 -18
  208. package/esm2022/table-builder/classes/TableBuilderDataSource.mjs +0 -50
  209. package/esm2022/table-builder/classes/TableState.mjs +0 -42
  210. package/esm2022/table-builder/classes/display-col.mjs +0 -2
  211. package/esm2022/table-builder/classes/filter-info.mjs +0 -73
  212. package/esm2022/table-builder/classes/table-builder-general-settings.mjs +0 -68
  213. package/esm2022/table-builder/classes/table-builder.mjs +0 -82
  214. package/esm2022/table-builder/classes/table-store.mjs +0 -314
  215. package/esm2022/table-builder/components/array-column.component.mjs +0 -78
  216. package/esm2022/table-builder/components/column-builder/column-builder.component.mjs +0 -118
  217. package/esm2022/table-builder/components/date-filter/date-filter.component.mjs +0 -29
  218. package/esm2022/table-builder/components/date-time-filter/date-time-filter.component.mjs +0 -24
  219. package/esm2022/table-builder/components/filter/filter.component.mjs +0 -66
  220. package/esm2022/table-builder/components/filter/in-list/in-list-filter.component.mjs +0 -101
  221. package/esm2022/table-builder/components/gen-col-displayer/gen-col-displayer.component.mjs +0 -52
  222. package/esm2022/table-builder/components/generic-table/generic-table.component.mjs +0 -205
  223. package/esm2022/table-builder/components/generic-table/paginator.component.mjs +0 -79
  224. package/esm2022/table-builder/components/group-by-list/group-by-list.component.mjs +0 -23
  225. package/esm2022/table-builder/components/header-menu/header-menu.component.mjs +0 -101
  226. package/esm2022/table-builder/components/in-filter/in-filter.component.mjs +0 -64
  227. package/esm2022/table-builder/components/index.mjs +0 -10
  228. package/esm2022/table-builder/components/initialization-component/initialization-component.mjs +0 -36
  229. package/esm2022/table-builder/components/link-column.component.mjs +0 -73
  230. package/esm2022/table-builder/components/number-filter/number-filter.component.mjs +0 -29
  231. package/esm2022/table-builder/components/scroll-strategy.mjs +0 -63
  232. package/esm2022/table-builder/components/sort-menu/sort-menu.component-store.mjs +0 -43
  233. package/esm2022/table-builder/components/sort-menu/sort-menu.component.mjs +0 -81
  234. package/esm2022/table-builder/components/table-container/table-container-imports.mjs +0 -26
  235. package/esm2022/table-builder/components/table-container/table-container.helpers/data-state.helpers.mjs +0 -2
  236. package/esm2022/table-builder/components/table-container/table-container.helpers/filter-state.helpers.mjs +0 -62
  237. package/esm2022/table-builder/components/table-container/table-container.helpers/groupBy.helpers.mjs +0 -56
  238. package/esm2022/table-builder/components/table-container/table-container.helpers/sort-state.helpers.mjs +0 -36
  239. package/esm2022/table-builder/components/table-container/table-container.mjs +0 -337
  240. package/esm2022/table-builder/components/table-container/tableProps.mjs +0 -9
  241. package/esm2022/table-builder/components/table-container/virtual-scroll-container.mjs +0 -101
  242. package/esm2022/table-builder/components/table-container-filter/filter-list/filter-list.component.mjs +0 -47
  243. package/esm2022/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.mjs +0 -36
  244. package/esm2022/table-builder/components/table-container-filter/table-wrapper-filter-store.mjs +0 -25
  245. package/esm2022/table-builder/components/table-context.mjs +0 -2
  246. package/esm2022/table-builder/directives/custom-cell-directive.mjs +0 -60
  247. package/esm2022/table-builder/directives/index.mjs +0 -6
  248. package/esm2022/table-builder/directives/multi-sort.directive.mjs +0 -50
  249. package/esm2022/table-builder/directives/resize-column.directive.mjs +0 -87
  250. package/esm2022/table-builder/directives/table-wrapper.directive.mjs +0 -20
  251. package/esm2022/table-builder/directives/tb-filter.directive.mjs +0 -410
  252. package/esm2022/table-builder/enums/filterTypes.mjs +0 -72
  253. package/esm2022/table-builder/functions/boolean-filter-function.mjs +0 -10
  254. package/esm2022/table-builder/functions/date-filter-function.mjs +0 -58
  255. package/esm2022/table-builder/functions/download-data.mjs +0 -12
  256. package/esm2022/table-builder/functions/null-filter-function.mjs +0 -8
  257. package/esm2022/table-builder/functions/number-filter-function.mjs +0 -32
  258. package/esm2022/table-builder/functions/sort-data-function.mjs +0 -17
  259. package/esm2022/table-builder/functions/string-filter-function.mjs +0 -41
  260. package/esm2022/table-builder/interfaces/ColumnInfo.mjs +0 -2
  261. package/esm2022/table-builder/interfaces/dictionary.mjs +0 -2
  262. package/esm2022/table-builder/interfaces/report-def.mjs +0 -35
  263. package/esm2022/table-builder/ngrx/tableBuilderStateStore.mjs +0 -115
  264. package/esm2022/table-builder/pipes/column-total.pipe.mjs +0 -22
  265. package/esm2022/table-builder/pipes/format-filter-type.pipe.mjs +0 -18
  266. package/esm2022/table-builder/pipes/format-filter-value.pipe.mjs +0 -45
  267. package/esm2022/table-builder/pipes/key-display.mjs +0 -20
  268. package/esm2022/table-builder/services/export-to-csv.service.mjs +0 -88
  269. package/esm2022/table-builder/services/link-creator.service.mjs +0 -42
  270. package/esm2022/table-builder/services/table-template-service.mjs +0 -44
  271. package/esm2022/table-builder/services/transform-creator.mjs +0 -78
  272. package/esm2022/table-builder/table-builder.module.mjs +0 -124
  273. package/esm2022/utilities/array-helpers.mjs +0 -14
  274. package/esm2022/utilities/directives/auto-focus.directive.mjs +0 -27
  275. package/esm2022/utilities/directives/clickEmitterDirective.mjs +0 -22
  276. package/esm2022/utilities/directives/clickSubject.mjs +0 -28
  277. package/esm2022/utilities/directives/conditional-classes.directive.mjs +0 -36
  278. package/esm2022/utilities/directives/dialog-service.mjs +0 -23
  279. package/esm2022/utilities/directives/dialog.mjs +0 -138
  280. package/esm2022/utilities/directives/mat-toggle-group-directive.mjs +0 -60
  281. package/esm2022/utilities/directives/prevent-enter.directive.mjs +0 -20
  282. package/esm2022/utilities/directives/stop-propagation.directive.mjs +0 -26
  283. package/esm2022/utilities/directives/styler.mjs +0 -42
  284. package/esm2022/utilities/directives/trim-whitespace.directive.mjs +0 -30
  285. package/esm2022/utilities/index.mjs +0 -16
  286. package/esm2022/utilities/module.mjs +0 -90
  287. package/esm2022/utilities/pipes/function.pipe.mjs +0 -22
  288. package/esm2022/utilities/pipes/phone.pipe.mjs +0 -20
  289. package/esm2022/utilities/pipes/space-case.pipes.mjs +0 -28
  290. package/fesm2022/one-paragon-angular-utilities.mjs +0 -5045
  291. package/fesm2022/one-paragon-angular-utilities.mjs.map +0 -1
  292. package/http-request-state/HttpRequestStateFactory.d.ts +0 -15
  293. package/http-request-state/HttpRequestStateStore.d.ts +0 -49
  294. package/http-request-state/directives/HttpStateDirectiveBase.d.ts +0 -16
  295. package/http-request-state/directives/http-error-state-directive.d.ts +0 -12
  296. package/http-request-state/directives/http-inProgress-state-directive.d.ts +0 -12
  297. package/http-request-state/directives/http-notStarted-state-directive.d.ts +0 -12
  298. package/http-request-state/directives/http-success-state-directive.d.ts +0 -21
  299. package/http-request-state/directives/request-state-directive.d.ts +0 -35
  300. package/http-request-state/helpers.d.ts +0 -9
  301. package/http-request-state/http-request-state.d.ts +0 -12
  302. package/http-request-state/http-state-module.d.ts +0 -11
  303. package/http-request-state/rxjs/getRequestorBody.d.ts +0 -3
  304. package/http-request-state/rxjs/getRequestorState.d.ts +0 -3
  305. package/http-request-state/rxjs/tapError.d.ts +0 -3
  306. package/http-request-state/rxjs/tapSuccess.d.ts +0 -3
  307. package/http-request-state/types.d.ts +0 -36
  308. package/index.d.ts +0 -5
  309. package/ngrx/actionable-selector.d.ts +0 -17
  310. package/ngrx/index.d.ts +0 -1
  311. package/rxjs/defaultShareReplay.d.ts +0 -2
  312. package/rxjs/mapError.d.ts +0 -2
  313. package/rxjs/rxjs-operators.d.ts +0 -13
  314. package/rxjs/subjectifier.d.ts +0 -9
  315. package/table-builder/classes/DefaultSettings.d.ts +0 -9
  316. package/table-builder/classes/MatTableObservableDataSource.d.ts +0 -9
  317. package/table-builder/classes/TableBuilderConfig.d.ts +0 -21
  318. package/table-builder/classes/TableBuilderDataSource.d.ts +0 -13
  319. package/table-builder/classes/TableState.d.ts +0 -55
  320. package/table-builder/classes/filter-info.d.ts +0 -127
  321. package/table-builder/classes/table-builder-general-settings.d.ts +0 -43
  322. package/table-builder/classes/table-builder.d.ts +0 -14
  323. package/table-builder/classes/table-store.d.ts +0 -124
  324. package/table-builder/components/array-column.component.d.ts +0 -14
  325. package/table-builder/components/column-builder/column-builder.component.d.ts +0 -54
  326. package/table-builder/components/date-filter/date-filter.component.d.ts +0 -10
  327. package/table-builder/components/date-time-filter/date-time-filter.component.d.ts +0 -10
  328. package/table-builder/components/filter/filter.component.d.ts +0 -112
  329. package/table-builder/components/filter/in-list/in-list-filter.component.d.ts +0 -27
  330. package/table-builder/components/gen-col-displayer/gen-col-displayer.component.d.ts +0 -16
  331. package/table-builder/components/generic-table/generic-table.component.d.ts +0 -69
  332. package/table-builder/components/generic-table/paginator.component.d.ts +0 -27
  333. package/table-builder/components/group-by-list/group-by-list.component.d.ts +0 -7
  334. package/table-builder/components/header-menu/header-menu.component.d.ts +0 -25
  335. package/table-builder/components/in-filter/in-filter.component.d.ts +0 -21
  336. package/table-builder/components/initialization-component/initialization-component.d.ts +0 -12
  337. package/table-builder/components/link-column.component.d.ts +0 -17
  338. package/table-builder/components/number-filter/number-filter.component.d.ts +0 -12
  339. package/table-builder/components/scroll-strategy.d.ts +0 -23
  340. package/table-builder/components/sort-menu/sort-menu.component-store.d.ts +0 -24
  341. package/table-builder/components/sort-menu/sort-menu.component.d.ts +0 -25
  342. package/table-builder/components/table-container/table-container.d.ts +0 -75
  343. package/table-builder/components/table-container/table-container.helpers/data-state.helpers.d.ts +0 -5
  344. package/table-builder/components/table-container/table-container.helpers/filter-state.helpers.d.ts +0 -15
  345. package/table-builder/components/table-container/table-container.helpers/groupBy.helpers.d.ts +0 -15
  346. package/table-builder/components/table-container/table-container.helpers/sort-state.helpers.d.ts +0 -9
  347. package/table-builder/components/table-container/tableProps.d.ts +0 -11
  348. package/table-builder/components/table-container/virtual-scroll-container.d.ts +0 -17
  349. package/table-builder/components/table-container-filter/filter-list/filter-list.component.d.ts +0 -16
  350. package/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.d.ts +0 -14
  351. package/table-builder/components/table-container-filter/table-wrapper-filter-store.d.ts +0 -14
  352. package/table-builder/components/table-context.d.ts +0 -10
  353. package/table-builder/directives/custom-cell-directive.d.ts +0 -19
  354. package/table-builder/directives/multi-sort.directive.d.ts +0 -11
  355. package/table-builder/directives/resize-column.directive.d.ts +0 -43
  356. package/table-builder/directives/table-wrapper.directive.d.ts +0 -8
  357. package/table-builder/directives/tb-filter.directive.d.ts +0 -120
  358. package/table-builder/enums/filterTypes.d.ts +0 -77
  359. package/table-builder/functions/boolean-filter-function.d.ts +0 -3
  360. package/table-builder/functions/date-filter-function.d.ts +0 -4
  361. package/table-builder/functions/download-data.d.ts +0 -1
  362. package/table-builder/functions/null-filter-function.d.ts +0 -2
  363. package/table-builder/functions/number-filter-function.d.ts +0 -4
  364. package/table-builder/functions/sort-data-function.d.ts +0 -6
  365. package/table-builder/functions/string-filter-function.d.ts +0 -7
  366. package/table-builder/interfaces/report-def.d.ts +0 -147
  367. package/table-builder/ngrx/tableBuilderStateStore.d.ts +0 -62
  368. package/table-builder/pipes/column-total.pipe.d.ts +0 -8
  369. package/table-builder/pipes/format-filter-type.pipe.d.ts +0 -8
  370. package/table-builder/pipes/format-filter-value.pipe.d.ts +0 -14
  371. package/table-builder/pipes/key-display.d.ts +0 -11
  372. package/table-builder/services/export-to-csv.service.d.ts +0 -22
  373. package/table-builder/services/link-creator.service.d.ts +0 -12
  374. package/table-builder/services/table-template-service.d.ts +0 -14
  375. package/table-builder/services/transform-creator.d.ts +0 -19
  376. package/table-builder/table-builder.module.d.ts +0 -21
  377. package/utilities/array-helpers.d.ts +0 -1
  378. package/utilities/directives/auto-focus.directive.d.ts +0 -10
  379. package/utilities/directives/clickEmitterDirective.d.ts +0 -7
  380. package/utilities/directives/clickSubject.d.ts +0 -9
  381. package/utilities/directives/conditional-classes.directive.d.ts +0 -14
  382. package/utilities/directives/dialog-service.d.ts +0 -10
  383. package/utilities/directives/dialog.d.ts +0 -46
  384. package/utilities/directives/mat-toggle-group-directive.d.ts +0 -21
  385. package/utilities/directives/prevent-enter.directive.d.ts +0 -6
  386. package/utilities/directives/stop-propagation.directive.d.ts +0 -7
  387. package/utilities/directives/styler.d.ts +0 -16
  388. package/utilities/directives/trim-whitespace.directive.d.ts +0 -9
  389. package/utilities/module.d.ts +0 -19
  390. package/utilities/pipes/function.pipe.d.ts +0 -7
  391. package/utilities/pipes/phone.pipe.d.ts +0 -7
  392. package/utilities/pipes/space-case.pipes.d.ts +0 -17
  393. /package/{http-request-state/directives/index.d.ts → src/http-request-state/directives/index.ts} +0 -0
  394. /package/{http-request-state/rxjs/index.d.ts → src/http-request-state/rxjs/index.ts} +0 -0
  395. /package/{table-builder/classes/display-col.d.ts → src/table-builder/classes/display-col.ts} +0 -0
@@ -1,101 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, Input, ViewChild } from '@angular/core';
2
- import { FieldType } from '../../interfaces/report-def';
3
- import { FilterType } from '../../enums/filterTypes';
4
- import { MatMenuModule, MatMenuTrigger } from '@angular/material/menu';
5
- import { MatIconModule } from '@angular/material/icon';
6
- import { MatButtonModule } from '@angular/material/button';
7
- import { FormsModule } from '@angular/forms';
8
- import { NgClass } from '@angular/common';
9
- import { InListFilterComponent } from '../filter/in-list/in-list-filter.component';
10
- import { MatInputModule } from '@angular/material/input';
11
- import { MatTooltipModule } from '@angular/material/tooltip';
12
- import { StopPropagationDirective } from '../../../utilities';
13
- import { MatRadioModule } from '@angular/material/radio';
14
- import { MatDatepickerModule } from '@angular/material/datepicker';
15
- import * as i0 from "@angular/core";
16
- import * as i1 from "../../classes/table-store";
17
- import * as i2 from "@angular/material/menu";
18
- import * as i3 from "@angular/material/icon";
19
- import * as i4 from "@angular/material/button";
20
- import * as i5 from "@angular/forms";
21
- import * as i6 from "@angular/material/input";
22
- import * as i7 from "@angular/material/form-field";
23
- import * as i8 from "@angular/material/tooltip";
24
- import * as i9 from "@angular/material/radio";
25
- import * as i10 from "@angular/material/datepicker";
26
- export class HeaderMenuComponent {
27
- constructor(tableState) {
28
- this.tableState = tableState;
29
- this.FieldType = FieldType;
30
- this.FilterType = FilterType;
31
- }
32
- hideField(key) {
33
- this.tableState.hideColumn(key);
34
- }
35
- ngOnInit() {
36
- this.resetFilterType();
37
- }
38
- resetFilterType() {
39
- if (this.metaData.additional?.filterOptions?.filterableValues) {
40
- this.myFilterType = FilterType.In;
41
- return;
42
- }
43
- switch (this.metaData.fieldType) {
44
- case FieldType.String:
45
- case FieldType.Link:
46
- case FieldType.PhoneNumber:
47
- case FieldType.Array:
48
- case FieldType.Unknown:
49
- this.myFilterType = FilterType.StringContains;
50
- break;
51
- case FieldType.Currency:
52
- case FieldType.Number:
53
- this.myFilterType = FilterType.NumberEquals;
54
- break;
55
- case FieldType.Boolean:
56
- this.myFilterType = FilterType.BooleanEquals;
57
- break;
58
- case FieldType.Date:
59
- case FieldType.DateTime:
60
- this.myFilterType = FilterType.DateIsOn;
61
- break;
62
- case FieldType.Enum:
63
- this.myFilterType = FilterType.In;
64
- break;
65
- }
66
- }
67
- setStringFilterType() {
68
- this.myFilterType = this.myFilterType === FilterType.StringContains ? FilterType.StringDoesNotContain : FilterType.StringContains;
69
- }
70
- setFilterType(filterType) {
71
- if (filterType === this.myFilterType) {
72
- this.resetFilterType();
73
- }
74
- else {
75
- this.myFilterType = filterType;
76
- }
77
- }
78
- onEnter(filter) {
79
- if (filter.filterValue != undefined && filter.filterType) {
80
- this.tableState.addFilter(filter);
81
- this.trigger.closeMenu();
82
- }
83
- }
84
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: HeaderMenuComponent, deps: [{ token: i1.TableStore }], target: i0.ɵɵFactoryTarget.Component }); }
85
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.3", type: HeaderMenuComponent, isStandalone: true, selector: "tb-header-menu", inputs: { filter: "filter", metaData: "metaData" }, viewQueries: [{ propertyName: "trigger", first: true, predicate: MatMenuTrigger, descendants: true }], ngImport: i0, template: "<button mat-icon-button class=\"open-menu-icon-button\" disableRipple [matMenuTriggerFor]=\"menu\" [matMenuTriggerRestoreFocus]=\"false\">\r\n <mat-icon class=\"menu-icon\">more_vert</mat-icon>\r\n</button>\r\n<mat-menu #menu=\"matMenu\" >\r\n <button mat-menu-item (click)=\"tableState.addGroupByKey(metaData.key)\">\r\n <mat-icon color=\"primary\">group</mat-icon>\r\n <span>Group By</span>\r\n </button>\r\n <button mat-menu-item (click)=hideField(metaData.key)>\r\n <mat-icon color=\"primary\">visibility_off</mat-icon>\r\n <span>Hide Column</span>\r\n </button>\r\n <ng-form #myForm=\"ngForm\" (keydown.enter)=\"onEnter(myForm.value)\" class=\"tb-header-filter\">\r\n <input type=\"hidden\" name=\"filterId\" [ngModel]=\"'header-column-' + metaData.key\" />\r\n <input type=\"hidden\" name=\"filterType\" [ngModel]=\"myFilterType\" />\r\n <input type=\"hidden\" name=\"key\" [ngModel]=\"metaData.key\" />\r\n <input type=\"hidden\" name=\"fieldType\" [ngModel]=\"metaData.fieldType\" />\r\n \r\n @if(myFilterType === FilterType.Or || myFilterType === FilterType.In){\r\n <tb-in-list-filter name='filterValue' [key]='metaData.key' [(ngModel)]='myFilterValue'/>\r\n }\r\n @else if(metaData.fieldType === FieldType.Link || metaData.fieldType === FieldType.String || metaData.fieldType === FieldType.Array || metaData.fieldType === FieldType.Unknown || metaData.fieldType === FieldType.PhoneNumber) {\r\n <mat-form-field stop-propagation class=\"font auto-width\">\r\n <mat-icon matPrefix class=\"search-icon\">search</mat-icon>\r\n <mat-label>{{myFilterType === FilterType.StringDoesNotContain ? 'Does Not Contain...' : 'Contains...'}}</mat-label>\r\n <input matInput name=\"filterValue\" [ngModel]=\"filter.filterValue\" />\r\n <span matSuffix [matTooltip]=\"myFilterType === FilterType.StringDoesNotContain ? 'Contains' : 'Does Not Contain'\">\r\n <button mat-icon-button color=\"primary\" (click)=\"setStringFilterType()\" class=\"header-filter-icon-button\">\r\n <mat-icon [ngClass]=\"{'chosen-icon': myFilterType === FilterType.StringDoesNotContain }\">\r\n block\r\n </mat-icon>\r\n </button>\r\n </span>\r\n </mat-form-field>\r\n }\r\n @else if (metaData.fieldType === FieldType.Number || metaData.fieldType === FieldType.Currency) {\r\n <mat-form-field class=\"auto-width\" stop-propagation>\r\n <mat-label>{{myFilterType === FilterType.NumberEquals ? 'Equals...' : myFilterType === FilterType.NumberLessThan ? 'Less Than...' : 'More Than...'}}</mat-label>\r\n <input matInput type='number' name=\"filterValue\" [ngModel]=\"filter.filterValue\" />\r\n <span matPrefix class=\"tb-header-prefix\">\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.NumberLessThan)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberLessThan }\">\r\n <mat-icon class=\"suffix-icons\"\r\n >\r\n arrow_back_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.NumberGreaterThan)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberGreaterThan }\" >\r\n <mat-icon class=\"suffix-icons\">arrow_forward_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.NumberEquals)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberEquals }\">\r\n <span class=\"suffix-icons\">=</span>\r\n </button>\r\n </span>\r\n </mat-form-field>\r\n }\r\n @else if (metaData.fieldType === FieldType.Boolean) {\r\n <div>\r\n <label>\r\n <mat-icon class=\"search-icon\">filter_list</mat-icon>\r\n </label>\r\n <mat-radio-group stop-propagation #ctrl=\"matRadioGroup\" #boolField='ngModel' class=\"font\" name=\"filterValue\" [ngModel]=\"myFilterValue\" >\r\n <mat-radio-button class=\"filter-radio-button\" (click)=\"myFilterValue = true;\" [value]=\"true\">True</mat-radio-button><br/>\r\n <mat-radio-button class=\"filter-radio-button\" (click)=\"myFilterValue = false\" [value]=\"false\">False</mat-radio-button><br/>\r\n </mat-radio-group>\r\n </div>\r\n }\r\n @else if (metaData.fieldType === FieldType.Date || metaData.fieldType === FieldType.DateTime) {\r\n <mat-form-field class=\"font auto-width\" stop-propagation >\r\n <span matPrefix class=\"tb-header-prefix\">\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.DateOnOrAfter)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateOnOrAfter }\">\r\n <mat-icon class=\"suffix-icons underline\">arrow_forward_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.DateOnOrBefore)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateOnOrBefore }\">\r\n <mat-icon class=\"suffix-icons underline\">arrow_back_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.DateIsOn)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateIsOn }\">\r\n <span class=\"suffix-icons underline\"> =</span>\r\n </button>\r\n </span>\r\n <mat-label>{{myFilterType === FilterType.DateIsOn ? 'On...' :\r\n myFilterType === FilterType.DateOnOrBefore ? 'On or Before...' : 'On or After...'}}</mat-label>\r\n <input matInput name=\"filterValue\" [ngModel]=\"filter.filterValue\" [matDatepicker]=\"calendar\"\r\n (click)=\"calendar.open()\"/>\r\n <mat-datepicker-toggle class=\"date-toggle header-filter-icon-button\" matSuffix [for]=\"calendar\" preventEnter></mat-datepicker-toggle>\r\n <mat-datepicker #calendar></mat-datepicker>\r\n </mat-form-field>\r\n }\r\n\r\n <button mat-button (click)=\"onEnter(myForm.value)\" [disabled]=\"myForm.value.filterValue == undefined\" disableRipple>\r\n Apply\r\n </button>\r\n </ng-form>\r\n</mat-menu>\r\n", styles: ["input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.menu-icon{font-size:16px;line-height:16px;vertical-align:top;height:16px;width:16px}.search-icon{margin-right:16px;vertical-align:middle;height:24px;color:#0000008a;font-size:21px;line-height:1.125}.font{font-size:14px}.filter-radio-button:first-of-type{padding-left:0}.filter-radio-button{padding:10px 40px;min-width:110px}.auto-width{width:260px;margin:5px;display:block;height:55px}.open-menu-icon-button{height:28px;width:28px;padding:6px}.header-filter-icon-button{height:18px;width:18px;font-size:18px;padding:0;margin:0 2px}.header-filter-icon-button ::ng-deep *{line-height:initial;font-size:initial;height:18px;width:18px;font-size:18px;bottom:initial}.header-filter-icon-button.chosen-icon,.header-filter-icon-button.chosen-icon ::ng-deep *{height:22px;width:22px;font-size:22px;color:green}mat-icon.mat-icon.suffix-icons.underline{height:20px;-webkit-text-decoration:underline .1px solid;text-decoration:underline .1px solid}.chosen-icon mat-icon.mat-icon.suffix-icons.underline{height:24px}::ng-deep .mat-mdc-form-field-icon-prefix:has(.tb-header-prefix),.tb-header-prefix{padding:0;flex-basis:36%}.tb-header-filter ::ng-deep .mat-mdc-form-field-subscript-wrapper{line-height:0}.tb-header-filter ::ng-deep .mat-mdc-form-field-subscript-wrapper:before{height:0}.date-toggle ::ng-deep svg{position:absolute;left:0;top:0}\n"], dependencies: [{ kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i2.MatMenu, selector: "mat-menu", inputs: ["backdropClass", "aria-label", "aria-labelledby", "aria-describedby", "xPosition", "yPosition", "overlapTrigger", "hasBackdrop", "class", "classList"], outputs: ["closed", "close"], exportAs: ["matMenu"] }, { kind: "component", type: i2.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i2.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: InListFilterComponent, selector: "tb-in-list-filter , [tb-in-list-filter]", inputs: ["key"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i7.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i7.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: StopPropagationDirective, selector: "[stop-propagation]" }, { kind: "ngmodule", type: MatRadioModule }, { kind: "directive", type: i9.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i9.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex", "id", "name", "aria-label", "aria-labelledby", "aria-describedby", "checked", "value", "labelPosition", "disabled", "required", "color"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i10.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i10.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i10.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
86
- }
87
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: HeaderMenuComponent, decorators: [{
88
- type: Component,
89
- args: [{ selector: 'tb-header-menu', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
90
- MatMenuModule, MatIconModule, MatButtonModule, FormsModule, InListFilterComponent,
91
- MatInputModule, MatTooltipModule, NgClass, StopPropagationDirective, MatRadioModule, MatDatepickerModule
92
- ], template: "<button mat-icon-button class=\"open-menu-icon-button\" disableRipple [matMenuTriggerFor]=\"menu\" [matMenuTriggerRestoreFocus]=\"false\">\r\n <mat-icon class=\"menu-icon\">more_vert</mat-icon>\r\n</button>\r\n<mat-menu #menu=\"matMenu\" >\r\n <button mat-menu-item (click)=\"tableState.addGroupByKey(metaData.key)\">\r\n <mat-icon color=\"primary\">group</mat-icon>\r\n <span>Group By</span>\r\n </button>\r\n <button mat-menu-item (click)=hideField(metaData.key)>\r\n <mat-icon color=\"primary\">visibility_off</mat-icon>\r\n <span>Hide Column</span>\r\n </button>\r\n <ng-form #myForm=\"ngForm\" (keydown.enter)=\"onEnter(myForm.value)\" class=\"tb-header-filter\">\r\n <input type=\"hidden\" name=\"filterId\" [ngModel]=\"'header-column-' + metaData.key\" />\r\n <input type=\"hidden\" name=\"filterType\" [ngModel]=\"myFilterType\" />\r\n <input type=\"hidden\" name=\"key\" [ngModel]=\"metaData.key\" />\r\n <input type=\"hidden\" name=\"fieldType\" [ngModel]=\"metaData.fieldType\" />\r\n \r\n @if(myFilterType === FilterType.Or || myFilterType === FilterType.In){\r\n <tb-in-list-filter name='filterValue' [key]='metaData.key' [(ngModel)]='myFilterValue'/>\r\n }\r\n @else if(metaData.fieldType === FieldType.Link || metaData.fieldType === FieldType.String || metaData.fieldType === FieldType.Array || metaData.fieldType === FieldType.Unknown || metaData.fieldType === FieldType.PhoneNumber) {\r\n <mat-form-field stop-propagation class=\"font auto-width\">\r\n <mat-icon matPrefix class=\"search-icon\">search</mat-icon>\r\n <mat-label>{{myFilterType === FilterType.StringDoesNotContain ? 'Does Not Contain...' : 'Contains...'}}</mat-label>\r\n <input matInput name=\"filterValue\" [ngModel]=\"filter.filterValue\" />\r\n <span matSuffix [matTooltip]=\"myFilterType === FilterType.StringDoesNotContain ? 'Contains' : 'Does Not Contain'\">\r\n <button mat-icon-button color=\"primary\" (click)=\"setStringFilterType()\" class=\"header-filter-icon-button\">\r\n <mat-icon [ngClass]=\"{'chosen-icon': myFilterType === FilterType.StringDoesNotContain }\">\r\n block\r\n </mat-icon>\r\n </button>\r\n </span>\r\n </mat-form-field>\r\n }\r\n @else if (metaData.fieldType === FieldType.Number || metaData.fieldType === FieldType.Currency) {\r\n <mat-form-field class=\"auto-width\" stop-propagation>\r\n <mat-label>{{myFilterType === FilterType.NumberEquals ? 'Equals...' : myFilterType === FilterType.NumberLessThan ? 'Less Than...' : 'More Than...'}}</mat-label>\r\n <input matInput type='number' name=\"filterValue\" [ngModel]=\"filter.filterValue\" />\r\n <span matPrefix class=\"tb-header-prefix\">\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.NumberLessThan)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberLessThan }\">\r\n <mat-icon class=\"suffix-icons\"\r\n >\r\n arrow_back_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.NumberGreaterThan)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberGreaterThan }\" >\r\n <mat-icon class=\"suffix-icons\">arrow_forward_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.NumberEquals)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.NumberEquals }\">\r\n <span class=\"suffix-icons\">=</span>\r\n </button>\r\n </span>\r\n </mat-form-field>\r\n }\r\n @else if (metaData.fieldType === FieldType.Boolean) {\r\n <div>\r\n <label>\r\n <mat-icon class=\"search-icon\">filter_list</mat-icon>\r\n </label>\r\n <mat-radio-group stop-propagation #ctrl=\"matRadioGroup\" #boolField='ngModel' class=\"font\" name=\"filterValue\" [ngModel]=\"myFilterValue\" >\r\n <mat-radio-button class=\"filter-radio-button\" (click)=\"myFilterValue = true;\" [value]=\"true\">True</mat-radio-button><br/>\r\n <mat-radio-button class=\"filter-radio-button\" (click)=\"myFilterValue = false\" [value]=\"false\">False</mat-radio-button><br/>\r\n </mat-radio-group>\r\n </div>\r\n }\r\n @else if (metaData.fieldType === FieldType.Date || metaData.fieldType === FieldType.DateTime) {\r\n <mat-form-field class=\"font auto-width\" stop-propagation >\r\n <span matPrefix class=\"tb-header-prefix\">\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.DateOnOrAfter)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateOnOrAfter }\">\r\n <mat-icon class=\"suffix-icons underline\">arrow_forward_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.DateOnOrBefore)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateOnOrBefore }\">\r\n <mat-icon class=\"suffix-icons underline\">arrow_back_ios</mat-icon>\r\n </button>\r\n <button mat-icon-button disableRipple class=\"header-filter-icon-button\" (click)=\"setFilterType(FilterType.DateIsOn)\"\r\n [ngClass]=\"{'chosen-icon': myFilterType === FilterType.DateIsOn }\">\r\n <span class=\"suffix-icons underline\"> =</span>\r\n </button>\r\n </span>\r\n <mat-label>{{myFilterType === FilterType.DateIsOn ? 'On...' :\r\n myFilterType === FilterType.DateOnOrBefore ? 'On or Before...' : 'On or After...'}}</mat-label>\r\n <input matInput name=\"filterValue\" [ngModel]=\"filter.filterValue\" [matDatepicker]=\"calendar\"\r\n (click)=\"calendar.open()\"/>\r\n <mat-datepicker-toggle class=\"date-toggle header-filter-icon-button\" matSuffix [for]=\"calendar\" preventEnter></mat-datepicker-toggle>\r\n <mat-datepicker #calendar></mat-datepicker>\r\n </mat-form-field>\r\n }\r\n\r\n <button mat-button (click)=\"onEnter(myForm.value)\" [disabled]=\"myForm.value.filterValue == undefined\" disableRipple>\r\n Apply\r\n </button>\r\n </ng-form>\r\n</mat-menu>\r\n", styles: ["input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.menu-icon{font-size:16px;line-height:16px;vertical-align:top;height:16px;width:16px}.search-icon{margin-right:16px;vertical-align:middle;height:24px;color:#0000008a;font-size:21px;line-height:1.125}.font{font-size:14px}.filter-radio-button:first-of-type{padding-left:0}.filter-radio-button{padding:10px 40px;min-width:110px}.auto-width{width:260px;margin:5px;display:block;height:55px}.open-menu-icon-button{height:28px;width:28px;padding:6px}.header-filter-icon-button{height:18px;width:18px;font-size:18px;padding:0;margin:0 2px}.header-filter-icon-button ::ng-deep *{line-height:initial;font-size:initial;height:18px;width:18px;font-size:18px;bottom:initial}.header-filter-icon-button.chosen-icon,.header-filter-icon-button.chosen-icon ::ng-deep *{height:22px;width:22px;font-size:22px;color:green}mat-icon.mat-icon.suffix-icons.underline{height:20px;-webkit-text-decoration:underline .1px solid;text-decoration:underline .1px solid}.chosen-icon mat-icon.mat-icon.suffix-icons.underline{height:24px}::ng-deep .mat-mdc-form-field-icon-prefix:has(.tb-header-prefix),.tb-header-prefix{padding:0;flex-basis:36%}.tb-header-filter ::ng-deep .mat-mdc-form-field-subscript-wrapper{line-height:0}.tb-header-filter ::ng-deep .mat-mdc-form-field-subscript-wrapper:before{height:0}.date-toggle ::ng-deep svg{position:absolute;left:0;top:0}\n"] }]
93
- }], ctorParameters: () => [{ type: i1.TableStore }], propDecorators: { filter: [{
94
- type: Input
95
- }], metaData: [{
96
- type: Input
97
- }], trigger: [{
98
- type: ViewChild,
99
- args: [MatMenuTrigger]
100
- }] } });
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy9oZWFkZXItbWVudS9oZWFkZXItbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL2hlYWRlci1tZW51L2hlYWRlci1tZW51LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRixPQUFPLEVBQUUsU0FBUyxFQUFZLE1BQU0sNkJBQTZCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7Ozs7Ozs7OztBQWFuRSxNQUFNLE9BQU8sbUJBQW1CO0lBVTlCLFlBQW9CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFUMUMsY0FBUyxHQUFHLFNBQVMsQ0FBQztRQUN0QixlQUFVLEdBQUcsVUFBVSxDQUFDO0lBUXFCLENBQUM7SUFFOUMsU0FBUyxDQUFDLEdBQVc7UUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsRUFBRTtZQUM1RCxJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDbEMsT0FBTztTQUNSO1FBQ0QsUUFBUSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRTtZQUMvQixLQUFLLFNBQVMsQ0FBQyxNQUFNLENBQUM7WUFDdEIsS0FBSyxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQ3BCLEtBQUssU0FBUyxDQUFDLFdBQVcsQ0FBQztZQUMzQixLQUFLLFNBQVMsQ0FBQyxLQUFLLENBQUM7WUFDckIsS0FBSyxTQUFTLENBQUMsT0FBTztnQkFDcEIsSUFBSSxDQUFDLFlBQVksR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDO2dCQUM5QyxNQUFNO1lBQ1IsS0FBSyxTQUFTLENBQUMsUUFBUSxDQUFDO1lBQ3hCLEtBQUssU0FBUyxDQUFDLE1BQU07Z0JBQ25CLElBQUksQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQztnQkFDNUMsTUFBTTtZQUNSLEtBQUssU0FBUyxDQUFDLE9BQU87Z0JBQ2xCLElBQUksQ0FBQyxZQUFZLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQztnQkFDN0MsTUFBTTtZQUNWLEtBQUssU0FBUyxDQUFDLElBQUksQ0FBQztZQUNwQixLQUFLLFNBQVMsQ0FBQyxRQUFRO2dCQUNuQixJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUM7Z0JBQ3hDLE1BQU07WUFDVixLQUFLLFNBQVMsQ0FBQyxJQUFJO2dCQUNqQixJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUM7Z0JBQ2xDLE1BQU07U0FDVDtJQUNILENBQUM7SUFFRCxtQkFBbUI7UUFDakIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxLQUFLLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQztJQUNwSSxDQUFDO0lBRUQsYUFBYSxDQUFDLFVBQXNCO1FBQ2xDLElBQUksVUFBVSxLQUFLLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDcEMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ3hCO2FBQU07WUFDTCxJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQztTQUNoQztJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsTUFBa0I7UUFDeEIsSUFBSSxNQUFNLENBQUMsV0FBVyxJQUFJLFNBQVMsSUFBSSxNQUFNLENBQUMsVUFBVSxFQUFFO1lBQ3hELElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDMUI7SUFDSCxDQUFDOzhHQW5FVSxtQkFBbUI7a0dBQW5CLG1CQUFtQix1S0FTbkIsY0FBYyxnRENyQzNCLG00TUFrR0EsMitDRDFFSSxhQUFhLDZ2QkFBRSxhQUFhLG1MQUFFLGVBQWUsd1VBQUUsV0FBVyxxOEJBQUUscUJBQXFCLG9HQUNqRixjQUFjLHczQkFBRSxnQkFBZ0IsNlRBQUUsT0FBTyxvRkFBRSx3QkFBd0IsOERBQUUsY0FBYyxzaUJBQUUsbUJBQW1COzsyRkFHL0YsbUJBQW1CO2tCQVgvQixTQUFTOytCQUNFLGdCQUFnQixtQkFHVCx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxhQUFhLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUscUJBQXFCO3dCQUNqRixjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLGNBQWMsRUFBRSxtQkFBbUI7cUJBQ3pHOytFQVFRLE1BQU07c0JBQWQsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNxQixPQUFPO3NCQUFqQyxTQUFTO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZpZWxkVHlwZSwgTWV0YURhdGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3JlcG9ydC1kZWYnO1xyXG5pbXBvcnQgeyBGaWx0ZXJUeXBlIH0gZnJvbSAnLi4vLi4vZW51bXMvZmlsdGVyVHlwZXMnO1xyXG5pbXBvcnQgeyBGaWx0ZXJJbmZvIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9maWx0ZXItaW5mbyc7XHJcbmltcG9ydCB7IFRhYmxlU3RvcmUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3RhYmxlLXN0b3JlJztcclxuaW1wb3J0IHsgTWF0TWVudU1vZHVsZSwgTWF0TWVudVRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEluTGlzdEZpbHRlckNvbXBvbmVudCB9IGZyb20gJy4uL2ZpbHRlci9pbi1saXN0L2luLWxpc3QtZmlsdGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7IFN0b3BQcm9wYWdhdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxpdGllcyc7XHJcbmltcG9ydCB7IE1hdFJhZGlvTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW8nO1xyXG5pbXBvcnQgeyBNYXREYXRlcGlja2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3RiLWhlYWRlci1tZW51JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaGVhZGVyLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2hlYWRlci1tZW51LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBNYXRNZW51TW9kdWxlLCBNYXRJY29uTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBJbkxpc3RGaWx0ZXJDb21wb25lbnQsXHJcbiAgICBNYXRJbnB1dE1vZHVsZSwgTWF0VG9vbHRpcE1vZHVsZSwgTmdDbGFzcywgU3RvcFByb3BhZ2F0aW9uRGlyZWN0aXZlLCBNYXRSYWRpb01vZHVsZSwgTWF0RGF0ZXBpY2tlck1vZHVsZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEhlYWRlck1lbnVDb21wb25lbnQge1xyXG4gIEZpZWxkVHlwZSA9IEZpZWxkVHlwZTtcclxuICBGaWx0ZXJUeXBlID0gRmlsdGVyVHlwZTtcclxuICBteUZpbHRlclR5cGUhOiBGaWx0ZXJUeXBlO1xyXG4gIG15RmlsdGVyVmFsdWU6IGFueTtcclxuXHJcbiAgQElucHV0KCkgZmlsdGVyITogUGFydGlhbDxGaWx0ZXJJbmZvPjtcclxuXHJcbiAgQElucHV0KCkgbWV0YURhdGEhOiBNZXRhRGF0YTtcclxuICBAVmlld0NoaWxkKE1hdE1lbnVUcmlnZ2VyKSB0cmlnZ2VyITogTWF0TWVudVRyaWdnZXI7XHJcbiAgY29uc3RydWN0b3IoIHB1YmxpYyB0YWJsZVN0YXRlOiBUYWJsZVN0b3JlKSB7fVxyXG5cclxuICBoaWRlRmllbGQoa2V5OiBzdHJpbmcpIHtcclxuICAgIHRoaXMudGFibGVTdGF0ZS5oaWRlQ29sdW1uKGtleSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMucmVzZXRGaWx0ZXJUeXBlKCk7XHJcbiAgfVxyXG5cclxuICByZXNldEZpbHRlclR5cGUoKSB7XHJcbiAgICBpZih0aGlzLm1ldGFEYXRhLmFkZGl0aW9uYWw/LmZpbHRlck9wdGlvbnM/LmZpbHRlcmFibGVWYWx1ZXMpIHtcclxuICAgICAgdGhpcy5teUZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLkluO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBzd2l0Y2ggKHRoaXMubWV0YURhdGEuZmllbGRUeXBlKSB7XHJcbiAgICAgIGNhc2UgRmllbGRUeXBlLlN0cmluZzpcclxuICAgICAgY2FzZSBGaWVsZFR5cGUuTGluazpcclxuICAgICAgY2FzZSBGaWVsZFR5cGUuUGhvbmVOdW1iZXI6XHJcbiAgICAgIGNhc2UgRmllbGRUeXBlLkFycmF5OlxyXG4gICAgICBjYXNlIEZpZWxkVHlwZS5Vbmtub3duOlxyXG4gICAgICAgIHRoaXMubXlGaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5TdHJpbmdDb250YWlucztcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBGaWVsZFR5cGUuQ3VycmVuY3k6XHJcbiAgICAgIGNhc2UgRmllbGRUeXBlLk51bWJlcjpcclxuICAgICAgICB0aGlzLm15RmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuTnVtYmVyRXF1YWxzO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIEZpZWxkVHlwZS5Cb29sZWFuOlxyXG4gICAgICAgICAgdGhpcy5teUZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLkJvb2xlYW5FcXVhbHM7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBGaWVsZFR5cGUuRGF0ZTpcclxuICAgICAgY2FzZSBGaWVsZFR5cGUuRGF0ZVRpbWU6XHJcbiAgICAgICAgICB0aGlzLm15RmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuRGF0ZUlzT247XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBGaWVsZFR5cGUuRW51bTpcclxuICAgICAgICB0aGlzLm15RmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuSW47XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRTdHJpbmdGaWx0ZXJUeXBlKCkge1xyXG4gICAgdGhpcy5teUZpbHRlclR5cGUgPSB0aGlzLm15RmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZS5TdHJpbmdDb250YWlucyA/IEZpbHRlclR5cGUuU3RyaW5nRG9lc05vdENvbnRhaW4gOiBGaWx0ZXJUeXBlLlN0cmluZ0NvbnRhaW5zO1xyXG4gIH1cclxuXHJcbiAgc2V0RmlsdGVyVHlwZShmaWx0ZXJUeXBlOiBGaWx0ZXJUeXBlKSB7XHJcbiAgICBpZiAoZmlsdGVyVHlwZSA9PT0gdGhpcy5teUZpbHRlclR5cGUpIHtcclxuICAgICAgdGhpcy5yZXNldEZpbHRlclR5cGUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubXlGaWx0ZXJUeXBlID0gZmlsdGVyVHlwZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRW50ZXIoZmlsdGVyOiBGaWx0ZXJJbmZvKSB7XHJcbiAgICBpZiAoZmlsdGVyLmZpbHRlclZhbHVlICE9IHVuZGVmaW5lZCAmJiBmaWx0ZXIuZmlsdGVyVHlwZSkge1xyXG4gICAgICB0aGlzLnRhYmxlU3RhdGUuYWRkRmlsdGVyKGZpbHRlcik7XHJcbiAgICAgIHRoaXMudHJpZ2dlci5jbG9zZU1lbnUoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gY2xhc3M9XCJvcGVuLW1lbnUtaWNvbi1idXR0b25cIiBkaXNhYmxlUmlwcGxlIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCIgW21hdE1lbnVUcmlnZ2VyUmVzdG9yZUZvY3VzXT1cImZhbHNlXCI+XHJcbiAgPG1hdC1pY29uIGNsYXNzPVwibWVudS1pY29uXCI+bW9yZV92ZXJ0PC9tYXQtaWNvbj5cclxuPC9idXR0b24+XHJcbjxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIiA+XHJcbiAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJ0YWJsZVN0YXRlLmFkZEdyb3VwQnlLZXkobWV0YURhdGEua2V5KVwiPlxyXG4gICAgPG1hdC1pY29uIGNvbG9yPVwicHJpbWFyeVwiPmdyb3VwPC9tYXQtaWNvbj5cclxuICAgIDxzcGFuPkdyb3VwIEJ5PC9zcGFuPlxyXG4gIDwvYnV0dG9uPlxyXG4gIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPWhpZGVGaWVsZChtZXRhRGF0YS5rZXkpPlxyXG4gICAgPG1hdC1pY29uIGNvbG9yPVwicHJpbWFyeVwiPnZpc2liaWxpdHlfb2ZmPC9tYXQtaWNvbj5cclxuICAgIDxzcGFuPkhpZGUgQ29sdW1uPC9zcGFuPlxyXG4gIDwvYnV0dG9uPlxyXG4gIDxuZy1mb3JtICNteUZvcm09XCJuZ0Zvcm1cIiAoa2V5ZG93bi5lbnRlcik9XCJvbkVudGVyKG15Rm9ybS52YWx1ZSlcIiBjbGFzcz1cInRiLWhlYWRlci1maWx0ZXJcIj5cclxuICAgIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cImZpbHRlcklkXCIgIFtuZ01vZGVsXT1cIidoZWFkZXItY29sdW1uLScgKyBtZXRhRGF0YS5rZXlcIiAvPlxyXG4gICAgPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwiZmlsdGVyVHlwZVwiICBbbmdNb2RlbF09XCJteUZpbHRlclR5cGVcIiAvPlxyXG4gICAgPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBuYW1lPVwia2V5XCIgIFtuZ01vZGVsXT1cIm1ldGFEYXRhLmtleVwiIC8+XHJcbiAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIG5hbWU9XCJmaWVsZFR5cGVcIiAgW25nTW9kZWxdPVwibWV0YURhdGEuZmllbGRUeXBlXCIgLz5cclxuICAgIFxyXG4gICAgQGlmKG15RmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZS5PciB8fCBteUZpbHRlclR5cGUgPT09IEZpbHRlclR5cGUuSW4pe1xyXG4gICAgICA8dGItaW4tbGlzdC1maWx0ZXIgbmFtZT0nZmlsdGVyVmFsdWUnIFtrZXldPSdtZXRhRGF0YS5rZXknIFsobmdNb2RlbCldPSdteUZpbHRlclZhbHVlJy8+XHJcbiAgICB9XHJcbiAgICBAZWxzZSBpZihtZXRhRGF0YS5maWVsZFR5cGUgPT09IEZpZWxkVHlwZS5MaW5rIHx8IG1ldGFEYXRhLmZpZWxkVHlwZSA9PT0gRmllbGRUeXBlLlN0cmluZyB8fCBtZXRhRGF0YS5maWVsZFR5cGUgPT09IEZpZWxkVHlwZS5BcnJheSB8fCBtZXRhRGF0YS5maWVsZFR5cGUgPT09IEZpZWxkVHlwZS5Vbmtub3duIHx8IG1ldGFEYXRhLmZpZWxkVHlwZSA9PT0gRmllbGRUeXBlLlBob25lTnVtYmVyKSB7XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZCBzdG9wLXByb3BhZ2F0aW9uIGNsYXNzPVwiZm9udCBhdXRvLXdpZHRoXCI+XHJcbiAgICAgICAgPG1hdC1pY29uIG1hdFByZWZpeCBjbGFzcz1cInNlYXJjaC1pY29uXCI+c2VhcmNoPC9tYXQtaWNvbj5cclxuICAgICAgICA8bWF0LWxhYmVsPnt7bXlGaWx0ZXJUeXBlID09PSBGaWx0ZXJUeXBlLlN0cmluZ0RvZXNOb3RDb250YWluID8gJ0RvZXMgTm90IENvbnRhaW4uLi4nIDogJ0NvbnRhaW5zLi4uJ319PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGlucHV0IG1hdElucHV0IG5hbWU9XCJmaWx0ZXJWYWx1ZVwiIFtuZ01vZGVsXT1cImZpbHRlci5maWx0ZXJWYWx1ZVwiIC8+XHJcbiAgICAgICAgPHNwYW4gbWF0U3VmZml4IFttYXRUb29sdGlwXT1cIm15RmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZS5TdHJpbmdEb2VzTm90Q29udGFpbiA/ICdDb250YWlucycgOiAnRG9lcyBOb3QgQ29udGFpbidcIj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJzZXRTdHJpbmdGaWx0ZXJUeXBlKClcIiBjbGFzcz1cImhlYWRlci1maWx0ZXItaWNvbi1idXR0b25cIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIFtuZ0NsYXNzXT1cInsnY2hvc2VuLWljb24nOiBteUZpbHRlclR5cGUgPT09IEZpbHRlclR5cGUuU3RyaW5nRG9lc05vdENvbnRhaW4gfVwiPlxyXG4gICAgICAgICAgICAgIGJsb2NrXHJcbiAgICAgICAgICAgIDwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICB9XHJcbiAgICBAZWxzZSBpZiAobWV0YURhdGEuZmllbGRUeXBlID09PSBGaWVsZFR5cGUuTnVtYmVyIHx8IG1ldGFEYXRhLmZpZWxkVHlwZSA9PT0gRmllbGRUeXBlLkN1cnJlbmN5KSB7XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImF1dG8td2lkdGhcIiBzdG9wLXByb3BhZ2F0aW9uPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+e3tteUZpbHRlclR5cGUgPT09IEZpbHRlclR5cGUuTnVtYmVyRXF1YWxzID8gJ0VxdWFscy4uLicgOiBteUZpbHRlclR5cGUgPT09IEZpbHRlclR5cGUuTnVtYmVyTGVzc1RoYW4gPyAnTGVzcyBUaGFuLi4uJyA6ICdNb3JlIFRoYW4uLi4nfX08L21hdC1sYWJlbD5cclxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT0nbnVtYmVyJyAgbmFtZT1cImZpbHRlclZhbHVlXCIgW25nTW9kZWxdPVwiZmlsdGVyLmZpbHRlclZhbHVlXCIgLz5cclxuICAgICAgICA8c3BhbiBtYXRQcmVmaXggY2xhc3M9XCJ0Yi1oZWFkZXItcHJlZml4XCI+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBkaXNhYmxlUmlwcGxlIGNsYXNzPVwiaGVhZGVyLWZpbHRlci1pY29uLWJ1dHRvblwiIChjbGljayk9XCJzZXRGaWx0ZXJUeXBlKEZpbHRlclR5cGUuTnVtYmVyTGVzc1RoYW4pXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsnY2hvc2VuLWljb24nOiBteUZpbHRlclR5cGUgPT09IEZpbHRlclR5cGUuTnVtYmVyTGVzc1RoYW4gfVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gIGNsYXNzPVwic3VmZml4LWljb25zXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgYXJyb3dfYmFja19pb3M8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBkaXNhYmxlUmlwcGxlIGNsYXNzPVwiaGVhZGVyLWZpbHRlci1pY29uLWJ1dHRvblwiIChjbGljayk9XCJzZXRGaWx0ZXJUeXBlKEZpbHRlclR5cGUuTnVtYmVyR3JlYXRlclRoYW4pXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsnY2hvc2VuLWljb24nOiBteUZpbHRlclR5cGUgPT09IEZpbHRlclR5cGUuTnVtYmVyR3JlYXRlclRoYW4gfVwiID5cclxuICAgICAgICAgICAgPG1hdC1pY29uICBjbGFzcz1cInN1ZmZpeC1pY29uc1wiPmFycm93X2ZvcndhcmRfaW9zPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gZGlzYWJsZVJpcHBsZSBjbGFzcz1cImhlYWRlci1maWx0ZXItaWNvbi1idXR0b25cIiAoY2xpY2spPVwic2V0RmlsdGVyVHlwZShGaWx0ZXJUeXBlLk51bWJlckVxdWFscylcIlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwieydjaG9zZW4taWNvbic6IG15RmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZS5OdW1iZXJFcXVhbHMgfVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN1ZmZpeC1pY29uc1wiPj08L3NwYW4+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICB9XHJcbiAgICBAZWxzZSBpZiAobWV0YURhdGEuZmllbGRUeXBlID09PSBGaWVsZFR5cGUuQm9vbGVhbikge1xyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxsYWJlbD5cclxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInNlYXJjaC1pY29uXCI+ZmlsdGVyX2xpc3Q8L21hdC1pY29uPlxyXG4gICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgPG1hdC1yYWRpby1ncm91cCBzdG9wLXByb3BhZ2F0aW9uICNjdHJsPVwibWF0UmFkaW9Hcm91cFwiICNib29sRmllbGQ9J25nTW9kZWwnIGNsYXNzPVwiZm9udFwiIG5hbWU9XCJmaWx0ZXJWYWx1ZVwiIFtuZ01vZGVsXT1cIm15RmlsdGVyVmFsdWVcIiA+XHJcbiAgICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvbiBjbGFzcz1cImZpbHRlci1yYWRpby1idXR0b25cIiAoY2xpY2spPVwibXlGaWx0ZXJWYWx1ZSA9IHRydWU7XCIgW3ZhbHVlXT1cInRydWVcIj5UcnVlPC9tYXQtcmFkaW8tYnV0dG9uPjxici8+XHJcbiAgICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvbiBjbGFzcz1cImZpbHRlci1yYWRpby1idXR0b25cIiAoY2xpY2spPVwibXlGaWx0ZXJWYWx1ZSA9IGZhbHNlXCIgW3ZhbHVlXT1cImZhbHNlXCI+RmFsc2U8L21hdC1yYWRpby1idXR0b24+PGJyLz5cclxuICAgICAgICA8L21hdC1yYWRpby1ncm91cD5cclxuICAgICAgPC9kaXY+XHJcbiAgICB9XHJcbiAgICBAZWxzZSBpZiAobWV0YURhdGEuZmllbGRUeXBlID09PSBGaWVsZFR5cGUuRGF0ZSB8fCBtZXRhRGF0YS5maWVsZFR5cGUgPT09IEZpZWxkVHlwZS5EYXRlVGltZSkge1xyXG4gICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJmb250IGF1dG8td2lkdGhcIiBzdG9wLXByb3BhZ2F0aW9uID5cclxuICAgICAgICA8c3BhbiBtYXRQcmVmaXggY2xhc3M9XCJ0Yi1oZWFkZXItcHJlZml4XCI+XHJcbiAgICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBkaXNhYmxlUmlwcGxlIGNsYXNzPVwiaGVhZGVyLWZpbHRlci1pY29uLWJ1dHRvblwiIChjbGljayk9XCJzZXRGaWx0ZXJUeXBlKEZpbHRlclR5cGUuRGF0ZU9uT3JBZnRlcilcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7J2Nob3Nlbi1pY29uJzogbXlGaWx0ZXJUeXBlID09PSBGaWx0ZXJUeXBlLkRhdGVPbk9yQWZ0ZXIgfVwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gIGNsYXNzPVwic3VmZml4LWljb25zIHVuZGVybGluZVwiPmFycm93X2ZvcndhcmRfaW9zPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gZGlzYWJsZVJpcHBsZSBjbGFzcz1cImhlYWRlci1maWx0ZXItaWNvbi1idXR0b25cIiAoY2xpY2spPVwic2V0RmlsdGVyVHlwZShGaWx0ZXJUeXBlLkRhdGVPbk9yQmVmb3JlKVwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnY2hvc2VuLWljb24nOiBteUZpbHRlclR5cGUgPT09IEZpbHRlclR5cGUuRGF0ZU9uT3JCZWZvcmUgIH1cIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uICBjbGFzcz1cInN1ZmZpeC1pY29ucyB1bmRlcmxpbmVcIj5hcnJvd19iYWNrX2lvczwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGRpc2FibGVSaXBwbGUgY2xhc3M9XCJoZWFkZXItZmlsdGVyLWljb24tYnV0dG9uXCIgKGNsaWNrKT1cInNldEZpbHRlclR5cGUoRmlsdGVyVHlwZS5EYXRlSXNPbilcIlxyXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7J2Nob3Nlbi1pY29uJzogbXlGaWx0ZXJUeXBlID09PSBGaWx0ZXJUeXBlLkRhdGVJc09uIH1cIj5cclxuICAgICAgICAgICAgPHNwYW4gIGNsYXNzPVwic3VmZml4LWljb25zIHVuZGVybGluZVwiPiA9PC9zcGFuPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+e3tteUZpbHRlclR5cGUgPT09IEZpbHRlclR5cGUuRGF0ZUlzT24gPyAnT24uLi4nIDpcclxuICAgICAgICAgIG15RmlsdGVyVHlwZSA9PT0gRmlsdGVyVHlwZS5EYXRlT25PckJlZm9yZSA/ICdPbiBvciBCZWZvcmUuLi4nIDogJ09uIG9yIEFmdGVyLi4uJ319PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGlucHV0IG1hdElucHV0IG5hbWU9XCJmaWx0ZXJWYWx1ZVwiIFtuZ01vZGVsXT1cImZpbHRlci5maWx0ZXJWYWx1ZVwiIFttYXREYXRlcGlja2VyXT1cImNhbGVuZGFyXCJcclxuICAgICAgICAgIChjbGljayk9XCJjYWxlbmRhci5vcGVuKClcIi8+XHJcbiAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBjbGFzcz1cImRhdGUtdG9nZ2xlIGhlYWRlci1maWx0ZXItaWNvbi1idXR0b25cIiBtYXRTdWZmaXggW2Zvcl09XCJjYWxlbmRhclwiIHByZXZlbnRFbnRlcj48L21hdC1kYXRlcGlja2VyLXRvZ2dsZT5cclxuICAgICAgICA8bWF0LWRhdGVwaWNrZXIgI2NhbGVuZGFyPjwvbWF0LWRhdGVwaWNrZXI+XHJcbiAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICB9XHJcblxyXG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJvbkVudGVyKG15Rm9ybS52YWx1ZSlcIiBbZGlzYWJsZWRdPVwibXlGb3JtLnZhbHVlLmZpbHRlclZhbHVlID09IHVuZGVmaW5lZFwiIGRpc2FibGVSaXBwbGU+XHJcbiAgICAgIEFwcGx5XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L25nLWZvcm0+XHJcbjwvbWF0LW1lbnU+XHJcbiJdfQ==
@@ -1,64 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
- import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
3
- import { FieldType } from '../../interfaces/report-def';
4
- import { AutoFocusDirective } from '../../../utilities';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/forms";
7
- export class InFilterComponent {
8
- constructor(ref) {
9
- this.ref = ref;
10
- this.FieldType = FieldType;
11
- this.value = [undefined];
12
- this.onChange = (_) => { };
13
- this.onTouched = () => { };
14
- this.value = [undefined];
15
- }
16
- writeValue(obj) {
17
- if (!obj?.length)
18
- obj = [undefined];
19
- this.value = obj;
20
- this.ref.markForCheck();
21
- }
22
- registerOnChange(fn) {
23
- this.onChange = fn;
24
- }
25
- registerOnTouched(fn) {
26
- this.onTouched = fn;
27
- }
28
- addInput() {
29
- this.value = [...this.value, undefined];
30
- this.ref.markForCheck();
31
- this.onChange(this.value);
32
- }
33
- removeInput(index) {
34
- this.value = [...this.value];
35
- this.value.splice(index, 1);
36
- this.ref.markForCheck();
37
- this.onChange(this.value);
38
- }
39
- onValueChange(i, value) {
40
- this.value = [...this.value];
41
- this.value[i] = value;
42
- this.ref.markForCheck();
43
- this.onChange(this.value);
44
- }
45
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: InFilterComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
46
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.3", type: InFilterComponent, isStandalone: true, selector: "lib-in-filter", inputs: { type: "type" }, providers: [{
47
- provide: NG_VALUE_ACCESSOR,
48
- useExisting: InFilterComponent,
49
- multi: true
50
- }], ngImport: i0, template: "<div class=inline>\r\n @for (val of value; track $index) {\r\n <div>\r\n @if(type === FieldType.Number || type === FieldType.Currency){\r\n <input [ngModel]=\"val\" (ngModelChange)=\"onValueChange($index, $event)\"\r\n [readonly]=\"$index + 1 < value.length\" type=\"number\" [ngModelOptions]=\"{standalone:true}\" [autoFocus]=\"$index === value.length - 1\"/>\r\n }\r\n @else {\r\n <input [ngModel]=\"val\" (ngModelChange)=\"onValueChange($index ,$event)\"\r\n [readonly]=\"$index + 1 < value.length\" type=\"string\" [ngModelOptions]=\"{standalone:true}\"\r\n #input [autoFocus]=\"$index === value.length - 1\" />\r\n }\r\n </div>\r\n <button [disabled]=\"value.length <= 1\" (click)=\"removeInput($index)\">-</button>\r\n @if ($index === value.length - 1) {\r\n <button [disabled]=\"val == undefined || val === ''\" (click)=\"addInput()\">+</button>\r\n }\r\n \r\n }\r\n</div>\r\n", styles: [".inline{display:inline-block}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: AutoFocusDirective, selector: "[autoFocus]", inputs: ["autoFocus"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
51
- }
52
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: InFilterComponent, decorators: [{
53
- type: Component,
54
- args: [{ selector: 'lib-in-filter', changeDetection: ChangeDetectionStrategy.OnPush, providers: [{
55
- provide: NG_VALUE_ACCESSOR,
56
- useExisting: InFilterComponent,
57
- multi: true
58
- }], standalone: true, imports: [
59
- FormsModule, AutoFocusDirective
60
- ], template: "<div class=inline>\r\n @for (val of value; track $index) {\r\n <div>\r\n @if(type === FieldType.Number || type === FieldType.Currency){\r\n <input [ngModel]=\"val\" (ngModelChange)=\"onValueChange($index, $event)\"\r\n [readonly]=\"$index + 1 < value.length\" type=\"number\" [ngModelOptions]=\"{standalone:true}\" [autoFocus]=\"$index === value.length - 1\"/>\r\n }\r\n @else {\r\n <input [ngModel]=\"val\" (ngModelChange)=\"onValueChange($index ,$event)\"\r\n [readonly]=\"$index + 1 < value.length\" type=\"string\" [ngModelOptions]=\"{standalone:true}\"\r\n #input [autoFocus]=\"$index === value.length - 1\" />\r\n }\r\n </div>\r\n <button [disabled]=\"value.length <= 1\" (click)=\"removeInput($index)\">-</button>\r\n @if ($index === value.length - 1) {\r\n <button [disabled]=\"val == undefined || val === ''\" (click)=\"addInput()\">+</button>\r\n }\r\n \r\n }\r\n</div>\r\n", styles: [".inline{display:inline-block}\n"] }]
61
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { type: [{
62
- type: Input
63
- }] } });
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW4tZmlsdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy90YWJsZS1idWlsZGVyL2NvbXBvbmVudHMvaW4tZmlsdGVyL2luLWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL2luLWZpbHRlci9pbi1maWx0ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzdGLE9BQU8sRUFBd0IsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7QUFpQnhELE1BQU0sT0FBTyxpQkFBaUI7SUFLNUIsWUFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFKMUMsY0FBUyxHQUFHLFNBQVMsQ0FBQztRQUV0QixVQUFLLEdBQW9DLENBQUMsU0FBUyxDQUFDLENBQUM7UUFVckQsYUFBUSxHQUFHLENBQUMsQ0FBTSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFLM0IsY0FBUyxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQVpwQixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUNELFVBQVUsQ0FBQyxHQUFVO1FBQ25CLElBQUcsQ0FBQyxHQUFHLEVBQUUsTUFBTTtZQUFFLEdBQUcsR0FBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUdELGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEVBQU87UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFhO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsYUFBYSxDQUFDLENBQVEsRUFBQyxLQUFzQjtRQUMzQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDOzhHQXpDVSxpQkFBaUI7a0dBQWpCLGlCQUFpQixzRkFWakIsQ0FBQztnQkFDVixPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsaUJBQWlCO2dCQUM5QixLQUFLLEVBQUUsSUFBSTthQUNaLENBQUMsMEJDZEoscThCQW9CQSx3RkRISSxXQUFXLGl4QkFBRSxrQkFBa0I7OzJGQUd0QixpQkFBaUI7a0JBZjdCLFNBQVM7K0JBQ0UsZUFBZSxtQkFHVCx1QkFBdUIsQ0FBQyxNQUFNLGFBQ25DLENBQUM7NEJBQ1YsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxtQkFBbUI7NEJBQzlCLEtBQUssRUFBRSxJQUFJO3lCQUNaLENBQUMsY0FDVSxJQUFJLFdBQ1A7d0JBQ1AsV0FBVyxFQUFFLGtCQUFrQjtxQkFDaEM7c0ZBSVEsSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZpZWxkVHlwZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvcmVwb3J0LWRlZic7XHJcbmltcG9ydCB7IEF1dG9Gb2N1c0RpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxpdGllcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1pbi1maWx0ZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbi1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2luLWZpbHRlci5jb21wb25lbnQuY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOkNoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBwcm92aWRlcnM6IFt7XHJcbiAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgIHVzZUV4aXN0aW5nOiBJbkZpbHRlckNvbXBvbmVudCxcclxuICAgIG11bHRpOiB0cnVlXHJcbiAgfV0sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBGb3Jtc01vZHVsZSwgQXV0b0ZvY3VzRGlyZWN0aXZlXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5GaWx0ZXJDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgRmllbGRUeXBlID0gRmllbGRUeXBlO1xyXG4gIEBJbnB1dCgpIHR5cGUhIDogRmllbGRUeXBlO1xyXG4gIHZhbHVlOiAoc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkKVtdID0gW3VuZGVmaW5lZF07XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gICAgdGhpcy52YWx1ZSA9IFt1bmRlZmluZWRdO1xyXG4gIH1cclxuICB3cml0ZVZhbHVlKG9iajogYW55W10pOiB2b2lkIHtcclxuICAgIGlmKCFvYmo/Lmxlbmd0aCkgb2JqICA9IFt1bmRlZmluZWRdO1xyXG4gICAgdGhpcy52YWx1ZSA9IG9iajtcclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuICBvbkNoYW5nZSA9IChfOiBhbnkpID0+IHsgfTtcclxuXHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG4gIG9uVG91Y2hlZCA9ICgpID0+IHsgfTtcclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgYWRkSW5wdXQoKXtcclxuICAgIHRoaXMudmFsdWUgPSBbLi4udGhpcy52YWx1ZSwgdW5kZWZpbmVkXTtcclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIHJlbW92ZUlucHV0KGluZGV4OiBudW1iZXIpe1xyXG4gICAgdGhpcy52YWx1ZSA9IFsuLi50aGlzLnZhbHVlXTtcclxuICAgIHRoaXMudmFsdWUuc3BsaWNlKGluZGV4LDEpO1xyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgb25WYWx1ZUNoYW5nZShpOm51bWJlcix2YWx1ZTogbnVtYmVyIHwgc3RyaW5nKXtcclxuICAgIHRoaXMudmFsdWUgPSBbLi4udGhpcy52YWx1ZV07XHJcbiAgICB0aGlzLnZhbHVlW2ldID0gdmFsdWU7XHJcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPWlubGluZT5cclxuICBAZm9yICh2YWwgb2YgdmFsdWU7IHRyYWNrICRpbmRleCkge1xyXG4gICAgPGRpdj5cclxuICAgICAgQGlmKHR5cGUgPT09IEZpZWxkVHlwZS5OdW1iZXIgfHwgdHlwZSA9PT0gRmllbGRUeXBlLkN1cnJlbmN5KXtcclxuICAgICAgICA8aW5wdXQgW25nTW9kZWxdPVwidmFsXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkaW5kZXgsICRldmVudClcIlxyXG4gICAgICAgIFtyZWFkb25seV09XCIkaW5kZXggKyAxIDwgdmFsdWUubGVuZ3RoXCIgdHlwZT1cIm51bWJlclwiIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTp0cnVlfVwiIFthdXRvRm9jdXNdPVwiJGluZGV4ID09PSB2YWx1ZS5sZW5ndGggLSAxXCIvPlxyXG4gICAgICB9XHJcbiAgICAgIEBlbHNlIHtcclxuICAgICAgICA8aW5wdXQgW25nTW9kZWxdPVwidmFsXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25WYWx1ZUNoYW5nZSgkaW5kZXggLCRldmVudClcIlxyXG4gICAgICAgIFtyZWFkb25seV09XCIkaW5kZXggKyAxIDwgdmFsdWUubGVuZ3RoXCIgdHlwZT1cInN0cmluZ1wiIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTp0cnVlfVwiXHJcbiAgICAgICAgI2lucHV0IFthdXRvRm9jdXNdPVwiJGluZGV4ID09PSB2YWx1ZS5sZW5ndGggLSAxXCIgLz5cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJ2YWx1ZS5sZW5ndGggPD0gMVwiIChjbGljayk9XCJyZW1vdmVJbnB1dCgkaW5kZXgpXCI+LTwvYnV0dG9uPlxyXG4gICAgQGlmICgkaW5kZXggPT09IHZhbHVlLmxlbmd0aCAtIDEpIHtcclxuICAgICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwidmFsID09IHVuZGVmaW5lZCB8fCB2YWwgPT09ICcnXCIgKGNsaWNrKT1cImFkZElucHV0KClcIj4rPC9idXR0b24+XHJcbiAgICB9XHJcbiAgICBcclxuICB9XHJcbjwvZGl2PlxyXG4iXX0=
@@ -1,10 +0,0 @@
1
- export * from './date-filter/date-filter.component';
2
- export * from './filter/filter.component';
3
- export * from './gen-col-displayer/gen-col-displayer.component';
4
- export * from './table-container-filter/gen-filter-displayer/gen-filter-displayer.component';
5
- export * from './table-container-filter/filter-list/filter-list.component';
6
- export * from './generic-table/generic-table.component';
7
- export * from './table-container/table-container';
8
- export * from './generic-table/paginator.component';
9
- export * from './group-by-list/group-by-list.component';
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsOEVBQThFLENBQUM7QUFDN0YsY0FBYyw0REFBNEQsQ0FBQztBQUMzRSxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLHlDQUF5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kYXRlLWZpbHRlci9kYXRlLWZpbHRlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2ZpbHRlci9maWx0ZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9nZW4tY29sLWRpc3BsYXllci9nZW4tY29sLWRpc3BsYXllci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3RhYmxlLWNvbnRhaW5lci1maWx0ZXIvZ2VuLWZpbHRlci1kaXNwbGF5ZXIvZ2VuLWZpbHRlci1kaXNwbGF5ZXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi90YWJsZS1jb250YWluZXItZmlsdGVyL2ZpbHRlci1saXN0L2ZpbHRlci1saXN0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vZ2VuZXJpYy10YWJsZS9nZW5lcmljLXRhYmxlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdGFibGUtY29udGFpbmVyL3RhYmxlLWNvbnRhaW5lcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vZ2VuZXJpYy10YWJsZS9wYWdpbmF0b3IuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9ncm91cC1ieS1saXN0L2dyb3VwLWJ5LWxpc3QuY29tcG9uZW50JztcclxuIl19
@@ -1,36 +0,0 @@
1
- import { Component, ViewChild } from "@angular/core";
2
- import { LinkColumnComponent } from "../link-column.component";
3
- import { ArrayColumnComponent } from "../array-column.component";
4
- import { MatIconModule } from "@angular/material/icon";
5
- import { FunctionPipe } from "../../../utilities";
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/material/icon";
8
- export class InitializationComponent {
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: InitializationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.3", type: InitializationComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "linkTemplate", first: true, predicate: ["link"], descendants: true, static: true }, { propertyName: "imageUrlTemplate", first: true, predicate: ["imageUrl"], descendants: true, static: true }, { propertyName: "currencyTemplate", first: true, predicate: ["currency"], descendants: true, static: true }, { propertyName: "arrayTemplate", first: true, predicate: ["array"], descendants: true, static: true }, { propertyName: "defaultTemplate", first: true, predicate: ["default"], descendants: true, static: true }, { propertyName: "defaultWithIcon", first: true, predicate: ["defaultWithIcon"], descendants: true, static: true }], ngImport: i0, template: "<ng-template #link let-element='element' let-metaData='metaData' let-transform='transform'>\r\n <tb-link-column [element]=\"element\" [metaData]=\"metaData\" [transform]=\"transform\"></tb-link-column>\r\n</ng-template>\r\n\r\n<ng-template #imageUrl let-element='element' let-metaData='metaData'>\r\n <span>\r\n <img src=\"{{element[metaData.key]}}\" height=\"75px\" width=\"75px\" />\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #array let-element='element' let-metaData='metaData'>\r\n <tb-array-column [array]='element[metaData.key]' [metaData]='metaData'></tb-array-column>\r\n</ng-template>\r\n\r\n<ng-template #default let-element='element' let-metaData='metaData' let-transform='transform' >\r\n <span>{{ transform | func : element }}</span>\r\n</ng-template>\r\n\r\n<ng-template #defaultWithIcon let-element='element' let-metaData='metaData' let-transform='transform' >\r\n <mat-icon>{{ transform | func : element }}</mat-icon>\r\n</ng-template>\r\n", dependencies: [{ kind: "component", type: LinkColumnComponent, selector: "tb-link-column", inputs: ["metaData", "element", "transform"] }, { kind: "component", type: ArrayColumnComponent, selector: "tb-array-column", inputs: ["metaData", "array"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "pipe", type: FunctionPipe, name: "func" }] }); }
11
- }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: InitializationComponent, decorators: [{
13
- type: Component,
14
- args: [{ standalone: true, imports: [
15
- LinkColumnComponent, ArrayColumnComponent, MatIconModule, FunctionPipe
16
- ], template: "<ng-template #link let-element='element' let-metaData='metaData' let-transform='transform'>\r\n <tb-link-column [element]=\"element\" [metaData]=\"metaData\" [transform]=\"transform\"></tb-link-column>\r\n</ng-template>\r\n\r\n<ng-template #imageUrl let-element='element' let-metaData='metaData'>\r\n <span>\r\n <img src=\"{{element[metaData.key]}}\" height=\"75px\" width=\"75px\" />\r\n </span>\r\n</ng-template>\r\n\r\n<ng-template #array let-element='element' let-metaData='metaData'>\r\n <tb-array-column [array]='element[metaData.key]' [metaData]='metaData'></tb-array-column>\r\n</ng-template>\r\n\r\n<ng-template #default let-element='element' let-metaData='metaData' let-transform='transform' >\r\n <span>{{ transform | func : element }}</span>\r\n</ng-template>\r\n\r\n<ng-template #defaultWithIcon let-element='element' let-metaData='metaData' let-transform='transform' >\r\n <mat-icon>{{ transform | func : element }}</mat-icon>\r\n</ng-template>\r\n" }]
17
- }], propDecorators: { linkTemplate: [{
18
- type: ViewChild,
19
- args: ['link', { static: true }]
20
- }], imageUrlTemplate: [{
21
- type: ViewChild,
22
- args: ['imageUrl', { static: true }]
23
- }], currencyTemplate: [{
24
- type: ViewChild,
25
- args: ['currency', { static: true }]
26
- }], arrayTemplate: [{
27
- type: ViewChild,
28
- args: ['array', { static: true }]
29
- }], defaultTemplate: [{
30
- type: ViewChild,
31
- args: ['default', { static: true }]
32
- }], defaultWithIcon: [{
33
- type: ViewChild,
34
- args: ['defaultWithIcon', { static: true }]
35
- }] } });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhbGl6YXRpb24tY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy9pbml0aWFsaXphdGlvbi1jb21wb25lbnQvaW5pdGlhbGl6YXRpb24tY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy9pbml0aWFsaXphdGlvbi1jb21wb25lbnQvaW5pdGlhbGl6YXRpb24tY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBZSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDakUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7O0FBU2xELE1BQU0sT0FBTyx1QkFBdUI7OEdBQXZCLHVCQUF1QjtrR0FBdkIsdUJBQXVCLDJ0QkNicEMsKzhCQXFCQSw0Q0RYSSxtQkFBbUIseUdBQUUsb0JBQW9CLDBGQUFFLGFBQWEsK0tBQUUsWUFBWTs7MkZBRzdELHVCQUF1QjtrQkFQbkMsU0FBUztpQ0FFSSxJQUFJLFdBQ1A7d0JBQ1AsbUJBQW1CLEVBQUUsb0JBQW9CLEVBQUUsYUFBYSxFQUFFLFlBQVk7cUJBQ3ZFOzhCQUdrQyxZQUFZO3NCQUE5QyxTQUFTO3VCQUFDLE1BQU0sRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBQ00sZ0JBQWdCO3NCQUF0RCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBQ0UsZ0JBQWdCO3NCQUF0RCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBQ0QsYUFBYTtzQkFBaEQsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDO2dCQUNJLGVBQWU7c0JBQXBELFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQztnQkFDVSxlQUFlO3NCQUE1RCxTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUMsTUFBTSxFQUFFLElBQUksRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IExpbmtDb2x1bW5Db21wb25lbnQgfSBmcm9tIFwiLi4vbGluay1jb2x1bW4uY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEFycmF5Q29sdW1uQ29tcG9uZW50IH0gZnJvbSBcIi4uL2FycmF5LWNvbHVtbi5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9pY29uXCI7XHJcbmltcG9ydCB7IEZ1bmN0aW9uUGlwZSB9IGZyb20gXCIuLi8uLi8uLi91dGlsaXRpZXNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbml0aWFsaXphdGlvbi1jb21wb25lbnQuaHRtbCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBMaW5rQ29sdW1uQ29tcG9uZW50LCBBcnJheUNvbHVtbkNvbXBvbmVudCwgTWF0SWNvbk1vZHVsZSwgRnVuY3Rpb25QaXBlXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5pdGlhbGl6YXRpb25Db21wb25lbnQge1xyXG4gIEBWaWV3Q2hpbGQoJ2xpbmsnLCB7c3RhdGljOiB0cnVlfSkgbGlua1RlbXBsYXRlISA6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgnaW1hZ2VVcmwnLCB7c3RhdGljOiB0cnVlfSkgaW1hZ2VVcmxUZW1wbGF0ZSEgOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoJ2N1cnJlbmN5Jywge3N0YXRpYzogdHJ1ZX0pIGN1cnJlbmN5VGVtcGxhdGUhIDogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCdhcnJheScsIHtzdGF0aWM6IHRydWV9KSBhcnJheVRlbXBsYXRlISA6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgnZGVmYXVsdCcsIHtzdGF0aWM6IHRydWV9KSBkZWZhdWx0VGVtcGxhdGUhIDogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCdkZWZhdWx0V2l0aEljb24nLCB7c3RhdGljOiB0cnVlfSkgZGVmYXVsdFdpdGhJY29uISA6IFRlbXBsYXRlUmVmPGFueT47XHJcbn1cclxuIiwiPG5nLXRlbXBsYXRlICNsaW5rICBsZXQtZWxlbWVudD0nZWxlbWVudCcgbGV0LW1ldGFEYXRhPSdtZXRhRGF0YScgbGV0LXRyYW5zZm9ybT0ndHJhbnNmb3JtJz5cclxuICA8dGItbGluay1jb2x1bW4gW2VsZW1lbnRdPVwiZWxlbWVudFwiIFttZXRhRGF0YV09XCJtZXRhRGF0YVwiIFt0cmFuc2Zvcm1dPVwidHJhbnNmb3JtXCI+PC90Yi1saW5rLWNvbHVtbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjaW1hZ2VVcmwgIGxldC1lbGVtZW50PSdlbGVtZW50JyBsZXQtbWV0YURhdGE9J21ldGFEYXRhJz5cclxuICA8c3Bhbj5cclxuICAgIDxpbWcgc3JjPVwie3tlbGVtZW50W21ldGFEYXRhLmtleV19fVwiIGhlaWdodD1cIjc1cHhcIiB3aWR0aD1cIjc1cHhcIiAvPlxyXG4gIDwvc3Bhbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjYXJyYXkgbGV0LWVsZW1lbnQ9J2VsZW1lbnQnIGxldC1tZXRhRGF0YT0nbWV0YURhdGEnPlxyXG4gIDx0Yi1hcnJheS1jb2x1bW4gW2FycmF5XT0nZWxlbWVudFttZXRhRGF0YS5rZXldJyBbbWV0YURhdGFdPSdtZXRhRGF0YSc+PC90Yi1hcnJheS1jb2x1bW4+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI2RlZmF1bHQgbGV0LWVsZW1lbnQ9J2VsZW1lbnQnIGxldC1tZXRhRGF0YT0nbWV0YURhdGEnIGxldC10cmFuc2Zvcm09J3RyYW5zZm9ybScgPlxyXG4gIDxzcGFuPnt7IHRyYW5zZm9ybSB8IGZ1bmMgOiBlbGVtZW50IH19PC9zcGFuPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNkZWZhdWx0V2l0aEljb24gbGV0LWVsZW1lbnQ9J2VsZW1lbnQnIGxldC1tZXRhRGF0YT0nbWV0YURhdGEnIGxldC10cmFuc2Zvcm09J3RyYW5zZm9ybScgPlxyXG4gIDxtYXQtaWNvbj57eyB0cmFuc2Zvcm0gfCBmdW5jIDogZWxlbWVudCB9fTwvbWF0LWljb24+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
@@ -1,73 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, Input } from "@angular/core";
2
- import { LetDirective } from "@ngrx/component";
3
- import { FunctionPipe } from "../../utilities";
4
- import { RouterModule } from "@angular/router";
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "../classes/table-store";
7
- import * as i2 from "@angular/router";
8
- export class LinkColumnComponent {
9
- constructor(store) {
10
- this.store = store;
11
- this.transform = (a) => a;
12
- this.link = (metaData) => this.store.getLinkMap(metaData);
13
- }
14
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: LinkColumnComponent, deps: [{ token: i1.TableStore }], target: i0.ɵɵFactoryTarget.Component }); }
15
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.3", type: LinkColumnComponent, isStandalone: true, selector: "tb-link-column", inputs: { metaData: "metaData", element: "element", transform: "transform" }, ngImport: i0, template: `
16
- <ng-container *ngrxLet="(link | func : metaData) as linkInfo">
17
- @if(linkInfo.useRouterLink){
18
- <a target="{{$any(linkInfo).target}}"
19
- [routerLink]=" [($any(linkInfo).link | func : element)]"
20
- [queryParams]="$any(linkInfo).routerLinkOptions.queryParams | func : element"
21
- [fragment]="$any(linkInfo).routerLinkOptions.fragment"
22
- [preserveFragment]="$any(linkInfo).routerLinkOptions.preserveFragment"
23
- [queryParamsHandling]="$any(linkInfo).routerLinkOptions.queryParamsHandling"
24
- >
25
- {{transform | func : element}}
26
- </a>
27
- } @else {
28
- <a target="{{$any(linkInfo).target}}"
29
- href="{{($any(linkInfo).link | func : element)}}">
30
- {{transform | func : element}}
31
- </a>
32
- }
33
- </ng-container>
34
- `, isInline: true, dependencies: [{ kind: "directive", type: LetDirective, selector: "[ngrxLet]", inputs: ["ngrxLet", "ngrxLetSuspenseTpl"] }, { kind: "pipe", type: FunctionPipe, name: "func" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
35
- }
36
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: LinkColumnComponent, decorators: [{
37
- type: Component,
38
- args: [{
39
- selector: "tb-link-column",
40
- standalone: true,
41
- changeDetection: ChangeDetectionStrategy.OnPush,
42
- imports: [
43
- LetDirective, FunctionPipe, RouterModule
44
- ],
45
- template: `
46
- <ng-container *ngrxLet="(link | func : metaData) as linkInfo">
47
- @if(linkInfo.useRouterLink){
48
- <a target="{{$any(linkInfo).target}}"
49
- [routerLink]=" [($any(linkInfo).link | func : element)]"
50
- [queryParams]="$any(linkInfo).routerLinkOptions.queryParams | func : element"
51
- [fragment]="$any(linkInfo).routerLinkOptions.fragment"
52
- [preserveFragment]="$any(linkInfo).routerLinkOptions.preserveFragment"
53
- [queryParamsHandling]="$any(linkInfo).routerLinkOptions.queryParamsHandling"
54
- >
55
- {{transform | func : element}}
56
- </a>
57
- } @else {
58
- <a target="{{$any(linkInfo).target}}"
59
- href="{{($any(linkInfo).link | func : element)}}">
60
- {{transform | func : element}}
61
- </a>
62
- }
63
- </ng-container>
64
- `
65
- }]
66
- }], ctorParameters: () => [{ type: i1.TableStore }], propDecorators: { metaData: [{
67
- type: Input
68
- }], element: [{
69
- type: Input
70
- }], transform: [{
71
- type: Input
72
- }] } });
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay1jb2x1bW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy9saW5rLWNvbHVtbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUE2QjdDLE1BQU0sT0FBTyxtQkFBbUI7SUFJaEMsWUFBc0IsS0FBaUI7UUFBakIsVUFBSyxHQUFMLEtBQUssQ0FBWTtRQUQ5QixjQUFTLEdBQUcsQ0FBQyxDQUFLLEVBQUMsRUFBRSxDQUFBLENBQUMsQ0FBQztRQUVoQyxTQUFJLEdBQUksQ0FBQyxRQUFtQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQURyQixDQUFDOzhHQUpoQyxtQkFBbUI7a0dBQW5CLG1CQUFtQix3SkFwQnRCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJULDREQXJCQyxZQUFZLDRGQUFFLFlBQVksNENBQUUsWUFBWTs7MkZBc0I3QixtQkFBbUI7a0JBM0JqQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsT0FBTyxFQUFFO3dCQUNQLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWTtxQkFDekM7b0JBQ0QsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJUO2lCQUNGOytFQUNVLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFRhYmxlU3RvcmUgfSBmcm9tIFwiLi4vY2xhc3Nlcy90YWJsZS1zdG9yZVwiO1xyXG5pbXBvcnQgeyBNZXRhRGF0YSB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL3JlcG9ydC1kZWZcIjtcclxuaW1wb3J0IHsgTGV0RGlyZWN0aXZlIH0gZnJvbSBcIkBuZ3J4L2NvbXBvbmVudFwiO1xyXG5pbXBvcnQgeyBGdW5jdGlvblBpcGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzXCI7XHJcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcInRiLWxpbmstY29sdW1uXCIsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBMZXREaXJlY3RpdmUsIEZ1bmN0aW9uUGlwZSwgUm91dGVyTW9kdWxlXHJcbiAgXSxcclxuICB0ZW1wbGF0ZTogYFxyXG4gIDxuZy1jb250YWluZXIgKm5ncnhMZXQ9XCIobGluayB8IGZ1bmMgOiBtZXRhRGF0YSkgYXMgbGlua0luZm9cIj5cclxuICAgIEBpZihsaW5rSW5mby51c2VSb3V0ZXJMaW5rKXtcclxuICAgICAgPGEgdGFyZ2V0PVwie3skYW55KGxpbmtJbmZvKS50YXJnZXR9fVwiXHJcbiAgICAgIFtyb3V0ZXJMaW5rXT1cIiBbKCRhbnkobGlua0luZm8pLmxpbmsgfCBmdW5jIDogZWxlbWVudCldXCJcclxuICAgICAgW3F1ZXJ5UGFyYW1zXT1cIiRhbnkobGlua0luZm8pLnJvdXRlckxpbmtPcHRpb25zLnF1ZXJ5UGFyYW1zIHwgZnVuYyA6IGVsZW1lbnRcIlxyXG4gICAgICBbZnJhZ21lbnRdPVwiJGFueShsaW5rSW5mbykucm91dGVyTGlua09wdGlvbnMuZnJhZ21lbnRcIlxyXG4gICAgICBbcHJlc2VydmVGcmFnbWVudF09XCIkYW55KGxpbmtJbmZvKS5yb3V0ZXJMaW5rT3B0aW9ucy5wcmVzZXJ2ZUZyYWdtZW50XCJcclxuICAgICAgW3F1ZXJ5UGFyYW1zSGFuZGxpbmddPVwiJGFueShsaW5rSW5mbykucm91dGVyTGlua09wdGlvbnMucXVlcnlQYXJhbXNIYW5kbGluZ1wiXHJcbiAgICAgID5cclxuICAgICAgICB7e3RyYW5zZm9ybSB8IGZ1bmMgOiBlbGVtZW50fX1cclxuICAgICAgPC9hPlxyXG4gICAgfSBAZWxzZSB7XHJcbiAgICAgIDxhIHRhcmdldD1cInt7JGFueShsaW5rSW5mbykudGFyZ2V0fX1cIlxyXG4gICAgICAgIGhyZWY9XCJ7eygkYW55KGxpbmtJbmZvKS5saW5rIHwgZnVuYyA6IGVsZW1lbnQpfX1cIj5cclxuICAgICAgICB7e3RyYW5zZm9ybSB8IGZ1bmMgOiBlbGVtZW50fX1cclxuICAgICAgPC9hPlxyXG4gICAgfVxyXG4gIDwvbmctY29udGFpbmVyPlxyXG4gIGBcclxufSlleHBvcnQgY2xhc3MgTGlua0NvbHVtbkNvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgbWV0YURhdGEhOiBNZXRhRGF0YTtcclxuICBASW5wdXQoKSBlbGVtZW50ITogYW55O1xyXG4gIEBJbnB1dCgpIHRyYW5zZm9ybSA9IChhOmFueSk9PmE7XHJcbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHN0b3JlOiBUYWJsZVN0b3JlKSB7ICB9XHJcbiAgbGluayA9ICAobWV0YURhdGEgOiBNZXRhRGF0YSkgPT4gdGhpcy5zdG9yZS5nZXRMaW5rTWFwKG1ldGFEYXRhKTtcclxuXHJcbn0iXX0=
@@ -1,29 +0,0 @@
1
- import { Component, Input, ChangeDetectionStrategy } from '@angular/core';
2
- import { FilterType } from '../../enums/filterTypes';
3
- import { ControlContainer, FormsModule, NgForm } from '@angular/forms';
4
- import { FieldType } from '../../interfaces/report-def';
5
- import { MatInputModule } from '@angular/material/input';
6
- import { InFilterComponent } from '../in-filter/in-filter.component';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/material/input";
9
- import * as i2 from "@angular/material/form-field";
10
- import * as i3 from "@angular/forms";
11
- export class NumberFilterComponent {
12
- constructor() {
13
- this.FilterType = FilterType;
14
- this.FieldType = FieldType;
15
- }
16
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: NumberFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
17
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.3", type: NumberFilterComponent, isStandalone: true, selector: "tb-number-filter", inputs: { CurrentFilterType: "CurrentFilterType", info: "info" }, ngImport: i0, template: "@if(CurrentFilterType !== FilterType.NumberBetween && CurrentFilterType !== FilterType.IsNull && CurrentFilterType !== FilterType.In){\r\n <mat-form-field class=\"my-filter\">\r\n <input matInput name=\"filterValue\" [ngModel]=\"info.filterValue\" type=\"number\"/>\r\n </mat-form-field>\r\n}\r\n@if(CurrentFilterType === FilterType.NumberBetween){\r\n <ng-container ngModelGroup=\"filterValue\" >\r\n <mat-form-field class=\"my-filter\">\r\n <input matInput name=\"Start\" [ngModel]=\"info.filterValue?.Start\" placeholder=\"Start\" type=\"number\"/>\r\n </mat-form-field>\r\n <mat-form-field class=\"my-filter\">\r\n <input matInput name=\"End\" [ngModel]=\"info.filterValue?.End\" placeholder=\"End\" type=\"number\"/>\r\n </mat-form-field>\r\n </ng-container>\r\n}\r\n\r\n@if (CurrentFilterType === FilterType.In) {\r\n <lib-in-filter name='filterValue' [type]=\"FieldType.Number\" [(ngModel)]='info.filterValue' />\r\n}\r\n", styles: [".switch{display:inline-block}.my-filter{margin-right:15px}.inline{display:inline-block}\n"], dependencies: [{ kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i1.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.NgModelGroup, selector: "[ngModelGroup]", inputs: ["ngModelGroup"], exportAs: ["ngModelGroup"] }, { kind: "component", type: InFilterComponent, selector: "lib-in-filter", inputs: ["type"] }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
18
- }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: NumberFilterComponent, decorators: [{
20
- type: Component,
21
- args: [{ selector: 'tb-number-filter', changeDetection: ChangeDetectionStrategy.OnPush, viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], standalone: true, imports: [
22
- MatInputModule, FormsModule, InFilterComponent
23
- ], template: "@if(CurrentFilterType !== FilterType.NumberBetween && CurrentFilterType !== FilterType.IsNull && CurrentFilterType !== FilterType.In){\r\n <mat-form-field class=\"my-filter\">\r\n <input matInput name=\"filterValue\" [ngModel]=\"info.filterValue\" type=\"number\"/>\r\n </mat-form-field>\r\n}\r\n@if(CurrentFilterType === FilterType.NumberBetween){\r\n <ng-container ngModelGroup=\"filterValue\" >\r\n <mat-form-field class=\"my-filter\">\r\n <input matInput name=\"Start\" [ngModel]=\"info.filterValue?.Start\" placeholder=\"Start\" type=\"number\"/>\r\n </mat-form-field>\r\n <mat-form-field class=\"my-filter\">\r\n <input matInput name=\"End\" [ngModel]=\"info.filterValue?.End\" placeholder=\"End\" type=\"number\"/>\r\n </mat-form-field>\r\n </ng-container>\r\n}\r\n\r\n@if (CurrentFilterType === FilterType.In) {\r\n <lib-in-filter name='filterValue' [type]=\"FieldType.Number\" [(ngModel)]='info.filterValue' />\r\n}\r\n", styles: [".switch{display:inline-block}.my-filter{margin-right:15px}.inline{display:inline-block}\n"] }]
24
- }], propDecorators: { CurrentFilterType: [{
25
- type: Input
26
- }], info: [{
27
- type: Input
28
- }] } });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWZpbHRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL251bWJlci1maWx0ZXIvbnVtYmVyLWZpbHRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvdGFibGUtYnVpbGRlci9jb21wb25lbnRzL251bWJlci1maWx0ZXIvbnVtYmVyLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7OztBQWNyRSxNQUFNLE9BQU8scUJBQXFCO0lBWGxDO1FBWUUsZUFBVSxHQUFHLFVBQVUsQ0FBQztRQUFDLGNBQVMsR0FBRyxTQUFTLENBQUM7S0FHaEQ7OEdBSlkscUJBQXFCO2tHQUFyQixxQkFBcUIsOElDcEJsQyxpOEJBbUJBLGtKREZJLGNBQWMscWpCQUFFLFdBQVcsNmlDQUFFLGlCQUFpQixpRUFIakMsQ0FBQyxFQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFDLENBQUM7OzJGQU10RCxxQkFBcUI7a0JBWGpDLFNBQVM7K0JBQ0Usa0JBQWtCLG1CQUdYLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLENBQUMsRUFBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBQyxDQUFDLGNBQ3JELElBQUksV0FDUDt3QkFDUCxjQUFjLEVBQUUsV0FBVyxFQUFFLGlCQUFpQjtxQkFDL0M7OEJBSVEsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZpbHRlclR5cGUgfSBmcm9tICcuLi8uLi9lbnVtcy9maWx0ZXJUeXBlcyc7XHJcbmltcG9ydCB7IENvbnRyb2xDb250YWluZXIsIEZvcm1zTW9kdWxlLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFBhcnRpYWxGaWx0ZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2ZpbHRlci1pbmZvJztcclxuaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9yZXBvcnQtZGVmJztcclxuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XHJcbmltcG9ydCB7IEluRmlsdGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vaW4tZmlsdGVyL2luLWZpbHRlci5jb21wb25lbnQnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndGItbnVtYmVyLWZpbHRlcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL251bWJlci1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL251bWJlci1maWx0ZXIuY29tcG9uZW50LmNzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIHZpZXdQcm92aWRlcnM6IFt7cHJvdmlkZTogQ29udHJvbENvbnRhaW5lciwgdXNlRXhpc3Rpbmc6IE5nRm9ybX1dLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTWF0SW5wdXRNb2R1bGUsIEZvcm1zTW9kdWxlLCBJbkZpbHRlckNvbXBvbmVudFxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIE51bWJlckZpbHRlckNvbXBvbmVudCB7XHJcbiAgRmlsdGVyVHlwZSA9IEZpbHRlclR5cGU7IEZpZWxkVHlwZSA9IEZpZWxkVHlwZTtcclxuICBASW5wdXQoKSBDdXJyZW50RmlsdGVyVHlwZSE6IEZpbHRlclR5cGU7XHJcbiAgQElucHV0KCkgaW5mbyE6UGFydGlhbEZpbHRlcjtcclxufVxyXG4iLCJAaWYoQ3VycmVudEZpbHRlclR5cGUgIT09IEZpbHRlclR5cGUuTnVtYmVyQmV0d2VlbiAmJiBDdXJyZW50RmlsdGVyVHlwZSAhPT0gRmlsdGVyVHlwZS5Jc051bGwgJiYgQ3VycmVudEZpbHRlclR5cGUgIT09IEZpbHRlclR5cGUuSW4pe1xyXG4gIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm15LWZpbHRlclwiPlxyXG4gICAgPGlucHV0IG1hdElucHV0IG5hbWU9XCJmaWx0ZXJWYWx1ZVwiIFtuZ01vZGVsXT1cImluZm8uZmlsdGVyVmFsdWVcIiB0eXBlPVwibnVtYmVyXCIvPlxyXG4gIDwvbWF0LWZvcm0tZmllbGQ+XHJcbn1cclxuQGlmKEN1cnJlbnRGaWx0ZXJUeXBlID09PSBGaWx0ZXJUeXBlLk51bWJlckJldHdlZW4pe1xyXG4gIDxuZy1jb250YWluZXIgbmdNb2RlbEdyb3VwPVwiZmlsdGVyVmFsdWVcIiAgPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwibXktZmlsdGVyXCI+XHJcbiAgICAgIDxpbnB1dCBtYXRJbnB1dCBuYW1lPVwiU3RhcnRcIiBbbmdNb2RlbF09XCJpbmZvLmZpbHRlclZhbHVlPy5TdGFydFwiIHBsYWNlaG9sZGVyPVwiU3RhcnRcIiB0eXBlPVwibnVtYmVyXCIvPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cIm15LWZpbHRlclwiPlxyXG4gICAgICA8aW5wdXQgbWF0SW5wdXQgbmFtZT1cIkVuZFwiIFtuZ01vZGVsXT1cImluZm8uZmlsdGVyVmFsdWU/LkVuZFwiIHBsYWNlaG9sZGVyPVwiRW5kXCIgdHlwZT1cIm51bWJlclwiLz5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbn1cclxuXHJcbkBpZiAoQ3VycmVudEZpbHRlclR5cGUgPT09IEZpbHRlclR5cGUuSW4pIHtcclxuICA8bGliLWluLWZpbHRlciBuYW1lPSdmaWx0ZXJWYWx1ZScgW3R5cGVdPVwiRmllbGRUeXBlLk51bWJlclwiIFsobmdNb2RlbCldPSdpbmZvLmZpbHRlclZhbHVlJyAvPlxyXG59XHJcbiJdfQ==
@@ -1,63 +0,0 @@
1
- import { Subject } from 'rxjs';
2
- import { distinctUntilChanged } from 'rxjs/operators';
3
- export class TableVirtualScrollStrategy {
4
- constructor(itemHeight, headerOffset) {
5
- this.itemHeight = itemHeight;
6
- this.headerOffset = headerOffset;
7
- this.dataLength = 0;
8
- this.indexChange = new Subject();
9
- this.scrolledIndexChange = this.indexChange.pipe(distinctUntilChanged());
10
- }
11
- attach(viewport) {
12
- this.viewport = viewport;
13
- this.onDataLengthChanged();
14
- }
15
- onContentScrolled() {
16
- this.updateContent();
17
- }
18
- onDataLengthChanged() {
19
- if (this.viewport) {
20
- this.viewport.setTotalContentSize(this.dataLength * this.itemHeight);
21
- this.updateContent();
22
- }
23
- }
24
- setDataLength(length) {
25
- this.dataLength = length;
26
- this.onDataLengthChanged();
27
- }
28
- setScrollHeight(rowHeight, headerOffset) {
29
- this.itemHeight = rowHeight;
30
- this.headerOffset = headerOffset;
31
- this.updateContent();
32
- }
33
- setItemHeight(rowHeight) {
34
- this.itemHeight = rowHeight;
35
- this.updateContent();
36
- }
37
- setHeaderOffset(headerOffset) {
38
- this.headerOffset = headerOffset;
39
- this.updateContent();
40
- }
41
- detach() { }
42
- onContentRendered() { }
43
- onRenderedOffsetChanged() {
44
- }
45
- scrollToIndex(index, behavior) {
46
- }
47
- updateContent() {
48
- if (!this.viewport) {
49
- return;
50
- }
51
- const amount = Math.ceil(this.viewport.getViewportSize() / this.itemHeight);
52
- const offset = this.viewport.measureScrollOffset() - this.headerOffset;
53
- const buffer = Math.ceil(amount / 2);
54
- const skip = Math.round(offset / this.itemHeight);
55
- const index = Math.max(0, skip);
56
- const start = Math.max(0, index - buffer);
57
- const end = Math.min(this.dataLength, index + amount + buffer);
58
- this.viewport.setRenderedContentOffset(this.itemHeight * start);
59
- this.viewport.setRenderedRange({ start, end });
60
- this.indexChange.next(index);
61
- }
62
- }
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL3RhYmxlLWJ1aWxkZXIvY29tcG9uZW50cy9zY3JvbGwtc3RyYXRlZ3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV0RCxNQUFNLE9BQU8sMEJBQTBCO0lBT3JDLFlBQW9CLFVBQWtCLEVBQVUsWUFBb0I7UUFBaEQsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFRO1FBSjVELGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDTixnQkFBVyxHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFJbkQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQWtDO1FBQ3ZDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELG1CQUFtQjtRQUNqQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNyRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDdEI7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQWM7UUFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUM7UUFDekIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELGVBQWUsQ0FBQyxTQUFpQixFQUFFLFlBQW9CO1FBQ3JELElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzVCLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsYUFBYSxDQUFDLFNBQWlCO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO1FBQzVCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsZUFBZSxDQUFDLFlBQW9CO1FBQ2xDLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsTUFBTSxLQUFVLENBQUM7SUFDakIsaUJBQWlCLEtBQVUsQ0FBQztJQUM1Qix1QkFBdUI7SUFDdkIsQ0FBQztJQUNELGFBQWEsQ0FBQyxLQUFhLEVBQUUsUUFBd0I7SUFDckQsQ0FBQztJQUVPLGFBQWE7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEIsT0FBTztTQUNSO1FBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM1RSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLG1CQUFtQixFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN2RSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUVyQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDaEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDO1FBQzFDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLEdBQUcsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDO1FBRS9ELElBQUksQ0FBQyxRQUFRLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFFL0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQsXHJcbiAgVmlydHVhbFNjcm9sbFN0cmF0ZWd5LFxyXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFRhYmxlVmlydHVhbFNjcm9sbFN0cmF0ZWd5IGltcGxlbWVudHMgVmlydHVhbFNjcm9sbFN0cmF0ZWd5IHtcclxuICBzY3JvbGxlZEluZGV4Q2hhbmdlOiBPYnNlcnZhYmxlPG51bWJlcj47XHJcblxyXG4gIHByaXZhdGUgZGF0YUxlbmd0aCA9IDA7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBpbmRleENoYW5nZSA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcclxuICBwcml2YXRlIHZpZXdwb3J0PzogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGl0ZW1IZWlnaHQ6IG51bWJlciwgcHJpdmF0ZSBoZWFkZXJPZmZzZXQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5zY3JvbGxlZEluZGV4Q2hhbmdlID0gdGhpcy5pbmRleENoYW5nZS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpO1xyXG4gIH1cclxuXHJcbiAgYXR0YWNoKHZpZXdwb3J0OiBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQpOiB2b2lkIHtcclxuICAgIHRoaXMudmlld3BvcnQgPSB2aWV3cG9ydDtcclxuICAgIHRoaXMub25EYXRhTGVuZ3RoQ2hhbmdlZCgpO1xyXG4gIH1cclxuXHJcbiAgb25Db250ZW50U2Nyb2xsZWQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnVwZGF0ZUNvbnRlbnQoKTtcclxuICB9XHJcblxyXG4gIG9uRGF0YUxlbmd0aENoYW5nZWQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy52aWV3cG9ydCkge1xyXG4gICAgICB0aGlzLnZpZXdwb3J0LnNldFRvdGFsQ29udGVudFNpemUodGhpcy5kYXRhTGVuZ3RoICogdGhpcy5pdGVtSGVpZ2h0KTtcclxuICAgICAgdGhpcy51cGRhdGVDb250ZW50KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXREYXRhTGVuZ3RoKGxlbmd0aDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmRhdGFMZW5ndGggPSBsZW5ndGg7XHJcbiAgICB0aGlzLm9uRGF0YUxlbmd0aENoYW5nZWQoKTtcclxuICB9XHJcblxyXG4gIHNldFNjcm9sbEhlaWdodChyb3dIZWlnaHQ6IG51bWJlciwgaGVhZGVyT2Zmc2V0OiBudW1iZXIpIHtcclxuICAgIHRoaXMuaXRlbUhlaWdodCA9IHJvd0hlaWdodDtcclxuICAgIHRoaXMuaGVhZGVyT2Zmc2V0ID0gaGVhZGVyT2Zmc2V0O1xyXG4gICAgdGhpcy51cGRhdGVDb250ZW50KCk7XHJcbiAgfVxyXG5cclxuICBzZXRJdGVtSGVpZ2h0KHJvd0hlaWdodDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLml0ZW1IZWlnaHQgPSByb3dIZWlnaHQ7XHJcbiAgICB0aGlzLnVwZGF0ZUNvbnRlbnQoKTtcclxuICB9XHJcblxyXG4gIHNldEhlYWRlck9mZnNldChoZWFkZXJPZmZzZXQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5oZWFkZXJPZmZzZXQgPSBoZWFkZXJPZmZzZXQ7XHJcbiAgICB0aGlzLnVwZGF0ZUNvbnRlbnQoKTtcclxuICB9XHJcblxyXG4gIGRldGFjaCgpOiB2b2lkIHt9XHJcbiAgb25Db250ZW50UmVuZGVyZWQoKTogdm9pZCB7fVxyXG4gIG9uUmVuZGVyZWRPZmZzZXRDaGFuZ2VkKCk6IHZvaWQge1xyXG4gIH1cclxuICBzY3JvbGxUb0luZGV4KGluZGV4OiBudW1iZXIsIGJlaGF2aW9yOiBTY3JvbGxCZWhhdmlvcik6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVDb250ZW50KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnZpZXdwb3J0KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBhbW91bnQgPSBNYXRoLmNlaWwodGhpcy52aWV3cG9ydC5nZXRWaWV3cG9ydFNpemUoKSAvIHRoaXMuaXRlbUhlaWdodCk7XHJcbiAgICBjb25zdCBvZmZzZXQgPSB0aGlzLnZpZXdwb3J0Lm1lYXN1cmVTY3JvbGxPZmZzZXQoKSAtIHRoaXMuaGVhZGVyT2Zmc2V0O1xyXG4gICAgY29uc3QgYnVmZmVyID0gTWF0aC5jZWlsKGFtb3VudCAvIDIpO1xyXG5cclxuICAgIGNvbnN0IHNraXAgPSBNYXRoLnJvdW5kKG9mZnNldCAvIHRoaXMuaXRlbUhlaWdodCk7XHJcbiAgICBjb25zdCBpbmRleCA9IE1hdGgubWF4KDAsIHNraXApO1xyXG4gICAgY29uc3Qgc3RhcnQgPSBNYXRoLm1heCgwLCBpbmRleCAtIGJ1ZmZlcik7XHJcbiAgICBjb25zdCBlbmQgPSBNYXRoLm1pbih0aGlzLmRhdGFMZW5ndGgsIGluZGV4ICsgYW1vdW50ICsgYnVmZmVyKTtcclxuXHJcbiAgICB0aGlzLnZpZXdwb3J0LnNldFJlbmRlcmVkQ29udGVudE9mZnNldCh0aGlzLml0ZW1IZWlnaHQgKiBzdGFydCk7XHJcbiAgICB0aGlzLnZpZXdwb3J0LnNldFJlbmRlcmVkUmFuZ2UoeyBzdGFydCwgZW5kIH0pO1xyXG5cclxuICAgIHRoaXMuaW5kZXhDaGFuZ2UubmV4dChpbmRleCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,43 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { ComponentStore } from '@ngrx/component-store';
3
- import { combineLatest } from 'rxjs';
4
- import { distinctUntilChanged, map, mergeMap } from 'rxjs/operators';
5
- import { notNull } from '../../../rxjs/rxjs-operators';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "../../classes/table-store";
8
- export class SortMenuComponentStore extends ComponentStore {
9
- constructor(tableState) {
10
- super({ notSorted: [], sorted: [] });
11
- this.tableState = tableState;
12
- this.set = this.updater((state, data) => ({ ...data }));
13
- this.setSorted = this.updater((state, sorted) => ({ ...state, sorted }));
14
- this.setNotSorted = this.updater((state, notSorted) => ({ ...state, notSorted }));
15
- this.sorted$ = this.select(state => state.sorted);
16
- this.notSorted$ = this.select(state => state.notSorted);
17
- this.setDirection = this.updater((state, sort) => {
18
- const index = state.sorted.findIndex(s => s.active === sort.active);
19
- const sorted = [...state.sorted];
20
- sorted.splice(index, 1, sort);
21
- return ({ ...state, sorted });
22
- });
23
- this.reset = () => {
24
- const sorted = this.tableState.sort$.pipe(mergeMap(sort => this.tableState.metaData$.pipe(notNull(), map(meta => sort.map(s => {
25
- return { ...s, displayName: meta[s.active]?.displayName };
26
- })))));
27
- const notSorted = this.tableState.metaDataArray$.pipe(mergeMap(metas => this.tableState.sort$.pipe(map(s => metas
28
- .filter(meta => !s.some(s => s.active === meta.key) && !meta.noSort)
29
- .map(meta => ({ active: meta.key, displayName: meta.displayName }))))));
30
- this.set(combineLatest([
31
- sorted.pipe(distinctSortArray), notSorted.pipe(distinctSortArray)
32
- ]).pipe(map(([sorted, notSorted]) => ({ sorted, notSorted }))));
33
- };
34
- }
35
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: SortMenuComponentStore, deps: [{ token: i1.TableStore }], target: i0.ɵɵFactoryTarget.Injectable }); }
36
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: SortMenuComponentStore }); }
37
- }
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: SortMenuComponentStore, decorators: [{
39
- type: Injectable
40
- }], ctorParameters: () => [{ type: i1.TableStore }] });
41
- const equalSortArray = (arr1, arr2) => arr1.length === arr2.length && arr2.every(s1 => arr1.some(s2 => s1.active === s2.active));
42
- const distinctSortArray = distinctUntilChanged(equalSortArray);
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1tZW51LmNvbXBvbmVudC1zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy90YWJsZS1idWlsZGVyL2NvbXBvbmVudHMvc29ydC1tZW51L3NvcnQtbWVudS5jb21wb25lbnQtc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7O0FBR3ZELE1BQU0sT0FBTyxzQkFBdUIsU0FBUSxjQUFtQztJQUM3RSxZQUFvQixVQUFzQjtRQUN4QyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUMsQ0FBQyxDQUFBO1FBRGhCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFHbEMsUUFBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBeUIsRUFBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLEdBQUcsSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTdFLGNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQXNCLEVBQUMsRUFBRSxDQUFBLENBQUMsRUFBQyxHQUFHLEtBQUssRUFBRSxNQUFNLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFFaEYsaUJBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLFNBQXlCLEVBQUMsRUFBRSxDQUFBLENBQUMsRUFBQyxHQUFHLEtBQUssRUFBRSxTQUFTLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekYsWUFBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFBLEVBQUUsQ0FBQSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0MsZUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFBLEVBQUUsQ0FBQSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFakQsaUJBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFDLElBQWlCLEVBQUMsRUFBRTtZQUNyRCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3BFLE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDakMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVCLE9BQU8sQ0FBQyxFQUFDLEdBQUcsS0FBSyxFQUFDLE1BQU0sRUFBQyxDQUFDLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUE7UUFFRixVQUFLLEdBQUcsR0FBRyxFQUFFO1lBQ1gsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUN2QyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQzdDLE9BQU8sRUFBRSxFQUNULEdBQUcsQ0FDSCxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0JBQ25CLE9BQVEsRUFBQyxHQUFHLENBQUMsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxXQUFXLEVBQWtCLENBQUE7WUFBQSxDQUFDLENBQUMsQ0FDOUUsQ0FBQyxDQUFDLENBQ0osQ0FBQztZQUNGLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQzVELEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUNqQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLO2lCQUNYLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUEsRUFBRSxDQUFBLENBQUMsQ0FBQyxNQUFNLEtBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztpQkFDaEUsR0FBRyxDQUFDLElBQUksQ0FBQSxFQUFFLENBQUEsQ0FBQyxFQUFDLE1BQU0sRUFBQyxJQUFJLENBQUMsR0FBRyxFQUFDLFdBQVcsRUFBRyxJQUFJLENBQUMsV0FBVyxFQUFrQixDQUFBLENBQUMsQ0FBQyxDQUNsRixDQUNGLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDO2dCQUNyQixNQUFNLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEVBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQzthQUNqRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFDLFNBQVMsQ0FBQyxFQUFDLEVBQUUsQ0FBQSxDQUFDLEVBQUMsTUFBTSxFQUFDLFNBQVMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUQsQ0FBQyxDQUFBO0lBbkNELENBQUM7OEdBSFUsc0JBQXNCO2tIQUF0QixzQkFBc0I7OzJGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVU7O0FBbURYLE1BQU0sY0FBYyxHQUFHLENBQUMsSUFBbUIsRUFBQyxJQUFtQixFQUFFLEVBQUUsQ0FDakUsSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUM1RixNQUFNLGlCQUFpQixHQUFHLG9CQUFvQixDQUFpQixjQUFjLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU29ydCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRTdG9yZSB9IGZyb20gJ0BuZ3J4L2NvbXBvbmVudC1zdG9yZSc7XHJcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgbWVyZ2VNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFRhYmxlU3RvcmUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3RhYmxlLXN0b3JlJztcclxuaW1wb3J0IHsgbm90TnVsbCB9IGZyb20gJy4uLy4uLy4uL3J4anMvcnhqcy1vcGVyYXRvcnMnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgU29ydE1lbnVDb21wb25lbnRTdG9yZSBleHRlbmRzIENvbXBvbmVudFN0b3JlPENvbXBvbmVudFN0b3JlU3RhdGU+IHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRhYmxlU3RhdGU6IFRhYmxlU3RvcmUpe1xyXG4gICAgc3VwZXIoeyBub3RTb3J0ZWQ6W10sIHNvcnRlZDogW119KVxyXG4gIH1cclxuICBwcml2YXRlIHNldCA9IHRoaXMudXBkYXRlcigoc3RhdGUsIGRhdGE6IENvbXBvbmVudFN0b3JlU3RhdGUpPT4gKHsuLi5kYXRhfSkpO1xyXG5cclxuICBzZXRTb3J0ZWQgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBzb3J0ZWQ6IFNvcnRXaXRoTmFtZVtdKT0+KHsuLi5zdGF0ZSwgc29ydGVkfSkpO1xyXG5cclxuICBzZXROb3RTb3J0ZWQgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBub3RTb3J0ZWQ6IFNvcnRXaXRoTmFtZVtdKT0+KHsuLi5zdGF0ZSwgbm90U29ydGVkfSkpO1xyXG4gIHNvcnRlZCQgPSB0aGlzLnNlbGVjdChzdGF0ZT0+c3RhdGUuc29ydGVkKTtcclxuICBub3RTb3J0ZWQkID0gdGhpcy5zZWxlY3Qoc3RhdGU9PnN0YXRlLm5vdFNvcnRlZCk7XHJcblxyXG4gIHNldERpcmVjdGlvbiA9IHRoaXMudXBkYXRlcigoc3RhdGUsc29ydDpTb3J0V2l0aE5hbWUpPT57XHJcbiAgICBjb25zdCBpbmRleCA9IHN0YXRlLnNvcnRlZC5maW5kSW5kZXgocyA9PiBzLmFjdGl2ZSA9PT0gc29ydC5hY3RpdmUpO1xyXG4gICAgY29uc3Qgc29ydGVkID0gWy4uLnN0YXRlLnNvcnRlZF07XHJcbiAgICBzb3J0ZWQuc3BsaWNlKGluZGV4LDEsc29ydCk7XHJcbiAgICByZXR1cm4gKHsuLi5zdGF0ZSxzb3J0ZWR9KTtcclxuICB9KVxyXG5cclxuICByZXNldCA9ICgpID0+IHtcclxuICAgIGNvbnN0IHNvcnRlZCA9IHRoaXMudGFibGVTdGF0ZS5zb3J0JC5waXBlKFxyXG4gICAgICBtZXJnZU1hcChzb3J0ID0+IHRoaXMudGFibGVTdGF0ZS5tZXRhRGF0YSQucGlwZShcclxuICAgICAgICBub3ROdWxsKCksXHJcbiAgICAgICAgbWFwKFxyXG4gICAgICAgIG1ldGEgPT4gc29ydC5tYXAocyA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKHsuLi5zLCBkaXNwbGF5TmFtZTogbWV0YVtzLmFjdGl2ZV0/LmRpc3BsYXlOYW1lfSBhcyBTb3J0V2l0aE5hbWUpfSlcclxuICAgICAgKSkpXHJcbiAgICApO1xyXG4gICAgY29uc3Qgbm90U29ydGVkID0gdGhpcy50YWJsZVN0YXRlLm1ldGFEYXRhQXJyYXkkLnBpcGUobWVyZ2VNYXAoXHJcbiAgICAgIG1ldGFzID0+IHRoaXMudGFibGVTdGF0ZS5zb3J0JC5waXBlKFxyXG4gICAgICAgIG1hcChzID0+IG1ldGFzXHJcbiAgICAgICAgICAuZmlsdGVyKG1ldGEgPT4gIXMuc29tZShzPT5zLmFjdGl2ZT09PSBtZXRhLmtleSkgJiYgIW1ldGEubm9Tb3J0KVxyXG4gICAgICAgICAgLm1hcChtZXRhPT4oe2FjdGl2ZTptZXRhLmtleSxkaXNwbGF5TmFtZSA6IG1ldGEuZGlzcGxheU5hbWV9IGFzIFNvcnRXaXRoTmFtZSkpKVxyXG4gICAgICApXHJcbiAgICApKTtcclxuICAgIHRoaXMuc2V0KGNvbWJpbmVMYXRlc3QoW1xyXG4gICAgICBzb3J0ZWQucGlwZShkaXN0aW5jdFNvcnRBcnJheSksbm90U29ydGVkLnBpcGUoZGlzdGluY3RTb3J0QXJyYXkpXHJcbiAgICBdKS5waXBlKG1hcCgoW3NvcnRlZCxub3RTb3J0ZWRdKT0+KHtzb3J0ZWQsbm90U29ydGVkfSkpKSk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudFN0b3JlU3RhdGUge1xyXG4gIHNvcnRlZCA6IFNvcnRXaXRoTmFtZVtdO1xyXG4gIG5vdFNvcnRlZDogU29ydFdpdGhOYW1lW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU29ydFdpdGhOYW1lIGV4dGVuZHMgU29ydHtcclxuICBkaXNwbGF5TmFtZSA6IHN0cmluZztcclxufVxyXG5cclxuY29uc3QgZXF1YWxTb3J0QXJyYXkgPSAoYXJyMTpTb3J0V2l0aE5hbWVbXSxhcnIyOlNvcnRXaXRoTmFtZVtdKSA9PlxyXG4gIGFycjEubGVuZ3RoID09PSBhcnIyLmxlbmd0aCAmJiBhcnIyLmV2ZXJ5KHMxID0+IGFycjEuc29tZShzMiA9PiBzMS5hY3RpdmUgPT09IHMyLmFjdGl2ZSkpO1xyXG5jb25zdCBkaXN0aW5jdFNvcnRBcnJheSA9IGRpc3RpbmN0VW50aWxDaGFuZ2VkPFNvcnRXaXRoTmFtZVtdPihlcXVhbFNvcnRBcnJheSk7XHJcbiJdfQ==