@daffodil/product-composite 0.66.1 → 0.67.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (124) hide show
  1. package/{esm2020 → esm2022}/driver/in-memory/in-memory.module.mjs +5 -5
  2. package/{esm2020 → esm2022}/driver/magento/composite-product-driver.module.mjs +5 -5
  3. package/{esm2020 → esm2022}/driver/magento/testing/factories/bundle/bundle-item-option.factory.mjs +5 -5
  4. package/{esm2020 → esm2022}/driver/magento/testing/factories/bundle/bundle-item.factory.mjs +5 -5
  5. package/{esm2020 → esm2022}/driver/magento/testing/factories/bundle/bundle.factory.mjs +5 -5
  6. package/{esm2020 → esm2022}/driver/testing/testing.module.mjs +5 -5
  7. package/{esm2020 → esm2022}/routing/effects/product-page.effects.mjs +6 -6
  8. package/{esm2020 → esm2022}/routing/module.mjs +7 -7
  9. package/{esm2020 → esm2022}/routing/services/query-param.service.mjs +6 -6
  10. package/{esm2020 → esm2022}/state/composite-product-state.module.mjs +7 -7
  11. package/{esm2020 → esm2022}/state/facades/composite-product/composite-product.facade.mjs +5 -5
  12. package/{esm2020 → esm2022}/state/testing/mock-composite-product-facade.mjs +4 -4
  13. package/{esm2020 → esm2022}/state/testing/product-testing.module.mjs +7 -7
  14. package/{esm2020 → esm2022}/testing/factories/composite-product-item-option.factory.mjs +5 -5
  15. package/{esm2020 → esm2022}/testing/factories/composite-product-item.factory.mjs +5 -5
  16. package/{esm2020 → esm2022}/testing/factories/composite-product.factory.mjs +5 -5
  17. package/{fesm2020 → fesm2022}/daffodil-product-composite-driver-in-memory.mjs +4 -4
  18. package/{fesm2015 → fesm2022}/daffodil-product-composite-driver-in-memory.mjs.map +1 -1
  19. package/{fesm2015 → fesm2022}/daffodil-product-composite-driver-magento-testing.mjs +12 -12
  20. package/{fesm2020 → fesm2022}/daffodil-product-composite-driver-magento-testing.mjs.map +1 -1
  21. package/{fesm2020 → fesm2022}/daffodil-product-composite-driver-magento.mjs +4 -4
  22. package/{fesm2020 → fesm2022}/daffodil-product-composite-driver-magento.mjs.map +1 -1
  23. package/{fesm2020 → fesm2022}/daffodil-product-composite-driver-testing.mjs +4 -4
  24. package/{fesm2015 → fesm2022}/daffodil-product-composite-driver-testing.mjs.map +1 -1
  25. package/{fesm2020 → fesm2022}/daffodil-product-composite-routing.mjs +16 -16
  26. package/{fesm2020 → fesm2022}/daffodil-product-composite-routing.mjs.map +1 -1
  27. package/{fesm2015 → fesm2022}/daffodil-product-composite-state-testing.mjs +9 -9
  28. package/{fesm2015 → fesm2022}/daffodil-product-composite-state-testing.mjs.map +1 -1
  29. package/{fesm2020 → fesm2022}/daffodil-product-composite-state.mjs +10 -10
  30. package/{fesm2020 → fesm2022}/daffodil-product-composite-state.mjs.map +1 -1
  31. package/{fesm2020 → fesm2022}/daffodil-product-composite-testing.mjs +12 -12
  32. package/{fesm2020 → fesm2022}/daffodil-product-composite-testing.mjs.map +1 -1
  33. package/models/selection-payload.type.d.ts +1 -1
  34. package/package.json +1 -1
  35. package/state/actions/composite-product.actions.d.ts +1 -1
  36. package/state/reducers/ensure-items.meta-reducer.d.ts +1 -1
  37. package/fesm2015/daffodil-product-composite-driver-in-memory.mjs +0 -41
  38. package/fesm2015/daffodil-product-composite-driver-magento-testing.mjs.map +0 -1
  39. package/fesm2015/daffodil-product-composite-driver-magento.mjs +0 -141
  40. package/fesm2015/daffodil-product-composite-driver-magento.mjs.map +0 -1
  41. package/fesm2015/daffodil-product-composite-driver-testing.mjs +0 -41
  42. package/fesm2015/daffodil-product-composite-routing.mjs +0 -156
  43. package/fesm2015/daffodil-product-composite-routing.mjs.map +0 -1
  44. package/fesm2015/daffodil-product-composite-state.mjs +0 -520
  45. package/fesm2015/daffodil-product-composite-state.mjs.map +0 -1
  46. package/fesm2015/daffodil-product-composite-testing.mjs +0 -108
  47. package/fesm2015/daffodil-product-composite-testing.mjs.map +0 -1
  48. package/fesm2015/daffodil-product-composite.mjs.map +0 -1
  49. package/fesm2020/daffodil-product-composite-driver-in-memory.mjs.map +0 -1
  50. package/fesm2020/daffodil-product-composite-driver-magento-testing.mjs +0 -103
  51. package/fesm2020/daffodil-product-composite-driver-testing.mjs.map +0 -1
  52. package/fesm2020/daffodil-product-composite-state-testing.mjs +0 -70
  53. package/fesm2020/daffodil-product-composite-state-testing.mjs.map +0 -1
  54. package/fesm2020/daffodil-product-composite.mjs +0 -25
  55. /package/{esm2020 → esm2022}/daffodil-product-composite.mjs +0 -0
  56. /package/{esm2020 → esm2022}/driver/in-memory/daffodil-product-composite-driver-in-memory.mjs +0 -0
  57. /package/{esm2020 → esm2022}/driver/in-memory/index.mjs +0 -0
  58. /package/{esm2020 → esm2022}/driver/in-memory/public_api.mjs +0 -0
  59. /package/{esm2020 → esm2022}/driver/magento/daffodil-product-composite-driver-magento.mjs +0 -0
  60. /package/{esm2020 → esm2022}/driver/magento/fragments/bundled-product.mjs +0 -0
  61. /package/{esm2020 → esm2022}/driver/magento/index.mjs +0 -0
  62. /package/{esm2020 → esm2022}/driver/magento/models/bundled-product.mjs +0 -0
  63. /package/{esm2020 → esm2022}/driver/magento/models/public_api.mjs +0 -0
  64. /package/{esm2020 → esm2022}/driver/magento/public_api.mjs +0 -0
  65. /package/{esm2020 → esm2022}/driver/magento/testing/daffodil-product-composite-driver-magento-testing.mjs +0 -0
  66. /package/{esm2020 → esm2022}/driver/magento/testing/factories/public_api.mjs +0 -0
  67. /package/{esm2020 → esm2022}/driver/magento/testing/index.mjs +0 -0
  68. /package/{esm2020 → esm2022}/driver/magento/testing/public_api.mjs +0 -0
  69. /package/{esm2020 → esm2022}/driver/magento/transforms/bundled-product-transformers.mjs +0 -0
  70. /package/{esm2020 → esm2022}/driver/magento/transforms/public_api.mjs +0 -0
  71. /package/{esm2020 → esm2022}/driver/testing/daffodil-product-composite-driver-testing.mjs +0 -0
  72. /package/{esm2020 → esm2022}/driver/testing/index.mjs +0 -0
  73. /package/{esm2020 → esm2022}/driver/testing/public_api.mjs +0 -0
  74. /package/{esm2020 → esm2022}/helpers/build-selection-payload.mjs +0 -0
  75. /package/{esm2020 → esm2022}/helpers/public_api.mjs +0 -0
  76. /package/{esm2020 → esm2022}/index.mjs +0 -0
  77. /package/{esm2020 → esm2022}/models/composite-configuration-item.mjs +0 -0
  78. /package/{esm2020 → esm2022}/models/composite-product-item.mjs +0 -0
  79. /package/{esm2020 → esm2022}/models/composite-product.mjs +0 -0
  80. /package/{esm2020 → esm2022}/models/public_api.mjs +0 -0
  81. /package/{esm2020 → esm2022}/models/selection-payload.type.mjs +0 -0
  82. /package/{esm2020 → esm2022}/public_api.mjs +0 -0
  83. /package/{esm2020 → esm2022}/routing/config/default.mjs +0 -0
  84. /package/{esm2020 → esm2022}/routing/config/interface.mjs +0 -0
  85. /package/{esm2020 → esm2022}/routing/config/public_api.mjs +0 -0
  86. /package/{esm2020 → esm2022}/routing/config/token.mjs +0 -0
  87. /package/{esm2020 → esm2022}/routing/daffodil-product-composite-routing.mjs +0 -0
  88. /package/{esm2020 → esm2022}/routing/effects/public_api.mjs +0 -0
  89. /package/{esm2020 → esm2022}/routing/index.mjs +0 -0
  90. /package/{esm2020 → esm2022}/routing/public_api.mjs +0 -0
  91. /package/{esm2020 → esm2022}/state/actions/composite-product.actions.mjs +0 -0
  92. /package/{esm2020 → esm2022}/state/actions/public_api.mjs +0 -0
  93. /package/{esm2020 → esm2022}/state/daffodil-product-composite-state.mjs +0 -0
  94. /package/{esm2020 → esm2022}/state/facades/composite-product/composite-product-facade.interface.mjs +0 -0
  95. /package/{esm2020 → esm2022}/state/facades/public_api.mjs +0 -0
  96. /package/{esm2020 → esm2022}/state/helpers/ensure-items.mjs +0 -0
  97. /package/{esm2020 → esm2022}/state/helpers/public_api.mjs +0 -0
  98. /package/{esm2020 → esm2022}/state/index.mjs +0 -0
  99. /package/{esm2020 → esm2022}/state/public_api.mjs +0 -0
  100. /package/{esm2020 → esm2022}/state/reducers/composite-product-entities/composite-product-entities-reducer-adapter.mjs +0 -0
  101. /package/{esm2020 → esm2022}/state/reducers/composite-product-entities/composite-product-entities.reducer.mjs +0 -0
  102. /package/{esm2020 → esm2022}/state/reducers/composite-product-entities/composite-product-entity.mjs +0 -0
  103. /package/{esm2020 → esm2022}/state/reducers/composite-product-reducers-state.interface.mjs +0 -0
  104. /package/{esm2020 → esm2022}/state/reducers/composite-product-reducers.mjs +0 -0
  105. /package/{esm2020 → esm2022}/state/reducers/composite-product-store-feature-key.mjs +0 -0
  106. /package/{esm2020 → esm2022}/state/reducers/ensure-items.meta-reducer.mjs +0 -0
  107. /package/{esm2020 → esm2022}/state/reducers/injection-tokens/extra.token.mjs +0 -0
  108. /package/{esm2020 → esm2022}/state/reducers/injection-tokens/public_api.mjs +0 -0
  109. /package/{esm2020 → esm2022}/state/reducers/injection-tokens/reducers.token.mjs +0 -0
  110. /package/{esm2020 → esm2022}/state/reducers/public_api.mjs +0 -0
  111. /package/{esm2020 → esm2022}/state/selectors/all.selector.mjs +0 -0
  112. /package/{esm2020 → esm2022}/state/selectors/composite-product/composite-product.selectors.mjs +0 -0
  113. /package/{esm2020 → esm2022}/state/selectors/composite-product-entities/composite-product-entities.selectors.mjs +0 -0
  114. /package/{esm2020 → esm2022}/state/selectors/feature.selector.mjs +0 -0
  115. /package/{esm2020 → esm2022}/state/selectors/public_api.mjs +0 -0
  116. /package/{esm2020 → esm2022}/state/testing/daffodil-product-composite-state-testing.mjs +0 -0
  117. /package/{esm2020 → esm2022}/state/testing/index.mjs +0 -0
  118. /package/{esm2020 → esm2022}/state/testing/public_api.mjs +0 -0
  119. /package/{esm2020 → esm2022}/testing/daffodil-product-composite-testing.mjs +0 -0
  120. /package/{esm2020 → esm2022}/testing/factories/public_api.mjs +0 -0
  121. /package/{esm2020 → esm2022}/testing/index.mjs +0 -0
  122. /package/{esm2020 → esm2022}/testing/public_api.mjs +0 -0
  123. /package/{fesm2015 → fesm2022}/daffodil-product-composite.mjs +0 -0
  124. /package/{fesm2020 → fesm2022}/daffodil-product-composite.mjs.map +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"daffodil-product-composite-state.mjs","sources":["../../../libs/product-composite/state/src/actions/composite-product.actions.ts","../../../libs/product-composite/state/src/reducers/composite-product-entities/composite-product-entities-reducer-adapter.ts","../../../libs/product-composite/state/src/reducers/composite-product-store-feature-key.ts","../../../libs/product-composite/state/src/selectors/feature.selector.ts","../../../libs/product-composite/state/src/selectors/composite-product-entities/composite-product-entities.selectors.ts","../../../libs/product-composite/state/src/selectors/composite-product/composite-product.selectors.ts","../../../libs/product-composite/state/src/selectors/all.selector.ts","../../../libs/product-composite/state/src/facades/composite-product/composite-product.facade.ts","../../../libs/product-composite/state/src/reducers/composite-product-entities/composite-product-entities.reducer.ts","../../../libs/product-composite/state/src/reducers/composite-product-reducers.ts","../../../libs/product-composite/state/src/reducers/injection-tokens/extra.token.ts","../../../libs/product-composite/state/src/helpers/ensure-items.ts","../../../libs/product-composite/state/src/reducers/ensure-items.meta-reducer.ts","../../../libs/product-composite/state/src/reducers/injection-tokens/reducers.token.ts","../../../libs/product-composite/state/src/composite-product-state.module.ts","../../../libs/product-composite/state/src/daffodil-product-composite-state.ts"],"sourcesContent":["import { Action } from '@ngrx/store';\n\nimport {\n DaffCompositeProduct,\n DaffCompositeProductItem,\n DaffCompositeProductItemOption,\n} from '@daffodil/product-composite';\n\n/**\n * Action types for Composite Product Actions.\n */\nexport enum DaffCompositeProductActionTypes {\n CompositeProductApplyOptionAction = '[Composite Product] Composite Product Apply Option Action'\n}\n\n/**\n * Applies a product option to a particular composite product.\n *\n * @param id - Id of the Composite Product\n * @param itemId - Id of the product item.\n * @param optionId - Id of the option of the product item that is chosen.\n */\nexport class DaffCompositeProductApplyOption<T extends DaffCompositeProduct = DaffCompositeProduct> implements Action {\n readonly type = DaffCompositeProductActionTypes.CompositeProductApplyOptionAction;\n\n constructor(public id: T['id'], public itemId: DaffCompositeProductItem['id'], public optionId: DaffCompositeProductItemOption['id'], public qty?: number) {}\n}\n\nexport type DaffCompositeProductActions<T extends DaffCompositeProduct = DaffCompositeProduct> =\n\t| DaffCompositeProductApplyOption<T>;\n","import {\n createEntityAdapter,\n EntityState,\n} from '@ngrx/entity';\nimport { defaultMemoize } from '@ngrx/store';\n\nimport { DaffProductTypeEnum } from '@daffodil/product';\nimport {\n DaffCompositeProduct,\n DaffCompositeProductItem,\n DaffCompositeConfigurationItem,\n DaffCompositeProductItemOption,\n} from '@daffodil/product-composite';\n\nimport { DaffCompositeProductEntity } from './composite-product-entity';\n\n/**\n * Composite Product Item Options Adapter for changing/overwriting entity state.\n */\nexport class DaffCompositeProductAppliedOptionsEntitiesAdapter<T extends EntityState<DaffCompositeProductEntity> = EntityState<DaffCompositeProductEntity>> {\n /**\n * @docs-private\n */\n private _adapter = createEntityAdapter<DaffCompositeProductEntity>();\n\n /**\n * Gets the initial entity state.\n */\n getInitialState() {\n return this._adapter.getInitialState();\n }\n\n /**\n * Get the entity selectors.\n */\n getSelectors() {\n return this._adapter.getSelectors();\n }\n\n /**\n * Upserts the given composite products into state.\n */\n upsertProducts(state: T, ...products: DaffCompositeProduct[]): T {\n return this._adapter.upsertMany(\n this.mapOptionsEntities(products),\n state,\n );\n };\n\n /**\n * Apply the specified option for the given composite product item.\n */\n applyOption(state: T, productId: DaffCompositeProduct['id'], itemId: DaffCompositeProductItem['id'], optionId: DaffCompositeProductItemOption['id'], qty?: number) {\n return this._adapter.upsertOne(\n {\n id: productId,\n items: {\n ...state.entities[productId].items,\n [itemId]: {\n value: optionId,\n qty: qty ?? 1,\n },\n },\n },\n state,\n );\n }\n\n /**\n * @docs-private\n */\n private mapOptionsEntities(products: DaffCompositeProduct[]): DaffCompositeProductEntity[] {\n return products.filter(product => product.type === DaffProductTypeEnum.Composite)\n .map(product => this.buildCompositeProductAppliedOptionsEntity(product));\n }\n\n /**\n * @docs-private\n */\n private buildCompositeProductAppliedOptionsEntity(product: DaffCompositeProduct): DaffCompositeProductEntity {\n return {\n id: product.id,\n items: product.items.reduce((acc, item) => ({\n ...acc,\n [item.id]: this.getDefaultOption(item),\n }), {}),\n };\n }\n\n /**\n * Sets the default item option to the specified default option if it is in stock.\n * Does not set a default option if a default is not specified.\n * Does not set a default option but does set a default qty if the default is out of stock.\n *\n * @param item a DaffCompositeProductItem\n * @docs-private\n */\n private getDefaultOption(item: DaffCompositeProductItem): DaffCompositeConfigurationItem {\n const defaultOptionIndex = item.options.findIndex(option => option.is_default);\n\n if(defaultOptionIndex > -1) {\n return {\n value: item.options[defaultOptionIndex].in_stock ? item.options[defaultOptionIndex].id : null,\n qty: item.options[defaultOptionIndex].quantity,\n };\n } else {\n return { value: null, qty: null };\n }\n }\n}\n\n/**\n * Gets the composite product entity adapter singleton.\n */\nexport const daffCompositeProductAppliedOptionsEntitiesAdapter: () => DaffCompositeProductAppliedOptionsEntitiesAdapter = defaultMemoize(() => new DaffCompositeProductAppliedOptionsEntitiesAdapter()).memoized;\n","export const DAFF_COMPOSITE_PRODUCT_STORE_FEATURE_KEY = 'daffCompositeProduct';\n","import {\n createFeatureSelector,\n MemoizedSelector,\n} from '@ngrx/store';\n\nimport { DaffCompositeProductReducersState } from '../reducers/composite-product-reducers-state.interface';\nimport { DAFF_COMPOSITE_PRODUCT_STORE_FEATURE_KEY } from '../reducers/composite-product-store-feature-key';\n\n/**\n * An interface for the composite product feature state.\n */\nexport interface DaffCompositeProductFeatureMemoizedSelector {\n selectCompositeProductState: MemoizedSelector<Record<string, any>, DaffCompositeProductReducersState>;\n}\n\n/**\n * A function that returns a selector for the composite product feature state.\n */\nexport const getDaffCompositeProductFeatureSelector = (() => {\n let cache;\n return (): DaffCompositeProductFeatureMemoizedSelector => cache = cache\n ? cache\n : { selectCompositeProductState: createFeatureSelector<DaffCompositeProductReducersState>(DAFF_COMPOSITE_PRODUCT_STORE_FEATURE_KEY) };\n})();\n","import {\n EntityState,\n Dictionary,\n} from '@ngrx/entity';\nimport {\n createSelector,\n MemoizedSelector,\n defaultMemoize,\n} from '@ngrx/store';\n\nimport {\n DaffProduct,\n DaffProductTypeEnum,\n} from '@daffodil/product';\nimport { getDaffProductEntitiesSelectors } from '@daffodil/product/state';\nimport {\n DaffCompositeProductItemOption,\n DaffCompositeProductItem,\n DaffCompositeProduct,\n} from '@daffodil/product-composite';\n\nimport { daffCompositeProductAppliedOptionsEntitiesAdapter } from '../../reducers/composite-product-entities/composite-product-entities-reducer-adapter';\nimport { DaffCompositeProductEntity } from '../../reducers/composite-product-entities/composite-product-entity';\nimport {\n DaffCompositeProductReducersState,\n DaffCompositeProductStateRootSlice,\n} from '../../reducers/composite-product-reducers-state.interface';\nimport { getDaffCompositeProductFeatureSelector } from '../feature.selector';\n\n/**\n * An interface for selectors related to the composite product applied options.\n */\nexport interface DaffCompositeProductEntitiesMemoizedSelectors<T extends DaffProduct = DaffProduct> {\n /**\n * The ngrx entities state for composite product applied options.\n */\n selectCompositeProductAppliedOptionsEntitiesState: MemoizedSelector<DaffCompositeProductStateRootSlice<T>, EntityState<DaffCompositeProductEntity>>;\n /**\n * A selector for all composite product ids in state.\n */\n selectCompositeProductIds: MemoizedSelector<DaffCompositeProductStateRootSlice<T>, EntityState<DaffCompositeProductEntity>['ids']>;\n /**\n * The ngrx entities for the composite product appllied options.\n */\n selectCompositeProductAppliedOptionsEntities: MemoizedSelector<DaffCompositeProductStateRootSlice<T>, EntityState<DaffCompositeProductEntity>['entities']>;\n /**\n * The total number of composite products in state.\n */\n selectCompositeProductTotal: MemoizedSelector<DaffCompositeProductStateRootSlice<T>, number>;\n /**\n * Selects the applied options for a composite product.\n *\n * @param id the id of the composite product.\n */\n selectCompositeProductAppliedOptions: (id: T['id']) => MemoizedSelector<DaffCompositeProductStateRootSlice<T>, Dictionary<DaffCompositeProductItemOption>>;\n /**\n * Selects whether the particular item of a composite product is required in order for the product to be valid, i.e. addable to the cart.\n *\n * @param id the id of the composite product.\n * @param item_id the id of the composite product item.\n */\n selectIsCompositeProductItemRequired: (id: T['id'], item_id: DaffCompositeProductItem['id']) => MemoizedSelector<DaffCompositeProductStateRootSlice<T>, boolean>;\n}\n\nconst createCompositeProductAppliedOptionsEntitiesSelectors = <T extends DaffProduct>(): DaffCompositeProductEntitiesMemoizedSelectors<T> => {\n const {\n selectCompositeProductState,\n } = getDaffCompositeProductFeatureSelector();\n const {\n selectProduct,\n } = getDaffProductEntitiesSelectors<T>();\n const adapterSelectors = daffCompositeProductAppliedOptionsEntitiesAdapter().getSelectors();\n\n const selectCompositeProductAppliedOptionsEntitiesState = createSelector(\n selectCompositeProductState,\n (state: DaffCompositeProductReducersState) => state.compositeProductOptions,\n );\n\n const selectCompositeProductIds = createSelector(\n selectCompositeProductAppliedOptionsEntitiesState,\n adapterSelectors.selectIds,\n );\n\n const selectCompositeProductAppliedOptionsEntities = createSelector(\n selectCompositeProductAppliedOptionsEntitiesState,\n adapterSelectors.selectEntities,\n );\n\n const selectCompositeProductTotal = createSelector(\n selectCompositeProductAppliedOptionsEntitiesState,\n adapterSelectors.selectTotal,\n );\n\n const selectCompositeProductAppliedOptions = defaultMemoize((id: T['id']) => createSelector(\n selectProduct(id),\n selectCompositeProductAppliedOptionsEntitiesState,\n (product: T, appliedOptions) => {\n if(product.type !== DaffProductTypeEnum.Composite) {\n return undefined;\n }\n\n return (<DaffCompositeProduct><any>product).items.reduce((acc, item) => ({\n ...acc,\n [item.id]: appliedOptions.entities[product.id].items[item.id].value ? {\n ...item.options.find(option => option.id === appliedOptions.entities[product.id].items[item.id].value),\n quantity: appliedOptions.entities[product.id].items[item.id].qty,\n } : null,\n }), {});\n },\n )).memoized;\n\n const selectIsCompositeProductItemRequired = defaultMemoize((id: T['id'], item_id: DaffCompositeProductItem['id']) => createSelector(\n selectProduct(id),\n (product: T) => {\n if(product.type !== DaffProductTypeEnum.Composite) {\n return undefined;\n }\n\n const productItem = (<DaffCompositeProduct><any>product).items.find(item => item.id === item_id);\n\n return productItem ? productItem.required : null;\n },\n )).memoized;\n\n\n return {\n selectCompositeProductAppliedOptionsEntitiesState,\n selectCompositeProductIds,\n selectCompositeProductAppliedOptionsEntities,\n selectCompositeProductTotal,\n selectCompositeProductAppliedOptions,\n selectIsCompositeProductItemRequired,\n };\n};\n\n/**\n * A function that returns all selectors related to composite product applied option entities.\n * Returns {@link DaffCompositeProductEntitiesMemoizedSelectors}.\n */\nexport const getDaffCompositeProductEntitiesSelectors = (() => {\n let cache;\n return <T extends DaffProduct>(): DaffCompositeProductEntitiesMemoizedSelectors<T> => cache = cache\n ? cache\n : createCompositeProductAppliedOptionsEntitiesSelectors<T>();\n})();\n","import {\n Dictionary,\n EntityState,\n} from '@ngrx/entity';\nimport {\n createSelector,\n MemoizedSelector,\n defaultMemoize,\n} from '@ngrx/store';\n\nimport {\n daffAdd,\n daffDivide,\n daffMultiply,\n daffSubtract,\n} from '@daffodil/core';\nimport {\n DaffProduct,\n DaffProductTypeEnum,\n DaffProductPrices,\n DaffPriceRange,\n} from '@daffodil/product';\nimport { getDaffProductEntitiesSelectors } from '@daffodil/product/state';\nimport {\n DaffCompositeProduct,\n DaffCompositeConfigurationItem,\n DaffCompositeProductItem,\n DaffCompositeProductItemOption,\n} from '@daffodil/product-composite';\n\nimport { DaffCompositeProductStateRootSlice } from '../../reducers/composite-product-reducers-state.interface';\nimport { DaffCompositeProductEntity } from '../../reducers/public_api';\nimport { getDaffCompositeProductEntitiesSelectors } from '../composite-product-entities/composite-product-entities.selectors';\n\n/**\n * An interface describing selectors unique to the composite product, such as pricing and discounts.\n */\nexport interface DaffCompositeProductMemoizedSelectors<T extends DaffProduct = DaffProduct> {\n /**\n * Get a DaffPriceRange for a composite product based on the configuration provided excluding unselected, optional item prices.\n */\n selectCompositeProductRequiredItemPricesForConfiguration: ( id: DaffCompositeProduct['id'], configuration?: Dictionary<DaffCompositeConfigurationItem> ) => MemoizedSelector<DaffCompositeProductStateRootSlice<T>, DaffPriceRange>;\n /**\n * Get the broadest possible DaffPriceRange for a composite product based on the configuration provided including optional item prices.\n */\n selectCompositeProductOptionalItemPricesForConfiguration: ( id: DaffCompositeProduct['id'], configuration?: Dictionary<DaffCompositeConfigurationItem> ) => MemoizedSelector<DaffCompositeProductStateRootSlice<T>, DaffPriceRange>;\n /**\n * Get the DaffPriceRange for a composite product based on the current configuration of selected item options in redux state and\n * excluding unselected, optional item prices.\n */\n selectCompositeProductPricesAsCurrentlyConfigured: ( id: DaffCompositeProduct['id'] ) => MemoizedSelector<DaffCompositeProductStateRootSlice<T>, DaffPriceRange>;\n /**\n * Get the discount amount for a composite product. This value will be undefined if all required options are not chosen.\n */\n selectCompositeProductDiscountAmount: ( id: DaffCompositeProduct['id'] ) => MemoizedSelector<DaffCompositeProductStateRootSlice<T>, number>;\n /**\n * Get the discount percent for a composite product. This value will be undefined if all required options are not chosen.\n * Note: this percent is computed client-side and should be treated as an estimate rather than an exact value.\n */\n selectCompositeProductDiscountPercent: ( id: DaffCompositeProduct['id'] ) => MemoizedSelector<DaffCompositeProductStateRootSlice<T>, number>;\n}\n\nconst createCompositeProductSelectors = <T extends DaffProduct>(): DaffCompositeProductMemoizedSelectors<T> => {\n\n const {\n selectProduct,\n } = getDaffProductEntitiesSelectors<T>();\n\n const {\n selectCompositeProductAppliedOptionsEntities,\n } = getDaffCompositeProductEntitiesSelectors();\n\n const selectCompositeProductRequiredItemPricesForConfiguration = defaultMemoize((id: DaffCompositeProduct['id'], configuration?: Dictionary<DaffCompositeConfigurationItem>) => createSelector(\n selectProduct(id),\n (product: T) => {\n if(product.type !== DaffProductTypeEnum.Composite) {\n return undefined;\n }\n\n const appliedOptions = configuration ? getAppliedOptionsForConfiguration(<DaffCompositeProduct><any>product, configuration) : {};\n return {\n minPrice: getMinPricesForConfiguration(<DaffCompositeProduct><any>product, appliedOptions),\n maxPrice: getMaxPricesForConfiguration(<DaffCompositeProduct><any>product, appliedOptions),\n };\n },\n )).memoized;\n\n const selectCompositeProductOptionalItemPricesForConfiguration = defaultMemoize((id: DaffCompositeProduct['id'], configuration?: Dictionary<DaffCompositeConfigurationItem>) => createSelector(\n selectProduct(id),\n (product: T) => {\n if(product.type !== DaffProductTypeEnum.Composite) {\n return undefined;\n }\n\n const appliedOptions = configuration ? getAppliedOptionsForConfiguration(<DaffCompositeProduct><any>product, configuration) : {};\n return {\n minPrice: getMinPricesForConfiguration(<DaffCompositeProduct><any>product, appliedOptions),\n maxPrice: getMaxPricesForConfigurationIncludingOptionalItems(<DaffCompositeProduct><any>product, appliedOptions),\n };\n },\n )).memoized;\n\n const selectCompositeProductPricesAsCurrentlyConfigured = defaultMemoize((id: T['id']) => createSelector<DaffCompositeProductStateRootSlice<T>, [T, EntityState<DaffCompositeProductEntity>['entities']], DaffPriceRange>(\n selectProduct(id),\n selectCompositeProductAppliedOptionsEntities,\n (product: T, appliedOptionsEntities) =>\n selectCompositeProductRequiredItemPricesForConfiguration(id, appliedOptionsEntities[id]?.items || null).projector(product),\n )).memoized;\n\n const selectCompositeProductDiscountAmount = defaultMemoize((id: DaffCompositeProduct['id']) => createSelector<DaffCompositeProductStateRootSlice<T>, [T, EntityState<DaffCompositeProductEntity>['entities']], number>(\n selectProduct(id),\n selectCompositeProductAppliedOptionsEntities,\n (product: T, appliedOptionsEntities) => {\n if(product.type !== DaffProductTypeEnum.Composite) {\n return undefined;\n }\n const appliedConfigurationItem = appliedOptionsEntities[product.id].items;\n if((<DaffCompositeProduct><any>product).items.filter(item => item.required && appliedConfigurationItem[item.id].value === null).length > 0) {\n return undefined;\n }\n const appliedOptions = getAppliedOptionsForConfiguration((<DaffCompositeProduct><any>product), appliedConfigurationItem);\n\n return (<DaffCompositeProduct><any>product).items.reduce((acc, item) =>\n appliedOptions[item.id]?.discount?.amount ? daffAdd(acc, daffMultiply(appliedOptions[item.id].discount.amount, appliedOptions[item.id].quantity)) : acc,\n product.discount.amount);\n },\n )).memoized;\n\n const selectCompositeProductDiscountPercent = defaultMemoize((id: DaffCompositeProduct['id']) => createSelector<DaffCompositeProductStateRootSlice<T>, [T, EntityState<DaffCompositeProductEntity>['entities']], number>(\n selectProduct(id),\n selectCompositeProductAppliedOptionsEntities,\n (product: T, appliedOptionsEntities) => {\n if(product.type !== DaffProductTypeEnum.Composite) {\n return undefined;\n }\n const appliedOptions = appliedOptionsEntities[product.id].items;\n if((<DaffCompositeProduct><any>product).items.filter(item => item.required && appliedOptions[item.id].value === null).length > 0) {\n return undefined;\n }\n\n const prices = getMinPricesForConfiguration(\n (<DaffCompositeProduct><any>product),\n getAppliedOptionsForConfiguration((<DaffCompositeProduct><any>product), appliedOptions),\n );\n\n return daffMultiply(\n daffDivide(\n daffSubtract(prices.originalPrice, prices.discountedPrice),\n prices.originalPrice,\n ),\n 100,\n );\n },\n )).memoized;\n\n return {\n selectCompositeProductRequiredItemPricesForConfiguration,\n selectCompositeProductOptionalItemPricesForConfiguration,\n selectCompositeProductPricesAsCurrentlyConfigured,\n selectCompositeProductDiscountAmount,\n selectCompositeProductDiscountPercent,\n };\n};\n\n/**\n * A function that returns all selectors related to the composite product feature.\n *\n * Returns {@link DaffCompositeProductMemoizedSelectors}.\n */\nexport const getDaffCompositeProductPriceSelectors = (() => {\n let cache;\n return <T extends DaffProduct = DaffProduct>(): DaffCompositeProductMemoizedSelectors<T> => cache = cache\n ? cache\n : createCompositeProductSelectors<T>();\n})();\n\n/**\n * The minimum price of an item is zero if the item is optional.\n *\n * @param item DaffCompositeProductItem\n */\nfunction getMinimumRequiredCompositeItemPrice(item: DaffCompositeProductItem, qty: number): number {\n return item.required ? daffMultiply(Math.min(...item.options.map(option => option.price)), qty) : 0;\n}\n\n/**\n * The maximum price for an item is zero if the item is optional.\n *\n * @param item DaffCompositeProductItem\n */\nfunction getMaximumRequiredCompositeItemPrice(item: DaffCompositeProductItem, qty: number): number {\n return item.required ? daffMultiply(Math.max(...item.options.map(option => option.price)), qty) : 0;\n}\n\n/**\n * The minimum discounted price of an item is zero if the item is optional.\n *\n * @param item DaffCompositeProductItem\n */\nfunction getMinimumRequiredCompositeItemDiscountedPrice(item: DaffCompositeProductItem, qty: number): number {\n return item.required ? daffMultiply(Math.min(...item.options.map(getDiscountedPrice)), qty) : 0;\n}\n/**\n * The maximum discounted price of an item is zero if the item is optional.\n *\n * @param item DaffCompositeProductItem\n */\nfunction getMaximumRequiredCompositeItemDiscountedPrice(item: DaffCompositeProductItem, qty: number): number {\n return item.required ? daffMultiply(Math.max(...item.options.map(getDiscountedPrice)), qty) : 0;\n}\n\n/**\n * Gets the minimum prices of a composite product for the configuration provided excluding unselected, optional item prices.\n *\n * @param product a DaffCompositeProduct\n * @param appliedOptions a Dictionary<DaffCompositeProductItemOption> that determines the current configuration of the composite product.\n */\nfunction getMinPricesForConfiguration(product: DaffCompositeProduct, appliedOptions: Dictionary<DaffCompositeProductItemOption>): DaffProductPrices {\n return {\n discountedPrice: product.items.reduce((acc, item) => daffAdd(\n acc,\n appliedOptionHasId(appliedOptions[item.id]) ?\n daffMultiply(getDiscountedPrice(appliedOptions[item.id]), appliedOptions[item.id].quantity) :\n getMinimumRequiredCompositeItemDiscountedPrice(item, getOptionQty(appliedOptions[item.id])),\n ), getDiscountedPrice(product)),\n discount: { amount: null, percent: null },\n originalPrice: product.items.reduce((acc, item) => daffAdd(\n acc,\n appliedOptionHasId(appliedOptions[item.id]) ?\n daffMultiply(appliedOptions[item.id].price, appliedOptions[item.id].quantity) :\n getMinimumRequiredCompositeItemPrice(item, getOptionQty(appliedOptions[item.id])),\n ), product.price),\n };\n}\n\n/**\n * Gets the maximum prices of a composite product for the configuration provided excluding unselected, optional item prices.\n *\n * @param product a DaffCompositeProduct\n * @param appliedOptions a Dictionary<DaffCompositeProductItemOption> that determines the current configuration of the composite product.\n */\nfunction getMaxPricesForConfiguration(product: DaffCompositeProduct, appliedOptions: Dictionary<DaffCompositeProductItemOption>): DaffProductPrices {\n return {\n discountedPrice: product.items.reduce((acc, item) => daffAdd(\n acc,\n appliedOptionHasId(appliedOptions[item.id]) ?\n daffMultiply(getDiscountedPrice(appliedOptions[item.id]), appliedOptions[item.id].quantity) :\n getMaximumRequiredCompositeItemDiscountedPrice(item, getOptionQty(appliedOptions[item.id])),\n ), getDiscountedPrice(product)),\n discount: { amount: null, percent: null },\n originalPrice: product.items.reduce((acc, item) => daffAdd(\n acc,\n appliedOptionHasId(appliedOptions[item.id]) ?\n daffMultiply(appliedOptions[item.id].price, appliedOptions[item.id].quantity) :\n getMaximumRequiredCompositeItemPrice(item, getOptionQty(appliedOptions[item.id])),\n ), product.price),\n };\n}\n\nfunction getDiscountedPrice(product: DaffProduct): number {\n return product.discount ? daffSubtract(product.price, product.discount.amount) : product.price;\n}\n\n/**\n * Gets the maximum prices of a composite product including optional item prices.\n *\n * @param product a DaffCompositeProduct\n */\nfunction getMaxPricesForConfigurationIncludingOptionalItems(product: DaffCompositeProduct, appliedOptions: Dictionary<DaffCompositeProductItemOption>): DaffProductPrices {\n return {\n discountedPrice: product.items.reduce((acc, item) => daffAdd(\n acc,\n appliedOptionHasId(appliedOptions[item.id]) ?\n daffMultiply(getDiscountedPrice(appliedOptions[item.id]), appliedOptions[item.id].quantity) :\n appliedOptionHasQty(appliedOptions[item.id]) ?\n daffMultiply(Math.max(...item.options.map(getDiscountedPrice)), appliedOptions[item.id].quantity) :\n Math.max(...item.options.map(getDiscountedPrice)),\n ), getDiscountedPrice(product)),\n discount: { amount: null, percent: null },\n originalPrice: product.items.reduce((acc, item) => daffAdd(\n acc,\n appliedOptionHasId(appliedOptions[item.id]) ?\n daffMultiply(appliedOptions[item.id].price, appliedOptions[item.id].quantity) :\n appliedOptionHasQty(appliedOptions[item.id]) ?\n daffMultiply(Math.max(...item.options.map(option => option.price)), appliedOptions[item.id].quantity) :\n Math.max(...item.options.map(option => option.price)),\n ), product.price),\n };\n}\n\n/**\n * Takes a product and a set of option configurations and convert it into a dictionary of the full option objects.\n *\n * @param product a DaffCompositeProduct\n * @param configuration a Dictionary<DaffCompositeConfigurationItem> used to build the appliedOptions object.\n */\nfunction getAppliedOptionsForConfiguration(product: DaffCompositeProduct, configuration: Dictionary<DaffCompositeConfigurationItem>): Dictionary<DaffCompositeProductItemOption> {\n return product.items.reduce((acc, item) => ({\n ...acc,\n [item.id]: configuration[item.id] ? {\n ...item.options.find(option => option.id === configuration[item.id].value),\n quantity: (configuration[item.id].qty === null || configuration[item.id].qty === undefined) ? 1 : configuration[item.id].qty,\n } : null,\n }), {});\n}\n\nfunction appliedOptionHasId(appliedOption: DaffCompositeProductItemOption): boolean {\n return !!appliedOption?.id;\n}\n\nfunction getOptionQty(appliedOption: DaffCompositeProductItemOption): number {\n return appliedOptionHasQty(appliedOption) ? appliedOption.quantity : 1;\n}\n\nfunction appliedOptionHasQty(appliedOption: DaffCompositeProductItemOption): boolean {\n return appliedOption?.quantity !== null && appliedOption?.quantity !== undefined;\n}\n","import { DaffProduct } from '@daffodil/product';\n\nimport {\n DaffCompositeProductMemoizedSelectors,\n getDaffCompositeProductPriceSelectors,\n} from './composite-product/composite-product.selectors';\nimport {\n DaffCompositeProductEntitiesMemoizedSelectors,\n getDaffCompositeProductEntitiesSelectors,\n} from './composite-product-entities/composite-product-entities.selectors';\n\n/**\n * An interface for all selectors in the composite product feature area.\n */\nexport interface DaffCompositeProductAllSelectors<T extends DaffProduct = DaffProduct> extends\n DaffCompositeProductEntitiesMemoizedSelectors<T>,\n DaffCompositeProductMemoizedSelectors<T> { }\n\n/**\n * A function that returns all selectors in the composite product feature area.\n * Returns {@link DaffCompositeProductAllSelectors}.\n */\nexport const getDaffCompositeProductSelectors = <T extends DaffProduct>(): DaffCompositeProductAllSelectors<T> => ({\n ...getDaffCompositeProductEntitiesSelectors<T>(),\n ...getDaffCompositeProductPriceSelectors<T>(),\n});\n","import { Injectable } from '@angular/core';\nimport { Dictionary } from '@ngrx/entity';\nimport {\n Store,\n select,\n Action,\n} from '@ngrx/store';\nimport { Observable } from 'rxjs';\n\nimport {\n DaffProduct,\n DaffPriceRange,\n productPriceRangeHasDiscount,\n productPriceRangeHasPriceRange,\n} from '@daffodil/product';\nimport {\n DaffCompositeConfigurationItem,\n DaffCompositeProductItemOption,\n DaffCompositeProductItem,\n} from '@daffodil/product-composite';\n\nimport { DaffCompositeProductFacadeInterface } from './composite-product-facade.interface';\nimport { DaffCompositeProductStateRootSlice } from '../../reducers/composite-product-reducers-state.interface';\nimport { getDaffCompositeProductSelectors } from '../../selectors/public_api';\n\n/**\n * A facade for interacting with the composite product state.\n * Exposes many parts of the state for easy access and allows dispatching of actions.\n *\n * @inheritdoc\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class DaffCompositeProductFacade<T extends DaffProduct = DaffProduct> implements DaffCompositeProductFacadeInterface {\n\n constructor(private store: Store<DaffCompositeProductStateRootSlice<T>>) {}\n\n compositeProductSelectors = getDaffCompositeProductSelectors<T>();\n\n hasDiscount = productPriceRangeHasDiscount;\n\n hasPriceRange = productPriceRangeHasPriceRange;\n\n getRequiredItemPricesForConfiguration(id: T['id'], configuration?: Dictionary<DaffCompositeConfigurationItem>): Observable<DaffPriceRange> {\n\t return this.store.pipe(select(this.compositeProductSelectors.selectCompositeProductRequiredItemPricesForConfiguration(id, configuration)));\n }\n\n getOptionalItemPricesForConfiguration(id: T['id'], configuration?: Dictionary<DaffCompositeConfigurationItem>): Observable<DaffPriceRange> {\n\t return this.store.pipe(select(this.compositeProductSelectors.selectCompositeProductOptionalItemPricesForConfiguration(id, configuration)));\n }\n\n getPricesAsCurrentlyConfigured(id: T['id']): Observable<DaffPriceRange> {\n\t return this.store.pipe(select(this.compositeProductSelectors.selectCompositeProductPricesAsCurrentlyConfigured(id)));\n }\n\n getAppliedOptions(id: T['id']): Observable<Dictionary<DaffCompositeProductItemOption>> {\n\t return this.store.pipe(select(this.compositeProductSelectors.selectCompositeProductAppliedOptions(id)));\n }\n\n getDiscountAmount(id: T['id']): Observable<number> {\n\t return this.store.pipe(select(this.compositeProductSelectors.selectCompositeProductDiscountAmount(id)));\n }\n\n getDiscountPercent(id: T['id']): Observable<number> {\n\t return this.store.pipe(select(this.compositeProductSelectors.selectCompositeProductDiscountPercent(id)));\n }\n\n isItemRequired(id: T['id'], item_id: DaffCompositeProductItem['id']) {\n\t return this.store.pipe(select(this.compositeProductSelectors.selectIsCompositeProductItemRequired(id, item_id)));\n }\n\n dispatch(action: Action) {\n\t this.store.dispatch(action);\n }\n}\n","import { EntityState } from '@ngrx/entity';\n\nimport { DaffProduct } from '@daffodil/product';\nimport {\n DaffProductPageActions,\n DaffProductPageActionTypes,\n DaffProductGridActionTypes,\n DaffProductGridActions,\n DaffBestSellersActions,\n DaffProductActions,\n DaffBestSellersActionTypes,\n DaffProductActionTypes,\n} from '@daffodil/product/state';\nimport { DaffCompositeProduct } from '@daffodil/product-composite';\n\nimport { daffCompositeProductAppliedOptionsEntitiesAdapter } from './composite-product-entities-reducer-adapter';\nimport { DaffCompositeProductEntity } from './composite-product-entity';\nimport {\n DaffCompositeProductActions,\n DaffCompositeProductActionTypes,\n} from '../../actions/public_api';\n\n/**\n * Reducer function that catches actions and changes/overwrites composite product entities state.\n *\n * @param state current State of the redux store\n * @param action ProductGrid, BestSellers, Product, or Composite Product actions\n * @returns Product entities state\n */\nexport function daffCompositeProductEntitiesReducer<T extends DaffProduct, V extends DaffCompositeProduct>(\n state = daffCompositeProductAppliedOptionsEntitiesAdapter().getInitialState(),\n action: DaffProductGridActions<T> | DaffBestSellersActions<T> | DaffProductActions<T> | DaffProductPageActions<T> | DaffCompositeProductActions<V>): EntityState<DaffCompositeProductEntity> {\n const adapter = daffCompositeProductAppliedOptionsEntitiesAdapter();\n switch (action.type) {\n case DaffProductGridActionTypes.ProductGridLoadSuccessAction:\n case DaffBestSellersActionTypes.BestSellersLoadSuccessAction:\n return adapter.upsertProducts(state, ...(<V[]><unknown>action.payload));\n\n case DaffProductActionTypes.ProductLoadSuccessAction:\n case DaffProductPageActionTypes.ProductPageLoadSuccessAction:\n return adapter.upsertProducts(state, ...(<V[]><unknown>action.payload.products));\n\n case DaffCompositeProductActionTypes.CompositeProductApplyOptionAction:\n return adapter.applyOption(state, action.id, action.itemId, action.optionId, action.qty);\n\n default:\n return state;\n }\n}\n","import { ActionReducerMap } from '@ngrx/store';\n\nimport { daffCompositeProductEntitiesReducer } from './composite-product-entities/composite-product-entities.reducer';\nimport { DaffCompositeProductReducersState } from './composite-product-reducers-state.interface';\n\n/**\n * Returns state values from all composite product related reducers.\n */\nexport const daffCompositeProductReducers: ActionReducerMap<DaffCompositeProductReducersState> = {\n compositeProductOptions: daffCompositeProductEntitiesReducer,\n};\n","import {\n InjectionToken,\n Provider,\n} from '@angular/core';\nimport { ActionReducer } from '@ngrx/store';\n\nimport { DaffCompositeProductReducersState } from '../composite-product-reducers-state.interface';\n\n/**\n * A token to hold the injectable extra reducers.\n *\n * Prefer using {@link daffProductCompositeProvideExtraReducers}.\n */\nexport const DAFF_PRODUCT_COMPOSITE_EXTRA_REDUCERS = new InjectionToken<ActionReducer<DaffCompositeProductReducersState>[]>(\n 'DAFF_PRODUCT_COMPOSITE_EXTRA_REDUCERS',\n { factory: () => []},\n);\n\n/**\n * Provides additional reducers that run after the standard Daffodil cart reducers.\n *\n * ```ts\n * providers: [\n * ...daffProductCompositeProvideExtraReducers(\n * myReducer1,\n * myReducer2\n * )\n * ]\n * ```\n */\nexport function daffProductCompositeProvideExtraReducers(\n ...reducers: ActionReducer<Partial<DaffCompositeProductReducersState>>[]\n): Provider[] {\n return reducers.map(reducer => ({\n provide: DAFF_PRODUCT_COMPOSITE_EXTRA_REDUCERS,\n useValue: reducer,\n multi: true,\n }));\n}\n","import { DaffProductTypeEnum } from '@daffodil/product';\nimport { DaffProductReducersState } from '@daffodil/product/state';\nimport { DaffCompositeProduct } from '@daffodil/product-composite';\n\n/**\n * Maps a list of products, ensuring that the composite products have a list of items.\n * If the incoming items is empty or nully, the items from state are intentionally used instead.\n */\nexport function daffProductCompositeEnsureItems<T extends DaffCompositeProduct = DaffCompositeProduct>(state: DaffProductReducersState<T>, products: T[]): T[] {\n return products.map((product) =>\n product.type === DaffProductTypeEnum.Composite\n ? {\n ...product,\n items: product.items.length > 0\n ? product.items\n : state.products.entities[product.id]?.items ?? [],\n }\n : product,\n );\n}\n","import { ActionReducer } from '@ngrx/store';\n\nimport { DaffProductTypeEnum } from '@daffodil/product';\nimport {\n DaffProductActionTypes,\n DaffProductActions,\n DaffProductLoadSuccess,\n DaffProductPageActionTypes,\n DaffProductPageActions,\n DaffProductPageLoadSuccess,\n DaffProductReducersState,\n} from '@daffodil/product/state';\nimport { DaffCompositeProduct } from '@daffodil/product-composite';\n\nimport { daffProductCompositeEnsureItems } from '../helpers/public_api';\n\ntype Reducer = ActionReducer<DaffProductReducersState<DaffCompositeProduct>, DaffProductActions<DaffCompositeProduct> | DaffProductPageActions<DaffCompositeProduct>>;\n\nexport function daffProductCompositeEnsureItemsMetaReducer(reducer: Reducer): Reducer {\n return (state, action) => {\n switch (action.type) {\n case DaffProductPageActionTypes.ProductPageLoadSuccessAction:\n return reducer(state, new DaffProductPageLoadSuccess({\n ...action.payload,\n products: daffProductCompositeEnsureItems(state, action.payload.products),\n }));\n\n case DaffProductActionTypes.ProductLoadSuccessAction:\n return reducer(state, new DaffProductLoadSuccess({\n ...action.payload,\n products: daffProductCompositeEnsureItems(state, action.payload.products),\n }));\n\n default:\n return reducer(state, action);\n }\n };\n}\n","import {\n inject,\n InjectionToken,\n} from '@angular/core';\nimport {\n ActionReducer,\n combineReducers,\n} from '@ngrx/store';\n\nimport { daffComposeReducers } from '@daffodil/core/state';\n\nimport { DAFF_PRODUCT_COMPOSITE_EXTRA_REDUCERS } from './extra.token';\nimport { daffCompositeProductReducers } from '../composite-product-reducers';\nimport { DaffCompositeProductReducersState } from '../composite-product-reducers-state.interface';\n\n/**\n * An internal token to hold the Daffodil composite product reducers.\n * Includes the extra and standard reducers.\n *\n * @docs-private\n */\nexport const DAFF_PRODUCT_COMPOSITE_REDUCERS = new InjectionToken<ActionReducer<DaffCompositeProductReducersState>>(\n 'DAFF_PRODUCT_COMPOSITE_REDUCERS',\n {\n factory: () => daffComposeReducers([\n combineReducers(daffCompositeProductReducers),\n ...inject(DAFF_PRODUCT_COMPOSITE_EXTRA_REDUCERS),\n ]),\n },\n);\n","import { NgModule } from '@angular/core';\nimport { StoreModule } from '@ngrx/store';\n\nimport { daffProductProvideMetaReducers } from '@daffodil/product/state';\n\nimport { daffProductCompositeEnsureItemsMetaReducer } from './reducers/ensure-items.meta-reducer';\nimport { DAFF_PRODUCT_COMPOSITE_REDUCERS } from './reducers/injection-tokens/reducers.token';\nimport { DAFF_COMPOSITE_PRODUCT_STORE_FEATURE_KEY } from './reducers/public_api';\n\n/**\n * A module that provides the default reducers and effects for composite product redux state.\n */\n@NgModule({\n imports: [\n StoreModule.forFeature(DAFF_COMPOSITE_PRODUCT_STORE_FEATURE_KEY, DAFF_PRODUCT_COMPOSITE_REDUCERS),\n ],\n providers: [\n ...daffProductProvideMetaReducers(daffProductCompositeEnsureItemsMetaReducer),\n ],\n})\nexport class DaffCompositeProductStateModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daffodil-product-composite-state.mjs","sources":["../../../libs/product-composite/state/src/actions/composite-product.actions.ts","../../../libs/product-composite/state/src/reducers/composite-product-entities/composite-product-entities-reducer-adapter.ts","../../../libs/product-composite/state/src/reducers/composite-product-store-feature-key.ts","../../../libs/product-composite/state/src/selectors/feature.selector.ts","../../../libs/product-composite/state/src/selectors/composite-product-entities/composite-product-entities.selectors.ts","../../../libs/product-composite/state/src/selectors/composite-product/composite-product.selectors.ts","../../../libs/product-composite/state/src/selectors/all.selector.ts","../../../libs/product-composite/state/src/facades/composite-product/composite-product.facade.ts","../../../libs/product-composite/state/src/reducers/composite-product-entities/composite-product-entities.reducer.ts","../../../libs/product-composite/state/src/reducers/composite-product-reducers.ts","../../../libs/product-composite/state/src/reducers/injection-tokens/extra.token.ts","../../../libs/product-composite/state/src/helpers/ensure-items.ts","../../../libs/product-composite/state/src/reducers/ensure-items.meta-reducer.ts","../../../libs/product-composite/state/src/reducers/injection-tokens/reducers.token.ts","../../../libs/product-composite/state/src/composite-product-state.module.ts","../../../libs/product-composite/state/src/daffodil-product-composite-state.ts"],"sourcesContent":["import { Action } from '@ngrx/store';\n\nimport {\n DaffCompositeProduct,\n DaffCompositeProductItem,\n DaffCompositeProductItemOption,\n} from '@daffodil/product-composite';\n\n/**\n * Action types for Composite Product Actions.\n */\nexport enum DaffCompositeProductActionTypes {\n CompositeProductApplyOptionAction = '[Composite Product] Composite Product Apply Option Action'\n}\n\n/**\n * Applies a product option to a particular composite product.\n *\n * @param id - Id of the Composite Product\n * @param itemId - Id of the product item.\n * @param optionId - Id of the option of the product item that is chosen.\n */\nexport class DaffCompositeProductApplyOption<T extends DaffCompositeProduct = DaffCompositeProduct> implements Action {\n readonly type = DaffCompositeProductActionTypes.CompositeProductApplyOptionAction;\n\n constructor(public id: T['id'], public itemId: DaffCompositeProductItem['id'], public optionId: DaffCompositeProductItemOption['id'], public qty?: number) {}\n}\n\nexport type DaffCompositeProductActions<T extends DaffCompositeProduct = DaffCompositeProduct> =\n\t| DaffCompositeProductApplyOption<T>;\n","import {\n createEntityAdapter,\n EntityState,\n} from '@ngrx/entity';\nimport { defaultMemoize } from '@ngrx/store';\n\nimport { DaffProductTypeEnum } from '@daffodil/product';\nimport {\n DaffCompositeProduct,\n DaffCompositeProductItem,\n DaffCompositeConfigurationItem,\n DaffCompositeProductItemOption,\n} from '@daffodil/product-composite';\n\nimport { DaffCompositeProductEntity } from './composite-product-entity';\n\n/**\n * Composite Product Item Options Adapter for changing/overwriting entity state.\n */\nexport class DaffCompositeProductAppliedOptionsEntitiesAdapter<T extends EntityState<DaffCompositeProductEntity> = EntityState<DaffCompositeProductEntity>> {\n /**\n * @docs-private\n */\n private _adapter = createEntityAdapter<DaffCompositeProductEntity>();\n\n /**\n * Gets the initial entity state.\n */\n getInitialState() {\n return this._adapter.getInitialState();\n }\n\n /**\n * Get the entity selectors.\n */\n getSelectors() {\n return this._adapter.getSelectors();\n }\n\n /**\n * Upserts the given composite products into state.\n */\n upsertProducts(state: T, ...products: DaffCompositeProduct[]): T {\n return this._adapter.upsertMany(\n this.mapOptionsEntities(products),\n state,\n );\n };\n\n /**\n * Apply the specified option for the given composite product item.\n */\n applyOption(state: T, productId: DaffCompositeProduct['id'], itemId: DaffCompositeProductItem['id'], optionId: DaffCompositeProductItemOption['id'], qty?: number) {\n return this._adapter.upsertOne(\n {\n id: productId,\n items: {\n ...state.entities[productId].items,\n [itemId]: {\n value: optionId,\n qty: qty ?? 1,\n },\n },\n },\n state,\n );\n }\n\n /**\n * @docs-private\n */\n private mapOptionsEntities(products: DaffCompositeProduct[]): DaffCompositeProductEntity[] {\n return products.filter(product => product.type === DaffProductTypeEnum.Composite)\n .map(product => this.buildCompositeProductAppliedOptionsEntity(product));\n }\n\n /**\n * @docs-private\n */\n private buildCompositeProductAppliedOptionsEntity(product: DaffCompositeProduct): DaffCompositeProductEntity {\n return {\n id: product.id,\n items: product.items.reduce((acc, item) => ({\n ...acc,\n [item.id]: this.getDefaultOption(item),\n }), {}),\n };\n }\n\n /**\n * Sets the default item option to the specified default option if it is in stock.\n * Does not set a default option if a default is not specified.\n * Does not set a default option but does set a default qty if the default is out of stock.\n *\n * @param item a DaffCompositeProductItem\n * @docs-private\n */\n private getDefaultOption(item: DaffCompositeProductItem): DaffCompositeConfigurationItem {\n const defaultOptionIndex = item.options.findIndex(option => option.is_default);\n\n if(defaultOptionIndex > -1) {\n return {\n value: item.options[defaultOptionIndex].in_stock ? item.options[defaultOptionIndex].id : null,\n qty: item.options[defaultOptionIndex].quantity,\n };\n } else {\n return { value: null, qty: null };\n }\n }\n}\n\n/**\n * Gets the composite product entity adapter singleton.\n */\nexport const daffCompositeProductAppliedOptionsEntitiesAdapter: () => DaffCompositeProductAppliedOptionsEntitiesAdapter = defaultMemoize(() => new DaffCompositeProductAppliedOptionsEntitiesAdapter()).memoized;\n","export const DAFF_COMPOSITE_PRODUCT_STORE_FEATURE_KEY = 'daffCompositeProduct';\n","import {\n createFeatureSelector,\n MemoizedSelector,\n} from '@ngrx/store';\n\nimport { DaffCompositeProductReducersState } from '../reducers/composite-product-reducers-state.interface';\nimport { DAFF_COMPOSITE_PRODUCT_STORE_FEATURE_KEY } from '../reducers/composite-product-store-feature-key';\n\n/**\n * An interface for the composite product feature state.\n */\nexport interface DaffCompositeProductFeatureMemoizedSelector {\n selectCompositeProductState: MemoizedSelector<Record<string, any>, DaffCompositeProductReducersState>;\n}\n\n/**\n * A function that returns a selector for the composite product feature state.\n */\nexport const getDaffCompositeProductFeatureSelector = (() => {\n let cache;\n return (): DaffCompositeProductFeatureMemoizedSelector => cache = cache\n ? cache\n : { selectCompositeProductState: createFeatureSelector<DaffCompositeProductReducersState>(DAFF_COMPOSITE_PRODUCT_STORE_FEATURE_KEY) };\n})();\n","import {\n EntityState,\n Dictionary,\n} from '@ngrx/entity';\nimport {\n createSelector,\n MemoizedSelector,\n defaultMemoize,\n} from '@ngrx/store';\n\nimport {\n DaffProduct,\n DaffProductTypeEnum,\n} from '@daffodil/product';\nimport { getDaffProductEntitiesSelectors } from '@daffodil/product/state';\nimport {\n DaffCompositeProductItemOption,\n DaffCompositeProductItem,\n DaffCompositeProduct,\n} from '@daffodil/product-composite';\n\nimport { daffCompositeProductAppliedOptionsEntitiesAdapter } from '../../reducers/composite-product-entities/composite-product-entities-reducer-adapter';\nimport { DaffCompositeProductEntity } from '../../reducers/composite-product-entities/composite-product-entity';\nimport {\n DaffCompositeProductReducersState,\n DaffCompositeProductStateRootSlice,\n} from '../../reducers/composite-product-reducers-state.interface';\nimport { getDaffCompositeProductFeatureSelector } from '../feature.selector';\n\n/**\n * An interface for selectors related to the composite product applied options.\n */\nexport interface DaffCompositeProductEntitiesMemoizedSelectors<T extends DaffProduct = DaffProduct> {\n /**\n * The ngrx entities state for composite product applied options.\n */\n selectCompositeProductAppliedOptionsEntitiesState: MemoizedSelector<DaffCompositeProductStateRootSlice<T>, EntityState<DaffCompositeProductEntity>>;\n /**\n * A selector for all composite product ids in state.\n */\n selectCompositeProductIds: MemoizedSelector<DaffCompositeProductStateRootSlice<T>, EntityState<DaffCompositeProductEntity>['ids']>;\n /**\n * The ngrx entities for the composite product appllied options.\n */\n selectCompositeProductAppliedOptionsEntities: MemoizedSelector<DaffCompositeProductStateRootSlice<T>, EntityState<DaffCompositeProductEntity>['entities']>;\n /**\n * The total number of composite products in state.\n */\n selectCompositeProductTotal: MemoizedSelector<DaffCompositeProductStateRootSlice<T>, number>;\n /**\n * Selects the applied options for a composite product.\n *\n * @param id the id of the composite product.\n */\n selectCompositeProductAppliedOptions: (id: T['id']) => MemoizedSelector<DaffCompositeProductStateRootSlice<T>, Dictionary<DaffCompositeProductItemOption>>;\n /**\n * Selects whether the particular item of a composite product is required in order for the product to be valid, i.e. addable to the cart.\n *\n * @param id the id of the composite product.\n * @param item_id the id of the composite product item.\n */\n selectIsCompositeProductItemRequired: (id: T['id'], item_id: DaffCompositeProductItem['id']) => MemoizedSelector<DaffCompositeProductStateRootSlice<T>, boolean>;\n}\n\nconst createCompositeProductAppliedOptionsEntitiesSelectors = <T extends DaffProduct>(): DaffCompositeProductEntitiesMemoizedSelectors<T> => {\n const {\n selectCompositeProductState,\n } = getDaffCompositeProductFeatureSelector();\n const {\n selectProduct,\n } = getDaffProductEntitiesSelectors<T>();\n const adapterSelectors = daffCompositeProductAppliedOptionsEntitiesAdapter().getSelectors();\n\n const selectCompositeProductAppliedOptionsEntitiesState = createSelector(\n selectCompositeProductState,\n (state: DaffCompositeProductReducersState) => state.compositeProductOptions,\n );\n\n const selectCompositeProductIds = createSelector(\n selectCompositeProductAppliedOptionsEntitiesState,\n adapterSelectors.selectIds,\n );\n\n const selectCompositeProductAppliedOptionsEntities = createSelector(\n selectCompositeProductAppliedOptionsEntitiesState,\n adapterSelectors.selectEntities,\n );\n\n const selectCompositeProductTotal = createSelector(\n selectCompositeProductAppliedOptionsEntitiesState,\n adapterSelectors.selectTotal,\n );\n\n const selectCompositeProductAppliedOptions = defaultMemoize((id: T['id']) => createSelector(\n selectProduct(id),\n selectCompositeProductAppliedOptionsEntitiesState,\n (product: T, appliedOptions) => {\n if(product.type !== DaffProductTypeEnum.Composite) {\n return undefined;\n }\n\n return (<DaffCompositeProduct><any>product).items.reduce((acc, item) => ({\n ...acc,\n [item.id]: appliedOptions.entities[product.id].items[item.id].value ? {\n ...item.options.find(option => option.id === appliedOptions.entities[product.id].items[item.id].value),\n quantity: appliedOptions.entities[product.id].items[item.id].qty,\n } : null,\n }), {});\n },\n )).memoized;\n\n const selectIsCompositeProductItemRequired = defaultMemoize((id: T['id'], item_id: DaffCompositeProductItem['id']) => createSelector(\n selectProduct(id),\n (product: T) => {\n if(product.type !== DaffProductTypeEnum.Composite) {\n return undefined;\n }\n\n const productItem = (<DaffCompositeProduct><any>product).items.find(item => item.id === item_id);\n\n return productItem ? productItem.required : null;\n },\n )).memoized;\n\n\n return {\n selectCompositeProductAppliedOptionsEntitiesState,\n selectCompositeProductIds,\n selectCompositeProductAppliedOptionsEntities,\n selectCompositeProductTotal,\n selectCompositeProductAppliedOptions,\n selectIsCompositeProductItemRequired,\n };\n};\n\n/**\n * A function that returns all selectors related to composite product applied option entities.\n * Returns {@link DaffCompositeProductEntitiesMemoizedSelectors}.\n */\nexport const getDaffCompositeProductEntitiesSelectors = (() => {\n let cache;\n return <T extends DaffProduct>(): DaffCompositeProductEntitiesMemoizedSelectors<T> => cache = cache\n ? cache\n : createCompositeProductAppliedOptionsEntitiesSelectors<T>();\n})();\n","import {\n Dictionary,\n EntityState,\n} from '@ngrx/entity';\nimport {\n createSelector,\n MemoizedSelector,\n defaultMemoize,\n} from '@ngrx/store';\n\nimport {\n daffAdd,\n daffDivide,\n daffMultiply,\n daffSubtract,\n} from '@daffodil/core';\nimport {\n DaffProduct,\n DaffProductTypeEnum,\n DaffProductPrices,\n DaffPriceRange,\n} from '@daffodil/product';\nimport { getDaffProductEntitiesSelectors } from '@daffodil/product/state';\nimport {\n DaffCompositeProduct,\n DaffCompositeConfigurationItem,\n DaffCompositeProductItem,\n DaffCompositeProductItemOption,\n} from '@daffodil/product-composite';\n\nimport { DaffCompositeProductStateRootSlice } from '../../reducers/composite-product-reducers-state.interface';\nimport { DaffCompositeProductEntity } from '../../reducers/public_api';\nimport { getDaffCompositeProductEntitiesSelectors } from '../composite-product-entities/composite-product-entities.selectors';\n\n/**\n * An interface describing selectors unique to the composite product, such as pricing and discounts.\n */\nexport interface DaffCompositeProductMemoizedSelectors<T extends DaffProduct = DaffProduct> {\n /**\n * Get a DaffPriceRange for a composite product based on the configuration provided excluding unselected, optional item prices.\n */\n selectCompositeProductRequiredItemPricesForConfiguration: ( id: DaffCompositeProduct['id'], configuration?: Dictionary<DaffCompositeConfigurationItem> ) => MemoizedSelector<DaffCompositeProductStateRootSlice<T>, DaffPriceRange>;\n /**\n * Get the broadest possible DaffPriceRange for a composite product based on the configuration provided including optional item prices.\n */\n selectCompositeProductOptionalItemPricesForConfiguration: ( id: DaffCompositeProduct['id'], configuration?: Dictionary<DaffCompositeConfigurationItem> ) => MemoizedSelector<DaffCompositeProductStateRootSlice<T>, DaffPriceRange>;\n /**\n * Get the DaffPriceRange for a composite product based on the current configuration of selected item options in redux state and\n * excluding unselected, optional item prices.\n */\n selectCompositeProductPricesAsCurrentlyConfigured: ( id: DaffCompositeProduct['id'] ) => MemoizedSelector<DaffCompositeProductStateRootSlice<T>, DaffPriceRange>;\n /**\n * Get the discount amount for a composite product. This value will be undefined if all required options are not chosen.\n */\n selectCompositeProductDiscountAmount: ( id: DaffCompositeProduct['id'] ) => MemoizedSelector<DaffCompositeProductStateRootSlice<T>, number>;\n /**\n * Get the discount percent for a composite product. This value will be undefined if all required options are not chosen.\n * Note: this percent is computed client-side and should be treated as an estimate rather than an exact value.\n */\n selectCompositeProductDiscountPercent: ( id: DaffCompositeProduct['id'] ) => MemoizedSelector<DaffCompositeProductStateRootSlice<T>, number>;\n}\n\nconst createCompositeProductSelectors = <T extends DaffProduct>(): DaffCompositeProductMemoizedSelectors<T> => {\n\n const {\n selectProduct,\n } = getDaffProductEntitiesSelectors<T>();\n\n const {\n selectCompositeProductAppliedOptionsEntities,\n } = getDaffCompositeProductEntitiesSelectors();\n\n const selectCompositeProductRequiredItemPricesForConfiguration = defaultMemoize((id: DaffCompositeProduct['id'], configuration?: Dictionary<DaffCompositeConfigurationItem>) => createSelector(\n selectProduct(id),\n (product: T) => {\n if(product.type !== DaffProductTypeEnum.Composite) {\n return undefined;\n }\n\n const appliedOptions = configuration ? getAppliedOptionsForConfiguration(<DaffCompositeProduct><any>product, configuration) : {};\n return {\n minPrice: getMinPricesForConfiguration(<DaffCompositeProduct><any>product, appliedOptions),\n maxPrice: getMaxPricesForConfiguration(<DaffCompositeProduct><any>product, appliedOptions),\n };\n },\n )).memoized;\n\n const selectCompositeProductOptionalItemPricesForConfiguration = defaultMemoize((id: DaffCompositeProduct['id'], configuration?: Dictionary<DaffCompositeConfigurationItem>) => createSelector(\n selectProduct(id),\n (product: T) => {\n if(product.type !== DaffProductTypeEnum.Composite) {\n return undefined;\n }\n\n const appliedOptions = configuration ? getAppliedOptionsForConfiguration(<DaffCompositeProduct><any>product, configuration) : {};\n return {\n minPrice: getMinPricesForConfiguration(<DaffCompositeProduct><any>product, appliedOptions),\n maxPrice: getMaxPricesForConfigurationIncludingOptionalItems(<DaffCompositeProduct><any>product, appliedOptions),\n };\n },\n )).memoized;\n\n const selectCompositeProductPricesAsCurrentlyConfigured = defaultMemoize((id: T['id']) => createSelector<DaffCompositeProductStateRootSlice<T>, [T, EntityState<DaffCompositeProductEntity>['entities']], DaffPriceRange>(\n selectProduct(id),\n selectCompositeProductAppliedOptionsEntities,\n (product: T, appliedOptionsEntities) =>\n selectCompositeProductRequiredItemPricesForConfiguration(id, appliedOptionsEntities[id]?.items || null).projector(product),\n )).memoized;\n\n const selectCompositeProductDiscountAmount = defaultMemoize((id: DaffCompositeProduct['id']) => createSelector<DaffCompositeProductStateRootSlice<T>, [T, EntityState<DaffCompositeProductEntity>['entities']], number>(\n selectProduct(id),\n selectCompositeProductAppliedOptionsEntities,\n (product: T, appliedOptionsEntities) => {\n if(product.type !== DaffProductTypeEnum.Composite) {\n return undefined;\n }\n const appliedConfigurationItem = appliedOptionsEntities[product.id].items;\n if((<DaffCompositeProduct><any>product).items.filter(item => item.required && appliedConfigurationItem[item.id].value === null).length > 0) {\n return undefined;\n }\n const appliedOptions = getAppliedOptionsForConfiguration((<DaffCompositeProduct><any>product), appliedConfigurationItem);\n\n return (<DaffCompositeProduct><any>product).items.reduce((acc, item) =>\n appliedOptions[item.id]?.discount?.amount ? daffAdd(acc, daffMultiply(appliedOptions[item.id].discount.amount, appliedOptions[item.id].quantity)) : acc,\n product.discount.amount);\n },\n )).memoized;\n\n const selectCompositeProductDiscountPercent = defaultMemoize((id: DaffCompositeProduct['id']) => createSelector<DaffCompositeProductStateRootSlice<T>, [T, EntityState<DaffCompositeProductEntity>['entities']], number>(\n selectProduct(id),\n selectCompositeProductAppliedOptionsEntities,\n (product: T, appliedOptionsEntities) => {\n if(product.type !== DaffProductTypeEnum.Composite) {\n return undefined;\n }\n const appliedOptions = appliedOptionsEntities[product.id].items;\n if((<DaffCompositeProduct><any>product).items.filter(item => item.required && appliedOptions[item.id].value === null).length > 0) {\n return undefined;\n }\n\n const prices = getMinPricesForConfiguration(\n (<DaffCompositeProduct><any>product),\n getAppliedOptionsForConfiguration((<DaffCompositeProduct><any>product), appliedOptions),\n );\n\n return daffMultiply(\n daffDivide(\n daffSubtract(prices.originalPrice, prices.discountedPrice),\n prices.originalPrice,\n ),\n 100,\n );\n },\n )).memoized;\n\n return {\n selectCompositeProductRequiredItemPricesForConfiguration,\n selectCompositeProductOptionalItemPricesForConfiguration,\n selectCompositeProductPricesAsCurrentlyConfigured,\n selectCompositeProductDiscountAmount,\n selectCompositeProductDiscountPercent,\n };\n};\n\n/**\n * A function that returns all selectors related to the composite product feature.\n *\n * Returns {@link DaffCompositeProductMemoizedSelectors}.\n */\nexport const getDaffCompositeProductPriceSelectors = (() => {\n let cache;\n return <T extends DaffProduct = DaffProduct>(): DaffCompositeProductMemoizedSelectors<T> => cache = cache\n ? cache\n : createCompositeProductSelectors<T>();\n})();\n\n/**\n * The minimum price of an item is zero if the item is optional.\n *\n * @param item DaffCompositeProductItem\n */\nfunction getMinimumRequiredCompositeItemPrice(item: DaffCompositeProductItem, qty: number): number {\n return item.required ? daffMultiply(Math.min(...item.options.map(option => option.price)), qty) : 0;\n}\n\n/**\n * The maximum price for an item is zero if the item is optional.\n *\n * @param item DaffCompositeProductItem\n */\nfunction getMaximumRequiredCompositeItemPrice(item: DaffCompositeProductItem, qty: number): number {\n return item.required ? daffMultiply(Math.max(...item.options.map(option => option.price)), qty) : 0;\n}\n\n/**\n * The minimum discounted price of an item is zero if the item is optional.\n *\n * @param item DaffCompositeProductItem\n */\nfunction getMinimumRequiredCompositeItemDiscountedPrice(item: DaffCompositeProductItem, qty: number): number {\n return item.required ? daffMultiply(Math.min(...item.options.map(getDiscountedPrice)), qty) : 0;\n}\n/**\n * The maximum discounted price of an item is zero if the item is optional.\n *\n * @param item DaffCompositeProductItem\n */\nfunction getMaximumRequiredCompositeItemDiscountedPrice(item: DaffCompositeProductItem, qty: number): number {\n return item.required ? daffMultiply(Math.max(...item.options.map(getDiscountedPrice)), qty) : 0;\n}\n\n/**\n * Gets the minimum prices of a composite product for the configuration provided excluding unselected, optional item prices.\n *\n * @param product a DaffCompositeProduct\n * @param appliedOptions a Dictionary<DaffCompositeProductItemOption> that determines the current configuration of the composite product.\n */\nfunction getMinPricesForConfiguration(product: DaffCompositeProduct, appliedOptions: Dictionary<DaffCompositeProductItemOption>): DaffProductPrices {\n return {\n discountedPrice: product.items.reduce((acc, item) => daffAdd(\n acc,\n appliedOptionHasId(appliedOptions[item.id]) ?\n daffMultiply(getDiscountedPrice(appliedOptions[item.id]), appliedOptions[item.id].quantity) :\n getMinimumRequiredCompositeItemDiscountedPrice(item, getOptionQty(appliedOptions[item.id])),\n ), getDiscountedPrice(product)),\n discount: { amount: null, percent: null },\n originalPrice: product.items.reduce((acc, item) => daffAdd(\n acc,\n appliedOptionHasId(appliedOptions[item.id]) ?\n daffMultiply(appliedOptions[item.id].price, appliedOptions[item.id].quantity) :\n getMinimumRequiredCompositeItemPrice(item, getOptionQty(appliedOptions[item.id])),\n ), product.price),\n };\n}\n\n/**\n * Gets the maximum prices of a composite product for the configuration provided excluding unselected, optional item prices.\n *\n * @param product a DaffCompositeProduct\n * @param appliedOptions a Dictionary<DaffCompositeProductItemOption> that determines the current configuration of the composite product.\n */\nfunction getMaxPricesForConfiguration(product: DaffCompositeProduct, appliedOptions: Dictionary<DaffCompositeProductItemOption>): DaffProductPrices {\n return {\n discountedPrice: product.items.reduce((acc, item) => daffAdd(\n acc,\n appliedOptionHasId(appliedOptions[item.id]) ?\n daffMultiply(getDiscountedPrice(appliedOptions[item.id]), appliedOptions[item.id].quantity) :\n getMaximumRequiredCompositeItemDiscountedPrice(item, getOptionQty(appliedOptions[item.id])),\n ), getDiscountedPrice(product)),\n discount: { amount: null, percent: null },\n originalPrice: product.items.reduce((acc, item) => daffAdd(\n acc,\n appliedOptionHasId(appliedOptions[item.id]) ?\n daffMultiply(appliedOptions[item.id].price, appliedOptions[item.id].quantity) :\n getMaximumRequiredCompositeItemPrice(item, getOptionQty(appliedOptions[item.id])),\n ), product.price),\n };\n}\n\nfunction getDiscountedPrice(product: DaffProduct): number {\n return product.discount ? daffSubtract(product.price, product.discount.amount) : product.price;\n}\n\n/**\n * Gets the maximum prices of a composite product including optional item prices.\n *\n * @param product a DaffCompositeProduct\n */\nfunction getMaxPricesForConfigurationIncludingOptionalItems(product: DaffCompositeProduct, appliedOptions: Dictionary<DaffCompositeProductItemOption>): DaffProductPrices {\n return {\n discountedPrice: product.items.reduce((acc, item) => daffAdd(\n acc,\n appliedOptionHasId(appliedOptions[item.id]) ?\n daffMultiply(getDiscountedPrice(appliedOptions[item.id]), appliedOptions[item.id].quantity) :\n appliedOptionHasQty(appliedOptions[item.id]) ?\n daffMultiply(Math.max(...item.options.map(getDiscountedPrice)), appliedOptions[item.id].quantity) :\n Math.max(...item.options.map(getDiscountedPrice)),\n ), getDiscountedPrice(product)),\n discount: { amount: null, percent: null },\n originalPrice: product.items.reduce((acc, item) => daffAdd(\n acc,\n appliedOptionHasId(appliedOptions[item.id]) ?\n daffMultiply(appliedOptions[item.id].price, appliedOptions[item.id].quantity) :\n appliedOptionHasQty(appliedOptions[item.id]) ?\n daffMultiply(Math.max(...item.options.map(option => option.price)), appliedOptions[item.id].quantity) :\n Math.max(...item.options.map(option => option.price)),\n ), product.price),\n };\n}\n\n/**\n * Takes a product and a set of option configurations and convert it into a dictionary of the full option objects.\n *\n * @param product a DaffCompositeProduct\n * @param configuration a Dictionary<DaffCompositeConfigurationItem> used to build the appliedOptions object.\n */\nfunction getAppliedOptionsForConfiguration(product: DaffCompositeProduct, configuration: Dictionary<DaffCompositeConfigurationItem>): Dictionary<DaffCompositeProductItemOption> {\n return product.items.reduce((acc, item) => ({\n ...acc,\n [item.id]: configuration[item.id] ? {\n ...item.options.find(option => option.id === configuration[item.id].value),\n quantity: (configuration[item.id].qty === null || configuration[item.id].qty === undefined) ? 1 : configuration[item.id].qty,\n } : null,\n }), {});\n}\n\nfunction appliedOptionHasId(appliedOption: DaffCompositeProductItemOption): boolean {\n return !!appliedOption?.id;\n}\n\nfunction getOptionQty(appliedOption: DaffCompositeProductItemOption): number {\n return appliedOptionHasQty(appliedOption) ? appliedOption.quantity : 1;\n}\n\nfunction appliedOptionHasQty(appliedOption: DaffCompositeProductItemOption): boolean {\n return appliedOption?.quantity !== null && appliedOption?.quantity !== undefined;\n}\n","import { DaffProduct } from '@daffodil/product';\n\nimport {\n DaffCompositeProductMemoizedSelectors,\n getDaffCompositeProductPriceSelectors,\n} from './composite-product/composite-product.selectors';\nimport {\n DaffCompositeProductEntitiesMemoizedSelectors,\n getDaffCompositeProductEntitiesSelectors,\n} from './composite-product-entities/composite-product-entities.selectors';\n\n/**\n * An interface for all selectors in the composite product feature area.\n */\nexport interface DaffCompositeProductAllSelectors<T extends DaffProduct = DaffProduct> extends\n DaffCompositeProductEntitiesMemoizedSelectors<T>,\n DaffCompositeProductMemoizedSelectors<T> { }\n\n/**\n * A function that returns all selectors in the composite product feature area.\n * Returns {@link DaffCompositeProductAllSelectors}.\n */\nexport const getDaffCompositeProductSelectors = <T extends DaffProduct>(): DaffCompositeProductAllSelectors<T> => ({\n ...getDaffCompositeProductEntitiesSelectors<T>(),\n ...getDaffCompositeProductPriceSelectors<T>(),\n});\n","import { Injectable } from '@angular/core';\nimport { Dictionary } from '@ngrx/entity';\nimport {\n Store,\n select,\n Action,\n} from '@ngrx/store';\nimport { Observable } from 'rxjs';\n\nimport {\n DaffProduct,\n DaffPriceRange,\n productPriceRangeHasDiscount,\n productPriceRangeHasPriceRange,\n} from '@daffodil/product';\nimport {\n DaffCompositeConfigurationItem,\n DaffCompositeProductItemOption,\n DaffCompositeProductItem,\n} from '@daffodil/product-composite';\n\nimport { DaffCompositeProductFacadeInterface } from './composite-product-facade.interface';\nimport { DaffCompositeProductStateRootSlice } from '../../reducers/composite-product-reducers-state.interface';\nimport { getDaffCompositeProductSelectors } from '../../selectors/public_api';\n\n/**\n * A facade for interacting with the composite product state.\n * Exposes many parts of the state for easy access and allows dispatching of actions.\n *\n * @inheritdoc\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class DaffCompositeProductFacade<T extends DaffProduct = DaffProduct> implements DaffCompositeProductFacadeInterface {\n\n constructor(private store: Store<DaffCompositeProductStateRootSlice<T>>) {}\n\n compositeProductSelectors = getDaffCompositeProductSelectors<T>();\n\n hasDiscount = productPriceRangeHasDiscount;\n\n hasPriceRange = productPriceRangeHasPriceRange;\n\n getRequiredItemPricesForConfiguration(id: T['id'], configuration?: Dictionary<DaffCompositeConfigurationItem>): Observable<DaffPriceRange> {\n\t return this.store.pipe(select(this.compositeProductSelectors.selectCompositeProductRequiredItemPricesForConfiguration(id, configuration)));\n }\n\n getOptionalItemPricesForConfiguration(id: T['id'], configuration?: Dictionary<DaffCompositeConfigurationItem>): Observable<DaffPriceRange> {\n\t return this.store.pipe(select(this.compositeProductSelectors.selectCompositeProductOptionalItemPricesForConfiguration(id, configuration)));\n }\n\n getPricesAsCurrentlyConfigured(id: T['id']): Observable<DaffPriceRange> {\n\t return this.store.pipe(select(this.compositeProductSelectors.selectCompositeProductPricesAsCurrentlyConfigured(id)));\n }\n\n getAppliedOptions(id: T['id']): Observable<Dictionary<DaffCompositeProductItemOption>> {\n\t return this.store.pipe(select(this.compositeProductSelectors.selectCompositeProductAppliedOptions(id)));\n }\n\n getDiscountAmount(id: T['id']): Observable<number> {\n\t return this.store.pipe(select(this.compositeProductSelectors.selectCompositeProductDiscountAmount(id)));\n }\n\n getDiscountPercent(id: T['id']): Observable<number> {\n\t return this.store.pipe(select(this.compositeProductSelectors.selectCompositeProductDiscountPercent(id)));\n }\n\n isItemRequired(id: T['id'], item_id: DaffCompositeProductItem['id']) {\n\t return this.store.pipe(select(this.compositeProductSelectors.selectIsCompositeProductItemRequired(id, item_id)));\n }\n\n dispatch(action: Action) {\n\t this.store.dispatch(action);\n }\n}\n","import { EntityState } from '@ngrx/entity';\n\nimport { DaffProduct } from '@daffodil/product';\nimport {\n DaffProductPageActions,\n DaffProductPageActionTypes,\n DaffProductGridActionTypes,\n DaffProductGridActions,\n DaffBestSellersActions,\n DaffProductActions,\n DaffBestSellersActionTypes,\n DaffProductActionTypes,\n} from '@daffodil/product/state';\nimport { DaffCompositeProduct } from '@daffodil/product-composite';\n\nimport { daffCompositeProductAppliedOptionsEntitiesAdapter } from './composite-product-entities-reducer-adapter';\nimport { DaffCompositeProductEntity } from './composite-product-entity';\nimport {\n DaffCompositeProductActions,\n DaffCompositeProductActionTypes,\n} from '../../actions/public_api';\n\n/**\n * Reducer function that catches actions and changes/overwrites composite product entities state.\n *\n * @param state current State of the redux store\n * @param action ProductGrid, BestSellers, Product, or Composite Product actions\n * @returns Product entities state\n */\nexport function daffCompositeProductEntitiesReducer<T extends DaffProduct, V extends DaffCompositeProduct>(\n state = daffCompositeProductAppliedOptionsEntitiesAdapter().getInitialState(),\n action: DaffProductGridActions<T> | DaffBestSellersActions<T> | DaffProductActions<T> | DaffProductPageActions<T> | DaffCompositeProductActions<V>): EntityState<DaffCompositeProductEntity> {\n const adapter = daffCompositeProductAppliedOptionsEntitiesAdapter();\n switch (action.type) {\n case DaffProductGridActionTypes.ProductGridLoadSuccessAction:\n case DaffBestSellersActionTypes.BestSellersLoadSuccessAction:\n return adapter.upsertProducts(state, ...(<V[]><unknown>action.payload));\n\n case DaffProductActionTypes.ProductLoadSuccessAction:\n case DaffProductPageActionTypes.ProductPageLoadSuccessAction:\n return adapter.upsertProducts(state, ...(<V[]><unknown>action.payload.products));\n\n case DaffCompositeProductActionTypes.CompositeProductApplyOptionAction:\n return adapter.applyOption(state, action.id, action.itemId, action.optionId, action.qty);\n\n default:\n return state;\n }\n}\n","import { ActionReducerMap } from '@ngrx/store';\n\nimport { daffCompositeProductEntitiesReducer } from './composite-product-entities/composite-product-entities.reducer';\nimport { DaffCompositeProductReducersState } from './composite-product-reducers-state.interface';\n\n/**\n * Returns state values from all composite product related reducers.\n */\nexport const daffCompositeProductReducers: ActionReducerMap<DaffCompositeProductReducersState> = {\n compositeProductOptions: daffCompositeProductEntitiesReducer,\n};\n","import {\n InjectionToken,\n Provider,\n} from '@angular/core';\nimport { ActionReducer } from '@ngrx/store';\n\nimport { DaffCompositeProductReducersState } from '../composite-product-reducers-state.interface';\n\n/**\n * A token to hold the injectable extra reducers.\n *\n * Prefer using {@link daffProductCompositeProvideExtraReducers}.\n */\nexport const DAFF_PRODUCT_COMPOSITE_EXTRA_REDUCERS = new InjectionToken<ActionReducer<DaffCompositeProductReducersState>[]>(\n 'DAFF_PRODUCT_COMPOSITE_EXTRA_REDUCERS',\n { factory: () => []},\n);\n\n/**\n * Provides additional reducers that run after the standard Daffodil cart reducers.\n *\n * ```ts\n * providers: [\n * ...daffProductCompositeProvideExtraReducers(\n * myReducer1,\n * myReducer2\n * )\n * ]\n * ```\n */\nexport function daffProductCompositeProvideExtraReducers(\n ...reducers: ActionReducer<Partial<DaffCompositeProductReducersState>>[]\n): Provider[] {\n return reducers.map(reducer => ({\n provide: DAFF_PRODUCT_COMPOSITE_EXTRA_REDUCERS,\n useValue: reducer,\n multi: true,\n }));\n}\n","import { DaffProductTypeEnum } from '@daffodil/product';\nimport { DaffProductReducersState } from '@daffodil/product/state';\nimport { DaffCompositeProduct } from '@daffodil/product-composite';\n\n/**\n * Maps a list of products, ensuring that the composite products have a list of items.\n * If the incoming items is empty or nully, the items from state are intentionally used instead.\n */\nexport function daffProductCompositeEnsureItems<T extends DaffCompositeProduct = DaffCompositeProduct>(state: DaffProductReducersState<T>, products: T[]): T[] {\n return products.map((product) =>\n product.type === DaffProductTypeEnum.Composite\n ? {\n ...product,\n items: product.items.length > 0\n ? product.items\n : state.products.entities[product.id]?.items ?? [],\n }\n : product,\n );\n}\n","import { ActionReducer } from '@ngrx/store';\n\nimport { DaffProductTypeEnum } from '@daffodil/product';\nimport {\n DaffProductActionTypes,\n DaffProductActions,\n DaffProductLoadSuccess,\n DaffProductPageActionTypes,\n DaffProductPageActions,\n DaffProductPageLoadSuccess,\n DaffProductReducersState,\n} from '@daffodil/product/state';\nimport { DaffCompositeProduct } from '@daffodil/product-composite';\n\nimport { daffProductCompositeEnsureItems } from '../helpers/public_api';\n\ntype Reducer = ActionReducer<DaffProductReducersState<DaffCompositeProduct>, DaffProductActions<DaffCompositeProduct> | DaffProductPageActions<DaffCompositeProduct>>;\n\nexport function daffProductCompositeEnsureItemsMetaReducer(reducer: Reducer): Reducer {\n return (state, action) => {\n switch (action.type) {\n case DaffProductPageActionTypes.ProductPageLoadSuccessAction:\n return reducer(state, new DaffProductPageLoadSuccess({\n ...action.payload,\n products: daffProductCompositeEnsureItems(state, action.payload.products),\n }));\n\n case DaffProductActionTypes.ProductLoadSuccessAction:\n return reducer(state, new DaffProductLoadSuccess({\n ...action.payload,\n products: daffProductCompositeEnsureItems(state, action.payload.products),\n }));\n\n default:\n return reducer(state, action);\n }\n };\n}\n","import {\n inject,\n InjectionToken,\n} from '@angular/core';\nimport {\n ActionReducer,\n combineReducers,\n} from '@ngrx/store';\n\nimport { daffComposeReducers } from '@daffodil/core/state';\n\nimport { DAFF_PRODUCT_COMPOSITE_EXTRA_REDUCERS } from './extra.token';\nimport { daffCompositeProductReducers } from '../composite-product-reducers';\nimport { DaffCompositeProductReducersState } from '../composite-product-reducers-state.interface';\n\n/**\n * An internal token to hold the Daffodil composite product reducers.\n * Includes the extra and standard reducers.\n *\n * @docs-private\n */\nexport const DAFF_PRODUCT_COMPOSITE_REDUCERS = new InjectionToken<ActionReducer<DaffCompositeProductReducersState>>(\n 'DAFF_PRODUCT_COMPOSITE_REDUCERS',\n {\n factory: () => daffComposeReducers([\n combineReducers(daffCompositeProductReducers),\n ...inject(DAFF_PRODUCT_COMPOSITE_EXTRA_REDUCERS),\n ]),\n },\n);\n","import { NgModule } from '@angular/core';\nimport { StoreModule } from '@ngrx/store';\n\nimport { daffProductProvideMetaReducers } from '@daffodil/product/state';\n\nimport { daffProductCompositeEnsureItemsMetaReducer } from './reducers/ensure-items.meta-reducer';\nimport { DAFF_PRODUCT_COMPOSITE_REDUCERS } from './reducers/injection-tokens/reducers.token';\nimport { DAFF_COMPOSITE_PRODUCT_STORE_FEATURE_KEY } from './reducers/public_api';\n\n/**\n * A module that provides the default reducers and effects for composite product redux state.\n */\n@NgModule({\n imports: [\n StoreModule.forFeature(DAFF_COMPOSITE_PRODUCT_STORE_FEATURE_KEY, DAFF_PRODUCT_COMPOSITE_REDUCERS),\n ],\n providers: [\n ...daffProductProvideMetaReducers(daffProductCompositeEnsureItemsMetaReducer),\n ],\n})\nexport class DaffCompositeProductStateModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -24,15 +24,15 @@ class DaffCompositeProductItemOptionFactory extends DaffModelFactory {
24
24
  constructor(imageFactory) {
25
25
  super(MockCompositeProductItemOption, imageFactory);
26
26
  }
27
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: DaffCompositeProductItemOptionFactory, deps: [{ token: i1.DaffProductImageFactory }], target: i0.ɵɵFactoryTarget.Injectable }); }
28
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: DaffCompositeProductItemOptionFactory, providedIn: 'root' }); }
27
29
  }
