@acorex/modules 18.2.1 → 18.2.2

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 (234) hide show
  1. package/application-management/lib/const.d.ts +5 -0
  2. package/application-management/lib/menu.provider.d.ts +3 -3
  3. package/auth/lib/auth.config.d.ts +6 -0
  4. package/auth/lib/login/password/password.component.d.ts +1 -0
  5. package/auth/lib/menu.provider.d.ts +2 -2
  6. package/conversation/index.d.ts +5 -3
  7. package/conversation/lib/const.d.ts +7 -0
  8. package/conversation/lib/conversation.module.d.ts +1 -4
  9. package/conversation/lib/entities/chat/chat.module.d.ts +10 -4
  10. package/conversation/lib/entities/chat/chat.service.d.ts +14 -0
  11. package/conversation/lib/entities/chat/chat.type.d.ts +2 -1
  12. package/conversation/lib/entities/chat/components/chat-item/chat-item.component.d.ts +11 -11
  13. package/conversation/lib/entities/chat/components/chat-item-header/chat-item-header.component.d.ts +8 -1
  14. package/conversation/lib/entities/chat/components/chat-preview/chat-preview.component.d.ts +7 -4
  15. package/conversation/lib/entities/chat/components/chat-preview-header/chat-preview-header.component.d.ts +7 -0
  16. package/conversation/lib/entities/chat/pages/chat/chat.component.d.ts +19 -1
  17. package/conversation/lib/entities/comments/comments.service.d.ts +3 -3
  18. package/esm2022/application-management/lib/const.mjs +6 -0
  19. package/esm2022/application-management/lib/layouts/module-entity-detail-view/module-entity-detail-view.component.mjs +2 -2
  20. package/esm2022/application-management/lib/menu.provider.mjs +17 -19
  21. package/esm2022/application-management/lib/module-designer/module-designer.component.mjs +3 -3
  22. package/esm2022/auth/lib/account/app-chooser/app-chooser.component.mjs +3 -3
  23. package/esm2022/auth/lib/account/tenant-chooser/tenant-chooser.component.mjs +3 -3
  24. package/esm2022/auth/lib/auth.config.mjs +1 -1
  25. package/esm2022/auth/lib/forgot/password/password.component.mjs +2 -2
  26. package/esm2022/auth/lib/login/password/password.component.mjs +6 -3
  27. package/esm2022/auth/lib/menu.provider.mjs +28 -35
  28. package/esm2022/auth/lib/two-factor/two-factor-code/two-factor-code.component.mjs +2 -2
  29. package/esm2022/backend/lib/data/api/data-provider.mjs +7 -2
  30. package/esm2022/conversation/index.mjs +6 -4
  31. package/esm2022/conversation/lib/const.mjs +8 -0
  32. package/esm2022/conversation/lib/conversation.module.mjs +5 -10
  33. package/esm2022/conversation/lib/entities/chat/chat.module.mjs +64 -13
  34. package/esm2022/conversation/lib/entities/chat/chat.service.mjs +23 -0
  35. package/esm2022/conversation/lib/entities/chat/chat.type.mjs +1 -1
  36. package/esm2022/conversation/lib/entities/chat/components/chat-item/chat-item.component.mjs +33 -15
  37. package/esm2022/conversation/lib/entities/chat/components/chat-item-header/chat-item-header.component.mjs +18 -5
  38. package/esm2022/conversation/lib/entities/chat/components/chat-preview/chat-preview.component.mjs +34 -147
  39. package/esm2022/conversation/lib/entities/chat/components/chat-preview-header/chat-preview-header.component.mjs +22 -0
  40. package/esm2022/conversation/lib/entities/chat/pages/chat/chat.component.mjs +73 -8
  41. package/esm2022/conversation/lib/entities/comments/comment.module.mjs +4 -4
  42. package/esm2022/conversation/lib/entities/comments/comments.service.mjs +7 -6
  43. package/esm2022/conversation/lib/entities/comments/pages/comment-list-view.component.mjs +2 -3
  44. package/esm2022/form-template-management/lib/components/widgets/template-designer/index.mjs +3 -0
  45. package/esm2022/form-template-management/lib/components/widgets/template-designer/template-designer-widget-view.component.mjs +44 -0
  46. package/esm2022/form-template-management/lib/components/widgets/template-designer/template-designer-widget.config.mjs +23 -0
  47. package/esm2022/form-template-management/lib/const.mjs +2 -2
  48. package/esm2022/form-template-management/lib/entities/category/category.entity.mjs +13 -13
  49. package/esm2022/form-template-management/lib/entities/template/template.entity.mjs +208 -15
  50. package/esm2022/form-template-management/lib/entities/template/template.types.mjs +1 -1
  51. package/esm2022/form-template-management/lib/form-template-management.module.mjs +60 -4
  52. package/esm2022/form-template-management/lib/menu.provider.mjs +16 -29
  53. package/esm2022/form-template-management/lib/pages/designer/designer.page.mjs +9 -4
  54. package/esm2022/form-template-management/lib/services/designer-connector.service.mjs +33 -0
  55. package/esm2022/form-template-management/lib/services/template.provider.mjs +31 -0
  56. package/esm2022/form-template-management/lib/workflows/create-template.workflow.mjs +40 -0
  57. package/esm2022/form-template-management/lib/workflows/design-template.workflow.mjs +32 -0
  58. package/esm2022/localization-management/lib/const.mjs +9 -0
  59. package/esm2022/localization-management/lib/menu.provider.mjs +33 -35
  60. package/esm2022/notification-management/lib/admin-notification-slot/admin-notification-item/admin-notification-item.component.mjs +3 -3
  61. package/esm2022/notification-management/lib/const.mjs +9 -0
  62. package/esm2022/notification-management/lib/entities/my-notification.mjs +5 -5
  63. package/esm2022/notification-management/lib/entities/notification-template.entity.mjs +4 -4
  64. package/esm2022/notification-management/lib/entities/notification.entity.mjs +4 -4
  65. package/esm2022/notification-management/lib/menu.provider.mjs +39 -37
  66. package/esm2022/platform-management/lib/common/country/country.entity.mjs +2 -2
  67. package/esm2022/platform-management/lib/common/province/province.entity.mjs +8 -8
  68. package/esm2022/platform-management/lib/const.mjs +12 -0
  69. package/esm2022/platform-management/lib/global-variables/entities/global-variable.entity.mjs +5 -4
  70. package/esm2022/platform-management/lib/global-variables/entity.loader.mjs +8 -11
  71. package/esm2022/platform-management/lib/menu.provider.mjs +53 -47
  72. package/esm2022/setting-management/acorex-modules-setting-management.mjs +5 -0
  73. package/esm2022/setting-management/index.mjs +5 -0
  74. package/esm2022/setting-management/lib/const.mjs +7 -0
  75. package/esm2022/setting-management/lib/entities/index.mjs +2 -0
  76. package/esm2022/setting-management/lib/entities/setting/index.mjs +5 -0
  77. package/esm2022/setting-management/lib/entities/setting/setting.entity.mjs +244 -0
  78. package/esm2022/setting-management/lib/entities/setting/setting.module.mjs +28 -0
  79. package/esm2022/setting-management/lib/entities/setting/setting.service.mjs +17 -0
  80. package/esm2022/setting-management/lib/entities/setting/setting.types.mjs +2 -0
  81. package/esm2022/setting-management/lib/entity.provider.mjs +25 -0
  82. package/esm2022/setting-management/lib/menu.provider.mjs +32 -0
  83. package/esm2022/setting-management/lib/setting-management.module.mjs +44 -0
  84. package/esm2022/text-template-management/acorex-modules-text-template-management.mjs +5 -0
  85. package/esm2022/text-template-management/index.mjs +6 -0
  86. package/esm2022/text-template-management/lib/const.mjs +8 -0
  87. package/esm2022/text-template-management/lib/entities/category/category.entity.mjs +257 -0
  88. package/esm2022/text-template-management/lib/entities/category/category.module.mjs +28 -0
  89. package/esm2022/text-template-management/lib/entities/category/category.service.mjs +17 -0
  90. package/esm2022/text-template-management/lib/entities/category/category.types.mjs +2 -0
  91. package/esm2022/text-template-management/lib/entities/category/index.mjs +5 -0
  92. package/esm2022/text-template-management/lib/entities/index.mjs +3 -0
  93. package/esm2022/text-template-management/lib/entities/template/index.mjs +5 -0
  94. package/esm2022/text-template-management/lib/entities/template/template.entity.mjs +405 -0
  95. package/esm2022/text-template-management/lib/entities/template/template.module.mjs +28 -0
  96. package/esm2022/text-template-management/lib/entities/template/template.service.mjs +17 -0
  97. package/esm2022/text-template-management/lib/entities/template/template.types.mjs +2 -0
  98. package/esm2022/text-template-management/lib/entity.provider.mjs +29 -0
  99. package/esm2022/text-template-management/lib/menu.provider.mjs +37 -0
  100. package/esm2022/text-template-management/lib/setting.provider.mjs +48 -0
  101. package/esm2022/text-template-management/lib/text-template-management.module.mjs +56 -0
  102. package/fesm2022/{acorex-modules-application-management-module-designer.component-CaR_HZfL.mjs → acorex-modules-application-management-module-designer.component-DjRdIBQt.mjs} +4 -4
  103. package/fesm2022/{acorex-modules-application-management-module-designer.component-CaR_HZfL.mjs.map → acorex-modules-application-management-module-designer.component-DjRdIBQt.mjs.map} +1 -1
  104. package/fesm2022/acorex-modules-application-management.mjs +26 -23
  105. package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
  106. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-BVOt-gis.mjs → acorex-modules-auth-acorex-modules-auth-Chw_5AKM.mjs} +37 -44
  107. package/fesm2022/acorex-modules-auth-acorex-modules-auth-Chw_5AKM.mjs.map +1 -0
  108. package/fesm2022/{acorex-modules-auth-app-chooser.component-DhPEtLuK.mjs → acorex-modules-auth-app-chooser.component-DN04Uoqa.mjs} +5 -5
  109. package/fesm2022/acorex-modules-auth-app-chooser.component-DN04Uoqa.mjs.map +1 -0
  110. package/fesm2022/{acorex-modules-auth-login.module-sFVL-lYB.mjs → acorex-modules-auth-login.module-Bir7SJ8b.mjs} +4 -4
  111. package/fesm2022/{acorex-modules-auth-login.module-sFVL-lYB.mjs.map → acorex-modules-auth-login.module-Bir7SJ8b.mjs.map} +1 -1
  112. package/fesm2022/{acorex-modules-auth-master.layout-Bnt5qiio.mjs → acorex-modules-auth-master.layout-DwijDvUp.mjs} +3 -3
  113. package/fesm2022/{acorex-modules-auth-master.layout-Bnt5qiio.mjs.map → acorex-modules-auth-master.layout-DwijDvUp.mjs.map} +1 -1
  114. package/fesm2022/{acorex-modules-auth-password.component-ClaRp38G.mjs → acorex-modules-auth-password.component-C1S8V4Bw.mjs} +9 -6
  115. package/fesm2022/acorex-modules-auth-password.component-C1S8V4Bw.mjs.map +1 -0
  116. package/fesm2022/{acorex-modules-auth-password.component-BXL-aLTx.mjs → acorex-modules-auth-password.component-CuLQNJ-W.mjs} +3 -3
  117. package/fesm2022/{acorex-modules-auth-password.component-BXL-aLTx.mjs.map → acorex-modules-auth-password.component-CuLQNJ-W.mjs.map} +1 -1
  118. package/fesm2022/{acorex-modules-auth-routes-MDneFw2m.mjs → acorex-modules-auth-routes-ILpWODmz.mjs} +2 -2
  119. package/fesm2022/{acorex-modules-auth-routes-MDneFw2m.mjs.map → acorex-modules-auth-routes-ILpWODmz.mjs.map} +1 -1
  120. package/fesm2022/acorex-modules-auth-tenant-chooser.component-6qDoCUBo.mjs +83 -0
  121. package/fesm2022/acorex-modules-auth-tenant-chooser.component-6qDoCUBo.mjs.map +1 -0
  122. package/fesm2022/{acorex-modules-auth-two-factor-code.component-B_7l39pX.mjs → acorex-modules-auth-two-factor-code.component-BJKmvI7y.mjs} +3 -3
  123. package/fesm2022/{acorex-modules-auth-two-factor-code.component-B_7l39pX.mjs.map → acorex-modules-auth-two-factor-code.component-BJKmvI7y.mjs.map} +1 -1
  124. package/fesm2022/{acorex-modules-auth-two-factor.module-BHulbf0N.mjs → acorex-modules-auth-two-factor.module-bgwR1LBc.mjs} +3 -3
  125. package/fesm2022/{acorex-modules-auth-two-factor.module-BHulbf0N.mjs.map → acorex-modules-auth-two-factor.module-bgwR1LBc.mjs.map} +1 -1
  126. package/fesm2022/acorex-modules-auth.mjs +1 -1
  127. package/fesm2022/acorex-modules-backend.mjs +7 -2
  128. package/fesm2022/acorex-modules-backend.mjs.map +1 -1
  129. package/fesm2022/acorex-modules-conversation.mjs +285 -230
  130. package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
  131. package/fesm2022/{acorex-modules-form-template-management-designer.page-DC18KFvK.mjs → acorex-modules-form-template-management-designer.page-NhIPhsRs.mjs} +9 -4
  132. package/fesm2022/acorex-modules-form-template-management-designer.page-NhIPhsRs.mjs.map +1 -0
  133. package/fesm2022/acorex-modules-form-template-management.mjs +486 -64
  134. package/fesm2022/acorex-modules-form-template-management.mjs.map +1 -1
  135. package/fesm2022/acorex-modules-localization-management.mjs +41 -35
  136. package/fesm2022/acorex-modules-localization-management.mjs.map +1 -1
  137. package/fesm2022/acorex-modules-notification-management.mjs +59 -51
  138. package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
  139. package/fesm2022/acorex-modules-platform-management.mjs +81 -69
  140. package/fesm2022/acorex-modules-platform-management.mjs.map +1 -1
  141. package/fesm2022/acorex-modules-setting-management.mjs +393 -0
  142. package/fesm2022/acorex-modules-setting-management.mjs.map +1 -0
  143. package/fesm2022/{acorex-modules-template-management.mjs → acorex-modules-text-template-management.mjs} +275 -502
  144. package/fesm2022/acorex-modules-text-template-management.mjs.map +1 -0
  145. package/form-template-management/lib/components/widgets/template-designer/index.d.ts +2 -0
  146. package/form-template-management/lib/components/widgets/template-designer/template-designer-widget-view.component.d.ts +8 -0
  147. package/form-template-management/lib/components/widgets/template-designer/template-designer-widget.config.d.ts +7 -0
  148. package/form-template-management/lib/entities/template/template.types.d.ts +2 -0
  149. package/form-template-management/lib/form-template-management.module.d.ts +3 -1
  150. package/form-template-management/lib/menu.provider.d.ts +2 -2
  151. package/form-template-management/lib/pages/designer/designer.page.d.ts +2 -0
  152. package/form-template-management/lib/services/designer-connector.service.d.ts +7 -0
  153. package/form-template-management/lib/services/template.provider.d.ts +8 -0
  154. package/form-template-management/lib/workflows/create-template.workflow.d.ts +2 -0
  155. package/form-template-management/lib/workflows/design-template.workflow.d.ts +9 -0
  156. package/localization-management/lib/const.d.ts +8 -0
  157. package/localization-management/lib/menu.provider.d.ts +3 -3
  158. package/notification-management/lib/const.d.ts +8 -0
  159. package/notification-management/lib/menu.provider.d.ts +3 -2
  160. package/package.json +32 -32
  161. package/platform-management/lib/const.d.ts +11 -0
  162. package/platform-management/lib/menu.provider.d.ts +3 -3
  163. package/setting-management/README.md +3 -0
  164. package/setting-management/index.d.ts +4 -0
  165. package/setting-management/lib/const.d.ts +6 -0
  166. package/setting-management/lib/entities/index.d.ts +1 -0
  167. package/setting-management/lib/entities/setting/index.d.ts +4 -0
  168. package/{template-management/lib/entities/text-template.entity.d.ts → setting-management/lib/entities/setting/setting.entity.d.ts} +1 -1
  169. package/setting-management/lib/entities/setting/setting.module.d.ts +6 -0
  170. package/setting-management/lib/entities/setting/setting.service.d.ts +10 -0
  171. package/setting-management/lib/entities/setting/setting.types.d.ts +5 -0
  172. package/setting-management/lib/entity.provider.d.ts +9 -0
  173. package/setting-management/lib/menu.provider.d.ts +5 -0
  174. package/setting-management/lib/setting-management.module.d.ts +7 -0
  175. package/text-template-management/README.md +3 -0
  176. package/text-template-management/index.d.ts +5 -0
  177. package/text-template-management/lib/const.d.ts +7 -0
  178. package/text-template-management/lib/entities/category/category.entity.d.ts +3 -0
  179. package/text-template-management/lib/entities/category/category.module.d.ts +6 -0
  180. package/text-template-management/lib/entities/category/category.service.d.ts +10 -0
  181. package/text-template-management/lib/entities/category/category.types.d.ts +5 -0
  182. package/text-template-management/lib/entities/category/index.d.ts +4 -0
  183. package/text-template-management/lib/entities/index.d.ts +2 -0
  184. package/text-template-management/lib/entities/template/index.d.ts +4 -0
  185. package/text-template-management/lib/entities/template/template.entity.d.ts +3 -0
  186. package/text-template-management/lib/entities/template/template.module.d.ts +6 -0
  187. package/text-template-management/lib/entities/template/template.service.d.ts +10 -0
  188. package/text-template-management/lib/entities/template/template.types.d.ts +9 -0
  189. package/text-template-management/lib/entity.provider.d.ts +9 -0
  190. package/text-template-management/lib/menu.provider.d.ts +5 -0
  191. package/text-template-management/lib/setting.provider.d.ts +4 -0
  192. package/text-template-management/lib/text-template-management.module.d.ts +8 -0
  193. package/conversation/lib/entities/chat/components/chat-items/chat-items.component.d.ts +0 -6
  194. package/converstion-test/README.md +0 -4
  195. package/converstion-test/index.d.ts +0 -1
  196. package/converstion-test/lib/converstion-test.module.d.ts +0 -6
  197. package/esm2022/conversation/lib/entities/chat/components/chat-items/chat-items.component.mjs +0 -15
  198. package/esm2022/converstion-test/acorex-modules-converstion-test.mjs +0 -5
  199. package/esm2022/converstion-test/index.mjs +0 -2
  200. package/esm2022/converstion-test/lib/converstion-test.module.mjs +0 -16
  201. package/esm2022/template-management/acorex-modules-template-management.mjs +0 -5
  202. package/esm2022/template-management/index.mjs +0 -8
  203. package/esm2022/template-management/lib/entities/category.entity.mjs +0 -251
  204. package/esm2022/template-management/lib/entities/index.mjs +0 -4
  205. package/esm2022/template-management/lib/entities/template-variable.entity.mjs +0 -308
  206. package/esm2022/template-management/lib/entities/text-template.entity.mjs +0 -411
  207. package/esm2022/template-management/lib/entity.provider.mjs +0 -32
  208. package/esm2022/template-management/lib/menu.provider.mjs +0 -43
  209. package/esm2022/template-management/lib/template-management.module.mjs +0 -61
  210. package/esm2022/template-management/lib/template-management.types.mjs +0 -2
  211. package/esm2022/template-management/lib/template.service.mjs +0 -17
  212. package/esm2022/template-management/lib/text-management.source.mjs +0 -3
  213. package/esm2022/template-management/lib/text-template-category.service.mjs +0 -17
  214. package/fesm2022/acorex-modules-auth-acorex-modules-auth-BVOt-gis.mjs.map +0 -1
  215. package/fesm2022/acorex-modules-auth-app-chooser.component-DhPEtLuK.mjs.map +0 -1
  216. package/fesm2022/acorex-modules-auth-password.component-ClaRp38G.mjs.map +0 -1
  217. package/fesm2022/acorex-modules-auth-tenant-chooser.component-CHr5_kh7.mjs +0 -83
  218. package/fesm2022/acorex-modules-auth-tenant-chooser.component-CHr5_kh7.mjs.map +0 -1
  219. package/fesm2022/acorex-modules-converstion-test.mjs +0 -23
  220. package/fesm2022/acorex-modules-converstion-test.mjs.map +0 -1
  221. package/fesm2022/acorex-modules-form-template-management-designer.page-DC18KFvK.mjs.map +0 -1
  222. package/fesm2022/acorex-modules-template-management.mjs.map +0 -1
  223. package/template-management/README.md +0 -3
  224. package/template-management/index.d.ts +0 -7
  225. package/template-management/lib/entities/category.entity.d.ts +0 -3
  226. package/template-management/lib/entities/index.d.ts +0 -3
  227. package/template-management/lib/entities/template-variable.entity.d.ts +0 -3
  228. package/template-management/lib/entity.provider.d.ts +0 -9
  229. package/template-management/lib/menu.provider.d.ts +0 -5
  230. package/template-management/lib/template-management.module.d.ts +0 -6
  231. package/template-management/lib/template-management.types.d.ts +0 -19
  232. package/template-management/lib/template.service.d.ts +0 -10
  233. package/template-management/lib/text-management.source.d.ts +0 -2
  234. package/template-management/lib/text-template-category.service.d.ts +0 -10
