@daffodil/product-composite 0.42.4 → 0.44.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.
@@ -1,6 +1,7 @@
1
1
  import { NgModule } from '@angular/core';
2
2
  import { StoreModule } from '@ngrx/store';
3
- import { daffCompositeProductReducers, DAFF_COMPOSITE_PRODUCT_STORE_FEATURE_KEY, } from './reducers/public_api';
3
+ import { DAFF_PRODUCT_COMPOSITE_REDUCERS } from './reducers/injection-tokens/reducers.token';
4
+ import { DAFF_COMPOSITE_PRODUCT_STORE_FEATURE_KEY } from './reducers/public_api';
4
5
  import * as i0 from "@angular/core";
5
6
  import * as i1 from "@ngrx/store";
6
7
  /**
@@ -11,14 +12,14 @@ export class DaffCompositeProductStateModule {
11
12
  /** @nocollapse */ /** @nocollapse */ DaffCompositeProductStateModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffCompositeProductStateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
12
13
  /** @nocollapse */ /** @nocollapse */ DaffCompositeProductStateModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffCompositeProductStateModule, imports: [i1.StoreFeatureModule] });
13
14
  /** @nocollapse */ /** @nocollapse */ DaffCompositeProductStateModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffCompositeProductStateModule, imports: [[
14
- StoreModule.forFeature(DAFF_COMPOSITE_PRODUCT_STORE_FEATURE_KEY, daffCompositeProductReducers),
15
+ StoreModule.forFeature(DAFF_COMPOSITE_PRODUCT_STORE_FEATURE_KEY, DAFF_PRODUCT_COMPOSITE_REDUCERS),
15
16
  ]] });
16
17
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffCompositeProductStateModule, decorators: [{
17
18
  type: NgModule,
18
19
  args: [{
19
20
  imports: [
20
- StoreModule.forFeature(DAFF_COMPOSITE_PRODUCT_STORE_FEATURE_KEY, daffCompositeProductReducers),
21
+ StoreModule.forFeature(DAFF_COMPOSITE_PRODUCT_STORE_FEATURE_KEY, DAFF_PRODUCT_COMPOSITE_REDUCERS),
21
22
  ],
22
23
  }]
23
24
  }] });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9zaXRlLXByb2R1Y3Qtc3RhdGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy9wcm9kdWN0LWNvbXBvc2l0ZS9zdGF0ZS9zcmMvY29tcG9zaXRlLXByb2R1Y3Qtc3RhdGUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUxQyxPQUFPLEVBQ0wsNEJBQTRCLEVBQzVCLHdDQUF3QyxHQUN6QyxNQUFNLHVCQUF1QixDQUFDOzs7QUFFL0I7O0dBRUc7QUFNSCxNQUFNLE9BQU8sK0JBQStCOztrS0FBL0IsK0JBQStCO21LQUEvQiwrQkFBK0I7bUtBQS9CLCtCQUErQixZQUpqQztZQUNQLFdBQVcsQ0FBQyxVQUFVLENBQUMsd0NBQXdDLEVBQUUsNEJBQTRCLENBQUM7U0FDL0Y7MkZBRVUsK0JBQStCO2tCQUwzQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxXQUFXLENBQUMsVUFBVSxDQUFDLHdDQUF3QyxFQUFFLDRCQUE0QixDQUFDO3FCQUMvRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdG9yZU1vZHVsZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcblxuaW1wb3J0IHtcbiAgZGFmZkNvbXBvc2l0ZVByb2R1Y3RSZWR1Y2VycyxcbiAgREFGRl9DT01QT1NJVEVfUFJPRFVDVF9TVE9SRV9GRUFUVVJFX0tFWSxcbn0gZnJvbSAnLi9yZWR1Y2Vycy9wdWJsaWNfYXBpJztcblxuLyoqXG4gKiBBIG1vZHVsZSB0aGF0IHByb3ZpZGVzIHRoZSBkZWZhdWx0IHJlZHVjZXJzIGFuZCBlZmZlY3RzIGZvciBjb21wb3NpdGUgcHJvZHVjdCByZWR1eCBzdGF0ZS5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIFN0b3JlTW9kdWxlLmZvckZlYXR1cmUoREFGRl9DT01QT1NJVEVfUFJPRFVDVF9TVE9SRV9GRUFUVVJFX0tFWSwgZGFmZkNvbXBvc2l0ZVByb2R1Y3RSZWR1Y2VycyksXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIERhZmZDb21wb3NpdGVQcm9kdWN0U3RhdGVNb2R1bGUgeyB9XG4iXX0=
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9zaXRlLXByb2R1Y3Qtc3RhdGUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy9wcm9kdWN0LWNvbXBvc2l0ZS9zdGF0ZS9zcmMvY29tcG9zaXRlLXByb2R1Y3Qtc3RhdGUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUxQyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM3RixPQUFPLEVBQUUsd0NBQXdDLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBRWpGOztHQUVHO0FBTUgsTUFBTSxPQUFPLCtCQUErQjs7a0tBQS9CLCtCQUErQjttS0FBL0IsK0JBQStCO21LQUEvQiwrQkFBK0IsWUFKakM7WUFDUCxXQUFXLENBQUMsVUFBVSxDQUFDLHdDQUF3QyxFQUFFLCtCQUErQixDQUFDO1NBQ2xHOzJGQUVVLCtCQUErQjtrQkFMM0MsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsV0FBVyxDQUFDLFVBQVUsQ0FBQyx3Q0FBd0MsRUFBRSwrQkFBK0IsQ0FBQztxQkFDbEc7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3RvcmVNb2R1bGUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5cbmltcG9ydCB7IERBRkZfUFJPRFVDVF9DT01QT1NJVEVfUkVEVUNFUlMgfSBmcm9tICcuL3JlZHVjZXJzL2luamVjdGlvbi10b2tlbnMvcmVkdWNlcnMudG9rZW4nO1xuaW1wb3J0IHsgREFGRl9DT01QT1NJVEVfUFJPRFVDVF9TVE9SRV9GRUFUVVJFX0tFWSB9IGZyb20gJy4vcmVkdWNlcnMvcHVibGljX2FwaSc7XG5cbi8qKlxuICogQSBtb2R1bGUgdGhhdCBwcm92aWRlcyB0aGUgZGVmYXVsdCByZWR1Y2VycyBhbmQgZWZmZWN0cyBmb3IgY29tcG9zaXRlIHByb2R1Y3QgcmVkdXggc3RhdGUuXG4gKi9cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBTdG9yZU1vZHVsZS5mb3JGZWF0dXJlKERBRkZfQ09NUE9TSVRFX1BST0RVQ1RfU1RPUkVfRkVBVFVSRV9LRVksIERBRkZfUFJPRFVDVF9DT01QT1NJVEVfUkVEVUNFUlMpLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBEYWZmQ29tcG9zaXRlUHJvZHVjdFN0YXRlTW9kdWxlIHsgfVxuIl19
@@ -1,9 +1,92 @@
1
1
  import { createEntityAdapter, } from '@ngrx/entity';
2
+ import { defaultMemoize } from '@ngrx/store';
3
+ import { DaffProductTypeEnum } from '@daffodil/product';
2
4
  /**
3
5
  * Composite Product Item Options Adapter for changing/overwriting entity state.
4
6
  */
