aril 1.1.96 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (270) hide show
  1. package/boot/base/index.d.ts +1 -0
  2. package/boot/base/src/create-base-app-config.d.ts +12 -0
  3. package/boot/bridge/index.d.ts +2 -0
  4. package/boot/bridge/src/mfe-bridge.d.ts +33 -0
  5. package/boot/bridge/src/provide-mfe-bridge.d.ts +1 -0
  6. package/boot/config/api/index.d.ts +1 -0
  7. package/boot/config/api/src/api.service.d.ts +2 -2
  8. package/boot/config/api/src/interfaces.d.ts +1 -19
  9. package/boot/config/apps/src/apps.service.d.ts +7 -4
  10. package/boot/config/plugins/src/getNgZone.d.ts +1 -1
  11. package/boot/config/plugins/src/interfaces.d.ts +0 -37
  12. package/boot/host/src/app.component.d.ts +5 -3
  13. package/boot/mfe/src/app.component.d.ts +4 -2
  14. package/esm2022/boot/base/aril-boot-base.mjs +5 -0
  15. package/esm2022/boot/base/index.mjs +2 -0
  16. package/esm2022/boot/base/src/create-base-app-config.mjs +30 -0
  17. package/esm2022/boot/bridge/aril-boot-bridge.mjs +5 -0
  18. package/esm2022/boot/bridge/index.mjs +3 -0
  19. package/esm2022/boot/bridge/src/mfe-bridge.mjs +59 -0
  20. package/esm2022/boot/bridge/src/provide-mfe-bridge.mjs +6 -0
  21. package/esm2022/boot/config/api/index.mjs +1 -1
  22. package/esm2022/boot/config/api/src/api.service.mjs +14 -9
  23. package/esm2022/boot/config/api/src/interfaces.mjs +2 -21
  24. package/esm2022/boot/config/apps/src/apps.service.mjs +13 -16
  25. package/esm2022/boot/config/plugins/src/getNgZone.mjs +4 -3
  26. package/esm2022/boot/config/plugins/src/interfaces.mjs +1 -60
  27. package/esm2022/boot/config/plugins/src/plugins.service.mjs +9 -21
  28. package/esm2022/boot/host/src/app.component.mjs +11 -10
  29. package/esm2022/boot/host/src/bootstrap.mjs +9 -22
  30. package/esm2022/boot/mfe/src/app.component.mjs +20 -17
  31. package/esm2022/boot/mfe/src/bootstrap.mjs +13 -31
  32. package/esm2022/boot/pages/aril-boot-pages.mjs +5 -0
  33. package/esm2022/boot/pages/index.mjs +3 -0
  34. package/esm2022/{util/custom_pages → boot/pages}/src/forbidden.component.mjs +1 -1
  35. package/esm2022/{util/custom_pages → boot/pages}/src/notFound.component.mjs +1 -1
  36. package/esm2022/keycloak/src/auth.interceptor.mjs +15 -78
  37. package/esm2022/provider/src/prodiveHost.mjs +5 -8
  38. package/esm2022/provider/src/prodiveHostRouter.mjs +4 -3
  39. package/esm2022/provider/src/provideHostKeycloak.mjs +10 -2
  40. package/esm2022/theme/layout/app/breadcrumb/app.breadcrumb.component.mjs +4 -3
  41. package/esm2022/theme/layout/app/expandableMenu/expandable-menu.component.mjs +3 -4
  42. package/esm2022/theme/layout/app/general-search/general-search.component.mjs +3 -2
  43. package/esm2022/theme/layout/app/history/history.service.mjs +3 -2
  44. package/esm2022/theme/layout/app/layout/app.layout.component.mjs +1 -2
  45. package/esm2022/theme/layout/app/site-map/site-map-sidebar.component.mjs +5 -4
  46. package/esm2022/theme/layout/app/static-sidebar/static-sidebar.component.mjs +3 -4
  47. package/esm2022/theme/layout/app/topbar/app.topbar.component.mjs +7 -4
  48. package/esm2022/ui/form/src/form.component.mjs +22 -4
  49. package/esm2022/ui-business/assetPicker/src/asset-picker.component.mjs +14 -2
  50. package/esm2022/util/directives/src/detail-page-customization/detail-page-customization.directive.mjs +4 -3
  51. package/esm2022/util/pipes/src/translate-json/translate-json.pipe.mjs +3 -4
  52. package/esm2022/util/sync-active-tab-route/src/sync-active-tab-route.directive.mjs +1 -1
  53. package/fesm2022/{aril-app.component-hxaLgwmC.mjs → aril-app.component-wxP3y8dg.mjs} +22 -22
  54. package/fesm2022/aril-app.component-wxP3y8dg.mjs.map +1 -0
  55. package/fesm2022/aril-boot-base.mjs +37 -0
  56. package/fesm2022/aril-boot-base.mjs.map +1 -0
  57. package/fesm2022/aril-boot-bridge.mjs +70 -0
  58. package/fesm2022/aril-boot-bridge.mjs.map +1 -0
  59. package/fesm2022/aril-boot-config-api.mjs +12 -27
  60. package/fesm2022/aril-boot-config-api.mjs.map +1 -1
  61. package/fesm2022/aril-boot-config-apps.mjs +12 -15
  62. package/fesm2022/aril-boot-config-apps.mjs.map +1 -1
  63. package/fesm2022/aril-boot-config-plugins.mjs +10 -81
  64. package/fesm2022/aril-boot-config-plugins.mjs.map +1 -1
  65. package/fesm2022/aril-boot-host.mjs +17 -29
  66. package/fesm2022/aril-boot-host.mjs.map +1 -1
  67. package/fesm2022/{aril-boot-mfe-app.component-s1a-tkOD.mjs → aril-boot-mfe-app.component-7IjAmjz0.mjs} +22 -22
  68. package/fesm2022/aril-boot-mfe-app.component-7IjAmjz0.mjs.map +1 -0
  69. package/fesm2022/{aril-boot-mfe-aril-boot-mfe-wLTqwDtz.mjs → aril-boot-mfe-aril-boot-mfe-KXDpUyv7.mjs} +15 -69
  70. package/fesm2022/aril-boot-mfe-aril-boot-mfe-KXDpUyv7.mjs.map +1 -0
  71. package/fesm2022/aril-boot-mfe.mjs +3 -6
  72. package/fesm2022/aril-boot-mfe.mjs.map +1 -1
  73. package/fesm2022/{aril-util-custom_pages.mjs → aril-boot-pages.mjs} +1 -1
  74. package/fesm2022/aril-boot-pages.mjs.map +1 -0
  75. package/fesm2022/aril-keycloak.mjs +14 -77
  76. package/fesm2022/aril-keycloak.mjs.map +1 -1
  77. package/fesm2022/aril-provider.mjs +15 -10
  78. package/fesm2022/aril-provider.mjs.map +1 -1
  79. package/fesm2022/aril-theme-layout.mjs +15 -17
  80. package/fesm2022/aril-theme-layout.mjs.map +1 -1
  81. package/fesm2022/aril-ui-business-assetPicker.mjs +13 -1
  82. package/fesm2022/aril-ui-business-assetPicker.mjs.map +1 -1
  83. package/fesm2022/aril-ui-form.mjs +20 -3
  84. package/fesm2022/aril-ui-form.mjs.map +1 -1
  85. package/fesm2022/aril-util-directives.mjs +3 -2
  86. package/fesm2022/aril-util-directives.mjs.map +1 -1
  87. package/fesm2022/aril-util-pipes.mjs +2 -3
  88. package/fesm2022/aril-util-pipes.mjs.map +1 -1
  89. package/fesm2022/aril-util-sync-active-tab-route.mjs.map +1 -1
  90. package/fesm2022/aril.mjs +24 -87
  91. package/fesm2022/aril.mjs.map +1 -1
  92. package/package.json +111 -105
  93. package/provider/src/prodiveHost.d.ts +2 -2
  94. package/theme/layout/app/breadcrumb/app.breadcrumb.component.ts +3 -2
  95. package/theme/layout/app/expandableMenu/expandable-menu.component.d.ts +0 -2
  96. package/theme/layout/app/expandableMenu/expandable-menu.component.ts +373 -374
  97. package/theme/layout/app/general-search/general-search.component.ts +2 -1
  98. package/theme/layout/app/history/history.service.ts +2 -1
  99. package/theme/layout/app/layout/app.layout.component.d.ts +0 -1
  100. package/theme/layout/app/layout/app.layout.component.ts +0 -1
  101. package/theme/layout/app/site-map/site-map-sidebar.component.html +121 -121
  102. package/theme/layout/app/site-map/site-map-sidebar.component.ts +3 -2
  103. package/theme/layout/app/static-sidebar/static-sidebar.component.ts +336 -337
  104. package/theme/layout/app/topbar/app.topbar.component.ts +6 -3
  105. package/theme/styles/layout/_fonts.scss +1 -13
  106. package/ui/form/src/form.component.d.ts +4 -1
  107. package/boot/mfe/src/loadStyles.d.ts +0 -3
  108. package/esm2022/boot/mfe/src/loadStyles.mjs +0 -37
  109. package/esm2022/util/custom_pages/aril-util-custom_pages.mjs +0 -5
  110. package/esm2022/util/custom_pages/index.mjs +0 -3
  111. package/esm2022/util/loaders/aril-util-loaders.mjs +0 -5
  112. package/esm2022/util/loaders/index.mjs +0 -2
  113. package/esm2022/util/loaders/style/style.loader.service.mjs +0 -61
  114. package/fesm2022/aril-app.component-hxaLgwmC.mjs.map +0 -1
  115. package/fesm2022/aril-boot-mfe-app.component-s1a-tkOD.mjs.map +0 -1
  116. package/fesm2022/aril-boot-mfe-aril-boot-mfe-wLTqwDtz.mjs.map +0 -1
  117. package/fesm2022/aril-util-custom_pages.mjs.map +0 -1
  118. package/fesm2022/aril-util-loaders.mjs +0 -68
  119. package/fesm2022/aril-util-loaders.mjs.map +0 -1
  120. package/theme/fonts/Inter/Inter_18pt-Black.ttf +0 -0
  121. package/theme/fonts/Inter/Inter_18pt-BlackItalic.ttf +0 -0
  122. package/theme/fonts/Inter/Inter_18pt-Bold.ttf +0 -0
  123. package/theme/fonts/Inter/Inter_18pt-BoldItalic.ttf +0 -0
  124. package/theme/fonts/Inter/Inter_18pt-ExtraBold.ttf +0 -0
  125. package/theme/fonts/Inter/Inter_18pt-ExtraBoldItalic.ttf +0 -0
  126. package/theme/fonts/Inter/Inter_18pt-ExtraLight.ttf +0 -0
  127. package/theme/fonts/Inter/Inter_18pt-ExtraLightItalic.ttf +0 -0
  128. package/theme/fonts/Inter/Inter_18pt-Italic.ttf +0 -0
  129. package/theme/fonts/Inter/Inter_18pt-Light.ttf +0 -0
  130. package/theme/fonts/Inter/Inter_18pt-LightItalic.ttf +0 -0
  131. package/theme/fonts/Inter/Inter_18pt-Medium.ttf +0 -0
  132. package/theme/fonts/Inter/Inter_18pt-MediumItalic.ttf +0 -0
  133. package/theme/fonts/Inter/Inter_18pt-Regular.ttf +0 -0
  134. package/theme/fonts/Inter/Inter_18pt-SemiBold.ttf +0 -0
  135. package/theme/fonts/Inter/Inter_18pt-SemiBoldItalic.ttf +0 -0
  136. package/theme/fonts/Inter/Inter_18pt-Thin.ttf +0 -0
  137. package/theme/fonts/Inter/Inter_18pt-ThinItalic.ttf +0 -0
  138. package/theme/fonts/Inter/Inter_24pt-Black.ttf +0 -0
  139. package/theme/fonts/Inter/Inter_24pt-BlackItalic.ttf +0 -0
  140. package/theme/fonts/Inter/Inter_24pt-Bold.ttf +0 -0
  141. package/theme/fonts/Inter/Inter_24pt-BoldItalic.ttf +0 -0
  142. package/theme/fonts/Inter/Inter_24pt-ExtraBold.ttf +0 -0
  143. package/theme/fonts/Inter/Inter_24pt-ExtraBoldItalic.ttf +0 -0
  144. package/theme/fonts/Inter/Inter_24pt-ExtraLight.ttf +0 -0
  145. package/theme/fonts/Inter/Inter_24pt-ExtraLightItalic.ttf +0 -0
  146. package/theme/fonts/Inter/Inter_24pt-Italic.ttf +0 -0
  147. package/theme/fonts/Inter/Inter_24pt-Light.ttf +0 -0
  148. package/theme/fonts/Inter/Inter_24pt-LightItalic.ttf +0 -0
  149. package/theme/fonts/Inter/Inter_24pt-Medium.ttf +0 -0
  150. package/theme/fonts/Inter/Inter_24pt-MediumItalic.ttf +0 -0
  151. package/theme/fonts/Inter/Inter_24pt-Regular.ttf +0 -0
  152. package/theme/fonts/Inter/Inter_24pt-SemiBold.ttf +0 -0
  153. package/theme/fonts/Inter/Inter_24pt-SemiBoldItalic.ttf +0 -0
  154. package/theme/fonts/Inter/Inter_24pt-Thin.ttf +0 -0
  155. package/theme/fonts/Inter/Inter_24pt-ThinItalic.ttf +0 -0
  156. package/theme/fonts/Inter/Inter_28pt-Black.ttf +0 -0
  157. package/theme/fonts/Inter/Inter_28pt-BlackItalic.ttf +0 -0
  158. package/theme/fonts/Inter/Inter_28pt-Bold.ttf +0 -0
  159. package/theme/fonts/Inter/Inter_28pt-BoldItalic.ttf +0 -0
  160. package/theme/fonts/Inter/Inter_28pt-ExtraBold.ttf +0 -0
  161. package/theme/fonts/Inter/Inter_28pt-ExtraBoldItalic.ttf +0 -0
  162. package/theme/fonts/Inter/Inter_28pt-ExtraLight.ttf +0 -0
  163. package/theme/fonts/Inter/Inter_28pt-ExtraLightItalic.ttf +0 -0
  164. package/theme/fonts/Inter/Inter_28pt-Italic.ttf +0 -0
  165. package/theme/fonts/Inter/Inter_28pt-Light.ttf +0 -0
  166. package/theme/fonts/Inter/Inter_28pt-LightItalic.ttf +0 -0
  167. package/theme/fonts/Inter/Inter_28pt-Medium.ttf +0 -0
  168. package/theme/fonts/Inter/Inter_28pt-MediumItalic.ttf +0 -0
  169. package/theme/fonts/Inter/Inter_28pt-Regular.ttf +0 -0
  170. package/theme/fonts/Inter/Inter_28pt-SemiBold.ttf +0 -0
  171. package/theme/fonts/Inter/Inter_28pt-SemiBoldItalic.ttf +0 -0
  172. package/theme/fonts/Inter/Inter_28pt-Thin.ttf +0 -0
  173. package/theme/fonts/Inter/Inter_28pt-ThinItalic.ttf +0 -0
  174. package/theme/fonts/Inter/woff/Inter18pt-Black.woff +0 -0
  175. package/theme/fonts/Inter/woff/Inter18pt-Black.woff2 +0 -0
  176. package/theme/fonts/Inter/woff/Inter18pt-BlackItalic.woff +0 -0
  177. package/theme/fonts/Inter/woff/Inter18pt-BlackItalic.woff2 +0 -0
  178. package/theme/fonts/Inter/woff/Inter18pt-BoldItalic.woff +0 -0
  179. package/theme/fonts/Inter/woff/Inter18pt-BoldItalic.woff2 +0 -0
  180. package/theme/fonts/Inter/woff/Inter18pt-ExtraBold.woff +0 -0
  181. package/theme/fonts/Inter/woff/Inter18pt-ExtraBold.woff2 +0 -0
  182. package/theme/fonts/Inter/woff/Inter18pt-ExtraBoldItalic.woff +0 -0
  183. package/theme/fonts/Inter/woff/Inter18pt-ExtraBoldItalic.woff2 +0 -0
  184. package/theme/fonts/Inter/woff/Inter18pt-ExtraLight.woff +0 -0
  185. package/theme/fonts/Inter/woff/Inter18pt-ExtraLight.woff2 +0 -0
  186. package/theme/fonts/Inter/woff/Inter18pt-ExtraLightItalic.woff +0 -0
  187. package/theme/fonts/Inter/woff/Inter18pt-ExtraLightItalic.woff2 +0 -0
  188. package/theme/fonts/Inter/woff/Inter18pt-Italic.woff +0 -0
  189. package/theme/fonts/Inter/woff/Inter18pt-Italic.woff2 +0 -0
  190. package/theme/fonts/Inter/woff/Inter18pt-Light.woff +0 -0
  191. package/theme/fonts/Inter/woff/Inter18pt-Light.woff2 +0 -0
  192. package/theme/fonts/Inter/woff/Inter18pt-LightItalic.woff +0 -0
  193. package/theme/fonts/Inter/woff/Inter18pt-LightItalic.woff2 +0 -0
  194. package/theme/fonts/Inter/woff/Inter18pt-MediumItalic.woff +0 -0
  195. package/theme/fonts/Inter/woff/Inter18pt-MediumItalic.woff2 +0 -0
  196. package/theme/fonts/Inter/woff/Inter18pt-SemiBoldItalic.woff +0 -0
  197. package/theme/fonts/Inter/woff/Inter18pt-SemiBoldItalic.woff2 +0 -0
  198. package/theme/fonts/Inter/woff/Inter18pt-Thin.woff +0 -0
  199. package/theme/fonts/Inter/woff/Inter18pt-Thin.woff2 +0 -0
  200. package/theme/fonts/Inter/woff/Inter18pt-ThinItalic.woff +0 -0
  201. package/theme/fonts/Inter/woff/Inter18pt-ThinItalic.woff2 +0 -0
  202. package/theme/fonts/Inter/woff/Inter24pt-Black.woff +0 -0
  203. package/theme/fonts/Inter/woff/Inter24pt-Black.woff2 +0 -0
  204. package/theme/fonts/Inter/woff/Inter24pt-BlackItalic.woff +0 -0
  205. package/theme/fonts/Inter/woff/Inter24pt-BlackItalic.woff2 +0 -0
  206. package/theme/fonts/Inter/woff/Inter24pt-Bold.woff +0 -0
  207. package/theme/fonts/Inter/woff/Inter24pt-Bold.woff2 +0 -0
  208. package/theme/fonts/Inter/woff/Inter24pt-BoldItalic.woff +0 -0
  209. package/theme/fonts/Inter/woff/Inter24pt-BoldItalic.woff2 +0 -0
  210. package/theme/fonts/Inter/woff/Inter24pt-ExtraBold.woff +0 -0
  211. package/theme/fonts/Inter/woff/Inter24pt-ExtraBold.woff2 +0 -0
  212. package/theme/fonts/Inter/woff/Inter24pt-ExtraBoldItalic.woff +0 -0
  213. package/theme/fonts/Inter/woff/Inter24pt-ExtraBoldItalic.woff2 +0 -0
  214. package/theme/fonts/Inter/woff/Inter24pt-ExtraLight.woff +0 -0
  215. package/theme/fonts/Inter/woff/Inter24pt-ExtraLight.woff2 +0 -0
  216. package/theme/fonts/Inter/woff/Inter24pt-ExtraLightItalic.woff +0 -0
  217. package/theme/fonts/Inter/woff/Inter24pt-ExtraLightItalic.woff2 +0 -0
  218. package/theme/fonts/Inter/woff/Inter24pt-Italic.woff +0 -0
  219. package/theme/fonts/Inter/woff/Inter24pt-Italic.woff2 +0 -0
  220. package/theme/fonts/Inter/woff/Inter24pt-LightItalic.woff +0 -0
  221. package/theme/fonts/Inter/woff/Inter24pt-LightItalic.woff2 +0 -0
  222. package/theme/fonts/Inter/woff/Inter24pt-Medium.woff +0 -0
  223. package/theme/fonts/Inter/woff/Inter24pt-Medium.woff2 +0 -0
  224. package/theme/fonts/Inter/woff/Inter24pt-MediumItalic.woff +0 -0
  225. package/theme/fonts/Inter/woff/Inter24pt-MediumItalic.woff2 +0 -0
  226. package/theme/fonts/Inter/woff/Inter24pt-Regular.woff +0 -0
  227. package/theme/fonts/Inter/woff/Inter24pt-Regular.woff2 +0 -0
  228. package/theme/fonts/Inter/woff/Inter24pt-SemiBold.woff +0 -0
  229. package/theme/fonts/Inter/woff/Inter24pt-SemiBold.woff2 +0 -0
  230. package/theme/fonts/Inter/woff/Inter24pt-SemiBoldItalic.woff +0 -0
  231. package/theme/fonts/Inter/woff/Inter24pt-SemiBoldItalic.woff2 +0 -0
  232. package/theme/fonts/Inter/woff/Inter24pt-Thin.woff +0 -0
  233. package/theme/fonts/Inter/woff/Inter24pt-Thin.woff2 +0 -0
  234. package/theme/fonts/Inter/woff/Inter24pt-ThinItalic.woff +0 -0
  235. package/theme/fonts/Inter/woff/Inter24pt-ThinItalic.woff2 +0 -0
  236. package/theme/fonts/Inter/woff/Inter28pt-Black.woff +0 -0
  237. package/theme/fonts/Inter/woff/Inter28pt-Black.woff2 +0 -0
  238. package/theme/fonts/Inter/woff/Inter28pt-BlackItalic.woff +0 -0
  239. package/theme/fonts/Inter/woff/Inter28pt-BlackItalic.woff2 +0 -0
  240. package/theme/fonts/Inter/woff/Inter28pt-Bold.woff +0 -0
  241. package/theme/fonts/Inter/woff/Inter28pt-Bold.woff2 +0 -0
  242. package/theme/fonts/Inter/woff/Inter28pt-BoldItalic.woff +0 -0
  243. package/theme/fonts/Inter/woff/Inter28pt-BoldItalic.woff2 +0 -0
  244. package/theme/fonts/Inter/woff/Inter28pt-ExtraBoldItalic.woff +0 -0
  245. package/theme/fonts/Inter/woff/Inter28pt-ExtraBoldItalic.woff2 +0 -0
  246. package/theme/fonts/Inter/woff/Inter28pt-ExtraLightItalic.woff +0 -0
  247. package/theme/fonts/Inter/woff/Inter28pt-ExtraLightItalic.woff2 +0 -0
  248. package/theme/fonts/Inter/woff/Inter28pt-Italic.woff +0 -0
  249. package/theme/fonts/Inter/woff/Inter28pt-Italic.woff2 +0 -0
  250. package/theme/fonts/Inter/woff/Inter28pt-Light.woff +0 -0
  251. package/theme/fonts/Inter/woff/Inter28pt-Light.woff2 +0 -0
  252. package/theme/fonts/Inter/woff/Inter28pt-LightItalic.woff +0 -0
  253. package/theme/fonts/Inter/woff/Inter28pt-LightItalic.woff2 +0 -0
  254. package/theme/fonts/Inter/woff/Inter28pt-Medium.woff +0 -0
  255. package/theme/fonts/Inter/woff/Inter28pt-Medium.woff2 +0 -0
  256. package/theme/fonts/Inter/woff/Inter28pt-MediumItalic.woff +0 -0
  257. package/theme/fonts/Inter/woff/Inter28pt-MediumItalic.woff2 +0 -0
  258. package/theme/fonts/Inter/woff/Inter28pt-Regular.woff +0 -0
  259. package/theme/fonts/Inter/woff/Inter28pt-Regular.woff2 +0 -0
  260. package/theme/fonts/Inter/woff/Inter28pt-SemiBold.woff +0 -0
  261. package/theme/fonts/Inter/woff/Inter28pt-SemiBold.woff2 +0 -0
  262. package/theme/fonts/Inter/woff/Inter28pt-Thin.woff +0 -0
  263. package/theme/fonts/Inter/woff/Inter28pt-Thin.woff2 +0 -0
  264. package/theme/fonts/Inter/woff/Inter28pt-ThinItalic.woff +0 -0
  265. package/theme/fonts/Inter/woff/Inter28pt-ThinItalic.woff2 +0 -0
  266. package/util/loaders/index.d.ts +0 -1
  267. package/util/loaders/style/style.loader.service.d.ts +0 -13
  268. /package/{util/custom_pages → boot/pages}/index.d.ts +0 -0
  269. /package/{util/custom_pages → boot/pages}/src/forbidden.component.d.ts +0 -0
  270. /package/{util/custom_pages → boot/pages}/src/notFound.component.d.ts +0 -0
