@c8y/ngx-components 1021.13.3 → 1021.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (432) hide show
  1. package/alarms/alarm-details.component.d.ts +1 -3
  2. package/alarms/alarm-details.component.d.ts.map +1 -1
  3. package/alarms/alarm-info.component.d.ts +9 -14
  4. package/alarms/alarm-info.component.d.ts.map +1 -1
  5. package/alarms/alarms-list.component.d.ts +2 -17
  6. package/alarms/alarms-list.component.d.ts.map +1 -1
  7. package/alarms/alarms-view.service.d.ts +1 -0
  8. package/alarms/alarms-view.service.d.ts.map +1 -1
  9. package/alarms/alarms.component.d.ts.map +1 -1
  10. package/alarms/alarms.helper.d.ts +5 -0
  11. package/alarms/alarms.helper.d.ts.map +1 -0
  12. package/alarms/alarms.model.d.ts +30 -0
  13. package/alarms/alarms.model.d.ts.map +1 -1
  14. package/alarms/alarms.module.d.ts.map +1 -1
  15. package/alarms/cockpit/index.d.ts.map +1 -1
  16. package/alarms/devicemanagement/index.d.ts.map +1 -1
  17. package/alarms/index.d.ts +5 -4
  18. package/alarms/index.d.ts.map +1 -1
  19. package/context-dashboard/context-dashboard.model.d.ts +1 -0
  20. package/context-dashboard/context-dashboard.model.d.ts.map +1 -1
  21. package/context-dashboard/context-dashboard.service.d.ts +7 -5
  22. package/context-dashboard/context-dashboard.service.d.ts.map +1 -1
  23. package/context-dashboard/dashboard-detail.component.d.ts +4 -7
  24. package/context-dashboard/dashboard-detail.component.d.ts.map +1 -1
  25. package/context-dashboard/dashboard-detail.service.d.ts +4 -4
  26. package/context-dashboard/dashboard-detail.service.d.ts.map +1 -1
  27. package/context-dashboard/dashboard-settings/dashboard-general-settings.component.d.ts +2 -2
  28. package/context-dashboard/dashboard-settings/dashboard-general-settings.component.d.ts.map +1 -1
  29. package/context-dashboard/dashboard-settings/typed-dashboard-settings.component.d.ts +19 -6
  30. package/context-dashboard/dashboard-settings/typed-dashboard-settings.component.d.ts.map +1 -1
  31. package/core/action-bar/action-bar-item.component.d.ts +1 -1
  32. package/core/action-bar/action-bar-item.component.d.ts.map +1 -1
  33. package/core/action-bar/action-bar.module.d.ts +6 -6
  34. package/core/action-bar/action-bar.module.d.ts.map +1 -1
  35. package/core/bootstrap/bootstrap.component.d.ts +3 -1
  36. package/core/bootstrap/bootstrap.component.d.ts.map +1 -1
  37. package/core/common/aggregation/aggregation.model.d.ts +39 -0
  38. package/core/common/aggregation/aggregation.model.d.ts.map +1 -0
  39. package/core/common/aggregation/aggregation.service.d.ts +17 -0
  40. package/core/common/aggregation/aggregation.service.d.ts.map +1 -0
  41. package/core/common/index.d.ts +4 -0
  42. package/core/common/index.d.ts.map +1 -1
  43. package/core/common/inter-app.service.d.ts +48 -0
  44. package/core/common/inter-app.service.d.ts.map +1 -0
  45. package/core/common/interval-based-reload.abstract.d.ts +120 -0
  46. package/core/common/interval-based-reload.abstract.d.ts.map +1 -0
  47. package/core/dashboard/dashboard.module.d.ts +24 -18
  48. package/core/dashboard/dashboard.module.d.ts.map +1 -1
  49. package/core/dashboard/index.d.ts +3 -0
  50. package/core/dashboard/index.d.ts.map +1 -1
  51. package/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.d.ts +31 -0
  52. package/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.d.ts.map +1 -0
  53. package/core/dashboard/widget-auto-refresh-context/auto-refresh-select-control.component.d.ts +17 -0
  54. package/core/dashboard/widget-auto-refresh-context/auto-refresh-select-control.component.d.ts.map +1 -0
  55. package/core/dashboard/widget-auto-refresh-context/global-refresh-loading.operator.d.ts +4 -0
  56. package/core/dashboard/widget-auto-refresh-context/global-refresh-loading.operator.d.ts.map +1 -0
  57. package/core/dashboard/widget-auto-refresh-context/index.d.ts +8 -0
  58. package/core/dashboard/widget-auto-refresh-context/index.d.ts.map +1 -0
  59. package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context-icon-bar.component.d.ts +7 -0
  60. package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context-icon-bar.component.d.ts.map +1 -0
  61. package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.d.ts +29 -0
  62. package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.d.ts.map +1 -0
  63. package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.model.d.ts +15 -0
  64. package/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.model.d.ts.map +1 -0
  65. package/core/dashboard/widget-auto-refresh-context/widget-global-auto-refresh.service.d.ts +169 -0
  66. package/core/dashboard/widget-auto-refresh-context/widget-global-auto-refresh.service.d.ts.map +1 -0
  67. package/core/dashboard/widgets-dashboard.component.d.ts +6 -3
  68. package/core/dashboard/widgets-dashboard.component.d.ts.map +1 -1
  69. package/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.d.ts +2 -2
  70. package/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.d.ts.map +1 -1
  71. package/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.d.ts +1 -1
  72. package/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.d.ts.map +1 -1
  73. package/core/dashboard/wiget-time-context/widget-time-context-query.service.d.ts.map +1 -1
  74. package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts +11 -8
  75. package/core/dashboard/wiget-time-context/widget-time-context.component.d.ts.map +1 -1
  76. package/core/dashboard/wiget-time-context/widget-time-context.model.d.ts +6 -12
  77. package/core/dashboard/wiget-time-context/widget-time-context.model.d.ts.map +1 -1
  78. package/core/header/header.module.d.ts +18 -18
  79. package/core/header/header.module.d.ts.map +1 -1
  80. package/core/header/title/title.component.d.ts +1 -1
  81. package/core/header/title/title.component.d.ts.map +1 -1
  82. package/core/i18n/cached-locale-dictionary.service.d.ts +5 -1
  83. package/core/i18n/cached-locale-dictionary.service.d.ts.map +1 -1
  84. package/core/i18n/i18n.module.d.ts +0 -4
  85. package/core/i18n/i18n.module.d.ts.map +1 -1
  86. package/core/i18n/index.d.ts +2 -1
  87. package/core/i18n/index.d.ts.map +1 -1
  88. package/core/i18n/translation-loader.service.d.ts +50 -0
  89. package/core/i18n/translation-loader.service.d.ts.map +1 -0
  90. package/core/i18n/translation-utils.d.ts +14 -0
  91. package/core/i18n/translation-utils.d.ts.map +1 -0
  92. package/core/plugins/plugins-resolve.service.d.ts +7 -10
  93. package/core/plugins/plugins-resolve.service.d.ts.map +1 -1
  94. package/core/router/context-route.component.d.ts +8 -3
  95. package/core/router/context-route.component.d.ts.map +1 -1
  96. package/core/router/context-route.service.d.ts +29 -3
  97. package/core/router/context-route.service.d.ts.map +1 -1
  98. package/core/router/router-tabs.resolver.d.ts +4 -1
  99. package/core/router/router-tabs.resolver.d.ts.map +1 -1
  100. package/core/router/router.model.d.ts +40 -3
  101. package/core/router/router.model.d.ts.map +1 -1
  102. package/core/router/router.module.d.ts +2 -1
  103. package/core/router/router.module.d.ts.map +1 -1
  104. package/core/router/router.service.d.ts +5 -4
  105. package/core/router/router.service.d.ts.map +1 -1
  106. package/core/router/scoped-context-route.service.d.ts +57 -0
  107. package/core/router/scoped-context-route.service.d.ts.map +1 -0
  108. package/core/router/view-context.service.d.ts +8 -18
  109. package/core/router/view-context.service.d.ts.map +1 -1
  110. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.d.ts +2 -1
  111. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.d.ts.map +1 -1
  112. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts +11 -2
  113. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts.map +1 -1
  114. package/datapoint-selector/datapoint-selection.model.d.ts +6 -0
  115. package/datapoint-selector/datapoint-selection.model.d.ts.map +1 -1
  116. package/datapoints-export-selector/c8y-ngx-components-datapoints-export-selector.d.ts.map +1 -0
  117. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts +117 -0
  118. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts.map +1 -0
  119. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-processing.service.d.ts +90 -0
  120. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-processing.service.d.ts.map +1 -0
  121. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.d.ts +160 -0
  122. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.d.ts.map +1 -0
  123. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.d.ts +89 -0
  124. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.d.ts.map +1 -0
  125. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-preview/datapoints-export-selector-preview.component.d.ts +11 -0
  126. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-preview/datapoints-export-selector-preview.component.d.ts.map +1 -0
  127. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-data-scope/datapoints-exports-selector-data-scope.component.d.ts +27 -0
  128. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-data-scope/datapoints-exports-selector-data-scope.component.d.ts.map +1 -0
  129. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-file-types/datapoints-exports-selector-file-types.component.d.ts +12 -0
  130. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-file-types/datapoints-exports-selector-file-types.component.d.ts.map +1 -0
  131. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-time-range/datapoints-exports-selector-time-range.component.d.ts +22 -0
  132. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-time-range/datapoints-exports-selector-time-range.component.d.ts.map +1 -0
  133. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/csv-generator.d.ts +3 -0
  134. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/csv-generator.d.ts.map +1 -0
  135. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/excel-generator.d.ts +9 -0
  136. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/excel-generator.d.ts.map +1 -0
  137. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/utils.service.d.ts +56 -0
  138. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/utils.service.d.ts.map +1 -0
  139. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-modal.component.d.ts +21 -0
  140. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-modal.component.d.ts.map +1 -0
  141. package/datapoints-export-selector/datapoints-export-selector.component.d.ts +14 -0
  142. package/datapoints-export-selector/datapoints-export-selector.component.d.ts.map +1 -0
  143. package/datapoints-export-selector/datapoints-export-selector.model.d.ts +232 -0
  144. package/datapoints-export-selector/datapoints-export-selector.model.d.ts.map +1 -0
  145. package/datapoints-export-selector/index.d.ts +15 -0
  146. package/datapoints-export-selector/index.d.ts.map +1 -0
  147. package/device-list/device-list.module.d.ts +4 -2
  148. package/device-list/device-list.module.d.ts.map +1 -1
  149. package/esm2022/alarms/alarm-details.component.mjs +7 -9
  150. package/esm2022/alarms/alarm-info.component.mjs +23 -33
  151. package/esm2022/alarms/alarms-list.component.mjs +5 -16
  152. package/esm2022/alarms/alarms-view.service.mjs +3 -2
  153. package/esm2022/alarms/alarms.component.mjs +10 -3
  154. package/esm2022/alarms/alarms.helper.mjs +32 -0
  155. package/esm2022/alarms/alarms.model.mjs +1 -1
  156. package/esm2022/alarms/alarms.module.mjs +5 -5
  157. package/esm2022/alarms/cockpit/index.mjs +13 -17
  158. package/esm2022/alarms/devicemanagement/index.mjs +15 -18
  159. package/esm2022/alarms/index.mjs +6 -5
  160. package/esm2022/context-dashboard/context-dashboard.component.mjs +4 -4
  161. package/esm2022/context-dashboard/context-dashboard.model.mjs +1 -1
  162. package/esm2022/context-dashboard/context-dashboard.service.mjs +47 -21
  163. package/esm2022/context-dashboard/dashboard-detail.component.mjs +8 -16
  164. package/esm2022/context-dashboard/dashboard-detail.service.mjs +13 -6
  165. package/esm2022/context-dashboard/dashboard-settings/dashboard-general-settings.component.mjs +3 -3
  166. package/esm2022/context-dashboard/dashboard-settings/typed-dashboard-settings.component.mjs +32 -11
  167. package/esm2022/core/action-bar/action-bar-item.component.mjs +3 -3
  168. package/esm2022/core/action-bar/action-bar.module.mjs +16 -5
  169. package/esm2022/core/bootstrap/bootstrap.component.mjs +21 -16
  170. package/esm2022/core/common/aggregation/aggregation.model.mjs +46 -0
  171. package/esm2022/core/common/aggregation/aggregation.service.mjs +34 -0
  172. package/esm2022/core/common/humanize-app-name.model.mjs +2 -2
  173. package/esm2022/core/common/humanize-app-name.pipe.mjs +2 -2
  174. package/esm2022/core/common/index.mjs +5 -1
  175. package/esm2022/core/common/inter-app.service.mjs +76 -0
  176. package/esm2022/core/common/interval-based-reload.abstract.mjs +110 -0
  177. package/esm2022/core/countdown-interval/countdown-interval.component.mjs +3 -3
  178. package/esm2022/core/dashboard/dashboard-child.component.mjs +6 -5
  179. package/esm2022/core/dashboard/dashboard.module.mjs +18 -1
  180. package/esm2022/core/dashboard/index.mjs +4 -1
  181. package/esm2022/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.mjs +101 -0
  182. package/esm2022/core/dashboard/widget-auto-refresh-context/auto-refresh-select-control.component.mjs +50 -0
  183. package/esm2022/core/dashboard/widget-auto-refresh-context/global-refresh-loading.operator.mjs +7 -0
  184. package/esm2022/core/dashboard/widget-auto-refresh-context/index.mjs +8 -0
  185. package/esm2022/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context-icon-bar.component.mjs +18 -0
  186. package/esm2022/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.component.mjs +127 -0
  187. package/esm2022/core/dashboard/widget-auto-refresh-context/widget-auto-refresh-context.model.mjs +5 -0
  188. package/esm2022/core/dashboard/widget-auto-refresh-context/widget-global-auto-refresh.service.mjs +233 -0
  189. package/esm2022/core/dashboard/widgets-dashboard.component.mjs +35 -30
  190. package/esm2022/core/dashboard/wiget-time-context/aggregation-picker/aggregation-picker.component.mjs +4 -4
  191. package/esm2022/core/dashboard/wiget-time-context/realtime-control/realtime-control.component.mjs +2 -2
  192. package/esm2022/core/dashboard/wiget-time-context/widget-time-context-icon-bar/widget-time-context-icon-bar.component.mjs +5 -5
  193. package/esm2022/core/dashboard/wiget-time-context/widget-time-context-query.service.mjs +7 -4
  194. package/esm2022/core/dashboard/wiget-time-context/widget-time-context.component.mjs +37 -37
  195. package/esm2022/core/dashboard/wiget-time-context/widget-time-context.model.mjs +1 -28
  196. package/esm2022/core/date-time-picker/date-time-picker.component.mjs +3 -3
  197. package/esm2022/core/header/header.module.mjs +7 -5
  198. package/esm2022/core/header/title/title.component.mjs +3 -3
  199. package/esm2022/core/i18n/cached-locale-dictionary.service.mjs +1 -1
  200. package/esm2022/core/i18n/i18n.module.mjs +7 -14
  201. package/esm2022/core/i18n/index.mjs +3 -2
  202. package/esm2022/core/i18n/translate.parser.mjs +2 -2
  203. package/esm2022/core/i18n/translation-loader.service.mjs +132 -0
  204. package/esm2022/core/i18n/translation-utils.mjs +24 -0
  205. package/esm2022/core/plugins/plugins-resolve.service.mjs +12 -37
  206. package/esm2022/core/router/context-route.component.mjs +23 -13
  207. package/esm2022/core/router/context-route.service.mjs +37 -5
  208. package/esm2022/core/router/router-tabs.resolver.mjs +46 -15
  209. package/esm2022/core/router/router.model.mjs +6 -1
  210. package/esm2022/core/router/router.module.mjs +20 -13
  211. package/esm2022/core/router/router.service.mjs +24 -10
  212. package/esm2022/core/router/scoped-context-route.service.mjs +152 -0
  213. package/esm2022/core/router/view-context.service.mjs +59 -16
  214. package/esm2022/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.mjs +13 -6
  215. package/esm2022/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.mjs +22 -5
  216. package/esm2022/datapoint-selector/datapoint-selection-list/datapoint-selection-list.component.mjs +3 -3
  217. package/esm2022/datapoint-selector/datapoint-selection.model.mjs +1 -1
  218. package/esm2022/datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.mjs +3 -3
  219. package/esm2022/datapoints-export-selector/c8y-ngx-components-datapoints-export-selector.mjs +5 -0
  220. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.mjs +407 -0
  221. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-processing.service.mjs +207 -0
  222. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.component.mjs +467 -0
  223. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.mjs +187 -0
  224. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-preview/datapoints-export-selector-preview.component.mjs +27 -0
  225. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-data-scope/datapoints-exports-selector-data-scope.component.mjs +41 -0
  226. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-file-types/datapoints-exports-selector-file-types.component.mjs +23 -0
  227. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-time-range/datapoints-exports-selector-time-range.component.mjs +42 -0
  228. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/csv-generator.mjs +120 -0
  229. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/generators/excel-generator.mjs +282 -0
  230. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/utils.service.mjs +76 -0
  231. package/esm2022/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-modal.component.mjs +46 -0
  232. package/esm2022/datapoints-export-selector/datapoints-export-selector.component.mjs +42 -0
  233. package/esm2022/datapoints-export-selector/datapoints-export-selector.model.mjs +43 -0
  234. package/esm2022/datapoints-export-selector/index.mjs +15 -0
  235. package/esm2022/device-list/add-smart-group.component.mjs +4 -3
  236. package/esm2022/device-list/device-list.module.mjs +22 -4
  237. package/esm2022/map/cluster-map.component.mjs +41 -13
  238. package/esm2022/map/map-status.component.mjs +6 -5
  239. package/esm2022/map/map.component.mjs +9 -5
  240. package/esm2022/map/map.model.mjs +1 -1
  241. package/esm2022/translation-editor/c8y-ngx-components-translation-editor.mjs +5 -0
  242. package/esm2022/translation-editor/data/c8y-ngx-components-translation-editor-data.mjs +5 -0
  243. package/esm2022/translation-editor/data/index.mjs +2 -0
  244. package/esm2022/translation-editor/data/translation-store.service.mjs +175 -0
  245. package/esm2022/translation-editor/index.mjs +10 -0
  246. package/esm2022/translation-editor/lazy/add-translation-modal/add-translation-modal.component.mjs +70 -0
  247. package/esm2022/translation-editor/lazy/c8y-ngx-components-translation-editor-lazy.mjs +5 -0
  248. package/esm2022/translation-editor/lazy/index.mjs +2 -0
  249. package/esm2022/translation-editor/lazy/manage-translation-cell-renderer/manage-translation-cell-renderer.component.mjs +53 -0
  250. package/esm2022/translation-editor/lazy/translation-editor/translation-editor.component.mjs +124 -0
  251. package/esm2022/translation-editor/translation-editor-naviagtor-factory.service.mjs +31 -0
  252. package/esm2022/widgets/cockpit/index.mjs +4 -2
  253. package/esm2022/widgets/cockpit-exports/index.mjs +8 -1
  254. package/esm2022/widgets/definitions/alarms/alarm-list/index.mjs +6 -2
  255. package/esm2022/widgets/definitions/alarms/all-critical-alarms/index.mjs +6 -2
  256. package/esm2022/widgets/definitions/alarms/recent-alarms/index.mjs +6 -2
  257. package/esm2022/widgets/definitions/datapoints-table/c8y-ngx-components-widgets-definitions-datapoints-table.mjs +5 -0
  258. package/esm2022/widgets/definitions/datapoints-table/index.mjs +34 -0
  259. package/esm2022/widgets/definitions/index.mjs +2 -1
  260. package/esm2022/widgets/definitions/map/index.mjs +4 -2
  261. package/esm2022/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.mjs +29 -15
  262. package/esm2022/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.mjs +57 -25
  263. package/esm2022/widgets/implementations/alarms/alarm-list-widget.model.mjs +2 -1
  264. package/esm2022/widgets/implementations/alarms/alarm-widget-alarms-reload.component.mjs +19 -21
  265. package/esm2022/widgets/implementations/datapoints-table/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +5 -0
  266. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.mjs +383 -0
  267. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.service.mjs +124 -0
  268. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/adjust-aggregated-time-range.pipe.mjs +191 -0
  269. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/apply-range-class.pipe.mjs +36 -0
  270. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/column-title.pipe.mjs +45 -0
  271. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.mjs +116 -0
  272. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/datapoints-table.component.mjs +116 -0
  273. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/dynamic-column.directive.mjs +43 -0
  274. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.mjs +282 -0
  275. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.service.mjs +430 -0
  276. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-view/virtual-scroll-listener.directive.mjs +75 -0
  277. package/esm2022/widgets/implementations/datapoints-table/datapoints-table-widget.model.mjs +76 -0
  278. package/esm2022/widgets/implementations/datapoints-table/datapoints-table.service.mjs +52 -0
  279. package/esm2022/widgets/implementations/datapoints-table/date-range-picker.component.mjs +68 -0
  280. package/esm2022/widgets/implementations/datapoints-table/index.mjs +10 -0
  281. package/esm2022/widgets/implementations/map/map-widget-config.component.mjs +19 -11
  282. package/esm2022/widgets/implementations/map/map-widget.component.mjs +20 -2
  283. package/esm2022/widgets/implementations/map/map-widget.model.mjs +1 -1
  284. package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs +12 -16
  285. package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs.map +1 -1
  286. package/fesm2022/c8y-ngx-components-alarms-devicemanagement.mjs +14 -17
  287. package/fesm2022/c8y-ngx-components-alarms-devicemanagement.mjs.map +1 -1
  288. package/fesm2022/c8y-ngx-components-alarms.mjs +203 -185
  289. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  290. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +135 -91
  291. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  292. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +37 -13
  293. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  294. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +1928 -0
  295. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -0
  296. package/fesm2022/c8y-ngx-components-device-list.mjs +24 -5
  297. package/fesm2022/c8y-ngx-components-device-list.mjs.map +1 -1
  298. package/fesm2022/c8y-ngx-components-map.mjs +52 -19
  299. package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
  300. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs +181 -0
  301. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs.map +1 -0
  302. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +236 -0
  303. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs.map +1 -0
  304. package/fesm2022/c8y-ngx-components-translation-editor.mjs +46 -0
  305. package/fesm2022/c8y-ngx-components-translation-editor.mjs.map +1 -0
  306. package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs +7 -0
  307. package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs.map +1 -1
  308. package/fesm2022/c8y-ngx-components-widgets-cockpit.mjs +3 -1
  309. package/fesm2022/c8y-ngx-components-widgets-cockpit.mjs.map +1 -1
  310. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs +5 -1
  311. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs.map +1 -1
  312. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs +5 -1
  313. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs.map +1 -1
  314. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs +5 -1
  315. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs.map +1 -1
  316. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs +41 -0
  317. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs.map +1 -0
  318. package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs +3 -1
  319. package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs.map +1 -1
  320. package/fesm2022/c8y-ngx-components-widgets-definitions.mjs +1 -0
  321. package/fesm2022/c8y-ngx-components-widgets-definitions.mjs.map +1 -1
  322. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +101 -58
  323. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  324. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +1967 -0
  325. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -0
  326. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +37 -11
  327. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
  328. package/fesm2022/c8y-ngx-components.mjs +5476 -4396
  329. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  330. package/locales/de.po +289 -18
  331. package/locales/en.po +12 -0
  332. package/locales/en_US.po +3 -0
  333. package/locales/es.po +253 -18
  334. package/locales/fr.po +253 -18
  335. package/locales/ja_JP.po +282 -18
  336. package/locales/locales.pot +257 -18
  337. package/locales/nl.po +253 -18
  338. package/locales/pl.po +253 -18
  339. package/locales/pt_BR.po +253 -18
  340. package/map/cluster-map.component.d.ts +8 -3
  341. package/map/cluster-map.component.d.ts.map +1 -1
  342. package/map/map-status.component.d.ts +0 -3
  343. package/map/map-status.component.d.ts.map +1 -1
  344. package/map/map.component.d.ts +4 -2
  345. package/map/map.component.d.ts.map +1 -1
  346. package/map/map.model.d.ts +2 -1
  347. package/map/map.model.d.ts.map +1 -1
  348. package/package.json +1 -1
  349. package/translation-editor/c8y-ngx-components-translation-editor.d.ts.map +1 -0
  350. package/translation-editor/data/c8y-ngx-components-translation-editor-data.d.ts.map +1 -0
  351. package/translation-editor/data/index.d.ts +2 -0
  352. package/translation-editor/data/index.d.ts.map +1 -0
  353. package/translation-editor/data/translation-store.service.d.ts +61 -0
  354. package/translation-editor/data/translation-store.service.d.ts.map +1 -0
  355. package/translation-editor/index.d.ts +2 -0
  356. package/translation-editor/index.d.ts.map +1 -0
  357. package/translation-editor/lazy/add-translation-modal/add-translation-modal.component.d.ts +30 -0
  358. package/translation-editor/lazy/add-translation-modal/add-translation-modal.component.d.ts.map +1 -0
  359. package/translation-editor/lazy/c8y-ngx-components-translation-editor-lazy.d.ts.map +1 -0
  360. package/translation-editor/lazy/index.d.ts +2 -0
  361. package/translation-editor/lazy/index.d.ts.map +1 -0
  362. package/translation-editor/lazy/manage-translation-cell-renderer/manage-translation-cell-renderer.component.d.ts +22 -0
  363. package/translation-editor/lazy/manage-translation-cell-renderer/manage-translation-cell-renderer.component.d.ts.map +1 -0
  364. package/translation-editor/lazy/translation-editor/translation-editor.component.d.ts +34 -0
  365. package/translation-editor/lazy/translation-editor/translation-editor.component.d.ts.map +1 -0
  366. package/translation-editor/translation-editor-naviagtor-factory.service.d.ts +11 -0
  367. package/translation-editor/translation-editor-naviagtor-factory.service.d.ts.map +1 -0
  368. package/widgets/cockpit/index.d.ts +13 -0
  369. package/widgets/cockpit/index.d.ts.map +1 -1
  370. package/widgets/cockpit-exports/index.d.ts +6 -0
  371. package/widgets/cockpit-exports/index.d.ts.map +1 -1
  372. package/widgets/definitions/alarms/alarm-list/index.d.ts +2 -0
  373. package/widgets/definitions/alarms/alarm-list/index.d.ts.map +1 -1
  374. package/widgets/definitions/alarms/all-critical-alarms/index.d.ts +2 -0
  375. package/widgets/definitions/alarms/all-critical-alarms/index.d.ts.map +1 -1
  376. package/widgets/definitions/alarms/recent-alarms/index.d.ts +2 -0
  377. package/widgets/definitions/alarms/recent-alarms/index.d.ts.map +1 -1
  378. package/widgets/definitions/datapoints-table/c8y-ngx-components-widgets-definitions-datapoints-table.d.ts.map +1 -0
  379. package/widgets/definitions/datapoints-table/index.d.ts +14 -0
  380. package/widgets/definitions/datapoints-table/index.d.ts.map +1 -0
  381. package/widgets/definitions/index.d.ts +1 -0
  382. package/widgets/definitions/index.d.ts.map +1 -1
  383. package/widgets/definitions/map/index.d.ts +2 -1
  384. package/widgets/definitions/map/index.d.ts.map +1 -1
  385. package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts +5 -9
  386. package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts.map +1 -1
  387. package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts +17 -10
  388. package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts.map +1 -1
  389. package/widgets/implementations/alarms/alarm-list-widget.model.d.ts +5 -1
  390. package/widgets/implementations/alarms/alarm-list-widget.model.d.ts.map +1 -1
  391. package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts +5 -11
  392. package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts.map +1 -1
  393. package/widgets/implementations/datapoints-table/c8y-ngx-components-widgets-implementations-datapoints-table.d.ts.map +1 -0
  394. package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.d.ts +129 -0
  395. package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.component.d.ts.map +1 -0
  396. package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.service.d.ts +56 -0
  397. package/widgets/implementations/datapoints-table/datapoints-table-config/datapoints-table-config.service.d.ts.map +1 -0
  398. package/widgets/implementations/datapoints-table/datapoints-table-view/adjust-aggregated-time-range.pipe.d.ts +88 -0
  399. package/widgets/implementations/datapoints-table/datapoints-table-view/adjust-aggregated-time-range.pipe.d.ts.map +1 -0
  400. package/widgets/implementations/datapoints-table/datapoints-table-view/apply-range-class.pipe.d.ts +19 -0
  401. package/widgets/implementations/datapoints-table/datapoints-table-view/apply-range-class.pipe.d.ts.map +1 -0
  402. package/widgets/implementations/datapoints-table/datapoints-table-view/column-title.pipe.d.ts +26 -0
  403. package/widgets/implementations/datapoints-table/datapoints-table-view/column-title.pipe.d.ts.map +1 -0
  404. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.d.ts +63 -0
  405. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.d.ts.map +1 -0
  406. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/datapoints-table.component.d.ts +38 -0
  407. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/datapoints-table.component.d.ts.map +1 -0
  408. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/dynamic-column.directive.d.ts +13 -0
  409. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/dynamic-column.directive.d.ts.map +1 -0
  410. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts +123 -0
  411. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts.map +1 -0
  412. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.service.d.ts +196 -0
  413. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.service.d.ts.map +1 -0
  414. package/widgets/implementations/datapoints-table/datapoints-table-view/virtual-scroll-listener.directive.d.ts +41 -0
  415. package/widgets/implementations/datapoints-table/datapoints-table-view/virtual-scroll-listener.directive.d.ts.map +1 -0
  416. package/widgets/implementations/datapoints-table/datapoints-table-widget.model.d.ts +175 -0
  417. package/widgets/implementations/datapoints-table/datapoints-table-widget.model.d.ts.map +1 -0
  418. package/widgets/implementations/datapoints-table/datapoints-table.service.d.ts +12 -0
  419. package/widgets/implementations/datapoints-table/datapoints-table.service.d.ts.map +1 -0
  420. package/widgets/implementations/datapoints-table/date-range-picker.component.d.ts +34 -0
  421. package/widgets/implementations/datapoints-table/date-range-picker.component.d.ts.map +1 -0
  422. package/widgets/implementations/datapoints-table/index.d.ts +10 -0
  423. package/widgets/implementations/datapoints-table/index.d.ts.map +1 -0
  424. package/widgets/implementations/map/map-widget-config.component.d.ts +4 -4
  425. package/widgets/implementations/map/map-widget-config.component.d.ts.map +1 -1
  426. package/widgets/implementations/map/map-widget.component.d.ts +8 -3
  427. package/widgets/implementations/map/map-widget.component.d.ts.map +1 -1
  428. package/widgets/implementations/map/map-widget.model.d.ts +4 -3
  429. package/widgets/implementations/map/map-widget.model.d.ts.map +1 -1
  430. package/core/i18n/translate.loader.d.ts +0 -31
  431. package/core/i18n/translate.loader.d.ts.map +0 -1
  432. package/esm2022/core/i18n/translate.loader.mjs +0 -71
