@veloceapps/sdk 12.0.0-18 → 12.0.0-19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (348) hide show
  1. package/cms/cms.actions.d.ts +154 -0
  2. package/cms/cms.default.d.ts +5 -0
  3. package/cms/cms.elements.d.ts +4 -0
  4. package/cms/cms.layouts.d.ts +4 -0
  5. package/cms/components/element-children/element-children.component.d.ts +22 -0
  6. package/cms/components/element-children/element-children.module.d.ts +11 -0
  7. package/cms/components/element-drop-handle/element-drop-handle.component.d.ts +12 -0
  8. package/cms/components/element-drop-handle/element-drop-handle.module.d.ts +9 -0
  9. package/cms/components/element-renderer/element-renderer.component.d.ts +29 -0
  10. package/cms/components/element-renderer/element-renderer.module.d.ts +7 -0
  11. package/cms/components/element-tools-panel/element-tools-panel.component.d.ts +14 -0
  12. package/cms/components/element.component.d.ts +17 -0
  13. package/cms/components/index.d.ts +1 -0
  14. package/cms/components/plugin.component.d.ts +15 -0
  15. package/cms/components/preview/index.d.ts +3 -0
  16. package/cms/components/preview/preview.component.d.ts +32 -0
  17. package/cms/components/preview/preview.module.d.ts +13 -0
  18. package/cms/components/preview/preview.types.d.ts +20 -0
  19. package/cms/decorators/element.decorator.d.ts +2 -0
  20. package/cms/decorators/index.d.ts +1 -0
  21. package/cms/definitions/index.d.ts +1 -0
  22. package/cms/definitions/ui-builder.definitions.d.ts +6 -0
  23. package/cms/directives/custom-template.directive.d.ts +17 -0
  24. package/cms/engine/models/entity.d.ts +11 -0
  25. package/cms/engine/models/plugin.d.ts +5 -0
  26. package/cms/index.d.ts +15 -921
  27. package/cms/injection-tokens.d.ts +9 -0
  28. package/cms/launcher.module.d.ts +12 -0
  29. package/cms/modules/federated/default-options.d.ts +4 -0
  30. package/cms/modules/federated/export.d.ts +1 -0
  31. package/cms/modules/federated/federated-host.directive.d.ts +8 -0
  32. package/cms/modules/federated/federated.component.d.ts +25 -0
  33. package/cms/modules/federated/federated.module.d.ts +10 -0
  34. package/cms/modules/federated/federated.types.d.ts +26 -0
  35. package/cms/modules/migrations/index.d.ts +2 -0
  36. package/cms/modules/migrations/migrations.d.ts +2 -0
  37. package/cms/modules/migrations/migrations.module.d.ts +6 -0
  38. package/cms/modules/migrations/services/migrations.service.d.ts +10 -0
  39. package/cms/modules/migrations/types/migrations.types.d.ts +2 -0
  40. package/cms/modules/runtime/index.d.ts +3 -0
  41. package/cms/modules/runtime/runtime.module.d.ts +8 -0
  42. package/cms/modules/runtime/services/compilation.service.d.ts +19 -0
  43. package/cms/modules/runtime/services/runtime-editor.service.d.ts +20 -0
  44. package/cms/modules/runtime/services/runtime.service.d.ts +33 -0
  45. package/cms/modules/runtime/tokens.d.ts +3 -0
  46. package/cms/modules/runtime/types/compilation.types.d.ts +8 -0
  47. package/cms/modules/runtime/types/runtime.actions.d.ts +12 -0
  48. package/cms/plugins/element-hover.plugin.d.ts +33 -0
  49. package/cms/plugins/io.plugin.d.ts +9 -0
  50. package/cms/plugins/page.plugin.d.ts +15 -0
  51. package/cms/plugins/region.plugin.d.ts +17 -0
  52. package/cms/plugins/script.plugin.d.ts +10 -0
  53. package/cms/services/element-context.service.d.ts +7 -0
  54. package/cms/services/index.d.ts +2 -0
  55. package/cms/services/io-provider.service.d.ts +15 -0
  56. package/cms/services/resources.service.d.ts +21 -0
  57. package/cms/services/templates.service.d.ts +14 -0
  58. package/cms/types/common.types.d.ts +130 -0
  59. package/cms/types/elements.types.d.ts +2 -0
  60. package/cms/types/index.d.ts +6 -0
  61. package/cms/types/layouts.types.d.ts +102 -0
  62. package/cms/types/pages.types.d.ts +1 -0
  63. package/cms/types/path.types.d.ts +11 -0
  64. package/cms/utils/element-metadata-worker.d.ts +11 -0
  65. package/cms/utils/element.utils.d.ts +20 -0
  66. package/cms/utils/elements-resolver.d.ts +28 -0
  67. package/cms/utils/encoding.utils.d.ts +2 -0
  68. package/cms/utils/index.d.ts +9 -0
  69. package/cms/utils/inject.d.ts +1 -0
  70. package/cms/utils/path.utils.d.ts +3 -0
  71. package/cms/utils/script.utils.d.ts +2 -0
  72. package/cms/utils/transpilation-worker.d.ts +13 -0
  73. package/cms/utils/ui-builder-layout.utils.d.ts +4 -0
  74. package/cms/utils/ui-definition.utils.d.ts +6 -0
  75. package/cms/vendor-map.d.ts +86 -0
  76. package/core/core.module.d.ts +10 -0
  77. package/core/directives/directives.module.d.ts +7 -0
  78. package/core/directives/index.d.ts +2 -0
  79. package/core/directives/primeng-calendar.directive.d.ts +14 -0
  80. package/core/index.d.ts +8 -527
  81. package/core/modules/configuration/configuration.module.d.ts +8 -0
  82. package/core/modules/configuration/index.d.ts +6 -0
  83. package/core/modules/configuration/services/configuration-runtime.service.d.ts +17 -0
  84. package/core/modules/configuration/services/configuration-state.service.d.ts +60 -0
  85. package/core/modules/configuration/services/configuration.service.d.ts +36 -0
  86. package/core/modules/configuration/services/guided-selling.service.d.ts +15 -0
  87. package/core/modules/configuration/services/test-mode-configuration.service.d.ts +26 -0
  88. package/core/modules/configuration/types/configuration-runtime.types.d.ts +3 -0
  89. package/core/modules/configuration/types/configuration.types.d.ts +20 -0
  90. package/core/modules/configuration/types/index.d.ts +2 -0
  91. package/core/modules/flow-configuration/flow-configuration.module.d.ts +7 -0
  92. package/core/modules/flow-configuration/index.d.ts +1 -0
  93. package/core/modules/flow-configuration/services/flow-configuration.service.d.ts +23 -0
  94. package/core/modules/index.d.ts +2 -0
  95. package/core/operators/filter-successful-execute.operator.d.ts +3 -0
  96. package/core/operators/index.d.ts +1 -0
  97. package/core/pipes/action-code.pipe.d.ts +8 -0
  98. package/core/pipes/date.pipe.d.ts +13 -0
  99. package/core/pipes/index.d.ts +5 -0
  100. package/core/pipes/number.pipe.d.ts +10 -0
  101. package/core/pipes/pipes.module.d.ts +10 -0
  102. package/core/pipes/price.pipe.d.ts +10 -0
  103. package/core/services/catalog-products.service.d.ts +11 -0
  104. package/core/services/flow-info.service.d.ts +44 -0
  105. package/core/services/flow-state-configuration.service.d.ts +25 -0
  106. package/core/services/flow-state.service.d.ts +70 -0
  107. package/core/services/index.d.ts +8 -0
  108. package/core/services/integration.state.d.ts +16 -0
  109. package/core/services/product-images.service.d.ts +12 -0
  110. package/core/services/runtime-settings.service.d.ts +24 -0
  111. package/core/services/sales-transaction.service.d.ts +27 -0
  112. package/core/types/flow-customization.types.d.ts +10 -0
  113. package/core/types/flow-state.types.d.ts +12 -0
  114. package/core/types/formatting-settings.types.d.ts +13 -0
  115. package/core/types/index.d.ts +5 -0
  116. package/core/types/integration.types.d.ts +10 -0
  117. package/core/types/pipe.types.d.ts +1 -0
  118. package/core/types/ui-definition.types.d.ts +1 -0
  119. package/core/utils/index.d.ts +4 -0
  120. package/core/utils/pcm.utils.d.ts +5 -0
  121. package/core/utils/transaction-item.utils.d.ts +10 -0
  122. package/core/utils/transaction-item.worker.d.ts +8 -0
  123. package/core/utils/ui-definition.utils.d.ts +2 -0
  124. package/esm2020/cms/cms.actions.mjs +151 -0
  125. package/esm2020/cms/cms.default.mjs +5 -0
  126. package/esm2020/cms/cms.elements.mjs +52 -0
  127. package/esm2020/cms/cms.layouts.mjs +239 -0
  128. package/esm2020/cms/components/element-children/element-children.component.mjs +41 -0
  129. package/esm2020/cms/components/element-children/element-children.module.mjs +21 -0
  130. package/esm2020/cms/components/element-drop-handle/element-drop-handle.component.mjs +28 -0
  131. package/esm2020/cms/components/element-drop-handle/element-drop-handle.module.mjs +19 -0
  132. package/esm2020/cms/components/element-renderer/element-renderer.component.mjs +117 -0
  133. package/esm2020/cms/components/element-renderer/element-renderer.module.mjs +16 -0
  134. package/esm2020/cms/components/element-tools-panel/element-tools-panel.component.mjs +35 -0
  135. package/esm2020/cms/components/element.component.mjs +45 -0
  136. package/esm2020/cms/components/index.mjs +2 -0
  137. package/esm2020/cms/components/plugin.component.mjs +17 -0
  138. package/esm2020/cms/components/preview/index.mjs +4 -0
  139. package/esm2020/cms/components/preview/preview.component.mjs +75 -0
  140. package/esm2020/cms/components/preview/preview.module.mjs +42 -0
  141. package/esm2020/cms/components/preview/preview.types.mjs +2 -0
  142. package/esm2020/cms/decorators/element.decorator.mjs +6 -0
  143. package/esm2020/cms/decorators/index.mjs +2 -0
  144. package/esm2020/cms/definitions/index.mjs +2 -0
  145. package/esm2020/cms/definitions/ui-builder.definitions.mjs +18 -0
  146. package/esm2020/cms/directives/custom-template.directive.mjs +38 -0
  147. package/esm2020/cms/engine/models/entity.mjs +17 -0
  148. package/esm2020/cms/engine/models/plugin.mjs +6 -0
  149. package/esm2020/cms/index.mjs +16 -0
  150. package/esm2020/cms/injection-tokens.mjs +7 -0
  151. package/esm2020/cms/launcher.module.mjs +24 -0
  152. package/esm2020/cms/modules/federated/default-options.mjs +5 -0
  153. package/esm2020/cms/modules/federated/export.mjs +2 -0
  154. package/esm2020/cms/modules/federated/federated-host.directive.mjs +16 -0
  155. package/esm2020/cms/modules/federated/federated.component.mjs +74 -0
  156. package/esm2020/cms/modules/federated/federated.module.mjs +20 -0
  157. package/esm2020/cms/modules/federated/federated.types.mjs +2 -0
  158. package/esm2020/cms/modules/migrations/index.mjs +3 -0
  159. package/esm2020/cms/modules/migrations/migrations.mjs +22 -0
  160. package/esm2020/cms/modules/migrations/migrations.module.mjs +15 -0
  161. package/esm2020/cms/modules/migrations/services/migrations.service.mjs +47 -0
  162. package/esm2020/cms/modules/migrations/types/migrations.types.mjs +2 -0
  163. package/esm2020/cms/modules/runtime/index.mjs +4 -0
  164. package/esm2020/cms/modules/runtime/runtime.module.mjs +32 -0
  165. package/esm2020/cms/modules/runtime/services/compilation.service.mjs +93 -0
  166. package/esm2020/cms/modules/runtime/services/runtime-editor.service.mjs +30 -0
  167. package/esm2020/cms/modules/runtime/services/runtime.service.mjs +117 -0
  168. package/esm2020/cms/modules/runtime/tokens.mjs +3 -0
  169. package/esm2020/cms/modules/runtime/types/compilation.types.mjs +2 -0
  170. package/esm2020/cms/modules/runtime/types/runtime.actions.mjs +2 -0
  171. package/esm2020/cms/plugins/element-hover.plugin.mjs +121 -0
  172. package/esm2020/cms/plugins/io.plugin.mjs +45 -0
  173. package/esm2020/cms/plugins/page.plugin.mjs +37 -0
  174. package/esm2020/cms/plugins/region.plugin.mjs +59 -0
  175. package/esm2020/cms/plugins/script.plugin.mjs +31 -0
  176. package/esm2020/cms/services/element-context.service.mjs +10 -0
  177. package/esm2020/cms/services/index.mjs +3 -0
  178. package/esm2020/cms/services/io-provider.service.mjs +53 -0
  179. package/esm2020/cms/services/resources.service.mjs +71 -0
  180. package/esm2020/cms/services/templates.service.mjs +32 -0
  181. package/esm2020/cms/types/common.types.mjs +2 -0
  182. package/esm2020/cms/types/elements.types.mjs +2 -0
  183. package/esm2020/cms/types/index.mjs +7 -0
  184. package/esm2020/cms/types/layouts.types.mjs +71 -0
  185. package/esm2020/cms/types/pages.types.mjs +2 -0
  186. package/esm2020/cms/types/path.types.mjs +2 -0
  187. package/esm2020/cms/utils/element-metadata-worker.mjs +31 -0
  188. package/esm2020/cms/utils/element.utils.mjs +182 -0
  189. package/esm2020/cms/utils/elements-resolver.mjs +206 -0
  190. package/esm2020/cms/utils/encoding.utils.mjs +29 -0
  191. package/esm2020/cms/utils/index.mjs +10 -0
  192. package/esm2020/cms/utils/inject.mjs +27 -0
  193. package/esm2020/cms/utils/path.utils.mjs +44 -0
  194. package/esm2020/cms/utils/script.utils.mjs +46 -0
  195. package/esm2020/cms/utils/transpilation-worker.mjs +52 -0
  196. package/esm2020/cms/utils/ui-builder-layout.utils.mjs +46 -0
  197. package/esm2020/cms/utils/ui-definition.utils.mjs +85 -0
  198. package/esm2020/cms/veloceapps-sdk-cms.mjs +5 -0
  199. package/esm2020/cms/vendor-map.mjs +83 -0
  200. package/esm2020/core/core.module.mjs +54 -0
  201. package/esm2020/core/directives/directives.module.mjs +16 -0
  202. package/esm2020/core/directives/index.mjs +3 -0
  203. package/esm2020/core/directives/primeng-calendar.directive.mjs +41 -0
  204. package/esm2020/core/index.mjs +9 -0
  205. package/esm2020/core/modules/configuration/configuration.module.mjs +34 -0
  206. package/esm2020/core/modules/configuration/index.mjs +7 -0
  207. package/esm2020/core/modules/configuration/services/configuration-runtime.service.mjs +29 -0
  208. package/esm2020/core/modules/configuration/services/configuration-state.service.mjs +381 -0
  209. package/esm2020/core/modules/configuration/services/configuration.service.mjs +159 -0
  210. package/esm2020/core/modules/configuration/services/guided-selling.service.mjs +62 -0
  211. package/esm2020/core/modules/configuration/services/test-mode-configuration.service.mjs +97 -0
  212. package/esm2020/core/modules/configuration/types/configuration-runtime.types.mjs +2 -0
  213. package/esm2020/core/modules/configuration/types/configuration.types.mjs +2 -0
  214. package/esm2020/core/modules/configuration/types/index.mjs +3 -0
  215. package/esm2020/core/modules/flow-configuration/flow-configuration.module.mjs +17 -0
  216. package/esm2020/core/modules/flow-configuration/index.mjs +2 -0
  217. package/esm2020/core/modules/flow-configuration/services/flow-configuration.service.mjs +80 -0
  218. package/esm2020/core/modules/index.mjs +3 -0
  219. package/esm2020/core/operators/filter-successful-execute.operator.mjs +5 -0
  220. package/esm2020/core/operators/index.mjs +2 -0
  221. package/esm2020/core/pipes/action-code.pipe.mjs +20 -0
  222. package/esm2020/core/pipes/date.pipe.mjs +44 -0
  223. package/esm2020/core/pipes/index.mjs +6 -0
  224. package/esm2020/core/pipes/number.pipe.mjs +27 -0
  225. package/esm2020/core/pipes/pipes.module.mjs +19 -0
  226. package/esm2020/core/pipes/price.pipe.mjs +30 -0
  227. package/esm2020/core/services/catalog-products.service.mjs +25 -0
  228. package/esm2020/core/services/flow-info.service.mjs +146 -0
  229. package/esm2020/core/services/flow-state-configuration.service.mjs +120 -0
  230. package/esm2020/core/services/flow-state.service.mjs +417 -0
  231. package/esm2020/core/services/index.mjs +9 -0
  232. package/esm2020/core/services/integration.state.mjs +36 -0
  233. package/esm2020/core/services/product-images.service.mjs +30 -0
  234. package/esm2020/core/services/runtime-settings.service.mjs +112 -0
  235. package/esm2020/core/services/sales-transaction.service.mjs +67 -0
  236. package/esm2020/core/types/flow-customization.types.mjs +3 -0
  237. package/esm2020/core/types/flow-state.types.mjs +2 -0
  238. package/esm2020/core/types/formatting-settings.types.mjs +3 -0
  239. package/esm2020/core/types/index.mjs +6 -0
  240. package/esm2020/core/types/integration.types.mjs +2 -0
  241. package/esm2020/core/types/pipe.types.mjs +2 -0
  242. package/esm2020/core/types/ui-definition.types.mjs +2 -0
  243. package/esm2020/core/utils/index.mjs +5 -0
  244. package/esm2020/core/utils/pcm.utils.mjs +15 -0
  245. package/esm2020/core/utils/transaction-item.utils.mjs +144 -0
  246. package/esm2020/core/utils/transaction-item.worker.mjs +16 -0
  247. package/esm2020/core/utils/ui-definition.utils.mjs +9 -0
  248. package/esm2020/core/veloceapps-sdk-core.mjs +5 -0
  249. package/esm2020/index.mjs +2 -0
  250. package/esm2020/src/components/dialog/dialog.component.mjs +36 -0
  251. package/esm2020/src/components/dialog/dialog.module.mjs +19 -0
  252. package/esm2020/src/components/dialog/dialog.types.mjs +2 -0
  253. package/esm2020/src/components/flow-header/flow-header.component.mjs +107 -0
  254. package/esm2020/src/components/flow-header/flow-header.module.mjs +19 -0
  255. package/esm2020/src/components/flow-header/index.mjs +2 -0
  256. package/esm2020/src/components/guided-selling/guided-selling.component.mjs +107 -0
  257. package/esm2020/src/components/guided-selling/guided-selling.module.mjs +19 -0
  258. package/esm2020/src/configure-primeng.mjs +33 -0
  259. package/esm2020/src/constants.mjs +2 -0
  260. package/esm2020/src/flow-routing.module.mjs +97 -0
  261. package/esm2020/src/flow.component.mjs +39 -0
  262. package/esm2020/src/flow.module.mjs +60 -0
  263. package/esm2020/src/guards/flow.guard.mjs +35 -0
  264. package/esm2020/src/guards/product-unload.guard.mjs +49 -0
  265. package/esm2020/src/guards/root.guard.mjs +46 -0
  266. package/esm2020/src/index.mjs +5 -0
  267. package/esm2020/src/pages/assets/assets.component.mjs +106 -0
  268. package/esm2020/src/pages/assets/assets.module.mjs +20 -0
  269. package/esm2020/src/pages/catalog/catalog.component.mjs +106 -0
  270. package/esm2020/src/pages/catalog/catalog.module.mjs +20 -0
  271. package/esm2020/src/pages/debug/debug.component.mjs +49 -0
  272. package/esm2020/src/pages/debug/debug.module.mjs +46 -0
  273. package/esm2020/src/pages/product/product.component.mjs +55 -0
  274. package/esm2020/src/pages/product/product.module.mjs +20 -0
  275. package/esm2020/src/pages/record-not-found/record-not-found.component.mjs +27 -0
  276. package/esm2020/src/pages/record-not-found/record-not-found.module.mjs +20 -0
  277. package/esm2020/src/pages/shopping-cart/shopping-cart.component.mjs +106 -0
  278. package/esm2020/src/pages/shopping-cart/shopping-cart.module.mjs +20 -0
  279. package/esm2020/src/resolvers/flow.resolver.mjs +50 -0
  280. package/esm2020/src/resolvers/pcm-model.resolver.mjs +12 -0
  281. package/esm2020/src/resolvers/sales-transaction.resolver.mjs +64 -0
  282. package/esm2020/src/resolvers/ui-definition.resolver.mjs +44 -0
  283. package/esm2020/src/services/flow-dialog.service.mjs +91 -0
  284. package/esm2020/src/services/flow-router.service.mjs +173 -0
  285. package/esm2020/src/services/flow.service.mjs +102 -0
  286. package/esm2020/src/services/guided-selling.service.mjs +34 -0
  287. package/esm2020/src/services/index.mjs +4 -0
  288. package/esm2020/src/types/index.mjs +2 -0
  289. package/esm2020/src/types/route.types.mjs +2 -0
  290. package/esm2020/veloceapps-sdk.mjs +5 -0
  291. package/fesm2015/veloceapps-sdk-cms.mjs +2514 -0
  292. package/fesm2015/veloceapps-sdk-cms.mjs.map +1 -0
  293. package/fesm2015/veloceapps-sdk-core.mjs +2084 -0
  294. package/fesm2015/veloceapps-sdk-core.mjs.map +1 -0
  295. package/fesm2015/veloceapps-sdk.mjs +1598 -0
  296. package/fesm2015/veloceapps-sdk.mjs.map +1 -0
  297. package/fesm2020/veloceapps-sdk-cms.mjs +2613 -0
  298. package/fesm2020/veloceapps-sdk-cms.mjs.map +1 -0
  299. package/{fesm2022 → fesm2020}/veloceapps-sdk-core.mjs +146 -164
  300. package/fesm2020/veloceapps-sdk-core.mjs.map +1 -0
  301. package/{fesm2022 → fesm2020}/veloceapps-sdk.mjs +192 -186
  302. package/fesm2020/veloceapps-sdk.mjs.map +1 -0
  303. package/index.d.ts +1 -330
  304. package/package.json +34 -17
  305. package/src/components/dialog/dialog.component.d.ts +13 -0
  306. package/src/components/dialog/dialog.module.d.ts +9 -0
  307. package/src/components/dialog/dialog.types.d.ts +7 -0
  308. package/src/components/flow-header/flow-header.component.d.ts +25 -0
  309. package/src/components/flow-header/flow-header.module.d.ts +9 -0
  310. package/src/components/flow-header/index.d.ts +1 -0
  311. package/src/components/guided-selling/guided-selling.component.d.ts +25 -0
  312. package/src/components/guided-selling/guided-selling.module.d.ts +9 -0
  313. package/src/configure-primeng.d.ts +1 -0
  314. package/src/constants.d.ts +1 -0
  315. package/src/flow-routing.module.d.ts +11 -0
  316. package/src/flow.component.d.ts +21 -0
  317. package/src/flow.module.d.ts +16 -0
  318. package/src/guards/flow.guard.d.ts +2 -0
  319. package/src/guards/product-unload.guard.d.ts +16 -0
  320. package/src/guards/root.guard.d.ts +14 -0
  321. package/src/index.d.ts +4 -0
  322. package/src/pages/assets/assets.component.d.ts +31 -0
  323. package/src/pages/assets/assets.module.d.ts +10 -0
  324. package/src/pages/catalog/catalog.component.d.ts +31 -0
  325. package/src/pages/catalog/catalog.module.d.ts +10 -0
  326. package/src/pages/debug/debug.component.d.ts +21 -0
  327. package/src/pages/debug/debug.module.d.ts +14 -0
  328. package/src/pages/product/product.component.d.ts +24 -0
  329. package/src/pages/product/product.module.d.ts +10 -0
  330. package/src/pages/record-not-found/record-not-found.component.d.ts +12 -0
  331. package/src/pages/record-not-found/record-not-found.module.d.ts +9 -0
  332. package/src/pages/shopping-cart/shopping-cart.component.d.ts +31 -0
  333. package/src/pages/shopping-cart/shopping-cart.module.d.ts +10 -0
  334. package/src/resolvers/flow.resolver.d.ts +14 -0
  335. package/src/resolvers/pcm-model.resolver.d.ts +3 -0
  336. package/src/resolvers/sales-transaction.resolver.d.ts +18 -0
  337. package/src/resolvers/ui-definition.resolver.d.ts +3 -0
  338. package/src/services/flow-dialog.service.d.ts +23 -0
  339. package/src/services/flow-router.service.d.ts +42 -0
  340. package/src/services/flow.service.d.ts +21 -0
  341. package/src/services/guided-selling.service.d.ts +13 -0
  342. package/src/services/index.d.ts +3 -0
  343. package/src/types/index.d.ts +1 -0
  344. package/src/types/route.types.d.ts +4 -0
  345. package/fesm2022/veloceapps-sdk-cms.mjs +0 -2611
  346. package/fesm2022/veloceapps-sdk-cms.mjs.map +0 -1
  347. package/fesm2022/veloceapps-sdk-core.mjs.map +0 -1
  348. package/fesm2022/veloceapps-sdk.mjs.map +0 -1