@@ -1,6 +1,7 @@
1
1
  import { Directive, Inject, computed, effect, inject, signal } from '@angular/core';
2
2
  import { ActivatedRoute, Router } from '@angular/router';
3
3
  import { TranslocoService } from '@ngneat/transloco';
4
+ import { bridge } from 'aril/boot/bridge';
4
5
  import { DETAIL_COMPONENT, PLUGIN_DIALOG_SERVICE } from './models';
5
6
  import * as i0 from "@angular/core";
6
7
  export class DetailPageCustomizationDirective {
@@ -13,8 +14,8 @@ export class DetailPageCustomizationDirective {
13
14
  // Internal signal to track when TabView and the menu are ready
14
15
  this.viewsInitialized = signal(false);
15
16
  this.getRouteConfig = () => {
16
- const configs = globalThis.routeConfigs;
17
- if (!configs || !Array.isArray(configs))
17
+ const configs = bridge.routeConfigs();
18
+ if (!configs)
18
19
  return undefined;
19
20
  const currentUrl = this.router.url.split('?')[0];
20
21
  let bestMatch;
@@ -295,4 +296,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
295
296
  type: Inject,
296
297
  args: [DETAIL_COMPONENT]
297
298
  }] }] });
298
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLXBhZ2UtY3VzdG9taXphdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3V0aWwvZGlyZWN0aXZlcy9zcmMvZGV0YWlsLXBhZ2UtY3VzdG9taXphdGlvbi9kZXRhaWwtcGFnZS1jdXN0b21pemF0aW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUl6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVyRCxPQUFPLEVBQ04sZ0JBQWdCLEVBSWhCLHFCQUFxQixFQUVyQixNQUFNLFVBQVUsQ0FBQzs7QUFLbEIsTUFBTSxPQUFPLGdDQUFnQztJQXlENUMsWUFBdUQsZUFBZ0M7UUFBaEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBeER0RSxVQUFLLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQy9CLFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEIsa0JBQWEsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLG9CQUFvQjtRQUNuRSxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUU3RCwrREFBK0Q7UUFDdkQscUJBQWdCLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWpDLG1CQUFjLEdBQUcsR0FBNkIsRUFBRTtZQUN2RCxNQUFNLE9BQU8sR0FBSSxVQUFrQixDQUFDLFlBRXhCLENBQUM7WUFDYixJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9B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QUFDLEtBQUssRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ2pELFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM3QixDQUFDO1NBQ0QsQ0FBQyxDQUFDLENBQUM7UUFFSixzRUFBc0U7UUFDdEUsb0VBQW9FO1FBQ3BFLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFrQixDQUFDO1FBQ3BGLE1BQU0sWUFBWSxHQUFlLGlCQUFpQixFQUFFLENBQUM7UUFFckQsb0ZBQW9GO1FBQ3BGLE1BQU0sVUFBVSxHQUFHO1lBQ2xCLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDaEgsR0FBRyxXQUFXO1NBQ2QsQ0FBQztRQUVGLElBQUksaUJBQWlCLEVBQUUsR0FBRyxFQUFFLENBQUM7WUFDNUIsaUJBQWlCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ25DLENBQUM7YUFBTSxDQUFDO1lBQ1AsSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pFLENBQUM7SUFDRixDQUFDOzhHQWxVVyxnQ0FBZ0Msa0JBeUR4QixnQkFBZ0I7a0dBekR4QixnQ0FBZ0M7OzJGQUFoQyxnQ0FBZ0M7a0JBSDVDLFNBQVM7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLElBQUk7aUJBQ2hCOzswQkEwRGEsTUFBTTsyQkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEluamVjdCwgU2lnbmFsLCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5cclxuaW1wb3J0IHsgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJ0BuZ25lYXQvdHJhbnNsb2NvJztcclxuXHJcbmltcG9ydCB7XHJcblx0REVUQUlMX0NPTVBPTkVOVCxcclxuXHREZXRhaWxDb21wb25lbnQsXHJcblx0RGV0YWlsQ29uZmlnLFxyXG5cdERldGFpbENvbmZpZ01lbnVJdGVtLFxyXG5cdFBMVUdJTl9ESUFMT0dfU0VSVklDRSxcclxuXHRUYWJDb25maWdcclxufSBmcm9tICcuL21vZGVscyc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuXHRzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEZXRhaWxQYWdlQ3VzdG9taXphdGlvbkRpcmVjdGl2ZSB7XHJcblx0cHJpdmF0ZSByZWFkb25seSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XHJcblx0cHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcclxuXHRwcml2YXRlIHJlYWRvbmx5IGRpYWxvZ1NlcnZpY2UgPSBpbmplY3QoUExVR0lOX0RJQUxPR19TRVJWSUNFKTsgLy8gVXNlIHRva2VuIGluc3RlYWRcclxuXHRwcml2YXRlIHJlYWRvbmx5IHRyYW5zbG9jb1NlcnZpY2UgPSBpbmplY3QoVHJhbnNsb2NvU2VydmljZSk7XHJcblxyXG5cdC8vIEludGVybmFsIHNpZ25hbCB0byB0cmFjayB3aGVuIFRhYlZpZXcgYW5kIHRoZSBtZW51IGFyZSByZWFkeVxyXG5cdHByaXZhdGUgdmlld3NJbml0aWFsaXplZCA9IHNpZ25hbChmYWxzZSk7XHJcblx0cHJpdmF0ZSBjb25maWc6IERldGFpbENvbmZpZyB8IHVuZGVmaW5lZDtcclxuXHRwcml2YXRlIGdldFJvdXRlQ29uZmlnID0gKCk6IERldGFpbENvbmZpZyB8IHVuZGVmaW5lZCA9PiB7XHJcblx0XHRjb25zdCBjb25maWdzID0gKGdsb2JhbFRoaXMgYXMgYW55KS5yb3V0ZUNvbmZpZ3MgYXNcclxuXHRcdFx0fCBBcnJheTx7IHBhdGg6IHN0cmluZzsgY29udGVudDogc3RyaW5nOyB2ZXJzaW9uOiBudW1iZXIgfT5cclxuXHRcdFx0fCB1bmRlZmluZWQ7XHJcblx0XHRpZiAoIWNvbmZpZ3MgfHwgIUFycmF5LmlzQXJyYXkoY29uZmlncykpIHJldHVybiB1bmRlZmluZWQ7XHJcblxyXG5cdFx0Y29uc3QgY3VycmVudFVybCA9IHRoaXMucm91dGVyLnVybC5zcGxpdCgnPycpWzBdO1xyXG5cclxuXHRcdGxldCBiZXN0TWF0Y2g6IHsgcGF0aDogc3RyaW5nOyBjb250ZW50OiBzdHJpbmc7IHZlcnNpb246IG51bWJlciB9IHwgdW5kZWZpbmVkO1xyXG5cclxuXHRcdGZvciAoY29uc3QgY29uZmlnIG9mIGNvbmZpZ3MpIHtcclxuXHRcdFx0aWYgKCFjb25maWcucGF0aCkgY29udGludWU7XHJcblxyXG5cdFx0XHRjb25zdCB1cmxUb0NoZWNrID0gY29uZmlnLnBhdGguc3RhcnRzV2l0aCgnLycpID8gY29uZmlnLnBhdGggOiBgLyR7Y29uZmlnLnBhdGh9YDtcclxuXHJcblx0XHRcdGlmIChjdXJyZW50VXJsLnN0YXJ0c1dpdGgodXJsVG9DaGVjaykpIHtcclxuXHRcdFx0XHRiZXN0TWF0Y2ggPSBjb25maWc7XHJcblx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRpZiAoIWJlc3RNYXRjaCkgcmV0dXJuIHVuZGVmaW5lZDtcclxuXHJcblx0XHR0cnkge1xyXG5cdFx0XHRyZXR1cm4gSlNPTi5wYXJzZShiZXN0TWF0Y2guY29udGVudCkgYXMgRGV0YWlsQ29uZmlnO1xyXG5cdFx0fSBjYXRjaCAoZSkge1xyXG5cdFx0XHRjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gcGFyc2Ugcm91dGUgY29uZmlnIGNvbnRlbnQ6JywgZSk7XHJcblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XHJcblx0XHR9XHJcblx0fTtcclxuXHJcblx0cHJpdmF0ZSBnZXRQcm9jZXNzZWRUYWJzOiBTaWduYWw8VGFiQ29uZmlnW10+ID0gY29tcHV0ZWQoKCkgPT4ge1xyXG5cdFx0aWYgKCF0aGlzLmNvbmZpZz8udGFicykgcmV0dXJuIFtdO1xyXG5cclxuXHRcdGNvbnN0IGFjdGl2ZUxhbmcgPSB0aGlzLnRyYW5zbG9jb1NlcnZpY2UuZ2V0QWN0aXZlTGFuZygpO1xyXG5cclxuXHRcdHJldHVybiB0aGlzLmNvbmZpZy50YWJzXHJcblx0XHRcdC5maWx0ZXIoKHRhYikgPT4gdGFiLnZpc2libGUgIT09IGZhbHNlKVxyXG5cdFx0XHQubWFwKCh0YWIpID0+ICh7XHJcblx0XHRcdFx0aWQ6IHRhYi5pZCA/PyBudWxsLFxyXG5cdFx0XHRcdGljb246IHRhYi5pY29uLFxyXG5cdFx0XHRcdGhlYWRlcjogdGFiLmxhYmVsID8gdGFiLmxhYmVsW2FjdGl2ZUxhbmddIDogJycsXHJcblx0XHRcdFx0dmlzaWJsZTogdGFiLnZpc2libGUsXHJcblx0XHRcdFx0cG9zaXRpb246IHRhYi5wb3NpdGlvbixcclxuXHRcdFx0XHRjb21wb25lbnRzOiB0YWIuY29tcG9uZW50cyB8fCBbXVxyXG5cdFx0XHR9KSk7XHJcblx0fSk7XHJcblxyXG5cdGNvbnN0cnVjdG9yKEBJbmplY3QoREVUQUlMX0NPTVBPTkVOVCkgcHJpdmF0ZSByZWFkb25seSBkZXRhaWxDb21wb25lbnQ6IERldGFpbENvbXBvbmVudCkge1xyXG5cdFx0dGhpcy5jb25maWcgPSB0aGlzLmdldFJvdXRlQ29uZmlnKCk7XHJcblx0XHRlZmZlY3QoXHJcblx0XHRcdChvbkNsZWFudXApID0+IHtcclxuXHRcdFx0XHRpZiAodGhpcy52aWV3c0luaXRpYWxpemVkKCkpIHJldHVybjtcclxuXHJcblx0XHRcdFx0Ly8gUG9sbCBldmVyeSBhbmltYXRpb24gZnJhbWUgdW50aWwgYm90aCBUYWJWaWV3IGFuZCB0aGUgbWVudSBpcyByZWFkeVxyXG5cdFx0XHRcdC8vIFRoZSBtZW51IGNhbiBiZSBkaXJlY3RseSBkZWZpbmVkIGluIHRoZSBjb21wb25lbnQgZnJvbSBpbml0IHN0ZXAsIG9yIGJlIGJ1aWx0IGR5bmFtaWNhbGx5IGFmdGVyIHdhaXRpbmcgZm9yIGEgbmV0d29yayByZXNwb25zZS4gU28gd2UgbXVzdCB3YWl0IGZvciBpdCB0byBiZSByZWFkeS5cclxuXHRcdFx0XHRjb25zdCBjaGVja1ZpZXdzID0gKCkgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKHRoaXMuZGV0YWlsQ29tcG9uZW50LnRhYlZpZXc/LnRhYnMgJiYgdGhpcy5kZXRhaWxDb21wb25lbnQubWRJbmZvUGx1Z2luUHJvcHM/LmdlbmVyYWxNZW51KCk/Lmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLnZpZXdzSW5pdGlhbGl6ZWQuc2V0KHRydWUpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLm9uVmlld3NSZWFkeSgpO1xyXG5cdFx0XHRcdFx0fSBlbHNlIGlmICghdGhpcy52aWV3c0luaXRpYWxpemVkKCkpIHtcclxuXHRcdFx0XHRcdFx0ZnJhbWVJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShjaGVja1ZpZXdzKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9O1xyXG5cclxuXHRcdFx0XHRsZXQgZnJhbWVJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShjaGVja1ZpZXdzKTtcclxuXHJcblx0XHRcdFx0b25DbGVhbnVwKCgpID0+IHtcclxuXHRcdFx0XHRcdGNhbmNlbEFuaW1hdGlvbkZyYW1lKGZyYW1lSWQpO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHR7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIG9uVmlld3NSZWFkeSgpOiB2b2lkIHtcclxuXHRcdGlmICghdGhpcy5jb25maWcpIHJldHVybjtcclxuXHJcblx0XHQvLyBzdGVwIDEgLSBoaWRlIHRhYnMgYmFzZWQgb24gY29uZmlnXHJcblx0XHRpZiAodGhpcy5kZXRhaWxDb21wb25lbnQudGFiVmlldz8udGFicykge1xyXG5cdFx0XHR0aGlzLnVwZGF0ZVRhYlZpc2liaWxpdHkoKTtcclxuXHRcdH1cclxuXHRcdC8vIHN0ZXAgMiAtIGFwcGVuZCBjb25maWcgdGFicyB0byB0aGUgc3RhdGljIHRhYnMgKG9ubHkgbmV3IG9uZXMsIG5vdCB0aG9zZSBtYXRjaGluZyBzdGF0aWMgdGFicylcclxuXHRcdGNvbnN0IGFsbENvbmZpZ1RhYnMgPSB0aGlzLmdldFByb2Nlc3NlZFRhYnMoKTtcclxuXHJcblx0XHQvLyBHZXQgSURzIG9mIGV4aXN0aW5nIHN0YXRpYyB0YWJzXHJcblx0XHRjb25zdCBzdGF0aWNUYWJJZHMgPSBuZXcgU2V0PHN0cmluZyB8IG51bWJlciB8IG51bGw+KCk7XHJcblx0XHRpZiAodGhpcy5kZXRhaWxDb21wb25lbnQudGFiVmlldz8udGFicykge1xyXG5cdFx0XHR0aGlzLmRldGFpbENvbXBvbmVudC50YWJWaWV3LnRhYnMuZm9yRWFjaCgodGFiUGFuZWwpID0+IHtcclxuXHRcdFx0XHRjb25zdCB0YWJJZCA9IHRhYlBhbmVsPy5lbD8ubmF0aXZlRWxlbWVudD8uaWQ7XHJcblx0XHRcdFx0aWYgKHRhYklkKSB7XHJcblx0XHRcdFx0XHRzdGF0aWNUYWJJZHMuYWRkKHRhYklkKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIEZpbHRlciBvdXQgY29uZmlnIHRhYnMgdGhhdCBhcmUgbWVhbnQgdG8gKnJlb3JkZXIqIGV4aXN0aW5nIHN0YXRpYyB0YWJzLlxyXG5cdFx0Ly8gQW55IHRhYiB3aG9zZSBpZCBtYXRjaGVzIGFuIGV4aXN0aW5nIHN0YXRpYyB0YWIgaWQgaXMgY29uc2lkZXJlZCBhIFwicmVvcmRlclwiXHJcblx0XHQvLyBpbnN0cnVjdGlvbjsgZXZlcnl0aGluZyBlbHNlIChpZCA9PT0gbnVsbCBPUiBhbiBpZCB0aGF0IGRvZXNuJ3QgZXhpc3QgeWV0KVxyXG5cdFx0Ly8gaXMgdHJlYXRlZCBhcyBhIGJyYW5kIG5ldyB0YWIuXHJcblx0XHRjb25zdCBuZXdDb25maWdUYWJzID0gYWxsQ29uZmlnVGFicy5maWx0ZXIoKHRhYikgPT4ge1xyXG5cdFx0XHQvLyBuZXcgdGFiIHdoZW4gaWQgaXMgbnVsbC91bmRlZmluZWRcclxuXHRcdFx0aWYgKCF0YWIuaWQpIHJldHVybiB0cnVlO1xyXG5cclxuXHRcdFx0Ly8gbmV3IHRhYiB3aGVuIGlkIGlzIHByb3ZpZGVkIGJ1dCBkb2Vzbid0IG1hdGNoIGFueSBzdGF0aWMgdGFiIGlkXHJcblx0XHRcdHJldHVybiAhc3RhdGljVGFiSWRzLmhhcyh0YWIuaWQpO1xyXG5cdFx0fSk7XHJcblxyXG5cdFx0aWYgKG5ld0NvbmZpZ1RhYnMubGVuZ3RoID4gMCAmJiB0aGlzLmRldGFpbENvbXBvbmVudC5jb25maWdUYWJzKSB7XHJcblx0XHRcdCh0aGlzLmRldGFpbENvbXBvbmVudC5jb25maWdUYWJzIGFzIGFueSkuc2V0KG5ld0NvbmZpZ1RhYnMpO1xyXG5cdFx0fSBlbHNlIGlmIChuZXdDb25maWdUYWJzLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0dGhpcy5kZXRhaWxDb21wb25lbnQudGFicyA9IG5ld0NvbmZpZ1RhYnM7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gdXNpbmcgc2V0VGltZW91dCB0byBlbnN1cmUgdGFiVmlldyBpcyByZWFkeSBhcyB3ZSB3YW50IHRvIHdvcmsgZGlyZWN0bHkgd2l0aCB0aGUgZ2VuZXJhdGVkIGVsZW1lbnRzXHJcblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0Ly8gc3RlcCAzIC0gcmVvcmRlciB0YWJzXHJcblx0XHRcdHRoaXMucmVvcmRlclRhYnNCeVBvc2l0aW9uKCk7XHJcblx0XHRcdC8vIHN0ZXAgNCAtIGFjdGl2YXRlIHRhYiBmcm9tIFVSTCBpZiBzcGVjaWZpZWRcclxuXHRcdFx0dGhpcy5hY3RpdmF0ZVRhYkZyb21VcmwoKTtcclxuXHRcdFx0Ly8gc3RlcCA1IC0gdXBkYXRlIHRoZSBtZW51XHJcblx0XHRcdGlmICh0aGlzLmNvbmZpZz8ubWVudSkge1xyXG5cdFx0XHRcdHRoaXMudXBkYXRlTWVudSh0aGlzLmNvbmZpZy5tZW51KTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHVwZGF0ZVRhYlZpc2liaWxpdHkoKTogdm9pZCB7XHJcblx0XHRpZiAoIXRoaXMuY29uZmlnPy50YWJzKSByZXR1cm47XHJcblxyXG5cdFx0Ly8gRmluZCB0YWJzIGluIGNvbmZpZyB0aGF0IGhhdmUgdmlzaWJsZTogZmFsc2VcclxuXHRcdGNvbnN0IGhpZGRlblRhYlBvc2l0aW9ucyA9IHRoaXMuY29uZmlnLnRhYnMuZmlsdGVyKCh0YWIpID0+IHRhYi52aXNpYmxlID09PSBmYWxzZSkubWFwKCh0YWIpID0+IHRhYi5wb3NpdGlvbik7XHJcblxyXG5cdFx0aGlkZGVuVGFiUG9zaXRpb25zLmZvckVhY2goKHBvc2l0aW9uKSA9PiB7XHJcblx0XHRcdHRoaXMuaGlkZVRhYkJ5UG9zaXRpb24ocG9zaXRpb24sIHRydWUpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRoaWRlVGFiQnlQb3NpdGlvbihwb3NpdGlvbjogbnVtYmVyLCBoaWRlID0gdHJ1ZSk6IHZvaWQge1xyXG5cdFx0aWYgKCF0aGlzLmRldGFpbENvbXBvbmVudC50YWJWaWV3Py50YWJzKSByZXR1cm47XHJcblxyXG5cdFx0Y29uc3QgcGFuZWxUb0hpZGUgPSB0aGlzLmRldGFpbENvbXBvbmVudC50YWJWaWV3LnRhYnNbcG9zaXRpb25dO1xyXG5cdFx0Y29uc3QgdGFiVG9IaWRlID0gdGhpcy5kZXRhaWxDb21wb25lbnQudGFiVmlldy5saXN0Py5jaGlsZHJlbltwb3NpdGlvbl0gYXMgSFRNTEVsZW1lbnQ7XHJcblxyXG5cdFx0aWYgKHRhYlRvSGlkZSAmJiBwYW5lbFRvSGlkZSkge1xyXG5cdFx0XHRwYW5lbFRvSGlkZS5lbC5uYXRpdmVFbGVtZW50LmhpZGRlbiA9IGhpZGU7XHJcblx0XHRcdHRhYlRvSGlkZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmVvcmRlciB0YWJzIGJhc2VkIG9uIGNvbmZpZyBwb3NpdGlvbnNcclxuXHQgKiBJdGVyYXRlcyBvdmVyIHZpc2libGUgY29uZmlnIHRhYnMgYW5kIHJlYXJyYW5nZXMgYm90aCBzdGF0aWMgYW5kIGNvbmZpZyB0YWJzXHJcblx0ICovXHJcblx0cHJpdmF0ZSByZW9yZGVyVGFic0J5UG9zaXRpb24oKTogdm9pZCB7XHJcblx0XHRpZiAoIXRoaXMuZGV0YWlsQ29tcG9uZW50LnRhYlZpZXc/LnRhYnMgfHwgIXRoaXMuZGV0YWlsQ29tcG9uZW50LnRhYlZpZXc/Lmxpc3QpIHJldHVybjtcclxuXHJcblx0XHRjb25zdCBjb25maWdUYWJzID0gdGhpcy5nZXRQcm9jZXNzZWRUYWJzKCk7XHJcblx0XHRjb25zdCBhbGxUYWJzID0gdGhpcy5kZXRhaWxDb21wb25lbnQudGFiVmlldy50YWJzO1xyXG5cdFx0Y29uc3QgbmF2TGlzdCA9IHRoaXMuZGV0YWlsQ29tcG9uZW50LnRhYlZpZXcubGlzdDtcclxuXHJcblx0XHRjb25zdCBjb25maWdUYWJNYXAgPSBuZXcgTWFwPHN0cmluZyB8IG51bWJlciB8IG51bGwsIFRhYkNvbmZpZz4oKTtcclxuXHRcdGNvbmZpZ1RhYnMuZm9yRWFjaCgodGFiKSA9PiB7XHJcblx0XHRcdC8vIE9ubHkgdHJlYXQgdGFicyB0aGF0IGJvdGg6XHJcblx0XHRcdC8vIC0gaGF2ZSBhbiBpZFxyXG5cdFx0XHQvLyAtIGFuZCBoYXZlIGFuIGV4cGxpY2l0IHBvc2l0aW9uXHJcblx0XHRcdC8vIGFzIFwicmVvcmRlciBpbnN0cnVjdGlvbnNcIiBmb3IgZXhpc3Rpbmcgc3RhdGljIHRhYnMuXHJcblx0XHRcdC8vIFRhYnMgd2l0aG91dCBhIHBvc2l0aW9uIChldmVuIGlmIHRoZXkgaGF2ZSBhbiBpZCkgYXJlIGNvbnNpZGVyZWRcclxuXHRcdFx0Ly8gcmVndWxhci9uZXcgdGFicyBhbmQgc2hvdWxkIGtlZXAgdGhlaXIgbmF0dXJhbCBvcmRlci5cclxuXHRcdFx0aWYgKHRhYi5pZCAmJiB0YWIucG9zaXRpb24pIHtcclxuXHRcdFx0XHRjb25maWdUYWJNYXAuc2V0KHRhYi5pZCwgdGFiKTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblxyXG5cdFx0Ly8gc2VwYXJhdGUgc3RhdGljIGZyb20gY29uZmlnIHRhYnNcclxuXHRcdGNvbnN0IHN0YXRpY1RhYnM6IEFycmF5PHsgdGFiOiBhbnk7IGluZGV4OiBudW1iZXI7IGlkOiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIH0+ID0gW107XHJcblx0XHRjb25zdCBjb25maWdUYWJJbnN0YW5jZXM6IEFycmF5PHsgdGFiOiBhbnk7IGluZGV4OiBudW1iZXI7IGNvbmZpZzogVGFiQ29uZmlnIH0+ID0gW107XHJcblxyXG5cdFx0YWxsVGFicy5mb3JFYWNoKCh0YWJQYW5lbCwgaW5kZXgpID0+IHtcclxuXHRcdFx0Y29uc3QgdGFiSWQgPSB0YWJQYW5lbD8uZWw/Lm5hdGl2ZUVsZW1lbnQ/LmlkIHx8IG51bGw7XHJcblx0XHRcdGNvbnN0IGNvbmZpZ1RhYiA9IHRhYklkID8gY29uZmlnVGFiTWFwLmdldCh0YWJJZCkgOiBudWxsO1xyXG5cclxuXHRcdFx0aWYgKGNvbmZpZ1RhYikge1xyXG5cdFx0XHRcdGNvbmZpZ1RhYkluc3RhbmNlcy5wdXNoKHsgdGFiOiB0YWJQYW5lbCwgaW5kZXgsIGNvbmZpZzogY29uZmlnVGFiIH0pO1xyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHN0YXRpY1RhYnMucHVzaCh7IHRhYjogdGFiUGFuZWwsIGluZGV4LCBpZDogdGFiSWQgfSk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdGNvbnN0IHBvc2l0aW9uTWFwID0gbmV3IE1hcDxudW1iZXIsIHsgdGFiOiBhbnk7IGlzQ29uZmlnOiBib29sZWFuOyBpZDogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB9PigpO1xyXG5cclxuXHRcdC8vIHBsYWNlIGNvbmZpZyB0YWJzIGF0IHRoZWlyIHNwZWNpZmllZCBwb3NpdGlvbnNcclxuXHRcdGNvbmZpZ1RhYkluc3RhbmNlcy5mb3JFYWNoKCh7IHRhYiwgY29uZmlnIH0pID0+IHtcclxuXHRcdFx0aWYgKGNvbmZpZy5wb3NpdGlvbiAhPT0gdW5kZWZpbmVkICYmIGNvbmZpZy5wb3NpdGlvbiAhPT0gbnVsbCkge1xyXG5cdFx0XHRcdHBvc2l0aW9uTWFwLnNldChjb25maWcucG9zaXRpb24sIHsgdGFiLCBpc0NvbmZpZzogdHJ1ZSwgaWQ6IGNvbmZpZy5pZCB9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblxyXG5cdFx0Ly8gcGxhY2Ugc3RhdGljIHRhYnMgYXQgYXZhaWxhYmxlIHBvc2l0aW9ucyAobWFpbnRhaW5pbmcgcmVsYXRpdmUgb3JkZXIpXHJcblx0XHRsZXQgc3RhdGljSW5kZXggPSAwO1xyXG5cdFx0bGV0IGN1cnJlbnRQb3NpdGlvbiA9IDA7XHJcblxyXG5cdFx0d2hpbGUgKHN0YXRpY0luZGV4IDwgc3RhdGljVGFicy5sZW5ndGgpIHtcclxuXHRcdFx0d2hpbGUgKHBvc2l0aW9uTWFwLmhhcyhjdXJyZW50UG9zaXRpb24pKSB7XHJcblx0XHRcdFx0Y3VycmVudFBvc2l0aW9uKys7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC8vIHBsYWNlIHN0YXRpYyB0YWIgYXQgdGhpcyBwb3NpdGlvblxyXG5cdFx0XHRjb25zdCBzdGF0aWNUYWIgPSBzdGF0aWNUYWJzW3N0YXRpY0luZGV4XTtcclxuXHRcdFx0cG9zaXRpb25NYXAuc2V0KGN1cnJlbnRQb3NpdGlvbiwgeyB0YWI6IHN0YXRpY1RhYi50YWIsIGlzQ29uZmlnOiBmYWxzZSwgaWQ6IHN0YXRpY1RhYi5pZCB9KTtcclxuXHRcdFx0c3RhdGljSW5kZXgrKztcclxuXHRcdFx0Y3VycmVudFBvc2l0aW9uKys7XHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gYnVpbGQgb3JkZXJlZCBhcnJheVxyXG5cdFx0Y29uc3Qgc29ydGVkUG9zaXRpb25zID0gQXJyYXkuZnJvbShwb3NpdGlvbk1hcC5rZXlzKCkpLnNvcnQoKGEsIGIpID0+IGEgLSBiKTtcclxuXHRcdGNvbnN0IHJlb3JkZXJlZFRhYnM6IGFueVtdID0gW107XHJcblx0XHRjb25zdCByZW9yZGVyZWRIZWFkZXJzOiBIVE1MRWxlbWVudFtdID0gW107XHJcblxyXG5cdFx0c29ydGVkUG9zaXRpb25zLmZvckVhY2goKHBvc2l0aW9uKSA9PiB7XHJcblx0XHRcdGNvbnN0IHRhYkluZm8gPSBwb3NpdGlvbk1hcC5nZXQocG9zaXRpb24pITtcclxuXHRcdFx0cmVvcmRlcmVkVGFicy5wdXNoKHRhYkluZm8udGFiKTtcclxuXHJcblx0XHRcdGNvbnN0IG9yaWdpbmFsSW5kZXggPSBhbGxUYWJzLmluZGV4T2YodGFiSW5mby50YWIpO1xyXG5cdFx0XHRpZiAob3JpZ2luYWxJbmRleCAhPT0gLTEgJiYgbmF2TGlzdC5jaGlsZHJlbltvcmlnaW5hbEluZGV4XSkge1xyXG5cdFx0XHRcdHJlb3JkZXJlZEhlYWRlcnMucHVzaChuYXZMaXN0LmNoaWxkcmVuW29yaWdpbmFsSW5kZXhdIGFzIEhUTUxFbGVtZW50KTtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblxyXG5cdFx0Ly8gcmVvcmRlciB0YWJzIGFycmF5XHJcblx0XHR0aGlzLmRldGFpbENvbXBvbmVudC50YWJWaWV3LnRhYnMubGVuZ3RoID0gMDtcclxuXHRcdHJlb3JkZXJlZFRhYnMuZm9yRWFjaCgodGFiKSA9PiB0aGlzLmRldGFpbENvbXBvbmVudC50YWJWaWV3IS50YWJzLnB1c2godGFiKSk7XHJcblxyXG5cdFx0Ly8gcmVvcmRlciBkb20gaGVhZGVyc1xyXG5cdFx0cmVvcmRlcmVkSGVhZGVycy5mb3JFYWNoKChoZWFkZXIsIG5ld0luZGV4KSA9PiB7XHJcblx0XHRcdGNvbnN0IHRhcmdldEhlYWRlciA9IG5hdkxpc3QuY2hpbGRyZW5bbmV3SW5kZXhdO1xyXG5cdFx0XHRpZiAodGFyZ2V0SGVhZGVyICYmIHRhcmdldEhlYWRlciAhPT0gaGVhZGVyKSB7XHJcblx0XHRcdFx0bmF2TGlzdC5pbnNlcnRCZWZvcmUoaGVhZGVyLCB0YXJnZXRIZWFkZXIpO1xyXG5cdFx0XHR9IGVsc2UgaWYgKCF0YXJnZXRIZWFkZXIpIHtcclxuXHRcdFx0XHRuYXZMaXN0LmFwcGVuZENoaWxkKGhlYWRlcik7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdC8vIHJlb3JkZXIgZG9tIHBhbmVsc1xyXG5cdFx0Y29uc3QgcGFuZWxzQ29udGFpbmVyID0gYWxsVGFic1swXT8uZWwubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50O1xyXG5cdFx0aWYgKHBhbmVsc0NvbnRhaW5lcikge1xyXG5cdFx0XHRyZW9yZGVyZWRUYWJzLmZvckVhY2goKHRhYlBhbmVsLCBuZXdJbmRleCkgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IHRhcmdldFBhbmVsID0gcGFuZWxzQ29udGFpbmVyLmNoaWxkcmVuW25ld0luZGV4XTtcclxuXHRcdFx0XHRpZiAodGFyZ2V0UGFuZWwgJiYgdGFyZ2V0UGFuZWwgIT09IHRhYlBhbmVsLmVsLm5hdGl2ZUVsZW1lbnQpIHtcclxuXHRcdFx0XHRcdHBhbmVsc0NvbnRhaW5lci5pbnNlcnRCZWZvcmUodGFiUGFuZWwuZWwubmF0aXZlRWxlbWVudCwgdGFyZ2V0UGFuZWwpO1xyXG5cdFx0XHRcdH0gZWxzZSBpZiAoIXRhcmdldFBhbmVsKSB7XHJcblx0XHRcdFx0XHRwYW5lbHNDb250YWluZXIuYXBwZW5kQ2hpbGQodGFiUGFuZWwuZWwubmF0aXZlRWxlbWVudCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAodGhpcy5kZXRhaWxDb21wb25lbnQudGFiVmlldy5jZCkge1xyXG5cdFx0XHR0aGlzLmRldGFpbENvbXBvbmVudC50YWJWaWV3LmNkLm1hcmtGb3JDaGVjaygpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBhY3RpdmF0ZVRhYkZyb21VcmwoKTogdm9pZCB7XHJcblx0XHRpZiAoIXRoaXMuZGV0YWlsQ29tcG9uZW50LnRhYlZpZXcpIHJldHVybjtcclxuXHJcblx0XHRjb25zdCBhY3RpdmVUYWJQYXJhbSA9IHRoaXMucm91dGUuc25hcHNob3QucXVlcnlQYXJhbU1hcC5nZXQoJ2FjdGl2ZVRhYicpO1xyXG5cdFx0aWYgKGFjdGl2ZVRhYlBhcmFtKSB7XHJcblx0XHRcdGNvbnN0IGFjdGl2ZVRhYkluZGV4ID0gTnVtYmVyKGFjdGl2ZVRhYlBhcmFtKTtcclxuXHJcblx0XHRcdGlmIChcclxuXHRcdFx0XHQhaXNOYU4oYWN0aXZlVGFiSW5kZXgpICYmXHJcblx0XHRcdFx0YWN0aXZlVGFiSW5kZXggPj0gMCAmJlxyXG5cdFx0XHRcdHRoaXMuZGV0YWlsQ29tcG9uZW50LnRhYlZpZXcudGFicyAmJlxyXG5cdFx0XHRcdGFjdGl2ZVRhYkluZGV4IDwgdGhpcy5kZXRhaWxDb21wb25lbnQudGFiVmlldy50YWJzLmxlbmd0aFxyXG5cdFx0XHQpIHtcclxuXHRcdFx0XHR0aGlzLmRldGFpbENvbXBvbmVudC50YWJWaWV3LmFjdGl2ZUluZGV4ID0gYWN0aXZlVGFiSW5kZXg7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgdXBkYXRlTWVudShtZW51Q29uZmlnOiBEZXRhaWxDb25maWdNZW51SXRlbVtdKSB7XHJcblx0XHRjb25zdCBjb250ZXh0ID0ge1xyXG5cdFx0XHRyb3V0ZXI6IHRoaXMucm91dGVyLFxyXG5cdFx0XHRyb3V0ZTogdGhpcy5yb3V0ZSxcclxuXHRcdFx0ZGlhbG9nU2VydmljZTogdGhpcy5kaWFsb2dTZXJ2aWNlLFxyXG5cdFx0XHRjb21wb25lbnQ6IHRoaXMuZGV0YWlsQ29tcG9uZW50XHJcblx0XHR9O1xyXG5cclxuXHRcdGNvbnN0IGFjdGl2ZUxhbmcgPSB0aGlzLnRyYW5zbG9jb1NlcnZpY2UuZ2V0QWN0aXZlTGFuZygpO1xyXG5cdFx0Y29uc3QgZHluYW1pY01lbnU6IE1lbnVJdGVtW10gPSBtZW51Q29uZmlnLm1hcCgobSkgPT4gKHtcclxuXHRcdFx0bGFiZWw6IG0ubGFiZWxbYWN0aXZlTGFuZ10gPz8gJycsXHJcblx0XHRcdGljb246IG0uaWNvbixcclxuXHRcdFx0Y29tbWFuZDogKF9ldmVudDogYW55KSA9PiB7XHJcblx0XHRcdFx0Y29uc3QgY29tbWFuZEZuID0gbmV3IEZ1bmN0aW9uKCdjdHgnLCBtLmNvbW1hbmQpO1xyXG5cdFx0XHRcdGNvbW1hbmRGbihjb250ZXh0KShjb250ZXh0KTtcclxuXHRcdFx0fVxyXG5cdFx0fSkpO1xyXG5cclxuXHRcdC8vIFVwZGF0ZSB0aGUgZXhpc3Rpbmcgc2lnbmFsIGluc3RlYWQgb2YgcmVwbGFjaW5nIGl0IHRvIGVuc3VyZSBjaGFuZ2VcclxuXHRcdC8vIGRldGVjdGlvbiBwaWNrcyB1cCB0aGUgbWVudSB1cGRhdGUgYWZ0ZXIgYnJvd3NlciBiYWNrIG5hdmlnYXRpb24uXHJcblx0XHRjb25zdCBnZW5lcmFsTWVudVNpZ25hbCA9IHRoaXMuZGV0YWlsQ29tcG9uZW50Lm1kSW5mb1BsdWdpblByb3BzLmdlbmVyYWxNZW51IGFzIGFueTtcclxuXHRcdGNvbnN0IGV4aXN0aW5nTWVudTogTWVudUl0ZW1bXSA9IGdlbmVyYWxNZW51U2lnbmFsKCk7XHJcblxyXG5cdFx0Ly8gQXZvaWQgZHVwbGljYXRpbmcgcHJldmlvdXNseSBhZGRlZCBkeW5hbWljIGl0ZW1zIChpZGVudGlmaWVkIGJ5IGxhYmVsL2ljb24gbWF0Y2gpXHJcblx0XHRjb25zdCBtZXJnZWRNZW51ID0gW1xyXG5cdFx0XHQuLi5leGlzdGluZ01lbnUuZmlsdGVyKChpdGVtKSA9PiAhZHluYW1pY01lbnUuc29tZSgoZHluKSA9PiBkeW4ubGFiZWwgPT09IGl0ZW0ubGFiZWwgJiYgZHluLmljb24gPT09IGl0ZW0uaWNvbikpLFxyXG5cdFx0XHQuLi5keW5hbWljTWVudVxyXG5cdFx0XTtcclxuXHJcblx0XHRpZiAoZ2VuZXJhbE1lbnVTaWduYWw/LnNldCkge1xyXG5cdFx0XHRnZW5lcmFsTWVudVNpZ25hbC5zZXQobWVyZ2VkTWVudSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLmRldGFpbENvbXBvbmVudC5tZEluZm9QbHVnaW5Qcm9wcy5nZW5lcmFsTWVudSA9IHNpZ25hbChtZXJnZWRNZW51KTtcclxuXHRcdH1cclxuXHR9XHJcbn1cclxuIl19
299
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLXBhZ2UtY3VzdG9taXphdGlvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcmlsL3V0aWwvZGlyZWN0aXZlcy9zcmMvZGV0YWlsLXBhZ2UtY3VzdG9taXphdGlvbi9kZXRhaWwtcGFnZS1jdXN0b21pemF0aW9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUl6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVyRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFMUMsT0FBTyxFQUNOLGdCQUFnQixFQUloQixxQkFBcUIsRUFFckIsTUFBTSxVQUFVLENBQUM7O0FBS2xCLE1BQU0sT0FBTyxnQ0FBZ0M7SUF1RDVDLFlBQXVELGVBQWdDO1FBQWhDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQXREdEUsVUFBSyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUMvQixXQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hCLGtCQUFhLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxvQkFBb0I7UUFDbkUscUJBQWdCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFN0QsK0RBQStEO1FBQ3ZELHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVqQyxtQkFBYyxHQUFHLEdBQTZCLEVBQUU7WUFDdkQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxD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dCwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5pbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuXHJcbmltcG9ydCB7IFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAbmduZWF0L3RyYW5zbG9jbyc7XHJcblxyXG5pbXBvcnQgeyBicmlkZ2UgfSBmcm9tICdhcmlsL2Jvb3QvYnJpZGdlJztcclxuXHJcbmltcG9ydCB7XHJcblx0REVUQUlMX0NPTVBPTkVOVCxcclxuXHREZXRhaWxDb21wb25lbnQsXHJcblx0RGV0YWlsQ29uZmlnLFxyXG5cdERldGFpbENvbmZpZ01lbnVJdGVtLFxyXG5cdFBMVUdJTl9ESUFMT0dfU0VSVklDRSxcclxuXHRUYWJDb25maWdcclxufSBmcm9tICcuL21vZGVscyc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuXHRzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEZXRhaWxQYWdlQ3VzdG9taXphdGlvbkRpcmVjdGl2ZSB7XHJcblx0cHJpdmF0ZSByZWFkb25seSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XHJcblx0cHJpdmF0ZSByZWFkb25seSByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcclxuXHRwcml2YXRlIHJlYWRvbmx5IGRpYWxvZ1NlcnZpY2UgPSBpbmplY3QoUExVR0lOX0RJQUxPR19TRVJWSUNFKTsgLy8gVXNlIHRva2VuIGluc3RlYWRcclxuXHRwcml2YXRlIHJlYWRvbmx5IHRyYW5zbG9jb1NlcnZpY2UgPSBpbmplY3QoVHJhbnNsb2NvU2VydmljZSk7XHJcblxyXG5cdC8vIEludGVybmFsIHNpZ25hbCB0byB0cmFjayB3aGVuIFRhYlZpZXcgYW5kIHRoZSBtZW51IGFyZSByZWFkeVxyXG5cdHByaXZhdGUgdmlld3NJbml0aWFsaXplZCA9IHNpZ25hbChmYWxzZSk7XHJcblx0cHJpdmF0ZSBjb25maWc6IERldGFpbENvbmZpZyB8IHVuZGVmaW5lZDtcclxuXHRwcml2YXRlIGdldFJvdXRlQ29uZmlnID0gKCk6IERldGFpbENvbmZpZyB8IHVuZGVmaW5lZCA9PiB7XHJcblx0XHRjb25zdCBjb25maWdzID0gYnJpZGdlLnJvdXRlQ29uZmlncygpO1xyXG5cdFx0aWYgKCFjb25maWdzKSByZXR1cm4gdW5kZWZpbmVkO1xyXG5cclxuXHRcdGNvbnN0IGN1cnJlbnRVcmwgPSB0aGlzLnJvdXRlci51cmwuc3BsaXQoJz8nKVswXTtcclxuXHJcblx0XHRsZXQgYmVzdE1hdGNoOiB7IHBhdGg6IHN0cmluZzsgY29udGVudDogc3RyaW5nOyB2ZXJzaW9uOiBudW1iZXIgfSB8IHVuZGVmaW5lZDtcclxuXHJcblx0XHRmb3IgKGNvbnN0IGNvbmZpZyBvZiBjb25maWdzKSB7XHJcblx0XHRcdGlmICghY29uZmlnLnBhdGgpIGNvbnRpbnVlO1xyXG5cclxuXHRcdFx0Y29uc3QgdXJsVG9DaGVjayA9IGNvbmZpZy5wYXRoLnN0YXJ0c1dpdGgoJy8nKSA/IGNvbmZpZy5wYXRoIDogYC8ke2NvbmZpZy5wYXRofWA7XHJcblxyXG5cdFx0XHRpZiAoY3VycmVudFVybC5zdGFydHNXaXRoKHVybFRvQ2hlY2spKSB7XHJcblx0XHRcdFx0YmVzdE1hdGNoID0gY29uZmlnO1xyXG5cdFx0XHRcdGJyZWFrO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKCFiZXN0TWF0Y2gpIHJldHVybiB1bmRlZmluZWQ7XHJcblxyXG5cdFx0dHJ5IHtcclxuXHRcdFx0cmV0dXJuIEpTT04ucGFyc2UoYmVzdE1hdGNoLmNvbnRlbnQpIGFzIERldGFpbENvbmZpZztcclxuXHRcdH0gY2F0Y2ggKGUpIHtcclxuXHRcdFx0Y29uc29sZS5lcnJvcignRmFpbGVkIHRvIHBhcnNlIHJvdXRlIGNvbmZpZyBjb250ZW50OicsIGUpO1xyXG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xyXG5cdFx0fVxyXG5cdH07XHJcblxyXG5cdHByaXZhdGUgZ2V0UHJvY2Vzc2VkVGFiczogU2lnbmFsPFRhYkNvbmZpZ1tdPiA9IGNvbXB1dGVkKCgpID0+IHtcclxuXHRcdGlmICghdGhpcy5jb25maWc/LnRhYnMpIHJldHVybiBbXTtcclxuXHJcblx0XHRjb25zdCBhY3RpdmVMYW5nID0gdGhpcy50cmFuc2xvY29TZXJ2aWNlLmdldEFjdGl2ZUxhbmcoKTtcclxuXHJcblx0XHRyZXR1cm4gdGhpcy5jb25maWcudGFic1xyXG5cdFx0XHQuZmlsdGVyKCh0YWIpID0+IHRhYi52aXNpYmxlICE9PSBmYWxzZSlcclxuXHRcdFx0Lm1hcCgodGFiKSA9PiAoe1xyXG5cdFx0XHRcdGlkOiB0YWIuaWQgPz8gbnVsbCxcclxuXHRcdFx0XHRpY29uOiB0YWIuaWNvbixcclxuXHRcdFx0XHRoZWFkZXI6IHRhYi5sYWJlbCA/IHRhYi5sYWJlbFthY3RpdmVMYW5nXSA6ICcnLFxyXG5cdFx0XHRcdHZpc2libGU6IHRhYi52aXNpYmxlLFxyXG5cdFx0XHRcdHBvc2l0aW9uOiB0YWIucG9zaXRpb24sXHJcblx0XHRcdFx0Y29tcG9uZW50czogdGFiLmNvbXBvbmVudHMgfHwgW11cclxuXHRcdFx0fSkpO1xyXG5cdH0pO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihASW5qZWN0KERFVEFJTF9DT01QT05FTlQpIHByaXZhdGUgcmVhZG9ubHkgZGV0YWlsQ29tcG9uZW50OiBEZXRhaWxDb21wb25lbnQpIHtcclxuXHRcdHRoaXMuY29uZmlnID0gdGhpcy5nZXRSb3V0ZUNvbmZpZygpO1xyXG5cdFx0ZWZmZWN0KFxyXG5cdFx0XHQob25DbGVhbnVwKSA9PiB7XHJcblx0XHRcdFx0aWYgKHRoaXMudmlld3NJbml0aWFsaXplZCgpKSByZXR1cm47XHJcblxyXG5cdFx0XHRcdC8vIFBvbGwgZXZlcnkgYW5pbWF0aW9uIGZyYW1lIHVudGlsIGJvdGggVGFiVmlldyBhbmQgdGhlIG1lbnUgaXMgcmVhZHlcclxuXHRcdFx0XHQvLyBUaGUgbWVudSBjYW4gYmUgZGlyZWN0bHkgZGVmaW5lZCBpbiB0aGUgY29tcG9uZW50IGZyb20gaW5pdCBzdGVwLCBvciBiZSBidWlsdCBkeW5hbWljYWxseSBhZnRlciB3YWl0aW5nIGZvciBhIG5ldHdvcmsgcmVzcG9uc2UuIFNvIHdlIG11c3Qgd2FpdCBmb3IgaXQgdG8gYmUgcmVhZHkuXHJcblx0XHRcdFx0Y29uc3QgY2hlY2tWaWV3cyA9ICgpID0+IHtcclxuXHRcdFx0XHRcdGlmICh0aGlzLmRldGFpbENvbXBvbmVudC50YWJWaWV3Py50YWJzICYmIHRoaXMuZGV0YWlsQ29tcG9uZW50Lm1kSW5mb1BsdWdpblByb3BzPy5nZW5lcmFsTWVudSgpPy5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy52aWV3c0luaXRpYWxpemVkLnNldCh0cnVlKTtcclxuXHRcdFx0XHRcdFx0dGhpcy5vblZpZXdzUmVhZHkoKTtcclxuXHRcdFx0XHRcdH0gZWxzZSBpZiAoIXRoaXMudmlld3NJbml0aWFsaXplZCgpKSB7XHJcblx0XHRcdFx0XHRcdGZyYW1lSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2hlY2tWaWV3cyk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fTtcclxuXHJcblx0XHRcdFx0bGV0IGZyYW1lSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2hlY2tWaWV3cyk7XHJcblxyXG5cdFx0XHRcdG9uQ2xlYW51cCgoKSA9PiB7XHJcblx0XHRcdFx0XHRjYW5jZWxBbmltYXRpb25GcmFtZShmcmFtZUlkKTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSxcclxuXHRcdFx0eyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSBvblZpZXdzUmVhZHkoKTogdm9pZCB7XHJcblx0XHRpZiAoIXRoaXMuY29uZmlnKSByZXR1cm47XHJcblxyXG5cdFx0Ly8gc3RlcCAxIC0gaGlkZSB0YWJzIGJhc2VkIG9uIGNvbmZpZ1xyXG5cdFx0aWYgKHRoaXMuZGV0YWlsQ29tcG9uZW50LnRhYlZpZXc/LnRhYnMpIHtcclxuXHRcdFx0dGhpcy51cGRhdGVUYWJWaXNpYmlsaXR5KCk7XHJcblx0XHR9XHJcblx0XHQvLyBzdGVwIDIgLSBhcHBlbmQgY29uZmlnIHRhYnMgdG8gdGhlIHN0YXRpYyB0YWJzIChvbmx5IG5ldyBvbmVzLCBub3QgdGhvc2UgbWF0Y2hpbmcgc3RhdGljIHRhYnMpXHJcblx0XHRjb25zdCBhbGxDb25maWdUYWJzID0gdGhpcy5nZXRQcm9jZXNzZWRUYWJzKCk7XHJcblxyXG5cdFx0Ly8gR2V0IElEcyBvZiBleGlzdGluZyBzdGF0aWMgdGFic1xyXG5cdFx0Y29uc3Qgc3RhdGljVGFiSWRzID0gbmV3IFNldDxzdHJpbmcgfCBudW1iZXIgfCBudWxsPigpO1xyXG5cdFx0aWYgKHRoaXMuZGV0YWlsQ29tcG9uZW50LnRhYlZpZXc/LnRhYnMpIHtcclxuXHRcdFx0dGhpcy5kZXRhaWxDb21wb25lbnQudGFiVmlldy50YWJzLmZvckVhY2goKHRhYlBhbmVsKSA9PiB7XHJcblx0XHRcdFx0Y29uc3QgdGFiSWQgPSB0YWJQYW5lbD8uZWw/Lm5hdGl2ZUVsZW1lbnQ/LmlkO1xyXG5cdFx0XHRcdGlmICh0YWJJZCkge1xyXG5cdFx0XHRcdFx0c3RhdGljVGFiSWRzLmFkZCh0YWJJZCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBGaWx0ZXIgb3V0IGNvbmZpZyB0YWJzIHRoYXQgYXJlIG1lYW50IHRvICpyZW9yZGVyKiBleGlzdGluZyBzdGF0aWMgdGFicy5cclxuXHRcdC8vIEFueSB0YWIgd2hvc2UgaWQgbWF0Y2hlcyBhbiBleGlzdGluZyBzdGF0aWMgdGFiIGlkIGlzIGNvbnNpZGVyZWQgYSBcInJlb3JkZXJcIlxyXG5cdFx0Ly8gaW5zdHJ1Y3Rpb247IGV2ZXJ5dGhpbmcgZWxzZSAoaWQgPT09IG51bGwgT1IgYW4gaWQgdGhhdCBkb2Vzbid0IGV4aXN0IHlldClcclxuXHRcdC8vIGlzIHRyZWF0ZWQgYXMgYSBicmFuZCBuZXcgdGFiLlxyXG5cdFx0Y29uc3QgbmV3Q29uZmlnVGFicyA9IGFsbENvbmZpZ1RhYnMuZmlsdGVyKCh0YWIpID0+IHtcclxuXHRcdFx0Ly8gbmV3IHRhYiB3aGVuIGlkIGlzIG51bGwvdW5kZWZpbmVkXHJcblx0XHRcdGlmICghdGFiLmlkKSByZXR1cm4gdHJ1ZTtcclxuXHJcblx0XHRcdC8vIG5ldyB0YWIgd2hlbiBpZCBpcyBwcm92aWRlZCBidXQgZG9lc24ndCBtYXRjaCBhbnkgc3RhdGljIHRhYiBpZFxyXG5cdFx0XHRyZXR1cm4gIXN0YXRpY1RhYklkcy5oYXModGFiLmlkKTtcclxuXHRcdH0pO1xyXG5cclxuXHRcdGlmIChuZXdDb25maWdUYWJzLmxlbmd0aCA+IDAgJiYgdGhpcy5kZXRhaWxDb21wb25lbnQuY29uZmlnVGFicykge1xyXG5cdFx0XHQodGhpcy5kZXRhaWxDb21wb25lbnQuY29uZmlnVGFicyBhcyBhbnkpLnNldChuZXdDb25maWdUYWJzKTtcclxuXHRcdH0gZWxzZSBpZiAobmV3Q29uZmlnVGFicy5sZW5ndGggPiAwKSB7XHJcblx0XHRcdHRoaXMuZGV0YWlsQ29tcG9uZW50LnRhYnMgPSBuZXdDb25maWdUYWJzO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIHVzaW5nIHNldFRpbWVvdXQgdG8gZW5zdXJlIHRhYlZpZXcgaXMgcmVhZHkgYXMgd2Ugd2FudCB0byB3b3JrIGRpcmVjdGx5IHdpdGggdGhlIGdlbmVyYXRlZCBlbGVtZW50c1xyXG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdC8vIHN0ZXAgMyAtIHJlb3JkZXIgdGFic1xyXG5cdFx0XHR0aGlzLnJlb3JkZXJUYWJzQnlQb3NpdGlvbigpO1xyXG5cdFx0XHQvLyBzdGVwIDQgLSBhY3RpdmF0ZSB0YWIgZnJvbSBVUkwgaWYgc3BlY2lmaWVkXHJcblx0XHRcdHRoaXMuYWN0aXZhdGVUYWJGcm9tVXJsKCk7XHJcblx0XHRcdC8vIHN0ZXAgNSAtIHVwZGF0ZSB0aGUgbWVudVxyXG5cdFx0XHRpZiAodGhpcy5jb25maWc/Lm1lbnUpIHtcclxuXHRcdFx0XHR0aGlzLnVwZGF0ZU1lbnUodGhpcy5jb25maWcubWVudSk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0cHJpdmF0ZSB1cGRhdGVUYWJWaXNpYmlsaXR5KCk6IHZvaWQge1xyXG5cdFx0aWYgKCF0aGlzLmNvbmZpZz8udGFicykgcmV0dXJuO1xyXG5cclxuXHRcdC8vIEZpbmQgdGFicyBpbiBjb25maWcgdGhhdCBoYXZlIHZpc2libGU6IGZhbHNlXHJcblx0XHRjb25zdCBoaWRkZW5UYWJQb3NpdGlvbnMgPSB0aGlzLmNvbmZpZy50YWJzLmZpbHRlcigodGFiKSA9PiB0YWIudmlzaWJsZSA9PT0gZmFsc2UpLm1hcCgodGFiKSA9PiB0YWIucG9zaXRpb24pO1xyXG5cclxuXHRcdGhpZGRlblRhYlBvc2l0aW9ucy5mb3JFYWNoKChwb3NpdGlvbikgPT4ge1xyXG5cdFx0XHR0aGlzLmhpZGVUYWJCeVBvc2l0aW9uKHBvc2l0aW9uLCB0cnVlKTtcclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0aGlkZVRhYkJ5UG9zaXRpb24ocG9zaXRpb246IG51bWJlciwgaGlkZSA9IHRydWUpOiB2b2lkIHtcclxuXHRcdGlmICghdGhpcy5kZXRhaWxDb21wb25lbnQudGFiVmlldz8udGFicykgcmV0dXJuO1xyXG5cclxuXHRcdGNvbnN0IHBhbmVsVG9IaWRlID0gdGhpcy5kZXRhaWxDb21wb25lbnQudGFiVmlldy50YWJzW3Bvc2l0aW9uXTtcclxuXHRcdGNvbnN0IHRhYlRvSGlkZSA9IHRoaXMuZGV0YWlsQ29tcG9uZW50LnRhYlZpZXcubGlzdD8uY2hpbGRyZW5bcG9zaXRpb25dIGFzIEhUTUxFbGVtZW50O1xyXG5cclxuXHRcdGlmICh0YWJUb0hpZGUgJiYgcGFuZWxUb0hpZGUpIHtcclxuXHRcdFx0cGFuZWxUb0hpZGUuZWwubmF0aXZlRWxlbWVudC5oaWRkZW4gPSBoaWRlO1xyXG5cdFx0XHR0YWJUb0hpZGUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlb3JkZXIgdGFicyBiYXNlZCBvbiBjb25maWcgcG9zaXRpb25zXHJcblx0ICogSXRlcmF0ZXMgb3ZlciB2aXNpYmxlIGNvbmZpZyB0YWJzIGFuZCByZWFycmFuZ2VzIGJvdGggc3RhdGljIGFuZCBjb25maWcgdGFic1xyXG5cdCAqL1xyXG5cdHByaXZhdGUgcmVvcmRlclRhYnNCeVBvc2l0aW9uKCk6IHZvaWQge1xyXG5cdFx0aWYgKCF0aGlzLmRldGFpbENvbXBvbmVudC50YWJWaWV3Py50YWJzIHx8ICF0aGlzLmRldGFpbENvbXBvbmVudC50YWJWaWV3Py5saXN0KSByZXR1cm47XHJcblxyXG5cdFx0Y29uc3QgY29uZmlnVGFicyA9IHRoaXMuZ2V0UHJvY2Vzc2VkVGFicygpO1xyXG5cdFx0Y29uc3QgYWxsVGFicyA9IHRoaXMuZGV0YWlsQ29tcG9uZW50LnRhYlZpZXcudGFicztcclxuXHRcdGNvbnN0IG5hdkxpc3QgPSB0aGlzLmRldGFpbENvbXBvbmVudC50YWJWaWV3Lmxpc3Q7XHJcblxyXG5cdFx0Y29uc3QgY29uZmlnVGFiTWFwID0gbmV3IE1hcDxzdHJpbmcgfCBudW1iZXIgfCBudWxsLCBUYWJDb25maWc+KCk7XHJcblx0XHRjb25maWdUYWJzLmZvckVhY2goKHRhYikgPT4ge1xyXG5cdFx0XHQvLyBPbmx5IHRyZWF0IHRhYnMgdGhhdCBib3RoOlxyXG5cdFx0XHQvLyAtIGhhdmUgYW4gaWRcclxuXHRcdFx0Ly8gLSBhbmQgaGF2ZSBhbiBleHBsaWNpdCBwb3NpdGlvblxyXG5cdFx0XHQvLyBhcyBcInJlb3JkZXIgaW5zdHJ1Y3Rpb25zXCIgZm9yIGV4aXN0aW5nIHN0YXRpYyB0YWJzLlxyXG5cdFx0XHQvLyBUYWJzIHdpdGhvdXQgYSBwb3NpdGlvbiAoZXZlbiBpZiB0aGV5IGhhdmUgYW4gaWQpIGFyZSBjb25zaWRlcmVkXHJcblx0XHRcdC8vIHJlZ3VsYXIvbmV3IHRhYnMgYW5kIHNob3VsZCBrZWVwIHRoZWlyIG5hdHVyYWwgb3JkZXIuXHJcblx0XHRcdGlmICh0YWIuaWQgJiYgdGFiLnBvc2l0aW9uKSB7XHJcblx0XHRcdFx0Y29uZmlnVGFiTWFwLnNldCh0YWIuaWQsIHRhYik7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdC8vIHNlcGFyYXRlIHN0YXRpYyBmcm9tIGNvbmZpZyB0YWJzXHJcblx0XHRjb25zdCBzdGF0aWNUYWJzOiBBcnJheTx7IHRhYjogYW55OyBpbmRleDogbnVtYmVyOyBpZDogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB9PiA9IFtdO1xyXG5cdFx0Y29uc3QgY29uZmlnVGFiSW5zdGFuY2VzOiBBcnJheTx7IHRhYjogYW55OyBpbmRleDogbnVtYmVyOyBjb25maWc6IFRhYkNvbmZpZyB9PiA9IFtdO1xyXG5cclxuXHRcdGFsbFRhYnMuZm9yRWFjaCgodGFiUGFuZWwsIGluZGV4KSA9PiB7XHJcblx0XHRcdGNvbnN0IHRhYklkID0gdGFiUGFuZWw/LmVsPy5uYXRpdmVFbGVtZW50Py5pZCB8fCBudWxsO1xyXG5cdFx0XHRjb25zdCBjb25maWdUYWIgPSB0YWJJZCA/IGNvbmZpZ1RhYk1hcC5nZXQodGFiSWQpIDogbnVsbDtcclxuXHJcblx0XHRcdGlmIChjb25maWdUYWIpIHtcclxuXHRcdFx0XHRjb25maWdUYWJJbnN0YW5jZXMucHVzaCh7IHRhYjogdGFiUGFuZWwsIGluZGV4LCBjb25maWc6IGNvbmZpZ1RhYiB9KTtcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRzdGF0aWNUYWJzLnB1c2goeyB0YWI6IHRhYlBhbmVsLCBpbmRleCwgaWQ6IHRhYklkIH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHJcblx0XHRjb25zdCBwb3NpdGlvbk1hcCA9IG5ldyBNYXA8bnVtYmVyLCB7IHRhYjogYW55OyBpc0NvbmZpZzogYm9vbGVhbjsgaWQ6IHN0cmluZyB8IG51bWJlciB8IG51bGwgfT4oKTtcclxuXHJcblx0XHQvLyBwbGFjZSBjb25maWcgdGFicyBhdCB0aGVpciBzcGVjaWZpZWQgcG9zaXRpb25zXHJcblx0XHRjb25maWdUYWJJbnN0YW5jZXMuZm9yRWFjaCgoeyB0YWIsIGNvbmZpZyB9KSA9PiB7XHJcblx0XHRcdGlmIChjb25maWcucG9zaXRpb24gIT09IHVuZGVmaW5lZCAmJiBjb25maWcucG9zaXRpb24gIT09IG51bGwpIHtcclxuXHRcdFx0XHRwb3NpdGlvbk1hcC5zZXQoY29uZmlnLnBvc2l0aW9uLCB7IHRhYiwgaXNDb25maWc6IHRydWUsIGlkOiBjb25maWcuaWQgfSk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdC8vIHBsYWNlIHN0YXRpYyB0YWJzIGF0IGF2YWlsYWJsZSBwb3NpdGlvbnMgKG1haW50YWluaW5nIHJlbGF0aXZlIG9yZGVyKVxyXG5cdFx0bGV0IHN0YXRpY0luZGV4ID0gMDtcclxuXHRcdGxldCBjdXJyZW50UG9zaXRpb24gPSAwO1xyXG5cclxuXHRcdHdoaWxlIChzdGF0aWNJbmRleCA8IHN0YXRpY1RhYnMubGVuZ3RoKSB7XHJcblx0XHRcdHdoaWxlIChwb3NpdGlvbk1hcC5oYXMoY3VycmVudFBvc2l0aW9uKSkge1xyXG5cdFx0XHRcdGN1cnJlbnRQb3NpdGlvbisrO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvLyBwbGFjZSBzdGF0aWMgdGFiIGF0IHRoaXMgcG9zaXRpb25cclxuXHRcdFx0Y29uc3Qgc3RhdGljVGFiID0gc3RhdGljVGFic1tzdGF0aWNJbmRleF07XHJcblx0XHRcdHBvc2l0aW9uTWFwLnNldChjdXJyZW50UG9zaXRpb24sIHsgdGFiOiBzdGF0aWNUYWIudGFiLCBpc0NvbmZpZzogZmFsc2UsIGlkOiBzdGF0aWNUYWIuaWQgfSk7XHJcblx0XHRcdHN0YXRpY0luZGV4Kys7XHJcblx0XHRcdGN1cnJlbnRQb3NpdGlvbisrO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8vIGJ1aWxkIG9yZGVyZWQgYXJyYXlcclxuXHRcdGNvbnN0IHNvcnRlZFBvc2l0aW9ucyA9IEFycmF5LmZyb20ocG9zaXRpb25NYXAua2V5cygpKS5zb3J0KChhLCBiKSA9PiBhIC0gYik7XHJcblx0XHRjb25zdCByZW9yZGVyZWRUYWJzOiBhbnlbXSA9IFtdO1xyXG5cdFx0Y29uc3QgcmVvcmRlcmVkSGVhZGVyczogSFRNTEVsZW1lbnRbXSA9IFtdO1xyXG5cclxuXHRcdHNvcnRlZFBvc2l0aW9ucy5mb3JFYWNoKChwb3NpdGlvbikgPT4ge1xyXG5cdFx0XHRjb25zdCB0YWJJbmZvID0gcG9zaXRpb25NYXAuZ2V0KHBvc2l0aW9uKSE7XHJcblx0XHRcdHJlb3JkZXJlZFRhYnMucHVzaCh0YWJJbmZvLnRhYik7XHJcblxyXG5cdFx0XHRjb25zdCBvcmlnaW5hbEluZGV4ID0gYWxsVGFicy5pbmRleE9mKHRhYkluZm8udGFiKTtcclxuXHRcdFx0aWYgKG9yaWdpbmFsSW5kZXggIT09IC0xICYmIG5hdkxpc3QuY2hpbGRyZW5bb3JpZ2luYWxJbmRleF0pIHtcclxuXHRcdFx0XHRyZW9yZGVyZWRIZWFkZXJzLnB1c2gobmF2TGlzdC5jaGlsZHJlbltvcmlnaW5hbEluZGV4XSBhcyBIVE1MRWxlbWVudCk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdC8vIHJlb3JkZXIgdGFicyBhcnJheVxyXG5cdFx0dGhpcy5kZXRhaWxDb21wb25lbnQudGFiVmlldy50YWJzLmxlbmd0aCA9IDA7XHJcblx0XHRyZW9yZGVyZWRUYWJzLmZvckVhY2goKHRhYikgPT4gdGhpcy5kZXRhaWxDb21wb25lbnQudGFiVmlldyEudGFicy5wdXNoKHRhYikpO1xyXG5cclxuXHRcdC8vIHJlb3JkZXIgZG9tIGhlYWRlcnNcclxuXHRcdHJlb3JkZXJlZEhlYWRlcnMuZm9yRWFjaCgoaGVhZGVyLCBuZXdJbmRleCkgPT4ge1xyXG5cdFx0XHRjb25zdCB0YXJnZXRIZWFkZXIgPSBuYXZMaXN0LmNoaWxkcmVuW25ld0luZGV4XTtcclxuXHRcdFx0aWYgKHRhcmdldEhlYWRlciAmJiB0YXJnZXRIZWFkZXIgIT09IGhlYWRlcikge1xyXG5cdFx0XHRcdG5hdkxpc3QuaW5zZXJ0QmVmb3JlKGhlYWRlciwgdGFyZ2V0SGVhZGVyKTtcclxuXHRcdFx0fSBlbHNlIGlmICghdGFyZ2V0SGVhZGVyKSB7XHJcblx0XHRcdFx0bmF2TGlzdC5hcHBlbmRDaGlsZChoZWFkZXIpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHJcblx0XHQvLyByZW9yZGVyIGRvbSBwYW5lbHNcclxuXHRcdGNvbnN0IHBhbmVsc0NvbnRhaW5lciA9IGFsbFRhYnNbMF0/LmVsLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudDtcclxuXHRcdGlmIChwYW5lbHNDb250YWluZXIpIHtcclxuXHRcdFx0cmVvcmRlcmVkVGFicy5mb3JFYWNoKCh0YWJQYW5lbCwgbmV3SW5kZXgpID0+IHtcclxuXHRcdFx0XHRjb25zdCB0YXJnZXRQYW5lbCA9IHBhbmVsc0NvbnRhaW5lci5jaGlsZHJlbltuZXdJbmRleF07XHJcblx0XHRcdFx0aWYgKHRhcmdldFBhbmVsICYmIHRhcmdldFBhbmVsICE9PSB0YWJQYW5lbC5lbC5uYXRpdmVFbGVtZW50KSB7XHJcblx0XHRcdFx0XHRwYW5lbHNDb250YWluZXIuaW5zZXJ0QmVmb3JlKHRhYlBhbmVsLmVsLm5hdGl2ZUVsZW1lbnQsIHRhcmdldFBhbmVsKTtcclxuXHRcdFx0XHR9IGVsc2UgaWYgKCF0YXJnZXRQYW5lbCkge1xyXG5cdFx0XHRcdFx0cGFuZWxzQ29udGFpbmVyLmFwcGVuZENoaWxkKHRhYlBhbmVsLmVsLm5hdGl2ZUVsZW1lbnQpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKHRoaXMuZGV0YWlsQ29tcG9uZW50LnRhYlZpZXcuY2QpIHtcclxuXHRcdFx0dGhpcy5kZXRhaWxDb21wb25lbnQudGFiVmlldy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgYWN0aXZhdGVUYWJGcm9tVXJsKCk6IHZvaWQge1xyXG5cdFx0aWYgKCF0aGlzLmRldGFpbENvbXBvbmVudC50YWJWaWV3KSByZXR1cm47XHJcblxyXG5cdFx0Y29uc3QgYWN0aXZlVGFiUGFyYW0gPSB0aGlzLnJvdXRlLnNuYXBzaG90LnF1ZXJ5UGFyYW1NYXAuZ2V0KCdhY3RpdmVUYWInKTtcclxuXHRcdGlmIChhY3RpdmVUYWJQYXJhbSkge1xyXG5cdFx0XHRjb25zdCBhY3RpdmVUYWJJbmRleCA9IE51bWJlcihhY3RpdmVUYWJQYXJhbSk7XHJcblxyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0IWlzTmFOKGFjdGl2ZVRhYkluZGV4KSAmJlxyXG5cdFx0XHRcdGFjdGl2ZVRhYkluZGV4ID49IDAgJiZcclxuXHRcdFx0XHR0aGlzLmRldGFpbENvbXBvbmVudC50YWJWaWV3LnRhYnMgJiZcclxuXHRcdFx0XHRhY3RpdmVUYWJJbmRleCA8IHRoaXMuZGV0YWlsQ29tcG9uZW50LnRhYlZpZXcudGFicy5sZW5ndGhcclxuXHRcdFx0KSB7XHJcblx0XHRcdFx0dGhpcy5kZXRhaWxDb21wb25lbnQudGFiVmlldy5hY3RpdmVJbmRleCA9IGFjdGl2ZVRhYkluZGV4O1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRwcml2YXRlIHVwZGF0ZU1lbnUobWVudUNvbmZpZzogRGV0YWlsQ29uZmlnTWVudUl0ZW1bXSkge1xyXG5cdFx0Y29uc3QgY29udGV4dCA9IHtcclxuXHRcdFx0cm91dGVyOiB0aGlzLnJvdXRlcixcclxuXHRcdFx0cm91dGU6IHRoaXMucm91dGUsXHJcblx0XHRcdGRpYWxvZ1NlcnZpY2U6IHRoaXMuZGlhbG9nU2VydmljZSxcclxuXHRcdFx0Y29tcG9uZW50OiB0aGlzLmRldGFpbENvbXBvbmVudFxyXG5cdFx0fTtcclxuXHJcblx0XHRjb25zdCBhY3RpdmVMYW5nID0gdGhpcy50cmFuc2xvY29TZXJ2aWNlLmdldEFjdGl2ZUxhbmcoKTtcclxuXHRcdGNvbnN0IGR5bmFtaWNNZW51OiBNZW51SXRlbVtdID0gbWVudUNvbmZpZy5tYXAoKG0pID0+ICh7XHJcblx0XHRcdGxhYmVsOiBtLmxhYmVsW2FjdGl2ZUxhbmddID8/ICcnLFxyXG5cdFx0XHRpY29uOiBtLmljb24sXHJcblx0XHRcdGNvbW1hbmQ6IChfZXZlbnQ6IGFueSkgPT4ge1xyXG5cdFx0XHRcdGNvbnN0IGNvbW1hbmRGbiA9IG5ldyBGdW5jdGlvbignY3R4JywgbS5jb21tYW5kKTtcclxuXHRcdFx0XHRjb21tYW5kRm4oY29udGV4dCkoY29udGV4dCk7XHJcblx0XHRcdH1cclxuXHRcdH0pKTtcclxuXHJcblx0XHQvLyBVcGRhdGUgdGhlIGV4aXN0aW5nIHNpZ25hbCBpbnN0ZWFkIG9mIHJlcGxhY2luZyBpdCB0byBlbnN1cmUgY2hhbmdlXHJcblx0XHQvLyBkZXRlY3Rpb24gcGlja3MgdXAgdGhlIG1lbnUgdXBkYXRlIGFmdGVyIGJyb3dzZXIgYmFjayBuYXZpZ2F0aW9uLlxyXG5cdFx0Y29uc3QgZ2VuZXJhbE1lbnVTaWduYWwgPSB0aGlzLmRldGFpbENvbXBvbmVudC5tZEluZm9QbHVnaW5Qcm9wcy5nZW5lcmFsTWVudSBhcyBhbnk7XHJcblx0XHRjb25zdCBleGlzdGluZ01lbnU6IE1lbnVJdGVtW10gPSBnZW5lcmFsTWVudVNpZ25hbCgpO1xyXG5cclxuXHRcdC8vIEF2b2lkIGR1cGxpY2F0aW5nIHByZXZpb3VzbHkgYWRkZWQgZHluYW1pYyBpdGVtcyAoaWRlbnRpZmllZCBieSBsYWJlbC9pY29uIG1hdGNoKVxyXG5cdFx0Y29uc3QgbWVyZ2VkTWVudSA9IFtcclxuXHRcdFx0Li4uZXhpc3RpbmdNZW51LmZpbHRlcigoaXRlbSkgPT4gIWR5bmFtaWNNZW51LnNvbWUoKGR5bikgPT4gZHluLmxhYmVsID09PSBpdGVtLmxhYmVsICYmIGR5bi5pY29uID09PSBpdGVtLmljb24pKSxcclxuXHRcdFx0Li4uZHluYW1pY01lbnVcclxuXHRcdF07XHJcblxyXG5cdFx0aWYgKGdlbmVyYWxNZW51U2lnbmFsPy5zZXQpIHtcclxuXHRcdFx0Z2VuZXJhbE1lbnVTaWduYWwuc2V0KG1lcmdlZE1lbnUpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5kZXRhaWxDb21wb25lbnQubWRJbmZvUGx1Z2luUHJvcHMuZ2VuZXJhbE1lbnUgPSBzaWduYWwobWVyZ2VkTWVudSk7XHJcblx0XHR9XHJcblx0fVxyXG59XHJcbiJdfQ==
@@ -28,14 +28,13 @@ export class TranslateJsonPipe {
28
28
  return languageObj[currentLang] || '';
29
29
  }
