@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,121 @@
1
+ import { Component } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../../services/form-scope.service";
4
+ import * as i2 from "../../../services/collapsible-state.service";
5
+ import * as i3 from "../../../services/section-scope.service";
6
+ import * as i4 from "primeng/api";
7
+ import * as i5 from "@angular/forms";
8
+ import * as i6 from "@angular/common";
9
+ import * as i7 from "ngx-bootstrap/popover";
10
+ import * as i8 from "@veloceapps/core";
11
+ export class VeloTypeComponent {
12
+ constructor(formScope, collapsibleState, sectionScope, messageService) {
13
+ var _a, _b;
14
+ this.formScope = formScope;
15
+ this.collapsibleState = collapsibleState;
16
+ this.sectionScope = sectionScope;
17
+ this.messageService = messageService;
18
+ this.messageBucketId = 'ui-runtime';
19
+ this.indent = 1;
20
+ this.prices = [];
21
+ this.form = this.formScope.form;
22
+ this.section = this.sectionScope.section;
23
+ this.indent = this.sectionScope.indent;
24
+ this.controlName = this.section.id;
25
+ this.qtyControlName = this.section.id + 'qty';
26
+ this.displayName =
27
+ (((_a = this.section.model) === null || _a === void 0 ? void 0 : _a.properties) && this.section.model.properties.displayName) || ((_b = this.section.model) === null || _b === void 0 ? void 0 : _b.type) || '';
28
+ }
29
+ ngOnInit() {
30
+ var _a, _b;
31
+ if (this.section.pricingEnabled) {
32
+ this.prices = this.getPrices();
33
+ }
34
+ if (this.section.controlType === 'MESSAGE') {
35
+ this.messageService.clear(this.messageBucketId);
36
+ (_b = (_a = this.section.model) === null || _a === void 0 ? void 0 : _a.messages) === null || _b === void 0 ? void 0 : _b.forEach(message => {
37
+ this.messageService.add({ key: this.messageBucketId, summary: message });
38
+ });
39
+ }
40
+ }
41
+ handleRemove() {
42
+ const updateData = {
43
+ id: this.section.id,
44
+ action: 'remove',
45
+ };
46
+ this.formScope.publishFormUpdate(updateData);
47
+ }
48
+ handleQuantityUpdate() {
49
+ const updateData = {
50
+ id: this.section.id,
51
+ action: 'qtyUpdate',
52
+ };
53
+ this.formScope.publishFormUpdate(updateData);
54
+ }
55
+ toggleCollapse() {
56
+ if (this.section.model) {
57
+ this.collapsibleState.toggleCollapse(this.section.model.id);
58
+ }
59
+ }
60
+ getPrices() {
61
+ var _a;
62
+ let prices = [];
63
+ if ((_a = this.section.model) === null || _a === void 0 ? void 0 : _a.chargeItems) {
64
+ prices = this.section.model.chargeItems.map(pi => {
65
+ const price = {
66
+ listPrice: pi.listPrice,
67
+ netPrice: pi.netPrice,
68
+ chargeMethod: pi.chargeMethod,
69
+ chargeType: pi.chargeType,
70
+ };
71
+ return price;
72
+ });
73
+ }
74
+ const oneTime = {
75
+ chargeMethod: 'ONE_TIME',
76
+ netPrice: 0,
77
+ listPrice: 0,
78
+ chargeType: '',
79
+ };
80
+ const recurring = {
81
+ chargeMethod: 'RECURRING',
82
+ netPrice: 0,
83
+ listPrice: 0,
84
+ chargeType: '',
85
+ };
86
+ prices.forEach(p => {
87
+ if (p.chargeMethod === oneTime.chargeMethod) {
88
+ this.add(oneTime, p);
89
+ }
90
+ if (p.chargeMethod === recurring.chargeMethod) {
91
+ this.add(recurring, p);
92
+ }
93
+ });
94
+ const result = [];
95
+ if (oneTime.listPrice > 0) {
96
+ result.push(oneTime);
97
+ }
98
+ if (recurring.listPrice > 0) {
99
+ result.push(recurring);
100
+ }
101
+ return result;
102
+ }
103
+ add(target, src) {
104
+ target.netPrice = target.netPrice + src.netPrice;
105
+ target.listPrice = target.listPrice + src.listPrice;
106
+ if (src.explanation) {
107
+ target.explanation = src.explanation;
108
+ }
109
+ }
110
+ }
111
+ VeloTypeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: VeloTypeComponent, deps: [{ token: i1.FormScopeService }, { token: i2.CollapsibleStateService }, { token: i3.SectionScopeService }, { token: i4.MessageService }], target: i0.ɵɵFactoryTarget.Component });
112
+ VeloTypeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: VeloTypeComponent, selector: "velo-type", ngImport: i0, template: "<div class=\"container-box div-block collapsed container-box-bordered\" [formGroup]=\"form\">\n <div class=\"box-title\">\n <div class=\"header clearfix\">\n <div>\n <div class=\"header-label div-inline\">\n {{ displayName }}\n <span *ngIf=\"prices.length > 0\">\n <span>${{ prices[0].netPrice }}</span>\n <span *ngIf=\"prices.length > 1\">\n <span>, </span>\n <span>${{ prices[1].netPrice }}</span>\n </span>\n </span>\n </div>\n\n <div class=\"header-qty-container input-form-input\">\n <input\n [id]=\"qtyControlName\"\n [formControlName]=\"qtyControlName\"\n (blur)=\"form.controls[qtyControlName].valid && handleQuantityUpdate()\"\n type=\"text\"\n class=\"form-control\"\n size=\"3\"\n />\n <div class=\"validation-message\">\n <div *ngFor=\"let key of form.controls[qtyControlName].errors | values\">\n <span>\n {{ form.controls[qtyControlName]?.errors?.[key].message }}\n </span>\n </div>\n <span *ngIf=\"form.controls[qtyControlName].valid\"> &nbsp; </span>\n </div>\n <span *ngIf=\"prices.length > 0\">\n <div>{{ prices[0].explanation }}</div>\n <span *ngIf=\"prices.length > 1 && prices[1].explanation\">\n <div>{{ prices[1].explanation }}</div>\n </span>\n </span>\n </div>\n </div>\n </div>\n\n <div class=\"box-actions\">\n <ng-container *ngIf=\"section.controlType !== 'MESSAGE'\">\n <ng-template #msgTemplate>\n <div class=\"runtime-info-message\">\n <ul class=\"message-text\">\n <li *ngFor=\"let message of section.model?.messages\">{{ message }}</li>\n </ul>\n </div>\n </ng-template>\n\n <div\n class=\"box-action-button\"\n *ngIf=\"(section.model?.messages?.length ?? 0) > 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 </ng-container>\n\n <div\n class=\"box-action-button\"\n (click)=\"toggleCollapse()\"\n [hidden]=\"!section.children || section.children.length < 1\"\n >\n <a><i class=\"fa fa-chevron-down check-icon\"></i></a>\n </div>\n\n <div class=\"box-action-button\" (click)=\"handleRemove()\">\n <a><i class=\"fa fa-trash-o check-icon\"></i></a>\n </div>\n </div>\n </div>\n\n <ng-content></ng-content>\n</div>\n", directives: [{ type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.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: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i5.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.PopoverDirective, selector: "[popover]", inputs: ["outsideClick", "containerClass", "isOpen", "adaptivePosition", "popover", "popoverContext", "popoverTitle", "placement", "triggers", "container", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }], pipes: { "values": i8.ValuesPipe } });
113
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: VeloTypeComponent, decorators: [{
114
+ type: Component,
115
+ args: [{
116
+ // eslint-disable-next-line @angular-eslint/component-selector
117
+ selector: 'velo-type',
118
+ templateUrl: 'velo-type.component.html',
119
+ }]
120
+ }], ctorParameters: function () { return [{ type: i1.FormScopeService }, { type: i2.CollapsibleStateService }, { type: i3.SectionScopeService }, { type: i4.MessageService }]; } });
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVsby10eXBlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3J1bnRpbWUvZXhlY3V0aW9uL2NvbXBvbmVudHMvdmVsby10eXBlL3ZlbG8tdHlwZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9ydW50aW1lL2V4ZWN1dGlvbi9jb21wb25lbnRzL3ZlbG8tdHlwZS92ZWxvLXR5cGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7OztBQWNsRCxNQUFNLE9BQU8saUJBQWlCO0lBYTVCLFlBQ1UsU0FBMkIsRUFDM0IsZ0JBQXlDLEVBQ3pDLFlBQWlDLEVBQ2pDLGNBQThCOztRQUg5QixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXlCO1FBQ3pDLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUNqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFoQnhCLG9CQUFlLEdBQUcsWUFBWSxDQUFDO1FBS3hDLFdBQU0sR0FBRyxDQUFDLENBQUM7UUFLWCxXQUFNLEdBQXVCLEVBQUUsQ0FBQztRQVFyQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUM7UUFDekMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztRQUV2QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsS0FBSyxD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b25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUmVjb21tZW5kZWRQcmljZSwgU2VjdGlvbiB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQgeyBDb2xsYXBzaWJsZVN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NvbGxhcHNpYmxlLXN0YXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybVNjb3BlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Zvcm0tc2NvcGUuc2VydmljZSc7XG5pbXBvcnQgeyBTZWN0aW9uU2NvcGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvc2VjdGlvbi1zY29wZS5zZXJ2aWNlJztcbmltcG9ydCB7IFVwZGF0ZURhdGEgfSBmcm9tICcuLi8uLi8uLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ3ZlbG8tdHlwZScsXG4gIHRlbXBsYXRlVXJsOiAndmVsby10eXBlLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgVmVsb1R5cGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwdWJsaWMgcmVhZG9ubHkgbWVzc2FnZUJ1Y2tldElkID0gJ3VpLXJ1bnRpbWUnO1xuXG4gIHB1YmxpYyBjb250cm9sTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgcXR5Q29udHJvbE5hbWU6IHN0cmluZztcbiAgcHVibGljIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBpbmRlbnQgPSAxO1xuXG4gIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXA7XG4gIHB1YmxpYyBzZWN0aW9uOiBTZWN0aW9uO1xuXG4gIHB1YmxpYyBwcmljZXM6IFJlY29tbWVuZGVkUHJpY2VbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZm9ybVNjb3BlOiBGb3JtU2NvcGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29sbGFwc2libGVTdGF0ZTogQ29sbGFwc2libGVTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzZWN0aW9uU2NvcGU6IFNlY3Rpb25TY29wZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXG4gICkge1xuICAgIHRoaXMuZm9ybSA9IHRoaXMuZm9ybVNjb3BlLmZvcm07XG4gICAgdGhpcy5zZWN0aW9uID0gdGhpcy5zZWN0aW9uU2NvcGUuc2VjdGlvbjtcbiAgICB0aGlzLmluZGVudCA9IHRoaXMuc2VjdGlvblNjb3BlLmluZGVudDtcblxuICAgIHRoaXMuY29udHJvbE5hbWUgPSB0aGlzLnNlY3Rpb24uaWQ7XG4gICAgdGhpcy5xdHlDb250cm9sTmFtZSA9IHRoaXMuc2VjdGlvbi5pZCArICdxdHknO1xuICAgIHRoaXMuZGlzcGxheU5hbWUgPVxuICAgICAgKHRoaXMuc2VjdGlvbi5tb2RlbD8ucHJvcGVydGllcyAmJiB0aGlzLnNlY3Rpb24ubW9kZWwucHJvcGVydGllcy5kaXNwbGF5TmFtZSkgfHwgdGhpcy5zZWN0aW9uLm1vZGVsPy50eXBlIHx8ICcnO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlY3Rpb24ucHJpY2luZ0VuYWJsZWQpIHtcbiAgICAgIHRoaXMucHJpY2VzID0gdGhpcy5nZXRQcmljZXMoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zZWN0aW9uLmNvbnRyb2xUeXBlID09PSAnTUVTU0FHRScpIHtcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuY2xlYXIodGhpcy5tZXNzYWdlQnVja2V0SWQpO1xuXG4gICAgICB0aGlzLnNlY3Rpb24ubW9kZWw/Lm1lc3NhZ2VzPy5mb3JFYWNoKG1lc3NhZ2UgPT4ge1xuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7IGtleTogdGhpcy5tZXNzYWdlQnVja2V0SWQsIHN1bW1hcnk6IG1lc3NhZ2UgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlUmVtb3ZlKCk6IHZvaWQge1xuICAgIGNvbnN0IHVwZGF0ZURhdGE6IFVwZGF0ZURhdGEgPSB7XG4gICAgICBpZDogdGhpcy5zZWN0aW9uLmlkLFxuICAgICAgYWN0aW9uOiAncmVtb3ZlJyxcbiAgICB9O1xuXG4gICAgdGhpcy5mb3JtU2NvcGUucHVibGlzaEZvcm1VcGRhdGUodXBkYXRlRGF0YSk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlUXVhbnRpdHlVcGRhdGUoKTogdm9pZCB7XG4gICAgY29uc3QgdXBkYXRlRGF0YTogVXBkYXRlRGF0YSA9IHtcbiAgICAgIGlkOiB0aGlzLnNlY3Rpb24uaWQsXG4gICAgICBhY3Rpb246ICdxdHlVcGRhdGUnLFxuICAgIH07XG5cbiAgICB0aGlzLmZvcm1TY29wZS5wdWJsaXNoRm9ybVVwZGF0ZSh1cGRhdGVEYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVDb2xsYXBzZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWN0aW9uLm1vZGVsKSB7XG4gICAgICB0aGlzLmNvbGxhcHNpYmxlU3RhdGUudG9nZ2xlQ29sbGFwc2UodGhpcy5zZWN0aW9uLm1vZGVsLmlkKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0UHJpY2VzKCk6IFJlY29tbWVuZGVkUHJpY2VbXSB7XG4gICAgbGV0IHByaWNlczogUmVjb21tZW5kZWRQcmljZVtdID0gW107XG4gICAgaWYgKHRoaXMuc2VjdGlvbi5tb2RlbD8uY2hhcmdlSXRlbXMpIHtcbiAgICAgIHByaWNlcyA9IHRoaXMuc2VjdGlvbi5tb2RlbC5jaGFyZ2VJdGVtcy5tYXAocGkgPT4ge1xuICAgICAgICBjb25zdCBwcmljZTogUmVjb21tZW5kZWRQcmljZSA9IHtcbiAgICAgICAgICBsaXN0UHJpY2U6IHBpLmxpc3RQcmljZSxcbiAgICAgICAgICBuZXRQcmljZTogcGkubmV0UHJpY2UsXG4gICAgICAgICAgY2hhcmdlTWV0aG9kOiBwaS5jaGFyZ2VNZXRob2QsXG4gICAgICAgICAgY2hhcmdlVHlwZTogcGkuY2hhcmdlVHlwZSxcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gcHJpY2U7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBvbmVUaW1lOiBSZWNvbW1lbmRlZFByaWNlID0ge1xuICAgICAgY2hhcmdlTWV0aG9kOiAnT05FX1RJTUUnLFxuICAgICAgbmV0UHJpY2U6IDAsXG4gICAgICBsaXN0UHJpY2U6IDAsXG4gICAgICBjaGFyZ2VUeXBlOiAnJyxcbiAgICB9O1xuXG4gICAgY29uc3QgcmVjdXJyaW5nOiBSZWNvbW1lbmRlZFByaWNlID0ge1xuICAgICAgY2hhcmdlTWV0aG9kOiAnUkVDVVJSSU5HJyxcbiAgICAgIG5ldFByaWNlOiAwLFxuICAgICAgbGlzdFByaWNlOiAwLFxuICAgICAgY2hhcmdlVHlwZTogJycsXG4gICAgfTtcblxuICAgIHByaWNlcy5mb3JFYWNoKHAgPT4ge1xuICAgICAgaWYgKHAuY2hhcmdlTWV0aG9kID09PSBvbmVUaW1lLmNoYXJnZU1ldGhvZCkge1xuICAgICAgICB0aGlzLmFkZChvbmVUaW1lLCBwKTtcbiAgICAgIH1cbiAgICAgIGlmIChwLmNoYXJnZU1ldGhvZCA9PT0gcmVjdXJyaW5nLmNoYXJnZU1ldGhvZCkge1xuICAgICAgICB0aGlzLmFkZChyZWN1cnJpbmcsIHApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzdWx0OiBSZWNvbW1lbmRlZFByaWNlW10gPSBbXTtcbiAgICBpZiAob25lVGltZS5saXN0UHJpY2UgPiAwKSB7XG4gICAgICByZXN1bHQucHVzaChvbmVUaW1lKTtcbiAgICB9XG4gICAgaWYgKHJlY3VycmluZy5saXN0UHJpY2UgPiAwKSB7XG4gICAgICByZXN1bHQucHVzaChyZWN1cnJpbmcpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIGFkZCh0YXJnZXQ6IFJlY29tbWVuZGVkUHJpY2UsIHNyYzogUmVjb21tZW5kZWRQcmljZSk6IHZvaWQge1xuICAgIHRhcmdldC5uZXRQcmljZSA9IHRhcmdldC5uZXRQcmljZSArIHNyYy5uZXRQcmljZTtcbiAgICB0YXJnZXQubGlzdFByaWNlID0gdGFyZ2V0Lmxpc3RQcmljZSArIHNyYy5saXN0UHJpY2U7XG4gICAgaWYgKHNyYy5leHBsYW5hdGlvbikge1xuICAgICAgdGFyZ2V0LmV4cGxhbmF0aW9uID0gc3JjLmV4cGxhbmF0aW9uO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNvbnRhaW5lci1ib3ggZGl2LWJsb2NrIGNvbGxhcHNlZCBjb250YWluZXItYm94LWJvcmRlcmVkXCIgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gIDxkaXYgY2xhc3M9XCJib3gtdGl0bGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyIGNsZWFyZml4XCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyLWxhYmVsIGRpdi1pbmxpbmVcIj5cbiAgICAgICAgICB7eyBkaXNwbGF5TmFtZSB9fVxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwicHJpY2VzLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgIDxzcGFuPiR7eyBwcmljZXNbMF0ubmV0UHJpY2UgfX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInByaWNlcy5sZW5ndGggPiAxXCI+XG4gICAgICAgICAgICAgIDxzcGFuPiwgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3Bhbj4ke3sgcHJpY2VzWzFdLm5ldFByaWNlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRlci1xdHktY29udGFpbmVyIGlucHV0LWZvcm0taW5wdXRcIj5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIFtpZF09XCJxdHlDb250cm9sTmFtZVwiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lXT1cInF0eUNvbnRyb2xOYW1lXCJcbiAgICAgICAgICAgIChibHVyKT1cImZvcm0uY29udHJvbHNbcXR5Q29udHJvbE5hbWVdLnZhbGlkICYmIGhhbmRsZVF1YW50aXR5VXBkYXRlKClcIlxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgc2l6ZT1cIjNcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZhbGlkYXRpb24tbWVzc2FnZVwiPlxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQga2V5IG9mIGZvcm0uY29udHJvbHNbcXR5Q29udHJvbE5hbWVdLmVycm9ycyB8IHZhbHVlc1wiPlxuICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICB7eyBmb3JtLmNvbnRyb2xzW3F0eUNvbnRyb2xOYW1lXT8uZXJyb3JzPy5ba2V5XS5tZXNzYWdlIH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJmb3JtLmNvbnRyb2xzW3F0eUNvbnRyb2xOYW1lXS52YWxpZFwiPiAmbmJzcDsgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwicHJpY2VzLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICAgIDxkaXY+e3sgcHJpY2VzWzBdLmV4cGxhbmF0aW9uIH19PC9kaXY+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInByaWNlcy5sZW5ndGggPiAxICYmIHByaWNlc1sxXS5leHBsYW5hdGlvblwiPlxuICAgICAgICAgICAgICA8ZGl2Pnt7IHByaWNlc1sxXS5leHBsYW5hdGlvbiB9fTwvZGl2PlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJib3gtYWN0aW9uc1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlY3Rpb24uY29udHJvbFR5cGUgIT09ICdNRVNTQUdFJ1wiPlxuICAgICAgICA8bmctdGVtcGxhdGUgI21zZ1RlbXBsYXRlPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJydW50aW1lLWluZm8tbWVzc2FnZVwiPlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwibWVzc2FnZS10ZXh0XCI+XG4gICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgbWVzc2FnZSBvZiBzZWN0aW9uLm1vZGVsPy5tZXNzYWdlc1wiPnt7IG1lc3NhZ2UgfX08L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJib3gtYWN0aW9uLWJ1dHRvblwiXG4gICAgICAgICAgKm5nSWY9XCIoc2VjdGlvbi5tb2RlbD8ubWVzc2FnZXM/Lmxlbmd0aCA/PyAwKSA+IDBcIlxuICAgICAgICAgIFtwb3BvdmVyXT1cIm1zZ1RlbXBsYXRlXCJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICBbaXNPcGVuXT1cInRydWVcIlxuICAgICAgICA+XG4gICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKTtcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtaW5mbyBjaGVjay1pY29uXCI+PC9pPlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImJveC1hY3Rpb24tYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNvbGxhcHNlKClcIlxuICAgICAgICBbaGlkZGVuXT1cIiFzZWN0aW9uLmNoaWxkcmVuIHx8IHNlY3Rpb24uY2hpbGRyZW4ubGVuZ3RoIDwgMVwiXG4gICAgICA+XG4gICAgICAgIDxhPjxpIGNsYXNzPVwiZmEgZmEtY2hldnJvbi1kb3duIGNoZWNrLWljb25cIj48L2k+PC9hPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJib3gtYWN0aW9uLWJ1dHRvblwiIChjbGljayk9XCJoYW5kbGVSZW1vdmUoKVwiPlxuICAgICAgICA8YT48aSBjbGFzcz1cImZhIGZhLXRyYXNoLW8gY2hlY2staWNvblwiPjwvaT48L2E+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,242 @@
1
+ import { CurrencyPipe, DOCUMENT } from '@angular/common';
2
+ import { Directive, Inject } from '@angular/core';
3
+ import { EntityUtil, PagedEntity, UUID } from '@veloceapps/core';
4
+ import * as _ from 'lodash';
5
+ import * as moment from 'moment';
6
+ import * as rxjs from 'rxjs';
7
+ import * as rxjsOperators from 'rxjs/operators';
8
+ import { SfQueryDirective } from './sf-query.directive';
9
+ import { LineItemDirective } from './velo-port.directive';
10
+ import { VlApprovalDirective } from './vl-approval.directive';
11
+ import { VlDocumentAttachmentsDirective } from './vl-document-attachments.directive';
12
+ import { VlDocumentTemplatesDirective } from './vl-document-templates.directive';
13
+ import { VlQuoteDirective } from './vl-quote.directive';
14
+ import { VlRampDirective } from './vl-ramp.directive';
15
+ import * as i0 from "@angular/core";
16
+ import * as i1 from "../../services/form-scope.service";
17
+ import * as i2 from "../../services/section-scope.service";
18
+ import * as i3 from "@angular/forms";
19
+ import * as i4 from "../../services/runtime.service";
20
+ import * as i5 from "../../services/cart.service";
21
+ import * as i6 from "@veloceapps/sdk/core";
22
+ import * as i7 from "../../services/current-state.service";
23
+ import * as i8 from "./sf-query.directive";
24
+ import * as i9 from "./velo-port.directive";
25
+ import * as i10 from "./vl-quote.directive";
26
+ import * as i11 from "./vl-document-templates.directive";
27
+ import * as i12 from "./vl-ramp.directive";
28
+ import * as i13 from "./vl-approval.directive";
29
+ import * as i14 from "./vl-document-attachments.directive";
30
+ const SHA1 = UUID.SHA1();
31
+ const SCRIPT_GLOBAL_NAME = `$velo`;
32
+ export class SectionScriptDirective {
33
+ constructor(_document, sfQueryDirective, lineItemDirective, quoteDirective, documentTemplatesDirective, rampDirective, approvalDirective, documentAttachmentsDirective, formScope, sectionScope, renderer, formBuilder, runtimeService, cdr, cartService, contextService, currentStateService, quoteService) {
34
+ this._document = _document;
35
+ this.sfQueryDirective = sfQueryDirective;
36
+ this.lineItemDirective = lineItemDirective;
37
+ this.quoteDirective = quoteDirective;
38
+ this.documentTemplatesDirective = documentTemplatesDirective;
39
+ this.rampDirective = rampDirective;
40
+ this.approvalDirective = approvalDirective;
41
+ this.documentAttachmentsDirective = documentAttachmentsDirective;
42
+ this.formScope = formScope;
43
+ this.sectionScope = sectionScope;
44
+ this.renderer = renderer;
45
+ this.formBuilder = formBuilder;
46
+ this.runtimeService = runtimeService;
47
+ this.cdr = cdr;
48
+ this.cartService = cartService;
49
+ this.contextService = contextService;
50
+ this.currentStateService = currentStateService;
51
+ this.quoteService = quoteService;
52
+ this.scriptId = '';
53
+ this.sessionScope = {};
54
+ }
55
+ ngOnInit() {
56
+ if (!this.scriptExists()) {
57
+ return;
58
+ }
59
+ this.scriptId = this.generateScriptId();
60
+ this.registry = this.getScriptRegistry();
61
+ this.sessionScope = this.getSessionScope();
62
+ if (!this.registry.exists(this.scriptId)) {
63
+ this.appendScriptElementToDom();
64
+ }
65
+ this.initScript();
66
+ this.registry.doRegister(this.scriptId, this.sectionScope.section.id);
67
+ }
68
+ ngAfterViewInit() {
69
+ var _a;
70
+ const sharedScriptGlobal = (_a = this.registry) === null || _a === void 0 ? void 0 : _a.getGlobalForScript(this.sectionScope.section.id);
71
+ if (sharedScriptGlobal) {
72
+ this.methodApply('afterViewInit', sharedScriptGlobal);
73
+ }
74
+ }
75
+ ngOnDestroy() {
76
+ if (!this.scriptId) {
77
+ return;
78
+ }
79
+ this.registry.unRegister(this.scriptId, this.sectionScope.section.id);
80
+ if (!this.registry.exists(this.scriptId)) {
81
+ this.removeScript();
82
+ this.registry.removeGlobalForScript(this.scriptId);
83
+ }
84
+ }
85
+ get scope() {
86
+ if (!this.scriptId || !this.sectionScope.section) {
87
+ return {};
88
+ }
89
+ return Object.assign({}, this.registry.getGlobalForScript(this.sectionScope.section.id) || {}, this.sessionScope);
90
+ }
91
+ scriptExists() {
92
+ var _a, _b, _c, _d;
93
+ return ((_d = (_c = (_b = (_a = this.sectionScope) === null || _a === void 0 ? void 0 : _a.section) === null || _b === void 0 ? void 0 : _b.script) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0) > 0;
94
+ }
95
+ encodeScriptBody() {
96
+ return this.sectionScope.section.script ? atob(this.sectionScope.section.script) : '';
97
+ }
98
+ generateScriptId() {
99
+ return '_' + SHA1.hex(this.encodeScriptBody());
100
+ }
101
+ getScriptRegistry() {
102
+ return this.formScope.scriptRegistry;
103
+ }
104
+ getSessionScope() {
105
+ return this.formScope.scriptSessionScope;
106
+ }
107
+ initScript() {
108
+ let sharedScriptGlobal = this.registry.getGlobalForScript(this.sectionScope.section.id);
109
+ if (!EntityUtil.isPresent(sharedScriptGlobal)) {
110
+ sharedScriptGlobal = {};
111
+ this.registry.setGlobalForScript(this.sectionScope.section.id, sharedScriptGlobal);
112
+ }
113
+ this.methodApply('init', sharedScriptGlobal);
114
+ }
115
+ removeScript() {
116
+ const sharedScriptGlobal = this.registry.getGlobalForScript(this.sectionScope.section.id);
117
+ this.methodApply('destroy', sharedScriptGlobal);
118
+ this.removeScriptElementFromDom();
119
+ }
120
+ appendScriptElementToDom() {
121
+ const script = this.scriptFromTemplate(this.encodeScriptBody(), this.scriptId, this.sectionScope.section);
122
+ this.scriptElement = this.renderer.createElement('script');
123
+ this.scriptElement.type = `text/javascript`;
124
+ this.scriptElement.text = script;
125
+ this.scriptElement.setAttribute('id', this.scriptId);
126
+ this.renderer.appendChild(this._document.body, this.scriptElement);
127
+ }
128
+ removeScriptElementFromDom() {
129
+ if (!this.scriptElement) {
130
+ this.scriptElement = this._document.getElementById(this.scriptId);
131
+ }
132
+ this.scriptElement.remove();
133
+ }
134
+ scriptFromTemplate(scriptBody, scriptId, section) {
135
+ return `var ${scriptId} = (function (${SCRIPT_GLOBAL_NAME}, form, { section, templates }, sessionScope, formBuilder, runtimeContext, cdr, apis) {
136
+ ${SCRIPT_GLOBAL_NAME}["form"] = form;
137
+ ${SCRIPT_GLOBAL_NAME}["section"] = section;
138
+ ${SCRIPT_GLOBAL_NAME}["templates"] = templates;
139
+ ${SCRIPT_GLOBAL_NAME}["sessionScope"] = sessionScope;
140
+ ${SCRIPT_GLOBAL_NAME}["formBuilder"] = formBuilder;
141
+ ${SCRIPT_GLOBAL_NAME}["runtimeContext"] = runtimeContext;
142
+ ${SCRIPT_GLOBAL_NAME}["cdr"] = cdr;
143
+ ${SCRIPT_GLOBAL_NAME}["apis"] = apis;
144
+
145
+ ${scriptBody}
146
+ return ${SCRIPT_GLOBAL_NAME};
147
+ });
148
+
149
+ //# sourceURL=${_.kebabCase(section.label)}.js`;
150
+ }
151
+ methodApply(methodName, sharedScriptGlobal) {
152
+ const args = [
153
+ sharedScriptGlobal,
154
+ this.formScope.form,
155
+ this.sectionScope,
156
+ this.sessionScope,
157
+ this.formBuilder,
158
+ this.runtimeService.getRuntimeContext(),
159
+ this.cdr,
160
+ this.getExposedApis(),
161
+ ];
162
+ const fnInit = window[`${this.scriptId}`](...args);
163
+ fnInit && fnInit[methodName] && fnInit[methodName].apply();
164
+ }
165
+ getExposedApis() {
166
+ return {
167
+ 'sf-query': this.sfQueryDirective,
168
+ 'line-item': this.lineItemDirective,
169
+ 'quote-directive': this.quoteDirective,
170
+ 'templates-directive': this.documentTemplatesDirective,
171
+ 'attachments-directive': this.documentAttachmentsDirective,
172
+ 'ramp-directive': this.rampDirective,
173
+ 'approval-directive': this.approvalDirective,
174
+ entityUtil: EntityUtil,
175
+ moment,
176
+ lodash: _,
177
+ rxjs: Object.assign(Object.assign({}, rxjsOperators), rxjs),
178
+ PagedEntity,
179
+ pipes: {
180
+ currency: CurrencyPipe,
181
+ },
182
+ solutionUpdateStarted: this.runtimeService.onSolutionUpdateStartedEvent,
183
+ solutionUpdated: this.runtimeService.onSolutionProcessed,
184
+ cartService: this.cartService,
185
+ configurationContextService: this.contextService,
186
+ quoteDraft: this.quoteService.quoteDraft,
187
+ currentStateService: this.currentStateService,
188
+ };
189
+ }
190
+ }
191
+ SectionScriptDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SectionScriptDirective, deps: [{ token: DOCUMENT }, { token: SfQueryDirective }, { token: LineItemDirective }, { token: VlQuoteDirective }, { token: VlDocumentTemplatesDirective }, { token: VlRampDirective }, { token: VlApprovalDirective }, { token: VlDocumentAttachmentsDirective }, { token: i1.FormScopeService }, { token: i2.SectionScopeService }, { token: i0.Renderer2 }, { token: i3.FormBuilder }, { token: i4.RuntimeService }, { token: i0.ChangeDetectorRef }, { token: i5.ShoppingCartService }, { token: i6.ContextService }, { token: i7.CurrentStateService }, { token: i6.QuoteDraftService }], target: i0.ɵɵFactoryTarget.Directive });
192
+ SectionScriptDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.15", type: SectionScriptDirective, selector: "section-script", providers: [
193
+ SfQueryDirective,
194
+ LineItemDirective,
195
+ VlQuoteDirective,
196
+ VlDocumentTemplatesDirective,
197
+ VlRampDirective,
198
+ VlApprovalDirective,
199
+ VlDocumentAttachmentsDirective,
200
+ ], exportAs: ["scriptApi"], ngImport: i0 });
201
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SectionScriptDirective, decorators: [{
202
+ type: Directive,
203
+ args: [{
204
+ // eslint-disable-next-line @angular-eslint/directive-selector
205
+ selector: 'section-script',
206
+ exportAs: 'scriptApi',
207
+ providers: [
208
+ SfQueryDirective,
209
+ LineItemDirective,
210
+ VlQuoteDirective,
211
+ VlDocumentTemplatesDirective,
212
+ VlRampDirective,
213
+ VlApprovalDirective,
214
+ VlDocumentAttachmentsDirective,
215
+ ],
216
+ }]
217
+ }], ctorParameters: function () { return [{ type: Document, decorators: [{
218
+ type: Inject,
219
+ args: [DOCUMENT]
220
+ }] }, { type: i8.SfQueryDirective, decorators: [{
221
+ type: Inject,
222
+ args: [SfQueryDirective]
223
+ }] }, { type: i9.LineItemDirective, decorators: [{
224
+ type: Inject,
225
+ args: [LineItemDirective]
226
+ }] }, { type: i10.VlQuoteDirective, decorators: [{
227
+ type: Inject,
228
+ args: [VlQuoteDirective]
229
+ }] }, { type: i11.VlDocumentTemplatesDirective, decorators: [{
230
+ type: Inject,
231
+ args: [VlDocumentTemplatesDirective]
232
+ }] }, { type: i12.VlRampDirective, decorators: [{
233
+ type: Inject,
234
+ args: [VlRampDirective]
235
+ }] }, { type: i13.VlApprovalDirective, decorators: [{
236
+ type: Inject,
237
+ args: [VlApprovalDirective]
238
+ }] }, { type: i14.VlDocumentAttachmentsDirective, decorators: [{
239
+ type: Inject,
240
+ args: [VlDocumentAttachmentsDirective]
241
+ }] }, { type: i1.FormScopeService }, { type: i2.SectionScopeService }, { type: i0.Renderer2 }, { type: i3.FormBuilder }, { type: i4.RuntimeService }, { type: i0.ChangeDetectorRef }, { type: i5.ShoppingCartService }, { type: i6.ContextService }, { type: i7.CurrentStateService }, { type: i6.QuoteDraftService }]; } });
242
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbi1zY3JpcHQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvcnVudGltZS9leGVjdXRpb24vZGlyZWN0aXZlcy9zZWN0aW9uLXNjcmlwdC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RCxPQUFPLEVBQW9DLFNBQVMsRUFBRSxNQUFNLEVBQWdDLE1BQU0sZUFBZSxDQUFDO0FBRWxILE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFXLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTFFLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sS0FBSyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQ2pDLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sS0FBSyxhQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFPaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDOUQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDckYsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDakYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBRXRELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUN6QixNQUFNLGtCQUFrQixHQUFH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aUJBQWlCO1FBQ2pCLGdCQUFnQjtRQUNoQiw0QkFBNEI7UUFDNUIsZUFBZTtRQUNmLG1CQUFtQjtRQUNuQiw4QkFBOEI7S0FDL0I7NEZBRVUsc0JBQXNCO2tCQWRsQyxTQUFTO21CQUFDO29CQUNULDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsUUFBUSxFQUFFLFdBQVc7b0JBQ3JCLFNBQVMsRUFBRTt3QkFDVCxnQkFBZ0I7d0JBQ2hCLGlCQUFpQjt3QkFDakIsZ0JBQWdCO3dCQUNoQiw0QkFBNEI7d0JBQzVCLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQiw4QkFBOEI7cUJBQy9CO2lCQUNGOzBEQVF3QyxRQUFROzBCQUE1QyxNQUFNOzJCQUFDLFFBQVE7OzBCQUNmLE1BQU07MkJBQUMsZ0JBQWdCOzswQkFDdkIsTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUN4QixNQUFNOzJCQUFDLGdCQUFnQjs7MEJBQ3ZCLE1BQU07MkJBQUMsNEJBQTRCOzswQkFDbkMsTUFBTTsyQkFBQyxlQUFlOzswQkFDdEIsTUFBTTsyQkFBQyxtQkFBbUI7OzBCQUMxQixNQUFNOzJCQUFDLDhCQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEN1cnJlbmN5UGlwZSwgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgSW5qZWN0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEVudGl0eVV0aWwsIFBhZ2VkRW50aXR5LCBTZWN0aW9uLCBVVUlEIH0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5pbXBvcnQgeyBDb250ZXh0U2VydmljZSwgUXVvdGVEcmFmdFNlcnZpY2UgfSBmcm9tICdAdmVsb2NlYXBwcy9zZGsvY29yZSc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCAqIGFzIHJ4anMgZnJvbSAncnhqcyc7XG5pbXBvcnQgKiBhcyByeGpzT3BlcmF0b3JzIGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFNob3BwaW5nQ2FydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3VycmVudFN0YXRlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2N1cnJlbnQtc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBGb3JtU2NvcGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZm9ybS1zY29wZS5zZXJ2aWNlJztcbmltcG9ydCB7IFJ1bnRpbWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcnVudGltZS5zZXJ2aWNlJztcbmltcG9ydCB7IFNlY3Rpb25TY29wZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zZWN0aW9uLXNjb3BlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2NyaXB0UmVnaXN0cnkgfSBmcm9tICcuLi8uLi90eXBlcy9zY3JpcHQtcmVnaXN0cnkudHlwZXMnO1xuaW1wb3J0IHsgU2ZRdWVyeURpcmVjdGl2ZSB9IGZyb20gJy4vc2YtcXVlcnkuZGlyZWN0aXZlJztcbmltcG9ydCB7IExpbmVJdGVtRGlyZWN0aXZlIH0gZnJvbSAnLi92ZWxvLXBvcnQuZGlyZWN0aXZlJztcbmltcG9ydCB7IFZsQXBwcm92YWxEaXJlY3RpdmUgfSBmcm9tICcuL3ZsLWFwcHJvdmFsLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBWbERvY3VtZW50QXR0YWNobWVudHNEaXJlY3RpdmUgfSBmcm9tICcuL3ZsLWRvY3VtZW50LWF0dGFjaG1lbnRzLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBWbERvY3VtZW50VGVtcGxhdGVzRGlyZWN0aXZlIH0gZnJvbSAnLi92bC1kb2N1bWVudC10ZW1wbGF0ZXMuZGlyZWN0aXZlJztcbmltcG9ydCB7IFZsUXVvdGVEaXJlY3RpdmUgfSBmcm9tICcuL3ZsLXF1b3RlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBWbFJhbXBEaXJlY3RpdmUgfSBmcm9tICcuL3ZsLXJhbXAuZGlyZWN0aXZlJztcblxuY29uc3QgU0hBMSA9IFVVSUQuU0hBMSgpO1xuY29uc3QgU0NSSVBUX0dMT0JBTF9OQU1FID0gYCR2ZWxvYDtcblxuQERpcmVjdGl2ZSh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnc2VjdGlvbi1zY3JpcHQnLFxuICBleHBvcnRBczogJ3NjcmlwdEFwaScsXG4gIHByb3ZpZGVyczogW1xuICAgIFNmUXVlcnlEaXJlY3RpdmUsXG4gICAgTGluZUl0ZW1EaXJlY3RpdmUsXG4gICAgVmxRdW90ZURpcmVjdGl2ZSxcbiAgICBWbERvY3VtZW50VGVtcGxhdGVzRGlyZWN0aXZlLFxuICAgIFZsUmFtcERpcmVjdGl2ZSxcbiAgICBWbEFwcHJvdmFsRGlyZWN0aXZlLFxuICAgIFZsRG9jdW1lbnRBdHRhY2htZW50c0RpcmVjdGl2ZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2VjdGlvblNjcmlwdERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBzY3JpcHRFbGVtZW50OiBhbnk7XG4gIHByaXZhdGUgc2NyaXB0SWQgPSAnJztcbiAgcHJpdmF0ZSByZWdpc3RyeSE6IFNjcmlwdFJlZ2lzdHJ5O1xuICBwcml2YXRlIHNlc3Npb25TY29wZTogeyBbaW5kZXg6IHN0cmluZ106IGFueSB9ID0ge307XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBfZG9jdW1lbnQ6IERvY3VtZW50LFxuICAgIEBJbmplY3QoU2ZRdWVyeURpcmVjdGl2ZSkgcHJpdmF0ZSBzZlF1ZXJ5RGlyZWN0aXZlOiBTZlF1ZXJ5RGlyZWN0aXZlLFxuICAgIEBJbmplY3QoTGluZUl0ZW1EaXJlY3RpdmUpIHByaXZhdGUgbGluZUl0ZW1EaXJlY3RpdmU6IExpbmVJdGVtRGlyZWN0aXZlLFxuICAgIEBJbmplY3QoVmxRdW90ZURpcmVjdGl2ZSkgcHJpdmF0ZSBxdW90ZURpcmVjdGl2ZTogVmxRdW90ZURpcmVjdGl2ZSxcbiAgICBASW5qZWN0KFZsRG9jdW1lbnRUZW1wbGF0ZXNEaXJlY3RpdmUpIHByaXZhdGUgZG9jdW1lbnRUZW1wbGF0ZXNEaXJlY3RpdmU6IFZsRG9jdW1lbnRUZW1wbGF0ZXNEaXJlY3RpdmUsXG4gICAgQEluamVjdChWbFJhbXBEaXJlY3RpdmUpIHByaXZhdGUgcmFtcERpcmVjdGl2ZTogVmxSYW1wRGlyZWN0aXZlLFxuICAgIEBJbmplY3QoVmxBcHByb3ZhbERpcmVjdGl2ZSkgcHJpdmF0ZSBhcHByb3ZhbERpcmVjdGl2ZTogVmxBcHByb3ZhbERpcmVjdGl2ZSxcbiAgICBASW5qZWN0KFZsRG9jdW1lbnRBdHRhY2htZW50c0RpcmVjdGl2ZSkgcHJpdmF0ZSBkb2N1bWVudEF0dGFjaG1lbnRzRGlyZWN0aXZlOiBWbERvY3VtZW50QXR0YWNobWVudHNEaXJlY3RpdmUsXG4gICAgcHJpdmF0ZSBmb3JtU2NvcGU6IEZvcm1TY29wZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzZWN0aW9uU2NvcGU6IFNlY3Rpb25TY29wZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgcnVudGltZVNlcnZpY2U6IFJ1bnRpbWVTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGNhcnRTZXJ2aWNlOiBTaG9wcGluZ0NhcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY3VycmVudFN0YXRlU2VydmljZTogQ3VycmVudFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIHF1b3RlU2VydmljZTogUXVvdGVEcmFmdFNlcnZpY2UsXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnNjcmlwdEV4aXN0cygpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zY3JpcHRJZCA9IHRoaXMuZ2VuZXJhdGVTY3JpcHRJZCgpO1xuICAgIHRoaXMucmVnaXN0cnkgPSB0aGlzLmdldFNjcmlwdFJlZ2lzdHJ5KCk7XG4gICAgdGhpcy5zZXNzaW9uU2NvcGUgPSB0aGlzLmdldFNlc3Npb25TY29wZSgpO1xuXG4gICAgaWYgKCF0aGlzLnJlZ2lzdHJ5LmV4aXN0cyh0aGlzLnNjcmlwdElkKSkge1xuICAgICAgdGhpcy5hcHBlbmRTY3JpcHRFbGVtZW50VG9Eb20oKTtcbiAgICB9XG5cbiAgICB0aGlzLmluaXRTY3JpcHQoKTtcblxuICAgIHRoaXMucmVnaXN0cnkuZG9SZWdpc3Rlcih0aGlzLnNjcmlwdElkLCB0aGlzLnNlY3Rpb25TY29wZS5zZWN0aW9uLmlkKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgY29uc3Qgc2hhcmVkU2NyaXB0R2xvYmFsID0gdGhpcy5yZWdpc3RyeT8uZ2V0R2xvYmFsRm9yU2NyaXB0KHRoaXMuc2VjdGlvblNjb3BlLnNlY3Rpb24uaWQpO1xuXG4gICAgaWYgKHNoYXJlZFNjcmlwdEdsb2JhbCkge1xuICAgICAgdGhpcy5tZXRob2RBcHBseSgnYWZ0ZXJWaWV3SW5pdCcsIHNoYXJlZFNjcmlwdEdsb2JhbCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zY3JpcHRJZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucmVnaXN0cnkudW5SZWdpc3Rlcih0aGlzLnNjcmlwdElkLCB0aGlzLnNlY3Rpb25TY29wZS5zZWN0aW9uLmlkKTtcblxuICAgIGlmICghdGhpcy5yZWdpc3RyeS5leGlzdHModGhpcy5zY3JpcHRJZCkpIHtcbiAgICAgIHRoaXMucmVtb3ZlU2NyaXB0KCk7XG4gICAgICB0aGlzLnJlZ2lzdHJ5LnJlbW92ZUdsb2JhbEZvclNjcmlwdCh0aGlzLnNjcmlwdElkKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNjb3BlKCk6IGFueSB7XG4gICAgaWYgKCF0aGlzLnNjcmlwdElkIHx8ICF0aGlzLnNlY3Rpb25TY29wZS5zZWN0aW9uKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHRoaXMucmVnaXN0cnkuZ2V0R2xvYmFsRm9yU2NyaXB0KHRoaXMuc2VjdGlvblNjb3BlLnNlY3Rpb24uaWQpIHx8IHt9LCB0aGlzLnNlc3Npb25TY29wZSk7XG4gIH1cblxuICBwcml2YXRlIHNjcmlwdEV4aXN0cygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHRoaXMuc2VjdGlvblNjb3BlPy5zZWN0aW9uPy5zY3JpcHQ/Lmxlbmd0aCA/PyAwKSA+IDA7XG4gIH1cblxuICBwcml2YXRlIGVuY29kZVNjcmlwdEJvZHkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zZWN0aW9uU2NvcGUuc2VjdGlvbi5zY3JpcHQgPyBhdG9iKHRoaXMuc2VjdGlvblNjb3BlLnNlY3Rpb24uc2NyaXB0KSA6ICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZVNjcmlwdElkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdfJyArIFNIQTEuaGV4KHRoaXMuZW5jb2RlU2NyaXB0Qm9keSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2NyaXB0UmVnaXN0cnkoKTogU2NyaXB0UmVnaXN0cnkge1xuICAgIHJldHVybiB0aGlzLmZvcm1TY29wZS5zY3JpcHRSZWdpc3RyeTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2Vzc2lvblNjb3BlKCk6IHsgW2luZGV4OiBzdHJpbmddOiBhbnkgfSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybVNjb3BlLnNjcmlwdFNlc3Npb25TY29wZTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFNjcmlwdCgpOiB2b2lkIHtcbiAgICBsZXQgc2hhcmVkU2NyaXB0R2xvYmFsID0gdGhpcy5yZWdpc3RyeS5nZXRHbG9iYWxGb3JTY3JpcHQodGhpcy5zZWN0aW9uU2NvcGUuc2VjdGlvbi5pZCk7XG5cbiAgICBpZiAoIUVudGl0eVV0aWwuaXNQcmVzZW50KHNoYXJlZFNjcmlwdEdsb2JhbCkpIHtcbiAgICAgIHNoYXJlZFNjcmlwdEdsb2JhbCA9IHt9O1xuICAgICAgdGhpcy5yZWdpc3RyeS5zZXRHbG9iYWxGb3JTY3JpcHQodGhpcy5zZWN0aW9uU2NvcGUuc2VjdGlvbi5pZCwgc2hhcmVkU2NyaXB0R2xvYmFsKTtcbiAgICB9XG5cbiAgICB0aGlzLm1ldGhvZEFwcGx5KCdpbml0Jywgc2hhcmVkU2NyaXB0R2xvYmFsKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlU2NyaXB0KCk6IHZvaWQge1xuICAgIGNvbnN0IHNoYXJlZFNjcmlwdEdsb2JhbCA9IHRoaXMucmVnaXN0cnkuZ2V0R2xvYmFsRm9yU2NyaXB0KHRoaXMuc2VjdGlvblNjb3BlLnNlY3Rpb24uaWQpO1xuXG4gICAgdGhpcy5tZXRob2RBcHBseSgnZGVzdHJveScsIHNoYXJlZFNjcmlwdEdsb2JhbCk7XG5cbiAgICB0aGlzLnJlbW92ZVNjcmlwdEVsZW1lbnRGcm9tRG9tKCk7XG4gIH1cblxuICBwcml2YXRlIGFwcGVuZFNjcmlwdEVsZW1lbnRUb0RvbSgpOiB2b2lkIHtcbiAgICBjb25zdCBzY3JpcHQgPSB0aGlzLnNjcmlwdEZyb21UZW1wbGF0ZSh0aGlzLmVuY29kZVNjcmlwdEJvZHkoKSwgdGhpcy5zY3JpcHRJZCwgdGhpcy5zZWN0aW9uU2NvcGUuc2VjdGlvbik7XG5cbiAgICB0aGlzLnNjcmlwdEVsZW1lbnQgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgIHRoaXMuc2NyaXB0RWxlbWVudC50eXBlID0gYHRleHQvamF2YXNjcmlwdGA7XG4gICAgdGhpcy5zY3JpcHRFbGVtZW50LnRleHQgPSBzY3JpcHQ7XG5cbiAgICB0aGlzLnNjcmlwdEVsZW1lbnQuc2V0QXR0cmlidXRlKCdpZCcsIHRoaXMuc2NyaXB0SWQpO1xuXG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLl9kb2N1bWVudC5ib2R5LCB0aGlzLnNjcmlwdEVsZW1lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVTY3JpcHRFbGVtZW50RnJvbURvbSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuc2NyaXB0RWxlbWVudCkge1xuICAgICAgdGhpcy5zY3JpcHRFbGVtZW50ID0gdGhpcy5fZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5zY3JpcHRJZCk7XG4gICAgfVxuXG4gICAgdGhpcy5zY3JpcHRFbGVtZW50LnJlbW92ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzY3JpcHRGcm9tVGVtcGxhdGUoc2NyaXB0Qm9keTogc3RyaW5nLCBzY3JpcHRJZDogc3RyaW5nLCBzZWN0aW9uOiBTZWN0aW9uKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYHZhciAke3NjcmlwdElkfSA9IChmdW5jdGlvbiAoJHtTQ1JJUFRfR0xPQkFMX05BTUV9LCBmb3JtLCB7IHNlY3Rpb24sIHRlbXBsYXRlcyB9LCBzZXNzaW9uU2NvcGUsIGZvcm1CdWlsZGVyLCBydW50aW1lQ29udGV4dCwgY2RyLCBhcGlzKSB7XG4gICAgICAgICAgICAke1NDUklQVF9HTE9CQUxfTkFNRX1bXCJmb3JtXCJdID0gZm9ybTtcbiAgICAgICAgICAgICR7U0NSSVBUX0dMT0JBTF9OQU1FfVtcInNlY3Rpb25cIl0gPSBzZWN0aW9uO1xuICAgICAgICAgICAgJHtTQ1JJUFRfR0xPQkFMX05BTUV9W1widGVtcGxhdGVzXCJdID0gdGVtcGxhdGVzO1xuICAgICAgICAgICAgJHtTQ1JJUFRfR0xPQkFMX05BTUV9W1wic2Vzc2lvblNjb3BlXCJdID0gc2Vzc2lvblNjb3BlO1xuICAgICAgICAgICAgJHtTQ1JJUFRfR0xPQkFMX05BTUV9W1wiZm9ybUJ1aWxkZXJcIl0gPSBmb3JtQnVpbGRlcjtcbiAgICAgICAgICAgICR7U0NSSVBUX0dMT0JBTF9OQU1FfVtcInJ1bnRpbWVDb250ZXh0XCJdID0gcnVudGltZUNvbnRleHQ7XG4gICAgICAgICAgICAke1NDUklQVF9HTE9CQUxfTkFNRX1bXCJjZHJcIl0gPSBjZHI7XG4gICAgICAgICAgICAke1NDUklQVF9HTE9CQUxfTkFNRX1bXCJhcGlzXCJdID0gYXBpcztcblxuICAgICAgICAgICAgJHtzY3JpcHRCb2R5fVxuICAgICAgICAgICAgICAgIHJldHVybiAke1NDUklQVF9HTE9CQUxfTkFNRX07XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8jIHNvdXJjZVVSTD0ke18ua2ViYWJDYXNlKHNlY3Rpb24ubGFiZWwpfS5qc2A7XG4gIH1cblxuICBwcml2YXRlIG1ldGhvZEFwcGx5KG1ldGhvZE5hbWU6IHN0cmluZywgc2hhcmVkU2NyaXB0R2xvYmFsOiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCBhcmdzID0gW1xuICAgICAgc2hhcmVkU2NyaXB0R2xvYmFsLFxuICAgICAgdGhpcy5mb3JtU2NvcGUuZm9ybSxcbiAgICAgIHRoaXMuc2VjdGlvblNjb3BlLFxuICAgICAgdGhpcy5zZXNzaW9uU2NvcGUsXG4gICAgICB0aGlzLmZvcm1CdWlsZGVyLFxuICAgICAgdGhpcy5ydW50aW1lU2VydmljZS5nZXRSdW50aW1lQ29udGV4dCgpLFxuICAgICAgdGhpcy5jZHIsXG4gICAgICB0aGlzLmdldEV4cG9zZWRBcGlzKCksXG4gICAgXTtcblxuICAgIGNvbnN0IGZuSW5pdCA9ICh3aW5kb3cgYXMgYW55KVtgJHt0aGlzLnNjcmlwdElkfWBdKC4uLmFyZ3MpO1xuXG4gICAgZm5Jbml0ICYmIGZuSW5pdFttZXRob2ROYW1lXSAmJiBmbkluaXRbbWV0aG9kTmFtZV0uYXBwbHkoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RXhwb3NlZEFwaXMoKTogYW55IHtcbiAgICByZXR1cm4ge1xuICAgICAgJ3NmLXF1ZXJ5JzogdGhpcy5zZlF1ZXJ5RGlyZWN0aXZlLFxuICAgICAgJ2xpbmUtaXRlbSc6IHRoaXMubGluZUl0ZW1EaXJlY3RpdmUsXG4gICAgICAncXVvdGUtZGlyZWN0aXZlJzogdGhpcy5xdW90ZURpcmVjdGl2ZSxcbiAgICAgICd0ZW1wbGF0ZXMtZGlyZWN0aXZlJzogdGhpcy5kb2N1bWVudFRlbXBsYXRlc0RpcmVjdGl2ZSxcbiAgICAgICdhdHRhY2htZW50cy1kaXJlY3RpdmUnOiB0aGlzLmRvY3VtZW50QXR0YWNobWVudHNEaXJlY3RpdmUsXG4gICAgICAncmFtcC1kaXJlY3RpdmUnOiB0aGlzLnJhbXBEaXJlY3RpdmUsXG4gICAgICAnYXBwcm92YWwtZGlyZWN0aXZlJzogdGhpcy5hcHByb3ZhbERpcmVjdGl2ZSxcbiAgICAgIGVudGl0eVV0aWw6IEVudGl0eVV0aWwsXG4gICAgICBtb21lbnQsXG4gICAgICBsb2Rhc2g6IF8sXG4gICAgICByeGpzOiB7IC4uLnJ4anNPcGVyYXRvcnMsIC4uLnJ4anMgfSxcbiAgICAgIFBhZ2VkRW50aXR5LFxuICAgICAgcGlwZXM6IHtcbiAgICAgICAgY3VycmVuY3k6IEN1cnJlbmN5UGlwZSxcbiAgICAgIH0sXG4gICAgICBzb2x1dGlvblVwZGF0ZVN0YXJ0ZWQ6IHRoaXMucnVudGltZVNlcnZpY2Uub25Tb2x1dGlvblVwZGF0ZVN0YXJ0ZWRFdmVudCxcbiAgICAgIHNvbHV0aW9uVXBkYXRlZDogdGhpcy5ydW50aW1lU2VydmljZS5vblNvbHV0aW9uUHJvY2Vzc2VkLFxuICAgICAgY2FydFNlcnZpY2U6IHRoaXMuY2FydFNlcnZpY2UsXG4gICAgICBjb25maWd1cmF0aW9uQ29udGV4dFNlcnZpY2U6IHRoaXMuY29udGV4dFNlcnZpY2UsXG4gICAgICBxdW90ZURyYWZ0OiB0aGlzLnF1b3RlU2VydmljZS5xdW90ZURyYWZ0LFxuICAgICAgY3VycmVudFN0YXRlU2VydmljZTogdGhpcy5jdXJyZW50U3RhdGVTZXJ2aWNlLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,34 @@
1
+ import { Directive } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@veloceapps/api";
4
+ export class SfQueryDirective {
5
+ constructor(apiService) {
6
+ this.apiService = apiService;
7
+ }
8
+ query(searchRequest, objectName) {
9
+ return this.apiService.query(searchRequest, objectName).toPromise();
10
+ }
11
+ describe(objectName, fieldName) {
12
+ return this.apiService.describe(objectName, fieldName).toPromise();
13
+ }
14
+ describe2(objectName, fieldsNames) {
15
+ return this.apiService.describe2(objectName, fieldsNames).toPromise();
16
+ }
17
+ apexGetRequest(path, params) {
18
+ return this.apiService.apexGetRequest(path, params).toPromise();
19
+ }
20
+ apexPostRequest(path, body) {
21
+ return this.apiService.apexPostRequest(path, body).toPromise();
22
+ }
23
+ }
24
+ SfQueryDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SfQueryDirective, deps: [{ token: i1.SalesforceApiService }], target: i0.ɵɵFactoryTarget.Directive });
25
+ SfQueryDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.15", type: SfQueryDirective, selector: "sf-query", exportAs: ["sfApi"], ngImport: i0 });
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SfQueryDirective, decorators: [{
27
+ type: Directive,
28
+ args: [{
29
+ // eslint-disable-next-line @angular-eslint/directive-selector
30
+ selector: 'sf-query',
31
+ exportAs: 'sfApi',
32
+ }]
33
+ }], ctorParameters: function () { return [{ type: i1.SalesforceApiService }]; } });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2YtcXVlcnkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvcnVudGltZS9leGVjdXRpb24vZGlyZWN0aXZlcy9zZi1xdWVyeS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBUzFDLE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0IsWUFBb0IsVUFBZ0M7UUFBaEMsZUFBVSxHQUFWLFVBQVUsQ0FBc0I7SUFBRyxDQUFDO0lBRWpELEtBQUssQ0FBQyxhQUE0QixFQUFFLFVBQWtCO1FBQzNELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3RFLENBQUM7SUFFTSxRQUFRLENBQUMsVUFBa0IsRUFBRSxTQUFrQjtRQUNwRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNyRSxDQUFDO0lBRU0sU0FBUyxDQUFDLFVBQWtCLEVBQUUsV0FBcUI7UUFDeEQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsV0FBVyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDeEUsQ0FBQztJQUVNLGNBQWMsQ0FBYyxJQUFZLEVBQUUsTUFBa0I7UUFDakUsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBSSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUMsU0FBUyxFQUFnQixDQUFDO0lBQ25GLENBQUM7SUFFTSxlQUFlLENBQTJCLElBQVksRUFBRSxJQUFPO1FBQ3BFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQU8sSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBZ0IsQ0FBQztJQUNyRixDQUFDOzs4R0FyQlUsZ0JBQWdCO2tHQUFoQixnQkFBZ0I7NEZBQWhCLGdCQUFnQjtrQkFMNUIsU0FBUzttQkFBQztvQkFDVCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSxVQUFVO29CQUNwQixRQUFRLEVBQUUsT0FBTztpQkFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTYWxlc2ZvcmNlQXBpU2VydmljZSB9IGZyb20gJ0B2ZWxvY2VhcHBzL2FwaSc7XG5pbXBvcnQgeyBTZWFyY2hSZXF1ZXN0IH0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICBzZWxlY3RvcjogJ3NmLXF1ZXJ5JyxcbiAgZXhwb3J0QXM6ICdzZkFwaScsXG59KVxuZXhwb3J0IGNsYXNzIFNmUXVlcnlEaXJlY3RpdmUge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFwaVNlcnZpY2U6IFNhbGVzZm9yY2VBcGlTZXJ2aWNlKSB7fVxuXG4gIHB1YmxpYyBxdWVyeShzZWFyY2hSZXF1ZXN0OiBTZWFyY2hSZXF1ZXN0LCBvYmplY3ROYW1lOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucXVlcnkoc2VhcmNoUmVxdWVzdCwgb2JqZWN0TmFtZSkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBwdWJsaWMgZGVzY3JpYmUob2JqZWN0TmFtZTogc3RyaW5nLCBmaWVsZE5hbWU/OiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZGVzY3JpYmUob2JqZWN0TmFtZSwgZmllbGROYW1lKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBkZXNjcmliZTIob2JqZWN0TmFtZTogc3RyaW5nLCBmaWVsZHNOYW1lczogc3RyaW5nW10pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZGVzY3JpYmUyKG9iamVjdE5hbWUsIGZpZWxkc05hbWVzKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBhcGV4R2V0UmVxdWVzdDxUID0gdW5rbm93bj4ocGF0aDogc3RyaW5nLCBwYXJhbXM6IEh0dHBQYXJhbXMpOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmFwZXhHZXRSZXF1ZXN0PFQ+KHBhdGgsIHBhcmFtcykudG9Qcm9taXNlKCkgYXMgUHJvbWlzZTxUPjtcbiAgfVxuXG4gIHB1YmxpYyBhcGV4UG9zdFJlcXVlc3Q8VCA9IHVua25vd24sIFMgPSB1bmtub3duPihwYXRoOiBzdHJpbmcsIGJvZHk6IFMpOiBQcm9taXNlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmFwZXhQb3N0UmVxdWVzdDxULCBTPihwYXRoLCBib2R5KS50b1Byb21pc2UoKSBhcyBQcm9taXNlPFQ+O1xuICB9XG59XG4iXX0=
@@ -0,0 +1,86 @@
1
+ import { Directive } from '@angular/core';
2
+ import { EntityUtil } from '@veloceapps/core';
3
+ import { isDate } from 'lodash';
4
+ import { SectionsBinderHelper } from '../../utils/sections-binder.helper';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../../services/form-scope.service";
7
+ import * as i2 from "../../services/section-scope.service";
8
+ //TODO ALE WE ARE EXTENDING COMPONENT HERE IN PORTS WE ARE EXTENDING DEDICATED CLASS!! TYPES HANDLER IS NO IMPLEMENTED YET
9
+ export class VeloAttributeDirective {
10
+ constructor(formScope, sectionScope) {
11
+ this.formScope = formScope;
12
+ this.sectionScope = sectionScope;
13
+ this.valueQuantities = {};
14
+ this.form = this.formScope.form;
15
+ this.section = this.sectionScope.section;
16
+ }
17
+ ngOnInit() {
18
+ this.initQuantity();
19
+ }
20
+ handleChange(valueOption) {
21
+ const updateData = {
22
+ id: this.section.id,
23
+ action: 'update',
24
+ valueOption,
25
+ };
26
+ this.formScope.publishFormUpdate(updateData);
27
+ }
28
+ handleChangDate(valueOption) {
29
+ const oldValue = this.form.controls[this.section.id].value || '';
30
+ const newValue = isDate(valueOption) ? valueOption.toLocaleDateString('en-us') : '';
31
+ if (oldValue !== newValue) {
32
+ this.handleChange(newValue);
33
+ }
34
+ }
35
+ handleRemove() {
36
+ const updateData = {
37
+ id: this.section.id,
38
+ action: 'remove',
39
+ };
40
+ this.formScope.publishFormUpdate(updateData);
41
+ }
42
+ // TODO ALE THIS IS SPECIFIC STEPPER FUNCTIONS
43
+ nextVal() {
44
+ const currentIndex = this.getCurrentValueIndex();
45
+ const nextValIndex = currentIndex + 1;
46
+ if (currentIndex != -1 &&
47
+ this.section.sectionValue &&
48
+ this.section.sectionValue.valueOptions.length >= nextValIndex) {
49
+ this.handleChange(this.section.sectionValue.valueOptions[nextValIndex]);
50
+ }
51
+ }
52
+ prevVal() {
53
+ const currentIndex = this.getCurrentValueIndex();
54
+ const prevValIndex = currentIndex - 1;
55
+ if (currentIndex != -1 &&
56
+ this.section.sectionValue &&
57
+ this.section.sectionValue.valueOptions.length >= prevValIndex) {
58
+ this.handleChange(this.section.sectionValue.valueOptions[prevValIndex]);
59
+ }
60
+ }
61
+ initQuantity() {
62
+ this.valueQuantities = this.section.model
63
+ ? SectionsBinderHelper.getQuantityGroupByValue(this.section.model, this.section.boundData.name)
64
+ : {};
65
+ }
66
+ getCurrentValueIndex() {
67
+ const index = -1;
68
+ const valueOptions = this.section.sectionValue && this.section.sectionValue.valueOptions;
69
+ const currentValue = this.form.controls[this.section.id].value;
70
+ if (valueOptions && EntityUtil.isPresent(currentValue)) {
71
+ return valueOptions.findIndex(valueOption => currentValue === valueOption);
72
+ }
73
+ return index;
74
+ }
75
+ }
76
+ VeloAttributeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: VeloAttributeDirective, deps: [{ token: i1.FormScopeService }, { token: i2.SectionScopeService }], target: i0.ɵɵFactoryTarget.Directive });
77
+ VeloAttributeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.15", type: VeloAttributeDirective, selector: "velo-attribute-directive", exportAs: ["attributeApi"], ngImport: i0 });
78
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: VeloAttributeDirective, decorators: [{
79
+ type: Directive,
80
+ args: [{
81
+ // eslint-disable-next-line @angular-eslint/directive-selector
82
+ selector: 'velo-attribute-directive',
83
+ exportAs: 'attributeApi',
84
+ }]
85
+ }], ctorParameters: function () { return [{ type: i1.FormScopeService }, { type: i2.SectionScopeService }]; } });
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVsby1hdHRyaWJ1dGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvcnVudGltZS9leGVjdXRpb24vZGlyZWN0aXZlcy92ZWxvLWF0dHJpYnV0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUVsRCxPQUFPLEVBQUUsVUFBVSxFQUFXLE1BQU0sa0JBQWtCLENBQUM7QUFDdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUloQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7OztBQUUxRSwwSEFBMEg7QUFNMUgsTUFBTSxPQUFPLHNCQUFzQjtJQU1qQyxZQUFvQixTQUEyQixFQUFVLFlBQWlDO1FBQXRFLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBTG5GLG9CQUFlLEdBQWdDLEVBQUUsQ0FBQztRQU12RCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUM7SUFDM0MsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVNLFlBQVksQ0FBQyxXQUFpQjtRQUNuQyxNQUFNLFVBQVUsR0FBZTtZQUM3QixFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ25CLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLFdBQVc7U0FDWixDQUFDO1FBRUYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU0sZUFBZSxDQUFDLFdBQWdCO1FBQ3JDLE1B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bUJBQUM7b0JBQ1QsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsMEJBQTBCO29CQUNwQyxRQUFRLEVBQUUsY0FBYztpQkFDekIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRW50aXR5VXRpbCwgU2VjdGlvbiB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgaXNEYXRlIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEZvcm1TY29wZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mb3JtLXNjb3BlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VjdGlvblNjb3BlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3NlY3Rpb24tc2NvcGUuc2VydmljZSc7XG5pbXBvcnQgeyBVcGRhdGVEYXRhIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgU2VjdGlvbnNCaW5kZXJIZWxwZXIgfSBmcm9tICcuLi8uLi91dGlscy9zZWN0aW9ucy1iaW5kZXIuaGVscGVyJztcblxuLy9UT0RPIEFMRSBXRSBBUkUgRVhURU5ESU5HIENPTVBPTkVOVCBIRVJFIElOIFBPUlRTIFdFIEFSRSBFWFRFTkRJTkcgREVESUNBVEVEIENMQVNTISEgVFlQRVMgSEFORExFUiBJUyBOTyBJTVBMRU1FTlRFRCBZRVRcbkBEaXJlY3RpdmUoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICBzZWxlY3RvcjogJ3ZlbG8tYXR0cmlidXRlLWRpcmVjdGl2ZScsXG4gIGV4cG9ydEFzOiAnYXR0cmlidXRlQXBpJyxcbn0pXG5leHBvcnQgY2xhc3MgVmVsb0F0dHJpYnV0ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHB1YmxpYyB2YWx1ZVF1YW50aXRpZXM6IHsgW2luZGV4OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuXG4gIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXA7XG4gIHB1YmxpYyBzZWN0aW9uOiBTZWN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZm9ybVNjb3BlOiBGb3JtU2NvcGVTZXJ2aWNlLCBwcml2YXRlIHNlY3Rpb25TY29wZTogU2VjdGlvblNjb3BlU2VydmljZSkge1xuICAgIHRoaXMuZm9ybSA9IHRoaXMuZm9ybVNjb3BlLmZvcm07XG4gICAgdGhpcy5zZWN0aW9uID0gdGhpcy5zZWN0aW9uU2NvcGUuc2VjdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRRdWFudGl0eSgpO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZUNoYW5nZSh2YWx1ZU9wdGlvbj86IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHVwZGF0ZURhdGE6IFVwZGF0ZURhdGEgPSB7XG4gICAgICBpZDogdGhpcy5zZWN0aW9uLmlkLFxuICAgICAgYWN0aW9uOiAndXBkYXRlJyxcbiAgICAgIHZhbHVlT3B0aW9uLFxuICAgIH07XG5cbiAgICB0aGlzLmZvcm1TY29wZS5wdWJsaXNoRm9ybVVwZGF0ZSh1cGRhdGVEYXRhKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVDaGFuZ0RhdGUodmFsdWVPcHRpb246IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy5mb3JtLmNvbnRyb2xzW3RoaXMuc2VjdGlvbi5pZF0udmFsdWUgfHwgJyc7XG5cbiAgICBjb25zdCBuZXdWYWx1ZSA9IGlzRGF0ZSh2YWx1ZU9wdGlvbikgPyB2YWx1ZU9wdGlvbi50b0xvY2FsZURhdGVTdHJpbmcoJ2VuLXVzJykgOiAnJztcblxuICAgIGlmIChvbGRWYWx1ZSAhPT0gbmV3VmFsdWUpIHtcbiAgICAgIHRoaXMuaGFuZGxlQ2hhbmdlKG5ld1ZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlUmVtb3ZlKCk6IHZvaWQge1xuICAgIGNvbnN0IHVwZGF0ZURhdGE6IFVwZGF0ZURhdGEgPSB7XG4gICAgICBpZDogdGhpcy5zZWN0aW9uLmlkLFxuICAgICAgYWN0aW9uOiAncmVtb3ZlJyxcbiAgICB9O1xuXG4gICAgdGhpcy5mb3JtU2NvcGUucHVibGlzaEZvcm1VcGRhdGUodXBkYXRlRGF0YSk7XG4gIH1cblxuICAvLyBUT0RPIEFMRSBUSElTIElTIFNQRUNJRklDIFNURVBQRVIgRlVOQ1RJT05TXG4gIHB1YmxpYyBuZXh0VmFsKCk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRoaXMuZ2V0Q3VycmVudFZhbHVlSW5kZXgoKTtcbiAgICBjb25zdCBuZXh0VmFsSW5kZXggPSBjdXJyZW50SW5kZXggKyAxO1xuXG4gICAgaWYgKFxuICAgICAgY3VycmVudEluZGV4ICE9IC0xICYmXG4gICAgICB0aGlzLnNlY3Rpb24uc2VjdGlvblZhbHVlICYmXG4gICAgICB0aGlzLnNlY3Rpb24uc2VjdGlvblZhbHVlLnZhbHVlT3B0aW9ucy5sZW5ndGggPj0gbmV4dFZhbEluZGV4XG4gICAgKSB7XG4gICAgICB0aGlzLmhhbmRsZUNoYW5nZSh0aGlzLnNlY3Rpb24uc2VjdGlvblZhbHVlLnZhbHVlT3B0aW9uc1tuZXh0VmFsSW5kZXhdKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcHJldlZhbCgpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50SW5kZXggPSB0aGlzLmdldEN1cnJlbnRWYWx1ZUluZGV4KCk7XG4gICAgY29uc3QgcHJldlZhbEluZGV4ID0gY3VycmVudEluZGV4IC0gMTtcblxuICAgIGlmIChcbiAgICAgIGN1cnJlbnRJbmRleCAhPSAtMSAmJlxuICAgICAgdGhpcy5zZWN0aW9uLnNlY3Rpb25WYWx1ZSAmJlxuICAgICAgdGhpcy5zZWN0aW9uLnNlY3Rpb25WYWx1ZS52YWx1ZU9wdGlvbnMubGVuZ3RoID49IHByZXZWYWxJbmRleFxuICAgICkge1xuICAgICAgdGhpcy5oYW5kbGVDaGFuZ2UodGhpcy5zZWN0aW9uLnNlY3Rpb25WYWx1ZS52YWx1ZU9wdGlvbnNbcHJldlZhbEluZGV4XSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0UXVhbnRpdHkoKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZVF1YW50aXRpZXMgPSB0aGlzLnNlY3Rpb24ubW9kZWxcbiAgICAgID8gU2VjdGlvbnNCaW5kZXJIZWxwZXIuZ2V0UXVhbnRpdHlHcm91cEJ5VmFsdWUodGhpcy5zZWN0aW9uLm1vZGVsLCB0aGlzLnNlY3Rpb24uYm91bmREYXRhLm5hbWUpXG4gICAgICA6IHt9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDdXJyZW50VmFsdWVJbmRleCgpOiBudW1iZXIge1xuICAgIGNvbnN0IGluZGV4ID0gLTE7XG5cbiAgICBjb25zdCB2YWx1ZU9wdGlvbnMgPSB0aGlzLnNlY3Rpb24uc2VjdGlvblZhbHVlICYmIHRoaXMuc2VjdGlvbi5zZWN0aW9uVmFsdWUudmFsdWVPcHRpb25zO1xuICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMuZm9ybS5jb250cm9sc1t0aGlzLnNlY3Rpb24uaWRdLnZhbHVlO1xuXG4gICAgaWYgKHZhbHVlT3B0aW9ucyAmJiBFbnRpdHlVdGlsLmlzUHJlc2VudChjdXJyZW50VmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWVPcHRpb25zLmZpbmRJbmRleCh2YWx1ZU9wdGlvbiA9PiBjdXJyZW50VmFsdWUgPT09IHZhbHVlT3B0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cbn1cbiJdfQ==