5
- export const daffCompositeProductAppliedOptionsEntitiesAdapter = (() => {
6
- let cache;
7
- return () => cache = cache || createEntityAdapter();
8
- })();
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9zaXRlLXByb2R1Y3QtZW50aXRpZXMtcmVkdWNlci1hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wcm9kdWN0LWNvbXBvc2l0ZS9zdGF0ZS9zcmMvcmVkdWNlcnMvY29tcG9zaXRlLXByb2R1Y3QtZW50aXRpZXMvY29tcG9zaXRlLXByb2R1Y3QtZW50aXRpZXMtcmVkdWNlci1hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxtQkFBbUIsR0FDcEIsTUFBTSxjQUFjLENBQUM7QUFJdEI7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxpREFBaUQsR0FBRyxDQUFDLEdBQUcsRUFBRTtJQUNyRSxJQUFJLEtBQUssQ0FBQztJQUNWLE9BQU8sR0FBOEMsRUFBRSxDQUNyRCxLQUFLLEdBQUcsS0FBSyxJQUFJLG1CQUFtQixFQUE4QixDQUFDO0FBQ3ZFLENBQUMsQ0FBQyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBFbnRpdHlBZGFwdGVyLFxuICBjcmVhdGVFbnRpdHlBZGFwdGVyLFxufSBmcm9tICdAbmdyeC9lbnRpdHknO1xuXG5pbXBvcnQgeyBEYWZmQ29tcG9zaXRlUHJvZHVjdEVudGl0eSB9IGZyb20gJy4vY29tcG9zaXRlLXByb2R1Y3QtZW50aXR5JztcblxuLyoqXG4gKiBDb21wb3NpdGUgUHJvZHVjdCBJdGVtIE9wdGlvbnMgQWRhcHRlciBmb3IgY2hhbmdpbmcvb3ZlcndyaXRpbmcgZW50aXR5IHN0YXRlLlxuICovXG5leHBvcnQgY29uc3QgZGFmZkNvbXBvc2l0ZVByb2R1Y3RBcHBsaWVkT3B0aW9uc0VudGl0aWVzQWRhcHRlciA9ICgoKSA9PiB7XG4gIGxldCBjYWNoZTtcbiAgcmV0dXJuICgpOiBFbnRpdHlBZGFwdGVyPERhZmZDb21wb3NpdGVQcm9kdWN0RW50aXR5PiA9PlxuICAgIGNhY2hlID0gY2FjaGUgfHwgY3JlYXRlRW50aXR5QWRhcHRlcjxEYWZmQ29tcG9zaXRlUHJvZHVjdEVudGl0eT4oKTtcbn0pKCk7XG4iXX0=
7
+ export class DaffCompositeProductAppliedOptionsEntitiesAdapter {
8
+ constructor() {
9
+ /**
10
+ * @docs-private
11
+ */
12
+ this._adapter = createEntityAdapter();
13
+ }
14
+ /**
15
+ * Gets the initial entity state.
16
+ */
17
+ getInitialState() {
18
+ return this._adapter.getInitialState();
19
+ }
20
+ /**
21
+ * Get the entity selectors.
22
+ */
23
+ getSelectors() {
24
+ return this._adapter.getSelectors();
25
+ }
26
+ /**
27
+ * Upserts the given composite products into state.
28
+ */
29
+ upsertProducts(state, ...products) {
30
+ return this._adapter.upsertMany(this.mapOptionsEntities(products), state);
31
+ }
32
+ ;
33
+ /**
34
+ * Apply the specified option for the given composite product item.
35
+ */
36
+ applyOption(state, productId, itemId, optionId, qty) {
37
+ return this._adapter.upsertOne({
38
+ id: productId,
39
+ items: {
40
+ ...state.entities[productId].items,
41
+ [itemId]: {
42
+ value: optionId,
43
+ qty: qty ?? 1,
44
+ },
45
+ },
46
+ }, state);
47
+ }
48
+ /**
49
+ * @docs-private
50
+ */
51
+ mapOptionsEntities(products) {
52
+ return products.filter(product => product.type === DaffProductTypeEnum.Composite)
53
+ .map(product => this.buildCompositeProductAppliedOptionsEntity(product));
54
+ }
55
+ /**
56
+ * @docs-private
57
+ */
58
+ buildCompositeProductAppliedOptionsEntity(product) {
59
+ return {
60
+ id: product.id,
61
+ items: product.items.reduce((acc, item) => ({
62
+ ...acc,
63
+ [item.id]: this.getDefaultOption(item),
64
+ }), {}),
65
+ };
66
+ }
67
+ /**
68
+ * Sets the default item option to the specified default option if it is in stock.
69
+ * Does not set a default option if a default is not specified.
70
+ * Does not set a default option but does set a default qty if the default is out of stock.
71
+ *
72
+ * @param item a DaffCompositeProductItem
73
+ * @docs-private
74
+ */
75
+ getDefaultOption(item) {
76
+ const defaultOptionIndex = item.options.findIndex(option => option.is_default);
77
+ if (defaultOptionIndex > -1) {
78
+ return {
79
+ value: item.options[defaultOptionIndex].in_stock ? item.options[defaultOptionIndex].id : null,
80
+ qty: item.options[defaultOptionIndex].quantity,
81
+ };
82
+ }
83
+ else {
84
+ return { value: null, qty: null };
85
+ }
86
+ }
87
+ }
88
+ /**
89
+ * Gets the composite product entity adapter singleton.
90
+ */
91
+ export const daffCompositeProductAppliedOptionsEntitiesAdapter = defaultMemoize(() => new DaffCompositeProductAppliedOptionsEntitiesAdapter()).memoized;
92
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9zaXRlLXByb2R1Y3QtZW50aXRpZXMtcmVkdWNlci1hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9wcm9kdWN0LWNvbXBvc2l0ZS9zdGF0ZS9zcmMvcmVkdWNlcnMvY29tcG9zaXRlLXByb2R1Y3QtZW50aXRpZXMvY29tcG9zaXRlLXByb2R1Y3QtZW50aXRpZXMtcmVkdWNlci1hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxtQkFBbUIsR0FFcEIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUU3QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQVV4RDs7R0FFRztBQUNILE1BQU0sT0FBTyxpREFBaUQ7SUFBOUQ7UUFDRTs7V0FFRztRQUNLLGFBQVEsR0FBRyxtQkFBbUIsRUFBOEIsQ0FBQztJQXNGdkUsQ0FBQztJQXBGQzs7T0FFRztJQUNILGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxjQUFjLENBQUMsS0FBUSxFQUFFLEdBQUcsUUFBZ0M7UUFDMUQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FDN0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxFQUNqQyxLQUFLLENBQ04sQ0FBQztJQUNKLENBQUM7SUFBQSxDQUFDO0lBRUY7O09BRUc7SUFDSCxXQUFXLENBQUMsS0FBUSxFQUFFLFNBQXFDLEVBQUUsTUFBc0MsRUFBRSxRQUE4QyxFQUFFLEdBQVk7UUFDL0osT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FDNUI7WUFDRSxFQUFFLEVBQUUsU0FBUztZQUNiLEtBQUssRUFBRTtnQkFDTCxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSztnQkFDbEMsQ0FBQyxNQUFNLENBQUMsRUFBRTtvQkFDUixLQUFLLEVBQUUsUUFBUTtvQkFDZixHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7aUJBQ2Q7YUFDRjtTQUNGLEVBQ0QsS0FBSyxDQUNOLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSyxrQkFBa0IsQ0FBQyxRQUFnQztRQUN6RCxPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLG1CQUFtQixDQUFDLFNBQVMsQ0FBQzthQUM5RSxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMseUNBQXlDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQ7O09BRUc7SUFDSyx5Q0FBeUMsQ0FBQyxPQUE2QjtRQUM3RSxPQUFPO1lBQ0wsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFO1lBQ2QsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDMUMsR0FBRyxHQUFHO2dCQUNOLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7YUFDdkMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztTQUNSLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNLLGdCQUFnQixDQUFDLElBQThCO1FBQ3JELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFL0UsSUFBRyxrQkFBa0IsR0FBRyxDQUFDLENBQUMsRUFBRTtZQUMxQixPQUFPO2dCQUNMLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJO2dCQUM3RixHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLFFBQVE7YUFDL0MsQ0FBQztTQUNIO2FBQU07WUFDTCxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUM7U0FDbkM7SUFDSCxDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlEQUFpRCxHQUE0RCxjQUFjLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxpREFBaUQsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgY3JlYXRlRW50aXR5QWRhcHRlcixcbiAgRW50aXR5U3RhdGUsXG59IGZyb20gJ0BuZ3J4L2VudGl0eSc7XG5pbXBvcnQgeyBkZWZhdWx0TWVtb2l6ZSB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcblxuaW1wb3J0IHsgRGFmZlByb2R1Y3RUeXBlRW51bSB9IGZyb20gJ0BkYWZmb2RpbC9wcm9kdWN0JztcbmltcG9ydCB7XG4gIERhZmZDb21wb3NpdGVQcm9kdWN0LFxuICBEYWZmQ29tcG9zaXRlUHJvZHVjdEl0ZW0sXG4gIERhZmZDb21wb3NpdGVDb25maWd1cmF0aW9uSXRlbSxcbiAgRGFmZkNvbXBvc2l0ZVByb2R1Y3RJdGVtT3B0aW9uLFxufSBmcm9tICdAZGFmZm9kaWwvcHJvZHVjdC1jb21wb3NpdGUnO1xuXG5pbXBvcnQgeyBEYWZmQ29tcG9zaXRlUHJvZHVjdEVudGl0eSB9IGZyb20gJy4vY29tcG9zaXRlLXByb2R1Y3QtZW50aXR5JztcblxuLyoqXG4gKiBDb21wb3NpdGUgUHJvZHVjdCBJdGVtIE9wdGlvbnMgQWRhcHRlciBmb3IgY2hhbmdpbmcvb3ZlcndyaXRpbmcgZW50aXR5IHN0YXRlLlxuICovXG5leHBvcnQgY2xhc3MgRGFmZkNvbXBvc2l0ZVByb2R1Y3RBcHBsaWVkT3B0aW9uc0VudGl0aWVzQWRhcHRlcjxUIGV4dGVuZHMgRW50aXR5U3RhdGU8RGFmZkNvbXBvc2l0ZVByb2R1Y3RFbnRpdHk+ID0gRW50aXR5U3RhdGU8RGFmZkNvbXBvc2l0ZVByb2R1Y3RFbnRpdHk+PiB7XG4gIC8qKlxuICAgKiBAZG9jcy1wcml2YXRlXG4gICAqL1xuICBwcml2YXRlIF9hZGFwdGVyID0gY3JlYXRlRW50aXR5QWRhcHRlcjxEYWZmQ29tcG9zaXRlUHJvZHVjdEVudGl0eT4oKTtcblxuICAvKipcbiAgICogR2V0cyB0aGUgaW5pdGlhbCBlbnRpdHkgc3RhdGUuXG4gICAqL1xuICBnZXRJbml0aWFsU3RhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXIuZ2V0SW5pdGlhbFN0YXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBlbnRpdHkgc2VsZWN0b3JzLlxuICAgKi9cbiAgZ2V0U2VsZWN0b3JzKCkge1xuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyLmdldFNlbGVjdG9ycygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwc2VydHMgdGhlIGdpdmVuIGNvbXBvc2l0ZSBwcm9kdWN0cyBpbnRvIHN0YXRlLlxuICAgKi9cbiAgdXBzZXJ0UHJvZHVjdHMoc3RhdGU6IFQsIC4uLnByb2R1Y3RzOiBEYWZmQ29tcG9zaXRlUHJvZHVjdFtdKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXIudXBzZXJ0TWFueShcbiAgICAgIHRoaXMubWFwT3B0aW9uc0VudGl0aWVzKHByb2R1Y3RzKSxcbiAgICAgIHN0YXRlLFxuICAgICk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEFwcGx5IHRoZSBzcGVjaWZpZWQgb3B0aW9uIGZvciB0aGUgZ2l2ZW4gY29tcG9zaXRlIHByb2R1Y3QgaXRlbS5cbiAgICovXG4gIGFwcGx5T3B0aW9uKHN0YXRlOiBULCBwcm9kdWN0SWQ6IERhZmZDb21wb3NpdGVQcm9kdWN0WydpZCddLCBpdGVtSWQ6IERhZmZDb21wb3NpdGVQcm9kdWN0SXRlbVsnaWQnXSwgb3B0aW9uSWQ6IERhZmZDb21wb3NpdGVQcm9kdWN0SXRlbU9wdGlvblsnaWQnXSwgcXR5PzogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXIudXBzZXJ0T25lKFxuICAgICAge1xuICAgICAgICBpZDogcHJvZHVjdElkLFxuICAgICAgICBpdGVtczoge1xuICAgICAgICAgIC4uLnN0YXRlLmVudGl0aWVzW3Byb2R1Y3RJZF0uaXRlbXMsXG4gICAgICAgICAgW2l0ZW1JZF06IHtcbiAgICAgICAgICAgIHZhbHVlOiBvcHRpb25JZCxcbiAgICAgICAgICAgIHF0eTogcXR5ID8/IDEsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBzdGF0ZSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkb2NzLXByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgbWFwT3B0aW9uc0VudGl0aWVzKHByb2R1Y3RzOiBEYWZmQ29tcG9zaXRlUHJvZHVjdFtdKTogRGFmZkNvbXBvc2l0ZVByb2R1Y3RFbnRpdHlbXSB7XG4gICAgcmV0dXJuIHByb2R1Y3RzLmZpbHRlcihwcm9kdWN0ID0+IHByb2R1Y3QudHlwZSA9PT0gRGFmZlByb2R1Y3RUeXBlRW51bS5Db21wb3NpdGUpXG4gICAgICAubWFwKHByb2R1Y3QgPT4gdGhpcy5idWlsZENvbXBvc2l0ZVByb2R1Y3RBcHBsaWVkT3B0aW9uc0VudGl0eShwcm9kdWN0KSk7XG4gIH1cblxuICAvKipcbiAgICogQGRvY3MtcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBidWlsZENvbXBvc2l0ZVByb2R1Y3RBcHBsaWVkT3B0aW9uc0VudGl0eShwcm9kdWN0OiBEYWZmQ29tcG9zaXRlUHJvZHVjdCk6IERhZmZDb21wb3NpdGVQcm9kdWN0RW50aXR5IHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHByb2R1Y3QuaWQsXG4gICAgICBpdGVtczogcHJvZHVjdC5pdGVtcy5yZWR1Y2UoKGFjYywgaXRlbSkgPT4gKHtcbiAgICAgICAgLi4uYWNjLFxuICAgICAgICBbaXRlbS5pZF06IHRoaXMuZ2V0RGVmYXVsdE9wdGlvbihpdGVtKSxcbiAgICAgIH0pLCB7fSksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBkZWZhdWx0IGl0ZW0gb3B0aW9uIHRvIHRoZSBzcGVjaWZpZWQgZGVmYXVsdCBvcHRpb24gaWYgaXQgaXMgaW4gc3RvY2suXG4gICAqIERvZXMgbm90IHNldCBhIGRlZmF1bHQgb3B0aW9uIGlmIGEgZGVmYXVsdCBpcyBub3Qgc3BlY2lmaWVkLlxuICAgKiBEb2VzIG5vdCBzZXQgYSBkZWZhdWx0IG9wdGlvbiBidXQgZG9lcyBzZXQgYSBkZWZhdWx0IHF0eSBpZiB0aGUgZGVmYXVsdCBpcyBvdXQgb2Ygc3RvY2suXG4gICAqXG4gICAqIEBwYXJhbSBpdGVtIGEgRGFmZkNvbXBvc2l0ZVByb2R1Y3RJdGVtXG4gICAqIEBkb2NzLXByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgZ2V0RGVmYXVsdE9wdGlvbihpdGVtOiBEYWZmQ29tcG9zaXRlUHJvZHVjdEl0ZW0pOiBEYWZmQ29tcG9zaXRlQ29uZmlndXJhdGlvbkl0ZW0ge1xuICAgIGNvbnN0IGRlZmF1bHRPcHRpb25JbmRleCA9IGl0ZW0ub3B0aW9ucy5maW5kSW5kZXgob3B0aW9uID0+IG9wdGlvbi5pc19kZWZhdWx0KTtcblxuICAgIGlmKGRlZmF1bHRPcHRpb25JbmRleCA+IC0xKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YWx1ZTogaXRlbS5vcHRpb25zW2RlZmF1bHRPcHRpb25JbmRleF0uaW5fc3RvY2sgPyBpdGVtLm9wdGlvbnNbZGVmYXVsdE9wdGlvbkluZGV4XS5pZCA6IG51bGwsXG4gICAgICAgIHF0eTogaXRlbS5vcHRpb25zW2RlZmF1bHRPcHRpb25JbmRleF0ucXVhbnRpdHksXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4geyB2YWx1ZTogbnVsbCwgcXR5OiBudWxsIH07XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogR2V0cyB0aGUgY29tcG9zaXRlIHByb2R1Y3QgZW50aXR5IGFkYXB0ZXIgc2luZ2xldG9uLlxuICovXG5leHBvcnQgY29uc3QgZGFmZkNvbXBvc2l0ZVByb2R1Y3RBcHBsaWVkT3B0aW9uc0VudGl0aWVzQWRhcHRlcjogKCkgPT4gRGFmZkNvbXBvc2l0ZVByb2R1Y3RBcHBsaWVkT3B0aW9uc0VudGl0aWVzQWRhcHRlciA9IGRlZmF1bHRNZW1vaXplKCgpID0+IG5ldyBEYWZmQ29tcG9zaXRlUHJvZHVjdEFwcGxpZWRPcHRpb25zRW50aXRpZXNBZGFwdGVyKCkpLm1lbW9pemVkO1xuIl19
@@ -1,4 +1,3 @@
1
- import { DaffProductTypeEnum, } from '@daffodil/product';
2
1
  import { DaffProductPageActionTypes, DaffProductGridActionTypes, DaffBestSellersActionTypes, DaffProductActionTypes, } from '@daffodil/product/state';