30
30
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TranslateJsonPipe, deps: [{ token: i1.TranslocoService }], target: i0.ɵɵFactoryTarget.Pipe }); }
31
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.1.2", ngImport: i0, type: TranslateJsonPipe, isStandalone: true, name: "translateJson", pure: false }); }
31
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.1.2", ngImport: i0, type: TranslateJsonPipe, isStandalone: true, name: "translateJson" }); }
32
32
  }
33
33
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: TranslateJsonPipe, decorators: [{
34
34
  type: Pipe,
35
35
  args: [{
36
36
  name: 'translateJson',
37
- standalone: true,
38
- pure: false
37
+ standalone: true
39
38
  }]
40
39
  }], ctorParameters: () => [{ type: i1.TranslocoService }] });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLWpzb24ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdXRpbC9waXBlcy9zcmMvdHJhbnNsYXRlLWpzb24vdHJhbnNsYXRlLWpzb24ucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7O0FBUXBELE1BQU0sT0FBTyxpQkFBaUI7SUFDN0IsWUFBcUIsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7SUFBRyxDQUFDO0lBRTNELFNBQVMsQ0FBQyxLQUFnQztRQUN6QyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDVCxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFRCxJQUFJLFdBQWdCLENBQUM7UUFFckIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLENBQUM7YUFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQztnQkFDSCxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsQyxDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixPQUFPLEtBQUssQ0FBQztZQUNmLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDMUQsT0FBTyxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pDLENBQUM7OEdBeEJXLGlCQUFpQjs0R0FBakIsaUJBQWlCOzsyRkFBakIsaUJBQWlCO2tCQUw3QixJQUFJO21CQUFDO29CQUNMLElBQUksRUFBRSxlQUFlO29CQUNyQixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFLEtBQUs7aUJBQ1giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRyYW5zbG9jb1NlcnZpY2UgfSBmcm9tICdAbmduZWF0L3RyYW5zbG9jbyc7XHJcblxyXG5AUGlwZSh7XHJcblx0bmFtZTogJ3RyYW5zbGF0ZUpzb24nLFxyXG5cdHN0YW5kYWxvbmU6IHRydWUsXHJcblx0cHVyZTogZmFsc2VcclxufSlcclxuZXhwb3J0IGNsYXNzIFRyYW5zbGF0ZUpzb25QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcblx0Y29uc3RydWN0b3IocmVhZG9ubHkgdHJhbnNsb2NvU2VydmljZTogVHJhbnNsb2NvU2VydmljZSkge31cclxuXHJcblx0dHJhbnNmb3JtKHZhbHVlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcclxuXHRcdGlmICghdmFsdWUpIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBsYW5ndWFnZU9iajogYW55O1xyXG4gICAgXHJcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xyXG4gICAgICBsYW5ndWFnZU9iaiA9IHZhbHVlO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgbGFuZ3VhZ2VPYmogPSBKU09OLnBhcnNlKHZhbHVlKTtcclxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICByZXR1cm4gdmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGN1cnJlbnRMYW5nID0gdGhpcy50cmFuc2xvY29TZXJ2aWNlLmdldEFjdGl2ZUxhbmcoKTtcclxuICAgIHJldHVybiBsYW5ndWFnZU9ialtjdXJyZW50TGFuZ10gfHwgJyc7XHJcblx0fVxyXG59Il19
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLWpzb24ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdXRpbC9waXBlcy9zcmMvdHJhbnNsYXRlLWpzb24vdHJhbnNsYXRlLWpzb24ucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7O0FBT3BELE1BQU0sT0FBTyxpQkFBaUI7SUFDN0IsWUFBcUIsZ0JBQWtDO1FBQWxDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7SUFBRyxDQUFDO0lBRTNELFNBQVMsQ0FBQyxLQUFnQztRQUN6QyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWixPQUFPLEVBQUUsQ0FBQztRQUNYLENBQUM7UUFFRCxJQUFJLFdBQWdCLENBQUM7UUFFckIsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUMvQixXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLENBQUM7YUFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQztnQkFDSixXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDaEIsT0FBTyxLQUFLLENBQUM7WUFDZCxDQUFDO1FBQ0YsQ0FBQzthQUFNLENBQUM7WUFDUCxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QixDQUFDO1FBRUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzFELE9BQU8sV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN2QyxDQUFDOzhHQXhCVyxpQkFBaUI7NEdBQWpCLGlCQUFpQjs7MkZBQWpCLGlCQUFpQjtrQkFKN0IsSUFBSTttQkFBQztvQkFDTCxJQUFJLEVBQUUsZUFBZTtvQkFDckIsVUFBVSxFQUFFLElBQUk7aUJBQ2hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcmFuc2xvY29TZXJ2aWNlIH0gZnJvbSAnQG5nbmVhdC90cmFuc2xvY28nO1xyXG5cclxuQFBpcGUoe1xyXG5cdG5hbWU6ICd0cmFuc2xhdGVKc29uJyxcclxuXHRzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmFuc2xhdGVKc29uUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xyXG5cdGNvbnN0cnVjdG9yKHJlYWRvbmx5IHRyYW5zbG9jb1NlcnZpY2U6IFRyYW5zbG9jb1NlcnZpY2UpIHt9XHJcblxyXG5cdHRyYW5zZm9ybSh2YWx1ZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XHJcblx0XHRpZiAoIXZhbHVlKSB7XHJcblx0XHRcdHJldHVybiAnJztcclxuXHRcdH1cclxuXHJcblx0XHRsZXQgbGFuZ3VhZ2VPYmo6IGFueTtcclxuXHJcblx0XHRpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xyXG5cdFx0XHRsYW5ndWFnZU9iaiA9IHZhbHVlO1xyXG5cdFx0fSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcblx0XHRcdHRyeSB7XHJcblx0XHRcdFx0bGFuZ3VhZ2VPYmogPSBKU09OLnBhcnNlKHZhbHVlKTtcclxuXHRcdFx0fSBjYXRjaCAoZXJyb3IpIHtcclxuXHRcdFx0XHRyZXR1cm4gdmFsdWU7XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHJldHVybiBTdHJpbmcodmFsdWUpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGNvbnN0IGN1cnJlbnRMYW5nID0gdGhpcy50cmFuc2xvY29TZXJ2aWNlLmdldEFjdGl2ZUxhbmcoKTtcclxuXHRcdHJldHVybiBsYW5ndWFnZU9ialtjdXJyZW50TGFuZ10gfHwgJyc7XHJcblx0fVxyXG59Il19
@@ -42,4 +42,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
42
42
  type: HostListener,
