{"version":3,"sources":["../../src/components/CookieConsent.tsx","../../src/contexts/Context.ts","../../src/contexts/Loader.tsx","../../src/contexts/use.ts","../../src/components/CookieConsentBody.tsx"],"sourcesContent":["import { isString } from '@xylabs/sdk-js'\nimport React from 'react'\n\nimport { CookieConsentLoader, useCookieConsent } from '../contexts/index.ts'\nimport { CookieConsentBody } from './CookieConsentBody.tsx'\nimport type { CookieConsentProps } from './CookieConsentProps.tsx'\n\nconst CookieConsentInner: React.FC<CookieConsentProps> = (props) => {\n  const { accepted } = useCookieConsent()\n  return accepted ? null : <CookieConsentBody {...props} />\n}\n\nexport const CookieConsent: React.FC<CookieConsentProps> = (props) => {\n  const { storageName } = useCookieConsent()\n\n  // if not inside a context, make a context\n  if (!isString(storageName)) {\n    return (\n      <CookieConsentLoader>\n        <CookieConsentInner {...props} />\n      </CookieConsentLoader>\n    )\n  }\n\n  return <CookieConsentInner {...props} />\n}\n","import { createContext } from 'react'\n\nconst CookieConsentContext = createContext<{\n  accepted?: boolean\n  clearAccepted?: () => void\n  setAccepted?: (accepted: boolean) => void\n  storageName?: string\n}>({})\nexport { CookieConsentContext }\n","import type { PropsWithChildren } from 'react'\nimport React, { useMemo, useState } from 'react'\n\nimport { CookieConsentContext } from './Context.ts'\n\nconst CookiesAcceptedLocalStorageName = 'CookiesAccepted'\n\nconst getAcceptedFromLocalStorage = () => {\n  return localStorage.getItem(CookiesAcceptedLocalStorageName) === 'true'\n}\n\nconst setAcceptedToLocalStorage = (accepted: boolean) => {\n  localStorage.setItem(CookiesAcceptedLocalStorageName, accepted ? 'true' : 'false')\n}\n\nconst CookieConsentLoader: React.FC<PropsWithChildren> = ({ children }) => {\n  const [accepted, setAccepted] = useState(() => getAcceptedFromLocalStorage())\n  const setAcceptedHandler = (accepted: boolean) => {\n    setAcceptedToLocalStorage(accepted)\n    setAccepted(accepted)\n  }\n\n  const clearAccepted = () => {\n    localStorage.removeItem(CookiesAcceptedLocalStorageName)\n    setAccepted(getAcceptedFromLocalStorage())\n  }\n\n  const value = useMemo(() => ({\n    accepted, clearAccepted, setAccepted: setAcceptedHandler, storageName: CookiesAcceptedLocalStorageName,\n  }), [accepted, clearAccepted, setAcceptedHandler])\n\n  return (\n    <CookieConsentContext value={value}>\n      {children}\n    </CookieConsentContext>\n  )\n}\n\nexport { CookieConsentLoader }\n","import { use } from 'react'\n\nimport { CookieConsentContext } from './Context.ts'\n\nconst useCookieConsent = () => {\n  return use(CookieConsentContext)\n}\n\nexport { useCookieConsent }\n","import {\n  Link, Paper, Typography,\n} from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport { isString } from '@xylabs/sdk-js'\nimport React, { useEffect } from 'react'\n\nimport { useCookieConsent } from '../contexts/index.ts'\nimport type { CookieConsentProps } from './CookieConsentProps.tsx'\n\nexport const CookieConsentBody: React.FC<CookieConsentProps> = ({\n  acceptOnScroll, acceptOnTimer = 0, onAccept, ...props\n}) => {\n  const {\n    accepted, setAccepted, storageName,\n  } = useCookieConsent()\n\n  const onScroll = () => {\n    // hide it one the user has scrolled at least one page\n    if (window.scrollY > window.innerHeight && !accepted) {\n      onAcceptClick()\n    }\n  }\n\n  useEffect(() => {\n    if (acceptOnScroll) {\n      window.addEventListener('scroll', onScroll)\n\n      return () => {\n        window.removeEventListener('scroll', onScroll)\n      }\n    }\n  })\n\n  const onAcceptClick = () => {\n    if (setAccepted) {\n      setAccepted?.(true)\n    } else {\n      localStorage.setItem(storageName ?? 'CookiesAccepted', 'true')\n    }\n    onAccept?.(true)\n  }\n\n  if (acceptOnTimer > 0 && !accepted) {\n    setTimeout(() => {\n      onAcceptClick()\n    }, acceptOnTimer)\n  }\n\n  if (!isString(storageName)) {\n    return (\n      <FlexRow justifyContent=\"center\" paddingY={2} {...props}>\n        <Typography color=\"error\" variant=\"body1\">\n          Missing CookieConsentContext\n        </Typography>\n      </FlexRow>\n    )\n  }\n\n  return accepted\n    ? null\n    : (\n        <Paper\n          elevation={24}\n          sx={{\n            borderRadius: 0,\n            display: 'flex',\n            alignItems: 'center',\n            justifyContent: 'space-between',\n            position: 'fixed',\n            bottom: 0,\n            maxWidth: '100vw',\n            width: '100%',\n            zIndex: 1000,\n          }}\n          {...props}\n        >\n          <Typography variant=\"body2\" margin={2}>\n            {'This site uses '}\n            <Link\n              href=\"https://cookiesandyou.com/\"\n              rel=\"noopener noreferrer\"\n              target=\"_blank\"\n            >\n              cookies\n            </Link>\n            {' and '}\n            <Link\n              href=\"https://policies.google.com/technologies/partner-sites\"\n              rel=\"noopener noreferrer\"\n              target=\"_blank\"\n            >\n              Google&nbsp;tools\n            </Link>\n            {' to analyze traffic and for ads measurement purposes.'}\n          </Typography>\n          <ButtonEx disableUserEvents variant=\"contained\" color=\"primary\" onClick={onAcceptClick} margin={2}>\n            Accept\n          </ButtonEx>\n        </Paper>\n      )\n}\n"],"mappings":"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","names":["isString","accepted","jsx","jsx","isString"]}