{"version":3,"file":"modern.discover.B7JGVHK-.js","names":["styled","css","button","copy","link","tag","colors","effects","fonts","glyphs","utils","zindex","Picture","$url","Category","props","primary","Brand","Description","Body","Container","Wrapper","OperationWrapper","OperationLink","OperationHeader","LinkWrapper","S","regular","OperationContent","$compact","CompactOperationDescription","OperationDescription","KeyList","OperationContent","styled","glyphs","S","Button","Link","Picture","StatusPill","Tag","RoundButton","jsx","_jsx","jsxs","_jsxs","PartnerOperationCardComponent","buttonUrl","buttonTarget","className","compact","isOngoing","linkUrl","linkTarget","pictureUrl","pictureSrcSet","translation","card","partner","OperationWrapper","children","OperationHeader","color","status","OperationLink","target","rel","href","OperationPicture","alt","loading","src","srcSet","CompactOperationContent","OperationContent","tag","OperationDescription","description","KeyList","copy","M","semiBold","keyTitle","keyList","as","buttonMore","LinkWrapper","kind","link","$compact","CompactOperationDescription","suffixIcon","stroke","ArrowRight","size","inverted","underlined","PartnerOperationCard","S.card.partner.OperationWrapper","S.card.partner.OperationHeader","S.card.partner.OperationLink","S.card.partner.OperationContent","S.card.partner.OperationDescription","S.card.partner.KeyList","S.card.partner.LinkWrapper","S.card.partner.CompactOperationDescription","glyphs.stroke.ArrowRight","React","styled","SliderButton","S","hooks","jsx","_jsx","jsxs","_jsxs","SlidingCarouselComponent","children","style","className","$scrollOffset","$verticalOnMobile","$carouselRef","useRef","canScrollRight","setCanScrollRight","useState","canScrollLeft","setCanScrollLeft","contentIsScrollable","setContentAsScrollable","useScrollableListener","scrollable","x","useScrollListener","current","clientWidth","scrollWidth","scrollLeft","useIsoLayoutEffect","handleScrollLeft","handleScrollRight","SlidingWrapper","SlidingControlWrapper","SlidingControlButtons","direction","disabled","onClick","SlidingCarouselWrapper","ref","SlidingCarousel","S.SlidingWrapper","S.SlidingControlWrapper","S.SlidingControlButtons","S.SlidingCarouselWrapper","heading.HighlightedTitle","Enum.create","jotai.atom","hooks.useSharedQuery","React","styled","RegularText","COLORS","jsx","_jsx","SausageItemWrapper","SausageItemText","SausageItem","element","children","href","absolute_url","name","React","styled","keyframes","withPrivatePublicMap","anim","PrivateSausageList","props","$isHover","SausageList","isHover","React","MediaQuery","styled","SausageItem","SausageList","jsx","_jsx","jsxs","_jsxs","SausageWrapper","Sausage","Component","wrapperRef","createRef","props","state","hover","componentDidMount","body","current","list","firstChild","listSize","getBoundingClientRect","setState","width","handleHover","hoverState","render","items","onMouseOut","onMouseOver","ref","children","isHover","length","map","element","key","minWidth","env.getUserLocale","api.LOCALES","env.CONTENTFUL_ENVIRONMENT","env.CONTENTFUL_SPACE_ID","env.CONTENTFUL_DELIVERY_TOKEN_MASTER","contentful.requester","services.partnersOperation.usePartnersOperationCollection","env.lens","isValidElement","cloneElement","helpers.isText","helpers.stripEmptyTrailingParagraphFromDocument","_Fragment","React","styled","RichText","t","tc","services","shadow","plume","Fragment","_Fragment","jsx","_jsx","jsxs","_jsxs","Partners","partners","length","Wrapper","children","TitleGroup","SectionTitle","highlight","HighlightedTitle","color","List","SlidingCarousel","map","partnerOperation","index","PartnerOperationCardWithTracking","CenteredCTA","href","partnerOperationRef","useRef","usePartnershipTracker","partnerUserId","undefined","click","enabled","eventPosition","ignoreLocationChange","impression","once","ref","PartnerOperationCard","compact","translation","status","description","document","json","renderNode","Paragraph","styles","copy","S","regular","keyTitle","keyList","buttonMore","link","pictureUrl","cover","url","pictureSrcSet","url_2x","url_3x","isOngoing","partnersOperation","PartnerOperationStatus","ONGOING","buttonUrl","urlMore","linkUrl","urlProjectList","ButtonAsLink","heading","L","attrs","asDesktop","_Fragment","Wrapper","plume.HighlightedTitle","plume.SlidingCarousel","plume.PartnerOperationCard","plume.ButtonAsLink","plume.styles.heading.L","services.user.useAuth","parse","stringify","React","styled","plume","jsx","_jsx","jsxs","_jsxs","sizerStyle","position","top","left","visibility","height","overflow","whiteSpace","INPUT_PROPS_BLACKLIST","cleanInputProps","inputProps","forEach","field","copyStyles","styles","node","style","fontSize","fontFamily","fontWeight","fontStyle","letterSpacing","textTransform","isIE","window","navigator","test","userAgent","generateId","Math","random","toString","substring","undefined","AutosizeInput","forwardRef","className","defaultValue","extraWidth","id","injectStyles","inputClassName","inputRef","inputStyle","minWidth","onAutosize","onChange","placeholder","placeholderIsMinWidth","value","type","otherProps","ref","inputWidth","setInputWidth","useState","Number","inputId","setInputId","inputElementRef","useRef","placeHolderSizerRef","sizerRef","mountedRef","useImperativeHandle","getInput","current","focus","blur","select","handleInputRef","useCallback","el","copyInputStyles","getComputedStyle","inputStyles","updateInputWidth","scrollWidth","newInputWidth","sizerWidth","placeholderWidth","max","extraWidthValue","parseInt","String","useEffect","renderStyles","dangerouslySetInnerHTML","__html","sizerValue","reduce","previousValue","currentValue","finalInputStyle","boxSizing","width","Wrapper","children","displayName","Wrapper","React","styled","t","plume","AutosizeInput","jsx","_jsx","jsxs","_jsxs","SearchBar","value","onChange","onSubmit","onReset","inputRef","useRef","useEffect","autoFocus","SearchBarWrapper","children","length","SearchLabel","htmlFor","glyphs","stroke","Search","size","id","el","current","event","target","placeholder","ResetButton","onClick","Close","title","focus","plume.glyphs.stroke.Search","plume.glyphs.stroke.Close","React","styled","jsx","_jsx","HorizontalScroller","children","lowerBound","setLowerBound","useState","higherBound","setHigherBound","useEffect","onScrollChange","scroller","useRef","HorizontalScrollerContainer","$lowerBound","$higherBound","Track","ref","onScroll","isLowerBoundScrolling","current","scrollLeft","isHigherBoundScrolling","clientWidth","scrollWidth","props","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","plume.COLORS.PRIMARY_BLUE_500","plume.COLORS.TEXT_PRIMARY","styled","DropdownFilter","HorizontalScroller","S","jsx","_jsx","MobileFiltersList","filters","currentFilters","onUpdateFilter","OnlyMobile","children","FiltersList","$wrapped","map","name","label","options","index","FilterItem","onChange","useDefault","value","S.FiltersList","S.FilterItem","S.FilterOptionsListWrapper","S.FilterOptionItemWrapper","React","styled","t","plume","getFilterByName","FilterOptionsList","S","jsx","_jsx","jsxs","_jsxs","NB_MAX_FILTERS","DesktopFiltersList","filters","currentFilters","onUpdateFilter","isExpanded","setIsExpanded","useState","expandedFilter","setExpandedFilter","OnlyDesktop","children","DesktopFiltersBarContainer","FiltersListWrapper","FiltersList","map","filter","index","name","label","options","length","FilterItem","DropdownFilter","value","focused","onClick","event","handleClickFilter","autosize","SecondaryLink","toggleExpanded","filterName","onClickItem","handleClickOption","selectedValue","preventDefault","nextExpandedFilter","target","currentTarget","dataset","optionValue","S.DesktopFiltersBarContainer","S.FiltersListWrapper","S.FiltersList","S.FilterItem","plume.DropdownFilter","plume.SecondaryLink","_Fragment","styled","t","tc","plume","UFE","jsx","_jsx","jsxs","_jsxs","NoResults","noResultsImg","ASSETS","noResults","noResultsImgx2","noResultsImgx3","NoResultsContainer","children","src","srcSet","alt","styles","copy","M","light","strong","ActionsList","ButtonAsLink","kind","href","SuggestionLink","withIcon","glyphs","stroke","Refresh","size","Link","\"x1\"","\"x2\"","\"x3\"","plume.ButtonAsLink","plume.glyphs.stroke.Refresh","plume.Link","styled","t","plume","env","services","SortingBar","ProjectsList","jsx","_jsx","jsxs","_jsxs","Results","quantityFetched","canLoadPrevious","canLoadMore","handleLoadPrevious","isFetchingPrevious","errorFetchingPrevious","isFetching","isFetchingMore","errorFetchingMore","resultsCount","sorting","currentSorting","updateSorting","handleLoadMore","results","modalImg","currentLanguage","getUserLocale","currentCurrency","getUserCurrency","rates","CURRENCIES_RATES","urls","signin","SIGNIN_URL","signout","SIGNOUT_URL","signup","SIGNUP_URL","discover","DISCOVER_URL","discoverLandingPage","DISCOVER_LANDING_URL","home","HOMEPAGE_URL","proposal","PROPOSAL_URL","channels","CHANNELS_URL","discussions","DISCUSSIONS_URL","auth","user","useAuth","isAuthenticated","type","Wrapper","children","className","context","count","Button","loading","error","onClick","kind","dataUTMPageContext","value","projects","nbPlaceholders","env.getUserLocale","env.getUserCurrency","env.CURRENCIES_RATES","env.SIGNIN_URL","env.SIGNOUT_URL","env.SIGNUP_URL","env.DISCOVER_URL","env.DISCOVER_LANDING_URL","env.PROPOSAL_URL","env.CHANNELS_URL","env.DISCUSSIONS_URL","services.user.useAuth","Wrapper","plume.Button","env.getUserLocale","_Fragment","plume.Banner","ReactDOM","styled","env","logger","services","SausageMenu","processData","usePartnersOperation","UFE","Partners","SearchSection","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","renderApp","setTag","language","getUserLocale","process","NODE_ENV","console","log","data","DISCOVER_DATA","container","document","getElementById","root","createRoot","render","App","window","addEventListener","auth","user","useAuth","partnersOperations","onGoingPartnersOperations","filter","predicate","status","partnersOperation","PartnerOperationStatus","ONGOING","type","Wrapper","children","className","filters","sorting","modalImg","DEFAULT_ASSETS","modalRemindMe","items","categories","length","partners","UFE.DISCOVER_DATA","services.user.useAuth","_Fragment","SausageMenu","require_react","__toESM","SIGNOUT_URL","DISCUSSIONS_URL","M","__yak_header","PROPOSAL_URL","DISCOVER_LANDING_URL","PRIMARY_BLUE_500","S","SIGNIN_URL","CONTENTFUL_SPACE_ID","Button","__yak_li","__yak_label","__yak_a","CONTENTFUL_DELIVERY_TOKEN_MASTER","t","setTag","__yak_ul","__yak_span","SIGNUP_URL","styled","DISCOVER_URL","__yak_form","lens","TEXT_PRIMARY","css","__yak_ol","withPrivatePublicMap","create","CURRENCIES_RATES","__yak_div","_defineProperty","CONTENTFUL_ENVIRONMENT","tc","CHANNELS_URL","require_client","Search","Refresh","Close","ArrowRight","useIsoLayoutEffect","useScrollableListener","useScrollListener","L","HighlightedTitle$1","Picture","SlidingCarouselWrapper","SlidingWrapper","SlidingControlButtons","SliderButton","SlidingControlWrapper","Link","ButtonAsLink","RoundButton","Tag","StatusPill","LOCALES","getUserCurrency","getUserLocale","atom","Banner","usePartnershipTracker","MediaQuery","SecondaryLink","RegularText","ProjectsList","DropdownFilter","fetchSearchProjects","SortingBar","fetchSearchMoreProjects","useAuth","useSharedQuery","useFetchOnMount","require_lib","query","rawRequester","fragment","responsiveImageFragment","GraphQLClient","requester","OperationWrapper","OperationLink","OperationHeader","LinkWrapper","OperationContent$1","$compact","CompactOperationDescription","OperationDescription","KeyList","import_jsx_runtime","require_jsx_runtime","PartnerOperationCardComponent","isOngoing","translation","buttonUrl","OperationPicture","pictureUrl","pictureSrcSet","compact","CompactOperationContent","OperationContent","linkUrl","buttonTarget","linkTarget","PartnerOperationCard","import_react","SlidingCarouselComponent","$carouselRef","canScrollRight","setCanScrollRight","canScrollLeft","setCanScrollLeft","contentIsScrollable","setContentAsScrollable","scrollable","children","$scrollOffset","SlidingCarousel","HighlightedTitle","props","PartnerOperationStatus","BASE_PARTNERS_OPERATION_FRAGMENT","PARTNERS_OPERATION_COLLECTION_QUERY","getPartnersOperationCollection","request","input","listForPartnersOperation","locale","response","SHARED_PARTNERS_OPERATION_COLLECTION","usePartnersOperationCollection","sharedQuery","id","params","getResponse","import_client","SausageItemWrapper","SausageItemText","SausageItem","element","SausageList","\"style\"","isHover","SausageWrapper","Sausage","hoverState","listSize","hover","items","key","processData","json","f","usePartnersOperation","language","client","space","accessToken","windowLens","DEFAULT_ASSETS","ASSETS","DISCOVER_DATA","BLOCKS","\"DOCUMENT\"","\"PARAGRAPH\"","\"HEADING_1\"","\"HEADING_2\"","\"HEADING_3\"","\"HEADING_4\"","\"HEADING_5\"","\"HEADING_6\"","\"OL_LIST\"","\"UL_LIST\"","\"LIST_ITEM\"","\"HR\"","\"QUOTE\"","\"EMBEDDED_ENTRY\"","\"EMBEDDED_ASSET\"","\"EMBEDDED_RESOURCE\"","\"TABLE\"","\"TABLE_ROW\"","\"TABLE_CELL\"","\"TABLE_HEADER_CELL\"","INLINES","\"ASSET_HYPERLINK\"","\"ENTRY_HYPERLINK\"","\"HYPERLINK\"","\"RESOURCE_HYPERLINK\"","MARKS","\"BOLD\"","\"ITALIC\"","\"UNDERLINE\"","\"CODE\"","\"SUPERSCRIPT\"","\"SUBSCRIPT\"","\"STRIKETHROUGH\"","TOP_LEVEL_BLOCKS","LIST_ITEM_BLOCKS","CONTAINERS","HEADINGS","isText","node","isEmptyParagraph","textNode","isValidDocument","document","MIN_NODES_FOR_STRIPPING","stripEmptyTrailingParagraphFromDocument","lastNode","typeMismatchError","property","typeName","path","minSizeError","min","maxSizeError","max","enumError","expected","unknownPropertyError","requiredPropertyError","ObjectAssertion","errors","value","optional","unknowns","properties","foundErrors","assert","item","index","obj","serializeError","error","step","VOID_CONTENT","NodeAssertion","contentRule","validateData","$","nodeTypes","item$","dataErrors","EntityLinkAssertion","_args","data","sys$","contentNodeTypes","linkType","HyperLinkAssertion","assertLink","appendKeyToValidElement","nodeListToReactComponents","nodes","nodeToReactComponent","options","nodeValue","renderText","preserveWhitespace","match","lines","jsxLines","line","renderMark","mark","renderNode","defaultNodeRenderers","defaultInline","defaultInlineResource","defaultMarkRenderers","text","documentToReactComponents","richTextDocument","processedDocument","RichText","blockAssetMap","blockEntryMap","asset","links","entry","richTextOptions","makeRenderMark","makeRenderNode","Hyperlink","EmbeddedAsset","renderEntry","Component","Partners","partners","Wrapper$3","TitleGroup","SectionTitle","List","PartnerOperationCardWithTracking","CenteredCTA","partnerOperationRef","partnerOperation","import_lib","getFilterByName","filters","filter","name","SEARCH_API_FILTERS","DEFAULT_SORTING","DEFAULT_OFFSET","DEFAULT_LIMIT","DEFAULT_SORT_LIMIT","useSearch","_sorting","isAuthenticated","state","setState","getInitialStateFromUrl","memoizedResults","memoizedMeta","memoizedCurrentFilters","requestResults","prevState","parseQualifiers","qualifierEntry","currentFilters","currentValue","option","tags","tag","\"quality_score__not\"","handleFetchingError","errorProps","isFetchingMore","isFetchingPrevious","handleFetchingSuccess","results","meta","handleFetchingPending","qualifiers","currentLanguage","requestMoreResults","url","next","requestPreviousResults","totalCount","previous","quantity","search","updateFilter","filterName","optionValue","setQueryParam","updateSorting","handleSearchUpdate","onSearchChange","event","onSearchReset","onSearchSubmit","newState","getInitialState","handleLoadMore","handleLoadPrevious","handleCloseError","sorting","parseQueryString","parameters","queryParams","normalizedParameters","offset","currentQueryParams","reset","parsed","stringified","character","sizerStyle","INPUT_PROPS_BLACKLIST","cleanInputProps","inputProps","field","copyStyles","styles","isIE","generateId","AutosizeInput","otherProps","inputWidth","setInputWidth","minWidth","inputId","setInputId","inputElementRef","placeHolderSizerRef","sizerRef","mountedRef","ref","handleInputRef","el","inputRef","copyInputStyles","inputStyles","updateInputWidth","newInputWidth","placeholder","placeholderIsMinWidth","sizerWidth","placeholderWidth","type","extraWidth","onAutosize","renderStyles","injectStyles","sizerValue","defaultValue","previousValue","finalInputStyle","inputStyle","inputClassName","Wrapper$2","SearchBar","autoFocus","SearchBarWrapper","SearchLabel","onChange","ResetButton","onReset","HorizontalScroller","lowerBound","setLowerBound","higherBound","setHigherBound","onScrollChange","scroller","HorizontalScrollerContainer","Track","isLowerBoundScrolling","isHigherBoundScrolling","clientWidth","scrollLeft","scrollWidth","DesktopFiltersBarContainer","FiltersListWrapper","FilterItem","FiltersList","FilterOptionItemWrapper","getHeightPropList","nbItems","getFlexPropItem","FilterOptionsListWrapper","MobileFiltersList","OnlyMobile","onUpdateFilter","FilterOptionsList","selectedValue","onClickItem","NB_MAX_FILTERS","DesktopFiltersList","isExpanded","setIsExpanded","expandedFilter","setExpandedFilter","OnlyDesktop","handleClickFilter","toggleExpanded","handleClickOption","nextExpandedFilter","target","FiltersBar","handleFilterUpdate","NoResults","noResultsImg","noResultsImgx2","noResultsImgx3","NoResultsContainer","ActionsList","SuggestionLink","Results","currentCurrency","rates","urls","Wrapper$1","resultsCount","canLoadPrevious","errorFetchingPrevious","isFetching","quantityFetched","canLoadMore","errorFetchingMore","SearchSection","renderApp","container","App","auth","onGoingPartnersOperations","partnersOperations","predicate","Wrapper"],"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-types/dist/esm/blocks.mjs","../../../../../../node_modules/@contentful/rich-text-types/dist/esm/inlines.mjs","../../../../../../node_modules/@contentful/rich-text-types/dist/esm/marks.mjs","../../../../../../node_modules/@contentful/rich-text-types/dist/esm/schemaConstraints.mjs","../../../../../../node_modules/@contentful/rich-text-types/dist/esm/emptyDocument.mjs","../../../../../../node_modules/@contentful/rich-text-types/dist/esm/helpers.mjs","../../../../../../node_modules/@contentful/rich-text-types/dist/esm/validator/errors.mjs","../../../../../../node_modules/@contentful/rich-text-types/dist/esm/validator/assert.mjs","../../../../../../node_modules/@contentful/rich-text-types/dist/esm/validator/node.mjs","../../../../../../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","../../../../../../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","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"],"ignoreList":[11,12,13,14,15,16,17,18,19,20,21],"mappings":"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"}