28
- /** @nocollapse */ DaffCompositeProductItemOptionFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCompositeProductItemOptionFactory, deps: [{ token: i1.DaffProductImageFactory }], target: i0.ɵɵFactoryTarget.Injectable });
29
- /** @nocollapse */ DaffCompositeProductItemOptionFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCompositeProductItemOptionFactory, providedIn: 'root' });
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCompositeProductItemOptionFactory, decorators: [{
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: DaffCompositeProductItemOptionFactory, decorators: [{
31
31
  type: Injectable,
32
32
  args: [{
33
33
  providedIn: 'root',
34
34
  }]
35
- }], ctorParameters: function () { return [{ type: i1.DaffProductImageFactory }]; } });
35
+ }], ctorParameters: () => [{ type: i1.DaffProductImageFactory }] });
36
36
 
37
37
  /**
38
38
  * Mocked DaffCompositeProductItem object.
@@ -62,15 +62,15 @@ class DaffCompositeProductItemFactory extends DaffModelFactory {
62
62
  constructor(optionFactory) {
63
63
  super(MockCompositeProductItem, optionFactory);
64
64
  }
65
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: DaffCompositeProductItemFactory, deps: [{ token: DaffCompositeProductItemOptionFactory }], target: i0.ɵɵFactoryTarget.Injectable }); }
66
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: DaffCompositeProductItemFactory, providedIn: 'root' }); }
65
67
  }
66
- /** @nocollapse */ DaffCompositeProductItemFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCompositeProductItemFactory, deps: [{ token: DaffCompositeProductItemOptionFactory }], target: i0.ɵɵFactoryTarget.Injectable });
67
- /** @nocollapse */ DaffCompositeProductItemFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCompositeProductItemFactory, providedIn: 'root' });
68
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCompositeProductItemFactory, decorators: [{
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: DaffCompositeProductItemFactory, decorators: [{
69
69
  type: Injectable,
70
70
  args: [{
71
71
  providedIn: 'root',
72
72
  }]
73
- }], ctorParameters: function () { return [{ type: DaffCompositeProductItemOptionFactory }]; } });
73
+ }], ctorParameters: () => [{ type: DaffCompositeProductItemOptionFactory }] });
74
74
 