@@ -16,5 +16,10 @@ export var ViewContext;
16
16
  ViewContext["Service"] = "service/:id";
17
17
  ViewContext["DatapointLibrary"] = "datapointlibrary/:id";
18
18
  ViewContext["Simulators"] = "simulators/:id";
19
+ ViewContext["Alarms"] = "alarms/:id";
20
+ ViewContext["GroupAlarms"] = "group/:id/alarms/:id";
21
+ ViewContext["DeviceAlarms"] = "device/:id/alarms/:id";
22
+ ViewContext["ServiceAlarms"] = "service/:id/alarms/:id";
23
+ ViewContext["SimulatorsAlarms"] = "simulators/:id/alarms/:id";
19
24
  })(ViewContext || (ViewContext = {}));
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9yb3V0ZXIvcm91dGVyLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWtCQTs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLFdBY1g7QUFkRCxXQUFZLFdBQVc7SUFDckIsb0NBQXFCLENBQUE7SUFDckIsa0NBQW1CLENBQUE7SUFDbkIsaUNBQWtCLENBQUE7SUFDbEIscUVBQXNELENBQUE7SUFDdEQsK0RBQWdELENBQUE7SUFDaEQsNkRBQThDLENBQUE7SUFDOUMsd0VBQXlELENBQUE7SUFDekQsb0VBQXFELENBQUE7SUFDckQscUNBQXNCLENBQUE7SUFDdEIscUNBQXNCLENBQUE7SUFDdEIsc0NBQXVCLENBQUE7SUFDdkIsd0RBQXlDLENBQUE7SUFDekMsNENBQTZCLENBQUE7QUFDL0IsQ0FBQyxFQWRXLFdBQVcsS0FBWCxXQUFXLFFBY3RCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGUgYXMgbmdSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJSWRlbnRpZmllZCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IEV4dGVuc2lvbkZhY3RvcnkgfSBmcm9tICcuLi9jb21tb24vZXh0ZW5zaW9uLWhvb2tzJztcbmltcG9ydCB7IFRhYiwgVGFiV2l0aFRlbXBsYXRlIH0gZnJvbSAnLi4vdGFicy90YWIubW9kZWwnO1xuaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBDb250ZXh0RGF0YSB7XG4gIC8qKlxuICAgKiBUaGUgZGF0YSBvZiB0aGlzIHJvdXRlLiBFLmcuIG9uIFZpZXdDb250ZXh0LkRldmljZSBhbiBtYW5hZ2VkIG9iamVjdFxuICAgKiBvZiB0aGUgZGV2aWNlLlxuICAgKi9cbiAgY29udGV4dERhdGE6IElJZGVudGlmaWVkO1xuICAvKipcbiAgICogVGhlIGN1cnJlbnQgVmlld0NvbnRleHQgdXNlZC5cbiAgICovXG4gIGNvbnRleHQ6IFZpZXdDb250ZXh0O1xufVxuXG4vKipcbiAqIFRoZSBjb250ZXh0IHJvdXRlcyB0aGF0IGFyZSBzdXBwb3J0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uLlxuICovXG5leHBvcnQgZW51bSBWaWV3Q29udGV4dCB7XG4gIERldmljZSA9ICdkZXZpY2UvOmlkJyxcbiAgR3JvdXAgPSAnZ3JvdXAvOmlkJyxcbiAgVXNlciA9ICd1c2Vycy86aWQnLFxuICBBcHBsaWNhdGlvbiA9ICdlY29zeXN0ZW0vYXBwbGljYXRpb24vYXBwbGljYXRpb25zLzppZCcsXG4gIEV4dGVuc2lvbiA9ICdlY29zeXN0ZW0vZXh0ZW5zaW9uL2V4dGVuc2lvbnMvOmlkJyxcbiAgRmVhdHVyZSA9ICdlY29zeXN0ZW0vYXBwbGljYXRpb24vZmVhdHVyZXMvOmlkJyxcbiAgTWljcm9zZXJ2aWNlID0gJ2Vjb3N5c3RlbS9taWNyb3NlcnZpY2UvbWljcm9zZXJ2aWNlcy86aWQnLFxuICBTdWJzY3JpYmVkQXBwbGljYXRpb25zID0gJ3N1YnNjcmliZWRBcHBsaWNhdGlvbnMvOmlkJyxcbiAgVGVuYW50ID0gJ3RlbmFudHMvOmlkJyxcbiAgUmVwb3J0ID0gJ3JlcG9ydHMvOmlkJyxcbiAgU2VydmljZSA9ICdzZXJ2aWNlLzppZCcsXG4gIERhdGFwb2ludExpYnJhcnkgPSAnZGF0YXBvaW50bGlicmFyeS86aWQnLFxuICBTaW11bGF0b3JzID0gJ3NpbXVsYXRvcnMvOmlkJ1xufVxuXG4vKipcbiAqIEEgcm91dGUgdGhhdCBjYW4gYmUgYWRkZWQgdmlhIHRoZSBIT09LX1JPVVRFLlxuICovXG5leHBvcnQgdHlwZSBSb3V0ZSA9IFJvdXRlRGVmYXVsdCB8IFJvdXRlV2l0aFRhYiB8IFJvdXRlV2l0aENvbXBvbmVudDtcblxuLyoqXG4gKiBBIHVzdWFsIHJvdXRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGVEZWZhdWx0IGV4dGVuZHMgbmdSb3V0ZSB7XG4gIGNvbnRleHQ/OiBuZXZlcjtcbiAgbGFiZWw/OiBuZXZlcjtcbiAgdGFicz86IG5ldmVyO1xufVxuXG5pbnRlcmZhY2UgUm91dGVCYXNlIHtcbiAgLyoqXG4gICAqIFdoaWNoIG9yZGVyIHNob3VsZCBiZSB1c2VkLlxuICAgKi9cbiAgcHJpb3JpdHk/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIElkIHRvIGlkZW50aWZ5IHNwZWNpZmljIGZlYXR1cmUuXG4gICAqL1xuICBmZWF0dXJlSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBpbmplY3RvciB0byB1c2UuIElmIG5vdCBzZXQsIHRoZSBkZWZhdWx0IHJvb3QgaW5qZWN0b3Igd2lsbCBiZSB1c2VkLlxuICAgKi9cbiAgX2luamVjdG9yPzogSW5qZWN0b3I7XG59XG5cbi8qKlxuICogQSBjb21wb25lbnQgYmFzZWQgY29udGV4dCByb3V0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb3V0ZVdpdGhDb21wb25lbnQgZXh0ZW5kcyBuZ1JvdXRlLCBSb3V0ZUJhc2Uge1xuICAvKipcbiAgICogVGhlIHZpZXcgY29udGV4dCB0byBhZGQgdGhpcyByb3V0ZSB0by5cbiAgICovXG4gIGNvbnRleHQ6IFZpZXdDb250ZXh0O1xuICBsYWJlbD86IG5ldmVyO1xufVxuXG4vKipcbiAqIEEgdGFiIHRoYXQgaXMgYWRkZWQgdG8gYSBjb250ZXh0IHJvdXRlIGFuZCBvcGVucyB0aGUgYXNzb2NpYXRlZFxuICogY29tcG9uZW50IG9uIHRoaXMgY29udGV4dC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb3V0ZVdpdGhUYWJcbiAgZXh0ZW5kcyBPbWl0PFRhYldpdGhUZW1wbGF0ZSwgJ2luamVjdG9yJyB8ICdwYXRoJyB8ICdjb21wb25lbnQnPixcbiAgICBuZ1JvdXRlLFxuICAgIFJvdXRlQmFzZSB7XG4gIC8qKlxuICAgKiBUaGUgdmlldyBjb250ZXh0IHRvIGFkZCB0aGlzIHJvdXRlIHRvLlxuICAgKi9cbiAgY29udGV4dDogVmlld0NvbnRleHQ7XG5cbiAgLyoqXG4gICAqIEFsbG93IHRvIGVtaXQgbXVsdGlwbGUgdGFicyBvbiBvbmUgY29udGV4dCByb3V0ZS5cbiAgICovXG4gIHRhYnM/OiBUYWJbXTtcbn1cblxuZXhwb3J0IHR5cGUgUm91dGVGYWN0b3J5ID0gUm91dGUgfCBSb3V0ZVtdIHwgRXh0ZW5zaW9uRmFjdG9yeTxSb3V0ZT47XG4iXX0=
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9yb3V0ZXIvcm91dGVyLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWtCQTs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLFdBbUJYO0FBbkJELFdBQVksV0FBVztJQUNyQixvQ0FBcUIsQ0FBQTtJQUNyQixrQ0FBbUIsQ0FBQTtJQUNuQixpQ0FBa0IsQ0FBQTtJQUNsQixxRUFBc0QsQ0FBQTtJQUN0RCwrREFBZ0QsQ0FBQTtJQUNoRCw2REFBOEMsQ0FBQTtJQUM5Qyx3RUFBeUQsQ0FBQTtJQUN6RCxvRUFBcUQsQ0FBQTtJQUNyRCxxQ0FBc0IsQ0FBQTtJQUN0QixxQ0FBc0IsQ0FBQTtJQUN0QixzQ0FBdUIsQ0FBQTtJQUN2Qix3REFBeUMsQ0FBQTtJQUN6Qyw0Q0FBNkIsQ0FBQTtJQUM3QixvQ0FBcUIsQ0FBQTtJQUNyQixtREFBb0MsQ0FBQTtJQUNwQyxxREFBc0MsQ0FBQTtJQUN0Qyx1REFBd0MsQ0FBQTtJQUN4Qyw2REFBOEMsQ0FBQTtBQUNoRCxDQUFDLEVBbkJXLFdBQVcsS0FBWCxXQUFXLFFBbUJ0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJvdXRlIGFzIG5nUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSUlkZW50aWZpZWQsIElSZXN1bHQsIElSZXN1bHRMaXN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgRXh0ZW5zaW9uRmFjdG9yeSB9IGZyb20gJy4uL2NvbW1vbi9leHRlbnNpb24taG9va3MnO1xuaW1wb3J0IHsgVGFiLCBUYWJXaXRoVGVtcGxhdGUgfSBmcm9tICcuLi90YWJzL3RhYi5tb2RlbCc7XG5pbXBvcnQgeyBJbmplY3RvciwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRleHREYXRhIHtcbiAgLyoqXG4gICAqIFRoZSBkYXRhIG9mIHRoaXMgcm91dGUuIEUuZy4gb24gVmlld0NvbnRleHQuRGV2aWNlIGFuIG1hbmFnZWQgb2JqZWN0XG4gICAqIG9mIHRoZSBkZXZpY2UuXG4gICAqL1xuICBjb250ZXh0RGF0YTogSUlkZW50aWZpZWQ7XG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBWaWV3Q29udGV4dCB1c2VkLlxuICAgKi9cbiAgY29udGV4dDogVmlld0NvbnRleHQ7XG59XG5cbi8qKlxuICogVGhlIGNvbnRleHQgcm91dGVzIHRoYXQgYXJlIHN1cHBvcnRlZCBieSB0aGUgYXBwbGljYXRpb24uXG4gKi9cbmV4cG9ydCBlbnVtIFZpZXdDb250ZXh0IHtcbiAgRGV2aWNlID0gJ2RldmljZS86aWQnLFxuICBHcm91cCA9ICdncm91cC86aWQnLFxuICBVc2VyID0gJ3VzZXJzLzppZCcsXG4gIEFwcGxpY2F0aW9uID0gJ2Vjb3N5c3RlbS9hcHBsaWNhdGlvbi9hcHBsaWNhdGlvbnMvOmlkJyxcbiAgRXh0ZW5zaW9uID0gJ2Vjb3N5c3RlbS9leHRlbnNpb24vZXh0ZW5zaW9ucy86aWQnLFxuICBGZWF0dXJlID0gJ2Vjb3N5c3RlbS9hcHBsaWNhdGlvbi9mZWF0dXJlcy86aWQnLFxuICBNaWNyb3NlcnZpY2UgPSAnZWNvc3lzdGVtL21pY3Jvc2VydmljZS9taWNyb3NlcnZpY2VzLzppZCcsXG4gIFN1YnNjcmliZWRBcHBsaWNhdGlvbnMgPSAnc3Vic2NyaWJlZEFwcGxpY2F0aW9ucy86aWQnLFxuICBUZW5hbnQgPSAndGVuYW50cy86aWQnLFxuICBSZXBvcnQgPSAncmVwb3J0cy86aWQnLFxuICBTZXJ2aWNlID0gJ3NlcnZpY2UvOmlkJyxcbiAgRGF0YXBvaW50TGlicmFyeSA9ICdkYXRhcG9pbnRsaWJyYXJ5LzppZCcsXG4gIFNpbXVsYXRvcnMgPSAnc2ltdWxhdG9ycy86aWQnLFxuICBBbGFybXMgPSAnYWxhcm1zLzppZCcsXG4gIEdyb3VwQWxhcm1zID0gJ2dyb3VwLzppZC9hbGFybXMvOmlkJyxcbiAgRGV2aWNlQWxhcm1zID0gJ2RldmljZS86aWQvYWxhcm1zLzppZCcsXG4gIFNlcnZpY2VBbGFybXMgPSAnc2VydmljZS86aWQvYWxhcm1zLzppZCcsXG4gIFNpbXVsYXRvcnNBbGFybXMgPSAnc2ltdWxhdG9ycy86aWQvYWxhcm1zLzppZCdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWaWV3Q29udGV4U2VydmljZUNvbmZpZyB7XG4gIFtrZXk6IHN0cmluZ106IHtcbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIGlmIHRoZSByb3V0ZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSB0aGUgcm91dGVyIHNlcnZpY2Ugb3JcbiAgICAgKiBpZiB0aGUgcm91dGUgaXMgc29tZXdoZXJlIGRlZmluZWQgYnkgdGhlIGRldmVsb3Blci5cbiAgICAgKi9cbiAgICBhdXRvUm91dGU6IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogVGhlIHBhdGggdXNlZCB0byByb3V0ZS5cbiAgICAgKi9cbiAgICBwYXRoOiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGhlIEBjOHkvY2xpZW50IHNlcnZpY2UgdG8gdXNlIGZvciB0aGlzIGNvbnRleHQuXG4gICAgICovXG4gICAgc2VydmljZTogVHlwZTx7XG4gICAgICBkZXRhaWwoXG4gICAgICAgIGVudGl0eU9ySWQ6IHN0cmluZyB8IG51bWJlciB8IElJZGVudGlmaWVkLFxuICAgICAgICBmaWx0ZXI/OiBvYmplY3RcbiAgICAgICk6IFByb21pc2U8SVJlc3VsdDxJSWRlbnRpZmllZD4+O1xuICAgICAgbGlzdChmaWx0ZXI/OiBvYmplY3QpOiBQcm9taXNlPElSZXN1bHRMaXN0PElJZGVudGlmaWVkPj47XG4gICAgfT47XG4gIH07XG59XG5cbi8qKlxuICogQSBWaWV3Q29udGV4dCBiYXNlIHJvdXRlLlxuICovXG5leHBvcnQgdHlwZSBWaWV3Q29udGV4dFJvb3RSb3V0ZSA9IFJvdXRlICYgeyByb290Q29udGV4dDogVmlld0NvbnRleHQgfTtcblxuLyoqXG4gKiBBIHJvdXRlIHRoYXQgaXMgYWRkZWQgdG8gYSBjZXJ0YWluIHZpZXcgY29udGV4dC5cbiAqL1xuZXhwb3J0IHR5cGUgVmlld0NvbnRleHRSb3V0ZSA9IFJvdXRlICYgeyBjb250ZXh0OiBWaWV3Q29udGV4dCB9O1xuXG4vKipcbiAqIEEgcm91dGUgdGhhdCBjYW4gYmUgYWRkZWQgdmlhIHRoZSBIT09LX1JPVVRFLlxuICovXG5leHBvcnQgdHlwZSBSb3V0ZSA9IFJvdXRlRGVmYXVsdCB8IFJvdXRlV2l0aFRhYiB8IFJvdXRlV2l0aENvbXBvbmVudDtcblxuLyoqXG4gKiBBIHVzdWFsIHJvdXRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGVEZWZhdWx0IGV4dGVuZHMgbmdSb3V0ZSB7XG4gIGNvbnRleHQ/OiBuZXZlcjtcbiAgbGFiZWw/OiBuZXZlcjtcbiAgdGFicz86IG5ldmVyO1xufVxuXG5pbnRlcmZhY2UgUm91dGVCYXNlIHtcbiAgLyoqXG4gICAqIFdoaWNoIG9yZGVyIHNob3VsZCBiZSB1c2VkLlxuICAgKi9cbiAgcHJpb3JpdHk/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIElkIHRvIGlkZW50aWZ5IHNwZWNpZmljIGZlYXR1cmUuXG4gICAqL1xuICBmZWF0dXJlSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBpbmplY3RvciB0byB1c2UuIElmIG5vdCBzZXQsIHRoZSBkZWZhdWx0IHJvb3QgaW5qZWN0b3Igd2lsbCBiZSB1c2VkLlxuICAgKi9cbiAgX2luamVjdG9yPzogSW5qZWN0b3I7XG59XG5cbi8qKlxuICogQSBjb21wb25lbnQgYmFzZWQgY29udGV4dCByb3V0ZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb3V0ZVdpdGhDb21wb25lbnQgZXh0ZW5kcyBuZ1JvdXRlLCBSb3V0ZUJhc2Uge1xuICAvKipcbiAgICogVGhlIHZpZXcgY29udGV4dCB0byBhZGQgdGhpcyByb3V0ZSB0by5cbiAgICovXG4gIGNvbnRleHQ6IFZpZXdDb250ZXh0O1xuICBsYWJlbD86IG5ldmVyO1xufVxuXG4vKipcbiAqIEEgdGFiIHRoYXQgaXMgYWRkZWQgdG8gYSBjb250ZXh0IHJvdXRlIGFuZCBvcGVucyB0aGUgYXNzb2NpYXRlZFxuICogY29tcG9uZW50IG9uIHRoaXMgY29udGV4dC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSb3V0ZVdpdGhUYWJcbiAgZXh0ZW5kcyBPbWl0PFRhYldpdGhUZW1wbGF0ZSwgJ2luamVjdG9yJyB8ICdwYXRoJyB8ICdjb21wb25lbnQnPixcbiAgICBuZ1JvdXRlLFxuICAgIFJvdXRlQmFzZSB7XG4gIC8qKlxuICAgKiBUaGUgdmlldyBjb250ZXh0IHRvIGFkZCB0aGlzIHJvdXRlIHRvLlxuICAgKi9cbiAgY29udGV4dDogVmlld0NvbnRleHQ7XG5cbiAgLyoqXG4gICAqIEFsbG93IHRvIGVtaXQgbXVsdGlwbGUgdGFicyBvbiBvbmUgY29udGV4dCByb3V0ZS5cbiAgICovXG4gIHRhYnM/OiBUYWJbXTtcbn1cblxuZXhwb3J0IHR5cGUgUm91dGVGYWN0b3J5ID0gUm91dGUgfCBSb3V0ZVtdIHwgRXh0ZW5zaW9uRmFjdG9yeTxSb3V0ZT47XG4iXX0=
@@ -1,13 +1,15 @@
1
1
  import { NgModule } from '@angular/core';
