@one-paragon/angular-utilities 1.1.8 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (404) hide show
  1. package/action-state/action-state-spinner/action-state-spinner.component.d.ts +12 -0
  2. package/action-state/action-state-ui/action-state-ui.module.d.ts +7 -0
  3. package/{src/action-state/index.ts → action-state/index.d.ts} +4 -8
  4. package/action-state/ngrx-ext/ngrx-ext.module.d.ts +8 -0
  5. package/action-state/ngrx.d.ts +31 -0
  6. package/esm2022/action-state/action-state-spinner/action-state-spinner.component.mjs +24 -0
  7. package/esm2022/action-state/action-state-ui/action-state-ui.module.mjs +20 -0
  8. package/esm2022/action-state/index.mjs +8 -0
  9. package/esm2022/action-state/ngrx-ext/ngrx-ext.module.mjs +23 -0
  10. package/esm2022/action-state/ngrx.mjs +42 -0
  11. package/esm2022/http-request-state/HttpRequestStateFactory.mjs +52 -0
  12. package/esm2022/http-request-state/HttpRequestStateStore.mjs +101 -0
  13. package/esm2022/http-request-state/directives/HttpStateDirectiveBase.mjs +34 -0
  14. package/esm2022/http-request-state/directives/http-error-state-directive.mjs +29 -0
  15. package/esm2022/http-request-state/directives/http-inProgress-state-directive.mjs +29 -0
  16. package/esm2022/http-request-state/directives/http-notStarted-state-directive.mjs +29 -0
  17. package/esm2022/http-request-state/directives/http-success-state-directive.mjs +34 -0
  18. package/esm2022/http-request-state/directives/index.mjs +6 -0
  19. package/esm2022/http-request-state/directives/request-state-directive.mjs +60 -0
  20. package/esm2022/http-request-state/helpers.mjs +22 -0
  21. package/esm2022/http-request-state/http-request-state.mjs +39 -0
  22. package/esm2022/http-request-state/http-state-module.mjs +40 -0
  23. package/esm2022/http-request-state/index.mjs +7 -0
  24. package/esm2022/http-request-state/rxjs/getRequestorBody.mjs +4 -0
  25. package/esm2022/http-request-state/rxjs/getRequestorState.mjs +3 -0
  26. package/esm2022/http-request-state/rxjs/index.mjs +5 -0
  27. package/esm2022/http-request-state/rxjs/tapError.mjs +12 -0
  28. package/esm2022/http-request-state/rxjs/tapSuccess.mjs +12 -0
  29. package/esm2022/http-request-state/types.mjs +16 -0
  30. package/esm2022/ngrx/actionable-selector.mjs +73 -0
  31. package/esm2022/ngrx/index.mjs +2 -0
  32. package/esm2022/one-paragon-angular-utilities.mjs +5 -0
  33. package/esm2022/public-api.mjs +20 -0
  34. package/esm2022/rxjs/defaultShareReplay.mjs +7 -0
  35. package/esm2022/rxjs/index.mjs +6 -0
  36. package/esm2022/rxjs/mapError.mjs +8 -0
  37. package/esm2022/rxjs/rxjs-operators.mjs +92 -0
  38. package/esm2022/rxjs/subjectifier.mjs +15 -0
  39. package/esm2022/rxjs/subscriber.directive.mjs +52 -0
  40. package/esm2022/table-builder/classes/DefaultSettings.mjs +6 -0
  41. package/esm2022/table-builder/classes/MatTableObservableDataSource.mjs +21 -0
  42. package/esm2022/table-builder/classes/TableBuilderConfig.mjs +18 -0
  43. package/esm2022/table-builder/classes/TableBuilderDataSource.mjs +50 -0
  44. package/esm2022/table-builder/classes/TableState.mjs +47 -0
  45. package/esm2022/table-builder/classes/display-col.mjs +2 -0
  46. package/esm2022/table-builder/classes/filter-info.mjs +73 -0
  47. package/esm2022/table-builder/classes/table-builder-general-settings.mjs +107 -0
  48. package/esm2022/table-builder/classes/table-builder.mjs +74 -0
  49. package/esm2022/table-builder/classes/table-store.mjs +357 -0
  50. package/esm2022/table-builder/components/array-column.component.mjs +57 -0
  51. package/esm2022/table-builder/components/column-builder/column-builder.component.mjs +125 -0
  52. package/esm2022/table-builder/components/column-builder/column-helpers.mjs +26 -0
  53. package/esm2022/table-builder/components/date-filter/date-filter.component.mjs +29 -0
  54. package/esm2022/table-builder/components/date-time-filter/date-time-filter.component.mjs +24 -0
  55. package/esm2022/table-builder/components/filter/filter.component.mjs +67 -0
  56. package/esm2022/table-builder/components/filter/in-list/in-list-filter.component.mjs +101 -0
  57. package/esm2022/table-builder/components/gen-col-displayer/gen-col-displayer.component.mjs +53 -0
  58. package/esm2022/table-builder/components/generic-table/generic-table.component.mjs +225 -0
  59. package/esm2022/table-builder/components/generic-table/paginator.component.mjs +94 -0
  60. package/esm2022/table-builder/components/group-by-list/group-by-list.component.mjs +23 -0
  61. package/esm2022/table-builder/components/header-menu/header-menu.component.mjs +100 -0
  62. package/esm2022/table-builder/components/in-filter/in-filter.component.mjs +64 -0
  63. package/esm2022/table-builder/components/index.mjs +10 -0
  64. package/esm2022/table-builder/components/initialization-component/initialization-component.mjs +40 -0
  65. package/esm2022/table-builder/components/link-column.component.mjs +78 -0
  66. package/esm2022/table-builder/components/number-filter/number-filter.component.mjs +29 -0
  67. package/esm2022/table-builder/components/profiles-menu/profiles-menu.component.mjs +66 -0
  68. package/esm2022/table-builder/components/scroll-strategy.mjs +68 -0
  69. package/esm2022/table-builder/components/sort-menu/sort-menu.component-store.mjs +44 -0
  70. package/esm2022/table-builder/components/sort-menu/sort-menu.component.mjs +81 -0
  71. package/esm2022/table-builder/components/table-container/table-container-imports.mjs +26 -0
  72. package/esm2022/table-builder/components/table-container/table-container.helpers/data-state.helpers.mjs +135 -0
  73. package/esm2022/table-builder/components/table-container/table-container.helpers/filter-state.helpers.mjs +83 -0
  74. package/esm2022/table-builder/components/table-container/table-container.helpers/groupBy.helpers.mjs +71 -0
  75. package/esm2022/table-builder/components/table-container/table-container.helpers/sort-state.helpers.mjs +36 -0
  76. package/esm2022/table-builder/components/table-container/table-container.mjs +287 -0
  77. package/esm2022/table-builder/components/table-container/tableProps.mjs +7 -0
  78. package/esm2022/table-builder/components/table-container/virtual-scroll-container.mjs +119 -0
  79. package/esm2022/table-builder/components/table-container-filter/filter-list/filter-list.component.mjs +47 -0
  80. package/esm2022/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.mjs +36 -0
  81. package/esm2022/table-builder/components/table-container-filter/table-wrapper-filter-store.mjs +25 -0
  82. package/esm2022/table-builder/directives/custom-cell-directive.mjs +70 -0
  83. package/esm2022/table-builder/directives/index.mjs +6 -0
  84. package/esm2022/table-builder/directives/multi-sort.directive.mjs +50 -0
  85. package/esm2022/table-builder/directives/resize-column.directive.mjs +88 -0
  86. package/esm2022/table-builder/directives/table-wrapper.directive.mjs +20 -0
  87. package/esm2022/table-builder/directives/tb-filter.directive.mjs +410 -0
  88. package/esm2022/table-builder/enums/filterTypes.mjs +72 -0
  89. package/esm2022/table-builder/functions/boolean-filter-function.mjs +10 -0
  90. package/esm2022/table-builder/functions/date-filter-function.mjs +58 -0
  91. package/esm2022/table-builder/functions/download-data.mjs +12 -0
  92. package/esm2022/table-builder/functions/null-filter-function.mjs +8 -0
  93. package/esm2022/table-builder/functions/number-filter-function.mjs +32 -0
  94. package/esm2022/table-builder/functions/sort-data-function.mjs +17 -0
  95. package/esm2022/table-builder/functions/string-filter-function.mjs +41 -0
  96. package/esm2022/table-builder/interfaces/ColumnInfo.mjs +2 -0
  97. package/esm2022/table-builder/interfaces/dictionary.mjs +2 -0
  98. package/esm2022/table-builder/interfaces/report-def.mjs +50 -0
  99. package/esm2022/table-builder/ngrx/tableBuilderStateStore.mjs +154 -0
  100. package/esm2022/table-builder/pipes/column-total.pipe.mjs +22 -0
  101. package/esm2022/table-builder/pipes/format-filter-type.pipe.mjs +18 -0
  102. package/esm2022/table-builder/pipes/format-filter-value.pipe.mjs +45 -0
  103. package/esm2022/table-builder/pipes/key-display.mjs +20 -0
  104. package/esm2022/table-builder/services/export-to-csv.service.mjs +91 -0
  105. package/esm2022/table-builder/services/link-creator.service.mjs +50 -0
  106. package/esm2022/table-builder/services/table-template-service.mjs +57 -0
  107. package/esm2022/table-builder/services/transform-creator.mjs +105 -0
  108. package/esm2022/table-builder/table-builder.module.mjs +124 -0
  109. package/esm2022/utilities/array-helpers.mjs +14 -0
  110. package/esm2022/utilities/directives/auto-focus.directive.mjs +27 -0
  111. package/esm2022/utilities/directives/clickEmitterDirective.mjs +22 -0
  112. package/esm2022/utilities/directives/clickSubject.mjs +28 -0
  113. package/esm2022/utilities/directives/conditional-classes.directive.mjs +36 -0
  114. package/esm2022/utilities/directives/dialog-service.mjs +23 -0
  115. package/esm2022/utilities/directives/dialog.mjs +146 -0
  116. package/esm2022/utilities/directives/mat-toggle-group-directive.mjs +60 -0
  117. package/esm2022/utilities/directives/prevent-enter.directive.mjs +20 -0
  118. package/esm2022/utilities/directives/stop-propagation.directive.mjs +26 -0
  119. package/esm2022/utilities/directives/styler.mjs +42 -0
  120. package/esm2022/utilities/directives/trim-whitespace.directive.mjs +30 -0
  121. package/esm2022/utilities/index.mjs +16 -0
  122. package/esm2022/utilities/module.mjs +90 -0
  123. package/esm2022/utilities/pipes/function.pipe.mjs +22 -0
  124. package/esm2022/utilities/pipes/phone.pipe.mjs +20 -0
  125. package/esm2022/utilities/pipes/space-case.pipes.mjs +28 -0
  126. package/fesm2022/one-paragon-angular-utilities.mjs +5564 -0
  127. package/fesm2022/one-paragon-angular-utilities.mjs.map +1 -0
  128. package/http-request-state/HttpRequestStateFactory.d.ts +17 -0
  129. package/http-request-state/HttpRequestStateStore.d.ts +49 -0
  130. package/http-request-state/directives/HttpStateDirectiveBase.d.ts +16 -0
  131. package/http-request-state/directives/http-error-state-directive.d.ts +12 -0
  132. package/http-request-state/directives/http-inProgress-state-directive.d.ts +12 -0
  133. package/http-request-state/directives/http-notStarted-state-directive.d.ts +12 -0
  134. package/http-request-state/directives/http-success-state-directive.d.ts +21 -0
  135. package/{src/http-request-state/directives/index.ts → http-request-state/directives/index.d.ts} +5 -5
  136. package/http-request-state/directives/request-state-directive.d.ts +35 -0
  137. package/http-request-state/helpers.d.ts +9 -0
  138. package/http-request-state/http-request-state.d.ts +12 -0
  139. package/http-request-state/http-state-module.d.ts +11 -0
  140. package/{src/http-request-state/index.ts → http-request-state/index.d.ts} +6 -6
  141. package/http-request-state/rxjs/getRequestorBody.d.ts +3 -0
  142. package/http-request-state/rxjs/getRequestorState.d.ts +3 -0
  143. package/{src/http-request-state/rxjs/index.ts → http-request-state/rxjs/index.d.ts} +4 -4
  144. package/http-request-state/rxjs/tapError.d.ts +3 -0
  145. package/http-request-state/rxjs/tapSuccess.d.ts +3 -0
  146. package/http-request-state/types.d.ts +41 -0
  147. package/index.d.ts +5 -0
  148. package/ngrx/actionable-selector.d.ts +17 -0
  149. package/ngrx/index.d.ts +1 -0
  150. package/package.json +30 -16
  151. package/{src/public-api.ts → public-api.d.ts} +16 -35
  152. package/rxjs/defaultShareReplay.d.ts +2 -0
  153. package/{src/rxjs/index.ts → rxjs/index.d.ts} +5 -5
  154. package/rxjs/mapError.d.ts +2 -0
  155. package/rxjs/rxjs-operators.d.ts +13 -0
  156. package/rxjs/subjectifier.d.ts +9 -0
  157. package/rxjs/subscriber.directive.d.ts +14 -0
  158. package/table-builder/classes/DefaultSettings.d.ts +9 -0
  159. package/table-builder/classes/MatTableObservableDataSource.d.ts +9 -0
  160. package/table-builder/classes/TableBuilderConfig.d.ts +21 -0
  161. package/table-builder/classes/TableBuilderDataSource.d.ts +14 -0
  162. package/table-builder/classes/TableState.d.ts +56 -0
  163. package/{src/table-builder/classes/display-col.ts → table-builder/classes/display-col.d.ts} +5 -5
  164. package/table-builder/classes/filter-info.d.ts +127 -0
  165. package/table-builder/classes/table-builder-general-settings.d.ts +72 -0
  166. package/table-builder/classes/table-builder.d.ts +18 -0
  167. package/table-builder/classes/table-store.d.ts +146 -0
  168. package/table-builder/components/array-column.component.d.ts +15 -0
  169. package/table-builder/components/column-builder/column-builder.component.d.ts +51 -0
  170. package/table-builder/components/column-builder/column-helpers.d.ts +28 -0
  171. package/table-builder/components/date-filter/date-filter.component.d.ts +10 -0
  172. package/table-builder/components/date-time-filter/date-time-filter.component.d.ts +10 -0
  173. package/table-builder/components/filter/filter.component.d.ts +112 -0
  174. package/table-builder/components/filter/in-list/in-list-filter.component.d.ts +27 -0
  175. package/table-builder/components/gen-col-displayer/gen-col-displayer.component.d.ts +16 -0
  176. package/table-builder/components/generic-table/generic-table.component.d.ts +68 -0
  177. package/table-builder/components/generic-table/paginator.component.d.ts +30 -0
  178. package/table-builder/components/group-by-list/group-by-list.component.d.ts +7 -0
  179. package/table-builder/components/header-menu/header-menu.component.d.ts +25 -0
  180. package/table-builder/components/in-filter/in-filter.component.d.ts +21 -0
  181. package/{src/table-builder/components/index.ts → table-builder/components/index.d.ts} +9 -9
  182. package/table-builder/components/initialization-component/initialization-component.d.ts +13 -0
  183. package/table-builder/components/link-column.component.d.ts +25 -0
  184. package/table-builder/components/number-filter/number-filter.component.d.ts +12 -0
  185. package/table-builder/components/profiles-menu/profiles-menu.component.d.ts +32 -0
  186. package/table-builder/components/scroll-strategy.d.ts +25 -0
  187. package/table-builder/components/sort-menu/sort-menu.component-store.d.ts +24 -0
  188. package/table-builder/components/sort-menu/sort-menu.component.d.ts +25 -0
  189. package/{src/table-builder/components/table-container/table-container-imports.ts → table-builder/components/table-container/table-container-imports.d.ts} +14 -32
  190. package/table-builder/components/table-container/table-container.d.ts +73 -0
  191. package/table-builder/components/table-container/table-container.helpers/data-state.helpers.d.ts +6 -0
  192. package/table-builder/components/table-container/table-container.helpers/filter-state.helpers.d.ts +17 -0
  193. package/table-builder/components/table-container/table-container.helpers/groupBy.helpers.d.ts +17 -0
  194. package/table-builder/components/table-container/table-container.helpers/sort-state.helpers.d.ts +8 -0
  195. package/table-builder/components/table-container/tableProps.d.ts +11 -0
  196. package/table-builder/components/table-container/virtual-scroll-container.d.ts +23 -0
  197. package/table-builder/components/table-container-filter/filter-list/filter-list.component.d.ts +16 -0
  198. package/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.d.ts +14 -0
  199. package/table-builder/components/table-container-filter/table-wrapper-filter-store.d.ts +14 -0
  200. package/table-builder/directives/custom-cell-directive.d.ts +31 -0
  201. package/{src/table-builder/directives/index.ts → table-builder/directives/index.d.ts} +5 -6
  202. package/table-builder/directives/multi-sort.directive.d.ts +11 -0
  203. package/table-builder/directives/resize-column.directive.d.ts +44 -0
  204. package/table-builder/directives/table-wrapper.directive.d.ts +8 -0
  205. package/table-builder/directives/tb-filter.directive.d.ts +120 -0
  206. package/table-builder/enums/filterTypes.d.ts +77 -0
  207. package/table-builder/functions/boolean-filter-function.d.ts +3 -0
  208. package/table-builder/functions/date-filter-function.d.ts +4 -0
  209. package/table-builder/functions/download-data.d.ts +1 -0
  210. package/table-builder/functions/null-filter-function.d.ts +2 -0
  211. package/table-builder/functions/number-filter-function.d.ts +4 -0
  212. package/table-builder/functions/sort-data-function.d.ts +6 -0
  213. package/table-builder/functions/string-filter-function.d.ts +7 -0
  214. package/{src/table-builder/interfaces/ColumnInfo.ts → table-builder/interfaces/ColumnInfo.d.ts} +6 -7
  215. package/{src/table-builder/interfaces/dictionary.ts → table-builder/interfaces/dictionary.d.ts} +3 -3
  216. package/table-builder/interfaces/report-def.d.ts +147 -0
  217. package/table-builder/ngrx/tableBuilderStateStore.d.ts +70 -0
  218. package/table-builder/pipes/column-total.pipe.d.ts +8 -0
  219. package/table-builder/pipes/format-filter-type.pipe.d.ts +8 -0
  220. package/table-builder/pipes/format-filter-value.pipe.d.ts +14 -0
  221. package/table-builder/pipes/key-display.d.ts +11 -0
  222. package/table-builder/services/export-to-csv.service.d.ts +22 -0
  223. package/table-builder/services/link-creator.service.d.ts +16 -0
  224. package/table-builder/services/table-template-service.d.ts +15 -0
  225. package/table-builder/services/transform-creator.d.ts +21 -0
  226. package/table-builder/table-builder.module.d.ts +21 -0
  227. package/utilities/array-helpers.d.ts +1 -0
  228. package/utilities/directives/auto-focus.directive.d.ts +10 -0
  229. package/utilities/directives/clickEmitterDirective.d.ts +7 -0
  230. package/utilities/directives/clickSubject.d.ts +9 -0
  231. package/utilities/directives/conditional-classes.directive.d.ts +14 -0
  232. package/utilities/directives/dialog-service.d.ts +10 -0
  233. package/utilities/directives/dialog.d.ts +47 -0
  234. package/utilities/directives/mat-toggle-group-directive.d.ts +21 -0
  235. package/utilities/directives/prevent-enter.directive.d.ts +6 -0
  236. package/utilities/directives/stop-propagation.directive.d.ts +7 -0
  237. package/utilities/directives/styler.d.ts +17 -0
  238. package/utilities/directives/trim-whitespace.directive.d.ts +9 -0
  239. package/{src/utilities/index.ts → utilities/index.d.ts} +15 -22
  240. package/utilities/module.d.ts +19 -0
  241. package/utilities/pipes/function.pipe.d.ts +7 -0
  242. package/utilities/pipes/phone.pipe.d.ts +7 -0
  243. package/utilities/pipes/space-case.pipes.d.ts +17 -0
  244. package/karma.conf.js +0 -44
  245. package/ng-package.json +0 -7
  246. package/src/action-state/action-state-spinner/action-state-spinner.component.css +0 -16
  247. package/src/action-state/action-state-spinner/action-state-spinner.component.html +0 -6
  248. package/src/action-state/action-state-spinner/action-state-spinner.component.spec.ts +0 -25
  249. package/src/action-state/action-state-spinner/action-state-spinner.component.ts +0 -26
  250. package/src/action-state/action-state-ui/action-state-ui.module.ts +0 -13
  251. package/src/action-state/ngrx-ext/ngrx-ext.module.ts +0 -15
  252. package/src/action-state/ngrx.ts +0 -69
  253. package/src/http-request-state/HttpRequestStateFactory.ts +0 -66
  254. package/src/http-request-state/HttpRequestStateStore.ts +0 -151
  255. package/src/http-request-state/directives/HttpStateDirectiveBase.ts +0 -38
  256. package/src/http-request-state/directives/http-error-state-directive.ts +0 -32
  257. package/src/http-request-state/directives/http-inProgress-state-directive.ts +0 -32
  258. package/src/http-request-state/directives/http-notStarted-state-directive.ts +0 -31
  259. package/src/http-request-state/directives/http-success-state-directive.ts +0 -40
  260. package/src/http-request-state/directives/request-state-directive.spec.ts +0 -72
  261. package/src/http-request-state/directives/request-state-directive.ts +0 -79
  262. package/src/http-request-state/helpers.ts +0 -30
  263. package/src/http-request-state/http-request-state.ts +0 -69
  264. package/src/http-request-state/http-state-module.ts +0 -23
  265. package/src/http-request-state/observable.spec.ts +0 -43
  266. package/src/http-request-state/rxjs/getRequestorBody.ts +0 -10
  267. package/src/http-request-state/rxjs/getRequestorState.ts +0 -8
  268. package/src/http-request-state/rxjs/tapError.ts +0 -16
  269. package/src/http-request-state/rxjs/tapSuccess.ts +0 -16
  270. package/src/http-request-state/strategies.spec.ts +0 -42
  271. package/src/http-request-state/types.ts +0 -56
  272. package/src/ngrx/actionable-selector.ts +0 -95
  273. package/src/ngrx/index.ts +0 -1
  274. package/src/rxjs/defaultShareReplay.ts +0 -8
  275. package/src/rxjs/mapError.ts +0 -8
  276. package/src/rxjs/rxjs-operators.ts +0 -132
  277. package/src/rxjs/subjectifier.ts +0 -15
  278. package/src/rxjs/subscriber.directive.ts +0 -57
  279. package/src/specs/clickSubject.spec.ts +0 -95
  280. package/src/specs/dialog.spec.ts +0 -101
  281. package/src/specs/toggleGroupDirective.spec.ts +0 -229
  282. package/src/table-builder/classes/DefaultSettings.ts +0 -11
  283. package/src/table-builder/classes/MatTableObservableDataSource.ts +0 -23
  284. package/src/table-builder/classes/TableBuilderConfig.ts +0 -35
  285. package/src/table-builder/classes/TableBuilderDataSource.ts +0 -57
  286. package/src/table-builder/classes/TableState.ts +0 -87
  287. package/src/table-builder/classes/filter-info.ts +0 -131
  288. package/src/table-builder/classes/table-builder-general-settings.ts +0 -115
  289. package/src/table-builder/classes/table-builder.ts +0 -94
  290. package/src/table-builder/classes/table-store.ts +0 -435
  291. package/src/table-builder/components/array-column.component.ts +0 -36
  292. package/src/table-builder/components/column-builder/column-builder.component.html +0 -61
  293. package/src/table-builder/components/column-builder/column-builder.component.scss +0 -43
  294. package/src/table-builder/components/column-builder/column-builder.component.spec.ts +0 -49
  295. package/src/table-builder/components/column-builder/column-builder.component.ts +0 -137
  296. package/src/table-builder/components/column-builder/column-helpers.ts +0 -36
  297. package/src/table-builder/components/date-filter/date-filter.component.html +0 -23
  298. package/src/table-builder/components/date-filter/date-filter.component.ts +0 -24
  299. package/src/table-builder/components/date-time-filter/date-time-filter.component.html +0 -9
  300. package/src/table-builder/components/date-time-filter/date-time-filter.component.ts +0 -22
  301. package/src/table-builder/components/filter/filter.component.html +0 -88
  302. package/src/table-builder/components/filter/filter.component.scss +0 -64
  303. package/src/table-builder/components/filter/filter.component.spec.ts +0 -87
  304. package/src/table-builder/components/filter/filter.component.ts +0 -55
  305. package/src/table-builder/components/filter/in-list/in-list-filter.component.ts +0 -92
  306. package/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.html +0 -55
  307. package/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.scss +0 -57
  308. package/src/table-builder/components/gen-col-displayer/gen-col-displayer.component.ts +0 -57
  309. package/src/table-builder/components/generic-table/generic-table.component.html +0 -71
  310. package/src/table-builder/components/generic-table/generic-table.component.scss +0 -51
  311. package/src/table-builder/components/generic-table/generic-table.component.ts +0 -264
  312. package/src/table-builder/components/generic-table/paginator.component.ts +0 -106
  313. package/src/table-builder/components/group-by-list/group-by-list.component.css +0 -8
  314. package/src/table-builder/components/group-by-list/group-by-list.component.html +0 -12
  315. package/src/table-builder/components/group-by-list/group-by-list.component.spec.ts +0 -23
  316. package/src/table-builder/components/group-by-list/group-by-list.component.ts +0 -21
  317. package/src/table-builder/components/header-menu/header-menu.component.html +0 -104
  318. package/src/table-builder/components/header-menu/header-menu.component.scss +0 -96
  319. package/src/table-builder/components/header-menu/header-menu.component.ts +0 -98
  320. package/src/table-builder/components/in-filter/in-filter.component.css +0 -3
  321. package/src/table-builder/components/in-filter/in-filter.component.html +0 -20
  322. package/src/table-builder/components/in-filter/in-filter.component.ts +0 -64
  323. package/src/table-builder/components/initialization-component/initialization-component.html +0 -29
  324. package/src/table-builder/components/initialization-component/initialization-component.ts +0 -24
  325. package/src/table-builder/components/link-column.component.ts +0 -47
  326. package/src/table-builder/components/number-filter/number-filter.component.css +0 -10
  327. package/src/table-builder/components/number-filter/number-filter.component.html +0 -19
  328. package/src/table-builder/components/number-filter/number-filter.component.spec.ts +0 -30
  329. package/src/table-builder/components/number-filter/number-filter.component.ts +0 -25
  330. package/src/table-builder/components/profiles-menu/profiles-menu.component.html +0 -74
  331. package/src/table-builder/components/profiles-menu/profiles-menu.component.scss +0 -98
  332. package/src/table-builder/components/profiles-menu/profiles-menu.component.spec.ts +0 -23
  333. package/src/table-builder/components/profiles-menu/profiles-menu.component.ts +0 -65
  334. package/src/table-builder/components/scroll-strategy.ts +0 -89
  335. package/src/table-builder/components/sort-menu/sort-menu.component-store.ts +0 -63
  336. package/src/table-builder/components/sort-menu/sort-menu.component.html +0 -111
  337. package/src/table-builder/components/sort-menu/sort-menu.component.scss +0 -119
  338. package/src/table-builder/components/sort-menu/sort-menu.component.ts +0 -95
  339. package/src/table-builder/components/table-container/table-container.css +0 -54
  340. package/src/table-builder/components/table-container/table-container.helpers/data-state.helpers.ts +0 -141
  341. package/src/table-builder/components/table-container/table-container.helpers/filter-state.helpers.ts +0 -106
  342. package/src/table-builder/components/table-container/table-container.helpers/groupBy.helpers.ts +0 -86
  343. package/src/table-builder/components/table-container/table-container.helpers/sort-state.helpers.ts +0 -45
  344. package/src/table-builder/components/table-container/table-container.html +0 -96
  345. package/src/table-builder/components/table-container/table-container.spec.ts +0 -154
  346. package/src/table-builder/components/table-container/table-container.ts +0 -319
  347. package/src/table-builder/components/table-container/tableProps.ts +0 -18
  348. package/src/table-builder/components/table-container/virtual-scroll-container.ts +0 -141
  349. package/src/table-builder/components/table-container-filter/filter-list/filter-list.component.html +0 -31
  350. package/src/table-builder/components/table-container-filter/filter-list/filter-list.component.ts +0 -52
  351. package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.css +0 -42
  352. package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.html +0 -10
  353. package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.spec.ts +0 -86
  354. package/src/table-builder/components/table-container-filter/gen-filter-displayer/gen-filter-displayer.component.ts +0 -38
  355. package/src/table-builder/components/table-container-filter/table-wrapper-filter-store.ts +0 -23
  356. package/src/table-builder/directives/custom-cell-directive.ts +0 -58
  357. package/src/table-builder/directives/multi-sort.directive.spec.ts +0 -124
  358. package/src/table-builder/directives/multi-sort.directive.ts +0 -49
  359. package/src/table-builder/directives/resize-column.directive.ts +0 -105
  360. package/src/table-builder/directives/table-wrapper.directive.ts +0 -14
  361. package/src/table-builder/directives/tb-filter.directive.ts +0 -370
  362. package/src/table-builder/enums/filterTypes.ts +0 -79
  363. package/src/table-builder/functions/boolean-filter-function.ts +0 -13
  364. package/src/table-builder/functions/date-filter-function.ts +0 -69
  365. package/src/table-builder/functions/download-data.ts +0 -11
  366. package/src/table-builder/functions/null-filter-function.ts +0 -9
  367. package/src/table-builder/functions/number-filter-function.ts +0 -42
  368. package/src/table-builder/functions/sort-data-function.ts +0 -23
  369. package/src/table-builder/functions/string-filter-function.ts +0 -52
  370. package/src/table-builder/interfaces/column-template.ts +0 -9
  371. package/src/table-builder/interfaces/report-def.ts +0 -155
  372. package/src/table-builder/ngrx/tableBuilderStateStore.ts +0 -199
  373. package/src/table-builder/pipes/column-total.pipe.ts +0 -17
  374. package/src/table-builder/pipes/format-filter-type.pipe.ts +0 -12
  375. package/src/table-builder/pipes/format-filter-value.pipe.ts +0 -41
  376. package/src/table-builder/pipes/key-display.ts +0 -16
  377. package/src/table-builder/services/export-to-csv.service.ts +0 -98
  378. package/src/table-builder/services/link-creator.service.ts +0 -67
  379. package/src/table-builder/services/table-template-service.ts +0 -57
  380. package/src/table-builder/services/transform-creator.ts +0 -96
  381. package/src/table-builder/specs/table-custom-filters.spec.ts +0 -262
  382. package/src/table-builder/styles/collapser.styles.scss +0 -19
  383. package/src/table-builder/table-builder.module.ts +0 -73
  384. package/src/test.ts +0 -17
  385. package/src/utilities/array-helpers.ts +0 -13
  386. package/src/utilities/directives/auto-focus.directive.ts +0 -20
  387. package/src/utilities/directives/clickEmitterDirective.ts +0 -16
  388. package/src/utilities/directives/clickSubject.ts +0 -20
  389. package/src/utilities/directives/conditional-classes.directive.ts +0 -36
  390. package/src/utilities/directives/dialog-service.ts +0 -19
  391. package/src/utilities/directives/dialog.ts +0 -147
  392. package/src/utilities/directives/mat-toggle-group-directive.ts +0 -61
  393. package/src/utilities/directives/prevent-enter.directive.ts +0 -13
  394. package/src/utilities/directives/stop-propagation.directive.ts +0 -20
  395. package/src/utilities/directives/styler.ts +0 -39
  396. package/src/utilities/directives/trim-whitespace.directive.ts +0 -21
  397. package/src/utilities/module.ts +0 -55
  398. package/src/utilities/pipes/function.pipe.ts +0 -16
  399. package/src/utilities/pipes/phone.pipe.ts +0 -15
  400. package/src/utilities/pipes/space-case.pipes.spec.ts +0 -47
  401. package/src/utilities/pipes/space-case.pipes.ts +0 -23
  402. package/tsconfig.lib.json +0 -19
  403. package/tsconfig.lib.prod.json +0 -10
  404. package/tsconfig.spec.json +0 -17