43
43
  args: ['activeIndexChange', ['$event']]
44
44
  }] } });
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1hY3RpdmUtdGFiLXJvdXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdXRpbC9zeW5jLWFjdGl2ZS10YWItcm91dGUvc3JjL3N5bmMtYWN0aXZlLXRhYi1yb3V0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBSzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBTXBDLE1BQU0sT0FBTywyQkFBMkI7SUFHdkMsWUFDa0IsTUFBYyxFQUNkLE9BQWdCLEVBQ2hCLFFBQWtCO1FBRmxCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFMbkIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBTWhELENBQUM7SUFFSixRQUFRO1FBQ1AsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDL0QsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDNUQsQ0FBQztRQUNGLENBQUMsQ0FBQyxDQUNGLENBQUM7SUFDSCxDQUFDO0lBR0QsV0FBVyxDQUFDLENBQVM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQ3pCLElBQUksQ0FBQyxNQUFNO2FBQ1QsYUFBYSxDQUFDLEVBQUUsRUFBRTtZQUNsQixXQUFXLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFO1lBQzdCLG1CQUFtQixFQUFFLE9BQU87U0FDNUIsQ0FBQzthQUNELFFBQVEsRUFBRSxDQUNaLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNWLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDakMsQ0FBQzs4R0FqQ1csMkJBQTJCO2tHQUEzQiwyQkFBMkI7OzJGQUEzQiwyQkFBMkI7a0JBSnZDLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsVUFBVSxFQUFFLElBQUk7aUJBQ2hCO3dIQXFCQSxXQUFXO3NCQURWLFlBQVk7dUJBQUMsbUJBQW1CLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdExpc3RlbmVyLCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgVGFiVmlldyB9IGZyb20gJ3ByaW1lbmcvdGFidmlldyc7XHJcblxyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG5cdHNlbGVjdG9yOiAnW3N5bmNBY3RpdmVUYWJSb3V0ZV0nLFxyXG5cdHN0YW5kYWxvbmU6IHRydWVcclxufSlcclxuZXhwb3J0IGNsYXNzIFN5bmNBY3RpdmVUYWJSb3V0ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHRwcml2YXRlIHJlYWRvbmx5IHN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxyXG5cdFx0cHJpdmF0ZSByZWFkb25seSB0YWJWaWV3OiBUYWJWaWV3LFxyXG5cdFx0cHJpdmF0ZSByZWFkb25seSBsb2NhdGlvbjogTG9jYXRpb25cclxuXHQpIHt9XHJcblxyXG5cdG5nT25Jbml0KCkge1xyXG5cdFx0dGhpcy5zdWJzY3JpcHRpb24uYWRkKFxyXG5cdFx0XHR0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5yb290LnF1ZXJ5UGFyYW1NYXAuc3Vic2NyaWJlKChwYXJhbXMpID0+IHtcclxuXHRcdFx0XHRpZiAocGFyYW1zLmhhcygnYWN0aXZlVGFiJykpIHtcclxuXHRcdFx0XHRcdHRoaXMudGFiVmlldy5hY3RpdmVJbmRleCA9IE51bWJlcihwYXJhbXMuZ2V0KCdhY3RpdmVUYWInKSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdEBIb3N0TGlzdGVuZXIoJ2FjdGl2ZUluZGV4Q2hhbmdlJywgWyckZXZlbnQnXSlcclxuXHRvblRhYkNoYW5nZShlOiBudW1iZXIpIHtcclxuXHRcdHRoaXMubG9jYXRpb24ucmVwbGFjZVN0YXRlKFxyXG5cdFx0XHR0aGlzLnJvdXRlclxyXG5cdFx0XHRcdC5jcmVhdGVVcmxUcmVlKFtdLCB7XHJcblx0XHRcdFx0XHRxdWVyeVBhcmFtczogeyBhY3RpdmVUYWI6IGUgfSxcclxuXHRcdFx0XHRcdHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZSdcclxuXHRcdFx0XHR9KVxyXG5cdFx0XHRcdC50b1N0cmluZygpXHJcblx0XHQpO1xyXG5cdH1cclxuXHJcblx0bmdPbkRlc3Ryb3koKSB7XHJcblx0XHR0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG5cdH1cclxufVxyXG4iXX0=
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1hY3RpdmUtdGFiLXJvdXRlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FyaWwvdXRpbC9zeW5jLWFjdGl2ZS10YWItcm91dGUvc3JjL3N5bmMtYWN0aXZlLXRhYi1yb3V0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBSzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBTXBDLE1BQU0sT0FBTywyQkFBMkI7SUFHdkMsWUFDa0IsTUFBYyxFQUNkLE9BQWdCLEVBQ2hCLFFBQWtCO1FBRmxCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFMbkIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBTWhELENBQUM7SUFFSixRQUFRO1FBQ1AsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDL0QsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDNUQsQ0FBQztRQUNGLENBQUMsQ0FBQyxDQUNGLENBQUM7SUFDSCxDQUFDO0lBR0QsV0FBVyxDQUFDLENBQVM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQ3pCLElBQUksQ0FBQyxNQUFNO2FBQ1QsYUFBYSxDQUFDLEVBQUUsRUFBRTtZQUNsQixXQUFXLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFO1lBQzdCLG1CQUFtQixFQUFFLE9BQU87U0FDNUIsQ0FBQzthQUNELFFBQVEsRUFBRSxDQUNaLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNWLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDakMsQ0FBQzs4R0FqQ1csMkJBQTJCO2tHQUEzQiwyQkFBMkI7OzJGQUEzQiwyQkFBMkI7a0JBSnZDLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsVUFBVSxFQUFFLElBQUk7aUJBQ2hCO3dIQXFCQSxXQUFXO3NCQURWLFlBQVk7dUJBQUMsbUJBQW1CLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RMaXN0ZW5lciwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IFRhYlZpZXcgfSBmcm9tICdwcmltZW5nL3RhYnZpZXcnO1xuXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuQERpcmVjdGl2ZSh7XG5cdHNlbGVjdG9yOiAnW3N5bmNBY3RpdmVUYWJSb3V0ZV0nLFxuXHRzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFN5bmNBY3RpdmVUYWJSb3V0ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblx0cHJpdmF0ZSByZWFkb25seSBzdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cblx0Y29uc3RydWN0b3IoXG5cdFx0cHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcblx0XHRwcml2YXRlIHJlYWRvbmx5IHRhYlZpZXc6IFRhYlZpZXcsXG5cdFx0cHJpdmF0ZSByZWFkb25seSBsb2NhdGlvbjogTG9jYXRpb25cblx0KSB7fVxuXG5cdG5nT25Jbml0KCkge1xuXHRcdHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcblx0XHRcdHRoaXMucm91dGVyLnJvdXRlclN0YXRlLnJvb3QucXVlcnlQYXJhbU1hcC5zdWJzY3JpYmUoKHBhcmFtcykgPT4ge1xuXHRcdFx0XHRpZiAocGFyYW1zLmhhcygnYWN0aXZlVGFiJykpIHtcblx0XHRcdFx0XHR0aGlzLnRhYlZpZXcuYWN0aXZlSW5kZXggPSBOdW1iZXIocGFyYW1zLmdldCgnYWN0aXZlVGFiJykpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdCk7XG5cdH1cblxuXHRASG9zdExpc3RlbmVyKCdhY3RpdmVJbmRleENoYW5nZScsIFsnJGV2ZW50J10pXG5cdG9uVGFiQ2hhbmdlKGU6IG51bWJlcikge1xuXHRcdHRoaXMubG9jYXRpb24ucmVwbGFjZVN0YXRlKFxuXHRcdFx0dGhpcy5yb3V0ZXJcblx0XHRcdFx0LmNyZWF0ZVVybFRyZWUoW10sIHtcblx0XHRcdFx0XHRxdWVyeVBhcmFtczogeyBhY3RpdmVUYWI6IGUgfSxcblx0XHRcdFx0XHRxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnXG5cdFx0XHRcdH0pXG5cdFx0XHRcdC50b1N0cmluZygpXG5cdFx0KTtcblx0fVxuXG5cdG5nT25EZXN0cm95KCkge1xuXHRcdHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG5cdH1cbn1cbiJdfQ==
@@ -3,47 +3,47 @@ import { inject, NgZone, Component } from '@angular/core';
3
3
  import { connectRouter, ModuleFederationToolsModule } from '@angular-architects/module-federation-tools';
