@pega/angular-sdk-components 0.23.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 (300) hide show
  1. package/README.md +24 -0
  2. package/_shared/styles.scss +28 -0
  3. package/esm2022/lib/_bridge/angular-pconnect.mjs +416 -0
  4. package/esm2022/lib/_bridge/component-mapper/component-mapper.component.mjs +114 -0
  5. package/esm2022/lib/_bridge/helpers/sdk-pega-component-map.mjs +228 -0
  6. package/esm2022/lib/_bridge/helpers/sdk_component_map.mjs +142 -0
  7. package/esm2022/lib/_components/designSystemExtension/alert/alert.component.mjs +50 -0
  8. package/esm2022/lib/_components/designSystemExtension/alert-banner/alert-banner.component.mjs +29 -0
  9. package/esm2022/lib/_components/designSystemExtension/banner/banner.component.mjs +31 -0
  10. package/esm2022/lib/_components/designSystemExtension/case-create-stage/case-create-stage.component.mjs +51 -0
  11. package/esm2022/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.mjs +80 -0
  12. package/esm2022/lib/_components/designSystemExtension/material-details/material-details.component.mjs +37 -0
  13. package/esm2022/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.mjs +31 -0
  14. package/esm2022/lib/_components/designSystemExtension/material-summary-item/material-summary-item.component.mjs +36 -0
  15. package/esm2022/lib/_components/designSystemExtension/material-summary-list/material-summary-list.component.mjs +25 -0
  16. package/esm2022/lib/_components/designSystemExtension/material-utility/material-utility.component.mjs +28 -0
  17. package/esm2022/lib/_components/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.mjs +42 -0
  18. package/esm2022/lib/_components/designSystemExtension/operator/operator.component.mjs +136 -0
  19. package/esm2022/lib/_components/designSystemExtension/pulse/pulse.component.mjs +33 -0
  20. package/esm2022/lib/_components/designSystemExtension/rich-text-editor/rich-text-editor.component.mjs +93 -0
  21. package/esm2022/lib/_components/designSystemExtension/wss-quick-create/wss-quick-create.component.mjs +18 -0
  22. package/esm2022/lib/_components/field/auto-complete/auto-complete.component.mjs +286 -0
  23. package/esm2022/lib/_components/field/cancel-alert/cancel-alert.component.mjs +98 -0
  24. package/esm2022/lib/_components/field/check-box/check-box.component.mjs +157 -0
  25. package/esm2022/lib/_components/field/currency/currency.component.mjs +160 -0
  26. package/esm2022/lib/_components/field/date/date.component.mjs +219 -0
  27. package/esm2022/lib/_components/field/date-time/date-time.component.mjs +200 -0
  28. package/esm2022/lib/_components/field/decimal/decimal.component.mjs +157 -0
  29. package/esm2022/lib/_components/field/dropdown/dropdown.component.mjs +197 -0
  30. package/esm2022/lib/_components/field/email/email.component.mjs +150 -0
  31. package/esm2022/lib/_components/field/integer/integer.component.mjs +155 -0
  32. package/esm2022/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.mjs +44 -0
  33. package/esm2022/lib/_components/field/percentage/percentage.component.mjs +155 -0
  34. package/esm2022/lib/_components/field/phone/phone.component.mjs +167 -0
  35. package/esm2022/lib/_components/field/radio-buttons/radio-buttons.component.mjs +189 -0
  36. package/esm2022/lib/_components/field/rich-text/rich-text.component.mjs +103 -0
  37. package/esm2022/lib/_components/field/scalar-list/scalar-list.component.mjs +95 -0
  38. package/esm2022/lib/_components/field/semantic-link/semantic-link.component.mjs +57 -0
  39. package/esm2022/lib/_components/field/text/text.component.mjs +138 -0
  40. package/esm2022/lib/_components/field/text-area/text-area.component.mjs +155 -0
  41. package/esm2022/lib/_components/field/text-content/text-content.component.mjs +69 -0
  42. package/esm2022/lib/_components/field/text-input/text-input.component.mjs +152 -0
  43. package/esm2022/lib/_components/field/time/time.component.mjs +151 -0
  44. package/esm2022/lib/_components/field/url/url.component.mjs +150 -0
  45. package/esm2022/lib/_components/field/user-reference/user-reference.component.mjs +175 -0
  46. package/esm2022/lib/_components/infra/Containers/flow-container/flow-container.component.mjs +491 -0
  47. package/esm2022/lib/_components/infra/Containers/flow-container/helpers.mjs +68 -0
  48. package/esm2022/lib/_components/infra/Containers/hybrid-view-container/hybrid-view-container.component.mjs +24 -0
  49. package/esm2022/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.mjs +314 -0
  50. package/esm2022/lib/_components/infra/Containers/preview-view-container/preview-view-container.component.mjs +32 -0
  51. package/esm2022/lib/_components/infra/Containers/view-container/view-container.component.mjs +219 -0
  52. package/esm2022/lib/_components/infra/action-buttons/action-buttons.component.mjs +31 -0
  53. package/esm2022/lib/_components/infra/assignment/assignment.component.mjs +387 -0
  54. package/esm2022/lib/_components/infra/assignment-card/assignment-card.component.mjs +47 -0
  55. package/esm2022/lib/_components/infra/dashboard-filter/dashboard-filter.component.mjs +88 -0
  56. package/esm2022/lib/_components/infra/defer-load/defer-load.component.mjs +144 -0
  57. package/esm2022/lib/_components/infra/error-boundary/error-boundary.component.mjs +18 -0
  58. package/esm2022/lib/_components/infra/multi-step/multi-step.component.mjs +80 -0
  59. package/esm2022/lib/_components/infra/navbar/navbar.component.mjs +132 -0
  60. package/esm2022/lib/_components/infra/reference/reference.component.mjs +133 -0
  61. package/esm2022/lib/_components/infra/region/region.component.mjs +33 -0
  62. package/esm2022/lib/_components/infra/root-container/root-container.component.mjs +228 -0
  63. package/esm2022/lib/_components/infra/stages/stages.component.mjs +62 -0
  64. package/esm2022/lib/_components/infra/view/view.component.mjs +173 -0
  65. package/esm2022/lib/_components/template/app-shell/app-shell.component.mjs +140 -0
  66. package/esm2022/lib/_components/template/banner-page/banner-page.component.mjs +43 -0
  67. package/esm2022/lib/_components/template/case-summary/case-summary.component.mjs +72 -0
  68. package/esm2022/lib/_components/template/case-view/case-view.component.mjs +196 -0
  69. package/esm2022/lib/_components/template/confirmation/confirmation.component.mjs +68 -0
  70. package/esm2022/lib/_components/template/data-reference/data-reference.component.mjs +239 -0
  71. package/esm2022/lib/_components/template/default-form/default-form.component.mjs +61 -0
  72. package/esm2022/lib/_components/template/details/details.component.mjs +102 -0
  73. package/esm2022/lib/_components/template/details-narrow-wide/details-narrow-wide.component.mjs +72 -0
  74. package/esm2022/lib/_components/template/details-one-column/details-one-column.component.mjs +71 -0
  75. package/esm2022/lib/_components/template/details-sub-tabs/details-sub-tabs.component.mjs +66 -0
  76. package/esm2022/lib/_components/template/details-three-column/details-three-column.component.mjs +80 -0
  77. package/esm2022/lib/_components/template/details-two-column/details-two-column.component.mjs +77 -0
  78. package/esm2022/lib/_components/template/details-wide-narrow/details-wide-narrow.component.mjs +77 -0
  79. package/esm2022/lib/_components/template/dynamic-tabs/dynamic-tabs.component.mjs +65 -0
  80. package/esm2022/lib/_components/template/field-group-list/field-group-list.component.mjs +23 -0
  81. package/esm2022/lib/_components/template/field-group-template/field-group-template.component.mjs +134 -0
  82. package/esm2022/lib/_components/template/field-value-list/field-value-list.component.mjs +19 -0
  83. package/esm2022/lib/_components/template/inline-dashboard/inline-dashboard.component.mjs +22 -0
  84. package/esm2022/lib/_components/template/inline-dashboard-page/inline-dashboard-page.component.mjs +40 -0
  85. package/esm2022/lib/_components/template/list-page/list-page.component.mjs +14 -0
  86. package/esm2022/lib/_components/template/list-view/DefaultViewMeta.mjs +208 -0
  87. package/esm2022/lib/_components/template/list-view/list-view.component.mjs +1198 -0
  88. package/esm2022/lib/_components/template/list-view/listViewHelpers.mjs +61 -0
  89. package/esm2022/lib/_components/template/list-view/utils.mjs +660 -0
  90. package/esm2022/lib/_components/template/multi-reference-readonly/multi-reference-readonly.component.mjs +44 -0
  91. package/esm2022/lib/_components/template/narrow-wide-form/narrow-wide-form.component.mjs +30 -0
  92. package/esm2022/lib/_components/template/one-column/one-column.component.mjs +30 -0
  93. package/esm2022/lib/_components/template/one-column-page/one-column-page.component.mjs +16 -0
  94. package/esm2022/lib/_components/template/one-column-tab/one-column-tab.component.mjs +30 -0
  95. package/esm2022/lib/_components/template/page/page.component.mjs +52 -0
  96. package/esm2022/lib/_components/template/promoted-filters/promoted-filters.component.mjs +149 -0
  97. package/esm2022/lib/_components/template/repeating-structures/repeating-structures.component.mjs +139 -0
  98. package/esm2022/lib/_components/template/simple-table/simple-table.component.mjs +106 -0
  99. package/esm2022/lib/_components/template/simple-table-manual/helpers.mjs +270 -0
  100. package/esm2022/lib/_components/template/simple-table-manual/simple-table-manual.component.mjs +760 -0
  101. package/esm2022/lib/_components/template/simple-table-select/simple-table-select.component.mjs +131 -0
  102. package/esm2022/lib/_components/template/single-reference-readonly/single-reference-readonly.component.mjs +16 -0
  103. package/esm2022/lib/_components/template/sub-tabs/sub-tabs.component.mjs +67 -0
  104. package/esm2022/lib/_components/template/three-column/three-column.component.mjs +30 -0
  105. package/esm2022/lib/_components/template/three-column-page/three-column-page.component.mjs +16 -0
  106. package/esm2022/lib/_components/template/two-column/two-column.component.mjs +30 -0
  107. package/esm2022/lib/_components/template/two-column-page/two-column-page.component.mjs +40 -0
  108. package/esm2022/lib/_components/template/two-column-tab/two-column-tab.component.mjs +30 -0
  109. package/esm2022/lib/_components/template/utils.mjs +22 -0
  110. package/esm2022/lib/_components/template/wide-narrow-form/wide-narrow-form.component.mjs +30 -0
  111. package/esm2022/lib/_components/template/wide-narrow-page/wide-narrow-page.component.mjs +53 -0
  112. package/esm2022/lib/_components/template/wss-nav-bar/wss-nav-bar.component.mjs +135 -0
  113. package/esm2022/lib/_components/widget/app-announcement/app-announcement.component.mjs +24 -0
  114. package/esm2022/lib/_components/widget/attachment/attachment.component.mjs +588 -0
  115. package/esm2022/lib/_components/widget/case-history/case-history.component.mjs +81 -0
  116. package/esm2022/lib/_components/widget/feed-container/feed-container.component.mjs +525 -0
  117. package/esm2022/lib/_components/widget/file-utility/file-utility.component.mjs +631 -0
  118. package/esm2022/lib/_components/widget/list-utility/list-utility.component.mjs +57 -0
  119. package/esm2022/lib/_components/widget/quick-create/quick-create.component.mjs +75 -0
  120. package/esm2022/lib/_components/widget/todo/todo.component.mjs +213 -0
  121. package/esm2022/lib/_components/widget/utility/utility.component.mjs +34 -0
  122. package/esm2022/lib/_directives/thousand-seperator.directive.mjs +28 -0
  123. package/esm2022/lib/_helpers/case-utils.mjs +71 -0
  124. package/esm2022/lib/_helpers/common.mjs +20 -0
  125. package/esm2022/lib/_helpers/currency-utils.mjs +57 -0
  126. package/esm2022/lib/_helpers/date-format-utils.mjs +68 -0
  127. package/esm2022/lib/_helpers/event-util.mjs +19 -0
  128. package/esm2022/lib/_helpers/field-group-utils.mjs +47 -0
  129. package/esm2022/lib/_helpers/filter-utils.mjs +106 -0
  130. package/esm2022/lib/_helpers/formatters/currency-map.mjs +903 -0
  131. package/esm2022/lib/_helpers/formatters/format-utils.mjs +68 -0
  132. package/esm2022/lib/_helpers/tab-utils.mjs +59 -0
  133. package/esm2022/lib/_helpers/template-utils.mjs +56 -0
  134. package/esm2022/lib/_helpers/utils.mjs +386 -0
  135. package/esm2022/lib/_helpers/versionHelpers.mjs +12 -0
  136. package/esm2022/lib/_messages/error-messages.service.mjs +31 -0
  137. package/esm2022/lib/_messages/get-login-status.service.mjs +26 -0
  138. package/esm2022/lib/_messages/oauth-response.service.mjs +30 -0
  139. package/esm2022/lib/_messages/progress-spinner.service.mjs +30 -0
  140. package/esm2022/lib/_messages/reset-pconnect.service.mjs +31 -0
  141. package/esm2022/lib/_messages/update-worklist.service.mjs +30 -0
  142. package/esm2022/lib/_services/case.service.mjs +32 -0
  143. package/esm2022/lib/_services/datapage.service.mjs +52 -0
  144. package/esm2022/lib/_services/endpoints.mjs +61 -0
  145. package/esm2022/lib/_services/server-config.service.mjs +52 -0
  146. package/esm2022/lib/_types/PConnProps.interface.mjs +2 -0
  147. package/esm2022/pega-angular-sdk-components.mjs +5 -0
  148. package/esm2022/public-api.mjs +138 -0
  149. package/esm2022/sdk-local-component-map.mjs +9 -0
  150. package/fesm2022/pega-angular-sdk-components.mjs +17380 -0
  151. package/fesm2022/pega-angular-sdk-components.mjs.map +1 -0
  152. package/index.d.ts +5 -0
  153. package/lib/_bridge/angular-pconnect.d.ts +140 -0
  154. package/lib/_bridge/component-mapper/component-mapper.component.d.ts +20 -0
  155. package/lib/_bridge/helpers/sdk-pega-component-map.d.ts +213 -0
  156. package/lib/_bridge/helpers/sdk_component_map.d.ts +3 -0
  157. package/lib/_components/designSystemExtension/alert/alert.component.d.ts +12 -0
  158. package/lib/_components/designSystemExtension/alert-banner/alert-banner.component.d.ts +13 -0
  159. package/lib/_components/designSystemExtension/banner/banner.component.d.ts +15 -0
  160. package/lib/_components/designSystemExtension/case-create-stage/case-create-stage.component.d.ts +20 -0
  161. package/lib/_components/designSystemExtension/material-case-summary/material-case-summary.component.d.ts +18 -0
  162. package/lib/_components/designSystemExtension/material-details/material-details.component.d.ts +15 -0
  163. package/lib/_components/designSystemExtension/material-details-fields/material-details-fields.component.d.ts +12 -0
  164. package/lib/_components/designSystemExtension/material-summary-item/material-summary-item.component.d.ts +15 -0
  165. package/lib/_components/designSystemExtension/material-summary-list/material-summary-list.component.d.ts +9 -0
  166. package/lib/_components/designSystemExtension/material-utility/material-utility.component.d.ts +16 -0
  167. package/lib/_components/designSystemExtension/material-vertical-tabs/material-vertical-tabs.component.d.ts +11 -0
  168. package/lib/_components/designSystemExtension/operator/operator.component.d.ts +25 -0
  169. package/lib/_components/designSystemExtension/pulse/pulse.component.d.ts +16 -0
  170. package/lib/_components/designSystemExtension/rich-text-editor/rich-text-editor.component.d.ts +23 -0
  171. package/lib/_components/designSystemExtension/wss-quick-create/wss-quick-create.component.d.ts +7 -0
  172. package/lib/_components/field/auto-complete/auto-complete.component.d.ts +74 -0
  173. package/lib/_components/field/cancel-alert/cancel-alert.component.d.ts +24 -0
  174. package/lib/_components/field/check-box/check-box.component.d.ts +48 -0
  175. package/lib/_components/field/currency/currency.component.d.ts +50 -0
  176. package/lib/_components/field/date/date.component.d.ts +65 -0
  177. package/lib/_components/field/date-time/date-time.component.d.ts +55 -0
  178. package/lib/_components/field/decimal/decimal.component.d.ts +46 -0
  179. package/lib/_components/field/dropdown/dropdown.component.d.ts +60 -0
  180. package/lib/_components/field/email/email.component.d.ts +44 -0
  181. package/lib/_components/field/integer/integer.component.d.ts +44 -0
  182. package/lib/_components/field/list-view-action-buttons/list-view-action-buttons.component.d.ts +15 -0
  183. package/lib/_components/field/percentage/percentage.component.d.ts +44 -0
  184. package/lib/_components/field/phone/phone.component.d.ts +48 -0
  185. package/lib/_components/field/radio-buttons/radio-buttons.component.d.ts +60 -0
  186. package/lib/_components/field/rich-text/rich-text.component.d.ts +42 -0
  187. package/lib/_components/field/scalar-list/scalar-list.component.d.ts +37 -0
  188. package/lib/_components/field/semantic-link/semantic-link.component.d.ts +30 -0
  189. package/lib/_components/field/text/text.component.d.ts +40 -0
  190. package/lib/_components/field/text-area/text-area.component.d.ts +45 -0
  191. package/lib/_components/field/text-content/text-content.component.d.ts +30 -0
  192. package/lib/_components/field/text-input/text-input.component.d.ts +45 -0
  193. package/lib/_components/field/time/time.component.d.ts +43 -0
  194. package/lib/_components/field/url/url.component.d.ts +43 -0
  195. package/lib/_components/field/user-reference/user-reference.component.d.ts +39 -0
  196. package/lib/_components/infra/Containers/flow-container/flow-container.component.d.ts +85 -0
  197. package/lib/_components/infra/Containers/flow-container/helpers.d.ts +2 -0
  198. package/lib/_components/infra/Containers/hybrid-view-container/hybrid-view-container.component.d.ts +15 -0
  199. package/lib/_components/infra/Containers/modal-view-container/modal-view-container.component.d.ts +71 -0
  200. package/lib/_components/infra/Containers/preview-view-container/preview-view-container.component.d.ts +15 -0
  201. package/lib/_components/infra/Containers/view-container/view-container.component.d.ts +51 -0
  202. package/lib/_components/infra/action-buttons/action-buttons.component.d.ts +12 -0
  203. package/lib/_components/infra/assignment/assignment.component.d.ts +72 -0
  204. package/lib/_components/infra/assignment-card/assignment-card.component.d.ts +18 -0
  205. package/lib/_components/infra/dashboard-filter/dashboard-filter.component.d.ts +20 -0
  206. package/lib/_components/infra/defer-load/defer-load.component.d.ts +46 -0
  207. package/lib/_components/infra/error-boundary/error-boundary.component.d.ts +8 -0
  208. package/lib/_components/infra/multi-step/multi-step.component.d.ts +31 -0
  209. package/lib/_components/infra/navbar/navbar.component.d.ts +51 -0
  210. package/lib/_components/infra/reference/reference.component.d.ts +16 -0
  211. package/lib/_components/infra/region/region.component.d.ts +14 -0
  212. package/lib/_components/infra/root-container/root-container.component.d.ts +35 -0
  213. package/lib/_components/infra/stages/stages.component.d.ts +29 -0
  214. package/lib/_components/infra/view/view.component.d.ts +40 -0
  215. package/lib/_components/template/app-shell/app-shell.component.d.ts +55 -0
  216. package/lib/_components/template/banner-page/banner-page.component.d.ts +27 -0
  217. package/lib/_components/template/case-summary/case-summary.component.d.ts +34 -0
  218. package/lib/_components/template/case-view/case-view.component.d.ts +56 -0
  219. package/lib/_components/template/confirmation/confirmation.component.d.ts +38 -0
  220. package/lib/_components/template/data-reference/data-reference.component.d.ts +41 -0
  221. package/lib/_components/template/default-form/default-form.component.d.ts +21 -0
  222. package/lib/_components/template/details/details.component.d.ts +20 -0
  223. package/lib/_components/template/details-narrow-wide/details-narrow-wide.component.d.ts +21 -0
  224. package/lib/_components/template/details-one-column/details-one-column.component.d.ts +22 -0
  225. package/lib/_components/template/details-sub-tabs/details-sub-tabs.component.d.ts +24 -0
  226. package/lib/_components/template/details-three-column/details-three-column.component.d.ts +25 -0
  227. package/lib/_components/template/details-two-column/details-two-column.component.d.ts +25 -0
  228. package/lib/_components/template/details-wide-narrow/details-wide-narrow.component.d.ts +24 -0
  229. package/lib/_components/template/dynamic-tabs/dynamic-tabs.component.d.ts +20 -0
  230. package/lib/_components/template/field-group-list/field-group-list.component.d.ts +9 -0
  231. package/lib/_components/template/field-group-template/field-group-template.component.d.ts +52 -0
  232. package/lib/_components/template/field-value-list/field-value-list.component.d.ts +8 -0
  233. package/lib/_components/template/inline-dashboard/inline-dashboard.component.d.ts +16 -0
  234. package/lib/_components/template/inline-dashboard-page/inline-dashboard-page.component.d.ts +25 -0
  235. package/lib/_components/template/list-page/list-page.component.d.ts +7 -0
  236. package/lib/_components/template/list-view/DefaultViewMeta.d.ts +1 -0
  237. package/lib/_components/template/list-view/list-view.component.d.ts +157 -0
  238. package/lib/_components/template/list-view/listViewHelpers.d.ts +1 -0
  239. package/lib/_components/template/list-view/utils.d.ts +118 -0
  240. package/lib/_components/template/multi-reference-readonly/multi-reference-readonly.component.d.ts +25 -0
  241. package/lib/_components/template/narrow-wide-form/narrow-wide-form.component.d.ts +14 -0
  242. package/lib/_components/template/one-column/one-column.component.d.ts +14 -0
  243. package/lib/_components/template/one-column-page/one-column-page.component.d.ts +9 -0
  244. package/lib/_components/template/one-column-tab/one-column-tab.component.d.ts +14 -0
  245. package/lib/_components/template/page/page.component.d.ts +25 -0
  246. package/lib/_components/template/promoted-filters/promoted-filters.component.d.ts +35 -0
  247. package/lib/_components/template/repeating-structures/repeating-structures.component.d.ts +37 -0
  248. package/lib/_components/template/simple-table/simple-table.component.d.ts +43 -0
  249. package/lib/_components/template/simple-table-manual/helpers.d.ts +81 -0
  250. package/lib/_components/template/simple-table-manual/simple-table-manual.component.d.ts +159 -0
  251. package/lib/_components/template/simple-table-select/simple-table-select.component.d.ts +32 -0
  252. package/lib/_components/template/single-reference-readonly/single-reference-readonly.component.d.ts +9 -0
  253. package/lib/_components/template/sub-tabs/sub-tabs.component.d.ts +26 -0
  254. package/lib/_components/template/three-column/three-column.component.d.ts +14 -0
  255. package/lib/_components/template/three-column-page/three-column-page.component.d.ts +9 -0
  256. package/lib/_components/template/two-column/two-column.component.d.ts +14 -0
  257. package/lib/_components/template/two-column-page/two-column-page.component.d.ts +17 -0
  258. package/lib/_components/template/two-column-tab/two-column-tab.component.d.ts +14 -0
  259. package/lib/_components/template/utils.d.ts +2 -0
  260. package/lib/_components/template/wide-narrow-form/wide-narrow-form.component.d.ts +14 -0
  261. package/lib/_components/template/wide-narrow-page/wide-narrow-page.component.d.ts +20 -0
  262. package/lib/_components/template/wss-nav-bar/wss-nav-bar.component.d.ts +50 -0
  263. package/lib/_components/widget/app-announcement/app-announcement.component.d.ts +19 -0
  264. package/lib/_components/widget/attachment/attachment.component.d.ts +99 -0
  265. package/lib/_components/widget/case-history/case-history.component.d.ts +24 -0
  266. package/lib/_components/widget/feed-container/feed-container.component.d.ts +49 -0
  267. package/lib/_components/widget/file-utility/file-utility.component.d.ts +150 -0
  268. package/lib/_components/widget/list-utility/list-utility.component.d.ts +23 -0
  269. package/lib/_components/widget/quick-create/quick-create.component.d.ts +29 -0
  270. package/lib/_components/widget/todo/todo.component.d.ts +64 -0
  271. package/lib/_components/widget/utility/utility.component.d.ts +25 -0
  272. package/lib/_directives/thousand-seperator.directive.d.ts +9 -0
  273. package/lib/_helpers/case-utils.d.ts +19 -0
  274. package/lib/_helpers/common.d.ts +3 -0
  275. package/lib/_helpers/currency-utils.d.ts +10 -0
  276. package/lib/_helpers/date-format-utils.d.ts +12 -0
  277. package/lib/_helpers/event-util.d.ts +2 -0
  278. package/lib/_helpers/field-group-utils.d.ts +16 -0
  279. package/lib/_helpers/filter-utils.d.ts +46 -0
  280. package/lib/_helpers/formatters/currency-map.d.ts +1132 -0
  281. package/lib/_helpers/formatters/format-utils.d.ts +8 -0
  282. package/lib/_helpers/tab-utils.d.ts +4 -0
  283. package/lib/_helpers/template-utils.d.ts +16 -0
  284. package/lib/_helpers/utils.d.ts +32 -0
  285. package/lib/_helpers/versionHelpers.d.ts +8 -0
  286. package/lib/_messages/error-messages.service.d.ts +15 -0
  287. package/lib/_messages/get-login-status.service.d.ts +10 -0
  288. package/lib/_messages/oauth-response.service.d.ts +14 -0
  289. package/lib/_messages/progress-spinner.service.d.ts +14 -0
  290. package/lib/_messages/reset-pconnect.service.d.ts +15 -0
  291. package/lib/_messages/update-worklist.service.d.ts +14 -0
  292. package/lib/_services/case.service.d.ts +12 -0
  293. package/lib/_services/datapage.service.d.ts +14 -0
  294. package/lib/_services/endpoints.d.ts +39 -0
  295. package/lib/_services/server-config.service.d.ts +31 -0
  296. package/lib/_types/PConnProps.interface.d.ts +17 -0
  297. package/package.json +28 -0
  298. package/public-api.d.ts +133 -0
  299. package/sdk-local-component-map.d.ts +2 -0
  300. package/sdk-local-component-map.ts +12 -0
