{"version":3,"file":"js/generated/BlogPost-a5a3a44ebb69ba4cb1b4.js","mappings":"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","sources":["webpack://sniffspot/./frontend/src/consts/platform.consts.js","webpack://sniffspot/./frontend/src/helpers/firebase.js","webpack://sniffspot/./frontend/src/helpers/firstClick.js","webpack://sniffspot/./frontend/src/rails/bundles/hooks/useGetBlogPosts.js","webpack://sniffspot/./frontend/src/rails/bundles/hooks/useMobileScreen.jsx","webpack://sniffspot/./frontend/src/rails/bundles/Blog/components/BlogPost.client.jsx","webpack://sniffspot/./frontend/src/rails/packs/generated/BlogPost.js","webpack://sniffspot/./frontend/src/utils.js","webpack://sniffspot/./node_modules/@apollo/client/react/hooks/internal/useIsomorphicLayoutEffect.js","webpack://sniffspot/./node_modules/@apollo/client/react/hooks/useLazyQuery.js"],"sourcesContent":["export const PLATFORM = {\n    IOS: 'IOS',\n    ANDROID: 'ANDROID',\n    DESKTOP: 'DESKTOP',\n};\n","// Import the functions you need from the SDKs you need\nimport { initializeApp } from 'firebase/app';\nimport { getAnalytics } from 'firebase/analytics';\nimport { getPerformance } from 'firebase/performance';\n// TODO: Add SDKs for Firebase products that you want to use\n// https://firebase.google.com/docs/web/setup#available-libraries\n\n// Your web app's Firebase configuration\n// For Firebase JS SDK v7.20.0 and later, measurementId is optional\nconst firebaseConfig = {\n    apiKey: 'AIzaSyAaLCqfgJam5xganH4Mjpp3f1O8Z8vJw1k',\n    authDomain: 'sniffspot-1536749561931.firebaseapp.com',\n    databaseURL: 'https://sniffspot-1536749561931.firebaseio.com',\n    projectId: 'sniffspot-1536749561931',\n    storageBucket: 'sniffspot-1536749561931.appspot.com',\n    messagingSenderId: '615270541288',\n    appId: '1:615270541288:web:97cb125114184f97cfa65d',\n    measurementId: 'G-G6KD383WXF',\n};\n\n// Initialize Firebase\nconst app = initializeApp(firebaseConfig);\n\n// Initialize Analytics and get a reference to the service\nexport const analytics = getAnalytics(app);\n\n// Initialize Performance Monitoring and get a reference to the service\nexport const perf = getPerformance(app);\n","import { COOKIE_PARAM_NAME } from '../consts/cookies.consts';\nimport CookieService from '../services/cookie.service';\n\nexport const setFirstClick = () => {\n    const isWindow = typeof window !== undefined;\n\n    if (!isWindow) {\n        return;\n    }\n\n    const hasFirstClick = CookieService.get(COOKIE_PARAM_NAME.SNIFF_FIRST_CLICK);\n\n    if (hasFirstClick) {\n        return;\n    }\n\n    const firstClick = window.document.referrer || window.location.href;\n    CookieService.set(COOKIE_PARAM_NAME.SNIFF_FIRST_CLICK, firstClick);\n};\n","import { gql, useLazyQuery } from '@apollo/client';\n\nconst BLOG_POSTS_QUERY = gql`\n    query blogPosts($authorSlug: String, $categorySlug: String, $page: Int, $limit: Int) {\n        blogPosts(authorSlug: $authorSlug, categorySlug: $categorySlug, page: $page, limit: $limit) {\n            id\n            slug\n            title\n            thumbnail\n            description\n        }\n    }\n`;\n\nexport default function useGetBlogPosts() {\n    const [getBlogPosts, { data, loading }] = useLazyQuery(BLOG_POSTS_QUERY);\n    return { getBlogPosts, data, loading };\n}\n","import { useCallback, useEffect, useState } from 'react';\n\nexport const MOBILE_SCREEN = '(min-width: 0px) and (max-width: 768px)';\n\nexport default function useMobileScreen() {\n    const [isMobile, setIsMobile] = useState(true);\n\n    const handleResize = useCallback((e) => {\n        const window = e.currentTarget;\n        const newWidth = window.matchMedia(MOBILE_SCREEN).matches;\n        if (isMobile !== newWidth) {\n            setIsMobile(newWidth);\n        }\n    });\n\n    useEffect(() => {\n        setIsMobile(window.matchMedia(MOBILE_SCREEN).matches);\n    }, []);\n\n    useEffect(() => {\n        window.addEventListener('resize', handleResize);\n        return () => {\n            window.removeEventListener('resize', handleResize);\n        };\n    }, [handleResize]);\n\n    return isMobile;\n}\n","import '../../../../../styles.scss';\nimport React, { useEffect, useState } from 'react';\nimport { AWS_STATIC_ASSET_HOST } from '../../../../consts/env.consts';\nimport { ApolloClient, ApolloProvider, InMemoryCache } from '@apollo/client';\nimport { setFirstClick } from '../../../../helpers/firstClick';\nimport useGetBlogPostsSSR from '../../hooks/useGetBlogPosts';\nimport useMobileScreen from '../../hooks/useMobileScreen';\nimport BlogPostSSR from '../../../../pages/blog/post';\nimport '../../../../helpers/firebase';\n\n// eslint-disable-next-line no-undef\n__webpack_public_path__ = `${AWS_STATIC_ASSET_HOST}/packs/`;\n\nconst client = new ApolloClient({\n    uri: '/graphql',\n    cache: new InMemoryCache(),\n});\n\nconst BlogPost = (props) => {\n    const isMobileSSR = useMobileScreen();\n\n    useEffect(() => {\n        setFirstClick();\n    }, []);\n\n    return (\n        <ApolloProvider client={client}>\n            <BlogPostSSR\n                {...{ ...props, useGetBlogPostsSSR, isMobileSSR, useEffectSSR: useEffect, useStateSSR: useState }}\n            />\n        </ApolloProvider>\n    );\n};\n\nexport default BlogPost;\n","import ReactOnRails from 'react-on-rails';\nimport BlogPost from '../../bundles/Blog/components/BlogPost.client.jsx';\n\nReactOnRails.register({BlogPost});\n","import { PLATFORM } from './consts/platform.consts';\nimport CookieService from './services/cookie.service';\nimport { COOKIE_PARAM_NAME } from './consts/cookies.consts';\n\nexport const loadUserFromStorage = () => {\n    try {\n        let user = CookieService.get(COOKIE_PARAM_NAME.USER);\n        if (user === null) {\n            return {};\n        }\n        return JSON.parse(user);\n    } catch (err) {\n        return undefined;\n    }\n};\n\nexport function getIdFromSlug(slug) {\n    return slug.split('-').pop();\n}\n\nexport function validateEmail(email) {\n    const re =\n        /^(([^<>()\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n    return re.test(String(email).toLowerCase());\n}\n\nexport function getBannerStatus() {\n    let isSmartBannerShow = true;\n    if (CookieService.get(COOKIE_PARAM_NAME.SMARTBANNER_INSTALLED)) {\n        isSmartBannerShow = false;\n    } else {\n        if (CookieService.get(COOKIE_PARAM_NAME.SMARTBANNER_CLOSED)) {\n            isSmartBannerShow = false;\n        }\n    }\n    return isSmartBannerShow;\n}\n\nexport function checkPlatform() {\n    if (navigator.userAgent.match(/iPhone/) || navigator.userAgent.match(/iPad/)) {\n        return PLATFORM.IOS;\n    }\n\n    if (navigator.userAgent.match(/Android/)) {\n        return PLATFORM.ANDROID;\n    }\n\n    return PLATFORM.DESKTOP;\n}\n\nexport function isNumeric(n) {\n    return !isNaN(parseFloat(n)) && isFinite(n);\n}\n\nexport function resizeTextarea(e) {\n    e.style.height = e.scrollHeight + 'px';\n}\n\nexport function smartBannerShow() {\n    if (typeof window === 'undefined') {\n        return false;\n    }\n\n    const platform = checkPlatform();\n    const hasCookie = CookieService.get(COOKIE_PARAM_NAME.SNIFF_APP_DOWNLOAD_BANNER);\n    const myUrl = typeof window === 'undefined' ? '' : window.location.pathname;\n    const ua = typeof window === 'undefined' ? '' : window.navigator.userAgent;\n    const isReserve = myUrl.startsWith('/reserve/');\n    const isSafari = ua.match(/safari/i) && !ua.match(/chrome/i) && !ua.match(/chromium/i);\n\n    if ((platform === PLATFORM.ANDROID || (platform === PLATFORM.IOS && !isSafari)) && !hasCookie && !isReserve) {\n        return true;\n    }\n\n    return false;\n}\n","import * as React from \"rehackt\";\nimport { canUseDOM } from \"../../../utilities/index.js\";\n// use canUseDOM here instead of canUseLayoutEffect because we want to be able\n// to use useLayoutEffect in our jest tests. useLayoutEffect seems to work fine\n// in useSuspenseQuery tests, but to honor the original comment about the\n// warnings for useSyncExternalStore implementation, canUseLayoutEffect is left\n// alone.\nexport var useIsomorphicLayoutEffect = canUseDOM ? React.useLayoutEffect : React.useEffect;\n//# sourceMappingURL=useIsomorphicLayoutEffect.js.map","import { __assign } from \"tslib\";\nimport * as React from \"rehackt\";\nimport { mergeOptions } from \"../../utilities/index.js\";\nimport { createMakeWatchQueryOptions, getDefaultFetchPolicy, getObsQueryOptions, toQueryResult, useQueryInternals, } from \"./useQuery.js\";\nimport { useIsomorphicLayoutEffect } from \"./internal/useIsomorphicLayoutEffect.js\";\n// The following methods, when called will execute the query, regardless of\n// whether the useLazyQuery execute function was called before.\nvar EAGER_METHODS = [\n    \"refetch\",\n    \"reobserve\",\n    \"fetchMore\",\n    \"updateQuery\",\n    \"startPolling\",\n    \"stopPolling\",\n    \"subscribeToMore\",\n];\n/**\n * A hook for imperatively executing queries in an Apollo application, e.g. in response to user interaction.\n *\n * > Refer to the [Queries - Manual execution with useLazyQuery](https://www.apollographql.com/docs/react/data/queries#manual-execution-with-uselazyquery) section for a more in-depth overview of `useLazyQuery`.\n *\n * @example\n * ```jsx\n * import { gql, useLazyQuery } from \"@apollo/client\";\n *\n * const GET_GREETING = gql`\n *   query GetGreeting($language: String!) {\n *     greeting(language: $language) {\n *       message\n *     }\n *   }\n * `;\n *\n * function Hello() {\n *   const [loadGreeting, { called, loading, data }] = useLazyQuery(\n *     GET_GREETING,\n *     { variables: { language: \"english\" } }\n *   );\n *   if (called && loading) return <p>Loading ...</p>\n *   if (!called) {\n *     return <button onClick={() => loadGreeting()}>Load greeting</button>\n *   }\n *   return <h1>Hello {data.greeting.message}!</h1>;\n * }\n * ```\n * @since 3.0.0\n *\n * @param query - A GraphQL query document parsed into an AST by `gql`.\n * @param options - Default options to control how the query is executed.\n * @returns A tuple in the form of `[execute, result]`\n */\nexport function useLazyQuery(query, options) {\n    var _a;\n    var execOptionsRef = React.useRef(void 0);\n    var optionsRef = React.useRef(void 0);\n    var queryRef = React.useRef(void 0);\n    var merged = mergeOptions(options, execOptionsRef.current || {});\n    var document = (_a = merged === null || merged === void 0 ? void 0 : merged.query) !== null && _a !== void 0 ? _a : query;\n    // Use refs to track options and the used query to ensure the `execute`\n    // function remains referentially stable between renders.\n    optionsRef.current = options;\n    queryRef.current = document;\n    var queryHookOptions = __assign(__assign({}, merged), { skip: !execOptionsRef.current });\n    var _b = useQueryInternals(document, queryHookOptions), obsQueryFields = _b.obsQueryFields, useQueryResult = _b.result, client = _b.client, resultData = _b.resultData, observable = _b.observable, onQueryExecuted = _b.onQueryExecuted;\n    var initialFetchPolicy = observable.options.initialFetchPolicy ||\n        getDefaultFetchPolicy(queryHookOptions.defaultOptions, client.defaultOptions);\n    var forceUpdateState = React.useReducer(function (tick) { return tick + 1; }, 0)[1];\n    // We use useMemo here to make sure the eager methods have a stable identity.\n    var eagerMethods = React.useMemo(function () {\n        var eagerMethods = {};\n        var _loop_1 = function (key) {\n            var method = obsQueryFields[key];\n            eagerMethods[key] = function () {\n                if (!execOptionsRef.current) {\n                    execOptionsRef.current = Object.create(null);\n                    // Only the first time populating execOptionsRef.current matters here.\n                    forceUpdateState();\n                }\n                // @ts-expect-error this is just too generic to type\n                return method.apply(this, arguments);\n            };\n        };\n        for (var _i = 0, EAGER_METHODS_1 = EAGER_METHODS; _i < EAGER_METHODS_1.length; _i++) {\n            var key = EAGER_METHODS_1[_i];\n            _loop_1(key);\n        }\n        return eagerMethods;\n    }, [forceUpdateState, obsQueryFields]);\n    var called = !!execOptionsRef.current;\n    var result = React.useMemo(function () { return (__assign(__assign(__assign({}, useQueryResult), eagerMethods), { called: called })); }, [useQueryResult, eagerMethods, called]);\n    var execute = React.useCallback(function (executeOptions) {\n        execOptionsRef.current =\n            executeOptions ? __assign(__assign({}, executeOptions), { fetchPolicy: executeOptions.fetchPolicy || initialFetchPolicy }) : {\n                fetchPolicy: initialFetchPolicy,\n            };\n        var options = mergeOptions(optionsRef.current, __assign({ query: queryRef.current }, execOptionsRef.current));\n        var promise = executeQuery(resultData, observable, client, document, __assign(__assign({}, options), { skip: false }), onQueryExecuted).then(function (queryResult) { return Object.assign(queryResult, eagerMethods); });\n        // Because the return value of `useLazyQuery` is usually floated, we need\n        // to catch the promise to prevent unhandled rejections.\n        promise.catch(function () { });\n        return promise;\n    }, [\n        client,\n        document,\n        eagerMethods,\n        initialFetchPolicy,\n        observable,\n        resultData,\n        onQueryExecuted,\n    ]);\n    var executeRef = React.useRef(execute);\n    useIsomorphicLayoutEffect(function () {\n        executeRef.current = execute;\n    });\n    var stableExecute = React.useCallback(function () {\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        return executeRef.current.apply(executeRef, args);\n    }, []);\n    return [stableExecute, result];\n}\nfunction executeQuery(resultData, observable, client, currentQuery, options, onQueryExecuted) {\n    var query = options.query || currentQuery;\n    var watchQueryOptions = createMakeWatchQueryOptions(client, query, options, false)(observable);\n    var concast = observable.reobserveAsConcast(getObsQueryOptions(observable, client, options, watchQueryOptions));\n    onQueryExecuted(watchQueryOptions);\n    return new Promise(function (resolve) {\n        var result;\n        // Subscribe to the concast independently of the ObservableQuery in case\n        // the component gets unmounted before the promise resolves. This prevents\n        // the concast from terminating early and resolving with `undefined` when\n        // there are no more subscribers for the concast.\n        concast.subscribe({\n            next: function (value) {\n                result = value;\n            },\n            error: function () {\n                resolve(toQueryResult(observable.getCurrentResult(), resultData.previousData, observable, client));\n            },\n            complete: function () {\n                resolve(toQueryResult(observable[\"maskResult\"](result), resultData.previousData, observable, client));\n            },\n        });\n    });\n}\n//# sourceMappingURL=useLazyQuery.js.map"],"names":["PLATFORM","IOS","ANDROID","DESKTOP","app","initializeApp","apiKey","authDomain","databaseURL","projectId","storageBucket","messagingSenderId","appId","measurementId","getAnalytics","getPerformance","setFirstClick","undefined","window","CookieService","get","COOKIE_PARAM_NAME","SNIFF_FIRST_CLICK","firstClick","document","referrer","location","href","set","BLOG_POSTS_QUERY","gql","_templateObject","useGetBlogPosts","_useLazyQuery2","_slicedToArray","useLazyQuery","getBlogPosts","_useLazyQuery2$","data","loading","MOBILE_SCREEN","useMobileScreen","_useState2","useState","isMobile","setIsMobile","handleResize","useCallback","e","newWidth","currentTarget","matchMedia","matches","useEffect","addEventListener","removeEventListener","__webpack_public_path__","concat","AWS_STATIC_ASSET_HOST","client","ApolloClient","uri","cache","InMemoryCache","props","isMobileSSR","React","ApolloProvider","BlogPostSSR","_objectSpread","useGetBlogPostsSSR","useEffectSSR","useStateSSR","ReactOnRails","BlogPost","loadUserFromStorage","user","USER","JSON","parse","err","getIdFromSlug","slug","split","pop","validateEmail","email","test","String","toLowerCase","checkPlatform","navigator","userAgent","match","resizeTextarea","style","height","scrollHeight","smartBannerShow","platform","hasCookie","SNIFF_APP_DOWNLOAD_BANNER","myUrl","pathname","ua","isReserve","startsWith","isSafari","useIsomorphicLayoutEffect","EAGER_METHODS","query","options","_a","execOptionsRef","optionsRef","queryRef","merged","current","queryHookOptions","skip","_b","obsQueryFields","useQueryResult","result","resultData","observable","onQueryExecuted","initialFetchPolicy","defaultOptions","forceUpdateState","tick","eagerMethods","_loop_1","key","method","Object","create","apply","this","arguments","_i","EAGER_METHODS_1","length","called","execute","executeOptions","fetchPolicy","promise","currentQuery","watchQueryOptions","concast","reobserveAsConcast","Promise","resolve","subscribe","next","value","error","getCurrentResult","previousData","complete","executeQuery","then","queryResult","assign","catch","executeRef","stableExecute","args"],"sourceRoot":""}