{"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/CityMapSlice/HousesList.js\";\nimport cn from 'classnames';\nimport Bubble from 'components/bubble/Bubble';\nimport BoxButton from 'components/gui/BoxButton';\nimport CircleButton from 'components/gui/CircleButton';\nimport HouseInfos from 'components/houseInfos/HouseInfos';\nimport List from 'components/list/List';\nimport StatusBanner from 'components/statusBanner/StatusBanner';\nimport useLang from 'contexts/useLang';\nimport useLocale from 'contexts/useLocale';\nimport useLocaleDate from 'contexts/useLocaleDate';\nimport { useIsDesktop } from 'hooks/useIsDevice';\nimport HTMLReactParser from 'html-react-parser';\nimport { getNewsPage, imageBuilder } from 'lib/api';\nimport Link from 'next/link';\nimport styles from './HousesList.module.scss';\nexport const HouseItem = ({\n  className,\n  house,\n  highlight,\n  onMouseEvent,\n  onClose\n}) => {\n  const locale = useLocale();\n  const lang = useLang();\n  const isDesktop = useIsDesktop();\n  const imgSrc = house.hero && imageBuilder.image(house.hero).width(1280 / 4).url();\n  const dateStr = useLocaleDate(house.openingDate);\n  const dateHtml = dateStr ? locale('opening') + '<br/>' + dateStr : locale('opening-unknown-date').replace(' ', '<br/>'); //const inner = <li\n\n  return /*#__PURE__*/_jsxDEV(\"li\", {\n    onMouseOver: onMouseEvent,\n    onMouseOut: onMouseEvent,\n    className: cn(styles.listItem, highlight && styles.highlight, !house.open && styles.notOpened, className),\n    children: [house.open ? /*#__PURE__*/_jsxDEV(_Fragment, {\n      children: imgSrc && /*#__PURE__*/_jsxDEV(Link, {\n        href: house.url,\n        as: house.url,\n        children: /*#__PURE__*/_jsxDEV(\"div\", {\n          className: cn(styles.half, styles.imageCont),\n          children: [/*#__PURE__*/_jsxDEV(\"img\", {\n            src: imgSrc\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 49,\n            columnNumber: 16\n          }, this), /*#__PURE__*/_jsxDEV(StatusBanner, {\n            status: house.statusTextKey,\n            topRight: true\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 50,\n            columnNumber: 16\n          }, this)]\n        }, void 0, true, {\n          fileName: _jsxFileName,\n          lineNumber: 48,\n          columnNumber: 13\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 47,\n        columnNumber: 21\n      }, this)\n    }, void 0, false) : imgSrc && /*#__PURE__*/_jsxDEV(\"div\", {\n      className: cn(styles.half, styles.imageCont),\n      children: [/*#__PURE__*/_jsxDEV(\"img\", {\n        src: imgSrc\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 60,\n        columnNumber: 13\n      }, this), /*#__PURE__*/_jsxDEV(StatusBanner, {\n        status: house.statusTextKey,\n        topRight: true\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 61,\n        columnNumber: 13\n      }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n        className: cn(styles.openingDate),\n        children: /*#__PURE__*/_jsxDEV(\"h3\", {\n          className: cn('h--1'),\n          children: HTMLReactParser(dateHtml)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 66,\n          columnNumber: 16\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 65,\n        columnNumber: 13\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 59,\n      columnNumber: 20\n    }, this) // <div className={cn(styles.half, styles.leftContainer)}>\n    //    <div className={cn(styles.line)}>\n    //       {dateStr && <div>\n    //          <h3 className={cn('h--3')}>{locale('opening')}</h3>\n    //          <h3 className={cn('h--3')}>{dateStr}</h3>\n    //       </div>\n    //       }\n    //       <Bubble text={'Future'} stretch />\n    //    </div>\n    //    {isDesktop && (\n    //       (house.canApply)\n    //          ? <BoxButton\n    //             className={cn(styles.button)}\n    //             label={locale('apply')}\n    //             fullWidth={true}\n    //             onClick={() => { }}\n    //             icon='right'\n    //          />\n    //          : <BoxButton\n    //             className={cn(styles.button)}\n    //             label={locale('get-notified-of-availability')}\n    //             fullWidth={true}\n    //             onClick={() => { }}\n    //             icon='right'\n    //          />\n    //    )}\n    // </div>\n    , /*#__PURE__*/_jsxDEV(\"div\", {\n      className: cn(styles.half, styles.infosContainer),\n      children: /*#__PURE__*/_jsxDEV(HouseInfos, {\n        className: cn(styles.houseInfos),\n        smaller: true,\n        house: house,\n        renderTitle: true,\n        renderBubble: isDesktop,\n        buttonLabel: house.open ? locale('join-house').replace('{house}', house.title) : locale('discover-house').replace('{house}', house.title),\n        buttonHref: house.url,\n        buttonClassName: styles.button,\n        white: !house.open\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 103,\n        columnNumber: 10\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 101,\n      columnNumber: 7\n    }, this), onClose && /*#__PURE__*/_jsxDEV(CircleButton, {\n      onClick: onClose,\n      className: cn(styles.closeButton),\n      icon: \"close\"\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 140,\n      columnNumber: 19\n    }, this)]\n  }, house._id, true, {\n    fileName: _jsxFileName,\n    lineNumber: 33,\n    columnNumber: 11\n  }, this); // return house.open && house.url ? (\n  // <Link href={house.url}>\n  //    {inner}\n  // </Link>\n  // ) :\n  //    inner\n};\n\nconst HousesList = ({\n  houses,\n  highlightHouse,\n  handleMouseEvent,\n  placeholder\n}) => {\n  return /*#__PURE__*/_jsxDEV(List, {\n    classNameList: styles.list,\n    items: houses,\n    renderItem: house => /*#__PURE__*/_jsxDEV(HouseItem, {\n      house: house,\n      highlight: house.slug == highlightHouse,\n      onMouseEvent: handleMouseEvent && (event => handleMouseEvent(event.type, house.slug))\n    }, house.slug, false, {\n      fileName: _jsxFileName,\n      lineNumber: 164,\n      columnNumber: 10\n    }, this),\n    filters: [{\n      label: 'Toutes',\n      filter: house => true\n    }, {\n      label: 'Libres',\n      filter: house => house.canApply\n    }, {\n      label: 'Futures',\n      filter: house => !house.open\n    }],\n    searchFilter: (house, input) => house.title.toLowerCase().includes(input) || house.area && house.area.toLowerCase().includes(input) || house.location && house.location.toLowerCase().includes(input),\n    placeholder: placeholder\n  }, void 0, false, {\n    fileName: _jsxFileName,\n    lineNumber: 159,\n    columnNumber: 11\n  }, this);\n};\n\nexport default HousesList;","map":{"version":3,"sources":["/home/gkkdzdg/www/src/slices/CityMapSlice/HousesList.js"],"names":["cn","Bubble","BoxButton","CircleButton","HouseInfos","List","StatusBanner","useLang","useLocale","useLocaleDate","useIsDesktop","HTMLReactParser","getNewsPage","imageBuilder","Link","styles","HouseItem","className","house","highlight","onMouseEvent","onClose","locale","lang","isDesktop","imgSrc","hero","image","width","url","dateStr","openingDate","dateHtml","replace","listItem","open","notOpened","half","imageCont","statusTextKey","infosContainer","houseInfos","title","button","closeButton","_id","HousesList","houses","highlightHouse","handleMouseEvent","placeholder","list","slug","event","type","label","filter","canApply","input","toLowerCase","includes","area","location"],"mappings":"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","sourcesContent":["\nimport cn from 'classnames'\nimport Bubble from 'components/bubble/Bubble'\nimport BoxButton from 'components/gui/BoxButton'\nimport CircleButton from 'components/gui/CircleButton'\nimport HouseInfos from 'components/houseInfos/HouseInfos'\nimport List from 'components/list/List'\nimport StatusBanner from 'components/statusBanner/StatusBanner'\nimport useLang from 'contexts/useLang'\nimport useLocale from 'contexts/useLocale'\nimport useLocaleDate from 'contexts/useLocaleDate'\nimport { useIsDesktop } from 'hooks/useIsDevice'\nimport HTMLReactParser from 'html-react-parser'\nimport { getNewsPage, imageBuilder } from 'lib/api'\nimport Link from 'next/link'\nimport styles from './HousesList.module.scss'\n\n\n\nexport const HouseItem = ({ className, house, highlight, onMouseEvent, onClose, }) => {\n\n   const locale = useLocale()\n   const lang = useLang()\n   const isDesktop = useIsDesktop()\n\n   const imgSrc = house.hero && imageBuilder.image(house.hero).width(1280 / 4).url()\n\n   const dateStr = useLocaleDate(house.openingDate)\n   const dateHtml = dateStr ? locale('opening') + '<br/>' + dateStr\n      : locale('opening-unknown-date').replace(' ', '<br/>')\n\n   //const inner = <li\n   return <li\n      key={house._id}\n      onMouseOver={onMouseEvent}\n      onMouseOut={onMouseEvent}\n      className={cn(\n         styles.listItem,\n         highlight && styles.highlight,\n         !house.open && styles.notOpened,\n         className,\n      )}\n   >\n\n\n      {house.open ? (<>\n         {imgSrc && <Link href={house.url} as={house.url}>\n            <div className={cn(styles.half, styles.imageCont)}>\n               <img src={imgSrc} />\n               <StatusBanner\n                  status={house.statusTextKey}\n                  topRight\n               />\n            </div>\n         </Link>}\n\n      </>) :\n\n         imgSrc && <div className={cn(styles.half, styles.imageCont)}>\n            <img src={imgSrc} />\n            <StatusBanner\n               status={house.statusTextKey}\n               topRight\n            />\n            <div className={cn(styles.openingDate)}>\n               <h3 className={cn('h--1')}>{HTMLReactParser(dateHtml)}</h3>\n            </div>\n         </div>\n         // <div className={cn(styles.half, styles.leftContainer)}>\n         //    <div className={cn(styles.line)}>\n         //       {dateStr && <div>\n         //          <h3 className={cn('h--3')}>{locale('opening')}</h3>\n         //          <h3 className={cn('h--3')}>{dateStr}</h3>\n         //       </div>\n         //       }\n         //       <Bubble text={'Future'} stretch />\n         //    </div>\n         //    {isDesktop && (\n         //       (house.canApply)\n         //          ? <BoxButton\n         //             className={cn(styles.button)}\n         //             label={locale('apply')}\n         //             fullWidth={true}\n         //             onClick={() => { }}\n         //             icon='right'\n         //          />\n         //          : <BoxButton\n         //             className={cn(styles.button)}\n         //             label={locale('get-notified-of-availability')}\n         //             fullWidth={true}\n         //             onClick={() => { }}\n         //             icon='right'\n         //          />\n         //    )}\n         // </div>\n      }\n\n      {/* - - - */}\n\n\n      <div className={cn(styles.half, styles.infosContainer)}>\n\n         <HouseInfos\n            className={cn(styles.houseInfos)}\n            smaller\n            house={house}\n            renderTitle={true}\n            renderBubble={isDesktop}\n            buttonLabel={house.open\n               ? locale('join-house').replace('{house}', house.title)\n               : locale('discover-house').replace('{house}', house.title)\n            }\n            buttonHref={house.url}\n            buttonClassName={styles.button}\n            white={!house.open}\n         />\n\n      </div>\n\n      {/* {!isDesktop && <div className={cn(styles.infosContainer)}>\n\n         {(!house.canApply || house.fullHouse)\n            ? <BoxButton\n               className={cn(styles.button)}\n               label={locale('get-notified-of-availability')}\n               fullWidth={true}\n               onClick={() => { }}\n            />\n            : <BoxButton\n               className={cn(styles.button)}\n               label={locale('apply')}\n               fullWidth={true}\n               onClick={() => { }}\n            />\n         }\n\n      </div>\n      } */}\n\n      {onClose && <CircleButton\n         onClick={onClose}\n         className={cn(styles.closeButton)}\n         icon='close'\n      />}\n   </li>\n\n\n   // return house.open && house.url ? (\n   // <Link href={house.url}>\n   //    {inner}\n   // </Link>\n   // ) :\n   //    inner\n\n}\n\nconst HousesList = ({ houses, highlightHouse, handleMouseEvent, placeholder, }) => {\n\n   return <List\n      classNameList={styles.list}\n      items={houses}\n\n      renderItem={house =>\n         <HouseItem\n            key={house.slug}\n            house={house}\n            highlight={house.slug == highlightHouse}\n            onMouseEvent={handleMouseEvent && (event => handleMouseEvent(event.type, house.slug))}\n         />\n      }\n\n      filters={[\n         { label: 'Toutes', filter: house => true },\n         { label: 'Libres', filter: house => house.canApply },\n         { label: 'Futures', filter: house => !house.open },\n      ]}\n\n      searchFilter={\n         (house, input) =>\n            house.title.toLowerCase().includes(input)\n            || (house.area && house.area.toLowerCase().includes(input))\n            || (house.location && house.location.toLowerCase().includes(input))\n      }\n\n      placeholder={placeholder}\n   />\n}\n\nexport default HousesList\n\n"]},"metadata":{},"sourceType":"module"}