3
2
  import { DaffCompositeProductActionTypes, } from '../../actions/public_api';
4
3
  import { daffCompositeProductAppliedOptionsEntitiesAdapter } from './composite-product-entities-reducer-adapter';
@@ -14,55 +13,14 @@ export function daffCompositeProductEntitiesReducer(state = daffCompositeProduct
14
13
  switch (action.type) {
15
14
  case DaffProductGridActionTypes.ProductGridLoadSuccessAction:
16
15
  case DaffBestSellersActionTypes.BestSellersLoadSuccessAction:
17
- return adapter.upsertMany(mapOptionsEntities(action.payload), state);
16
+ return adapter.upsertProducts(state, ...action.payload);
18
17
  case DaffProductActionTypes.ProductLoadSuccessAction:
19
18
  case DaffProductPageActionTypes.ProductPageLoadSuccessAction:
20
- return adapter.upsertMany(mapOptionsEntities(action.payload.products), state);
19
+ return adapter.upsertProducts(state, ...action.payload.products);
21
20
  case DaffCompositeProductActionTypes.CompositeProductApplyOptionAction:
22
- return adapter.upsertOne({
23
- id: action.id,
24
- items: {
25
- ...state.entities[action.id].items,
26
- [action.itemId]: {
27
- value: action.optionId,
28
- qty: action.qty ? action.qty : 1,
29
- },
30
- },
31
- }, state);
21
+ return adapter.applyOption(state, action.id, action.itemId, action.optionId, action.qty);
32
22
  default:
33
23
  return state;
34
24
  }
35
25
  }
