@sumaris-net/ngx-components 2.0.0-rc1 → 2.0.0-rc4

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 (287) hide show
  1. package/doc/changelog.md +50 -0
  2. package/esm2020/public_api.mjs +9 -5
  3. package/esm2020/src/app/admin/admin-routing.module.mjs +5 -5
  4. package/esm2020/src/app/admin/admin.module.mjs +13 -28
  5. package/esm2020/src/app/admin/services/person.service.mjs +3 -3
  6. package/esm2020/src/app/admin/services/validator/person.validator.mjs +3 -3
  7. package/esm2020/src/app/admin/users/list/users.mjs +33 -27
  8. package/esm2020/src/app/admin/users/list/users.module.mjs +58 -0
  9. package/esm2020/src/app/core/about/modal-about.mjs +3 -3
  10. package/esm2020/src/app/core/account/account.mjs +3 -3
  11. package/esm2020/src/app/core/auth/form/form-auth.mjs +3 -3
  12. package/esm2020/src/app/core/auth/modal/modal-auth.mjs +3 -3
  13. package/esm2020/src/app/core/core.module.mjs +6 -6
  14. package/esm2020/src/app/core/core.testing.module.mjs +26 -12
  15. package/esm2020/src/app/core/form/editor.class.mjs +129 -62
  16. package/esm2020/src/app/core/form/entity-editor-modal.class.mjs +25 -10
  17. package/esm2020/src/app/core/form/entity-editor.class.mjs +10 -33
  18. package/esm2020/src/app/core/form/entity-metadata.component.mjs +3 -3
  19. package/esm2020/src/app/core/form/form-buttons-bar.component.mjs +3 -3
  20. package/esm2020/src/app/core/form/form.class.mjs +10 -4
  21. package/esm2020/src/app/core/form/form.utils.mjs +39 -4
  22. package/esm2020/src/app/core/form/list.form.mjs +7 -6
  23. package/esm2020/src/app/core/form/properties/properties.form.mjs +129 -0
  24. package/esm2020/src/app/core/form/properties/property.validator.mjs +23 -0
  25. package/esm2020/src/app/core/form/properties/testing/properties-form.test.mjs +90 -0
  26. package/esm2020/src/app/core/form/properties/testing/properties-form.testing.module.mjs +39 -0
  27. package/esm2020/src/app/core/graphql/graphql.module.mjs +4 -4
  28. package/esm2020/src/app/core/graphql/graphql.service.mjs +3 -3
  29. package/esm2020/src/app/core/graphql/graphql.utils.mjs +2 -2
  30. package/esm2020/src/app/core/home/home.mjs +3 -3
  31. package/esm2020/src/app/core/icon/icon.component.mjs +5 -5
  32. package/esm2020/src/app/core/icon/icon.module.mjs +4 -4
  33. package/esm2020/src/app/core/install/install-upgrade-card.component.mjs +3 -3
  34. package/esm2020/src/app/core/install/install-upgrade-card.module.mjs +4 -4
  35. package/esm2020/src/app/core/menu/menu.component.mjs +3 -3
  36. package/esm2020/src/app/core/menu/menu.module.mjs +4 -4
  37. package/esm2020/src/app/core/menu/menu.service.mjs +3 -3
  38. package/esm2020/src/app/core/offline/update-offline-mode-card.component.mjs +3 -3
  39. package/esm2020/src/app/core/peer/select-peer.modal.mjs +3 -3
  40. package/esm2020/src/app/core/peer/select-peer.module.mjs +4 -4
  41. package/esm2020/src/app/core/register/confirm/confirm.mjs +3 -3
  42. package/esm2020/src/app/core/register/form/form-register.mjs +3 -3
  43. package/esm2020/src/app/core/register/modal/modal-register.mjs +3 -3
  44. package/esm2020/src/app/core/register/register.module.mjs +4 -4
  45. package/esm2020/src/app/core/services/account.service.mjs +5 -5
  46. package/esm2020/src/app/core/services/auth-guard.service.mjs +3 -3
  47. package/esm2020/src/app/core/services/base-entity-service.class.mjs +8 -9
  48. package/esm2020/src/app/core/services/base-graphql-service.class.mjs +3 -3
  49. package/esm2020/src/app/core/services/config.service.mjs +5 -5
  50. package/esm2020/src/app/core/services/crypto.service.mjs +3 -3
  51. package/esm2020/src/app/core/services/local-settings.service.mjs +3 -3
  52. package/esm2020/src/app/core/services/model/peer.model.mjs +3 -3
  53. package/esm2020/src/app/core/services/model/referential.model.mjs +11 -3
  54. package/esm2020/src/app/core/services/network.service.mjs +21 -28
  55. package/esm2020/src/app/core/services/pipes/account.pipes.mjs +8 -8
  56. package/esm2020/src/app/core/services/pipes/department-to-string.pipe.mjs +4 -4
  57. package/esm2020/src/app/core/services/pipes/person-to-string.pipe.mjs +4 -4
  58. package/esm2020/src/app/core/services/pipes/usage-mode.pipes.mjs +8 -8
  59. package/esm2020/src/app/core/services/platform.service.mjs +3 -3
  60. package/esm2020/src/app/core/services/storage/entities-storage.service.mjs +3 -3
  61. package/esm2020/src/app/core/services/testing/referential.validator.mjs +3 -3
  62. package/esm2020/src/app/core/services/validator/account.validator.mjs +3 -3
  63. package/esm2020/src/app/core/services/validator/base.validator.class.mjs +3 -3
  64. package/esm2020/src/app/core/services/validator/local-settings.validator.mjs +3 -3
  65. package/esm2020/src/app/core/services/validator/user-settings.validator.mjs +3 -3
  66. package/esm2020/src/app/core/settings/settings.page.mjs +4 -4
  67. package/esm2020/src/app/core/table/actions-column.component.mjs +9 -9
  68. package/esm2020/src/app/core/table/entities-table-datasource.class.mjs +74 -65
  69. package/esm2020/src/app/core/table/memory-table.class.mjs +3 -3
  70. package/esm2020/src/app/core/table/table-select-columns.component.mjs +3 -3
  71. package/esm2020/src/app/core/table/table.class.mjs +223 -208
  72. package/esm2020/src/app/core/table/table.utils.mjs +1 -1
  73. package/esm2020/src/app/core/table/testing/table.testing.mjs +5 -5
  74. package/esm2020/src/app/core/table/testing/table.testing.module.mjs +4 -4
  75. package/esm2020/src/app/core/text-popover/testing/text-popover.testing.mjs +3 -3
  76. package/esm2020/src/app/core/text-popover/testing/text-popover.testing.module.mjs +4 -4
  77. package/esm2020/src/app/core/text-popover/text-form.component.mjs +3 -3
  78. package/esm2020/src/app/core/text-popover/text-popover.component.mjs +3 -3
  79. package/esm2020/src/app/shared/audio/audio.mjs +4 -4
  80. package/esm2020/src/app/shared/audio/audio.testing.mjs +3 -3
  81. package/esm2020/src/app/shared/audio/audio.testing.module.mjs +4 -4
  82. package/esm2020/src/app/shared/capacitor/keyboard.mjs +3 -3
  83. package/esm2020/src/app/shared/debug/debug.component.mjs +39 -0
  84. package/esm2020/src/app/shared/debug/debug.module.mjs +44 -0
  85. package/esm2020/src/app/shared/directives/autofocus.directive.mjs +6 -6
  86. package/esm2020/src/app/shared/directives/autotitle.directive.mjs +3 -3
  87. package/esm2020/src/app/shared/directives/directives.module.mjs +4 -4
  88. package/esm2020/src/app/shared/directives/drag-and-drop.directive.mjs +3 -3
  89. package/esm2020/src/app/shared/directives/ng-var.directive.mjs +3 -3
  90. package/esm2020/src/app/shared/directives/resizable/resizable.component.mjs +3 -3
  91. package/esm2020/src/app/shared/directives/resizable/resizable.directive.mjs +3 -3
  92. package/esm2020/src/app/shared/directives/resizable/resizable.module.mjs +4 -4
  93. package/esm2020/src/app/shared/events.mjs +2 -2
  94. package/esm2020/src/app/shared/file/file.service.mjs +5 -5
  95. package/esm2020/src/app/shared/form/field.component.mjs +10 -7
  96. package/esm2020/src/app/shared/form/loading-spinner.mjs +3 -3
  97. package/esm2020/src/app/shared/forms.mjs +21 -2
  98. package/esm2020/src/app/shared/functions.mjs +23 -10
  99. package/esm2020/src/app/shared/gesture/gesture-config.mjs +3 -3
  100. package/esm2020/src/app/shared/graph/graph-colors.mjs +17 -63
  101. package/esm2020/src/app/shared/guard/component-dirty.guard.mjs +3 -3
  102. package/esm2020/src/app/shared/help/help.modal.mjs +3 -3
  103. package/esm2020/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.mjs +3 -3
  104. package/esm2020/src/app/shared/hotkeys/hotkeys.service.mjs +3 -3
  105. package/esm2020/src/app/shared/hotkeys/shared-hotkeys.module.mjs +4 -4
  106. package/esm2020/src/app/shared/image/gallery/image-gallery.component.mjs +3 -3
  107. package/esm2020/src/app/shared/image/gallery/image-gallery.module.mjs +4 -4
  108. package/esm2020/src/app/shared/image/gallery/testing/gallery.service.testing.mjs +3 -3
  109. package/esm2020/src/app/shared/image/gallery/testing/gallery.testing.mjs +3 -3
  110. package/esm2020/src/app/shared/image/gallery/testing/gallery.testing.module.mjs +4 -4
  111. package/esm2020/src/app/shared/image/image.module.mjs +4 -4
  112. package/esm2020/src/app/shared/image/image.service.mjs +3 -3
  113. package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.mjs +8 -10
  114. package/esm2020/src/app/shared/material/autocomplete/material.autocomplete.module.mjs +4 -4
  115. package/esm2020/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +3 -3
  116. package/esm2020/src/app/shared/material/badge/badge.directive.mjs +157 -0
  117. package/esm2020/src/app/shared/material/badge/badge.module.mjs +32 -0
  118. package/esm2020/src/app/shared/material/badge/badge.test.mjs +26 -0
  119. package/esm2020/src/app/shared/material/boolean/boolean.module.mjs +4 -4
  120. package/esm2020/src/app/shared/material/boolean/material.boolean.mjs +3 -3
  121. package/esm2020/src/app/shared/material/chips/chips.module.mjs +4 -4
  122. package/esm2020/src/app/shared/material/chips/material.chips.mjs +11 -13
  123. package/esm2020/src/app/shared/material/chips/testing/chips.test.mjs +3 -3
  124. package/esm2020/src/app/shared/material/datetime/datetime.module.mjs +4 -4
  125. package/esm2020/src/app/shared/material/datetime/material.date.mjs +79 -83
  126. package/esm2020/src/app/shared/material/datetime/material.dateshort.mjs +5 -5
  127. package/esm2020/src/app/shared/material/datetime/material.datetime.mjs +95 -77
  128. package/esm2020/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +5 -5
  129. package/esm2020/src/app/shared/material/datetime/testing/mat-date.test.mjs +5 -5
  130. package/esm2020/src/app/shared/material/duration/duration.module.mjs +4 -4
  131. package/esm2020/src/app/shared/material/duration/material.duration.mjs +3 -3
  132. package/esm2020/src/app/shared/material/latlong/material.latlong.mjs +3 -3
  133. package/esm2020/src/app/shared/material/latlong/material.latlong.module.mjs +4 -4
  134. package/esm2020/src/app/shared/material/latlong/testing/latlong.test.mjs +3 -3
  135. package/esm2020/src/app/shared/material/material.animations.mjs +1 -1
  136. package/esm2020/src/app/shared/material/material.module.mjs +10 -10
  137. package/esm2020/src/app/shared/material/material.testing.module.mjs +24 -12
  138. package/esm2020/src/app/shared/material/numpad/numpad.append-to-input.directive.mjs +3 -3
  139. package/esm2020/src/app/shared/material/numpad/numpad.component.mjs +3 -3
  140. package/esm2020/src/app/shared/material/numpad/numpad.container.mjs +5 -5
  141. package/esm2020/src/app/shared/material/numpad/numpad.content.mjs +3 -3
  142. package/esm2020/src/app/shared/material/numpad/numpad.directive.mjs +3 -3
  143. package/esm2020/src/app/shared/material/numpad/numpad.dom-service.mjs +3 -3
  144. package/esm2020/src/app/shared/material/numpad/numpad.module.mjs +4 -4
  145. package/esm2020/src/app/shared/material/numpad/testing/numpad.test.mjs +3 -3
  146. package/esm2020/src/app/shared/material/paginator/material.paginator-i18n.mjs +3 -3
  147. package/esm2020/src/app/shared/material/stepper/material.stepper-i18n.mjs +3 -3
  148. package/esm2020/src/app/shared/material/swipe/material.swipe.mjs +3 -3
  149. package/esm2020/src/app/shared/material/swipe/swipe.module.mjs +4 -4
  150. package/esm2020/src/app/shared/material/swipe/testing/swipe.test.mjs +3 -3
  151. package/esm2020/src/app/shared/observables.mjs +29 -22
  152. package/esm2020/src/app/shared/pipes/arrays.pipe.mjs +48 -27
  153. package/esm2020/src/app/shared/pipes/colors.pipe.mjs +3 -3
  154. package/esm2020/src/app/shared/pipes/date-diff-duration.pipe.mjs +4 -4
  155. package/esm2020/src/app/shared/pipes/date-format.pipe.mjs +4 -4
  156. package/esm2020/src/app/shared/pipes/date-from-now.pipe.mjs +4 -4
  157. package/esm2020/src/app/shared/pipes/duration.pipe.mjs +4 -4
  158. package/esm2020/src/app/shared/pipes/file-size.pipe.mjs +3 -3
  159. package/esm2020/src/app/shared/pipes/form.pipes.mjs +18 -18
  160. package/esm2020/src/app/shared/pipes/highlight.pipe.mjs +4 -4
  161. package/esm2020/src/app/shared/pipes/latlong-format.pipe.mjs +9 -9
  162. package/esm2020/src/app/shared/pipes/maps.pipe.mjs +12 -12
  163. package/esm2020/src/app/shared/pipes/math.pipes.mjs +12 -12
  164. package/esm2020/src/app/shared/pipes/ng-init.pipe.mjs +3 -3
  165. package/esm2020/src/app/shared/pipes/number-format.pipe.mjs +4 -4
  166. package/esm2020/src/app/shared/pipes/pipes.module.mjs +10 -6
  167. package/esm2020/src/app/shared/pipes/property.pipes.mjs +7 -7
  168. package/esm2020/src/app/shared/pipes/string.pipes.mjs +15 -15
  169. package/esm2020/src/app/shared/pipes/translate-context.pipe.mjs +8 -8
  170. package/esm2020/src/app/shared/services/entity-service.class.mjs +1 -13
  171. package/esm2020/src/app/shared/services/memory-entity-service.class.mjs +127 -43
  172. package/esm2020/src/app/shared/services/progress-bar.service.mjs +3 -3
  173. package/esm2020/src/app/shared/services/startable-observable-service.class.mjs +119 -0
  174. package/esm2020/src/app/shared/services/startable-service.class.mjs +42 -31
  175. package/esm2020/src/app/shared/services/storage/storage.service.mjs +3 -3
  176. package/esm2020/src/app/shared/services/translate-context.service.mjs +3 -3
  177. package/esm2020/src/app/shared/shared-routing.module.mjs +7 -7
  178. package/esm2020/src/app/shared/shared.module.mjs +4 -4
  179. package/esm2020/src/app/shared/shared.testing.module.mjs +4 -4
  180. package/esm2020/src/app/shared/testing/observable.test.mjs +96 -0
  181. package/esm2020/src/app/shared/testing/tests.page.mjs +3 -3
  182. package/esm2020/src/app/shared/toast/toast.testing.mjs +10 -11
  183. package/esm2020/src/app/shared/toast/toast.testing.module.mjs +4 -4
  184. package/esm2020/src/app/shared/toast/toasts.mjs +38 -15
  185. package/esm2020/src/app/shared/toolbar/modal-toolbar.mjs +5 -5
  186. package/esm2020/src/app/shared/toolbar/toolbar.mjs +9 -9
  187. package/esm2020/src/app/shared/toolbar/toolbar.module.mjs +4 -4
  188. package/esm2020/src/app/shared/upload-file/testing/upload-file.testing.mjs +3 -3
  189. package/esm2020/src/app/shared/upload-file/testing/upload-file.testing.module.mjs +4 -4
  190. package/esm2020/src/app/shared/upload-file/upload-file-popover.component.mjs +3 -3
  191. package/esm2020/src/app/shared/upload-file/upload-file.component.mjs +3 -3
  192. package/esm2020/src/app/shared/validator/form-error-adapter.class.mjs +3 -3
  193. package/esm2020/src/app/social/job/job.module.mjs +9 -9
  194. package/esm2020/src/app/social/job/job.service.mjs +27 -15
  195. package/esm2020/src/app/social/job/progression/job-progression.icon.mjs +210 -0
  196. package/esm2020/src/app/social/job/progression/job-progression.list.mjs +3 -3
  197. package/esm2020/src/app/social/job/testing/job-progression.testing.mjs +33 -31
  198. package/esm2020/src/app/social/job/testing/job-progression.testing.service.mjs +27 -5
  199. package/esm2020/src/app/social/job/testing/job.testing.module.mjs +4 -4
  200. package/esm2020/src/app/social/message/message.form.mjs +3 -3
  201. package/esm2020/src/app/social/message/message.modal.mjs +3 -3
  202. package/esm2020/src/app/social/message/message.module.mjs +4 -4
  203. package/esm2020/src/app/social/message/message.service.mjs +3 -3
  204. package/esm2020/src/app/social/social.module.mjs +5 -5
  205. package/esm2020/src/app/social/social.testing.module.mjs +4 -4
  206. package/esm2020/src/app/social/user-event/notification/user-event-notification.icon.mjs +28 -17
  207. package/esm2020/src/app/social/user-event/notification/user-event-notification.list.mjs +6 -6
  208. package/esm2020/src/app/social/user-event/testing/user-event.testing.mjs +6 -6
  209. package/esm2020/src/app/social/user-event/testing/user-event.testing.module.mjs +4 -4
  210. package/esm2020/src/app/social/user-event/testing/user-event.testing.service.mjs +3 -3
  211. package/esm2020/src/app/social/user-event/user-event.module.mjs +9 -9
  212. package/esm2020/src/app/social/user-event/user-event.service.mjs +5 -5
  213. package/esm2020/src/app/vendor.mjs +6 -1
  214. package/fesm2015/sumaris-net.ngx-components.mjs +2692 -1945
  215. package/fesm2015/sumaris-net.ngx-components.mjs.map +1 -1
  216. package/fesm2020/sumaris-net.ngx-components.mjs +2512 -1718
  217. package/fesm2020/sumaris-net.ngx-components.mjs.map +1 -1
  218. package/package.json +6 -2
  219. package/public_api.d.ts +8 -4
  220. package/src/app/admin/admin.module.d.ts +4 -8
  221. package/src/app/admin/users/list/users.d.ts +1 -0
  222. package/src/app/admin/users/list/users.module.d.ts +14 -0
  223. package/src/app/core/core.module.d.ts +1 -1
  224. package/src/app/core/core.testing.module.d.ts +2 -1
  225. package/src/app/core/form/editor.class.d.ts +20 -6
  226. package/src/app/core/form/entity-editor-modal.class.d.ts +13 -4
  227. package/src/app/core/form/entity-editor.class.d.ts +4 -11
  228. package/src/app/core/form/form.class.d.ts +2 -0
  229. package/src/app/core/form/form.utils.d.ts +28 -2
  230. package/src/app/core/form/{properties.form.d.ts → properties/properties.form.d.ts} +13 -13
  231. package/src/app/core/form/properties/property.validator.d.ts +13 -0
  232. package/src/app/core/form/properties/testing/properties-form.test.d.ts +19 -0
  233. package/src/app/core/form/properties/testing/properties-form.testing.module.d.ts +12 -0
  234. package/src/app/core/services/model/referential.model.d.ts +6 -1
  235. package/src/app/core/services/network.service.d.ts +6 -8
  236. package/src/app/core/table/entities-table-datasource.class.d.ts +22 -15
  237. package/src/app/core/table/table.class.d.ts +37 -47
  238. package/src/app/core/table/table.utils.d.ts +2 -1
  239. package/src/app/shared/debug/debug.component.d.ts +13 -0
  240. package/src/app/shared/debug/debug.module.d.ts +12 -0
  241. package/src/app/shared/events.d.ts +4 -4
  242. package/src/app/shared/form/field.component.d.ts +4 -1
  243. package/src/app/shared/forms.d.ts +8 -1
  244. package/src/app/shared/functions.d.ts +9 -4
  245. package/src/app/shared/graph/graph-colors.d.ts +8 -8
  246. package/src/app/shared/image/gallery/testing/gallery.testing.d.ts +1 -1
  247. package/src/app/shared/material/badge/badge.directive.d.ts +28 -0
  248. package/src/app/shared/material/badge/badge.module.d.ts +10 -0
  249. package/src/app/shared/material/badge/badge.test.d.ts +12 -0
  250. package/src/app/shared/material/datetime/material.date.d.ts +12 -13
  251. package/src/app/shared/material/datetime/material.datetime.d.ts +14 -14
  252. package/src/app/shared/material/material.module.d.ts +2 -2
  253. package/src/app/shared/material/material.testing.module.d.ts +10 -9
  254. package/src/app/shared/observables.d.ts +1 -1
  255. package/src/app/shared/pipes/arrays.pipe.d.ts +12 -2
  256. package/src/app/shared/pipes/pipes.module.d.ts +1 -1
  257. package/src/app/shared/services/entity-service.class.d.ts +0 -11
  258. package/src/app/shared/services/memory-entity-service.class.d.ts +20 -6
  259. package/src/app/shared/services/startable-observable-service.class.d.ts +33 -0
  260. package/src/app/shared/services/startable-service.class.d.ts +12 -9
  261. package/src/app/shared/testing/observable.test.d.ts +25 -0
  262. package/src/app/shared/toast/toast.testing.d.ts +3 -5
  263. package/src/app/shared/toast/toasts.d.ts +5 -2
  264. package/src/app/social/job/job.module.d.ts +2 -2
  265. package/src/app/social/job/job.service.d.ts +10 -2
  266. package/src/app/social/job/progression/{job-progression.component.d.ts → job-progression.icon.d.ts} +5 -5
  267. package/src/app/social/job/testing/job-progression.testing.d.ts +7 -4
  268. package/src/app/social/job/testing/job-progression.testing.service.d.ts +4 -0
  269. package/src/app/social/social.module.d.ts +1 -1
  270. package/src/app/social/user-event/notification/user-event-notification.icon.d.ts +8 -5
  271. package/src/app/social/user-event/testing/user-event.testing.d.ts +2 -2
  272. package/src/app/social/user-event/user-event.module.d.ts +1 -1
  273. package/src/app/social/user-event/user-event.service.d.ts +1 -1
  274. package/src/app/vendor.d.ts +2 -0
  275. package/src/theme/_ionic.globals.scss +4 -0
  276. package/src/theme/_material.globals.scss +3 -1
  277. package/src/theme/_material.scss +29 -4
  278. package/src/theme/_mixins.scss +3 -3
  279. package/src/theme/_ngx-components.scss +26 -0
  280. package/esm2020/src/app/core/form/properties.form.mjs +0 -126
  281. package/esm2020/src/app/shared/material/badge/badge-icon.directive.mjs +0 -143
  282. package/esm2020/src/app/shared/material/badge/badge-icon.module.mjs +0 -32
  283. package/esm2020/src/app/shared/material/badge/badge-icon.test.mjs +0 -27
  284. package/esm2020/src/app/social/job/progression/job-progression.component.mjs +0 -201
  285. package/src/app/shared/material/badge/badge-icon.directive.d.ts +0 -30
  286. package/src/app/shared/material/badge/badge-icon.module.d.ts +0 -10
  287. package/src/app/shared/material/badge/badge-icon.test.d.ts +0 -12
