@veloceapps/sdk 12.0.0-18 → 12.0.0-19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (348) hide show
  1. package/cms/cms.actions.d.ts +154 -0
  2. package/cms/cms.default.d.ts +5 -0
  3. package/cms/cms.elements.d.ts +4 -0
  4. package/cms/cms.layouts.d.ts +4 -0
  5. package/cms/components/element-children/element-children.component.d.ts +22 -0
  6. package/cms/components/element-children/element-children.module.d.ts +11 -0
  7. package/cms/components/element-drop-handle/element-drop-handle.component.d.ts +12 -0
  8. package/cms/components/element-drop-handle/element-drop-handle.module.d.ts +9 -0
  9. package/cms/components/element-renderer/element-renderer.component.d.ts +29 -0
  10. package/cms/components/element-renderer/element-renderer.module.d.ts +7 -0
  11. package/cms/components/element-tools-panel/element-tools-panel.component.d.ts +14 -0
  12. package/cms/components/element.component.d.ts +17 -0
  13. package/cms/components/index.d.ts +1 -0
  14. package/cms/components/plugin.component.d.ts +15 -0
  15. package/cms/components/preview/index.d.ts +3 -0
  16. package/cms/components/preview/preview.component.d.ts +32 -0
  17. package/cms/components/preview/preview.module.d.ts +13 -0
  18. package/cms/components/preview/preview.types.d.ts +20 -0
  19. package/cms/decorators/element.decorator.d.ts +2 -0
  20. package/cms/decorators/index.d.ts +1 -0
  21. package/cms/definitions/index.d.ts +1 -0
  22. package/cms/definitions/ui-builder.definitions.d.ts +6 -0
  23. package/cms/directives/custom-template.directive.d.ts +17 -0
  24. package/cms/engine/models/entity.d.ts +11 -0
  25. package/cms/engine/models/plugin.d.ts +5 -0
  26. package/cms/index.d.ts +15 -921
  27. package/cms/injection-tokens.d.ts +9 -0
  28. package/cms/launcher.module.d.ts +12 -0
  29. package/cms/modules/federated/default-options.d.ts +4 -0
  30. package/cms/modules/federated/export.d.ts +1 -0
  31. package/cms/modules/federated/federated-host.directive.d.ts +8 -0
  32. package/cms/modules/federated/federated.component.d.ts +25 -0
  33. package/cms/modules/federated/federated.module.d.ts +10 -0
  34. package/cms/modules/federated/federated.types.d.ts +26 -0
  35. package/cms/modules/migrations/index.d.ts +2 -0
  36. package/cms/modules/migrations/migrations.d.ts +2 -0
  37. package/cms/modules/migrations/migrations.module.d.ts +6 -0
  38. package/cms/modules/migrations/services/migrations.service.d.ts +10 -0
  39. package/cms/modules/migrations/types/migrations.types.d.ts +2 -0
  40. package/cms/modules/runtime/index.d.ts +3 -0
  41. package/cms/modules/runtime/runtime.module.d.ts +8 -0
  42. package/cms/modules/runtime/services/compilation.service.d.ts +19 -0
  43. package/cms/modules/runtime/services/runtime-editor.service.d.ts +20 -0
  44. package/cms/modules/runtime/services/runtime.service.d.ts +33 -0
  45. package/cms/modules/runtime/tokens.d.ts +3 -0
  46. package/cms/modules/runtime/types/compilation.types.d.ts +8 -0
  47. package/cms/modules/runtime/types/runtime.actions.d.ts +12 -0
  48. package/cms/plugins/element-hover.plugin.d.ts +33 -0
  49. package/cms/plugins/io.plugin.d.ts +9 -0
  50. package/cms/plugins/page.plugin.d.ts +15 -0
  51. package/cms/plugins/region.plugin.d.ts +17 -0
  52. package/cms/plugins/script.plugin.d.ts +10 -0
  53. package/cms/services/element-context.service.d.ts +7 -0
  54. package/cms/services/index.d.ts +2 -0
  55. package/cms/services/io-provider.service.d.ts +15 -0
  56. package/cms/services/resources.service.d.ts +21 -0
  57. package/cms/services/templates.service.d.ts +14 -0
  58. package/cms/types/common.types.d.ts +130 -0
  59. package/cms/types/elements.types.d.ts +2 -0
  60. package/cms/types/index.d.ts +6 -0
  61. package/cms/types/layouts.types.d.ts +102 -0
  62. package/cms/types/pages.types.d.ts +1 -0
  63. package/cms/types/path.types.d.ts +11 -0
  64. package/cms/utils/element-metadata-worker.d.ts +11 -0
  65. package/cms/utils/element.utils.d.ts +20 -0
  66. package/cms/utils/elements-resolver.d.ts +28 -0
  67. package/cms/utils/encoding.utils.d.ts +2 -0
  68. package/cms/utils/index.d.ts +9 -0
  69. package/cms/utils/inject.d.ts +1 -0
  70. package/cms/utils/path.utils.d.ts +3 -0
  71. package/cms/utils/script.utils.d.ts +2 -0
  72. package/cms/utils/transpilation-worker.d.ts +13 -0
  73. package/cms/utils/ui-builder-layout.utils.d.ts +4 -0
  74. package/cms/utils/ui-definition.utils.d.ts +6 -0
  75. package/cms/vendor-map.d.ts +86 -0
  76. package/core/core.module.d.ts +10 -0
  77. package/core/directives/directives.module.d.ts +7 -0
  78. package/core/directives/index.d.ts +2 -0
  79. package/core/directives/primeng-calendar.directive.d.ts +14 -0
  80. package/core/index.d.ts +8 -527
  81. package/core/modules/configuration/configuration.module.d.ts +8 -0
  82. package/core/modules/configuration/index.d.ts +6 -0
  83. package/core/modules/configuration/services/configuration-runtime.service.d.ts +17 -0
  84. package/core/modules/configuration/services/configuration-state.service.d.ts +60 -0
  85. package/core/modules/configuration/services/configuration.service.d.ts +36 -0
  86. package/core/modules/configuration/services/guided-selling.service.d.ts +15 -0
  87. package/core/modules/configuration/services/test-mode-configuration.service.d.ts +26 -0
  88. package/core/modules/configuration/types/configuration-runtime.types.d.ts +3 -0
  89. package/core/modules/configuration/types/configuration.types.d.ts +20 -0
  90. package/core/modules/configuration/types/index.d.ts +2 -0
  91. package/core/modules/flow-configuration/flow-configuration.module.d.ts +7 -0
  92. package/core/modules/flow-configuration/index.d.ts +1 -0
  93. package/core/modules/flow-configuration/services/flow-configuration.service.d.ts +23 -0
  94. package/core/modules/index.d.ts +2 -0
  95. package/core/operators/filter-successful-execute.operator.d.ts +3 -0
  96. package/core/operators/index.d.ts +1 -0
  97. package/core/pipes/action-code.pipe.d.ts +8 -0
  98. package/core/pipes/date.pipe.d.ts +13 -0
  99. package/core/pipes/index.d.ts +5 -0
  100. package/core/pipes/number.pipe.d.ts +10 -0
  101. package/core/pipes/pipes.module.d.ts +10 -0
  102. package/core/pipes/price.pipe.d.ts +10 -0
  103. package/core/services/catalog-products.service.d.ts +11 -0
  104. package/core/services/flow-info.service.d.ts +44 -0
  105. package/core/services/flow-state-configuration.service.d.ts +25 -0
  106. package/core/services/flow-state.service.d.ts +70 -0
  107. package/core/services/index.d.ts +8 -0
  108. package/core/services/integration.state.d.ts +16 -0
  109. package/core/services/product-images.service.d.ts +12 -0
  110. package/core/services/runtime-settings.service.d.ts +24 -0
  111. package/core/services/sales-transaction.service.d.ts +27 -0
  112. package/core/types/flow-customization.types.d.ts +10 -0
  113. package/core/types/flow-state.types.d.ts +12 -0
  114. package/core/types/formatting-settings.types.d.ts +13 -0
  115. package/core/types/index.d.ts +5 -0
  116. package/core/types/integration.types.d.ts +10 -0
  117. package/core/types/pipe.types.d.ts +1 -0
  118. package/core/types/ui-definition.types.d.ts +1 -0
  119. package/core/utils/index.d.ts +4 -0
  120. package/core/utils/pcm.utils.d.ts +5 -0
  121. package/core/utils/transaction-item.utils.d.ts +10 -0
  122. package/core/utils/transaction-item.worker.d.ts +8 -0
  123. package/core/utils/ui-definition.utils.d.ts +2 -0
  124. package/esm2020/cms/cms.actions.mjs +151 -0
  125. package/esm2020/cms/cms.default.mjs +5 -0
  126. package/esm2020/cms/cms.elements.mjs +52 -0
  127. package/esm2020/cms/cms.layouts.mjs +239 -0
  128. package/esm2020/cms/components/element-children/element-children.component.mjs +41 -0
  129. package/esm2020/cms/components/element-children/element-children.module.mjs +21 -0
  130. package/esm2020/cms/components/element-drop-handle/element-drop-handle.component.mjs +28 -0
  131. package/esm2020/cms/components/element-drop-handle/element-drop-handle.module.mjs +19 -0
  132. package/esm2020/cms/components/element-renderer/element-renderer.component.mjs +117 -0
  133. package/esm2020/cms/components/element-renderer/element-renderer.module.mjs +16 -0
  134. package/esm2020/cms/components/element-tools-panel/element-tools-panel.component.mjs +35 -0
  135. package/esm2020/cms/components/element.component.mjs +45 -0
  136. package/esm2020/cms/components/index.mjs +2 -0
  137. package/esm2020/cms/components/plugin.component.mjs +17 -0
  138. package/esm2020/cms/components/preview/index.mjs +4 -0
  139. package/esm2020/cms/components/preview/preview.component.mjs +75 -0
  140. package/esm2020/cms/components/preview/preview.module.mjs +42 -0
  141. package/esm2020/cms/components/preview/preview.types.mjs +2 -0
  142. package/esm2020/cms/decorators/element.decorator.mjs +6 -0
  143. package/esm2020/cms/decorators/index.mjs +2 -0
  144. package/esm2020/cms/definitions/index.mjs +2 -0
  145. package/esm2020/cms/definitions/ui-builder.definitions.mjs +18 -0
  146. package/esm2020/cms/directives/custom-template.directive.mjs +38 -0
  147. package/esm2020/cms/engine/models/entity.mjs +17 -0
  148. package/esm2020/cms/engine/models/plugin.mjs +6 -0
  149. package/esm2020/cms/index.mjs +16 -0
  150. package/esm2020/cms/injection-tokens.mjs +7 -0
  151. package/esm2020/cms/launcher.module.mjs +24 -0
  152. package/esm2020/cms/modules/federated/default-options.mjs +5 -0
  153. package/esm2020/cms/modules/federated/export.mjs +2 -0
  154. package/esm2020/cms/modules/federated/federated-host.directive.mjs +16 -0
  155. package/esm2020/cms/modules/federated/federated.component.mjs +74 -0
  156. package/esm2020/cms/modules/federated/federated.module.mjs +20 -0
  157. package/esm2020/cms/modules/federated/federated.types.mjs +2 -0
  158. package/esm2020/cms/modules/migrations/index.mjs +3 -0
  159. package/esm2020/cms/modules/migrations/migrations.mjs +22 -0
  160. package/esm2020/cms/modules/migrations/migrations.module.mjs +15 -0
  161. package/esm2020/cms/modules/migrations/services/migrations.service.mjs +47 -0
  162. package/esm2020/cms/modules/migrations/types/migrations.types.mjs +2 -0
  163. package/esm2020/cms/modules/runtime/index.mjs +4 -0
  164. package/esm2020/cms/modules/runtime/runtime.module.mjs +32 -0
  165. package/esm2020/cms/modules/runtime/services/compilation.service.mjs +93 -0
  166. package/esm2020/cms/modules/runtime/services/runtime-editor.service.mjs +30 -0
  167. package/esm2020/cms/modules/runtime/services/runtime.service.mjs +117 -0
  168. package/esm2020/cms/modules/runtime/tokens.mjs +3 -0
  169. package/esm2020/cms/modules/runtime/types/compilation.types.mjs +2 -0
  170. package/esm2020/cms/modules/runtime/types/runtime.actions.mjs +2 -0
  171. package/esm2020/cms/plugins/element-hover.plugin.mjs +121 -0
  172. package/esm2020/cms/plugins/io.plugin.mjs +45 -0
  173. package/esm2020/cms/plugins/page.plugin.mjs +37 -0
  174. package/esm2020/cms/plugins/region.plugin.mjs +59 -0
  175. package/esm2020/cms/plugins/script.plugin.mjs +31 -0
  176. package/esm2020/cms/services/element-context.service.mjs +10 -0
  177. package/esm2020/cms/services/index.mjs +3 -0
  178. package/esm2020/cms/services/io-provider.service.mjs +53 -0
  179. package/esm2020/cms/services/resources.service.mjs +71 -0
  180. package/esm2020/cms/services/templates.service.mjs +32 -0
  181. package/esm2020/cms/types/common.types.mjs +2 -0
  182. package/esm2020/cms/types/elements.types.mjs +2 -0
  183. package/esm2020/cms/types/index.mjs +7 -0
  184. package/esm2020/cms/types/layouts.types.mjs +71 -0
  185. package/esm2020/cms/types/pages.types.mjs +2 -0
  186. package/esm2020/cms/types/path.types.mjs +2 -0
  187. package/esm2020/cms/utils/element-metadata-worker.mjs +31 -0
  188. package/esm2020/cms/utils/element.utils.mjs +182 -0
  189. package/esm2020/cms/utils/elements-resolver.mjs +206 -0
  190. package/esm2020/cms/utils/encoding.utils.mjs +29 -0
  191. package/esm2020/cms/utils/index.mjs +10 -0
  192. package/esm2020/cms/utils/inject.mjs +27 -0
  193. package/esm2020/cms/utils/path.utils.mjs +44 -0
  194. package/esm2020/cms/utils/script.utils.mjs +46 -0
  195. package/esm2020/cms/utils/transpilation-worker.mjs +52 -0
  196. package/esm2020/cms/utils/ui-builder-layout.utils.mjs +46 -0
  197. package/esm2020/cms/utils/ui-definition.utils.mjs +85 -0
  198. package/esm2020/cms/veloceapps-sdk-cms.mjs +5 -0
  199. package/esm2020/cms/vendor-map.mjs +83 -0
  200. package/esm2020/core/core.module.mjs +54 -0
  201. package/esm2020/core/directives/directives.module.mjs +16 -0
  202. package/esm2020/core/directives/index.mjs +3 -0
  203. package/esm2020/core/directives/primeng-calendar.directive.mjs +41 -0
  204. package/esm2020/core/index.mjs +9 -0
  205. package/esm2020/core/modules/configuration/configuration.module.mjs +34 -0
  206. package/esm2020/core/modules/configuration/index.mjs +7 -0
  207. package/esm2020/core/modules/configuration/services/configuration-runtime.service.mjs +29 -0
  208. package/esm2020/core/modules/configuration/services/configuration-state.service.mjs +381 -0
  209. package/esm2020/core/modules/configuration/services/configuration.service.mjs +159 -0
  210. package/esm2020/core/modules/configuration/services/guided-selling.service.mjs +62 -0
  211. package/esm2020/core/modules/configuration/services/test-mode-configuration.service.mjs +97 -0
  212. package/esm2020/core/modules/configuration/types/configuration-runtime.types.mjs +2 -0
  213. package/esm2020/core/modules/configuration/types/configuration.types.mjs +2 -0
  214. package/esm2020/core/modules/configuration/types/index.mjs +3 -0
  215. package/esm2020/core/modules/flow-configuration/flow-configuration.module.mjs +17 -0
  216. package/esm2020/core/modules/flow-configuration/index.mjs +2 -0
  217. package/esm2020/core/modules/flow-configuration/services/flow-configuration.service.mjs +80 -0
  218. package/esm2020/core/modules/index.mjs +3 -0
  219. package/esm2020/core/operators/filter-successful-execute.operator.mjs +5 -0
  220. package/esm2020/core/operators/index.mjs +2 -0
  221. package/esm2020/core/pipes/action-code.pipe.mjs +20 -0
  222. package/esm2020/core/pipes/date.pipe.mjs +44 -0
  223. package/esm2020/core/pipes/index.mjs +6 -0
  224. package/esm2020/core/pipes/number.pipe.mjs +27 -0
  225. package/esm2020/core/pipes/pipes.module.mjs +19 -0
  226. package/esm2020/core/pipes/price.pipe.mjs +30 -0
  227. package/esm2020/core/services/catalog-products.service.mjs +25 -0
  228. package/esm2020/core/services/flow-info.service.mjs +146 -0
  229. package/esm2020/core/services/flow-state-configuration.service.mjs +120 -0
  230. package/esm2020/core/services/flow-state.service.mjs +417 -0
  231. package/esm2020/core/services/index.mjs +9 -0
  232. package/esm2020/core/services/integration.state.mjs +36 -0
  233. package/esm2020/core/services/product-images.service.mjs +30 -0
  234. package/esm2020/core/services/runtime-settings.service.mjs +112 -0
  235. package/esm2020/core/services/sales-transaction.service.mjs +67 -0
  236. package/esm2020/core/types/flow-customization.types.mjs +3 -0
  237. package/esm2020/core/types/flow-state.types.mjs +2 -0
  238. package/esm2020/core/types/formatting-settings.types.mjs +3 -0
  239. package/esm2020/core/types/index.mjs +6 -0
  240. package/esm2020/core/types/integration.types.mjs +2 -0
  241. package/esm2020/core/types/pipe.types.mjs +2 -0
  242. package/esm2020/core/types/ui-definition.types.mjs +2 -0
  243. package/esm2020/core/utils/index.mjs +5 -0
  244. package/esm2020/core/utils/pcm.utils.mjs +15 -0
  245. package/esm2020/core/utils/transaction-item.utils.mjs +144 -0
  246. package/esm2020/core/utils/transaction-item.worker.mjs +16 -0
  247. package/esm2020/core/utils/ui-definition.utils.mjs +9 -0
  248. package/esm2020/core/veloceapps-sdk-core.mjs +5 -0
  249. package/esm2020/index.mjs +2 -0
  250. package/esm2020/src/components/dialog/dialog.component.mjs +36 -0
  251. package/esm2020/src/components/dialog/dialog.module.mjs +19 -0
  252. package/esm2020/src/components/dialog/dialog.types.mjs +2 -0
  253. package/esm2020/src/components/flow-header/flow-header.component.mjs +107 -0
  254. package/esm2020/src/components/flow-header/flow-header.module.mjs +19 -0
  255. package/esm2020/src/components/flow-header/index.mjs +2 -0
  256. package/esm2020/src/components/guided-selling/guided-selling.component.mjs +107 -0
  257. package/esm2020/src/components/guided-selling/guided-selling.module.mjs +19 -0
  258. package/esm2020/src/configure-primeng.mjs +33 -0
  259. package/esm2020/src/constants.mjs +2 -0
  260. package/esm2020/src/flow-routing.module.mjs +97 -0
  261. package/esm2020/src/flow.component.mjs +39 -0
  262. package/esm2020/src/flow.module.mjs +60 -0
  263. package/esm2020/src/guards/flow.guard.mjs +35 -0
  264. package/esm2020/src/guards/product-unload.guard.mjs +49 -0
  265. package/esm2020/src/guards/root.guard.mjs +46 -0
  266. package/esm2020/src/index.mjs +5 -0
  267. package/esm2020/src/pages/assets/assets.component.mjs +106 -0
  268. package/esm2020/src/pages/assets/assets.module.mjs +20 -0
  269. package/esm2020/src/pages/catalog/catalog.component.mjs +106 -0
  270. package/esm2020/src/pages/catalog/catalog.module.mjs +20 -0
  271. package/esm2020/src/pages/debug/debug.component.mjs +49 -0
  272. package/esm2020/src/pages/debug/debug.module.mjs +46 -0
  273. package/esm2020/src/pages/product/product.component.mjs +55 -0
  274. package/esm2020/src/pages/product/product.module.mjs +20 -0
  275. package/esm2020/src/pages/record-not-found/record-not-found.component.mjs +27 -0
  276. package/esm2020/src/pages/record-not-found/record-not-found.module.mjs +20 -0
  277. package/esm2020/src/pages/shopping-cart/shopping-cart.component.mjs +106 -0
  278. package/esm2020/src/pages/shopping-cart/shopping-cart.module.mjs +20 -0
  279. package/esm2020/src/resolvers/flow.resolver.mjs +50 -0
  280. package/esm2020/src/resolvers/pcm-model.resolver.mjs +12 -0
  281. package/esm2020/src/resolvers/sales-transaction.resolver.mjs +64 -0
  282. package/esm2020/src/resolvers/ui-definition.resolver.mjs +44 -0
  283. package/esm2020/src/services/flow-dialog.service.mjs +91 -0
  284. package/esm2020/src/services/flow-router.service.mjs +173 -0
  285. package/esm2020/src/services/flow.service.mjs +102 -0
  286. package/esm2020/src/services/guided-selling.service.mjs +34 -0
  287. package/esm2020/src/services/index.mjs +4 -0
  288. package/esm2020/src/types/index.mjs +2 -0
  289. package/esm2020/src/types/route.types.mjs +2 -0
  290. package/esm2020/veloceapps-sdk.mjs +5 -0
  291. package/fesm2015/veloceapps-sdk-cms.mjs +2514 -0
  292. package/fesm2015/veloceapps-sdk-cms.mjs.map +1 -0
  293. package/fesm2015/veloceapps-sdk-core.mjs +2084 -0
  294. package/fesm2015/veloceapps-sdk-core.mjs.map +1 -0
  295. package/fesm2015/veloceapps-sdk.mjs +1598 -0
  296. package/fesm2015/veloceapps-sdk.mjs.map +1 -0
  297. package/fesm2020/veloceapps-sdk-cms.mjs +2613 -0
  298. package/fesm2020/veloceapps-sdk-cms.mjs.map +1 -0
  299. package/{fesm2022 → fesm2020}/veloceapps-sdk-core.mjs +146 -164
  300. package/fesm2020/veloceapps-sdk-core.mjs.map +1 -0
  301. package/{fesm2022 → fesm2020}/veloceapps-sdk.mjs +192 -186
  302. package/fesm2020/veloceapps-sdk.mjs.map +1 -0
  303. package/index.d.ts +1 -330
  304. package/package.json +34 -17
  305. package/src/components/dialog/dialog.component.d.ts +13 -0
  306. package/src/components/dialog/dialog.module.d.ts +9 -0
  307. package/src/components/dialog/dialog.types.d.ts +7 -0
  308. package/src/components/flow-header/flow-header.component.d.ts +25 -0
  309. package/src/components/flow-header/flow-header.module.d.ts +9 -0
  310. package/src/components/flow-header/index.d.ts +1 -0
  311. package/src/components/guided-selling/guided-selling.component.d.ts +25 -0
  312. package/src/components/guided-selling/guided-selling.module.d.ts +9 -0
  313. package/src/configure-primeng.d.ts +1 -0
  314. package/src/constants.d.ts +1 -0
  315. package/src/flow-routing.module.d.ts +11 -0
  316. package/src/flow.component.d.ts +21 -0
  317. package/src/flow.module.d.ts +16 -0
  318. package/src/guards/flow.guard.d.ts +2 -0
  319. package/src/guards/product-unload.guard.d.ts +16 -0
  320. package/src/guards/root.guard.d.ts +14 -0
  321. package/src/index.d.ts +4 -0
  322. package/src/pages/assets/assets.component.d.ts +31 -0
  323. package/src/pages/assets/assets.module.d.ts +10 -0
  324. package/src/pages/catalog/catalog.component.d.ts +31 -0
  325. package/src/pages/catalog/catalog.module.d.ts +10 -0
  326. package/src/pages/debug/debug.component.d.ts +21 -0
  327. package/src/pages/debug/debug.module.d.ts +14 -0
  328. package/src/pages/product/product.component.d.ts +24 -0
  329. package/src/pages/product/product.module.d.ts +10 -0
  330. package/src/pages/record-not-found/record-not-found.component.d.ts +12 -0
  331. package/src/pages/record-not-found/record-not-found.module.d.ts +9 -0
  332. package/src/pages/shopping-cart/shopping-cart.component.d.ts +31 -0
  333. package/src/pages/shopping-cart/shopping-cart.module.d.ts +10 -0
  334. package/src/resolvers/flow.resolver.d.ts +14 -0
  335. package/src/resolvers/pcm-model.resolver.d.ts +3 -0
  336. package/src/resolvers/sales-transaction.resolver.d.ts +18 -0
  337. package/src/resolvers/ui-definition.resolver.d.ts +3 -0
  338. package/src/services/flow-dialog.service.d.ts +23 -0
  339. package/src/services/flow-router.service.d.ts +42 -0
  340. package/src/services/flow.service.d.ts +21 -0
  341. package/src/services/guided-selling.service.d.ts +13 -0
  342. package/src/services/index.d.ts +3 -0
  343. package/src/types/index.d.ts +1 -0
  344. package/src/types/route.types.d.ts +4 -0
  345. package/fesm2022/veloceapps-sdk-cms.mjs +0 -2611
  346. package/fesm2022/veloceapps-sdk-cms.mjs.map +0 -1
  347. package/fesm2022/veloceapps-sdk-core.mjs.map +0 -1
  348. package/fesm2022/veloceapps-sdk.mjs.map +0 -1
