@vendure/admin-ui 1.7.3 → 1.8.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.
- package/README.md +49 -0
- package/angular.json +196 -0
- package/i18n-coverage.json +71 -0
- package/package/bundles/vendure-admin-ui-catalog.umd.js +5689 -0
- package/package/bundles/vendure-admin-ui-catalog.umd.js.map +1 -0
- package/package/bundles/vendure-admin-ui-core.umd.js +16863 -0
- package/package/bundles/vendure-admin-ui-core.umd.js.map +1 -0
- package/package/bundles/vendure-admin-ui-customer.umd.js +1680 -0
- package/package/bundles/vendure-admin-ui-customer.umd.js.map +1 -0
- package/package/bundles/vendure-admin-ui-dashboard.umd.js +759 -0
- package/package/bundles/vendure-admin-ui-dashboard.umd.js.map +1 -0
- package/{bundles → package/bundles}/vendure-admin-ui-login.umd.js +0 -0
- package/{bundles → package/bundles}/vendure-admin-ui-login.umd.js.map +0 -0
- package/package/bundles/vendure-admin-ui-marketing.umd.js +783 -0
- package/package/bundles/vendure-admin-ui-marketing.umd.js.map +1 -0
- package/package/bundles/vendure-admin-ui-order.umd.js +4028 -0
- package/package/bundles/vendure-admin-ui-order.umd.js.map +1 -0
- package/package/bundles/vendure-admin-ui-settings.umd.js +3700 -0
- package/package/bundles/vendure-admin-ui-settings.umd.js.map +1 -0
- package/package/bundles/vendure-admin-ui-system.umd.js +524 -0
- package/{bundles → package/bundles}/vendure-admin-ui-system.umd.js.map +0 -0
- package/{bundles → package/bundles}/vendure-admin-ui.umd.js +0 -0
- package/{bundles → package/bundles}/vendure-admin-ui.umd.js.map +0 -0
- package/package/catalog/catalog.module.d.ts +5 -0
- package/{catalog → package/catalog}/catalog.routes.d.ts +0 -0
- package/{catalog → package/catalog}/components/apply-facet-dialog/apply-facet-dialog.component.d.ts +0 -0
- package/{catalog → package/catalog}/components/asset-detail/asset-detail.component.d.ts +0 -0
- package/{catalog → package/catalog}/components/asset-list/asset-list.component.d.ts +0 -0
- package/{catalog → package/catalog}/components/assets/assets.component.d.ts +0 -0
- package/{catalog → package/catalog}/components/assign-products-to-channel-dialog/assign-products-to-channel-dialog.component.d.ts +0 -0
- package/package/catalog/components/assign-to-channel-dialog/assign-to-channel-dialog.component.d.ts +17 -0
- package/package/catalog/components/bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.component.d.ts +38 -0
- package/package/catalog/components/bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.graphql.d.ts +4 -0
- package/{catalog → package/catalog}/components/collection-contents/collection-contents.component.d.ts +0 -0
- package/{catalog → package/catalog}/components/collection-detail/collection-detail.component.d.ts +0 -0
- package/package/catalog/components/collection-list/collection-list-bulk-actions.d.ts +6 -0
- package/package/catalog/components/collection-list/collection-list.component.d.ts +35 -0
- package/{catalog → package/catalog}/components/collection-tree/array-to-tree.d.ts +0 -0
- package/package/catalog/components/collection-tree/collection-tree-node.component.d.ts +40 -0
- package/package/catalog/components/collection-tree/collection-tree.component.d.ts +36 -0
- package/{catalog → package/catalog}/components/confirm-variant-deletion-dialog/confirm-variant-deletion-dialog.component.d.ts +0 -0
- package/{catalog → package/catalog}/components/facet-detail/facet-detail.component.d.ts +0 -0
- package/package/catalog/components/facet-list/facet-list-bulk-actions.d.ts +5 -0
- package/package/catalog/components/facet-list/facet-list.component.d.ts +25 -0
- package/{catalog → package/catalog}/components/generate-product-variants/generate-product-variants.component.d.ts +0 -0
- package/{catalog → package/catalog}/components/option-value-input/option-value-input.component.d.ts +0 -0
- package/{catalog → package/catalog}/components/product-detail/product-detail.component.d.ts +0 -0
- package/package/catalog/components/product-list/product-list-bulk-actions.d.ts +6 -0
- package/package/catalog/components/product-list/product-list.component.d.ts +30 -0
- package/{catalog → package/catalog}/components/product-options-editor/product-options-editor.component.d.ts +0 -0
- package/package/catalog/components/product-variants-editor/product-variants-editor.component.d.ts +79 -0
- package/{catalog → package/catalog}/components/product-variants-list/product-variants-list.component.d.ts +0 -0
- package/{catalog → package/catalog}/components/product-variants-table/product-variants-table.component.d.ts +0 -0
- package/{catalog → package/catalog}/components/update-product-option-dialog/update-product-option-dialog.component.d.ts +0 -0
- package/{catalog → package/catalog}/components/variant-price-detail/variant-price-detail.component.d.ts +0 -0
- package/{catalog → package/catalog}/package.json +0 -0
- package/{catalog → package/catalog}/providers/product-detail/product-detail.service.d.ts +0 -0
- package/{catalog → package/catalog}/providers/product-detail/replace-last.d.ts +0 -0
- package/{catalog → package/catalog}/providers/routing/asset-resolver.d.ts +0 -0
- package/{catalog → package/catalog}/providers/routing/collection-resolver.d.ts +0 -0
- package/{catalog → package/catalog}/providers/routing/facet-resolver.d.ts +0 -0
- package/{catalog → package/catalog}/providers/routing/product-resolver.d.ts +0 -0
- package/{catalog → package/catalog}/providers/routing/product-variants-resolver.d.ts +0 -0
- package/package/catalog/public_api.d.ts +39 -0
- package/{catalog → package/catalog}/vendure-admin-ui-catalog.d.ts +0 -0
- package/package/catalog/vendure-admin-ui-catalog.metadata.json +1 -0
- package/{core → package/core}/app.component.d.ts +0 -0
- package/{core → package/core}/app.component.module.d.ts +0 -0
- package/{core → package/core}/app.config.d.ts +0 -0
- package/{core → package/core}/common/base-detail.component.d.ts +0 -0
- package/{core → package/core}/common/base-entity-resolver.d.ts +0 -0
- package/{core → package/core}/common/base-list.component.d.ts +0 -0
- package/package/core/common/component-registry-types.d.ts +56 -0
- package/{core → package/core}/common/deactivate-aware.d.ts +0 -0
- package/{core → package/core}/common/detail-breadcrumb.d.ts +0 -0
- package/package/core/common/generated-types.d.ts +9748 -0
- package/{core → package/core}/common/introspection-result-wrapper.d.ts +0 -0
- package/{core → package/core}/common/introspection-result.d.ts +0 -0
- package/{core → package/core}/common/single-search-selection-model.d.ts +0 -0
- package/package/core/common/utilities/bulk-action-utils.d.ts +19 -0
- package/{core → package/core}/common/utilities/configurable-operation-utils.d.ts +0 -0
- package/{core → package/core}/common/utilities/create-updated-translatable.d.ts +0 -0
- package/{core → package/core}/common/utilities/find-translation.d.ts +0 -0
- package/{core → package/core}/common/utilities/flatten-facet-values.d.ts +0 -0
- package/{core → package/core}/common/utilities/get-default-ui-language.d.ts +0 -0
- package/{core → package/core}/common/utilities/interpolate-description.d.ts +0 -0
- package/package/core/common/utilities/selection-manager.d.ts +30 -0
- package/{core → package/core}/common/utilities/string-to-color.d.ts +0 -0
- package/package/core/common/version.d.ts +1 -0
- package/{core → package/core}/components/app-shell/app-shell.component.d.ts +0 -0
- package/{core → package/core}/components/breadcrumb/breadcrumb.component.d.ts +0 -0
- package/{core → package/core}/components/channel-switcher/channel-switcher.component.d.ts +0 -0
- package/{core → package/core}/components/main-nav/main-nav.component.d.ts +0 -0
- package/{core → package/core}/components/notification/notification.component.d.ts +0 -0
- package/{core → package/core}/components/overlay-host/overlay-host.component.d.ts +0 -0
- package/{core → package/core}/components/theme-switcher/theme-switcher.component.d.ts +0 -0
- package/{core → package/core}/components/ui-language-switcher-dialog/ui-language-switcher-dialog.component.d.ts +0 -0
- package/{core → package/core}/components/user-menu/user-menu.component.d.ts +0 -0
- package/{core → package/core}/core.module.d.ts +0 -0
- package/{core → package/core}/data/check-jobs-link.d.ts +0 -0
- package/{core → package/core}/data/client-state/client-defaults.d.ts +0 -0
- package/{core → package/core}/data/client-state/client-resolvers.d.ts +0 -0
- package/{core → package/core}/data/data.module.d.ts +0 -0
- package/{core → package/core}/data/definitions/administrator-definitions.d.ts +0 -0
- package/{core → package/core}/data/definitions/auth-definitions.d.ts +0 -0
- package/{core → package/core}/data/definitions/client-definitions.d.ts +0 -0
- package/package/core/data/definitions/collection-definitions.d.ts +13 -0
- package/{core → package/core}/data/definitions/customer-definitions.d.ts +0 -0
- package/package/core/data/definitions/facet-definitions.d.ts +13 -0
- package/package/core/data/definitions/order-definitions.d.ts +39 -0
- package/package/core/data/definitions/product-definitions.d.ts +46 -0
- package/{core → package/core}/data/definitions/promotion-definitions.d.ts +0 -0
- package/{core → package/core}/data/definitions/settings-definitions.d.ts +0 -0
- package/{core → package/core}/data/definitions/shared-definitions.d.ts +0 -0
- package/{core → package/core}/data/definitions/shipping-definitions.d.ts +0 -0
- package/{core → package/core}/data/omit-typename-link.d.ts +0 -0
- package/{core → package/core}/data/providers/administrator-data.service.d.ts +0 -0
- package/{core → package/core}/data/providers/auth-data.service.d.ts +0 -0
- package/{core → package/core}/data/providers/base-data.service.d.ts +0 -0
- package/{core → package/core}/data/providers/client-data.service.d.ts +0 -0
- package/package/core/data/providers/collection-data.service.d.ts +28 -0
- package/{core → package/core}/data/providers/customer-data.service.d.ts +0 -0
- package/{core → package/core}/data/providers/data.service.d.ts +0 -0
- package/package/core/data/providers/facet-data.service.d.ts +24 -0
- package/{core → package/core}/data/providers/fetch-adapter.d.ts +0 -0
- package/{core → package/core}/data/providers/interceptor.d.ts +0 -0
- package/package/core/data/providers/order-data.service.d.ts +52 -0
- package/package/core/data/providers/product-data.service.d.ts +82 -0
- package/{core → package/core}/data/providers/promotion-data.service.d.ts +0 -0
- package/{core → package/core}/data/providers/settings-data.service.d.ts +0 -0
- package/{core → package/core}/data/providers/shipping-method-data.service.d.ts +0 -0
- package/{core → package/core}/data/query-result.d.ts +0 -0
- package/{core → package/core}/data/server-config.d.ts +0 -0
- package/{core → package/core}/data/utils/add-custom-fields.d.ts +0 -0
- package/{core → package/core}/data/utils/get-server-location.d.ts +0 -0
- package/{core → package/core}/data/utils/remove-readonly-custom-fields.d.ts +0 -0
- package/{core → package/core}/data/utils/transform-relation-custom-field-inputs.d.ts +0 -0
- package/{core → package/core}/package.json +0 -0
- package/{core → package/core}/providers/auth/auth.service.d.ts +0 -0
- package/package/core/providers/bulk-action-registry/bulk-action-registry.service.d.ts +6 -0
- package/package/core/providers/bulk-action-registry/bulk-action-types.d.ts +149 -0
- package/package/core/providers/bulk-action-registry/register-bulk-action.d.ts +53 -0
- package/{core → package/core}/providers/component-registry/component-registry.service.d.ts +0 -0
- package/{core → package/core}/providers/custom-detail-component/custom-detail-component-types.d.ts +0 -0
- package/{core → package/core}/providers/custom-detail-component/custom-detail-component.service.d.ts +0 -0
- package/{core → package/core}/providers/custom-field-component/custom-field-component.service.d.ts +0 -0
- package/{core → package/core}/providers/dashboard-widget/dashboard-widget-types.d.ts +0 -0
- package/{core → package/core}/providers/dashboard-widget/dashboard-widget.service.d.ts +0 -0
- package/{core → package/core}/providers/dashboard-widget/register-dashboard-widget.d.ts +0 -0
- package/{core → package/core}/providers/guard/auth.guard.d.ts +0 -0
- package/{core → package/core}/providers/health-check/health-check.service.d.ts +0 -0
- package/{core → package/core}/providers/i18n/custom-http-loader.d.ts +0 -0
- package/{core → package/core}/providers/i18n/custom-message-format-compiler.d.ts +0 -0
- package/{core → package/core}/providers/i18n/i18n.service.d.ts +0 -0
- package/{core → package/core}/providers/job-queue/job-queue.service.d.ts +0 -0
- package/{core → package/core}/providers/local-storage/local-storage.service.d.ts +0 -0
- package/package/core/providers/modal/modal.service.d.ts +134 -0
- package/package/core/providers/nav-builder/nav-builder-types.d.ts +92 -0
- package/{core → package/core}/providers/nav-builder/nav-builder.service.d.ts +0 -0
- package/{core → package/core}/providers/notification/notification.service.d.ts +0 -0
- package/{core → package/core}/providers/overlay-host/overlay-host.service.d.ts +0 -0
- package/package/core/public_api.d.ts +239 -0
- package/{core → package/core}/shared/components/action-bar/action-bar.component.d.ts +0 -0
- package/{core → package/core}/shared/components/action-bar-items/action-bar-items.component.d.ts +0 -0
- package/{core → package/core}/shared/components/address-form/address-form.component.d.ts +0 -0
- package/{core → package/core}/shared/components/affixed-input/affixed-input.component.d.ts +0 -0
- package/{core → package/core}/shared/components/affixed-input/percentage-suffix-input.component.d.ts +0 -0
- package/{core → package/core}/shared/components/asset-file-input/asset-file-input.component.d.ts +0 -0
- package/package/core/shared/components/asset-gallery/asset-gallery.component.d.ts +67 -0
- package/{core → package/core}/shared/components/asset-picker-dialog/asset-picker-dialog.component.d.ts +0 -0
- package/{core → package/core}/shared/components/asset-preview/asset-preview.component.d.ts +0 -0
- package/{core → package/core}/shared/components/asset-preview-dialog/asset-preview-dialog.component.d.ts +0 -0
- package/{core → package/core}/shared/components/asset-preview-links/asset-preview-links.component.d.ts +0 -0
- package/{core → package/core}/shared/components/asset-search-input/asset-search-input.component.d.ts +0 -0
- package/package/core/shared/components/bulk-action-menu/bulk-action-menu.component.d.ts +29 -0
- package/{core → package/core}/shared/components/channel-assignment-control/channel-assignment-control.component.d.ts +0 -0
- package/{core → package/core}/shared/components/channel-badge/channel-badge.component.d.ts +0 -0
- package/{core → package/core}/shared/components/chip/chip.component.d.ts +0 -0
- package/{core → package/core}/shared/components/configurable-input/configurable-input.component.d.ts +0 -0
- package/{core → package/core}/shared/components/currency-input/currency-input.component.d.ts +0 -0
- package/{core → package/core}/shared/components/custom-detail-component-host/custom-detail-component-host.component.d.ts +0 -0
- package/{core → package/core}/shared/components/custom-field-control/custom-field-control.component.d.ts +0 -0
- package/{core → package/core}/shared/components/customer-label/customer-label.component.d.ts +0 -0
- package/{core → package/core}/shared/components/data-table/data-table-column.component.d.ts +0 -0
- package/package/core/shared/components/data-table/data-table.component.d.ts +101 -0
- package/{core → package/core}/shared/components/datetime-picker/constants.d.ts +0 -0
- package/{core → package/core}/shared/components/datetime-picker/datetime-picker.component.d.ts +0 -0
- package/{core → package/core}/shared/components/datetime-picker/datetime-picker.service.d.ts +0 -0
- package/{core → package/core}/shared/components/datetime-picker/types.d.ts +0 -0
- package/{core → package/core}/shared/components/dropdown/dropdown-item.directive.d.ts +0 -0
- package/package/core/shared/components/dropdown/dropdown-menu.component.d.ts +31 -0
- package/{core → package/core}/shared/components/dropdown/dropdown-trigger.directive.d.ts +0 -0
- package/{core → package/core}/shared/components/dropdown/dropdown.component.d.ts +0 -0
- package/{core → package/core}/shared/components/edit-note-dialog/edit-note-dialog.component.d.ts +0 -0
- package/{core → package/core}/shared/components/empty-placeholder/empty-placeholder.component.d.ts +0 -0
- package/{core → package/core}/shared/components/entity-info/entity-info.component.d.ts +0 -0
- package/{core → package/core}/shared/components/extension-host/extension-host-config.d.ts +0 -0
- package/{core → package/core}/shared/components/extension-host/extension-host.component.d.ts +0 -0
- package/{core → package/core}/shared/components/extension-host/extension-host.service.d.ts +0 -0
- package/{core → package/core}/shared/components/extension-host/host-external-frame.d.ts +0 -0
- package/{core → package/core}/shared/components/facet-value-chip/facet-value-chip.component.d.ts +0 -0
- package/{core → package/core}/shared/components/facet-value-selector/facet-value-selector.component.d.ts +0 -0
- package/{core → package/core}/shared/components/focal-point-control/focal-point-control.component.d.ts +0 -0
- package/{core → package/core}/shared/components/form-field/form-field-control.directive.d.ts +0 -0
- package/{core → package/core}/shared/components/form-field/form-field.component.d.ts +0 -0
- package/{core → package/core}/shared/components/form-item/form-item.component.d.ts +0 -0
- package/{core → package/core}/shared/components/formatted-address/formatted-address.component.d.ts +0 -0
- package/{core → package/core}/shared/components/help-tooltip/help-tooltip.component.d.ts +0 -0
- package/{core → package/core}/shared/components/history-entry-detail/history-entry-detail.component.d.ts +0 -0
- package/{core → package/core}/shared/components/items-per-page-controls/items-per-page-controls.component.d.ts +0 -0
- package/{core → package/core}/shared/components/labeled-data/labeled-data.component.d.ts +0 -0
- package/{core → package/core}/shared/components/language-selector/language-selector.component.d.ts +0 -0
- package/{core → package/core}/shared/components/manage-tags-dialog/manage-tags-dialog.component.d.ts +0 -0
- package/{core → package/core}/shared/components/modal-dialog/dialog-buttons.directive.d.ts +0 -0
- package/{core → package/core}/shared/components/modal-dialog/dialog-component-outlet.component.d.ts +0 -0
- package/{core → package/core}/shared/components/modal-dialog/dialog-title.directive.d.ts +0 -0
- package/{core → package/core}/shared/components/modal-dialog/modal-dialog.component.d.ts +0 -0
- package/{core → package/core}/shared/components/object-tree/object-tree.component.d.ts +0 -0
- package/{core → package/core}/shared/components/order-state-label/order-state-label.component.d.ts +0 -0
- package/{core → package/core}/shared/components/pagination-controls/pagination-controls.component.d.ts +0 -0
- package/{core → package/core}/shared/components/product-multi-selector-dialog/product-multi-selector-dialog.component.d.ts +0 -0
- package/{core → package/core}/shared/components/product-search-input/product-search-input.component.d.ts +0 -0
- package/{core → package/core}/shared/components/product-selector/product-selector.component.d.ts +0 -0
- package/package/core/shared/components/radio-card/radio-card-fieldset.component.d.ts +21 -0
- package/package/core/shared/components/radio-card/radio-card.component.d.ts +19 -0
- package/{core → package/core}/shared/components/rich-text-editor/external-image-dialog/external-image-dialog.component.d.ts +0 -0
- package/{core → package/core}/shared/components/rich-text-editor/link-dialog/link-dialog.component.d.ts +0 -0
- package/package/core/shared/components/rich-text-editor/prosemirror/context-menu/context-menu.component.d.ts +28 -0
- package/package/core/shared/components/rich-text-editor/prosemirror/context-menu/context-menu.service.d.ts +31 -0
- package/package/core/shared/components/rich-text-editor/prosemirror/custom-nodes.d.ts +4 -0
- package/package/core/shared/components/rich-text-editor/prosemirror/inputrules.d.ts +8 -0
- package/{core → package/core}/shared/components/rich-text-editor/prosemirror/keymap.d.ts +0 -0
- package/package/core/shared/components/rich-text-editor/prosemirror/menu/links.d.ts +4 -0
- package/package/core/shared/components/rich-text-editor/prosemirror/menu/menu-common.d.ts +16 -0
- package/package/core/shared/components/rich-text-editor/prosemirror/menu/menu-plugin.d.ts +9 -0
- package/{core → package/core}/shared/components/rich-text-editor/prosemirror/menu/menu.d.ts +0 -0
- package/package/core/shared/components/rich-text-editor/prosemirror/menu/sub-menu-with-icon.d.ts +14 -0
- package/package/core/shared/components/rich-text-editor/prosemirror/plugins/image-plugin.d.ts +7 -0
- package/package/core/shared/components/rich-text-editor/prosemirror/plugins/link-select-plugin.d.ts +5 -0
- package/package/core/shared/components/rich-text-editor/prosemirror/plugins/raw-editor-plugin.d.ts +7 -0
- package/package/core/shared/components/rich-text-editor/prosemirror/plugins/tables-plugin.d.ts +13 -0
- package/package/core/shared/components/rich-text-editor/prosemirror/prosemirror.service.d.ts +25 -0
- package/package/core/shared/components/rich-text-editor/prosemirror/types.d.ts +9 -0
- package/{core → package/core}/shared/components/rich-text-editor/prosemirror/utils.d.ts +0 -0
- package/package/core/shared/components/rich-text-editor/raw-html-dialog/raw-html-dialog.component.d.ts +18 -0
- package/package/core/shared/components/rich-text-editor/rich-text-editor.component.d.ts +39 -0
- package/{core → package/core}/shared/components/select-toggle/select-toggle.component.d.ts +0 -0
- package/{core → package/core}/shared/components/simple-dialog/simple-dialog.component.d.ts +0 -0
- package/{core → package/core}/shared/components/status-badge/status-badge.component.d.ts +0 -0
- package/{core → package/core}/shared/components/tabbed-custom-fields/tabbed-custom-fields.component.d.ts +0 -0
- package/{core → package/core}/shared/components/table-row-action/table-row-action.component.d.ts +0 -0
- package/{core → package/core}/shared/components/tag-selector/tag-selector.component.d.ts +0 -0
- package/{core → package/core}/shared/components/timeline-entry/timeline-entry.component.d.ts +0 -0
- package/{core → package/core}/shared/components/title-input/title-input.component.d.ts +0 -0
- package/{core → package/core}/shared/components/ui-extension-point/ui-extension-point.component.d.ts +0 -0
- package/{core → package/core}/shared/directives/disabled.directive.d.ts +0 -0
- package/{core → package/core}/shared/directives/if-default-channel-active.directive.d.ts +0 -0
- package/{core → package/core}/shared/directives/if-directive-base.d.ts +0 -0
- package/{core → package/core}/shared/directives/if-multichannel.directive.d.ts +0 -0
- package/{core → package/core}/shared/directives/if-permissions.directive.d.ts +0 -0
- package/{core → package/core}/shared/dynamic-form-inputs/boolean-form-input/boolean-form-input.component.d.ts +0 -0
- package/package/core/shared/dynamic-form-inputs/code-editor-form-input/base-code-editor-form-input.component.d.ts +27 -0
- package/package/core/shared/dynamic-form-inputs/code-editor-form-input/html-editor-form-input.component.d.ts +19 -0
- package/package/core/shared/dynamic-form-inputs/code-editor-form-input/json-editor-form-input.component.d.ts +20 -0
- package/{core → package/core}/shared/dynamic-form-inputs/combination-mode-form-input/combination-mode-form-input.component.d.ts +0 -0
- package/{core → package/core}/shared/dynamic-form-inputs/currency-form-input/currency-form-input.component.d.ts +0 -0
- package/{core → package/core}/shared/dynamic-form-inputs/customer-group-form-input/customer-group-form-input.component.d.ts +0 -0
- package/{core → package/core}/shared/dynamic-form-inputs/date-form-input/date-form-input.component.d.ts +0 -0
- package/{core → package/core}/shared/dynamic-form-inputs/dynamic-form-input/dynamic-form-input.component.d.ts +0 -0
- package/{core → package/core}/shared/dynamic-form-inputs/facet-value-form-input/facet-value-form-input.component.d.ts +0 -0
- package/{core → package/core}/shared/dynamic-form-inputs/number-form-input/number-form-input.component.d.ts +0 -0
- package/{core → package/core}/shared/dynamic-form-inputs/password-form-input/password-form-input.component.d.ts +0 -0
- package/{core → package/core}/shared/dynamic-form-inputs/product-multi-selector-form-input/product-multi-selector-form-input.component.d.ts +0 -0
- package/{core → package/core}/shared/dynamic-form-inputs/product-selector-form-input/product-selector-form-input.component.d.ts +0 -0
- package/package/core/shared/dynamic-form-inputs/register-dynamic-input-components.d.ts +90 -0
- package/{core → package/core}/shared/dynamic-form-inputs/relation-form-input/asset/relation-asset-input.component.d.ts +0 -0
- package/{core → package/core}/shared/dynamic-form-inputs/relation-form-input/customer/relation-customer-input.component.d.ts +0 -0
- package/{core → package/core}/shared/dynamic-form-inputs/relation-form-input/generic/relation-generic-input.component.d.ts +0 -0
- package/{core → package/core}/shared/dynamic-form-inputs/relation-form-input/product/relation-product-input.component.d.ts +0 -0
- package/{core → package/core}/shared/dynamic-form-inputs/relation-form-input/product-variant/relation-product-variant-input.component.d.ts +0 -0
- package/{core → package/core}/shared/dynamic-form-inputs/relation-form-input/relation-card/relation-card.component.d.ts +0 -0
- package/{core → package/core}/shared/dynamic-form-inputs/relation-form-input/relation-form-input.component.d.ts +0 -0
- package/{core → package/core}/shared/dynamic-form-inputs/relation-form-input/relation-selector-dialog/relation-selector-dialog.component.d.ts +0 -0
- package/{core → package/core}/shared/dynamic-form-inputs/rich-text-form-input/rich-text-form-input.component.d.ts +0 -0
- package/{core → package/core}/shared/dynamic-form-inputs/select-form-input/select-form-input.component.d.ts +0 -0
- package/{core → package/core}/shared/dynamic-form-inputs/text-form-input/text-form-input.component.d.ts +0 -0
- package/{core → package/core}/shared/dynamic-form-inputs/textarea-form-input/textarea-form-input.component.d.ts +0 -0
- package/{core → package/core}/shared/pipes/asset-preview.pipe.d.ts +0 -0
- package/{core → package/core}/shared/pipes/channel-label.pipe.d.ts +0 -0
- package/{core → package/core}/shared/pipes/custom-field-label.pipe.d.ts +0 -0
- package/{core → package/core}/shared/pipes/duration.pipe.d.ts +0 -0
- package/{core → package/core}/shared/pipes/file-size.pipe.d.ts +0 -0
- package/{core → package/core}/shared/pipes/has-permission.pipe.d.ts +0 -0
- package/{core → package/core}/shared/pipes/locale-base.pipe.d.ts +0 -0
- package/{core → package/core}/shared/pipes/locale-currency-name.pipe.d.ts +0 -0
- package/{core → package/core}/shared/pipes/locale-currency.pipe.d.ts +0 -0
- package/{core → package/core}/shared/pipes/locale-date.pipe.d.ts +0 -0
- package/{core → package/core}/shared/pipes/locale-language-name.pipe.d.ts +0 -0
- package/{core → package/core}/shared/pipes/locale-region-name.pipe.d.ts +0 -0
- package/{core → package/core}/shared/pipes/sentence-case.pipe.d.ts +0 -0
- package/{core → package/core}/shared/pipes/sort.pipe.d.ts +0 -0
- package/{core → package/core}/shared/pipes/state-i18n-token.pipe.d.ts +0 -0
- package/{core → package/core}/shared/pipes/string-to-color.pipe.d.ts +0 -0
- package/{core → package/core}/shared/pipes/time-ago.pipe.d.ts +0 -0
- package/{core → package/core}/shared/providers/routing/can-deactivate-detail-guard.d.ts +0 -0
- package/{core → package/core}/shared/shared.module.d.ts +0 -0
- package/{core → package/core}/validators/unicode-pattern.validator.d.ts +0 -0
- package/{core → package/core}/vendure-admin-ui-core.d.ts +0 -0
- package/package/core/vendure-admin-ui-core.metadata.json +1 -0
- package/{customer → package/customer}/components/add-customer-to-group-dialog/add-customer-to-group-dialog.component.d.ts +0 -0
- package/{customer → package/customer}/components/address-card/address-card.component.d.ts +0 -0
- package/{customer → package/customer}/components/address-detail-dialog/address-detail-dialog.component.d.ts +0 -0
- package/{customer → package/customer}/components/customer-detail/customer-detail.component.d.ts +0 -0
- package/{customer → package/customer}/components/customer-group-detail-dialog/customer-group-detail-dialog.component.d.ts +0 -0
- package/{customer → package/customer}/components/customer-group-list/customer-group-list.component.d.ts +0 -0
- package/package/customer/components/customer-group-member-list/customer-group-member-list.component.d.ts +44 -0
- package/{customer → package/customer}/components/customer-history/customer-history.component.d.ts +0 -0
- package/{customer → package/customer}/components/customer-list/customer-list.component.d.ts +0 -0
- package/{customer → package/customer}/components/customer-status-label/customer-status-label.component.d.ts +0 -0
- package/{customer → package/customer}/components/select-customer-group-dialog/select-customer-group-dialog.component.d.ts +0 -0
- package/{customer → package/customer}/customer.module.d.ts +0 -0
- package/{customer → package/customer}/customer.routes.d.ts +0 -0
- package/{customer → package/customer}/package.json +0 -0
- package/{customer → package/customer}/providers/routing/customer-resolver.d.ts +0 -0
- package/{customer → package/customer}/public_api.d.ts +0 -0
- package/{customer → package/customer}/vendure-admin-ui-customer.d.ts +0 -0
- package/package/customer/vendure-admin-ui-customer.metadata.json +1 -0
- package/{dashboard → package/dashboard}/components/dashboard/dashboard.component.d.ts +0 -0
- package/{dashboard → package/dashboard}/components/dashboard-widget/dashboard-widget.component.d.ts +0 -0
- package/{dashboard → package/dashboard}/dashboard.module.d.ts +0 -0
- package/{dashboard → package/dashboard}/dashboard.routes.d.ts +0 -0
- package/{dashboard → package/dashboard}/default-widgets.d.ts +0 -0
- package/{dashboard → package/dashboard}/package.json +0 -0
- package/{dashboard → package/dashboard}/public_api.d.ts +0 -0
- package/{dashboard → package/dashboard}/vendure-admin-ui-dashboard.d.ts +0 -0
- package/{dashboard → package/dashboard}/vendure-admin-ui-dashboard.metadata.json +0 -0
- package/{dashboard → package/dashboard}/widgets/latest-orders-widget/latest-orders-widget.component.d.ts +0 -0
- package/{dashboard → package/dashboard}/widgets/order-summary-widget/order-summary-widget.component.d.ts +0 -0
- package/{dashboard → package/dashboard}/widgets/test-widget/test-widget.component.d.ts +0 -0
- package/{dashboard → package/dashboard}/widgets/welcome-widget/welcome-widget.component.d.ts +0 -0
- package/package/esm2015/catalog/catalog.module.js +85 -0
- package/{esm2015 → package/esm2015}/catalog/catalog.routes.js +0 -0
- package/{esm2015 → package/esm2015}/catalog/components/apply-facet-dialog/apply-facet-dialog.component.js +0 -0
- package/{esm2015 → package/esm2015}/catalog/components/asset-detail/asset-detail.component.js +0 -0
- package/{esm2015 → package/esm2015}/catalog/components/asset-list/asset-list.component.js +0 -0
- package/{esm2015 → package/esm2015}/catalog/components/assets/assets.component.js +0 -0
- package/package/esm2015/catalog/components/assign-products-to-channel-dialog/assign-products-to-channel-dialog.component.js +112 -0
- package/package/esm2015/catalog/components/assign-to-channel-dialog/assign-to-channel-dialog.component.js +51 -0
- package/package/esm2015/catalog/components/bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.component.js +89 -0
- package/package/esm2015/catalog/components/bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.graphql.js +69 -0
- package/{esm2015 → package/esm2015}/catalog/components/collection-contents/collection-contents.component.js +0 -0
- package/package/esm2015/catalog/components/collection-detail/collection-detail.component.js +244 -0
- package/package/esm2015/catalog/components/collection-list/collection-list-bulk-actions.js +147 -0
- package/package/esm2015/catalog/components/collection-list/collection-list.component.js +154 -0
- package/{esm2015 → package/esm2015}/catalog/components/collection-tree/array-to-tree.js +0 -0
- package/package/esm2015/catalog/components/collection-tree/collection-tree-node.component.js +126 -0
- package/package/esm2015/catalog/components/collection-tree/collection-tree.component.js +77 -0
- package/{esm2015 → package/esm2015}/catalog/components/confirm-variant-deletion-dialog/confirm-variant-deletion-dialog.component.js +0 -0
- package/{esm2015 → package/esm2015}/catalog/components/facet-detail/facet-detail.component.js +0 -0
- package/package/esm2015/catalog/components/facet-list/facet-list-bulk-actions.js +208 -0
- package/package/esm2015/catalog/components/facet-list/facet-list.component.js +116 -0
- package/{esm2015 → package/esm2015}/catalog/components/generate-product-variants/generate-product-variants.component.js +0 -0
- package/{esm2015 → package/esm2015}/catalog/components/option-value-input/option-value-input.component.js +0 -0
- package/package/esm2015/catalog/components/product-detail/product-detail.component.js +527 -0
- package/package/esm2015/catalog/components/product-list/product-list-bulk-actions.js +173 -0
- package/package/esm2015/catalog/components/product-list/product-list.component.js +158 -0
- package/{esm2015 → package/esm2015}/catalog/components/product-options-editor/product-options-editor.component.js +0 -0
- package/package/esm2015/catalog/components/product-variants-editor/product-variants-editor.component.js +429 -0
- package/package/esm2015/catalog/components/product-variants-list/product-variants-list.component.js +214 -0
- package/{esm2015 → package/esm2015}/catalog/components/product-variants-table/product-variants-table.component.js +0 -0
- package/{esm2015 → package/esm2015}/catalog/components/update-product-option-dialog/update-product-option-dialog.component.js +0 -0
- package/{esm2015 → package/esm2015}/catalog/components/variant-price-detail/variant-price-detail.component.js +0 -0
- package/{esm2015 → package/esm2015}/catalog/providers/product-detail/product-detail.service.js +0 -0
- package/{esm2015 → package/esm2015}/catalog/providers/product-detail/replace-last.js +0 -0
- package/{esm2015 → package/esm2015}/catalog/providers/routing/asset-resolver.js +0 -0
- package/package/esm2015/catalog/providers/routing/collection-resolver.js +39 -0
- package/{esm2015 → package/esm2015}/catalog/providers/routing/facet-resolver.js +0 -0
- package/{esm2015 → package/esm2015}/catalog/providers/routing/product-resolver.js +0 -0
- package/{esm2015 → package/esm2015}/catalog/providers/routing/product-variants-resolver.js +0 -0
- package/package/esm2015/catalog/public_api.js +41 -0
- package/{esm2015 → package/esm2015}/catalog/vendure-admin-ui-catalog.js +0 -0
- package/{esm2015 → package/esm2015}/core/app.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/app.component.module.js +0 -0
- package/{esm2015 → package/esm2015}/core/app.config.js +0 -0
- package/{esm2015 → package/esm2015}/core/common/base-detail.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/common/base-entity-resolver.js +0 -0
- package/{esm2015 → package/esm2015}/core/common/base-list.component.js +0 -0
- package/package/esm2015/core/common/component-registry-types.js +2 -0
- package/{esm2015 → package/esm2015}/core/common/deactivate-aware.js +0 -0
- package/{esm2015 → package/esm2015}/core/common/detail-breadcrumb.js +0 -0
- package/package/esm2015/core/common/generated-types.js +987 -0
- package/{esm2015 → package/esm2015}/core/common/introspection-result-wrapper.js +0 -0
- package/package/esm2015/core/common/introspection-result.js +300 -0
- package/{esm2015 → package/esm2015}/core/common/single-search-selection-model.js +0 -0
- package/package/esm2015/core/common/utilities/bulk-action-utils.js +44 -0
- package/package/esm2015/core/common/utilities/configurable-operation-utils.js +105 -0
- package/{esm2015 → package/esm2015}/core/common/utilities/create-updated-translatable.js +0 -0
- package/{esm2015 → package/esm2015}/core/common/utilities/find-translation.js +0 -0
- package/{esm2015 → package/esm2015}/core/common/utilities/flatten-facet-values.js +0 -0
- package/{esm2015 → package/esm2015}/core/common/utilities/get-default-ui-language.js +0 -0
- package/{esm2015 → package/esm2015}/core/common/utilities/interpolate-description.js +0 -0
- package/package/esm2015/core/common/utilities/selection-manager.js +96 -0
- package/{esm2015 → package/esm2015}/core/common/utilities/string-to-color.js +0 -0
- package/package/esm2015/core/common/version.js +3 -0
- package/{esm2015 → package/esm2015}/core/components/app-shell/app-shell.component.js +0 -0
- package/package/esm2015/core/components/breadcrumb/breadcrumb.component.js +126 -0
- package/{esm2015 → package/esm2015}/core/components/channel-switcher/channel-switcher.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/components/main-nav/main-nav.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/components/notification/notification.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/components/overlay-host/overlay-host.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/components/theme-switcher/theme-switcher.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/components/ui-language-switcher-dialog/ui-language-switcher-dialog.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/components/user-menu/user-menu.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/core.module.js +0 -0
- package/{esm2015 → package/esm2015}/core/data/check-jobs-link.js +0 -0
- package/{esm2015 → package/esm2015}/core/data/client-state/client-defaults.js +0 -0
- package/{esm2015 → package/esm2015}/core/data/client-state/client-resolvers.js +0 -0
- package/{esm2015 → package/esm2015}/core/data/data.module.js +0 -0
- package/{esm2015 → package/esm2015}/core/data/definitions/administrator-definitions.js +0 -0
- package/{esm2015 → package/esm2015}/core/data/definitions/auth-definitions.js +0 -0
- package/{esm2015 → package/esm2015}/core/data/definitions/client-definitions.js +0 -0
- package/package/esm2015/core/data/definitions/collection-definitions.js +173 -0
- package/{esm2015 → package/esm2015}/core/data/definitions/customer-definitions.js +0 -0
- package/package/esm2015/core/data/definitions/facet-definitions.js +140 -0
- package/package/esm2015/core/data/definitions/order-definitions.js +585 -0
- package/package/esm2015/core/data/definitions/product-definitions.js +759 -0
- package/{esm2015 → package/esm2015}/core/data/definitions/promotion-definitions.js +0 -0
- package/{esm2015 → package/esm2015}/core/data/definitions/settings-definitions.js +0 -0
- package/{esm2015 → package/esm2015}/core/data/definitions/shared-definitions.js +0 -0
- package/{esm2015 → package/esm2015}/core/data/definitions/shipping-definitions.js +0 -0
- package/{esm2015 → package/esm2015}/core/data/omit-typename-link.js +0 -0
- package/{esm2015 → package/esm2015}/core/data/providers/administrator-data.service.js +0 -0
- package/{esm2015 → package/esm2015}/core/data/providers/auth-data.service.js +0 -0
- package/{esm2015 → package/esm2015}/core/data/providers/base-data.service.js +0 -0
- package/{esm2015 → package/esm2015}/core/data/providers/client-data.service.js +0 -0
- package/package/esm2015/core/data/providers/collection-data.service.js +90 -0
- package/package/esm2015/core/data/providers/customer-data.service.js +121 -0
- package/{esm2015 → package/esm2015}/core/data/providers/data.service.js +0 -0
- package/package/esm2015/core/data/providers/facet-data.service.js +76 -0
- package/{esm2015 → package/esm2015}/core/data/providers/fetch-adapter.js +0 -0
- package/{esm2015 → package/esm2015}/core/data/providers/interceptor.js +0 -0
- package/package/esm2015/core/data/providers/order-data.service.js +139 -0
- package/package/esm2015/core/data/providers/product-data.service.js +240 -0
- package/{esm2015 → package/esm2015}/core/data/providers/promotion-data.service.js +0 -0
- package/{esm2015 → package/esm2015}/core/data/providers/settings-data.service.js +0 -0
- package/{esm2015 → package/esm2015}/core/data/providers/shipping-method-data.service.js +0 -0
- package/{esm2015 → package/esm2015}/core/data/query-result.js +0 -0
- package/{esm2015 → package/esm2015}/core/data/server-config.js +0 -0
- package/{esm2015 → package/esm2015}/core/data/utils/add-custom-fields.js +0 -0
- package/{esm2015 → package/esm2015}/core/data/utils/get-server-location.js +0 -0
- package/package/esm2015/core/data/utils/remove-readonly-custom-fields.js +95 -0
- package/{esm2015 → package/esm2015}/core/data/utils/transform-relation-custom-field-inputs.js +0 -0
- package/{esm2015 → package/esm2015}/core/providers/auth/auth.service.js +0 -0
- package/package/esm2015/core/providers/bulk-action-registry/bulk-action-registry.service.js +27 -0
- package/package/esm2015/core/providers/bulk-action-registry/bulk-action-types.js +2 -0
- package/package/esm2015/core/providers/bulk-action-registry/register-bulk-action.js +63 -0
- package/{esm2015 → package/esm2015}/core/providers/component-registry/component-registry.service.js +0 -0
- package/{esm2015 → package/esm2015}/core/providers/custom-detail-component/custom-detail-component-types.js +0 -0
- package/{esm2015 → package/esm2015}/core/providers/custom-detail-component/custom-detail-component.service.js +0 -0
- package/{esm2015 → package/esm2015}/core/providers/custom-field-component/custom-field-component.service.js +0 -0
- package/{esm2015 → package/esm2015}/core/providers/dashboard-widget/dashboard-widget-types.js +0 -0
- package/package/esm2015/core/providers/dashboard-widget/dashboard-widget.service.js +94 -0
- package/{esm2015 → package/esm2015}/core/providers/dashboard-widget/register-dashboard-widget.js +0 -0
- package/{esm2015 → package/esm2015}/core/providers/guard/auth.guard.js +0 -0
- package/{esm2015 → package/esm2015}/core/providers/health-check/health-check.service.js +0 -0
- package/{esm2015 → package/esm2015}/core/providers/i18n/custom-http-loader.js +0 -0
- package/{esm2015 → package/esm2015}/core/providers/i18n/custom-message-format-compiler.js +0 -0
- package/{esm2015 → package/esm2015}/core/providers/i18n/i18n.service.js +0 -0
- package/{esm2015 → package/esm2015}/core/providers/job-queue/job-queue.service.js +0 -0
- package/{esm2015 → package/esm2015}/core/providers/local-storage/local-storage.service.js +0 -0
- package/package/esm2015/core/providers/modal/modal.service.js +101 -0
- package/package/esm2015/core/providers/nav-builder/nav-builder-types.js +2 -0
- package/{esm2015 → package/esm2015}/core/providers/nav-builder/nav-builder.service.js +0 -0
- package/{esm2015 → package/esm2015}/core/providers/notification/notification.service.js +0 -0
- package/{esm2015 → package/esm2015}/core/providers/overlay-host/overlay-host.service.js +0 -0
- package/package/esm2015/core/public_api.js +241 -0
- package/package/esm2015/core/shared/components/action-bar/action-bar.component.js +43 -0
- package/{esm2015 → package/esm2015}/core/shared/components/action-bar-items/action-bar-items.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/address-form/address-form.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/affixed-input/affixed-input.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/affixed-input/percentage-suffix-input.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/asset-file-input/asset-file-input.component.js +0 -0
- package/package/esm2015/core/shared/components/asset-gallery/asset-gallery.component.js +84 -0
- package/{esm2015 → package/esm2015}/core/shared/components/asset-picker-dialog/asset-picker-dialog.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/asset-preview/asset-preview.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/asset-preview-dialog/asset-preview-dialog.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/asset-preview-links/asset-preview-links.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/asset-search-input/asset-search-input.component.js +0 -0
- package/package/esm2015/core/shared/components/bulk-action-menu/bulk-action-menu.component.js +99 -0
- package/{esm2015 → package/esm2015}/core/shared/components/channel-assignment-control/channel-assignment-control.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/channel-badge/channel-badge.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/chip/chip.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/configurable-input/configurable-input.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/currency-input/currency-input.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/custom-detail-component-host/custom-detail-component-host.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/custom-field-control/custom-field-control.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/customer-label/customer-label.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/data-table/data-table-column.component.js +0 -0
- package/package/esm2015/core/shared/components/data-table/data-table.component.js +162 -0
- package/{esm2015 → package/esm2015}/core/shared/components/datetime-picker/constants.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/datetime-picker/datetime-picker.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/datetime-picker/datetime-picker.service.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/datetime-picker/types.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/dropdown/dropdown-item.directive.js +0 -0
- package/package/esm2015/core/shared/components/dropdown/dropdown-menu.component.js +122 -0
- package/{esm2015 → package/esm2015}/core/shared/components/dropdown/dropdown-trigger.directive.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/dropdown/dropdown.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/edit-note-dialog/edit-note-dialog.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/empty-placeholder/empty-placeholder.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/entity-info/entity-info.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/extension-host/extension-host-config.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/extension-host/extension-host.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/extension-host/extension-host.service.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/extension-host/host-external-frame.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/facet-value-chip/facet-value-chip.component.js +0 -0
- package/package/esm2015/core/shared/components/facet-value-selector/facet-value-selector.component.js +117 -0
- package/{esm2015 → package/esm2015}/core/shared/components/focal-point-control/focal-point-control.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/form-field/form-field-control.directive.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/form-field/form-field.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/form-item/form-item.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/formatted-address/formatted-address.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/help-tooltip/help-tooltip.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/history-entry-detail/history-entry-detail.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/items-per-page-controls/items-per-page-controls.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/labeled-data/labeled-data.component.js +0 -0
- package/package/esm2015/core/shared/components/language-selector/language-selector.component.js +21 -0
- package/{esm2015 → package/esm2015}/core/shared/components/manage-tags-dialog/manage-tags-dialog.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/modal-dialog/dialog-buttons.directive.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/modal-dialog/dialog-component-outlet.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/modal-dialog/dialog-title.directive.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/modal-dialog/modal-dialog.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/object-tree/object-tree.component.js +0 -0
- package/package/esm2015/core/shared/components/order-state-label/order-state-label.component.js +44 -0
- package/{esm2015 → package/esm2015}/core/shared/components/pagination-controls/pagination-controls.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/product-multi-selector-dialog/product-multi-selector-dialog.component.js +0 -0
- package/package/esm2015/core/shared/components/product-search-input/product-search-input.component.js +104 -0
- package/package/esm2015/core/shared/components/product-selector/product-selector.component.js +61 -0
- package/package/esm2015/core/shared/components/radio-card/radio-card-fieldset.component.js +57 -0
- package/package/esm2015/core/shared/components/radio-card/radio-card.component.js +54 -0
- package/package/esm2015/core/shared/components/rich-text-editor/external-image-dialog/external-image-dialog.component.js +32 -0
- package/{esm2015 → package/esm2015}/core/shared/components/rich-text-editor/link-dialog/link-dialog.component.js +0 -0
- package/package/esm2015/core/shared/components/rich-text-editor/prosemirror/context-menu/context-menu.component.js +140 -0
- package/package/esm2015/core/shared/components/rich-text-editor/prosemirror/context-menu/context-menu.service.js +45 -0
- package/package/esm2015/core/shared/components/rich-text-editor/prosemirror/custom-nodes.js +60 -0
- package/{esm2015 → package/esm2015}/core/shared/components/rich-text-editor/prosemirror/inputrules.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/rich-text-editor/prosemirror/keymap.js +0 -0
- package/package/esm2015/core/shared/components/rich-text-editor/prosemirror/menu/links.js +69 -0
- package/package/esm2015/core/shared/components/rich-text-editor/prosemirror/menu/menu-common.js +42 -0
- package/package/esm2015/core/shared/components/rich-text-editor/prosemirror/menu/menu-plugin.js +12 -0
- package/package/esm2015/core/shared/components/rich-text-editor/prosemirror/menu/menu.js +247 -0
- package/package/esm2015/core/shared/components/rich-text-editor/prosemirror/menu/sub-menu-with-icon.js +16 -0
- package/package/esm2015/core/shared/components/rich-text-editor/prosemirror/plugins/image-plugin.js +100 -0
- package/{esm2015 → package/esm2015}/core/shared/components/rich-text-editor/prosemirror/plugins/link-select-plugin.js +0 -0
- package/package/esm2015/core/shared/components/rich-text-editor/prosemirror/plugins/raw-editor-plugin.js +97 -0
- package/package/esm2015/core/shared/components/rich-text-editor/prosemirror/plugins/tables-plugin.js +166 -0
- package/package/esm2015/core/shared/components/rich-text-editor/prosemirror/prosemirror.service.js +142 -0
- package/package/esm2015/core/shared/components/rich-text-editor/prosemirror/types.js +2 -0
- package/{esm2015 → package/esm2015}/core/shared/components/rich-text-editor/prosemirror/utils.js +0 -0
- package/package/esm2015/core/shared/components/rich-text-editor/raw-html-dialog/raw-html-dialog.component.js +57 -0
- package/package/esm2015/core/shared/components/rich-text-editor/rich-text-editor.component.js +97 -0
- package/{esm2015 → package/esm2015}/core/shared/components/select-toggle/select-toggle.component.js +0 -0
- package/package/esm2015/core/shared/components/simple-dialog/simple-dialog.component.js +21 -0
- package/{esm2015 → package/esm2015}/core/shared/components/status-badge/status-badge.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/tabbed-custom-fields/tabbed-custom-fields.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/table-row-action/table-row-action.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/tag-selector/tag-selector.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/timeline-entry/timeline-entry.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/title-input/title-input.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/components/ui-extension-point/ui-extension-point.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/directives/disabled.directive.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/directives/if-default-channel-active.directive.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/directives/if-directive-base.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/directives/if-multichannel.directive.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/directives/if-permissions.directive.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/dynamic-form-inputs/boolean-form-input/boolean-form-input.component.js +0 -0
- package/package/esm2015/core/shared/dynamic-form-inputs/code-editor-form-input/base-code-editor-form-input.component.js +59 -0
- package/package/esm2015/core/shared/dynamic-form-inputs/code-editor-form-input/html-editor-form-input.component.js +66 -0
- package/package/esm2015/core/shared/dynamic-form-inputs/code-editor-form-input/json-editor-form-input.component.js +88 -0
- package/{esm2015 → package/esm2015}/core/shared/dynamic-form-inputs/combination-mode-form-input/combination-mode-form-input.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/dynamic-form-inputs/currency-form-input/currency-form-input.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/dynamic-form-inputs/customer-group-form-input/customer-group-form-input.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/dynamic-form-inputs/date-form-input/date-form-input.component.js +0 -0
- package/package/esm2015/core/shared/dynamic-form-inputs/dynamic-form-input/dynamic-form-input.component.js +266 -0
- package/{esm2015 → package/esm2015}/core/shared/dynamic-form-inputs/facet-value-form-input/facet-value-form-input.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/dynamic-form-inputs/number-form-input/number-form-input.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/dynamic-form-inputs/password-form-input/password-form-input.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/dynamic-form-inputs/product-multi-selector-form-input/product-multi-selector-form-input.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/dynamic-form-inputs/product-selector-form-input/product-selector-form-input.component.js +0 -0
- package/package/esm2015/core/shared/dynamic-form-inputs/register-dynamic-input-components.js +136 -0
- package/{esm2015 → package/esm2015}/core/shared/dynamic-form-inputs/relation-form-input/asset/relation-asset-input.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/dynamic-form-inputs/relation-form-input/customer/relation-customer-input.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/dynamic-form-inputs/relation-form-input/generic/relation-generic-input.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/dynamic-form-inputs/relation-form-input/product/relation-product-input.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/dynamic-form-inputs/relation-form-input/product-variant/relation-product-variant-input.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/dynamic-form-inputs/relation-form-input/relation-card/relation-card.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/dynamic-form-inputs/relation-form-input/relation-form-input.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/dynamic-form-inputs/relation-form-input/relation-selector-dialog/relation-selector-dialog.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/dynamic-form-inputs/rich-text-form-input/rich-text-form-input.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/dynamic-form-inputs/select-form-input/select-form-input.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/dynamic-form-inputs/text-form-input/text-form-input.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/dynamic-form-inputs/textarea-form-input/textarea-form-input.component.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/pipes/asset-preview.pipe.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/pipes/channel-label.pipe.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/pipes/custom-field-label.pipe.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/pipes/duration.pipe.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/pipes/file-size.pipe.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/pipes/has-permission.pipe.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/pipes/locale-base.pipe.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/pipes/locale-currency-name.pipe.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/pipes/locale-currency.pipe.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/pipes/locale-date.pipe.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/pipes/locale-language-name.pipe.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/pipes/locale-region-name.pipe.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/pipes/sentence-case.pipe.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/pipes/sort.pipe.js +0 -0
- package/package/esm2015/core/shared/pipes/state-i18n-token.pipe.js +47 -0
- package/{esm2015 → package/esm2015}/core/shared/pipes/string-to-color.pipe.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/pipes/time-ago.pipe.js +0 -0
- package/{esm2015 → package/esm2015}/core/shared/providers/routing/can-deactivate-detail-guard.js +0 -0
- package/package/esm2015/core/shared/shared.module.js +287 -0
- package/{esm2015 → package/esm2015}/core/validators/unicode-pattern.validator.js +0 -0
- package/{esm2015 → package/esm2015}/core/vendure-admin-ui-core.js +0 -0
- package/{esm2015 → package/esm2015}/customer/components/add-customer-to-group-dialog/add-customer-to-group-dialog.component.js +0 -0
- package/{esm2015 → package/esm2015}/customer/components/address-card/address-card.component.js +0 -0
- package/{esm2015 → package/esm2015}/customer/components/address-detail-dialog/address-detail-dialog.component.js +0 -0
- package/{esm2015 → package/esm2015}/customer/components/customer-detail/customer-detail.component.js +0 -0
- package/{esm2015 → package/esm2015}/customer/components/customer-group-detail-dialog/customer-group-detail-dialog.component.js +0 -0
- package/package/esm2015/customer/components/customer-group-list/customer-group-list.component.js +198 -0
- package/package/esm2015/customer/components/customer-group-member-list/customer-group-member-list.component.js +101 -0
- package/{esm2015 → package/esm2015}/customer/components/customer-history/customer-history.component.js +0 -0
- package/package/esm2015/customer/components/customer-list/customer-list.component.js +81 -0
- package/{esm2015 → package/esm2015}/customer/components/customer-status-label/customer-status-label.component.js +0 -0
- package/{esm2015 → package/esm2015}/customer/components/select-customer-group-dialog/select-customer-group-dialog.component.js +0 -0
- package/{esm2015 → package/esm2015}/customer/customer.module.js +0 -0
- package/{esm2015 → package/esm2015}/customer/customer.routes.js +0 -0
- package/{esm2015 → package/esm2015}/customer/providers/routing/customer-resolver.js +0 -0
- package/{esm2015 → package/esm2015}/customer/public_api.js +0 -0
- package/{esm2015 → package/esm2015}/customer/vendure-admin-ui-customer.js +0 -0
- package/{esm2015 → package/esm2015}/dashboard/components/dashboard/dashboard.component.js +0 -0
- package/{esm2015 → package/esm2015}/dashboard/components/dashboard-widget/dashboard-widget.component.js +0 -0
- package/package/esm2015/dashboard/dashboard.module.js +29 -0
- package/{esm2015 → package/esm2015}/dashboard/dashboard.routes.js +0 -0
- package/{esm2015 → package/esm2015}/dashboard/default-widgets.js +0 -0
- package/{esm2015 → package/esm2015}/dashboard/public_api.js +0 -0
- package/{esm2015 → package/esm2015}/dashboard/vendure-admin-ui-dashboard.js +0 -0
- package/{esm2015 → package/esm2015}/dashboard/widgets/latest-orders-widget/latest-orders-widget.component.js +0 -0
- package/{esm2015 → package/esm2015}/dashboard/widgets/order-summary-widget/order-summary-widget.component.js +0 -0
- package/{esm2015 → package/esm2015}/dashboard/widgets/test-widget/test-widget.component.js +0 -0
- package/{esm2015 → package/esm2015}/dashboard/widgets/welcome-widget/welcome-widget.component.js +0 -0
- package/{esm2015 → package/esm2015}/login/components/login/login.component.js +0 -0
- package/{esm2015 → package/esm2015}/login/login.module.js +0 -0
- package/{esm2015 → package/esm2015}/login/login.routes.js +0 -0
- package/{esm2015 → package/esm2015}/login/providers/login.guard.js +0 -0
- package/{esm2015 → package/esm2015}/login/public_api.js +0 -0
- package/{esm2015 → package/esm2015}/login/vendure-admin-ui-login.js +0 -0
- package/package/esm2015/marketing/components/promotion-detail/promotion-detail.component.js +247 -0
- package/{esm2015 → package/esm2015}/marketing/components/promotion-list/promotion-list.component.js +0 -0
- package/{esm2015 → package/esm2015}/marketing/marketing.module.js +0 -0
- package/{esm2015 → package/esm2015}/marketing/marketing.routes.js +0 -0
- package/{esm2015 → package/esm2015}/marketing/providers/routing/promotion-resolver.js +0 -0
- package/{esm2015 → package/esm2015}/marketing/public_api.js +0 -0
- package/{esm2015 → package/esm2015}/marketing/vendure-admin-ui-marketing.js +0 -0
- package/{esm2015 → package/esm2015}/order/components/add-manual-payment-dialog/add-manual-payment-dialog.component.js +0 -0
- package/{esm2015 → package/esm2015}/order/components/cancel-order-dialog/cancel-order-dialog.component.js +0 -0
- package/package/esm2015/order/components/coupon-code-selector/coupon-code-selector.component.js +42 -0
- package/package/esm2015/order/components/draft-order-detail/draft-order-detail.component.js +195 -0
- package/package/esm2015/order/components/draft-order-variant-selector/draft-order-variant-selector.component.js +59 -0
- package/{esm2015 → package/esm2015}/order/components/fulfill-order-dialog/fulfill-order-dialog.component.js +0 -0
- package/{esm2015 → package/esm2015}/order/components/fulfillment-card/fulfillment-card.component.js +0 -0
- package/{esm2015 → package/esm2015}/order/components/fulfillment-detail/fulfillment-detail.component.js +0 -0
- package/{esm2015 → package/esm2015}/order/components/fulfillment-state-label/fulfillment-state-label.component.js +0 -0
- package/{esm2015 → package/esm2015}/order/components/line-fulfillment/line-fulfillment.component.js +0 -0
- package/{esm2015 → package/esm2015}/order/components/line-refunds/line-refunds.component.js +0 -0
- package/{esm2015 → package/esm2015}/order/components/modification-detail/modification-detail.component.js +0 -0
- package/{esm2015 → package/esm2015}/order/components/order-custom-fields-card/order-custom-fields-card.component.js +0 -0
- package/package/esm2015/order/components/order-detail/order-detail.component.js +550 -0
- package/package/esm2015/order/components/order-editor/order-editor.component.js +375 -0
- package/{esm2015 → package/esm2015}/order/components/order-edits-preview-dialog/order-edits-preview-dialog.component.js +0 -0
- package/{esm2015 → package/esm2015}/order/components/order-history/order-history.component.js +0 -0
- package/package/esm2015/order/components/order-list/order-list.component.js +211 -0
- package/{esm2015 → package/esm2015}/order/components/order-payment-card/order-payment-card.component.js +0 -0
- package/{esm2015 → package/esm2015}/order/components/order-process-graph/constants.js +0 -0
- package/{esm2015 → package/esm2015}/order/components/order-process-graph/order-process-edge.component.js +0 -0
- package/{esm2015 → package/esm2015}/order/components/order-process-graph/order-process-graph.component.js +0 -0
- package/{esm2015 → package/esm2015}/order/components/order-process-graph/order-process-node.component.js +0 -0
- package/{esm2015 → package/esm2015}/order/components/order-process-graph/types.js +0 -0
- package/{esm2015 → package/esm2015}/order/components/order-process-graph-dialog/order-process-graph-dialog.component.js +0 -0
- package/{esm2015 → package/esm2015}/order/components/order-state-select-dialog/order-state-select-dialog.component.js +0 -0
- package/package/esm2015/order/components/order-table/order-table.component.js +87 -0
- package/{esm2015 → package/esm2015}/order/components/payment-detail/payment-detail.component.js +0 -0
- package/{esm2015 → package/esm2015}/order/components/payment-state-label/payment-state-label.component.js +0 -0
- package/{esm2015 → package/esm2015}/order/components/refund-order-dialog/refund-order-dialog.component.js +0 -0
- package/{esm2015 → package/esm2015}/order/components/refund-state-label/refund-state-label.component.js +0 -0
- package/package/esm2015/order/components/select-address-dialog/select-address-dialog.component.js +91 -0
- package/package/esm2015/order/components/select-address-dialog/select-address-dialog.graphql.js +14 -0
- package/package/esm2015/order/components/select-customer-dialog/select-customer-dialog.component.js +59 -0
- package/package/esm2015/order/components/select-shipping-method-dialog/select-shipping-method-dialog.component.js +30 -0
- package/{esm2015 → package/esm2015}/order/components/settle-refund-dialog/settle-refund-dialog.component.js +0 -0
- package/{esm2015 → package/esm2015}/order/components/simple-item-list/simple-item-list.component.js +0 -0
- package/package/esm2015/order/order.module.js +82 -0
- package/package/esm2015/order/order.routes.js +73 -0
- package/{esm2015 → package/esm2015}/order/providers/order-transition.service.js +0 -0
- package/package/esm2015/order/providers/routing/order-resolver.js +50 -0
- package/package/esm2015/order/providers/routing/order.guard.js +41 -0
- package/package/esm2015/order/public_api.js +44 -0
- package/{esm2015 → package/esm2015}/order/vendure-admin-ui-order.js +0 -0
- package/{esm2015 → package/esm2015}/public_api.js +0 -0
- package/{esm2015 → package/esm2015}/settings/components/add-country-to-zone-dialog/add-country-to-zone-dialog.component.js +0 -0
- package/{esm2015 → package/esm2015}/settings/components/admin-detail/admin-detail.component.js +0 -0
- package/{esm2015 → package/esm2015}/settings/components/administrator-list/administrator-list.component.js +0 -0
- package/{esm2015 → package/esm2015}/settings/components/channel-detail/channel-detail.component.js +0 -0
- package/{esm2015 → package/esm2015}/settings/components/channel-list/channel-list.component.js +0 -0
- package/{esm2015 → package/esm2015}/settings/components/country-detail/country-detail.component.js +0 -0
- package/package/esm2015/settings/components/country-list/country-list.component.js +82 -0
- package/{esm2015 → package/esm2015}/settings/components/global-settings/global-settings.component.js +0 -0
- package/{esm2015 → package/esm2015}/settings/components/payment-method-detail/payment-method-detail.component.js +0 -0
- package/{esm2015 → package/esm2015}/settings/components/payment-method-list/payment-method-list.component.js +0 -0
- package/{esm2015 → package/esm2015}/settings/components/permission-grid/permission-grid.component.js +0 -0
- package/package/esm2015/settings/components/profile/profile.component.js +82 -0
- package/{esm2015 → package/esm2015}/settings/components/role-detail/role-detail.component.js +0 -0
- package/{esm2015 → package/esm2015}/settings/components/role-list/role-list.component.js +0 -0
- package/{esm2015 → package/esm2015}/settings/components/shipping-eligibility-test-result/shipping-eligibility-test-result.component.js +0 -0
- package/package/esm2015/settings/components/shipping-method-detail/shipping-method-detail.component.js +237 -0
- package/{esm2015 → package/esm2015}/settings/components/shipping-method-list/shipping-method-list.component.js +0 -0
- package/{esm2015 → package/esm2015}/settings/components/shipping-method-test-result/shipping-method-test-result.component.js +0 -0
- package/{esm2015 → package/esm2015}/settings/components/tax-category-detail/tax-category-detail.component.js +0 -0
- package/{esm2015 → package/esm2015}/settings/components/tax-category-list/tax-category-list.component.js +0 -0
- package/{esm2015 → package/esm2015}/settings/components/tax-rate-detail/tax-rate-detail.component.js +0 -0
- package/{esm2015 → package/esm2015}/settings/components/tax-rate-list/tax-rate-list.component.js +0 -0
- package/{esm2015 → package/esm2015}/settings/components/test-address-form/test-address-form.component.js +0 -0
- package/{esm2015 → package/esm2015}/settings/components/test-order-builder/test-order-builder.component.js +0 -0
- package/{esm2015 → package/esm2015}/settings/components/zone-detail-dialog/zone-detail-dialog.component.js +0 -0
- package/package/esm2015/settings/components/zone-list/zone-list.component.js +160 -0
- package/{esm2015 → package/esm2015}/settings/components/zone-member-list/zone-member-controls.directive.js +0 -0
- package/{esm2015 → package/esm2015}/settings/components/zone-member-list/zone-member-list-header.directive.js +0 -0
- package/package/esm2015/settings/components/zone-member-list/zone-member-list.component.js +63 -0
- package/{esm2015 → package/esm2015}/settings/providers/routing/administrator-resolver.js +0 -0
- package/{esm2015 → package/esm2015}/settings/providers/routing/channel-resolver.js +0 -0
- package/{esm2015 → package/esm2015}/settings/providers/routing/country-resolver.js +0 -0
- package/{esm2015 → package/esm2015}/settings/providers/routing/global-settings-resolver.js +0 -0
- package/{esm2015 → package/esm2015}/settings/providers/routing/payment-method-resolver.js +0 -0
- package/{esm2015 → package/esm2015}/settings/providers/routing/profile-resolver.js +0 -0
- package/{esm2015 → package/esm2015}/settings/providers/routing/role-resolver.js +0 -0
- package/{esm2015 → package/esm2015}/settings/providers/routing/shipping-method-resolver.js +0 -0
- package/{esm2015 → package/esm2015}/settings/providers/routing/tax-category-resolver.js +0 -0
- package/{esm2015 → package/esm2015}/settings/providers/routing/tax-rate-resolver.js +0 -0
- package/{esm2015 → package/esm2015}/settings/public_api.js +0 -0
- package/{esm2015 → package/esm2015}/settings/settings.module.js +0 -0
- package/{esm2015 → package/esm2015}/settings/settings.routes.js +0 -0
- package/{esm2015 → package/esm2015}/settings/vendure-admin-ui-settings.js +0 -0
- package/package/esm2015/system/components/health-check/health-check.component.js +19 -0
- package/{esm2015 → package/esm2015}/system/components/job-list/job-list.component.js +0 -0
- package/{esm2015 → package/esm2015}/system/components/job-state-label/job-state-label.component.js +0 -0
- package/{esm2015 → package/esm2015}/system/public_api.js +0 -0
- package/{esm2015 → package/esm2015}/system/system.module.js +0 -0
- package/{esm2015 → package/esm2015}/system/system.routes.js +0 -0
- package/{esm2015 → package/esm2015}/system/vendure-admin-ui-system.js +0 -0
- package/{esm2015 → package/esm2015}/vendure-admin-ui.js +0 -0
- package/package/fesm2015/vendure-admin-ui-catalog.js +4768 -0
- package/package/fesm2015/vendure-admin-ui-catalog.js.map +1 -0
- package/package/fesm2015/vendure-admin-ui-core.js +17900 -0
- package/package/fesm2015/vendure-admin-ui-core.js.map +1 -0
- package/package/fesm2015/vendure-admin-ui-customer.js +1184 -0
- package/package/fesm2015/vendure-admin-ui-customer.js.map +1 -0
- package/package/fesm2015/vendure-admin-ui-dashboard.js +375 -0
- package/package/fesm2015/vendure-admin-ui-dashboard.js.map +1 -0
- package/{fesm2015 → package/fesm2015}/vendure-admin-ui-login.js +0 -0
- package/{fesm2015 → package/fesm2015}/vendure-admin-ui-login.js.map +0 -0
- package/package/fesm2015/vendure-admin-ui-marketing.js +403 -0
- package/package/fesm2015/vendure-admin-ui-marketing.js.map +1 -0
- package/package/fesm2015/vendure-admin-ui-order.js +3155 -0
- package/package/fesm2015/vendure-admin-ui-order.js.map +1 -0
- package/package/fesm2015/vendure-admin-ui-settings.js +2977 -0
- package/package/fesm2015/vendure-admin-ui-settings.js.map +1 -0
- package/package/fesm2015/vendure-admin-ui-system.js +171 -0
- package/{fesm2015 → package/fesm2015}/vendure-admin-ui-system.js.map +0 -0
- package/{fesm2015 → package/fesm2015}/vendure-admin-ui.js +0 -0
- package/{fesm2015 → package/fesm2015}/vendure-admin-ui.js.map +0 -0
- package/{login → package/login}/components/login/login.component.d.ts +0 -0
- package/{login → package/login}/login.module.d.ts +0 -0
- package/{login → package/login}/login.routes.d.ts +0 -0
- package/{login → package/login}/package.json +0 -0
- package/{login → package/login}/providers/login.guard.d.ts +0 -0
- package/{login → package/login}/public_api.d.ts +0 -0
- package/{login → package/login}/vendure-admin-ui-login.d.ts +0 -0
- package/{login → package/login}/vendure-admin-ui-login.metadata.json +0 -0
- package/{marketing → package/marketing}/components/promotion-detail/promotion-detail.component.d.ts +0 -0
- package/{marketing → package/marketing}/components/promotion-list/promotion-list.component.d.ts +0 -0
- package/{marketing → package/marketing}/marketing.module.d.ts +0 -0
- package/{marketing → package/marketing}/marketing.routes.d.ts +0 -0
- package/{marketing → package/marketing}/package.json +0 -0
- package/{marketing → package/marketing}/providers/routing/promotion-resolver.d.ts +0 -0
- package/{marketing → package/marketing}/public_api.d.ts +0 -0
- package/{marketing → package/marketing}/vendure-admin-ui-marketing.d.ts +0 -0
- package/package/marketing/vendure-admin-ui-marketing.metadata.json +1 -0
- package/{order → package/order}/components/add-manual-payment-dialog/add-manual-payment-dialog.component.d.ts +0 -0
- package/{order → package/order}/components/cancel-order-dialog/cancel-order-dialog.component.d.ts +0 -0
- package/package/order/components/coupon-code-selector/coupon-code-selector.component.d.ts +18 -0
- package/package/order/components/draft-order-detail/draft-order-detail.component.d.ts +49 -0
- package/package/order/components/draft-order-variant-selector/draft-order-variant-selector.component.d.ts +21 -0
- package/{order → package/order}/components/fulfill-order-dialog/fulfill-order-dialog.component.d.ts +0 -0
- package/{order → package/order}/components/fulfillment-card/fulfillment-card.component.d.ts +0 -0
- package/{order → package/order}/components/fulfillment-detail/fulfillment-detail.component.d.ts +0 -0
- package/{order → package/order}/components/fulfillment-state-label/fulfillment-state-label.component.d.ts +0 -0
- package/{order → package/order}/components/line-fulfillment/line-fulfillment.component.d.ts +0 -0
- package/{order → package/order}/components/line-refunds/line-refunds.component.d.ts +0 -0
- package/{order → package/order}/components/modification-detail/modification-detail.component.d.ts +0 -0
- package/{order → package/order}/components/order-custom-fields-card/order-custom-fields-card.component.d.ts +0 -0
- package/{order → package/order}/components/order-detail/order-detail.component.d.ts +0 -0
- package/package/order/components/order-editor/order-editor.component.d.ts +71 -0
- package/{order → package/order}/components/order-edits-preview-dialog/order-edits-preview-dialog.component.d.ts +0 -0
- package/{order → package/order}/components/order-history/order-history.component.d.ts +0 -0
- package/package/order/components/order-list/order-list.component.d.ts +35 -0
- package/{order → package/order}/components/order-payment-card/order-payment-card.component.d.ts +0 -0
- package/{order → package/order}/components/order-process-graph/constants.d.ts +0 -0
- package/{order → package/order}/components/order-process-graph/order-process-edge.component.d.ts +0 -0
- package/{order → package/order}/components/order-process-graph/order-process-graph.component.d.ts +0 -0
- package/{order → package/order}/components/order-process-graph/order-process-node.component.d.ts +0 -0
- package/{order → package/order}/components/order-process-graph/types.d.ts +0 -0
- package/{order → package/order}/components/order-process-graph-dialog/order-process-graph-dialog.component.d.ts +0 -0
- package/{order → package/order}/components/order-state-select-dialog/order-state-select-dialog.component.d.ts +0 -0
- package/package/order/components/order-table/order-table.component.d.ts +37 -0
- package/{order → package/order}/components/payment-detail/payment-detail.component.d.ts +0 -0
- package/{order → package/order}/components/payment-state-label/payment-state-label.component.d.ts +0 -0
- package/{order → package/order}/components/refund-order-dialog/refund-order-dialog.component.d.ts +0 -0
- package/{order → package/order}/components/refund-state-label/refund-state-label.component.d.ts +0 -0
- package/package/order/components/select-address-dialog/select-address-dialog.component.d.ts +24 -0
- package/package/order/components/select-address-dialog/select-address-dialog.graphql.d.ts +1 -0
- package/package/order/components/select-customer-dialog/select-customer-dialog.component.d.ts +22 -0
- package/package/order/components/select-shipping-method-dialog/select-shipping-method-dialog.component.d.ts +16 -0
- package/{order → package/order}/components/settle-refund-dialog/settle-refund-dialog.component.d.ts +0 -0
- package/{order → package/order}/components/simple-item-list/simple-item-list.component.d.ts +0 -0
- package/{order → package/order}/order.module.d.ts +0 -0
- package/{order → package/order}/order.routes.d.ts +0 -0
- package/{order → package/order}/package.json +0 -0
- package/{order → package/order}/providers/order-transition.service.d.ts +0 -0
- package/package/order/providers/routing/order-resolver.d.ts +13 -0
- package/package/order/providers/routing/order.guard.d.ts +9 -0
- package/package/order/public_api.d.ts +42 -0
- package/{order → package/order}/vendure-admin-ui-order.d.ts +0 -0
- package/package/order/vendure-admin-ui-order.metadata.json +1 -0
- package/package/package.json +59 -0
- package/{public_api.d.ts → package/public_api.d.ts} +0 -0
- package/{settings → package/settings}/components/add-country-to-zone-dialog/add-country-to-zone-dialog.component.d.ts +0 -0
- package/{settings → package/settings}/components/admin-detail/admin-detail.component.d.ts +0 -0
- package/{settings → package/settings}/components/administrator-list/administrator-list.component.d.ts +0 -0
- package/{settings → package/settings}/components/channel-detail/channel-detail.component.d.ts +0 -0
- package/{settings → package/settings}/components/channel-list/channel-list.component.d.ts +0 -0
- package/{settings → package/settings}/components/country-detail/country-detail.component.d.ts +0 -0
- package/{settings → package/settings}/components/country-list/country-list.component.d.ts +0 -0
- package/{settings → package/settings}/components/global-settings/global-settings.component.d.ts +0 -0
- package/{settings → package/settings}/components/payment-method-detail/payment-method-detail.component.d.ts +0 -0
- package/{settings → package/settings}/components/payment-method-list/payment-method-list.component.d.ts +0 -0
- package/{settings → package/settings}/components/permission-grid/permission-grid.component.d.ts +0 -0
- package/{settings → package/settings}/components/profile/profile.component.d.ts +0 -0
- package/{settings → package/settings}/components/role-detail/role-detail.component.d.ts +0 -0
- package/{settings → package/settings}/components/role-list/role-list.component.d.ts +0 -0
- package/{settings → package/settings}/components/shipping-eligibility-test-result/shipping-eligibility-test-result.component.d.ts +0 -0
- package/{settings → package/settings}/components/shipping-method-detail/shipping-method-detail.component.d.ts +0 -0
- package/{settings → package/settings}/components/shipping-method-list/shipping-method-list.component.d.ts +0 -0
- package/{settings → package/settings}/components/shipping-method-test-result/shipping-method-test-result.component.d.ts +0 -0
- package/{settings → package/settings}/components/tax-category-detail/tax-category-detail.component.d.ts +0 -0
- package/{settings → package/settings}/components/tax-category-list/tax-category-list.component.d.ts +0 -0
- package/{settings → package/settings}/components/tax-rate-detail/tax-rate-detail.component.d.ts +0 -0
- package/{settings → package/settings}/components/tax-rate-list/tax-rate-list.component.d.ts +0 -0
- package/{settings → package/settings}/components/test-address-form/test-address-form.component.d.ts +0 -0
- package/{settings → package/settings}/components/test-order-builder/test-order-builder.component.d.ts +0 -0
- package/{settings → package/settings}/components/zone-detail-dialog/zone-detail-dialog.component.d.ts +0 -0
- package/{settings → package/settings}/components/zone-list/zone-list.component.d.ts +0 -0
- package/{settings → package/settings}/components/zone-member-list/zone-member-controls.directive.d.ts +0 -0
- package/{settings → package/settings}/components/zone-member-list/zone-member-list-header.directive.d.ts +0 -0
- package/package/settings/components/zone-member-list/zone-member-list.component.d.ts +23 -0
- package/{settings → package/settings}/package.json +0 -0
- package/{settings → package/settings}/providers/routing/administrator-resolver.d.ts +0 -0
- package/{settings → package/settings}/providers/routing/channel-resolver.d.ts +0 -0
- package/{settings → package/settings}/providers/routing/country-resolver.d.ts +0 -0
- package/{settings → package/settings}/providers/routing/global-settings-resolver.d.ts +0 -0
- package/{settings → package/settings}/providers/routing/payment-method-resolver.d.ts +0 -0
- package/{settings → package/settings}/providers/routing/profile-resolver.d.ts +0 -0
- package/{settings → package/settings}/providers/routing/role-resolver.d.ts +0 -0
- package/{settings → package/settings}/providers/routing/shipping-method-resolver.d.ts +0 -0
- package/{settings → package/settings}/providers/routing/tax-category-resolver.d.ts +0 -0
- package/{settings → package/settings}/providers/routing/tax-rate-resolver.d.ts +0 -0
- package/{settings → package/settings}/public_api.d.ts +0 -0
- package/{settings → package/settings}/settings.module.d.ts +0 -0
- package/{settings → package/settings}/settings.routes.d.ts +0 -0
- package/{settings → package/settings}/vendure-admin-ui-settings.d.ts +0 -0
- package/package/settings/vendure-admin-ui-settings.metadata.json +1 -0
- package/{static → package/static}/assets/.gitkeep +0 -0
- package/{static → package/static}/assets/logo-300px.png +0 -0
- package/{static → package/static}/assets/logo-75px.png +0 -0
- package/{static → package/static}/favicon.ico +0 -0
- package/package/static/i18n-messages/cs.json +721 -0
- package/package/static/i18n-messages/de.json +721 -0
- package/package/static/i18n-messages/en.json +721 -0
- package/package/static/i18n-messages/es.json +721 -0
- package/package/static/i18n-messages/fr.json +721 -0
- package/package/static/i18n-messages/it.json +721 -0
- package/package/static/i18n-messages/pl.json +721 -0
- package/package/static/i18n-messages/pt_BR.json +721 -0
- package/package/static/i18n-messages/pt_PT.json +721 -0
- package/package/static/i18n-messages/ru.json +721 -0
- package/package/static/i18n-messages/uk.json +721 -0
- package/package/static/i18n-messages/zh_Hans.json +721 -0
- package/package/static/i18n-messages/zh_Hant.json +721 -0
- package/{static → package/static}/index.html +0 -0
- package/{static → package/static}/polyfills.ts +0 -0
- package/{static → package/static}/styles/_mixins.scss +0 -0
- package/{static → package/static}/styles/_variables.scss +0 -0
- package/package/static/styles/global/_forms.scss +148 -0
- package/package/static/styles/global/_overrides.scss +72 -0
- package/{static → package/static}/styles/global/_sass-overrides.scss +0 -0
- package/package/static/styles/global/_utilities.scss +131 -0
- package/{static → package/static}/styles/styles.scss +0 -0
- package/{static → package/static}/styles/theme/dark.scss +0 -0
- package/{static → package/static}/styles/theme/default.scss +0 -0
- package/{static → package/static}/styles/ui-extension-theme.scss +0 -0
- package/package/static/theme.min.css +8 -0
- package/{static → package/static}/vendure-ui-config.json +0 -0
- package/{system → package/system}/components/health-check/health-check.component.d.ts +0 -0
- package/{system → package/system}/components/job-list/job-list.component.d.ts +0 -0
- package/{system → package/system}/components/job-state-label/job-state-label.component.d.ts +0 -0
- package/{system → package/system}/package.json +0 -0
- package/{system → package/system}/public_api.d.ts +0 -0
- package/{system → package/system}/system.module.d.ts +0 -0
- package/{system → package/system}/system.routes.d.ts +0 -0
- package/{system → package/system}/vendure-admin-ui-system.d.ts +0 -0
- package/package/system/vendure-admin-ui-system.metadata.json +1 -0
- package/{vendure-admin-ui.d.ts → package/vendure-admin-ui.d.ts} +0 -0
- package/{vendure-admin-ui.metadata.json → package/vendure-admin-ui.metadata.json} +0 -0
- package/package.json +59 -21
- package/tsconfig.json +61 -0
- package/tsconfig.lib.json +26 -0
- package/tsconfig.lib.prod.json +14 -0
- package/tslint.json +33 -0
- package/LICENSE +0 -9
- package/bundles/vendure-admin-ui-catalog.umd.js +0 -4851
- package/bundles/vendure-admin-ui-catalog.umd.js.map +0 -1
- package/bundles/vendure-admin-ui-core.umd.js +0 -15291
- package/bundles/vendure-admin-ui-core.umd.js.map +0 -1
- package/bundles/vendure-admin-ui-customer.umd.js +0 -1679
- package/bundles/vendure-admin-ui-customer.umd.js.map +0 -1
- package/bundles/vendure-admin-ui-dashboard.umd.js +0 -757
- package/bundles/vendure-admin-ui-dashboard.umd.js.map +0 -1
- package/bundles/vendure-admin-ui-marketing.umd.js +0 -783
- package/bundles/vendure-admin-ui-marketing.umd.js.map +0 -1
- package/bundles/vendure-admin-ui-order.umd.js +0 -3422
- package/bundles/vendure-admin-ui-order.umd.js.map +0 -1
- package/bundles/vendure-admin-ui-settings.umd.js +0 -3699
- package/bundles/vendure-admin-ui-settings.umd.js.map +0 -1
- package/bundles/vendure-admin-ui-system.umd.js +0 -524
- package/catalog/catalog.module.d.ts +0 -2
- package/catalog/components/collection-list/collection-list.component.d.ts +0 -33
- package/catalog/components/collection-tree/collection-tree-node.component.d.ts +0 -36
- package/catalog/components/collection-tree/collection-tree.component.d.ts +0 -35
- package/catalog/components/facet-list/facet-list.component.d.ts +0 -24
- package/catalog/components/product-list/product-list.component.d.ts +0 -29
- package/catalog/components/product-variants-editor/product-variants-editor.component.d.ts +0 -79
- package/catalog/public_api.d.ts +0 -33
- package/catalog/vendure-admin-ui-catalog.metadata.json +0 -1
- package/core/common/component-registry-types.d.ts +0 -56
- package/core/common/generated-types.d.ts +0 -9142
- package/core/common/utilities/selection-manager.d.ts +0 -23
- package/core/common/version.d.ts +0 -1
- package/core/data/definitions/collection-definitions.d.ts +0 -10
- package/core/data/definitions/facet-definitions.d.ts +0 -10
- package/core/data/definitions/order-definitions.d.ts +0 -27
- package/core/data/definitions/product-definitions.d.ts +0 -45
- package/core/data/providers/collection-data.service.d.ts +0 -25
- package/core/data/providers/facet-data.service.d.ts +0 -21
- package/core/data/providers/order-data.service.d.ts +0 -35
- package/core/data/providers/product-data.service.d.ts +0 -81
- package/core/providers/modal/modal.service.d.ts +0 -132
- package/core/providers/nav-builder/nav-builder-types.d.ts +0 -91
- package/core/public_api.d.ts +0 -222
- package/core/shared/components/asset-gallery/asset-gallery.component.d.ts +0 -67
- package/core/shared/components/data-table/data-table.component.d.ts +0 -82
- package/core/shared/components/dropdown/dropdown-menu.component.d.ts +0 -30
- package/core/shared/components/rich-text-editor/prosemirror/inputrules.d.ts +0 -8
- package/core/shared/components/rich-text-editor/prosemirror/menu/images.d.ts +0 -4
- package/core/shared/components/rich-text-editor/prosemirror/menu/links.d.ts +0 -4
- package/core/shared/components/rich-text-editor/prosemirror/menu/menu-common.d.ts +0 -4
- package/core/shared/components/rich-text-editor/prosemirror/plugins/link-select-plugin.d.ts +0 -5
- package/core/shared/components/rich-text-editor/prosemirror/prosemirror.service.d.ts +0 -21
- package/core/shared/components/rich-text-editor/prosemirror/types.d.ts +0 -11
- package/core/shared/components/rich-text-editor/rich-text-editor.component.d.ts +0 -35
- package/core/shared/dynamic-form-inputs/code-editor-form-input/json-editor-form-input.component.d.ts +0 -32
- package/core/shared/dynamic-form-inputs/register-dynamic-input-components.d.ts +0 -89
- package/core/vendure-admin-ui-core.metadata.json +0 -1
- package/customer/components/customer-group-member-list/customer-group-member-list.component.d.ts +0 -37
- package/customer/vendure-admin-ui-customer.metadata.json +0 -1
- package/esm2015/catalog/catalog.module.js +0 -62
- package/esm2015/catalog/components/assign-products-to-channel-dialog/assign-products-to-channel-dialog.component.js +0 -109
- package/esm2015/catalog/components/collection-detail/collection-detail.component.js +0 -244
- package/esm2015/catalog/components/collection-list/collection-list.component.js +0 -145
- package/esm2015/catalog/components/collection-tree/collection-tree-node.component.js +0 -117
- package/esm2015/catalog/components/collection-tree/collection-tree.component.js +0 -76
- package/esm2015/catalog/components/facet-list/facet-list.component.js +0 -107
- package/esm2015/catalog/components/product-detail/product-detail.component.js +0 -515
- package/esm2015/catalog/components/product-list/product-list.component.js +0 -153
- package/esm2015/catalog/components/product-variants-editor/product-variants-editor.component.js +0 -419
- package/esm2015/catalog/components/product-variants-list/product-variants-list.component.js +0 -214
- package/esm2015/catalog/providers/routing/collection-resolver.js +0 -38
- package/esm2015/catalog/public_api.js +0 -35
- package/esm2015/core/common/component-registry-types.js +0 -2
- package/esm2015/core/common/generated-types.js +0 -983
- package/esm2015/core/common/introspection-result.js +0 -195
- package/esm2015/core/common/utilities/configurable-operation-utils.js +0 -105
- package/esm2015/core/common/utilities/selection-manager.js +0 -64
- package/esm2015/core/common/version.js +0 -3
- package/esm2015/core/components/breadcrumb/breadcrumb.component.js +0 -126
- package/esm2015/core/data/definitions/collection-definitions.js +0 -144
- package/esm2015/core/data/definitions/facet-definitions.js +0 -110
- package/esm2015/core/data/definitions/order-definitions.js +0 -472
- package/esm2015/core/data/definitions/product-definitions.js +0 -745
- package/esm2015/core/data/providers/collection-data.service.js +0 -75
- package/esm2015/core/data/providers/customer-data.service.js +0 -117
- package/esm2015/core/data/providers/facet-data.service.js +0 -60
- package/esm2015/core/data/providers/order-data.service.js +0 -103
- package/esm2015/core/data/providers/product-data.service.js +0 -235
- package/esm2015/core/data/utils/remove-readonly-custom-fields.js +0 -91
- package/esm2015/core/providers/dashboard-widget/dashboard-widget.service.js +0 -97
- package/esm2015/core/providers/modal/modal.service.js +0 -100
- package/esm2015/core/providers/nav-builder/nav-builder-types.js +0 -2
- package/esm2015/core/public_api.js +0 -224
- package/esm2015/core/shared/components/action-bar/action-bar.component.js +0 -47
- package/esm2015/core/shared/components/asset-gallery/asset-gallery.component.js +0 -84
- package/esm2015/core/shared/components/data-table/data-table.component.js +0 -113
- package/esm2015/core/shared/components/dropdown/dropdown-menu.component.js +0 -121
- package/esm2015/core/shared/components/facet-value-selector/facet-value-selector.component.js +0 -117
- package/esm2015/core/shared/components/language-selector/language-selector.component.js +0 -21
- package/esm2015/core/shared/components/order-state-label/order-state-label.component.js +0 -43
- package/esm2015/core/shared/components/product-search-input/product-search-input.component.js +0 -104
- package/esm2015/core/shared/components/product-selector/product-selector.component.js +0 -61
- package/esm2015/core/shared/components/rich-text-editor/external-image-dialog/external-image-dialog.component.js +0 -32
- package/esm2015/core/shared/components/rich-text-editor/prosemirror/menu/images.js +0 -36
- package/esm2015/core/shared/components/rich-text-editor/prosemirror/menu/links.js +0 -69
- package/esm2015/core/shared/components/rich-text-editor/prosemirror/menu/menu-common.js +0 -20
- package/esm2015/core/shared/components/rich-text-editor/prosemirror/menu/menu.js +0 -192
- package/esm2015/core/shared/components/rich-text-editor/prosemirror/prosemirror.service.js +0 -112
- package/esm2015/core/shared/components/rich-text-editor/prosemirror/types.js +0 -2
- package/esm2015/core/shared/components/rich-text-editor/rich-text-editor.component.js +0 -86
- package/esm2015/core/shared/components/simple-dialog/simple-dialog.component.js +0 -21
- package/esm2015/core/shared/dynamic-form-inputs/code-editor-form-input/json-editor-form-input.component.js +0 -125
- package/esm2015/core/shared/dynamic-form-inputs/dynamic-form-input/dynamic-form-input.component.js +0 -266
- package/esm2015/core/shared/dynamic-form-inputs/register-dynamic-input-components.js +0 -134
- package/esm2015/core/shared/pipes/state-i18n-token.pipe.js +0 -46
- package/esm2015/core/shared/shared.module.js +0 -275
- package/esm2015/customer/components/customer-group-list/customer-group-list.component.js +0 -198
- package/esm2015/customer/components/customer-group-member-list/customer-group-member-list.component.js +0 -101
- package/esm2015/customer/components/customer-list/customer-list.component.js +0 -81
- package/esm2015/dashboard/dashboard.module.js +0 -25
- package/esm2015/marketing/components/promotion-detail/promotion-detail.component.js +0 -247
- package/esm2015/order/components/order-detail/order-detail.component.js +0 -550
- package/esm2015/order/components/order-editor/order-editor.component.js +0 -381
- package/esm2015/order/components/order-list/order-list.component.js +0 -195
- package/esm2015/order/components/order-table/order-table.component.js +0 -76
- package/esm2015/order/order.module.js +0 -70
- package/esm2015/order/order.routes.js +0 -54
- package/esm2015/order/providers/routing/order-resolver.js +0 -33
- package/esm2015/order/public_api.js +0 -36
- package/esm2015/settings/components/country-list/country-list.component.js +0 -82
- package/esm2015/settings/components/profile/profile.component.js +0 -82
- package/esm2015/settings/components/shipping-method-detail/shipping-method-detail.component.js +0 -237
- package/esm2015/settings/components/zone-list/zone-list.component.js +0 -160
- package/esm2015/settings/components/zone-member-list/zone-member-list.component.js +0 -63
- package/esm2015/system/components/health-check/health-check.component.js +0 -19
- package/fesm2015/vendure-admin-ui-catalog.js +0 -3984
- package/fesm2015/vendure-admin-ui-catalog.js.map +0 -1
- package/fesm2015/vendure-admin-ui-core.js +0 -16292
- package/fesm2015/vendure-admin-ui-core.js.map +0 -1
- package/fesm2015/vendure-admin-ui-customer.js +0 -1184
- package/fesm2015/vendure-admin-ui-customer.js.map +0 -1
- package/fesm2015/vendure-admin-ui-dashboard.js +0 -371
- package/fesm2015/vendure-admin-ui-dashboard.js.map +0 -1
- package/fesm2015/vendure-admin-ui-marketing.js +0 -403
- package/fesm2015/vendure-admin-ui-marketing.js.map +0 -1
- package/fesm2015/vendure-admin-ui-order.js +0 -2607
- package/fesm2015/vendure-admin-ui-order.js.map +0 -1
- package/fesm2015/vendure-admin-ui-settings.js +0 -2977
- package/fesm2015/vendure-admin-ui-settings.js.map +0 -1
- package/fesm2015/vendure-admin-ui-system.js +0 -171
- package/marketing/vendure-admin-ui-marketing.metadata.json +0 -1
- package/order/components/order-editor/order-editor.component.d.ts +0 -76
- package/order/components/order-list/order-list.component.d.ts +0 -34
- package/order/components/order-table/order-table.component.d.ts +0 -28
- package/order/providers/routing/order-resolver.d.ts +0 -10
- package/order/public_api.d.ts +0 -34
- package/order/vendure-admin-ui-order.metadata.json +0 -1
- package/settings/components/zone-member-list/zone-member-list.component.d.ts +0 -21
- package/settings/vendure-admin-ui-settings.metadata.json +0 -1
- package/static/i18n-messages/cs.json +0 -688
- package/static/i18n-messages/de.json +0 -688
- package/static/i18n-messages/en.json +0 -689
- package/static/i18n-messages/es.json +0 -688
- package/static/i18n-messages/fr.json +0 -688
- package/static/i18n-messages/it.json +0 -688
- package/static/i18n-messages/pl.json +0 -688
- package/static/i18n-messages/pt_BR.json +0 -688
- package/static/i18n-messages/pt_PT.json +0 -688
- package/static/i18n-messages/ru.json +0 -688
- package/static/i18n-messages/uk.json +0 -688
- package/static/i18n-messages/zh_Hans.json +0 -688
- package/static/i18n-messages/zh_Hant.json +0 -688
- package/static/styles/global/_forms.scss +0 -146
- package/static/styles/global/_overrides.scss +0 -72
- package/static/styles/global/_utilities.scss +0 -127
- package/static/theme.min.css +0 -8
- package/system/vendure-admin-ui-system.metadata.json +0 -1
package/esm2015/catalog/components/product-variants-editor/product-variants-editor.component.js
DELETED
|
@@ -1,419 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
|
-
import { ActivatedRoute } from '@angular/router';
|
|
3
|
-
import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';
|
|
4
|
-
import { DataService, DeletionResult, getDefaultUiLanguage, ModalService, NotificationService, } from '@vendure/admin-ui/core';
|
|
5
|
-
import { normalizeString } from '@vendure/common/lib/normalize-string';
|
|
6
|
-
import { pick } from '@vendure/common/lib/pick';
|
|
7
|
-
import { generateAllCombinations, notNullOrUndefined } from '@vendure/common/lib/shared-utils';
|
|
8
|
-
import { unique } from '@vendure/common/lib/unique';
|
|
9
|
-
import { EMPTY, forkJoin, of } from 'rxjs';
|
|
10
|
-
import { defaultIfEmpty, filter, map, mergeMap, switchMap } from 'rxjs/operators';
|
|
11
|
-
import { ProductDetailService } from '../../providers/product-detail/product-detail.service';
|
|
12
|
-
import { ConfirmVariantDeletionDialogComponent } from '../confirm-variant-deletion-dialog/confirm-variant-deletion-dialog.component';
|
|
13
|
-
export class GeneratedVariant {
|
|
14
|
-
constructor(config) {
|
|
15
|
-
for (const key of Object.keys(config)) {
|
|
16
|
-
this[key] = config[key];
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
export class ProductVariantsEditorComponent {
|
|
21
|
-
constructor(route, dataService, productDetailService, notificationService, modalService) {
|
|
22
|
-
this.route = route;
|
|
23
|
-
this.dataService = dataService;
|
|
24
|
-
this.productDetailService = productDetailService;
|
|
25
|
-
this.notificationService = notificationService;
|
|
26
|
-
this.modalService = modalService;
|
|
27
|
-
this.formValueChanged = false;
|
|
28
|
-
this.optionsChanged = false;
|
|
29
|
-
this.generatedVariants = [];
|
|
30
|
-
}
|
|
31
|
-
ngOnInit() {
|
|
32
|
-
this.initOptionsAndVariants();
|
|
33
|
-
this.languageCode =
|
|
34
|
-
this.route.snapshot.paramMap.get('lang') || getDefaultUiLanguage();
|
|
35
|
-
this.dataService.settings.getActiveChannel().single$.subscribe(data => {
|
|
36
|
-
this.currencyCode = data.activeChannel.currencyCode;
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
onFormChanged(variantInfo) {
|
|
40
|
-
this.formValueChanged = true;
|
|
41
|
-
variantInfo.enabled = true;
|
|
42
|
-
}
|
|
43
|
-
canDeactivate() {
|
|
44
|
-
return !this.formValueChanged;
|
|
45
|
-
}
|
|
46
|
-
getVariantsToAdd() {
|
|
47
|
-
return this.generatedVariants.filter(v => !v.existing && v.enabled);
|
|
48
|
-
}
|
|
49
|
-
getVariantName(variant) {
|
|
50
|
-
return variant.options.length === 0
|
|
51
|
-
? _('catalog.default-variant')
|
|
52
|
-
: variant.options.map(o => o.name).join(' ');
|
|
53
|
-
}
|
|
54
|
-
addOptionGroup() {
|
|
55
|
-
this.optionGroups.push({
|
|
56
|
-
isNew: true,
|
|
57
|
-
locked: false,
|
|
58
|
-
name: '',
|
|
59
|
-
values: [],
|
|
60
|
-
});
|
|
61
|
-
this.optionsChanged = true;
|
|
62
|
-
}
|
|
63
|
-
removeOptionGroup(optionGroup) {
|
|
64
|
-
const id = optionGroup.id;
|
|
65
|
-
if (optionGroup.isNew) {
|
|
66
|
-
this.optionGroups = this.optionGroups.filter(og => og !== optionGroup);
|
|
67
|
-
this.generateVariants();
|
|
68
|
-
this.optionsChanged = true;
|
|
69
|
-
}
|
|
70
|
-
else if (id) {
|
|
71
|
-
this.modalService
|
|
72
|
-
.dialog({
|
|
73
|
-
title: _('catalog.confirm-delete-product-option-group'),
|
|
74
|
-
translationVars: { name: optionGroup.name },
|
|
75
|
-
buttons: [
|
|
76
|
-
{ type: 'secondary', label: _('common.cancel') },
|
|
77
|
-
{ type: 'danger', label: _('common.delete'), returnValue: true },
|
|
78
|
-
],
|
|
79
|
-
})
|
|
80
|
-
.pipe(switchMap(val => {
|
|
81
|
-
if (val) {
|
|
82
|
-
return this.dataService.product.removeOptionGroupFromProduct({
|
|
83
|
-
optionGroupId: id,
|
|
84
|
-
productId: this.product.id,
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
return EMPTY;
|
|
89
|
-
}
|
|
90
|
-
}))
|
|
91
|
-
.subscribe(({ removeOptionGroupFromProduct }) => {
|
|
92
|
-
var _a;
|
|
93
|
-
if (removeOptionGroupFromProduct.__typename === 'Product') {
|
|
94
|
-
this.notificationService.success(_('common.notify-delete-success'), {
|
|
95
|
-
entity: 'ProductOptionGroup',
|
|
96
|
-
});
|
|
97
|
-
this.initOptionsAndVariants();
|
|
98
|
-
this.optionsChanged = true;
|
|
99
|
-
}
|
|
100
|
-
else if (removeOptionGroupFromProduct.__typename === 'ProductOptionInUseError') {
|
|
101
|
-
this.notificationService.error((_a = removeOptionGroupFromProduct.message) !== null && _a !== void 0 ? _a : '');
|
|
102
|
-
}
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
addOption(groupId, optionName) {
|
|
107
|
-
var _a;
|
|
108
|
-
(_a = this.optionGroups.find(g => g.id === groupId)) === null || _a === void 0 ? void 0 : _a.values.push({ name: optionName, locked: false });
|
|
109
|
-
this.generateVariants();
|
|
110
|
-
this.optionsChanged = true;
|
|
111
|
-
}
|
|
112
|
-
removeOption(groupId, { id, name }) {
|
|
113
|
-
const optionGroup = this.optionGroups.find(g => g.id === groupId);
|
|
114
|
-
if (optionGroup) {
|
|
115
|
-
if (!id) {
|
|
116
|
-
optionGroup.values = optionGroup.values.filter(v => v.name !== name);
|
|
117
|
-
this.generateVariants();
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
this.modalService
|
|
121
|
-
.dialog({
|
|
122
|
-
title: _('catalog.confirm-delete-product-option'),
|
|
123
|
-
translationVars: { name },
|
|
124
|
-
buttons: [
|
|
125
|
-
{ type: 'secondary', label: _('common.cancel') },
|
|
126
|
-
{ type: 'danger', label: _('common.delete'), returnValue: true },
|
|
127
|
-
],
|
|
128
|
-
})
|
|
129
|
-
.pipe(switchMap(val => {
|
|
130
|
-
if (val) {
|
|
131
|
-
return this.dataService.product.deleteProductOption(id);
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
-
return EMPTY;
|
|
135
|
-
}
|
|
136
|
-
}))
|
|
137
|
-
.subscribe(({ deleteProductOption }) => {
|
|
138
|
-
var _a;
|
|
139
|
-
if (deleteProductOption.result === DeletionResult.DELETED) {
|
|
140
|
-
this.notificationService.success(_('common.notify-delete-success'), {
|
|
141
|
-
entity: 'ProductOption',
|
|
142
|
-
});
|
|
143
|
-
optionGroup.values = optionGroup.values.filter(v => v.id !== id);
|
|
144
|
-
this.generateVariants();
|
|
145
|
-
this.optionsChanged = true;
|
|
146
|
-
}
|
|
147
|
-
else {
|
|
148
|
-
this.notificationService.error((_a = deleteProductOption.message) !== null && _a !== void 0 ? _a : '');
|
|
149
|
-
}
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
generateVariants() {
|
|
155
|
-
const groups = this.optionGroups.map(g => g.values);
|
|
156
|
-
const previousVariants = this.generatedVariants;
|
|
157
|
-
const generatedVariantFactory = (isDefault, options, existingVariant, prototypeVariant) => {
|
|
158
|
-
var _a, _b, _c, _d, _e, _f;
|
|
159
|
-
const prototype = this.getVariantPrototype(options, previousVariants);
|
|
160
|
-
return new GeneratedVariant({
|
|
161
|
-
enabled: true,
|
|
162
|
-
existing: !!existingVariant,
|
|
163
|
-
productVariantId: existingVariant === null || existingVariant === void 0 ? void 0 : existingVariant.id,
|
|
164
|
-
isDefault,
|
|
165
|
-
options,
|
|
166
|
-
price: (_b = (_a = existingVariant === null || existingVariant === void 0 ? void 0 : existingVariant.price) !== null && _a !== void 0 ? _a : prototypeVariant === null || prototypeVariant === void 0 ? void 0 : prototypeVariant.price) !== null && _b !== void 0 ? _b : prototype.price,
|
|
167
|
-
sku: (_d = (_c = existingVariant === null || existingVariant === void 0 ? void 0 : existingVariant.sku) !== null && _c !== void 0 ? _c : prototypeVariant === null || prototypeVariant === void 0 ? void 0 : prototypeVariant.sku) !== null && _d !== void 0 ? _d : prototype.sku,
|
|
168
|
-
stock: (_f = (_e = existingVariant === null || existingVariant === void 0 ? void 0 : existingVariant.stockOnHand) !== null && _e !== void 0 ? _e : prototypeVariant === null || prototypeVariant === void 0 ? void 0 : prototypeVariant.stockOnHand) !== null && _f !== void 0 ? _f : prototype.stock,
|
|
169
|
-
});
|
|
170
|
-
};
|
|
171
|
-
this.generatedVariants = groups.length
|
|
172
|
-
? generateAllCombinations(groups).map(options => {
|
|
173
|
-
const existingVariant = this.product.variants.find(v => this.optionsAreEqual(v.options, options));
|
|
174
|
-
const prototypeVariant = this.product.variants.find(v => this.optionsAreSubset(v.options, options));
|
|
175
|
-
return generatedVariantFactory(false, options, existingVariant, prototypeVariant);
|
|
176
|
-
})
|
|
177
|
-
: [generatedVariantFactory(true, [], this.product.variants[0])];
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* Returns one of the existing variants to base the newly-generated variant's
|
|
181
|
-
* details off.
|
|
182
|
-
*/
|
|
183
|
-
getVariantPrototype(options, previousVariants) {
|
|
184
|
-
const variantsWithSimilarOptions = previousVariants.filter(v => options.map(o => o.name).filter(name => v.options.map(o => o.name).includes(name)));
|
|
185
|
-
if (variantsWithSimilarOptions.length) {
|
|
186
|
-
return pick(previousVariants[0], ['sku', 'price', 'stock']);
|
|
187
|
-
}
|
|
188
|
-
return {
|
|
189
|
-
sku: '',
|
|
190
|
-
price: 0,
|
|
191
|
-
stock: 0,
|
|
192
|
-
};
|
|
193
|
-
}
|
|
194
|
-
deleteVariant(id, options) {
|
|
195
|
-
this.modalService
|
|
196
|
-
.dialog({
|
|
197
|
-
title: _('catalog.confirm-delete-product-variant'),
|
|
198
|
-
translationVars: { name: options.map(o => o.name).join(' ') },
|
|
199
|
-
buttons: [
|
|
200
|
-
{ type: 'secondary', label: _('common.cancel') },
|
|
201
|
-
{ type: 'danger', label: _('common.delete'), returnValue: true },
|
|
202
|
-
],
|
|
203
|
-
})
|
|
204
|
-
.pipe(switchMap(response => response ? this.productDetailService.deleteProductVariant(id, this.product.id) : EMPTY), switchMap(() => this.reFetchProduct(null)))
|
|
205
|
-
.subscribe(() => {
|
|
206
|
-
this.notificationService.success(_('common.notify-delete-success'), {
|
|
207
|
-
entity: 'ProductVariant',
|
|
208
|
-
});
|
|
209
|
-
this.initOptionsAndVariants();
|
|
210
|
-
}, err => {
|
|
211
|
-
this.notificationService.error(_('common.notify-delete-error'), {
|
|
212
|
-
entity: 'ProductVariant',
|
|
213
|
-
});
|
|
214
|
-
});
|
|
215
|
-
}
|
|
216
|
-
save() {
|
|
217
|
-
this.optionGroups = this.optionGroups.filter(g => g.values.length);
|
|
218
|
-
const newOptionGroups = this.optionGroups
|
|
219
|
-
.filter(og => og.isNew)
|
|
220
|
-
.map(og => ({
|
|
221
|
-
name: og.name,
|
|
222
|
-
values: [],
|
|
223
|
-
}));
|
|
224
|
-
this.checkUniqueSkus()
|
|
225
|
-
.pipe(mergeMap(() => this.confirmDeletionOfObsoleteVariants()), mergeMap(() => this.productDetailService.createProductOptionGroups(newOptionGroups, this.languageCode)), mergeMap(createdOptionGroups => this.addOptionGroupsToProduct(createdOptionGroups)), mergeMap(createdOptionGroups => this.addNewOptionsToGroups(createdOptionGroups)), mergeMap(groupsIds => this.fetchOptionGroups(groupsIds)), mergeMap(groups => this.createNewProductVariants(groups)), mergeMap(res => this.deleteObsoleteVariants(res.createProductVariants)), mergeMap(variants => this.reFetchProduct(variants)))
|
|
226
|
-
.subscribe({
|
|
227
|
-
next: variants => {
|
|
228
|
-
this.formValueChanged = false;
|
|
229
|
-
this.notificationService.success(_('catalog.created-new-variants-success'), {
|
|
230
|
-
count: variants.length,
|
|
231
|
-
});
|
|
232
|
-
this.initOptionsAndVariants();
|
|
233
|
-
this.optionsChanged = false;
|
|
234
|
-
},
|
|
235
|
-
});
|
|
236
|
-
}
|
|
237
|
-
checkUniqueSkus() {
|
|
238
|
-
const withDuplicateSkus = this.generatedVariants.filter((variant, index) => {
|
|
239
|
-
return (variant.enabled &&
|
|
240
|
-
this.generatedVariants.find(gv => gv.sku.trim() === variant.sku.trim() && gv !== variant));
|
|
241
|
-
});
|
|
242
|
-
if (withDuplicateSkus.length) {
|
|
243
|
-
return this.modalService
|
|
244
|
-
.dialog({
|
|
245
|
-
title: _('catalog.duplicate-sku-warning'),
|
|
246
|
-
body: unique(withDuplicateSkus.map(v => `${v.sku}`)).join(', '),
|
|
247
|
-
buttons: [{ label: _('common.close'), returnValue: false, type: 'primary' }],
|
|
248
|
-
})
|
|
249
|
-
.pipe(mergeMap(res => EMPTY));
|
|
250
|
-
}
|
|
251
|
-
else {
|
|
252
|
-
return of(true);
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
confirmDeletionOfObsoleteVariants() {
|
|
256
|
-
const obsoleteVariants = this.getObsoleteVariants();
|
|
257
|
-
if (obsoleteVariants.length) {
|
|
258
|
-
return this.modalService
|
|
259
|
-
.fromComponent(ConfirmVariantDeletionDialogComponent, {
|
|
260
|
-
locals: {
|
|
261
|
-
variants: obsoleteVariants,
|
|
262
|
-
},
|
|
263
|
-
})
|
|
264
|
-
.pipe(mergeMap(res => {
|
|
265
|
-
return res === true ? of(true) : EMPTY;
|
|
266
|
-
}));
|
|
267
|
-
}
|
|
268
|
-
else {
|
|
269
|
-
return of(true);
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
getObsoleteVariants() {
|
|
273
|
-
return this.product.variants.filter(variant => !this.generatedVariants.find(gv => gv.productVariantId === variant.id));
|
|
274
|
-
}
|
|
275
|
-
hasOnlyDefaultVariant(product) {
|
|
276
|
-
return product.variants.length === 1 && product.optionGroups.length === 0;
|
|
277
|
-
}
|
|
278
|
-
addOptionGroupsToProduct(createdOptionGroups) {
|
|
279
|
-
if (createdOptionGroups.length) {
|
|
280
|
-
return forkJoin(createdOptionGroups.map(optionGroup => {
|
|
281
|
-
return this.dataService.product.addOptionGroupToProduct({
|
|
282
|
-
productId: this.product.id,
|
|
283
|
-
optionGroupId: optionGroup.id,
|
|
284
|
-
});
|
|
285
|
-
})).pipe(map(() => createdOptionGroups));
|
|
286
|
-
}
|
|
287
|
-
else {
|
|
288
|
-
return of([]);
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
addNewOptionsToGroups(createdOptionGroups) {
|
|
292
|
-
const newOptions = this.optionGroups
|
|
293
|
-
.map(og => {
|
|
294
|
-
const createdGroup = createdOptionGroups.find(cog => cog.name === og.name);
|
|
295
|
-
const productOptionGroupId = createdGroup ? createdGroup.id : og.id;
|
|
296
|
-
if (!productOptionGroupId) {
|
|
297
|
-
throw new Error('Could not get a productOptionGroupId');
|
|
298
|
-
}
|
|
299
|
-
return og.values
|
|
300
|
-
.filter(v => !v.locked)
|
|
301
|
-
.map(v => ({
|
|
302
|
-
productOptionGroupId,
|
|
303
|
-
code: normalizeString(v.name, '-'),
|
|
304
|
-
translations: [{ name: v.name, languageCode: this.languageCode }],
|
|
305
|
-
}));
|
|
306
|
-
})
|
|
307
|
-
.reduce((flat, options) => [...flat, ...options], []);
|
|
308
|
-
const allGroupIds = [
|
|
309
|
-
...createdOptionGroups.map(g => g.id),
|
|
310
|
-
...this.optionGroups.map(g => g.id).filter(notNullOrUndefined),
|
|
311
|
-
];
|
|
312
|
-
if (newOptions.length) {
|
|
313
|
-
return forkJoin(newOptions.map(input => this.dataService.product.addOptionToGroup(input))).pipe(map(() => allGroupIds));
|
|
314
|
-
}
|
|
315
|
-
else {
|
|
316
|
-
return of(allGroupIds);
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
fetchOptionGroups(groupsIds) {
|
|
320
|
-
return forkJoin(groupsIds.map(id => this.dataService.product
|
|
321
|
-
.getProductOptionGroup(id)
|
|
322
|
-
.mapSingle(data => data.productOptionGroup)
|
|
323
|
-
.pipe(filter(notNullOrUndefined)))).pipe(defaultIfEmpty([]));
|
|
324
|
-
}
|
|
325
|
-
createNewProductVariants(groups) {
|
|
326
|
-
const options = groups
|
|
327
|
-
.filter(notNullOrUndefined)
|
|
328
|
-
.map(og => og.options)
|
|
329
|
-
.reduce((flat, o) => [...flat, ...o], []);
|
|
330
|
-
const variants = this.generatedVariants
|
|
331
|
-
.filter(v => v.enabled && !v.existing)
|
|
332
|
-
.map(v => ({
|
|
333
|
-
price: v.price,
|
|
334
|
-
sku: v.sku,
|
|
335
|
-
stock: v.stock,
|
|
336
|
-
optionIds: v.options
|
|
337
|
-
.map(name => options.find(o => o.name === name.name))
|
|
338
|
-
.filter(notNullOrUndefined)
|
|
339
|
-
.map(o => o.id),
|
|
340
|
-
}));
|
|
341
|
-
return this.productDetailService.createProductVariants(this.product, variants, options, this.languageCode);
|
|
342
|
-
}
|
|
343
|
-
deleteObsoleteVariants(input) {
|
|
344
|
-
const obsoleteVariants = this.getObsoleteVariants();
|
|
345
|
-
if (obsoleteVariants.length) {
|
|
346
|
-
const deleteOperations = obsoleteVariants.map(v => this.dataService.product.deleteProductVariant(v.id).pipe(map(() => input)));
|
|
347
|
-
return forkJoin(...deleteOperations);
|
|
348
|
-
}
|
|
349
|
-
else {
|
|
350
|
-
return of(input);
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
reFetchProduct(input) {
|
|
354
|
-
// Re-fetch the Product to force an update to the view.
|
|
355
|
-
const id = this.route.snapshot.paramMap.get('id');
|
|
356
|
-
if (id) {
|
|
357
|
-
return this.dataService.product.getProduct(id).single$.pipe(map(() => input));
|
|
358
|
-
}
|
|
359
|
-
else {
|
|
360
|
-
return of(input);
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
initOptionsAndVariants() {
|
|
364
|
-
this.dataService.product
|
|
365
|
-
// tslint:disable-next-line:no-non-null-assertion
|
|
366
|
-
.getProductVariantsOptions(this.route.snapshot.paramMap.get('id'))
|
|
367
|
-
// tslint:disable-next-line:no-non-null-assertion
|
|
368
|
-
.mapSingle(({ product }) => product)
|
|
369
|
-
.subscribe(p => {
|
|
370
|
-
this.product = p;
|
|
371
|
-
const allUsedOptionIds = p.variants.map(v => v.options.map(option => option.id)).flat();
|
|
372
|
-
const allUsedOptionGroupIds = p.variants
|
|
373
|
-
.map(v => v.options.map(option => option.groupId))
|
|
374
|
-
.flat();
|
|
375
|
-
this.optionGroups = p.optionGroups.map(og => {
|
|
376
|
-
return {
|
|
377
|
-
id: og.id,
|
|
378
|
-
isNew: false,
|
|
379
|
-
name: og.name,
|
|
380
|
-
locked: allUsedOptionGroupIds.includes(og.id),
|
|
381
|
-
values: og.options.map(o => ({
|
|
382
|
-
id: o.id,
|
|
383
|
-
name: o.name,
|
|
384
|
-
locked: allUsedOptionIds.includes(o.id),
|
|
385
|
-
})),
|
|
386
|
-
};
|
|
387
|
-
});
|
|
388
|
-
this.generateVariants();
|
|
389
|
-
});
|
|
390
|
-
}
|
|
391
|
-
optionsAreEqual(a, b) {
|
|
392
|
-
return this.toOptionString(a) === this.toOptionString(b);
|
|
393
|
-
}
|
|
394
|
-
optionsAreSubset(a, b) {
|
|
395
|
-
return this.toOptionString(b).includes(this.toOptionString(a));
|
|
396
|
-
}
|
|
397
|
-
toOptionString(o) {
|
|
398
|
-
return o
|
|
399
|
-
.map(x => x.name)
|
|
400
|
-
.sort()
|
|
401
|
-
.join('|');
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
ProductVariantsEditorComponent.decorators = [
|
|
405
|
-
{ type: Component, args: [{
|
|
406
|
-
selector: 'vdr-product-variants-editor',
|
|
407
|
-
template: "<vdr-action-bar>\r\n <vdr-ab-right>\r\n <button\r\n class=\"btn btn-primary\"\r\n (click)=\"save()\"\r\n [disabled]=\"(!formValueChanged && !optionsChanged) || getVariantsToAdd().length === 0\"\r\n >\r\n {{ 'common.add-new-variants' | translate: { count: getVariantsToAdd().length } }}\r\n </button>\r\n </vdr-ab-right>\r\n</vdr-action-bar>\r\n\r\n<div *ngFor=\"let group of optionGroups\" class=\"option-groups\">\r\n <div class=\"name\">\r\n <label>{{ 'catalog.option' | translate }}</label>\r\n <input clrInput [(ngModel)]=\"group.name\" name=\"name\" [readonly]=\"!group.isNew\" />\r\n </div>\r\n <div class=\"values\">\r\n <label>{{ 'catalog.option-values' | translate }}</label>\r\n <vdr-option-value-input\r\n #optionValueInputComponent\r\n [options]=\"group.values\"\r\n [groupName]=\"group.name\"\r\n [disabled]=\"group.name === ''\"\r\n (add)=\"addOption(group.id, $event.name)\"\r\n (remove)=\"removeOption(group.id, $event)\"\r\n ></vdr-option-value-input>\r\n </div>\r\n <div>\r\n <button\r\n [disabled]=\"group.locked\"\r\n class=\"btn btn-icon btn-danger-outline mt5\" (click)=\"removeOptionGroup(group)\">\r\n <clr-icon shape=\"trash\"></clr-icon>\r\n </button>\r\n </div>\r\n</div>\r\n<button class=\"btn btn-primary-outline btn-sm\" (click)=\"addOptionGroup()\">\r\n <clr-icon shape=\"plus\"></clr-icon>\r\n {{ 'catalog.add-option' | translate }}\r\n</button>\r\n\r\n<div class=\"variants-preview\">\r\n <table class=\"table\">\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>{{ 'catalog.variant' | translate }}</th>\r\n <th>{{ 'catalog.sku' | translate }}</th>\r\n <th>{{ 'catalog.price' | translate }}</th>\r\n <th>{{ 'catalog.stock-on-hand' | translate }}</th>\r\n <th></th>\r\n </tr>\r\n </thead>\r\n <tr *ngFor=\"let variant of generatedVariants\" [class.disabled]=\"!variant.enabled || variant.existing\">\r\n <td class=\"left\">\r\n <clr-checkbox-wrapper *ngIf=\"!variant.existing\">\r\n <input\r\n type=\"checkbox\"\r\n [(ngModel)]=\"variant.enabled\"\r\n name=\"enabled\"\r\n clrCheckbox\r\n (ngModelChange)=\"formValueChanged = true\"\r\n />\r\n <label>{{ 'common.create' | translate }}</label>\r\n </clr-checkbox-wrapper>\r\n </td>\r\n <td>\r\n {{ getVariantName(variant) | translate }}\r\n </td>\r\n <td>\r\n <div class=\"flex center\">\r\n <clr-input-container *ngIf=\"!variant.existing\">\r\n <input\r\n clrInput\r\n type=\"text\"\r\n [(ngModel)]=\"variant.sku\"\r\n [placeholder]=\"'catalog.sku' | translate\"\r\n name=\"sku\"\r\n required\r\n (ngModelChange)=\"onFormChanged(variant)\"\r\n />\r\n </clr-input-container>\r\n <span *ngIf=\"variant.existing\">{{ variant.sku }}</span>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"flex center\">\r\n <clr-input-container *ngIf=\"!variant.existing\">\r\n <vdr-currency-input\r\n clrInput\r\n [(ngModel)]=\"variant.price\"\r\n name=\"price\"\r\n [currencyCode]=\"currencyCode\"\r\n (ngModelChange)=\"onFormChanged(variant)\"\r\n ></vdr-currency-input>\r\n </clr-input-container>\r\n <span *ngIf=\"variant.existing\">{{ variant.price | localeCurrency: currencyCode }}</span>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"flex center\">\r\n <clr-input-container *ngIf=\"!variant.existing\">\r\n <input\r\n clrInput\r\n type=\"number\"\r\n [(ngModel)]=\"variant.stock\"\r\n name=\"stock\"\r\n min=\"0\"\r\n step=\"1\"\r\n (ngModelChange)=\"onFormChanged(variant)\"\r\n />\r\n </clr-input-container>\r\n <span *ngIf=\"variant.existing\">{{ variant.stock }}</span>\r\n </div>\r\n </td>\r\n <td>\r\n <vdr-dropdown *ngIf=\"variant.productVariantId as productVariantId\">\r\n <button class=\"icon-button\" vdrDropdownTrigger>\r\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\r\n <button\r\n type=\"button\"\r\n class=\"delete-button\"\r\n (click)=\"deleteVariant(productVariantId, variant.options)\"\r\n vdrDropdownItem\r\n >\r\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\r\n {{ 'common.delete' | translate }}\r\n </button>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n </td>\r\n </tr>\r\n </table>\r\n</div>\r\n",
|
|
408
|
-
changeDetection: ChangeDetectionStrategy.Default,
|
|
409
|
-
styles: [".option-groups{display:flex}.option-groups:first-of-type{margin-top:24px}.values{flex:1;margin:0 6px}.variants-preview tr.disabled td{background-color:var(--color-component-bg-100);color:var(--color-grey-400)}\n"]
|
|
410
|
-
},] }
|
|
411
|
-
];
|
|
412
|
-
ProductVariantsEditorComponent.ctorParameters = () => [
|
|
413
|
-
{ type: ActivatedRoute },
|
|
414
|
-
{ type: DataService },
|
|
415
|
-
{ type: ProductDetailService },
|
|
416
|
-
{ type: NotificationService },
|
|
417
|
-
{ type: ModalService }
|
|
418
|
-
];
|
|
419
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC12YXJpYW50cy1lZGl0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jYXRhbG9nL3NyYy9jb21wb25lbnRzL3Byb2R1Y3QtdmFyaWFudHMtZWRpdG9yL3Byb2R1Y3QtdmFyaWFudHMtZWRpdG9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsTUFBTSxJQUFJLENBQUMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3RFLE9BQU8sRUFJSCxXQUFXLEVBRVgsY0FBYyxFQUNkLG9CQUFvQixFQUdwQixZQUFZLEVBQ1osbUJBQW1CLEdBRXRCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEQsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDN0YsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLE1BQU0sOEVBQThFLENBQUM7QUFFckksTUFBTSxPQUFPLGdCQUFnQjtJ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QUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRU8sY0FBYyxDQUFDLENBQTBCO1FBQzdDLE9BQU8sQ0FBQzthQUNILEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7YUFDaEIsSUFBSSxFQUFFO2FBQ04sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLENBQUM7OztZQXJkSixTQUFTLFNBQUM7Z0JBQ1AsUUFBUSxFQUFFLDZCQUE2QjtnQkFDdkMsNjhMQUF1RDtnQkFFdkQsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE9BQU87O2FBQ25EOzs7WUE1RFEsY0FBYztZQU1uQixXQUFXO1lBaUJOLG9CQUFvQjtZQVZ6QixtQkFBbUI7WUFEbkIsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IG1hcmtlciBhcyBfIH0gZnJvbSAnQGJpZXNiamVyZy9uZ3gtdHJhbnNsYXRlLWV4dHJhY3QtbWFya2VyJztcclxuaW1wb3J0IHtcclxuICAgIENyZWF0ZVByb2R1Y3RPcHRpb25Hcm91cCxcclxuICAgIENyZWF0ZVByb2R1Y3RPcHRpb25JbnB1dCxcclxuICAgIEN1cnJlbmN5Q29kZSxcclxuICAgIERhdGFTZXJ2aWNlLFxyXG4gICAgRGVhY3RpdmF0ZUF3YXJlLFxyXG4gICAgRGVsZXRpb25SZXN1bHQsXHJcbiAgICBnZXREZWZhdWx0VWlMYW5ndWFnZSxcclxuICAgIEdldFByb2R1Y3RWYXJpYW50T3B0aW9ucyxcclxuICAgIExhbmd1YWdlQ29kZSxcclxuICAgIE1vZGFsU2VydmljZSxcclxuICAgIE5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICBQcm9kdWN0T3B0aW9uR3JvdXBXaXRoT3B0aW9uc0ZyYWdtZW50LFxyXG59IGZyb20gJ0B2ZW5kdXJlL2FkbWluLXVpL2NvcmUnO1xyXG5pbXBvcnQgeyBub3JtYWxpemVTdHJpbmcgfSBmcm9tICdAdmVuZHVyZS9jb21tb24vbGliL25vcm1hbGl6ZS1zdHJpbmcnO1xyXG5pbXBvcnQgeyBwaWNrIH0gZnJvbSAnQHZlbmR1cmUvY29tbW9uL2xpYi9waWNrJztcclxuaW1wb3J0IHsgZ2VuZXJhdGVBbGxDb21iaW5hdGlvbnMsIG5vdE51bGxPclVuZGVmaW5lZCB9IGZyb20gJ0B2ZW5kdXJlL2NvbW1vbi9saWIvc2hhcmVkLXV0aWxzJztcclxuaW1wb3J0IHsgdW5pcXVlIH0gZnJvbSAnQHZlbmR1cmUvY29tbW9uL2xpYi91bmlxdWUnO1xyXG5pbXBvcnQgeyBFTVBUWSwgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRlZmF1bHRJZkVtcHR5LCBmaWx0ZXIsIG1hcCwgbWVyZ2VNYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7IFByb2R1Y3REZXRhaWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL3Byb2R1Y3QtZGV0YWlsL3Byb2R1Y3QtZGV0YWlsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25maXJtVmFyaWFudERlbGV0aW9uRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vY29uZmlybS12YXJpYW50LWRlbGV0aW9uLWRpYWxvZy9jb25maXJtLXZhcmlhbnQtZGVsZXRpb24tZGlhbG9nLmNvbXBvbmVudCc7XHJcblxyXG5leHBvcnQgY2xhc3MgR2VuZXJhdGVkVmFyaWFudCB7XHJcbiAgICBpc0RlZmF1bHQ6IGJvb2xlYW47XHJcbiAgICBvcHRpb25zOiBBcnJheTx7IG5hbWU6IHN0cmluZzsgaWQ/OiBzdHJpbmcgfT47XHJcbiAgICBwcm9kdWN0VmFyaWFudElkPzogc3RyaW5nO1xyXG4gICAgZW5hYmxlZDogYm9vbGVhbjtcclxuICAgIGV4aXN0aW5nOiBib29sZWFuO1xyXG4gICAgc2t1OiBzdHJpbmc7XHJcbiAgICBwcmljZTogbnVtYmVyO1xyXG4gICAgc3RvY2s6IG51bWJlcjtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihjb25maWc6IFBhcnRpYWw8R2VuZXJhdGVkVmFyaWFudD4pIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhjb25maWcpKSB7XHJcbiAgICAgICAgICAgIHRoaXNba2V5XSA9IGNvbmZpZ1trZXldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuaW50ZXJmYWNlIE9wdGlvbkdyb3VwVWlNb2RlbCB7XHJcbiAgICBpZD86IHN0cmluZztcclxuICAgIGlzTmV3OiBib29sZWFuO1xyXG4gICAgbmFtZTogc3RyaW5nO1xyXG4gICAgbG9ja2VkOiBib29sZWFuO1xyXG4gICAgdmFsdWVzOiBBcnJheTx7XHJcbiAgICAgICAgaWQ/OiBzdHJpbmc7XHJcbiAgICAgICAgbmFtZTogc3RyaW5nO1xyXG4gICAgICAgIGxvY2tlZDogYm9vbGVhbjtcclxuICAgIH0+O1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndmRyLXByb2R1Y3QtdmFyaWFudHMtZWRpdG9yJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9wcm9kdWN0LXZhcmlhbnRzLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9wcm9kdWN0LXZhcmlhbnRzLWVkaXRvci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvZHVjdFZhcmlhbnRzRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBEZWFjdGl2YXRlQXdhcmUge1xyXG4gICAgZm9ybVZhbHVlQ2hhbmdlZCA9IGZhbHNlO1xyXG4gICAgb3B0aW9uc0NoYW5nZWQgPSBmYWxzZTtcclxuICAgIGdlbmVyYXRlZFZhcmlhbnRzOiBHZW5lcmF0ZWRWYXJpYW50W10gPSBbXTtcclxuICAgIG9wdGlvbkdyb3VwczogT3B0aW9uR3JvdXBVaU1vZGVsW107XHJcbiAgICBwcm9kdWN0OiBHZXRQcm9kdWN0VmFyaWFudE9wdGlvbnMuUHJvZHVjdDtcclxuICAgIGN1cnJlbmN5Q29kZTogQ3VycmVuY3lDb2RlO1xyXG4gICAgcHJpdmF0ZSBsYW5ndWFnZUNvZGU6IExhbmd1YWdlQ29kZTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgICAgICBwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIHByb2R1Y3REZXRhaWxTZXJ2aWNlOiBQcm9kdWN0RGV0YWlsU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSxcclxuICAgICkge31cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLmluaXRPcHRpb25zQW5kVmFyaWFudHMoKTtcclxuICAgICAgICB0aGlzLmxhbmd1YWdlQ29kZSA9XHJcbiAgICAgICAgICAgICh0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCgnbGFuZycpIGFzIExhbmd1YWdlQ29kZSkgfHwgZ2V0RGVmYXVsdFVpTGFuZ3VhZ2UoKTtcclxuICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLnNldHRpbmdzLmdldEFjdGl2ZUNoYW5uZWwoKS5zaW5nbGUkLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW5jeUNvZGUgPSBkYXRhLmFjdGl2ZUNoYW5uZWwuY3VycmVuY3lDb2RlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRm9ybUNoYW5nZWQodmFyaWFudEluZm86IEdlbmVyYXRlZFZhcmlhbnQpIHtcclxuICAgICAgICB0aGlzLmZvcm1WYWx1ZUNoYW5nZWQgPSB0cnVlO1xyXG4gICAgICAgIHZhcmlhbnRJbmZvLmVuYWJsZWQgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGNhbkRlYWN0aXZhdGUoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICF0aGlzLmZvcm1WYWx1ZUNoYW5nZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VmFyaWFudHNUb0FkZCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZWRWYXJpYW50cy5maWx0ZXIodiA9PiAhdi5leGlzdGluZyAmJiB2LmVuYWJsZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFZhcmlhbnROYW1lKHZhcmlhbnQ6IEdlbmVyYXRlZFZhcmlhbnQpIHtcclxuICAgICAgICByZXR1cm4gdmFyaWFudC5vcHRpb25zLmxlbmd0aCA9PT0gMFxyXG4gICAgICAgICAgICA/IF8oJ2NhdGFsb2cuZGVmYXVsdC12YXJpYW50JylcclxuICAgICAgICAgICAgOiB2YXJpYW50Lm9wdGlvbnMubWFwKG8gPT4gby5uYW1lKS5qb2luKCcgJyk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkT3B0aW9uR3JvdXAoKSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25Hcm91cHMucHVzaCh7XHJcbiAgICAgICAgICAgIGlzTmV3OiB0cnVlLFxyXG4gICAgICAgICAgICBsb2NrZWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICBuYW1lOiAnJyxcclxuICAgICAgICAgICAgdmFsdWVzOiBbXSxcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLm9wdGlvbnNDaGFuZ2VkID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVPcHRpb25Hcm91cChvcHRpb25Hcm91cDogT3B0aW9uR3JvdXBVaU1vZGVsKSB7XHJcbiAgICAgICAgY29uc3QgaWQgPSBvcHRpb25Hcm91cC5pZDtcclxuICAgICAgICBpZiAob3B0aW9uR3JvdXAuaXNOZXcpIHtcclxuICAgICAgICAgICAgdGhpcy5vcHRpb25Hcm91cHMgPSB0aGlzLm9wdGlvbkdyb3Vwcy5maWx0ZXIob2cgPT4gb2cgIT09IG9wdGlvbkdyb3VwKTtcclxuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZVZhcmlhbnRzKCk7XHJcbiAgICAgICAgICAgIHRoaXMub3B0aW9uc0NoYW5nZWQgPSB0cnVlO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaWQpIHtcclxuICAgICAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2VcclxuICAgICAgICAgICAgICAgIC5kaWFsb2coe1xyXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBfKCdjYXRhbG9nLmNvbmZpcm0tZGVsZXRlLXByb2R1Y3Qtb3B0aW9uLWdyb3VwJyksXHJcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25WYXJzOiB7IG5hbWU6IG9wdGlvbkdyb3VwLm5hbWUgfSxcclxuICAgICAgICAgICAgICAgICAgICBidXR0b25zOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgdHlwZTogJ3NlY29uZGFyeScsIGxhYmVsOiBfKCdjb21tb24uY2FuY2VsJykgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAnZGFuZ2VyJywgbGFiZWw6IF8oJ2NvbW1vbi5kZWxldGUnKSwgcmV0dXJuVmFsdWU6IHRydWUgfSxcclxuICAgICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaE1hcCh2YWwgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5wcm9kdWN0LnJlbW92ZU9wdGlvbkdyb3VwRnJvbVByb2R1Y3Qoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbkdyb3VwSWQ6IGlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3RJZDogdGhpcy5wcm9kdWN0LmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHsgcmVtb3ZlT3B0aW9uR3JvdXBGcm9tUHJvZHVjdCB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlbW92ZU9wdGlvbkdyb3VwRnJvbVByb2R1Y3QuX190eXBlbmFtZSA9PT0gJ1Byb2R1Y3QnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKF8oJ2NvbW1vbi5ub3RpZnktZGVsZXRlLXN1Y2Nlc3MnKSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5OiAnUHJvZHVjdE9wdGlvbkdyb3VwJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdE9wdGlvbnNBbmRWYXJpYW50cygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnNDaGFuZ2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlbW92ZU9wdGlvbkdyb3VwRnJvbVByb2R1Y3QuX190eXBlbmFtZSA9PT0gJ1Byb2R1Y3RPcHRpb25JblVzZUVycm9yJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IocmVtb3ZlT3B0aW9uR3JvdXBGcm9tUHJvZHVjdC5tZXNzYWdlID8/ICcnKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYWRkT3B0aW9uKGdyb3VwSWQ6IHN0cmluZywgb3B0aW9uTmFtZTogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25Hcm91cHMuZmluZChnID0+IGcuaWQgPT09IGdyb3VwSWQpPy52YWx1ZXMucHVzaCh7IG5hbWU6IG9wdGlvbk5hbWUsIGxvY2tlZDogZmFsc2UgfSk7XHJcbiAgICAgICAgdGhpcy5nZW5lcmF0ZVZhcmlhbnRzKCk7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zQ2hhbmdlZCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlT3B0aW9uKGdyb3VwSWQ6IHN0cmluZywgeyBpZCwgbmFtZSB9OiB7IGlkPzogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfSkge1xyXG4gICAgICAgIGNvbnN0IG9wdGlvbkdyb3VwID0gdGhpcy5vcHRpb25Hcm91cHMuZmluZChnID0+IGcuaWQgPT09IGdyb3VwSWQpO1xyXG4gICAgICAgIGlmIChvcHRpb25Hcm91cCkge1xyXG4gICAgICAgICAgICBpZiAoIWlkKSB7XHJcbiAgICAgICAgICAgICAgICBvcHRpb25Hcm91cC52YWx1ZXMgPSBvcHRpb25Hcm91cC52YWx1ZXMuZmlsdGVyKHYgPT4gdi5uYW1lICE9PSBuYW1lKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVWYXJpYW50cygpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2VcclxuICAgICAgICAgICAgICAgICAgICAuZGlhbG9nKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IF8oJ2NhdGFsb2cuY29uZmlybS1kZWxldGUtcHJvZHVjdC1vcHRpb24nKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25WYXJzOiB7IG5hbWUgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAnc2Vjb25kYXJ5JywgbGFiZWw6IF8oJ2NvbW1vbi5jYW5jZWwnKSB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAnZGFuZ2VyJywgbGFiZWw6IF8oJ2NvbW1vbi5kZWxldGUnKSwgcmV0dXJuVmFsdWU6IHRydWUgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2hNYXAodmFsID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhU2VydmljZS5wcm9kdWN0LmRlbGV0ZVByb2R1Y3RPcHRpb24oaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRU1QVFk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCh7IGRlbGV0ZVByb2R1Y3RPcHRpb24gfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVsZXRlUHJvZHVjdE9wdGlvbi5yZXN1bHQgPT09IERlbGV0aW9uUmVzdWx0LkRFTEVURUQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5zdWNjZXNzKF8oJ2NvbW1vbi5ub3RpZnktZGVsZXRlLXN1Y2Nlc3MnKSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eTogJ1Byb2R1Y3RPcHRpb24nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25Hcm91cC52YWx1ZXMgPSBvcHRpb25Hcm91cC52YWx1ZXMuZmlsdGVyKHYgPT4gdi5pZCAhPT0gaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZVZhcmlhbnRzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnNDaGFuZ2VkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihkZWxldGVQcm9kdWN0T3B0aW9uLm1lc3NhZ2UgPz8gJycpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2VuZXJhdGVWYXJpYW50cygpIHtcclxuICAgICAgICBjb25zdCBncm91cHMgPSB0aGlzLm9wdGlvbkdyb3Vwcy5tYXAoZyA9PiBnLnZhbHVlcyk7XHJcbiAgICAgICAgY29uc3QgcHJldmlvdXNWYXJpYW50cyA9IHRoaXMuZ2VuZXJhdGVkVmFyaWFudHM7XHJcbiAgICAgICAgY29uc3QgZ2VuZXJhdGVkVmFyaWFudEZhY3RvcnkgPSAoXHJcbiAgICAgICAgICAgIGlzRGVmYXVsdDogYm9vbGVhbixcclxuICAgICAgICAgICAgb3B0aW9uczogR2VuZXJhdGVkVmFyaWFudFsnb3B0aW9ucyddLFxyXG4gICAgICAgICAgICBleGlzdGluZ1ZhcmlhbnQ/OiBHZXRQcm9kdWN0VmFyaWFudE9wdGlvbnMuVmFyaWFudHMsXHJcbiAgICAgICAgICAgIHByb3RvdHlwZVZhcmlhbnQ/OiBHZXRQcm9kdWN0VmFyaWFudE9wdGlvbnMuVmFyaWFudHMsXHJcbiAgICAgICAgKTogR2VuZXJhdGVkVmFyaWFudCA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHByb3RvdHlwZSA9IHRoaXMuZ2V0VmFyaWFudFByb3RvdHlwZShvcHRpb25zLCBwcmV2aW91c1ZhcmlhbnRzKTtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBHZW5lcmF0ZWRWYXJpYW50KHtcclxuICAgICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBleGlzdGluZzogISFleGlzdGluZ1ZhcmlhbnQsXHJcbiAgICAgICAgICAgICAgICBwcm9kdWN0VmFyaWFudElkOiBleGlzdGluZ1ZhcmlhbnQ/LmlkLFxyXG4gICAgICAgICAgICAgICAgaXNEZWZhdWx0LFxyXG4gICAgICAgICAgICAgICAgb3B0aW9ucyxcclxuICAgICAgICAgICAgICAgIHByaWNlOiBleGlzdGluZ1ZhcmlhbnQ/LnByaWNlID8/IHByb3RvdHlwZVZhcmlhbnQ/LnByaWNlID8/IHByb3RvdHlwZS5wcmljZSxcclxuICAgICAgICAgICAgICAgIHNrdTogZXhpc3RpbmdWYXJpYW50Py5za3UgPz8gcHJvdG90eXBlVmFyaWFudD8uc2t1ID8/IHByb3RvdHlwZS5za3UsXHJcbiAgICAgICAgICAgICAgICBzdG9jazogZXhpc3RpbmdWYXJpYW50Py5zdG9ja09uSGFuZCA/PyBwcm90b3R5cGVWYXJpYW50Py5zdG9ja09uSGFuZCA/PyBwcm90b3R5cGUuc3RvY2ssXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5nZW5lcmF0ZWRWYXJpYW50cyA9IGdyb3Vwcy5sZW5ndGhcclxuICAgICAgICAgICAgPyBnZW5lcmF0ZUFsbENvbWJpbmF0aW9ucyhncm91cHMpLm1hcChvcHRpb25zID0+IHtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmdWYXJpYW50ID0gdGhpcy5wcm9kdWN0LnZhcmlhbnRzLmZpbmQodiA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zQXJlRXF1YWwodi5vcHRpb25zLCBvcHRpb25zKSxcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgcHJvdG90eXBlVmFyaWFudCA9IHRoaXMucHJvZHVjdC52YXJpYW50cy5maW5kKHYgPT5cclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9uc0FyZVN1YnNldCh2Lm9wdGlvbnMsIG9wdGlvbnMpLFxyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdGVkVmFyaWFudEZhY3RvcnkoZmFsc2UsIG9wdGlvbnMsIGV4aXN0aW5nVmFyaWFudCwgcHJvdG90eXBlVmFyaWFudCk7XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgOiBbZ2VuZXJhdGVkVmFyaWFudEZhY3RvcnkodHJ1ZSwgW10sIHRoaXMucHJvZHVjdC52YXJpYW50c1swXSldO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyBvbmUgb2YgdGhlIGV4aXN0aW5nIHZhcmlhbnRzIHRvIGJhc2UgdGhlIG5ld2x5LWdlbmVyYXRlZCB2YXJpYW50J3NcclxuICAgICAqIGRldGFpbHMgb2ZmLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGdldFZhcmlhbnRQcm90b3R5cGUoXHJcbiAgICAgICAgb3B0aW9uczogR2VuZXJhdGVkVmFyaWFudFsnb3B0aW9ucyddLFxyXG4gICAgICAgIHByZXZpb3VzVmFyaWFudHM6IEdlbmVyYXRlZFZhcmlhbnRbXSxcclxuICAgICk6IFBpY2s8R2VuZXJhdGVkVmFyaWFudCwgJ3NrdScgfCAncHJpY2UnIHwgJ3N0b2NrJz4ge1xyXG4gICAgICAgIGNvbnN0IHZhcmlhbnRzV2l0aFNpbWlsYXJPcHRpb25zID0gcHJldmlvdXNWYXJpYW50cy5maWx0ZXIodiA9PlxyXG4gICAgICAgICAgICBvcHRpb25zLm1hcChvID0+IG8ubmFtZSkuZmlsdGVyKG5hbWUgPT4gdi5vcHRpb25zLm1hcChvID0+IG8ubmFtZSkuaW5jbHVkZXMobmFtZSkpLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKHZhcmlhbnRzV2l0aFNpbWlsYXJPcHRpb25zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICByZXR1cm4gcGljayhwcmV2aW91c1ZhcmlhbnRzWzBdLCBbJ3NrdScsICdwcmljZScsICdzdG9jayddKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgc2t1OiAnJyxcclxuICAgICAgICAgICAgcHJpY2U6IDAsXHJcbiAgICAgICAgICAgIHN0b2NrOiAwLFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgZGVsZXRlVmFyaWFudChpZDogc3RyaW5nLCBvcHRpb25zOiBHZW5lcmF0ZWRWYXJpYW50WydvcHRpb25zJ10pIHtcclxuICAgICAgICB0aGlzLm1vZGFsU2VydmljZVxyXG4gICAgICAgICAgICAuZGlhbG9nKHtcclxuICAgICAgICAgICAgICAgIHRpdGxlOiBfKCdjYXRhbG9nLmNvbmZpcm0tZGVsZXRlLXByb2R1Y3QtdmFyaWFudCcpLFxyXG4gICAgICAgICAgICAgICAgdHJhbnNsYXRpb25WYXJzOiB7IG5hbWU6IG9wdGlvbnMubWFwKG8gPT4gby5uYW1lKS5qb2luKCcgJykgfSxcclxuICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFtcclxuICAgICAgICAgICAgICAgICAgICB7IHR5cGU6ICdzZWNvbmRhcnknLCBsYWJlbDogXygnY29tbW9uLmNhbmNlbCcpIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiAnZGFuZ2VyJywgbGFiZWw6IF8oJ2NvbW1vbi5kZWxldGUnKSwgcmV0dXJuVmFsdWU6IHRydWUgfSxcclxuICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKHJlc3BvbnNlID0+XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPyB0aGlzLnByb2R1Y3REZXRhaWxTZXJ2aWNlLmRlbGV0ZVByb2R1Y3RWYXJpYW50KGlkLCB0aGlzLnByb2R1Y3QuaWQpIDogRU1QVFksXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMucmVGZXRjaFByb2R1Y3QobnVsbCkpLFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoXygnY29tbW9uLm5vdGlmeS1kZWxldGUtc3VjY2VzcycpLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eTogJ1Byb2R1Y3RWYXJpYW50JyxcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRPcHRpb25zQW5kVmFyaWFudHMoKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcihfKCdjb21tb24ubm90aWZ5LWRlbGV0ZS1lcnJvcicpLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eTogJ1Byb2R1Y3RWYXJpYW50JyxcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZSgpIHtcclxuICAgICAgICB0aGlzLm9wdGlvbkdyb3VwcyA9IHRoaXMub3B0aW9uR3JvdXBzLmZpbHRlcihnID0+IGcudmFsdWVzLmxlbmd0aCk7XHJcbiAgICAgICAgY29uc3QgbmV3T3B0aW9uR3JvdXBzID0gdGhpcy5vcHRpb25Hcm91cHNcclxuICAgICAgICAgICAgLmZpbHRlcihvZyA9PiBvZy5pc05ldylcclxuICAgICAgICAgICAgLm1hcChvZyA9PiAoe1xyXG4gICAgICAgICAgICAgICAgbmFtZTogb2cubmFtZSxcclxuICAgICAgICAgICAgICAgIHZhbHVlczogW10sXHJcbiAgICAgICAgICAgIH0pKTtcclxuXHJcbiAgICAgICAgdGhpcy5jaGVja1VuaXF1ZVNrdXMoKVxyXG4gICAgICAgICAgICAucGlwZShcclxuICAgICAgICAgICAgICAgIG1lcmdlTWFwKCgpID0+IHRoaXMuY29uZmlybURlbGV0aW9uT2ZPYnNvbGV0ZVZhcmlhbnRzKCkpLFxyXG4gICAgICAgICAgICAgICAgbWVyZ2VNYXAoKCkgPT5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3REZXRhaWxTZXJ2aWNlLmNyZWF0ZVByb2R1Y3RPcHRpb25Hcm91cHMobmV3T3B0aW9uR3JvdXBzLCB0aGlzLmxhbmd1YWdlQ29kZSksXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgbWVyZ2VNYXAoY3JlYXRlZE9wdGlvbkdyb3VwcyA9PiB0aGlzLmFkZE9wdGlvbkdyb3Vwc1RvUHJvZHVjdChjcmVhdGVkT3B0aW9uR3JvdXBzKSksXHJcbiAgICAgICAgICAgICAgICBtZXJnZU1hcChjcmVhdGVkT3B0aW9uR3JvdXBzID0+IHRoaXMuYWRkTmV3T3B0aW9uc1RvR3JvdXBzKGNyZWF0ZWRPcHRpb25Hcm91cHMpKSxcclxuICAgICAgICAgICAgICAgIG1lcmdlTWFwKGdyb3Vwc0lkcyA9PiB0aGlzLmZldGNoT3B0aW9uR3JvdXBzKGdyb3Vwc0lkcykpLFxyXG4gICAgICAgICAgICAgICAgbWVyZ2VNYXAoZ3JvdXBzID0+IHRoaXMuY3JlYXRlTmV3UHJvZHVjdFZhcmlhbnRzKGdyb3VwcykpLFxyXG4gICAgICAgICAgICAgICAgbWVyZ2VNYXAocmVzID0+IHRoaXMuZGVsZXRlT2Jzb2xldGVWYXJpYW50cyhyZXMuY3JlYXRlUHJvZHVjdFZhcmlhbnRzKSksXHJcbiAgICAgICAgICAgICAgICBtZXJnZU1hcCh2YXJpYW50cyA9PiB0aGlzLnJlRmV0Y2hQcm9kdWN0KHZhcmlhbnRzKSksXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgICBuZXh0OiB2YXJpYW50cyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtVmFsdWVDaGFuZ2VkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoXygnY2F0YWxvZy5jcmVhdGVkLW5ldy12YXJpYW50cy1zdWNjZXNzJyksIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY291bnQ6IHZhcmlhbnRzLmxlbmd0aCxcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRPcHRpb25zQW5kVmFyaWFudHMoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnNDaGFuZ2VkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNoZWNrVW5pcXVlU2t1cygpIHtcclxuICAgICAgICBjb25zdCB3aXRoRHVwbGljYXRlU2t1cyA9IHRoaXMuZ2VuZXJhdGVkVmFyaWFudHMuZmlsdGVyKCh2YXJpYW50LCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgdmFyaWFudC5lbmFibGVkICYmXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlZFZhcmlhbnRzLmZpbmQoZ3YgPT4gZ3Yuc2t1LnRyaW0oKSA9PT0gdmFyaWFudC5za3UudHJpbSgpICYmIGd2ICE9PSB2YXJpYW50KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmICh3aXRoRHVwbGljYXRlU2t1cy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubW9kYWxTZXJ2aWNlXHJcbiAgICAgICAgICAgICAgICAuZGlhbG9nKHtcclxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogXygnY2F0YWxvZy5kdXBsaWNhdGUtc2t1LXdhcm5pbmcnKSxcclxuICAgICAgICAgICAgICAgICAgICBib2R5OiB1bmlxdWUod2l0aER1cGxpY2F0ZVNrdXMubWFwKHYgPT4gYCR7di5za3V9YCkpLmpvaW4oJywgJyksXHJcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uczogW3sgbGFiZWw6IF8oJ2NvbW1vbi5jbG9zZScpLCByZXR1cm5WYWx1ZTogZmFsc2UsIHR5cGU6ICdwcmltYXJ5JyB9XSxcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAucGlwZShtZXJnZU1hcChyZXMgPT4gRU1QVFkpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gb2YodHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY29uZmlybURlbGV0aW9uT2ZPYnNvbGV0ZVZhcmlhbnRzKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIGNvbnN0IG9ic29sZXRlVmFyaWFudHMgPSB0aGlzLmdldE9ic29sZXRlVmFyaWFudHMoKTtcclxuICAgICAgICBpZiAob2Jzb2xldGVWYXJpYW50cy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMubW9kYWxTZXJ2aWNlXHJcbiAgICAgICAgICAgICAgICAuZnJvbUNvbXBvbmVudChDb25maXJtVmFyaWFudERlbGV0aW9uRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnRzOiBvYnNvbGV0ZVZhcmlhbnRzLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICAgICAgbWVyZ2VNYXAocmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlcyA9PT0gdHJ1ZSA/IG9mKHRydWUpIDogRU1QVFk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBvZih0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRPYnNvbGV0ZVZhcmlhbnRzKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnByb2R1Y3QudmFyaWFudHMuZmlsdGVyKFxyXG4gICAgICAgICAgICB2YXJpYW50ID0+ICF0aGlzLmdlbmVyYXRlZFZhcmlhbnRzLmZpbmQoZ3YgPT4gZ3YucHJvZHVjdFZhcmlhbnRJZCA9PT0gdmFyaWFudC5pZCksXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGhhc09ubHlEZWZhdWx0VmFyaWFudChwcm9kdWN0OiBHZXRQcm9kdWN0VmFyaWFudE9wdGlvbnMuUHJvZHVjdCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBwcm9kdWN0LnZhcmlhbnRzLmxlbmd0aCA9PT0gMSAmJiBwcm9kdWN0Lm9wdGlvbkdyb3Vwcy5sZW5ndGggPT09IDA7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhZGRPcHRpb25Hcm91cHNUb1Byb2R1Y3QoXHJcbiAgICAgICAgY3JlYXRlZE9wdGlvbkdyb3VwczogQ3JlYXRlUHJvZHVjdE9wdGlvbkdyb3VwLkNyZWF0ZVByb2R1Y3RPcHRpb25Hcm91cFtdLFxyXG4gICAgKTogT2JzZXJ2YWJsZTxDcmVhdGVQcm9kdWN0T3B0aW9uR3JvdXAuQ3JlYXRlUHJvZHVjdE9wdGlvbkdyb3VwW10+IHtcclxuICAgICAgICBpZiAoY3JlYXRlZE9wdGlvbkdyb3Vwcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZvcmtKb2luKFxyXG4gICAgICAgICAgICAgICAgY3JlYXRlZE9wdGlvbkdyb3Vwcy5tYXAob3B0aW9uR3JvdXAgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRhdGFTZXJ2aWNlLnByb2R1Y3QuYWRkT3B0aW9uR3JvdXBUb1Byb2R1Y3Qoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0SWQ6IHRoaXMucHJvZHVjdC5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uR3JvdXBJZDogb3B0aW9uR3JvdXAuaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgKS5waXBlKG1hcCgoKSA9PiBjcmVhdGVkT3B0aW9uR3JvdXBzKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIG9mKFtdKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhZGROZXdPcHRpb25zVG9Hcm91cHMoXHJcbiAgICAgICAgY3JlYXRlZE9wdGlvbkdyb3VwczogQ3JlYXRlUHJvZHVjdE9wdGlvbkdyb3VwLkNyZWF0ZVByb2R1Y3RPcHRpb25Hcm91cFtdLFxyXG4gICAgKTogT2JzZXJ2YWJsZTxzdHJpbmdbXT4ge1xyXG4gICAgICAgIGNvbnN0IG5ld09wdGlvbnM6IENyZWF0ZVByb2R1Y3RPcHRpb25JbnB1dFtdID0gdGhpcy5vcHRpb25Hcm91cHNcclxuICAgICAgICAgICAgLm1hcChvZyA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjcmVhdGVkR3JvdXAgPSBjcmVhdGVkT3B0aW9uR3JvdXBzLmZpbmQoY29nID0+IGNvZy5uYW1lID09PSBvZy5uYW1lKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHByb2R1Y3RPcHRpb25Hcm91cElkID0gY3JlYXRlZEdyb3VwID8gY3JlYXRlZEdyb3VwLmlkIDogb2cuaWQ7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXByb2R1Y3RPcHRpb25Hcm91cElkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgZ2V0IGEgcHJvZHVjdE9wdGlvbkdyb3VwSWQnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBvZy52YWx1ZXNcclxuICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKHYgPT4gIXYubG9ja2VkKVxyXG4gICAgICAgICAgICAgICAgICAgIC5tYXAodiA9PiAoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0T3B0aW9uR3JvdXBJZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29kZTogbm9ybWFsaXplU3RyaW5nKHYubmFtZSwgJy0nKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRpb25zOiBbeyBuYW1lOiB2Lm5hbWUsIGxhbmd1YWdlQ29kZTogdGhpcy5sYW5ndWFnZUNvZGUgfV0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAucmVkdWNlKChmbGF0LCBvcHRpb25zKSA9PiBbLi4uZmxhdCwgLi4ub3B0aW9uc10sIFtdKTtcclxuXHJcbiAgICAgICAgY29uc3QgYWxsR3JvdXBJZHMgPSBbXHJcbiAgICAgICAgICAgIC4uLmNyZWF0ZWRPcHRpb25Hcm91cHMubWFwKGcgPT4gZy5pZCksXHJcbiAgICAgICAgICAgIC4uLnRoaXMub3B0aW9uR3JvdXBzLm1hcChnID0+IGcuaWQpLmZpbHRlcihub3ROdWxsT3JVbmRlZmluZWQpLFxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgIGlmIChuZXdPcHRpb25zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZm9ya0pvaW4obmV3T3B0aW9ucy5tYXAoaW5wdXQgPT4gdGhpcy5kYXRhU2VydmljZS5wcm9kdWN0LmFkZE9wdGlvblRvR3JvdXAoaW5wdXQpKSkucGlwZShcclxuICAgICAgICAgICAgICAgIG1hcCgoKSA9PiBhbGxHcm91cElkcyksXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIG9mKGFsbEdyb3VwSWRzKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBmZXRjaE9wdGlvbkdyb3Vwcyhncm91cHNJZHM6IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxQcm9kdWN0T3B0aW9uR3JvdXBXaXRoT3B0aW9uc0ZyYWdtZW50W10+IHtcclxuICAgICAgICByZXR1cm4gZm9ya0pvaW4oXHJcbiAgICAgICAgICAgIGdyb3Vwc0lkcy5tYXAoaWQgPT5cclxuICAgICAgICAgICAgICAgIHRoaXMuZGF0YVNlcnZpY2UucHJvZHVjdFxyXG4gICAgICAgICAgICAgICAgICAgIC5nZXRQcm9kdWN0T3B0aW9uR3JvdXAoaWQpXHJcbiAgICAgICAgICAgICAgICAgICAgLm1hcFNpbmdsZShkYXRhID0+IGRhdGEucHJvZHVjdE9wdGlvbkdyb3VwKVxyXG4gICAgICAgICAgICAgICAgICAgIC5waXBlKGZpbHRlcihub3ROdWxsT3JVbmRlZmluZWQpKSxcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICApLnBpcGUoZGVmYXVsdElmRW1wdHkoW10gYXMgUHJvZHVjdE9wdGlvbkdyb3VwV2l0aE9wdGlvbnNGcmFnbWVudFtdKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjcmVhdGVOZXdQcm9kdWN0VmFyaWFudHMoZ3JvdXBzOiBQcm9kdWN0T3B0aW9uR3JvdXBXaXRoT3B0aW9uc0ZyYWdtZW50W10pIHtcclxuICAgICAgICBjb25zdCBvcHRpb25zID0gZ3JvdXBzXHJcbiAgICAgICAgICAgIC5maWx0ZXIobm90TnVsbE9yVW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAubWFwKG9nID0+IG9nLm9wdGlvbnMpXHJcbiAgICAgICAgICAgIC5yZWR1Y2UoKGZsYXQsIG8pID0+IFsuLi5mbGF0LCAuLi5vXSwgW10pO1xyXG4gICAgICAgIGNvbnN0IHZhcmlhbnRzID0gdGhpcy5nZW5lcmF0ZWRWYXJpYW50c1xyXG4gICAgICAgICAgICAuZmlsdGVyKHYgPT4gdi5lbmFibGVkICYmICF2LmV4aXN0aW5nKVxyXG4gICAgICAgICAgICAubWFwKHYgPT4gKHtcclxuICAgICAgICAgICAgICAgIHByaWNlOiB2LnByaWNlLFxyXG4gICAgICAgICAgICAgICAgc2t1OiB2LnNrdSxcclxuICAgICAgICAgICAgICAgIHN0b2NrOiB2LnN0b2NrLFxyXG4gICAgICAgICAgICAgICAgb3B0aW9uSWRzOiB2Lm9wdGlvbnNcclxuICAgICAgICAgICAgICAgICAgICAubWFwKG5hbWUgPT4gb3B0aW9ucy5maW5kKG8gPT4gby5uYW1lID09PSBuYW1lLm5hbWUpKVxyXG4gICAgICAgICAgICAgICAgICAgIC5maWx0ZXIobm90TnVsbE9yVW5kZWZpbmVkKVxyXG4gICAgICAgICAgICAgICAgICAgIC5tYXAobyA9PiBvLmlkKSxcclxuICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnByb2R1Y3REZXRhaWxTZXJ2aWNlLmNyZWF0ZVByb2R1Y3RWYXJpYW50cyhcclxuICAgICAgICAgICAgdGhpcy5wcm9kdWN0LFxyXG4gICAgICAgICAgICB2YXJpYW50cyxcclxuICAgICAgICAgICAgb3B0aW9ucyxcclxuICAgICAgICAgICAgdGhpcy5sYW5ndWFnZUNvZGUsXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGRlbGV0ZU9ic29sZXRlVmFyaWFudHM8VD4oaW5wdXQ6IFQpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgICAgICBjb25zdCBvYnNvbGV0ZVZhcmlhbnRzID0gdGhpcy5nZXRPYnNvbGV0ZVZhcmlhbnRzKCk7XHJcbiAgICAgICAgaWYgKG9ic29sZXRlVmFyaWFudHMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRlbGV0ZU9wZXJhdGlvbnMgPSBvYnNvbGV0ZVZhcmlhbnRzLm1hcCh2ID0+XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLnByb2R1Y3QuZGVsZXRlUHJvZHVjdFZhcmlhbnQodi5pZCkucGlwZShtYXAoKCkgPT4gaW5wdXQpKSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgcmV0dXJuIGZvcmtKb2luKC4uLmRlbGV0ZU9wZXJhdGlvbnMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBvZihpbnB1dCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVGZXRjaFByb2R1Y3Q8VD4oaW5wdXQ6IFQpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgICAgICAvLyBSZS1mZXRjaCB0aGUgUHJvZHVjdCB0byBmb3JjZSBhbiB1cGRhdGUgdG8gdGhlIHZpZXcuXHJcbiAgICAgICAgY29uc3QgaWQgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCgnaWQnKTtcclxuICAgICAgICBpZiAoaWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YVNlcnZpY2UucHJvZHVjdC5nZXRQcm9kdWN0KGlkKS5zaW5nbGUkLnBpcGUobWFwKCgpID0+IGlucHV0KSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIG9mKGlucHV0KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdE9wdGlvbnNBbmRWYXJpYW50cygpIHtcclxuICAgICAgICB0aGlzLmRhdGFTZXJ2aWNlLnByb2R1Y3RcclxuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLW5vbi1udWxsLWFzc2VydGlvblxyXG4gICAgICAgICAgICAuZ2V0UHJvZHVjdFZhcmlhbnRzT3B0aW9ucyh0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCgnaWQnKSEpXHJcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1ub24tbnVsbC1hc3NlcnRpb25cclxuICAgICAgICAgICAgLm1hcFNpbmdsZSgoeyBwcm9kdWN0IH0pID0+IHByb2R1Y3QhKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHAgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9kdWN0ID0gcDtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFsbFVzZWRPcHRpb25JZHMgPSBwLnZhcmlhbnRzLm1hcCh2ID0+IHYub3B0aW9ucy5tYXAob3B0aW9uID0+IG9wdGlvbi5pZCkpLmZsYXQoKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFsbFVzZWRPcHRpb25Hcm91cElkcyA9IHAudmFyaWFudHNcclxuICAgICAgICAgICAgICAgICAgICAubWFwKHYgPT4gdi5vcHRpb25zLm1hcChvcHRpb24gPT4gb3B0aW9uLmdyb3VwSWQpKVxyXG4gICAgICAgICAgICAgICAgICAgIC5mbGF0KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbkdyb3VwcyA9IHAub3B0aW9uR3JvdXBzLm1hcChvZyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IG9nLmlkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc05ldzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IG9nLm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2tlZDogYWxsVXNlZE9wdGlvbkdyb3VwSWRzLmluY2x1ZGVzKG9nLmlkKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzOiBvZy5vcHRpb25zLm1hcChvID0+ICh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogby5pZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IG8ubmFtZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2tlZDogYWxsVXNlZE9wdGlvbklkcy5pbmNsdWRlcyhvLmlkKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpLFxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVWYXJpYW50cygpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG9wdGlvbnNBcmVFcXVhbChhOiBBcnJheTx7IG5hbWU6IHN0cmluZyB9PiwgYjogQXJyYXk8eyBuYW1lOiBzdHJpbmcgfT4pOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy50b09wdGlvblN0cmluZyhhKSA9PT0gdGhpcy50b09wdGlvblN0cmluZyhiKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG9wdGlvbnNBcmVTdWJzZXQoYTogQXJyYXk8eyBuYW1lOiBzdHJpbmcgfT4sIGI6IEFycmF5PHsgbmFtZTogc3RyaW5nIH0+KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudG9PcHRpb25TdHJpbmcoYikuaW5jbHVkZXModGhpcy50b09wdGlvblN0cmluZyhhKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB0b09wdGlvblN0cmluZyhvOiBBcnJheTx7IG5hbWU6IHN0cmluZyB9Pik6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIG9cclxuICAgICAgICAgICAgLm1hcCh4ID0+IHgubmFtZSlcclxuICAgICAgICAgICAgLnNvcnQoKVxyXG4gICAgICAgICAgICAuam9pbignfCcpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|