{"version":3,"file":"coopse.script.6982.1c2b3ca6.chunk.js","mappings":"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","sources":["webpack:///../../packages/icons/src/stroke2/info1.svg","webpack:///../../packages/icons/src/stroke2/plus.svg","webpack:///./src/microApps/common/components/Heading/Heading.module.less","webpack:///./src/microApps/common/components/Heading/Heading.tsx","webpack:///./src/microApps/common/hooks/useModal.ts","webpack:///./src/microApps/common/selectors/modalSelectors.ts","webpack:///./src/microApps/common/tracking/ga4/shoppingList/ga4ShoppingListEvents.ts","webpack:///./src/microApps/shoppingList/api/directShoppingListAxiosClient.ts","webpack:///./src/microApps/shoppingList/api/shoppingListApi.ts","webpack:///./src/microApps/shoppingList/utils.ts"],"sourcesContent":["var _path, _path2;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgInfo1 = _ref => {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 24 24\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\",\n    d: \"M12 2.99951C7.02944 2.99951 3 7.02895 3 11.9995C3 16.9701 7.02944 20.9995 12 20.9995C16.9706 20.9995 21 16.9701 21 11.9995C21 7.02895 16.9706 2.99951 12 2.99951ZM1 11.9995C1 5.92438 5.92487 0.999512 12 0.999512C18.0751 0.999512 23 5.92438 23 11.9995C23 18.0746 18.0751 22.9995 12 22.9995C5.92487 22.9995 1 18.0746 1 11.9995ZM9 9.99951C9 9.44723 9.44772 8.99951 10 8.99951H12C12.5523 8.99951 13 9.44723 13 9.99951V15.9995H14C14.5523 15.9995 15 16.4472 15 16.9995C15 17.5518 14.5523 17.9995 14 17.9995H10C9.44772 17.9995 9 17.5518 9 16.9995C9 16.4472 9.44772 15.9995 10 15.9995H11V10.9995H10C9.44772 10.9995 9 10.5518 9 9.99951Z\"\n  })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n    d: \"M13.5 6.49951C13.5 7.32794 12.8284 7.99951 12 7.99951C11.1716 7.99951 10.5 7.32794 10.5 6.49951C10.5 5.67108 11.1716 4.99951 12 4.99951C12.8284 4.99951 13.5 5.67108 13.5 6.49951Z\"\n  })));\n};\nexport default SvgInfo1;","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nconst SvgPlus = _ref => {\n  let {\n    title,\n    titleId,\n    ...props\n  } = _ref;\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    width: \"1em\",\n    height: \"1em\",\n    viewBox: \"0 0 24 24\",\n    xmlns: \"http://www.w3.org/2000/svg\",\n    \"aria-labelledby\": titleId\n  }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n    id: titleId\n  }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    fillRule: \"evenodd\",\n    clipRule: \"evenodd\",\n    d: \"M12 4C12.5523 4 13 4.44772 13 5V11H19C19.5523 11 20 11.4477 20 12C20 12.5523 19.5523 13 19 13H13V19C13 19.5523 12.5523 20 12 20C11.4477 20 11 19.5523 11 19V13H5C4.44772 13 4 12.5523 4 12C4 11.4477 4.44772 11 5 11H11V5C11 4.44772 11.4477 4 12 4Z\"\n  })));\n};\nexport default SvgPlus;","// extracted by mini-css-extract-plugin\nexport default {\"Heading\":\"E17FI2IV\",\"Heading--coopGreen\":\"JZ_2qqd6\",\"Heading--darkGreen\":\"htkN9xWM\",\"Heading--white\":\"y1M7QAC6\",\"Heading--black\":\"K8xICLcl\",\"Heading--colorGreen2\":\"wUVrHEa9\",\"FontFamilySecondary\":\"CO0BQ7N3\"};","import classNames from 'classnames';\nimport * as React from 'react';\nimport { useEffect } from 'react';\n\nimport styles from './Heading.module.less';\n\ninterface HeadingProps extends React.HTMLAttributes<HTMLHeadingElement> {\n    element: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p';\n    stylingElement?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n    fontFamilySecondary?: boolean;\n    color?: 'coopGreen' | 'darkGreen' | 'white' | 'black' | 'colorGreen2';\n    alignment?: 'start' | 'center' | 'end';\n}\n\nconst Heading = React.forwardRef<HTMLHeadingElement, React.PropsWithChildren<HeadingProps>>(\n    (props, ref) => {\n        if (!props.children) return null;\n\n        // eslint-disable-next-line unused-imports/no-unused-vars\n        const { fontFamilySecondary, stylingElement, element, className, alignment, ...rest } =\n            props;\n\n        const alignStyles: React.CSSProperties = {\n            width: '100%',\n        };\n        switch (alignment) {\n            case 'start': {\n                alignStyles.textAlign = 'left';\n                break;\n            }\n            case 'end': {\n                alignStyles.textAlign = 'right';\n                break;\n            }\n            case 'center':\n            default: {\n                alignStyles.textAlign = 'center';\n                break;\n            }\n        }\n        return (\n            <props.element\n                ref={ref}\n                className={classNames(\n                    styles.Heading,\n                    stylingElement && `Heading--${stylingElement}`,\n                    props.color ? styles[`Heading--${props.color}`] : styles['Heading--black'],\n                    fontFamilySecondary && styles.FontFamilySecondary,\n                    className,\n                )}\n                style={{\n                    ...rest.style,\n                    ...alignStyles,\n                }}\n                // eslint-disable-next-line react/jsx-props-no-spreading\n                {...rest}\n            >\n                {props.children}\n            </props.element>\n        );\n    },\n);\n\ninterface PageHeadingProps extends Omit<HeadingProps, 'element'> {\n    visuallyHidden?: boolean;\n}\n\nexport const PageHeading = React.forwardRef<\n    HTMLHeadingElement,\n    React.PropsWithChildren<PageHeadingProps>\n>((props, ref) => {\n    // The effect simulates what browsers do on a normal non-SPA apps - they reloading a page and set focus to the top of the page (body).\n    useEffect(() => {\n        document.body.focus();\n    }, []);\n\n    return (\n        <Heading\n            ref={ref}\n            element=\"h1\"\n            tabIndex={-1}\n            stylingElement={props.stylingElement}\n            fontFamilySecondary={props.fontFamilySecondary}\n            className={classNames(props.className, props.visuallyHidden && 'u-hiddenVisually')}\n            color={props.color}\n        >\n            {props.children}\n        </Heading>\n    );\n});\n\nexport default Heading;\n","import { useIsInsideModal } from '@coop/components';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { v4 } from 'uuid';\n\nimport { modalSelectors } from '../selectors/modalSelectors';\nimport { modalActions } from '../store/slices/modal/modalSlice';\nimport type { ModalType } from '../store/structureDefinitions/modalState';\nimport { useAppDispatch, useAppSelector } from './useThunkDispatch';\n\n/**\n * This is a hook that handles state for top level modals.\n * Top level modal is the first modal opened on a page, like MiniCart.\n * In most situations you won't use this hook directly, use useModal instead.\n */\nexport const useTopLevelModal = (\n    type?: ModalType | string,\n    initialState?: boolean,\n    uniqueId?: string,\n) => {\n    const typeOrGenerated = useRef(type || v4());\n\n    const dispatch = useAppDispatch();\n\n    const isOpen = useAppSelector((state) =>\n        modalSelectors.isModalTypeOpen(state, typeOrGenerated.current, uniqueId),\n    );\n\n    const close = useCallback(() => {\n        dispatch(modalActions.close());\n    }, [dispatch]);\n\n    const open = useCallback(() => {\n        dispatch(modalActions.open({ type: typeOrGenerated.current, id: uniqueId || null }));\n    }, [dispatch, uniqueId]);\n\n    useEffect(() => {\n        if (initialState === true) {\n            open();\n        }\n        if (initialState === false) {\n            close();\n        }\n    }, [open, close, initialState]);\n\n    return { isOpen, open, close };\n};\n\n/**\n * This is a hook that handles state for local modals.\n * Local modal is a modal that is opened from inside another modal.\n * DON'T use this hook directly, always use useModal instead.\n */\nconst useLocalModal = (initialState?: boolean) => {\n    const [isOpen, setIsOpen] = useState(!!initialState);\n\n    const open = useCallback(() => {\n        setIsOpen(true);\n    }, []);\n\n    const close = useCallback(() => {\n        setIsOpen(false);\n    }, []);\n\n    return { isOpen, open, close };\n};\n\n/**\n * Hook for handling modal state\n * If a modal is opened from inside another modal, it is a local modal and the local modal state will be used\n * If a modal is opened as a first modal on the page, it is a top level modal and the modal state from Redux will be used\n * This hook ensures that there can only be one top level modal at a time. If second top level modal is opened for some reason (i.e. timeslot expiration popup is shown), the first one will be closed.\n *\n * @param type If you want to open the same modal instance from multiple places, set a unique type in ModalType. If you want to control the modal from single place, dom't provide the type and a GUID will be generated for it.\n * @param initialState Initial state of the modal\n * @param uniqueId Use this if you have multiple components at the same time that can trigger the modal\n */\nconst useModal = (type?: ModalType | string, initialState?: boolean, uniqueId?: string) => {\n    const {\n        isOpen: topLevelModalIsOpen,\n        open: topLevelModalOpen,\n        close: topLevelModalClose,\n    } = useTopLevelModal(type, initialState, uniqueId);\n\n    const {\n        isOpen: localModallIsOpen,\n        open: localModalOpen,\n        close: localModalClose,\n    } = useLocalModal(!!initialState);\n\n    const modalIsInisideAnotherModal = useIsInsideModal();\n\n    const close = useCallback(() => {\n        if (modalIsInisideAnotherModal) {\n            localModalClose();\n        } else {\n            topLevelModalClose();\n        }\n    }, [modalIsInisideAnotherModal, localModalClose, topLevelModalClose]);\n\n    const open = useCallback(() => {\n        if (modalIsInisideAnotherModal) {\n            localModalOpen();\n        } else {\n            topLevelModalOpen();\n        }\n    }, [modalIsInisideAnotherModal, localModalOpen, topLevelModalOpen]);\n\n    const setIsOpen = useCallback(\n        (newState: boolean) => {\n            if (newState) {\n                open();\n            } else {\n                close();\n            }\n        },\n        [open, close],\n    );\n\n    const isOpen = modalIsInisideAnotherModal ? localModallIsOpen : topLevelModalIsOpen;\n\n    return {\n        open,\n        close,\n        isOpen,\n        setIsOpen,\n    };\n};\n\nexport default useModal;\n","import { createSelector } from '@reduxjs/toolkit';\n\nimport type { RootState } from '../store/structureDefinitions/cartState';\nimport type { ModalType } from '../store/structureDefinitions/modalState';\n\nconst isModalTypeOpen = createSelector(\n    (state: RootState) => state.modal.isOpen,\n    (state: RootState) => state.modal.type,\n    (state: RootState) => state.modal.id,\n    (_: unknown, type: ModalType | string) => type,\n    (_: unknown, _2: unknown, id: string | undefined) => id,\n    (isOpen, currentType, currentId, type, id) => {\n        return isOpen && currentType === type && (!currentId || currentId === id);\n    },\n);\n\nconst isModalOpen = createSelector(\n    (state: RootState) => state.modal.isOpen,\n    (state: RootState) => state.modal.type,\n    (isOpen, type) => isOpen && !!type,\n);\n\nconst isAnyModalOpen = (state: RootState): boolean => state.modal.isOpen;\n\nexport const modalSelectors = {\n    isOpen: isModalOpen,\n    isModalTypeOpen,\n    isAnyModalOpen,\n};\n","import { failSilently } from '../../utils/failSilently';\nimport { sendGA4Event } from '../shared/sendGa4Event';\n\nconst shoppingList = (type: ShoppingListEventType) => () => {\n    const event: ShoppingListEvent = {\n        event: 'shopping_list',\n        type,\n        event_key: `shopping_list_${type}`,\n    };\n\n    sendGA4Event(event);\n};\n\nexport default {\n    add: failSilently(shoppingList('add')),\n    remove: failSilently(shoppingList('remove')),\n    create: failSilently(shoppingList('create')),\n    view: failSilently(shoppingList('view')),\n    check: failSilently(shoppingList('check')),\n};\n","import type { AxiosInstance } from 'axios';\n\nimport { appConfig } from '../../../appConfig';\nimport axiosClientFactory from '../../common/api/clients/clientFactory';\n\nconst getDirectShoppingListAxiosClient = (accessToken: string): AxiosInstance => {\n    const directShoppingListAxiosClient = axiosClientFactory.createDirectApiClient({\n        baseURL: appConfig.coopSettings.serviceAccess.shoppingListApiUrl,\n        headers: {\n            Authorization: `Bearer ${accessToken}`,\n        },\n        params: {\n            'api-version': appConfig.coopSettings.serviceAccess.shoppingListApiVersion,\n        },\n    });\n\n    return directShoppingListAxiosClient;\n};\n\nexport default getDirectShoppingListAxiosClient;\n","/**\n * Based on https://apitest.coop.se/shoppinglist/swagger/index.html\n */\n\nimport type {\n    OfferType,\n    ShoppingListCreateRequestBody,\n    ShoppingListIngredient,\n    ShoppingListItemModelRequestBody,\n    ShoppingListModel,\n    ShoppingListRenameRequestBody,\n} from '../models';\nimport getDirectShoppingListAxiosClient from './directShoppingListAxiosClient';\n\nconst getLists = async (token: string): Promise<ShoppingListModel[]> => {\n    const response = await getDirectShoppingListAxiosClient(token).get('');\n    return response.data;\n};\n\nconst getListsWithoutProducts = async (token: string): Promise<ShoppingListModel[]> => {\n    const response = await getDirectShoppingListAxiosClient(token).get('?includeProducts=false');\n    return response.data;\n};\n\nconst getIngredients = async (token: string, name: string): Promise<ShoppingListIngredient[]> => {\n    const response = await getDirectShoppingListAxiosClient(token).get(`/ingredients/${name}`);\n    return response.data;\n};\n\nconst getList = async (token: string, id: number): Promise<ShoppingListModel> => {\n    const response = await getDirectShoppingListAxiosClient(token).get(`/${id}`);\n    return response.data;\n};\nconst createList = async (\n    token: string,\n    request: ShoppingListCreateRequestBody,\n): Promise<ShoppingListModel> => {\n    const response = await getDirectShoppingListAxiosClient(token).post(`/create`, request);\n    return response.data;\n};\n\nconst removeList = async (token: string, id: number): Promise<number> => {\n    const response = await getDirectShoppingListAxiosClient(token).delete(`/${id}`);\n    return response.data;\n};\n\nconst renameList = async (\n    token: string,\n    id: number,\n    request: ShoppingListRenameRequestBody,\n): Promise<number> => {\n    const response = await getDirectShoppingListAxiosClient(token).put(`/${id}/rename`, request);\n    return response.data;\n};\n\nconst addRecipeToList = async ({\n    token,\n    listId,\n    recipeId,\n    ingredients,\n}: {\n    token: string;\n    listId: number;\n    recipeId: number;\n    ingredients: ShoppingListItemModelRequestBody[];\n}): Promise<number> => {\n    const response = await getDirectShoppingListAxiosClient(token).post(\n        `/${listId}/recipe/${recipeId}`,\n        ingredients,\n    );\n    return response.data;\n};\n\nconst removeRecipeFromList = async ({\n    token,\n    listId,\n    recipeId,\n}: {\n    token: string;\n    listId: number;\n    recipeId: number;\n}): Promise<number> => {\n    const response = await getDirectShoppingListAxiosClient(token).delete(\n        `/${listId}/recipe/${recipeId}`,\n    );\n    return response.data;\n};\n\nconst addOfferToList = async ({\n    token,\n    listId,\n    offerId,\n    offerType,\n}: {\n    token: string;\n    listId: number;\n    offerId: string;\n    offerType: OfferType;\n}): Promise<number> => {\n    const response = await getDirectShoppingListAxiosClient(token).post(\n        `/${listId}/offer/${offerType}:${offerId}`,\n    );\n    return response.data;\n};\n\nconst removeOfferFromList = async ({\n    token,\n    listId,\n    offerId,\n}: {\n    token: string;\n    listId: number;\n    offerId: string;\n}): Promise<number> => {\n    const response = await getDirectShoppingListAxiosClient(token).delete(\n        `/${listId}/offer/${offerId}`,\n    );\n    return response.data;\n};\n\nconst addProductToList = async ({\n    token,\n    id,\n    product,\n}: {\n    token: string;\n    id: number;\n    product: ShoppingListItemModelRequestBody;\n}): Promise<number> => {\n    const response = await getDirectShoppingListAxiosClient(token).post(`/${id}/products`, [\n        product,\n    ]);\n    return response.data;\n};\n\nconst deleteProductsFromList = async ({\n    token,\n    id,\n    productId,\n}: {\n    token: string;\n    id: number;\n    productId: number;\n}) => {\n    const response = await getDirectShoppingListAxiosClient(token).delete(`/${id}/products`, {\n        data: [productId],\n    });\n    return response.data;\n};\n\nconst updateProductsFromList = async ({\n    token,\n    id,\n    products,\n}: {\n    token: string;\n    id: number;\n    products: ShoppingListItemModelRequestBody[];\n}): Promise<number> => {\n    const response = await getDirectShoppingListAxiosClient(token).put(`/${id}/products`, products);\n    return response.data;\n};\n\nconst toggleCheckProduct = async ({\n    token,\n    listId,\n    productId,\n}: {\n    token: string;\n    listId: number;\n    productId: number;\n}) => {\n    const response = await getDirectShoppingListAxiosClient(token).put(\n        `/${listId}/check/${productId}`,\n        {},\n    );\n    return response;\n};\n\nexport default {\n    getLists,\n    getListsWithoutProducts,\n    getIngredients,\n    list: {\n        get: getList,\n        create: createList,\n        remove: removeList,\n        rename: renameList,\n        product: {\n            add: addProductToList,\n            update: updateProductsFromList,\n            delete: deleteProductsFromList,\n            toggleCheck: toggleCheckProduct,\n        },\n        recipe: {\n            add: addRecipeToList,\n            remove: removeRecipeFromList,\n        },\n        offer: {\n            add: addOfferToList,\n            remove: removeOfferFromList,\n        },\n    },\n};\n","import type { ApiRecipeIngredient } from '../../models/recipe/recipeModel';\nimport { Helpers } from '../../utility/helpers';\nimport type {\n    ShoppingListItemModel,\n    ShoppingListItemModelRequestBody,\n    ShoppingListModel,\n} from './models';\n\nconst singularToPlural = {\n    ask: 'askar',\n    askar: 'askar',\n    bit: 'bitar',\n    bitar: 'bitar',\n    burk: 'burkar',\n    burkar: 'burkar',\n    cl: 'cl',\n    ml: 'ml',\n    cm: 'cm',\n    dl: 'dl',\n    flaska: 'flaskor',\n    flaskor: 'flaskor',\n    g: 'g',\n    hg: 'hg',\n    kg: 'kg',\n    knippa: 'knippor',\n    knippe: 'knippor',\n    knippor: 'knippor',\n    krm: 'krm',\n    kruka: 'krukor',\n    krukor: 'krukor',\n    kvist: 'kvistar',\n    kvistar: 'kvistar',\n    l: 'l',\n    liter: 'l',\n    msk: 'msk',\n    paket: 'pkt',\n    pkt: 'pkt',\n    portion: 'portioner',\n    portioner: 'portioner',\n    påse: 'påsar',\n    påsar: 'påsar',\n    skiva: 'skivor',\n    st: 'st',\n    stk: 'st',\n    stycken: 'st',\n    tsk: 'tsk',\n} as const;\n\ntype SingularKeys = keyof typeof singularToPlural;\ntype PluralKeys = (typeof singularToPlural)[SingularKeys];\n\nconst pluralToSingular = Object.entries(singularToPlural).map(([key, value]) => ({ value, key }));\n\nconst acceptableUnits: (SingularKeys | PluralKeys)[] = [\n    ...(Object.values(singularToPlural) as PluralKeys[]),\n    ...(Object.keys(singularToPlural) as SingularKeys[]),\n];\n\nexport const stringQuantityToNumber = (quantity: string | null) => {\n    if (quantity === null) {\n        return 0;\n    }\n    return Number(quantity?.replace(',', '.'));\n};\n\nconst getValidUnit = (unit: string, quantity: number) => {\n    if (unit?.length > 0 && quantity < 2) {\n        const found = pluralToSingular.find(({ key }) => key === unit);\n        if (found?.value) {\n            return found.value;\n        }\n    }\n\n    if (unit?.length > 0 && quantity > 1) {\n        if (unit in singularToPlural) {\n            return singularToPlural[unit as SingularKeys];\n        }\n    }\n\n    if (acceptableUnits.includes(unit)) {\n        return unit;\n    }\n\n    return null;\n};\n\nexport const findQuantityFromInputString = (input: string) => {\n    const acceptableNumberChars = ['.', ','];\n    const foundFirstCharacter = input.split('').find((c) => {\n        return !acceptableNumberChars.includes(c) && Number.isNaN(Number(c));\n    });\n    const preFirstChar =\n        foundFirstCharacter && input.split(foundFirstCharacter)[0].replace(',', '.');\n    const isNumber = preFirstChar !== '' && !Number.isNaN(Number(preFirstChar));\n\n    if (preFirstChar && isNumber) {\n        return preFirstChar.replace('.', ',').trim();\n    }\n\n    return null;\n};\n\nexport const findUnitFromInputString = (input: string) => {\n    const foundUnits = acceptableUnits\n        .map((unit) => ({ unit, index: input.indexOf(unit) }))\n        .filter((unitObj) => unitObj.index !== -1);\n\n    if (foundUnits.length === 0) {\n        return null;\n    }\n\n    const closestUnit = foundUnits.reduce((lowest, curr) =>\n        lowest.index > curr.index ? curr : lowest,\n    ).unit;\n    const [preUnit, postPost] = input.split(closestUnit);\n    const preUnitIsNumber = !Number.isNaN(Number(preUnit));\n    const postUnitExists = postPost?.length > 0 && postPost[0] === ' ';\n\n    if (preUnitIsNumber && postUnitExists) {\n        return closestUnit;\n    }\n\n    return null;\n};\n\nexport const findNameFromInputString = (input: string) => {\n    const quantity = findQuantityFromInputString(input);\n    const unit = findUnitFromInputString(input);\n\n    if (unit) {\n        return input.split(unit)[1].trim();\n    }\n\n    if (quantity) {\n        const [, ...afterQuantity] = input.replace('.', ',').split(quantity);\n        return afterQuantity.join('').trim();\n    }\n\n    return input;\n};\n\nexport const createProductRequestBody = (\n    input: string,\n    placement = 'Övrigt',\n): ShoppingListItemModelRequestBody => ({\n    id: 0,\n    name: findNameFromInputString(input),\n    quantity: findQuantityFromInputString(input),\n    unit: findUnitFromInputString(input),\n    placement,\n    pluralName: null,\n    checked: false,\n    ean: null,\n});\n\nexport const isSimilarIngredient = (\n    item: ShoppingListItemModel,\n    ingredient: ShoppingListItemModelRequestBody,\n) => {\n    const hasSameName = ingredient.name === item.name;\n    const hasSameUnit = ingredient.unit === item.unit;\n\n    if (hasSameUnit && hasSameName) {\n        return true;\n    }\n\n    return false;\n};\n\nexport const getIngredientsThatShouldNotBeUpdated = (\n    list: ShoppingListModel,\n    ingredients: ShoppingListItemModelRequestBody[],\n): ShoppingListItemModelRequestBody[] =>\n    ingredients.filter(\n        (ingredient) => !list.Products.find((item) => isSimilarIngredient(item, ingredient)),\n    );\n\n// only one recipeId per ingredient because app does that way and currently no other way in API\nexport const getIngredientsThatShouldBeUpdatedInMergedForm = (\n    list: ShoppingListModel,\n    ingredients: ShoppingListItemModelRequestBody[],\n) => {\n    const similiarIngredients = ingredients.filter((ingredient) =>\n        list.Products.find((item) => isSimilarIngredient(item, ingredient)),\n    );\n\n    const result = list.Products.reduce((acc, item) => {\n        const matchedIngredient = acc.find((ingredient) => isSimilarIngredient(item, ingredient));\n\n        if (matchedIngredient) {\n            const recipeID = item.recipeID ? item.recipeID : matchedIngredient.recipeId;\n            const newQuantity =\n                stringQuantityToNumber(item.quantity) +\n                stringQuantityToNumber(matchedIngredient.quantity);\n            const correctQuantity = item.quantity === null ? null : String(newQuantity);\n\n            return acc.map((addedItem) => {\n                if (addedItem === matchedIngredient) {\n                    const x: ShoppingListItemModelRequestBody = {\n                        id: item.id,\n                        name: item.name,\n                        checked: item.isChecked,\n                        ean: item.ean,\n                        placement: item.placement,\n                        pluralName: item.pluralName,\n                        unit: item.unit,\n                        quantity: correctQuantity,\n                        recipeId: recipeID,\n                        availableAsEcological: item.availableAsEcological,\n                        externalIngredientID: item.externalIngredientID,\n                        offerId: item.offerID,\n                    };\n                    return x;\n                }\n                return addedItem;\n            });\n        }\n        return acc;\n    }, similiarIngredients);\n\n    return result;\n};\n\nexport const createIngredientRequestBody = (\n    ingredient: ApiRecipeIngredient,\n    recipeId: number,\n): ShoppingListItemModelRequestBody => ({\n    recipeId,\n    externalIngredientID: ingredient.ingredient?.externalId,\n    id: 0,\n    name: ingredient.name,\n    quantity: ingredient.quantity,\n    unit: getValidUnit(ingredient.unit, Number(ingredient.quantity)),\n    placement: ingredient.ingredient !== null ? ingredient.ingredient.placement : 'Övrigt',\n    pluralName: ingredient.ingredient !== null ? ingredient.ingredient.pluralName : null,\n    availableAsEcological: ingredient?.ingredient?.hasOrganicAlternative\n        ? true\n        : Boolean(ingredient?.ingredient?.konsumHasEcological),\n    checked: false,\n    ean: null,\n});\n\nexport const getDefaultListName = () => {\n    const currentDate = new Date();\n    const currentWeekDayName = Helpers.getDayName(currentDate, true);\n    const currentMonthName = Helpers.getMonthName(currentDate, true);\n    const currentDayOfMonthNumber = currentDate.getDate();\n\n    return `Lista, ${currentWeekDayName} ${currentDayOfMonthNumber} ${currentMonthName}`;\n};\n\nexport const getSortedListByUpdatedDate = (lists: ShoppingListModel[]) =>\n    lists.slice().sort((a, b) => new Date(b.Updated).getTime() - new Date(a.Updated).getTime());\n"],"names":["_path","_path2","_extends","Object","assign","bind","n","e","arguments","length","t","r","hasOwnProperty","call","apply","_ref","title","titleId","props","width","height","viewBox","xmlns","id","fillRule","clipRule","d","Heading","ref","children","fontFamilySecondary","stylingElement","element","className","alignment","rest","alignStyles","textAlign","color","FontFamilySecondary","style","useEffect","document","body","focus","tabIndex","visuallyHidden","useTopLevelModal","type","initialState","uniqueId","typeOrGenerated","useRef","dispatch","isOpen","state","isModalTypeOpen","current","close","useCallback","open","topLevelModalIsOpen","topLevelModalOpen","topLevelModalClose","localModallIsOpen","localModalOpen","localModalClose","setIsOpen","useState","useLocalModal","modalIsInisideAnotherModal","newState","modal","_","_2","currentType","currentId","modalSelectors","isAnyModalOpen","shoppingList","event","event_key","add","failSilently","remove","create","view","check","accessToken","createDirectApiClient","baseURL","appConfig","coopSettings","serviceAccess","shoppingListApiUrl","headers","Authorization","params","shoppingListApiVersion","getLists","token","get","data","getListsWithoutProducts","getIngredients","name","list","request","post","delete","rename","put","product","update","products","productId","toggleCheck","listId","recipe","recipeId","ingredients","offer","offerId","offerType","singularToPlural","ask","askar","bit","bitar","burk","burkar","cl","ml","cm","dl","flaska","flaskor","g","hg","kg","knippa","knippe","knippor","krm","kruka","krukor","kvist","kvistar","l","liter","msk","paket","pkt","portion","portioner","skiva","st","stk","stycken","tsk","pluralToSingular","entries","map","key","value","acceptableUnits","values","keys","stringQuantityToNumber","quantity","Number","replace","getValidUnit","unit","found","find","includes","findQuantityFromInputString","input","acceptableNumberChars","foundFirstCharacter","split","c","isNaN","preFirstChar","isNumber","trim","findUnitFromInputString","foundUnits","index","indexOf","filter","unitObj","closestUnit","reduce","lowest","curr","preUnit","postPost","preUnitIsNumber","postUnitExists","findNameFromInputString","afterQuantity","join","createProductRequestBody","placement","pluralName","checked","ean","isSimilarIngredient","item","ingredient","hasSameName","getIngredientsThatShouldNotBeUpdated","Products","getIngredientsThatShouldBeUpdatedInMergedForm","similiarIngredients","acc","matchedIngredient","recipeID","newQuantity","correctQuantity","String","addedItem","isChecked","availableAsEcological","externalIngredientID","offerID","createIngredientRequestBody","externalId","hasOrganicAlternative","Boolean","konsumHasEcological","getDefaultListName","currentDate","Date","currentWeekDayName","getDayName","currentMonthName","getMonthName","getDate","getSortedListByUpdatedDate","lists","slice","sort","a","b","Updated","getTime"],"sourceRoot":""}