@veloceapps/sdk 5.0.13-0

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 (387) hide show
  1. package/README.md +3 -0
  2. package/bundles/veloceapps-sdk-cms.umd.js +1975 -0
  3. package/bundles/veloceapps-sdk-cms.umd.js.map +1 -0
  4. package/bundles/veloceapps-sdk-core.umd.js +1610 -0
  5. package/bundles/veloceapps-sdk-core.umd.js.map +1 -0
  6. package/bundles/veloceapps-sdk-runtime.umd.js +4349 -0
  7. package/bundles/veloceapps-sdk-runtime.umd.js.map +1 -0
  8. package/bundles/veloceapps-sdk.umd.js +3307 -0
  9. package/bundles/veloceapps-sdk.umd.js.map +1 -0
  10. package/cms/cms.actions.d.ts +28 -0
  11. package/cms/cms.default.d.ts +5 -0
  12. package/cms/cms.elements.d.ts +4 -0
  13. package/cms/components/element-children/element-children.component.d.ts +10 -0
  14. package/cms/components/element-children/element-children.module.d.ts +8 -0
  15. package/cms/components/element-renderer/element-renderer.component.d.ts +36 -0
  16. package/cms/components/element-renderer/element-renderer.module.d.ts +7 -0
  17. package/cms/components/element.component.d.ts +17 -0
  18. package/cms/components/index.d.ts +1 -0
  19. package/cms/components/plugin.component.d.ts +15 -0
  20. package/cms/components/preview/index.d.ts +2 -0
  21. package/cms/components/preview/preview.component.d.ts +34 -0
  22. package/cms/components/preview/preview.module.d.ts +11 -0
  23. package/cms/decorators/element.decorator.d.ts +2 -0
  24. package/cms/decorators/index.d.ts +1 -0
  25. package/cms/directives/custom-template.directive.d.ts +12 -0
  26. package/cms/engine/models/entity.d.ts +11 -0
  27. package/cms/engine/models/plugin.d.ts +5 -0
  28. package/cms/index.d.ts +11 -0
  29. package/cms/injection-tokens.d.ts +11 -0
  30. package/cms/launcher.module.d.ts +10 -0
  31. package/cms/modules/federated/default-options.d.ts +4 -0
  32. package/cms/modules/federated/export.d.ts +1 -0
  33. package/cms/modules/federated/federated.component.d.ts +26 -0
  34. package/cms/modules/federated/federated.module.d.ts +9 -0
  35. package/cms/modules/federated/federated.types.d.ts +30 -0
  36. package/cms/modules/federated/federated.utils.d.ts +1 -0
  37. package/cms/package.json +10 -0
  38. package/cms/plugins/configuration.plugin.d.ts +23 -0
  39. package/cms/plugins/io.plugin.d.ts +9 -0
  40. package/cms/plugins/script.plugin.d.ts +13 -0
  41. package/cms/services/dynamic-module.service.d.ts +15 -0
  42. package/cms/services/element-context.service.d.ts +8 -0
  43. package/cms/services/index.d.ts +3 -0
  44. package/cms/services/integration.state.d.ts +17 -0
  45. package/cms/services/io-provider.service.d.ts +15 -0
  46. package/cms/services/launcher.service.d.ts +18 -0
  47. package/cms/services/templates.service.d.ts +14 -0
  48. package/cms/types/common.types.d.ts +108 -0
  49. package/cms/types/compilation.types.d.ts +6 -0
  50. package/cms/types/configuration.types.d.ts +20 -0
  51. package/cms/types/elements.types.d.ts +2 -0
  52. package/cms/types/index.d.ts +7 -0
  53. package/cms/types/integration.types.d.ts +4 -0
  54. package/cms/types/metrics.types.d.ts +5 -0
  55. package/cms/types/path.types.d.ts +11 -0
  56. package/cms/utils/element.utils.d.ts +17 -0
  57. package/cms/utils/elements-resolver.d.ts +24 -0
  58. package/cms/utils/index.d.ts +3 -0
  59. package/cms/utils/path.utils.d.ts +5 -0
  60. package/cms/veloceapps-sdk-cms.d.ts +5 -0
  61. package/cms/vendor-map.d.ts +708 -0
  62. package/core/core.module.d.ts +8 -0
  63. package/core/index.d.ts +6 -0
  64. package/core/modules/configuration/configuration.module.d.ts +7 -0
  65. package/core/modules/configuration/helpers.d.ts +3 -0
  66. package/core/modules/configuration/index.d.ts +4 -0
  67. package/core/modules/configuration/services/configuration-runtime.service.d.ts +29 -0
  68. package/core/modules/configuration/services/configuration.service.d.ts +45 -0
  69. package/core/modules/configuration/services/runtime-context.service.d.ts +12 -0
  70. package/core/modules/configuration/types/configuration-runtime.types.d.ts +7 -0
  71. package/core/modules/flow-configuration/flow-configuration.module.d.ts +6 -0
  72. package/core/modules/flow-configuration/index.d.ts +4 -0
  73. package/core/modules/flow-configuration/services/flow-configuration.service.d.ts +38 -0
  74. package/core/modules/flow-configuration/services/flow-update.service.d.ts +12 -0
  75. package/core/modules/flow-configuration/types/update.types.d.ts +12 -0
  76. package/core/modules/index.d.ts +2 -0
  77. package/core/package.json +10 -0
  78. package/core/services/context.service.d.ts +18 -0
  79. package/core/services/index.d.ts +3 -0
  80. package/core/services/product-images.service.d.ts +12 -0
  81. package/core/services/quote-draft.service.d.ts +62 -0
  82. package/core/types/index.d.ts +3 -0
  83. package/core/types/quote-states.types.d.ts +6 -0
  84. package/core/types/runtime.types.d.ts +31 -0
  85. package/core/types/ui-definition.types.d.ts +26 -0
  86. package/core/utils/index.d.ts +2 -0
  87. package/core/utils/line-item.utils.d.ts +26 -0
  88. package/core/utils/line-item.worker.d.ts +12 -0
  89. package/core/veloceapps-sdk-core.d.ts +5 -0
  90. package/esm2015/cms/cms.actions.js +47 -0
  91. package/esm2015/cms/cms.default.js +6 -0
  92. package/esm2015/cms/cms.elements.js +29 -0
  93. package/esm2015/cms/components/element-children/element-children.component.js +23 -0
  94. package/esm2015/cms/components/element-children/element-children.module.js +18 -0
  95. package/esm2015/cms/components/element-renderer/element-renderer.component.js +169 -0
  96. package/esm2015/cms/components/element-renderer/element-renderer.module.js +16 -0
  97. package/esm2015/cms/components/element.component.js +44 -0
  98. package/esm2015/cms/components/index.js +2 -0
  99. package/esm2015/cms/components/plugin.component.js +16 -0
  100. package/esm2015/cms/components/preview/index.js +3 -0
  101. package/esm2015/cms/components/preview/preview.component.js +108 -0
  102. package/esm2015/cms/components/preview/preview.module.js +23 -0
  103. package/esm2015/cms/decorators/element.decorator.js +6 -0
  104. package/esm2015/cms/decorators/index.js +2 -0
  105. package/esm2015/cms/directives/custom-template.directive.js +25 -0
  106. package/esm2015/cms/engine/models/entity.js +18 -0
  107. package/esm2015/cms/engine/models/plugin.js +6 -0
  108. package/esm2015/cms/index.js +11 -0
  109. package/esm2015/cms/injection-tokens.js +8 -0
  110. package/esm2015/cms/launcher.module.js +23 -0
  111. package/esm2015/cms/modules/federated/default-options.js +5 -0
  112. package/esm2015/cms/modules/federated/export.js +2 -0
  113. package/esm2015/cms/modules/federated/federated.component.js +82 -0
  114. package/esm2015/cms/modules/federated/federated.module.js +19 -0
  115. package/esm2015/cms/modules/federated/federated.types.js +2 -0
  116. package/esm2015/cms/modules/federated/federated.utils.js +37 -0
  117. package/esm2015/cms/plugins/configuration.plugin.js +98 -0
  118. package/esm2015/cms/plugins/io.plugin.js +37 -0
  119. package/esm2015/cms/plugins/script.plugin.js +66 -0
  120. package/esm2015/cms/services/dynamic-module.service.js +33 -0
  121. package/esm2015/cms/services/element-context.service.js +10 -0
  122. package/esm2015/cms/services/index.js +4 -0
  123. package/esm2015/cms/services/integration.state.js +40 -0
  124. package/esm2015/cms/services/io-provider.service.js +51 -0
  125. package/esm2015/cms/services/launcher.service.js +57 -0
  126. package/esm2015/cms/services/templates.service.js +31 -0
  127. package/esm2015/cms/types/common.types.js +2 -0
  128. package/esm2015/cms/types/compilation.types.js +2 -0
  129. package/esm2015/cms/types/configuration.types.js +2 -0
  130. package/esm2015/cms/types/elements.types.js +2 -0
  131. package/esm2015/cms/types/index.js +8 -0
  132. package/esm2015/cms/types/integration.types.js +2 -0
  133. package/esm2015/cms/types/metrics.types.js +2 -0
  134. package/esm2015/cms/types/path.types.js +2 -0
  135. package/esm2015/cms/utils/element.utils.js +161 -0
  136. package/esm2015/cms/utils/elements-resolver.js +147 -0
  137. package/esm2015/cms/utils/index.js +4 -0
  138. package/esm2015/cms/utils/path.utils.js +67 -0
  139. package/esm2015/cms/veloceapps-sdk-cms.js +5 -0
  140. package/esm2015/cms/vendor-map.js +34 -0
  141. package/esm2015/core/core.module.js +18 -0
  142. package/esm2015/core/index.js +7 -0
  143. package/esm2015/core/modules/configuration/configuration.module.js +34 -0
  144. package/esm2015/core/modules/configuration/helpers.js +10 -0
  145. package/esm2015/core/modules/configuration/index.js +5 -0
  146. package/esm2015/core/modules/configuration/services/configuration-runtime.service.js +92 -0
  147. package/esm2015/core/modules/configuration/services/configuration.service.js +173 -0
  148. package/esm2015/core/modules/configuration/services/runtime-context.service.js +51 -0
  149. package/esm2015/core/modules/configuration/types/configuration-runtime.types.js +2 -0
  150. package/esm2015/core/modules/flow-configuration/flow-configuration.module.js +18 -0
  151. package/esm2015/core/modules/flow-configuration/index.js +5 -0
  152. package/esm2015/core/modules/flow-configuration/services/flow-configuration.service.js +135 -0
  153. package/esm2015/core/modules/flow-configuration/services/flow-update.service.js +129 -0
  154. package/esm2015/core/modules/flow-configuration/types/update.types.js +2 -0
  155. package/esm2015/core/modules/index.js +3 -0
  156. package/esm2015/core/services/context.service.js +50 -0
  157. package/esm2015/core/services/index.js +4 -0
  158. package/esm2015/core/services/product-images.service.js +30 -0
  159. package/esm2015/core/services/quote-draft.service.js +207 -0
  160. package/esm2015/core/types/index.js +4 -0
  161. package/esm2015/core/types/quote-states.types.js +2 -0
  162. package/esm2015/core/types/runtime.types.js +16 -0
  163. package/esm2015/core/types/ui-definition.types.js +2 -0
  164. package/esm2015/core/utils/index.js +3 -0
  165. package/esm2015/core/utils/line-item.utils.js +100 -0
  166. package/esm2015/core/utils/line-item.worker.js +19 -0
  167. package/esm2015/core/veloceapps-sdk-core.js +5 -0
  168. package/esm2015/index.js +2 -0
  169. package/esm2015/runtime/components/component-preview/component-preview.component.js +125 -0
  170. package/esm2015/runtime/components/index.js +5 -0
  171. package/esm2015/runtime/components/section-renderer/section-renderer.component.js +71 -0
  172. package/esm2015/runtime/components/ui-runtime/runtime.component.js +429 -0
  173. package/esm2015/runtime/components/ui-runtime-preview/runtime-preview.component.js +109 -0
  174. package/esm2015/runtime/execution/components/children-placeholder/children-placeholder.component.js +68 -0
  175. package/esm2015/runtime/execution/components/context-provider/context-provider.component.js +36 -0
  176. package/esm2015/runtime/execution/components/execution-section-renderer/execution-section-renderer.component.js +72 -0
  177. package/esm2015/runtime/execution/components/federated/federated.component.js +81 -0
  178. package/esm2015/runtime/execution/components/velo-attribute/velo-attribute.component.js +65 -0
  179. package/esm2015/runtime/execution/components/velo-multiselect/velo-multiselect.component.js +136 -0
  180. package/esm2015/runtime/execution/components/velo-port-checkbox/velo-port-checkbox.component.js +80 -0
  181. package/esm2015/runtime/execution/components/velo-port-dropdown/velo-port-dropdown.component.js +101 -0
  182. package/esm2015/runtime/execution/components/velo-port-radio/velo-port-radio.component.js +150 -0
  183. package/esm2015/runtime/execution/components/velo-type/velo-type.component.js +121 -0
  184. package/esm2015/runtime/execution/directives/section-script.directive.js +242 -0
  185. package/esm2015/runtime/execution/directives/sf-query.directive.js +34 -0
  186. package/esm2015/runtime/execution/directives/velo-attribute.directive.js +86 -0
  187. package/esm2015/runtime/execution/directives/velo-port.directive.js +373 -0
  188. package/esm2015/runtime/execution/directives/vl-approval.directive.js +22 -0
  189. package/esm2015/runtime/execution/directives/vl-document-attachments.directive.js +35 -0
  190. package/esm2015/runtime/execution/directives/vl-document-templates.directive.js +59 -0
  191. package/esm2015/runtime/execution/directives/vl-quote.directive.js +41 -0
  192. package/esm2015/runtime/execution/directives/vl-ramp.directive.js +51 -0
  193. package/esm2015/runtime/execution/runtime-execution.module.js +163 -0
  194. package/esm2015/runtime/execution/utils/federated.util.js +37 -0
  195. package/esm2015/runtime/index.js +5 -0
  196. package/esm2015/runtime/runtime.module.js +104 -0
  197. package/esm2015/runtime/services/cart.service.js +27 -0
  198. package/esm2015/runtime/services/collapsible-state.service.js +34 -0
  199. package/esm2015/runtime/services/configuration.service.js +102 -0
  200. package/esm2015/runtime/services/current-state.service.js +17 -0
  201. package/esm2015/runtime/services/form-scope.service.js +30 -0
  202. package/esm2015/runtime/services/index.js +4 -0
  203. package/esm2015/runtime/services/product-model-cache.service.js +30 -0
  204. package/esm2015/runtime/services/runtime-context.service.js +56 -0
  205. package/esm2015/runtime/services/runtime-form.service.js +224 -0
  206. package/esm2015/runtime/services/runtime.service.js +108 -0
  207. package/esm2015/runtime/services/section-helper.service.js +27 -0
  208. package/esm2015/runtime/services/section-scope.service.js +36 -0
  209. package/esm2015/runtime/services/section-store.service.js +22 -0
  210. package/esm2015/runtime/services/section.service.js +124 -0
  211. package/esm2015/runtime/types/bound-data.types.js +7 -0
  212. package/esm2015/runtime/types/index.js +2 -0
  213. package/esm2015/runtime/types/runtime.types.js +2 -0
  214. package/esm2015/runtime/types/script-registry.types.js +51 -0
  215. package/esm2015/runtime/utils/line-item.util.js +273 -0
  216. package/esm2015/runtime/utils/section.utils.js +26 -0
  217. package/esm2015/runtime/utils/sections-binder.helper.js +105 -0
  218. package/esm2015/runtime/veloceapps-sdk-runtime.js +5 -0
  219. package/esm2015/src/components/dialog/dialog.component.js +30 -0
  220. package/esm2015/src/components/dialog/dialog.module.js +19 -0
  221. package/esm2015/src/components/dialog/dialog.types.js +2 -0
  222. package/esm2015/src/components/doc-gen/doc-gen.component.js +109 -0
  223. package/esm2015/src/components/doc-gen/doc-gen.module.js +19 -0
  224. package/esm2015/src/components/header/cart-overlay/cart-preview.component.js +122 -0
  225. package/esm2015/src/components/header/cart-overlay/cart-preview.module.js +46 -0
  226. package/esm2015/src/components/header/header.component.js +310 -0
  227. package/esm2015/src/components/header/header.module.js +50 -0
  228. package/esm2015/src/components/header/header.types.js +2 -0
  229. package/esm2015/src/components/header/metrics/index.js +2 -0
  230. package/esm2015/src/components/header/metrics/metrics.component.js +216 -0
  231. package/esm2015/src/components/header/metrics/metrics.definitions.js +9 -0
  232. package/esm2015/src/components/header/metrics/metrics.module.js +67 -0
  233. package/esm2015/src/constants.js +2 -0
  234. package/esm2015/src/flow-routing.module.js +137 -0
  235. package/esm2015/src/flow.component.js +45 -0
  236. package/esm2015/src/flow.module.js +60 -0
  237. package/esm2015/src/guards/context.guard.js +84 -0
  238. package/esm2015/src/guards/index.js +2 -0
  239. package/esm2015/src/guards/product-unload.guard.js +43 -0
  240. package/esm2015/src/guards/root.guard.js +41 -0
  241. package/esm2015/src/index.js +7 -0
  242. package/esm2015/src/pages/catalog/catalog.component.js +117 -0
  243. package/esm2015/src/pages/catalog/catalog.module.js +20 -0
  244. package/esm2015/src/pages/debug/debug.component.js +61 -0
  245. package/esm2015/src/pages/debug/debug.module.js +48 -0
  246. package/esm2015/src/pages/empty-account/empty-account.component.js +17 -0
  247. package/esm2015/src/pages/empty-account/empty-account.module.js +20 -0
  248. package/esm2015/src/pages/legacy-product/legacy-product.component.js +132 -0
  249. package/esm2015/src/pages/legacy-product/legacy-product.module.js +21 -0
  250. package/esm2015/src/pages/product/product.component.js +108 -0
  251. package/esm2015/src/pages/product/product.module.js +20 -0
  252. package/esm2015/src/pages/record-not-found/record-not-found.component.js +29 -0
  253. package/esm2015/src/pages/record-not-found/record-not-found.module.js +20 -0
  254. package/esm2015/src/pages/remote/remote.component.js +353 -0
  255. package/esm2015/src/pages/remote/remote.module.js +20 -0
  256. package/esm2015/src/pages/remote/remote.types.js +2 -0
  257. package/esm2015/src/pages/shopping-cart/shopping-cart.component.js +117 -0
  258. package/esm2015/src/pages/shopping-cart/shopping-cart.module.js +20 -0
  259. package/esm2015/src/resolvers/flow.resolver.js +62 -0
  260. package/esm2015/src/resolvers/quote.resolver.js +74 -0
  261. package/esm2015/src/services/doc-gen.service.js +33 -0
  262. package/esm2015/src/services/flow-dialog.service.js +123 -0
  263. package/esm2015/src/services/flow-router.service.js +136 -0
  264. package/esm2015/src/services/flow.service.js +77 -0
  265. package/esm2015/src/services/index.js +2 -0
  266. package/esm2015/src/types/context-route.types.js +2 -0
  267. package/esm2015/src/types/flow-customization.types.js +3 -0
  268. package/esm2015/src/types/index.js +3 -0
  269. package/esm2015/src/types/route.types.js +2 -0
  270. package/esm2015/src/utils/flow.utils.js +22 -0
  271. package/esm2015/src/utils/index.js +2 -0
  272. package/esm2015/veloceapps-sdk.js +5 -0
  273. package/fesm2015/veloceapps-sdk-cms.js +1443 -0
  274. package/fesm2015/veloceapps-sdk-cms.js.map +1 -0
  275. package/fesm2015/veloceapps-sdk-core.js +1035 -0
  276. package/fesm2015/veloceapps-sdk-core.js.map +1 -0
  277. package/fesm2015/veloceapps-sdk-runtime.js +3896 -0
  278. package/fesm2015/veloceapps-sdk-runtime.js.map +1 -0
  279. package/fesm2015/veloceapps-sdk.js +2758 -0
  280. package/fesm2015/veloceapps-sdk.js.map +1 -0
  281. package/index.d.ts +1 -0
  282. package/package.json +50 -0
  283. package/runtime/components/component-preview/component-preview.component.d.ts +27 -0
  284. package/runtime/components/index.d.ts +4 -0
  285. package/runtime/components/section-renderer/section-renderer.component.d.ts +25 -0
  286. package/runtime/components/ui-runtime/runtime.component.d.ts +53 -0
  287. package/runtime/components/ui-runtime-preview/runtime-preview.component.d.ts +27 -0
  288. package/runtime/execution/components/children-placeholder/children-placeholder.component.d.ts +30 -0
  289. package/runtime/execution/components/context-provider/context-provider.component.d.ts +14 -0
  290. package/runtime/execution/components/execution-section-renderer/execution-section-renderer.component.d.ts +25 -0
  291. package/runtime/execution/components/federated/federated.component.d.ts +36 -0
  292. package/runtime/execution/components/velo-attribute/velo-attribute.component.d.ts +19 -0
  293. package/runtime/execution/components/velo-multiselect/velo-multiselect.component.d.ts +35 -0
  294. package/runtime/execution/components/velo-port-checkbox/velo-port-checkbox.component.d.ts +22 -0
  295. package/runtime/execution/components/velo-port-dropdown/velo-port-dropdown.component.d.ts +22 -0
  296. package/runtime/execution/components/velo-port-radio/velo-port-radio.component.d.ts +28 -0
  297. package/runtime/execution/components/velo-type/velo-type.component.d.ts +31 -0
  298. package/runtime/execution/directives/section-script.directive.d.ts +59 -0
  299. package/runtime/execution/directives/sf-query.directive.d.ts +15 -0
  300. package/runtime/execution/directives/velo-attribute.directive.d.ts +26 -0
  301. package/runtime/execution/directives/velo-port.directive.d.ts +74 -0
  302. package/runtime/execution/directives/vl-approval.directive.d.ts +10 -0
  303. package/runtime/execution/directives/vl-document-attachments.directive.d.ts +15 -0
  304. package/runtime/execution/directives/vl-document-templates.directive.d.ts +33 -0
  305. package/runtime/execution/directives/vl-quote.directive.d.ts +14 -0
  306. package/runtime/execution/directives/vl-ramp.directive.d.ts +15 -0
  307. package/runtime/execution/runtime-execution.module.d.ts +27 -0
  308. package/runtime/execution/utils/federated.util.d.ts +6 -0
  309. package/runtime/index.d.ts +4 -0
  310. package/runtime/package.json +10 -0
  311. package/runtime/runtime.module.d.ts +18 -0
  312. package/runtime/services/cart.service.d.ts +15 -0
  313. package/runtime/services/collapsible-state.service.d.ts +15 -0
  314. package/runtime/services/configuration.service.d.ts +19 -0
  315. package/runtime/services/current-state.service.d.ts +8 -0
  316. package/runtime/services/form-scope.service.d.ts +20 -0
  317. package/runtime/services/index.d.ts +3 -0
  318. package/runtime/services/product-model-cache.service.d.ts +14 -0
  319. package/runtime/services/runtime-context.service.d.ts +16 -0
  320. package/runtime/services/runtime-form.service.d.ts +24 -0
  321. package/runtime/services/runtime.service.d.ts +43 -0
  322. package/runtime/services/section-helper.service.d.ts +8 -0
  323. package/runtime/services/section-scope.service.d.ts +14 -0
  324. package/runtime/services/section-store.service.d.ts +11 -0
  325. package/runtime/services/section.service.d.ts +30 -0
  326. package/runtime/types/bound-data.types.d.ts +13 -0
  327. package/runtime/types/index.d.ts +1 -0
  328. package/runtime/types/runtime.types.d.ts +19 -0
  329. package/runtime/types/script-registry.types.d.ts +13 -0
  330. package/runtime/utils/line-item.util.d.ts +34 -0
  331. package/runtime/utils/section.utils.d.ts +2 -0
  332. package/runtime/utils/sections-binder.helper.d.ts +16 -0
  333. package/runtime/veloceapps-sdk-runtime.d.ts +5 -0
  334. package/src/components/dialog/dialog.component.d.ts +13 -0
  335. package/src/components/dialog/dialog.module.d.ts +9 -0
  336. package/src/components/dialog/dialog.types.d.ts +6 -0
  337. package/src/components/doc-gen/doc-gen.component.d.ts +26 -0
  338. package/src/components/doc-gen/doc-gen.module.d.ts +9 -0
  339. package/src/components/header/cart-overlay/cart-preview.component.d.ts +36 -0
  340. package/src/components/header/cart-overlay/cart-preview.module.d.ts +14 -0
  341. package/src/components/header/header.component.d.ts +64 -0
  342. package/src/components/header/header.module.d.ts +15 -0
  343. package/src/components/header/header.types.d.ts +20 -0
  344. package/src/components/header/metrics/index.d.ts +1 -0
  345. package/src/components/header/metrics/metrics.component.d.ts +49 -0
  346. package/src/components/header/metrics/metrics.definitions.d.ts +4 -0
  347. package/src/components/header/metrics/metrics.module.d.ts +17 -0
  348. package/src/constants.d.ts +1 -0
  349. package/src/flow-routing.module.d.ts +13 -0
  350. package/src/flow.component.d.ts +23 -0
  351. package/src/flow.module.d.ts +16 -0
  352. package/src/guards/context.guard.d.ts +19 -0
  353. package/src/guards/index.d.ts +1 -0
  354. package/src/guards/product-unload.guard.d.ts +17 -0
  355. package/src/guards/root.guard.d.ts +15 -0
  356. package/src/index.d.ts +6 -0
  357. package/src/pages/catalog/catalog.component.d.ts +32 -0
  358. package/src/pages/catalog/catalog.module.d.ts +10 -0
  359. package/src/pages/debug/debug.component.d.ts +25 -0
  360. package/src/pages/debug/debug.module.d.ts +14 -0
  361. package/src/pages/empty-account/empty-account.component.d.ts +5 -0
  362. package/src/pages/empty-account/empty-account.module.d.ts +10 -0
  363. package/src/pages/legacy-product/legacy-product.component.d.ts +37 -0
  364. package/src/pages/legacy-product/legacy-product.module.d.ts +10 -0
  365. package/src/pages/product/product.component.d.ts +32 -0
  366. package/src/pages/product/product.module.d.ts +10 -0
  367. package/src/pages/record-not-found/record-not-found.component.d.ts +11 -0
  368. package/src/pages/record-not-found/record-not-found.module.d.ts +9 -0
  369. package/src/pages/remote/remote.component.d.ts +47 -0
  370. package/src/pages/remote/remote.module.d.ts +10 -0
  371. package/src/pages/remote/remote.types.d.ts +4 -0
  372. package/src/pages/shopping-cart/shopping-cart.component.d.ts +32 -0
  373. package/src/pages/shopping-cart/shopping-cart.module.d.ts +10 -0
  374. package/src/resolvers/flow.resolver.d.ts +16 -0
  375. package/src/resolvers/quote.resolver.d.ts +20 -0
  376. package/src/services/doc-gen.service.d.ts +13 -0
  377. package/src/services/flow-dialog.service.d.ts +26 -0
  378. package/src/services/flow-router.service.d.ts +36 -0
  379. package/src/services/flow.service.d.ts +17 -0
  380. package/src/services/index.d.ts +1 -0
  381. package/src/types/context-route.types.d.ts +5 -0
  382. package/src/types/flow-customization.types.d.ts +11 -0
  383. package/src/types/index.d.ts +2 -0
  384. package/src/types/route.types.d.ts +9 -0
  385. package/src/utils/flow.utils.d.ts +8 -0
  386. package/src/utils/index.d.ts +1 -0
  387. package/veloceapps-sdk.d.ts +5 -0
