{"version":3,"file":"modern.category.CUs_rvFs.js","names":["styled","CallToAction","COLORS","FONTS","SecondaryLink","Title1","Title2","rem","DEFAULT_GRID_BASIS","HEIGHT_SHIFT","SPACING","CategoryPageCover","props","theme","colors","accent","primary","background","CategoryPageHeader","CategoryPageTitleContainer","CategoryPageLogo","withSubtitle","CategoryPageTitle","CategoryPageSubtitle","CategoryPageContentWrapper","CategoryPageProjectListWrapper","CategoryPageRightAside","CategoryPageInfoCardTitle","CategoryPageInfoCard","PRIMARY_BLUE_500","CategoryPageInfoCardCTA","CategoryPageTaggedProjectList","CategoryPageTaggedProjectsFooter","CategoryPageTaggedProjectsHeader","CategoryPageTaggedProjectsNoResults","CategoryPageTaggedProjectsNoResultsText","CategoryPageTaggedProjectsResetFilters","CallToAction","S.CategoryPageTaggedProjectsHeader","S.CategoryPageTaggedProjectsNoResults","S.CategoryPageTaggedProjectsNoResultsText","S.CategoryPageTaggedProjectsResetFilters","S.CategoryPageTaggedProjectList","ProjectList","S.CategoryPageTaggedProjectsFooter","PropTypes","React","PropTypes","styled","COLORS","RoleTag","styles","S","getResourceUrl","t","Styles","jsx","_jsx","jsxs","_jsxs","Wrapper","CategoryPageInfoCard","OurPicks","Heading","heading","PartnerLogo","CallToAction","button","props","newColor","CategoryPartner","categoryName","color","description","link","logo","partnerName","logoUrl","children","category","partner","src","copy","M","light","dangerouslySetInnerHTML","__html","as","kind","href","propTypes","string","shape","value","isRequired","versions","full","height","url","width","Styles.CategoryPageInfoCard","S.heading.S","S.button.CallToAction","PropTypes","React","ReactDOM","PropTypes","YakThemeProvider","t","tc","COLORS","styles","S","getCurrentLanguage","getCurrentCurrency","getResourceUrl","config","categoryDescription","TaggedProjectList","CategoryPartner","AppStyle","jsx","_jsx","jsxs","_jsxs","set","category","window","CATEGORY_DATA","searchData","CATEGORY_PAGE_SEARCH_DATA","EMPTY_CATEGORY","CategoryPage","currentCurrency","currentLanguage","presaleCreationUrl","accent_color","accentColor","background","bg_color","bgColor","id","name","partner","slug","subtitle","title","currentUser","UFE","user","titleImage","is_authenticated","userIsAuthenticated","theme","colors","accent","primary","PRIMARY_BLUE_500","initialSearchSettings","filters","categories","statuses","ignoreQueryParams","sorting","get","children","Fragment","CategoryPageHeader","CategoryPageCover","CategoryPageTitleContainer","CategoryPageLogo","alt","src","withSubtitle","CategoryPageTitle","CategoryPageSubtitle","CategoryPageContentWrapper","CategoryPageProjectListWrapper","categoryName","categorySlug","initialSettings","CategoryPageRightAside","CategoryPageInfoCard","CategoryPageInfoCardTitle","strong","br","copy","M","light","dangerouslySetInnerHTML","__html","href","CategoryPageInfoCardCTA","partnerName","description","logo","link","url","color","propTypes","shape","string","versions","full","height","number","width","cta_description","oneOfType","isRequired","value","renderApp","currency","language","categoryAppContainer","document","getElementById","dataset","root","createRoot","render","addEventListener","error","console","config","AppStyle.CategoryPageHeader","AppStyle.CategoryPageCover","AppStyle.CategoryPageTitleContainer","AppStyle.CategoryPageLogo","AppStyle.CategoryPageTitle","AppStyle.CategoryPageSubtitle","AppStyle.CategoryPageContentWrapper","AppStyle.CategoryPageProjectListWrapper","TaggedProjectList","AppStyle.CategoryPageRightAside","AppStyle.CategoryPageInfoCard","AppStyle.CategoryPageInfoCardTitle","AppStyle.CategoryPageInfoCardCTA","PropTypes","require_react","__toESM","M","__yak_header","CallToAction$1","__yak_footer","YakThemeProvider","t","styled","__yak_h1","__yak_div","tc","__yak_aside","__yak_img","require_client","S","RoleTag","getCurrentCurrency","getCurrentLanguage","config_default","require_prop_types","SecondaryLink","Icon","LoadMoreButton","CallToAction$2","ProjectsList","Title2","Title1","DropdownFilter","SortingBar","getResourceUrl","rem","projectShape","withProjectResults","import_react","import_client","import_prop_types","categoryDescription","category","lang","DEFAULT_GRID_BASIS","SPACING","CategoryPageCover","\"style\"","props","CategoryPageHeader","CategoryPageTitleContainer","CategoryPageLogo","CategoryPageTitle","CategoryPageSubtitle","CategoryPageContentWrapper","CategoryPageProjectListWrapper","CategoryPageRightAside","CategoryPageInfoCardTitle","CategoryPageInfoCard","CategoryPageInfoCardCTA","CategoryPageTaggedProjectList","CategoryPageTaggedProjectsFooter","CategoryPageTaggedProjectsHeader","CategoryPageTaggedProjectsNoResults","CategoryPageTaggedProjectsNoResultsText","CategoryPageTaggedProjectsResetFilters","import_jsx_runtime","require_jsx_runtime","CURRENCY_RATES","NO_RESULTS_IMAGE","REMIND_ME_IMAGE","EMPTY_FILTERS","EMPTY_RESULTS","TaggedProjectList","noProjectWithInitialParams","projectCount","categoryName","updateSorting","filters","updateFilter","event","currentFilters","isFetching","categorySlug","userIsAuthenticated","results","moreProjectsToFetch","isFetchingMore","errorFetchingMore","loadMoreProjects","TaggedProjectList_default","Wrapper","OurPicks","Heading","PartnerLogo","CallToAction","CategoryPartner","logoUrl","logo","partnerName","description","link","color","EMPTY_CATEGORY","CategoryPage","accentColor","bgColor","currentUser","titleImage","title","theme","initialSearchSettings","id","searchData","background","name","subtitle","slug","partner","currentLanguage","presaleCreationUrl","renderApp","categoryAppContainer","currency","language","currentCurrency","error"],"sources":["../../src/modern/models/categories.js","../../src/modern/features/categories/styles.js","../../src/modern/features/categories/components/TaggedProjectList.js","../../src/modern/features/categories/components/CategoryPartner.js","../../src/modern/features/categories/index.js"],"sourcesContent":["const scoreMatch = (tag, lang, country) => {\n const langMatch = tag.languages && tag.languages.includes(lang)\n const countryMatch = tag.countries && tag.countries.includes(country)\n\n if (langMatch && countryMatch) {\n return 4\n }\n\n if (countryMatch && !tag.languages.length) {\n return 3\n }\n\n if (langMatch && !tag.countries.length) {\n return 2\n }\n\n if (!tag.countries.length && !tag.languages.length) {\n return 1\n }\n\n return 0\n}\n\nexport const categoryName = (category, lang) => {\n if (category && category.name && category.name[lang]) {\n return category && category.name && category.name[lang]\n }\n\n return category && category.slug\n}\n\nexport const categoryDescription = (category, lang) => {\n if (category && category.description && category.description[lang]) {\n return category && category.description && category.description[lang]\n }\n\n return ''\n}\n\n/**\n * Get a list of unique categories which are filtered by lang & country.\n * This function group all item with the same id (slug).\n * Then, it applies a matching score in function of params lang and country for each grouped item.\n * Finally, it takes the item with the best score.\n * @param {Object[]} list\n * @param {string} lang - selected language\n * @param {string} country - selected country\n * @returns {Object[]}\n * */\nexport const filterCategories = (list = [], lang = '', country = '') => {\n if (!lang || !country || list.length === 0) return []\n\n const matches = {}\n\n list.forEach(item => {\n const uniqueId = item.tag.slug\n const score = scoreMatch(item, lang, country)\n const previousMatch = matches[uniqueId]\n\n if (score && (!previousMatch || previousMatch.score < score)) {\n matches[uniqueId] = { score, item }\n }\n })\n\n return Object.keys(matches)\n .map(tagId => {\n const tagItem = Object.assign({}, matches[tagId].item)\n // Update absolute_url value with current country to avoid redirection\n tagItem.tag.absolute_url = `${tagItem.tag.absolute_url}?country=${country}`\n\n return tagItem\n })\n .sort((prevTag, nextTag) => {\n if (!prevTag.searchbar_position) return 1\n if (!nextTag.searchbar_position) return -1\n if (prevTag.searchbar_position > nextTag.searchbar_position) return 1\n if (prevTag.searchbar_position < nextTag.searchbar_position) return -1\n return 0\n })\n}\n","import { styled } from 'next-yak'\nimport { CallToAction, COLORS, FONTS, SecondaryLink, Title1, Title2 } from '@ulule/owl-kit-components'\n\nimport { rem } from '$utils/styles'\n\nconst DEFAULT_GRID_BASIS = 1146\nconst HEIGHT_SHIFT = 220\nconst SPACING = 16\n\n/**\n * HEADER LAYOUT\n */\n\nexport const CategoryPageCover = styled.div`\n background-color: ${(props) => props.theme.colors.accent || props.theme.colors.primary};\n border-bottom: 4px solid ${(props) => props.theme.colors.primary};\n min-height: ${() => rem(300)};\n\n @media screen and (min-width: 768px) {\n background-image: ${(props) => `url(${props.background})`};\n background-repeat: no-repeat;\n min-height: ${() => rem(350)};\n background-position: center;\n }\n`\n\nexport const CategoryPageHeader = styled.header``\n\nexport const CategoryPageTitleContainer = styled.div`\n margin: 12% auto ${() => `-${rem(68)}`};\n max-width: ${() => rem(DEFAULT_GRID_BASIS)};\n padding: 0 ${() => rem(SPACING)};\n position: relative;\n\n @media screen and (min-width: 768px) {\n margin: auto;\n }\n`\n\n/**\n * HEADER COMPONENTS\n */\n\nexport const CategoryPageLogo = styled.img`\n bottom: ${(props) => (props.withSubtitle ? rem(HEIGHT_SHIFT - SPACING) : rem(HEIGHT_SHIFT - SPACING * 4))};\n margin: 0;\n max-width: 90%;\n position: absolute;\n`\n\nexport const CategoryPageTitle = styled.h1`\n bottom: ${() => rem(HEIGHT_SHIFT - SPACING)};\n color: ${COLORS.PRIMARY_GREY_000};\n font-family: ${FONTS.SECONDARY_FONT};\n font-size: ${() => rem(48)};\n margin: 0;\n position: absolute;\n`\n\nexport const CategoryPageSubtitle = styled(Title1)`\n bottom: ${() => rem(HEIGHT_SHIFT - SPACING * 4)};\n color: ${COLORS.PRIMARY_GREY_000};\n position: absolute;\n`\n\n/**\n * BODY LAYOUT\n */\n\nexport const CategoryPageContentWrapper = styled.div`\n display: flex;\n flex-direction: column;\n margin: auto;\n margin-bottom: ${() => rem(52)};\n margin-top: ${() => `-${rem(120)}`};\n max-width: ${() => rem(DEFAULT_GRID_BASIS)};\n padding: 0 ${() => rem(SPACING)};\n\n @media (min-width: 768px) {\n flex-direction: row;\n }\n`\n\nexport const CategoryPageProjectListWrapper = styled.div`\n background-color: white;\n border-radius: 6px;\n margin-bottom: ${() => rem(22)};\n padding: ${() => rem(32)} ${() => rem(16)};\n width: 100%;\n\n @media screen and (min-width: 768px) {\n margin-bottom: 0;\n margin-right: ${() => rem(12)};\n }\n`\n\nexport const CategoryPageRightAside = styled.aside`\n margin: 0 auto;\n max-width: ${() => rem(360)};\n width: 100%;\n`\n\n/**\n * BODY COMPONENTS\n */\n\nexport const CategoryPageInfoCardTitle = styled(Title2)`\n font-size: ${() => rem(22)};\n line-height: ${() => rem(32)};\n margin-bottom: ${() => rem(22)};\n`\n\nexport const CategoryPageInfoCard = styled.div`\n background: #ffffff;\n border: 1px solid #e0e0e0;\n border-radius: 6px;\n padding: ${() => rem(20)} ${() => rem(14)};\n width: 100%;\n\n ${CategoryPageInfoCardTitle} {\n text-align: center;\n\n strong {\n color: ${(props) => props.theme.colors.primary || COLORS.PRIMARY_BLUE_500};\n text-transform: uppercase;\n }\n }\n\n @media (min-width: 768px) {\n padding: ${() => rem(23)};\n padding-bottom: ${() => rem(20)};\n }\n`\n\nexport const CategoryPageInfoCardCTA = styled(CallToAction)`\n background-color: ${(props) => props.theme.colors.primary || COLORS.PRIMARY_BLUE_500};\n margin-top: ${() => rem(20)};\n\n &:hover {\n background-color: ${(props) => props.theme.colors.primary || COLORS.PRIMARY_BLUE_500};\n opacity: 0.9;\n }\n`\n\nexport const CategoryPageTaggedProjectList = styled.div`\n /* HACK: TODO: If you are reading this and the 'ProjectList' component\n ** has been migrated to SC, please use it here instead of the generic ul/li.\n */\n ul {\n position: relative;\n display: flex;\n flex-flow: row wrap;\n justify-content: center;\n list-style: none;\n margin: ${() => `-${rem(SPACING * 0.5)}`};\n padding: 0;\n\n li {\n box-sizing: border-box;\n display: flex;\n flex: 0 1 auto;\n justify-content: center;\n margin: 0;\n padding: ${() => rem(SPACING / 2)};\n width: 33%;\n\n @media screen and (max-width: 1139px) {\n width: 50%;\n }\n\n @media screen and (max-width: 899px) {\n width: 100%;\n }\n\n @media screen and (max-width: 767px) {\n width: 50%;\n }\n\n @media screen and (max-width: 498px) {\n width: 100%;\n }\n }\n }\n`\n\nexport const CategoryPageTaggedProjectsFooter = styled.footer`\n margin-top: ${() => rem(32)};\n text-align: center;\n`\n\nexport const CategoryPageTaggedProjectsHeader = styled.header`\n display: flex;\n justify-content: space-between;\n margin-bottom: ${() => rem(32)};\n width: 100%;\n\n @media screen and (max-width: 767px) {\n justify-content: center;\n }\n\n /* Sorting bar title */\n & > div {\n display: block;\n }\n\n strong {\n color: ${(props) => props.theme.colors.primary};\n display: block;\n font-size: 26px;\n margin-bottom: ${() => rem(4)};\n margin-right: ${() => rem(10)};\n }\n\n /* Filter dropdown */\n & > span {\n display: none;\n max-height: ${() => rem(42)};\n\n @media screen and (min-width: 768px) {\n display: inline-flex;\n }\n }\n`\n\nexport const CategoryPageTaggedProjectsNoResults = styled.div`\n text-align: center;\n`\n\nexport const CategoryPageTaggedProjectsNoResultsText = styled.div`\n margin-top: ${() => rem(24)};\n`\n\nexport const CategoryPageTaggedProjectsResetFilters = styled(SecondaryLink)`\n align-items: center;\n display: inline-flex;\n height: ${() => rem(50)};\n\n > div:first-child {\n color: ${COLORS.PRIMARY_GREY_500};\n margin-right: ${() => rem(5)};\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 React from 'react'\nimport PropTypes from 'prop-types'\n\nimport { t, tc } from '@owl-nest/localize'\nimport { DropdownFilter, LoadMoreButton, Icon } from '@ulule/owl-kit-components'\n\nimport { projectShape } from '$utils/prop-types'\n\nimport ProjectList from '$components/ProjectsList/ProjectsList'\nimport SortingBar from '$features/discover/components/sortingbar'\nimport { withProjectResults, DEFAULT_LIMIT } from '$hocs/ProjectSearchResults'\n\nimport * as S from '../styles'\n\nconst CURRENCY_RATES = window.CURRENCIES && { ...window.CURRENCIES.RATES }\nconst { noResults: NO_RESULTS_IMAGE, remindMe: REMIND_ME_IMAGE } = { ...window.CATEGORY_PAGE_TAGGED_PROJECTS_ASSETS }\nconst EMPTY_FILTERS = {}\nconst EMPTY_RESULTS = []\n\nconst TaggedProjectList = ({\n categoryName,\n categorySlug,\n currentFilters = EMPTY_FILTERS,\n currentCurrency,\n currentLanguage,\n currentSorting = null,\n errorFetchingMore = false,\n filters = [],\n isFetching = true,\n isFetchingMore = false,\n loadMoreProjects,\n moreProjectsToFetch = false,\n noProjectWithInitialParams = false,\n projectCount = 0,\n results = EMPTY_RESULTS,\n sorting,\n updateFilter,\n updateSorting,\n userIsAuthenticated = false,\n}) => {\n return noProjectWithInitialParams ? null : (\n \n \n updateSorting({ value })}\n withBigTitle\n />\n {\n updateFilter(filters[0].name, event.target.value)\n }}\n options={filters[0].options}\n useDefault\n value={currentFilters.statuses[0]}\n />\n \n\n {!projectCount && !isFetching ? (\n // TODO: Eventually put in common with the channel page\n \n
\n \n {tc('[strong: No results]. We invite you to change your search criteria.', { strong: })}\n \n updateFilter('statuses', 'all')}>\n \n {t('Reinitialize filters')}\n \n \n ) : (\n \n \n \n )}\n\n {moreProjectsToFetch && (\n \n \n \n )}\n \n )\n}\n\nTaggedProjectList.propTypes = {\n categoryName: PropTypes.string.isRequired,\n currentFilters: PropTypes.objectOf(PropTypes.array),\n currentCurrency: PropTypes.string.isRequired,\n currentLanguage: PropTypes.string.isRequired,\n currentSorting: PropTypes.string,\n errorFetchingMore: PropTypes.bool,\n filters: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n name: PropTypes.string.isRequired,\n options: PropTypes.arrayOf(PropTypes.shape({})),\n position: PropTypes.number,\n }),\n ).isRequired,\n isFetching: PropTypes.bool,\n isFetchingMore: PropTypes.bool,\n loadMoreProjects: PropTypes.func.isRequired,\n moreProjectsToFetch: PropTypes.bool,\n noProjectWithInitialParams: PropTypes.bool,\n projectCount: PropTypes.number,\n results: PropTypes.arrayOf(projectShape),\n sorting: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n }),\n ).isRequired,\n updateFilter: PropTypes.func.isRequired,\n updateSorting: PropTypes.func.isRequired,\n userIsAuthenticated: PropTypes.bool,\n}\n\nexport default withProjectResults(TaggedProjectList)\n","import * as React from 'react'\nimport * as PropTypes from 'prop-types'\nimport { styled } from 'next-yak'\n\nimport { COLORS, RoleTag, styles as S } from '@ulule/owl-kit-components/next'\nimport { getResourceUrl } from '$models/resources'\n\nimport { t } from '@owl-nest/localize'\n\nimport * as Styles from '../styles'\n\nconst Wrapper = styled(Styles.CategoryPageInfoCard)`\n margin: 16px 0;\n`\n\nconst OurPicks = styled(RoleTag)`\n display: block;\n margin: 0 auto 20px auto;\n`\n\nconst Heading = styled(S.heading.S)`\n text-align: center;\n`\n\nconst PartnerLogo = styled.img`\n max-width: 50%;\n margin: 20px auto;\n`\n\nconst CallToAction = styled(S.button.CallToAction)`\n margin: 20px 0 10px 0;\n color: ${(props) => props.newColor};\n border-color: ${(props) => props.newColor};\n\n &:hover {\n background-color: ${(props) => props.newColor};\n color: ${COLORS.PRIMARY_GREY_000};\n border-color: ${(props) => props.newColor};\n }\n`\n\nconst CategoryPartner = ({ categoryName, color, description, link, logo, partnerName }) => {\n const logoUrl = getResourceUrl(logo)\n return (\n \n {t('Right now')}\n \n {t('Launch your %(category)s project with the support of %(partner)s', {\n category: categoryName,\n partner: partnerName,\n })}\n \n \n \n \n {t('Learn more')}\n \n \n )\n}\n\nCategoryPartner.propTypes = {\n categoryName: PropTypes.string,\n description: PropTypes.string,\n logo: PropTypes.shape({\n value: PropTypes.string.isRequired,\n versions: PropTypes.shape({\n full: PropTypes.shape({\n height: PropTypes.string,\n url: PropTypes.string.isRequired,\n width: PropTypes.string,\n }).isRequired,\n }),\n }),\n link: PropTypes.string,\n color: PropTypes.string,\n partnerName: PropTypes.string,\n}\n\nexport default CategoryPartner\n","import * as React from 'react'\nimport * as ReactDOM from 'react-dom/client'\nimport PropTypes from 'prop-types'\nimport { YakThemeProvider } from 'next-yak'\n\nimport { t, tc } from '@owl-nest/localize'\nimport { COLORS, styles as S } from '@ulule/owl-kit-components/next'\n\nimport { getCurrentLanguage } from '$features/init/language'\nimport { getCurrentCurrency } from '$features/init/currency'\nimport { getResourceUrl } from '$models/resources'\nimport config from '$utils/config'\nimport { categoryDescription } from '$models/categories'\n\nimport TaggedProjectList from './components/TaggedProjectList'\nimport CategoryPartner from './components/CategoryPartner'\n\nimport * as AppStyle from './styles'\n\nconfig.set({\n category: { ...window.CATEGORY_DATA },\n searchData: { ...window.CATEGORY_PAGE_SEARCH_DATA },\n})\n\nconst EMPTY_CATEGORY = {}\n\nconst CategoryPage = ({ category = EMPTY_CATEGORY, currentCurrency, currentLanguage, presaleCreationUrl }) => {\n const {\n accent_color: accentColor,\n background,\n bg_color: bgColor,\n id,\n name,\n partner,\n slug,\n subtitle,\n title,\n } = category\n const currentUser = window.UFE && window.UFE.user\n const titleImage = getResourceUrl(title)\n const { is_authenticated: userIsAuthenticated } = currentUser\n\n const theme = {\n colors: {\n accent: accentColor,\n primary: bgColor || COLORS.PRIMARY_BLUE_500,\n },\n }\n\n const initialSearchSettings = {\n filters: {\n categories: [id],\n statuses: ['all'],\n },\n ignoreQueryParams: false,\n sorting: 'popular',\n }\n const searchData = config.get('searchData')\n\n return (\n \n \n \n \n \n {titleImage ? (\n \n ) : (\n {name}\n )}\n {subtitle && {subtitle}}\n \n \n\n \n \n \n \n\n \n \n \n {tc('You have a[br][strong: %(category)s] project?', {\n strong: ,\n br:
,\n category: name,\n })}\n \n {!partner && (\n \n )}\n \n {t('Launch my project')}\n \n \n {partner && (\n \n )}\n \n \n \n \n )\n}\n\nCategoryPage.propTypes = {\n category: PropTypes.shape({\n accent_color: PropTypes.string,\n background: PropTypes.shape({\n versions: PropTypes.shape({\n full: PropTypes.shape({\n height: PropTypes.number,\n url: PropTypes.string,\n width: PropTypes.number,\n }),\n }),\n }),\n bg_color: PropTypes.string,\n cta_description: PropTypes.string,\n description: PropTypes.string,\n id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n name: PropTypes.string.isRequired,\n title: PropTypes.shape({\n value: PropTypes.string.isRequired,\n versions: PropTypes.shape({\n full: PropTypes.shape({\n height: PropTypes.string,\n url: PropTypes.string.isRequired,\n width: PropTypes.string,\n }).isRequired,\n }),\n }),\n }),\n currentCurrency: PropTypes.string.isRequired,\n currentLanguage: PropTypes.string.isRequired,\n presaleCreationUrl: PropTypes.string.isRequired,\n}\n\nconst renderApp = (currency, language) => {\n const categoryAppContainer = document.getElementById('react-category-app')\n const { presaleCreationUrl } = categoryAppContainer && categoryAppContainer.dataset\n\n const root = ReactDOM.createRoot(categoryAppContainer)\n root.render(\n ,\n )\n}\n\n// Initialize application after fetching geolocation in init.es6.js\n// TODO: @ludovic: init a React application with portals to\n// render faster elements that not required location\nwindow.addEventListener('js:location:loaded', async () => {\n const currentLanguage = getCurrentLanguage()\n\n let currentCurrency\n try {\n currentCurrency = await getCurrentCurrency()\n } catch (error) {\n console.error(error)\n }\n\n renderApp(currentCurrency, currentLanguage)\n})\n"],"mappings":"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"}