@veloceapps/sdk 8.0.0-20 → 8.0.0-201

Sign up to get free protection for your applications and to get access to all the features.
Files changed (317) hide show
  1. package/README.md +0 -1
  2. package/cms/README.md +0 -20
  3. package/cms/cms.actions.d.ts +15 -1
  4. package/cms/components/preview/preview.component.d.ts +2 -3
  5. package/cms/components/preview/preview.types.d.ts +4 -0
  6. package/cms/index.d.ts +1 -0
  7. package/cms/modules/runtime/services/runtime.service.d.ts +1 -1
  8. package/cms/services/index.d.ts +0 -1
  9. package/cms/services/resources.service.d.ts +2 -0
  10. package/cms/types/index.d.ts +0 -1
  11. package/cms/utils/element-metadata-worker.d.ts +11 -0
  12. package/cms/utils/elements-resolver.d.ts +0 -2
  13. package/cms/utils/index.d.ts +3 -0
  14. package/cms/utils/transpilation-worker.d.ts +13 -0
  15. package/cms/vendor-map.d.ts +29 -19
  16. package/core/README.md +20 -0
  17. package/core/modules/configuration/configuration.module.d.ts +2 -1
  18. package/core/modules/configuration/helpers.d.ts +4 -3
  19. package/core/modules/configuration/index.d.ts +1 -1
  20. package/core/modules/configuration/services/configuration-runtime.service.d.ts +1 -1
  21. package/core/modules/configuration/services/configuration-state.service.d.ts +54 -0
  22. package/core/modules/configuration/services/configuration.service.d.ts +11 -6
  23. package/core/modules/configuration/types/configuration.types.d.ts +4 -0
  24. package/core/modules/flow-configuration/flow-configuration.module.d.ts +2 -1
  25. package/core/modules/flow-configuration/services/flow-configuration.service.d.ts +5 -0
  26. package/core/pipes/action-code.pipe.d.ts +8 -0
  27. package/core/pipes/date.pipe.d.ts +2 -1
  28. package/core/pipes/index.d.ts +1 -0
  29. package/core/pipes/pipes.module.d.ts +2 -1
  30. package/core/services/context.service.d.ts +4 -0
  31. package/core/services/flow-info.service.d.ts +29 -0
  32. package/core/services/flow-state-configuration.service.d.ts +19 -0
  33. package/core/services/flow-state.service.d.ts +80 -0
  34. package/core/services/index.d.ts +4 -1
  35. package/core/services/quote-draft.service.d.ts +12 -28
  36. package/core/services/runtime-settings.service.d.ts +4 -1
  37. package/core/types/flow-customization.types.d.ts +22 -0
  38. package/core/types/flow-state.types.d.ts +11 -0
  39. package/core/types/formatting-settings.types.d.ts +2 -0
  40. package/core/types/index.d.ts +3 -0
  41. package/{cms → core}/types/integration.types.d.ts +1 -1
  42. package/core/types/pipe.types.d.ts +1 -0
  43. package/core/utils/line-item.utils.d.ts +1 -3
  44. package/esm2020/cms/cms.actions.mjs +25 -1
  45. package/esm2020/cms/components/element-renderer/element-renderer.component.mjs +3 -3
  46. package/esm2020/cms/components/element-tools-panel/element-tools-panel.component.mjs +3 -3
  47. package/esm2020/cms/components/preview/preview.component.mjs +10 -10
  48. package/esm2020/cms/components/preview/preview.module.mjs +2 -2
  49. package/esm2020/cms/components/preview/preview.types.mjs +1 -1
  50. package/esm2020/cms/index.mjs +2 -1
  51. package/esm2020/cms/launcher.module.mjs +4 -4
  52. package/esm2020/cms/modules/migrations/migrations.mjs +2 -2
  53. package/esm2020/cms/modules/migrations/services/migrations.service.mjs +6 -2
  54. package/esm2020/cms/modules/runtime/services/compilation.service.mjs +11 -7
  55. package/esm2020/cms/modules/runtime/services/runtime.service.mjs +4 -4
  56. package/esm2020/cms/plugins/configuration.plugin.mjs +8 -4
  57. package/esm2020/cms/services/index.mjs +1 -2
  58. package/esm2020/cms/services/io-provider.service.mjs +10 -9
  59. package/esm2020/cms/services/resources.service.mjs +10 -6
  60. package/esm2020/cms/services/templates.service.mjs +10 -9
  61. package/esm2020/cms/types/index.mjs +1 -2
  62. package/esm2020/cms/utils/element-metadata-worker.mjs +31 -0
  63. package/esm2020/cms/utils/elements-resolver.mjs +14 -28
  64. package/esm2020/cms/utils/encoding.utils.mjs +3 -2
  65. package/esm2020/cms/utils/index.mjs +4 -1
  66. package/esm2020/cms/utils/path.utils.mjs +3 -3
  67. package/esm2020/cms/utils/script.utils.mjs +19 -15
  68. package/esm2020/cms/utils/transpilation-worker.mjs +52 -0
  69. package/esm2020/cms/vendor-map.mjs +18 -6
  70. package/esm2020/core/core.module.mjs +12 -5
  71. package/esm2020/core/modules/configuration/configuration.module.mjs +7 -23
  72. package/esm2020/core/modules/configuration/helpers.mjs +28 -3
  73. package/esm2020/core/modules/configuration/index.mjs +2 -2
  74. package/esm2020/core/modules/configuration/services/configuration-runtime.service.mjs +8 -11
  75. package/esm2020/core/modules/configuration/services/configuration-state.service.mjs +335 -0
  76. package/esm2020/core/modules/configuration/services/configuration.service.mjs +77 -52
  77. package/esm2020/core/modules/configuration/services/runtime-context.service.mjs +6 -6
  78. package/esm2020/core/modules/configuration/types/configuration.types.mjs +1 -1
  79. package/esm2020/core/modules/flow-configuration/flow-configuration.module.mjs +6 -6
  80. package/esm2020/core/modules/flow-configuration/services/flow-configuration.service.mjs +12 -9
  81. package/esm2020/core/pipes/action-code.pipe.mjs +20 -0
  82. package/esm2020/core/pipes/date.pipe.mjs +10 -4
  83. package/esm2020/core/pipes/index.mjs +2 -1
  84. package/esm2020/core/pipes/pipes.module.mjs +5 -4
  85. package/esm2020/core/services/context.service.mjs +33 -6
  86. package/esm2020/core/services/flow-info.service.mjs +99 -0
  87. package/esm2020/core/services/flow-state-configuration.service.mjs +53 -0
  88. package/esm2020/core/services/flow-state.service.mjs +512 -0
  89. package/esm2020/core/services/index.mjs +5 -2
  90. package/esm2020/core/services/integration.state.mjs +36 -0
  91. package/esm2020/core/services/product-images.service.mjs +4 -5
  92. package/esm2020/core/services/quote-draft.service.mjs +40 -91
  93. package/esm2020/core/services/runtime-settings.service.mjs +22 -5
  94. package/esm2020/core/types/flow-customization.types.mjs +3 -0
  95. package/esm2020/core/types/flow-state.types.mjs +2 -0
  96. package/esm2020/core/types/formatting-settings.types.mjs +1 -1
  97. package/esm2020/core/types/index.mjs +4 -1
  98. package/esm2020/core/types/integration.types.mjs +2 -0
  99. package/esm2020/core/types/pipe.types.mjs +2 -0
  100. package/esm2020/core/utils/line-item.utils.mjs +33 -32
  101. package/esm2020/src/components/doc-gen/doc-gen.component.mjs +49 -49
  102. package/esm2020/src/components/flow-header/flow-header.component.mjs +108 -0
  103. package/esm2020/src/components/flow-header/flow-header.module.mjs +19 -0
  104. package/esm2020/src/components/flow-header/index.mjs +2 -0
  105. package/esm2020/src/components/guided-selling/guided-selling.component.mjs +37 -43
  106. package/esm2020/src/configure-primeng.mjs +33 -0
  107. package/esm2020/src/flow-routing.module.mjs +56 -78
  108. package/esm2020/src/flow.component.mjs +23 -32
  109. package/esm2020/src/flow.module.mjs +7 -5
  110. package/esm2020/src/guards/context.guard.mjs +6 -11
  111. package/esm2020/src/guards/flow.guard.mjs +37 -0
  112. package/esm2020/src/guards/product-unload.guard.mjs +4 -1
  113. package/esm2020/src/guards/root.guard.mjs +14 -10
  114. package/esm2020/src/pages/assets/assets.component.mjs +33 -37
  115. package/esm2020/src/pages/catalog/catalog.component.mjs +33 -37
  116. package/esm2020/src/pages/debug/debug.component.mjs +10 -14
  117. package/esm2020/src/pages/product/product.component.mjs +35 -22
  118. package/esm2020/src/pages/record-not-found/record-not-found.component.mjs +6 -3
  119. package/esm2020/src/pages/remote/remote.component.mjs +19 -19
  120. package/esm2020/src/pages/shopping-cart/shopping-cart.component.mjs +34 -38
  121. package/esm2020/src/resolvers/flow.resolver.mjs +37 -49
  122. package/esm2020/src/resolvers/quote.resolver.mjs +55 -63
  123. package/esm2020/src/services/doc-gen.service.mjs +4 -3
  124. package/esm2020/src/services/flow-dialog.service.mjs +21 -6
  125. package/esm2020/src/services/flow-router.service.mjs +57 -16
  126. package/esm2020/src/services/flow.service.mjs +83 -28
  127. package/esm2020/src/services/guided-selling.service.mjs +5 -4
  128. package/esm2020/src/services/index.mjs +3 -1
  129. package/esm2020/src/types/index.mjs +1 -2
  130. package/esm2020/src/utils/flow.utils.mjs +6 -2
  131. package/fesm2015/veloceapps-sdk-cms.mjs +298 -195
  132. package/fesm2015/veloceapps-sdk-cms.mjs.map +1 -1
  133. package/fesm2015/veloceapps-sdk-core.mjs +1846 -1023
  134. package/fesm2015/veloceapps-sdk-core.mjs.map +1 -1
  135. package/fesm2015/veloceapps-sdk.mjs +756 -1493
  136. package/fesm2015/veloceapps-sdk.mjs.map +1 -1
  137. package/fesm2020/veloceapps-sdk-cms.mjs +302 -209
  138. package/fesm2020/veloceapps-sdk-cms.mjs.map +1 -1
  139. package/fesm2020/veloceapps-sdk-core.mjs +1596 -811
  140. package/fesm2020/veloceapps-sdk-core.mjs.map +1 -1
  141. package/fesm2020/veloceapps-sdk.mjs +819 -1553
  142. package/fesm2020/veloceapps-sdk.mjs.map +1 -1
  143. package/package.json +5 -12
  144. package/src/components/doc-gen/doc-gen.component.d.ts +8 -9
  145. package/src/components/flow-header/flow-header.component.d.ts +25 -0
  146. package/src/components/flow-header/flow-header.module.d.ts +9 -0
  147. package/src/components/flow-header/index.d.ts +1 -0
  148. package/src/components/guided-selling/guided-selling.component.d.ts +6 -8
  149. package/src/configure-primeng.d.ts +1 -0
  150. package/src/flow-routing.module.d.ts +5 -7
  151. package/src/flow.component.d.ts +7 -11
  152. package/src/flow.module.d.ts +2 -2
  153. package/src/guards/context.guard.d.ts +4 -5
  154. package/src/guards/flow.guard.d.ts +2 -0
  155. package/src/guards/product-unload.guard.d.ts +2 -2
  156. package/src/guards/root.guard.d.ts +0 -1
  157. package/src/pages/assets/assets.component.d.ts +5 -7
  158. package/src/pages/catalog/catalog.component.d.ts +5 -7
  159. package/src/pages/debug/debug.component.d.ts +5 -8
  160. package/src/pages/product/product.component.d.ts +8 -7
  161. package/src/pages/record-not-found/record-not-found.component.d.ts +2 -0
  162. package/src/pages/remote/remote.component.d.ts +2 -3
  163. package/src/pages/shopping-cart/shopping-cart.component.d.ts +5 -7
  164. package/src/resolvers/flow.resolver.d.ts +6 -7
  165. package/src/resolvers/quote.resolver.d.ts +7 -12
  166. package/src/services/doc-gen.service.d.ts +1 -1
  167. package/src/services/flow-dialog.service.d.ts +5 -2
  168. package/src/services/flow-router.service.d.ts +7 -3
  169. package/src/services/flow.service.d.ts +11 -4
  170. package/src/services/guided-selling.service.d.ts +1 -1
  171. package/src/services/index.d.ts +2 -0
  172. package/src/types/index.d.ts +0 -1
  173. package/core/modules/configuration/services/configuration.state.d.ts +0 -30
  174. package/core/services/metric-calculation/metric-calculation.service.d.ts +0 -25
  175. package/core/services/metric-calculation/metric-calculation.types.d.ts +0 -1
  176. package/core/services/metric-calculation/metric-calculation.utils.d.ts +0 -5
  177. package/esm2020/cms/services/integration.state.mjs +0 -37
  178. package/esm2020/cms/types/integration.types.mjs +0 -2
  179. package/esm2020/core/modules/configuration/services/configuration.state.mjs +0 -142
  180. package/esm2020/core/services/metric-calculation/metric-calculation.service.mjs +0 -85
  181. package/esm2020/core/services/metric-calculation/metric-calculation.types.mjs +0 -2
  182. package/esm2020/core/services/metric-calculation/metric-calculation.utils.mjs +0 -42
  183. package/esm2020/runtime/components/component-preview/component-preview.component.mjs +0 -125
  184. package/esm2020/runtime/components/index.mjs +0 -5
  185. package/esm2020/runtime/components/section-renderer/section-renderer.component.mjs +0 -67
  186. package/esm2020/runtime/components/ui-runtime/runtime.component.mjs +0 -440
  187. package/esm2020/runtime/components/ui-runtime-preview/runtime-preview.component.mjs +0 -108
  188. package/esm2020/runtime/execution/components/children-placeholder/children-placeholder.component.mjs +0 -60
  189. package/esm2020/runtime/execution/components/context-provider/context-provider.component.mjs +0 -39
  190. package/esm2020/runtime/execution/components/execution-section-renderer/execution-section-renderer.component.mjs +0 -67
  191. package/esm2020/runtime/execution/components/federated/federated.component.mjs +0 -74
  192. package/esm2020/runtime/execution/components/velo-attribute/velo-attribute.component.mjs +0 -60
  193. package/esm2020/runtime/execution/components/velo-multiselect/velo-multiselect.component.mjs +0 -130
  194. package/esm2020/runtime/execution/components/velo-port-checkbox/velo-port-checkbox.component.mjs +0 -72
  195. package/esm2020/runtime/execution/components/velo-port-dropdown/velo-port-dropdown.component.mjs +0 -97
  196. package/esm2020/runtime/execution/components/velo-port-radio/velo-port-radio.component.mjs +0 -142
  197. package/esm2020/runtime/execution/components/velo-type/velo-type.component.mjs +0 -119
  198. package/esm2020/runtime/execution/directives/section-script.directive.mjs +0 -247
  199. package/esm2020/runtime/execution/directives/sf-query.directive.mjs +0 -35
  200. package/esm2020/runtime/execution/directives/velo-attribute.directive.mjs +0 -88
  201. package/esm2020/runtime/execution/directives/velo-port.directive.mjs +0 -376
  202. package/esm2020/runtime/execution/directives/vl-approval.directive.mjs +0 -23
  203. package/esm2020/runtime/execution/directives/vl-document-attachments.directive.mjs +0 -36
  204. package/esm2020/runtime/execution/directives/vl-document-templates.directive.mjs +0 -60
  205. package/esm2020/runtime/execution/directives/vl-quote.directive.mjs +0 -42
  206. package/esm2020/runtime/execution/directives/vl-ramp.directive.mjs +0 -55
  207. package/esm2020/runtime/execution/runtime-execution.module.mjs +0 -133
  208. package/esm2020/runtime/execution/utils/federated.util.mjs +0 -32
  209. package/esm2020/runtime/index.mjs +0 -5
  210. package/esm2020/runtime/runtime.module.mjs +0 -74
  211. package/esm2020/runtime/services/cart.service.mjs +0 -29
  212. package/esm2020/runtime/services/collapsible-state.service.mjs +0 -34
  213. package/esm2020/runtime/services/configuration.service.mjs +0 -119
  214. package/esm2020/runtime/services/current-state.service.mjs +0 -17
  215. package/esm2020/runtime/services/form-scope.service.mjs +0 -30
  216. package/esm2020/runtime/services/index.mjs +0 -4
  217. package/esm2020/runtime/services/product-model-cache.service.mjs +0 -31
  218. package/esm2020/runtime/services/runtime-context.service.mjs +0 -60
  219. package/esm2020/runtime/services/runtime-form.service.mjs +0 -219
  220. package/esm2020/runtime/services/runtime.service.mjs +0 -115
  221. package/esm2020/runtime/services/section-helper.service.mjs +0 -27
  222. package/esm2020/runtime/services/section-scope.service.mjs +0 -36
  223. package/esm2020/runtime/services/section-store.service.mjs +0 -22
  224. package/esm2020/runtime/services/section.service.mjs +0 -117
  225. package/esm2020/runtime/types/bound-data.types.mjs +0 -7
  226. package/esm2020/runtime/types/index.mjs +0 -3
  227. package/esm2020/runtime/types/quote-states.types.mjs +0 -2
  228. package/esm2020/runtime/types/runtime.types.mjs +0 -2
  229. package/esm2020/runtime/types/script-registry.types.mjs +0 -51
  230. package/esm2020/runtime/utils/line-item.util.mjs +0 -270
  231. package/esm2020/runtime/utils/section.utils.mjs +0 -26
  232. package/esm2020/runtime/utils/sections-binder.helper.mjs +0 -105
  233. package/esm2020/runtime/veloceapps-sdk-runtime.mjs +0 -5
  234. package/esm2020/src/components/header/cart-overlay/cart-preview.component.mjs +0 -119
  235. package/esm2020/src/components/header/cart-overlay/cart-preview.module.mjs +0 -47
  236. package/esm2020/src/components/header/header.component.mjs +0 -355
  237. package/esm2020/src/components/header/header.module.mjs +0 -52
  238. package/esm2020/src/components/header/header.types.mjs +0 -2
  239. package/esm2020/src/components/header/metrics/index.mjs +0 -2
  240. package/esm2020/src/components/header/metrics/metrics.component.mjs +0 -255
  241. package/esm2020/src/components/header/metrics/metrics.definitions.mjs +0 -2
  242. package/esm2020/src/components/header/metrics/metrics.module.mjs +0 -69
  243. package/esm2020/src/pages/empty-account/empty-account.component.mjs +0 -12
  244. package/esm2020/src/pages/empty-account/empty-account.module.mjs +0 -20
  245. package/esm2020/src/pages/legacy-product/legacy-product.component.mjs +0 -137
  246. package/esm2020/src/pages/legacy-product/legacy-product.module.mjs +0 -19
  247. package/esm2020/src/types/flow-customization.types.mjs +0 -3
  248. package/fesm2015/veloceapps-sdk-runtime.mjs +0 -3770
  249. package/fesm2015/veloceapps-sdk-runtime.mjs.map +0 -1
  250. package/fesm2020/veloceapps-sdk-runtime.mjs +0 -3767
  251. package/fesm2020/veloceapps-sdk-runtime.mjs.map +0 -1
  252. package/runtime/README.md +0 -5
  253. package/runtime/components/component-preview/component-preview.component.d.ts +0 -27
  254. package/runtime/components/index.d.ts +0 -4
  255. package/runtime/components/section-renderer/section-renderer.component.d.ts +0 -25
  256. package/runtime/components/ui-runtime/runtime.component.d.ts +0 -53
  257. package/runtime/components/ui-runtime-preview/runtime-preview.component.d.ts +0 -27
  258. package/runtime/execution/components/children-placeholder/children-placeholder.component.d.ts +0 -30
  259. package/runtime/execution/components/context-provider/context-provider.component.d.ts +0 -14
  260. package/runtime/execution/components/execution-section-renderer/execution-section-renderer.component.d.ts +0 -25
  261. package/runtime/execution/components/federated/federated.component.d.ts +0 -36
  262. package/runtime/execution/components/velo-attribute/velo-attribute.component.d.ts +0 -19
  263. package/runtime/execution/components/velo-multiselect/velo-multiselect.component.d.ts +0 -35
  264. package/runtime/execution/components/velo-port-checkbox/velo-port-checkbox.component.d.ts +0 -22
  265. package/runtime/execution/components/velo-port-dropdown/velo-port-dropdown.component.d.ts +0 -22
  266. package/runtime/execution/components/velo-port-radio/velo-port-radio.component.d.ts +0 -28
  267. package/runtime/execution/components/velo-type/velo-type.component.d.ts +0 -31
  268. package/runtime/execution/directives/section-script.directive.d.ts +0 -59
  269. package/runtime/execution/directives/sf-query.directive.d.ts +0 -15
  270. package/runtime/execution/directives/velo-attribute.directive.d.ts +0 -26
  271. package/runtime/execution/directives/velo-port.directive.d.ts +0 -74
  272. package/runtime/execution/directives/vl-approval.directive.d.ts +0 -10
  273. package/runtime/execution/directives/vl-document-attachments.directive.d.ts +0 -15
  274. package/runtime/execution/directives/vl-document-templates.directive.d.ts +0 -33
  275. package/runtime/execution/directives/vl-quote.directive.d.ts +0 -14
  276. package/runtime/execution/directives/vl-ramp.directive.d.ts +0 -15
  277. package/runtime/execution/runtime-execution.module.d.ts +0 -25
  278. package/runtime/execution/utils/federated.util.d.ts +0 -6
  279. package/runtime/index.d.ts +0 -4
  280. package/runtime/runtime.module.d.ts +0 -16
  281. package/runtime/services/cart.service.d.ts +0 -15
  282. package/runtime/services/collapsible-state.service.d.ts +0 -15
  283. package/runtime/services/configuration.service.d.ts +0 -20
  284. package/runtime/services/current-state.service.d.ts +0 -8
  285. package/runtime/services/form-scope.service.d.ts +0 -20
  286. package/runtime/services/index.d.ts +0 -3
  287. package/runtime/services/product-model-cache.service.d.ts +0 -14
  288. package/runtime/services/runtime-context.service.d.ts +0 -16
  289. package/runtime/services/runtime-form.service.d.ts +0 -24
  290. package/runtime/services/runtime.service.d.ts +0 -44
  291. package/runtime/services/section-helper.service.d.ts +0 -8
  292. package/runtime/services/section-scope.service.d.ts +0 -14
  293. package/runtime/services/section-store.service.d.ts +0 -11
  294. package/runtime/services/section.service.d.ts +0 -30
  295. package/runtime/types/bound-data.types.d.ts +0 -13
  296. package/runtime/types/index.d.ts +0 -2
  297. package/runtime/types/quote-states.types.d.ts +0 -6
  298. package/runtime/types/runtime.types.d.ts +0 -19
  299. package/runtime/types/script-registry.types.d.ts +0 -13
  300. package/runtime/utils/line-item.util.d.ts +0 -34
  301. package/runtime/utils/section.utils.d.ts +0 -2
  302. package/runtime/utils/sections-binder.helper.d.ts +0 -16
  303. package/src/components/header/cart-overlay/cart-preview.component.d.ts +0 -36
  304. package/src/components/header/cart-overlay/cart-preview.module.d.ts +0 -14
  305. package/src/components/header/header.component.d.ts +0 -70
  306. package/src/components/header/header.module.d.ts +0 -16
  307. package/src/components/header/header.types.d.ts +0 -20
  308. package/src/components/header/metrics/index.d.ts +0 -1
  309. package/src/components/header/metrics/metrics.component.d.ts +0 -67
  310. package/src/components/header/metrics/metrics.definitions.d.ts +0 -1
  311. package/src/components/header/metrics/metrics.module.d.ts +0 -18
  312. package/src/pages/empty-account/empty-account.component.d.ts +0 -5
  313. package/src/pages/empty-account/empty-account.module.d.ts +0 -10
  314. package/src/pages/legacy-product/legacy-product.component.d.ts +0 -37
  315. package/src/pages/legacy-product/legacy-product.module.d.ts +0 -9
  316. package/src/types/flow-customization.types.d.ts +0 -12
  317. /package/{cms → core}/services/integration.state.d.ts +0 -0