36
- function mapOptionsEntities(products) {
37
- return products.filter(product => product.type === DaffProductTypeEnum.Composite)
38
- .map(product => buildCompositeProductAppliedOptionsEntity(product));
39
- }
40
- function buildCompositeProductAppliedOptionsEntity(product) {
41
- return {
42
- id: product.id,
43
- items: product.items.reduce((acc, item) => ({
44
- ...acc,
45
- [item.id]: getDefaultOption(item),
46
- }), {}),
47
- };
48
- }
49
- /**
50
- * Sets the default item option to the specified default option if it is in stock.
51
- * Does not set a default option if a default is not specified.
52
- * Does not set a default option but does set a default qty if the default is out of stock.
53
- *
54
- * @param item a DaffCompositeProductItem
55
- */
56
- function getDefaultOption(item) {
57
- const defaultOptionIndex = item.options.findIndex(option => option.is_default);
58
- if (defaultOptionIndex > -1) {
59
- return {
60
- value: item.options[defaultOptionIndex].in_stock ? item.options[defaultOptionIndex].id : null,
61
- qty: item.options[defaultOptionIndex].quantity,
62
- };
63
- }
64
- else {
65
- return { value: null, qty: null };
66
- }
67
- }
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9zaXRlLXByb2R1Y3QtZW50aXRpZXMucmVkdWNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcHJvZHVjdC1jb21wb3NpdGUvc3RhdGUvc3JjL3JlZHVjZXJzL2NvbXBvc2l0ZS1wcm9kdWN0LWVudGl0aWVzL2NvbXBvc2l0ZS1wcm9kdWN0LWVudGl0aWVzLnJlZHVjZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUVMLG1CQUFtQixHQUNwQixNQUFNLG1CQUFtQixDQUFDO0FBTTNCLE9BQU8sRUFFTCwwQkFBMEIsRUFDMUIsMEJBQTBCLEVBSTFCLDBCQUEwQixFQUMxQixzQkFBc0IsR0FDdkIsTUFBTSx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEVBRUwsK0JBQStCLEdBQ2hDLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLGlEQUFpRCxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFHakg7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLG1DQUFtQyxDQUNqRCxLQUFLLEdBQUcsaURBQWlELEVBQUUsQ0FBQyxlQUFlLEVBQUUsRUFDN0UsTUFBa0o7SUFDbEosTUFBTSxPQUFPLEdBQUcsaURBQWlELEVBQUUsQ0FBQztJQUNwRSxRQUFRLE1BQU0sQ0FBQyxJQUFJLEVBQUU7UUFDbkIsS0FBSywwQkFBMEIsQ0FBQyw0QkFBNEIsQ0FBQztRQUM3RCxLQUFLLDBCQUEwQixDQUFDLDRCQUE0QjtZQUMxRCxPQUFPLE9BQU8sQ0FBQyxVQUFVLENBQ3ZCLGtCQUFrQixDQUFlLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFDaEQsS0FBSyxDQUNOLENBQUM7UUFDSixLQUFLLHNCQUFzQixDQUFDLHdCQUF3QixDQUFDO1FBQ3JELEtBQUssMEJBQTBCLENBQUMsNEJBQTRCO1lBQzFELE9BQU8sT0FBTyxDQUFDLFVBQVUsQ0FDdkIsa0JBQWtCLENBQWUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFDekQsS0FBSyxDQUNOLENBQUM7UUFDSixLQUFLLCtCQUErQixDQUFDLGlDQUFpQztZQUNwRSxPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQ3RCO2dCQUNFLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRTtnQkFDYixLQUFLLEVBQUU7b0JBQ0wsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLO29CQUNsQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRTt3QkFDZixLQUFLLEVBQUUsTUFBTSxDQUFDLFFBQVE7d0JBQ3RCLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUNqQztpQkFDRjthQUNGLEVBQ0QsS0FBSyxDQUNOLENBQUM7UUFDSjtZQUNFLE9BQU8sS0FBSyxDQUFDO0tBQ2hCO0FBQ0gsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsUUFBZ0M7SUFDMUQsT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksS0FBSyxtQkFBbUIsQ0FBQyxTQUFTLENBQUM7U0FDOUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMseUNBQXlDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUN4RSxDQUFDO0FBRUQsU0FBUyx5Q0FBeUMsQ0FBQyxPQUE2QjtJQUM5RSxPQUFPO1FBQ0wsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFO1FBQ2QsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMxQyxHQUFHLEdBQUc7WUFDTixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7U0FDbEMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztLQUNSLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FBQyxJQUE4QjtJQUN0RCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRS9FLElBQUcsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLEVBQUU7UUFDMUIsT0FBTztZQUNMLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQzdGLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLENBQUMsUUFBUTtTQUMvQyxDQUFDO0tBQ0g7U0FBTTtRQUNMLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQztLQUNuQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHlTdGF0ZSB9IGZyb20gJ0BuZ3J4L2VudGl0eSc7XG5cbmltcG9ydCB7XG4gIERhZmZQcm9kdWN0LFxuICBEYWZmUHJvZHVjdFR5cGVFbnVtLFxufSBmcm9tICdAZGFmZm9kaWwvcHJvZHVjdCc7XG5pbXBvcnQge1xuICBEYWZmQ29tcG9zaXRlQ29uZmlndXJhdGlvbkl0ZW0sXG4gIERhZmZDb21wb3NpdGVQcm9kdWN0LFxuICBEYWZmQ29tcG9zaXRlUHJvZHVjdEl0ZW0sXG59IGZyb20gJ0BkYWZmb2RpbC9wcm9kdWN0LWNvbXBvc2l0ZSc7XG5pbXBvcnQge1xuICBEYWZmUHJvZHVjdFBhZ2VBY3Rpb25zLFxuICBEYWZmUHJvZHVjdFBhZ2VBY3Rpb25UeXBlcyxcbiAgRGFmZlByb2R1Y3RHcmlkQWN0aW9uVHlwZXMsXG4gIERhZmZQcm9kdWN0R3JpZEFjdGlvbnMsXG4gIERhZmZCZXN0U2VsbGVyc0FjdGlvbnMsXG4gIERhZmZQcm9kdWN0QWN0aW9ucyxcbiAgRGFmZkJlc3RTZWxsZXJzQWN0aW9uVHlwZXMsXG4gIERhZmZQcm9kdWN0QWN0aW9uVHlwZXMsXG59IGZyb20gJ0BkYWZmb2RpbC9wcm9kdWN0L3N0YXRlJztcblxuaW1wb3J0IHtcbiAgRGFmZkNvbXBvc2l0ZVByb2R1Y3RBY3Rpb25zLFxuICBEYWZmQ29tcG9zaXRlUHJvZHVjdEFjdGlvblR5cGVzLFxufSBmcm9tICcuLi8uLi9hY3Rpb25zL3B1YmxpY19hcGknO1xuaW1wb3J0IHsgZGFmZkNvbXBvc2l0ZVByb2R1Y3RBcHBsaWVkT3B0aW9uc0VudGl0aWVzQWRhcHRlciB9IGZyb20gJy4vY29tcG9zaXRlLXByb2R1Y3QtZW50aXRpZXMtcmVkdWNlci1hZGFwdGVyJztcbmltcG9ydCB7IERhZmZDb21wb3NpdGVQcm9kdWN0RW50aXR5IH0gZnJvbSAnLi9jb21wb3NpdGUtcHJvZHVjdC1lbnRpdHknO1xuXG4vKipcbiAqIFJlZHVjZXIgZnVuY3Rpb24gdGhhdCBjYXRjaGVzIGFjdGlvbnMgYW5kIGNoYW5nZXMvb3ZlcndyaXRlcyBjb21wb3NpdGUgcHJvZHVjdCBlbnRpdGllcyBzdGF0ZS5cbiAqXG4gKiBAcGFyYW0gc3RhdGUgY3VycmVudCBTdGF0ZSBvZiB0aGUgcmVkdXggc3RvcmVcbiAqIEBwYXJhbSBhY3Rpb24gUHJvZHVjdEdyaWQsIEJlc3RTZWxsZXJzLCBQcm9kdWN0LCBvciBDb21wb3NpdGUgUHJvZHVjdCBhY3Rpb25zXG4gKiBAcmV0dXJucyBQcm9kdWN0IGVudGl0aWVzIHN0YXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYWZmQ29tcG9zaXRlUHJvZHVjdEVudGl0aWVzUmVkdWNlcjxUIGV4dGVuZHMgRGFmZlByb2R1Y3QsIFYgZXh0ZW5kcyBEYWZmQ29tcG9zaXRlUHJvZHVjdD4oXG4gIHN0YXRlID0gZGFmZkNvbXBvc2l0ZVByb2R1Y3RBcHBsaWVkT3B0aW9uc0VudGl0aWVzQWRhcHRlcigpLmdldEluaXRpYWxTdGF0ZSgpLFxuICBhY3Rpb246IERhZmZQcm9kdWN0R3JpZEFjdGlvbnM8VD4gfCBEYWZmQmVzdFNlbGxlcnNBY3Rpb25zPFQ+IHwgRGFmZlByb2R1Y3RBY3Rpb25zPFQ+IHwgRGFmZlByb2R1Y3RQYWdlQWN0aW9uczxUPiB8IERhZmZDb21wb3NpdGVQcm9kdWN0QWN0aW9uczxWPik6IEVudGl0eVN0YXRlPERhZmZDb21wb3NpdGVQcm9kdWN0RW50aXR5PiB7XG4gIGNvbnN0IGFkYXB0ZXIgPSBkYWZmQ29tcG9zaXRlUHJvZHVjdEFwcGxpZWRPcHRpb25zRW50aXRpZXNBZGFwdGVyKCk7XG4gIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICBjYXNlIERhZmZQcm9kdWN0R3JpZEFjdGlvblR5cGVzLlByb2R1Y3RHcmlkTG9hZFN1Y2Nlc3NBY3Rpb246XG4gICAgY2FzZSBEYWZmQmVzdFNlbGxlcnNBY3Rpb25UeXBlcy5CZXN0U2VsbGVyc0xvYWRTdWNjZXNzQWN0aW9uOlxuICAgICAgcmV0dXJuIGFkYXB0ZXIudXBzZXJ0TWFueShcbiAgICAgICAgbWFwT3B0aW9uc0VudGl0aWVzKDxWW10+PHVua25vd24+YWN0aW9uLnBheWxvYWQpLFxuICAgICAgICBzdGF0ZSxcbiAgICAgICk7XG4gICAgY2FzZSBEYWZmUHJvZHVjdEFjdGlvblR5cGVzLlByb2R1Y3RMb2FkU3VjY2Vzc0FjdGlvbjpcbiAgICBjYXNlIERhZmZQcm9kdWN0UGFnZUFjdGlvblR5cGVzLlByb2R1Y3RQYWdlTG9hZFN1Y2Nlc3NBY3Rpb246XG4gICAgICByZXR1cm4gYWRhcHRlci51cHNlcnRNYW55KFxuICAgICAgICBtYXBPcHRpb25zRW50aXRpZXMoPFZbXT48dW5rbm93bj5hY3Rpb24ucGF5bG9hZC5wcm9kdWN0cyksXG4gICAgICAgIHN0YXRlLFxuICAgICAgKTtcbiAgICBjYXNlIERhZmZDb21wb3NpdGVQcm9kdWN0QWN0aW9uVHlwZXMuQ29tcG9zaXRlUHJvZHVjdEFwcGx5T3B0aW9uQWN0aW9uOlxuICAgICAgcmV0dXJuIGFkYXB0ZXIudXBzZXJ0T25lKFxuICAgICAgICB7XG4gICAgICAgICAgaWQ6IGFjdGlvbi5pZCxcbiAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgLi4uc3RhdGUuZW50aXRpZXNbYWN0aW9uLmlkXS5pdGVtcyxcbiAgICAgICAgICAgIFthY3Rpb24uaXRlbUlkXToge1xuICAgICAgICAgICAgICB2YWx1ZTogYWN0aW9uLm9wdGlvbklkLFxuICAgICAgICAgICAgICBxdHk6IGFjdGlvbi5xdHkgPyBhY3Rpb24ucXR5IDogMSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgc3RhdGUsXG4gICAgICApO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gc3RhdGU7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWFwT3B0aW9uc0VudGl0aWVzKHByb2R1Y3RzOiBEYWZmQ29tcG9zaXRlUHJvZHVjdFtdKTogRGFmZkNvbXBvc2l0ZVByb2R1Y3RFbnRpdHlbXSB7XG4gIHJldHVybiBwcm9kdWN0cy5maWx0ZXIocHJvZHVjdCA9PiBwcm9kdWN0LnR5cGUgPT09IERhZmZQcm9kdWN0VHlwZUVudW0uQ29tcG9zaXRlKVxuICAgIC5tYXAocHJvZHVjdCA9PiBidWlsZENvbXBvc2l0ZVByb2R1Y3RBcHBsaWVkT3B0aW9uc0VudGl0eShwcm9kdWN0KSk7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkQ29tcG9zaXRlUHJvZHVjdEFwcGxpZWRPcHRpb25zRW50aXR5KHByb2R1Y3Q6IERhZmZDb21wb3NpdGVQcm9kdWN0KTogRGFmZkNvbXBvc2l0ZVByb2R1Y3RFbnRpdHkge1xuICByZXR1cm4ge1xuICAgIGlkOiBwcm9kdWN0LmlkLFxuICAgIGl0ZW1zOiBwcm9kdWN0Lml0ZW1zLnJlZHVjZSgoYWNjLCBpdGVtKSA9PiAoe1xuICAgICAgLi4uYWNjLFxuICAgICAgW2l0ZW0uaWRdOiBnZXREZWZhdWx0T3B0aW9uKGl0ZW0pLFxuICAgIH0pLCB7fSksXG4gIH07XG59XG5cbi8qKlxuICogU2V0cyB0aGUgZGVmYXVsdCBpdGVtIG9wdGlvbiB0byB0aGUgc3BlY2lmaWVkIGRlZmF1bHQgb3B0aW9uIGlmIGl0IGlzIGluIHN0b2NrLlxuICogRG9lcyBub3Qgc2V0IGEgZGVmYXVsdCBvcHRpb24gaWYgYSBkZWZhdWx0IGlzIG5vdCBzcGVjaWZpZWQuXG4gKiBEb2VzIG5vdCBzZXQgYSBkZWZhdWx0IG9wdGlvbiBidXQgZG9lcyBzZXQgYSBkZWZhdWx0IHF0eSBpZiB0aGUgZGVmYXVsdCBpcyBvdXQgb2Ygc3RvY2suXG4gKlxuICogQHBhcmFtIGl0ZW0gYSBEYWZmQ29tcG9zaXRlUHJvZHVjdEl0ZW1cbiAqL1xuZnVuY3Rpb24gZ2V0RGVmYXVsdE9wdGlvbihpdGVtOiBEYWZmQ29tcG9zaXRlUHJvZHVjdEl0ZW0pOiBEYWZmQ29tcG9zaXRlQ29uZmlndXJhdGlvbkl0ZW0ge1xuICBjb25zdCBkZWZhdWx0T3B0aW9uSW5kZXggPSBpdGVtLm9wdGlvbnMuZmluZEluZGV4KG9wdGlvbiA9PiBvcHRpb24uaXNfZGVmYXVsdCk7XG5cbiAgaWYoZGVmYXVsdE9wdGlvbkluZGV4ID4gLTEpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdmFsdWU6IGl0ZW0ub3B0aW9uc1tkZWZhdWx0T3B0aW9uSW5kZXhdLmluX3N0b2NrID8gaXRlbS5vcHRpb25zW2RlZmF1bHRPcHRpb25JbmRleF0uaWQgOiBudWxsLFxuICAgICAgcXR5OiBpdGVtLm9wdGlvbnNbZGVmYXVsdE9wdGlvbkluZGV4XS5xdWFudGl0eSxcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB7IHZhbHVlOiBudWxsLCBxdHk6IG51bGwgfTtcbiAgfVxufVxuIl19
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9zaXRlLXByb2R1Y3QtZW50aXRpZXMucmVkdWNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcHJvZHVjdC1jb21wb3NpdGUvc3RhdGUvc3JjL3JlZHVjZXJzL2NvbXBvc2l0ZS1wcm9kdWN0LWVudGl0aWVzL2NvbXBvc2l0ZS1wcm9kdWN0LWVudGl0aWVzLnJlZHVjZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUVMLDBCQUEwQixFQUMxQiwwQkFBMEIsRUFJMUIsMEJBQTBCLEVBQzFCLHNCQUFzQixHQUN2QixNQUFNLHlCQUF5QixDQUFDO0FBRWpDLE9BQU8sRUFFTCwrQkFBK0IsR0FDaEMsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsaURBQWlELEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUdqSDs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsbUNBQW1DLENBQ2pELEtBQUssR0FBRyxpREFBaUQsRUFBRSxDQUFDLGVBQWUsRUFBRSxFQUM3RSxNQUFrSjtJQUNsSixNQUFNLE9BQU8sR0FBRyxpREFBaUQsRUFBRSxDQUFDO0lBQ3BFLFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRTtRQUNuQixLQUFLLDBCQUEwQixDQUFDLDRCQUE0QixDQUFDO1FBQzdELEtBQUssMEJBQTBCLENBQUMsNEJBQTRCO1lBQzFELE9BQU8sT0FBTyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsR0FBa0IsTUFBTSxDQUFDLE9BQVEsQ0FBQyxDQUFDO1FBRTFFLEtBQUssc0JBQXNCLENBQUMsd0JBQXdCLENBQUM7UUFDckQsS0FBSywwQkFBMEIsQ0FBQyw0QkFBNEI7WUFDMUQsT0FBTyxPQUFPLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxHQUFrQixNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVMsQ0FBQyxDQUFDO1FBRW5GLEtBQUssK0JBQStCLENBQUMsaUNBQWlDO1lBQ3BFLE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRTNGO1lBQ0UsT0FBTyxLQUFLLENBQUM7S0FDaEI7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW50aXR5U3RhdGUgfSBmcm9tICdAbmdyeC9lbnRpdHknO1xuXG5pbXBvcnQgeyBEYWZmUHJvZHVjdCB9IGZyb20gJ0BkYWZmb2RpbC9wcm9kdWN0JztcbmltcG9ydCB7IERhZmZDb21wb3NpdGVQcm9kdWN0IH0gZnJvbSAnQGRhZmZvZGlsL3Byb2R1Y3QtY29tcG9zaXRlJztcbmltcG9ydCB7XG4gIERhZmZQcm9kdWN0UGFnZUFjdGlvbnMsXG4gIERhZmZQcm9kdWN0UGFnZUFjdGlvblR5cGVzLFxuICBEYWZmUHJvZHVjdEdyaWRBY3Rpb25UeXBlcyxcbiAgRGFmZlByb2R1Y3RHcmlkQWN0aW9ucyxcbiAgRGFmZkJlc3RTZWxsZXJzQWN0aW9ucyxcbiAgRGFmZlByb2R1Y3RBY3Rpb25zLFxuICBEYWZmQmVzdFNlbGxlcnNBY3Rpb25UeXBlcyxcbiAgRGFmZlByb2R1Y3RBY3Rpb25UeXBlcyxcbn0gZnJvbSAnQGRhZmZvZGlsL3Byb2R1Y3Qvc3RhdGUnO1xuXG5pbXBvcnQge1xuICBEYWZmQ29tcG9zaXRlUHJvZHVjdEFjdGlvbnMsXG4gIERhZmZDb21wb3NpdGVQcm9kdWN0QWN0aW9uVHlwZXMsXG59IGZyb20gJy4uLy4uL2FjdGlvbnMvcHVibGljX2FwaSc7XG5pbXBvcnQgeyBkYWZmQ29tcG9zaXRlUHJvZHVjdEFwcGxpZWRPcHRpb25zRW50aXRpZXNBZGFwdGVyIH0gZnJvbSAnLi9jb21wb3NpdGUtcHJvZHVjdC1lbnRpdGllcy1yZWR1Y2VyLWFkYXB0ZXInO1xuaW1wb3J0IHsgRGFmZkNvbXBvc2l0ZVByb2R1Y3RFbnRpdHkgfSBmcm9tICcuL2NvbXBvc2l0ZS1wcm9kdWN0LWVudGl0eSc7XG5cbi8qKlxuICogUmVkdWNlciBmdW5jdGlvbiB0aGF0IGNhdGNoZXMgYWN0aW9ucyBhbmQgY2hhbmdlcy9vdmVyd3JpdGVzIGNvbXBvc2l0ZSBwcm9kdWN0IGVudGl0aWVzIHN0YXRlLlxuICpcbiAqIEBwYXJhbSBzdGF0ZSBjdXJyZW50IFN0YXRlIG9mIHRoZSByZWR1eCBzdG9yZVxuICogQHBhcmFtIGFjdGlvbiBQcm9kdWN0R3JpZCwgQmVzdFNlbGxlcnMsIFByb2R1Y3QsIG9yIENvbXBvc2l0ZSBQcm9kdWN0IGFjdGlvbnNcbiAqIEByZXR1cm5zIFByb2R1Y3QgZW50aXRpZXMgc3RhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRhZmZDb21wb3NpdGVQcm9kdWN0RW50aXRpZXNSZWR1Y2VyPFQgZXh0ZW5kcyBEYWZmUHJvZHVjdCwgViBleHRlbmRzIERhZmZDb21wb3NpdGVQcm9kdWN0PihcbiAgc3RhdGUgPSBkYWZmQ29tcG9zaXRlUHJvZHVjdEFwcGxpZWRPcHRpb25zRW50aXRpZXNBZGFwdGVyKCkuZ2V0SW5pdGlhbFN0YXRlKCksXG4gIGFjdGlvbjogRGFmZlByb2R1Y3RHcmlkQWN0aW9uczxUPiB8IERhZmZCZXN0U2VsbGVyc0FjdGlvbnM8VD4gfCBEYWZmUHJvZHVjdEFjdGlvbnM8VD4gfCBEYWZmUHJvZHVjdFBhZ2VBY3Rpb25zPFQ+IHwgRGFmZkNvbXBvc2l0ZVByb2R1Y3RBY3Rpb25zPFY+KTogRW50aXR5U3RhdGU8RGFmZkNvbXBvc2l0ZVByb2R1Y3RFbnRpdHk+IHtcbiAgY29uc3QgYWRhcHRlciA9IGRhZmZDb21wb3NpdGVQcm9kdWN0QXBwbGllZE9wdGlvbnNFbnRpdGllc0FkYXB0ZXIoKTtcbiAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgIGNhc2UgRGFmZlByb2R1Y3RHcmlkQWN0aW9uVHlwZXMuUHJvZHVjdEdyaWRMb2FkU3VjY2Vzc0FjdGlvbjpcbiAgICBjYXNlIERhZmZCZXN0U2VsbGVyc0FjdGlvblR5cGVzLkJlc3RTZWxsZXJzTG9hZFN1Y2Nlc3NBY3Rpb246XG4gICAgICByZXR1cm4gYWRhcHRlci51cHNlcnRQcm9kdWN0cyhzdGF0ZSwgLi4uKDxWW10+PHVua25vd24+YWN0aW9uLnBheWxvYWQpKTtcblxuICAgIGNhc2UgRGFmZlByb2R1Y3RBY3Rpb25UeXBlcy5Qcm9kdWN0TG9hZFN1Y2Nlc3NBY3Rpb246XG4gICAgY2FzZSBEYWZmUHJvZHVjdFBhZ2VBY3Rpb25UeXBlcy5Qcm9kdWN0UGFnZUxvYWRTdWNjZXNzQWN0aW9uOlxuICAgICAgcmV0dXJuIGFkYXB0ZXIudXBzZXJ0UHJvZHVjdHMoc3RhdGUsIC4uLig8VltdPjx1bmtub3duPmFjdGlvbi5wYXlsb2FkLnByb2R1Y3RzKSk7XG5cbiAgICBjYXNlIERhZmZDb21wb3NpdGVQcm9kdWN0QWN0aW9uVHlwZXMuQ29tcG9zaXRlUHJvZHVjdEFwcGx5T3B0aW9uQWN0aW9uOlxuICAgICAgcmV0dXJuIGFkYXB0ZXIuYXBwbHlPcHRpb24oc3RhdGUsIGFjdGlvbi5pZCwgYWN0aW9uLml0ZW1JZCwgYWN0aW9uLm9wdGlvbklkLCBhY3Rpb24ucXR5KTtcblxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gc3RhdGU7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,27 @@
1
+ import { InjectionToken, } from '@angular/core';
2
+ /**
3
+ * A token to hold the injectable extra reducers.
4
+ *
5
+ * Prefer using {@link daffProductCompositeProvideExtraReducers}.
6
+ */
7
+ export const DAFF_PRODUCT_COMPOSITE_EXTRA_REDUCERS = new InjectionToken('DAFF_PRODUCT_COMPOSITE_EXTRA_REDUCERS', { factory: () => [] });
8
+ /**
9
+ * Provides additional reducers that run after the standard Daffodil cart reducers.
10
+ *
11
+ * ```ts
12
+ * providers: [
13
+ * ...daffProductCompositeProvideExtraReducers(
14
+ * myReducer1,
15
+ * myReducer2
16
+ * )
17
+ * ]
18
+ * ```
19
+ */
20
+ export function daffProductCompositeProvideExtraReducers(...reducers) {
21
+ return reducers.map(reducer => ({
22
+ provide: DAFF_PRODUCT_COMPOSITE_EXTRA_REDUCERS,
23
+ useValue: reducer,
24
+ multi: true,
25
+ }));
26
+ }
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0cmEudG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Byb2R1Y3QtY29tcG9zaXRlL3N0YXRlL3NyYy9yZWR1Y2Vycy9pbmplY3Rpb24tdG9rZW5zL2V4dHJhLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxjQUFjLEdBRWYsTUFBTSxlQUFlLENBQUM7QUFLdkI7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLHFDQUFxQyxHQUFHLElBQUksY0FBYyxDQUNyRSx1Q0FBdUMsRUFDdkMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFDLENBQ3JCLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sVUFBVSx3Q0FBd0MsQ0FDdEQsR0FBRyxRQUFxRTtJQUV4RSxPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLE9BQU8sRUFBRSxxQ0FBcUM7UUFDOUMsUUFBUSxFQUFFLE9BQU87UUFDakIsS0FBSyxFQUFFLElBQUk7S0FDWixDQUFDLENBQUMsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbmplY3Rpb25Ub2tlbixcbiAgUHJvdmlkZXIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aW9uUmVkdWNlciB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcblxuaW1wb3J0IHsgRGFmZkNvbXBvc2l0ZVByb2R1Y3RSZWR1Y2Vyc1N0YXRlIH0gZnJvbSAnLi4vY29tcG9zaXRlLXByb2R1Y3QtcmVkdWNlcnMtc3RhdGUuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBBIHRva2VuIHRvIGhvbGQgdGhlIGluamVjdGFibGUgZXh0cmEgcmVkdWNlcnMuXG4gKlxuICogUHJlZmVyIHVzaW5nIHtAbGluayBkYWZmUHJvZHVjdENvbXBvc2l0ZVByb3ZpZGVFeHRyYVJlZHVjZXJzfS5cbiAqL1xuZXhwb3J0IGNvbnN0IERBRkZfUFJPRFVDVF9DT01QT1NJVEVfRVhUUkFfUkVEVUNFUlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48QWN0aW9uUmVkdWNlcjxEYWZmQ29tcG9zaXRlUHJvZHVjdFJlZHVjZXJzU3RhdGU+W10+KFxuICAnREFGRl9QUk9EVUNUX0NPTVBPU0lURV9FWFRSQV9SRURVQ0VSUycsXG4gIHsgZmFjdG9yeTogKCkgPT4gW119LFxuKTtcblxuLyoqXG4gKiBQcm92aWRlcyBhZGRpdGlvbmFsIHJlZHVjZXJzIHRoYXQgcnVuIGFmdGVyIHRoZSBzdGFuZGFyZCBEYWZmb2RpbCBjYXJ0IHJlZHVjZXJzLlxuICpcbiAqIGBgYHRzXG4gKiBwcm92aWRlcnM6IFtcbiAqICAgLi4uZGFmZlByb2R1Y3RDb21wb3NpdGVQcm92aWRlRXh0cmFSZWR1Y2VycyhcbiAqICAgICBteVJlZHVjZXIxLFxuICogICAgIG15UmVkdWNlcjJcbiAqICAgKVxuICogXVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYWZmUHJvZHVjdENvbXBvc2l0ZVByb3ZpZGVFeHRyYVJlZHVjZXJzKFxuICAuLi5yZWR1Y2VyczogQWN0aW9uUmVkdWNlcjxQYXJ0aWFsPERhZmZDb21wb3NpdGVQcm9kdWN0UmVkdWNlcnNTdGF0ZT4+W11cbik6IFByb3ZpZGVyW10ge1xuICByZXR1cm4gcmVkdWNlcnMubWFwKHJlZHVjZXIgPT4gKHtcbiAgICBwcm92aWRlOiBEQUZGX1BST0RVQ1RfQ09NUE9TSVRFX0VYVFJBX1JFRFVDRVJTLFxuICAgIHVzZVZhbHVlOiByZWR1Y2VyLFxuICAgIG11bHRpOiB0cnVlLFxuICB9KSk7XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export { daffProductCompositeProvideExtraReducers, DAFF_PRODUCT_COMPOSITE_EXTRA_REDUCERS, } from './extra.token';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcHJvZHVjdC1jb21wb3NpdGUvc3RhdGUvc3JjL3JlZHVjZXJzL2luamVjdGlvbi10b2tlbnMvcHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsd0NBQXdDLEVBQ3hDLHFDQUFxQyxHQUN0QyxNQUFNLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7XG4gIGRhZmZQcm9kdWN0Q29tcG9zaXRlUHJvdmlkZUV4dHJhUmVkdWNlcnMsXG4gIERBRkZfUFJPRFVDVF9DT01QT1NJVEVfRVhUUkFfUkVEVUNFUlMsXG59IGZyb20gJy4vZXh0cmEudG9rZW4nO1xuIl19
@@ -0,0 +1,18 @@
1
+ import { inject, InjectionToken, } from '@angular/core';
2
+ import { combineReducers, } from '@ngrx/store';
3
+ import { daffComposeReducers } from '@daffodil/core/state';
4
+ import { daffCompositeProductReducers } from '../composite-product-reducers';
5
+ import { DAFF_PRODUCT_COMPOSITE_EXTRA_REDUCERS } from './extra.token';
6
+ /**
7
+ * An internal token to hold the Daffodil composite product reducers.
8
+ * Includes the extra and standard reducers.
9
+ *
10
+ * @docs-private
11
+ */
12
+ export const DAFF_PRODUCT_COMPOSITE_REDUCERS = new InjectionToken('DAFF_PRODUCT_COMPOSITE_REDUCERS', {
13
+ factory: () => daffComposeReducers([
14
+ combineReducers(daffCompositeProductReducers),
15
+ ...inject(DAFF_PRODUCT_COMPOSITE_EXTRA_REDUCERS),
16
+ ]),
17
+ });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkdWNlcnMudG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Byb2R1Y3QtY29tcG9zaXRlL3N0YXRlL3NyYy9yZWR1Y2Vycy9pbmplY3Rpb24tdG9rZW5zL3JlZHVjZXJzLnRva2VuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxNQUFNLEVBQ04sY0FBYyxHQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCxlQUFlLEdBQ2hCLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTNELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTdFLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV0RTs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLElBQUksY0FBYyxDQUMvRCxpQ0FBaUMsRUFDakM7SUFDRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsbUJBQW1CLENBQUM7UUFDakMsZUFBZSxDQUFDLDRCQUE0QixDQUFDO1FBQzdDLEdBQUcsTUFBTSxDQUFDLHFDQUFxQyxDQUFDO0tBQ2pELENBQUM7Q0FDSCxDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBpbmplY3QsXG4gIEluamVjdGlvblRva2VuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFjdGlvblJlZHVjZXIsXG4gIGNvbWJpbmVSZWR1Y2Vycyxcbn0gZnJvbSAnQG5ncngvc3RvcmUnO1xuXG5pbXBvcnQgeyBkYWZmQ29tcG9zZVJlZHVjZXJzIH0gZnJvbSAnQGRhZmZvZGlsL2NvcmUvc3RhdGUnO1xuXG5pbXBvcnQgeyBkYWZmQ29tcG9zaXRlUHJvZHVjdFJlZHVjZXJzIH0gZnJvbSAnLi4vY29tcG9zaXRlLXByb2R1Y3QtcmVkdWNlcnMnO1xuaW1wb3J0IHsgRGFmZkNvbXBvc2l0ZVByb2R1Y3RSZWR1Y2Vyc1N0YXRlIH0gZnJvbSAnLi4vY29tcG9zaXRlLXByb2R1Y3QtcmVkdWNlcnMtc3RhdGUuaW50ZXJmYWNlJztcbmltcG9ydCB7IERBRkZfUFJPRFVDVF9DT01QT1NJVEVfRVhUUkFfUkVEVUNFUlMgfSBmcm9tICcuL2V4dHJhLnRva2VuJztcblxuLyoqXG4gKiBBbiBpbnRlcm5hbCB0b2tlbiB0byBob2xkIHRoZSBEYWZmb2RpbCBjb21wb3NpdGUgcHJvZHVjdCByZWR1Y2Vycy5cbiAqIEluY2x1ZGVzIHRoZSBleHRyYSBhbmQgc3RhbmRhcmQgcmVkdWNlcnMuXG4gKlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5leHBvcnQgY29uc3QgREFGRl9QUk9EVUNUX0NPTVBPU0lURV9SRURVQ0VSUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBY3Rpb25SZWR1Y2VyPERhZmZDb21wb3NpdGVQcm9kdWN0UmVkdWNlcnNTdGF0ZT4+KFxuICAnREFGRl9QUk9EVUNUX0NPTVBPU0lURV9SRURVQ0VSUycsXG4gIHtcbiAgICBmYWN0b3J5OiAoKSA9PiBkYWZmQ29tcG9zZVJlZHVjZXJzKFtcbiAgICAgIGNvbWJpbmVSZWR1Y2VycyhkYWZmQ29tcG9zaXRlUHJvZHVjdFJlZHVjZXJzKSxcbiAgICAgIC4uLmluamVjdChEQUZGX1BST0RVQ1RfQ09NUE9TSVRFX0VYVFJBX1JFRFVDRVJTKSxcbiAgICBdKSxcbiAgfSxcbik7XG4iXX0=
@@ -1,4 +1,6 @@
1
1
  export { daffCompositeProductReducers } from './composite-product-reducers';
