{"ast":null,"code":"import { Fragment as _Fragment } from \"react/jsx-dev-runtime\";\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nvar _jsxFileName = \"/home/gkkdzdg/www/src/slices/TextSlideshowSlice/TextImageSlice.js\";\nimport cn from 'classnames';\nimport { Arrow } from 'components/gui/Arrow';\nimport Button from 'components/gui/Button';\nimport CircleButton from 'components/gui/CircleButton';\nimport CustomBlockContent from 'components/gui/CustomBlockContent';\nimport SlideshowInline from 'components/slideshowInline/SlideshowInline';\nimport Strip from 'components/strips/Strip';\nimport { useClientWidth } from 'hooks/useClientSize';\nimport { useIsDesktop } from 'hooks/useIsDevice';\nimport HTMLReactParser from 'html-react-parser';\nimport { imageBuilder } from 'lib/api';\nimport { useEffect, useRef, useState } from 'react';\nimport SliceIntro from 'slices/SliceIntro/SliceIntro';\nimport styles from './TextImageSlice.module.scss'; // Desktop\n\nconst ListItem = ({\n  data,\n  id,\n  nextId,\n  contentPosition\n}) => {\n  const backgroundImageURL = data.image && imageBuilder.image(data.image.asset).width(1280).url();\n  const backgroundColor = data.color && data.color.hex;\n  return /*#__PURE__*/_jsxDEV(\"div\", {\n    id: id,\n    className: cn(styles.listItem),\n    style: {\n      backgroundImage: backgroundImageURL ? `url(${backgroundImageURL})` : undefined,\n      backgroundColor: backgroundColor ? backgroundColor : undefined\n    },\n    children: /*#__PURE__*/_jsxDEV(Strip, {\n      className: cn(styles.listStrip),\n      style: {\n        marginLeft: contentPosition * 25 + '%'\n      },\n      title: data.title,\n      intro: data.subtitle,\n      blocks: data.text,\n      button: {\n        label: data.button\n      },\n      downHref: nextId && '#' + nextId\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 35,\n      columnNumber: 10\n    }, this)\n  }, void 0, false, {\n    fileName: _jsxFileName,\n    lineNumber: 26,\n    columnNumber: 7\n  }, this);\n};\n\nconst List = ({\n  slides\n}) => {\n  return /*#__PURE__*/_jsxDEV(_Fragment, {\n    children: slides && slides.map((slide, i) => {\n      const isLast = i == slides.length - 1;\n      return /*#__PURE__*/_jsxDEV(ListItem, {\n        data: slide,\n        contentPosition: i % 2 ? 2 : 1,\n        id: 'intro-' + (i + 1),\n        nextId: isLast ? undefined : 'intro-' + (i + 2)\n      }, slide._key, false, {\n        fileName: _jsxFileName,\n        lineNumber: 53,\n        columnNumber: 20\n      }, this);\n    })\n  }, void 0, false);\n}; // Mobile\n\n\nconst SlideItem = ({\n  data,\n  className,\n  number\n}) => {\n  const {\n    0: open,\n    1: setOpen\n  } = useState(false);\n  const {\n    0: showFullText,\n    1: setShowFullText\n  } = useState(false);\n  const imageRef = useRef();\n  const textsRef = useRef();\n  const imageURL = data.image && imageBuilder.image(data.image.asset).width(400).url();\n\n  const openClose = () => {\n    const newOpen = !open;\n    setOpen(newOpen); // textsRef.current.style.overflowY = newOpen ? 'auto' : 'hidden'\n\n    textsRef.current.scrollTo({\n      top: 0,\n      behavior: 'smooth'\n    }); // if(newOpen) {\n    //    setShowFullText(newOpen)\n    // }\n    // else {\n    //    setTimeout(() => {\n    //       setShowFullText(newOpen)\n    //    }, 800);\n    // }\n    // return;\n    // const newOpen = !open\n    // const containerWidth = textsRef.current.parentNode.clientWidth\n    // const containerHeight = textsRef.current.parentNode.clientHeight\n    // const tl = gsap.timeline()\n    // textsRef.current.style.overflowY = newOpen ? 'auto' : 'hidden'\n    // tl.to(textsRef.current, {\n    //    duration: 0.66,\n    //    ease: 'power3.inOut',\n    //    y: newOpen ? -imageRef.current.clientHeight : 0,\n    //    height: newOpen\n    //       ? containerHeight + 'px'\n    //       : containerHeight * 0.5 + 'px',\n    //    //scale: newOpen ? 1.05 + ((containerWidth - textsRef.current.clientWidth) / containerWidth) : 1,\n    // })\n    // setOpen(newOpen)\n  }; // console.log('TextImageSlice.js::94 data.text', data.text)\n  // const floatRef = useRef()\n  // const textBlockRef = useRef()\n  // const textBlockReplacerRef = useRef()\n  // const [resizeComplete, setResizeComplete] = useState(false)\n  // const [innerBlockHtml, setInnerBlockHtml] = useState()\n  // useEffect(() => {\n  //    if(resizeComplete) return;\n  //    // TODO\n  //    // PROBABLY DOESNT WORK if children > 1\n  //    if ((textBlockRef.current || textBlockReplacerRef.current) && textsRef.current && floatRef.current) {\n  //       const textBlockRefCurrent = textBlockReplacerRef.current || textBlockRef.current\n  //       const lastChild = textBlockRefCurrent.children[textBlockRefCurrent.children.length - 1]\n  //       const availableSpace = textsRef.current.offsetHeight\n  //          - floatRef.current.offsetHeight\n  //          - textBlockRefCurrent.offsetTop\n  //       const newHTML = lastChild.innerHTML.split(' ').slice(0, -1).join(' ')\n  //       if (newHTML != '' && textBlockRefCurrent.offsetHeight > availableSpace)\n  //          setInnerBlockHtml(newHTML)\n  //       else {\n  //          setInnerBlockHtml(newHTML.split(' ').slice(0, -1).join(' ') + ('…'))\n  //          setResizeComplete(true)\n  //       }\n  //    }\n  // }, [innerBlockHtml])\n\n\n  return /*#__PURE__*/_jsxDEV(\"li\", {\n    className: cn(className, styles.slideshowItem, open && styles.isOpened),\n    children: [/*#__PURE__*/_jsxDEV(\"div\", {\n      ref: imageRef,\n      className: cn(styles.slideshowImage, open && styles.isOpened),\n      children: imageURL && /*#__PURE__*/_jsxDEV(\"img\", {\n        src: imageURL\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 152,\n        columnNumber: 26\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 151,\n      columnNumber: 10\n    }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n      ref: textsRef,\n      className: cn(styles.slideshowTexts, open && styles.isOpened),\n      children: [/*#__PURE__*/_jsxDEV(\"span\", {\n        className: cn('p--m', styles.slideNumber),\n        children: number\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 156,\n        columnNumber: 13\n      }, this), /*#__PURE__*/_jsxDEV(\"h2\", {\n        className: cn('h--2', styles.title),\n        children: data.title\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 157,\n        columnNumber: 13\n      }, this), data.subtitle && /*#__PURE__*/_jsxDEV(\"p\", {\n        className: cn('p--m', styles.intro),\n        children: data.subtitle\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 158,\n        columnNumber: 31\n      }, this), data.text && /*#__PURE__*/_jsxDEV(CustomBlockContent, {\n        className: cn('p--m', styles.text),\n        blocks: data.text\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 159,\n        columnNumber: 27\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 155,\n      columnNumber: 10\n    }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n      className: styles.floatCont,\n      children: /*#__PURE__*/_jsxDEV(CircleButton, {\n        className: cn(styles.openCloseButton),\n        icon: open ? 'minus' : 'plus',\n        color: \"white\",\n        onClick: openClose\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 163,\n        columnNumber: 13\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 162,\n      columnNumber: 10\n    }, this)]\n  }, void 0, true, {\n    fileName: _jsxFileName,\n    lineNumber: 149,\n    columnNumber: 7\n  }, this);\n};\n\nconst Slideshow = ({\n  slides\n}) => {\n  return /*#__PURE__*/_jsxDEV(SlideshowInline, {\n    items: slides,\n    renderItem: (item, itemStyle, i) => /*#__PURE__*/_jsxDEV(SlideItem, {\n      data: item,\n      className: itemStyle,\n      number: `${i + 1}/${slides.length}`\n    }, item._key, false, {\n      fileName: _jsxFileName,\n      lineNumber: 182,\n      columnNumber: 10\n    }, this)\n  }, void 0, false, {\n    fileName: _jsxFileName,\n    lineNumber: 179,\n    columnNumber: 11\n  }, this);\n};\n\nconst TextImageSlice = ({\n  slides,\n  id\n}) => {\n  const introText = slides && slides.length && slides[0].intro;\n  const isDesktop = useIsDesktop();\n  return /*#__PURE__*/_jsxDEV(\"section\", {\n    id: id,\n    className: cn(styles.slideShowSlice),\n    children: [/*#__PURE__*/_jsxDEV(SliceIntro, {\n      text: introText\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 202,\n      columnNumber: 10\n    }, this), isDesktop ? /*#__PURE__*/_jsxDEV(List, {\n      slides: slides\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 204,\n      columnNumber: 15\n    }, this) : /*#__PURE__*/_jsxDEV(Slideshow, {\n      slides: slides\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 205,\n      columnNumber: 15\n    }, this)]\n  }, void 0, true, {\n    fileName: _jsxFileName,\n    lineNumber: 197,\n    columnNumber: 7\n  }, this);\n};\n\nexport default TextImageSlice;","map":{"version":3,"sources":["/home/gkkdzdg/www/src/slices/TextSlideshowSlice/TextImageSlice.js"],"names":["cn","Arrow","Button","CircleButton","CustomBlockContent","SlideshowInline","Strip","useClientWidth","useIsDesktop","HTMLReactParser","imageBuilder","useEffect","useRef","useState","SliceIntro","styles","ListItem","data","id","nextId","contentPosition","backgroundImageURL","image","asset","width","url","backgroundColor","color","hex","listItem","backgroundImage","undefined","listStrip","marginLeft","title","subtitle","text","label","button","List","slides","map","slide","i","isLast","length","_key","SlideItem","className","number","open","setOpen","showFullText","setShowFullText","imageRef","textsRef","imageURL","openClose","newOpen","current","scrollTo","top","behavior","slideshowItem","isOpened","slideshowImage","slideshowTexts","slideNumber","intro","floatCont","openCloseButton","Slideshow","item","itemStyle","TextImageSlice","introText","isDesktop","slideShowSlice"],"mappings":"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","sourcesContent":["\nimport cn from 'classnames'\nimport { Arrow } from 'components/gui/Arrow'\nimport Button from 'components/gui/Button'\nimport CircleButton from 'components/gui/CircleButton'\nimport CustomBlockContent from 'components/gui/CustomBlockContent'\nimport SlideshowInline from 'components/slideshowInline/SlideshowInline'\nimport Strip from 'components/strips/Strip'\nimport { useClientWidth } from 'hooks/useClientSize'\nimport { useIsDesktop } from 'hooks/useIsDevice'\nimport HTMLReactParser from 'html-react-parser'\nimport { imageBuilder } from 'lib/api'\nimport { useEffect, useRef, useState } from 'react'\nimport SliceIntro from 'slices/SliceIntro/SliceIntro'\nimport styles from './TextImageSlice.module.scss'\n\n\n// Desktop\n\nconst ListItem = ({ data, id, nextId, contentPosition, }) => {\n\n   const backgroundImageURL = data.image && imageBuilder.image(data.image.asset).width(1280).url()\n   const backgroundColor = data.color && data.color.hex\n\n   return (\n      <div\n         id={id}\n         className={cn(styles.listItem)}\n         style={{\n            backgroundImage: backgroundImageURL ? `url(${backgroundImageURL})` : undefined,\n            backgroundColor: backgroundColor ? backgroundColor : undefined,\n         }}\n      >\n         {/* {data.intro && <SliceIntro text={data.intro} />} */}\n         <Strip\n            className={cn(styles.listStrip)}\n            style={{ marginLeft: contentPosition * 25 + '%' }}\n            title={data.title}\n            intro={data.subtitle}\n            blocks={data.text}\n            button={{ label: data.button }}\n            downHref={nextId && '#' + nextId}\n         />\n      </div>\n   )\n}\nconst List = ({ slides, }) => {\n\n   return (\n      <>\n         {slides && slides.map((slide, i) => {\n            const isLast = i == slides.length - 1\n            return <ListItem\n               key={slide._key}\n               data={slide}\n               contentPosition={i % 2 ? 2 : 1}\n               id={'intro-' + (i + 1)}\n               nextId={isLast ? undefined : 'intro-' + (i + 2)}\n            />\n         })}\n      </>\n   )\n}\n\n// Mobile\nconst SlideItem = ({ data, className, number, }) => {\n\n   const [open, setOpen] = useState(false)\n   const [showFullText, setShowFullText] = useState(false)\n   const imageRef = useRef()\n   const textsRef = useRef()\n\n   const imageURL = data.image && imageBuilder.image(data.image.asset).width(400).url()\n\n   const openClose = () => {\n      const newOpen = !open\n      setOpen(newOpen)\n\n      // textsRef.current.style.overflowY = newOpen ? 'auto' : 'hidden'\n\n      textsRef.current.scrollTo({top: 0, behavior: 'smooth'})\n\n      // if(newOpen) {\n      //    setShowFullText(newOpen)\n      // }\n      // else {\n      //    setTimeout(() => {\n      //       setShowFullText(newOpen)\n      //    }, 800);\n      // }\n      // return;\n      // const newOpen = !open\n      // const containerWidth = textsRef.current.parentNode.clientWidth\n      // const containerHeight = textsRef.current.parentNode.clientHeight\n\n      // const tl = gsap.timeline()\n\n      // textsRef.current.style.overflowY = newOpen ? 'auto' : 'hidden'\n\n      // tl.to(textsRef.current, {\n      //    duration: 0.66,\n      //    ease: 'power3.inOut',\n      //    y: newOpen ? -imageRef.current.clientHeight : 0,\n      //    height: newOpen\n      //       ? containerHeight + 'px'\n      //       : containerHeight * 0.5 + 'px',\n      //    //scale: newOpen ? 1.05 + ((containerWidth - textsRef.current.clientWidth) / containerWidth) : 1,\n      // })\n\n      // setOpen(newOpen)\n   }\n\n   // console.log('TextImageSlice.js::94 data.text', data.text)\n\n   // const floatRef = useRef()\n   // const textBlockRef = useRef()\n   // const textBlockReplacerRef = useRef()\n   // const [resizeComplete, setResizeComplete] = useState(false)\n   // const [innerBlockHtml, setInnerBlockHtml] = useState()\n\n   // useEffect(() => {\n   //    if(resizeComplete) return;\n\n   //    // TODO\n   //    // PROBABLY DOESNT WORK if children > 1\n\n   //    if ((textBlockRef.current || textBlockReplacerRef.current) && textsRef.current && floatRef.current) {\n\n   //       const textBlockRefCurrent = textBlockReplacerRef.current || textBlockRef.current\n\n   //       const lastChild = textBlockRefCurrent.children[textBlockRefCurrent.children.length - 1]\n   //       const availableSpace = textsRef.current.offsetHeight\n   //          - floatRef.current.offsetHeight\n   //          - textBlockRefCurrent.offsetTop\n\n   //       const newHTML = lastChild.innerHTML.split(' ').slice(0, -1).join(' ')\n         \n   //       if (newHTML != '' && textBlockRefCurrent.offsetHeight > availableSpace)\n   //          setInnerBlockHtml(newHTML)\n   //       else {\n   //          setInnerBlockHtml(newHTML.split(' ').slice(0, -1).join(' ') + ('…'))\n   //          setResizeComplete(true)\n   //       }\n   //    }\n\n   // }, [innerBlockHtml])\n\n   return (\n      <li className={cn(className, styles.slideshowItem, open && styles.isOpened)}>\n\n         <div ref={imageRef} className={cn(styles.slideshowImage, open && styles.isOpened)}>\n            {imageURL && <img src={imageURL} />}\n         </div>\n\n         <div ref={textsRef} className={cn(styles.slideshowTexts, open && styles.isOpened)}>\n            <span className={cn('p--m', styles.slideNumber,)}>{number}</span>\n            <h2 className={cn('h--2', styles.title)}>{data.title}</h2>\n            {data.subtitle && <p className={cn('p--m', styles.intro)}>{data.subtitle}</p>}\n            {data.text && <CustomBlockContent className={cn('p--m', styles.text)} blocks={data.text} />}\n         </div>\n\n         <div className={styles.floatCont}>\n            <CircleButton\n               className={cn(styles.openCloseButton)}\n               icon={open ? 'minus' : 'plus'}\n               color='white'\n               onClick={openClose}\n               />\n            {/* <Button onClick={openClose} className={styles.arrowDown}>\n               <Arrow direction='up' size='medium' />\n            </Button> */}\n         </div>\n      </li>\n   )\n}\n\nconst Slideshow = ({ slides, }) => {\n\n   return <SlideshowInline\n      items={slides}\n      renderItem={(item, itemStyle, i) =>\n         <SlideItem key={item._key}\n            data={item}\n            className={itemStyle}\n            number={`${i + 1}/${slides.length}`}\n            />\n      }\n      />\n}\n\nconst TextImageSlice = ({ slides, id, }) => {\n\n   const introText = slides && slides.length && slides[0].intro\n   const isDesktop = useIsDesktop()\n\n   return (\n      <section\n         id={id}\n         className={cn(styles.slideShowSlice)}\n      >\n\n         <SliceIntro text={introText} />\n         {isDesktop\n            ? <List slides={slides} />\n            : <Slideshow slides={slides} />\n         }\n\n      </section>\n   )\n}\n\nexport default TextImageSlice\n\n"]},"metadata":{},"sourceType":"module"}