@acorex/platform 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (561) hide show
  1. package/README.md +7 -0
  2. package/auth/README.md +3 -0
  3. package/auth/index.d.ts +16 -0
  4. package/auth/lib/application/application.loader.d.ts +9 -0
  5. package/auth/lib/application/application.types.d.ts +10 -0
  6. package/auth/lib/auth-registry.service.d.ts +12 -0
  7. package/auth/lib/auth.guard.d.ts +2 -0
  8. package/auth/lib/auth.module.d.ts +20 -0
  9. package/auth/lib/auth.strategy.d.ts +28 -0
  10. package/auth/lib/errors.types.d.ts +6 -0
  11. package/auth/lib/feature/feature.loader.d.ts +7 -0
  12. package/auth/lib/feature/feature.types.d.ts +6 -0
  13. package/auth/lib/permission/permission.directive.d.ts +16 -0
  14. package/auth/lib/permission/permission.guard.d.ts +2 -0
  15. package/auth/lib/permission/permission.loader.d.ts +7 -0
  16. package/auth/lib/permission/permission.types.d.ts +1 -0
  17. package/auth/lib/session.service.d.ts +51 -0
  18. package/auth/lib/tenant/tenant.loader.d.ts +9 -0
  19. package/auth/lib/tenant/tenant.types.d.ts +8 -0
  20. package/auth/lib/user/user.types.d.ts +6 -0
  21. package/common/README.md +3 -0
  22. package/common/index.d.ts +11 -0
  23. package/common/lib/common.module.d.ts +21 -0
  24. package/common/lib/configs/app.config.d.ts +19 -0
  25. package/common/lib/data/data-provider.types.d.ts +11 -0
  26. package/common/lib/data/index.d.ts +1 -0
  27. package/common/lib/errors/error-handler-registry.service.d.ts +12 -0
  28. package/common/lib/errors/error-handler.types.d.ts +3 -0
  29. package/common/lib/errors/global-error-handler.d.ts +11 -0
  30. package/common/lib/errors/index.d.ts +3 -0
  31. package/common/lib/layout/component-slot/component-slot-loader.service.d.ts +11 -0
  32. package/common/lib/layout/component-slot/component-slot-registery.service.d.ts +9 -0
  33. package/common/lib/layout/component-slot/component-slot.directive.d.ts +12 -0
  34. package/common/lib/layout/component-slot/component-slot.module.d.ts +15 -0
  35. package/common/lib/layout/component-slot/component-slot.types.d.ts +14 -0
  36. package/common/lib/layout/component-slot/index.d.ts +5 -0
  37. package/common/lib/menu/index.d.ts +2 -0
  38. package/common/lib/menu/menu.loader.d.ts +17 -0
  39. package/common/lib/menu/menu.types.d.ts +13 -0
  40. package/common/lib/settings/index.d.ts +3 -0
  41. package/common/lib/settings/settings.loader.d.ts +8 -0
  42. package/common/lib/settings/settings.service.d.ts +9 -0
  43. package/common/lib/settings/settings.types.d.ts +5 -0
  44. package/common/lib/shared/logo.types.d.ts +19 -0
  45. package/common/lib/shared/state-persistence/index.d.ts +3 -0
  46. package/common/lib/shared/state-persistence/state-persistence.actions.d.ts +1 -0
  47. package/common/lib/shared/state-persistence/state-persistence.module.d.ts +8 -0
  48. package/common/lib/shared/state-persistence/state-persistence.reducers.d.ts +3 -0
  49. package/common/lib/store/common.actions.d.ts +14 -0
  50. package/common/lib/store/common.effects.d.ts +11 -0
  51. package/common/lib/store/index.d.ts +2 -0
  52. package/common/lib/utils/clipboard-service.d.ts +7 -0
  53. package/common/lib/utils/index.d.ts +3 -0
  54. package/common/lib/utils/router-util.service.d.ts +12 -0
  55. package/common/lib/utils/sticky.directive.d.ts +24 -0
  56. package/esm2022/acorex-platform.mjs +5 -0
  57. package/esm2022/auth/acorex-platform-auth.mjs +5 -0
  58. package/esm2022/auth/index.mjs +17 -0
  59. package/esm2022/auth/lib/application/application.loader.mjs +26 -0
  60. package/esm2022/auth/lib/application/application.types.mjs +2 -0
  61. package/esm2022/auth/lib/auth-registry.service.mjs +29 -0
  62. package/esm2022/auth/lib/auth.guard.mjs +18 -0
  63. package/esm2022/auth/lib/auth.module.mjs +84 -0
  64. package/esm2022/auth/lib/auth.strategy.mjs +2 -0
  65. package/esm2022/auth/lib/errors.types.mjs +13 -0
  66. package/esm2022/auth/lib/feature/feature.loader.mjs +14 -0
  67. package/esm2022/auth/lib/feature/feature.types.mjs +2 -0
  68. package/esm2022/auth/lib/permission/permission.directive.mjs +51 -0
  69. package/esm2022/auth/lib/permission/permission.guard.mjs +16 -0
  70. package/esm2022/auth/lib/permission/permission.loader.mjs +14 -0
  71. package/esm2022/auth/lib/permission/permission.types.mjs +2 -0
  72. package/esm2022/auth/lib/session.service.mjs +240 -0
  73. package/esm2022/auth/lib/tenant/tenant.loader.mjs +23 -0
  74. package/esm2022/auth/lib/tenant/tenant.types.mjs +2 -0
  75. package/esm2022/auth/lib/user/user.types.mjs +2 -0
  76. package/esm2022/common/acorex-platform-common.mjs +5 -0
  77. package/esm2022/common/index.mjs +12 -0
  78. package/esm2022/common/lib/common.module.mjs +123 -0
  79. package/esm2022/common/lib/configs/app.config.mjs +27 -0
  80. package/esm2022/common/lib/data/data-provider.types.mjs +3 -0
  81. package/esm2022/common/lib/data/index.mjs +2 -0
  82. package/esm2022/common/lib/errors/error-handler-registry.service.mjs +29 -0
  83. package/esm2022/common/lib/errors/error-handler.types.mjs +2 -0
  84. package/esm2022/common/lib/errors/global-error-handler.mjs +36 -0
  85. package/esm2022/common/lib/errors/index.mjs +4 -0
  86. package/esm2022/common/lib/layout/component-slot/component-slot-loader.service.mjs +56 -0
  87. package/esm2022/common/lib/layout/component-slot/component-slot-registery.service.mjs +28 -0
  88. package/esm2022/common/lib/layout/component-slot/component-slot.directive.mjs +24 -0
  89. package/esm2022/common/lib/layout/component-slot/component-slot.module.mjs +72 -0
  90. package/esm2022/common/lib/layout/component-slot/component-slot.types.mjs +2 -0
  91. package/esm2022/common/lib/layout/component-slot/index.mjs +6 -0
  92. package/esm2022/common/lib/menu/index.mjs +3 -0
  93. package/esm2022/common/lib/menu/menu.loader.mjs +39 -0
  94. package/esm2022/common/lib/menu/menu.types.mjs +2 -0
  95. package/esm2022/common/lib/settings/index.mjs +4 -0
  96. package/esm2022/common/lib/settings/settings.loader.mjs +17 -0
  97. package/esm2022/common/lib/settings/settings.service.mjs +20 -0
  98. package/esm2022/common/lib/settings/settings.types.mjs +2 -0
  99. package/esm2022/common/lib/shared/logo.types.mjs +21 -0
  100. package/esm2022/common/lib/shared/state-persistence/index.mjs +4 -0
  101. package/esm2022/common/lib/shared/state-persistence/state-persistence.actions.mjs +3 -0
  102. package/esm2022/common/lib/shared/state-persistence/state-persistence.module.mjs +36 -0
  103. package/esm2022/common/lib/shared/state-persistence/state-persistence.reducers.mjs +30 -0
  104. package/esm2022/common/lib/store/common.actions.mjs +5 -0
  105. package/esm2022/common/lib/store/common.effects.mjs +31 -0
  106. package/esm2022/common/lib/store/index.mjs +3 -0
  107. package/esm2022/common/lib/utils/clipboard-service.mjs +26 -0
  108. package/esm2022/common/lib/utils/index.mjs +4 -0
  109. package/esm2022/common/lib/utils/router-util.service.mjs +43 -0
  110. package/esm2022/common/lib/utils/sticky.directive.mjs +74 -0
  111. package/esm2022/index.mjs +2 -0
  112. package/esm2022/layouts/acorex-platform-layouts.mjs +5 -0
  113. package/esm2022/layouts/index.mjs +5 -0
  114. package/esm2022/layouts/lib/admin/admin-child-layout/admin-child-features-list.component.mjs +58 -0
  115. package/esm2022/layouts/lib/admin/admin-child-layout/admin-child-layout.component.mjs +50 -0
  116. package/esm2022/layouts/lib/admin/admin-child-layout/admin-child-layout.module.mjs +57 -0
  117. package/esm2022/layouts/lib/admin/admin-child-layout/index.mjs +4 -0
  118. package/esm2022/layouts/lib/admin/admin-root-layout/admin-root-layout.component.mjs +74 -0
  119. package/esm2022/layouts/lib/admin/admin-root-layout/admin-root-layout.module.mjs +92 -0
  120. package/esm2022/layouts/lib/admin/admin-root-layout/components/admin-footer/admin-footer.component.mjs +14 -0
  121. package/esm2022/layouts/lib/admin/admin-root-layout/components/admin-header/admin-header.component.mjs +29 -0
  122. package/esm2022/layouts/lib/admin/admin-root-layout/index.mjs +5 -0
  123. package/esm2022/layouts/lib/admin/admin.module.mjs +75 -0
  124. package/esm2022/layouts/lib/admin/admin.routes.mjs +37 -0
  125. package/esm2022/layouts/lib/admin/custom-reuse.strategy.mjs +20 -0
  126. package/esm2022/layouts/lib/admin/entity-layout/entity-create-view/entity-create-view.component.mjs +105 -0
  127. package/esm2022/layouts/lib/admin/entity-layout/entity-create-view/entity-create-view.config.mjs +137 -0
  128. package/esm2022/layouts/lib/admin/entity-layout/entity-details-view/detail-view.config.mjs +125 -0
  129. package/esm2022/layouts/lib/admin/entity-layout/entity-details-view/entity-details-view.component.mjs +180 -0
  130. package/esm2022/layouts/lib/admin/entity-layout/entity-details-view/index.mjs +3 -0
  131. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/components/entity-custom-view/entity-custom-view.component.mjs +200 -0
  132. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/components/index.mjs +6 -0
  133. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/components/list-view-option-columns/list-view-option-columns.component.mjs +56 -0
  134. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/components/list-view-option-conditions/list-view-option-conditions.component.mjs +108 -0
  135. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/components/list-view-option-conditions/list-view-option-filter-operator.component.mjs +76 -0
  136. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/components/list-view-option-sorting/list-view-option-sorting.component.mjs +57 -0
  137. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/entity-list-view.component.mjs +283 -0
  138. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/index.mjs +5 -0
  139. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/list-view.config.mjs +333 -0
  140. package/esm2022/layouts/lib/admin/entity-layout/entity-list-view/list-view.module.mjs +156 -0
  141. package/esm2022/layouts/lib/admin/entity-layout/entity-modify-view/entity-modify-view.component.mjs +86 -0
  142. package/esm2022/layouts/lib/admin/entity-layout/entity-modify-view/entity-modify-view.config.mjs +66 -0
  143. package/esm2022/layouts/lib/admin/entity-layout/entity-quick-view/entity-quick-view.component.mjs +82 -0
  144. package/esm2022/layouts/lib/admin/entity-layout/entity-quick-view/index.mjs +2 -0
  145. package/esm2022/layouts/lib/admin/entity-layout/index.mjs +4 -0
  146. package/esm2022/layouts/lib/admin/entity-layout/store/entity.actions.mjs +18 -0
  147. package/esm2022/layouts/lib/admin/entity-layout/store/entity.effects.mjs +76 -0
  148. package/esm2022/layouts/lib/admin/entity-layout/workflows/create-entity.workflow.mjs +91 -0
  149. package/esm2022/layouts/lib/admin/entity-layout/workflows/delete-entity.workflow.mjs +153 -0
  150. package/esm2022/layouts/lib/admin/entity-layout/workflows/modify-entity.workflow.mjs +98 -0
  151. package/esm2022/layouts/lib/admin/entity.resolver.mjs +21 -0
  152. package/esm2022/layouts/lib/admin/index.mjs +8 -0
  153. package/esm2022/layouts/lib/admin/store/admin-layout.actions.mjs +12 -0
  154. package/esm2022/layouts/lib/admin/store/admin-layout.effects.mjs +29 -0
  155. package/esm2022/layouts/lib/admin/store/admin-layout.reducers.mjs +60 -0
  156. package/esm2022/layouts/lib/admin/store/admin-layout.selectors.mjs +8 -0
  157. package/esm2022/layouts/lib/admin/store/admin-layout.state.mjs +16 -0
  158. package/esm2022/layouts/lib/admin/store/index.mjs +6 -0
  159. package/esm2022/layouts/lib/layout.module.mjs +63 -0
  160. package/esm2022/layouts/lib/layout.routes.mjs +15 -0
  161. package/esm2022/layouts/lib/shared/components/content-view/content-view.page.mjs +64 -0
  162. package/esm2022/layouts/lib/shared/components/content-view/content-view.type.mjs +2 -0
  163. package/esm2022/layouts/lib/shared/components/error-401/error-401.component.mjs +29 -0
  164. package/esm2022/layouts/lib/shared/components/error-404/error-404.component.mjs +22 -0
  165. package/esm2022/layouts/lib/shared/components/error-offline/error-offline.component.mjs +16 -0
  166. package/esm2022/layouts/lib/shared/components/index.mjs +9 -0
  167. package/esm2022/layouts/lib/shared/components/logo/logo.component.mjs +38 -0
  168. package/esm2022/layouts/lib/shared/components/slots/footer-text-slot.component.mjs +20 -0
  169. package/esm2022/layouts/lib/shared/components/slots/navbar-slot.component.mjs +36 -0
  170. package/esm2022/layouts/lib/shared/components/slots/theme-slot.component.mjs +48 -0
  171. package/esm2022/layouts/lib/shared/entity/entity-registery.service.mjs +70 -0
  172. package/esm2022/layouts/lib/shared/entity/entity.class.mjs +32 -0
  173. package/esm2022/layouts/lib/shared/entity/entity.loader.mjs +13 -0
  174. package/esm2022/layouts/lib/shared/entity/index.mjs +4 -0
  175. package/esm2022/layouts/lib/shared/index.mjs +5 -0
  176. package/esm2022/layouts/lib/shared/services/index.mjs +2 -0
  177. package/esm2022/layouts/lib/shared/services/layout.service.mjs +79 -0
  178. package/esm2022/layouts/lib/shared/workflows/common.workflow.mjs +110 -0
  179. package/esm2022/layouts/lib/shared/workflows/error-handler.mjs +24 -0
  180. package/esm2022/layouts/lib/shared/workflows/index.mjs +3 -0
  181. package/esm2022/layouts/lib/widgets/avatar/avatar-widget-edit.component.mjs +102 -0
  182. package/esm2022/layouts/lib/widgets/avatar/avatar-widget-view.component.mjs +33 -0
  183. package/esm2022/layouts/lib/widgets/checkbox/checkbox-widget-column.component.mjs +53 -0
  184. package/esm2022/layouts/lib/widgets/checkbox/checkbox-widget-edit.component.mjs +22 -0
  185. package/esm2022/layouts/lib/widgets/checkbox/checkbox-widget-view.component.mjs +47 -0
  186. package/esm2022/layouts/lib/widgets/common-widget-filter/boolean-widget-filter.component.mjs +147 -0
  187. package/esm2022/layouts/lib/widgets/common-widget-filter/number-widget-filter.component.mjs +135 -0
  188. package/esm2022/layouts/lib/widgets/common-widget-filter/string-widget-filter.component.mjs +125 -0
  189. package/esm2022/layouts/lib/widgets/common-widgets.module.mjs +479 -0
  190. package/esm2022/layouts/lib/widgets/dateTime/dateTime-widget-column.component.mjs +44 -0
  191. package/esm2022/layouts/lib/widgets/dateTime/dateTime-widget-edit.component.mjs +175 -0
  192. package/esm2022/layouts/lib/widgets/dateTime/dateTime-widget-filter.component.mjs +230 -0
  193. package/esm2022/layouts/lib/widgets/dateTime/dateTime-widget-view.component.mjs +71 -0
  194. package/esm2022/layouts/lib/widgets/email/email-widget-column.component.mjs +73 -0
  195. package/esm2022/layouts/lib/widgets/email/email-widget-edit.component.mjs +249 -0
  196. package/esm2022/layouts/lib/widgets/email/email-widget-view.component.mjs +108 -0
  197. package/esm2022/layouts/lib/widgets/file/file-widget-column.component.mjs +27 -0
  198. package/esm2022/layouts/lib/widgets/file/file-widget-edit.component.mjs +200 -0
  199. package/esm2022/layouts/lib/widgets/file/file-widget-filter.component.mjs +27 -0
  200. package/esm2022/layouts/lib/widgets/file/file-widget-view.component.mjs +153 -0
  201. package/esm2022/layouts/lib/widgets/gallery/gallery-widget-edit.component.mjs +189 -0
  202. package/esm2022/layouts/lib/widgets/gallery/gallery-widget-filter.component.mjs +27 -0
  203. package/esm2022/layouts/lib/widgets/gallery/gallery-widget-types.mjs +2 -0
  204. package/esm2022/layouts/lib/widgets/gallery/gallery-widget-view.component.mjs +173 -0
  205. package/esm2022/layouts/lib/widgets/index.mjs +2 -0
  206. package/esm2022/layouts/lib/widgets/lookup/lookup-widget-column.component.mjs +43 -0
  207. package/esm2022/layouts/lib/widgets/lookup/lookup-widget-edit.component.mjs +74 -0
  208. package/esm2022/layouts/lib/widgets/lookup/lookup-widget-filter.component.mjs +139 -0
  209. package/esm2022/layouts/lib/widgets/lookup/lookup-widget-view.component.mjs +54 -0
  210. package/esm2022/layouts/lib/widgets/map/map-widget-edit.component.mjs +91 -0
  211. package/esm2022/layouts/lib/widgets/map/map-widget-view.component.mjs +63 -0
  212. package/esm2022/layouts/lib/widgets/messenger/messenger-widget-column.component.mjs +71 -0
  213. package/esm2022/layouts/lib/widgets/messenger/messenger-widget-edit.component.mjs +136 -0
  214. package/esm2022/layouts/lib/widgets/messenger/messenger-widget-view.component.mjs +132 -0
  215. package/esm2022/layouts/lib/widgets/number/number-widget-edit.component.mjs +46 -0
  216. package/esm2022/layouts/lib/widgets/number/number-widget-view.component.mjs +30 -0
  217. package/esm2022/layouts/lib/widgets/password/change-password.component.mjs +175 -0
  218. package/esm2022/layouts/lib/widgets/password/password-widget-column.component.mjs +77 -0
  219. package/esm2022/layouts/lib/widgets/password/password-widget-edit.component.mjs +34 -0
  220. package/esm2022/layouts/lib/widgets/password/password-widget-view.component.mjs +109 -0
  221. package/esm2022/layouts/lib/widgets/phone/phone-widget-column.component.mjs +91 -0
  222. package/esm2022/layouts/lib/widgets/phone/phone-widget-edit.component.mjs +315 -0
  223. package/esm2022/layouts/lib/widgets/phone/phone-widget-view.component.mjs +123 -0
  224. package/esm2022/layouts/lib/widgets/rich-text/rich-text-widget-column.component.mjs +69 -0
  225. package/esm2022/layouts/lib/widgets/rich-text/rich-text-widget-edit.component.mjs +67 -0
  226. package/esm2022/layouts/lib/widgets/rich-text/rich-text-widget-view.component.mjs +34 -0
  227. package/esm2022/layouts/lib/widgets/selection-list/selection-list-widget-column.component.mjs +43 -0
  228. package/esm2022/layouts/lib/widgets/selection-list/selection-list-widget-edit.component.mjs +53 -0
  229. package/esm2022/layouts/lib/widgets/selection-list/selection-list-widget-filter.component.mjs +41 -0
  230. package/esm2022/layouts/lib/widgets/selection-list/selection-list-widget-view.component.mjs +45 -0
  231. package/esm2022/layouts/lib/widgets/signature-pad/signature-pad-widget-edit.component.mjs +128 -0
  232. package/esm2022/layouts/lib/widgets/signature-pad/signature-pad-widget-view.component.mjs +41 -0
  233. package/esm2022/layouts/lib/widgets/text/largetext-widget-edit.component.mjs +37 -0
  234. package/esm2022/layouts/lib/widgets/text/text-widget-column.component.mjs +47 -0
  235. package/esm2022/layouts/lib/widgets/text/text-widget-edit.component.mjs +162 -0
  236. package/esm2022/layouts/lib/widgets/text/text-widget-view.component.mjs +66 -0
  237. package/esm2022/layouts/lib/widgets/toggle/toggle-widget-column.component.mjs +57 -0
  238. package/esm2022/layouts/lib/widgets/toggle/toggle-widget-edit.component.mjs +25 -0
  239. package/esm2022/layouts/lib/widgets/toggle/toggle-widget-view.component.mjs +49 -0
  240. package/esm2022/mocks/acorex-platform-mocks.mjs +5 -0
  241. package/esm2022/mocks/index.mjs +7 -0
  242. package/esm2022/mocks/lib/mocks.module.mjs +15 -0
  243. package/esm2022/mocks/lib/services/mocker.service.mjs +124 -0
  244. package/esm2022/mocks/lib/storage/storage.mock.service.mjs +186 -0
  245. package/esm2022/native/acorex-platform-native.mjs +5 -0
  246. package/esm2022/native/index.mjs +3 -0
  247. package/esm2022/native/lib/native.module.mjs +16 -0
  248. package/esm2022/native/lib/native.service.mjs +133 -0
  249. package/esm2022/schema/acorex-platform-schema.mjs +5 -0
  250. package/esm2022/schema/index.mjs +14 -0
  251. package/esm2022/schema/lib/component-loader.mjs +2 -0
  252. package/esm2022/schema/lib/formats.mjs +2 -0
  253. package/esm2022/schema/lib/operators.mjs +50 -0
  254. package/esm2022/schema/lib/schema-registery.service.mjs +33 -0
  255. package/esm2022/schema/lib/schema.mjs +2 -0
  256. package/esm2022/schema/lib/schema.module.mjs +23 -0
  257. package/esm2022/schema/lib/widget/widget-base.mjs +110 -0
  258. package/esm2022/schema/lib/widget/widget-column-renderer.mjs +99 -0
  259. package/esm2022/schema/lib/widget/widget-filter-renderer.mjs +133 -0
  260. package/esm2022/schema/lib/widget/widget-renderer.mjs +144 -0
  261. package/esm2022/schema/lib/widget/widget-token.mjs +3 -0
  262. package/esm2022/workflow/acorex-platform-workflow.mjs +5 -0
  263. package/esm2022/workflow/index.mjs +7 -0
  264. package/esm2022/workflow/lib/errors.types.mjs +8 -0
  265. package/esm2022/workflow/lib/workflow-event-dispatcher.service.mjs +23 -0
  266. package/esm2022/workflow/lib/workflow-registery.service.mjs +39 -0
  267. package/esm2022/workflow/lib/workflow.module.mjs +96 -0
  268. package/esm2022/workflow/lib/workflow.service.mjs +141 -0
  269. package/esm2022/workflow/lib/workflow.types.mjs +52 -0
  270. package/fesm2022/acorex-platform-auth.mjs +502 -0
  271. package/fesm2022/acorex-platform-auth.mjs.map +1 -0
  272. package/fesm2022/acorex-platform-common.mjs +699 -0
  273. package/fesm2022/acorex-platform-common.mjs.map +1 -0
  274. package/fesm2022/acorex-platform-layouts-avatar-widget-edit.component-PZr1lXj-.mjs +104 -0
  275. package/fesm2022/acorex-platform-layouts-avatar-widget-edit.component-PZr1lXj-.mjs.map +1 -0
  276. package/fesm2022/acorex-platform-layouts-avatar-widget-view.component-pJJYkvdH.mjs +36 -0
  277. package/fesm2022/acorex-platform-layouts-avatar-widget-view.component-pJJYkvdH.mjs.map +1 -0
  278. package/fesm2022/acorex-platform-layouts-boolean-widget-filter.component-H056Q5Gz.mjs +150 -0
  279. package/fesm2022/acorex-platform-layouts-boolean-widget-filter.component-H056Q5Gz.mjs.map +1 -0
  280. package/fesm2022/acorex-platform-layouts-change-password.component-QMAm6dxN.mjs +178 -0
  281. package/fesm2022/acorex-platform-layouts-change-password.component-QMAm6dxN.mjs.map +1 -0
  282. package/fesm2022/acorex-platform-layouts-checkbox-widget-column.component-vRJI5S-w.mjs +56 -0
  283. package/fesm2022/acorex-platform-layouts-checkbox-widget-column.component-vRJI5S-w.mjs.map +1 -0
  284. package/fesm2022/acorex-platform-layouts-checkbox-widget-edit.component-P4cD_Nwg.mjs +25 -0
  285. package/fesm2022/acorex-platform-layouts-checkbox-widget-edit.component-P4cD_Nwg.mjs.map +1 -0
  286. package/fesm2022/acorex-platform-layouts-checkbox-widget-view.component-m6bF8XFR.mjs +50 -0
  287. package/fesm2022/acorex-platform-layouts-checkbox-widget-view.component-m6bF8XFR.mjs.map +1 -0
  288. package/fesm2022/acorex-platform-layouts-dateTime-widget-column.component-qeQRJePy.mjs +47 -0
  289. package/fesm2022/acorex-platform-layouts-dateTime-widget-column.component-qeQRJePy.mjs.map +1 -0
  290. package/fesm2022/acorex-platform-layouts-dateTime-widget-edit.component-zeJXGXY8.mjs +178 -0
  291. package/fesm2022/acorex-platform-layouts-dateTime-widget-edit.component-zeJXGXY8.mjs.map +1 -0
  292. package/fesm2022/acorex-platform-layouts-dateTime-widget-filter.component-DJ6esclU.mjs +233 -0
  293. package/fesm2022/acorex-platform-layouts-dateTime-widget-filter.component-DJ6esclU.mjs.map +1 -0
  294. package/fesm2022/acorex-platform-layouts-dateTime-widget-view.component-BrwycTWz.mjs +74 -0
  295. package/fesm2022/acorex-platform-layouts-dateTime-widget-view.component-BrwycTWz.mjs.map +1 -0
  296. package/fesm2022/acorex-platform-layouts-email-widget-column.component-ac8gqsFT.mjs +76 -0
  297. package/fesm2022/acorex-platform-layouts-email-widget-column.component-ac8gqsFT.mjs.map +1 -0
  298. package/fesm2022/acorex-platform-layouts-email-widget-edit.component-m2dI7y9X.mjs +252 -0
  299. package/fesm2022/acorex-platform-layouts-email-widget-edit.component-m2dI7y9X.mjs.map +1 -0
  300. package/fesm2022/acorex-platform-layouts-email-widget-view.component-XrV8va7z.mjs +111 -0
  301. package/fesm2022/acorex-platform-layouts-email-widget-view.component-XrV8va7z.mjs.map +1 -0
  302. package/fesm2022/acorex-platform-layouts-entity-create-view.component-8rtifIvM.mjs +108 -0
  303. package/fesm2022/acorex-platform-layouts-entity-create-view.component-8rtifIvM.mjs.map +1 -0
  304. package/fesm2022/acorex-platform-layouts-entity-modify-view.component-VeTkP3-n.mjs +89 -0
  305. package/fesm2022/acorex-platform-layouts-entity-modify-view.component-VeTkP3-n.mjs.map +1 -0
  306. package/fesm2022/acorex-platform-layouts-file-widget-column.component-v7kAdIQ9.mjs +30 -0
  307. package/fesm2022/acorex-platform-layouts-file-widget-column.component-v7kAdIQ9.mjs.map +1 -0
  308. package/fesm2022/acorex-platform-layouts-file-widget-edit.component-Wrq7ZL9R.mjs +203 -0
  309. package/fesm2022/acorex-platform-layouts-file-widget-edit.component-Wrq7ZL9R.mjs.map +1 -0
  310. package/fesm2022/acorex-platform-layouts-file-widget-filter.component-1-NJh38j.mjs +30 -0
  311. package/fesm2022/acorex-platform-layouts-file-widget-filter.component-1-NJh38j.mjs.map +1 -0
  312. package/fesm2022/acorex-platform-layouts-file-widget-view.component-mXBrKX0K.mjs +156 -0
  313. package/fesm2022/acorex-platform-layouts-file-widget-view.component-mXBrKX0K.mjs.map +1 -0
  314. package/fesm2022/acorex-platform-layouts-gallery-widget-edit.component-cWNvVwum.mjs +192 -0
  315. package/fesm2022/acorex-platform-layouts-gallery-widget-edit.component-cWNvVwum.mjs.map +1 -0
  316. package/fesm2022/acorex-platform-layouts-gallery-widget-filter.component-OCz0hj5i.mjs +30 -0
  317. package/fesm2022/acorex-platform-layouts-gallery-widget-filter.component-OCz0hj5i.mjs.map +1 -0
  318. package/fesm2022/acorex-platform-layouts-gallery-widget-view.component-xU52uaP0.mjs +176 -0
  319. package/fesm2022/acorex-platform-layouts-gallery-widget-view.component-xU52uaP0.mjs.map +1 -0
  320. package/fesm2022/acorex-platform-layouts-largetext-widget-edit.component-Um_eBRFi.mjs +40 -0
  321. package/fesm2022/acorex-platform-layouts-largetext-widget-edit.component-Um_eBRFi.mjs.map +1 -0
  322. package/fesm2022/acorex-platform-layouts-lookup-widget-column.component-Ts0MJe8O.mjs +46 -0
  323. package/fesm2022/acorex-platform-layouts-lookup-widget-column.component-Ts0MJe8O.mjs.map +1 -0
  324. package/fesm2022/acorex-platform-layouts-lookup-widget-edit.component-l5nSr9Cm.mjs +119 -0
  325. package/fesm2022/acorex-platform-layouts-lookup-widget-edit.component-l5nSr9Cm.mjs.map +1 -0
  326. package/fesm2022/acorex-platform-layouts-lookup-widget-filter.component-gp5skvmz.mjs +181 -0
  327. package/fesm2022/acorex-platform-layouts-lookup-widget-filter.component-gp5skvmz.mjs.map +1 -0
  328. package/fesm2022/acorex-platform-layouts-lookup-widget-view.component-ftFXFj6k.mjs +57 -0
  329. package/fesm2022/acorex-platform-layouts-lookup-widget-view.component-ftFXFj6k.mjs.map +1 -0
  330. package/fesm2022/acorex-platform-layouts-map-widget-edit.component-SOQvPhmX.mjs +94 -0
  331. package/fesm2022/acorex-platform-layouts-map-widget-edit.component-SOQvPhmX.mjs.map +1 -0
  332. package/fesm2022/acorex-platform-layouts-map-widget-view.component-1Lj9efbd.mjs +66 -0
  333. package/fesm2022/acorex-platform-layouts-map-widget-view.component-1Lj9efbd.mjs.map +1 -0
  334. package/fesm2022/acorex-platform-layouts-messenger-widget-column.component-W7ZY-W84.mjs +74 -0
  335. package/fesm2022/acorex-platform-layouts-messenger-widget-column.component-W7ZY-W84.mjs.map +1 -0
  336. package/fesm2022/acorex-platform-layouts-messenger-widget-edit.component-dAX8nirB.mjs +139 -0
  337. package/fesm2022/acorex-platform-layouts-messenger-widget-edit.component-dAX8nirB.mjs.map +1 -0
  338. package/fesm2022/acorex-platform-layouts-messenger-widget-view.component-9TJiFdq-.mjs +135 -0
  339. package/fesm2022/acorex-platform-layouts-messenger-widget-view.component-9TJiFdq-.mjs.map +1 -0
  340. package/fesm2022/acorex-platform-layouts-number-widget-edit.component-DDi-o_Zn.mjs +49 -0
  341. package/fesm2022/acorex-platform-layouts-number-widget-edit.component-DDi-o_Zn.mjs.map +1 -0
  342. package/fesm2022/acorex-platform-layouts-number-widget-filter.component-DPGSzdNm.mjs +138 -0
  343. package/fesm2022/acorex-platform-layouts-number-widget-filter.component-DPGSzdNm.mjs.map +1 -0
  344. package/fesm2022/acorex-platform-layouts-number-widget-view.component-hqkAR0LG.mjs +33 -0
  345. package/fesm2022/acorex-platform-layouts-number-widget-view.component-hqkAR0LG.mjs.map +1 -0
  346. package/fesm2022/acorex-platform-layouts-password-widget-column.component-ic1jykZL.mjs +80 -0
  347. package/fesm2022/acorex-platform-layouts-password-widget-column.component-ic1jykZL.mjs.map +1 -0
  348. package/fesm2022/acorex-platform-layouts-password-widget-edit.component-D8xI17yk.mjs +37 -0
  349. package/fesm2022/acorex-platform-layouts-password-widget-edit.component-D8xI17yk.mjs.map +1 -0
  350. package/fesm2022/acorex-platform-layouts-password-widget-view.component-E2vtPKRO.mjs +112 -0
  351. package/fesm2022/acorex-platform-layouts-password-widget-view.component-E2vtPKRO.mjs.map +1 -0
  352. package/fesm2022/acorex-platform-layouts-phone-widget-column.component-s04WZfzv.mjs +94 -0
  353. package/fesm2022/acorex-platform-layouts-phone-widget-column.component-s04WZfzv.mjs.map +1 -0
  354. package/fesm2022/acorex-platform-layouts-phone-widget-edit.component-MKzlZ0_B.mjs +318 -0
  355. package/fesm2022/acorex-platform-layouts-phone-widget-edit.component-MKzlZ0_B.mjs.map +1 -0
  356. package/fesm2022/acorex-platform-layouts-phone-widget-view.component-NEO22XO7.mjs +126 -0
  357. package/fesm2022/acorex-platform-layouts-phone-widget-view.component-NEO22XO7.mjs.map +1 -0
  358. package/fesm2022/acorex-platform-layouts-rich-text-widget-column.component-P0YzXTIB.mjs +72 -0
  359. package/fesm2022/acorex-platform-layouts-rich-text-widget-column.component-P0YzXTIB.mjs.map +1 -0
  360. package/fesm2022/acorex-platform-layouts-rich-text-widget-edit.component-ro2yg7PR.mjs +70 -0
  361. package/fesm2022/acorex-platform-layouts-rich-text-widget-edit.component-ro2yg7PR.mjs.map +1 -0
  362. package/fesm2022/acorex-platform-layouts-rich-text-widget-view.component--Rzxm2a6.mjs +37 -0
  363. package/fesm2022/acorex-platform-layouts-rich-text-widget-view.component--Rzxm2a6.mjs.map +1 -0
  364. package/fesm2022/acorex-platform-layouts-selection-list-widget-column.component-9FTkDGmq.mjs +46 -0
  365. package/fesm2022/acorex-platform-layouts-selection-list-widget-column.component-9FTkDGmq.mjs.map +1 -0
  366. package/fesm2022/acorex-platform-layouts-selection-list-widget-edit.component-FpOQ12Ie.mjs +56 -0
  367. package/fesm2022/acorex-platform-layouts-selection-list-widget-edit.component-FpOQ12Ie.mjs.map +1 -0
  368. package/fesm2022/acorex-platform-layouts-selection-list-widget-filter.component-hGk-ZZ78.mjs +44 -0
  369. package/fesm2022/acorex-platform-layouts-selection-list-widget-filter.component-hGk-ZZ78.mjs.map +1 -0
  370. package/fesm2022/acorex-platform-layouts-selection-list-widget-view.component-s9xq___Y.mjs +48 -0
  371. package/fesm2022/acorex-platform-layouts-selection-list-widget-view.component-s9xq___Y.mjs.map +1 -0
  372. package/fesm2022/acorex-platform-layouts-signature-pad-widget-edit.component-W28Uk9zO.mjs +131 -0
  373. package/fesm2022/acorex-platform-layouts-signature-pad-widget-edit.component-W28Uk9zO.mjs.map +1 -0
  374. package/fesm2022/acorex-platform-layouts-signature-pad-widget-view.component-R40Ml757.mjs +44 -0
  375. package/fesm2022/acorex-platform-layouts-signature-pad-widget-view.component-R40Ml757.mjs.map +1 -0
  376. package/fesm2022/acorex-platform-layouts-string-widget-filter.component-4oZ6BVis.mjs +128 -0
  377. package/fesm2022/acorex-platform-layouts-string-widget-filter.component-4oZ6BVis.mjs.map +1 -0
  378. package/fesm2022/acorex-platform-layouts-text-widget-column.component-qhh6MT79.mjs +50 -0
  379. package/fesm2022/acorex-platform-layouts-text-widget-column.component-qhh6MT79.mjs.map +1 -0
  380. package/fesm2022/acorex-platform-layouts-text-widget-edit.component-TC127Dq8.mjs +165 -0
  381. package/fesm2022/acorex-platform-layouts-text-widget-edit.component-TC127Dq8.mjs.map +1 -0
  382. package/fesm2022/acorex-platform-layouts-text-widget-view.component-65eOj0qR.mjs +69 -0
  383. package/fesm2022/acorex-platform-layouts-text-widget-view.component-65eOj0qR.mjs.map +1 -0
  384. package/fesm2022/acorex-platform-layouts-toggle-widget-column.component-uxOXR-bL.mjs +60 -0
  385. package/fesm2022/acorex-platform-layouts-toggle-widget-column.component-uxOXR-bL.mjs.map +1 -0
  386. package/fesm2022/acorex-platform-layouts-toggle-widget-edit.component-R44L1pgJ.mjs +28 -0
  387. package/fesm2022/acorex-platform-layouts-toggle-widget-edit.component-R44L1pgJ.mjs.map +1 -0
  388. package/fesm2022/acorex-platform-layouts-toggle-widget-view.component-DTOeAUiy.mjs +52 -0
  389. package/fesm2022/acorex-platform-layouts-toggle-widget-view.component-DTOeAUiy.mjs.map +1 -0
  390. package/fesm2022/acorex-platform-layouts.mjs +3732 -0
  391. package/fesm2022/acorex-platform-layouts.mjs.map +1 -0
  392. package/fesm2022/acorex-platform-mocks.mjs +332 -0
  393. package/fesm2022/acorex-platform-mocks.mjs.map +1 -0
  394. package/fesm2022/acorex-platform-native.mjs +154 -0
  395. package/fesm2022/acorex-platform-native.mjs.map +1 -0
  396. package/fesm2022/acorex-platform-schema.mjs +572 -0
  397. package/fesm2022/acorex-platform-schema.mjs.map +1 -0
  398. package/fesm2022/acorex-platform-workflow.mjs +350 -0
  399. package/fesm2022/acorex-platform-workflow.mjs.map +1 -0
  400. package/fesm2022/acorex-platform.mjs +6 -0
  401. package/fesm2022/acorex-platform.mjs.map +1 -0
  402. package/index.d.ts +2 -0
  403. package/layouts/README.md +3 -0
  404. package/layouts/index.d.ts +4 -0
  405. package/layouts/lib/admin/admin-child-layout/admin-child-features-list.component.d.ts +22 -0
  406. package/layouts/lib/admin/admin-child-layout/admin-child-layout.component.d.ts +21 -0
  407. package/layouts/lib/admin/admin-child-layout/admin-child-layout.module.d.ts +17 -0
  408. package/layouts/lib/admin/admin-child-layout/index.d.ts +3 -0
  409. package/layouts/lib/admin/admin-root-layout/admin-root-layout.component.d.ts +30 -0
  410. package/layouts/lib/admin/admin-root-layout/admin-root-layout.module.d.ts +25 -0
  411. package/layouts/lib/admin/admin-root-layout/components/admin-footer/admin-footer.component.d.ts +5 -0
  412. package/layouts/lib/admin/admin-root-layout/components/admin-header/admin-header.component.d.ts +10 -0
  413. package/layouts/lib/admin/admin-root-layout/index.d.ts +4 -0
  414. package/layouts/lib/admin/admin.module.d.ts +11 -0
  415. package/layouts/lib/admin/admin.routes.d.ts +2 -0
  416. package/layouts/lib/admin/custom-reuse.strategy.d.ts +8 -0
  417. package/layouts/lib/admin/entity-layout/entity-create-view/entity-create-view.component.d.ts +20 -0
  418. package/layouts/lib/admin/entity-layout/entity-create-view/entity-create-view.config.d.ts +54 -0
  419. package/layouts/lib/admin/entity-layout/entity-details-view/detail-view.config.d.ts +48 -0
  420. package/layouts/lib/admin/entity-layout/entity-details-view/entity-details-view.component.d.ts +41 -0
  421. package/layouts/lib/admin/entity-layout/entity-details-view/index.d.ts +2 -0
  422. package/layouts/lib/admin/entity-layout/entity-list-view/components/entity-custom-view/entity-custom-view.component.d.ts +47 -0
  423. package/layouts/lib/admin/entity-layout/entity-list-view/components/index.d.ts +5 -0
  424. package/layouts/lib/admin/entity-layout/entity-list-view/components/list-view-option-columns/list-view-option-columns.component.d.ts +22 -0
  425. package/layouts/lib/admin/entity-layout/entity-list-view/components/list-view-option-conditions/list-view-option-conditions.component.d.ts +35 -0
  426. package/layouts/lib/admin/entity-layout/entity-list-view/components/list-view-option-conditions/list-view-option-filter-operator.component.d.ts +18 -0
  427. package/layouts/lib/admin/entity-layout/entity-list-view/components/list-view-option-sorting/list-view-option-sorting.component.d.ts +22 -0
  428. package/layouts/lib/admin/entity-layout/entity-list-view/entity-list-view.component.d.ts +63 -0
  429. package/layouts/lib/admin/entity-layout/entity-list-view/index.d.ts +4 -0
  430. package/layouts/lib/admin/entity-layout/entity-list-view/list-view.config.d.ts +110 -0
  431. package/layouts/lib/admin/entity-layout/entity-list-view/list-view.module.d.ts +41 -0
  432. package/layouts/lib/admin/entity-layout/entity-modify-view/entity-modify-view.component.d.ts +25 -0
  433. package/layouts/lib/admin/entity-layout/entity-modify-view/entity-modify-view.config.d.ts +31 -0
  434. package/layouts/lib/admin/entity-layout/entity-quick-view/entity-quick-view.component.d.ts +22 -0
  435. package/layouts/lib/admin/entity-layout/entity-quick-view/index.d.ts +1 -0
  436. package/layouts/lib/admin/entity-layout/index.d.ts +3 -0
  437. package/layouts/lib/admin/entity-layout/store/entity.actions.d.ts +48 -0
  438. package/layouts/lib/admin/entity-layout/store/entity.effects.d.ts +22 -0
  439. package/layouts/lib/admin/entity-layout/workflows/create-entity.workflow.d.ts +28 -0
  440. package/layouts/lib/admin/entity-layout/workflows/delete-entity.workflow.d.ts +33 -0
  441. package/layouts/lib/admin/entity-layout/workflows/modify-entity.workflow.d.ts +31 -0
  442. package/layouts/lib/admin/entity.resolver.d.ts +4 -0
  443. package/layouts/lib/admin/index.d.ts +7 -0
  444. package/layouts/lib/admin/store/admin-layout.actions.d.ts +8 -0
  445. package/layouts/lib/admin/store/admin-layout.effects.d.ts +10 -0
  446. package/layouts/lib/admin/store/admin-layout.reducers.d.ts +24 -0
  447. package/layouts/lib/admin/store/admin-layout.selectors.d.ts +5 -0
  448. package/layouts/lib/admin/store/admin-layout.state.d.ts +14 -0
  449. package/layouts/lib/admin/store/index.d.ts +5 -0
  450. package/layouts/lib/layout.module.d.ts +9 -0
  451. package/layouts/lib/layout.routes.d.ts +2 -0
  452. package/layouts/lib/shared/components/content-view/content-view.page.d.ts +23 -0
  453. package/layouts/lib/shared/components/content-view/content-view.type.d.ts +16 -0
  454. package/layouts/lib/shared/components/error-401/error-401.component.d.ts +13 -0
  455. package/layouts/lib/shared/components/error-404/error-404.component.d.ts +8 -0
  456. package/layouts/lib/shared/components/error-offline/error-offline.component.d.ts +9 -0
  457. package/layouts/lib/shared/components/index.d.ts +8 -0
  458. package/layouts/lib/shared/components/logo/logo.component.d.ts +8 -0
  459. package/layouts/lib/shared/components/slots/footer-text-slot.component.d.ts +6 -0
  460. package/layouts/lib/shared/components/slots/navbar-slot.component.d.ts +10 -0
  461. package/layouts/lib/shared/components/slots/theme-slot.component.d.ts +8 -0
  462. package/layouts/lib/shared/entity/entity-registery.service.d.ts +34 -0
  463. package/layouts/lib/shared/entity/entity.class.d.ts +145 -0
  464. package/layouts/lib/shared/entity/entity.loader.d.ts +9 -0
  465. package/layouts/lib/shared/entity/index.d.ts +3 -0
  466. package/layouts/lib/shared/index.d.ts +4 -0
  467. package/layouts/lib/shared/services/index.d.ts +1 -0
  468. package/layouts/lib/shared/services/layout.service.d.ts +19 -0
  469. package/layouts/lib/shared/workflows/common.workflow.d.ts +52 -0
  470. package/layouts/lib/shared/workflows/error-handler.d.ts +8 -0
  471. package/layouts/lib/shared/workflows/index.d.ts +2 -0
  472. package/layouts/lib/widgets/avatar/avatar-widget-edit.component.d.ts +10 -0
  473. package/layouts/lib/widgets/avatar/avatar-widget-view.component.d.ts +8 -0
  474. package/layouts/lib/widgets/checkbox/checkbox-widget-column.component.d.ts +11 -0
  475. package/layouts/lib/widgets/checkbox/checkbox-widget-edit.component.d.ts +6 -0
  476. package/layouts/lib/widgets/checkbox/checkbox-widget-view.component.d.ts +11 -0
  477. package/layouts/lib/widgets/common-widget-filter/boolean-widget-filter.component.d.ts +17 -0
  478. package/layouts/lib/widgets/common-widget-filter/number-widget-filter.component.d.ts +11 -0
  479. package/layouts/lib/widgets/common-widget-filter/string-widget-filter.component.d.ts +11 -0
  480. package/layouts/lib/widgets/common-widgets.module.d.ts +32 -0
  481. package/layouts/lib/widgets/dateTime/dateTime-widget-column.component.d.ts +11 -0
  482. package/layouts/lib/widgets/dateTime/dateTime-widget-edit.component.d.ts +24 -0
  483. package/layouts/lib/widgets/dateTime/dateTime-widget-filter.component.d.ts +16 -0
  484. package/layouts/lib/widgets/dateTime/dateTime-widget-view.component.d.ts +11 -0
  485. package/layouts/lib/widgets/email/email-widget-column.component.d.ts +16 -0
  486. package/layouts/lib/widgets/email/email-widget-edit.component.d.ts +28 -0
  487. package/layouts/lib/widgets/email/email-widget-view.component.d.ts +16 -0
  488. package/layouts/lib/widgets/file/file-widget-column.component.d.ts +8 -0
  489. package/layouts/lib/widgets/file/file-widget-edit.component.d.ts +17 -0
  490. package/layouts/lib/widgets/file/file-widget-filter.component.d.ts +6 -0
  491. package/layouts/lib/widgets/file/file-widget-view.component.d.ts +17 -0
  492. package/layouts/lib/widgets/gallery/gallery-widget-edit.component.d.ts +15 -0
  493. package/layouts/lib/widgets/gallery/gallery-widget-filter.component.d.ts +6 -0
  494. package/layouts/lib/widgets/gallery/gallery-widget-types.d.ts +10 -0
  495. package/layouts/lib/widgets/gallery/gallery-widget-view.component.d.ts +16 -0
  496. package/layouts/lib/widgets/index.d.ts +1 -0
  497. package/layouts/lib/widgets/lookup/lookup-widget-column.component.d.ts +16 -0
  498. package/layouts/lib/widgets/lookup/lookup-widget-edit.component.d.ts +15 -0
  499. package/layouts/lib/widgets/lookup/lookup-widget-filter.component.d.ts +16 -0
  500. package/layouts/lib/widgets/lookup/lookup-widget-view.component.d.ts +17 -0
  501. package/layouts/lib/widgets/map/map-widget-edit.component.d.ts +15 -0
  502. package/layouts/lib/widgets/map/map-widget-view.component.d.ts +17 -0
  503. package/layouts/lib/widgets/messenger/messenger-widget-column.component.d.ts +15 -0
  504. package/layouts/lib/widgets/messenger/messenger-widget-edit.component.d.ts +14 -0
  505. package/layouts/lib/widgets/messenger/messenger-widget-view.component.d.ts +17 -0
  506. package/layouts/lib/widgets/number/number-widget-edit.component.d.ts +7 -0
  507. package/layouts/lib/widgets/number/number-widget-view.component.d.ts +8 -0
  508. package/layouts/lib/widgets/password/change-password.component.d.ts +16 -0
  509. package/layouts/lib/widgets/password/password-widget-column.component.d.ts +14 -0
  510. package/layouts/lib/widgets/password/password-widget-edit.component.d.ts +6 -0
  511. package/layouts/lib/widgets/password/password-widget-view.component.d.ts +18 -0
  512. package/layouts/lib/widgets/phone/phone-widget-column.component.d.ts +15 -0
  513. package/layouts/lib/widgets/phone/phone-widget-edit.component.d.ts +29 -0
  514. package/layouts/lib/widgets/phone/phone-widget-view.component.d.ts +18 -0
  515. package/layouts/lib/widgets/rich-text/rich-text-widget-column.component.d.ts +11 -0
  516. package/layouts/lib/widgets/rich-text/rich-text-widget-edit.component.d.ts +33 -0
  517. package/layouts/lib/widgets/rich-text/rich-text-widget-view.component.d.ts +10 -0
  518. package/layouts/lib/widgets/selection-list/selection-list-widget-column.component.d.ts +16 -0
  519. package/layouts/lib/widgets/selection-list/selection-list-widget-edit.component.d.ts +10 -0
  520. package/layouts/lib/widgets/selection-list/selection-list-widget-filter.component.d.ts +9 -0
  521. package/layouts/lib/widgets/selection-list/selection-list-widget-view.component.d.ts +15 -0
  522. package/layouts/lib/widgets/signature-pad/signature-pad-widget-edit.component.d.ts +19 -0
  523. package/layouts/lib/widgets/signature-pad/signature-pad-widget-view.component.d.ts +8 -0
  524. package/layouts/lib/widgets/text/largetext-widget-edit.component.d.ts +6 -0
  525. package/layouts/lib/widgets/text/text-widget-column.component.d.ts +11 -0
  526. package/layouts/lib/widgets/text/text-widget-edit.component.d.ts +23 -0
  527. package/layouts/lib/widgets/text/text-widget-view.component.d.ts +11 -0
  528. package/layouts/lib/widgets/toggle/toggle-widget-column.component.d.ts +11 -0
  529. package/layouts/lib/widgets/toggle/toggle-widget-edit.component.d.ts +6 -0
  530. package/layouts/lib/widgets/toggle/toggle-widget-view.component.d.ts +11 -0
  531. package/mocks/README.md +3 -0
  532. package/mocks/index.d.ts +3 -0
  533. package/mocks/lib/mocks.module.d.ts +7 -0
  534. package/mocks/lib/services/mocker.service.d.ts +29 -0
  535. package/mocks/lib/storage/storage.mock.service.d.ts +25 -0
  536. package/native/README.md +4 -0
  537. package/native/index.d.ts +2 -0
  538. package/native/lib/native.module.d.ts +6 -0
  539. package/native/lib/native.service.d.ts +26 -0
  540. package/package.json +67 -0
  541. package/schema/README.md +3 -0
  542. package/schema/index.d.ts +11 -0
  543. package/schema/lib/component-loader.d.ts +24 -0
  544. package/schema/lib/formats.d.ts +8 -0
  545. package/schema/lib/operators.d.ts +22 -0
  546. package/schema/lib/schema-registery.service.d.ts +20 -0
  547. package/schema/lib/schema.d.ts +21 -0
  548. package/schema/lib/schema.module.d.ts +12 -0
  549. package/schema/lib/widget/widget-base.d.ts +43 -0
  550. package/schema/lib/widget/widget-column-renderer.d.ts +27 -0
  551. package/schema/lib/widget/widget-filter-renderer.d.ts +30 -0
  552. package/schema/lib/widget/widget-renderer.d.ts +26 -0
  553. package/schema/lib/widget/widget-token.d.ts +15 -0
  554. package/workflow/README.md +4 -0
  555. package/workflow/index.d.ts +6 -0
  556. package/workflow/lib/errors.types.d.ts +4 -0
  557. package/workflow/lib/workflow-event-dispatcher.service.d.ts +10 -0
  558. package/workflow/lib/workflow-registery.service.d.ts +17 -0
  559. package/workflow/lib/workflow.module.d.ts +25 -0
  560. package/workflow/lib/workflow.service.d.ts +23 -0
  561. package/workflow/lib/workflow.types.d.ts +61 -0