@@ -1,51 +1,53 @@
1
- import { Component, ViewChild } from '@angular/core';
2
- import { JobProgressionServiceToken } from '../job.service';
1
+ import { Component, Inject, ViewChild } from '@angular/core';
3
2
  import { JobProgression } from '../job.model';
4
- import { JobProgressionTestService } from './job-progression.testing.service';
3
+ import { APP_JOB_PROGRESSION_SERVICE } from '../job.service';
5
4
  import * as i0 from "@angular/core";
6
5
  import * as i1 from "@ionic/angular";
7
- import * as i2 from "../progression/job-progression.component";
6
+ import * as i2 from "../progression/job-progression.icon";
7
+ import * as i3 from "../job.service";
8
8
  export class JobProgressionTestingPage {
9
- constructor() {
10
- this.nJob = 0;
9
+ constructor(jobProgressionService) {
10
+ this.jobProgressionService = jobProgressionService;
11
+ this.jobId = 0;
12
+ this.job = null;
11
13
  this.options = {
12
14
  autoHide: true
13
15
  };
14
- this.job = new JobProgression();
15
- this.job.id = 0;
16
- this.job.name = 'test';
17
- this.job.current = 0;
18
- this.job.total = 100;
19
16
  }
20
17
  incrementJob(value) {
21
- this.job.current = Math.max(0, this.job.current + value);
18
+ this.job = this.job || this.createJob();
19
+ this.job.current += value || 0;
22
20
  this.job.message = `Fake progression (very long message very long message very long message very long message) ${this.job.current}/100`;
23
21
  if (this.job.current > this.job.total) {
24
- this.jobProgression.removeJob(0);
22
+ this.jobProgressionService.removeJob(this.job.id);
25
23
  this.job.current = 0;
24
+ this.job = null; // Forget the job
26
25
  }
27
- else if (!this.jobProgression.getProgression(0)) {
28
- this.jobProgression.jobProgressions.push(this.job);
29
- }
30
- this.jobProgression.updateValue();
26
+ this.jobProgressionIcon.updateValue();
31
27
  }
32
28
  addJob() {
33
- // Add fake job
34
- this.nJob++;
35
- this.jobProgression.addJob(this.nJob);
29
+ this.job = this.createJob();
30
+ }
31
+ createJob() {
32
+ const job = new JobProgression();
33
+ job.id = ++this.jobId;
34
+ job.name = 'test';
35
+ job.current = 0;
36
+ job.total = 100;
37
+ this.jobProgressionService.addJob(job.id, job);
38
+ return job;
36
39
  }
37
40
  }
38
- JobProgressionTestingPage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: JobProgressionTestingPage, deps: [], target: i0.ɵɵFactoryTarget.Component });
39
- JobProgressionTestingPage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.1", type: JobProgressionTestingPage, selector: "job-progression-testing", providers: [
40
- { provide: JobProgressionServiceToken, useClass: JobProgressionTestService }
41
- ], viewQueries: [{ propertyName: "jobProgression", first: true, predicate: ["jobProgression"], descendants: true }], ngImport: i0, template: "<ion-toolbar color=\"primary\">\n <ion-title>Job progression</ion-title>\n</ion-toolbar>\n\n<ion-content class=\"ion-padding\">\n\n <app-job-progression #jobProgression [debug]=\"true\" [options]=\"options\" ></app-job-progression>\n\n <p>\n <ion-button (click)=\"incrementJob(10)\">\n +10\n </ion-button>\n <ion-button (click)=\"incrementJob(-10)\">\n -10\n </ion-button>\n </p>\n <p>\n <ion-button (click)=\"addJob()\">Add Job</ion-button>\n </p>\n</ion-content>\n", dependencies: [{ kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i2.JobProgressionComponent, selector: "app-job-progression", inputs: ["debug", "titleI18n", "options"], outputs: ["jobFinished"] }] });
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: JobProgressionTestingPage, decorators: [{
41
+ JobProgressionTestingPage.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: JobProgressionTestingPage, deps: [{ token: APP_JOB_PROGRESSION_SERVICE }], target: i0.ɵɵFactoryTarget.Component });
42
+ JobProgressionTestingPage.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.6", type: JobProgressionTestingPage, selector: "job-progression-testing", viewQueries: [{ propertyName: "jobProgressionIcon", first: true, predicate: ["icon"], descendants: true }], ngImport: i0, template: "<ion-toolbar color=\"primary\">\n <ion-title>Job progression</ion-title>\n</ion-toolbar>\n\n<ion-content class=\"ion-padding\">\n\n <app-job-progression-icon #icon [debug]=\"true\" [options]=\"options\" ></app-job-progression-icon>\n\n <p>\n <ion-button (click)=\"incrementJob(10)\">\n +10\n </ion-button>\n <ion-button (click)=\"incrementJob(-10)\">\n -10\n </ion-button>\n </p>\n <p>\n <ion-button (click)=\"addJob()\">Add Job</ion-button>\n </p>\n</ion-content>\n", dependencies: [{ kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i2.JobProgressionIcon, selector: "app-job-progression-icon", inputs: ["debug", "titleI18n", "options", "autoHide"], outputs: ["jobFinished"] }] });
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: JobProgressionTestingPage, decorators: [{
43
44
  type: Component,
44
- args: [{ selector: 'job-progression-testing', providers: [
45
- { provide: JobProgressionServiceToken, useClass: JobProgressionTestService }
46
- ], template: "<ion-toolbar color=\"primary\">\n <ion-title>Job progression</ion-title>\n</ion-toolbar>\n\n<ion-content class=\"ion-padding\">\n\n <app-job-progression #jobProgression [debug]=\"true\" [options]=\"options\" ></app-job-progression>\n\n <p>\n <ion-button (click)=\"incrementJob(10)\">\n +10\n </ion-button>\n <ion-button (click)=\"incrementJob(-10)\">\n -10\n </ion-button>\n </p>\n <p>\n <ion-button (click)=\"addJob()\">Add Job</ion-button>\n </p>\n</ion-content>\n" }]
47
- }], ctorParameters: function () { return []; }, propDecorators: { jobProgression: [{
45
+ args: [{ selector: 'job-progression-testing', template: "<ion-toolbar color=\"primary\">\n <ion-title>Job progression</ion-title>\n</ion-toolbar>\n\n<ion-content class=\"ion-padding\">\n\n <app-job-progression-icon #icon [debug]=\"true\" [options]=\"options\" ></app-job-progression-icon>\n\n <p>\n <ion-button (click)=\"incrementJob(10)\">\n +10\n </ion-button>\n <ion-button (click)=\"incrementJob(-10)\">\n -10\n </ion-button>\n </p>\n <p>\n <ion-button (click)=\"addJob()\">Add Job</ion-button>\n </p>\n</ion-content>\n" }]
46
+ }], ctorParameters: function () { return [{ type: i3.JobProgressionService, decorators: [{
47
+ type: Inject,
48
+ args: [APP_JOB_PROGRESSION_SERVICE]
49
+ }] }]; }, propDecorators: { jobProgressionIcon: [{
48
50
  type: ViewChild,
49
- args: ['jobProgression']
51
+ args: ['icon']
50
52
  }] } });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLXByb2dyZXNzaW9uLnRlc3RpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NvY2lhbC9qb2IvdGVzdGluZy9qb2ItcHJvZ3Jlc3Npb24udGVzdGluZy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc29jaWFsL2pvYi90ZXN0aW5nL2pvYi1wcm9ncmVzc2lvbi50ZXN0aW5nLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUM1QyxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQzs7OztBQVM1RSxNQUFNLE9BQU8seUJBQXlCO0lBVXBDO1FBTkEsU0FBSSxHQUFHLENBQUMsQ0FBQztRQUVULFlBQU8sR0FBMEI7WUFDL0IsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDO1FBR0EsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNoQixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxNQUFNLENBQUM7UUFDdkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztJQUN2QixDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQWE7UUFDeEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsOEZBQThGLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxNQUFNLENBQUE7UUFFdkksSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRTtZQUNyQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7U0FDdEI7YUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDakQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNwRDtRQUVELElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVELE1BQU07UUFDSixlQUFlO1FBQ2YsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1osSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7O3NIQXBDVSx5QkFBeUI7MEdBQXpCLHlCQUF5QixrREFKekI7UUFDVCxFQUFFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxRQUFRLEVBQUUseUJBQXlCLEVBQUU7S0FDN0UsNElDWEgsbWZBb0JBOzJGRFBhLHlCQUF5QjtrQkFQckMsU0FBUzsrQkFDRSx5QkFBeUIsYUFFeEI7d0JBQ1QsRUFBRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsUUFBUSxFQUFFLHlCQUF5QixFQUFFO3FCQUM3RTswRUFJNEIsY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Sm9iUHJvZ3Jlc3Npb25Db21wb25lbnQsIEpvYlByb2dyZXNzaW9uT3B0aW9uc30gZnJvbSAnLi4vcHJvZ3Jlc3Npb24vam9iLXByb2dyZXNzaW9uLmNvbXBvbmVudCc7XG5pbXBvcnQge0pvYlByb2dyZXNzaW9uU2VydmljZVRva2VufSBmcm9tICcuLi9qb2Iuc2VydmljZSc7XG5pbXBvcnQge0pvYlByb2dyZXNzaW9ufSBmcm9tICcuLi9qb2IubW9kZWwnO1xuaW1wb3J0IHtKb2JQcm9ncmVzc2lvblRlc3RTZXJ2aWNlfSBmcm9tICcuL2pvYi1wcm9ncmVzc2lvbi50ZXN0aW5nLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdqb2ItcHJvZ3Jlc3Npb24tdGVzdGluZycsXG4gIHRlbXBsYXRlVXJsOiAnam9iLXByb2dyZXNzaW9uLnRlc3RpbmcuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogSm9iUHJvZ3Jlc3Npb25TZXJ2aWNlVG9rZW4sIHVzZUNsYXNzOiBKb2JQcm9ncmVzc2lvblRlc3RTZXJ2aWNlIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBKb2JQcm9ncmVzc2lvblRlc3RpbmdQYWdlIHtcblxuICBAVmlld0NoaWxkKCdqb2JQcm9ncmVzc2lvbicpIGpvYlByb2dyZXNzaW9uOiBKb2JQcm9ncmVzc2lvbkNvbXBvbmVudDtcblxuICBuSm9iID0gMDtcbiAgam9iOiBKb2JQcm9ncmVzc2lvbjtcbiAgb3B0aW9ucyA9IDxKb2JQcm9ncmVzc2lvbk9wdGlvbnM+e1xuICAgIGF1dG9IaWRlOiB0cnVlXG4gIH07XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5qb2IgPSBuZXcgSm9iUHJvZ3Jlc3Npb24oKTtcbiAgICB0aGlzLmpvYi5pZCA9IDA7XG4gICAgdGhpcy5qb2IubmFtZSA9ICd0ZXN0JztcbiAgICB0aGlzLmpvYi5jdXJyZW50ID0gMDtcbiAgICB0aGlzLmpvYi50b3RhbCA9IDEwMDtcbiAgfVxuXG4gIGluY3JlbWVudEpvYih2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5qb2IuY3VycmVudCA9IE1hdGgubWF4KDAsIHRoaXMuam9iLmN1cnJlbnQgKyB2YWx1ZSk7XG4gICAgdGhpcy5qb2IubWVzc2FnZSA9IGBGYWtlIHByb2dyZXNzaW9uICh2ZXJ5IGxvbmcgbWVzc2FnZSB2ZXJ5IGxvbmcgbWVzc2FnZSB2ZXJ5IGxvbmcgbWVzc2FnZSB2ZXJ5IGxvbmcgbWVzc2FnZSkgJHt0aGlzLmpvYi5jdXJyZW50fS8xMDBgXG5cbiAgICBpZiAodGhpcy5qb2IuY3VycmVudCA+IHRoaXMuam9iLnRvdGFsKSB7XG4gICAgICB0aGlzLmpvYlByb2dyZXNzaW9uLnJlbW92ZUpvYigwKTtcbiAgICAgIHRoaXMuam9iLmN1cnJlbnQgPSAwO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuam9iUHJvZ3Jlc3Npb24uZ2V0UHJvZ3Jlc3Npb24oMCkpIHtcbiAgICAgIHRoaXMuam9iUHJvZ3Jlc3Npb24uam9iUHJvZ3Jlc3Npb25zLnB1c2godGhpcy5qb2IpO1xuICAgIH1cblxuICAgIHRoaXMuam9iUHJvZ3Jlc3Npb24udXBkYXRlVmFsdWUoKTtcbiAgfVxuXG4gIGFkZEpvYigpIHtcbiAgICAvLyBBZGQgZmFrZSBqb2JcbiAgICB0aGlzLm5Kb2IrKztcbiAgICB0aGlzLmpvYlByb2dyZXNzaW9uLmFkZEpvYih0aGlzLm5Kb2IpO1xuICB9XG59XG5cbiIsIjxpb24tdG9vbGJhciBjb2xvcj1cInByaW1hcnlcIj5cbiAgPGlvbi10aXRsZT5Kb2IgcHJvZ3Jlc3Npb248L2lvbi10aXRsZT5cbjwvaW9uLXRvb2xiYXI+XG5cbjxpb24tY29udGVudCBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG5cbiAgPGFwcC1qb2ItcHJvZ3Jlc3Npb24gI2pvYlByb2dyZXNzaW9uIFtkZWJ1Z109XCJ0cnVlXCIgW29wdGlvbnNdPVwib3B0aW9uc1wiID48L2FwcC1qb2ItcHJvZ3Jlc3Npb24+XG5cbiAgPHA+XG4gICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImluY3JlbWVudEpvYigxMClcIj5cbiAgICAgICsxMFxuICAgIDwvaW9uLWJ1dHRvbj5cbiAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiaW5jcmVtZW50Sm9iKC0xMClcIj5cbiAgICAgIC0xMFxuICAgIDwvaW9uLWJ1dHRvbj5cbiAgPC9wPlxuICA8cD5cbiAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiYWRkSm9iKClcIj5BZGQgSm9iPC9pb24tYnV0dG9uPlxuICA8L3A+XG48L2lvbi1jb250ZW50PlxuIl19
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLXByb2dyZXNzaW9uLnRlc3RpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NvY2lhbC9qb2IvdGVzdGluZy9qb2ItcHJvZ3Jlc3Npb24udGVzdGluZy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc29jaWFsL2pvYi90ZXN0aW5nL2pvYi1wcm9ncmVzc2lvbi50ZXN0aW5nLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTNELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDNUMsT0FBTyxFQUFDLDJCQUEyQixFQUF3QixNQUFNLGdCQUFnQixDQUFDOzs7OztBQU1sRixNQUFNLE9BQU8seUJBQXlCO0lBVXBDLFlBQ2lELHFCQUE0QztRQUE1QywwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBUDdGLFVBQUssR0FBRyxDQUFDLENBQUM7UUFDVixRQUFHLEdBQW1CLElBQUksQ0FBQztRQUMzQixZQUFPLEdBQTBCO1lBQy9CLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQztJQUlGLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBYTtRQUN4QixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsOEZBQThGLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxNQUFNLENBQUE7UUFFdkksSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRTtZQUNyQyxJQUFJLENBQUMscUJBQXFCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsaUJBQWlCO1NBQ25DO1FBQ0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVPLFNBQVM7UUFDZixNQUFNLEdBQUcsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQ2pDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3RCLEdBQUcsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO1FBQ2xCLEdBQUcsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLEdBQUcsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO1FBQ2hCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMvQyxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7O3NIQXZDVSx5QkFBeUIsa0JBVzFCLDJCQUEyQjswR0FYMUIseUJBQXlCLDJLQ1R0QyxtZkFvQkE7MkZEWGEseUJBQXlCO2tCQUpyQyxTQUFTOytCQUNFLHlCQUF5Qjs7MEJBY2hDLE1BQU07MkJBQUMsMkJBQTJCOzRDQVRsQixrQkFBa0I7c0JBQXBDLFNBQVM7dUJBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbmplY3QsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0pvYlByb2dyZXNzaW9uSWNvbiwgSm9iUHJvZ3Jlc3Npb25PcHRpb25zfSBmcm9tICcuLi9wcm9ncmVzc2lvbi9qb2ItcHJvZ3Jlc3Npb24uaWNvbic7XG5pbXBvcnQge0pvYlByb2dyZXNzaW9ufSBmcm9tICcuLi9qb2IubW9kZWwnO1xuaW1wb3J0IHtBUFBfSk9CX1BST0dSRVNTSU9OX1NFUlZJQ0UsIEpvYlByb2dyZXNzaW9uU2VydmljZX0gZnJvbSAnLi4vam9iLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdqb2ItcHJvZ3Jlc3Npb24tdGVzdGluZycsXG4gIHRlbXBsYXRlVXJsOiAnam9iLXByb2dyZXNzaW9uLnRlc3RpbmcuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgSm9iUHJvZ3Jlc3Npb25UZXN0aW5nUGFnZSB7XG5cbiAgQFZpZXdDaGlsZCgnaWNvbicpIGpvYlByb2dyZXNzaW9uSWNvbjogSm9iUHJvZ3Jlc3Npb25JY29uO1xuXG4gIGpvYklkID0gMDtcbiAgam9iOiBKb2JQcm9ncmVzc2lvbiA9IG51bGw7XG4gIG9wdGlvbnMgPSA8Sm9iUHJvZ3Jlc3Npb25PcHRpb25zPntcbiAgICBhdXRvSGlkZTogdHJ1ZVxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoQVBQX0pPQl9QUk9HUkVTU0lPTl9TRVJWSUNFKSBwcm90ZWN0ZWQgam9iUHJvZ3Jlc3Npb25TZXJ2aWNlOiBKb2JQcm9ncmVzc2lvblNlcnZpY2UpIHtcbiAgfVxuXG4gIGluY3JlbWVudEpvYih2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5qb2IgPSB0aGlzLmpvYiB8fCB0aGlzLmNyZWF0ZUpvYigpO1xuICAgIHRoaXMuam9iLmN1cnJlbnQgKz0gdmFsdWUgfHwgMDtcbiAgICB0aGlzLmpvYi5tZXNzYWdlID0gYEZha2UgcHJvZ3Jlc3Npb24gKHZlcnkgbG9uZyBtZXNzYWdlIHZlcnkgbG9uZyBtZXNzYWdlIHZlcnkgbG9uZyBtZXNzYWdlIHZlcnkgbG9uZyBtZXNzYWdlKSAke3RoaXMuam9iLmN1cnJlbnR9LzEwMGBcblxuICAgIGlmICh0aGlzLmpvYi5jdXJyZW50ID4gdGhpcy5qb2IudG90YWwpIHtcbiAgICAgIHRoaXMuam9iUHJvZ3Jlc3Npb25TZXJ2aWNlLnJlbW92ZUpvYih0aGlzLmpvYi5pZCk7XG4gICAgICB0aGlzLmpvYi5jdXJyZW50ID0gMDtcbiAgICAgIHRoaXMuam9iID0gbnVsbDsgLy8gRm9yZ2V0IHRoZSBqb2JcbiAgICB9XG4gICAgdGhpcy5qb2JQcm9ncmVzc2lvbkljb24udXBkYXRlVmFsdWUoKTtcbiAgfVxuXG4gIGFkZEpvYigpIHtcbiAgICB0aGlzLmpvYiA9IHRoaXMuY3JlYXRlSm9iKCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUpvYigpOiBKb2JQcm9ncmVzc2lvbiB7XG4gICAgY29uc3Qgam9iID0gbmV3IEpvYlByb2dyZXNzaW9uKCk7XG4gICAgam9iLmlkID0gKyt0aGlzLmpvYklkO1xuICAgIGpvYi5uYW1lID0gJ3Rlc3QnO1xuICAgIGpvYi5jdXJyZW50ID0gMDtcbiAgICBqb2IudG90YWwgPSAxMDA7XG4gICAgdGhpcy5qb2JQcm9ncmVzc2lvblNlcnZpY2UuYWRkSm9iKGpvYi5pZCwgam9iKTtcbiAgICByZXR1cm4gam9iO1xuICB9XG59XG5cbiIsIjxpb24tdG9vbGJhciBjb2xvcj1cInByaW1hcnlcIj5cbiAgPGlvbi10aXRsZT5Kb2IgcHJvZ3Jlc3Npb248L2lvbi10aXRsZT5cbjwvaW9uLXRvb2xiYXI+XG5cbjxpb24tY29udGVudCBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG5cbiAgPGFwcC1qb2ItcHJvZ3Jlc3Npb24taWNvbiAjaWNvbiBbZGVidWddPVwidHJ1ZVwiIFtvcHRpb25zXT1cIm9wdGlvbnNcIiA+PC9hcHAtam9iLXByb2dyZXNzaW9uLWljb24+XG5cbiAgPHA+XG4gICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImluY3JlbWVudEpvYigxMClcIj5cbiAgICAgICsxMFxuICAgIDwvaW9uLWJ1dHRvbj5cbiAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiaW5jcmVtZW50Sm9iKC0xMClcIj5cbiAgICAgIC0xMFxuICAgIDwvaW9uLWJ1dHRvbj5cbiAgPC9wPlxuICA8cD5cbiAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiYWRkSm9iKClcIj5BZGQgSm9iPC9pb24tYnV0dG9uPlxuICA8L3A+XG48L2lvbi1jb250ZW50PlxuIl19
@@ -1,8 +1,30 @@
1
1
  import { Injectable } from '@angular/core';