@@ -0,0 +1,6 @@
1
+ export * from './date.pipe';
2
+ export * from './number.pipe';
3
+ export * from './pipes.module';
4
+ export * from './price.pipe';
5
+ export * from './action-code.pipe';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jb3JlL3BpcGVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGF0ZS5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbnVtYmVyLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9waXBlcy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9wcmljZS5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vYWN0aW9uLWNvZGUucGlwZSc7XG4iXX0=
@@ -0,0 +1,27 @@
1
+ import { Pipe, inject } from '@angular/core';
2
+ import { formatNumber } from '@veloceapps/core';
3
+ import { Subject } from 'rxjs';
4
+ import { FORMATTING_SETTINGS_TOKEN } from '../types';
5
+ import * as i0 from "@angular/core";
6
+ export class NumberPipe {
7
+ constructor() {
8
+ this.formattingSettings = inject(FORMATTING_SETTINGS_TOKEN, { optional: true })?.getFormattingSettings();
9
+ this.destroy$ = new Subject();
10
+ }
11
+ ngOnDestroy() {
12
+ this.destroy$.next();
13
+ this.destroy$.complete();
14
+ }
15
+ transform(price) {
16
+ return formatNumber(price, this.formattingSettings?.thousandsSeparator, this.formattingSettings?.decimalSeparator, this.formattingSettings?.decimalsCount);
17
+ }
18
+ }
19
+ NumberPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NumberPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
20
+ NumberPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: NumberPipe, name: "vlNumber" });
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NumberPipe, decorators: [{
22
+ type: Pipe,
23
+ args: [{
24
+ name: 'vlNumber',
25
+ }]
26
+ }] });
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jb3JlL3BpcGVzL251bWJlci5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYSxJQUFJLEVBQWlCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxVQUFVLENBQUM7O0FBS3JELE1BQU0sT0FBTyxVQUFVO0lBSHZCO1FBSVUsdUJBQWtCLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUscUJBQXFCLEVBQUUsQ0FBQztRQUNwRyxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztLQWV4QztJQWJRLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTSxTQUFTLENBQUMsS0FBc0I7UUFDckMsT0FBTyxZQUFZLENBQ2pCLEtBQUssRUFDTCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQzNDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFDekMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLGFBQWEsQ0FDdkMsQ0FBQztJQUNKLENBQUM7O3VHQWhCVSxVQUFVO3FHQUFWLFVBQVU7MkZBQVYsVUFBVTtrQkFIdEIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsVUFBVTtpQkFDakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPbkRlc3Ryb3ksIFBpcGUsIFBpcGVUcmFuc2Zvcm0sIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBGT1JNQVRUSU5HX1NFVFRJTkdTX1RPS0VOIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICd2bE51bWJlcicsXG59KVxuZXhwb3J0IGNsYXNzIE51bWJlclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtLCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIGZvcm1hdHRpbmdTZXR0aW5ncyA9IGluamVjdChGT1JNQVRUSU5HX1NFVFRJTkdTX1RPS0VOLCB7IG9wdGlvbmFsOiB0cnVlIH0pPy5nZXRGb3JtYXR0aW5nU2V0dGluZ3MoKTtcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyB0cmFuc2Zvcm0ocHJpY2U6IHN0cmluZyB8IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGZvcm1hdE51bWJlcihcbiAgICAgIHByaWNlLFxuICAgICAgdGhpcy5mb3JtYXR0aW5nU2V0dGluZ3M/LnRob3VzYW5kc1NlcGFyYXRvcixcbiAgICAgIHRoaXMuZm9ybWF0dGluZ1NldHRpbmdzPy5kZWNpbWFsU2VwYXJhdG9yLFxuICAgICAgdGhpcy5mb3JtYXR0aW5nU2V0dGluZ3M/LmRlY2ltYWxzQ291bnQsXG4gICAgKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,19 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { DatePipe } from './date.pipe';
3
+ import { NumberPipe } from './number.pipe';
4
+ import { PricePipe } from './price.pipe';
5
+ import { ActionCodePipe } from './action-code.pipe';
6
+ import * as i0 from "@angular/core";
7
+ export class SdkPipesModule {
8
+ }
9
+ SdkPipesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SdkPipesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
+ SdkPipesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: SdkPipesModule, declarations: [NumberPipe, PricePipe, DatePipe, ActionCodePipe], exports: [NumberPipe, PricePipe, DatePipe, ActionCodePipe] });
11
+ SdkPipesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SdkPipesModule });
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SdkPipesModule, decorators: [{
13
+ type: NgModule,
14
+ args: [{
15
+ declarations: [NumberPipe, PricePipe, DatePipe, ActionCodePipe],
16
+ exports: [NumberPipe, PricePipe, DatePipe, ActionCodePipe],
17
+ }]
18
+ }] });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY29yZS9waXBlcy9waXBlcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN6QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBTXBELE1BQU0sT0FBTyxjQUFjOzsyR0FBZCxjQUFjOzRHQUFkLGNBQWMsaUJBSFYsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsY0FBYyxhQUNwRCxVQUFVLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxjQUFjOzRHQUU5QyxjQUFjOzJGQUFkLGNBQWM7a0JBSjFCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsY0FBYyxDQUFDO29CQUMvRCxPQUFPLEVBQUUsQ0FBQyxVQUFVLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxjQUFjLENBQUM7aUJBQzNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnLi9kYXRlLnBpcGUnO1xuaW1wb3J0IHsgTnVtYmVyUGlwZSB9IGZyb20gJy4vbnVtYmVyLnBpcGUnO1xuaW1wb3J0IHsgUHJpY2VQaXBlIH0gZnJvbSAnLi9wcmljZS5waXBlJztcbmltcG9ydCB7IEFjdGlvbkNvZGVQaXBlIH0gZnJvbSAnLi9hY3Rpb24tY29kZS5waXBlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbTnVtYmVyUGlwZSwgUHJpY2VQaXBlLCBEYXRlUGlwZSwgQWN0aW9uQ29kZVBpcGVdLFxuICBleHBvcnRzOiBbTnVtYmVyUGlwZSwgUHJpY2VQaXBlLCBEYXRlUGlwZSwgQWN0aW9uQ29kZVBpcGVdLFxufSlcbmV4cG9ydCBjbGFzcyBTZGtQaXBlc01vZHVsZSB7fVxuIl19
@@ -0,0 +1,30 @@
1
+ import { Pipe, inject } from '@angular/core';
2
+ import { DEFAULT_CURRENCY_SYMBOL, formatNumber } from '@veloceapps/core';
3
+ import { Subject } from 'rxjs';
4
+ import { FORMATTING_SETTINGS_TOKEN } from '../types';
5
+ import * as i0 from "@angular/core";
6
+ export class PricePipe {
7
+ constructor() {
8
+ this.formattingSettings = inject(FORMATTING_SETTINGS_TOKEN, { optional: true })?.getFormattingSettings();
9
+ this.destroy$ = new Subject();
10
+ }
11
+ ngOnDestroy() {
12
+ this.destroy$.next();
13
+ this.destroy$.complete();
14
+ }
15
+ transform(price) {
16
+ if (price == null || price === '') {
17
+ return '';
18
+ }
19
+ return `${this.formattingSettings?.currencySymbol || DEFAULT_CURRENCY_SYMBOL}${formatNumber(price, this.formattingSettings?.thousandsSeparator, this.formattingSettings?.decimalSeparator, this.formattingSettings?.decimalsCount)}`;
20
+ }
21
+ }
22
+ PricePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PricePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
23
+ PricePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: PricePipe, name: "vlPrice" });
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PricePipe, decorators: [{
25
+ type: Pipe,
26
+ args: [{
27
+ name: 'vlPrice',
28
+ }]
29
+ }] });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpY2UucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2NvcmUvcGlwZXMvcHJpY2UucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWEsSUFBSSxFQUFpQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sVUFBVSxDQUFDOztBQUtyRCxNQUFNLE9BQU8sU0FBUztJQUh0QjtRQUlVLHVCQUFrQixHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLHFCQUFxQixFQUFFLENBQUM7UUFDcEcsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7S0FtQnhDO0lBakJRLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTSxTQUFTLENBQUMsS0FBc0I7UUFDckMsSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFLEVBQUU7WUFDakMsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUVELE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsY0FBYyxJQUFJLHVCQUF1QixHQUFHLFlBQVksQ0FDekYsS0FBSyxFQUNMLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxrQkFBa0IsRUFDM0MsSUFBSSxDQUFDLGtCQUFrQixFQUFFLGdCQUFnQixFQUN6QyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsYUFBYSxDQUN2QyxFQUFFLENBQUM7SUFDTixDQUFDOztzR0FwQlUsU0FBUztvR0FBVCxTQUFTOzJGQUFULFNBQVM7a0JBSHJCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFNBQVM7aUJBQ2hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT25EZXN0cm95LCBQaXBlLCBQaXBlVHJhbnNmb3JtLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERFRkFVTFRfQ1VSUkVOQ1lfU1lNQk9MLCBmb3JtYXROdW1iZXIgfSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZPUk1BVFRJTkdfU0VUVElOR1NfVE9LRU4gfSBmcm9tICcuLi90eXBlcyc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3ZsUHJpY2UnLFxufSlcbmV4cG9ydCBjbGFzcyBQcmljZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtLCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIGZvcm1hdHRpbmdTZXR0aW5ncyA9IGluamVjdChGT1JNQVRUSU5HX1NFVFRJTkdTX1RPS0VOLCB7IG9wdGlvbmFsOiB0cnVlIH0pPy5nZXRGb3JtYXR0aW5nU2V0dGluZ3MoKTtcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyB0cmFuc2Zvcm0ocHJpY2U6IHN0cmluZyB8IG51bWJlcik6IHN0cmluZyB7XG4gICAgaWYgKHByaWNlID09IG51bGwgfHwgcHJpY2UgPT09ICcnKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke3RoaXMuZm9ybWF0dGluZ1NldHRpbmdzPy5jdXJyZW5jeVN5bWJvbCB8fCBERUZBVUxUX0NVUlJFTkNZX1NZTUJPTH0ke2Zvcm1hdE51bWJlcihcbiAgICAgIHByaWNlLFxuICAgICAgdGhpcy5mb3JtYXR0aW5nU2V0dGluZ3M/LnRob3VzYW5kc1NlcGFyYXRvcixcbiAgICAgIHRoaXMuZm9ybWF0dGluZ1NldHRpbmdzPy5kZWNpbWFsU2VwYXJhdG9yLFxuICAgICAgdGhpcy5mb3JtYXR0aW5nU2V0dGluZ3M/LmRlY2ltYWxzQ291bnQsXG4gICAgKX1gO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,25 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { isDefined } from '@veloceapps/core';
3
+ import { BehaviorSubject, filter } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ export class CatalogProductsService {
6
+ constructor() {
7
+ this.stateSubj$ = new BehaviorSubject(null);
8
+ this.state$ = this.stateSubj$.asObservable().pipe(filter(isDefined));
9
+ }
10
+ get state() {
11
+ return this.stateSubj$.getValue();
12
+ }
13
+ reset() {
14
+ this.stateSubj$.next(null);
15
+ }
16
+ setState(state) {
17
+ this.stateSubj$.next(state);
18
+ }
19
+ }
20
+ CatalogProductsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CatalogProductsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
21
+ CatalogProductsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CatalogProductsService });
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CatalogProductsService, decorators: [{
23
+ type: Injectable
24
+ }] });
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy1wcm9kdWN0cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY29yZS9zZXJ2aWNlcy9jYXRhbG9nLXByb2R1Y3RzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQW1CLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUcvQyxNQUFNLE9BQU8sc0JBQXNCO0lBRG5DO1FBRVUsZUFBVSxHQUFHLElBQUksZUFBZSxDQUF5QixJQUFJLENBQUMsQ0FBQztRQUVoRSxXQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7S0FheEU7SUFYQyxJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVNLEtBQUs7UUFDVixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRU0sUUFBUSxDQUFDLEtBQXNCO1FBQ3BDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7O21IQWZVLHNCQUFzQjt1SEFBdEIsc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYXRhbG9nUHJvZHVjdHMsIGlzRGVmaW5lZCB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmaWx0ZXIgfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENhdGFsb2dQcm9kdWN0c1NlcnZpY2Uge1xuICBwcml2YXRlIHN0YXRlU3ViaiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENhdGFsb2dQcm9kdWN0cyB8IG51bGw+KG51bGwpO1xuXG4gIHB1YmxpYyBzdGF0ZSQgPSB0aGlzLnN0YXRlU3ViaiQuYXNPYnNlcnZhYmxlKCkucGlwZShmaWx0ZXIoaXNEZWZpbmVkKSk7XG5cbiAgcHVibGljIGdldCBzdGF0ZSgpOiBDYXRhbG9nUHJvZHVjdHMgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZVN1YmokLmdldFZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZVN1YmokLm5leHQobnVsbCk7XG4gIH1cblxuICBwdWJsaWMgc2V0U3RhdGUoc3RhdGU6IENhdGFsb2dQcm9kdWN0cyk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGVTdWJqJC5uZXh0KHN0YXRlKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,146 @@
1
+ import { Inject, Injectable, Optional } from '@angular/core';
2
+ import { UITemplatesAdminApiService } from '@veloceapps/api/v2';
3
+ import { isDefined, SalesforceIdUtils, UITemplateType, } from '@veloceapps/core';
4
+ import { BehaviorSubject, filter, forkJoin, map, of, switchMap } from 'rxjs';
5
+ import { FLOW_CUSTOMIZATION } from '../types/flow-customization.types';
6
+ import { RuntimeSettingsService } from './runtime-settings.service';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "./runtime-settings.service";
9
+ import * as i2 from "@veloceapps/api/v2";
10
+ export class FlowInfoService {
11
+ constructor(runtimeSettingsService, templatesAdminApiService, customizationService) {
12
+ this.runtimeSettingsService = runtimeSettingsService;
13
+ this.templatesAdminApiService = templatesAdminApiService;
14
+ this.customizationService = customizationService;
15
+ this.defaultTemplates = {
16
+ flowEngine: 'Flow Engine',
17
+ };
18
+ this.flowSubj$ = new BehaviorSubject(null);
19
+ this.templatesSubj$ = new BehaviorSubject({});
20
+ this.contextSubj$ = new BehaviorSubject(null);
21
+ this.flow$ = this.flowSubj$.asObservable();
22
+ this.templates$ = this.templatesSubj$.asObservable();
23
+ }
24
+ get flow() {
25
+ if (!this.flowSubj$.value) {
26
+ throw new Error(`Flow not initialized yet`);
27
+ }
28
+ return this.flowSubj$.value;
29
+ }
30
+ get isFlowInitialized() {
31
+ return Boolean(this.flowSubj$.value);
32
+ }
33
+ get context() {
34
+ if (!this.contextSubj$.value) {
35
+ throw new Error('Context is not initialized yet!');
36
+ }
37
+ return { ...this.contextSubj$.value };
38
+ }
39
+ get context$() {
40
+ return this.contextSubj$.asObservable().pipe(filter(isDefined));
41
+ }
42
+ get templates() {
43
+ return this.templatesSubj$.value;
44
+ }
45
+ get isFlowEngineInitialized$() {
46
+ return this.templates$.pipe(map(v => Boolean(v.FLOW_ENGINE)));
47
+ }
48
+ get isStateful() {
49
+ return !!this.flow?.properties.stateful;
50
+ }
51
+ reset() {
52
+ this.flowSubj$.next(null);
53
+ this.templatesSubj$.next({});
54
+ this.contextSubj$.next(null);
55
+ }
56
+ init$(flowId, routeQueryParams) {
57
+ return this.initFlow$(flowId, routeQueryParams).pipe(switchMap(() => this.initFlowTemplates$()));
58
+ }
59
+ updateContext(update) {
60
+ this.contextSubj$.next({
61
+ ...this.context,
62
+ ...update,
63
+ });
64
+ }
65
+ initFlow$(flowId, routeQueryParams) {
66
+ const flow = this.runtimeSettingsService.getConfigurationSettings()['flows']?.find(({ id }) => flowId === id);
67
+ if (!flow) {
68
+ this.flowSubj$.next(null);
69
+ throw new Error(`Flow with flowId=${flowId} is not defined`);
70
+ }
71
+ const headerId = routeQueryParams['headerId'];
72
+ if (typeof headerId !== 'string') {
73
+ throw new Error(`Please provide 'headerId'`);
74
+ }
75
+ const mode = this.getFlowContextMode(headerId);
76
+ // Restrict if mode is not defined
77
+ if (mode == null) {
78
+ throw new Error('Mode is undefined');
79
+ }
80
+ this.contextSubj$.next({
81
+ ...flow.properties.queryParams,
82
+ ...routeQueryParams,
83
+ mode,
84
+ });
85
+ this.flowSubj$.next(flow);
86
+ return of(undefined);
87
+ }
88
+ initFlowTemplates$() {
89
+ return forkJoin([
90
+ this.templatesAdminApiService.fetchTemplates$(),
91
+ this.customizationService?.getTemplates?.() ?? of([]),
92
+ ]).pipe(map(([templates, localTemplates]) => {
93
+ const newValue = {};
94
+ Object.entries({ ...this.defaultTemplates, ...(this.flow?.properties.templates ?? {}) }).forEach(([key, name]) => {
95
+ const type = this.remapTemplateName(key);
96
+ if (type) {
97
+ newValue[type] =
98
+ localTemplates.find(template => template.name === name && template.type === type) ??
99
+ templates.find(template => template.name === name && template.type === type);
100
+ }
101
+ });
102
+ this.templatesSubj$.next(newValue);
103
+ }));
104
+ }
105
+ remapTemplateName(templateType) {
106
+ switch (templateType) {
107
+ case 'flowEngine':
108
+ return UITemplateType.FLOW_ENGINE;
109
+ default:
110
+ break;
111
+ }
112
+ switch (templateType) {
113
+ case 'assets':
114
+ case 'shoppingCart':
115
+ // No separate Assets template at the moment
116
+ return UITemplateType.SHOPPING_CART;
117
+ case 'catalog':
118
+ return UITemplateType.CATALOG;
119
+ case 'guidedSelling':
120
+ return UITemplateType.GUIDED_SELLING;
121
+ case 'flowHeader':
122
+ return UITemplateType.FLOW_HEADER;
123
+ default:
124
+ break;
125
+ }
126
+ return undefined;
127
+ }
128
+ getFlowContextMode(headerId) {
129
+ const objectName = SalesforceIdUtils.getSfObjectNameById(headerId);
130
+ if (!objectName) {
131
+ return;
132
+ }
133
+ return objectName.toUpperCase();
134
+ }
135
+ }
136
+ FlowInfoService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowInfoService, deps: [{ token: i1.RuntimeSettingsService }, { token: i2.UITemplatesAdminApiService }, { token: FLOW_CUSTOMIZATION, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
137
+ FlowInfoService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowInfoService });
138
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowInfoService, decorators: [{
139
+ type: Injectable
140
+ }], ctorParameters: function () { return [{ type: i1.RuntimeSettingsService }, { type: i2.UITemplatesAdminApiService }, { type: undefined, decorators: [{
141
+ type: Optional
142
+ }, {
143
+ type: Inject,
144
+ args: [FLOW_CUSTOMIZATION]
145
+ }] }]; } });
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1pbmZvLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jb3JlL3NlcnZpY2VzL2Zsb3ctaW5mby5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRSxPQUFPLEVBS0wsU0FBUyxFQUNULGlCQUFpQixFQUVqQixjQUFjLEdBQ2YsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekYsT0FBTyxFQUFFLGtCQUFrQixFQUFxQixNQUFNLG1DQUFtQyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7O0FBR3BFLE1BQU0sT0FBTyxlQUFlO0lBVTFCLFlBQ1Usc0JBQThDLEVBQzlDLHdCQUFvRCxFQUNaLG9CQUF3QztRQUZoRiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzlDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBNEI7UUFDWix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQW9CO1FBVnpFLHFCQUFnQixHQUFHO1lBQ2xDLFVBQVUsRUFBRSxhQUFhO1NBQzFCLENBQUM7UUFDTSxjQUFTLEdBQUcsSUFBSSxlQUFlLENBQWMsSUFBSSxDQUFDLENBQUM7UUFDbkQsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBMkMsRUFBRSxDQUFDLENBQUM7UUFDbkYsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBcUIsSUFBSSxDQUFDLENBQUM7UUFPbkUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMs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QU87U0FDUjtRQUVELE9BQU8sVUFBVSxDQUFDLFdBQVcsRUFBcUIsQ0FBQztJQUNyRCxDQUFDOzs0R0E5SlUsZUFBZSxrR0FhSixrQkFBa0I7Z0hBYjdCLGVBQWU7MkZBQWYsZUFBZTtrQkFEM0IsVUFBVTs7MEJBY04sUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgVUlUZW1wbGF0ZXNBZG1pbkFwaVNlcnZpY2UgfSBmcm9tICdAdmVsb2NlYXBwcy9hcGkvdjInO1xuaW1wb3J0IHtcbiAgRmxvdyxcbiAgRmxvd0NvbnRleHQsXG4gIEZsb3dDb250ZXh0TW9kZSxcbiAgRmxvd1RlbXBsYXRlc01hcCxcbiAgaXNEZWZpbmVkLFxuICBTYWxlc2ZvcmNlSWRVdGlscyxcbiAgVUlUZW1wbGF0ZSxcbiAgVUlUZW1wbGF0ZVR5cGUsXG59IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBmaWx0ZXIsIGZvcmtKb2luLCBtYXAsIE9ic2VydmFibGUsIG9mLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZMT1dfQ1VTVE9NSVpBVElPTiwgRmxvd0N1c3RvbWl6YXRpb24gfSBmcm9tICcuLi90eXBlcy9mbG93LWN1c3RvbWl6YXRpb24udHlwZXMnO1xuaW1wb3J0IHsgUnVudGltZVNldHRpbmdzU2VydmljZSB9IGZyb20gJy4vcnVudGltZS1zZXR0aW5ncy5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZsb3dJbmZvU2VydmljZSB7XG4gIHB1YmxpYyBmbG93JDogT2JzZXJ2YWJsZTxGbG93IHwgbnVsbD47XG4gIHB1YmxpYyB0ZW1wbGF0ZXMkOiBPYnNlcnZhYmxlPHsgW2tleSBpbiBVSVRlbXBsYXRlVHlwZV0/OiBVSVRlbXBsYXRlIH0+O1xuICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRUZW1wbGF0ZXMgPSB7XG4gICAgZmxvd0VuZ2luZTogJ0Zsb3cgRW5naW5lJyxcbiAgfTtcbiAgcHJpdmF0ZSBmbG93U3ViaiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEZsb3cgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSB0ZW1wbGF0ZXNTdWJqJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBba2V5IGluIFVJVGVtcGxhdGVUeXBlXT86IFVJVGVtcGxhdGUgfT4oe30pO1xuICBwcml2YXRlIGNvbnRleHRTdWJqJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Rmxvd0NvbnRleHQgfCBudWxsPihudWxsKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJ1bnRpbWVTZXR0aW5nc1NlcnZpY2U6IFJ1bnRpbWVTZXR0aW5nc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0ZW1wbGF0ZXNBZG1pbkFwaVNlcnZpY2U6IFVJVGVtcGxhdGVzQWRtaW5BcGlTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRkxPV19DVVNUT01JWkFUSU9OKSBwcml2YXRlIGN1c3RvbWl6YXRpb25TZXJ2aWNlPzogRmxvd0N1c3RvbWl6YXRpb24sXG4gICkge1xuICAgIHRoaXMuZmxvdyQgPSB0aGlzLmZsb3dTdWJqJC5hc09ic2VydmFibGUoKTtcbiAgICB0aGlzLnRlbXBsYXRlcyQgPSB0aGlzLnRlbXBsYXRlc1N1YmokLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBmbG93KCk6IEZsb3cge1xuICAgIGlmICghdGhpcy5mbG93U3ViaiQudmFsdWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmxvdyBub3QgaW5pdGlhbGl6ZWQgeWV0YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZmxvd1N1YmokLnZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBpc0Zsb3dJbml0aWFsaXplZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLmZsb3dTdWJqJC52YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbnRleHQoKTogRmxvd0NvbnRleHQge1xuICAgIGlmICghdGhpcy5jb250ZXh0U3ViaiQudmFsdWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ29udGV4dCBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0IScpO1xuICAgIH1cblxuICAgIHJldHVybiB7IC4uLnRoaXMuY29udGV4dFN1YmokLnZhbHVlIH07XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbnRleHQkKCk6IE9ic2VydmFibGU8Rmxvd0NvbnRleHQ+IHtcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0U3ViaiQuYXNPYnNlcnZhYmxlKCkucGlwZShmaWx0ZXIoaXNEZWZpbmVkKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRlbXBsYXRlcygpIHtcbiAgICByZXR1cm4gdGhpcy50ZW1wbGF0ZXNTdWJqJC52YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNGbG93RW5naW5lSW5pdGlhbGl6ZWQkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnRlbXBsYXRlcyQucGlwZShtYXAodiA9PiBCb29sZWFuKHYuRkxPV19FTkdJTkUpKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzU3RhdGVmdWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5mbG93Py5wcm9wZXJ0aWVzLnN0YXRlZnVsO1xuICB9XG5cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuZmxvd1N1YmokLm5leHQobnVsbCk7XG4gICAgdGhpcy50ZW1wbGF0ZXNTdWJqJC5uZXh0KHt9KTtcbiAgICB0aGlzLmNvbnRleHRTdWJqJC5uZXh0KG51bGwpO1xuICB9XG5cbiAgcHVibGljIGluaXQkKGZsb3dJZDogc3RyaW5nLCByb3V0ZVF1ZXJ5UGFyYW1zOiBQYXJhbXMpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5pbml0RmxvdyQoZmxvd0lkLCByb3V0ZVF1ZXJ5UGFyYW1zKS5waXBlKHN3aXRjaE1hcCgoKSA9PiB0aGlzLmluaXRGbG93VGVtcGxhdGVzJCgpKSk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQ29udGV4dCh1cGRhdGU6IFBhcnRpYWw8Rmxvd0NvbnRleHQ+KTogdm9pZCB7XG4gICAgdGhpcy5jb250ZXh0U3ViaiQubmV4dCh7XG4gICAgICAuLi50aGlzLmNvbnRleHQsXG4gICAgICAuLi51cGRhdGUsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRGbG93JChmbG93SWQ6IHN0cmluZywgcm91dGVRdWVyeVBhcmFtczogUGFyYW1zKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc3QgZmxvdyA9IHRoaXMucnVudGltZVNldHRpbmdzU2VydmljZS5nZXRDb25maWd1cmF0aW9uU2V0dGluZ3MoKVsnZmxvd3MnXT8uZmluZCgoeyBpZCB9KSA9PiBmbG93SWQgPT09IGlkKTtcbiAgICBpZiAoIWZsb3cpIHtcbiAgICAgIHRoaXMuZmxvd1N1YmokLm5leHQobnVsbCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZsb3cgd2l0aCBmbG93SWQ9JHtmbG93SWR9IGlzIG5vdCBkZWZpbmVkYCk7XG4gICAgfVxuXG4gICAgY29uc3QgaGVhZGVySWQgPSByb3V0ZVF1ZXJ5UGFyYW1zWydoZWFkZXJJZCddO1xuICAgIGlmICh0eXBlb2YgaGVhZGVySWQgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFBsZWFzZSBwcm92aWRlICdoZWFkZXJJZCdgKTtcbiAgICB9XG5cbiAgICBjb25zdCBtb2RlID0gdGhpcy5nZXRGbG93Q29udGV4dE1vZGUoaGVhZGVySWQpO1xuXG4gICAgLy8gUmVzdHJpY3QgaWYgbW9kZSBpcyBub3QgZGVmaW5lZFxuICAgIGlmIChtb2RlID09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTW9kZSBpcyB1bmRlZmluZWQnKTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbnRleHRTdWJqJC5uZXh0KHtcbiAgICAgIC4uLmZsb3cucHJvcGVydGllcy5xdWVyeVBhcmFtcyxcbiAgICAgIC4uLnJvdXRlUXVlcnlQYXJhbXMsXG4gICAgICBtb2RlLFxuICAgIH0gYXMgRmxvd0NvbnRleHQpO1xuXG4gICAgdGhpcy5mbG93U3ViaiQubmV4dChmbG93KTtcbiAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdEZsb3dUZW1wbGF0ZXMkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiBmb3JrSm9pbihbXG4gICAgICB0aGlzLnRlbXBsYXRlc0FkbWluQXBpU2VydmljZS5mZXRjaFRlbXBsYXRlcyQoKSxcbiAgICAgIHRoaXMuY3VzdG9taXphdGlvblNlcnZpY2U/LmdldFRlbXBsYXRlcz8uKCkgPz8gb2YoW10pLFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFt0ZW1wbGF0ZXMsIGxvY2FsVGVtcGxhdGVzXSkgPT4ge1xuICAgICAgICBjb25zdCBuZXdWYWx1ZTogeyBba2V5IGluIFVJVGVtcGxhdGVUeXBlXT86IFVJVGVtcGxhdGUgfSA9IHt9O1xuICAgICAgICBPYmplY3QuZW50cmllcyh7IC4uLnRoaXMuZGVmYXVsdFRlbXBsYXRlcywgLi4uKHRoaXMuZmxvdz8ucHJvcGVydGllcy50ZW1wbGF0ZXMgPz8ge30pIH0pLmZvckVhY2goXG4gICAgICAgICAgKFtrZXksIG5hbWVdKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0eXBlID0gdGhpcy5yZW1hcFRlbXBsYXRlTmFtZShrZXkpO1xuXG4gICAgICAgICAgICBpZiAodHlwZSkge1xuICAgICAgICAgICAgICBuZXdWYWx1ZVt0eXBlXSA9XG4gICAgICAgICAgICAgICAgbG9jYWxUZW1wbGF0ZXMuZmluZCh0ZW1wbGF0ZSA9PiB0ZW1wbGF0ZS5uYW1lID09PSBuYW1lICYmIHRlbXBsYXRlLnR5cGUgPT09IHR5cGUpID8/XG4gICAgICAgICAgICAgICAgdGVtcGxhdGVzLmZpbmQodGVtcGxhdGUgPT4gdGVtcGxhdGUubmFtZSA9PT0gbmFtZSAmJiB0ZW1wbGF0ZS50eXBlID09PSB0eXBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMudGVtcGxhdGVzU3ViaiQubmV4dChuZXdWYWx1ZSk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1hcFRlbXBsYXRlTmFtZSh0ZW1wbGF0ZVR5cGU6IHN0cmluZyk6IFVJVGVtcGxhdGVUeXBlIHwgdW5kZWZpbmVkIHtcbiAgICBzd2l0Y2ggKHRlbXBsYXRlVHlwZSBhcyBrZXlvZiB0eXBlb2YgdGhpcy5kZWZhdWx0VGVtcGxhdGVzKSB7XG4gICAgICBjYXNlICdmbG93RW5naW5lJzpcbiAgICAgICAgcmV0dXJuIFVJVGVtcGxhdGVUeXBlLkZMT1dfRU5HSU5FO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgc3dpdGNoICh0ZW1wbGF0ZVR5cGUgYXMga2V5b2YgRmxvd1RlbXBsYXRlc01hcCkge1xuICAgICAgY2FzZSAnYXNzZXRzJzpcbiAgICAgIGNhc2UgJ3Nob3BwaW5nQ2FydCc6XG4gICAgICAgIC8vIE5vIHNlcGFyYXRlIEFzc2V0cyB0ZW1wbGF0ZSBhdCB0aGUgbW9tZW50XG4gICAgICAgIHJldHVybiBVSVRlbXBsYXRlVHlwZS5TSE9QUElOR19DQVJUO1xuICAgICAgY2FzZSAnY2F0YWxvZyc6XG4gICAgICAgIHJldHVybiBVSVRlbXBsYXRlVHlwZS5DQVRBTE9HO1xuICAgICAgY2FzZSAnZ3VpZGVkU2VsbGluZyc6XG4gICAgICAgIHJldHVybiBVSVRlbXBsYXRlVHlwZS5HVUlERURfU0VMTElORztcbiAgICAgIGNhc2UgJ2Zsb3dIZWFkZXInOlxuICAgICAgICByZXR1cm4gVUlUZW1wbGF0ZVR5cGUuRkxPV19IRUFERVI7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGbG93Q29udGV4dE1vZGUoaGVhZGVySWQ6IHN0cmluZyk6IEZsb3dDb250ZXh0TW9kZSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3Qgb2JqZWN0TmFtZSA9IFNhbGVzZm9yY2VJZFV0aWxzLmdldFNmT2JqZWN0TmFtZUJ5SWQoaGVhZGVySWQpO1xuICAgIGlmICghb2JqZWN0TmFtZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiBvYmplY3ROYW1lLnRvVXBwZXJDYXNlKCkgYXMgRmxvd0NvbnRleHRNb2RlO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,120 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { PCMApiService } from '@veloceapps/api/v2';
3
+ import { map, noop, of, switchMap, tap } from 'rxjs';
4
+ import { ConfigurationService } from '../modules/configuration/services/configuration.service';
5
+ import { FlowConfigurationService } from '../modules/flow-configuration/services/flow-configuration.service';
6
+ import { generateTransactionItem, updateQuantity } from '../utils';
7
+ import { FlowInfoService } from './flow-info.service';
8
+ import { FlowStateService } from './flow-state.service';
9
+ import { SalesTransactionService } from './sales-transaction.service';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "./flow-info.service";
12
+ import * as i2 from "./flow-state.service";
13
+ import * as i3 from "../modules/configuration/services/configuration.service";
14
+ import * as i4 from "./sales-transaction.service";
15
+ import * as i5 from "../modules/flow-configuration/services/flow-configuration.service";
16
+ import * as i6 from "@veloceapps/api/v2";
17
+ export class FlowStateConfigurationService {
18
+ constructor(flowInfoService, flowStateService, configurationService, salesTransactionService, flowConfigurationService, pcmApiService) {
19
+ this.flowInfoService = flowInfoService;
20
+ this.flowStateService = flowStateService;
21
+ this.configurationService = configurationService;
22
+ this.salesTransactionService = salesTransactionService;
23
+ this.flowConfigurationService = flowConfigurationService;
24
+ this.pcmApiService = pcmApiService;
25
+ this.pcmCache = {};
26
+ }
27
+ updateQuantity$(props) {
28
+ const allItems = this.salesTransactionService.state?.salesTransaction?.salesTransactionItems ?? [];
29
+ const ti = allItems.find(item => item.id === props.id);
30
+ if (!ti) {
31
+ return of(undefined);
32
+ }
33
+ return this.getPCMProduct$(ti.productId).pipe(map(pcm => updateQuantity(ti, props.qty, pcm)), switchMap(updatedTi => {
34
+ const state = this.salesTransactionService.state;
35
+ if (!state) {
36
+ return of(undefined);
37
+ }
38
+ const updatedState = {
39
+ ...state,
40
+ salesTransaction: {
41
+ ...state.salesTransaction,
42
+ salesTransactionItems: state.salesTransaction.salesTransactionItems.map(item => {
43
+ return updatedTi.id === item.id ? updatedTi : item;
44
+ }),
45
+ },
46
+ };
47
+ return this.flowConfigurationService.calculate$(updatedState);
48
+ }), switchMap(() => this.flowStateService.executeRequest$({}, true)), map(noop));
49
+ }
50
+ addToCart$(props) {
51
+ let request$;
52
+ const stateful = this.flowInfoService.flow?.properties.stateful;
53
+ if (stateful) {
54
+ const stateId = this.flowStateService.stateId;
55
+ if (!stateId) {
56
+ request$ = of();
57
+ }
58
+ else {
59
+ // TODO: Implement
60
+ request$ = of();
61
+ }
62
+ }
63
+ else {
64
+ request$ = this.configureExternal$(props);
65
+ }
66
+ return request$.pipe(switchMap(() => this.flowStateService.executeRequest$({}, true)), map(noop));
67
+ }
68
+ configureExternal$(props) {
69
+ return this.getPCMProduct$(props.productId).pipe(switchMap(pcm => {
70
+ const { state } = this.salesTransactionService;
71
+ if (!state) {
72
+ return of();
73
+ }
74
+ const stateToConfigure = {
75
+ ...state,
76
+ salesTransaction: {
77
+ ...state.salesTransaction,
78
+ salesTransactionItems: [
79
+ {
80
+ ...generateTransactionItem(pcm, this.configurationService.state?.salesTransaction.id, props.qty ?? 1),
81
+ stiAttributes: Object.entries(props.attributesMap ?? {}).map(([attributeName, value]) => ({
82
+ attributeName,
83
+ value,
84
+ })),
85
+ },
86
+ ],
87
+ },
88
+ };
89
+ return this.configurationService.justConfigureRequest$(stateToConfigure).pipe(switchMap(configurationResult => {
90
+ const state = this.salesTransactionService.state;
91
+ const addedProduct = configurationResult.salesTransaction.salesTransactionItems[0];
92
+ if (!state || !addedProduct) {
93
+ return of();
94
+ }
95
+ return this.flowConfigurationService.calculate$({
96
+ ...state,
97
+ salesTransaction: {
98
+ ...state.salesTransaction,
99
+ salesTransactionItems: [...state.salesTransaction.salesTransactionItems, addedProduct],
100
+ },
101
+ });
102
+ }));
103
+ }));
104
+ }
105
+ getPCMProduct$(productId) {
106
+ const cached = this.pcmCache[productId];
107
+ if (cached) {
108
+ return of(cached);
109
+ }
110
+ return this.pcmApiService
111
+ .fetchPCMByProductId(productId)
112
+ .pipe(tap(pcmProduct => (this.pcmCache[productId] = pcmProduct)));
113
+ }
114
+ }
115
+ FlowStateConfigurationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowStateConfigurationService, deps: [{ token: i1.FlowInfoService }, { token: i2.FlowStateService }, { token: i3.ConfigurationService }, { token: i4.SalesTransactionService }, { token: i5.FlowConfigurationService }, { token: i6.PCMApiService }], target: i0.ɵɵFactoryTarget.Injectable });
116
+ FlowStateConfigurationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowStateConfigurationService });
117
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FlowStateConfigurationService, decorators: [{
118
+ type: Injectable
119
+ }], ctorParameters: function () { return [{ type: i1.FlowInfoService }, { type: i2.FlowStateService }, { type: i3.ConfigurationService }, { type: i4.SalesTransactionService }, { type: i5.FlowConfigurationService }, { type: i6.PCMApiService }]; } });
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1zdGF0ZS1jb25maWd1cmF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jb3JlL3NlcnZpY2VzL2Zsb3ctc3RhdGUtY29uZmlndXJhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBR25ELE9BQU8sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFjLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBRS9GLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1FQUFtRSxDQUFDO0FBQzdHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDbkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7OztBQUd0RSxNQUFNLE9BQU8sNkJBQTZCO0lBR3hDLFlBQ1UsZUFBZ0MsRUFDaEMsZ0JBQWtDLEVBQ2xDLG9CQUEwQyxFQUMxQyx1QkFBZ0QsRUFDaEQsd0JBQWtELEVBQ2xELGFBQTRCO1FBTDVCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQUNoRCw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xE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LEVBQUU7d0JBQ2hCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQjt3QkFDekIscUJBQXFCLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxxQkFBcUIsRUFBRSxZQUFZLENBQUM7cUJBQ3ZGO2lCQUNGLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVPLGNBQWMsQ0FBQyxTQUFpQjtRQUN0QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hDLElBQUksTUFBTSxFQUFFO1lBQ1YsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDbkI7UUFFRCxPQUFPLElBQUksQ0FBQyxhQUFhO2FBQ3RCLG1CQUFtQixDQUFDLFNBQVMsQ0FBQzthQUM5QixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDOzswSEF6SFUsNkJBQTZCOzhIQUE3Qiw2QkFBNkI7MkZBQTdCLDZCQUE2QjtrQkFEekMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBDTUFwaVNlcnZpY2UgfSBmcm9tICdAdmVsb2NlYXBwcy9hcGkvdjInO1xuaW1wb3J0IHsgUENNUHJvZHVjdCwgU2FsZXNUcmFuc2FjdGlvbkl0ZW1BdHRyaWJ1dGUsIFRyYW5zYWN0aW9uQ29udGV4dCB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBtYXAsIG5vb3AsIE9ic2VydmFibGUsIG9mLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9tb2R1bGVzL2NvbmZpZ3VyYXRpb24vc2VydmljZXMvY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE5ld0NvbmZpZ3VyYXRpb25Qcm9wcywgUXVhbnRpdHlDaGFuZ2VQcm9wcyB9IGZyb20gJy4uL21vZHVsZXMvY29uZmlndXJhdGlvbi90eXBlcy9jb25maWd1cmF0aW9uLnR5cGVzJztcbmltcG9ydCB7IEZsb3dDb25maWd1cmF0aW9uU2VydmljZSB9IGZyb20gJy4uL21vZHVsZXMvZmxvdy1jb25maWd1cmF0aW9uL3NlcnZpY2VzL2Zsb3ctY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IGdlbmVyYXRlVHJhbnNhY3Rpb25JdGVtLCB1cGRhdGVRdWFudGl0eSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IEZsb3dJbmZvU2VydmljZSB9IGZyb20gJy4vZmxvdy1pbmZvLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmxvd1N0YXRlU2VydmljZSB9IGZyb20gJy4vZmxvdy1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IFNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9zYWxlcy10cmFuc2FjdGlvbi5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZsb3dTdGF0ZUNvbmZpZ3VyYXRpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBwY21DYWNoZTogRGljdGlvbmFyeTxQQ01Qcm9kdWN0PiA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmxvd0luZm9TZXJ2aWNlOiBGbG93SW5mb1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBmbG93U3RhdGVTZXJ2aWNlOiBGbG93U3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlndXJhdGlvblNlcnZpY2U6IENvbmZpZ3VyYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgc2FsZXNUcmFuc2FjdGlvblNlcnZpY2U6IFNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgZmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlOiBGbG93Q29uZmlndXJhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwY21BcGlTZXJ2aWNlOiBQQ01BcGlTZXJ2aWNlLFxuICApIHt9XG5cbiAgcHVibGljIHVwZGF0ZVF1YW50aXR5JChwcm9wczogUXVhbnRpdHlDaGFuZ2VQcm9wcyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IGFsbEl0ZW1zID0gdGhpcy5zYWxlc1RyYW5zYWN0aW9uU2VydmljZS5zdGF0ZT8uc2FsZXNUcmFuc2FjdGlvbj8uc2FsZXNUcmFuc2FjdGlvbkl0ZW1zID8/IFtdO1xuICAgIGNvbnN0IHRpID0gYWxsSXRlbXMuZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IHByb3BzLmlkKTtcblxuICAgIGlmICghdGkpIHtcbiAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmdldFBDTVByb2R1Y3QkKHRpLnByb2R1Y3RJZCkucGlwZShcbiAgICAgIG1hcChwY20gPT4gdXBkYXRlUXVhbnRpdHkodGksIHByb3BzLnF0eSwgcGNtKSksXG4gICAgICBzd2l0Y2hNYXAodXBkYXRlZFRpID0+IHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLnNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlLnN0YXRlO1xuXG4gICAgICAgIGlmICghc3RhdGUpIHtcbiAgICAgICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHVwZGF0ZWRTdGF0ZTogVHJhbnNhY3Rpb25Db250ZXh0ID0ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIHNhbGVzVHJhbnNhY3Rpb246IHtcbiAgICAgICAgICAgIC4uLnN0YXRlLnNhbGVzVHJhbnNhY3Rpb24sXG4gICAgICAgICAgICBzYWxlc1RyYW5zYWN0aW9uSXRlbXM6IHN0YXRlLnNhbGVzVHJhbnNhY3Rpb24uc2FsZXNUcmFuc2FjdGlvbkl0ZW1zLm1hcChpdGVtID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHVwZGF0ZWRUaS5pZCA9PT0gaXRlbS5pZCA/IHVwZGF0ZWRUaSA6IGl0ZW07XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLmZsb3dDb25maWd1cmF0aW9uU2VydmljZS5jYWxjdWxhdGUkKHVwZGF0ZWRTdGF0ZSk7XG4gICAgICB9KSxcbiAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmZsb3dTdGF0ZVNlcnZpY2UuZXhlY3V0ZVJlcXVlc3QkKHt9LCB0cnVlKSksXG4gICAgICBtYXAobm9vcCksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb0NhcnQkKHByb3BzOiBOZXdDb25maWd1cmF0aW9uUHJvcHMpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBsZXQgcmVxdWVzdCQ6IE9ic2VydmFibGU8dW5rbm93bj47XG4gICAgY29uc3Qgc3RhdGVmdWwgPSB0aGlzLmZsb3dJbmZvU2VydmljZS5mbG93Py5wcm9wZXJ0aWVzLnN0YXRlZnVsO1xuICAgIGlmIChzdGF0ZWZ1bCkge1xuICAgICAgY29uc3Qgc3RhdGVJZCA9IHRoaXMuZmxvd1N0YXRlU2VydmljZS5zdGF0ZUlkO1xuICAgICAgaWYgKCFzdGF0ZUlkKSB7XG4gICAgICAgIHJlcXVlc3QkID0gb2YoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFRPRE86IEltcGxlbWVudFxuICAgICAgICByZXF1ZXN0JCA9IG9mKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcXVlc3QkID0gdGhpcy5jb25maWd1cmVFeHRlcm5hbCQocHJvcHMpO1xuICAgIH1cblxuICAgIHJldHVybiByZXF1ZXN0JC5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuZmxvd1N0YXRlU2VydmljZS5leGVjdXRlUmVxdWVzdCQoe30sIHRydWUpKSxcbiAgICAgIG1hcChub29wKSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25maWd1cmVFeHRlcm5hbCQocHJvcHM6IE5ld0NvbmZpZ3VyYXRpb25Qcm9wcyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmdldFBDTVByb2R1Y3QkKHByb3BzLnByb2R1Y3RJZCkucGlwZShcbiAgICAgIHN3aXRjaE1hcChwY20gPT4ge1xuICAgICAgICBjb25zdCB7IHN0YXRlIH0gPSB0aGlzLnNhbGVzVHJhbnNhY3Rpb25TZXJ2aWNlO1xuICAgICAgICBpZiAoIXN0YXRlKSB7XG4gICAgICAgICAgcmV0dXJuIG9mKCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzdGF0ZVRvQ29uZmlndXJlOiBUcmFuc2FjdGlvbkNvbnRleHQgPSB7XG4gICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgc2FsZXNUcmFuc2FjdGlvbjoge1xuICAgICAgICAgICAgLi4uc3RhdGUuc2FsZXNUcmFuc2FjdGlvbixcbiAgICAgICAgICAgIHNhbGVzVHJhbnNhY3Rpb25JdGVtczogW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgLi4uZ2VuZXJhdGVUcmFuc2FjdGlvbkl0ZW0ocGNtLCB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLnN0YXRlPy5zYWxlc1RyYW5zYWN0aW9uLmlkLCBwcm9wcy5xdHkgPz8gMSksXG4gICAgICAgICAgICAgICAgc3RpQXR0cmlidXRlczogT2JqZWN0LmVudHJpZXMocHJvcHMuYXR0cmlidXRlc01hcCA/PyB7fSkubWFwKChbYXR0cmlidXRlTmFtZSwgdmFsdWVdKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgYXR0cmlidXRlTmFtZSxcbiAgICAgICAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgICAgIH0pKSBhcyBTYWxlc1RyYW5zYWN0aW9uSXRlbUF0dHJpYnV0ZVtdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb25TZXJ2aWNlLmp1c3RDb25maWd1cmVSZXF1ZXN0JChzdGF0ZVRvQ29uZmlndXJlKS5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcChjb25maWd1cmF0aW9uUmVzdWx0ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zYWxlc1RyYW5zYWN0aW9uU2VydmljZS5zdGF0ZTtcbiAgICAgICAgICAgIGNvbnN0IGFkZGVkUHJvZHVjdCA9IGNvbmZpZ3VyYXRpb25SZXN1bHQuc2FsZXNUcmFuc2FjdGlvbi5zYWxlc1RyYW5zYWN0aW9uSXRlbXNbMF07XG4gICAgICAgICAgICBpZiAoIXN0YXRlIHx8ICFhZGRlZFByb2R1Y3QpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZsb3dDb25maWd1cmF0aW9uU2VydmljZS5jYWxjdWxhdGUkKHtcbiAgICAgICAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgICAgICAgIHNhbGVzVHJhbnNhY3Rpb246IHtcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZS5zYWxlc1RyYW5zYWN0aW9uLFxuICAgICAgICAgICAgICAgIHNhbGVzVHJhbnNhY3Rpb25JdGVtczogWy4uLnN0YXRlLnNhbGVzVHJhbnNhY3Rpb24uc2FsZXNUcmFuc2FjdGlvbkl0ZW1zLCBhZGRlZFByb2R1Y3RdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRQQ01Qcm9kdWN0JChwcm9kdWN0SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8UENNUHJvZHVjdD4ge1xuICAgIGNvbnN0IGNhY2hlZCA9IHRoaXMucGNtQ2FjaGVbcHJvZHVjdElkXTtcbiAgICBpZiAoY2FjaGVkKSB7XG4gICAgICByZXR1cm4gb2YoY2FjaGVkKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wY21BcGlTZXJ2aWNlXG4gICAgICAuZmV0Y2hQQ01CeVByb2R1Y3RJZChwcm9kdWN0SWQpXG4gICAgICAucGlwZSh0YXAocGNtUHJvZHVjdCA9PiAodGhpcy5wY21DYWNoZVtwcm9kdWN0SWRdID0gcGNtUHJvZHVjdCkpKTtcbiAgfVxufVxuIl19