{"version":3,"sources":["webpack://lcb-research-content/../src/components/lazy-hydrate.tsx"],"names":["lazyHydrate","root","hydrated","forceHydrate","image","loading","isLoading","isLoaded","toggleIsLoaded","ref","imgClassName","imgStyle","C","objectPosition","backgroundColor","objectFit","props","width","height","layout","images","placeholder","wrapperBackgroundColor","cacheKey","JSON","stringify","component","React","LayoutWrapper","Placeholder","getPlaceholderProps","MainImage","className","getMainProps","current","render","hydrate"],"mappings":"4XAgBgBA,IAedC,EACAC,EACAC,OAfEC,UACAC,YACAC,cACAC,aACAC,mBACAC,QACAC,qBACAC,sBAAW,GAAAC,EACXC,mBACAC,wBACAC,iCACGC,eAOHC,EAMEb,EANFa,MACAC,EAKEd,EALFc,OACAC,EAIEf,EAJFe,OACAC,EAGEhB,EAHFgB,OACAC,EAEEjB,EAFFiB,YACiBC,EACflB,EADFU,gBAGIS,EAAWC,KAAKC,UAAUL,GAEhCT,WACEI,YACAF,iBACAC,mBACGH,GAGL,IAAMe,EACJC,gBAACC,KAAcT,OAAQA,EAAQF,MAAOA,EAAOC,OAAQA,GACnDS,gBAACE,sBACKC,OACFT,EACAd,EACAY,EACAF,EACAC,EACAI,EACAP,EACAF,KAIJc,gBAACI,qBACMf,GACLC,MAAOA,EACPC,OAAQA,EACRc,UAAWtB,IACPuB,OACF3B,EACAC,EACAa,EACAf,EACAG,EACAe,EACAd,EACAE,MAaR,OAPIV,EAAKiC,WAEUhC,EAASgC,SAAW/B,EAAa+B,QAAUC,SAASC,WAC5DV,EAAWzB,EAAKiC,SACzBhC,EAASgC,YAAU,WAIfjC,EAAKiC,UACPC,YAAQ,KAAkClC,EAAKiC","file":"776-7f0d5a082617d8abda05.js","sourcesContent":["import React, { MutableRefObject } from \"react\"\nimport { hydrate, render } from \"react-dom\"\nimport { GatsbyImageProps } from \"./gatsby-image.browser\"\nimport { LayoutWrapper } from \"./layout-wrapper\"\nimport { Placeholder } from \"./placeholder\"\nimport { MainImageProps, MainImage } from \"./main-image\"\nimport { getMainProps, getPlaceholderProps } from \"./hooks\"\nimport { ReactElement } from \"react\"\n\ntype LazyHydrateProps = Omit<GatsbyImageProps, \"as\" | \"style\" | \"className\"> & {\n  isLoading: boolean\n  isLoaded: boolean // alwaystype SetStateAction<S> = S | ((prevState: S) => S);\n  toggleIsLoaded: (toggle: boolean) => void\n  ref: MutableRefObject<HTMLImageElement | undefined>\n}\n\nexport function lazyHydrate(\n  {\n    image,\n    loading,\n    isLoading,\n    isLoaded,\n    toggleIsLoaded,\n    ref,\n    imgClassName,\n    imgStyle = {},\n    objectPosition,\n    backgroundColor,\n    objectFit = `cover`,\n    ...props\n  }: LazyHydrateProps,\n  root: MutableRefObject<HTMLElement | undefined>,\n  hydrated: MutableRefObject<boolean>,\n  forceHydrate: MutableRefObject<boolean>\n): (() => void) | null {\n  const {\n    width,\n    height,\n    layout,\n    images,\n    placeholder,\n    backgroundColor: wrapperBackgroundColor,\n  } = image\n\n  const cacheKey = JSON.stringify(images)\n\n  imgStyle = {\n    objectFit,\n    objectPosition,\n    backgroundColor,\n    ...imgStyle,\n  }\n\n  const component = (\n    <LayoutWrapper layout={layout} width={width} height={height}>\n      <Placeholder\n        {...getPlaceholderProps(\n          placeholder,\n          isLoaded,\n          layout,\n          width,\n          height,\n          wrapperBackgroundColor,\n          objectFit,\n          objectPosition\n        )}\n      />\n\n      <MainImage\n        {...(props as Omit<MainImageProps, \"images\" | \"fallback\">)}\n        width={width}\n        height={height}\n        className={imgClassName}\n        {...getMainProps(\n          isLoading,\n          isLoaded,\n          images,\n          loading,\n          toggleIsLoaded,\n          cacheKey,\n          ref,\n          imgStyle\n        )}\n      />\n    </LayoutWrapper>\n  )\n\n  if (root.current) {\n    // Force render to mitigate \"Expected server HTML to contain a matching\" in develop\n    const doRender = hydrated.current || forceHydrate.current ? render : hydrate\n    doRender(component, root.current)\n    hydrated.current = true\n  }\n\n  return (): void => {\n    if (root.current) {\n      render((null as unknown) as ReactElement, root.current)\n    }\n  }\n}\n"],"sourceRoot":""}