{"version":3,"file":"component---src-templates-post-tsx-9295be7df39c8756d508.js","mappings":"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","sources":["webpack://atlas/./src/hooks/useResizedAvatarUrl.ts","webpack://atlas/./node_modules/react-intersection-observer/react-intersection-observer.modern.mjs","webpack://atlas/./src/components/pages/Post/Author/Header/Header.styles.ts","webpack://atlas/./src/components/pages/Post/Author/Header/Header.tsx","webpack://atlas/./src/components/pages/Post/Author/Footer/Footer.styles.ts","webpack://atlas/./src/components/pages/Post/Author/Footer/Footer.tsx","webpack://atlas/./src/components/pages/Post/ExploreBanner/Default.styles.ts","webpack://atlas/./src/components/pages/Post/ExploreBanner/Default.tsx","webpack://atlas/./src/components/pages/Post/ExploreBanner/StickyExplore.styles.ts","webpack://atlas/./src/components/pages/Post/ExploreBanner/StickyExplore.tsx","webpack://atlas/./src/components/core/PostImage/PostImage.styles.ts","webpack://atlas/./src/components/core/PostImage/PostImage.tsx","webpack://atlas/./src/templates/Post.styles.ts","webpack://atlas/./src/templates/Post.tsx"],"sourcesContent":["import { useEffect, useState } from \"react\"\n\nimport queryString from \"query-string\"\n\nconst getResizedAvatarUrl = (url: string, size: number, dpr: number = 1) => {\n const parsedUrl = queryString.parseUrl(url)\n parsedUrl.query.s = (size * dpr).toString(10)\n\n return queryString.stringifyUrl(parsedUrl)\n}\n\nexport const useResizedAvatarUrl = (url: string, size: number) => {\n const initialResizedAvatarUrl = getResizedAvatarUrl(url, size)\n\n const [resizedAvatarUrl, setResizedAvatarUrl] = useState(\n initialResizedAvatarUrl\n )\n\n useEffect(() => {\n if (typeof window !== \"undefined\") {\n setResizedAvatarUrl(\n getResizedAvatarUrl(url, size, window.devicePixelRatio)\n )\n }\n }, [size, url])\n\n return resizedAvatarUrl\n}\n","import * as React from 'react';\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nconst observerMap = new Map();\nconst RootIds = new WeakMap();\nlet rootId = 0;\nlet unsupportedValue = undefined;\n/**\r\n * What should be the default behavior if the IntersectionObserver is unsupported?\r\n * Ideally the polyfill has been loaded, you can have the following happen:\r\n * - `undefined`: Throw an error\r\n * - `true` or `false`: Set the `inView` value to this regardless of intersection state\r\n * **/\n\nfunction defaultFallbackInView(inView) {\n unsupportedValue = inView;\n}\n/**\r\n * Generate a unique ID for the root element\r\n * @param root\r\n */\n\nfunction getRootId(root) {\n if (!root) return '0';\n if (RootIds.has(root)) return RootIds.get(root);\n rootId += 1;\n RootIds.set(root, rootId.toString());\n return RootIds.get(root);\n}\n/**\r\n * Convert the options to a string Id, based on the values.\r\n * Ensures we can reuse the same observer when observing elements with the same options.\r\n * @param options\r\n */\n\n\nfunction optionsToId(options) {\n return Object.keys(options).sort().filter(key => options[key] !== undefined).map(key => {\n return `${key}_${key === 'root' ? getRootId(options.root) : options[key]}`;\n }).toString();\n}\n\nfunction createObserver(options) {\n // Create a unique ID for this observer instance, based on the root, root margin and threshold.\n let id = optionsToId(options);\n let instance = observerMap.get(id);\n\n if (!instance) {\n // Create a map of elements this observer is going to observe. Each element has a list of callbacks that should be triggered, once it comes into view.\n const elements = new Map();\n let thresholds;\n const observer = new IntersectionObserver(entries => {\n entries.forEach(entry => {\n var _elements$get;\n\n // While it would be nice if you could just look at isIntersecting to determine if the component is inside the viewport, browsers can't agree on how to use it.\n // -Firefox ignores `threshold` when considering `isIntersecting`, so it will never be false again if `threshold` is > 0\n const inView = entry.isIntersecting && thresholds.some(threshold => entry.intersectionRatio >= threshold); // @ts-ignore support IntersectionObserver v2\n\n if (options.trackVisibility && typeof entry.isVisible === 'undefined') {\n // The browser doesn't support Intersection Observer v2, falling back to v1 behavior.\n // @ts-ignore\n entry.isVisible = inView;\n }\n\n (_elements$get = elements.get(entry.target)) == null ? void 0 : _elements$get.forEach(callback => {\n callback(inView, entry);\n });\n });\n }, options); // Ensure we have a valid thresholds array. If not, use the threshold from the options\n\n thresholds = observer.thresholds || (Array.isArray(options.threshold) ? options.threshold : [options.threshold || 0]);\n instance = {\n id,\n observer,\n elements\n };\n observerMap.set(id, instance);\n }\n\n return instance;\n}\n/**\r\n * @param element - DOM Element to observe\r\n * @param callback - Callback function to trigger when intersection status changes\r\n * @param options - Intersection Observer options\r\n * @param fallbackInView - Fallback inView value.\r\n * @return Function - Cleanup function that should be triggered to unregister the observer\r\n */\n\n\nfunction observe(element, callback, options = {}, fallbackInView = unsupportedValue) {\n if (typeof window.IntersectionObserver === 'undefined' && fallbackInView !== undefined) {\n const bounds = element.getBoundingClientRect();\n callback(fallbackInView, {\n isIntersecting: fallbackInView,\n target: element,\n intersectionRatio: typeof options.threshold === 'number' ? options.threshold : 0,\n time: 0,\n boundingClientRect: bounds,\n intersectionRect: bounds,\n rootBounds: bounds\n });\n return () => {// Nothing to cleanup\n };\n } // An observer with the same options can be reused, so lets use this fact\n\n\n const {\n id,\n observer,\n elements\n } = createObserver(options); // Register the callback listener for this element\n\n let callbacks = elements.get(element) || [];\n\n if (!elements.has(element)) {\n elements.set(element, callbacks);\n }\n\n callbacks.push(callback);\n observer.observe(element);\n return function unobserve() {\n // Remove the callback from the callback list\n callbacks.splice(callbacks.indexOf(callback), 1);\n\n if (callbacks.length === 0) {\n // No more callback exists for element, so destroy it\n elements.delete(element);\n observer.unobserve(element);\n }\n\n if (elements.size === 0) {\n // No more elements are being observer by this instance, so destroy it\n observer.disconnect();\n observerMap.delete(id);\n }\n };\n}\n\nconst _excluded = [\"children\", \"as\", \"triggerOnce\", \"threshold\", \"root\", \"rootMargin\", \"onChange\", \"skip\", \"trackVisibility\", \"delay\", \"initialInView\", \"fallbackInView\"];\n\nfunction isPlainChildren(props) {\n return typeof props.children !== 'function';\n}\n/**\r\n ## Render props\r\n\n To use the `` component, you pass it a function. It will be called\r\n whenever the state changes, with the new value of `inView`. In addition to the\r\n `inView` prop, children also receive a `ref` that should be set on the\r\n containing DOM element. This is the element that the IntersectionObserver will\r\n monitor.\r\n\n If you need it, you can also access the\r\n [`IntersectionObserverEntry`](https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry)\r\n on `entry`, giving you access to all the details about the current intersection\r\n state.\r\n\n ```jsx\r\n import { InView } from 'react-intersection-observer';\r\n\n const Component = () => (\r\n \r\n {({ inView, ref, entry }) => (\r\n
\r\n

{`Header inside viewport ${inView}.`}

\r\n
\r\n )}\r\n
\r\n );\r\n\n export default Component;\r\n ```\r\n\n ## Plain children\r\n\n You can pass any element to the ``, and it will handle creating the\r\n wrapping DOM element. Add a handler to the `onChange` method, and control the\r\n state in your own component. Any extra props you add to `` will be\r\n passed to the HTML element, allowing you set the `className`, `style`, etc.\r\n\n ```jsx\r\n import { InView } from 'react-intersection-observer';\r\n\n const Component = () => (\r\n console.log('Inview:', inView)}>\r\n