2
2
  import { RouterModule as NgRouterModule } from '@angular/router';
3
- import { RouterService } from './router.service';
4
- import { ContextRouteComponent } from './context-route.component';
5
- import { HeaderModule } from '../header/header.module';
6
3
  import { CommonModule } from '../common/common.module';
4
+ import { HeaderModule } from '../header/header.module';
5
+ import { ContextRouteComponent } from './context-route.component';
7
6
  import { ContextRouteGuard } from './context-route.guard';
8
- import { ViewContext } from './router.model';
9
- import { RouterTabsResolver } from './router-tabs.resolver';
10
7
  import { EmptyComponent } from './empty.component';
8
+ import { RouterTabsResolver } from './router-tabs.resolver';
9
+ import { ViewContext } from './router.model';
10
+ import { RouterService } from './router.service';
11
+ import { ScopedContextRouteService } from './scoped-context-route.service';
12
+ import { ViewContextServices } from './view-context.service';
11
13
  import * as i0 from "@angular/core";
12
14
  import * as i1 from "./router.service";
13
15
  export const extraRoutes = [
@@ -20,17 +22,21 @@ export const extraRoutes = [
20
22
  component: EmptyComponent
21
23
  }
22
24
  ];
25
+ export const viewContextRoutes = [];
23
26
  // tslint:disable-next-line: forin
24
27
  for (const key in ViewContext) {
25
28
  const context = ViewContext[key];
26
- extraRoutes.push({
27
- path: context,
29
+ if (!ViewContextServices.isAutoRoute(context)) {
30
+ continue;
31
+ }
32
+ viewContextRoutes.push({
33
+ path: ViewContextServices.getPath(context),
34
+ rootContext: context,
28
35
  component: ContextRouteComponent,
29
36
  canActivate: [ContextRouteGuard],
30
37
  data: { context, contextData: {} },
31
38
  resolve: {
32
39
  tabs: RouterTabsResolver
33
- // contextData: ContextRouteGuard
34
40
  }
35
41
  });
36
42
  }
@@ -59,10 +65,10 @@ export class RouterModule {
59
65
  // initialNavigation disabled by default because of MTM-44047 (routes triggered before the actual login)
60
66
  config.initialNavigation = config.initialNavigation ?? 'disabled';
61
67
  config.useHash = config.useHash ?? true;
62
- const ngRouterModule = NgRouterModule.forRoot([...routes, ...extraRoutes], config);
68
+ const ngRouterModule = NgRouterModule.forRoot([...routes, ...extraRoutes, ...viewContextRoutes], config);
63
69
  return {
64
70
  ngModule: RouterModule,
65
- providers: [...ngRouterModule.providers]
71
+ providers: [...ngRouterModule.providers, ScopedContextRouteService]
66
72
  };
67
73
  }
68
74
  constructor(
@@ -72,13 +78,14 @@ export class RouterModule {
72
78
  }
73
79
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: RouterModule, deps: [{ token: i1.RouterService }], target: i0.ɵɵFactoryTarget.NgModule }); }
74
80
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: RouterModule, declarations: [ContextRouteComponent, EmptyComponent], imports: [NgRouterModule, HeaderModule, CommonModule] }); }
75
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: RouterModule, imports: [NgRouterModule, HeaderModule, CommonModule] }); }
81
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: RouterModule, providers: [ScopedContextRouteService], imports: [NgRouterModule, HeaderModule, CommonModule] }); }
76
82
  }
