@pega/angular-sdk-components 0.24.9 → 0.25.1

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 (290) hide show
  1. package/fesm2022/pega-angular-sdk-components.mjs +2832 -1807
  2. package/fesm2022/pega-angular-sdk-components.mjs.map +1 -1
  3. package/lib/_bridge/helpers/sdk-pega-component-map.d.ts +4 -0
  4. package/lib/_components/designSystemExtension/banner/banner.component.d.ts +0 -1
  5. package/lib/_components/designSystemExtension/case-create-stage/case-create-stage.component.d.ts +0 -1
  6. package/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.d.ts +1 -1
  7. package/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.d.ts +2 -1
  8. package/lib/_components/designSystemExtension/operator/operator.component.d.ts +2 -3
  9. package/lib/_components/designSystemExtension/pulse/pulse.component.d.ts +2 -3
  10. package/lib/_components/field/auto-complete/auto-complete.component.d.ts +8 -3
  11. package/lib/_components/field/cancel-alert/cancel-alert.component.d.ts +0 -1
  12. package/lib/_components/field/check-box/check-box.component.d.ts +5 -3
  13. package/lib/_components/field/currency/currency.component.d.ts +6 -4
  14. package/lib/_components/field/date/date.component.d.ts +17 -7
  15. package/lib/_components/field/date-time/date-time.component.d.ts +10 -3
  16. package/lib/_components/field/decimal/decimal.component.d.ts +4 -4
  17. package/lib/_components/field/dropdown/dropdown.component.d.ts +14 -3
  18. package/lib/_components/field/email/email.component.d.ts +2 -1
  19. package/lib/_components/field/group/group.component.d.ts +0 -1
  20. package/lib/_components/field/integer/integer.component.d.ts +2 -1
  21. package/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.d.ts +1 -2
  22. package/lib/_components/field/location/location.component.d.ts +71 -0
  23. package/lib/_components/field/multiselect/multiselect.component.d.ts +3 -3
  24. package/lib/_components/field/percentage/percentage.component.d.ts +6 -3
  25. package/lib/_components/field/phone/phone.component.d.ts +6 -8
  26. package/lib/_components/field/radio-buttons/radio-buttons.component.d.ts +4 -2
  27. package/lib/_components/field/rich-text/rich-text.component.d.ts +3 -2
  28. package/lib/_components/field/scalar-list/scalar-list.component.d.ts +0 -1
  29. package/lib/_components/field/selectable-card/selectable-card.component.d.ts +75 -0
  30. package/lib/_components/field/semantic-link/semantic-link.component.d.ts +0 -1
  31. package/lib/_components/field/text/text.component.d.ts +3 -2
  32. package/lib/_components/field/text-area/text-area.component.d.ts +2 -1
  33. package/lib/_components/field/text-content/text-content.component.d.ts +0 -1
  34. package/lib/_components/field/text-input/text-input.component.d.ts +2 -1
  35. package/lib/_components/field/time/time.component.d.ts +3 -1
  36. package/lib/_components/field/url/url.component.d.ts +2 -1
  37. package/lib/_components/field/user-reference/user-reference.component.d.ts +7 -1
  38. package/lib/_components/infra/Containers/flow-container/flow-container.component.d.ts +0 -2
  39. package/lib/_components/infra/Containers/flow-container/helpers.d.ts +1 -0
  40. package/lib/_components/infra/Containers/hybrid-view-container/hybrid-view-container.component.d.ts +0 -1
  41. package/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.d.ts +1 -4
  42. package/lib/_components/infra/Containers/preview-view-container/preview-view-container.component.d.ts +0 -1
  43. package/lib/_components/infra/Containers/view-container/helper.d.ts +2 -0
  44. package/lib/_components/infra/Containers/view-container/view-container.component.d.ts +0 -1
  45. package/lib/_components/infra/action-buttons/action-buttons.component.d.ts +1 -1
  46. package/lib/_components/infra/assignment/assignment.component.d.ts +6 -4
  47. package/lib/_components/infra/assignment-card/assignment-card.component.d.ts +0 -1
  48. package/lib/_components/infra/dashboard-filter/dashboard-filter.component.d.ts +0 -1
  49. package/lib/_components/infra/defer-load/defer-load.component.d.ts +3 -3
  50. package/lib/_components/infra/error-boundary/error-boundary.component.d.ts +1 -1
  51. package/lib/_components/infra/multi-step/multi-step.component.d.ts +0 -1
  52. package/lib/_components/infra/navbar/navbar.component.d.ts +2 -3
  53. package/lib/_components/infra/reference/reference.component.d.ts +23 -3
  54. package/lib/_components/infra/region/region.component.d.ts +0 -1
  55. package/lib/_components/infra/root-container/root-container.component.d.ts +3 -2
  56. package/lib/_components/infra/stages/stages.component.d.ts +0 -1
  57. package/lib/_components/infra/view/view.component.d.ts +1 -1
  58. package/lib/_components/template/app-shell/app-shell.component.d.ts +0 -1
  59. package/lib/_components/template/banner-page/banner-page.component.d.ts +0 -1
  60. package/lib/_components/template/base/details-template-base.d.ts +21 -0
  61. package/lib/_components/template/base/form-template-base.d.ts +10 -0
  62. package/lib/_components/template/case-summary/case-summary.component.d.ts +3 -3
  63. package/lib/_components/template/case-view/case-view.component.d.ts +1 -3
  64. package/lib/_components/template/confirmation/confirmation.component.d.ts +0 -1
  65. package/lib/_components/template/data-reference/data-reference.component.d.ts +0 -1
  66. package/lib/_components/template/default-form/default-form.component.d.ts +8 -7
  67. package/lib/_components/template/details/details.component.d.ts +3 -12
  68. package/lib/_components/template/details-narrow-wide/details-narrow-wide.component.d.ts +3 -12
  69. package/lib/_components/template/details-one-column/details-one-column.component.d.ts +3 -14
  70. package/lib/_components/template/details-sub-tabs/details-sub-tabs.component.d.ts +3 -14
  71. package/lib/_components/template/details-three-column/details-three-column.component.d.ts +3 -14
  72. package/lib/_components/template/details-two-column/details-two-column.component.d.ts +3 -14
  73. package/lib/_components/template/details-wide-narrow/details-wide-narrow.component.d.ts +3 -14
  74. package/lib/_components/template/dynamic-tabs/dynamic-tabs.component.d.ts +1 -1
  75. package/lib/_components/template/field-group-template/field-group-template.component.d.ts +12 -9
  76. package/lib/_components/template/inline-dashboard/inline-dashboard.component.d.ts +0 -1
  77. package/lib/_components/template/inline-dashboard-page/inline-dashboard-page.component.d.ts +0 -1
  78. package/lib/_components/template/list-page/list-page.component.d.ts +0 -1
  79. package/lib/_components/template/list-view/list-view.component.d.ts +6 -4
  80. package/lib/_components/template/list-view/listViewHelpers.d.ts +1 -1
  81. package/lib/_components/template/multi-reference-readonly/multi-reference-readonly.component.d.ts +0 -1
  82. package/lib/_components/template/narrow-wide-form/narrow-wide-form.component.d.ts +0 -1
  83. package/lib/_components/template/one-column/one-column.component.d.ts +2 -2
  84. package/lib/_components/template/one-column-page/one-column-page.component.d.ts +0 -1
  85. package/lib/_components/template/one-column-tab/one-column-tab.component.d.ts +0 -1
  86. package/lib/_components/template/page/page.component.d.ts +0 -1
  87. package/lib/_components/template/promoted-filters/promoted-filters.component.d.ts +0 -1
  88. package/lib/_components/template/repeating-structures/repeating-structures.component.d.ts +0 -1
  89. package/lib/_components/template/simple-table/simple-table.component.d.ts +0 -1
  90. package/lib/_components/template/simple-table-manual/helpers.d.ts +19 -4
  91. package/lib/_components/template/simple-table-manual/simple-table-manual.component.d.ts +10 -3
  92. package/lib/_components/template/simple-table-select/simple-table-select.component.d.ts +0 -1
  93. package/lib/_components/template/single-reference-readonly/single-reference-readonly.component.d.ts +0 -1
  94. package/lib/_components/template/sub-tabs/sub-tabs.component.d.ts +0 -1
  95. package/lib/_components/template/three-column/three-column.component.d.ts +2 -2
  96. package/lib/_components/template/three-column-page/three-column-page.component.d.ts +0 -1
  97. package/lib/_components/template/two-column/two-column.component.d.ts +2 -2
  98. package/lib/_components/template/two-column-page/two-column-page.component.d.ts +0 -1
  99. package/lib/_components/template/two-column-tab/two-column-tab.component.d.ts +0 -1
  100. package/lib/_components/template/utils.d.ts +7 -0
  101. package/lib/_components/template/wide-narrow-form/wide-narrow-form.component.d.ts +2 -2
  102. package/lib/_components/template/wide-narrow-page/wide-narrow-page.component.d.ts +1 -2
  103. package/lib/_components/template/wss-nav-bar/wss-nav-bar.component.d.ts +3 -4
  104. package/lib/_components/widget/app-announcement/app-announcement.component.d.ts +0 -1
  105. package/lib/_components/widget/attachment/attachment.component.d.ts +3 -4
  106. package/lib/_components/widget/case-history/case-history.component.d.ts +0 -1
  107. package/lib/_components/widget/feed-container/feed-container.component.d.ts +2 -3
  108. package/lib/_components/widget/file-utility/file-utility.component.d.ts +1 -2
  109. package/lib/_components/widget/quick-create/quick-create.component.d.ts +0 -1
  110. package/lib/_components/widget/todo/todo.component.d.ts +10 -14
  111. package/lib/_components/widget/utility/utility.component.d.ts +0 -1
  112. package/lib/_helpers/common.d.ts +1 -1
  113. package/lib/_helpers/createstage-utils.d.ts +1 -0
  114. package/lib/_helpers/formatters/boolean.d.ts +1 -2
  115. package/lib/_helpers/formatters/common.d.ts +2 -2
  116. package/lib/_helpers/formatters/currency.d.ts +1 -2
  117. package/lib/_helpers/formatters/date.d.ts +1 -2
  118. package/lib/_helpers/formatters/index.d.ts +1 -2
  119. package/lib/_helpers/utils.d.ts +12 -0
  120. package/lib/_messages/error-messages.service.d.ts +1 -1
  121. package/lib/_services/banner.service.d.ts +8 -0
  122. package/lib/_services/case.service.d.ts +1 -1
  123. package/lib/_services/datapage.service.d.ts +1 -1
  124. package/lib/_services/endpoints.d.ts +0 -1
  125. package/lib/_services/google-maps-loader.service.d.ts +7 -0
  126. package/lib/doc/KeyReleaseUpdates.md +35 -1
  127. package/package.json +20 -6
  128. package/public-api.d.ts +15 -11
  129. package/esm2022/lib/_bridge/angular-pconnect.mjs +0 -428
  130. package/esm2022/lib/_bridge/component-mapper/component-mapper.component.mjs +0 -114
  131. package/esm2022/lib/_bridge/helpers/sdk-pega-component-map.mjs +0 -239
  132. package/esm2022/lib/_bridge/helpers/sdk_component_map.mjs +0 -142
  133. package/esm2022/lib/_components/designSystemExtension/alert/alert.component.mjs +0 -50
  134. package/esm2022/lib/_components/designSystemExtension/alert-banner/alert-banner.component.mjs +0 -29
  135. package/esm2022/lib/_components/designSystemExtension/banner/banner.component.mjs +0 -31
  136. package/esm2022/lib/_components/designSystemExtension/case-create-stage/case-create-stage.component.mjs +0 -51
  137. package/esm2022/lib/_components/designSystemExtension/field-group/field-group.component.mjs +0 -31
  138. package/esm2022/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.mjs +0 -83
  139. package/esm2022/lib/_components/designSystemExtension/material-details/material-details.component.mjs +0 -37
  140. package/esm2022/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.mjs +0 -31
  141. package/esm2022/lib/_components/designSystemExtension/material-summary-item/material-summary-item.component.mjs +0 -36
  142. package/esm2022/lib/_components/designSystemExtension/material-summary-list/material-summary-list.component.mjs +0 -25
  143. package/esm2022/lib/_components/designSystemExtension/material-utility/material-utility.component.mjs +0 -28
  144. package/esm2022/lib/_components/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.mjs +0 -42
  145. package/esm2022/lib/_components/designSystemExtension/operator/operator.component.mjs +0 -143
  146. package/esm2022/lib/_components/designSystemExtension/pulse/pulse.component.mjs +0 -33
  147. package/esm2022/lib/_components/designSystemExtension/rich-text-editor/rich-text-editor.component.mjs +0 -93
  148. package/esm2022/lib/_components/designSystemExtension/wss-quick-create/wss-quick-create.component.mjs +0 -18
  149. package/esm2022/lib/_components/field/auto-complete/auto-complete.component.mjs +0 -286
  150. package/esm2022/lib/_components/field/cancel-alert/cancel-alert.component.mjs +0 -96
  151. package/esm2022/lib/_components/field/check-box/check-box.component.mjs +0 -223
  152. package/esm2022/lib/_components/field/currency/currency.component.mjs +0 -177
  153. package/esm2022/lib/_components/field/date/date.component.mjs +0 -225
  154. package/esm2022/lib/_components/field/date-time/date-time.component.mjs +0 -181
  155. package/esm2022/lib/_components/field/decimal/decimal.component.mjs +0 -185
  156. package/esm2022/lib/_components/field/dropdown/dropdown.component.mjs +0 -192
  157. package/esm2022/lib/_components/field/email/email.component.mjs +0 -150
  158. package/esm2022/lib/_components/field/group/group.component.mjs +0 -64
  159. package/esm2022/lib/_components/field/integer/integer.component.mjs +0 -155
  160. package/esm2022/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.mjs +0 -44
  161. package/esm2022/lib/_components/field/multiselect/multiselect.component.mjs +0 -307
  162. package/esm2022/lib/_components/field/multiselect/utils.mjs +0 -187
  163. package/esm2022/lib/_components/field/percentage/percentage.component.mjs +0 -174
  164. package/esm2022/lib/_components/field/phone/phone.component.mjs +0 -167
  165. package/esm2022/lib/_components/field/radio-buttons/radio-buttons.component.mjs +0 -184
  166. package/esm2022/lib/_components/field/rich-text/rich-text.component.mjs +0 -103
  167. package/esm2022/lib/_components/field/scalar-list/scalar-list.component.mjs +0 -96
  168. package/esm2022/lib/_components/field/semantic-link/semantic-link.component.mjs +0 -57
  169. package/esm2022/lib/_components/field/text/text.component.mjs +0 -138
  170. package/esm2022/lib/_components/field/text-area/text-area.component.mjs +0 -153
  171. package/esm2022/lib/_components/field/text-content/text-content.component.mjs +0 -69
  172. package/esm2022/lib/_components/field/text-input/text-input.component.mjs +0 -152
  173. package/esm2022/lib/_components/field/time/time.component.mjs +0 -153
  174. package/esm2022/lib/_components/field/url/url.component.mjs +0 -152
  175. package/esm2022/lib/_components/field/user-reference/user-reference.component.mjs +0 -187
  176. package/esm2022/lib/_components/infra/Containers/base-components/flow-container-base.component.mjs +0 -18
  177. package/esm2022/lib/_components/infra/Containers/base-components/helper.mjs +0 -71
  178. package/esm2022/lib/_components/infra/Containers/flow-container/flow-container.component.mjs +0 -487
  179. package/esm2022/lib/_components/infra/Containers/flow-container/helpers.mjs +0 -68
  180. package/esm2022/lib/_components/infra/Containers/hybrid-view-container/hybrid-view-container.component.mjs +0 -24
  181. package/esm2022/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.mjs +0 -342
  182. package/esm2022/lib/_components/infra/Containers/preview-view-container/preview-view-container.component.mjs +0 -32
  183. package/esm2022/lib/_components/infra/Containers/view-container/view-container.component.mjs +0 -218
  184. package/esm2022/lib/_components/infra/action-buttons/action-buttons.component.mjs +0 -31
  185. package/esm2022/lib/_components/infra/assignment/assignment.component.mjs +0 -383
  186. package/esm2022/lib/_components/infra/assignment-card/assignment-card.component.mjs +0 -47
  187. package/esm2022/lib/_components/infra/dashboard-filter/dashboard-filter.component.mjs +0 -87
  188. package/esm2022/lib/_components/infra/defer-load/defer-load.component.mjs +0 -141
  189. package/esm2022/lib/_components/infra/error-boundary/error-boundary.component.mjs +0 -18
  190. package/esm2022/lib/_components/infra/multi-step/multi-step.component.mjs +0 -80
  191. package/esm2022/lib/_components/infra/navbar/navbar.component.mjs +0 -136
  192. package/esm2022/lib/_components/infra/reference/reference.component.mjs +0 -133
  193. package/esm2022/lib/_components/infra/region/region.component.mjs +0 -33
  194. package/esm2022/lib/_components/infra/root-container/root-container.component.mjs +0 -228
  195. package/esm2022/lib/_components/infra/stages/stages.component.mjs +0 -62
  196. package/esm2022/lib/_components/infra/view/view.component.mjs +0 -173
  197. package/esm2022/lib/_components/template/app-shell/app-shell.component.mjs +0 -140
  198. package/esm2022/lib/_components/template/banner-page/banner-page.component.mjs +0 -43
  199. package/esm2022/lib/_components/template/case-summary/case-summary.component.mjs +0 -101
  200. package/esm2022/lib/_components/template/case-view/case-view.component.mjs +0 -190
  201. package/esm2022/lib/_components/template/confirmation/confirmation.component.mjs +0 -68
  202. package/esm2022/lib/_components/template/data-reference/data-reference.component.mjs +0 -237
  203. package/esm2022/lib/_components/template/default-form/default-form.component.mjs +0 -61
  204. package/esm2022/lib/_components/template/details/details.component.mjs +0 -103
  205. package/esm2022/lib/_components/template/details-narrow-wide/details-narrow-wide.component.mjs +0 -72
  206. package/esm2022/lib/_components/template/details-one-column/details-one-column.component.mjs +0 -71
  207. package/esm2022/lib/_components/template/details-sub-tabs/details-sub-tabs.component.mjs +0 -66
  208. package/esm2022/lib/_components/template/details-three-column/details-three-column.component.mjs +0 -80
  209. package/esm2022/lib/_components/template/details-two-column/details-two-column.component.mjs +0 -77
  210. package/esm2022/lib/_components/template/details-wide-narrow/details-wide-narrow.component.mjs +0 -77
  211. package/esm2022/lib/_components/template/dynamic-tabs/dynamic-tabs.component.mjs +0 -64
  212. package/esm2022/lib/_components/template/field-group-list/field-group-list.component.mjs +0 -23
  213. package/esm2022/lib/_components/template/field-group-template/field-group-template.component.mjs +0 -124
  214. package/esm2022/lib/_components/template/field-value-list/field-value-list.component.mjs +0 -24
  215. package/esm2022/lib/_components/template/inline-dashboard/inline-dashboard.component.mjs +0 -22
  216. package/esm2022/lib/_components/template/inline-dashboard-page/inline-dashboard-page.component.mjs +0 -40
  217. package/esm2022/lib/_components/template/list-page/list-page.component.mjs +0 -14
  218. package/esm2022/lib/_components/template/list-view/DefaultViewMeta.mjs +0 -208
  219. package/esm2022/lib/_components/template/list-view/list-view.component.mjs +0 -1202
  220. package/esm2022/lib/_components/template/list-view/listViewHelpers.mjs +0 -60
  221. package/esm2022/lib/_components/template/list-view/utils.mjs +0 -662
  222. package/esm2022/lib/_components/template/multi-reference-readonly/multi-reference-readonly.component.mjs +0 -44
  223. package/esm2022/lib/_components/template/narrow-wide-form/narrow-wide-form.component.mjs +0 -30
  224. package/esm2022/lib/_components/template/one-column/one-column.component.mjs +0 -30
  225. package/esm2022/lib/_components/template/one-column-page/one-column-page.component.mjs +0 -16
  226. package/esm2022/lib/_components/template/one-column-tab/one-column-tab.component.mjs +0 -30
  227. package/esm2022/lib/_components/template/page/page.component.mjs +0 -52
  228. package/esm2022/lib/_components/template/promoted-filters/promoted-filters.component.mjs +0 -149
  229. package/esm2022/lib/_components/template/repeating-structures/repeating-structures.component.mjs +0 -138
  230. package/esm2022/lib/_components/template/simple-table/simple-table.component.mjs +0 -104
  231. package/esm2022/lib/_components/template/simple-table-manual/helpers.mjs +0 -270
  232. package/esm2022/lib/_components/template/simple-table-manual/simple-table-manual.component.mjs +0 -781
  233. package/esm2022/lib/_components/template/simple-table-select/simple-table-select.component.mjs +0 -129
  234. package/esm2022/lib/_components/template/single-reference-readonly/single-reference-readonly.component.mjs +0 -16
  235. package/esm2022/lib/_components/template/sub-tabs/sub-tabs.component.mjs +0 -67
  236. package/esm2022/lib/_components/template/three-column/three-column.component.mjs +0 -30
  237. package/esm2022/lib/_components/template/three-column-page/three-column-page.component.mjs +0 -16
  238. package/esm2022/lib/_components/template/two-column/two-column.component.mjs +0 -30
  239. package/esm2022/lib/_components/template/two-column-page/two-column-page.component.mjs +0 -40
  240. package/esm2022/lib/_components/template/two-column-tab/two-column-tab.component.mjs +0 -30
  241. package/esm2022/lib/_components/template/utils.mjs +0 -22
  242. package/esm2022/lib/_components/template/wide-narrow-form/wide-narrow-form.component.mjs +0 -30
  243. package/esm2022/lib/_components/template/wide-narrow-page/wide-narrow-page.component.mjs +0 -53
  244. package/esm2022/lib/_components/template/wss-nav-bar/wss-nav-bar.component.mjs +0 -137
  245. package/esm2022/lib/_components/widget/app-announcement/app-announcement.component.mjs +0 -24
  246. package/esm2022/lib/_components/widget/attachment/attachment.component.mjs +0 -395
  247. package/esm2022/lib/_components/widget/case-history/case-history.component.mjs +0 -80
  248. package/esm2022/lib/_components/widget/feed-container/feed-container.component.mjs +0 -521
  249. package/esm2022/lib/_components/widget/file-utility/file-utility.component.mjs +0 -638
  250. package/esm2022/lib/_components/widget/list-utility/list-utility.component.mjs +0 -57
  251. package/esm2022/lib/_components/widget/quick-create/quick-create.component.mjs +0 -75
  252. package/esm2022/lib/_components/widget/todo/todo.component.mjs +0 -214
  253. package/esm2022/lib/_components/widget/utility/utility.component.mjs +0 -34
  254. package/esm2022/lib/_directives/thousand-seperator.directive.mjs +0 -28
  255. package/esm2022/lib/_helpers/case-utils.mjs +0 -71
  256. package/esm2022/lib/_helpers/common.mjs +0 -20
  257. package/esm2022/lib/_helpers/currency-utils.mjs +0 -57
  258. package/esm2022/lib/_helpers/date-format-utils.mjs +0 -68
  259. package/esm2022/lib/_helpers/event-util.mjs +0 -18
  260. package/esm2022/lib/_helpers/field-group-utils.mjs +0 -47
  261. package/esm2022/lib/_helpers/filter-utils.mjs +0 -106
  262. package/esm2022/lib/_helpers/formatters/boolean.mjs +0 -20
  263. package/esm2022/lib/_helpers/formatters/common.mjs +0 -16
  264. package/esm2022/lib/_helpers/formatters/currency-map.mjs +0 -903
  265. package/esm2022/lib/_helpers/formatters/currency.mjs +0 -68
  266. package/esm2022/lib/_helpers/formatters/date.mjs +0 -69
  267. package/esm2022/lib/_helpers/formatters/format-utils.mjs +0 -68
  268. package/esm2022/lib/_helpers/formatters/index.mjs +0 -110
  269. package/esm2022/lib/_helpers/instructions-utils.mjs +0 -36
  270. package/esm2022/lib/_helpers/tab-utils.mjs +0 -59
  271. package/esm2022/lib/_helpers/template-utils.mjs +0 -56
  272. package/esm2022/lib/_helpers/utils.mjs +0 -386
  273. package/esm2022/lib/_helpers/versionHelpers.mjs +0 -12
  274. package/esm2022/lib/_messages/error-messages.service.mjs +0 -31
  275. package/esm2022/lib/_messages/get-login-status.service.mjs +0 -26
  276. package/esm2022/lib/_messages/oauth-response.service.mjs +0 -30
  277. package/esm2022/lib/_messages/progress-spinner.service.mjs +0 -30
  278. package/esm2022/lib/_messages/reset-pconnect.service.mjs +0 -31
  279. package/esm2022/lib/_messages/update-worklist.service.mjs +0 -30
  280. package/esm2022/lib/_services/case.service.mjs +0 -32
  281. package/esm2022/lib/_services/datapage.service.mjs +0 -52
  282. package/esm2022/lib/_services/endpoints.mjs +0 -61
  283. package/esm2022/lib/_services/server-config.service.mjs +0 -52
  284. package/esm2022/lib/_types/PConnProps.interface.mjs +0 -2
  285. package/esm2022/pega-angular-sdk-components.mjs +0 -5
  286. package/esm2022/public-api.mjs +0 -141
  287. package/esm2022/sdk-local-component-map.mjs +0 -9
  288. package/lib/_messages/get-login-status.service.d.ts +0 -10
  289. package/lib/_messages/oauth-response.service.d.ts +0 -14
  290. package/lib/_messages/reset-pconnect.service.d.ts +0 -15
