@veloceapps/sdk 0.0.0-watch

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 (351) hide show
  1. package/README.md +7 -0
  2. package/cms/cms.actions.d.ts +12 -0
  3. package/cms/cms.default.d.ts +5 -0
  4. package/cms/cms.elements.d.ts +4 -0
  5. package/cms/components/element-children/element-children.component.d.ts +10 -0
  6. package/cms/components/element-children/element-children.module.d.ts +8 -0
  7. package/cms/components/element-renderer/element-renderer.component.d.ts +35 -0
  8. package/cms/components/element-renderer/element-renderer.module.d.ts +7 -0
  9. package/cms/components/element.component.d.ts +13 -0
  10. package/cms/components/index.d.ts +1 -0
  11. package/cms/components/plugin.component.d.ts +15 -0
  12. package/cms/components/preview/index.d.ts +2 -0
  13. package/cms/components/preview/preview.component.d.ts +34 -0
  14. package/cms/components/preview/preview.module.d.ts +11 -0
  15. package/cms/decorators/element.decorator.d.ts +2 -0
  16. package/cms/decorators/index.d.ts +1 -0
  17. package/cms/directives/custom-template.directive.d.ts +12 -0
  18. package/cms/engine/models/entity.d.ts +11 -0
  19. package/cms/engine/models/plugin.d.ts +5 -0
  20. package/cms/index.d.ts +11 -0
  21. package/cms/injection-tokens.d.ts +11 -0
  22. package/cms/launcher.module.d.ts +10 -0
  23. package/cms/modules/federated/default-options.d.ts +4 -0
  24. package/cms/modules/federated/export.d.ts +1 -0
  25. package/cms/modules/federated/federated.component.d.ts +26 -0
  26. package/cms/modules/federated/federated.module.d.ts +9 -0
  27. package/cms/modules/federated/federated.types.d.ts +30 -0
  28. package/cms/modules/federated/federated.utils.d.ts +1 -0
  29. package/cms/package.json +10 -0
  30. package/cms/plugins/configuration.plugin.d.ts +23 -0
  31. package/cms/plugins/io.plugin.d.ts +9 -0
  32. package/cms/plugins/script.plugin.d.ts +13 -0
  33. package/cms/services/dynamic-module.service.d.ts +15 -0
  34. package/cms/services/element-context.service.d.ts +8 -0
  35. package/cms/services/index.d.ts +3 -0
  36. package/cms/services/integration.state.d.ts +17 -0
  37. package/cms/services/io-provider.service.d.ts +15 -0
  38. package/cms/services/launcher.service.d.ts +18 -0
  39. package/cms/services/templates.service.d.ts +9 -0
  40. package/cms/types/common.types.d.ts +103 -0
  41. package/cms/types/configuration.types.d.ts +17 -0
  42. package/cms/types/elements.types.d.ts +2 -0
  43. package/cms/types/index.d.ts +5 -0
  44. package/cms/types/integration.types.d.ts +4 -0
  45. package/cms/types/path.types.d.ts +11 -0
  46. package/cms/utils/element.utils.d.ts +15 -0
  47. package/cms/utils/elements-resolver.d.ts +20 -0
  48. package/cms/utils/index.d.ts +3 -0
  49. package/cms/utils/path.utils.d.ts +5 -0
  50. package/cms/veloce-sdk-cms.d.ts +5 -0
  51. package/cms/vendor-map.d.ts +689 -0
  52. package/core/core.module.d.ts +8 -0
  53. package/core/index.d.ts +6 -0
  54. package/core/modules/configuration/configuration.module.d.ts +7 -0
  55. package/core/modules/configuration/helpers.d.ts +3 -0
  56. package/core/modules/configuration/index.d.ts +4 -0
  57. package/core/modules/configuration/services/configuration-runtime.service.d.ts +28 -0
  58. package/core/modules/configuration/services/configuration.service.d.ts +40 -0
  59. package/core/modules/configuration/services/runtime-context.service.d.ts +14 -0
  60. package/core/modules/configuration/types/configuration-runtime.types.d.ts +6 -0
  61. package/core/modules/flow-configuration/flow-configuration.module.d.ts +6 -0
  62. package/core/modules/flow-configuration/index.d.ts +4 -0
  63. package/core/modules/flow-configuration/services/flow-configuration.service.d.ts +37 -0
  64. package/core/modules/flow-configuration/services/flow-update.service.d.ts +12 -0
  65. package/core/modules/flow-configuration/types/update.types.d.ts +12 -0
  66. package/core/modules/index.d.ts +2 -0
  67. package/core/package.json +10 -0
  68. package/core/services/context.service.d.ts +17 -0
  69. package/core/services/index.d.ts +3 -0
  70. package/core/services/product-images.service.d.ts +12 -0
  71. package/core/services/quote-draft.service.d.ts +31 -0
  72. package/core/types/index.d.ts +3 -0
  73. package/core/types/quote-states.types.d.ts +6 -0
  74. package/core/types/runtime.types.d.ts +31 -0
  75. package/core/types/ui-definition.types.d.ts +26 -0
  76. package/core/utils/index.d.ts +2 -0
  77. package/core/utils/line-item.utils.d.ts +26 -0
  78. package/core/utils/line-item.worker.d.ts +12 -0
  79. package/core/veloce-sdk-core.d.ts +5 -0
  80. package/esm2015/cms/cms.actions.js +17 -0
  81. package/esm2015/cms/cms.default.js +6 -0
  82. package/esm2015/cms/cms.elements.js +29 -0
  83. package/esm2015/cms/components/element-children/element-children.component.js +23 -0
  84. package/esm2015/cms/components/element-children/element-children.module.js +18 -0
  85. package/esm2015/cms/components/element-renderer/element-renderer.component.js +143 -0
  86. package/esm2015/cms/components/element-renderer/element-renderer.module.js +16 -0
  87. package/esm2015/cms/components/element.component.js +31 -0
  88. package/esm2015/cms/components/index.js +2 -0
  89. package/esm2015/cms/components/plugin.component.js +16 -0
  90. package/esm2015/cms/components/preview/index.js +3 -0
  91. package/esm2015/cms/components/preview/preview.component.js +105 -0
  92. package/esm2015/cms/components/preview/preview.module.js +23 -0
  93. package/esm2015/cms/decorators/element.decorator.js +6 -0
  94. package/esm2015/cms/decorators/index.js +2 -0
  95. package/esm2015/cms/directives/custom-template.directive.js +25 -0
  96. package/esm2015/cms/engine/models/entity.js +18 -0
  97. package/esm2015/cms/engine/models/plugin.js +6 -0
  98. package/esm2015/cms/index.js +11 -0
  99. package/esm2015/cms/injection-tokens.js +8 -0
  100. package/esm2015/cms/launcher.module.js +23 -0
  101. package/esm2015/cms/modules/federated/default-options.js +5 -0
  102. package/esm2015/cms/modules/federated/export.js +2 -0
  103. package/esm2015/cms/modules/federated/federated.component.js +82 -0
  104. package/esm2015/cms/modules/federated/federated.module.js +19 -0
  105. package/esm2015/cms/modules/federated/federated.types.js +2 -0
  106. package/esm2015/cms/modules/federated/federated.utils.js +37 -0
  107. package/esm2015/cms/plugins/configuration.plugin.js +94 -0
  108. package/esm2015/cms/plugins/io.plugin.js +37 -0
  109. package/esm2015/cms/plugins/script.plugin.js +66 -0
  110. package/esm2015/cms/services/dynamic-module.service.js +33 -0
  111. package/esm2015/cms/services/element-context.service.js +10 -0
  112. package/esm2015/cms/services/index.js +4 -0
  113. package/esm2015/cms/services/integration.state.js +40 -0
  114. package/esm2015/cms/services/io-provider.service.js +51 -0
  115. package/esm2015/cms/services/launcher.service.js +57 -0
  116. package/esm2015/cms/services/templates.service.js +19 -0
  117. package/esm2015/cms/types/common.types.js +2 -0
  118. package/esm2015/cms/types/configuration.types.js +2 -0
  119. package/esm2015/cms/types/elements.types.js +2 -0
  120. package/esm2015/cms/types/index.js +6 -0
  121. package/esm2015/cms/types/integration.types.js +2 -0
  122. package/esm2015/cms/types/path.types.js +2 -0
  123. package/esm2015/cms/utils/element.utils.js +149 -0
  124. package/esm2015/cms/utils/elements-resolver.js +108 -0
  125. package/esm2015/cms/utils/index.js +4 -0
  126. package/esm2015/cms/utils/path.utils.js +67 -0
  127. package/esm2015/cms/veloce-sdk-cms.js +5 -0
  128. package/esm2015/cms/vendor-map.js +35 -0
  129. package/esm2015/core/core.module.js +18 -0
  130. package/esm2015/core/index.js +7 -0
  131. package/esm2015/core/modules/configuration/configuration.module.js +34 -0
  132. package/esm2015/core/modules/configuration/helpers.js +10 -0
  133. package/esm2015/core/modules/configuration/index.js +5 -0
  134. package/esm2015/core/modules/configuration/services/configuration-runtime.service.js +90 -0
  135. package/esm2015/core/modules/configuration/services/configuration.service.js +153 -0
  136. package/esm2015/core/modules/configuration/services/runtime-context.service.js +61 -0
  137. package/esm2015/core/modules/configuration/types/configuration-runtime.types.js +2 -0
  138. package/esm2015/core/modules/flow-configuration/flow-configuration.module.js +18 -0
  139. package/esm2015/core/modules/flow-configuration/index.js +5 -0
  140. package/esm2015/core/modules/flow-configuration/services/flow-configuration.service.js +90 -0
  141. package/esm2015/core/modules/flow-configuration/services/flow-update.service.js +114 -0
  142. package/esm2015/core/modules/flow-configuration/types/update.types.js +2 -0
  143. package/esm2015/core/modules/index.js +3 -0
  144. package/esm2015/core/services/context.service.js +44 -0
  145. package/esm2015/core/services/index.js +4 -0
  146. package/esm2015/core/services/product-images.service.js +30 -0
  147. package/esm2015/core/services/quote-draft.service.js +88 -0
  148. package/esm2015/core/types/index.js +4 -0
  149. package/esm2015/core/types/quote-states.types.js +2 -0
  150. package/esm2015/core/types/runtime.types.js +16 -0
  151. package/esm2015/core/types/ui-definition.types.js +2 -0
  152. package/esm2015/core/utils/index.js +3 -0
  153. package/esm2015/core/utils/line-item.utils.js +98 -0
  154. package/esm2015/core/utils/line-item.worker.js +19 -0
  155. package/esm2015/core/veloce-sdk-core.js +5 -0
  156. package/esm2015/index.js +2 -0
  157. package/esm2015/runtime/components/component-preview/component-preview.component.js +125 -0
  158. package/esm2015/runtime/components/index.js +5 -0
  159. package/esm2015/runtime/components/section-renderer/section-renderer.component.js +71 -0
  160. package/esm2015/runtime/components/ui-runtime/runtime.component.js +427 -0
  161. package/esm2015/runtime/components/ui-runtime-preview/runtime-preview.component.js +109 -0
  162. package/esm2015/runtime/execution/components/children-placeholder/children-placeholder.component.js +68 -0
  163. package/esm2015/runtime/execution/components/context-provider/context-provider.component.js +36 -0
  164. package/esm2015/runtime/execution/components/execution-section-renderer/execution-section-renderer.component.js +72 -0
  165. package/esm2015/runtime/execution/components/federated/federated.component.js +81 -0
  166. package/esm2015/runtime/execution/components/velo-attribute/velo-attribute.component.js +65 -0
  167. package/esm2015/runtime/execution/components/velo-multiselect/velo-multiselect.component.js +136 -0
  168. package/esm2015/runtime/execution/components/velo-port-checkbox/velo-port-checkbox.component.js +80 -0
  169. package/esm2015/runtime/execution/components/velo-port-dropdown/velo-port-dropdown.component.js +101 -0
  170. package/esm2015/runtime/execution/components/velo-port-radio/velo-port-radio.component.js +150 -0
  171. package/esm2015/runtime/execution/components/velo-type/velo-type.component.js +121 -0
  172. package/esm2015/runtime/execution/directives/section-script.directive.js +242 -0
  173. package/esm2015/runtime/execution/directives/sf-query.directive.js +34 -0
  174. package/esm2015/runtime/execution/directives/velo-attribute.directive.js +86 -0
  175. package/esm2015/runtime/execution/directives/velo-port.directive.js +373 -0
  176. package/esm2015/runtime/execution/directives/vl-approval.directive.js +22 -0
  177. package/esm2015/runtime/execution/directives/vl-document-attachments.directive.js +35 -0
  178. package/esm2015/runtime/execution/directives/vl-document-templates.directive.js +59 -0
  179. package/esm2015/runtime/execution/directives/vl-quote.directive.js +41 -0
  180. package/esm2015/runtime/execution/directives/vl-ramp.directive.js +51 -0
  181. package/esm2015/runtime/execution/runtime-execution.module.js +163 -0
  182. package/esm2015/runtime/execution/utils/federated.util.js +37 -0
  183. package/esm2015/runtime/index.js +5 -0
  184. package/esm2015/runtime/runtime.module.js +104 -0
  185. package/esm2015/runtime/services/cart.service.js +28 -0
  186. package/esm2015/runtime/services/collapsible-state.service.js +34 -0
  187. package/esm2015/runtime/services/configuration.service.js +102 -0
  188. package/esm2015/runtime/services/current-state.service.js +17 -0
  189. package/esm2015/runtime/services/form-scope.service.js +30 -0
  190. package/esm2015/runtime/services/index.js +4 -0
  191. package/esm2015/runtime/services/product-model-cache.service.js +30 -0
  192. package/esm2015/runtime/services/runtime-context.service.js +56 -0
  193. package/esm2015/runtime/services/runtime-form.service.js +224 -0
  194. package/esm2015/runtime/services/runtime.service.js +108 -0
  195. package/esm2015/runtime/services/section-helper.service.js +27 -0
  196. package/esm2015/runtime/services/section-scope.service.js +36 -0
  197. package/esm2015/runtime/services/section-store.service.js +22 -0
  198. package/esm2015/runtime/services/section.service.js +124 -0
  199. package/esm2015/runtime/types/bound-data.types.js +7 -0
  200. package/esm2015/runtime/types/index.js +2 -0
  201. package/esm2015/runtime/types/runtime.types.js +2 -0
  202. package/esm2015/runtime/types/script-registry.types.js +51 -0
  203. package/esm2015/runtime/utils/line-item.util.js +273 -0
  204. package/esm2015/runtime/utils/section.utils.js +26 -0
  205. package/esm2015/runtime/utils/sections-binder.helper.js +105 -0
  206. package/esm2015/runtime/veloce-sdk-runtime.js +5 -0
  207. package/esm2015/src/components/dialog/dialog.component.js +30 -0
  208. package/esm2015/src/components/dialog/dialog.module.js +19 -0
  209. package/esm2015/src/components/dialog/dialog.types.js +2 -0
  210. package/esm2015/src/components/header/cart-overlay/cart-preview.component.js +116 -0
  211. package/esm2015/src/components/header/cart-overlay/cart-preview.module.js +23 -0
  212. package/esm2015/src/components/header/header.component.js +196 -0
  213. package/esm2015/src/components/header/header.module.js +23 -0
  214. package/esm2015/src/components/header/header.types.js +2 -0
  215. package/esm2015/src/constants.js +2 -0
  216. package/esm2015/src/flow-routing.module.js +97 -0
  217. package/esm2015/src/flow.component.js +35 -0
  218. package/esm2015/src/flow.module.js +52 -0
  219. package/esm2015/src/guards/context.guard.js +75 -0
  220. package/esm2015/src/guards/index.js +2 -0
  221. package/esm2015/src/guards/product-unload.guard.js +43 -0
  222. package/esm2015/src/guards/root.guard.js +41 -0
  223. package/esm2015/src/index.js +7 -0
  224. package/esm2015/src/pages/catalog/catalog.component.js +117 -0
  225. package/esm2015/src/pages/catalog/catalog.module.js +20 -0
  226. package/esm2015/src/pages/debug/debug.component.js +65 -0
  227. package/esm2015/src/pages/debug/debug.module.js +48 -0
  228. package/esm2015/src/pages/legacy-product/legacy-product.component.js +132 -0
  229. package/esm2015/src/pages/legacy-product/legacy-product.module.js +21 -0
  230. package/esm2015/src/pages/product/product.component.js +95 -0
  231. package/esm2015/src/pages/product/product.module.js +20 -0
  232. package/esm2015/src/pages/record-not-found/record-not-found.component.js +29 -0
  233. package/esm2015/src/pages/record-not-found/record-not-found.module.js +20 -0
  234. package/esm2015/src/pages/shopping-cart/shopping-cart.component.js +117 -0
  235. package/esm2015/src/pages/shopping-cart/shopping-cart.module.js +20 -0
  236. package/esm2015/src/resolvers/flow.resolver.js +58 -0
  237. package/esm2015/src/resolvers/quote.resolver.js +45 -0
  238. package/esm2015/src/services/flow-dialog.service.js +80 -0
  239. package/esm2015/src/services/flow-router.service.js +124 -0
  240. package/esm2015/src/services/flow.service.js +67 -0
  241. package/esm2015/src/services/index.js +2 -0
  242. package/esm2015/src/types/context-route.types.js +2 -0
  243. package/esm2015/src/types/flow-customization.types.js +3 -0
  244. package/esm2015/src/types/index.js +3 -0
  245. package/esm2015/src/types/route.types.js +2 -0
  246. package/esm2015/src/utils/flow.utils.js +12 -0
  247. package/esm2015/src/utils/index.js +2 -0
  248. package/esm2015/veloce-sdk.js +5 -0
  249. package/fesm2015/veloce-sdk-cms.js +1301 -0
  250. package/fesm2015/veloce-sdk-cms.js.map +1 -0
  251. package/fesm2015/veloce-sdk-core.js +837 -0
  252. package/fesm2015/veloce-sdk-core.js.map +1 -0
  253. package/fesm2015/veloce-sdk-runtime.js +3895 -0
  254. package/fesm2015/veloce-sdk-runtime.js.map +1 -0
  255. package/fesm2015/veloce-sdk.js +1635 -0
  256. package/fesm2015/veloce-sdk.js.map +1 -0
  257. package/index.d.ts +1 -0
  258. package/package.json +49 -0
  259. package/runtime/components/component-preview/component-preview.component.d.ts +27 -0
  260. package/runtime/components/index.d.ts +4 -0
  261. package/runtime/components/section-renderer/section-renderer.component.d.ts +25 -0
  262. package/runtime/components/ui-runtime/runtime.component.d.ts +53 -0
  263. package/runtime/components/ui-runtime-preview/runtime-preview.component.d.ts +27 -0
  264. package/runtime/execution/components/children-placeholder/children-placeholder.component.d.ts +30 -0
  265. package/runtime/execution/components/context-provider/context-provider.component.d.ts +14 -0
  266. package/runtime/execution/components/execution-section-renderer/execution-section-renderer.component.d.ts +25 -0
  267. package/runtime/execution/components/federated/federated.component.d.ts +36 -0
  268. package/runtime/execution/components/velo-attribute/velo-attribute.component.d.ts +19 -0
  269. package/runtime/execution/components/velo-multiselect/velo-multiselect.component.d.ts +35 -0
  270. package/runtime/execution/components/velo-port-checkbox/velo-port-checkbox.component.d.ts +22 -0
  271. package/runtime/execution/components/velo-port-dropdown/velo-port-dropdown.component.d.ts +22 -0
  272. package/runtime/execution/components/velo-port-radio/velo-port-radio.component.d.ts +28 -0
  273. package/runtime/execution/components/velo-type/velo-type.component.d.ts +31 -0
  274. package/runtime/execution/directives/section-script.directive.d.ts +59 -0
  275. package/runtime/execution/directives/sf-query.directive.d.ts +15 -0
  276. package/runtime/execution/directives/velo-attribute.directive.d.ts +26 -0
  277. package/runtime/execution/directives/velo-port.directive.d.ts +74 -0
  278. package/runtime/execution/directives/vl-approval.directive.d.ts +10 -0
  279. package/runtime/execution/directives/vl-document-attachments.directive.d.ts +15 -0
  280. package/runtime/execution/directives/vl-document-templates.directive.d.ts +33 -0
  281. package/runtime/execution/directives/vl-quote.directive.d.ts +14 -0
  282. package/runtime/execution/directives/vl-ramp.directive.d.ts +15 -0
  283. package/runtime/execution/runtime-execution.module.d.ts +27 -0
  284. package/runtime/execution/utils/federated.util.d.ts +6 -0
  285. package/runtime/index.d.ts +4 -0
  286. package/runtime/package.json +10 -0
  287. package/runtime/runtime.module.d.ts +18 -0
  288. package/runtime/services/cart.service.d.ts +15 -0
  289. package/runtime/services/collapsible-state.service.d.ts +15 -0
  290. package/runtime/services/configuration.service.d.ts +19 -0
  291. package/runtime/services/current-state.service.d.ts +8 -0
  292. package/runtime/services/form-scope.service.d.ts +20 -0
  293. package/runtime/services/index.d.ts +3 -0
  294. package/runtime/services/product-model-cache.service.d.ts +14 -0
  295. package/runtime/services/runtime-context.service.d.ts +16 -0
  296. package/runtime/services/runtime-form.service.d.ts +24 -0
  297. package/runtime/services/runtime.service.d.ts +43 -0
  298. package/runtime/services/section-helper.service.d.ts +8 -0
  299. package/runtime/services/section-scope.service.d.ts +14 -0
  300. package/runtime/services/section-store.service.d.ts +11 -0
  301. package/runtime/services/section.service.d.ts +30 -0
  302. package/runtime/types/bound-data.types.d.ts +13 -0
  303. package/runtime/types/index.d.ts +1 -0
  304. package/runtime/types/runtime.types.d.ts +19 -0
  305. package/runtime/types/script-registry.types.d.ts +13 -0
  306. package/runtime/utils/line-item.util.d.ts +34 -0
  307. package/runtime/utils/section.utils.d.ts +2 -0
  308. package/runtime/utils/sections-binder.helper.d.ts +16 -0
  309. package/runtime/veloce-sdk-runtime.d.ts +5 -0
  310. package/src/components/dialog/dialog.component.d.ts +13 -0
  311. package/src/components/dialog/dialog.module.d.ts +9 -0
  312. package/src/components/dialog/dialog.types.d.ts +6 -0
  313. package/src/components/header/cart-overlay/cart-preview.component.d.ts +31 -0
  314. package/src/components/header/cart-overlay/cart-preview.module.d.ts +13 -0
  315. package/src/components/header/header.component.d.ts +48 -0
  316. package/src/components/header/header.module.d.ts +13 -0
  317. package/src/components/header/header.types.d.ts +19 -0
  318. package/src/constants.d.ts +1 -0
  319. package/src/flow-routing.module.d.ts +11 -0
  320. package/src/flow.component.d.ts +17 -0
  321. package/src/flow.module.d.ts +15 -0
  322. package/src/guards/context.guard.d.ts +18 -0
  323. package/src/guards/index.d.ts +1 -0
  324. package/src/guards/product-unload.guard.d.ts +16 -0
  325. package/src/guards/root.guard.d.ts +15 -0
  326. package/src/index.d.ts +6 -0
  327. package/src/pages/catalog/catalog.component.d.ts +32 -0
  328. package/src/pages/catalog/catalog.module.d.ts +10 -0
  329. package/src/pages/debug/debug.component.d.ts +27 -0
  330. package/src/pages/debug/debug.module.d.ts +14 -0
  331. package/src/pages/legacy-product/legacy-product.component.d.ts +37 -0
  332. package/src/pages/legacy-product/legacy-product.module.d.ts +10 -0
  333. package/src/pages/product/product.component.d.ts +30 -0
  334. package/src/pages/product/product.module.d.ts +10 -0
  335. package/src/pages/record-not-found/record-not-found.component.d.ts +11 -0
  336. package/src/pages/record-not-found/record-not-found.module.d.ts +9 -0
  337. package/src/pages/shopping-cart/shopping-cart.component.d.ts +32 -0
  338. package/src/pages/shopping-cart/shopping-cart.module.d.ts +10 -0
  339. package/src/resolvers/flow.resolver.d.ts +14 -0
  340. package/src/resolvers/quote.resolver.d.ts +18 -0
  341. package/src/services/flow-dialog.service.d.ts +20 -0
  342. package/src/services/flow-router.service.d.ts +35 -0
  343. package/src/services/flow.service.d.ts +17 -0
  344. package/src/services/index.d.ts +1 -0
  345. package/src/types/context-route.types.d.ts +5 -0
  346. package/src/types/flow-customization.types.d.ts +11 -0
  347. package/src/types/index.d.ts +2 -0
  348. package/src/types/route.types.d.ts +9 -0
  349. package/src/utils/flow.utils.d.ts +1 -0
  350. package/src/utils/index.d.ts +1 -0
  351. package/veloce-sdk.d.ts +5 -0