77
83
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: RouterModule, decorators: [{
78
84
  type: NgModule,
79
85
  args: [{
80
86
  declarations: [ContextRouteComponent, EmptyComponent],
81
- imports: [NgRouterModule, HeaderModule, CommonModule]
87
+ imports: [NgRouterModule, HeaderModule, CommonModule],
88
+ providers: [ScopedContextRouteService]
82
89
  }]
83
90
  }], ctorParameters: () => [{ type: i1.RouterService }] });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvcm91dGVyL3JvdXRlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFnQixZQUFZLElBQUksY0FBYyxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDdkYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBUyxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBRW5ELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBWTtJQUNsQztRQUNFLElBQUksRUFBRSxXQUFXO1FBQ2pCLFNBQVMsRUFBRSxjQUFjO0tBQzFCO0lBQ0Q7UUFDRSxJQUFJLEVBQUUsYUFBYTtRQUNuQixTQUFTLEVBQUUsY0FBYztLQUMxQjtDQUNGLENBQUM7QUFDRixrQ0FBa0M7QUFDbEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztJQUM5QixNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakMsV0FBVyxDQUFDLElBQUksQ0FBQztRQUNmLElBQUksRUFBRSxPQUFPO1FBQ2IsU0FBUyxFQUFFLHFCQUFxQjtRQUNoQyxXQUFXLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztRQUNoQyxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRTtRQUNsQyxPQUFPLEVBQUU7WUFDUCxJQUFJLEVBQUUsa0JBQWtCO1lBQ3hCLGlDQUFpQztTQUNsQztLQUNGLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFLSCxNQUFNLE9BQU8sWUFBWTtJQUN2Qjs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQWlCLEVBQUUsRUFBRSxNQUFxQjtRQUN2RCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUNELHdHQUF3RztRQUN4RyxNQUFNLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixJQUFJLFVBQVUsQ0FBQztRQUNsRSxNQUFNLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDO1FBRXhDLE1BQU0sY0FBYyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLE1BQU0sRUFBRSxHQUFHLFdBQVcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRW5GLE9BQU87WUFDTCxRQUFRLEVBQUUsWUFBWTtZQUN0QixTQUFTLEVBQUUsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxTQUFTLENBQUM7U0FDekMsQ0FBQztJQUNKLENBQUM7SUFFRDtJQUNFLG1GQUFtRjtJQUMzRSxhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtJQUNuQyxDQUFDOzhHQTNCTyxZQUFZOytHQUFaLFlBQVksaUJBSFIscUJBQXFCLEVBQUUsY0FBYyxhQUMxQyxjQUFjLEVBQUUsWUFBWSxFQUFFLFlBQVk7K0dBRXpDLFlBQVksWUFGYixjQUFjLEVBQUUsWUFBWSxFQUFFLFlBQVk7OzJGQUV6QyxZQUFZO2tCQUp4QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLHFCQUFxQixFQUFFLGNBQWMsQ0FBQztvQkFDckQsT0FBTyxFQUFFLENBQUMsY0FBYyxFQUFFLFlBQVksRUFBRSxZQUFZLENBQUM7aUJBQ3REIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEV4dHJhT3B0aW9ucywgUm91dGVyTW9kdWxlIGFzIE5nUm91dGVyTW9kdWxlLCBSb3V0ZXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgUm91dGVyU2VydmljZSB9IGZyb20gJy4vcm91dGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29udGV4dFJvdXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb250ZXh0LXJvdXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBIZWFkZXJNb2R1bGUgfSBmcm9tICcuLi9oZWFkZXIvaGVhZGVyLm1vZHVsZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICcuLi9jb21tb24vY29tbW9uLm1vZHVsZSc7XG5pbXBvcnQgeyBDb250ZXh0Um91dGVHdWFyZCB9IGZyb20gJy4vY29udGV4dC1yb3V0ZS5ndWFyZCc7XG5pbXBvcnQgeyBWaWV3Q29udGV4dCwgUm91dGUgfSBmcm9tICcuL3JvdXRlci5tb2RlbCc7XG5pbXBvcnQgeyBSb3V0ZXJUYWJzUmVzb2x2ZXIgfSBmcm9tICcuL3JvdXRlci10YWJzLnJlc29sdmVyJztcbmltcG9ydCB7IEVtcHR5Q29tcG9uZW50IH0gZnJvbSAnLi9lbXB0eS5jb21wb25lbnQnO1xuXG5leHBvcnQgY29uc3QgZXh0cmFSb3V0ZXM6IFJvdXRlW10gPSBbXG4gIHtcbiAgICBwYXRoOiAndXNlcnMvbmV3JyxcbiAgICBjb21wb25lbnQ6IEVtcHR5Q29tcG9uZW50XG4gIH0sXG4gIHtcbiAgICBwYXRoOiAndGVuYW50cy9uZXcnLFxuICAgIGNvbXBvbmVudDogRW1wdHlDb21wb25lbnRcbiAgfVxuXTtcbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogZm9yaW5cbmZvciAoY29uc3Qga2V5IGluIFZpZXdDb250ZXh0KSB7XG4gIGNvbnN0IGNvbnRleHQgPSBWaWV3Q29udGV4dFtrZXldO1xuICBleHRyYVJvdXRlcy5wdXNoKHtcbiAgICBwYXRoOiBjb250ZXh0LFxuICAgIGNvbXBvbmVudDogQ29udGV4dFJvdXRlQ29tcG9uZW50LFxuICAgIGNhbkFjdGl2YXRlOiBbQ29udGV4dFJvdXRlR3VhcmRdLFxuICAgIGRhdGE6IHsgY29udGV4dCwgY29udGV4dERhdGE6IHt9IH0sXG4gICAgcmVzb2x2ZToge1xuICAgICAgdGFiczogUm91dGVyVGFic1Jlc29sdmVyXG4gICAgICAvLyBjb250ZXh0RGF0YTogQ29udGV4dFJvdXRlR3VhcmRcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIEEgQzhZIHJvdXRlciBpbXBsZW1lbnRhdGlvbi4gSXQgaW1wbGVtZW50cyBzb21lIGRlZmF1bHQgcm91dGVzIG5lZWRlZFxuICogYXMgd2VsbCBhcyBjb250ZXh0IHJvdXRlcy4gQ29udGV4dCByb3V0ZXMgYXJlIHVzZWZ1bCwgaWYgeW91IHdhbnQgdG9cbiAqIHVzZSBjb250ZXh0IGRhdGEgb24gYSBjZXJ0YWluIHZpZXcgKGUuZy4gYSBkZXZpY2UpLCB0aGVuIHRoaXMgcm91dGVzXG4gKiBhdXRvbWF0aWNhbGx5IHJlc29sdmUgdGhlIGFzc29jaWF0ZWQgbWFuYWdlZCBvYmplY3QuXG4gKlxuICogWW91IGNhbiB1c2UgdGhpcyBpbiBjb21iaW5hdGlvbiBvZiB0aGUgQW5ndWxhciBkZWZhdWx0IFJvdXRlck1vZHVsZVxuICogb3IgdXNlIG9ubHkgdGhpcyBtb2R1bGUuIENvbnRleHQgcm91dGVzIGNhbiBvbmx5IGJlIGFkZGVkIHZpYSB0aGVcbiAqIEhPT0tfUk9VVEVTIGhvb2suXG4gKi9cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0NvbnRleHRSb3V0ZUNvbXBvbmVudCwgRW1wdHlDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbTmdSb3V0ZXJNb2R1bGUsIEhlYWRlck1vZHVsZSwgQ29tbW9uTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBSb3V0ZXJNb2R1bGUge1xuICAvKipcbiAgICogU2FtZSBpbnRlcmZhY2UgYXMgQGFuZ3VsYXIvcm91dGVyIG1vZHVsZS5cbiAgICogU2V0cyBgaW5pdGlhbE5hdmlnYXRpb25gIGFsd2F5cyB0byBgZGlzYWJsZWRgIGFuZCBgdXNlSGFzaGAgYWx3YXlzIHRvIGB0cnVlYC5cbiAgICogQHBhcmFtIHJvdXRlcyBUaGUgY29uZmlndXJlZCByb3V0ZXMuXG4gICAqIEBwYXJhbSBjb25maWcgVGhlIHJvdXRlciBkZWZhdWx0IGNvbmZpZ3VyYXRpb24uXG4gICAqIEByZXR1cm5zIFRoZSBtb2R1bGUgYW5kIHByb3ZpZGVycy5cbiAgICovXG4gIHN0YXRpYyBmb3JSb290KHJvdXRlczogUm91dGVzID0gW10sIGNvbmZpZz86IEV4dHJhT3B0aW9ucyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8Um91dGVyTW9kdWxlPiB7XG4gICAgaWYgKCFjb25maWcpIHtcbiAgICAgIGNvbmZpZyA9IHt9O1xuICAgIH1cbiAgICAvLyBpbml0aWFsTmF2aWdhdGlvbiBkaXNhYmxlZCBieSBkZWZhdWx0IGJlY2F1c2Ugb2YgTVRNLTQ0MDQ3IChyb3V0ZXMgdHJpZ2dlcmVkIGJlZm9yZSB0aGUgYWN0dWFsIGxvZ2luKVxuICAgIGNvbmZpZy5pbml0aWFsTmF2aWdhdGlvbiA9IGNvbmZpZy5pbml0aWFsTmF2aWdhdGlvbiA/PyAnZGlzYWJsZWQnO1xuICAgIGNvbmZpZy51c2VIYXNoID0gY29uZmlnLnVzZUhhc2ggPz8gdHJ1ZTtcblxuICAgIGNvbnN0IG5nUm91dGVyTW9kdWxlID0gTmdSb3V0ZXJNb2R1bGUuZm9yUm9vdChbLi4ucm91dGVzLCAuLi5leHRyYVJvdXRlc10sIGNvbmZpZyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IFJvdXRlck1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogWy4uLm5nUm91dGVyTW9kdWxlLnByb3ZpZGVyc11cbiAgICB9O1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgLy8gRGVjbGFyZWQgYnV0IG5ldmVyIHVzZWQgaXMgaW50ZW5kZWQ6IHRvIGFsd2F5cyBoYXZlIGEgaW5zdGFuY2Ugb2YgUm91dGVyU2VydmljZS5cbiAgICBwcml2YXRlIHJvdXRlclNlcnZpY2U6IFJvdXRlclNlcnZpY2VcbiAgKSB7fVxufVxuIl19
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvcm91dGVyL3JvdXRlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFnQixZQUFZLElBQUksY0FBYyxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDdkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFTLFdBQVcsRUFBd0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUMxRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7OztBQUU3RCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQVk7SUFDbEM7UUFDRSxJQUFJLEVBQUUsV0FBVztRQUNqQixTQUFTLEVBQUUsY0FBYztLQUMxQjtJQUNEO1FBQ0UsSUFBSSxFQUFFLGFBQWE7UUFDbkIsU0FBUyxFQUFFLGNBQWM7S0FDMUI7Q0FDRixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQTJCLEVBQUUsQ0FBQztBQUM1RCxrQ0FBa0M7QUFDbEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztJQUM5QixNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQzlDLFNBQVM7SUFDWCxDQUFDO0lBQ0QsaUJBQWlCLENBQUMsSUFBSSxDQUFDO1FBQ3JCLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQzFDLFdBQVcsRUFBRSxPQUFPO1FBQ3BCLFNBQVMsRUFBRSxxQkFBcUI7UUFDaEMsV0FBVyxFQUFFLENBQUMsaUJBQWlCLENBQUM7UUFDaEMsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUU7UUFDbEMsT0FBTyxFQUFFO1lBQ1AsSUFBSSxFQUFFLGtCQUFrQjtTQUN6QjtLQUNGLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFNSCxNQUFNLE9BQU8sWUFBWTtJQUN2Qjs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQWlCLEVBQUUsRUFBRSxNQUFxQjtRQUN2RCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUNELHdHQUF3RztRQUN4RyxNQUFNLENBQUMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixJQUFJLFVBQVUsQ0FBQztRQUNsRSxNQUFNLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDO1FBRXhDLE1BQU0sY0FBYyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQzNDLENBQUMsR0FBRyxNQUFNLEVBQUUsR0FBRyxXQUFXLEVBQUUsR0FBRyxpQkFBaUIsQ0FBQyxFQUNqRCxNQUFNLENBQ1AsQ0FBQztRQUVGLE9BQU87WUFDTCxRQUFRLEVBQUUsWUFBWTtZQUN0QixTQUFTLEVBQUUsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxTQUFTLEVBQUUseUJBQXlCLENBQUM7U0FDcEUsQ0FBQztJQUNKLENBQUM7SUFFRDtJQUNFLG1GQUFtRjtJQUMzRSxhQUE0QjtRQUE1QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtJQUNuQyxDQUFDOzhHQTlCTyxZQUFZOytHQUFaLFlBQVksaUJBSlIscUJBQXFCLEVBQUUsY0FBYyxhQUMxQyxjQUFjLEVBQUUsWUFBWSxFQUFFLFlBQVk7K0dBR3pDLFlBQVksYUFGWixDQUFDLHlCQUF5QixDQUFDLFlBRDVCLGNBQWMsRUFBRSxZQUFZLEVBQUUsWUFBWTs7MkZBR3pDLFlBQVk7a0JBTHhCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMscUJBQXFCLEVBQUUsY0FBYyxDQUFDO29CQUNyRCxPQUFPLEVBQUUsQ0FBQyxjQUFjLEVBQUUsWUFBWSxFQUFFLFlBQVksQ0FBQztvQkFDckQsU0FBUyxFQUFFLENBQUMseUJBQXlCLENBQUM7aUJBQ3ZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEV4dHJhT3B0aW9ucywgUm91dGVyTW9kdWxlIGFzIE5nUm91dGVyTW9kdWxlLCBSb3V0ZXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnLi4vY29tbW9uL2NvbW1vbi5tb2R1bGUnO1xuaW1wb3J0IHsgSGVhZGVyTW9kdWxlIH0gZnJvbSAnLi4vaGVhZGVyL2hlYWRlci5tb2R1bGUnO1xuaW1wb3J0IHsgQ29udGV4dFJvdXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb250ZXh0LXJvdXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb250ZXh0Um91dGVHdWFyZCB9IGZyb20gJy4vY29udGV4dC1yb3V0ZS5ndWFyZCc7XG5pbXBvcnQgeyBFbXB0eUNvbXBvbmVudCB9IGZyb20gJy4vZW1wdHkuY29tcG9uZW50JztcbmltcG9ydCB7IFJvdXRlclRhYnNSZXNvbHZlciB9IGZyb20gJy4vcm91dGVyLXRhYnMucmVzb2x2ZXInO1xuaW1wb3J0IHsgUm91dGUsIFZpZXdDb250ZXh0LCBWaWV3Q29udGV4dFJvb3RSb3V0ZSB9IGZyb20gJy4vcm91dGVyLm1vZGVsJztcbmltcG9ydCB7IFJvdXRlclNlcnZpY2UgfSBmcm9tICcuL3JvdXRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNjb3BlZENvbnRleHRSb3V0ZVNlcnZpY2UgfSBmcm9tICcuL3Njb3BlZC1jb250ZXh0LXJvdXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmlld0NvbnRleHRTZXJ2aWNlcyB9IGZyb20gJy4vdmlldy1jb250ZXh0LnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgZXh0cmFSb3V0ZXM6IFJvdXRlW10gPSBbXG4gIHtcbiAgICBwYXRoOiAndXNlcnMvbmV3JyxcbiAgICBjb21wb25lbnQ6IEVtcHR5Q29tcG9uZW50XG4gIH0sXG4gIHtcbiAgICBwYXRoOiAndGVuYW50cy9uZXcnLFxuICAgIGNvbXBvbmVudDogRW1wdHlDb21wb25lbnRcbiAgfVxuXTtcblxuZXhwb3J0IGNvbnN0IHZpZXdDb250ZXh0Um91dGVzOiBWaWV3Q29udGV4dFJvb3RSb3V0ZVtdID0gW107XG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IGZvcmluXG5mb3IgKGNvbnN0IGtleSBpbiBWaWV3Q29udGV4dCkge1xuICBjb25zdCBjb250ZXh0ID0gVmlld0NvbnRleHRba2V5XTtcbiAgaWYgKCFWaWV3Q29udGV4dFNlcnZpY2VzLmlzQXV0b1JvdXRlKGNvbnRleHQpKSB7XG4gICAgY29udGludWU7XG4gIH1cbiAgdmlld0NvbnRleHRSb3V0ZXMucHVzaCh7XG4gICAgcGF0aDogVmlld0NvbnRleHRTZXJ2aWNlcy5nZXRQYXRoKGNvbnRleHQpLFxuICAgIHJvb3RDb250ZXh0OiBjb250ZXh0LFxuICAgIGNvbXBvbmVudDogQ29udGV4dFJvdXRlQ29tcG9uZW50LFxuICAgIGNhbkFjdGl2YXRlOiBbQ29udGV4dFJvdXRlR3VhcmRdLFxuICAgIGRhdGE6IHsgY29udGV4dCwgY29udGV4dERhdGE6IHt9IH0sXG4gICAgcmVzb2x2ZToge1xuICAgICAgdGFiczogUm91dGVyVGFic1Jlc29sdmVyXG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBBIEM4WSByb3V0ZXIgaW1wbGVtZW50YXRpb24uIEl0IGltcGxlbWVudHMgc29tZSBkZWZhdWx0IHJvdXRlcyBuZWVkZWRcbiAqIGFzIHdlbGwgYXMgY29udGV4dCByb3V0ZXMuIENvbnRleHQgcm91dGVzIGFyZSB1c2VmdWwsIGlmIHlvdSB3YW50IHRvXG4gKiB1c2UgY29udGV4dCBkYXRhIG9uIGEgY2VydGFpbiB2aWV3IChlLmcuIGEgZGV2aWNlKSwgdGhlbiB0aGlzIHJvdXRlc1xuICogYXV0b21hdGljYWxseSByZXNvbHZlIHRoZSBhc3NvY2lhdGVkIG1hbmFnZWQgb2JqZWN0LlxuICpcbiAqIFlvdSBjYW4gdXNlIHRoaXMgaW4gY29tYmluYXRpb24gb2YgdGhlIEFuZ3VsYXIgZGVmYXVsdCBSb3V0ZXJNb2R1bGVcbiAqIG9yIHVzZSBvbmx5IHRoaXMgbW9kdWxlLiBDb250ZXh0IHJvdXRlcyBjYW4gb25seSBiZSBhZGRlZCB2aWEgdGhlXG4gKiBIT09LX1JPVVRFUyBob29rLlxuICovXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtDb250ZXh0Um91dGVDb21wb25lbnQsIEVtcHR5Q29tcG9uZW50XSxcbiAgaW1wb3J0czogW05nUm91dGVyTW9kdWxlLCBIZWFkZXJNb2R1bGUsIENvbW1vbk1vZHVsZV0sXG4gIHByb3ZpZGVyczogW1Njb3BlZENvbnRleHRSb3V0ZVNlcnZpY2VdXG59KVxuZXhwb3J0IGNsYXNzIFJvdXRlck1vZHVsZSB7XG4gIC8qKlxuICAgKiBTYW1lIGludGVyZmFjZSBhcyBAYW5ndWxhci9yb3V0ZXIgbW9kdWxlLlxuICAgKiBTZXRzIGBpbml0aWFsTmF2aWdhdGlvbmAgYWx3YXlzIHRvIGBkaXNhYmxlZGAgYW5kIGB1c2VIYXNoYCBhbHdheXMgdG8gYHRydWVgLlxuICAgKiBAcGFyYW0gcm91dGVzIFRoZSBjb25maWd1cmVkIHJvdXRlcy5cbiAgICogQHBhcmFtIGNvbmZpZyBUaGUgcm91dGVyIGRlZmF1bHQgY29uZmlndXJhdGlvbi5cbiAgICogQHJldHVybnMgVGhlIG1vZHVsZSBhbmQgcHJvdmlkZXJzLlxuICAgKi9cbiAgc3RhdGljIGZvclJvb3Qocm91dGVzOiBSb3V0ZXMgPSBbXSwgY29uZmlnPzogRXh0cmFPcHRpb25zKTogTW9kdWxlV2l0aFByb3ZpZGVyczxSb3V0ZXJNb2R1bGU+IHtcbiAgICBpZiAoIWNvbmZpZykge1xuICAgICAgY29uZmlnID0ge307XG4gICAgfVxuICAgIC8vIGluaXRpYWxOYXZpZ2F0aW9uIGRpc2FibGVkIGJ5IGRlZmF1bHQgYmVjYXVzZSBvZiBNVE0tNDQwNDcgKHJvdXRlcyB0cmlnZ2VyZWQgYmVmb3JlIHRoZSBhY3R1YWwgbG9naW4pXG4gICAgY29uZmlnLmluaXRpYWxOYXZpZ2F0aW9uID0gY29uZmlnLmluaXRpYWxOYXZpZ2F0aW9uID8/ICdkaXNhYmxlZCc7XG4gICAgY29uZmlnLnVzZUhhc2ggPSBjb25maWcudXNlSGFzaCA/PyB0cnVlO1xuXG4gICAgY29uc3QgbmdSb3V0ZXJNb2R1bGUgPSBOZ1JvdXRlck1vZHVsZS5mb3JSb290KFxuICAgICAgWy4uLnJvdXRlcywgLi4uZXh0cmFSb3V0ZXMsIC4uLnZpZXdDb250ZXh0Um91dGVzXSxcbiAgICAgIGNvbmZpZ1xuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IFJvdXRlck1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogWy4uLm5nUm91dGVyTW9kdWxlLnByb3ZpZGVycywgU2NvcGVkQ29udGV4dFJvdXRlU2VydmljZV1cbiAgICB9O1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgLy8gRGVjbGFyZWQgYnV0IG5ldmVyIHVzZWQgaXMgaW50ZW5kZWQ6IHRvIGFsd2F5cyBoYXZlIGEgaW5zdGFuY2Ugb2YgUm91dGVyU2VydmljZS5cbiAgICBwcml2YXRlIHJvdXRlclNlcnZpY2U6IFJvdXRlclNlcnZpY2VcbiAgKSB7fVxufVxuIl19
@@ -1,12 +1,12 @@
1
1
  import { importProvidersFrom, Injectable, InjectionToken, Injector } from '@angular/core';
2
2
  import { Router, ROUTES } from '@angular/router';
3
- import { ViewContext } from './router.model';
4
- import { ContextRouteService } from './context-route.service';
5
- import { distinctUntilChanged, filter, shareReplay, take } from 'rxjs/operators';
6
- import { fromTriggerOnce, hookGeneric, getInjectedHooks, InjectionType, ExtensionPointWithoutStateForPlugins } from '../common/extension-hooks';
7
- import { PluginsResolveService } from '../plugins';
8
3
  import { flatten } from 'lodash';
4
+ import { distinctUntilChanged, filter, shareReplay, take } from 'rxjs/operators';
5
+ import { ExtensionPointWithoutStateForPlugins, fromTriggerOnce, getInjectedHooks, hookGeneric, InjectionType } from '../common/extension-hooks';
9
6
  import { OptionsService } from '../common/options.service';
7
+ import { PluginsResolveService } from '../plugins';
8
+ import { ContextRouteService } from './context-route.service';
9
+ import { ViewContext } from './router.model';
10
10
  import * as i0 from "@angular/core";
11
11
  import * as i1 from "@angular/router";
12
12
  import * as i2 from "./context-route.service";
@@ -114,16 +114,17 @@ export class RouterService extends ExtensionPointWithoutStateForPlugins {
114
114
  // Empty route needs to be last as of navigation to angularjs routes
115
115
  // if ** route hit, the angularjs routes are loaded.
116
116
  const emptyRoute = this.router.config.find(r => r.path === '**');
117
+ const rootContextRoutes = this.findAllRootContextRoutes([...this.router.config, ...routes]);
117
118
  this.router.resetConfig([
118
119
  ...this.router.config.filter(r => r.path !== '**'),
119
- ...routes.map((r) => this.convertRoute(this.router.config, r)),
120
+ ...routes.map((r) => this.convertRoute(rootContextRoutes, r)),
120
121
  emptyRoute
121
122
  ].filter(Boolean));
122
123
  }