4
4
  import { LanguageCode, TR_TRANSLATIONS } from 'aril/boot/config/translate';
5
5
  import * as i1$1 from 'aril/theme/layout';
6
- import { AppLayoutComponent, MFELayoutComponent } from 'aril/theme/layout';
6
+ import { MFELayoutComponent } from 'aril/theme/layout';
7
7
  import { a as appName, m as menuItems } from './aril.mjs';
8
8
  import * as i1 from '@angular/router';
9
9
  import * as i2 from '@ngneat/transloco';
10
10
  import * as i4 from 'primeng/api';
11
+ import * as i3 from 'aril/boot/bridge';
11
12
  import '@angular/common/http';
12
13
  import '@angular/platform-browser';
13
- import '@angular/platform-browser/animations';
14
14
  import 'keycloak-angular';
15
+ import 'aril/boot/base';
15
16
  import 'aril/boot/config/api';
16
17
  import 'aril/boot/config/apps';
17
18
  import 'aril/boot/config/plugins';
18
- import 'aril/http';
19
19
  import 'aril/i18n';
20
- import 'aril/keycloak';
21
- import 'aril/provider';
22
20
  import 'aril/util/pub-sub';
23
21
  import '@angular/elements';
24
22
  import 'ngx-monaco-editor-v2';
