@vendure/admin-ui 1.4.7 → 2.0.0-next.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 (1140) hide show
  1. package/catalog/catalog.module.d.ts +30 -0
  2. package/catalog/components/apply-facet-dialog/apply-facet-dialog.component.d.ts +5 -2
  3. package/catalog/components/asset-detail/asset-detail.component.d.ts +6 -4
  4. package/catalog/components/asset-list/asset-list.component.d.ts +5 -2
  5. package/catalog/components/{product-assets/product-assets.component.d.ts → assets/assets.component.d.ts} +7 -10
  6. package/catalog/components/assign-products-to-channel-dialog/assign-products-to-channel-dialog.component.d.ts +9 -7
  7. package/catalog/components/collection-contents/collection-contents.component.d.ts +5 -3
  8. package/catalog/components/collection-detail/collection-detail.component.d.ts +6 -3
  9. package/catalog/components/collection-list/collection-list.component.d.ts +6 -3
  10. package/catalog/components/collection-tree/collection-tree-node.component.d.ts +7 -3
  11. package/catalog/components/collection-tree/collection-tree.component.d.ts +10 -25
  12. package/catalog/components/collection-tree/collection-tree.service.d.ts +33 -0
  13. package/catalog/components/collection-tree/collection-tree.types.d.ts +7 -0
  14. package/catalog/components/confirm-variant-deletion-dialog/confirm-variant-deletion-dialog.component.d.ts +5 -2
  15. package/catalog/components/facet-detail/facet-detail.component.d.ts +7 -4
  16. package/catalog/components/facet-list/facet-list.component.d.ts +6 -3
  17. package/catalog/components/generate-product-variants/generate-product-variants.component.d.ts +3 -0
  18. package/catalog/components/option-value-input/option-value-input.component.d.ts +3 -0
  19. package/catalog/components/product-detail/product-detail.component.d.ts +17 -37
  20. package/catalog/components/product-detail/product-detail.types.d.ts +26 -0
  21. package/catalog/components/product-list/product-list.component.d.ts +6 -3
  22. package/catalog/components/product-options-editor/product-options-editor.component.d.ts +9 -4
  23. package/catalog/components/product-search-input/product-search-input.component.d.ts +9 -4
  24. package/catalog/components/product-variants-editor/product-variants-editor.component.d.ts +5 -2
  25. package/catalog/components/product-variants-list/product-variants-list.component.d.ts +24 -17
  26. package/catalog/components/product-variants-table/product-variants-table.component.d.ts +24 -11
  27. package/catalog/components/update-product-option-dialog/update-product-option-dialog.component.d.ts +5 -2
  28. package/catalog/components/variant-price-detail/variant-price-detail.component.d.ts +3 -0
  29. package/catalog/package.json +5 -6
  30. package/catalog/providers/product-detail/product-detail.service.d.ts +214 -93
  31. package/catalog/providers/routing/asset-resolver.d.ts +5 -3
  32. package/catalog/providers/routing/collection-resolver.d.ts +5 -2
  33. package/catalog/providers/routing/facet-resolver.d.ts +5 -4
  34. package/catalog/providers/routing/product-resolver.d.ts +5 -2
  35. package/catalog/providers/routing/product-variants-resolver.d.ts +5 -2
  36. package/catalog/public_api.d.ts +4 -1
  37. package/catalog/vendure-admin-ui-catalog.d.ts +1 -0
  38. package/core/app.component.d.ts +3 -0
  39. package/core/app.component.module.d.ts +7 -0
  40. package/core/common/base-detail.component.d.ts +2 -2
  41. package/core/common/base-entity-resolver.d.ts +1 -1
  42. package/core/common/base-list.component.d.ts +10 -0
  43. package/core/common/generated-types.d.ts +12045 -4197
  44. package/core/common/utilities/flatten-facet-values.d.ts +2 -2
  45. package/core/common/version.d.ts +1 -1
  46. package/core/components/app-shell/app-shell.component.d.ts +3 -0
  47. package/core/components/breadcrumb/breadcrumb.component.d.ts +3 -0
  48. package/core/components/channel-switcher/channel-switcher.component.d.ts +3 -0
  49. package/core/components/main-nav/main-nav.component.d.ts +3 -0
  50. package/core/components/notification/notification.component.d.ts +3 -0
  51. package/core/components/overlay-host/overlay-host.component.d.ts +3 -0
  52. package/core/components/theme-switcher/theme-switcher.component.d.ts +3 -0
  53. package/core/components/ui-language-switcher-dialog/ui-language-switcher-dialog.component.d.ts +4 -1
  54. package/core/components/user-menu/user-menu.component.d.ts +3 -0
  55. package/core/core.module.d.ts +18 -0
  56. package/core/data/client-state/client-defaults.d.ts +19 -7
  57. package/core/data/data.module.d.ts +6 -0
  58. package/core/data/definitions/administrator-definitions.d.ts +15 -15
  59. package/core/data/definitions/auth-definitions.d.ts +4 -4
  60. package/core/data/definitions/client-definitions.d.ts +16 -16
  61. package/core/data/definitions/collection-definitions.d.ts +9 -9
  62. package/core/data/definitions/customer-definitions.d.ts +22 -21
  63. package/core/data/definitions/facet-definitions.d.ts +10 -10
  64. package/core/data/definitions/order-definitions.d.ts +25 -25
  65. package/core/data/definitions/product-definitions.d.ts +44 -44
  66. package/core/data/definitions/promotion-definitions.d.ts +7 -7
  67. package/core/data/definitions/settings-definitions.d.ts +65 -65
  68. package/core/data/definitions/shared-definitions.d.ts +3 -3
  69. package/core/data/definitions/shipping-definitions.d.ts +9 -9
  70. package/core/data/providers/administrator-data.service.d.ts +15 -15
  71. package/core/data/providers/auth-data.service.d.ts +4 -3
  72. package/core/data/providers/base-data.service.d.ts +3 -0
  73. package/core/data/providers/client-data.service.d.ts +15 -14
  74. package/core/data/providers/collection-data.service.d.ts +11 -11
  75. package/core/data/providers/customer-data.service.d.ts +25 -24
  76. package/core/data/providers/data.service.d.ts +5 -2
  77. package/core/data/providers/facet-data.service.d.ts +12 -12
  78. package/core/data/providers/fetch-adapter.d.ts +3 -0
  79. package/core/data/providers/interceptor.d.ts +3 -0
  80. package/core/data/providers/order-data.service.d.ts +21 -21
  81. package/core/data/providers/product-data.service.d.ts +51 -51
  82. package/core/data/providers/promotion-data.service.d.ts +8 -8
  83. package/core/data/providers/settings-data.service.d.ts +52 -51
  84. package/core/data/providers/shipping-method-data.service.d.ts +12 -12
  85. package/core/data/query-result.d.ts +1 -1
  86. package/core/data/server-config.d.ts +5 -2
  87. package/core/package.json +5 -6
  88. package/core/providers/auth/auth.service.d.ts +5 -2
  89. package/core/providers/component-registry/component-registry.service.d.ts +3 -0
  90. package/core/providers/custom-detail-component/custom-detail-component.service.d.ts +3 -0
  91. package/core/providers/custom-field-component/custom-field-component.service.d.ts +3 -0
  92. package/core/providers/dashboard-widget/dashboard-widget.service.d.ts +3 -0
  93. package/core/providers/guard/auth.guard.d.ts +3 -0
  94. package/core/providers/health-check/health-check.service.d.ts +3 -0
  95. package/core/providers/i18n/custom-message-format-compiler.d.ts +3 -0
  96. package/core/providers/i18n/i18n.service.d.ts +3 -0
  97. package/core/providers/job-queue/job-queue.service.d.ts +3 -0
  98. package/core/providers/local-storage/local-storage.service.d.ts +3 -0
  99. package/core/providers/modal/modal.service.d.ts +4 -67
  100. package/core/providers/modal/modal.types.d.ts +67 -0
  101. package/core/providers/nav-builder/nav-builder.service.d.ts +3 -0
  102. package/core/providers/notification/notification.service.d.ts +3 -0
  103. package/core/providers/overlay-host/overlay-host.service.d.ts +3 -0
  104. package/core/public_api.d.ts +3 -0
  105. package/core/shared/components/action-bar/action-bar.component.d.ts +7 -0
  106. package/core/shared/components/action-bar-items/action-bar-items.component.d.ts +3 -0
  107. package/core/shared/components/address-form/address-form.component.d.ts +5 -2
  108. package/core/shared/components/affixed-input/affixed-input.component.d.ts +3 -0
  109. package/core/shared/components/affixed-input/percentage-suffix-input.component.d.ts +3 -0
  110. package/core/shared/components/asset-file-input/asset-file-input.component.d.ts +3 -0
  111. package/core/shared/components/asset-gallery/asset-gallery.component.d.ts +46 -26
  112. package/core/shared/components/asset-gallery/asset-gallery.types.d.ts +3 -0
  113. package/core/shared/components/asset-picker-dialog/asset-picker-dialog.component.d.ts +7 -3
  114. package/core/shared/components/asset-preview/asset-preview.component.d.ts +5 -3
  115. package/core/shared/components/asset-preview-dialog/asset-preview-dialog.component.d.ts +7 -5
  116. package/core/shared/components/asset-preview-links/asset-preview-links.component.d.ts +8 -0
  117. package/core/shared/components/asset-search-input/asset-search-input.component.d.ts +5 -2
  118. package/core/shared/components/channel-assignment-control/channel-assignment-control.component.d.ts +3 -0
  119. package/core/shared/components/channel-badge/channel-badge.component.d.ts +3 -0
  120. package/core/shared/components/chip/chip.component.d.ts +3 -0
  121. package/core/shared/components/configurable-input/configurable-input.component.d.ts +3 -0
  122. package/core/shared/components/currency-input/currency-input.component.d.ts +3 -0
  123. package/core/shared/components/custom-detail-component-host/custom-detail-component-host.component.d.ts +3 -0
  124. package/core/shared/components/custom-field-control/custom-field-control.component.d.ts +3 -0
  125. package/core/shared/components/customer-label/customer-label.component.d.ts +5 -2
  126. package/core/shared/components/data-table/data-table-column.component.d.ts +3 -0
  127. package/core/shared/components/data-table/data-table.component.d.ts +3 -0
  128. package/core/shared/components/datetime-picker/datetime-picker.component.d.ts +3 -0
  129. package/core/shared/components/datetime-picker/datetime-picker.service.d.ts +3 -0
  130. package/core/shared/components/dropdown/dropdown-item.directive.d.ts +3 -0
  131. package/core/shared/components/dropdown/dropdown-menu.component.d.ts +3 -0
  132. package/core/shared/components/dropdown/dropdown-trigger.directive.d.ts +3 -0
  133. package/core/shared/components/dropdown/dropdown.component.d.ts +3 -0
  134. package/core/shared/components/edit-note-dialog/edit-note-dialog.component.d.ts +4 -1
  135. package/core/shared/components/empty-placeholder/empty-placeholder.component.d.ts +3 -0
  136. package/core/shared/components/entity-info/entity-info.component.d.ts +3 -0
  137. package/core/shared/components/extension-host/extension-host.component.d.ts +3 -0
  138. package/core/shared/components/extension-host/extension-host.service.d.ts +3 -0
  139. package/core/shared/components/facet-value-chip/facet-value-chip.component.d.ts +5 -2
  140. package/core/shared/components/facet-value-selector/facet-value-selector.component.d.ts +8 -5
  141. package/core/shared/components/focal-point-control/focal-point-control.component.d.ts +3 -0
  142. package/core/shared/components/form-field/form-field-control.directive.d.ts +3 -0
  143. package/core/shared/components/form-field/form-field.component.d.ts +3 -0
  144. package/core/shared/components/form-item/form-item.component.d.ts +3 -0
  145. package/core/shared/components/formatted-address/formatted-address.component.d.ts +3 -0
  146. package/core/shared/components/help-tooltip/help-tooltip.component.d.ts +3 -0
  147. package/core/shared/components/history-entry-detail/history-entry-detail.component.d.ts +3 -0
  148. package/core/shared/components/items-per-page-controls/items-per-page-controls.component.d.ts +3 -0
  149. package/core/shared/components/labeled-data/labeled-data.component.d.ts +3 -0
  150. package/core/shared/components/language-selector/language-selector.component.d.ts +3 -0
  151. package/core/shared/components/manage-tags-dialog/manage-tags-dialog.component.d.ts +6 -3
  152. package/core/shared/components/modal-dialog/dialog-buttons.directive.d.ts +3 -0
  153. package/core/shared/components/modal-dialog/dialog-component-outlet.component.d.ts +3 -0
  154. package/core/shared/components/modal-dialog/dialog-title.directive.d.ts +3 -0
  155. package/core/shared/components/modal-dialog/modal-dialog.component.d.ts +4 -1
  156. package/core/shared/components/object-tree/object-tree.component.d.ts +3 -0
  157. package/core/shared/components/order-state-label/order-state-label.component.d.ts +4 -1
  158. package/core/shared/components/pagination-controls/pagination-controls.component.d.ts +3 -0
  159. package/core/shared/components/product-selector/product-selector.component.d.ts +23 -13
  160. package/core/shared/components/rich-text-editor/external-image-dialog/external-image-dialog.component.d.ts +4 -1
  161. package/core/shared/components/rich-text-editor/link-dialog/link-dialog.component.d.ts +4 -1
  162. package/core/shared/components/rich-text-editor/prosemirror/prosemirror.service.d.ts +3 -0
  163. package/core/shared/components/rich-text-editor/rich-text-editor.component.d.ts +3 -0
  164. package/core/shared/components/select-toggle/select-toggle.component.d.ts +3 -0
  165. package/core/shared/components/simple-dialog/simple-dialog.component.d.ts +4 -1
  166. package/core/shared/components/status-badge/status-badge.component.d.ts +3 -0
  167. package/core/shared/components/tabbed-custom-fields/tabbed-custom-fields.component.d.ts +3 -0
  168. package/core/shared/components/table-row-action/table-row-action.component.d.ts +3 -0
  169. package/core/shared/components/tag-selector/tag-selector.component.d.ts +3 -0
  170. package/core/shared/components/timeline-entry/timeline-entry.component.d.ts +3 -0
  171. package/core/shared/components/title-input/title-input.component.d.ts +3 -0
  172. package/core/shared/components/ui-extension-point/ui-extension-point.component.d.ts +3 -0
  173. package/core/shared/directives/disabled.directive.d.ts +3 -0
  174. package/core/shared/directives/if-default-channel-active.directive.d.ts +3 -0
  175. package/core/shared/directives/if-directive-base.d.ts +3 -0
  176. package/core/shared/directives/if-multichannel.directive.d.ts +3 -0
  177. package/core/shared/directives/if-permissions.directive.d.ts +3 -0
  178. package/core/shared/dynamic-form-inputs/boolean-form-input/boolean-form-input.component.d.ts +3 -0
  179. package/core/shared/dynamic-form-inputs/code-editor-form-input/json-editor-form-input.component.d.ts +3 -0
  180. package/core/shared/dynamic-form-inputs/currency-form-input/currency-form-input.component.d.ts +3 -0
  181. package/core/shared/dynamic-form-inputs/customer-group-form-input/customer-group-form-input.component.d.ts +7 -3
  182. package/core/shared/dynamic-form-inputs/date-form-input/date-form-input.component.d.ts +3 -0
  183. package/core/shared/dynamic-form-inputs/dynamic-form-input/dynamic-form-input.component.d.ts +3 -0
  184. package/core/shared/dynamic-form-inputs/facet-value-form-input/facet-value-form-input.component.d.ts +5 -2
  185. package/core/shared/dynamic-form-inputs/number-form-input/number-form-input.component.d.ts +3 -0
  186. package/core/shared/dynamic-form-inputs/password-form-input/password-form-input.component.d.ts +3 -0
  187. package/core/shared/dynamic-form-inputs/product-selector-form-input/product-selector-form-input.component.d.ts +6 -3
  188. package/core/shared/dynamic-form-inputs/register-dynamic-input-components.d.ts +1 -1
  189. package/core/shared/dynamic-form-inputs/relation-form-input/asset/relation-asset-input.component.d.ts +6 -3
  190. package/core/shared/dynamic-form-inputs/relation-form-input/customer/relation-customer-input.component.d.ts +6 -2
  191. package/core/shared/dynamic-form-inputs/relation-form-input/product/relation-product-input.component.d.ts +7 -3
  192. package/core/shared/dynamic-form-inputs/relation-form-input/product-variant/relation-product-variant-input.component.d.ts +7 -3
  193. package/core/shared/dynamic-form-inputs/relation-form-input/relation-card/relation-card.component.d.ts +7 -0
  194. package/core/shared/dynamic-form-inputs/relation-form-input/relation-form-input.component.d.ts +3 -0
  195. package/core/shared/dynamic-form-inputs/relation-form-input/relation-selector-dialog/relation-selector-dialog.component.d.ts +4 -1
  196. package/core/shared/dynamic-form-inputs/rich-text-form-input/rich-text-form-input.component.d.ts +3 -0
  197. package/core/shared/dynamic-form-inputs/select-form-input/select-form-input.component.d.ts +3 -0
  198. package/core/shared/dynamic-form-inputs/text-form-input/text-form-input.component.d.ts +3 -0
  199. package/core/shared/dynamic-form-inputs/textarea-form-input/textarea-form-input.component.d.ts +3 -0
  200. package/core/shared/pipes/asset-preview.pipe.d.ts +3 -0
  201. package/core/shared/pipes/channel-label.pipe.d.ts +3 -0
  202. package/core/shared/pipes/custom-field-label.pipe.d.ts +3 -0
  203. package/core/shared/pipes/duration.pipe.d.ts +3 -0
  204. package/core/shared/pipes/file-size.pipe.d.ts +3 -0
  205. package/core/shared/pipes/has-permission.pipe.d.ts +3 -0
  206. package/core/shared/pipes/locale-base.pipe.d.ts +3 -0
  207. package/core/shared/pipes/locale-currency-name.pipe.d.ts +3 -0
  208. package/core/shared/pipes/locale-currency.pipe.d.ts +3 -0
  209. package/core/shared/pipes/locale-date.pipe.d.ts +3 -0
  210. package/core/shared/pipes/locale-language-name.pipe.d.ts +3 -0
  211. package/core/shared/pipes/locale-region-name.pipe.d.ts +3 -0
  212. package/core/shared/pipes/sentence-case.pipe.d.ts +3 -0
  213. package/core/shared/pipes/sort.pipe.d.ts +3 -0
  214. package/core/shared/pipes/state-i18n-token.pipe.d.ts +3 -0
  215. package/core/shared/pipes/string-to-color.pipe.d.ts +3 -0
  216. package/core/shared/pipes/time-ago.pipe.d.ts +3 -0
  217. package/core/shared/providers/routing/can-deactivate-detail-guard.d.ts +3 -0
  218. package/core/shared/shared.module.d.ts +118 -0
  219. package/core/vendure-admin-ui-core.d.ts +1 -0
  220. package/customer/components/add-customer-to-group-dialog/add-customer-to-group-dialog.component.d.ts +6 -3
  221. package/customer/components/address-card/address-card.component.d.ts +7 -2
  222. package/customer/components/address-detail-dialog/address-detail-dialog.component.d.ts +5 -2
  223. package/customer/components/customer-detail/customer-detail.component.d.ts +10 -5
  224. package/customer/components/customer-group-detail-dialog/customer-group-detail-dialog.component.d.ts +3 -0
  225. package/customer/components/customer-group-list/customer-group-list.component.d.ts +10 -7
  226. package/customer/components/customer-group-member-list/customer-group-member-list.component.d.ts +3 -0
  227. package/customer/components/customer-history/customer-history.component.d.ts +12 -7
  228. package/customer/components/customer-list/customer-list.component.d.ts +7 -5
  229. package/customer/components/customer-status-label/customer-status-label.component.d.ts +5 -2
  230. package/customer/components/select-customer-group-dialog/select-customer-group-dialog.component.d.ts +5 -2
  231. package/customer/customer.module.d.ts +17 -0
  232. package/customer/package.json +5 -6
  233. package/customer/providers/routing/customer-resolver.d.ts +5 -4
  234. package/customer/vendure-admin-ui-customer.d.ts +1 -0
  235. package/dashboard/components/dashboard/dashboard.component.d.ts +3 -0
  236. package/dashboard/components/dashboard-widget/dashboard-widget.component.d.ts +3 -0
  237. package/dashboard/dashboard.module.d.ts +8 -0
  238. package/dashboard/package.json +5 -6
  239. package/dashboard/vendure-admin-ui-dashboard.d.ts +1 -0
  240. package/dashboard/widgets/latest-orders-widget/latest-orders-widget.component.d.ts +9 -2
  241. package/dashboard/widgets/order-summary-widget/order-summary-widget.component.d.ts +7 -0
  242. package/dashboard/widgets/test-widget/test-widget.component.d.ts +6 -0
  243. package/dashboard/widgets/welcome-widget/welcome-widget.component.d.ts +9 -2
  244. package/esm2020/catalog/catalog.module.mjs +116 -0
  245. package/esm2020/catalog/catalog.routes.mjs +174 -0
  246. package/esm2020/catalog/components/apply-facet-dialog/apply-facet-dialog.component.mjs +30 -0
  247. package/esm2020/catalog/components/asset-detail/asset-detail.component.mjs +66 -0
  248. package/esm2020/catalog/components/asset-list/asset-list.component.mjs +120 -0
  249. package/esm2020/catalog/components/assets/assets.component.mjs +100 -0
  250. package/esm2020/catalog/components/assign-products-to-channel-dialog/assign-products-to-channel-dialog.component.mjs +104 -0
  251. package/esm2020/catalog/components/collection-contents/collection-contents.component.mjs +76 -0
  252. package/esm2020/catalog/components/collection-detail/collection-detail.component.mjs +210 -0
  253. package/esm2020/catalog/components/collection-list/collection-list.component.mjs +120 -0
  254. package/esm2020/catalog/components/collection-tree/array-to-tree.mjs +56 -0
  255. package/esm2020/catalog/components/collection-tree/collection-tree-node.component.mjs +99 -0
  256. package/esm2020/catalog/components/collection-tree/collection-tree.component.mjs +44 -0
  257. package/esm2020/catalog/components/collection-tree/collection-tree.service.mjs +68 -0
  258. package/esm2020/catalog/components/collection-tree/collection-tree.types.mjs +2 -0
  259. package/esm2020/catalog/components/confirm-variant-deletion-dialog/confirm-variant-deletion-dialog.component.mjs +23 -0
  260. package/esm2020/catalog/components/facet-detail/facet-detail.component.mjs +321 -0
  261. package/esm2020/catalog/components/facet-list/facet-list.component.mjs +104 -0
  262. package/esm2020/catalog/components/generate-product-variants/generate-product-variants.component.mjs +79 -0
  263. package/esm2020/catalog/components/option-value-input/option-value-input.component.mjs +97 -0
  264. package/esm2020/catalog/components/product-detail/product-detail.component.mjs +520 -0
  265. package/esm2020/catalog/components/product-detail/product-detail.types.mjs +2 -0
  266. package/esm2020/catalog/components/product-list/product-list.component.mjs +150 -0
  267. package/esm2020/catalog/components/product-options-editor/product-options-editor.component.mjs +151 -0
  268. package/esm2020/catalog/components/product-search-input/product-search-input.component.mjs +107 -0
  269. package/esm2020/catalog/components/product-variants-editor/product-variants-editor.component.mjs +313 -0
  270. package/esm2020/catalog/components/product-variants-list/product-variants-list.component.mjs +226 -0
  271. package/esm2020/catalog/components/product-variants-table/product-variants-table.component.mjs +72 -0
  272. package/esm2020/catalog/components/update-product-option-dialog/update-product-option-dialog.component.mjs +64 -0
  273. package/esm2020/catalog/components/variant-price-detail/variant-price-detail.component.mjs +61 -0
  274. package/esm2020/catalog/providers/product-detail/product-detail.service.mjs +224 -0
  275. package/{esm2015/catalog/providers/product-detail/replace-last.js → esm2020/catalog/providers/product-detail/replace-last.mjs} +0 -0
  276. package/esm2020/catalog/providers/routing/asset-resolver.mjs +33 -0
  277. package/esm2020/catalog/providers/routing/collection-resolver.mjs +35 -0
  278. package/esm2020/catalog/providers/routing/facet-resolver.mjs +30 -0
  279. package/esm2020/catalog/providers/routing/product-resolver.mjs +39 -0
  280. package/esm2020/catalog/providers/routing/product-variants-resolver.mjs +27 -0
  281. package/esm2020/catalog/public_api.mjs +39 -0
  282. package/{esm2015/catalog/vendure-admin-ui-catalog.js → esm2020/catalog/vendure-admin-ui-catalog.mjs} +0 -0
  283. package/esm2020/core/app.component.mjs +79 -0
  284. package/esm2020/core/app.component.module.mjs +19 -0
  285. package/{esm2015/core/app.config.js → esm2020/core/app.config.mjs} +0 -0
  286. package/esm2020/core/common/base-detail.component.mjs +108 -0
  287. package/{esm2015/core/common/base-entity-resolver.js → esm2020/core/common/base-entity-resolver.mjs} +2 -2
  288. package/esm2020/core/common/base-list.component.mjs +159 -0
  289. package/{esm2015/core/common/component-registry-types.js → esm2020/core/common/component-registry-types.mjs} +0 -0
  290. package/{esm2015/core/common/deactivate-aware.js → esm2020/core/common/deactivate-aware.mjs} +0 -0
  291. package/{esm2015/core/common/detail-breadcrumb.js → esm2020/core/common/detail-breadcrumb.mjs} +0 -0
  292. package/esm2020/core/common/generated-types.mjs +954 -0
  293. package/{esm2015/core/common/introspection-result-wrapper.js → esm2020/core/common/introspection-result-wrapper.mjs} +0 -0
  294. package/esm2020/core/common/introspection-result.mjs +187 -0
  295. package/{esm2015/core/common/single-search-selection-model.js → esm2020/core/common/single-search-selection-model.mjs} +0 -0
  296. package/esm2020/core/common/utilities/configurable-operation-utils.mjs +83 -0
  297. package/esm2020/core/common/utilities/create-updated-translatable.mjs +75 -0
  298. package/esm2020/core/common/utilities/find-translation.mjs +9 -0
  299. package/esm2020/core/common/utilities/flatten-facet-values.mjs +4 -0
  300. package/esm2020/core/common/utilities/get-default-ui-language.mjs +12 -0
  301. package/{esm2015/core/common/utilities/interpolate-description.js → esm2020/core/common/utilities/interpolate-description.mjs} +0 -0
  302. package/{esm2015/core/common/utilities/string-to-color.js → esm2020/core/common/utilities/string-to-color.mjs} +0 -0
  303. package/{esm2015/core/common/version.js → esm2020/core/common/version.mjs} +2 -2
  304. package/esm2020/core/components/app-shell/app-shell.component.mjs +76 -0
  305. package/esm2020/core/components/breadcrumb/breadcrumb.component.mjs +124 -0
  306. package/esm2020/core/components/channel-switcher/channel-switcher.component.mjs +58 -0
  307. package/esm2020/core/components/main-nav/main-nav.component.mjs +270 -0
  308. package/esm2020/core/components/notification/notification.component.mjs +76 -0
  309. package/esm2020/core/components/overlay-host/overlay-host.component.mjs +22 -0
  310. package/esm2020/core/components/theme-switcher/theme-switcher.component.mjs +29 -0
  311. package/esm2020/core/components/ui-language-switcher-dialog/ui-language-switcher-dialog.component.mjs +305 -0
  312. package/esm2020/core/components/user-menu/user-menu.component.mjs +37 -0
  313. package/esm2020/core/core.module.mjs +145 -0
  314. package/{esm2015/core/data/check-jobs-link.js → esm2020/core/data/check-jobs-link.mjs} +0 -0
  315. package/{esm2015/core/data/client-state/client-defaults.js → esm2020/core/data/client-state/client-defaults.mjs} +1 -1
  316. package/esm2020/core/data/client-state/client-resolvers.mjs +131 -0
  317. package/esm2020/core/data/data.module.mjs +126 -0
  318. package/{esm2015/core/data/definitions/administrator-definitions.js → esm2020/core/data/definitions/administrator-definitions.mjs} +0 -0
  319. package/{esm2015/core/data/definitions/auth-definitions.js → esm2020/core/data/definitions/auth-definitions.mjs} +0 -0
  320. package/{esm2015/core/data/definitions/client-definitions.js → esm2020/core/data/definitions/client-definitions.mjs} +0 -0
  321. package/{esm2015/core/data/definitions/collection-definitions.js → esm2020/core/data/definitions/collection-definitions.mjs} +0 -0
  322. package/esm2020/core/data/definitions/customer-definitions.mjs +265 -0
  323. package/{esm2015/core/data/definitions/facet-definitions.js → esm2020/core/data/definitions/facet-definitions.mjs} +0 -0
  324. package/{esm2015/core/data/definitions/order-definitions.js → esm2020/core/data/definitions/order-definitions.mjs} +0 -0
  325. package/{esm2015/core/data/definitions/product-definitions.js → esm2020/core/data/definitions/product-definitions.mjs} +0 -0
  326. package/{esm2015/core/data/definitions/promotion-definitions.js → esm2020/core/data/definitions/promotion-definitions.mjs} +0 -0
  327. package/{esm2015/core/data/definitions/settings-definitions.js → esm2020/core/data/definitions/settings-definitions.mjs} +0 -0
  328. package/{esm2015/core/data/definitions/shared-definitions.js → esm2020/core/data/definitions/shared-definitions.mjs} +0 -0
  329. package/{esm2015/core/data/definitions/shipping-definitions.js → esm2020/core/data/definitions/shipping-definitions.mjs} +0 -0
  330. package/{esm2015/core/data/omit-typename-link.js → esm2020/core/data/omit-typename-link.mjs} +0 -0
  331. package/esm2020/core/data/providers/administrator-data.service.mjs +63 -0
  332. package/esm2020/core/data/providers/auth-data.service.mjs +20 -0
  333. package/esm2020/core/data/providers/base-data.service.mjs +69 -0
  334. package/esm2020/core/data/providers/client-data.service.mjs +75 -0
  335. package/esm2020/core/data/providers/collection-data.service.mjs +72 -0
  336. package/esm2020/core/data/providers/customer-data.service.mjs +120 -0
  337. package/esm2020/core/data/providers/data.service.mjs +90 -0
  338. package/esm2020/core/data/providers/facet-data.service.mjs +60 -0
  339. package/esm2020/core/data/providers/fetch-adapter.mjs +36 -0
  340. package/esm2020/core/data/providers/interceptor.mjs +136 -0
  341. package/esm2020/core/data/providers/order-data.service.mjs +100 -0
  342. package/esm2020/core/data/providers/product-data.service.mjs +240 -0
  343. package/esm2020/core/data/providers/promotion-data.service.mjs +36 -0
  344. package/esm2020/core/data/providers/settings-data.service.mjs +235 -0
  345. package/esm2020/core/data/providers/shipping-method-data.service.mjs +66 -0
  346. package/{esm2015/core/data/query-result.js → esm2020/core/data/query-result.mjs} +1 -1
  347. package/esm2020/core/data/server-config.mjs +74 -0
  348. package/esm2020/core/data/utils/add-custom-fields.mjs +84 -0
  349. package/{esm2015/core/data/utils/get-server-location.js → esm2020/core/data/utils/get-server-location.mjs} +0 -0
  350. package/{esm2015/core/data/utils/remove-readonly-custom-fields.js → esm2020/core/data/utils/remove-readonly-custom-fields.mjs} +1 -1
  351. package/esm2020/core/data/utils/transform-relation-custom-field-inputs.mjs +46 -0
  352. package/esm2020/core/providers/auth/auth.service.mjs +104 -0
  353. package/esm2020/core/providers/component-registry/component-registry.service.mjs +25 -0
  354. package/{esm2015/core/providers/custom-detail-component/custom-detail-component-types.js → esm2020/core/providers/custom-detail-component/custom-detail-component-types.mjs} +0 -0
  355. package/esm2020/core/providers/custom-detail-component/custom-detail-component.service.mjs +44 -0
  356. package/esm2020/core/providers/custom-field-component/custom-field-component.service.mjs +45 -0
  357. package/{esm2015/core/providers/dashboard-widget/dashboard-widget-types.js → esm2020/core/providers/dashboard-widget/dashboard-widget-types.mjs} +0 -0
  358. package/esm2020/core/providers/dashboard-widget/dashboard-widget.service.mjs +98 -0
  359. package/{esm2015/core/providers/dashboard-widget/register-dashboard-widget.js → esm2020/core/providers/dashboard-widget/register-dashboard-widget.mjs} +0 -0
  360. package/esm2020/core/providers/guard/auth.guard.mjs +38 -0
  361. package/esm2020/core/providers/health-check/health-check.service.mjs +36 -0
  362. package/{esm2015/core/providers/i18n/custom-http-loader.js → esm2020/core/providers/i18n/custom-http-loader.mjs} +0 -0
  363. package/esm2020/core/providers/i18n/custom-message-format-compiler.mjs +31 -0
  364. package/esm2020/core/providers/i18n/i18n.service.mjs +54 -0
  365. package/esm2020/core/providers/job-queue/job-queue.service.mjs +91 -0
  366. package/esm2020/core/providers/local-storage/local-storage.service.mjs +77 -0
  367. package/esm2020/core/providers/modal/modal.service.mjs +97 -0
  368. package/esm2020/core/providers/modal/modal.types.mjs +2 -0
  369. package/{esm2015/core/providers/nav-builder/nav-builder-types.js → esm2020/core/providers/nav-builder/nav-builder-types.mjs} +0 -0
  370. package/esm2020/core/providers/nav-builder/nav-builder.service.mjs +268 -0
  371. package/esm2020/core/providers/notification/notification.service.mjs +157 -0
  372. package/esm2020/core/providers/overlay-host/overlay-host.service.mjs +48 -0
  373. package/esm2020/core/public_api.mjs +220 -0
  374. package/esm2020/core/shared/components/action-bar/action-bar.component.mjs +57 -0
  375. package/esm2020/core/shared/components/action-bar-items/action-bar-items.component.mjs +78 -0
  376. package/esm2020/core/shared/components/address-form/address-form.component.mjs +23 -0
  377. package/esm2020/core/shared/components/affixed-input/affixed-input.component.mjs +19 -0
  378. package/esm2020/core/shared/components/affixed-input/percentage-suffix-input.component.mjs +97 -0
  379. package/esm2020/core/shared/components/asset-file-input/asset-file-input.component.mjs +97 -0
  380. package/esm2020/core/shared/components/asset-gallery/asset-gallery.component.mjs +110 -0
  381. package/esm2020/core/shared/components/asset-gallery/asset-gallery.types.mjs +2 -0
  382. package/esm2020/core/shared/components/asset-picker-dialog/asset-picker-dialog.component.mjs +144 -0
  383. package/esm2020/core/shared/components/asset-preview/asset-preview.component.mjs +189 -0
  384. package/esm2020/core/shared/components/asset-preview-dialog/asset-preview-dialog.component.mjs +34 -0
  385. package/esm2020/core/shared/components/asset-preview-links/asset-preview-links.component.mjs +26 -0
  386. package/esm2020/core/shared/components/asset-search-input/asset-search-input.component.mjs +106 -0
  387. package/esm2020/core/shared/components/channel-assignment-control/channel-assignment-control.component.mjs +116 -0
  388. package/esm2020/core/shared/components/channel-badge/channel-badge.component.mjs +19 -0
  389. package/esm2020/core/shared/components/chip/chip.component.mjs +47 -0
  390. package/esm2020/core/shared/components/configurable-input/configurable-input.component.mjs +144 -0
  391. package/esm2020/core/shared/components/currency-input/currency-input.component.mjs +152 -0
  392. package/esm2020/core/shared/components/custom-detail-component-host/custom-detail-component-host.component.mjs +40 -0
  393. package/esm2020/core/shared/components/custom-field-control/custom-field-control.component.mjs +83 -0
  394. package/esm2020/core/shared/components/customer-label/customer-label.component.mjs +17 -0
  395. package/esm2020/core/shared/components/data-table/data-table-column.component.mjs +29 -0
  396. package/esm2020/core/shared/components/data-table/data-table.component.mjs +124 -0
  397. package/{esm2015/core/shared/components/datetime-picker/constants.js → esm2020/core/shared/components/datetime-picker/constants.mjs} +0 -0
  398. package/esm2020/core/shared/components/datetime-picker/datetime-picker.component.mjs +226 -0
  399. package/esm2020/core/shared/components/datetime-picker/datetime-picker.service.mjs +201 -0
  400. package/{esm2015/core/shared/components/datetime-picker/types.js → esm2020/core/shared/components/datetime-picker/types.mjs} +0 -0
  401. package/esm2020/core/shared/components/dropdown/dropdown-item.directive.mjs +25 -0
  402. package/esm2020/core/shared/components/dropdown/dropdown-menu.component.mjs +127 -0
  403. package/esm2020/core/shared/components/dropdown/dropdown-trigger.directive.mjs +25 -0
  404. package/esm2020/core/shared/components/dropdown/dropdown.component.mjs +58 -0
  405. package/esm2020/core/shared/components/edit-note-dialog/edit-note-dialog.component.mjs +32 -0
  406. package/esm2020/core/shared/components/empty-placeholder/empty-placeholder.component.mjs +16 -0
  407. package/esm2020/core/shared/components/entity-info/entity-info.component.mjs +26 -0
  408. package/{esm2015/core/shared/components/extension-host/extension-host-config.js → esm2020/core/shared/components/extension-host/extension-host-config.mjs} +0 -0
  409. package/esm2020/core/shared/components/extension-host/extension-host.component.mjs +80 -0
  410. package/esm2020/core/shared/components/extension-host/extension-host.service.mjs +99 -0
  411. package/{esm2015/core/shared/components/extension-host/host-external-frame.js → esm2020/core/shared/components/extension-host/host-external-frame.mjs} +0 -0
  412. package/esm2020/core/shared/components/facet-value-chip/facet-value-chip.component.mjs +26 -0
  413. package/esm2020/core/shared/components/facet-value-selector/facet-value-selector.component.mjs +121 -0
  414. package/esm2020/core/shared/components/focal-point-control/focal-point-control.component.mjs +71 -0
  415. package/esm2020/core/shared/components/form-field/form-field-control.directive.mjs +37 -0
  416. package/esm2020/core/shared/components/form-field/form-field.component.mjs +70 -0
  417. package/esm2020/core/shared/components/form-item/form-item.component.mjs +18 -0
  418. package/esm2020/core/shared/components/formatted-address/formatted-address.component.mjs +38 -0
  419. package/esm2020/core/shared/components/help-tooltip/help-tooltip.component.mjs +16 -0
  420. package/esm2020/core/shared/components/history-entry-detail/history-entry-detail.component.mjs +16 -0
  421. package/esm2020/core/shared/components/items-per-page-controls/items-per-page-controls.component.mjs +25 -0
  422. package/esm2020/core/shared/components/labeled-data/labeled-data.component.mjs +13 -0
  423. package/esm2020/core/shared/components/language-selector/language-selector.component.mjs +31 -0
  424. package/esm2020/core/shared/components/manage-tags-dialog/manage-tags-dialog.component.mjs +61 -0
  425. package/esm2020/core/shared/components/modal-dialog/dialog-buttons.directive.mjs +23 -0
  426. package/esm2020/core/shared/components/modal-dialog/dialog-component-outlet.component.mjs +31 -0
  427. package/esm2020/core/shared/components/modal-dialog/dialog-title.directive.mjs +23 -0
  428. package/esm2020/core/shared/components/modal-dialog/modal-dialog.component.mjs +60 -0
  429. package/esm2020/core/shared/components/object-tree/object-tree.component.mjs +56 -0
  430. package/esm2020/core/shared/components/order-state-label/order-state-label.component.mjs +46 -0
  431. package/esm2020/core/shared/components/pagination-controls/pagination-controls.component.mjs +26 -0
  432. package/esm2020/core/shared/components/product-selector/product-selector.component.mjs +62 -0
  433. package/esm2020/core/shared/components/rich-text-editor/external-image-dialog/external-image-dialog.component.mjs +37 -0
  434. package/esm2020/core/shared/components/rich-text-editor/link-dialog/link-dialog.component.mjs +34 -0
  435. package/{esm2015/core/shared/components/rich-text-editor/prosemirror/inputrules.js → esm2020/core/shared/components/rich-text-editor/prosemirror/inputrules.mjs} +0 -0
  436. package/{esm2015/core/shared/components/rich-text-editor/prosemirror/keymap.js → esm2020/core/shared/components/rich-text-editor/prosemirror/keymap.mjs} +0 -0
  437. package/{esm2015/core/shared/components/rich-text-editor/prosemirror/menu/images.js → esm2020/core/shared/components/rich-text-editor/prosemirror/menu/images.mjs} +0 -0
  438. package/{esm2015/core/shared/components/rich-text-editor/prosemirror/menu/links.js → esm2020/core/shared/components/rich-text-editor/prosemirror/menu/links.mjs} +0 -0
  439. package/{esm2015/core/shared/components/rich-text-editor/prosemirror/menu/menu-common.js → esm2020/core/shared/components/rich-text-editor/prosemirror/menu/menu-common.mjs} +0 -0
  440. package/{esm2015/core/shared/components/rich-text-editor/prosemirror/menu/menu.js → esm2020/core/shared/components/rich-text-editor/prosemirror/menu/menu.mjs} +0 -0
  441. package/{esm2015/core/shared/components/rich-text-editor/prosemirror/plugins/link-select-plugin.js → esm2020/core/shared/components/rich-text-editor/prosemirror/plugins/link-select-plugin.mjs} +0 -0
  442. package/esm2020/core/shared/components/rich-text-editor/prosemirror/prosemirror.service.mjs +112 -0
  443. package/{esm2015/core/shared/components/rich-text-editor/prosemirror/types.js → esm2020/core/shared/components/rich-text-editor/prosemirror/types.mjs} +0 -0
  444. package/{esm2015/core/shared/components/rich-text-editor/prosemirror/utils.js → esm2020/core/shared/components/rich-text-editor/prosemirror/utils.mjs} +0 -0
  445. package/esm2020/core/shared/components/rich-text-editor/rich-text-editor.component.mjs +93 -0
  446. package/esm2020/core/shared/components/select-toggle/select-toggle.component.mjs +32 -0
  447. package/esm2020/core/shared/components/simple-dialog/simple-dialog.component.mjs +24 -0
  448. package/esm2020/core/shared/components/status-badge/status-badge.component.mjs +16 -0
  449. package/esm2020/core/shared/components/tabbed-custom-fields/tabbed-custom-fields.component.mjs +54 -0
  450. package/esm2020/core/shared/components/table-row-action/table-row-action.component.mjs +28 -0
  451. package/esm2020/core/shared/components/tag-selector/tag-selector.component.mjs +60 -0
  452. package/esm2020/core/shared/components/timeline-entry/timeline-entry.component.mjs +52 -0
  453. package/esm2020/core/shared/components/title-input/title-input.component.mjs +21 -0
  454. package/esm2020/core/shared/components/ui-extension-point/ui-extension-point.component.mjs +34 -0
  455. package/esm2020/core/shared/directives/disabled.directive.mjs +41 -0
  456. package/esm2020/core/shared/directives/if-default-channel-active.directive.mjs +39 -0
  457. package/esm2020/core/shared/directives/if-directive-base.mjs +73 -0
  458. package/esm2020/core/shared/directives/if-multichannel.directive.mjs +45 -0
  459. package/esm2020/core/shared/directives/if-permissions.directive.mjs +76 -0
  460. package/esm2020/core/shared/dynamic-form-inputs/boolean-form-input/boolean-form-input.component.mjs +23 -0
  461. package/esm2020/core/shared/dynamic-form-inputs/code-editor-form-input/json-editor-form-input.component.mjs +120 -0
  462. package/esm2020/core/shared/dynamic-form-inputs/currency-form-input/currency-form-input.component.mjs +31 -0
  463. package/esm2020/core/shared/dynamic-form-inputs/customer-group-form-input/customer-group-form-input.component.mjs +42 -0
  464. package/esm2020/core/shared/dynamic-form-inputs/date-form-input/date-form-input.component.mjs +32 -0
  465. package/esm2020/core/shared/dynamic-form-inputs/dynamic-form-input/dynamic-form-input.component.mjs +265 -0
  466. package/esm2020/core/shared/dynamic-form-inputs/facet-value-form-input/facet-value-form-input.component.mjs +35 -0
  467. package/esm2020/core/shared/dynamic-form-inputs/number-form-input/number-form-input.component.mjs +39 -0
  468. package/esm2020/core/shared/dynamic-form-inputs/password-form-input/password-form-input.component.mjs +21 -0
  469. package/esm2020/core/shared/dynamic-form-inputs/product-selector-form-input/product-selector-form-input.component.mjs +61 -0
  470. package/{esm2015/core/shared/dynamic-form-inputs/register-dynamic-input-components.js → esm2020/core/shared/dynamic-form-inputs/register-dynamic-input-components.mjs} +0 -0
  471. package/esm2020/core/shared/dynamic-form-inputs/relation-form-input/asset/relation-asset-input.component.mjs +69 -0
  472. package/esm2020/core/shared/dynamic-form-inputs/relation-form-input/customer/relation-customer-input.component.mjs +70 -0
  473. package/esm2020/core/shared/dynamic-form-inputs/relation-form-input/product/relation-product-input.component.mjs +89 -0
  474. package/esm2020/core/shared/dynamic-form-inputs/relation-form-input/product-variant/relation-product-variant-input.component.mjs +89 -0
  475. package/esm2020/core/shared/dynamic-form-inputs/relation-form-input/relation-card/relation-card.component.mjs +60 -0
  476. package/esm2020/core/shared/dynamic-form-inputs/relation-form-input/relation-form-input.component.mjs +28 -0
  477. package/esm2020/core/shared/dynamic-form-inputs/relation-form-input/relation-selector-dialog/relation-selector-dialog.component.mjs +14 -0
  478. package/esm2020/core/shared/dynamic-form-inputs/rich-text-form-input/rich-text-form-input.component.mjs +21 -0
  479. package/esm2020/core/shared/dynamic-form-inputs/select-form-input/select-form-input.component.mjs +31 -0
  480. package/esm2020/core/shared/dynamic-form-inputs/text-form-input/text-form-input.component.mjs +28 -0
  481. package/esm2020/core/shared/dynamic-form-inputs/textarea-form-input/textarea-form-input.component.mjs +24 -0
  482. package/esm2020/core/shared/pipes/asset-preview.pipe.mjs +42 -0
  483. package/esm2020/core/shared/pipes/channel-label.pipe.mjs +23 -0
  484. package/esm2020/core/shared/pipes/custom-field-label.pipe.mjs +47 -0
  485. package/esm2020/core/shared/pipes/duration.pipe.mjs +49 -0
  486. package/esm2020/core/shared/pipes/file-size.pipe.mjs +47 -0
  487. package/esm2020/core/shared/pipes/has-permission.pipe.mjs +65 -0
  488. package/esm2020/core/shared/pipes/locale-base.pipe.mjs +55 -0
  489. package/esm2020/core/shared/pipes/locale-currency-name.pipe.mjs +61 -0
  490. package/esm2020/core/shared/pipes/locale-currency.pipe.mjs +44 -0
  491. package/esm2020/core/shared/pipes/locale-date.pipe.mjs +84 -0
  492. package/esm2020/core/shared/pipes/locale-language-name.pipe.mjs +51 -0
  493. package/esm2020/core/shared/pipes/locale-region-name.pipe.mjs +51 -0
  494. package/esm2020/core/shared/pipes/sentence-case.pipe.mjs +30 -0
  495. package/esm2020/core/shared/pipes/sort.pipe.mjs +34 -0
  496. package/esm2020/core/shared/pipes/state-i18n-token.pipe.mjs +50 -0
  497. package/esm2020/core/shared/pipes/string-to-color.pipe.mjs +18 -0
  498. package/esm2020/core/shared/pipes/time-ago.pipe.mjs +52 -0
  499. package/esm2020/core/shared/providers/routing/can-deactivate-detail-guard.mjs +35 -0
  500. package/esm2020/core/shared/shared.module.mjs +520 -0
  501. package/{esm2015/core/validators/unicode-pattern.validator.js → esm2020/core/validators/unicode-pattern.validator.mjs} +0 -0
  502. package/{esm2015/core/vendure-admin-ui-core.js → esm2020/core/vendure-admin-ui-core.mjs} +0 -0
  503. package/esm2020/customer/components/add-customer-to-group-dialog/add-customer-to-group-dialog.component.mjs +41 -0
  504. package/esm2020/customer/components/address-card/address-card.component.mjs +97 -0
  505. package/esm2020/customer/components/address-detail-dialog/address-detail-dialog.component.mjs +28 -0
  506. package/esm2020/customer/components/customer-detail/customer-detail.component.mjs +414 -0
  507. package/esm2020/customer/components/customer-group-detail-dialog/customer-group-detail-dialog.component.mjs +45 -0
  508. package/esm2020/customer/components/customer-group-list/customer-group-list.component.mjs +181 -0
  509. package/esm2020/customer/components/customer-group-member-list/customer-group-member-list.component.mjs +103 -0
  510. package/esm2020/customer/components/customer-history/customer-history.component.mjs +83 -0
  511. package/esm2020/customer/components/customer-list/customer-list.component.mjs +80 -0
  512. package/esm2020/customer/components/customer-status-label/customer-status-label.component.mjs +17 -0
  513. package/esm2020/customer/components/select-customer-group-dialog/select-customer-group-dialog.component.mjs +31 -0
  514. package/esm2020/customer/customer.module.mjs +53 -0
  515. package/esm2020/customer/customer.routes.mjs +42 -0
  516. package/esm2020/customer/providers/routing/customer-resolver.mjs +31 -0
  517. package/{esm2015/customer/public_api.js → esm2020/customer/public_api.mjs} +0 -0
  518. package/{esm2015/customer/vendure-admin-ui-customer.js → esm2020/customer/vendure-admin-ui-customer.mjs} +0 -0
  519. package/esm2020/dashboard/components/dashboard/dashboard.component.mjs +121 -0
  520. package/esm2020/dashboard/components/dashboard-widget/dashboard-widget.component.mjs +35 -0
  521. package/esm2020/dashboard/dashboard.module.mjs +29 -0
  522. package/{esm2015/dashboard/dashboard.routes.js → esm2020/dashboard/dashboard.routes.mjs} +0 -0
  523. package/esm2020/dashboard/default-widgets.mjs +32 -0
  524. package/{esm2015/dashboard/public_api.js → esm2020/dashboard/public_api.mjs} +0 -0
  525. package/{esm2015/dashboard/vendure-admin-ui-dashboard.js → esm2020/dashboard/vendure-admin-ui-dashboard.mjs} +0 -0
  526. package/esm2020/dashboard/widgets/latest-orders-widget/latest-orders-widget.component.mjs +45 -0
  527. package/esm2020/dashboard/widgets/order-summary-widget/order-summary-widget.component.mjs +59 -0
  528. package/esm2020/dashboard/widgets/test-widget/test-widget.component.mjs +22 -0
  529. package/esm2020/dashboard/widgets/welcome-widget/welcome-widget.component.mjs +39 -0
  530. package/esm2020/login/components/login/login.component.mjs +62 -0
  531. package/esm2020/login/login.module.mjs +21 -0
  532. package/{esm2015/login/login.routes.js → esm2020/login/login.routes.mjs} +0 -0
  533. package/esm2020/login/providers/login.guard.mjs +31 -0
  534. package/{esm2015/login/public_api.js → esm2020/login/public_api.mjs} +0 -0
  535. package/{esm2015/login/vendure-admin-ui-login.js → esm2020/login/vendure-admin-ui-login.mjs} +0 -0
  536. package/esm2020/marketing/components/promotion-detail/promotion-detail.component.mjs +242 -0
  537. package/esm2020/marketing/components/promotion-list/promotion-list.component.mjs +81 -0
  538. package/esm2020/marketing/marketing.module.mjs +21 -0
  539. package/esm2020/marketing/marketing.routes.mjs +33 -0
  540. package/esm2020/marketing/providers/routing/promotion-resolver.mjs +31 -0
  541. package/{esm2015/marketing/public_api.js → esm2020/marketing/public_api.mjs} +0 -0
  542. package/{esm2015/marketing/vendure-admin-ui-marketing.js → esm2020/marketing/vendure-admin-ui-marketing.mjs} +0 -0
  543. package/esm2020/order/components/add-manual-payment-dialog/add-manual-payment-dialog.component.mjs +39 -0
  544. package/esm2020/order/components/cancel-order-dialog/cancel-order-dialog.component.mjs +78 -0
  545. package/esm2020/order/components/fulfill-order-dialog/fulfill-order-dialog.component.mjs +73 -0
  546. package/esm2020/order/components/fulfillment-card/fulfillment-card.component.mjs +48 -0
  547. package/esm2020/order/components/fulfillment-detail/fulfillment-detail.component.mjs +62 -0
  548. package/esm2020/order/components/fulfillment-state-label/fulfillment-state-label.component.mjs +28 -0
  549. package/esm2020/order/components/line-fulfillment/line-fulfillment.component.mjs +68 -0
  550. package/esm2020/order/components/line-refunds/line-refunds.component.mjs +37 -0
  551. package/esm2020/order/components/modification-detail/modification-detail.component.mjs +68 -0
  552. package/esm2020/order/components/order-custom-fields-card/order-custom-fields-card.component.mjs +40 -0
  553. package/esm2020/order/components/order-detail/order-detail.component.mjs +504 -0
  554. package/esm2020/order/components/order-editor/order-editor.component.mjs +365 -0
  555. package/esm2020/order/components/order-edits-preview-dialog/order-edits-preview-dialog.component.mjs +55 -0
  556. package/esm2020/order/components/order-history/order-history.component.mjs +166 -0
  557. package/esm2020/order/components/order-list/order-list.component.mjs +192 -0
  558. package/esm2020/order/components/order-payment-card/order-payment-card.component.mjs +43 -0
  559. package/{esm2015/order/components/order-process-graph/constants.js → esm2020/order/components/order-process-graph/constants.mjs} +0 -0
  560. package/esm2020/order/components/order-process-graph/order-process-edge.component.mjs +45 -0
  561. package/esm2020/order/components/order-process-graph/order-process-graph.component.mjs +96 -0
  562. package/esm2020/order/components/order-process-graph/order-process-node.component.mjs +53 -0
  563. package/{esm2015/order/components/order-process-graph/types.js → esm2020/order/components/order-process-graph/types.mjs} +0 -0
  564. package/esm2020/order/components/order-process-graph-dialog/order-process-graph-dialog.component.mjs +21 -0
  565. package/esm2020/order/components/order-state-select-dialog/order-state-select-dialog.component.mjs +29 -0
  566. package/esm2020/order/components/order-table/order-table.component.mjs +73 -0
  567. package/esm2020/order/components/payment-detail/payment-detail.component.mjs +18 -0
  568. package/esm2020/order/components/payment-state-label/payment-state-label.component.mjs +28 -0
  569. package/esm2020/order/components/refund-order-dialog/refund-order-dialog.component.mjs +138 -0
  570. package/esm2020/order/components/refund-state-label/refund-state-label.component.mjs +27 -0
  571. package/esm2020/order/components/settle-refund-dialog/settle-refund-dialog.component.mjs +24 -0
  572. package/esm2020/order/components/simple-item-list/simple-item-list.component.mjs +15 -0
  573. package/esm2020/order/order.module.mjs +103 -0
  574. package/esm2020/order/order.routes.mjs +52 -0
  575. package/esm2020/order/providers/order-transition.service.mjs +112 -0
  576. package/esm2020/order/providers/routing/order-resolver.mjs +29 -0
  577. package/{esm2015/order/public_api.js → esm2020/order/public_api.mjs} +0 -0
  578. package/{esm2015/order/vendure-admin-ui-order.js → esm2020/order/vendure-admin-ui-order.mjs} +0 -0
  579. package/{esm2015/public_api.js → esm2020/public_api.mjs} +0 -0
  580. package/esm2020/settings/components/add-country-to-zone-dialog/add-country-to-zone-dialog.component.mjs +34 -0
  581. package/esm2020/settings/components/admin-detail/admin-detail.component.mjs +192 -0
  582. package/esm2020/settings/components/administrator-list/administrator-list.component.mjs +49 -0
  583. package/esm2020/settings/components/channel-detail/channel-detail.component.mjs +154 -0
  584. package/esm2020/settings/components/channel-list/channel-list.component.mjs +53 -0
  585. package/esm2020/settings/components/country-detail/country-detail.component.mjs +115 -0
  586. package/esm2020/settings/components/country-list/country-list.component.mjs +84 -0
  587. package/esm2020/settings/components/global-settings/global-settings.component.mjs +85 -0
  588. package/esm2020/settings/components/payment-method-detail/payment-method-detail.component.mjs +199 -0
  589. package/esm2020/settings/components/payment-method-list/payment-method-list.component.mjs +62 -0
  590. package/esm2020/settings/components/permission-grid/permission-grid.component.mjs +83 -0
  591. package/esm2020/settings/components/profile/profile.component.mjs +77 -0
  592. package/esm2020/settings/components/role-detail/role-detail.component.mjs +105 -0
  593. package/esm2020/settings/components/role-list/role-list.component.mjs +66 -0
  594. package/esm2020/settings/components/shipping-eligibility-test-result/shipping-eligibility-test-result.component.mjs +30 -0
  595. package/esm2020/settings/components/shipping-method-detail/shipping-method-detail.component.mjs +240 -0
  596. package/esm2020/settings/components/shipping-method-list/shipping-method-list.component.mjs +92 -0
  597. package/esm2020/settings/components/shipping-method-test-result/shipping-method-test-result.component.mjs +30 -0
  598. package/esm2020/settings/components/tax-category-detail/tax-category-detail.component.mjs +107 -0
  599. package/esm2020/settings/components/tax-category-list/tax-category-list.component.mjs +56 -0
  600. package/esm2020/settings/components/tax-rate-detail/tax-rate-detail.component.mjs +126 -0
  601. package/esm2020/settings/components/tax-rate-list/tax-rate-list.component.mjs +56 -0
  602. package/esm2020/settings/components/test-address-form/test-address-form.component.mjs +49 -0
  603. package/esm2020/settings/components/test-order-builder/test-order-builder.component.mjs +71 -0
  604. package/esm2020/settings/components/zone-detail-dialog/zone-detail-dialog.component.mjs +44 -0
  605. package/esm2020/settings/components/zone-list/zone-list.component.mjs +158 -0
  606. package/esm2020/settings/components/zone-member-list/zone-member-controls.directive.mjs +16 -0
  607. package/esm2020/settings/components/zone-member-list/zone-member-list-header.directive.mjs +16 -0
  608. package/esm2020/settings/components/zone-member-list/zone-member-list.component.mjs +72 -0
  609. package/esm2020/settings/providers/routing/administrator-resolver.mjs +28 -0
  610. package/esm2020/settings/providers/routing/channel-resolver.mjs +34 -0
  611. package/esm2020/settings/providers/routing/country-resolver.mjs +31 -0
  612. package/esm2020/settings/providers/routing/global-settings-resolver.mjs +24 -0
  613. package/esm2020/settings/providers/routing/payment-method-resolver.mjs +33 -0
  614. package/esm2020/settings/providers/routing/profile-resolver.mjs +30 -0
  615. package/esm2020/settings/providers/routing/role-resolver.mjs +28 -0
  616. package/esm2020/settings/providers/routing/shipping-method-resolver.mjs +34 -0
  617. package/esm2020/settings/providers/routing/tax-category-resolver.mjs +29 -0
  618. package/esm2020/settings/providers/routing/tax-rate-resolver.mjs +33 -0
  619. package/{esm2015/settings/public_api.js → esm2020/settings/public_api.mjs} +0 -0
  620. package/esm2020/settings/settings.module.mjs +106 -0
  621. package/esm2020/settings/settings.routes.mjs +253 -0
  622. package/{esm2015/settings/vendure-admin-ui-settings.js → esm2020/settings/vendure-admin-ui-settings.mjs} +0 -0
  623. package/esm2020/system/components/health-check/health-check.component.mjs +18 -0
  624. package/esm2020/system/components/job-list/job-list.component.mjs +76 -0
  625. package/esm2020/system/components/job-state-label/job-state-label.component.mjs +46 -0
  626. package/{esm2015/system/public_api.js → esm2020/system/public_api.mjs} +0 -0
  627. package/esm2020/system/system.module.mjs +22 -0
  628. package/esm2020/system/system.routes.mjs +20 -0
  629. package/{esm2015/system/vendure-admin-ui-system.js → esm2020/system/vendure-admin-ui-system.mjs} +0 -0
  630. package/{esm2015/vendure-admin-ui.js → esm2020/vendure-admin-ui.mjs} +0 -0
  631. package/fesm2015/vendure-admin-ui-catalog.mjs +3732 -0
  632. package/fesm2015/vendure-admin-ui-catalog.mjs.map +1 -0
  633. package/fesm2015/vendure-admin-ui-core.mjs +15998 -0
  634. package/fesm2015/vendure-admin-ui-core.mjs.map +1 -0
  635. package/fesm2015/vendure-admin-ui-customer.mjs +1134 -0
  636. package/fesm2015/vendure-admin-ui-customer.mjs.map +1 -0
  637. package/fesm2015/vendure-admin-ui-dashboard.mjs +365 -0
  638. package/fesm2015/vendure-admin-ui-dashboard.mjs.map +1 -0
  639. package/fesm2015/vendure-admin-ui-login.mjs +122 -0
  640. package/fesm2015/vendure-admin-ui-login.mjs.map +1 -0
  641. package/fesm2015/vendure-admin-ui-marketing.mjs +388 -0
  642. package/fesm2015/vendure-admin-ui-marketing.mjs.map +1 -0
  643. package/fesm2015/vendure-admin-ui-order.mjs +2448 -0
  644. package/fesm2015/vendure-admin-ui-order.mjs.map +1 -0
  645. package/fesm2015/vendure-admin-ui-settings.mjs +2784 -0
  646. package/fesm2015/vendure-admin-ui-settings.mjs.map +1 -0
  647. package/fesm2015/vendure-admin-ui-system.mjs +165 -0
  648. package/fesm2015/vendure-admin-ui-system.mjs.map +1 -0
  649. package/fesm2015/{vendure-admin-ui.js → vendure-admin-ui.mjs} +1 -1
  650. package/fesm2015/vendure-admin-ui.mjs.map +1 -0
  651. package/fesm2020/vendure-admin-ui-catalog.mjs +3747 -0
  652. package/fesm2020/vendure-admin-ui-catalog.mjs.map +1 -0
  653. package/fesm2020/vendure-admin-ui-core.mjs +15994 -0
  654. package/fesm2020/vendure-admin-ui-core.mjs.map +1 -0
  655. package/fesm2020/vendure-admin-ui-customer.mjs +1135 -0
  656. package/fesm2020/vendure-admin-ui-customer.mjs.map +1 -0
  657. package/fesm2020/vendure-admin-ui-dashboard.mjs +361 -0
  658. package/fesm2020/vendure-admin-ui-dashboard.mjs.map +1 -0
  659. package/fesm2020/vendure-admin-ui-login.mjs +122 -0
  660. package/fesm2020/vendure-admin-ui-login.mjs.map +1 -0
  661. package/fesm2020/vendure-admin-ui-marketing.mjs +388 -0
  662. package/fesm2020/vendure-admin-ui-marketing.mjs.map +1 -0
  663. package/fesm2020/vendure-admin-ui-order.mjs +2462 -0
  664. package/fesm2020/vendure-admin-ui-order.mjs.map +1 -0
  665. package/fesm2020/vendure-admin-ui-settings.mjs +2791 -0
  666. package/fesm2020/vendure-admin-ui-settings.mjs.map +1 -0
  667. package/fesm2020/vendure-admin-ui-system.mjs +168 -0
  668. package/fesm2020/vendure-admin-ui-system.mjs.map +1 -0
  669. package/fesm2020/vendure-admin-ui.mjs +11 -0
  670. package/fesm2020/vendure-admin-ui.mjs.map +1 -0
  671. package/login/components/login/login.component.d.ts +3 -0
  672. package/login/login.module.d.ts +7 -0
  673. package/login/package.json +5 -6
  674. package/login/providers/login.guard.d.ts +3 -0
  675. package/login/vendure-admin-ui-login.d.ts +1 -0
  676. package/marketing/components/promotion-detail/promotion-detail.component.d.ts +7 -4
  677. package/marketing/components/promotion-list/promotion-list.component.d.ts +5 -6
  678. package/marketing/marketing.module.d.ts +8 -0
  679. package/marketing/package.json +5 -6
  680. package/marketing/providers/routing/promotion-resolver.d.ts +5 -2
  681. package/marketing/vendure-admin-ui-marketing.d.ts +1 -0
  682. package/order/components/add-manual-payment-dialog/add-manual-payment-dialog.component.d.ts +5 -2
  683. package/order/components/cancel-order-dialog/cancel-order-dialog.component.d.ts +6 -0
  684. package/order/components/fulfill-order-dialog/fulfill-order-dialog.component.d.ts +6 -3
  685. package/order/components/fulfillment-card/fulfillment-card.component.d.ts +6 -3
  686. package/order/components/fulfillment-detail/fulfillment-detail.component.d.ts +6 -3
  687. package/order/components/fulfillment-state-label/fulfillment-state-label.component.d.ts +3 -0
  688. package/order/components/line-fulfillment/line-fulfillment.component.d.ts +8 -3
  689. package/order/components/line-refunds/line-refunds.component.d.ts +6 -3
  690. package/order/components/modification-detail/modification-detail.component.d.ts +13 -4
  691. package/order/components/order-custom-fields-card/order-custom-fields-card.component.d.ts +3 -0
  692. package/order/components/order-detail/order-detail.component.d.ts +15 -10
  693. package/order/components/order-editor/order-editor.component.d.ts +16 -12
  694. package/order/components/order-edits-preview-dialog/order-edits-preview-dialog.component.d.ts +6 -3
  695. package/order/components/order-history/order-history.component.d.ts +36 -20
  696. package/order/components/order-list/order-list.component.d.ts +5 -2
  697. package/order/components/order-payment-card/order-payment-card.component.d.ts +48 -14
  698. package/order/components/order-process-graph/order-process-edge.component.d.ts +3 -0
  699. package/order/components/order-process-graph/order-process-graph.component.d.ts +3 -0
  700. package/order/components/order-process-graph/order-process-node.component.d.ts +3 -0
  701. package/order/components/order-process-graph-dialog/order-process-graph-dialog.component.d.ts +3 -0
  702. package/order/components/order-state-select-dialog/order-state-select-dialog.component.d.ts +3 -0
  703. package/order/components/order-table/order-table.component.d.ts +14 -8
  704. package/order/components/payment-detail/payment-detail.component.d.ts +5 -2
  705. package/order/components/payment-state-label/payment-state-label.component.d.ts +3 -0
  706. package/order/components/refund-order-dialog/refund-order-dialog.component.d.ts +8 -4
  707. package/order/components/refund-state-label/refund-state-label.component.d.ts +3 -0
  708. package/order/components/settle-refund-dialog/settle-refund-dialog.component.d.ts +5 -3
  709. package/order/components/simple-item-list/simple-item-list.component.d.ts +3 -0
  710. package/order/order.module.d.ts +34 -0
  711. package/order/package.json +5 -6
  712. package/order/providers/order-transition.service.d.ts +3 -0
  713. package/order/providers/routing/order-resolver.d.ts +5 -4
  714. package/order/vendure-admin-ui-order.d.ts +1 -0
  715. package/package.json +120 -36
  716. package/settings/components/add-country-to-zone-dialog/add-country-to-zone-dialog.component.d.ts +6 -3
  717. package/settings/components/admin-detail/admin-detail.component.d.ts +9 -10
  718. package/settings/components/administrator-list/administrator-list.component.d.ts +6 -3
  719. package/settings/components/channel-detail/channel-detail.component.d.ts +7 -8
  720. package/settings/components/channel-list/channel-list.component.d.ts +5 -5
  721. package/settings/components/country-detail/country-detail.component.d.ts +7 -4
  722. package/settings/components/country-list/country-list.component.d.ts +7 -4
  723. package/settings/components/global-settings/global-settings.component.d.ts +3 -0
  724. package/settings/components/payment-method-detail/payment-method-detail.component.d.ts +6 -3
  725. package/settings/components/payment-method-list/payment-method-list.component.d.ts +5 -2
  726. package/settings/components/permission-grid/permission-grid.component.d.ts +3 -0
  727. package/settings/components/profile/profile.component.d.ts +5 -2
  728. package/settings/components/role-detail/role-detail.component.d.ts +3 -0
  729. package/settings/components/role-list/role-list.component.d.ts +8 -5
  730. package/settings/components/shipping-eligibility-test-result/shipping-eligibility-test-result.component.d.ts +3 -0
  731. package/settings/components/shipping-method-detail/shipping-method-detail.component.d.ts +7 -4
  732. package/settings/components/shipping-method-list/shipping-method-list.component.d.ts +6 -3
  733. package/settings/components/shipping-method-test-result/shipping-method-test-result.component.d.ts +3 -0
  734. package/settings/components/tax-category-detail/tax-category-detail.component.d.ts +7 -8
  735. package/settings/components/tax-category-list/tax-category-list.component.d.ts +6 -6
  736. package/settings/components/tax-rate-detail/tax-rate-detail.component.d.ts +8 -5
  737. package/settings/components/tax-rate-list/tax-rate-list.component.d.ts +6 -7
  738. package/settings/components/test-address-form/test-address-form.component.d.ts +5 -2
  739. package/settings/components/test-order-builder/test-order-builder.component.d.ts +7 -2
  740. package/settings/components/zone-detail-dialog/zone-detail-dialog.component.d.ts +3 -0
  741. package/settings/components/zone-list/zone-list.component.d.ts +10 -7
  742. package/settings/components/zone-member-list/zone-member-controls.directive.d.ts +3 -0
  743. package/settings/components/zone-member-list/zone-member-list-header.directive.d.ts +3 -0
  744. package/settings/components/zone-member-list/zone-member-list.component.d.ts +3 -0
  745. package/settings/package.json +5 -6
  746. package/settings/providers/routing/administrator-resolver.d.ts +5 -4
  747. package/settings/providers/routing/channel-resolver.d.ts +5 -4
  748. package/settings/providers/routing/country-resolver.d.ts +5 -4
  749. package/settings/providers/routing/global-settings-resolver.d.ts +5 -4
  750. package/settings/providers/routing/payment-method-resolver.d.ts +5 -4
  751. package/settings/providers/routing/profile-resolver.d.ts +5 -4
  752. package/settings/providers/routing/role-resolver.d.ts +5 -4
  753. package/settings/providers/routing/shipping-method-resolver.d.ts +5 -4
  754. package/settings/providers/routing/tax-category-resolver.d.ts +5 -2
  755. package/settings/providers/routing/tax-rate-resolver.d.ts +5 -2
  756. package/settings/settings.module.d.ts +35 -0
  757. package/settings/vendure-admin-ui-settings.d.ts +1 -0
  758. package/static/i18n-messages/cs.json +5 -1
  759. package/static/i18n-messages/de.json +5 -1
  760. package/static/i18n-messages/en.json +6 -2
  761. package/static/i18n-messages/es.json +5 -1
  762. package/static/i18n-messages/fr.json +5 -1
  763. package/static/i18n-messages/it.json +5 -1
  764. package/static/i18n-messages/pl.json +5 -1
  765. package/static/i18n-messages/pt_BR.json +5 -1
  766. package/static/i18n-messages/pt_PT.json +5 -1
  767. package/static/i18n-messages/ru.json +5 -1
  768. package/static/i18n-messages/uk.json +5 -1
  769. package/static/i18n-messages/zh_Hans.json +5 -1
  770. package/static/i18n-messages/zh_Hant.json +5 -1
  771. package/static/polyfills.ts +0 -10
  772. package/static/styles/styles.scss +1 -1
  773. package/static/theme.min.css +1 -1
  774. package/system/components/health-check/health-check.component.d.ts +3 -0
  775. package/system/components/job-list/job-list.component.d.ts +7 -4
  776. package/system/components/job-state-label/job-state-label.component.d.ts +3 -0
  777. package/system/package.json +5 -6
  778. package/system/system.module.d.ts +9 -0
  779. package/system/vendure-admin-ui-system.d.ts +1 -0
  780. package/vendure-admin-ui.d.ts +1 -0
  781. package/bundles/vendure-admin-ui-catalog.umd.js +0 -4638
  782. package/bundles/vendure-admin-ui-catalog.umd.js.map +0 -1
  783. package/bundles/vendure-admin-ui-core.umd.js +0 -14759
  784. package/bundles/vendure-admin-ui-core.umd.js.map +0 -1
  785. package/bundles/vendure-admin-ui-customer.umd.js +0 -1626
  786. package/bundles/vendure-admin-ui-customer.umd.js.map +0 -1
  787. package/bundles/vendure-admin-ui-dashboard.umd.js +0 -757
  788. package/bundles/vendure-admin-ui-dashboard.umd.js.map +0 -1
  789. package/bundles/vendure-admin-ui-login.umd.js +0 -157
  790. package/bundles/vendure-admin-ui-login.umd.js.map +0 -1
  791. package/bundles/vendure-admin-ui-marketing.umd.js +0 -783
  792. package/bundles/vendure-admin-ui-marketing.umd.js.map +0 -1
  793. package/bundles/vendure-admin-ui-order.umd.js +0 -3287
  794. package/bundles/vendure-admin-ui-order.umd.js.map +0 -1
  795. package/bundles/vendure-admin-ui-settings.umd.js +0 -3697
  796. package/bundles/vendure-admin-ui-settings.umd.js.map +0 -1
  797. package/bundles/vendure-admin-ui-system.umd.js +0 -524
  798. package/bundles/vendure-admin-ui-system.umd.js.map +0 -1
  799. package/bundles/vendure-admin-ui.umd.js +0 -21
  800. package/bundles/vendure-admin-ui.umd.js.map +0 -1
  801. package/catalog/vendure-admin-ui-catalog.metadata.json +0 -1
  802. package/core/vendure-admin-ui-core.metadata.json +0 -1
  803. package/customer/vendure-admin-ui-customer.metadata.json +0 -1
  804. package/dashboard/vendure-admin-ui-dashboard.metadata.json +0 -1
  805. package/esm2015/catalog/catalog.module.js +0 -64
  806. package/esm2015/catalog/catalog.routes.js +0 -176
  807. package/esm2015/catalog/components/apply-facet-dialog/apply-facet-dialog.component.js +0 -32
  808. package/esm2015/catalog/components/asset-detail/asset-detail.component.js +0 -74
  809. package/esm2015/catalog/components/asset-list/asset-list.component.js +0 -119
  810. package/esm2015/catalog/components/assign-products-to-channel-dialog/assign-products-to-channel-dialog.component.js +0 -109
  811. package/esm2015/catalog/components/collection-contents/collection-contents.component.js +0 -78
  812. package/esm2015/catalog/components/collection-detail/collection-detail.component.js +0 -206
  813. package/esm2015/catalog/components/collection-list/collection-list.component.js +0 -119
  814. package/esm2015/catalog/components/collection-tree/array-to-tree.js +0 -57
  815. package/esm2015/catalog/components/collection-tree/collection-tree-node.component.js +0 -94
  816. package/esm2015/catalog/components/collection-tree/collection-tree.component.js +0 -74
  817. package/esm2015/catalog/components/confirm-variant-deletion-dialog/confirm-variant-deletion-dialog.component.js +0 -21
  818. package/esm2015/catalog/components/facet-detail/facet-detail.component.js +0 -326
  819. package/esm2015/catalog/components/facet-list/facet-list.component.js +0 -107
  820. package/esm2015/catalog/components/generate-product-variants/generate-product-variants.component.js +0 -78
  821. package/esm2015/catalog/components/option-value-input/option-value-input.component.js +0 -98
  822. package/esm2015/catalog/components/product-assets/product-assets.component.js +0 -108
  823. package/esm2015/catalog/components/product-detail/product-detail.component.js +0 -514
  824. package/esm2015/catalog/components/product-list/product-list.component.js +0 -153
  825. package/esm2015/catalog/components/product-options-editor/product-options-editor.component.js +0 -157
  826. package/esm2015/catalog/components/product-search-input/product-search-input.component.js +0 -104
  827. package/esm2015/catalog/components/product-variants-editor/product-variants-editor.component.js +0 -316
  828. package/esm2015/catalog/components/product-variants-list/product-variants-list.component.js +0 -207
  829. package/esm2015/catalog/components/product-variants-table/product-variants-table.component.js +0 -66
  830. package/esm2015/catalog/components/update-product-option-dialog/update-product-option-dialog.component.js +0 -61
  831. package/esm2015/catalog/components/variant-price-detail/variant-price-detail.component.js +0 -60
  832. package/esm2015/catalog/providers/product-detail/product-detail.service.js +0 -224
  833. package/esm2015/catalog/providers/routing/asset-resolver.js +0 -37
  834. package/esm2015/catalog/providers/routing/collection-resolver.js +0 -38
  835. package/esm2015/catalog/providers/routing/facet-resolver.js +0 -35
  836. package/esm2015/catalog/providers/routing/product-resolver.js +0 -42
  837. package/esm2015/catalog/providers/routing/product-variants-resolver.js +0 -31
  838. package/esm2015/catalog/public_api.js +0 -36
  839. package/esm2015/core/app.component.js +0 -80
  840. package/esm2015/core/app.component.module.js +0 -14
  841. package/esm2015/core/common/base-detail.component.js +0 -106
  842. package/esm2015/core/common/base-list.component.js +0 -156
  843. package/esm2015/core/common/generated-types.js +0 -953
  844. package/esm2015/core/common/introspection-result.js +0 -253
  845. package/esm2015/core/common/utilities/configurable-operation-utils.js +0 -78
  846. package/esm2015/core/common/utilities/create-updated-translatable.js +0 -72
  847. package/esm2015/core/common/utilities/find-translation.js +0 -9
  848. package/esm2015/core/common/utilities/flatten-facet-values.js +0 -4
  849. package/esm2015/core/common/utilities/get-default-ui-language.js +0 -13
  850. package/esm2015/core/components/app-shell/app-shell.component.js +0 -78
  851. package/esm2015/core/components/breadcrumb/breadcrumb.component.js +0 -126
  852. package/esm2015/core/components/channel-switcher/channel-switcher.component.js +0 -52
  853. package/esm2015/core/components/main-nav/main-nav.component.js +0 -272
  854. package/esm2015/core/components/notification/notification.component.js +0 -71
  855. package/esm2015/core/components/overlay-host/overlay-host.component.js +0 -22
  856. package/esm2015/core/components/theme-switcher/theme-switcher.component.js +0 -31
  857. package/esm2015/core/components/ui-language-switcher-dialog/ui-language-switcher-dialog.component.js +0 -294
  858. package/esm2015/core/components/user-menu/user-menu.component.js +0 -24
  859. package/esm2015/core/core.module.js +0 -115
  860. package/esm2015/core/data/client-state/client-resolvers.js +0 -123
  861. package/esm2015/core/data/data.module.js +0 -106
  862. package/esm2015/core/data/definitions/customer-definitions.js +0 -258
  863. package/esm2015/core/data/providers/administrator-data.service.js +0 -55
  864. package/esm2015/core/data/providers/auth-data.service.js +0 -20
  865. package/esm2015/core/data/providers/base-data.service.js +0 -72
  866. package/esm2015/core/data/providers/client-data.service.js +0 -75
  867. package/esm2015/core/data/providers/collection-data.service.js +0 -72
  868. package/esm2015/core/data/providers/customer-data.service.js +0 -114
  869. package/esm2015/core/data/providers/data.service.js +0 -90
  870. package/esm2015/core/data/providers/facet-data.service.js +0 -60
  871. package/esm2015/core/data/providers/fetch-adapter.js +0 -38
  872. package/esm2015/core/data/providers/interceptor.js +0 -142
  873. package/esm2015/core/data/providers/order-data.service.js +0 -98
  874. package/esm2015/core/data/providers/product-data.service.js +0 -232
  875. package/esm2015/core/data/providers/promotion-data.service.js +0 -36
  876. package/esm2015/core/data/providers/settings-data.service.js +0 -231
  877. package/esm2015/core/data/providers/shipping-method-data.service.js +0 -66
  878. package/esm2015/core/data/server-config.js +0 -76
  879. package/esm2015/core/data/utils/add-custom-fields.js +0 -78
  880. package/esm2015/core/data/utils/transform-relation-custom-field-inputs.js +0 -46
  881. package/esm2015/core/providers/auth/auth.service.js +0 -110
  882. package/esm2015/core/providers/component-registry/component-registry.service.js +0 -23
  883. package/esm2015/core/providers/custom-detail-component/custom-detail-component.service.js +0 -44
  884. package/esm2015/core/providers/custom-field-component/custom-field-component.service.js +0 -47
  885. package/esm2015/core/providers/dashboard-widget/dashboard-widget.service.js +0 -97
  886. package/esm2015/core/providers/guard/auth.guard.js +0 -42
  887. package/esm2015/core/providers/health-check/health-check.service.js +0 -38
  888. package/esm2015/core/providers/i18n/custom-message-format-compiler.js +0 -30
  889. package/esm2015/core/providers/i18n/i18n.service.js +0 -56
  890. package/esm2015/core/providers/job-queue/job-queue.service.js +0 -93
  891. package/esm2015/core/providers/local-storage/local-storage.service.js +0 -79
  892. package/esm2015/core/providers/modal/modal.service.js +0 -100
  893. package/esm2015/core/providers/nav-builder/nav-builder.service.js +0 -264
  894. package/esm2015/core/providers/notification/notification.service.js +0 -165
  895. package/esm2015/core/providers/overlay-host/overlay-host.service.js +0 -46
  896. package/esm2015/core/public_api.js +0 -217
  897. package/esm2015/core/shared/components/action-bar/action-bar.component.js +0 -47
  898. package/esm2015/core/shared/components/action-bar-items/action-bar-items.component.js +0 -78
  899. package/esm2015/core/shared/components/address-form/address-form.component.js +0 -17
  900. package/esm2015/core/shared/components/affixed-input/affixed-input.component.js +0 -19
  901. package/esm2015/core/shared/components/affixed-input/percentage-suffix-input.component.js +0 -70
  902. package/esm2015/core/shared/components/asset-file-input/asset-file-input.component.js +0 -92
  903. package/esm2015/core/shared/components/asset-gallery/asset-gallery.component.js +0 -102
  904. package/esm2015/core/shared/components/asset-picker-dialog/asset-picker-dialog.component.js +0 -138
  905. package/esm2015/core/shared/components/asset-preview/asset-preview.component.js +0 -176
  906. package/esm2015/core/shared/components/asset-preview-dialog/asset-preview-dialog.component.js +0 -35
  907. package/esm2015/core/shared/components/asset-search-input/asset-search-input.component.js +0 -102
  908. package/esm2015/core/shared/components/channel-assignment-control/channel-assignment-control.component.js +0 -109
  909. package/esm2015/core/shared/components/channel-badge/channel-badge.component.js +0 -19
  910. package/esm2015/core/shared/components/chip/chip.component.js +0 -42
  911. package/esm2015/core/shared/components/configurable-input/configurable-input.component.js +0 -128
  912. package/esm2015/core/shared/components/currency-input/currency-input.component.js +0 -145
  913. package/esm2015/core/shared/components/custom-detail-component-host/custom-detail-component-host.component.js +0 -44
  914. package/esm2015/core/shared/components/custom-field-control/custom-field-control.component.js +0 -55
  915. package/esm2015/core/shared/components/customer-label/customer-label.component.js +0 -15
  916. package/esm2015/core/shared/components/data-table/data-table-column.component.js +0 -22
  917. package/esm2015/core/shared/components/data-table/data-table.component.js +0 -106
  918. package/esm2015/core/shared/components/datetime-picker/datetime-picker.component.js +0 -205
  919. package/esm2015/core/shared/components/datetime-picker/datetime-picker.service.js +0 -199
  920. package/esm2015/core/shared/components/dropdown/dropdown-item.directive.js +0 -24
  921. package/esm2015/core/shared/components/dropdown/dropdown-menu.component.js +0 -121
  922. package/esm2015/core/shared/components/dropdown/dropdown-trigger.directive.js +0 -25
  923. package/esm2015/core/shared/components/dropdown/dropdown.component.js +0 -60
  924. package/esm2015/core/shared/components/edit-note-dialog/edit-note-dialog.component.js +0 -26
  925. package/esm2015/core/shared/components/empty-placeholder/empty-placeholder.component.js +0 -15
  926. package/esm2015/core/shared/components/entity-info/entity-info.component.js +0 -19
  927. package/esm2015/core/shared/components/extension-host/extension-host.component.js +0 -83
  928. package/esm2015/core/shared/components/extension-host/extension-host.service.js +0 -100
  929. package/esm2015/core/shared/components/facet-value-chip/facet-value-chip.component.js +0 -23
  930. package/esm2015/core/shared/components/facet-value-selector/facet-value-selector.component.js +0 -114
  931. package/esm2015/core/shared/components/focal-point-control/focal-point-control.component.js +0 -56
  932. package/esm2015/core/shared/components/form-field/form-field-control.directive.js +0 -35
  933. package/esm2015/core/shared/components/form-field/form-field.component.js +0 -61
  934. package/esm2015/core/shared/components/form-item/form-item.component.js +0 -19
  935. package/esm2015/core/shared/components/formatted-address/formatted-address.component.js +0 -37
  936. package/esm2015/core/shared/components/help-tooltip/help-tooltip.component.js +0 -16
  937. package/esm2015/core/shared/components/history-entry-detail/history-entry-detail.component.js +0 -12
  938. package/esm2015/core/shared/components/items-per-page-controls/items-per-page-controls.component.js +0 -23
  939. package/esm2015/core/shared/components/labeled-data/labeled-data.component.js +0 -15
  940. package/esm2015/core/shared/components/language-selector/language-selector.component.js +0 -21
  941. package/esm2015/core/shared/components/manage-tags-dialog/manage-tags-dialog.component.js +0 -58
  942. package/esm2015/core/shared/components/modal-dialog/dialog-buttons.directive.js +0 -23
  943. package/esm2015/core/shared/components/modal-dialog/dialog-component-outlet.component.js +0 -31
  944. package/esm2015/core/shared/components/modal-dialog/dialog-title.directive.js +0 -23
  945. package/esm2015/core/shared/components/modal-dialog/modal-dialog.component.js +0 -57
  946. package/esm2015/core/shared/components/object-tree/object-tree.component.js +0 -53
  947. package/esm2015/core/shared/components/order-state-label/order-state-label.component.js +0 -43
  948. package/esm2015/core/shared/components/pagination-controls/pagination-controls.component.js +0 -22
  949. package/esm2015/core/shared/components/product-selector/product-selector.component.js +0 -61
  950. package/esm2015/core/shared/components/rich-text-editor/external-image-dialog/external-image-dialog.component.js +0 -32
  951. package/esm2015/core/shared/components/rich-text-editor/link-dialog/link-dialog.component.js +0 -28
  952. package/esm2015/core/shared/components/rich-text-editor/prosemirror/prosemirror.service.js +0 -112
  953. package/esm2015/core/shared/components/rich-text-editor/rich-text-editor.component.js +0 -86
  954. package/esm2015/core/shared/components/select-toggle/select-toggle.component.js +0 -28
  955. package/esm2015/core/shared/components/simple-dialog/simple-dialog.component.js +0 -21
  956. package/esm2015/core/shared/components/status-badge/status-badge.component.js +0 -18
  957. package/esm2015/core/shared/components/tabbed-custom-fields/tabbed-custom-fields.component.js +0 -49
  958. package/esm2015/core/shared/components/table-row-action/table-row-action.component.js +0 -23
  959. package/esm2015/core/shared/components/tag-selector/tag-selector.component.js +0 -55
  960. package/esm2015/core/shared/components/timeline-entry/timeline-entry.component.js +0 -40
  961. package/esm2015/core/shared/components/title-input/title-input.component.js +0 -18
  962. package/esm2015/core/shared/components/ui-extension-point/ui-extension-point.component.js +0 -31
  963. package/esm2015/core/shared/directives/disabled.directive.js +0 -38
  964. package/esm2015/core/shared/directives/if-default-channel-active.directive.js +0 -42
  965. package/esm2015/core/shared/directives/if-directive-base.js +0 -75
  966. package/esm2015/core/shared/directives/if-multichannel.directive.js +0 -47
  967. package/esm2015/core/shared/directives/if-permissions.directive.js +0 -78
  968. package/esm2015/core/shared/dynamic-form-inputs/boolean-form-input/boolean-form-input.component.js +0 -20
  969. package/esm2015/core/shared/dynamic-form-inputs/code-editor-form-input/json-editor-form-input.component.js +0 -125
  970. package/esm2015/core/shared/dynamic-form-inputs/currency-form-input/currency-form-input.component.js +0 -33
  971. package/esm2015/core/shared/dynamic-form-inputs/customer-group-form-input/customer-group-form-input.component.js +0 -43
  972. package/esm2015/core/shared/dynamic-form-inputs/date-form-input/date-form-input.component.js +0 -35
  973. package/esm2015/core/shared/dynamic-form-inputs/dynamic-form-input/dynamic-form-input.component.js +0 -266
  974. package/esm2015/core/shared/dynamic-form-inputs/facet-value-form-input/facet-value-form-input.component.js +0 -36
  975. package/esm2015/core/shared/dynamic-form-inputs/number-form-input/number-form-input.component.js +0 -43
  976. package/esm2015/core/shared/dynamic-form-inputs/password-form-input/password-form-input.component.js +0 -20
  977. package/esm2015/core/shared/dynamic-form-inputs/product-selector-form-input/product-selector-form-input.component.js +0 -60
  978. package/esm2015/core/shared/dynamic-form-inputs/relation-form-input/asset/relation-asset-input.component.js +0 -69
  979. package/esm2015/core/shared/dynamic-form-inputs/relation-form-input/customer/relation-customer-input.component.js +0 -66
  980. package/esm2015/core/shared/dynamic-form-inputs/relation-form-input/product/relation-product-input.component.js +0 -81
  981. package/esm2015/core/shared/dynamic-form-inputs/relation-form-input/product-variant/relation-product-variant-input.component.js +0 -81
  982. package/esm2015/core/shared/dynamic-form-inputs/relation-form-input/relation-card/relation-card.component.js +0 -43
  983. package/esm2015/core/shared/dynamic-form-inputs/relation-form-input/relation-form-input.component.js +0 -25
  984. package/esm2015/core/shared/dynamic-form-inputs/relation-form-input/relation-selector-dialog/relation-selector-dialog.component.js +0 -12
  985. package/esm2015/core/shared/dynamic-form-inputs/rich-text-form-input/rich-text-form-input.component.js +0 -20
  986. package/esm2015/core/shared/dynamic-form-inputs/select-form-input/select-form-input.component.js +0 -28
  987. package/esm2015/core/shared/dynamic-form-inputs/text-form-input/text-form-input.component.js +0 -28
  988. package/esm2015/core/shared/dynamic-form-inputs/textarea-form-input/textarea-form-input.component.js +0 -23
  989. package/esm2015/core/shared/pipes/asset-preview.pipe.js +0 -38
  990. package/esm2015/core/shared/pipes/channel-label.pipe.js +0 -19
  991. package/esm2015/core/shared/pipes/custom-field-label.pipe.js +0 -46
  992. package/esm2015/core/shared/pipes/duration.pipe.js +0 -48
  993. package/esm2015/core/shared/pipes/file-size.pipe.js +0 -43
  994. package/esm2015/core/shared/pipes/has-permission.pipe.js +0 -65
  995. package/esm2015/core/shared/pipes/locale-base.pipe.js +0 -57
  996. package/esm2015/core/shared/pipes/locale-currency-name.pipe.js +0 -58
  997. package/esm2015/core/shared/pipes/locale-currency.pipe.js +0 -40
  998. package/esm2015/core/shared/pipes/locale-date.pipe.js +0 -80
  999. package/esm2015/core/shared/pipes/locale-language-name.pipe.js +0 -47
  1000. package/esm2015/core/shared/pipes/locale-region-name.pipe.js +0 -47
  1001. package/esm2015/core/shared/pipes/sentence-case.pipe.js +0 -26
  1002. package/esm2015/core/shared/pipes/sort.pipe.js +0 -30
  1003. package/esm2015/core/shared/pipes/state-i18n-token.pipe.js +0 -46
  1004. package/esm2015/core/shared/pipes/string-to-color.pipe.js +0 -14
  1005. package/esm2015/core/shared/pipes/time-ago.pipe.js +0 -51
  1006. package/esm2015/core/shared/providers/routing/can-deactivate-detail-guard.js +0 -36
  1007. package/esm2015/core/shared/shared.module.js +0 -263
  1008. package/esm2015/customer/components/add-customer-to-group-dialog/add-customer-to-group-dialog.component.js +0 -42
  1009. package/esm2015/customer/components/address-card/address-card.component.js +0 -86
  1010. package/esm2015/customer/components/address-detail-dialog/address-detail-dialog.component.js +0 -28
  1011. package/esm2015/customer/components/customer-detail/customer-detail.component.js +0 -393
  1012. package/esm2015/customer/components/customer-group-detail-dialog/customer-group-detail-dialog.component.js +0 -47
  1013. package/esm2015/customer/components/customer-group-list/customer-group-list.component.js +0 -184
  1014. package/esm2015/customer/components/customer-group-member-list/customer-group-member-list.component.js +0 -101
  1015. package/esm2015/customer/components/customer-history/customer-history.component.js +0 -76
  1016. package/esm2015/customer/components/customer-list/customer-list.component.js +0 -78
  1017. package/esm2015/customer/components/customer-status-label/customer-status-label.component.js +0 -15
  1018. package/esm2015/customer/components/select-customer-group-dialog/select-customer-group-dialog.component.js +0 -31
  1019. package/esm2015/customer/customer.module.js +0 -37
  1020. package/esm2015/customer/customer.routes.js +0 -44
  1021. package/esm2015/customer/providers/routing/customer-resolver.js +0 -35
  1022. package/esm2015/dashboard/components/dashboard/dashboard.component.js +0 -124
  1023. package/esm2015/dashboard/components/dashboard-widget/dashboard-widget.component.js +0 -39
  1024. package/esm2015/dashboard/dashboard.module.js +0 -25
  1025. package/esm2015/dashboard/default-widgets.js +0 -34
  1026. package/esm2015/dashboard/widgets/latest-orders-widget/latest-orders-widget.component.js +0 -42
  1027. package/esm2015/dashboard/widgets/order-summary-widget/order-summary-widget.component.js +0 -56
  1028. package/esm2015/dashboard/widgets/test-widget/test-widget.component.js +0 -19
  1029. package/esm2015/dashboard/widgets/welcome-widget/welcome-widget.component.js +0 -36
  1030. package/esm2015/login/components/login/login.component.js +0 -61
  1031. package/esm2015/login/login.module.js +0 -15
  1032. package/esm2015/login/providers/login.guard.js +0 -35
  1033. package/esm2015/marketing/components/promotion-detail/promotion-detail.component.js +0 -247
  1034. package/esm2015/marketing/components/promotion-list/promotion-list.component.js +0 -87
  1035. package/esm2015/marketing/marketing.module.js +0 -15
  1036. package/esm2015/marketing/marketing.routes.js +0 -35
  1037. package/esm2015/marketing/providers/routing/promotion-resolver.js +0 -34
  1038. package/esm2015/order/components/add-manual-payment-dialog/add-manual-payment-dialog.component.js +0 -39
  1039. package/esm2015/order/components/cancel-order-dialog/cancel-order-dialog.component.js +0 -52
  1040. package/esm2015/order/components/fulfill-order-dialog/fulfill-order-dialog.component.js +0 -71
  1041. package/esm2015/order/components/fulfillment-card/fulfillment-card.component.js +0 -43
  1042. package/esm2015/order/components/fulfillment-detail/fulfillment-detail.component.js +0 -64
  1043. package/esm2015/order/components/fulfillment-state-label/fulfillment-state-label.component.js +0 -26
  1044. package/esm2015/order/components/line-fulfillment/line-fulfillment.component.js +0 -65
  1045. package/esm2015/order/components/line-refunds/line-refunds.component.js +0 -35
  1046. package/esm2015/order/components/modification-detail/modification-detail.component.js +0 -66
  1047. package/esm2015/order/components/order-custom-fields-card/order-custom-fields-card.component.js +0 -39
  1048. package/esm2015/order/components/order-detail/order-detail.component.js +0 -509
  1049. package/esm2015/order/components/order-editor/order-editor.component.js +0 -362
  1050. package/esm2015/order/components/order-edits-preview-dialog/order-edits-preview-dialog.component.js +0 -50
  1051. package/esm2015/order/components/order-history/order-history.component.js +0 -154
  1052. package/esm2015/order/components/order-list/order-list.component.js +0 -188
  1053. package/esm2015/order/components/order-payment-card/order-payment-card.component.js +0 -33
  1054. package/esm2015/order/components/order-process-graph/order-process-edge.component.js +0 -37
  1055. package/esm2015/order/components/order-process-graph/order-process-graph.component.js +0 -94
  1056. package/esm2015/order/components/order-process-graph/order-process-node.component.js +0 -53
  1057. package/esm2015/order/components/order-process-graph-dialog/order-process-graph-dialog.component.js +0 -23
  1058. package/esm2015/order/components/order-state-select-dialog/order-state-select-dialog.component.js +0 -25
  1059. package/esm2015/order/components/order-table/order-table.component.js +0 -68
  1060. package/esm2015/order/components/payment-detail/payment-detail.component.js +0 -16
  1061. package/esm2015/order/components/payment-state-label/payment-state-label.component.js +0 -26
  1062. package/esm2015/order/components/refund-order-dialog/refund-order-dialog.component.js +0 -133
  1063. package/esm2015/order/components/refund-state-label/refund-state-label.component.js +0 -25
  1064. package/esm2015/order/components/settle-refund-dialog/settle-refund-dialog.component.js +0 -21
  1065. package/esm2015/order/components/simple-item-list/simple-item-list.component.js +0 -15
  1066. package/esm2015/order/order.module.js +0 -70
  1067. package/esm2015/order/order.routes.js +0 -54
  1068. package/esm2015/order/providers/order-transition.service.js +0 -116
  1069. package/esm2015/order/providers/routing/order-resolver.js +0 -33
  1070. package/esm2015/settings/components/add-country-to-zone-dialog/add-country-to-zone-dialog.component.js +0 -35
  1071. package/esm2015/settings/components/admin-detail/admin-detail.component.js +0 -199
  1072. package/esm2015/settings/components/administrator-list/administrator-list.component.js +0 -52
  1073. package/esm2015/settings/components/channel-detail/channel-detail.component.js +0 -163
  1074. package/esm2015/settings/components/channel-list/channel-list.component.js +0 -57
  1075. package/esm2015/settings/components/country-detail/country-detail.component.js +0 -120
  1076. package/esm2015/settings/components/country-list/country-list.component.js +0 -82
  1077. package/esm2015/settings/components/global-settings/global-settings.component.js +0 -89
  1078. package/esm2015/settings/components/payment-method-detail/payment-method-detail.component.js +0 -204
  1079. package/esm2015/settings/components/payment-method-list/payment-method-list.component.js +0 -66
  1080. package/esm2015/settings/components/permission-grid/permission-grid.component.js +0 -80
  1081. package/esm2015/settings/components/profile/profile.component.js +0 -82
  1082. package/esm2015/settings/components/role-detail/role-detail.component.js +0 -109
  1083. package/esm2015/settings/components/role-list/role-list.component.js +0 -73
  1084. package/esm2015/settings/components/shipping-eligibility-test-result/shipping-eligibility-test-result.component.js +0 -24
  1085. package/esm2015/settings/components/shipping-method-detail/shipping-method-detail.component.js +0 -235
  1086. package/esm2015/settings/components/shipping-method-list/shipping-method-list.component.js +0 -94
  1087. package/esm2015/settings/components/shipping-method-test-result/shipping-method-test-result.component.js +0 -24
  1088. package/esm2015/settings/components/tax-category-detail/tax-category-detail.component.js +0 -115
  1089. package/esm2015/settings/components/tax-category-list/tax-category-list.component.js +0 -60
  1090. package/esm2015/settings/components/tax-rate-detail/tax-rate-detail.component.js +0 -131
  1091. package/esm2015/settings/components/tax-rate-list/tax-rate-list.component.js +0 -64
  1092. package/esm2015/settings/components/test-address-form/test-address-form.component.js +0 -53
  1093. package/esm2015/settings/components/test-order-builder/test-order-builder.component.js +0 -73
  1094. package/esm2015/settings/components/zone-detail-dialog/zone-detail-dialog.component.js +0 -47
  1095. package/esm2015/settings/components/zone-list/zone-list.component.js +0 -160
  1096. package/esm2015/settings/components/zone-member-list/zone-member-controls.directive.js +0 -15
  1097. package/esm2015/settings/components/zone-member-list/zone-member-list-header.directive.js +0 -15
  1098. package/esm2015/settings/components/zone-member-list/zone-member-list.component.js +0 -63
  1099. package/esm2015/settings/providers/routing/administrator-resolver.js +0 -32
  1100. package/esm2015/settings/providers/routing/channel-resolver.js +0 -40
  1101. package/esm2015/settings/providers/routing/country-resolver.js +0 -35
  1102. package/esm2015/settings/providers/routing/global-settings-resolver.js +0 -28
  1103. package/esm2015/settings/providers/routing/payment-method-resolver.js +0 -37
  1104. package/esm2015/settings/providers/routing/profile-resolver.js +0 -34
  1105. package/esm2015/settings/providers/routing/role-resolver.js +0 -32
  1106. package/esm2015/settings/providers/routing/shipping-method-resolver.js +0 -38
  1107. package/esm2015/settings/providers/routing/tax-category-resolver.js +0 -32
  1108. package/esm2015/settings/providers/routing/tax-rate-resolver.js +0 -36
  1109. package/esm2015/settings/settings.module.js +0 -72
  1110. package/esm2015/settings/settings.routes.js +0 -255
  1111. package/esm2015/system/components/health-check/health-check.component.js +0 -19
  1112. package/esm2015/system/components/job-list/job-list.component.js +0 -74
  1113. package/esm2015/system/components/job-state-label/job-state-label.component.js +0 -45
  1114. package/esm2015/system/system.module.js +0 -16
  1115. package/esm2015/system/system.routes.js +0 -22
  1116. package/fesm2015/vendure-admin-ui-catalog.js +0 -3800
  1117. package/fesm2015/vendure-admin-ui-catalog.js.map +0 -1
  1118. package/fesm2015/vendure-admin-ui-core.js +0 -15757
  1119. package/fesm2015/vendure-admin-ui-core.js.map +0 -1
  1120. package/fesm2015/vendure-admin-ui-customer.js +0 -1140
  1121. package/fesm2015/vendure-admin-ui-customer.js.map +0 -1
  1122. package/fesm2015/vendure-admin-ui-dashboard.js +0 -371
  1123. package/fesm2015/vendure-admin-ui-dashboard.js.map +0 -1
  1124. package/fesm2015/vendure-admin-ui-login.js +0 -121
  1125. package/fesm2015/vendure-admin-ui-login.js.map +0 -1
  1126. package/fesm2015/vendure-admin-ui-marketing.js +0 -403
  1127. package/fesm2015/vendure-admin-ui-marketing.js.map +0 -1
  1128. package/fesm2015/vendure-admin-ui-order.js +0 -2492
  1129. package/fesm2015/vendure-admin-ui-order.js.map +0 -1
  1130. package/fesm2015/vendure-admin-ui-settings.js +0 -2975
  1131. package/fesm2015/vendure-admin-ui-settings.js.map +0 -1
  1132. package/fesm2015/vendure-admin-ui-system.js +0 -171
  1133. package/fesm2015/vendure-admin-ui-system.js.map +0 -1
  1134. package/fesm2015/vendure-admin-ui.js.map +0 -1
  1135. package/login/vendure-admin-ui-login.metadata.json +0 -1
  1136. package/marketing/vendure-admin-ui-marketing.metadata.json +0 -1
  1137. package/order/vendure-admin-ui-order.metadata.json +0 -1
  1138. package/settings/vendure-admin-ui-settings.metadata.json +0 -1
  1139. package/system/vendure-admin-ui-system.metadata.json +0 -1
  1140. package/vendure-admin-ui.metadata.json +0 -1