123
- convertRoute(initialConfig, route) {
124
+ convertRoute(rootContextRoutes, route) {
124
125
  if (route.context) {
125
- initialConfig.forEach((r) => {
126
- if (r.data && r.data.context === route.context) {
126
+ rootContextRoutes.forEach((r) => {
127
+ if (r.rootContext === route.context) {
127
128
  r.children = [route, ...(r.children || [])];
128
129
  }
129
130
  });
@@ -131,6 +132,19 @@ export class RouterService extends ExtensionPointWithoutStateForPlugins {
131
132
  }
132
133
  return route;
133
134
  }
135
+ findAllRootContextRoutes(routes) {
136
+ const result = [];
137
+ routes.forEach(route => {
138
+ if (route.rootContext) {
139
+ result.push(route);
140
+ }
141
+ if (route.children) {
142
+ const childRoutes = this.findAllRootContextRoutes(route.children);
143
+ result.push(...childRoutes);
144
+ }
145
+ });
146
+ return result;
147
+ }
134
148
  resolveRouterForChildRoutes(moduleRef, remoteNgModule) {
135
149
  // NOTE: stolen from lazy loaded routes from Angular itself.
136
150
  // https://github.com/angular/angular/blob/da58801f95c66c201e332189af25702bdd722f3f/packages/router/src/router_config_loader.ts#L103-L108
@@ -152,4 +166,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
152
166
  providedIn: 'root'
153
167
  }]
154
168
  }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.Router }, { type: i2.ContextRouteService }, { type: i3.PluginsResolveService }, { type: i4.OptionsService }] });
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3JvdXRlci9yb3V0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLFVBQVUsRUFDVixjQUFjLEVBQ2QsUUFBUSxFQUVULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUF1QixXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUc5RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRixPQUFPLEVBRUwsZUFBZSxFQUVmLFdBQVcsRUFDWCxnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLG9DQUFvQyxFQUVyQyxNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2pDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7O0FBc0IzRDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxjQUFjLENBQWUsWUFBWSxDQUFDLENBQUM7QUFFekU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FBQyxLQUE2QixFQUFFLE9BQXFDO0lBQzVGLE9BQU8sV0FBVyxDQUFRLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDeEQsQ0FBQztBQUVEOzs7R0FHRztBQUlILE1BQU0sT0FBTyxhQUFjLFNBQVEsb0NB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SSxDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQy9DLENBQUMsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDOUMsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTztRQUNULENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTywyQkFBMkIsQ0FBQyxTQUEyQixFQUFFLGNBQW1CO1FBQ2xGLDREQUE0RDtRQUM1RCx5SUFBeUk7UUFDekksTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFOUYsSUFBSSxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3pCLE1BQU0saUJBQWlCLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDOUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hELE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDbkMsQ0FBQztJQUNILENBQUM7OEdBdEhVLGFBQWE7a0hBQWIsYUFBYSxjQUZaLE1BQU07OzJGQUVQLGFBQWE7a0JBSHpCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgaW1wb3J0UHJvdmlkZXJzRnJvbSxcbiAgSW5qZWN0YWJsZSxcbiAgSW5qZWN0aW9uVG9rZW4sXG4gIEluamVjdG9yLFxuICBOZ01vZHVsZVJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciwgUk9VVEVTIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFJvdXRlRmFjdG9yeSwgUm91dGUsIFZpZXdDb250ZXh0IH0gZnJvbSAnLi9yb3V0ZXIubW9kZWwnO1xuaW1wb3J0IHsgQ29udGV4dFJvdXRlU2VydmljZSB9IGZyb20gJy4vY29udGV4dC1yb3V0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgc2hhcmVSZXBsYXksIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBFeHRlbnNpb25GYWN0b3J5LFxuICBmcm9tVHJpZ2dlck9uY2UsXG4gIEdlbmVyaWNIb29rVHlwZSxcbiAgaG9va0dlbmVyaWMsXG4gIGdldEluamVjdGVkSG9va3MsXG4gIEluamVjdGlvblR5cGUsXG4gIEV4dGVuc2lvblBvaW50V2l0aG91dFN0YXRlRm9yUGx1Z2lucyxcbiAgR2VuZXJpY0hvb2tPcHRpb25zXG59IGZyb20gJy4uL2NvbW1vbi9leHRlbnNpb24taG9va3MnO1xuaW1wb3J0IHsgUGx1Z2luc1Jlc29sdmVTZXJ2aWNlIH0gZnJvbSAnLi4vcGx1Z2lucyc7XG5pbXBvcnQgeyBmbGF0dGVuIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IE9wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL29wdGlvbnMuc2VydmljZSc7XG5cbi8qKlxuICogQW4gZXh0ZW5zaW9uIEhPT0sgY2FuIHVzZSBlaXRoZXIgYSBwdXJlIHZhbHVlOlxuICogYGBgdHlwZXNjcmlwdFxuICogIHsgcHJvdmlkZTogSE9PS19YLCB1c2VWYWx1ZTogeyAuLi5ob29rVmFsdWUgfSwgbXVsdGk6IHRydWUgfVxuICogYGBgXG4gKlxuICogT3IgYW4gYXJyYXkgdG8gZGlyZWN0bHkgcmVnaXN0ZXIgbXVsdGlwbGU6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAgeyBwcm92aWRlOiBIT09LX1gsIHVzZVZhbHVlOiBbeyAuLi5ob29rVmFsdWVzIH1dLCBtdWx0aTogdHJ1ZSB9XG4gKiBgYGBcbiAqXG4gKiBPciBhbiBFeHRlbnNpb25GYWN0b3J5IHdoaWNoIGFsbG93cyB0byBkZWZpbmUgYSBnZXQoKSBmdW5jdGlvbi4gVGhpcyBmdW5jdGlvblxuICogZ2V0cyBjYWxsZWQgb24gZWFjaCBuYXZpZ2F0aW9uIHdpdGggdGhlIGN1cnJlbnQgcm91dGUgYW5kIGNhbiByZXR1cm4gdmFsdWVzXG4gKiBhc3luYyAob2JzZXJ2YWJsZSBvciBwcm9taXNlKS5cbiAqIGBgYHR5cGVzY3JpcHRcbiAqICB7IHByb3ZpZGU6IEhPT0tfWCwgdXNlRmFjdG9yeTogeyBnZXQ6IChyb3V0ZSkgPT4gZG9Tb21ldGhpbmdBc3luYyhyb3V0ZSkgfSwgbXVsdGk6IHRydWUgfVxuICogYGBgXG4gKi9cbmV4cG9ydCB0eXBlIFJvdXRlRXh0ZW5zaW9uID0gUm91dGUgfCBSb3V0ZVtdIHwgRXh0ZW5zaW9uRmFjdG9yeTxSb3V0ZT47XG5cbi8qKlxuICogQSBob29rIHRvIHVzZSBmb3IgTXVsdGkgUHJvdmlkZXIgZXh0ZW5zaW9uLlxuICogQGRlcHJlY2F0ZWQgQ29uc2lkZXIgdXNpbmcgdGhlIGBob29rUm91dGVgIGZ1bmN0aW9uIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjb25zdCBIT09LX1JPVVRFID0gbmV3IEluamVjdGlvblRva2VuPFJvdXRlRmFjdG9yeT4oJ0hPT0tfUk9VVEUnKTtcblxuLyoqXG4gKiBZb3UgY2FuIGVpdGhlciBwcm92aWRlIGEgc2luZ2xlIGBSb3V0ZWAgYXMgcGFyYW1ldGVyOlxuICogYGBgdHlwZXNjcmlwdFxuICogIGhvb2tSb3V0ZSguLi4pXG4gKiBgYGBcbiAqXG4gKiBPciBhbiBhcnJheSB0byBkaXJlY3RseSByZWdpc3RlciBtdWx0aXBsZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqICBob29rUm91dGUoWy4uLl0pXG4gKiBgYGBcbiAqXG4gKiBPciB5b3UgcHJvdmlkZSBhbiBTZXJ2aWNlIHRoYXQgaW1wbGVtZW50cyBgRXh0ZW5zaW9uRmFjdG9yeTxSb3V0ZT5gXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAgZXhwb3J0IGNsYXNzIE15Um91dGVGYWN0b3J5IGltcGxlbWVudHMgRXh0ZW5zaW9uRmFjdG9yeTxSb3V0ZT4gey4uLn1cbiAqICAuLi5cbiAqICBob29rUm91dGUoTXlSb3V0ZUZhY3RvcnkpXG4gKiBgYGBcbiAqIEEgdHlwZWQgYWx0ZXJuYXRpdmUgdG8gYEhPT0tfUk9VVEVgLlxuICogQHBhcmFtIHJvdXRlIFRoZSBgUm91dGVgJ3Mgb3IgYEV4dGVuc2lvbkZhY3RvcnlgIHRvIGJlIHByb3ZpZGVkLlxuICogQHJldHVybnMgQW4gYFByb3ZpZGVyYCB0byBiZSBwcm92aWRlZCBpbiB5b3VyIG1vZHVsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhvb2tSb3V0ZShyb3V0ZTogR2VuZXJpY0hvb2tUeXBlPFJvdXRlPiwgb3B0aW9ucz86IFBhcnRpYWw8R2VuZXJpY0hvb2tPcHRpb25zPikge1xuICByZXR1cm4gaG9va0dlbmVyaWM8Um91dGU+KHJvdXRlLCBIT09LX1JPVVRFLCBvcHRpb25zKTtcbn1cblxuLyoqXG4gKiBBIHNlcnZpY2Ugd2hpY2ggZGVmaW5lcyByb3V0ZXMgZm9yIHRoZSBhcHBsaWNhdGlvbi4gWW91IGNhbiB1c2VcbiAqIEhPT0tfUk9VVEVTIG9yIHBhc3NcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUm91dGVyU2VydmljZSBleHRlbmRzIEV4dGVuc2lvblBvaW50V2l0aG91dFN0YXRlRm9yUGx1Z2luczxSb3V0ZT4ge1xuICByZWFkb25seSBzdGF0ZSA9IG5ldyBNYXA8c3RyaW5nLCBSb3V0ZT4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICByb290SW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHB1YmxpYyByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIGNvbnRleHRSb3V0ZVNlcnZpY2U6IENvbnRleHRSb3V0ZVNlcnZpY2UsXG4gICAgcGx1Z2luczogUGx1Z2luc1Jlc29sdmVTZXJ2aWNlLFxuICAgIG9wdGlvbnM6IE9wdGlvbnNTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKHJvb3RJbmplY3RvciwgcGx1Z2lucyk7XG4gICAgdGhpcy5pdGVtcyQgPSB0aGlzLnNldHVwSXRlbXNPYnNlcnZhYmxlKCk7XG5cbiAgICAvLyBXZSBhcmUgZG9pbmcgYSBzZWxmIHN1YnNjcmlwdGlvbiB0byBhZGQgdGhlIG5ldyByb3V0ZXNcbiAgICAvLyB0byB0aGUgcm91dGVyIGNvbmZpZ3VyYXRpb24uXG4gICAgdGhpcy5pdGVtcyQuc3Vic2NyaWJlKChyb3V0ZXM6IFJvdXRlW10pID0+IHtcbiAgICAgIGNvbnN0IHRvQWRkUm91dGVzID0gcm91dGVzLmZpbHRlcigocm91dGU6IFJvdXRlKSA9PiB7XG4gICAgICAgIGNvbnN0IHBhdGggPSBgJHtyb3V0ZS5jb250ZXh0IHx8ICcnfSR7cm91dGUucGF0aH1gO1xuICAgICAgICBjb25zdCBpc0FscmVhZHlBZGRlZCA9IHRoaXMuc3RhdGUuaGFzKHBhdGgpO1xuICAgICAgICBpZiAoIWlzQWxyZWFkeUFkZGVkKSB7XG4gICAgICAgICAgdGhpcy5zdGF0ZS5zZXQocGF0aCwgcm91dGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAhaXNBbHJlYWR5QWRkZWQ7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuYWRkUm91dGUodG9BZGRSb3V0ZXMpO1xuICAgIH0pO1xuXG4gICAgcGx1Z2lucy5wbHVnaW5EZXRhaWxzJC5zdWJzY3JpYmUoKHsgbW9kdWxlUmVmLCByZW1vdGVOZ01vZHVsZSB9KSA9PiB7XG4gICAgICB0aGlzLnJlc29sdmVSb3V0ZXJGb3JDaGlsZFJvdXRlcyhtb2R1bGVSZWYsIHJlbW90ZU5nTW9kdWxlKTtcbiAgICB9KTtcblxuICAgIC8vIG9ubHkgbmVlZGVkIGluIGNhc2Ugb2YgcHVyZSBhbmd1bGFyIGFwcGxpY2F0aW9uXG4gICAgLy8gb3RoZXJ3aXNlIGhhbmRsZWQgYnkgYnJpZGdlIHNlcnZpY2VcbiAgICBpZiAoIW9wdGlvbnMudXBncmFkZSkge1xuICAgICAgcGx1Z2lucy5hbGxQbHVnaW5zTG9hZGVkJFxuICAgICAgICAucGlwZShcbiAgICAgICAgICBmaWx0ZXIodG1wID0+ICEhdG1wKSxcbiAgICAgICAgICB0YWtlKDEpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yb3V0ZXIuaW5pdGlhbE5hdmlnYXRpb24oKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlZnJlc2ggdGhlIGN1cnJlbnQgY29udGV4dFxuICAgKi9cbiAgcmVmcmVzaCgpIHtcbiAgICBzdXBlci5yZWZyZXNoKCk7XG4gICAgdGhpcy5jb250ZXh0Um91dGVTZXJ2aWNlLnJlZnJlc2hDb250ZXh0KCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgbmV3IHJvdXRlIHRvIHRoZSByb3V0ZXIgY29uZmlndXJhdGlvbiBvciBhIGNvbnRleHQuXG4gICAqIEBwYXJhbSByb3V0ZSBUaGUgcm91dGUgdG8gYWRkXG4gICAqL1xuICBhZGRSb3V0ZShyb3V0ZTogUm91dGUgfCBSb3V0ZVtdKSB7XG4gICAgdGhpcy5hZGRSb3V0ZXMoQXJyYXkuaXNBcnJheShyb3V0ZSkgPyByb3V0ZSA6IFtyb3V0ZV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIE1PIGlzIGFuIGdyb3VwIG9yIGFuIGRldmljZSBhbmQgcmV0dXJuc1xuICAgKiB0aGUgY29ycmVjdCBocmVmIHRvIGxpbmsgY29ycmVjdGx5IHRvIHRoYXQgTU8uXG4gICAqIEBwYXJhbSBncm91cE9yRGV2aWNlIFRoZSBNTyBvZiBhIGdyb3VwIG9yIHRoZSBkZXZpY2UuXG4gICAqIEBwYXJhbSBwcmVmaXggSG93IHNob3VsZCB0aGUgbGluayBiZSBwcmVmaXhlZC5cbiAgICovXG4gIGdldEhyZWYoZ3JvdXBPckRldmljZTogSU1hbmFnZWRPYmplY3QsIHByZWZpeCA9ICcjLycpOiBzdHJpbmcge1xuICAgIGlmIChncm91cE9yRGV2aWNlLmM4eV9Jc0RldmljZUdyb3VwIHx8IGdyb3VwT3JEZXZpY2UuYzh5X0lzRHluYW1pY0dyb3VwKSB7XG4gICAgICByZXR1cm4gYCR7cHJlZml4fSR7Vmlld0NvbnRleHQuR3JvdXAucmVwbGFjZSgnOmlkJywgZ3JvdXBPckRldmljZS5pZCl9YDtcbiAgICB9XG4gICAgcmV0dXJuIGAke3ByZWZpeH0ke1ZpZXdDb250ZXh0LkRldmljZS5yZXBsYWNlKCc6aWQnLCBncm91cE9yRGV2aWNlLmlkKX1gO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNldHVwSXRlbXNPYnNlcnZhYmxlKCk6IE9ic2VydmFibGU8Um91dGVbXT4ge1xuICAgIHJldHVybiBmcm9tVHJpZ2dlck9uY2U8Um91dGU+KHRoaXMucm91dGVyLCB0aGlzLnJlZnJlc2gkLCBbXG4gICAgICBnZXRJbmplY3RlZEhvb2tzPFJvdXRlPihIT09LX1JPVVRFLCB0aGlzLmluamVjdG9ycywgSW5qZWN0aW9uVHlwZS5ST1VURSksXG4gICAgICAoKSA9PiB0aGlzLmZhY3Rvcmllc1xuICAgIF0pLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgc2hhcmVSZXBsYXkoMSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRSb3V0ZXMocm91dGVzKSB7XG4gICAgLy8gRW1wdHkgcm91dGUgbmVlZHMgdG8gYmUgbGFzdCBhcyBvZiBuYXZpZ2F0aW9uIHRvIGFuZ3VsYXJqcyByb3V0ZXNcbiAgICAvLyBpZiAqKiByb3V0ZSBoaXQsIHRoZSBhbmd1bGFyanMgcm91dGVzIGFyZSBsb2FkZWQuXG4gICAgY29uc3QgZW1wdHlSb3V0ZSA9IHRoaXMucm91dGVyLmNvbmZpZy5maW5kKHIgPT4gci5wYXRoID09PSAnKionKTtcbiAgICB0aGlzLnJvdXRlci5yZXNldENvbmZpZyhcbiAgICAgIFtcbiAgICAgICAgLi4udGhpcy5yb3V0ZXIuY29uZmlnLmZpbHRlcihyID0+IHIucGF0aCAhPT0gJyoqJyksXG4gICAgICAgIC4uLnJvdXRlcy5tYXAoKHI6IFJvdXRlKSA9PiB0aGlzLmNvbnZlcnRSb3V0ZSh0aGlzLnJvdXRlci5jb25maWcsIHIpKSxcbiAgICAgICAgZW1wdHlSb3V0ZVxuICAgICAgXS5maWx0ZXIoQm9vbGVhbilcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0Um91dGUoaW5pdGlhbENvbmZpZywgcm91dGU6IFJvdXRlKSB7XG4gICAgaWYgKHJvdXRlLmNvbnRleHQpIHtcbiAgICAgIGluaXRpYWxDb25maWcuZm9yRWFjaCgocjogUm91dGUpID0+IHtcbiAgICAgICAgaWYgKHIuZGF0YSAmJiByLmRhdGEuY29udGV4dCA9PT0gcm91dGUuY29udGV4dCkge1xuICAgICAgICAgIHIuY2hpbGRyZW4gPSBbcm91dGUsIC4uLihyLmNoaWxkcmVuIHx8IFtdKV07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZXR1cm4gcm91dGU7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVSb3V0ZXJGb3JDaGlsZFJvdXRlcyhtb2R1bGVSZWY6IE5nTW9kdWxlUmVmPGFueT4sIHJlbW90ZU5nTW9kdWxlOiBhbnkpIHtcbiAgICAvLyBOT1RFOiBzdG9sZW4gZnJvbSBsYXp5IGxvYWRlZCByb3V0ZXMgZnJvbSBBbmd1bGFyIGl0c2VsZi5cbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvZGE1ODgwMWY5NWM2NmMyMDFlMzMyMTg5YWYyNTcwMmJkZDcyMmYzZi9wYWNrYWdlcy9yb3V0ZXIvc3JjL3JvdXRlcl9jb25maWdfbG9hZGVyLnRzI0wxMDMtTDEwOFxuICAgIGNvbnN0IHJhd1JvdXRlcyA9IGZsYXR0ZW4obW9kdWxlUmVmLmluamVjdG9yLmdldChST1VURVMsIFtdLCB7IHNlbGY6IHRydWUsIG9wdGlvbmFsOiB0cnVlIH0pKTtcblxuICAgIGlmIChyYXdSb3V0ZXMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3Qgcm91dGVXaXRoSW5qZWN0b3IgPSByYXdSb3V0ZXMubWFwKHJvdXRlID0+IHtcbiAgICAgICAgcm91dGUucHJvdmlkZXJzID0gW2ltcG9ydFByb3ZpZGVyc0Zyb20ocmVtb3RlTmdNb2R1bGUpXTtcbiAgICAgICAgcmV0dXJuIHJvdXRlO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmFkZFJvdXRlKHJvdXRlV2l0aEluamVjdG9yKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
169
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3JvdXRlci9yb3V0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLFVBQVUsRUFDVixjQUFjLEVBQ2QsUUFBUSxFQUVULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxNQUFNLEVBQVUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUVqQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRixPQUFPLEVBRUwsb0NBQW9DLEVBQ3BDLGVBQWUsRUFHZixnQkFBZ0IsRUFDaEIsV0FBVyxFQUNYLGFBQWEsRUFDZCxNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUF1QixXQUFXLEVBQXdCLE1BQU0sZ0JBQWdCLENBQUM7Ozs7OztBQXNCeEY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLElBQUksY0FBYyxDQUFlLFlBQVksQ0FBQyxDQUFDO0FBRXpFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9CRztBQUNILE1BQU0sVUFBVSxTQUFTLENBQUMsS0FBNkIsRUFBRSxPQUFxQztJQUM1RixPQUFPLFdBQVcsQ0FBUSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3hELENBQUM7QUFFRDs7O0dBR0c7QUFJSCxNQUFNLE9BQU8sYUFBYyxTQUFRLG9DQUEyQztJQUc1RSxZQUNFLFlBQXNCLEVBQ2YsTUFBYyxFQUNiLG1CQUF3QyxFQUNoRCxPQUE4QixFQUM5QixPQUF1QjtRQUV2QixLQUFLLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBTHRCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDYix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBTHpDLFVBQUssR0FBRyxJQUFJLEdBQUcsRUFBaUIsQ0FBQztRQVV4QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBRTFDLHlEQUF5RDtRQUN6RCwrQkFBK0I7UUFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFlLEVBQUUsRUFBRTtZQUN4QyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBWSxFQUFFLEVBQUU7Z0JBQ2pELE1BQU0sSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLE9BQU8sSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNuRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO29CQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQzlCLENBQUM7Z0JBQ0QsT0FBTyxDQUFDLGNBQWMsQ0FBQztZQUN6QixDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUU7WUFDakUsSUFBSSxDQUFDLDJCQUEyQixDQUFDLFNBQVMsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUM5RCxDQUFDLENBQUMsQ0FBQztRQUVILGtEQUFrRDtRQUNsRCxzQ0FBc0M7UUFDdEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNyQixPQUFPLENBQUMsaUJBQWlCO2lCQUN0QixJQUFJLENBQ0gsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUNwQixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ1I7aUJBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDZCxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDbEMsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsT0FBTztRQUNMLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsbUJBQW1CLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVEOzs7T0FHRztJQUNILFFBQVEsQ0FBQyxLQUFzQjtRQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE9BQU8sQ0FBQyxhQUE2QixFQUFFLE1BQU0sR0FBRyxJQUFJO1FBQ2xELElBQUksYUFBYSxDQUFDLGlCQUFpQixJQUFJLGFBQWEsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ3hFLE9BQU8sR0FBRyxNQUFNLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQzFFLENBQUM7UUFDRCxPQUFPLEdBQUcsTUFBTSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUMzRSxDQUFDO0lBRVMsb0JBQW9CO1FBQzVCLE9BQU8sZUFBZSxDQUFRLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUN4RCxnQkFBZ0IsQ0FBUSxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDO1lBQ3hFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTO1NBQ3JCLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRU8sU0FBUyxDQUFDLE1BQU07UUFDdEIsb0VBQW9FO1FBQ3BFLG9EQUFvRDtRQUNwRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO1FBQ2pFLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDNUYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQ3JCO1lBQ0UsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQztZQUNsRCxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFRLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDcEUsVUFBVTtTQUNYLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUNsQixDQUFDO0lBQ0osQ0FBQztJQUVPLFlBQVksQ0FBQyxpQkFBeUIsRUFBRSxLQUFZO1FBQzFELElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQXVCLEVBQUUsRUFBRTtnQkFDcEQsSUFBSSxDQUFDLENBQUMsV0FBVyxLQUFLLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDcEMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUM5QyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxPQUFPO1FBQ1QsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLHdCQUF3QixDQUFDLE1BQWM7UUFDN0MsTUFBTSxNQUFNLEdBQTJCLEVBQUUsQ0FBQztRQUMxQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3JCLElBQUssS0FBOEIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDaEQsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUE2QixDQUFDLENBQUM7WUFDN0MsQ0FBQztZQUNELElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNuQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUNsRSxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUM7WUFDOUIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVPLDJCQUEyQixDQUFDLFNBQTJCLEVBQUUsY0FBbUI7UUFDbEYsNERBQTREO1FBQzVELHlJQUF5STtRQUN6SSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUU5RixJQUFJLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDekIsTUFBTSxpQkFBaUIsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUM5QyxLQUFLLENBQUMsU0FBUyxHQUFHLENBQUMsbUJBQW1CLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztnQkFDeEQsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNuQyxDQUFDO0lBQ0gsQ0FBQzs4R0FySVUsYUFBYTtrSEFBYixhQUFhLGNBRlosTUFBTTs7MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBpbXBvcnRQcm92aWRlcnNGcm9tLFxuICBJbmplY3RhYmxlLFxuICBJbmplY3Rpb25Ub2tlbixcbiAgSW5qZWN0b3IsXG4gIE5nTW9kdWxlUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyLCBSb3V0ZXMsIFJPVVRFUyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IGZsYXR0ZW4gfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgc2hhcmVSZXBsYXksIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBFeHRlbnNpb25GYWN0b3J5LFxuICBFeHRlbnNpb25Qb2ludFdpdGhvdXRTdGF0ZUZvclBsdWdpbnMsXG4gIGZyb21UcmlnZ2VyT25jZSxcbiAgR2VuZXJpY0hvb2tPcHRpb25zLFxuICBHZW5lcmljSG9va1R5cGUsXG4gIGdldEluamVjdGVkSG9va3MsXG4gIGhvb2tHZW5lcmljLFxuICBJbmplY3Rpb25UeXBlXG59IGZyb20gJy4uL2NvbW1vbi9leHRlbnNpb24taG9va3MnO1xuaW1wb3J0IHsgT3B0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vb3B0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IFBsdWdpbnNSZXNvbHZlU2VydmljZSB9IGZyb20gJy4uL3BsdWdpbnMnO1xuaW1wb3J0IHsgQ29udGV4dFJvdXRlU2VydmljZSB9IGZyb20gJy4vY29udGV4dC1yb3V0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJvdXRlLCBSb3V0ZUZhY3RvcnksIFZpZXdDb250ZXh0LCBWaWV3Q29udGV4dFJvb3RSb3V0ZSB9IGZyb20gJy4vcm91dGVyLm1vZGVsJztcblxuLyoqXG4gKiBBbiBleHRlbnNpb24gSE9PSyBjYW4gdXNlIGVpdGhlciBhIHB1cmUgdmFsdWU6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAgeyBwcm92aWRlOiBIT09LX1gsIHVzZVZhbHVlOiB7IC4uLmhvb2tWYWx1ZSB9LCBtdWx0aTogdHJ1ZSB9XG4gKiBgYGBcbiAqXG4gKiBPciBhbiBhcnJheSB0byBkaXJlY3RseSByZWdpc3RlciBtdWx0aXBsZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqICB7IHByb3ZpZGU6IEhPT0tfWCwgdXNlVmFsdWU6IFt7IC4uLmhvb2tWYWx1ZXMgfV0sIG11bHRpOiB0cnVlIH1cbiAqIGBgYFxuICpcbiAqIE9yIGFuIEV4dGVuc2lvbkZhY3Rvcnkgd2hpY2ggYWxsb3dzIHRvIGRlZmluZSBhIGdldCgpIGZ1bmN0aW9uLiBUaGlzIGZ1bmN0aW9uXG4gKiBnZXRzIGNhbGxlZCBvbiBlYWNoIG5hdmlnYXRpb24gd2l0aCB0aGUgY3VycmVudCByb3V0ZSBhbmQgY2FuIHJldHVybiB2YWx1ZXNcbiAqIGFzeW5jIChvYnNlcnZhYmxlIG9yIHByb21pc2UpLlxuICogYGBgdHlwZXNjcmlwdFxuICogIHsgcHJvdmlkZTogSE9PS19YLCB1c2VGYWN0b3J5OiB7IGdldDogKHJvdXRlKSA9PiBkb1NvbWV0aGluZ0FzeW5jKHJvdXRlKSB9LCBtdWx0aTogdHJ1ZSB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IHR5cGUgUm91dGVFeHRlbnNpb24gPSBSb3V0ZSB8IFJvdXRlW10gfCBFeHRlbnNpb25GYWN0b3J5PFJvdXRlPjtcblxuLyoqXG4gKiBBIGhvb2sgdG8gdXNlIGZvciBNdWx0aSBQcm92aWRlciBleHRlbnNpb24uXG4gKiBAZGVwcmVjYXRlZCBDb25zaWRlciB1c2luZyB0aGUgYGhvb2tSb3V0ZWAgZnVuY3Rpb24gaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGNvbnN0IEhPT0tfUk9VVEUgPSBuZXcgSW5qZWN0aW9uVG9rZW48Um91dGVGYWN0b3J5PignSE9PS19ST1VURScpO1xuXG4vKipcbiAqIFlvdSBjYW4gZWl0aGVyIHByb3ZpZGUgYSBzaW5nbGUgYFJvdXRlYCBhcyBwYXJhbWV0ZXI6XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAgaG9va1JvdXRlKC4uLilcbiAqIGBgYFxuICpcbiAqIE9yIGFuIGFycmF5IHRvIGRpcmVjdGx5IHJlZ2lzdGVyIG11bHRpcGxlOlxuICogYGBgdHlwZXNjcmlwdFxuICogIGhvb2tSb3V0ZShbLi4uXSlcbiAqIGBgYFxuICpcbiAqIE9yIHlvdSBwcm92aWRlIGFuIFNlcnZpY2UgdGhhdCBpbXBsZW1lbnRzIGBFeHRlbnNpb25GYWN0b3J5PFJvdXRlPmBcbiAqIGBgYHR5cGVzY3JpcHRcbiAqICBleHBvcnQgY2xhc3MgTXlSb3V0ZUZhY3RvcnkgaW1wbGVtZW50cyBFeHRlbnNpb25GYWN0b3J5PFJvdXRlPiB7Li4ufVxuICogIC4uLlxuICogIGhvb2tSb3V0ZShNeVJvdXRlRmFjdG9yeSlcbiAqIGBgYFxuICogQSB0eXBlZCBhbHRlcm5hdGl2ZSB0byBgSE9PS19ST1VURWAuXG4gKiBAcGFyYW0gcm91dGUgVGhlIGBSb3V0ZWAncyBvciBgRXh0ZW5zaW9uRmFjdG9yeWAgdG8gYmUgcHJvdmlkZWQuXG4gKiBAcmV0dXJucyBBbiBgUHJvdmlkZXJgIHRvIGJlIHByb3ZpZGVkIGluIHlvdXIgbW9kdWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaG9va1JvdXRlKHJvdXRlOiBHZW5lcmljSG9va1R5cGU8Um91dGU+LCBvcHRpb25zPzogUGFydGlhbDxHZW5lcmljSG9va09wdGlvbnM+KSB7XG4gIHJldHVybiBob29rR2VuZXJpYzxSb3V0ZT4ocm91dGUsIEhPT0tfUk9VVEUsIG9wdGlvbnMpO1xufVxuXG4vKipcbiAqIEEgc2VydmljZSB3aGljaCBkZWZpbmVzIHJvdXRlcyBmb3IgdGhlIGFwcGxpY2F0aW9uLiBZb3UgY2FuIHVzZVxuICogSE9PS19ST1VURVMgb3IgcGFzc1xuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBSb3V0ZXJTZXJ2aWNlIGV4dGVuZHMgRXh0ZW5zaW9uUG9pbnRXaXRob3V0U3RhdGVGb3JQbHVnaW5zPFJvdXRlPiB7XG4gIHJlYWRvbmx5IHN0YXRlID0gbmV3IE1hcDxzdHJpbmcsIFJvdXRlPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHJvb3RJbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHVibGljIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgY29udGV4dFJvdXRlU2VydmljZTogQ29udGV4dFJvdXRlU2VydmljZSxcbiAgICBwbHVnaW5zOiBQbHVnaW5zUmVzb2x2ZVNlcnZpY2UsXG4gICAgb3B0aW9uczogT3B0aW9uc1NlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIocm9vdEluamVjdG9yLCBwbHVnaW5zKTtcbiAgICB0aGlzLml0ZW1zJCA9IHRoaXMuc2V0dXBJdGVtc09ic2VydmFibGUoKTtcblxuICAgIC8vIFdlIGFyZSBkb2luZyBhIHNlbGYgc3Vic2NyaXB0aW9uIHRvIGFkZCB0aGUgbmV3IHJvdXRlc1xuICAgIC8vIHRvIHRoZSByb3V0ZXIgY29uZmlndXJhdGlvbi5cbiAgICB0aGlzLml0ZW1zJC5zdWJzY3JpYmUoKHJvdXRlczogUm91dGVbXSkgPT4ge1xuICAgICAgY29uc3QgdG9BZGRSb3V0ZXMgPSByb3V0ZXMuZmlsdGVyKChyb3V0ZTogUm91dGUpID0+IHtcbiAgICAgICAgY29uc3QgcGF0aCA9IGAke3JvdXRlLmNvbnRleHQgfHwgJyd9JHtyb3V0ZS5wYXRofWA7XG4gICAgICAgIGNvbnN0IGlzQWxyZWFkeUFkZGVkID0gdGhpcy5zdGF0ZS5oYXMocGF0aCk7XG4gICAgICAgIGlmICghaXNBbHJlYWR5QWRkZWQpIHtcbiAgICAgICAgICB0aGlzLnN0YXRlLnNldChwYXRoLCByb3V0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICFpc0FscmVhZHlBZGRlZDtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5hZGRSb3V0ZSh0b0FkZFJvdXRlcyk7XG4gICAgfSk7XG5cbiAgICBwbHVnaW5zLnBsdWdpbkRldGFpbHMkLnN1YnNjcmliZSgoeyBtb2R1bGVSZWYsIHJlbW90ZU5nTW9kdWxlIH0pID0+IHtcbiAgICAgIHRoaXMucmVzb2x2ZVJvdXRlckZvckNoaWxkUm91dGVzKG1vZHVsZVJlZiwgcmVtb3RlTmdNb2R1bGUpO1xuICAgIH0pO1xuXG4gICAgLy8gb25seSBuZWVkZWQgaW4gY2FzZSBvZiBwdXJlIGFuZ3VsYXIgYXBwbGljYXRpb25cbiAgICAvLyBvdGhlcndpc2UgaGFuZGxlZCBieSBicmlkZ2Ugc2VydmljZVxuICAgIGlmICghb3B0aW9ucy51cGdyYWRlKSB7XG4gICAgICBwbHVnaW5zLmFsbFBsdWdpbnNMb2FkZWQkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGZpbHRlcih0bXAgPT4gISF0bXApLFxuICAgICAgICAgIHRha2UoMSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnJvdXRlci5pbml0aWFsTmF2aWdhdGlvbigpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVmcmVzaCB0aGUgY3VycmVudCBjb250ZXh0XG4gICAqL1xuICByZWZyZXNoKCkge1xuICAgIHN1cGVyLnJlZnJlc2goKTtcbiAgICB0aGlzLmNvbnRleHRSb3V0ZVNlcnZpY2UucmVmcmVzaENvbnRleHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBuZXcgcm91dGUgdG8gdGhlIHJvdXRlciBjb25maWd1cmF0aW9uIG9yIGEgY29udGV4dC5cbiAgICogQHBhcmFtIHJvdXRlIFRoZSByb3V0ZSB0byBhZGRcbiAgICovXG4gIGFkZFJvdXRlKHJvdXRlOiBSb3V0ZSB8IFJvdXRlW10pIHtcbiAgICB0aGlzLmFkZFJvdXRlcyhBcnJheS5pc0FycmF5KHJvdXRlKSA/IHJvdXRlIDogW3JvdXRlXSk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiB0aGUgZ2l2ZW4gTU8gaXMgYW4gZ3JvdXAgb3IgYW4gZGV2aWNlIGFuZCByZXR1cm5zXG4gICAqIHRoZSBjb3JyZWN0IGhyZWYgdG8gbGluayBjb3JyZWN0bHkgdG8gdGhhdCBNTy5cbiAgICogQHBhcmFtIGdyb3VwT3JEZXZpY2UgVGhlIE1PIG9mIGEgZ3JvdXAgb3IgdGhlIGRldmljZS5cbiAgICogQHBhcmFtIHByZWZpeCBIb3cgc2hvdWxkIHRoZSBsaW5rIGJlIHByZWZpeGVkLlxuICAgKi9cbiAgZ2V0SHJlZihncm91cE9yRGV2aWNlOiBJTWFuYWdlZE9iamVjdCwgcHJlZml4ID0gJyMvJyk6IHN0cmluZyB7XG4gICAgaWYgKGdyb3VwT3JEZXZpY2UuYzh5X0lzRGV2aWNlR3JvdXAgfHwgZ3JvdXBPckRldmljZS5jOHlfSXNEeW5hbWljR3JvdXApIHtcbiAgICAgIHJldHVybiBgJHtwcmVmaXh9JHtWaWV3Q29udGV4dC5Hcm91cC5yZXBsYWNlKCc6aWQnLCBncm91cE9yRGV2aWNlLmlkKX1gO1xuICAgIH1cbiAgICByZXR1cm4gYCR7cHJlZml4fSR7Vmlld0NvbnRleHQuRGV2aWNlLnJlcGxhY2UoJzppZCcsIGdyb3VwT3JEZXZpY2UuaWQpfWA7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2V0dXBJdGVtc09ic2VydmFibGUoKTogT2JzZXJ2YWJsZTxSb3V0ZVtdPiB7XG4gICAgcmV0dXJuIGZyb21UcmlnZ2VyT25jZTxSb3V0ZT4odGhpcy5yb3V0ZXIsIHRoaXMucmVmcmVzaCQsIFtcbiAgICAgIGdldEluamVjdGVkSG9va3M8Um91dGU+KEhPT0tfUk9VVEUsIHRoaXMuaW5qZWN0b3JzLCBJbmplY3Rpb25UeXBlLlJPVVRFKSxcbiAgICAgICgpID0+IHRoaXMuZmFjdG9yaWVzXG4gICAgXSkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCBzaGFyZVJlcGxheSgxKSk7XG4gIH1cblxuICBwcml2YXRlIGFkZFJvdXRlcyhyb3V0ZXMpIHtcbiAgICAvLyBFbXB0eSByb3V0ZSBuZWVkcyB0byBiZSBsYXN0IGFzIG9mIG5hdmlnYXRpb24gdG8gYW5ndWxhcmpzIHJvdXRlc1xuICAgIC8vIGlmICoqIHJvdXRlIGhpdCwgdGhlIGFuZ3VsYXJqcyByb3V0ZXMgYXJlIGxvYWRlZC5cbiAgICBjb25zdCBlbXB0eVJvdXRlID0gdGhpcy5yb3V0ZXIuY29uZmlnLmZpbmQociA9PiByLnBhdGggPT09ICcqKicpO1xuICAgIGNvbnN0IHJvb3RDb250ZXh0Um91dGVzID0gdGhpcy5maW5kQWxsUm9vdENvbnRleHRSb3V0ZXMoWy4uLnRoaXMucm91dGVyLmNvbmZpZywgLi4ucm91dGVzXSk7XG4gICAgdGhpcy5yb3V0ZXIucmVzZXRDb25maWcoXG4gICAgICBbXG4gICAgICAgIC4uLnRoaXMucm91dGVyLmNvbmZpZy5maWx0ZXIociA9PiByLnBhdGggIT09ICcqKicpLFxuICAgICAgICAuLi5yb3V0ZXMubWFwKChyOiBSb3V0ZSkgPT4gdGhpcy5jb252ZXJ0Um91dGUocm9vdENvbnRleHRSb3V0ZXMsIHIpKSxcbiAgICAgICAgZW1wdHlSb3V0ZVxuICAgICAgXS5maWx0ZXIoQm9vbGVhbilcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjb252ZXJ0Um91dGUocm9vdENvbnRleHRSb3V0ZXM6IFJvdXRlcywgcm91dGU6IFJvdXRlKSB7XG4gICAgaWYgKHJvdXRlLmNvbnRleHQpIHtcbiAgICAgIHJvb3RDb250ZXh0Um91dGVzLmZvckVhY2goKHI6IFZpZXdDb250ZXh0Um9vdFJvdXRlKSA9PiB7XG4gICAgICAgIGlmIChyLnJvb3RDb250ZXh0ID09PSByb3V0ZS5jb250ZXh0KSB7XG4gICAgICAgICAgci5jaGlsZHJlbiA9IFtyb3V0ZSwgLi4uKHIuY2hpbGRyZW4gfHwgW10pXTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHJldHVybiByb3V0ZTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZEFsbFJvb3RDb250ZXh0Um91dGVzKHJvdXRlczogUm91dGVzKTogVmlld0NvbnRleHRSb290Um91dGVbXSB7XG4gICAgY29uc3QgcmVzdWx0OiBWaWV3Q29udGV4dFJvb3RSb3V0ZVtdID0gW107XG4gICAgcm91dGVzLmZvckVhY2gocm91dGUgPT4ge1xuICAgICAgaWYgKChyb3V0ZSBhcyBWaWV3Q29udGV4dFJvb3RSb3V0ZSkucm9vdENvbnRleHQpIHtcbiAgICAgICAgcmVzdWx0LnB1c2gocm91dGUgYXMgVmlld0NvbnRleHRSb290Um91dGUpO1xuICAgICAgfVxuICAgICAgaWYgKHJvdXRlLmNoaWxkcmVuKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkUm91dGVzID0gdGhpcy5maW5kQWxsUm9vdENvbnRleHRSb3V0ZXMocm91dGUuY2hpbGRyZW4pO1xuICAgICAgICByZXN1bHQucHVzaCguLi5jaGlsZFJvdXRlcyk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgcmVzb2x2ZVJvdXRlckZvckNoaWxkUm91dGVzKG1vZHVsZVJlZjogTmdNb2R1bGVSZWY8YW55PiwgcmVtb3RlTmdNb2R1bGU6IGFueSkge1xuICAgIC8vIE5PVEU6IHN0b2xlbiBmcm9tIGxhenkgbG9hZGVkIHJvdXRlcyBmcm9tIEFuZ3VsYXIgaXRzZWxmLlxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi9kYTU4ODAxZjk1YzY2YzIwMWUzMzIxODlhZjI1NzAyYmRkNzIyZjNmL3BhY2thZ2VzL3JvdXRlci9zcmMvcm91dGVyX2NvbmZpZ19sb2FkZXIudHMjTDEwMy1MMTA4XG4gICAgY29uc3QgcmF3Um91dGVzID0gZmxhdHRlbihtb2R1bGVSZWYuaW5qZWN0b3IuZ2V0KFJPVVRFUywgW10sIHsgc2VsZjogdHJ1ZSwgb3B0aW9uYWw6IHRydWUgfSkpO1xuXG4gICAgaWYgKHJhd1JvdXRlcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCByb3V0ZVdpdGhJbmplY3RvciA9IHJhd1JvdXRlcy5tYXAocm91dGUgPT4ge1xuICAgICAgICByb3V0ZS5wcm92aWRlcnMgPSBbaW1wb3J0UHJvdmlkZXJzRnJvbShyZW1vdGVOZ01vZHVsZSldO1xuICAgICAgICByZXR1cm4gcm91dGU7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuYWRkUm91dGUocm91dGVXaXRoSW5qZWN0b3IpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,152 @@
1
+ import { DestroyRef, Injectable, Injector } from '@angular/core';
2
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
3
+ import { ActivationEnd, ActivationStart, ChildActivationEnd, PRIMARY_OUTLET, Router } from '@angular/router';
4
+ import { ApiService } from '@c8y/ngx-components/api';
5
+ import { NEVER, Subject } from 'rxjs';
6
+ import { filter, map, merge, switchMap } from 'rxjs/operators';
7
+ import { TabsService } from '../tabs/tabs.service';
8
+ import { RouterTabsResolver } from './router-tabs.resolver';
9
+ import { ViewContext } from './router.model';
10
+ import { ViewContextServices } from './view-context.service';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "./router-tabs.resolver";
13
+ import * as i2 from "../tabs/tabs.service";
14
+ import * as i3 from "@angular/router";
15
+ import * as i4 from "@c8y/ngx-components/api";
16
+ /**
17
+ * A service which is injected into the context route component to handle the context data.
18
+ */
19
+ export class ScopedContextRouteService {
20
+ constructor(tabsResolver, tabsService, router, apiService, injector, destroyRef) {
21
+ this.tabsResolver = tabsResolver;
22
+ this.tabsService = tabsService;
23
+ this.router = router;
24
+ this.apiService = apiService;
25
+ this.injector = injector;
26
+ this.destroyRef = destroyRef;
27
+ this.lastAddedTabs = [];
28
+ this.refreshTrigger$ = new Subject();
29
+ this.ID_REGEX = /([0-9]+)/;
30
+ }
31
+ /**
32
+ * Indicates that the data is loading
33
+ * @returns An boolean observable which indicates if the data is loading.
34
+ */
35
+ isLoading$() {
36
+ return this.router.events.pipe(filter(e => (e instanceof ActivationStart || e instanceof ChildActivationEnd) &&
37
+ e.snapshot.routeConfig?.rootContext === this.currentContext), map(e => e instanceof ActivationStart), takeUntilDestroyed(this.destroyRef));
38
+ }
39
+ /**
40
+ * Initializes the context route.
41
+ * @param route The current activated route.
42
+ */
43
+ init(route) {
44
+ this.currentContext = route.routeConfig.rootContext;
45
+ if (!this.currentContext) {
46
+ throw new Error(`${ScopedContextRouteService.name} should not be used on a route without a rootContext`);
47
+ }
48
+ this.router.events
49
+ .pipe(filter(e => e instanceof ActivationEnd), takeUntilDestroyed(this.destroyRef))
50
+ .subscribe((e) => this.redirectToFirstTab(e));
51
+ route.data
52
+ .pipe(merge(this.updatedContext(route), this.refreshTrigger$), switchMap(() => this.tabsResolver.resolve(route.snapshot)), takeUntilDestroyed(this.destroyRef))
53
+ .subscribe(tabs => this.updateTabs(tabs));
54
+ }
55
+ /**
56
+ * Destroys the service.
57
+ */
58
+ ngOnDestroy() {
59
+ this.lastAddedTabs.forEach(t => this.tabsService.remove(t));
60
+ }
61
+ /**
62
+ * Refreshes the context.
63
+ */
64
+ refreshContext() {
65
+ this.refreshTrigger$.next();
66
+ }
67
+ /**
68
+ * Sets an API hook to refresh the contextData on changes.
69
+ * @param activatedRoute The current activated route.
70
+ */
71
+ updatedContext(route) {
72
+ const { data } = route.snapshot;
73
+ const serviceInstance = ViewContextServices.contextToService(data.context);
74
+ if (serviceInstance) {
75
+ const service = this.injector.get(serviceInstance);
76
+ const detailsUrlRegex = service
77
+ .getDetailUrl(data.contextData)
78
+ .replace(/\d+/g, '?\\d*');
79
+ const contextRegex = new RegExp(detailsUrlRegex, 'i');
80
+ const childrenRegex = new RegExp(`${detailsUrlRegex}/child`, 'i');
81
+ const filterResponse = ({ url, method }) => {
82
+ const contextChanged = contextRegex.test(url) && ['POST', 'PUT'].includes(method);
83
+ const childrenAffected = childrenRegex.test(url) && ['POST', 'DELETE'].includes(method);
84
+ return contextChanged || childrenAffected;
85
+ };
86
+ return this.apiService.hookResponse(filterResponse);
87
+ }
88
+ return NEVER;
89
+ }
90
+ updateTabs(tabs = []) {
91
+ this.lastAddedTabs.forEach(t => this.tabsService.remove(t));
92
+ this.lastAddedTabs = tabs;
93
+ tabs.forEach(t => this.tabsService.add(t));
94
+ this.redirectToFirstTab();
95
+ }
96
+ redirectToFirstTab(event) {
97
+ if (event) {
98
+ if (this.needsRedirect(event)) {
99
+ const tab = this.tabsService.sortTabs(event.snapshot.data.tabs)?.[0];
100
+ if (!tab) {
101
+ return;
102
+ }
103
+ const currentContextId = (this.router.url.match(this.ID_REGEX) || []).shift();
104
+ const tabPathId = (tab.path.match(this.ID_REGEX) || []).shift();
105
+ if (currentContextId === tabPathId) {
106
+ this.router.navigateByUrl(tab.path, { replaceUrl: true });
107
+ }
108
+ }
109
+ }
110
+ else {
111
+ const currentContextId = (this.router.url.match(this.ID_REGEX) || []).shift();
112
+ if (this.needsRedirectLegacy()) {
113
+ this.tabsService.firstTab$.pipe(filter((tab) => !!tab?.path)).subscribe((tab) => {
114
+ const tabPathId = (tab.path.match(this.ID_REGEX) || []).shift();
115
+ if (currentContextId === tabPathId) {
116
+ this.router.navigateByUrl(tab.path, { replaceUrl: true });
117
+ }
118
+ });
119
+ }
120
+ }
121
+ }
122
+ needsRedirectLegacy() {
123
+ const tree = this.router.parseUrl(this.router.url);
124
+ const groups = tree.root.children[PRIMARY_OUTLET];
125
+ const context = this.getMatchingContextRoute(this.router.url);
126
+ if (!context) {
127
+ return groups.segments.length === 2;
128
+ }
129
+ return context.split('/').length === groups.segments.length;
130
+ }
131
+ needsRedirect(event) {
132
+ const contextRoute = event.snapshot.routeConfig;
133
+ if (!contextRoute.rootContext) {
134
+ return false;
135
+ }
136
+ const contextRouteFromUrl = this.getMatchingContextRoute(this.router.url);
137
+ return contextRoute.rootContext === contextRouteFromUrl;
138
+ }
139
+ getMatchingContextRoute(url) {
140
+ const viewContexts = Object.values(ViewContext);
141
+ // replace all :id placeholders with a regex matcher for a number
142
+ const regexMatchers = viewContexts.map(context => `^/${context.replace(/:id/g, '([0-9]+)')}$`);
143
+ const matchingRegexContext = regexMatchers.find(context => new RegExp(context).test(url));
144
+ return matchingRegexContext ? viewContexts[regexMatchers.indexOf(matchingRegexContext)] : null;
145
+ }
146
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ScopedContextRouteService, deps: [{ token: i1.RouterTabsResolver }, { token: i2.TabsService }, { token: i3.Router }, { token: i4.ApiService }, { token: i0.Injector }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Injectable }); }
147
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ScopedContextRouteService }); }
148
+ }
149
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ScopedContextRouteService, decorators: [{
150
+ type: Injectable
151
+ }], ctorParameters: () => [{ type: i1.RouterTabsResolver }, { type: i2.TabsService }, { type: i3.Router }, { type: i4.ApiService }, { type: i0.Injector }, { type: i0.DestroyRef }] });
152
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NvcGVkLWNvbnRleHQtcm91dGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvcm91dGVyL3Njb3BlZC1jb250ZXh0LXJvdXRlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFtQixNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBRUwsYUFBYSxFQUNiLGVBQWUsRUFDZixrQkFBa0IsRUFDbEIsY0FBYyxFQUNkLE1BQU0sRUFHUCxNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBVyxVQUFVLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsS0FBSyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFL0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQXdCLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7OztBQUU3RDs7R0FFRztBQUVILE1BQU0sT0FBTyx5QkFBeUI7SUFVcEMsWUFDVSxZQUFnQyxFQUNoQyxXQUF3QixFQUN4QixNQUFjLEVBQ2QsVUFBc0IsRUFDdEIsUUFBa0IsRUFDbEIsVUFBc0I7UUFMdEIsaUJBQVksR0FBWixZQUFZLENBQW9CO1FBQ2hDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxl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RixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzlCLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUUsT0FBTyxZQUFZLENBQUMsV0FBVyxLQUFLLG1CQUFtQixDQUFDO0lBQzFELENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxHQUFXO1FBQ3pDLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDaEQsaUVBQWlFO1FBQ2pFLE1BQU0sYUFBYSxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxLQUFLLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvRixNQUFNLG9CQUFvQixHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMxRixPQUFPLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNqRyxDQUFDOzhHQW5LVSx5QkFBeUI7a0hBQXpCLHlCQUF5Qjs7MkZBQXpCLHlCQUF5QjtrQkFEckMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc3Ryb3lSZWYsIEluamVjdGFibGUsIEluamVjdG9yLCBPbkRlc3Ryb3ksIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7XG4gIEFjdGl2YXRlZFJvdXRlLFxuICBBY3RpdmF0aW9uRW5kLFxuICBBY3RpdmF0aW9uU3RhcnQsXG4gIENoaWxkQWN0aXZhdGlvbkVuZCxcbiAgUFJJTUFSWV9PVVRMRVQsXG4gIFJvdXRlcixcbiAgVXJsU2VnbWVudEdyb3VwLFxuICBVcmxUcmVlXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBcGlDYWxsLCBBcGlTZXJ2aWNlIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9hcGknO1xuaW1wb3J0IHsgTkVWRVIsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBtZXJnZSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVGFiIH0gZnJvbSAnLi4vdGFicy90YWIubW9kZWwnO1xuaW1wb3J0IHsgVGFic1NlcnZpY2UgfSBmcm9tICcuLi90YWJzL3RhYnMuc2VydmljZSc7XG5pbXBvcnQgeyBSb3V0ZXJUYWJzUmVzb2x2ZXIgfSBmcm9tICcuL3JvdXRlci10YWJzLnJlc29sdmVyJztcbmltcG9ydCB7IFZpZXdDb250ZXh0LCBWaWV3Q29udGV4dFJvb3RSb3V0ZSB9IGZyb20gJy4vcm91dGVyLm1vZGVsJztcbmltcG9ydCB7IFZpZXdDb250ZXh0U2VydmljZXMgfSBmcm9tICcuL3ZpZXctY29udGV4dC5zZXJ2aWNlJztcblxuLyoqXG4gKiBBIHNlcnZpY2Ugd2hpY2ggaXMgaW5qZWN0ZWQgaW50byB0aGUgY29udGV4dCByb3V0ZSBjb21wb25lbnQgdG8gaGFuZGxlIHRoZSBjb250ZXh0IGRhdGEuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTY29wZWRDb250ZXh0Um91dGVTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBsYXN0QWRkZWRUYWJzID0gW107XG4gIHByaXZhdGUgcmVmcmVzaFRyaWdnZXIkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBJRF9SRUdFWCA9IC8oWzAtOV0rKS87XG5cbiAgLyoqXG4gICAqIFRoZSBjb250ZXh0IHVzZWQgYnkgdGhpcyBzZXJ2aWNlLlxuICAgKi9cbiAgcHJpdmF0ZSBjdXJyZW50Q29udGV4dDogVmlld0NvbnRleHQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0YWJzUmVzb2x2ZXI6IFJvdXRlclRhYnNSZXNvbHZlcixcbiAgICBwcml2YXRlIHRhYnNTZXJ2aWNlOiBUYWJzU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgYXBpU2VydmljZTogQXBpU2VydmljZSxcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIGRlc3Ryb3lSZWY6IERlc3Ryb3lSZWZcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgZGF0YSBpcyBsb2FkaW5nXG4gICAqIEByZXR1cm5zIEFuIGJvb2xlYW4gb2JzZXJ2YWJsZSB3aGljaCBpbmRpY2F0ZXMgaWYgdGhlIGRhdGEgaXMgbG9hZGluZy5cbiAgICovXG4gIGlzTG9hZGluZyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMucm91dGVyLmV2ZW50cy5waXBlKFxuICAgICAgZmlsdGVyKFxuICAgICAgICBlID0+XG4gICAgICAgICAgKGUgaW5zdGFuY2VvZiBBY3RpdmF0aW9uU3RhcnQgfHwgZSBpbnN0YW5jZW9mIENoaWxkQWN0aXZhdGlvbkVuZCkgJiZcbiAgICAgICAgICAoZS5zbmFwc2hvdC5yb3V0ZUNvbmZpZyBhcyBWaWV3Q29udGV4dFJvb3RSb3V0ZSk/LnJvb3RDb250ZXh0ID09PSB0aGlzLmN1cnJlbnRDb250ZXh0XG4gICAgICApLFxuICAgICAgbWFwKGUgPT4gZSBpbnN0YW5jZW9mIEFjdGl2YXRpb25TdGFydCksXG4gICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGNvbnRleHQgcm91dGUuXG4gICAqIEBwYXJhbSByb3V0ZSBUaGUgY3VycmVudCBhY3RpdmF0ZWQgcm91dGUuXG4gICAqL1xuICBpbml0KHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudENvbnRleHQgPSAocm91dGUucm91dGVDb25maWcgYXMgVmlld0NvbnRleHRSb290Um91dGUpLnJvb3RDb250ZXh0O1xuICAgIGlmICghdGhpcy5jdXJyZW50Q29udGV4dCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgJHtTY29wZWRDb250ZXh0Um91dGVTZXJ2aWNlLm5hbWV9IHNob3VsZCBub3QgYmUgdXNlZCBvbiBhIHJvdXRlIHdpdGhvdXQgYSByb290Q29udGV4dGBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5yb3V0ZXIuZXZlbnRzXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKGUgPT4gZSBpbnN0YW5jZW9mIEFjdGl2YXRpb25FbmQpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoZTogQWN0aXZhdGlvbkVuZCkgPT4gdGhpcy5yZWRpcmVjdFRvRmlyc3RUYWIoZSkpO1xuXG4gICAgcm91dGUuZGF0YVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1lcmdlKHRoaXMudXBkYXRlZENvbnRleHQocm91dGUpLCB0aGlzLnJlZnJlc2hUcmlnZ2VyJCksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnRhYnNSZXNvbHZlci5yZXNvbHZlKHJvdXRlLnNuYXBzaG90KSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHRhYnMgPT4gdGhpcy51cGRhdGVUYWJzKHRhYnMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXN0cm95cyB0aGUgc2VydmljZS5cbiAgICovXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubGFzdEFkZGVkVGFicy5mb3JFYWNoKHQgPT4gdGhpcy50YWJzU2VydmljZS5yZW1vdmUodCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZnJlc2hlcyB0aGUgY29udGV4dC5cbiAgICovXG4gIHJlZnJlc2hDb250ZXh0KCkge1xuICAgIHRoaXMucmVmcmVzaFRyaWdnZXIkLm5leHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIGFuIEFQSSBob29rIHRvIHJlZnJlc2ggdGhlIGNvbnRleHREYXRhIG9uIGNoYW5nZXMuXG4gICAqIEBwYXJhbSBhY3RpdmF0ZWRSb3V0ZSBUaGUgY3VycmVudCBhY3RpdmF0ZWQgcm91dGUuXG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZWRDb250ZXh0KHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSk6IE9ic2VydmFibGU8QXBpQ2FsbD4ge1xuICAgIGNvbnN0IHsgZGF0YSB9ID0gcm91dGUuc25hcHNob3Q7XG4gICAgY29uc3Qgc2VydmljZUluc3RhbmNlID0gVmlld0NvbnRleHRTZXJ2aWNlcy5jb250ZXh0VG9TZXJ2aWNlKGRhdGEuY29udGV4dCk7XG4gICAgaWYgKHNlcnZpY2VJbnN0YW5jZSkge1xuICAgICAgY29uc3Qgc2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KFxuICAgICAgICBzZXJ2aWNlSW5zdGFuY2UgYXMgVHlwZTxJbnN0YW5jZVR5cGU8dHlwZW9mIHNlcnZpY2VJbnN0YW5jZT4+XG4gICAgICApO1xuICAgICAgY29uc3QgZGV0YWlsc1VybFJlZ2V4ID0gKHNlcnZpY2UgYXMgdHlwZW9mIHNlcnZpY2UgJiB7IGdldERldGFpbFVybD86ICguLi5hcmdzKSA9PiBzdHJpbmcgfSlcbiAgICAgICAgLmdldERldGFpbFVybChkYXRhLmNvbnRleHREYXRhKVxuICAgICAgICAucmVwbGFjZSgvXFxkKy9nLCAnP1xcXFxkKicpO1xuICAgICAgY29uc3QgY29udGV4dFJlZ2V4ID0gbmV3IFJlZ0V4cChkZXRhaWxzVXJsUmVnZXgsICdpJyk7XG4gICAgICBjb25zdCBjaGlsZHJlblJlZ2V4ID0gbmV3IFJlZ0V4cChgJHtkZXRhaWxzVXJsUmVnZXh9L2NoaWxkYCwgJ2knKTtcbiAgICAgIGNvbnN0IGZpbHRlclJlc3BvbnNlID0gKHsgdXJsLCBtZXRob2QgfSkgPT4ge1xuICAgICAgICBjb25zdCBjb250ZXh0Q2hhbmdlZCA9IGNvbnRleHRSZWdleC50ZXN0KHVybCkgJiYgWydQT1NUJywgJ1BVVCddLmluY2x1ZGVzKG1ldGhvZCk7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuQWZmZWN0ZWQgPSBjaGlsZHJlblJlZ2V4LnRlc3QodXJsKSAmJiBbJ1BPU1QnLCAnREVMRVRFJ10uaW5jbHVkZXMobWV0aG9kKTtcbiAgICAgICAgcmV0dXJuIGNvbnRleHRDaGFuZ2VkIHx8IGNoaWxkcmVuQWZmZWN0ZWQ7XG4gICAgICB9O1xuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5ob29rUmVzcG9uc2UoZmlsdGVyUmVzcG9uc2UpO1xuICAgIH1cbiAgICByZXR1cm4gTkVWRVI7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVRhYnModGFicyA9IFtdKSB7XG4gICAgdGhpcy5sYXN0QWRkZWRUYWJzLmZvckVhY2godCA9PiB0aGlzLnRhYnNTZXJ2aWNlLnJlbW92ZSh0KSk7XG4gICAgdGhpcy5sYXN0QWRkZWRUYWJzID0gdGFicztcbiAgICB0YWJzLmZvckVhY2godCA9PiB0aGlzLnRhYnNTZXJ2aWNlLmFkZCh0KSk7XG4gICAgdGhpcy5yZWRpcmVjdFRvRmlyc3RUYWIoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVkaXJlY3RUb0ZpcnN0VGFiKGV2ZW50PzogQWN0aXZhdGlvbkVuZCkge1xuICAgIGlmIChldmVudCkge1xuICAgICAgaWYgKHRoaXMubmVlZHNSZWRpcmVjdChldmVudCkpIHtcbiAgICAgICAgY29uc3QgdGFiID0gdGhpcy50YWJzU2VydmljZS5zb3J0VGFicyhldmVudC5zbmFwc2hvdC5kYXRhLnRhYnMpPy5bMF07XG4gICAgICAgIGlmICghdGFiKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGN1cnJlbnRDb250ZXh0SWQgPSAodGhpcy5yb3V0ZXIudXJsLm1hdGNoKHRoaXMuSURfUkVHRVgpIHx8IFtdKS5zaGlmdCgpO1xuICAgICAgICBjb25zdCB0YWJQYXRoSWQgPSAodGFiLnBhdGgubWF0Y2godGhpcy5JRF9SRUdFWCkgfHwgW10pLnNoaWZ0KCk7XG4gICAgICAgIGlmIChjdXJyZW50Q29udGV4dElkID09PSB0YWJQYXRoSWQpIHtcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRhYi5wYXRoLCB7IHJlcGxhY2VVcmw6IHRydWUgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY3VycmVudENvbnRleHRJZCA9ICh0aGlzLnJvdXRlci51cmwubWF0Y2godGhpcy5JRF9SRUdFWCkgfHwgW10pLnNoaWZ0KCk7XG5cbiAgICAgIGlmICh0aGlzLm5lZWRzUmVkaXJlY3RMZWdhY3koKSkge1xuICAgICAgICB0aGlzLnRhYnNTZXJ2aWNlLmZpcnN0VGFiJC5waXBlKGZpbHRlcigodGFiOiBUYWIpID0+ICEhdGFiPy5wYXRoKSkuc3Vic2NyaWJlKCh0YWI6IFRhYikgPT4ge1xuICAgICAgICAgIGNvbnN0IHRhYlBhdGhJZCA9ICh0YWIucGF0aC5tYXRjaCh0aGlzLklEX1JFR0VYKSB8fCBbXSkuc2hpZnQoKTtcbiAgICAgICAgICBpZiAoY3VycmVudENvbnRleHRJZCA9PT0gdGFiUGF0aElkKSB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKHRhYi5wYXRoLCB7IHJlcGxhY2VVcmw6IHRydWUgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG5lZWRzUmVkaXJlY3RMZWdhY3koKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdHJlZTogVXJsVHJlZSA9IHRoaXMucm91dGVyLnBhcnNlVXJsKHRoaXMucm91dGVyLnVybCk7XG4gICAgY29uc3QgZ3JvdXBzOiBVcmxTZWdtZW50R3JvdXAgPSB0cmVlLnJvb3QuY2hpbGRyZW5bUFJJTUFSWV9PVVRMRVRdO1xuXG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuZ2V0TWF0Y2hpbmdDb250ZXh0Um91dGUodGhpcy5yb3V0ZXIudXJsKTtcbiAgICBpZiAoIWNvbnRleHQpIHtcbiAgICAgIHJldHVybiBncm91cHMuc2VnbWVudHMubGVuZ3RoID09PSAyO1xuICAgIH1cbiAgICByZXR1cm4gY29udGV4dC5zcGxpdCgnLycpLmxlbmd0aCA9PT0gZ3JvdXBzLnNlZ21lbnRzLmxlbmd0aDtcbiAgfVxuXG4gIHByaXZhdGUgbmVlZHNSZWRpcmVjdChldmVudDogQWN0aXZhdGlvbkVuZCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNvbnRleHRSb3V0ZTogVmlld0NvbnRleHRSb290Um91dGUgPSBldmVudC5zbmFwc2hvdC5yb3V0ZUNvbmZpZyBhcyBWaWV3Q29udGV4dFJvb3RSb3V0ZTtcbiAgICBpZiAoIWNvbnRleHRSb3V0ZS5yb290Q29udGV4dCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBjb250ZXh0Um91dGVGcm9tVXJsID0gdGhpcy5nZXRNYXRjaGluZ0NvbnRleHRSb3V0ZSh0aGlzLnJvdXRlci51cmwpO1xuICAgIHJldHVybiBjb250ZXh0Um91dGUucm9vdENvbnRleHQgPT09IGNvbnRleHRSb3V0ZUZyb21Vcmw7XG4gIH1cblxuICBwcml2YXRlIGdldE1hdGNoaW5nQ29udGV4dFJvdXRlKHVybDogc3RyaW5nKTogVmlld0NvbnRleHQge1xuICAgIGNvbnN0IHZpZXdDb250ZXh0cyA9IE9iamVjdC52YWx1ZXMoVmlld0NvbnRleHQpO1xuICAgIC8vIHJlcGxhY2UgYWxsIDppZCBwbGFjZWhvbGRlcnMgd2l0aCBhIHJlZ2V4IG1hdGNoZXIgZm9yIGEgbnVtYmVyXG4gICAgY29uc3QgcmVnZXhNYXRjaGVycyA9IHZpZXdDb250ZXh0cy5tYXAoY29udGV4dCA9PiBgXi8ke2NvbnRleHQucmVwbGFjZSgvOmlkL2csICcoWzAtOV0rKScpfSRgKTtcbiAgICBjb25zdCBtYXRjaGluZ1JlZ2V4Q29udGV4dCA9IHJlZ2V4TWF0Y2hlcnMuZmluZChjb250ZXh0ID0+IG5ldyBSZWdFeHAoY29udGV4dCkudGVzdCh1cmwpKTtcbiAgICByZXR1cm4gbWF0Y2hpbmdSZWdleENvbnRleHQgPyB2aWV3Q29udGV4dHNbcmVnZXhNYXRjaGVycy5pbmRleE9mKG1hdGNoaW5nUmVnZXhDb250ZXh0KV0gOiBudWxsO1xuICB9XG59XG4iXX0=
@@ -1,23 +1,66 @@
1
- import { ApplicationService, InventoryService, TenantService, UserService } from '@c8y/client';
1
+ import { AlarmService, ApplicationService, InventoryService, TenantService, UserService } from '@c8y/client';
2
2
  import { ViewContext } from './router.model';
