{"version":3,"file":"modern.discover.CMEmaO4T.js","names":["isValidElement","cloneElement","helpers.isText","helpers.stripEmptyTrailingParagraphFromDocument","exports","styled","plume","MobileFiltersBarContainer","DesktopFiltersBarContainer","FiltersListWrapper","FilterItem","props","$hidden","FiltersList","$wrapped","FilterOptionItemWrapper","$selected","COLORS","PRIMARY_BLUE_500","TEXT_PRIMARY","ToggleFiltersButton","getHeightPropList","nbItems","getFlexPropItem","FilterOptionsListWrapper","children","length"],"sources":["../../../../../../owl-nest/external/owl-kit/src/styles/card/partner.tsx","../../../../../../owl-nest/external/owl-kit/src/components/card/PartnerOperationCard.tsx","../../../../../../owl-nest/external/owl-kit/src/components/carousel/SlidingCarousel.tsx","../../../../../../owl-nest/external/owl-kit/src/components/HighlightedTitle.tsx","../../../../../../owl-nest/common/services/src/partnersOperation.ts","../../src/modern/components/Menu/Sausage/item.js","../../src/modern/components/Menu/Sausage/list.js","../../src/modern/components/Menu/Sausage/index.js","../../src/modern/features/discover/utils/data.ts","../../src/modern/features/discover/hooks/usePartnersOperation.ts","../../src/modern/features/discover/UFE.ts","../../../../../../node_modules/@contentful/rich-text-react-renderer/node_modules/@contentful/rich-text-types/dist/esm/blocks.mjs","../../../../../../node_modules/@contentful/rich-text-react-renderer/node_modules/@contentful/rich-text-types/dist/esm/inlines.mjs","../../../../../../node_modules/@contentful/rich-text-react-renderer/node_modules/@contentful/rich-text-types/dist/esm/marks.mjs","../../../../../../node_modules/@contentful/rich-text-react-renderer/node_modules/@contentful/rich-text-types/dist/esm/schemaConstraints.mjs","../../../../../../node_modules/@contentful/rich-text-react-renderer/node_modules/@contentful/rich-text-types/dist/esm/emptyDocument.mjs","../../../../../../node_modules/@contentful/rich-text-react-renderer/node_modules/@contentful/rich-text-types/dist/esm/helpers.mjs","../../../../../../node_modules/@contentful/rich-text-react-renderer/node_modules/@contentful/rich-text-types/dist/esm/validator/errors.mjs","../../../../../../node_modules/@contentful/rich-text-react-renderer/node_modules/@contentful/rich-text-types/dist/esm/validator/assert.mjs","../../../../../../node_modules/@contentful/rich-text-react-renderer/node_modules/@contentful/rich-text-types/dist/esm/validator/node.mjs","../../../../../../node_modules/@contentful/rich-text-react-renderer/node_modules/@contentful/rich-text-types/dist/esm/validator/index.mjs","../../../../../../node_modules/@contentful/rich-text-react-renderer/dist/rich-text-react-renderer.esm.js","../../../../../../node_modules/@contentful/rich-text-types/dist/blocks.js","../../../../../../node_modules/@contentful/rich-text-types/dist/inlines.js","../../../../../../node_modules/@contentful/rich-text-types/dist/marks.js","../../../../../../node_modules/@contentful/rich-text-types/dist/schemaConstraints.js","../../../../../../node_modules/@contentful/rich-text-types/dist/types.js","../../../../../../node_modules/@contentful/rich-text-types/dist/nodeTypes.js","../../../../../../node_modules/@contentful/rich-text-types/dist/emptyDocument.js","../../../../../../node_modules/@contentful/rich-text-types/dist/helpers.js","../../../../../../node_modules/@contentful/rich-text-types/dist/schemas/index.js","../../../../../../node_modules/@contentful/rich-text-types/dist/index.js","../../../../../../owl-nest/common/rich-text/src/RichText.tsx","../../src/modern/features/discover/components/Partners.tsx","../../src/modern/features/discover/utils/filters.ts","../../src/modern/features/discover/hooks/useSearch.ts","../../src/modern/features/discover/components/searchbar/AutosizeInput.tsx","../../src/modern/features/discover/components/searchbar/index.tsx","../../src/modern/features/discover/components/filtersbar/HorizontalScroller.tsx","../../src/modern/features/discover/components/filtersbar/styles.ts","../../src/modern/features/discover/components/filtersbar/MobileFiltersList.tsx","../../src/modern/features/discover/components/filtersbar/FilterOptionsList.tsx","../../src/modern/features/discover/components/filtersbar/DesktopFiltersList.tsx","../../src/modern/features/discover/components/filtersbar/index.tsx","../../src/modern/features/discover/components/noresults/index.tsx","../../src/modern/features/discover/components/results/index.tsx","../../src/modern/features/discover/views/SearchSection.tsx","../../src/modern/features/discover/index.tsx"],"sourcesContent":["import { styled, css } from 'next-yak'\n\nimport * as button from '../button'\nimport * as copy from '../copy'\nimport * as link from '../link'\nimport * as tag from '../tag'\n\nimport * as colors from '../../constants/colors'\nimport * as effects from '../../constants/effects'\nimport * as fonts from '../../constants/fonts'\nimport * as glyphs from '../../icons/glyphs'\nimport * as utils from '../../utils'\nimport * as zindex from '../../constants/zindex'\n\nexport const Picture = styled.div<{ $url: string }>`\n background-color: ${colors.PRIMARY_GREY_500};\n ${({ $url }) => {\n if ($url) {\n return css`\n background-image: ${({ $url }) => `url(${$url})`};\n `\n }\n }}\n background-size: cover;\n background-position: center;\n height: 122px;\n width: 100%;\n`\n\nexport const Category = styled.span`\n background-color: ${(props) => utils.colors.primary(props)};\n border-radius: 2px;\n color: ${colors.PRIMARY_GREY_000};\n font-size: 13px;\n font-style: ${fonts.PRIMARY_FONT};\n font-weight: 500;\n left: -5px;\n line-height: 18px;\n padding: 3px 15px;\n position: relative;\n top: 10px;\n`\n\nexport const Brand = styled.h3`\n color: ${colors.TEXT_TERTIARY};\n font-size: 10px;\n font-weight: 700;\n line-height: 14px;\n margin: 0 0 6px 0;\n overflow: hidden;\n text-overflow: ellipsis;\n text-transform: uppercase;\n white-space: nowrap;\n`\n\nexport const Description = styled.p`\n color: ${colors.PRIMARY_GREY_900};\n font-family: ${fonts.PRIMARY_FONT};\n font-size: 13px;\n font-weight: 400;\n line-height: 20px;\n margin: 0;\n height: calc(3 * 22px); /* 3 lines max */\n`\n\nexport const Body = styled.div`\n padding: 12px;\n display: block;\n\n &:hover {\n opacity: 0.9;\n }\n`\n\nexport const Container = styled.a`\n cursor: pointer;\n text-decoration: none;\n`\n\nexport const Wrapper = styled.div`\n background-color: ${colors.PRIMARY_GREY_000};\n border: 1px solid ${colors.PRIMARY_SAND_200};\n width: 250px;\n flex: 1 1 auto;\n box-shadow: none;\n transition: all 150ms ease-out;\n\n &:hover {\n transition: all 200ms ease-in-out;\n box-shadow: ${effects.SHADOW_4};\n }\n`\n\nexport const OperationWrapper = styled.div`\n background-color: ${colors.PRIMARY_GREY_000};\n border-radius: 4px;\n border: 1px solid ${colors.PRIMARY_SAND_200};\n overflow: hidden;\n display: flex;\n flex-direction: column;\n`\n\nexport const OperationLink = styled.a`\n display: flex;\n`\n\nexport const OperationHeader = styled.div`\n box-sizing: border-box;\n padding-bottom: 0px;\n position: relative;\n\n ${tag.StatusPill} {\n z-index: ${zindex.ABOVE};\n position: absolute;\n top: 16px;\n left: 16px;\n }\n`\n\nexport const LinkWrapper = styled(copy.S.regular)`\n display: flex;\n justify-content: center;\n width: 100%;\n\n ${link.Base} {\n display: flex;\n color: ${colors.PRIMARY_SAND_900}; // HACK: Irregular font manipulation\n }\n`\n\nexport const OperationContent = styled.div<{ $compact?: boolean }>`\n display: flex;\n flex-direction: column;\n height: 100%;\n\n ${({ $compact }) => {\n if ($compact) {\n return css`\n padding: 21px 16px 16px;\n `\n }\n\n return css`\n padding: 21px 22px 26px 22px;\n `\n }}\n\n ${button.Base} {\n display: flex;\n width: fit-content;\n margin: 0 auto;\n margin-bottom: 16px;\n }\n\n ${button.RoundButton} {\n width: 100%;\n font-weight: 700;\n\n &:hover {\n ${glyphs.stroke.ArrowRight} {\n right: -8px;\n }\n }\n\n ${glyphs.stroke.ArrowRight} {\n right: 0px;\n position: relative;\n transition: 0.3s cubic-bezier(0.83, 0, 0.17, 1);\n transition-property: right;\n }\n }\n`\n\nexport const CompactOperationDescription = styled(copy.S.regular)`\n margin: 0 0 18px 0;\n\n && {\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n`\n\nexport const OperationDescription = styled.span`\n margin: 16px 0;\n`\n\nexport const KeyList = styled.div`\n margin-bottom: 40px;\n flex-grow: 1;\n\n ${copy.M.semiBold} {\n margin-bottom: 8px;\n }\n\n ul {\n margin: 0;\n\n li {\n position: relative;\n margin-bottom: 8px;\n\n &::before {\n content: url(\"data:image/svg+xml; utf8, \");\n position: absolute;\n left: -23px;\n top: 3px;\n }\n }\n }\n`\n","import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport * as glyphs from '../../icons/glyphs'\nimport * as S from '../../styles'\nimport { Button } from '../button/Button'\nimport { Link } from '../Link'\nimport { Picture } from '../Picture'\nimport { StatusPill } from '../tag/StatusPill'\nimport { Tag } from '../tag/Tag'\nimport { RoundButton } from '../button/RoundButton'\n\nexport type PartnerOperationCardProps = {\n buttonUrl: string\n buttonTarget?: React.AnchorHTMLAttributes['target']\n className?: string\n compact?: boolean\n isOngoing: boolean\n linkUrl?: string\n linkTarget?: React.AnchorHTMLAttributes['target']\n pictureUrl: string\n pictureSrcSet: string\n translation: {\n description: React.ReactNode\n keyList?: React.ReactNode\n keyTitle?: string\n buttonMore: string\n link: string\n status: string\n tag?: string\n }\n}\n\nfunction PartnerOperationCardComponent({\n buttonUrl,\n buttonTarget,\n className,\n compact = false,\n isOngoing,\n linkUrl,\n linkTarget,\n pictureUrl,\n pictureSrcSet,\n translation,\n}: PartnerOperationCardProps): React.ReactElement {\n return (\n \n \n {translation.status}\n \n \n \n \n {compact ? (\n \n ) : (\n \n )}\n \n )\n}\n\nconst OperationPicture = styled(Picture)`\n width: 100%;\n`\n\ntype OperationContent = {\n buttonUrl: string\n linkUrl?: string\n translation: {\n description: React.ReactNode\n keyList?: React.ReactNode\n keyTitle?: string\n buttonMore: string\n link: string\n tag?: string\n }\n}\n\nfunction OperationContent({ buttonUrl, linkUrl, translation }: OperationContent): React.ReactElement {\n return (\n \n {translation.tag}\n {translation.description}\n \n {translation.keyTitle}\n {translation.keyList}\n \n \n {linkUrl && (\n \n \n {translation.link}\n \n \n )}\n \n )\n}\n\ntype CompactOperationContent = {\n buttonUrl: string\n buttonTarget?: React.AnchorHTMLAttributes['target']\n linkUrl?: string\n linkTarget?: React.AnchorHTMLAttributes['target']\n translation: {\n description: React.ReactNode\n buttonMore: string\n link: string\n }\n}\n\nfunction CompactOperationContent({\n buttonUrl,\n buttonTarget,\n translation,\n linkUrl,\n linkTarget,\n}: CompactOperationContent): React.ReactElement {\n return (\n \n {translation.description}\n }\n inverted\n >\n {translation.buttonMore}\n \n {linkUrl && (\n \n \n {translation.link}\n \n \n )}\n \n )\n}\n\nexport const PartnerOperationCard = styled(PartnerOperationCardComponent)``\n","import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport { SliderButton } from '../button/SliderButton'\nimport * as S from '../../styles/carousel'\nimport * as hooks from '../../hooks'\n\ntype SlidingCarouselProps = {\n children: React.ReactNode\n style?: React.CSSProperties\n className?: string\n $scrollOffset?: number\n $verticalOnMobile?: boolean\n}\n\nfunction SlidingCarouselComponent({\n children,\n style,\n className,\n $scrollOffset = 280,\n $verticalOnMobile = false,\n}: SlidingCarouselProps): React.ReactElement {\n const $carouselRef = React.useRef(null)\n\n const [canScrollRight, setCanScrollRight] = React.useState(true)\n const [canScrollLeft, setCanScrollLeft] = React.useState(false)\n const [contentIsScrollable, setContentAsScrollable] = React.useState(true)\n\n hooks.useScrollableListener($carouselRef, (scrollable) => {\n setContentAsScrollable(scrollable.x)\n })\n\n hooks.useScrollListener($carouselRef, () => {\n if (contentIsScrollable) {\n if ($carouselRef.current && $carouselRef.current?.clientWidth !== $carouselRef.current?.scrollWidth) {\n setCanScrollLeft($carouselRef.current.scrollLeft > 0)\n setCanScrollRight(\n $carouselRef.current.scrollWidth - $carouselRef.current.scrollLeft !== $carouselRef.current.clientWidth,\n )\n }\n }\n })\n\n hooks.useIsoLayoutEffect(() => {\n if ($carouselRef.current) {\n $carouselRef.current.scrollLeft = 0\n }\n }, [children])\n\n const handleScrollLeft = (): void => {\n if ($carouselRef.current) {\n $carouselRef.current.scrollLeft -= $scrollOffset\n }\n }\n\n const handleScrollRight = (): void => {\n if ($carouselRef.current) {\n $carouselRef.current.scrollLeft += $scrollOffset\n }\n }\n\n return (\n \n {contentIsScrollable && (\n \n \n \n \n \n \n )}\n \n {children}\n \n \n )\n}\n\nexport const SlidingCarousel = styled(SlidingCarouselComponent)``\n","import * as React from 'react'\n\nimport * as heading from '../styles/heading'\n\ntype HighlightedTitleProps = heading.HighlightedTitleProps & React.HTMLAttributes\n\nexport function HighlightedTitle({ children, ...props }: HighlightedTitleProps) {\n return {children}\n}\n","import * as jotai from 'jotai'\n\nimport * as api from '@owl-nest/api-client/latest'\nimport * as hooks from '@owl-nest/hooks'\nimport * as Enum from '@owl-nest/legacy-enum'\nimport { fragment, query } from '@owl-nest/graphql'\nimport { type Request, type Response, responsiveImageFragment, type ResponsiveImage } from '@owl-nest/contentful'\n\ntype Locale = api.Locale\n\nexport const PartnerOperationStatus = Enum.create({\n ONGOING: 'En cours',\n ENDED: 'Terminé',\n})\n\nexport type PartnerOperationStatus = Enum.ValueOf\n\nexport type BasePartnersOperation = {\n cover: ResponsiveImage\n keyList: {\n json: any\n }\n partnerUserId: number | null\n status: PartnerOperationStatus\n tag: string\n urlMore: string\n urlProjectList: string\n}\n\nexport type PartnersOperation = BasePartnersOperation & {\n description: {\n json: any\n }\n}\n\nexport type PartnersOperationCollectionResult = {\n partnersOperationCollection: {\n items: PartnersOperation[]\n }\n}\n\nexport type PartnersOperationInput = {\n locale?: api.Locale\n skip: number\n limit: number\n}\n\nexport type OngoingPartnersOperation = BasePartnersOperation & {\n shortDescription: string | null\n}\n\nexport type OngoingPartnersOperationCollectionResult = {\n partnersOperationCollection: {\n items: OngoingPartnersOperation[]\n }\n}\n\nexport const BASE_PARTNERS_OPERATION_FRAGMENT = fragment`\n fragment BasePartnersOperation on PartnersOperation {\n cover {\n ...${responsiveImageFragment([320, 640, 960], 'PartnersOperationCover')}\n }\n keyList {\n json\n }\n partnerUserId\n status\n tag\n urlMore\n urlProjectList\n }\n`\nconst PARTNERS_OPERATION_COLLECTION_QUERY = query`\n query($locale: String, $skip: Int!, $limit: Int!) {\n partnersOperationCollection(\n order: [status_ASC, order_ASC]\n locale: $locale\n limit: $limit\n skip: $skip\n ) {\n items {\n ...${BASE_PARTNERS_OPERATION_FRAGMENT}\n description {\n json\n }\n\n }\n }\n }\n`\n\nconst ONGOING_PARTNERS_OPERATION_COLLECTION_QUERY = query<\n OngoingPartnersOperationCollectionResult,\n PartnersOperationInput\n>`\n query($locale: String, $skip: Int!, $limit: Int!) {\n partnersOperationCollection(\n order: [order_ASC]\n locale: $locale\n limit: $limit\n skip: $skip\n where: {\n status: \"En cours\"\n }\n ) {\n items {\n ...${BASE_PARTNERS_OPERATION_FRAGMENT}\n shortDescription\n }\n }\n }\n`\n\nexport async function getPartnersOperationCollection(\n input: PartnersOperationInput,\n request: Request,\n): Response {\n const result = await request(PARTNERS_OPERATION_COLLECTION_QUERY, input)\n return result\n}\n\nexport async function getOngoingPartnersOperationCollection(\n input: PartnersOperationInput,\n request: Request,\n): Response {\n const result = await request(ONGOING_PARTNERS_OPERATION_COLLECTION_QUERY, input)\n return result\n}\n\nexport async function listForPartnersOperation(locale: Locale, request: Request) {\n const response = await getPartnersOperationCollection(\n {\n locale: locale ?? 'fr-FR',\n skip: 0,\n limit: 30,\n },\n request,\n )\n\n return response.next((response) => response)\n}\n\nexport type PartnersOperationCollectionParams = {\n locale: Locale | 'fr-FR'\n}\n\ntype PartnersOperationCollectionConfig = {\n fetchOnMount?: boolean | 'force'\n params: PartnersOperationCollectionParams\n request: Request\n}\n\nexport const SHARED_PARTNERS_OPERATION_COLLECTION = jotai.atom>({})\n\nexport function usePartnersOperationCollection({\n fetchOnMount = true,\n request,\n params,\n}: PartnersOperationCollectionConfig) {\n const sharedQuery = hooks.useSharedQuery(\n async ({ locale }: PartnersOperationCollectionParams) => listForPartnersOperation(locale, request),\n {\n atom: SHARED_PARTNERS_OPERATION_COLLECTION,\n id,\n },\n )\n\n hooks.useFetchOnMount(\n {\n fetchOnMount,\n query,\n getResponse,\n },\n id(params),\n )\n\n return { response: getResponse() }\n\n function getResponse() {\n return sharedQuery.getCurrentResponse([params])\n }\n\n function query() {\n return sharedQuery.query(params)\n }\n}\n\nexport function id({ locale }: PartnersOperationCollectionParams): string {\n return JSON.stringify([locale])\n}\n","import React from 'react'\nimport { styled } from 'next-yak'\n\nimport { RegularText, COLORS } from '@ulule/owl-kit-components'\n\nconst SausageItemWrapper = styled.li`\n margin-left: 17px;\n margin-right: 17px;\n`\n\nconst SausageItemText = styled(RegularText)`\n font-size: 13px;\n font-weight: bold;\n color: ${COLORS.PRIMARY_BLUE_500};\n text-transform: uppercase;\n\n &:hover {\n color: ${COLORS.TEXT_LINK_HOVER};\n }\n`\n\nexport const SausageItem = ({ element }) => (\n \n \n {element && element.name}\n \n \n)\n","import React from 'react'\nimport { styled, keyframes } from 'next-yak'\nimport { withPrivatePublicMap } from '@owl-nest/yak/extra-runtime'\n\nconst anim = keyframes`\n from {\n transform: translateX(0%);\n }\n to {\n transform: translateX(-100%);\n }\n`\n\nconst PrivateSausageList = styled.ul`\n list-style: none;\n display: inline-flex;\n animation: ${anim} 140s linear infinite;\n animation-play-state: ${(props) => (props.$isHover ? 'paused' : 'running')};\n padding: 0;\n @media (max-width: 768px) {\n animation-play-state: paused;\n }\n`\n\nexport const SausageList = withPrivatePublicMap(\n PrivateSausageList,\n ({ isHover, ...props }) => ({\n ...props,\n $isHover: isHover,\n }),\n true,\n)\n","import React from 'react'\nimport MediaQuery from 'react-responsive'\nimport { styled } from 'next-yak'\n\nimport { SausageItem } from './item'\nimport { SausageList } from './list'\n\nconst SausageWrapper = styled.div`\n overflow: hidden;\n white-space: nowrap;\n width: 100%;\n height: 75px;\n border-top: 1px solid #e0e0e0;\n border-bottom: 1px solid #e0e0e0;\n align-items: center;\n display: flex;\n padding: 0;\n background-color: #faf8f5;\n\n @media (max-width: 768px) {\n width: 100%;\n overflow-x: scroll;\n }\n`\n\nclass Sausage extends React.Component {\n wrapperRef = React.createRef()\n\n constructor(props) {\n super(props)\n\n this.state = {\n hover: false,\n }\n }\n\n componentDidMount() {\n const body = this.wrapperRef.current\n const list = body.firstChild\n const listSize = list.getBoundingClientRect()\n this.setState({\n width: listSize.width,\n })\n }\n\n handleHover = (hoverState) => {\n this.setState({\n hover: hoverState,\n })\n }\n\n render() {\n const { items } = this.props\n const { width, hover } = this.state\n return (\n this.handleHover(false)}\n onMouseOver={() => this.handleHover(true)}\n ref={this.wrapperRef}\n width={width}\n >\n \n {items &&\n items.length &&\n items.map((element, key) => {\n return \n })}\n \n \n \n {items &&\n items.length &&\n items.map((element, key) => {\n return \n })}\n \n \n \n )\n }\n}\n\nexport default Sausage\n","export function processData(json: any) {\n // TODO: Temporarily hide filters cities and regions for all countries (until it works)\n const processedJson = { ...json, filters: json.filters.filter((f) => f.name !== 'regions' && f.name !== 'cities') }\n\n return processedJson\n}\n","import * as React from 'react'\n\nimport * as services from '@owl-nest/services'\nimport * as contentful from '@owl-nest/contentful'\nimport { rawRequester, GraphQLClient } from '@owl-nest/graphql'\nimport * as env from '@owl-nest/config'\nimport * as api from '@owl-nest/api-client/latest'\n\nexport function usePartnersOperation() {\n const language = env.getUserLocale()\n const locale = language === 'fr' || language === 'en' ? api.LOCALES[language] : 'fr-FR'\n\n const request = React.useMemo(() => {\n const environnement = env.CONTENTFUL_ENVIRONMENT ?? 'master'\n const space = env.CONTENTFUL_SPACE_ID\n const accessToken = env.CONTENTFUL_DELIVERY_TOKEN_MASTER\n\n const client = rawRequester(\n new GraphQLClient(\n `https://graphql.contentful.com/content/v1/spaces/${space}/environments/${environnement}?access_token=${accessToken}`,\n ),\n )\n\n return contentful.requester(client)\n }, [])\n\n const { response } = services.partnersOperation.usePartnersOperationCollection({\n params: { locale: locale },\n request,\n })\n\n const partnersOperations = response.data?.partnersOperationCollection?.items ?? []\n\n return {\n partnersOperations,\n }\n}\n","import * as env from '@owl-nest/config'\n\ntype Illustration = {\n x1: string\n x2: string\n x3: string\n}\n\ntype Window = {\n UFE: {\n urls: { [any: string]: string }\n assets: {\n modalRemindMe: Illustration\n }\n }\n DISCOVER_DATA: {\n categories: {\n absolute_url: string\n id: number\n name: string\n slug: string\n }[]\n filters: {\n label: string\n name: string\n options: {\n id?: number\n label: string\n value: string\n }[]\n position: number\n }[]\n partners: any[]\n sorting: {\n label: string\n value: string\n }[]\n tags: {\n absolute_url: string\n id: number\n slug: string\n name: string\n }[]\n }\n DISCOVER_ASSETS: {\n noResults: Illustration\n }\n}\n\nconst windowLens = env.lens()\n\nexport const DEFAULT_ASSETS = windowLens.get('UFE').get('assets').value(globalThis)\nexport const ASSETS = windowLens.get('DISCOVER_ASSETS').value(globalThis)\nexport const DISCOVER_DATA = windowLens.get('DISCOVER_DATA').value(globalThis)\n","export var BLOCKS = /*#__PURE__*/ function(BLOCKS) {\n BLOCKS[\"DOCUMENT\"] = \"document\";\n BLOCKS[\"PARAGRAPH\"] = \"paragraph\";\n BLOCKS[\"HEADING_1\"] = \"heading-1\";\n BLOCKS[\"HEADING_2\"] = \"heading-2\";\n BLOCKS[\"HEADING_3\"] = \"heading-3\";\n BLOCKS[\"HEADING_4\"] = \"heading-4\";\n BLOCKS[\"HEADING_5\"] = \"heading-5\";\n BLOCKS[\"HEADING_6\"] = \"heading-6\";\n BLOCKS[\"OL_LIST\"] = \"ordered-list\";\n BLOCKS[\"UL_LIST\"] = \"unordered-list\";\n BLOCKS[\"LIST_ITEM\"] = \"list-item\";\n BLOCKS[\"HR\"] = \"hr\";\n BLOCKS[\"QUOTE\"] = \"blockquote\";\n BLOCKS[\"EMBEDDED_ENTRY\"] = \"embedded-entry-block\";\n BLOCKS[\"EMBEDDED_ASSET\"] = \"embedded-asset-block\";\n BLOCKS[\"EMBEDDED_RESOURCE\"] = \"embedded-resource-block\";\n BLOCKS[\"TABLE\"] = \"table\";\n BLOCKS[\"TABLE_ROW\"] = \"table-row\";\n BLOCKS[\"TABLE_CELL\"] = \"table-cell\";\n BLOCKS[\"TABLE_HEADER_CELL\"] = \"table-header-cell\";\n return BLOCKS;\n}({});\n","export var INLINES = /*#__PURE__*/ function(INLINES) {\n INLINES[\"ASSET_HYPERLINK\"] = \"asset-hyperlink\";\n INLINES[\"EMBEDDED_ENTRY\"] = \"embedded-entry-inline\";\n INLINES[\"EMBEDDED_RESOURCE\"] = \"embedded-resource-inline\";\n INLINES[\"ENTRY_HYPERLINK\"] = \"entry-hyperlink\";\n INLINES[\"HYPERLINK\"] = \"hyperlink\";\n INLINES[\"RESOURCE_HYPERLINK\"] = \"resource-hyperlink\";\n return INLINES;\n}({});\n","export var MARKS = /*#__PURE__*/ function(MARKS) {\n MARKS[\"BOLD\"] = \"bold\";\n MARKS[\"ITALIC\"] = \"italic\";\n MARKS[\"UNDERLINE\"] = \"underline\";\n MARKS[\"CODE\"] = \"code\";\n MARKS[\"SUPERSCRIPT\"] = \"superscript\";\n MARKS[\"SUBSCRIPT\"] = \"subscript\";\n MARKS[\"STRIKETHROUGH\"] = \"strikethrough\";\n return MARKS;\n}({});\n","import { BLOCKS } from './blocks.mjs';\nimport { INLINES } from './inlines.mjs';\nimport { MARKS } from './marks.mjs';\nexport const TOP_LEVEL_BLOCKS = [\n BLOCKS.PARAGRAPH,\n BLOCKS.HEADING_1,\n BLOCKS.HEADING_2,\n BLOCKS.HEADING_3,\n BLOCKS.HEADING_4,\n BLOCKS.HEADING_5,\n BLOCKS.HEADING_6,\n BLOCKS.OL_LIST,\n BLOCKS.UL_LIST,\n BLOCKS.HR,\n BLOCKS.QUOTE,\n BLOCKS.EMBEDDED_ENTRY,\n BLOCKS.EMBEDDED_ASSET,\n BLOCKS.EMBEDDED_RESOURCE,\n BLOCKS.TABLE\n];\nexport const LIST_ITEM_BLOCKS = [\n BLOCKS.PARAGRAPH,\n BLOCKS.HEADING_1,\n BLOCKS.HEADING_2,\n BLOCKS.HEADING_3,\n BLOCKS.HEADING_4,\n BLOCKS.HEADING_5,\n BLOCKS.HEADING_6,\n BLOCKS.OL_LIST,\n BLOCKS.UL_LIST,\n BLOCKS.HR,\n BLOCKS.QUOTE,\n BLOCKS.EMBEDDED_ENTRY,\n BLOCKS.EMBEDDED_ASSET,\n BLOCKS.EMBEDDED_RESOURCE\n];\nexport const TABLE_BLOCKS = [\n BLOCKS.TABLE,\n BLOCKS.TABLE_ROW,\n BLOCKS.TABLE_CELL,\n BLOCKS.TABLE_HEADER_CELL\n];\nexport const VOID_BLOCKS = [\n BLOCKS.HR,\n BLOCKS.EMBEDDED_ENTRY,\n BLOCKS.EMBEDDED_ASSET,\n BLOCKS.EMBEDDED_RESOURCE\n];\nexport const CONTAINERS = {\n [BLOCKS.OL_LIST]: [\n BLOCKS.LIST_ITEM\n ],\n [BLOCKS.UL_LIST]: [\n BLOCKS.LIST_ITEM\n ],\n [BLOCKS.LIST_ITEM]: LIST_ITEM_BLOCKS,\n [BLOCKS.QUOTE]: [\n BLOCKS.PARAGRAPH\n ],\n [BLOCKS.TABLE]: [\n BLOCKS.TABLE_ROW\n ],\n [BLOCKS.TABLE_ROW]: [\n BLOCKS.TABLE_CELL,\n BLOCKS.TABLE_HEADER_CELL\n ],\n [BLOCKS.TABLE_CELL]: [\n BLOCKS.PARAGRAPH,\n BLOCKS.UL_LIST,\n BLOCKS.OL_LIST\n ],\n [BLOCKS.TABLE_HEADER_CELL]: [\n BLOCKS.PARAGRAPH\n ]\n};\nexport const HEADINGS = [\n BLOCKS.HEADING_1,\n BLOCKS.HEADING_2,\n BLOCKS.HEADING_3,\n BLOCKS.HEADING_4,\n BLOCKS.HEADING_5,\n BLOCKS.HEADING_6\n];\nexport const TEXT_CONTAINERS = [\n BLOCKS.PARAGRAPH,\n ...HEADINGS\n];\nexport const V1_NODE_TYPES = [\n BLOCKS.DOCUMENT,\n BLOCKS.PARAGRAPH,\n BLOCKS.HEADING_1,\n BLOCKS.HEADING_2,\n BLOCKS.HEADING_3,\n BLOCKS.HEADING_4,\n BLOCKS.HEADING_5,\n BLOCKS.HEADING_6,\n BLOCKS.OL_LIST,\n BLOCKS.UL_LIST,\n BLOCKS.LIST_ITEM,\n BLOCKS.HR,\n BLOCKS.QUOTE,\n BLOCKS.EMBEDDED_ENTRY,\n BLOCKS.EMBEDDED_ASSET,\n INLINES.HYPERLINK,\n INLINES.ENTRY_HYPERLINK,\n INLINES.ASSET_HYPERLINK,\n INLINES.EMBEDDED_ENTRY,\n 'text'\n];\nexport const V1_MARKS = [\n MARKS.BOLD,\n MARKS.CODE,\n MARKS.ITALIC,\n MARKS.UNDERLINE\n];\n","import { BLOCKS } from './blocks.mjs';\nexport const EMPTY_DOCUMENT = {\n nodeType: BLOCKS.DOCUMENT,\n data: {},\n content: [\n {\n nodeType: BLOCKS.PARAGRAPH,\n data: {},\n content: [\n {\n nodeType: 'text',\n value: '',\n marks: [],\n data: {}\n }\n ]\n }\n ]\n};\n","import { BLOCKS } from './blocks.mjs';\nimport { INLINES } from './inlines.mjs';\nfunction hasValue(obj, value) {\n for (const key of Object.keys(obj)){\n if (value === obj[key]) {\n return true;\n }\n }\n return false;\n}\nexport function isInline(node) {\n return hasValue(INLINES, node.nodeType);\n}\nexport function isBlock(node) {\n return hasValue(BLOCKS, node.nodeType);\n}\nexport function isText(node) {\n return node.nodeType === 'text';\n}\nexport function isEmptyParagraph(node) {\n if (node.nodeType !== BLOCKS.PARAGRAPH) {\n return false;\n }\n if (node.content.length !== 1) {\n return false;\n }\n const textNode = node.content[0];\n return textNode.nodeType === 'text' && textNode.value === '';\n}\nfunction isValidDocument(document) {\n return document != null && typeof document === 'object' && 'content' in document && Array.isArray(document.content);\n}\nconst MIN_NODES_FOR_STRIPPING = 2;\nexport function stripEmptyTrailingParagraphFromDocument(document) {\n if (!isValidDocument(document) || document.content.length < MIN_NODES_FOR_STRIPPING) {\n return document;\n }\n const lastNode = document.content[document.content.length - 1];\n if (isEmptyParagraph(lastNode)) {\n return {\n ...document,\n content: document.content.slice(0, -1)\n };\n }\n return document;\n}\n","export const typeMismatchError = ({ path, property, typeName, value })=>{\n return {\n details: `The type of \"${property}\" is incorrect, expected type: ${typeName}`,\n name: 'type',\n path: path.toArray(),\n type: typeName,\n value\n };\n};\nexport const minSizeError = ({ min, value, path })=>{\n return {\n name: 'size',\n min,\n path: path.toArray(),\n details: `Size must be at least ${min}`,\n value\n };\n};\nexport const maxSizeError = ({ max, value, path })=>{\n return {\n name: 'size',\n max,\n path: path.toArray(),\n details: `Size must be at most ${max}`,\n value\n };\n};\nexport const enumError = ({ expected, value, path })=>{\n return {\n details: `Value must be one of expected values`,\n name: 'in',\n expected: [\n ...expected\n ].sort(),\n path: path.toArray(),\n value\n };\n};\nexport const unknownPropertyError = ({ property, path })=>{\n return {\n details: `The property \"${property}\" is not expected`,\n name: 'unexpected',\n path: path.toArray()\n };\n};\nexport const requiredPropertyError = ({ property, path })=>{\n return {\n details: `The property \"${property}\" is required here`,\n name: 'required',\n path: path.toArray()\n };\n};\n","import { maxSizeError, typeMismatchError, enumError, unknownPropertyError, requiredPropertyError, minSizeError } from './errors.mjs';\nexport class ObjectAssertion {\n obj;\n path;\n _errors = [];\n constructor(obj, path){\n this.obj = obj;\n this.path = path;\n }\n catch = (...errors)=>{\n this._errors.push(...errors);\n };\n get errors() {\n const serializeError = (error)=>JSON.stringify({\n details: error.details,\n path: error.path\n });\n return this._errors.filter((error, index)=>this._errors.findIndex((step)=>serializeError(error) === serializeError(step)) === index);\n }\n exists = (key)=>{\n if (key in this.obj) {\n return true;\n }\n this.catch(requiredPropertyError({\n property: key,\n path: this.path.of(key)\n }));\n return false;\n };\n object = (key)=>{\n const value = key ? this.obj[key] : this.obj;\n if (key) {\n if (!this.exists(key)) {\n return false;\n }\n }\n if (typeof value === 'object' && !Array.isArray(value) && value !== null) {\n return true;\n }\n const path = key ? this.path.of(key) : this.path;\n const property = key ?? this.path.last() ?? 'value';\n this.catch(typeMismatchError({\n typeName: 'Object',\n property,\n path,\n value\n }));\n return false;\n };\n string = (key)=>{\n const value = this.obj[key];\n if (key && !this.exists(key)) {\n return false;\n }\n if (typeof value === 'string') {\n return true;\n }\n this.catch(typeMismatchError({\n typeName: 'String',\n property: key,\n path: this.path.of(key),\n value\n }));\n return false;\n };\n number = (key, optional)=>{\n const value = this.obj[key];\n if (optional && !(key in this.obj)) {\n return true;\n }\n if (!this.exists(key)) {\n return false;\n }\n if (typeof value === 'number' && !Number.isNaN(value)) {\n return true;\n }\n this.catch(typeMismatchError({\n typeName: 'Number',\n property: key,\n path: this.path.of(key),\n value\n }));\n return false;\n };\n array = (key)=>{\n const value = this.obj[key];\n if (key && !this.exists(key)) {\n return false;\n }\n if (Array.isArray(value)) {\n return true;\n }\n this.catch(typeMismatchError({\n typeName: 'Array',\n property: key,\n path: this.path.of(key),\n value\n }));\n return false;\n };\n enum = (key, expected)=>{\n const value = this.obj[key];\n if (typeof value === 'string' && expected.includes(value)) {\n return true;\n }\n this.catch(enumError({\n expected,\n value,\n path: this.path.of(key)\n }));\n return false;\n };\n empty = (key)=>{\n if (!this.array(key)) {\n return false;\n }\n const value = this.obj[key];\n if (value.length === 0) {\n return true;\n }\n this.catch(maxSizeError({\n max: 0,\n value,\n path: this.path.of(key)\n }));\n return false;\n };\n minLength = (key, min)=>{\n if (!this.array(key)) {\n return false;\n }\n const value = this.obj[key];\n if (value.length >= min) {\n return true;\n }\n this.catch(minSizeError({\n min,\n value,\n path: this.path.of(key)\n }));\n return false;\n };\n noAdditionalProperties = (properties)=>{\n const unknowns = Object.keys(this.obj).sort().filter((key)=>!properties.includes(key));\n unknowns.forEach((property)=>this.catch(unknownPropertyError({\n property,\n path: this.path.of(property)\n })));\n return unknowns.length === 0;\n };\n each = (key, assert)=>{\n if (!this.array(key)) {\n return;\n }\n const value = this.obj[key];\n let foundErrors = false;\n value.forEach((item, index)=>{\n if (foundErrors) {\n return;\n }\n const errors = assert(item, this.path.of(key).of(index));\n if (errors.length > 0) {\n foundErrors = true;\n }\n this.catch(...errors);\n });\n };\n}\n","import { ObjectAssertion } from './assert.mjs';\nexport const VOID_CONTENT = [];\nexport class NodeAssertion {\n contentRule;\n validateData;\n constructor(contentRule, validateData){\n this.contentRule = contentRule;\n this.validateData = validateData;\n }\n assert(node, path) {\n const $ = new ObjectAssertion(node, path);\n if (!$.object()) {\n return $.errors;\n }\n $.noAdditionalProperties([\n 'nodeType',\n 'data',\n 'content'\n ]);\n const { nodeTypes, min = 0 } = Array.isArray(this.contentRule) ? {\n nodeTypes: this.contentRule\n } : this.contentRule(node, path);\n if (nodeTypes.length === 0 && min > 0) {\n throw new Error(`Invalid content rule. Cannot have enforce a 'min' of ${min} with no nodeTypes`);\n }\n $.minLength('content', min);\n if (nodeTypes.length === 0) {\n $.empty('content');\n } else {\n $.each('content', (item, path)=>{\n const item$ = new ObjectAssertion(item, path);\n if (!item$.object()) {\n return item$.errors;\n }\n item$.enum('nodeType', nodeTypes);\n return item$.errors;\n });\n }\n if ($.object('data')) {\n const dataErrors = this.validateData?.(node.data, path.of('data')) ?? [];\n $.catch(...dataErrors);\n }\n return $.errors;\n }\n}\nexport class EntityLinkAssertion extends NodeAssertion {\n linkType;\n type;\n constructor(linkType, contentNodeTypes){\n super(contentNodeTypes, (data, path)=>this.assertLink(data, path)), this.linkType = linkType;\n this.type = this.linkType.startsWith('Contentful:') ? 'ResourceLink' : 'Link';\n }\n assertLink = (data, path)=>{\n const $ = new ObjectAssertion(data, path);\n if ($.object('target')) {\n const sys$ = new ObjectAssertion(data.target.sys, path.of('target').of('sys'));\n if (sys$.object()) {\n sys$.enum('type', [\n this.type\n ]);\n sys$.enum('linkType', [\n this.linkType\n ]);\n if (this.type === 'Link') {\n sys$.string('id');\n sys$.noAdditionalProperties([\n 'type',\n 'linkType',\n 'id'\n ]);\n } else if (this.type === 'ResourceLink') {\n sys$.string('urn');\n sys$.noAdditionalProperties([\n 'type',\n 'linkType',\n 'urn'\n ]);\n }\n }\n $.catch(...sys$.errors);\n }\n $.noAdditionalProperties([\n 'target'\n ]);\n return $.errors;\n };\n}\nexport class HyperLinkAssertion extends NodeAssertion {\n constructor(){\n super([\n 'text'\n ], (data, path)=>this.assertLink(data, path));\n }\n assertLink = (data, path)=>{\n const $ = new ObjectAssertion(data, path);\n $.string('uri');\n $.noAdditionalProperties([\n 'uri'\n ]);\n return $.errors;\n };\n}\nexport const assert = (contentRule, validateData)=>{\n return new NodeAssertion(contentRule, validateData);\n};\nexport const assertLink = (linkType, contentRule)=>{\n return new EntityLinkAssertion(linkType, contentRule);\n};\n","import { BLOCKS } from '../blocks.mjs';\nimport { INLINES } from '../inlines.mjs';\nimport { CONTAINERS, LIST_ITEM_BLOCKS, TOP_LEVEL_BLOCKS } from '../schemaConstraints.mjs';\nimport { ObjectAssertion } from './assert.mjs';\nimport { HyperLinkAssertion, assert, assertLink, VOID_CONTENT } from './node.mjs';\nimport { Path } from './path.mjs';\nimport { assertText } from './text.mjs';\nconst assertInlineOrText = assert([\n ...Object.values(INLINES),\n 'text'\n].sort());\nconst assertList = assert([\n BLOCKS.LIST_ITEM\n]);\nconst assertVoidEntryLink = assertLink('Entry', VOID_CONTENT);\nconst assertTableCell = assert(()=>({\n nodeTypes: [\n BLOCKS.PARAGRAPH\n ],\n min: 1\n }), (data, path)=>{\n const $ = new ObjectAssertion(data, path);\n $.noAdditionalProperties([\n 'colspan',\n 'rowspan'\n ]);\n $.number('colspan', true);\n $.number('rowspan', true);\n return $.errors;\n});\nconst nodeValidator = {\n [BLOCKS.DOCUMENT]: assert(TOP_LEVEL_BLOCKS),\n [BLOCKS.PARAGRAPH]: assertInlineOrText,\n [BLOCKS.HEADING_1]: assertInlineOrText,\n [BLOCKS.HEADING_2]: assertInlineOrText,\n [BLOCKS.HEADING_3]: assertInlineOrText,\n [BLOCKS.HEADING_4]: assertInlineOrText,\n [BLOCKS.HEADING_5]: assertInlineOrText,\n [BLOCKS.HEADING_6]: assertInlineOrText,\n [BLOCKS.QUOTE]: assert(CONTAINERS[BLOCKS.QUOTE]),\n [BLOCKS.EMBEDDED_ENTRY]: assertVoidEntryLink,\n [BLOCKS.EMBEDDED_ASSET]: assertLink('Asset', VOID_CONTENT),\n [BLOCKS.EMBEDDED_RESOURCE]: assertLink('Contentful:Entry', VOID_CONTENT),\n [BLOCKS.HR]: assert(VOID_CONTENT),\n [BLOCKS.OL_LIST]: assertList,\n [BLOCKS.UL_LIST]: assertList,\n [BLOCKS.LIST_ITEM]: assert([\n ...LIST_ITEM_BLOCKS\n ].sort()),\n [BLOCKS.TABLE]: assert(()=>({\n nodeTypes: [\n BLOCKS.TABLE_ROW\n ],\n min: 1\n })),\n [BLOCKS.TABLE_ROW]: assert(()=>({\n nodeTypes: [\n BLOCKS.TABLE_CELL,\n BLOCKS.TABLE_HEADER_CELL\n ],\n min: 1\n })),\n [BLOCKS.TABLE_CELL]: assertTableCell,\n [BLOCKS.TABLE_HEADER_CELL]: assertTableCell,\n [INLINES.HYPERLINK]: new HyperLinkAssertion(),\n [INLINES.EMBEDDED_ENTRY]: assertVoidEntryLink,\n [INLINES.EMBEDDED_RESOURCE]: assertLink('Contentful:Entry', VOID_CONTENT),\n [INLINES.ENTRY_HYPERLINK]: assertLink('Entry', [\n 'text'\n ]),\n [INLINES.ASSET_HYPERLINK]: assertLink('Asset', [\n 'text'\n ]),\n [INLINES.RESOURCE_HYPERLINK]: assertLink('Contentful:Entry', [\n 'text'\n ])\n};\nfunction validateNode(node, path) {\n if (node.nodeType === 'text') {\n return assertText(node, path);\n }\n const errors = nodeValidator[node.nodeType].assert(node, path);\n if (errors.length > 0) {\n return errors;\n }\n const $ = new ObjectAssertion(node, path);\n $.each('content', (item, path)=>{\n return validateNode(item, path);\n });\n return $.errors;\n}\nexport const validateRichTextDocument = (document)=>{\n const path = new Path();\n const $ = new ObjectAssertion(document, path);\n if ($.object()) {\n $.enum('nodeType', [\n BLOCKS.DOCUMENT\n ]);\n }\n if ($.errors.length > 0) {\n return $.errors;\n }\n return validateNode(document, path);\n};\n","import React, { isValidElement, cloneElement } from 'react';\nimport { helpers, INLINES, BLOCKS, MARKS } from '@contentful/rich-text-types';\n\nfunction appendKeyToValidElement(element, key) {\n if (isValidElement(element) && element.key === null) {\n return cloneElement(element, {\n key\n });\n }\n return element;\n}\n\nfunction nodeListToReactComponents(nodes, options) {\n return nodes.map((node, index)=>{\n return appendKeyToValidElement(nodeToReactComponent(node, options), index);\n });\n}\nfunction nodeToReactComponent(node, options) {\n const { renderNode, renderMark, renderText, preserveWhitespace } = options;\n if (helpers.isText(node)) {\n let nodeValue = renderText ? renderText(node.value) : node.value;\n if (preserveWhitespace && !renderText) {\n nodeValue = nodeValue.replace(/ {2,}/g, (match)=>'\\u00A0'.repeat(match.length));\n const lines = nodeValue.split('\\n');\n const jsxLines = [];\n lines.forEach((line, index)=>{\n jsxLines.push(line);\n if (index !== lines.length - 1) {\n jsxLines.push(React.createElement(\"br\", null));\n }\n });\n nodeValue = jsxLines;\n }\n return node.marks.reduce((value, mark)=>{\n if (!renderMark[mark.type]) {\n return value;\n }\n return renderMark[mark.type](value);\n }, nodeValue);\n } else {\n const children = nodeListToReactComponents(node.content, options);\n if (!node.nodeType || !renderNode[node.nodeType]) {\n return React.createElement(React.Fragment, null, children);\n }\n return renderNode[node.nodeType](node, children);\n }\n}\n\nconst defaultNodeRenderers = {\n [BLOCKS.DOCUMENT]: (node, children)=>children,\n [BLOCKS.PARAGRAPH]: (node, children)=>React.createElement(\"p\", null, children),\n [BLOCKS.HEADING_1]: (node, children)=>React.createElement(\"h1\", null, children),\n [BLOCKS.HEADING_2]: (node, children)=>React.createElement(\"h2\", null, children),\n [BLOCKS.HEADING_3]: (node, children)=>React.createElement(\"h3\", null, children),\n [BLOCKS.HEADING_4]: (node, children)=>React.createElement(\"h4\", null, children),\n [BLOCKS.HEADING_5]: (node, children)=>React.createElement(\"h5\", null, children),\n [BLOCKS.HEADING_6]: (node, children)=>React.createElement(\"h6\", null, children),\n [BLOCKS.EMBEDDED_ENTRY]: (node, children)=>React.createElement(\"div\", null, children),\n [BLOCKS.EMBEDDED_RESOURCE]: (node, children)=>React.createElement(\"div\", null, children),\n [BLOCKS.UL_LIST]: (node, children)=>React.createElement(\"ul\", null, children),\n [BLOCKS.OL_LIST]: (node, children)=>React.createElement(\"ol\", null, children),\n [BLOCKS.LIST_ITEM]: (node, children)=>React.createElement(\"li\", null, children),\n [BLOCKS.QUOTE]: (node, children)=>React.createElement(\"blockquote\", null, children),\n [BLOCKS.HR]: ()=>React.createElement(\"hr\", null),\n [BLOCKS.TABLE]: (node, children)=>React.createElement(\"table\", null, React.createElement(\"tbody\", null, children)),\n [BLOCKS.TABLE_ROW]: (node, children)=>React.createElement(\"tr\", null, children),\n [BLOCKS.TABLE_HEADER_CELL]: (node, children)=>React.createElement(\"th\", null, children),\n [BLOCKS.TABLE_CELL]: (node, children)=>React.createElement(\"td\", null, children),\n [INLINES.ASSET_HYPERLINK]: (node)=>defaultInline(INLINES.ASSET_HYPERLINK, node),\n [INLINES.ENTRY_HYPERLINK]: (node)=>defaultInline(INLINES.ENTRY_HYPERLINK, node),\n [INLINES.RESOURCE_HYPERLINK]: (node)=>defaultInlineResource(INLINES.RESOURCE_HYPERLINK, node),\n [INLINES.EMBEDDED_ENTRY]: (node)=>defaultInline(INLINES.EMBEDDED_ENTRY, node),\n [INLINES.EMBEDDED_RESOURCE]: (node, _children)=>defaultInlineResource(INLINES.EMBEDDED_RESOURCE, node),\n [INLINES.HYPERLINK]: (node, children)=>React.createElement(\"a\", {\n href: node.data.uri\n }, children)\n};\nconst defaultMarkRenderers = {\n [MARKS.BOLD]: (text)=>React.createElement(\"b\", null, text),\n [MARKS.ITALIC]: (text)=>React.createElement(\"i\", null, text),\n [MARKS.UNDERLINE]: (text)=>React.createElement(\"u\", null, text),\n [MARKS.CODE]: (text)=>React.createElement(\"code\", null, text),\n [MARKS.SUPERSCRIPT]: (text)=>React.createElement(\"sup\", null, text),\n [MARKS.SUBSCRIPT]: (text)=>React.createElement(\"sub\", null, text),\n [MARKS.STRIKETHROUGH]: (text)=>React.createElement(\"s\", null, text)\n};\nfunction defaultInline(type, node) {\n return React.createElement(\"span\", {\n key: node.data.target.sys.id\n }, \"type: \", node.nodeType, \" id: \", node.data.target.sys.id);\n}\nfunction defaultInlineResource(type, node) {\n return React.createElement(\"span\", {\n key: node.data.target.sys.urn\n }, \"type: \", node.nodeType, \" urn: \", node.data.target.sys.urn);\n}\nfunction documentToReactComponents(richTextDocument, options = {}) {\n if (!richTextDocument) {\n return null;\n }\n let processedDocument = richTextDocument;\n if (options.stripEmptyTrailingParagraph) {\n processedDocument = helpers.stripEmptyTrailingParagraphFromDocument(richTextDocument);\n }\n return nodeToReactComponent(processedDocument, {\n renderNode: {\n ...defaultNodeRenderers,\n ...options.renderNode\n },\n renderMark: {\n ...defaultMarkRenderers,\n ...options.renderMark\n },\n renderText: options.renderText,\n preserveWhitespace: options.preserveWhitespace\n });\n}\n\nexport { documentToReactComponents };\n//# sourceMappingURL=rich-text-react-renderer.esm.js.map\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BLOCKS = void 0;\n/**\n * Map of all Contentful block types. Blocks contain inline or block nodes.\n */\nvar BLOCKS;\n(function (BLOCKS) {\n BLOCKS[\"DOCUMENT\"] = \"document\";\n BLOCKS[\"PARAGRAPH\"] = \"paragraph\";\n BLOCKS[\"HEADING_1\"] = \"heading-1\";\n BLOCKS[\"HEADING_2\"] = \"heading-2\";\n BLOCKS[\"HEADING_3\"] = \"heading-3\";\n BLOCKS[\"HEADING_4\"] = \"heading-4\";\n BLOCKS[\"HEADING_5\"] = \"heading-5\";\n BLOCKS[\"HEADING_6\"] = \"heading-6\";\n BLOCKS[\"OL_LIST\"] = \"ordered-list\";\n BLOCKS[\"UL_LIST\"] = \"unordered-list\";\n BLOCKS[\"LIST_ITEM\"] = \"list-item\";\n BLOCKS[\"HR\"] = \"hr\";\n BLOCKS[\"QUOTE\"] = \"blockquote\";\n BLOCKS[\"EMBEDDED_ENTRY\"] = \"embedded-entry-block\";\n BLOCKS[\"EMBEDDED_ASSET\"] = \"embedded-asset-block\";\n BLOCKS[\"EMBEDDED_RESOURCE\"] = \"embedded-resource-block\";\n BLOCKS[\"TABLE\"] = \"table\";\n BLOCKS[\"TABLE_ROW\"] = \"table-row\";\n BLOCKS[\"TABLE_CELL\"] = \"table-cell\";\n BLOCKS[\"TABLE_HEADER_CELL\"] = \"table-header-cell\";\n})(BLOCKS || (exports.BLOCKS = BLOCKS = {}));\n//# sourceMappingURL=blocks.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.INLINES = void 0;\n/**\n * Map of all Contentful inline types. Inline contain inline or text nodes.\n *\n * @note This should be kept in alphabetical order since the\n * [validation package](https://github.com/contentful/content-stack/tree/master/packages/validation)\n * relies on the values being in a predictable order.\n */\nvar INLINES;\n(function (INLINES) {\n INLINES[\"ASSET_HYPERLINK\"] = \"asset-hyperlink\";\n INLINES[\"EMBEDDED_ENTRY\"] = \"embedded-entry-inline\";\n INLINES[\"EMBEDDED_RESOURCE\"] = \"embedded-resource-inline\";\n INLINES[\"ENTRY_HYPERLINK\"] = \"entry-hyperlink\";\n INLINES[\"HYPERLINK\"] = \"hyperlink\";\n INLINES[\"RESOURCE_HYPERLINK\"] = \"resource-hyperlink\";\n})(INLINES || (exports.INLINES = INLINES = {}));\n//# sourceMappingURL=inlines.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MARKS = void 0;\n/**\n * Map of all Contentful marks.\n */\nvar MARKS;\n(function (MARKS) {\n MARKS[\"BOLD\"] = \"bold\";\n MARKS[\"ITALIC\"] = \"italic\";\n MARKS[\"UNDERLINE\"] = \"underline\";\n MARKS[\"CODE\"] = \"code\";\n MARKS[\"SUPERSCRIPT\"] = \"superscript\";\n MARKS[\"SUBSCRIPT\"] = \"subscript\";\n MARKS[\"STRIKETHROUGH\"] = \"strikethrough\";\n})(MARKS || (exports.MARKS = MARKS = {}));\n//# sourceMappingURL=marks.js.map","\"use strict\";\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.V1_MARKS = exports.V1_NODE_TYPES = exports.TEXT_CONTAINERS = exports.HEADINGS = exports.CONTAINERS = exports.VOID_BLOCKS = exports.TABLE_BLOCKS = exports.LIST_ITEM_BLOCKS = exports.TOP_LEVEL_BLOCKS = void 0;\nvar blocks_1 = require(\"./blocks\");\nvar inlines_1 = require(\"./inlines\");\nvar marks_1 = require(\"./marks\");\n/**\n * Array of all top level block types.\n * Only these block types can be the direct children of the document.\n */\nexports.TOP_LEVEL_BLOCKS = [\n blocks_1.BLOCKS.PARAGRAPH,\n blocks_1.BLOCKS.HEADING_1,\n blocks_1.BLOCKS.HEADING_2,\n blocks_1.BLOCKS.HEADING_3,\n blocks_1.BLOCKS.HEADING_4,\n blocks_1.BLOCKS.HEADING_5,\n blocks_1.BLOCKS.HEADING_6,\n blocks_1.BLOCKS.OL_LIST,\n blocks_1.BLOCKS.UL_LIST,\n blocks_1.BLOCKS.HR,\n blocks_1.BLOCKS.QUOTE,\n blocks_1.BLOCKS.EMBEDDED_ENTRY,\n blocks_1.BLOCKS.EMBEDDED_ASSET,\n blocks_1.BLOCKS.EMBEDDED_RESOURCE,\n blocks_1.BLOCKS.TABLE,\n];\n/**\n * Array of all allowed block types inside list items\n */\nexports.LIST_ITEM_BLOCKS = [\n blocks_1.BLOCKS.PARAGRAPH,\n blocks_1.BLOCKS.HEADING_1,\n blocks_1.BLOCKS.HEADING_2,\n blocks_1.BLOCKS.HEADING_3,\n blocks_1.BLOCKS.HEADING_4,\n blocks_1.BLOCKS.HEADING_5,\n blocks_1.BLOCKS.HEADING_6,\n blocks_1.BLOCKS.OL_LIST,\n blocks_1.BLOCKS.UL_LIST,\n blocks_1.BLOCKS.HR,\n blocks_1.BLOCKS.QUOTE,\n blocks_1.BLOCKS.EMBEDDED_ENTRY,\n blocks_1.BLOCKS.EMBEDDED_ASSET,\n blocks_1.BLOCKS.EMBEDDED_RESOURCE,\n];\nexports.TABLE_BLOCKS = [\n blocks_1.BLOCKS.TABLE,\n blocks_1.BLOCKS.TABLE_ROW,\n blocks_1.BLOCKS.TABLE_CELL,\n blocks_1.BLOCKS.TABLE_HEADER_CELL,\n];\n/**\n * Array of all void block types\n */\nexports.VOID_BLOCKS = [\n blocks_1.BLOCKS.HR,\n blocks_1.BLOCKS.EMBEDDED_ENTRY,\n blocks_1.BLOCKS.EMBEDDED_ASSET,\n blocks_1.BLOCKS.EMBEDDED_RESOURCE,\n];\n/**\n * Dictionary of all container block types, and the set block types they accept as children.\n *\n * Note: This does not include `[BLOCKS.DOCUMENT]: TOP_LEVEL_BLOCKS`\n */\nexports.CONTAINERS = (_a = {},\n _a[blocks_1.BLOCKS.OL_LIST] = [blocks_1.BLOCKS.LIST_ITEM],\n _a[blocks_1.BLOCKS.UL_LIST] = [blocks_1.BLOCKS.LIST_ITEM],\n _a[blocks_1.BLOCKS.LIST_ITEM] = exports.LIST_ITEM_BLOCKS,\n _a[blocks_1.BLOCKS.QUOTE] = [blocks_1.BLOCKS.PARAGRAPH],\n _a[blocks_1.BLOCKS.TABLE] = [blocks_1.BLOCKS.TABLE_ROW],\n _a[blocks_1.BLOCKS.TABLE_ROW] = [blocks_1.BLOCKS.TABLE_CELL, blocks_1.BLOCKS.TABLE_HEADER_CELL],\n _a[blocks_1.BLOCKS.TABLE_CELL] = [blocks_1.BLOCKS.PARAGRAPH, blocks_1.BLOCKS.UL_LIST, blocks_1.BLOCKS.OL_LIST],\n _a[blocks_1.BLOCKS.TABLE_HEADER_CELL] = [blocks_1.BLOCKS.PARAGRAPH],\n _a);\n/**\n * Array of all heading levels\n */\nexports.HEADINGS = [\n blocks_1.BLOCKS.HEADING_1,\n blocks_1.BLOCKS.HEADING_2,\n blocks_1.BLOCKS.HEADING_3,\n blocks_1.BLOCKS.HEADING_4,\n blocks_1.BLOCKS.HEADING_5,\n blocks_1.BLOCKS.HEADING_6,\n];\n/**\n * Array of all block types that may contain text and inline nodes.\n */\nexports.TEXT_CONTAINERS = __spreadArray([blocks_1.BLOCKS.PARAGRAPH], exports.HEADINGS, true);\n/**\n * Node types before `tables` release.\n */\nexports.V1_NODE_TYPES = [\n blocks_1.BLOCKS.DOCUMENT,\n blocks_1.BLOCKS.PARAGRAPH,\n blocks_1.BLOCKS.HEADING_1,\n blocks_1.BLOCKS.HEADING_2,\n blocks_1.BLOCKS.HEADING_3,\n blocks_1.BLOCKS.HEADING_4,\n blocks_1.BLOCKS.HEADING_5,\n blocks_1.BLOCKS.HEADING_6,\n blocks_1.BLOCKS.OL_LIST,\n blocks_1.BLOCKS.UL_LIST,\n blocks_1.BLOCKS.LIST_ITEM,\n blocks_1.BLOCKS.HR,\n blocks_1.BLOCKS.QUOTE,\n blocks_1.BLOCKS.EMBEDDED_ENTRY,\n blocks_1.BLOCKS.EMBEDDED_ASSET,\n inlines_1.INLINES.HYPERLINK,\n inlines_1.INLINES.ENTRY_HYPERLINK,\n inlines_1.INLINES.ASSET_HYPERLINK,\n inlines_1.INLINES.EMBEDDED_ENTRY,\n 'text',\n];\n/**\n * Marks before `superscript` & `subscript` release.\n */\nexports.V1_MARKS = [marks_1.MARKS.BOLD, marks_1.MARKS.CODE, marks_1.MARKS.ITALIC, marks_1.MARKS.UNDERLINE];\n//# sourceMappingURL=schemaConstraints.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=types.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=nodeTypes.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EMPTY_DOCUMENT = void 0;\nvar blocks_1 = require(\"./blocks\");\n/**\n * A rich text document considered to be empty.\n * Any other document structure than this is not considered empty.\n */\nexports.EMPTY_DOCUMENT = {\n nodeType: blocks_1.BLOCKS.DOCUMENT,\n data: {},\n content: [\n {\n nodeType: blocks_1.BLOCKS.PARAGRAPH,\n data: {},\n content: [\n {\n nodeType: 'text',\n value: '',\n marks: [],\n data: {},\n },\n ],\n },\n ],\n};\n//# sourceMappingURL=emptyDocument.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isInline = isInline;\nexports.isBlock = isBlock;\nexports.isText = isText;\nvar blocks_1 = require(\"./blocks\");\nvar inlines_1 = require(\"./inlines\");\n/**\n * Tiny replacement for Object.values(object).includes(key) to\n * avoid including CoreJS polyfills\n */\nfunction hasValue(obj, value) {\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var key = _a[_i];\n if (value === obj[key]) {\n return true;\n }\n }\n return false;\n}\n/**\n * Checks if the node is an instance of Inline.\n */\nfunction isInline(node) {\n return hasValue(inlines_1.INLINES, node.nodeType);\n}\n/**\n * Checks if the node is an instance of Block.\n */\nfunction isBlock(node) {\n return hasValue(blocks_1.BLOCKS, node.nodeType);\n}\n/**\n * Checks if the node is an instance of Text.\n */\nfunction isText(node) {\n return node.nodeType === 'text';\n}\n//# sourceMappingURL=helpers.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSchemaWithNodeType = getSchemaWithNodeType;\nfunction getSchemaWithNodeType(nodeType) {\n try {\n return require(\"./generated/\".concat(nodeType, \".json\"));\n }\n catch (error) {\n throw new Error(\"Schema for nodeType \\\"\".concat(nodeType, \"\\\" was not found.\"));\n }\n}\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSchemaWithNodeType = exports.helpers = exports.EMPTY_DOCUMENT = exports.MARKS = exports.INLINES = exports.BLOCKS = void 0;\nvar blocks_1 = require(\"./blocks\");\nObject.defineProperty(exports, \"BLOCKS\", { enumerable: true, get: function () { return blocks_1.BLOCKS; } });\nvar inlines_1 = require(\"./inlines\");\nObject.defineProperty(exports, \"INLINES\", { enumerable: true, get: function () { return inlines_1.INLINES; } });\nvar marks_1 = require(\"./marks\");\nObject.defineProperty(exports, \"MARKS\", { enumerable: true, get: function () { return marks_1.MARKS; } });\n__exportStar(require(\"./schemaConstraints\"), exports);\n__exportStar(require(\"./types\"), exports);\n__exportStar(require(\"./nodeTypes\"), exports);\nvar emptyDocument_1 = require(\"./emptyDocument\");\nObject.defineProperty(exports, \"EMPTY_DOCUMENT\", { enumerable: true, get: function () { return emptyDocument_1.EMPTY_DOCUMENT; } });\nvar helpers = __importStar(require(\"./helpers\"));\nexports.helpers = helpers;\nvar schemas_1 = require(\"./schemas\");\nObject.defineProperty(exports, \"getSchemaWithNodeType\", { enumerable: true, get: function () { return schemas_1.getSchemaWithNodeType; } });\n//# sourceMappingURL=index.js.map","import * as React from 'react'\nimport {\n documentToReactComponents,\n type RenderMark,\n type RenderNode,\n type Options,\n} from '@contentful/rich-text-react-renderer'\nimport * as richtext from '@contentful/rich-text-types'\n\nimport * as contentful from '@owl-nest/contentful'\n\nexport type RichTextProps = {\n document: richtext.Document\n links?: {\n assets?: {\n block: contentful.Asset[]\n }\n entries?: {\n block: ENTRY[]\n }\n }\n renderEntry?: (entry: ENTRY) => React.ReactNode\n renderMark?: {\n Bold?: React.ComponentType<{ children: React.ReactNode }>\n Italic?: React.ComponentType<{ children: React.ReactNode }>\n Underline?: React.ComponentType<{ children: React.ReactNode }>\n }\n renderNode?: {\n Paragraph?: React.ComponentType<{ children: React.ReactNode }>\n Title1?: React.ComponentType<{ children: React.ReactNode }>\n Title2?: React.ComponentType<{ children: React.ReactNode }>\n Title3?: React.ComponentType<{ children: React.ReactNode }>\n Title4?: React.ComponentType<{ children: React.ReactNode }>\n Title5?: React.ComponentType<{ children: React.ReactNode }>\n Title6?: React.ComponentType<{ children: React.ReactNode }>\n UnorderedList?: React.ComponentType<{ children: React.ReactNode }>\n OrderedList?: React.ComponentType<{ children: React.ReactNode }>\n ListItem?: React.ComponentType<{ children: React.ReactNode }>\n BlockQuote?: React.ComponentType<{ children: React.ReactNode }>\n Table?: React.ComponentType<{ children: React.ReactNode }>\n TableCell?: React.ComponentType<{ children: React.ReactNode }>\n TableHeaderCell?: React.ComponentType<{ children: React.ReactNode }>\n TableRow?: React.ComponentType<{ children: React.ReactNode }>\n Hyperlink?: (props: { uri: string; children: React.ReactNode }) => React.ReactElement\n EmbeddedAsset?: (props: { asset: contentful.Asset }) => React.ReactElement\n }\n}\n\nexport function RichText({\n document,\n links,\n renderEntry,\n renderMark,\n renderNode,\n}: RichTextProps): React.ReactElement> {\n const blockAssetMap = new Map()\n const blockEntryMap = new Map()\n\n for (const asset of links?.assets?.block || []) {\n blockAssetMap.set(asset.sys.id, asset)\n }\n for (const entry of links?.entries?.block || []) {\n blockEntryMap.set(entry.sys.id, entry)\n }\n\n const richTextOptions = React.useMemo(\n () => ({\n renderMark: {\n [richtext.MARKS.BOLD]: makeRenderMark(renderMark?.Bold),\n [richtext.MARKS.ITALIC]: makeRenderMark(renderMark?.Italic),\n [richtext.MARKS.UNDERLINE]: makeRenderMark(renderMark?.Underline),\n },\n renderNode: {\n [richtext.BLOCKS.PARAGRAPH]: makeRenderNode(renderNode?.Paragraph),\n [richtext.BLOCKS.HEADING_1]: makeRenderNode(renderNode?.Title1),\n [richtext.BLOCKS.HEADING_2]: makeRenderNode(renderNode?.Title2),\n [richtext.BLOCKS.HEADING_3]: makeRenderNode(renderNode?.Title3),\n [richtext.BLOCKS.HEADING_4]: makeRenderNode(renderNode?.Title4),\n [richtext.BLOCKS.HEADING_5]: makeRenderNode(renderNode?.Title5),\n [richtext.BLOCKS.HEADING_6]: makeRenderNode(renderNode?.Title6),\n [richtext.BLOCKS.UL_LIST]: makeRenderNode(renderNode?.UnorderedList),\n [richtext.BLOCKS.OL_LIST]: makeRenderNode(renderNode?.OrderedList),\n [richtext.BLOCKS.LIST_ITEM]: makeRenderNode(renderNode?.ListItem),\n [richtext.BLOCKS.QUOTE]: makeRenderNode(renderNode?.BlockQuote),\n [richtext.BLOCKS.TABLE]: makeRenderNode(renderNode?.Table),\n [richtext.BLOCKS.TABLE_CELL]: makeRenderNode(renderNode?.TableCell),\n [richtext.BLOCKS.TABLE_HEADER_CELL]: makeRenderNode(renderNode?.TableHeaderCell),\n [richtext.BLOCKS.TABLE_ROW]: makeRenderNode(renderNode?.TableRow),\n [richtext.INLINES.HYPERLINK]: (node, children) => {\n const Hyperlink = renderNode?.Hyperlink\n if (!Hyperlink) {\n return <>\n }\n return {children}\n },\n [richtext.BLOCKS.EMBEDDED_ASSET]: (node) => {\n const asset = blockAssetMap.get(node.data.target.sys.id)\n\n const EmbeddedAsset = renderNode?.EmbeddedAsset\n\n if (asset === undefined || EmbeddedAsset === undefined) {\n return <>\n }\n\n if (EmbeddedAsset) {\n return \n }\n },\n [richtext.BLOCKS.EMBEDDED_ENTRY]: (node) => {\n const entry = blockEntryMap.get(node.data.target.sys.id)\n if (entry === undefined || renderEntry === undefined) {\n return <>\n }\n return renderEntry(entry)\n },\n },\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [],\n )\n\n return <>{documentToReactComponents(document, richTextOptions)}\n}\n\nfunction makeRenderMark(Component?: React.ComponentType<{ children: React.ReactNode }>): RenderMark[string] {\n // eslint-disable-next-line react/display-name\n return (text) => {\n if (!Component) {\n return <>\n }\n return {text}\n }\n}\n\nfunction makeRenderNode(Component?: React.ComponentType<{ children: React.ReactNode }>): RenderNode[string] {\n // eslint-disable-next-line react/display-name\n return (node, children) => {\n if (!Component) {\n return <>\n }\n return {children}\n }\n}\n","import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport { RichText } from '@owl-nest/rich-text'\n\nimport { t, tc } from '@owl-nest/localize'\nimport * as services from '@owl-nest/services'\nimport * as shadow from '@owl-nest/shadow'\nimport * as plume from '@ulule/owl-kit-components/next'\n\ntype PartnersProps = {\n partners: services.partnersOperation.OngoingPartnersOperation[]\n}\n\nexport function Partners({ partners }: PartnersProps): React.ReactElement {\n if (partners.length === 0) {\n return <>\n }\n\n return (\n \n \n \n {tc('[highlight: Partners] for your creative projects', {\n highlight: ,\n })}\n \n \n\n \n \n {partners.map((partnerOperation, index) => {\n return \n })}\n \n \n {t('See all calls for proposals')}\n \n )\n}\n\nfunction PartnerOperationCardWithTracking({\n partnerOperation,\n}: {\n partnerOperation: services.partnersOperation.OngoingPartnersOperation\n}): React.ReactElement {\n const partnerOperationRef = React.useRef(null)\n\n shadow.usePartnershipTracker(partnerOperation.partnerUserId ?? undefined, partnerOperationRef, {\n click: {\n enabled: false,\n },\n eventPosition: `homepage-partner-${partnerOperation.partnerUserId}`,\n ignoreLocationChange: true,\n impression: {\n enabled: true,\n once: true,\n },\n })\n\n return (\n
  • \n \n ) : null,\n keyTitle: 'À la clé',\n keyList: partnerOperation.keyList ? (\n \n ) : null,\n buttonMore: 'En savoir plus',\n link: 'Voir les projets participants',\n }}\n pictureUrl={partnerOperation.cover?.url}\n pictureSrcSet={`${partnerOperation.cover?.url} 1x, ${partnerOperation.cover?.url_2x} 2x, ${partnerOperation.cover?.url_3x} 3x`}\n isOngoing={partnerOperation.status === services.partnersOperation.PartnerOperationStatus.ONGOING}\n buttonUrl={partnerOperation.urlMore}\n linkUrl={partnerOperation.urlProjectList ?? undefined}\n />\n
  • \n )\n}\n\nconst CenteredCTA = styled(plume.ButtonAsLink)`\n display: block;\n margin: 40px auto 0;\n text-align: center;\n width: fit-content;\n`\n\nconst List = styled.ul`\n list-style: none;\n padding: 0 16px;\n white-space: nowrap;\n\n ${plume.PartnerOperationCard} {\n height: 100%;\n height: -webkit-fill-available;\n min-height: 250px;\n width: 100%;\n max-width: 70vw;\n\n @media screen and ${plume.BREAKPOINTS.MOBILE_L} {\n max-width: 60vw;\n }\n }\n\n ${plume.SlidingCarousel} {\n gap: 8px;\n }\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n ${plume.SlidingCarousel} {\n display: grid;\n gap: 20px;\n grid-template-columns: repeat(6, 320px);\n padding: 0;\n width: 100%;\n }\n\n ${plume.PartnerOperationCard} {\n min-height: 250px;\n }\n }\n\n @media screen and ${plume.BREAKPOINTS.LAPTOP} {\n ${plume.SlidingCarousel} {\n grid-template-rows: auto auto;\n gap: 33px;\n }\n }\n`\n\nconst Wrapper = styled.div`\n box-sizing: border-box;\n margin-bottom: 40px;\n margin: 0 12px;\n max-width: 1080px;\n padding-bottom: 1.5384615385rem;\n padding-top: 3.0769230769rem;\n overflow: hidden;\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n overflow: visible;\n }\n\n @media screen and ${plume.BREAKPOINTS.LAPTOP} {\n margin: 0 auto;\n }\n`\n\nconst TitleGroup = styled.header`\n margin: 0 16px 36px;\n max-width: 1330px;\n width: 89%;\n\n @media screen and ${plume.BREAKPOINTS.TABLET} {\n margin: 0 16px 36px;\n }\n`\n\nconst SectionTitle = styled(plume.styles.heading.L).attrs({ asDesktop: 'XL' })``\n","export type FilterOption = {\n id?: number\n value: string\n slug?: string\n}\n\nexport type Filter = {\n name: string\n label: string\n options: FilterOption[]\n}\n\nexport function getFilterByName(filters: Filter[], name: string): Filter | undefined {\n return filters.find((filter) => filter.name === name)\n}\n\nexport function getOptionByValue(options: FilterOption[], value: string): FilterOption | undefined {\n return options.find((option) => option.value === value)\n}\n","import * as React from 'react'\nimport { parse, stringify } from 'qs'\n\nimport * as api from '@owl-nest/api-client/next'\nimport * as services from '@owl-nest/services'\n\nimport { fetchSearchProjects, fetchSearchMoreProjects } from '../services'\nimport { getFilterByName, type FilterOption, type Filter } from '../utils/filters'\n\nconst SEARCH_API_FILTERS = {\n categories: {\n defaultValue: 'all',\n qualifier: 'tag_id',\n valueAttribute: 'id',\n },\n statuses: {\n defaultValue: 'all',\n qualifier: 'status',\n valueAttribute: 'value',\n },\n languages: {\n defaultValue: 'all',\n qualifier: 'lang',\n valueAttribute: 'value',\n },\n countries: {\n defaultValue: 'all',\n qualifier: 'country',\n valueAttribute: 'value',\n },\n regions: {\n defaultValue: 'all',\n qualifier: 'region_id',\n valueAttribute: 'id',\n },\n cities: {\n defaultValue: 'all',\n qualifier: 'city_id',\n valueAttribute: 'id',\n },\n}\n\nconst DEFAULT_SORTING = 'popular'\nconst DEFAULT_OFFSET = 0\nconst DEFAULT_LIMIT = 60\nconst DEFAULT_SORT_LIMIT = 16\n\ntype SortingOption = {\n value: string\n label: string\n}\n\ntype Meta = {\n offset: number\n start: number\n limit: number\n totalCount: number\n next: string | null\n previous: string | null\n}\n\ntype CurrentFilters = {\n categories: string[]\n countries: string[]\n regions: string[]\n cities: string[]\n statuses: string[]\n languages: string[]\n}\n\ntype ErrorState = {\n level: string\n message: string\n}\n\ntype SearchState = {\n currentFilters: CurrentFilters\n currentSearch: string\n currentSearchInput: string\n currentSorting: string\n error: ErrorState | null\n errorFetchingMore: boolean\n errorFetchingPrevious: boolean\n isFetching: boolean\n isFetchingMore: boolean\n isFetchingPrevious: boolean\n meta: Meta\n quantityFetched?: number\n results: api.Project[]\n savedResults: api.Project[] | null\n resetSearch: boolean\n}\n\ntype UseSearchProps = {\n currentLanguage?: string\n filters: Filter[]\n sorting: SortingOption[]\n tags?: FilterOption[]\n}\n\ntype UseSearchReturn = {\n state: SearchState\n updateFilter: (filterName: keyof CurrentFilters, optionValue: string) => void\n updateSorting: (value: string) => void\n handleSearchUpdate: (value: string) => void\n onSearchChange: (event: React.ChangeEvent) => void\n onSearchReset: () => void\n onSearchSubmit: (event: React.FormEvent) => void\n handleLoadMore: () => void\n handleLoadPrevious: () => void\n handleCloseError: () => void\n}\n\nexport function useSearch({\n filters,\n sorting: _sorting,\n tags,\n currentLanguage = 'fr',\n}: UseSearchProps): UseSearchReturn {\n const auth = services.user.useAuth()\n const isAuthenticated = auth.type === 'loggedin'\n\n const [state, setState] = React.useState(() => ({\n results: [],\n savedResults: null,\n meta: {\n offset: DEFAULT_OFFSET,\n start: DEFAULT_OFFSET,\n limit: DEFAULT_LIMIT,\n totalCount: 0,\n next: null,\n previous: null,\n },\n isFetching: true,\n isFetchingMore: false,\n isFetchingPrevious: false,\n error: null,\n errorFetchingMore: false,\n errorFetchingPrevious: false,\n currentFilters: {\n categories: ['all'],\n countries: ['all'],\n regions: ['all'],\n cities: ['all'],\n statuses: ['currently'],\n languages: ['all'],\n },\n currentSearch: '',\n currentSearchInput: '',\n currentSorting: DEFAULT_SORTING,\n resetSearch: false,\n ...getInitialStateFromUrl(),\n }))\n\n const memoizedResults = React.useMemo(() => state.results, [state.results])\n const memoizedMeta = React.useMemo(() => state.meta, [state.meta])\n const memoizedCurrentFilters = React.useMemo(() => state.currentFilters, [state.currentFilters])\n\n React.useEffect(() => {\n requestResults()\n }, [])\n\n React.useEffect(() => {\n if (state.currentFilters || state.currentSorting) {\n requestResults()\n }\n }, [state.currentFilters, state.currentSorting])\n\n React.useEffect(() => {\n if (state.resetSearch === true) {\n requestResults()\n setState((prevState) => ({ ...prevState, resetSearch: false }))\n }\n }, [state.resetSearch])\n\n return {\n state: {\n ...state,\n results: memoizedResults,\n meta: memoizedMeta,\n currentFilters: memoizedCurrentFilters,\n },\n updateFilter,\n updateSorting,\n handleSearchUpdate,\n onSearchChange,\n onSearchReset,\n onSearchSubmit,\n handleLoadMore,\n handleLoadPrevious,\n handleCloseError,\n }\n\n function parseQualifiers(): Record {\n const input: Record = {\n sort: state.currentSorting,\n }\n\n Object.keys(state.currentFilters).forEach((key) => {\n if (\n state.currentFilters[key as keyof CurrentFilters] &&\n state.currentFilters[key as keyof CurrentFilters].length > 0 &&\n SEARCH_API_FILTERS[key as keyof typeof SEARCH_API_FILTERS] &&\n state.currentFilters[key as keyof CurrentFilters][0] !==\n SEARCH_API_FILTERS[key as keyof typeof SEARCH_API_FILTERS].defaultValue\n ) {\n const qualifierEntry = SEARCH_API_FILTERS[key as keyof typeof SEARCH_API_FILTERS]\n const filter = getFilterByName(filters, key)\n\n const currentFilters = state.currentFilters[key as keyof CurrentFilters].map((currentValue) => {\n filter?.options.forEach((option: FilterOption) => {\n if (currentValue === option.value) {\n currentValue = option[qualifierEntry.valueAttribute as keyof FilterOption] as string\n }\n })\n return currentValue\n })\n\n input[qualifierEntry.qualifier] = currentFilters\n }\n })\n\n if (input.tag_id && tags) {\n input.tag_id = (input.tag_id as string[]).map((currentValue: string) => {\n tags.forEach((tag) => {\n if (currentValue === tag.slug) {\n currentValue = tag.id?.toString() || currentValue\n }\n })\n return currentValue\n })\n }\n\n input['quality_score__not'] = 'X'\n return input\n }\n\n function handleFetchingError(error: unknown, isFetchingMore = false, isFetchingPrevious = false): void {\n const errorProps = {\n level: 'alert',\n message:\n 'Oops... an error occured. Please refresh the page to retry. If the error persist, please contact support.',\n ...(error as Record),\n }\n\n setState((prevState) => ({\n ...prevState,\n isFetching: false,\n isFetchingMore: false,\n isFetchingPrevious: false,\n error: errorProps,\n errorFetchingMore: isFetchingMore && !isFetchingPrevious,\n errorFetchingPrevious: isFetchingPrevious,\n }))\n }\n\n function handleFetchingSuccess(\n results: api.Project[],\n meta: unknown,\n isFetchingMore = false,\n isFetchingPrevious = false,\n ): void {\n setState((prevState) => ({\n ...prevState,\n isFetching: false,\n isFetchingMore: false,\n isFetchingPrevious: false,\n results: results\n ? isFetchingMore\n ? isFetchingPrevious\n ? [...results, ...prevState.results]\n : [...prevState.results, ...results]\n : results\n : [],\n meta: {\n ...prevState.meta,\n ...(meta as Record),\n totalCount: (meta as { total_count: number }).total_count,\n },\n }))\n }\n\n function handleFetchingPending(\n quantityFetched = DEFAULT_LIMIT,\n isFetchingMore = false,\n isFetchingPrevious = false,\n ): void {\n setState((prevState) => ({\n ...prevState,\n results: isFetchingMore ? prevState.results : [],\n quantityFetched,\n isFetching: !isFetchingMore,\n isFetchingMore: isFetchingMore && !isFetchingPrevious,\n isFetchingPrevious,\n }))\n }\n\n async function requestResults(): Promise {\n handleFetchingPending()\n\n try {\n const qualifiers = parseQualifiers()\n const params = {\n lang: currentLanguage,\n offset: state.meta.offset,\n limit: state.meta.limit,\n }\n\n const response = await fetchSearchProjects(state.currentSearchInput, qualifiers, params, isAuthenticated)\n handleFetchingSuccess(response.projects, response.meta)\n } catch (error) {\n handleFetchingError(error)\n }\n }\n\n async function requestMoreResults(): Promise {\n const quantity = Math.min(state.meta.totalCount - state.meta.offset - state.meta.limit, state.meta.limit)\n\n handleFetchingPending(quantity, true)\n\n try {\n const response = await fetchSearchMoreProjects(state.meta.next || '', isAuthenticated)\n\n if (typeof window !== 'undefined') {\n const url = new URL(window.location.href)\n const next = new URLSearchParams(state.meta.next || '')\n url.searchParams.set('offset', next.get('offset') || '0')\n window.history.replaceState(window.history.state, document.title, url.href)\n }\n\n handleFetchingSuccess(response.projects, response.meta, true)\n } catch (error) {\n handleFetchingError(error)\n }\n }\n\n async function requestPreviousResults(): Promise {\n const totalCount = state.meta.totalCount\n const previous = state.meta.start - state.meta.limit\n const quantity = state.meta.start - Math.max(previous, 0)\n\n handleFetchingPending(quantity, true, true)\n\n try {\n const search = new URLSearchParams(state.meta.next || '')\n search.set('offset', Math.max(previous, 0).toString())\n search.set('limit', quantity.toString())\n\n const response = await fetchSearchMoreProjects(`?${search.toString()}`, isAuthenticated)\n\n if (typeof window !== 'undefined') {\n const url = new URL(window.location.href)\n url.searchParams.set('offset', Math.max(previous, 0).toString())\n window.history.replaceState(window.history.state, document.title, url.href)\n }\n\n handleFetchingSuccess(response.projects, { total_count: totalCount, start: previous }, true, true)\n } catch (error) {\n handleFetchingError(error)\n }\n }\n\n function updateFilter(filterName: keyof CurrentFilters, optionValue: string): void {\n setState((prevState) => ({\n ...prevState,\n currentFilters: {\n ...prevState.currentFilters,\n [filterName]: [optionValue],\n },\n meta: {\n ...prevState.meta,\n offset: DEFAULT_OFFSET,\n limit: DEFAULT_SORT_LIMIT,\n totalCount: 0,\n next: null,\n previous: null,\n },\n }))\n\n setQueryParam(filterName, optionValue)\n setQueryParam('offset', 0)\n }\n\n function updateSorting(value: string): void {\n setState((prevState) => ({\n ...prevState,\n currentSorting: value,\n meta: { ...prevState.meta, offset: DEFAULT_OFFSET, limit: DEFAULT_SORT_LIMIT },\n }))\n setQueryParam('sorting', value)\n }\n\n function handleSearchUpdate(value: string): void {\n setState((prevState) => ({ ...prevState, currentSearchInput: value }))\n }\n\n function onSearchChange(event: React.ChangeEvent): void {\n const value = event.target?.value || ''\n handleSearchUpdate(value)\n }\n\n function onSearchReset(): void {\n setQueryParam('search', undefined, true)\n\n setState((prevState) => ({\n ...prevState,\n currentSearch: '',\n currentSearchInput: '',\n resetSearch: true,\n meta: { ...prevState.meta, offset: DEFAULT_OFFSET, limit: DEFAULT_LIMIT },\n }))\n }\n\n function onSearchSubmit(event: React.FormEvent): void {\n event.preventDefault()\n\n if (state.currentSearchInput !== state.currentSearch) {\n const value = state.currentSearchInput || undefined\n setQueryParam('search', value, true)\n\n const newState = getInitialState({}, state.currentSearchInput, undefined, { offset: DEFAULT_OFFSET })\n setState((prevState) => ({ ...prevState, ...newState }))\n }\n }\n\n function handleLoadMore(): void {\n requestMoreResults()\n }\n\n function handleLoadPrevious(): void {\n requestPreviousResults()\n }\n\n function handleCloseError(): void {\n setState((prevState) => ({ ...prevState, error: null }))\n }\n}\n\nfunction getInitialState(filters = {}, search = '', sorting = DEFAULT_SORTING, meta = {}): Partial {\n return {\n meta: {\n offset: DEFAULT_OFFSET,\n start: DEFAULT_OFFSET,\n limit: DEFAULT_LIMIT,\n totalCount: 0,\n next: null,\n previous: null,\n ...meta,\n },\n currentFilters: {\n categories: ['all'],\n countries: ['all'],\n regions: ['all'],\n cities: ['all'],\n statuses: [search ? 'all' : 'currently'],\n languages: ['all'],\n ...filters,\n },\n currentSearch: search,\n currentSearchInput: search,\n currentSorting: sorting,\n }\n}\n\nfunction parseQueryString(queryParams: string): Record {\n const parameters = parse(queryParams, { ignoreQueryPrefix: true })\n const normalizedParameters: Record = {}\n\n Object.keys(parameters).forEach((key) => {\n if (Array.isArray(parameters[key]) || key === 'offset') {\n normalizedParameters[key] = parameters[key]\n } else {\n normalizedParameters[key] = [parameters[key]]\n }\n })\n\n return normalizedParameters\n}\n\ntype QueryStringParams = {\n sorting: string[] | undefined\n search: string[] | undefined\n offset: string | undefined\n limit: string | undefined\n [key: string]: string[] | string | undefined\n}\n\nfunction getInitialStateFromUrl(): Partial {\n if (typeof window !== 'undefined' && window.location) {\n const { sorting, search, offset, limit, ...filters } = parseQueryString(window.location.search) as QueryStringParams\n const searchValue = (search && search.length > 0 && search[search.length - 1]) || ''\n const sortingValue = (sorting && sorting.length > 0 && sorting[sorting.length - 1]) || DEFAULT_SORTING\n const start = Number(offset) || DEFAULT_OFFSET\n return getInitialState(filters, searchValue, sortingValue, { offset, limit, start })\n }\n\n return getInitialState()\n}\n\nfunction setQueryParam(name: string, value: unknown, reset = false): void {\n if (typeof window === 'undefined') return\n\n const currentQueryParams = reset ? '' : window.location.search\n const parsed = parse(currentQueryParams, { ignoreQueryPrefix: true })\n parsed[name] = value as string\n const stringified = stringify(parsed)\n const character = stringified.length > 0 ? '?' : ''\n window.history.replaceState(null, '', `${window.location.pathname}${character}${stringified}`)\n}\n","/**\n * NOTE: this component is inspired from https://github.com/JedWatson/react-input-autosize\n * It is not in npm dependencies to be able to maintain and change it like we want\n */\n\nimport * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport * as plume from '@ulule/owl-kit-components/next'\n\nconst sizerStyle: React.CSSProperties = {\n position: 'absolute',\n top: 0,\n left: 0,\n visibility: 'hidden',\n height: 0,\n overflow: 'scroll',\n whiteSpace: 'pre',\n}\n\nconst INPUT_PROPS_BLACKLIST = [\n 'extraWidth',\n 'injectStyles',\n 'inputClassName',\n 'inputRef',\n 'minWidth',\n 'onAutosize',\n 'placeholderIsMinWidth',\n]\n\nconst cleanInputProps = (inputProps: Record): Record => {\n INPUT_PROPS_BLACKLIST.forEach((field) => delete inputProps[field])\n return inputProps\n}\n\nconst copyStyles = (styles: CSSStyleDeclaration, node: HTMLElement): void => {\n node.style.fontSize = styles.fontSize || ''\n node.style.fontFamily = styles.fontFamily || ''\n node.style.fontWeight = styles.fontWeight || ''\n node.style.fontStyle = styles.fontStyle || ''\n node.style.letterSpacing = styles.letterSpacing || ''\n node.style.textTransform = styles.textTransform || ''\n}\n\nconst isIE =\n typeof window !== 'undefined' && window.navigator ? /MSIE |Trident\\/|Edge\\//.test(window.navigator.userAgent) : false\n\nconst generateId = (): string | undefined => {\n // we only need an auto-generated ID for stylesheet injection, which is only\n // used for IE. so if the browser is not IE, this should return undefined.\n return isIE ? '_' + Math.random().toString(36).substring(2, 12) : undefined\n}\n\ntype AutosizeInputProps = {\n className?: string\n defaultValue?: string\n extraWidth?: number | string\n id?: string\n injectStyles?: boolean\n inputClassName?: string\n inputRef?: (el: HTMLInputElement | null) => void\n inputStyle?: React.CSSProperties\n minWidth?: number | string\n onAutosize?: (newWidth: number) => void\n onChange?: (event: React.ChangeEvent) => void\n placeholder?: string\n placeholderIsMinWidth?: boolean\n style?: React.CSSProperties\n value?: string\n type?: string\n}\n\ntype AutosizeInputRef = {\n getInput: () => HTMLInputElement | null\n focus: () => void\n blur: () => void\n select: () => void\n}\n\nconst AutosizeInput = React.forwardRef(\n (\n {\n className,\n defaultValue,\n extraWidth,\n id,\n injectStyles = true,\n inputClassName,\n inputRef,\n inputStyle,\n minWidth = 1,\n onAutosize,\n onChange,\n placeholder,\n placeholderIsMinWidth,\n value,\n type,\n ...otherProps\n },\n ref,\n ) => {\n const [inputWidth, setInputWidth] = React.useState(Number(minWidth))\n const [inputId, setInputId] = React.useState(id || generateId())\n\n const inputElementRef = React.useRef(null)\n const placeHolderSizerRef = React.useRef(null)\n const sizerRef = React.useRef(null)\n const mountedRef = React.useRef(true)\n\n // Expose methods to parent component via ref\n React.useImperativeHandle(ref, () => ({\n getInput: () => inputElementRef.current,\n focus: () => inputElementRef.current?.focus(),\n blur: () => inputElementRef.current?.blur(),\n select: () => inputElementRef.current?.select(),\n }))\n\n // Handle inputRef callback\n const handleInputRef = React.useCallback(\n (el: HTMLInputElement | null) => {\n inputElementRef.current = el\n if (typeof inputRef === 'function') {\n inputRef(el)\n }\n },\n [inputRef],\n )\n\n const copyInputStyles = React.useCallback(() => {\n if (!mountedRef.current || !window.getComputedStyle) {\n return\n }\n\n const inputStyles = inputElementRef.current && window.getComputedStyle(inputElementRef.current)\n\n if (!inputStyles) {\n return\n }\n\n if (sizerRef.current) {\n copyStyles(inputStyles, sizerRef.current)\n }\n\n if (placeHolderSizerRef.current) {\n copyStyles(inputStyles, placeHolderSizerRef.current)\n }\n }, [])\n\n const updateInputWidth = React.useCallback(() => {\n if (!mountedRef.current || !sizerRef.current || typeof sizerRef.current.scrollWidth === 'undefined') {\n return\n }\n\n let newInputWidth: number\n\n if (placeholder && (!value || (value && placeholderIsMinWidth))) {\n const sizerWidth = sizerRef.current.scrollWidth\n const placeholderWidth = placeHolderSizerRef.current?.scrollWidth || 0\n newInputWidth = Math.max(sizerWidth, placeholderWidth) + 2\n } else {\n newInputWidth = sizerRef.current.scrollWidth + 2\n }\n\n // add extraWidth to the detected width. for number types, this defaults to 16 to allow for the stepper UI\n const extraWidthValue = type === 'number' && extraWidth === undefined ? 16 : parseInt(String(extraWidth)) || 0\n newInputWidth += extraWidthValue\n\n if (newInputWidth < Number(minWidth)) {\n newInputWidth = Number(minWidth)\n }\n\n if (newInputWidth !== inputWidth) {\n setInputWidth(newInputWidth)\n }\n }, [placeholder, value, placeholderIsMinWidth, extraWidth, type, minWidth, inputWidth])\n\n React.useEffect(() => {\n mountedRef.current = true\n copyInputStyles()\n updateInputWidth()\n\n return () => {\n mountedRef.current = false\n }\n }, [copyInputStyles, updateInputWidth])\n\n React.useEffect(() => {\n if (id !== undefined) {\n setInputId(id || generateId())\n }\n }, [id])\n\n React.useEffect(() => {\n if (typeof onAutosize === 'function') {\n onAutosize(inputWidth)\n }\n }, [inputWidth, onAutosize])\n\n React.useEffect(() => {\n updateInputWidth()\n }, [value, placeholder, updateInputWidth])\n\n const renderStyles = React.useCallback(() => {\n // this method injects styles to hide IE's clear indicator, which messes\n // with input size detection. the stylesheet is only injected when the\n // browser is IE, and can also be disabled by the `injectStyles` prop.\n return isIE && injectStyles ? (\n \n ) : null\n }, [inputId, injectStyles])\n\n const sizerValue = [defaultValue, value, ''].reduce((previousValue, currentValue) => {\n if (previousValue !== null && previousValue !== undefined) {\n return previousValue\n }\n return currentValue\n })\n\n const finalInputStyle: React.CSSProperties = {\n boxSizing: 'content-box',\n width: `${inputWidth}px`,\n ...inputStyle,\n }\n\n const inputProps = { ...otherProps } as Record\n cleanInputProps(inputProps)\n inputProps.className = inputClassName\n inputProps.id = inputId\n inputProps.style = finalInputStyle\n\n // ensure placeholder and type are forwarded to the actual input element\n if (placeholder !== undefined) {\n ;(inputProps as Record).placeholder = placeholder\n }\n if (type !== undefined) {\n ;(inputProps as Record).type = type\n }\n\n return (\n \n {renderStyles()}\n \n
    \n {sizerValue}\n
    \n {placeholder ? (\n
    \n {placeholder}\n
    \n ) : null}\n
    \n )\n },\n)\n\nAutosizeInput.displayName = 'AutosizeInput'\n\nexport default AutosizeInput\n\nconst Wrapper = styled.div`\n position: relative;\n display: inline-block;\n\n input {\n border: none;\n background: transparent;\n color: ${plume.COLORS.PRIMARY_GREY_000};\n font-family: ${plume.FONTS.PRIMARY_FONT};\n font-size: 28px;\n font-weight: 400;\n max-width: 1060px;\n }\n\n > input::placeholder {\n color: rgba(255, 255, 255, 0.5);\n }\n`\n","import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport { t } from '@owl-nest/localize'\nimport * as plume from '@ulule/owl-kit-components/next'\n\nimport AutosizeInput from './AutosizeInput'\n\ntype SearchBarProps = {\n value: string\n onChange: (value: string) => void\n onSubmit: (event: React.FormEvent) => void\n onReset: () => void\n}\n\nfunction SearchBar({ value, onChange, onSubmit, onReset }: SearchBarProps): React.ReactElement {\n const inputRef = React.useRef(null)\n\n React.useEffect(() => {\n if (!value) {\n autoFocus()\n }\n }, [value])\n\n return (\n \n {!value.length && (\n \n \n \n )}\n\n (inputRef.current = el)}\n onChange={(event) => {\n onChange(event.target.value)\n }}\n placeholder={t('Search')}\n value={value}\n />\n\n {value.length > 0 && (\n \n \n \n )}\n \n )\n\n function autoFocus(): void {\n inputRef.current?.focus()\n }\n}\n\nexport default SearchBar\n\nexport const SearchBarWrapper = styled.form`\n background-color: ${plume.COLORS.PRIMARY_BLUE_500};\n color: white;\n display: flex;\n width: 100%;\n height: 87px;\n align-items: center;\n justify-content: center;\n`\n\nexport const SearchLabel = styled.label`\n margin-right: 10px;\n\n svg {\n top: 4px;\n }\n`\n\nexport const ResetButton = styled.span`\n display: inline-flex;\n margin-left: 10px;\n color: ${plume.COLORS.TEXT_PRIMARY};\n cursor: pointer;\n\n &:hover {\n color: ${plume.COLORS.PRIMARY_GREY_000};\n }\n`\n","import * as React from 'react'\nimport { styled } from 'next-yak'\n\nfunction HorizontalScroller({ children }: { children: React.ReactNode }): React.ReactElement {\n const [lowerBound, setLowerBound] = React.useState(false)\n const [higherBound, setHigherBound] = React.useState(false)\n\n React.useEffect(() => {\n onScrollChange()\n }, [])\n\n const scroller = React.useRef(null)\n\n return (\n \n \n {children}\n \n \n )\n\n function isLowerBoundScrolling(): boolean {\n if (!scroller.current) {\n return false\n }\n\n return scroller.current.scrollLeft === 0\n }\n\n function isHigherBoundScrolling(): boolean {\n if (!scroller.current) {\n return false\n }\n\n const clientWidth = scroller.current.clientWidth\n const scrollLeft = scroller.current.scrollLeft\n const scrollWidth = scroller.current.scrollWidth\n\n return clientWidth + scrollLeft >= scrollWidth\n }\n\n function onScrollChange(): void {\n setLowerBound(isLowerBoundScrolling())\n setHigherBound(isHigherBoundScrolling())\n }\n}\n\nexport default HorizontalScroller\n\nexport const HorizontalScrollerContainer = styled.div<{ $lowerBound: boolean; $higherBound: boolean }>`\n width: 100%;\n overflow: hidden;\n\n &::before,\n &::after {\n content: '';\n height: 100%;\n pointer-events: none;\n position: absolute;\n top: 0;\n transition: opacity 250ms ease-in-out;\n width: 100px;\n z-index: 2;\n }\n\n &::before {\n left: 0;\n opacity: ${(props) => (props.$lowerBound ? 0 : 1)};\n background: linear-gradient(\n 90deg,\n rgba(255, 255, 255, 1) 0%,\n rgba(255, 255, 255, 1) 18%,\n rgba(255, 255, 255, 0.85) 34%,\n rgba(255, 255, 255, 0) 100%\n );\n }\n\n &::after {\n right: 0;\n opacity: ${(props) => (props.$higherBound ? 0 : 1)};\n background: linear-gradient(\n -90deg,\n rgba(255, 255, 255, 1) 0%,\n rgba(255, 255, 255, 1) 18%,\n rgba(255, 255, 255, 0.85) 34%,\n rgba(255, 255, 255, 0) 100%\n );\n }\n`\n\nexport const Track = styled.div`\n overflow-x: scroll;\n overflow-y: hidden;\n`\n","import { styled } from 'next-yak'\n\nimport * as plume from '@ulule/owl-kit-components/next'\n\nexport const MobileFiltersBarContainer = styled.div`\n overflow: hidden;\n padding: 10px 0;\n width: 100%;\n`\n\nexport const DesktopFiltersBarContainer = styled.div`\n align-items: flex-start;\n display: flex;\n flex-flow: row nowrap;\n font-weight: 300;\n justify-content: flex-start;\n margin: 0 auto;\n max-width: 1060px;\n padding: 20px 0;\n position: relative;\n`\n\nexport const FiltersListWrapper = styled.div`\n display: flex;\n flex-flow: column nowrap;\n position: relative;\n width: 100%;\n`\n\nexport const FilterItem = styled.li<{ $hidden?: boolean }>`\n display: ${(props) => (props.$hidden ? 'none' : 'flex')};\n`\n\nexport const FiltersList = styled.ul<{ $wrapped?: boolean }>`\n align-items: center;\n display: flex;\n flex-flow: ${(props) => (props.$wrapped ? 'row nowrap' : 'row wrap')};\n justify-content: flex-start;\n list-style-type: none;\n margin: -5px;\n padding: 20px 0;\n\n ${FilterItem} {\n flex: 0 0 auto;\n padding: 5px;\n\n &:first-child {\n padding-left: ${(props) => (props.$wrapped ? '20px' : '5px')};\n }\n\n &:last-child {\n padding-right: ${(props) => (props.$wrapped ? '20px' : '5px')};\n }\n }\n`\n\nexport const FilterOptionItemWrapper = styled.li<{ $selected?: boolean }>`\n align-items: center;\n color: ${(props) => (props.$selected ? plume.COLORS.PRIMARY_BLUE_500 : plume.COLORS.TEXT_PRIMARY)};\n cursor: ${(props) => (props.$selected ? 'default' : 'pointer')};\n display: flex;\n font-size: 13px;\n font-weight: 500;\n pointer-events: ${(props) => (props.$selected ? 'none' : 'auto')};\n\n &:hover {\n color: ${(props) => (props.$selected ? 'inherit' : plume.COLORS.PRIMARY_BLUE_500)};\n }\n`\n\nexport const ToggleFiltersButton = styled.span``\n\nfunction getHeightPropList(nbItems: number): string {\n if (nbItems <= 8) {\n return '60px'\n } else if (nbItems >= 20) {\n return '240px'\n } else {\n return '120px'\n }\n}\n\nfunction getFlexPropItem(nbItems: number): string {\n if (nbItems <= 8) {\n return '0 1 50%'\n } else if (nbItems >= 20) {\n return '0 1 12.5%'\n } else {\n return '0 1 25%'\n }\n}\n\nexport const FilterOptionsListWrapper = styled.ul<{ children: React.ReactNode[] }>`\n align-content: flex-start;\n align-items: flex-start;\n display: flex;\n flex-flow: column wrap;\n height: ${(props) => getHeightPropList(props.children.length)};\n list-style-type: none;\n margin: 20px -10px;\n padding: 0;\n width: 100%;\n\n ${FilterOptionItemWrapper} {\n flex: ${(props) => getFlexPropItem(props.children.length)};\n min-width: 180px;\n padding: 0 10px;\n }\n`\n","import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport { DropdownFilter } from '@ulule/owl-kit-components'\n\nimport HorizontalScroller from './HorizontalScroller'\nimport * as S from './styles'\nimport { Filter } from '../../utils/filters'\n\ntype MobileFiltersListProps = {\n filters: Filter[]\n currentFilters: { [key: string]: string[] }\n onUpdateFilter: (event: React.MouseEvent) => void\n}\n\nfunction MobileFiltersList({ filters, currentFilters, onUpdateFilter }: MobileFiltersListProps): React.ReactElement {\n return (\n \n \n \n {filters.map(({ name, label, options }, index) => (\n \n \n \n ))}\n \n \n \n )\n}\n\nexport default MobileFiltersList\n\nconst OnlyMobile = styled.div`\n display: block;\n\n @media screen and (min-width: 1020px) {\n display: none;\n }\n`\n","import * as React from 'react'\n\nimport * as S from './styles'\n\ntype FilterOptionsListProps = {\n filterName: string\n onClickItem: (event: React.MouseEvent) => void\n options: {\n label: string\n value: string\n }[]\n selectedValue?: string\n}\n\nfunction FilterOptionsList({\n filterName,\n onClickItem,\n options,\n selectedValue,\n}: FilterOptionsListProps): React.ReactElement | null {\n if (!options.length) {\n return null\n }\n\n return (\n \n {options.map((option, index) => (\n \n {option.label}\n \n ))}\n \n )\n}\n\nexport default FilterOptionsList\n","import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport { t } from '@owl-nest/localize'\nimport * as plume from '@ulule/owl-kit-components'\n\nimport { getFilterByName } from '../../utils/filters'\nimport FilterOptionsList from './FilterOptionsList'\nimport * as S from './styles'\nimport { Filter } from '../../utils/filters'\n\nconst NB_MAX_FILTERS = 3\n\ntype DesktopFiltersListProps = {\n filters: Filter[]\n currentFilters: {\n [key: string]: string[]\n }\n onUpdateFilter: (name: string, value: string) => void\n}\n\nfunction DesktopFiltersList({ filters, currentFilters, onUpdateFilter }: DesktopFiltersListProps): React.ReactElement {\n const [isExpanded, setIsExpanded] = React.useState(false)\n const [expandedFilter, setExpandedFilter] = React.useState(null)\n\n return (\n \n \n \n \n {filters.map((filter, index) => {\n const { name, label, options } = filter\n if (filters.length > NB_MAX_FILTERS + 1 && index >= NB_MAX_FILTERS && !isExpanded) {\n return null\n }\n\n return (\n \n handleClickFilter(event, name)}\n autosize\n />\n \n )\n })}\n {filters.length > NB_MAX_FILTERS + 1 && (\n \n \n {isExpanded ? t('Less filters') : t('More filters')}\n \n \n )}\n \n {expandedFilter && (\n \n )}\n \n \n \n )\n\n function toggleExpanded(): void {\n setIsExpanded(!isExpanded)\n setExpandedFilter(null)\n }\n\n function handleClickFilter(event: React.MouseEvent, filterName: string): void {\n event.preventDefault()\n\n if (expandedFilter && expandedFilter.name === filterName) {\n setExpandedFilter(null)\n } else {\n const nextExpandedFilter = getFilterByName(filters, filterName) as Filter | null\n setExpandedFilter(nextExpandedFilter)\n }\n }\n\n function handleClickOption(event: React.MouseEvent): void {\n event.preventDefault()\n\n const target = event.currentTarget as HTMLElement\n const filterName = target.dataset.filter\n const optionValue = target.dataset.value\n\n if (filterName && optionValue) {\n onUpdateFilter(filterName, optionValue)\n setExpandedFilter(null)\n }\n }\n}\n\nexport default DesktopFiltersList\n\nconst OnlyDesktop = styled.div`\n display: none;\n\n @media screen and (min-width: 1020px) {\n display: block;\n }\n`\n","import * as React from 'react'\n\nimport MobileFiltersList from './MobileFiltersList'\nimport DesktopFiltersList from './DesktopFiltersList'\nimport { Filter } from '../../utils/filters'\n\ntype CurrentFilters = {\n [key: string]: string[]\n}\n\ntype FiltersBarProps = {\n currentFilters: CurrentFilters\n filters: Filter[]\n updateFilter: (name: string, value: string) => void\n}\n\nfunction FiltersBar({ filters, currentFilters, updateFilter }: FiltersBarProps): React.ReactElement | null {\n if (!filters || !filters.length) {\n return null\n }\n\n return (\n <>\n handleFilterUpdate(event)}\n />\n \n \n )\n\n function handleFilterUpdate(event): void {\n const filterName = event.target && event.target.name\n const optionValue = event.target && event.target.value\n updateFilter(filterName, optionValue)\n }\n}\n\nexport default FiltersBar\n","import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport { t, tc } from '@owl-nest/localize'\nimport * as plume from '@ulule/owl-kit-components/next'\n\nimport * as UFE from '../../UFE'\n\nfunction NoResults(): React.ReactElement {\n const noResultsImg = UFE?.ASSETS?.noResults?.['x1'] ?? ''\n const noResultsImgx2 = UFE?.ASSETS?.noResults?.['x2'] ?? ''\n const noResultsImgx3 = UFE?.ASSETS?.noResults?.['x3'] ?? ''\n\n return (\n \n {t('No\n\n \n {tc('[strong: No results]. We invite you to change your search criteria.', { strong: })}\n \n {t('Some suggestions:')}\n\n \n
  • \n \n {t('Projects ending soon')}\n \n
  • \n
  • \n \n {t('Popular projects')}\n \n
  • \n
  • \n \n \n {t('Reinitialize filters')}\n \n
  • \n
    \n
    \n )\n}\n\nexport default NoResults\n\nconst NoResultsContainer = styled.div`\n border-bottom: 1px solid ${plume.COLORS.PRIMARY_GREY_500};\n margin: 0 auto;\n padding: 20px;\n text-align: center;\n\n strong {\n font-weight: 500;\n }\n`\n\nconst ActionsList = styled.ol`\n list-style-type: none;\n margin: 20px auto;\n padding: 0;\n width: fit-content;\n\n > li {\n width: 100%;\n margin: 10px auto;\n }\n`\n\nconst SuggestionLink = styled(plume.Link)`\n align-items: center;\n display: inline-flex;\n height: 50px;\n\n > div:first-child {\n color: ${plume.COLORS.PRIMARY_GREY_500};\n margin-right: 5px;\n transform: rotate(-180deg);\n transition: transform 200ms ease-out;\n }\n\n &:hover {\n > div:first-child {\n transition: transform 400ms ease-in;\n transform: rotate(180deg);\n }\n }\n`\n","import * as React from 'react'\nimport { styled } from 'next-yak'\n\nimport { t } from '@owl-nest/localize'\nimport * as plume from '@ulule/owl-kit-components/next'\nimport * as env from '@owl-nest/config'\nimport * as api from '@owl-nest/api-client/latest'\nimport * as services from '@owl-nest/services'\n\nimport SortingBar from '../sortingbar'\nimport ProjectsList from '$components/ProjectsList/ProjectsList'\n\ntype ResultsProps = {\n quantityFetched: number\n canLoadPrevious: boolean\n canLoadMore: boolean\n handleLoadPrevious: () => void\n isFetchingPrevious: boolean\n errorFetchingPrevious: boolean\n isFetching: boolean\n isFetchingMore: boolean\n errorFetchingMore: boolean\n resultsCount: number\n sorting: { value: string; label: string }[]\n currentSorting: string\n updateSorting: (sorting: string) => void\n handleLoadMore: () => void\n results: api.Project[]\n modalImg: {\n '1x': string | undefined\n '2x': string | undefined\n '3x': string | undefined\n }\n}\n\nfunction Results({\n quantityFetched,\n canLoadPrevious,\n canLoadMore,\n handleLoadPrevious,\n isFetchingPrevious,\n errorFetchingPrevious,\n isFetching,\n isFetchingMore,\n errorFetchingMore,\n resultsCount,\n sorting,\n currentSorting,\n updateSorting,\n handleLoadMore,\n results,\n modalImg,\n}: ResultsProps): React.ReactElement {\n const currentLanguage = env.getUserLocale()\n const currentCurrency = env.getUserCurrency()\n const rates = env.CURRENCIES_RATES\n const urls = {\n signin: env.SIGNIN_URL,\n signout: env.SIGNOUT_URL,\n signup: env.SIGNUP_URL,\n discover: env.DISCOVER_URL,\n discoverLandingPage: env.DISCOVER_LANDING_URL,\n home: env.HOMEPAGE_URL,\n proposal: env.PROPOSAL_URL,\n channels: env.CHANNELS_URL,\n discussions: env.DISCUSSIONS_URL,\n }\n const auth = services.user.useAuth()\n const isAuthenticated = auth.type === 'loggedin'\n\n return (\n \n
    \n
    \n
    \n \n
    \n\n {canLoadPrevious && (\n
    \n \n {errorFetchingPrevious ? t('Retry') : t('Load previous projects')}\n \n
    \n )}\n\n
    \n \n
    \n\n {canLoadMore && (\n
    \n \n {errorFetchingMore ? t('Retry') : t('More projects')}\n \n
    \n )}\n
    \n
    \n
    \n )\n}\n\nexport default Results\n\nconst Wrapper = styled.div`\n header {\n position: relative;\n z-index: 2;\n }\n`\n","import * as React from 'react'\n\nimport * as plume from '@ulule/owl-kit-components/next'\nimport * as env from '@owl-nest/config'\n\nimport { useSearch } from '../hooks/useSearch'\nimport { type Filter, type FilterOption } from '../utils/filters'\n\nimport SearchBar from '../components/searchbar'\nimport FiltersBar from '../components/filtersbar/index'\nimport NoResults from '../components/noresults'\nimport Results from '../components/results'\n\ntype SortingOption = {\n value: string\n label: string\n}\n\ntype FilterBarFilter = {\n label: string\n name: string\n options: Array<{ value: string; label: string }>\n}\n\ntype SearchSectionProps = {\n filters: Filter[]\n sorting: SortingOption[]\n modalImg: {\n '1x': string | undefined\n '2x': string | undefined\n '3x': string | undefined\n }\n tags?: FilterOption[]\n}\n\nfunction SearchSection({ filters, sorting, modalImg, tags }: SearchSectionProps): React.ReactElement {\n const currentLanguage = env.getUserLocale()\n\n const {\n state,\n updateFilter,\n updateSorting,\n handleSearchUpdate,\n onSearchReset,\n onSearchSubmit,\n handleLoadMore,\n handleLoadPrevious,\n handleCloseError,\n } = useSearch({\n filters,\n sorting,\n tags,\n currentLanguage,\n })\n\n return (\n <>\n handleSearchUpdate(value)}\n onSubmit={(event: React.FormEvent) => onSearchSubmit(event)}\n onReset={onSearchReset}\n />\n\n {state.error && (\n handleCloseError()} closable wrapWithCopy>\n {state.error.message}\n \n )}\n\n
    \n updateFilter(name as keyof typeof state.currentFilters, value)}\n />\n
    \n\n {!state.isFetching && state.meta.totalCount === 0 ? (\n \n ) : (\n 0}\n canLoadMore={state.meta.next !== null}\n isFetchingPrevious={state.isFetchingPrevious}\n errorFetchingPrevious={state.errorFetchingPrevious}\n handleLoadPrevious={handleLoadPrevious}\n isFetching={state.isFetching}\n isFetchingMore={state.isFetchingMore}\n errorFetchingMore={state.errorFetchingMore}\n resultsCount={state.meta.totalCount}\n sorting={sorting}\n currentSorting={state.currentSorting}\n updateSorting={updateSorting}\n handleLoadMore={handleLoadMore}\n results={state.results}\n modalImg={modalImg}\n />\n )}\n \n )\n}\n\nexport default SearchSection\n","import * as React from 'react'\nimport * as ReactDOM from 'react-dom/client'\nimport { styled } from 'next-yak'\n\nimport * as env from '@owl-nest/config'\nimport * as logger from '@owl-nest/logger'\nimport * as services from '@owl-nest/services'\n\nimport SausageMenu from '$components/Menu/Sausage'\n\nimport { processData } from './utils/data'\nimport { usePartnersOperation } from './hooks/usePartnersOperation'\nimport * as UFE from './UFE'\nimport { Partners } from './components/Partners'\nimport SearchSection from './views/SearchSection'\n\nfunction renderApp() {\n logger.setTag('feature', 'discover')\n\n const language = env.getUserLocale()\n\n if (process.env.NODE_ENV !== 'production') {\n console.log(`React is renderering app for language=${language}`)\n }\n\n // Process JSON data before give it to React app\n const data = processData(UFE.DISCOVER_DATA)\n\n // Render app\n const container = document.getElementById('react-app-root')\n const root = ReactDOM.createRoot(container as HTMLElement)\n root.render()\n}\n\n// Initialize application\nwindow.addEventListener('js:location:loaded', async () => {\n renderApp()\n})\n\nfunction App({ data }: { data: any }) {\n const auth = services.user.useAuth()\n\n const { partnersOperations } = usePartnersOperation()\n\n const onGoingPartnersOperations =\n partnersOperations.filter(\n (predicate) => predicate.status === services.partnersOperation.PartnerOperationStatus.ONGOING,\n ) ?? ([] as services.partnersOperation.OngoingPartnersOperation[])\n\n // HACK: double spinner here (with the one in the template /frontend/src/ulule/templates/ulule/presale/index/discover.html#L34-L35)\n // because we need to initialize the auth to know whether the user is logged in or not\n // to get the correct extra fields on the initial render of SearchSection\n if (auth.type === 'initial') {\n return (\n \n
    \n
    \n
    \n
    \n
    \n
    \n )\n }\n\n return (\n <>\n \n\n
    \n \n
    \n\n {onGoingPartnersOperations.length > 0 && }\n \n )\n}\n\nconst Wrapper = styled.div`\n justify-content: center;\n align-items: center;\n display: flex;\n height: 50vh;\n`\n"],"x_google_ignoreList":[11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31],"mappings":"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"}