@pega/angular-sdk-components 0.24.9 → 0.25.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (312) hide show
  1. package/fesm2022/pega-angular-sdk-components.mjs +6103 -4676
  2. package/fesm2022/pega-angular-sdk-components.mjs.map +1 -1
  3. package/lib/_bridge/angular-pconnect.d.ts +1 -1
  4. package/lib/_bridge/component-mapper/component-mapper.component.d.ts +1 -1
  5. package/lib/_bridge/helpers/sdk-pega-component-map.d.ts +18 -0
  6. package/lib/_components/designSystemExtension/banner/banner.component.d.ts +0 -1
  7. package/lib/_components/designSystemExtension/case-create-stage/case-create-stage.component.d.ts +0 -1
  8. package/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.d.ts +1 -1
  9. package/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.d.ts +2 -1
  10. package/lib/_components/designSystemExtension/operator/operator.component.d.ts +2 -3
  11. package/lib/_components/designSystemExtension/pulse/pulse.component.d.ts +2 -3
  12. package/lib/_components/field/auto-complete/auto-complete.component.d.ts +15 -38
  13. package/lib/_components/field/cancel-alert/cancel-alert.component.d.ts +7 -6
  14. package/lib/_components/field/check-box/check-box.component.d.ts +10 -33
  15. package/lib/_components/field/currency/currency.component.d.ts +25 -38
  16. package/lib/_components/field/date/date.component.d.ts +9 -49
  17. package/lib/_components/field/date-time/date-time.component.d.ts +11 -34
  18. package/lib/_components/field/decimal/decimal.component.d.ts +20 -35
  19. package/lib/_components/field/dropdown/dropdown.component.d.ts +22 -35
  20. package/lib/_components/field/email/email.component.d.ts +7 -33
  21. package/lib/_components/field/field.base.d.ts +57 -0
  22. package/lib/_components/field/group/group.component.d.ts +5 -3
  23. package/lib/_components/field/integer/integer.component.d.ts +7 -32
  24. package/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.d.ts +1 -2
  25. package/lib/_components/field/location/location.component.d.ts +71 -0
  26. package/lib/_components/field/multiselect/multiselect.component.d.ts +8 -39
  27. package/lib/_components/field/object-reference/object-reference.component.d.ts +45 -0
  28. package/lib/_components/field/percentage/percentage.component.d.ts +22 -36
  29. package/lib/_components/field/phone/phone.component.d.ts +9 -37
  30. package/lib/_components/field/radio-buttons/radio-buttons.component.d.ts +13 -33
  31. package/lib/_components/field/rich-text/rich-text.component.d.ts +7 -29
  32. package/lib/_components/field/scalar-list/scalar-list.component.d.ts +6 -22
  33. package/lib/_components/field/selectable-card/selectable-card.component.d.ts +62 -0
  34. package/lib/_components/field/semantic-link/semantic-link.component.d.ts +21 -1
  35. package/lib/_components/field/text/text.component.d.ts +3 -2
  36. package/lib/_components/field/text-area/text-area.component.d.ts +6 -32
  37. package/lib/_components/field/text-content/text-content.component.d.ts +0 -1
  38. package/lib/_components/field/text-input/text-input.component.d.ts +6 -33
  39. package/lib/_components/field/time/time.component.d.ts +7 -33
  40. package/lib/_components/field/url/url.component.d.ts +6 -33
  41. package/lib/_components/field/user-reference/user-reference.component.d.ts +7 -1
  42. package/lib/_components/infra/Containers/flow-container/flow-container.component.d.ts +0 -2
  43. package/lib/_components/infra/Containers/flow-container/helpers.d.ts +1 -0
  44. package/lib/_components/infra/Containers/hybrid-view-container/hybrid-view-container.component.d.ts +0 -1
  45. package/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.d.ts +5 -10
  46. package/lib/_components/infra/Containers/preview-view-container/preview-view-container.component.d.ts +0 -1
  47. package/lib/_components/infra/Containers/view-container/helper.d.ts +2 -0
  48. package/lib/_components/infra/Containers/view-container/view-container.component.d.ts +0 -1
  49. package/lib/_components/infra/action-buttons/action-buttons.component.d.ts +1 -1
  50. package/lib/_components/infra/assignment/assignment.component.d.ts +8 -6
  51. package/lib/_components/infra/assignment-card/assignment-card.component.d.ts +3 -3
  52. package/lib/_components/infra/dashboard-filter/dashboard-filter.component.d.ts +0 -1
  53. package/lib/_components/infra/defer-load/defer-load.component.d.ts +9 -9
  54. package/lib/_components/infra/error-boundary/error-boundary.component.d.ts +1 -1
  55. package/lib/_components/infra/multi-step/multi-step.component.d.ts +0 -1
  56. package/lib/_components/infra/navbar/navbar.component.d.ts +2 -4
  57. package/lib/_components/infra/reference/reference.component.d.ts +23 -3
  58. package/lib/_components/infra/region/region.component.d.ts +0 -1
  59. package/lib/_components/infra/root-container/root-container.component.d.ts +3 -2
  60. package/lib/_components/infra/stages/stages.component.d.ts +2 -2
  61. package/lib/_components/infra/view/view.component.d.ts +1 -1
  62. package/lib/_components/template/advanced-search/advanced-search.component.d.ts +21 -0
  63. package/lib/_components/template/advanced-search/search-group/persist-utils.d.ts +23 -0
  64. package/lib/_components/template/advanced-search/search-groups/search-groups.component.d.ts +47 -0
  65. package/lib/_components/template/advanced-search/search-groups/utils.d.ts +15 -0
  66. package/lib/_components/template/app-shell/app-shell.component.d.ts +6 -3
  67. package/lib/_components/template/banner-page/banner-page.component.d.ts +0 -1
  68. package/lib/_components/template/base/details-template-base.d.ts +21 -0
  69. package/lib/_components/template/base/form-template-base.d.ts +10 -0
  70. package/lib/_components/template/case-summary/case-summary.component.d.ts +3 -3
  71. package/lib/_components/template/case-view/case-view.component.d.ts +1 -3
  72. package/lib/_components/template/confirmation/confirmation.component.d.ts +0 -1
  73. package/lib/_components/template/data-reference/data-reference-advanced-search.service.d.ts +9 -0
  74. package/lib/_components/template/data-reference/data-reference.component.d.ts +27 -3
  75. package/lib/_components/template/data-reference/search-form/search-form.component.d.ts +39 -0
  76. package/lib/_components/template/data-reference/search-form/tabsData.d.ts +2 -0
  77. package/lib/_components/template/data-reference/utils.d.ts +14 -0
  78. package/lib/_components/template/default-form/default-form.component.d.ts +10 -8
  79. package/lib/_components/template/default-page/default-page.component.d.ts +29 -0
  80. package/lib/_components/template/details/details.component.d.ts +3 -12
  81. package/lib/_components/template/details-narrow-wide/details-narrow-wide.component.d.ts +3 -12
  82. package/lib/_components/template/details-one-column/details-one-column.component.d.ts +3 -14
  83. package/lib/_components/template/details-sub-tabs/details-sub-tabs.component.d.ts +3 -14
  84. package/lib/_components/template/details-three-column/details-three-column.component.d.ts +3 -14
  85. package/lib/_components/template/details-two-column/details-two-column.component.d.ts +3 -14
  86. package/lib/_components/template/details-wide-narrow/details-wide-narrow.component.d.ts +3 -14
  87. package/lib/_components/template/dynamic-tabs/dynamic-tabs.component.d.ts +1 -1
  88. package/lib/_components/template/field-group-template/field-group-template.component.d.ts +12 -9
  89. package/lib/_components/template/inline-dashboard/inline-dashboard.component.d.ts +0 -1
  90. package/lib/_components/template/inline-dashboard-page/inline-dashboard-page.component.d.ts +0 -1
  91. package/lib/_components/template/list-page/list-page.component.d.ts +0 -1
  92. package/lib/_components/template/list-view/list-view.component.d.ts +20 -5
  93. package/lib/_components/template/list-view/listViewHelpers.d.ts +1 -1
  94. package/lib/_components/template/multi-reference-readonly/multi-reference-readonly.component.d.ts +0 -1
  95. package/lib/_components/template/narrow-wide-form/narrow-wide-form.component.d.ts +0 -1
  96. package/lib/_components/template/object-page/object-page.component.d.ts +8 -0
  97. package/lib/_components/template/one-column/one-column.component.d.ts +2 -2
  98. package/lib/_components/template/one-column-page/one-column-page.component.d.ts +0 -1
  99. package/lib/_components/template/one-column-tab/one-column-tab.component.d.ts +0 -1
  100. package/lib/_components/template/page/page.component.d.ts +0 -1
  101. package/lib/_components/template/promoted-filters/promoted-filters.component.d.ts +0 -1
  102. package/lib/_components/template/repeating-structures/repeating-structures.component.d.ts +0 -1
  103. package/lib/_components/template/self-service-case-view/self-service-case-view.component.d.ts +59 -0
  104. package/lib/_components/template/simple-table/simple-table.component.d.ts +0 -1
  105. package/lib/_components/template/simple-table-manual/helpers.d.ts +19 -4
  106. package/lib/_components/template/simple-table-manual/simple-table-manual.component.d.ts +11 -4
  107. package/lib/_components/template/simple-table-select/simple-table-select.component.d.ts +0 -1
  108. package/lib/_components/template/single-reference-readonly/single-reference-readonly.component.d.ts +18 -3
  109. package/lib/_components/template/sub-tabs/sub-tabs.component.d.ts +0 -1
  110. package/lib/_components/template/three-column/three-column.component.d.ts +2 -2
  111. package/lib/_components/template/three-column-page/three-column-page.component.d.ts +0 -1
  112. package/lib/_components/template/two-column/two-column.component.d.ts +2 -2
  113. package/lib/_components/template/two-column-page/two-column-page.component.d.ts +0 -1
  114. package/lib/_components/template/two-column-tab/two-column-tab.component.d.ts +0 -1
  115. package/lib/_components/template/utils.d.ts +11 -0
  116. package/lib/_components/template/wide-narrow-form/wide-narrow-form.component.d.ts +2 -2
  117. package/lib/_components/template/wide-narrow-page/wide-narrow-page.component.d.ts +1 -2
  118. package/lib/_components/template/wss-nav-bar/wss-nav-bar.component.d.ts +4 -7
  119. package/lib/_components/widget/app-announcement/app-announcement.component.d.ts +0 -1
  120. package/lib/_components/widget/attachment/Attachment.types.d.ts +87 -0
  121. package/lib/_components/widget/attachment/AttachmentUtils.d.ts +17 -0
  122. package/lib/_components/widget/attachment/attachment.component.d.ts +20 -36
  123. package/lib/_components/widget/case-history/case-history.component.d.ts +0 -1
  124. package/lib/_components/widget/feed-container/feed-container.component.d.ts +4 -5
  125. package/lib/_components/widget/file-utility/file-utility.component.d.ts +1 -2
  126. package/lib/_components/widget/quick-create/quick-create.component.d.ts +0 -1
  127. package/lib/_components/widget/todo/todo.component.d.ts +13 -15
  128. package/lib/_components/widget/utility/utility.component.d.ts +0 -1
  129. package/lib/_helpers/common.d.ts +1 -1
  130. package/lib/_helpers/createstage-utils.d.ts +1 -0
  131. package/lib/_helpers/field-group-utils.d.ts +1 -3
  132. package/lib/_helpers/filter-utils.d.ts +1 -3
  133. package/lib/_helpers/formatters/boolean.d.ts +1 -2
  134. package/lib/_helpers/formatters/common.d.ts +2 -2
  135. package/lib/_helpers/formatters/currency.d.ts +1 -2
  136. package/lib/_helpers/formatters/date.d.ts +1 -2
  137. package/lib/_helpers/formatters/index.d.ts +1 -2
  138. package/lib/_helpers/objectReference-utils.d.ts +6 -0
  139. package/lib/_helpers/semanticLink-utils.d.ts +9 -0
  140. package/lib/_helpers/tab-utils.d.ts +4 -0
  141. package/lib/_helpers/utils.d.ts +13 -1
  142. package/lib/_messages/error-messages.service.d.ts +1 -1
  143. package/lib/_services/banner.service.d.ts +8 -0
  144. package/lib/_services/case.service.d.ts +1 -1
  145. package/lib/_services/datapage.service.d.ts +1 -1
  146. package/lib/_services/endpoints.d.ts +0 -1
  147. package/lib/_services/google-maps-loader.service.d.ts +7 -0
  148. package/lib/doc/KeyReleaseUpdates.md +35 -1
  149. package/package.json +20 -6
  150. package/public-api.d.ts +27 -11
  151. package/esm2022/lib/_bridge/angular-pconnect.mjs +0 -428
  152. package/esm2022/lib/_bridge/component-mapper/component-mapper.component.mjs +0 -114
  153. package/esm2022/lib/_bridge/helpers/sdk-pega-component-map.mjs +0 -239
  154. package/esm2022/lib/_bridge/helpers/sdk_component_map.mjs +0 -142
  155. package/esm2022/lib/_components/designSystemExtension/alert/alert.component.mjs +0 -50
  156. package/esm2022/lib/_components/designSystemExtension/alert-banner/alert-banner.component.mjs +0 -29
  157. package/esm2022/lib/_components/designSystemExtension/banner/banner.component.mjs +0 -31
  158. package/esm2022/lib/_components/designSystemExtension/case-create-stage/case-create-stage.component.mjs +0 -51
  159. package/esm2022/lib/_components/designSystemExtension/field-group/field-group.component.mjs +0 -31
  160. package/esm2022/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.mjs +0 -83
  161. package/esm2022/lib/_components/designSystemExtension/material-details/material-details.component.mjs +0 -37
  162. package/esm2022/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.mjs +0 -31
  163. package/esm2022/lib/_components/designSystemExtension/material-summary-item/material-summary-item.component.mjs +0 -36
  164. package/esm2022/lib/_components/designSystemExtension/material-summary-list/material-summary-list.component.mjs +0 -25
  165. package/esm2022/lib/_components/designSystemExtension/material-utility/material-utility.component.mjs +0 -28
  166. package/esm2022/lib/_components/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.mjs +0 -42
  167. package/esm2022/lib/_components/designSystemExtension/operator/operator.component.mjs +0 -143
  168. package/esm2022/lib/_components/designSystemExtension/pulse/pulse.component.mjs +0 -33
  169. package/esm2022/lib/_components/designSystemExtension/rich-text-editor/rich-text-editor.component.mjs +0 -93
  170. package/esm2022/lib/_components/designSystemExtension/wss-quick-create/wss-quick-create.component.mjs +0 -18
  171. package/esm2022/lib/_components/field/auto-complete/auto-complete.component.mjs +0 -286
  172. package/esm2022/lib/_components/field/cancel-alert/cancel-alert.component.mjs +0 -96
  173. package/esm2022/lib/_components/field/check-box/check-box.component.mjs +0 -223
  174. package/esm2022/lib/_components/field/currency/currency.component.mjs +0 -177
  175. package/esm2022/lib/_components/field/date/date.component.mjs +0 -225
  176. package/esm2022/lib/_components/field/date-time/date-time.component.mjs +0 -181
  177. package/esm2022/lib/_components/field/decimal/decimal.component.mjs +0 -185
  178. package/esm2022/lib/_components/field/dropdown/dropdown.component.mjs +0 -192
  179. package/esm2022/lib/_components/field/email/email.component.mjs +0 -150
  180. package/esm2022/lib/_components/field/group/group.component.mjs +0 -64
  181. package/esm2022/lib/_components/field/integer/integer.component.mjs +0 -155
  182. package/esm2022/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.mjs +0 -44
  183. package/esm2022/lib/_components/field/multiselect/multiselect.component.mjs +0 -307
  184. package/esm2022/lib/_components/field/multiselect/utils.mjs +0 -187
  185. package/esm2022/lib/_components/field/percentage/percentage.component.mjs +0 -174
  186. package/esm2022/lib/_components/field/phone/phone.component.mjs +0 -167
  187. package/esm2022/lib/_components/field/radio-buttons/radio-buttons.component.mjs +0 -184
  188. package/esm2022/lib/_components/field/rich-text/rich-text.component.mjs +0 -103
  189. package/esm2022/lib/_components/field/scalar-list/scalar-list.component.mjs +0 -96
  190. package/esm2022/lib/_components/field/semantic-link/semantic-link.component.mjs +0 -57
  191. package/esm2022/lib/_components/field/text/text.component.mjs +0 -138
  192. package/esm2022/lib/_components/field/text-area/text-area.component.mjs +0 -153
  193. package/esm2022/lib/_components/field/text-content/text-content.component.mjs +0 -69
  194. package/esm2022/lib/_components/field/text-input/text-input.component.mjs +0 -152
  195. package/esm2022/lib/_components/field/time/time.component.mjs +0 -153
  196. package/esm2022/lib/_components/field/url/url.component.mjs +0 -152
  197. package/esm2022/lib/_components/field/user-reference/user-reference.component.mjs +0 -187
  198. package/esm2022/lib/_components/infra/Containers/base-components/flow-container-base.component.mjs +0 -18
  199. package/esm2022/lib/_components/infra/Containers/base-components/helper.mjs +0 -71
  200. package/esm2022/lib/_components/infra/Containers/flow-container/flow-container.component.mjs +0 -487
  201. package/esm2022/lib/_components/infra/Containers/flow-container/helpers.mjs +0 -68
  202. package/esm2022/lib/_components/infra/Containers/hybrid-view-container/hybrid-view-container.component.mjs +0 -24
  203. package/esm2022/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.mjs +0 -342
  204. package/esm2022/lib/_components/infra/Containers/preview-view-container/preview-view-container.component.mjs +0 -32
  205. package/esm2022/lib/_components/infra/Containers/view-container/view-container.component.mjs +0 -218
  206. package/esm2022/lib/_components/infra/action-buttons/action-buttons.component.mjs +0 -31
  207. package/esm2022/lib/_components/infra/assignment/assignment.component.mjs +0 -383
  208. package/esm2022/lib/_components/infra/assignment-card/assignment-card.component.mjs +0 -47
  209. package/esm2022/lib/_components/infra/dashboard-filter/dashboard-filter.component.mjs +0 -87
  210. package/esm2022/lib/_components/infra/defer-load/defer-load.component.mjs +0 -141
  211. package/esm2022/lib/_components/infra/error-boundary/error-boundary.component.mjs +0 -18
  212. package/esm2022/lib/_components/infra/multi-step/multi-step.component.mjs +0 -80
  213. package/esm2022/lib/_components/infra/navbar/navbar.component.mjs +0 -136
  214. package/esm2022/lib/_components/infra/reference/reference.component.mjs +0 -133
  215. package/esm2022/lib/_components/infra/region/region.component.mjs +0 -33
  216. package/esm2022/lib/_components/infra/root-container/root-container.component.mjs +0 -228
  217. package/esm2022/lib/_components/infra/stages/stages.component.mjs +0 -62
  218. package/esm2022/lib/_components/infra/view/view.component.mjs +0 -173
  219. package/esm2022/lib/_components/template/app-shell/app-shell.component.mjs +0 -140
  220. package/esm2022/lib/_components/template/banner-page/banner-page.component.mjs +0 -43
  221. package/esm2022/lib/_components/template/case-summary/case-summary.component.mjs +0 -101
  222. package/esm2022/lib/_components/template/case-view/case-view.component.mjs +0 -190
  223. package/esm2022/lib/_components/template/confirmation/confirmation.component.mjs +0 -68
  224. package/esm2022/lib/_components/template/data-reference/data-reference.component.mjs +0 -237
  225. package/esm2022/lib/_components/template/default-form/default-form.component.mjs +0 -61
  226. package/esm2022/lib/_components/template/details/details.component.mjs +0 -103
  227. package/esm2022/lib/_components/template/details-narrow-wide/details-narrow-wide.component.mjs +0 -72
  228. package/esm2022/lib/_components/template/details-one-column/details-one-column.component.mjs +0 -71
  229. package/esm2022/lib/_components/template/details-sub-tabs/details-sub-tabs.component.mjs +0 -66
  230. package/esm2022/lib/_components/template/details-three-column/details-three-column.component.mjs +0 -80
  231. package/esm2022/lib/_components/template/details-two-column/details-two-column.component.mjs +0 -77
  232. package/esm2022/lib/_components/template/details-wide-narrow/details-wide-narrow.component.mjs +0 -77
  233. package/esm2022/lib/_components/template/dynamic-tabs/dynamic-tabs.component.mjs +0 -64
  234. package/esm2022/lib/_components/template/field-group-list/field-group-list.component.mjs +0 -23
  235. package/esm2022/lib/_components/template/field-group-template/field-group-template.component.mjs +0 -124
  236. package/esm2022/lib/_components/template/field-value-list/field-value-list.component.mjs +0 -24
  237. package/esm2022/lib/_components/template/inline-dashboard/inline-dashboard.component.mjs +0 -22
  238. package/esm2022/lib/_components/template/inline-dashboard-page/inline-dashboard-page.component.mjs +0 -40
  239. package/esm2022/lib/_components/template/list-page/list-page.component.mjs +0 -14
  240. package/esm2022/lib/_components/template/list-view/DefaultViewMeta.mjs +0 -208
  241. package/esm2022/lib/_components/template/list-view/list-view.component.mjs +0 -1202
  242. package/esm2022/lib/_components/template/list-view/listViewHelpers.mjs +0 -60
  243. package/esm2022/lib/_components/template/list-view/utils.mjs +0 -662
  244. package/esm2022/lib/_components/template/multi-reference-readonly/multi-reference-readonly.component.mjs +0 -44
  245. package/esm2022/lib/_components/template/narrow-wide-form/narrow-wide-form.component.mjs +0 -30
  246. package/esm2022/lib/_components/template/one-column/one-column.component.mjs +0 -30
  247. package/esm2022/lib/_components/template/one-column-page/one-column-page.component.mjs +0 -16
  248. package/esm2022/lib/_components/template/one-column-tab/one-column-tab.component.mjs +0 -30
  249. package/esm2022/lib/_components/template/page/page.component.mjs +0 -52
  250. package/esm2022/lib/_components/template/promoted-filters/promoted-filters.component.mjs +0 -149
  251. package/esm2022/lib/_components/template/repeating-structures/repeating-structures.component.mjs +0 -138
  252. package/esm2022/lib/_components/template/simple-table/simple-table.component.mjs +0 -104
  253. package/esm2022/lib/_components/template/simple-table-manual/helpers.mjs +0 -270
  254. package/esm2022/lib/_components/template/simple-table-manual/simple-table-manual.component.mjs +0 -781
  255. package/esm2022/lib/_components/template/simple-table-select/simple-table-select.component.mjs +0 -129
  256. package/esm2022/lib/_components/template/single-reference-readonly/single-reference-readonly.component.mjs +0 -16
  257. package/esm2022/lib/_components/template/sub-tabs/sub-tabs.component.mjs +0 -67
  258. package/esm2022/lib/_components/template/three-column/three-column.component.mjs +0 -30
  259. package/esm2022/lib/_components/template/three-column-page/three-column-page.component.mjs +0 -16
  260. package/esm2022/lib/_components/template/two-column/two-column.component.mjs +0 -30
  261. package/esm2022/lib/_components/template/two-column-page/two-column-page.component.mjs +0 -40
  262. package/esm2022/lib/_components/template/two-column-tab/two-column-tab.component.mjs +0 -30
  263. package/esm2022/lib/_components/template/utils.mjs +0 -22
  264. package/esm2022/lib/_components/template/wide-narrow-form/wide-narrow-form.component.mjs +0 -30
  265. package/esm2022/lib/_components/template/wide-narrow-page/wide-narrow-page.component.mjs +0 -53
  266. package/esm2022/lib/_components/template/wss-nav-bar/wss-nav-bar.component.mjs +0 -137
  267. package/esm2022/lib/_components/widget/app-announcement/app-announcement.component.mjs +0 -24
  268. package/esm2022/lib/_components/widget/attachment/attachment.component.mjs +0 -395
  269. package/esm2022/lib/_components/widget/case-history/case-history.component.mjs +0 -80
  270. package/esm2022/lib/_components/widget/feed-container/feed-container.component.mjs +0 -521
  271. package/esm2022/lib/_components/widget/file-utility/file-utility.component.mjs +0 -638
  272. package/esm2022/lib/_components/widget/list-utility/list-utility.component.mjs +0 -57
  273. package/esm2022/lib/_components/widget/quick-create/quick-create.component.mjs +0 -75
  274. package/esm2022/lib/_components/widget/todo/todo.component.mjs +0 -214
  275. package/esm2022/lib/_components/widget/utility/utility.component.mjs +0 -34
  276. package/esm2022/lib/_directives/thousand-seperator.directive.mjs +0 -28
  277. package/esm2022/lib/_helpers/case-utils.mjs +0 -71
  278. package/esm2022/lib/_helpers/common.mjs +0 -20
  279. package/esm2022/lib/_helpers/currency-utils.mjs +0 -57
  280. package/esm2022/lib/_helpers/date-format-utils.mjs +0 -68
  281. package/esm2022/lib/_helpers/event-util.mjs +0 -18
  282. package/esm2022/lib/_helpers/field-group-utils.mjs +0 -47
  283. package/esm2022/lib/_helpers/filter-utils.mjs +0 -106
  284. package/esm2022/lib/_helpers/formatters/boolean.mjs +0 -20
  285. package/esm2022/lib/_helpers/formatters/common.mjs +0 -16
  286. package/esm2022/lib/_helpers/formatters/currency-map.mjs +0 -903
  287. package/esm2022/lib/_helpers/formatters/currency.mjs +0 -68
  288. package/esm2022/lib/_helpers/formatters/date.mjs +0 -69
  289. package/esm2022/lib/_helpers/formatters/format-utils.mjs +0 -68
  290. package/esm2022/lib/_helpers/formatters/index.mjs +0 -110
  291. package/esm2022/lib/_helpers/instructions-utils.mjs +0 -36
  292. package/esm2022/lib/_helpers/tab-utils.mjs +0 -59
  293. package/esm2022/lib/_helpers/template-utils.mjs +0 -56
  294. package/esm2022/lib/_helpers/utils.mjs +0 -386
  295. package/esm2022/lib/_helpers/versionHelpers.mjs +0 -12
  296. package/esm2022/lib/_messages/error-messages.service.mjs +0 -31
  297. package/esm2022/lib/_messages/get-login-status.service.mjs +0 -26
  298. package/esm2022/lib/_messages/oauth-response.service.mjs +0 -30
  299. package/esm2022/lib/_messages/progress-spinner.service.mjs +0 -30
  300. package/esm2022/lib/_messages/reset-pconnect.service.mjs +0 -31
  301. package/esm2022/lib/_messages/update-worklist.service.mjs +0 -30
  302. package/esm2022/lib/_services/case.service.mjs +0 -32
  303. package/esm2022/lib/_services/datapage.service.mjs +0 -52
  304. package/esm2022/lib/_services/endpoints.mjs +0 -61
  305. package/esm2022/lib/_services/server-config.service.mjs +0 -52
  306. package/esm2022/lib/_types/PConnProps.interface.mjs +0 -2
  307. package/esm2022/pega-angular-sdk-components.mjs +0 -5
  308. package/esm2022/public-api.mjs +0 -141
  309. package/esm2022/sdk-local-component-map.mjs +0 -9
  310. package/lib/_messages/get-login-status.service.d.ts +0 -10
  311. package/lib/_messages/oauth-response.service.d.ts +0 -14
  312. package/lib/_messages/reset-pconnect.service.d.ts +0 -15