@@ -0,0 +1,109 @@
1
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
+ import { ConfigurationContextMode, EntityUtil, RuntimeModel, SectionPathUtil, } from '@veloce/core';
3
+ import { RuntimeMode } from '@veloce/sdk/core';
4
+ import { combineLatest, Subject } from 'rxjs';
5
+ import { takeUntil } from 'rxjs/operators';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../../services/runtime.service";
8
+ import * as i2 from "../../services/product-model-cache.service";
9
+ import * as i3 from "@veloce/api";
10
+ import * as i4 from "@veloce/sdk/core";
11
+ import * as i5 from "../ui-runtime/runtime.component";
12
+ export class RuntimePreviewComponent {
13
+ constructor(runtimeService, modelCacheService, configurationApiService, contextService) {
14
+ this.runtimeService = runtimeService;
15
+ this.modelCacheService = modelCacheService;
16
+ this.configurationApiService = configurationApiService;
17
+ this.contextService = contextService;
18
+ this.destroy$ = new Subject();
19
+ }
20
+ set uiDefinition(value) {
21
+ this._uiDefinition = value;
22
+ this.initDefinition(value);
23
+ }
24
+ ngOnInit() {
25
+ if (!this.modelId) {
26
+ return;
27
+ }
28
+ this.modelCacheService
29
+ .getProductModel(this.modelId)
30
+ .pipe(takeUntil(this.destroy$))
31
+ .subscribe(container => {
32
+ this.productModelContainer = container;
33
+ if (this._uiDefinition) {
34
+ this.initDefinition(this._uiDefinition);
35
+ }
36
+ });
37
+ }
38
+ ngOnDestroy() {
39
+ this.destroy$.next();
40
+ this.destroy$.complete();
41
+ }
42
+ initDefinition(uiDefinition) {
43
+ if (!this.productModelContainer) {
44
+ return;
45
+ }
46
+ const initialisedUiDefinition = EntityUtil.clone(uiDefinition);
47
+ const externals = this.productModelContainer.main.externals;
48
+ if (externals) {
49
+ initialisedUiDefinition.externals = externals.reduce((trunk, variable) => {
50
+ var _a, _b;
51
+ return Object.assign(Object.assign({}, trunk), { [variable.name]: (_b = (_a = initialisedUiDefinition.externals) === null || _a === void 0 ? void 0 : _a[variable.name]) !== null && _b !== void 0 ? _b : '' });
52
+ }, {});
53
+ }
54
+ else {
55
+ delete initialisedUiDefinition.externals;
56
+ }
57
+ this.initialisedUiDefinition = initialisedUiDefinition;
58
+ this.launchRuntime();
59
+ }
60
+ onSolutionUpdated(lineItem) {
61
+ this.runtimeService.updateRuntime({ configurableRamp: lineItem });
62
+ }
63
+ launchRuntime() {
64
+ if (!this.modelId || !this.initialisedUiDefinition) {
65
+ return;
66
+ }
67
+ SectionPathUtil.updateSectionsPath(this.initialisedUiDefinition.sections);
68
+ const uiDefinition = EntityUtil.clone(this.initialisedUiDefinition);
69
+ combineLatest([
70
+ this.configurationApiService.getRuntimeDataByModelId(this.modelId),
71
+ this.contextService.create('TestId', ConfigurationContextMode.TEST),
72
+ ]).subscribe(([runtimeData]) => {
73
+ var _a;
74
+ const runtimeModel = RuntimeModel.create(runtimeData.types, runtimeData.products);
75
+ const rootType = Array.from(runtimeModel.components.values()).find(c => uiDefinition.rootType &&
76
+ runtimeModel.isEquals(c.typeName, uiDefinition.rootType) &&
77
+ EntityUtil.isPresent(c.productId));
78
+ if (rootType === null || rootType === void 0 ? void 0 : rootType.typeName) {
79
+ uiDefinition.rootType = rootType.typeName;
80
+ }
81
+ const contextProductId = rootType ? rootType.productId : undefined;
82
+ const context = {
83
+ modelId: (_a = this.modelId) !== null && _a !== void 0 ? _a : '',
84
+ uiDefinition: uiDefinition,
85
+ runtimeModel,
86
+ runtimeMode: RuntimeMode.TEST,
87
+ productId: contextProductId,
88
+ properties: uiDefinition.externals,
89
+ };
90
+ this.runtimeService.startRuntime(context, {});
91
+ });
92
+ }
93
+ }
94
+ RuntimePreviewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: RuntimePreviewComponent, deps: [{ token: i1.RuntimeService }, { token: i2.ProductModelCacheService }, { token: i3.ConfigurationApiService }, { token: i4.ContextService }], target: i0.ɵɵFactoryTarget.Component });
95
+ RuntimePreviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: RuntimePreviewComponent, selector: "vl-runtime-preview", inputs: { modelId: "modelId", uiDefinition: "uiDefinition" }, ngImport: i0, template: "<vl-runtime (solutionUpdated)=\"onSolutionUpdated($event)\"></vl-runtime>\n", styles: [":host{flex-grow:1}\n"], components: [{ type: i5.RuntimeComponent, selector: "vl-runtime", outputs: ["solutionUpdated"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
96
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: RuntimePreviewComponent, decorators: [{
97
+ type: Component,
98
+ args: [{
99
+ selector: 'vl-runtime-preview',
100
+ templateUrl: 'runtime-preview.component.html',
101
+ styleUrls: ['runtime-preview.component.scss'],
102
+ changeDetection: ChangeDetectionStrategy.OnPush,
103
+ }]
104
+ }], ctorParameters: function () { return [{ type: i1.RuntimeService }, { type: i2.ProductModelCacheService }, { type: i3.ConfigurationApiService }, { type: i4.ContextService }]; }, propDecorators: { modelId: [{
105
+ type: Input
106
+ }], uiDefinition: [{
107
+ type: Input
108
+ }] } });
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1wcmV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3J1bnRpbWUvY29tcG9uZW50cy91aS1ydW50aW1lLXByZXZpZXcvcnVudGltZS1wcmV2aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3J1bnRpbWUvY29tcG9uZW50cy91aS1ydW50aW1lLXByZXZpZXcvcnVudGltZS1wcmV2aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUU3RixPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLFVBQVUsRUFJVixZQUFZLEVBQ1osZUFBZSxHQUVoQixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQWtCLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRS9ELE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQVczQyxNQUFNLE9BQU8sdUJBQXVCO0lBYWxDLFlBQ1UsY0FBOEIsRUFDOUIsaUJBQTJDLEVBQzNDLHVCQUFnRCxFQUNoRCxjQUE4QjtRQUg5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUEwQjtRQUMzQyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBQ2hELG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQU5oQyxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQU9wQyxDQUFDO0lBaEJKLElBQWEsWUFBWSxDQUFDLEtBQW1CO1FBQzNDLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQWVNLFFBQVE7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNqQixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsaUJBQWlCO2FBQ25CLGVBQWUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO2FBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzlCLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUNyQixJQUFJLENBQUMscUJBQXFCLEdBQUcsU0FBUyxDQUFDO1lBRXZDLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDekM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU0sY0FBYyxDQUFDLFlBQTBCO1FBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDL0IsT0FBTztTQUNSO1FBRUQsTUFBTSx1QkFBdUIsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRS9ELE1BQU0sU0FBUyxHQUE0QixJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNyRixJQUFJLFNBQVMsRUFBRTtZQUNiLHVCQUF1QixDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFxQixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsRUFBRTs7Z0JBQzNGLHVDQUNLLEtBQUssS0FDUixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFBLE1BQUEsdUJBQXVCLENBQUMsU0FBUywwQ0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLG1DQUFJLEVBQUUsSUFDekU7WUFDSixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDUjthQUFNO1lBQ0wsT0FBTyx1QkFBdUIsQ0FBQyxTQUFTLENBQUM7U0FDMUM7UUFFRCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsdUJBQXVCLENBQUM7UUFFdkQsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxRQUFrQjtRQUN6QyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVPLGFBQWE7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUU7WUFDbEQsT0FBTztTQUNSO1FBRUQsZUFBZSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUxRSxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBRXBFLGFBQWEsQ0FBQztZQUNaLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ2xFLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSx3QkFBd0IsQ0FBQyxJQUFJLENBQUM7U0FDcEUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRTs7WUFDN0IsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNsRixNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ2hFLENBQUMsQ0FBQyxFQUFFLENBQ0YsWUFBWSxDQUFDLFFBQVE7Z0JBQ3JCLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsUUFBUSxDQUFDO2dCQUN4RCxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FDcEMsQ0FBQztZQUVGLElBQUksUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLFFBQVEsRUFBRTtnQkFDdEIsWUFBWSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDO2FBQzNDO1lBRUQsTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUVuRSxNQUFNLE9BQU8sR0FBeUI7Z0JBQ3BDLE9BQU8sRUFBRSxNQUFBLElBQUksQ0FBQyxPQUFPLG1DQUFJLEVBQUU7Z0JBQzNCLFlBQVksRUFBRSxZQUFZO2dCQUMxQixZQUFZO2dCQUNaLFdBQVcsRUFBRSxXQUFXLENBQUMsSUFBSTtnQkFDN0IsU0FBUyxFQUFFLGdCQUFnQjtnQkFDM0IsVUFBVSxFQUFFLFlBQVksQ0FBQyxTQUFTO2FBQ25DLENBQUM7WUFFRixJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDaEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztxSEE1R1UsdUJBQXVCO3lHQUF2Qix1QkFBdUIsd0hDMUJwQyw2RUFDQTs0RkR5QmEsdUJBQXVCO2tCQU5uQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFdBQVcsRUFBRSxnQ0FBZ0M7b0JBQzdDLFNBQVMsRUFBRSxDQUFDLGdDQUFnQyxDQUFDO29CQUM3QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7K01BRVUsT0FBTztzQkFBZixLQUFLO2dCQUNPLFlBQVk7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25BcGlTZXJ2aWNlIH0gZnJvbSAnQHZlbG9jZS9hcGknO1xuaW1wb3J0IHtcbiAgQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLFxuICBFbnRpdHlVdGlsLFxuICBMaW5lSXRlbSxcbiAgUHJvZHVjdE1vZGVsQXR0cmlidXRlLFxuICBQcm9kdWN0TW9kZWxzQ29udGFpbmVyLFxuICBSdW50aW1lTW9kZWwsXG4gIFNlY3Rpb25QYXRoVXRpbCxcbiAgVUlEZWZpbml0aW9uLFxufSBmcm9tICdAdmVsb2NlL2NvcmUnO1xuaW1wb3J0IHsgQ29udGV4dFNlcnZpY2UsIFJ1bnRpbWVNb2RlIH0gZnJvbSAnQHZlbG9jZS9zZGsvY29yZSc7XG5pbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFByb2R1Y3RNb2RlbENhY2hlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Byb2R1Y3QtbW9kZWwtY2FjaGUuc2VydmljZSc7XG5pbXBvcnQgeyBSdW50aW1lU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3J1bnRpbWUuc2VydmljZSc7XG5pbXBvcnQgeyBMZWdhY3lSdW50aW1lQ29udGV4dCB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmwtcnVudGltZS1wcmV2aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICdydW50aW1lLXByZXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsncnVudGltZS1wcmV2aWV3LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBSdW50aW1lUHJldmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgbW9kZWxJZD86IHN0cmluZztcbiAgQElucHV0KCkgc2V0IHVpRGVmaW5pdGlvbih2YWx1ZTogVUlEZWZpbml0aW9uKSB7XG4gICAgdGhpcy5fdWlEZWZpbml0aW9uID0gdmFsdWU7XG4gICAgdGhpcy5pbml0RGVmaW5pdGlvbih2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIF91aURlZmluaXRpb24/OiBVSURlZmluaXRpb247XG4gIHByaXZhdGUgaW5pdGlhbGlzZWRVaURlZmluaXRpb24/OiBVSURlZmluaXRpb247XG4gIHByaXZhdGUgcHJvZHVjdE1vZGVsQ29udGFpbmVyPzogUHJvZHVjdE1vZGVsc0NvbnRhaW5lcjtcblxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJ1bnRpbWVTZXJ2aWNlOiBSdW50aW1lU2VydmljZSxcbiAgICBwcml2YXRlIG1vZGVsQ2FjaGVTZXJ2aWNlOiBQcm9kdWN0TW9kZWxDYWNoZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maWd1cmF0aW9uQXBpU2VydmljZTogQ29uZmlndXJhdGlvbkFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UsXG4gICkge31cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm1vZGVsSWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm1vZGVsQ2FjaGVTZXJ2aWNlXG4gICAgICAuZ2V0UHJvZHVjdE1vZGVsKHRoaXMubW9kZWxJZClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoY29udGFpbmVyID0+IHtcbiAgICAgICAgdGhpcy5wcm9kdWN0TW9kZWxDb250YWluZXIgPSBjb250YWluZXI7XG5cbiAgICAgICAgaWYgKHRoaXMuX3VpRGVmaW5pdGlvbikge1xuICAgICAgICAgIHRoaXMuaW5pdERlZmluaXRpb24odGhpcy5fdWlEZWZpbml0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHVibGljIGluaXREZWZpbml0aW9uKHVpRGVmaW5pdGlvbjogVUlEZWZpbml0aW9uKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnByb2R1Y3RNb2RlbENvbnRhaW5lcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGluaXRpYWxpc2VkVWlEZWZpbml0aW9uID0gRW50aXR5VXRpbC5jbG9uZSh1aURlZmluaXRpb24pO1xuXG4gICAgY29uc3QgZXh0ZXJuYWxzOiBQcm9kdWN0TW9kZWxBdHRyaWJ1dGVbXSA9IHRoaXMucHJvZHVjdE1vZGVsQ29udGFpbmVyLm1haW4uZXh0ZXJuYWxzO1xuICAgIGlmIChleHRlcm5hbHMpIHtcbiAgICAgIGluaXRpYWxpc2VkVWlEZWZpbml0aW9uLmV4dGVybmFscyA9IGV4dGVybmFscy5yZWR1Y2U8RGljdGlvbmFyeTxzdHJpbmc+PigodHJ1bmssIHZhcmlhYmxlKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4udHJ1bmssXG4gICAgICAgICAgW3ZhcmlhYmxlLm5hbWVdOiBpbml0aWFsaXNlZFVpRGVmaW5pdGlvbi5leHRlcm5hbHM/Llt2YXJpYWJsZS5uYW1lXSA/PyAnJyxcbiAgICAgICAgfTtcbiAgICAgIH0sIHt9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVsZXRlIGluaXRpYWxpc2VkVWlEZWZpbml0aW9uLmV4dGVybmFscztcbiAgICB9XG5cbiAgICB0aGlzLmluaXRpYWxpc2VkVWlEZWZpbml0aW9uID0gaW5pdGlhbGlzZWRVaURlZmluaXRpb247XG5cbiAgICB0aGlzLmxhdW5jaFJ1bnRpbWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBvblNvbHV0aW9uVXBkYXRlZChsaW5lSXRlbTogTGluZUl0ZW0pOiB2b2lkIHtcbiAgICB0aGlzLnJ1bnRpbWVTZXJ2aWNlLnVwZGF0ZVJ1bnRpbWUoeyBjb25maWd1cmFibGVSYW1wOiBsaW5lSXRlbSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbGF1bmNoUnVudGltZSgpIHtcbiAgICBpZiAoIXRoaXMubW9kZWxJZCB8fCAhdGhpcy5pbml0aWFsaXNlZFVpRGVmaW5pdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIFNlY3Rpb25QYXRoVXRpbC51cGRhdGVTZWN0aW9uc1BhdGgodGhpcy5pbml0aWFsaXNlZFVpRGVmaW5pdGlvbi5zZWN0aW9ucyk7XG5cbiAgICBjb25zdCB1aURlZmluaXRpb24gPSBFbnRpdHlVdGlsLmNsb25lKHRoaXMuaW5pdGlhbGlzZWRVaURlZmluaXRpb24pO1xuXG4gICAgY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb25BcGlTZXJ2aWNlLmdldFJ1bnRpbWVEYXRhQnlNb2RlbElkKHRoaXMubW9kZWxJZCksXG4gICAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLmNyZWF0ZSgnVGVzdElkJywgQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLlRFU1QpLFxuICAgIF0pLnN1YnNjcmliZSgoW3J1bnRpbWVEYXRhXSkgPT4ge1xuICAgICAgY29uc3QgcnVudGltZU1vZGVsID0gUnVudGltZU1vZGVsLmNyZWF0ZShydW50aW1lRGF0YS50eXBlcywgcnVudGltZURhdGEucHJvZHVjdHMpO1xuICAgICAgY29uc3Qgcm9vdFR5cGUgPSBBcnJheS5mcm9tKHJ1bnRpbWVNb2RlbC5jb21wb25lbnRzLnZhbHVlcygpKS5maW5kKFxuICAgICAgICBjID0+XG4gICAgICAgICAgdWlEZWZpbml0aW9uLnJvb3RUeXBlICYmXG4gICAgICAgICAgcnVudGltZU1vZGVsLmlzRXF1YWxzKGMudHlwZU5hbWUsIHVpRGVmaW5pdGlvbi5yb290VHlwZSkgJiZcbiAgICAgICAgICBFbnRpdHlVdGlsLmlzUHJlc2VudChjLnByb2R1Y3RJZCksXG4gICAgICApO1xuXG4gICAgICBpZiAocm9vdFR5cGU/LnR5cGVOYW1lKSB7XG4gICAgICAgIHVpRGVmaW5pdGlvbi5yb290VHlwZSA9IHJvb3RUeXBlLnR5cGVOYW1lO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjb250ZXh0UHJvZHVjdElkID0gcm9vdFR5cGUgPyByb290VHlwZS5wcm9kdWN0SWQgOiB1bmRlZmluZWQ7XG5cbiAgICAgIGNvbnN0IGNvbnRleHQ6IExlZ2FjeVJ1bnRpbWVDb250ZXh0ID0ge1xuICAgICAgICBtb2RlbElkOiB0aGlzLm1vZGVsSWQgPz8gJycsXG4gICAgICAgIHVpRGVmaW5pdGlvbjogdWlEZWZpbml0aW9uLFxuICAgICAgICBydW50aW1lTW9kZWwsXG4gICAgICAgIHJ1bnRpbWVNb2RlOiBSdW50aW1lTW9kZS5URVNULFxuICAgICAgICBwcm9kdWN0SWQ6IGNvbnRleHRQcm9kdWN0SWQsXG4gICAgICAgIHByb3BlcnRpZXM6IHVpRGVmaW5pdGlvbi5leHRlcm5hbHMsXG4gICAgICB9O1xuXG4gICAgICB0aGlzLnJ1bnRpbWVTZXJ2aWNlLnN0YXJ0UnVudGltZShjb250ZXh0LCB7fSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjx2bC1ydW50aW1lIChzb2x1dGlvblVwZGF0ZWQpPVwib25Tb2x1dGlvblVwZGF0ZWQoJGV2ZW50KVwiPjwvdmwtcnVudGltZT5cbiJdfQ==
@@ -0,0 +1,68 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { OrderByPipe } from '@veloce/core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../../services/section-scope.service";
5
+ import * as i2 from "../../../services/form-scope.service";
6
+ import * as i3 from "../../../services/collapsible-state.service";
7
+ import * as i4 from "../execution-section-renderer/execution-section-renderer.component";
8
+ import * as i5 from "@angular/common";
9
+ export class ChildrenPlaceholderComponent {
10
+ constructor(sectionScope, formScope, collapsibleState) {
11
+ this.sectionScope = sectionScope;
12
+ this.formScope = formScope;
13
+ this.collapsibleState = collapsibleState;
14
+ this._children = [];
15
+ this.collapsed = false;
16
+ }
17
+ ngOnInit() {
18
+ this.section = this.sectionScope.section;
19
+ this.form = this.formScope.form;
20
+ this.collapsed = this.section.model ? this.collapsibleState.isCollapsedSection(this.section.model.id) : true;
21
+ this.sub = this.collapsibleState.collapseSectionEvent.subscribe(e => {
22
+ var _a;
23
+ const lineItemId = e[0];
24
+ if (((_a = this.section.model) === null || _a === void 0 ? void 0 : _a.id) === lineItemId) {
25
+ this.collapsed = e[1];
26
+ }
27
+ });
28
+ this.setChildren();
29
+ }
30
+ ngOnChanges(changes) {
31
+ var _a, _b;
32
+ if (!this.children || ((_a = changes.children) === null || _a === void 0 ? void 0 : _a.currentValue) !== ((_b = changes.children) === null || _b === void 0 ? void 0 : _b.previousValue)) {
33
+ this.setChildren();
34
+ }
35
+ }
36
+ setChildren() {
37
+ this._children = this.children ? this.children : this.section.children;
38
+ }
39
+ ngOnDestroy() {
40
+ this.sub.unsubscribe();
41
+ }
42
+ }
43
+ ChildrenPlaceholderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: ChildrenPlaceholderComponent, deps: [{ token: i1.SectionScopeService }, { token: i2.FormScopeService }, { token: i3.CollapsibleStateService }], target: i0.ɵɵFactoryTarget.Component });
44
+ ChildrenPlaceholderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: ChildrenPlaceholderComponent, selector: "children-placeholder", inputs: { children: "children" }, providers: [OrderByPipe], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!collapsed\">\n <ng-container *ngFor=\"let child of _children\">\n <section-renderer [section]=\"child\" [form]=\"form\" *ngIf=\"!child.hidden\"></section-renderer>\n </ng-container>\n</ng-container>\n", components: [{ type: i4.ExecutionSectionRendererComponent, selector: "section-renderer", inputs: ["section", "form"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: ChildrenPlaceholderComponent, decorators: [{
46
+ type: Component,
47
+ args: [{
48
+ // eslint-disable-next-line @angular-eslint/component-selector
49
+ selector: 'children-placeholder',
50
+ templateUrl: 'children-placeholder.component.html',
51
+ providers: [OrderByPipe],
52
+ }]
53
+ }], ctorParameters: function () { return [{ type: i1.SectionScopeService }, { type: i2.FormScopeService }, { type: i3.CollapsibleStateService }]; }, propDecorators: { children: [{
54
+ type: Input
55
+ }] } });
56
+ export class TemplateComponent extends ChildrenPlaceholderComponent {
57
+ }
58
+ TemplateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TemplateComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
59
+ TemplateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TemplateComponent, selector: "template-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"!collapsed\">\n <ng-container *ngFor=\"let child of _children\">\n <section-renderer [section]=\"child\" [form]=\"form\" *ngIf=\"!child.hidden\"></section-renderer>\n </ng-container>\n</ng-container>\n", components: [{ type: i4.ExecutionSectionRendererComponent, selector: "section-renderer", inputs: ["section", "form"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TemplateComponent, decorators: [{
61
+ type: Component,
62
+ args: [{
63
+ // eslint-disable-next-line @angular-eslint/component-selector
64
+ selector: 'template-component',
65
+ templateUrl: 'children-placeholder.component.html',
66
+ }]
67
+ }] });
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpbGRyZW4tcGxhY2Vob2xkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvcnVudGltZS9leGVjdXRpb24vY29tcG9uZW50cy9jaGlsZHJlbi1wbGFjZWhvbGRlci9jaGlsZHJlbi1wbGFjZWhvbGRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9ydW50aW1lL2V4ZWN1dGlvbi9jb21wb25lbnRzL2NoaWxkcmVuLXBsYWNlaG9sZGVyL2NoaWxkcmVuLXBsYWNlaG9sZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUErQyxNQUFNLGVBQWUsQ0FBQztBQUU5RixPQUFPLEVBQUUsV0FBVyxFQUFXLE1BQU0sY0FBYyxDQUFDOzs7Ozs7O0FBWXBELE1BQU0sT0FBTyw0QkFBNEI7SUFjdkMsWUFDVSxZQUFpQyxFQUNqQyxTQUEyQixFQUMzQixnQkFBeUM7UUFGekMsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBeUI7UUFiNUMsY0FBUyxHQUFjLEVBQUUsQ0FBQztRQVFqQyxjQUFTLEdBQUcsS0FBSyxDQUFDO0lBTWYsQ0FBQztJQUVKLFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFFaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFN0csSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFOztZQUNsRSxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFeEIsSUFBSSxDQUFBLE1BQUEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLDBDQUFFLEVBQUUsTUFBSyxVQUFVLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3ZCO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjs7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQSxNQUFBLE9BQU8sQ0FBQyxRQUFRLDBDQUFFLFlBQVksT0FBSyxNQUFBLE9BQU8sQ0FBQyxRQUFRLDBDQUFFLGFBQWEsQ0FBQSxFQUFFO1lBQ3hGLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQjtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUN6RSxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDekIsQ0FBQzs7MEhBakRVLDRCQUE0Qjs4R0FBNUIsNEJBQTRCLGlGQUY1QixDQUFDLFdBQVcsQ0FBQywrQ0NaMUIsc09BS0E7NEZEU2EsNEJBQTRCO2tCQU54QyxTQUFTO21CQUFDO29CQUNULDhEQUE4RDtvQkFDOUQsUUFBUSxFQUFFLHNCQUFzQjtvQkFDaEMsV0FBVyxFQUFFLHFDQUFxQztvQkFDbEQsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDO2lCQUN6QjsrS0FHQyxRQUFRO3NCQURQLEtBQUs7O0FBd0RSLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSw0QkFBNEI7OytHQUF0RCxpQkFBaUI7bUdBQWpCLGlCQUFpQixpRkN2RTlCLHNPQUtBOzRGRGtFYSxpQkFBaUI7a0JBTDdCLFNBQVM7bUJBQUM7b0JBQ1QsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixXQUFXLEVBQUUscUNBQXFDO2lCQUNuRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE9yZGVyQnlQaXBlLCBTZWN0aW9uIH0gZnJvbSAnQHZlbG9jZS9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29sbGFwc2libGVTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jb2xsYXBzaWJsZS1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1TY29wZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9mb3JtLXNjb3BlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VjdGlvblNjb3BlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3NlY3Rpb24tc2NvcGUuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ2NoaWxkcmVuLXBsYWNlaG9sZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICdjaGlsZHJlbi1wbGFjZWhvbGRlci5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW09yZGVyQnlQaXBlXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hpbGRyZW5QbGFjZWhvbGRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKVxuICBjaGlsZHJlbj86IFNlY3Rpb25bXTtcblxuICBwdWJsaWMgX2NoaWxkcmVuOiBTZWN0aW9uW10gPSBbXTtcblxuICBzZWN0aW9uITogU2VjdGlvbjtcblxuICBmb3JtITogRm9ybUdyb3VwO1xuXG4gIHN1YiE6IFN1YnNjcmlwdGlvbjtcblxuICBjb2xsYXBzZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNlY3Rpb25TY29wZTogU2VjdGlvblNjb3BlU2VydmljZSxcbiAgICBwcml2YXRlIGZvcm1TY29wZTogRm9ybVNjb3BlU2VydmljZSxcbiAgICBwcml2YXRlIGNvbGxhcHNpYmxlU3RhdGU6IENvbGxhcHNpYmxlU3RhdGVTZXJ2aWNlLFxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZWN0aW9uID0gdGhpcy5zZWN0aW9uU2NvcGUuc2VjdGlvbjtcbiAgICB0aGlzLmZvcm0gPSB0aGlzLmZvcm1TY29wZS5mb3JtO1xuXG4gICAgdGhpcy5jb2xsYXBzZWQgPSB0aGlzLnNlY3Rpb24ubW9kZWwgPyB0aGlzLmNvbGxhcHNpYmxlU3RhdGUuaXNDb2xsYXBzZWRTZWN0aW9uKHRoaXMuc2VjdGlvbi5tb2RlbC5pZCkgOiB0cnVlO1xuXG4gICAgdGhpcy5zdWIgPSB0aGlzLmNvbGxhcHNpYmxlU3RhdGUuY29sbGFwc2VTZWN0aW9uRXZlbnQuc3Vic2NyaWJlKGUgPT4ge1xuICAgICAgY29uc3QgbGluZUl0ZW1JZCA9IGVbMF07XG5cbiAgICAgIGlmICh0aGlzLnNlY3Rpb24ubW9kZWw/LmlkID09PSBsaW5lSXRlbUlkKSB7XG4gICAgICAgIHRoaXMuY29sbGFwc2VkID0gZVsxXTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuc2V0Q2hpbGRyZW4oKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY2hpbGRyZW4gfHwgY2hhbmdlcy5jaGlsZHJlbj8uY3VycmVudFZhbHVlICE9PSBjaGFuZ2VzLmNoaWxkcmVuPy5wcmV2aW91c1ZhbHVlKSB7XG4gICAgICB0aGlzLnNldENoaWxkcmVuKCk7XG4gICAgfVxuICB9XG5cbiAgc2V0Q2hpbGRyZW4oKTogdm9pZCB7XG4gICAgdGhpcy5fY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuID8gdGhpcy5jaGlsZHJlbiA6IHRoaXMuc2VjdGlvbi5jaGlsZHJlbjtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3ViLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAndGVtcGxhdGUtY29tcG9uZW50JyxcbiAgdGVtcGxhdGVVcmw6ICdjaGlsZHJlbi1wbGFjZWhvbGRlci5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlQ29tcG9uZW50IGV4dGVuZHMgQ2hpbGRyZW5QbGFjZWhvbGRlckNvbXBvbmVudCB7fVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2xsYXBzZWRcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2hpbGQgb2YgX2NoaWxkcmVuXCI+XG4gICAgPHNlY3Rpb24tcmVuZGVyZXIgW3NlY3Rpb25dPVwiY2hpbGRcIiBbZm9ybV09XCJmb3JtXCIgKm5nSWY9XCIhY2hpbGQuaGlkZGVuXCI+PC9zZWN0aW9uLXJlbmRlcmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuIl19
@@ -0,0 +1,36 @@
1
+ import { Component, Inject, Input } from '@angular/core';
2
+ import { RuntimeModel } from '@veloce/core';
3
+ import { RuntimeService } from '../../../services/runtime.service';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../../services/runtime.service";
6
+ export class ContextProviderComponent {
7
+ constructor(runtimeService) {
8
+ this.runtimeService = runtimeService;
9
+ this.types = [];
10
+ this.products = {};
11
+ }
12
+ ngOnInit() {
13
+ const context = this.runtimeService.getRuntimeContext();
14
+ if (!context) {
15
+ return;
16
+ }
17
+ this.runtimeService.setRuntimeContext(Object.assign(Object.assign({}, context), { runtimeModel: RuntimeModel.create(this.types, this.products) }));
18
+ }
19
+ }
20
+ ContextProviderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: ContextProviderComponent, deps: [{ token: RuntimeService }], target: i0.ɵɵFactoryTarget.Component });
21
+ ContextProviderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: ContextProviderComponent, selector: "vl-context-provider", inputs: { types: "types", products: "products" }, ngImport: i0, template: '', isInline: true });
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: ContextProviderComponent, decorators: [{
23
+ type: Component,
24
+ args: [{
25
+ selector: 'vl-context-provider',
26
+ template: '',
27
+ }]
28
+ }], ctorParameters: function () { return [{ type: i1.RuntimeService, decorators: [{
29
+ type: Inject,
30
+ args: [RuntimeService]
31
+ }] }]; }, propDecorators: { types: [{
32
+ type: Input
33
+ }], products: [{
34
+ type: Input
35
+ }] } });
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1wcm92aWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9ydW50aW1lL2V4ZWN1dGlvbi9jb21wb25lbnRzL2NvbnRleHQtcHJvdmlkZXIvY29udGV4dC1wcm92aWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBZSxZQUFZLEVBQStCLE1BQU0sY0FBYyxDQUFDO0FBRXRGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7O0FBTW5FLE1BQU0sT0FBTyx3QkFBd0I7SUFJbkMsWUFBNEMsY0FBOEI7UUFBOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBSGpFLFVBQUssR0FBa0MsRUFBRSxDQUFDO1FBQzFDLGFBQVEsR0FBaUMsRUFBRSxDQUFDO0lBRXdCLENBQUM7SUFFOUUsUUFBUTtRQUNOLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUV4RCxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1osT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsaUNBQ2hDLE9BQU8sS0FDVixZQUFZLEVBQUUsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFDNUQsQ0FBQztJQUNMLENBQUM7O3NIQWpCVSx3QkFBd0Isa0JBSWYsY0FBYzswR0FKdkIsd0JBQXdCLDZHQUZ6QixFQUFFOzRGQUVELHdCQUF3QjtrQkFKcEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixRQUFRLEVBQUUsRUFBRTtpQkFDYjs7MEJBS2MsTUFBTTsyQkFBQyxjQUFjOzRDQUh6QixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQcm9kdWN0VHlwZSwgUnVudGltZU1vZGVsLCBSdW50aW1lUHJvZHVjdCwgUnVudGltZVR5cGUgfSBmcm9tICdAdmVsb2NlL2NvcmUnO1xuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBSdW50aW1lU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3J1bnRpbWUuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZsLWNvbnRleHQtcHJvdmlkZXInLFxuICB0ZW1wbGF0ZTogJycsXG59KVxuZXhwb3J0IGNsYXNzIENvbnRleHRQcm92aWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHR5cGVzOiAoUnVudGltZVR5cGUgfCBQcm9kdWN0VHlwZSlbXSA9IFtdO1xuICBASW5wdXQoKSBwcm9kdWN0czogRGljdGlvbmFyeTxSdW50aW1lUHJvZHVjdFtdPiA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoUnVudGltZVNlcnZpY2UpIHByaXZhdGUgcnVudGltZVNlcnZpY2U6IFJ1bnRpbWVTZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLnJ1bnRpbWVTZXJ2aWNlLmdldFJ1bnRpbWVDb250ZXh0KCk7XG5cbiAgICBpZiAoIWNvbnRleHQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnJ1bnRpbWVTZXJ2aWNlLnNldFJ1bnRpbWVDb250ZXh0KHtcbiAgICAgIC4uLmNvbnRleHQsXG4gICAgICBydW50aW1lTW9kZWw6IFJ1bnRpbWVNb2RlbC5jcmVhdGUodGhpcy50eXBlcywgdGhpcy5wcm9kdWN0cyksXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,72 @@
1
+ import { Component, Input, ViewChild, ViewContainerRef, } from '@angular/core';
2
+ import { SectionScopeService } from '../../../services/section-scope.service';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../../services/section-scope.service";
5
+ import * as i2 from "../../../services/section-store.service";
6
+ export class ExecutionSectionRendererComponent {
7
+ constructor(_injector, _m, sectionScope, sectionStore) {
8
+ this._injector = _injector;
9
+ this._m = _m;
10
+ this.sectionScope = sectionScope;
11
+ this.sectionStore = sectionStore;
12
+ this.componentRef = null;
13
+ }
14
+ set section(value) {
15
+ this._section = value;
16
+ this.sectionScope.section = value;
17
+ }
18
+ get section() {
19
+ return this._section;
20
+ }
21
+ ngOnInit() {
22
+ this.renderSection();
23
+ }
24
+ ngAfterViewInit() {
25
+ var _a, _b;
26
+ if (this.componentRef) {
27
+ this.sectionScope.templates.next((_b = (_a = this.componentRef.instance['templates']) === null || _a === void 0 ? void 0 : _a.toArray()) !== null && _b !== void 0 ? _b : []);
28
+ }
29
+ }
30
+ ngOnDestroy() {
31
+ if (this.componentRef) {
32
+ this.componentRef.destroy();
33
+ this.componentRef = null;
34
+ }
35
+ }
36
+ renderSection() {
37
+ var _a;
38
+ if (this.componentRef) {
39
+ this.componentRef.destroy();
40
+ this.componentRef = null;
41
+ }
42
+ const componentFactory = this.sectionStore.getComponentFactory(this._section);
43
+ if (!componentFactory) {
44
+ return;
45
+ }
46
+ this.componentRef = componentFactory.create(this._injector, [], null, this._m);
47
+ this.componentRef.location.nativeElement.setAttribute('sectionId', `${(_a = this._section.model) === null || _a === void 0 ? void 0 : _a.id}${this._section.label}`);
48
+ this.componentRef.instance['form'] = this.form;
49
+ this.componentRef.instance['section'] = this.section;
50
+ this.container.insert(this.componentRef.hostView);
51
+ }
52
+ }
53
+ ExecutionSectionRendererComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: ExecutionSectionRendererComponent, deps: [{ token: i0.Injector }, { token: i0.NgModuleRef }, { token: i1.SectionScopeService }, { token: i2.SectionStoreService }], target: i0.ɵɵFactoryTarget.Component });
54
+ ExecutionSectionRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: ExecutionSectionRendererComponent, selector: "section-renderer", inputs: { section: "section", form: "form" }, providers: [SectionScopeService], viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<ng-template #container></ng-template>", styles: [":host{display:contents}\n"] });
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: ExecutionSectionRendererComponent, decorators: [{
56
+ type: Component,
57
+ args: [{
58
+ // eslint-disable-next-line @angular-eslint/component-selector
59
+ selector: 'section-renderer',
60
+ templateUrl: 'execution-section-renderer.component.html',
61
+ styleUrls: ['execution-section-renderer.component.scss'],
62
+ providers: [SectionScopeService],
63
+ }]
64
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.NgModuleRef }, { type: i1.SectionScopeService }, { type: i2.SectionStoreService }]; }, propDecorators: { section: [{
65
+ type: Input
66
+ }], form: [{
67
+ type: Input
68
+ }], container: [{
69
+ type: ViewChild,
70
+ args: ['container', { read: ViewContainerRef, static: true }]
71
+ }] } });
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhlY3V0aW9uLXNlY3Rpb24tcmVuZGVyZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvcnVudGltZS9leGVjdXRpb24vY29tcG9uZW50cy9leGVjdXRpb24tc2VjdGlvbi1yZW5kZXJlci9leGVjdXRpb24tc2VjdGlvbi1yZW5kZXJlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9ydW50aW1lL2V4ZWN1dGlvbi9jb21wb25lbnRzL2V4ZWN1dGlvbi1zZWN0aW9uLXJlbmRlcmVyL2V4ZWN1dGlvbi1zZWN0aW9uLXJlbmRlcmVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBR1QsS0FBSyxFQUlMLFNBQVMsRUFDVCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0seUNBQXlDLENBQUM7Ozs7QUFVOUUsTUFBTSxPQUFPLGlDQUFpQztJQWdCNUMsWUFDVSxTQUFtQixFQUNuQixFQUFvQixFQUNwQixZQUFpQyxFQUNqQyxZQUFpQztRQUhqQyxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ25CLE9BQUUsR0FBRixFQUFFLENBQWtCO1FBQ3BCLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUNqQyxpQkFBWSxHQUFaLFlBQVksQ0FBcUI7UUFNbkMsaUJBQVksR0FBNkIsSUFBSSxDQUFDO0lBTG5ELENBQUM7SUFsQkosSUFDSSxPQUFPLENBQUMsS0FBYztRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBaUJELFFBQVE7UUFDTixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELGVBQWU7O1FBQ2IsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFBLE1BQUEsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLDBDQUFFLE9BQU8sRUFBRSxtQ0FBSSxFQUFFLENBQUMsQ0FBQztTQUM1RjtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7U0FDMUI7SUFDSCxDQUFDO0lBRUQsYUFBYTs7UUFDWCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztTQUMxQjtRQUVELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3JCLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDL0UsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FDbkQsV0FBVyxFQUNYLEdBQUcsTUFBQSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssMENBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQ25ELENBQUM7UUFDRixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQy9DLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDckQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNwRCxDQUFDOzsrSEFoRVUsaUNBQWlDO21IQUFqQyxpQ0FBaUMseUZBRmpDLENBQUMsbUJBQW1CLENBQUMsNkdBeUJBLGdCQUFnQiwyQ0MvQ2xELHdDQUFzQzs0RkR3QnpCLGlDQUFpQztrQkFQN0MsU0FBUzttQkFBQztvQkFDVCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSxrQkFBa0I7b0JBQzVCLFdBQVcsRUFBRSwyQ0FBMkM7b0JBQ3hELFNBQVMsRUFBRSxDQUFDLDJDQUEyQyxDQUFDO29CQUN4RCxTQUFTLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztpQkFDakM7NkxBS0ssT0FBTztzQkFEVixLQUFLO2dCQVdOLElBQUk7c0JBREgsS0FBSztnQkFXTixTQUFTO3NCQURSLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIENvbXBvbmVudFJlZixcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBOZ01vZHVsZVJlZixcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTZWN0aW9uIH0gZnJvbSAnQHZlbG9jZS9jb3JlJztcbmltcG9ydCB7IFNlY3Rpb25TY29wZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9zZWN0aW9uLXNjb3BlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VjdGlvblN0b3JlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3NlY3Rpb24tc3RvcmUuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICBzZWxlY3RvcjogJ3NlY3Rpb24tcmVuZGVyZXInLFxuICB0ZW1wbGF0ZVVybDogJ2V4ZWN1dGlvbi1zZWN0aW9uLXJlbmRlcmVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2V4ZWN1dGlvbi1zZWN0aW9uLXJlbmRlcmVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1NlY3Rpb25TY29wZVNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBFeGVjdXRpb25TZWN0aW9uUmVuZGVyZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgX3NlY3Rpb24hOiBTZWN0aW9uO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBzZWN0aW9uKHZhbHVlOiBTZWN0aW9uKSB7XG4gICAgdGhpcy5fc2VjdGlvbiA9IHZhbHVlO1xuICAgIHRoaXMuc2VjdGlvblNjb3BlLnNlY3Rpb24gPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBzZWN0aW9uKCk6IFNlY3Rpb24ge1xuICAgIHJldHVybiB0aGlzLl9zZWN0aW9uO1xuICB9XG5cbiAgQElucHV0KClcbiAgZm9ybSE6IEZvcm1Hcm91cDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9pbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBfbTogTmdNb2R1bGVSZWY8YW55PixcbiAgICBwcml2YXRlIHNlY3Rpb25TY29wZTogU2VjdGlvblNjb3BlU2VydmljZSxcbiAgICBwcml2YXRlIHNlY3Rpb25TdG9yZTogU2VjdGlvblN0b3JlU2VydmljZSxcbiAgKSB7fVxuXG4gIEBWaWV3Q2hpbGQoJ2NvbnRhaW5lcicsIHsgcmVhZDogVmlld0NvbnRhaW5lclJlZiwgc3RhdGljOiB0cnVlIH0pXG4gIGNvbnRhaW5lciE6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgcHJpdmF0ZSBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5yZW5kZXJTZWN0aW9uKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICB0aGlzLnNlY3Rpb25TY29wZS50ZW1wbGF0ZXMubmV4dCh0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZVsndGVtcGxhdGVzJ10/LnRvQXJyYXkoKSA/PyBbXSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5kZXN0cm95KCk7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZiA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyU2VjdGlvbigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb21wb25lbnRSZWYpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmRlc3Ryb3koKTtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmID0gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBjb21wb25lbnRGYWN0b3J5ID0gdGhpcy5zZWN0aW9uU3RvcmUuZ2V0Q29tcG9uZW50RmFjdG9yeSh0aGlzLl9zZWN0aW9uKTtcbiAgICBpZiAoIWNvbXBvbmVudEZhY3RvcnkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmNvbXBvbmVudFJlZiA9IGNvbXBvbmVudEZhY3RvcnkuY3JlYXRlKHRoaXMuX2luamVjdG9yLCBbXSwgbnVsbCwgdGhpcy5fbSk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYubG9jYXRpb24ubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoXG4gICAgICAnc2VjdGlvbklkJyxcbiAgICAgIGAke3RoaXMuX3NlY3Rpb24ubW9kZWw/LmlkfSR7dGhpcy5fc2VjdGlvbi5sYWJlbH1gLFxuICAgICk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2VbJ2Zvcm0nXSA9IHRoaXMuZm9ybTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZVsnc2VjdGlvbiddID0gdGhpcy5zZWN0aW9uO1xuICAgIHRoaXMuY29udGFpbmVyLmluc2VydCh0aGlzLmNvbXBvbmVudFJlZi5ob3N0Vmlldyk7XG4gIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjY29udGFpbmVyPjwvbmctdGVtcGxhdGU+Il19
@@ -0,0 +1,81 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, TemplateRef, ViewChild, ViewContainerRef, } from '@angular/core';
2
+ import { loadRemoteModule } from '../../utils/federated.util';
3
+ import * as i0 from "@angular/core";
4
+ var IntegrationEvent;
5
+ (function (IntegrationEvent) {
6
+ IntegrationEvent["Init"] = "Init";
7
+ })(IntegrationEvent || (IntegrationEvent = {}));
8
+ export class FederatedComponent {
9
+ constructor(injector, compiler, appRef, renderer) {
10
+ this.injector = injector;
11
+ this.compiler = compiler;
12
+ this.appRef = appRef;
13
+ this.renderer = renderer;
14
+ this.integrationEvent = new EventEmitter();
15
+ this.moduleReady = false;
16
+ }
17
+ ngAfterViewInit() {
18
+ if (!this.remoteEntry || !this.remoteName || !this.exposedModule) {
19
+ return;
20
+ }
21
+ loadRemoteModule({
22
+ remoteEntry: this.remoteEntry,
23
+ remoteName: this.remoteName,
24
+ exposedModule: this.exposedModule,
25
+ }).then(federated => {
26
+ this.compiler.compileModuleAsync(federated[this.exposedModule]).then(moduleFactory => {
27
+ var _a;
28
+ const rootModuleRef = moduleFactory.create(this.injector);
29
+ const rootComponentFactory = rootModuleRef.componentFactoryResolver.resolveComponentFactory(federated[this.exposedModule].rootComponent);
30
+ const node = document.createElement('div');
31
+ const { instance, hostView } = rootComponentFactory.create(this.injector, [], node);
32
+ this.instance = instance;
33
+ this.instance.data = this.data;
34
+ this.instance.eventData = this.eventData;
35
+ this.instance.integrationEvent = this.integrationEvent;
36
+ this.renderer.appendChild((_a = this.moduleHostRef) === null || _a === void 0 ? void 0 : _a.nativeElement, node);
37
+ this.appRef.attachView(hostView);
38
+ });
39
+ });
40
+ }
41
+ ngOnChanges(changes) {
42
+ if (!this.instance) {
43
+ return;
44
+ }
45
+ this.instance.ngOnChanges(changes);
46
+ }
47
+ }
48
+ FederatedComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: FederatedComponent, deps: [{ token: i0.Injector }, { token: i0.Compiler }, { token: i0.ApplicationRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
49
+ FederatedComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: FederatedComponent, selector: "veloce-host-federated", inputs: { remoteEntry: "remoteEntry", remoteName: "remoteName", exposedModule: "exposedModule", data: "data", eventData: "eventData" }, outputs: { integrationEvent: "integrationEvent" }, viewQueries: [{ propertyName: "federatedComponent", first: true, predicate: ["federatedComponent"], descendants: true, read: ViewContainerRef }, { propertyName: "foo", first: true, predicate: ["foo"], descendants: true, read: TemplateRef }, { propertyName: "moduleHostRef", first: true, predicate: ["moduleHost"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div #moduleHost></div>\n", styles: [":host{display:block}div{height:100%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: FederatedComponent, decorators: [{
51
+ type: Component,
52
+ args: [{
53
+ // eslint-disable-next-line @angular-eslint/component-selector
54
+ selector: 'veloce-host-federated',
55
+ templateUrl: './federated.component.html',
56
+ styleUrls: ['./federated.component.scss'],
57
+ changeDetection: ChangeDetectionStrategy.OnPush,
58
+ }]
59
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.Compiler }, { type: i0.ApplicationRef }, { type: i0.Renderer2 }]; }, propDecorators: { federatedComponent: [{
60
+ type: ViewChild,
61
+ args: ['federatedComponent', { read: ViewContainerRef }]
62
+ }], foo: [{
63
+ type: ViewChild,
64
+ args: ['foo', { read: TemplateRef }]
65
+ }], moduleHostRef: [{
66
+ type: ViewChild,
67
+ args: ['moduleHost', { static: false }]
68
+ }], remoteEntry: [{
69
+ type: Input
70
+ }], remoteName: [{
71
+ type: Input
72
+ }], exposedModule: [{
73
+ type: Input
74
+ }], data: [{
75
+ type: Input
76
+ }], eventData: [{
77
+ type: Input
78
+ }], integrationEvent: [{
79
+ type: Output
80
+ }] } });
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVkZXJhdGVkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3J1bnRpbWUvZXhlY3V0aW9uL2NvbXBvbmVudHMvZmVkZXJhdGVkL2ZlZGVyYXRlZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9ydW50aW1lL2V4ZWN1dGlvbi9jb21wb25lbnRzL2ZlZGVyYXRlZC9mZWRlcmF0ZWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUVaLEtBQUssRUFFTCxNQUFNLEVBR04sV0FBVyxFQUNYLFNBQVMsRUFDVCxnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBRTlELElBQUssZ0JBRUo7QUFGRCxXQUFLLGdCQUFnQjtJQUNuQixpQ0FBYSxDQUFBO0FBQ2YsQ0FBQyxFQUZJLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFFcEI7QUF5QkQsTUFBTSxPQUFPLGtCQUFrQjtJQWdCN0IsWUFDVSxRQUFrQixFQUNsQixRQUFrQixFQUNsQixNQUFzQixFQUN0QixRQUFtQjtRQUhuQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQVZYLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUEyQixDQUFDO1FBRWpGLGdCQUFXLEdBQUcsS0FBSyxDQUFDO0lBU2pCLENBQUM7SUFFSixlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUNoRSxPQUFPO1NBQ1I7UUFFRCxnQkFBZ0IsQ0FBQztZQUNmLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1NBQ2xDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQXVCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRTs7Z0JBQzdGLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUMxRCxNQUFNLG9CQUFvQixHQUFHLGFBQWEsQ0FBQyx3QkFBd0IsQ0FBQyx1QkFBdUIsQ0FDekYsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUF1QixDQUFDLENBQUMsYUFBYSxDQUN0RCxDQUFDO2dCQUNGLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNDLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEdBQUcsb0JBQW9CLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUVwRixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQXVDLENBQUM7Z0JBQ3hELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO2dCQUV2RCxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFBLElBQUksQ0FBQyxhQUFhLDBDQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDbkUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbkMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEIsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckMsQ0FBQzs7Z0hBMURVLGtCQUFrQjtvR0FBbEIsa0JBQWtCLDZWQUNZLGdCQUFnQixxRkFDL0IsV0FBVyxnSkNsRHZDLDJCQUNBOzRGRCtDYSxrQkFBa0I7a0JBUDlCLFNBQVM7bUJBQUM7b0JBQ1QsOERBQThEO29CQUM5RCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxXQUFXLEVBQUUsNEJBQTRCO29CQUN6QyxTQUFTLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQztvQkFDekMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEOzJLQUU4RCxrQkFBa0I7c0JBQTlFLFNBQVM7dUJBQUMsb0JBQW9CLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ2xCLEdBQUc7c0JBQTNDLFNBQVM7dUJBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFDSyxhQUFhO3NCQUF4RCxTQUFTO3VCQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBRWpDLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNZLGdCQUFnQjtzQkFBakMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIEFwcGxpY2F0aW9uUmVmLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcGlsZXIsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBSZW5kZXJlcjIsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGluZUl0ZW0gfSBmcm9tICdAdmVsb2NlL2NvcmUnO1xuaW1wb3J0IHsgbG9hZFJlbW90ZU1vZHVsZSB9IGZyb20gJy4uLy4uL3V0aWxzL2ZlZGVyYXRlZC51dGlsJztcblxuZW51bSBJbnRlZ3JhdGlvbkV2ZW50IHtcbiAgSW5pdCA9ICdJbml0Jyxcbn1cblxuaW50ZXJmYWNlIElucHV0RGF0YSB7XG4gIHJvb3RMaW5lSXRlbTogTGluZUl0ZW07XG59XG5cbmludGVyZmFjZSBJbnRlZ3JhdGlvbkV2ZW50UGF5bG9hZCB7XG4gIHR5cGU6IEludGVncmF0aW9uRXZlbnQ7XG4gIHBheWxvYWQ/OiB1bmtub3duO1xufVxuXG5pbnRlcmZhY2UgSW5lZ3JhdGlvbkNvbXBvbmVudEluc3RhbmNlIGV4dGVuZHMgT25DaGFuZ2VzIHtcbiAgaW50ZWdyYXRpb25FdmVudDogRXZlbnRFbWl0dGVyPEludGVncmF0aW9uRXZlbnRQYXlsb2FkPjtcbiAgaW50ZWdyYXRpb25BcHBSZWY6IEFwcGxpY2F0aW9uUmVmO1xuICBkYXRhPzogSW5wdXREYXRhO1xuICBldmVudERhdGE/OiBJbnRlZ3JhdGlvbkV2ZW50UGF5bG9hZDtcbn1cblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAndmVsb2NlLWhvc3QtZmVkZXJhdGVkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZlZGVyYXRlZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2ZlZGVyYXRlZC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRmVkZXJhdGVkQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcbiAgQFZpZXdDaGlsZCgnZmVkZXJhdGVkQ29tcG9uZW50JywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIGZlZGVyYXRlZENvbXBvbmVudD86IFZpZXdDb250YWluZXJSZWY7XG4gIEBWaWV3Q2hpbGQoJ2ZvbycsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgZm9vPzogVGVtcGxhdGVSZWY8dW5rbm93bj47XG4gIEBWaWV3Q2hpbGQoJ21vZHVsZUhvc3QnLCB7IHN0YXRpYzogZmFsc2UgfSkgbW9kdWxlSG9zdFJlZj86IEVsZW1lbnRSZWY7XG5cbiAgQElucHV0KCkgcmVtb3RlRW50cnk/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHJlbW90ZU5hbWU/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGV4cG9zZWRNb2R1bGU/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRhdGE/OiBJbnB1dERhdGE7XG4gIEBJbnB1dCgpIGV2ZW50RGF0YT86IEludGVncmF0aW9uRXZlbnRQYXlsb2FkO1xuICBAT3V0cHV0KCkgcHJpdmF0ZSBpbnRlZ3JhdGlvbkV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxJbnRlZ3JhdGlvbkV2ZW50UGF5bG9hZD4oKTtcblxuICBtb2R1bGVSZWFkeSA9IGZhbHNlO1xuXG4gIHByaXZhdGUgaW5zdGFuY2U/OiBJbmVncmF0aW9uQ29tcG9uZW50SW5zdGFuY2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgcHJpdmF0ZSBjb21waWxlcjogQ29tcGlsZXIsXG4gICAgcHJpdmF0ZSBhcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucmVtb3RlRW50cnkgfHwgIXRoaXMucmVtb3RlTmFtZSB8fCAhdGhpcy5leHBvc2VkTW9kdWxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbG9hZFJlbW90ZU1vZHVsZSh7XG4gICAgICByZW1vdGVFbnRyeTogdGhpcy5yZW1vdGVFbnRyeSxcbiAgICAgIHJlbW90ZU5hbWU6IHRoaXMucmVtb3RlTmFtZSxcbiAgICAgIGV4cG9zZWRNb2R1bGU6IHRoaXMuZXhwb3NlZE1vZHVsZSxcbiAgICB9KS50aGVuKGZlZGVyYXRlZCA9PiB7XG4gICAgICB0aGlzLmNvbXBpbGVyLmNvbXBpbGVNb2R1bGVBc3luYyhmZWRlcmF0ZWRbdGhpcy5leHBvc2VkTW9kdWxlIGFzIHN0cmluZ10pLnRoZW4obW9kdWxlRmFjdG9yeSA9PiB7XG4gICAgICAgIGNvbnN0IHJvb3RNb2R1bGVSZWYgPSBtb2R1bGVGYWN0b3J5LmNyZWF0ZSh0aGlzLmluamVjdG9yKTtcbiAgICAgICAgY29uc3Qgcm9vdENvbXBvbmVudEZhY3RvcnkgPSByb290TW9kdWxlUmVmLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShcbiAgICAgICAgICBmZWRlcmF0ZWRbdGhpcy5leHBvc2VkTW9kdWxlIGFzIHN0cmluZ10ucm9vdENvbXBvbmVudCxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3Qgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBjb25zdCB7IGluc3RhbmNlLCBob3N0VmlldyB9ID0gcm9vdENvbXBvbmVudEZhY3RvcnkuY3JlYXRlKHRoaXMuaW5qZWN0b3IsIFtdLCBub2RlKTtcblxuICAgICAgICB0aGlzLmluc3RhbmNlID0gaW5zdGFuY2UgYXMgSW5lZ3JhdGlvbkNvbXBvbmVudEluc3RhbmNlO1xuICAgICAgICB0aGlzLmluc3RhbmNlLmRhdGEgPSB0aGlzLmRhdGE7XG4gICAgICAgIHRoaXMuaW5zdGFuY2UuZXZlbnREYXRhID0gdGhpcy5ldmVudERhdGE7XG4gICAgICAgIHRoaXMuaW5zdGFuY2UuaW50ZWdyYXRpb25FdmVudCA9IHRoaXMuaW50ZWdyYXRpb25FdmVudDtcblxuICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMubW9kdWxlSG9zdFJlZj8ubmF0aXZlRWxlbWVudCwgbm9kZSk7XG4gICAgICAgIHRoaXMuYXBwUmVmLmF0dGFjaFZpZXcoaG9zdFZpZXcpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmluc3RhbmNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pbnN0YW5jZS5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcbiAgfVxufVxuIiwiPGRpdiAjbW9kdWxlSG9zdD48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,65 @@
1
+ import { Component } from '@angular/core';
2
+ import { VeloAttributeDirective } from '../../directives/velo-attribute.directive';
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 "../velo-multiselect/velo-multiselect.component";
7
+ import * as i4 from "@angular/forms";
8
+ import * as i5 from "@angular/common";
9
+ export class VeloAttributeComponent extends VeloAttributeDirective {
10
+ constructor(formScope, sectionScope) {
11
+ var _a, _b;
12
+ super(formScope, sectionScope);
13
+ this.controlName = this.section.id;
14
+ this.displayName = this.getDisplayName();
15
+ this.isMultiselect =
16
+ ((_b = (_a = this.section.model) === null || _a === void 0 ? void 0 : _a.attributes.find(attr => attr.name === this.section.boundData.entity.name)) === null || _b === void 0 ? void 0 : _b.type) ===
17
+ 'MULTIPLE';
18
+ }
19
+ getValueOptions(valueOptions) {
20
+ return this.isBooleanType(valueOptions) ? [0, 1] : valueOptions;
21
+ }
22
+ getValueText(valueOptions, value) {
23
+ if (this.isBooleanType(valueOptions)) {
24
+ return value === 0 ? 'False' : 'True';
25
+ }
26
+ return value;
27
+ }
28
+ handleMultiselectChange(value) {
29
+ var _a;
30
+ const formControl = this.form.get(this.controlName);
31
+ if (!formControl) {
32
+ return;
33
+ }
34
+ const currentValue = (_a = formControl.value) !== null && _a !== void 0 ? _a : [];
35
+ const newValue = currentValue.includes(value) ? currentValue.filter(v => v !== value) : [...currentValue, value];
36
+ formControl.setValue(newValue);
37
+ super.handleChange();
38
+ }
39
+ handleMultipleDropdownChange(event) {
40
+ const formControl = this.form.get(this.controlName);
41
+ if (!formControl) {
42
+ return;
43
+ }
44
+ formControl.setValue(event);
45
+ super.handleChange();
46
+ }
47
+ isBooleanType(value) {
48
+ return Array.isArray(value) && value.length === 1 && value[0].min === 0 && value[0].max === 1;
49
+ }
50
+ getDisplayName() {
51
+ var _a, _b;
52
+ return ((((_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) || '');
53
+ }
54
+ }
55
+ VeloAttributeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: VeloAttributeComponent, deps: [{ token: i1.FormScopeService }, { token: i2.SectionScopeService }], target: i0.ɵɵFactoryTarget.Component });
56
+ VeloAttributeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: VeloAttributeComponent, selector: "velo-attribute", usesInheritance: true, ngImport: i0, template: "<div class=\"form-group div-inline\" [formGroup]=\"form\">\n <div class=\"input-form-input div-inline\" [class.input-form-input--required]=\"section.required\">\n <label>\n <ng-container *ngIf=\"section.required\"> * </ng-container>\n\n {{ section.label }}\n </label>\n <div [ngSwitch]=\"section.controlType\" class=\"form-control-wrapper\">\n <div *ngSwitchCase=\"'DROPDOWN'\">\n <select\n [id]=\"controlName\"\n [formControlName]=\"controlName\"\n class=\"form-control\"\n (change)=\"handleChange()\"\n [attr.disabled]=\"section.readOnly ? true : null\"\n >\n <option\n *ngFor=\"let valueOption of getValueOptions(section.sectionValue?.valueOptions) || []\"\n [ngValue]=\"valueOption\"\n >\n {{ getValueText(section.sectionValue?.valueOptions, valueOption) }}\n </option>\n </select>\n </div>\n\n <div *ngSwitchCase=\"'MULTISELECT'\">\n <velo-multiselect\n [id]=\"controlName\"\n [formControlName]=\"controlName\"\n [options]=\"getValueOptions(section.sectionValue?.valueOptions)\"\n [attr.disabled]=\"section.readOnly ? true : null\"\n (selectionChange)=\"handleMultipleDropdownChange($event)\"\n ></velo-multiselect>\n </div>\n\n <div *ngSwitchCase=\"'RADIO'\">\n <div\n *ngFor=\"let valueOption of getValueOptions(section.sectionValue?.valueOptions)\"\n class=\"radio-button\"\n [attr.disabled]=\"section.readOnly ? true : null\"\n >\n <label>\n <input\n type=\"radio\"\n [id]=\"controlName\"\n [formControlName]=\"controlName\"\n [value]=\"valueOption\"\n (change)=\"handleChange()\"\n [attr.disabled]=\"section.readOnly ? true : null\"\n />\n <i class=\"input-helper\"></i>\n {{ getValueText(section.sectionValue?.valueOptions, valueOption) }}\n </label>\n </div>\n </div>\n\n <div *ngSwitchCase=\"'CHECKBOX'\">\n <ng-container *ngIf=\"!isMultiselect; else multiselect\">\n <div class=\"checkbox-select\" [attr.disabled]=\"section.readOnly ? true : null\">\n <label>\n <input\n type=\"checkbox\"\n [id]=\"controlName\"\n [formControlName]=\"controlName\"\n [checked]=\"section.sectionValue?.value === 1\"\n (change)=\"handleChange()\"\n [attr.disabled]=\"section.readOnly ? true : null\"\n />\n\n <i class=\"input-helper\"></i>\n &nbsp;\n </label>\n </div>\n </ng-container>\n\n <ng-template #multiselect>\n <div\n *ngFor=\"let valueOption of getValueOptions(section.sectionValue?.valueOptions)\"\n class=\"checkbox-select\"\n [attr.disabled]=\"section.readOnly ? true : null\"\n >\n <label>\n <input\n type=\"checkbox\"\n [id]=\"controlName\"\n [checked]=\"section.sectionValue?.value.includes(valueOption)\"\n (change)=\"handleMultiselectChange(valueOption)\"\n [value]=\"valueOption\"\n [attr.disabled]=\"section.readOnly ? true : null\"\n />\n\n <i class=\"input-helper\"></i>\n {{ valueOption }}\n </label>\n </div>\n </ng-template>\n </div>\n\n <div *ngSwitchCase=\"'DATE'\">\n <input\n type=\"text\"\n class=\"form-control\"\n [id]=\"controlName\"\n [formControlName]=\"controlName\"\n [attr.disabled]=\"section.readOnly ? true : null\"\n (bsValueChange)=\"handleChangDate($event)\"\n bsDatepicker\n />\n </div>\n\n <div *ngSwitchDefault>\n <input\n type=\"text\"\n class=\"form-control\"\n [id]=\"controlName\"\n [formControlName]=\"controlName\"\n (blur)=\"form.controls[controlName].dirty && handleChange()\"\n [attr.disabled]=\"section.readOnly ? true : null\"\n />\n </div>\n\n <!-- Add validation messages -->\n <!-- <div validation-messages [form]=\"form\" [controlId]=\"controlName\" [showForPristine]=\"true\"></div> -->\n </div>\n </div>\n</div>\n", components: [{ type: i3.MultiselectComponent, selector: "velo-multiselect", inputs: ["options"], outputs: ["selectionChange"] }], directives: [{ type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i4.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { type: i4.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: i4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i5.NgSwitchDefault, selector: "[ngSwitchDefault]" }] });
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: VeloAttributeComponent, decorators: [{
58
+ type: Component,
59
+ args: [{
60
+ // eslint-disable-next-line @angular-eslint/component-selector
61
+ selector: 'velo-attribute',
62
+ templateUrl: 'velo-attribute.component.html',
63
+ }]
64
+ }], ctorParameters: function () { return [{ type: i1.FormScopeService }, { type: i2.SectionScopeService }]; } });
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVsby1hdHRyaWJ1dGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvcnVudGltZS9leGVjdXRpb24vY29tcG9uZW50cy92ZWxvLWF0dHJpYnV0ZS92ZWxvLWF0dHJpYnV0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9ydW50aW1lL2V4ZWN1dGlvbi9jb21wb25lbnRzL3ZlbG8tYXR0cmlidXRlL3ZlbG8tYXR0cmlidXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFHbEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7Ozs7QUFPbkYsTUFBTSxPQUFPLHNCQUF1QixTQUFRLHNCQUFzQjtJQUtoRSxZQUFZLFNBQTJCLEVBQUUsWUFBaUM7O1FBQ3hFLEtBQUssQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsYUFBYTtZQUNoQixDQUFBLE1BQUEsTUFBQSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssMENBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQywwQ0FBRSxJQUFJO2dCQUNuRyxVQUFVLENBQUM7SUFDZixDQUFDO0lBRUQsZUFBZSxDQUFDLFlBQXFCO1FBQ25DLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFFLFlBQXlCLENBQUM7SUFDaEYsQ0FBQztJQUVELFlBQVksQ0FBQyxZQUFxQixFQUFFLEtBQXNCO1FBQ3hELElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUNwQyxPQUFPLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1NBQ3ZDO1FBQ0QsT0FBTyxLQUFlLENBQUM7SUFDekIsQ0FBQztJQUVELHVCQUF1QixDQUFDLEtBQXNCOztRQUM1QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFcEQsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNoQixPQUFPO1NBQ1I7UUFFRCxNQUFNLFlBQVksR0FBd0IsTUFBQSxXQUFXLENBQUMsS0FBSyxtQ0FBSSxFQUFFLENBQUM7UUFDbEUsTUFBTSxRQUFRLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNqSCxXQUFXLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRS9CLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsNEJBQTRCLENBQUMsS0FBVTtRQUNyQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFcEQsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNoQixPQUFPO1NBQ1I7UUFFRCxXQUFXLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU8sYUFBYSxDQUFDLEtBQVU7UUFDOUIsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQ2hHLENBQUM7SUFFTyxjQUFjOztRQUNwQixPQUFPLENBQ0wsQ0FBQyxDQUFBLE1BQUEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLDBDQUFFLFVBQVUsS0FBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsS0FBSSxNQUFBLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSywwQ0FBRSxJQUFJLENBQUEsSUFBSSxFQUFFLENBQ25ILENBQUM7SUFDSixDQUFDOztvSEEzRFUsc0JBQXNCO3dHQUF0QixzQkFBc0IsNkVDVm5DLHU2SUE4SEE7NEZEcEhhLHNCQUFzQjtrQkFMbEMsU0FBUzttQkFBQztvQkFDVCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFdBQVcsRUFBRSwrQkFBK0I7aUJBQzdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1TY29wZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9mb3JtLXNjb3BlLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VjdGlvblNjb3BlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3NlY3Rpb24tc2NvcGUuc2VydmljZSc7XG5pbXBvcnQgeyBWZWxvQXR0cmlidXRlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy92ZWxvLWF0dHJpYnV0ZS5kaXJlY3RpdmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICd2ZWxvLWF0dHJpYnV0ZScsXG4gIHRlbXBsYXRlVXJsOiAndmVsby1hdHRyaWJ1dGUuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBWZWxvQXR0cmlidXRlQ29tcG9uZW50IGV4dGVuZHMgVmVsb0F0dHJpYnV0ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGNvbnRyb2xOYW1lOiBzdHJpbmc7XG4gIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gIGlzTXVsdGlzZWxlY3Q6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoZm9ybVNjb3BlOiBGb3JtU2NvcGVTZXJ2aWNlLCBzZWN0aW9uU2NvcGU6IFNlY3Rpb25TY29wZVNlcnZpY2UpIHtcbiAgICBzdXBlcihmb3JtU2NvcGUsIHNlY3Rpb25TY29wZSk7XG5cbiAgICB0aGlzLmNvbnRyb2xOYW1lID0gdGhpcy5zZWN0aW9uLmlkO1xuICAgIHRoaXMuZGlzcGxheU5hbWUgPSB0aGlzLmdldERpc3BsYXlOYW1lKCk7XG4gICAgdGhpcy5pc011bHRpc2VsZWN0ID1cbiAgICAgIHRoaXMuc2VjdGlvbi5tb2RlbD8uYXR0cmlidXRlcy5maW5kKGF0dHIgPT4gYXR0ci5uYW1lID09PSB0aGlzLnNlY3Rpb24uYm91bmREYXRhLmVudGl0eS5uYW1lKT8udHlwZSA9PT1cbiAgICAgICdNVUxUSVBMRSc7XG4gIH1cblxuICBnZXRWYWx1ZU9wdGlvbnModmFsdWVPcHRpb25zOiB1bmtub3duKTogKHN0cmluZyB8IG51bWJlcilbXSB7XG4gICAgcmV0dXJuIHRoaXMuaXNCb29sZWFuVHlwZSh2YWx1ZU9wdGlvbnMpID8gWzAsIDFdIDogKHZhbHVlT3B0aW9ucyBhcyBzdHJpbmdbXSk7XG4gIH1cblxuICBnZXRWYWx1ZVRleHQodmFsdWVPcHRpb25zOiB1bmtub3duLCB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5pc0Jvb2xlYW5UeXBlKHZhbHVlT3B0aW9ucykpIHtcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/ICdGYWxzZScgOiAnVHJ1ZSc7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZSBhcyBzdHJpbmc7XG4gIH1cblxuICBoYW5kbGVNdWx0aXNlbGVjdENoYW5nZSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgY29uc3QgZm9ybUNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KHRoaXMuY29udHJvbE5hbWUpO1xuXG4gICAgaWYgKCFmb3JtQ29udHJvbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGN1cnJlbnRWYWx1ZTogKHN0cmluZyB8IG51bWJlcilbXSA9IGZvcm1Db250cm9sLnZhbHVlID8/IFtdO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gY3VycmVudFZhbHVlLmluY2x1ZGVzKHZhbHVlKSA/IGN1cnJlbnRWYWx1ZS5maWx0ZXIodiA9PiB2ICE9PSB2YWx1ZSkgOiBbLi4uY3VycmVudFZhbHVlLCB2YWx1ZV07XG4gICAgZm9ybUNvbnRyb2wuc2V0VmFsdWUobmV3VmFsdWUpO1xuXG4gICAgc3VwZXIuaGFuZGxlQ2hhbmdlKCk7XG4gIH1cblxuICBoYW5kbGVNdWx0aXBsZURyb3Bkb3duQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICBjb25zdCBmb3JtQ29udHJvbCA9IHRoaXMuZm9ybS5nZXQodGhpcy5jb250cm9sTmFtZSk7XG5cbiAgICBpZiAoIWZvcm1Db250cm9sKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9ybUNvbnRyb2wuc2V0VmFsdWUoZXZlbnQpO1xuICAgIHN1cGVyLmhhbmRsZUNoYW5nZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0Jvb2xlYW5UeXBlKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAxICYmIHZhbHVlWzBdLm1pbiA9PT0gMCAmJiB2YWx1ZVswXS5tYXggPT09IDE7XG4gIH1cblxuICBwcml2YXRlIGdldERpc3BsYXlOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIChcbiAgICAgICh0aGlzLnNlY3Rpb24ubW9kZWw/LnByb3BlcnRpZXMgJiYgdGhpcy5zZWN0aW9uLm1vZGVsLnByb3BlcnRpZXNbJ2Rpc3BsYXlOYW1lJ10pIHx8IHRoaXMuc2VjdGlvbi5tb2RlbD8udHlwZSB8fCAnJ1xuICAgICk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGRpdi1pbmxpbmVcIiBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAgPGRpdiBjbGFzcz1cImlucHV0LWZvcm0taW5wdXQgZGl2LWlubGluZVwiIFtjbGFzcy5pbnB1dC1mb3JtLWlucHV0LS1yZXF1aXJlZF09XCJzZWN0aW9uLnJlcXVpcmVkXCI+XG4gICAgPGxhYmVsPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlY3Rpb24ucmVxdWlyZWRcIj4gKiA8L25nLWNvbnRhaW5lcj5cblxuICAgICAge3sgc2VjdGlvbi5sYWJlbCB9fVxuICAgIDwvbGFiZWw+XG4gICAgPGRpdiBbbmdTd2l0Y2hdPVwic2VjdGlvbi5jb250cm9sVHlwZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sLXdyYXBwZXJcIj5cbiAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidEUk9QRE9XTidcIj5cbiAgICAgICAgPHNlbGVjdFxuICAgICAgICAgIFtpZF09XCJjb250cm9sTmFtZVwiXG4gICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sTmFtZVwiXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgIChjaGFuZ2UpPVwiaGFuZGxlQ2hhbmdlKClcIlxuICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cInNlY3Rpb24ucmVhZE9ubHkgPyB0cnVlIDogbnVsbFwiXG4gICAgICAgID5cbiAgICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgdmFsdWVPcHRpb24gb2YgZ2V0VmFsdWVPcHRpb25zKHNlY3Rpb24uc2VjdGlvblZhbHVlPy52YWx1ZU9wdGlvbnMpIHx8IFtdXCJcbiAgICAgICAgICAgIFtuZ1ZhbHVlXT1cInZhbHVlT3B0aW9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBnZXRWYWx1ZVRleHQoc2VjdGlvbi5zZWN0aW9uVmFsdWU/LnZhbHVlT3B0aW9ucywgdmFsdWVPcHRpb24pIH19XG4gICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidNVUxUSVNFTEVDVCdcIj5cbiAgICAgICAgPHZlbG8tbXVsdGlzZWxlY3RcbiAgICAgICAgICBbaWRdPVwiY29udHJvbE5hbWVcIlxuICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwiY29udHJvbE5hbWVcIlxuICAgICAgICAgIFtvcHRpb25zXT1cImdldFZhbHVlT3B0aW9ucyhzZWN0aW9uLnNlY3Rpb25WYWx1ZT8udmFsdWVPcHRpb25zKVwiXG4gICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwic2VjdGlvbi5yZWFkT25seSA/IHRydWUgOiBudWxsXCJcbiAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cImhhbmRsZU11bHRpcGxlRHJvcGRvd25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgID48L3ZlbG8tbXVsdGlzZWxlY3Q+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ1JBRElPJ1wiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nRm9yPVwibGV0IHZhbHVlT3B0aW9uIG9mIGdldFZhbHVlT3B0aW9ucyhzZWN0aW9uLnNlY3Rpb25WYWx1ZT8udmFsdWVPcHRpb25zKVwiXG4gICAgICAgICAgY2xhc3M9XCJyYWRpby1idXR0b25cIlxuICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cInNlY3Rpb24ucmVhZE9ubHkgPyB0cnVlIDogbnVsbFwiXG4gICAgICAgID5cbiAgICAgICAgICA8bGFiZWw+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgW2lkXT1cImNvbnRyb2xOYW1lXCJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sTmFtZVwiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZU9wdGlvblwiXG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwiaGFuZGxlQ2hhbmdlKClcIlxuICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJzZWN0aW9uLnJlYWRPbmx5ID8gdHJ1ZSA6IG51bGxcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaW5wdXQtaGVscGVyXCI+PC9pPlxuICAgICAgICAgICAge3sgZ2V0VmFsdWVUZXh0KHNlY3Rpb24uc2VjdGlvblZhbHVlPy52YWx1ZU9wdGlvbnMsIHZhbHVlT3B0aW9uKSB9fVxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidDSEVDS0JPWCdcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc011bHRpc2VsZWN0OyBlbHNlIG11bHRpc2VsZWN0XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrYm94LXNlbGVjdFwiIFthdHRyLmRpc2FibGVkXT1cInNlY3Rpb24ucmVhZE9ubHkgPyB0cnVlIDogbnVsbFwiPlxuICAgICAgICAgICAgPGxhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIFtpZF09XCJjb250cm9sTmFtZVwiXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sTmFtZVwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwic2VjdGlvbi5zZWN0aW9uVmFsdWU/LnZhbHVlID09PSAxXCJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImhhbmRsZUNoYW5nZSgpXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJzZWN0aW9uLnJlYWRPbmx5ID8gdHJ1ZSA6IG51bGxcIlxuICAgICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiaW5wdXQtaGVscGVyXCI+PC9pPlxuICAgICAgICAgICAgICAmbmJzcDtcbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbXVsdGlzZWxlY3Q+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHZhbHVlT3B0aW9uIG9mIGdldFZhbHVlT3B0aW9ucyhzZWN0aW9uLnNlY3Rpb25WYWx1ZT8udmFsdWVPcHRpb25zKVwiXG4gICAgICAgICAgICBjbGFzcz1cImNoZWNrYm94LXNlbGVjdFwiXG4gICAgICAgICAgICBbYXR0ci5kaXNhYmxlZF09XCJzZWN0aW9uLnJlYWRPbmx5ID8gdHJ1ZSA6IG51bGxcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxsYWJlbD5cbiAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICBbaWRdPVwiY29udHJvbE5hbWVcIlxuICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cInNlY3Rpb24uc2VjdGlvblZhbHVlPy52YWx1ZS5pbmNsdWRlcyh2YWx1ZU9wdGlvbilcIlxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiaGFuZGxlTXVsdGlzZWxlY3RDaGFuZ2UodmFsdWVPcHRpb24pXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwidmFsdWVPcHRpb25cIlxuICAgICAgICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cInNlY3Rpb24ucmVhZE9ubHkgPyB0cnVlIDogbnVsbFwiXG4gICAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpbnB1dC1oZWxwZXJcIj48L2k+XG4gICAgICAgICAgICAgIHt7IHZhbHVlT3B0aW9uIH19XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidEQVRFJ1wiPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgIFtpZF09XCJjb250cm9sTmFtZVwiXG4gICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sTmFtZVwiXG4gICAgICAgICAgW2F0dHIuZGlzYWJsZWRdPVwic2VjdGlvbi5yZWFkT25seSA/IHRydWUgOiBudWxsXCJcbiAgICAgICAgICAoYnNWYWx1ZUNoYW5nZSk9XCJoYW5kbGVDaGFuZ0RhdGUoJGV2ZW50KVwiXG4gICAgICAgICAgYnNEYXRlcGlja2VyXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgIFtpZF09XCJjb250cm9sTmFtZVwiXG4gICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJjb250cm9sTmFtZVwiXG4gICAgICAgICAgKGJsdXIpPVwiZm9ybS5jb250cm9sc1tjb250cm9sTmFtZV0uZGlydHkgJiYgaGFuZGxlQ2hhbmdlKClcIlxuICAgICAgICAgIFthdHRyLmRpc2FibGVkXT1cInNlY3Rpb24ucmVhZE9ubHkgPyB0cnVlIDogbnVsbFwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBBZGQgdmFsaWRhdGlvbiBtZXNzYWdlcyAtLT5cbiAgICAgIDwhLS0gPGRpdiB2YWxpZGF0aW9uLW1lc3NhZ2VzIFtmb3JtXT1cImZvcm1cIiBbY29udHJvbElkXT1cImNvbnRyb2xOYW1lXCIgW3Nob3dGb3JQcmlzdGluZV09XCJ0cnVlXCI+PC9kaXY+IC0tPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19