@@ -0,0 +1,226 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
2
+ import { flattenFacetValues, GlobalFlag, Permission, } from '@vendure/admin-ui/core';
3
+ import { DEFAULT_CHANNEL_CODE } from '@vendure/common/lib/shared-constants';
4
+ import { notNullOrUndefined } from '@vendure/common/lib/shared-utils';
5
+ import { debounceTime, distinctUntilChanged, map } from 'rxjs/operators';
6
+ import { UpdateProductOptionDialogComponent } from '../update-product-option-dialog/update-product-option-dialog.component';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@vendure/admin-ui/core";
9
+ import * as i2 from "@clr/angular";
10
+ import * as i3 from "../assets/assets.component";
11
+ import * as i4 from "../variant-price-detail/variant-price-detail.component";
12
+ import * as i5 from "@angular/common";
13
+ import * as i6 from "@angular/forms";
14
+ import * as i7 from "@angular/router";
15
+ import * as i8 from "ngx-pagination";
16
+ import * as i9 from "@ngx-translate/core";
17
+ export class ProductVariantsListComponent {
18
+ constructor(changeDetector, modalService, dataService) {
19
+ this.changeDetector = changeDetector;
20
+ this.modalService = modalService;
21
+ this.dataService = dataService;
22
+ this.assignToChannel = new EventEmitter();
23
+ this.removeFromChannel = new EventEmitter();
24
+ this.assetChange = new EventEmitter();
25
+ this.selectionChange = new EventEmitter();
26
+ this.selectFacetValueClick = new EventEmitter();
27
+ this.updateProductOption = new EventEmitter();
28
+ this.selectedVariantIds = [];
29
+ this.formGroupMap = new Map();
30
+ this.GlobalFlag = GlobalFlag;
31
+ this.updatePermission = [Permission.UpdateCatalog, Permission.UpdateProduct];
32
+ }
33
+ ngOnInit() {
34
+ this.dataService.settings.getGlobalSettings('cache-first').single$.subscribe(({ globalSettings }) => {
35
+ this.globalTrackInventory = globalSettings.trackInventory;
36
+ this.globalOutOfStockThreshold = globalSettings.outOfStockThreshold;
37
+ this.changeDetector.markForCheck();
38
+ });
39
+ this.subscription = this.formArray.valueChanges.subscribe(() => this.changeDetector.markForCheck());
40
+ this.subscription.add(this.formArray.valueChanges
41
+ .pipe(map(value => value.length), debounceTime(1), distinctUntilChanged())
42
+ .subscribe(() => {
43
+ this.buildFormGroupMap();
44
+ }));
45
+ this.buildFormGroupMap();
46
+ }
47
+ ngOnChanges(changes) {
48
+ if ('facets' in changes && !!changes['facets'].currentValue) {
49
+ this.facetValues = flattenFacetValues(this.facets);
50
+ }
51
+ }
52
+ ngOnDestroy() {
53
+ if (this.subscription) {
54
+ this.subscription.unsubscribe();
55
+ }
56
+ }
57
+ isDefaultChannel(channelCode) {
58
+ return channelCode === DEFAULT_CHANNEL_CODE;
59
+ }
60
+ trackById(index, item) {
61
+ return item.id;
62
+ }
63
+ inventoryIsNotTracked(formGroup) {
64
+ const trackInventory = formGroup.get('trackInventory')?.value;
65
+ return (trackInventory === GlobalFlag.FALSE ||
66
+ (trackInventory === GlobalFlag.INHERIT && this.globalTrackInventory === false));
67
+ }
68
+ getTaxCategoryName(group) {
69
+ const control = group.get(['taxCategoryId']);
70
+ if (control && this.taxCategories) {
71
+ const match = this.taxCategories.find(t => t.id === control.value);
72
+ return match ? match.name : '';
73
+ }
74
+ return '';
75
+ }
76
+ getSaleableStockLevel(variant) {
77
+ const effectiveOutOfStockThreshold = variant.useGlobalOutOfStockThreshold
78
+ ? this.globalOutOfStockThreshold
79
+ : variant.outOfStockThreshold;
80
+ return variant.stockOnHand - variant.stockAllocated - effectiveOutOfStockThreshold;
81
+ }
82
+ areAllSelected() {
83
+ return !!this.variants && this.selectedVariantIds.length === this.variants.length;
84
+ }
85
+ onAssetChange(variantId, event) {
86
+ this.assetChange.emit({
87
+ variantId,
88
+ ...event,
89
+ });
90
+ const index = this.variants.findIndex(v => v.id === variantId);
91
+ this.formArray.at(index).markAsDirty();
92
+ }
93
+ toggleSelectAll() {
94
+ if (this.areAllSelected()) {
95
+ this.selectedVariantIds = [];
96
+ }
97
+ else {
98
+ this.selectedVariantIds = this.variants.map(v => v.id);
99
+ }
100
+ this.selectionChange.emit(this.selectedVariantIds);
101
+ }
102
+ toggleSelectVariant(variantId) {
103
+ const index = this.selectedVariantIds.indexOf(variantId);
104
+ if (-1 < index) {
105
+ this.selectedVariantIds.splice(index, 1);
106
+ }
107
+ else {
108
+ this.selectedVariantIds.push(variantId);
109
+ }
110
+ this.selectionChange.emit(this.selectedVariantIds);
111
+ }
112
+ optionGroupName(optionGroupId) {
113
+ const group = this.optionGroups.find(g => g.id === optionGroupId);
114
+ if (group) {
115
+ const translation = group?.translations.find(t => t.languageCode === this.activeLanguage) ??
116
+ group.translations[0];
117
+ return translation.name;
118
+ }
119
+ }
120
+ optionName(option) {
121
+ const translation = option.translations.find(t => t.languageCode === this.activeLanguage) ?? option.translations[0];
122
+ return translation.name;
123
+ }
124
+ pendingFacetValues(variant) {
125
+ if (this.facets) {
126
+ const formFacetValueIds = this.getFacetValueIds(variant.id);
127
+ const variantFacetValueIds = variant.facetValues.map(fv => fv.id);
128
+ return formFacetValueIds
129
+ .filter(x => !variantFacetValueIds.includes(x))
130
+ .map(id => this.facetValues.find(fv => fv.id === id))
131
+ .filter(notNullOrUndefined);
132
+ }
133
+ else {
134
+ return [];
135
+ }
136
+ }
137
+ existingFacetValues(variant) {
138
+ const formFacetValueIds = this.getFacetValueIds(variant.id);
139
+ const intersection = [...formFacetValueIds].filter(x => variant.facetValues.map(fv => fv.id).includes(x));
140
+ return intersection
141
+ .map(id => variant.facetValues.find(fv => fv.id === id))
142
+ .filter(notNullOrUndefined);
143
+ }
144
+ removeFacetValue(variant, facetValueId) {
145
+ const formGroup = this.formGroupMap.get(variant.id);
146
+ if (formGroup) {
147
+ const newValue = formGroup.value.facetValueIds.filter(id => id !== facetValueId);
148
+ formGroup.patchValue({
149
+ facetValueIds: newValue,
150
+ });
151
+ formGroup.markAsDirty();
152
+ }
153
+ }
154
+ isVariantSelected(variantId) {
155
+ return -1 < this.selectedVariantIds.indexOf(variantId);
156
+ }
157
+ editOption(option) {
158
+ this.modalService
159
+ .fromComponent(UpdateProductOptionDialogComponent, {
160
+ size: 'md',
161
+ locals: {
162
+ productOption: option,
163
+ activeLanguage: this.activeLanguage,
164
+ customFields: this.customOptionFields,
165
+ },
166
+ })
167
+ .subscribe(result => {
168
+ if (result) {
169
+ this.updateProductOption.emit(result);
170
+ }
171
+ });
172
+ }
173
+ buildFormGroupMap() {
174
+ this.formGroupMap.clear();
175
+ for (const controlGroup of this.formArray.controls) {
176
+ this.formGroupMap.set(controlGroup.value.id, controlGroup);
177
+ }
178
+ this.changeDetector.markForCheck();
179
+ }
180
+ getFacetValueIds(id) {
181
+ const formValue = this.formGroupMap.get(id)?.value;
182
+ return formValue.facetValueIds;
183
+ }
184
+ }
185
+ ProductVariantsListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ProductVariantsListComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.ModalService }, { token: i1.DataService }], target: i0.ɵɵFactoryTarget.Component });
186
+ ProductVariantsListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: ProductVariantsListComponent, selector: "vdr-product-variants-list", inputs: { formArray: ["productVariantsFormArray", "formArray"], variants: "variants", paginationConfig: "paginationConfig", channelPriceIncludesTax: "channelPriceIncludesTax", taxCategories: "taxCategories", facets: "facets", optionGroups: "optionGroups", customFields: "customFields", customOptionFields: "customOptionFields", activeLanguage: "activeLanguage", pendingAssetChanges: "pendingAssetChanges" }, outputs: { assignToChannel: "assignToChannel", removeFromChannel: "removeFromChannel", assetChange: "assetChange", selectionChange: "selectionChange", selectFacetValueClick: "selectFacetValueClick", updateProductOption: "updateProductOption" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"variants-list\">\r\n <div\r\n class=\"variant-container card\"\r\n *ngFor=\"\r\n let variant of variants | paginate: paginationConfig || { itemsPerPage: 10, currentPage: 1 };\r\n trackBy: trackById;\r\n let i = index\r\n \"\r\n [class.disabled]=\"!formGroupMap.get(variant.id)?.get('enabled')?.value\"\r\n >\r\n <ng-container *ngIf=\"formGroupMap.get(variant.id) as formGroup\" [formGroup]=\"formGroup\">\r\n <div class=\"card-block header-row\">\r\n <div class=\"details\">\r\n <vdr-title-input class=\"sku\" [readonly]=\"!(updatePermission | hasPermission)\">\r\n <clr-input-container>\r\n <input\r\n clrInput\r\n type=\"text\"\r\n formControlName=\"sku\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n [placeholder]=\"'catalog.sku' | translate\"\r\n />\r\n </clr-input-container>\r\n </vdr-title-input>\r\n <vdr-title-input class=\"name\" [readonly]=\"!(updatePermission | hasPermission)\">\r\n <clr-input-container>\r\n <input\r\n clrInput\r\n type=\"text\"\r\n formControlName=\"name\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n [placeholder]=\"'common.name' | translate\"\r\n />\r\n </clr-input-container>\r\n </vdr-title-input>\r\n </div>\r\n <div class=\"right-controls\">\r\n <clr-toggle-wrapper *vdrIfPermissions=\"updatePermission\">\r\n <input type=\"checkbox\" clrToggle name=\"enabled\" formControlName=\"enabled\" />\r\n <label>{{ 'common.enabled' | translate }}</label>\r\n </clr-toggle-wrapper>\r\n </div>\r\n </div>\r\n <div class=\"card-block\">\r\n <div class=\"variant-body\">\r\n <div class=\"assets\">\r\n <vdr-assets\r\n [compact]=\"true\"\r\n [assets]=\"pendingAssetChanges[variant.id]?.assets || variant.assets\"\r\n [featuredAsset]=\"\r\n pendingAssetChanges[variant.id]?.featuredAsset || variant.featuredAsset\r\n \"\r\n [updatePermissions]=\"updatePermission\"\r\n (change)=\"onAssetChange(variant.id, $event)\"\r\n ></vdr-assets>\r\n </div>\r\n <div class=\"variant-form-inputs\">\r\n <div class=\"standard-fields\">\r\n <div class=\"variant-form-input-row\">\r\n <div class=\"tax-category\">\r\n <clr-select-container\r\n *vdrIfPermissions=\"updatePermission; else taxCategoryLabel\"\r\n >\r\n <label>{{ 'catalog.tax-category' | translate }}</label>\r\n <select clrSelect name=\"options\" formControlName=\"taxCategoryId\">\r\n <option\r\n *ngFor=\"let taxCategory of taxCategories\"\r\n [value]=\"taxCategory.id\"\r\n >\r\n {{ taxCategory.name }}\r\n </option>\r\n </select>\r\n </clr-select-container>\r\n <ng-template #taxCategoryLabel>\r\n <label class=\"clr-control-label\">{{\r\n 'catalog.tax-category' | translate\r\n }}</label>\r\n <div class=\"tax-category-label\">\r\n {{ getTaxCategoryName(formGroup) }}\r\n </div>\r\n </ng-template>\r\n </div>\r\n <div class=\"price\">\r\n <clr-input-container>\r\n <label>{{ 'catalog.price' | translate }}</label>\r\n <vdr-currency-input\r\n *ngIf=\"!channelPriceIncludesTax\"\r\n clrInput\r\n [currencyCode]=\"variant.currencyCode\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n formControlName=\"price\"\r\n ></vdr-currency-input>\r\n <vdr-currency-input\r\n *ngIf=\"channelPriceIncludesTax\"\r\n clrInput\r\n [currencyCode]=\"variant.currencyCode\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n formControlName=\"priceWithTax\"\r\n ></vdr-currency-input>\r\n </clr-input-container>\r\n </div>\r\n <vdr-variant-price-detail\r\n [price]=\"formGroup.get('price')!.value\"\r\n [currencyCode]=\"variant.currencyCode\"\r\n [priceIncludesTax]=\"channelPriceIncludesTax\"\r\n [taxCategoryId]=\"formGroup.get('taxCategoryId')!.value\"\r\n ></vdr-variant-price-detail>\r\n </div>\r\n <div class=\"variant-form-input-row\">\r\n <clr-select-container *vdrIfPermissions=\"updatePermission\">\r\n <label\r\n >{{ 'catalog.track-inventory' | translate }}\r\n <vdr-help-tooltip\r\n [content]=\"'catalog.track-inventory-tooltip' | translate\"\r\n ></vdr-help-tooltip>\r\n </label>\r\n <select clrSelect name=\"options\" formControlName=\"trackInventory\">\r\n <option [value]=\"GlobalFlag.TRUE\">\r\n {{ 'catalog.track-inventory-true' | translate }}\r\n </option>\r\n <option [value]=\"GlobalFlag.FALSE\">\r\n {{ 'catalog.track-inventory-false' | translate }}\r\n </option>\r\n <option [value]=\"GlobalFlag.INHERIT\">\r\n {{ 'catalog.track-inventory-inherit' | translate }}\r\n </option>\r\n </select>\r\n </clr-select-container>\r\n <clr-input-container>\r\n <label\r\n >{{ 'catalog.stock-on-hand' | translate }}\r\n <vdr-help-tooltip\r\n [content]=\"'catalog.stock-on-hand-tooltip' | translate\"\r\n ></vdr-help-tooltip\r\n ></label>\r\n <input\r\n [class.inventory-untracked]=\"inventoryIsNotTracked(formGroup)\"\r\n clrInput\r\n type=\"number\"\r\n min=\"0\"\r\n step=\"1\"\r\n formControlName=\"stockOnHand\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n [vdrDisabled]=\"inventoryIsNotTracked(formGroup)\"\r\n />\r\n </clr-input-container>\r\n <div [class.inventory-untracked]=\"inventoryIsNotTracked(formGroup)\">\r\n <label class=\"clr-control-label\"\r\n >{{ 'catalog.stock-allocated' | translate }}\r\n <vdr-help-tooltip\r\n [content]=\"'catalog.stock-allocated-tooltip' | translate\"\r\n ></vdr-help-tooltip\r\n ></label>\r\n <div class=\"value\">\r\n {{ variant.stockAllocated }}\r\n </div>\r\n </div>\r\n <div [class.inventory-untracked]=\"inventoryIsNotTracked(formGroup)\">\r\n <label class=\"clr-control-label\"\r\n >{{ 'catalog.stock-saleable' | translate }}\r\n <vdr-help-tooltip\r\n [content]=\"'catalog.stock-saleable-tooltip' | translate\"\r\n ></vdr-help-tooltip\r\n ></label>\r\n <div class=\"value\">\r\n {{ getSaleableStockLevel(variant) }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"variant-form-input-row\">\r\n <div\r\n class=\"out-of-stock-threshold-wrapper\"\r\n [class.inventory-untracked]=\"inventoryIsNotTracked(formGroup)\"\r\n >\r\n <label class=\"clr-control-label\"\r\n >{{ 'catalog.out-of-stock-threshold' | translate\r\n }}<vdr-help-tooltip\r\n [content]=\"'catalog.out-of-stock-threshold-tooltip' | translate\"\r\n ></vdr-help-tooltip\r\n ></label>\r\n <div class=\"flex\">\r\n <clr-input-container>\r\n <input\r\n clrInput\r\n type=\"number\"\r\n [formControl]=\"formGroup.get('outOfStockThreshold')\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n [vdrDisabled]=\"\r\n formGroup.get('useGlobalOutOfStockThreshold')?.value !==\r\n false || inventoryIsNotTracked(formGroup)\r\n \"\r\n />\r\n </clr-input-container>\r\n <clr-toggle-wrapper>\r\n <input\r\n type=\"checkbox\"\r\n clrToggle\r\n name=\"useGlobalOutOfStockThreshold\"\r\n formControlName=\"useGlobalOutOfStockThreshold\"\r\n [vdrDisabled]=\"\r\n !(updatePermission | hasPermission) ||\r\n inventoryIsNotTracked(formGroup)\r\n \"\r\n />\r\n <label\r\n >{{ 'catalog.use-global-value' | translate }} ({{\r\n globalOutOfStockThreshold\r\n }})</label\r\n >\r\n </clr-toggle-wrapper>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"custom-fields\">\r\n <div class=\"variant-form-input-row\">\r\n <section formGroupName=\"customFields\" *ngIf=\"customFields.length\">\r\n <vdr-tabbed-custom-fields\r\n entityName=\"ProductVariant\"\r\n [customFields]=\"customFields\"\r\n [compact]=\"true\"\r\n [customFieldsFormGroup]=\"formGroup.get('customFields')\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n ></vdr-tabbed-custom-fields>\r\n </section>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-block\">\r\n <div class=\"options-facets\">\r\n <vdr-entity-info [entity]=\"variant\"></vdr-entity-info>\r\n <div *ngIf=\"variant.options.length\">\r\n <div class=\"options\">\r\n <vdr-chip\r\n *ngFor=\"let option of variant.options | sort: 'groupId'\"\r\n [colorFrom]=\"optionGroupName(option.groupId)\"\r\n [invert]=\"true\"\r\n (iconClick)=\"editOption(option)\"\r\n [icon]=\"(updatePermission | hasPermission) && 'pencil'\"\r\n >\r\n <span class=\"option-group-name\">{{ optionGroupName(option.groupId) }}</span>\r\n {{ optionName(option) }}\r\n </vdr-chip>\r\n <a [routerLink]=\"['./', 'options']\" class=\"btn btn-link btn-sm\"\r\n >{{ 'catalog.edit-options' | translate }}...</a\r\n >\r\n </div>\r\n </div>\r\n <div class=\"flex-spacer\"></div>\r\n <div class=\"facets\">\r\n <vdr-facet-value-chip\r\n *ngFor=\"let facetValue of existingFacetValues(variant)\"\r\n [facetValue]=\"facetValue\"\r\n [removable]=\"updatePermission | hasPermission\"\r\n (remove)=\"removeFacetValue(variant, facetValue.id)\"\r\n ></vdr-facet-value-chip>\r\n <vdr-facet-value-chip\r\n *ngFor=\"let facetValue of pendingFacetValues(variant)\"\r\n [facetValue]=\"facetValue\"\r\n [removable]=\"updatePermission | hasPermission\"\r\n (remove)=\"removeFacetValue(variant, facetValue.id)\"\r\n ></vdr-facet-value-chip>\r\n <button\r\n *vdrIfPermissions=\"updatePermission\"\r\n class=\"btn btn-sm btn-secondary\"\r\n (click)=\"selectFacetValueClick.emit([variant.id])\"\r\n >\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'catalog.add-facets' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *vdrIfMultichannel>\r\n <div class=\"card-block\" *vdrIfDefaultChannelActive>\r\n <div class=\"flex channel-assignment\">\r\n <ng-container *ngFor=\"let channel of variant.channels\">\r\n <vdr-chip\r\n *ngIf=\"!isDefaultChannel(channel.code)\"\r\n icon=\"times-circle\"\r\n [title]=\"'catalog.remove-from-channel' | translate\"\r\n (iconClick)=\"\r\n removeFromChannel.emit({ channelId: channel.id, variant: variant })\r\n \"\r\n >\r\n <vdr-channel-badge [channelCode]=\"channel.code\"></vdr-channel-badge>\r\n {{ channel.code | channelCodeToLabel }}\r\n </vdr-chip>\r\n </ng-container>\r\n <button class=\"btn btn-sm\" (click)=\"assignToChannel.emit(variant)\">\r\n <clr-icon shape=\"layers\"></clr-icon>\r\n {{ 'catalog.assign-to-channel' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", styles: [".with-selected{display:flex;min-height:52px;align-items:center;border:1px solid var(--color-component-border-100);border-radius:3px;padding:6px 18px}.with-selected vdr-select-toggle{margin-right:12px}.with-selected>label{margin-right:12px}.variant-container{transition:background-color .2s;min-height:330px}.variant-container.disabled{background-color:var(--color-component-bg-200)}.variant-container .header-row{display:flex;align-items:center;flex-wrap:wrap}.variant-container .variant-body{display:flex;flex-direction:column}@media screen and (min-width: 768px){.variant-container .variant-body{flex-direction:row}}.variant-container .details{display:flex;flex-direction:column;flex:1;margin-right:12px}@media screen and (min-width: 768px){.variant-container .details{flex-direction:row;height:36px}}.variant-container .details .name{flex:1}.variant-container .details .name ::ng-deep .clr-control-container{width:100%}.variant-container .details .name ::ng-deep .clr-control-container input.clr-input{min-width:100%}.variant-container .details .sku{width:160px;margin-right:20px;flex:0}.variant-container .details ::ng-deep .name input{min-width:300px}.variant-container .right-controls{display:flex}.variant-container .tax-category-label{margin-top:3px}.variant-container .variant-form-inputs{flex:1;display:flex;flex-direction:column}@media screen and (min-width: 768px){.variant-container .variant-form-inputs{flex-direction:row}}.variant-container .variant-form-input-row{display:flex;flex-wrap:wrap}@media screen and (min-width: 768px){.variant-container .variant-form-input-row{margin:0 6px 8px 24px}}.variant-container .variant-form-input-row>*{margin-right:24px;margin-bottom:24px}.variant-container .track-inventory-toggle{margin-top:22px}.variant-container .clr-form-control{margin-top:0}.variant-container .facets{display:flex;flex-wrap:wrap;align-items:center}.variant-container .pricing{display:flex}.variant-container .pricing>div{margin-right:12px}.variant-container .option-group-name{color:var(--color-text-200);text-transform:uppercase;font-size:10px;margin-right:3px;height:11px}.variant-container .options-facets{display:flex;color:var(--color-grey-400)}.variant-container ::ng-deep .clr-control-container{width:100%}.channel-assignment{justify-content:flex-end}.channel-assignment .btn{margin:6px 12px 6px 0}.out-of-stock-threshold-wrapper{display:flex;flex-direction:column}.out-of-stock-threshold-wrapper clr-toggle-wrapper{margin-left:24px}.inventory-untracked{opacity:.5}\n"], components: [{ type: i1.TitleInputComponent, selector: "vdr-title-input", inputs: ["readonly"] }, { type: i2.ClrInputContainer, selector: "clr-input-container" }, { type: i2.ClrCheckboxWrapper, selector: "clr-checkbox-wrapper,clr-toggle-wrapper" }, { type: i3.AssetsComponent, selector: "vdr-assets", inputs: ["assets", "featuredAsset", "compact", "updatePermissions"], outputs: ["change"] }, { type: i2.ClrSelectContainer, selector: "clr-select-container" }, { type: i1.CurrencyInputComponent, selector: "vdr-currency-input", inputs: ["disabled", "readonly", "value", "currencyCode"], outputs: ["valueChange"] }, { type: i4.VariantPriceDetailComponent, selector: "vdr-variant-price-detail", inputs: ["priceIncludesTax", "price", "currencyCode", "taxCategoryId"] }, { type: i1.HelpTooltipComponent, selector: "vdr-help-tooltip", inputs: ["content", "position"] }, { type: i1.TabbedCustomFieldsComponent, selector: "vdr-tabbed-custom-fields", inputs: ["entityName", "customFields", "customFieldsFormGroup", "readonly", "compact", "showLabel"] }, { type: i1.EntityInfoComponent, selector: "vdr-entity-info", inputs: ["small", "entity"] }, { type: i1.ChipComponent, selector: "vdr-chip", inputs: ["icon", "invert", "colorFrom", "colorType"], outputs: ["iconClick"] }, { type: i1.FacetValueChipComponent, selector: "vdr-facet-value-chip", inputs: ["facetValue", "removable", "displayFacetName"], outputs: ["remove"] }, { type: i1.ChannelBadgeComponent, selector: "vdr-channel-badge", inputs: ["channelCode"] }], directives: [{ type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.ClrDatagridItemsTrackBy, selector: "[ngForTrackBy]", inputs: ["ngForTrackBy"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1.FormFieldControlDirective, selector: "input, textarea, select" }, { type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i2.ClrInput, selector: "[clrInput]" }, { type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i6.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i1.IfPermissionsDirective, selector: "[vdrIfPermissions]", inputs: ["vdrIfPermissions", "vdrIfPermissionsElse"] }, { type: i6.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i2.ClrCheckbox, selector: "[clrCheckbox],[clrToggle]" }, { type: i2.ClrLabel, selector: "label", inputs: ["for"] }, { type: i6.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i2.ClrSelect, selector: "[clrSelect]" }, { type: i6.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i6.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i6.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { type: i6.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { type: i1.DisabledDirective, selector: "[vdrDisabled]", inputs: ["vdrDisabled"] }, { type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i6.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { type: i7.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i2.ClrIconCustomTag, selector: "clr-icon" }, { type: i1.IfMultichannelDirective, selector: "[vdrIfMultichannel]", inputs: ["vdrIfMultichannelElse"] }, { type: i1.IfDefaultChannelActiveDirective, selector: "[vdrIfDefaultChannelActive]", inputs: ["vdrIfMultichannelElse"] }], pipes: { "paginate": i8.PaginatePipe, "hasPermission": i1.HasPermissionPipe, "translate": i9.TranslatePipe, "sort": i1.SortPipe, "channelCodeToLabel": i1.ChannelLabelPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
187
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ProductVariantsListComponent, decorators: [{
188
+ type: Component,
189
+ args: [{ selector: 'vdr-product-variants-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"variants-list\">\r\n <div\r\n class=\"variant-container card\"\r\n *ngFor=\"\r\n let variant of variants | paginate: paginationConfig || { itemsPerPage: 10, currentPage: 1 };\r\n trackBy: trackById;\r\n let i = index\r\n \"\r\n [class.disabled]=\"!formGroupMap.get(variant.id)?.get('enabled')?.value\"\r\n >\r\n <ng-container *ngIf=\"formGroupMap.get(variant.id) as formGroup\" [formGroup]=\"formGroup\">\r\n <div class=\"card-block header-row\">\r\n <div class=\"details\">\r\n <vdr-title-input class=\"sku\" [readonly]=\"!(updatePermission | hasPermission)\">\r\n <clr-input-container>\r\n <input\r\n clrInput\r\n type=\"text\"\r\n formControlName=\"sku\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n [placeholder]=\"'catalog.sku' | translate\"\r\n />\r\n </clr-input-container>\r\n </vdr-title-input>\r\n <vdr-title-input class=\"name\" [readonly]=\"!(updatePermission | hasPermission)\">\r\n <clr-input-container>\r\n <input\r\n clrInput\r\n type=\"text\"\r\n formControlName=\"name\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n [placeholder]=\"'common.name' | translate\"\r\n />\r\n </clr-input-container>\r\n </vdr-title-input>\r\n </div>\r\n <div class=\"right-controls\">\r\n <clr-toggle-wrapper *vdrIfPermissions=\"updatePermission\">\r\n <input type=\"checkbox\" clrToggle name=\"enabled\" formControlName=\"enabled\" />\r\n <label>{{ 'common.enabled' | translate }}</label>\r\n </clr-toggle-wrapper>\r\n </div>\r\n </div>\r\n <div class=\"card-block\">\r\n <div class=\"variant-body\">\r\n <div class=\"assets\">\r\n <vdr-assets\r\n [compact]=\"true\"\r\n [assets]=\"pendingAssetChanges[variant.id]?.assets || variant.assets\"\r\n [featuredAsset]=\"\r\n pendingAssetChanges[variant.id]?.featuredAsset || variant.featuredAsset\r\n \"\r\n [updatePermissions]=\"updatePermission\"\r\n (change)=\"onAssetChange(variant.id, $event)\"\r\n ></vdr-assets>\r\n </div>\r\n <div class=\"variant-form-inputs\">\r\n <div class=\"standard-fields\">\r\n <div class=\"variant-form-input-row\">\r\n <div class=\"tax-category\">\r\n <clr-select-container\r\n *vdrIfPermissions=\"updatePermission; else taxCategoryLabel\"\r\n >\r\n <label>{{ 'catalog.tax-category' | translate }}</label>\r\n <select clrSelect name=\"options\" formControlName=\"taxCategoryId\">\r\n <option\r\n *ngFor=\"let taxCategory of taxCategories\"\r\n [value]=\"taxCategory.id\"\r\n >\r\n {{ taxCategory.name }}\r\n </option>\r\n </select>\r\n </clr-select-container>\r\n <ng-template #taxCategoryLabel>\r\n <label class=\"clr-control-label\">{{\r\n 'catalog.tax-category' | translate\r\n }}</label>\r\n <div class=\"tax-category-label\">\r\n {{ getTaxCategoryName(formGroup) }}\r\n </div>\r\n </ng-template>\r\n </div>\r\n <div class=\"price\">\r\n <clr-input-container>\r\n <label>{{ 'catalog.price' | translate }}</label>\r\n <vdr-currency-input\r\n *ngIf=\"!channelPriceIncludesTax\"\r\n clrInput\r\n [currencyCode]=\"variant.currencyCode\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n formControlName=\"price\"\r\n ></vdr-currency-input>\r\n <vdr-currency-input\r\n *ngIf=\"channelPriceIncludesTax\"\r\n clrInput\r\n [currencyCode]=\"variant.currencyCode\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n formControlName=\"priceWithTax\"\r\n ></vdr-currency-input>\r\n </clr-input-container>\r\n </div>\r\n <vdr-variant-price-detail\r\n [price]=\"formGroup.get('price')!.value\"\r\n [currencyCode]=\"variant.currencyCode\"\r\n [priceIncludesTax]=\"channelPriceIncludesTax\"\r\n [taxCategoryId]=\"formGroup.get('taxCategoryId')!.value\"\r\n ></vdr-variant-price-detail>\r\n </div>\r\n <div class=\"variant-form-input-row\">\r\n <clr-select-container *vdrIfPermissions=\"updatePermission\">\r\n <label\r\n >{{ 'catalog.track-inventory' | translate }}\r\n <vdr-help-tooltip\r\n [content]=\"'catalog.track-inventory-tooltip' | translate\"\r\n ></vdr-help-tooltip>\r\n </label>\r\n <select clrSelect name=\"options\" formControlName=\"trackInventory\">\r\n <option [value]=\"GlobalFlag.TRUE\">\r\n {{ 'catalog.track-inventory-true' | translate }}\r\n </option>\r\n <option [value]=\"GlobalFlag.FALSE\">\r\n {{ 'catalog.track-inventory-false' | translate }}\r\n </option>\r\n <option [value]=\"GlobalFlag.INHERIT\">\r\n {{ 'catalog.track-inventory-inherit' | translate }}\r\n </option>\r\n </select>\r\n </clr-select-container>\r\n <clr-input-container>\r\n <label\r\n >{{ 'catalog.stock-on-hand' | translate }}\r\n <vdr-help-tooltip\r\n [content]=\"'catalog.stock-on-hand-tooltip' | translate\"\r\n ></vdr-help-tooltip\r\n ></label>\r\n <input\r\n [class.inventory-untracked]=\"inventoryIsNotTracked(formGroup)\"\r\n clrInput\r\n type=\"number\"\r\n min=\"0\"\r\n step=\"1\"\r\n formControlName=\"stockOnHand\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n [vdrDisabled]=\"inventoryIsNotTracked(formGroup)\"\r\n />\r\n </clr-input-container>\r\n <div [class.inventory-untracked]=\"inventoryIsNotTracked(formGroup)\">\r\n <label class=\"clr-control-label\"\r\n >{{ 'catalog.stock-allocated' | translate }}\r\n <vdr-help-tooltip\r\n [content]=\"'catalog.stock-allocated-tooltip' | translate\"\r\n ></vdr-help-tooltip\r\n ></label>\r\n <div class=\"value\">\r\n {{ variant.stockAllocated }}\r\n </div>\r\n </div>\r\n <div [class.inventory-untracked]=\"inventoryIsNotTracked(formGroup)\">\r\n <label class=\"clr-control-label\"\r\n >{{ 'catalog.stock-saleable' | translate }}\r\n <vdr-help-tooltip\r\n [content]=\"'catalog.stock-saleable-tooltip' | translate\"\r\n ></vdr-help-tooltip\r\n ></label>\r\n <div class=\"value\">\r\n {{ getSaleableStockLevel(variant) }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"variant-form-input-row\">\r\n <div\r\n class=\"out-of-stock-threshold-wrapper\"\r\n [class.inventory-untracked]=\"inventoryIsNotTracked(formGroup)\"\r\n >\r\n <label class=\"clr-control-label\"\r\n >{{ 'catalog.out-of-stock-threshold' | translate\r\n }}<vdr-help-tooltip\r\n [content]=\"'catalog.out-of-stock-threshold-tooltip' | translate\"\r\n ></vdr-help-tooltip\r\n ></label>\r\n <div class=\"flex\">\r\n <clr-input-container>\r\n <input\r\n clrInput\r\n type=\"number\"\r\n [formControl]=\"formGroup.get('outOfStockThreshold')\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n [vdrDisabled]=\"\r\n formGroup.get('useGlobalOutOfStockThreshold')?.value !==\r\n false || inventoryIsNotTracked(formGroup)\r\n \"\r\n />\r\n </clr-input-container>\r\n <clr-toggle-wrapper>\r\n <input\r\n type=\"checkbox\"\r\n clrToggle\r\n name=\"useGlobalOutOfStockThreshold\"\r\n formControlName=\"useGlobalOutOfStockThreshold\"\r\n [vdrDisabled]=\"\r\n !(updatePermission | hasPermission) ||\r\n inventoryIsNotTracked(formGroup)\r\n \"\r\n />\r\n <label\r\n >{{ 'catalog.use-global-value' | translate }} ({{\r\n globalOutOfStockThreshold\r\n }})</label\r\n >\r\n </clr-toggle-wrapper>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"custom-fields\">\r\n <div class=\"variant-form-input-row\">\r\n <section formGroupName=\"customFields\" *ngIf=\"customFields.length\">\r\n <vdr-tabbed-custom-fields\r\n entityName=\"ProductVariant\"\r\n [customFields]=\"customFields\"\r\n [compact]=\"true\"\r\n [customFieldsFormGroup]=\"formGroup.get('customFields')\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n ></vdr-tabbed-custom-fields>\r\n </section>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-block\">\r\n <div class=\"options-facets\">\r\n <vdr-entity-info [entity]=\"variant\"></vdr-entity-info>\r\n <div *ngIf=\"variant.options.length\">\r\n <div class=\"options\">\r\n <vdr-chip\r\n *ngFor=\"let option of variant.options | sort: 'groupId'\"\r\n [colorFrom]=\"optionGroupName(option.groupId)\"\r\n [invert]=\"true\"\r\n (iconClick)=\"editOption(option)\"\r\n [icon]=\"(updatePermission | hasPermission) && 'pencil'\"\r\n >\r\n <span class=\"option-group-name\">{{ optionGroupName(option.groupId) }}</span>\r\n {{ optionName(option) }}\r\n </vdr-chip>\r\n <a [routerLink]=\"['./', 'options']\" class=\"btn btn-link btn-sm\"\r\n >{{ 'catalog.edit-options' | translate }}...</a\r\n >\r\n </div>\r\n </div>\r\n <div class=\"flex-spacer\"></div>\r\n <div class=\"facets\">\r\n <vdr-facet-value-chip\r\n *ngFor=\"let facetValue of existingFacetValues(variant)\"\r\n [facetValue]=\"facetValue\"\r\n [removable]=\"updatePermission | hasPermission\"\r\n (remove)=\"removeFacetValue(variant, facetValue.id)\"\r\n ></vdr-facet-value-chip>\r\n <vdr-facet-value-chip\r\n *ngFor=\"let facetValue of pendingFacetValues(variant)\"\r\n [facetValue]=\"facetValue\"\r\n [removable]=\"updatePermission | hasPermission\"\r\n (remove)=\"removeFacetValue(variant, facetValue.id)\"\r\n ></vdr-facet-value-chip>\r\n <button\r\n *vdrIfPermissions=\"updatePermission\"\r\n class=\"btn btn-sm btn-secondary\"\r\n (click)=\"selectFacetValueClick.emit([variant.id])\"\r\n >\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'catalog.add-facets' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n <ng-container *vdrIfMultichannel>\r\n <div class=\"card-block\" *vdrIfDefaultChannelActive>\r\n <div class=\"flex channel-assignment\">\r\n <ng-container *ngFor=\"let channel of variant.channels\">\r\n <vdr-chip\r\n *ngIf=\"!isDefaultChannel(channel.code)\"\r\n icon=\"times-circle\"\r\n [title]=\"'catalog.remove-from-channel' | translate\"\r\n (iconClick)=\"\r\n removeFromChannel.emit({ channelId: channel.id, variant: variant })\r\n \"\r\n >\r\n <vdr-channel-badge [channelCode]=\"channel.code\"></vdr-channel-badge>\r\n {{ channel.code | channelCodeToLabel }}\r\n </vdr-chip>\r\n </ng-container>\r\n <button class=\"btn btn-sm\" (click)=\"assignToChannel.emit(variant)\">\r\n <clr-icon shape=\"layers\"></clr-icon>\r\n {{ 'catalog.assign-to-channel' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</div>\r\n", styles: [".with-selected{display:flex;min-height:52px;align-items:center;border:1px solid var(--color-component-border-100);border-radius:3px;padding:6px 18px}.with-selected vdr-select-toggle{margin-right:12px}.with-selected>label{margin-right:12px}.variant-container{transition:background-color .2s;min-height:330px}.variant-container.disabled{background-color:var(--color-component-bg-200)}.variant-container .header-row{display:flex;align-items:center;flex-wrap:wrap}.variant-container .variant-body{display:flex;flex-direction:column}@media screen and (min-width: 768px){.variant-container .variant-body{flex-direction:row}}.variant-container .details{display:flex;flex-direction:column;flex:1;margin-right:12px}@media screen and (min-width: 768px){.variant-container .details{flex-direction:row;height:36px}}.variant-container .details .name{flex:1}.variant-container .details .name ::ng-deep .clr-control-container{width:100%}.variant-container .details .name ::ng-deep .clr-control-container input.clr-input{min-width:100%}.variant-container .details .sku{width:160px;margin-right:20px;flex:0}.variant-container .details ::ng-deep .name input{min-width:300px}.variant-container .right-controls{display:flex}.variant-container .tax-category-label{margin-top:3px}.variant-container .variant-form-inputs{flex:1;display:flex;flex-direction:column}@media screen and (min-width: 768px){.variant-container .variant-form-inputs{flex-direction:row}}.variant-container .variant-form-input-row{display:flex;flex-wrap:wrap}@media screen and (min-width: 768px){.variant-container .variant-form-input-row{margin:0 6px 8px 24px}}.variant-container .variant-form-input-row>*{margin-right:24px;margin-bottom:24px}.variant-container .track-inventory-toggle{margin-top:22px}.variant-container .clr-form-control{margin-top:0}.variant-container .facets{display:flex;flex-wrap:wrap;align-items:center}.variant-container .pricing{display:flex}.variant-container .pricing>div{margin-right:12px}.variant-container .option-group-name{color:var(--color-text-200);text-transform:uppercase;font-size:10px;margin-right:3px;height:11px}.variant-container .options-facets{display:flex;color:var(--color-grey-400)}.variant-container ::ng-deep .clr-control-container{width:100%}.channel-assignment{justify-content:flex-end}.channel-assignment .btn{margin:6px 12px 6px 0}.out-of-stock-threshold-wrapper{display:flex;flex-direction:column}.out-of-stock-threshold-wrapper clr-toggle-wrapper{margin-left:24px}.inventory-untracked{opacity:.5}\n"] }]
190
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.ModalService }, { type: i1.DataService }]; }, propDecorators: { formArray: [{
191
+ type: Input,
192
+ args: ['productVariantsFormArray']
193
+ }], variants: [{
194
+ type: Input
195
+ }], paginationConfig: [{
196
+ type: Input
197
+ }], channelPriceIncludesTax: [{
198
+ type: Input
199
+ }], taxCategories: [{
200
+ type: Input
201
+ }], facets: [{
202
+ type: Input
203
+ }], optionGroups: [{
204
+ type: Input
205
+ }], customFields: [{
206
+ type: Input
207
+ }], customOptionFields: [{
208
+ type: Input
209
+ }], activeLanguage: [{
210
+ type: Input
211
+ }], pendingAssetChanges: [{
212
+ type: Input
213
+ }], assignToChannel: [{
214
+ type: Output
215
+ }], removeFromChannel: [{
216
+ type: Output
217
+ }], assetChange: [{
218
+ type: Output
219
+ }], selectionChange: [{
220
+ type: Output
221
+ }], selectFacetValueClick: [{
222
+ type: Output
223
+ }], updateProductOption: [{
224
+ type: Output
225
+ }] } });
226
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC12YXJpYW50cy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY2F0YWxvZy9zcmMvY29tcG9uZW50cy9wcm9kdWN0LXZhcmlhbnRzLWxpc3QvcHJvZHVjdC12YXJpYW50cy1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY2F0YWxvZy9zcmMvY29tcG9uZW50cy9wcm9kdWN0LXZhcmlhbnRzLWxpc3QvcHJvZHVjdC12YXJpYW50cy1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBSUwsTUFBTSxHQUVULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFLSCxrQkFBa0IsRUFDbEIsVUFBVSxFQUdWLFVBQVUsR0FNYixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJekUsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sd0VBQXdFLENBQUM7Ozs7Ozs7Ozs7O0FBWTVILE1BQU0sT0FBTyw0QkFBNEI7SUE4QnJDLFlBQ1ksY0FBaUMsRUFDakMsWUFBMEIsRUFDMUIsV0FBd0I7UUFGeEIsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBckIxQixvQkFBZSxHQUFHLElBQUksWUFBWSxFQUEwQixDQUFDO1FBQzdELHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUcxQyxDQUFDO1FBQ0ssZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBc0IsQ0FBQztRQUNyRCxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFZLENBQUM7UUFDL0MsMEJBQXFCLEdBQUcsSUFBSSxZQUFZLEVBQVksQ0FBQztRQUNyRCx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBc0QsQ0FBQztRQUN2Ryx1QkFBa0IsR0FBYSxFQUFFLENBQUM7UUFDbEMsaUJBQVksR0FBRyxJQUFJLEdBQUcsRUFBcUIsQ0FBQztRQUM1QyxlQUFVLEdBQUcsVUFBVSxDQUFDO1FBR2YscUJBQWdCLEdBQUcsQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQVE5RSxDQUFDO0lBRUosUUFBUTtRQUNKLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLGNBQWMsRUFBRSxFQUFFLEVBQUU7WUFDaEcsSUFBSSxDQUFDLG9CQUFvQixHQUFHLGNBQWMsQ0FBQyxjQUFjLENBQUM7WUFDMUQsSUFBSSxDQUFDLHlCQUF5QixHQUFHLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQztZQUNwRSxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBRXBHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVk7YUFDdEIsSUFBSSxDQUNELEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFDMUIsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUNmLG9CQUFvQixFQUFFLENBQ3pCO2FBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNaLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzdCLENBQUMsQ0FBQyxDQUNULENBQUM7UUFFRixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLElBQUksUUFBUSxJQUFJLE9BQU8sSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksRUFBRTtZQUN6RCxJQUFJLENBQUMsV0FBVyxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN0RDtJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDbkM7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsV0FBbUI7UUFDaEMsT0FBTyxXQUFXLEtBQUssb0JBQW9CLENBQUM7SUFDaEQsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFhLEVBQUUsSUFBNEI7UUFDakQsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxTQUFvQjtRQUN0QyxNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsS0FBSyxDQUFDO1FBQzlELE9BQU8sQ0FDSCxjQUFjLEtBQUssVUFBVSxDQUFDLEtBQUs7WUFDbkMsQ0FBQyxjQUFjLEtBQUssVUFBVSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsb0JBQW9CLEtBQUssS0FBSyxDQUFDLENBQ2pGLENBQUM7SUFDTixDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBZ0I7UUFDL0IsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7UUFDN0MsSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUMvQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ25FLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDbEM7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxPQUErQjtRQUNqRCxNQUFNLDRCQUE0QixHQUFHLE9BQU8sQ0FBQyw0QkFBNEI7WUFDckUsQ0FBQyxDQUFDLElBQUksQ0FBQyx5QkFBeUI7WUFDaEMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQztRQUNsQyxPQUFPLE9BQU8sQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLGNBQWMsR0FBRyw0QkFBNEIsQ0FBQztJQUN2RixDQUFDO0lBRUQsY0FBYztRQUNWLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUN0RixDQUFDO0lBRUQsYUFBYSxDQUFDLFNBQWlCLEVBQUUsS0FBa0I7UUFDL0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7WUFDbEIsU0FBUztZQUNULEdBQUcsS0FBSztTQUNYLENBQUMsQ0FBQztRQUNILE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxTQUFTLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLENBQUM7U0FDaEM7YUFBTTtZQUNILElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUMxRDtRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxTQUFpQjtRQUNqQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxFQUFFO1lBQ1osSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDNUM7YUFBTTtZQUNILElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDM0M7UUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsZUFBZSxDQUFDLGFBQXFCO1FBQ2pDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxhQUFhLENBQUMsQ0FBQztRQUNsRSxJQUFJLEtBQUssRUFBRTtZQUNQLE1BQU0sV0FBVyxHQUNiLEtBQUssRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUMsY0FBYyxDQUFDO2dCQUNyRSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFCLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQztTQUMzQjtJQUNMLENBQUM7SUFFRCxVQUFVLENBQUMsTUFBNkI7UUFDcEMsTUFBTSxXQUFXLEdBQ2IsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxLQUFLLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BHLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQztJQUM1QixDQUFDO0lBRUQsa0JBQWtCLENBQUMsT0FBK0I7UUFDOUMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2IsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVELE1BQU0sb0JBQW9CLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbEUsT0FBTyxpQkFBaUI7aUJBQ25CLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUM5QyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7aUJBQ3BELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1NBQ25DO2FBQU07WUFDSCxPQUFPLEVBQUUsQ0FBQztTQUNiO0lBQ0wsQ0FBQztJQUVELG1CQUFtQixDQUFDLE9BQStCO1FBQy9DLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1RCxNQUFNLFlBQVksR0FBRyxDQUFDLEdBQUcsaUJBQWlCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDbkQsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUNuRCxDQUFDO1FBQ0YsT0FBTyxZQUFZO2FBQ2QsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO2FBQ3ZELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxPQUErQixFQUFFLFlBQW9CO1FBQ2xFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNwRCxJQUFJLFNBQVMsRUFBRTtZQUNYLE1BQU0sUUFBUSxHQUFJLFNBQVMsQ0FBQyxLQUEwQixDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQ3ZFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLFlBQVksQ0FDNUIsQ0FBQztZQUNGLFNBQVMsQ0FBQyxVQUFVLENBQUM7Z0JBQ2pCLGFBQWEsRUFBRSxRQUFRO2FBQzFCLENBQUMsQ0FBQztZQUNILFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUMzQjtJQUNMLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxTQUFpQjtRQUMvQixPQUFPLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUFpRDtRQUN4RCxJQUFJLENBQUMsWUFBWTthQUNaLGFBQWEsQ0FBQyxrQ0FBa0MsRUFBRTtZQUMvQyxJQUFJLEVBQUUsSUFBSTtZQUNWLE1BQU0sRUFBRTtnQkFDSixhQUFhLEVBQUUsTUFBTTtnQkFDckIsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjO2dCQUNuQyxZQUFZLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjthQUN4QztTQUNKLENBQUM7YUFDRCxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDaEIsSUFBSSxNQUFNLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUN6QztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVPLGlCQUFpQjtRQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzFCLEtBQUssTUFBTSxZQUFZLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUU7WUFDaEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsWUFBeUIsQ0FBQyxDQUFDO1NBQzNFO1FBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsRUFBVTtRQUMvQixNQUFNLFNBQVMsR0FBcUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDO1FBQ3JFLE9BQU8sU0FBUyxDQUFDLGFBQWEsQ0FBQztJQUNuQyxDQUFDOzt5SEEzTlEsNEJBQTRCOzZHQUE1Qiw0QkFBNEIsbXVCQ2hEekMsd3lsQkE4U0E7MkZEOVBhLDRCQUE0QjtrQkFOeEMsU0FBUzsrQkFDSSwyQkFBMkIsbUJBR3BCLHVCQUF1QixDQUFDLE1BQU07NkpBR1osU0FBUztzQkFBM0MsS0FBSzt1QkFBQywwQkFBMEI7Z0JBQ3hCLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNJLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUlHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxxQkFBcUI7c0JBQTlCLE1BQU07Z0JBQ0csbUJBQW1CO3NCQUE1QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBJbnB1dCxcclxuICAgIE9uQ2hhbmdlcyxcclxuICAgIE9uRGVzdHJveSxcclxuICAgIE9uSW5pdCxcclxuICAgIE91dHB1dCxcclxuICAgIFNpbXBsZUNoYW5nZXMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge1xyXG4gICAgQ3VzdG9tRmllbGRDb25maWcsXHJcbiAgICBEYXRhU2VydmljZSxcclxuICAgIEZhY2V0VmFsdWVGcmFnbWVudCxcclxuICAgIEZhY2V0V2l0aFZhbHVlc0ZyYWdtZW50LFxyXG4gICAgZmxhdHRlbkZhY2V0VmFsdWVzLFxyXG4gICAgR2xvYmFsRmxhZyxcclxuICAgIExhbmd1YWdlQ29kZSxcclxuICAgIE1vZGFsU2VydmljZSxcclxuICAgIFBlcm1pc3Npb24sXHJcbiAgICBQcm9kdWN0RGV0YWlsRnJhZ21lbnQsXHJcbiAgICBQcm9kdWN0T3B0aW9uRnJhZ21lbnQsXHJcbiAgICBQcm9kdWN0VmFyaWFudEZyYWdtZW50LFxyXG4gICAgVGF4Q2F0ZWdvcnksXHJcbiAgICBVcGRhdGVQcm9kdWN0T3B0aW9uSW5wdXQsXHJcbn0gZnJvbSAnQHZlbmR1cmUvYWRtaW4tdWkvY29yZSc7XHJcbmltcG9ydCB7IERFRkFVTFRfQ0hBTk5FTF9DT0RFIH0gZnJvbSAnQHZlbmR1cmUvY29tbW9uL2xpYi9zaGFyZWQtY29uc3RhbnRzJztcclxuaW1wb3J0IHsgbm90TnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAnQHZlbmR1cmUvY29tbW9uL2xpYi9zaGFyZWQtdXRpbHMnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgQXNzZXRDaGFuZ2UgfSBmcm9tICcuLi9hc3NldHMvYXNzZXRzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFBhZ2luYXRpb25Db25maWcsIFNlbGVjdGVkQXNzZXRzLCBWYXJpYW50Rm9ybVZhbHVlIH0gZnJvbSAnLi4vcHJvZHVjdC1kZXRhaWwvcHJvZHVjdC1kZXRhaWwudHlwZXMnO1xyXG5pbXBvcnQgeyBVcGRhdGVQcm9kdWN0T3B0aW9uRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vdXBkYXRlLXByb2R1Y3Qtb3B0aW9uLWRpYWxvZy91cGRhdGUtcHJvZHVjdC1vcHRpb24tZGlhbG9nLmNvbXBvbmVudCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFZhcmlhbnRBc3NldENoYW5nZSBleHRlbmRzIEFzc2V0Q2hhbmdlIHtcclxuICAgIHZhcmlhbnRJZDogc3RyaW5nO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndmRyLXByb2R1Y3QtdmFyaWFudHMtbGlzdCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vcHJvZHVjdC12YXJpYW50cy1saXN0LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3Byb2R1Y3QtdmFyaWFudHMtbGlzdC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9kdWN0VmFyaWFudHNMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgICBASW5wdXQoJ3Byb2R1Y3RWYXJpYW50c0Zvcm1BcnJheScpIGZvcm1BcnJheTogRm9ybUFycmF5O1xyXG4gICAgQElucHV0KCkgdmFyaWFudHM6IFByb2R1Y3RWYXJpYW50RnJhZ21lbnRbXTtcclxuICAgIEBJbnB1dCgpIHBhZ2luYXRpb25Db25maWc6IFBhZ2luYXRpb25Db25maWc7XHJcbiAgICBASW5wdXQoKSBjaGFubmVsUHJpY2VJbmNsdWRlc1RheDogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIHRheENhdGVnb3JpZXM6IFRheENhdGVnb3J5W107XHJcbiAgICBASW5wdXQoKSBmYWNldHM6IEZhY2V0V2l0aFZhbHVlc0ZyYWdtZW50W107XHJcbiAgICBASW5wdXQoKSBvcHRpb25Hcm91cHM6IFByb2R1Y3REZXRhaWxGcmFnbWVudFsnb3B0aW9uR3JvdXBzJ107XHJcbiAgICBASW5wdXQoKSBjdXN0b21GaWVsZHM6IEN1c3RvbUZpZWxkQ29uZmlnW107XHJcbiAgICBASW5wdXQoKSBjdXN0b21PcHRpb25GaWVsZHM6IEN1c3RvbUZpZWxkQ29uZmlnW107XHJcbiAgICBASW5wdXQoKSBhY3RpdmVMYW5ndWFnZTogTGFuZ3VhZ2VDb2RlO1xyXG4gICAgQElucHV0KCkgcGVuZGluZ0Fzc2V0Q2hhbmdlczogeyBbdmFyaWFudElkOiBzdHJpbmddOiBTZWxlY3RlZEFzc2V0cyB9O1xyXG4gICAgQE91dHB1dCgpIGFzc2lnblRvQ2hhbm5lbCA9IG5ldyBFdmVudEVtaXR0ZXI8UHJvZHVjdFZhcmlhbnRGcmFnbWVudD4oKTtcclxuICAgIEBPdXRwdXQoKSByZW1vdmVGcm9tQ2hhbm5lbCA9IG5ldyBFdmVudEVtaXR0ZXI8e1xyXG4gICAgICAgIGNoYW5uZWxJZDogc3RyaW5nO1xyXG4gICAgICAgIHZhcmlhbnQ6IFByb2R1Y3RWYXJpYW50RnJhZ21lbnQ7XHJcbiAgICB9PigpO1xyXG4gICAgQE91dHB1dCgpIGFzc2V0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxWYXJpYW50QXNzZXRDaGFuZ2U+KCk7XHJcbiAgICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4oKTtcclxuICAgIEBPdXRwdXQoKSBzZWxlY3RGYWNldFZhbHVlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZ1tdPigpO1xyXG4gICAgQE91dHB1dCgpIHVwZGF0ZVByb2R1Y3RPcHRpb24gPSBuZXcgRXZlbnRFbWl0dGVyPFVwZGF0ZVByb2R1Y3RPcHRpb25JbnB1dCAmIHsgYXV0b1VwZGF0ZTogYm9vbGVhbiB9PigpO1xyXG4gICAgc2VsZWN0ZWRWYXJpYW50SWRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgZm9ybUdyb3VwTWFwID0gbmV3IE1hcDxzdHJpbmcsIEZvcm1Hcm91cD4oKTtcclxuICAgIEdsb2JhbEZsYWcgPSBHbG9iYWxGbGFnO1xyXG4gICAgZ2xvYmFsVHJhY2tJbnZlbnRvcnk6IGJvb2xlYW47XHJcbiAgICBnbG9iYWxPdXRPZlN0b2NrVGhyZXNob2xkOiBudW1iZXI7XHJcbiAgICByZWFkb25seSB1cGRhdGVQZXJtaXNzaW9uID0gW1Blcm1pc3Npb24uVXBkYXRlQ2F0YWxvZywgUGVybWlzc2lvbi5VcGRhdGVQcm9kdWN0XTtcclxuICAgIHByaXZhdGUgZmFjZXRWYWx1ZXM6IEZhY2V0VmFsdWVGcmFnbWVudFtdO1xyXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICBwcml2YXRlIG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLFxyXG4gICAgKSB7fVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIHRoaXMuZGF0YVNlcnZpY2Uuc2V0dGluZ3MuZ2V0R2xvYmFsU2V0dGluZ3MoJ2NhY2hlLWZpcnN0Jykuc2luZ2xlJC5zdWJzY3JpYmUoKHsgZ2xvYmFsU2V0dGluZ3MgfSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmdsb2JhbFRyYWNrSW52ZW50b3J5ID0gZ2xvYmFsU2V0dGluZ3MudHJhY2tJbnZlbnRvcnk7XHJcbiAgICAgICAgICAgIHRoaXMuZ2xvYmFsT3V0T2ZTdG9ja1RocmVzaG9sZCA9IGdsb2JhbFNldHRpbmdzLm91dE9mU3RvY2tUaHJlc2hvbGQ7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLmZvcm1BcnJheS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCkpO1xyXG5cclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXHJcbiAgICAgICAgICAgIHRoaXMuZm9ybUFycmF5LnZhbHVlQ2hhbmdlc1xyXG4gICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgbWFwKHZhbHVlID0+IHZhbHVlLmxlbmd0aCksXHJcbiAgICAgICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDEpLFxyXG4gICAgICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkRm9ybUdyb3VwTWFwKCk7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmJ1aWxkRm9ybUdyb3VwTWFwKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgICAgIGlmICgnZmFjZXRzJyBpbiBjaGFuZ2VzICYmICEhY2hhbmdlc1snZmFjZXRzJ10uY3VycmVudFZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmFjZXRWYWx1ZXMgPSBmbGF0dGVuRmFjZXRWYWx1ZXModGhpcy5mYWNldHMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaXNEZWZhdWx0Q2hhbm5lbChjaGFubmVsQ29kZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIGNoYW5uZWxDb2RlID09PSBERUZBVUxUX0NIQU5ORUxfQ09ERTtcclxuICAgIH1cclxuXHJcbiAgICB0cmFja0J5SWQoaW5kZXg6IG51bWJlciwgaXRlbTogUHJvZHVjdFZhcmlhbnRGcmFnbWVudCkge1xyXG4gICAgICAgIHJldHVybiBpdGVtLmlkO1xyXG4gICAgfVxyXG5cclxuICAgIGludmVudG9yeUlzTm90VHJhY2tlZChmb3JtR3JvdXA6IEZvcm1Hcm91cCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IHRyYWNrSW52ZW50b3J5ID0gZm9ybUdyb3VwLmdldCgndHJhY2tJbnZlbnRvcnknKT8udmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgdHJhY2tJbnZlbnRvcnkgPT09IEdsb2JhbEZsYWcuRkFMU0UgfHxcclxuICAgICAgICAgICAgKHRyYWNrSW52ZW50b3J5ID09PSBHbG9iYWxGbGFnLklOSEVSSVQgJiYgdGhpcy5nbG9iYWxUcmFja0ludmVudG9yeSA9PT0gZmFsc2UpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRUYXhDYXRlZ29yeU5hbWUoZ3JvdXA6IEZvcm1Hcm91cCk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgY29udHJvbCA9IGdyb3VwLmdldChbJ3RheENhdGVnb3J5SWQnXSk7XHJcbiAgICAgICAgaWYgKGNvbnRyb2wgJiYgdGhpcy50YXhDYXRlZ29yaWVzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gdGhpcy50YXhDYXRlZ29yaWVzLmZpbmQodCA9PiB0LmlkID09PSBjb250cm9sLnZhbHVlKTtcclxuICAgICAgICAgICAgcmV0dXJuIG1hdGNoID8gbWF0Y2gubmFtZSA6ICcnO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U2FsZWFibGVTdG9ja0xldmVsKHZhcmlhbnQ6IFByb2R1Y3RWYXJpYW50RnJhZ21lbnQpIHtcclxuICAgICAgICBjb25zdCBlZmZlY3RpdmVPdXRPZlN0b2NrVGhyZXNob2xkID0gdmFyaWFudC51c2VHbG9iYWxPdXRPZlN0b2NrVGhyZXNob2xkXHJcbiAgICAgICAgICAgID8gdGhpcy5nbG9iYWxPdXRPZlN0b2NrVGhyZXNob2xkXHJcbiAgICAgICAgICAgIDogdmFyaWFudC5vdXRPZlN0b2NrVGhyZXNob2xkO1xyXG4gICAgICAgIHJldHVybiB2YXJpYW50LnN0b2NrT25IYW5kIC0gdmFyaWFudC5zdG9ja0FsbG9jYXRlZCAtIGVmZmVjdGl2ZU91dE9mU3RvY2tUaHJlc2hvbGQ7XHJcbiAgICB9XHJcblxyXG4gICAgYXJlQWxsU2VsZWN0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICEhdGhpcy52YXJpYW50cyAmJiB0aGlzLnNlbGVjdGVkVmFyaWFudElkcy5sZW5ndGggPT09IHRoaXMudmFyaWFudHMubGVuZ3RoO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQXNzZXRDaGFuZ2UodmFyaWFudElkOiBzdHJpbmcsIGV2ZW50OiBBc3NldENoYW5nZSkge1xyXG4gICAgICAgIHRoaXMuYXNzZXRDaGFuZ2UuZW1pdCh7XHJcbiAgICAgICAgICAgIHZhcmlhbnRJZCxcclxuICAgICAgICAgICAgLi4uZXZlbnQsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnZhcmlhbnRzLmZpbmRJbmRleCh2ID0+IHYuaWQgPT09IHZhcmlhbnRJZCk7XHJcbiAgICAgICAgdGhpcy5mb3JtQXJyYXkuYXQoaW5kZXgpLm1hcmtBc0RpcnR5KCk7XHJcbiAgICB9XHJcblxyXG4gICAgdG9nZ2xlU2VsZWN0QWxsKCkge1xyXG4gICAgICAgIGlmICh0aGlzLmFyZUFsbFNlbGVjdGVkKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFZhcmlhbnRJZHMgPSBbXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFyaWFudElkcyA9IHRoaXMudmFyaWFudHMubWFwKHYgPT4gdi5pZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZFZhcmlhbnRJZHMpO1xyXG4gICAgfVxyXG5cclxuICAgIHRvZ2dsZVNlbGVjdFZhcmlhbnQodmFyaWFudElkOiBzdHJpbmcpIHtcclxuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRWYXJpYW50SWRzLmluZGV4T2YodmFyaWFudElkKTtcclxuICAgICAgICBpZiAoLTEgPCBpbmRleCkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkVmFyaWFudElkcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRWYXJpYW50SWRzLnB1c2godmFyaWFudElkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkVmFyaWFudElkcyk7XHJcbiAgICB9XHJcblxyXG4gICAgb3B0aW9uR3JvdXBOYW1lKG9wdGlvbkdyb3VwSWQ6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLm9wdGlvbkdyb3Vwcy5maW5kKGcgPT4gZy5pZCA9PT0gb3B0aW9uR3JvdXBJZCk7XHJcbiAgICAgICAgaWYgKGdyb3VwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRyYW5zbGF0aW9uID1cclxuICAgICAgICAgICAgICAgIGdyb3VwPy50cmFuc2xhdGlvbnMuZmluZCh0ID0+IHQubGFuZ3VhZ2VDb2RlID09PSB0aGlzLmFjdGl2ZUxhbmd1YWdlKSA/P1xyXG4gICAgICAgICAgICAgICAgZ3JvdXAudHJhbnNsYXRpb25zWzBdO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJhbnNsYXRpb24ubmFtZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb3B0aW9uTmFtZShvcHRpb246IFByb2R1Y3RPcHRpb25GcmFnbWVudCkge1xyXG4gICAgICAgIGNvbnN0IHRyYW5zbGF0aW9uID1cclxuICAgICAgICAgICAgb3B0aW9uLnRyYW5zbGF0aW9ucy5maW5kKHQgPT4gdC5sYW5ndWFnZUNvZGUgPT09IHRoaXMuYWN0aXZlTGFuZ3VhZ2UpID8/IG9wdGlvbi50cmFuc2xhdGlvbnNbMF07XHJcbiAgICAgICAgcmV0dXJuIHRyYW5zbGF0aW9uLm5hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgcGVuZGluZ0ZhY2V0VmFsdWVzKHZhcmlhbnQ6IFByb2R1Y3RWYXJpYW50RnJhZ21lbnQpIHtcclxuICAgICAgICBpZiAodGhpcy5mYWNldHMpIHtcclxuICAgICAgICAgICAgY29uc3QgZm9ybUZhY2V0VmFsdWVJZHMgPSB0aGlzLmdldEZhY2V0VmFsdWVJZHModmFyaWFudC5pZCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhcmlhbnRGYWNldFZhbHVlSWRzID0gdmFyaWFudC5mYWNldFZhbHVlcy5tYXAoZnYgPT4gZnYuaWQpO1xyXG4gICAgICAgICAgICByZXR1cm4gZm9ybUZhY2V0VmFsdWVJZHNcclxuICAgICAgICAgICAgICAgIC5maWx0ZXIoeCA9PiAhdmFyaWFudEZhY2V0VmFsdWVJZHMuaW5jbHVkZXMoeCkpXHJcbiAgICAgICAgICAgICAgICAubWFwKGlkID0+IHRoaXMuZmFjZXRWYWx1ZXMuZmluZChmdiA9PiBmdi5pZCA9PT0gaWQpKVxyXG4gICAgICAgICAgICAgICAgLmZpbHRlcihub3ROdWxsT3JVbmRlZmluZWQpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZXhpc3RpbmdGYWNldFZhbHVlcyh2YXJpYW50OiBQcm9kdWN0VmFyaWFudEZyYWdtZW50KSB7XHJcbiAgICAgICAgY29uc3QgZm9ybUZhY2V0VmFsdWVJZHMgPSB0aGlzLmdldEZhY2V0VmFsdWVJZHModmFyaWFudC5pZCk7XHJcbiAgICAgICAgY29uc3QgaW50ZXJzZWN0aW9uID0gWy4uLmZvcm1GYWNldFZhbHVlSWRzXS5maWx0ZXIoeCA9PlxyXG4gICAgICAgICAgICB2YXJpYW50LmZhY2V0VmFsdWVzLm1hcChmdiA9PiBmdi5pZCkuaW5jbHVkZXMoeCksXHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gaW50ZXJzZWN0aW9uXHJcbiAgICAgICAgICAgIC5tYXAoaWQgPT4gdmFyaWFudC5mYWNldFZhbHVlcy5maW5kKGZ2ID0+IGZ2LmlkID09PSBpZCkpXHJcbiAgICAgICAgICAgIC5maWx0ZXIobm90TnVsbE9yVW5kZWZpbmVkKTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVGYWNldFZhbHVlKHZhcmlhbnQ6IFByb2R1Y3RWYXJpYW50RnJhZ21lbnQsIGZhY2V0VmFsdWVJZDogc3RyaW5nKSB7XHJcbiAgICAgICAgY29uc3QgZm9ybUdyb3VwID0gdGhpcy5mb3JtR3JvdXBNYXAuZ2V0KHZhcmlhbnQuaWQpO1xyXG4gICAgICAgIGlmIChmb3JtR3JvdXApIHtcclxuICAgICAgICAgICAgY29uc3QgbmV3VmFsdWUgPSAoZm9ybUdyb3VwLnZhbHVlIGFzIFZhcmlhbnRGb3JtVmFsdWUpLmZhY2V0VmFsdWVJZHMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgICAgaWQgPT4gaWQgIT09IGZhY2V0VmFsdWVJZCxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgZm9ybUdyb3VwLnBhdGNoVmFsdWUoe1xyXG4gICAgICAgICAgICAgICAgZmFjZXRWYWx1ZUlkczogbmV3VmFsdWUsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBmb3JtR3JvdXAubWFya0FzRGlydHkoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaXNWYXJpYW50U2VsZWN0ZWQodmFyaWFudElkOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gLTEgPCB0aGlzLnNlbGVjdGVkVmFyaWFudElkcy5pbmRleE9mKHZhcmlhbnRJZCk7XHJcbiAgICB9XHJcblxyXG4gICAgZWRpdE9wdGlvbihvcHRpb246IFByb2R1Y3RWYXJpYW50RnJhZ21lbnRbJ29wdGlvbnMnXVtudW1iZXJdKSB7XHJcbiAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2VcclxuICAgICAgICAgICAgLmZyb21Db21wb25lbnQoVXBkYXRlUHJvZHVjdE9wdGlvbkRpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICAgICAgICAgICAgc2l6ZTogJ21kJyxcclxuICAgICAgICAgICAgICAgIGxvY2Fsczoge1xyXG4gICAgICAgICAgICAgICAgICAgIHByb2R1Y3RPcHRpb246IG9wdGlvbixcclxuICAgICAgICAgICAgICAgICAgICBhY3RpdmVMYW5ndWFnZTogdGhpcy5hY3RpdmVMYW5ndWFnZSxcclxuICAgICAgICAgICAgICAgICAgICBjdXN0b21GaWVsZHM6IHRoaXMuY3VzdG9tT3B0aW9uRmllbGRzLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlUHJvZHVjdE9wdGlvbi5lbWl0KHJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYnVpbGRGb3JtR3JvdXBNYXAoKSB7XHJcbiAgICAgICAgdGhpcy5mb3JtR3JvdXBNYXAuY2xlYXIoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IGNvbnRyb2xHcm91cCBvZiB0aGlzLmZvcm1BcnJheS5jb250cm9scykge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1Hcm91cE1hcC5zZXQoY29udHJvbEdyb3VwLnZhbHVlLmlkLCBjb250cm9sR3JvdXAgYXMgRm9ybUdyb3VwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldEZhY2V0VmFsdWVJZHMoaWQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcclxuICAgICAgICBjb25zdCBmb3JtVmFsdWU6IFZhcmlhbnRGb3JtVmFsdWUgPSB0aGlzLmZvcm1Hcm91cE1hcC5nZXQoaWQpPy52YWx1ZTtcclxuICAgICAgICByZXR1cm4gZm9ybVZhbHVlLmZhY2V0VmFsdWVJZHM7XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInZhcmlhbnRzLWxpc3RcIj5cclxuICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cInZhcmlhbnQtY29udGFpbmVyIGNhcmRcIlxyXG4gICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgICBsZXQgdmFyaWFudCBvZiB2YXJpYW50cyB8IHBhZ2luYXRlOiBwYWdpbmF0aW9uQ29uZmlnIHx8IHsgaXRlbXNQZXJQYWdlOiAxMCwgY3VycmVudFBhZ2U6IDEgfTtcclxuICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkO1xyXG4gICAgICAgICAgICBsZXQgaSA9IGluZGV4XHJcbiAgICAgICAgXCJcclxuICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIWZvcm1Hcm91cE1hcC5nZXQodmFyaWFudC5pZCk/LmdldCgnZW5hYmxlZCcpPy52YWx1ZVwiXHJcbiAgICA+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm1Hcm91cE1hcC5nZXQodmFyaWFudC5pZCkgYXMgZm9ybUdyb3VwXCIgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYmxvY2sgaGVhZGVyLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dmRyLXRpdGxlLWlucHV0IGNsYXNzPVwic2t1XCIgW3JlYWRvbmx5XT1cIiEodXBkYXRlUGVybWlzc2lvbiB8IGhhc1Blcm1pc3Npb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxjbHItaW5wdXQtY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xySW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic2t1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiISh1cGRhdGVQZXJtaXNzaW9uIHwgaGFzUGVybWlzc2lvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInY2F0YWxvZy5za3UnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xyLWlucHV0LWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8L3Zkci10aXRsZS1pbnB1dD5cclxuICAgICAgICAgICAgICAgICAgICA8dmRyLXRpdGxlLWlucHV0IGNsYXNzPVwibmFtZVwiIFtyZWFkb25seV09XCIhKHVwZGF0ZVBlcm1pc3Npb24gfCBoYXNQZXJtaXNzaW9uKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y2xyLWlucHV0LWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscklucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCIhKHVwZGF0ZVBlcm1pc3Npb24gfCBoYXNQZXJtaXNzaW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidjb21tb24ubmFtZScgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9jbHItaW5wdXQtY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdmRyLXRpdGxlLWlucHV0PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmlnaHQtY29udHJvbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8Y2xyLXRvZ2dsZS13cmFwcGVyICp2ZHJJZlBlcm1pc3Npb25zPVwidXBkYXRlUGVybWlzc2lvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xyVG9nZ2xlIG5hbWU9XCJlbmFibGVkXCIgZm9ybUNvbnRyb2xOYW1lPVwiZW5hYmxlZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eyAnY29tbW9uLmVuYWJsZWQnIHwgdHJhbnNsYXRlIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Nsci10b2dnbGUtd3JhcHBlcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YXJpYW50LWJvZHlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzZXRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx2ZHItYXNzZXRzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29tcGFjdF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthc3NldHNdPVwicGVuZGluZ0Fzc2V0Q2hhbmdlc1t2YXJpYW50LmlkXT8uYXNzZXRzIHx8IHZhcmlhbnQuYXNzZXRzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmZWF0dXJlZEFzc2V0XT1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlbmRpbmdBc3NldENoYW5nZXNbdmFyaWFudC5pZF0/LmZlYXR1cmVkQXNzZXQgfHwgdmFyaWFudC5mZWF0dXJlZEFzc2V0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3VwZGF0ZVBlcm1pc3Npb25zXT1cInVwZGF0ZVBlcm1pc3Npb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkFzc2V0Q2hhbmdlKHZhcmlhbnQuaWQsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC92ZHItYXNzZXRzPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YXJpYW50LWZvcm0taW5wdXRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGFuZGFyZC1maWVsZHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YXJpYW50LWZvcm0taW5wdXQtcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRheC1jYXRlZ29yeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xyLXNlbGVjdC1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp2ZHJJZlBlcm1pc3Npb25zPVwidXBkYXRlUGVybWlzc2lvbjsgZWxzZSB0YXhDYXRlZ29yeUxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7ICdjYXRhbG9nLnRheC1jYXRlZ29yeScgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbHJTZWxlY3QgbmFtZT1cIm9wdGlvbnNcIiBmb3JtQ29udHJvbE5hbWU9XCJ0YXhDYXRlZ29yeUlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdGF4Q2F0ZWdvcnkgb2YgdGF4Q2F0ZWdvcmllc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ0YXhDYXRlZ29yeS5pZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0YXhDYXRlZ29yeS5uYW1lIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbHItc2VsZWN0LWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0YXhDYXRlZ29yeUxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY2xyLWNvbnRyb2wtbGFiZWxcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjYXRhbG9nLnRheC1jYXRlZ29yeScgfCB0cmFuc2xhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YXgtY2F0ZWdvcnktbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRUYXhDYXRlZ29yeU5hbWUoZm9ybUdyb3VwKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbHItaW5wdXQtY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPnt7ICdjYXRhbG9nLnByaWNlJyB8IHRyYW5zbGF0ZSB9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmRyLWN1cnJlbmN5LWlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhY2hhbm5lbFByaWNlSW5jbHVkZXNUYXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscklucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1cnJlbmN5Q29kZV09XCJ2YXJpYW50LmN1cnJlbmN5Q29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIiEodXBkYXRlUGVybWlzc2lvbiB8IGhhc1Blcm1pc3Npb24pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwcmljZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC92ZHItY3VycmVuY3ktaW5wdXQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmRyLWN1cnJlbmN5LWlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJjaGFubmVsUHJpY2VJbmNsdWRlc1RheFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xySW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VycmVuY3lDb2RlXT1cInZhcmlhbnQuY3VycmVuY3lDb2RlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiISh1cGRhdGVQZXJtaXNzaW9uIHwgaGFzUGVybWlzc2lvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInByaWNlV2l0aFRheFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC92ZHItY3VycmVuY3ktaW5wdXQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xyLWlucHV0LWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmRyLXZhcmlhbnQtcHJpY2UtZGV0YWlsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwcmljZV09XCJmb3JtR3JvdXAuZ2V0KCdwcmljZScpIS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjdXJyZW5jeUNvZGVdPVwidmFyaWFudC5jdXJyZW5jeUNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJpY2VJbmNsdWRlc1RheF09XCJjaGFubmVsUHJpY2VJbmNsdWRlc1RheFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0YXhDYXRlZ29yeUlkXT1cImZvcm1Hcm91cC5nZXQoJ3RheENhdGVnb3J5SWQnKSEudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3Zkci12YXJpYW50LXByaWNlLWRldGFpbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhcmlhbnQtZm9ybS1pbnB1dC1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xyLXNlbGVjdC1jb250YWluZXIgKnZkcklmUGVybWlzc2lvbnM9XCJ1cGRhdGVQZXJtaXNzaW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7ICdjYXRhbG9nLnRyYWNrLWludmVudG9yeScgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2ZHItaGVscC10b29sdGlwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbnRlbnRdPVwiJ2NhdGFsb2cudHJhY2staW52ZW50b3J5LXRvb2x0aXAnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3Zkci1oZWxwLXRvb2x0aXA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xyU2VsZWN0IG5hbWU9XCJvcHRpb25zXCIgZm9ybUNvbnRyb2xOYW1lPVwidHJhY2tJbnZlbnRvcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIkdsb2JhbEZsYWcuVFJVRVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdjYXRhbG9nLnRyYWNrLWludmVudG9yeS10cnVlJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJHbG9iYWxGbGFnLkZBTFNFXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2NhdGFsb2cudHJhY2staW52ZW50b3J5LWZhbHNlJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJHbG9iYWxGbGFnLklOSEVSSVRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnY2F0YWxvZy50cmFjay1pbnZlbnRvcnktaW5oZXJpdCcgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Nsci1zZWxlY3QtY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbHItaW5wdXQtY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyAnY2F0YWxvZy5zdG9jay1vbi1oYW5kJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZkci1oZWxwLXRvb2x0aXBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29udGVudF09XCInY2F0YWxvZy5zdG9jay1vbi1oYW5kLXRvb2x0aXAnIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3Zkci1oZWxwLXRvb2x0aXBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmludmVudG9yeS11bnRyYWNrZWRdPVwiaW52ZW50b3J5SXNOb3RUcmFja2VkKGZvcm1Hcm91cClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xySW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluPVwiMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGVwPVwiMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzdG9ja09uSGFuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiISh1cGRhdGVQZXJtaXNzaW9uIHwgaGFzUGVybWlzc2lvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZkckRpc2FibGVkXT1cImludmVudG9yeUlzTm90VHJhY2tlZChmb3JtR3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Nsci1pbnB1dC1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbY2xhc3MuaW52ZW50b3J5LXVudHJhY2tlZF09XCJpbnZlbnRvcnlJc05vdFRyYWNrZWQoZm9ybUdyb3VwKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjbHItY29udHJvbC1sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgJ2NhdGFsb2cuc3RvY2stYWxsb2NhdGVkJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZkci1oZWxwLXRvb2x0aXBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29udGVudF09XCInY2F0YWxvZy5zdG9jay1hbGxvY2F0ZWQtdG9vbHRpcCcgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvdmRyLWhlbHAtdG9vbHRpcFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB2YXJpYW50LnN0b2NrQWxsb2NhdGVkIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2NsYXNzLmludmVudG9yeS11bnRyYWNrZWRdPVwiaW52ZW50b3J5SXNOb3RUcmFja2VkKGZvcm1Hcm91cClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY2xyLWNvbnRyb2wtbGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7ICdjYXRhbG9nLnN0b2NrLXNhbGVhYmxlJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZkci1oZWxwLXRvb2x0aXBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29udGVudF09XCInY2F0YWxvZy5zdG9jay1zYWxlYWJsZS10b29sdGlwJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC92ZHItaGVscC10b29sdGlwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldFNhbGVhYmxlU3RvY2tMZXZlbCh2YXJpYW50KSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YXJpYW50LWZvcm0taW5wdXQtcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm91dC1vZi1zdG9jay10aHJlc2hvbGQtd3JhcHBlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5pbnZlbnRvcnktdW50cmFja2VkXT1cImludmVudG9yeUlzTm90VHJhY2tlZChmb3JtR3JvdXApXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNsci1jb250cm9sLWxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyAnY2F0YWxvZy5vdXQtb2Ytc3RvY2stdGhyZXNob2xkJyB8IHRyYW5zbGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX08dmRyLWhlbHAtdG9vbHRpcFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb250ZW50XT1cIidjYXRhbG9nLm91dC1vZi1zdG9jay10aHJlc2hvbGQtdG9vbHRpcCcgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvdmRyLWhlbHAtdG9vbHRpcFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbHItaW5wdXQtY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHJJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm1Hcm91cC5nZXQoJ291dE9mU3RvY2tUaHJlc2hvbGQnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCIhKHVwZGF0ZVBlcm1pc3Npb24gfCBoYXNQZXJtaXNzaW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2ZHJEaXNhYmxlZF09XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cC5nZXQoJ3VzZUdsb2JhbE91dE9mU3RvY2tUaHJlc2hvbGQnKT8udmFsdWUgIT09XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgfHwgaW52ZW50b3J5SXNOb3RUcmFja2VkKGZvcm1Hcm91cClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jbHItaW5wdXQtY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNsci10b2dnbGUtd3JhcHBlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xyVG9nZ2xlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJ1c2VHbG9iYWxPdXRPZlN0b2NrVGhyZXNob2xkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidXNlR2xvYmFsT3V0T2ZTdG9ja1RocmVzaG9sZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2ZHJEaXNhYmxlZF09XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICEodXBkYXRlUGVybWlzc2lvbiB8IGhhc1Blcm1pc3Npb24pIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnZlbnRvcnlJc05vdFRyYWNrZWQoZm9ybUdyb3VwKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyAnY2F0YWxvZy51c2UtZ2xvYmFsLXZhbHVlJyB8IHRyYW5zbGF0ZSB9fSAoe3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbE91dE9mU3RvY2tUaHJlc2hvbGRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0pPC9sYWJlbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2xyLXRvZ2dsZS13cmFwcGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1maWVsZHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YXJpYW50LWZvcm0taW5wdXQtcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gZm9ybUdyb3VwTmFtZT1cImN1c3RvbUZpZWxkc1wiICpuZ0lmPVwiY3VzdG9tRmllbGRzLmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmRyLXRhYmJlZC1jdXN0b20tZmllbGRzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHlOYW1lPVwiUHJvZHVjdFZhcmlhbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1c3RvbUZpZWxkc109XCJjdXN0b21GaWVsZHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbXBhY3RdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VzdG9tRmllbGRzRm9ybUdyb3VwXT1cImZvcm1Hcm91cC5nZXQoJ2N1c3RvbUZpZWxkcycpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCIhKHVwZGF0ZVBlcm1pc3Npb24gfCBoYXNQZXJtaXNzaW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3Zkci10YWJiZWQtY3VzdG9tLWZpZWxkcz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib3B0aW9ucy1mYWNldHNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dmRyLWVudGl0eS1pbmZvIFtlbnRpdHldPVwidmFyaWFudFwiPjwvdmRyLWVudGl0eS1pbmZvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ2YXJpYW50Lm9wdGlvbnMubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmRyLWNoaXBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHZhcmlhbnQub3B0aW9ucyB8IHNvcnQ6ICdncm91cElkJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yRnJvbV09XCJvcHRpb25Hcm91cE5hbWUob3B0aW9uLmdyb3VwSWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW52ZXJ0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpY29uQ2xpY2spPVwiZWRpdE9wdGlvbihvcHRpb24pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbl09XCIodXBkYXRlUGVybWlzc2lvbiB8IGhhc1Blcm1pc3Npb24pICYmICdwZW5jaWwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm9wdGlvbi1ncm91cC1uYW1lXCI+e3sgb3B0aW9uR3JvdXBOYW1lKG9wdGlvbi5ncm91cElkKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb25OYW1lKG9wdGlvbikgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmRyLWNoaXA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBbcm91dGVyTGlua109XCJbJy4vJywgJ29wdGlvbnMnXVwiIGNsYXNzPVwiYnRuIGJ0bi1saW5rIGJ0bi1zbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7ICdjYXRhbG9nLmVkaXQtb3B0aW9ucycgfCB0cmFuc2xhdGUgfX0uLi48L2FcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtc3BhY2VyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZhY2V0c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dmRyLWZhY2V0LXZhbHVlLWNoaXBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBmYWNldFZhbHVlIG9mIGV4aXN0aW5nRmFjZXRWYWx1ZXModmFyaWFudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZhY2V0VmFsdWVdPVwiZmFjZXRWYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVtb3ZhYmxlXT1cInVwZGF0ZVBlcm1pc3Npb24gfCBoYXNQZXJtaXNzaW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZW1vdmUpPVwicmVtb3ZlRmFjZXRWYWx1ZSh2YXJpYW50LCBmYWNldFZhbHVlLmlkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3Zkci1mYWNldC12YWx1ZS1jaGlwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dmRyLWZhY2V0LXZhbHVlLWNoaXBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBmYWNldFZhbHVlIG9mIHBlbmRpbmdGYWNldFZhbHVlcyh2YXJpYW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmFjZXRWYWx1ZV09XCJmYWNldFZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZW1vdmFibGVdPVwidXBkYXRlUGVybWlzc2lvbiB8IGhhc1Blcm1pc3Npb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlbW92ZSk9XCJyZW1vdmVGYWNldFZhbHVlKHZhcmlhbnQsIGZhY2V0VmFsdWUuaWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvdmRyLWZhY2V0LXZhbHVlLWNoaXA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICp2ZHJJZlBlcm1pc3Npb25zPVwidXBkYXRlUGVybWlzc2lvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc20gYnRuLXNlY29uZGFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0RmFjZXRWYWx1ZUNsaWNrLmVtaXQoW3ZhcmlhbnQuaWRdKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cInBsdXNcIj48L2Nsci1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2NhdGFsb2cuYWRkLWZhY2V0cycgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKnZkcklmTXVsdGljaGFubmVsPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYmxvY2tcIiAqdmRySWZEZWZhdWx0Q2hhbm5lbEFjdGl2ZT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBjaGFubmVsLWFzc2lnbm1lbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2hhbm5lbCBvZiB2YXJpYW50LmNoYW5uZWxzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmRyLWNoaXBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFpc0RlZmF1bHRDaGFubmVsKGNoYW5uZWwuY29kZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJ0aW1lcy1jaXJjbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCInY2F0YWxvZy5yZW1vdmUtZnJvbS1jaGFubmVsJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGljb25DbGljayk9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlRnJvbUNoYW5uZWwuZW1pdCh7IGNoYW5uZWxJZDogY2hhbm5lbC5pZCwgdmFyaWFudDogdmFyaWFudCB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZkci1jaGFubmVsLWJhZGdlIFtjaGFubmVsQ29kZV09XCJjaGFubmVsLmNvZGVcIj48L3Zkci1jaGFubmVsLWJhZGdlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNoYW5uZWwuY29kZSB8IGNoYW5uZWxDb2RlVG9MYWJlbCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92ZHItY2hpcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNtXCIgKGNsaWNrKT1cImFzc2lnblRvQ2hhbm5lbC5lbWl0KHZhcmlhbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJsYXllcnNcIj48L2Nsci1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2NhdGFsb2cuYXNzaWduLXRvLWNoYW5uZWwnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -0,0 +1,72 @@
1
+ import { ChangeDetectionStrategy, Component, Input, } from '@angular/core';
2
+ import { Permission } from '@vendure/admin-ui/core';
3
+ import { debounceTime, distinctUntilChanged, map } from 'rxjs/operators';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@clr/angular";
6
+ import * as i2 from "@vendure/admin-ui/core";
7
+ import * as i3 from "@angular/common";
8
+ import * as i4 from "@angular/forms";
9
+ import * as i5 from "@ngx-translate/core";
10
+ import * as i6 from "ngx-pagination";
11
+ export class ProductVariantsTableComponent {
12
+ constructor(changeDetector) {
13
+ this.changeDetector = changeDetector;
14
+ this.formGroupMap = new Map();
15
+ this.updatePermission = [Permission.UpdateCatalog, Permission.UpdateProduct];
16
+ }
17
+ ngOnInit() {
18
+ this.subscription = this.formArray.valueChanges
19
+ .pipe(map(value => value.length), debounceTime(1), distinctUntilChanged())
20
+ .subscribe(() => {
21
+ this.buildFormGroupMap();
22
+ });
23
+ this.buildFormGroupMap();
24
+ }
25
+ ngOnDestroy() {
26
+ if (this.subscription) {
27
+ this.subscription.unsubscribe();
28
+ }
29
+ }
30
+ trackByFn(index, item) {
31
+ if (item.id != null) {
32
+ return item.id;
33
+ }
34
+ else {
35
+ return index;
36
+ }
37
+ }
38
+ getFeaturedAsset(variant) {
39
+ return this.pendingAssetChanges[variant.id]?.featuredAsset || variant.featuredAsset;
40
+ }
41
+ optionGroupName(optionGroupId) {
42
+ const group = this.optionGroups.find(g => g.id === optionGroupId);
43
+ return group && group.name;
44
+ }
45
+ buildFormGroupMap() {
46
+ this.formGroupMap.clear();
47
+ for (const controlGroup of this.formArray.controls) {
48
+ this.formGroupMap.set(controlGroup.value.id, controlGroup);
49
+ }
50
+ this.changeDetector.markForCheck();
51
+ }
52
+ }
53
+ ProductVariantsTableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ProductVariantsTableComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
54
+ ProductVariantsTableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: ProductVariantsTableComponent, selector: "vdr-product-variants-table", inputs: { formArray: ["productVariantsFormArray", "formArray"], variants: "variants", paginationConfig: "paginationConfig", channelPriceIncludesTax: "channelPriceIncludesTax", optionGroups: "optionGroups", pendingAssetChanges: "pendingAssetChanges" }, ngImport: i0, template: "<table class=\"table\">\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>{{ 'common.name' | translate }}</th>\r\n <th>{{ 'catalog.sku' | translate }}</th>\r\n <ng-container *ngFor=\"let optionGroup of optionGroups | sort: 'id'\">\r\n <th>{{ optionGroup.name }}</th>\r\n </ng-container>\r\n <th>{{ 'catalog.price' | translate }}</th>\r\n <th>{{ 'catalog.stock-on-hand' | translate }}</th>\r\n <th>{{ 'common.enabled' | translate }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let variant of variants | paginate: paginationConfig; index as i; trackBy: trackByFn\">\r\n <ng-container *ngIf=\"formGroupMap.get(variant.id) as formGroup\" [formGroup]=\"formGroup\">\r\n <td class=\"left align-middle\" [class.disabled]=\"!formGroup.get('enabled')!.value\">\r\n <div class=\"card-img\">\r\n <div class=\"featured-asset\">\r\n <img\r\n *ngIf=\"getFeaturedAsset(variant) as featuredAsset; else placeholder\"\r\n [src]=\"featuredAsset | assetPreview: 'tiny'\"\r\n />\r\n <ng-template #placeholder>\r\n <div class=\"placeholder\">\r\n <clr-icon shape=\"image\" size=\"48\"></clr-icon>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"left align-middle\" [class.disabled]=\"!formGroup.get('enabled')!.value\">\r\n <clr-input-container>\r\n <input\r\n clrInput\r\n type=\"text\"\r\n formControlName=\"name\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n [placeholder]=\"'common.name' | translate\"\r\n />\r\n </clr-input-container>\r\n </td>\r\n <td class=\"left align-middle\" [class.disabled]=\"!formGroup.get('enabled')!.value\">\r\n <clr-input-container>\r\n <input\r\n clrInput\r\n type=\"text\"\r\n formControlName=\"sku\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n [placeholder]=\"'catalog.sku' | translate\"\r\n />\r\n </clr-input-container>\r\n </td>\r\n <ng-container *ngFor=\"let option of variant.options | sort: 'groupId'\">\r\n <td\r\n class=\"left align-middle\"\r\n [class.disabled]=\"!formGroup.get('enabled')!.value\"\r\n [style.color]=\"optionGroupName(option.groupId) | stringToColor\"\r\n >\r\n {{ option.name }}\r\n </td>\r\n </ng-container>\r\n <td class=\"left align-middle price\" [class.disabled]=\"!formGroup.get('enabled')!.value\">\r\n <clr-input-container>\r\n <vdr-currency-input\r\n *ngIf=\"!channelPriceIncludesTax\"\r\n clrInput\r\n [currencyCode]=\"variant.currencyCode\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n formControlName=\"price\"\r\n ></vdr-currency-input>\r\n <vdr-currency-input\r\n *ngIf=\"channelPriceIncludesTax\"\r\n clrInput\r\n [currencyCode]=\"variant.currencyCode\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n formControlName=\"priceWithTax\"\r\n ></vdr-currency-input>\r\n </clr-input-container>\r\n </td>\r\n <td class=\"left align-middle stock\" [class.disabled]=\"!formGroup.get('enabled')!.value\">\r\n <clr-input-container>\r\n <input\r\n clrInput\r\n type=\"number\"\r\n min=\"0\"\r\n step=\"1\"\r\n formControlName=\"stockOnHand\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n />\r\n </clr-input-container>\r\n </td>\r\n <td class=\"left align-middle stock\" [class.disabled]=\"!formGroup.get('enabled')!.value\">\r\n <clr-toggle-wrapper>\r\n <input\r\n type=\"checkbox\"\r\n clrToggle\r\n name=\"enabled\"\r\n formControlName=\"enabled\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n />\r\n </clr-toggle-wrapper>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </tbody>\r\n</table>\r\n", styles: [".placeholder{color:var(--color-grey-300)}.stock input,.price input{max-width:96px}td{transition:background-color .2s}td.disabled{background-color:var(--color-component-bg-200)}\n"], components: [{ type: i1.ClrInputContainer, selector: "clr-input-container" }, { type: i2.CurrencyInputComponent, selector: "vdr-currency-input", inputs: ["disabled", "readonly", "value", "currencyCode"], outputs: ["valueChange"] }, { type: i1.ClrCheckboxWrapper, selector: "clr-checkbox-wrapper,clr-toggle-wrapper" }], directives: [{ type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.ClrDatagridItemsTrackBy, selector: "[ngForTrackBy]", inputs: ["ngForTrackBy"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1.ClrIconCustomTag, selector: "clr-icon" }, { type: i2.FormFieldControlDirective, selector: "input, textarea, select" }, { type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1.ClrInput, selector: "[clrInput]" }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i4.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { type: i4.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { type: i4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { type: i1.ClrCheckbox, selector: "[clrCheckbox],[clrToggle]" }, { type: i2.DisabledDirective, selector: "[vdrDisabled]", inputs: ["vdrDisabled"] }], pipes: { "translate": i5.TranslatePipe, "sort": i2.SortPipe, "paginate": i6.PaginatePipe, "assetPreview": i2.AssetPreviewPipe, "hasPermission": i2.HasPermissionPipe, "stringToColor": i2.StringToColorPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ProductVariantsTableComponent, decorators: [{
56
+ type: Component,
57
+ args: [{ selector: 'vdr-product-variants-table', changeDetection: ChangeDetectionStrategy.OnPush, template: "<table class=\"table\">\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>{{ 'common.name' | translate }}</th>\r\n <th>{{ 'catalog.sku' | translate }}</th>\r\n <ng-container *ngFor=\"let optionGroup of optionGroups | sort: 'id'\">\r\n <th>{{ optionGroup.name }}</th>\r\n </ng-container>\r\n <th>{{ 'catalog.price' | translate }}</th>\r\n <th>{{ 'catalog.stock-on-hand' | translate }}</th>\r\n <th>{{ 'common.enabled' | translate }}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let variant of variants | paginate: paginationConfig; index as i; trackBy: trackByFn\">\r\n <ng-container *ngIf=\"formGroupMap.get(variant.id) as formGroup\" [formGroup]=\"formGroup\">\r\n <td class=\"left align-middle\" [class.disabled]=\"!formGroup.get('enabled')!.value\">\r\n <div class=\"card-img\">\r\n <div class=\"featured-asset\">\r\n <img\r\n *ngIf=\"getFeaturedAsset(variant) as featuredAsset; else placeholder\"\r\n [src]=\"featuredAsset | assetPreview: 'tiny'\"\r\n />\r\n <ng-template #placeholder>\r\n <div class=\"placeholder\">\r\n <clr-icon shape=\"image\" size=\"48\"></clr-icon>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"left align-middle\" [class.disabled]=\"!formGroup.get('enabled')!.value\">\r\n <clr-input-container>\r\n <input\r\n clrInput\r\n type=\"text\"\r\n formControlName=\"name\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n [placeholder]=\"'common.name' | translate\"\r\n />\r\n </clr-input-container>\r\n </td>\r\n <td class=\"left align-middle\" [class.disabled]=\"!formGroup.get('enabled')!.value\">\r\n <clr-input-container>\r\n <input\r\n clrInput\r\n type=\"text\"\r\n formControlName=\"sku\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n [placeholder]=\"'catalog.sku' | translate\"\r\n />\r\n </clr-input-container>\r\n </td>\r\n <ng-container *ngFor=\"let option of variant.options | sort: 'groupId'\">\r\n <td\r\n class=\"left align-middle\"\r\n [class.disabled]=\"!formGroup.get('enabled')!.value\"\r\n [style.color]=\"optionGroupName(option.groupId) | stringToColor\"\r\n >\r\n {{ option.name }}\r\n </td>\r\n </ng-container>\r\n <td class=\"left align-middle price\" [class.disabled]=\"!formGroup.get('enabled')!.value\">\r\n <clr-input-container>\r\n <vdr-currency-input\r\n *ngIf=\"!channelPriceIncludesTax\"\r\n clrInput\r\n [currencyCode]=\"variant.currencyCode\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n formControlName=\"price\"\r\n ></vdr-currency-input>\r\n <vdr-currency-input\r\n *ngIf=\"channelPriceIncludesTax\"\r\n clrInput\r\n [currencyCode]=\"variant.currencyCode\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n formControlName=\"priceWithTax\"\r\n ></vdr-currency-input>\r\n </clr-input-container>\r\n </td>\r\n <td class=\"left align-middle stock\" [class.disabled]=\"!formGroup.get('enabled')!.value\">\r\n <clr-input-container>\r\n <input\r\n clrInput\r\n type=\"number\"\r\n min=\"0\"\r\n step=\"1\"\r\n formControlName=\"stockOnHand\"\r\n [readonly]=\"!(updatePermission | hasPermission)\"\r\n />\r\n </clr-input-container>\r\n </td>\r\n <td class=\"left align-middle stock\" [class.disabled]=\"!formGroup.get('enabled')!.value\">\r\n <clr-toggle-wrapper>\r\n <input\r\n type=\"checkbox\"\r\n clrToggle\r\n name=\"enabled\"\r\n formControlName=\"enabled\"\r\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\r\n />\r\n </clr-toggle-wrapper>\r\n </td>\r\n </ng-container>\r\n </tr>\r\n </tbody>\r\n</table>\r\n", styles: [".placeholder{color:var(--color-grey-300)}.stock input,.price input{max-width:96px}td{transition:background-color .2s}td.disabled{background-color:var(--color-component-bg-200)}\n"] }]
58
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { formArray: [{
59
+ type: Input,
60
+ args: ['productVariantsFormArray']
61
+ }], variants: [{
62
+ type: Input
63
+ }], paginationConfig: [{
64
+ type: Input
65
+ }], channelPriceIncludesTax: [{
66
+ type: Input
67
+ }], optionGroups: [{
68
+ type: Input
69
+ }], pendingAssetChanges: [{
70
+ type: Input
71
+ }] } });
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC12YXJpYW50cy10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NhdGFsb2cvc3JjL2NvbXBvbmVudHMvcHJvZHVjdC12YXJpYW50cy10YWJsZS9wcm9kdWN0LXZhcmlhbnRzLXRhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY2F0YWxvZy9zcmMvY29tcG9uZW50cy9wcm9kdWN0LXZhcmlhbnRzLXRhYmxlL3Byb2R1Y3QtdmFyaWFudHMtdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsS0FBSyxHQUdSLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxVQUFVLEVBQWlELE1BQU0sd0JBQXdCLENBQUM7QUFFbkcsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7QUFVekUsTUFBTSxPQUFPLDZCQUE2QjtJQVd0QyxZQUFvQixjQUFpQztRQUFqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFKckQsaUJBQVksR0FBRyxJQUFJLEdBQUcsRUFBcUIsQ0FBQztRQUNuQyxxQkFBZ0IsR0FBRyxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBR3pCLENBQUM7SUFFekQsUUFBUTtRQUNKLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZO2FBQzFDLElBQUksQ0FDRCxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQzFCLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFDZixvQkFBb0IsRUFBRSxDQUN6QjthQUNBLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztRQUVQLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDbkM7SUFDTCxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQWEsRUFBRSxJQUFTO1FBQzlCLElBQUssSUFBWSxDQUFDLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDMUIsT0FBUSxJQUFZLENBQUMsRUFBRSxDQUFDO1NBQzNCO2FBQU07WUFDSCxPQUFPLEtBQUssQ0FBQztTQUNoQjtJQUNMLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxPQUErQjtRQUM1QyxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsYUFBYSxJQUFJLE9BQU8sQ0FBQyxhQUFhLENBQUM7SUFDeEYsQ0FBQztJQUVELGVBQWUsQ0FBQyxhQUFxQjtRQUNqQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssYUFBYSxDQUFDLENBQUM7UUFDbEUsT0FBTyxLQUFLLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRU8saUJBQWlCO1FBQ3JCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDMUIsS0FBSyxNQUFNLFlBQVksSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRTtZQUNoRCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxZQUF5QixDQUFDLENBQUM7U0FDM0U7UUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3ZDLENBQUM7OzBIQXhEUSw2QkFBNkI7OEdBQTdCLDZCQUE2Qiw4VENyQjFDLHNnTEE0R0E7MkZEdkZhLDZCQUE2QjtrQkFOekMsU0FBUzsrQkFDSSw0QkFBNEIsbUJBR3JCLHVCQUF1QixDQUFDLE1BQU07d0dBR1osU0FBUztzQkFBM0MsS0FBSzt1QkFBQywwQkFBMEI7Z0JBQ3hCLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkRlc3Ryb3ksXHJcbiAgICBPbkluaXQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBQZXJtaXNzaW9uLCBQcm9kdWN0RGV0YWlsRnJhZ21lbnQsIFByb2R1Y3RWYXJpYW50RnJhZ21lbnQgfSBmcm9tICdAdmVuZHVyZS9hZG1pbi11aS9jb3JlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IFBhZ2luYXRpb25Db25maWcsIFNlbGVjdGVkQXNzZXRzIH0gZnJvbSAnLi4vcHJvZHVjdC1kZXRhaWwvcHJvZHVjdC1kZXRhaWwudHlwZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3Zkci1wcm9kdWN0LXZhcmlhbnRzLXRhYmxlJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9wcm9kdWN0LXZhcmlhbnRzLXRhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3Byb2R1Y3QtdmFyaWFudHMtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvZHVjdFZhcmlhbnRzVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgICBASW5wdXQoJ3Byb2R1Y3RWYXJpYW50c0Zvcm1BcnJheScpIGZvcm1BcnJheTogRm9ybUFycmF5O1xyXG4gICAgQElucHV0KCkgdmFyaWFudHM6IFByb2R1Y3RWYXJpYW50RnJhZ21lbnRbXTtcclxuICAgIEBJbnB1dCgpIHBhZ2luYXRpb25Db25maWc6IFBhZ2luYXRpb25Db25maWc7XHJcbiAgICBASW5wdXQoKSBjaGFubmVsUHJpY2VJbmNsdWRlc1RheDogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIG9wdGlvbkdyb3VwczogUHJvZHVjdERldGFpbEZyYWdtZW50WydvcHRpb25Hcm91cHMnXTtcclxuICAgIEBJbnB1dCgpIHBlbmRpbmdBc3NldENoYW5nZXM6IHsgW3ZhcmlhbnRJZDogc3RyaW5nXTogU2VsZWN0ZWRBc3NldHMgfTtcclxuICAgIGZvcm1Hcm91cE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBGb3JtR3JvdXA+KCk7XHJcbiAgICByZWFkb25seSB1cGRhdGVQZXJtaXNzaW9uID0gW1Blcm1pc3Npb24uVXBkYXRlQ2F0YWxvZywgUGVybWlzc2lvbi5VcGRhdGVQcm9kdWN0XTtcclxuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLmZvcm1BcnJheS52YWx1ZUNoYW5nZXNcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICBtYXAodmFsdWUgPT4gdmFsdWUubGVuZ3RoKSxcclxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSgxKSxcclxuICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkRm9ybUdyb3VwTWFwKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmJ1aWxkRm9ybUdyb3VwTWFwKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRyYWNrQnlGbihpbmRleDogbnVtYmVyLCBpdGVtOiBhbnkpIHtcclxuICAgICAgICBpZiAoKGl0ZW0gYXMgYW55KS5pZCAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAoaXRlbSBhcyBhbnkpLmlkO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBpbmRleDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RmVhdHVyZWRBc3NldCh2YXJpYW50OiBQcm9kdWN0VmFyaWFudEZyYWdtZW50KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGVuZGluZ0Fzc2V0Q2hhbmdlc1t2YXJpYW50LmlkXT8uZmVhdHVyZWRBc3NldCB8fCB2YXJpYW50LmZlYXR1cmVkQXNzZXQ7XHJcbiAgICB9XHJcblxyXG4gICAgb3B0aW9uR3JvdXBOYW1lKG9wdGlvbkdyb3VwSWQ6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgY29uc3QgZ3JvdXAgPSB0aGlzLm9wdGlvbkdyb3Vwcy5maW5kKGcgPT4gZy5pZCA9PT0gb3B0aW9uR3JvdXBJZCk7XHJcbiAgICAgICAgcmV0dXJuIGdyb3VwICYmIGdyb3VwLm5hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBidWlsZEZvcm1Hcm91cE1hcCgpIHtcclxuICAgICAgICB0aGlzLmZvcm1Hcm91cE1hcC5jbGVhcigpO1xyXG4gICAgICAgIGZvciAoY29uc3QgY29udHJvbEdyb3VwIG9mIHRoaXMuZm9ybUFycmF5LmNvbnRyb2xzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwTWFwLnNldChjb250cm9sR3JvdXAudmFsdWUuaWQsIGNvbnRyb2xHcm91cCBhcyBGb3JtR3JvdXApO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgfVxyXG59XHJcbiIsIjx0YWJsZSBjbGFzcz1cInRhYmxlXCI+XHJcbiAgICA8dGhlYWQ+XHJcbiAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICA8dGg+PC90aD5cclxuICAgICAgICAgICAgPHRoPnt7ICdjb21tb24ubmFtZScgfCB0cmFuc2xhdGUgfX08L3RoPlxyXG4gICAgICAgICAgICA8dGg+e3sgJ2NhdGFsb2cuc2t1JyB8IHRyYW5zbGF0ZSB9fTwvdGg+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG9wdGlvbkdyb3VwIG9mIG9wdGlvbkdyb3VwcyB8IHNvcnQ6ICdpZCdcIj5cclxuICAgICAgICAgICAgICAgIDx0aD57eyBvcHRpb25Hcm91cC5uYW1lIH19PC90aD5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDx0aD57eyAnY2F0YWxvZy5wcmljZScgfCB0cmFuc2xhdGUgfX08L3RoPlxyXG4gICAgICAgICAgICA8dGg+e3sgJ2NhdGFsb2cuc3RvY2stb24taGFuZCcgfCB0cmFuc2xhdGUgfX08L3RoPlxyXG4gICAgICAgICAgICA8dGg+e3sgJ2NvbW1vbi5lbmFibGVkJyB8IHRyYW5zbGF0ZSB9fTwvdGg+XHJcbiAgICAgICAgPC90cj5cclxuICAgIDwvdGhlYWQ+XHJcbiAgICA8dGJvZHk+XHJcbiAgICAgICAgPHRyICpuZ0Zvcj1cImxldCB2YXJpYW50IG9mIHZhcmlhbnRzIHwgcGFnaW5hdGU6IHBhZ2luYXRpb25Db25maWc7IGluZGV4IGFzIGk7IHRyYWNrQnk6IHRyYWNrQnlGblwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZm9ybUdyb3VwTWFwLmdldCh2YXJpYW50LmlkKSBhcyBmb3JtR3JvdXBcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibGVmdCBhbGlnbi1taWRkbGVcIiBbY2xhc3MuZGlzYWJsZWRdPVwiIWZvcm1Hcm91cC5nZXQoJ2VuYWJsZWQnKSEudmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1pbWdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZlYXR1cmVkLWFzc2V0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJnZXRGZWF0dXJlZEFzc2V0KHZhcmlhbnQpIGFzIGZlYXR1cmVkQXNzZXQ7IGVsc2UgcGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiZmVhdHVyZWRBc3NldCB8IGFzc2V0UHJldmlldzogJ3RpbnknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3BsYWNlaG9sZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwbGFjZWhvbGRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2xyLWljb24gc2hhcGU9XCJpbWFnZVwiIHNpemU9XCI0OFwiPjwvY2xyLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJsZWZ0IGFsaWduLW1pZGRsZVwiIFtjbGFzcy5kaXNhYmxlZF09XCIhZm9ybUdyb3VwLmdldCgnZW5hYmxlZCcpIS52YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxjbHItaW5wdXQtY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscklucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCIhKHVwZGF0ZVBlcm1pc3Npb24gfCBoYXNQZXJtaXNzaW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ2NvbW1vbi5uYW1lJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9jbHItaW5wdXQtY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImxlZnQgYWxpZ24tbWlkZGxlXCIgW2NsYXNzLmRpc2FibGVkXT1cIiFmb3JtR3JvdXAuZ2V0KCdlbmFibGVkJykhLnZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGNsci1pbnB1dC1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xySW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInNrdVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiISh1cGRhdGVQZXJtaXNzaW9uIHwgaGFzUGVybWlzc2lvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidjYXRhbG9nLnNrdScgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvY2xyLWlucHV0LWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgdmFyaWFudC5vcHRpb25zIHwgc29ydDogJ2dyb3VwSWQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibGVmdCBhbGlnbi1taWRkbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiIWZvcm1Hcm91cC5nZXQoJ2VuYWJsZWQnKSEudmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwib3B0aW9uR3JvdXBOYW1lKG9wdGlvbi5ncm91cElkKSB8IHN0cmluZ1RvQ29sb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgb3B0aW9uLm5hbWUgfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8dGQgY2xhc3M9XCJsZWZ0IGFsaWduLW1pZGRsZSBwcmljZVwiIFtjbGFzcy5kaXNhYmxlZF09XCIhZm9ybUdyb3VwLmdldCgnZW5hYmxlZCcpIS52YWx1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxjbHItaW5wdXQtY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dmRyLWN1cnJlbmN5LWlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFjaGFubmVsUHJpY2VJbmNsdWRlc1RheFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHJJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1cnJlbmN5Q29kZV09XCJ2YXJpYW50LmN1cnJlbmN5Q29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwiISh1cGRhdGVQZXJtaXNzaW9uIHwgaGFzUGVybWlzc2lvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicHJpY2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+PC92ZHItY3VycmVuY3ktaW5wdXQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx2ZHItY3VycmVuY3ktaW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2hhbm5lbFByaWNlSW5jbHVkZXNUYXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xySW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjdXJyZW5jeUNvZGVdPVwidmFyaWFudC5jdXJyZW5jeUNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cIiEodXBkYXRlUGVybWlzc2lvbiB8IGhhc1Blcm1pc3Npb24pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInByaWNlV2l0aFRheFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L3Zkci1jdXJyZW5jeS1pbnB1dD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Nsci1pbnB1dC1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkIGNsYXNzPVwibGVmdCBhbGlnbi1taWRkbGUgc3RvY2tcIiBbY2xhc3MuZGlzYWJsZWRdPVwiIWZvcm1Hcm91cC5nZXQoJ2VuYWJsZWQnKSEudmFsdWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8Y2xyLWlucHV0LWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHJJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW49XCIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXA9XCIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInN0b2NrT25IYW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seV09XCIhKHVwZGF0ZVBlcm1pc3Npb24gfCBoYXNQZXJtaXNzaW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9jbHItaW5wdXQtY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz1cImxlZnQgYWxpZ24tbWlkZGxlIHN0b2NrXCIgW2NsYXNzLmRpc2FibGVkXT1cIiFmb3JtR3JvdXAuZ2V0KCdlbmFibGVkJykhLnZhbHVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGNsci10b2dnbGUtd3JhcHBlcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xyVG9nZ2xlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwiZW5hYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJlbmFibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2ZHJEaXNhYmxlZF09XCIhKHVwZGF0ZVBlcm1pc3Npb24gfCBoYXNQZXJtaXNzaW9uKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9jbHItdG9nZ2xlLXdyYXBwZXI+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L3RyPlxyXG4gICAgPC90Ym9keT5cclxuPC90YWJsZT5cclxuIl19