25
- import 'aril/util/loaders';
23
+ import 'aril/provider';
26
24
 
27
- /* eslint-disable @typescript-eslint/no-explicit-any */
28
25
  class AppComponent {
29
- constructor(router, translocoService, appMenuService, primeNgConfig) {
26
+ constructor(router, translocoService, appMenuService, primeNgConfig, bridgeSvc) {
30
27
  this.router = router;
31
28
  this.translocoService = translocoService;
32
29
  this.appMenuService = appMenuService;
33
30
  this.primeNgConfig = primeNgConfig;
34
- this.isHostMode = globalThis.isHostMode;
35
- if (!this.isHostMode && !globalThis.ngZone) {
36
- globalThis.ngZone = inject(NgZone);
31
+ this.bridgeSvc = bridgeSvc;
32
+ if (!this.bridgeSvc.isHostMode() && !this.bridgeSvc.hostNgZone) {
33
+ this.bridgeSvc.hostNgZone = inject(NgZone);
37
34
  }
38
35
  connectRouter(this.router, true);
39
- globalThis.activeMF = appName;
36
+ this.bridgeSvc.activeMF.set(appName);
40
37
  const lang = localStorage.getItem('lang') ?? LanguageCode.TR;
41
38
  this.translocoService.setActiveLang(lang);
42
39
  this.setLocale(lang);
43
- if (!this.isHostMode) {
40
+ if (!this.bridgeSvc.isHostMode()) {
44
41
  this.appMenuService.menuConfig.set({ items: structuredClone(menuItems), prefix: appName });
45
42
  }
46
43
  }
44
+ get isHostMode() {
45
+ return this.bridgeSvc.isHostMode;
46
+ }
47
47
  setLocale(lang) {
48
48
  if (!lang?.length) {
49
49
  console.warn('No language selected');
@@ -53,29 +53,29 @@ class AppComponent {
53
53
  this.primeNgConfig.setTranslation(TR_TRANSLATIONS);
54
54
  }
55
55
  }
56
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppComponent, deps: [{ token: i1.Router }, { token: i2.TranslocoService }, { token: i1$1.AppMenuService }, { token: i4.PrimeNGConfig }], target: i0.ɵɵFactoryTarget.Component }); }
56
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppComponent, deps: [{ token: i1.Router }, { token: i2.TranslocoService }, { token: i1$1.AppMenuService }, { token: i4.PrimeNGConfig }, { token: i3.MfeBridge }], target: i0.ɵɵFactoryTarget.Component }); }
57
57
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: AppComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: `
58
- @if (isHostMode) {
58
+ @if (isHostMode()) {
59
59
  <mfe-layout></mfe-layout>
60
60
  } @else {
61
- <app-layout></app-layout>
61
+ Bu uygulama yalnızca host app içinden açılabilir
62
62
  }
63
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: ModuleFederationToolsModule }, { kind: "component", type: AppLayoutComponent, selector: "app-layout" }, { kind: "component", type: MFELayoutComponent, selector: "mfe-layout" }] }); }
63
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: ModuleFederationToolsModule }, { kind: "component", type: MFELayoutComponent, selector: "mfe-layout" }] }); }
64
64
  }
65
65
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AppComponent, decorators: [{
66
66
  type: Component,
67
67
  args: [{
68
68
  standalone: true,
69
69
  template: `