@@ -1,140 +0,0 @@
1
- import { Component, Input, forwardRef } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { MatSnackBarModule } from '@angular/material/snack-bar';
4
- import { ComponentMapperComponent } from '../../../_bridge/component-mapper/component-mapper.component';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "../../../_bridge/angular-pconnect";
7
- import * as i2 from "../../../_messages/error-messages.service";
8
- import * as i3 from "@angular/material/snack-bar";
9
- import * as i4 from "@angular/common";
10
- export class AppShellComponent {
11
- constructor(angularPConnect, erService, snackBar, ngZone) {
12
- this.angularPConnect = angularPConnect;
13
- this.erService = erService;
14
- this.snackBar = snackBar;
15
- this.ngZone = ngZone;
16
- // For interaction with AngularPConnect
17
- this.angularPConnectData = {};
18
- this.bShowAppShell$ = false;
19
- this.appName$ = 'PEGA';
20
- this.sErrorMessages = '';
21
- this.bOkDisplayError = false;
22
- this.links = [];
23
- }
24
- ngOnInit() {
25
- // First thing in initialization is registering and subscribing to the AngularPConnect service
26
- this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
27
- // Then, continue on with other initialization
28
- this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps());
29
- // making a copy, so can add info
30
- this.pages$ = this.configProps$.pages;
31
- this.links = this.pages$.filter((page, index) => {
32
- return index !== 0;
33
- });
34
- if (this.pages$) {
35
- this.bShowAppShell$ = true;
36
- }
37
- this.caseTypes$ = this.configProps$.caseTypes;
38
- this.arChildren$ = this.pConn$.getChildren();
39
- this.portalTemplate = this.configProps$.portalTemplate;
40
- // handle showing and hiding the progress spinner
41
- this.errorMessagesSubscription = this.erService.getMessage().subscribe(message => {
42
- this.showDismissErrorMessages(message);
43
- });
44
- // cannot call checkAndUpdate becasue first time through, will call updateSelf and that is incorrect (causes issues).
45
- // however, need angularPConnect to be initialized with currentProps for future updates, so calling shouldComponentUpdate directly
46
- // without checking to update here in init, will initialize and this is correct
47
- this.angularPConnect.shouldComponentUpdate(this);
48
- }
49
- ngOnDestroy() {
50
- if (this.angularPConnectData.unsubscribeFn) {
51
- this.angularPConnectData.unsubscribeFn();
52
- }
53
- }
54
- // Callback passed when subscribing to store change
55
- onStateChange() {
56
- this.checkAndUpdate();
57
- }
58
- checkAndUpdate() {
59
- // Should always check the bridge to see if the component should
60
- // update itself (re-render)
61
- const bUpdateSelf = this.angularPConnect.shouldComponentUpdate(this);
62
- // ONLY call updateSelf when the component should update
63
- if (bUpdateSelf) {
64
- this.updateSelf();
65
- }
66
- }
67
- updateSelf() {
68
- this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps());
69
- this.ngZone.run(() => {
70
- // making a copy, so can add info
71
- this.pages$ = this.configProps$.pages;
72
- if (this.pages$) {
73
- this.bShowAppShell$ = true;
74
- }
75
- this.caseTypes$ = this.configProps$.caseTypes;
76
- this.arChildren$ = this.pConn$.getChildren();
77
- });
78
- }
79
- // fpr show/hiding error messages in the SnackBar component
80
- showDismissErrorMessages(errorMessages) {
81
- switch (errorMessages.action) {
82
- case 'update':
83
- // won't show unless publish is turned on
84
- // eslint-disable-next-line @typescript-eslint/prefer-includes
85
- if (this.sErrorMessages.indexOf(errorMessages.actionMessage) < 0) {
86
- this.sErrorMessages = this.sErrorMessages.concat(errorMessages.actionMessage).concat('\n');
87
- if (this.bOkDisplayError) {
88
- const config = { panelClass: ['snackbar-newline'], duration: 5000 };
89
- this.snackBarRef = this.snackBar.open(this.sErrorMessages, 'Ok', config);
90
- }
91
- }
92
- break;
93
- case 'show':
94
- // add error message if not in the list
95
- // won't show unless publish is turned on
96
- // eslint-disable-next-line @typescript-eslint/prefer-includes
97
- if (this.sErrorMessages.indexOf(errorMessages.actionMessage) < 0) {
98
- this.sErrorMessages = this.sErrorMessages.concat(errorMessages.actionMessage).concat('\n');
99
- }
100
- this.bOkDisplayError = true;
101
- if (this.bOkDisplayError) {
102
- const config = { panelClass: ['snackbar-newline'], duration: 5000 };
103
- this.snackBarRef = this.snackBar.open(this.sErrorMessages, 'Ok', config);
104
- }
105
- // this.snackBarRef.afterDismissed().subscribe( info => {
106
- // this.sErrorMessages = "";
107
- // }
108
- // )
109
- break;
110
- case 'dismiss':
111
- // closes snack bar
112
- // turns publish off
113
- // clears out errors
114
- // should be called to dimiss and at "cancel"
115
- if (this.snackBarRef != null) {
116
- this.snackBarRef.dismiss();
117
- this.sErrorMessages = '';
118
- this.bOkDisplayError = false;
119
- }
120
- break;
121
- case 'publish':
122
- // allows errors to be shown, clears out existing ones
123
- // should be turned on at "submit" (finishAssignment, nextAssignment, etc.)
124
- this.bOkDisplayError = true;
125
- this.sErrorMessages = '';
126
- break;
127
- default:
128
- break;
129
- }
130
- }
131
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppShellComponent, deps: [{ token: i1.AngularPConnectService }, { token: i2.ErrorMessagesService }, { token: i3.MatSnackBar }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
132
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AppShellComponent, isStandalone: true, selector: "app-app-shell", inputs: { pConn$: "pConn$" }, ngImport: i0, template: "<div class=\"appshell-top\">\n <div *ngIf=\"bShowAppShell$ && portalTemplate !== 'wss'\">\n <component-mapper name=\"NavBar\" [props]=\"{ pConn$, appName$, pages$, caseTypes$ }\"></component-mapper>\n </div>\n <div *ngIf=\"bShowAppShell$ && portalTemplate === 'wss'\">\n <component-mapper name=\"WssNavBar\" [props]=\"{ pConn$, appName$, homePage: pages$[0], pages$: links, caseTypes$ }\"></component-mapper>\n </div>\n <div [ngClass]=\"{ 'appshell-main': portalTemplate !== 'wss', 'appshell-main-wss': portalTemplate === 'wss' }\">\n <div *ngFor=\"let kid of arChildren$\">\n <div *ngIf=\"kid.getPConnect().getComponentName() == 'ViewContainer'\">\n <component-mapper name=\"ViewContainer\" [props]=\"{ pConn$: kid.getPConnect() }\"></component-mapper>\n </div>\n </div>\n </div>\n</div>\n", styles: [".appshell-top,.appshell-top-wss{background-color:var(--app-background-color)}.appshell-main{position:relative;margin-left:var(--app-nav-width);min-height:100vh;display:block}.appshell-main-wss{position:relative;min-height:100vh;display:block;width:100%}.psdk-icon{padding:0rem .125rem;min-width:unset}.progress-box{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;width:100%;background-color:var(--app-background-color);position:fixed;z-index:999;top:0rem;left:0rem;opacity:.5}.progress-spinner{text-align:center}::ng-deep snack-bar-container.snackbar-newline{white-space:pre-line}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i4.NgClass), selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i0.forwardRef(() => i4.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i4.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatSnackBarModule) }, { kind: "component", type: i0.forwardRef(() => ComponentMapperComponent), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
133
- }
134
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AppShellComponent, decorators: [{
135
- type: Component,
136
- args: [{ selector: 'app-app-shell', standalone: true, imports: [CommonModule, MatSnackBarModule, forwardRef(() => ComponentMapperComponent)], template: "<div class=\"appshell-top\">\n <div *ngIf=\"bShowAppShell$ && portalTemplate !== 'wss'\">\n <component-mapper name=\"NavBar\" [props]=\"{ pConn$, appName$, pages$, caseTypes$ }\"></component-mapper>\n </div>\n <div *ngIf=\"bShowAppShell$ && portalTemplate === 'wss'\">\n <component-mapper name=\"WssNavBar\" [props]=\"{ pConn$, appName$, homePage: pages$[0], pages$: links, caseTypes$ }\"></component-mapper>\n </div>\n <div [ngClass]=\"{ 'appshell-main': portalTemplate !== 'wss', 'appshell-main-wss': portalTemplate === 'wss' }\">\n <div *ngFor=\"let kid of arChildren$\">\n <div *ngIf=\"kid.getPConnect().getComponentName() == 'ViewContainer'\">\n <component-mapper name=\"ViewContainer\" [props]=\"{ pConn$: kid.getPConnect() }\"></component-mapper>\n </div>\n </div>\n </div>\n</div>\n", styles: [".appshell-top,.appshell-top-wss{background-color:var(--app-background-color)}.appshell-main{position:relative;margin-left:var(--app-nav-width);min-height:100vh;display:block}.appshell-main-wss{position:relative;min-height:100vh;display:block;width:100%}.psdk-icon{padding:0rem .125rem;min-width:unset}.progress-box{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;width:100%;background-color:var(--app-background-color);position:fixed;z-index:999;top:0rem;left:0rem;opacity:.5}.progress-spinner{text-align:center}::ng-deep snack-bar-container.snackbar-newline{white-space:pre-line}\n"] }]
137
- }], ctorParameters: () => [{ type: i1.AngularPConnectService }, { type: i2.ErrorMessagesService }, { type: i3.MatSnackBar }, { type: i0.NgZone }], propDecorators: { pConn$: [{
138
- type: Input
139
- }] } });
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLXNoZWxsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9hcHAtc2hlbGwvYXBwLXNoZWxsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9hcHAtc2hlbGwvYXBwLXNoZWxsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFVLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGlCQUFpQixFQUFlLE1BQU0sNkJBQTZCLENBQUM7QUFJN0UsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOERBQThELENBQUM7Ozs7OztBQThCeEcsTUFBTSxPQUFPLGlCQUFpQjtJQW1CNUIsWUFDVSxlQUF1QyxFQUN2QyxTQUErQixFQUMvQixRQUFxQixFQUNyQixNQUFjO1FBSGQsb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBQ3ZDLGNBQVMsR0FBVCxTQUFTLENBQXNCO1FBQy9CLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQXBCeEIsdUNBQXVDO1FBQ3ZDLHdCQUFtQixHQUF3QixFQUFFLENBQUM7UUFNOUMsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsYUFBUSxHQUFHLE1BQU0sQ0FBQztRQUVsQixtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUVwQixvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUV4QixVQUFLLEdBQVEsRUFBRSxDQUFDO0lBT2IsQ0FBQztJ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ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgTmdab25lLCBmb3J3YXJkUmVmLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRTbmFja0Jhck1vZHVsZSwgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBbmd1bGFyUENvbm5lY3REYXRhLCBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9hbmd1bGFyLXBjb25uZWN0JztcbmltcG9ydCB7IEVycm9yTWVzc2FnZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX21lc3NhZ2VzL2Vycm9yLW1lc3NhZ2VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9jb21wb25lbnQtbWFwcGVyL2NvbXBvbmVudC1tYXBwZXIuY29tcG9uZW50JztcblxuaW50ZXJmYWNlIElQYWdlIHtcbiAgY2xhc3NJRDogc3RyaW5nO1xuICBweFBhZ2VWaWV3SWNvbjogc3RyaW5nO1xuICBweUNsYXNzTmFtZTogc3RyaW5nO1xuICBweUxhYmVsOiBzdHJpbmc7XG4gIHB5UnVsZU5hbWU6IHN0cmluZztcbiAgcHlVUkxDb250ZW50OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBBcHBTaGVsbFByb3BzIHtcbiAgLy8gSWYgYW55LCBlbnRlciBhZGRpdGlvbmFsIHByb3BzIHRoYXQgb25seSBleGlzdCBvbiB0aGlzIGNvbXBvbmVudFxuICBwYWdlczogSVBhZ2VbXTtcbiAgY2FzZVR5cGVzPzogb2JqZWN0W107XG4gIHBvcnRhbExvZ286IHN0cmluZztcbiAgcG9ydGFsTmFtZTogc3RyaW5nO1xuICBwb3J0YWxUZW1wbGF0ZTogc3RyaW5nO1xuICByZWFkT25seT86IGJvb2xlYW47XG4gIHNob3dBcHBIZWFkZXJCYXI6IGJvb2xlYW47XG4gIHNob3dBcHBOYW1lOiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtYXBwLXNoZWxsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FwcC1zaGVsbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FwcC1zaGVsbC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRTbmFja0Jhck1vZHVsZSwgZm9yd2FyZFJlZigoKSA9PiBDb21wb25lbnRNYXBwZXJDb21wb25lbnQpXVxufSlcbmV4cG9ydCBjbGFzcyBBcHBTaGVsbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcENvbm4kOiB0eXBlb2YgUENvbm5lY3Q7XG5cbiAgLy8gRm9yIGludGVyYWN0aW9uIHdpdGggQW5ndWxhclBDb25uZWN0XG4gIGFuZ3VsYXJQQ29ubmVjdERhdGE6IEFuZ3VsYXJQQ29ubmVjdERhdGEgPSB7fTtcbiAgY29uZmlnUHJvcHMkOiBBcHBTaGVsbFByb3BzO1xuXG4gIHBhZ2VzJDogSVBhZ2VbXTtcbiAgY2FzZVR5cGVzJD86IG9iamVjdFtdO1xuICBhckNoaWxkcmVuJDogYW55W107XG4gIGJTaG93QXBwU2hlbGwkID0gZmFsc2U7XG4gIGFwcE5hbWUkID0gJ1BFR0EnO1xuICBlcnJvck1lc3NhZ2VzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHNFcnJvck1lc3NhZ2VzID0gJyc7XG4gIHNuYWNrQmFyUmVmOiBhbnk7XG4gIGJPa0Rpc3BsYXlFcnJvciA9IGZhbHNlO1xuICBwb3J0YWxUZW1wbGF0ZTogc3RyaW5nO1xuICBsaW5rczogYW55ID0gW107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhbmd1bGFyUENvbm5lY3Q6IEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlclNlcnZpY2U6IEVycm9yTWVzc2FnZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIEZpcnN0IHRoaW5nIGluIGluaXRpYWxpemF0aW9uIGlzIHJlZ2lzdGVyaW5nIGFuZCBzdWJzY3JpYmluZyB0byB0aGUgQW5ndWxhclBDb25uZWN0IHNlcnZpY2VcbiAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5yZWdpc3RlckFuZFN1YnNjcmliZUNvbXBvbmVudCh0aGlzLCB0aGlzLm9uU3RhdGVDaGFuZ2UpO1xuXG4gICAgLy8gVGhlbiwgY29udGludWUgb24gd2l0aCBvdGhlciBpbml0aWFsaXphdGlvblxuXG4gICAgdGhpcy5jb25maWdQcm9wcyQgPSB0aGlzLnBDb25uJC5yZXNvbHZlQ29uZmlnUHJvcHModGhpcy5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKSkgYXMgQXBwU2hlbGxQcm9wcztcblxuICAgIC8vIG1ha2luZyBhIGNvcHksIHNvIGNhbiBhZGQgaW5mb1xuICAgIHRoaXMucGFnZXMkID0gdGhpcy5jb25maWdQcm9wcyQucGFnZXM7XG5cbiAgICB0aGlzLmxpbmtzID0gdGhpcy5wYWdlcyQuZmlsdGVyKChwYWdlLCBpbmRleCkgPT4ge1xuICAgICAgcmV0dXJuIGluZGV4ICE9PSAwO1xuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMucGFnZXMkKSB7XG4gICAgICB0aGlzLmJTaG93QXBwU2hlbGwkID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5jYXNlVHlwZXMkID0gdGhpcy5jb25maWdQcm9wcyQuY2FzZVR5cGVzO1xuXG4gICAgdGhpcy5hckNoaWxkcmVuJCA9IHRoaXMucENvbm4kLmdldENoaWxkcmVuKCkgYXMgYW55W107XG5cbiAgICB0aGlzLnBvcnRhbFRlbXBsYXRlID0gdGhpcy5jb25maWdQcm9wcyQucG9ydGFsVGVtcGxhdGU7XG5cbiAgICAvLyBoYW5kbGUgc2hvd2luZyBhbmQgaGlkaW5nIHRoZSBwcm9ncmVzcyBzcGlubmVyXG4gICAgdGhpcy5lcnJvck1lc3NhZ2VzU3Vic2NyaXB0aW9uID0gdGhpcy5lclNlcnZpY2UuZ2V0TWVzc2FnZSgpLnN1YnNjcmliZShtZXNzYWdlID0+IHtcbiAgICAgIHRoaXMuc2hvd0Rpc21pc3NFcnJvck1lc3NhZ2VzKG1lc3NhZ2UpO1xuICAgIH0pO1xuXG4gICAgLy8gY2Fubm90IGNhbGwgY2hlY2tBbmRVcGRhdGUgYmVjYXN1ZSBmaXJzdCB0aW1lIHRocm91Z2gsIHdpbGwgY2FsbCB1cGRhdGVTZWxmIGFuZCB0aGF0IGlzIGluY29ycmVjdCAoY2F1c2VzIGlzc3VlcykuXG4gICAgLy8gaG93ZXZlciwgbmVlZCBhbmd1bGFyUENvbm5lY3QgdG8gYmUgaW5pdGlhbGl6ZWQgd2l0aCBjdXJyZW50UHJvcHMgZm9yIGZ1dHVyZSB1cGRhdGVzLCBzbyBjYWxsaW5nIHNob3VsZENvbXBvbmVudFVwZGF0ZSBkaXJlY3RseVxuICAgIC8vIHdpdGhvdXQgY2hlY2tpbmcgdG8gdXBkYXRlIGhlcmUgaW4gaW5pdCwgd2lsbCBpbml0aWFsaXplIGFuZCB0aGlzIGlzIGNvcnJlY3RcbiAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5zaG91bGRDb21wb25lbnRVcGRhdGUodGhpcyk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnVuc3Vic2NyaWJlRm4pIHtcbiAgICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gQ2FsbGJhY2sgcGFzc2VkIHdoZW4gc3Vic2NyaWJpbmcgdG8gc3RvcmUgY2hhbmdlXG4gIG9uU3RhdGVDaGFuZ2UoKSB7XG4gICAgdGhpcy5jaGVja0FuZFVwZGF0ZSgpO1xuICB9XG5cbiAgY2hlY2tBbmRVcGRhdGUoKSB7XG4gICAgLy8gU2hvdWxkIGFsd2F5cyBjaGVjayB0aGUgYnJpZGdlIHRvIHNlZSBpZiB0aGUgY29tcG9uZW50IHNob3VsZFxuICAgIC8vIHVwZGF0ZSBpdHNlbGYgKHJlLXJlbmRlcilcbiAgICBjb25zdCBiVXBkYXRlU2VsZiA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnNob3VsZENvbXBvbmVudFVwZGF0ZSh0aGlzKTtcblxuICAgIC8vIE9OTFkgY2FsbCB1cGRhdGVTZWxmIHdoZW4gdGhlIGNvbXBvbmVudCBzaG91bGQgdXBkYXRlXG4gICAgaWYgKGJVcGRhdGVTZWxmKSB7XG4gICAgICB0aGlzLnVwZGF0ZVNlbGYoKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVTZWxmKCkge1xuICAgIHRoaXMuY29uZmlnUHJvcHMkID0gdGhpcy5wQ29ubiQucmVzb2x2ZUNvbmZpZ1Byb3BzKHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCkpIGFzIEFwcFNoZWxsUHJvcHM7XG5cbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgLy8gbWFraW5nIGEgY29weSwgc28gY2FuIGFkZCBpbmZvXG4gICAgICB0aGlzLnBhZ2VzJCA9IHRoaXMuY29uZmlnUHJvcHMkLnBhZ2VzO1xuXG4gICAgICBpZiAodGhpcy5wYWdlcyQpIHtcbiAgICAgICAgdGhpcy5iU2hvd0FwcFNoZWxsJCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY2FzZVR5cGVzJCA9IHRoaXMuY29uZmlnUHJvcHMkLmNhc2VUeXBlcztcbiAgICAgIHRoaXMuYXJDaGlsZHJlbiQgPSB0aGlzLnBDb25uJC5nZXRDaGlsZHJlbigpIGFzIGFueVtdO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gZnByIHNob3cvaGlkaW5nIGVycm9yIG1lc3NhZ2VzIGluIHRoZSBTbmFja0JhciBjb21wb25lbnRcbiAgc2hvd0Rpc21pc3NFcnJvck1lc3NhZ2VzKGVycm9yTWVzc2FnZXM6IGFueSkge1xuICAgIHN3aXRjaCAoZXJyb3JNZXNzYWdlcy5hY3Rpb24pIHtcbiAgICAgIGNhc2UgJ3VwZGF0ZSc6XG4gICAgICAgIC8vIHdvbid0IHNob3cgdW5sZXNzIHB1Ymxpc2ggaXMgdHVybmVkIG9uXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcHJlZmVyLWluY2x1ZGVzXG4gICAgICAgIGlmICh0aGlzLnNFcnJvck1lc3NhZ2VzLmluZGV4T2YoZXJyb3JNZXNzYWdlcy5hY3Rpb25NZXNzYWdlKSA8IDApIHtcbiAgICAgICAgICB0aGlzLnNFcnJvck1lc3NhZ2VzID0gdGhpcy5zRXJyb3JNZXNzYWdlcy5jb25jYXQoZXJyb3JNZXNzYWdlcy5hY3Rpb25NZXNzYWdlKS5jb25jYXQoJ1xcbicpO1xuXG4gICAgICAgICAgaWYgKHRoaXMuYk9rRGlzcGxheUVycm9yKSB7XG4gICAgICAgICAgICBjb25zdCBjb25maWcgPSB7IHBhbmVsQ2xhc3M6IFsnc25hY2tiYXItbmV3bGluZSddLCBkdXJhdGlvbjogNTAwMCB9O1xuICAgICAgICAgICAgdGhpcy5zbmFja0JhclJlZiA9IHRoaXMuc25hY2tCYXIub3Blbih0aGlzLnNFcnJvck1lc3NhZ2VzLCAnT2snLCBjb25maWcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3Nob3cnOlxuICAgICAgICAvLyBhZGQgZXJyb3IgbWVzc2FnZSBpZiBub3QgaW4gdGhlIGxpc3RcbiAgICAgICAgLy8gd29uJ3Qgc2hvdyB1bmxlc3MgcHVibGlzaCBpcyB0dXJuZWQgb25cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9wcmVmZXItaW5jbHVkZXNcbiAgICAgICAgaWYgKHRoaXMuc0Vycm9yTWVzc2FnZXMuaW5kZXhPZihlcnJvck1lc3NhZ2VzLmFjdGlvbk1lc3NhZ2UpIDwgMCkge1xuICAgICAgICAgIHRoaXMuc0Vycm9yTWVzc2FnZXMgPSB0aGlzLnNFcnJvck1lc3NhZ2VzLmNvbmNhdChlcnJvck1lc3NhZ2VzLmFjdGlvbk1lc3NhZ2UpLmNvbmNhdCgnXFxuJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmJPa0Rpc3BsYXlFcnJvciA9IHRydWU7XG5cbiAgICAgICAgaWYgKHRoaXMuYk9rRGlzcGxheUVycm9yKSB7XG4gICAgICAgICAgY29uc3QgY29uZmlnID0geyBwYW5lbENsYXNzOiBbJ3NuYWNrYmFyLW5ld2xpbmUnXSwgZHVyYXRpb246IDUwMDAgfTtcbiAgICAgICAgICB0aGlzLnNuYWNrQmFyUmVmID0gdGhpcy5zbmFja0Jhci5vcGVuKHRoaXMuc0Vycm9yTWVzc2FnZXMsICdPaycsIGNvbmZpZyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gdGhpcy5zbmFja0JhclJlZi5hZnRlckRpc21pc3NlZCgpLnN1YnNjcmliZSggaW5mbyA9PiB7XG4gICAgICAgIC8vICAgICB0aGlzLnNFcnJvck1lc3NhZ2VzID0gXCJcIjtcbiAgICAgICAgLy8gICB9XG4gICAgICAgIC8vIClcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdkaXNtaXNzJzpcbiAgICAgICAgLy8gY2xvc2VzIHNuYWNrIGJhclxuICAgICAgICAvLyB0dXJucyBwdWJsaXNoIG9mZlxuICAgICAgICAvLyBjbGVhcnMgb3V0IGVycm9yc1xuICAgICAgICAvLyBzaG91bGQgYmUgY2FsbGVkIHRvIGRpbWlzcyBhbmQgYXQgXCJjYW5jZWxcIlxuICAgICAgICBpZiAodGhpcy5zbmFja0JhclJlZiAhPSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5zbmFja0JhclJlZi5kaXNtaXNzKCk7XG4gICAgICAgICAgdGhpcy5zRXJyb3JNZXNzYWdlcyA9ICcnO1xuICAgICAgICAgIHRoaXMuYk9rRGlzcGxheUVycm9yID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdwdWJsaXNoJzpcbiAgICAgICAgLy8gYWxsb3dzIGVycm9ycyB0byBiZSBzaG93biwgY2xlYXJzIG91dCBleGlzdGluZyBvbmVzXG4gICAgICAgIC8vIHNob3VsZCBiZSB0dXJuZWQgb24gYXQgXCJzdWJtaXRcIiAoZmluaXNoQXNzaWdubWVudCwgbmV4dEFzc2lnbm1lbnQsIGV0Yy4pXG5cbiAgICAgICAgdGhpcy5iT2tEaXNwbGF5RXJyb3IgPSB0cnVlO1xuICAgICAgICB0aGlzLnNFcnJvck1lc3NhZ2VzID0gJyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYXBwc2hlbGwtdG9wXCI+XG4gIDxkaXYgKm5nSWY9XCJiU2hvd0FwcFNoZWxsJCAmJiBwb3J0YWxUZW1wbGF0ZSAhPT0gJ3dzcydcIj5cbiAgICA8Y29tcG9uZW50LW1hcHBlciBuYW1lPVwiTmF2QmFyXCIgW3Byb3BzXT1cInsgcENvbm4kLCBhcHBOYW1lJCwgcGFnZXMkLCBjYXNlVHlwZXMkIH1cIj48L2NvbXBvbmVudC1tYXBwZXI+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwiYlNob3dBcHBTaGVsbCQgJiYgcG9ydGFsVGVtcGxhdGUgPT09ICd3c3MnXCI+XG4gICAgPGNvbXBvbmVudC1tYXBwZXIgbmFtZT1cIldzc05hdkJhclwiIFtwcm9wc109XCJ7IHBDb25uJCwgYXBwTmFtZSQsIGhvbWVQYWdlOiBwYWdlcyRbMF0sIHBhZ2VzJDogbGlua3MsIGNhc2VUeXBlcyQgfVwiPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgPC9kaXY+XG4gIDxkaXYgW25nQ2xhc3NdPVwieyAnYXBwc2hlbGwtbWFpbic6IHBvcnRhbFRlbXBsYXRlICE9PSAnd3NzJywgJ2FwcHNoZWxsLW1haW4td3NzJzogcG9ydGFsVGVtcGxhdGUgPT09ICd3c3MnIH1cIj5cbiAgICA8ZGl2ICpuZ0Zvcj1cImxldCBraWQgb2YgYXJDaGlsZHJlbiRcIj5cbiAgICAgIDxkaXYgKm5nSWY9XCJraWQuZ2V0UENvbm5lY3QoKS5nZXRDb21wb25lbnROYW1lKCkgPT0gJ1ZpZXdDb250YWluZXInXCI+XG4gICAgICAgIDxjb21wb25lbnQtbWFwcGVyIG5hbWU9XCJWaWV3Q29udGFpbmVyXCIgW3Byb3BzXT1cInsgcENvbm4kOiBraWQuZ2V0UENvbm5lY3QoKSB9XCI+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -1,43 +0,0 @@
1
- import { Component, Input, forwardRef } from '@angular/core';
2
- import { ReferenceComponent } from '../../infra/reference/reference.component';
3
- import { CommonModule } from '@angular/common';
4
- import { ComponentMapperComponent } from '../../../_bridge/component-mapper/component-mapper.component';
5
- import * as i0 from "@angular/core";
6
- export class BannerPageComponent {
7
- constructor() {
8
- this.backgroundImage = this.configProps$?.backgroundImage;
9
- }
10
- ngOnInit() {
11
- // console.log(`ngOnInit (no registerAndSubscribe!): Region`);
12
- this.backgroundImage = this.configProps$?.backgroundImage;
13
- this.updateSelf();
14
- }
15
- ngOnChanges(changes) {
16
- const { pConn$ } = changes;
17
- this.backgroundImage = this.configProps$?.backgroundImage;
18
- if (pConn$.previousValue && pConn$.previousValue !== pConn$.currentValue) {
19
- this.updateSelf();
20
- }
21
- }
22
- updateSelf() {
23
- this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps());
24
- console.log(`url(${this.backgroundImage})`);
25
- this.layout$ = this.configProps$.layout;
26
- this.title = this.configProps$.title;
27
- this.message = this.configProps$.message;
28
- this.backgroundImage = this.configProps$.backgroundImage;
29
- // The children may contain 'reference' components, so normalize the children...
30
- this.arChildren$ = ReferenceComponent.normalizePConnArray(this.pConn$.getChildren());
31
- }
32
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BannerPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
33
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: BannerPageComponent, isStandalone: true, selector: "app-banner-page", inputs: { pConn$: "pConn$", formGroup$: "formGroup$" }, usesOnChanges: true, ngImport: i0, template: "<component-mapper\n name=\"Banner\"\n [props]=\"{\n configProps$,\n arChildren$,\n title,\n message,\n backgroundImage,\n layout$,\n divClass$\n }\"\n></component-mapper>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "component", type: i0.forwardRef(() => ComponentMapperComponent), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
34
- }
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BannerPageComponent, decorators: [{
36
- type: Component,
37
- args: [{ selector: 'app-banner-page', standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)], template: "<component-mapper\n name=\"Banner\"\n [props]=\"{\n configProps$,\n arChildren$,\n title,\n message,\n backgroundImage,\n layout$,\n divClass$\n }\"\n></component-mapper>\n" }]
38
- }], ctorParameters: () => [], propDecorators: { pConn$: [{
39
- type: Input
40
- }], formGroup$: [{
41
- type: Input
42
- }] } });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFubmVyLXBhZ2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL3RlbXBsYXRlL2Jhbm5lci1wYWdlL2Jhbm5lci1wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9iYW5uZXItcGFnZS9iYW5uZXItcGFnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBb0MsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9GLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQzs7QUFpQnhHLE1BQU0sT0FBTyxtQkFBbUI7SUFZOUI7UUFDRSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsZUFBZSxDQUFDO0lBQzVELENBQUM7SUFFRCxRQUFRO1FBQ04sOERBQThEO1FBQzlELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxlQUFlLENBQUM7UUFDMUQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQztRQUMzQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsZUFBZSxDQUFDO1FBRTFELElBQUksTUFBTSxDQUFDLGFBQWEsSUFBSSxNQUFNLENBQUMsYUFBYSxLQUFLLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN6RSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQW9CLENBQUM7UUFDcEcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDO1FBRTVDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7UUFDeEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztRQUNyQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUM7UUFFekQsZ0ZBQWdGO1FBQ2hGLElBQUksQ0FBQyxXQUFXLEdBQUcsa0JBQWtCLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7K0dBMUNVLG1CQUFtQjttR0FBbkIsbUJBQW1CLHdKQ3JCaEMsc01BWUEsNkVET1ksWUFBWSxvREFBbUIsd0JBQXdCOzs0RkFFdEQsbUJBQW1CO2tCQVAvQixTQUFTOytCQUNFLGlCQUFpQixjQUdmLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUMsQ0FBQzt3REFHMUQsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcywgZm9yd2FyZFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBSZWZlcmVuY2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9pbmZyYS9yZWZlcmVuY2UvcmVmZXJlbmNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9jb21wb25lbnQtbWFwcGVyL2NvbXBvbmVudC1tYXBwZXIuY29tcG9uZW50JztcblxuaW50ZXJmYWNlIEJhbm5lclBhZ2VQcm9wcyB7XG4gIC8vIElmIGFueSwgZW50ZXIgYWRkaXRpb25hbCBwcm9wcyB0aGF0IG9ubHkgZXhpc3Qgb24gdGhpcyBjb21wb25lbnRcbiAgbGF5b3V0Pzogc3RyaW5nO1xuICB0aXRsZT86IHN0cmluZztcbiAgbWVzc2FnZT86IHN0cmluZztcbiAgYmFja2dyb3VuZEltYWdlPzogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtYmFubmVyLXBhZ2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vYmFubmVyLXBhZ2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9iYW5uZXItcGFnZS5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBmb3J3YXJkUmVmKCgpID0+IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCldXG59KVxuZXhwb3J0IGNsYXNzIEJhbm5lclBhZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHBDb25uJDogdHlwZW9mIFBDb25uZWN0O1xuICBASW5wdXQoKSBmb3JtR3JvdXAkOiBhbnk7XG5cbiAgY29uZmlnUHJvcHMkOiBCYW5uZXJQYWdlUHJvcHM7XG4gIGFyQ2hpbGRyZW4kOiBhbnlbXTtcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIG1lc3NhZ2U6IGFueTtcbiAgYmFja2dyb3VuZEltYWdlPzogc3RyaW5nO1xuICBsYXlvdXQkPzogc3RyaW5nO1xuICBkaXZDbGFzcyQ6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmJhY2tncm91bmRJbWFnZSA9IHRoaXMuY29uZmlnUHJvcHMkPy5iYWNrZ3JvdW5kSW1hZ2U7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICAvLyBjb25zb2xlLmxvZyhgbmdPbkluaXQgKG5vIHJlZ2lzdGVyQW5kU3Vic2NyaWJlISk6IFJlZ2lvbmApO1xuICAgIHRoaXMuYmFja2dyb3VuZEltYWdlID0gdGhpcy5jb25maWdQcm9wcyQ/LmJhY2tncm91bmRJbWFnZTtcbiAgICB0aGlzLnVwZGF0ZVNlbGYoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBjb25zdCB7IHBDb25uJCB9ID0gY2hhbmdlcztcbiAgICB0aGlzLmJhY2tncm91bmRJbWFnZSA9IHRoaXMuY29uZmlnUHJvcHMkPy5iYWNrZ3JvdW5kSW1hZ2U7XG5cbiAgICBpZiAocENvbm4kLnByZXZpb3VzVmFsdWUgJiYgcENvbm4kLnByZXZpb3VzVmFsdWUgIT09IHBDb25uJC5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMudXBkYXRlU2VsZigpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVNlbGYoKSB7XG4gICAgdGhpcy5jb25maWdQcm9wcyQgPSB0aGlzLnBDb25uJC5yZXNvbHZlQ29uZmlnUHJvcHModGhpcy5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKSkgYXMgQmFubmVyUGFnZVByb3BzO1xuICAgIGNvbnNvbGUubG9nKGB1cmwoJHt0aGlzLmJhY2tncm91bmRJbWFnZX0pYCk7XG5cbiAgICB0aGlzLmxheW91dCQgPSB0aGlzLmNvbmZpZ1Byb3BzJC5sYXlvdXQ7XG4gICAgdGhpcy50aXRsZSA9IHRoaXMuY29uZmlnUHJvcHMkLnRpdGxlO1xuICAgIHRoaXMubWVzc2FnZSA9IHRoaXMuY29uZmlnUHJvcHMkLm1lc3NhZ2U7XG4gICAgdGhpcy5iYWNrZ3JvdW5kSW1hZ2UgPSB0aGlzLmNvbmZpZ1Byb3BzJC5iYWNrZ3JvdW5kSW1hZ2U7XG5cbiAgICAvLyBUaGUgY2hpbGRyZW4gbWF5IGNvbnRhaW4gJ3JlZmVyZW5jZScgY29tcG9uZW50cywgc28gbm9ybWFsaXplIHRoZSBjaGlsZHJlbi4uLlxuICAgIHRoaXMuYXJDaGlsZHJlbiQgPSBSZWZlcmVuY2VDb21wb25lbnQubm9ybWFsaXplUENvbm5BcnJheSh0aGlzLnBDb25uJC5nZXRDaGlsZHJlbigpKTtcbiAgfVxufVxuIiwiPGNvbXBvbmVudC1tYXBwZXJcbiAgbmFtZT1cIkJhbm5lclwiXG4gIFtwcm9wc109XCJ7XG4gICAgY29uZmlnUHJvcHMkLFxuICAgIGFyQ2hpbGRyZW4kLFxuICAgIHRpdGxlLFxuICAgIG1lc3NhZ2UsXG4gICAgYmFja2dyb3VuZEltYWdlLFxuICAgIGxheW91dCQsXG4gICAgZGl2Q2xhc3MkXG4gIH1cIlxuPjwvY29tcG9uZW50LW1hcHBlcj5cbiJdfQ==
@@ -1,101 +0,0 @@
1
- import { Component, Input, forwardRef } from '@angular/core';
2
- import { ReferenceComponent } from '../../infra/reference/reference.component';
3
- import { ComponentMapperComponent } from '../../../_bridge/component-mapper/component-mapper.component';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "../../../_bridge/angular-pconnect";
6
- export class CaseSummaryComponent {
7
- constructor(angularPConnect) {
8
- this.angularPConnect = angularPConnect;
9
- this.angularPConnectData = {};
10
- this.primaryFields$ = [];
11
- this.secondaryFields$ = [];
12
- }
13
- ngOnInit() {
14
- // First thing in initialization is registering and subscribing to the AngularPConnect service
15
- this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
16
- this.initComponent();
17
- }
18
- ngOnDestroy() {
19
- if (this.angularPConnectData.unsubscribeFn) {
20
- this.angularPConnectData.unsubscribeFn();
21
- }
22
- }
23
- initComponent() {
24
- // dereference the View in case the incoming pConn$ is a 'reference'
25
- this.pConn$ = ReferenceComponent.normalizePConn(this.pConn$);
26
- // Then, continue on with other initialization
27
- this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps());
28
- this.arChildren$ = this.pConn$.getChildren();
29
- this.generatePrimaryAndSecondaryFields();
30
- this.status$ = this.configProps$.status;
31
- this.bShowStatus$ = this.configProps$.showStatus;
32
- }
33
- // Callback passed when subscribing to store change
34
- onStateChange() {
35
- // Should always check the bridge to see if the component should
36
- // update itself (re-render)
37
- const bUpdateSelf = this.angularPConnect.shouldComponentUpdate(this);
38
- // ONLY call updateSelf when the component should update
39
- if (bUpdateSelf) {
40
- this.updateSelf();
41
- }
42
- }
43
- updateSelf() {
44
- this.generatePrimaryAndSecondaryFields();
45
- }
46
- ngOnChanges() {
47
- this.initComponent();
48
- }
49
- generatePrimaryAndSecondaryFields() {
50
- this.primaryFields$ = [];
51
- this.secondaryFields$ = [];
52
- for (const oField of this.arChildren$[0].getPConnect().getChildren()) {
53
- const kid = oField.getPConnect();
54
- this.primaryFields$.push(kid.resolveConfigProps(kid.getRawMetadata()));
55
- }
56
- const secondarySummaryFields = this.prepareCaseSummaryData(this.arChildren$[1].getPConnect());
57
- const secondaryChildren = this.arChildren$[1].getPConnect().getChildren();
58
- secondaryChildren.forEach((oField, index) => {
59
- const kid = oField.getPConnect();
60
- const displayLabel = secondarySummaryFields[index].value.getPConnect().getConfigProps().label;
61
- this.secondaryFields$.push({ ...kid.resolveConfigProps(kid.getRawMetadata()), kid, displayLabel });
62
- });
63
- }
64
- prepareComponentInCaseSummary(pConnectMeta, getPConnect) {
65
- const { config, children } = pConnectMeta;
66
- const pConnect = getPConnect();
67
- const caseSummaryComponentObject = {};
68
- const { type } = pConnectMeta;
69
- const createdComponent = pConnect.createComponent({
70
- type,
71
- children: children ? [...children] : [],
72
- config: {
73
- ...config
74
- }
75
- });
76
- caseSummaryComponentObject.value = createdComponent;
77
- return caseSummaryComponentObject;
78
- }
79
- prepareCaseSummaryData(summaryFieldChildren) {
80
- const convertChildrenToSummaryData = kid => {
81
- return kid?.map((childItem, index) => {
82
- const childMeta = childItem.getPConnect().meta;
83
- const caseSummaryComponentObject = this.prepareComponentInCaseSummary(childMeta, childItem.getPConnect);
84
- caseSummaryComponentObject.id = index + 1;
85
- return caseSummaryComponentObject;
86
- });
87
- };
88
- return summaryFieldChildren ? convertChildrenToSummaryData(summaryFieldChildren?.getChildren()) : undefined;
89
- }
90
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CaseSummaryComponent, deps: [{ token: i1.AngularPConnectService }], target: i0.ɵɵFactoryTarget.Component }); }
91
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CaseSummaryComponent, isStandalone: true, selector: "app-case-summary", inputs: { pConn$: "pConn$", formGroup$: "formGroup$" }, usesOnChanges: true, ngImport: i0, template: "<component-mapper name=\"CaseSummaryFields\" [props]=\"{ status$, bShowStatus$, primaryFields$, secondaryFields$ }\"></component-mapper>\n", styles: [".psdk-case-summary-info-box{display:flex;flex-direction:row;justify-content:space-evenly}.psdk-case-summary-data{flex:1}.psdk-case-view-label{font-size:1rem;display:block;transform:translateY(.2em) scale(.75) perspective(100px) translateZ(.001px);-ms-transform:translateY(.2em) scale(.75);width:133.33333%}.psdk-label-readonly{font-size:1rem;display:block;transform:translateY(-1.28125em) scale(.75) perspective(100px) translateZ(.001px);-ms-transform:translateY(-1.28125em) scale(.75);width:133.33333%}.psdk-data-readonly{padding-top:.625rem;width:100%}.psdk-status{background-color:var(--app-primary-color);color:var(--app-form-color);padding:0;margin-top:.625rem;width:fit-content}::ng-deep .mat-mdc-form-field-infix{width:auto}\n"], dependencies: [{ kind: "component", type: i0.forwardRef(() => ComponentMapperComponent), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
92
- }
93
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CaseSummaryComponent, decorators: [{
94
- type: Component,
95
- args: [{ selector: 'app-case-summary', standalone: true, imports: [forwardRef(() => ComponentMapperComponent)], template: "<component-mapper name=\"CaseSummaryFields\" [props]=\"{ status$, bShowStatus$, primaryFields$, secondaryFields$ }\"></component-mapper>\n", styles: [".psdk-case-summary-info-box{display:flex;flex-direction:row;justify-content:space-evenly}.psdk-case-summary-data{flex:1}.psdk-case-view-label{font-size:1rem;display:block;transform:translateY(.2em) scale(.75) perspective(100px) translateZ(.001px);-ms-transform:translateY(.2em) scale(.75);width:133.33333%}.psdk-label-readonly{font-size:1rem;display:block;transform:translateY(-1.28125em) scale(.75) perspective(100px) translateZ(.001px);-ms-transform:translateY(-1.28125em) scale(.75);width:133.33333%}.psdk-data-readonly{padding-top:.625rem;width:100%}.psdk-status{background-color:var(--app-primary-color);color:var(--app-form-color);padding:0;margin-top:.625rem;width:fit-content}::ng-deep .mat-mdc-form-field-infix{width:auto}\n"] }]
96
- }], ctorParameters: () => [{ type: i1.AngularPConnectService }], propDecorators: { pConn$: [{
97
- type: Input
98
- }], formGroup$: [{
99
- type: Input
100
- }] } });
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS1zdW1tYXJ5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9jYXNlLXN1bW1hcnkvY2FzZS1zdW1tYXJ5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy90ZW1wbGF0ZS9jYXNlLXN1bW1hcnkvY2FzZS1zdW1tYXJ5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFVBQVUsRUFBd0IsTUFBTSxlQUFlLENBQUM7QUFHM0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDL0UsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOERBQThELENBQUM7OztBQWlCeEcsTUFBTSxPQUFPLG9CQUFvQjtJQWMvQixZQUFvQixlQUF1QztRQUF2QyxvQkFBZSxHQUFmLGVBQWUsQ0FBd0I7UUFWM0Qsd0JBQW1CLEdBQXdCLEVBQUUsQ0FBQztRQU85QyxtQkFBYyxHQUFVLEVBQUUsQ0FBQztRQUMzQixxQkFBZ0IsR0FBVSxFQUFFLENBQUM7SUFFaUMsQ0FBQztJQUUvRCxRQUFRO1FBQ04sOEZBQThGO1FBQzlGLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLDZCQUE2QixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFeEcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDM0MsSUFBSSxDQUFDLG1C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LENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHdCQUF3QixDQUFDLENBQUM7MkZBRzVDLE1BQU07c0JBQWQsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBmb3J3YXJkUmVmLCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQW5ndWxhclBDb25uZWN0RGF0YSwgQW5ndWxhclBDb25uZWN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL19icmlkZ2UvYW5ndWxhci1wY29ubmVjdCc7XG5pbXBvcnQgeyBSZWZlcmVuY2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9pbmZyYS9yZWZlcmVuY2UvcmVmZXJlbmNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21wb25lbnRNYXBwZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9fYnJpZGdlL2NvbXBvbmVudC1tYXBwZXIvY29tcG9uZW50LW1hcHBlci5jb21wb25lbnQnO1xuXG5pbnRlcmZhY2UgQ2FzZVN1bW1hcnlQcm9wcyB7XG4gIC8vIElmIGFueSwgZW50ZXIgYWRkaXRpb25hbCBwcm9wcyB0aGF0IG9ubHkgZXhpc3Qgb24gdGhpcyBjb21wb25lbnRcbiAgc3RhdHVzPzogc3RyaW5nO1xuICBzaG93U3RhdHVzPzogYm9vbGVhbjtcbiAgdGVtcGxhdGU/OiBzdHJpbmc7XG4gIHJlYWRPbmx5PzogYm9vbGVhbjtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNhc2Utc3VtbWFyeScsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYXNlLXN1bW1hcnkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYXNlLXN1bW1hcnkuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW2ZvcndhcmRSZWYoKCkgPT4gQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50KV1cbn0pXG5leHBvcnQgY2xhc3MgQ2FzZVN1bW1hcnlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgcENvbm4kOiB0eXBlb2YgUENvbm5lY3Q7XG4gIEBJbnB1dCgpIGZvcm1Hcm91cCQ6IEZvcm1Hcm91cDtcblxuICBhbmd1bGFyUENvbm5lY3REYXRhOiBBbmd1bGFyUENvbm5lY3REYXRhID0ge307XG4gIGNvbmZpZ1Byb3BzJDogQ2FzZVN1bW1hcnlQcm9wcztcblxuICBhckNoaWxkcmVuJDogYW55W107XG5cbiAgc3RhdHVzJD86IHN0cmluZztcbiAgYlNob3dTdGF0dXMkPzogYm9vbGVhbjtcbiAgcHJpbWFyeUZpZWxkcyQ6IGFueVtdID0gW107XG4gIHNlY29uZGFyeUZpZWxkcyQ6IGFueVtdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBhbmd1bGFyUENvbm5lY3Q6IEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gRmlyc3QgdGhpbmcgaW4gaW5pdGlhbGl6YXRpb24gaXMgcmVnaXN0ZXJpbmcgYW5kIHN1YnNjcmliaW5nIHRvIHRoZSBBbmd1bGFyUENvbm5lY3Qgc2VydmljZVxuICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YSA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnJlZ2lzdGVyQW5kU3Vic2NyaWJlQ29tcG9uZW50KHRoaXMsIHRoaXMub25TdGF0ZUNoYW5nZSk7XG5cbiAgICB0aGlzLmluaXRDb21wb25lbnQoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbikge1xuICAgICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnVuc3Vic2NyaWJlRm4oKTtcbiAgICB9XG4gIH1cblxuICBpbml0Q29tcG9uZW50KCkge1xuICAgIC8vIGRlcmVmZXJlbmNlIHRoZSBWaWV3IGluIGNhc2UgdGhlIGluY29taW5nIHBDb25uJCBpcyBhICdyZWZlcmVuY2UnXG4gICAgdGhpcy5wQ29ubiQgPSBSZWZlcmVuY2VDb21wb25lbnQubm9ybWFsaXplUENvbm4odGhpcy5wQ29ubiQpO1xuXG4gICAgLy8gVGhlbiwgY29udGludWUgb24gd2l0aCBvdGhlciBpbml0aWFsaXphdGlvblxuXG4gICAgdGhpcy5jb25maWdQcm9wcyQgPSB0aGlzLnBDb25uJC5yZXNvbHZlQ29uZmlnUHJvcHModGhpcy5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKSkgYXMgQ2FzZVN1bW1hcnlQcm9wcztcbiAgICB0aGlzLmFyQ2hpbGRyZW4kID0gdGhpcy5wQ29ubiQuZ2V0Q2hpbGRyZW4oKSBhcyBhbnlbXTtcblxuICAgIHRoaXMuZ2VuZXJhdGVQcmltYXJ5QW5kU2Vjb25kYXJ5RmllbGRzKCk7XG5cbiAgICB0aGlzLnN0YXR1cyQgPSB0aGlzLmNvbmZpZ1Byb3BzJC5zdGF0dXM7XG4gICAgdGhpcy5iU2hvd1N0YXR1cyQgPSB0aGlzLmNvbmZpZ1Byb3BzJC5zaG93U3RhdHVzO1xuICB9XG5cbiAgLy8gQ2FsbGJhY2sgcGFzc2VkIHdoZW4gc3Vic2NyaWJpbmcgdG8gc3RvcmUgY2hhbmdlXG4gIG9uU3RhdGVDaGFuZ2UoKSB7XG4gICAgLy8gU2hvdWxkIGFsd2F5cyBjaGVjayB0aGUgYnJpZGdlIHRvIHNlZSBpZiB0aGUgY29tcG9uZW50IHNob3VsZFxuICAgIC8vIHVwZGF0ZSBpdHNlbGYgKHJlLXJlbmRlcilcbiAgICBjb25zdCBiVXBkYXRlU2VsZiA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnNob3VsZENvbXBvbmVudFVwZGF0ZSh0aGlzKTtcblxuICAgIC8vIE9OTFkgY2FsbCB1cGRhdGVTZWxmIHdoZW4gdGhlIGNvbXBvbmVudCBzaG91bGQgdXBkYXRlXG4gICAgaWYgKGJVcGRhdGVTZWxmKSB7XG4gICAgICB0aGlzLnVwZGF0ZVNlbGYoKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVTZWxmKCkge1xuICAgIHRoaXMuZ2VuZXJhdGVQcmltYXJ5QW5kU2Vjb25kYXJ5RmllbGRzKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICB0aGlzLmluaXRDb21wb25lbnQoKTtcbiAgfVxuXG4gIGdlbmVyYXRlUHJpbWFyeUFuZFNlY29uZGFyeUZpZWxkcygpIHtcbiAgICB0aGlzLnByaW1hcnlGaWVsZHMkID0gW107XG4gICAgdGhpcy5zZWNvbmRhcnlGaWVsZHMkID0gW107XG5cbiAgICBmb3IgKGNvbnN0IG9GaWVsZCBvZiB0aGlzLmFyQ2hpbGRyZW4kWzBdLmdldFBDb25uZWN0KCkuZ2V0Q2hpbGRyZW4oKSkge1xuICAgICAgY29uc3Qga2lkID0gb0ZpZWxkLmdldFBDb25uZWN0KCk7XG4gICAgICB0aGlzLnByaW1hcnlGaWVsZHMkLnB1c2goa2lkLnJlc29sdmVDb25maWdQcm9wcyhraWQuZ2V0UmF3TWV0YWRhdGEoKSkpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlY29uZGFyeVN1bW1hcnlGaWVsZHMgPSB0aGlzLnByZXBhcmVDYXNlU3VtbWFyeURhdGEodGhpcy5hckNoaWxkcmVuJFsxXS5nZXRQQ29ubmVjdCgpKTtcbiAgICBjb25zdCBzZWNvbmRhcnlDaGlsZHJlbiA9IHRoaXMuYXJDaGlsZHJlbiRbMV0uZ2V0UENvbm5lY3QoKS5nZXRDaGlsZHJlbigpO1xuICAgIHNlY29uZGFyeUNoaWxkcmVuLmZvckVhY2goKG9GaWVsZCwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGtpZCA9IG9GaWVsZC5nZXRQQ29ubmVjdCgpO1xuICAgICAgY29uc3QgZGlzcGxheUxhYmVsID0gc2Vjb25kYXJ5U3VtbWFyeUZpZWxkc1tpbmRleF0udmFsdWUuZ2V0UENvbm5lY3QoKS5nZXRDb25maWdQcm9wcygpLmxhYmVsO1xuICAgICAgdGhpcy5zZWNvbmRhcnlGaWVsZHMkLnB1c2goeyAuLi5raWQucmVzb2x2ZUNvbmZpZ1Byb3BzKGtpZC5nZXRSYXdNZXRhZGF0YSgpKSwga2lkLCBkaXNwbGF5TGFiZWwgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwcmVwYXJlQ29tcG9uZW50SW5DYXNlU3VtbWFyeShwQ29ubmVjdE1ldGEsIGdldFBDb25uZWN0KSB7XG4gICAgY29uc3QgeyBjb25maWcsIGNoaWxkcmVuIH0gPSBwQ29ubmVjdE1ldGE7XG4gICAgY29uc3QgcENvbm5lY3QgPSBnZXRQQ29ubmVjdCgpO1xuXG4gICAgY29uc3QgY2FzZVN1bW1hcnlDb21wb25lbnRPYmplY3Q6IGFueSA9IHt9O1xuXG4gICAgY29uc3QgeyB0eXBlIH0gPSBwQ29ubmVjdE1ldGE7XG4gICAgY29uc3QgY3JlYXRlZENvbXBvbmVudCA9IHBDb25uZWN0LmNyZWF0ZUNvbXBvbmVudCh7XG4gICAgICB0eXBlLFxuICAgICAgY2hpbGRyZW46IGNoaWxkcmVuID8gWy4uLmNoaWxkcmVuXSA6IFtdLFxuICAgICAgY29uZmlnOiB7XG4gICAgICAgIC4uLmNvbmZpZ1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY2FzZVN1bW1hcnlDb21wb25lbnRPYmplY3QudmFsdWUgPSBjcmVhdGVkQ29tcG9uZW50O1xuICAgIHJldHVybiBjYXNlU3VtbWFyeUNvbXBvbmVudE9iamVjdDtcbiAgfVxuXG4gIHByZXBhcmVDYXNlU3VtbWFyeURhdGEoc3VtbWFyeUZpZWxkQ2hpbGRyZW4pIHtcbiAgICBjb25zdCBjb252ZXJ0Q2hpbGRyZW5Ub1N1bW1hcnlEYXRhID0ga2lkID0+IHtcbiAgICAgIHJldHVybiBraWQ/Lm1hcCgoY2hpbGRJdGVtLCBpbmRleCkgPT4ge1xuICAgICAgICBjb25zdCBjaGlsZE1ldGEgPSBjaGlsZEl0ZW0uZ2V0UENvbm5lY3QoKS5tZXRhO1xuICAgICAgICBjb25zdCBjYXNlU3VtbWFyeUNvbXBvbmVudE9iamVjdCA9IHRoaXMucHJlcGFyZUNvbXBvbmVudEluQ2FzZVN1bW1hcnkoY2hpbGRNZXRhLCBjaGlsZEl0ZW0uZ2V0UENvbm5lY3QpO1xuICAgICAgICBjYXNlU3VtbWFyeUNvbXBvbmVudE9iamVjdC5pZCA9IGluZGV4ICsgMTtcbiAgICAgICAgcmV0dXJuIGNhc2VTdW1tYXJ5Q29tcG9uZW50T2JqZWN0O1xuICAgICAgfSk7XG4gICAgfTtcbiAgICByZXR1cm4gc3VtbWFyeUZpZWxkQ2hpbGRyZW4gPyBjb252ZXJ0Q2hpbGRyZW5Ub1N1bW1hcnlEYXRhKHN1bW1hcnlGaWVsZENoaWxkcmVuPy5nZXRDaGlsZHJlbigpKSA6IHVuZGVmaW5lZDtcbiAgfVxufVxuIiwiPGNvbXBvbmVudC1tYXBwZXIgbmFtZT1cIkNhc2VTdW1tYXJ5RmllbGRzXCIgW3Byb3BzXT1cInsgc3RhdHVzJCwgYlNob3dTdGF0dXMkLCBwcmltYXJ5RmllbGRzJCwgc2Vjb25kYXJ5RmllbGRzJCB9XCI+PC9jb21wb25lbnQtbWFwcGVyPlxuIl19