@@ -1,5 +1,5 @@
1
1
  import { UUID } from '@veloceapps/core';
2
- import { flatten, map, sortBy } from 'lodash';
2
+ import { entries, flatten, map, sortBy } from 'lodash';
3
3
  export const findLineItem = (id, lineItems) => {
4
4
  return findLineItemWithComparator(lineItems, (li) => li.id === id);
5
5
  };
@@ -56,27 +56,42 @@ export const replaceLineItem = (lineItem, replaceTo, skipCardinalityCalculation
56
56
  lineItems: lineItem.lineItems.map(li => replaceLineItem(li, replaceTo, skipCardinalityCalculation)),
57
57
  };
58
58
  };
59
- export const calculateCardinalityVariables = (lineItems) => {
59
+ const collectCardinalityComputations = (portDomains) => {
60
+ const cardinalityComputations = new Map();
61
+ entries(portDomains).forEach(([key, portDomain]) => {
62
+ cardinalityComputations.set(key, portDomain.properties['cardinalityComputation'] === 'true');
63
+ });
64
+ return cardinalityComputations;
65
+ };
66
+ const calculateCardinalityVariables = (lineItems, cardinalityComputations) => {
60
67
  const cardVars = new Map();
61
68
  lineItems
62
69
  .filter(({ port, type }) => !!port && !!type)
63
70
  .forEach(li => {
64
- const cardinalityVariableName = `#CV-${li.type}@${li.port}`;
65
- cardVars.set(cardinalityVariableName, (cardVars.get(cardinalityVariableName) ?? 0) + li.qty);
71
+ if (cardinalityComputations.get(`${li.port}`)) {
72
+ const cardinalityVariableName = `#CV-${li.type}@${li.port}`;
73
+ cardVars.set(cardinalityVariableName, (cardVars.get(cardinalityVariableName) ?? 0) + li.qty);
74
+ }
66
75
  });
67
76
  return cardVars;
68
77
  };
78
+ const cardinalityRegexp = new RegExp('#CV-[a-zA-Z0-9_]+@(?<portName>[a-zA-Z0-9_]+)');
69
79
  export const recalculateCardinalityVariables = (original, updated) => {
70
- const cardinalityVariables = calculateCardinalityVariables(updated.lineItems);
71
- const originalCardinalityVariables = calculateCardinalityVariables(original.lineItems);
80
+ const cardinalityComputations = collectCardinalityComputations(updated.portDomains ?? original.portDomains ?? {});
81
+ const cardinalityVariables = calculateCardinalityVariables(updated.lineItems, cardinalityComputations);
82
+ const originalCardinalityVariables = calculateCardinalityVariables(original.lineItems, cardinalityComputations);
72
83
  originalCardinalityVariables.forEach((value, key) => {
73
- if (cardinalityVariables.get(key) === value) {
74
- // no need to update cardinality if no changes
75
- cardinalityVariables.delete(key);
76
- }
77
- else if (!cardinalityVariables.has(key)) {
78
- // remove last item from port
79
- cardinalityVariables.set(key, 0);
84
+ const execArray = cardinalityRegexp.exec(key);
85
+ const portName = execArray?.groups?.['portName'];
86
+ if (!portName || cardinalityComputations.get(portName)) {
87
+ if (cardinalityVariables.get(key) === value) {
88
+ // no need to update cardinality if no changes
89
+ cardinalityVariables.delete(key);
90
+ }
91
+ else if (!cardinalityVariables.has(key)) {
92
+ // remove last item from port
93
+ cardinalityVariables.set(key, 0);
94
+ }
80
95
  }
81
96
  });
82
97
  return {
@@ -96,7 +111,7 @@ export const upsertAttributes = (originalAttributes, attributesToUpsert) => {
96
111
  const [origAttr] = getAttributes(acc, [name]);
97
112
  return [
98
113
  ...acc.filter(attr => attr.name !== name),
99
- { ...(origAttr ?? { name }), cfgStatus: origAttr ? 'Changed' : 'User', value },
114
+ { ...(origAttr ?? { name, type: '' }), cfgStatus: origAttr ? 'Changed' : 'User', value },
100
115
  ];
101
116
  }, originalAttributes);
102
117
  };
@@ -132,20 +147,6 @@ export const getRecommendedPrices = (portDomain, type) => {
132
147
  }, [0, 0]) ?? [0, 0];
133
148
  return { net, list };
134
149
  };