2
+ export { daffCompositeProductAppliedOptionsEntitiesAdapter, DaffCompositeProductAppliedOptionsEntitiesAdapter, } from './composite-product-entities/composite-product-entities-reducer-adapter';
2
3
  export { DAFF_COMPOSITE_PRODUCT_STORE_FEATURE_KEY } from './composite-product-store-feature-key';
3
4
  export * from './composite-product-entities/composite-product-entity';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcHJvZHVjdC1jb21wb3NpdGUvc3RhdGUvc3JjL3JlZHVjZXJzL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFNNUUsT0FBTyxFQUFFLHdDQUF3QyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDakcsY0FBYyx1REFBdUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRhZmZDb21wb3NpdGVQcm9kdWN0UmVkdWNlcnMgfSBmcm9tICcuL2NvbXBvc2l0ZS1wcm9kdWN0LXJlZHVjZXJzJztcbmV4cG9ydCB7XG4gIERhZmZDb21wb3NpdGVQcm9kdWN0UmVkdWNlcnNTdGF0ZSxcbiAgRGFmZkNvbXBvc2l0ZVByb2R1Y3RTdGF0ZVJvb3RTbGljZSxcbn0gZnJvbSAnLi9jb21wb3NpdGUtcHJvZHVjdC1yZWR1Y2Vycy1zdGF0ZS5pbnRlcmZhY2UnO1xuZXhwb3J0IHsgfSBmcm9tICcuL2NvbXBvc2l0ZS1wcm9kdWN0LWVudGl0aWVzL2NvbXBvc2l0ZS1wcm9kdWN0LWVudGl0eSc7XG5leHBvcnQgeyBEQUZGX0NPTVBPU0lURV9QUk9EVUNUX1NUT1JFX0ZFQVRVUkVfS0VZIH0gZnJvbSAnLi9jb21wb3NpdGUtcHJvZHVjdC1zdG9yZS1mZWF0dXJlLWtleSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbXBvc2l0ZS1wcm9kdWN0LWVudGl0aWVzL2NvbXBvc2l0ZS1wcm9kdWN0LWVudGl0eSc7XG4iXX0=