Plain children are always rendered. Use onChange to monitor state.

\r\n
\r\n );\r\n\n export default Component;\r\n ```\r\n */\n\n\nclass InView extends React.Component {\n constructor(props) {\n super(props);\n this.node = null;\n this._unobserveCb = null;\n\n this.handleNode = node => {\n if (this.node) {\n // Clear the old observer, before we start observing a new element\n this.unobserve();\n\n if (!node && !this.props.triggerOnce && !this.props.skip) {\n // Reset the state if we get a new node, and we aren't ignoring updates\n this.setState({\n inView: !!this.props.initialInView,\n entry: undefined\n });\n }\n }\n\n this.node = node ? node : null;\n this.observeNode();\n };\n\n this.handleChange = (inView, entry) => {\n if (inView && this.props.triggerOnce) {\n // If `triggerOnce` is true, we should stop observing the element.\n this.unobserve();\n }\n\n if (!isPlainChildren(this.props)) {\n // Store the current State, so we can pass it to the children in the next render update\n // There's no reason to update the state for plain children, since it's not used in the rendering.\n this.setState({\n inView,\n entry\n });\n }\n\n if (this.props.onChange) {\n // If the user is actively listening for onChange, always trigger it\n this.props.onChange(inView, entry);\n }\n };\n\n this.state = {\n inView: !!props.initialInView,\n entry: undefined\n };\n }\n\n componentDidUpdate(prevProps) {\n // If a IntersectionObserver option changed, reinit the observer\n if (prevProps.rootMargin !== this.props.rootMargin || prevProps.root !== this.props.root || prevProps.threshold !== this.props.threshold || prevProps.skip !== this.props.skip || prevProps.trackVisibility !== this.props.trackVisibility || prevProps.delay !== this.props.delay) {\n this.unobserve();\n this.observeNode();\n }\n }\n\n componentWillUnmount() {\n this.unobserve();\n this.node = null;\n }\n\n observeNode() {\n if (!this.node || this.props.skip) return;\n const {\n threshold,\n root,\n rootMargin,\n trackVisibility,\n delay,\n fallbackInView\n } = this.props;\n this._unobserveCb = observe(this.node, this.handleChange, {\n threshold,\n root,\n rootMargin,\n // @ts-ignore\n trackVisibility,\n // @ts-ignore\n delay\n }, fallbackInView);\n }\n\n unobserve() {\n if (this._unobserveCb) {\n this._unobserveCb();\n\n this._unobserveCb = null;\n }\n }\n\n render() {\n if (!isPlainChildren(this.props)) {\n const {\n inView,\n entry\n } = this.state;\n return this.props.children({\n inView,\n entry,\n ref: this.handleNode\n });\n }\n\n const _this$props = this.props,\n {\n children,\n as\n } = _this$props,\n props = _objectWithoutPropertiesLoose(_this$props, _excluded);\n\n return React.createElement(as || 'div', _extends({\n ref: this.handleNode\n }, props), children);\n }\n\n}\n\n/**\r\n * React Hooks make it easy to monitor the `inView` state of your components. Call\r\n * the `useInView` hook with the (optional) [options](#options) you need. It will\r\n * return an array containing a `ref`, the `inView` status and the current\r\n * [`entry`](https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry).\r\n * Assign the `ref` to the DOM element you want to monitor, and the hook will\r\n * report the status.\r\n *\r\n * @example\r\n * ```jsx\r\n * import React from 'react';\r\n * import { useInView } from 'react-intersection-observer';\r\n *\r\n * const Component = () => {\r\n * const { ref, inView, entry } = useInView({\r\n * threshold: 0,\r\n * });\r\n *\r\n * return (\r\n *
\r\n *

{`Header inside viewport ${inView}.`}

\r\n *
\r\n * );\r\n * };\r\n * ```\r\n */\n\nfunction useInView({\n threshold,\n delay,\n trackVisibility,\n rootMargin,\n root,\n triggerOnce,\n skip,\n initialInView,\n fallbackInView,\n onChange\n} = {}) {\n var _state$entry;\n\n const [ref, setRef] = React.useState(null);\n const callback = React.useRef();\n const [state, setState] = React.useState({\n inView: !!initialInView,\n entry: undefined\n }); // Store the onChange callback in a `ref`, so we can access the latest instance\n // inside the `useEffect`, but without triggering a rerender.\n\n callback.current = onChange;\n React.useEffect(() => {\n // Ensure we have node ref, and that we shouldn't skip observing\n if (skip || !ref) return;\n let unobserve = observe(ref, (inView, entry) => {\n setState({\n inView,\n entry\n });\n if (callback.current) callback.current(inView, entry);\n\n if (entry.isIntersecting && triggerOnce && unobserve) {\n // If it should only trigger once, unobserve the element after it's inView\n unobserve();\n unobserve = undefined;\n }\n }, {\n root,\n rootMargin,\n threshold,\n // @ts-ignore\n trackVisibility,\n // @ts-ignore\n delay\n }, fallbackInView);\n return () => {\n if (unobserve) {\n unobserve();\n }\n };\n }, // We break the rule here, because we aren't including the actual `threshold` variable\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [// If the threshold is an array, convert it to a string, so it won't change between renders.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n Array.isArray(threshold) ? threshold.toString() : threshold, ref, root, rootMargin, triggerOnce, skip, trackVisibility, fallbackInView, delay]);\n const entryTarget = (_state$entry = state.entry) == null ? void 0 : _state$entry.target;\n React.useEffect(() => {\n if (!ref && entryTarget && !triggerOnce && !skip) {\n // If we don't have a node ref, then reset the state (unless the hook is set to only `triggerOnce` or `skip`)\n // This ensures we correctly reflect the current state - If you aren't observing anything, then nothing is inView\n setState({\n inView: !!initialInView,\n entry: undefined\n });\n }\n }, [ref, entryTarget, triggerOnce, skip, initialInView]);\n const result = [setRef, state.inView, state.entry]; // Support object destructuring, by adding the specific values.\n\n result.ref = result[0];\n result.inView = result[1];\n result.entry = result[2];\n return result;\n}\n\nexport { InView, defaultFallbackInView, observe, useInView };\n//# sourceMappingURL=react-intersection-observer.modern.mjs.map\n","import styled from \"@emotion/styled\"\n\nimport { Link } from \"components/core/Link\"\nimport { minTabletMediaQuery } from \"theme/media-queries\"\nimport { rgba } from \"utils/cssUtils\"\n\nexport const Container = styled.div`\n display: flex;\n flex-direction: row;\n gap: 12px;\n max-width: 800px;\n margin: 0 auto;\n align-items: flex-start;\n\n ${minTabletMediaQuery} {\n gap: 32px;\n align-items: center;\n }\n`\n\nexport const Subcontainer = styled.div`\n max-width: 800px;\n`\n\nexport const AuthorImg = styled.img`\n width: 80px;\n height: 80px;\n border-radius: 50%;\n\n ${minTabletMediaQuery} {\n width: 120px;\n height: 120px;\n }\n`\n\nexport const AuthorInfo = styled.div`\n display: flex;\n flex-direction: column;\n`\n\nexport const Name = styled(Link)`\n display: block;\n ${p => p.theme.typography.standard.size_20px.bold()}\n color: ${p => p.theme.colors.primaryMedium};\n line-height: 1.34;\n margin-bottom: 10px;\n text-decoration: none;\n`\n\nexport const Description = styled.p`\n ${p => p.theme.typography.standard.size_16px.normal()}\n color: ${p => rgba(p.theme.colors.primaryMedium, 0.7)};\n margin: 0;\n`\n\nexport const SocialMedia = styled.div`\n display: flex;\n flex-direction: row;\n gap: 20px;\n margin: 18px 0 0;\n\n svg {\n cursor: pointer;\n opacity: 1;\n\n &:hover {\n opacity: 0.9;\n }\n }\n\n ${minTabletMediaQuery} {\n margin: 20px 0 0;\n }\n`\n\nexport const LinkItem = styled(Link)`\n ${p => p.theme.typography.standard.size_16px.normal()}\n color: ${p => rgba(p.theme.colors.primaryMedium, 0.7)};\n text-decoration: none;\n\n :visited {\n color: ${p => rgba(p.theme.colors.primaryMedium, 0.7)};\n }\n`\n","import React, { FC } from \"react\"\n\nimport { IconFacebook, IconLinkedIn, IconTwitter } from \"components/core/Icons\"\nimport { Link } from \"components/core/Link\"\nimport { useResizedAvatarUrl } from \"hooks/useResizedAvatarUrl\"\nimport { Author } from \"types\"\nimport { segmentTrack } from \"utils/segmentAnalytics\"\n\nimport * as S from \"./Header.styles\"\n\ninterface PostAuthorHeaderProps {\n author: Author\n}\n\nexport const PostAuthorHeader: FC = ({ author }) => {\n const avatarUrl = author.avatar?.url\n const resizedAvatarUrl = useResizedAvatarUrl(avatarUrl, 120)\n const fullName = [author.firstName, author.lastName].join(\" \")\n\n return (\n \n {resizedAvatarUrl && (\n segmentTrack(\"blog.author.click\")}>\n \n \n )}\n \n \n \n segmentTrack(\"blog.author.click\")}\n >\n {fullName}\n \n \n {author.description && (\n {author.description}\n )}\n \n \n {author.seo?.social?.twitter && (\n \n \n \n )}\n {author.seo?.social?.facebook && (\n \n \n \n )}\n {author.seo?.social?.linkedIn && (\n \n \n \n )}\n \n \n \n )\n}\n","import styled from \"@emotion/styled\"\n\nimport { Link } from \"components/core/Link\"\nimport { minTabletMediaQuery } from \"theme/media-queries\"\nimport { rgba } from \"utils/cssUtils\"\n\nexport const Container = styled.div`\n display: flex;\n flex-direction: row;\n gap: 12px;\n max-width: 800px;\n margin: 0 auto;\n align-items: flex-start;\n\n ${minTabletMediaQuery} {\n align-items: center;\n }\n`\n\nexport const AuthorImg = styled.img`\n width: 80px;\n height: 80px;\n border-radius: 50%;\n`\n\nexport const RightColumn = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n align-items: flex-start;\n\n ${minTabletMediaQuery} {\n flex-direction: row;\n flex-grow: 1;\n align-items: center;\n gap: 16px;\n }\n`\n\nexport const AuthorInfo = styled.div`\n display: flex;\n flex-direction: column;\n`\n\nexport const Name = styled(Link)`\n display: block;\n ${p => p.theme.typography.standard.size_20px.bold()}\n color: ${p => p.theme.colors.primaryMedium};\n line-height: 1.34;\n margin: 0 0 8px;\n text-decoration: none;\n`\n\nexport const Description = styled.p`\n ${p => p.theme.typography.standard.size_16px.normal()}\n color: ${p => rgba(p.theme.colors.primaryMedium, 0.7)};\n margin: 0;\n`\n\nexport const Button = styled(Link)`\n background-color: ${p => p.theme.colors.white};\n ${p => p.theme.typography.standard.size_16px.semibold()}\n color: ${p => p.theme.colors.primaryMedium};\n border: 2px solid ${p => p.theme.colors.primaryMedium};\n border-radius: 2px;\n padding: 11px 40px;\n margin-top: 18px;\n min-width: 230px;\n text-align: center;\n text-decoration: none;\n\n :hover {\n cursor: pointer;\n color: ${p => p.theme.colors.primaryDark};\n border-color: ${p => p.theme.colors.primaryDark};\n }\n\n :active {\n color: ${p => p.theme.colors.primaryExtraDark};\n border-color: ${p => p.theme.colors.primaryExtraDark};\n }\n\n ${minTabletMediaQuery} {\n margin-top: 0px;\n }\n`\n","import React, { FC } from \"react\"\n\nimport { Link } from \"components/core/Link\"\nimport { useResizedAvatarUrl } from \"hooks/useResizedAvatarUrl\"\nimport { Author } from \"types\"\nimport { segmentTrack } from \"utils/segmentAnalytics\"\n\nimport * as S from \"./Footer.styles\"\n\ninterface PostAuthorFooterProps {\n author: Author\n}\n\nexport const PostAuthorFooter: FC = ({ author }) => {\n const avatarUrl = author.avatar?.url\n const resizedAvatarUrl = useResizedAvatarUrl(avatarUrl, 76)\n const fullName = [author.firstName, author.lastName].join(\" \")\n const totalReadMore = author.posts.nodes.length - 1\n\n return (\n \n {resizedAvatarUrl && (\n segmentTrack(\"blog.author.click\")}>\n \n \n )}\n \n \n \n segmentTrack(\"blog.author.click\")}\n >\n {fullName}\n \n \n {author.description && (\n {author.description}\n )}\n \n {totalReadMore > 0 && (\n {\n segmentTrack(\"blog.author.click\")\n }}\n >\n Read {totalReadMore} more{\" \"}\n {totalReadMore === 1 ? \"story\" : \"stories\"}\n \n )}\n \n \n )\n}\n","import styled from \"@emotion/styled\"\n\nimport { Link } from \"components/core/Link\"\nimport { minTabletMediaQuery } from \"theme/media-queries\"\nimport { rgba } from \"utils/cssUtils\"\n\nexport const ExploreContainer = styled.div`\n z-index: 1;\n max-width: 800px;\n margin: 40px auto 0;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n background-color: ${p => p.theme.colors.primaryDark};\n border: 1px solid ${p => p.theme.colors.primaryDark};\n border-radius: 2px;\n text-align: center;\n\n ${minTabletMediaQuery} {\n flex-direction: row;\n text-align: left;\n margin: 60px auto 0;\n }\n`\n\nexport const ExploreButton = styled(Link)`\n margin: 0px 30px 20px;\n text-decoration: none;\n text-align: center;\n padding: 11px 40px;\n background: ${p => p.theme.colors.white};\n border: 1px solid ${p => p.theme.colors.white};\n border-radius: 2px;\n ${p => p.theme.typography.standard.size_16px.semibold()}\n color: ${p => p.theme.colors.primaryDark};\n min-width: 220px;\n\n :hover {\n cursor: pointer;\n opacity: 0.9;\n }\n\n :active {\n opacity: 0.7;\n }\n\n ${minTabletMediaQuery} {\n margin: 20px 30px;\n }\n`\n\nexport const TextContainer = styled.div`\n display: flex;\n flex-direction: column;\n padding: 20px 30px 18px;\n\n ${minTabletMediaQuery} {\n padding: 20px 32px;\n }\n`\n\nexport const ExploreTitle = styled.p`\n ${p => p.theme.typography.standard.size_18px.semibold()}\n color: ${p => p.theme.colors.white};\n margin: 0;\n`\n\nexport const ExploreSubtitle = styled.p`\n ${p => p.theme.typography.standard.size_14px.normal()}\n color: ${p => rgba(p.theme.colors.white, 0.6)};\n margin: 0;\n`\n","import React, { FC } from \"react\"\n\nimport * as S from \"./Default.styles\"\n\nexport interface ExploreProps {\n title: string\n subtitle: string\n linkText: string\n exploreUrl: string\n onClick: () => void\n}\n\nexport const DefaultExplore: FC = ({\n title,\n subtitle,\n linkText,\n exploreUrl,\n onClick,\n}) => (\n \n \n {title}\n {subtitle}\n \n \n {linkText}\n \n \n)\n","import styled from \"@emotion/styled\"\n\nimport { Link } from \"components/core/Link\"\nimport { minTabletMediaQuery } from \"theme/media-queries\"\nimport { rgba } from \"utils/cssUtils\"\n\nexport const ExploreTitle = styled.p`\n ${p => p.theme.typography.standard.size_18px.semibold()}\n color: ${p => p.theme.colors.primaryMedium};\n margin: 0;\n`\n\nexport const ExploreSubtitle = styled.p`\n ${p => p.theme.typography.standard.size_14px.normal()}\n color: ${p => rgba(p.theme.colors.primaryMedium, 0.6)};\n margin: 0;\n`\n\nexport const StickyContainerDesktop = styled.div`\n background-color: ${p => p.theme.colors.white};\n position: fixed;\n bottom: 0;\n top: unset;\n padding: 14px 16px;\n border: none;\n z-index: 1;\n width: 100%;\n\n ${minTabletMediaQuery} {\n background-color: ${p => p.theme.colors.primaryExtremelyLight};\n padding: 0;\n bottom: unset;\n top: 60px;\n\n display: flex;\n flex-direction: row;\n }\n`\n\nexport const StickySubcontainerDesktop = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n width: 100%;\n max-width: 840px;\n margin: 0px auto;\n align-items: center;\n padding: 0;\n\n ${minTabletMediaQuery} {\n padding: 15px 20px;\n }\n`\n\nexport const StickyTextContainer = styled.div`\n display: flex;\n flex-direction: column;\n`\n\nexport const StickyButtonDesktop = styled(Link)`\n ${p => p.theme.typography.standard.size_16px.semibold()}\n text-decoration: none;\n text-align: center;\n background-color: ${p => p.theme.colors.primaryMedium};\n border: 1px solid ${p => p.theme.colors.primaryMedium};\n border-radius: 2px;\n color: ${p => p.theme.colors.white};\n width: 100%;\n margin: 0 auto;\n padding: 11px 20px;\n text-align: center;\n\n ${minTabletMediaQuery} {\n display: flex;\n justify-content: center;\n padding: 11px 40px;\n margin: unset;\n width: 270px;\n min-width: 270px;\n\n :hover {\n cursor: pointer;\n background-color: ${p => p.theme.colors.primaryDark};\n border: 1px solid ${p => p.theme.colors.primaryDark};\n }\n\n :active {\n background-color: ${p => p.theme.colors.primaryExtraDark};\n border: 1px solid ${p => p.theme.colors.primaryExtraDark};\n }\n }\n`\n\nexport const StickyTitle = styled(ExploreTitle)`\n color: ${p => p.theme.colors.primaryMedium};\n`\n\nexport const StickySubtitle = styled(ExploreSubtitle)`\n color: ${p => rgba(p.theme.colors.primaryMedium, 0.6)};\n`\n","import React, { FC } from \"react\"\n\nimport { useIsMinTablet } from \"theme/media-queries\"\n\nimport { ExploreProps } from \"./Default\"\nimport * as S from \"./StickyExplore.styles\"\n\nexport const StickyExplore: FC = ({\n title,\n subtitle,\n linkText,\n onClick,\n exploreUrl,\n}) => (\n \n \n \n {useIsMinTablet() && (\n <>\n {title}\n {subtitle}\n \n )}\n \n \n {linkText}\n \n \n \n)\n","import { ImgLite } from \"@avantstay/img-lite\"\nimport styled from \"@emotion/styled\"\n\nexport const Image = styled(ImgLite)`\n position: relative;\n`\n","import React, { FC } from \"react\"\n\nimport { ImgLiteProps } from \"@avantstay/img-lite\"\n\nimport { PinterestSaveButton } from \"components/core/PinterestSaveButton\"\nimport { usePinterestVisibilityProps } from \"hooks/usePinterestVisibilityProps\"\n\nimport * as S from \"./PostImage.styles\"\n\ninterface PostImageProps extends Omit {\n alt?: string\n pinterest: { description: string; url: string }\n src: string\n}\n\nexport const PostImage: FC = ({\n pinterest,\n ...imgLiteProps\n}) => {\n const { imageProps, pinterestButtonProps } = usePinterestVisibilityProps()\n\n return (\n \n \n \n )\n}\n","import styled from \"@emotion/styled\"\n\nimport { PostImage } from \"components/core/PostImage\"\nimport { minTabletMediaQuery } from \"theme/media-queries\"\nimport { rgba } from \"utils/cssUtils\"\n\nexport const Container = styled.div`\n max-width: 1056px;\n margin: 30px auto 60px;\n padding: 0px 16px 16px;\n`\n\nexport const Breadcrumbs = styled.div`\n max-width: 800px;\n margin: 0 auto 30px;\n`\n\nexport const Section = styled.section`\n margin: 30px auto 60px;\n\n h1 {\n ${p => p.theme.typography.special.size_26px.bold()}\n color: ${p => p.theme.colors.primaryMedium};\n max-width: 800px;\n margin: 40px auto 30px;\n\n ${minTabletMediaQuery} {\n ${p => p.theme.typography.special.size_40px.bold()}\n margin: 50px auto 40px;\n }\n }\n\n h2 {\n ${p => p.theme.typography.special.size_24px.bold()}\n color: ${p => p.theme.colors.primaryMedium};\n max-width: 800px;\n margin: 30px auto 20px;\n\n ${minTabletMediaQuery} {\n ${p => p.theme.typography.special.size_32px.bold()}\n margin: 40px auto 30px;\n }\n }\n\n h3 {\n ${p => p.theme.typography.special.size_18px.bold()}\n color: ${p => p.theme.colors.primaryMedium};\n max-width: 800px;\n margin: 25px auto 15px;\n\n ${minTabletMediaQuery} {\n ${p => p.theme.typography.special.size_26px.bold()}\n margin: 35px auto 25px;\n }\n }\n\n h4 {\n ${p => p.theme.typography.special.size_15px.bold()}\n color: ${p => p.theme.colors.primaryMedium};\n max-width: 800px;\n margin: 20px auto 10px;\n\n ${minTabletMediaQuery} {\n ${p => p.theme.typography.special.size_24px.bold()}\n margin: 30px auto 20px;\n }\n }\n\n h5 {\n ${p => p.theme.typography.special.size_15px.bold()}\n color: ${p => p.theme.colors.primaryMedium};\n max-width: 800px;\n margin: 20px auto 10px;\n\n ${minTabletMediaQuery} {\n ${p => p.theme.typography.special.size_22px.bold()}\n margin: 25px auto 15px;\n }\n }\n\n h6 {\n ${p => p.theme.typography.special.size_15px.bold()}\n color: ${p => p.theme.colors.primaryMedium};\n max-width: 800px;\n margin: 20px auto 10px;\n\n ${minTabletMediaQuery} {\n ${p => p.theme.typography.special.size_18px.bold()}\n margin: 20px auto 10px;\n }\n }\n\n p {\n ${p => p.theme.typography.standard.size_20px.normal()}\n color: ${p => p.theme.colors.neutralExtraDark};\n max-width: 800px;\n margin-left: auto;\n margin-right: auto;\n }\n\n blockquote {\n padding-left: 37px;\n border-left: 5px solid ${p => p.theme.colors.primaryExtraLight};\n max-width: 800px;\n margin: 50px auto;\n\n p {\n ${p => p.theme.typography.special.size_26px.bold()}\n color: ${p => p.theme.colors.primaryMedium};\n margin: 10px 0 0;\n }\n\n cite {\n ${p => p.theme.typography.standard.size_20px.normal()}\n color: ${p => rgba(p.theme.colors.primaryMedium, 0.7)};\n font-style: italic;\n margin: 10px 0;\n }\n }\n\n div {\n max-width: 1024px;\n margin: 0 auto;\n }\n\n figure,\n picture {\n width: 100%;\n max-width: 1024px;\n margin: 0 auto;\n }\n\n figure {\n padding: 30px 0;\n\n & > div {\n background-color: ${p => p.theme.colors.primaryExtremelyLight};\n }\n }\n\n figcaption {\n ${p => p.theme.typography.standard.size_18px.normal()}\n color: ${p => p.theme.colors.primaryMedium};\n margin: 10px 0 40px;\n }\n\n img {\n width: 100%;\n margin: 0 auto;\n background-color: ${p => p.theme.colors.primaryExtremelyLight};\n\n p {\n ${p => p.theme.typography.standard.size_20px.normal()}\n color: ${p => p.theme.colors.accentMedium};\n }\n }\n\n a {\n ${p => p.theme.typography.standard.size_20px.semibold()}\n color: ${p => p.theme.colors.primaryLight};\n text-decoration: none;\n\n :hover {\n opacity: 0.9;\n }\n\n :visited {\n color: ${p => p.theme.colors.primaryLight};\n }\n }\n\n ol {\n max-width: 800px;\n margin: 30px auto;\n list-style: none;\n counter-reset: li;\n }\n\n ol li {\n ${p => p.theme.typography.standard.size_20px.normal()}\n color: ${p => p.theme.colors.neutralExtraDark};\n padding: 10px;\n counter-increment: li;\n }\n\n ol li::before {\n content: \" .\" counter(li);\n color: ${p => p.theme.colors.primaryMedium};\n font-weight: bold;\n display: inline-block;\n width: 1em;\n margin-left: -1.5em;\n margin-right: 0.5em;\n text-align: right;\n direction: rtl;\n }\n\n ul {\n max-width: 800px;\n margin: 30px auto;\n list-style: none;\n }\n\n ul li {\n ${p => p.theme.typography.standard.size_20px.normal()}\n color: ${p => p.theme.colors.neutralExtraDark};\n padding: 10px;\n }\n\n ul li::before {\n content: \"•\";\n color: ${p => p.theme.colors.primaryMedium};\n font-weight: bold;\n display: inline-block;\n width: 1em;\n margin-left: -1em;\n }\n`\n\nexport const Title = styled.h1`\n ${p => p.theme.typography.special.size_26px.bold()}\n color: ${p => p.theme.colors.primaryMedium};\n max-width: 800px;\n margin: 10px auto 40px;\n\n ${minTabletMediaQuery} {\n ${p => p.theme.typography.special.size_40px.bold()}\n }\n`\n\nexport const CategoryAndDate = styled.p`\n ${p => p.theme.typography.standard.size_16px.normal()}\n color: ${p => p.theme.colors.accentMedium};\n max-width: 800px;\n margin: 0 auto;\n\n a {\n color: ${p => p.theme.colors.accentMedium};\n text-decoration: none;\n }\n`\n\nexport const Image = styled(PostImage)<{ width?: string; height?: string }>`\n width: ${p => `min(${p.width ? `${p.width}px` : \"100%\"}, 100%)`};\n height: ${p => `min(${p.height ?? \"390\"}px, 390px)`};\n\n ${minTabletMediaQuery} {\n height: ${p => `min(${p.height ?? \"670\"}px, 670px)`};\n }\n`\n","import React, { FC } from \"react\"\nimport { useInView } from \"react-intersection-observer\"\n\nimport { graphql } from \"gatsby\"\n\nimport parse, {\n attributesToProps,\n DOMNode,\n domToReact,\n Element,\n} from \"html-react-parser\"\n\nimport { Breadcrumbs } from \"components/core/Breadcrumbs\"\nimport { FeaturedImage } from \"components/core/FeaturedImage\"\nimport { Layout } from \"components/core/Layout\"\nimport { Link } from \"components/core/Link\"\nimport { Seo } from \"components/core/Seo\"\nimport { StayInTheLoop } from \"components/core/StayInTheLoop\"\nimport { PostAuthorFooter, PostAuthorHeader } from \"components/pages/Post\"\nimport {\n DefaultExplore,\n StickyExplore,\n} from \"components/pages/Post/ExploreBanner\"\nimport { Post } from \"types\"\nimport { Destination } from \"types/destination\"\nimport { getBreadcrumbsUri } from \"utils/getBreadcrumbsUri\"\nimport { getCanonicalUrl } from \"utils/getCanonicalUrl\"\nimport { getCategoryByParentName } from \"utils/getCategoryByParentName\"\nimport * as route from \"utils/routes\"\nimport { segmentTrack } from \"utils/segmentAnalytics\"\n\nimport * as S from \"./Post.styles\"\n\ninterface CreateHtmlParserParams {\n canonical: string\n title: string\n}\n\ninterface TemplatePostProps {\n data: {\n post: Post\n }\n pageContext: {\n destinations: Destination[]\n }\n}\n\nenum CategoryName {\n Homeowner = \"Homeowner\",\n Destinations = \"Destinations\",\n}\n\nconst createHtmlParser = ({ canonical, title }: CreateHtmlParserParams) => {\n const options = {\n replace: (domNode: DOMNode) => {\n if (domNode instanceof Element && domNode.attribs) {\n const { attribs, children, name } = domNode\n const props = attributesToProps(attribs)\n\n // convert img tags to ImgLite\n if (name === \"img\") {\n return (\n \n )\n }\n\n // maintain the Search Params\n if (name === \"a\") {\n return {domToReact(children, options)}\n }\n }\n },\n }\n\n return (html: string) => parse(html, options)\n}\n\nexport const TemplatePost: FC = ({\n data: { post },\n pageContext: { destinations },\n}) => {\n const author = post.author?.node\n const canonical = getCanonicalUrl(post.uri)\n const category = getCategoryByParentName(\n post.categories.nodes,\n \"Destinations\"\n )\n\n const breadcrumbs = category?.seo?.breadcrumbs\n const categoryName = breadcrumbs[1].text\n const categoryUrl = getBreadcrumbsUri(breadcrumbs[1].url)\n const subcategoryName = breadcrumbs[2]?.text\n const subcategorySlug = breadcrumbs[2]?.text.toLowerCase().replace(\" \", \"-\")\n const isDestinations =\n !!subcategoryName && categoryName === CategoryName.Destinations\n const isHomeowners = categoryName === CategoryName.Homeowner\n\n const exploreUrl = isDestinations\n ? `${route.website}/destinations/${subcategorySlug}`\n : `${route.website}/vacation-rental-management`\n\n const { ref, inView, entry } = useInView({\n threshold: 0.5,\n rootMargin: \"0px 0px 100%\",\n })\n\n const exploreProps = {\n [CategoryName.Destinations]: {\n title: `Want to explore ${subcategoryName}?`,\n subtitle:\n \"Explore our homes for your next stay with your favorite people.\",\n linkText: `Explore ${subcategoryName}`,\n exploreUrl,\n onClick: () => segmentTrack(\"blog.destination_cta.click\"),\n },\n [CategoryName.Homeowner]: {\n title: \"Interested in premium vacation rental management?\",\n subtitle: \"Learn how much more revenue you can make with AvantStay.\",\n linkText: \"Speak with our experts\",\n exploreUrl,\n onClick: () => segmentTrack(\"blog.homeowner_cta.click\"),\n },\n }\n\n const parseHtml = createHtmlParser({ canonical, title: post.title })\n\n return (\n \n \n {post.featuredImage && (\n \n )}\n \n \n
\n \n \n \n \n <>\n \n {categoryName}\n \n   •  {post.date}\n \n \n {parse(post.title)}\n {author && }\n
\n {(isDestinations || isHomeowners) && (\n
\n \n
\n )}\n {!!post.content && (\n \n {parseHtml(post.content)}\n \n )}\n {author && }\n \n
\n {!!entry && !inView && (isDestinations || isHomeowners) && (\n \n )}\n \n
\n )\n}\n\nexport default TemplatePost\n\nexport const pageQuery = graphql`\n query TemplatePostById($id: String!) {\n post: wpPost(id: { eq: $id }) {\n content\n date(formatString: \"MMMM DD, YYYY\")\n id\n uri\n title\n featuredImage {\n node {\n altText\n sourceUrl\n }\n }\n author {\n node {\n description\n email\n firstName\n lastName\n uri\n username\n avatar {\n url\n }\n posts {\n nodes {\n id\n }\n }\n seo {\n canonical\n title\n social {\n facebook\n instagram\n linkedIn\n twitter\n }\n }\n }\n }\n categories {\n nodes {\n name\n slug\n uri\n wpParent {\n node {\n id\n name\n }\n }\n seo {\n breadcrumbs {\n text\n url\n }\n }\n }\n }\n seo {\n canonical\n cornerstone\n focuskw\n metaDesc\n metaKeywords\n metaRobotsNofollow\n metaRobotsNoindex\n opengraphDescription\n opengraphTitle\n opengraphImage {\n altText\n sourceUrl\n srcSet\n }\n schema {\n articleType\n pageType\n raw\n }\n title\n twitterTitle\n twitterDescription\n twitterImage {\n altText\n sourceUrl\n srcSet\n }\n }\n }\n }\n`\n"],"names":["getResizedAvatarUrl","url","size","dpr","parsedUrl","queryString","query","s","toString","useResizedAvatarUrl","initialResizedAvatarUrl","resizedAvatarUrl","setResizedAvatarUrl","useState","useEffect","window","devicePixelRatio","observerMap","Map","RootIds","WeakMap","unsupportedValue","rootId","optionsToId","options","Object","keys","sort","filter","key","undefined","map","root","has","set","get","observe","element","callback","fallbackInView","IntersectionObserver","bounds","getBoundingClientRect","isIntersecting","target","intersectionRatio","threshold","time","boundingClientRect","intersectionRect","rootBounds","id","observer","elements","instance","thresholds","entries","forEach","entry","_elements$get","inView","some","trackVisibility","isVisible","Array","isArray","createObserver","callbacks","push","splice","indexOf","length","delete","unobserve","disconnect","Container","_styled","minTabletMediaQuery","Subcontainer","name","styles","AuthorImg","AuthorInfo","Name","Link","p","theme","typography","standard","size_20px","bold","colors","primaryMedium","Description","size_16px","normal","rgba","SocialMedia","LinkItem","PostAuthorHeader","_ref","_author$avatar","_author$seo","_author$seo$social","_author$seo2","_author$seo2$social","_author$seo3","_author$seo3$social","_author$seo4","_author$seo4$social","_author$seo5","_author$seo5$social","_author$seo6","_author$seo6$social","author","avatarUrl","avatar","fullName","firstName","lastName","join","___EmotionJSX","S","to","uri","onClick","segmentTrack","alt","src","description","seo","social","twitter","href","rel","IconTwitter","facebook","IconFacebook","linkedIn","IconLinkedIn","RightColumn","Button","white","semibold","primaryDark","primaryExtraDark","PostAuthorFooter","totalReadMore","posts","nodes","ExploreContainer","ExploreButton","TextContainer","ExploreTitle","size_18px","ExploreSubtitle","size_14px","DefaultExplore","title","subtitle","linkText","exploreUrl","utm","medium","StickyContainerDesktop","primaryExtremelyLight","StickySubcontainerDesktop","StickyTextContainer","StickyButtonDesktop","StickyExplore","useIsMinTablet","React","Image","ImgLite","PostImage","pinterest","imgLiteProps","imageProps","pinterestButtonProps","usePinterestVisibilityProps","_extends","role","PinterestSaveButton","image","Breadcrumbs","Section","special","size_26px","size_40px","size_24px","size_32px","size_15px","size_22px","neutralExtraDark","primaryExtraLight","accentMedium","primaryLight","Title","CategoryAndDate","width","_p$height","height","_p$height2","CategoryName","TemplatePost","_ref2","_post$author","_category$seo","_breadcrumbs$","_breadcrumbs$2","data","post","pageContext","destinations","node","canonical","getCanonicalUrl","category","getCategoryByParentName","categories","breadcrumbs","categoryName","text","categoryUrl","getBreadcrumbsUri","subcategoryName","subcategorySlug","toLowerCase","replace","isDestinations","Destinations","isHomeowners","Homeowner","route","ref","delay","rootMargin","triggerOnce","skip","initialInView","onChange","_state$entry","setRef","state","setState","current","entryTarget","result","useInView","exploreProps","parseHtml","domNode","Element","attribs","children","props","attributesToProps","avif","process","domToReact","html","parse","createHtmlParser","Layout","Seo","featuredImage","FeaturedImage","itemScope","className","itemType","breadcrumbItems","date","itemProp","content","StayInTheLoop","hasSocial","isOwner","source"],"sourceRoot":""}