{"version":3,"file":"4365.js?id=113fc53f83e3f029","mappings":"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","sources":["webpack://website-js/./src/models/Recipe.ts","webpack://website-js/./src/services/RecipeService.ts","webpack://website-js/./src/store/modules/RecipeModule.ts","webpack://website-js/./src/components/recipe/RecipeContainers.vue","webpack://website-js/./src/components/recipe/RecipeContainers.vue?48de","webpack://website-js/./src/components/recipe/RecipeContainers.vue?4ffb","webpack://website-js/./src/components/recipe/RecipeContainers.vue?de1d"],"sourcesContent":["import { DisplayPriceInfo } from \"./Product\";\r\n\r\nexport interface RecipeIngredient {\r\n    type: RecipeItemType;\r\n    displayquantity: string;\r\n    quantity: number;\r\n    displaylabel: string;\r\n    unit?: string;\r\n    link: string;\r\n    info: string;\r\n    variants: RecipeIngredientVariant[];\r\n}\r\n\r\nexport enum RecipeItemType {\r\n    Header,\r\n    Display,\r\n    Product\r\n}\r\n\r\nexport interface RecipeIngredientVariant {\r\n    productid: string;\r\n    consumptionprbatch: string;\r\n    consumptionprbatchasdecimal: number;\r\n}\r\n\r\nexport interface RecipeContainer {\r\n    type: RecipeItemType;\r\n    quantityprbatch: string;\r\n    displaylabel: string;\r\n    link: string;\r\n    productid: string;\r\n    quantityprbatchasdecimal: number;\r\n}\r\n\r\nexport interface RecipeStep {\r\n    type: RecipeStepType;\r\n    number?: number | null;\r\n    text: string;\r\n}\r\n\r\nexport enum RecipeStepType {\r\n    Header,\r\n    Subheader,\r\n    Step\r\n}\r\n\r\nexport interface RecipeCalculationRequest {\r\n    contentid: number;\r\n    noofbatches: number;\r\n    containerid: string;\r\n}\r\n\r\nexport interface RecipeCalculationResponse {\r\n    ingredients: RecipeCalculationResponseIngredient[];\r\n    containers: RecipeCalculationResponseContainer[];\r\n    outofstockitems: string[];\r\n    priceperbatch: DisplayPriceInfo;\r\n    pricetotal: DisplayPriceInfo;\r\n}\r\n\r\nexport interface RecipeCalculationResponseItem {\r\n    id: string;\r\n    name: string;\r\n    volume: string;\r\n    price: DisplayPriceInfo;\r\n    quantity: string;\r\n    quantityasnumeric: number;\r\n}\r\n\r\nexport interface RecipeCalculationResponseIngredient extends RecipeCalculationResponseItem {\r\n    parent: string;\r\n    usage: number;\r\n}\r\n\r\nexport interface RecipeCalculationResponseContainer extends RecipeCalculationResponseItem {\r\n    selected: boolean;\r\n}\r\n\r\nexport interface AddedRecipe {\r\n    id: string;\r\n    name: string;\r\n    url: string;\r\n}\r\n\r\nexport interface RecipePreview {\r\n    id: number;\r\n    name: string;\r\n    summary: string;\r\n    image: string;\r\n    url: string;\r\n}","import { AddedRecipe, RecipeCalculationRequest, RecipeCalculationResponse } from '@/models/Recipe';\r\nimport axios, { AxiosResponse } from 'axios';\r\n\r\nexport default class RecipeService {\r\n\r\n    private profileId: string = (window as any).CbxApiContextKey;\r\n    private endpoint: string;\r\n\r\n    constructor(args: any = {}) {\r\n        if (args.profileId)\r\n            this.profileId = args.profileId;\r\n        this.endpoint = `/contextapi/${this.profileId}/v1/recipe`;\r\n    }\r\n    \r\n    public async calculate(data: RecipeCalculationRequest): Promise<RecipeCalculationResponse> {\r\n        try {\r\n            const res: AxiosResponse<RecipeCalculationResponse> = await axios.post(`${this.endpoint}/calculate`, data);\r\n            return res.data;\r\n        } catch (e) {\r\n            console.log(e);\r\n        }\r\n    }\r\n    \r\n    public async getAdded(): Promise<AddedRecipe[]> {\r\n        try {\r\n            const res: AxiosResponse<AddedRecipe[]> = await axios.post(`${this.endpoint}/added`);\r\n            return res.data;\r\n        } catch (e) {\r\n            console.log(e);\r\n        }\r\n    } \r\n    \r\n    public async removeAdded(id: string): Promise<AddedRecipe[]> {\r\n        try {\r\n            const res: AxiosResponse<AddedRecipe[]> = await axios.post(`${this.endpoint}/remove/${id}`);\r\n            return res.data;\r\n        } catch (e) {\r\n            console.log(e);\r\n        }\r\n    } \r\n}\r\n","import { Module, VuexModule, Mutation, getModule, Action } from 'vuex-module-decorators';\r\nimport store from '@/store';\r\nimport { AddedRecipe } from '@/models/Recipe';\r\nimport RecipeService from '@/services/RecipeService';\r\n\r\n@Module({\r\n    store,\r\n    dynamic: true,\r\n    name: 'recipe',\r\n    namespaced: true,\r\n})\r\nclass RecipeModule extends VuexModule {\r\n\r\n    private service: RecipeService = new RecipeService();\r\n\r\n    private portions: number = 1;\r\n    private added: AddedRecipe[] = [];\r\n\r\n    get PORTIONS(): number {\r\n        return this.portions;\r\n    }\r\n\r\n    get ADDED(): AddedRecipe[] {\r\n        return this.added;\r\n    }\r\n\r\n    @Mutation\r\n    public SET_PORTIONS(args: number) {\r\n        this.portions = args;\r\n    }\r\n\r\n    @Action({ commit: 'SET_ADDED' })\r\n    public async GET_ADDED() {\r\n        return await this.service.getAdded();\r\n    }\r\n    @Action({ commit: 'SET_ADDED' })\r\n    public async REMOVE_ADDED(id: string) {\r\n        return await this.service.removeAdded(id);\r\n    }\r\n    @Mutation\r\n    public SET_ADDED(payload: AddedRecipe[]) {\r\n        this.added = payload;\r\n    }\r\n\r\n}\r\n\r\nexport default getModule(RecipeModule);\r\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"recipe-containers\"},[_vm._l((_vm.portionedContainers),function(container,idx){return [void 0,_c('div',{key:`qty_${idx}`},[_vm._v(_vm._s(container.quantityprbatch))]),_c('div',{key:`text_${idx}`,staticClass:\"recipe-text\"},[(container.link)?_c('a',{attrs:{\"href\":container.link}},[_vm._v(_vm._s(container.displaylabel))]):[_vm._v(_vm._s(container.displaylabel))]],2)]})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\nimport { RecipeContainer, RecipeItemType } from '@/models/Recipe';\r\nimport RecipeModule from '@/store/modules/RecipeModule';\r\nimport { copy } from '@/utils/objectUtils';\r\nimport { Component, Prop, Vue } from 'vue-property-decorator';\r\n\r\n@Component({\r\n    name: 'RecipeContainers',\r\n})\r\nexport default class RecipeContainers extends Vue {\r\n    @Prop({ type: Array, required: true }) containers: RecipeContainer[];\r\n\r\n    get portions(): number {\r\n        return RecipeModule.PORTIONS;\r\n    }\r\n\r\n    get portionedContainers(): RecipeContainer[] {\r\n        return copy(this.containers).map((container: RecipeContainer) => {\r\n            if (container.type !== RecipeItemType.Header)\r\n            {\r\n                container.quantityprbatch = String(Math.ceil(container.quantityprbatchasdecimal * this.portions));\r\n            }\r\n\r\n            return container;\r\n        });\r\n    }\r\n\r\n    private isNumeric(str: string): boolean {\r\n        return !isNaN(parseFloat(str));\r\n    }\r\n}\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??clonedRuleSet-41.use[0]!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[3]!../../../node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!../../../node_modules/@vue/cli-service/lib/config/vue-loader-v15-resolve-compat/vue-loader.js??vue-loader-options!./RecipeContainers.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??clonedRuleSet-41.use[0]!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[3]!../../../node_modules/cache-loader/dist/cjs.js??ruleSet[0].use[0]!../../../node_modules/@vue/cli-service/lib/config/vue-loader-v15-resolve-compat/vue-loader.js??vue-loader-options!./RecipeContainers.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RecipeContainers.vue?vue&type=template&id=e0f458b4&\"\nimport script from \"./RecipeContainers.vue?vue&type=script&lang=ts&\"\nexport * from \"./RecipeContainers.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports"],"names":["RecipeItemType","RecipeStepType","RecipeService","constructor","args","_defineProperty","window","CbxApiContextKey","profileId","this","endpoint","async","data","res","axios","e","console","log","id","RecipeModule","VuexModule","PORTIONS","portions","ADDED","added","SET_PORTIONS","service","getAdded","removeAdded","SET_ADDED","payload","__decorate","Mutation","Action","commit","Module","store","dynamic","name","namespaced","getModule","render","_vm","_c","_self","_setupProxy","staticClass","_l","portionedContainers","container","idx","key","_v","_s","quantityprbatch","link","attrs","displaylabel","staticRenderFns","RecipeContainers","Vue","copy","containers","map","type","Header","String","Math","ceil","quantityprbatchasdecimal","isNumeric","str","isNaN","parseFloat","Prop","Array","required","Component","component"],"sourceRoot":""}