@veloceapps/sdk 3.0.15 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. package/bundles/veloce-sdk-cms.umd.js +74 -836
  2. package/bundles/veloce-sdk-cms.umd.js.map +1 -1
  3. package/bundles/veloce-sdk-core.umd.js +1269 -0
  4. package/bundles/veloce-sdk-core.umd.js.map +1 -0
  5. package/bundles/veloce-sdk-runtime.umd.js +53 -166
  6. package/bundles/veloce-sdk-runtime.umd.js.map +1 -1
  7. package/bundles/veloce-sdk.umd.js +322 -155
  8. package/bundles/veloce-sdk.umd.js.map +1 -1
  9. package/cms/cms.default.d.ts +1 -1
  10. package/cms/components/element-renderer/element-renderer.component.d.ts +1 -1
  11. package/cms/components/preview/preview.component.d.ts +1 -3
  12. package/cms/decorators/element.decorator.d.ts +2 -2
  13. package/cms/index.d.ts +1 -1
  14. package/cms/injection-tokens.d.ts +1 -1
  15. package/cms/launcher.module.d.ts +2 -3
  16. package/cms/plugins/script.plugin.d.ts +1 -0
  17. package/cms/services/launcher.service.d.ts +1 -1
  18. package/cms/types/common.types.d.ts +4 -9
  19. package/cms/types/configuration.types.d.ts +0 -5
  20. package/cms/types/index.d.ts +1 -2
  21. package/cms/types/path.types.d.ts +11 -0
  22. package/cms/utils/element.utils.d.ts +6 -5
  23. package/cms/utils/elements-resolver.d.ts +2 -1
  24. package/cms/utils/index.d.ts +3 -1
  25. package/cms/utils/path.utils.d.ts +2 -1
  26. package/cms/vendor-map.d.ts +677 -2
  27. package/core/core.module.d.ts +8 -0
  28. package/core/index.d.ts +6 -0
  29. package/{cms → core}/modules/configuration/configuration.module.d.ts +0 -0
  30. package/{cms → core}/modules/configuration/helpers.d.ts +1 -2
  31. package/{cms → core}/modules/configuration/index.d.ts +0 -1
  32. package/{cms → core}/modules/configuration/services/configuration-runtime.service.d.ts +2 -3
  33. package/{cms → core}/modules/configuration/services/configuration.service.d.ts +2 -2
  34. package/{cms → core}/modules/configuration/services/runtime-context.service.d.ts +1 -1
  35. package/{cms → core}/modules/configuration/types/configuration-runtime.types.d.ts +0 -0
  36. package/{cms → core}/modules/flow-configuration/flow-configuration.module.d.ts +0 -0
  37. package/{cms → core}/modules/flow-configuration/index.d.ts +0 -0
  38. package/{cms → core}/modules/flow-configuration/services/flow-configuration.service.d.ts +7 -4
  39. package/{cms → core}/modules/flow-configuration/services/flow-update.service.d.ts +0 -0
  40. package/{cms → core}/modules/flow-configuration/types/update.types.d.ts +0 -0
  41. package/{cms → core}/modules/index.d.ts +0 -0
  42. package/core/package.json +10 -0
  43. package/{runtime → core}/services/context.service.d.ts +0 -0
  44. package/core/services/index.d.ts +2 -0
  45. package/{runtime/services/quote.service.d.ts → core/services/quote-draft.service.d.ts} +11 -6
  46. package/core/types/index.d.ts +3 -0
  47. package/core/types/quote-states.types.d.ts +6 -0
  48. package/{runtime/types/runtime-context.types.d.ts → core/types/runtime.types.d.ts} +4 -5
  49. package/{cms → core}/types/ui-definition.types.d.ts +0 -4
  50. package/core/utils/index.d.ts +2 -0
  51. package/{cms → core}/utils/line-item.utils.d.ts +0 -2
  52. package/{cms/types/line-item.types.d.ts → core/utils/line-item.worker.d.ts} +0 -0
  53. package/core/veloce-sdk-core.d.ts +5 -0
  54. package/esm2015/cms/cms.default.js +1 -1
  55. package/esm2015/cms/components/element-renderer/element-renderer.component.js +3 -3
  56. package/esm2015/cms/components/preview/preview.component.js +9 -10
  57. package/esm2015/cms/decorators/element.decorator.js +1 -1
  58. package/esm2015/cms/index.js +1 -2
  59. package/esm2015/cms/injection-tokens.js +1 -1
  60. package/esm2015/cms/launcher.module.js +5 -6
  61. package/esm2015/cms/plugins/configuration.plugin.js +3 -4
  62. package/esm2015/cms/plugins/script.plugin.js +27 -14
  63. package/esm2015/cms/services/launcher.service.js +1 -1
  64. package/esm2015/cms/types/common.types.js +1 -1
  65. package/esm2015/cms/types/configuration.types.js +1 -1
  66. package/esm2015/cms/types/index.js +2 -3
  67. package/esm2015/cms/types/path.types.js +2 -0
  68. package/esm2015/cms/utils/element.utils.js +1 -1
  69. package/esm2015/cms/utils/elements-resolver.js +1 -1
  70. package/esm2015/cms/utils/index.js +4 -2
  71. package/esm2015/cms/utils/path.utils.js +11 -1
  72. package/esm2015/cms/vendor-map.js +6 -5
  73. package/esm2015/core/core.module.js +18 -0
  74. package/esm2015/core/index.js +7 -0
  75. package/esm2015/core/modules/configuration/configuration.module.js +34 -0
  76. package/esm2015/core/modules/configuration/helpers.js +10 -0
  77. package/esm2015/core/modules/configuration/index.js +5 -0
  78. package/esm2015/core/modules/configuration/services/configuration-runtime.service.js +93 -0
  79. package/esm2015/core/modules/configuration/services/configuration.service.js +147 -0
  80. package/esm2015/core/modules/configuration/services/runtime-context.service.js +61 -0
  81. package/esm2015/core/modules/configuration/types/configuration-runtime.types.js +2 -0
  82. package/esm2015/core/modules/flow-configuration/flow-configuration.module.js +18 -0
  83. package/esm2015/core/modules/flow-configuration/index.js +5 -0
  84. package/esm2015/core/modules/flow-configuration/services/flow-configuration.service.js +90 -0
  85. package/esm2015/core/modules/flow-configuration/services/flow-update.service.js +114 -0
  86. package/esm2015/core/modules/flow-configuration/types/update.types.js +2 -0
  87. package/esm2015/core/modules/index.js +3 -0
  88. package/esm2015/core/services/context.service.js +41 -0
  89. package/esm2015/core/services/index.js +3 -0
  90. package/esm2015/core/services/quote-draft.service.js +67 -0
  91. package/esm2015/core/types/index.js +4 -0
  92. package/esm2015/core/types/quote-states.types.js +2 -0
  93. package/esm2015/core/types/runtime.types.js +16 -0
  94. package/esm2015/core/types/ui-definition.types.js +2 -0
  95. package/esm2015/core/utils/index.js +3 -0
  96. package/esm2015/core/utils/line-item.utils.js +98 -0
  97. package/esm2015/core/utils/line-item.worker.js +19 -0
  98. package/esm2015/core/veloce-sdk-core.js +5 -0
  99. package/esm2015/runtime/components/component-preview/component-preview.component.js +2 -2
  100. package/esm2015/runtime/components/ui-runtime/runtime.component.js +10 -9
  101. package/esm2015/runtime/components/ui-runtime-preview/runtime-preview.component.js +3 -3
  102. package/esm2015/runtime/execution/directives/section-script.directive.js +19 -20
  103. package/esm2015/runtime/execution/directives/velo-port.directive.js +1 -1
  104. package/esm2015/runtime/execution/directives/vl-quote.directive.js +1 -1
  105. package/esm2015/runtime/execution/directives/vl-ramp.directive.js +2 -2
  106. package/esm2015/runtime/execution/runtime-execution.module.js +6 -8
  107. package/esm2015/runtime/runtime.module.js +7 -9
  108. package/esm2015/runtime/services/cart.service.js +5 -6
  109. package/esm2015/runtime/services/configuration.service.js +9 -9
  110. package/esm2015/runtime/services/index.js +1 -3
  111. package/esm2015/runtime/services/runtime-context.service.js +4 -4
  112. package/esm2015/runtime/services/runtime.service.js +3 -3
  113. package/esm2015/runtime/types/index.js +1 -2
  114. package/esm2015/runtime/types/runtime.types.js +1 -1
  115. package/esm2015/src/components/dialog/dialog.component.js +30 -0
  116. package/esm2015/src/components/dialog/dialog.module.js +19 -0
  117. package/esm2015/src/components/dialog/dialog.types.js +2 -0
  118. package/esm2015/src/components/header/cart-overlay/cart-overlay.component.js +2 -2
  119. package/esm2015/src/components/header/header.component.js +51 -11
  120. package/esm2015/src/flow.component.js +2 -2
  121. package/esm2015/src/flow.module.js +33 -6
  122. package/esm2015/src/pages/debug/debug.component.js +14 -16
  123. package/esm2015/src/pages/legacy-product/legacy-product.component.js +12 -11
  124. package/esm2015/src/pages/product/product.component.js +12 -12
  125. package/esm2015/src/pages/shopping-cart/shopping-cart.component.js +1 -1
  126. package/esm2015/src/resolvers/context.resolver.js +2 -2
  127. package/esm2015/src/resolvers/quote.resolver.js +9 -16
  128. package/esm2015/src/services/flow-router.service.js +2 -2
  129. package/esm2015/src/services/fow-dialog.service.js +58 -0
  130. package/esm2015/src/types/flow-customization.types.js +1 -1
  131. package/esm2015/src/utils/flow.utils.js +11 -1
  132. package/fesm2015/veloce-sdk-cms.js +64 -714
  133. package/fesm2015/veloce-sdk-cms.js.map +1 -1
  134. package/fesm2015/veloce-sdk-core.js +785 -0
  135. package/fesm2015/veloce-sdk-core.js.map +1 -0
  136. package/fesm2015/veloce-sdk-runtime.js +48 -144
  137. package/fesm2015/veloce-sdk-runtime.js.map +1 -1
  138. package/fesm2015/veloce-sdk.js +260 -99
  139. package/fesm2015/veloce-sdk.js.map +1 -1
  140. package/package.json +2 -2
  141. package/runtime/components/ui-runtime/runtime.component.d.ts +3 -3
  142. package/runtime/components/ui-runtime-preview/runtime-preview.component.d.ts +1 -1
  143. package/runtime/execution/directives/section-script.directive.d.ts +2 -3
  144. package/runtime/execution/directives/velo-port.directive.d.ts +2 -2
  145. package/runtime/execution/directives/vl-ramp.directive.d.ts +1 -1
  146. package/runtime/execution/runtime-execution.module.d.ts +2 -1
  147. package/runtime/runtime.module.d.ts +2 -1
  148. package/runtime/services/cart.service.d.ts +2 -3
  149. package/runtime/services/configuration.service.d.ts +4 -5
  150. package/runtime/services/index.d.ts +0 -2
  151. package/runtime/services/runtime-context.service.d.ts +3 -3
  152. package/runtime/services/runtime.service.d.ts +5 -6
  153. package/runtime/types/index.d.ts +0 -1
  154. package/runtime/types/runtime.types.d.ts +5 -6
  155. package/src/components/dialog/dialog.component.d.ts +13 -0
  156. package/src/components/dialog/dialog.module.d.ts +9 -0
  157. package/src/components/dialog/dialog.types.d.ts +6 -0
  158. package/src/components/header/cart-overlay/cart-overlay.component.d.ts +1 -1
  159. package/src/components/header/header.component.d.ts +10 -5
  160. package/src/flow.component.d.ts +1 -1
  161. package/src/flow.module.d.ts +3 -1
  162. package/src/pages/debug/debug.component.d.ts +3 -4
  163. package/src/pages/legacy-product/legacy-product.component.d.ts +4 -3
  164. package/src/pages/product/product.component.d.ts +3 -4
  165. package/src/pages/shopping-cart/shopping-cart.component.d.ts +1 -1
  166. package/src/resolvers/context.resolver.d.ts +1 -1
  167. package/src/resolvers/quote.resolver.d.ts +3 -4
  168. package/src/services/flow-router.service.d.ts +1 -1
  169. package/src/services/fow-dialog.service.d.ts +17 -0
  170. package/src/types/flow-customization.types.d.ts +1 -1
  171. package/src/utils/flow.utils.d.ts +2 -0
  172. package/cms/modules/configuration/types/configuration.types.d.ts +0 -15
  173. package/esm2015/cms/modules/configuration/configuration.module.js +0 -37
  174. package/esm2015/cms/modules/configuration/helpers.js +0 -10
  175. package/esm2015/cms/modules/configuration/index.js +0 -6
  176. package/esm2015/cms/modules/configuration/services/configuration-runtime.service.js +0 -93
  177. package/esm2015/cms/modules/configuration/services/configuration.service.js +0 -147
  178. package/esm2015/cms/modules/configuration/services/runtime-context.service.js +0 -61
  179. package/esm2015/cms/modules/configuration/types/configuration-runtime.types.js +0 -2
  180. package/esm2015/cms/modules/configuration/types/configuration.types.js +0 -2
  181. package/esm2015/cms/modules/flow-configuration/flow-configuration.module.js +0 -18
  182. package/esm2015/cms/modules/flow-configuration/index.js +0 -5
  183. package/esm2015/cms/modules/flow-configuration/services/flow-configuration.service.js +0 -83
  184. package/esm2015/cms/modules/flow-configuration/services/flow-update.service.js +0 -114
  185. package/esm2015/cms/modules/flow-configuration/types/update.types.js +0 -2
  186. package/esm2015/cms/modules/index.js +0 -3
  187. package/esm2015/cms/types/line-item.types.js +0 -19
  188. package/esm2015/cms/types/ui-definition.types.js +0 -2
  189. package/esm2015/cms/utils/line-item.utils.js +0 -107
  190. package/esm2015/runtime/services/context.service.js +0 -41
  191. package/esm2015/runtime/services/quote.service.js +0 -53
  192. package/esm2015/runtime/types/runtime-context.types.js +0 -16