@@ -0,0 +1,12 @@
1
+ import { OnInit } from '@angular/core';
2
+ import { Observable } from 'rxjs';
3
+ import { ActionStatus, serverStatusTypes } from '../ngrx';
4
+ import * as i0 from "@angular/core";
5
+ export declare class ActionStateSpinnerComponent implements OnInit {
6
+ status$: Observable<ActionStatus>;
7
+ serverActionStatus$: Observable<ActionStatus>;
8
+ serverStatusTypes: typeof serverStatusTypes;
9
+ ngOnInit(): void;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<ActionStateSpinnerComponent, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<ActionStateSpinnerComponent, "lib-action-state-spinner", never, { "status$": { "alias": "status$"; "required": false; }; }, {}, never, never, true, never>;
12
+ }
@@ -0,0 +1,7 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "../action-state-spinner/action-state-spinner.component";
3
+ export declare class ActionStateUiModule {
4
+ static ɵfac: i0.ɵɵFactoryDeclaration<ActionStateUiModule, never>;
5
+ static ɵmod: i0.ɵɵNgModuleDeclaration<ActionStateUiModule, never, [typeof i1.ActionStateSpinnerComponent], [typeof i1.ActionStateSpinnerComponent]>;
6
+ static ɵinj: i0.ɵɵInjectorDeclaration<ActionStateUiModule>;
7
+ }
@@ -1,8 +1,4 @@
1
- /*
2
- * Public API Surface of action-state
3
- */
4
-
5
- export * from './ngrx';
6
- export * from './ngrx-ext/ngrx-ext.module';
7
- export * from './action-state-ui/action-state-ui.module';
8
- export * from './action-state-spinner/action-state-spinner.component';
1
+ export * from './ngrx';
2
+ export * from './ngrx-ext/ngrx-ext.module';
3
+ export * from './action-state-ui/action-state-ui.module';
4
+ export * from './action-state-spinner/action-state-spinner.component';
@@ -0,0 +1,8 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "@angular/common";
3
+ import * as i2 from "@ngrx/store";
4
+ export declare class NgrxExtModule {
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgrxExtModule, never>;
6
+ static ɵmod: i0.ɵɵNgModuleDeclaration<NgrxExtModule, never, [typeof i1.CommonModule, typeof i2.StoreFeatureModule], never>;
7
+ static ɵinj: i0.ɵɵInjectorDeclaration<NgrxExtModule>;
8
+ }
@@ -0,0 +1,31 @@
1
+ import { Action } from '@ngrx/store';
2
+ import { EntityState } from '@ngrx/entity';
3
+ export declare class AppStatusState {
4
+ readonly ActionStatusBar: ActionStatus[];
5
+ }
6
+ export interface StatusState {
7
+ ids: string[];
8
+ entities: {
9
+ [id: string]: ActionStatus;
10
+ };
11
+ }
12
+ export declare class ActionStatus {
13
+ id: string;
14
+ displayName?: string;
15
+ status: serverStatusTypes;
16
+ responsePayload?: any;
17
+ }
18
+ export declare enum serverStatusTypes {
19
+ notStarted = 0,
20
+ inProgress = 1,
21
+ success = 2,
22
+ error = 3
23
+ }
24
+ export declare const statusAdapter: import("@ngrx/entity").EntityAdapter<ActionStatus>;
25
+ export interface State extends EntityState<ActionStatus> {
26
+ }
27
+ export declare const initialState: StatusState;
28
+ export declare const getStatusState: import("@ngrx/store").MemoizedSelector<object, State, import("@ngrx/store").DefaultProjectorFn<State>>;
29
+ export declare const selectIds: import("@ngrx/store").MemoizedSelector<object, string[] | number[], (entityState: EntityState<ActionStatus>) => string[] | number[]>, selectEntities: import("@ngrx/store").MemoizedSelector<object, import("@ngrx/entity").Dictionary<ActionStatus>, (entityState: EntityState<ActionStatus>) => import("@ngrx/entity").Dictionary<ActionStatus>>, selectAll: import("@ngrx/store").MemoizedSelector<object, ActionStatus[], (entityState: EntityState<ActionStatus>) => ActionStatus[]>, selectTotal: import("@ngrx/store").MemoizedSelector<object, number, (entityState: EntityState<ActionStatus>) => number>;
30
+ export declare const selectEntity: (id: string) => import("@ngrx/store").MemoizedSelector<object, any, (s1: import("@ngrx/entity").Dictionary<ActionStatus>) => any>;
31
+ export declare function actionStatusReducer(state: StatusState | undefined, action: Action): StatusState;
@@ -0,0 +1,24 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { serverStatusTypes } from '../ngrx';
3
+ import { delayOn } from '../../rxjs';
4
+ import { AsyncPipe } from '@angular/common';
5
+ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/material/progress-spinner";
8
+ export class ActionStateSpinnerComponent {
9
+ constructor() {
10
+ this.serverStatusTypes = serverStatusTypes;
11
+ }
12
+ ngOnInit() {
13
+ this.serverActionStatus$ = this.status$.pipe(delayOn(a => a.status === serverStatusTypes.inProgress, 500));
14
+ }
15
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: ActionStateSpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
16
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.2", type: ActionStateSpinnerComponent, isStandalone: true, selector: "lib-action-state-spinner", inputs: { status$: "status$" }, ngImport: i0, template: "@if((serverActionStatus$ | async)?.status === serverStatusTypes.inProgress){\r\n <div id=\"blocker\">\r\n <mat-spinner class=\"spinner\" [diameter]=\"200\" />\r\n </div>\r\n}\r\n\r\n", styles: ["#blocker{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#0e0d0d69;z-index:999999}.spinner{position:absolute;top:50%;left:40%;transform:translate(-50%,-50%)}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }] }); }
17
+ }
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: ActionStateSpinnerComponent, decorators: [{
19
+ type: Component,
20
+ args: [{ selector: 'lib-action-state-spinner', standalone: true, imports: [AsyncPipe, MatProgressSpinnerModule], template: "@if((serverActionStatus$ | async)?.status === serverStatusTypes.inProgress){\r\n <div id=\"blocker\">\r\n <mat-spinner class=\"spinner\" [diameter]=\"200\" />\r\n </div>\r\n}\r\n\r\n", styles: ["#blocker{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#0e0d0d69;z-index:999999}.spinner{position:absolute;top:50%;left:40%;transform:translate(-50%,-50%)}\n"] }]
21
+ }], propDecorators: { status$: [{
22
+ type: Input
23
+ }] } });
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLXN0YXRlLXNwaW5uZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL2FjdGlvbi1zdGF0ZS9hY3Rpb24tc3RhdGUtc3Bpbm5lci9hY3Rpb24tc3RhdGUtc3Bpbm5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvYWN0aW9uLXN0YXRlL2FjdGlvbi1zdGF0ZS1zcGlubmVyL2FjdGlvbi1zdGF0ZS1zcGlubmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBZ0IsaUJBQWlCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDMUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUMsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0NBQW9DLENBQUM7OztBQVM5RSxNQUFNLE9BQU8sMkJBQTJCO0lBUHhDO1FBV0Usc0JBQWlCLEdBQUcsaUJBQWlCLENBQUM7S0FPdkM7SUFMQyxRQUFRO1FBQ04sSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUMxQyxPQUFPLENBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLGlCQUFpQixDQUFDLFVBQVUsRUFBRyxHQUFHLENBQUMsQ0FDL0QsQ0FBQztJQUNKLENBQUM7OEdBVlUsMkJBQTJCO2tHQUEzQiwyQkFBMkIsb0hDZHhDLDZMQU1BLHdPRE1ZLFNBQVMsNkNBQUUsd0JBQXdCOzsyRkFFbEMsMkJBQTJCO2tCQVB2QyxTQUFTOytCQUNFLDBCQUEwQixjQUd4QixJQUFJLFdBQ1AsQ0FBQyxTQUFTLEVBQUUsd0JBQXdCLENBQUM7OEJBSXJDLE9BQU87c0JBQWYsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEFjdGlvblN0YXR1cywgc2VydmVyU3RhdHVzVHlwZXMgfSBmcm9tICcuLi9uZ3J4JztcclxuaW1wb3J0IHsgZGVsYXlPbiB9IGZyb20gJy4uLy4uL3J4anMnO1xyXG5pbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1zcGlubmVyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWFjdGlvbi1zdGF0ZS1zcGlubmVyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYWN0aW9uLXN0YXRlLXNwaW5uZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2FjdGlvbi1zdGF0ZS1zcGlubmVyLmNvbXBvbmVudC5jc3MnXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtBc3luY1BpcGUsIE1hdFByb2dyZXNzU3Bpbm5lck1vZHVsZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEFjdGlvblN0YXRlU3Bpbm5lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpIHN0YXR1cyQhOiBPYnNlcnZhYmxlPEFjdGlvblN0YXR1cz47XHJcbiAgc2VydmVyQWN0aW9uU3RhdHVzJCE6IE9ic2VydmFibGU8QWN0aW9uU3RhdHVzPjtcclxuICBzZXJ2ZXJTdGF0dXNUeXBlcyA9IHNlcnZlclN0YXR1c1R5cGVzO1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuc2VydmVyQWN0aW9uU3RhdHVzJCA9IHRoaXMuc3RhdHVzJC5waXBlKFxyXG4gICAgICBkZWxheU9uKCBhID0+IGEuc3RhdHVzID09PSBzZXJ2ZXJTdGF0dXNUeXBlcy5pblByb2dyZXNzICwgNTAwKVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIiwiQGlmKChzZXJ2ZXJBY3Rpb25TdGF0dXMkIHwgYXN5bmMpPy5zdGF0dXMgPT09IHNlcnZlclN0YXR1c1R5cGVzLmluUHJvZ3Jlc3Mpe1xyXG4gIDxkaXYgaWQ9XCJibG9ja2VyXCI+XHJcbiAgICA8bWF0LXNwaW5uZXIgY2xhc3M9XCJzcGlubmVyXCIgW2RpYW1ldGVyXT1cIjIwMFwiIC8+XHJcbiAgPC9kaXY+XHJcbn1cclxuXHJcbiJdfQ==
@@ -0,0 +1,20 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { ActionStateSpinnerComponent } from '../action-state-spinner/action-state-spinner.component';
3
+ import * as i0 from "@angular/core";
4
+ export class ActionStateUiModule {
5
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: ActionStateUiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.2", ngImport: i0, type: ActionStateUiModule, imports: [ActionStateSpinnerComponent], exports: [ActionStateSpinnerComponent] }); }
7
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: ActionStateUiModule, imports: [ActionStateSpinnerComponent] }); }
8
+ }
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: ActionStateUiModule, decorators: [{
10
+ type: NgModule,
11
+ args: [{
12
+ imports: [
13
+ ActionStateSpinnerComponent,
14
+ ],
15
+ exports: [
16
+ ActionStateSpinnerComponent,
17
+ ]
18
+ }]
19
+ }] });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLXN0YXRlLXVpLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy9hY3Rpb24tc3RhdGUvYWN0aW9uLXN0YXRlLXVpL2FjdGlvbi1zdGF0ZS11aS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx3REFBd0QsQ0FBQzs7QUFXckcsTUFBTSxPQUFPLG1CQUFtQjs4R0FBbkIsbUJBQW1COytHQUFuQixtQkFBbUIsWUFONUIsMkJBQTJCLGFBRzNCLDJCQUEyQjsrR0FHbEIsbUJBQW1CLFlBTjVCLDJCQUEyQjs7MkZBTWxCLG1CQUFtQjtrQkFSL0IsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsMkJBQTJCO3FCQUM1QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsMkJBQTJCO3FCQUM1QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGlvblN0YXRlU3Bpbm5lckNvbXBvbmVudCB9IGZyb20gJy4uL2FjdGlvbi1zdGF0ZS1zcGlubmVyL2FjdGlvbi1zdGF0ZS1zcGlubmVyLmNvbXBvbmVudCc7XHJcblxyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbXHJcbiAgICBBY3Rpb25TdGF0ZVNwaW5uZXJDb21wb25lbnQsXHJcbiAgXSxcclxuICBleHBvcnRzOiBbXHJcbiAgICBBY3Rpb25TdGF0ZVNwaW5uZXJDb21wb25lbnQsXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQWN0aW9uU3RhdGVVaU1vZHVsZSB7IH1cclxuIl19
@@ -0,0 +1,8 @@
1
+ /*
2
+ * Public API Surface of action-state
3
+ */
4
+ export * from './ngrx';
5
+ export * from './ngrx-ext/ngrx-ext.module';
6
+ export * from './action-state-ui/action-state-ui.module';
7
+ export * from './action-state-spinner/action-state-spinner.component';
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvYWN0aW9uLXN0YXRlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLDBDQUEwQyxDQUFDO0FBQ3pELGNBQWMsdURBQXVELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgYWN0aW9uLXN0YXRlXHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9uZ3J4JztcclxuZXhwb3J0ICogZnJvbSAnLi9uZ3J4LWV4dC9uZ3J4LWV4dC5tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbi1zdGF0ZS11aS9hY3Rpb24tc3RhdGUtdWkubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSAnLi9hY3Rpb24tc3RhdGUtc3Bpbm5lci9hY3Rpb24tc3RhdGUtc3Bpbm5lci5jb21wb25lbnQnO1xyXG4iXX0=
@@ -0,0 +1,23 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { actionStatusReducer } from '../ngrx';
4
+ import { StoreModule } from '@ngrx/store';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@ngrx/store";
7
+ export class NgrxExtModule {
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: NgrxExtModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
9
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.2", ngImport: i0, type: NgrxExtModule, imports: [CommonModule, i1.StoreFeatureModule] }); }
10
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: NgrxExtModule, imports: [CommonModule,
11
+ StoreModule.forFeature('ActionStatus', actionStatusReducer)] }); }
12
+ }
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: NgrxExtModule, decorators: [{
14
+ type: NgModule,
15
+ args: [{
16
+ declarations: [],
17
+ imports: [
18
+ CommonModule,
19
+ StoreModule.forFeature('ActionStatus', actionStatusReducer),
20
+ ]
21
+ }]
22
+ }] });
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdyeC1leHQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL2FjdGlvbi1zdGF0ZS9uZ3J4LWV4dC9uZ3J4LWV4dC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7OztBQVcxQyxNQUFNLE9BQU8sYUFBYTs4R0FBYixhQUFhOytHQUFiLGFBQWEsWUFKdEIsWUFBWTsrR0FJSCxhQUFhLFlBSnRCLFlBQVk7WUFDWixXQUFXLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxtQkFBbUIsQ0FBQzs7MkZBR2xELGFBQWE7a0JBUHpCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVcsQ0FBQyxVQUFVLENBQUMsY0FBYyxFQUFFLG1CQUFtQixDQUFDO3FCQUM1RDtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IGFjdGlvblN0YXR1c1JlZHVjZXIgfSBmcm9tICcuLi9uZ3J4JztcclxuaW1wb3J0IHsgU3RvcmVNb2R1bGUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XHJcblxyXG5cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBTdG9yZU1vZHVsZS5mb3JGZWF0dXJlKCdBY3Rpb25TdGF0dXMnLCBhY3Rpb25TdGF0dXNSZWR1Y2VyKSxcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ3J4RXh0TW9kdWxlIHsgfVxyXG4iXX0=
@@ -0,0 +1,42 @@
1
+ import { createFeatureSelector, createSelector } from '@ngrx/store';
2
+ import { createEntityAdapter } from '@ngrx/entity';
3
+ import { get } from 'lodash';
4
+ // State
5
+ export class AppStatusState {
6
+ }
7
+ export class ActionStatus {
8
+ }
9
+ const InitialState = {
10
+ ids: [],
11
+ entities: {}
12
+ };
13
+ export var serverStatusTypes;
14
+ (function (serverStatusTypes) {
15
+ serverStatusTypes[serverStatusTypes["notStarted"] = 0] = "notStarted";
16
+ serverStatusTypes[serverStatusTypes["inProgress"] = 1] = "inProgress";
17
+ serverStatusTypes[serverStatusTypes["success"] = 2] = "success";
18
+ serverStatusTypes[serverStatusTypes["error"] = 3] = "error";
19
+ })(serverStatusTypes || (serverStatusTypes = {}));
20
+ // Entity and Selectors
21
+ export const statusAdapter = createEntityAdapter();
22
+ export const initialState = statusAdapter.getInitialState(InitialState);
23
+ export const getStatusState = createFeatureSelector('ActionStatus');
24
+ export const { selectIds, selectEntities, selectAll, selectTotal } = statusAdapter.getSelectors(getStatusState);
25
+ export const selectEntity = (id) => createSelector(selectEntities, (entities) => entities[id]);
26
+ // Reducers
27
+ export function actionStatusReducer(state = initialState, action) {
28
+ const actionStatus = get(action, 'payload.actionStatus');
29
+ if (actionStatus) {
30
+ if (state.ids.find(id => id === actionStatus.id)) {
31
+ const modifiedObj = { ...state.entities[actionStatus.id] };
32
+ modifiedObj.status = actionStatus.status;
33
+ modifiedObj.responsePayload = actionStatus.responsePayload;
34
+ return statusAdapter.upsertOne(modifiedObj, state);
35
+ }
36
+ else {
37
+ return statusAdapter.addOne(actionStatus, state);
38
+ }
39
+ }
40
+ return state;
41
+ }
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdyeC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy9hY3Rpb24tc3RhdGUvbmdyeC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVUscUJBQXFCLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVFLE9BQU8sRUFBRSxtQkFBbUIsRUFBZSxNQUFNLGNBQWMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRTdCLFFBQVE7QUFDUixNQUFNLE9BQU8sY0FBYztDQUUxQjtBQU9ELE1BQU0sT0FBTyxZQUFZO0NBS3hCO0FBRUQsTUFBTSxZQUFZLEdBQWdCO0lBQ2hDLEdBQUcsRUFBRSxFQUFFO0lBQ1AsUUFBUSxFQUFFLEVBQUU7Q0FDYixDQUFDO0FBRUYsTUFBTSxDQUFOLElBQVksaUJBS1g7QUFMRCxXQUFZLGlCQUFpQjtJQUMzQixxRUFBYyxDQUFBO0lBQ2QscUVBQWMsQ0FBQTtJQUNkLCtEQUFXLENBQUE7SUFDWCwyREFBUyxDQUFBO0FBQ1gsQ0FBQyxFQUxXLGlCQUFpQixLQUFqQixpQkFBaUIsUUFLNUI7QUFFRCx1QkFBdUI7QUFDdkIsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLG1CQUFtQixFQUFnQixDQUFDO0FBRWpFLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBZ0IsYUFBYSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUVyRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcscUJBQXFCLENBQVEsY0FBYyxDQUFDLENBQUM7QUFDM0UsTUFBTSxDQUFDLE1BQU0sRUFDWCxTQUFTLEVBQ1QsY0FBYyxFQUNkLFNBQVMsRUFDVCxXQUFXLEVBQ1osR0FBRyxhQUFhLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBRS9DLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLEVBQVUsRUFBRSxFQUFFLENBQUMsY0FBYyxDQUN4RCxjQUFjLEVBQ2QsQ0FBQyxRQUFhLEVBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FDakMsQ0FBQztBQUVGLFdBQVc7QUFDWCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsUUFBcUIsWUFBWSxFQUFFLE1BQWM7SUFFbkYsTUFBTSxZQUFZLEdBQWlCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsc0JBQXNCLENBQVMsQ0FBQztJQUUvRSxJQUFLLFlBQVksRUFBRyxDQUFDO1FBQ25CLElBQUssS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssWUFBWSxDQUFDLEVBQUUsQ0FBQyxFQUFHLENBQUM7WUFDbkQsTUFBTSxXQUFXLEdBQUcsRUFBQyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDMUQsV0FBVyxDQUFDLE1BQU0sR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDO1lBQ3pDLFdBQVcsQ0FBQyxlQUFlLEdBQUcsWUFBWSxDQUFDLGVBQWUsQ0FBQztZQUMzRCxPQUFPLGFBQWEsQ0FBQyxTQUFTLENBQUUsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3RELENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxhQUFhLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRyxLQUFLLENBQUMsQ0FBQztRQUNwRCxDQUFDO0lBRUgsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGlvbiwgY3JlYXRlRmVhdHVyZVNlbGVjdG9yLCBjcmVhdGVTZWxlY3RvciB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcclxuaW1wb3J0IHsgY3JlYXRlRW50aXR5QWRhcHRlciwgRW50aXR5U3RhdGUgfSBmcm9tICdAbmdyeC9lbnRpdHknO1xyXG5pbXBvcnQgeyBnZXQgfSBmcm9tICdsb2Rhc2gnO1xyXG5cclxuLy8gU3RhdGVcclxuZXhwb3J0IGNsYXNzIEFwcFN0YXR1c1N0YXRlIHtcclxuICByZWFkb25seSBBY3Rpb25TdGF0dXNCYXIhOiBBY3Rpb25TdGF0dXNbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBTdGF0dXNTdGF0ZSB7XHJcbiAgaWRzOiBzdHJpbmdbXTtcclxuICBlbnRpdGllczoge1tpZDogc3RyaW5nXTogQWN0aW9uU3RhdHVzfTtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEFjdGlvblN0YXR1cyB7XHJcbiAgaWQhOiBzdHJpbmc7XHJcbiAgZGlzcGxheU5hbWU/OiBzdHJpbmc7XHJcbiAgc3RhdHVzITogc2VydmVyU3RhdHVzVHlwZXM7XHJcbiAgcmVzcG9uc2VQYXlsb2FkPzogYW55O1xyXG59XHJcblxyXG5jb25zdCBJbml0aWFsU3RhdGU6IFN0YXR1c1N0YXRlID0ge1xyXG4gIGlkczogW10sXHJcbiAgZW50aXRpZXM6IHt9XHJcbn07XHJcblxyXG5leHBvcnQgZW51bSBzZXJ2ZXJTdGF0dXNUeXBlcyB7XHJcbiAgbm90U3RhcnRlZCA9IDAsXHJcbiAgaW5Qcm9ncmVzcyA9IDEsXHJcbiAgc3VjY2VzcyA9IDIsXHJcbiAgZXJyb3IgPSAzXHJcbn1cclxuXHJcbi8vIEVudGl0eSBhbmQgU2VsZWN0b3JzXHJcbmV4cG9ydCBjb25zdCBzdGF0dXNBZGFwdGVyID0gY3JlYXRlRW50aXR5QWRhcHRlcjxBY3Rpb25TdGF0dXM+KCk7XHJcbmV4cG9ydCBpbnRlcmZhY2UgU3RhdGUgZXh0ZW5kcyBFbnRpdHlTdGF0ZTxBY3Rpb25TdGF0dXM+IHt9XHJcbmV4cG9ydCBjb25zdCBpbml0aWFsU3RhdGU6IFN0YXR1c1N0YXRlID0gc3RhdHVzQWRhcHRlci5nZXRJbml0aWFsU3RhdGUoSW5pdGlhbFN0YXRlKTtcclxuXHJcbmV4cG9ydCBjb25zdCBnZXRTdGF0dXNTdGF0ZSA9IGNyZWF0ZUZlYXR1cmVTZWxlY3RvcjxTdGF0ZT4oJ0FjdGlvblN0YXR1cycpO1xyXG5leHBvcnQgY29uc3Qge1xyXG4gIHNlbGVjdElkcyxcclxuICBzZWxlY3RFbnRpdGllcyxcclxuICBzZWxlY3RBbGwsXHJcbiAgc2VsZWN0VG90YWxcclxufSA9IHN0YXR1c0FkYXB0ZXIuZ2V0U2VsZWN0b3JzKGdldFN0YXR1c1N0YXRlKTtcclxuXHJcbmV4cG9ydCBjb25zdCBzZWxlY3RFbnRpdHkgPSAoaWQ6IHN0cmluZykgPT4gY3JlYXRlU2VsZWN0b3IoXHJcbiAgc2VsZWN0RW50aXRpZXMsXHJcbiAgKGVudGl0aWVzOiBhbnkpICA9PiBlbnRpdGllc1tpZF1cclxuKTtcclxuXHJcbi8vIFJlZHVjZXJzXHJcbmV4cG9ydCBmdW5jdGlvbiBhY3Rpb25TdGF0dXNSZWR1Y2VyKHN0YXRlOiBTdGF0dXNTdGF0ZSA9IGluaXRpYWxTdGF0ZSwgYWN0aW9uOiBBY3Rpb24pIHtcclxuXHJcbiAgY29uc3QgYWN0aW9uU3RhdHVzOiBBY3Rpb25TdGF0dXMgPSBnZXQoYWN0aW9uLCAncGF5bG9hZC5hY3Rpb25TdGF0dXMnICkgYXMgYW55O1xyXG5cclxuICBpZiAoIGFjdGlvblN0YXR1cyApIHtcclxuICAgIGlmICggc3RhdGUuaWRzLmZpbmQoaWQgPT4gaWQgPT09IGFjdGlvblN0YXR1cy5pZCkgKSB7XHJcbiAgICAgIGNvbnN0IG1vZGlmaWVkT2JqID0gey4uLnN0YXRlLmVudGl0aWVzW2FjdGlvblN0YXR1cy5pZF0gfTtcclxuICAgICAgbW9kaWZpZWRPYmouc3RhdHVzID0gYWN0aW9uU3RhdHVzLnN0YXR1cztcclxuICAgICAgbW9kaWZpZWRPYmoucmVzcG9uc2VQYXlsb2FkID0gYWN0aW9uU3RhdHVzLnJlc3BvbnNlUGF5bG9hZDtcclxuICAgICAgcmV0dXJuIHN0YXR1c0FkYXB0ZXIudXBzZXJ0T25lKCBtb2RpZmllZE9iaiwgc3RhdGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHN0YXR1c0FkYXB0ZXIuYWRkT25lKGFjdGlvblN0YXR1cyAsIHN0YXRlKTtcclxuICAgIH1cclxuXHJcbiAgfVxyXG4gIHJldHVybiBzdGF0ZTtcclxufVxyXG4iXX0=
@@ -0,0 +1,52 @@
1
+ import { DestroyRef, Injectable, assertInInjectionContext, inject } from "@angular/core";
2
+ import { HttpRequestStateStore } from './HttpRequestStateStore';
3
+ import * as i0 from "@angular/core";
4
+ export class HttpRequestStateFactory {
5
+ constructor() {
6
+ this.requestors = [];
7
+ }
8
+ ngOnDestroy() {
9
+ this.requestors.forEach(request => request.ngOnDestroy());
10
+ }
11
+ create(req, optionsOrProject, options) {
12
+ const requestor = (typeof (optionsOrProject) === 'function' ? new HttpRequestStateStore(req, options, optionsOrProject) : new HttpRequestStateStore(req, options));
13
+ this.requestors.push(requestor);
14
+ return requestor;
15
+ }
16
+ createHttpClient(r, options) {
17
+ const requestor = new HttpRequestStateStore(r, options);
18
+ this.requestors.push(requestor);
19
+ return requestor;
20
+ }
21
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: HttpRequestStateFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
22
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: HttpRequestStateFactory }); }
23
+ }
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: HttpRequestStateFactory, decorators: [{
25
+ type: Injectable
26
+ }], ctorParameters: () => [] });
27
+ export function createRequestor(req, optionsOrProject, options) {
28
+ const ops = isFunction(optionsOrProject) ? options : optionsOrProject;
29
+ const destroyRef = getDestroyRef(ops);
30
+ const requestStore = typeof (optionsOrProject) === 'function' ?
31
+ new HttpRequestStateStore(req, options, optionsOrProject)
32
+ : new HttpRequestStateStore(req, optionsOrProject);
33
+ destroyRef.onDestroy(() => requestStore?.ngOnDestroy());
34
+ return requestStore;
35
+ }
36
+ function isFunction(value) {
37
+ return typeof value === 'function';
38
+ }
39
+ function getDestroyRef(options) {
40
+ const providedInjector = options?.injector;
41
+ if (!providedInjector) {
42
+ try {
43
+ assertInInjectionContext(createRequestor);
44
+ }
45
+ catch (error) {
46
+ throw new Error('createRequestor() must be used in an Injection Context or you must provide an injector to createRequestor()');
47
+ }
48
+ }
49
+ const destroyRef = providedInjector?.get(DestroyRef) || inject(DestroyRef);
50
+ return destroyRef;
51
+ }
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSHR0cFJlcXVlc3RTdGF0ZUZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvaHR0cC1yZXF1ZXN0LXN0YXRlL0h0dHBSZXF1ZXN0U3RhdGVGYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFhLHdCQUF3QixFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVwRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFJaEUsTUFBTSxPQUFPLHVCQUF1QjtJQUVsQztRQUlRLGVBQVUsR0FBZ0IsRUFBRSxDQUFDO0lBSnRCLENBQUM7SUFDaEIsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUtELE1BQU0sQ0FBaUUsR0FBa0MsRUFBRSxnQkFBOEQsRUFBRSxPQUFxQztRQUM5TSxNQUFNLFNBQVMsR0FBRyxDQUFDLE9BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUUsSUFBSSxxQkFBcUIsQ0FBa0IsR0FBRyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLHFCQUFxQixDQUFrQixHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNyTSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoQyxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsZ0JBQWdCLENBQUssQ0FBdUMsRUFBRyxPQUFrQztRQUMvRixNQUFNLFNBQVMsR0FBRyxJQUFJLHFCQUFxQixDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoQyxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDOzhHQXBCVSx1QkFBdUI7a0hBQXZCLHVCQUF1Qjs7MkZBQXZCLHVCQUF1QjtrQkFEbkMsVUFBVTs7QUEyQlgsTUFBTSxVQUFVLGVBQWUsQ0FBaUUsR0FBa0MsRUFBRSxnQkFBZ0UsRUFBRSxPQUF1QztJQUUzTyxNQUFNLEdBQUcsR0FBSSxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQztJQUV2RSxNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFdEMsTUFBTSxZQUFZLEdBQUcsT0FBTSxDQUFDLGdCQUFnQixDQUFDLEtBQUssVUFBVSxDQUFDLENBQUM7UUFDNUQsSUFBSSxxQkFBcUIsQ0FBa0IsR0FBRyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQztRQUMxRSxDQUFDLENBQUMsSUFBSSxxQkFBcUIsQ0FBa0IsR0FBRyxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFFdEUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUV4RCxPQUFPLFlBQVksQ0FBQztBQUN0QixDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsS0FBVTtJQUM1QixPQUFPLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQztBQUNyQyxDQUFDO0FBRUQsU0FBUyxhQUFhLENBQUMsT0FBb0M7SUFDekQsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLEVBQUUsUUFBUSxDQUFDO0lBRTNDLElBQUcsQ0FBQyxnQkFBZ0IsRUFBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQztZQUNILHdCQUF3QixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzVDLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyw2R0FBNkcsQ0FBQyxDQUFDO1FBQ2pJLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUUzRSxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzdHJveVJlZiwgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBhc3NlcnRJbkluamVjdGlvbkNvbnRleHQsIGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEh0dHBSZXF1ZXN0RmFjdG9yeSwgUmVxdWVzdFN0YXRlT3B0aW9ucywgUmVxdWVzdENyZWF0b3JPcHRpb25zIH0gZnJvbSBcIi4vdHlwZXNcIjtcclxuaW1wb3J0IHsgSHR0cFJlcXVlc3RTdGF0ZVN0b3JlIH0gZnJvbSAnLi9IdHRwUmVxdWVzdFN0YXRlU3RvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEh0dHBSZXF1ZXN0U3RhdGVGYWN0b3J5ICBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge31cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVxdWVzdG9ycy5mb3JFYWNoKCByZXF1ZXN0ID0+IHJlcXVlc3QubmdPbkRlc3Ryb3koKSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgcmVxdWVzdG9yczogT25EZXN0cm95W10gPSBbXTtcclxuXHJcbiAgY3JlYXRlPFRQYXJhbSBleHRlbmRzIGFueVtdLCBWPiggcmVxOiBIdHRwUmVxdWVzdEZhY3Rvcnk8VFBhcmFtLCBWPiwgb3B0aW9ucz86IFJlcXVlc3RTdGF0ZU9wdGlvbnM8VFBhcmFtPikgOiBIdHRwUmVxdWVzdFN0YXRlU3RvcmU8VFBhcmFtLCBWPlxyXG4gIGNyZWF0ZTxUUGFyYW0gZXh0ZW5kcyBhbnlbXSwgViwgUiwgVCA9IFI+KCByZXE6IEh0dHBSZXF1ZXN0RmFjdG9yeTxUUGFyYW0sIFY+LCBwcm9qZWN0OiAodjogVikgPT4gUiAsIG9wdGlvbnM/OiBSZXF1ZXN0U3RhdGVPcHRpb25zPFRQYXJhbT4pIDogSHR0cFJlcXVlc3RTdGF0ZVN0b3JlPFRQYXJhbSwgViwgVD5cclxuICBjcmVhdGU8VFBhcmFtIGV4dGVuZHMgYW55W10sIFYsIFIgPSBudWxsLCBUID0gUiBleHRlbmRzIG51bGwgPyBWIDogUj4oIHJlcTogSHR0cFJlcXVlc3RGYWN0b3J5PFRQYXJhbSwgVj4sIG9wdGlvbnNPclByb2plY3Q/OiBSZXF1ZXN0U3RhdGVPcHRpb25zPFRQYXJhbT4gfCAoKHY6IFYpID0+IFIpLCBvcHRpb25zPzogUmVxdWVzdFN0YXRlT3B0aW9uczxUUGFyYW0+ICkgOiBIdHRwUmVxdWVzdFN0YXRlU3RvcmU8VFBhcmFtLCBWLCBSLCBUPiB7XHJcbiAgICBjb25zdCByZXF1ZXN0b3IgPSAodHlwZW9mKG9wdGlvbnNPclByb2plY3QpID09PSAnZnVuY3Rpb24nID8gIG5ldyBIdHRwUmVxdWVzdFN0YXRlU3RvcmU8VFBhcmFtLCBWLCBSLCBUPihyZXEsIG9wdGlvbnMsIG9wdGlvbnNPclByb2plY3QpIDogbmV3IEh0dHBSZXF1ZXN0U3RhdGVTdG9yZTxUUGFyYW0sIFYsIFIsIFQ+KHJlcSwgb3B0aW9ucykpO1xyXG4gICAgdGhpcy5yZXF1ZXN0b3JzLnB1c2gocmVxdWVzdG9yKTtcclxuICAgIHJldHVybiByZXF1ZXN0b3I7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVIdHRwQ2xpZW50PFQ+KCByOiAobzogT2JzZXJ2YWJsZTxUPiApID0+IE9ic2VydmFibGU8VD4gLCBvcHRpb25zPzogUmVxdWVzdFN0YXRlT3B0aW9uczxhbnk+ICkgIHtcclxuICAgIGNvbnN0IHJlcXVlc3RvciA9IG5ldyBIdHRwUmVxdWVzdFN0YXRlU3RvcmUociwgb3B0aW9ucyk7XHJcbiAgICB0aGlzLnJlcXVlc3RvcnMucHVzaChyZXF1ZXN0b3IpO1xyXG4gICAgcmV0dXJuIHJlcXVlc3RvcjtcclxuICB9XHJcblxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVxdWVzdG9yPFRQYXJhbSBleHRlbmRzIGFueVtdLCBWPiggcmVxOiBIdHRwUmVxdWVzdEZhY3Rvcnk8VFBhcmFtLCBWPiwgb3B0aW9ucz86IFJlcXVlc3RDcmVhdG9yT3B0aW9uczxUUGFyYW0+KSA6IEh0dHBSZXF1ZXN0U3RhdGVTdG9yZTxUUGFyYW0sIFY+XHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSZXF1ZXN0b3I8VFBhcmFtIGV4dGVuZHMgYW55W10sIFYsIFIsIFQgPSBSPiggcmVxOiBIdHRwUmVxdWVzdEZhY3Rvcnk8VFBhcmFtLCBWPiwgcHJvamVjdDogKHY6IFYpID0+IFIgLCBvcHRpb25zPzogUmVxdWVzdENyZWF0b3JPcHRpb25zPFRQYXJhbT4pIDogSHR0cFJlcXVlc3RTdGF0ZVN0b3JlPFRQYXJhbSwgViwgVD5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlcXVlc3RvcjxUUGFyYW0gZXh0ZW5kcyBhbnlbXSwgViwgUiA9IG51bGwsIFQgPSBSIGV4dGVuZHMgbnVsbCA/IFYgOiBSPiggcmVxOiBIdHRwUmVxdWVzdEZhY3Rvcnk8VFBhcmFtLCBWPiwgb3B0aW9uc09yUHJvamVjdD86IFJlcXVlc3RDcmVhdG9yT3B0aW9uczxUUGFyYW0+IHwgKCh2OiBWKSA9PiBSKSwgb3B0aW9ucz86IFJlcXVlc3RDcmVhdG9yT3B0aW9uczxUUGFyYW0+ICkgOiBIdHRwUmVxdWVzdFN0YXRlU3RvcmU8VFBhcmFtLCBWLCBSLCBUPntcclxuXHJcbiAgY29uc3Qgb3BzICA9IGlzRnVuY3Rpb24ob3B0aW9uc09yUHJvamVjdCkgPyBvcHRpb25zIDogb3B0aW9uc09yUHJvamVjdDtcclxuXHJcbiAgY29uc3QgZGVzdHJveVJlZiA9IGdldERlc3Ryb3lSZWYob3BzKTtcclxuXHJcbiAgY29uc3QgcmVxdWVzdFN0b3JlID0gdHlwZW9mKG9wdGlvbnNPclByb2plY3QpID09PSAnZnVuY3Rpb24nID8gIFxyXG4gICAgbmV3IEh0dHBSZXF1ZXN0U3RhdGVTdG9yZTxUUGFyYW0sIFYsIFIsIFQ+KHJlcSwgb3B0aW9ucywgb3B0aW9uc09yUHJvamVjdClcclxuICAgIDogbmV3IEh0dHBSZXF1ZXN0U3RhdGVTdG9yZTxUUGFyYW0sIFYsIFIsIFQ+KHJlcSwgb3B0aW9uc09yUHJvamVjdCk7XHJcblxyXG4gIGRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+IHJlcXVlc3RTdG9yZT8ubmdPbkRlc3Ryb3koKSk7XHJcblxyXG4gIHJldHVybiByZXF1ZXN0U3RvcmU7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzRnVuY3Rpb24odmFsdWU6IGFueSk6IHZhbHVlIGlzIEZ1bmN0aW9uIHtcclxuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXREZXN0cm95UmVmKG9wdGlvbnM/OiBSZXF1ZXN0Q3JlYXRvck9wdGlvbnM8YW55Pil7XHJcbiAgY29uc3QgcHJvdmlkZWRJbmplY3RvciA9IG9wdGlvbnM/LmluamVjdG9yO1xyXG5cclxuICBpZighcHJvdmlkZWRJbmplY3Rvcil7XHJcbiAgICB0cnkge1xyXG4gICAgICBhc3NlcnRJbkluamVjdGlvbkNvbnRleHQoY3JlYXRlUmVxdWVzdG9yKTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignY3JlYXRlUmVxdWVzdG9yKCkgbXVzdCBiZSB1c2VkIGluIGFuIEluamVjdGlvbiBDb250ZXh0IG9yIHlvdSBtdXN0IHByb3ZpZGUgYW4gaW5qZWN0b3IgdG8gY3JlYXRlUmVxdWVzdG9yKCknKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0IGRlc3Ryb3lSZWYgPSBwcm92aWRlZEluamVjdG9yPy5nZXQoRGVzdHJveVJlZikgfHwgaW5qZWN0KERlc3Ryb3lSZWYpO1xyXG5cclxuICByZXR1cm4gZGVzdHJveVJlZjtcclxufSJdfQ==
@@ -0,0 +1,101 @@
1
+ import { of } from 'rxjs';
2
+ import { ComponentStore } from '@ngrx/component-store';
3
+ import { HttpRequestStrategy, HttpRequestStatus } from './types';
4
+ import { createFailure, createSuccess, inProgress, isErrorState, isSuccessOrErrorState, isSuccessState, notStarted } from './helpers';
5
+ import { concatMap, filter, map, mergeMap, startWith, switchMap, tap } from 'rxjs/operators';
6
+ import { mapError } from '../rxjs/mapError';
7
+ import { defaultShareReplay } from '../rxjs/defaultShareReplay';
8
+ import { Directive } from '@angular/core';
9
+ import * as i0 from "@angular/core";
10
+ export class HttpRequestStateStore extends ComponentStore {
11
+ constructor(req, options, project) {
12
+ super({ requestParams: null, response: notStarted });
13
+ this.req = req;
14
+ this.options = options;
15
+ this.project = project;
16
+ this.flatteningStrategy = () => {
17
+ if (this.options?.strategy === HttpRequestStrategy.concurrent)
18
+ return mergeMap((params) => this.createRequest(...params));
19
+ if (this.options?.strategy === HttpRequestStrategy.sequential)
20
+ return concatMap((params) => this.createRequest(...params));
21
+ return switchMap((params) => (params[0] instanceof CancellationToken) ?
22
+ of({ requestParams: params[0], response: { status: HttpRequestStatus.cancelled } }) : this.createRequest(...params));
23
+ };
24
+ this.requestEffect = this.effect((obs) => {
25
+ return (obs).pipe(this.flatteningStrategy(), tap(state => this.setState(state)));
26
+ });
27
+ this.flattenedRequest = (...value) => {
28
+ return this.requestEffect(value);
29
+ };
30
+ this.singleUseRequest = (...value) => {
31
+ if (this.get().response.status !== HttpRequestStatus.notStarted) {
32
+ throw new Error("state can not be reused. either reset the state by calling reset() or use a state requester that allows concurrent requests.");
33
+ }
34
+ return this.requestEffect(value);
35
+ };
36
+ this.selectHttpState$ = this.state$.pipe(map(a => a.response));
37
+ this.selectStatus$ = this.selectHttpState$.pipe(map(a => a.status));
38
+ this.selectError$ = this.state$.pipe(map(r => r.response), filter(isErrorState), map(state => state.error));
39
+ this.selectResponse$ = this.state$.pipe(map(r => r.response), filter(isSuccessState), map(state => state.body));
40
+ this.selectSuccessOrError$ = this.state$.pipe(map(r => r.response), filter(isSuccessOrErrorState), map(() => null));
41
+ this.errorHandled = false;
42
+ this.on = (srcObservable, func) => {
43
+ return this.effect((src) => {
44
+ return src.pipe(tap(func));
45
+ })(srcObservable);
46
+ };
47
+ this.request = (this.options?.strategy === HttpRequestStrategy.singleUse) ? this.singleUseRequest : this.flattenedRequest;
48
+ if (options?.autoRequestWith) {
49
+ this.request(...options.autoRequestWith);
50
+ }
51
+ }
52
+ reset() {
53
+ this.setState({ requestParams: null, response: notStarted });
54
+ }
55
+ onError(cb) {
56
+ this.errorHandled = true;
57
+ this.on(this.selectError$, cb);
58
+ return this;
59
+ }
60
+ onSuccess(cb) {
61
+ this.on(this.selectResponse$, cb);
62
+ return this;
63
+ }
64
+ onSuccessOrError(cb) {
65
+ this.on(this.selectSuccessOrError$, cb);
66
+ return this;
67
+ }
68
+ onSuccessWithRequest(func) {
69
+ this.onUpdate(({ requestParams, response }) => {
70
+ if (isSuccessState(response)) {
71
+ func({ requestParams, body: response.body });
72
+ }
73
+ });
74
+ return this;
75
+ }
76
+ onErrorWithRequest(func) {
77
+ this.onUpdate(({ requestParams, response }) => {
78
+ if (isErrorState(response)) {
79
+ func({ requestParams, error: response.error });
80
+ }
81
+ });
82
+ return this;
83
+ }
84
+ createRequest(...params) {
85
+ return this.req(...params).pipe(map(re => createSuccess((this.project ? this.project(re) : re))), mapError(createFailure), startWith(inProgress), map(state => ({ requestParams: params, response: state })), defaultShareReplay());
86
+ }
87
+ onUpdate(func) {
88
+ this.on(this.state$, func);
89
+ }
90
+ ngOnDestroy() {
91
+ super.ngOnDestroy();
92
+ }
93
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: HttpRequestStateStore, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive }); }
94
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.2", type: HttpRequestStateStore, usesInheritance: true, ngImport: i0 }); }
95
+ }
96
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: HttpRequestStateStore, decorators: [{
97
+ type: Directive
98
+ }], ctorParameters: () => [{ type: undefined }, { type: undefined }, { type: undefined }] });
99
+ export class CancellationToken {
100
+ }
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSHR0cFJlcXVlc3RTdGF0ZVN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11dGlsaXRpZXMvc3JjL2h0dHAtcmVxdWVzdC1zdGF0ZS9IdHRwUmVxdWVzdFN0YXRlU3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLEVBQUUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZELE9BQU8sRUFBc0IsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQW9FLE1BQU0sU0FBUyxDQUFDO0FBQ3ZKLE9BQU8sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUscUJBQXFCLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0SSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0YsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBUTFDLE1BQU0sT0FBTyxxQkFBcUYsU0FBUSxjQUEwQztJQUVoSixZQUFvQixHQUFrQyxFQUFVLE9BQXFDLEVBQVUsT0FBcUI7UUFDbEksS0FBSyxDQUFDLEVBQUUsYUFBYSxFQUFFLElBQVcsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUQxQyxRQUFHLEdBQUgsR0FBRyxDQUErQjtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQThCO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBYztRQWE1SCx1QkFBa0IsR0FBRyxHQUFHLEVBQUU7WUFDaEMsSUFBRyxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsS0FBSyxtQkFBbUIsQ0FBQyxVQUFVO2dCQUMxRCxPQUFPLFFBQVEsQ0FBRSxDQUFDLE1BQW1CLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQzNFLElBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLEtBQUssbUJBQW1CLENBQUMsVUFBVTtnQkFDMUQsT0FBTyxTQUFTLENBQUUsQ0FBQyxNQUFtQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUM1RSxPQUFPLFNBQVMsQ0FBRSxDQUFDLE1BQW1CLEVBQUUsRUFBRSxDQUFDLENBQUUsTUFBTSxDQUFDLENBQUMsQ0FBUyxZQUFZLGlCQUFpQixDQUFDLENBQUMsQ0FBQztnQkFDNUYsRUFBRSxDQUFDLEVBQUUsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLENBQUMsU0FBUyxFQUErQixFQUFFLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFFLENBQUM7UUFDeEosQ0FBQyxDQUFBO1FBRU8sa0JBQWEsR0FBMEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQTRCLEVBQUUsRUFBRTtZQUMxRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUNmLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUN6QixHQUFHLENBQTZCLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUMvRCxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSyxxQkFBZ0IsR0FBRyxDQUFDLEdBQUcsS0FBa0IsRUFBRSxFQUFFO1lBQ25ELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQWlCLENBQUM7UUFDbkQsQ0FBQyxDQUFBO1FBQ08scUJBQWdCLEdBQUcsQ0FBQyxHQUFHLEtBQWtCLEVBQUUsRUFBRTtZQUNuRCxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNoRSxNQUFNLElBQUksS0FBSyxDQUFDLDhIQUE4SCxDQUFDLENBQUM7WUFDbEosQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQWlCLENBQUM7UUFDbkQsQ0FBQyxDQUFBO1FBRUQscUJBQWdCLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFFMUQsa0JBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBRS9ELGlCQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQzdCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFDcEIsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUNwQixHQUFHLENBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQzNCLENBQUM7UUFFRixvQkFBZSxHQUFrQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDL0MsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUNwQixNQUFNLENBQUMsY0FBYyxDQUFDLEVBQ3RCLEdBQUcsQ0FBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FDMUIsQ0FBQztRQUNGLDBCQUFxQixHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUN0QyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQ3BCLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxFQUM3QixHQUFHLENBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQ2pCLENBQUM7UUFFRixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQTBEckIsT0FBRSxHQUFHLENBQUksYUFBNEIsRUFBRSxJQUFzQixFQUFnQixFQUFFO1lBQzdFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQWtCLEVBQUUsRUFBRTtnQkFDeEMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQzdCLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBaUIsQ0FBQztRQUNwQyxDQUFDLENBQUE7UUF4SEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxLQUFLLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUUzSCxJQUFHLE9BQU8sRUFBRSxlQUFlLEVBQUMsQ0FBQztZQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzNDLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxhQUFhLEVBQUMsSUFBVyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFrREQsT0FBTyxDQUFFLEVBQXNDO1FBQzdDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMvQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxTQUFTLENBQUUsRUFBc0I7UUFDL0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQWM7UUFDN0IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsb0JBQW9CLENBQUMsSUFHWDtRQUNSLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFO1lBQzVDLElBQUcsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFDLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxFQUFDLGFBQWEsRUFBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksRUFBQyxDQUFDLENBQUM7WUFDNUMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsSUFHVDtRQUNSLElBQUksQ0FBQyxRQUFRLENBQUUsQ0FBQyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFO1lBQzdDLElBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxFQUFDLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDakQsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU8sYUFBYSxDQUFDLEdBQUcsTUFBbUI7UUFDMUMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUM3QixHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQU0sQ0FBQyxDQUFDLEVBQ3JFLFFBQVEsQ0FBQyxhQUFhLENBQUMsRUFDdkIsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUNyQixHQUFHLENBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxFQUMzRCxrQkFBa0IsRUFBRSxDQUNyQixDQUFDO0lBQ0osQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUdDO1FBQ1IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFVRCxXQUFXO1FBQ1QsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7OEdBbElRLHFCQUFxQjtrR0FBckIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQURqQyxTQUFTOztBQXVJUixNQUFNLE9BQU8saUJBQWlCO0NBQUciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbXBvbmVudFN0b3JlIH0gZnJvbSAnQG5ncngvY29tcG9uZW50LXN0b3JlJztcclxuaW1wb3J0IHsgSHR0cFJlcXVlc3RGYWN0b3J5LCBIdHRwUmVxdWVzdFN0cmF0ZWd5LCBIdHRwUmVxdWVzdFN0YXR1cywgSHR0cFJlcXVlc3RTdGF0ZSwgUmVxdWVzdFN0YXRlT3B0aW9ucywgSHR0cFJlcXVlc3RTdGF0ZUNhbmNlbGxlZCB9IGZyb20gJy4vdHlwZXMnO1xyXG5pbXBvcnQgeyBjcmVhdGVGYWlsdXJlLCBjcmVhdGVTdWNjZXNzLCBpblByb2dyZXNzLCBpc0Vycm9yU3RhdGUsIGlzU3VjY2Vzc09yRXJyb3JTdGF0ZSwgaXNTdWNjZXNzU3RhdGUsIG5vdFN0YXJ0ZWQgfSBmcm9tICcuL2hlbHBlcnMnO1xyXG5pbXBvcnQgeyBjb25jYXRNYXAsIGZpbHRlciwgbWFwLCBtZXJnZU1hcCwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IG1hcEVycm9yIH0gZnJvbSAnLi4vcnhqcy9tYXBFcnJvcic7XHJcbmltcG9ydCB7IGRlZmF1bHRTaGFyZVJlcGxheSB9IGZyb20gJy4uL3J4anMvZGVmYXVsdFNoYXJlUmVwbGF5JztcclxuaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVlc3RSZXNwb25zZTxUUGFyYW0gZXh0ZW5kcyBhbnlbXSwgVD4ge1xyXG4gIHJlcXVlc3RQYXJhbXM6IFsuLi5UUGFyYW1dO1xyXG4gIHJlc3BvbnNlOiBIdHRwUmVxdWVzdFN0YXRlPFQ+O1xyXG59XHJcblxyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGNsYXNzIEh0dHBSZXF1ZXN0U3RhdGVTdG9yZTxUUGFyYW0gZXh0ZW5kcyBhbnlbXSwgViwgUiA9IG51bGwsIFQgPSBSIGV4dGVuZHMgbnVsbCA/IFYgOiBSPiBleHRlbmRzIENvbXBvbmVudFN0b3JlPFJlcXVlc3RSZXNwb25zZTxUUGFyYW0sIFQ+PiB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByZXE6IEh0dHBSZXF1ZXN0RmFjdG9yeTxUUGFyYW0sIFY+ICxwcml2YXRlIG9wdGlvbnM/OiBSZXF1ZXN0U3RhdGVPcHRpb25zPFRQYXJhbT4sIHByaXZhdGUgcHJvamVjdD86ICh2OiBWKSA9PiBSKSB7XHJcbiAgICAgIHN1cGVyKHsgcmVxdWVzdFBhcmFtczogbnVsbCBhcyBhbnksIHJlc3BvbnNlOiBub3RTdGFydGVkIH0pO1xyXG4gICAgICB0aGlzLnJlcXVlc3QgPSAodGhpcy5vcHRpb25zPy5zdHJhdGVneSA9PT0gSHR0cFJlcXVlc3RTdHJhdGVneS5zaW5nbGVVc2UpID8gdGhpcy5zaW5nbGVVc2VSZXF1ZXN0IDogIHRoaXMuZmxhdHRlbmVkUmVxdWVzdDtcclxuXHJcbiAgICAgIGlmKG9wdGlvbnM/LmF1dG9SZXF1ZXN0V2l0aCl7XHJcbiAgICAgICAgdGhpcy5yZXF1ZXN0KC4uLm9wdGlvbnMuYXV0b1JlcXVlc3RXaXRoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJlc2V0KCkge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHsgcmVxdWVzdFBhcmFtczpudWxsIGFzIGFueSwgcmVzcG9uc2U6IG5vdFN0YXJ0ZWQgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBmbGF0dGVuaW5nU3RyYXRlZ3kgPSAoKSA9PiB7XHJcbiAgICAgIGlmKHRoaXMub3B0aW9ucz8uc3RyYXRlZ3kgPT09IEh0dHBSZXF1ZXN0U3RyYXRlZ3kuY29uY3VycmVudClcclxuICAgICAgICByZXR1cm4gbWVyZ2VNYXAoIChwYXJhbXM6IFsuLi5UUGFyYW1dKSA9PiB0aGlzLmNyZWF0ZVJlcXVlc3QoLi4ucGFyYW1zKSk7XHJcbiAgICAgIGlmKHRoaXMub3B0aW9ucz8uc3RyYXRlZ3kgPT09IEh0dHBSZXF1ZXN0U3RyYXRlZ3kuc2VxdWVudGlhbClcclxuICAgICAgICByZXR1cm4gY29uY2F0TWFwKCAocGFyYW1zOiBbLi4uVFBhcmFtXSkgPT4gdGhpcy5jcmVhdGVSZXF1ZXN0KC4uLnBhcmFtcykpO1xyXG4gICAgICByZXR1cm4gc3dpdGNoTWFwKCAocGFyYW1zOiBbLi4uVFBhcmFtXSkgPT4gKChwYXJhbXNbMF0gYXMgYW55KSBpbnN0YW5jZW9mIENhbmNlbGxhdGlvblRva2VuKSA/XHJcbiAgICAgICAgb2YoeyByZXF1ZXN0UGFyYW1zOiBwYXJhbXNbMF0sIHJlc3BvbnNlOiB7IHN0YXR1czogSHR0cFJlcXVlc3RTdGF0dXMuY2FuY2VsbGVkIH0gYXMgSHR0cFJlcXVlc3RTdGF0ZUNhbmNlbGxlZCB9ICkgOiB0aGlzLmNyZWF0ZVJlcXVlc3QoLi4ucGFyYW1zKSApO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVxdWVzdEVmZmVjdDogKHZhbHVlOiBbLi4uVFBhcmFtXSApID0+IFN1YnNjcmlwdGlvbiA9IHRoaXMuZWZmZWN0KChvYnM6IE9ic2VydmFibGU8Wy4uLlRQYXJhbV0+KSA9PiB7XHJcbiAgICAgIHJldHVybiAob2JzKS5waXBlKFxyXG4gICAgICAgIHRoaXMuZmxhdHRlbmluZ1N0cmF0ZWd5KCksXHJcbiAgICAgICAgdGFwPFJlcXVlc3RSZXNwb25zZTxUUGFyYW0sIFQ+PihzdGF0ZSA9PiB0aGlzLnNldFN0YXRlKHN0YXRlKSksXHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBwcml2YXRlIGZsYXR0ZW5lZFJlcXVlc3QgPSAoLi4udmFsdWU6IFsuLi5UUGFyYW1dKSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLnJlcXVlc3RFZmZlY3QodmFsdWUpIGFzIFN1YnNjcmlwdGlvbjtcclxuICAgIH1cclxuICAgIHByaXZhdGUgc2luZ2xlVXNlUmVxdWVzdCA9ICguLi52YWx1ZTogWy4uLlRQYXJhbV0pID0+IHtcclxuICAgICAgaWYgKHRoaXMuZ2V0KCkucmVzcG9uc2Uuc3RhdHVzICE9PSBIdHRwUmVxdWVzdFN0YXR1cy5ub3RTdGFydGVkKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwic3RhdGUgY2FuIG5vdCBiZSByZXVzZWQuIGVpdGhlciByZXNldCB0aGUgc3RhdGUgYnkgY2FsbGluZyByZXNldCgpIG9yIHVzZSBhIHN0YXRlIHJlcXVlc3RlciB0aGF0IGFsbG93cyBjb25jdXJyZW50IHJlcXVlc3RzLlwiKTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gdGhpcy5yZXF1ZXN0RWZmZWN0KHZhbHVlKSBhcyBTdWJzY3JpcHRpb247XHJcbiAgICB9XHJcblxyXG4gICAgc2VsZWN0SHR0cFN0YXRlJCA9IHRoaXMuc3RhdGUkLnBpcGUobWFwKGEgPT4gYS5yZXNwb25zZSkpO1xyXG5cclxuICAgIHNlbGVjdFN0YXR1cyQgPSB0aGlzLnNlbGVjdEh0dHBTdGF0ZSQucGlwZShtYXAoYSA9PiBhLnN0YXR1cykpO1xyXG5cclxuICAgIHNlbGVjdEVycm9yJCA9IHRoaXMuc3RhdGUkLnBpcGUoXHJcbiAgICAgIG1hcChyID0+IHIucmVzcG9uc2UpLFxyXG4gICAgICBmaWx0ZXIoaXNFcnJvclN0YXRlKSxcclxuICAgICAgbWFwKCBzdGF0ZSA9PiBzdGF0ZS5lcnJvcilcclxuICAgICk7XHJcblxyXG4gICAgc2VsZWN0UmVzcG9uc2UkOiBPYnNlcnZhYmxlPFQ+ID0gdGhpcy5zdGF0ZSQucGlwZShcclxuICAgICAgbWFwKHIgPT4gci5yZXNwb25zZSksXHJcbiAgICAgIGZpbHRlcihpc1N1Y2Nlc3NTdGF0ZSksXHJcbiAgICAgIG1hcCggc3RhdGUgPT4gc3RhdGUuYm9keSlcclxuICAgICk7XHJcbiAgICBzZWxlY3RTdWNjZXNzT3JFcnJvciQgPSB0aGlzLnN0YXRlJC5waXBlKFxyXG4gICAgICBtYXAociA9PiByLnJlc3BvbnNlKSxcclxuICAgICAgZmlsdGVyKGlzU3VjY2Vzc09yRXJyb3JTdGF0ZSksXHJcbiAgICAgIG1hcCggKCkgPT4gbnVsbClcclxuICAgICk7XHJcblxyXG4gICAgZXJyb3JIYW5kbGVkID0gZmFsc2U7XHJcbiAgICBvbkVycm9yKCBjYjogKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4gdm9pZCkge1xyXG4gICAgICB0aGlzLmVycm9ySGFuZGxlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMub24odGhpcy5zZWxlY3RFcnJvciQsIGNiKTtcclxuICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgb25TdWNjZXNzKCBjYjogKGJvZHk/OiBUKSA9PiB2b2lkKSB7XHJcbiAgICAgIHRoaXMub24odGhpcy5zZWxlY3RSZXNwb25zZSQsIGNiKTtcclxuICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgb25TdWNjZXNzT3JFcnJvcihjYjogKCkgPT4gdm9pZCl7XHJcbiAgICAgIHRoaXMub24odGhpcy5zZWxlY3RTdWNjZXNzT3JFcnJvciQsIGNiKTtcclxuICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgb25TdWNjZXNzV2l0aFJlcXVlc3QoZnVuYzogKHN0YXRlOiB7XHJcbiAgICAgIHJlcXVlc3RQYXJhbXM6IFsuLi5UUGFyYW1dO1xyXG4gICAgICBib2R5OiBUO1xyXG4gICAgfSkgPT4gdm9pZCkge1xyXG4gICAgICB0aGlzLm9uVXBkYXRlKCh7IHJlcXVlc3RQYXJhbXMsIHJlc3BvbnNlIH0pID0+IHtcclxuICAgICAgICBpZihpc1N1Y2Nlc3NTdGF0ZShyZXNwb25zZSkpe1xyXG4gICAgICAgICAgZnVuYyh7cmVxdWVzdFBhcmFtcyxib2R5OiByZXNwb25zZS5ib2R5fSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgb25FcnJvcldpdGhSZXF1ZXN0KGZ1bmM6IChzdGF0ZToge1xyXG4gICAgICBlcnJvcjogSHR0cEVycm9yUmVzcG9uc2U7XHJcbiAgICAgIHJlcXVlc3RQYXJhbXM6IFsuLi5UUGFyYW1dO1xyXG4gICAgfSkgPT4gdm9pZCkge1xyXG4gICAgICB0aGlzLm9uVXBkYXRlKCAoeyByZXF1ZXN0UGFyYW1zLCByZXNwb25zZSB9KSA9PiB7XHJcbiAgICAgICAgaWYoaXNFcnJvclN0YXRlKHJlc3BvbnNlKSl7XHJcbiAgICAgICAgICBmdW5jKHsgcmVxdWVzdFBhcmFtcywgZXJyb3I6IHJlc3BvbnNlLmVycm9yIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY3JlYXRlUmVxdWVzdCguLi5wYXJhbXM6IFsuLi5UUGFyYW1dKTogT2JzZXJ2YWJsZTxSZXF1ZXN0UmVzcG9uc2U8VFBhcmFtLCBUPj4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5yZXEoLi4ucGFyYW1zKS5waXBlKFxyXG4gICAgICAgIG1hcChyZSA9PiBjcmVhdGVTdWNjZXNzKCh0aGlzLnByb2plY3QgPyB0aGlzLnByb2plY3QocmUpIDogcmUpIGFzIFQpKSxcclxuICAgICAgICBtYXBFcnJvcihjcmVhdGVGYWlsdXJlKSxcclxuICAgICAgICBzdGFydFdpdGgoaW5Qcm9ncmVzcyksXHJcbiAgICAgICAgbWFwKCBzdGF0ZSA9PiAoeyByZXF1ZXN0UGFyYW1zOiBwYXJhbXMsIHJlc3BvbnNlOiBzdGF0ZSB9KSksXHJcbiAgICAgICAgZGVmYXVsdFNoYXJlUmVwbGF5KClcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBvblVwZGF0ZShmdW5jOiAoc3RhdGU6IHtcclxuICAgICAgcmVxdWVzdFBhcmFtczogWy4uLlRQYXJhbV07XHJcbiAgICAgIHJlc3BvbnNlOiBIdHRwUmVxdWVzdFN0YXRlPFQ+O1xyXG4gICAgfSkgPT4gdm9pZCkge1xyXG4gICAgICB0aGlzLm9uKHRoaXMuc3RhdGUkLCBmdW5jKTtcclxuICAgIH1cclxuXHJcbiAgICBvbiA9IDxWPihzcmNPYnNlcnZhYmxlOiBPYnNlcnZhYmxlPFY+LCBmdW5jOiAob2JqOiBWKSA9PiB2b2lkKTogU3Vic2NyaXB0aW9uID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuZWZmZWN0KChzcmM6IE9ic2VydmFibGU8Vj4pID0+IHtcclxuICAgICAgICByZXR1cm4gc3JjLnBpcGUodGFwKGZ1bmMpKTtcclxuICAgICAgfSkoc3JjT2JzZXJ2YWJsZSkgYXMgU3Vic2NyaXB0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIHJlcXVlc3Q6ICguLi52YWx1ZTogWy4uLlRQYXJhbV0gKSA9PiBTdWJzY3JpcHRpb247XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgZXhwb3J0IGNsYXNzIENhbmNlbGxhdGlvblRva2VuIHt9XHJcbiJdfQ==
@@ -0,0 +1,34 @@
1
+ import { Directive } from '@angular/core';
2
+ import { HttpRequestStateDirective } from './request-state-directive';
3
+ import * as i0 from "@angular/core";
4
+ export class HttpStateDirectiveBase {
5
+ constructor(injector, templateRef, viewContainer) {
6
+ this.injector = injector;
7
+ this.templateRef = templateRef;
8
+ this.viewContainer = viewContainer;
9
+ this.hasView = false;
10
+ this.baseRender = (state) => {
11
+ if (this.hasView) {
12
+ this.viewContainer.clear();
13
+ this.hasView = false;
14
+ }
15
+ this.hasView = this.render(state);
16
+ };
17
+ }
18
+ ngOnInit() {
19
+ const parent = this.injector.get(HttpRequestStateDirective);
20
+ if (parent == null) {
21
+ throw new Error('You can only use an http state directive as a child of the httpRequestState directive.');
22
+ }
23
+ parent.hooks.push(this.baseRender);
24
+ this.baseRender(parent.ViewContext.state);
25
+ }
26
+ ngOnDestroy() {
27
+ }
28
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: HttpStateDirectiveBase, deps: [{ token: i0.Injector }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
29
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.2", type: HttpStateDirectiveBase, ngImport: i0 }); }
30
+ }
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: HttpStateDirectiveBase, decorators: [{
32
+ type: Directive
33
+ }], ctorParameters: () => [{ type: i0.Injector }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }] });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSHR0cFN0YXRlRGlyZWN0aXZlQmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy9odHRwLXJlcXVlc3Qtc3RhdGUvZGlyZWN0aXZlcy9IdHRwU3RhdGVEaXJlY3RpdmVCYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQTJDLE1BQU0sZUFBZSxDQUFDO0FBRW5GLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQUd0RSxNQUFNLE9BQWdCLHNCQUFzQjtJQUV4QyxZQUNZLFFBQWtCLEVBQ2hCLFdBQTZCLEVBQzdCLGFBQStCO1FBRmpDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDaEIsZ0JBQVcsR0FBWCxXQUFXLENBQWtCO1FBQzdCLGtCQUFhLEdBQWIsYUFBYSxDQUFrQjtRQUo3QyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBc0JSLGVBQVUsR0FBRyxDQUFDLEtBQXNCLEVBQVUsRUFBRTtZQUNwRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUN6QixDQUFDO1lBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQTtJQXJCRCxDQUFDO0lBRUQsUUFBUTtRQUNKLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDNUQsSUFBRyxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3RkFBd0YsQ0FBQyxDQUFDO1FBQzlHLENBQUM7UUFDRCxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxXQUFXO0lBRVgsQ0FBQzs4R0FyQmlCLHNCQUFzQjtrR0FBdEIsc0JBQXNCOzsyRkFBdEIsc0JBQXNCO2tCQUQzQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbmplY3RvciwgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cFJlcXVlc3RTdGF0ZSB9IGZyb20gJy4uL3R5cGVzJztcclxuaW1wb3J0IHsgSHR0cFJlcXVlc3RTdGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4vcmVxdWVzdC1zdGF0ZS1kaXJlY3RpdmUnO1xyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBIdHRwU3RhdGVEaXJlY3RpdmVCYXNlIHtcclxuICAgIGhhc1ZpZXcgPSBmYWxzZTtcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgIHByb3RlY3RlZCB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PixcclxuICAgICAgICBwcm90ZWN0ZWQgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZixcclxuICAgICkge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmluamVjdG9yLmdldChIdHRwUmVxdWVzdFN0YXRlRGlyZWN0aXZlKTtcclxuICAgICAgICBpZihwYXJlbnQgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1lvdSBjYW4gb25seSB1c2UgYW4gaHR0cCBzdGF0ZSBkaXJlY3RpdmUgYXMgYSBjaGlsZCBvZiB0aGUgaHR0cFJlcXVlc3RTdGF0ZSBkaXJlY3RpdmUuJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHBhcmVudC5ob29rcy5wdXNoKHRoaXMuYmFzZVJlbmRlcik7XHJcbiAgICAgICAgdGhpcy5iYXNlUmVuZGVyKHBhcmVudC5WaWV3Q29udGV4dC5zdGF0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBiYXNlUmVuZGVyID0gKHN0YXRlOkh0dHBSZXF1ZXN0U3RhdGUgKSA6IHZvaWQgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLmhhc1ZpZXcpIHtcclxuICAgICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyLmNsZWFyKCk7XHJcbiAgICAgICAgICAgIHRoaXMuaGFzVmlldyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmhhc1ZpZXcgPSB0aGlzLnJlbmRlcihzdGF0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgYWJzdHJhY3QgcmVuZGVyOiAoc3RhdGU6IEh0dHBSZXF1ZXN0U3RhdGUpID0+IGJvb2xlYW47XHJcbn1cclxuIl19
@@ -0,0 +1,29 @@
1
+ import { Directive } from '@angular/core';
2
+ import { isErrorState } from '../helpers';
3
+ import { HttpStateDirectiveBase } from './HttpStateDirectiveBase';
4
+ import * as i0 from "@angular/core";
5
+ export class HttpErrorStateDirective extends HttpStateDirectiveBase {
6
+ constructor(injector, templateRef, viewContainer) {
7
+ super(injector, templateRef, viewContainer);
8
+ this.render = (state) => {
9
+ if (isErrorState(state)) {
10
+ this.viewContainer.createEmbeddedView(this.templateRef, { $implicit: state.error });
11
+ return true;
12
+ }
13
+ return false;
14
+ };
15
+ }
16
+ ngOnInit() {
17
+ super.ngOnInit();
18
+ }
19
+ ngOnDestroy() {
20
+ super.ngOnDestroy();
21
+ }
22
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: HttpErrorStateDirective, deps: [{ token: i0.Injector }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
23
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.2", type: HttpErrorStateDirective, isStandalone: true, selector: "[httpErrorState]", usesInheritance: true, ngImport: i0 }); }
24
+ }
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: HttpErrorStateDirective, decorators: [{
26
+ type: Directive,
27
+ args: [{ selector: '[httpErrorState]', standalone: true }]
28
+ }], ctorParameters: () => [{ type: i0.Injector }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }] });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1lcnJvci1zdGF0ZS1kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXV0aWxpdGllcy9zcmMvaHR0cC1yZXF1ZXN0LXN0YXRlL2RpcmVjdGl2ZXMvaHR0cC1lcnJvci1zdGF0ZS1kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBMkMsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUxQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFHbEUsTUFBTSxPQUFPLHVCQUFpRCxTQUFRLHNCQUFzQjtJQUUxRixZQUNFLFFBQWtCLEVBQ2xCLFdBQTZCLEVBQzdCLGFBQStCO1FBRS9CLEtBQUssQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBRzlDLFdBQU0sR0FBRyxDQUFDLEtBQTRCLEVBQUUsRUFBRTtZQUN4QyxJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN4QixJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBQ3BGLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztZQUNELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxDQUFDO0lBUkYsQ0FBQztJQVVELFFBQVE7UUFDTixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVELFdBQVc7UUFDVCxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdEIsQ0FBQzs4R0F4QlUsdUJBQXVCO2tHQUF2Qix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBRG5DLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5qZWN0b3IsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGlzRXJyb3JTdGF0ZSB9IGZyb20gJy4uL2hlbHBlcnMnO1xyXG5pbXBvcnQgeyBIdHRwUmVxdWVzdFN0YXRlIH0gZnJvbSAnLi4vdHlwZXMnO1xyXG5pbXBvcnQgeyBIdHRwU3RhdGVEaXJlY3RpdmVCYXNlIH0gZnJvbSAnLi9IdHRwU3RhdGVEaXJlY3RpdmVCYXNlJztcclxuXHJcbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1todHRwRXJyb3JTdGF0ZV0nLCBzdGFuZGFsb25lOiB0cnVlIH0pXHJcbmV4cG9ydCBjbGFzcyBIdHRwRXJyb3JTdGF0ZURpcmVjdGl2ZTxUUGFyYW0gZXh0ZW5kcyBhbnlbXSwgVD4gZXh0ZW5kcyBIdHRwU3RhdGVEaXJlY3RpdmVCYXNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PixcclxuICAgIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgKSB7XHJcbiAgICBzdXBlcihpbmplY3RvciwgdGVtcGxhdGVSZWYsIHZpZXdDb250YWluZXIpO1xyXG4gIH1cclxuXHJcbiAgcmVuZGVyID0gKHN0YXRlOiBIdHRwUmVxdWVzdFN0YXRlPGFueT4pID0+IHtcclxuICAgIGlmIChpc0Vycm9yU3RhdGUoc3RhdGUpKSB7XHJcbiAgICAgIHRoaXMudmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy50ZW1wbGF0ZVJlZiwgeyAkaW1wbGljaXQ6IHN0YXRlLmVycm9yIH0pO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9O1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgfVxyXG59Il19
@@ -0,0 +1,29 @@
1
+ import { Directive } from '@angular/core';
2
+ import { HttpStateDirectiveBase } from './HttpStateDirectiveBase';
3
+ import { HttpRequestStatus } from '../types';
4
+ import * as i0 from "@angular/core";
5
+ export class HttpInProgressStateDirective extends HttpStateDirectiveBase {
6
+ constructor(injector, templateRef, viewContainer) {
7
+ super(injector, templateRef, viewContainer);
8
+ this.render = (state) => {
9
+ if (state.status === HttpRequestStatus.inProgress) {
10
+ this.viewContainer.createEmbeddedView(this.templateRef);
11
+ return true;
12
+ }
13
+ return false;
14
+ };
15
+ }
16
+ ngOnInit() {
17
+ super.ngOnInit();
18
+ }
19
+ ngOnDestroy() {
20
+ super.ngOnDestroy();
21
+ }
22
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: HttpInProgressStateDirective, deps: [{ token: i0.Injector }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
23
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.2", type: HttpInProgressStateDirective, isStandalone: true, selector: "[httpInProgressState]", usesInheritance: true, ngImport: i0 }); }
24
+ }
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: HttpInProgressStateDirective, decorators: [{
26
+ type: Directive,
27
+ args: [{ selector: '[httpInProgressState]', standalone: true }]
28
+ }], ctorParameters: () => [{ type: i0.Injector }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }] });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1pblByb2dyZXNzLXN0YXRlLWRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy9odHRwLXJlcXVlc3Qtc3RhdGUvZGlyZWN0aXZlcy9odHRwLWluUHJvZ3Jlc3Mtc3RhdGUtZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQTJDLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2xFLE9BQU8sRUFBb0IsaUJBQWlCLEVBQUUsTUFBTSxVQUFVLENBQUE7O0FBSTlELE1BQU0sT0FBTyw0QkFBOEIsU0FBUSxzQkFBc0I7SUFTckUsWUFDRyxRQUFrQixFQUNqQixXQUE2QixFQUM3QixhQUErQjtRQUUvQixLQUFLLENBQUMsUUFBUSxFQUFDLFdBQVcsRUFBQyxhQUFhLENBQUMsQ0FBQztRQWI5QyxXQUFNLEdBQUcsQ0FBQyxLQUE0QixFQUFFLEVBQUU7WUFDdEMsSUFBRyxLQUFLLENBQUMsTUFBTSxLQUFLLGlCQUFpQixDQUFDLFVBQVUsRUFBQyxDQUFDO2dCQUM5QyxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUUsQ0FBQztnQkFDekQsT0FBTyxJQUFJLENBQUM7WUFDaEIsQ0FBQztZQUNELE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUMsQ0FBQztJQVFGLENBQUM7SUFFRCxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxXQUFXO1FBQ1AsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7OEdBdkJRLDRCQUE0QjtrR0FBNUIsNEJBQTRCOzsyRkFBNUIsNEJBQTRCO2tCQUR4QyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLHVCQUF1QixFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEluamVjdG9yLCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwU3RhdGVEaXJlY3RpdmVCYXNlIH0gZnJvbSAnLi9IdHRwU3RhdGVEaXJlY3RpdmVCYXNlJztcclxuaW1wb3J0IHsgSHR0cFJlcXVlc3RTdGF0ZSwgSHR0cFJlcXVlc3RTdGF0dXMgfSBmcm9tICcuLi90eXBlcydcclxuXHJcblxyXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbaHR0cEluUHJvZ3Jlc3NTdGF0ZV0nLCBzdGFuZGFsb25lOiB0cnVlIH0pXHJcbmV4cG9ydCBjbGFzcyBIdHRwSW5Qcm9ncmVzc1N0YXRlRGlyZWN0aXZlICBleHRlbmRzIEh0dHBTdGF0ZURpcmVjdGl2ZUJhc2Uge1xyXG4gICAgcmVuZGVyID0gKHN0YXRlOiBIdHRwUmVxdWVzdFN0YXRlPGFueT4pID0+IHtcclxuICAgICAgICBpZihzdGF0ZS5zdGF0dXMgPT09IEh0dHBSZXF1ZXN0U3RhdHVzLmluUHJvZ3Jlc3Mpe1xyXG4gICAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGVSZWYgKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXHJcbiAgICAgICAgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sXHJcbiAgICAgICAgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZixcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKGluamVjdG9yLHRlbXBsYXRlUmVmLHZpZXdDb250YWluZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcclxuICAgIH1cclxuXHJcbn1cclxuIl19
@@ -0,0 +1,29 @@
1
+ import { Directive } from '@angular/core';
2
+ import { HttpRequestStatus } from '../types';
3
+ import { HttpStateDirectiveBase } from './HttpStateDirectiveBase';
4
+ import * as i0 from "@angular/core";
5
+ export class HttpNotStartedStateDirective extends HttpStateDirectiveBase {
6
+ constructor(injector, templateRef, viewContainer) {
7
+ super(injector, templateRef, viewContainer);
8
+ this.render = (state) => {
9
+ if (state.status === HttpRequestStatus.notStarted) {
10
+ this.viewContainer.createEmbeddedView(this.templateRef);
11
+ return true;
12
+ }
13
+ return false;
14
+ };
15
+ }
16
+ ngOnInit() {
17
+ super.ngOnInit();
18
+ }
19
+ ngOnDestroy() {
20
+ super.ngOnDestroy();
21
+ }
22
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: HttpNotStartedStateDirective, deps: [{ token: i0.Injector }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
23
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.2", type: HttpNotStartedStateDirective, isStandalone: true, selector: "[httpNotStartedState]", usesInheritance: true, ngImport: i0 }); }
24
+ }
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: HttpNotStartedStateDirective, decorators: [{
26
+ type: Directive,
27
+ args: [{ selector: '[httpNotStartedState]', standalone: true }]
28
+ }], ctorParameters: () => [{ type: i0.Injector }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }] });
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1ub3RTdGFydGVkLXN0YXRlLWRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy9odHRwLXJlcXVlc3Qtc3RhdGUvZGlyZWN0aXZlcy9odHRwLW5vdFN0YXJ0ZWQtc3RhdGUtZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQTJDLE1BQU0sZUFBZSxDQUFDO0FBQ25GLE9BQU8sRUFBb0IsaUJBQWlCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDL0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBSWxFLE1BQU0sT0FBTyw0QkFBcUQsU0FBUSxzQkFBc0I7SUFTNUYsWUFDSSxRQUFrQixFQUNsQixXQUE2QixFQUM3QixhQUErQjtRQUUvQixLQUFLLENBQUMsUUFBUSxFQUFDLFdBQVcsRUFBQyxhQUFhLENBQUMsQ0FBQztRQWI5QyxXQUFNLEdBQUcsQ0FBQyxLQUE0QixFQUFFLEVBQUU7WUFDdEMsSUFBRyxLQUFLLENBQUMsTUFBTSxLQUFLLGlCQUFpQixDQUFDLFVBQVUsRUFBQyxDQUFDO2dCQUM5QyxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUUsQ0FBQztnQkFDekQsT0FBTyxJQUFJLENBQUM7WUFDaEIsQ0FBQztZQUNELE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUMsQ0FBQztJQVFGLENBQUM7SUFFRCxRQUFRO1FBQ0osS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxXQUFXO1FBQ1AsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7OEdBdkJRLDRCQUE0QjtrR0FBNUIsNEJBQTRCOzsyRkFBNUIsNEJBQTRCO2tCQUR4QyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLHVCQUF1QixFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEluamVjdG9yLCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwUmVxdWVzdFN0YXRlLCBIdHRwUmVxdWVzdFN0YXR1cyB9IGZyb20gJy4uL3R5cGVzJztcclxuaW1wb3J0IHsgSHR0cFN0YXRlRGlyZWN0aXZlQmFzZSB9IGZyb20gJy4vSHR0cFN0YXRlRGlyZWN0aXZlQmFzZSc7XHJcblxyXG5cclxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW2h0dHBOb3RTdGFydGVkU3RhdGVdJywgc3RhbmRhbG9uZTogdHJ1ZSB9KVxyXG5leHBvcnQgY2xhc3MgSHR0cE5vdFN0YXJ0ZWRTdGF0ZURpcmVjdGl2ZTxUUGFyYW0gZXh0ZW5kcyBhbnlbXSxUPiBleHRlbmRzIEh0dHBTdGF0ZURpcmVjdGl2ZUJhc2Uge1xyXG4gICAgcmVuZGVyID0gKHN0YXRlOiBIdHRwUmVxdWVzdFN0YXRlPGFueT4pID0+IHtcclxuICAgICAgICBpZihzdGF0ZS5zdGF0dXMgPT09IEh0dHBSZXF1ZXN0U3RhdHVzLm5vdFN0YXJ0ZWQpe1xyXG4gICAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGVSZWYgKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgICAgIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LFxyXG4gICAgICAgIHZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcihpbmplY3Rvcix0ZW1wbGF0ZVJlZix2aWV3Q29udGFpbmVyKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,34 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import { isSuccessState } from '../helpers';
3
+ import { HttpStateDirectiveBase } from './HttpStateDirectiveBase';
4
+ import * as i0 from "@angular/core";
5
+ export class HttpSuccessStateDirective extends HttpStateDirectiveBase {
6
+ constructor(injector, templateRef, viewContainer) {
7
+ super(injector, templateRef, viewContainer);
8
+ this.render = (state) => {
9
+ if (isSuccessState(state)) {
10
+ this.viewContainer.createEmbeddedView(this.templateRef, { $implicit: state.body });
11
+ return true;
12
+ }
13
+ return false;
14
+ };
15
+ }
16
+ ngOnInit() {
17
+ super.ngOnInit();
18
+ }
19
+ ngOnDestroy() {
20
+ super.ngOnDestroy();
21
+ }
22
+ static ngTemplateContextGuard(dir, ctx) {
23
+ return true;
24
+ }
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: HttpSuccessStateDirective, deps: [{ token: i0.Injector }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
26
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.2", type: HttpSuccessStateDirective, isStandalone: true, selector: "[httpSuccessState]", inputs: { httpSuccessStateTypeSafety: "httpSuccessStateTypeSafety" }, usesInheritance: true, ngImport: i0 }); }
27
+ }
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: HttpSuccessStateDirective, decorators: [{
29
+ type: Directive,
30
+ args: [{ selector: '[httpSuccessState]', standalone: true }]
31
+ }], ctorParameters: () => [{ type: i0.Injector }, { type: i0.TemplateRef }, { type: i0.ViewContainerRef }], propDecorators: { httpSuccessStateTypeSafety: [{
32
+ type: Input
33
+ }] } });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1zdWNjZXNzLXN0YXRlLWRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdXRpbGl0aWVzL3NyYy9odHRwLXJlcXVlc3Qtc3RhdGUvZGlyZWN0aXZlcy9odHRwLXN1Y2Nlc3Mtc3RhdGUtZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVksS0FBSyxFQUFpQyxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQVNsRSxNQUFNLE9BQU8seUJBQXVDLFNBQVEsc0JBQXNCO0lBU2hGLFlBQ0UsUUFBa0IsRUFDbEIsV0FBK0QsRUFDL0QsYUFBK0I7UUFFL0IsS0FBSyxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFaOUMsV0FBTSxHQUFHLENBQUMsS0FBK0MsRUFBRSxFQUFFO1lBQzNELElBQUksY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDbkYsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUM7SUFPRixDQUFDO0lBRUQsUUFBUTtRQUNOLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsV0FBVztRQUNULEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsTUFBTSxDQUFDLHNCQUFzQixDQUFPLEdBQW9DLEVBQUUsR0FBUTtRQUNoRixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7OEdBM0JVLHlCQUF5QjtrR0FBekIseUJBQXlCOzsyRkFBekIseUJBQXlCO2tCQURyQyxTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7c0lBRXBELDBCQUEwQjtzQkFBbEMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5qZWN0b3IsIElucHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBpc1N1Y2Nlc3NTdGF0ZSB9IGZyb20gJy4uL2hlbHBlcnMnO1xyXG5pbXBvcnQgeyBIdHRwU3RhdGVEaXJlY3RpdmVCYXNlIH0gZnJvbSAnLi9IdHRwU3RhdGVEaXJlY3RpdmVCYXNlJztcclxuaW1wb3J0IHsgSHR0cFJlcXVlc3RTdGF0ZSB9IGZyb20gJy4uL3R5cGVzJztcclxuaW1wb3J0IHsgSHR0cFJlcXVlc3RTdGF0ZVN0b3JlIH0gZnJvbSAnLi4vSHR0cFJlcXVlc3RTdGF0ZVN0b3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBIdHRwU3VjY2Vzc1N0YXRlVmlld0NvbnRleHQ8VD4ge1xyXG4gICRpbXBsaWNpdDogVDtcclxufVxyXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbaHR0cFN1Y2Nlc3NTdGF0ZV0nLCBzdGFuZGFsb25lOiB0cnVlIH0pXHJcbmV4cG9ydCBjbGFzcyBIdHRwU3VjY2Vzc1N0YXRlRGlyZWN0aXZlPFYsIFIgPSBudWxsPiBleHRlbmRzIEh0dHBTdGF0ZURpcmVjdGl2ZUJhc2Uge1xyXG4gIEBJbnB1dCgpIGh0dHBTdWNjZXNzU3RhdGVUeXBlU2FmZXR5PzogSHR0cFJlcXVlc3RTdGF0ZVN0b3JlPGFueSwgViwgUj4gfCBPYnNlcnZhYmxlPEh0dHBSZXF1ZXN0U3RhdGU8Vj4+O1xyXG4gIHJlbmRlciA9IChzdGF0ZTogSHR0cFJlcXVlc3RTdGF0ZTxSIGV4dGVuZHMgbnVsbCA/IFYgOiBSPikgPT4ge1xyXG4gICAgaWYgKGlzU3VjY2Vzc1N0YXRlKHN0YXRlKSkge1xyXG4gICAgICB0aGlzLnZpZXdDb250YWluZXIuY3JlYXRlRW1iZWRkZWRWaWV3KHRoaXMudGVtcGxhdGVSZWYsIHsgJGltcGxpY2l0OiBzdGF0ZS5ib2R5IH0pO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9O1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgaW5qZWN0b3I6IEluamVjdG9yLFxyXG4gICAgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPHsgJGltcGxpY2l0OiBSIGV4dGVuZHMgbnVsbCA/IFYgOiBSIH0+LFxyXG4gICAgdmlld0NvbnRhaW5lcjogVmlld0NvbnRhaW5lclJlZixcclxuICApIHtcclxuICAgIHN1cGVyKGluamVjdG9yLCB0ZW1wbGF0ZVJlZiwgdmlld0NvbnRhaW5lcik7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgbmdUZW1wbGF0ZUNvbnRleHRHdWFyZDxWLCBSPihkaXI6IEh0dHBTdWNjZXNzU3RhdGVEaXJlY3RpdmU8ViwgUj4sIGN0eDogYW55KTogY3R4IGlzIEh0dHBTdWNjZXNzU3RhdGVWaWV3Q29udGV4dDxSIGV4dGVuZHMgbnVsbCA/IFYgOiBSPiB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcbn1cclxuIl19