5
+ export * from './injection-tokens/public_api';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcHJvZHVjdC1jb21wb3NpdGUvc3RhdGUvc3JjL3JlZHVjZXJzL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFNNUUsT0FBTyxFQUNMLGlEQUFpRCxFQUNqRCxpREFBaUQsR0FDbEQsTUFBTSx5RUFBeUUsQ0FBQztBQUNqRixPQUFPLEVBQUUsd0NBQXdDLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNqRyxjQUFjLHVEQUF1RCxDQUFDO0FBRXRFLGNBQWMsK0JBQStCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBkYWZmQ29tcG9zaXRlUHJvZHVjdFJlZHVjZXJzIH0gZnJvbSAnLi9jb21wb3NpdGUtcHJvZHVjdC1yZWR1Y2Vycyc7XG5leHBvcnQge1xuICBEYWZmQ29tcG9zaXRlUHJvZHVjdFJlZHVjZXJzU3RhdGUsXG4gIERhZmZDb21wb3NpdGVQcm9kdWN0U3RhdGVSb290U2xpY2UsXG59IGZyb20gJy4vY29tcG9zaXRlLXByb2R1Y3QtcmVkdWNlcnMtc3RhdGUuaW50ZXJmYWNlJztcbmV4cG9ydCB7IERhZmZDb21wb3NpdGVQcm9kdWN0RW50aXR5IH0gZnJvbSAnLi9jb21wb3NpdGUtcHJvZHVjdC1lbnRpdGllcy9jb21wb3NpdGUtcHJvZHVjdC1lbnRpdHknO1xuZXhwb3J0IHtcbiAgZGFmZkNvbXBvc2l0ZVByb2R1Y3RBcHBsaWVkT3B0aW9uc0VudGl0aWVzQWRhcHRlcixcbiAgRGFmZkNvbXBvc2l0ZVByb2R1Y3RBcHBsaWVkT3B0aW9uc0VudGl0aWVzQWRhcHRlcixcbn0gZnJvbSAnLi9jb21wb3NpdGUtcHJvZHVjdC1lbnRpdGllcy9jb21wb3NpdGUtcHJvZHVjdC1lbnRpdGllcy1yZWR1Y2VyLWFkYXB0ZXInO1xuZXhwb3J0IHsgREFGRl9DT01QT1NJVEVfUFJPRFVDVF9TVE9SRV9GRUFUVVJFX0tFWSB9IGZyb20gJy4vY29tcG9zaXRlLXByb2R1Y3Qtc3RvcmUtZmVhdHVyZS1rZXknO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wb3NpdGUtcHJvZHVjdC1lbnRpdGllcy9jb21wb3NpdGUtcHJvZHVjdC1lbnRpdHknO1xuXG5leHBvcnQgKiBmcm9tICcuL2luamVjdGlvbi10b2tlbnMvcHVibGljX2FwaSc7XG4iXX0=
@@ -1,11 +1,12 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, NgModule } from '@angular/core';
2
+ import { Injectable, InjectionToken, inject, NgModule } from '@angular/core';
3
3
  import * as i1 from '@ngrx/store';