@@ -0,0 +1,228 @@
1
+ import { Component, Input, forwardRef } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
4
+ import { interval } from 'rxjs';
5
+ import { ReferenceComponent } from '../reference/reference.component';
6
+ import { PreviewViewContainerComponent } from '../Containers/preview-view-container/preview-view-container.component';
7
+ import { ModalViewContainerComponent } from '../Containers/modal-view-container/modal-view-container.component';
8
+ import { HybridViewContainerComponent } from '../Containers/hybrid-view-container/hybrid-view-container.component';
9
+ import { ComponentMapperComponent } from '../../../_bridge/component-mapper/component-mapper.component';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "../../../_bridge/angular-pconnect";
12
+ import * as i2 from "../../../_messages/progress-spinner.service";
13
+ import * as i3 from "@angular/common";
14
+ import * as i4 from "@angular/material/progress-spinner";
15
+ /**
16
+ * WARNING: It is not expected that this file should be modified. It is part of infrastructure code that works with
17
+ * Redux and creation/update of Redux containers and PConnect. Modifying this code could have undesireable results and
18
+ * is totally at your own risk.
19
+ */
20
+ const options = { context: 'app' };
21
+ export class RootContainerComponent {
22
+ constructor(angularPConnect, psService, ngZone) {
23
+ this.angularPConnect = angularPConnect;
24
+ this.psService = psService;
25
+ this.ngZone = ngZone;
26
+ // For interaction with AngularPConnect
27
+ this.angularPConnectData = {};
28
+ this.componentName$ = '';
29
+ this.bIsProgress$ = false;
30
+ // preview and modalview pConn
31
+ this.pvConn$ = null;
32
+ this.mConn$ = null;
33
+ this.bShowRoot$ = true;
34
+ this.spinnerTimer = null;
35
+ this.viewContainerPConn$ = null;
36
+ this.localeCategory = 'Messages';
37
+ }
38
+ ngOnInit() {
39
+ const myContext = 'app';
40
+ const { containers } = PCore.getStore().getState();
41
+ const items = Object.keys(containers).filter(item => item.includes('root'));
42
+ PCore.getContainerUtils().getContainerAPI().addContainerItems(items);
43
+ // add preview and modalview containers to redux
44
+ // keep local copies of the the pConnect that is related
45
+ const configObjPreview = PCore.createPConnect({
46
+ meta: {
47
+ type: 'PreviewViewContainer',
48
+ config: {
49
+ name: 'preview'
50
+ }
51
+ },
52
+ options
53
+ });
54
+ this.pvConn$ = configObjPreview.getPConnect();
55
+ const configObjModal = PCore.createPConnect({
56
+ meta: {
57
+ type: 'ModalViewContainer',
58
+ config: {
59
+ name: 'modal'
60
+ }
61
+ },
62
+ options: {
63
+ pageReference: 'pyPortal',
64
+ context: myContext
65
+ }
66
+ });
67
+ // clear out hasViewContainer
68
+ sessionStorage.setItem('hasViewContainer', 'false');
69
+ this.mConn$ = configObjModal.getPConnect();
70
+ // First thing in initialization is registering and subscribing to the AngularPConnect service
71
+ this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
72
+ // handle showing and hiding the progress spinner
73
+ this.progressSpinnerSubscription = this.psService.getMessage().subscribe(message => {
74
+ this.showHideProgress(message.show);
75
+ });
76
+ this.localizedVal = PCore.getLocaleUtils().getLocaleValue;
77
+ }
78
+ ngOnDestroy() {
79
+ if (this.angularPConnectData.unsubscribeFn) {
80
+ this.angularPConnectData.unsubscribeFn();
81
+ }
82
+ }
83
+ // Callback passed when subscribing to store change
84
+ onStateChange() {
85
+ // Should always check the bridge to see if the component should update itself (re-render)
86
+ const bUpdateSelf = this.angularPConnect.shouldComponentUpdate(this);
87
+ if (bUpdateSelf) {
88
+ this.updateSelf();
89
+ }
90
+ }
91
+ modalVisibleChanged(isVisible) {
92
+ if (this.displayOnlyFA$) {
93
+ if (isVisible) {
94
+ this.bShowRoot$ = false;
95
+ }
96
+ else {
97
+ this.bShowRoot$ = true;
98
+ }
99
+ }
100
+ }
101
+ updateSelf() {
102
+ // need to call this.getCurrentCompleteProps (not this.thePConn.getConfigProps)
103
+ // to get full set of props that affect this component in Redux
104
+ const myProps = this.angularPConnect.getCurrentCompleteProps(this);
105
+ const renderingModes = ['portal', 'view'];
106
+ const noPortalMode = 'noPortal';
107
+ const { renderingMode, children, skeleton, routingInfo } = myProps;
108
+ if (routingInfo && renderingModes.includes(renderingMode)) {
109
+ const { accessedOrder, items } = routingInfo;
110
+ if (accessedOrder && items) {
111
+ // bootstrap loadPortal resolves to here
112
+ const key = accessedOrder[accessedOrder.length - 1];
113
+ if (items[key] && items[key].view && Object.keys(items[key].view).length > 0) {
114
+ const itemView = items[key].view;
115
+ const rootObject = PCore.createPConnect({
116
+ meta: itemView,
117
+ options: {
118
+ context: items[key].context
119
+ }
120
+ });
121
+ setTimeout(() => {
122
+ // makes sure Angular tracks these changes
123
+ this.ngZone.run(() => {
124
+ // the new rootObject may be a 'reference'. So,
125
+ // normalize it to get the referencedView if that's the case
126
+ const theNewPConn = ReferenceComponent.normalizePConn(rootObject.getPConnect());
127
+ // update ComponentName$ before we update pConn$ to make sure they're in sync
128
+ // when rendering...
129
+ this.componentName$ = theNewPConn.getComponentName();
130
+ this.pConn$ = theNewPConn;
131
+ // this.pConn$ = rootObject.getPConnect();
132
+ console.log(`RootContainer updated pConn$ to be: ${this.componentName$}`);
133
+ });
134
+ });
135
+ }
136
+ }
137
+ }
138
+ else if (renderingMode === noPortalMode) {
139
+ // console.log(`RootContainer: renderingMode === noPortalMode: ${noPortalMode}`);
140
+ this.generateViewContainerForNoPortal();
141
+ }
142
+ else if (children && children.length > 0) {
143
+ // haven't resolved to here
144
+ }
145
+ else if (skeleton !== undefined) {
146
+ // TODO: need to update once skeletons are available;
147
+ }
148
+ }
149
+ generateViewContainerForNoPortal() {
150
+ // bootstrap loadMashup resolves to here
151
+ const arChildren = this.pConn$.getChildren();
152
+ if (arChildren && arChildren.length == 1) {
153
+ // have to have a quick timeout or get an "expressions changed" angular error
154
+ setTimeout(() => {
155
+ this.ngZone.run(() => {
156
+ const localPConn = arChildren[0].getPConnect();
157
+ this.componentName$ = localPConn.getComponentName();
158
+ if (this.componentName$ === 'ViewContainer') {
159
+ const configProps = this.pConn$.getConfigProps();
160
+ const viewContConfig = {
161
+ meta: {
162
+ type: 'ViewContainer',
163
+ config: configProps
164
+ },
165
+ options
166
+ };
167
+ this.viewContainerPConn$ = PCore.createPConnect(viewContConfig).getPConnect();
168
+ }
169
+ this.bShowRoot$ = true;
170
+ });
171
+ });
172
+ }
173
+ }
174
+ showHideProgress(bShow) {
175
+ // only show spinner after 500ms wait, so if server fast, won't see
176
+ if (bShow) {
177
+ // eslint-disable-next-line sonarjs/no-collapsible-if
178
+ if (!this.bIsProgress$) {
179
+ // makes sure Angular tracks these changes
180
+ if (!this.spinnerTimer || this.spinnerTimer.isStopped) {
181
+ this.spinnerTimer = interval(500).subscribe(() => {
182
+ try {
183
+ this.spinnerTimer.unsubscribe();
184
+ }
185
+ catch (ex) {
186
+ /* empty */
187
+ }
188
+ this.ngZone.run(() => {
189
+ this.bIsProgress$ = true;
190
+ });
191
+ });
192
+ }
193
+ }
194
+ }
195
+ else {
196
+ if (this.spinnerTimer && !this.spinnerTimer.isStopped) {
197
+ this.spinnerTimer.unsubscribe();
198
+ }
199
+ // don't touch bIsProgress$ unless differnent
200
+ if (bShow != this.bIsProgress$) {
201
+ // makes sure Angular tracks these changes
202
+ this.ngZone.run(() => {
203
+ this.bIsProgress$ = bShow;
204
+ });
205
+ }
206
+ }
207
+ }
208
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RootContainerComponent, deps: [{ token: i1.AngularPConnectService }, { token: i2.ProgressSpinnerService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
209
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: RootContainerComponent, isStandalone: true, selector: "app-root-container", inputs: { pConn$: "pConn$", displayOnlyFA$: "displayOnlyFA$", isMashup$: "isMashup$" }, ngImport: i0, template: "<div class=\"progress-box\" *ngIf=\"bIsProgress$\">\n <mat-spinner class=\"progress-spinner\"></mat-spinner>\n</div>\n\n<div *ngIf=\"bShowRoot$\">\n <div [ngSwitch]=\"componentName$\">\n <component-mapper *ngSwitchCase=\"'View'\" name=\"View\" [props]=\"{ pConn$, displayOnlyFA$ }\"></component-mapper>\n <!-- <app-reference *ngSwitchCase=\"'reference'\" [pConn$]=\"pConn$\" [displayOnlyFA$]=\"displayOnlyFA$\"></app-reference> -->\n <component-mapper\n *ngSwitchCase=\"'ViewContainer'\"\n name=\"ViewContainer\"\n [props]=\"{ pConn$: displayOnlyFA$ ? viewContainerPConn$ : pConn$, displayOnlyFA$ }\"\n ></component-mapper>\n <app-hybrid-view-container *ngSwitchCase=\"'HybridViewContainer'\" [pConn$]=\"pConn$\" [displayOnlyFA$]=\"displayOnlyFA$\"></app-hybrid-view-container>\n <app-modal-view-container\n *ngSwitchCase=\"'ModalViewContainer'\"\n [pConn$]=\"pConn$\"\n [displayOnlyFA$]=\"displayOnlyFA$\"\n (modalVisibleChange)=\"modalVisibleChanged($event)\"\n ></app-modal-view-container>\n <div *ngSwitchCase=\"''\"></div>\n <div *ngSwitchDefault>{{ localizedVal('RootContainer Missing: ' + componentName$, localeCategory) }}.</div>\n </div>\n</div>\n\n<div *ngIf=\"pvConn$ != null\">\n <app-preview-view-container [pConn$]=\"pvConn$\"></app-preview-view-container>\n</div>\n\n<div *ngIf=\"mConn$ != null\">\n <app-modal-view-container\n [pConn$]=\"mConn$\"\n [displayOnlyFA$]=\"displayOnlyFA$\"\n (modalVisibleChange)=\"modalVisibleChanged($event)\"\n ></app-modal-view-container>\n</div>\n", styles: [".progress-box{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;width:100%;background-color:#f5f5f5;position:fixed;z-index:99999;top:0rem;left:0rem;opacity:.5}.progress-spinner{text-align:center}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(function () { return CommonModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgSwitch; }), selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgSwitchCase; }), selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgSwitchDefault; }), selector: "[ngSwitchDefault]" }, { kind: "ngmodule", type: i0.forwardRef(function () { return MatProgressSpinnerModule; }) }, { kind: "component", type: i0.forwardRef(function () { return i4.MatProgressSpinner; }), selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i0.forwardRef(function () { return HybridViewContainerComponent; }), selector: "app-hybrid-view-container", inputs: ["pConn$", "formGroup$", "displayOnlyFA$"] }, { kind: "component", type: i0.forwardRef(function () { return ModalViewContainerComponent; }), selector: "app-modal-view-container", inputs: ["pConn$", "displayOnlyFA$"], outputs: ["modalVisibleChange"] }, { kind: "component", type: i0.forwardRef(function () { return PreviewViewContainerComponent; }), selector: "app-preview-view-container", inputs: ["pConn$"] }, { kind: "component", type: i0.forwardRef(function () { return ComponentMapperComponent; }), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
210
+ }
211
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: RootContainerComponent, decorators: [{
212
+ type: Component,
213
+ args: [{ selector: 'app-root-container', standalone: true, imports: [
214
+ CommonModule,
215
+ MatProgressSpinnerModule,
216
+ HybridViewContainerComponent,
217
+ ModalViewContainerComponent,
218
+ PreviewViewContainerComponent,
219
+ forwardRef(() => ComponentMapperComponent)
220
+ ], template: "<div class=\"progress-box\" *ngIf=\"bIsProgress$\">\n <mat-spinner class=\"progress-spinner\"></mat-spinner>\n</div>\n\n<div *ngIf=\"bShowRoot$\">\n <div [ngSwitch]=\"componentName$\">\n <component-mapper *ngSwitchCase=\"'View'\" name=\"View\" [props]=\"{ pConn$, displayOnlyFA$ }\"></component-mapper>\n <!-- <app-reference *ngSwitchCase=\"'reference'\" [pConn$]=\"pConn$\" [displayOnlyFA$]=\"displayOnlyFA$\"></app-reference> -->\n <component-mapper\n *ngSwitchCase=\"'ViewContainer'\"\n name=\"ViewContainer\"\n [props]=\"{ pConn$: displayOnlyFA$ ? viewContainerPConn$ : pConn$, displayOnlyFA$ }\"\n ></component-mapper>\n <app-hybrid-view-container *ngSwitchCase=\"'HybridViewContainer'\" [pConn$]=\"pConn$\" [displayOnlyFA$]=\"displayOnlyFA$\"></app-hybrid-view-container>\n <app-modal-view-container\n *ngSwitchCase=\"'ModalViewContainer'\"\n [pConn$]=\"pConn$\"\n [displayOnlyFA$]=\"displayOnlyFA$\"\n (modalVisibleChange)=\"modalVisibleChanged($event)\"\n ></app-modal-view-container>\n <div *ngSwitchCase=\"''\"></div>\n <div *ngSwitchDefault>{{ localizedVal('RootContainer Missing: ' + componentName$, localeCategory) }}.</div>\n </div>\n</div>\n\n<div *ngIf=\"pvConn$ != null\">\n <app-preview-view-container [pConn$]=\"pvConn$\"></app-preview-view-container>\n</div>\n\n<div *ngIf=\"mConn$ != null\">\n <app-modal-view-container\n [pConn$]=\"mConn$\"\n [displayOnlyFA$]=\"displayOnlyFA$\"\n (modalVisibleChange)=\"modalVisibleChanged($event)\"\n ></app-modal-view-container>\n</div>\n", styles: [".progress-box{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;width:100%;background-color:#f5f5f5;position:fixed;z-index:99999;top:0rem;left:0rem;opacity:.5}.progress-spinner{text-align:center}\n"] }]
221
+ }], ctorParameters: function () { return [{ type: i1.AngularPConnectService }, { type: i2.ProgressSpinnerService }, { type: i0.NgZone }]; }, propDecorators: { pConn$: [{
222
+ type: Input
223
+ }], displayOnlyFA$: [{
224
+ type: Input
225
+ }], isMashup$: [{
226
+ type: Input
227
+ }] } });
228
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdC1jb250YWluZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvYW5ndWxhci1zZGstY29tcG9uZW50cy9zcmMvbGliL19jb21wb25lbnRzL2luZnJhL3Jvb3QtY29udGFpbmVyL3Jvb3QtY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy9pbmZyYS9yb290LWNvbnRhaW5lci9yb290LWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBVSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDeEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxRQUFRLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRzlDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHVFQUF1RSxDQUFDO0FBQ3RILE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG1FQUFtRSxDQUFDO0FBQ2hILE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHFFQUFxRSxDQUFDO0FBQ25ILE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDOzs7Ozs7QUFFeEc7Ozs7R0FJRztBQUVILE1BQU0sT0FBTyxHQUFHLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDO0FBZ0JuQyxNQUFNLE9BQU8sc0JBQXNCO0lBdUJqQyxZQUNVLGVBQXVDLEVBQ3ZDLFNBQWlDLEVBQ2pDLE1BQWM7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QUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE5nWm9uZSwgZm9yd2FyZFJlZiwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQgeyBpbnRlcnZhbCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBbmd1bGFyUENvbm5lY3REYXRhLCBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9hbmd1bGFyLXBjb25uZWN0JztcbmltcG9ydCB7IFByb2dyZXNzU3Bpbm5lclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fbWVzc2FnZXMvcHJvZ3Jlc3Mtc3Bpbm5lci5zZXJ2aWNlJztcbmltcG9ydCB7IFJlZmVyZW5jZUNvbXBvbmVudCB9IGZyb20gJy4uL3JlZmVyZW5jZS9yZWZlcmVuY2UuY29tcG9uZW50JztcbmltcG9ydCB7IFByZXZpZXdWaWV3Q29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vQ29udGFpbmVycy9wcmV2aWV3LXZpZXctY29udGFpbmVyL3ByZXZpZXctdmlldy1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7IE1vZGFsVmlld0NvbnRhaW5lckNvbXBvbmVudCB9IGZyb20gJy4uL0NvbnRhaW5lcnMvbW9kYWwtdmlldy1jb250YWluZXIvbW9kYWwtdmlldy1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEh5YnJpZFZpZXdDb250YWluZXJDb21wb25lbnQgfSBmcm9tICcuLi9Db250YWluZXJzL2h5YnJpZC12aWV3LWNvbnRhaW5lci9oeWJyaWQtdmlldy1jb250YWluZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL19icmlkZ2UvY29tcG9uZW50LW1hcHBlci9jb21wb25lbnQtbWFwcGVyLmNvbXBvbmVudCc7XG5cbi8qKlxuICogV0FSTklORzogIEl0IGlzIG5vdCBleHBlY3RlZCB0aGF0IHRoaXMgZmlsZSBzaG91bGQgYmUgbW9kaWZpZWQuICBJdCBpcyBwYXJ0IG9mIGluZnJhc3RydWN0dXJlIGNvZGUgdGhhdCB3b3JrcyB3aXRoXG4gKiBSZWR1eCBhbmQgY3JlYXRpb24vdXBkYXRlIG9mIFJlZHV4IGNvbnRhaW5lcnMgYW5kIFBDb25uZWN0LiAgTW9kaWZ5aW5nIHRoaXMgY29kZSBjb3VsZCBoYXZlIHVuZGVzaXJlYWJsZSByZXN1bHRzIGFuZFxuICogaXMgdG90YWxseSBhdCB5b3VyIG93biByaXNrLlxuICovXG5cbmNvbnN0IG9wdGlvbnMgPSB7IGNvbnRleHQ6ICdhcHAnIH07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1yb290LWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9yb290LWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Jvb3QtY29udGFpbmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLFxuICAgIEh5YnJpZFZpZXdDb250YWluZXJDb21wb25lbnQsXG4gICAgTW9kYWxWaWV3Q29udGFpbmVyQ29tcG9uZW50LFxuICAgIFByZXZpZXdWaWV3Q29udGFpbmVyQ29tcG9uZW50LFxuICAgIGZvcndhcmRSZWYoKCkgPT4gQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50KVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFJvb3RDb250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHBDb25uJDogdHlwZW9mIFBDb25uZWN0O1xuICBASW5wdXQoKSBkaXNwbGF5T25seUZBJDogYm9vbGVhbjtcbiAgQElucHV0KCkgaXNNYXNodXAkOiBib29sZWFuO1xuXG4gIC8vIEZvciBpbnRlcmFjdGlvbiB3aXRoIEFuZ3VsYXJQQ29ubmVjdFxuICBhbmd1bGFyUENvbm5lY3REYXRhOiBBbmd1bGFyUENvbm5lY3REYXRhID0ge307XG5cbiAgY29tcG9uZW50TmFtZSQgPSAnJztcbiAgYklzUHJvZ3Jlc3MkID0gZmFsc2U7XG5cbiAgLy8gcHJldmlldyBhbmQgbW9kYWx2aWV3IHBDb25uXG4gIHB2Q29ubiQ6IGFueSA9IG51bGw7XG4gIG1Db25uJDogYW55ID0gbnVsbDtcblxuICBiU2hvd1Jvb3QkID0gdHJ1ZTtcblxuICBwcm9ncmVzc1NwaW5uZXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgc3Bpbm5lclRpbWVyOiBhbnkgPSBudWxsO1xuICB2aWV3Q29udGFpbmVyUENvbm4kOiBhbnkgPSBudWxsO1xuICBsb2NhbGl6ZWRWYWw6IGFueTtcbiAgbG9jYWxlQ2F0ZWdvcnkgPSAnTWVzc2FnZXMnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYW5ndWxhclBDb25uZWN0OiBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgcHNTZXJ2aWNlOiBQcm9ncmVzc1NwaW5uZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGNvbnN0IG15Q29udGV4dCA9ICdhcHAnO1xuXG4gICAgY29uc3QgeyBjb250YWluZXJzIH0gPSBQQ29yZS5nZXRTdG9yZSgpLmdldFN0YXRlKCk7XG4gICAgY29uc3QgaXRlbXMgPSBPYmplY3Qua2V5cyhjb250YWluZXJzKS5maWx0ZXIoaXRlbSA9PiBpdGVtLmluY2x1ZGVzKCdyb290JykpO1xuXG4gICAgKFBDb3JlLmdldENvbnRhaW5lclV0aWxzKCkuZ2V0Q29udGFpbmVyQVBJKCkgYXMgYW55KS5hZGRDb250YWluZXJJdGVtcyhpdGVtcyk7XG5cbiAgICAvLyBhZGQgcHJldmlldyBhbmQgbW9kYWx2aWV3IGNvbnRhaW5lcnMgdG8gcmVkdXhcbiAgICAvLyBrZWVwIGxvY2FsIGNvcGllcyBvZiB0aGUgdGhlIHBDb25uZWN0IHRoYXQgaXMgcmVsYXRlZFxuXG4gICAgY29uc3QgY29uZmlnT2JqUHJldmlldyA9IFBDb3JlLmNyZWF0ZVBDb25uZWN0KHtcbiAgICAgIG1ldGE6IHtcbiAgICAgICAgdHlwZTogJ1ByZXZpZXdWaWV3Q29udGFpbmVyJyxcbiAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgbmFtZTogJ3ByZXZpZXcnXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBvcHRpb25zXG4gICAgfSk7XG5cbiAgICB0aGlzLnB2Q29ubiQgPSBjb25maWdPYmpQcmV2aWV3LmdldFBDb25uZWN0KCk7XG5cbiAgICBjb25zdCBjb25maWdPYmpNb2RhbCA9IFBDb3JlLmNyZWF0ZVBDb25uZWN0KHtcbiAgICAgIG1ldGE6IHtcbiAgICAgICAgdHlwZTogJ01vZGFsVmlld0NvbnRhaW5lcicsXG4gICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgIG5hbWU6ICdtb2RhbCdcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgcGFnZVJlZmVyZW5jZTogJ3B5UG9ydGFsJyxcbiAgICAgICAgY29udGV4dDogbXlDb250ZXh0XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBjbGVhciBvdXQgaGFzVmlld0NvbnRhaW5lclxuICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2hhc1ZpZXdDb250YWluZXInLCAnZmFsc2UnKTtcblxuICAgIHRoaXMubUNvbm4kID0gY29uZmlnT2JqTW9kYWwuZ2V0UENvbm5lY3QoKTtcblxuICAgIC8vIEZpcnN0IHRoaW5nIGluIGluaXRpYWxpemF0aW9uIGlzIHJlZ2lzdGVyaW5nIGFuZCBzdWJzY3JpYmluZyB0byB0aGUgQW5ndWxhclBDb25uZWN0IHNlcnZpY2VcbiAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5yZWdpc3RlckFuZFN1YnNjcmliZUNvbXBvbmVudCh0aGlzLCB0aGlzLm9uU3RhdGVDaGFuZ2UpO1xuXG4gICAgLy8gaGFuZGxlIHNob3dpbmcgYW5kIGhpZGluZyB0aGUgcHJvZ3Jlc3Mgc3Bpbm5lclxuICAgIHRoaXMucHJvZ3Jlc3NTcGlubmVyU3Vic2NyaXB0aW9uID0gdGhpcy5wc1NlcnZpY2UuZ2V0TWVzc2FnZSgpLnN1YnNjcmliZShtZXNzYWdlID0+IHtcbiAgICAgIHRoaXMuc2hvd0hpZGVQcm9ncmVzcyhtZXNzYWdlLnNob3cpO1xuICAgIH0pO1xuICAgIHRoaXMubG9jYWxpemVkVmFsID0gUENvcmUuZ2V0TG9jYWxlVXRpbHMoKS5nZXRMb2NhbGVWYWx1ZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbikge1xuICAgICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnVuc3Vic2NyaWJlRm4oKTtcbiAgICB9XG4gIH1cblxuICAvLyBDYWxsYmFjayBwYXNzZWQgd2hlbiBzdWJzY3JpYmluZyB0byBzdG9yZSBjaGFuZ2VcbiAgb25TdGF0ZUNoYW5nZSgpIHtcbiAgICAvLyBTaG91bGQgYWx3YXlzIGNoZWNrIHRoZSBicmlkZ2UgdG8gc2VlIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkIHVwZGF0ZSBpdHNlbGYgKHJlLXJlbmRlcilcbiAgICBjb25zdCBiVXBkYXRlU2VsZiA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnNob3VsZENvbXBvbmVudFVwZGF0ZSh0aGlzKTtcblxuICAgIGlmIChiVXBkYXRlU2VsZikge1xuICAgICAgdGhpcy51cGRhdGVTZWxmKCk7XG4gICAgfVxuICB9XG5cbiAgbW9kYWxWaXNpYmxlQ2hhbmdlZChpc1Zpc2libGUpIHtcbiAgICBpZiAodGhpcy5kaXNwbGF5T25seUZBJCkge1xuICAgICAgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgICB0aGlzLmJTaG93Um9vdCQgPSBmYWxzZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYlNob3dSb290JCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlU2VsZigpIHtcbiAgICAvLyBuZWVkIHRvIGNhbGwgdGhpcy5nZXRDdXJyZW50Q29tcGxldGVQcm9wcyAobm90IHRoaXMudGhlUENvbm4uZ2V0Q29uZmlnUHJvcHMpXG4gICAgLy8gIHRvIGdldCBmdWxsIHNldCBvZiBwcm9wcyB0aGF0IGFmZmVjdCB0aGlzIGNvbXBvbmVudCBpbiBSZWR1eFxuICAgIGNvbnN0IG15UHJvcHM6IGFueSA9IHRoaXMuYW5ndWxhclBDb25uZWN0LmdldEN1cnJlbnRDb21wbGV0ZVByb3BzKHRoaXMpO1xuXG4gICAgY29uc3QgcmVuZGVyaW5nTW9kZXMgPSBbJ3BvcnRhbCcsICd2aWV3J107XG4gICAgY29uc3Qgbm9Qb3J0YWxNb2RlID0gJ25vUG9ydGFsJztcblxuICAgIGNvbnN0IHsgcmVuZGVyaW5nTW9kZSwgY2hpbGRyZW4sIHNrZWxldG9uLCByb3V0aW5nSW5mbyB9ID0gbXlQcm9wcztcblxuICAgIGlmIChyb3V0aW5nSW5mbyAmJiByZW5kZXJpbmdNb2Rlcy5pbmNsdWRlcyhyZW5kZXJpbmdNb2RlKSkge1xuICAgICAgY29uc3QgeyBhY2Nlc3NlZE9yZGVyLCBpdGVtcyB9ID0gcm91dGluZ0luZm87XG4gICAgICBpZiAoYWNjZXNzZWRPcmRlciAmJiBpdGVtcykge1xuICAgICAgICAvLyBib290c3RyYXAgbG9hZFBvcnRhbCByZXNvbHZlcyB0byBoZXJlXG4gICAgICAgIGNvbnN0IGtleSA9IGFjY2Vzc2VkT3JkZXJbYWNjZXNzZWRPcmRlci5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKGl0ZW1zW2tleV0gJiYgaXRlbXNba2V5XS52aWV3ICYmIE9iamVjdC5rZXlzKGl0ZW1zW2tleV0udmlldykubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGNvbnN0IGl0ZW1WaWV3ID0gaXRlbXNba2V5XS52aWV3O1xuXG4gICAgICAgICAgY29uc3Qgcm9vdE9iamVjdDogYW55ID0gUENvcmUuY3JlYXRlUENvbm5lY3Qoe1xuICAgICAgICAgICAgbWV0YTogaXRlbVZpZXcsXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgIGNvbnRleHQ6IGl0ZW1zW2tleV0uY29udGV4dFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAvLyBtYWtlcyBzdXJlIEFuZ3VsYXIgdHJhY2tzIHRoZXNlIGNoYW5nZXNcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgIC8vIHRoZSBuZXcgcm9vdE9iamVjdCBtYXkgYmUgYSAncmVmZXJlbmNlJy4gU28sXG4gICAgICAgICAgICAgIC8vICBub3JtYWxpemUgaXQgdG8gZ2V0IHRoZSByZWZlcmVuY2VkVmlldyBpZiB0aGF0J3MgdGhlIGNhc2VcbiAgICAgICAgICAgICAgY29uc3QgdGhlTmV3UENvbm4gPSBSZWZlcmVuY2VDb21wb25lbnQubm9ybWFsaXplUENvbm4ocm9vdE9iamVjdC5nZXRQQ29ubmVjdCgpKTtcbiAgICAgICAgICAgICAgLy8gdXBkYXRlIENvbXBvbmVudE5hbWUkIGJlZm9yZSB3ZSB1cGRhdGUgcENvbm4kIHRvIG1ha2Ugc3VyZSB0aGV5J3JlIGluIHN5bmNcbiAgICAgICAgICAgICAgLy8gIHdoZW4gcmVuZGVyaW5nLi4uXG4gICAgICAgICAgICAgIHRoaXMuY29tcG9uZW50TmFtZSQgPSB0aGVOZXdQQ29ubi5nZXRDb21wb25lbnROYW1lKCk7XG5cbiAgICAgICAgICAgICAgdGhpcy5wQ29ubiQgPSB0aGVOZXdQQ29ubjtcbiAgICAgICAgICAgICAgLy8gdGhpcy5wQ29ubiQgPSByb290T2JqZWN0LmdldFBDb25uZWN0KCk7XG5cbiAgICAgICAgICAgICAgY29uc29sZS5sb2coYFJvb3RDb250YWluZXIgdXBkYXRlZCBwQ29ubiQgdG8gYmU6ICR7dGhpcy5jb21wb25lbnROYW1lJH1gKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChyZW5kZXJpbmdNb2RlID09PSBub1BvcnRhbE1vZGUpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGBSb290Q29udGFpbmVyOiByZW5kZXJpbmdNb2RlID09PSBub1BvcnRhbE1vZGU6ICR7bm9Qb3J0YWxNb2RlfWApO1xuICAgICAgdGhpcy5nZW5lcmF0ZVZpZXdDb250YWluZXJGb3JOb1BvcnRhbCgpO1xuICAgIH0gZWxzZSBpZiAoY2hpbGRyZW4gJiYgY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgLy8gaGF2ZW4ndCByZXNvbHZlZCB0byBoZXJlXG4gICAgfSBlbHNlIGlmIChza2VsZXRvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBUT0RPOiBuZWVkIHRvIHVwZGF0ZSBvbmNlIHNrZWxldG9ucyBhcmUgYXZhaWxhYmxlO1xuICAgIH1cbiAgfVxuXG4gIGdlbmVyYXRlVmlld0NvbnRhaW5lckZvck5vUG9ydGFsKCkge1xuICAgIC8vIGJvb3RzdHJhcCBsb2FkTWFzaHVwIHJlc29sdmVzIHRvIGhlcmVcbiAgICBjb25zdCBhckNoaWxkcmVuID0gdGhpcy5wQ29ubiQuZ2V0Q2hpbGRyZW4oKSBhcyBhbnlbXTtcbiAgICBpZiAoYXJDaGlsZHJlbiAmJiBhckNoaWxkcmVuLmxlbmd0aCA9PSAxKSB7XG4gICAgICAvLyBoYXZlIHRvIGhhdmUgYSBxdWljayB0aW1lb3V0IG9yIGdldCBhbiBcImV4cHJlc3Npb25zIGNoYW5nZWRcIiBhbmd1bGFyIGVycm9yXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBsb2NhbFBDb25uID0gYXJDaGlsZHJlblswXS5nZXRQQ29ubmVjdCgpO1xuXG4gICAgICAgICAgdGhpcy5jb21wb25lbnROYW1lJCA9IGxvY2FsUENvbm4uZ2V0Q29tcG9uZW50TmFtZSgpO1xuICAgICAgICAgIGlmICh0aGlzLmNvbXBvbmVudE5hbWUkID09PSAnVmlld0NvbnRhaW5lcicpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZ1Byb3BzOiBhbnkgPSB0aGlzLnBDb25uJC5nZXRDb25maWdQcm9wcygpO1xuICAgICAgICAgICAgY29uc3Qgdmlld0NvbnRDb25maWcgPSB7XG4gICAgICAgICAgICAgIG1ldGE6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiAnVmlld0NvbnRhaW5lcicsXG4gICAgICAgICAgICAgICAgY29uZmlnOiBjb25maWdQcm9wc1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBvcHRpb25zXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXJQQ29ubiQgPSBQQ29yZS5jcmVhdGVQQ29ubmVjdCh2aWV3Q29udENvbmZpZykuZ2V0UENvbm5lY3QoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5iU2hvd1Jvb3QkID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzaG93SGlkZVByb2dyZXNzKGJTaG93OiBib29sZWFuKSB7XG4gICAgLy8gb25seSBzaG93IHNwaW5uZXIgYWZ0ZXIgNTAwbXMgd2FpdCwgc28gaWYgc2VydmVyIGZhc3QsIHdvbid0IHNlZVxuICAgIGlmIChiU2hvdykge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNvbmFyanMvbm8tY29sbGFwc2libGUtaWZcbiAgICAgIGlmICghdGhpcy5iSXNQcm9ncmVzcyQpIHtcbiAgICAgICAgLy8gbWFrZXMgc3VyZSBBbmd1bGFyIHRyYWNrcyB0aGVzZSBjaGFuZ2VzXG4gICAgICAgIGlmICghdGhpcy5zcGlubmVyVGltZXIgfHwgdGhpcy5zcGlubmVyVGltZXIuaXNTdG9wcGVkKSB7XG4gICAgICAgICAgdGhpcy5zcGlubmVyVGltZXIgPSBpbnRlcnZhbCg1MDApLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICB0aGlzLnNwaW5uZXJUaW1lci51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgICAgICAgICAgLyogZW1wdHkgKi9cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5iSXNQcm9ncmVzcyQgPSB0cnVlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuc3Bpbm5lclRpbWVyICYmICF0aGlzLnNwaW5uZXJUaW1lci5pc1N0b3BwZWQpIHtcbiAgICAgICAgdGhpcy5zcGlubmVyVGltZXIudW5zdWJzY3JpYmUoKTtcbiAgICAgIH1cblxuICAgICAgLy8gZG9uJ3QgdG91Y2ggYklzUHJvZ3Jlc3MkIHVubGVzcyBkaWZmZXJuZW50XG4gICAgICBpZiAoYlNob3cgIT0gdGhpcy5iSXNQcm9ncmVzcyQpIHtcbiAgICAgICAgLy8gbWFrZXMgc3VyZSBBbmd1bGFyIHRyYWNrcyB0aGVzZSBjaGFuZ2VzXG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5iSXNQcm9ncmVzcyQgPSBiU2hvdztcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicHJvZ3Jlc3MtYm94XCIgKm5nSWY9XCJiSXNQcm9ncmVzcyRcIj5cbiAgPG1hdC1zcGlubmVyIGNsYXNzPVwicHJvZ3Jlc3Mtc3Bpbm5lclwiPjwvbWF0LXNwaW5uZXI+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cImJTaG93Um9vdCRcIj5cbiAgPGRpdiBbbmdTd2l0Y2hdPVwiY29tcG9uZW50TmFtZSRcIj5cbiAgICA8Y29tcG9uZW50LW1hcHBlciAqbmdTd2l0Y2hDYXNlPVwiJ1ZpZXcnXCIgbmFtZT1cIlZpZXdcIiBbcHJvcHNdPVwieyBwQ29ubiQsIGRpc3BsYXlPbmx5RkEkIH1cIj48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgPCEtLSA8YXBwLXJlZmVyZW5jZSAqbmdTd2l0Y2hDYXNlPVwiJ3JlZmVyZW5jZSdcIiBbcENvbm4kXT1cInBDb25uJFwiIFtkaXNwbGF5T25seUZBJF09XCJkaXNwbGF5T25seUZBJFwiPjwvYXBwLXJlZmVyZW5jZT4gLS0+XG4gICAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICAgICpuZ1N3aXRjaENhc2U9XCInVmlld0NvbnRhaW5lcidcIlxuICAgICAgbmFtZT1cIlZpZXdDb250YWluZXJcIlxuICAgICAgW3Byb3BzXT1cInsgcENvbm4kOiBkaXNwbGF5T25seUZBJCA/IHZpZXdDb250YWluZXJQQ29ubiQgOiBwQ29ubiQsIGRpc3BsYXlPbmx5RkEkIH1cIlxuICAgID48L2NvbXBvbmVudC1tYXBwZXI+XG4gICAgPGFwcC1oeWJyaWQtdmlldy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidIeWJyaWRWaWV3Q29udGFpbmVyJ1wiIFtwQ29ubiRdPVwicENvbm4kXCIgW2Rpc3BsYXlPbmx5RkEkXT1cImRpc3BsYXlPbmx5RkEkXCI+PC9hcHAtaHlicmlkLXZpZXctY29udGFpbmVyPlxuICAgIDxhcHAtbW9kYWwtdmlldy1jb250YWluZXJcbiAgICAgICpuZ1N3aXRjaENhc2U9XCInTW9kYWxWaWV3Q29udGFpbmVyJ1wiXG4gICAgICBbcENvbm4kXT1cInBDb25uJFwiXG4gICAgICBbZGlzcGxheU9ubHlGQSRdPVwiZGlzcGxheU9ubHlGQSRcIlxuICAgICAgKG1vZGFsVmlzaWJsZUNoYW5nZSk9XCJtb2RhbFZpc2libGVDaGFuZ2VkKCRldmVudClcIlxuICAgID48L2FwcC1tb2RhbC12aWV3LWNvbnRhaW5lcj5cbiAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInJ1wiPjwvZGl2PlxuICAgIDxkaXYgKm5nU3dpdGNoRGVmYXVsdD57eyBsb2NhbGl6ZWRWYWwoJ1Jvb3RDb250YWluZXIgTWlzc2luZzogJyArIGNvbXBvbmVudE5hbWUkLCBsb2NhbGVDYXRlZ29yeSkgfX0uPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCJwdkNvbm4kICE9IG51bGxcIj5cbiAgPGFwcC1wcmV2aWV3LXZpZXctY29udGFpbmVyIFtwQ29ubiRdPVwicHZDb25uJFwiPjwvYXBwLXByZXZpZXctdmlldy1jb250YWluZXI+XG48L2Rpdj5cblxuPGRpdiAqbmdJZj1cIm1Db25uJCAhPSBudWxsXCI+XG4gIDxhcHAtbW9kYWwtdmlldy1jb250YWluZXJcbiAgICBbcENvbm4kXT1cIm1Db25uJFwiXG4gICAgW2Rpc3BsYXlPbmx5RkEkXT1cImRpc3BsYXlPbmx5RkEkXCJcbiAgICAobW9kYWxWaXNpYmxlQ2hhbmdlKT1cIm1vZGFsVmlzaWJsZUNoYW5nZWQoJGV2ZW50KVwiXG4gID48L2FwcC1tb2RhbC12aWV3LWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,62 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { interval } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../../_bridge/angular-pconnect";
6
+ import * as i2 from "../../../_helpers/utils";
7
+ import * as i3 from "@angular/common";
8
+ export class StagesComponent {
9
+ constructor(angularPConnect, utils) {
10
+ this.angularPConnect = angularPConnect;
11
+ this.utils = utils;
12
+ // Used with AngularPConnect
13
+ this.angularPConnectData = {};
14
+ this.PCore$ = PCore;
15
+ }
16
+ ngOnInit() {
17
+ // First thing in initialization is registering and subscribing to the AngularPConnect service
18
+ this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
19
+ // const imagePath = this.utils.getIconPath(this.utils.getSDKStaticContentUrl());
20
+ this.checkSvgIcon$ = this.utils.getImageSrc('check', this.utils.getSDKStaticContentUrl());
21
+ this.key = `${this.pConn$.getCaseInfo().getClassName()}!CASE!${this.pConn$.getCaseInfo().getName()}`.toUpperCase();
22
+ }
23
+ ngOnDestroy() {
24
+ if (this.angularPConnectData.unsubscribeFn) {
25
+ this.angularPConnectData.unsubscribeFn();
26
+ }
27
+ }
28
+ // Callback passed when subscribing to store change
29
+ onStateChange() {
30
+ this.checkAndUpdate();
31
+ }
32
+ checkAndUpdate() {
33
+ // Should always check the bridge to see if the component should
34
+ // update itself (re-render)
35
+ const bUpdateSelf = this.angularPConnect.shouldComponentUpdate(this);
36
+ // ONLY call updateSelf when the component should update
37
+ if (bUpdateSelf) {
38
+ this.updateSelf();
39
+ }
40
+ }
41
+ updateSelf() {
42
+ this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps());
43
+ const timer = interval(50).subscribe(() => {
44
+ timer.unsubscribe();
45
+ const arStages = this.angularPConnect.getComponentProp(this, 'stages');
46
+ // this.stageResults$ = this.configProps$.stages;
47
+ if (arStages != null) {
48
+ this.arStageResults$ = arStages;
49
+ this.lastStage$ = this.arStageResults$[this.arStageResults$.length - 1];
50
+ }
51
+ });
52
+ }
53
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: StagesComponent, deps: [{ token: i1.AngularPConnectService }, { token: i2.Utils }], target: i0.ɵɵFactoryTarget.Component }); }
54
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: StagesComponent, isStandalone: true, selector: "app-stages", inputs: { pConn$: "pConn$" }, ngImport: i0, template: "<div class=\"psdk-stages-bar\">\n <div class=\"psdk-stages-chevron\" *ngFor=\"let stage of arStageResults$\">\n <div *ngIf=\"stage.visited_status == 'completed'\" class=\"psdk-stages-inner-past\">\n <img class=\"psdk-stages-icon\" src=\"{{ checkSvgIcon$ }}\" />{{ PCore$.getLocaleUtils().getLocaleValue(stage.name, '', key) }}\n </div>\n <div *ngIf=\"stage.visited_status == 'active'\" class=\"psdk-stages-inner-present\">\n {{ PCore$.getLocaleUtils().getLocaleValue(stage.name, '', key) }}\n </div>\n <div *ngIf=\"stage.visited_status == 'future'\" class=\"psdk-stages-inner-future\">\n {{ PCore$.getLocaleUtils().getLocaleValue(stage.name, '', key) }}\n </div>\n </div>\n</div>\n\n<div class=\"psdk-stages-divider\"></div>\n", styles: [".psdk-stages{padding:.625rem 0rem}.psdk-stages-span span{padding:.3125rem;font-weight:700;font-size:1.5rem}.psdk-stages-div{display:inline-flex;padding:.3125rem;font-weight:700;font-size:1.3rem;color:gray}.psdk-stages-past{color:#673ab7;padding-right:.3125rem}.psdk-stages-present{color:#ffc400;padding-right:.3125rem}.psdk-stages-future{color:gray;padding-right:.3125rem}.psdk-stages-full{display:block}.psdk-stages-divider{border-bottom:.0625rem solid lightgrey}.psdk-stages-icon{width:1.4rem;display:inline-block;vertical-align:top}.psdk-stages-bar{margin:1rem 0rem;background-color:#fff;border-radius:.5rem;border:.0625rem solid lightgrey;overflow:hidden;height:2rem;display:flex}.psdk-stages-chevron{position:relative;padding:1rem;display:flex;justify-content:center;align-items:center;max-width:100%;min-width:0px;flex-grow:1;flex-shrink:1}.psdk-stages-chevron:not(:last-child):after{content:\"\";position:absolute;display:block;z-index:2;width:1.75rem;right:-.4375rem;background:inherit;border-style:solid;border-color:#cfcfcf;border-width:.0625rem .0625rem 0px 0px;border-radius:0px .3125rem 0px 0px;transform:rotate(45deg) skew(15deg,15deg);height:2rem}.psdk-stages-inner-past{color:#000;font-size:1rem}.psdk-stages-inner-present{color:#673ab7;font-weight:700;font-size:1rem}.psdk-stages-inner-future{color:gray;font-size:1rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
55
+ }
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: StagesComponent, decorators: [{
57
+ type: Component,
58
+ args: [{ selector: 'app-stages', standalone: true, imports: [CommonModule], template: "<div class=\"psdk-stages-bar\">\n <div class=\"psdk-stages-chevron\" *ngFor=\"let stage of arStageResults$\">\n <div *ngIf=\"stage.visited_status == 'completed'\" class=\"psdk-stages-inner-past\">\n <img class=\"psdk-stages-icon\" src=\"{{ checkSvgIcon$ }}\" />{{ PCore$.getLocaleUtils().getLocaleValue(stage.name, '', key) }}\n </div>\n <div *ngIf=\"stage.visited_status == 'active'\" class=\"psdk-stages-inner-present\">\n {{ PCore$.getLocaleUtils().getLocaleValue(stage.name, '', key) }}\n </div>\n <div *ngIf=\"stage.visited_status == 'future'\" class=\"psdk-stages-inner-future\">\n {{ PCore$.getLocaleUtils().getLocaleValue(stage.name, '', key) }}\n </div>\n </div>\n</div>\n\n<div class=\"psdk-stages-divider\"></div>\n", styles: [".psdk-stages{padding:.625rem 0rem}.psdk-stages-span span{padding:.3125rem;font-weight:700;font-size:1.5rem}.psdk-stages-div{display:inline-flex;padding:.3125rem;font-weight:700;font-size:1.3rem;color:gray}.psdk-stages-past{color:#673ab7;padding-right:.3125rem}.psdk-stages-present{color:#ffc400;padding-right:.3125rem}.psdk-stages-future{color:gray;padding-right:.3125rem}.psdk-stages-full{display:block}.psdk-stages-divider{border-bottom:.0625rem solid lightgrey}.psdk-stages-icon{width:1.4rem;display:inline-block;vertical-align:top}.psdk-stages-bar{margin:1rem 0rem;background-color:#fff;border-radius:.5rem;border:.0625rem solid lightgrey;overflow:hidden;height:2rem;display:flex}.psdk-stages-chevron{position:relative;padding:1rem;display:flex;justify-content:center;align-items:center;max-width:100%;min-width:0px;flex-grow:1;flex-shrink:1}.psdk-stages-chevron:not(:last-child):after{content:\"\";position:absolute;display:block;z-index:2;width:1.75rem;right:-.4375rem;background:inherit;border-style:solid;border-color:#cfcfcf;border-width:.0625rem .0625rem 0px 0px;border-radius:0px .3125rem 0px 0px;transform:rotate(45deg) skew(15deg,15deg);height:2rem}.psdk-stages-inner-past{color:#000;font-size:1rem}.psdk-stages-inner-present{color:#673ab7;font-weight:700;font-size:1rem}.psdk-stages-inner-future{color:gray;font-size:1rem}\n"] }]
59
+ }], ctorParameters: function () { return [{ type: i1.AngularPConnectService }, { type: i2.Utils }]; }, propDecorators: { pConn$: [{
60
+ type: Input
61
+ }] } });
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhZ2VzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy9pbmZyYS9zdGFnZXMvc3RhZ2VzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy9pbmZyYS9zdGFnZXMvc3RhZ2VzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQWdCaEMsTUFBTSxPQUFPLGVBQWU7SUFhMUIsWUFDVSxlQUF1QyxFQUN2QyxLQUFZO1FBRFosb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBQ3ZDLFVBQUssR0FBTCxLQUFLLENBQU87UUFadEIsNEJBQTRCO1FBQzVCLHdCQUFtQixHQUF3QixFQUFFLENBQUM7UUFDOUMsV0FBTSxHQUFpQixLQUFLLENBQUM7SUFXMUIsQ0FBQztJQUVKLFFBQVE7UUFDTiw4RkFBOEY7UUFDOUYsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsNkJBQTZCLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV4RyxpRkFBaUY7UUFDakYsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7UUFDMUYsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUMsWUFBWSxFQUFFLFNBQVMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxFQUFFO1lBQzFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUMxQztJQUNILENBQUM7SUFFRCxtREFBbUQ7SUFDbkQsYUFBYTtRQUNYLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsY0FBYztRQUNaLGdFQUFnRTtRQUNoRSw0QkFBNEI7UUFDNUIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVyRSx3REFBd0Q7UUFDeEQsSUFBSSxXQUFXLEVBQUU7WUFDZixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDbkI7SUFDSCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFnQixDQUFDO1FBRWhHLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3hDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUVwQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztZQUV2RSxpREFBaUQ7WUFDakQsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFO2dCQUNwQixJQUFJLENBQUMsZUFBZSxHQUFHLFFBQVEsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ3pFO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQS9EVSxlQUFlO21HQUFmLGVBQWUsb0dDbEI1QiwydkJBZUEsbTNDRENZLFlBQVk7OzRGQUVYLGVBQWU7a0JBUDNCLFNBQVM7K0JBQ0UsWUFBWSxjQUdWLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQztpSUFHZCxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGludGVydmFsIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBbmd1bGFyUENvbm5lY3REYXRhLCBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9hbmd1bGFyLXBjb25uZWN0JztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vX2hlbHBlcnMvdXRpbHMnO1xuXG5pbnRlcmZhY2UgU3RhZ2VzUHJvcHMge1xuICAvLyBJZiBhbnksIGVudGVyIGFkZGl0aW9uYWwgcHJvcHMgdGhhdCBvbmx5IGV4aXN0IG9uIHRoaXMgY29tcG9uZW50XG4gIHN0YWdlczogYW55W107XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1zdGFnZXMnLFxuICB0ZW1wbGF0ZVVybDogJy4vc3RhZ2VzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3RhZ2VzLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIFN0YWdlc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcENvbm4kOiB0eXBlb2YgUENvbm5lY3Q7XG5cbiAgLy8gVXNlZCB3aXRoIEFuZ3VsYXJQQ29ubmVjdFxuICBhbmd1bGFyUENvbm5lY3REYXRhOiBBbmd1bGFyUENvbm5lY3REYXRhID0ge307XG4gIFBDb3JlJDogdHlwZW9mIFBDb3JlID0gUENvcmU7XG4gIGNvbmZpZ1Byb3BzJDogU3RhZ2VzUHJvcHM7XG5cbiAgYXJTdGFnZVJlc3VsdHMkOiBhbnlbXTtcbiAgbGFzdFN0YWdlJDogYW55O1xuICBjaGVja1N2Z0ljb24kOiBzdHJpbmc7XG4gIGtleTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYW5ndWxhclBDb25uZWN0OiBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXRpbHM6IFV0aWxzXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBGaXJzdCB0aGluZyBpbiBpbml0aWFsaXphdGlvbiBpcyByZWdpc3RlcmluZyBhbmQgc3Vic2NyaWJpbmcgdG8gdGhlIEFuZ3VsYXJQQ29ubmVjdCBzZXJ2aWNlXG4gICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhID0gdGhpcy5hbmd1bGFyUENvbm5lY3QucmVnaXN0ZXJBbmRTdWJzY3JpYmVDb21wb25lbnQodGhpcywgdGhpcy5vblN0YXRlQ2hhbmdlKTtcblxuICAgIC8vIGNvbnN0IGltYWdlUGF0aCA9IHRoaXMudXRpbHMuZ2V0SWNvblBhdGgodGhpcy51dGlscy5nZXRTREtTdGF0aWNDb250ZW50VXJsKCkpO1xuICAgIHRoaXMuY2hlY2tTdmdJY29uJCA9IHRoaXMudXRpbHMuZ2V0SW1hZ2VTcmMoJ2NoZWNrJywgdGhpcy51dGlscy5nZXRTREtTdGF0aWNDb250ZW50VXJsKCkpO1xuICAgIHRoaXMua2V5ID0gYCR7dGhpcy5wQ29ubiQuZ2V0Q2FzZUluZm8oKS5nZXRDbGFzc05hbWUoKX0hQ0FTRSEke3RoaXMucENvbm4kLmdldENhc2VJbmZvKCkuZ2V0TmFtZSgpfWAudG9VcHBlckNhc2UoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbikge1xuICAgICAgdGhpcy5hbmd1bGFyUENvbm5lY3REYXRhLnVuc3Vic2NyaWJlRm4oKTtcbiAgICB9XG4gIH1cblxuICAvLyBDYWxsYmFjayBwYXNzZWQgd2hlbiBzdWJzY3JpYmluZyB0byBzdG9yZSBjaGFuZ2VcbiAgb25TdGF0ZUNoYW5nZSgpIHtcbiAgICB0aGlzLmNoZWNrQW5kVXBkYXRlKCk7XG4gIH1cblxuICBjaGVja0FuZFVwZGF0ZSgpIHtcbiAgICAvLyBTaG91bGQgYWx3YXlzIGNoZWNrIHRoZSBicmlkZ2UgdG8gc2VlIGlmIHRoZSBjb21wb25lbnQgc2hvdWxkXG4gICAgLy8gdXBkYXRlIGl0c2VsZiAocmUtcmVuZGVyKVxuICAgIGNvbnN0IGJVcGRhdGVTZWxmID0gdGhpcy5hbmd1bGFyUENvbm5lY3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKHRoaXMpO1xuXG4gICAgLy8gT05MWSBjYWxsIHVwZGF0ZVNlbGYgd2hlbiB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRhdGVcbiAgICBpZiAoYlVwZGF0ZVNlbGYpIHtcbiAgICAgIHRoaXMudXBkYXRlU2VsZigpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVNlbGYoKSB7XG4gICAgdGhpcy5jb25maWdQcm9wcyQgPSB0aGlzLnBDb25uJC5yZXNvbHZlQ29uZmlnUHJvcHModGhpcy5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKSkgYXMgU3RhZ2VzUHJvcHM7XG5cbiAgICBjb25zdCB0aW1lciA9IGludGVydmFsKDUwKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGltZXIudW5zdWJzY3JpYmUoKTtcblxuICAgICAgY29uc3QgYXJTdGFnZXMgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5nZXRDb21wb25lbnRQcm9wKHRoaXMsICdzdGFnZXMnKTtcblxuICAgICAgLy8gdGhpcy5zdGFnZVJlc3VsdHMkID0gdGhpcy5jb25maWdQcm9wcyQuc3RhZ2VzO1xuICAgICAgaWYgKGFyU3RhZ2VzICE9IG51bGwpIHtcbiAgICAgICAgdGhpcy5hclN0YWdlUmVzdWx0cyQgPSBhclN0YWdlcztcbiAgICAgICAgdGhpcy5sYXN0U3RhZ2UkID0gdGhpcy5hclN0YWdlUmVzdWx0cyRbdGhpcy5hclN0YWdlUmVzdWx0cyQubGVuZ3RoIC0gMV07XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJwc2RrLXN0YWdlcy1iYXJcIj5cbiAgPGRpdiBjbGFzcz1cInBzZGstc3RhZ2VzLWNoZXZyb25cIiAqbmdGb3I9XCJsZXQgc3RhZ2Ugb2YgYXJTdGFnZVJlc3VsdHMkXCI+XG4gICAgPGRpdiAqbmdJZj1cInN0YWdlLnZpc2l0ZWRfc3RhdHVzID09ICdjb21wbGV0ZWQnXCIgY2xhc3M9XCJwc2RrLXN0YWdlcy1pbm5lci1wYXN0XCI+XG4gICAgICA8aW1nIGNsYXNzPVwicHNkay1zdGFnZXMtaWNvblwiIHNyYz1cInt7IGNoZWNrU3ZnSWNvbiQgfX1cIiAvPnt7IFBDb3JlJC5nZXRMb2NhbGVVdGlscygpLmdldExvY2FsZVZhbHVlKHN0YWdlLm5hbWUsICcnLCBrZXkpIH19XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cInN0YWdlLnZpc2l0ZWRfc3RhdHVzID09ICdhY3RpdmUnXCIgY2xhc3M9XCJwc2RrLXN0YWdlcy1pbm5lci1wcmVzZW50XCI+XG4gICAgICB7eyBQQ29yZSQuZ2V0TG9jYWxlVXRpbHMoKS5nZXRMb2NhbGVWYWx1ZShzdGFnZS5uYW1lLCAnJywga2V5KSB9fVxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJzdGFnZS52aXNpdGVkX3N0YXR1cyA9PSAnZnV0dXJlJ1wiIGNsYXNzPVwicHNkay1zdGFnZXMtaW5uZXItZnV0dXJlXCI+XG4gICAgICB7eyBQQ29yZSQuZ2V0TG9jYWxlVXRpbHMoKS5nZXRMb2NhbGVWYWx1ZShzdGFnZS5uYW1lLCAnJywga2V5KSB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwicHNkay1zdGFnZXMtZGl2aWRlclwiPjwvZGl2PlxuIl19
@@ -0,0 +1,173 @@
1
+ import { Component, Input, forwardRef } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { getAllFields } from '../../template/utils';
4
+ import { ReferenceComponent } from '../reference/reference.component';
5
+ import { ComponentMapperComponent } from '../../../_bridge/component-mapper/component-mapper.component';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../../../_bridge/angular-pconnect";
8
+ import * as i2 from "../../../_helpers/utils";
9
+ import * as i3 from "@angular/common";
10
+ /**
11
+ * WARNING: It is not expected that this file should be modified. It is part of infrastructure code that works with
12
+ * Redux and creation/update of Redux containers and PConnect. Modifying this code could have undesireable results and
13
+ * is totally at your own risk.
14
+ */
15
+ /**
16
+ *
17
+ * @param pConnn - PConnect Object
18
+ * @returns visibility expression result if exists, otherwise true
19
+ */
20
+ function evaluateVisibility(pConnn) {
21
+ let bVisibility = true;
22
+ const sVisibility = pConnn.meta.config.visibility;
23
+ if (sVisibility && sVisibility.length) {
24
+ // e.g. "@E .EmbeddedData_SelectedTestName == 'Readonly' && .EmbeddedData_SelectedSubCategory == 'Mode'"
25
+ const aVisibility = sVisibility.split('&&');
26
+ // e.g. ["EmbeddedData_SelectedTestName": "Readonly", "EmbeddedData_SelectedSubCategory": "Mode"]
27
+ const context = pConnn.getContextName();
28
+ // Reading values from the Store to evaluate the visibility expressions
29
+ const storeData = PCore.getStore().getState()?.data[context].caseInfo.content;
30
+ const initialVal = {};
31
+ const oProperties = aVisibility.reduce((properties, property) => {
32
+ const keyStartIndex = property.indexOf('.');
33
+ const keyEndIndex = property.indexOf('=') - 1;
34
+ const valueStartIndex = property.indexOf("'");
35
+ const valueEndIndex = property.lastIndexOf("'") - 1;
36
+ return {
37
+ ...properties,
38
+ [property.substr(keyStartIndex + 1, keyEndIndex - keyStartIndex - 1)]: property.substr(valueStartIndex + 1, valueEndIndex - valueStartIndex)
39
+ };
40
+ }, initialVal);
41
+ const propertyKeys = Object.keys(oProperties);
42
+ const propertyValues = Object.values(oProperties);
43
+ for (let propertyIndex = 0; propertyIndex < propertyKeys.length; propertyIndex++) {
44
+ if (storeData[propertyKeys[propertyIndex]] !== propertyValues[propertyIndex]) {
45
+ bVisibility = false;
46
+ }
47
+ }
48
+ }
49
+ return bVisibility;
50
+ }
51
+ export class ViewComponent {
52
+ constructor(angularPConnect, utils) {
53
+ this.angularPConnect = angularPConnect;
54
+ this.utils = utils;
55
+ // @Input() updateToken$: number;
56
+ this.angularPConnectData = {};
57
+ this.title$ = '';
58
+ this.label$ = '';
59
+ this.showLabel$ = true;
60
+ this.visibility$ = true;
61
+ }
62
+ ngOnInit() {
63
+ // First thing in initialization is registering and subscribing to the AngularPConnect service
64
+ this.angularPConnectData = this.angularPConnect.registerAndSubscribeComponent(this, this.onStateChange);
65
+ this.checkAndUpdate();
66
+ }
67
+ // Callback passed when subscribing to store change
68
+ onStateChange() {
69
+ this.checkAndUpdate();
70
+ }
71
+ checkAndUpdate() {
72
+ // Should always check the bridge to see if the component should
73
+ // update itself (re-render)
74
+ const bUpdateSelf = this.angularPConnect.shouldComponentUpdate(this);
75
+ // ONLY call updateSelf when the component should update
76
+ if (bUpdateSelf) {
77
+ this.updateSelf();
78
+ }
79
+ }
80
+ ngOnChanges(changes) {
81
+ const { pConn$ } = changes;
82
+ if (pConn$.previousValue && pConn$.previousValue !== pConn$.currentValue) {
83
+ this.checkAndUpdate();
84
+ }
85
+ }
86
+ updateSelf() {
87
+ if (this.angularPConnect.getComponentID(this) === undefined) {
88
+ return;
89
+ }
90
+ // debugger;
91
+ // normalize this.pConn$ in case it contains a 'reference'
92
+ this.pConn$ = ReferenceComponent.normalizePConn(this.pConn$);
93
+ this.configProps$ = this.pConn$.resolveConfigProps(this.pConn$.getConfigProps());
94
+ this.inheritedProps$ = this.pConn$.getInheritedProps();
95
+ // NOTE: this.configProps$.visibility'] is used in view.component.ts such that
96
+ // the View will only be rendered when this.configProps$.visibility'] is false.
97
+ // It WILL render if true or undefined.
98
+ this.templateName$ = this.configProps$.template || '';
99
+ this.title$ = this.configProps$.title || '';
100
+ this.label$ = this.configProps$.label || '';
101
+ this.showLabel$ = this.configProps$.showLabel || this.showLabel$;
102
+ // label & showLabel within inheritedProps takes precedence over configProps
103
+ this.label$ = this.inheritedProps$.label || this.label$;
104
+ this.showLabel$ = this.inheritedProps$.showLabel || this.showLabel$;
105
+ // children may have a 'reference' so normalize the children array
106
+ this.arChildren$ = ReferenceComponent.normalizePConnArray(this.pConn$.getChildren());
107
+ this.visibility$ = this.configProps$.visibility ?? this.visibility$;
108
+ /**
109
+ * In instances where there is context, like with "shippingAddress," the pageReference becomes "caseInfo.content.shippingAddress."
110
+ * This leads to problems in the getProperty API, as it incorrectly assesses the visibility condition by looking in the wrong location
111
+ * in the Store for the property values. Reference component should be able to handle such scenarios(as done in SDK-R) since it has the
112
+ * expected pageReference values, the View component currently cannot handle this.
113
+ * The resolution lies in transferring this responsibility to the Reference component, eliminating the need for this code when Reference
114
+ * component is able to handle it.
115
+ */
116
+ if (this.pConn$.getPageReference().length > 'caseInfo.content'.length) {
117
+ this.visibility$ = evaluateVisibility(this.pConn$);
118
+ }
119
+ // was: this.arChildren$ = this.pConn$.getChildren() as Array<any>;
120
+ // debug
121
+ // let kidList: string = "";
122
+ // for (let i in this.arChildren$) {
123
+ // kidList = kidList.concat(this.arChildren$[i].getPConnect().getComponentName()).concat(",");
124
+ // }
125
+ // console.log("-->view update: " + this.angularPConnect.getComponentID(this) + ", template: " + this.templateName$ + ", kids: " + kidList);
126
+ }
127
+ // JA - adapting additionalProps from Nebula/Constellation version which uses static methods
128
+ // on the component classes stored in PComponents (that Angular doesn't have)...
129
+ additionalProps(state, getPConnect) {
130
+ let propObj = {};
131
+ // We already have the template name in this.templateName$
132
+ if (this.templateName$ !== '') {
133
+ let allFields = {};
134
+ // These uses are adapted from Nebula/Constellation CaseSummary.additionalProps
135
+ switch (this.templateName$) {
136
+ case 'CaseSummary':
137
+ allFields = getAllFields(getPConnect);
138
+ // eslint-disable-next-line no-case-declarations
139
+ const unresFields = {
140
+ primaryFields: allFields[0],
141
+ secondaryFields: allFields[1]
142
+ };
143
+ propObj = getPConnect.resolveConfigProps(unresFields);
144
+ break;
145
+ case 'Details':
146
+ allFields = getAllFields(getPConnect);
147
+ propObj = { fields: allFields[0] };
148
+ break;
149
+ default:
150
+ break;
151
+ }
152
+ }
153
+ return propObj;
154
+ }
155
+ ngOnDestroy() {
156
+ if (this.angularPConnectData.unsubscribeFn) {
157
+ this.angularPConnectData.unsubscribeFn();
158
+ }
159
+ }
160
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ViewComponent, deps: [{ token: i1.AngularPConnectService }, { token: i2.Utils }], target: i0.ɵɵFactoryTarget.Component }); }
161
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ViewComponent, isStandalone: true, selector: "app-view", inputs: { pConn$: "pConn$", formGroup$: "formGroup$", displayOnlyFA$: "displayOnlyFA$" }, usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"visibility$ !== false\" class=\"ng-view-top\">\n <div *ngIf=\"showLabel$ && label$ && templateName$ !== 'SimpleTable' && templateName$ !== 'DefaultForm'\" class=\"template-title-container\">\n <span>{{ label$ }}</span>\n </div>\n\n <ng-container *ngIf=\"templateName$; else noTemplate\">\n <div>\n <component-mapper\n [name]=\"templateName$\"\n [props]=\"{ formGroup$, pConn$, displayOnlyFA$ }\"\n errorMsg=\"View template not recognized: [{{ templateName$ }}]\"\n ></component-mapper>\n </div>\n </ng-container>\n\n <ng-template #noTemplate>\n <div *ngIf=\"displayOnlyFA$; else displayAll\">\n <div *ngFor=\"let kid of arChildren$\">\n <div [ngSwitch]=\"kid.getPConnect().getComponentName()\">\n <component-mapper\n [name]=\"kid.getPConnect().getComponentName()\"\n [props]=\"{ pConn$: kid.getPConnect() }\"\n errorMsg=\"View Missing (displayOnlyFA): {{ kid.getPConnect().getComponentName() }}\"\n ></component-mapper>\n </div>\n </div>\n </div>\n <ng-template #displayAll>\n <div *ngFor=\"let kid of arChildren$\">\n <component-mapper\n [name]=\"kid.getPConnect().getComponentName()\"\n [props]=\"{ pConn$: kid.getPConnect() }\"\n errorMsg=\"View Missing (displayAll): {{ kid.getPConnect().getComponentName() }}\"\n ></component-mapper>\n </div>\n </ng-template>\n </ng-template>\n</div>\n", styles: ["h3{margin-left:.8rem}.ng-view-top{padding:0}.template-title-container{display:flex;justify-content:space-between;align-items:center;font-size:.9375rem;font-weight:600;padding:1rem 0}\n"], dependencies: [{ kind: "ngmodule", type: i0.forwardRef(function () { return CommonModule; }) }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgForOf; }), selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgIf; }), selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i0.forwardRef(function () { return i3.NgSwitch; }), selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "component", type: i0.forwardRef(function () { return ComponentMapperComponent; }), selector: "component-mapper", inputs: ["name", "props", "errorMsg", "outputEvents", "parent"] }] }); }
162
+ }
163
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ViewComponent, decorators: [{
164
+ type: Component,
165
+ args: [{ selector: 'app-view', standalone: true, imports: [CommonModule, forwardRef(() => ComponentMapperComponent)], template: "<div *ngIf=\"visibility$ !== false\" class=\"ng-view-top\">\n <div *ngIf=\"showLabel$ && label$ && templateName$ !== 'SimpleTable' && templateName$ !== 'DefaultForm'\" class=\"template-title-container\">\n <span>{{ label$ }}</span>\n </div>\n\n <ng-container *ngIf=\"templateName$; else noTemplate\">\n <div>\n <component-mapper\n [name]=\"templateName$\"\n [props]=\"{ formGroup$, pConn$, displayOnlyFA$ }\"\n errorMsg=\"View template not recognized: [{{ templateName$ }}]\"\n ></component-mapper>\n </div>\n </ng-container>\n\n <ng-template #noTemplate>\n <div *ngIf=\"displayOnlyFA$; else displayAll\">\n <div *ngFor=\"let kid of arChildren$\">\n <div [ngSwitch]=\"kid.getPConnect().getComponentName()\">\n <component-mapper\n [name]=\"kid.getPConnect().getComponentName()\"\n [props]=\"{ pConn$: kid.getPConnect() }\"\n errorMsg=\"View Missing (displayOnlyFA): {{ kid.getPConnect().getComponentName() }}\"\n ></component-mapper>\n </div>\n </div>\n </div>\n <ng-template #displayAll>\n <div *ngFor=\"let kid of arChildren$\">\n <component-mapper\n [name]=\"kid.getPConnect().getComponentName()\"\n [props]=\"{ pConn$: kid.getPConnect() }\"\n errorMsg=\"View Missing (displayAll): {{ kid.getPConnect().getComponentName() }}\"\n ></component-mapper>\n </div>\n </ng-template>\n </ng-template>\n</div>\n", styles: ["h3{margin-left:.8rem}.ng-view-top{padding:0}.template-title-container{display:flex;justify-content:space-between;align-items:center;font-size:.9375rem;font-weight:600;padding:1rem 0}\n"] }]
166
+ }], ctorParameters: function () { return [{ type: i1.AngularPConnectService }, { type: i2.Utils }]; }, propDecorators: { pConn$: [{
167
+ type: Input
168
+ }], formGroup$: [{
169
+ type: Input
170
+ }], displayOnlyFA$: [{
171
+ type: Input
172
+ }] } });
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyLXNkay1jb21wb25lbnRzL3NyYy9saWIvX2NvbXBvbmVudHMvaW5mcmEvdmlldy92aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXItc2RrLWNvbXBvbmVudHMvc3JjL2xpYi9fY29tcG9uZW50cy9pbmZyYS92aWV3L3ZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsVUFBVSxFQUF1QyxNQUFNLGVBQWUsQ0FBQztBQUMxRyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFJL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDOzs7OztBQUV4Rzs7OztHQUlHO0FBRUg7Ozs7R0FJRztBQUNILFNBQVMsa0JBQWtCLENBQUMsTUFBTTtJQUNoQyxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDdkIsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO0lBQ2xELElBQUksV0FBVyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEVBQUU7UUFDckMsd0dBQXdHO1FBQ3hHLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUMsaUdBQWlHO1FBQ2pHLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN4Qyx1RUFBdUU7UUFDdkUsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFD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VyxDQUFDLENBQUM7b0JBQ3RDLE9BQU8sR0FBRyxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDbkMsTUFBTTtnQkFDUjtvQkFDRSxNQUFNO2FBQ1Q7U0FDRjtRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxFQUFFO1lBQzFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztTQUMxQztJQUNILENBQUM7K0dBN0lVLGFBQWE7bUdBQWIsYUFBYSxtTEN2RTFCLGs5Q0FzQ0Esb1JEK0JZLFlBQVksb2ZBQW1CLHdCQUF3Qjs7NEZBRXRELGFBQWE7a0JBUHpCLFNBQVM7K0JBQ0UsVUFBVSxjQUdSLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUMsQ0FBQztpSUFHMUQsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgZm9yd2FyZFJlZiwgU2ltcGxlQ2hhbmdlcywgT25EZXN0cm95LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBbmd1bGFyUENvbm5lY3REYXRhLCBBbmd1bGFyUENvbm5lY3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9hbmd1bGFyLXBjb25uZWN0JztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vLi4vX2hlbHBlcnMvdXRpbHMnO1xuaW1wb3J0IHsgZ2V0QWxsRmllbGRzIH0gZnJvbSAnLi4vLi4vdGVtcGxhdGUvdXRpbHMnO1xuaW1wb3J0IHsgUmVmZXJlbmNlQ29tcG9uZW50IH0gZnJvbSAnLi4vcmVmZXJlbmNlL3JlZmVyZW5jZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tcG9uZW50TWFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vX2JyaWRnZS9jb21wb25lbnQtbWFwcGVyL2NvbXBvbmVudC1tYXBwZXIuY29tcG9uZW50JztcblxuLyoqXG4gKiBXQVJOSU5HOiAgSXQgaXMgbm90IGV4cGVjdGVkIHRoYXQgdGhpcyBmaWxlIHNob3VsZCBiZSBtb2RpZmllZC4gIEl0IGlzIHBhcnQgb2YgaW5mcmFzdHJ1Y3R1cmUgY29kZSB0aGF0IHdvcmtzIHdpdGhcbiAqIFJlZHV4IGFuZCBjcmVhdGlvbi91cGRhdGUgb2YgUmVkdXggY29udGFpbmVycyBhbmQgUENvbm5lY3QuICBNb2RpZnlpbmcgdGhpcyBjb2RlIGNvdWxkIGhhdmUgdW5kZXNpcmVhYmxlIHJlc3VsdHMgYW5kXG4gKiBpcyB0b3RhbGx5IGF0IHlvdXIgb3duIHJpc2suXG4gKi9cblxuLyoqXG4gKlxuICogQHBhcmFtIHBDb25ubiAtIFBDb25uZWN0IE9iamVjdFxuICogQHJldHVybnMgdmlzaWJpbGl0eSBleHByZXNzaW9uIHJlc3VsdCBpZiBleGlzdHMsIG90aGVyd2lzZSB0cnVlXG4gKi9cbmZ1bmN0aW9uIGV2YWx1YXRlVmlzaWJpbGl0eShwQ29ubm4pIHtcbiAgbGV0IGJWaXNpYmlsaXR5ID0gdHJ1ZTtcbiAgY29uc3Qgc1Zpc2liaWxpdHkgPSBwQ29ubm4ubWV0YS5jb25maWcudmlzaWJpbGl0eTtcbiAgaWYgKHNWaXNpYmlsaXR5ICYmIHNWaXNpYmlsaXR5Lmxlbmd0aCkge1xuICAgIC8vIGUuZy4gXCJARSAuRW1iZWRkZWREYXRhX1NlbGVjdGVkVGVzdE5hbWUgPT0gJ1JlYWRvbmx5JyAmJiAuRW1iZWRkZWREYXRhX1NlbGVjdGVkU3ViQ2F0ZWdvcnkgPT0gJ01vZGUnXCJcbiAgICBjb25zdCBhVmlzaWJpbGl0eSA9IHNWaXNpYmlsaXR5LnNwbGl0KCcmJicpO1xuICAgIC8vIGUuZy4gW1wiRW1iZWRkZWREYXRhX1NlbGVjdGVkVGVzdE5hbWVcIjogXCJSZWFkb25seVwiLCBcIkVtYmVkZGVkRGF0YV9TZWxlY3RlZFN1YkNhdGVnb3J5XCI6IFwiTW9kZVwiXVxuICAgIGNvbnN0IGNvbnRleHQgPSBwQ29ubm4uZ2V0Q29udGV4dE5hbWUoKTtcbiAgICAvLyBSZWFkaW5nIHZhbHVlcyBmcm9tIHRoZSBTdG9yZSB0byBldmFsdWF0ZSB0aGUgdmlzaWJpbGl0eSBleHByZXNzaW9uc1xuICAgIGNvbnN0IHN0b3JlRGF0YSA9IFBDb3JlLmdldFN0b3JlKCkuZ2V0U3RhdGUoKT8uZGF0YVtjb250ZXh0XS5jYXNlSW5mby5jb250ZW50O1xuXG4gICAgY29uc3QgaW5pdGlhbFZhbCA9IHt9O1xuICAgIGNvbnN0IG9Qcm9wZXJ0aWVzID0gYVZpc2liaWxpdHkucmVkdWNlKChwcm9wZXJ0aWVzLCBwcm9wZXJ0eSkgPT4ge1xuICAgICAgY29uc3Qga2V5U3RhcnRJbmRleCA9IHByb3BlcnR5LmluZGV4T2YoJy4nKTtcbiAgICAgIGNvbnN0IGtleUVuZEluZGV4ID0gcHJvcGVydHkuaW5kZXhPZignPScpIC0gMTtcbiAgICAgIGNvbnN0IHZhbHVlU3RhcnRJbmRleCA9IHByb3BlcnR5LmluZGV4T2YoXCInXCIpO1xuICAgICAgY29uc3QgdmFsdWVFbmRJbmRleCA9IHByb3BlcnR5Lmxhc3RJbmRleE9mKFwiJ1wiKSAtIDE7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5wcm9wZXJ0aWVzLFxuICAgICAgICBbcHJvcGVydHkuc3Vic3RyKGtleVN0YXJ0SW5kZXggKyAxLCBrZXlFbmRJbmRleCAtIGtleVN0YXJ0SW5kZXggLSAxKV06IHByb3BlcnR5LnN1YnN0cih2YWx1ZVN0YXJ0SW5kZXggKyAxLCB2YWx1ZUVuZEluZGV4IC0gdmFsdWVTdGFydEluZGV4KVxuICAgICAgfTtcbiAgICB9LCBpbml0aWFsVmFsKTtcblxuICAgIGNvbnN0IHByb3BlcnR5S2V5cyA9IE9iamVjdC5rZXlzKG9Qcm9wZXJ0aWVzKTtcbiAgICBjb25zdCBwcm9wZXJ0eVZhbHVlcyA9IE9iamVjdC52YWx1ZXMob1Byb3BlcnRpZXMpO1xuXG4gICAgZm9yIChsZXQgcHJvcGVydHlJbmRleCA9IDA7IHByb3BlcnR5SW5kZXggPCBwcm9wZXJ0eUtleXMubGVuZ3RoOyBwcm9wZXJ0eUluZGV4KyspIHtcbiAgICAgIGlmIChzdG9yZURhdGFbcHJvcGVydHlLZXlzW3Byb3BlcnR5SW5kZXhdXSAhPT0gcHJvcGVydHlWYWx1ZXNbcHJvcGVydHlJbmRleF0pIHtcbiAgICAgICAgYlZpc2liaWxpdHkgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGJWaXNpYmlsaXR5O1xufVxuXG5pbnRlcmZhY2UgVmlld1Byb3BzIHtcbiAgLy8gSWYgYW55LCBlbnRlciBhZGRpdGlvbmFsIHByb3BzIHRoYXQgb25seSBleGlzdCBvbiB0aGlzIGNvbXBvbmVudFxuICB0ZW1wbGF0ZT86IHN0cmluZztcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIHNob3dMYWJlbDogYm9vbGVhbjtcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIHZpc2liaWxpdHk/OiBib29sZWFuO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtdmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi92aWV3LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdmlldy5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBmb3J3YXJkUmVmKCgpID0+IENvbXBvbmVudE1hcHBlckNvbXBvbmVudCldXG59KVxuZXhwb3J0IGNsYXNzIFZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgcENvbm4kOiB0eXBlb2YgUENvbm5lY3Q7XG4gIEBJbnB1dCgpIGZvcm1Hcm91cCQ6IEZvcm1Hcm91cDtcbiAgQElucHV0KCkgZGlzcGxheU9ubHlGQSQ6IGJvb2xlYW47XG4gIC8vIEBJbnB1dCgpIHVwZGF0ZVRva2VuJDogbnVtYmVyO1xuXG4gIGFuZ3VsYXJQQ29ubmVjdERhdGE6IEFuZ3VsYXJQQ29ubmVjdERhdGEgPSB7fTtcblxuICBjb25maWdQcm9wcyQ6IFZpZXdQcm9wcztcbiAgaW5oZXJpdGVkUHJvcHMkOiBhbnk7XG4gIGFyQ2hpbGRyZW4kOiBhbnlbXTtcbiAgdGVtcGxhdGVOYW1lJDogc3RyaW5nO1xuICB0aXRsZSQgPSAnJztcbiAgbGFiZWwkID0gJyc7XG4gIHNob3dMYWJlbCQgPSB0cnVlO1xuICB2aXNpYmlsaXR5JCA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhbmd1bGFyUENvbm5lY3Q6IEFuZ3VsYXJQQ29ubmVjdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1dGlsczogVXRpbHNcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIEZpcnN0IHRoaW5nIGluIGluaXRpYWxpemF0aW9uIGlzIHJlZ2lzdGVyaW5nIGFuZCBzdWJzY3JpYmluZyB0byB0aGUgQW5ndWxhclBDb25uZWN0IHNlcnZpY2VcbiAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEgPSB0aGlzLmFuZ3VsYXJQQ29ubmVjdC5yZWdpc3RlckFuZFN1YnNjcmliZUNvbXBvbmVudCh0aGlzLCB0aGlzLm9uU3RhdGVDaGFuZ2UpO1xuXG4gICAgdGhpcy5jaGVja0FuZFVwZGF0ZSgpO1xuICB9XG5cbiAgLy8gQ2FsbGJhY2sgcGFzc2VkIHdoZW4gc3Vic2NyaWJpbmcgdG8gc3RvcmUgY2hhbmdlXG4gIG9uU3RhdGVDaGFuZ2UoKSB7XG4gICAgdGhpcy5jaGVja0FuZFVwZGF0ZSgpO1xuICB9XG5cbiAgY2hlY2tBbmRVcGRhdGUoKSB7XG4gICAgLy8gU2hvdWxkIGFsd2F5cyBjaGVjayB0aGUgYnJpZGdlIHRvIHNlZSBpZiB0aGUgY29tcG9uZW50IHNob3VsZFxuICAgIC8vIHVwZGF0ZSBpdHNlbGYgKHJlLXJlbmRlcilcbiAgICBjb25zdCBiVXBkYXRlU2VsZiA9IHRoaXMuYW5ndWxhclBDb25uZWN0LnNob3VsZENvbXBvbmVudFVwZGF0ZSh0aGlzKTtcblxuICAgIC8vIE9OTFkgY2FsbCB1cGRhdGVTZWxmIHdoZW4gdGhlIGNvbXBvbmVudCBzaG91bGQgdXBkYXRlXG4gICAgaWYgKGJVcGRhdGVTZWxmKSB7XG4gICAgICB0aGlzLnVwZGF0ZVNlbGYoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgY29uc3QgeyBwQ29ubiQgfSA9IGNoYW5nZXM7XG5cbiAgICBpZiAocENvbm4kLnByZXZpb3VzVmFsdWUgJiYgcENvbm4kLnByZXZpb3VzVmFsdWUgIT09IHBDb25uJC5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuY2hlY2tBbmRVcGRhdGUoKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVTZWxmKCkge1xuICAgIGlmICh0aGlzLmFuZ3VsYXJQQ29ubmVjdC5nZXRDb21wb25lbnRJRCh0aGlzKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gZGVidWdnZXI7XG5cbiAgICAvLyBub3JtYWxpemUgdGhpcy5wQ29ubiQgaW4gY2FzZSBpdCBjb250YWlucyBhICdyZWZlcmVuY2UnXG4gICAgdGhpcy5wQ29ubiQgPSBSZWZlcmVuY2VDb21wb25lbnQubm9ybWFsaXplUENvbm4odGhpcy5wQ29ubiQpO1xuXG4gICAgdGhpcy5jb25maWdQcm9wcyQgPSB0aGlzLnBDb25uJC5yZXNvbHZlQ29uZmlnUHJvcHModGhpcy5wQ29ubiQuZ2V0Q29uZmlnUHJvcHMoKSkgYXMgVmlld1Byb3BzO1xuICAgIHRoaXMuaW5oZXJpdGVkUHJvcHMkID0gdGhpcy5wQ29ubiQuZ2V0SW5oZXJpdGVkUHJvcHMoKTtcblxuICAgIC8vIE5PVEU6IHRoaXMuY29uZmlnUHJvcHMkLnZpc2liaWxpdHknXSBpcyB1c2VkIGluIHZpZXcuY29tcG9uZW50LnRzIHN1Y2ggdGhhdFxuICAgIC8vICB0aGUgVmlldyB3aWxsIG9ubHkgYmUgcmVuZGVyZWQgd2hlbiB0aGlzLmNvbmZpZ1Byb3BzJC52aXNpYmlsaXR5J10gaXMgZmFsc2UuXG4gICAgLy8gIEl0IFdJTEwgcmVuZGVyIGlmIHRydWUgb3IgdW5kZWZpbmVkLlxuXG4gICAgdGhpcy50ZW1wbGF0ZU5hbWUkID0gdGhpcy5jb25maWdQcm9wcyQudGVtcGxhdGUgfHwgJyc7XG4gICAgdGhpcy50aXRsZSQgPSB0aGlzLmNvbmZpZ1Byb3BzJC50aXRsZSB8fCAnJztcbiAgICB0aGlzLmxhYmVsJCA9IHRoaXMuY29uZmlnUHJvcHMkLmxhYmVsIHx8ICcnO1xuICAgIHRoaXMuc2hvd0xhYmVsJCA9IHRoaXMuY29uZmlnUHJvcHMkLnNob3dMYWJlbCB8fCB0aGlzLnNob3dMYWJlbCQ7XG4gICAgLy8gbGFiZWwgJiBzaG93TGFiZWwgd2l0aGluIGluaGVyaXRlZFByb3BzIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBjb25maWdQcm9wc1xuICAgIHRoaXMubGFiZWwkID0gdGhpcy5pbmhlcml0ZWRQcm9wcyQubGFiZWwgfHwgdGhpcy5sYWJlbCQ7XG4gICAgdGhpcy5zaG93TGFiZWwkID0gdGhpcy5pbmhlcml0ZWRQcm9wcyQuc2hvd0xhYmVsIHx8IHRoaXMuc2hvd0xhYmVsJDtcbiAgICAvLyBjaGlsZHJlbiBtYXkgaGF2ZSBhICdyZWZlcmVuY2UnIHNvIG5vcm1hbGl6ZSB0aGUgY2hpbGRyZW4gYXJyYXlcbiAgICB0aGlzLmFyQ2hpbGRyZW4kID0gUmVmZXJlbmNlQ29tcG9uZW50Lm5vcm1hbGl6ZVBDb25uQXJyYXkodGhpcy5wQ29ubiQuZ2V0Q2hpbGRyZW4oKSk7XG5cbiAgICB0aGlzLnZpc2liaWxpdHkkID0gdGhpcy5jb25maWdQcm9wcyQudmlzaWJpbGl0eSA/PyB0aGlzLnZpc2liaWxpdHkkO1xuXG4gICAgLyoqXG4gICAgICogSW4gaW5zdGFuY2VzIHdoZXJlIHRoZXJlIGlzIGNvbnRleHQsIGxpa2Ugd2l0aCBcInNoaXBwaW5nQWRkcmVzcyxcIiB0aGUgcGFnZVJlZmVyZW5jZSBiZWNvbWVzIFwiY2FzZUluZm8uY29udGVudC5zaGlwcGluZ0FkZHJlc3MuXCJcbiAgICAgKiBUaGlzIGxlYWRzIHRvIHByb2JsZW1zIGluIHRoZSBnZXRQcm9wZXJ0eSBBUEksIGFzIGl0IGluY29ycmVjdGx5IGFzc2Vzc2VzIHRoZSB2aXNpYmlsaXR5IGNvbmRpdGlvbiBieSBsb29raW5nIGluIHRoZSB3cm9uZyBsb2NhdGlvblxuICAgICAqIGluIHRoZSBTdG9yZSBmb3IgdGhlIHByb3BlcnR5IHZhbHVlcy4gUmVmZXJlbmNlIGNvbXBvbmVudCBzaG91bGQgYmUgYWJsZSB0byBoYW5kbGUgc3VjaCBzY2VuYXJpb3MoYXMgZG9uZSBpbiBTREstUikgc2luY2UgaXQgaGFzIHRoZVxuICAgICAqIGV4cGVjdGVkIHBhZ2VSZWZlcmVuY2UgdmFsdWVzLCB0aGUgVmlldyBjb21wb25lbnQgY3VycmVudGx5IGNhbm5vdCBoYW5kbGUgdGhpcy5cbiAgICAgKiBUaGUgcmVzb2x1dGlvbiBsaWVzIGluIHRyYW5zZmVycmluZyB0aGlzIHJlc3BvbnNpYmlsaXR5IHRvIHRoZSBSZWZlcmVuY2UgY29tcG9uZW50LCBlbGltaW5hdGluZyB0aGUgbmVlZCBmb3IgdGhpcyBjb2RlIHdoZW4gUmVmZXJlbmNlXG4gICAgICogY29tcG9uZW50IGlzIGFibGUgdG8gaGFuZGxlIGl0LlxuICAgICAqL1xuICAgIGlmICh0aGlzLnBDb25uJC5nZXRQYWdlUmVmZXJlbmNlKCkubGVuZ3RoID4gJ2Nhc2VJbmZvLmNvbnRlbnQnLmxlbmd0aCkge1xuICAgICAgdGhpcy52aXNpYmlsaXR5JCA9IGV2YWx1YXRlVmlzaWJpbGl0eSh0aGlzLnBDb25uJCk7XG4gICAgfVxuXG4gICAgLy8gd2FzOiAgdGhpcy5hckNoaWxkcmVuJCA9IHRoaXMucENvbm4kLmdldENoaWxkcmVuKCkgYXMgQXJyYXk8YW55PjtcblxuICAgIC8vIGRlYnVnXG4gICAgLy8gbGV0ICBraWRMaXN0OiBzdHJpbmcgPSBcIlwiO1xuICAgIC8vIGZvciAobGV0IGkgaW4gdGhpcy5hckNoaWxkcmVuJCkge1xuICAgIC8vICAga2lkTGlzdCA9IGtpZExpc3QuY29uY2F0KHRoaXMuYXJDaGlsZHJlbiRbaV0uZ2V0UENvbm5lY3QoKS5nZXRDb21wb25lbnROYW1lKCkpLmNvbmNhdChcIixcIik7XG4gICAgLy8gfVxuICAgIC8vIGNvbnNvbGUubG9nKFwiLS0+dmlldyB1cGRhdGU6IFwiICsgdGhpcy5hbmd1bGFyUENvbm5lY3QuZ2V0Q29tcG9uZW50SUQodGhpcykgKyBcIiwgdGVtcGxhdGU6IFwiICsgdGhpcy50ZW1wbGF0ZU5hbWUkICsgXCIsIGtpZHM6IFwiICsga2lkTGlzdCk7XG4gIH1cblxuICAvLyBKQSAtIGFkYXB0aW5nIGFkZGl0aW9uYWxQcm9wcyBmcm9tIE5lYnVsYS9Db25zdGVsbGF0aW9uIHZlcnNpb24gd2hpY2ggdXNlcyBzdGF0aWMgbWV0aG9kc1xuICAvLyAgICBvbiB0aGUgY29tcG9uZW50IGNsYXNzZXMgc3RvcmVkIGluIFBDb21wb25lbnRzICh0aGF0IEFuZ3VsYXIgZG9lc24ndCBoYXZlKS4uLlxuICBhZGRpdGlvbmFsUHJvcHMoc3RhdGU6IGFueSwgZ2V0UENvbm5lY3Q6IGFueSkge1xuICAgIGxldCBwcm9wT2JqID0ge307XG5cbiAgICAvLyBXZSBhbHJlYWR5IGhhdmUgdGhlIHRlbXBsYXRlIG5hbWUgaW4gdGhpcy50ZW1wbGF0ZU5hbWUkXG4gICAgaWYgKHRoaXMudGVtcGxhdGVOYW1lJCAhPT0gJycpIHtcbiAgICAgIGxldCBhbGxGaWVsZHMgPSB7fTtcblxuICAgICAgLy8gVGhlc2UgdXNlcyBhcmUgYWRhcHRlZCBmcm9tIE5lYnVsYS9Db25zdGVsbGF0aW9uIENhc2VTdW1tYXJ5LmFkZGl0aW9uYWxQcm9wc1xuICAgICAgc3dpdGNoICh0aGlzLnRlbXBsYXRlTmFtZSQpIHtcbiAgICAgICAgY2FzZSAnQ2FzZVN1bW1hcnknOlxuICAgICAgICAgIGFsbEZpZWxkcyA9IGdldEFsbEZpZWxkcyhnZXRQQ29ubmVjdCk7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNhc2UtZGVjbGFyYXRpb25zXG4gICAgICAgICAgY29uc3QgdW5yZXNGaWVsZHMgPSB7XG4gICAgICAgICAgICBwcmltYXJ5RmllbGRzOiBhbGxGaWVsZHNbMF0sXG4gICAgICAgICAgICBzZWNvbmRhcnlGaWVsZHM6IGFsbEZpZWxkc1sxXVxuICAgICAgICAgIH07XG4gICAgICAgICAgcHJvcE9iaiA9IGdldFBDb25uZWN0LnJlc29sdmVDb25maWdQcm9wcyh1bnJlc0ZpZWxkcyk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnRGV0YWlscyc6XG4gICAgICAgICAgYWxsRmllbGRzID0gZ2V0QWxsRmllbGRzKGdldFBDb25uZWN0KTtcbiAgICAgICAgICBwcm9wT2JqID0geyBmaWVsZHM6IGFsbEZpZWxkc1swXSB9O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwcm9wT2JqO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYW5ndWxhclBDb25uZWN0RGF0YS51bnN1YnNjcmliZUZuKSB7XG4gICAgICB0aGlzLmFuZ3VsYXJQQ29ubmVjdERhdGEudW5zdWJzY3JpYmVGbigpO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiAqbmdJZj1cInZpc2liaWxpdHkkICE9PSBmYWxzZVwiIGNsYXNzPVwibmctdmlldy10b3BcIj5cbiAgPGRpdiAqbmdJZj1cInNob3dMYWJlbCQgJiYgbGFiZWwkICYmIHRlbXBsYXRlTmFtZSQgIT09ICdTaW1wbGVUYWJsZScgJiYgdGVtcGxhdGVOYW1lJCAhPT0gJ0RlZmF1bHRGb3JtJ1wiIGNsYXNzPVwidGVtcGxhdGUtdGl0bGUtY29udGFpbmVyXCI+XG4gICAgPHNwYW4+e3sgbGFiZWwkIH19PC9zcGFuPlxuICA8L2Rpdj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwidGVtcGxhdGVOYW1lJDsgZWxzZSBub1RlbXBsYXRlXCI+XG4gICAgPGRpdj5cbiAgICAgIDxjb21wb25lbnQtbWFwcGVyXG4gICAgICAgIFtuYW1lXT1cInRlbXBsYXRlTmFtZSRcIlxuICAgICAgICBbcHJvcHNdPVwieyBmb3JtR3JvdXAkLCBwQ29ubiQsIGRpc3BsYXlPbmx5RkEkIH1cIlxuICAgICAgICBlcnJvck1zZz1cIlZpZXcgdGVtcGxhdGUgbm90IHJlY29nbml6ZWQ6IFt7eyB0ZW1wbGF0ZU5hbWUkIH19XVwiXG4gICAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctdGVtcGxhdGUgI25vVGVtcGxhdGU+XG4gICAgPGRpdiAqbmdJZj1cImRpc3BsYXlPbmx5RkEkOyBlbHNlIGRpc3BsYXlBbGxcIj5cbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGtpZCBvZiBhckNoaWxkcmVuJFwiPlxuICAgICAgICA8ZGl2IFtuZ1N3aXRjaF09XCJraWQuZ2V0UENvbm5lY3QoKS5nZXRDb21wb25lbnROYW1lKClcIj5cbiAgICAgICAgICA8Y29tcG9uZW50LW1hcHBlclxuICAgICAgICAgICAgW25hbWVdPVwia2lkLmdldFBDb25uZWN0KCkuZ2V0Q29tcG9uZW50TmFtZSgpXCJcbiAgICAgICAgICAgIFtwcm9wc109XCJ7IHBDb25uJDoga2lkLmdldFBDb25uZWN0KCkgfVwiXG4gICAgICAgICAgICBlcnJvck1zZz1cIlZpZXcgTWlzc2luZyAoZGlzcGxheU9ubHlGQSk6IHt7IGtpZC5nZXRQQ29ubmVjdCgpLmdldENvbXBvbmVudE5hbWUoKSB9fVwiXG4gICAgICAgICAgPjwvY29tcG9uZW50LW1hcHBlcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8bmctdGVtcGxhdGUgI2Rpc3BsYXlBbGw+XG4gICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBraWQgb2YgYXJDaGlsZHJlbiRcIj5cbiAgICAgICAgPGNvbXBvbmVudC1tYXBwZXJcbiAgICAgICAgICBbbmFtZV09XCJraWQuZ2V0UENvbm5lY3QoKS5nZXRDb21wb25lbnROYW1lKClcIlxuICAgICAgICAgIFtwcm9wc109XCJ7IHBDb25uJDoga2lkLmdldFBDb25uZWN0KCkgfVwiXG4gICAgICAgICAgZXJyb3JNc2c9XCJWaWV3IE1pc3NpbmcgKGRpc3BsYXlBbGwpOiB7eyBraWQuZ2V0UENvbm5lY3QoKS5nZXRDb21wb25lbnROYW1lKCkgfX1cIlxuICAgICAgICA+PC9jb21wb25lbnQtbWFwcGVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19