135
- export const generateModifiedAssetsMap = (lineItems) => {
136
- return lineItems.reduce((acc, li) => {
137
- const isModified = isLineItemModified(li);
138
- if (!isModified) {
139
- return acc;
140
- }
141
- const target = getOriginParent(lineItems, li);
142
- const id = target?.assetId ?? target?.openOrderLineItemId;
143
- if (id) {
144
- acc[id] = true;
145
- }
146
- return acc;
147
- }, {});
148
- };
149
150
  export const getOriginParent = (lineItems, currentLineItem) => {
150
151
  let target = currentLineItem;
151
152
  while (target && target.rampInstanceId) {
@@ -153,11 +154,11 @@ export const getOriginParent = (lineItems, currentLineItem) => {
153
154
  }
154
155
  return target;
155
156
  };
156
- export const isLineItemModified = (lineItem) => {
157
- if (lineItem.actionCode === 'EXIST' && lineItem.status === 'PENDING') {
157
+ export const assetPredicateFn = (lineItem, assetId) => {
158
+ if (!assetId) {
158
159
  return false;
159
160
  }
160
- return lineItem.actionCode !== 'EXIST';
161
+ return lineItem.assetId === assetId || lineItem.openOrderLineItemId === assetId;
161
162
  };
162
163
  export const multiplyLineItems = (lineItem, qty, split) => {
163
164
  if (split) {
@@ -183,4 +184,4 @@ export const isTechnicalAttribute = (name) => {
183
184
  export const filterOutTechnicalAttributes = (attributes) => {
184
185
  return attributes.filter(({ name }) => !isTechnicalAttribute(name));
185
186
  };
186
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1pdGVtLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY29yZS91dGlscy9saW5lLWl0ZW0udXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpRCxJQUFJLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RixPQUFPLEVBQWMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFMUQsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsRUFBVSxFQUFFLFNBQXFCLEVBQXdCLEVBQUU7SUFDdEYsT0FBTywwQkFBMEIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFZLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDL0UsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsQ0FDeEMsU0FBcUIsRUFDckIsVUFBcUMsRUFDZixFQUFFO0lBQ3hCLElBQUksWUFBWSxHQUFHLFNBQVMsQ0FBQztJQUU3QixPQUFPLFlBQVksQ0FBQyxNQUFNLEVBQUU7UUFDMUIsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUU1QyxJQUFJLEtBQUssRUFBRTtZQUNULE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxZQUFZLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztLQUN0RTtJQUVELE9BQU87QUFDVCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxRQUFrQixFQUFFLFFBQWdCLEVBQUUsUUFBa0IsRUFBWSxFQUFFO0lBQ25HLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxFQUFFLEtBQUssUUFB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Q0FBQyxDQUFDO0tBQ3REO1NBQU07UUFDTCxPQUFPO1lBQ0w7Z0JBQ0UsR0FBRyxRQUFRO2dCQUNYLEdBQUcsRUFBRSxHQUFHO2FBQ1Q7U0FDRixDQUFDO0tBQ0g7QUFDSCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLElBQVksRUFBVyxFQUFFO0lBQzVELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLENBQTZCLFVBQWUsRUFBTyxFQUFFO0lBQy9GLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUN0RSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdHRyaWJ1dGUsIExpbmVJdGVtLCBOZXdBdHRyaWJ1dGUsIFBvcnREb21haW4sIFVVSUQgfSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IERpY3Rpb25hcnksIGZsYXR0ZW4sIG1hcCwgc29ydEJ5IH0gZnJvbSAnbG9kYXNoJztcblxuZXhwb3J0IGNvbnN0IGZpbmRMaW5lSXRlbSA9IChpZDogc3RyaW5nLCBsaW5lSXRlbXM6IExpbmVJdGVtW10pOiBMaW5lSXRlbSB8IHVuZGVmaW5lZCA9PiB7XG4gIHJldHVybiBmaW5kTGluZUl0ZW1XaXRoQ29tcGFyYXRvcihsaW5lSXRlbXMsIChsaTogTGluZUl0ZW0pID0+IGxpLmlkID09PSBpZCk7XG59O1xuXG5leHBvcnQgY29uc3QgZmluZExpbmVJdGVtV2l0aENvbXBhcmF0b3IgPSAoXG4gIGxpbmVJdGVtczogTGluZUl0ZW1bXSxcbiAgY29tcGFyYXRvcjogKGxpOiBMaW5lSXRlbSkgPT4gYm9vbGVhbixcbik6IExpbmVJdGVtIHwgdW5kZWZpbmVkID0+IHtcbiAgbGV0IGN1cnJlbnRMZXZlbCA9IGxpbmVJdGVtcztcblxuICB3aGlsZSAoY3VycmVudExldmVsLmxlbmd0aCkge1xuICAgIGNvbnN0IGZvdW5kID0gY3VycmVudExldmVsLmZpbmQoY29tcGFyYXRvcik7XG5cbiAgICBpZiAoZm91bmQpIHtcbiAgICAgIHJldHVybiBmb3VuZDtcbiAgICB9XG5cbiAgICBjdXJyZW50TGV2ZWwgPSBmbGF0dGVuKGN1cnJlbnRMZXZlbC5tYXAocGFyZW50ID0+IHBhcmVudC5saW5lSXRlbXMpKTtcbiAgfVxuXG4gIHJldHVybjtcbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRMaW5lSXRlbSA9IChsaW5lSXRlbTogTGluZUl0ZW0sIHBhcmVudElkOiBzdHJpbmcsIHRvSW5zZXJ0OiBMaW5lSXRlbSk6IExpbmVJdGVtID0+IHtcbiAgY29uc3QgaW5zZXJ0RGF0YSA9IGxpbmVJdGVtLmlkID09PSBwYXJlbnRJZCA/IFt0b0luc2VydF0gOiBbXTtcbiAgcmV0dXJuIHtcbiAgICAuLi5saW5lSXRlbSxcbiAgICBsaW5lSXRlbXM6IFtcbiAgICAgIC4uLmluc2VydERhdGEsXG4gICAgICAuLi5saW5lSXRlbS5saW5lSXRlbXMubWFwKGxpID0+IHtcbiAgICAgICAgcmV0dXJuIGluc2VydExpbmVJdGVtKGxpLCBwYXJlbnRJZCwgdG9JbnNlcnQpO1xuICAgICAgfSksXG4gICAgXSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVMaW5lSXRlbSA9IChsaW5lSXRlbTogTGluZUl0ZW0sIGlkVG9SZW1vdmU6IHN0cmluZyk6IExpbmVJdGVtID0+IHtcbiAgcmV0dXJuIHtcbiAgICAuLi5saW5lSXRlbSxcbiAgICBsaW5lSXRlbXM6IGxpbmVJdGVtLmxpbmVJdGVtc1xuICAgICAgLm1hcChsaSA9PiB7XG4gICAgICAgIGlmIChsaS5pZCA9PT0gaWRUb1JlbW92ZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmIChsaS5saW5lSXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuIHJlbW92ZUxpbmVJdGVtKGxpLCBpZFRvUmVtb3ZlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGk7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcihyID0+ICEhcikgYXMgTGluZUl0ZW1bXSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXBsYWNlTGluZUl0ZW0gPSAoXG4gIGxpbmVJdGVtOiBMaW5lSXRlbSxcbiAgcmVwbGFjZVRvOiBMaW5lSXRlbSxcbiAgc2tpcENhcmRpbmFsaXR5Q2FsY3VsYXRpb246IGJvb2xlYW4gPSBmYWxzZSxcbik6IExpbmVJdGVtID0+IHtcbiAgaWYgKGxpbmVJdGVtLmlkID09PSByZXBsYWNlVG8uaWQpIHtcbiAgICBpZiAoIXNraXBDYXJkaW5hbGl0eUNhbGN1bGF0aW9uKSB7XG4gICAgICByZXR1cm4geyAuLi5yZWNhbGN1bGF0ZUNhcmRpbmFsaXR5VmFyaWFibGVzKGxpbmVJdGVtLCByZXBsYWNlVG8pIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7IC4uLnJlcGxhY2VUbyB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4ubGluZUl0ZW0sXG4gICAgbGluZUl0ZW1zOiBsaW5lSXRlbS5saW5lSXRlbXMubWFwKGxpID0+IHJlcGxhY2VMaW5lSXRlbShsaSwgcmVwbGFjZVRvLCBza2lwQ2FyZGluYWxpdHlDYWxjdWxhdGlvbikpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZUNhcmRpbmFsaXR5VmFyaWFibGVzID0gKGxpbmVJdGVtczogTGluZUl0ZW1bXSk6IE1hcDxzdHJpbmcsIG51bWJlcj4gPT4ge1xuICBjb25zdCBjYXJkVmFycyA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG4gIGxpbmVJdGVtc1xuICAgIC5maWx0ZXIoKHsgcG9ydCwgdHlwZSB9KSA9PiAhIXBvcnQgJiYgISF0eXBlKVxuICAgIC5mb3JFYWNoKGxpID0+IHtcbiAgICAgIGNvbnN0IGNhcmRpbmFsaXR5VmFyaWFibGVOYW1lID0gYCNDVi0ke2xpLnR5cGV9QCR7bGkucG9ydH1gO1xuICAgICAgY2FyZFZhcnMuc2V0KGNhcmRpbmFsaXR5VmFyaWFibGVOYW1lLCAoY2FyZFZhcnMuZ2V0KGNhcmRpbmFsaXR5VmFyaWFibGVOYW1lKSA/PyAwKSArIGxpLnF0eSk7XG4gICAgfSk7XG4gIHJldHVybiBjYXJkVmFycztcbn07XG5cbmV4cG9ydCBjb25zdCByZWNhbGN1bGF0ZUNhcmRpbmFsaXR5VmFyaWFibGVzID0gKG9yaWdpbmFsOiBMaW5lSXRlbSwgdXBkYXRlZDogTGluZUl0ZW0pOiBMaW5lSXRlbSA9PiB7XG4gIGNvbnN0IGNhcmRpbmFsaXR5VmFyaWFibGVzID0gY2FsY3VsYXRlQ2FyZGluYWxpdHlWYXJpYWJsZXModXBkYXRlZC5saW5lSXRlbXMpO1xuICBjb25zdCBvcmlnaW5hbENhcmRpbmFsaXR5VmFyaWFibGVzID0gY2FsY3VsYXRlQ2FyZGluYWxpdHlWYXJpYWJsZXMob3JpZ2luYWwubGluZUl0ZW1zKTtcblxuICBvcmlnaW5hbENhcmRpbmFsaXR5VmFyaWFibGVzLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICBpZiAoY2FyZGluYWxpdHlWYXJpYWJsZXMuZ2V0KGtleSkgPT09IHZhbHVlKSB7XG4gICAgICAvLyBubyBuZWVkIHRvIHVwZGF0ZSBjYXJkaW5hbGl0eSBpZiBubyBjaGFuZ2VzXG4gICAgICBjYXJkaW5hbGl0eVZhcmlhYmxlcy5kZWxldGUoa2V5KTtcbiAgICB9IGVsc2UgaWYgKCFjYXJkaW5hbGl0eVZhcmlhYmxlcy5oYXMoa2V5KSkge1xuICAgICAgLy8gcmVtb3ZlIGxhc3QgaXRlbSBmcm9tIHBvcnRcbiAgICAgIGNhcmRpbmFsaXR5VmFyaWFibGVzLnNldChrZXksIDApO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi51cGRhdGVkLFxuICAgIGF0dHJpYnV0ZXM6IHVwc2VydEF0dHJpYnV0ZXMoXG4gICAgICB1cGRhdGVkLmF0dHJpYnV0ZXMsXG4gICAgICBbLi4uY2FyZGluYWxpdHlWYXJpYWJsZXNdLm1hcCgoW25hbWUsIHZhbHVlXSkgPT4gKHsgbmFtZSwgdmFsdWUsIGNmZ1N0YXR1czogJ0NoYW5nZWQnIH0pKSxcbiAgICApLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IG1hcEF0dHJpYnV0ZXMgPSAoYXR0cmlidXRlczogQXR0cmlidXRlW10pOiBEaWN0aW9uYXJ5PGFueT4gPT4ge1xuICByZXR1cm4gYXR0cmlidXRlcy5yZWR1Y2UoKGFjYywgeyBuYW1lLCB2YWx1ZSB9KSA9PiAoeyAuLi5hY2MsIFtuYW1lXTogdmFsdWUgfSksIHt9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBdHRyaWJ1dGVzID0gKGF0dHJpYnV0ZXM6IEF0dHJpYnV0ZVtdLCBuYW1lczogc3RyaW5nW10gPSBbXSk6IEF0dHJpYnV0ZVtdID0+IHtcbiAgY29uc3QgZmlsdGVyZWQgPSBhdHRyaWJ1dGVzLmZpbHRlcigoeyBuYW1lIH0pID0+IG5hbWVzLmluY2x1ZGVzKG5hbWUpKTtcbiAgcmV0dXJuIHNvcnRCeShmaWx0ZXJlZCwgWyh7IG5hbWUgfSk6IG51bWJlciA9PiBuYW1lcy5pbmRleE9mKG5hbWUpXSk7XG59O1xuXG5leHBvcnQgY29uc3QgdXBzZXJ0QXR0cmlidXRlcyA9IChvcmlnaW5hbEF0dHJpYnV0ZXM6IEF0dHJpYnV0ZVtdLCBhdHRyaWJ1dGVzVG9VcHNlcnQ6IE5ld0F0dHJpYnV0ZVtdKTogQXR0cmlidXRlW10gPT4ge1xuICByZXR1cm4gYXR0cmlidXRlc1RvVXBzZXJ0LnJlZHVjZSgoYWNjLCB7IG5hbWUsIHZhbHVlIH0pID0+IHtcbiAgICBjb25zdCBbb3JpZ0F0dHJdID0gZ2V0QXR0cmlidXRlcyhhY2MsIFtuYW1lXSk7XG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLmFjYy5maWx0ZXIoYXR0ciA9PiBhdHRyLm5hbWUgIT09IG5hbWUpLFxuICAgICAgeyAuLi4ob3JpZ0F0dHIgPz8geyBuYW1lIH0pLCBjZmdTdGF0dXM6IG9yaWdBdHRyID8gJ0NoYW5nZWQnIDogJ1VzZXInLCB2YWx1ZSB9LFxuICAgIF07XG4gIH0sIG9yaWdpbmFsQXR0cmlidXRlcyk7XG59O1xuXG5leHBvcnQgY29uc3QgcGF0Y2hBdHRyaWJ1dGVzID0gKFxuICByb290TGluZUl0ZW06IExpbmVJdGVtLFxuICBpZDogc3RyaW5nLFxuICBhdHRyczogTmV3QXR0cmlidXRlW10sXG4gIHNraXBDYXJkaW5hbGl0eUNhbGN1bGF0aW9uOiBib29sZWFuID0gZmFsc2UsXG4pOiBMaW5lSXRlbSA9PiB7XG4gIGNvbnN0IGxpbmVJdGVtID0gZmluZExpbmVJdGVtKGlkLCBbcm9vdExpbmVJdGVtXSk7XG5cbiAgaWYgKCFsaW5lSXRlbSkge1xuICAgIHJldHVybiByb290TGluZUl0ZW07XG4gIH1cblxuICBjb25zdCBhdHRyaWJ1dGVzID0gdXBzZXJ0QXR0cmlidXRlcyhsaW5lSXRlbS5hdHRyaWJ1dGVzLCBhdHRycyk7XG4gIHJldHVybiByZXBsYWNlTGluZUl0ZW0ocm9vdExpbmVJdGVtLCB7IC4uLmxpbmVJdGVtLCBhdHRyaWJ1dGVzIH0sIHNraXBDYXJkaW5hbGl0eUNhbGN1bGF0aW9uKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBdHRyaWJ1dGVWYWx1ZSA9IChhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVbXSwgbmFtZTogc3RyaW5nKTogYW55ID0+XG4gIGF0dHJpYnV0ZXMuZmluZChhdHRyID0+IGF0dHIubmFtZSA9PT0gbmFtZSk/LnZhbHVlO1xuXG5leHBvcnQgY29uc3QgZ2VuZXJhdGVMaW5lSXRlbSA9IChcbiAgcG9ydDogc3RyaW5nLFxuICB0eXBlOiBzdHJpbmcsXG4gIHBhcmVudElkOiBzdHJpbmcsXG4gIGF0dHJpYnV0ZXM6IE5ld0F0dHJpYnV0ZVtdID0gW10sXG4gIGxpbmVJdGVtczogTGluZUl0ZW1bXSA9IFtdLFxuKTogTGluZUl0ZW0gPT4ge1xuICByZXR1cm4ge1xuICAgIGlkOiBVVUlELlVVSUQoKSxcbiAgICBwb3J0LFxuICAgIHR5cGUsXG4gICAgYWN0aW9uQ29kZTogJ0FERCcsXG4gICAgY2ZnU3RhdHVzOiAnTmV3JyxcbiAgICBhdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzLm1hcCgoeyBuYW1lLCB2YWx1ZSB9KSA9PiAoeyBjZmdTdGF0dXM6ICdVc2VyJywgbmFtZSwgdmFsdWUgfSkpLFxuICAgIGxpbmVJdGVtcyxcbiAgICBwYXJlbnRJZCxcbiAgICBxdHk6IDEsXG4gIH0gYXMgTGluZUl0ZW07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVjb21tZW5kZWRQcmljZXMgPSAocG9ydERvbWFpbjogUG9ydERvbWFpbiwgdHlwZTogc3RyaW5nKTogeyBuZXQ6IG51bWJlcjsgbGlzdDogbnVtYmVyIH0gPT4ge1xuICBjb25zdCBkb21haW5UeXBlID0gcG9ydERvbWFpbi5kb21haW5UeXBlcy5maW5kKCh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gdHlwZSk7XG5cbiAgY29uc3QgW25ldCwgbGlzdF0gPSBkb21haW5UeXBlPy5yZWNvbW1lbmRlZFByaWNlc1xuICAgID8uZmlsdGVyKCh7IGNoYXJnZU1ldGhvZCB9KSA9PiBjaGFyZ2VNZXRob2QgPT09ICdPTkVfVElNRScpXG4gICAgLnJlZHVjZShcbiAgICAgIChhY2MsIHJwKSA9PiB7XG4gICAgICAgIGNvbnN0IFtuZXRQcmljZSwgbGlzdFByaWNlXSA9IGFjYztcbiAgICAgICAgcmV0dXJuIFtuZXRQcmljZSArIHJwLm5ldFByaWNlLCBsaXN0UHJpY2UgKyBycC5saXN0UHJpY2VdO1xuICAgICAgfSxcbiAgICAgIFswLCAwXSxcbiAgICApID8/IFswLCAwXTtcblxuICByZXR1cm4geyBuZXQsIGxpc3QgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZU1vZGlmaWVkQXNzZXRzTWFwID0gKGxpbmVJdGVtczogTGluZUl0ZW1bXSk6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0+IHtcbiAgcmV0dXJuIGxpbmVJdGVtcy5yZWR1Y2UoKGFjYzogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4sIGxpKSA9PiB7XG4gICAgY29uc3QgaXNNb2RpZmllZCA9IGlzTGluZUl0ZW1Nb2RpZmllZChsaSk7XG5cbiAgICBpZiAoIWlzTW9kaWZpZWQpIHtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfVxuXG4gICAgY29uc3QgdGFyZ2V0ID0gZ2V0T3JpZ2luUGFyZW50KGxpbmVJdGVtcywgbGkpO1xuXG4gICAgY29uc3QgaWQgPSB0YXJnZXQ/LmFzc2V0SWQgPz8gdGFyZ2V0Py5vcGVuT3JkZXJMaW5lSXRlbUlkO1xuICAgIGlmIChpZCkge1xuICAgICAgYWNjW2lkXSA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE9yaWdpblBhcmVudCA9IChsaW5lSXRlbXM6IExpbmVJdGVtW10sIGN1cnJlbnRMaW5lSXRlbTogTGluZUl0ZW0pOiBMaW5lSXRlbSB8IHVuZGVmaW5lZCA9PiB7XG4gIGxldCB0YXJnZXQ6IExpbmVJdGVtIHwgdW5kZWZpbmVkID0gY3VycmVudExpbmVJdGVtO1xuICB3aGlsZSAodGFyZ2V0ICYmIHRhcmdldC5yYW1wSW5zdGFuY2VJZCkge1xuICAgIHRhcmdldCA9IGxpbmVJdGVtcy5maW5kKHN1YiA9PiBzdWIuaWQgPT09IGN1cnJlbnRMaW5lSXRlbS5yYW1wSW5zdGFuY2VJZCk7XG4gIH1cbiAgcmV0dXJuIHRhcmdldDtcbn07XG5cbmV4cG9ydCBjb25zdCBpc0xpbmVJdGVtTW9kaWZpZWQgPSA8VCBleHRlbmRzIFBpY2s8TGluZUl0ZW0sICdhY3Rpb25Db2RlJyB8ICdzdGF0dXMnPj4obGluZUl0ZW06IFQpOiBib29sZWFuID0+IHtcbiAgaWYgKGxpbmVJdGVtLmFjdGlvbkNvZGUgPT09ICdFWElTVCcgJiYgbGluZUl0ZW0uc3RhdHVzID09PSAnUEVORElORycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gbGluZUl0ZW0uYWN0aW9uQ29kZSAhPT0gJ0VYSVNUJztcbn07XG5cbmV4cG9ydCBjb25zdCBtdWx0aXBseUxpbmVJdGVtcyA9IChsaW5lSXRlbTogTGluZUl0ZW0sIHF0eTogbnVtYmVyLCBzcGxpdDogYm9vbGVhbik6IExpbmVJdGVtW10gPT4ge1xuICBpZiAoc3BsaXQpIHtcbiAgICBjb25zdCB1bmlmeUlkcyA9IChsaW5lSXRlbTogTGluZUl0ZW0pOiBMaW5lSXRlbSA9PiAoe1xuICAgICAgLi4ubGluZUl0ZW0sXG4gICAgICBpZDogVVVJRC5VVUlEKCksXG4gICAgICBsaW5lSXRlbXM6IGxpbmVJdGVtLmxpbmVJdGVtcy5tYXAodW5pZnlJZHMpLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1hcChuZXcgQXJyYXkocXR5KSwgKCkgPT4gdW5pZnlJZHMobGluZUl0ZW0pKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICAuLi5saW5lSXRlbSxcbiAgICAgICAgcXR5OiBxdHksXG4gICAgICB9LFxuICAgIF07XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBpc1RlY2huaWNhbEF0dHJpYnV0ZSA9IChuYW1lOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgcmV0dXJuIG5hbWUuc3RhcnRzV2l0aCgnIycpIHx8IG5hbWUuc3RhcnRzV2l0aCgnJCcpO1xufTtcblxuZXhwb3J0IGNvbnN0IGZpbHRlck91dFRlY2huaWNhbEF0dHJpYnV0ZXMgPSA8VCBleHRlbmRzIHsgbmFtZTogc3RyaW5nIH0+KGF0dHJpYnV0ZXM6IFRbXSk6IFRbXSA9PiB7XG4gIHJldHVybiBhdHRyaWJ1dGVzLmZpbHRlcigoeyBuYW1lIH0pID0+ICFpc1RlY2huaWNhbEF0dHJpYnV0ZShuYW1lKSk7XG59O1xuIl19
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1pdGVtLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY29yZS91dGlscy9saW5lLWl0ZW0udXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpRCxJQUFJLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN2RixPQUFPLEVBQWMsT0FBTyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRW5FLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLEVBQVUsRUFBRSxTQUFxQixFQUF3QixFQUFFO0lBQ3RGLE9BQU8sMEJBQTBCLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBWSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQy9FLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLENBQ3hDLFNBQXFCLEVBQ3JCLFVBQXFDLEVBQ2YsRUFBRTtJQUN4QixJQUFJLFlBQVksR0FBRyxTQUFTLENBQUM7SUFFN0IsT0FBTyxZQUFZLENBQUMsTUFBTSxFQUFFO1FBQzFCLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFNUMsSUFBSSxLQUFLLEVBQUU7WUFDVCxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsWUFBWSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7S0FDdEU7SUFFRCxPQUFPO0FBQ1QsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsUUFBa0IsRUFBRSxRQUFnQixFQUFFLFFBQWtCLEVBQVksRUFBRTtJQUNuRyxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsRUFB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QUMsUUFBa0IsRUFBRSxHQUFXLEVBQUUsS0FBYyxFQUFjLEVBQUU7SUFDL0YsSUFBSSxLQUFLLEVBQUU7UUFDVCxNQUFNLFFBQVEsR0FBRyxDQUFDLFFBQWtCLEVBQVksRUFBRSxDQUFDLENBQUM7WUFDbEQsR0FBRyxRQUFRO1lBQ1gsRUFBRSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDZixTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO1NBQzVDLENBQUMsQ0FBQztRQUVILE9BQU8sR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0tBQ3REO1NBQU07UUFDTCxPQUFPO1lBQ0w7Z0JBQ0UsR0FBRyxRQUFRO2dCQUNYLEdBQUcsRUFBRSxHQUFHO2FBQ1Q7U0FDRixDQUFDO0tBQ0g7QUFDSCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLElBQVksRUFBVyxFQUFFO0lBQzVELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3RELENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUFHLENBQTZCLFVBQWUsRUFBTyxFQUFFO0lBQy9GLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUN0RSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdHRyaWJ1dGUsIExpbmVJdGVtLCBOZXdBdHRyaWJ1dGUsIFBvcnREb21haW4sIFVVSUQgfSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IERpY3Rpb25hcnksIGVudHJpZXMsIGZsYXR0ZW4sIG1hcCwgc29ydEJ5IH0gZnJvbSAnbG9kYXNoJztcblxuZXhwb3J0IGNvbnN0IGZpbmRMaW5lSXRlbSA9IChpZDogc3RyaW5nLCBsaW5lSXRlbXM6IExpbmVJdGVtW10pOiBMaW5lSXRlbSB8IHVuZGVmaW5lZCA9PiB7XG4gIHJldHVybiBmaW5kTGluZUl0ZW1XaXRoQ29tcGFyYXRvcihsaW5lSXRlbXMsIChsaTogTGluZUl0ZW0pID0+IGxpLmlkID09PSBpZCk7XG59O1xuXG5leHBvcnQgY29uc3QgZmluZExpbmVJdGVtV2l0aENvbXBhcmF0b3IgPSAoXG4gIGxpbmVJdGVtczogTGluZUl0ZW1bXSxcbiAgY29tcGFyYXRvcjogKGxpOiBMaW5lSXRlbSkgPT4gYm9vbGVhbixcbik6IExpbmVJdGVtIHwgdW5kZWZpbmVkID0+IHtcbiAgbGV0IGN1cnJlbnRMZXZlbCA9IGxpbmVJdGVtcztcblxuICB3aGlsZSAoY3VycmVudExldmVsLmxlbmd0aCkge1xuICAgIGNvbnN0IGZvdW5kID0gY3VycmVudExldmVsLmZpbmQoY29tcGFyYXRvcik7XG5cbiAgICBpZiAoZm91bmQpIHtcbiAgICAgIHJldHVybiBmb3VuZDtcbiAgICB9XG5cbiAgICBjdXJyZW50TGV2ZWwgPSBmbGF0dGVuKGN1cnJlbnRMZXZlbC5tYXAocGFyZW50ID0+IHBhcmVudC5saW5lSXRlbXMpKTtcbiAgfVxuXG4gIHJldHVybjtcbn07XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRMaW5lSXRlbSA9IChsaW5lSXRlbTogTGluZUl0ZW0sIHBhcmVudElkOiBzdHJpbmcsIHRvSW5zZXJ0OiBMaW5lSXRlbSk6IExpbmVJdGVtID0+IHtcbiAgY29uc3QgaW5zZXJ0RGF0YSA9IGxpbmVJdGVtLmlkID09PSBwYXJlbnRJZCA/IFt0b0luc2VydF0gOiBbXTtcbiAgcmV0dXJuIHtcbiAgICAuLi5saW5lSXRlbSxcbiAgICBsaW5lSXRlbXM6IFtcbiAgICAgIC4uLmluc2VydERhdGEsXG4gICAgICAuLi5saW5lSXRlbS5saW5lSXRlbXMubWFwKGxpID0+IHtcbiAgICAgICAgcmV0dXJuIGluc2VydExpbmVJdGVtKGxpLCBwYXJlbnRJZCwgdG9JbnNlcnQpO1xuICAgICAgfSksXG4gICAgXSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVMaW5lSXRlbSA9IChsaW5lSXRlbTogTGluZUl0ZW0sIGlkVG9SZW1vdmU6IHN0cmluZyk6IExpbmVJdGVtID0+IHtcbiAgcmV0dXJuIHtcbiAgICAuLi5saW5lSXRlbSxcbiAgICBsaW5lSXRlbXM6IGxpbmVJdGVtLmxpbmVJdGVtc1xuICAgICAgLm1hcChsaSA9PiB7XG4gICAgICAgIGlmIChsaS5pZCA9PT0gaWRUb1JlbW92ZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmIChsaS5saW5lSXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuIHJlbW92ZUxpbmVJdGVtKGxpLCBpZFRvUmVtb3ZlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbGk7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcihyID0+ICEhcikgYXMgTGluZUl0ZW1bXSxcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXBsYWNlTGluZUl0ZW0gPSAoXG4gIGxpbmVJdGVtOiBMaW5lSXRlbSxcbiAgcmVwbGFjZVRvOiBMaW5lSXRlbSxcbiAgc2tpcENhcmRpbmFsaXR5Q2FsY3VsYXRpb246IGJvb2xlYW4gPSBmYWxzZSxcbik6IExpbmVJdGVtID0+IHtcbiAgaWYgKGxpbmVJdGVtLmlkID09PSByZXBsYWNlVG8uaWQpIHtcbiAgICBpZiAoIXNraXBDYXJkaW5hbGl0eUNhbGN1bGF0aW9uKSB7XG4gICAgICByZXR1cm4geyAuLi5yZWNhbGN1bGF0ZUNhcmRpbmFsaXR5VmFyaWFibGVzKGxpbmVJdGVtLCByZXBsYWNlVG8pIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7IC4uLnJlcGxhY2VUbyB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4ubGluZUl0ZW0sXG4gICAgbGluZUl0ZW1zOiBsaW5lSXRlbS5saW5lSXRlbXMubWFwKGxpID0+IHJlcGxhY2VMaW5lSXRlbShsaSwgcmVwbGFjZVRvLCBza2lwQ2FyZGluYWxpdHlDYWxjdWxhdGlvbikpLFxuICB9O1xufTtcblxuY29uc3QgY29sbGVjdENhcmRpbmFsaXR5Q29tcHV0YXRpb25zID0gKHBvcnREb21haW5zOiBEaWN0aW9uYXJ5PFBvcnREb21haW4+KTogTWFwPHN0cmluZywgYm9vbGVhbj4gPT4ge1xuICBjb25zdCBjYXJkaW5hbGl0eUNvbXB1dGF0aW9ucyA9IG5ldyBNYXA8c3RyaW5nLCBib29sZWFuPigpO1xuICBlbnRyaWVzKHBvcnREb21haW5zKS5mb3JFYWNoKChba2V5LCBwb3J0RG9tYWluXSkgPT4ge1xuICAgIGNhcmRpbmFsaXR5Q29tcHV0YXRpb25zLnNldChrZXksIHBvcnREb21haW4ucHJvcGVydGllc1snY2FyZGluYWxpdHlDb21wdXRhdGlvbiddID09PSAndHJ1ZScpO1xuICB9KTtcbiAgcmV0dXJuIGNhcmRpbmFsaXR5Q29tcHV0YXRpb25zO1xufTtcblxuY29uc3QgY2FsY3VsYXRlQ2FyZGluYWxpdHlWYXJpYWJsZXMgPSAoXG4gIGxpbmVJdGVtczogTGluZUl0ZW1bXSxcbiAgY2FyZGluYWxpdHlDb21wdXRhdGlvbnM6IE1hcDxzdHJpbmcsIGJvb2xlYW4+LFxuKTogTWFwPHN0cmluZywgbnVtYmVyPiA9PiB7XG4gIGNvbnN0IGNhcmRWYXJzID0gbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKTtcbiAgbGluZUl0ZW1zXG4gICAgLmZpbHRlcigoeyBwb3J0LCB0eXBlIH0pID0+ICEhcG9ydCAmJiAhIXR5cGUpXG4gICAgLmZvckVhY2gobGkgPT4ge1xuICAgICAgaWYgKGNhcmRpbmFsaXR5Q29tcHV0YXRpb25zLmdldChgJHtsaS5wb3J0fWApKSB7XG4gICAgICAgIGNvbnN0IGNhcmRpbmFsaXR5VmFyaWFibGVOYW1lID0gYCNDVi0ke2xpLnR5cGV9QCR7bGkucG9ydH1gO1xuICAgICAgICBjYXJkVmFycy5zZXQoY2FyZGluYWxpdHlWYXJpYWJsZU5hbWUsIChjYXJkVmFycy5nZXQoY2FyZGluYWxpdHlWYXJpYWJsZU5hbWUpID8/IDApICsgbGkucXR5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgcmV0dXJuIGNhcmRWYXJzO1xufTtcblxuY29uc3QgY2FyZGluYWxpdHlSZWdleHAgPSBuZXcgUmVnRXhwKCcjQ1YtW2EtekEtWjAtOV9dK0AoPzxwb3J0TmFtZT5bYS16QS1aMC05X10rKScpO1xuXG5leHBvcnQgY29uc3QgcmVjYWxjdWxhdGVDYXJkaW5hbGl0eVZhcmlhYmxlcyA9IChvcmlnaW5hbDogTGluZUl0ZW0sIHVwZGF0ZWQ6IExpbmVJdGVtKTogTGluZUl0ZW0gPT4ge1xuICBjb25zdCBjYXJkaW5hbGl0eUNvbXB1dGF0aW9ucyA9IGNvbGxlY3RDYXJkaW5hbGl0eUNvbXB1dGF0aW9ucyh1cGRhdGVkLnBvcnREb21haW5zID8/IG9yaWdpbmFsLnBvcnREb21haW5zID8/IHt9KTtcbiAgY29uc3QgY2FyZGluYWxpdHlWYXJpYWJsZXMgPSBjYWxjdWxhdGVDYXJkaW5hbGl0eVZhcmlhYmxlcyh1cGRhdGVkLmxpbmVJdGVtcywgY2FyZGluYWxpdHlDb21wdXRhdGlvbnMpO1xuICBjb25zdCBvcmlnaW5hbENhcmRpbmFsaXR5VmFyaWFibGVzID0gY2FsY3VsYXRlQ2FyZGluYWxpdHlWYXJpYWJsZXMob3JpZ2luYWwubGluZUl0ZW1zLCBjYXJkaW5hbGl0eUNvbXB1dGF0aW9ucyk7XG5cbiAgb3JpZ2luYWxDYXJkaW5hbGl0eVZhcmlhYmxlcy5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgY29uc3QgZXhlY0FycmF5ID0gY2FyZGluYWxpdHlSZWdleHAuZXhlYyhrZXkpO1xuICAgIGNvbnN0IHBvcnROYW1lID0gZXhlY0FycmF5Py5ncm91cHM/LlsncG9ydE5hbWUnXTtcbiAgICBpZiAoIXBvcnROYW1lIHx8IGNhcmRpbmFsaXR5Q29tcHV0YXRpb25zLmdldChwb3J0TmFtZSkpIHtcbiAgICAgIGlmIChjYXJkaW5hbGl0eVZhcmlhYmxlcy5nZXQoa2V5KSA9PT0gdmFsdWUpIHtcbiAgICAgICAgLy8gbm8gbmVlZCB0byB1cGRhdGUgY2FyZGluYWxpdHkgaWYgbm8gY2hhbmdlc1xuICAgICAgICBjYXJkaW5hbGl0eVZhcmlhYmxlcy5kZWxldGUoa2V5KTtcbiAgICAgIH0gZWxzZSBpZiAoIWNhcmRpbmFsaXR5VmFyaWFibGVzLmhhcyhrZXkpKSB7XG4gICAgICAgIC8vIHJlbW92ZSBsYXN0IGl0ZW0gZnJvbSBwb3J0XG4gICAgICAgIGNhcmRpbmFsaXR5VmFyaWFibGVzLnNldChrZXksIDApO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi51cGRhdGVkLFxuICAgIGF0dHJpYnV0ZXM6IHVwc2VydEF0dHJpYnV0ZXMoXG4gICAgICB1cGRhdGVkLmF0dHJpYnV0ZXMsXG4gICAgICBbLi4uY2FyZGluYWxpdHlWYXJpYWJsZXNdLm1hcCgoW25hbWUsIHZhbHVlXSkgPT4gKHsgbmFtZSwgdmFsdWUsIGNmZ1N0YXR1czogJ0NoYW5nZWQnIH0pKSxcbiAgICApLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IG1hcEF0dHJpYnV0ZXMgPSAoYXR0cmlidXRlczogQXR0cmlidXRlW10pOiBEaWN0aW9uYXJ5PGFueT4gPT4ge1xuICByZXR1cm4gYXR0cmlidXRlcy5yZWR1Y2UoKGFjYywgeyBuYW1lLCB2YWx1ZSB9KSA9PiAoeyAuLi5hY2MsIFtuYW1lXTogdmFsdWUgfSksIHt9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBdHRyaWJ1dGVzID0gKGF0dHJpYnV0ZXM6IEF0dHJpYnV0ZVtdLCBuYW1lczogc3RyaW5nW10gPSBbXSk6IEF0dHJpYnV0ZVtdID0+IHtcbiAgY29uc3QgZmlsdGVyZWQgPSBhdHRyaWJ1dGVzLmZpbHRlcigoeyBuYW1lIH0pID0+IG5hbWVzLmluY2x1ZGVzKG5hbWUpKTtcbiAgcmV0dXJuIHNvcnRCeShmaWx0ZXJlZCwgWyh7IG5hbWUgfSk6IG51bWJlciA9PiBuYW1lcy5pbmRleE9mKG5hbWUpXSk7XG59O1xuXG5leHBvcnQgY29uc3QgdXBzZXJ0QXR0cmlidXRlcyA9IChvcmlnaW5hbEF0dHJpYnV0ZXM6IEF0dHJpYnV0ZVtdLCBhdHRyaWJ1dGVzVG9VcHNlcnQ6IE5ld0F0dHJpYnV0ZVtdKTogQXR0cmlidXRlW10gPT4ge1xuICByZXR1cm4gYXR0cmlidXRlc1RvVXBzZXJ0LnJlZHVjZSgoYWNjLCB7IG5hbWUsIHZhbHVlIH0pID0+IHtcbiAgICBjb25zdCBbb3JpZ0F0dHJdID0gZ2V0QXR0cmlidXRlcyhhY2MsIFtuYW1lXSk7XG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLmFjYy5maWx0ZXIoYXR0ciA9PiBhdHRyLm5hbWUgIT09IG5hbWUpLFxuICAgICAgeyAuLi4ob3JpZ0F0dHIgPz8geyBuYW1lLCB0eXBlOiAnJyB9KSwgY2ZnU3RhdHVzOiBvcmlnQXR0ciA/ICdDaGFuZ2VkJyA6ICdVc2VyJywgdmFsdWUgfSxcbiAgICBdO1xuICB9LCBvcmlnaW5hbEF0dHJpYnV0ZXMpO1xufTtcblxuZXhwb3J0IGNvbnN0IHBhdGNoQXR0cmlidXRlcyA9IChcbiAgcm9vdExpbmVJdGVtOiBMaW5lSXRlbSxcbiAgaWQ6IHN0cmluZyxcbiAgYXR0cnM6IE5ld0F0dHJpYnV0ZVtdLFxuICBza2lwQ2FyZGluYWxpdHlDYWxjdWxhdGlvbjogYm9vbGVhbiA9IGZhbHNlLFxuKTogTGluZUl0ZW0gPT4ge1xuICBjb25zdCBsaW5lSXRlbSA9IGZpbmRMaW5lSXRlbShpZCwgW3Jvb3RMaW5lSXRlbV0pO1xuXG4gIGlmICghbGluZUl0ZW0pIHtcbiAgICByZXR1cm4gcm9vdExpbmVJdGVtO1xuICB9XG5cbiAgY29uc3QgYXR0cmlidXRlcyA9IHVwc2VydEF0dHJpYnV0ZXMobGluZUl0ZW0uYXR0cmlidXRlcywgYXR0cnMpO1xuICByZXR1cm4gcmVwbGFjZUxpbmVJdGVtKHJvb3RMaW5lSXRlbSwgeyAuLi5saW5lSXRlbSwgYXR0cmlidXRlcyB9LCBza2lwQ2FyZGluYWxpdHlDYWxjdWxhdGlvbik7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QXR0cmlidXRlVmFsdWUgPSAoYXR0cmlidXRlczogQXR0cmlidXRlW10sIG5hbWU6IHN0cmluZyk6IGFueSA9PlxuICBhdHRyaWJ1dGVzLmZpbmQoYXR0ciA9PiBhdHRyLm5hbWUgPT09IG5hbWUpPy52YWx1ZTtcblxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlTGluZUl0ZW0gPSAoXG4gIHBvcnQ6IHN0cmluZyxcbiAgdHlwZTogc3RyaW5nLFxuICBwYXJlbnRJZDogc3RyaW5nLFxuICBhdHRyaWJ1dGVzOiBOZXdBdHRyaWJ1dGVbXSA9IFtdLFxuICBsaW5lSXRlbXM6IExpbmVJdGVtW10gPSBbXSxcbik6IExpbmVJdGVtID0+IHtcbiAgcmV0dXJuIHtcbiAgICBpZDogVVVJRC5VVUlEKCksXG4gICAgcG9ydCxcbiAgICB0eXBlLFxuICAgIGFjdGlvbkNvZGU6ICdBREQnLFxuICAgIGNmZ1N0YXR1czogJ05ldycsXG4gICAgYXR0cmlidXRlczogYXR0cmlidXRlcy5tYXAoKHsgbmFtZSwgdmFsdWUgfSkgPT4gKHsgY2ZnU3RhdHVzOiAnVXNlcicsIG5hbWUsIHZhbHVlIH0pKSxcbiAgICBsaW5lSXRlbXMsXG4gICAgcGFyZW50SWQsXG4gICAgcXR5OiAxLFxuICB9IGFzIExpbmVJdGVtO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlY29tbWVuZGVkUHJpY2VzID0gKHBvcnREb21haW46IFBvcnREb21haW4sIHR5cGU6IHN0cmluZyk6IHsgbmV0OiBudW1iZXI7IGxpc3Q6IG51bWJlciB9ID0+IHtcbiAgY29uc3QgZG9tYWluVHlwZSA9IHBvcnREb21haW4uZG9tYWluVHlwZXMuZmluZCgoeyBuYW1lIH0pID0+IG5hbWUgPT09IHR5cGUpO1xuXG4gIGNvbnN0IFtuZXQsIGxpc3RdID0gZG9tYWluVHlwZT8ucmVjb21tZW5kZWRQcmljZXNcbiAgICA/LmZpbHRlcigoeyBjaGFyZ2VNZXRob2QgfSkgPT4gY2hhcmdlTWV0aG9kID09PSAnT05FX1RJTUUnKVxuICAgIC5yZWR1Y2UoXG4gICAgICAoYWNjLCBycCkgPT4ge1xuICAgICAgICBjb25zdCBbbmV0UHJpY2UsIGxpc3RQcmljZV0gPSBhY2M7XG4gICAgICAgIHJldHVybiBbbmV0UHJpY2UgKyBycC5uZXRQcmljZSwgbGlzdFByaWNlICsgcnAubGlzdFByaWNlXTtcbiAgICAgIH0sXG4gICAgICBbMCwgMF0sXG4gICAgKSA/PyBbMCwgMF07XG5cbiAgcmV0dXJuIHsgbmV0LCBsaXN0IH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0T3JpZ2luUGFyZW50ID0gKGxpbmVJdGVtczogTGluZUl0ZW1bXSwgY3VycmVudExpbmVJdGVtOiBMaW5lSXRlbSk6IExpbmVJdGVtIHwgdW5kZWZpbmVkID0+IHtcbiAgbGV0IHRhcmdldDogTGluZUl0ZW0gfCB1bmRlZmluZWQgPSBjdXJyZW50TGluZUl0ZW07XG4gIHdoaWxlICh0YXJnZXQgJiYgdGFyZ2V0LnJhbXBJbnN0YW5jZUlkKSB7XG4gICAgdGFyZ2V0ID0gbGluZUl0ZW1zLmZpbmQoc3ViID0+IHN1Yi5pZCA9PT0gY3VycmVudExpbmVJdGVtLnJhbXBJbnN0YW5jZUlkKTtcbiAgfVxuICByZXR1cm4gdGFyZ2V0O1xufTtcblxuZXhwb3J0IGNvbnN0IGFzc2V0UHJlZGljYXRlRm4gPSAobGluZUl0ZW06IExpbmVJdGVtLCBhc3NldElkPzogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gIGlmICghYXNzZXRJZCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBsaW5lSXRlbS5hc3NldElkID09PSBhc3NldElkIHx8IGxpbmVJdGVtLm9wZW5PcmRlckxpbmVJdGVtSWQgPT09IGFzc2V0SWQ7XG59O1xuXG5leHBvcnQgY29uc3QgbXVsdGlwbHlMaW5lSXRlbXMgPSAobGluZUl0ZW06IExpbmVJdGVtLCBxdHk6IG51bWJlciwgc3BsaXQ6IGJvb2xlYW4pOiBMaW5lSXRlbVtdID0+IHtcbiAgaWYgKHNwbGl0KSB7XG4gICAgY29uc3QgdW5pZnlJZHMgPSAobGluZUl0ZW06IExpbmVJdGVtKTogTGluZUl0ZW0gPT4gKHtcbiAgICAgIC4uLmxpbmVJdGVtLFxuICAgICAgaWQ6IFVVSUQuVVVJRCgpLFxuICAgICAgbGluZUl0ZW1zOiBsaW5lSXRlbS5saW5lSXRlbXMubWFwKHVuaWZ5SWRzKSxcbiAgICB9KTtcblxuICAgIHJldHVybiBtYXAobmV3IEFycmF5KHF0eSksICgpID0+IHVuaWZ5SWRzKGxpbmVJdGVtKSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgLi4ubGluZUl0ZW0sXG4gICAgICAgIHF0eTogcXR5LFxuICAgICAgfSxcbiAgICBdO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgaXNUZWNobmljYWxBdHRyaWJ1dGUgPSAobmFtZTogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gIHJldHVybiBuYW1lLnN0YXJ0c1dpdGgoJyMnKSB8fCBuYW1lLnN0YXJ0c1dpdGgoJyQnKTtcbn07XG5cbmV4cG9ydCBjb25zdCBmaWx0ZXJPdXRUZWNobmljYWxBdHRyaWJ1dGVzID0gPFQgZXh0ZW5kcyB7IG5hbWU6IHN0cmluZyB9PihhdHRyaWJ1dGVzOiBUW10pOiBUW10gPT4ge1xuICByZXR1cm4gYXR0cmlidXRlcy5maWx0ZXIoKHsgbmFtZSB9KSA9PiAhaXNUZWNobmljYWxBdHRyaWJ1dGUobmFtZSkpO1xufTtcbiJdfQ==
@@ -1,30 +1,30 @@
1
1
  import { ChangeDetectionStrategy, Component, Inject, Optional } from '@angular/core';
2
2
  import { UITemplatesApiService } from '@veloceapps/api';
3
3
  import { ToastService, ToastType } from '@veloceapps/components';
4
- import { UITemplateComponentType, UITemplateType, } from '@veloceapps/core';
5
- import { extendElementMetadata, extractElementMetadata } from '@veloceapps/sdk/cms';
6
- import { ContextService, QuoteDraftService } from '@veloceapps/sdk/core';
7
- import { BehaviorSubject, catchError, first, map, of, Subject, switchMap, takeUntil, tap } from 'rxjs';
8
- import { FLOW_CUSTOMIZATION } from '../../types';
4
+ import { btoaSafe, extendElementMetadata, extractElementMetadata } from '@veloceapps/sdk/cms';
5
+ import { ContextService, FlowInfoService, FlowStateService, FLOW_CUSTOMIZATION, } from '@veloceapps/sdk/core';
6
+ import { BehaviorSubject, catchError, filter, first, map, of, Subject, switchMap, takeUntil, tap, } from 'rxjs';
9
7
  import * as i0 from "@angular/core";
10
- import * as i1 from "@veloceapps/sdk/core";
11
- import * as i2 from "@veloceapps/api";
8
+ import * as i1 from "@veloceapps/api";
9
+ import * as i2 from "@veloceapps/sdk/core";
12
10
  import * as i3 from "@veloceapps/components";
13
11
  import * as i4 from "@angular/common";
14
12
  import * as i5 from "@veloceapps/sdk/cms";
15
13
  export class DocGenComponent {
16
- constructor(quoteDraftService, contextService, templatesApi, toastService, customizationService) {
17
- this.quoteDraftService = quoteDraftService;
18
- this.contextService = contextService;
14
+ constructor(templatesApi, contextService, flowStateService, flowInfo, toastService, customizationService) {
19
15
  this.templatesApi = templatesApi;
16
+ this.contextService = contextService;
17
+ this.flowStateService = flowStateService;
18
+ this.flowInfo = flowInfo;
20
19
  this.toastService = toastService;
21
20
  this.customizationService = customizationService;
22
21
  this.uiDefinition$ = new BehaviorSubject(null);
23
22
  this.templateApiName = '';
24
23
  this.destroy$ = new Subject();
25
- // initialize when quote draft requested
26
- this.quoteDraftService.quoteDraft$
27
- .pipe(first(), tap(() => this.initialize()), takeUntil(this.destroy$))
24
+ // wait until flow is initialized
25
+ this.flowStateService
26
+ .isInitialized$()
27
+ .pipe(filter(Boolean), first(), tap(() => this.initialize()), takeUntil(this.destroy$))
28
28
  .subscribe();
29
29
  }
30
30
  ngOnDestroy() {
@@ -32,7 +32,7 @@ export class DocGenComponent {
32
32
  this.destroy$.complete();
33
33
  }
34
34
  initialize() {
35
- this.templateApiName = this.contextService.resolve().properties.docGenTemplateApiName ?? '';
35
+ this.templateApiName = this.flowInfo.flow?.properties.templates?.docGen ?? '';
36
36
  this.generateUIDefinition$()
37
37
  .pipe(tap(uiDef => {
38
38
  if (!uiDef) {
@@ -46,81 +46,81 @@ export class DocGenComponent {
46
46
  }), takeUntil(this.destroy$))
47
47
  .subscribe();
48
48
  }
49
- getTemplateRootComponent$(template) {
50
- return this.templatesApi
51
- .fetchComponents$(template.id)
52
- .pipe(map(components => components.find(c => c.type === UITemplateComponentType.ROOT) ?? undefined));
53
- }
54
- getLocalTemplateComponentMeta$() {
55
- if (!this.customizationService?.getTemplateComponent) {
49
+ getLocalMeta$() {
50
+ if (!this.customizationService?.getTemplateComponents) {
56
51
  return of(undefined);
57
52
  }
58
- return this.customizationService?.getTemplateComponent(this.templateApiName).pipe(map(component => {
59
- if (!component) {
53
+ return this.customizationService?.getTemplateComponents(this.templateApiName).pipe(map(components => {
54
+ if (!components) {
60
55
  return;
61
56
  }
62
- return {
57
+ return components.map(component => ({
63
58
  html: component.html,
64
59
  css: component.css,
65
60
  js: component.js,
66
61
  json: component.json,
67
- };
62
+ }));
68
63
  }));
69
64
  }
70
- getDocGenComponentMeta$() {
71
- return this.templatesApi.fetchTemplates$().pipe(map(templates => {
72
- const template = templates.find(template => template.type === UITemplateType.DOCGEN && template.name === this.templateApiName);
73
- return template ?? templates[0];
74
- }), switchMap(template => (template ? this.getTemplateRootComponent$(template) : of(undefined))), switchMap(component => component ? this.templatesApi.fetchComponentAttachments$(component.uiTemplateId, component) : of(undefined)));
65
+ getOrgMeta$() {
66
+ const template = this.flowInfo.templates.DOCGEN;
67
+ if (!template) {
68
+ return of(undefined);
69
+ }
70
+ return this.templatesApi.fetchComponentsAttachments$(template.id);
75
71
  }
76
72
  generateUIDefinition$() {
77
73
  return of(undefined).pipe(tap(() => {
78
74
  if (!this.templateApiName) {
79
- throw new Error("Flow Query parameter 'docGenTemplateApiName' is missing.");
75
+ throw new Error("Flow 'docGen' template is not defined.");
80
76
  }
81
- }), switchMap(() => this.getLocalTemplateComponentMeta$()), switchMap(meta => (meta ? of(meta) : this.getDocGenComponentMeta$())), map(meta => {
82
- if (!meta) {
77
+ }), switchMap(() => this.getLocalMeta$()), switchMap(metaList => (metaList ? of(metaList) : this.getOrgMeta$())), map(metaList => {
78
+ if (!metaList) {
83
79
  return;
84
80
  }
85
81
  const headerId = this.contextService.resolve().properties.Id ?? null;
86
- let script = meta.js;
87
- if (script) {
88
- const metadata = extractElementMetadata(script);
89
- script = extendElementMetadata(script, {
82
+ const patchedMetaList = metaList.map(component => {
83
+ if (!component.js) {
84
+ return component;
85
+ }
86
+ const metadata = extractElementMetadata(component.js);
87
+ const script = extendElementMetadata(component.js, {
90
88
  inputs: {
91
89
  ...metadata.inputs,
92
90
  Id: headerId ? `"${headerId}"` : null,
93
91
  },
94
92
  });
95
- }
93
+ return {
94
+ ...component,
95
+ js: script,
96
+ };
97
+ });
96
98
  const uiDef = {
97
99
  name: '',
98
100
  createdTimestamp: 0,
99
101
  primary: true,
100
102
  type: 'DEFAULT',
101
103
  version: 2,
102
- children: [
103
- {
104
- children: [],
105
- template: meta.html && btoa(meta.html),
106
- script: script && btoa(script),
107
- styles: meta.css && btoa(meta.css),
108
- },
109
- ],
104
+ children: patchedMetaList.map(child => ({
105
+ children: [],
106
+ template: child.html && btoaSafe(child.html),
107
+ script: child.js && btoaSafe(child.js),
108
+ styles: child.css && btoaSafe(child.css),
109
+ })),
110
110
  };
111
111
  return uiDef;
112
112
  }));
113
113
  }
114
114
  }
115
- DocGenComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DocGenComponent, deps: [{ token: i1.QuoteDraftService }, { token: i1.ContextService }, { token: i2.UITemplatesApiService }, { token: i3.ToastService }, { token: FLOW_CUSTOMIZATION, optional: true }], target: i0.ɵɵFactoryTarget.Component });
115
+ DocGenComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DocGenComponent, deps: [{ token: i1.UITemplatesApiService }, { token: i2.ContextService }, { token: i2.FlowStateService }, { token: i2.FlowInfoService }, { token: i3.ToastService }, { token: FLOW_CUSTOMIZATION, optional: true }], target: i0.ɵɵFactoryTarget.Component });
116
116
  DocGenComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: DocGenComponent, selector: "vl-flow-doc-gen", ngImport: i0, template: "<ng-container *ngIf=\"uiDefinition$ | async as uiDefinition\">\n <vl-cms-preview [uiDefinition]=\"uiDefinition\"></vl-cms-preview>\n</ng-container>\n", styles: [":host,vl-cms-preview{display:contents}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.PreviewComponent, selector: "vl-cms-preview", inputs: ["uiDefinition", "config"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
117
117
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DocGenComponent, decorators: [{
118
118
  type: Component,
119
119
  args: [{ selector: 'vl-flow-doc-gen', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"uiDefinition$ | async as uiDefinition\">\n <vl-cms-preview [uiDefinition]=\"uiDefinition\"></vl-cms-preview>\n</ng-container>\n", styles: [":host,vl-cms-preview{display:contents}\n"] }]
120
- }], ctorParameters: function () { return [{ type: i1.QuoteDraftService }, { type: i1.ContextService }, { type: i2.UITemplatesApiService }, { type: i3.ToastService }, { type: undefined, decorators: [{
120
+ }], ctorParameters: function () { return [{ type: i1.UITemplatesApiService }, { type: i2.ContextService }, { type: i2.FlowStateService }, { type: i2.FlowInfoService }, { type: i3.ToastService }, { type: undefined, decorators: [{
121
121
  type: Optional
122
122
  }, {
123
123
  type: Inject,
124
124
  args: [FLOW_CUSTOMIZATION]
125
125
  }] }]; } });
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jLWdlbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9zcmMvY29tcG9uZW50cy9kb2MtZ2VuL2RvYy1nZW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvc3JjL2NvbXBvbmVudHMvZG9jLWdlbi9kb2MtZ2VuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFhLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2pFLE9BQU8sRUFLTCx1QkFBdUIsRUFDdkIsY0FBYyxHQUNmLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHNCQUFzQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNuSCxPQUFPLEVBQXFCLGtCQUFrQixFQUFFLE1BQU0sYUFBYSxDQUFDOzs7Ozs7O0FBUXBFLE1BQU0sT0FBTyxlQUFlO0lBTTFCLFlBQ1UsaUJBQW9DLEVBQ3BDLGNBQThCLEVBQzlCLFlBQW1DLEVBQ25DLFlBQTBCLEVBQ2Msb0JBQXdDO1FBSmhGLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsbUJBQWMsR0FBZCxjQUFjLENB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Q0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7cUJBQ25DO2lCQUNGO2FBQ0YsQ0FBQztZQUVGLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7OzRHQTFJVSxlQUFlLGtKQVdKLGtCQUFrQjtnR0FYN0IsZUFBZSx1REN0QjVCLHdKQUdBOzJGRG1CYSxlQUFlO2tCQU4zQixTQUFTOytCQUNFLGlCQUFpQixtQkFHVix1QkFBdUIsQ0FBQyxNQUFNOzswQkFhNUMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbmplY3QsIE9uRGVzdHJveSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVJVGVtcGxhdGVzQXBpU2VydmljZSB9IGZyb20gJ0B2ZWxvY2VhcHBzL2FwaSc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UsIFRvYXN0VHlwZSB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50QXR0YWNobWVudHMsXG4gIFRlbXBsYXRlQ29tcG9uZW50LFxuICBVSURlZmluaXRpb24sXG4gIFVJVGVtcGxhdGUsXG4gIFVJVGVtcGxhdGVDb21wb25lbnRUeXBlLFxuICBVSVRlbXBsYXRlVHlwZSxcbn0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5pbXBvcnQgeyBleHRlbmRFbGVtZW50TWV0YWRhdGEsIGV4dHJhY3RFbGVtZW50TWV0YWRhdGEgfSBmcm9tICdAdmVsb2NlYXBwcy9zZGsvY21zJztcbmltcG9ydCB7IENvbnRleHRTZXJ2aWNlLCBRdW90ZURyYWZ0U2VydmljZSB9IGZyb20gJ0B2ZWxvY2VhcHBzL3Nkay9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY2F0Y2hFcnJvciwgZmlyc3QsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIFN1YmplY3QsIHN3aXRjaE1hcCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZsb3dDdXN0b21pemF0aW9uLCBGTE9XX0NVU1RPTUlaQVRJT04gfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZsLWZsb3ctZG9jLWdlbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kb2MtZ2VuLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZG9jLWdlbi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRG9jR2VuQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHVibGljIHVpRGVmaW5pdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFVJRGVmaW5pdGlvbiB8IG51bGw+KG51bGwpO1xuXG4gIHByaXZhdGUgdGVtcGxhdGVBcGlOYW1lID0gJyc7XG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcXVvdGVEcmFmdFNlcnZpY2U6IFF1b3RlRHJhZnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgdGVtcGxhdGVzQXBpOiBVSVRlbXBsYXRlc0FwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEZMT1dfQ1VTVE9NSVpBVElPTikgcHJpdmF0ZSBjdXN0b21pemF0aW9uU2VydmljZT86IEZsb3dDdXN0b21pemF0aW9uLFxuICApIHtcbiAgICAvLyBpbml0aWFsaXplIHdoZW4gcXVvdGUgZHJhZnQgcmVxdWVzdGVkXG4gICAgdGhpcy5xdW90ZURyYWZ0U2VydmljZS5xdW90ZURyYWZ0JFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpcnN0KCksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLmluaXRpYWxpemUoKSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgdGhpcy50ZW1wbGF0ZUFwaU5hbWUgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmUoKS5wcm9wZXJ0aWVzLmRvY0dlblRlbXBsYXRlQXBpTmFtZSA/PyAnJztcblxuICAgIHRoaXMuZ2VuZXJhdGVVSURlZmluaXRpb24kKClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAodWlEZWYgPT4ge1xuICAgICAgICAgIGlmICghdWlEZWYpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tcG9uZW50IHdpdGggbmFtZSAnJHt0aGlzLnRlbXBsYXRlQXBpTmFtZX0nIG5vdCBmb3VuZC5gKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLnVpRGVmaW5pdGlvbiQubmV4dCh1aURlZik7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKGVyciA9PiB7XG4gICAgICAgICAgY29uc3QgbWVzc2FnZSA9ICdGYWlsZWQgdG8gcmVzb2x2ZSBEb2NHZW4gY29tcG9uZW50LiAnICsgKGVyci5tZXNzYWdlID8/ICcnKTtcbiAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5hZGQoeyBzZXZlcml0eTogVG9hc3RUeXBlLmVycm9yLCBzdW1tYXJ5OiBtZXNzYWdlLCBzdGlja3k6IHRydWUgfSk7XG4gICAgICAgICAgcmV0dXJuIG9mKCk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldFRlbXBsYXRlUm9vdENvbXBvbmVudCQodGVtcGxhdGU6IFVJVGVtcGxhdGUpOiBPYnNlcnZhYmxlPFRlbXBsYXRlQ29tcG9uZW50IHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMudGVtcGxhdGVzQXBpXG4gICAgICAuZmV0Y2hDb21wb25lbnRzJCh0ZW1wbGF0ZS5pZClcbiAgICAgIC5waXBlKG1hcChjb21wb25lbnRzID0+IGNvbXBvbmVudHMuZmluZChjID0+IGMudHlwZSA9PT0gVUlUZW1wbGF0ZUNvbXBvbmVudFR5cGUuUk9PVCkgPz8gdW5kZWZpbmVkKSk7XG4gIH1cblxuICBwcml2YXRlIGdldExvY2FsVGVtcGxhdGVDb21wb25lbnRNZXRhJCgpOiBPYnNlcnZhYmxlPENvbXBvbmVudEF0dGFjaG1lbnRzIHwgdW5kZWZpbmVkPiB7XG4gICAgaWYgKCF0aGlzLmN1c3RvbWl6YXRpb25TZXJ2aWNlPy5nZXRUZW1wbGF0ZUNvbXBvbmVudCkge1xuICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY3VzdG9taXphdGlvblNlcnZpY2U/LmdldFRlbXBsYXRlQ29tcG9uZW50KHRoaXMudGVtcGxhdGVBcGlOYW1lKS5waXBlKFxuICAgICAgbWFwKGNvbXBvbmVudCA9PiB7XG4gICAgICAgIGlmICghY29tcG9uZW50KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIDxDb21wb25lbnRBdHRhY2htZW50cz57XG4gICAgICAgICAgaHRtbDogY29tcG9uZW50Lmh0bWwsXG4gICAgICAgICAgY3NzOiBjb21wb25lbnQuY3NzLFxuICAgICAgICAgIGpzOiBjb21wb25lbnQuanMsXG4gICAgICAgICAganNvbjogY29tcG9uZW50Lmpzb24sXG4gICAgICAgIH07XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREb2NHZW5Db21wb25lbnRNZXRhJCgpOiBPYnNlcnZhYmxlPENvbXBvbmVudEF0dGFjaG1lbnRzIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMudGVtcGxhdGVzQXBpLmZldGNoVGVtcGxhdGVzJCgpLnBpcGUoXG4gICAgICBtYXA8VUlUZW1wbGF0ZVtdLCBVSVRlbXBsYXRlIHwgdW5kZWZpbmVkPih0ZW1wbGF0ZXMgPT4ge1xuICAgICAgICBjb25zdCB0ZW1wbGF0ZSA9IHRlbXBsYXRlcy5maW5kKFxuICAgICAgICAgIHRlbXBsYXRlID0+IHRlbXBsYXRlLnR5cGUgPT09IFVJVGVtcGxhdGVUeXBlLkRPQ0dFTiAmJiB0ZW1wbGF0ZS5uYW1lID09PSB0aGlzLnRlbXBsYXRlQXBpTmFtZSxcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHRlbXBsYXRlID8/IHRlbXBsYXRlc1swXTtcbiAgICAgIH0pLFxuICAgICAgc3dpdGNoTWFwKHRlbXBsYXRlID0+ICh0ZW1wbGF0ZSA/IHRoaXMuZ2V0VGVtcGxhdGVSb290Q29tcG9uZW50JCh0ZW1wbGF0ZSkgOiBvZih1bmRlZmluZWQpKSksXG4gICAgICBzd2l0Y2hNYXAoY29tcG9uZW50ID0+XG4gICAgICAgIGNvbXBvbmVudCA/IHRoaXMudGVtcGxhdGVzQXBpLmZldGNoQ29tcG9uZW50QXR0YWNobWVudHMkKGNvbXBvbmVudC51aVRlbXBsYXRlSWQsIGNvbXBvbmVudCkgOiBvZih1bmRlZmluZWQpLFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZVVJRGVmaW5pdGlvbiQoKTogT2JzZXJ2YWJsZTxVSURlZmluaXRpb24gfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gb2YodW5kZWZpbmVkKS5waXBlKFxuICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnRlbXBsYXRlQXBpTmFtZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkZsb3cgUXVlcnkgcGFyYW1ldGVyICdkb2NHZW5UZW1wbGF0ZUFwaU5hbWUnIGlzIG1pc3NpbmcuXCIpO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmdldExvY2FsVGVtcGxhdGVDb21wb25lbnRNZXRhJCgpKSxcbiAgICAgIHN3aXRjaE1hcChtZXRhID0+IChtZXRhID8gb2YobWV0YSkgOiB0aGlzLmdldERvY0dlbkNvbXBvbmVudE1ldGEkKCkpKSxcbiAgICAgIG1hcChtZXRhID0+IHtcbiAgICAgICAgaWYgKCFtZXRhKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaGVhZGVySWQgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmUoKS5wcm9wZXJ0aWVzLklkID8/IG51bGw7XG4gICAgICAgIGxldCBzY3JpcHQgPSBtZXRhLmpzO1xuXG4gICAgICAgIGlmIChzY3JpcHQpIHtcbiAgICAgICAgICBjb25zdCBtZXRhZGF0YSA9IGV4dHJhY3RFbGVtZW50TWV0YWRhdGEoc2NyaXB0KTtcbiAgICAgICAgICBzY3JpcHQgPSBleHRlbmRFbGVtZW50TWV0YWRhdGEoc2NyaXB0LCB7XG4gICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgLi4ubWV0YWRhdGEuaW5wdXRzLFxuICAgICAgICAgICAgICBJZDogaGVhZGVySWQgPyBgXCIke2hlYWRlcklkfVwiYCA6IG51bGwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdWlEZWY6IFVJRGVmaW5pdGlvbiA9IHtcbiAgICAgICAgICBuYW1lOiAnJyxcbiAgICAgICAgICBjcmVhdGVkVGltZXN0YW1wOiAwLFxuICAgICAgICAgIHByaW1hcnk6IHRydWUsXG4gICAgICAgICAgdHlwZTogJ0RFRkFVTFQnLFxuICAgICAgICAgIHZlcnNpb246IDIsXG4gICAgICAgICAgY2hpbGRyZW46IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICAgICAgICB0ZW1wbGF0ZTogbWV0YS5odG1sICYmIGJ0b2EobWV0YS5odG1sKSxcbiAgICAgICAgICAgICAgc2NyaXB0OiBzY3JpcHQgJiYgYnRvYShzY3JpcHQpLFxuICAgICAgICAgICAgICBzdHlsZXM6IG1ldGEuY3NzICYmIGJ0b2EobWV0YS5jc3MpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB1aURlZjtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJ1aURlZmluaXRpb24kIHwgYXN5bmMgYXMgdWlEZWZpbml0aW9uXCI+XG4gIDx2bC1jbXMtcHJldmlldyBbdWlEZWZpbml0aW9uXT1cInVpRGVmaW5pdGlvblwiPjwvdmwtY21zLXByZXZpZXc+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jLWdlbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9zcmMvY29tcG9uZW50cy9kb2MtZ2VuL2RvYy1nZW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvc3JjL2NvbXBvbmVudHMvZG9jLWdlbi9kb2MtZ2VuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFhLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpFLE9BQU8sRUFBRSxRQUFRLEVBQUUscUJBQXFCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5RixPQUFPLEVBQ0wsY0FBYyxFQUVkLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsa0JBQWtCLEdBQ25CLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUNMLGVBQWUsRUFDZixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxHQUFHLEVBRUgsRUFBRSxFQUNGLE9BQU8sRUFDUCxTQUFTLEVBQ1QsU0FBUyxFQUNULEdBQUcsR0FDSixNQUFNLE1BQU0sQ0FBQzs7Ozs7OztBQVFkLE1BQU0sT0FBTyxlQUFlO0lBTTFCLFlBQ1UsWUFBbUMsRUFDbkMsY0FBOEIsRUFDOUIsZ0JBQWtDLEVBQ2xDLFFBQXlCLEVBQ3pCLFlBQTBCLEVBQ2Msb0JBQXdDO1FBTGhGLGlCQUFZLEdBQVosWUFBWSxDQUF1QjtRQUNuQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxhQUFRLEdB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QUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJO3FCQUN0QztpQkFDRixDQUFDLENBQUM7Z0JBRUgsT0FBTztvQkFDTCxHQUFHLFNBQVM7b0JBQ1osRUFBRSxFQUFFLE1BQU07aUJBQ1gsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1lBRUgsTUFBTSxLQUFLLEdBQWlCO2dCQUMxQixJQUFJLEVBQUUsRUFBRTtnQkFDUixnQkFBZ0IsRUFBRSxDQUFDO2dCQUNuQixPQUFPLEVBQUUsSUFBSTtnQkFDYixJQUFJLEVBQUUsU0FBUztnQkFDZixPQUFPLEVBQUUsQ0FBQztnQkFDVixRQUFRLEVBQUUsZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ3RDLFFBQVEsRUFBRSxFQUFFO29CQUNaLFFBQVEsRUFBRSxLQUFLLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO29CQUM1QyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztvQkFDdEMsTUFBTSxFQUFFLEtBQUssQ0FBQyxHQUFHLElBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7aUJBQ3pDLENBQUMsQ0FBQzthQUNKLENBQUM7WUFFRixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOzs0R0F0SVUsZUFBZSxnTEFZSixrQkFBa0I7Z0dBWjdCLGVBQWUsdURDaEM1Qix3SkFHQTsyRkQ2QmEsZUFBZTtrQkFOM0IsU0FBUzsrQkFDRSxpQkFBaUIsbUJBR1YsdUJBQXVCLENBQUMsTUFBTTs7MEJBYzVDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5qZWN0LCBPbkRlc3Ryb3ksIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBVSVRlbXBsYXRlc0FwaVNlcnZpY2UgfSBmcm9tICdAdmVsb2NlYXBwcy9hcGknO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlLCBUb2FzdFR5cGUgfSBmcm9tICdAdmVsb2NlYXBwcy9jb21wb25lbnRzJztcbmltcG9ydCB7IENvbXBvbmVudEF0dGFjaG1lbnRzLCBVSURlZmluaXRpb24gfSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IGJ0b2FTYWZlLCBleHRlbmRFbGVtZW50TWV0YWRhdGEsIGV4dHJhY3RFbGVtZW50TWV0YWRhdGEgfSBmcm9tICdAdmVsb2NlYXBwcy9zZGsvY21zJztcbmltcG9ydCB7XG4gIENvbnRleHRTZXJ2aWNlLFxuICBGbG93Q3VzdG9taXphdGlvbixcbiAgRmxvd0luZm9TZXJ2aWNlLFxuICBGbG93U3RhdGVTZXJ2aWNlLFxuICBGTE9XX0NVU1RPTUlaQVRJT04sXG59IGZyb20gJ0B2ZWxvY2VhcHBzL3Nkay9jb3JlJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY2F0Y2hFcnJvcixcbiAgZmlsdGVyLFxuICBmaXJzdCxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgU3ViamVjdCxcbiAgc3dpdGNoTWFwLFxuICB0YWtlVW50aWwsXG4gIHRhcCxcbn0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZsLWZsb3ctZG9jLWdlbicsXG4gIHRlbXBsYXRlVXJsOiAnLi9kb2MtZ2VuLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZG9jLWdlbi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRG9jR2VuQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHVibGljIHVpRGVmaW5pdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFVJRGVmaW5pdGlvbiB8IG51bGw+KG51bGwpO1xuXG4gIHByaXZhdGUgdGVtcGxhdGVBcGlOYW1lID0gJyc7XG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdGVtcGxhdGVzQXBpOiBVSVRlbXBsYXRlc0FwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmbG93U3RhdGVTZXJ2aWNlOiBGbG93U3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmxvd0luZm86IEZsb3dJbmZvU2VydmljZSxcbiAgICBwcml2YXRlIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRkxPV19DVVNUT01JWkFUSU9OKSBwcml2YXRlIGN1c3RvbWl6YXRpb25TZXJ2aWNlPzogRmxvd0N1c3RvbWl6YXRpb24sXG4gICkge1xuICAgIC8vIHdhaXQgdW50aWwgZmxvdyBpcyBpbml0aWFsaXplZFxuICAgIHRoaXMuZmxvd1N0YXRlU2VydmljZVxuICAgICAgLmlzSW5pdGlhbGl6ZWQkKClcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoQm9vbGVhbiksXG4gICAgICAgIGZpcnN0KCksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLmluaXRpYWxpemUoKSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgdGhpcy50ZW1wbGF0ZUFwaU5hbWUgPSB0aGlzLmZsb3dJbmZvLmZsb3c/LnByb3BlcnRpZXMudGVtcGxhdGVzPy5kb2NHZW4gPz8gJyc7XG5cbiAgICB0aGlzLmdlbmVyYXRlVUlEZWZpbml0aW9uJCgpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKHVpRGVmID0+IHtcbiAgICAgICAgICBpZiAoIXVpRGVmKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbXBvbmVudCB3aXRoIG5hbWUgJyR7dGhpcy50ZW1wbGF0ZUFwaU5hbWV9JyBub3QgZm91bmQuYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy51aURlZmluaXRpb24kLm5leHQodWlEZWYpO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSAnRmFpbGVkIHRvIHJlc29sdmUgRG9jR2VuIGNvbXBvbmVudC4gJyArIChlcnIubWVzc2FnZSA/PyAnJyk7XG4gICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6IFRvYXN0VHlwZS5lcnJvciwgc3VtbWFyeTogbWVzc2FnZSwgc3RpY2t5OiB0cnVlIH0pO1xuICAgICAgICAgIHJldHVybiBvZigpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMb2NhbE1ldGEkKCk6IE9ic2VydmFibGU8Q29tcG9uZW50QXR0YWNobWVudHNbXSB8IHVuZGVmaW5lZD4ge1xuICAgIGlmICghdGhpcy5jdXN0b21pemF0aW9uU2VydmljZT8uZ2V0VGVtcGxhdGVDb21wb25lbnRzKSB7XG4gICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jdXN0b21pemF0aW9uU2VydmljZT8uZ2V0VGVtcGxhdGVDb21wb25lbnRzKHRoaXMudGVtcGxhdGVBcGlOYW1lKS5waXBlKFxuICAgICAgbWFwKGNvbXBvbmVudHMgPT4ge1xuICAgICAgICBpZiAoIWNvbXBvbmVudHMpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29tcG9uZW50cy5tYXA8Q29tcG9uZW50QXR0YWNobWVudHM+KGNvbXBvbmVudCA9PiAoe1xuICAgICAgICAgIGh0bWw6IGNvbXBvbmVudC5odG1sLFxuICAgICAgICAgIGNzczogY29tcG9uZW50LmNzcyxcbiAgICAgICAgICBqczogY29tcG9uZW50LmpzLFxuICAgICAgICAgIGpzb246IGNvbXBvbmVudC5qc29uLFxuICAgICAgICB9KSk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRPcmdNZXRhJCgpOiBPYnNlcnZhYmxlPENvbXBvbmVudEF0dGFjaG1lbnRzW10gfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCB0ZW1wbGF0ZSA9IHRoaXMuZmxvd0luZm8udGVtcGxhdGVzLkRPQ0dFTjtcbiAgICBpZiAoIXRlbXBsYXRlKSB7XG4gICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZXNBcGkuZmV0Y2hDb21wb25lbnRzQXR0YWNobWVudHMkKHRlbXBsYXRlLmlkKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVVSURlZmluaXRpb24kKCk6IE9ic2VydmFibGU8VUlEZWZpbml0aW9uIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIG9mKHVuZGVmaW5lZCkucGlwZShcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy50ZW1wbGF0ZUFwaU5hbWUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGbG93ICdkb2NHZW4nIHRlbXBsYXRlIGlzIG5vdCBkZWZpbmVkLlwiKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5nZXRMb2NhbE1ldGEkKCkpLFxuICAgICAgc3dpdGNoTWFwKG1ldGFMaXN0ID0+IChtZXRhTGlzdCA/IG9mKG1ldGFMaXN0KSA6IHRoaXMuZ2V0T3JnTWV0YSQoKSkpLFxuICAgICAgbWFwKG1ldGFMaXN0ID0+IHtcbiAgICAgICAgaWYgKCFtZXRhTGlzdCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGhlYWRlcklkID0gdGhpcy5jb250ZXh0U2VydmljZS5yZXNvbHZlKCkucHJvcGVydGllcy5JZCA/PyBudWxsO1xuICAgICAgICBjb25zdCBwYXRjaGVkTWV0YUxpc3QgPSBtZXRhTGlzdC5tYXAoY29tcG9uZW50ID0+IHtcbiAgICAgICAgICBpZiAoIWNvbXBvbmVudC5qcykge1xuICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBtZXRhZGF0YSA9IGV4dHJhY3RFbGVtZW50TWV0YWRhdGEoY29tcG9uZW50LmpzKTtcbiAgICAgICAgICBjb25zdCBzY3JpcHQgPSBleHRlbmRFbGVtZW50TWV0YWRhdGEoY29tcG9uZW50LmpzLCB7XG4gICAgICAgICAgICBpbnB1dHM6IHtcbiAgICAgICAgICAgICAgLi4ubWV0YWRhdGEuaW5wdXRzLFxuICAgICAgICAgICAgICBJZDogaGVhZGVySWQgPyBgXCIke2hlYWRlcklkfVwiYCA6IG51bGwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmNvbXBvbmVudCxcbiAgICAgICAgICAgIGpzOiBzY3JpcHQsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgdWlEZWY6IFVJRGVmaW5pdGlvbiA9IHtcbiAgICAgICAgICBuYW1lOiAnJyxcbiAgICAgICAgICBjcmVhdGVkVGltZXN0YW1wOiAwLFxuICAgICAgICAgIHByaW1hcnk6IHRydWUsXG4gICAgICAgICAgdHlwZTogJ0RFRkFVTFQnLFxuICAgICAgICAgIHZlcnNpb246IDIsXG4gICAgICAgICAgY2hpbGRyZW46IHBhdGNoZWRNZXRhTGlzdC5tYXAoY2hpbGQgPT4gKHtcbiAgICAgICAgICAgIGNoaWxkcmVuOiBbXSxcbiAgICAgICAgICAgIHRlbXBsYXRlOiBjaGlsZC5odG1sICYmIGJ0b2FTYWZlKGNoaWxkLmh0bWwpLFxuICAgICAgICAgICAgc2NyaXB0OiBjaGlsZC5qcyAmJiBidG9hU2FmZShjaGlsZC5qcyksXG4gICAgICAgICAgICBzdHlsZXM6IGNoaWxkLmNzcyAmJiBidG9hU2FmZShjaGlsZC5jc3MpLFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gdWlEZWY7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwidWlEZWZpbml0aW9uJCB8IGFzeW5jIGFzIHVpRGVmaW5pdGlvblwiPlxuICA8dmwtY21zLXByZXZpZXcgW3VpRGVmaW5pdGlvbl09XCJ1aURlZmluaXRpb25cIj48L3ZsLWNtcy1wcmV2aWV3PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -0,0 +1,108 @@
1
+ import { ChangeDetectionStrategy, Component, Inject, Optional } from '@angular/core';
2
+ import { UITemplatesApiService } from '@veloceapps/api';
3
+ import { ToastService, ToastType } from '@veloceapps/components';
4
+ import { btoaSafe } from '@veloceapps/sdk/cms';
5
+ import { FlowInfoService, FlowStateService, FLOW_CUSTOMIZATION } from '@veloceapps/sdk/core';
6
+ import { BehaviorSubject, catchError, filter, first, map, of, Subject, switchMap, takeUntil, tap, } from 'rxjs';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@veloceapps/api";
9
+ import * as i2 from "@veloceapps/sdk/core";
10
+ import * as i3 from "@veloceapps/components";
11
+ import * as i4 from "@angular/common";
12
+ import * as i5 from "@veloceapps/sdk/cms";
13
+ export class FlowHeaderComponent {
14
+ constructor(templatesApi, flowStateService, flowInfo, toastService, customizationService) {
15
+ this.templatesApi = templatesApi;
16
+ this.flowStateService = flowStateService;
17
+ this.flowInfo = flowInfo;
18
+ this.toastService = toastService;
19
+ this.customizationService = customizationService;
20
+ this.uiDefinition$ = new BehaviorSubject(null);
21
+ this.templateApiName = '';
22
+ this.destroy$ = new Subject();
23
+ // wait until flow is initialized
24
+ this.flowStateService
25
+ .isInitialized$()
26
+ .pipe(filter(Boolean), first(), tap(() => this.initialize()), takeUntil(this.destroy$))
27
+ .subscribe();
28
+ }
29
+ ngOnDestroy() {
30
+ this.destroy$.next();
31
+ this.destroy$.complete();
32
+ }
33
+ initialize() {
34
+ this.templateApiName = this.flowInfo.flow?.properties.templates?.flowHeader ?? '';
35
+ this.generateUIDefinition$()
36
+ .pipe(tap(uiDef => {
37
+ if (!uiDef) {
38
+ throw new Error(`Component with name '${this.templateApiName}' not found.`);
39
+ }
40
+ this.uiDefinition$.next(uiDef);
41
+ }), catchError(err => {
42
+ const message = 'Failed to resolve Flow Header component. ' + (err.message ?? '');
43
+ this.toastService.add({ severity: ToastType.error, summary: message, sticky: true });
44
+ return of();
45
+ }), takeUntil(this.destroy$))
46
+ .subscribe();
47
+ }
48
+ getLocalMeta$() {
49
+ if (!this.customizationService?.getTemplateComponents) {
50
+ return of(undefined);
51
+ }
52
+ return this.customizationService?.getTemplateComponents(this.templateApiName).pipe(map(components => {
53
+ if (!components) {
54
+ return;
55
+ }
56
+ return components.map(component => ({
57
+ html: component.html,
58
+ css: component.css,
59
+ js: component.js,
60
+ json: component.json,
61
+ }));
62
+ }));
63
+ }
64
+ getOrgMeta$() {
65
+ const template = this.flowInfo.templates.FLOW_HEADER;
66
+ if (!template) {
67
+ return of(undefined);
68
+ }
69
+ return this.templatesApi.fetchComponentsAttachments$(template.id);
70
+ }
71
+ generateUIDefinition$() {
72
+ return of(undefined).pipe(tap(() => {
73
+ if (!this.templateApiName) {
74
+ throw new Error("Flow 'flowHeader' template is not defined.");
75
+ }
76
+ }), switchMap(() => this.getLocalMeta$()), switchMap(metaList => (metaList ? of(metaList) : this.getOrgMeta$())), map(metaList => {
77
+ if (!metaList) {
78
+ return;
79
+ }
80
+ const uiDef = {
81
+ name: '',
82
+ createdTimestamp: 0,
83
+ primary: true,
84
+ type: 'DEFAULT',
85
+ version: 2,
86
+ children: metaList.map(meta => ({
87
+ children: [],
88
+ template: meta.html && btoaSafe(meta.html),
89
+ script: meta.js && btoaSafe(meta.js),
90
+ styles: meta.css && btoaSafe(meta.css),
91
+ })),
92
+ };
93
+ return uiDef;
94
+ }));
95
+ }
96
+ }
97
+ FlowHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowHeaderComponent, deps: [{ token: i1.UITemplatesApiService }, { token: i2.FlowStateService }, { token: i2.FlowInfoService }, { token: i3.ToastService }, { token: FLOW_CUSTOMIZATION, optional: true }], target: i0.ɵɵFactoryTarget.Component });
98
+ FlowHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: FlowHeaderComponent, selector: "vl-flow-new-header", ngImport: i0, template: "<ng-container *ngIf=\"uiDefinition$ | async as uiDefinition\">\n <vl-cms-preview [uiDefinition]=\"uiDefinition\"></vl-cms-preview>\n</ng-container>\n", styles: [":host,vl-cms-preview{display:contents}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.PreviewComponent, selector: "vl-cms-preview", inputs: ["uiDefinition", "config"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
99
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowHeaderComponent, decorators: [{
100
+ type: Component,
101
+ args: [{ selector: 'vl-flow-new-header', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"uiDefinition$ | async as uiDefinition\">\n <vl-cms-preview [uiDefinition]=\"uiDefinition\"></vl-cms-preview>\n</ng-container>\n", styles: [":host,vl-cms-preview{display:contents}\n"] }]
102
+ }], ctorParameters: function () { return [{ type: i1.UITemplatesApiService }, { type: i2.FlowStateService }, { type: i2.FlowInfoService }, { type: i3.ToastService }, { type: undefined, decorators: [{
103
+ type: Optional
104
+ }, {
105
+ type: Inject,
106
+ args: [FLOW_CUSTOMIZATION]
107
+ }] }]; } });
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvc3JjL2NvbXBvbmVudHMvZmxvdy1oZWFkZXIvZmxvdy1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvc3JjL2NvbXBvbmVudHMvZmxvdy1oZWFkZXIvZmxvdy1oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQWEsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFakUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQy9DLE9BQU8sRUFBcUIsZUFBZSxFQUFFLGdCQUFnQixFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDaEgsT0FBTyxFQUNMLGVBQWUsRUFDZixVQUFVLEVBQ1YsTUFBTSxFQUNOLEtBQUssRUFDTCxHQUFHLEVBRUgsRUFBRSxFQUNGLE9BQU8sRUFDUCxTQUFTLEVBQ1QsU0FBUyxFQUNULEdBQUcsR0FDSixNQUFNLE1BQU0sQ0FBQzs7Ozs7OztBQVFkLE1BQU0sT0FBTyxtQkFBbUI7SUFNOUIsWUFDVSxZQUFtQyxFQUNuQyxnQkFBa0MsRUFDbEMsUUFBeUIsRUFDekIsWUFBMEIsRUFDYyxvQkFBd0M7UUFKaEYsaUJBQVksR0FBWixZQUFZLENBQXVCO1FBQ25DLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDYyx5QkFBb0Is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O2FBQ0osQ0FBQztZQUVGLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7O2dIQWpIVSxtQkFBbUIsa0pBV1Isa0JBQWtCO29HQVg3QixtQkFBbUIsMERDMUJoQyx3SkFHQTsyRkR1QmEsbUJBQW1CO2tCQU4vQixTQUFTOytCQUNFLG9CQUFvQixtQkFHYix1QkFBdUIsQ0FBQyxNQUFNOzswQkFhNUMsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbmplY3QsIE9uRGVzdHJveSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVJVGVtcGxhdGVzQXBpU2VydmljZSB9IGZyb20gJ0B2ZWxvY2VhcHBzL2FwaSc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UsIFRvYXN0VHlwZSB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50QXR0YWNobWVudHMsIFVJRGVmaW5pdGlvbiB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgYnRvYVNhZmUgfSBmcm9tICdAdmVsb2NlYXBwcy9zZGsvY21zJztcbmltcG9ydCB7IEZsb3dDdXN0b21pemF0aW9uLCBGbG93SW5mb1NlcnZpY2UsIEZsb3dTdGF0ZVNlcnZpY2UsIEZMT1dfQ1VTVE9NSVpBVElPTiB9IGZyb20gJ0B2ZWxvY2VhcHBzL3Nkay9jb3JlJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY2F0Y2hFcnJvcixcbiAgZmlsdGVyLFxuICBmaXJzdCxcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgU3ViamVjdCxcbiAgc3dpdGNoTWFwLFxuICB0YWtlVW50aWwsXG4gIHRhcCxcbn0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZsLWZsb3ctbmV3LWhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9mbG93LWhlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zsb3ctaGVhZGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBGbG93SGVhZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHVibGljIHVpRGVmaW5pdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFVJRGVmaW5pdGlvbiB8IG51bGw+KG51bGwpO1xuXG4gIHByaXZhdGUgdGVtcGxhdGVBcGlOYW1lID0gJyc7XG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdGVtcGxhdGVzQXBpOiBVSVRlbXBsYXRlc0FwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmbG93U3RhdGVTZXJ2aWNlOiBGbG93U3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmxvd0luZm86IEZsb3dJbmZvU2VydmljZSxcbiAgICBwcml2YXRlIHRvYXN0U2VydmljZTogVG9hc3RTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRkxPV19DVVNUT01JWkFUSU9OKSBwcml2YXRlIGN1c3RvbWl6YXRpb25TZXJ2aWNlPzogRmxvd0N1c3RvbWl6YXRpb24sXG4gICkge1xuICAgIC8vIHdhaXQgdW50aWwgZmxvdyBpcyBpbml0aWFsaXplZFxuICAgIHRoaXMuZmxvd1N0YXRlU2VydmljZVxuICAgICAgLmlzSW5pdGlhbGl6ZWQkKClcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoQm9vbGVhbiksXG4gICAgICAgIGZpcnN0KCksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLmluaXRpYWxpemUoKSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgdGhpcy50ZW1wbGF0ZUFwaU5hbWUgPSB0aGlzLmZsb3dJbmZvLmZsb3c/LnByb3BlcnRpZXMudGVtcGxhdGVzPy5mbG93SGVhZGVyID8/ICcnO1xuXG4gICAgdGhpcy5nZW5lcmF0ZVVJRGVmaW5pdGlvbiQoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCh1aURlZiA9PiB7XG4gICAgICAgICAgaWYgKCF1aURlZikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb21wb25lbnQgd2l0aCBuYW1lICcke3RoaXMudGVtcGxhdGVBcGlOYW1lfScgbm90IGZvdW5kLmApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMudWlEZWZpbml0aW9uJC5uZXh0KHVpRGVmKTtcbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gJ0ZhaWxlZCB0byByZXNvbHZlIEZsb3cgSGVhZGVyIGNvbXBvbmVudC4gJyArIChlcnIubWVzc2FnZSA/PyAnJyk7XG4gICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6IFRvYXN0VHlwZS5lcnJvciwgc3VtbWFyeTogbWVzc2FnZSwgc3RpY2t5OiB0cnVlIH0pO1xuICAgICAgICAgIHJldHVybiBvZigpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMb2NhbE1ldGEkKCk6IE9ic2VydmFibGU8Q29tcG9uZW50QXR0YWNobWVudHNbXSB8IHVuZGVmaW5lZD4ge1xuICAgIGlmICghdGhpcy5jdXN0b21pemF0aW9uU2VydmljZT8uZ2V0VGVtcGxhdGVDb21wb25lbnRzKSB7XG4gICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jdXN0b21pemF0aW9uU2VydmljZT8uZ2V0VGVtcGxhdGVDb21wb25lbnRzKHRoaXMudGVtcGxhdGVBcGlOYW1lKS5waXBlKFxuICAgICAgbWFwKGNvbXBvbmVudHMgPT4ge1xuICAgICAgICBpZiAoIWNvbXBvbmVudHMpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29tcG9uZW50cy5tYXA8Q29tcG9uZW50QXR0YWNobWVudHM+KGNvbXBvbmVudCA9PiAoe1xuICAgICAgICAgIGh0bWw6IGNvbXBvbmVudC5odG1sLFxuICAgICAgICAgIGNzczogY29tcG9uZW50LmNzcyxcbiAgICAgICAgICBqczogY29tcG9uZW50LmpzLFxuICAgICAgICAgIGpzb246IGNvbXBvbmVudC5qc29uLFxuICAgICAgICB9KSk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRPcmdNZXRhJCgpOiBPYnNlcnZhYmxlPENvbXBvbmVudEF0dGFjaG1lbnRzW10gfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCB0ZW1wbGF0ZSA9IHRoaXMuZmxvd0luZm8udGVtcGxhdGVzLkZMT1dfSEVBREVSO1xuICAgIGlmICghdGVtcGxhdGUpIHtcbiAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnRlbXBsYXRlc0FwaS5mZXRjaENvbXBvbmVudHNBdHRhY2htZW50cyQodGVtcGxhdGUuaWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZVVJRGVmaW5pdGlvbiQoKTogT2JzZXJ2YWJsZTxVSURlZmluaXRpb24gfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gb2YodW5kZWZpbmVkKS5waXBlKFxuICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnRlbXBsYXRlQXBpTmFtZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkZsb3cgJ2Zsb3dIZWFkZXInIHRlbXBsYXRlIGlzIG5vdCBkZWZpbmVkLlwiKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5nZXRMb2NhbE1ldGEkKCkpLFxuICAgICAgc3dpdGNoTWFwKG1ldGFMaXN0ID0+IChtZXRhTGlzdCA/IG9mKG1ldGFMaXN0KSA6IHRoaXMuZ2V0T3JnTWV0YSQoKSkpLFxuICAgICAgbWFwKG1ldGFMaXN0ID0+IHtcbiAgICAgICAgaWYgKCFtZXRhTGlzdCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHVpRGVmOiBVSURlZmluaXRpb24gPSB7XG4gICAgICAgICAgbmFtZTogJycsXG4gICAgICAgICAgY3JlYXRlZFRpbWVzdGFtcDogMCxcbiAgICAgICAgICBwcmltYXJ5OiB0cnVlLFxuICAgICAgICAgIHR5cGU6ICdERUZBVUxUJyxcbiAgICAgICAgICB2ZXJzaW9uOiAyLFxuICAgICAgICAgIGNoaWxkcmVuOiBtZXRhTGlzdC5tYXAobWV0YSA9PiAoe1xuICAgICAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICAgICAgdGVtcGxhdGU6IG1ldGEuaHRtbCAmJiBidG9hU2FmZShtZXRhLmh0bWwpLFxuICAgICAgICAgICAgc2NyaXB0OiBtZXRhLmpzICYmIGJ0b2FTYWZlKG1ldGEuanMpLFxuICAgICAgICAgICAgc3R5bGVzOiBtZXRhLmNzcyAmJiBidG9hU2FmZShtZXRhLmNzcyksXG4gICAgICAgICAgfSkpLFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB1aURlZjtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJ1aURlZmluaXRpb24kIHwgYXN5bmMgYXMgdWlEZWZpbml0aW9uXCI+XG4gIDx2bC1jbXMtcHJldmlldyBbdWlEZWZpbml0aW9uXT1cInVpRGVmaW5pdGlvblwiPjwvdmwtY21zLXByZXZpZXc+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -0,0 +1,19 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { PreviewModule } from '@veloceapps/sdk/cms';
4
+ import { FlowHeaderComponent } from './flow-header.component';
5
+ import * as i0 from "@angular/core";
6
+ export class FlowNewHeaderModule {
7
+ }
8
+ FlowNewHeaderModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowNewHeaderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
+ FlowNewHeaderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: FlowNewHeaderModule, declarations: [FlowHeaderComponent], imports: [CommonModule, PreviewModule], exports: [FlowHeaderComponent] });
10
+ FlowNewHeaderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowNewHeaderModule, imports: [CommonModule, PreviewModule] });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowNewHeaderModule, decorators: [{
12
+ type: NgModule,
13
+ args: [{
14
+ declarations: [FlowHeaderComponent],
15
+ imports: [CommonModule, PreviewModule],
16
+ exports: [FlowHeaderComponent],
17
+ }]
18
+ }] });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1oZWFkZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvc3JjL2NvbXBvbmVudHMvZmxvdy1oZWFkZXIvZmxvdy1oZWFkZXIubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFPOUQsTUFBTSxPQUFPLG1CQUFtQjs7Z0hBQW5CLG1CQUFtQjtpSEFBbkIsbUJBQW1CLGlCQUpmLG1CQUFtQixhQUN4QixZQUFZLEVBQUUsYUFBYSxhQUMzQixtQkFBbUI7aUhBRWxCLG1CQUFtQixZQUhwQixZQUFZLEVBQUUsYUFBYTsyRkFHMUIsbUJBQW1CO2tCQUwvQixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLG1CQUFtQixDQUFDO29CQUNuQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDO29CQUN0QyxPQUFPLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztpQkFDL0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByZXZpZXdNb2R1bGUgfSBmcm9tICdAdmVsb2NlYXBwcy9zZGsvY21zJztcbmltcG9ydCB7IEZsb3dIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL2Zsb3ctaGVhZGVyLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0Zsb3dIZWFkZXJDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBQcmV2aWV3TW9kdWxlXSxcbiAgZXhwb3J0czogW0Zsb3dIZWFkZXJDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBGbG93TmV3SGVhZGVyTW9kdWxlIHt9XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './flow-header.module';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9zcmMvY29tcG9uZW50cy9mbG93LWhlYWRlci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9mbG93LWhlYWRlci5tb2R1bGUnO1xuIl19