@@ -0,0 +1,15 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { MigrationsService } from './services/migrations.service';
3
+ import * as i0 from "@angular/core";
4
+ export class MigrationsModule {
5
+ }
6
+ MigrationsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MigrationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7
+ MigrationsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: MigrationsModule });
8
+ MigrationsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MigrationsModule, providers: [MigrationsService] });
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MigrationsModule, decorators: [{
10
+ type: NgModule,
11
+ args: [{
12
+ providers: [MigrationsService],
13
+ }]
14
+ }] });
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0aW9ucy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jbXMvbW9kdWxlcy9taWdyYXRpb25zL21pZ3JhdGlvbnMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7O0FBS2xFLE1BQU0sT0FBTyxnQkFBZ0I7OzZHQUFoQixnQkFBZ0I7OEdBQWhCLGdCQUFnQjs4R0FBaEIsZ0JBQWdCLGFBRmhCLENBQUMsaUJBQWlCLENBQUM7MkZBRW5CLGdCQUFnQjtrQkFINUIsUUFBUTttQkFBQztvQkFDUixTQUFTLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztpQkFDL0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWlncmF0aW9uc1NlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL21pZ3JhdGlvbnMuc2VydmljZSc7XG5cbkBOZ01vZHVsZSh7XG4gIHByb3ZpZGVyczogW01pZ3JhdGlvbnNTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgTWlncmF0aW9uc01vZHVsZSB7fVxuIl19
@@ -0,0 +1,47 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { ToastService, ToastType } from '@veloceapps/components';
3
+ import { UI_DEFINITION_VERSION } from '@veloceapps/sdk/core';
4
+ import { cloneDeep } from 'lodash';
5
+ import { migrations } from '../migrations';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@veloceapps/components";
8
+ export class MigrationsService {
9
+ constructor(toastService) {
10
+ this.toastService = toastService;
11
+ }
12
+ migrateUIDefinition(uiDef) {
13
+ const currentVersion = uiDef.version;
14
+ const targetVersion = UI_DEFINITION_VERSION;
15
+ const migrateVersions = Object.keys(migrations)
16
+ .reduce((acc, version) => {
17
+ const v = Number(version);
18
+ if (v > currentVersion && v <= targetVersion) {
19
+ acc.push(v);
20
+ }
21
+ return acc;
22
+ }, [])
23
+ .sort();
24
+ try {
25
+ let result = cloneDeep(uiDef);
26
+ for (const version of migrateVersions) {
27
+ const migration = migrations[version];
28
+ if (!migration) {
29
+ throw `V=${version} migration strategy is not defined`;
30
+ }
31
+ result = migration(result);
32
+ }
33
+ return result;
34
+ }
35
+ catch (e) {
36
+ this.toastService.add({ summary: String(e), severity: ToastType.error });
37
+ return;
38
+ }
39
+ }
40
+ }
41
+ MigrationsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MigrationsService, deps: [{ token: i1.ToastService }], target: i0.ɵɵFactoryTarget.Injectable });
42
+ MigrationsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MigrationsService, providedIn: 'root' });
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MigrationsService, decorators: [{
44
+ type: Injectable,
45
+ args: [{ providedIn: 'root' }]
46
+ }], ctorParameters: function () { return [{ type: i1.ToastService }]; } });
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0aW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY21zL21vZHVsZXMvbWlncmF0aW9ucy9zZXJ2aWNlcy9taWdyYXRpb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRWpFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDbkMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBRzNDLE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsWUFBb0IsWUFBMEI7UUFBMUIsaUJBQVksR0FBWixZQUFZLENBQWM7SUFBRyxDQUFDO0lBRTNDLG1CQUFtQixDQUFDLEtBQW1CO1FBQzVDLE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDckMsTUFBTSxhQUFhLEdBQUcscUJBQXFCLENBQUM7UUFFNUMsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7YUFDNUMsTUFBTSxDQUFDLENBQUMsR0FBYSxFQUFFLE9BQU8sRUFBRSxFQUFFO1lBQ2pDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsR0FBRyxjQUFjLElBQUksQ0FBQyxJQUFJLGFBQWEsRUFBRTtnQkFDNUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNiO1lBRUQsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLEVBQUUsRUFBRSxDQUFDO2FBQ0wsSUFBSSxFQUFFLENBQUM7UUFFVixJQUFJO1lBQ0YsSUFBSSxNQUFNLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRTlCLEtBQUssTUFBTSxPQUFPLElBQUksZUFBZSxFQUFFO2dCQUNyQyxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxTQUFTLEVBQUU7b0JBQ2QsTUFBTSxLQUFLLE9BQU8sb0NBQW9DLENBQUM7aUJBQ3hEO2dCQUVELE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDNUI7WUFFRCxPQUFPLE1BQU0sQ0FBQztTQUNmO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQ3pFLE9BQU87U0FDUjtJQUNILENBQUM7OzhHQW5DVSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQURKLE1BQU07MkZBQ25CLGlCQUFpQjtrQkFEN0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UsIFRvYXN0VHlwZSB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvbXBvbmVudHMnO1xuaW1wb3J0IHsgVUlEZWZpbml0aW9uIH0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5pbXBvcnQgeyBVSV9ERUZJTklUSU9OX1ZFUlNJT04gfSBmcm9tICdAdmVsb2NlYXBwcy9zZGsvY29yZSc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgbWlncmF0aW9ucyB9IGZyb20gJy4uL21pZ3JhdGlvbnMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE1pZ3JhdGlvbnNTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSkge31cblxuICBwdWJsaWMgbWlncmF0ZVVJRGVmaW5pdGlvbih1aURlZjogVUlEZWZpbml0aW9uKTogVUlEZWZpbml0aW9uIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBjdXJyZW50VmVyc2lvbiA9IHVpRGVmLnZlcnNpb247XG4gICAgY29uc3QgdGFyZ2V0VmVyc2lvbiA9IFVJX0RFRklOSVRJT05fVkVSU0lPTjtcblxuICAgIGNvbnN0IG1pZ3JhdGVWZXJzaW9ucyA9IE9iamVjdC5rZXlzKG1pZ3JhdGlvbnMpXG4gICAgICAucmVkdWNlKChhY2M6IG51bWJlcltdLCB2ZXJzaW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHYgPSBOdW1iZXIodmVyc2lvbik7XG4gICAgICAgIGlmICh2ID4gY3VycmVudFZlcnNpb24gJiYgdiA8PSB0YXJnZXRWZXJzaW9uKSB7XG4gICAgICAgICAgYWNjLnB1c2godik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSwgW10pXG4gICAgICAuc29ydCgpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGxldCByZXN1bHQgPSBjbG9uZURlZXAodWlEZWYpO1xuXG4gICAgICBmb3IgKGNvbnN0IHZlcnNpb24gb2YgbWlncmF0ZVZlcnNpb25zKSB7XG4gICAgICAgIGNvbnN0IG1pZ3JhdGlvbiA9IG1pZ3JhdGlvbnNbdmVyc2lvbl07XG4gICAgICAgIGlmICghbWlncmF0aW9uKSB7XG4gICAgICAgICAgdGhyb3cgYFY9JHt2ZXJzaW9ufSBtaWdyYXRpb24gc3RyYXRlZ3kgaXMgbm90IGRlZmluZWRgO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzdWx0ID0gbWlncmF0aW9uKHJlc3VsdCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy50b2FzdFNlcnZpY2UuYWRkKHsgc3VtbWFyeTogU3RyaW5nKGUpLCBzZXZlcml0eTogVG9hc3RUeXBlLmVycm9yIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0aW9ucy50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2Ntcy9tb2R1bGVzL21pZ3JhdGlvbnMvdHlwZXMvbWlncmF0aW9ucy50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVUlEZWZpbml0aW9uIH0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5cbmV4cG9ydCB0eXBlIFVJRGVmaW5pdGlvbk1pZ3JhdGlvbkZuID0gKHVpRGVmOiBVSURlZmluaXRpb24pID0+IFVJRGVmaW5pdGlvbjtcbiJdfQ==
@@ -0,0 +1,4 @@
1
+ export * from './runtime.module';
2
+ export * from './services/runtime-editor.service';
3
+ export * from './services/runtime.service';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jbXMvbW9kdWxlcy9ydW50aW1lL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLDRCQUE0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9ydW50aW1lLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL3J1bnRpbWUtZWRpdG9yLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcy9ydW50aW1lLnNlcnZpY2UnO1xuIl19
@@ -0,0 +1,32 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { CoreModule } from '@veloceapps/core';
4
+ import { DialogService } from 'primeng/dynamicdialog';
5
+ import { CompilationService } from './services/compilation.service';
6
+ import { RuntimeEditorService } from './services/runtime-editor.service';
7
+ import { RuntimeService } from './services/runtime.service';
8
+ import { CMS_COMPILATION_SERVICE } from './tokens';
9
+ import * as i0 from "@angular/core";
10
+ export class RuntimeModule {
11
+ }
12
+ RuntimeModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RuntimeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
13
+ RuntimeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: RuntimeModule, imports: [CommonModule, CoreModule] });
14
+ RuntimeModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RuntimeModule, providers: [
15
+ DialogService,
16
+ RuntimeService,
17
+ RuntimeEditorService,
18
+ { provide: CMS_COMPILATION_SERVICE, useClass: CompilationService },
19
+ ], imports: [CommonModule, CoreModule] });
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RuntimeModule, decorators: [{
21
+ type: NgModule,
22
+ args: [{
23
+ imports: [CommonModule, CoreModule],
24
+ providers: [
25
+ DialogService,
26
+ RuntimeService,
27
+ RuntimeEditorService,
28
+ { provide: CMS_COMPILATION_SERVICE, useClass: CompilationService },
29
+ ],
30
+ }]
31
+ }] });
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jbXMvbW9kdWxlcy9ydW50aW1lL3J1bnRpbWUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7QUFXbkQsTUFBTSxPQUFPLGFBQWE7OzBHQUFiLGFBQWE7MkdBQWIsYUFBYSxZQVJkLFlBQVksRUFBRSxVQUFVOzJHQVF2QixhQUFhLGFBUGI7UUFDVCxhQUFhO1FBQ2IsY0FBYztRQUNkLG9CQUFvQjtRQUNwQixFQUFFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxRQUFRLEVBQUUsa0JBQWtCLEVBQUU7S0FDbkUsWUFOUyxZQUFZLEVBQUUsVUFBVTsyRkFRdkIsYUFBYTtrQkFUekIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDO29CQUNuQyxTQUFTLEVBQUU7d0JBQ1QsYUFBYTt3QkFDYixjQUFjO3dCQUNkLG9CQUFvQjt3QkFDcEIsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFO3FCQUNuRTtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29yZU1vZHVsZSB9IGZyb20gJ0B2ZWxvY2VhcHBzL2NvcmUnO1xuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XG5pbXBvcnQgeyBDb21waWxhdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2NvbXBpbGF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgUnVudGltZUVkaXRvclNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3J1bnRpbWUtZWRpdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgUnVudGltZVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL3J1bnRpbWUuc2VydmljZSc7XG5pbXBvcnQgeyBDTVNfQ09NUElMQVRJT05fU0VSVklDRSB9IGZyb20gJy4vdG9rZW5zJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQ29yZU1vZHVsZV0sXG4gIHByb3ZpZGVyczogW1xuICAgIERpYWxvZ1NlcnZpY2UsXG4gICAgUnVudGltZVNlcnZpY2UsXG4gICAgUnVudGltZUVkaXRvclNlcnZpY2UsXG4gICAgeyBwcm92aWRlOiBDTVNfQ09NUElMQVRJT05fU0VSVklDRSwgdXNlQ2xhc3M6IENvbXBpbGF0aW9uU2VydmljZSB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBSdW50aW1lTW9kdWxlIHt9XG4iXX0=
@@ -0,0 +1,93 @@
1
+ import { __decorate } from "tslib";
2
+ import { DragDropModule } from '@angular/cdk/drag-drop';
3
+ import { ScrollingModule } from '@angular/cdk/scrolling';
4
+ import { CommonModule } from '@angular/common';
5
+ import { createNgModule, Injectable, Injector, NgModule } from '@angular/core';
6
+ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
7
+ import { ErrorTooltipModule, HiddenTextTooltipModule, LetDirectiveModule } from '@veloceapps/components';
8
+ import { SdkPipesModule } from '@veloceapps/sdk/core';
9
+ import { DndModule } from 'ngx-drag-drop';
10
+ import { combineLatest, map, of, switchMap } from 'rxjs';
11
+ import { ElementChildrenModule } from '../../../components/element-children/element-children.module';
12
+ import { ElementDropHandleModule } from '../../../components/element-drop-handle/element-drop-handle.module';
13
+ import { ElementRendererModule } from '../../../components/element-renderer/element-renderer.module';
14
+ import { CustomTemplateDirectiveModule } from '../../../directives/custom-template.directive';
15
+ import { ElementMetadataWorker, ElementsResolver, TranspilationWorker } from '../../../utils';
16
+ import { FederatedModule } from '../../federated/federated.module';
17
+ import * as i0 from "@angular/core";
18
+ export class CompilationService {
19
+ constructor(injector) {
20
+ this.injector = injector;
21
+ }
22
+ compileUIDefinition$(uiDefinition, config) {
23
+ return of([]).pipe(map(() => {
24
+ const { children, pages, components, ...uiDefinitionMeta } = uiDefinition;
25
+ this.uiDefinitionMeta = uiDefinitionMeta;
26
+ const elements = [...(children ?? []), ...(pages ?? [])];
27
+ const sharedElements = components ?? [];
28
+ return [elements, sharedElements];
29
+ }), switchMap(elementsChunks => combineLatest(elementsChunks.map(chunk => new ElementMetadataWorker(chunk).get$()))), switchMap(dataChunks => combineLatest(dataChunks.map(chunk => new TranspilationWorker(chunk).get$()))), map(([metadata, sharedMetadata]) => {
30
+ this.elementsResolver = new ElementsResolver(uiDefinition, metadata ?? [], sharedMetadata, config);
31
+ const componentTypes = this.elementsResolver.getNgComponents();
32
+ const module = this.getModule(componentTypes);
33
+ return {
34
+ moduleRef: createNgModule(module, this.injector),
35
+ elements: this.elementsResolver?.elements ?? [],
36
+ componentTypes,
37
+ };
38
+ }));
39
+ }
40
+ compileElement$(element) {
41
+ if (!this.uiDefinitionMeta) {
42
+ throw 'No UI Definition context';
43
+ }
44
+ return of(this.uiDefinitionMeta).pipe(map(uiDefinition => {
45
+ const elementsResolver = this.elementsResolver ?? new ElementsResolver(uiDefinition, []);
46
+ elementsResolver.addElement(element);
47
+ const componentTypes = elementsResolver.getNgComponents();
48
+ const module = this.getModule(componentTypes);
49
+ return {
50
+ moduleRef: createNgModule(module, this.injector),
51
+ elements: this.elementsResolver?.elements ?? [],
52
+ componentTypes,
53
+ };
54
+ }));
55
+ }
56
+ clear() {
57
+ this.uiDefinitionMeta = undefined;
58
+ }
59
+ getModule(components) {
60
+ let DynamicModule = class DynamicModule {
61
+ };
62
+ DynamicModule = __decorate([
63
+ NgModule({
64
+ imports: [
65
+ CommonModule,
66
+ FormsModule,
67
+ ReactiveFormsModule,
68
+ DragDropModule,
69
+ DndModule,
70
+ ScrollingModule,
71
+ ElementChildrenModule,
72
+ ElementRendererModule,
73
+ ElementDropHandleModule,
74
+ CustomTemplateDirectiveModule,
75
+ FederatedModule,
76
+ SdkPipesModule,
77
+ LetDirectiveModule,
78
+ HiddenTextTooltipModule,
79
+ ErrorTooltipModule,
80
+ ],
81
+ declarations: Object.values(components),
82
+ jit: true,
83
+ })
84
+ ], DynamicModule);
85
+ return DynamicModule;
86
+ }
87
+ }
88
+ CompilationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CompilationService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
89
+ CompilationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CompilationService });
90
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CompilationService, decorators: [{
91
+ type: Injectable
92
+ }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2Ntcy9tb2R1bGVzL3J1bnRpbWUvc2VydmljZXMvY29tcGlsYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBUSxNQUFNLGVBQWUsQ0FBQztBQUNyRixPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHVCQUF1QixFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFekcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUNyRyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUM3RyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUVyRyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUk5RixPQUFPLEVBQUUscUJBQXFCLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxn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QUFJLEVBQUU7Z0JBQy9DLGNBQWM7YUFDZixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztJQUNwQyxDQUFDO0lBRU8sU0FBUyxDQUFDLFVBQXdDO1FBc0J4RCxJQUFNLGFBQWEsR0FBbkIsTUFBTSxhQUFhO1NBQUcsQ0FBQTtRQUFoQixhQUFhO1lBckJsQixRQUFRLENBQUM7Z0JBQ1IsT0FBTyxFQUFFO29CQUNQLFlBQVk7b0JBQ1osV0FBVztvQkFDWCxtQkFBbUI7b0JBQ25CLGNBQWM7b0JBQ2QsU0FBUztvQkFDVCxlQUFlO29CQUNmLHFCQUFxQjtvQkFDckIscUJBQXFCO29CQUNyQix1QkFBdUI7b0JBQ3ZCLDZCQUE2QjtvQkFDN0IsZUFBZTtvQkFDZixjQUFjO29CQUNkLGtCQUFrQjtvQkFDbEIsdUJBQXVCO29CQUN2QixrQkFBa0I7aUJBQ25CO2dCQUNELFlBQVksRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQztnQkFDdkMsR0FBRyxFQUFFLElBQUk7YUFDVixDQUFDO1dBQ0ksYUFBYSxDQUFHO1FBRXRCLE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7OytHQWxGVSxrQkFBa0I7bUhBQWxCLGtCQUFrQjsyRkFBbEIsa0JBQWtCO2tCQUQ5QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHJhZ0Ryb3BNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IFNjcm9sbGluZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGNyZWF0ZU5nTW9kdWxlLCBJbmplY3RhYmxlLCBJbmplY3RvciwgTmdNb2R1bGUsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRXJyb3JUb29sdGlwTW9kdWxlLCBIaWRkZW5UZXh0VG9vbHRpcE1vZHVsZSwgTGV0RGlyZWN0aXZlTW9kdWxlIH0gZnJvbSAnQHZlbG9jZWFwcHMvY29tcG9uZW50cyc7XG5pbXBvcnQgeyBVSURlZmluaXRpb24sIFVJRGVmaW5pdGlvbk1ldGFkYXRhIH0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5pbXBvcnQgeyBTZGtQaXBlc01vZHVsZSB9IGZyb20gJ0B2ZWxvY2VhcHBzL3Nkay9jb3JlJztcbmltcG9ydCB7IERuZE1vZHVsZSB9IGZyb20gJ25neC1kcmFnLWRyb3AnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgbWFwLCBPYnNlcnZhYmxlLCBvZiwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFbGVtZW50Q2hpbGRyZW5Nb2R1bGUgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2VsZW1lbnQtY2hpbGRyZW4vZWxlbWVudC1jaGlsZHJlbi5tb2R1bGUnO1xuaW1wb3J0IHsgRWxlbWVudERyb3BIYW5kbGVNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL2VsZW1lbnQtZHJvcC1oYW5kbGUvZWxlbWVudC1kcm9wLWhhbmRsZS5tb2R1bGUnO1xuaW1wb3J0IHsgRWxlbWVudFJlbmRlcmVyTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9lbGVtZW50LXJlbmRlcmVyL2VsZW1lbnQtcmVuZGVyZXIubW9kdWxlJztcbmltcG9ydCB7IENNU1ByZXZpZXdDb25maWcgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL3ByZXZpZXcnO1xuaW1wb3J0IHsgQ3VzdG9tVGVtcGxhdGVEaXJlY3RpdmVNb2R1bGUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmVzL2N1c3RvbS10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRW50aXR5IH0gZnJvbSAnLi4vLi4vLi4vZW5naW5lL21vZGVscy9lbnRpdHknO1xuaW1wb3J0IHsgQ29tcGlsYXRpb25SZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9tb2R1bGVzL3J1bnRpbWUvdHlwZXMvY29tcGlsYXRpb24udHlwZXMnO1xuaW1wb3J0IHsgRWxlbWVudE1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvY29tbW9uLnR5cGVzJztcbmltcG9ydCB7IEVsZW1lbnRNZXRhZGF0YVdvcmtlciwgRWxlbWVudHNSZXNvbHZlciwgVHJhbnNwaWxhdGlvbldvcmtlciB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IEZlZGVyYXRlZE1vZHVsZSB9IGZyb20gJy4uLy4uL2ZlZGVyYXRlZC9mZWRlcmF0ZWQubW9kdWxlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbXBpbGF0aW9uU2VydmljZSB7XG4gIHByaXZhdGUgdWlEZWZpbml0aW9uTWV0YT86IFVJRGVmaW5pdGlvbk1ldGFkYXRhO1xuICBwcml2YXRlIGVsZW1lbnRzUmVzb2x2ZXI/OiBFbGVtZW50c1Jlc29sdmVyO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7fVxuXG4gIHB1YmxpYyBjb21waWxlVUlEZWZpbml0aW9uJCh1aURlZmluaXRpb246IFVJRGVmaW5pdGlvbiwgY29uZmlnPzogQ01TUHJldmlld0NvbmZpZyk6IE9ic2VydmFibGU8Q29tcGlsYXRpb25SZXN1bHQ+IHtcbiAgICByZXR1cm4gb2YoW10pLnBpcGUoXG4gICAgICBtYXAoKCkgPT4ge1xuICAgICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlcywgY29tcG9uZW50cywgLi4udWlEZWZpbml0aW9uTWV0YSB9ID0gdWlEZWZpbml0aW9uO1xuICAgICAgICB0aGlzLnVpRGVmaW5pdGlvbk1ldGEgPSB1aURlZmluaXRpb25NZXRhO1xuXG4gICAgICAgIGNvbnN0IGVsZW1lbnRzID0gWy4uLihjaGlsZHJlbiA/PyBbXSksIC4uLihwYWdlcyA/PyBbXSldO1xuICAgICAgICBjb25zdCBzaGFyZWRFbGVtZW50cyA9IGNvbXBvbmVudHMgPz8gW107XG4gICAgICAgIHJldHVybiBbZWxlbWVudHMsIHNoYXJlZEVsZW1lbnRzXTtcbiAgICAgIH0pLFxuICAgICAgc3dpdGNoTWFwKGVsZW1lbnRzQ2h1bmtzID0+IGNvbWJpbmVMYXRlc3QoZWxlbWVudHNDaHVua3MubWFwKGNodW5rID0+IG5ldyBFbGVtZW50TWV0YWRhdGFXb3JrZXIoY2h1bmspLmdldCQoKSkpKSxcbiAgICAgIHN3aXRjaE1hcChkYXRhQ2h1bmtzID0+IGNvbWJpbmVMYXRlc3QoZGF0YUNodW5rcy5tYXAoY2h1bmsgPT4gbmV3IFRyYW5zcGlsYXRpb25Xb3JrZXIoY2h1bmspLmdldCQoKSkpKSxcbiAgICAgIG1hcCgoW21ldGFkYXRhLCBzaGFyZWRNZXRhZGF0YV0pID0+IHtcbiAgICAgICAgdGhpcy5lbGVtZW50c1Jlc29sdmVyID0gbmV3IEVsZW1lbnRzUmVzb2x2ZXIodWlEZWZpbml0aW9uLCBtZXRhZGF0YSA/PyBbXSwgc2hhcmVkTWV0YWRhdGEsIGNvbmZpZyk7XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudFR5cGVzID0gdGhpcy5lbGVtZW50c1Jlc29sdmVyLmdldE5nQ29tcG9uZW50cygpO1xuICAgICAgICBjb25zdCBtb2R1bGUgPSB0aGlzLmdldE1vZHVsZShjb21wb25lbnRUeXBlcyk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtb2R1bGVSZWY6IGNyZWF0ZU5nTW9kdWxlKG1vZHVsZSwgdGhpcy5pbmplY3RvciksXG4gICAgICAgICAgZWxlbWVudHM6IHRoaXMuZWxlbWVudHNSZXNvbHZlcj8uZWxlbWVudHMgPz8gW10sXG4gICAgICAgICAgY29tcG9uZW50VHlwZXMsXG4gICAgICAgIH07XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGNvbXBpbGVFbGVtZW50JChlbGVtZW50OiBFbGVtZW50TWV0YWRhdGEpOiBPYnNlcnZhYmxlPENvbXBpbGF0aW9uUmVzdWx0PiB7XG4gICAgaWYgKCF0aGlzLnVpRGVmaW5pdGlvbk1ldGEpIHtcbiAgICAgIHRocm93ICdObyBVSSBEZWZpbml0aW9uIGNvbnRleHQnO1xuICAgIH1cblxuICAgIHJldHVybiBvZih0aGlzLnVpRGVmaW5pdGlvbk1ldGEpLnBpcGUoXG4gICAgICBtYXAodWlEZWZpbml0aW9uID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudHNSZXNvbHZlciA9IHRoaXMuZWxlbWVudHNSZXNvbHZlciA/PyBuZXcgRWxlbWVudHNSZXNvbHZlcih1aURlZmluaXRpb24sIFtdKTtcbiAgICAgICAgZWxlbWVudHNSZXNvbHZlci5hZGRFbGVtZW50KGVsZW1lbnQpO1xuICAgICAgICBjb25zdCBjb21wb25lbnRUeXBlcyA9IGVsZW1lbnRzUmVzb2x2ZXIuZ2V0TmdDb21wb25lbnRzKCk7XG4gICAgICAgIGNvbnN0IG1vZHVsZSA9IHRoaXMuZ2V0TW9kdWxlKGNvbXBvbmVudFR5cGVzKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG1vZHVsZVJlZjogY3JlYXRlTmdNb2R1bGUobW9kdWxlLCB0aGlzLmluamVjdG9yKSxcbiAgICAgICAgICBlbGVtZW50czogdGhpcy5lbGVtZW50c1Jlc29sdmVyPy5lbGVtZW50cyA/PyBbXSxcbiAgICAgICAgICBjb21wb25lbnRUeXBlcyxcbiAgICAgICAgfTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy51aURlZmluaXRpb25NZXRhID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNb2R1bGUoY29tcG9uZW50czogUmVjb3JkPHN0cmluZywgVHlwZTxFbnRpdHk+Pik6IFR5cGU8TmdNb2R1bGU+IHtcbiAgICBATmdNb2R1bGUoe1xuICAgICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBEcmFnRHJvcE1vZHVsZSxcbiAgICAgICAgRG5kTW9kdWxlLFxuICAgICAgICBTY3JvbGxpbmdNb2R1bGUsXG4gICAgICAgIEVsZW1lbnRDaGlsZHJlbk1vZHVsZSxcbiAgICAgICAgRWxlbWVudFJlbmRlcmVyTW9kdWxlLFxuICAgICAgICBFbGVtZW50RHJvcEhhbmRsZU1vZHVsZSxcbiAgICAgICAgQ3VzdG9tVGVtcGxhdGVEaXJlY3RpdmVNb2R1bGUsXG4gICAgICAgIEZlZGVyYXRlZE1vZHVsZSxcbiAgICAgICAgU2RrUGlwZXNNb2R1bGUsXG4gICAgICAgIExldERpcmVjdGl2ZU1vZHVsZSxcbiAgICAgICAgSGlkZGVuVGV4dFRvb2x0aXBNb2R1bGUsXG4gICAgICAgIEVycm9yVG9vbHRpcE1vZHVsZSxcbiAgICAgIF0sXG4gICAgICBkZWNsYXJhdGlvbnM6IE9iamVjdC52YWx1ZXMoY29tcG9uZW50cyksXG4gICAgICBqaXQ6IHRydWUsXG4gICAgfSlcbiAgICBjbGFzcyBEeW5hbWljTW9kdWxlIHt9XG5cbiAgICByZXR1cm4gRHluYW1pY01vZHVsZTtcbiAgfVxufVxuIl19
@@ -0,0 +1,30 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { BehaviorSubject, ReplaySubject } from 'rxjs';
3
+ import { RuntimeService } from './runtime.service';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "./runtime.service";
6
+ export class RuntimeEditorService {
7
+ constructor(runtimeService) {
8
+ this.runtimeService = runtimeService;
9
+ this.editorModeSubj$ = new BehaviorSubject(false);
10
+ this.onElementDropped$ = new ReplaySubject();
11
+ this.onElementDeleted$ = new ReplaySubject();
12
+ this.onElementSettingsToggled$ = new ReplaySubject();
13
+ this.dragMode$ = new BehaviorSubject(false);
14
+ this.selectedElementPath$ = new BehaviorSubject(null);
15
+ this.editorMode$ = this.editorModeSubj$.asObservable();
16
+ this.runtimeService.isInitialized$.subscribe(() => this.editorModeSubj$.next(Boolean(this.runtimeService.config?.uiBuilderMode)));
17
+ }
18
+ applyPatch$(patch) {
19
+ return this.runtimeService.applyPatch$(patch);
20
+ }
21
+ toggleEditorMode() {
22
+ this.editorModeSubj$.next(!this.editorModeSubj$.value);
23
+ }
24
+ }
25
+ RuntimeEditorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RuntimeEditorService, deps: [{ token: i1.RuntimeService }], target: i0.ɵɵFactoryTarget.Injectable });
26
+ RuntimeEditorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RuntimeEditorService });
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RuntimeEditorService, decorators: [{
28
+ type: Injectable
29
+ }], ctorParameters: function () { return [{ type: i1.RuntimeService }]; } });
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS1lZGl0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2Ntcy9tb2R1bGVzL3J1bnRpbWUvc2VydmljZXMvcnVudGltZS1lZGl0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWxFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7O0FBR25ELE1BQU0sT0FBTyxvQkFBb0I7SUFXL0IsWUFBb0IsY0FBOEI7UUFBOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBVjFDLG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFOUMsc0JBQWlCLEdBQUcsSUFBSSxhQUFhLEVBQTJCLENBQUM7UUFDakUsc0JBQWlCLEdBQUcsSUFBSSxhQUFhLEVBQTZCLENBQUM7UUFDbkUsOEJBQXlCLEdBQUcsSUFBSSxhQUFhLEVBQTRCLENBQUM7UUFHMUUsY0FBUyxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZDLHlCQUFvQixHQUFHLElBQUksZUFBZSxDQUFnQixJQUFJLENBQUMsQ0FBQztRQUdyRSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdkQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUNoRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FDOUUsQ0FBQztJQUNKLENBQUM7SUFFTSxXQUFXLENBQUMsS0FBWTtRQUM3QixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFTSxnQkFBZ0I7UUFDckIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pELENBQUM7O2lIQXhCVSxvQkFBb0I7cUhBQXBCLG9CQUFvQjsyRkFBcEIsb0JBQW9CO2tCQURoQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGF0Y2ggfSBmcm9tICdyZmM2OTAyJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUnVudGltZUVsZW1lbnREZWxldGVFdmVudCwgUnVudGltZUVsZW1lbnREcm9wRXZlbnQsIFJ1bnRpbWVTaG93U2V0dGluZ3NFdmVudCB9IGZyb20gJy4uL3R5cGVzL3J1bnRpbWUuYWN0aW9ucyc7XG5pbXBvcnQgeyBSdW50aW1lU2VydmljZSB9IGZyb20gJy4vcnVudGltZS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJ1bnRpbWVFZGl0b3JTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBlZGl0b3JNb2RlU3ViaiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBwdWJsaWMgb25FbGVtZW50RHJvcHBlZCQgPSBuZXcgUmVwbGF5U3ViamVjdDxSdW50aW1lRWxlbWVudERyb3BFdmVudD4oKTtcbiAgcHVibGljIG9uRWxlbWVudERlbGV0ZWQkID0gbmV3IFJlcGxheVN1YmplY3Q8UnVudGltZUVsZW1lbnREZWxldGVFdmVudD4oKTtcbiAgcHVibGljIG9uRWxlbWVudFNldHRpbmdzVG9nZ2xlZCQgPSBuZXcgUmVwbGF5U3ViamVjdDxSdW50aW1lU2hvd1NldHRpbmdzRXZlbnQ+KCk7XG5cbiAgcHVibGljIGVkaXRvck1vZGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBwdWJsaWMgZHJhZ01vZGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHB1YmxpYyBzZWxlY3RlZEVsZW1lbnRQYXRoJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBydW50aW1lU2VydmljZTogUnVudGltZVNlcnZpY2UpIHtcbiAgICB0aGlzLmVkaXRvck1vZGUkID0gdGhpcy5lZGl0b3JNb2RlU3ViaiQuYXNPYnNlcnZhYmxlKCk7XG4gICAgdGhpcy5ydW50aW1lU2VydmljZS5pc0luaXRpYWxpemVkJC5zdWJzY3JpYmUoKCkgPT5cbiAgICAgIHRoaXMuZWRpdG9yTW9kZVN1YmokLm5leHQoQm9vbGVhbih0aGlzLnJ1bnRpbWVTZXJ2aWNlLmNvbmZpZz8udWlCdWlsZGVyTW9kZSkpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgYXBwbHlQYXRjaCQocGF0Y2g6IFBhdGNoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMucnVudGltZVNlcnZpY2UuYXBwbHlQYXRjaCQocGF0Y2gpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZUVkaXRvck1vZGUoKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0b3JNb2RlU3ViaiQubmV4dCghdGhpcy5lZGl0b3JNb2RlU3ViaiQudmFsdWUpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,117 @@
1
+ import { Injectable, Injector } from '@angular/core';
2
+ import { IntegrationState } from '@veloceapps/sdk/core';
3
+ import { cloneDeep } from 'lodash';
4
+ import { applyPatch } from 'rfc6902';
5
+ import { BehaviorSubject, distinctUntilChanged, map, of, startWith, Subject, switchMap, tap } from 'rxjs';
6
+ import { CmsAction } from '../../../cms.actions';
7
+ import { findElementByPath } from '../../../utils/ui-definition.utils';
8
+ import { CMS_COMPILATION_SERVICE } from '../tokens';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "@veloceapps/sdk/core";
11
+ export class RuntimeService {
12
+ constructor(injector, integrationState) {
13
+ this.injector = injector;
14
+ this.integrationState = integrationState;
15
+ this.moduleRefs = [];
16
+ this.componentRefs = {};
17
+ this.componentTypes = {};
18
+ this.applicationTree = [];
19
+ this.isInitialized$ = new BehaviorSubject(false);
20
+ this.updated$ = new Subject();
21
+ this.selectedPageName$ = new BehaviorSubject(null);
22
+ this.selectedOverlayNames$ = new BehaviorSubject([]);
23
+ this.compilationService = this.injector.get(CMS_COMPILATION_SERVICE);
24
+ this.integrationState
25
+ .listen$(CmsAction.GO_TO_PAGE)
26
+ .pipe(map(({ pageName }) => pageName), distinctUntilChanged())
27
+ .subscribe(pageName => this.selectedPageName$.next(pageName));
28
+ this.integrationState
29
+ .listen$(CmsAction.SHOW_OVERLAY)
30
+ .pipe(map(({ name }) => name))
31
+ .subscribe(overlayName => {
32
+ const overlayNames = this.selectedOverlayNames$.value;
33
+ if (!overlayNames.includes(overlayName)) {
34
+ this.selectedOverlayNames$.next([...overlayNames, overlayName]);
35
+ }
36
+ });
37
+ this.integrationState
38
+ .listen$(CmsAction.HIDE_OVERLAY)
39
+ .pipe(map(({ name }) => name))
40
+ .subscribe(overlayName => {
41
+ const overlayNames = this.selectedOverlayNames$.value;
42
+ this.selectedOverlayNames$.next(overlayNames.filter(name => name !== overlayName));
43
+ });
44
+ this.integrationState.listen$(CmsAction.HIDE_ALL_OVERLAYS).subscribe(() => this.selectedOverlayNames$.next([]));
45
+ }
46
+ initialize$(uiDefinition, config) {
47
+ this.config = config;
48
+ if (!uiDefinition) {
49
+ return of([]);
50
+ }
51
+ return this.compilationService.compileUIDefinition$(uiDefinition, config).pipe(map(result => {
52
+ this.applicationTree = result.elements;
53
+ this.componentTypes = {
54
+ ...this.componentTypes,
55
+ ...result.componentTypes,
56
+ };
57
+ this.moduleRefs.push(result.moduleRef);
58
+ return result.elements;
59
+ }), tap(() => this.isInitialized$.next(true)));
60
+ }
61
+ applyPatch$(patch) {
62
+ let observable$ = of(undefined);
63
+ patch.forEach(operation => {
64
+ switch (operation.op) {
65
+ case 'add': {
66
+ observable$ = observable$.pipe(switchMap(() => this.addElement$(operation)));
67
+ break;
68
+ }
69
+ case 'remove': {
70
+ observable$ = observable$.pipe(map(() => this.deleteElement(operation)));
71
+ break;
72
+ }
73
+ case 'replace': {
74
+ observable$ = observable$.pipe(switchMap(() => {
75
+ this.deleteElement({ op: 'remove', path: operation.path });
76
+ return this.addElement$({ op: 'add', path: operation.path, value: operation.value });
77
+ }));
78
+ break;
79
+ }
80
+ default:
81
+ observable$ = of();
82
+ }
83
+ });
84
+ return observable$.pipe(tap(() => this.updated$.next()));
85
+ }
86
+ getCompiledElement$(path) {
87
+ return this.updated$.pipe(startWith(undefined), map(() => findElementByPath(this.applicationTree, path)), distinctUntilChanged());
88
+ }
89
+ clear() {
90
+ this.compilationService.clear();
91
+ this.moduleRefs.forEach(m => m.destroy());
92
+ this.moduleRefs = [];
93
+ this.componentRefs = {};
94
+ this.applicationTree = [];
95
+ this.componentTypes = {};
96
+ this.isInitialized$.next(false);
97
+ }
98
+ addElement$(operation) {
99
+ return this.compilationService.compileElement$(operation.value).pipe(map(result => {
100
+ this.componentTypes = {
101
+ ...this.componentTypes,
102
+ ...result.componentTypes,
103
+ };
104
+ this.moduleRefs.push(result.moduleRef);
105
+ applyPatch(this.applicationTree, [{ ...operation, value: cloneDeep(result.elements[0]) }]);
106
+ }));
107
+ }
108
+ deleteElement(operation) {
109
+ applyPatch(this.applicationTree, [operation]);
110
+ }
111
+ }
112
+ RuntimeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RuntimeService, deps: [{ token: i0.Injector }, { token: i1.IntegrationState }], target: i0.ɵɵFactoryTarget.Injectable });
113
+ RuntimeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RuntimeService });
114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RuntimeService, decorators: [{
115
+ type: Injectable
116
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.IntegrationState }]; } });
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY21zL21vZHVsZXMvcnVudGltZS9zZXJ2aWNlcy9ydW50aW1lLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixVQUFVLEVBQUUsUUFBUSxFQUErQixNQUFNLGVBQWUsQ0FBQztBQUVoRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFjLE1BQU0sUUFBUSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxVQUFVLEVBQVMsTUFBTSxTQUFTLENBQUM7QUFFNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0SCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFJakQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sV0FBVyxDQUFDOzs7QUFJcEQsTUFBTSxPQUFPLGNBQWM7SUFhekIsWUFBb0IsUUFBa0IsRUFBVSxnQkFBa0M7UUFBOUQsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFVLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFaM0UsZUFBVSxHQUE0QixFQUFFLENBQUM7UUFDekMsa0JBQWEsR0FBaUQsRUFBRSxDQUFDO1FBQ2pFLG1CQUFjLEdBQWlDLEVBQUUsQ0FBQztRQUNsRCxvQkFBZSxHQUFzQixFQUFFLENBQUM7UUFFeEMsbUJBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QyxhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FB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Q0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN2QyxVQUFVLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLEVBQUUsR0FBRyxTQUFTLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDN0YsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFTyxhQUFhLENBQUMsU0FBMEI7UUFDOUMsVUFBVSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7OzJHQWpJVSxjQUFjOytHQUFkLGNBQWM7MkZBQWQsY0FBYztrQkFEMUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudFJlZiwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIE5nTW9kdWxlLCBOZ01vZHVsZVJlZiwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVUlEZWZpbml0aW9uIH0gZnJvbSAnQHZlbG9jZWFwcHMvY29yZSc7XG5pbXBvcnQgeyBJbnRlZ3JhdGlvblN0YXRlIH0gZnJvbSAnQHZlbG9jZWFwcHMvc2RrL2NvcmUnO1xuaW1wb3J0IHsgY2xvbmVEZWVwLCBEaWN0aW9uYXJ5IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGFwcGx5UGF0Y2gsIFBhdGNoIH0gZnJvbSAncmZjNjkwMic7XG5pbXBvcnQgeyBBZGRPcGVyYXRpb24sIFJlbW92ZU9wZXJhdGlvbiB9IGZyb20gJ3JmYzY5MDIvZGlmZic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIE9ic2VydmFibGUsIG9mLCBzdGFydFdpdGgsIFN1YmplY3QsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDbXNBY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9jbXMuYWN0aW9ucyc7XG5pbXBvcnQgeyBDTVNQcmV2aWV3Q29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9wcmV2aWV3L3ByZXZpZXcudHlwZXMnO1xuaW1wb3J0IHsgRW50aXR5IH0gZnJvbSAnLi4vLi4vLi4vZW5naW5lL21vZGVscy9lbnRpdHknO1xuaW1wb3J0IHsgRWxlbWVudE1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgZmluZEVsZW1lbnRCeVBhdGggfSBmcm9tICcuLi8uLi8uLi91dGlscy91aS1kZWZpbml0aW9uLnV0aWxzJztcbmltcG9ydCB7IENNU19DT01QSUxBVElPTl9TRVJWSUNFIH0gZnJvbSAnLi4vdG9rZW5zJztcbmltcG9ydCB0eXBlIHsgQ29tcGlsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9jb21waWxhdGlvbi5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFJ1bnRpbWVTZXJ2aWNlIHtcbiAgcHVibGljIG1vZHVsZVJlZnM6IE5nTW9kdWxlUmVmPE5nTW9kdWxlPltdID0gW107XG4gIHB1YmxpYyBjb21wb25lbnRSZWZzOiBEaWN0aW9uYXJ5PENvbXBvbmVudFJlZjxFbnRpdHk+IHwgdW5kZWZpbmVkPiA9IHt9O1xuICBwdWJsaWMgY29tcG9uZW50VHlwZXM6IFJlY29yZDxzdHJpbmcsIFR5cGU8RW50aXR5Pj4gPSB7fTtcbiAgcHVibGljIGFwcGxpY2F0aW9uVHJlZTogRWxlbWVudE1ldGFkYXRhW10gPSBbXTtcbiAgcHVibGljIGNvbmZpZz86IENNU1ByZXZpZXdDb25maWc7XG4gIHB1YmxpYyBpc0luaXRpYWxpemVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBwdWJsaWMgdXBkYXRlZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwdWJsaWMgc2VsZWN0ZWRQYWdlTmFtZSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IG51bGw+KG51bGwpO1xuICBwdWJsaWMgc2VsZWN0ZWRPdmVybGF5TmFtZXMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmdbXT4oW10pO1xuXG4gIHByaXZhdGUgY29tcGlsYXRpb25TZXJ2aWNlOiBDb21waWxhdGlvblNlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IsIHByaXZhdGUgaW50ZWdyYXRpb25TdGF0ZTogSW50ZWdyYXRpb25TdGF0ZSkge1xuICAgIHRoaXMuY29tcGlsYXRpb25TZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoQ01TX0NPTVBJTEFUSU9OX1NFUlZJQ0UpO1xuXG4gICAgdGhpcy5pbnRlZ3JhdGlvblN0YXRlXG4gICAgICAubGlzdGVuJDx7IHBhZ2VOYW1lOiBzdHJpbmcgfT4oQ21zQWN0aW9uLkdPX1RPX1BBR0UpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKCh7IHBhZ2VOYW1lIH0pID0+IHBhZ2VOYW1lKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUocGFnZU5hbWUgPT4gdGhpcy5zZWxlY3RlZFBhZ2VOYW1lJC5uZXh0KHBhZ2VOYW1lKSk7XG5cbiAgICB0aGlzLmludGVncmF0aW9uU3RhdGVcbiAgICAgIC5saXN0ZW4kPHsgbmFtZTogc3RyaW5nIH0+KENtc0FjdGlvbi5TSE9XX09WRVJMQVkpXG4gICAgICAucGlwZShtYXAoKHsgbmFtZSB9KSA9PiBuYW1lKSlcbiAgICAgIC5zdWJzY3JpYmUob3ZlcmxheU5hbWUgPT4ge1xuICAgICAgICBjb25zdCBvdmVybGF5TmFtZXMgPSB0aGlzLnNlbGVjdGVkT3ZlcmxheU5hbWVzJC52YWx1ZTtcbiAgICAgICAgaWYgKCFvdmVybGF5TmFtZXMuaW5jbHVkZXMob3ZlcmxheU5hbWUpKSB7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE92ZXJsYXlOYW1lcyQubmV4dChbLi4ub3ZlcmxheU5hbWVzLCBvdmVybGF5TmFtZV0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHRoaXMuaW50ZWdyYXRpb25TdGF0ZVxuICAgICAgLmxpc3RlbiQ8eyBuYW1lOiBzdHJpbmcgfT4oQ21zQWN0aW9uLkhJREVfT1ZFUkxBWSlcbiAgICAgIC5waXBlKG1hcCgoeyBuYW1lIH0pID0+IG5hbWUpKVxuICAgICAgLnN1YnNjcmliZShvdmVybGF5TmFtZSA9PiB7XG4gICAgICAgIGNvbnN0IG92ZXJsYXlOYW1lcyA9IHRoaXMuc2VsZWN0ZWRPdmVybGF5TmFtZXMkLnZhbHVlO1xuICAgICAgICB0aGlzLnNlbGVjdGVkT3ZlcmxheU5hbWVzJC5uZXh0KG92ZXJsYXlOYW1lcy5maWx0ZXIobmFtZSA9PiBuYW1lICE9PSBvdmVybGF5TmFtZSkpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmludGVncmF0aW9uU3RhdGUubGlzdGVuJChDbXNBY3Rpb24uSElERV9BTExfT1ZFUkxBWVMpLnN1YnNjcmliZSgoKSA9PiB0aGlzLnNlbGVjdGVkT3ZlcmxheU5hbWVzJC5uZXh0KFtdKSk7XG4gIH1cblxuICBwdWJsaWMgaW5pdGlhbGl6ZSQodWlEZWZpbml0aW9uPzogVUlEZWZpbml0aW9uLCBjb25maWc/OiBDTVNQcmV2aWV3Q29uZmlnKTogT2JzZXJ2YWJsZTxFbGVtZW50TWV0YWRhdGFbXT4ge1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuXG4gICAgaWYgKCF1aURlZmluaXRpb24pIHtcbiAgICAgIHJldHVybiBvZihbXSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY29tcGlsYXRpb25TZXJ2aWNlLmNvbXBpbGVVSURlZmluaXRpb24kKHVpRGVmaW5pdGlvbiwgY29uZmlnKS5waXBlKFxuICAgICAgbWFwKHJlc3VsdCA9PiB7XG4gICAgICAgIHRoaXMuYXBwbGljYXRpb25UcmVlID0gcmVzdWx0LmVsZW1lbnRzO1xuICAgICAgICB0aGlzLmNvbXBvbmVudFR5cGVzID0ge1xuICAgICAgICAgIC4uLnRoaXMuY29tcG9uZW50VHlwZXMsXG4gICAgICAgICAgLi4ucmVzdWx0LmNvbXBvbmVudFR5cGVzLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLm1vZHVsZVJlZnMucHVzaChyZXN1bHQubW9kdWxlUmVmKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5lbGVtZW50cztcbiAgICAgIH0pLFxuICAgICAgdGFwKCgpID0+IHRoaXMuaXNJbml0aWFsaXplZCQubmV4dCh0cnVlKSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhcHBseVBhdGNoJChwYXRjaDogUGF0Y2gpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBsZXQgb2JzZXJ2YWJsZSQ6IE9ic2VydmFibGU8dm9pZD4gPSBvZih1bmRlZmluZWQpO1xuXG4gICAgcGF0Y2guZm9yRWFjaChvcGVyYXRpb24gPT4ge1xuICAgICAgc3dpdGNoIChvcGVyYXRpb24ub3ApIHtcbiAgICAgICAgY2FzZSAnYWRkJzoge1xuICAgICAgICAgIG9ic2VydmFibGUkID0gb2JzZXJ2YWJsZSQucGlwZShzd2l0Y2hNYXAoKCkgPT4gdGhpcy5hZGRFbGVtZW50JChvcGVyYXRpb24pKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAncmVtb3ZlJzoge1xuICAgICAgICAgIG9ic2VydmFibGUkID0gb2JzZXJ2YWJsZSQucGlwZShtYXAoKCkgPT4gdGhpcy5kZWxldGVFbGVtZW50KG9wZXJhdGlvbikpKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICdyZXBsYWNlJzoge1xuICAgICAgICAgIG9ic2VydmFibGUkID0gb2JzZXJ2YWJsZSQucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuZGVsZXRlRWxlbWVudCh7IG9wOiAncmVtb3ZlJywgcGF0aDogb3BlcmF0aW9uLnBhdGggfSk7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZEVsZW1lbnQkKHsgb3A6ICdhZGQnLCBwYXRoOiBvcGVyYXRpb24ucGF0aCwgdmFsdWU6IG9wZXJhdGlvbi52YWx1ZSB9KTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBvYnNlcnZhYmxlJCA9IG9mKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gb2JzZXJ2YWJsZSQucGlwZSh0YXAoKCkgPT4gdGhpcy51cGRhdGVkJC5uZXh0KCkpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb21waWxlZEVsZW1lbnQkKHBhdGg6IHN0cmluZyk6IE9ic2VydmFibGU8RWxlbWVudE1ldGFkYXRhIHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlZCQucGlwZShcbiAgICAgIHN0YXJ0V2l0aCh1bmRlZmluZWQpLFxuICAgICAgbWFwKCgpID0+IGZpbmRFbGVtZW50QnlQYXRoKHRoaXMuYXBwbGljYXRpb25UcmVlLCBwYXRoKSksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5jb21waWxhdGlvblNlcnZpY2UuY2xlYXIoKTtcbiAgICB0aGlzLm1vZHVsZVJlZnMuZm9yRWFjaChtID0+IG0uZGVzdHJveSgpKTtcbiAgICB0aGlzLm1vZHVsZVJlZnMgPSBbXTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZnMgPSB7fTtcbiAgICB0aGlzLmFwcGxpY2F0aW9uVHJlZSA9IFtdO1xuICAgIHRoaXMuY29tcG9uZW50VHlwZXMgPSB7fTtcbiAgICB0aGlzLmlzSW5pdGlhbGl6ZWQkLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRFbGVtZW50JChvcGVyYXRpb246IEFkZE9wZXJhdGlvbik6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmNvbXBpbGF0aW9uU2VydmljZS5jb21waWxlRWxlbWVudCQob3BlcmF0aW9uLnZhbHVlKS5waXBlKFxuICAgICAgbWFwKHJlc3VsdCA9PiB7XG4gICAgICAgIHRoaXMuY29tcG9uZW50VHlwZXMgPSB7XG4gICAgICAgICAgLi4udGhpcy5jb21wb25lbnRUeXBlcyxcbiAgICAgICAgICAuLi5yZXN1bHQuY29tcG9uZW50VHlwZXMsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMubW9kdWxlUmVmcy5wdXNoKHJlc3VsdC5tb2R1bGVSZWYpO1xuICAgICAgICBhcHBseVBhdGNoKHRoaXMuYXBwbGljYXRpb25UcmVlLCBbeyAuLi5vcGVyYXRpb24sIHZhbHVlOiBjbG9uZURlZXAocmVzdWx0LmVsZW1lbnRzWzBdKSB9XSk7XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWxldGVFbGVtZW50KG9wZXJhdGlvbjogUmVtb3ZlT3BlcmF0aW9uKTogdm9pZCB7XG4gICAgYXBwbHlQYXRjaCh0aGlzLmFwcGxpY2F0aW9uVHJlZSwgW29wZXJhdGlvbl0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export const CMS_COMPILATION_SERVICE = new InjectionToken('VENDOR_MAP');
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY21zL21vZHVsZXMvcnVudGltZS90b2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvQyxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLGNBQWMsQ0FBcUIsWUFBWSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBDb21waWxhdGlvblNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2NvbXBpbGF0aW9uLnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgQ01TX0NPTVBJTEFUSU9OX1NFUlZJQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48Q29tcGlsYXRpb25TZXJ2aWNlPignVkVORE9SX01BUCcpO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGlsYXRpb24udHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jbXMvbW9kdWxlcy9ydW50aW1lL3R5cGVzL2NvbXBpbGF0aW9uLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgTmdNb2R1bGVSZWYsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVudGl0eSB9IGZyb20gJy4uLy4uLy4uL2VuZ2luZS9tb2RlbHMvZW50aXR5JztcbmltcG9ydCB7IEVsZW1lbnRNZXRhZGF0YSB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2NvbW1vbi50eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGlsYXRpb25SZXN1bHQge1xuICBlbGVtZW50czogRWxlbWVudE1ldGFkYXRhW107XG4gIG1vZHVsZVJlZjogTmdNb2R1bGVSZWY8TmdNb2R1bGU+O1xuICBjb21wb25lbnRUeXBlczogUmVjb3JkPHN0cmluZywgVHlwZTxFbnRpdHk+Pjtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5hY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY21zL21vZHVsZXMvcnVudGltZS90eXBlcy9ydW50aW1lLmFjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVsZW1lbnRNZXRhZGF0YSB9IGZyb20gJy4uLy4uLy4uL3R5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBSdW50aW1lRWxlbWVudERyb3BFdmVudCB7XG4gIGVsZW1lbnQ6IEVsZW1lbnRNZXRhZGF0YTtcbiAgcGF0aDogc3RyaW5nO1xuICBpbmRleDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJ1bnRpbWVFbGVtZW50RGVsZXRlRXZlbnQge1xuICBwYXRoOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUnVudGltZVNob3dTZXR0aW5nc0V2ZW50IHtcbiAgcGF0aDogc3RyaW5nO1xufVxuIl19
@@ -0,0 +1,121 @@
1
+ import { DOCUMENT } from '@angular/common';
2
+ import { ApplicationRef, ElementRef, Injectable, createComponent, inject } from '@angular/core';
3
+ import { BehaviorSubject, Subject, combineLatest, takeUntil } from 'rxjs';
4
+ import { ElementToolsPanelComponent } from '../components/element-tools-panel/element-tools-panel.component';
5
+ import { ElementComponent } from '../components/element.component';
6
+ import { ELEMENT_METADATA } from '../injection-tokens';
7
+ import { RuntimeEditorService } from '../modules/runtime/services/runtime-editor.service';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "../components/element.component";
10
+ export class ElementHoverPlugin {
11
+ constructor(host) {
12
+ this.host = host;
13
+ this.hoverClassName = 'element-hover';
14
+ this.metadata = inject(ELEMENT_METADATA);
15
+ this.appRef = inject(ApplicationRef);
16
+ this.el = inject(ElementRef);
17
+ this.document = inject(DOCUMENT);
18
+ this.runtimeEditorService = inject(RuntimeEditorService);
19
+ this.isHovered$ = new BehaviorSubject(false);
20
+ this.isSelected$ = new BehaviorSubject(false);
21
+ this.destroyed$ = new Subject();
22
+ this.listenersAttached = false;
23
+ this.mouseOverListenerBound = this.mouseOverListener.bind(this);
24
+ this.mouseLeaveListenerBound = this.mouseLeaveListener.bind(this);
25
+ this.clickListenerBound = this.clickListener.bind(this);
26
+ combineLatest([this.runtimeEditorService.editorMode$, this.isHovered$, this.isSelected$])
27
+ .pipe(takeUntil(this.destroyed$))
28
+ .subscribe(([editorMode]) => {
29
+ if (!editorMode) {
30
+ this.detachListeners();
31
+ this.removeHighlight();
32
+ return;
33
+ }
34
+ this.attachListeners();
35
+ this.updateHighlight();
36
+ });
37
+ this.runtimeEditorService.selectedElementPath$.pipe(takeUntil(this.destroyed$)).subscribe(path => {
38
+ const isSelected = this.metadata.path === path;
39
+ if (this.isSelected$.value !== isSelected) {
40
+ this.isSelected$.next(isSelected);
41
+ }
42
+ });
43
+ }
44
+ ngOnDestroy() {
45
+ this.destroyed$.next();
46
+ this.destroyed$.complete();
47
+ this.detachListeners();
48
+ }
49
+ attachListeners() {
50
+ if (this.listenersAttached) {
51
+ return;
52
+ }
53
+ this.el.nativeElement.addEventListener('mouseover', this.mouseOverListenerBound);
54
+ this.el.nativeElement.addEventListener('mouseleave', this.mouseLeaveListenerBound);
55
+ this.el.nativeElement.addEventListener('click', this.clickListenerBound);
56
+ this.listenersAttached = true;
57
+ }
58
+ detachListeners() {
59
+ if (!this.listenersAttached) {
60
+ return;
61
+ }
62
+ this.el.nativeElement.removeEventListener('mouseover', this.mouseOverListenerBound);
63
+ this.el.nativeElement.removeEventListener('mouseleave', this.mouseLeaveListenerBound);
64
+ this.el.nativeElement.removeEventListener('click', this.clickListenerBound);
65
+ this.listenersAttached = false;
66
+ }
67
+ mouseOverListener(e) {
68
+ const path = e.composedPath();
69
+ const innerPath = path.slice(0, path.indexOf(this.el.nativeElement));
70
+ const hasChildHovered = innerPath.some(target => {
71
+ const t = target;
72
+ return t.tagName === 'VL-ELEMENT' && t.classList.contains(this.hoverClassName);
73
+ });
74
+ const isHovered = !hasChildHovered;
75
+ if (this.isHovered$.value !== isHovered) {
76
+ this.isHovered$.next(isHovered);
77
+ }
78
+ }
79
+ clickListener(e) {
80
+ if (this.el.nativeElement === e.target) {
81
+ this.runtimeEditorService.selectedElementPath$.next(this.metadata.path);
82
+ }
83
+ }
84
+ mouseLeaveListener() {
85
+ this.isHovered$.next(false);
86
+ }
87
+ addHighlight() {
88
+ this.el.nativeElement.classList.add(this.hoverClassName);
89
+ this.overlayEl = this.document.createElement('div');
90
+ this.el.nativeElement.appendChild(this.overlayEl);
91
+ const ref = createComponent(ElementToolsPanelComponent, {
92
+ environmentInjector: this.appRef.injector,
93
+ hostElement: this.overlayEl,
94
+ elementInjector: this.host.injector,
95
+ });
96
+ ref.instance.runtimeEditorService = this.runtimeEditorService;
97
+ ref.changeDetectorRef.detectChanges();
98
+ }
99
+ removeHighlight() {
100
+ this.el.nativeElement.classList.remove(this.hoverClassName);
101
+ if (this.overlayEl) {
102
+ this.el.nativeElement.removeChild(this.overlayEl);
103
+ this.overlayEl = undefined;
104
+ }
105
+ }
106
+ updateHighlight() {
107
+ const hasOverlay = (this.overlayEl && this.el.nativeElement.contains(this.overlayEl)) ?? false;
108
+ if ((this.isHovered$.value || this.isSelected$.value) && !hasOverlay) {
109
+ setTimeout(() => this.addHighlight());
110
+ }
111
+ if (!this.isHovered$.value && !this.isSelected$.value && hasOverlay) {
112
+ this.removeHighlight();
113
+ }
114
+ }
115
+ }
116
+ ElementHoverPlugin.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ElementHoverPlugin, deps: [{ token: i1.ElementComponent }], target: i0.ɵɵFactoryTarget.Injectable });
117
+ ElementHoverPlugin.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ElementHoverPlugin });
118
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ElementHoverPlugin, decorators: [{
119
+ type: Injectable
120
+ }], ctorParameters: function () { return [{ type: i1.ElementComponent }]; } });
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC1ob3Zlci5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jbXMvcGx1Z2lucy9lbGVtZW50LWhvdmVyLnBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFhLGVBQWUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0csT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUVuRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxvREFBb0QsQ0FBQzs7O0FBRzFGLE1BQU0sT0FBTyxrQkFBa0I7SUFtQjdCLFlBQW1CLElBQXNCO1FBQXRCLFNBQUksR0FBSixJQUFJLENBQWtCO1FBbEJ4QixtQkFBYyxHQUFHLGVBQWUsQ0FBQztRQUVqQyxhQUFRLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDcEMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNoQyxPQUFFLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQztRQUNqRCxhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLHlCQUFvQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRzdELGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4Qyxn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SSxDQUFDLFVBQVUsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNwRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7U0FDdkM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssSUFBSSxVQUFVLEVBQUU7WUFDbkUsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQzs7K0dBcklVLGtCQUFrQjttSEFBbEIsa0JBQWtCOzJGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblJlZiwgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBjcmVhdGVDb21wb25lbnQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVsZW1lbnRUb29sc1BhbmVsQ29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9lbGVtZW50LXRvb2xzLXBhbmVsL2VsZW1lbnQtdG9vbHMtcGFuZWwuY29tcG9uZW50JztcbmltcG9ydCB7IEVsZW1lbnRDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2VsZW1lbnQuY29tcG9uZW50JztcbmltcG9ydCB7IFBsdWdpbkNvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvcGx1Z2luLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFTEVNRU5UX01FVEFEQVRBIH0gZnJvbSAnLi4vaW5qZWN0aW9uLXRva2Vucyc7XG5pbXBvcnQgeyBSdW50aW1lRWRpdG9yU2VydmljZSB9IGZyb20gJy4uL21vZHVsZXMvcnVudGltZS9zZXJ2aWNlcy9ydW50aW1lLWVkaXRvci5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEVsZW1lbnRIb3ZlclBsdWdpbiBpbXBsZW1lbnRzIFBsdWdpbkNvbXBvbmVudCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBob3ZlckNsYXNzTmFtZSA9ICdlbGVtZW50LWhvdmVyJztcblxuICBwcml2YXRlIHJlYWRvbmx5IG1ldGFkYXRhID0gaW5qZWN0KEVMRU1FTlRfTUVUQURBVEEpO1xuICBwcml2YXRlIHJlYWRvbmx5IGFwcFJlZiA9IGluamVjdChBcHBsaWNhdGlvblJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgZWwgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcbiAgcHJpdmF0ZSByZWFkb25seSBydW50aW1lRWRpdG9yU2VydmljZSA9IGluamVjdChSdW50aW1lRWRpdG9yU2VydmljZSk7XG5cbiAgcHJpdmF0ZSBvdmVybGF5RWw/OiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBpc0hvdmVyZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHByaXZhdGUgaXNTZWxlY3RlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHJpdmF0ZSBkZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBsaXN0ZW5lcnNBdHRhY2hlZCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgbW91c2VPdmVyTGlzdGVuZXJCb3VuZDogKGU6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XG4gIHByaXZhdGUgbW91c2VMZWF2ZUxpc3RlbmVyQm91bmQ6IChlOiBNb3VzZUV2ZW50KSA9PiB2b2lkO1xuICBwcml2YXRlIGNsaWNrTGlzdGVuZXJCb3VuZDogKGU6IE1vdXNlRXZlbnQpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IocHVibGljIGhvc3Q6IEVsZW1lbnRDb21wb25lbnQpIHtcbiAgICB0aGlzLm1vdXNlT3Zlckxpc3RlbmVyQm91bmQgPSB0aGlzLm1vdXNlT3Zlckxpc3RlbmVyLmJpbmQodGhpcyk7XG4gICAgdGhpcy5tb3VzZUxlYXZlTGlzdGVuZXJCb3VuZCA9IHRoaXMubW91c2VMZWF2ZUxpc3RlbmVyLmJpbmQodGhpcyk7XG4gICAgdGhpcy5jbGlja0xpc3RlbmVyQm91bmQgPSB0aGlzLmNsaWNrTGlzdGVuZXIuYmluZCh0aGlzKTtcblxuICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMucnVudGltZUVkaXRvclNlcnZpY2UuZWRpdG9yTW9kZSQsIHRoaXMuaXNIb3ZlcmVkJCwgdGhpcy5pc1NlbGVjdGVkJF0pXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZWQkKSlcbiAgICAgIC5zdWJzY3JpYmUoKFtlZGl0b3JNb2RlXSkgPT4ge1xuICAgICAgICBpZiAoIWVkaXRvck1vZGUpIHtcbiAgICAgICAgICB0aGlzLmRldGFjaExpc3RlbmVycygpO1xuICAgICAgICAgIHRoaXMucmVtb3ZlSGlnaGxpZ2h0KCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hdHRhY2hMaXN0ZW5lcnMoKTtcbiAgICAgICAgdGhpcy51cGRhdGVIaWdobGlnaHQoKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5ydW50aW1lRWRpdG9yU2VydmljZS5zZWxlY3RlZEVsZW1lbnRQYXRoJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKS5zdWJzY3JpYmUocGF0aCA9PiB7XG4gICAgICBjb25zdCBpc1NlbGVjdGVkID0gdGhpcy5tZXRhZGF0YS5wYXRoID09PSBwYXRoO1xuICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZCQudmFsdWUgIT09IGlzU2VsZWN0ZWQpIHtcbiAgICAgICAgdGhpcy5pc1NlbGVjdGVkJC5uZXh0KGlzU2VsZWN0ZWQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveWVkJC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95ZWQkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5kZXRhY2hMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXR0YWNoTGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxpc3RlbmVyc0F0dGFjaGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlb3ZlcicsIHRoaXMubW91c2VPdmVyTGlzdGVuZXJCb3VuZCk7XG4gICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbGVhdmUnLCB0aGlzLm1vdXNlTGVhdmVMaXN0ZW5lckJvdW5kKTtcbiAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLmNsaWNrTGlzdGVuZXJCb3VuZCk7XG4gICAgdGhpcy5saXN0ZW5lcnNBdHRhY2hlZCA9IHRydWU7XG4gIH1cblxuICBwcml2YXRlIGRldGFjaExpc3RlbmVycygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubGlzdGVuZXJzQXR0YWNoZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VvdmVyJywgdGhpcy5tb3VzZU92ZXJMaXN0ZW5lckJvdW5kKTtcbiAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIHRoaXMubW91c2VMZWF2ZUxpc3RlbmVyQm91bmQpO1xuICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuY2xpY2tMaXN0ZW5lckJvdW5kKTtcbiAgICB0aGlzLmxpc3RlbmVyc0F0dGFjaGVkID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIG1vdXNlT3Zlckxpc3RlbmVyKGU6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBwYXRoID0gZS5jb21wb3NlZFBhdGgoKTtcbiAgICBjb25zdCBpbm5lclBhdGggPSBwYXRoLnNsaWNlKDAsIHBhdGguaW5kZXhPZih0aGlzLmVsLm5hdGl2ZUVsZW1lbnQpKTtcbiAgICBjb25zdCBoYXNDaGlsZEhvdmVyZWQgPSBpbm5lclBhdGguc29tZSh0YXJnZXQgPT4ge1xuICAgICAgY29uc3QgdCA9IHRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICAgIHJldHVybiB0LnRhZ05hbWUgPT09ICdWTC1FTEVNRU5UJyAmJiB0LmNsYXNzTGlzdC5jb250YWlucyh0aGlzLmhvdmVyQ2xhc3NOYW1lKTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGlzSG92ZXJlZCA9ICFoYXNDaGlsZEhvdmVyZWQ7XG5cbiAgICBpZiAodGhpcy5pc0hvdmVyZWQkLnZhbHVlICE9PSBpc0hvdmVyZWQpIHtcbiAgICAgIHRoaXMuaXNIb3ZlcmVkJC5uZXh0KGlzSG92ZXJlZCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjbGlja0xpc3RlbmVyKGU6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5lbC5uYXRpdmVFbGVtZW50ID09PSBlLnRhcmdldCkge1xuICAgICAgdGhpcy5ydW50aW1lRWRpdG9yU2VydmljZS5zZWxlY3RlZEVsZW1lbnRQYXRoJC5uZXh0KHRoaXMubWV0YWRhdGEucGF0aCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBtb3VzZUxlYXZlTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgdGhpcy5pc0hvdmVyZWQkLm5leHQoZmFsc2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRIaWdobGlnaHQoKTogdm9pZCB7XG4gICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQodGhpcy5ob3ZlckNsYXNzTmFtZSk7XG5cbiAgICB0aGlzLm92ZXJsYXlFbCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMub3ZlcmxheUVsKTtcblxuICAgIGNvbnN0IHJlZiA9IGNyZWF0ZUNvbXBvbmVudChFbGVtZW50VG9vbHNQYW5lbENvbXBvbmVudCwge1xuICAgICAgZW52aXJvbm1lbnRJbmplY3RvcjogdGhpcy5hcHBSZWYuaW5qZWN0b3IsXG4gICAgICBob3N0RWxlbWVudDogdGhpcy5vdmVybGF5RWwsXG4gICAgICBlbGVtZW50SW5qZWN0b3I6IHRoaXMuaG9zdC5pbmplY3RvcixcbiAgICB9KTtcblxuICAgIHJlZi5pbnN0YW5jZS5ydW50aW1lRWRpdG9yU2VydmljZSA9IHRoaXMucnVudGltZUVkaXRvclNlcnZpY2U7XG4gICAgcmVmLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlSGlnaGxpZ2h0KCk6IHZvaWQge1xuICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKHRoaXMuaG92ZXJDbGFzc05hbWUpO1xuXG4gICAgaWYgKHRoaXMub3ZlcmxheUVsKSB7XG4gICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy5vdmVybGF5RWwpO1xuICAgICAgdGhpcy5vdmVybGF5RWwgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVIaWdobGlnaHQoKTogdm9pZCB7XG4gICAgY29uc3QgaGFzT3ZlcmxheSA9ICh0aGlzLm92ZXJsYXlFbCAmJiB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY29udGFpbnModGhpcy5vdmVybGF5RWwpKSA/PyBmYWxzZTtcblxuICAgIGlmICgodGhpcy5pc0hvdmVyZWQkLnZhbHVlIHx8IHRoaXMuaXNTZWxlY3RlZCQudmFsdWUpICYmICFoYXNPdmVybGF5KSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuYWRkSGlnaGxpZ2h0KCkpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5pc0hvdmVyZWQkLnZhbHVlICYmICF0aGlzLmlzU2VsZWN0ZWQkLnZhbHVlICYmIGhhc092ZXJsYXkpIHtcbiAgICAgIHRoaXMucmVtb3ZlSGlnaGxpZ2h0KCk7XG4gICAgfVxuICB9XG59XG4iXX0=