75
75
  /**
76
76
  * Mocked DaffCompositeProduct object.
@@ -90,15 +90,15 @@ class DaffCompositeProductFactory extends DaffModelFactory {
90
90
  constructor(itemFactory, imageFactory) {
91
91
  super(MockCompositeProduct, itemFactory, imageFactory);
92
92
  }
93
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: DaffCompositeProductFactory, deps: [{ token: DaffCompositeProductItemFactory }, { token: i1.DaffProductImageFactory }], target: i0.ɵɵFactoryTarget.Injectable }); }
94
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: DaffCompositeProductFactory, providedIn: 'root' }); }
93
95
  }
94
- /** @nocollapse */ DaffCompositeProductFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCompositeProductFactory, deps: [{ token: DaffCompositeProductItemFactory }, { token: i1.DaffProductImageFactory }], target: i0.ɵɵFactoryTarget.Injectable });
95
- /** @nocollapse */ DaffCompositeProductFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCompositeProductFactory, providedIn: 'root' });
96
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCompositeProductFactory, decorators: [{
96
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: DaffCompositeProductFactory, decorators: [{
97
97
  type: Injectable,
98
98
  args: [{
99
99
  providedIn: 'root',
100
100
  }]
101
- }], ctorParameters: function () { return [{ type: DaffCompositeProductItemFactory }, { type: i1.DaffProductImageFactory }]; } });
101
+ }], ctorParameters: () => [{ type: DaffCompositeProductItemFactory }, { type: i1.DaffProductImageFactory }] });
102
102
 