@@ -0,0 +1,136 @@
1
+ import { TemplatePortal } from '@angular/cdk/portal';
2
+ import { Component, EventEmitter, HostBinding, Input, Output, ViewChild, } from '@angular/core';
3
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
+ import { merge, of } from 'rxjs';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/cdk/overlay";
7
+ import * as i2 from "@angular/common";
8
+ export class MultiselectComponent {
9
+ constructor(elRef, viewContainerRef, overlay) {
10
+ this.elRef = elRef;
11
+ this.viewContainerRef = viewContainerRef;
12
+ this.overlay = overlay;
13
+ this.selectionChange = new EventEmitter();
14
+ this.selected = [];
15
+ this.displayValue = '';
16
+ this.touched = false;
17
+ this.disabled = false;
18
+ this.opened = false;
19
+ this.onChange = () => {
20
+ return;
21
+ };
22
+ this.onTouched = () => {
23
+ return;
24
+ };
25
+ }
26
+ ngOnDestroy() {
27
+ this.destroyDropdown();
28
+ }
29
+ writeValue(selected) {
30
+ this.selected = selected;
31
+ this.getDisplayValue();
32
+ }
33
+ registerOnChange(onChange) {
34
+ this.onChange = onChange;
35
+ }
36
+ registerOnTouched(onTouched) {
37
+ this.onTouched = onTouched;
38
+ }
39
+ setDisabledState(disabled) {
40
+ this.disabled = disabled;
41
+ }
42
+ handleSelection(value) {
43
+ const selectedItem = this.selected.find(item => item === value);
44
+ if (selectedItem) {
45
+ this.selected = this.selected.filter(item => item !== value);
46
+ }
47
+ else {
48
+ this.selected = [...this.selected, value];
49
+ }
50
+ this.getDisplayValue();
51
+ this.selectionChange.emit(this.selected);
52
+ this.onChange(this.selected);
53
+ }
54
+ toggleOpened() {
55
+ this.opened ? this.destroyDropdown() : this.openDropdown();
56
+ }
57
+ getDisplayValue() {
58
+ const joinedValue = this.selected.join(', ');
59
+ this.displayValue = joinedValue.length > 24 ? `${this.selected.length} options selected` : joinedValue;
60
+ }
61
+ openDropdown() {
62
+ this.opened = true;
63
+ this.overlayRef = this.overlay.create({
64
+ hasBackdrop: true,
65
+ backdropClass: 'cdk-overlay-transparent-backdrop',
66
+ scrollStrategy: this.overlay.scrollStrategies.close(),
67
+ positionStrategy: this.overlay
68
+ .position()
69
+ .flexibleConnectedTo(this.elRef)
70
+ .withPositions([
71
+ {
72
+ originX: 'end',
73
+ originY: 'bottom',
74
+ overlayX: 'end',
75
+ overlayY: 'top',
76
+ offsetY: 8,
77
+ },
78
+ ]),
79
+ });
80
+ const templatePortal = new TemplatePortal(this.overlayTemplate, this.viewContainerRef);
81
+ this.overlayRef.attach(templatePortal);
82
+ this.dropdownClosingActionsSub = this.dropdownClosingActions().subscribe(() => this.destroyDropdown());
83
+ }
84
+ dropdownClosingActions() {
85
+ if (!this.overlayRef) {
86
+ return of();
87
+ }
88
+ const backdropClick$ = this.overlayRef.backdropClick();
89
+ const detachment$ = this.overlayRef.detachments();
90
+ return merge(backdropClick$, detachment$);
91
+ }
92
+ destroyDropdown() {
93
+ var _a;
94
+ if (!this.overlayRef || !this.opened) {
95
+ return;
96
+ }
97
+ (_a = this.dropdownClosingActionsSub) === null || _a === void 0 ? void 0 : _a.unsubscribe();
98
+ this.opened = false;
99
+ this.overlayRef.detach();
100
+ }
101
+ }
102
+ MultiselectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: MultiselectComponent, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i1.Overlay }], target: i0.ɵɵFactoryTarget.Component });
103
+ MultiselectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: MultiselectComponent, selector: "velo-multiselect", inputs: { options: "options" }, outputs: { selectionChange: "selectionChange" }, host: { properties: { "class.opened": "this.opened" } }, providers: [
104
+ {
105
+ provide: NG_VALUE_ACCESSOR,
106
+ multi: true,
107
+ useExisting: MultiselectComponent,
108
+ },
109
+ ], viewQueries: [{ propertyName: "overlayTemplate", first: true, predicate: ["overlayTemplate"], descendants: true }], ngImport: i0, template: "<div class=\"value-wrapper\" (click)=\"toggleOpened()\">\n <span class=\"value\">{{ displayValue }}</span>\n <i class=\"fa fa-chevron-down\"></i>\n</div>\n\n<ng-template #overlayTemplate>\n <div class=\"dropdown\">\n <div class=\"checkbox-select\" *ngFor=\"let option of options\">\n <label>\n <input\n type=\"checkbox\"\n [checked]=\"selected.includes(option)\"\n (change)=\"handleSelection(option)\"\n [value]=\"option\"\n />\n\n <i class=\"input-helper\"></i>\n {{ option }}\n </label>\n </div>\n </div>\n</ng-template>\n", styles: [":host{display:block;width:172px}:host[disabled] .value-wrapper{pointer-events:none;background:rgba(0,0,0,.06);border-color:#0003}:host.opened .value-wrapper{border-color:#0e8fff}:host.opened i{transform:rotate(180deg)}:host .value-wrapper{cursor:pointer;display:flex;align-items:center;justify-content:space-between;height:34px;padding:0 10px;border:1px solid #ddd;border-radius:3px;background:#fff}:host .value-wrapper .value{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dropdown{width:172px;max-height:200px;background:#fff;border:1px solid #ddd;border-radius:3px;overflow:auto}.dropdown .checkbox-select{padding:0 10px;width:100%}.dropdown .checkbox-select label{width:100%;height:36px;line-height:36px}.dropdown .checkbox-select .input-helper:before{top:10px}.dropdown .checkbox-select .input-helper:after{top:12px}.dropdown .checkbox-select:hover{background:#d5dddf}\n"], directives: [{ type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: MultiselectComponent, decorators: [{
111
+ type: Component,
112
+ args: [{
113
+ // eslint-disable-next-line @angular-eslint/component-selector
114
+ selector: 'velo-multiselect',
115
+ templateUrl: 'velo-multiselect.component.html',
116
+ styleUrls: ['./velo-multiselect.component.scss'],
117
+ providers: [
118
+ {
119
+ provide: NG_VALUE_ACCESSOR,
120
+ multi: true,
121
+ useExisting: MultiselectComponent,
122
+ },
123
+ ],
124
+ }]
125
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i1.Overlay }]; }, propDecorators: { options: [{
126
+ type: Input
127
+ }], selectionChange: [{
128
+ type: Output
129
+ }], overlayTemplate: [{
130
+ type: ViewChild,
131
+ args: ['overlayTemplate']
132
+ }], opened: [{
133
+ type: HostBinding,
134
+ args: ['class.opened']
135
+ }] } });
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVsby1tdWx0aXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9ydW50aW1lL2V4ZWN1dGlvbi9jb21wb25lbnRzL3ZlbG8tbXVsdGlzZWxlY3QvdmVsby1tdWx0aXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9ydW50aW1lL2V4ZWN1dGlvbi9jb21wb25lbnRzL3ZlbG8tbXVsdGlzZWxlY3QvdmVsby1tdWx0aXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxHQUVWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7Ozs7QUFlM0QsTUFBTSxPQUFPLG9CQUFvQjtJQXVCL0IsWUFBb0IsS0FBaUIsRUFBVSxnQkFBa0MsRUFBVSxPQUFnQjtRQUF2RixVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQVUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFyQjFGLG9CQUFlLEdBQTJCLElBQUksWUFBWSxFQUFZLENBQUM7UUFDakYsYUFBUSxHQUFhLEVBQUUsQ0FBQztRQUN4QixpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFLakIsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUtmLGFBQVEsR0FBaUMsR0FBRyxF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Q2hELFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixLQUFLLEVBQUUsSUFBSTs0QkFDWCxXQUFXLHNCQUFzQjt5QkFDbEM7cUJBQ0Y7aUJBQ0Y7c0pBRWlCLE9BQU87c0JBQXRCLEtBQUs7Z0JBQ1csZUFBZTtzQkFBL0IsTUFBTTtnQkFNOEIsZUFBZTtzQkFBbkQsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBR3JCLE1BQU07c0JBRFosV0FBVzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3ZlcmxheSwgT3ZlcmxheVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBtZXJnZSwgT2JzZXJ2YWJsZSwgb2YsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICd2ZWxvLW11bHRpc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICd2ZWxvLW11bHRpc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdmVsby1tdWx0aXNlbGVjdC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgICAgdXNlRXhpc3Rpbmc6IE11bHRpc2VsZWN0Q29tcG9uZW50LFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE11bHRpc2VsZWN0Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHB1YmxpYyBvcHRpb25zPzogYW55W107XG4gIEBPdXRwdXQoKSBwdWJsaWMgc2VsZWN0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4oKTtcbiAgcHVibGljIHNlbGVjdGVkOiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgZGlzcGxheVZhbHVlID0gJyc7XG4gIHB1YmxpYyB0b3VjaGVkID0gZmFsc2U7XG4gIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBWaWV3Q2hpbGQoJ292ZXJsYXlUZW1wbGF0ZScpIHB1YmxpYyBvdmVybGF5VGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3Mub3BlbmVkJylcbiAgcHVibGljIG9wZW5lZCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgb3ZlcmxheVJlZj86IE92ZXJsYXlSZWY7XG4gIHByaXZhdGUgZHJvcGRvd25DbG9zaW5nQWN0aW9uc1N1Yj86IFN1YnNjcmlwdGlvbjtcblxuICBwdWJsaWMgb25DaGFuZ2U6IChzZWxlY3RlZDogc3RyaW5nW10pID0+IHZvaWQgPSAoKSA9PiB7XG4gICAgcmV0dXJuO1xuICB9O1xuICBwdWJsaWMgb25Ub3VjaGVkOiAoKSA9PiB2b2lkID0gKCkgPT4ge1xuICAgIHJldHVybjtcbiAgfTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSkge31cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95RHJvcGRvd24oKTtcbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHNlbGVjdGVkOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWQgPSBzZWxlY3RlZDtcblxuICAgIHRoaXMuZ2V0RGlzcGxheVZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShvbkNoYW5nZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IG9uQ2hhbmdlO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKG9uVG91Y2hlZDogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBvblRvdWNoZWQ7XG4gIH1cblxuICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVTZWxlY3Rpb24odmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkSXRlbSA9IHRoaXMuc2VsZWN0ZWQuZmluZChpdGVtID0+IGl0ZW0gPT09IHZhbHVlKTtcblxuICAgIGlmIChzZWxlY3RlZEl0ZW0pIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkLmZpbHRlcihpdGVtID0+IGl0ZW0gIT09IHZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZCA9IFsuLi50aGlzLnNlbGVjdGVkLCB2YWx1ZV07XG4gICAgfVxuXG4gICAgdGhpcy5nZXREaXNwbGF5VmFsdWUoKTtcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWQpO1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy5zZWxlY3RlZCk7XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlT3BlbmVkKCk6IHZvaWQge1xuICAgIHRoaXMub3BlbmVkID8gdGhpcy5kZXN0cm95RHJvcGRvd24oKSA6IHRoaXMub3BlbkRyb3Bkb3duKCk7XG4gIH1cblxuICBwcml2YXRlIGdldERpc3BsYXlWYWx1ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBqb2luZWRWYWx1ZSA9IHRoaXMuc2VsZWN0ZWQuam9pbignLCAnKTtcbiAgICB0aGlzLmRpc3BsYXlWYWx1ZSA9IGpvaW5lZFZhbHVlLmxlbmd0aCA+IDI0ID8gYCR7dGhpcy5zZWxlY3RlZC5sZW5ndGh9IG9wdGlvbnMgc2VsZWN0ZWRgIDogam9pbmVkVmFsdWU7XG4gIH1cblxuICBwcml2YXRlIG9wZW5Ecm9wZG93bigpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5lZCA9IHRydWU7XG4gICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZSh7XG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcbiAgICAgIGJhY2tkcm9wQ2xhc3M6ICdjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcCcsXG4gICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuY2xvc2UoKSxcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMub3ZlcmxheVxuICAgICAgICAucG9zaXRpb24oKVxuICAgICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyh0aGlzLmVsUmVmKVxuICAgICAgICAud2l0aFBvc2l0aW9ucyhbXG4gICAgICAgICAge1xuICAgICAgICAgICAgb3JpZ2luWDogJ2VuZCcsXG4gICAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcbiAgICAgICAgICAgIG92ZXJsYXlYOiAnZW5kJyxcbiAgICAgICAgICAgIG92ZXJsYXlZOiAndG9wJyxcbiAgICAgICAgICAgIG9mZnNldFk6IDgsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSksXG4gICAgfSk7XG5cbiAgICBjb25zdCB0ZW1wbGF0ZVBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLm92ZXJsYXlUZW1wbGF0ZSwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcbiAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKHRlbXBsYXRlUG9ydGFsKTtcblxuICAgIHRoaXMuZHJvcGRvd25DbG9zaW5nQWN0aW9uc1N1YiA9IHRoaXMuZHJvcGRvd25DbG9zaW5nQWN0aW9ucygpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmRlc3Ryb3lEcm9wZG93bigpKTtcbiAgfVxuXG4gIHByaXZhdGUgZHJvcGRvd25DbG9zaW5nQWN0aW9ucygpOiBPYnNlcnZhYmxlPE1vdXNlRXZlbnQgfCB2b2lkPiB7XG4gICAgaWYgKCF0aGlzLm92ZXJsYXlSZWYpIHtcbiAgICAgIHJldHVybiBvZigpO1xuICAgIH1cblxuICAgIGNvbnN0IGJhY2tkcm9wQ2xpY2skID0gdGhpcy5vdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKTtcbiAgICBjb25zdCBkZXRhY2htZW50JCA9IHRoaXMub3ZlcmxheVJlZi5kZXRhY2htZW50cygpO1xuXG4gICAgcmV0dXJuIG1lcmdlKGJhY2tkcm9wQ2xpY2skLCBkZXRhY2htZW50JCk7XG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3lEcm9wZG93bigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMub3ZlcmxheVJlZiB8fCAhdGhpcy5vcGVuZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmRyb3Bkb3duQ2xvc2luZ0FjdGlvbnNTdWI/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5vcGVuZWQgPSBmYWxzZTtcbiAgICB0aGlzLm92ZXJsYXlSZWYuZGV0YWNoKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ2YWx1ZS13cmFwcGVyXCIgKGNsaWNrKT1cInRvZ2dsZU9wZW5lZCgpXCI+XG4gIDxzcGFuIGNsYXNzPVwidmFsdWVcIj57eyBkaXNwbGF5VmFsdWUgfX08L3NwYW4+XG4gIDxpIGNsYXNzPVwiZmEgZmEtY2hldnJvbi1kb3duXCI+PC9pPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjb3ZlcmxheVRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiZHJvcGRvd25cIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3gtc2VsZWN0XCIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zXCI+XG4gICAgICA8bGFiZWw+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgW2NoZWNrZWRdPVwic2VsZWN0ZWQuaW5jbHVkZXMob3B0aW9uKVwiXG4gICAgICAgICAgKGNoYW5nZSk9XCJoYW5kbGVTZWxlY3Rpb24ob3B0aW9uKVwiXG4gICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvblwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgPGkgY2xhc3M9XCJpbnB1dC1oZWxwZXJcIj48L2k+XG4gICAgICAgIHt7IG9wdGlvbiB9fVxuICAgICAgPC9sYWJlbD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -0,0 +1,80 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { SectionsBinderHelper } from '../../../utils/sections-binder.helper';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../../services/form-scope.service";
5
+ import * as i2 from "../../../services/section-scope.service";
6
+ import * as i3 from "@angular/forms";
7
+ import * as i4 from "@angular/common";
8
+ import * as i5 from "ngx-bootstrap/popover";
9
+ export class VeloPortCheckBoxComponent {
10
+ constructor(formScope, sectionScope) {
11
+ var _a;
12
+ this.formScope = formScope;
13
+ this.sectionScope = sectionScope;
14
+ this.showSelectAll = false;
15
+ this.form = this.formScope.form;
16
+ this.section = this.sectionScope.section;
17
+ this.controlName = this.section.id;
18
+ (_a = this.section.sectionValue) === null || _a === void 0 ? void 0 : _a.valueOptions.forEach(item => {
19
+ if (this.hasValueFor(item)) {
20
+ this.form.controls[this.controlName].setValue(item);
21
+ }
22
+ });
23
+ }
24
+ handleChange(valueOption) {
25
+ const updateData = {
26
+ id: this.section.id,
27
+ action: this.hasValueFor(valueOption)
28
+ ? 'remove'
29
+ : this.section.model && SectionsBinderHelper.isAddAllowed(this.section.model, this.section.boundData.name)
30
+ ? 'create'
31
+ : 'update',
32
+ valueOption,
33
+ };
34
+ this.formScope.publishFormUpdate(updateData);
35
+ }
36
+ hasValueFor(valueOption) {
37
+ return !!this.findLineItemForValue(valueOption);
38
+ }
39
+ selectAllChange() {
40
+ var _a;
41
+ const portDomain = (_a = this.section.model) === null || _a === void 0 ? void 0 : _a.portDomains[this.section.boundData.name];
42
+ const updateData = {
43
+ id: this.section.id,
44
+ action: 'upsert',
45
+ selectedValueOptions: this.isAllSelected() ? [] : portDomain ? portDomain.domainTypes.map(t => t.name) : [],
46
+ };
47
+ this.formScope.publishFormUpdate(updateData);
48
+ }
49
+ isAllSelected() {
50
+ var _a, _b;
51
+ const selected = (_a = this.section.model) === null || _a === void 0 ? void 0 : _a.lineItems.filter(li => li.port && li.port === this.section.boundData.name);
52
+ const portDomain = (_b = this.section.model) === null || _b === void 0 ? void 0 : _b.portDomains[this.section.boundData.name];
53
+ return portDomain ? portDomain.domainTypes.length === (selected === null || selected === void 0 ? void 0 : selected.length) : false;
54
+ }
55
+ getMessages(valueOption) {
56
+ var _a, _b, _c;
57
+ if ((_a = this.section.model) === null || _a === void 0 ? void 0 : _a.lineItems) {
58
+ return (_c = (_b = this.findLineItemForValue(valueOption)) === null || _b === void 0 ? void 0 : _b.messages) !== null && _c !== void 0 ? _c : [];
59
+ }
60
+ return [];
61
+ }
62
+ findLineItemForValue(valueOption) {
63
+ var _a;
64
+ return (((_a = this.section.model) === null || _a === void 0 ? void 0 : _a.lineItems) &&
65
+ this.section.model.lineItems.find(li => li.type && li.type.toLowerCase() === valueOption.toLowerCase()));
66
+ }
67
+ }
68
+ VeloPortCheckBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: VeloPortCheckBoxComponent, deps: [{ token: i1.FormScopeService }, { token: i2.SectionScopeService }], target: i0.ɵɵFactoryTarget.Component });
69
+ VeloPortCheckBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: VeloPortCheckBoxComponent, selector: "velo-port-checkbox", inputs: { showSelectAll: "showSelectAll" }, ngImport: i0, template: "<div [formGroup]=\"form\">\n <!--TODO ALE replace divs with ng-templates-->\n <div *ngIf=\"showSelectAll\">\n <div class=\"row no-gutter clearfix\">\n <div class=\"col-md-12\">\n <div class=\"content\">\n <div class=\"container-box container-box-bordered container-box-checkbox collapsed\">\n <div class=\"box-title\">\n <div class=\"header clearfix\">\n <div class=\"checkbox-select\">\n <label>\n <input type=\"checkbox\" (change)=\"selectAllChange()\" [checked]=\"isAllSelected()\" />\n\n <i class=\"input-helper\"></i>\n Select All\n </label>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div *ngFor=\"let valueOption of section.sectionValue?.valueOptions\">\n <div class=\"unchecked\">\n <div class=\"row no-gutter clearfix\">\n <div class=\"col-md-12\">\n <div class=\"content\">\n <div class=\"container-box container-box-bordered container-box-checkbox collapsed\">\n <div class=\"box-title\" (click)=\"handleChange(valueOption)\">\n <div class=\"header clearfix\">\n <div class=\"checkbox-select\">\n <label>\n <input\n type=\"checkbox\"\n [class.checkbox--checked]=\"valueOption === form.controls[controlName].value\"\n />\n\n <i class=\"input-helper\"></i>\n {{section.sectionValue?.displayValues?.[valueOption] || valueOption}}\n </label>\n </div>\n </div>\n\n <div class=\"box-actions\" *ngIf=\"hasValueFor(valueOption)\">\n <ng-template #msgTemplate>\n <div class=\"runtime-info-message\">\n <ul class=\"message-text\">\n <li *ngFor=\"let message of getMessages(valueOption)\">{{ message }}</li>\n </ul>\n </div>\n </ng-template>\n <div\n class=\"box-action-button\"\n *ngIf=\"getMessages(valueOption).length > 0\"\n [popover]=\"msgTemplate\"\n placement=\"left\"\n container=\"body\"\n [isOpen]=\"true\"\n >\n <a href=\"javascript:void(0);\">\n <i class=\"fa fa-info check-icon\"></i>\n </a>\n </div>\n </div>\n </div>\n <div class=\"box-content-wrapper\">\n <div class=\"box-content\">&nbsp;</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n<ng-content></ng-content>\n", directives: [{ type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.PopoverDirective, selector: "[popover]", inputs: ["outsideClick", "containerClass", "isOpen", "adaptivePosition", "popover", "popoverContext", "popoverTitle", "placement", "triggers", "container", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }] });
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: VeloPortCheckBoxComponent, decorators: [{
71
+ type: Component,
72
+ args: [{
73
+ // eslint-disable-next-line @angular-eslint/component-selector
74
+ selector: 'velo-port-checkbox',
75
+ templateUrl: 'velo-port-checkbox.component.html',
76
+ }]
77
+ }], ctorParameters: function () { return [{ type: i1.FormScopeService }, { type: i2.SectionScopeService }]; }, propDecorators: { showSelectAll: [{
78
+ type: Input
79
+ }] } });
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVsby1wb3J0LWNoZWNrYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3J1bnRpbWUvZXhlY3V0aW9uL2NvbXBvbmVudHMvdmVsby1wb3J0LWNoZWNrYm94L3ZlbG8tcG9ydC1jaGVja2JveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9ydW50aW1lL2V4ZWN1dGlvbi9jb21wb25lbnRzL3ZlbG8tcG9ydC1jaGVja2JveC92ZWxvLXBvcnQtY2hlY2tib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFNakQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7Ozs7Ozs7QUFPN0UsTUFBTSxPQUFPLHlCQUF5QjtJQVFwQyxZQUFvQixTQUEyQixFQUFVLFlBQWlDOztRQUF0RSxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUYxRSxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUdwQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUM7UUFFekMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUVuQyxNQUFBLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSwwQ0FBRSxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3JELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMs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LENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQ3hHLENBQUM7SUFDSixDQUFDOzt1SEF6RVUseUJBQXlCOzJHQUF6Qix5QkFBeUIsc0dDYnRDLGs5RkE4RUE7NEZEakVhLHlCQUF5QjtrQkFMckMsU0FBUzttQkFBQztvQkFDVCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFdBQVcsRUFBRSxtQ0FBbUM7aUJBQ2pEO3lJQU9pQixhQUFhO3NCQUE1QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTGluZUl0ZW0sIFNlY3Rpb24gfSBmcm9tICdAdmVsb2NlYXBwcy9jb3JlJztcbmltcG9ydCB7IEZvcm1TY29wZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9mb3JtLXNjb3BlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VjdGlvblNjb3BlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3NlY3Rpb24tc2NvcGUuc2VydmljZSc7XG5pbXBvcnQgeyBVcGRhdGVEYXRhIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgU2VjdGlvbnNCaW5kZXJIZWxwZXIgfSBmcm9tICcuLi8uLi8uLi91dGlscy9zZWN0aW9ucy1iaW5kZXIuaGVscGVyJztcblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAndmVsby1wb3J0LWNoZWNrYm94JyxcbiAgdGVtcGxhdGVVcmw6ICd2ZWxvLXBvcnQtY2hlY2tib3guY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBWZWxvUG9ydENoZWNrQm94Q29tcG9uZW50IHtcbiAgcHVibGljIGNvbnRyb2xOYW1lOiBzdHJpbmc7XG5cbiAgcHVibGljIGZvcm06IEZvcm1Hcm91cDtcbiAgcHVibGljIHNlY3Rpb246IFNlY3Rpb247XG5cbiAgQElucHV0KCkgcHVibGljIHNob3dTZWxlY3RBbGwgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZvcm1TY29wZTogRm9ybVNjb3BlU2VydmljZSwgcHJpdmF0ZSBzZWN0aW9uU2NvcGU6IFNlY3Rpb25TY29wZVNlcnZpY2UpIHtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1TY29wZS5mb3JtO1xuICAgIHRoaXMuc2VjdGlvbiA9IHRoaXMuc2VjdGlvblNjb3BlLnNlY3Rpb247XG5cbiAgICB0aGlzLmNvbnRyb2xOYW1lID0gdGhpcy5zZWN0aW9uLmlkO1xuXG4gICAgdGhpcy5zZWN0aW9uLnNlY3Rpb25WYWx1ZT8udmFsdWVPcHRpb25zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBpZiAodGhpcy5oYXNWYWx1ZUZvcihpdGVtKSkge1xuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5jb250cm9sTmFtZV0uc2V0VmFsdWUoaXRlbSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlQ2hhbmdlKHZhbHVlT3B0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCB1cGRhdGVEYXRhOiBVcGRhdGVEYXRhID0ge1xuICAgICAgaWQ6IHRoaXMuc2VjdGlvbi5pZCxcbiAgICAgIGFjdGlvbjogdGhpcy5oYXNWYWx1ZUZvcih2YWx1ZU9wdGlvbilcbiAgICAgICAgPyAncmVtb3ZlJ1xuICAgICAgICA6IHRoaXMuc2VjdGlvbi5tb2RlbCAmJiBTZWN0aW9uc0JpbmRlckhlbHBlci5pc0FkZEFsbG93ZWQodGhpcy5zZWN0aW9uLm1vZGVsLCB0aGlzLnNlY3Rpb24uYm91bmREYXRhLm5hbWUpXG4gICAgICAgID8gJ2NyZWF0ZSdcbiAgICAgICAgOiAndXBkYXRlJyxcbiAgICAgIHZhbHVlT3B0aW9uLFxuICAgIH07XG5cbiAgICB0aGlzLmZvcm1TY29wZS5wdWJsaXNoRm9ybVVwZGF0ZSh1cGRhdGVEYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyBoYXNWYWx1ZUZvcih2YWx1ZU9wdGlvbjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5maW5kTGluZUl0ZW1Gb3JWYWx1ZSh2YWx1ZU9wdGlvbik7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0QWxsQ2hhbmdlKCk6IHZvaWQge1xuICAgIGNvbnN0IHBvcnREb21haW4gPSB0aGlzLnNlY3Rpb24ubW9kZWw/LnBvcnREb21haW5zW3RoaXMuc2VjdGlvbi5ib3VuZERhdGEubmFtZV07XG5cbiAgICBjb25zdCB1cGRhdGVEYXRhOiBVcGRhdGVEYXRhID0ge1xuICAgICAgaWQ6IHRoaXMuc2VjdGlvbi5pZCxcbiAgICAgIGFjdGlvbjogJ3Vwc2VydCcsXG4gICAgICBzZWxlY3RlZFZhbHVlT3B0aW9uczogdGhpcy5pc0FsbFNlbGVjdGVkKCkgPyBbXSA6IHBvcnREb21haW4gPyBwb3J0RG9tYWluLmRvbWFpblR5cGVzLm1hcCh0ID0+IHQubmFtZSkgOiBbXSxcbiAgICB9O1xuXG4gICAgdGhpcy5mb3JtU2NvcGUucHVibGlzaEZvcm1VcGRhdGUodXBkYXRlRGF0YSk7XG4gIH1cblxuICBwdWJsaWMgaXNBbGxTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBzZWxlY3RlZDogTGluZUl0ZW1bXSB8IHVuZGVmaW5lZCA9IHRoaXMuc2VjdGlvbi5tb2RlbD8ubGluZUl0ZW1zLmZpbHRlcihcbiAgICAgIGxpID0+IGxpLnBvcnQgJiYgbGkucG9ydCA9PT0gdGhpcy5zZWN0aW9uLmJvdW5kRGF0YS5uYW1lLFxuICAgICk7XG5cbiAgICBjb25zdCBwb3J0RG9tYWluID0gdGhpcy5zZWN0aW9uLm1vZGVsPy5wb3J0RG9tYWluc1t0aGlzLnNlY3Rpb24uYm91bmREYXRhLm5hbWVdO1xuXG4gICAgcmV0dXJuIHBvcnREb21haW4gPyBwb3J0RG9tYWluLmRvbWFpblR5cGVzLmxlbmd0aCA9PT0gc2VsZWN0ZWQ/Lmxlbmd0aCA6IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGdldE1lc3NhZ2VzKHZhbHVlT3B0aW9uOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgaWYgKHRoaXMuc2VjdGlvbi5tb2RlbD8ubGluZUl0ZW1zKSB7XG4gICAgICByZXR1cm4gdGhpcy5maW5kTGluZUl0ZW1Gb3JWYWx1ZSh2YWx1ZU9wdGlvbik/Lm1lc3NhZ2VzID8/IFtdO1xuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH1cblxuICBwcml2YXRlIGZpbmRMaW5lSXRlbUZvclZhbHVlKHZhbHVlT3B0aW9uOiBzdHJpbmcpOiBMaW5lSXRlbSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuc2VjdGlvbi5tb2RlbD8ubGluZUl0ZW1zICYmXG4gICAgICB0aGlzLnNlY3Rpb24ubW9kZWwubGluZUl0ZW1zLmZpbmQobGkgPT4gbGkudHlwZSAmJiBsaS50eXBlLnRvTG93ZXJDYXNlKCkgPT09IHZhbHVlT3B0aW9uLnRvTG93ZXJDYXNlKCkpXG4gICAgKTtcbiAgfVxufVxuIiwiPGRpdiBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAgPCEtLVRPRE8gQUxFIHJlcGxhY2UgZGl2cyB3aXRoIG5nLXRlbXBsYXRlcy0tPlxuICA8ZGl2ICpuZ0lmPVwic2hvd1NlbGVjdEFsbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJyb3cgbm8tZ3V0dGVyIGNsZWFyZml4XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lci1ib3ggY29udGFpbmVyLWJveC1ib3JkZXJlZCBjb250YWluZXItYm94LWNoZWNrYm94IGNvbGxhcHNlZFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJveC10aXRsZVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyIGNsZWFyZml4XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94LXNlbGVjdFwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgKGNoYW5nZSk9XCJzZWxlY3RBbGxDaGFuZ2UoKVwiIFtjaGVja2VkXT1cImlzQWxsU2VsZWN0ZWQoKVwiIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpbnB1dC1oZWxwZXJcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIFNlbGVjdCBBbGxcbiAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0Zvcj1cImxldCB2YWx1ZU9wdGlvbiBvZiBzZWN0aW9uLnNlY3Rpb25WYWx1ZT8udmFsdWVPcHRpb25zXCI+XG4gICAgPGRpdiBjbGFzcz1cInVuY2hlY2tlZFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBuby1ndXR0ZXIgY2xlYXJmaXhcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWJveCBjb250YWluZXItYm94LWJvcmRlcmVkIGNvbnRhaW5lci1ib3gtY2hlY2tib3ggY29sbGFwc2VkXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3gtdGl0bGVcIiAoY2xpY2spPVwiaGFuZGxlQ2hhbmdlKHZhbHVlT3B0aW9uKVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXIgY2xlYXJmaXhcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveC1zZWxlY3RcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5jaGVja2JveC0tY2hlY2tlZF09XCJ2YWx1ZU9wdGlvbiA9PT0gZm9ybS5jb250cm9sc1tjb250cm9sTmFtZV0udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImlucHV0LWhlbHBlclwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICB7e3NlY3Rpb24uc2VjdGlvblZhbHVlPy5kaXNwbGF5VmFsdWVzPy5bdmFsdWVPcHRpb25dIHx8IHZhbHVlT3B0aW9ufX1cbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJveC1hY3Rpb25zXCIgKm5nSWY9XCJoYXNWYWx1ZUZvcih2YWx1ZU9wdGlvbilcIj5cbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbXNnVGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJydW50aW1lLWluZm8tbWVzc2FnZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cIm1lc3NhZ2UtdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBtZXNzYWdlIG9mIGdldE1lc3NhZ2VzKHZhbHVlT3B0aW9uKVwiPnt7IG1lc3NhZ2UgfX08L2xpPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJib3gtYWN0aW9uLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZ2V0TWVzc2FnZXModmFsdWVPcHRpb24pLmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgICAgICAgICBbcG9wb3Zlcl09XCJtc2dUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgICAgICAgICAgW2lzT3Blbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWluZm8gY2hlY2staWNvblwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm94LWNvbnRlbnQtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3gtY29udGVudFwiPiZuYnNwOzwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuIl19
@@ -0,0 +1,101 @@
1
+ import { Component } from '@angular/core';
2
+ import { EntityUtil } from '@veloceapps/core';
3
+ import { SectionsBinderHelper } from '../../../utils/sections-binder.helper';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../../services/form-scope.service";
6
+ import * as i2 from "../../../services/section-scope.service";
7
+ import * as i3 from "@angular/forms";
8
+ import * as i4 from "@angular/common";
9
+ import * as i5 from "@veloceapps/core";
10
+ export class VeloPortDropdownComponent {
11
+ constructor(formScope, sectionScope) {
12
+ var _a;
13
+ this.formScope = formScope;
14
+ this.sectionScope = sectionScope;
15
+ this.prices = {};
16
+ this.form = this.formScope.form;
17
+ this.section = this.sectionScope.section;
18
+ this.controlName = this.section.id;
19
+ this.qtyControlName = this.section.id + 'qty';
20
+ if (this.section.pricingEnabled) {
21
+ (_a = this.section.sectionValue) === null || _a === void 0 ? void 0 : _a.valueOptions.forEach(valueOption => {
22
+ this.prices[valueOption] = this.findPriceItemsForValue(valueOption);
23
+ });
24
+ }
25
+ }
26
+ isAddAllowed() {
27
+ if (!EntityUtil.isPresent(this.form.controls[this.controlName].value)) {
28
+ return false;
29
+ }
30
+ return this.section.model
31
+ ? SectionsBinderHelper.isAddAllowed(this.section.model, this.section.boundData.name)
32
+ : false;
33
+ }
34
+ handleCreate() {
35
+ if (this.form.invalid || !this.isAddAllowed()) {
36
+ return;
37
+ }
38
+ const updateData = {
39
+ id: this.section.id,
40
+ action: 'create',
41
+ };
42
+ this.formScope.publishFormUpdate(updateData);
43
+ }
44
+ findPriceItemsForValue(valueOption) {
45
+ var _a;
46
+ let prices = [];
47
+ if (valueOption) {
48
+ const portDomain = (_a = this.section.model) === null || _a === void 0 ? void 0 : _a.portDomains[this.section.boundData.name];
49
+ const domainType = portDomain === null || portDomain === void 0 ? void 0 : portDomain.domainTypes.find(d => d.name.toLowerCase() === valueOption.toLowerCase());
50
+ if (domainType && domainType.recommendedPrices) {
51
+ prices = domainType.recommendedPrices;
52
+ }
53
+ }
54
+ const oneTime = {
55
+ chargeMethod: 'ONE_TIME',
56
+ netPrice: 0,
57
+ listPrice: 0,
58
+ chargeType: '',
59
+ };
60
+ const recurring = {
61
+ chargeMethod: 'RECURRING',
62
+ netPrice: 0,
63
+ listPrice: 0,
64
+ chargeType: '',
65
+ };
66
+ prices.forEach(p => {
67
+ if (p.chargeMethod === oneTime.chargeMethod) {
68
+ this.add(oneTime, p);
69
+ }
70
+ if (p.chargeMethod === recurring.chargeMethod) {
71
+ this.add(recurring, p);
72
+ }
73
+ });
74
+ const result = [];
75
+ if (oneTime.listPrice > 0) {
76
+ result.push(oneTime);
77
+ }
78
+ if (recurring.listPrice > 0) {
79
+ result.push(recurring);
80
+ }
81
+ return result;
82
+ }
83
+ add(target, src) {
84
+ target.netPrice = target.netPrice + src.netPrice;
85
+ target.listPrice = target.listPrice + src.listPrice;
86
+ if (src.explanation) {
87
+ target.explanation = src.explanation;
88
+ }
89
+ }
90
+ }
91
+ VeloPortDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: VeloPortDropdownComponent, deps: [{ token: i1.FormScopeService }, { token: i2.SectionScopeService }], target: i0.ɵɵFactoryTarget.Component });
92
+ VeloPortDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: VeloPortDropdownComponent, selector: "velo-port-dropdown", ngImport: i0, template: "<div class=\"form-group col-md-12\" [formGroup]=\"form\">\n <div class=\"input-form-input div-inline\">\n <label [for]=\"controlName\">{{ section.label }}</label>\n <div class=\"form-control-wrapper\">\n <select [id]=\"controlName\" [formControlName]=\"controlName\" class=\"form-control\">\n <option *ngFor=\"let valueOption of section.sectionValue?.valueOptions\" [ngValue]=\"valueOption\">\n {{section.sectionValue?.displayValues?.[valueOption] || valueOption}}\n <span *ngIf=\"prices[valueOption] && prices[valueOption].length > 0\">\n <span>${{ prices[valueOption][0].netPrice }}</span>\n <span *ngIf=\"prices[valueOption].length > 1\">\n <span>, </span>\n <span>${{ prices[valueOption][1].netPrice }}</span>\n </span>\n </span>\n </option>\n </select>\n </div>\n </div>\n <div class=\"input-form-input div-inline quantity-form-input\">\n <label [for]=\"qtyControlName\"> Quantity </label>\n <div class=\"form-control-wrapper\">\n <input [id]=\"qtyControlName\" [formControlName]=\"qtyControlName\" type=\"text\" class=\"form-control\" size=\"3\" />\n\n <div\n class=\"validation-message\"\n [hidden]=\"form.controls[qtyControlName].valid || form.controls[qtyControlName].pristine\"\n >\n <div *ngFor=\"let key of form.controls[qtyControlName].errors | values\">\n <span> {{form.controls[qtyControlName]?.errors?.[key].message}}</span>\n </div>\n </div>\n\n <a href=\"javascript:void(0);\" (click)=\"handleCreate()\">\n <div class=\"add-config-control\" [attr.disabled]=\"form.valid && isAddAllowed() ? null : true\">\n <i class=\"fa fa-plus plus-icon\"></i>\n </div>\n </a>\n </div>\n </div>\n</div>\n<ng-content></ng-content>\n", directives: [{ type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }], pipes: { "values": i5.ValuesPipe } });
93
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: VeloPortDropdownComponent, decorators: [{
94
+ type: Component,
95
+ args: [{
96
+ // eslint-disable-next-line @angular-eslint/component-selector
97
+ selector: 'velo-port-dropdown',
98
+ templateUrl: 'velo-port-dropdown.component.html',
99
+ }]
100
+ }], ctorParameters: function () { return [{ type: i1.FormScopeService }, { type: i2.SectionScopeService }]; } });
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVsby1wb3J0LWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3J1bnRpbWUvZXhlY3V0aW9uL2NvbXBvbmVudHMvdmVsby1wb3J0LWRyb3Bkb3duL3ZlbG8tcG9ydC1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9ydW50aW1lL2V4ZWN1dGlvbi9jb21wb25lbnRzL3ZlbG8tcG9ydC1kcm9wZG93bi92ZWxvLXBvcnQtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxQyxPQUFPLEVBQUUsVUFBVSxFQUE2QixNQUFNLGtCQUFrQixDQUFDO0FBS3pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7Ozs7O0FBTzdFLE1BQU0sT0FBTyx5QkFBeUI7SUFRcEMsWUFBb0IsU0FBMkIsRUFBVSxZQUFpQzs7UUFBdEUsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFGbkYsV0FBTSxHQUFvQixFQUFFLENBQUM7UUFHbEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztRQUNoQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDO1FBRXpDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFFOUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRTtZQUMvQixNQUFBLElBQUksQ0FB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O1NBQ3RCO1FBQ0QsSUFBSSxTQUFTLENBQUMsU0FBUyxHQUFHLENBQUMsRUFBRTtZQUMzQixNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3hCO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVPLEdBQUcsQ0FBQyxNQUF3QixFQUFFLEdBQXFCO1FBQ3pELE1BQU0sQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDO1FBQ2pELE1BQU0sQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQ3BELElBQUksR0FBRyxDQUFDLFdBQVcsRUFBRTtZQUNuQixNQUFNLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUM7U0FDdEM7SUFDSCxDQUFDOzt1SEEvRlUseUJBQXlCOzJHQUF6Qix5QkFBeUIsMERDZHRDLGswREF5Q0E7NEZEM0JhLHlCQUF5QjtrQkFMckMsU0FBUzttQkFBQztvQkFDVCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFdBQVcsRUFBRSxtQ0FBbUM7aUJBQ2pEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBFbnRpdHlVdGlsLCBSZWNvbW1lbmRlZFByaWNlLCBTZWN0aW9uIH0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5pbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEZvcm1TY29wZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9mb3JtLXNjb3BlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VjdGlvblNjb3BlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3NlY3Rpb24tc2NvcGUuc2VydmljZSc7XG5pbXBvcnQgeyBVcGRhdGVEYXRhIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgU2VjdGlvbnNCaW5kZXJIZWxwZXIgfSBmcm9tICcuLi8uLi8uLi91dGlscy9zZWN0aW9ucy1iaW5kZXIuaGVscGVyJztcblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAndmVsby1wb3J0LWRyb3Bkb3duJyxcbiAgdGVtcGxhdGVVcmw6ICd2ZWxvLXBvcnQtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBWZWxvUG9ydERyb3Bkb3duQ29tcG9uZW50IHtcbiAgcHVibGljIGNvbnRyb2xOYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBxdHlDb250cm9sTmFtZTogc3RyaW5nO1xuXG4gIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXA7XG4gIHB1YmxpYyBzZWN0aW9uOiBTZWN0aW9uO1xuICBwdWJsaWMgcHJpY2VzOiBEaWN0aW9uYXJ5PGFueT4gPSB7fTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZvcm1TY29wZTogRm9ybVNjb3BlU2VydmljZSwgcHJpdmF0ZSBzZWN0aW9uU2NvcGU6IFNlY3Rpb25TY29wZVNlcnZpY2UpIHtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1TY29wZS5mb3JtO1xuICAgIHRoaXMuc2VjdGlvbiA9IHRoaXMuc2VjdGlvblNjb3BlLnNlY3Rpb247XG5cbiAgICB0aGlzLmNvbnRyb2xOYW1lID0gdGhpcy5zZWN0aW9uLmlkO1xuICAgIHRoaXMucXR5Q29udHJvbE5hbWUgPSB0aGlzLnNlY3Rpb24uaWQgKyAncXR5JztcblxuICAgIGlmICh0aGlzLnNlY3Rpb24ucHJpY2luZ0VuYWJsZWQpIHtcbiAgICAgIHRoaXMuc2VjdGlvbi5zZWN0aW9uVmFsdWU/LnZhbHVlT3B0aW9ucy5mb3JFYWNoKHZhbHVlT3B0aW9uID0+IHtcbiAgICAgICAgdGhpcy5wcmljZXNbdmFsdWVPcHRpb25dID0gdGhpcy5maW5kUHJpY2VJdGVtc0ZvclZhbHVlKHZhbHVlT3B0aW9uKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc0FkZEFsbG93ZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKCFFbnRpdHlVdGlsLmlzUHJlc2VudCh0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5jb250cm9sTmFtZV0udmFsdWUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc2VjdGlvbi5tb2RlbFxuICAgICAgPyBTZWN0aW9uc0JpbmRlckhlbHBlci5pc0FkZEFsbG93ZWQodGhpcy5zZWN0aW9uLm1vZGVsLCB0aGlzLnNlY3Rpb24uYm91bmREYXRhLm5hbWUpXG4gICAgICA6IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZUNyZWF0ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5mb3JtLmludmFsaWQgfHwgIXRoaXMuaXNBZGRBbGxvd2VkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVEYXRhOiBVcGRhdGVEYXRhID0ge1xuICAgICAgaWQ6IHRoaXMuc2VjdGlvbi5pZCxcbiAgICAgIGFjdGlvbjogJ2NyZWF0ZScsXG4gICAgfTtcblxuICAgIHRoaXMuZm9ybVNjb3BlLnB1Ymxpc2hGb3JtVXBkYXRlKHVwZGF0ZURhdGEpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kUHJpY2VJdGVtc0ZvclZhbHVlKHZhbHVlT3B0aW9uOiBzdHJpbmcpOiBSZWNvbW1lbmRlZFByaWNlW10ge1xuICAgIGxldCBwcmljZXM6IFJlY29tbWVuZGVkUHJpY2VbXSA9IFtdO1xuICAgIGlmICh2YWx1ZU9wdGlvbikge1xuICAgICAgY29uc3QgcG9ydERvbWFpbiA9IHRoaXMuc2VjdGlvbi5tb2RlbD8ucG9ydERvbWFpbnNbdGhpcy5zZWN0aW9uLmJvdW5kRGF0YS5uYW1lXTtcbiAgICAgIGNvbnN0IGRvbWFpblR5cGUgPSBwb3J0RG9tYWluPy5kb21haW5UeXBlcy5maW5kKGQgPT4gZC5uYW1lLnRvTG93ZXJDYXNlKCkgPT09IHZhbHVlT3B0aW9uLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgaWYgKGRvbWFpblR5cGUgJiYgZG9tYWluVHlwZS5yZWNvbW1lbmRlZFByaWNlcykge1xuICAgICAgICBwcmljZXMgPSBkb21haW5UeXBlLnJlY29tbWVuZGVkUHJpY2VzO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG9uZVRpbWU6IFJlY29tbWVuZGVkUHJpY2UgPSB7XG4gICAgICBjaGFyZ2VNZXRob2Q6ICdPTkVfVElNRScsXG4gICAgICBuZXRQcmljZTogMCxcbiAgICAgIGxpc3RQcmljZTogMCxcbiAgICAgIGNoYXJnZVR5cGU6ICcnLFxuICAgIH07XG5cbiAgICBjb25zdCByZWN1cnJpbmc6IFJlY29tbWVuZGVkUHJpY2UgPSB7XG4gICAgICBjaGFyZ2VNZXRob2Q6ICdSRUNVUlJJTkcnLFxuICAgICAgbmV0UHJpY2U6IDAsXG4gICAgICBsaXN0UHJpY2U6IDAsXG4gICAgICBjaGFyZ2VUeXBlOiAnJyxcbiAgICB9O1xuXG4gICAgcHJpY2VzLmZvckVhY2gocCA9PiB7XG4gICAgICBpZiAocC5jaGFyZ2VNZXRob2QgPT09IG9uZVRpbWUuY2hhcmdlTWV0aG9kKSB7XG4gICAgICAgIHRoaXMuYWRkKG9uZVRpbWUsIHApO1xuICAgICAgfVxuICAgICAgaWYgKHAuY2hhcmdlTWV0aG9kID09PSByZWN1cnJpbmcuY2hhcmdlTWV0aG9kKSB7XG4gICAgICAgIHRoaXMuYWRkKHJlY3VycmluZywgcCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCByZXN1bHQ6IFJlY29tbWVuZGVkUHJpY2VbXSA9IFtdO1xuICAgIGlmIChvbmVUaW1lLmxpc3RQcmljZSA+IDApIHtcbiAgICAgIHJlc3VsdC5wdXNoKG9uZVRpbWUpO1xuICAgIH1cbiAgICBpZiAocmVjdXJyaW5nLmxpc3RQcmljZSA+IDApIHtcbiAgICAgIHJlc3VsdC5wdXNoKHJlY3VycmluZyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgYWRkKHRhcmdldDogUmVjb21tZW5kZWRQcmljZSwgc3JjOiBSZWNvbW1lbmRlZFByaWNlKTogdm9pZCB7XG4gICAgdGFyZ2V0Lm5ldFByaWNlID0gdGFyZ2V0Lm5ldFByaWNlICsgc3JjLm5ldFByaWNlO1xuICAgIHRhcmdldC5saXN0UHJpY2UgPSB0YXJnZXQubGlzdFByaWNlICsgc3JjLmxpc3RQcmljZTtcbiAgICBpZiAoc3JjLmV4cGxhbmF0aW9uKSB7XG4gICAgICB0YXJnZXQuZXhwbGFuYXRpb24gPSBzcmMuZXhwbGFuYXRpb247XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBjb2wtbWQtMTJcIiBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAgPGRpdiBjbGFzcz1cImlucHV0LWZvcm0taW5wdXQgZGl2LWlubGluZVwiPlxuICAgIDxsYWJlbCBbZm9yXT1cImNvbnRyb2xOYW1lXCI+e3sgc2VjdGlvbi5sYWJlbCB9fTwvbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tY29udHJvbC13cmFwcGVyXCI+XG4gICAgICA8c2VsZWN0IFtpZF09XCJjb250cm9sTmFtZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbE5hbWVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiPlxuICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCB2YWx1ZU9wdGlvbiBvZiBzZWN0aW9uLnNlY3Rpb25WYWx1ZT8udmFsdWVPcHRpb25zXCIgW25nVmFsdWVdPVwidmFsdWVPcHRpb25cIj5cbiAgICAgICAgICB7e3NlY3Rpb24uc2VjdGlvblZhbHVlPy5kaXNwbGF5VmFsdWVzPy5bdmFsdWVPcHRpb25dIHx8IHZhbHVlT3B0aW9ufX1cbiAgICAgICAgICA8c3BhbiAqbmdJZj1cInByaWNlc1t2YWx1ZU9wdGlvbl0gJiYgcHJpY2VzW3ZhbHVlT3B0aW9uXS5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICA8c3Bhbj4ke3sgcHJpY2VzW3ZhbHVlT3B0aW9uXVswXS5uZXRQcmljZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicHJpY2VzW3ZhbHVlT3B0aW9uXS5sZW5ndGggPiAxXCI+XG4gICAgICAgICAgICAgIDxzcGFuPiwgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3Bhbj4ke3sgcHJpY2VzW3ZhbHVlT3B0aW9uXVsxXS5uZXRQcmljZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvb3B0aW9uPlxuICAgICAgPC9zZWxlY3Q+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiaW5wdXQtZm9ybS1pbnB1dCBkaXYtaW5saW5lIHF1YW50aXR5LWZvcm0taW5wdXRcIj5cbiAgICA8bGFiZWwgW2Zvcl09XCJxdHlDb250cm9sTmFtZVwiPiBRdWFudGl0eSA8L2xhYmVsPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNvbnRyb2wtd3JhcHBlclwiPlxuICAgICAgPGlucHV0IFtpZF09XCJxdHlDb250cm9sTmFtZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwicXR5Q29udHJvbE5hbWVcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgc2l6ZT1cIjNcIiAvPlxuXG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwidmFsaWRhdGlvbi1tZXNzYWdlXCJcbiAgICAgICAgW2hpZGRlbl09XCJmb3JtLmNvbnRyb2xzW3F0eUNvbnRyb2xOYW1lXS52YWxpZCB8fCBmb3JtLmNvbnRyb2xzW3F0eUNvbnRyb2xOYW1lXS5wcmlzdGluZVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGtleSBvZiBmb3JtLmNvbnRyb2xzW3F0eUNvbnRyb2xOYW1lXS5lcnJvcnMgfCB2YWx1ZXNcIj5cbiAgICAgICAgICA8c3Bhbj4ge3tmb3JtLmNvbnRyb2xzW3F0eUNvbnRyb2xOYW1lXT8uZXJyb3JzPy5ba2V5XS5tZXNzYWdlfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMCk7XCIgKGNsaWNrKT1cImhhbmRsZUNyZWF0ZSgpXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhZGQtY29uZmlnLWNvbnRyb2xcIiBbYXR0ci5kaXNhYmxlZF09XCJmb3JtLnZhbGlkICYmIGlzQWRkQWxsb3dlZCgpID8gbnVsbCA6IHRydWVcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXBsdXMgcGx1cy1pY29uXCI+PC9pPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiJdfQ==
@@ -0,0 +1,150 @@
1
+ import { Component } from '@angular/core';
2
+ import { LineItemUtil } from '../../../utils/line-item.util';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../../services/form-scope.service";
5
+ import * as i2 from "../../../services/section-scope.service";
6
+ import * as i3 from "@angular/forms";
7
+ import * as i4 from "@angular/common";
8
+ export class VeloPortRadioComponent {
9
+ constructor(formScope, sectionScope) {
10
+ this.formScope = formScope;
11
+ this.sectionScope = sectionScope;
12
+ this.prices = {};
13
+ this.form = this.formScope.form;
14
+ this.section = this.sectionScope.section;
15
+ this.controlName = this.section.id;
16
+ }
17
+ ngOnInit() {
18
+ var _a;
19
+ this.initPriceItems();
20
+ (_a = this.section.sectionValue) === null || _a === void 0 ? void 0 : _a.valueOptions.forEach(item => {
21
+ if (this.hasValueFor(item)) {
22
+ this.form.controls[this.controlName].setValue(item);
23
+ }
24
+ });
25
+ }
26
+ handleChange(event, valueOption) {
27
+ event.preventDefault();
28
+ event.stopPropagation();
29
+ const updateData = {
30
+ id: this.section.id,
31
+ action: this.hasPreviousValue() ? 'update' : 'create',
32
+ valueOption,
33
+ };
34
+ this.form.controls[this.controlName].setValue(valueOption);
35
+ this.form.controls[this.controlName].markAsDirty();
36
+ this.formScope.publishFormUpdate(updateData);
37
+ }
38
+ hasValueFor(valueOption) {
39
+ return !!this.findLineItemForValue(valueOption);
40
+ }
41
+ getMessages(valueOption) {
42
+ var _a;
43
+ const lineItem = this.findLineItemForValue(valueOption);
44
+ if (((_a = this.section.model) === null || _a === void 0 ? void 0 : _a.lineItems) && lineItem) {
45
+ return lineItem.messages;
46
+ }
47
+ return [];
48
+ }
49
+ toString(price) {
50
+ let result = '';
51
+ if (price.listPrice > price.netPrice) {
52
+ result += '<strike>' + price.listPrice + '</strike>';
53
+ }
54
+ result += price.netPrice;
55
+ if (price.explanation) {
56
+ result += '(' + price.explanation + ')';
57
+ }
58
+ return result;
59
+ }
60
+ hasPreviousValue() {
61
+ var _a;
62
+ const previous = (_a = this.section.model) === null || _a === void 0 ? void 0 : _a.lineItems.filter(li => li.port && li.port === this.section.boundData.name);
63
+ return previous ? previous.length > 0 : false;
64
+ }
65
+ findLineItemForValue(valueOption) {
66
+ return this.section.model ? LineItemUtil.findLineItemForValue(this.section.model, valueOption) : undefined;
67
+ }
68
+ initPriceItems() {
69
+ var _a;
70
+ this.prices = {};
71
+ if (this.section.pricingEnabled) {
72
+ (_a = this.section.sectionValue) === null || _a === void 0 ? void 0 : _a.valueOptions.forEach(valueOption => {
73
+ this.prices[valueOption] = this.findPriceItemsForValue(valueOption);
74
+ });
75
+ }
76
+ }
77
+ findPriceItemsForValue(valueOption) {
78
+ var _a, _b;
79
+ let prices = [];
80
+ if (valueOption) {
81
+ const lineItem = ((_a = this.section.model) === null || _a === void 0 ? void 0 : _a.lineItems) &&
82
+ this.section.model.lineItems.find(li => li.type && li.type.toLowerCase() === valueOption.toLowerCase());
83
+ if (lineItem && lineItem.chargeItems) {
84
+ prices = lineItem.chargeItems.map(pi => {
85
+ const price = {
86
+ listPrice: pi.listPrice,
87
+ netPrice: pi.netPrice,
88
+ chargeMethod: pi.chargeMethod,
89
+ chargeType: pi.chargeType,
90
+ };
91
+ return price;
92
+ });
93
+ }
94
+ else {
95
+ const portDomain = (_b = this.section.model) === null || _b === void 0 ? void 0 : _b.portDomains[this.section.boundData.name];
96
+ const domainType = portDomain === null || portDomain === void 0 ? void 0 : portDomain.domainTypes.find(d => d.name.toLowerCase() === valueOption.toLowerCase());
97
+ if (domainType && domainType.recommendedPrices) {
98
+ prices = domainType.recommendedPrices;
99
+ }
100
+ }
101
+ }
102
+ const oneTime = {
103
+ chargeMethod: 'ONE_TIME',
104
+ netPrice: 0,
105
+ listPrice: 0,
106
+ chargeType: '',
107
+ };
108
+ const recurring = {
109
+ chargeMethod: 'RECURRING',
110
+ netPrice: 0,
111
+ listPrice: 0,
112
+ chargeType: '',
113
+ };
114
+ prices.forEach(p => {
115
+ if (p.chargeMethod === oneTime.chargeMethod) {
116
+ this.add(oneTime, p);
117
+ }
118
+ if (p.chargeMethod === recurring.chargeMethod) {
119
+ this.add(recurring, p);
120
+ }
121
+ });
122
+ const result = [];
123
+ if (oneTime.listPrice > 0) {
124
+ result.push(oneTime);
125
+ }
126
+ if (recurring.listPrice > 0) {
127
+ result.push(recurring);
128
+ }
129
+ return result;
130
+ }
131
+ add(target, src) {
132
+ target.netPrice = target.netPrice + src.netPrice;
133
+ target.listPrice = target.listPrice + src.listPrice;
134
+ if (src.explanation) {
135
+ target.explanation = src.explanation;
136
+ }
137
+ }
138
+ }
139
+ VeloPortRadioComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: VeloPortRadioComponent, deps: [{ token: i1.FormScopeService }, { token: i2.SectionScopeService }], target: i0.ɵɵFactoryTarget.Component });
140
+ VeloPortRadioComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: VeloPortRadioComponent, selector: "velo-port-radio", ngImport: i0, template: "<div [formGroup]=\"form\">\n <!--TODO ALE replace divs with ng-templates-->\n <ng-container *ngFor=\"let valueOption of section.sectionValue?.valueOptions\">\n <div class=\"unchecked\">\n <div class=\"row no-gutter clearfix\">\n <div class=\"col-md-12\">\n <div class=\"content\">\n <div class=\"container-box container-box-bordered container-box-radio\">\n <div class=\"box-title\" (click)=\"handleChange($event, valueOption)\">\n <div class=\"header clearfix\">\n <div class=\"radio-button\">\n <label>\n <input type=\"radio\" [id]=\"controlName\" [value]=\"valueOption\" [formControlName]=\"controlName\" />\n\n <i class=\"input-helper\"></i>\n\n {{ section.sectionValue?.displayValues?.[valueOption] || valueOption }}\n\n <span *ngIf=\"prices[valueOption] && prices[valueOption].length > 0\">\n <span>${{ prices[valueOption][0].netPrice }}</span>\n\n <span *ngIf=\"prices[valueOption].length > 1\">\n <span>, </span>\n\n <span>${{ prices[valueOption][1].netPrice }}</span>\n </span>\n </span>\n </label>\n <span *ngIf=\"prices[valueOption] && prices[valueOption].length > 0\">\n <div>{{ prices[valueOption][0].explanation }}</div>\n\n <span *ngIf=\"prices[valueOption].length > 1 && prices[valueOption][1].explanation\">\n <div>{{ prices[valueOption][1].explanation }}</div>\n </span>\n </span>\n </div>\n </div>\n </div>\n </div>\n\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n </div>\n </ng-container>\n</div>\n<ng-content></ng-content>\n", directives: [{ type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i3.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
141
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: VeloPortRadioComponent, decorators: [{
142
+ type: Component,
143
+ args: [{
144
+ // tslint:disable-next-line:component-selector
145
+ // eslint-disable-next-line @angular-eslint/component-selector
146
+ selector: 'velo-port-radio',
147
+ templateUrl: 'velo-port-radio.component.html',
148
+ }]
149
+ }], ctorParameters: function () { return [{ type: i1.FormScopeService }, { type: i2.SectionScopeService }]; } });
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVsby1wb3J0LXJhZGlvLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3J1bnRpbWUvZXhlY3V0aW9uL2NvbXBvbmVudHMvdmVsby1wb3J0LXJhZGlvL3ZlbG8tcG9ydC1yYWRpby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9ydW50aW1lL2V4ZWN1dGlvbi9jb21wb25lbnRzL3ZlbG8tcG9ydC1yYWRpby92ZWxvLXBvcnQtcmFkaW8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQU9sRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7OztBQVE3RCxNQUFNLE9BQU8sc0JBQXNCO0lBUWpDLFlBQW9CLFNBQTJCLEVBQVUsWUFBaUM7UUFBdEUsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFGbkYsV0FBTSxHQUFvQixFQUFFLENBQUM7UUFHbEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztRQUNoQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDO1FBRXpDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVNLFFBQVE7O1FBQ2IsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRXRCLE1BQUEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLDBDQUFFLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDckQsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFO2dCQUMxQixJQUFJLENB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LEdBQUcsQ0FBQyxFQUFFO1lBQzNCLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDeEI7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRU8sR0FBRyxDQUFDLE1BQXdCLEVBQUUsR0FBcUI7UUFDekQsTUFBTSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDakQsTUFBTSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUM7UUFDcEQsSUFBSSxHQUFHLENBQUMsV0FBVyxFQUFFO1lBQ25CLE1BQU0sQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQztTQUN0QztJQUNILENBQUM7O29IQXRKVSxzQkFBc0I7d0dBQXRCLHNCQUFzQix1RENmbkMsaStEQWdEQTs0RkRqQ2Esc0JBQXNCO2tCQU5sQyxTQUFTO21CQUFDO29CQUNULDhDQUE4QztvQkFDOUMsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixXQUFXLEVBQUUsZ0NBQWdDO2lCQUM5QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBMaW5lSXRlbSwgUmVjb21tZW5kZWRQcmljZSwgU2VjdGlvbiB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBGb3JtU2NvcGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZm9ybS1zY29wZS5zZXJ2aWNlJztcbmltcG9ydCB7IFNlY3Rpb25TY29wZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9zZWN0aW9uLXNjb3BlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXBkYXRlRGF0YSB9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IExpbmVJdGVtVXRpbCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2xpbmUtaXRlbS51dGlsJztcblxuQENvbXBvbmVudCh7XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpjb21wb25lbnQtc2VsZWN0b3JcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICd2ZWxvLXBvcnQtcmFkaW8nLFxuICB0ZW1wbGF0ZVVybDogJ3ZlbG8tcG9ydC1yYWRpby5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFZlbG9Qb3J0UmFkaW9Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwdWJsaWMgY29udHJvbE5hbWU6IHN0cmluZztcblxuICBwdWJsaWMgZm9ybTogRm9ybUdyb3VwO1xuICBwdWJsaWMgc2VjdGlvbjogU2VjdGlvbjtcblxuICBwdWJsaWMgcHJpY2VzOiBEaWN0aW9uYXJ5PGFueT4gPSB7fTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZvcm1TY29wZTogRm9ybVNjb3BlU2VydmljZSwgcHJpdmF0ZSBzZWN0aW9uU2NvcGU6IFNlY3Rpb25TY29wZVNlcnZpY2UpIHtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1TY29wZS5mb3JtO1xuICAgIHRoaXMuc2VjdGlvbiA9IHRoaXMuc2VjdGlvblNjb3BlLnNlY3Rpb247XG5cbiAgICB0aGlzLmNvbnRyb2xOYW1lID0gdGhpcy5zZWN0aW9uLmlkO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdFByaWNlSXRlbXMoKTtcblxuICAgIHRoaXMuc2VjdGlvbi5zZWN0aW9uVmFsdWU/LnZhbHVlT3B0aW9ucy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgaWYgKHRoaXMuaGFzVmFsdWVGb3IoaXRlbSkpIHtcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMuY29udHJvbE5hbWVdLnNldFZhbHVlKGl0ZW0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZUNoYW5nZShldmVudDogYW55LCB2YWx1ZU9wdGlvbjogYW55KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGNvbnN0IHVwZGF0ZURhdGE6IFVwZGF0ZURhdGEgPSB7XG4gICAgICBpZDogdGhpcy5zZWN0aW9uLmlkLFxuICAgICAgYWN0aW9uOiB0aGlzLmhhc1ByZXZpb3VzVmFsdWUoKSA/ICd1cGRhdGUnIDogJ2NyZWF0ZScsXG4gICAgICB2YWx1ZU9wdGlvbixcbiAgICB9O1xuXG4gICAgdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMuY29udHJvbE5hbWVdLnNldFZhbHVlKHZhbHVlT3B0aW9uKTtcbiAgICB0aGlzLmZvcm0uY29udHJvbHNbdGhpcy5jb250cm9sTmFtZV0ubWFya0FzRGlydHkoKTtcblxuICAgIHRoaXMuZm9ybVNjb3BlLnB1Ymxpc2hGb3JtVXBkYXRlKHVwZGF0ZURhdGEpO1xuICB9XG5cbiAgcHVibGljIGhhc1ZhbHVlRm9yKHZhbHVlT3B0aW9uOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmZpbmRMaW5lSXRlbUZvclZhbHVlKHZhbHVlT3B0aW9uKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRNZXNzYWdlcyh2YWx1ZU9wdGlvbjogc3RyaW5nKTogTGluZUl0ZW1bJ21lc3NhZ2VzJ10ge1xuICAgIGNvbnN0IGxpbmVJdGVtID0gdGhpcy5maW5kTGluZUl0ZW1Gb3JWYWx1ZSh2YWx1ZU9wdGlvbik7XG5cbiAgICBpZiAodGhpcy5zZWN0aW9uLm1vZGVsPy5saW5lSXRlbXMgJiYgbGluZUl0ZW0pIHtcbiAgICAgIHJldHVybiBsaW5lSXRlbS5tZXNzYWdlcztcbiAgICB9XG5cbiAgICByZXR1cm4gW107XG4gIH1cblxuICBwdWJsaWMgdG9TdHJpbmcocHJpY2U6IFJlY29tbWVuZGVkUHJpY2UpOiBzdHJpbmcge1xuICAgIGxldCByZXN1bHQgPSAnJztcbiAgICBpZiAocHJpY2UubGlzdFByaWNlID4gcHJpY2UubmV0UHJpY2UpIHtcbiAgICAgIHJlc3VsdCArPSAnPHN0cmlrZT4nICsgcHJpY2UubGlzdFByaWNlICsgJzwvc3RyaWtlPic7XG4gICAgfVxuICAgIHJlc3VsdCArPSBwcmljZS5uZXRQcmljZTtcbiAgICBpZiAocHJpY2UuZXhwbGFuYXRpb24pIHtcbiAgICAgIHJlc3VsdCArPSAnKCcgKyBwcmljZS5leHBsYW5hdGlvbiArICcpJztcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgaGFzUHJldmlvdXNWYWx1ZSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBwcmV2aW91cyA9IHRoaXMuc2VjdGlvbi5tb2RlbD8ubGluZUl0ZW1zLmZpbHRlcihsaSA9PiBsaS5wb3J0ICYmIGxpLnBvcnQgPT09IHRoaXMuc2VjdGlvbi5ib3VuZERhdGEubmFtZSk7XG5cbiAgICByZXR1cm4gcHJldmlvdXMgPyBwcmV2aW91cy5sZW5ndGggPiAwIDogZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGZpbmRMaW5lSXRlbUZvclZhbHVlKHZhbHVlT3B0aW9uOiBzdHJpbmcpOiBMaW5lSXRlbSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuc2VjdGlvbi5tb2RlbCA/IExpbmVJdGVtVXRpbC5maW5kTGluZUl0ZW1Gb3JWYWx1ZSh0aGlzLnNlY3Rpb24ubW9kZWwsIHZhbHVlT3B0aW9uKSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFByaWNlSXRlbXMoKTogdm9pZCB7XG4gICAgdGhpcy5wcmljZXMgPSB7fTtcbiAgICBpZiAodGhpcy5zZWN0aW9uLnByaWNpbmdFbmFibGVkKSB7XG4gICAgICB0aGlzLnNlY3Rpb24uc2VjdGlvblZhbHVlPy52YWx1ZU9wdGlvbnMuZm9yRWFjaCh2YWx1ZU9wdGlvbiA9PiB7XG4gICAgICAgIHRoaXMucHJpY2VzW3ZhbHVlT3B0aW9uXSA9IHRoaXMuZmluZFByaWNlSXRlbXNGb3JWYWx1ZSh2YWx1ZU9wdGlvbik7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZpbmRQcmljZUl0ZW1zRm9yVmFsdWUodmFsdWVPcHRpb246IHN0cmluZyk6IFJlY29tbWVuZGVkUHJpY2VbXSB7XG4gICAgbGV0IHByaWNlczogUmVjb21tZW5kZWRQcmljZVtdID0gW107XG4gICAgaWYgKHZhbHVlT3B0aW9uKSB7XG4gICAgICBjb25zdCBsaW5lSXRlbSA9XG4gICAgICAgIHRoaXMuc2VjdGlvbi5tb2RlbD8ubGluZUl0ZW1zICYmXG4gICAgICAgIHRoaXMuc2VjdGlvbi5tb2RlbC5saW5lSXRlbXMuZmluZChsaSA9PiBsaS50eXBlICYmIGxpLnR5cGUudG9Mb3dlckNhc2UoKSA9PT0gdmFsdWVPcHRpb24udG9Mb3dlckNhc2UoKSk7XG4gICAgICBpZiAobGluZUl0ZW0gJiYgbGluZUl0ZW0uY2hhcmdlSXRlbXMpIHtcbiAgICAgICAgcHJpY2VzID0gbGluZUl0ZW0uY2hhcmdlSXRlbXMubWFwKHBpID0+IHtcbiAgICAgICAgICBjb25zdCBwcmljZTogUmVjb21tZW5kZWRQcmljZSA9IHtcbiAgICAgICAgICAgIGxpc3RQcmljZTogcGkubGlzdFByaWNlLFxuICAgICAgICAgICAgbmV0UHJpY2U6IHBpLm5ldFByaWNlLFxuICAgICAgICAgICAgY2hhcmdlTWV0aG9kOiBwaS5jaGFyZ2VNZXRob2QsXG4gICAgICAgICAgICBjaGFyZ2VUeXBlOiBwaS5jaGFyZ2VUeXBlLFxuICAgICAgICAgIH07XG4gICAgICAgICAgcmV0dXJuIHByaWNlO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHBvcnREb21haW4gPSB0aGlzLnNlY3Rpb24ubW9kZWw/LnBvcnREb21haW5zW3RoaXMuc2VjdGlvbi5ib3VuZERhdGEubmFtZV07XG4gICAgICAgIGNvbnN0IGRvbWFpblR5cGUgPSBwb3J0RG9tYWluPy5kb21haW5UeXBlcy5maW5kKGQgPT4gZC5uYW1lLnRvTG93ZXJDYXNlKCkgPT09IHZhbHVlT3B0aW9uLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgICBpZiAoZG9tYWluVHlwZSAmJiBkb21haW5UeXBlLnJlY29tbWVuZGVkUHJpY2VzKSB7XG4gICAgICAgICAgcHJpY2VzID0gZG9tYWluVHlwZS5yZWNvbW1lbmRlZFByaWNlcztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG9uZVRpbWU6IFJlY29tbWVuZGVkUHJpY2UgPSB7XG4gICAgICBjaGFyZ2VNZXRob2Q6ICdPTkVfVElNRScsXG4gICAgICBuZXRQcmljZTogMCxcbiAgICAgIGxpc3RQcmljZTogMCxcbiAgICAgIGNoYXJnZVR5cGU6ICcnLFxuICAgIH07XG5cbiAgICBjb25zdCByZWN1cnJpbmc6IFJlY29tbWVuZGVkUHJpY2UgPSB7XG4gICAgICBjaGFyZ2VNZXRob2Q6ICdSRUNVUlJJTkcnLFxuICAgICAgbmV0UHJpY2U6IDAsXG4gICAgICBsaXN0UHJpY2U6IDAsXG4gICAgICBjaGFyZ2VUeXBlOiAnJyxcbiAgICB9O1xuXG4gICAgcHJpY2VzLmZvckVhY2gocCA9PiB7XG4gICAgICBpZiAocC5jaGFyZ2VNZXRob2QgPT09IG9uZVRpbWUuY2hhcmdlTWV0aG9kKSB7XG4gICAgICAgIHRoaXMuYWRkKG9uZVRpbWUsIHApO1xuICAgICAgfVxuICAgICAgaWYgKHAuY2hhcmdlTWV0aG9kID09PSByZWN1cnJpbmcuY2hhcmdlTWV0aG9kKSB7XG4gICAgICAgIHRoaXMuYWRkKHJlY3VycmluZywgcCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCByZXN1bHQ6IFJlY29tbWVuZGVkUHJpY2VbXSA9IFtdO1xuICAgIGlmIChvbmVUaW1lLmxpc3RQcmljZSA+IDApIHtcbiAgICAgIHJlc3VsdC5wdXNoKG9uZVRpbWUpO1xuICAgIH1cbiAgICBpZiAocmVjdXJyaW5nLmxpc3RQcmljZSA+IDApIHtcbiAgICAgIHJlc3VsdC5wdXNoKHJlY3VycmluZyk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIGFkZCh0YXJnZXQ6IFJlY29tbWVuZGVkUHJpY2UsIHNyYzogUmVjb21tZW5kZWRQcmljZSk6IHZvaWQge1xuICAgIHRhcmdldC5uZXRQcmljZSA9IHRhcmdldC5uZXRQcmljZSArIHNyYy5uZXRQcmljZTtcbiAgICB0YXJnZXQubGlzdFByaWNlID0gdGFyZ2V0Lmxpc3RQcmljZSArIHNyYy5saXN0UHJpY2U7XG4gICAgaWYgKHNyYy5leHBsYW5hdGlvbikge1xuICAgICAgdGFyZ2V0LmV4cGxhbmF0aW9uID0gc3JjLmV4cGxhbmF0aW9uO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAgPCEtLVRPRE8gQUxFIHJlcGxhY2UgZGl2cyB3aXRoIG5nLXRlbXBsYXRlcy0tPlxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB2YWx1ZU9wdGlvbiBvZiBzZWN0aW9uLnNlY3Rpb25WYWx1ZT8udmFsdWVPcHRpb25zXCI+XG4gICAgPGRpdiBjbGFzcz1cInVuY2hlY2tlZFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBuby1ndXR0ZXIgY2xlYXJmaXhcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWJveCBjb250YWluZXItYm94LWJvcmRlcmVkIGNvbnRhaW5lci1ib3gtcmFkaW9cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJveC10aXRsZVwiIChjbGljayk9XCJoYW5kbGVDaGFuZ2UoJGV2ZW50LCB2YWx1ZU9wdGlvbilcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyIGNsZWFyZml4XCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmFkaW8tYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInJhZGlvXCIgW2lkXT1cImNvbnRyb2xOYW1lXCIgW3ZhbHVlXT1cInZhbHVlT3B0aW9uXCIgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sTmFtZVwiIC8+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImlucHV0LWhlbHBlclwiPjwvaT5cblxuICAgICAgICAgICAgICAgICAgICAgIHt7IHNlY3Rpb24uc2VjdGlvblZhbHVlPy5kaXNwbGF5VmFsdWVzPy5bdmFsdWVPcHRpb25dIHx8IHZhbHVlT3B0aW9uIH19XG5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInByaWNlc1t2YWx1ZU9wdGlvbl0gJiYgcHJpY2VzW3ZhbHVlT3B0aW9uXS5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4ke3sgcHJpY2VzW3ZhbHVlT3B0aW9uXVswXS5uZXRQcmljZSB9fTwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwcmljZXNbdmFsdWVPcHRpb25dLmxlbmd0aCA+IDFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+LCA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+JHt7IHByaWNlc1t2YWx1ZU9wdGlvbl1bMV0ubmV0UHJpY2UgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInByaWNlc1t2YWx1ZU9wdGlvbl0gJiYgcHJpY2VzW3ZhbHVlT3B0aW9uXS5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdj57eyBwcmljZXNbdmFsdWVPcHRpb25dWzBdLmV4cGxhbmF0aW9uIH19PC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInByaWNlc1t2YWx1ZU9wdGlvbl0ubGVuZ3RoID4gMSAmJiBwcmljZXNbdmFsdWVPcHRpb25dWzFdLmV4cGxhbmF0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7IHByaWNlc1t2YWx1ZU9wdGlvbl1bMV0uZXhwbGFuYXRpb24gfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG48bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4iXX0=