4
- import { createFeatureSelector, createSelector, defaultMemoize, select, StoreModule } from '@ngrx/store';
4
+ import { defaultMemoize, createFeatureSelector, createSelector, select, combineReducers, StoreModule } from '@ngrx/store';
5
5
  import { DaffProductTypeEnum, productPriceRangeHasDiscount, productPriceRangeHasPriceRange } from '@daffodil/product';
6
6
  import { getDaffProductEntitiesSelectors, DaffProductPageActionTypes, DaffProductActionTypes, DaffBestSellersActionTypes, DaffProductGridActionTypes } from '@daffodil/product/state';
7
7
  import { createEntityAdapter } from '@ngrx/entity';
8
8
  import { daffAdd, daffMultiply, daffSubtract, daffDivide } from '@daffodil/core';
9
+ import { daffComposeReducers } from '@daffodil/core/state';
9
10
 
10
11
  /**
11
12
  * Action types for Composite Product Actions.
@@ -34,10 +35,85 @@ class DaffCompositeProductApplyOption {
34
35
  /**
35
36
  * Composite Product Item Options Adapter for changing/overwriting entity state.
36
37
  */
37
- const daffCompositeProductAppliedOptionsEntitiesAdapter = (() => {
38
- let cache;
39
- return () => cache = cache || createEntityAdapter();
40
- })();
38
+ class DaffCompositeProductAppliedOptionsEntitiesAdapter {
39
+ constructor() {
40
+ /**
41
+ * @docs-private
42
+ */
43
+ this._adapter = createEntityAdapter();
44
+ }
45
+ /**
46
+ * Gets the initial entity state.
47
+ */
48
+ getInitialState() {
49
+ return this._adapter.getInitialState();
50
+ }
51
+ /**
52
+ * Get the entity selectors.
53
+ */
54
+ getSelectors() {
55
+ return this._adapter.getSelectors();
56
+ }
57
+ /**
58
+ * Upserts the given composite products into state.
59
+ */
60
+ upsertProducts(state, ...products) {
61
+ return this._adapter.upsertMany(this.mapOptionsEntities(products), state);
62
+ }
63
+ ;
64
+ /**
65
+ * Apply the specified option for the given composite product item.
66
+ */
67
+ applyOption(state, productId, itemId, optionId, qty) {
68
+ return this._adapter.upsertOne({
69
+ id: productId,
70
+ items: Object.assign(Object.assign({}, state.entities[productId].items), { [itemId]: {
71
+ value: optionId,
72
+ qty: qty !== null && qty !== void 0 ? qty : 1,
73
+ } }),
74
+ }, state);
75
+ }
76
+ /**
77
+ * @docs-private
78
+ */
79
+ mapOptionsEntities(products) {
80
+ return products.filter(product => product.type === DaffProductTypeEnum.Composite)
81
+ .map(product => this.buildCompositeProductAppliedOptionsEntity(product));
82
+ }
83
+ /**
84
+ * @docs-private
85
+ */
86
+ buildCompositeProductAppliedOptionsEntity(product) {
87
+ return {
88
+ id: product.id,
89
+ items: product.items.reduce((acc, item) => (Object.assign(Object.assign({}, acc), { [item.id]: this.getDefaultOption(item) })), {}),
90
+ };
91
+ }
92
+ /**
93
+ * Sets the default item option to the specified default option if it is in stock.
94
+ * Does not set a default option if a default is not specified.
95
+ * Does not set a default option but does set a default qty if the default is out of stock.
96
+ *
97
+ * @param item a DaffCompositeProductItem
98
+ * @docs-private
99
+ */
100
+ getDefaultOption(item) {
101
+ const defaultOptionIndex = item.options.findIndex(option => option.is_default);
102
+ if (defaultOptionIndex > -1) {
103
+ return {
104
+ value: item.options[defaultOptionIndex].in_stock ? item.options[defaultOptionIndex].id : null,
105
+ qty: item.options[defaultOptionIndex].quantity,
106
+ };
107
+ }
108
+ else {
109
+ return { value: null, qty: null };
110
+ }
111
+ }
112
+ }
113
+ /**
114
+ * Gets the composite product entity adapter singleton.
115
+ */
116
+ const daffCompositeProductAppliedOptionsEntitiesAdapter = defaultMemoize(() => new DaffCompositeProductAppliedOptionsEntitiesAdapter()).memoized;
41
117
 