103
103
  /**
104
104
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"daffodil-product-composite-testing.mjs","sources":["../../../libs/product-composite/testing/src/factories/composite-product-item-option.factory.ts","../../../libs/product-composite/testing/src/factories/composite-product-item.factory.ts","../../../libs/product-composite/testing/src/factories/composite-product.factory.ts","../../../libs/product-composite/testing/src/daffodil-product-composite-testing.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { faker } from '@faker-js/faker/locale/en_US';\n\nimport { DaffModelFactory } from '@daffodil/core/testing';\nimport {\n DaffProductImageFactory,\n MockProduct,\n} from '@daffodil/product/testing';\nimport { DaffCompositeProductItemOption } from '@daffodil/product-composite';\n\n/**\n * Mocked DaffCompositeProductItemOption object.\n */\nexport class MockCompositeProductItemOption extends MockProduct implements DaffCompositeProductItemOption {\n quantity = faker.datatype.number({ min: 1, max: 9 });\n is_default = faker.datatype.boolean();\n}\n\n/**\n * Factory for creating DaffCompositeProductItemOptions.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class DaffCompositeProductItemOptionFactory extends DaffModelFactory<DaffCompositeProductItemOption>{\n constructor(\n imageFactory: DaffProductImageFactory,\n ) {\n super(MockCompositeProductItemOption, imageFactory);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { faker } from '@faker-js/faker/locale/en_US';\n\nimport { DaffModelFactory } from '@daffodil/core/testing';\nimport {\n DaffCompositeProductItem,\n DaffCompositeProductItemInputEnum,\n} from '@daffodil/product-composite';\n\nimport { DaffCompositeProductItemOptionFactory } from './composite-product-item-option.factory';\n\n/**\n * Mocked DaffCompositeProductItem object.\n */\nexport class MockCompositeProductItem implements DaffCompositeProductItem {\n id = faker.datatype.uuid();\n url = `/${faker.internet.domainWord()}.html`;\n required = faker.datatype.boolean();\n title = faker.commerce.productName();\n input_type = DaffCompositeProductItemInputEnum.select;\n options = [\n this.optionFactory.create({\n is_default: true,\n }),\n this.optionFactory.create({\n is_default: false,\n }),\n ];\n\n constructor(\n protected optionFactory: DaffCompositeProductItemOptionFactory,\n ) {}\n}\n\n/**\n * Factory for creating DaffCompositeProductItems.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class DaffCompositeProductItemFactory extends DaffModelFactory<DaffCompositeProductItem>{\n constructor(\n optionFactory: DaffCompositeProductItemOptionFactory,\n ) {\n super(MockCompositeProductItem, optionFactory);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { faker } from '@faker-js/faker/locale/en_US';\n\nimport { DaffModelFactory } from '@daffodil/core/testing';\nimport { DaffProductTypeEnum } from '@daffodil/product';\nimport {\n DaffProductImageFactory,\n MockProduct,\n} from '@daffodil/product/testing';\nimport { DaffCompositeProduct } from '@daffodil/product-composite';\n\nimport { DaffCompositeProductItemFactory } from './composite-product-item.factory';\n\n/**\n * Mocked DaffCompositeProduct object.\n */\nexport class MockCompositeProduct extends MockProduct implements DaffCompositeProduct {\n type = DaffProductTypeEnum.Composite;\n items = this.itemFactory.createMany(2);\n\n constructor(\n protected itemFactory: DaffCompositeProductItemFactory,\n imageFactory: DaffProductImageFactory,\n ) {\n super(imageFactory);\n }\n}\n\n/**\n * Factory for creating DaffCompositeProducts.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class DaffCompositeProductFactory extends DaffModelFactory<DaffCompositeProduct>{\n constructor(\n itemFactory: DaffCompositeProductItemFactory,\n imageFactory: DaffProductImageFactory,\n ) {\n super(MockCompositeProduct, itemFactory, imageFactory);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.DaffCompositeProductItemOptionFactory","i1.DaffCompositeProductItemFactory","i2"],"mappings":"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"}
1
+ {"version":3,"file":"daffodil-product-composite-testing.mjs","sources":["../../../libs/product-composite/testing/src/factories/composite-product-item-option.factory.ts","../../../libs/product-composite/testing/src/factories/composite-product-item.factory.ts","../../../libs/product-composite/testing/src/factories/composite-product.factory.ts","../../../libs/product-composite/testing/src/daffodil-product-composite-testing.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { faker } from '@faker-js/faker/locale/en_US';\n\nimport { DaffModelFactory } from '@daffodil/core/testing';\nimport {\n DaffProductImageFactory,\n MockProduct,\n} from '@daffodil/product/testing';\nimport { DaffCompositeProductItemOption } from '@daffodil/product-composite';\n\n/**\n * Mocked DaffCompositeProductItemOption object.\n */\nexport class MockCompositeProductItemOption extends MockProduct implements DaffCompositeProductItemOption {\n quantity = faker.datatype.number({ min: 1, max: 9 });\n is_default = faker.datatype.boolean();\n}\n\n/**\n * Factory for creating DaffCompositeProductItemOptions.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class DaffCompositeProductItemOptionFactory extends DaffModelFactory<DaffCompositeProductItemOption>{\n constructor(\n imageFactory: DaffProductImageFactory,\n ) {\n super(MockCompositeProductItemOption, imageFactory);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { faker } from '@faker-js/faker/locale/en_US';\n\nimport { DaffModelFactory } from '@daffodil/core/testing';\nimport {\n DaffCompositeProductItem,\n DaffCompositeProductItemInputEnum,\n} from '@daffodil/product-composite';\n\nimport { DaffCompositeProductItemOptionFactory } from './composite-product-item-option.factory';\n\n/**\n * Mocked DaffCompositeProductItem object.\n */\nexport class MockCompositeProductItem implements DaffCompositeProductItem {\n id = faker.datatype.uuid();\n url = `/${faker.internet.domainWord()}.html`;\n required = faker.datatype.boolean();\n title = faker.commerce.productName();\n input_type = DaffCompositeProductItemInputEnum.select;\n options = [\n this.optionFactory.create({\n is_default: true,\n }),\n this.optionFactory.create({\n is_default: false,\n }),\n ];\n\n constructor(\n protected optionFactory: DaffCompositeProductItemOptionFactory,\n ) {}\n}\n\n/**\n * Factory for creating DaffCompositeProductItems.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class DaffCompositeProductItemFactory extends DaffModelFactory<DaffCompositeProductItem>{\n constructor(\n optionFactory: DaffCompositeProductItemOptionFactory,\n ) {\n super(MockCompositeProductItem, optionFactory);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { faker } from '@faker-js/faker/locale/en_US';\n\nimport { DaffModelFactory } from '@daffodil/core/testing';\nimport { DaffProductTypeEnum } from '@daffodil/product';\nimport {\n DaffProductImageFactory,\n MockProduct,\n} from '@daffodil/product/testing';\nimport { DaffCompositeProduct } from '@daffodil/product-composite';\n\nimport { DaffCompositeProductItemFactory } from './composite-product-item.factory';\n\n/**\n * Mocked DaffCompositeProduct object.\n */\nexport class MockCompositeProduct extends MockProduct implements DaffCompositeProduct {\n type = DaffProductTypeEnum.Composite;\n items = this.itemFactory.createMany(2);\n\n constructor(\n protected itemFactory: DaffCompositeProductItemFactory,\n imageFactory: DaffProductImageFactory,\n ) {\n super(imageFactory);\n }\n}\n\n/**\n * Factory for creating DaffCompositeProducts.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class DaffCompositeProductFactory extends DaffModelFactory<DaffCompositeProduct>{\n constructor(\n itemFactory: DaffCompositeProductItemFactory,\n imageFactory: DaffProductImageFactory,\n ) {\n super(MockCompositeProduct, itemFactory, imageFactory);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.DaffCompositeProductItemOptionFactory","i1.DaffCompositeProductItemFactory","i2"],"mappings":"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"}
@@ -2,4 +2,4 @@ import { DaffCompositeProductItem, DaffCompositeProductItemOption } from './comp
2
2
  /**
3
3
  * Denotes a particular configuration for a composite item.
4
4
  */
