@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
JavaScript
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