42
118
  const DAFF_COMPOSITE_PRODUCT_STORE_FEATURE_KEY = 'daffCompositeProduct';
43
119
 
@@ -330,51 +406,16 @@ function daffCompositeProductEntitiesReducer(state = daffCompositeProductApplied
330
406
  switch (action.type) {
331
407
  case DaffProductGridActionTypes.ProductGridLoadSuccessAction:
332
408
  case DaffBestSellersActionTypes.BestSellersLoadSuccessAction:
333
- return adapter.upsertMany(mapOptionsEntities(action.payload), state);
409
+ return adapter.upsertProducts(state, ...action.payload);
334
410
  case DaffProductActionTypes.ProductLoadSuccessAction:
335
411
  case DaffProductPageActionTypes.ProductPageLoadSuccessAction:
336
- return adapter.upsertMany(mapOptionsEntities(action.payload.products), state);
412
+ return adapter.upsertProducts(state, ...action.payload.products);
337
413
  case DaffCompositeProductActionTypes.CompositeProductApplyOptionAction:
338
- return adapter.upsertOne({
339
- id: action.id,
340
- items: Object.assign(Object.assign({}, state.entities[action.id].items), { [action.itemId]: {
341
- value: action.optionId,
342
- qty: action.qty ? action.qty : 1,
343
- } }),
344
- }, state);
414
+ return adapter.applyOption(state, action.id, action.itemId, action.optionId, action.qty);
345
415
  default:
346
416
  return state;
347
417
  }
348
418
  }
349
- function mapOptionsEntities(products) {
350
- return products.filter(product => product.type === DaffProductTypeEnum.Composite)
351
- .map(product => buildCompositeProductAppliedOptionsEntity(product));
352
- }
353
- function buildCompositeProductAppliedOptionsEntity(product) {
354
- return {
355
- id: product.id,
356
- items: product.items.reduce((acc, item) => (Object.assign(Object.assign({}, acc), { [item.id]: getDefaultOption(item) })), {}),
357
- };
358
- }
359
- /**
360
- * Sets the default item option to the specified default option if it is in stock.
361
- * Does not set a default option if a default is not specified.
362
- * Does not set a default option but does set a default qty if the default is out of stock.
363
- *
364
- * @param item a DaffCompositeProductItem
365
- */
366
- function getDefaultOption(item) {
367
- const defaultOptionIndex = item.options.findIndex(option => option.is_default);
368
- if (defaultOptionIndex > -1) {
369
- return {
370
- value: item.options[defaultOptionIndex].in_stock ? item.options[defaultOptionIndex].id : null,
371
- qty: item.options[defaultOptionIndex].quantity,
372
- };
373
- }
374
- else {
375
- return { value: null, qty: null };
376
- }
377
- }
378
419
 
379
420
  /**
380
421
  * Returns state values from all composite product related reducers.
@@ -383,6 +424,45 @@ const daffCompositeProductReducers = {
383
424
  compositeProductOptions: daffCompositeProductEntitiesReducer,
384
425
  };
385
426
 
427
+ /**
428
+ * A token to hold the injectable extra reducers.
429
+ *
430
+ * Prefer using {@link daffProductCompositeProvideExtraReducers}.
431
+ */
432
+ const DAFF_PRODUCT_COMPOSITE_EXTRA_REDUCERS = new InjectionToken('DAFF_PRODUCT_COMPOSITE_EXTRA_REDUCERS', { factory: () => [] });
433
+ /**
434
+ * Provides additional reducers that run after the standard Daffodil cart reducers.
435
+ *
436
+ * ```ts
437
+ * providers: [
438
+ * ...daffProductCompositeProvideExtraReducers(
439
+ * myReducer1,
440
+ * myReducer2
441
+ * )
442
+ * ]
443
+ * ```
444
+ */
445
+ function daffProductCompositeProvideExtraReducers(...reducers) {
446
+ return reducers.map(reducer => ({
447
+ provide: DAFF_PRODUCT_COMPOSITE_EXTRA_REDUCERS,
448
+ useValue: reducer,
449
+ multi: true,
450
+ }));
451
+ }
452
+
453
+ /**
454
+ * An internal token to hold the Daffodil composite product reducers.
455
+ * Includes the extra and standard reducers.
456
+ *
457
+ * @docs-private
458
+ */
459
+ const DAFF_PRODUCT_COMPOSITE_REDUCERS = new InjectionToken('DAFF_PRODUCT_COMPOSITE_REDUCERS', {
460
+ factory: () => daffComposeReducers([
461
+ combineReducers(daffCompositeProductReducers),
462
+ ...inject(DAFF_PRODUCT_COMPOSITE_EXTRA_REDUCERS),
463
+ ]),
464
+ });
465
+
386
466
  /**
387
467
  * A module that provides the default reducers and effects for composite product redux state.
388
468
  */
@@ -391,13 +471,13 @@ class DaffCompositeProductStateModule {
391
471
  /** @nocollapse */ /** @nocollapse */ DaffCompositeProductStateModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffCompositeProductStateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
392
472
  /** @nocollapse */ /** @nocollapse */ DaffCompositeProductStateModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffCompositeProductStateModule, imports: [i1.StoreFeatureModule] });
393
473
  /** @nocollapse */ /** @nocollapse */ DaffCompositeProductStateModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffCompositeProductStateModule, imports: [[
394
- StoreModule.forFeature(DAFF_COMPOSITE_PRODUCT_STORE_FEATURE_KEY, daffCompositeProductReducers),
474
+ StoreModule.forFeature(DAFF_COMPOSITE_PRODUCT_STORE_FEATURE_KEY, DAFF_PRODUCT_COMPOSITE_REDUCERS),
395
475
  ]] });
396
476
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImport: i0, type: DaffCompositeProductStateModule, decorators: [{
397
477
  type: NgModule,
398
478
  args: [{
399
479
  imports: [
400
- StoreModule.forFeature(DAFF_COMPOSITE_PRODUCT_STORE_FEATURE_KEY, daffCompositeProductReducers),
480
+ StoreModule.forFeature(DAFF_COMPOSITE_PRODUCT_STORE_FEATURE_KEY, DAFF_PRODUCT_COMPOSITE_REDUCERS),
401
481
  ],
402
482
  }]
403
483
  }] });
@@ -406,5 +486,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.0", ngImpor
406
486
  * Generated bundle index. Do not edit.
407
487
  */
408
488
 
409
- export { DAFF_COMPOSITE_PRODUCT_STORE_FEATURE_KEY, DaffCompositeProductActionTypes, DaffCompositeProductApplyOption, DaffCompositeProductFacade, DaffCompositeProductStateModule, daffCompositeProductReducers, getDaffCompositeProductEntitiesSelectors, getDaffCompositeProductFeatureSelector, getDaffCompositeProductPriceSelectors, getDaffCompositeProductSelectors };
489
+ export { DAFF_COMPOSITE_PRODUCT_STORE_FEATURE_KEY, DAFF_PRODUCT_COMPOSITE_EXTRA_REDUCERS, DaffCompositeProductActionTypes, DaffCompositeProductAppliedOptionsEntitiesAdapter, DaffCompositeProductApplyOption, DaffCompositeProductFacade, DaffCompositeProductStateModule, daffCompositeProductAppliedOptionsEntitiesAdapter, daffCompositeProductReducers, daffProductCompositeProvideExtraReducers, getDaffCompositeProductEntitiesSelectors, getDaffCompositeProductFeatureSelector, getDaffCompositeProductPriceSelectors, getDaffCompositeProductSelectors };
410
490
  //# sourceMappingURL=daffodil-product-composite-state.mjs.map