@@ -4,7 +4,7 @@ import { distinctUntilChanged, filter, map, shareReplay, startWith } from 'rxjs'
4
4
  import { VELOCE_FLOW_ROOT_ROUTE } from '../constants';
5
5
  import * as i0 from "@angular/core";
6
6
  import * as i1 from "@angular/router";
7
- import * as i2 from "@veloce/sdk/runtime";
7
+ import * as i2 from "@veloce/sdk/core";
8
8
  export class FlowRouterService {
9
9
  constructor(router, route, contextService) {
10
10
  this.router = router;
@@ -104,4 +104,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
104
104
  type: Injectable,
105
105
  args: [{ providedIn: 'root' }]
106
106
  }], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.ContextService }]; } });
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1yb3V0ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3NyYy9zZXJ2aWNlcy9mbG93LXJvdXRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUlMLGdCQUFnQixFQUNoQixhQUFhLEVBQ2IsZUFBZSxFQUNmLGVBQWUsR0FHaEIsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYyxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7OztBQUl0RCxNQUFNLE9BQU8saUJBQWlCO0lBTzVCLFlBQW9CLE1BQWMsRUFBVSxLQUFxQixFQUFVLGNBQThCO1FBQXJGLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQXFFbEcsc0JBQWlCLEdBQUcsQ0FBQyxLQUFxQixFQUFrQixFQUFFO1lBQ25FLE9BQU8sS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQzdFLENBQUMsQ0FBQztRQUVLLHFCQUFnQixHQUFHLENBQUMsS0FBcUIsRUFBRSxLQUFhLEVBQWtCLEVBQUU7WUFDakYsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFO2dCQUNkLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7WUFFRCxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFF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TSxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDM0YsQ0FBQzs7K0dBNUlVLGlCQUFpQjttSEFBakIsaUJBQWlCLGNBREosTUFBTTs0RkFDbkIsaUJBQWlCO2tCQUQ3QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFjdGl2YXRlZFJvdXRlLFxuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICBFdmVudCxcbiAgTmF2aWdhdGlvbkNhbmNlbCxcbiAgTmF2aWdhdGlvbkVuZCxcbiAgTmF2aWdhdGlvbkVycm9yLFxuICBOYXZpZ2F0aW9uU3RhcnQsXG4gIFBhcmFtcyxcbiAgUm91dGVyLFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQ29udGV4dFNlcnZpY2UgfSBmcm9tICdAdmVsb2NlL3Nkay9ydW50aW1lJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVkVMT0NFX0ZMT1dfUk9PVF9ST1VURSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBSb3V0ZVdpdGhJZCB9IGZyb20gJy4uL3R5cGVzL3JvdXRlLnR5cGVzJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBGbG93Um91dGVyU2VydmljZSB7XG4gIHByaXZhdGUgcm91dGVDaGFuZ2UkOiBPYnNlcnZhYmxlPEV2ZW50PjtcbiAgcHJpdmF0ZSBsYXN0Q2hpbGRQYXJhbXMkOiBPYnNlcnZhYmxlPFBhcmFtcz47XG4gIHByaXZhdGUgbGFzdENoaWxkUm91dGUkOiBPYnNlcnZhYmxlPEFjdGl2YXRlZFJvdXRlU25hcHNob3Q+O1xuXG4gIHB1YmxpYyBsb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UpIHtcbiAgICB0aGlzLnJvdXRlQ2hhbmdlJCA9IHRoaXMucm91dGVyLmV2ZW50cy5waXBlKFxuICAgICAgZmlsdGVyKGUgPT4gZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpLFxuICAgICAgc2hhcmVSZXBsYXkoKSxcbiAgICApO1xuXG4gICAgdGhpcy5sYXN0Q2hpbGRQYXJhbXMkID0gdGhpcy53YXRjaExhc3RDaGlsZFBhcmFtcyQodGhpcy5yb3V0ZSkucGlwZShcbiAgICAgIHN0YXJ0V2l0aCh0aGlzLmdldExhc3RDaGlsZFBhcmFtcyh0aGlzLnJvdXRlLnNuYXBzaG90KSksXG4gICAgICBzaGFyZVJlcGxheSgpLFxuICAgICk7XG4gICAgdGhpcy5sYXN0Q2hpbGRSb3V0ZSQgPSB0aGlzLndhdGNoTGFzdENoaWxkUm91dGUkKHRoaXMucm91dGUpLnBpcGUoXG4gICAgICBzdGFydFdpdGgodGhpcy5nZXRMYXN0Q2hpbGRSb3V0ZVNuYXBzaG90KHRoaXMucm91dGUuc25hcHNob3QpKSxcbiAgICAgIHNoYXJlUmVwbGF5KCksXG4gICAgKTtcblxuICAgIHRoaXMubG9hZGluZyQgPSB0aGlzLnJvdXRlci5ldmVudHMucGlwZShcbiAgICAgIGZpbHRlcihcbiAgICAgICAgZSA9PlxuICAgICAgICAgIGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQgfHxcbiAgICAgICAgICBlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkNhbmNlbCB8fFxuICAgICAgICAgIGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kIHx8XG4gICAgICAgICAgZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FcnJvcixcbiAgICAgICksXG4gICAgICBtYXAoZSA9PiBlIGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSxcbiAgICAgIHN0YXJ0V2l0aChmYWxzZSksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICk7XG4gIH1cblxuICBnZXRGbG93Um9vdFJvdXRlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgcGF0aCA9IFsuLi5yb3V0ZS5wYXRoRnJvbVJvb3RdO1xuXG4gICAgd2hpbGUgKHBhdGgubGVuZ3RoKSB7XG4gICAgICBjb25zdCBwYXJlbnQgPSBwYXRoLnBvcCgpO1xuXG4gICAgICBpZiAoIXBhcmVudCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKChwYXJlbnQucm91dGVDb25maWcgYXMgUm91dGVXaXRoSWQpPy5pZCA9PT0gVkVMT0NFX0ZMT1dfUk9PVF9ST1VURSkge1xuICAgICAgICByZXR1cm4gcGFyZW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxuXG4gIGdldEZsb3dSb290UGF0aChyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IHN0cmluZyB7XG4gICAgY29uc3Qgcm9vdFJvdXRlID0gdGhpcy5nZXRGbG93Um9vdFJvdXRlKHJvdXRlKTtcbiAgICBpZiAoIXJvb3RSb3V0ZSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IHBhdGggPSByb290Um91dGUucGF0aEZyb21Sb290XG4gICAgICAubWFwKHIgPT4gci5yb3V0ZUNvbmZpZz8ucGF0aClcbiAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgIC5qb2luKCcvJyk7XG5cbiAgICByZXR1cm4gJy8nICsgcGF0aDtcbiAgfVxuXG4gIGdldCByb3V0ZSQoKTogT2JzZXJ2YWJsZTxBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90PiB7XG4gICAgcmV0dXJuIHRoaXMubGFzdENoaWxkUm91dGUkO1xuICB9XG5cbiAgZ2V0IHBhcmFtcyQoKTogT2JzZXJ2YWJsZTxQYXJhbXM+IHtcbiAgICByZXR1cm4gdGhpcy5sYXN0Q2hpbGRQYXJhbXMkO1xuICB9XG5cbiAgcHVibGljIGdldExhc3RDaGlsZFJvdXRlID0gKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSk6IEFjdGl2YXRlZFJvdXRlID0+IHtcbiAgICByZXR1cm4gcm91dGUuZmlyc3RDaGlsZCA/IHRoaXMuZ2V0TGFzdENoaWxkUm91dGUocm91dGUuZmlyc3RDaGlsZCkgOiByb3V0ZTtcbiAgfTtcblxuICBwdWJsaWMgZ2V0TnRoQ2hpbGRSb3V0ZSA9IChyb3V0ZTogQWN0aXZhdGVkUm91dGUsIGluZGV4OiBudW1iZXIpOiBBY3RpdmF0ZWRSb3V0ZSA9PiB7XG4gICAgaWYgKGluZGV4IDw9IDApIHtcbiAgICAgIHJldHVybiByb3V0ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gcm91dGUuZmlyc3RDaGlsZCA/IHRoaXMuZ2V0TnRoQ2hpbGRSb3V0ZShyb3V0ZS5maXJzdENoaWxkLCBpbmRleCAtIDEpIDogcm91dGU7XG4gIH07XG5cbiAgcHVibGljIGdldExhc3RDaGlsZFJvdXRlU25hcHNob3QgPSAocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90ID0+IHtcbiAgICByZXR1cm4gcm91dGUuZmlyc3RDaGlsZCA/IHRoaXMuZ2V0TGFzdENoaWxkUm91dGVTbmFwc2hvdChyb3V0ZS5maXJzdENoaWxkKSA6IHJvdXRlO1xuICB9O1xuXG4gIHB1YmxpYyB3YXRjaExhc3RDaGlsZFJvdXRlJCA9IChyb3V0ZTogQWN0aXZhdGVkUm91dGUpOiBPYnNlcnZhYmxlPEFjdGl2YXRlZFJvdXRlU25hcHNob3Q+ID0+IHtcbiAgICByZXR1cm4gdGhpcy5yb3V0ZUNoYW5nZSQucGlwZShtYXAoKCkgPT4gdGhpcy5nZXRMYXN0Q2hpbGRSb3V0ZVNuYXBzaG90KHJvdXRlLnNuYXBzaG90KSkpO1xuICB9O1xuXG4gIHB1YmxpYyBnZXRMYXN0Q2hpbGRQYXJhbXMgPSAocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBQYXJhbXMgPT4ge1xuICAgIHJldHVybiByb3V0ZS5maXJzdENoaWxkID8gdGhpcy5nZXRMYXN0Q2hpbGRQYXJhbXMocm91dGUuZmlyc3RDaGlsZCkgOiByb3V0ZS5wYXJhbXM7XG4gIH07XG5cbiAgcHVibGljIHdhdGNoTGFzdENoaWxkUGFyYW1zJCA9IChyb3V0ZTogQWN0aXZhdGVkUm91dGUpOiBPYnNlcnZhYmxlPFBhcmFtcz4gPT4ge1xuICAgIHJldHVybiB0aGlzLnJvdXRlQ2hhbmdlJC5waXBlKG1hcCgoKSA9PiB0aGlzLmdldExhc3RDaGlsZFBhcmFtcyhyb3V0ZS5zbmFwc2hvdCkpKTtcbiAgfTtcblxuICBwdWJsaWMgZ2V0Rmxvd1N1YnBhdGgkID0gKCk6IE9ic2VydmFibGU8c3RyaW5nPiA9PiB7XG4gICAgcmV0dXJuIHRoaXMucm91dGUkLnBpcGUoXG4gICAgICBtYXAocm91dGUgPT4ge1xuICAgICAgICBjb25zdCB1cmwgPSByb3V0ZS51cmwuam9pbignLycpO1xuICAgICAgICBjb25zdCBmbG93Um9vdFVybCA9IHRoaXMuZ2V0Rmxvd1Jvb3RQYXRoKHJvdXRlKTtcbiAgICAgICAgcmV0dXJuIHVybC5yZXBsYWNlKGZsb3dSb290VXJsLCAnJyk7XG4gICAgICB9KSxcbiAgICApO1xuICB9O1xuXG4gIHB1YmxpYyBpc0NvbmZpZ3VyYXRpb25Sb3V0ZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Rmxvd1N1YnBhdGgkKCkucGlwZShtYXAodXJsID0+IHVybC5zdGFydHNXaXRoKCdwcm9kdWN0JykpKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0NhcnRSb3V0ZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Rmxvd1N1YnBhdGgkKCkucGlwZShtYXAodXJsID0+IHVybC5zdGFydHNXaXRoKCdjYXJ0JykpKTtcbiAgfVxuXG4gIHB1YmxpYyBuYXZpZ2F0ZVRvUHJvZHVjdENvbmZpZ3VyYXRpb24ocHJvZHVjdElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLnVwZGF0ZSh7IHByb3BlcnRpZXM6IHsgcHJvZHVjdElkIH0gfSk7XG5cbiAgICBjb25zdCByb3V0ZVNuYXBzaG90ID0gdGhpcy5nZXRMYXN0Q2hpbGRSb3V0ZVNuYXBzaG90KHRoaXMucm91dGUuc25hcHNob3QpO1xuICAgIGNvbnN0IGZsb3dSb3V0ZVVybCA9IHRoaXMuZ2V0Rmxvd1Jvb3RQYXRoKHJvdXRlU25hcHNob3QpO1xuXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2Zsb3dSb3V0ZVVybCwgJ3Byb2R1Y3QnXSwge1xuICAgICAgcXVlcnlQYXJhbXM6IHsgLi4ucm91dGVTbmFwc2hvdC5xdWVyeVBhcmFtcywgcHJvZHVjdElkIH0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmF2aWdhdGVUb1Nob3BwaW5nQ2FydCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLnVwZGF0ZSh7IHByb3BlcnRpZXM6IHsgcHJvZHVjdElkOiB1bmRlZmluZWQgfSB9KTtcblxuICAgIGNvbnN0IHJvdXRlU25hcHNob3QgPSB0aGlzLmdldExhc3RDaGlsZFJvdXRlU25hcHNob3QodGhpcy5yb3V0ZS5zbmFwc2hvdCk7XG4gICAgY29uc3QgZmxvd1JvdXRlVXJsID0gdGhpcy5nZXRGbG93Um9vdFBhdGgocm91dGVTbmFwc2hvdCk7XG5cbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbZmxvd1JvdXRlVXJsLCAnY2FydCddLCB7IHF1ZXJ5UGFyYW1zOiByb3V0ZVNuYXBzaG90LnF1ZXJ5UGFyYW1zIH0pO1xuICB9XG59XG4iXX0=
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1yb3V0ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3NyYy9zZXJ2aWNlcy9mbG93LXJvdXRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUlMLGdCQUFnQixFQUNoQixhQUFhLEVBQ2IsZUFBZSxFQUNmLGVBQWUsR0FHaEIsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYyxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7OztBQUl0RCxNQUFNLE9BQU8saUJBQWlCO0lBTzVCLFlBQW9CLE1BQWMsRUFBVSxLQUFxQixFQUFVLGNBQThCO1FBQXJGLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQXFFbEcsc0JBQWlCLEdBQUcsQ0FBQyxLQUFxQixFQUFrQixFQUFFO1lBQ25FLE9BQU8sS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQzdFLENBQUMsQ0FBQztRQUVLLHFCQUFnQixHQUFHLENBQUMsS0FBcUIsRUFBRSxLQUFhLEVBQWtCLEVBQUU7WUFDakYsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFO2dCQUNkLE9BQU8sS0FBSyxDQUFDO2FBQ2Q7WUFFRCxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFF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TSxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDM0YsQ0FBQzs7K0dBNUlVLGlCQUFpQjttSEFBakIsaUJBQWlCLGNBREosTUFBTTs0RkFDbkIsaUJBQWlCO2tCQUQ3QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFjdGl2YXRlZFJvdXRlLFxuICBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICBFdmVudCxcbiAgTmF2aWdhdGlvbkNhbmNlbCxcbiAgTmF2aWdhdGlvbkVuZCxcbiAgTmF2aWdhdGlvbkVycm9yLFxuICBOYXZpZ2F0aW9uU3RhcnQsXG4gIFBhcmFtcyxcbiAgUm91dGVyLFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQ29udGV4dFNlcnZpY2UgfSBmcm9tICdAdmVsb2NlL3Nkay9jb3JlJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVkVMT0NFX0ZMT1dfUk9PVF9ST1VURSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBSb3V0ZVdpdGhJZCB9IGZyb20gJy4uL3R5cGVzL3JvdXRlLnR5cGVzJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBGbG93Um91dGVyU2VydmljZSB7XG4gIHByaXZhdGUgcm91dGVDaGFuZ2UkOiBPYnNlcnZhYmxlPEV2ZW50PjtcbiAgcHJpdmF0ZSBsYXN0Q2hpbGRQYXJhbXMkOiBPYnNlcnZhYmxlPFBhcmFtcz47XG4gIHByaXZhdGUgbGFzdENoaWxkUm91dGUkOiBPYnNlcnZhYmxlPEFjdGl2YXRlZFJvdXRlU25hcHNob3Q+O1xuXG4gIHB1YmxpYyBsb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlcjogUm91dGVyLCBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSwgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UpIHtcbiAgICB0aGlzLnJvdXRlQ2hhbmdlJCA9IHRoaXMucm91dGVyLmV2ZW50cy5waXBlKFxuICAgICAgZmlsdGVyKGUgPT4gZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpLFxuICAgICAgc2hhcmVSZXBsYXkoKSxcbiAgICApO1xuXG4gICAgdGhpcy5sYXN0Q2hpbGRQYXJhbXMkID0gdGhpcy53YXRjaExhc3RDaGlsZFBhcmFtcyQodGhpcy5yb3V0ZSkucGlwZShcbiAgICAgIHN0YXJ0V2l0aCh0aGlzLmdldExhc3RDaGlsZFBhcmFtcyh0aGlzLnJvdXRlLnNuYXBzaG90KSksXG4gICAgICBzaGFyZVJlcGxheSgpLFxuICAgICk7XG4gICAgdGhpcy5sYXN0Q2hpbGRSb3V0ZSQgPSB0aGlzLndhdGNoTGFzdENoaWxkUm91dGUkKHRoaXMucm91dGUpLnBpcGUoXG4gICAgICBzdGFydFdpdGgodGhpcy5nZXRMYXN0Q2hpbGRSb3V0ZVNuYXBzaG90KHRoaXMucm91dGUuc25hcHNob3QpKSxcbiAgICAgIHNoYXJlUmVwbGF5KCksXG4gICAgKTtcblxuICAgIHRoaXMubG9hZGluZyQgPSB0aGlzLnJvdXRlci5ldmVudHMucGlwZShcbiAgICAgIGZpbHRlcihcbiAgICAgICAgZSA9PlxuICAgICAgICAgIGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQgfHxcbiAgICAgICAgICBlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkNhbmNlbCB8fFxuICAgICAgICAgIGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kIHx8XG4gICAgICAgICAgZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FcnJvcixcbiAgICAgICksXG4gICAgICBtYXAoZSA9PiBlIGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSxcbiAgICAgIHN0YXJ0V2l0aChmYWxzZSksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICk7XG4gIH1cblxuICBnZXRGbG93Um9vdFJvdXRlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgcGF0aCA9IFsuLi5yb3V0ZS5wYXRoRnJvbVJvb3RdO1xuXG4gICAgd2hpbGUgKHBhdGgubGVuZ3RoKSB7XG4gICAgICBjb25zdCBwYXJlbnQgPSBwYXRoLnBvcCgpO1xuXG4gICAgICBpZiAoIXBhcmVudCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgaWYgKChwYXJlbnQucm91dGVDb25maWcgYXMgUm91dGVXaXRoSWQpPy5pZCA9PT0gVkVMT0NFX0ZMT1dfUk9PVF9ST1VURSkge1xuICAgICAgICByZXR1cm4gcGFyZW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxuXG4gIGdldEZsb3dSb290UGF0aChyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IHN0cmluZyB7XG4gICAgY29uc3Qgcm9vdFJvdXRlID0gdGhpcy5nZXRGbG93Um9vdFJvdXRlKHJvdXRlKTtcbiAgICBpZiAoIXJvb3RSb3V0ZSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGNvbnN0IHBhdGggPSByb290Um91dGUucGF0aEZyb21Sb290XG4gICAgICAubWFwKHIgPT4gci5yb3V0ZUNvbmZpZz8ucGF0aClcbiAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgIC5qb2luKCcvJyk7XG5cbiAgICByZXR1cm4gJy8nICsgcGF0aDtcbiAgfVxuXG4gIGdldCByb3V0ZSQoKTogT2JzZXJ2YWJsZTxBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90PiB7XG4gICAgcmV0dXJuIHRoaXMubGFzdENoaWxkUm91dGUkO1xuICB9XG5cbiAgZ2V0IHBhcmFtcyQoKTogT2JzZXJ2YWJsZTxQYXJhbXM+IHtcbiAgICByZXR1cm4gdGhpcy5sYXN0Q2hpbGRQYXJhbXMkO1xuICB9XG5cbiAgcHVibGljIGdldExhc3RDaGlsZFJvdXRlID0gKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSk6IEFjdGl2YXRlZFJvdXRlID0+IHtcbiAgICByZXR1cm4gcm91dGUuZmlyc3RDaGlsZCA/IHRoaXMuZ2V0TGFzdENoaWxkUm91dGUocm91dGUuZmlyc3RDaGlsZCkgOiByb3V0ZTtcbiAgfTtcblxuICBwdWJsaWMgZ2V0TnRoQ2hpbGRSb3V0ZSA9IChyb3V0ZTogQWN0aXZhdGVkUm91dGUsIGluZGV4OiBudW1iZXIpOiBBY3RpdmF0ZWRSb3V0ZSA9PiB7XG4gICAgaWYgKGluZGV4IDw9IDApIHtcbiAgICAgIHJldHVybiByb3V0ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gcm91dGUuZmlyc3RDaGlsZCA/IHRoaXMuZ2V0TnRoQ2hpbGRSb3V0ZShyb3V0ZS5maXJzdENoaWxkLCBpbmRleCAtIDEpIDogcm91dGU7XG4gIH07XG5cbiAgcHVibGljIGdldExhc3RDaGlsZFJvdXRlU25hcHNob3QgPSAocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90ID0+IHtcbiAgICByZXR1cm4gcm91dGUuZmlyc3RDaGlsZCA/IHRoaXMuZ2V0TGFzdENoaWxkUm91dGVTbmFwc2hvdChyb3V0ZS5maXJzdENoaWxkKSA6IHJvdXRlO1xuICB9O1xuXG4gIHB1YmxpYyB3YXRjaExhc3RDaGlsZFJvdXRlJCA9IChyb3V0ZTogQWN0aXZhdGVkUm91dGUpOiBPYnNlcnZhYmxlPEFjdGl2YXRlZFJvdXRlU25hcHNob3Q+ID0+IHtcbiAgICByZXR1cm4gdGhpcy5yb3V0ZUNoYW5nZSQucGlwZShtYXAoKCkgPT4gdGhpcy5nZXRMYXN0Q2hpbGRSb3V0ZVNuYXBzaG90KHJvdXRlLnNuYXBzaG90KSkpO1xuICB9O1xuXG4gIHB1YmxpYyBnZXRMYXN0Q2hpbGRQYXJhbXMgPSAocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBQYXJhbXMgPT4ge1xuICAgIHJldHVybiByb3V0ZS5maXJzdENoaWxkID8gdGhpcy5nZXRMYXN0Q2hpbGRQYXJhbXMocm91dGUuZmlyc3RDaGlsZCkgOiByb3V0ZS5wYXJhbXM7XG4gIH07XG5cbiAgcHVibGljIHdhdGNoTGFzdENoaWxkUGFyYW1zJCA9IChyb3V0ZTogQWN0aXZhdGVkUm91dGUpOiBPYnNlcnZhYmxlPFBhcmFtcz4gPT4ge1xuICAgIHJldHVybiB0aGlzLnJvdXRlQ2hhbmdlJC5waXBlKG1hcCgoKSA9PiB0aGlzLmdldExhc3RDaGlsZFBhcmFtcyhyb3V0ZS5zbmFwc2hvdCkpKTtcbiAgfTtcblxuICBwdWJsaWMgZ2V0Rmxvd1N1YnBhdGgkID0gKCk6IE9ic2VydmFibGU8c3RyaW5nPiA9PiB7XG4gICAgcmV0dXJuIHRoaXMucm91dGUkLnBpcGUoXG4gICAgICBtYXAocm91dGUgPT4ge1xuICAgICAgICBjb25zdCB1cmwgPSByb3V0ZS51cmwuam9pbignLycpO1xuICAgICAgICBjb25zdCBmbG93Um9vdFVybCA9IHRoaXMuZ2V0Rmxvd1Jvb3RQYXRoKHJvdXRlKTtcbiAgICAgICAgcmV0dXJuIHVybC5yZXBsYWNlKGZsb3dSb290VXJsLCAnJyk7XG4gICAgICB9KSxcbiAgICApO1xuICB9O1xuXG4gIHB1YmxpYyBpc0NvbmZpZ3VyYXRpb25Sb3V0ZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Rmxvd1N1YnBhdGgkKCkucGlwZShtYXAodXJsID0+IHVybC5zdGFydHNXaXRoKCdwcm9kdWN0JykpKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0NhcnRSb3V0ZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Rmxvd1N1YnBhdGgkKCkucGlwZShtYXAodXJsID0+IHVybC5zdGFydHNXaXRoKCdjYXJ0JykpKTtcbiAgfVxuXG4gIHB1YmxpYyBuYXZpZ2F0ZVRvUHJvZHVjdENvbmZpZ3VyYXRpb24ocHJvZHVjdElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLnVwZGF0ZSh7IHByb3BlcnRpZXM6IHsgcHJvZHVjdElkIH0gfSk7XG5cbiAgICBjb25zdCByb3V0ZVNuYXBzaG90ID0gdGhpcy5nZXRMYXN0Q2hpbGRSb3V0ZVNuYXBzaG90KHRoaXMucm91dGUuc25hcHNob3QpO1xuICAgIGNvbnN0IGZsb3dSb3V0ZVVybCA9IHRoaXMuZ2V0Rmxvd1Jvb3RQYXRoKHJvdXRlU25hcHNob3QpO1xuXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2Zsb3dSb3V0ZVVybCwgJ3Byb2R1Y3QnXSwge1xuICAgICAgcXVlcnlQYXJhbXM6IHsgLi4ucm91dGVTbmFwc2hvdC5xdWVyeVBhcmFtcywgcHJvZHVjdElkIH0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmF2aWdhdGVUb1Nob3BwaW5nQ2FydCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRleHRTZXJ2aWNlLnVwZGF0ZSh7IHByb3BlcnRpZXM6IHsgcHJvZHVjdElkOiB1bmRlZmluZWQgfSB9KTtcblxuICAgIGNvbnN0IHJvdXRlU25hcHNob3QgPSB0aGlzLmdldExhc3RDaGlsZFJvdXRlU25hcHNob3QodGhpcy5yb3V0ZS5zbmFwc2hvdCk7XG4gICAgY29uc3QgZmxvd1JvdXRlVXJsID0gdGhpcy5nZXRGbG93Um9vdFBhdGgocm91dGVTbmFwc2hvdCk7XG5cbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbZmxvd1JvdXRlVXJsLCAnY2FydCddLCB7IHF1ZXJ5UGFyYW1zOiByb3V0ZVNuYXBzaG90LnF1ZXJ5UGFyYW1zIH0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,58 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { FlowDialogComponent } from '../components/dialog/dialog.component';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "primeng/dynamicdialog";
5
+ import * as i2 from "@veloce/sdk/core";
6
+ export class FlowDialogService {
7
+ constructor(dialogService, contextService) {
8
+ this.dialogService = dialogService;
9
+ this.contextService = contextService;
10
+ }
11
+ show(config) {
12
+ return this.dialogService.open(FlowDialogComponent, {
13
+ dismissableMask: true,
14
+ closeOnEscape: true,
15
+ closable: true,
16
+ showHeader: true,
17
+ header: config.title,
18
+ width: '440px',
19
+ data: { config },
20
+ }).onClose;
21
+ }
22
+ showEmptyCartDialog() {
23
+ return this.show({
24
+ title: 'No Products in Quote',
25
+ description: 'There are no products in your Quote. To save a Quote, add at least one product.',
26
+ primaryButton: 'OK',
27
+ });
28
+ }
29
+ showReadonlyModeDialog() {
30
+ const ctx = this.contextService.resolve();
31
+ const objectName = (ctx === null || ctx === void 0 ? void 0 : ctx.mode) ? ctx.mode[0].toUpperCase() + ctx.mode.substring(1).toLowerCase() : 'Object';
32
+ return this.show({
33
+ title: 'Error',
34
+ description: `${objectName} Cannot be Saved`,
35
+ primaryButton: 'OK',
36
+ });
37
+ }
38
+ showQuoteReadonlyModeDialog() {
39
+ return this.show({
40
+ title: 'Quote Cannot be Saved',
41
+ description: 'It is only possible to save quotes with the “Draft” status. Please create a new quote to make and save changes.',
42
+ primaryButton: 'OK',
43
+ });
44
+ }
45
+ showAccountNoChangesDialog() {
46
+ return this.show({
47
+ title: 'No Changes to Save',
48
+ description: 'There are no changes since the last update. Please make changes to proceed.',
49
+ primaryButton: 'OK',
50
+ });
51
+ }
52
+ }
53
+ FlowDialogService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: FlowDialogService, deps: [{ token: i1.DialogService }, { token: i2.ContextService }], target: i0.ɵɵFactoryTarget.Injectable });
54
+ FlowDialogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: FlowDialogService });
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: FlowDialogService, decorators: [{
56
+ type: Injectable
57
+ }], ctorParameters: function () { return [{ type: i1.DialogService }, { type: i2.ContextService }]; } });
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm93LWRpYWxvZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvc3JjL3NlcnZpY2VzL2Zvdy1kaWFsb2cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSTNDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7O0FBSTVFLE1BQU0sT0FBTyxpQkFBaUI7SUFDNUIsWUFBb0IsYUFBNEIsRUFBVSxjQUE4QjtRQUFwRSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtJQUFHLENBQUM7SUFFckYsSUFBSSxDQUFDLE1BQXdCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLEVBQUU7WUFDbEQsZUFBZSxFQUFFLElBQUk7WUFDckIsYUFBYSxFQUFFLElBQUk7WUFDbkIsUUFBUSxFQUFFLElBQUk7WUFDZCxVQUFVLEVBQUUsSUFBSTtZQUNoQixNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUs7WUFDcEIsS0FBSyxFQUFFLE9BQU87WUFDZCxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUU7U0FDakIsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUNiLENBQUM7SUFFTSxtQkFBbUI7UUFDeEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ2YsS0FBSyxFQUFFLHNCQUFzQjtZQUM3QixXQUFXLEVBQUUsaUZBQWlGO1lBQzlGLGFBQWEsRUFBRSxJQUFJO1NBQ3BCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxzQkFBc0I7UUFDM0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMxQyxNQUFNLFVBQVUsR0FBRyxDQUFBLEdBQUcsYUFBSCxHQUFHLHVCQUFILEdBQUcsQ0FBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUUxRyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDZixLQUFLLEVBQUUsT0FBTztZQUNkLFdBQVcsRUFBRSxHQUFHLFVBQVUsa0JBQWtCO1lBQzVDLGFBQWEsRUFBRSxJQUFJO1NBQ3BCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSwyQkFBMkI7UUFDaEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ2YsS0FBSyxFQUFFLHVCQUF1QjtZQUM5QixXQUFXLEVBQ1QsaUhBQWlIO1lBQ25ILGFBQWEsRUFBRSxJQUFJO1NBQ3BCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSwwQkFBMEI7UUFDL0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ2YsS0FBSyxFQUFFLG9CQUFvQjtZQUMzQixXQUFXLEVBQUUsNkVBQTZFO1lBQzFGLGFBQWEsRUFBRSxJQUFJO1NBQ3BCLENBQUMsQ0FBQztJQUNMLENBQUM7OytHQWpEVSxpQkFBaUI7bUhBQWpCLGlCQUFpQjs0RkFBakIsaUJBQWlCO2tCQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udGV4dFNlcnZpY2UgfSBmcm9tICdAdmVsb2NlL3Nkay9jb3JlJztcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmxvd0RpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL2NvbXBvbmVudHMvZGlhbG9nL2RpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRmxvd0RpYWxvZ0NvbmZpZyB9IGZyb20gJy4uL2NvbXBvbmVudHMvZGlhbG9nL2RpYWxvZy50eXBlcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGbG93RGlhbG9nU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSwgcHJpdmF0ZSBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UpIHt9XG5cbiAgcHVibGljIHNob3coY29uZmlnOiBGbG93RGlhbG9nQ29uZmlnKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKEZsb3dEaWFsb2dDb21wb25lbnQsIHtcbiAgICAgIGRpc21pc3NhYmxlTWFzazogdHJ1ZSxcbiAgICAgIGNsb3NlT25Fc2NhcGU6IHRydWUsXG4gICAgICBjbG9zYWJsZTogdHJ1ZSxcbiAgICAgIHNob3dIZWFkZXI6IHRydWUsXG4gICAgICBoZWFkZXI6IGNvbmZpZy50aXRsZSxcbiAgICAgIHdpZHRoOiAnNDQwcHgnLFxuICAgICAgZGF0YTogeyBjb25maWcgfSxcbiAgICB9KS5vbkNsb3NlO1xuICB9XG5cbiAgcHVibGljIHNob3dFbXB0eUNhcnREaWFsb2coKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuc2hvdyh7XG4gICAgICB0aXRsZTogJ05vIFByb2R1Y3RzIGluIFF1b3RlJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnVGhlcmUgYXJlIG5vIHByb2R1Y3RzIGluIHlvdXIgUXVvdGUuIFRvIHNhdmUgYSBRdW90ZSwgYWRkIGF0IGxlYXN0IG9uZSBwcm9kdWN0LicsXG4gICAgICBwcmltYXJ5QnV0dG9uOiAnT0snLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHNob3dSZWFkb25seU1vZGVEaWFsb2coKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgY29uc3QgY3R4ID0gdGhpcy5jb250ZXh0U2VydmljZS5yZXNvbHZlKCk7XG4gICAgY29uc3Qgb2JqZWN0TmFtZSA9IGN0eD8ubW9kZSA/IGN0eC5tb2RlWzBdLnRvVXBwZXJDYXNlKCkgKyBjdHgubW9kZS5zdWJzdHJpbmcoMSkudG9Mb3dlckNhc2UoKSA6ICdPYmplY3QnO1xuXG4gICAgcmV0dXJuIHRoaXMuc2hvdyh7XG4gICAgICB0aXRsZTogJ0Vycm9yJyxcbiAgICAgIGRlc2NyaXB0aW9uOiBgJHtvYmplY3ROYW1lfSBDYW5ub3QgYmUgU2F2ZWRgLFxuICAgICAgcHJpbWFyeUJ1dHRvbjogJ09LJyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93UXVvdGVSZWFkb25seU1vZGVEaWFsb2coKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuc2hvdyh7XG4gICAgICB0aXRsZTogJ1F1b3RlIENhbm5vdCBiZSBTYXZlZCcsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0l0IGlzIG9ubHkgcG9zc2libGUgdG8gc2F2ZSBxdW90ZXMgd2l0aCB0aGUg4oCcRHJhZnTigJ0gc3RhdHVzLiBQbGVhc2UgY3JlYXRlIGEgbmV3IHF1b3RlIHRvIG1ha2UgYW5kIHNhdmUgY2hhbmdlcy4nLFxuICAgICAgcHJpbWFyeUJ1dHRvbjogJ09LJyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzaG93QWNjb3VudE5vQ2hhbmdlc0RpYWxvZygpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5zaG93KHtcbiAgICAgIHRpdGxlOiAnTm8gQ2hhbmdlcyB0byBTYXZlJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnVGhlcmUgYXJlIG5vIGNoYW5nZXMgc2luY2UgdGhlIGxhc3QgdXBkYXRlLiBQbGVhc2UgbWFrZSBjaGFuZ2VzIHRvIHByb2NlZWQuJyxcbiAgICAgIHByaW1hcnlCdXR0b246ICdPSycsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,3 +1,3 @@
1
1
  import { InjectionToken } from '@angular/core';