@@ -1,307 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { Component, forwardRef, Input } from '@angular/core';
3
- import { FormControl, ReactiveFormsModule } from '@angular/forms';
4
- import { MatAutocompleteModule } from '@angular/material/autocomplete';
5
- import { MatChipsModule } from '@angular/material/chips';
6
- import { MatCheckboxModule } from '@angular/material/checkbox';
7
- import { MatOptionModule } from '@angular/material/core';
8
- import { MatFormFieldModule } from '@angular/material/form-field';
9
- import { MatInputModule } from '@angular/material/input';
10
- import { MatIconModule } from '@angular/material/icon';
11
- import { ComponentMapperComponent } from '../../../_bridge/component-mapper/component-mapper.component';
12
- import { doSearch, getDisplayFieldsMetaData, getGroupDataForItemsTree, preProcessColumns } from './utils';
13
- import { deleteInstruction, insertInstruction } from '../../../_helpers/instructions-utils';
14
- import * as i0 from "@angular/core";
15
- import * as i1 from "../../../_bridge/angular-pconnect";
16
- import * as i2 from "../../../_helpers/utils";
17
- import * as i3 from "@angular/common";
18
- import * as i4 from "@angular/forms";
19
- import * as i5 from "@angular/material/form-field";
20
- import * as i6 from "@angular/material/input";
21
- import * as i7 from "@angular/material/autocomplete";
22
- import * as i8 from "@angular/material/core";
23
- import * as i9 from "@angular/material/checkbox";
24
- import * as i10 from "@angular/material/icon";
25
- import * as i11 from "@angular/material/chips";
26
- export class MultiselectComponent {
27
- constructor(angularPConnect, utils) {
28
- this.angularPConnect = angularPConnect;
29
- this.utils = utils;
30
- // Used with AngularPConnect
31
- this.angularPConnectData = {};
32
- this.label$ = '';
33
- this.value$ = '';
34
- this.bRequired$ = false;
35
- this.bDisabled$ = false;
36
- this.bVisible$ = true;
37
- this.bHasForm$ = true;
38
- this.fieldControl = new FormControl('', null);
39
- this.showSecondaryInSearchOnly = false;
40
- this.isGroupData = false;
41
- this.groupDataSource = [];
42
- this.matchPosition = 'contains';
43
- this.groupColumnsConfig = [{}];
44
- this.selectedItems = [];
45
- this.itemsTreeBaseData = [];
46
- this.itemsTree = [];
47
- this.optionClicked = (event, data) => {
48
- event.stopPropagation();
49
- this.toggleSelection(data);
50
- };
51
- this.toggleSelection = (data) => {
52
- data.selected = !data.selected;
53
- this.itemsTree.map((ele) => {
54
- if (ele.id === data.id) {
55
- ele.selected = data.selected;
56
- }
57
- return ele;
58
- });
59
- if (data.selected === true) {
60
- this.selectedItems.push(data);
61
- }
62
- else {
63
- const index = this.selectedItems.findIndex(value => value.id === data.id);
64
- this.selectedItems.splice(index, 1);
65
- }
66
- this.value$ = '';
67
- // if this is a referenceList case
68
- if (this.referenceList)
69
- this.setSelectedItemsForReferenceList(data);
70
- this.getCaseListBasedOnParams(this.value$, '', [...this.selectedItems], [...this.itemsTree], true);
71
- };
72
- this.removeChip = (data) => {
73
- if (data) {
74
- data = this.itemsTree.filter((ele) => {
75
- return ele.id === data.id;
76
- });
77
- this.toggleSelection(data[0]);
78
- }
79
- };
80
- }
81
- ngOnInit() {
82
- // First thing in initialization is registering and subscribing to the AngularPConnect service
83
- this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
84
- this.controlName$ = this.angularPConnect.getComponentID(this);
85
- // Then, continue on with other initialization
86
- this.checkAndUpdate();
87
- if (this.formGroup$) {
88
- // add control to formGroup
89
- this.formGroup$.addControl(this.controlName$, this.fieldControl);
90
- this.fieldControl.setValue(this.value$);
91
- this.bHasForm$ = true;
92
- }
93
- else {
94
- this.bHasForm$ = false;
95
- }
96
- }
97
- ngOnDestroy() {
98
- if (this.formGroup$) {
99
- this.formGroup$.removeControl(this.controlName$);
100
- }
101
- if (this.angularPConnectData.unsubscribeFn) {
102
- this.angularPConnectData.unsubscribeFn();
103
- }
104
- }
105
- // Callback passed when subscribing to store change
106
- onStateChange() {
107
- this.checkAndUpdate();
108
- }
109
- checkAndUpdate() {
110
- // Should always check the bridge to see if the component should
111
- // update itself (re-render)
112
- const bUpdateSelf = this.angularPConnect.shouldComponentUpdate(this);
113
- // ONLY call updateSelf when the component should update
114
- if (bUpdateSelf) {
115
- this.updateSelf();
116
- }
117
- }
118
- // updateSelf
119
- updateSelf() {
120
- this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps());
121
- let { datasource = [], columns = [{}] } = this.configProps$;
122
- this.setPropertyValuesFromProps();
123
- if (this.referenceList.length > 0) {
124
- datasource = this.referenceList;
125
- columns = [
126
- {
127
- value: this.primaryField,
128
- display: 'true',
129
- useForSearch: true,
130
- primary: 'true'
131
- },
132
- {
133
- value: this.selectionKey,
134
- setProperty: this.selectionKey,
135
- key: 'true'
136
- }
137
- ];
138
- let secondaryColumns = [];
139
- if (this.secondaryFields) {
140
- secondaryColumns = this.secondaryFields.map(secondaryField => ({
141
- value: secondaryField,
142
- display: 'true',
143
- secondary: 'true',
144
- useForSearch: 'true'
145
- }));
146
- }
147
- else {
148
- secondaryColumns = [
149
- {
150
- value: this.selectionKey,
151
- display: 'true',
152
- secondary: 'true',
153
- useForSearch: 'true'
154
- }
155
- ];
156
- }
157
- if (this.referenceType === 'Case') {
158
- columns = [...columns, ...secondaryColumns];
159
- }
160
- }
161
- this.value$ = this.value$ ? this.value$ : '';
162
- const contextName = this.pConn$.getContextName();
163
- const dataConfig = {
164
- dataSource: datasource,
165
- groupDataSource: this.groupDataSource,
166
- isGroupData: this.isGroupData,
167
- showSecondaryInSearchOnly: this.showSecondaryInSearchOnly,
168
- parameters: this.parameters,
169
- matchPosition: this.matchPosition,
170
- listType: this.listType,
171
- maxResultsDisplay: this.maxResultsDisplay || '100',
172
- columns: preProcessColumns(columns),
173
- groupColumnsConfig: preProcessColumns(this.groupColumnsConfig)
174
- };
175
- const groupsDisplayFieldMeta = this.listType !== 'associated' ? getDisplayFieldsMetaData(dataConfig.groupColumnsConfig) : null;
176
- this.itemsTreeBaseData = getGroupDataForItemsTree(this.groupDataSource, groupsDisplayFieldMeta, this.showSecondaryInSearchOnly) || [];
177
- this.itemsTree = this.isGroupData ? getGroupDataForItemsTree(this.groupDataSource, groupsDisplayFieldMeta, this.showSecondaryInSearchOnly) : [];
178
- this.displayFieldMeta = this.listType !== 'associated' ? getDisplayFieldsMetaData(dataConfig.columns) : null;
179
- this.listActions = this.pConn$.getListActions();
180
- this.pConn$.setReferenceList(this.selectionList);
181
- if (this.configProps$.visibility != null) {
182
- this.bVisible$ = this.utils.getBooleanValue(this.configProps$.visibility);
183
- }
184
- // disabled
185
- if (this.configProps$.disabled != undefined) {
186
- this.bDisabled$ = this.utils.getBooleanValue(this.configProps$.disabled);
187
- }
188
- if (this.bDisabled$) {
189
- this.fieldControl.disable();
190
- }
191
- else {
192
- this.fieldControl.enable();
193
- }
194
- if (this.listType !== 'associated') {
195
- PCore.getDataApi()
196
- ?.init(dataConfig, contextName)
197
- .then(async (dataObj) => {
198
- this.dataApiObj = dataObj;
199
- if (!this.isGroupData) {
200
- this.getCaseListBasedOnParams(this.value$ ?? '', '', [...this.selectedItems], [...this.itemsTree]);
201
- }
202
- });
203
- }
204
- }
205
- setPropertyValuesFromProps() {
206
- this.label$ = this.configProps$.label;
207
- this.placeholder = this.configProps$.placeholder || '';
208
- this.listType = this.configProps$.listType ? this.configProps$.listType : '';
209
- this.hideLabel = this.configProps$.hideLabel;
210
- this.parameters = this.configProps$?.parameters ? this.configProps$?.parameters : {};
211
- this.referenceList = this.configProps$?.referenceList;
212
- this.selectionKey = this.configProps$?.selectionKey;
213
- this.primaryField = this.configProps$?.primaryField;
214
- this.initialCaseClass = this.configProps$?.initialCaseClass;
215
- this.showSecondaryInSearchOnly = this.configProps$?.showSecondaryInSearchOnly ? this.configProps$?.showSecondaryInSearchOnly : false;
216
- this.isGroupData = this.configProps$?.isGroupData ? this.configProps$.isGroupData : false;
217
- this.referenceType = this.configProps$?.referenceType;
218
- this.secondaryFields = this.configProps$?.secondaryFields;
219
- this.groupDataSource = this.configProps$?.groupDataSource ? this.configProps$?.groupDataSource : [];
220
- this.matchPosition = this.configProps$?.matchPosition ? this.configProps$?.matchPosition : 'contains';
221
- this.maxResultsDisplay = this.configProps$?.maxResultsDisplay;
222
- this.groupColumnsConfig = this.configProps$?.groupColumnsConfig ? this.configProps$?.groupColumnsConfig : [{}];
223
- this.selectionList = this.configProps$?.selectionList;
224
- this.value$ = this.configProps$?.value;
225
- }
226
- // main search function trigger
227
- getCaseListBasedOnParams(searchText, group, selectedRows, currentItemsTree, isTriggeredFromSearch = false) {
228
- if (this.referenceList && this.referenceList.length > 0) {
229
- this.listActions.getSelectedRows(true).then(result => {
230
- selectedRows =
231
- result.length > 0
232
- ? result.map(item => {
233
- return {
234
- id: item[this.selectionKey.startsWith('.') ? this.selectionKey.substring(1) : this.selectionKey],
235
- primary: item[this.primaryField.startsWith('.') ? this.primaryField.substring(1) : this.primaryField]
236
- };
237
- })
238
- : [];
239
- this.selectedItems = selectedRows;
240
- const initalItemsTree = isTriggeredFromSearch || !currentItemsTree ? [...this.itemsTreeBaseData] : [...currentItemsTree];
241
- doSearch(searchText, group, this.initialCaseClass, this.displayFieldMeta, this.dataApiObj, initalItemsTree, this.isGroupData, this.showSecondaryInSearchOnly, selectedRows || []).then(res => {
242
- this.itemsTree = res || [];
243
- });
244
- });
245
- }
246
- }
247
- fieldOnChange(event) {
248
- this.value$ = event.target.value;
249
- this.getCaseListBasedOnParams(this.value$, '', [...this.selectedItems], [...this.itemsTree], true);
250
- }
251
- optionChanged(event) {
252
- this.angularPConnectData.actions?.onChange(this, event);
253
- }
254
- setSelectedItemsForReferenceList(data) {
255
- // Clear error messages if any
256
- const propName = this.pConn$.getStateProps().selectionList;
257
- this.pConn$.clearErrorMessages({
258
- property: propName,
259
- category: '',
260
- context: ''
261
- });
262
- const { selected } = data;
263
- if (selected) {
264
- insertInstruction(this.pConn$, this.selectionList, this.selectionKey, this.primaryField, data);
265
- }
266
- else {
267
- deleteInstruction(this.pConn$, this.selectionList, this.selectionKey, data);
268
- }
269
- }
270
- getErrorMessage() {
271
- let errMessage = '';
272
- // look for validation messages for json, pre-defined or just an error pushed from workitem (400)
273
- if (this.fieldControl.hasError('message')) {
274
- errMessage = this.angularPConnectData.validateMessage ?? '';
275
- return errMessage;
276
- }
277
- if (this.fieldControl.hasError('required')) {
278
- errMessage = 'You must enter a value';
279
- }
280
- else if (this.fieldControl.errors) {
281
- errMessage = this.fieldControl.errors.toString();
282
- }
283
- return errMessage;
284
- }
285
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MultiselectComponent, deps: [{ token: i1.AngularPConnectService }, { token: i2.Utils }], target: i0.ɵɵFactoryTarget.Component }); }
286
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MultiselectComponent, isStandalone: true, selector: "app-multiselect", inputs: { pConn$: "pConn$", formGroup$: "formGroup$" }, ngImport: i0, template: "<div [formGroup]=\"formGroup$\">\n <mat-form-field class=\"psdk-full-width\" subscriptSizing=\"dynamic\">\n <mat-label>{{ label$ }}</mat-label>\n <mat-chip-grid #chipGrid>\n <ng-container *ngFor=\"let select of selectedItems\">\n <mat-chip-row (removed)=\"removeChip(select)\">\n {{ select.primary }}\n <button matChipRemove>\n <mat-icon>cancel</mat-icon>\n </button>\n </mat-chip-row>\n </ng-container>\n </mat-chip-grid>\n <input\n matInput\n [placeholder]=\"placeholder\"\n [formControl]=\"fieldControl\"\n [value]=\"value$\"\n [required]=\"bRequired$\"\n [matAutocomplete]=\"auto\"\n (input)=\"fieldOnChange($event)\"\n [matChipInputFor]=\"chipGrid\"\n />\n <mat-autocomplete #auto=\"matAutocomplete\">\n <mat-option *ngFor=\"let item of itemsTree\" [value]=\"item.primary\" (click)=\"optionClicked($event, item)\">\n <mat-checkbox [checked]=\"item.selected\" (click)=\"optionClicked($event, item)\">\n <span>{{ item.primary }}</span>\n </mat-checkbox>\n </mat-option>\n </mat-autocomplete>\n <mat-error *ngIf=\"fieldControl.invalid\">{{ getErrorMessage() }}</mat-error>\n </mat-form-field>\n</div>\n", styles: [".psdk-full-width{width:100%}::ng-deep .mat-mdc-form-field-infix{padding-left:10px}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(() => CommonModule) }, { kind: "directive", type: i0.forwardRef(() => i3.NgForOf), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(() => i3.NgIf), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: i0.forwardRef(() => ReactiveFormsModule) }, { kind: "directive", type: i0.forwardRef(() => i4.DefaultValueAccessor), selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i0.forwardRef(() => i4.NgControlStatus), selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i0.forwardRef(() => i4.NgControlStatusGroup), selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i0.forwardRef(() => i4.RequiredValidator), selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i0.forwardRef(() => i4.FormControlDirective), selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i0.forwardRef(() => i4.FormGroupDirective), selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatFormFieldModule) }, { kind: "component", type: i0.forwardRef(() => i5.MatFormField), selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i0.forwardRef(() => i5.MatLabel), selector: "mat-label" }, { kind: "directive", type: i0.forwardRef(() => i5.MatError), selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatInputModule) }, { kind: "directive", type: i0.forwardRef(() => i6.MatInput), selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatAutocompleteModule) }, { kind: "component", type: i0.forwardRef(() => i7.MatAutocomplete), selector: "mat-autocomplete", inputs: ["aria-label", "aria-labelledby", "displayWith", "autoActiveFirstOption", "autoSelectActiveOption", "requireSelection", "panelWidth", "disableRipple", "class", "hideSingleSelectionIndicator"], outputs: ["optionSelected", "opened", "closed", "optionActivated"], exportAs: ["matAutocomplete"] }, { kind: "component", type: i0.forwardRef(() => i8.MatOption), selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i0.forwardRef(() => i7.MatAutocompleteTrigger), selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatOptionModule) }, { kind: "ngmodule", type: i0.forwardRef(() => MatCheckboxModule) }, { kind: "component", type: i0.forwardRef(() => i9.MatCheckbox), selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatIconModule) }, { kind: "component", type: i0.forwardRef(() => i10.MatIcon), selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: i0.forwardRef(() => MatChipsModule) }, { kind: "component", type: i0.forwardRef(() => i11.MatChipGrid), selector: "mat-chip-grid", inputs: ["disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i0.forwardRef(() => i11.MatChipInput), selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i0.forwardRef(() => i11.MatChipRemove), selector: "[matChipRemove]" }, { kind: "component", type: i0.forwardRef(() => i11.MatChipRow), selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }] }); }
287
- }
288
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MultiselectComponent, decorators: [{
289
- type: Component,
290
- args: [{ selector: 'app-multiselect', standalone: true, imports: [
291
- CommonModule,
292
- ReactiveFormsModule,
293
- MatFormFieldModule,
294
- MatInputModule,
295
- MatAutocompleteModule,
296
- MatOptionModule,
297
- MatCheckboxModule,
298
- MatIconModule,
299
- MatChipsModule,
300
- forwardRef(() => ComponentMapperComponent)
301
- ], template: "<div [formGroup]=\"formGroup$\">\n <mat-form-field class=\"psdk-full-width\" subscriptSizing=\"dynamic\">\n <mat-label>{{ label$ }}</mat-label>\n <mat-chip-grid #chipGrid>\n <ng-container *ngFor=\"let select of selectedItems\">\n <mat-chip-row (removed)=\"removeChip(select)\">\n {{ select.primary }}\n <button matChipRemove>\n <mat-icon>cancel</mat-icon>\n </button>\n </mat-chip-row>\n </ng-container>\n </mat-chip-grid>\n <input\n matInput\n [placeholder]=\"placeholder\"\n [formControl]=\"fieldControl\"\n [value]=\"value$\"\n [required]=\"bRequired$\"\n [matAutocomplete]=\"auto\"\n (input)=\"fieldOnChange($event)\"\n [matChipInputFor]=\"chipGrid\"\n />\n <mat-autocomplete #auto=\"matAutocomplete\">\n <mat-option *ngFor=\"let item of itemsTree\" [value]=\"item.primary\" (click)=\"optionClicked($event, item)\">\n <mat-checkbox [checked]=\"item.selected\" (click)=\"optionClicked($event, item)\">\n <span>{{ item.primary }}</span>\n </mat-checkbox>\n </mat-option>\n </mat-autocomplete>\n <mat-error *ngIf=\"fieldControl.invalid\">{{ getErrorMessage() }}</mat-error>\n </mat-form-field>\n</div>\n", styles: [".psdk-full-width{width:100%}::ng-deep .mat-mdc-form-field-infix{padding-left:10px}\n"] }]
302
- }], ctorParameters: () => [{ type: i1.AngularPConnectService }, { type: i2.Utils }], propDecorators: { pConn$: [{
303
- type: Input
304
- }], formGroup$: [{
305
- type: Input
306
- }] } });
307
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlzZWxlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL2ZpZWxkL211bHRpc2VsZWN0L211bHRpc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy9maWVsZC9tdWx0aXNlbGVjdC9tdWx0aXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQUUsV0FBVyxFQUFhLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0UsT0FBTyxFQUFFLHFCQUFxQixFQUFnQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3JHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUV4RyxPQUFPLEVBQUUsUUFBUSxFQUFFLHdCQUF3QixFQUFFLHdCQUF3QixFQUFFLGlC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LFdBQVcsSUFBSSxFQUFFLENBQUM7UUFDdkQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM3RSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDO1FBQzdDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDckYsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQztRQUN0RCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDO1FBQ3BELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUM7UUFDcEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsZ0JBQWdCLENBQUM7UUFDNUQsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUseUJBQXlCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUseUJBQXlCLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNySSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQzFGLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxhQUFhLENBQUM7UUFDdEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLGVBQWUsQ0FBQztRQUMxRCxJQUFJLENB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QUFDLEVBQUUsQ0FBQztZQUMxQyxVQUFVLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUM7WUFDNUQsT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUMzQyxVQUFVLEdBQUcsd0JBQXdCLENBQUM7UUFDeEMsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbkQsQ0FBQztRQUVELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7K0dBblVVLG9CQUFvQjttR0FBcEIsb0JBQW9CLG1JQ2xDakMsbXZDQWlDQSxpS0RYSSxZQUFZLDhUQUNaLG1CQUFtQixzdUNBQ25CLGtCQUFrQiwyZEFDbEIsY0FBYyxvWkFDZCxxQkFBcUIsNDZCQUNyQixlQUFlLG1EQUNmLGlCQUFpQix1WkFDakIsYUFBYSw4TkFDYixjQUFjOzs0RkFJTCxvQkFBb0I7a0JBbEJoQyxTQUFTOytCQUNFLGlCQUFpQixjQUdmLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLHFCQUFxQjt3QkFDckIsZUFBZTt3QkFDZixpQkFBaUI7d0JBQ2pCLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUM7cUJBQzNDOytHQUdRLE1BQU07c0JBQWQsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0QXV0b2NvbXBsZXRlTW9kdWxlLCBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcbmltcG9ydCB7IE1hdENoaXBzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hpcHMnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNYXRPcHRpb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBBbmd1bGFyUENvbm5lY3REYXRhLCBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9hbmd1bGFyLXBjb25uZWN0JztcbmltcG9ydCB7IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL19icmlkZ2UvY29tcG9uZW50LW1hcHBlci9jb21wb25lbnQtbWFwcGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uLy4uL19oZWxwZXJzL3V0aWxzJztcbmltcG9ydCB7IGRvU2VhcmNoLCBnZXREaXNwbGF5RmllbGRzTWV0YURhdGEsIGdldEdyb3VwRGF0YUZvckl0ZW1zVHJlZSwgcHJlUHJvY2Vzc0NvbHVtbnMgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IGRlbGV0ZUluc3RydWN0aW9uLCBpbnNlcnRJbnN0cnVjdGlvbiB9IGZyb20gJy4uLy4uLy4uL19oZWxwZXJzL2luc3RydWN0aW9ucy11dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1tdWx0aXNlbGVjdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tdWx0aXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL211bHRpc2VsZWN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0QXV0b2NvbXBsZXRlTW9kdWxlLFxuICAgIE1hdE9wdGlvbk1vZHVsZSxcbiAgICBNYXRDaGVja2JveE1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdENoaXBzTW9kdWxlLFxuICAgIGZvcndhcmRSZWYoKCkgPT4gQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50KVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIE11bHRpc2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwQ29ubiQ6IHR5cGVvZiBQQ29ubmVjdDtcbiAgQElucHV0KCkgZm9ybUdyb3VwJDogRm9ybUdyb3VwO1xuXG4gIC8vIFVzZWQgd2l0aCBBbmd1bGFyUENvbm5lY3RcbiAgYW5ndWxhclBDb25uZWN0RGF0YTogQW5ndWxhclBDb25uZWN0RGF0YSA9IHt9O1xuXG4gIGxhYmVsJCA9ICcnO1xuICB2YWx1ZSQgPSAnJztcbiAgYlJlcXVpcmVkJCA9IGZhbHNlO1xuICBiRGlzYWJsZWQkID0gZmFsc2U7XG4gIGJWaXNpYmxlJCA9IHRydWU7XG4gIGNvbnRyb2xOYW1lJDogc3RyaW5nO1xuICBiSGFzRm9ybSQgPSB0cnVlO1xuICBsaXN0VHlwZTogc3RyaW5nO1xuICBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICBmaWVsZENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycsIG51bGwpO1xuICBwYXJhbWV0ZXJzOiB7fTtcbiAgaGlkZUxhYmVsOiBib29sZWFuO1xuICBjb25maWdQcm9wcyQ6IGFueTtcblxuICByZWZlcmVuY2VMaXN0OiBhbnk7XG4gIHNlbGVjdGlvbktleTogc3RyaW5nO1xuICBwcmltYXJ5RmllbGQ6IHN0cmluZztcbiAgaW5pdGlhbENhc2VDbGFzczogYW55O1xuICBzaG93U2Vjb25kYXJ5SW5TZWFyY2hPbmx5ID0gZmFsc2U7XG4gIGlzR3JvdXBEYXRhID0gZmFsc2U7XG4gIHJlZmVyZW5jZVR5cGU7XG4gIHNlY29uZGFyeUZpZWxkcztcbiAgZ3JvdXBEYXRhU291cmNlID0gW107XG4gIG1hdGNoUG9zaXRpb24gPSAnY29udGFpbnMnO1xuICBtYXhSZXN1bHRzRGlzcGxheTtcbiAgZ3JvdXBDb2x1bW5zQ29uZmlnID0gW3t9XTtcbiAgc2VsZWN0aW9uTGlzdDtcbiAgbGlzdEFjdGlvbnM6IGFueTtcbiAgc2VsZWN0ZWRJdGVtczogYW55W10gPSBbXTtcbiAgaXRlbXNUcmVlQmFzZURhdGEgPSBbXTtcbiAgZGlzcGxheUZpZWxkTWV0YTogYW55O1xuICBkYXRhQXBpT2JqOiBhbnk7XG4gIGl0ZW1zVHJlZTogYW55W10gPSBbXTtcbiAgdHJpZ2dlcjogYW55O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYW5ndWxhclBDb25uZWN0OiBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXRpbHM6IFV0aWxzXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBGaXJzdCB0aGluZyBpbiBpbml0aWFsaXphdGlvbiBpcyByZWdpc3RlcmluZyBhbmQgc3Vic2NyaWJpbmcgdG8gdGhlIEFuZ3VsYXJQQ29ubmVjdCBzZXJ2aWNlXG4gICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhID0gdGhpcy5hbmd1bGFyUENvbm5lY3QucmVnaXN0ZXJBbmRTdWJzY3JpYmVDb21wb25lbnQodGhpcywgdGhpcy5vblN0YXRlQ2hhbmdlKTtcbiAgICB0aGlzLmNvbnRyb2xOYW1lJCA9IHRoaXMuYW5ndWxhclBDb25uZWN0LmdldENvbXBvbmVudElEKHRoaXMpO1xuXG4gICAgLy8gVGhlbiwgY29udGludWUgb24gd2l0aCBvdGhlciBpbml0aWFsaXphdGlvblxuICAgIHRoaXMuY2hlY2tBbmRVcGRhdGUoKTtcblxuICAgIGlmICh0aGlzLmZvcm1Hcm91cCQpIHtcbiAgICAgIC8vIGFkZCBjb250cm9sIHRvIGZvcm1Hcm91cFxuICAgICAgdGhpcy5mb3JtR3JvdXAkLmFkZENvbnRyb2wodGhpcy5jb250cm9sTmFtZSQsIHRoaXMuZmllbGRDb250cm9sKTtcbiAgICAgIHRoaXMuZmllbGRDb250cm9sLnNldFZhbHVlKHRoaXMudmFsdWUkKTtcbiAgICAgIHRoaXMuYkhhc0Zvcm0kID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5iSGFzRm9ybSQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb3JtR3JvdXAkKSB7XG4gICAgICB0aGlzLmZvcm1Hcm91cCQucmVtb3ZlQ29udHJvbCh0aGlzLmNvbnRyb2xOYW1lJCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKSB7XG4gICAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbigpO1xuICAgIH1cbiAgfVxuXG4gIC8vIENhbGxiYWNrIHBhc3NlZCB3aGVuIHN1YnNjcmliaW5nIHRvIHN0b3JlIGNoYW5nZVxuICBvblN0YXRlQ2hhbmdlKCkge1xuICAgIHRoaXMuY2hlY2tBbmRVcGRhdGUoKTtcbiAgfVxuXG4gIGNoZWNrQW5kVXBkYXRlKCkge1xuICAgIC8vIFNob3VsZCBhbHdheXMgY2hlY2sgdGhlIGJyaWRnZSB0byBzZWUgaWYgdGhlIGNvbXBvbmVudCBzaG91bGRcbiAgICAvLyB1cGRhdGUgaXRzZWxmIChyZS1yZW5kZXIpXG4gICAgY29uc3QgYlVwZGF0ZVNlbGYgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5zaG91bGRDb21wb25lbnRVcGRhdGUodGhpcyk7XG5cbiAgICAvLyBPTkxZIGNhbGwgdXBkYXRlU2VsZiB3aGVuIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZVxuICAgIGlmIChiVXBkYXRlU2VsZikge1xuICAgICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gdXBkYXRlU2VsZlxuICB1cGRhdGVTZWxmKCkge1xuICAgIHRoaXMuY29uZmlnUHJvcHMkID0gdGhpcy5wQ29ubiQucmVzb2x2ZUNvbmZpZ1Byb3BzKHRoaXMucENvbm4kLmdldENvbmZpZ1Byb3BzKCkpO1xuXG4gICAgbGV0IHsgZGF0YXNvdXJjZSA9IFtdLCBjb2x1bW5zID0gW3t9XSB9ID0gdGhpcy5jb25maWdQcm9wcyQ7XG4gICAgdGhpcy5zZXRQcm9wZXJ0eVZhbHVlc0Zyb21Qcm9wcygpO1xuXG4gICAgaWYgKHRoaXMucmVmZXJlbmNlTGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICBkYXRhc291cmNlID0gdGhpcy5yZWZlcmVuY2VMaXN0O1xuICAgICAgY29sdW1ucyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIHZhbHVlOiB0aGlzLnByaW1hcnlGaWVsZCxcbiAgICAgICAgICBkaXNwbGF5OiAndHJ1ZScsXG4gICAgICAgICAgdXNlRm9yU2VhcmNoOiB0cnVlLFxuICAgICAgICAgIHByaW1hcnk6ICd0cnVlJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdmFsdWU6IHRoaXMuc2VsZWN0aW9uS2V5LFxuICAgICAgICAgIHNldFByb3BlcnR5OiB0aGlzLnNlbGVjdGlvbktleSxcbiAgICAgICAgICBrZXk6ICd0cnVlJ1xuICAgICAgICB9XG4gICAgICBdO1xuICAgICAgbGV0IHNlY29uZGFyeUNvbHVtbnM6IGFueSA9IFtdO1xuICAgICAgaWYgKHRoaXMuc2Vjb25kYXJ5RmllbGRzKSB7XG4gICAgICAgIHNlY29uZGFyeUNvbHVtbnMgPSB0aGlzLnNlY29uZGFyeUZpZWxkcy5tYXAoc2Vjb25kYXJ5RmllbGQgPT4gKHtcbiAgICAgICAgICB2YWx1ZTogc2Vjb25kYXJ5RmllbGQsXG4gICAgICAgICAgZGlzcGxheTogJ3RydWUnLFxuICAgICAgICAgIHNlY29uZGFyeTogJ3RydWUnLFxuICAgICAgICAgIHVzZUZvclNlYXJjaDogJ3RydWUnXG4gICAgICAgIH0pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlY29uZGFyeUNvbHVtbnMgPSBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgdmFsdWU6IHRoaXMuc2VsZWN0aW9uS2V5LFxuICAgICAgICAgICAgZGlzcGxheTogJ3RydWUnLFxuICAgICAgICAgICAgc2Vjb25kYXJ5OiAndHJ1ZScsXG4gICAgICAgICAgICB1c2VGb3JTZWFyY2g6ICd0cnVlJ1xuICAgICAgICAgIH1cbiAgICAgICAgXTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLnJlZmVyZW5jZVR5cGUgPT09ICdDYXNlJykge1xuICAgICAgICBjb2x1bW5zID0gWy4uLmNvbHVtbnMsIC4uLnNlY29uZGFyeUNvbHVtbnNdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMudmFsdWUkID0gdGhpcy52YWx1ZSQgPyB0aGlzLnZhbHVlJCA6ICcnO1xuICAgIGNvbnN0IGNvbnRleHROYW1lID0gdGhpcy5wQ29ubiQuZ2V0Q29udGV4dE5hbWUoKTtcblxuICAgIGNvbnN0IGRhdGFDb25maWcgPSB7XG4gICAgICBkYXRhU291cmNlOiBkYXRhc291cmNlLFxuICAgICAgZ3JvdXBEYXRhU291cmNlOiB0aGlzLmdyb3VwRGF0YVNvdXJjZSxcbiAgICAgIGlzR3JvdXBEYXRhOiB0aGlzLmlzR3JvdXBEYXRhLFxuICAgICAgc2hvd1NlY29uZGFyeUluU2VhcmNoT25seTogdGhpcy5zaG93U2Vjb25kYXJ5SW5TZWFyY2hPbmx5LFxuICAgICAgcGFyYW1ldGVyczogdGhpcy5wYXJhbWV0ZXJzLFxuICAgICAgbWF0Y2hQb3NpdGlvbjogdGhpcy5tYXRjaFBvc2l0aW9uLFxuICAgICAgbGlzdFR5cGU6IHRoaXMubGlzdFR5cGUsXG4gICAgICBtYXhSZXN1bHRzRGlzcGxheTogdGhpcy5tYXhSZXN1bHRzRGlzcGxheSB8fCAnMTAwJyxcbiAgICAgIGNvbHVtbnM6IHByZVByb2Nlc3NDb2x1bW5zKGNvbHVtbnMpLFxuICAgICAgZ3JvdXBDb2x1bW5zQ29uZmlnOiBwcmVQcm9jZXNzQ29sdW1ucyh0aGlzLmdyb3VwQ29sdW1uc0NvbmZpZylcbiAgICB9O1xuXG4gICAgY29uc3QgZ3JvdXBzRGlzcGxheUZpZWxkTWV0YSA9IHRoaXMubGlzdFR5cGUgIT09ICdhc3NvY2lhdGVkJyA/IGdldERpc3BsYXlGaWVsZHNNZXRhRGF0YShkYXRhQ29uZmlnLmdyb3VwQ29sdW1uc0NvbmZpZykgOiBudWxsO1xuXG4gICAgdGhpcy5pdGVtc1RyZWVCYXNlRGF0YSA9IGdldEdyb3VwRGF0YUZvckl0ZW1zVHJlZSh0aGlzLmdyb3VwRGF0YVNvdXJjZSwgZ3JvdXBzRGlzcGxheUZpZWxkTWV0YSwgdGhpcy5zaG93U2Vjb25kYXJ5SW5TZWFyY2hPbmx5KSB8fCBbXTtcblxuICAgIHRoaXMuaXRlbXNUcmVlID0gdGhpcy5pc0dyb3VwRGF0YSA/IGdldEdyb3VwRGF0YUZvckl0ZW1zVHJlZSh0aGlzLmdyb3VwRGF0YVNvdXJjZSwgZ3JvdXBzRGlzcGxheUZpZWxkTWV0YSwgdGhpcy5zaG93U2Vjb25kYXJ5SW5TZWFyY2hPbmx5KSA6IFtdO1xuXG4gICAgdGhpcy5kaXNwbGF5RmllbGRNZXRhID0gdGhpcy5saXN0VHlwZSAhPT0gJ2Fzc29jaWF0ZWQnID8gZ2V0RGlzcGxheUZpZWxkc01ldGFEYXRhKGRhdGFDb25maWcuY29sdW1ucykgOiBudWxsO1xuXG4gICAgdGhpcy5saXN0QWN0aW9ucyA9IHRoaXMucENvbm4kLmdldExpc3RBY3Rpb25zKCk7XG4gICAgdGhpcy5wQ29ubiQuc2V0UmVmZXJlbmNlTGlzdCh0aGlzLnNlbGVjdGlvbkxpc3QpO1xuXG4gICAgaWYgKHRoaXMuY29uZmlnUHJvcHMkLnZpc2liaWxpdHkgIT0gbnVsbCkge1xuICAgICAgdGhpcy5iVmlzaWJsZSQgPSB0aGlzLnV0aWxzLmdldEJvb2xlYW5WYWx1ZSh0aGlzLmNvbmZpZ1Byb3BzJC52aXNpYmlsaXR5KTtcbiAgICB9XG5cbiAgICAvLyBkaXNhYmxlZFxuICAgIGlmICh0aGlzLmNvbmZpZ1Byb3BzJC5kaXNhYmxlZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuYkRpc2FibGVkJCA9IHRoaXMudXRpbHMuZ2V0Qm9vbGVhblZhbHVlKHRoaXMuY29uZmlnUHJvcHMkLmRpc2FibGVkKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5iRGlzYWJsZWQkKSB7XG4gICAgICB0aGlzLmZpZWxkQ29udHJvbC5kaXNhYmxlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmllbGRDb250cm9sLmVuYWJsZSgpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxpc3RUeXBlICE9PSAnYXNzb2NpYXRlZCcpIHtcbiAgICAgIFBDb3JlLmdldERhdGFBcGkoKVxuICAgICAgICA/LmluaXQoZGF0YUNvbmZpZywgY29udGV4dE5hbWUpXG4gICAgICAgIC50aGVuKGFzeW5jIGRhdGFPYmogPT4ge1xuICAgICAgICAgIHRoaXMuZGF0YUFwaU9iaiA9IGRhdGFPYmo7XG4gICAgICAgICAgaWYgKCF0aGlzLmlzR3JvdXBEYXRhKSB7XG4gICAgICAgICAgICB0aGlzLmdldENhc2VMaXN0QmFzZWRPblBhcmFtcyh0aGlzLnZhbHVlJCA/PyAnJywgJycsIFsuLi50aGlzLnNlbGVjdGVkSXRlbXNdLCBbLi4udGhpcy5pdGVtc1RyZWVdKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHNldFByb3BlcnR5VmFsdWVzRnJvbVByb3BzKCkge1xuICAgIHRoaXMubGFiZWwkID0gdGhpcy5jb25maWdQcm9wcyQubGFiZWw7XG4gICAgdGhpcy5wbGFjZWhvbGRlciA9IHRoaXMuY29uZmlnUHJvcHMkLnBsYWNlaG9sZGVyIHx8ICcnO1xuICAgIHRoaXMubGlzdFR5cGUgPSB0aGlzLmNvbmZpZ1Byb3BzJC5saXN0VHlwZSA/IHRoaXMuY29uZmlnUHJvcHMkLmxpc3RUeXBlIDogJyc7XG4gICAgdGhpcy5oaWRlTGFiZWwgPSB0aGlzLmNvbmZpZ1Byb3BzJC5oaWRlTGFiZWw7XG4gICAgdGhpcy5wYXJhbWV0ZXJzID0gdGhpcy5jb25maWdQcm9wcyQ/LnBhcmFtZXRlcnMgPyB0aGlzLmNvbmZpZ1Byb3BzJD8ucGFyYW1ldGVycyA6IHt9O1xuICAgIHRoaXMucmVmZXJlbmNlTGlzdCA9IHRoaXMuY29uZmlnUHJvcHMkPy5yZWZlcmVuY2VMaXN0O1xuICAgIHRoaXMuc2VsZWN0aW9uS2V5ID0gdGhpcy5jb25maWdQcm9wcyQ/LnNlbGVjdGlvbktleTtcbiAgICB0aGlzLnByaW1hcnlGaWVsZCA9IHRoaXMuY29uZmlnUHJvcHMkPy5wcmltYXJ5RmllbGQ7XG4gICAgdGhpcy5pbml0aWFsQ2FzZUNsYXNzID0gdGhpcy5jb25maWdQcm9wcyQ/LmluaXRpYWxDYXNlQ2xhc3M7XG4gICAgdGhpcy5zaG93U2Vjb25kYXJ5SW5TZWFyY2hPbmx5ID0gdGhpcy5jb25maWdQcm9wcyQ/LnNob3dTZWNvbmRhcnlJblNlYXJjaE9ubHkgPyB0aGlzLmNvbmZpZ1Byb3BzJD8uc2hvd1NlY29uZGFyeUluU2VhcmNoT25seSA6IGZhbHNlO1xuICAgIHRoaXMuaXNHcm91cERhdGEgPSB0aGlzLmNvbmZpZ1Byb3BzJD8uaXNHcm91cERhdGEgPyB0aGlzLmNvbmZpZ1Byb3BzJC5pc0dyb3VwRGF0YSA6IGZhbHNlO1xuICAgIHRoaXMucmVmZXJlbmNlVHlwZSA9IHRoaXMuY29uZmlnUHJvcHMkPy5yZWZlcmVuY2VUeXBlO1xuICAgIHRoaXMuc2Vjb25kYXJ5RmllbGRzID0gdGhpcy5jb25maWdQcm9wcyQ/LnNlY29uZGFyeUZpZWxkcztcbiAgICB0aGlzLmdyb3VwRGF0YVNvdXJjZSA9IHRoaXMuY29uZmlnUHJvcHMkPy5ncm91cERhdGFTb3VyY2UgPyB0aGlzLmNvbmZpZ1Byb3BzJD8uZ3JvdXBEYXRhU291cmNlIDogW107XG4gICAgdGhpcy5tYXRjaFBvc2l0aW9uID0gdGhpcy5jb25maWdQcm9wcyQ/Lm1hdGNoUG9zaXRpb24gPyB0aGlzLmNvbmZpZ1Byb3BzJD8ubWF0Y2hQb3NpdGlvbiA6ICdjb250YWlucyc7XG4gICAgdGhpcy5tYXhSZXN1bHRzRGlzcGxheSA9IHRoaXMuY29uZmlnUHJvcHMkPy5tYXhSZXN1bHRzRGlzcGxheTtcbiAgICB0aGlzLmdyb3VwQ29sdW1uc0NvbmZpZyA9IHRoaXMuY29uZmlnUHJvcHMkPy5ncm91cENvbHVtbnNDb25maWcgPyB0aGlzLmNvbmZpZ1Byb3BzJD8uZ3JvdXBDb2x1bW5zQ29uZmlnIDogW3t9XTtcbiAgICB0aGlzLnNlbGVjdGlvbkxpc3QgPSB0aGlzLmNvbmZpZ1Byb3BzJD8uc2VsZWN0aW9uTGlzdDtcbiAgICB0aGlzLnZhbHVlJCA9IHRoaXMuY29uZmlnUHJvcHMkPy52YWx1ZTtcbiAgfVxuXG4gIC8vIG1haW4gc2VhcmNoIGZ1bmN0aW9uIHRyaWdnZXJcbiAgZ2V0Q2FzZUxpc3RCYXNlZE9uUGFyYW1zKHNlYXJjaFRleHQsIGdyb3VwLCBzZWxlY3RlZFJvd3MsIGN1cnJlbnRJdGVtc1RyZWUsIGlzVHJpZ2dlcmVkRnJvbVNlYXJjaCA9IGZhbHNlKSB7XG4gICAgaWYgKHRoaXMucmVmZXJlbmNlTGlzdCAmJiB0aGlzLnJlZmVyZW5jZUxpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5saXN0QWN0aW9ucy5nZXRTZWxlY3RlZFJvd3ModHJ1ZSkudGhlbihyZXN1bHQgPT4ge1xuICAgICAgICBzZWxlY3RlZFJvd3MgPVxuICAgICAgICAgIHJlc3VsdC5sZW5ndGggPiAwXG4gICAgICAgICAgICA/IHJlc3VsdC5tYXAoaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIGlkOiBpdGVtW3RoaXMuc2VsZWN0aW9uS2V5LnN0YXJ0c1dpdGgoJy4nKSA/IHRoaXMuc2VsZWN0aW9uS2V5LnN1YnN0cmluZygxKSA6IHRoaXMuc2VsZWN0aW9uS2V5XSxcbiAgICAgICAgICAgICAgICAgIHByaW1hcnk6IGl0ZW1bdGhpcy5wcmltYXJ5RmllbGQuc3RhcnRzV2l0aCgnLicpID8gdGhpcy5wcmltYXJ5RmllbGQuc3Vic3RyaW5nKDEpIDogdGhpcy5wcmltYXJ5RmllbGRdXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIDogW107XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcyA9IHNlbGVjdGVkUm93cztcblxuICAgICAgICBjb25zdCBpbml0YWxJdGVtc1RyZWUgPSBpc1RyaWdnZXJlZEZyb21TZWFyY2ggfHwgIWN1cnJlbnRJdGVtc1RyZWUgPyBbLi4udGhpcy5pdGVtc1RyZWVCYXNlRGF0YV0gOiBbLi4uY3VycmVudEl0ZW1zVHJlZV07XG5cbiAgICAgICAgZG9TZWFyY2goXG4gICAgICAgICAgc2VhcmNoVGV4dCxcbiAgICAgICAgICBncm91cCxcbiAgICAgICAgICB0aGlzLmluaXRpYWxDYXNlQ2xhc3MsXG4gICAgICAgICAgdGhpcy5kaXNwbGF5RmllbGRNZXRhLFxuICAgICAgICAgIHRoaXMuZGF0YUFwaU9iaixcbiAgICAgICAgICBpbml0YWxJdGVtc1RyZWUsXG4gICAgICAgICAgdGhpcy5pc0dyb3VwRGF0YSxcbiAgICAgICAgICB0aGlzLnNob3dTZWNvbmRhcnlJblNlYXJjaE9ubHksXG4gICAgICAgICAgc2VsZWN0ZWRSb3dzIHx8IFtdXG4gICAgICAgICkudGhlbihyZXMgPT4ge1xuICAgICAgICAgIHRoaXMuaXRlbXNUcmVlID0gcmVzIHx8IFtdO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGZpZWxkT25DaGFuZ2UoZXZlbnQ6IEV2ZW50KSB7XG4gICAgdGhpcy52YWx1ZSQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xuICAgIHRoaXMuZ2V0Q2FzZUxpc3RCYXNlZE9uUGFyYW1zKHRoaXMudmFsdWUkLCAnJywgWy4uLnRoaXMuc2VsZWN0ZWRJdGVtc10sIFsuLi50aGlzLml0ZW1zVHJlZV0sIHRydWUpO1xuICB9XG5cbiAgb3B0aW9uQ2hhbmdlZChldmVudDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCkge1xuICAgIHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS5hY3Rpb25zPy5vbkNoYW5nZSh0aGlzLCBldmVudCk7XG4gIH1cblxuICBvcHRpb25DbGlja2VkID0gKGV2ZW50OiBFdmVudCwgZGF0YTogYW55KTogdm9pZCA9PiB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy50b2dnbGVTZWxlY3Rpb24oZGF0YSk7XG4gIH07XG5cbiAgdG9nZ2xlU2VsZWN0aW9uID0gKGRhdGE6IGFueSk6IHZvaWQgPT4ge1xuICAgIGRhdGEuc2VsZWN0ZWQgPSAhZGF0YS5zZWxlY3RlZDtcbiAgICB0aGlzLml0ZW1zVHJlZS5tYXAoKGVsZTogYW55KSA9PiB7XG4gICAgICBpZiAoZWxlLmlkID09PSBkYXRhLmlkKSB7XG4gICAgICAgIGVsZS5zZWxlY3RlZCA9IGRhdGEuc2VsZWN0ZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gZWxlO1xuICAgIH0pO1xuXG4gICAgaWYgKGRhdGEuc2VsZWN0ZWQgPT09IHRydWUpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKGRhdGEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5maW5kSW5kZXgodmFsdWUgPT4gdmFsdWUuaWQgPT09IGRhdGEuaWQpO1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuXG4gICAgdGhpcy52YWx1ZSQgPSAnJztcbiAgICAvLyBpZiB0aGlzIGlzIGEgcmVmZXJlbmNlTGlzdCBjYXNlXG4gICAgaWYgKHRoaXMucmVmZXJlbmNlTGlzdCkgdGhpcy5zZXRTZWxlY3RlZEl0ZW1zRm9yUmVmZXJlbmNlTGlzdChkYXRhKTtcblxuICAgIHRoaXMuZ2V0Q2FzZUxpc3RCYXNlZE9uUGFyYW1zKHRoaXMudmFsdWUkLCAnJywgWy4uLnRoaXMuc2VsZWN0ZWRJdGVtc10sIFsuLi50aGlzLml0ZW1zVHJlZV0sIHRydWUpO1xuICB9O1xuXG4gIHJlbW92ZUNoaXAgPSAoZGF0YTogYW55KTogdm9pZCA9PiB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGRhdGEgPSB0aGlzLml0ZW1zVHJlZS5maWx0ZXIoKGVsZTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiBlbGUuaWQgPT09IGRhdGEuaWQ7XG4gICAgICB9KTtcbiAgICAgIHRoaXMudG9nZ2xlU2VsZWN0aW9uKGRhdGFbMF0pO1xuICAgIH1cbiAgfTtcblxuICBzZXRTZWxlY3RlZEl0ZW1zRm9yUmVmZXJlbmNlTGlzdChkYXRhOiBhbnkpIHtcbiAgICAvLyBDbGVhciBlcnJvciBtZXNzYWdlcyBpZiBhbnlcbiAgICBjb25zdCBwcm9wTmFtZSA9ICh0aGlzLnBDb25uJC5nZXRTdGF0ZVByb3BzKCkgYXMgYW55KS5zZWxlY3Rpb25MaXN0O1xuICAgIHRoaXMucENvbm4kLmNsZWFyRXJyb3JNZXNzYWdlcyh7XG4gICAgICBwcm9wZXJ0eTogcHJvcE5hbWUsXG4gICAgICBjYXRlZ29yeTogJycsXG4gICAgICBjb250ZXh0OiAnJ1xuICAgIH0pO1xuICAgIGNvbnN0IHsgc2VsZWN0ZWQgfSA9IGRhdGE7XG4gICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICBpbnNlcnRJbnN0cnVjdGlvbih0aGlzLnBDb25uJCwgdGhpcy5zZWxlY3Rpb25MaXN0LCB0aGlzLnNlbGVjdGlvbktleSwgdGhpcy5wcmltYXJ5RmllbGQsIGRhdGEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWxldGVJbnN0cnVjdGlvbih0aGlzLnBDb25uJCwgdGhpcy5zZWxlY3Rpb25MaXN0LCB0aGlzLnNlbGVjdGlvbktleSwgZGF0YSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0RXJyb3JNZXNzYWdlKCkge1xuICAgIGxldCBlcnJNZXNzYWdlID0gJyc7XG5cbiAgICAvLyBsb29rIGZvciB2YWxpZGF0aW9uIG1lc3NhZ2VzIGZvciBqc29uLCBwcmUtZGVmaW5lZCBvciBqdXN0IGFuIGVycm9yIHB1c2hlZCBmcm9tIHdvcmtpdGVtICg0MDApXG4gICAgaWYgKHRoaXMuZmllbGRDb250cm9sLmhhc0Vycm9yKCdtZXNzYWdlJykpIHtcbiAgICAgIGVyck1lc3NhZ2UgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudmFsaWRhdGVNZXNzYWdlID8/ICcnO1xuICAgICAgcmV0dXJuIGVyck1lc3NhZ2U7XG4gICAgfVxuICAgIGlmICh0aGlzLmZpZWxkQ29udHJvbC5oYXNFcnJvcigncmVxdWlyZWQnKSkge1xuICAgICAgZXJyTWVzc2FnZSA9ICdZb3UgbXVzdCBlbnRlciBhIHZhbHVlJztcbiAgICB9IGVsc2UgaWYgKHRoaXMuZmllbGRDb250cm9sLmVycm9ycykge1xuICAgICAgZXJyTWVzc2FnZSA9IHRoaXMuZmllbGRDb250cm9sLmVycm9ycy50b1N0cmluZygpO1xuICAgIH1cblxuICAgIHJldHVybiBlcnJNZXNzYWdlO1xuICB9XG59XG4iLCI8ZGl2IFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwJFwiPlxuICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJwc2RrLWZ1bGwtd2lkdGhcIiBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCI+XG4gICAgPG1hdC1sYWJlbD57eyBsYWJlbCQgfX08L21hdC1sYWJlbD5cbiAgICA8bWF0LWNoaXAtZ3JpZCAjY2hpcEdyaWQ+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzZWxlY3Qgb2Ygc2VsZWN0ZWRJdGVtc1wiPlxuICAgICAgICA8bWF0LWNoaXAtcm93IChyZW1vdmVkKT1cInJlbW92ZUNoaXAoc2VsZWN0KVwiPlxuICAgICAgICAgIHt7IHNlbGVjdC5wcmltYXJ5IH19XG4gICAgICAgICAgPGJ1dHRvbiBtYXRDaGlwUmVtb3ZlPlxuICAgICAgICAgICAgPG1hdC1pY29uPmNhbmNlbDwvbWF0LWljb24+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbWF0LWNoaXAtcm93PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9tYXQtY2hpcC1ncmlkPlxuICAgIDxpbnB1dFxuICAgICAgbWF0SW5wdXRcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICBbZm9ybUNvbnRyb2xdPVwiZmllbGRDb250cm9sXCJcbiAgICAgIFt2YWx1ZV09XCJ2YWx1ZSRcIlxuICAgICAgW3JlcXVpcmVkXT1cImJSZXF1aXJlZCRcIlxuICAgICAgW21hdEF1dG9jb21wbGV0ZV09XCJhdXRvXCJcbiAgICAgIChpbnB1dCk9XCJmaWVsZE9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgW21hdENoaXBJbnB1dEZvcl09XCJjaGlwR3JpZFwiXG4gICAgLz5cbiAgICA8bWF0LWF1dG9jb21wbGV0ZSAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiPlxuICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNUcmVlXCIgW3ZhbHVlXT1cIml0ZW0ucHJpbWFyeVwiIChjbGljayk9XCJvcHRpb25DbGlja2VkKCRldmVudCwgaXRlbSlcIj5cbiAgICAgICAgPG1hdC1jaGVja2JveCBbY2hlY2tlZF09XCJpdGVtLnNlbGVjdGVkXCIgKGNsaWNrKT1cIm9wdGlvbkNsaWNrZWQoJGV2ZW50LCBpdGVtKVwiPlxuICAgICAgICAgIDxzcGFuPnt7IGl0ZW0ucHJpbWFyeSB9fTwvc3Bhbj5cbiAgICAgICAgPC9tYXQtY2hlY2tib3g+XG4gICAgICA8L21hdC1vcHRpb24+XG4gICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxuICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmaWVsZENvbnRyb2wuaW52YWxpZFwiPnt7IGdldEVycm9yTWVzc2FnZSgpIH19PC9tYXQtZXJyb3I+XG4gIDwvbWF0LWZvcm0tZmllbGQ+XG48L2Rpdj5cbiJdfQ==
@@ -1,187 +0,0 @@
1
- import cloneDeep from 'lodash.clonedeep';
2
- export function setVisibilityForList(c11nEnv, visibility) {
3
- const { selectionMode, selectionList, renderMode, referenceList } = c11nEnv.getComponentConfig();
4
- // usecase:multiselect, fieldgroup, editable table
5
- if ((selectionMode === PCore.getConstants().LIST_SELECTION_MODE.MULTI && selectionList) || (renderMode === 'Editable' && referenceList)) {
6
- c11nEnv.getListActions().setVisibility(visibility);
7
- }
8
- }
9
- function preProcessColumns(columns) {
10
- return columns?.map(col => {
11
- const tempColObj = { ...col };
12
- tempColObj.value = col.value && col.value.startsWith('.') ? col.value.substring(1) : col.value;
13
- if (tempColObj.setProperty) {
14
- tempColObj.setProperty = col.setProperty && col.setProperty.startsWith('.') ? col.setProperty.substring(1) : col.setProperty;
15
- }
16
- return tempColObj;
17
- });
18
- }
19
- function getDisplayFieldsMetaData(columns) {
20
- const displayColumns = columns?.filter(col => col.display === 'true');
21
- const metaDataObj = {
22
- key: '',
23
- primary: '',
24
- secondary: []
25
- };
26
- const keyCol = columns?.filter(col => col.key === 'true');
27
- metaDataObj.key = keyCol?.length > 0 ? keyCol[0].value : 'auto';
28
- const itemsRecordsColumn = columns?.filter(col => col.itemsRecordsColumn === 'true');
29
- if (itemsRecordsColumn?.length > 0) {
30
- metaDataObj.itemsRecordsColumn = itemsRecordsColumn[0].value;
31
- }
32
- const itemsGroupKeyColumn = columns?.filter(col => col.itemsGroupKeyColumn === 'true');
33
- if (itemsGroupKeyColumn?.length > 0) {
34
- metaDataObj.itemsGroupKeyColumn = itemsGroupKeyColumn[0].value;
35
- }
36
- for (let index = 0; index < displayColumns?.length; index += 1) {
37
- if (displayColumns[index].secondary === 'true') {
38
- metaDataObj.secondary.push(displayColumns[index].value);
39
- }
40
- else if (displayColumns[index].primary === 'true') {
41
- metaDataObj.primary = displayColumns[index].value;
42
- }
43
- }
44
- return metaDataObj;
45
- }
46
- function createSingleTreeObejct(entry, displayFieldMeta, showSecondaryData, selected) {
47
- const secondaryArr = [];
48
- displayFieldMeta.secondary.forEach(col => {
49
- secondaryArr.push(entry[col]);
50
- });
51
- const isSelected = selected.some(item => item.id === entry[displayFieldMeta.key]);
52
- return {
53
- id: entry[displayFieldMeta.key],
54
- primary: entry[displayFieldMeta.primary],
55
- secondary: showSecondaryData ? secondaryArr : [],
56
- selected: isSelected
57
- };
58
- }
59
- function putItemsDataInItemsTree(listObjData, displayFieldMeta, itemsTree, showSecondaryInSearchOnly, selected) {
60
- let newTreeItems = itemsTree.slice();
61
- const showSecondaryData = !showSecondaryInSearchOnly;
62
- for (const obj of listObjData) {
63
- const items = obj[displayFieldMeta.itemsRecordsColumn].map(entry => createSingleTreeObejct(entry, displayFieldMeta, showSecondaryData, selected));
64
- newTreeItems = newTreeItems.map(caseObject => {
65
- if (caseObject.id === obj[displayFieldMeta.itemsGroupKeyColumn]) {
66
- caseObject.items = [...items];
67
- }
68
- return caseObject;
69
- });
70
- }
71
- return newTreeItems;
72
- }
73
- function prepareSearchResults(listObjData, displayFieldMeta) {
74
- const searchResults = [];
75
- for (const obj of listObjData) {
76
- searchResults.push(...obj[displayFieldMeta.itemsRecordsColumn]);
77
- }
78
- return searchResults;
79
- }
80
- async function doSearch(searchText, clickedGroup, initialCaseClass, displayFieldMeta, dataApiObj, // deep clone of the dataApiObj
81
- itemsTree, isGroupData, showSecondaryInSearchOnly, selected) {
82
- let searchTextForUngroupedData = '';
83
- if (dataApiObj) {
84
- // creating dataApiObject in grouped data cases
85
- if (isGroupData) {
86
- dataApiObj = cloneDeep(dataApiObj);
87
- dataApiObj.fetchedNQData = false;
88
- dataApiObj.cache = {};
89
- // if we have no search text and no group selected, return the original tree
90
- if (searchText === '' && clickedGroup === '') {
91
- return itemsTree;
92
- }
93
- // setting the inital search text & search classes in ApiObject
94
- dataApiObj.parameters[Object.keys(dataApiObj.parameters)[1]] = searchText;
95
- dataApiObj.parameters[Object.keys(dataApiObj.parameters)[0]] = initialCaseClass;
96
- // if we have a selected group
97
- if (clickedGroup) {
98
- // check if the data for this group is already present and no search text
99
- if (searchText === '') {
100
- const containsData = itemsTree.find(item => item.id === clickedGroup);
101
- // do not make API call when items of respective group are already fetched
102
- if (containsData?.items?.length)
103
- return itemsTree;
104
- }
105
- dataApiObj.parameters[Object.keys(dataApiObj.parameters)[0]] = JSON.stringify([clickedGroup]);
106
- }
107
- }
108
- else {
109
- searchTextForUngroupedData = searchText;
110
- }
111
- // search API call
112
- const response = await dataApiObj.fetchData(searchTextForUngroupedData).catch(() => {
113
- return itemsTree;
114
- });
115
- let listObjData = response.data;
116
- let newItemsTree = [];
117
- if (isGroupData) {
118
- if (searchText) {
119
- listObjData = prepareSearchResults(listObjData, displayFieldMeta);
120
- }
121
- else {
122
- newItemsTree = putItemsDataInItemsTree(listObjData, displayFieldMeta, itemsTree, showSecondaryInSearchOnly, selected);
123
- return newItemsTree;
124
- }
125
- }
126
- const showSecondaryData = showSecondaryInSearchOnly ? !!searchText : true;
127
- if (listObjData !== undefined && listObjData.length > 0) {
128
- newItemsTree = listObjData.map(entry => createSingleTreeObejct(entry, displayFieldMeta, showSecondaryData, selected));
129
- }
130
- return newItemsTree;
131
- }
132
- return itemsTree;
133
- }
134
- function setValuesToPropertyList(searchText, assocProp, items, columns, actions, updatePropertyInRedux = true) {
135
- const setPropertyList = columns
136
- ?.filter(col => col.setProperty)
137
- .map(col => {
138
- return {
139
- source: col.value,
140
- target: col.setProperty,
141
- key: col.key,
142
- primary: col.primary
143
- };
144
- });
145
- const valueToSet = [];
146
- if (setPropertyList.length > 0) {
147
- setPropertyList.forEach(prop => {
148
- items.forEach(item => {
149
- if (prop.key === 'true' && item) {
150
- valueToSet.push(item.id);
151
- }
152
- else if (prop.primary === 'true' || !item) {
153
- valueToSet.push(searchText);
154
- }
155
- });
156
- if (updatePropertyInRedux) {
157
- // BUG-666851 setting options so that the store values are replaced and not merged
158
- const options = {
159
- isArrayDeepMerge: false
160
- };
161
- if (prop.target === 'Associated property') {
162
- actions.updateFieldValue(assocProp, valueToSet, options);
163
- }
164
- else {
165
- actions.updateFieldValue(`.${prop.target}`, valueToSet, options);
166
- }
167
- }
168
- });
169
- }
170
- return valueToSet;
171
- }
172
- function getGroupDataForItemsTree(groupDataSource, groupsDisplayFieldMeta, showSecondaryInSearchOnly) {
173
- return groupDataSource?.map(group => {
174
- const secondaryArr = [];
175
- groupsDisplayFieldMeta.secondary.forEach(col => {
176
- secondaryArr.push(group[col]);
177
- });
178
- return {
179
- id: group[groupsDisplayFieldMeta.key],
180
- primary: group[groupsDisplayFieldMeta.primary],
181
- secondary: showSecondaryInSearchOnly ? [] : secondaryArr,
182
- items: []
183
- };
184
- });
185
- }
186
- export { preProcessColumns, getDisplayFieldsMetaData, doSearch, setValuesToPropertyList, getGroupDataForItemsTree };
187
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvZmllbGQvbXVsdGlzZWxlY3QvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxTQUFTLE1BQU0sa0JBQWtCLENBQUM7QUFFekMsTUFBTSxVQUFVLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxVQUFVO0lBQ3RELE1BQU0sRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUNqRyxrREFBa0Q7SUFDbEQsSUFBSSxDQUFDLGFBQWEsS0FBSyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsbUJBQW1CLENBQUMsS0FBSyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxLQUFLLFVBQVUsSUFBSSxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQ3hJLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDckQsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLE9BQU87SUFDaEMsT0FBTyxPQUFPLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3hCLE1BQU0sVUFBVSxHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUM5QixVQUFVLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO1FBQy9GLElBQUksVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFD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QUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTztZQUNMLEVBQUUsRUFBRSxLQUFLLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDO1lBQ3JDLE9BQU8sRUFBRSxLQUFLLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDO1lBQzlDLFNBQVMsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZO1lBQ3hELEtBQUssRUFBRSxFQUFFO1NBQ1YsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSx3QkFBd0IsRUFBRSxRQUFRLEVBQUUsdUJBQXVCLEVBQUUsd0JBQXdCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjbG9uZURlZXAgZnJvbSAnbG9kYXNoLmNsb25lZGVlcCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRWaXNpYmlsaXR5Rm9yTGlzdChjMTFuRW52LCB2aXNpYmlsaXR5KSB7XG4gIGNvbnN0IHsgc2VsZWN0aW9uTW9kZSwgc2VsZWN0aW9uTGlzdCwgcmVuZGVyTW9kZSwgcmVmZXJlbmNlTGlzdCB9ID0gYzExbkVudi5nZXRDb21wb25lbnRDb25maWcoKTtcbiAgLy8gdXNlY2FzZTptdWx0aXNlbGVjdCwgZmllbGRncm91cCwgZWRpdGFibGUgdGFibGVcbiAgaWYgKChzZWxlY3Rpb25Nb2RlID09PSBQQ29yZS5nZXRDb25zdGFudHMoKS5MSVNUX1NFTEVDVElPTl9NT0RFLk1VTFRJICYmIHNlbGVjdGlvbkxpc3QpIHx8IChyZW5kZXJNb2RlID09PSAnRWRpdGFibGUnICYmIHJlZmVyZW5jZUxpc3QpKSB7XG4gICAgYzExbkVudi5nZXRMaXN0QWN0aW9ucygpLnNldFZpc2liaWxpdHkodmlzaWJpbGl0eSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcHJlUHJvY2Vzc0NvbHVtbnMoY29sdW1ucykge1xuICByZXR1cm4gY29sdW1ucz8ubWFwKGNvbCA9PiB7XG4gICAgY29uc3QgdGVtcENvbE9iaiA9IHsgLi4uY29sIH07XG4gICAgdGVtcENvbE9iai52YWx1ZSA9IGNvbC52YWx1ZSAmJiBjb2wudmFsdWUuc3RhcnRzV2l0aCgnLicpID8gY29sLnZhbHVlLnN1YnN0cmluZygxKSA6IGNvbC52YWx1ZTtcbiAgICBpZiAodGVtcENvbE9iai5zZXRQcm9wZXJ0eSkge1xuICAgICAgdGVtcENvbE9iai5zZXRQcm9wZXJ0eSA9IGNvbC5zZXRQcm9wZXJ0eSAmJiBjb2wuc2V0UHJvcGVydHkuc3RhcnRzV2l0aCgnLicpID8gY29sLnNldFByb3BlcnR5LnN1YnN0cmluZygxKSA6IGNvbC5zZXRQcm9wZXJ0eTtcbiAgICB9XG4gICAgcmV0dXJuIHRlbXBDb2xPYmo7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBnZXREaXNwbGF5RmllbGRzTWV0YURhdGEoY29sdW1ucykge1xuICBjb25zdCBkaXNwbGF5Q29sdW1ucyA9IGNvbHVtbnM/LmZpbHRlcihjb2wgPT4gY29sLmRpc3BsYXkgPT09ICd0cnVlJyk7XG4gIGNvbnN0IG1ldGFEYXRhT2JqOiBhbnkgPSB7XG4gICAga2V5OiAnJyxcbiAgICBwcmltYXJ5OiAnJyxcbiAgICBzZWNvbmRhcnk6IFtdXG4gIH07XG4gIGNvbnN0IGtleUNvbCA9IGNvbHVtbnM/LmZpbHRlcihjb2wgPT4gY29sLmtleSA9PT0gJ3RydWUnKTtcbiAgbWV0YURhdGFPYmoua2V5ID0ga2V5Q29sPy5sZW5ndGggPiAwID8ga2V5Q29sWzBdLnZhbHVlIDogJ2F1dG8nO1xuICBjb25zdCBpdGVtc1JlY29yZHNDb2x1bW4gPSBjb2x1bW5zPy5maWx0ZXIoY29sID0+IGNvbC5pdGVtc1JlY29yZHNDb2x1bW4gPT09ICd0cnVlJyk7XG4gIGlmIChpdGVtc1JlY29yZHNDb2x1bW4/Lmxlbmd0aCA+IDApIHtcbiAgICBtZXRhRGF0YU9iai5pdGVtc1JlY29yZHNDb2x1bW4gPSBpdGVtc1JlY29yZHNDb2x1bW5bMF0udmFsdWU7XG4gIH1cbiAgY29uc3QgaXRlbXNHcm91cEtleUNvbHVtbiA9IGNvbHVtbnM/LmZpbHRlcihjb2wgPT4gY29sLml0ZW1zR3JvdXBLZXlDb2x1bW4gPT09ICd0cnVlJyk7XG4gIGlmIChpdGVtc0dyb3VwS2V5Q29sdW1uPy5sZW5ndGggPiAwKSB7XG4gICAgbWV0YURhdGFPYmouaXRlbXNHcm91cEtleUNvbHVtbiA9IGl0ZW1zR3JvdXBLZXlDb2x1bW5bMF0udmFsdWU7XG4gIH1cbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGRpc3BsYXlDb2x1bW5zPy5sZW5ndGg7IGluZGV4ICs9IDEpIHtcbiAgICBpZiAoZGlzcGxheUNvbHVtbnNbaW5kZXhdLnNlY29uZGFyeSA9PT0gJ3RydWUnKSB7XG4gICAgICBtZXRhRGF0YU9iai5zZWNvbmRhcnkucHVzaChkaXNwbGF5Q29sdW1uc1tpbmRleF0udmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoZGlzcGxheUNvbHVtbnNbaW5kZXhdLnByaW1hcnkgPT09ICd0cnVlJykge1xuICAgICAgbWV0YURhdGFPYmoucHJpbWFyeSA9IGRpc3BsYXlDb2x1bW5zW2luZGV4XS52YWx1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1ldGFEYXRhT2JqO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVTaW5nbGVUcmVlT2JlamN0KGVudHJ5LCBkaXNwbGF5RmllbGRNZXRhLCBzaG93U2Vjb25kYXJ5RGF0YSwgc2VsZWN0ZWQpIHtcbiAgY29uc3Qgc2Vjb25kYXJ5QXJyOiBhbnkgPSBbXTtcbiAgZGlzcGxheUZpZWxkTWV0YS5zZWNvbmRhcnkuZm9yRWFjaChjb2wgPT4ge1xuICAgIHNlY29uZGFyeUFyci5wdXNoKGVudHJ5W2NvbF0pO1xuICB9KTtcbiAgY29uc3QgaXNTZWxlY3RlZCA9IHNlbGVjdGVkLnNvbWUoaXRlbSA9PiBpdGVtLmlkID09PSBlbnRyeVtkaXNwbGF5RmllbGRNZXRhLmtleV0pO1xuXG4gIHJldHVybiB7XG4gICAgaWQ6IGVudHJ5W2Rpc3BsYXlGaWVsZE1ldGEua2V5XSxcbiAgICBwcmltYXJ5OiBlbnRyeVtkaXNwbGF5RmllbGRNZXRhLnByaW1hcnldLFxuICAgIHNlY29uZGFyeTogc2hvd1NlY29uZGFyeURhdGEgPyBzZWNvbmRhcnlBcnIgOiBbXSxcbiAgICBzZWxlY3RlZDogaXNTZWxlY3RlZFxuICB9O1xufVxuXG5mdW5jdGlvbiBwdXRJdGVtc0RhdGFJbkl0ZW1zVHJlZShsaXN0T2JqRGF0YSwgZGlzcGxheUZpZWxkTWV0YSwgaXRlbXNUcmVlLCBzaG93U2Vjb25kYXJ5SW5TZWFyY2hPbmx5LCBzZWxlY3RlZCkge1xuICBsZXQgbmV3VHJlZUl0ZW1zID0gaXRlbXNUcmVlLnNsaWNlKCk7XG4gIGNvbnN0IHNob3dTZWNvbmRhcnlEYXRhID0gIXNob3dTZWNvbmRhcnlJblNlYXJjaE9ubHk7XG4gIGZvciAoY29uc3Qgb2JqIG9mIGxpc3RPYmpEYXRhKSB7XG4gICAgY29uc3QgaXRlbXMgPSBvYmpbZGlzcGxheUZpZWxkTWV0YS5pdGVtc1JlY29yZHNDb2x1bW5dLm1hcChlbnRyeSA9PiBjcmVhdGVTaW5nbGVUcmVlT2JlamN0KGVudHJ5LCBkaXNwbGF5RmllbGRNZXRhLCBzaG93U2Vjb25kYXJ5RGF0YSwgc2VsZWN0ZWQpKTtcblxuICAgIG5ld1RyZWVJdGVtcyA9IG5ld1RyZWVJdGVtcy5tYXAoY2FzZU9iamVjdCA9PiB7XG4gICAgICBpZiAoY2FzZU9iamVjdC5pZCA9PT0gb2JqW2Rpc3BsYXlGaWVsZE1ldGEuaXRlbXNHcm91cEtleUNvbHVtbl0pIHtcbiAgICAgICAgY2FzZU9iamVjdC5pdGVtcyA9IFsuLi5pdGVtc107XG4gICAgICB9XG4gICAgICByZXR1cm4gY2FzZU9iamVjdDtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gbmV3VHJlZUl0ZW1zO1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlU2VhcmNoUmVzdWx0cyhsaXN0T2JqRGF0YSwgZGlzcGxheUZpZWxkTWV0YSkge1xuICBjb25zdCBzZWFyY2hSZXN1bHRzOiBhbnkgPSBbXTtcbiAgZm9yIChjb25zdCBvYmogb2YgbGlzdE9iakRhdGEpIHtcbiAgICBzZWFyY2hSZXN1bHRzLnB1c2goLi4ub2JqW2Rpc3BsYXlGaWVsZE1ldGEuaXRlbXNSZWNvcmRzQ29sdW1uXSk7XG4gIH1cbiAgcmV0dXJuIHNlYXJjaFJlc3VsdHM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGRvU2VhcmNoKFxuICBzZWFyY2hUZXh0LFxuICBjbGlja2VkR3JvdXAsXG4gIGluaXRpYWxDYXNlQ2xhc3MsXG4gIGRpc3BsYXlGaWVsZE1ldGEsXG4gIGRhdGFBcGlPYmosIC8vIGRlZXAgY2xvbmUgb2YgdGhlIGRhdGFBcGlPYmpcbiAgaXRlbXNUcmVlLFxuICBpc0dyb3VwRGF0YSxcbiAgc2hvd1NlY29uZGFyeUluU2VhcmNoT25seSxcbiAgc2VsZWN0ZWRcbikge1xuICBsZXQgc2VhcmNoVGV4dEZvclVuZ3JvdXBlZERhdGEgPSAnJztcbiAgaWYgKGRhdGFBcGlPYmopIHtcbiAgICAvLyBjcmVhdGluZyBkYXRhQXBpT2JqZWN0IGluIGdyb3VwZWQgZGF0YSBjYXNlc1xuICAgIGlmIChpc0dyb3VwRGF0YSkge1xuICAgICAgZGF0YUFwaU9iaiA9IGNsb25lRGVlcChkYXRhQXBpT2JqKTtcbiAgICAgIGRhdGFBcGlPYmouZmV0Y2hlZE5RRGF0YSA9IGZhbHNlO1xuICAgICAgZGF0YUFwaU9iai5jYWNoZSA9IHt9O1xuXG4gICAgICAvLyBpZiB3ZSBoYXZlIG5vIHNlYXJjaCB0ZXh0IGFuZCBubyBncm91cCBzZWxlY3RlZCwgcmV0dXJuIHRoZSBvcmlnaW5hbCB0cmVlXG4gICAgICBpZiAoc2VhcmNoVGV4dCA9PT0gJycgJiYgY2xpY2tlZEdyb3VwID09PSAnJykge1xuICAgICAgICByZXR1cm4gaXRlbXNUcmVlO1xuICAgICAgfVxuXG4gICAgICAvLyBzZXR0aW5nIHRoZSBpbml0YWwgc2VhcmNoIHRleHQgJiBzZWFyY2ggY2xhc3NlcyBpbiBBcGlPYmplY3RcbiAgICAgIGRhdGFBcGlPYmoucGFyYW1ldGVyc1tPYmplY3Qua2V5cyhkYXRhQXBpT2JqLnBhcmFtZXRlcnMpWzFdXSA9IHNlYXJjaFRleHQ7XG4gICAgICBkYXRhQXBpT2JqLnBhcmFtZXRlcnNbT2JqZWN0LmtleXMoZGF0YUFwaU9iai5wYXJhbWV0ZXJzKVswXV0gPSBpbml0aWFsQ2FzZUNsYXNzO1xuXG4gICAgICAvLyBpZiB3ZSBoYXZlIGEgc2VsZWN0ZWQgZ3JvdXBcbiAgICAgIGlmIChjbGlja2VkR3JvdXApIHtcbiAgICAgICAgLy8gY2hlY2sgaWYgdGhlIGRhdGEgZm9yIHRoaXMgZ3JvdXAgaXMgYWxyZWFkeSBwcmVzZW50IGFuZCBubyBzZWFyY2ggdGV4dFxuICAgICAgICBpZiAoc2VhcmNoVGV4dCA9PT0gJycpIHtcbiAgICAgICAgICBjb25zdCBjb250YWluc0RhdGEgPSBpdGVtc1RyZWUuZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IGNsaWNrZWRHcm91cCk7XG4gICAgICAgICAgLy8gZG8gbm90IG1ha2UgQVBJIGNhbGwgd2hlbiBpdGVtcyBvZiByZXNwZWN0aXZlIGdyb3VwIGFyZSBhbHJlYWR5IGZldGNoZWRcbiAgICAgICAgICBpZiAoY29udGFpbnNEYXRhPy5pdGVtcz8ubGVuZ3RoKSByZXR1cm4gaXRlbXNUcmVlO1xuICAgICAgICB9XG5cbiAgICAgICAgZGF0YUFwaU9iai5wYXJhbWV0ZXJzW09iamVjdC5rZXlzKGRhdGFBcGlPYmoucGFyYW1ldGVycylbMF1dID0gSlNPTi5zdHJpbmdpZnkoW2NsaWNrZWRHcm91cF0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzZWFyY2hUZXh0Rm9yVW5ncm91cGVkRGF0YSA9IHNlYXJjaFRleHQ7XG4gICAgfVxuXG4gICAgLy8gc2VhcmNoIEFQSSBjYWxsXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBkYXRhQXBpT2JqLmZldGNoRGF0YShzZWFyY2hUZXh0Rm9yVW5ncm91cGVkRGF0YSkuY2F0Y2goKCkgPT4ge1xuICAgICAgcmV0dXJuIGl0ZW1zVHJlZTtcbiAgICB9KTtcblxuICAgIGxldCBsaXN0T2JqRGF0YSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgbGV0IG5ld0l0ZW1zVHJlZSA9IFtdO1xuICAgIGlmIChpc0dyb3VwRGF0YSkge1xuICAgICAgaWYgKHNlYXJjaFRleHQpIHtcbiAgICAgICAgbGlzdE9iakRhdGEgPSBwcmVwYXJlU2VhcmNoUmVzdWx0cyhsaXN0T2JqRGF0YSwgZGlzcGxheUZpZWxkTWV0YSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXdJdGVtc1RyZWUgPSBwdXRJdGVtc0RhdGFJbkl0ZW1zVHJlZShsaXN0T2JqRGF0YSwgZGlzcGxheUZpZWxkTWV0YSwgaXRlbXNUcmVlLCBzaG93U2Vjb25kYXJ5SW5TZWFyY2hPbmx5LCBzZWxlY3RlZCk7XG4gICAgICAgIHJldHVybiBuZXdJdGVtc1RyZWU7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHNob3dTZWNvbmRhcnlEYXRhID0gc2hvd1NlY29uZGFyeUluU2VhcmNoT25seSA/ICEhc2VhcmNoVGV4dCA6IHRydWU7XG4gICAgaWYgKGxpc3RPYmpEYXRhICE9PSB1bmRlZmluZWQgJiYgbGlzdE9iakRhdGEubGVuZ3RoID4gMCkge1xuICAgICAgbmV3SXRlbXNUcmVlID0gbGlzdE9iakRhdGEubWFwKGVudHJ5ID0+IGNyZWF0ZVNpbmdsZVRyZWVPYmVqY3QoZW50cnksIGRpc3BsYXlGaWVsZE1ldGEsIHNob3dTZWNvbmRhcnlEYXRhLCBzZWxlY3RlZCkpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3SXRlbXNUcmVlO1xuICB9XG5cbiAgcmV0dXJuIGl0ZW1zVHJlZTtcbn1cblxuZnVuY3Rpb24gc2V0VmFsdWVzVG9Qcm9wZXJ0eUxpc3Qoc2VhcmNoVGV4dCwgYXNzb2NQcm9wLCBpdGVtcywgY29sdW1ucywgYWN0aW9ucywgdXBkYXRlUHJvcGVydHlJblJlZHV4ID0gdHJ1ZSkge1xuICBjb25zdCBzZXRQcm9wZXJ0eUxpc3QgPSBjb2x1bW5zXG4gICAgPy5maWx0ZXIoY29sID0+IGNvbC5zZXRQcm9wZXJ0eSlcbiAgICAubWFwKGNvbCA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzb3VyY2U6IGNvbC52YWx1ZSxcbiAgICAgICAgdGFyZ2V0OiBjb2wuc2V0UHJvcGVydHksXG4gICAgICAgIGtleTogY29sLmtleSxcbiAgICAgICAgcHJpbWFyeTogY29sLnByaW1hcnlcbiAgICAgIH07XG4gICAgfSk7XG4gIGNvbnN0IHZhbHVlVG9TZXQ6IGFueSA9IFtdO1xuICBpZiAoc2V0UHJvcGVydHlMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICBzZXRQcm9wZXJ0eUxpc3QuZm9yRWFjaChwcm9wID0+IHtcbiAgICAgIGl0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGlmIChwcm9wLmtleSA9PT0gJ3RydWUnICYmIGl0ZW0pIHtcbiAgICAgICAgICB2YWx1ZVRvU2V0LnB1c2goaXRlbS5pZCk7XG4gICAgICAgIH0gZWxzZSBpZiAocHJvcC5wcmltYXJ5ID09PSAndHJ1ZScgfHwgIWl0ZW0pIHtcbiAgICAgICAgICB2YWx1ZVRvU2V0LnB1c2goc2VhcmNoVGV4dCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAodXBkYXRlUHJvcGVydHlJblJlZHV4KSB7XG4gICAgICAgIC8vIEJVRy02NjY4NTEgc2V0dGluZyBvcHRpb25zIHNvIHRoYXQgdGhlIHN0b3JlIHZhbHVlcyBhcmUgcmVwbGFjZWQgYW5kIG5vdCBtZXJnZWRcbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgICBpc0FycmF5RGVlcE1lcmdlOiBmYWxzZVxuICAgICAgICB9O1xuICAgICAgICBpZiAocHJvcC50YXJnZXQgPT09ICdBc3NvY2lhdGVkIHByb3BlcnR5Jykge1xuICAgICAgICAgIGFjdGlvbnMudXBkYXRlRmllbGRWYWx1ZShhc3NvY1Byb3AsIHZhbHVlVG9TZXQsIG9wdGlvbnMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFjdGlvbnMudXBkYXRlRmllbGRWYWx1ZShgLiR7cHJvcC50YXJnZXR9YCwgdmFsdWVUb1NldCwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICByZXR1cm4gdmFsdWVUb1NldDtcbn1cblxuZnVuY3Rpb24gZ2V0R3JvdXBEYXRhRm9ySXRlbXNUcmVlKGdyb3VwRGF0YVNvdXJjZSwgZ3JvdXBzRGlzcGxheUZpZWxkTWV0YSwgc2hvd1NlY29uZGFyeUluU2VhcmNoT25seSkge1xuICByZXR1cm4gZ3JvdXBEYXRhU291cmNlPy5tYXAoZ3JvdXAgPT4ge1xuICAgIGNvbnN0IHNlY29uZGFyeUFycjogYW55ID0gW107XG4gICAgZ3JvdXBzRGlzcGxheUZpZWxkTWV0YS5zZWNvbmRhcnkuZm9yRWFjaChjb2wgPT4ge1xuICAgICAgc2Vjb25kYXJ5QXJyLnB1c2goZ3JvdXBbY29sXSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBncm91cFtncm91cHNEaXNwbGF5RmllbGRNZXRhLmtleV0sXG4gICAgICBwcmltYXJ5OiBncm91cFtncm91cHNEaXNwbGF5RmllbGRNZXRhLnByaW1hcnldLFxuICAgICAgc2Vjb25kYXJ5OiBzaG93U2Vjb25kYXJ5SW5TZWFyY2hPbmx5ID8gW10gOiBzZWNvbmRhcnlBcnIsXG4gICAgICBpdGVtczogW11cbiAgICB9O1xuICB9KTtcbn1cblxuZXhwb3J0IHsgcHJlUHJvY2Vzc0NvbHVtbnMsIGdldERpc3BsYXlGaWVsZHNNZXRhRGF0YSwgZG9TZWFyY2gsIHNldFZhbHVlc1RvUHJvcGVydHlMaXN0LCBnZXRHcm91cERhdGFGb3JJdGVtc1RyZWUgfTtcbiJdfQ==