3
3
  export class ViewContextServices {
4
4
  static { this.services = {
5
- [ViewContext.Device]: InventoryService,
6
- [ViewContext.Group]: InventoryService,
7
- [ViewContext.User]: UserService,
8
- [ViewContext.Application]: ApplicationService,
9
- [ViewContext.Microservice]: ApplicationService,
10
- [ViewContext.Extension]: ApplicationService,
11
- [ViewContext.Feature]: ApplicationService,
12
- [ViewContext.SubscribedApplications]: ApplicationService,
13
- [ViewContext.Tenant]: TenantService,
14
- [ViewContext.Report]: InventoryService,
15
- [ViewContext.Service]: InventoryService,
16
- [ViewContext.DatapointLibrary]: InventoryService,
17
- [ViewContext.Simulators]: InventoryService
5
+ [ViewContext.Device]: { service: InventoryService, path: ViewContext.Device, autoRoute: true },
6
+ [ViewContext.Group]: { service: InventoryService, path: ViewContext.Group, autoRoute: true },
7
+ [ViewContext.User]: { service: UserService, path: ViewContext.User, autoRoute: true },
8
+ [ViewContext.Application]: {
9
+ service: ApplicationService,
10
+ path: ViewContext.Application,
11
+ autoRoute: true
12
+ },
13
+ [ViewContext.Microservice]: {
14
+ service: ApplicationService,
15
+ path: ViewContext.Microservice,
16
+ autoRoute: true
17
+ },
18
+ [ViewContext.Extension]: {
19
+ service: ApplicationService,
20
+ path: ViewContext.Extension,
21
+ autoRoute: true
22
+ },
23
+ [ViewContext.Feature]: {
24
+ service: ApplicationService,
25
+ path: ViewContext.Feature,
26
+ autoRoute: true
27
+ },
28
+ [ViewContext.SubscribedApplications]: {
29
+ service: ApplicationService,
30
+ path: ViewContext.SubscribedApplications,
31
+ autoRoute: true
32
+ },
33
+ [ViewContext.Tenant]: { service: TenantService, path: ViewContext.Tenant, autoRoute: true },
34
+ [ViewContext.Report]: { service: InventoryService, path: ViewContext.Report, autoRoute: true },
35
+ [ViewContext.Service]: {
36
+ service: InventoryService,
37
+ path: ViewContext.Service,
38
+ autoRoute: true
39
+ },
40
+ [ViewContext.DatapointLibrary]: {
41
+ service: InventoryService,
42
+ path: ViewContext.DatapointLibrary,
43
+ autoRoute: true
44
+ },
45
+ [ViewContext.Simulators]: {
46
+ service: InventoryService,
47
+ path: ViewContext.Simulators,
48
+ autoRoute: true
49
+ },
50
+ [ViewContext.Alarms]: { service: AlarmService, path: ':id', autoRoute: false },
51
+ [ViewContext.GroupAlarms]: { service: AlarmService, path: ':id', autoRoute: false },
52
+ [ViewContext.DeviceAlarms]: { service: AlarmService, path: ':id', autoRoute: false },
53
+ [ViewContext.SimulatorsAlarms]: { service: AlarmService, path: ':id', autoRoute: false },
54
+ [ViewContext.ServiceAlarms]: { service: AlarmService, path: ':id', autoRoute: false }
18
55
  }; }
19
56
  static contextToService(context) {
20
- return ViewContextServices.services[context];
57
+ return ViewContextServices.services[context]?.service;
58
+ }
59
+ static getPath(context) {
60
+ return ViewContextServices.services[context]?.path;
61
+ }
62
+ static isAutoRoute(context) {
63
+ return ViewContextServices.services[context]?.autoRoute;
21
64
  }
22
65
  }
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1jb250ZXh0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3JvdXRlci92aWV3LWNvbnRleHQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsTUFBTSxPQUFPLG1CQUFtQjthQUN2QixhQUFRLEdBQUc7UUFDaEIsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEVBQUUsZ0JBQWdCO1FBQ3RDLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLGdCQUFnQjtRQUNyQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxXQUFXO1FBQy9CLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxFQUFFLGtCQUFrQjtRQUM3QyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsRUFBRSxrQkFBa0I7UUFDOUMsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEVBQUUsa0JBQWtCO1FBQzNDLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLGtCQUFrQjtRQUN6QyxDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLGtCQUFrQjtRQUN4RCxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxhQUFhO1FBQ25DLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFLGdCQUFnQjtRQUN0QyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxnQkFBZ0I7UUFDdkMsQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxnQkFBZ0I7UUFDaEQsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLEVBQUUsZ0JBQWdCO0tBQ2xDLENBQUM7SUFFWCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsT0FBb0I7UUFDMUMsT0FBTyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFwcGxpY2F0aW9uU2VydmljZSwgSW52ZW50b3J5U2VydmljZSwgVGVuYW50U2VydmljZSwgVXNlclNlcnZpY2UgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBWaWV3Q29udGV4dCB9IGZyb20gJy4vcm91dGVyLm1vZGVsJztcblxuZXhwb3J0IGNsYXNzIFZpZXdDb250ZXh0U2VydmljZXMge1xuICBzdGF0aWMgc2VydmljZXMgPSB7XG4gICAgW1ZpZXdDb250ZXh0LkRldmljZV06IEludmVudG9yeVNlcnZpY2UsXG4gICAgW1ZpZXdDb250ZXh0Lkdyb3VwXTogSW52ZW50b3J5U2VydmljZSxcbiAgICBbVmlld0NvbnRleHQuVXNlcl06IFVzZXJTZXJ2aWNlLFxuICAgIFtWaWV3Q29udGV4dC5BcHBsaWNhdGlvbl06IEFwcGxpY2F0aW9uU2VydmljZSxcbiAgICBbVmlld0NvbnRleHQuTWljcm9zZXJ2aWNlXTogQXBwbGljYXRpb25TZXJ2aWNlLFxuICAgIFtWaWV3Q29udGV4dC5FeHRlbnNpb25dOiBBcHBsaWNhdGlvblNlcnZpY2UsXG4gICAgW1ZpZXdDb250ZXh0LkZlYXR1cmVdOiBBcHBsaWNhdGlvblNlcnZpY2UsXG4gICAgW1ZpZXdDb250ZXh0LlN1YnNjcmliZWRBcHBsaWNhdGlvbnNdOiBBcHBsaWNhdGlvblNlcnZpY2UsXG4gICAgW1ZpZXdDb250ZXh0LlRlbmFudF06IFRlbmFudFNlcnZpY2UsXG4gICAgW1ZpZXdDb250ZXh0LlJlcG9ydF06IEludmVudG9yeVNlcnZpY2UsXG4gICAgW1ZpZXdDb250ZXh0LlNlcnZpY2VdOiBJbnZlbnRvcnlTZXJ2aWNlLFxuICAgIFtWaWV3Q29udGV4dC5EYXRhcG9pbnRMaWJyYXJ5XTogSW52ZW50b3J5U2VydmljZSxcbiAgICBbVmlld0NvbnRleHQuU2ltdWxhdG9yc106IEludmVudG9yeVNlcnZpY2VcbiAgfSBhcyBjb25zdDtcblxuICBzdGF0aWMgY29udGV4dFRvU2VydmljZShjb250ZXh0OiBWaWV3Q29udGV4dCkge1xuICAgIHJldHVybiBWaWV3Q29udGV4dFNlcnZpY2VzLnNlcnZpY2VzW2NvbnRleHRdO1xuICB9XG59XG4iXX0=
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1jb250ZXh0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb3JlL3JvdXRlci92aWV3LWNvbnRleHQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsWUFBWSxFQUNaLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsYUFBYSxFQUNiLFdBQVcsRUFDWixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQTJCLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXRFLE1BQU0sT0FBTyxtQkFBbUI7YUFDdkIsYUFBUSxHQUE0QjtRQUN6QyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsV0FBVyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFO1FBQzlGLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxXQUFXLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUU7UUFDNUYsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxXQUFXLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUU7UUFDckYsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLEVBQUU7WUFDekIsT0FBTyxFQUFFLGtCQUFrQjtZQUMzQixJQUFJLEVBQUUsV0FBVyxDQUFDLFdBQVc7WUFDN0IsU0FBUyxFQUFFLElBQUk7U0FDaEI7UUFDRCxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUMxQixPQUFPLEVBQUUsa0JBQWtCO1lBQzNCLElBQUksRUFBRSxXQUFXLENBQUMsWUFBWTtZQUM5QixTQUFTLEVBQUUsSUFBSTtTQUNoQjtRQUNELENBQUMsV0FB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ZSxcbiAgSW52ZW50b3J5U2VydmljZSxcbiAgVGVuYW50U2VydmljZSxcbiAgVXNlclNlcnZpY2Vcbn0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgVmlld0NvbnRleFNlcnZpY2VDb25maWcsIFZpZXdDb250ZXh0IH0gZnJvbSAnLi9yb3V0ZXIubW9kZWwnO1xuXG5leHBvcnQgY2xhc3MgVmlld0NvbnRleHRTZXJ2aWNlcyB7XG4gIHN0YXRpYyBzZXJ2aWNlczogVmlld0NvbnRleFNlcnZpY2VDb25maWcgPSB7XG4gICAgW1ZpZXdDb250ZXh0LkRldmljZV06IHsgc2VydmljZTogSW52ZW50b3J5U2VydmljZSwgcGF0aDogVmlld0NvbnRleHQuRGV2aWNlLCBhdXRvUm91dGU6IHRydWUgfSxcbiAgICBbVmlld0NvbnRleHQuR3JvdXBdOiB7IHNlcnZpY2U6IEludmVudG9yeVNlcnZpY2UsIHBhdGg6IFZpZXdDb250ZXh0Lkdyb3VwLCBhdXRvUm91dGU6IHRydWUgfSxcbiAgICBbVmlld0NvbnRleHQuVXNlcl06IHsgc2VydmljZTogVXNlclNlcnZpY2UsIHBhdGg6IFZpZXdDb250ZXh0LlVzZXIsIGF1dG9Sb3V0ZTogdHJ1ZSB9LFxuICAgIFtWaWV3Q29udGV4dC5BcHBsaWNhdGlvbl06IHtcbiAgICAgIHNlcnZpY2U6IEFwcGxpY2F0aW9uU2VydmljZSxcbiAgICAgIHBhdGg6IFZpZXdDb250ZXh0LkFwcGxpY2F0aW9uLFxuICAgICAgYXV0b1JvdXRlOiB0cnVlXG4gICAgfSxcbiAgICBbVmlld0NvbnRleHQuTWljcm9zZXJ2aWNlXToge1xuICAgICAgc2VydmljZTogQXBwbGljYXRpb25TZXJ2aWNlLFxuICAgICAgcGF0aDogVmlld0NvbnRleHQuTWljcm9zZXJ2aWNlLFxuICAgICAgYXV0b1JvdXRlOiB0cnVlXG4gICAgfSxcbiAgICBbVmlld0NvbnRleHQuRXh0ZW5zaW9uXToge1xuICAgICAgc2VydmljZTogQXBwbGljYXRpb25TZXJ2aWNlLFxuICAgICAgcGF0aDogVmlld0NvbnRleHQuRXh0ZW5zaW9uLFxuICAgICAgYXV0b1JvdXRlOiB0cnVlXG4gICAgfSxcbiAgICBbVmlld0NvbnRleHQuRmVhdHVyZV06IHtcbiAgICAgIHNlcnZpY2U6IEFwcGxpY2F0aW9uU2VydmljZSxcbiAgICAgIHBhdGg6IFZpZXdDb250ZXh0LkZlYXR1cmUsXG4gICAgICBhdXRvUm91dGU6IHRydWVcbiAgICB9LFxuICAgIFtWaWV3Q29udGV4dC5TdWJzY3JpYmVkQXBwbGljYXRpb25zXToge1xuICAgICAgc2VydmljZTogQXBwbGljYXRpb25TZXJ2aWNlLFxuICAgICAgcGF0aDogVmlld0NvbnRleHQuU3Vic2NyaWJlZEFwcGxpY2F0aW9ucyxcbiAgICAgIGF1dG9Sb3V0ZTogdHJ1ZVxuICAgIH0sXG4gICAgW1ZpZXdDb250ZXh0LlRlbmFudF06IHsgc2VydmljZTogVGVuYW50U2VydmljZSwgcGF0aDogVmlld0NvbnRleHQuVGVuYW50LCBhdXRvUm91dGU6IHRydWUgfSxcbiAgICBbVmlld0NvbnRleHQuUmVwb3J0XTogeyBzZXJ2aWNlOiBJbnZlbnRvcnlTZXJ2aWNlLCBwYXRoOiBWaWV3Q29udGV4dC5SZXBvcnQsIGF1dG9Sb3V0ZTogdHJ1ZSB9LFxuICAgIFtWaWV3Q29udGV4dC5TZXJ2aWNlXToge1xuICAgICAgc2VydmljZTogSW52ZW50b3J5U2VydmljZSxcbiAgICAgIHBhdGg6IFZpZXdDb250ZXh0LlNlcnZpY2UsXG4gICAgICBhdXRvUm91dGU6IHRydWVcbiAgICB9LFxuICAgIFtWaWV3Q29udGV4dC5EYXRhcG9pbnRMaWJyYXJ5XToge1xuICAgICAgc2VydmljZTogSW52ZW50b3J5U2VydmljZSxcbiAgICAgIHBhdGg6IFZpZXdDb250ZXh0LkRhdGFwb2ludExpYnJhcnksXG4gICAgICBhdXRvUm91dGU6IHRydWVcbiAgICB9LFxuICAgIFtWaWV3Q29udGV4dC5TaW11bGF0b3JzXToge1xuICAgICAgc2VydmljZTogSW52ZW50b3J5U2VydmljZSxcbiAgICAgIHBhdGg6IFZpZXdDb250ZXh0LlNpbXVsYXRvcnMsXG4gICAgICBhdXRvUm91dGU6IHRydWVcbiAgICB9LFxuICAgIFtWaWV3Q29udGV4dC5BbGFybXNdOiB7IHNlcnZpY2U6IEFsYXJtU2VydmljZSwgcGF0aDogJzppZCcsIGF1dG9Sb3V0ZTogZmFsc2UgfSxcbiAgICBbVmlld0NvbnRleHQuR3JvdXBBbGFybXNdOiB7IHNlcnZpY2U6IEFsYXJtU2VydmljZSwgcGF0aDogJzppZCcsIGF1dG9Sb3V0ZTogZmFsc2UgfSxcbiAgICBbVmlld0NvbnRleHQuRGV2aWNlQWxhcm1zXTogeyBzZXJ2aWNlOiBBbGFybVNlcnZpY2UsIHBhdGg6ICc6aWQnLCBhdXRvUm91dGU6IGZhbHNlIH0sXG4gICAgW1ZpZXdDb250ZXh0LlNpbXVsYXRvcnNBbGFybXNdOiB7IHNlcnZpY2U6IEFsYXJtU2VydmljZSwgcGF0aDogJzppZCcsIGF1dG9Sb3V0ZTogZmFsc2UgfSxcbiAgICBbVmlld0NvbnRleHQuU2VydmljZUFsYXJtc106IHsgc2VydmljZTogQWxhcm1TZXJ2aWNlLCBwYXRoOiAnOmlkJywgYXV0b1JvdXRlOiBmYWxzZSB9XG4gIH0gYXMgY29uc3Q7XG5cbiAgc3RhdGljIGNvbnRleHRUb1NlcnZpY2UoY29udGV4dDogVmlld0NvbnRleHQpIHtcbiAgICByZXR1cm4gVmlld0NvbnRleHRTZXJ2aWNlcy5zZXJ2aWNlc1tjb250ZXh0XT8uc2VydmljZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRQYXRoKGNvbnRleHQ6IFZpZXdDb250ZXh0KSB7XG4gICAgcmV0dXJuIFZpZXdDb250ZXh0U2VydmljZXMuc2VydmljZXNbY29udGV4dF0/LnBhdGg7XG4gIH1cblxuICBzdGF0aWMgaXNBdXRvUm91dGUoY29udGV4dDogVmlld0NvbnRleHQpIHtcbiAgICByZXR1cm4gVmlld0NvbnRleHRTZXJ2aWNlcy5zZXJ2aWNlc1tjb250ZXh0XT8uYXV0b1JvdXRlO1xuICB9XG59XG4iXX0=