2
2
  export const FLOW_CUSTOMIZATION = new InjectionToken('FLOW_CUSTOMIZATION');
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1jdXN0b21pemF0aW9uLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvc3JjL3R5cGVzL2Zsb3ctY3VzdG9taXphdGlvbi50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSy9DLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksY0FBYyxDQUFvQixvQkFBb0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRlbXBsYXRlQ29tcG9uZW50V2l0aEF0dGFjaG1lbnRzLCBVSURlZmluaXRpb24gYXMgTGVnYWN5VUlEZWZpbml0aW9uIH0gZnJvbSAnQHZlbG9jZS9jb3JlJztcbmltcG9ydCB7IFVJRGVmaW5pdGlvbiB9IGZyb20gJ0B2ZWxvY2Uvc2RrL2Ntcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBjb25zdCBGTE9XX0NVU1RPTUlaQVRJT04gPSBuZXcgSW5qZWN0aW9uVG9rZW48Rmxvd0N1c3RvbWl6YXRpb24+KCdGTE9XX0NVU1RPTUlaQVRJT04nKTtcblxuZXhwb3J0IGludGVyZmFjZSBGbG93Q3VzdG9taXphdGlvbiB7XG4gIGdldFVpRGVmaW5pdGlvbj8ocHJvZHVjdElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFVJRGVmaW5pdGlvbiB8IG51bGw+O1xuICBnZXRMZWdhY3lVaURlZmluaXRpb24/KHByb2R1Y3RJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxMZWdhY3lVSURlZmluaXRpb24gfCBudWxsPjtcbiAgZ2V0U2hvcHBpbmdDYXJ0Q29tcG9uZW50PygpOiBPYnNlcnZhYmxlPFRlbXBsYXRlQ29tcG9uZW50V2l0aEF0dGFjaG1lbnRzIHwgbnVsbD47XG59XG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy1jdXN0b21pemF0aW9uLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvc3JjL3R5cGVzL2Zsb3ctY3VzdG9taXphdGlvbi50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSy9DLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksY0FBYyxDQUFvQixvQkFBb0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRlbXBsYXRlQ29tcG9uZW50V2l0aEF0dGFjaG1lbnRzLCBVSURlZmluaXRpb24gYXMgTGVnYWN5VUlEZWZpbml0aW9uIH0gZnJvbSAnQHZlbG9jZS9jb3JlJztcbmltcG9ydCB7IFVJRGVmaW5pdGlvbiB9IGZyb20gJ0B2ZWxvY2Uvc2RrL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgY29uc3QgRkxPV19DVVNUT01JWkFUSU9OID0gbmV3IEluamVjdGlvblRva2VuPEZsb3dDdXN0b21pemF0aW9uPignRkxPV19DVVNUT01JWkFUSU9OJyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmxvd0N1c3RvbWl6YXRpb24ge1xuICBnZXRVaURlZmluaXRpb24/KHByb2R1Y3RJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxVSURlZmluaXRpb24gfCBudWxsPjtcbiAgZ2V0TGVnYWN5VWlEZWZpbml0aW9uPyhwcm9kdWN0SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8TGVnYWN5VUlEZWZpbml0aW9uIHwgbnVsbD47XG4gIGdldFNob3BwaW5nQ2FydENvbXBvbmVudD8oKTogT2JzZXJ2YWJsZTxUZW1wbGF0ZUNvbXBvbmVudFdpdGhBdHRhY2htZW50cyB8IG51bGw+O1xufVxuIl19
@@ -1,3 +1,4 @@
1
+ import { ConfigurationContextMode } from '@veloce/core';
1
2
  export const getFlowObjectIdPropertyName = (objectName) => {
2
3
  switch (objectName) {
3
4
  case 'Account':
@@ -9,4 +10,13 @@ export const getFlowObjectIdPropertyName = (objectName) => {
9
10
  return 'quoteId';
10
11
  }
11
12
  };
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3NyYy91dGlscy9mbG93LnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLENBQUMsVUFBbUIsRUFBRSxFQUFFO0lBQ2pFLFFBQVEsVUFBVSxFQUFFO1FBQ2xCLEtBQUssU0FBUztZQUNaLE9BQU8sV0FBVyxDQUFDO1FBQ3JCLEtBQUssT0FBTztZQUNWLE9BQU8sU0FBUyxDQUFDO1FBQ25CLEtBQUssT0FBTyxDQUFDO1FBQ2I7WUFDRSxPQUFPLFNBQVMsQ0FBQztLQUNwQjtBQUNILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBnZXRGbG93T2JqZWN0SWRQcm9wZXJ0eU5hbWUgPSAob2JqZWN0TmFtZT86IHN0cmluZykgPT4ge1xuICBzd2l0Y2ggKG9iamVjdE5hbWUpIHtcbiAgICBjYXNlICdBY2NvdW50JzpcbiAgICAgIHJldHVybiAnYWNjb3VudElkJztcbiAgICBjYXNlICdPcmRlcic6XG4gICAgICByZXR1cm4gJ29yZGVySWQnO1xuICAgIGNhc2UgJ1F1b3RlJzpcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuICdxdW90ZUlkJztcbiAgfVxufTtcbiJdfQ==
13
+ export const getIsEditMode = (context) => {
14
+ if (context.mode === ConfigurationContextMode.QUOTE) {
15
+ return context.properties.Status === 'Draft';
16
+ }
17
+ else if (context.mode === ConfigurationContextMode.ACCOUNT) {
18
+ return true;
19
+ }
20
+ return false;
21
+ };
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvdy51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3NyYy91dGlscy9mbG93LnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBd0Isd0JBQXdCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFOUUsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyxVQUFtQixFQUFFLEVBQUU7SUFDakUsUUFBUSxVQUFVLEVBQUU7UUFDbEIsS0FBSyxTQUFTO1lBQ1osT0FBTyxXQUFXLENBQUM7UUFDckIsS0FBSyxPQUFPO1lBQ1YsT0FBTyxTQUFTLENBQUM7UUFDbkIsS0FBSyxPQUFPLENBQUM7UUFDYjtZQUNFLE9BQU8sU0FBUyxDQUFDO0tBQ3BCO0FBQ0gsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLENBQUMsT0FBNkIsRUFBVyxFQUFFO0lBQ3RFLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyx3QkFBd0IsQ0FBQyxLQUFLLEVBQUU7UUFDbkQsT0FBTyxPQUFPLENBQUMsVUFBVSxDQUFDLE1BQU0sS0FBSyxPQUFPLENBQUM7S0FDOUM7U0FBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssd0JBQXdCLENBQUMsT0FBTyxFQUFFO1FBQzVELE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFDRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbmZpZ3VyYXRpb25Db250ZXh0LCBDb25maWd1cmF0aW9uQ29udGV4dE1vZGUgfSBmcm9tICdAdmVsb2NlL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgZ2V0Rmxvd09iamVjdElkUHJvcGVydHlOYW1lID0gKG9iamVjdE5hbWU/OiBzdHJpbmcpID0+IHtcbiAgc3dpdGNoIChvYmplY3ROYW1lKSB7XG4gICAgY2FzZSAnQWNjb3VudCc6XG4gICAgICByZXR1cm4gJ2FjY291bnRJZCc7XG4gICAgY2FzZSAnT3JkZXInOlxuICAgICAgcmV0dXJuICdvcmRlcklkJztcbiAgICBjYXNlICdRdW90ZSc6XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAncXVvdGVJZCc7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRJc0VkaXRNb2RlID0gKGNvbnRleHQ6IENvbmZpZ3VyYXRpb25Db250ZXh0KTogYm9vbGVhbiA9PiB7XG4gIGlmIChjb250ZXh0Lm1vZGUgPT09IENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZS5RVU9URSkge1xuICAgIHJldHVybiBjb250ZXh0LnByb3BlcnRpZXMuU3RhdHVzID09PSAnRHJhZnQnO1xuICB9IGVsc2UgaWYgKGNvbnRleHQubW9kZSA9PT0gQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLkFDQ09VTlQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59O1xuIl19