UNPKG

@spartacus/cart

Version:

`@spartacus/cart` is a package that you can include in your application, which allows you to use various cart features.

389 lines (379 loc) 17.4 kB
import * as i0 from '@angular/core'; import { Injectable, NgModule } from '@angular/core'; import * as i1$1 from '@angular/router'; import { RouterModule } from '@angular/router'; import * as i2 from '@spartacus/core'; import { facadeFactory, provideDefaultConfigFactory, provideDefaultConfig, AuthGuard, CartEvent } from '@spartacus/core'; import { CartOrderEntriesContext, OrderEntriesSource, CmsPageGuard, PageLayoutComponent, ORDER_ENTRIES_CONTEXT } from '@spartacus/storefront'; import { combineLatest, queueScheduler } from 'rxjs'; import { map, distinctUntilChanged, switchMap, tap, take, filter, observeOn, delayWhen } from 'rxjs/operators'; import * as i1 from '@ngrx/store'; const CART_SAVED_CART_FEATURE = 'cartSavedCart'; const CART_SAVED_CART_CORE_FEATURE = 'cartSavedCartCore'; class SavedCartFacade { } SavedCartFacade.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: SavedCartFacade, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); SavedCartFacade.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: SavedCartFacade, providedIn: 'root', useFactory: () => facadeFactory({ facade: SavedCartFacade, feature: CART_SAVED_CART_CORE_FEATURE, methods: [ 'editSavedCart', 'deleteSavedCart', 'getSavedCart', 'getSavedCartList', 'loadSavedCart', 'clearCloneSavedCart', 'clearRestoreSavedCart', 'clearSaveCart', 'clearSavedCarts', 'get', 'getList', 'getCloneSavedCartProcessError', 'getCloneSavedCartProcessLoading', 'getCloneSavedCartProcessSuccess', 'getRestoreSavedCartProcessError', 'getRestoreSavedCartProcessLoading', 'getRestoreSavedCartProcessSuccess', 'getSaveCartProcessError', 'getSaveCartProcessLoading', 'getSaveCartProcessSuccess', 'getSavedCartListProcess', 'getSavedCartListProcessLoading', 'isStable', 'cloneSavedCart', 'loadSavedCarts', 'restoreSavedCart', 'saveCart', ], async: true, }) }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: SavedCartFacade, decorators: [{ type: Injectable, args: [{ providedIn: 'root', useFactory: () => facadeFactory({ facade: SavedCartFacade, feature: CART_SAVED_CART_CORE_FEATURE, methods: [ 'editSavedCart', 'deleteSavedCart', 'getSavedCart', 'getSavedCartList', 'loadSavedCart', 'clearCloneSavedCart', 'clearRestoreSavedCart', 'clearSaveCart', 'clearSavedCarts', 'get', 'getList', 'getCloneSavedCartProcessError', 'getCloneSavedCartProcessLoading', 'getCloneSavedCartProcessSuccess', 'getRestoreSavedCartProcessError', 'getRestoreSavedCartProcessLoading', 'getRestoreSavedCartProcessSuccess', 'getSaveCartProcessError', 'getSaveCartProcessLoading', 'getSaveCartProcessSuccess', 'getSavedCartListProcess', 'getSavedCartListProcessLoading', 'isStable', 'cloneSavedCart', 'loadSavedCarts', 'restoreSavedCart', 'saveCart', ], async: true, }), }] }] }); class SavedCartOrderEntriesContext extends CartOrderEntriesContext { constructor(actionsSubject, userIdService, multiCartService, savedCartService, routingService) { super(actionsSubject); this.actionsSubject = actionsSubject; this.userIdService = userIdService; this.multiCartService = multiCartService; this.savedCartService = savedCartService; this.routingService = routingService; this.type = OrderEntriesSource.SAVED_CART; this.savedCartId$ = this.routingService.getRouterState().pipe(map((routingData) => routingData.state.params.savedCartId), distinctUntilChanged()); } getEntries() { return this.savedCartId$.pipe(switchMap((cartId) => this.savedCartService.get(cartId)), map((cart) => { var _a; return (_a = cart === null || cart === void 0 ? void 0 : cart.entries) !== null && _a !== void 0 ? _a : []; })); } add(products) { return combineLatest([ this.userIdService.takeUserId(), this.savedCartId$, ]).pipe(tap(([userId, cartId]) => this.multiCartService.addEntries(userId, cartId, products)), map(([_userId, cartId]) => cartId)); } } SavedCartOrderEntriesContext.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: SavedCartOrderEntriesContext, deps: [{ token: i1.ActionsSubject }, { token: i2.UserIdService }, { token: i2.MultiCartService }, { token: SavedCartFacade }, { token: i2.RoutingService }], target: i0.ɵɵFactoryTarget.Injectable }); SavedCartOrderEntriesContext.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: SavedCartOrderEntriesContext, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: SavedCartOrderEntriesContext, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }], ctorParameters: function () { return [{ type: i1.ActionsSubject }, { type: i2.UserIdService }, { type: i2.MultiCartService }, { type: SavedCartFacade }, { type: i2.RoutingService }]; } }); class NewSavedCartOrderEntriesContext extends CartOrderEntriesContext { constructor(actionsSubject, userIdService, multiCartService, savedCartService) { super(actionsSubject); this.actionsSubject = actionsSubject; this.userIdService = userIdService; this.multiCartService = multiCartService; this.savedCartService = savedCartService; this.type = OrderEntriesSource.NEW_SAVED_CART; } addEntries(products, savedCartInfo) { return this.add(products, savedCartInfo).pipe(switchMap((cartId) => this.getResults(cartId)), take(products.length)); } add(products, savedCartInfo) { return this.userIdService.takeUserId().pipe(switchMap((userId) => this.multiCartService .createCart({ userId, extraData: { active: false }, }) .pipe(filter((cartData) => { var _a; return Boolean((_a = cartData.value) === null || _a === void 0 ? void 0 : _a.code); }), map((cartData) => { var _a; return (_a = cartData.value) === null || _a === void 0 ? void 0 : _a.code; }), tap((cartId) => { this.savedCartService.saveCart({ cartId, saveCartName: savedCartInfo === null || savedCartInfo === void 0 ? void 0 : savedCartInfo.name, saveCartDescription: savedCartInfo === null || savedCartInfo === void 0 ? void 0 : savedCartInfo.description, }); this.savedCartService.loadSavedCarts(); }), observeOn(queueScheduler), delayWhen(() => this.savedCartService .getSaveCartProcessLoading() .pipe(filter((loading) => !loading))), tap((cartId) => this.multiCartService.addEntries(userId, cartId, products))))); } } NewSavedCartOrderEntriesContext.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: NewSavedCartOrderEntriesContext, deps: [{ token: i1.ActionsSubject }, { token: i2.UserIdService }, { token: i2.MultiCartService }, { token: SavedCartFacade }], target: i0.ɵɵFactoryTarget.Injectable }); NewSavedCartOrderEntriesContext.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: NewSavedCartOrderEntriesContext, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: NewSavedCartOrderEntriesContext, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }], ctorParameters: function () { return [{ type: i1.ActionsSubject }, { type: i2.UserIdService }, { type: i2.MultiCartService }, { type: SavedCartFacade }]; } }); // TODO: Inline this factory when we start releasing Ivy compiled libraries function defaultCartSavedCartComponentsConfig() { const config = { featureModules: { [CART_SAVED_CART_FEATURE]: { cmsComponents: [ 'AddToSavedCartsComponent', 'AccountSavedCartHistoryComponent', 'SavedCartDetailsOverviewComponent', 'SavedCartDetailsItemsComponent', 'SavedCartDetailsActionComponent', ], }, // by default core is bundled together with components [CART_SAVED_CART_CORE_FEATURE]: CART_SAVED_CART_FEATURE, }, }; return config; } class SavedCartRootModule { } SavedCartRootModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: SavedCartRootModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); SavedCartRootModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: SavedCartRootModule, imports: [i1$1.RouterModule] }); SavedCartRootModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: SavedCartRootModule, providers: [ provideDefaultConfigFactory(defaultCartSavedCartComponentsConfig), provideDefaultConfig({ routing: { routes: { savedCarts: { paths: ['my-account/saved-carts'], }, savedCartsDetails: { paths: ['my-account/saved-cart/:savedCartId'], paramsMapping: { savedCartId: 'savedCartId' }, }, }, }, }), ], imports: [[ RouterModule.forChild([ { // @ts-ignore path: null, canActivate: [AuthGuard, CmsPageGuard], component: PageLayoutComponent, data: { cxRoute: 'savedCartsDetails', cxContext: { [ORDER_ENTRIES_CONTEXT]: SavedCartOrderEntriesContext, }, }, }, { // @ts-ignore path: null, canActivate: [AuthGuard, CmsPageGuard], component: PageLayoutComponent, data: { cxRoute: 'savedCarts', cxContext: { [ORDER_ENTRIES_CONTEXT]: NewSavedCartOrderEntriesContext, }, }, }, ]), ]] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: SavedCartRootModule, decorators: [{ type: NgModule, args: [{ imports: [ RouterModule.forChild([ { // @ts-ignore path: null, canActivate: [AuthGuard, CmsPageGuard], component: PageLayoutComponent, data: { cxRoute: 'savedCartsDetails', cxContext: { [ORDER_ENTRIES_CONTEXT]: SavedCartOrderEntriesContext, }, }, }, { // @ts-ignore path: null, canActivate: [AuthGuard, CmsPageGuard], component: PageLayoutComponent, data: { cxRoute: 'savedCarts', cxContext: { [ORDER_ENTRIES_CONTEXT]: NewSavedCartOrderEntriesContext, }, }, }, ]), ], providers: [ provideDefaultConfigFactory(defaultCartSavedCartComponentsConfig), provideDefaultConfig({ routing: { routes: { savedCarts: { paths: ['my-account/saved-carts'], }, savedCartsDetails: { paths: ['my-account/saved-cart/:savedCartId'], paramsMapping: { savedCartId: 'savedCartId' }, }, }, }, }), ], }] }] }); /** * Base saved cart event. Most cart events should have these properties. */ class SavedCartEvent extends CartEvent { } // ===================================================================== class DeleteSavedCartEvent extends SavedCartEvent { } /** * Event's type */ DeleteSavedCartEvent.type = 'DeleteSavedCartEvent'; class DeleteSavedCartSuccessEvent extends SavedCartEvent { } /** * Event's type */ DeleteSavedCartSuccessEvent.type = 'DeleteSavedCartSuccessEvent'; class DeleteSavedCartFailEvent extends SavedCartEvent { } /** * Event's type */ DeleteSavedCartFailEvent.type = 'DeleteSavedCartFailEvent'; class SaveCartEvent extends SavedCartEvent { } /** * Event's type */ SaveCartEvent.type = 'SaveCartEvent'; class SaveCartSuccessEvent extends SavedCartEvent { } /** * Event's type */ SaveCartSuccessEvent.type = 'SaveCartSuccessEvent'; class SaveCartFailEvent extends SavedCartEvent { } /** * Event's type */ SaveCartFailEvent.type = 'SaveCartEvent'; class RestoreSavedCartEvent extends SavedCartEvent { } /** * Event's type */ RestoreSavedCartEvent.type = 'RestoreSavedCartEvent'; class RestoreSavedCartSuccessEvent extends SavedCartEvent { } /** * Event's type */ RestoreSavedCartSuccessEvent.type = 'RestoreSavedCartSuccessEvent'; class RestoreSavedCartFailEvent extends SavedCartEvent { } /** * Event's type */ RestoreSavedCartFailEvent.type = 'RestoreSavedCartFailEvent'; class EditSavedCartEvent extends SavedCartEvent { } /** * Event's type */ EditSavedCartEvent.type = 'EditSavedCartEvent'; class EditSavedCartSuccessEvent extends SavedCartEvent { } /** * Event's type */ EditSavedCartSuccessEvent.type = 'EditSavedCartSuccessEvent'; class EditSavedCartFailEvent extends SavedCartEvent { } /** * Event's type */ EditSavedCartFailEvent.type = 'EditSavedCartFailEvent'; class CloneSavedCartEvent extends SavedCartEvent { } /** * Event's type */ CloneSavedCartEvent.type = 'CloneSavedCartEvent'; class CloneSavedCartSuccessEvent extends SavedCartEvent { } /** * Event's type */ CloneSavedCartSuccessEvent.type = 'CloneSavedCartSuccessEvent'; class CloneSavedCartFailEvent extends SavedCartEvent { } /** * Event's type */ CloneSavedCartFailEvent.type = 'CloneSavedCartFailEvent'; var SavedCartFormType; (function (SavedCartFormType) { SavedCartFormType["EDIT"] = "edit"; SavedCartFormType["DELETE"] = "delete"; SavedCartFormType["SAVE"] = "save"; SavedCartFormType["RESTORE"] = "restore"; })(SavedCartFormType || (SavedCartFormType = {})); /** * Generated bundle index. Do not edit. */ export { CART_SAVED_CART_CORE_FEATURE, CART_SAVED_CART_FEATURE, CloneSavedCartEvent, CloneSavedCartFailEvent, CloneSavedCartSuccessEvent, DeleteSavedCartEvent, DeleteSavedCartFailEvent, DeleteSavedCartSuccessEvent, EditSavedCartEvent, EditSavedCartFailEvent, EditSavedCartSuccessEvent, NewSavedCartOrderEntriesContext, RestoreSavedCartEvent, RestoreSavedCartFailEvent, RestoreSavedCartSuccessEvent, SaveCartEvent, SaveCartFailEvent, SaveCartSuccessEvent, SavedCartEvent, SavedCartFacade, SavedCartFormType, SavedCartOrderEntriesContext, SavedCartRootModule, defaultCartSavedCartComponentsConfig }; //# sourceMappingURL=spartacus-cart-saved-cart-root.js.map