{"version":3,"file":"js/generated/BlogPost-46f762123a5af2c1d271.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 \n \n \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

Loading ...

\n * if (!called) {\n * return \n * }\n * return

Hello {data.greeting.message}!

;\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":""}