5
- export declare type DaffProductCompositeSelectionPayload = Record<DaffCompositeProductItem['id'], DaffCompositeProductItemOption['id'][]>;
5
+ export type DaffProductCompositeSelectionPayload = Record<DaffCompositeProductItem['id'], DaffCompositeProductItemOption['id'][]>;
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@daffodil/product-composite","nx":{"targets":{"build":{"outputs":["{workspaceRoot}/dist/product-composite"]}}},"version":"0.66.1","description":"Interfaces built for daffodil/state","repository":{"type":"git","url":"https://github.com/graycoreio/daffodil"},"author":"Graycore LLC","license":"MIT","bugs":{"url":"https://github.com/graycoreio/daffodil/issues"},"publishConfig":{"directory":"../../dist/product-composite"},"homepage":"https://github.com/graycoreio/daffodil","peerDependencies":{"@angular/common":"^15.0.0","@angular/core":"^15.0.0","@daffodil/core":"0.66.1","@daffodil/product":"0.66.1","@ngrx/effects":"^15.0.0","@ngrx/entity":"^15.0.0","@ngrx/store":"^15.0.0","rxjs":"7.8.1"},"optionalDependencies":{"@apollo/client":"^3.0.0","@daffodil/driver":"0.66.1","@daffodil/product":"0.66.1","angular-in-memory-web-api":"^0.15.0","apollo-angular":"^5.0.2","@faker-js/faker":"^7.6.0"},"module":"fesm2015/daffodil-product-composite.mjs","es2020":"fesm2020/daffodil-product-composite.mjs","esm2020":"esm2020/daffodil-product-composite.mjs","fesm2020":"fesm2020/daffodil-product-composite.mjs","fesm2015":"fesm2015/daffodil-product-composite.mjs","typings":"index.d.ts","exports":{"./package.json":{"default":"./package.json"},".":{"types":"./index.d.ts","esm2020":"./esm2020/daffodil-product-composite.mjs","es2020":"./fesm2020/daffodil-product-composite.mjs","es2015":"./fesm2015/daffodil-product-composite.mjs","node":"./fesm2015/daffodil-product-composite.mjs","default":"./fesm2020/daffodil-product-composite.mjs"},"./driver/in-memory":{"types":"./driver/in-memory/index.d.ts","esm2020":"./esm2020/driver/in-memory/daffodil-product-composite-driver-in-memory.mjs","es2020":"./fesm2020/daffodil-product-composite-driver-in-memory.mjs","es2015":"./fesm2015/daffodil-product-composite-driver-in-memory.mjs","node":"./fesm2015/daffodil-product-composite-driver-in-memory.mjs","default":"./fesm2020/daffodil-product-composite-driver-in-memory.mjs"},"./driver/magento":{"types":"./driver/magento/index.d.ts","esm2020":"./esm2020/driver/magento/daffodil-product-composite-driver-magento.mjs","es2020":"./fesm2020/daffodil-product-composite-driver-magento.mjs","es2015":"./fesm2015/daffodil-product-composite-driver-magento.mjs","node":"./fesm2015/daffodil-product-composite-driver-magento.mjs","default":"./fesm2020/daffodil-product-composite-driver-magento.mjs"},"./driver/magento/testing":{"types":"./driver/magento/testing/index.d.ts","esm2020":"./esm2020/driver/magento/testing/daffodil-product-composite-driver-magento-testing.mjs","es2020":"./fesm2020/daffodil-product-composite-driver-magento-testing.mjs","es2015":"./fesm2015/daffodil-product-composite-driver-magento-testing.mjs","node":"./fesm2015/daffodil-product-composite-driver-magento-testing.mjs","default":"./fesm2020/daffodil-product-composite-driver-magento-testing.mjs"},"./driver/testing":{"types":"./driver/testing/index.d.ts","esm2020":"./esm2020/driver/testing/daffodil-product-composite-driver-testing.mjs","es2020":"./fesm2020/daffodil-product-composite-driver-testing.mjs","es2015":"./fesm2015/daffodil-product-composite-driver-testing.mjs","node":"./fesm2015/daffodil-product-composite-driver-testing.mjs","default":"./fesm2020/daffodil-product-composite-driver-testing.mjs"},"./routing":{"types":"./routing/index.d.ts","esm2020":"./esm2020/routing/daffodil-product-composite-routing.mjs","es2020":"./fesm2020/daffodil-product-composite-routing.mjs","es2015":"./fesm2015/daffodil-product-composite-routing.mjs","node":"./fesm2015/daffodil-product-composite-routing.mjs","default":"./fesm2020/daffodil-product-composite-routing.mjs"},"./state":{"types":"./state/index.d.ts","esm2020":"./esm2020/state/daffodil-product-composite-state.mjs","es2020":"./fesm2020/daffodil-product-composite-state.mjs","es2015":"./fesm2015/daffodil-product-composite-state.mjs","node":"./fesm2015/daffodil-product-composite-state.mjs","default":"./fesm2020/daffodil-product-composite-state.mjs"},"./state/testing":{"types":"./state/testing/index.d.ts","esm2020":"./esm2020/state/testing/daffodil-product-composite-state-testing.mjs","es2020":"./fesm2020/daffodil-product-composite-state-testing.mjs","es2015":"./fesm2015/daffodil-product-composite-state-testing.mjs","node":"./fesm2015/daffodil-product-composite-state-testing.mjs","default":"./fesm2020/daffodil-product-composite-state-testing.mjs"},"./testing":{"types":"./testing/index.d.ts","esm2020":"./esm2020/testing/daffodil-product-composite-testing.mjs","es2020":"./fesm2020/daffodil-product-composite-testing.mjs","es2015":"./fesm2015/daffodil-product-composite-testing.mjs","node":"./fesm2015/daffodil-product-composite-testing.mjs","default":"./fesm2020/daffodil-product-composite-testing.mjs"}},"sideEffects":false,"dependencies":{"tslib":"^2.3.0"}}
1
+ {"name":"@daffodil/product-composite","nx":{"targets":{"build":{"outputs":["{workspaceRoot}/dist/product-composite"]}}},"version":"0.67.0","description":"Interfaces built for daffodil/state","repository":{"type":"git","url":"https://github.com/graycoreio/daffodil"},"author":"Graycore LLC","license":"MIT","bugs":{"url":"https://github.com/graycoreio/daffodil/issues"},"publishConfig":{"directory":"../../dist/product-composite"},"homepage":"https://github.com/graycoreio/daffodil","peerDependencies":{"@angular/common":"^17.0.0","@angular/core":"^17.0.0","@daffodil/core":"0.67.0","@daffodil/product":"0.67.0","@ngrx/effects":"^17.0.0","@ngrx/entity":"^17.0.0","@ngrx/store":"^17.0.0","rxjs":"7.8.1"},"optionalDependencies":{"@apollo/client":"^3.0.0","@daffodil/driver":"0.67.0","@daffodil/product":"0.67.0","angular-in-memory-web-api":"^0.17.0","apollo-angular":"^6.0.0","@faker-js/faker":"^7.6.0"},"module":"fesm2022/daffodil-product-composite.mjs","typings":"index.d.ts","exports":{"./package.json":{"default":"./package.json"},".":{"types":"./index.d.ts","esm2022":"./esm2022/daffodil-product-composite.mjs","esm":"./esm2022/daffodil-product-composite.mjs","default":"./fesm2022/daffodil-product-composite.mjs"},"./routing":{"types":"./routing/index.d.ts","esm2022":"./esm2022/routing/daffodil-product-composite-routing.mjs","esm":"./esm2022/routing/daffodil-product-composite-routing.mjs","default":"./fesm2022/daffodil-product-composite-routing.mjs"},"./state":{"types":"./state/index.d.ts","esm2022":"./esm2022/state/daffodil-product-composite-state.mjs","esm":"./esm2022/state/daffodil-product-composite-state.mjs","default":"./fesm2022/daffodil-product-composite-state.mjs"},"./testing":{"types":"./testing/index.d.ts","esm2022":"./esm2022/testing/daffodil-product-composite-testing.mjs","esm":"./esm2022/testing/daffodil-product-composite-testing.mjs","default":"./fesm2022/daffodil-product-composite-testing.mjs"},"./driver/in-memory":{"types":"./driver/in-memory/index.d.ts","esm2022":"./esm2022/driver/in-memory/daffodil-product-composite-driver-in-memory.mjs","esm":"./esm2022/driver/in-memory/daffodil-product-composite-driver-in-memory.mjs","default":"./fesm2022/daffodil-product-composite-driver-in-memory.mjs"},"./driver/magento":{"types":"./driver/magento/index.d.ts","esm2022":"./esm2022/driver/magento/daffodil-product-composite-driver-magento.mjs","esm":"./esm2022/driver/magento/daffodil-product-composite-driver-magento.mjs","default":"./fesm2022/daffodil-product-composite-driver-magento.mjs"},"./driver/testing":{"types":"./driver/testing/index.d.ts","esm2022":"./esm2022/driver/testing/daffodil-product-composite-driver-testing.mjs","esm":"./esm2022/driver/testing/daffodil-product-composite-driver-testing.mjs","default":"./fesm2022/daffodil-product-composite-driver-testing.mjs"},"./state/testing":{"types":"./state/testing/index.d.ts","esm2022":"./esm2022/state/testing/daffodil-product-composite-state-testing.mjs","esm":"./esm2022/state/testing/daffodil-product-composite-state-testing.mjs","default":"./fesm2022/daffodil-product-composite-state-testing.mjs"},"./driver/magento/testing":{"types":"./driver/magento/testing/index.d.ts","esm2022":"./esm2022/driver/magento/testing/daffodil-product-composite-driver-magento-testing.mjs","esm":"./esm2022/driver/magento/testing/daffodil-product-composite-driver-magento-testing.mjs","default":"./fesm2022/daffodil-product-composite-driver-magento-testing.mjs"}},"sideEffects":false,"dependencies":{"tslib":"^2.3.0"}}
@@ -21,4 +21,4 @@ export declare class DaffCompositeProductApplyOption<T extends DaffCompositeProd
21
21
  readonly type = DaffCompositeProductActionTypes.CompositeProductApplyOptionAction;
