{"version":3,"file":"coopse.script.6437.86e3bded.chunk.js","mappings":"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","sources":["webpack:///./src/microApps/common/components/Heading/Heading.module.less","webpack:///./src/microApps/common/components/Heading/Heading.tsx","webpack:///./src/microApps/common/components/atoms/ConditionalWrapper.tsx","webpack:///./src/microApps/common/tracking/hooks/usePromotionTracking.ts","webpack:///./src/microApps/episerver/components/base/EpiContentArea.tsx","webpack:///./src/microApps/common/components/organisms/FullWidthBlockContainer/FullWidthBlockContainer.tsx","webpack:///./src/microApps/episerver/components/blocks/EpiFullWidthBlockContainer/EpiFullWidthBlockContainer.tsx","webpack:///./src/microApps/episerver/components/blocks/EpiFullWidthBlockContainer/EpiFullWidthBlockContainer.utils.ts","webpack:///./src/microApps/episerver/components/blocks/EpiHeadingPropertyBlock/EpiHeadingPropertyBlock.utils.ts","webpack:///./src/microApps/episerver/epiUtils.ts","webpack:///../../node_modules/react-intersection-observer/react-intersection-observer.modern.mjs"],"sourcesContent":["// 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 type { FC, ReactNode } from 'react';\nimport { Fragment } from 'react';\n\ninterface ConditionalWrapperProps {\n    condition: boolean;\n    renderWrapper: (children: ReactNode) => ReactNode;\n}\n\nexport const ConditionalWrapper: FC<React.PropsWithChildren<ConditionalWrapperProps>> = (props) =>\n    // eslint-disable-next-line react/jsx-no-useless-fragment\n    props.condition ? <>{props.renderWrapper(props.children)}</> : <>{props.children}</>;\n\ninterface ConditionalMultipleWrappersProps {\n    choices: {\n        condition: boolean;\n        renderWrapper: (children: ReactNode) => ReactNode;\n    }[];\n\n    children: ReactNode;\n}\n\nexport const ConditionalMultipleWrappers: FC<\n    React.PropsWithChildren<ConditionalMultipleWrappersProps>\n> = (props) => {\n    return (\n        <>\n            {props.choices.map(\n                (choice, index) =>\n                    choice.condition && (\n                        // eslint-disable-next-line react/no-array-index-key\n                        <Fragment key={index}>{choice.renderWrapper(props.children)}</Fragment>\n                    ),\n            )}\n        </>\n    );\n};\n","import { useEffect } from 'react';\nimport { useInView } from 'react-intersection-observer';\n\nimport { ga4PromotionTracking } from '../ga4/promotion';\nimport type { IGaPromoData } from '../models/IGaPromoData';\n\nconst usePromotionTracking = ({\n    gaPromoCreative,\n    gaPromoId,\n    gaPromoName,\n    gaPromoPosition,\n}: IGaPromoData) => {\n    const [ref, inView] = useInView({\n        triggerOnce: true,\n        threshold: 0.5,\n    });\n\n    useEffect(() => {\n        if (inView) {\n            ga4PromotionTracking.viewPromotion({\n                gaPromoCreative,\n                gaPromoId,\n                gaPromoName,\n                gaPromoPosition,\n            });\n        }\n    }, [gaPromoCreative, gaPromoId, gaPromoName, gaPromoPosition, inView]);\n\n    const click = () => {\n        ga4PromotionTracking.selectPromotion({\n            gaPromoCreative,\n            gaPromoId,\n            gaPromoName,\n            gaPromoPosition,\n        });\n    };\n\n    return { ref, click };\n};\n\nexport default usePromotionTracking;\n","/* eslint-disable react/no-array-index-key */\n/* eslint-disable react/jsx-props-no-spreading */\n/* eslint-disable react/jsx-no-useless-fragment */\nimport classNames from 'classnames';\n\nimport { getCssClassForDisplayOptionWithDefaultTag } from '../../epiUtils';\nimport EpiComponentLoader from './EpiComponentLoader';\n\ninterface EpiContentAreaProps {\n    items: ContentAreaItem[];\n    epiTag?: DisplayOption;\n    itemCssClass?: string;\n    /** If you pass renderItem function, you are responsible for generating item itself as well as it's Grid cell.\n     * Use contentAreaItem, contentAreaItemClasses parameters to get access to default values for items.\n     */\n    renderItem?: (\n        componentProps: IContent,\n        contentAreaItem: ContentAreaItem,\n        contentAreaItemClasses: string,\n    ) => React.ReactNode;\n}\n\nconst EpiContentArea = ({ items, epiTag, itemCssClass, renderItem }: EpiContentAreaProps) => {\n    const areaItems = items?.filter((x) => !!x && !!x.contentLink.expanded) || [];\n\n    return (\n        <>\n            {areaItems.map((contentAreaItem, index) => (\n                <EpiComponentLoader\n                    expandedValue={contentAreaItem.contentLink.expanded!}\n                    options={{\n                        isContentAreaItem: true,\n                    }}\n                    key={`{${contentAreaItem.contentLink.guidValue}_${index}}`}\n                >\n                    {(LazyComponent, epiComponentProps) => {\n                        const contentAreaItemClasses = classNames(\n                            getCssClassForDisplayOptionWithDefaultTag(\n                                contentAreaItem.displayOption || epiTag,\n                            ),\n                            itemCssClass,\n                        );\n\n                        return (\n                            <>\n                                {(renderItem &&\n                                    renderItem(\n                                        epiComponentProps,\n                                        contentAreaItem,\n                                        contentAreaItemClasses,\n                                    )) || (\n                                    <div className={contentAreaItemClasses}>\n                                        <LazyComponent {...epiComponentProps} />\n                                    </div>\n                                )}\n                            </>\n                        );\n                    }}\n                </EpiComponentLoader>\n            ))}\n        </>\n    );\n};\n\nexport default EpiContentArea;\n","import { Button } from '@coop/components';\nimport classNames from 'classnames';\n\nimport EpiContentArea from '../../../../episerver/components/base/EpiContentArea';\nimport usePromotionView from '../../../tracking/hooks/usePromotionTracking';\nimport { ConditionalWrapper } from '../../atoms/ConditionalWrapper';\nimport Heading from '../../Heading';\n\ninterface FullWidthBlockContainerProps {\n    headingProps?: React.ComponentPropsWithoutRef<typeof Heading>;\n    blocks: ContentAreaItem[];\n    linkUrl?: string;\n    linkText: string;\n    noVerticalMargin: boolean;\n    horizontalMarginClass:\n        | ''\n        | 'Grid--gutterHxlg'\n        | 'Grid--gutterHlg'\n        | 'Grid--gutterH'\n        | 'Grid--gutterHmd'\n        | 'Grid--gutterHxsm'\n        | 'Grid--gutterH2xsm';\n    verticalMarginClass:\n        | ''\n        | 'Grid--gutterVxlg'\n        | 'Grid--gutterVlg'\n        | 'Grid--gutterV'\n        | 'Grid--gutterVmd'\n        | 'Grid--gutterVxsm'\n        | 'Grid--gutterV2xsm';\n    center: boolean;\n    backgroundColor?: 'u-bgWhite' | 'u-bgGreenDark' | 'u-bgGreen' | 'u-bgGreenLight2';\n    gaPromoPosition?: string;\n    gaPromoCreative?: string;\n    gaPromoId?: string;\n    gaPromoName?: string;\n    padding: 'responsive' | undefined;\n}\n\nconst FullWidthBlockContainer = ({\n    headingProps,\n    blocks,\n    linkUrl,\n    linkText,\n    noVerticalMargin,\n    horizontalMarginClass,\n    verticalMarginClass,\n    center,\n    backgroundColor,\n    gaPromoId,\n    gaPromoName,\n    gaPromoPosition,\n    gaPromoCreative,\n    padding,\n}: FullWidthBlockContainerProps) => {\n    const { ref, click } = usePromotionView({\n        gaPromoId,\n        gaPromoName,\n        gaPromoPosition,\n        gaPromoCreative,\n    });\n\n    return (\n        <ConditionalWrapper\n            condition={center}\n            renderWrapper={(children) => (\n                <div className=\"Main-container Main-container--medium\">{children}</div>\n            )}\n        >\n            <div\n                ref={ref}\n                className={classNames(\n                    'Section',\n                    backgroundColor,\n                    padding === 'responsive' ? 'Section--padding' : '',\n                )}\n            >\n                {headingProps && (\n                    <Heading\n                        // eslint-disable-next-line react/jsx-props-no-spreading\n                        {...headingProps}\n                        className=\"u-marginBmd\"\n                    />\n                )}\n                <div\n                    className={classNames(\n                        'Grid Grid--equalHeight Grid--gutterV',\n                        noVerticalMargin ? '' : verticalMarginClass,\n                        horizontalMarginClass,\n                    )}\n                >\n                    <EpiContentArea items={blocks} epiTag=\"full\" />\n                </div>\n                {linkUrl && linkText?.length > 0 && (\n                    <Footer url={linkUrl} linkText={linkText} onClick={click} />\n                )}\n            </div>\n        </ConditionalWrapper>\n    );\n};\n\nconst Footer = ({\n    url,\n    linkText,\n    onClick,\n}: {\n    url: string;\n    linkText: string;\n    onClick: () => void;\n}) => {\n    return (\n        <div className=\"u-textCenter\">\n            <Button asChild size={40} theme=\"primary\" className=\"u-marginT u-marginHauto\">\n                <a href={url} onClick={onClick}>\n                    {linkText}\n                </a>\n            </Button>\n        </div>\n    );\n};\n\nexport default FullWidthBlockContainer;\n","import type Heading from '../../../../common/components/Heading';\nimport FullWidthBlockContainer from '../../../../common/components/organisms/FullWidthBlockContainer/FullWidthBlockContainer';\nimport { mapEpiHeadingPropertyFallback } from '../EpiHeadingPropertyBlock/EpiHeadingPropertyBlock.utils';\nimport type { EpiHeadingPropertyBlockType } from '../EpiHeadingPropertyBlock/epiHeadingPropertyBlockType';\nimport { mapEpiContainerPadding } from './EpiFullWidthBlockContainer.utils';\nimport type { EpiFullWidthBlockContainerType } from './epiFullWidthBlockContainerType';\n\nconst mapEpiHeading = (\n    heading?: EpiHeadingPropertyBlockType,\n): React.ComponentPropsWithoutRef<typeof Heading> | undefined => {\n    if (!heading || !heading.text?.trim()) {\n        return undefined;\n    }\n    return {\n        children: heading.text.trim(),\n        alignment: heading.alignment || 'center',\n        color: heading.color || 'black',\n        element: `h${heading.level || 2}`,\n        stylingElement: `h${heading.stylingLevel || 1}`,\n        fontFamilySecondary: true,\n    };\n};\n\nconst EpiFullWidthBlockContainer = (props: EpiFullWidthBlockContainerType) => {\n    const mappedHeading = mapEpiHeading(\n        mapEpiHeadingPropertyFallback(props.headline, props.heading),\n    );\n\n    return (\n        <FullWidthBlockContainer\n            headingProps={mappedHeading}\n            blocks={props.blocks}\n            linkUrl={props.link?.url}\n            linkText={props.linkText}\n            noVerticalMargin={props.noVerticalMargin}\n            horizontalMarginClass={props.horizontalMarginClass}\n            verticalMarginClass={props.verticalMarginClass}\n            center={props.center}\n            backgroundColor={props.backgroundColor}\n            gaPromoPosition={props.gaPromoPosition}\n            gaPromoCreative={props.gaPromoCreative}\n            gaPromoId={props.gaPromoId}\n            gaPromoName={props.gaPromoName}\n            padding={mapEpiContainerPadding(props.padding)}\n        />\n    );\n};\n\nexport default EpiFullWidthBlockContainer;\n","import type { EpiContainerPadding } from './epiFullWidthBlockContainerType';\n\nexport const mapEpiContainerPadding = (padding: EpiContainerPadding) => {\n    switch (padding) {\n        case 'responsive':\n            return padding;\n        default:\n            return undefined;\n    }\n};\n","import type Heading from '../../../../common/components/Heading';\nimport type { EpiHeadingPropertyBlockType } from './epiHeadingPropertyBlockType';\n\nexport const mapEpiHeadingPropertyBlock = (\n    props?: EpiHeadingPropertyBlockType,\n): React.ComponentPropsWithoutRef<typeof Heading> | undefined => {\n    if (!props || !props.text) {\n        return undefined;\n    }\n\n    return {\n        element: `h${props.level || '2'}`,\n        stylingElement: props.stylingLevel && `h${props.stylingLevel}`,\n        color: props.color,\n        alignment: props.alignment,\n        children: props.text,\n    };\n};\n\nexport const mapEpiHeadingPropertyFallback = (\n    oldHeader?: string,\n    heading?: EpiHeadingPropertyBlockType,\n): EpiHeadingPropertyBlockType => {\n    if (heading && heading.text) {\n        return heading;\n    }\n\n    return {\n        text: oldHeader,\n    };\n};\n","import { appConfig } from '../../appConfig';\nimport type { PageHeadData } from '../common/components/atoms/PageHead';\nimport { ensureTrailingSlash } from '../common/utils/urlUtils';\nimport type { EpiPageTypes } from './components/pages/epiPageTypes';\nimport type { EpiSitePageType } from './components/pages/epiSitePageType';\n\nexport const getCssClassForDisplayOptionWithDefaultTag = (name: DisplayOption) => {\n    const potentialCssClass = appConfig.coopSettings.epi.blockDisplayOptionToCssClass[name];\n\n    if (potentialCssClass) {\n        return `${appConfig.coopSettings.epi.baseChildrenCssClass} ${potentialCssClass}`;\n    }\n\n    return appConfig.coopSettings.epi.baseChildrenCssClass;\n};\n\nexport const filterContentArea = <T extends IContent>(\n    contentArea: ContentAreaItem[],\n    predicate: (content: IContent) => content is T,\n): T[] => {\n    const contents =\n        contentArea\n            ?.map((x) => x.contentLink?.expanded)\n            .filter(Boolean)\n            .filter(predicate) || [];\n    return contents;\n};\n\nexport const filterContent = <T extends IContent>(\n    contentItems: IContent[],\n    predicate: (content: IContent) => content is T,\n): T[] => {\n    const filteredContents = contentItems?.filter(predicate) || [];\n    return filteredContents;\n};\n\nexport const filterContentType = <T extends EpiPageTypes[keyof EpiPageTypes]>(\n    contents: IContent[],\n    contentType: keyof EpiPageTypes,\n): T[] => {\n    return (contents?.filter((item) => item.contentType.includes(contentType)) as T[]) || [];\n};\n\n/**\n * Use with caution, EPI adds ?epieditmode=True in edit mode, but so can users\n */\nexport const isEpiEditMode = () =>\n    new URLSearchParams(window.location.search).get('epieditmode') === 'True';\n\nexport const editTableProp = (name: string) => (window.epi?.inEditMode ? name : undefined);\n\nexport const mapEpiPageHeadData = (page: EpiSitePageType): PageHeadData => {\n    const canonicalUrl = page.canonicalUrl && ensureTrailingSlash(page.canonicalUrl);\n\n    return {\n        title: page.pageTitle,\n        link: {\n            canonical: canonicalUrl,\n        },\n        meta: {\n            description: page.metaDescription,\n            'og:url': canonicalUrl,\n            'og:description': page.metaDescription,\n        },\n    };\n};\n\nexport const isEpiPageViewSettings = (page: IContent): page is PageViewSettingsIContent => {\n    return 'contentPageSize' in (page as PageViewSettingsIContent);\n};\n\nexport const isContentReference = (input: unknown): input is ContentReference => {\n    return 'url' in (input as ContentReference);\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 `<InView>` 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 <InView>\r\n {({ inView, ref, entry }) => (\r\n      <div ref={ref}>\r\n        <h2>{`Header inside viewport ${inView}.`}</h2>\r\n      </div>\r\n    )}\r\n </InView>\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 `<InView />`, 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 `<InView>` 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 <InView as=\"div\" onChange={(inView, entry) => console.log('Inview:', inView)}>\r\n <h2>Plain children are always rendered. Use onChange to monitor state.</h2>\r\n </InView>\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 *     <div ref={ref}>\r\n *       <h2>{`Header inside viewport ${inView}.`}</h2>\r\n *     </div>\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;\n    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  const previousEntryTarget = React.useRef();\n\n  if (!ref && entryTarget && !triggerOnce && !skip && previousEntryTarget.current !== entryTarget) {\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    previousEntryTarget.current = entryTarget;\n    setState({\n      inView: !!initialInView,\n      entry: undefined\n    });\n  }\n\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"],"names":["Heading","props","ref","children","fontFamilySecondary","stylingElement","element","className","alignment","rest","alignStyles","width","textAlign","color","FontFamilySecondary","style","useEffect","document","body","focus","tabIndex","visuallyHidden","ConditionalWrapper","condition","renderWrapper","ConditionalMultipleWrappers","choices","map","choice","index","Fragment","gaPromoCreative","gaPromoId","gaPromoName","gaPromoPosition","inView","triggerOnce","threshold","viewPromotion","click","selectPromotion","items","epiTag","itemCssClass","renderItem","areaItems","filter","x","contentLink","expanded","contentAreaItem","expandedValue","options","isContentAreaItem","LazyComponent","epiComponentProps","contentAreaItemClasses","displayOption","guidValue","Footer","url","linkText","onClick","Button","asChild","size","theme","href","headingProps","blocks","linkUrl","noVerticalMargin","horizontalMarginClass","verticalMarginClass","center","backgroundColor","padding","EpiContentArea","length","mappedHeading","heading","text","trim","level","stylingLevel","mapEpiHeading","mapEpiHeadingPropertyFallback","headline","link","mapEpiContainerPadding","mapEpiHeadingPropertyBlock","oldHeader","getCssClassForDisplayOptionWithDefaultTag","name","potentialCssClass","coopSettings","epi","blockDisplayOptionToCssClass","baseChildrenCssClass","filterContentArea","contentArea","predicate","Boolean","filterContentType","contents","contentType","item","includes","isEpiEditMode","URLSearchParams","window","location","search","get","mapEpiPageHeadData","page","canonicalUrl","title","pageTitle","canonical","meta","description","metaDescription","isEpiPageViewSettings","observerMap","Map","RootIds","WeakMap","unsupportedValue","rootId","observe","callback","fallbackInView","IntersectionObserver","undefined","bounds","getBoundingClientRect","isIntersecting","target","intersectionRatio","time","boundingClientRect","intersectionRect","rootBounds","id","observer","elements","Object","keys","sort","key","root","has","set","toString","optionsToId","instance","thresholds","entries","forEach","entry","_elements$get","some","trackVisibility","isVisible","Array","isArray","createObserver","callbacks","push","splice","indexOf","delete","unobserve","disconnect","useInView","delay","rootMargin","skip","initialInView","onChange","_state$entry","setRef","state","setState","current","entryTarget","previousEntryTarget","result"],"sourceRoot":""}