@@ -0,0 +1,200 @@
1
+ import { AXDialogService } from '@acorex/components/dialog';
2
+ import { AXBasePageComponent } from '@acorex/components/page';
3
+ import { AXToastService } from '@acorex/components/toast';
4
+ import { AXUnsubscriber } from '@acorex/core/utils';
5
+ import { AXPSchemaRegistryService, EQ_OPER } from '@acorex/platform/schema';
6
+ import { moveItemInArray } from '@angular/cdk/drag-drop';
7
+ import { ChangeDetectionStrategy, Component, Input, computed, inject, signal, } from '@angular/core';
8
+ import { cloneDeep } from 'lodash-es';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "@angular/common";
11
+ import * as i2 from "@angular/forms";
12
+ import * as i3 from "@acorex/components/button";
13
+ import * as i4 from "@acorex/components/decorators";
14
+ import * as i5 from "@acorex/components/badge";
15
+ import * as i6 from "@acorex/components/popover";
16
+ import * as i7 from "@acorex/components/image";
17
+ import * as i8 from "@acorex/components/switch";
18
+ import * as i9 from "@acorex/components/tabs";
19
+ import * as i10 from "@acorex/components/select-box";
20
+ import * as i11 from "@acorex/components/text-box";
21
+ import * as i12 from "@acorex/components/label";
22
+ import * as i13 from "@acorex/components/selection-list";
23
+ import * as i14 from "@acorex/components/dropdown-button";
24
+ import * as i15 from "@angular/cdk/drag-drop";
25
+ import * as i16 from "@acorex/platform/schema";
26
+ export class AXPEntityCreateCustomViewComponent extends AXBasePageComponent {
27
+ constructor() {
28
+ super(...arguments);
29
+ this.schemaRegistry = inject(AXPSchemaRegistryService);
30
+ this.toastService = inject(AXToastService);
31
+ this.dialogService = inject(AXDialogService);
32
+ this.subscriber = inject(AXUnsubscriber);
33
+ this.mode = 'create';
34
+ this.selectedView = {};
35
+ this.showNameInput = signal(false);
36
+ this.props = signal([]);
37
+ this.columns = signal([]);
38
+ this.visibleColumns = computed(() => this.columns().filter((c) => c.visible));
39
+ this.conditions = signal([]);
40
+ this.sorts = signal([]);
41
+ this.selectedConditionNames = [];
42
+ this.viewNames = [];
43
+ }
44
+ ngOnInit() {
45
+ this.props.set(cloneDeep(this.loader.entity.properties));
46
+ this.columns.set(cloneDeep(this.selectedView.columns));
47
+ this.conditions.set(cloneDeep(this.selectedView.conditions));
48
+ this.sorts.set(cloneDeep(this.selectedView.sorts));
49
+ this.loader.views$.pipe(this.subscriber.takeUntilDestroy).subscribe((views) => {
50
+ this.viewNames = views.map((v) => v.name);
51
+ });
52
+ }
53
+ //****************** Columns ******************//
54
+ updateColumnItem(event, colName) {
55
+ if (event.isUserInteraction) {
56
+ this.columns.update((prevCols) => prevCols.map((col) => (col.name === colName ? { ...col, visible: event.value } : col)));
57
+ }
58
+ }
59
+ //****************** Sorts ******************//
60
+ updateSortItem(item) {
61
+ this.sorts.update((prevSorts) => prevSorts.map((sort) => (sort.name === item.name ? { ...sort, dir: sort.dir == 'asc' ? 'desc' : 'asc' } : sort)));
62
+ }
63
+ addSortItem() {
64
+ const sortNames = this.sorts().map((p) => p.name);
65
+ console.log(this.props(), sortNames);
66
+ const name = this.props().find((c) => !sortNames.includes(c.name))?.name || this.props()[0].name;
67
+ this.sorts.update((prevSorts) => [...prevSorts, { name, dir: 'asc' }]);
68
+ }
69
+ removeSortItem(item) {
70
+ this.sorts.update((prevSorts) => prevSorts.filter((sort) => item.name != sort.name));
71
+ }
72
+ //****************** Conditions ******************//
73
+ getSchema(name) {
74
+ return this.props().find((c) => c.name == name)?.schema ?? '';
75
+ }
76
+ getOperators(name) {
77
+ const schemaName = this.props().find((c) => c.name == name)?.schema ?? '';
78
+ return this.schemaRegistry.resolve(schemaName)?.filterOptions?.operators ?? [];
79
+ }
80
+ getDefaultOperator(name) {
81
+ const schemaName = this.props().find((c) => c.name == name)?.schema ?? '';
82
+ return this.schemaRegistry.resolve(schemaName)?.filterOptions?.default ?? EQ_OPER;
83
+ }
84
+ getOperatorTitle(schemaName, oprName) {
85
+ return this.getOperators(schemaName).find((c) => c.name == oprName)?.title || '';
86
+ }
87
+ resetSelectedFieldNames() {
88
+ this.selectedConditionNames = this.conditions().map((c) => c.name);
89
+ }
90
+ addCondition() {
91
+ const conditions = this.selectedConditionNames.map((c) => {
92
+ const opr = this.getDefaultOperator(c);
93
+ return {
94
+ name: c,
95
+ operator: opr.name,
96
+ };
97
+ });
98
+ this.conditions.set(conditions);
99
+ }
100
+ removeCondition(item) {
101
+ this.conditions.update((prevConditions) => prevConditions.filter((con) => con.name != item.name));
102
+ }
103
+ //****************** Common ******************//
104
+ drop(type, event) {
105
+ switch (type) {
106
+ case 'columns':
107
+ this.columns.update((prevCols) => {
108
+ const columns = prevCols;
109
+ moveItemInArray(columns, event.previousIndex, event.currentIndex);
110
+ return columns;
111
+ });
112
+ break;
113
+ case 'sorts':
114
+ this.sorts.update((prevSorts) => {
115
+ const sorts = prevSorts;
116
+ moveItemInArray(sorts, event.previousIndex, event.currentIndex);
117
+ return sorts;
118
+ });
119
+ break;
120
+ case 'conditions':
121
+ this.conditions.update((prevConditions) => {
122
+ const conditions = prevConditions;
123
+ moveItemInArray(conditions, event.previousIndex, event.currentIndex);
124
+ return conditions;
125
+ });
126
+ break;
127
+ default:
128
+ break;
129
+ }
130
+ }
131
+ changeViewNameToggle() {
132
+ this.showNameInput.update((prev) => !prev);
133
+ }
134
+ generateViewName(title) {
135
+ return title.replace(/\s+/g, '-').toLowerCase();
136
+ }
137
+ handleApplyClick() {
138
+ const updatedView = {
139
+ ...this.selectedView,
140
+ name: this.generateViewName(this.selectedView.title),
141
+ conditions: this.conditions(),
142
+ columns: this.columns(),
143
+ sorts: this.sorts(),
144
+ };
145
+ if (this.viewNames.includes(updatedView.name) && this.mode == 'create') {
146
+ this.toastService.show({
147
+ title: 'Invalid Title',
148
+ content: 'The title you have chosen already exists. Please choose a different title for your custom view.',
149
+ color: 'danger',
150
+ location: 'bottom-center',
151
+ closeButton: true,
152
+ timeOut: 3000,
153
+ });
154
+ }
155
+ else {
156
+ this.close({ save: true, updatedView });
157
+ }
158
+ }
159
+ handleResetClick() {
160
+ this.conditions.set(cloneDeep(this.selectedView.conditions));
161
+ this.columns.set(cloneDeep(this.selectedView.columns));
162
+ this.sorts.set(cloneDeep(this.selectedView.sorts));
163
+ }
164
+ handleDiscardClick() {
165
+ this.close({ save: false });
166
+ }
167
+ handleCancelClick() {
168
+ this.close({ save: false });
169
+ }
170
+ handleDeleteClick() {
171
+ this.dialogService
172
+ .confirm('Warning', 'Are you sure want to delete this view?', 'danger', 'horizontal')
173
+ .then((data) => {
174
+ if (data.result) {
175
+ this.close({ delete: true, viewName: this.selectedView.name });
176
+ }
177
+ });
178
+ }
179
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXPEntityCreateCustomViewComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
180
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: AXPEntityCreateCustomViewComponent, selector: "ng-component", inputs: { loader: "loader", mode: "mode", selectedView: "selectedView" }, providers: [
181
+ {
182
+ provide: AXUnsubscriber,
183
+ },
184
+ ], usesInheritance: true, ngImport: i0, template: "<ax-header class=\"ax-p-4 ax-flex ax-justify-between ax-border-b\">\n <div class=\"ax-flex ax-items-center\">\n @if (showNameInput() && mode==='create') {\n <div class=\"ax-w-60\">\n <ax-text-box class=\"ax-sm\" [(ngModel)]=\"selectedView.title\">\n @if(showNameInput()){\n <ax-suffix>\n <ax-button (onClick)=\"changeViewNameToggle()\" look=\"default\">\n <ax-icon class=\"fa-sodild fas fa-check ax-text-sm\"> </ax-icon>\n </ax-button>\n </ax-suffix>\n }\n </ax-text-box>\n </div>\n }@else {\n <span class=\"ax-text-lg ax-font-semibold\">{{ selectedView.title }}</span>\n } @if (mode===\"create\") {\n <ax-button class=\"ax-xs\" (onClick)=\"changeViewNameToggle()\" color=\"default\">\n @if(!showNameInput() ){\n <ax-icon class=\"fa-regular fa-pen ax-text-sm ax-text-neutral-600\"> </ax-icon>\n }\n </ax-button>\n }\n </div>\n <ax-close-button></ax-close-button>\n</ax-header>\n<div class=\"ax-p-4\">\n <ax-tabs [content]=\"contents\" look=\"with-line\">\n <ax-tab-item text=\"Columns\">\n <ax-suffix>\n <ax-badge [text]=\"visibleColumns().length.toString()\" color=\"primary\"> </ax-badge>\n </ax-suffix>\n <ax-content>\n <div\n class=\"ax-flex ax-flex-col ax-gap-4 ax-p-4 ax-select-none ax-h-[400px]\"\n cdkDropList\n (cdkDropListDropped)=\"drop('columns', $event)\"\n >\n <div class=\"ax-flex ax-flex-col ax-gap-3 ax-w-full ax-sorted-list ax-overflow-auto ax-pe-2\">\n <ng-container *ngFor=\"let item of columns()\">\n <div class=\"ax-flex ax-py-1 ax-items-center ax-justify-between\" cdkDrag cdkDragBoundary=\".ax-sorted-list\">\n <div class=\"ax-flex ax-items-center ax-gap-3\" cdkDragHandle>\n <ax-icon class=\"fa-solid fa-grip-dots-vertical ax-cursor-move\"></ax-icon>\n <p class=\"ax-font-medium ax-text-sm\">{{ item.title }}</p>\n </div>\n <ax-switch\n class=\"ax-sm\"\n [(ngModel)]=\"item.visible\"\n (onValueChanged)=\"updateColumnItem($event, item.name)\"\n ></ax-switch>\n </div>\n </ng-container>\n </div>\n </div>\n </ax-content>\n </ax-tab-item>\n <ax-tab-item text=\"Conditions\">\n <ax-suffix>\n <ax-badge [text]=\"conditions().length.toString()\" color=\"primary\"> </ax-badge>\n </ax-suffix>\n <ax-content>\n <div\n class=\"ax-flex ax-flex-col ax-justify-start ax-gap-4 ax-py-4 ax-select-none ax-h-[400px]\"\n [class.ax-justify-center]=\"!conditions().length\"\n >\n @if(!conditions().length){\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center\">\n <ax-image src=\"assets/documents.svg\"></ax-image>\n <p class=\"ax-mt-6 ax-mb-1 ax-font-bold\">No Filters Selected</p>\n <span class=\"ax-text-neutral-400 ax-text-sm md:ax-text-md\"\n >Please select field(s) that you want to filter</span\n >\n </div>\n } @else {\n <div class=\"ax-sorted-list ax-px-4 ax-py-1 ax-overflow-auto\">\n <div cdkDropList (cdkDropListDropped)=\"drop('conditions', $event)\" class=\"ax-flex ax-flex-col ax-gap-2\">\n @for(item of conditions(); track item.name ){\n <div cdkDrag cdkDragBoundary=\".ax-sorted-list\">\n <div class=\"ax-ms-4 ax-flex ax-items-start ax-gap-2\">\n <ax-label>{{ loader.getProp(item.name)?.title }}</ax-label>\n @if(getOperatorTitle(item.name,item.operator)){\n <ax-badge\n class=\"ax-text-xs\"\n color=\"primary\"\n [look]=\"'twotone'\"\n [text]=\"getOperatorTitle(item.name, item.operator)\"\n ></ax-badge>\n }\n </div>\n <div class=\"ax-flex ax-group ax-items-center ax-gap-2\">\n <ax-icon class=\"fa-solid fa-grip-dots-vertical ax-cursor-move\" cdkDragHandle></ax-icon>\n <div class=\"ax-w-full\">\n <axp-widget-filter-renderer\n [schema]=\"getSchema(item.name)\"\n [prop]=\"loader.getProp(item.name)\"\n [(value)]=\"item.value\"\n [(operator)]=\"item.operator\"\n >\n </axp-widget-filter-renderer>\n </div>\n <ax-button look=\"blank\" color=\"danger\" class=\"ax-sm\" (onClick)=\"removeCondition(item)\">\n <ax-icon class=\"fa-solid fa-trash-can\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n </div>\n </div>\n }\n <div class=\"ax-flex ax-gap-2\">\n <div class=\"ax-w-full\" #addField>\n @if(conditions().length){\n <ax-button color=\"primary\" text=\"Add field\" look=\"blank\" class=\"ax-sm\"></ax-button>\n }@else {\n <div class=\"ax-flex ax-justify-center ax-w-full\">\n <ax-button color=\"primary\" text=\"Add field\" look=\"outline\" class=\"ax-md ax-w-56\"></ax-button>\n </div>\n }\n <ax-popover\n #conditionsPopover\n [target]=\"addField\"\n [placement]=\"conditions().length ? 'bottom-start' : 'bottom'\"\n [offsetY]=\"8\"\n [openOn]=\"'toggle'\"\n [closeOn]=\"'clickOut'\"\n [adaptivityEnabled]=\"true\"\n (onOpened)=\"resetSelectedFieldNames()\"\n >\n <div\n class=\"ax-bg-surface ax-border ax-border-default ax-rounded-md ax-shadow-md ax-w-full ax-min-w-[250px]\"\n >\n <div class=\"ax-border-b-[1px] ax-pb-2 ax-mb-2 ax-p-3\">\n <ax-title class=\"ax-font-bold\">Fields</ax-title>\n </div>\n <div class=\"ax-max-h-48 ax-overflow-auto\">\n <ax-selection-list\n [valueField]=\"'name'\"\n [textField]=\"'title'\"\n [(ngModel)]=\"selectedConditionNames\"\n [direction]=\"'vertical'\"\n [items]=\"props()\"\n [multiple]=\"true\"\n ></ax-selection-list>\n </div>\n <div class=\"ax-flex ax-justify-end ax-border-t-[1px] ax-p-3\">\n <ax-button\n (onClick)=\"addCondition(); conditionsPopover.close()\"\n class=\"ax-sm\"\n text=\"Confirm\"\n color=\"primary\"\n >\n </ax-button>\n </div>\n </div>\n </ax-popover>\n </div>\n </div>\n </div>\n </ax-content>\n </ax-tab-item>\n <ax-tab-item text=\"Sorting\">\n <ax-suffix>\n <ax-badge [text]=\"sorts().length.toString()\" color=\"primary\"> </ax-badge>\n </ax-suffix>\n <ax-content>\n <div\n class=\"ax-flex ax-p-4 ax-flex-col ax-justify-start ax-gap-4 ax-select-none ax-overflow-auto ax-h-[400px]\"\n [class.ax-justify-center]=\"!sorts().length\"\n >\n @if(!sorts().length){\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center\">\n <ax-image src=\"assets/documents.svg\"></ax-image>\n <p class=\"ax-mt-6 ax-mb-1 ax-font-bold\">No Sorts Selected</p>\n <span class=\"ax-text-neutral-400 ax-text-sm md:ax-text-md\"\n >Please select field(s) that you want to sort</span\n >\n </div>\n }@else {\n <div\n cdkDropList\n (cdkDropListDropped)=\"drop('sorts', $event)\"\n class=\"ax-flex ax-flex-col ax-gap-3 ax-w-full ax-sorted-list ax-py-1 ax-overflow-auto\"\n >\n <ng-container *ngFor=\"let item of sorts()\">\n <div class=\"ax-flex ax-gap-2 ax-items-center\" cdkDrag cdkDragBoundary=\".ax-sorted-list\">\n <ax-icon class=\"fa-solid fa-grip-dots-vertical ax-cursor-move\" cdkDragHandle></ax-icon>\n <ax-select-box [dataSource]=\"props()\" valueField=\"name\" textField=\"title\" [(ngModel)]=\"item.name\">\n </ax-select-box>\n <ax-button [color]=\"'default'\" class=\"ax-sm\" (click)=\"updateSortItem(item)\">\n <ax-icon\n [class.ax-text-primary]=\"item.dir == 'asc'\"\n class=\"fa-solid fa-arrow-up-long ax-text-neutral-400\"\n ></ax-icon>\n <ax-icon\n [class.ax-text-primary]=\"item.dir == 'desc'\"\n class=\"fa-solid fa-arrow-down-long ax-text-neutral-400\"\n ></ax-icon>\n </ax-button>\n\n <ax-button look=\"blank\" (onClick)=\"removeSortItem(item)\">\n <ax-icon class=\"fa-solid fa-trash-can ax-text-danger-500\"></ax-icon>\n </ax-button>\n </div>\n </ng-container>\n </div>\n }\n\n <div class=\"ax-flex ax-gap-2\">\n <div class=\"ax-w-full\" #addField>\n @if(sorts().length){\n <ax-button\n (onClick)=\"addSortItem()\"\n color=\"primary\"\n text=\"Add field\"\n look=\"blank\"\n class=\"ax-sm\"\n ></ax-button>\n }@else {\n <div class=\"ax-flex ax-justify-center ax-w-full\">\n <ax-button\n (onClick)=\"addSortItem()\"\n color=\"primary\"\n text=\"Add field\"\n look=\"outline\"\n class=\"ax-md ax-w-56\"\n ></ax-button>\n </div>\n }\n </div>\n </div>\n </div>\n </ax-content>\n </ax-tab-item>\n </ax-tabs>\n <ng-template [axTabContent] #contents=\"axTabContent\"> </ng-template>\n</div>\n<ax-footer class=\"!ax-justify-end\">\n @if (mode===\"edit\") {\n <ax-dropdown-button text=\"Discard\" (onClick)=\"handleDiscardClick()\">\n <ax-button-item-list>\n <ax-button-item text=\"Reset\" (onClick)=\"handleResetClick()\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-rotate-left fa-flip-horizontal\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item class=\"ax-text-danger\" text=\"Delete\" (onClick)=\"handleDeleteClick()\">\n <ax-prefix> <ax-icon icon=\"fas fa-trash fa-flip-horizontal\"></ax-icon> </ax-prefix\n ></ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-button>\n } @else {\n <ax-button text=\"Cancel\" look=\"outline\" (onClick)=\"handleCancelClick()\"></ax-button>\n }\n <ax-button\n [text]=\"mode === 'create' ? 'Save' : 'Save Changes'\"\n color=\"primary\"\n (onClick)=\"handleApplyClick()\"\n ></ax-button>\n</ax-footer>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange"] }, { kind: "component", type: i3.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i3.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "component", type: i4.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i4.AXDecoratorCloseButtonComponent, selector: "ax-close-button", inputs: ["icon"] }, { kind: "component", type: i4.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: "component", type: i5.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "look", "text"] }, { kind: "component", type: i6.AXPopoverComponent, selector: "ax-popover", inputs: ["offsetX", "offsetY", "target", "placement", "content", "openOn", "closeOn", "hasBackdrop", "openAfter", "closeAfter", "backdropClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "component", type: i7.AXImageComponent, selector: "ax-image", inputs: ["overlayMode", "src", "alt", "priority", "lazy"], outputs: ["onLoad", "onError"] }, { kind: "component", type: i8.AXSwitchComponent, selector: "ax-switch", inputs: ["disabled", "readonly", "color", "tabIndex", "value", "name", "isLoading"], outputs: ["onBlur", "onFocus", "valueChange", "onValueChanged", "readonlyChange", "disabledChange"] }, { kind: "component", type: i9.AXTabsComponent, selector: "ax-tabs", inputs: ["look", "location", "fitParent", "minWidth", "content"], outputs: ["onActiveTabChanged"] }, { kind: "component", type: i9.AXTabItemComponent, selector: "ax-tab-item", inputs: ["disabled", "text", "key", "headerTemplate", "active"], outputs: ["disabledChange", "onClick", "onBlur", "onFocus", "activeChange"] }, { kind: "directive", type: i9.AXTabContentDirective, selector: "[axTabContent]", inputs: ["axTabContent"], exportAs: ["axTabContent"] }, { kind: "component", type: i10.AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "dataSource", "itemTemplate", "emptyTemplate", "loadingTemplate"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange"] }, { kind: "component", type: i11.AXTextBoxComponent, selector: "ax-text-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "maxLength", "allowNull", "type", "autoComplete", "look", "mask-options", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "component", type: i12.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "component", type: i13.AXSelectionListComponent, selector: "ax-selection-list", inputs: ["id", "name", "disabled", "readonly", "tabIndex", "size", "value", "valueField", "textField", "hintField", "disabledField", "readonlyField", "multiple", "direction", "customTemplate", "showControl", "items", "look"], outputs: ["onValueChanged", "onBlur", "onFocus"] }, { kind: "component", type: i14.AXDropdownButtonComponent, selector: "ax-dropdown-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "type", "mode"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "lookChange", "colorChange", "disabledChange"] }, { kind: "directive", type: i15.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i15.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i15.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: i16.AXPWidgetFilterRendererComponent, selector: "axp-widget-filter-renderer", inputs: ["value", "operator", "prop", "schema"], outputs: ["valueChange", "operatorChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
185
+ }
186
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXPEntityCreateCustomViewComponent, decorators: [{
187
+ type: Component,
188
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, providers: [
189
+ {
190
+ provide: AXUnsubscriber,
191
+ },
192
+ ], template: "<ax-header class=\"ax-p-4 ax-flex ax-justify-between ax-border-b\">\n <div class=\"ax-flex ax-items-center\">\n @if (showNameInput() && mode==='create') {\n <div class=\"ax-w-60\">\n <ax-text-box class=\"ax-sm\" [(ngModel)]=\"selectedView.title\">\n @if(showNameInput()){\n <ax-suffix>\n <ax-button (onClick)=\"changeViewNameToggle()\" look=\"default\">\n <ax-icon class=\"fa-sodild fas fa-check ax-text-sm\"> </ax-icon>\n </ax-button>\n </ax-suffix>\n }\n </ax-text-box>\n </div>\n }@else {\n <span class=\"ax-text-lg ax-font-semibold\">{{ selectedView.title }}</span>\n } @if (mode===\"create\") {\n <ax-button class=\"ax-xs\" (onClick)=\"changeViewNameToggle()\" color=\"default\">\n @if(!showNameInput() ){\n <ax-icon class=\"fa-regular fa-pen ax-text-sm ax-text-neutral-600\"> </ax-icon>\n }\n </ax-button>\n }\n </div>\n <ax-close-button></ax-close-button>\n</ax-header>\n<div class=\"ax-p-4\">\n <ax-tabs [content]=\"contents\" look=\"with-line\">\n <ax-tab-item text=\"Columns\">\n <ax-suffix>\n <ax-badge [text]=\"visibleColumns().length.toString()\" color=\"primary\"> </ax-badge>\n </ax-suffix>\n <ax-content>\n <div\n class=\"ax-flex ax-flex-col ax-gap-4 ax-p-4 ax-select-none ax-h-[400px]\"\n cdkDropList\n (cdkDropListDropped)=\"drop('columns', $event)\"\n >\n <div class=\"ax-flex ax-flex-col ax-gap-3 ax-w-full ax-sorted-list ax-overflow-auto ax-pe-2\">\n <ng-container *ngFor=\"let item of columns()\">\n <div class=\"ax-flex ax-py-1 ax-items-center ax-justify-between\" cdkDrag cdkDragBoundary=\".ax-sorted-list\">\n <div class=\"ax-flex ax-items-center ax-gap-3\" cdkDragHandle>\n <ax-icon class=\"fa-solid fa-grip-dots-vertical ax-cursor-move\"></ax-icon>\n <p class=\"ax-font-medium ax-text-sm\">{{ item.title }}</p>\n </div>\n <ax-switch\n class=\"ax-sm\"\n [(ngModel)]=\"item.visible\"\n (onValueChanged)=\"updateColumnItem($event, item.name)\"\n ></ax-switch>\n </div>\n </ng-container>\n </div>\n </div>\n </ax-content>\n </ax-tab-item>\n <ax-tab-item text=\"Conditions\">\n <ax-suffix>\n <ax-badge [text]=\"conditions().length.toString()\" color=\"primary\"> </ax-badge>\n </ax-suffix>\n <ax-content>\n <div\n class=\"ax-flex ax-flex-col ax-justify-start ax-gap-4 ax-py-4 ax-select-none ax-h-[400px]\"\n [class.ax-justify-center]=\"!conditions().length\"\n >\n @if(!conditions().length){\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center\">\n <ax-image src=\"assets/documents.svg\"></ax-image>\n <p class=\"ax-mt-6 ax-mb-1 ax-font-bold\">No Filters Selected</p>\n <span class=\"ax-text-neutral-400 ax-text-sm md:ax-text-md\"\n >Please select field(s) that you want to filter</span\n >\n </div>\n } @else {\n <div class=\"ax-sorted-list ax-px-4 ax-py-1 ax-overflow-auto\">\n <div cdkDropList (cdkDropListDropped)=\"drop('conditions', $event)\" class=\"ax-flex ax-flex-col ax-gap-2\">\n @for(item of conditions(); track item.name ){\n <div cdkDrag cdkDragBoundary=\".ax-sorted-list\">\n <div class=\"ax-ms-4 ax-flex ax-items-start ax-gap-2\">\n <ax-label>{{ loader.getProp(item.name)?.title }}</ax-label>\n @if(getOperatorTitle(item.name,item.operator)){\n <ax-badge\n class=\"ax-text-xs\"\n color=\"primary\"\n [look]=\"'twotone'\"\n [text]=\"getOperatorTitle(item.name, item.operator)\"\n ></ax-badge>\n }\n </div>\n <div class=\"ax-flex ax-group ax-items-center ax-gap-2\">\n <ax-icon class=\"fa-solid fa-grip-dots-vertical ax-cursor-move\" cdkDragHandle></ax-icon>\n <div class=\"ax-w-full\">\n <axp-widget-filter-renderer\n [schema]=\"getSchema(item.name)\"\n [prop]=\"loader.getProp(item.name)\"\n [(value)]=\"item.value\"\n [(operator)]=\"item.operator\"\n >\n </axp-widget-filter-renderer>\n </div>\n <ax-button look=\"blank\" color=\"danger\" class=\"ax-sm\" (onClick)=\"removeCondition(item)\">\n <ax-icon class=\"fa-solid fa-trash-can\"></ax-icon>\n </ax-button>\n </div>\n </div>\n }\n </div>\n </div>\n }\n <div class=\"ax-flex ax-gap-2\">\n <div class=\"ax-w-full\" #addField>\n @if(conditions().length){\n <ax-button color=\"primary\" text=\"Add field\" look=\"blank\" class=\"ax-sm\"></ax-button>\n }@else {\n <div class=\"ax-flex ax-justify-center ax-w-full\">\n <ax-button color=\"primary\" text=\"Add field\" look=\"outline\" class=\"ax-md ax-w-56\"></ax-button>\n </div>\n }\n <ax-popover\n #conditionsPopover\n [target]=\"addField\"\n [placement]=\"conditions().length ? 'bottom-start' : 'bottom'\"\n [offsetY]=\"8\"\n [openOn]=\"'toggle'\"\n [closeOn]=\"'clickOut'\"\n [adaptivityEnabled]=\"true\"\n (onOpened)=\"resetSelectedFieldNames()\"\n >\n <div\n class=\"ax-bg-surface ax-border ax-border-default ax-rounded-md ax-shadow-md ax-w-full ax-min-w-[250px]\"\n >\n <div class=\"ax-border-b-[1px] ax-pb-2 ax-mb-2 ax-p-3\">\n <ax-title class=\"ax-font-bold\">Fields</ax-title>\n </div>\n <div class=\"ax-max-h-48 ax-overflow-auto\">\n <ax-selection-list\n [valueField]=\"'name'\"\n [textField]=\"'title'\"\n [(ngModel)]=\"selectedConditionNames\"\n [direction]=\"'vertical'\"\n [items]=\"props()\"\n [multiple]=\"true\"\n ></ax-selection-list>\n </div>\n <div class=\"ax-flex ax-justify-end ax-border-t-[1px] ax-p-3\">\n <ax-button\n (onClick)=\"addCondition(); conditionsPopover.close()\"\n class=\"ax-sm\"\n text=\"Confirm\"\n color=\"primary\"\n >\n </ax-button>\n </div>\n </div>\n </ax-popover>\n </div>\n </div>\n </div>\n </ax-content>\n </ax-tab-item>\n <ax-tab-item text=\"Sorting\">\n <ax-suffix>\n <ax-badge [text]=\"sorts().length.toString()\" color=\"primary\"> </ax-badge>\n </ax-suffix>\n <ax-content>\n <div\n class=\"ax-flex ax-p-4 ax-flex-col ax-justify-start ax-gap-4 ax-select-none ax-overflow-auto ax-h-[400px]\"\n [class.ax-justify-center]=\"!sorts().length\"\n >\n @if(!sorts().length){\n <div class=\"ax-flex ax-flex-col ax-items-center ax-justify-center\">\n <ax-image src=\"assets/documents.svg\"></ax-image>\n <p class=\"ax-mt-6 ax-mb-1 ax-font-bold\">No Sorts Selected</p>\n <span class=\"ax-text-neutral-400 ax-text-sm md:ax-text-md\"\n >Please select field(s) that you want to sort</span\n >\n </div>\n }@else {\n <div\n cdkDropList\n (cdkDropListDropped)=\"drop('sorts', $event)\"\n class=\"ax-flex ax-flex-col ax-gap-3 ax-w-full ax-sorted-list ax-py-1 ax-overflow-auto\"\n >\n <ng-container *ngFor=\"let item of sorts()\">\n <div class=\"ax-flex ax-gap-2 ax-items-center\" cdkDrag cdkDragBoundary=\".ax-sorted-list\">\n <ax-icon class=\"fa-solid fa-grip-dots-vertical ax-cursor-move\" cdkDragHandle></ax-icon>\n <ax-select-box [dataSource]=\"props()\" valueField=\"name\" textField=\"title\" [(ngModel)]=\"item.name\">\n </ax-select-box>\n <ax-button [color]=\"'default'\" class=\"ax-sm\" (click)=\"updateSortItem(item)\">\n <ax-icon\n [class.ax-text-primary]=\"item.dir == 'asc'\"\n class=\"fa-solid fa-arrow-up-long ax-text-neutral-400\"\n ></ax-icon>\n <ax-icon\n [class.ax-text-primary]=\"item.dir == 'desc'\"\n class=\"fa-solid fa-arrow-down-long ax-text-neutral-400\"\n ></ax-icon>\n </ax-button>\n\n <ax-button look=\"blank\" (onClick)=\"removeSortItem(item)\">\n <ax-icon class=\"fa-solid fa-trash-can ax-text-danger-500\"></ax-icon>\n </ax-button>\n </div>\n </ng-container>\n </div>\n }\n\n <div class=\"ax-flex ax-gap-2\">\n <div class=\"ax-w-full\" #addField>\n @if(sorts().length){\n <ax-button\n (onClick)=\"addSortItem()\"\n color=\"primary\"\n text=\"Add field\"\n look=\"blank\"\n class=\"ax-sm\"\n ></ax-button>\n }@else {\n <div class=\"ax-flex ax-justify-center ax-w-full\">\n <ax-button\n (onClick)=\"addSortItem()\"\n color=\"primary\"\n text=\"Add field\"\n look=\"outline\"\n class=\"ax-md ax-w-56\"\n ></ax-button>\n </div>\n }\n </div>\n </div>\n </div>\n </ax-content>\n </ax-tab-item>\n </ax-tabs>\n <ng-template [axTabContent] #contents=\"axTabContent\"> </ng-template>\n</div>\n<ax-footer class=\"!ax-justify-end\">\n @if (mode===\"edit\") {\n <ax-dropdown-button text=\"Discard\" (onClick)=\"handleDiscardClick()\">\n <ax-button-item-list>\n <ax-button-item text=\"Reset\" (onClick)=\"handleResetClick()\">\n <ax-prefix>\n <ax-icon icon=\"fa-solid fa-rotate-left fa-flip-horizontal\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item class=\"ax-text-danger\" text=\"Delete\" (onClick)=\"handleDeleteClick()\">\n <ax-prefix> <ax-icon icon=\"fas fa-trash fa-flip-horizontal\"></ax-icon> </ax-prefix\n ></ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-button>\n } @else {\n <ax-button text=\"Cancel\" look=\"outline\" (onClick)=\"handleCancelClick()\"></ax-button>\n }\n <ax-button\n [text]=\"mode === 'create' ? 'Save' : 'Save Changes'\"\n color=\"primary\"\n (onClick)=\"handleApplyClick()\"\n ></ax-button>\n</ax-footer>\n" }]
193
+ }], propDecorators: { loader: [{
194
+ type: Input
195
+ }], mode: [{
196
+ type: Input
197
+ }], selectedView: [{
198
+ type: Input
199
+ }] } });
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWN1c3RvbS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0cy9zcmMvbGliL2FkbWluL2VudGl0eS1sYXlvdXQvZW50aXR5LWxpc3Qtdmlldy9jb21wb25lbnRzL2VudGl0eS1jdXN0b20tdmlldy9lbnRpdHktY3VzdG9tLXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXRzL3NyYy9saWIvYWRtaW4vZW50aXR5LWxheW91dC9lbnRpdHktbGlzdC12aWV3L2NvbXBvbmVudHMvZW50aXR5LWN1c3RvbS12aWV3L2VudGl0eS1jdXN0b20tdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzFELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQXFCLHdCQUF3QixFQUFFLE9BQU8sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQy9GLE9BQU8sRUFBZSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0J0QyxNQUFNLE9BQU8sa0NBQW1DLFNBQVEsbUJBQW1CO0lBVDNF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YUFDcEYsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDYixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDaEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUNqRSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzhHQTdLVSxrQ0FBa0M7a0dBQWxDLGtDQUFrQyxpSEFObEM7WUFDVDtnQkFDRSxPQUFPLEVBQUUsY0FBYzthQUN4QjtTQUNGLGlEQ2pDSCw0cVdBbVFBOzsyRkRoT2Esa0NBQWtDO2tCQVQ5QyxTQUFTO3NDQUVTLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGNBQWM7eUJBQ3hCO3FCQUNGOzhCQVFRLE1BQU07c0JBQWQsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYTG9jYXRpb24sIEFYU3R5bGVDb2xvclR5cGUsIEFYVmFsdWVDaGFuZ2VkRXZlbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29tbW9uJztcbmltcG9ydCB7IEFYRGlhbG9nU2VydmljZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9kaWFsb2cnO1xuaW1wb3J0IHsgQVhCYXNlUGFnZUNvbXBvbmVudCB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9wYWdlJztcbmltcG9ydCB7IEFYVG9hc3RTZXJ2aWNlIH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3RvYXN0JztcbmltcG9ydCB7IEFYVW5zdWJzY3JpYmVyIH0gZnJvbSAnQGFjb3JleC9jb3JlL3V0aWxzJztcbmltcG9ydCB7IEFYUEZpbHRlck9wZXJhdG9yLCBBWFBTY2hlbWFSZWdpc3RyeVNlcnZpY2UsIEVRX09QRVIgfSBmcm9tICdAYWNvcmV4L3BsYXRmb3JtL3NjaGVtYSc7XG5pbXBvcnQgeyBDZGtEcmFnRHJvcCwgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgU2lnbmFsLFxuICBXcml0YWJsZVNpZ25hbCxcbiAgY29tcHV0ZWQsXG4gIGluamVjdCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQge1xuICBBWFBFbnRpdHlMaXN0Q29uZGl0aW9uQ29uZmlnLFxuICBBWFBFbnRpdHlMaXN0RGlzcGxheUNvbHVtbkNvbmZpZyxcbiAgQVhQRW50aXR5TGlzdFNvcnRDb25maWcsXG4gIEFYUEVudGl0eVByb3BlcnR5LFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zaGFyZWQnO1xuaW1wb3J0IHsgQVhQTGlzdFZpZXdMb2FkZXIgfSBmcm9tICcuLi8uLi9saXN0LXZpZXcuY29uZmlnJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9lbnRpdHktY3VzdG9tLXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQVhVbnN1YnNjcmliZXIsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhQRW50aXR5Q3JlYXRlQ3VzdG9tVmlld0NvbXBvbmVudCBleHRlbmRzIEFYQmFzZVBhZ2VDb21wb25lbnQge1xuICBwcml2YXRlIHNjaGVtYVJlZ2lzdHJ5ID0gaW5qZWN0KEFYUFNjaGVtYVJlZ2lzdHJ5U2VydmljZSk7XG4gIHByaXZhdGUgdG9hc3RTZXJ2aWNlID0gaW5qZWN0KEFYVG9hc3RTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBkaWFsb2dTZXJ2aWNlID0gaW5qZWN0KEFYRGlhbG9nU2VydmljZSk7XG4gIHByaXZhdGUgc3Vic2NyaWJlciA9IGluamVjdChBWFVuc3Vic2NyaWJlcik7XG5cbiAgQElucHV0KCkgbG9hZGVyITogQVhQTGlzdFZpZXdMb2FkZXI7XG4gIEBJbnB1dCgpIG1vZGU6ICdlZGl0JyB8ICdjcmVhdGUnID0gJ2NyZWF0ZSc7XG4gIEBJbnB1dCgpIHNlbGVjdGVkVmlldzogYW55ID0ge307XG5cbiAgcHJvdGVjdGVkIHNob3dOYW1lSW5wdXQ6IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJvdGVjdGVkIHByb3BzOiBXcml0YWJsZVNpZ25hbDxBWFBFbnRpdHlQcm9wZXJ0eVtdPiA9IHNpZ25hbChbXSk7XG5cbiAgcHJvdGVjdGVkIGNvbHVtbnM6IFdyaXRhYmxlU2lnbmFsPEFYUEVudGl0eUxpc3REaXNwbGF5Q29sdW1uQ29uZmlnW10+ID0gc2lnbmFsKFtdKTtcbiAgcHJvdGVjdGVkIHZpc2libGVDb2x1bW5zOiBTaWduYWw8QVhQRW50aXR5TGlzdERpc3BsYXlDb2x1bW5Db25maWdbXT4gPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuY29sdW1ucygpLmZpbHRlcigoYykgPT4gYy52aXNpYmxlKVxuICApO1xuICBwcm90ZWN0ZWQgY29uZGl0aW9uczogV3JpdGFibGVTaWduYWw8QVhQRW50aXR5TGlzdENvbmRpdGlvbkNvbmZpZ1tdPiA9IHNpZ25hbChbXSk7XG4gIHByb3RlY3RlZCBzb3J0czogV3JpdGFibGVTaWduYWw8QVhQRW50aXR5TGlzdFNvcnRDb25maWdbXT4gPSBzaWduYWwoW10pO1xuXG4gIHByb3RlY3RlZCBzZWxlY3RlZENvbmRpdGlvbk5hbWVzOiBzdHJpbmdbXSA9IFtdO1xuICBwcm90ZWN0ZWQgdmlld05hbWVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIHByb3RlY3RlZCBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnByb3BzLnNldChjbG9uZURlZXAodGhpcy5sb2FkZXIuZW50aXR5LnByb3BlcnRpZXMpKTtcbiAgICB0aGlzLmNvbHVtbnMuc2V0KGNsb25lRGVlcCh0aGlzLnNlbGVjdGVkVmlldy5jb2x1bW5zKSk7XG4gICAgdGhpcy5jb25kaXRpb25zLnNldChjbG9uZURlZXAodGhpcy5zZWxlY3RlZFZpZXcuY29uZGl0aW9ucykpO1xuICAgIHRoaXMuc29ydHMuc2V0KGNsb25lRGVlcCh0aGlzLnNlbGVjdGVkVmlldy5zb3J0cykpO1xuICAgIHRoaXMubG9hZGVyLnZpZXdzJC5waXBlKHRoaXMuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKHZpZXdzKSA9PiB7XG4gICAgICB0aGlzLnZpZXdOYW1lcyA9IHZpZXdzLm1hcCgodikgPT4gdi5uYW1lKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vKioqKioqKioqKioqKioqKioqIENvbHVtbnMgKioqKioqKioqKioqKioqKioqLy9cbiAgdXBkYXRlQ29sdW1uSXRlbShldmVudDogQVhWYWx1ZUNoYW5nZWRFdmVudCwgY29sTmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKGV2ZW50LmlzVXNlckludGVyYWN0aW9uKSB7XG4gICAgICB0aGlzLmNvbHVtbnMudXBkYXRlKChwcmV2Q29scykgPT5cbiAgICAgICAgcHJldkNvbHMubWFwKChjb2wpID0+IChjb2wubmFtZSA9PT0gY29sTmFtZSA/IHsgLi4uY29sLCB2aXNpYmxlOiBldmVudC52YWx1ZSB9IDogY29sKSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLy8qKioqKioqKioqKioqKioqKiogU29ydHMgKioqKioqKioqKioqKioqKioqLy9cbiAgdXBkYXRlU29ydEl0ZW0oaXRlbTogQVhQRW50aXR5TGlzdFNvcnRDb25maWcpIHtcbiAgICB0aGlzLnNvcnRzLnVwZGF0ZSgocHJldlNvcnRzKSA9PlxuICAgICAgcHJldlNvcnRzLm1hcCgoc29ydCkgPT4gKHNvcnQubmFtZSA9PT0gaXRlbS5uYW1lID8geyAuLi5zb3J0LCBkaXI6IHNvcnQuZGlyID09ICdhc2MnID8gJ2Rlc2MnIDogJ2FzYycgfSA6IHNvcnQpKVxuICAgICk7XG4gIH1cbiAgYWRkU29ydEl0ZW0oKSB7XG4gICAgY29uc3Qgc29ydE5hbWVzID0gdGhpcy5zb3J0cygpLm1hcCgocCkgPT4gcC5uYW1lKTtcbiAgICBjb25zb2xlLmxvZyh0aGlzLnByb3BzKCksIHNvcnROYW1lcyk7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMucHJvcHMoKS5maW5kKChjKSA9PiAhc29ydE5hbWVzLmluY2x1ZGVzKGMubmFtZSkpPy5uYW1lIHx8IHRoaXMucHJvcHMoKVswXS5uYW1lO1xuICAgIHRoaXMuc29ydHMudXBkYXRlKChwcmV2U29ydHMpID0+IFsuLi5wcmV2U29ydHMsIHsgbmFtZSwgZGlyOiAnYXNjJyB9IGFzIEFYUEVudGl0eUxpc3RTb3J0Q29uZmlnXSk7XG4gIH1cblxuICByZW1vdmVTb3J0SXRlbShpdGVtOiBBWFBFbnRpdHlMaXN0U29ydENvbmZpZykge1xuICAgIHRoaXMuc29ydHMudXBkYXRlKChwcmV2U29ydHMpID0+IHByZXZTb3J0cy5maWx0ZXIoKHNvcnQpID0+IGl0ZW0ubmFtZSAhPSBzb3J0Lm5hbWUpKTtcbiAgfVxuXG4gIC8vKioqKioqKioqKioqKioqKioqIENvbmRpdGlvbnMgKioqKioqKioqKioqKioqKioqLy9cbiAgcHJvdGVjdGVkIGdldFNjaGVtYShuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcygpLmZpbmQoKGMpID0+IGMubmFtZSA9PSBuYW1lKT8uc2NoZW1hID8/ICcnO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldE9wZXJhdG9ycyhuYW1lOiBzdHJpbmcpOiBBWFBGaWx0ZXJPcGVyYXRvcltdIHtcbiAgICBjb25zdCBzY2hlbWFOYW1lID0gdGhpcy5wcm9wcygpLmZpbmQoKGMpID0+IGMubmFtZSA9PSBuYW1lKT8uc2NoZW1hID8/ICcnO1xuICAgIHJldHVybiB0aGlzLnNjaGVtYVJlZ2lzdHJ5LnJlc29sdmUoc2NoZW1hTmFtZSk/LmZpbHRlck9wdGlvbnM/Lm9wZXJhdG9ycyA/PyBbXTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXREZWZhdWx0T3BlcmF0b3IobmFtZTogc3RyaW5nKTogQVhQRmlsdGVyT3BlcmF0b3Ige1xuICAgIGNvbnN0IHNjaGVtYU5hbWUgPSB0aGlzLnByb3BzKCkuZmluZCgoYykgPT4gYy5uYW1lID09IG5hbWUpPy5zY2hlbWEgPz8gJyc7XG4gICAgcmV0dXJuIHRoaXMuc2NoZW1hUmVnaXN0cnkucmVzb2x2ZShzY2hlbWFOYW1lKT8uZmlsdGVyT3B0aW9ucz8uZGVmYXVsdCA/PyBFUV9PUEVSO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldE9wZXJhdG9yVGl0bGUoc2NoZW1hTmFtZTogc3RyaW5nLCBvcHJOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldE9wZXJhdG9ycyhzY2hlbWFOYW1lKS5maW5kKChjKSA9PiBjLm5hbWUgPT0gb3ByTmFtZSk/LnRpdGxlIHx8ICcnO1xuICB9XG4gIHByb3RlY3RlZCByZXNldFNlbGVjdGVkRmllbGROYW1lcygpIHtcbiAgICB0aGlzLnNlbGVjdGVkQ29uZGl0aW9uTmFtZXMgPSB0aGlzLmNvbmRpdGlvbnMoKS5tYXAoKGMpID0+IGMubmFtZSk7XG4gIH1cbiAgcHJvdGVjdGVkIGFkZENvbmRpdGlvbigpIHtcbiAgICBjb25zdCBjb25kaXRpb25zID0gdGhpcy5zZWxlY3RlZENvbmRpdGlvbk5hbWVzLm1hcCgoYykgPT4ge1xuICAgICAgY29uc3Qgb3ByID0gdGhpcy5nZXREZWZhdWx0T3BlcmF0b3IoYyk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiBjLFxuICAgICAgICBvcGVyYXRvcjogb3ByLm5hbWUsXG4gICAgICB9O1xuICAgIH0pO1xuICAgIHRoaXMuY29uZGl0aW9ucy5zZXQoY29uZGl0aW9ucyBhcyBhbnkpO1xuICB9XG5cbiAgcmVtb3ZlQ29uZGl0aW9uKGl0ZW06IEFYUEVudGl0eUxpc3RDb25kaXRpb25Db25maWcpIHtcbiAgICB0aGlzLmNvbmRpdGlvbnMudXBkYXRlKChwcmV2Q29uZGl0aW9ucykgPT4gcHJldkNvbmRpdGlvbnMuZmlsdGVyKChjb24pID0+IGNvbi5uYW1lICE9IGl0ZW0ubmFtZSkpO1xuICB9XG5cbiAgLy8qKioqKioqKioqKioqKioqKiogQ29tbW9uICoqKioqKioqKioqKioqKioqKi8vXG4gIHByb3RlY3RlZCBkcm9wKHR5cGU6ICdjb2x1bW5zJyB8ICdjb25kaXRpb25zJyB8ICdzb3J0cycsIGV2ZW50OiBDZGtEcmFnRHJvcDx1bmtub3duW10+KSB7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlICdjb2x1bW5zJzpcbiAgICAgICAgdGhpcy5jb2x1bW5zLnVwZGF0ZSgocHJldkNvbHMpID0+IHtcbiAgICAgICAgICBjb25zdCBjb2x1bW5zID0gcHJldkNvbHM7XG4gICAgICAgICAgbW92ZUl0ZW1JbkFycmF5KGNvbHVtbnMsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgICAgICAgcmV0dXJuIGNvbHVtbnM7XG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NvcnRzJzpcbiAgICAgICAgdGhpcy5zb3J0cy51cGRhdGUoKHByZXZTb3J0cykgPT4ge1xuICAgICAgICAgIGNvbnN0IHNvcnRzID0gcHJldlNvcnRzO1xuICAgICAgICAgIG1vdmVJdGVtSW5BcnJheShzb3J0cywgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICAgICAgICByZXR1cm4gc29ydHM7XG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NvbmRpdGlvbnMnOlxuICAgICAgICB0aGlzLmNvbmRpdGlvbnMudXBkYXRlKChwcmV2Q29uZGl0aW9ucykgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvbmRpdGlvbnMgPSBwcmV2Q29uZGl0aW9ucztcbiAgICAgICAgICBtb3ZlSXRlbUluQXJyYXkoY29uZGl0aW9ucywgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICAgICAgICByZXR1cm4gY29uZGl0aW9ucztcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlVmlld05hbWVUb2dnbGUoKSB7XG4gICAgdGhpcy5zaG93TmFtZUlucHV0LnVwZGF0ZSgocHJldikgPT4gIXByZXYpO1xuICB9XG5cbiAgZ2VuZXJhdGVWaWV3TmFtZSh0aXRsZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRpdGxlLnJlcGxhY2UoL1xccysvZywgJy0nKS50b0xvd2VyQ2FzZSgpO1xuICB9XG5cbiAgaGFuZGxlQXBwbHlDbGljaygpIHtcbiAgICBjb25zdCB1cGRhdGVkVmlldyA9IHtcbiAgICAgIC4uLnRoaXMuc2VsZWN0ZWRWaWV3LFxuICAgICAgbmFtZTogdGhpcy5nZW5lcmF0ZVZpZXdOYW1lKHRoaXMuc2VsZWN0ZWRWaWV3LnRpdGxlKSxcbiAgICAgIGNvbmRpdGlvbnM6IHRoaXMuY29uZGl0aW9ucygpLFxuICAgICAgY29sdW1uczogdGhpcy5jb2x1bW5zKCksXG4gICAgICBzb3J0czogdGhpcy5zb3J0cygpLFxuICAgIH07XG4gICAgaWYgKHRoaXMudmlld05hbWVzLmluY2x1ZGVzKHVwZGF0ZWRWaWV3Lm5hbWUpICYmIHRoaXMubW9kZSA9PSAnY3JlYXRlJykge1xuICAgICAgdGhpcy50b2FzdFNlcnZpY2Uuc2hvdyh7XG4gICAgICAgIHRpdGxlOiAnSW52YWxpZCBUaXRsZScsXG4gICAgICAgIGNvbnRlbnQ6ICdUaGUgdGl0bGUgeW91IGhhdmUgY2hvc2VuIGFscmVhZHkgZXhpc3RzLiBQbGVhc2UgY2hvb3NlIGEgZGlmZmVyZW50IHRpdGxlIGZvciB5b3VyIGN1c3RvbSB2aWV3LicsXG4gICAgICAgIGNvbG9yOiAnZGFuZ2VyJyBhcyBBWFN0eWxlQ29sb3JUeXBlLFxuICAgICAgICBsb2NhdGlvbjogJ2JvdHRvbS1jZW50ZXInIGFzIEFYTG9jYXRpb24sXG4gICAgICAgIGNsb3NlQnV0dG9uOiB0cnVlLFxuICAgICAgICB0aW1lT3V0OiAzMDAwLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2xvc2UoeyBzYXZlOiB0cnVlLCB1cGRhdGVkVmlldyB9KTtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVSZXNldENsaWNrKCkge1xuICAgIHRoaXMuY29uZGl0aW9ucy5zZXQoY2xvbmVEZWVwKHRoaXMuc2VsZWN0ZWRWaWV3LmNvbmRpdGlvbnMpKTtcbiAgICB0aGlzLmNvbHVtbnMuc2V0KGNsb25lRGVlcCh0aGlzLnNlbGVjdGVkVmlldy5jb2x1bW5zKSk7XG4gICAgdGhpcy5zb3J0cy5zZXQoY2xvbmVEZWVwKHRoaXMuc2VsZWN0ZWRWaWV3LnNvcnRzKSk7XG4gIH1cbiAgaGFuZGxlRGlzY2FyZENsaWNrKCkge1xuICAgIHRoaXMuY2xvc2UoeyBzYXZlOiBmYWxzZSB9KTtcbiAgfVxuICBoYW5kbGVDYW5jZWxDbGljaygpIHtcbiAgICB0aGlzLmNsb3NlKHsgc2F2ZTogZmFsc2UgfSk7XG4gIH1cbiAgaGFuZGxlRGVsZXRlQ2xpY2soKSB7XG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlXG4gICAgICAuY29uZmlybSgnV2FybmluZycsICdBcmUgeW91IHN1cmUgd2FudCB0byBkZWxldGUgdGhpcyB2aWV3PycsICdkYW5nZXInLCAnaG9yaXpvbnRhbCcpXG4gICAgICAudGhlbigoZGF0YSkgPT4ge1xuICAgICAgICBpZiAoZGF0YS5yZXN1bHQpIHtcbiAgICAgICAgICB0aGlzLmNsb3NlKHsgZGVsZXRlOiB0cnVlLCB2aWV3TmFtZTogdGhpcy5zZWxlY3RlZFZpZXcubmFtZSB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cbn1cbiIsIjxheC1oZWFkZXIgY2xhc3M9XCJheC1wLTQgYXgtZmxleCBheC1qdXN0aWZ5LWJldHdlZW4gYXgtYm9yZGVyLWJcIj5cbiAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyXCI+XG4gICAgQGlmIChzaG93TmFtZUlucHV0KCkgJiYgbW9kZT09PSdjcmVhdGUnKSB7XG4gICAgPGRpdiBjbGFzcz1cImF4LXctNjBcIj5cbiAgICAgIDxheC10ZXh0LWJveCBjbGFzcz1cImF4LXNtXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFZpZXcudGl0bGVcIj5cbiAgICAgICAgQGlmKHNob3dOYW1lSW5wdXQoKSl7XG4gICAgICAgIDxheC1zdWZmaXg+XG4gICAgICAgICAgPGF4LWJ1dHRvbiAob25DbGljayk9XCJjaGFuZ2VWaWV3TmFtZVRvZ2dsZSgpXCIgbG9vaz1cImRlZmF1bHRcIj5cbiAgICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtc29kaWxkIGZhcyBmYS1jaGVjayBheC10ZXh0LXNtXCI+IDwvYXgtaWNvbj5cbiAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgPC9heC1zdWZmaXg+XG4gICAgICAgIH1cbiAgICAgIDwvYXgtdGV4dC1ib3g+XG4gICAgPC9kaXY+XG4gICAgfUBlbHNlIHtcbiAgICA8c3BhbiBjbGFzcz1cImF4LXRleHQtbGcgYXgtZm9udC1zZW1pYm9sZFwiPnt7IHNlbGVjdGVkVmlldy50aXRsZSB9fTwvc3Bhbj5cbiAgICB9IEBpZiAobW9kZT09PVwiY3JlYXRlXCIpIHtcbiAgICA8YXgtYnV0dG9uIGNsYXNzPVwiYXgteHNcIiAob25DbGljayk9XCJjaGFuZ2VWaWV3TmFtZVRvZ2dsZSgpXCIgY29sb3I9XCJkZWZhdWx0XCI+XG4gICAgICBAaWYoIXNob3dOYW1lSW5wdXQoKSApe1xuICAgICAgPGF4LWljb24gY2xhc3M9XCJmYS1yZWd1bGFyIGZhLXBlbiBheC10ZXh0LXNtIGF4LXRleHQtbmV1dHJhbC02MDBcIj4gPC9heC1pY29uPlxuICAgICAgfVxuICAgIDwvYXgtYnV0dG9uPlxuICAgIH1cbiAgPC9kaXY+XG4gIDxheC1jbG9zZS1idXR0b24+PC9heC1jbG9zZS1idXR0b24+XG48L2F4LWhlYWRlcj5cbjxkaXYgY2xhc3M9XCJheC1wLTRcIj5cbiAgPGF4LXRhYnMgW2NvbnRlbnRdPVwiY29udGVudHNcIiBsb29rPVwid2l0aC1saW5lXCI+XG4gICAgPGF4LXRhYi1pdGVtIHRleHQ9XCJDb2x1bW5zXCI+XG4gICAgICA8YXgtc3VmZml4PlxuICAgICAgICA8YXgtYmFkZ2UgW3RleHRdPVwidmlzaWJsZUNvbHVtbnMoKS5sZW5ndGgudG9TdHJpbmcoKVwiIGNvbG9yPVwicHJpbWFyeVwiPiA8L2F4LWJhZGdlPlxuICAgICAgPC9heC1zdWZmaXg+XG4gICAgICA8YXgtY29udGVudD5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtNCBheC1wLTQgYXgtc2VsZWN0LW5vbmUgYXgtaC1bNDAwcHhdXCJcbiAgICAgICAgICBjZGtEcm9wTGlzdFxuICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgnY29sdW1ucycsICRldmVudClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZmxleC1jb2wgYXgtZ2FwLTMgYXgtdy1mdWxsIGF4LXNvcnRlZC1saXN0IGF4LW92ZXJmbG93LWF1dG8gYXgtcGUtMlwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjb2x1bW5zKClcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtcHktMSBheC1pdGVtcy1jZW50ZXIgYXgtanVzdGlmeS1iZXR3ZWVuXCIgY2RrRHJhZyBjZGtEcmFnQm91bmRhcnk9XCIuYXgtc29ydGVkLWxpc3RcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtZ2FwLTNcIiBjZGtEcmFnSGFuZGxlPlxuICAgICAgICAgICAgICAgICAgPGF4LWljb24gY2xhc3M9XCJmYS1zb2xpZCBmYS1ncmlwLWRvdHMtdmVydGljYWwgYXgtY3Vyc29yLW1vdmVcIj48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImF4LWZvbnQtbWVkaXVtIGF4LXRleHQtc21cIj57eyBpdGVtLnRpdGxlIH19PC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxheC1zd2l0Y2hcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtc21cIlxuICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJpdGVtLnZpc2libGVcIlxuICAgICAgICAgICAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cInVwZGF0ZUNvbHVtbkl0ZW0oJGV2ZW50LCBpdGVtLm5hbWUpXCJcbiAgICAgICAgICAgICAgICA+PC9heC1zd2l0Y2g+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9heC1jb250ZW50PlxuICAgIDwvYXgtdGFiLWl0ZW0+XG4gICAgPGF4LXRhYi1pdGVtIHRleHQ9XCJDb25kaXRpb25zXCI+XG4gICAgICA8YXgtc3VmZml4PlxuICAgICAgICA8YXgtYmFkZ2UgW3RleHRdPVwiY29uZGl0aW9ucygpLmxlbmd0aC50b1N0cmluZygpXCIgY29sb3I9XCJwcmltYXJ5XCI+IDwvYXgtYmFkZ2U+XG4gICAgICA8L2F4LXN1ZmZpeD5cbiAgICAgIDxheC1jb250ZW50PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWp1c3RpZnktc3RhcnQgYXgtZ2FwLTQgYXgtcHktNCBheC1zZWxlY3Qtbm9uZSBheC1oLVs0MDBweF1cIlxuICAgICAgICAgIFtjbGFzcy5heC1qdXN0aWZ5LWNlbnRlcl09XCIhY29uZGl0aW9ucygpLmxlbmd0aFwiXG4gICAgICAgID5cbiAgICAgICAgICBAaWYoIWNvbmRpdGlvbnMoKS5sZW5ndGgpe1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgPGF4LWltYWdlIHNyYz1cImFzc2V0cy9kb2N1bWVudHMuc3ZnXCI+PC9heC1pbWFnZT5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwiYXgtbXQtNiBheC1tYi0xIGF4LWZvbnQtYm9sZFwiPk5vIEZpbHRlcnMgU2VsZWN0ZWQ8L3A+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LXRleHQtbmV1dHJhbC00MDAgYXgtdGV4dC1zbSBtZDpheC10ZXh0LW1kXCJcbiAgICAgICAgICAgICAgPlBsZWFzZSBzZWxlY3QgZmllbGQocykgdGhhdCB5b3Ugd2FudCB0byBmaWx0ZXI8L3NwYW5cbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtc29ydGVkLWxpc3QgYXgtcHgtNCBheC1weS0xIGF4LW92ZXJmbG93LWF1dG9cIj5cbiAgICAgICAgICAgIDxkaXYgY2RrRHJvcExpc3QgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wKCdjb25kaXRpb25zJywgJGV2ZW50KVwiIGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtMlwiPlxuICAgICAgICAgICAgICBAZm9yKGl0ZW0gb2YgY29uZGl0aW9ucygpOyB0cmFjayBpdGVtLm5hbWUgKXtcbiAgICAgICAgICAgICAgPGRpdiBjZGtEcmFnIGNka0RyYWdCb3VuZGFyeT1cIi5heC1zb3J0ZWQtbGlzdFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1tcy00IGF4LWZsZXggYXgtaXRlbXMtc3RhcnQgYXgtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgIDxheC1sYWJlbD57eyBsb2FkZXIuZ2V0UHJvcChpdGVtLm5hbWUpPy50aXRsZSB9fTwvYXgtbGFiZWw+XG4gICAgICAgICAgICAgICAgICBAaWYoZ2V0T3BlcmF0b3JUaXRsZShpdGVtLm5hbWUsaXRlbS5vcGVyYXRvcikpe1xuICAgICAgICAgICAgICAgICAgPGF4LWJhZGdlXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtdGV4dC14c1wiXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgIFtsb29rXT1cIid0d290b25lJ1wiXG4gICAgICAgICAgICAgICAgICAgIFt0ZXh0XT1cImdldE9wZXJhdG9yVGl0bGUoaXRlbS5uYW1lLCBpdGVtLm9wZXJhdG9yKVwiXG4gICAgICAgICAgICAgICAgICA+PC9heC1iYWRnZT5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1ncm91cCBheC1pdGVtcy1jZW50ZXIgYXgtZ2FwLTJcIj5cbiAgICAgICAgICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtc29saWQgZmEtZ3JpcC1kb3RzLXZlcnRpY2FsIGF4LWN1cnNvci1tb3ZlXCIgY2RrRHJhZ0hhbmRsZT48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtdy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgIDxheHAtd2lkZ2V0LWZpbHRlci1yZW5kZXJlclxuICAgICAgICAgICAgICAgICAgICAgIFtzY2hlbWFdPVwiZ2V0U2NoZW1hKGl0ZW0ubmFtZSlcIlxuICAgICAgICAgICAgICAgICAgICAgIFtwcm9wXT1cImxvYWRlci5nZXRQcm9wKGl0ZW0ubmFtZSlcIlxuICAgICAgICAgICAgICAgICAgICAgIFsodmFsdWUpXT1cIml0ZW0udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgIFsob3BlcmF0b3IpXT1cIml0ZW0ub3BlcmF0b3JcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvYXhwLXdpZGdldC1maWx0ZXItcmVuZGVyZXI+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxheC1idXR0b24gbG9vaz1cImJsYW5rXCIgY29sb3I9XCJkYW5nZXJcIiBjbGFzcz1cImF4LXNtXCIgKG9uQ2xpY2spPVwicmVtb3ZlQ29uZGl0aW9uKGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtc29saWQgZmEtdHJhc2gtY2FuXCI+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgICAgPC9heC1idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZ2FwLTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC13LWZ1bGxcIiAjYWRkRmllbGQ+XG4gICAgICAgICAgICAgIEBpZihjb25kaXRpb25zKCkubGVuZ3RoKXtcbiAgICAgICAgICAgICAgPGF4LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiB0ZXh0PVwiQWRkIGZpZWxkXCIgbG9vaz1cImJsYW5rXCIgY2xhc3M9XCJheC1zbVwiPjwvYXgtYnV0dG9uPlxuICAgICAgICAgICAgICB9QGVsc2Uge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1qdXN0aWZ5LWNlbnRlciBheC13LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICA8YXgtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIHRleHQ9XCJBZGQgZmllbGRcIiBsb29rPVwib3V0bGluZVwiIGNsYXNzPVwiYXgtbWQgYXgtdy01NlwiPjwvYXgtYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA8YXgtcG9wb3ZlclxuICAgICAgICAgICAgICAgICNjb25kaXRpb25zUG9wb3ZlclxuICAgICAgICAgICAgICAgIFt0YXJnZXRdPVwiYWRkRmllbGRcIlxuICAgICAgICAgICAgICAgIFtwbGFjZW1lbnRdPVwiY29uZGl0aW9ucygpLmxlbmd0aCA/ICdib3R0b20tc3RhcnQnIDogJ2JvdHRvbSdcIlxuICAgICAgICAgICAgICAgIFtvZmZzZXRZXT1cIjhcIlxuICAgICAgICAgICAgICAgIFtvcGVuT25dPVwiJ3RvZ2dsZSdcIlxuICAgICAgICAgICAgICAgIFtjbG9zZU9uXT1cIidjbGlja091dCdcIlxuICAgICAgICAgICAgICAgIFthZGFwdGl2aXR5RW5hYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAob25PcGVuZWQpPVwicmVzZXRTZWxlY3RlZEZpZWxkTmFtZXMoKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImF4LWJnLXN1cmZhY2UgYXgtYm9yZGVyIGF4LWJvcmRlci1kZWZhdWx0IGF4LXJvdW5kZWQtbWQgYXgtc2hhZG93LW1kIGF4LXctZnVsbCBheC1taW4tdy1bMjUwcHhdXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtYm9yZGVyLWItWzFweF0gYXgtcGItMiBheC1tYi0yIGF4LXAtM1wiPlxuICAgICAgICAgICAgICAgICAgICA8YXgtdGl0bGUgY2xhc3M9XCJheC1mb250LWJvbGRcIj5GaWVsZHM8L2F4LXRpdGxlPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtbWF4LWgtNDggYXgtb3ZlcmZsb3ctYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgICA8YXgtc2VsZWN0aW9uLWxpc3RcbiAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVGaWVsZF09XCInbmFtZSdcIlxuICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0RmllbGRdPVwiJ3RpdGxlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZENvbmRpdGlvbk5hbWVzXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlyZWN0aW9uXT1cIid2ZXJ0aWNhbCdcIlxuICAgICAgICAgICAgICAgICAgICAgIFtpdGVtc109XCJwcm9wcygpXCJcbiAgICAgICAgICAgICAgICAgICAgICBbbXVsdGlwbGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgID48L2F4LXNlbGVjdGlvbi1saXN0PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1qdXN0aWZ5LWVuZCBheC1ib3JkZXItdC1bMXB4XSBheC1wLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgPGF4LWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImFkZENvbmRpdGlvbigpOyBjb25kaXRpb25zUG9wb3Zlci5jbG9zZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImF4LXNtXCJcbiAgICAgICAgICAgICAgICAgICAgICB0ZXh0PVwiQ29uZmlybVwiXG4gICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2F4LXBvcG92ZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2F4LWNvbnRlbnQ+XG4gICAgPC9heC10YWItaXRlbT5cbiAgICA8YXgtdGFiLWl0ZW0gdGV4dD1cIlNvcnRpbmdcIj5cbiAgICAgIDxheC1zdWZmaXg+XG4gICAgICAgIDxheC1iYWRnZSBbdGV4dF09XCJzb3J0cygpLmxlbmd0aC50b1N0cmluZygpXCIgY29sb3I9XCJwcmltYXJ5XCI+IDwvYXgtYmFkZ2U+XG4gICAgICA8L2F4LXN1ZmZpeD5cbiAgICAgIDxheC1jb250ZW50PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJheC1mbGV4IGF4LXAtNCBheC1mbGV4LWNvbCBheC1qdXN0aWZ5LXN0YXJ0IGF4LWdhcC00IGF4LXNlbGVjdC1ub25lIGF4LW92ZXJmbG93LWF1dG8gYXgtaC1bNDAwcHhdXCJcbiAgICAgICAgICBbY2xhc3MuYXgtanVzdGlmeS1jZW50ZXJdPVwiIXNvcnRzKCkubGVuZ3RoXCJcbiAgICAgICAgPlxuICAgICAgICAgIEBpZighc29ydHMoKS5sZW5ndGgpe1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWZsZXgtY29sIGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgPGF4LWltYWdlIHNyYz1cImFzc2V0cy9kb2N1bWVudHMuc3ZnXCI+PC9heC1pbWFnZT5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwiYXgtbXQtNiBheC1tYi0xIGF4LWZvbnQtYm9sZFwiPk5vIFNvcnRzIFNlbGVjdGVkPC9wPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC10ZXh0LW5ldXRyYWwtNDAwIGF4LXRleHQtc20gbWQ6YXgtdGV4dC1tZFwiXG4gICAgICAgICAgICAgID5QbGVhc2Ugc2VsZWN0IGZpZWxkKHMpIHRoYXQgeW91IHdhbnQgdG8gc29ydDwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1AZWxzZSB7XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2RrRHJvcExpc3RcbiAgICAgICAgICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgnc29ydHMnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtMyBheC13LWZ1bGwgYXgtc29ydGVkLWxpc3QgYXgtcHktMSBheC1vdmVyZmxvdy1hdXRvXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNvcnRzKClcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LWZsZXggYXgtZ2FwLTIgYXgtaXRlbXMtY2VudGVyXCIgY2RrRHJhZyBjZGtEcmFnQm91bmRhcnk9XCIuYXgtc29ydGVkLWxpc3RcIj5cbiAgICAgICAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImZhLXNvbGlkIGZhLWdyaXAtZG90cy12ZXJ0aWNhbCBheC1jdXJzb3ItbW92ZVwiIGNka0RyYWdIYW5kbGU+PC9heC1pY29uPlxuICAgICAgICAgICAgICAgIDxheC1zZWxlY3QtYm94IFtkYXRhU291cmNlXT1cInByb3BzKClcIiB2YWx1ZUZpZWxkPVwibmFtZVwiIHRleHRGaWVsZD1cInRpdGxlXCIgWyhuZ01vZGVsKV09XCJpdGVtLm5hbWVcIj5cbiAgICAgICAgICAgICAgICA8L2F4LXNlbGVjdC1ib3g+XG4gICAgICAgICAgICAgICAgPGF4LWJ1dHRvbiBbY29sb3JdPVwiJ2RlZmF1bHQnXCIgY2xhc3M9XCJheC1zbVwiIChjbGljayk9XCJ1cGRhdGVTb3J0SXRlbShpdGVtKVwiPlxuICAgICAgICAgICAgICAgICAgPGF4LWljb25cbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmF4LXRleHQtcHJpbWFyeV09XCJpdGVtLmRpciA9PSAnYXNjJ1wiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEtc29saWQgZmEtYXJyb3ctdXAtbG9uZyBheC10ZXh0LW5ldXRyYWwtNDAwXCJcbiAgICAgICAgICAgICAgICAgID48L2F4LWljb24+XG4gICAgICAgICAgICAgICAgICA8YXgtaWNvblxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYXgtdGV4dC1wcmltYXJ5XT1cIml0ZW0uZGlyID09ICdkZXNjJ1wiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEtc29saWQgZmEtYXJyb3ctZG93bi1sb25nIGF4LXRleHQtbmV1dHJhbC00MDBcIlxuICAgICAgICAgICAgICAgICAgPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbj5cblxuICAgICAgICAgICAgICAgIDxheC1idXR0b24gbG9vaz1cImJsYW5rXCIgKG9uQ2xpY2spPVwicmVtb3ZlU29ydEl0ZW0oaXRlbSlcIj5cbiAgICAgICAgICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtc29saWQgZmEtdHJhc2gtY2FuIGF4LXRleHQtZGFuZ2VyLTUwMFwiPjwvYXgtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2F4LWJ1dHRvbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1nYXAtMlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXctZnVsbFwiICNhZGRGaWVsZD5cbiAgICAgICAgICAgICAgQGlmKHNvcnRzKCkubGVuZ3RoKXtcbiAgICAgICAgICAgICAgPGF4LWJ1dHRvblxuICAgICAgICAgICAgICAgIChvbkNsaWNrKT1cImFkZFNvcnRJdGVtKClcIlxuICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgdGV4dD1cIkFkZCBmaWVsZFwiXG4gICAgICAgICAgICAgICAgbG9vaz1cImJsYW5rXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImF4LXNtXCJcbiAgICAgICAgICAgICAgPjwvYXgtYnV0dG9uPlxuICAgICAgICAgICAgICB9QGVsc2Uge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1qdXN0aWZ5LWNlbnRlciBheC13LWZ1bGxcIj5cbiAgICAgICAgICAgICAgICA8YXgtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAob25DbGljayk9XCJhZGRTb3J0SXRlbSgpXCJcbiAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICB0ZXh0PVwiQWRkIGZpZWxkXCJcbiAgICAgICAgICAgICAgICAgIGxvb2s9XCJvdXRsaW5lXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYXgtbWQgYXgtdy01NlwiXG4gICAgICAgICAgICAgICAgPjwvYXgtYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9heC1jb250ZW50PlxuICAgIDwvYXgtdGFiLWl0ZW0+XG4gIDwvYXgtdGFicz5cbiAgPG5nLXRlbXBsYXRlIFtheFRhYkNvbnRlbnRdICNjb250ZW50cz1cImF4VGFiQ29udGVudFwiPiA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG48YXgtZm9vdGVyIGNsYXNzPVwiIWF4LWp1c3RpZnktZW5kXCI+XG4gIEBpZiAobW9kZT09PVwiZWRpdFwiKSB7XG4gIDxheC1kcm9wZG93bi1idXR0b24gdGV4dD1cIkRpc2NhcmRcIiAob25DbGljayk9XCJoYW5kbGVEaXNjYXJkQ2xpY2soKVwiPlxuICAgIDxheC1idXR0b24taXRlbS1saXN0PlxuICAgICAgPGF4LWJ1dHRvbi1pdGVtIHRleHQ9XCJSZXNldFwiIChvbkNsaWNrKT1cImhhbmRsZVJlc2V0Q2xpY2soKVwiPlxuICAgICAgICA8YXgtcHJlZml4PlxuICAgICAgICAgIDxheC1pY29uIGljb249XCJmYS1zb2xpZCBmYS1yb3RhdGUtbGVmdCBmYS1mbGlwLWhvcml6b250YWxcIj48L2F4LWljb24+XG4gICAgICAgIDwvYXgtcHJlZml4PlxuICAgICAgPC9heC1idXR0b24taXRlbT5cbiAgICAgIDxheC1idXR0b24taXRlbSBjbGFzcz1cImF4LXRleHQtZGFuZ2VyXCIgdGV4dD1cIkRlbGV0ZVwiIChvbkNsaWNrKT1cImhhbmRsZURlbGV0ZUNsaWNrKClcIj5cbiAgICAgICAgPGF4LXByZWZpeD4gPGF4LWljb24gaWNvbj1cImZhcyBmYS10cmFzaCBmYS1mbGlwLWhvcml6b250YWxcIj48L2F4LWljb24+IDwvYXgtcHJlZml4XG4gICAgICA+PC9heC1idXR0b24taXRlbT5cbiAgICA8L2F4LWJ1dHRvbi1pdGVtLWxpc3Q+XG4gIDwvYXgtZHJvcGRvd24tYnV0dG9uPlxuICB9IEBlbHNlIHtcbiAgPGF4LWJ1dHRvbiB0ZXh0PVwiQ2FuY2VsXCIgbG9vaz1cIm91dGxpbmVcIiAob25DbGljayk9XCJoYW5kbGVDYW5jZWxDbGljaygpXCI+PC9heC1idXR0b24+XG4gIH1cbiAgPGF4LWJ1dHRvblxuICAgIFt0ZXh0XT1cIm1vZGUgPT09ICdjcmVhdGUnID8gJ1NhdmUnIDogJ1NhdmUgQ2hhbmdlcydcIlxuICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgKG9uQ2xpY2spPVwiaGFuZGxlQXBwbHlDbGljaygpXCJcbiAgPjwvYXgtYnV0dG9uPlxuPC9heC1mb290ZXI+XG4iXX0=
@@ -0,0 +1,6 @@
1
+ export * from './entity-custom-view/entity-custom-view.component';
2
+ export * from './list-view-option-columns/list-view-option-columns.component';
3
+ export * from './list-view-option-conditions/list-view-option-conditions.component';
4
+ export * from './list-view-option-conditions/list-view-option-filter-operator.component';
5
+ export * from './list-view-option-sorting/list-view-option-sorting.component';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3BsYXRmb3JtL2xheW91dHMvc3JjL2xpYi9hZG1pbi9lbnRpdHktbGF5b3V0L2VudGl0eS1saXN0LXZpZXcvY29tcG9uZW50cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1EQUFtRCxDQUFDO0FBQ2xFLGNBQWMsK0RBQStELENBQUM7QUFDOUUsY0FBYyxxRUFBcUUsQ0FBQztBQUNwRixjQUFjLDBFQUEwRSxDQUFDO0FBQ3pGLGNBQWMsK0RBQStELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2VudGl0eS1jdXN0b20tdmlldy9lbnRpdHktY3VzdG9tLXZpZXcuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGlzdC12aWV3LW9wdGlvbi1jb2x1bW5zL2xpc3Qtdmlldy1vcHRpb24tY29sdW1ucy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saXN0LXZpZXctb3B0aW9uLWNvbmRpdGlvbnMvbGlzdC12aWV3LW9wdGlvbi1jb25kaXRpb25zLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpc3Qtdmlldy1vcHRpb24tY29uZGl0aW9ucy9saXN0LXZpZXctb3B0aW9uLWZpbHRlci1vcGVyYXRvci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saXN0LXZpZXctb3B0aW9uLXNvcnRpbmcvbGlzdC12aWV3LW9wdGlvbi1zb3J0aW5nLmNvbXBvbmVudCc7XG4iXX0=
@@ -0,0 +1,56 @@
1
+ import { moveItemInArray } from '@angular/cdk/drag-drop';
2
+ import { Component, EventEmitter, Input, Output, inject } from '@angular/core';
3
+ import { Store } from '@ngrx/store';
4
+ import { first, of } from 'rxjs';
5
+ import { isSmallScreen } from '../../../../store';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common";
8
+ import * as i2 from "@angular/forms";
9
+ import * as i3 from "@acorex/components/button";
10
+ import * as i4 from "@acorex/components/decorators";
11
+ import * as i5 from "@acorex/components/switch";
12
+ import * as i6 from "@angular/cdk/drag-drop";
13
+ export class AXPListViewOptionsColumnsComponent {
14
+ constructor() {
15
+ this.store = inject((Store));
16
+ this.isSM = this.store.select(isSmallScreen());
17
+ this.columns$ = of([]);
18
+ this.onClosed = new EventEmitter();
19
+ }
20
+ ngOnInit() {
21
+ this.columns$ = this.loader.displayColumns$;
22
+ }
23
+ handleVisibilityChange(e, name) {
24
+ if (e.isUserInteraction) {
25
+ this.loader.setColumnVisibility(name, e.value);
26
+ }
27
+ }
28
+ drop(event) {
29
+ this.columns$.pipe(first()).subscribe((columns) => {
30
+ moveItemInArray(columns, event.previousIndex, event.currentIndex);
31
+ });
32
+ }
33
+ handleClose() {
34
+ this.onClosed.emit();
35
+ }
36
+ handleResetClick() {
37
+ this.loader.resetColumns();
38
+ }
39
+ handleApplyClick() {
40
+ this.columns$.pipe(first()).subscribe((data) => {
41
+ this.loader.updateColumns(data);
42
+ });
43
+ this.onClosed.emit();
44
+ }
45
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXPListViewOptionsColumnsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
46
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: AXPListViewOptionsColumnsComponent, selector: "axp-list-view-option-columns", inputs: { loader: "loader" }, outputs: { onClosed: "onClosed" }, ngImport: i0, template: "<ax-header class=\"ax-flex ax-items-center\">\n <h2 class=\"ax-text-xl ax-font-bold\">Columns</h2>\n <ax-button (onClick)=\"handleClose()\" [look]=\"'blank'\">\n <ax-icon class=\"fa-solid fa-close ax-text-neutral-400 ax-text-xl\"> </ax-icon>\n </ax-button>\n</ax-header>\n<div class=\"ax-flex ax-flex-col ax-gap-4 ax-p-4 ax-select-none\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\n <div class=\"ax-flex ax-flex-col ax-gap-3 ax-w-full ax-sorted-list ax-max-h-[calc(100vh-280px)] ax-overflow-auto\">\n <ng-container *ngFor=\"let item of columns$ | async\">\n <div class=\"ax-flex ax-py-1 ax-items-center ax-justify-between\" cdkDrag cdkDragBoundary=\".ax-sorted-list\">\n <div class=\"ax-flex ax-items-center ax-gap-3\" cdkDragHandle>\n <ax-icon class=\"fa-solid fa-grip-dots-vertical ax-cursor-move\"></ax-icon>\n <p class=\"ax-font-medium ax-text-sm\">{{ item.title }}</p>\n </div>\n <ax-switch\n class=\"ax-sm\"\n [ngModel]=\"item.visible\"\n (onValueChanged)=\"handleVisibilityChange($event, item.name)\"\n ></ax-switch>\n </div>\n </ng-container>\n </div>\n</div>\n<ax-footer class=\"!ax-justify-start ax-absolute ax-bottom-0 ax-w-full\">\n <ax-button text=\"Apply\" color=\"primary\" (onClick)=\"handleApplyClick()\"></ax-button>\n <ax-button text=\"Reset\" color=\"ghost\" (onClick)=\"handleResetClick()\"></ax-button>\n</ax-footer>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange"] }, { kind: "component", type: i4.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i4.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: "component", type: i5.AXSwitchComponent, selector: "ax-switch", inputs: ["disabled", "readonly", "color", "tabIndex", "value", "name", "isLoading"], outputs: ["onBlur", "onFocus", "valueChange", "onValueChanged", "readonlyChange", "disabledChange"] }, { kind: "directive", type: i6.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i6.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i6.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] }); }
47
+ }
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: AXPListViewOptionsColumnsComponent, decorators: [{
49
+ type: Component,
50
+ args: [{ selector: 'axp-list-view-option-columns', template: "<ax-header class=\"ax-flex ax-items-center\">\n <h2 class=\"ax-text-xl ax-font-bold\">Columns</h2>\n <ax-button (onClick)=\"handleClose()\" [look]=\"'blank'\">\n <ax-icon class=\"fa-solid fa-close ax-text-neutral-400 ax-text-xl\"> </ax-icon>\n </ax-button>\n</ax-header>\n<div class=\"ax-flex ax-flex-col ax-gap-4 ax-p-4 ax-select-none\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\n <div class=\"ax-flex ax-flex-col ax-gap-3 ax-w-full ax-sorted-list ax-max-h-[calc(100vh-280px)] ax-overflow-auto\">\n <ng-container *ngFor=\"let item of columns$ | async\">\n <div class=\"ax-flex ax-py-1 ax-items-center ax-justify-between\" cdkDrag cdkDragBoundary=\".ax-sorted-list\">\n <div class=\"ax-flex ax-items-center ax-gap-3\" cdkDragHandle>\n <ax-icon class=\"fa-solid fa-grip-dots-vertical ax-cursor-move\"></ax-icon>\n <p class=\"ax-font-medium ax-text-sm\">{{ item.title }}</p>\n </div>\n <ax-switch\n class=\"ax-sm\"\n [ngModel]=\"item.visible\"\n (onValueChanged)=\"handleVisibilityChange($event, item.name)\"\n ></ax-switch>\n </div>\n </ng-container>\n </div>\n</div>\n<ax-footer class=\"!ax-justify-start ax-absolute ax-bottom-0 ax-w-full\">\n <ax-button text=\"Apply\" color=\"primary\" (onClick)=\"handleApplyClick()\"></ax-button>\n <ax-button text=\"Reset\" color=\"ghost\" (onClick)=\"handleResetClick()\"></ax-button>\n</ax-footer>\n" }]
51
+ }], propDecorators: { loader: [{
52
+ type: Input
53
+ }], onClosed: [{
54
+ type: Output
55
+ }] } });
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC12aWV3LW9wdGlvbi1jb2x1bW5zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcGxhdGZvcm0vbGF5b3V0cy9zcmMvbGliL2FkbWluL2VudGl0eS1sYXlvdXQvZW50aXR5LWxpc3Qtdmlldy9jb21wb25lbnRzL2xpc3Qtdmlldy1vcHRpb24tY29sdW1ucy9saXN0LXZpZXctb3B0aW9uLWNvbHVtbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wbGF0Zm9ybS9sYXlvdXRzL3NyYy9saWIvYWRtaW4vZW50aXR5LWxheW91dC9lbnRpdHktbGlzdC12aWV3L2NvbXBvbmVudHMvbGlzdC12aWV3LW9wdGlvbi1jb2x1bW5zL2xpc3Qtdmlldy1vcHRpb24tY29sdW1ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQWUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNwQyxPQUFPLEVBQWMsS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUU3QyxPQUFPLEVBQXVCLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7OztBQU92RSxNQUFNLE9BQU8sa0NBQWtDO0lBSi9DO1FBS1UsVUFBSyxHQUFHLE1BQU0sQ0FBQyxDQUFBLEtBQTBCLENBQUEsQ0FBQyxDQUFDO1FBSXpDLFNBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLGFBQVEsR0FBbUQsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBR3JFLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0tBK0I1QztJQTdCQyxRQUFRO1FBQ04sSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQztJQUM5QyxDQUFDO0lBRUQsc0JBQXNCLENBQUMsQ0FBK0IsRUFBRSxJQUFZO1FBQ2xFLElBQUksQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQU0sQ0FBQyxDQUFDO1FBQ2xELENBQUM7SUFDSCxDQUFDO0lBRVMsSUFBSSxDQUFDLEtBQTZCO1FBQzFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDaEQsZUFBZSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNwRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFUyxXQUFXO1FBQ25CLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUNTLGdCQUFnQjtRQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFUyxnQkFBZ0I7UUFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUM3QyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQzs4R0F2Q1Usa0NBQWtDO2tHQUFsQyxrQ0FBa0MscUlDYi9DLHk2Q0EyQkE7OzJGRGRhLGtDQUFrQztrQkFKOUMsU0FBUzsrQkFDRSw4QkFBOEI7OEJBT2pDLE1BQU07c0JBRFosS0FBSztnQkFNQyxRQUFRO3NCQURkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWFZhbHVlQ2hhbmdlZEV2ZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1vbic7XG5pbXBvcnQgeyBDZGtEcmFnRHJvcCwgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgZmlyc3QsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFBFbnRpdHlMaXN0RGlzcGxheUNvbHVtbkNvbmZpZyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBBWFBBZG1pbkxheW91dFN0YXRlLCBpc1NtYWxsU2NyZWVuIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3RvcmUnO1xuaW1wb3J0IHsgQVhQTGlzdFZpZXdMb2FkZXIgfSBmcm9tICcuLi8uLi9saXN0LXZpZXcuY29uZmlnJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXhwLWxpc3Qtdmlldy1vcHRpb24tY29sdW1ucycsXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LXZpZXctb3B0aW9uLWNvbHVtbnMuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBMaXN0Vmlld09wdGlvbnNDb2x1bW5zQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSBzdG9yZSA9IGluamVjdChTdG9yZTxBWFBBZG1pbkxheW91dFN0YXRlPik7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGxvYWRlciE6IEFYUExpc3RWaWV3TG9hZGVyO1xuICBwcm90ZWN0ZWQgaXNTTSA9IHRoaXMuc3RvcmUuc2VsZWN0KGlzU21hbGxTY3JlZW4oKSk7XG4gIHByb3RlY3RlZCBjb2x1bW5zJDogT2JzZXJ2YWJsZTxBWFBFbnRpdHlMaXN0RGlzcGxheUNvbHVtbkNvbmZpZ1tdPiA9IG9mKFtdKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIG9uQ2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY29sdW1ucyQgPSB0aGlzLmxvYWRlci5kaXNwbGF5Q29sdW1ucyQ7XG4gIH1cblxuICBoYW5kbGVWaXNpYmlsaXR5Q2hhbmdlKGU6IEFYVmFsdWVDaGFuZ2VkRXZlbnQ8Ym9vbGVhbj4sIG5hbWU6IHN0cmluZykge1xuICAgIGlmIChlLmlzVXNlckludGVyYWN0aW9uKSB7XG4gICAgICB0aGlzLmxvYWRlci5zZXRDb2x1bW5WaXNpYmlsaXR5KG5hbWUsIGUudmFsdWUhKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgZHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8dW5rbm93bltdPikge1xuICAgIHRoaXMuY29sdW1ucyQucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKGNvbHVtbnMpID0+IHtcbiAgICAgIG1vdmVJdGVtSW5BcnJheShjb2x1bW5zLCBldmVudC5wcmV2aW91c0luZGV4LCBldmVudC5jdXJyZW50SW5kZXgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUNsb3NlKCkge1xuICAgIHRoaXMub25DbG9zZWQuZW1pdCgpO1xuICB9XG4gIHByb3RlY3RlZCBoYW5kbGVSZXNldENsaWNrKCkge1xuICAgIHRoaXMubG9hZGVyLnJlc2V0Q29sdW1ucygpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUFwcGx5Q2xpY2soKSB7XG4gICAgdGhpcy5jb2x1bW5zJC5waXBlKGZpcnN0KCkpLnN1YnNjcmliZSgoZGF0YSkgPT4ge1xuICAgICAgdGhpcy5sb2FkZXIudXBkYXRlQ29sdW1ucyhkYXRhKTtcbiAgICB9KTtcbiAgICB0aGlzLm9uQ2xvc2VkLmVtaXQoKTtcbiAgfVxufVxuIiwiPGF4LWhlYWRlciBjbGFzcz1cImF4LWZsZXggYXgtaXRlbXMtY2VudGVyXCI+XG4gIDxoMiBjbGFzcz1cImF4LXRleHQteGwgYXgtZm9udC1ib2xkXCI+Q29sdW1uczwvaDI+XG4gIDxheC1idXR0b24gKG9uQ2xpY2spPVwiaGFuZGxlQ2xvc2UoKVwiIFtsb29rXT1cIidibGFuaydcIj5cbiAgICA8YXgtaWNvbiBjbGFzcz1cImZhLXNvbGlkIGZhLWNsb3NlIGF4LXRleHQtbmV1dHJhbC00MDAgYXgtdGV4dC14bFwiPiA8L2F4LWljb24+XG4gIDwvYXgtYnV0dG9uPlxuPC9heC1oZWFkZXI+XG48ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtNCBheC1wLTQgYXgtc2VsZWN0LW5vbmVcIiBjZGtEcm9wTGlzdCAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50KVwiPlxuICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1mbGV4LWNvbCBheC1nYXAtMyBheC13LWZ1bGwgYXgtc29ydGVkLWxpc3QgYXgtbWF4LWgtW2NhbGMoMTAwdmgtMjgwcHgpXSBheC1vdmVyZmxvdy1hdXRvXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjb2x1bW5zJCB8IGFzeW5jXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1weS0xIGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWJldHdlZW5cIiBjZGtEcmFnIGNka0RyYWdCb3VuZGFyeT1cIi5heC1zb3J0ZWQtbGlzdFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtZ2FwLTNcIiBjZGtEcmFnSGFuZGxlPlxuICAgICAgICAgIDxheC1pY29uIGNsYXNzPVwiZmEtc29saWQgZmEtZ3JpcC1kb3RzLXZlcnRpY2FsIGF4LWN1cnNvci1tb3ZlXCI+PC9heC1pY29uPlxuICAgICAgICAgIDxwIGNsYXNzPVwiYXgtZm9udC1tZWRpdW0gYXgtdGV4dC1zbVwiPnt7IGl0ZW0udGl0bGUgfX08L3A+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YXgtc3dpdGNoXG4gICAgICAgICAgY2xhc3M9XCJheC1zbVwiXG4gICAgICAgICAgW25nTW9kZWxdPVwiaXRlbS52aXNpYmxlXCJcbiAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwiaGFuZGxlVmlzaWJpbGl0eUNoYW5nZSgkZXZlbnQsIGl0ZW0ubmFtZSlcIlxuICAgICAgICA+PC9heC1zd2l0Y2g+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxheC1mb290ZXIgY2xhc3M9XCIhYXgtanVzdGlmeS1zdGFydCBheC1hYnNvbHV0ZSBheC1ib3R0b20tMCBheC13LWZ1bGxcIj5cbiAgPGF4LWJ1dHRvbiB0ZXh0PVwiQXBwbHlcIiBjb2xvcj1cInByaW1hcnlcIiAob25DbGljayk9XCJoYW5kbGVBcHBseUNsaWNrKClcIj48L2F4LWJ1dHRvbj5cbiAgPGF4LWJ1dHRvbiB0ZXh0PVwiUmVzZXRcIiBjb2xvcj1cImdob3N0XCIgKG9uQ2xpY2spPVwiaGFuZGxlUmVzZXRDbGljaygpXCI+PC9heC1idXR0b24+XG48L2F4LWZvb3Rlcj5cbiJdfQ==