22
22
  constructor(id: T['id'], itemId: DaffCompositeProductItem['id'], optionId: DaffCompositeProductItemOption['id'], qty?: number);
23
23
  }
24
- export declare type DaffCompositeProductActions<T extends DaffCompositeProduct = DaffCompositeProduct> = DaffCompositeProductApplyOption<T>;
24
+ export type DaffCompositeProductActions<T extends DaffCompositeProduct = DaffCompositeProduct> = DaffCompositeProductApplyOption<T>;
@@ -1,6 +1,6 @@
1
1
  import { ActionReducer } from '@ngrx/store';
2
2
  import { DaffProductActions, DaffProductPageActions, DaffProductReducersState } from '@daffodil/product/state';
3
3
  import { DaffCompositeProduct } from '@daffodil/product-composite';
4
- declare type Reducer = ActionReducer<DaffProductReducersState<DaffCompositeProduct>, DaffProductActions<DaffCompositeProduct> | DaffProductPageActions<DaffCompositeProduct>>;
4
+ type Reducer = ActionReducer<DaffProductReducersState<DaffCompositeProduct>, DaffProductActions<DaffCompositeProduct> | DaffProductPageActions<DaffCompositeProduct>>;
5
5
  export declare function daffProductCompositeEnsureItemsMetaReducer(reducer: Reducer): Reducer;