2
- import { interval } from 'rxjs';
2
+ import { BehaviorSubject, interval } from 'rxjs';
3
+ import { JobProgression } from '../job.model';
3
4
  import { map, take } from 'rxjs/operators';
4
5
  import * as i0 from "@angular/core";
5
6
  export class JobProgressionTestService {
7
+ constructor() {
8
+ this.jobsSubject = new BehaviorSubject([]);
9
+ }
10
+ addJob(id, job) {
11
+ const exists = this.jobsSubject.value.some(j => j.id === id);
12
+ if (!exists) {
13
+ job = job || new JobProgression(id);
14
+ this.jobsSubject.next([...this.jobsSubject.value, job]);
15
+ }
16
+ }
17
+ removeJob(id) {
18
+ const jobs = this.jobsSubject.value;
19
+ const index = jobs.findIndex(j => j.id === id);
20
+ if (index !== -1) {
21
+ jobs.splice(index, 1);
22
+ this.jobsSubject.next(jobs);
23
+ }
24
+ }
25
+ watchAll() {
26
+ return this.jobsSubject.asObservable();
27
+ }
6
28
  listenChanges(id, options) {
7
29
  return interval(100).pipe(take(111), map(value => {
8
30
  if (value <= 10) {
@@ -25,9 +47,9 @@ export class JobProgressionTestService {
25
47
  }));
26
48
  }
27
49
  }
28
- JobProgressionTestService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: JobProgressionTestService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
29
- JobProgressionTestService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: JobProgressionTestService });
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: JobProgressionTestService, decorators: [{
50
+ JobProgressionTestService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: JobProgressionTestService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
51
+ JobProgressionTestService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: JobProgressionTestService });
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: JobProgressionTestService, decorators: [{
31
53
  type: Injectable
32
54
  }] });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLXByb2dyZXNzaW9uLnRlc3Rpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc29jaWFsL2pvYi90ZXN0aW5nL2pvYi1wcm9ncmVzc2lvbi50ZXN0aW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUd6QyxPQUFPLEVBQUMsUUFBUSxFQUFhLE1BQU0sTUFBTSxDQUFDO0FBRTFDLE9BQU8sRUFBQyxHQUFHLEVBQUUsSUFBSSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7O0FBR3pDLE1BQU0sT0FBTyx5QkFBeUI7SUFFcEMsYUFBYSxDQUFDLEVBQVUsRUFBRSxPQUEwRDtRQUVsRixPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQ3ZCLElBQUksQ0FBQyxHQUFHLENBQUMsRUFDVCxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDVixJQUFJLEtBQUssSUFBSSxFQUFFLEVBQUU7Z0JBQ2YsT0FBdUI7b0JBQ3JCLEVBQUUsRUFBRSxFQUFFO29CQUNOLElBQUksRUFBRSxRQUFRLEVBQUUsRUFBRTtvQkFDbEIsT0FBTyxFQUFFLENBQUM7b0JBQ1YsS0FBSyxFQUFFLENBQUM7b0JBQ1IsT0FBTyxFQUFFLHFCQUFxQjtpQkFDL0IsQ0FBQzthQUNIO1lBQ0QsS0FBSyxHQUFHLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDbkIsT0FBdUI7Z0JBQ3JCLEVBQUUsRUFBRSxFQUFFO2dCQUNOLElBQUksRUFBRSxRQUFRLEVBQUUsRUFBRTtnQkFDbEIsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsS0FBSyxFQUFFLEdBQUc7Z0JBQ1YsT0FBTyxFQUFFLGVBQWUsS0FBSyxNQUFNO2FBQ3BDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzs7c0hBMUJVLHlCQUF5QjswSEFBekIseUJBQXlCOzJGQUF6Qix5QkFBeUI7a0JBRHJDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtJSm9iUHJvZ3Jlc3Npb25TZXJ2aWNlfSBmcm9tICcuLi9qb2Iuc2VydmljZSc7XG5pbXBvcnQge0ZldGNoUG9saWN5fSBmcm9tICdAYXBvbGxvL2NsaWVudC9jb3JlJztcbmltcG9ydCB7aW50ZXJ2YWwsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtKb2JQcm9ncmVzc2lvbn0gZnJvbSAnLi4vam9iLm1vZGVsJztcbmltcG9ydCB7bWFwLCB0YWtlfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBKb2JQcm9ncmVzc2lvblRlc3RTZXJ2aWNlIGltcGxlbWVudHMgSUpvYlByb2dyZXNzaW9uU2VydmljZSB7XG5cbiAgbGlzdGVuQ2hhbmdlcyhpZDogbnVtYmVyLCBvcHRpb25zPzogeyBpbnRlcnZhbD86IG51bWJlcjsgZmV0Y2hQb2xpY3k/OiBGZXRjaFBvbGljeSB9KTogT2JzZXJ2YWJsZTxKb2JQcm9ncmVzc2lvbj4ge1xuXG4gICAgcmV0dXJuIGludGVydmFsKDEwMCkucGlwZShcbiAgICAgIHRha2UoMTExKSxcbiAgICAgIG1hcCh2YWx1ZSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZSA8PSAxMCkge1xuICAgICAgICAgIHJldHVybiA8Sm9iUHJvZ3Jlc3Npb24+e1xuICAgICAgICAgICAgaWQ6IGlkLFxuICAgICAgICAgICAgbmFtZTogYEpvYiAjJHtpZH1gLFxuICAgICAgICAgICAgY3VycmVudDogMCxcbiAgICAgICAgICAgIHRvdGFsOiAwLFxuICAgICAgICAgICAgbWVzc2FnZTogYFByb2dyZXNzaW9uIHBlbmRpbmdgXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICB2YWx1ZSA9IHZhbHVlIC0gMTA7XG4gICAgICAgIHJldHVybiA8Sm9iUHJvZ3Jlc3Npb24+e1xuICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICBuYW1lOiBgSm9iICMke2lkfWAsXG4gICAgICAgICAgY3VycmVudDogdmFsdWUsXG4gICAgICAgICAgdG90YWw6IDEwMCxcbiAgICAgICAgICBtZXNzYWdlOiBgUHJvZ3Jlc3Npb24gJHt2YWx1ZX0vMTAwYFxuICAgICAgICB9O1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbn1cbiJdfQ==
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLXByb2dyZXNzaW9uLnRlc3Rpbmcuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc29jaWFsL2pvYi90ZXN0aW5nL2pvYi1wcm9ncmVzc2lvbi50ZXN0aW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUd6QyxPQUFPLEVBQUMsZUFBZSxFQUFFLFFBQVEsRUFBaUIsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUM1QyxPQUFPLEVBQUMsR0FBRyxFQUFFLElBQUksRUFBQyxNQUFNLGdCQUFnQixDQUFDOztBQUd6QyxNQUFNLE9BQU8seUJBQXlCO0lBRHRDO1FBR1UsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBbUIsRUFBRSxDQUFDLENBQUM7S0FpRGpFO0lBL0NDLE1BQU0sQ0FBQyxFQUFVLEVBQUUsR0FBb0I7UUFDckMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsR0FBRyxHQUFHLEdBQUcsSUFBSSxJQUFJLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUN6RDtJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsRUFBVTtRQUNsQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztRQUNwQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMvQyxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRTtZQUNoQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM3QjtJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxhQUFhLENBQUMsRUFBVSxFQUFFLE9BQTBEO1FBRWxGLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FDdkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUNULEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNWLElBQUksS0FBSyxJQUFJLEVBQUUsRUFBRTtnQkFDZixPQUF1QjtvQkFDckIsRUFBRSxFQUFFLEVBQUU7b0JBQ04sSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFO29CQUNsQixPQUFPLEVBQUUsQ0FBQztvQkFDVixLQUFLLEVBQUUsQ0FBQztvQkFDUixPQUFPLEVBQUUscUJBQXFCO2lCQUMvQixDQUFDO2FBQ0g7WUFDRCxLQUFLLEdBQUcsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNuQixPQUF1QjtnQkFDckIsRUFBRSxFQUFFLEVBQUU7Z0JBQ04sSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFO2dCQUNsQixPQUFPLEVBQUUsS0FBSztnQkFDZCxLQUFLLEVBQUUsR0FBRztnQkFDVixPQUFPLEVBQUUsZUFBZSxLQUFLLE1BQU07YUFDcEMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOztzSEFqRFUseUJBQXlCOzBIQUF6Qix5QkFBeUI7MkZBQXpCLHlCQUF5QjtrQkFEckMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0lKb2JQcm9ncmVzc2lvblNlcnZpY2V9IGZyb20gJy4uL2pvYi5zZXJ2aWNlJztcbmltcG9ydCB7RmV0Y2hQb2xpY3l9IGZyb20gJ0BhcG9sbG8vY2xpZW50L2NvcmUnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIGludGVydmFsLCBPYnNlcnZhYmxlLCBvZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0pvYlByb2dyZXNzaW9ufSBmcm9tICcuLi9qb2IubW9kZWwnO1xuaW1wb3J0IHttYXAsIHRha2V9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEpvYlByb2dyZXNzaW9uVGVzdFNlcnZpY2UgaW1wbGVtZW50cyBJSm9iUHJvZ3Jlc3Npb25TZXJ2aWNlIHtcblxuICBwcml2YXRlIGpvYnNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxKb2JQcm9ncmVzc2lvbltdPihbXSk7XG5cbiAgYWRkSm9iKGlkOiBudW1iZXIsIGpvYj86IEpvYlByb2dyZXNzaW9uKSB7XG4gICAgY29uc3QgZXhpc3RzID0gdGhpcy5qb2JzU3ViamVjdC52YWx1ZS5zb21lKGogPT4gai5pZCA9PT0gaWQpO1xuICAgIGlmICghZXhpc3RzKSB7XG4gICAgICBqb2IgPSBqb2IgfHwgbmV3IEpvYlByb2dyZXNzaW9uKGlkKTtcbiAgICAgIHRoaXMuam9ic1N1YmplY3QubmV4dChbLi4udGhpcy5qb2JzU3ViamVjdC52YWx1ZSwgam9iXSk7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlSm9iKGlkOiBudW1iZXIpIHtcbiAgICBjb25zdCBqb2JzID0gdGhpcy5qb2JzU3ViamVjdC52YWx1ZTtcbiAgICBjb25zdCBpbmRleCA9IGpvYnMuZmluZEluZGV4KGogPT4gai5pZCA9PT0gaWQpO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIGpvYnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgIHRoaXMuam9ic1N1YmplY3QubmV4dChqb2JzKTtcbiAgICB9XG4gIH1cblxuICB3YXRjaEFsbCgpOiBPYnNlcnZhYmxlPEpvYlByb2dyZXNzaW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5qb2JzU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGxpc3RlbkNoYW5nZXMoaWQ6IG51bWJlciwgb3B0aW9ucz86IHsgaW50ZXJ2YWw/OiBudW1iZXI7IGZldGNoUG9saWN5PzogRmV0Y2hQb2xpY3kgfSk6IE9ic2VydmFibGU8Sm9iUHJvZ3Jlc3Npb24+IHtcblxuICAgIHJldHVybiBpbnRlcnZhbCgxMDApLnBpcGUoXG4gICAgICB0YWtlKDExMSksXG4gICAgICBtYXAodmFsdWUgPT4ge1xuICAgICAgICBpZiAodmFsdWUgPD0gMTApIHtcbiAgICAgICAgICByZXR1cm4gPEpvYlByb2dyZXNzaW9uPntcbiAgICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICAgIG5hbWU6IGBKb2IgIyR7aWR9YCxcbiAgICAgICAgICAgIGN1cnJlbnQ6IDAsXG4gICAgICAgICAgICB0b3RhbDogMCxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGBQcm9ncmVzc2lvbiBwZW5kaW5nYFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgdmFsdWUgPSB2YWx1ZSAtIDEwO1xuICAgICAgICByZXR1cm4gPEpvYlByb2dyZXNzaW9uPntcbiAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgbmFtZTogYEpvYiAjJHtpZH1gLFxuICAgICAgICAgIGN1cnJlbnQ6IHZhbHVlLFxuICAgICAgICAgIHRvdGFsOiAxMDAsXG4gICAgICAgICAgbWVzc2FnZTogYFByb2dyZXNzaW9uICR7dmFsdWV9LzEwMGBcbiAgICAgICAgfTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG59XG4iXX0=
@@ -8,14 +8,14 @@ import * as i0 from "@angular/core";
8
8
  import * as i1 from "@ngx-translate/core";