@@ -0,0 +1,5 @@
1
+ export declare const AXMApplicationManagementModuleConst: {
2
+ moduleName: string;
3
+ moduleRoute: string;
4
+ i18n: string;
5
+ };
@@ -1,5 +1,5 @@
1
- import { AXPMenuInsertion, AXPMenuProvider } from '@acorex/platform/common';
1
+ import { AXPMenuProvider, AXPMenuProviderContext } from '@acorex/platform/common';
2
2
  export declare class AXMApplicationManagmentModuleMenuProvider implements AXPMenuProvider {
3
- private translateService;
4
- items(): Promise<AXPMenuInsertion[]>;
3
+ private entityService;
4
+ provide(context: AXPMenuProviderContext): Promise<void>;
5
5
  }
@@ -13,6 +13,12 @@ export interface AXMAuthConfigs {
13
13
  type: AXMAuthenticationTypes;
14
14
  authConfig?: AuthConfig;
15
15
  end_url?: string;
16
+ signup?: {
17
+ enable: boolean;
18
+ url?: string;
19
+ };
20
+ signin_google?: boolean;
21
+ signin_apple?: boolean;
16
22
  signinPage?: {
17
23
  description: string;
18
24
  slogan: string;
@@ -16,6 +16,7 @@ export declare class AXPLoginPasswordComponent implements OnInit {
16
16
  private router;
17
17
  ngOnInit(): void;
18
18
  protected handleForgotOnClick(): void;
19
+ protected handleRegisterOnClick(): void;
19
20
  protected handleLoginClick(): void;
20
21
  static ɵfac: i0.ɵɵFactoryDeclaration<AXPLoginPasswordComponent, never>;
21
22
  static ɵcmp: i0.ɵɵComponentDeclaration<AXPLoginPasswordComponent, "ng-component", never, {}, {}, never, never, true, never>;
@@ -1,4 +1,4 @@
1
- import { AXPMenuInsertion, AXPMenuProvider } from '@acorex/platform/common';
1
+ import { AXPMenuProvider, AXPMenuProviderContext } from '@acorex/platform/common';
2
2
  export declare class AXMSecurityManagmentModuleMenuProvider implements AXPMenuProvider {
3
- items(): Promise<AXPMenuInsertion[]>;
3
+ provide(context: AXPMenuProviderContext): Promise<void>;
4
4
  }
@@ -1,14 +1,16 @@
1
- export * from './lib/entities/comments/pages/comment-list-view.component';
2
- export * from './lib/entities/comments/pages/comment-lookup-popup.component';
3
1
  export * from './lib/entities/comments/comment.module';
4
2
  export * from './lib/entities/comments/comments.service';
5
3
  export * from './lib/entities/comments/comments.type';
4
+ export * from './lib/entities/comments/pages/comment-list-view.component';
5
+ export * from './lib/entities/comments/pages/comment-lookup-popup.component';
6
6
  export * from './lib/entities/chat/chat.module';
7
+ export * from './lib/entities/chat/chat.service';
7
8
  export * from './lib/entities/chat/chat.type';
8
9
  export * from './lib/entities/chat/components/chat-item-footer/chat-item-footer.component';
9
10
  export * from './lib/entities/chat/components/chat-item-header/chat-item-header.component';
10
11
  export * from './lib/entities/chat/components/chat-item/chat-item.component';
11
- export * from './lib/entities/chat/components/chat-items/chat-items.component';
12
+ export * from './lib/entities/chat/components/chat-preview-header/chat-preview-header.component';
12
13
  export * from './lib/entities/chat/components/chat-preview/chat-preview.component';
13
14
  export * from './lib/entities/chat/pages/chat/chat.component';
15
+ export * from './lib/const';
14
16
  export * from './lib/conversation.module';
@@ -0,0 +1,7 @@
1
+ export declare const AXMConverstionModuleConst: {
2
+ moduleName: string;
3
+ moduleRoute: string;
4
+ i18n: string;
5
+ chatName: string;
6
+ commentName: string;
7
+ };
@@ -1,11 +1,8 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import * as i1 from "./entities/comments/comment.module";
3
3
  import * as i2 from "./entities/chat/chat.module";
4
- import * as i3 from "./entities/comments/pages/comment-list-view.component";
5
- import * as i4 from "./entities/chat/pages/chat/chat.component";
6
- import * as i5 from "./entities/chat/components/chat-item/chat-item.component";
7
4
  export declare class AXMConversationModule {
8
5
  static ɵfac: i0.ɵɵFactoryDeclaration<AXMConversationModule, never>;
9
- static ɵmod: i0.ɵɵNgModuleDeclaration<AXMConversationModule, never, [typeof i1.AXMCommentModule, typeof i2.AXMChatModule], [typeof i3.AXMCommentListViewComponent, typeof i4.AXMChatComponent, typeof i5.AXMChatItemComponent]>;
6
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AXMConversationModule, never, [typeof i1.AXMCommentModule, typeof i2.AXMChatModule], [typeof i1.AXMCommentModule, typeof i2.AXMChatModule]>;
10
7
  static ɵinj: i0.ɵɵInjectorDeclaration<AXMConversationModule>;
11
8
  }
@@ -1,10 +1,11 @@
1
+ import { EnvironmentProviders, ModuleWithProviders, Provider } from '@angular/core';
1
2
  import * as i0 from "@angular/core";
2
3
  import * as i1 from "./components/chat-item/chat-item.component";
3
4
  import * as i2 from "./pages/chat/chat.component";
4
5
  import * as i3 from "./components/chat-item-header/chat-item-header.component";
5
- import * as i4 from "./components/chat-items/chat-items.component";
6
- import * as i5 from "./components/chat-preview/chat-preview.component";
7
- import * as i6 from "./components/chat-item-footer/chat-item-footer.component";
6
+ import * as i4 from "./components/chat-preview/chat-preview.component";
7
+ import * as i5 from "./components/chat-item-footer/chat-item-footer.component";
8
+ import * as i6 from "./components/chat-preview-header/chat-preview-header.component";
8
9
  import * as i7 from "@acorex/components/image";
9
10
  import * as i8 from "@acorex/components/avatar";
10
11
  import * as i9 from "@acorex/components/badge";
@@ -16,8 +17,13 @@ import * as i14 from "@angular/forms";
16
17
  import * as i15 from "@acorex/components/conversation";
17
18
  import * as i16 from "@acorex/components/button";
18
19
  import * as i17 from "@acorex/components/loading";
20
+ import * as i18 from "@acorex/core/utils";
21
+ import * as i19 from "@angular/router";
19
22
  export declare class AXMChatModule {
23
+ static forRoot(config: {
24
+ provider: Array<Provider | EnvironmentProviders>;
25
+ }): ModuleWithProviders<AXMChatModule>;
20
26
  static ɵfac: i0.ɵɵFactoryDeclaration<AXMChatModule, never>;
21
- static ɵmod: i0.ɵɵNgModuleDeclaration<AXMChatModule, [typeof i1.AXMChatItemComponent, typeof i2.AXMChatComponent, typeof i3.AXMChatItemHeaderComponent, typeof i4.AXMChatItemsComponent, typeof i5.AXMChatPreviewComponent, typeof i6.AXMChatItemFooterComponent], [typeof i7.AXImageModule, typeof i8.AXAvatarModule, typeof i9.AXBadgeModule, typeof i10.AXDecoratorModule, typeof i11.AXTextBoxModule, typeof i12.AXTabsModule, typeof i13.CommonModule, typeof i14.FormsModule, typeof i15.AXConversationModule, typeof i16.AXButtonModule, typeof i17.AXLoadingModule], [typeof i1.AXMChatItemComponent, typeof i2.AXMChatComponent, typeof i3.AXMChatItemHeaderComponent, typeof i4.AXMChatItemsComponent, typeof i5.AXMChatPreviewComponent, typeof i6.AXMChatItemFooterComponent]>;
27
+ static ɵmod: i0.ɵɵNgModuleDeclaration<AXMChatModule, [typeof i1.AXMChatItemComponent, typeof i2.AXMChatComponent, typeof i3.AXMChatItemHeaderComponent, typeof i4.AXMChatPreviewComponent, typeof i5.AXMChatItemFooterComponent, typeof i6.AXMChatPreviewHeaderComponent], [typeof i7.AXImageModule, typeof i8.AXAvatarModule, typeof i9.AXBadgeModule, typeof i10.AXDecoratorModule, typeof i11.AXTextBoxModule, typeof i12.AXTabsModule, typeof i13.CommonModule, typeof i14.FormsModule, typeof i15.AXConversationModule, typeof i16.AXButtonModule, typeof i17.AXLoadingModule, typeof i18.UtilsModule, typeof i19.RouterModule], [typeof i1.AXMChatItemComponent, typeof i2.AXMChatComponent, typeof i3.AXMChatItemHeaderComponent, typeof i4.AXMChatPreviewComponent, typeof i5.AXMChatItemFooterComponent, typeof i6.AXMChatPreviewHeaderComponent, typeof i19.RouterModule]>;
22
28
  static ɵinj: i0.ɵɵInjectorDeclaration<AXMChatModule>;
23
29
  }
@@ -0,0 +1,14 @@
1
+ import { AXMEntityCrudServiceImpl } from '@acorex/platform/common';
2
+ import { AXMChatRoom } from './chat.type';
3
+ import * as i0 from "@angular/core";
4
+ export declare abstract class AXMChatService extends AXMEntityCrudServiceImpl<string, AXMChatRoom> {
5
+ abstract getTotalUnread(): Promise<number>;
6
+ abstract markChatAsRead(roomId: string): Promise<void>;
7
+ }
8
+ export declare class AXMChatServiceImpl extends AXMChatService {
9
+ markChatAsRead(roomId: string): Promise<void>;
10
+ getTotalUnread(): Promise<number>;
11
+ constructor();
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXMChatServiceImpl, never>;
13
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXMChatServiceImpl>;
14
+ }
@@ -1,4 +1,5 @@
1
- export interface AXMChatRoom {
1
+ import { AXPEntityModel } from '@acorex/platform/common';
2
+ export interface AXMChatRoom extends AXPEntityModel<string> {
2
3
  id: string;
3
4
  title: string;
4
5
  lastMessage: AXMChatMessage;
@@ -1,16 +1,16 @@
1
+ import { AXMChatRoom } from '../../chat.type';
1
2
  import * as i0 from "@angular/core";
2
3
  export declare class AXMChatItemComponent {
3
- chatId: import("@angular/core").InputSignal<string | undefined>;
4
- image: import("@angular/core").InputSignal<string | undefined>;
5
- firstName: import("@angular/core").InputSignal<string | undefined>;
6
- lastName: import("@angular/core").InputSignal<string | undefined>;
7
- content: import("@angular/core").InputSignal<string | undefined>;
8
- hasSeen: import("@angular/core").InputSignal<boolean | undefined>;
9
- createdAt: import("@angular/core").InputSignal<Date | undefined>;
10
- unreadCount: import("@angular/core").InputSignal<number | undefined>;
11
- fullName: import("@angular/core").Signal<string>;
4
+ data: import("@angular/core").InputSignal<AXMChatRoom>;
12
5
  pressChatItem: import("@angular/core").OutputEmitterRef<string>;
13
- extractInitials(name: string): string;
6
+ private sessionService;
7
+ private router;
8
+ private activatedRoute;
9
+ protected fullName: import("@angular/core").Signal<string>;
10
+ protected myId: string | undefined;
11
+ protected extractInitials(name: string): string;
12
+ protected onPressChatItem(id: string): Promise<void>;
13
+ protected messageSeenStatus(): string;
14
14
  static ɵfac: i0.ɵɵFactoryDeclaration<AXMChatItemComponent, never>;
15
- static ɵcmp: i0.ɵɵComponentDeclaration<AXMChatItemComponent, "axm-chat-item", never, { "chatId": { "alias": "chatId"; "required": false; "isSignal": true; }; "image": { "alias": "image"; "required": false; "isSignal": true; }; "firstName": { "alias": "firstName"; "required": false; "isSignal": true; }; "lastName": { "alias": "lastName"; "required": false; "isSignal": true; }; "content": { "alias": "content"; "required": false; "isSignal": true; }; "hasSeen": { "alias": "hasSeen"; "required": false; "isSignal": true; }; "createdAt": { "alias": "createdAt"; "required": false; "isSignal": true; }; "unreadCount": { "alias": "unreadCount"; "required": false; "isSignal": true; }; }, { "pressChatItem": "pressChatItem"; }, never, never, false, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXMChatItemComponent, "axm-chat-item", never, { "data": { "alias": "data"; "required": true; "isSignal": true; }; }, { "pressChatItem": "pressChatItem"; }, never, never, false, never>;
16
16
  }
@@ -1,5 +1,12 @@
1
+ import { AXTabsComponent } from '@acorex/components/tabs';
1
2
  import * as i0 from "@angular/core";
2
3
  export declare class AXMChatItemHeaderComponent {
4
+ total: import("@angular/core").InputSignal<number>;
5
+ unread: import("@angular/core").InputSignal<number>;
6
+ tab: import("@angular/core").Signal<AXTabsComponent>;
7
+ tabsState: import("@angular/core").WritableSignal<number>;
8
+ activeTab: import("@angular/core").OutputEmitterRef<number>;
9
+ constructor();
3
10
  static ɵfac: i0.ɵɵFactoryDeclaration<AXMChatItemHeaderComponent, never>;
4
- static ɵcmp: i0.ɵɵComponentDeclaration<AXMChatItemHeaderComponent, "axm-chat-item-header", never, {}, {}, never, never, false, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXMChatItemHeaderComponent, "axm-chat-item-header", never, { "total": { "alias": "total"; "required": true; "isSignal": true; }; "unread": { "alias": "unread"; "required": true; "isSignal": true; }; }, { "activeTab": "activeTab"; }, never, never, false, never>;
5
12
  }
@@ -1,11 +1,11 @@
1
- import { AXConversationActionEvent, AXConversationService } from '@acorex/components/conversation';
2
- import { AXFileService } from '@acorex/core/file';
1
+ import { AXConversationActionEvent } from '@acorex/components/conversation';
3
2
  import { ElementRef, OnDestroy } from '@angular/core';
4
3
  import * as i0 from "@angular/core";
5
4
  export declare class AXMChatPreviewComponent implements OnDestroy {
6
5
  private elRef;
7
- fileService: AXFileService;
8
- conversationService: AXConversationService;
6
+ private activatedRoute;
7
+ private fileService;
8
+ private conversationService;
9
9
  protected options: import("@angular/core").WritableSignal<{
10
10
  disabled: boolean;
11
11
  readonly: boolean;
@@ -15,6 +15,7 @@ export declare class AXMChatPreviewComponent implements OnDestroy {
15
15
  private resizeObserver;
16
16
  private initialTextAreaHeight;
17
17
  private textareaHeight;
18
+ private messageId;
18
19
  constructor(elRef: ElementRef);
19
20
  protected dynamicHeight: import("@angular/core").Signal<string>;
20
21
  ngOnDestroy(): void;
@@ -23,6 +24,8 @@ export declare class AXMChatPreviewComponent implements OnDestroy {
23
24
  handleEndRecord(event: any): void;
24
25
  handleOnSend(e: any): void;
25
26
  handleOnAction(e: AXConversationActionEvent): void;
27
+ scrollToEnd(): void;
28
+ addMockMessage(): void;
26
29
  static ɵfac: i0.ɵɵFactoryDeclaration<AXMChatPreviewComponent, never>;
27
30
  static ɵcmp: i0.ɵɵComponentDeclaration<AXMChatPreviewComponent, "axm-chat-preview", never, {}, {}, never, never, false, never>;
28
31
  }
@@ -0,0 +1,7 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class AXMChatPreviewHeaderComponent {
3
+ pressBack: import("@angular/core").OutputEmitterRef<void>;
4
+ protected emitBack(): void;
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXMChatPreviewHeaderComponent, never>;
6
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXMChatPreviewHeaderComponent, "axm-chat-preview-header", never, {}, { "pressBack": "pressBack"; }, never, never, false, never>;
7
+ }
@@ -1,5 +1,23 @@
1
+ import { AXPPagedListResult } from '@acorex/platform/common';
2
+ import { OnInit } from '@angular/core';
3
+ import { AXMChatService } from '../../chat.service';
4
+ import { AXMChatRoom } from '../../chat.type';
1
5
  import * as i0 from "@angular/core";
2
- export declare class AXMChatComponent {
6
+ export declare class AXMChatComponent implements OnInit {
7
+ chatService: AXMChatService;
8
+ private route;
9
+ private readonly routeParams;
10
+ protected data: import("@angular/core").WritableSignal<AXPPagedListResult<AXMChatRoom> | undefined>;
11
+ protected filteredData: import("@angular/core").Signal<AXMChatRoom[]>;
12
+ protected displayData: import("@angular/core").Signal<AXMChatRoom[] | undefined>;
13
+ protected activeTab: import("@angular/core").WritableSignal<number>;
14
+ protected allCount: import("@angular/core").Signal<number>;
15
+ protected unreadCount: import("@angular/core").WritableSignal<number>;
16
+ ngOnInit(): Promise<void>;
17
+ private loadData;
18
+ protected markChatAsRead(roomId: string): Promise<void>;
19
+ setActiveTabData(event: number): void;
20
+ goBack(): void;
3
21
  static ɵfac: i0.ɵɵFactoryDeclaration<AXMChatComponent, never>;
4
22
  static ɵcmp: i0.ɵɵComponentDeclaration<AXMChatComponent, "axm-chat", never, {}, {}, never, never, false, never>;
5
23
  }
@@ -4,10 +4,10 @@ import * as i0 from "@angular/core";
4
4
  export declare abstract class AXMCommentService extends AXMEntityCrudServiceImpl<string, AXMCommentEntityModel, AXMCommentCreateRequest, AXMComment> {
5
5
  abstract like(payload: AXMMessageReactionEntityModel): Promise<string>;
6
6
  }
7
- export declare class AXPCommentServiceImpl extends AXMCommentService {
7
+ export declare class AXMCommentServiceImpl extends AXMEntityCrudServiceImpl<string, AXMCommentEntityModel, AXMCommentCreateRequest, AXMComment> {
8
8
  protected messageReactionDataProvider: AXPEntityDataProviderImpl<string, AXMMessageReactionEntityModel, Omit<AXMMessageReactionEntityModel, "id">, AXMMessageReactionEntityModel, AXMMessageReactionEntityModel>;
9
9
  constructor();
10
10
  like(payload: AXMMessageReactionEntityModel): Promise<string>;
11
- static ɵfac: i0.ɵɵFactoryDeclaration<AXPCommentServiceImpl, never>;
12
- static ɵprov: i0.ɵɵInjectableDeclaration<AXPCommentServiceImpl>;
11
+ static ɵfac: i0.ɵɵFactoryDeclaration<AXMCommentServiceImpl, never>;
12
+ static ɵprov: i0.ɵɵInjectableDeclaration<AXMCommentServiceImpl>;
13
13
  }
@@ -0,0 +1,6 @@
1
+ export const AXMApplicationManagementModuleConst = {
2
+ moduleName: 'ApplicationManagement',
3
+ moduleRoute: 'application-management',
4
+ i18n: 'platform-management',
5
+ };
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXBwbGljYXRpb24tbWFuYWdlbWVudC9zcmMvbGliL2NvbnN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLG1DQUFtQyxHQUFHO0lBQ2pELFVBQVUsRUFBRSx1QkFBdUI7SUFDbkMsV0FBVyxFQUFFLHdCQUF3QjtJQUNyQyxJQUFJLEVBQUUscUJBQXFCO0NBQzVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgQVhNQXBwbGljYXRpb25NYW5hZ2VtZW50TW9kdWxlQ29uc3QgPSB7XG4gIG1vZHVsZU5hbWU6ICdBcHBsaWNhdGlvbk1hbmFnZW1lbnQnLFxuICBtb2R1bGVSb3V0ZTogJ2FwcGxpY2F0aW9uLW1hbmFnZW1lbnQnLFxuICBpMThuOiAncGxhdGZvcm0tbWFuYWdlbWVudCcsXG59O1xuIl19
@@ -53,7 +53,7 @@ export class AXPModuleEntityDetailViewComponent {
53
53
  this.vm.destroy();
54
54
  }
55
55
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPModuleEntityDetailViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
56
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXPModuleEntityDetailViewComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<div\n class=\"ax-flex ax-flex-col ax-gap-4 ax-min-h-full ax-px-4 ax-pb-4 md:ax-px-6 ax-bg-surface ax-border-b md:ax-border-0 md:ax-bg-default\"\n>\n <div\n class=\"ax-flex ax-flex-col ax-pt-4 ax-sticky ax-top-0 ax-z-10 ax-transition-all\"\n #sticky=\"axpSticky\"\n [axpSticky]=\"'ax-bg-surface ax-px-6 ax-py-3 -ax-mx-6 ax-shadow-xl'\"\n [stickyOffset]=\"30\"\n >\n <!-------- Begin Toolbar -------->\n <div class=\"ax-flex ax-justify-between ax-items-center\">\n <!-------- Begin Title -------->\n <div class=\"ax-flex ax-gap-1 ax-items-center\">\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-transition\">\n <div class=\"ax-text-xl md:ax-text-2xl ax-font-bold\">{{ vm.title() | translate | async }}</div>\n @if(vm.description()) {\n <div class=\"ax-text-sm ax-text-neutral-600\" [class.ax-hidden]=\"sticky.isSticky\">\n {{ vm.description() }}\n </div>\n }\n <ax-breadcrumbs class=\"child:ax-font-normal child:ax-text-neutral-400\" [class.ax-hidden]=\"isSM | async\">\n <ng-template #divider>\n <i class=\"fa-solid fa-chevron-right ax-text-xs ax-mx-2\"></i>\n </ng-template>\n @for(b of vm.beardcrumbs();track $index;let last=$last) {\n <ax-breadcrumbs-item\n [active]=\"last\"\n [class.!ax-font-semibold]=\"last\"\n [class.!ax-text-neutral-600]=\"last\"\n [routerLink]=\"b.url\"\n >\n @if(b.icon) {\n <i [class]=\"b.icon\"></i>\n }\n {{ b.title | translate | async }}\n </ax-breadcrumbs-item>\n }\n </ax-breadcrumbs>\n </div>\n </div>\n <!-------- Finish Title -------->\n <!--------------------------------------------------------------->\n <!-- Begin Action Menu -->\n <div class=\"ax-flex ax-items-center ax-gap-3\">\n @for(tr of vm.primaryActions();track $index) {\n <ax-button [text]=\"tr.title | translate | async\" [color]=\"tr.color\" (onClick)=\"vm.executeCommand(tr.name)\">\n <ax-prefix>\n <ax-icon [icon]=\"tr.icon\"> </ax-icon>\n </ax-prefix>\n </ax-button>\n } @if(vm.secondaryActions().length) {\n <ax-button [text]=\"(isSM | async) ? null : 'Actions'\" color=\"ghost\">\n <ax-prefix>\n <i class=\"fa-solid fa-ellipsis-vertical\"></i>\n </ax-prefix>\n <ax-dropdown-panel>\n <ax-button-item-list>\n @for(tr of vm.secondaryActions();track $index) {\n <ng-container>\n @if(tr.separated) {\n <ax-divider></ax-divider>\n }\n <ax-button-item\n [text]=\"tr.title\"\n class=\"ax-font-semibold ax-text-{{ tr.color }}\"\n (onClick)=\"vm.executeCommand(tr.name)\"\n >\n <ax-prefix>\n <ax-icon [icon]=\"tr.icon\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ng-container>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n }\n </div>\n <!-- Finish Action Menu -->\n </div>\n <!-- Start Sections -->\n <div class=\"ax-grid ax-grid-cols-12 ax-gap-4\">\n @for(section of vm.sections(); track section.name()) {\n <div class=\"ax-card ax-mt-4\" [gridLayout]=\"section.layout()\">\n <ax-form #form>\n <axp-widgets-container [context]=\"vm.context()\">\n <div class=\"ax-card-header !ax-py-2 !ax-px-4\">\n <p>\n <span class=\"!ax-text-lg ax-font-semibold\">{{ section.title() }}</span>\n <br />\n @if(section.description()) {\n <span class=\"ax-text-sm ax-font-normal ax-text-gray-500\">{{ section.description() }}</span>\n }\n </p>\n @if(section.editable()) {\n <ax-button\n class=\"ax-xs\"\n color=\"ghost\"\n [look]=\"'blank'\"\n (onClick)=\"vm.executeCommand('modify-entity-section', section)\"\n >\n <ax-icon class=\"fa-solid fa-pen ax-text-gray-600\"> </ax-icon>\n </ax-button>\n }\n </div>\n <div class=\"ax-card-body !ax-grid !ax-grid-cols-12 !ax-gap-4\">\n @for(attr of section.props(); track $index) {\n <div class=\"ax-flex ax-flex-col ax-gap-1\" [gridLayout]=\"attr.layout()\">\n <div>\n <div>\n <span class=\"ax-font-semibold\">{{ attr.title() | translate | async }}</span>\n </div>\n </div>\n <div class=\"ax-text-neutral-500\">\n <axp-widget-renderer [node]=\"attr.node()\" [mode]=\"'view'\"> </axp-widget-renderer>\n </div>\n </div>\n }\n </div>\n </axp-widgets-container>\n </ax-form>\n </div>\n }\n </div>\n <!-- Finish Sections -->\n @if(vm.relatedEntities().length) {\n <ax-tabs\n [look]=\"'with-line'\"\n class=\"ax-mt-2 ax-font-semibold\"\n #tab\n (onActiveTabChanged)=\"handleActiveRelatedEntityChanged($event)\"\n >\n @for(e of vm.relatedEntities();track $index;let index= $index){\n <ax-tab-item [text]=\"(e.title() | translate | async)!\" [key]=\"index.toString()\"> </ax-tab-item>\n }\n </ax-tabs>\n @for(e of vm.relatedEntities();track $index;let index= $index){\n <div [class.ax-hidden]=\"$index !== selectedRelatedIEntityTabIndex()\">\n <axp-entity-detail-list-view [viewModel]=\"e\"></axp-entity-detail-list-view>\n </div>\n } }\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i4.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i5.AXFormComponent, selector: "ax-form", inputs: ["labelMode", "messageStyle", "updateOn"], outputs: ["onValidate", "updateOnChange"] }, { kind: "ngmodule", type: AXActionSheetModule }, { kind: "ngmodule", type: AXDrawerModule }, { kind: "ngmodule", type: AXDialogModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXTabsModule }, { kind: "component", type: i6.AXTabsComponent, selector: "ax-tabs", inputs: ["look", "location", "fitParent", "minWidth", "content"], outputs: ["onActiveTabChanged"] }, { kind: "component", type: i6.AXTabItemComponent, selector: "ax-tab-item", inputs: ["disabled", "text", "key", "headerTemplate", "active"], outputs: ["disabledChange", "onClick", "onBlur", "onFocus", "activeChange"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i7.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "responsiveOn", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "responsiveOnChange", "loadingTextChange"] }, { kind: "component", type: i7.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i7.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXBreadcrumbsModule }, { kind: "component", type: i8.AXBreadCrumbsComponent, selector: "ax-breadcrumbs" }, { kind: "component", type: i8.AXBreadCrumbsItemComponent, selector: "ax-breadcrumbs-item", inputs: ["disabled", "active"] }, { kind: "ngmodule", type:
56
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXPModuleEntityDetailViewComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<div\n class=\"ax-flex ax-flex-col ax-gap-4 ax-min-h-full ax-px-4 ax-pb-4 md:ax-px-6 ax-bg-surface ax-border-b md:ax-border-0 md:ax-bg-default\"\n>\n <div\n class=\"ax-flex ax-flex-col ax-pt-4 ax-sticky ax-top-0 ax-z-10 ax-transition-all\"\n #sticky=\"axpSticky\"\n [axpSticky]=\"'ax-bg-surface ax-px-6 ax-py-3 -ax-mx-6 ax-shadow-xl'\"\n [stickyOffset]=\"30\"\n >\n <!-------- Begin Toolbar -------->\n <div class=\"ax-flex ax-justify-between ax-items-center\">\n <!-------- Begin Title -------->\n <div class=\"ax-flex ax-gap-1 ax-items-center\">\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-transition\">\n <div class=\"ax-text-xl md:ax-text-2xl ax-font-bold\">{{ vm.title() | translate | async }}</div>\n @if(vm.description()) {\n <div class=\"ax-text-sm ax-text-neutral-600\" [class.ax-hidden]=\"sticky.isSticky\">\n {{ vm.description() }}\n </div>\n }\n <ax-breadcrumbs class=\"child:ax-font-normal child:ax-text-neutral-400\" [class.ax-hidden]=\"isSM | async\">\n <ng-template #divider>\n <i class=\"fa-solid fa-chevron-right ax-text-xs ax-mx-2\"></i>\n </ng-template>\n @for(b of vm.beardcrumbs();track $index;let last=$last) {\n <ax-breadcrumbs-item\n [active]=\"last\"\n [class.!ax-font-semibold]=\"last\"\n [class.!ax-text-neutral-600]=\"last\"\n [routerLink]=\"b.url\"\n >\n @if(b.icon) {\n <i [class]=\"b.icon\"></i>\n }\n {{ b.title | translate | async }}\n </ax-breadcrumbs-item>\n }\n </ax-breadcrumbs>\n </div>\n </div>\n <!-------- Finish Title -------->\n <!--------------------------------------------------------------->\n <!-- Begin Action Menu -->\n <div class=\"ax-flex ax-items-center ax-gap-3\">\n @for(tr of vm.primaryActions();track $index) {\n <ax-button [text]=\"tr.title | translate | async\" [color]=\"tr.color\" (onClick)=\"vm.executeCommand(tr.name)\">\n <ax-prefix>\n <ax-icon [icon]=\"tr.icon\"> </ax-icon>\n </ax-prefix>\n </ax-button>\n } @if(vm.secondaryActions().length) {\n <ax-button [text]=\"(isSM | async) ? null : 'Actions'\" color=\"ghost\">\n <ax-prefix>\n <i class=\"fa-solid fa-ellipsis-vertical\"></i>\n </ax-prefix>\n <ax-dropdown-panel>\n <ax-button-item-list>\n @for(tr of vm.secondaryActions();track $index) {\n <ng-container>\n @if(tr.separated) {\n <ax-divider></ax-divider>\n }\n <ax-button-item\n [text]=\"tr.title\"\n class=\"ax-font-semibold ax-text-{{ tr.color }}\"\n (onClick)=\"vm.executeCommand(tr.name)\"\n >\n <ax-prefix>\n <ax-icon [icon]=\"tr.icon\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ng-container>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n }\n </div>\n <!-- Finish Action Menu -->\n </div>\n <!-- Start Sections -->\n <div class=\"ax-grid ax-grid-cols-12 ax-gap-4\">\n @for(section of vm.sections(); track section.name()) {\n <div class=\"ax-card ax-mt-4\" [gridLayout]=\"section.layout()\">\n <ax-form #form>\n <axp-widgets-container [context]=\"vm.context()\">\n <div class=\"ax-card-header !ax-py-2 !ax-px-4\">\n <p>\n <span class=\"!ax-text-lg ax-font-semibold\">{{ section.title() }}</span>\n <br />\n @if(section.description()) {\n <span class=\"ax-text-sm ax-font-normal ax-text-gray-500\">{{ section.description() }}</span>\n }\n </p>\n @if(section.editable()) {\n <ax-button\n class=\"ax-xs\"\n color=\"ghost\"\n [look]=\"'blank'\"\n (onClick)=\"vm.executeCommand('modify-entity-section', section)\"\n >\n <ax-icon class=\"fa-solid fa-pen ax-text-gray-600\"> </ax-icon>\n </ax-button>\n }\n </div>\n <div class=\"ax-card-body !ax-grid !ax-grid-cols-12 !ax-gap-4\">\n @for(attr of section.props(); track $index) {\n <div class=\"ax-flex ax-flex-col ax-gap-1\" [gridLayout]=\"attr.layout()\">\n <div>\n <div>\n <span class=\"ax-font-semibold\">{{ attr.title() | translate | async }}</span>\n </div>\n </div>\n <div class=\"ax-text-neutral-500\">\n <axp-widget-renderer [node]=\"attr.node()\" [mode]=\"'view'\"> </axp-widget-renderer>\n </div>\n </div>\n }\n </div>\n </axp-widgets-container>\n </ax-form>\n </div>\n }\n </div>\n <!-- Finish Sections -->\n @if(vm.relatedEntities().length) {\n <ax-tabs\n [look]=\"'with-line'\"\n class=\"ax-mt-2 ax-font-semibold\"\n #tab\n (onActiveTabChanged)=\"handleActiveRelatedEntityChanged($event)\"\n >\n @for(e of vm.relatedEntities();track $index;let index= $index){\n <ax-tab-item [text]=\"(e.title() | translate | async)!\" [key]=\"index.toString()\"> </ax-tab-item>\n }\n </ax-tabs>\n @for(e of vm.relatedEntities();track $index;let index= $index){\n <div [class.ax-hidden]=\"$index !== selectedRelatedIEntityTabIndex()\">\n <axp-entity-detail-list-view [viewModel]=\"e\"></axp-entity-detail-list-view>\n </div>\n } }\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i4.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXPopoverModule }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i5.AXFormComponent, selector: "ax-form", inputs: ["labelMode", "look", "messageStyle", "updateOn"], outputs: ["onValidate", "updateOnChange"] }, { kind: "ngmodule", type: AXActionSheetModule }, { kind: "ngmodule", type: AXDrawerModule }, { kind: "ngmodule", type: AXDialogModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXTabsModule }, { kind: "component", type: i6.AXTabsComponent, selector: "ax-tabs", inputs: ["look", "location", "fitParent", "minWidth", "content"], outputs: ["onActiveTabChanged"] }, { kind: "component", type: i6.AXTabItemComponent, selector: "ax-tab-item", inputs: ["disabled", "text", "key", "headerTemplate", "active"], outputs: ["disabledChange", "onClick", "onBlur", "onFocus", "activeChange"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i7.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "responsiveOn", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "responsiveOnChange", "loadingTextChange"] }, { kind: "component", type: i7.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i7.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXBreadcrumbsModule }, { kind: "component", type: i8.AXBreadCrumbsComponent, selector: "ax-breadcrumbs" }, { kind: "component", type: i8.AXBreadCrumbsItemComponent, selector: "ax-breadcrumbs-item", inputs: ["disabled", "active"] }, { kind: "ngmodule", type:
57
57
  //
58
58
  AXPLayoutBuilderModule }, { kind: "component", type: i9.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "variables", "functions"], outputs: ["onChanged", "contextChange"] }, { kind: "component", type: i9.AXPWidgetRendererComponent, selector: "axp-widget-renderer", inputs: ["node", "mode", "parentNode", "index"] }, { kind: "ngmodule", type: AXPWidgetsModule }, { kind: "directive", type: AXPStickyDirective, selector: "[axpSticky]", inputs: ["axpSticky", "stickyOffset", "stickyParent", "stickyTarget"], outputs: ["isStickyChange"], exportAs: ["axpSticky"] }, { kind: "directive", type: AXPGridLayoutDirective, selector: "[gridLayout]", inputs: ["gridLayout"] }, { kind: "ngmodule", type:
59
59
  //
@@ -85,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
85
85
  AXPEntityDetailListViewComponent,
86
86
  ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"ax-flex ax-flex-col ax-gap-4 ax-min-h-full ax-px-4 ax-pb-4 md:ax-px-6 ax-bg-surface ax-border-b md:ax-border-0 md:ax-bg-default\"\n>\n <div\n class=\"ax-flex ax-flex-col ax-pt-4 ax-sticky ax-top-0 ax-z-10 ax-transition-all\"\n #sticky=\"axpSticky\"\n [axpSticky]=\"'ax-bg-surface ax-px-6 ax-py-3 -ax-mx-6 ax-shadow-xl'\"\n [stickyOffset]=\"30\"\n >\n <!-------- Begin Toolbar -------->\n <div class=\"ax-flex ax-justify-between ax-items-center\">\n <!-------- Begin Title -------->\n <div class=\"ax-flex ax-gap-1 ax-items-center\">\n <div class=\"ax-flex ax-flex-col ax-gap-2 ax-transition\">\n <div class=\"ax-text-xl md:ax-text-2xl ax-font-bold\">{{ vm.title() | translate | async }}</div>\n @if(vm.description()) {\n <div class=\"ax-text-sm ax-text-neutral-600\" [class.ax-hidden]=\"sticky.isSticky\">\n {{ vm.description() }}\n </div>\n }\n <ax-breadcrumbs class=\"child:ax-font-normal child:ax-text-neutral-400\" [class.ax-hidden]=\"isSM | async\">\n <ng-template #divider>\n <i class=\"fa-solid fa-chevron-right ax-text-xs ax-mx-2\"></i>\n </ng-template>\n @for(b of vm.beardcrumbs();track $index;let last=$last) {\n <ax-breadcrumbs-item\n [active]=\"last\"\n [class.!ax-font-semibold]=\"last\"\n [class.!ax-text-neutral-600]=\"last\"\n [routerLink]=\"b.url\"\n >\n @if(b.icon) {\n <i [class]=\"b.icon\"></i>\n }\n {{ b.title | translate | async }}\n </ax-breadcrumbs-item>\n }\n </ax-breadcrumbs>\n </div>\n </div>\n <!-------- Finish Title -------->\n <!--------------------------------------------------------------->\n <!-- Begin Action Menu -->\n <div class=\"ax-flex ax-items-center ax-gap-3\">\n @for(tr of vm.primaryActions();track $index) {\n <ax-button [text]=\"tr.title | translate | async\" [color]=\"tr.color\" (onClick)=\"vm.executeCommand(tr.name)\">\n <ax-prefix>\n <ax-icon [icon]=\"tr.icon\"> </ax-icon>\n </ax-prefix>\n </ax-button>\n } @if(vm.secondaryActions().length) {\n <ax-button [text]=\"(isSM | async) ? null : 'Actions'\" color=\"ghost\">\n <ax-prefix>\n <i class=\"fa-solid fa-ellipsis-vertical\"></i>\n </ax-prefix>\n <ax-dropdown-panel>\n <ax-button-item-list>\n @for(tr of vm.secondaryActions();track $index) {\n <ng-container>\n @if(tr.separated) {\n <ax-divider></ax-divider>\n }\n <ax-button-item\n [text]=\"tr.title\"\n class=\"ax-font-semibold ax-text-{{ tr.color }}\"\n (onClick)=\"vm.executeCommand(tr.name)\"\n >\n <ax-prefix>\n <ax-icon [icon]=\"tr.icon\"> </ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ng-container>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n }\n </div>\n <!-- Finish Action Menu -->\n </div>\n <!-- Start Sections -->\n <div class=\"ax-grid ax-grid-cols-12 ax-gap-4\">\n @for(section of vm.sections(); track section.name()) {\n <div class=\"ax-card ax-mt-4\" [gridLayout]=\"section.layout()\">\n <ax-form #form>\n <axp-widgets-container [context]=\"vm.context()\">\n <div class=\"ax-card-header !ax-py-2 !ax-px-4\">\n <p>\n <span class=\"!ax-text-lg ax-font-semibold\">{{ section.title() }}</span>\n <br />\n @if(section.description()) {\n <span class=\"ax-text-sm ax-font-normal ax-text-gray-500\">{{ section.description() }}</span>\n }\n </p>\n @if(section.editable()) {\n <ax-button\n class=\"ax-xs\"\n color=\"ghost\"\n [look]=\"'blank'\"\n (onClick)=\"vm.executeCommand('modify-entity-section', section)\"\n >\n <ax-icon class=\"fa-solid fa-pen ax-text-gray-600\"> </ax-icon>\n </ax-button>\n }\n </div>\n <div class=\"ax-card-body !ax-grid !ax-grid-cols-12 !ax-gap-4\">\n @for(attr of section.props(); track $index) {\n <div class=\"ax-flex ax-flex-col ax-gap-1\" [gridLayout]=\"attr.layout()\">\n <div>\n <div>\n <span class=\"ax-font-semibold\">{{ attr.title() | translate | async }}</span>\n </div>\n </div>\n <div class=\"ax-text-neutral-500\">\n <axp-widget-renderer [node]=\"attr.node()\" [mode]=\"'view'\"> </axp-widget-renderer>\n </div>\n </div>\n }\n </div>\n </axp-widgets-container>\n </ax-form>\n </div>\n }\n </div>\n <!-- Finish Sections -->\n @if(vm.relatedEntities().length) {\n <ax-tabs\n [look]=\"'with-line'\"\n class=\"ax-mt-2 ax-font-semibold\"\n #tab\n (onActiveTabChanged)=\"handleActiveRelatedEntityChanged($event)\"\n >\n @for(e of vm.relatedEntities();track $index;let index= $index){\n <ax-tab-item [text]=\"(e.title() | translate | async)!\" [key]=\"index.toString()\"> </ax-tab-item>\n }\n </ax-tabs>\n @for(e of vm.relatedEntities();track $index;let index= $index){\n <div [class.ax-hidden]=\"$index !== selectedRelatedIEntityTabIndex()\">\n <axp-entity-detail-list-view [viewModel]=\"e\"></axp-entity-detail-list-view>\n </div>\n } }\n </div>\n</div>\n" }]
87
87
  }] });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLWVudGl0eS1kZXRhaWwtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXBwbGljYXRpb24tbWFuYWdlbWVudC9zcmMvbGliL2xheW91dHMvbW9kdWxlLWVudGl0eS1kZXRhaWwtdmlldy9tb2R1bGUtZW50aXR5LWRldGFpbC12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hcHBsaWNhdGlvbi1tYW5hZ2VtZW50L3NyYy9saWIvbGF5b3V0cy9tb2R1bGUtZW50aXR5LWRldGFpbC12aWV3L21vZHVsZS1lbnRpdHktZGV0YWlsLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBMEIsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsbUJB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QWdCO3dCQUNoQixrQkFBa0I7d0JBQ2xCLHNCQUFzQjt3QkFDdEIsRUFBRTt3QkFDRixtQkFBbUI7d0JBQ25CLGdDQUFnQztxQkFDakMsY0FDVyxJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEFjdGlvblNoZWV0TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2FjdGlvbi1zaGVldCc7XG5pbXBvcnQgeyBBWEJyZWFkY3J1bWJzTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2JyZWFkY3J1bWJzJztcbmltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYRGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RpYWxvZyc7XG5pbXBvcnQgeyBBWERyYXdlck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcmF3ZXInO1xuaW1wb3J0IHsgQVhEcm9wZG93bk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBBWEZvcm1Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZm9ybSc7XG5pbXBvcnQgeyBBWExvYWRpbmdNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbG9hZGluZyc7XG5pbXBvcnQgeyBBWFBvcG92ZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcG9wb3Zlcic7XG5pbXBvcnQgeyBBWFRhYnNNb2R1bGUsIEFYVGFiU3RyaXBDaGFuZ2VkRXZlbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdGFicyc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7XG4gIEFYUEFkbWluTGF5b3V0U3RhdGUsXG4gIEFYUEdyaWRMYXlvdXREaXJlY3RpdmUsXG4gIEFYUFN0aWNreURpcmVjdGl2ZSxcbiAgZ2V0Q2hpbGREcmF3ZXIsXG4gIGlzU21hbGxTY3JlZW4sXG59IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEFYUExheW91dEJ1aWxkZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IEFYUEVudGl0eU1hc3RlclNpbmdsZVZpZXdNb2RlbCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2VudGl0eSc7XG5pbXBvcnQgeyBBWFBFbnRpdHlEZXRhaWxMaXN0Vmlld0NvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vdGhlbWVzL2RlZmF1bHQnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0c01vZHVsZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vd2lkZ2V0cyc7XG5pbXBvcnQgeyBBWFBXb3JrZmxvd1NlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3dvcmtmbG93JztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9tb2R1bGUtZW50aXR5LWRldGFpbC12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgQVhEcm9wZG93bk1vZHVsZSxcbiAgICBBWFBvcG92ZXJNb2R1bGUsXG4gICAgQVhGb3JtTW9kdWxlLFxuICAgIEFYQWN0aW9uU2hlZXRNb2R1bGUsXG4gICAgQVhEcmF3ZXJNb2R1bGUsXG4gICAgQVhEaWFsb2dNb2R1bGUsXG4gICAgQVhMb2FkaW5nTW9kdWxlLFxuICAgIEFYVGFic01vZHVsZSxcbiAgICBBWEJ1dHRvbk1vZHVsZSxcbiAgICBBWEJyZWFkY3J1bWJzTW9kdWxlLFxuICAgIC8vXG4gICAgQVhQTGF5b3V0QnVpbGRlck1vZHVsZSxcbiAgICBBWFBXaWRnZXRzTW9kdWxlLFxuICAgIEFYUFN0aWNreURpcmVjdGl2ZSxcbiAgICBBWFBHcmlkTGF5b3V0RGlyZWN0aXZlLFxuICAgIC8vXG4gICAgQVhUcmFuc2xhdGlvbk1vZHVsZSxcbiAgICBBWFBFbnRpdHlEZXRhaWxMaXN0Vmlld0NvbXBvbmVudCxcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEFYUE1vZHVsZUVudGl0eURldGFpbFZpZXdDb21wb25lbnQge1xuICBwcml2YXRlIGFjdGl2ZVJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcHJpdmF0ZSB3b3JrZmxvdyA9IGluamVjdChBWFBXb3JrZmxvd1NlcnZpY2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdm0gPSB0aGlzLmFjdGl2ZVJvdXRlLnNuYXBzaG90LmRhdGFbJ3ZtJ10gYXMgQVhQRW50aXR5TWFzdGVyU2luZ2xlVmlld01vZGVsO1xuICAvL1xuICBwcml2YXRlIHN0b3JlID0gaW5qZWN0KFN0b3JlPEFYUEFkbWluTGF5b3V0U3RhdGU+KTtcbiAgcHJvdGVjdGVkIGlzU00gPSB0aGlzLnN0b3JlLnNlbGVjdChpc1NtYWxsU2NyZWVuKCkpO1xuICBwcm90ZWN0ZWQgaXNPcGVuID0gdGhpcy5zdG9yZS5zZWxlY3QoZ2V0Q2hpbGREcmF3ZXIoKSk7XG5cbiAgcHJvdGVjdGVkIHNlbGVjdGVkUmVsYXRlZElFbnRpdHlUYWJJbmRleCA9IHNpZ25hbCgwKTtcblxuICBoYW5kbGVBY3RpdmVSZWxhdGVkRW50aXR5Q2hhbmdlZChlOiBBWFRhYlN0cmlwQ2hhbmdlZEV2ZW50KSB7XG4gICAgdGhpcy5zZWxlY3RlZFJlbGF0ZWRJRW50aXR5VGFiSW5kZXguc2V0KGUuaW5kZXgpO1xuICAgIHRoaXMudm0uc2VjdGlvbnM7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2VsZWN0ZWREZXRhaWxUYWJJbmRleCA9IHNpZ25hbCgwKTtcblxuICBoYW5kbGVBY3RpdmVEZXRhaWxUYWJDaGFuZ2VkKGU6IEFYVGFiU3RyaXBDaGFuZ2VkRXZlbnQpIHtcbiAgICB0aGlzLnNlbGVjdGVkRGV0YWlsVGFiSW5kZXguc2V0KGUuaW5kZXgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy52bS5kZXN0cm95KCk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC00IGF4LW1pbi1oLWZ1bGwgYXgtcHgtNCBheC1wYi00IG1kOmF4LXB4LTYgYXgtYmctc3VyZmFjZSBheC1ib3JkZXItYiBtZDpheC1ib3JkZXItMCBtZDpheC1iZy1kZWZhdWx0XCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1wdC00IGF4LXN0aWNreSBheC10b3AtMCBheC16LTEwIGF4LXRyYW5zaXRpb24tYWxsXCJcbiAgICAjc3RpY2t5PVwiYXhwU3RpY2t5XCJcbiAgICBbYXhwU3RpY2t5XT1cIidheC1iZy1zdXJmYWNlIGF4LXB4LTYgYXgtcHktMyAtYXgtbXgtNiBheC1zaGFkb3cteGwnXCJcbiAgICBbc3RpY2t5T2Zmc2V0XT1cIjMwXCJcbiAgPlxuICAgIDwhLS0tLS0tLS0gQmVnaW4gVG9vbGJhciAgLS0tLS0tLS0+XG4gICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtanVzdGlmeS1iZXR3ZWVuIGF4LWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPCEtLS0tLS0tLSBCZWdpbiBUaXRsZSAgLS0tLS0tLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1nYXAtMSBheC1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTIgYXgtdHJhbnNpdGlvblwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC10ZXh0LXhsIG1kOmF4LXRleHQtMnhsIGF4LWZvbnQtYm9sZFwiPnt7IHZtLnRpdGxlKCkgfCB0cmFuc2xhdGUgfCBhc3luYyB9fTwvZGl2PlxuICAgICAgICAgIEBpZih2bS5kZXNjcmlwdGlvbigpKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXRleHQtc20gYXgtdGV4dC1uZXV0cmFsLTYwMFwiIFtjbGFzcy5heC1oaWRkZW5dPVwic3RpY2t5LmlzU3RpY2t5XCI+XG4gICAgICAgICAgICB7eyB2bS5kZXNjcmlwdGlvbigpIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICAgIDxheC1icmVhZGNydW1icyBjbGFzcz1cImNoaWxkOmF4LWZvbnQtbm9ybWFsIGNoaWxkOmF4LXRleHQtbmV1dHJhbC00MDBcIiBbY2xhc3MuYXgtaGlkZGVuXT1cImlzU00gfCBhc3luY1wiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkaXZpZGVyPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWNoZXZyb24tcmlnaHQgYXgtdGV4dC14cyBheC1teC0yXCI+PC9pPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIEBmb3IoYiBvZiB2bS5iZWFyZGNydW1icygpO3RyYWNrICRpbmRleDtsZXQgbGFzdD0kbGFzdCkge1xuICAgICAgICAgICAgPGF4LWJyZWFkY3J1bWJzLWl0ZW1cbiAgICAgICAgICAgICAgW2FjdGl2ZV09XCJsYXN0XCJcbiAgICAgICAgICAgICAgW2NsYXNzLiFheC1mb250LXNlbWlib2xkXT1cImxhc3RcIlxuICAgICAgICAgICAgICBbY2xhc3MuIWF4LXRleHQtbmV1dHJhbC02MDBdPVwibGFzdFwiXG4gICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cImIudXJsXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQGlmKGIuaWNvbikge1xuICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiYi5pY29uXCI+PC9pPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHt7IGIudGl0bGUgfCB0cmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgPC9heC1icmVhZGNydW1icy1pdGVtPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvYXgtYnJlYWRjcnVtYnM+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tLS0tLS0tIEZpbmlzaCBUaXRsZSAgLS0tLS0tLS0+XG4gICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cbiAgICAgIDwhLS0gQmVnaW4gQWN0aW9uIE1lbnUgIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWdhcC0zXCI+XG4gICAgICAgIEBmb3IodHIgb2Ygdm0ucHJpbWFyeUFjdGlvbnMoKTt0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPGF4LWJ1dHRvbiBbdGV4dF09XCJ0ci50aXRsZSB8IHRyYW5zbGF0ZSB8IGFzeW5jXCIgW2NvbG9yXT1cInRyLmNvbG9yXCIgKG9uQ2xpY2spPVwidm0uZXhlY3V0ZUNvbW1hbmQodHIubmFtZSlcIj5cbiAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgPGF4LWljb24gW2ljb25dPVwidHIuaWNvblwiPiA8L2F4LWljb24+XG4gICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICB9IEBpZih2bS5zZWNvbmRhcnlBY3Rpb25zKCkubGVuZ3RoKSB7XG4gICAgICAgIDxheC1idXR0b24gW3RleHRdPVwiKGlzU00gfCBhc3luYykgPyBudWxsIDogJ0FjdGlvbnMnXCIgY29sb3I9XCJnaG9zdFwiPlxuICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWVsbGlwc2lzLXZlcnRpY2FsXCI+PC9pPlxuICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgIDxheC1kcm9wZG93bi1wYW5lbD5cbiAgICAgICAgICAgIDxheC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICAgICAgICBAZm9yKHRyIG9mIHZtLnNlY29uZGFyeUFjdGlvbnMoKTt0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICBAaWYodHIuc2VwYXJhdGVkKSB7XG4gICAgICAgICAgICAgICAgPGF4LWRpdmlkZXI+PC9heC1kaXZpZGVyPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW1cbiAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cInRyLnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtZm9udC1zZW1pYm9sZCBheC10ZXh0LXt7IHRyLmNvbG9yIH19XCJcbiAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cInZtLmV4ZWN1dGVDb21tYW5kKHRyLm5hbWUpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBbaWNvbl09XCJ0ci5pY29uXCI+IDwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgICAgPC9heC1kcm9wZG93bi1wYW5lbD5cbiAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSBGaW5pc2ggQWN0aW9uIE1lbnUgIC0tPlxuICAgIDwvZGl2PlxuICAgIDwhLS0gU3RhcnQgU2VjdGlvbnMgIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJheC1ncmlkIGF4LWdyaWQtY29scy0xMiBheC1nYXAtNFwiPlxuICAgICAgQGZvcihzZWN0aW9uIG9mIHZtLnNlY3Rpb25zKCk7IHRyYWNrIHNlY3Rpb24ubmFtZSgpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FyZCBheC1tdC00XCIgW2dyaWRMYXlvdXRdPVwic2VjdGlvbi5sYXlvdXQoKVwiPlxuICAgICAgICA8YXgtZm9ybSAjZm9ybT5cbiAgICAgICAgICA8YXhwLXdpZGdldHMtY29udGFpbmVyIFtjb250ZXh0XT1cInZtLmNvbnRleHQoKVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhcmQtaGVhZGVyICFheC1weS0yICFheC1weC00XCI+XG4gICAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiIWF4LXRleHQtbGcgYXgtZm9udC1zZW1pYm9sZFwiPnt7IHNlY3Rpb24udGl0bGUoKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgICAgICBAaWYoc2VjdGlvbi5kZXNjcmlwdGlvbigpKSB7XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC10ZXh0LXNtIGF4LWZvbnQtbm9ybWFsIGF4LXRleHQtZ3JheS01MDBcIj57eyBzZWN0aW9uLmRlc2NyaXB0aW9uKCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIEBpZihzZWN0aW9uLmVkaXRhYmxlKCkpIHtcbiAgICAgICAgICAgICAgPGF4LWJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgteHNcIlxuICAgICAgICAgICAgICAgIGNvbG9yPVwiZ2hvc3RcIlxuICAgICAgICAgICAgICAgIFtsb29rXT1cIidibGFuaydcIlxuICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cInZtLmV4ZWN1dGVDb21tYW5kKCdtb2RpZnktZW50aXR5LXNlY3Rpb24nLCBzZWN0aW9uKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImZhLXNvbGlkIGZhLXBlbiBheC10ZXh0LWdyYXktNjAwXCI+IDwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhcmQtYm9keSAhYXgtZ3JpZCAhYXgtZ3JpZC1jb2xzLTEyICFheC1nYXAtNFwiPlxuICAgICAgICAgICAgICBAZm9yKGF0dHIgb2Ygc2VjdGlvbi5wcm9wcygpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTFcIiBbZ3JpZExheW91dF09XCJhdHRyLmxheW91dCgpXCI+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtZm9udC1zZW1pYm9sZFwiPnt7IGF0dHIudGl0bGUoKSB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXRleHQtbmV1dHJhbC01MDBcIj5cbiAgICAgICAgICAgICAgICAgIDxheHAtd2lkZ2V0LXJlbmRlcmVyIFtub2RlXT1cImF0dHIubm9kZSgpXCIgW21vZGVdPVwiJ3ZpZXcnXCI+IDwvYXhwLXdpZGdldC1yZW5kZXJlcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYXhwLXdpZGdldHMtY29udGFpbmVyPlxuICAgICAgICA8L2F4LWZvcm0+XG4gICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICA8IS0tIEZpbmlzaCBTZWN0aW9ucyAgLS0+XG4gICAgQGlmKHZtLnJlbGF0ZWRFbnRpdGllcygpLmxlbmd0aCkge1xuICAgIDxheC10YWJzXG4gICAgICBbbG9va109XCInd2l0aC1saW5lJ1wiXG4gICAgICBjbGFzcz1cImF4LW10LTIgYXgtZm9udC1zZW1pYm9sZFwiXG4gICAgICAjdGFiXG4gICAgICAob25BY3RpdmVUYWJDaGFuZ2VkKT1cImhhbmRsZUFjdGl2ZVJlbGF0ZWRFbnRpdHlDaGFuZ2VkKCRldmVudClcIlxuICAgID5cbiAgICAgIEBmb3IoZSBvZiB2bS5yZWxhdGVkRW50aXRpZXMoKTt0cmFjayAkaW5kZXg7bGV0IGluZGV4PSAkaW5kZXgpe1xuICAgICAgPGF4LXRhYi1pdGVtIFt0ZXh0XT1cIihlLnRpdGxlKCkgfCB0cmFuc2xhdGUgfCBhc3luYykhXCIgW2tleV09XCJpbmRleC50b1N0cmluZygpXCI+IDwvYXgtdGFiLWl0ZW0+XG4gICAgICB9XG4gICAgPC9heC10YWJzPlxuICAgIEBmb3IoZSBvZiB2bS5yZWxhdGVkRW50aXRpZXMoKTt0cmFjayAkaW5kZXg7bGV0IGluZGV4PSAkaW5kZXgpe1xuICAgIDxkaXYgW2NsYXNzLmF4LWhpZGRlbl09XCIkaW5kZXggIT09IHNlbGVjdGVkUmVsYXRlZElFbnRpdHlUYWJJbmRleCgpXCI+XG4gICAgICA8YXhwLWVudGl0eS1kZXRhaWwtbGlzdC12aWV3IFt2aWV3TW9kZWxdPVwiZVwiPjwvYXhwLWVudGl0eS1kZXRhaWwtbGlzdC12aWV3PlxuICAgIDwvZGl2PlxuICAgIH0gfVxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLWVudGl0eS1kZXRhaWwtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL21vZHVsZXMvYXBwbGljYXRpb24tbWFuYWdlbWVudC9zcmMvbGliL2xheW91dHMvbW9kdWxlLWVudGl0eS1kZXRhaWwtdmlldy9tb2R1bGUtZW50aXR5LWRldGFpbC12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hcHBsaWNhdGlvbi1tYW5hZ2VtZW50L3NyYy9saWIvbGF5b3V0cy9tb2R1bGUtZW50aXR5LWRldGFpbC12aWV3L21vZHVsZS1lbnRpdHktZGV0YWlsLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDdEUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBMEIsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsbUJB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QWdCO3dCQUNoQixrQkFBa0I7d0JBQ2xCLHNCQUFzQjt3QkFDdEIsRUFBRTt3QkFDRixtQkFBbUI7d0JBQ25CLGdDQUFnQztxQkFDakMsY0FDVyxJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWEFjdGlvblNoZWV0TW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2FjdGlvbi1zaGVldCc7XG5pbXBvcnQgeyBBWEJyZWFkY3J1bWJzTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2JyZWFkY3J1bWJzJztcbmltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2J1dHRvbic7XG5pbXBvcnQgeyBBWERlY29yYXRvck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kZWNvcmF0b3JzJztcbmltcG9ydCB7IEFYRGlhbG9nTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2RpYWxvZyc7XG5pbXBvcnQgeyBBWERyYXdlck1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcmF3ZXInO1xuaW1wb3J0IHsgQVhEcm9wZG93bk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kcm9wZG93bic7XG5pbXBvcnQgeyBBWEZvcm1Nb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvZm9ybSc7XG5pbXBvcnQgeyBBWExvYWRpbmdNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvbG9hZGluZyc7XG5pbXBvcnQgeyBBWFBvcG92ZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvcG9wb3Zlcic7XG5pbXBvcnQgeyBBWFRhYnNNb2R1bGUsIEFYVGFiU3RyaXBDaGFuZ2VkRXZlbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvdGFicyc7XG5pbXBvcnQgeyBBWFRyYW5zbGF0aW9uTW9kdWxlIH0gZnJvbSAnQGFjb3JleC9jb3JlL3RyYW5zbGF0aW9uJztcbmltcG9ydCB7XG4gIEFYUEFkbWluTGF5b3V0U3RhdGUsXG4gIEFYUEdyaWRMYXlvdXREaXJlY3RpdmUsXG4gIEFYUFN0aWNreURpcmVjdGl2ZSxcbiAgZ2V0Q2hpbGREcmF3ZXIsXG4gIGlzU21hbGxTY3JlZW4sXG59IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vY29tbW9uJztcbmltcG9ydCB7IEFYUExheW91dEJ1aWxkZXJNb2R1bGUgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL2xheW91dC9idWlsZGVyJztcbmltcG9ydCB7IEFYUEVudGl0eU1hc3RlclNpbmdsZVZpZXdNb2RlbCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2VudGl0eSc7XG5pbXBvcnQgeyBBWFBFbnRpdHlEZXRhaWxMaXN0Vmlld0NvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vdGhlbWVzL2RlZmF1bHQnO1xuaW1wb3J0IHsgQVhQV2lkZ2V0c01vZHVsZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vd2lkZ2V0cyc7XG5pbXBvcnQgeyBBWFBXb3JrZmxvd1NlcnZpY2UgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3dvcmtmbG93JztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9tb2R1bGUtZW50aXR5LWRldGFpbC12aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSb3V0ZXJNb2R1bGUsXG4gICAgQVhEZWNvcmF0b3JNb2R1bGUsXG4gICAgQVhEcm9wZG93bk1vZHVsZSxcbiAgICBBWFBvcG92ZXJNb2R1bGUsXG4gICAgQVhGb3JtTW9kdWxlLFxuICAgIEFYQWN0aW9uU2hlZXRNb2R1bGUsXG4gICAgQVhEcmF3ZXJNb2R1bGUsXG4gICAgQVhEaWFsb2dNb2R1bGUsXG4gICAgQVhMb2FkaW5nTW9kdWxlLFxuICAgIEFYVGFic01vZHVsZSxcbiAgICBBWEJ1dHRvbk1vZHVsZSxcbiAgICBBWEJyZWFkY3J1bWJzTW9kdWxlLFxuICAgIC8vXG4gICAgQVhQTGF5b3V0QnVpbGRlck1vZHVsZSxcbiAgICBBWFBXaWRnZXRzTW9kdWxlLFxuICAgIEFYUFN0aWNreURpcmVjdGl2ZSxcbiAgICBBWFBHcmlkTGF5b3V0RGlyZWN0aXZlLFxuICAgIC8vXG4gICAgQVhUcmFuc2xhdGlvbk1vZHVsZSxcbiAgICBBWFBFbnRpdHlEZXRhaWxMaXN0Vmlld0NvbXBvbmVudCxcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEFYUE1vZHVsZUVudGl0eURldGFpbFZpZXdDb21wb25lbnQge1xuICBwcml2YXRlIGFjdGl2ZVJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcHJpdmF0ZSB3b3JrZmxvdyA9IGluamVjdChBWFBXb3JrZmxvd1NlcnZpY2UpO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgdm0gPSB0aGlzLmFjdGl2ZVJvdXRlLnNuYXBzaG90LmRhdGFbJ3ZtJ10gYXMgQVhQRW50aXR5TWFzdGVyU2luZ2xlVmlld01vZGVsO1xuICAvL1xuICBwcml2YXRlIHN0b3JlID0gaW5qZWN0KFN0b3JlPEFYUEFkbWluTGF5b3V0U3RhdGU+KTtcbiAgcHJvdGVjdGVkIGlzU00gPSB0aGlzLnN0b3JlLnNlbGVjdChpc1NtYWxsU2NyZWVuKCkpO1xuICBwcm90ZWN0ZWQgaXNPcGVuID0gdGhpcy5zdG9yZS5zZWxlY3QoZ2V0Q2hpbGREcmF3ZXIoKSk7XG5cbiAgcHJvdGVjdGVkIHNlbGVjdGVkUmVsYXRlZElFbnRpdHlUYWJJbmRleCA9IHNpZ25hbCgwKTtcblxuICBoYW5kbGVBY3RpdmVSZWxhdGVkRW50aXR5Q2hhbmdlZChlOiBBWFRhYlN0cmlwQ2hhbmdlZEV2ZW50KSB7XG4gICAgdGhpcy5zZWxlY3RlZFJlbGF0ZWRJRW50aXR5VGFiSW5kZXguc2V0KGUuaW5kZXgpO1xuICAgIHRoaXMudm0uc2VjdGlvbnM7XG4gIH1cblxuICBwcm90ZWN0ZWQgc2VsZWN0ZWREZXRhaWxUYWJJbmRleCA9IHNpZ25hbCgwKTtcblxuICBoYW5kbGVBY3RpdmVEZXRhaWxUYWJDaGFuZ2VkKGU6IEFYVGFiU3RyaXBDaGFuZ2VkRXZlbnQpIHtcbiAgICB0aGlzLnNlbGVjdGVkRGV0YWlsVGFiSW5kZXguc2V0KGUuaW5kZXgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy52bS5kZXN0cm95KCk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWdhcC00IGF4LW1pbi1oLWZ1bGwgYXgtcHgtNCBheC1wYi00IG1kOmF4LXB4LTYgYXgtYmctc3VyZmFjZSBheC1ib3JkZXItYiBtZDpheC1ib3JkZXItMCBtZDpheC1iZy1kZWZhdWx0XCJcbj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1wdC00IGF4LXN0aWNreSBheC10b3AtMCBheC16LTEwIGF4LXRyYW5zaXRpb24tYWxsXCJcbiAgICAjc3RpY2t5PVwiYXhwU3RpY2t5XCJcbiAgICBbYXhwU3RpY2t5XT1cIidheC1iZy1zdXJmYWNlIGF4LXB4LTYgYXgtcHktMyAtYXgtbXgtNiBheC1zaGFkb3cteGwnXCJcbiAgICBbc3RpY2t5T2Zmc2V0XT1cIjMwXCJcbiAgPlxuICAgIDwhLS0tLS0tLS0gQmVnaW4gVG9vbGJhciAgLS0tLS0tLS0+XG4gICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtanVzdGlmeS1iZXR3ZWVuIGF4LWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPCEtLS0tLS0tLSBCZWdpbiBUaXRsZSAgLS0tLS0tLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1nYXAtMSBheC1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTIgYXgtdHJhbnNpdGlvblwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC10ZXh0LXhsIG1kOmF4LXRleHQtMnhsIGF4LWZvbnQtYm9sZFwiPnt7IHZtLnRpdGxlKCkgfCB0cmFuc2xhdGUgfCBhc3luYyB9fTwvZGl2PlxuICAgICAgICAgIEBpZih2bS5kZXNjcmlwdGlvbigpKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXRleHQtc20gYXgtdGV4dC1uZXV0cmFsLTYwMFwiIFtjbGFzcy5heC1oaWRkZW5dPVwic3RpY2t5LmlzU3RpY2t5XCI+XG4gICAgICAgICAgICB7eyB2bS5kZXNjcmlwdGlvbigpIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICAgIDxheC1icmVhZGNydW1icyBjbGFzcz1cImNoaWxkOmF4LWZvbnQtbm9ybWFsIGNoaWxkOmF4LXRleHQtbmV1dHJhbC00MDBcIiBbY2xhc3MuYXgtaGlkZGVuXT1cImlzU00gfCBhc3luY1wiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkaXZpZGVyPlxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWNoZXZyb24tcmlnaHQgYXgtdGV4dC14cyBheC1teC0yXCI+PC9pPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIEBmb3IoYiBvZiB2bS5iZWFyZGNydW1icygpO3RyYWNrICRpbmRleDtsZXQgbGFzdD0kbGFzdCkge1xuICAgICAgICAgICAgPGF4LWJyZWFkY3J1bWJzLWl0ZW1cbiAgICAgICAgICAgICAgW2FjdGl2ZV09XCJsYXN0XCJcbiAgICAgICAgICAgICAgW2NsYXNzLiFheC1mb250LXNlbWlib2xkXT1cImxhc3RcIlxuICAgICAgICAgICAgICBbY2xhc3MuIWF4LXRleHQtbmV1dHJhbC02MDBdPVwibGFzdFwiXG4gICAgICAgICAgICAgIFtyb3V0ZXJMaW5rXT1cImIudXJsXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQGlmKGIuaWNvbikge1xuICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiYi5pY29uXCI+PC9pPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHt7IGIudGl0bGUgfCB0cmFuc2xhdGUgfCBhc3luYyB9fVxuICAgICAgICAgICAgPC9heC1icmVhZGNydW1icy1pdGVtPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvYXgtYnJlYWRjcnVtYnM+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tLS0tLS0tIEZpbmlzaCBUaXRsZSAgLS0tLS0tLS0+XG4gICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cbiAgICAgIDwhLS0gQmVnaW4gQWN0aW9uIE1lbnUgIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyIGF4LWdhcC0zXCI+XG4gICAgICAgIEBmb3IodHIgb2Ygdm0ucHJpbWFyeUFjdGlvbnMoKTt0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPGF4LWJ1dHRvbiBbdGV4dF09XCJ0ci50aXRsZSB8IHRyYW5zbGF0ZSB8IGFzeW5jXCIgW2NvbG9yXT1cInRyLmNvbG9yXCIgKG9uQ2xpY2spPVwidm0uZXhlY3V0ZUNvbW1hbmQodHIubmFtZSlcIj5cbiAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgPGF4LWljb24gW2ljb25dPVwidHIuaWNvblwiPiA8L2F4LWljb24+XG4gICAgICAgICAgPC9heC1wcmVmaXg+XG4gICAgICAgIDwvYXgtYnV0dG9uPlxuICAgICAgICB9IEBpZih2bS5zZWNvbmRhcnlBY3Rpb25zKCkubGVuZ3RoKSB7XG4gICAgICAgIDxheC1idXR0b24gW3RleHRdPVwiKGlzU00gfCBhc3luYykgPyBudWxsIDogJ0FjdGlvbnMnXCIgY29sb3I9XCJnaG9zdFwiPlxuICAgICAgICAgIDxheC1wcmVmaXg+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWVsbGlwc2lzLXZlcnRpY2FsXCI+PC9pPlxuICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgIDxheC1kcm9wZG93bi1wYW5lbD5cbiAgICAgICAgICAgIDxheC1idXR0b24taXRlbS1saXN0PlxuICAgICAgICAgICAgICBAZm9yKHRyIG9mIHZtLnNlY29uZGFyeUFjdGlvbnMoKTt0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICBAaWYodHIuc2VwYXJhdGVkKSB7XG4gICAgICAgICAgICAgICAgPGF4LWRpdmlkZXI+PC9heC1kaXZpZGVyPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8YXgtYnV0dG9uLWl0ZW1cbiAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cInRyLnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtZm9udC1zZW1pYm9sZCBheC10ZXh0LXt7IHRyLmNvbG9yIH19XCJcbiAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cInZtLmV4ZWN1dGVDb21tYW5kKHRyLm5hbWUpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgICAgICAgICAgICA8YXgtaWNvbiBbaWNvbl09XCJ0ci5pY29uXCI+IDwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgICAgICAgICAgIDwvYXgtYnV0dG9uLWl0ZW0+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2F4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gICAgICAgICAgPC9heC1kcm9wZG93bi1wYW5lbD5cbiAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSBGaW5pc2ggQWN0aW9uIE1lbnUgIC0tPlxuICAgIDwvZGl2PlxuICAgIDwhLS0gU3RhcnQgU2VjdGlvbnMgIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJheC1ncmlkIGF4LWdyaWQtY29scy0xMiBheC1nYXAtNFwiPlxuICAgICAgQGZvcihzZWN0aW9uIG9mIHZtLnNlY3Rpb25zKCk7IHRyYWNrIHNlY3Rpb24ubmFtZSgpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtY2FyZCBheC1tdC00XCIgW2dyaWRMYXlvdXRdPVwic2VjdGlvbi5sYXlvdXQoKVwiPlxuICAgICAgICA8YXgtZm9ybSAjZm9ybT5cbiAgICAgICAgICA8YXhwLXdpZGdldHMtY29udGFpbmVyIFtjb250ZXh0XT1cInZtLmNvbnRleHQoKVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhcmQtaGVhZGVyICFheC1weS0yICFheC1weC00XCI+XG4gICAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiIWF4LXRleHQtbGcgYXgtZm9udC1zZW1pYm9sZFwiPnt7IHNlY3Rpb24udGl0bGUoKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgICAgICBAaWYoc2VjdGlvbi5kZXNjcmlwdGlvbigpKSB7XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC10ZXh0LXNtIGF4LWZvbnQtbm9ybWFsIGF4LXRleHQtZ3JheS01MDBcIj57eyBzZWN0aW9uLmRlc2NyaXB0aW9uKCkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIEBpZihzZWN0aW9uLmVkaXRhYmxlKCkpIHtcbiAgICAgICAgICAgICAgPGF4LWJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgteHNcIlxuICAgICAgICAgICAgICAgIGNvbG9yPVwiZ2hvc3RcIlxuICAgICAgICAgICAgICAgIFtsb29rXT1cIidibGFuaydcIlxuICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cInZtLmV4ZWN1dGVDb21tYW5kKCdtb2RpZnktZW50aXR5LXNlY3Rpb24nLCBzZWN0aW9uKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImZhLXNvbGlkIGZhLXBlbiBheC10ZXh0LWdyYXktNjAwXCI+IDwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWNhcmQtYm9keSAhYXgtZ3JpZCAhYXgtZ3JpZC1jb2xzLTEyICFheC1nYXAtNFwiPlxuICAgICAgICAgICAgICBAZm9yKGF0dHIgb2Ygc2VjdGlvbi5wcm9wcygpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTFcIiBbZ3JpZExheW91dF09XCJhdHRyLmxheW91dCgpXCI+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXgtZm9udC1zZW1pYm9sZFwiPnt7IGF0dHIudGl0bGUoKSB8IHRyYW5zbGF0ZSB8IGFzeW5jIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXRleHQtbmV1dHJhbC01MDBcIj5cbiAgICAgICAgICAgICAgICAgIDxheHAtd2lkZ2V0LXJlbmRlcmVyIFtub2RlXT1cImF0dHIubm9kZSgpXCIgW21vZGVdPVwiJ3ZpZXcnXCI+IDwvYXhwLXdpZGdldC1yZW5kZXJlcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYXhwLXdpZGdldHMtY29udGFpbmVyPlxuICAgICAgICA8L2F4LWZvcm0+XG4gICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICA8IS0tIEZpbmlzaCBTZWN0aW9ucyAgLS0+XG4gICAgQGlmKHZtLnJlbGF0ZWRFbnRpdGllcygpLmxlbmd0aCkge1xuICAgIDxheC10YWJzXG4gICAgICBbbG9va109XCInd2l0aC1saW5lJ1wiXG4gICAgICBjbGFzcz1cImF4LW10LTIgYXgtZm9udC1zZW1pYm9sZFwiXG4gICAgICAjdGFiXG4gICAgICAob25BY3RpdmVUYWJDaGFuZ2VkKT1cImhhbmRsZUFjdGl2ZVJlbGF0ZWRFbnRpdHlDaGFuZ2VkKCRldmVudClcIlxuICAgID5cbiAgICAgIEBmb3IoZSBvZiB2bS5yZWxhdGVkRW50aXRpZXMoKTt0cmFjayAkaW5kZXg7bGV0IGluZGV4PSAkaW5kZXgpe1xuICAgICAgPGF4LXRhYi1pdGVtIFt0ZXh0XT1cIihlLnRpdGxlKCkgfCB0cmFuc2xhdGUgfCBhc3luYykhXCIgW2tleV09XCJpbmRleC50b1N0cmluZygpXCI+IDwvYXgtdGFiLWl0ZW0+XG4gICAgICB9XG4gICAgPC9heC10YWJzPlxuICAgIEBmb3IoZSBvZiB2bS5yZWxhdGVkRW50aXRpZXMoKTt0cmFjayAkaW5kZXg7bGV0IGluZGV4PSAkaW5kZXgpe1xuICAgIDxkaXYgW2NsYXNzLmF4LWhpZGRlbl09XCIkaW5kZXggIT09IHNlbGVjdGVkUmVsYXRlZElFbnRpdHlUYWJJbmRleCgpXCI+XG4gICAgICA8YXhwLWVudGl0eS1kZXRhaWwtbGlzdC12aWV3IFt2aWV3TW9kZWxdPVwiZVwiPjwvYXhwLWVudGl0eS1kZXRhaWwtbGlzdC12aWV3PlxuICAgIDwvZGl2PlxuICAgIH0gfVxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -1,30 +1,28 @@
1
- import { AXTranslationService } from '@acorex/core/translation';
1
+ import { AXPEntityService } from '@acorex/platform/layout/entity';
2
2
  import { inject } from '@angular/core';
3
+ import { AXMApplicationManagementModuleConst } from './const';
3
4
  export class AXMApplicationManagmentModuleMenuProvider {
4
5
  constructor() {
5
- this.translateService = inject(AXTranslationService);
6
+ this.entityService = inject(AXPEntityService);
6
7
  }
7
- async items() {
8
- const scope = 'platform';
9
- return [
8
+ async provide(context) {
9
+ const scope = AXMApplicationManagementModuleConst.i18n;
10
+ context.addItems([
10
11
  {
11
- items: [
12
+ priority: 8001,
13
+ text: `t("applicationManagement", {scope:${scope}})`,
14
+ icon: 'fa-solid fa-cogs',
15
+ children: [
12
16
  {
13
- priority: 8001,
14
- text: '#platform.applicationManagement',
15
- icon: 'fa-solid fa-cogs',
16
- children: [
17
- {
18
- text: '#platform.moduleDesigner',
19
- path: '/console/module-designer',
20
- icon: 'fa-solid fa-cog',
21
- data: {},
22
- },
23
- ],
17
+ text: `t("moduleDesigner", {scope:${scope}})`,
18
+ //TODO this seems doesnt work well with our functions
19
+ path: '/console/module-designer',
20
+ icon: 'fa-solid fa-cog',
21
+ data: {},
24
22
  },
25
23
  ],
26
24
  },
27
- ];
25
+ ]);
28
26
  }
29
27
  }
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hcHBsaWNhdGlvbi1tYW5hZ2VtZW50L3NyYy9saWIvbWVudS5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXZDLE1BQU0sT0FBTyx5Q0FBeUM7SUFBdEQ7UUFDVSxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQXdCMUQsQ0FBQztJQXRCQyxLQUFLLENBQUMsS0FBSztRQUNULE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQztRQUN6QixPQUFPO1lBQ0w7Z0JBQ0UsS0FBSyxFQUFFO29CQUNMO3dCQUNFLFFBQVEsRUFBRSxJQUFJO3dCQUNkLElBQUksRUFBRSxpQ0FBaUM7d0JBQ3ZDLElBQUksRUFBRSxrQkFBa0I7d0JBQ3hCLFFBQVEsRUFBRTs0QkFDUjtnQ0FDRSxJQUFJLEVBQUUsMEJBQTBCO2dDQUNoQyxJQUFJLEVBQUUsMEJBQTBCO2dDQUNoQyxJQUFJLEVBQUUsaUJBQWlCO2dDQUN2QixJQUFJLEVBQUUsRUFBRTs2QkFDVDt5QkFDRjtxQkFDRjtpQkFDRjthQUNGO1NBQ29CLENBQUM7SUFDMUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICdAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb24nO1xuaW1wb3J0IHsgQVhQTWVudUluc2VydGlvbiwgQVhQTWVudVByb3ZpZGVyIH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjbGFzcyBBWE1BcHBsaWNhdGlvbk1hbmFnbWVudE1vZHVsZU1lbnVQcm92aWRlciBpbXBsZW1lbnRzIEFYUE1lbnVQcm92aWRlciB7XG4gIHByaXZhdGUgdHJhbnNsYXRlU2VydmljZSA9IGluamVjdChBWFRyYW5zbGF0aW9uU2VydmljZSk7XG5cbiAgYXN5bmMgaXRlbXMoKTogUHJvbWlzZTxBWFBNZW51SW5zZXJ0aW9uW10+IHtcbiAgICBjb25zdCBzY29wZSA9ICdwbGF0Zm9ybSc7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgaXRlbXM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcmlvcml0eTogODAwMSxcbiAgICAgICAgICAgIHRleHQ6ICcjcGxhdGZvcm0uYXBwbGljYXRpb25NYW5hZ2VtZW50JyxcbiAgICAgICAgICAgIGljb246ICdmYS1zb2xpZCBmYS1jb2dzJyxcbiAgICAgICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB0ZXh0OiAnI3BsYXRmb3JtLm1vZHVsZURlc2lnbmVyJyxcbiAgICAgICAgICAgICAgICBwYXRoOiAnL2NvbnNvbGUvbW9kdWxlLWRlc2lnbmVyJyxcbiAgICAgICAgICAgICAgICBpY29uOiAnZmEtc29saWQgZmEtY29nJyxcbiAgICAgICAgICAgICAgICBkYXRhOiB7fSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXSBhcyBBWFBNZW51SW5zZXJ0aW9uW107XG4gIH1cbn1cbiJdfQ==
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbW9kdWxlcy9hcHBsaWNhdGlvbi1tYW5hZ2VtZW50L3NyYy9saWIvbWVudS5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUU5RCxNQUFNLE9BQU8seUNBQXlDO0lBQXREO1FBQ1Usa0JBQWEsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQXFCbkQsQ0FBQztJQW5CQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQStCO1FBQzNDLE1BQU0sS0FBSyxHQUFHLG1DQUFtQyxDQUFDLElBQUksQ0FBQztRQUN2RCxPQUFPLENBQUMsUUFBUSxDQUFDO1lBQ2Y7Z0JBQ0UsUUFBUSxFQUFFLElBQUk7Z0JBQ2QsSUFBSSxFQUFFLHFDQUFxQyxLQUFLLElBQUk7Z0JBQ3BELElBQUksRUFBRSxrQkFBa0I7Z0JBQ3hCLFFBQVEsRUFBRTtvQkFDUjt3QkFDRSxJQUFJLEVBQUUsOEJBQThCLEtBQUssSUFBSTt3QkFDN0MscURBQXFEO3dCQUNyRCxJQUFJLEVBQUUsMEJBQTBCO3dCQUNoQyxJQUFJLEVBQUUsaUJBQWlCO3dCQUN2QixJQUFJLEVBQUUsRUFBRTtxQkFDVDtpQkFDRjthQUNGO1NBQ0YsQ0FBQyxDQUFBO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhQTWVudVByb3ZpZGVyLCBBWFBNZW51UHJvdmlkZXJDb250ZXh0IH0gZnJvbSAnQGFjb3JleC9wbGF0Zm9ybS9jb21tb24nO1xuaW1wb3J0IHsgQVhQRW50aXR5U2VydmljZSB9IGZyb20gJ0BhY29yZXgvcGxhdGZvcm0vbGF5b3V0L2VudGl0eSc7XG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYTUFwcGxpY2F0aW9uTWFuYWdlbWVudE1vZHVsZUNvbnN0IH0gZnJvbSAnLi9jb25zdCc7XG5cbmV4cG9ydCBjbGFzcyBBWE1BcHBsaWNhdGlvbk1hbmFnbWVudE1vZHVsZU1lbnVQcm92aWRlciBpbXBsZW1lbnRzIEFYUE1lbnVQcm92aWRlciB7XG4gIHByaXZhdGUgZW50aXR5U2VydmljZSA9IGluamVjdChBWFBFbnRpdHlTZXJ2aWNlKTtcblxuICBhc3luYyBwcm92aWRlKGNvbnRleHQ6IEFYUE1lbnVQcm92aWRlckNvbnRleHQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzY29wZSA9IEFYTUFwcGxpY2F0aW9uTWFuYWdlbWVudE1vZHVsZUNvbnN0LmkxOG47XG4gICAgY29udGV4dC5hZGRJdGVtcyhbXG4gICAgICB7XG4gICAgICAgIHByaW9yaXR5OiA4MDAxLFxuICAgICAgICB0ZXh0OiBgdChcImFwcGxpY2F0aW9uTWFuYWdlbWVudFwiLCB7c2NvcGU6JHtzY29wZX19KWAsXG4gICAgICAgIGljb246ICdmYS1zb2xpZCBmYS1jb2dzJyxcbiAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICB0ZXh0OiBgdChcIm1vZHVsZURlc2lnbmVyXCIsIHtzY29wZToke3Njb3BlfX0pYCxcbiAgICAgICAgICAgIC8vVE9ETyB0aGlzIHNlZW1zIGRvZXNudCB3b3JrIHdlbGwgd2l0aCBvdXIgZnVuY3Rpb25zXG4gICAgICAgICAgICBwYXRoOiAnL2NvbnNvbGUvbW9kdWxlLWRlc2lnbmVyJyxcbiAgICAgICAgICAgIGljb246ICdmYS1zb2xpZCBmYS1jb2cnLFxuICAgICAgICAgICAgZGF0YToge30sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXSlcbiAgfVxufVxuIl19