{"version":3,"file":"index.modern.mjs","sources":["../src/types/api.ts","../src/utils/api.ts","../src/utils/consts.ts","../src/utils/object.ts","../src/utils/url.ts","../src/utils/image.ts","../src/utils/json.ts","../src/utils/number.ts","../src/utils/link.ts","../src/hooks/useCurrentRef.ts","../src/hooks/useRefState.ts","../src/hooks/useScopeTranslation.ts"],"sourcesContent":["export type ApiErrorType = {\n    statusCode: number;\n    error: string;\n    message: string;\n};\n\nexport type NestedApiErrorType = {\n    message: ApiErrorType;\n};\n\nexport const initialApiError: ApiErrorType = {\n    statusCode: 500,\n    error: 'Error',\n    message: 'Unknown error',\n};\n\nexport type SeoList = Array<{\n    id: string | number;\n    slug: string;\n    noIndex?: string;\n    noFollow?: string;\n    hideInSitemap?: string;\n}>;\n","import {ApiErrorType, initialApiError, NestedApiErrorType} from '../types/api';\n\nexport const parseApiError = (\n    error: NestedApiErrorType | ApiErrorType | string | unknown,\n): ApiErrorType => {\n    switch (typeof error) {\n        case 'string':\n            return {\n                ...initialApiError,\n                message: error,\n            };\n        case 'object':\n            return {\n                ...initialApiError,\n                ...((error as NestedApiErrorType)?.message || error),\n                message:\n                    (error as NestedApiErrorType)?.message?.message ||\n                    (error as ApiErrorType)?.message,\n                ...((error as ApiErrorType)?.statusCode && {\n                    statusCode: (error as ApiErrorType).statusCode,\n                }),\n            };\n        default:\n            return initialApiError;\n    }\n};\n","export const PREVIEW_ID_PREFIX = 'preview_';\nexport const HOMEPAGE_SLUG = 'homepage';\n// export const BLOG_PREFIX = 'blog';\n","export const objectEntries = <Keys extends string | number | symbol, Value>(obj: {\n    [K in Keys]?: Value;\n}): Array<[Keys, Value]> => {\n    // Object.entries typings error\n    // @ts-ignore\n    return Object.entries(obj);\n};\n\nexport const objectHas = (obj: Record<string, unknown>, key: string | number) =>\n    Object.prototype.hasOwnProperty.call(obj, key);\n","import {GetServerSidePropsContext, GetStaticPropsContext} from 'next';\n\nimport {objectHas} from './object';\nimport {SeoList} from '../types/api';\nimport {PREVIEW_ID_PREFIX} from './consts';\n\nexport type QueryParamsType = Record<string,\n    string | boolean | Date | number | undefined | null>;\n\nexport const createUrl = (baseUrl: string | undefined, path: string) => {\n    if (/https?:/.test(path)) {\n        return path;\n    }\n    return [\n        (baseUrl || process.env.NEXT_PUBLIC_API || '').replace(/\\/$/, ''),\n        path.replace(/^\\//, ''),\n    ].join('/');\n};\n\nexport const resolveUrl = (\n    baseUrl: string | undefined,\n    path: string,\n    queryParams: QueryParamsType = {},\n    bindParams: QueryParamsType = {},\n) => {\n    const url = new URL(createUrl(baseUrl, bindUrlParams(path, bindParams)));\n    if (queryParams) {\n        Object.entries(queryParams).forEach(([name, value]) => {\n            if (value !== undefined && value !== null) {\n                url.searchParams.append(name, value.toString());\n            }\n        });\n    }\n    return url.href;\n};\n\nexport const bindUrlParams = (route: string, params: QueryParamsType) => {\n    return route.replace(/:(\\w+)/g, (_, key) =>\n        objectHas(params, key) ? params[key]?.toString() || '' : '',\n    );\n};\n\nexport const slugToData = (\n    ctx: GetStaticPropsContext,\n    items: SeoList,\n    defaultSlug?: string,\n    blockList?: string[],\n) => {\n    let slug = `${ctx.params?.slug}`;\n    if ((!ctx.params?.slug && !defaultSlug) || (blockList || []).includes(slug)) {\n        return undefined;\n    }\n    if (!ctx.params?.slug && defaultSlug) {\n        slug = `${defaultSlug}`;\n    }\n\n    if (slug.startsWith(PREVIEW_ID_PREFIX)) {\n        const [, id] = slug.split('_');\n        return {\n            slug: '',\n            id: Number(id),\n        };\n    }\n    return items.find((p) => p.slug === slug);\n};\n\nexport const absoluteUrl = (...parts: string[]) => {\n    return [`${process.env.NEXT_PUBLIC_URL}`, ...parts]\n        .filter((p) => !!p)\n        .map((p) => p.replace(/^\\//, '').replace(/\\/$/, ''))\n        .join('/');\n};\n\nexport const queryPage = (ctx: GetServerSidePropsContext) => {\n    const page = queryParam(ctx, 'page', '1');\n    return /\\d+/.test(page) ? Number(page) : 1;\n};\n\nexport const queryParam = <T>(\n    ctx: GetServerSidePropsContext,\n    key: string,\n    defaultValue: T,\n) => {\n    return ctx.query?.[key] ? `${ctx.query?.[key]}` : defaultValue;\n};\n","import {createUrl} from \"./url\";\n\nexport type ImageDataType = {\n    src: string;\n    alt: string;\n};\n\nexport type StrapiImageType = {\n    data?: {\n        attributes: {\n            url?: string | null;\n            alternativeText?: string | null;\n        }\n    }\n}\n\n\nexport const imageProps = (\n    image: StrapiImageType | StrapiImageType['data'] | undefined | null,\n): ImageDataType => {\n    // @ts-ignore\n    const attributes = image?.data?.attributes || image?.attributes;\n    const src: string = attributes?.url || '';\n    return {\n        src: src.startsWith('http') ? src : createUrl(process.env.NEXT_PUBLIC_MEDIA_URL, src),\n        alt: attributes?.alternativeText || '',\n    };\n};\n","export function safeJsonParse(string: string, returnRaw?: boolean) {\n    try {\n        return JSON.parse(string);\n    } catch (err) {\n        return returnRaw ? string : {};\n    }\n}\n","export const formatNumber = (value: number | string) =>\n    Number(`${value}`).toLocaleString('en', {useGrouping: true});\n\nexport const formatPrice = (value: number | string) => `$${formatNumber(value)}`;\n\nexport const minMax = (min: number, value: number, max: number) =>\n    Math.max(min, Math.min(value, max));\n","import {HOMEPAGE_SLUG} from './consts';\n\n\nexport function linkTarget(target = '_self') {\n    return target[0] === '_' ? target : `_${target}`;\n}\n\n\nexport function linkRel(target: string) {\n    if (linkTarget(target) === '_blank') {\n        return {rel: 'nofollow noopener noreferrer'};\n    }\n    return {};\n}\n\nexport function slugToUrl(seo: { slug: string }, prefix?: string) {\n    const slug = [prefix, HOMEPAGE_SLUG === seo.slug ? '' : seo.slug]\n        .filter((e) => !!e)\n        .join('/');\n    return `/${slug}`;\n}\n\n\n","import {useEffect, useRef} from 'react';\n\ntype Opt<R> = R | undefined;\n\nexport function useCurrentRef<T>(value?: Opt<T>) {\n    const valueRef = useRef<Opt<T>>(value);\n\n    useEffect(() => {\n        valueRef.current = value;\n    }, [value]);\n\n    return valueRef;\n}\n","import {useRef, useState} from 'react';\n\nexport function useRefState<T>(\n    initValue: T,\n): [T, {current: T}, (val: T) => void] {\n    const valueRef = useRef<T>(initValue);\n    const [value, setValue] = useState<T>(initValue);\n\n    return [\n        value,\n        valueRef,\n        (val: T) => {\n            valueRef.current = val;\n            setValue(val);\n        },\n    ];\n}\n","import {StringMap} from 'i18next';\nimport {useTranslation} from 'next-i18next';\n\nexport const useScopeTranslation = (namespace: string, ...scopes: string[]) => {\n    const {t} = useTranslation(namespace);\n    const finalScope = scopes && scopes.length ? `${scopes.join('.')}.` : '';\n    return (key: string, option?: StringMap) => t(`${finalScope}${key}`, option);\n};\n"],"names":["initialApiError","statusCode","error","message","parseApiError","PREVIEW_ID_PREFIX","HOMEPAGE_SLUG","objectEntries","obj","Object","entries","objectHas","key","prototype","hasOwnProperty","call","createUrl","baseUrl","path","test","process","env","NEXT_PUBLIC_API","replace","join","resolveUrl","queryParams","bindParams","url","URL","bindUrlParams","forEach","name","value","undefined","searchParams","append","toString","href","route","params","_","slugToData","ctx","items","defaultSlug","blockList","slug","includes","startsWith","id","split","Number","find","p","absoluteUrl","parts","NEXT_PUBLIC_URL","filter","map","queryPage","page","queryParam","defaultValue","query","imageProps","image","attributes","data","src","NEXT_PUBLIC_MEDIA_URL","alt","alternativeText","safeJsonParse","string","returnRaw","JSON","parse","err","formatNumber","toLocaleString","useGrouping","formatPrice","minMax","min","max","Math","linkTarget","target","linkRel","rel","slugToUrl","seo","prefix","e","useCurrentRef","valueRef","useRef","useEffect","current","useRefState","initValue","setValue","useState","val","useScopeTranslation","namespace","scopes","t","useTranslation","finalScope","length","option"],"mappings":"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"}