70
- @if (isHostMode) {
70
+ @if (isHostMode()) {
71
71
  <mfe-layout></mfe-layout>
72
72
  } @else {
73
- <app-layout></app-layout>
73
+ Bu uygulama yalnızca host app içinden açılabilir
74
74
  }
75
75
  `,
76
- imports: [ModuleFederationToolsModule, AppLayoutComponent, MFELayoutComponent]
76
+ imports: [ModuleFederationToolsModule, MFELayoutComponent]
77
77
  }]
78
- }], ctorParameters: () => [{ type: i1.Router }, { type: i2.TranslocoService }, { type: i1$1.AppMenuService }, { type: i4.PrimeNGConfig }] });
78
+ }], ctorParameters: () => [{ type: i1.Router }, { type: i2.TranslocoService }, { type: i1$1.AppMenuService }, { type: i4.PrimeNGConfig }, { type: i3.MfeBridge }] });
79
79
 
80
80
  export { AppComponent };
81
- //# sourceMappingURL=aril-app.component-hxaLgwmC.mjs.map
81
+ //# sourceMappingURL=aril-app.component-wxP3y8dg.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aril-app.component-wxP3y8dg.mjs","sources":["../../projects/aril/boot/mfe/src/app.component.ts"],"sourcesContent":["import { Component, NgZone, inject } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { PrimeNGConfig } from 'primeng/api';\r\n\r\nimport { ModuleFederationToolsModule, connectRouter } from '@angular-architects/module-federation-tools';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\n\r\nimport { MfeBridge } from 'aril/boot/bridge';\r\nimport { LanguageCode, TR_TRANSLATIONS } from 'aril/boot/config/translate';\r\nimport { AppMenuService, MFELayoutComponent } from 'aril/theme/layout';\r\n\r\nimport { appName, menuItems } from './bootstrap';\r\n\r\n@Component({\r\n\tstandalone: true,\r\n\ttemplate: `\r\n\t\t@if (isHostMode()) {\r\n\t\t\t<mfe-layout></mfe-layout>\r\n\t\t} @else {\r\n\t\t\tBu uygulama yalnızca host app içinden açılabilir\r\n\t\t}\r\n\t`,\r\n\timports: [ModuleFederationToolsModule, MFELayoutComponent]\r\n})\r\nexport class AppComponent {\r\n\tconstructor(\r\n\t\tprivate readonly router: Router,\r\n\t\tprivate readonly translocoService: TranslocoService,\r\n\t\tprivate readonly appMenuService: AppMenuService,\r\n\t\tprivate readonly primeNgConfig: PrimeNGConfig,\r\n\t\tprivate readonly bridgeSvc: MfeBridge\r\n\t) {\r\n\t\tif (!this.bridgeSvc.isHostMode() && !this.bridgeSvc.hostNgZone) {\r\n\t\t\tthis.bridgeSvc.hostNgZone = inject(NgZone);\r\n\t\t}\r\n\r\n\t\tconnectRouter(this.router, true);\r\n\r\n\t\tthis.bridgeSvc.activeMF.set(appName);\r\n\t\tconst lang: LanguageCode = (localStorage.getItem('lang') as LanguageCode) ?? LanguageCode.TR;\r\n\r\n\t\tthis.translocoService.setActiveLang(lang);\r\n\r\n\t\tthis.setLocale(lang);\r\n\r\n\t\tif (!this.bridgeSvc.isHostMode()) {\r\n\t\t\tthis.appMenuService.menuConfig.set({ items: structuredClone(menuItems), prefix: appName });\r\n\t\t}\r\n\t}\r\n\r\n\tget isHostMode() {\r\n\t\treturn this.bridgeSvc.isHostMode;\r\n\t}\r\n\r\n\tsetLocale(lang: LanguageCode) {\r\n\t\tif (!lang?.length) {\r\n\t\t\tconsole.warn('No language selected');\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (lang === LanguageCode.TR) {\r\n\t\t\tthis.primeNgConfig.setTranslation(TR_TRANSLATIONS);\r\n\t\t}\r\n\t}\r\n}\r\n"],"names":["i3","i5"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;MAyBa,YAAY,CAAA;IACxB,WACkB,CAAA,MAAc,EACd,gBAAkC,EAClC,cAA8B,EAC9B,aAA4B,EAC5B,SAAoB,EAAA;QAJpB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC5B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;AAErC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;YAC/D,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;SAC3C;AAED,QAAA,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAEjC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACrC,QAAA,MAAM,IAAI,GAAkB,YAAY,CAAC,OAAO,CAAC,MAAM,CAAkB,IAAI,YAAY,CAAC,EAAE,CAAC;AAE7F,QAAA,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAE1C,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAErB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE;YACjC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;SAC3F;KACD;AAED,IAAA,IAAI,UAAU,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;KACjC;AAED,IAAA,SAAS,CAAC,IAAkB,EAAA;AAC3B,QAAA,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE;AAClB,YAAA,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACrC,OAAO;SACP;AAED,QAAA,IAAI,IAAI,KAAK,YAAY,CAAC,EAAE,EAAE;AAC7B,YAAA,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;SACnD;KACD;8GAvCW,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,EATd,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;EAMT,EACS,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,2BAA2B,+BAAE,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAE7C,YAAY,EAAA,UAAA,EAAA,CAAA;kBAXxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA;;;;;;AAMT,CAAA,CAAA;AACD,oBAAA,OAAO,EAAE,CAAC,2BAA2B,EAAE,kBAAkB,CAAC;AAC1D,iBAAA,CAAA;;;;;"}
@@ -0,0 +1,37 @@
1
+ import { provideHttpClient, withInterceptors } from '@angular/common/http';
2
+ import { makeEnvironmentProviders, importProvidersFrom } from '@angular/core';
3
+ import { provideAnimations } from '@angular/platform-browser/animations';
4
+ import { MessageService, ConfirmationService } from 'primeng/api';
5
+ import { KeycloakBearerInterceptor, KeycloakAngularModule } from 'keycloak-angular';
6
+ import { provideMfeBridge } from 'aril/boot/bridge';
7
+ import { acceptLanguageInterceptor } from 'aril/http';
8
+ import { i18nModule, i18nFolderName } from 'aril/i18n';
9
+ import { authInterceptor, keycloakAuthInterceptor } from 'aril/keycloak';
10
+ import { provideLocaleId } from 'aril/provider';
11
+
12
+ /** Host ve plugin bootstrap akışlarında i18n asset path alt klasörü. */
13
+ const HOST_I18N_FOLDER = 'host';
14
+ /**
15
+ * Host, MFE ve plugin bootstrap akışlarında ortak olan provider'ları döndürür.
16
+ * Çağıranlar dönüş değerini `providers` dizisinde diğer özel provider'larının yanına ekler.
17
+ */
18
+ function createBaseAppConfig(options) {
19
+ return makeEnvironmentProviders([
20
+ provideAnimations(),
21
+ provideMfeBridge(),
22
+ provideLocaleId(),
23
+ KeycloakBearerInterceptor,
24
+ provideHttpClient(withInterceptors([acceptLanguageInterceptor, authInterceptor, keycloakAuthInterceptor])),
25
+ importProvidersFrom(i18nModule, KeycloakAngularModule),
26
+ MessageService,
27
+ ConfirmationService,
28
+ { provide: i18nFolderName, useValue: options.i18nFolder }
29
+ ]);
30
+ }
31
+
32
+ /**
33
+ * Generated bundle index. Do not edit.
34
+ */
35
+
36
+ export { HOST_I18N_FOLDER, createBaseAppConfig };
37
+ //# sourceMappingURL=aril-boot-base.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aril-boot-base.mjs","sources":["../../projects/aril/boot/base/src/create-base-app-config.ts","../../projects/aril/boot/base/aril-boot-base.ts"],"sourcesContent":["import { provideHttpClient, withInterceptors } from '@angular/common/http';\r\nimport { EnvironmentProviders, importProvidersFrom, makeEnvironmentProviders } from '@angular/core';\r\nimport { provideAnimations } from '@angular/platform-browser/animations';\r\n\r\nimport { ConfirmationService, MessageService } from 'primeng/api';\r\n\r\nimport { KeycloakAngularModule, KeycloakBearerInterceptor } from 'keycloak-angular';\r\n\r\nimport { provideMfeBridge } from 'aril/boot/bridge';\r\nimport { acceptLanguageInterceptor } from 'aril/http';\r\nimport { i18nFolderName, i18nModule } from 'aril/i18n';\r\nimport { authInterceptor, keycloakAuthInterceptor } from 'aril/keycloak';\r\nimport { provideLocaleId } from 'aril/provider';\r\n\r\n/** Host ve plugin bootstrap akışlarında i18n asset path alt klasörü. */\r\nexport const HOST_I18N_FOLDER = 'host';\r\n\r\nexport interface BaseAppConfigOptions {\r\n\t/** i18nFolderName token'ına set edilecek değer (host: HOST_I18N_FOLDER, mfe: appName). */\r\n\ti18nFolder: string;\r\n}\r\n\r\n/**\r\n * Host, MFE ve plugin bootstrap akışlarında ortak olan provider'ları döndürür.\r\n * Çağıranlar dönüş değerini `providers` dizisinde diğer özel provider'larının yanına ekler.\r\n */\r\nexport function createBaseAppConfig(options: BaseAppConfigOptions): EnvironmentProviders {\r\n\treturn makeEnvironmentProviders([\r\n\t\tprovideAnimations(),\r\n\t\tprovideMfeBridge(),\r\n\t\tprovideLocaleId(),\r\n\t\tKeycloakBearerInterceptor,\r\n\t\tprovideHttpClient(withInterceptors([acceptLanguageInterceptor, authInterceptor, keycloakAuthInterceptor])),\r\n\t\timportProvidersFrom(i18nModule, KeycloakAngularModule),\r\n\t\tMessageService,\r\n\t\tConfirmationService,\r\n\t\t{ provide: i18nFolderName, useValue: options.i18nFolder }\r\n\t]);\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;AAcA;AACO,MAAM,gBAAgB,GAAG,OAAO;AAOvC;;;AAGG;AACG,SAAU,mBAAmB,CAAC,OAA6B,EAAA;AAChE,IAAA,OAAO,wBAAwB,CAAC;AAC/B,QAAA,iBAAiB,EAAE;AACnB,QAAA,gBAAgB,EAAE;AAClB,QAAA,eAAe,EAAE;QACjB,yBAAyB;QACzB,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,yBAAyB,EAAE,eAAe,EAAE,uBAAuB,CAAC,CAAC,CAAC;AAC1G,QAAA,mBAAmB,CAAC,UAAU,EAAE,qBAAqB,CAAC;QACtD,cAAc;QACd,mBAAmB;QACnB,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,OAAO,CAAC,UAAU,EAAE;AACzD,KAAA,CAAC,CAAC;AACJ;;ACtCA;;AAEG;;;;"}
@@ -0,0 +1,70 @@
1
+ import { signal, effect, makeEnvironmentProviders } from '@angular/core';
2
+
3
+ class MfeBridge {
4
+ constructor() {
5
+ this.activeHost = signal(null);
6
+ this.activeMF = signal(null);
7
+ this.isHostMode = signal(false);
8
+ this.hostMenuItems = signal([]);
9
+ this.pluginJson = signal({});
10
+ this.routeConfigs = signal(null);
11
+ this.pageTitle = signal('');
12
+ this.hostNgZone = null;
13
+ this.hostRouter = null;
14
+ this.mirrored = false;
15
+ }
16
+ mirrorToWindow() {
17
+ if (this.mirrored || typeof window === 'undefined')
18
+ return;
19
+ this.mirrored = true;
20
+ const w = window;
21
+ w.hostMenuItems = this.hostMenuItems;
22
+ w.__ARIL_PAGE_TITLE__ = this.pageTitle;
23
+ effect(() => {
24
+ w.activeHost = this.activeHost() ?? undefined;
25
+ });
26
+ effect(() => {
27
+ w.activeMF = this.activeMF() ?? undefined;
28
+ });
29
+ effect(() => {
30
+ w.isHostMode = this.isHostMode();
31
+ });
32
+ effect(() => {
33
+ w.pluginJson = this.pluginJson();
34
+ });
35
+ effect(() => {
36
+ w.routeConfigs = this.routeConfigs() ?? undefined;
37
+ });
38
+ Object.defineProperty(w, 'ngZone', {
39
+ configurable: true,
40
+ get: () => this.hostNgZone
41
+ });
42
+ Object.defineProperty(w, 'hostRouter', {
43
+ configurable: true,
44
+ get: () => this.hostRouter
45
+ });
46
+ }
47
+ }
48
+ // Module Federation shared config olmadığı durumlar için globalThis slot
49
+ // üzerinden tek instance garantisi. Host ve her remote MFE ayrı bundle olsa
50
+ // bile aynı JS realm'inde aynı instance'ı okur — eski globalThis sözleşmesinin
51
+ // yaptığı görevi tek bir tipli slotta birleştirir.
52
+ const BRIDGE_SLOT = '__arilMfeBridge__';
53
+ const bridge = (() => {
54
+ const g = globalThis;
55
+ if (!g[BRIDGE_SLOT]) {
56
+ g[BRIDGE_SLOT] = new MfeBridge();
57
+ }
58
+ return g[BRIDGE_SLOT];
59
+ })();
60
+
61
+ function provideMfeBridge() {
62
+ return makeEnvironmentProviders([{ provide: MfeBridge, useValue: bridge }]);
63
+ }
64
+
65
+ /**
66
+ * Generated bundle index. Do not edit.
67
+ */
68
+
69
+ export { MfeBridge, bridge, provideMfeBridge };
70
+ //# sourceMappingURL=aril-boot-bridge.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aril-boot-bridge.mjs","sources":["../../projects/aril/boot/bridge/src/mfe-bridge.ts","../../projects/aril/boot/bridge/src/provide-mfe-bridge.ts","../../projects/aril/boot/bridge/aril-boot-bridge.ts"],"sourcesContent":["import { NgZone, Signal, effect, signal } from '@angular/core';\r\nimport type { Router } from '@angular/router';\r\n\r\nimport type { Apps, PluginMenuItem } from 'aril/boot/config/apps';\r\n\r\nexport interface RouteConfig {\r\n\tpath: string;\r\n\tcontent: string;\r\n\tversion: number;\r\n}\r\n\r\nexport interface LegacyWindowSlots {\r\n\tactiveHost?: Apps;\r\n\tactiveMF?: Apps;\r\n\tisHostMode?: boolean;\r\n\thostMenuItems?: Signal<PluginMenuItem[]>;\r\n\tpluginJson?: Record<string, unknown>;\r\n\trouteConfigs?: RouteConfig[];\r\n\tngZone?: NgZone;\r\n\thostRouter?: Router;\r\n\t__ARIL_PAGE_TITLE__?: Signal<string>;\r\n}\r\n\r\nexport class MfeBridge {\r\n\treadonly activeHost = signal<Apps | null>(null);\r\n\treadonly activeMF = signal<Apps | null>(null);\r\n\treadonly isHostMode = signal<boolean>(false);\r\n\treadonly hostMenuItems = signal<PluginMenuItem[]>([]);\r\n\treadonly pluginJson = signal<Record<string, unknown>>({});\r\n\treadonly routeConfigs = signal<RouteConfig[] | null>(null);\r\n\treadonly pageTitle = signal<string>('');\r\n\r\n\thostNgZone: NgZone | null = null;\r\n\thostRouter: Router | null = null;\r\n\r\n\tprivate mirrored = false;\r\n\r\n\tmirrorToWindow(): void {\r\n\t\tif (this.mirrored || typeof window === 'undefined') return;\r\n\t\tthis.mirrored = true;\r\n\r\n\t\tconst w = window as Window & LegacyWindowSlots;\r\n\r\n\t\tw.hostMenuItems = this.hostMenuItems;\r\n\t\tw.__ARIL_PAGE_TITLE__ = this.pageTitle;\r\n\r\n\t\teffect(() => {\r\n\t\t\tw.activeHost = this.activeHost() ?? undefined;\r\n\t\t});\r\n\t\teffect(() => {\r\n\t\t\tw.activeMF = this.activeMF() ?? undefined;\r\n\t\t});\r\n\t\teffect(() => {\r\n\t\t\tw.isHostMode = this.isHostMode();\r\n\t\t});\r\n\t\teffect(() => {\r\n\t\t\tw.pluginJson = this.pluginJson();\r\n\t\t});\r\n\t\teffect(() => {\r\n\t\t\tw.routeConfigs = this.routeConfigs() ?? undefined;\r\n\t\t});\r\n\r\n\t\tObject.defineProperty(w, 'ngZone', {\r\n\t\t\tconfigurable: true,\r\n\t\t\tget: () => this.hostNgZone\r\n\t\t});\r\n\t\tObject.defineProperty(w, 'hostRouter', {\r\n\t\t\tconfigurable: true,\r\n\t\t\tget: () => this.hostRouter\r\n\t\t});\r\n\t}\r\n}\r\n\r\n// Module Federation shared config olmadığı durumlar için globalThis slot\r\n// üzerinden tek instance garantisi. Host ve her remote MFE ayrı bundle olsa\r\n// bile aynı JS realm'inde aynı instance'ı okur — eski globalThis sözleşmesinin\r\n// yaptığı görevi tek bir tipli slotta birleştirir.\r\nconst BRIDGE_SLOT = '__arilMfeBridge__';\r\ntype BridgeSlotHost = { [BRIDGE_SLOT]?: MfeBridge };\r\nexport const bridge: MfeBridge = (() => {\r\n\tconst g = globalThis as unknown as BridgeSlotHost;\r\n\tif (!g[BRIDGE_SLOT]) {\r\n\t\tg[BRIDGE_SLOT] = new MfeBridge();\r\n\t}\r\n\treturn g[BRIDGE_SLOT]!;\r\n})();\r\n","import { makeEnvironmentProviders } from '@angular/core';\r\n\r\nimport { MfeBridge, bridge } from './mfe-bridge';\r\n\r\nexport function provideMfeBridge() {\r\n\treturn makeEnvironmentProviders([{ provide: MfeBridge, useValue: bridge }]);\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,27 +1,9 @@
1
- import { isDevMode, signal } from '@angular/core';
1
+ import { isDevMode } from '@angular/core';
2
2
  import { KeycloakEventType } from 'keycloak-angular';
3
- import { switchMap, from, finalize, EMPTY, tap, firstValueFrom } from 'rxjs';
3
+ import { switchMap, from, finalize, takeUntil, fromEvent, tap, EMPTY, firstValueFrom } from 'rxjs';
4
+ import { bridge } from 'aril/boot/bridge';
5
+ import { Apps } from 'aril/boot/config/apps';
4
6
 
5
- var Apps;
6
- (function (Apps) {
7
- Apps["THOR"] = "thor";
8
- Apps["CRM"] = "crm";
9
- Apps["WDM"] = "wdm";
10
- Apps["BILLING"] = "billing";
11
- Apps["PAYMENT"] = "payment";
12
- Apps["YEAP"] = "yeap";
13
- Apps["MW"] = "mw";
14
- Apps["LENA"] = "lena";
15
- Apps["HES"] = "hes";
16
- Apps["CTS"] = "cts";
17
- Apps["SIS"] = "sis";
18
- Apps["MNG"] = "mng";
19
- Apps["MDM"] = "mdm";
20
- Apps["STATE_MACHINE"] = "state-machine";
21
- Apps["REPORT"] = "report";
22
- Apps["LGC"] = "lgc";
23
- Apps["DMS"] = "dms";
24
- })(Apps || (Apps = {}));
25
7
  var AppsRoutes;
26
8
  (function (AppsRoutes) {
27
9
  AppsRoutes["MNG_BASE_URL"] = "mngBaseUrl";
@@ -67,8 +49,8 @@ const API_CONFIGS = new ApiConfigsFactory();
67
49
  const loadApiConfigs = (httpClient, keycloak, appName, microAppService) => () => new Promise((resolve) => httpClient
68
50
  .get(isDevMode() ? './assets/local-configs/api.local.json' : './api.json')
69
51
  .pipe(switchMap((configs) => {
70
- globalThis.hostMenuItems = signal([]);
71
- globalThis.pluginJson = {};
52
+ bridge.hostMenuItems.set([]);
53
+ bridge.pluginJson.set({});
72
54
  Object.assign(API_CONFIGS, { ...configs });
73
55
  return from(keycloak.init({
74
56
  config: API_CONFIGS.keycloak,
@@ -78,13 +60,16 @@ const loadApiConfigs = (httpClient, keycloak, appName, microAppService) => () =>
78
60
  })).pipe(finalize(() => addEventListener('module-ready', (event) => {
79
61
  const app = event.detail;
80
62
  dispatchEvent(new CustomEvent(`${app}:init-keycloak`, { detail: keycloak }));
81
- keycloak.keycloakEvents$.subscribe((e) => {
63
+ keycloak.keycloakEvents$.pipe(takeUntil(fromEvent(window, 'beforeunload'))).subscribe((e) => {
82
64
  if (e.type === KeycloakEventType.OnAuthRefreshSuccess) {
83
65
  dispatchEvent(new CustomEvent(`${app}:update-keycloak`, { detail: keycloak }));
84
66
  }
85
67
  });
86
68
  })));
87
- }), switchMap(() => microAppService?.init(httpClient, API_CONFIGS.api) ?? EMPTY))
69
+ }), switchMap(() => microAppService?.init(httpClient, API_CONFIGS.api).pipe(tap((result) => {
70
+ bridge.hostMenuItems.set(result.menuItems);
71
+ bridge.pluginJson.set(result.plugins);
72
+ })) ?? EMPTY))
88
73
  .subscribe()
89
74
  .add(resolve));
90
75
  /**
@@ -108,7 +93,7 @@ const loadInitData = (httpClient) => () => new Promise((resolve, _reject) => {
108
93
  const endpoint = API_CONFIGS.api + '/ui-route-content-configs/all';
109
94
  httpClient.get(endpoint).subscribe({
110
95
  next: (data) => {
111
- globalThis.routeConfigs = data;
96
+ bridge.routeConfigs.set(data);
112
97
  resolve();
113
98
  },
114
99
  error: (err) => {
@@ -1 +1 @@
1
- {"version":3,"file":"aril-boot-config-api.mjs","sources":["../../projects/aril/boot/config/api/src/interfaces.ts","../../projects/aril/boot/config/api/src/api.service.ts","../../projects/aril/boot/config/api/aril-boot-config-api.ts"],"sourcesContent":["export enum Apps {\r\n\tTHOR = 'thor',\r\n\tCRM = 'crm',\r\n\tWDM = 'wdm',\r\n\tBILLING = 'billing',\r\n\tPAYMENT = 'payment',\r\n\tYEAP = 'yeap',\r\n\tMW = 'mw',\r\n\tLENA = 'lena',\r\n\tHES = 'hes',\r\n\tCTS = 'cts',\r\n\tSIS = 'sis',\r\n\tMNG = 'mng',\r\n\tMDM = 'mdm',\r\n\tSTATE_MACHINE = 'state-machine',\r\n\tREPORT = 'report',\r\n\tLGC = 'lgc',\r\n\tDMS = 'dms'\r\n}\r\n\r\nexport enum AppsRoutes {\r\n\tMNG_BASE_URL = 'mngBaseUrl',\r\n}\r\n\r\nexport interface KeycloakConfig {\r\n\turl: string;\r\n\trealm: string;\r\n\tclientId: string;\r\n}\r\n\r\nexport class ApiConfigsFactory {\r\n\tapi: string = '';\r\n\tfromMail: string = '';\r\n\tmwApi: string = '';\r\n\taiApi: string = '';\r\n\tstatusApi: string = '';\r\n\tenvironment: string = '';\r\n\tkeycloak!: Keycloak.KeycloakConfig;\r\n\troutes: Record<AppsRoutes, string> = {\r\n\t\tmngBaseUrl: '',\r\n\t};\r\n\tprefixMap: Record<Apps, string> = {\r\n\t\t[Apps.THOR]: '',\r\n\t\t[Apps.CRM]: '',\r\n\t\t[Apps.WDM]: '',\r\n\t\t[Apps.BILLING]: '',\r\n\t\t[Apps.PAYMENT]: '',\r\n\t\t[Apps.YEAP]: '',\r\n\t\t[Apps.MW]: '',\r\n\t\t[Apps.LENA]: '',\r\n\t\t[Apps.HES]: '',\r\n\t\t[Apps.CTS]: '',\r\n\t\t[Apps.SIS]: '',\r\n\t\t[Apps.MNG]: '',\r\n\t\t[Apps.STATE_MACHINE]: '',\r\n\t\t[Apps.MDM]:'',\r\n\t\t[Apps.REPORT]: '',\r\n\t\t[Apps.LGC]: '',\r\n\t\t[Apps.DMS]: ''\r\n\t};\r\n\tgetExternalAppEndpoint(appName: Apps): string {\r\n\t\tconst prefix = this.prefixMap[appName] || this.prefixMap[Apps.MNG];\r\n\t\treturn `${new URL(this.api).origin}/${prefix}`;\r\n\t}\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { isDevMode, signal } from '@angular/core';\r\n\r\nimport { KeycloakEventType, KeycloakService } from 'keycloak-angular';\r\nimport { EMPTY, finalize, firstValueFrom, from, switchMap, tap } from 'rxjs';\r\n\r\nimport { MicroAppService } from 'aril/boot/config/apps';\r\n\r\nimport { ApiConfigsFactory, Apps } from './interfaces';\r\n\r\nexport const API_CONFIGS = new ApiConfigsFactory();\r\n\r\nexport const loadApiConfigs =\r\n\t(httpClient: HttpClient, keycloak: KeycloakService, appName: string, microAppService?: MicroAppService) => () =>\r\n\t\tnew Promise<void>((resolve) =>\r\n\t\t\thttpClient\r\n\t\t\t\t.get<ApiConfigsFactory>(isDevMode() ? './assets/local-configs/api.local.json' : './api.json')\r\n\t\t\t\t.pipe(\r\n\t\t\t\t\tswitchMap((configs) => {\r\n\t\t\t\t\t\t(globalThis as any).hostMenuItems = signal([]);\r\n\t\t\t\t\t\t(globalThis as any).pluginJson = {};\r\n\r\n\t\t\t\t\t\tObject.assign(API_CONFIGS, { ...configs });\r\n\r\n\t\t\t\t\t\treturn from(\r\n\t\t\t\t\t\t\tkeycloak.init({\r\n\t\t\t\t\t\t\t\tconfig: API_CONFIGS.keycloak,\r\n\t\t\t\t\t\t\t\tloadUserProfileAtStartUp: true,\r\n\t\t\t\t\t\t\t\tinitOptions: { onLoad: 'login-required', checkLoginIframe: false },\r\n\t\t\t\t\t\t\t\tbearerExcludedUrls: ['/assets']\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t).pipe(\r\n\t\t\t\t\t\t\tfinalize(() =>\r\n\t\t\t\t\t\t\t\taddEventListener('module-ready', (event) => {\r\n\t\t\t\t\t\t\t\t\tconst app = (event as CustomEvent).detail;\r\n\t\t\t\t\t\t\t\t\tdispatchEvent(new CustomEvent(`${app}:init-keycloak`, { detail: keycloak }));\r\n\r\n\t\t\t\t\t\t\t\t\tkeycloak.keycloakEvents$.subscribe((e) => {\r\n\t\t\t\t\t\t\t\t\t\tif (e.type === KeycloakEventType.OnAuthRefreshSuccess) {\r\n\t\t\t\t\t\t\t\t\t\t\tdispatchEvent(new CustomEvent(`${app}:update-keycloak`, { detail: keycloak }));\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tswitchMap(() => microAppService?.init(httpClient, API_CONFIGS.api) ?? EMPTY)\r\n\t\t\t\t)\r\n\t\t\t\t.subscribe()\r\n\t\t\t\t.add(resolve)\r\n\t\t);\r\n\r\n/**\r\n * only works when isHostMode is true\r\n * micro-app access its own api.json file when opened in host\r\n */\r\nexport function setApiConfigOnMFEMode(\r\n\thttpClient: HttpClient,\r\n\tkeycloak: KeycloakService,\r\n\tappName: Apps\r\n): () => Promise<any> {\r\n\treturn () => {\r\n\t\tconst observable$ = httpClient\r\n\t\t\t.get<ApiConfigsFactory>(isDevMode() ? './assets/local-configs/api.local.json' : './api.json')\r\n\t\t\t.pipe(\r\n\t\t\t\ttap((configs) => {\r\n\t\t\t\t\tObject.assign(API_CONFIGS, { ...configs });\r\n\t\t\t\t\tif (appName !== Apps.THOR && appName !== Apps.YEAP) {\r\n\t\t\t\t\t\tAPI_CONFIGS.api = API_CONFIGS.getExternalAppEndpoint(appName);\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t);\r\n\r\n\t\treturn firstValueFrom(observable$);\r\n\t};\r\n}\r\n\r\nexport const loadInitData = (httpClient: HttpClient) => () =>\r\n\tnew Promise<void>((resolve, _reject) => {\r\n\t\tconst endpoint = API_CONFIGS.api + '/ui-route-content-configs/all';\r\n\t\thttpClient.get(endpoint).subscribe({\r\n\t\t\tnext: (data) => {\r\n\t\t\t\t(globalThis as any).routeConfigs = data;\r\n\t\t\t\tresolve();\r\n\t\t\t},\r\n\t\t\terror: (err) => {\r\n\t\t\t\tconsole.error(`Failed to load init data from ${endpoint}:`, err);\r\n\t\t\t\tresolve();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAAA,IAAY,IAkBX,CAAA;AAlBD,CAAA,UAAY,IAAI,EAAA;AACf,IAAA,IAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,IAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,IAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,IAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,IAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,IAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,IAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACT,IAAA,IAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,IAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,IAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,IAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,IAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,IAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,IAAA,CAAA,eAAA,CAAA,GAAA,eAA+B,CAAA;AAC/B,IAAA,IAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,IAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,IAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACZ,CAAC,EAlBW,IAAI,KAAJ,IAAI,GAkBf,EAAA,CAAA,CAAA,CAAA;AAED,IAAY,UAEX,CAAA;AAFD,CAAA,UAAY,UAAU,EAAA;AACrB,IAAA,UAAA,CAAA,cAAA,CAAA,GAAA,YAA2B,CAAA;AAC5B,CAAC,EAFW,UAAU,KAAV,UAAU,GAErB,EAAA,CAAA,CAAA,CAAA;MAQY,iBAAiB,CAAA;AAA9B,IAAA,WAAA,GAAA;QACC,IAAG,CAAA,GAAA,GAAW,EAAE,CAAC;QACjB,IAAQ,CAAA,QAAA,GAAW,EAAE,CAAC;QACtB,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;QACnB,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;QACnB,IAAS,CAAA,SAAA,GAAW,EAAE,CAAC;QACvB,IAAW,CAAA,WAAA,GAAW,EAAE,CAAC;AAEzB,QAAA,IAAA,CAAA,MAAM,GAA+B;AACpC,YAAA,UAAU,EAAE,EAAE;SACd,CAAC;AACF,QAAA,IAAA,CAAA,SAAS,GAAyB;AACjC,YAAA,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE;AACf,YAAA,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE;AACd,YAAA,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE;AACd,YAAA,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE;AAClB,YAAA,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE;AAClB,YAAA,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE;AACf,YAAA,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE;AACb,YAAA,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE;AACf,YAAA,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE;AACd,YAAA,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE;AACd,YAAA,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE;AACd,YAAA,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE;AACd,YAAA,CAAC,IAAI,CAAC,aAAa,GAAG,EAAE;AACxB,YAAA,CAAC,IAAI,CAAC,GAAG,GAAE,EAAE;AACb,YAAA,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE;AACjB,YAAA,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE;AACd,YAAA,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE;SACd,CAAC;KAKF;AAJA,IAAA,sBAAsB,CAAC,OAAa,EAAA;AACnC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnE,QAAA,OAAO,CAAG,EAAA,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAI,CAAA,EAAA,MAAM,EAAE,CAAC;KAC/C;AACD;;ACtDY,MAAA,WAAW,GAAG,IAAI,iBAAiB,GAAG;AAEtC,MAAA,cAAc,GAC1B,CAAC,UAAsB,EAAE,QAAyB,EAAE,OAAe,EAAE,eAAiC,KAAK,MAC1G,IAAI,OAAO,CAAO,CAAC,OAAO,KACzB,UAAU;KACR,GAAG,CAAoB,SAAS,EAAE,GAAG,uCAAuC,GAAG,YAAY,CAAC;AAC5F,KAAA,IAAI,CACJ,SAAS,CAAC,CAAC,OAAO,KAAI;AACpB,IAAA,UAAkB,CAAC,aAAa,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;AAC9C,IAAA,UAAkB,CAAC,UAAU,GAAG,EAAE,CAAC;IAEpC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AAE3C,IAAA,OAAO,IAAI,CACV,QAAQ,CAAC,IAAI,CAAC;QACb,MAAM,EAAE,WAAW,CAAC,QAAQ;AAC5B,QAAA,wBAAwB,EAAE,IAAI;QAC9B,WAAW,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,KAAK,EAAE;QAClE,kBAAkB,EAAE,CAAC,SAAS,CAAC;AAC/B,KAAA,CAAC,CACF,CAAC,IAAI,CACL,QAAQ,CAAC,MACR,gBAAgB,CAAC,cAAc,EAAE,CAAC,KAAK,KAAI;AAC1C,QAAA,MAAM,GAAG,GAAI,KAAqB,CAAC,MAAM,CAAC;AAC1C,QAAA,aAAa,CAAC,IAAI,WAAW,CAAC,GAAG,GAAG,CAAA,cAAA,CAAgB,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QAE7E,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;YACxC,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,oBAAoB,EAAE;AACtD,gBAAA,aAAa,CAAC,IAAI,WAAW,CAAC,GAAG,GAAG,CAAA,gBAAA,CAAkB,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;aAC/E;AACF,SAAC,CAAC,CAAC;KACH,CAAC,CACF,CACD,CAAC;AACH,CAAC,CAAC,EACF,SAAS,CAAC,MAAM,eAAe,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAC5E;AACA,KAAA,SAAS,EAAE;AACX,KAAA,GAAG,CAAC,OAAO,CAAC,EACb;AAEJ;;;AAGG;SACa,qBAAqB,CACpC,UAAsB,EACtB,QAAyB,EACzB,OAAa,EAAA;AAEb,IAAA,OAAO,MAAK;QACX,MAAM,WAAW,GAAG,UAAU;aAC5B,GAAG,CAAoB,SAAS,EAAE,GAAG,uCAAuC,GAAG,YAAY,CAAC;AAC5F,aAAA,IAAI,CACJ,GAAG,CAAC,CAAC,OAAO,KAAI;YACf,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AAC3C,YAAA,IAAI,OAAO,KAAK,IAAI,CAAC,IAAI,IAAI,OAAO,KAAK,IAAI,CAAC,IAAI,EAAE;gBACnD,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;aAC9D;SACD,CAAC,CACF,CAAC;AAEH,QAAA,OAAO,cAAc,CAAC,WAAW,CAAC,CAAC;AACpC,KAAC,CAAC;AACH,CAAC;MAEY,YAAY,GAAG,CAAC,UAAsB,KAAK,MACvD,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,OAAO,KAAI;AACtC,IAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,GAAG,+BAA+B,CAAC;AACnE,IAAA,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;AAClC,QAAA,IAAI,EAAE,CAAC,IAAI,KAAI;AACb,YAAA,UAAkB,CAAC,YAAY,GAAG,IAAI,CAAC;AACxC,YAAA,OAAO,EAAE,CAAC;SACV;AACD,QAAA,KAAK,EAAE,CAAC,GAAG,KAAI;YACd,OAAO,CAAC,KAAK,CAAC,CAAA,8BAAA,EAAiC,QAAQ,CAAG,CAAA,CAAA,EAAE,GAAG,CAAC,CAAC;AACjE,YAAA,OAAO,EAAE,CAAC;SACV;AACD,KAAA,CAAC,CAAC;AACJ,CAAC;;AC1FF;;AAEG;;;;"}
1
+ {"version":3,"file":"aril-boot-config-api.mjs","sources":["../../projects/aril/boot/config/api/src/interfaces.ts","../../projects/aril/boot/config/api/src/api.service.ts","../../projects/aril/boot/config/api/aril-boot-config-api.ts"],"sourcesContent":["import { Apps } from 'aril/boot/config/apps';\r\n\r\nexport enum AppsRoutes {\r\n\tMNG_BASE_URL = 'mngBaseUrl',\r\n}\r\n\r\nexport interface KeycloakConfig {\r\n\turl: string;\r\n\trealm: string;\r\n\tclientId: string;\r\n}\r\n\r\nexport class ApiConfigsFactory {\r\n\tapi: string = '';\r\n\tfromMail: string = '';\r\n\tmwApi: string = '';\r\n\taiApi: string = '';\r\n\tstatusApi: string = '';\r\n\tenvironment: string = '';\r\n\tkeycloak!: Keycloak.KeycloakConfig;\r\n\troutes: Record<AppsRoutes, string> = {\r\n\t\tmngBaseUrl: '',\r\n\t};\r\n\tprefixMap: Record<Apps, string> = {\r\n\t\t[Apps.THOR]: '',\r\n\t\t[Apps.CRM]: '',\r\n\t\t[Apps.WDM]: '',\r\n\t\t[Apps.BILLING]: '',\r\n\t\t[Apps.PAYMENT]: '',\r\n\t\t[Apps.YEAP]: '',\r\n\t\t[Apps.MW]: '',\r\n\t\t[Apps.LENA]: '',\r\n\t\t[Apps.HES]: '',\r\n\t\t[Apps.CTS]: '',\r\n\t\t[Apps.SIS]: '',\r\n\t\t[Apps.MNG]: '',\r\n\t\t[Apps.STATE_MACHINE]: '',\r\n\t\t[Apps.MDM]:'',\r\n\t\t[Apps.REPORT]: '',\r\n\t\t[Apps.LGC]: '',\r\n\t\t[Apps.DMS]: ''\r\n\t};\r\n\tgetExternalAppEndpoint(appName: Apps): string {\r\n\t\tconst prefix = this.prefixMap[appName] || this.prefixMap[Apps.MNG];\r\n\t\treturn `${new URL(this.api).origin}/${prefix}`;\r\n\t}\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { isDevMode } from '@angular/core';\r\n\r\nimport { KeycloakEventType, KeycloakService } from 'keycloak-angular';\r\nimport { EMPTY, finalize, firstValueFrom, from, fromEvent, switchMap, takeUntil, tap } from 'rxjs';\r\n\r\nimport { RouteConfig, bridge } from 'aril/boot/bridge';\r\nimport { Apps, MicroAppService } from 'aril/boot/config/apps';\r\n\r\nimport { ApiConfigsFactory } from './interfaces';\r\n\r\nexport const API_CONFIGS = new ApiConfigsFactory();\r\n\r\nexport const loadApiConfigs =\r\n\t(httpClient: HttpClient, keycloak: KeycloakService, appName: string, microAppService?: MicroAppService) => () =>\r\n\t\tnew Promise<void>((resolve) =>\r\n\t\t\thttpClient\r\n\t\t\t\t.get<ApiConfigsFactory>(isDevMode() ? './assets/local-configs/api.local.json' : './api.json')\r\n\t\t\t\t.pipe(\r\n\t\t\t\t\tswitchMap((configs) => {\r\n\t\t\t\t\t\tbridge.hostMenuItems.set([]);\r\n\t\t\t\t\t\tbridge.pluginJson.set({});\r\n\r\n\t\t\t\t\t\tObject.assign(API_CONFIGS, { ...configs });\r\n\r\n\t\t\t\t\t\treturn from(\r\n\t\t\t\t\t\t\tkeycloak.init({\r\n\t\t\t\t\t\t\t\tconfig: API_CONFIGS.keycloak,\r\n\t\t\t\t\t\t\t\tloadUserProfileAtStartUp: true,\r\n\t\t\t\t\t\t\t\tinitOptions: { onLoad: 'login-required', checkLoginIframe: false },\r\n\t\t\t\t\t\t\t\tbearerExcludedUrls: ['/assets']\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t).pipe(\r\n\t\t\t\t\t\t\tfinalize(() =>\r\n\t\t\t\t\t\t\t\taddEventListener('module-ready', (event) => {\r\n\t\t\t\t\t\t\t\t\tconst app = (event as CustomEvent).detail;\r\n\t\t\t\t\t\t\t\t\tdispatchEvent(new CustomEvent(`${app}:init-keycloak`, { detail: keycloak }));\r\n\r\n\t\t\t\t\t\t\t\t\tkeycloak.keycloakEvents$.pipe(takeUntil(fromEvent(window, 'beforeunload'))).subscribe((e) => {\r\n\t\t\t\t\t\t\t\t\t\tif (e.type === KeycloakEventType.OnAuthRefreshSuccess) {\r\n\t\t\t\t\t\t\t\t\t\t\tdispatchEvent(new CustomEvent(`${app}:update-keycloak`, { detail: keycloak }));\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tswitchMap(\r\n\t\t\t\t\t\t() =>\r\n\t\t\t\t\t\t\tmicroAppService?.init(httpClient, API_CONFIGS.api).pipe(\r\n\t\t\t\t\t\t\t\ttap((result) => {\r\n\t\t\t\t\t\t\t\t\tbridge.hostMenuItems.set(result.menuItems);\r\n\t\t\t\t\t\t\t\t\tbridge.pluginJson.set(result.plugins);\r\n\t\t\t\t\t\t\t\t})\r\n\t\t\t\t\t\t\t) ?? EMPTY\r\n\t\t\t\t\t)\r\n\t\t\t\t)\r\n\t\t\t\t.subscribe()\r\n\t\t\t\t.add(resolve)\r\n\t\t);\r\n\r\n/**\r\n * only works when isHostMode is true\r\n * micro-app access its own api.json file when opened in host\r\n */\r\nexport function setApiConfigOnMFEMode(\r\n\thttpClient: HttpClient,\r\n\tkeycloak: KeycloakService,\r\n\tappName: Apps\r\n): () => Promise<any> {\r\n\treturn () => {\r\n\t\tconst observable$ = httpClient\r\n\t\t\t.get<ApiConfigsFactory>(isDevMode() ? './assets/local-configs/api.local.json' : './api.json')\r\n\t\t\t.pipe(\r\n\t\t\t\ttap((configs) => {\r\n\t\t\t\t\tObject.assign(API_CONFIGS, { ...configs });\r\n\t\t\t\t\tif (appName !== Apps.THOR && appName !== Apps.YEAP) {\r\n\t\t\t\t\t\tAPI_CONFIGS.api = API_CONFIGS.getExternalAppEndpoint(appName);\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t);\r\n\r\n\t\treturn firstValueFrom(observable$);\r\n\t};\r\n}\r\n\r\nexport const loadInitData = (httpClient: HttpClient) => () =>\r\n\tnew Promise<void>((resolve, _reject) => {\r\n\t\tconst endpoint = API_CONFIGS.api + '/ui-route-content-configs/all';\r\n\t\thttpClient.get<RouteConfig[]>(endpoint).subscribe({\r\n\t\t\tnext: (data) => {\r\n\t\t\t\tbridge.routeConfigs.set(data);\r\n\t\t\t\tresolve();\r\n\t\t\t},\r\n\t\t\terror: (err) => {\r\n\t\t\t\tconsole.error(`Failed to load init data from ${endpoint}:`, err);\r\n\t\t\t\tresolve();\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAEA,IAAY,UAEX,CAAA;AAFD,CAAA,UAAY,UAAU,EAAA;AACrB,IAAA,UAAA,CAAA,cAAA,CAAA,GAAA,YAA2B,CAAA;AAC5B,CAAC,EAFW,UAAU,KAAV,UAAU,GAErB,EAAA,CAAA,CAAA,CAAA;MAQY,iBAAiB,CAAA;AAA9B,IAAA,WAAA,GAAA;QACC,IAAG,CAAA,GAAA,GAAW,EAAE,CAAC;QACjB,IAAQ,CAAA,QAAA,GAAW,EAAE,CAAC;QACtB,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;QACnB,IAAK,CAAA,KAAA,GAAW,EAAE,CAAC;QACnB,IAAS,CAAA,SAAA,GAAW,EAAE,CAAC;QACvB,IAAW,CAAA,WAAA,GAAW,EAAE,CAAC;AAEzB,QAAA,IAAA,CAAA,MAAM,GAA+B;AACpC,YAAA,UAAU,EAAE,EAAE;SACd,CAAC;AACF,QAAA,IAAA,CAAA,SAAS,GAAyB;AACjC,YAAA,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE;AACf,YAAA,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE;AACd,YAAA,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE;AACd,YAAA,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE;AAClB,YAAA,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE;AAClB,YAAA,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE;AACf,YAAA,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE;AACb,YAAA,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE;AACf,YAAA,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE;AACd,YAAA,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE;AACd,YAAA,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE;AACd,YAAA,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE;AACd,YAAA,CAAC,IAAI,CAAC,aAAa,GAAG,EAAE;AACxB,YAAA,CAAC,IAAI,CAAC,GAAG,GAAE,EAAE;AACb,YAAA,CAAC,IAAI,CAAC,MAAM,GAAG,EAAE;AACjB,YAAA,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE;AACd,YAAA,CAAC,IAAI,CAAC,GAAG,GAAG,EAAE;SACd,CAAC;KAKF;AAJA,IAAA,sBAAsB,CAAC,OAAa,EAAA;AACnC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnE,QAAA,OAAO,CAAG,EAAA,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAI,CAAA,EAAA,MAAM,EAAE,CAAC;KAC/C;AACD;;ACnCY,MAAA,WAAW,GAAG,IAAI,iBAAiB,GAAG;AAEtC,MAAA,cAAc,GAC1B,CAAC,UAAsB,EAAE,QAAyB,EAAE,OAAe,EAAE,eAAiC,KAAK,MAC1G,IAAI,OAAO,CAAO,CAAC,OAAO,KACzB,UAAU;KACR,GAAG,CAAoB,SAAS,EAAE,GAAG,uCAAuC,GAAG,YAAY,CAAC;AAC5F,KAAA,IAAI,CACJ,SAAS,CAAC,CAAC,OAAO,KAAI;AACrB,IAAA,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC7B,IAAA,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAE1B,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AAE3C,IAAA,OAAO,IAAI,CACV,QAAQ,CAAC,IAAI,CAAC;QACb,MAAM,EAAE,WAAW,CAAC,QAAQ;AAC5B,QAAA,wBAAwB,EAAE,IAAI;QAC9B,WAAW,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,KAAK,EAAE;QAClE,kBAAkB,EAAE,CAAC,SAAS,CAAC;AAC/B,KAAA,CAAC,CACF,CAAC,IAAI,CACL,QAAQ,CAAC,MACR,gBAAgB,CAAC,cAAc,EAAE,CAAC,KAAK,KAAI;AAC1C,QAAA,MAAM,GAAG,GAAI,KAAqB,CAAC,MAAM,CAAC;AAC1C,QAAA,aAAa,CAAC,IAAI,WAAW,CAAC,GAAG,GAAG,CAAA,cAAA,CAAgB,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QAE7E,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;YAC3F,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,oBAAoB,EAAE;AACtD,gBAAA,aAAa,CAAC,IAAI,WAAW,CAAC,GAAG,GAAG,CAAA,gBAAA,CAAkB,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;aAC/E;AACF,SAAC,CAAC,CAAC;KACH,CAAC,CACF,CACD,CAAC;AACH,CAAC,CAAC,EACF,SAAS,CACR,MACC,eAAe,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CACtD,GAAG,CAAC,CAAC,MAAM,KAAI;IACd,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC3C,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC,CAAC,CACF,IAAI,KAAK,CACX,CACD;AACA,KAAA,SAAS,EAAE;AACX,KAAA,GAAG,CAAC,OAAO,CAAC,EACb;AAEJ;;;AAGG;SACa,qBAAqB,CACpC,UAAsB,EACtB,QAAyB,EACzB,OAAa,EAAA;AAEb,IAAA,OAAO,MAAK;QACX,MAAM,WAAW,GAAG,UAAU;aAC5B,GAAG,CAAoB,SAAS,EAAE,GAAG,uCAAuC,GAAG,YAAY,CAAC;AAC5F,aAAA,IAAI,CACJ,GAAG,CAAC,CAAC,OAAO,KAAI;YACf,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AAC3C,YAAA,IAAI,OAAO,KAAK,IAAI,CAAC,IAAI,IAAI,OAAO,KAAK,IAAI,CAAC,IAAI,EAAE;gBACnD,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;aAC9D;SACD,CAAC,CACF,CAAC;AAEH,QAAA,OAAO,cAAc,CAAC,WAAW,CAAC,CAAC;AACpC,KAAC,CAAC;AACH,CAAC;MAEY,YAAY,GAAG,CAAC,UAAsB,KAAK,MACvD,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,OAAO,KAAI;AACtC,IAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,GAAG,+BAA+B,CAAC;AACnE,IAAA,UAAU,CAAC,GAAG,CAAgB,QAAQ,CAAC,CAAC,SAAS,CAAC;AACjD,QAAA,IAAI,EAAE,CAAC,IAAI,KAAI;AACd,YAAA,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9B,YAAA,OAAO,EAAE,CAAC;SACV;AACD,QAAA,KAAK,EAAE,CAAC,GAAG,KAAI;YACd,OAAO,CAAC,KAAK,CAAC,CAAA,8BAAA,EAAiC,QAAQ,CAAG,CAAA,CAAA,EAAE,GAAG,CAAC,CAAC;AACjE,YAAA,OAAO,EAAE,CAAC;SACV;AACD,KAAA,CAAC,CAAC;AACJ,CAAC;;ACnGF;;AAEG;;;;"}