{"version":3,"sources":["webpack:///./src/components/common/SvgImage/index.tsx","webpack:///./src/core/config/index.ts","webpack:///./src/utilities/browser.ts","webpack:///./src/components/common/SharePane/index.tsx"],"names":["title","reference","ariaHidden","className","aria-hidden","xlinkHref","config","env","apiUrl","webSettings","baseUrl","webUrl","storybookApi","localizations","shareConfig","key","id","shareUrl","mobileOnly","cookieConfig","cookiePolicy","cookiePolicyExpirationDays","xsrfRequestToken","insertUrlParam","value","includeHash","history","pushState","searchParams","URLSearchParams","window","location","search","set","newurl","protocol","host","pathname","toString","hash","path","getUrlParamValue","Object","entries","hashes","slice","indexOf","split","params","map","val","decodeURIComponent","getAllUrlParams","href","filter","param","isMobile","test","navigator","scrollIntoView","elemToScrollTo","behaviour","MSInputMethodContext","document","behavior","isPortrait","image","file","details","height","sharePlatforms","isVertical","urlOverride","openShareDialog","url","platform","open","getBaseShareUrl","find","handleDesktopClick","event","preventDefault","replace","encodeURIComponent","share","currentTarget","dataset","sharePlatform","onClick","data-platform","handleMobileClick"],"mappings":"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","file":"habitat.40.component.js","sourcesContent":["import * as React from 'react';\r\n\r\ninterface SvgImageProps {\r\n  title?: string;\r\n  reference: string;\r\n  ariaHidden?: boolean;\r\n  className?: string;\r\n}\r\n\r\nconst SvgImage = ({\r\n  title,\r\n  reference,\r\n  ariaHidden,\r\n  className,\r\n}: SvgImageProps) => (\r\n  <svg className={className} aria-hidden={ariaHidden}>\r\n    {title && (\r\n      <title>{title}</title>\r\n    )}\r\n    <use xlinkHref={reference} />\r\n  </svg>\r\n);\r\n\r\nexport default SvgImage;\r\n","import LocalizationsState from '../typings/localization';\r\n\r\ndeclare const Config: AppConfiguration;\r\n\r\ndeclare const webSettings: {\r\n  baseUrl: string;\r\n  localizations: LocalizationsState;\r\n};\r\nexport interface AppConfiguration {\r\n  env: string;\r\n  apiUrl: string;\r\n  webUrl: string;\r\n  storybookApi?: string;\r\n  localizations: LocalizationsState;\r\n}\r\n\r\nexport interface SharePlatformDetail {\r\n  key: number;\r\n  id: string;\r\n  shareUrl: string | null;\r\n  mobileOnly: boolean;\r\n}\r\n\r\nexport const config: AppConfiguration = {\r\n  env: Config.env,\r\n  apiUrl: `${webSettings.baseUrl}${Config.apiUrl}`,\r\n  webUrl: webSettings.baseUrl,\r\n  storybookApi: Config.storybookApi ? Config.storybookApi : undefined,\r\n  localizations: webSettings.localizations,\r\n};\r\n\r\nexport interface CookieConfig {\r\n  cookiePolicy: string;\r\n  cookiePolicyExpirationDays: number;\r\n  xsrfRequestToken: string;\r\n}\r\n\r\nexport const shareConfig: SharePlatformDetail[] = [\r\n  {\r\n    key: 1,\r\n    id: 'facebook',\r\n    shareUrl: 'https://www.facebook.com/sharer/sharer.php?u=',\r\n    mobileOnly: false,\r\n  },\r\n  {\r\n    key: 2,\r\n    id: 'twitter',\r\n    shareUrl: 'https://twitter.com/intent/tweet?url=',\r\n    mobileOnly: false,\r\n  },\r\n  {\r\n    key: 3,\r\n    id: 'whatsapp',\r\n    shareUrl: 'whatsapp://send?text=',\r\n    mobileOnly: true,\r\n  },\r\n  {\r\n    key: 4,\r\n    id: 'copylink',\r\n    shareUrl: null,\r\n    mobileOnly: false,\r\n  },\r\n];\r\n\r\nexport const cookieConfig: CookieConfig = {\r\n  cookiePolicy: 'c_policy',\r\n  cookiePolicyExpirationDays: 60,\r\n  xsrfRequestToken: 'XSRF-REQUEST-TOKEN',\r\n};\r\n","import { Image } from '../typings/index';\r\n\r\ndeclare global {\r\n  interface Document {\r\n    documentMode?: any;\r\n  }\r\n}\r\n\r\nconst isIE = () => (\r\n  !!window.MSInputMethodContext && !!document.documentMode\r\n);\r\n\r\n// Insert url param\r\nconst insertUrlParam = (key: string, value: string, includeHash?: boolean) => {\r\n  // @ts-ignore\r\n  if (history.pushState) {\r\n    const searchParams = new URLSearchParams(window.location.search);\r\n    searchParams.set(key, value);\r\n    let newurl = `${window.location.protocol}//${window.location.host}${window.location.pathname}?${searchParams.toString()}`;\r\n    if (includeHash && window.location.hash) {\r\n      newurl = `${newurl}${window.location.hash}`;\r\n    }\r\n    window.history.pushState({ path: newurl }, '', newurl);\r\n  }\r\n};\r\n\r\n// Removes all query string entires\r\nconst removeAllQueryStrings = () => {\r\n  const url = window.location.href.replace(/(\\?.*)|(@.*)/g, '');\r\n  window.history.pushState({ path: url }, '', url);\r\n};\r\n\r\n// Get All url params\r\nconst getAllUrlParams = (search: string) => {\r\n  const hashes = search.slice(search.indexOf('?') + 1).split('&');\r\n  const params: { [key: string]: string } = {};\r\n  hashes.map((hash) => {\r\n    const [key, val] = hash.split('=');\r\n    params[key] = decodeURIComponent(val);\r\n    return true;\r\n  });\r\n  return params;\r\n};\r\n\r\n// Get param value\r\nconst getUrlParamValue = (key: any) => {\r\n  const search = Object.entries(getAllUrlParams(window.location.href)).filter((param) => (\r\n    param[0] === key\r\n  ));\r\n  return search[0] ? search[0][1] : null;\r\n};\r\n\r\n// Script exists in head of document.\r\n// Taken from: https://github.com/kaimallea/isMobile\r\nconst isMobile = () => (\r\n  /Mobi/.test(navigator.userAgent)\r\n);\r\n\r\nconst scrollIntoView = (elemToScrollTo: HTMLElement, behaviour: ScrollBehavior) => {\r\n  if (!isIE()) {\r\n    elemToScrollTo.scrollIntoView({\r\n      behavior: behaviour,\r\n    });\r\n  }\r\n};\r\n\r\nconst isPortrait = (image: Image) => (\r\n  // @ts-ignore\r\n  (image.file.details.image.height > image.file.details.image.width)\r\n);\r\n\r\nconst elementInViewport = (el: any) => {\r\n  let top = el.offsetTop;\r\n  let left = el.offsetLeft;\r\n  const width = el.offsetWidth;\r\n  const height = el.offsetHeight;\r\n\r\n  while (el.offsetParent) {\r\n    // eslint-disable-next-line no-param-reassign\r\n    el = el.offsetParent;\r\n    top += el.offsetTop;\r\n    left += el.offsetLeft;\r\n  }\r\n\r\n  return (\r\n    top >= window.pageYOffset\r\n    && left >= window.pageXOffset\r\n    && (top + height) <= (window.pageYOffset + window.innerHeight)\r\n    && (left + width) <= (window.pageXOffset + window.innerWidth)\r\n  );\r\n};\r\n\r\nconst toDataURL = (url: string, callback: Function) => {\r\n  const xhr = new XMLHttpRequest();\r\n  xhr.onload = () => {\r\n    const reader = new FileReader();\r\n    reader.onloadend = () => {\r\n      if (callback) {\r\n        callback(reader.result);\r\n      }\r\n    };\r\n    reader.readAsDataURL(xhr.response);\r\n  };\r\n  xhr.open('GET', url);\r\n  xhr.responseType = 'blob';\r\n  xhr.send();\r\n};\r\n\r\nexport {\r\n  insertUrlParam,\r\n  getAllUrlParams,\r\n  getUrlParamValue,\r\n  removeAllQueryStrings,\r\n  isMobile,\r\n  scrollIntoView,\r\n  isPortrait,\r\n  elementInViewport,\r\n  toDataURL,\r\n};\r\n","import * as React from 'react';\r\nimport { shareConfig, SharePlatformDetail } from '../../../core/config';\r\nimport { isMobile } from '../../../utilities/browser';\r\nimport SvgImage from '../SvgImage';\r\nimport SharePaneProps from './type';\r\nimport './styles.scss';\r\n\r\nconst SharePane = ({\r\n  sharePlatforms,\r\n  isVertical,\r\n  urlOverride,\r\n}: SharePaneProps) => {\r\n  const openShareDialog = (url: string, platform: string) => {\r\n    const strWindowFeatures = 'resizable=yes,scrollbars=yes,status=yes,height=500,width=800';\r\n    window.open(url, `Share on ${platform}`, strWindowFeatures);\r\n  };\r\n\r\n  const getBaseShareUrl = (platform: string) => (\r\n    shareConfig.find(({ id }) => id === platform)\r\n  )?.shareUrl;\r\n\r\n  const share = (platform: SharePlatformDetail) => {\r\n    let url = window.location.href;\r\n    const title = document.title.replace('|', ' ');\r\n\r\n    if (urlOverride) {\r\n      url = urlOverride;\r\n    }\r\n\r\n    switch (platform.id) {\r\n      case 'facebook':\r\n        openShareDialog(`${getBaseShareUrl(platform.id)}${encodeURIComponent(url)}`, platform.id);\r\n        break;\r\n      case 'twitter':\r\n        openShareDialog(`${getBaseShareUrl(platform.id)}${url}&text=${title}`, platform.id);\r\n        break;\r\n      case 'whatsapp':\r\n        window.location.href = `${getBaseShareUrl(platform.id)}${title} | ${url}`;\r\n        break;\r\n      case 'copylink':\r\n        // copyToClipBoard(url, () => {\r\n        //   /* eslint-disable-next-line */\r\n        //   alert('Link copied!');\r\n        // });\r\n        break;\r\n      default:\r\n        break;\r\n    }\r\n  };\r\n\r\n  const handleDesktopClick = (event: React.MouseEvent<HTMLButtonElement>) => {\r\n    event.preventDefault();\r\n    const platform: SharePlatformDetail = shareConfig.find(\r\n      ({ id }) => id === event.currentTarget.dataset.platform,\r\n    ) || shareConfig[0];\r\n    share(platform);\r\n  };\r\n\r\n  const handleMobileClick = (event: React.MouseEvent<HTMLButtonElement>) => {\r\n    event.preventDefault();\r\n    navigator.share({ url: window.location.href });\r\n  };\r\n\r\n  return (\r\n    <div className={`share-pane ${isVertical && 'share-pane--vertical'}`}>\r\n      <ul>\r\n        {sharePlatforms.map((sharePlatform) => (\r\n          <React.Fragment key={sharePlatform.key}>\r\n            {(!sharePlatform?.mobileOnly || (sharePlatform.mobileOnly && isMobile())) && (\r\n              <li key={sharePlatform.id} className=\"share-pane__item\">\r\n                <button\r\n                  title={sharePlatform.id}\r\n                  onClick={\r\n                    (event: React.MouseEvent<HTMLButtonElement>) => handleDesktopClick(event)\r\n                  }\r\n                  data-platform={sharePlatform.id}\r\n                >\r\n                  <SvgImage title={sharePlatform.id} reference={`#icon-${sharePlatform.id}`} />\r\n                  <span className=\"visually-hidden\">\r\n                    {sharePlatform.id}\r\n                  </span>\r\n                </button>\r\n              </li>\r\n            )}\r\n          </React.Fragment>\r\n        ))}\r\n        {navigator && typeof navigator.share === 'function' && (\r\n          <li className=\"share-pane__item share-pane__item--mobile\">\r\n            <button title=\"Share\" onClick={(event: React.MouseEvent<HTMLButtonElement>) => handleMobileClick(event)}>\r\n              <SvgImage title=\"Share\" reference=\"#icon-share\" />\r\n              <span className=\"visually-hidden\"> Share </span>\r\n            </button>\r\n          </li>\r\n        )}\r\n      </ul>\r\n    </div>\r\n  );\r\n};\r\n\r\nexport default SharePane;\r\n"],"sourceRoot":""}