9
9
  export class JobTestingModule {
10
10
  }
11
- JobTestingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: JobTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
12
- JobTestingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.1", ngImport: i0, type: JobTestingModule, declarations: [JobProgressionTestingPage], imports: [CommonModule, i1.TranslateModule, SharedModule,
11
+ JobTestingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: JobTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
12
+ JobTestingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.6", ngImport: i0, type: JobTestingModule, declarations: [JobProgressionTestingPage], imports: [CommonModule, i1.TranslateModule, SharedModule,
13
13
  JobModule], exports: [JobProgressionTestingPage] });
14
- JobTestingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: JobTestingModule, imports: [CommonModule,
14
+ JobTestingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: JobTestingModule, imports: [CommonModule,
15
15
  TranslateModule.forChild(),
16
16
  SharedModule,
17
17
  JobModule] });
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: JobTestingModule, decorators: [{
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: JobTestingModule, decorators: [{
19
19
  type: NgModule,
20
20
  args: [{
21
21
  imports: [
@@ -60,9 +60,9 @@ export class MessageForm extends AppForm {
60
60
  this.cd.markForCheck();
61
61
  }
62
62
  }
63
- MessageForm.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: MessageForm, deps: [{ token: i0.Injector }, { token: i1.UntypedFormBuilder }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
64
- MessageForm.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.1", type: MessageForm, selector: "app-message-form", inputs: { suggestFn: "suggestFn", subjectMinLength: "subjectMinLength", subjectMaxLength: "subjectMaxLength", bodyMaxLength: "bodyMaxLength", bodyAutoHeight: "bodyAutoHeight", canSelectType: "canSelectType" }, usesInheritance: true, ngImport: i0, template: "\n\n<form [formGroup]=\"form\" class=\"form-container\">\n\n <!-- type -->\n <mat-form-field *ngIf=\"canSelectType\">\n <mat-select formControlName=\"type\" [placeholder]=\"'SOCIAL.MESSAGE.TYPE'|translate\">\n <mat-option *ngFor=\"let item of types\" [value]=\"item.id\">\n <ion-icon [name]=\"item.icon\"></ion-icon>\n {{ item.label |translate }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <!-- Recipients -->\n <mat-chips-field *ngIf=\"(form.controls.type.valueChanges|async) !== 'FEED'\"\n formControlName=\"recipients\"\n [placeholder]=\"'SOCIAL.MESSAGE.RECIPIENTS'|translate\"\n [config]=\"autocompleteFields.recipients\"\n [equals]=\"isSamePerson\">\n </mat-chips-field>\n\n <!-- Subject -->\n <mat-form-field>\n <input matInput type=\"text\"\n [placeholder]=\"'SOCIAL.MESSAGE.SUBJECT'|translate\"\n formControlName=\"subject\"\n autocomplete=\"off\"\n required>\n <mat-error *ngIf=\"form.controls.subject.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"form.controls.subject.hasError('minlength')\">\n {{ 'ERROR.FIELD_MIN_LENGTH_COMPACT'|translate }}\n </mat-error>\n <mat-error *ngIf=\"form.controls.subject.hasError('maxlength')\">\n {{ 'ERROR.FIELD_MAX_LENGTH_COMPACT'|translate }}\n </mat-error>\n <mat-hint *ngIf=\"subjectMaxLength\" align=\"end\">\n {{ 'INFO.TEXT_PROGRESS' | translate: { current: form.controls.subject.value?.length || 0, max: subjectMaxLength } }}\n </mat-hint>\n </mat-form-field>\n\n <!-- Body -->\n <mat-form-field floatLabel=\"never\">\n <textarea matInput type=\"text\"\n [placeholder]=\"'SOCIAL.MESSAGE.BODY_HELP'|translate\"\n formControlName=\"body\"\n [class.fixed-height]=\"!bodyAutoHeight\"\n [cdkTextareaAutosize]=\"bodyAutoHeight\"\n (keydown.control.enter)=\"doSubmit($event)\"\n >\n </textarea>\n <mat-error *ngIf=\"form.controls.body.hasError('maxlength')\">\n {{ 'ERROR.FIELD_MAX_LENGTH' | translate: form.controls.body.errors.maxlength }}\n </mat-error>\n <mat-hint *ngIf=\"bodyMaxLength\" align=\"end\">\n {{ 'INFO.TEXT_PROGRESS' | translate: { current: form.controls.body.value?.length || 0, max: bodyMaxLength } }}\n </mat-hint>\n </mat-form-field>\n\n</form>\n", styles: ["textarea.fixed-height{height:11.5em}textarea{min-height:11.5em}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i5.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i6.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i8.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i9.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i10.MatChipsField, selector: "mat-chips-field", inputs: ["equals", "logPrefix", "formControl", "formControlName", "floatLabel", "appearance", "placeholder", "suggestFn", "required", "mobile", "readonly", "clearable", "debounceTime", "displayWith", "displayAttributes", "displayColumnSizes", "displayColumnNames", "highlightAccent", "showAllOnFocus", "showPanelOnFocus", "autofocus", "config", "i18nPrefix", "noResultMessage", "class", "panelWidth", "matAutocompletePosition", "itemSize", "fetchMoreThreshold", "suggestLengthThreshold", "showLoadingSpinner", "chipColor", "debug", "filter", "tabindex", "items"], outputs: ["click", "blur", "focus", "dropButtonClick", "keydown.escape", "keyup.enter"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
65
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: MessageForm, decorators: [{
63
+ MessageForm.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: MessageForm, deps: [{ token: i0.Injector }, { token: i1.UntypedFormBuilder }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
64
+ MessageForm.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.6", type: MessageForm, selector: "app-message-form", inputs: { suggestFn: "suggestFn", subjectMinLength: "subjectMinLength", subjectMaxLength: "subjectMaxLength", bodyMaxLength: "bodyMaxLength", bodyAutoHeight: "bodyAutoHeight", canSelectType: "canSelectType" }, usesInheritance: true, ngImport: i0, template: "\n\n<form [formGroup]=\"form\" class=\"form-container\">\n\n <!-- type -->\n <mat-form-field *ngIf=\"canSelectType\">\n <mat-select formControlName=\"type\" [placeholder]=\"'SOCIAL.MESSAGE.TYPE'|translate\">\n <mat-option *ngFor=\"let item of types\" [value]=\"item.id\">\n <ion-icon [name]=\"item.icon\"></ion-icon>\n {{ item.label |translate }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <!-- Recipients -->\n <mat-chips-field *ngIf=\"(form.controls.type.valueChanges|async) !== 'FEED'\"\n formControlName=\"recipients\"\n [placeholder]=\"'SOCIAL.MESSAGE.RECIPIENTS'|translate\"\n [config]=\"autocompleteFields.recipients\"\n [equals]=\"isSamePerson\">\n </mat-chips-field>\n\n <!-- Subject -->\n <mat-form-field>\n <input matInput type=\"text\"\n [placeholder]=\"'SOCIAL.MESSAGE.SUBJECT'|translate\"\n formControlName=\"subject\"\n autocomplete=\"off\"\n required>\n <mat-error *ngIf=\"form.controls.subject.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"form.controls.subject.hasError('minlength')\">\n {{ 'ERROR.FIELD_MIN_LENGTH_COMPACT'|translate }}\n </mat-error>\n <mat-error *ngIf=\"form.controls.subject.hasError('maxlength')\">\n {{ 'ERROR.FIELD_MAX_LENGTH_COMPACT'|translate }}\n </mat-error>\n <mat-hint *ngIf=\"subjectMaxLength\" align=\"end\">\n {{ 'INFO.TEXT_PROGRESS' | translate: { current: form.controls.subject.value?.length || 0, max: subjectMaxLength } }}\n </mat-hint>\n </mat-form-field>\n\n <!-- Body -->\n <mat-form-field floatLabel=\"never\">\n <textarea matInput type=\"text\"\n [placeholder]=\"'SOCIAL.MESSAGE.BODY_HELP'|translate\"\n formControlName=\"body\"\n [class.fixed-height]=\"!bodyAutoHeight\"\n [cdkTextareaAutosize]=\"bodyAutoHeight\"\n (keydown.control.enter)=\"doSubmit($event)\"\n >\n </textarea>\n <mat-error *ngIf=\"form.controls.body.hasError('maxlength')\">\n {{ 'ERROR.FIELD_MAX_LENGTH' | translate: form.controls.body.errors.maxlength }}\n </mat-error>\n <mat-hint *ngIf=\"bodyMaxLength\" align=\"end\">\n {{ 'INFO.TEXT_PROGRESS' | translate: { current: form.controls.body.value?.length || 0, max: bodyMaxLength } }}\n </mat-hint>\n </mat-form-field>\n\n</form>\n", styles: ["textarea.fixed-height{height:11.5em}textarea{min-height:11.5em}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "directive", type: i4.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i5.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i6.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i8.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i9.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i10.MatChipsField, selector: "mat-chips-field", inputs: ["equals", "logPrefix", "formControl", "formControlName", "floatLabel", "appearance", "placeholder", "suggestFn", "required", "mobile", "readonly", "clearable", "debounceTime", "displayWith", "displayAttributes", "displayColumnSizes", "displayColumnNames", "highlightAccent", "showAllOnFocus", "showPanelOnFocus", "autofocus", "config", "i18nPrefix", "noResultMessage", "class", "panelWidth", "matAutocompletePosition", "itemSize", "fetchMoreThreshold", "suggestLengthThreshold", "showLoadingSpinner", "chipColor", "debug", "filter", "tabindex", "items"], outputs: ["click", "blur", "focus", "dropButtonClick", "keydown.escape", "keyup.enter"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
65
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: MessageForm, decorators: [{
66
66
  type: Component,
67
67
  args: [{ selector: 'app-message-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "\n\n<form [formGroup]=\"form\" class=\"form-container\">\n\n <!-- type -->\n <mat-form-field *ngIf=\"canSelectType\">\n <mat-select formControlName=\"type\" [placeholder]=\"'SOCIAL.MESSAGE.TYPE'|translate\">\n <mat-option *ngFor=\"let item of types\" [value]=\"item.id\">\n <ion-icon [name]=\"item.icon\"></ion-icon>\n {{ item.label |translate }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <!-- Recipients -->\n <mat-chips-field *ngIf=\"(form.controls.type.valueChanges|async) !== 'FEED'\"\n formControlName=\"recipients\"\n [placeholder]=\"'SOCIAL.MESSAGE.RECIPIENTS'|translate\"\n [config]=\"autocompleteFields.recipients\"\n [equals]=\"isSamePerson\">\n </mat-chips-field>\n\n <!-- Subject -->\n <mat-form-field>\n <input matInput type=\"text\"\n [placeholder]=\"'SOCIAL.MESSAGE.SUBJECT'|translate\"\n formControlName=\"subject\"\n autocomplete=\"off\"\n required>\n <mat-error *ngIf=\"form.controls.subject.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <mat-error *ngIf=\"form.controls.subject.hasError('minlength')\">\n {{ 'ERROR.FIELD_MIN_LENGTH_COMPACT'|translate }}\n </mat-error>\n <mat-error *ngIf=\"form.controls.subject.hasError('maxlength')\">\n {{ 'ERROR.FIELD_MAX_LENGTH_COMPACT'|translate }}\n </mat-error>\n <mat-hint *ngIf=\"subjectMaxLength\" align=\"end\">\n {{ 'INFO.TEXT_PROGRESS' | translate: { current: form.controls.subject.value?.length || 0, max: subjectMaxLength } }}\n </mat-hint>\n </mat-form-field>\n\n <!-- Body -->\n <mat-form-field floatLabel=\"never\">\n <textarea matInput type=\"text\"\n [placeholder]=\"'SOCIAL.MESSAGE.BODY_HELP'|translate\"\n formControlName=\"body\"\n [class.fixed-height]=\"!bodyAutoHeight\"\n [cdkTextareaAutosize]=\"bodyAutoHeight\"\n (keydown.control.enter)=\"doSubmit($event)\"\n >\n </textarea>\n <mat-error *ngIf=\"form.controls.body.hasError('maxlength')\">\n {{ 'ERROR.FIELD_MAX_LENGTH' | translate: form.controls.body.errors.maxlength }}\n </mat-error>\n <mat-hint *ngIf=\"bodyMaxLength\" align=\"end\">\n {{ 'INFO.TEXT_PROGRESS' | translate: { current: form.controls.body.value?.length || 0, max: bodyMaxLength } }}\n </mat-hint>\n </mat-form-field>\n\n</form>\n", styles: ["textarea.fixed-height{height:11.5em}textarea{min-height:11.5em}\n"] }]
68
68
  }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.UntypedFormBuilder }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { suggestFn: [{
@@ -75,9 +75,9 @@ export class MessageModal {
75
75
  this.form.markAsLoaded(opts);
76
76
  }
77
77
  }
78
- MessageModal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: MessageModal, deps: [{ token: i1.LocalSettingsService }, { token: i2.ModalController }, { token: i3.AccountService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
79
- MessageModal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.1", type: MessageModal, selector: "app-message-modal", inputs: { suggestFn: "suggestFn", data: "data", canSelectType: "canSelectType" }, viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], descendants: true, static: true }], ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"secondary\">\n <ion-buttons slot=\"start\">\n <ion-button class=\"back-button\" (click)=\"cancel($event)\" visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n </ion-buttons>\n\n <ion-title>\n {{'SOCIAL.MESSAGE.NEW.TITLE' | translate}}\n </ion-title>\n\n <ion-buttons slot=\"end\">\n\n <ion-button class=\"back-button\" (click)=\"doSubmit($event)\"\n [disabled]=\"!form.valid\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"checkmark\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n\n<ion-content class=\"ion-padding\" >\n\n <ion-item *ngIf=\"form.error\" visible-xs visible-sm visible-mobile lines=\"none\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"form.error|translate\"></ion-label>\n </ion-item>\n\n <app-message-form #form (onSubmit)=\"doSubmit($event)\"\n (onCancel)=\"cancel($event)\"\n [canSelectType]=\"canSelectType\"\n [suggestFn]=\"suggestFn\">\n </app-message-form>\n\n</ion-content>\n\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n\n <ion-toolbar>\n\n <ion-row class=\"ion-no-padding\" nowrap>\n <ion-col></ion-col>\n\n <!-- buttons -->\n <ion-col size=\"auto\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"cancel($event)\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n\n <ion-button [fill]=\"form.invalid ? 'clear' : 'solid'\"\n [disabled]=\"form.loading || form.invalid\"\n (keyup.enter)=\"doSubmit($event)\"\n (click)=\"doSubmit($event)\" color=\"tertiary\">\n <ion-label translate>COMMON.BTN_SEND</ion-label>\n </ion-button>\n </ion-col>\n </ion-row>\n\n\n </ion-toolbar>\n</ion-footer>\n", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i2.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i2.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2.IonRow, selector: "ion-row" }, { kind: "component", type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "directive", type: i5.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i6.MessageForm, selector: "app-message-form", inputs: ["suggestFn", "subjectMinLength", "subjectMaxLength", "bodyMaxLength", "bodyAutoHeight", "canSelectType"] }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
80
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: MessageModal, decorators: [{
78
+ MessageModal.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: MessageModal, deps: [{ token: i1.LocalSettingsService }, { token: i2.ModalController }, { token: i3.AccountService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
79
+ MessageModal.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.6", type: MessageModal, selector: "app-message-modal", inputs: { suggestFn: "suggestFn", data: "data", canSelectType: "canSelectType" }, viewQueries: [{ propertyName: "form", first: true, predicate: ["form"], descendants: true, static: true }], ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"secondary\">\n <ion-buttons slot=\"start\">\n <ion-button class=\"back-button\" (click)=\"cancel($event)\" visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n </ion-buttons>\n\n <ion-title>\n {{'SOCIAL.MESSAGE.NEW.TITLE' | translate}}\n </ion-title>\n\n <ion-buttons slot=\"end\">\n\n <ion-button class=\"back-button\" (click)=\"doSubmit($event)\"\n [disabled]=\"!form.valid\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"checkmark\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n\n<ion-content class=\"ion-padding\" >\n\n <ion-item *ngIf=\"form.error\" visible-xs visible-sm visible-mobile lines=\"none\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"form.error|translate\"></ion-label>\n </ion-item>\n\n <app-message-form #form (onSubmit)=\"doSubmit($event)\"\n (onCancel)=\"cancel($event)\"\n [canSelectType]=\"canSelectType\"\n [suggestFn]=\"suggestFn\">\n </app-message-form>\n\n</ion-content>\n\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n\n <ion-toolbar>\n\n <ion-row class=\"ion-no-padding\" nowrap>\n <ion-col></ion-col>\n\n <!-- buttons -->\n <ion-col size=\"auto\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"cancel($event)\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n\n <ion-button [fill]=\"form.invalid ? 'clear' : 'solid'\"\n [disabled]=\"form.loading || form.invalid\"\n (keyup.enter)=\"doSubmit($event)\"\n (click)=\"doSubmit($event)\" color=\"tertiary\">\n <ion-label translate>COMMON.BTN_SEND</ion-label>\n </ion-button>\n </ion-col>\n </ion-row>\n\n\n </ion-toolbar>\n</ion-footer>\n", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i2.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i2.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2.IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i2.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2.IonRow, selector: "ion-row" }, { kind: "component", type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "directive", type: i5.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i6.MessageForm, selector: "app-message-form", inputs: ["suggestFn", "subjectMinLength", "subjectMaxLength", "bodyMaxLength", "bodyAutoHeight", "canSelectType"] }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
80
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: MessageModal, decorators: [{
81
81
  type: Component,
82
82
  args: [{ selector: 'app-message-modal', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ion-header>\n <ion-toolbar color=\"secondary\">\n <ion-buttons slot=\"start\">\n <ion-button class=\"back-button\" (click)=\"cancel($event)\" visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"arrow-back\"></ion-icon>\n </ion-button>\n </ion-buttons>\n\n <ion-title>\n {{'SOCIAL.MESSAGE.NEW.TITLE' | translate}}\n </ion-title>\n\n <ion-buttons slot=\"end\">\n\n <ion-button class=\"back-button\" (click)=\"doSubmit($event)\"\n [disabled]=\"!form.valid\"\n visible-xs visible-sm visible-mobile>\n <ion-icon slot=\"icon-only\" name=\"checkmark\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n\n<ion-content class=\"ion-padding\" >\n\n <ion-item *ngIf=\"form.error\" visible-xs visible-sm visible-mobile lines=\"none\">\n <ion-icon color=\"danger\" slot=\"start\" name=\"alert-circle\"></ion-icon>\n <ion-label color=\"danger\" class=\"error\" [innerHTML]=\"form.error|translate\"></ion-label>\n </ion-item>\n\n <app-message-form #form (onSubmit)=\"doSubmit($event)\"\n (onCancel)=\"cancel($event)\"\n [canSelectType]=\"canSelectType\"\n [suggestFn]=\"suggestFn\">\n </app-message-form>\n\n</ion-content>\n\n\n<ion-footer hidden-xs hidden-sm hidden-mobile>\n\n <ion-toolbar>\n\n <ion-row class=\"ion-no-padding\" nowrap>\n <ion-col></ion-col>\n\n <!-- buttons -->\n <ion-col size=\"auto\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"cancel($event)\">\n <ion-label translate>COMMON.BTN_CANCEL</ion-label>\n </ion-button>\n\n <ion-button [fill]=\"form.invalid ? 'clear' : 'solid'\"\n [disabled]=\"form.loading || form.invalid\"\n (keyup.enter)=\"doSubmit($event)\"\n (click)=\"doSubmit($event)\" color=\"tertiary\">\n <ion-label translate>COMMON.BTN_SEND</ion-label>\n </ion-button>\n </ion-col>\n </ion-row>\n\n\n </ion-toolbar>\n</ion-footer>\n" }]
83
83
  }], ctorParameters: function () { return [{ type: i1.LocalSettingsService }, { type: i2.ModalController }, { type: i3.AccountService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { suggestFn: [{
@@ -7,15 +7,15 @@ import { MessageForm } from './message.form';
7
7
  import * as i0 from "@angular/core";
8
8
  export class MessageModule {
9
9
  }
10
- MessageModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: MessageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
11
- MessageModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.1", ngImport: i0, type: MessageModule, declarations: [MessageModal,
10
+ MessageModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: MessageModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
11
+ MessageModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.6", ngImport: i0, type: MessageModule, declarations: [MessageModal,
12
12
  MessageForm], imports: [CommonModule,
13
13
  CoreModule,
14
14
  SharedModule], exports: [MessageModal] });
15
- MessageModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: MessageModule, imports: [CommonModule,
15
+ MessageModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: MessageModule, imports: [CommonModule,
16
16
  CoreModule,
17
17
  SharedModule] });
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: MessageModule, decorators: [{
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: MessageModule, decorators: [{
19
19
  type: NgModule,
20
20
  args: [{
21
21
  imports: [
@@ -70,9 +70,9 @@ export class MessageService extends BaseGraphqlService {
70
70
  });
71
71
  }
72
72
  }
73
- MessageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: MessageService, deps: [{ token: i1.GraphqlService }, { token: i2.TranslateService }, { token: i3.ToastController }, { token: ENVIRONMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
74
- MessageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: MessageService, providedIn: 'root' });
75
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: MessageService, decorators: [{
73
+ MessageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: MessageService, deps: [{ token: i1.GraphqlService }, { token: i2.TranslateService }, { token: i3.ToastController }, { token: ENVIRONMENT, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
74
+ MessageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: MessageService, providedIn: 'root' });
75
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: MessageService, decorators: [{
76
76
  type: Injectable,
77
77
  args: [{ providedIn: 'root' }]
78
78
  }], ctorParameters: function () { return [{ type: i1.GraphqlService }, { type: i2.TranslateService }, { type: i3.ToastController }, { type: i4.Environment, decorators: [{
@@ -9,8 +9,8 @@ import * as i0 from "@angular/core";
9
9
  export const SocialModuleOptionsToken = new InjectionToken("SocialModuleOptions");
10
10
  export class SocialModule {
11
11
  }
12
- SocialModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: SocialModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
13
- SocialModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.1", ngImport: i0, type: SocialModule, imports: [CommonModule,
12
+ SocialModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: SocialModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
13
+ SocialModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.6", ngImport: i0, type: SocialModule, imports: [CommonModule,
14
14
  CoreModule,
15
15
  SharedModule,
16
16
  UserEventModule,
@@ -18,7 +18,7 @@ SocialModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
18
18
  MessageModule], exports: [UserEventModule,
19
19
  JobModule,
20
20
  MessageModule] });
21
- SocialModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: SocialModule, imports: [CommonModule,
21
+ SocialModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: SocialModule, imports: [CommonModule,
22
22
  CoreModule,
23
23
  SharedModule,
24
24
  UserEventModule,
@@ -26,7 +26,7 @@ SocialModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
26
26
  MessageModule, UserEventModule,
27
27
  JobModule,
28
28
  MessageModule] });
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: SocialModule, decorators: [{
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: SocialModule, decorators: [{
30
30
  type: NgModule,
31
31
  args: [{
32
32
  imports: [
@@ -44,4 +44,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
44
44
  ]
45
45
  }]
46
46
  }] });
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29jaWFsLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc29jaWFsL3NvY2lhbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGNBQWMsRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7O0FBVTNDLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLElBQUksY0FBYyxDQUFzQixxQkFBcUIsQ0FBQyxDQUFDO0FBa0J2RyxNQUFNLE9BQU8sWUFBWTs7eUdBQVosWUFBWTswR0FBWixZQUFZLFlBZHJCLFlBQVk7UUFDWixVQUFVO1FBQ1YsWUFBWTtRQUVaLGVBQWU7UUFDZixTQUFTO1FBQ1QsYUFBYSxhQUdiLGVBQWU7UUFDZixTQUFTO1FBQ1QsYUFBYTswR0FHSixZQUFZLFlBZHJCLFlBQVk7UUFDWixVQUFVO1FBQ1YsWUFBWTtRQUVaLGVBQWU7UUFDZixTQUFTO1FBQ1QsYUFBYSxFQUdiLGVBQWU7UUFDZixTQUFTO1FBQ1QsYUFBYTsyRkFHSixZQUFZO2tCQWhCeEIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixVQUFVO3dCQUNWLFlBQVk7d0JBRVosZUFBZTt3QkFDZixTQUFTO3dCQUNULGFBQWE7cUJBQ2Q7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGVBQWU7d0JBQ2YsU0FBUzt3QkFDVCxhQUFhO3FCQUNkO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3Rpb25Ub2tlbiwgTmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0NvcmVNb2R1bGV9IGZyb20gJy4uL2NvcmUvY29yZS5tb2R1bGUnO1xuaW1wb3J0IHtTaGFyZWRNb2R1bGV9IGZyb20gJy4uL3NoYXJlZC9zaGFyZWQubW9kdWxlJztcbmltcG9ydCB7VXNlckV2ZW50TW9kdWxlfSBmcm9tICcuL3VzZXItZXZlbnQvdXNlci1ldmVudC5tb2R1bGUnO1xuaW1wb3J0IHtNZXNzYWdlTW9kdWxlfSBmcm9tICcuL21lc3NhZ2UvbWVzc2FnZS5tb2R1bGUnO1xuaW1wb3J0IHtKb2JNb2R1bGV9IGZyb20gJy4vam9iL2pvYi5tb2R1bGUnO1xuaW1wb3J0IHtKb2JQcm9ncmVzc2lvbk9wdGlvbnN9IGZyb20gJy4vam9iL3Byb2dyZXNzaW9uL2pvYi1wcm9ncmVzc2lvbi5jb21wb25lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNvY2lhbE1vZHVsZU9wdGlvbnMge1xuICBzaG93VXNlckV2ZW50Tm90aWZpY2F0aW9uOiBib29sZWFuO1xuICAvLyB0b2RvIDogdXNlckV2ZW50Tm90aWZpY2F0aW9uT3B0aW9uc1xuICBzaG93Sm9iUHJvZ3Jlc3Npb246IGJvb2xlYW47XG4gIGpvYlByb2dyZXNzaW9uT3B0aW9uczogSm9iUHJvZ3Jlc3Npb25PcHRpb25zO1xufVxuXG5leHBvcnQgY29uc3QgU29jaWFsTW9kdWxlT3B0aW9uc1Rva2VuID0gbmV3IEluamVjdGlvblRva2VuPFNvY2lhbE1vZHVsZU9wdGlvbnM+KFwiU29jaWFsTW9kdWxlT3B0aW9uc1wiKTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBDb3JlTW9kdWxlLFxuICAgIFNoYXJlZE1vZHVsZSxcblxuICAgIFVzZXJFdmVudE1vZHVsZSxcbiAgICBKb2JNb2R1bGUsXG4gICAgTWVzc2FnZU1vZHVsZVxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgVXNlckV2ZW50TW9kdWxlLFxuICAgIEpvYk1vZHVsZSxcbiAgICBNZXNzYWdlTW9kdWxlXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgU29jaWFsTW9kdWxlIHtcbn1cbiJdfQ==
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29jaWFsLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc29jaWFsL3NvY2lhbC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGNBQWMsRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUMvQyxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDckQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQy9ELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7O0FBVTNDLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLElBQUksY0FBYyxDQUFzQixxQkFBcUIsQ0FBQyxDQUFDO0FBa0J2RyxNQUFNLE9BQU8sWUFBWTs7eUdBQVosWUFBWTswR0FBWixZQUFZLFlBZHJCLFlBQVk7UUFDWixVQUFVO1FBQ1YsWUFBWTtRQUVaLGVBQWU7UUFDZixTQUFTO1FBQ1QsYUFBYSxhQUdiLGVBQWU7UUFDZixTQUFTO1FBQ1QsYUFBYTswR0FHSixZQUFZLFlBZHJCLFlBQVk7UUFDWixVQUFVO1FBQ1YsWUFBWTtRQUVaLGVBQWU7UUFDZixTQUFTO1FBQ1QsYUFBYSxFQUdiLGVBQWU7UUFDZixTQUFTO1FBQ1QsYUFBYTsyRkFHSixZQUFZO2tCQWhCeEIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixVQUFVO3dCQUNWLFlBQVk7d0JBRVosZUFBZTt3QkFDZixTQUFTO3dCQUNULGFBQWE7cUJBQ2Q7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGVBQWU7d0JBQ2YsU0FBUzt3QkFDVCxhQUFhO3FCQUNkO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3Rpb25Ub2tlbiwgTmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0NvcmVNb2R1bGV9IGZyb20gJy4uL2NvcmUvY29yZS5tb2R1bGUnO1xuaW1wb3J0IHtTaGFyZWRNb2R1bGV9IGZyb20gJy4uL3NoYXJlZC9zaGFyZWQubW9kdWxlJztcbmltcG9ydCB7VXNlckV2ZW50TW9kdWxlfSBmcm9tICcuL3VzZXItZXZlbnQvdXNlci1ldmVudC5tb2R1bGUnO1xuaW1wb3J0IHtNZXNzYWdlTW9kdWxlfSBmcm9tICcuL21lc3NhZ2UvbWVzc2FnZS5tb2R1bGUnO1xuaW1wb3J0IHtKb2JNb2R1bGV9IGZyb20gJy4vam9iL2pvYi5tb2R1bGUnO1xuaW1wb3J0IHtKb2JQcm9ncmVzc2lvbk9wdGlvbnN9IGZyb20gJy4vam9iL3Byb2dyZXNzaW9uL2pvYi1wcm9ncmVzc2lvbi5pY29uJztcblxuZXhwb3J0IGludGVyZmFjZSBTb2NpYWxNb2R1bGVPcHRpb25zIHtcbiAgc2hvd1VzZXJFdmVudE5vdGlmaWNhdGlvbjogYm9vbGVhbjtcbiAgLy8gdG9kbyA6IHVzZXJFdmVudE5vdGlmaWNhdGlvbk9wdGlvbnNcbiAgc2hvd0pvYlByb2dyZXNzaW9uOiBib29sZWFuO1xuICBqb2JQcm9ncmVzc2lvbk9wdGlvbnM6IEpvYlByb2dyZXNzaW9uT3B0aW9ucztcbn1cblxuZXhwb3J0IGNvbnN0IFNvY2lhbE1vZHVsZU9wdGlvbnNUb2tlbiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTb2NpYWxNb2R1bGVPcHRpb25zPihcIlNvY2lhbE1vZHVsZU9wdGlvbnNcIik7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgQ29yZU1vZHVsZSxcbiAgICBTaGFyZWRNb2R1bGUsXG5cbiAgICBVc2VyRXZlbnRNb2R1bGUsXG4gICAgSm9iTW9kdWxlLFxuICAgIE1lc3NhZ2VNb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIFVzZXJFdmVudE1vZHVsZSxcbiAgICBKb2JNb2R1bGUsXG4gICAgTWVzc2FnZU1vZHVsZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFNvY2lhbE1vZHVsZSB7XG59XG4iXX0=
@@ -28,15 +28,15 @@ const routes = [
28
28
  ];
29
29
  export class SocialTestingModule {
30
30
  }
31
- SocialTestingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: SocialTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
32
- SocialTestingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.1", ngImport: i0, type: SocialTestingModule, imports: [CommonModule, i1.TranslateModule, i2.RouterModule, JobTestingModule,
31
+ SocialTestingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: SocialTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
32
+ SocialTestingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.6", ngImport: i0, type: SocialTestingModule, imports: [CommonModule, i1.TranslateModule, i2.RouterModule, JobTestingModule,
33
33
  UserEventTestingModule] });
34
- SocialTestingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: SocialTestingModule, imports: [CommonModule,
34
+ SocialTestingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: SocialTestingModule, imports: [CommonModule,
35
35
  TranslateModule.forChild(),
36
36
  RouterModule.forChild(routes),
37
37
  JobTestingModule,
38
38
  UserEventTestingModule] });
39
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: SocialTestingModule, decorators: [{
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: SocialTestingModule, decorators: [{
40
40
  type: NgModule,
41
41
  args: [{
42
42
  imports: [
@@ -1,22 +1,23 @@
1
1
  import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, Optional } from '@angular/core';
2
2
  import { of } from 'rxjs';
3
- import { USER_EVENT_SERVICE } from '../user-event.service';
3
+ import { APP_USER_EVENT_SERVICE } from '../user-event.service';
4
4
  import { UserEventNotificationList } from './user-event-notification.list';
5
- import { map } from 'rxjs/operators';
6
- import { isNil } from '../../../shared/functions';
5
+ import { map, tap } from 'rxjs/operators';
6
+ import { isNil, toBoolean } from '../../../shared/functions';
7
7
  import * as i0 from "@angular/core";
8
8
  import * as i1 from "../../../core/services/account.service";
9
9
  import * as i2 from "@ionic/angular";
10
- import * as i3 from "@angular/material/icon";
11
- import * as i4 from "@angular/material/button";
12
- import * as i5 from "@angular/material/badge";
13
- import * as i6 from "@angular/common";
10
+ import * as i3 from "@angular/common";
11
+ import * as i4 from "@angular/material/icon";
12
+ import * as i5 from "@angular/material/button";
13
+ import * as i6 from "@angular/material/badge";
14
14
  import * as i7 from "@ngx-translate/core";
15
- export class AppUserEventNotificationIcon {
16
- constructor(userEventService, accountService, popoverController) {
15
+ export class UserEventNotificationIcon {
16
+ constructor(userEventService, accountService, popoverController, cd) {
17
17
  this.userEventService = userEventService;
18
18
  this.accountService = accountService;
19
19
  this.popoverController = popoverController;
20
+ this.cd = cd;
20
21
  this.debug = false;
21
22
  this.titleI18n = 'SOCIAL.USER_EVENT.NOTIFICATION.TITLE';
22
23
  this.disabled = false;
@@ -30,14 +31,22 @@ export class AppUserEventNotificationIcon {
30
31
  return of();
31
32
  return this.userEventService
32
33
  .countSubject
33
- .pipe(map(value => value === 0 ? undefined : value));
34
+ .pipe(tap(value => {
35
+ const visible = !this.autoHide || value > 0;
36
+ if (this.visible !== visible) {
37
+ this.visible = visible;
38
+ this.cd.markForCheck();
39
+ }
40
+ }), map(value => value === 0 ? undefined : value));
34
41
  }
35
42
  async ngOnInit() {
36
43
  if (isNil(this.userEventService)) {
37
44
  console.warn(`${this._logPrefix}No service injected`);
38
45
  this.disabled = true;
46
+ this.visible = false;
39
47
  return;
40
48
  }
49
+ this.visible = toBoolean(this.visible, !this.autoHide);
41
50
  // Wait service
42
51
  await this.userEventService.ready();
43
52
  // Subscribe to read event
@@ -75,17 +84,17 @@ export class AppUserEventNotificationIcon {
75
84
  }
76
85
  }
77
86
  }
78
- AppUserEventNotificationIcon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: AppUserEventNotificationIcon, deps: [{ token: USER_EVENT_SERVICE, optional: true }, { token: i1.AccountService }, { token: i2.PopoverController }], target: i0.ɵɵFactoryTarget.Component });
79
- AppUserEventNotificationIcon.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.1", type: AppUserEventNotificationIcon, selector: "app-user-event-notification-icon", inputs: { debug: "debug", titleI18n: "titleI18n", disabled: "disabled", filter: "filter" }, ngImport: i0, template: "<button\n #button\n mat-icon-button\n [title]=\"titleI18n | translate\"\n [disabled]=\"disabled\"\n (click)=\"showList($event)\"\n>\n <mat-icon\n [matBadge]=\"countChanges | async\"\n matBadgeColor=\"accent\"\n matBadgeSize=\"small\"\n matBadgePosition=\"above after\"\n >notifications\n </mat-icon>\n</button>\n\n", dependencies: [{ kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i5.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
80
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: AppUserEventNotificationIcon, decorators: [{
87
+ UserEventNotificationIcon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: UserEventNotificationIcon, deps: [{ token: APP_USER_EVENT_SERVICE, optional: true }, { token: i1.AccountService }, { token: i2.PopoverController }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
88
+ UserEventNotificationIcon.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.6", type: UserEventNotificationIcon, selector: "app-user-event-notification-icon", inputs: { debug: "debug", titleI18n: "titleI18n", disabled: "disabled", filter: "filter", autoHide: "autoHide" }, ngImport: i0, template: "<button\n #button\n mat-icon-button\n [title]=\"titleI18n | translate\"\n [disabled]=\"disabled\"\n *ngIf=\"visible\"\n (click)=\"showList($event)\"\n>\n <mat-icon\n [matBadge]=\"countChanges | async\"\n matBadgeColor=\"accent\"\n matBadgeSize=\"small\"\n matBadgePosition=\"above after\"\n >notifications\n </mat-icon>\n</button>\n\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i6.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
89
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.6", ngImport: i0, type: UserEventNotificationIcon, decorators: [{
81
90
  type: Component,
82
- args: [{ selector: 'app-user-event-notification-icon', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n #button\n mat-icon-button\n [title]=\"titleI18n | translate\"\n [disabled]=\"disabled\"\n (click)=\"showList($event)\"\n>\n <mat-icon\n [matBadge]=\"countChanges | async\"\n matBadgeColor=\"accent\"\n matBadgeSize=\"small\"\n matBadgePosition=\"above after\"\n >notifications\n </mat-icon>\n</button>\n\n" }]
91
+ args: [{ selector: 'app-user-event-notification-icon', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n #button\n mat-icon-button\n [title]=\"titleI18n | translate\"\n [disabled]=\"disabled\"\n *ngIf=\"visible\"\n (click)=\"showList($event)\"\n>\n <mat-icon\n [matBadge]=\"countChanges | async\"\n matBadgeColor=\"accent\"\n matBadgeSize=\"small\"\n matBadgePosition=\"above after\"\n >notifications\n </mat-icon>\n</button>\n\n" }]
83
92
  }], ctorParameters: function () { return [{ type: undefined, decorators: [{
84
93
  type: Optional
85
94
  }, {
86
95
  type: Inject,
87
- args: [USER_EVENT_SERVICE]
88
- }] }, { type: i1.AccountService }, { type: i2.PopoverController }]; }, propDecorators: { debug: [{
96
+ args: [APP_USER_EVENT_SERVICE]
97
+ }] }, { type: i1.AccountService }, { type: i2.PopoverController }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { debug: [{
89
98
  type: Input
90
99
  }], titleI18n: [{
91
100
  type: Input
@@ -93,5 +102,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
93
102
  type: Input
94
103
  }], filter: [{
95
104
  type: Input
105
+ }], autoHide: [{
106
+ type: Input
96
107
  }] } });
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ldmVudC1ub3RpZmljYXRpb24uaWNvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc29jaWFsL3VzZXItZXZlbnQvbm90aWZpY2F0aW9uL3VzZXItZXZlbnQtbm90aWZpY2F0aW9uLmljb24udHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NvY2lhbC91c2VyLWV2ZW50L25vdGlmaWNhdGlvbi91c2VyLWV2ZW50LW5vdGlmaWNhdGlvbi5pY29uLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBcUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdILE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUFxQixrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlFLE9BQU8sRUFBRSx5QkFBeUIsRUFBb0MsTUFBTSxnQ0FBZ0MsQ0FBQztBQUc3RyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7QUFPbEQsTUFBTSxPQUFPLDRCQUE0QjtJQWtCdkMsWUFDaUQsZ0JBQTJFLEVBQ2hILGNBQThCLEVBQzlCLGlCQUFvQztRQUZDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBMkQ7UUFDaEgsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFuQnZDLFVBQUssR0FBRyxLQUFLLENBQUM7UUFDZCxjQUFTLEdBQUcsc0NBQXNDLENBQUM7UUFDbkQsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixXQUFNLEdBQVEsSUFBSSxDQUFDO1FBU3BCLGVBQVUsR0FBRyw0QkFB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LCBFdmVudEVtaXR0ZXIsIEluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBvZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQb3BvdmVyQ29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IElVc2VyRXZlbnRTZXJ2aWNlLCBVU0VSX0VWRU5UX1NFUlZJQ0UgfSBmcm9tICcuLi91c2VyLWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlckV2ZW50Tm90aWZpY2F0aW9uTGlzdCwgVXNlckV2ZW50Tm90aWZpY2F0aW9uTGlzdE9wdGlvbnMgfSBmcm9tICcuL3VzZXItZXZlbnQtbm90aWZpY2F0aW9uLmxpc3QnO1xuaW1wb3J0IHsgSVVzZXJFdmVudCwgSVVzZXJFdmVudEZpbHRlciB9IGZyb20gJy4uL3VzZXItZXZlbnQubW9kZWwnO1xuaW1wb3J0IHsgQWNjb3VudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NlcnZpY2VzL2FjY291bnQuc2VydmljZSc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtdXNlci1ldmVudC1ub3RpZmljYXRpb24taWNvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi91c2VyLWV2ZW50LW5vdGlmaWNhdGlvbi5pY29uLmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBBcHBVc2VyRXZlbnROb3RpZmljYXRpb25JY29uIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIEBJbnB1dCgpIGRlYnVnID0gZmFsc2U7XG4gIEBJbnB1dCgpIHRpdGxlSTE4biA9ICdTT0NJQUwuVVNFUl9FVkVOVC5OT1RJRklDQVRJT04uVElUTEUnO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBmaWx0ZXI6IGFueSA9IG51bGw7XG5cbiAgZ2V0IGNvdW50Q2hhbmdlcygpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIGlmICghdGhpcy51c2VyRXZlbnRTZXJ2aWNlKSByZXR1cm4gb2YoKTtcbiAgICByZXR1cm4gdGhpcy51c2VyRXZlbnRTZXJ2aWNlXG4gICAgICAuY291bnRTdWJqZWN0XG4gICAgICAucGlwZShtYXAodmFsdWUgPT4gdmFsdWUgPT09IDAgPyB1bmRlZmluZWQgOiB2YWx1ZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfbG9nUHJlZml4ID0gJ1t1c2VyLWV2ZW50LW5vdGlmaWNhdGlvbl0gJztcbiAgcHJpdmF0ZSBfcmVhZEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxJVXNlckV2ZW50PGFueT4+KCk7XG4gIHByaXZhdGUgX3JlYWRFdmVudHMgPSBuZXcgRXZlbnRFbWl0dGVyPElVc2VyRXZlbnQ8YW55PltdPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoVVNFUl9FVkVOVF9TRVJWSUNFKSBwdWJsaWMgdXNlckV2ZW50U2VydmljZTogSVVzZXJFdmVudFNlcnZpY2U8SVVzZXJFdmVudDxhbnk+LCBJVXNlckV2ZW50RmlsdGVyPGFueT4+LFxuICAgIHByb3RlY3RlZCBhY2NvdW50U2VydmljZTogQWNjb3VudFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHBvcG92ZXJDb250cm9sbGVyOiBQb3BvdmVyQ29udHJvbGxlclxuICApIHsgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuXG4gICAgaWYgKGlzTmlsKHRoaXMudXNlckV2ZW50U2VydmljZSkpIHtcbiAgICAgIGNvbnNvbGUud2FybihgJHt0aGlzLl9sb2dQcmVmaXh9Tm8gc2VydmljZSBpbmplY3RlZGApO1xuICAgICAgdGhpcy5kaXNhYmxlZCA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gV2FpdCBzZXJ2aWNlXG4gICAgYXdhaXQgdGhpcy51c2VyRXZlbnRTZXJ2aWNlLnJlYWR5KCk7XG5cbiAgICAvLyBTdWJzY3JpYmUgdG8gcmVhZCBldmVudFxuICAgIHRoaXMuX3JlYWRFdmVudC5zdWJzY3JpYmUoaXRlbSA9PiB7XG4gICAgICAvLyBkZWZhdWx0OiBtYXJrIGV2ZW50IGFzIHJlYWRcbiAgICAgIHRoaXMudXNlckV2ZW50U2VydmljZS5tYXJrQWxsQXNSZWFkKFtpdGVtXSk7XG4gICAgfSk7XG4gICAgdGhpcy5fcmVhZEV2ZW50cy5zdWJzY3JpYmUoaXRlbXMgPT4ge1xuICAgICAgdGhpcy51c2VyRXZlbnRTZXJ2aWNlLm1hcmtBbGxBc1JlYWQoaXRlbXMpO1xuICAgIH0pXG4gIH1cblxuICBhc3luYyBzaG93TGlzdChldmVudDogRXZlbnQpIHtcbiAgICAvLyBSZXNldCBjb3VudFxuICAgIHRoaXMudXNlckV2ZW50U2VydmljZS5yZXNldENvdW50KCk7XG5cbiAgICBjb25zdCBwb3BvdmVyID0gYXdhaXQgdGhpcy5wb3BvdmVyQ29udHJvbGxlci5jcmVhdGUoe1xuICAgICAgY29tcG9uZW50OiBVc2VyRXZlbnROb3RpZmljYXRpb25MaXN0LFxuICAgICAgY29tcG9uZW50UHJvcHM6IDxVc2VyRXZlbnROb3RpZmljYXRpb25MaXN0T3B0aW9ucz57XG4gICAgICAgIGRlYnVnOiB0aGlzLmRlYnVnLFxuICAgICAgICB0aXRsZUkxOG46IHRoaXMudGl0bGVJMThuLFxuICAgICAgICByZWFkRXZlbnQ6IHRoaXMuX3JlYWRFdmVudCxcbiAgICAgICAgcmVhZEV2ZW50czogdGhpcy5fcmVhZEV2ZW50cyxcbiAgICAgICAgZmlsdGVyOiB0aGlzLmZpbHRlclxuICAgICAgfSxcbiAgICAgIGJhY2tkcm9wRGlzbWlzczogdHJ1ZSxcbiAgICAgIGtleWJvYXJkQ2xvc2U6IHRydWUsXG4gICAgICBldmVudCxcbiAgICAgIHRyYW5zbHVjZW50OiB0cnVlLFxuICAgICAgY3NzQ2xhc3M6ICdwb3BvdmVyLWxhcmdlIHBvcG92ZXItbm90aWZpY2F0aW9ucydcbiAgICB9KTtcbiAgICBhd2FpdCBwb3BvdmVyLnByZXNlbnQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRlYnVnKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1EZXN0cm95aW5nYCk7XG4gICAgfVxuICB9XG59XG4iLCI8YnV0dG9uXG4gICNidXR0b25cbiAgbWF0LWljb24tYnV0dG9uXG4gIFt0aXRsZV09XCJ0aXRsZUkxOG4gfCB0cmFuc2xhdGVcIlxuICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAoY2xpY2spPVwic2hvd0xpc3QoJGV2ZW50KVwiXG4+XG4gIDxtYXQtaWNvblxuICAgIFttYXRCYWRnZV09XCJjb3VudENoYW5nZXMgfCBhc3luY1wiXG4gICAgbWF0QmFkZ2VDb2xvcj1cImFjY2VudFwiXG4gICAgbWF0QmFkZ2VTaXplPVwic21hbGxcIlxuICAgIG1hdEJhZGdlUG9zaXRpb249XCJhYm92ZSBhZnRlclwiXG4gID5ub3RpZmljYXRpb25zXG4gIDwvbWF0LWljb24+XG48L2J1dHRvbj5cblxuIl19
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1ldmVudC1ub3RpZmljYXRpb24uaWNvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc29jaWFsL3VzZXItZXZlbnQvbm90aWZpY2F0aW9uL3VzZXItZXZlbnQtbm90aWZpY2F0aW9uLmljb24udHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NvY2lhbC91c2VyLWV2ZW50L25vdGlmaWNhdGlvbi91c2VyLWV2ZW50LW5vdGlmaWNhdGlvbi5pY29uLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXFCLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM5SSxPQUFPLEVBQWEsRUFBRSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE9BQU8sRUFBcUIsc0JBQXNCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRixPQUFPLEVBQUUseUJBQXlCLEVBQW9DLE1BQU0sZ0NBQWdDLENBQUM7QUFHN0csT0FBTyxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUMsS0FBSyxFQUFFLFNBQVMsRUFBQyxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7Ozs7QUFPM0QsTUFBTSxPQUFPLHlCQUF5QjtJQThCcEMsWUFDcUQsZ0JBQTJFLEVBQ3BILGNBQThCLEVBQzlCLGlCQUFvQyxFQUN0QyxFQUFxQjtRQUhzQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQTJEO1FBQ3BILG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3RDLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBaEN0QixVQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2QsY0FBUyxHQUFHLHNDQUFzQyxDQUFDO1FBQ25ELGFBQVEs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UUFDVCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZCxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsWUFBWSxDQUFDLENBQUM7U0FDL0M7SUFDSCxDQUFDOztzSEF2RlUseUJBQXlCLGtCQStCZCxzQkFBc0I7MEdBL0JqQyx5QkFBeUIsMExDZnRDLHFXQWlCQTsyRkRGYSx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0Usa0NBQWtDLG1CQUUzQix1QkFBdUIsQ0FBQyxNQUFNOzswQkFpQzVDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsc0JBQXNCO3lJQTdCbkMsS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE9wdGlvbmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUG9wb3ZlckNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBJVXNlckV2ZW50U2VydmljZSwgQVBQX1VTRVJfRVZFTlRfU0VSVklDRSB9IGZyb20gJy4uL3VzZXItZXZlbnQuc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyRXZlbnROb3RpZmljYXRpb25MaXN0LCBVc2VyRXZlbnROb3RpZmljYXRpb25MaXN0T3B0aW9ucyB9IGZyb20gJy4vdXNlci1ldmVudC1ub3RpZmljYXRpb24ubGlzdCc7XG5pbXBvcnQgeyBJVXNlckV2ZW50LCBJVXNlckV2ZW50RmlsdGVyIH0gZnJvbSAnLi4vdXNlci1ldmVudC5tb2RlbCc7XG5pbXBvcnQgeyBBY2NvdW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvc2VydmljZXMvYWNjb3VudC5zZXJ2aWNlJztcbmltcG9ydCB7bWFwLCB0YXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7aXNOaWwsIHRvQm9vbGVhbn0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2Z1bmN0aW9ucyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC11c2VyLWV2ZW50LW5vdGlmaWNhdGlvbi1pY29uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3VzZXItZXZlbnQtbm90aWZpY2F0aW9uLmljb24uaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJFdmVudE5vdGlmaWNhdGlvbkljb24gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgQElucHV0KCkgZGVidWcgPSBmYWxzZTtcbiAgQElucHV0KCkgdGl0bGVJMThuID0gJ1NPQ0lBTC5VU0VSX0VWRU5ULk5PVElGSUNBVElPTi5USVRMRSc7XG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGZpbHRlcjogYW55ID0gbnVsbDtcbiAgQElucHV0KCkgYXV0b0hpZGU6IGJvb2xlYW47XG5cbiAgdmlzaWJsZTogYm9vbGVhbjtcblxuICBnZXQgY291bnRDaGFuZ2VzKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgaWYgKCF0aGlzLnVzZXJFdmVudFNlcnZpY2UpIHJldHVybiBvZigpO1xuICAgIHJldHVybiB0aGlzLnVzZXJFdmVudFNlcnZpY2VcbiAgICAgIC5jb3VudFN1YmplY3RcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAodmFsdWUgPT4ge1xuICAgICAgICAgIGNvbnN0IHZpc2libGUgPSAhdGhpcy5hdXRvSGlkZSB8fCB2YWx1ZSA+IDA7XG4gICAgICAgICAgaWYgKHRoaXMudmlzaWJsZSAhPT0gdmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy52aXNpYmxlID0gdmlzaWJsZTtcbiAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgbWFwKHZhbHVlID0+IHZhbHVlID09PSAwID8gdW5kZWZpbmVkIDogdmFsdWUpXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfbG9nUHJlZml4ID0gJ1t1c2VyLWV2ZW50LW5vdGlmaWNhdGlvbl0gJztcbiAgcHJpdmF0ZSBfcmVhZEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxJVXNlckV2ZW50PGFueT4+KCk7XG4gIHByaXZhdGUgX3JlYWRFdmVudHMgPSBuZXcgRXZlbnRFbWl0dGVyPElVc2VyRXZlbnQ8YW55PltdPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQVBQX1VTRVJfRVZFTlRfU0VSVklDRSkgcHVibGljIHVzZXJFdmVudFNlcnZpY2U6IElVc2VyRXZlbnRTZXJ2aWNlPElVc2VyRXZlbnQ8YW55PiwgSVVzZXJFdmVudEZpbHRlcjxhbnk+PixcbiAgICBwcm90ZWN0ZWQgYWNjb3VudFNlcnZpY2U6IEFjY291bnRTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBwb3BvdmVyQ29udHJvbGxlcjogUG9wb3ZlckNvbnRyb2xsZXIsXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7IH1cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcblxuICAgIGlmIChpc05pbCh0aGlzLnVzZXJFdmVudFNlcnZpY2UpKSB7XG4gICAgICBjb25zb2xlLndhcm4oYCR7dGhpcy5fbG9nUHJlZml4fU5vIHNlcnZpY2UgaW5qZWN0ZWRgKTtcbiAgICAgIHRoaXMuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy52aXNpYmxlID0gdG9Cb29sZWFuKHRoaXMudmlzaWJsZSwgIXRoaXMuYXV0b0hpZGUpO1xuXG4gICAgLy8gV2FpdCBzZXJ2aWNlXG4gICAgYXdhaXQgdGhpcy51c2VyRXZlbnRTZXJ2aWNlLnJlYWR5KCk7XG5cbiAgICAvLyBTdWJzY3JpYmUgdG8gcmVhZCBldmVudFxuICAgIHRoaXMuX3JlYWRFdmVudC5zdWJzY3JpYmUoaXRlbSA9PiB7XG4gICAgICAvLyBkZWZhdWx0OiBtYXJrIGV2ZW50IGFzIHJlYWRcbiAgICAgIHRoaXMudXNlckV2ZW50U2VydmljZS5tYXJrQWxsQXNSZWFkKFtpdGVtXSk7XG4gICAgfSk7XG4gICAgdGhpcy5fcmVhZEV2ZW50cy5zdWJzY3JpYmUoaXRlbXMgPT4ge1xuICAgICAgdGhpcy51c2VyRXZlbnRTZXJ2aWNlLm1hcmtBbGxBc1JlYWQoaXRlbXMpO1xuICAgIH0pXG4gIH1cblxuICBhc3luYyBzaG93TGlzdChldmVudDogRXZlbnQpIHtcbiAgICAvLyBSZXNldCBjb3VudFxuICAgIHRoaXMudXNlckV2ZW50U2VydmljZS5yZXNldENvdW50KCk7XG5cbiAgICBjb25zdCBwb3BvdmVyID0gYXdhaXQgdGhpcy5wb3BvdmVyQ29udHJvbGxlci5jcmVhdGUoe1xuICAgICAgY29tcG9uZW50OiBVc2VyRXZlbnROb3RpZmljYXRpb25MaXN0LFxuICAgICAgY29tcG9uZW50UHJvcHM6IDxVc2VyRXZlbnROb3RpZmljYXRpb25MaXN0T3B0aW9ucz57XG4gICAgICAgIGRlYnVnOiB0aGlzLmRlYnVnLFxuICAgICAgICB0aXRsZUkxOG46IHRoaXMudGl0bGVJMThuLFxuICAgICAgICByZWFkRXZlbnQ6IHRoaXMuX3JlYWRFdmVudCxcbiAgICAgICAgcmVhZEV2ZW50czogdGhpcy5fcmVhZEV2ZW50cyxcbiAgICAgICAgZmlsdGVyOiB0aGlzLmZpbHRlclxuICAgICAgfSxcbiAgICAgIGJhY2tkcm9wRGlzbWlzczogdHJ1ZSxcbiAgICAgIGtleWJvYXJkQ2xvc2U6IHRydWUsXG4gICAgICBldmVudCxcbiAgICAgIHRyYW5zbHVjZW50OiB0cnVlLFxuICAgICAgY3NzQ2xhc3M6ICdwb3BvdmVyLWxhcmdlIHBvcG92ZXItbm90aWZpY2F0aW9ucydcbiAgICB9KTtcbiAgICBhd2FpdCBwb3BvdmVyLnByZXNlbnQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRlYnVnKSB7XG4gICAgICBjb25zb2xlLmRlYnVnKGAke3RoaXMuX2xvZ1ByZWZpeH1EZXN0cm95aW5nYCk7XG4gICAgfVxuICB9XG59XG4iLCI8YnV0dG9uXG4gICNidXR0b25cbiAgbWF0LWljb24tYnV0dG9uXG4gIFt0aXRsZV09XCJ0aXRsZUkxOG4gfCB0cmFuc2xhdGVcIlxuICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAqbmdJZj1cInZpc2libGVcIlxuICAoY2xpY2spPVwic2hvd0xpc3QoJGV2ZW50KVwiXG4+XG4gIDxtYXQtaWNvblxuICAgIFttYXRCYWRnZV09XCJjb3VudENoYW5nZXMgfCBhc3luY1wiXG4gICAgbWF0QmFkZ2VDb2xvcj1cImFjY2VudFwiXG4gICAgbWF0QmFkZ2VTaXplPVwic21hbGxcIlxuICAgIG1hdEJhZGdlUG9zaXRpb249XCJhYm92ZSBhZnRlclwiXG4gID5ub3RpZmljYXRpb25zXG4gIDwvbWF0LWljb24+XG48L2J1dHRvbj5cblxuIl19