6
6
  export {};
@@ -1,41 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import * as i0 from '@angular/core';
3
- import { NgModule } from '@angular/core';
4
- import { DAFF_PRODUCT_TYPE_FACTORIES } from '@daffodil/product/testing';
5
- import { DaffCompositeProductFactory } from '@daffodil/product-composite/testing';
6
-
7
- /**
8
- * Module for providing the composite product factory to the product kind factory.
9
- */
10
- class DaffCompositeProductInMemoryDriverModule {
11
- static forRoot() {
12
- return {
13
- ngModule: DaffCompositeProductInMemoryDriverModule,
14
- providers: [
15
- {
16
- provide: DAFF_PRODUCT_TYPE_FACTORIES,
17
- useExisting: DaffCompositeProductFactory,
18
- multi: true,
19
- },
20
- ],
21
- };
22
- }
23
- }
24
- /** @nocollapse */ DaffCompositeProductInMemoryDriverModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCompositeProductInMemoryDriverModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
25
- /** @nocollapse */ DaffCompositeProductInMemoryDriverModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: DaffCompositeProductInMemoryDriverModule, imports: [CommonModule] });
26
- /** @nocollapse */ DaffCompositeProductInMemoryDriverModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCompositeProductInMemoryDriverModule, imports: [CommonModule] });
27
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DaffCompositeProductInMemoryDriverModule, decorators: [{
28
- type: NgModule,
29
- args: [{
30
- imports: [
31
- CommonModule,
32
- ],
33
- }]
34
- }] });
35
-
36
- /**
37
- * Generated bundle index. Do not edit.
38
- */
39
-
40
- export { DaffCompositeProductInMemoryDriverModule };
41
- //# sourceMappingURL=daffodil-product-composite-driver-in-memory.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"daffodil-product-composite-driver-magento-testing.mjs","sources":["../../../libs/product-composite/driver/magento/testing/src/factories/bundle/bundle-item-option.factory.ts","../../../libs/product-composite/driver/magento/testing/src/factories/bundle/bundle-item.factory.ts","../../../libs/product-composite/driver/magento/testing/src/factories/bundle/bundle.factory.ts","../../../libs/product-composite/driver/magento/testing/src/daffodil-product-composite-driver-magento-testing.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { faker } from '@faker-js/faker/locale/en_US';\n\nimport { DaffModelFactory } from '@daffodil/core/testing';\nimport { MagentoSimpleProduct } from '@daffodil/product/driver/magento';\nimport { MagentoSimpleProductFactory } from '@daffodil/product/driver/magento/testing';\nimport { MagentoBundledProductItemOption } from '@daffodil/product-composite/driver/magento';\n\n\nexport class MockMagentoBundledProductItemOption implements MagentoBundledProductItemOption {\n constructor(\n private simpleFactory: MagentoSimpleProductFactory,\n ) {}\n\n uid = faker.datatype.uuid();\n label = faker.random.word();\n quantity = faker.datatype.number({ min: 1, max: 20 });\n is_default = faker.datatype.boolean();\n position = faker.datatype.number({ min: 1, max: 10 });\n product = this.createProduct();\n\n protected createProduct(): MagentoSimpleProduct {\n return this.simpleFactory.create();\n }\n}\n\n/**\n * A factory for creating stub data for {@link MagentoBundledProduct}s.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class MagentoBundledProductItemOptionFactory extends DaffModelFactory<MagentoBundledProductItemOption> {\n constructor(\n simpleFactory: MagentoSimpleProductFactory,\n ) {\n super(MockMagentoBundledProductItemOption, simpleFactory);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { faker } from '@faker-js/faker/locale/en_US';\n\nimport { DaffModelFactory } from '@daffodil/core/testing';\nimport {\n MagentoBundledProductItem,\n MagentoBundledProductItemOption,\n} from '@daffodil/product-composite/driver/magento';\n\nimport { MagentoBundledProductItemOptionFactory } from './bundle-item-option.factory';\n\n\nexport class MockMagentoBundledProductItem implements MagentoBundledProductItem {\n constructor(\n private optionFactory: MagentoBundledProductItemOptionFactory,\n ) {}\n required = faker.datatype.boolean();\n title = faker.random.word();\n type = faker.random.word();\n options = this.createOptions();\n option_id = faker.datatype.number({ min: 1, max: 9999 });\n\n protected createOptions(): MagentoBundledProductItemOption[] {\n\t return this.optionFactory.createMany(faker.datatype.number({ min: 1, max: 5 }));\n }\n}\n\n/**\n * A factory for creating stub data for {@link MagentoBundledProduct}s.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class MagentoBundledProductItemFactory extends DaffModelFactory<MagentoBundledProductItem> {\n constructor(\n optionFactory: MagentoBundledProductItemOptionFactory,\n ) {\n super(MockMagentoBundledProductItem, optionFactory);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { faker } from '@faker-js/faker/locale/en_US';\n\nimport { DaffModelFactory } from '@daffodil/core/testing';\nimport { MagentoProductTypeEnum } from '@daffodil/product/driver/magento';\nimport { MockMagentoCoreProduct } from '@daffodil/product/driver/magento/testing';\nimport {\n MagentoBundledProduct,\n MagentoBundledProductItem,\n} from '@daffodil/product-composite/driver/magento';\n\nimport { MagentoBundledProductItemFactory } from './bundle-item.factory';\n\n\nexport class MockMagentoBundledProduct extends MockMagentoCoreProduct implements MagentoBundledProduct {\n constructor(\n private bundleItemFactory: MagentoBundledProductItemFactory,\n ) {\n super();\n }\n\n __typename = MagentoProductTypeEnum.BundledProduct;\n items = this.createBundleItems();\n\n protected createBundleItems(): MagentoBundledProductItem[] {\n return this.bundleItemFactory.createMany(faker.datatype.number({ min: 1, max: 5 }));\n }\n}\n\n/**\n * A factory for creating stub data for {@link MagentoBundledProduct}s.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class MagentoBundledProductFactory extends DaffModelFactory<MagentoBundledProduct> {\n constructor(\n bundleItemFactory: MagentoBundledProductItemFactory,\n ) {\n super(MockMagentoBundledProduct, bundleItemFactory);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.MagentoBundledProductItemOptionFactory","i1.MagentoBundledProductItemFactory"],"mappings":";;;;;;;;MASa,mCAAmC,CAAA;AAC9C,IAAA,WAAA,CACU,aAA0C,EAAA;AAA1C,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAA6B;QAGpD,IAAA,CAAA,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAC5B,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;QACtD,IAAA,CAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;AACtC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;AACtD,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;KAP3B;IASM,aAAa,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;KACpC;AACF,CAAA;AAED;;AAEG;AAIG,MAAO,sCAAuC,SAAQ,gBAAiD,CAAA;AAC3G,IAAA,WAAA,CACE,aAA0C,EAAA;AAE1C,QAAA,KAAK,CAAC,mCAAmC,EAAE,aAAa,CAAC,CAAC;KAC3D;;sJALU,sCAAsC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,2BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAtC,mBAAA,sCAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sCAAsC,cAFrC,MAAM,EAAA,CAAA,CAAA;2FAEP,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBAHlD,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;MCnBY,6BAA6B,CAAA;AACxC,IAAA,WAAA,CACU,aAAqD,EAAA;AAArD,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAwC;QAE/D,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACpC,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAC3B,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AAC/B,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;KALrD;IAOM,aAAa,GAAA;QACtB,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KAChF;AACF,CAAA;AAED;;AAEG;AAIG,MAAO,gCAAiC,SAAQ,gBAA2C,CAAA;AAC/F,IAAA,WAAA,CACE,aAAqD,EAAA;AAErD,QAAA,KAAK,CAAC,6BAA6B,EAAE,aAAa,CAAC,CAAC;KACrD;;gJALU,gCAAgC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,sCAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhC,mBAAA,gCAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gCAAgC,cAF/B,MAAM,EAAA,CAAA,CAAA;2FAEP,gCAAgC,EAAA,UAAA,EAAA,CAAA;kBAH5C,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;AClBK,MAAO,yBAA0B,SAAQ,sBAAsB,CAAA;AACnE,IAAA,WAAA,CACU,iBAAmD,EAAA;AAE3D,QAAA,KAAK,EAAE,CAAC;AAFA,QAAA,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAkC;AAK7D,QAAA,IAAA,CAAA,UAAU,GAAG,sBAAsB,CAAC,cAAc,CAAC;AACnD,QAAA,IAAA,CAAA,KAAK,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAHhC;IAKS,iBAAiB,GAAA;QACzB,OAAO,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KACrF;AACF,CAAA;AAED;;AAEG;AAIG,MAAO,4BAA6B,SAAQ,gBAAuC,CAAA;AACvF,IAAA,WAAA,CACE,iBAAmD,EAAA;AAEnD,QAAA,KAAK,CAAC,yBAAyB,EAAE,iBAAiB,CAAC,CAAC;KACrD;;4IALU,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,gCAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA5B,mBAAA,4BAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,cAF3B,MAAM,EAAA,CAAA,CAAA;2FAEP,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAHxC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;iBACnB,CAAA;;;AClCD;;AAEG;;;;"}