{"version":3,"file":"component---src-templates-article-page-article-page-tsx-1c29544c1839d2bde939.js","mappings":"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","sources":["webpack://portail-innovation/./node_modules/react-gtm-module/dist/Snippets.js","webpack://portail-innovation/./node_modules/react-gtm-module/dist/TagManager.js","webpack://portail-innovation/./node_modules/react-gtm-module/dist/index.js","webpack://portail-innovation/./node_modules/react-gtm-module/dist/utils/warn.js","webpack://portail-innovation/./src/components/home/articleCard/articleCard.module.scss","webpack://portail-innovation/./src/components/home/articleCard/articleCard.tsx","webpack://portail-innovation/./src/templates/article-page/cover/cover.module.scss","webpack://portail-innovation/./src/templates/article-page/cover/cover.tsx","webpack://portail-innovation/./src/templates/article-page/article-page.tsx","webpack://portail-innovation/./src/templates/article-page/article-page.module.scss","webpack://portail-innovation/./src/templates/article-page/read-also/read-also.tsx","webpack://portail-innovation/./src/templates/article-page/read-also/read-also.module.scss","webpack://portail-innovation/./src/components/newsletter/newsletter.module.scss","webpack://portail-innovation/./static/vectors/linkedin.svg","webpack://portail-innovation/./static/vectors/twitter.svg"],"sourcesContent":["'use strict';\n\nvar _warn = require('./utils/warn');\nvar _warn2 = _interopRequireDefault(_warn);\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\n// https://developers.google.com/tag-manager/quickstart\n\nvar Snippets = {\n  tags: function tags(_ref) {\n    var id = _ref.id,\n      events = _ref.events,\n      dataLayer = _ref.dataLayer,\n      dataLayerName = _ref.dataLayerName,\n      preview = _ref.preview,\n      auth = _ref.auth;\n    var gtm_auth = '&gtm_auth=' + auth;\n    var gtm_preview = '&gtm_preview=' + preview;\n    if (!id) (0, _warn2.default)('GTM Id is required');\n    var iframe = '\\n      <iframe src=\"https://www.googletagmanager.com/ns.html?id=' + id + gtm_auth + gtm_preview + '&gtm_cookies_win=x\"\\n        height=\"0\" width=\"0\" style=\"display:none;visibility:hidden\" id=\"tag-manager\"></iframe>';\n    var script = '\\n      (function(w,d,s,l,i){w[l]=w[l]||[];\\n        w[l].push({\\'gtm.start\\': new Date().getTime(),event:\\'gtm.js\\', ' + JSON.stringify(events).slice(1, -1) + '});\\n        var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!=\\'dataLayer\\'?\\'&l=\\'+l:\\'\\';\\n        j.async=true;j.src=\\'https://www.googletagmanager.com/gtm.js?id=\\'+i+dl+\\'' + gtm_auth + gtm_preview + '&gtm_cookies_win=x\\';\\n        f.parentNode.insertBefore(j,f);\\n      })(window,document,\\'script\\',\\'' + dataLayerName + '\\',\\'' + id + '\\');';\n    var dataLayerVar = this.dataLayer(dataLayer, dataLayerName);\n    return {\n      iframe: iframe,\n      script: script,\n      dataLayerVar: dataLayerVar\n    };\n  },\n  dataLayer: function dataLayer(_dataLayer, dataLayerName) {\n    return '\\n      window.' + dataLayerName + ' = window.' + dataLayerName + ' || [];\\n      window.' + dataLayerName + '.push(' + JSON.stringify(_dataLayer) + ')';\n  }\n};\nmodule.exports = Snippets;","'use strict';\n\nvar _Snippets = require('./Snippets');\nvar _Snippets2 = _interopRequireDefault(_Snippets);\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\nvar TagManager = {\n  dataScript: function dataScript(dataLayer) {\n    var script = document.createElement('script');\n    script.innerHTML = dataLayer;\n    return script;\n  },\n  gtm: function gtm(args) {\n    var snippets = _Snippets2.default.tags(args);\n    var noScript = function noScript() {\n      var noscript = document.createElement('noscript');\n      noscript.innerHTML = snippets.iframe;\n      return noscript;\n    };\n    var script = function script() {\n      var script = document.createElement('script');\n      script.innerHTML = snippets.script;\n      return script;\n    };\n    var dataScript = this.dataScript(snippets.dataLayerVar);\n    return {\n      noScript: noScript,\n      script: script,\n      dataScript: dataScript\n    };\n  },\n  initialize: function initialize(_ref) {\n    var gtmId = _ref.gtmId,\n      _ref$events = _ref.events,\n      events = _ref$events === undefined ? {} : _ref$events,\n      dataLayer = _ref.dataLayer,\n      _ref$dataLayerName = _ref.dataLayerName,\n      dataLayerName = _ref$dataLayerName === undefined ? 'dataLayer' : _ref$dataLayerName,\n      _ref$auth = _ref.auth,\n      auth = _ref$auth === undefined ? '' : _ref$auth,\n      _ref$preview = _ref.preview,\n      preview = _ref$preview === undefined ? '' : _ref$preview;\n    var gtm = this.gtm({\n      id: gtmId,\n      events: events,\n      dataLayer: dataLayer || undefined,\n      dataLayerName: dataLayerName,\n      auth: auth,\n      preview: preview\n    });\n    if (dataLayer) document.head.appendChild(gtm.dataScript);\n    document.head.insertBefore(gtm.script(), document.head.childNodes[0]);\n    document.body.insertBefore(gtm.noScript(), document.body.childNodes[0]);\n  },\n  dataLayer: function dataLayer(_ref2) {\n    var _dataLayer = _ref2.dataLayer,\n      _ref2$dataLayerName = _ref2.dataLayerName,\n      dataLayerName = _ref2$dataLayerName === undefined ? 'dataLayer' : _ref2$dataLayerName;\n    if (window[dataLayerName]) return window[dataLayerName].push(_dataLayer);\n    var snippets = _Snippets2.default.dataLayer(_dataLayer, dataLayerName);\n    var dataScript = this.dataScript(snippets);\n    document.head.insertBefore(dataScript, document.head.childNodes[0]);\n  }\n};\nmodule.exports = TagManager;","'use strict';\n\nvar _TagManager = require('./TagManager');\nvar _TagManager2 = _interopRequireDefault(_TagManager);\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\nmodule.exports = _TagManager2.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nvar warn = function warn(s) {\n  console.warn('[react-gtm]', s);\n};\nexports.default = warn;","// extracted by mini-css-extract-plugin\nexport var circle = \"articleCard-module--circle--64433\";\nexport var circleCross = \"articleCard-module--circleCross--8e6f2\";\nexport var dateContainerDouble = \"articleCard-module--dateContainerDouble--02778\";\nexport var news = \"articleCard-module--news--46e73\";\nexport var newsDate = \"articleCard-module--newsDate--3f761\";\nexport var newsDouble = \"articleCard-module--newsDouble--6fcec\";\nexport var newsImage = \"articleCard-module--newsImage--3b2b2\";\nexport var newsImageDouble = \"articleCard-module--newsImageDouble--be964\";\nexport var newsInfoContainer = \"articleCard-module--newsInfoContainer--62708\";\nexport var newsInfoContainerDouble = \"articleCard-module--newsInfoContainerDouble--2d3c4\";\nexport var newsInfos = \"articleCard-module--newsInfos--067cb\";\nexport var newsInfosDouble = \"articleCard-module--newsInfosDouble--9833c\";\nexport var newsTitle = \"articleCard-module--newsTitle--fa71f\";\nexport var newsTitleContainer = \"articleCard-module--newsTitleContainer--bc933\";\nexport var newsTitleDouble = \"articleCard-module--newsTitleDouble--4ce2b\";","import * as styles from \"./articleCard.module.scss\"\nimport React from \"react\";\nimport { navigate } from \"gatsby\";\nimport { ReactSVG } from \"react-svg\";\nimport addCross from \"../../../../static/vectors/addCross.svg\"\nimport moment from \"moment\";\n\ntype ArticleCardProps = {\n    image: string\n    title: string\n    type?: string\n    date?: string\n    infos: string\n    bgColor: string\n    textColor: string\n    iconColor: string\n    circleColor: string\n    link: string\n    fullscreedMode?: boolean\n    double?: boolean\n    padding?: string\n    style?: React.CSSProperties\n}\n\nconst ArticleCard: React.FC<ArticleCardProps> = (props: ArticleCardProps) => {\n    const handleClick = () => {\n        navigate(props.link)\n    }\n\n    return (\n        <a \n            href={props.link}\n            className={props.double ? styles.newsDouble : styles.news} \n            style={{\n                ...(props.padding ? {padding: props.padding} : {}),\n                ...(props.style || {}),\n                textDecoration: 'none'\n            }}\n        >\n            <div\n                className={props.double ? styles.newsImageDouble : styles.newsImage}\n                style={\n                    props.image\n                        ? {\n                            backgroundImage: `url(${props.image})`,\n                            backgroundSize: \"cover\",\n                            backgroundPosition: \"center\",\n                            borderRadius: !props.fullscreedMode\n                                ? props.double\n                                    ? \"0 28px 28px 0\"\n                                    : \"28px 28px 0 0\"\n                                : undefined,\n                        }\n                        : {\n                            backgroundColor: \"#FFFF74\",\n                            borderRadius: !props.fullscreedMode\n                                ? props.double\n                                    ? \"0 28px 28px 0\"\n                                    : \"28px 28px 0 0\"\n                                : undefined,\n                        }\n                }\n            />\n\n            <div className={props.double ? styles.newsInfoContainerDouble : styles.newsInfoContainer}\n                style={{\n                    backgroundColor: props.bgColor,\n                    borderRadius: !props.fullscreedMode\n                        ? props.double\n                            ? \"28px 0 0 28px \"\n                            : \"0 0 28px 28px\"\n                        : undefined,\n                }}>\n                <div>\n                    <div className={styles.newsTitleContainer}>\n                            <h3 className={props.double ? styles.newsTitleDouble : styles.newsTitle} style={{ color: props.textColor }}>\n                                {props.title}\n                            </h3>\n                        <div>\n                            <p className={styles.newsDate} style={{ color: props.textColor }}>\n                                {props.type}\n                            </p>\n                            <p className={styles.newsDate} style={{ color: props.textColor }}>\n                                {props.date ? `${moment(props.date).format(\"DD.MM.YYYY\")}` : null}\n                            </p>\n                        </div>\n                    </div>\n                    <p className={props.double ? styles.newsInfosDouble : styles.newsInfos} style={{ color: props.textColor }}>\n                        {props.infos}\n                    </p>\n                </div>\n                <div className={styles.circle} style={{ backgroundColor: props.circleColor }}>\n                    <ReactSVG src={addCross} beforeInjection={(svg) => {\n                        const paths = svg.querySelectorAll('path')\n                        paths.forEach(path => path.setAttribute('stroke', props.iconColor))\n                    }} />\n                </div>\n            </div>\n        </a>\n    )\n}\n\nexport default ArticleCard","// extracted by mini-css-extract-plugin\nexport var imageW100 = \"cover-module--imageW100--fc22d\";\nexport var partnerButton = \"cover-module--partnerButton--66edc\";\nexport var partnerLink = \"cover-module--partnerLink--51042\";\nexport var sectionContent = \"cover-module--sectionContent--bb04c\";\nexport var socialButton = \"cover-module--socialButton--7d293\";\nexport var tag = \"cover-module--tag--73488\";\nexport var v2Category = \"cover-module--v2Category--cfee2\";\nexport var v2Container = \"cover-module--v2Container--17026\";\nexport var v2DetailsContainer = \"cover-module--v2DetailsContainer--5b1c4\";\nexport var v2Image = \"cover-module--v2Image--5e752\";\nexport var v2ImageContainer = \"cover-module--v2ImageContainer--b5c69\";\nexport var v2ImageDescription = \"cover-module--v2ImageDescription--c4d07\";\nexport var v2PartnersContainer = \"cover-module--v2PartnersContainer--4d841\";\nexport var v2PartnersTitle = \"cover-module--v2PartnersTitle--ad4e6\";\nexport var v2PostedContainer = \"cover-module--v2PostedContainer--16af3\";\nexport var v2PostedDate = \"cover-module--v2PostedDate--aa8a7\";\nexport var v2PostedTitle = \"cover-module--v2PostedTitle--c0032\";\nexport var v2ShareContainer = \"cover-module--v2ShareContainer--c5ec1\";\nexport var v2ShareContent = \"cover-module--v2ShareContent--e30e1\";\nexport var v2ShareTitle = \"cover-module--v2ShareTitle--2c4df\";\nexport var v2Tags = \"cover-module--v2Tags--2af35\";\nexport var v2TagsContainer = \"cover-module--v2TagsContainer--9118f\";\nexport var v2TagsTitle = \"cover-module--v2TagsTitle--e2c24\";\nexport var v2ThumbnailContainer = \"cover-module--v2ThumbnailContainer--e4100\";\nexport var v2ThumbnailTextContainer = \"cover-module--v2ThumbnailTextContainer--c5e7c\";\nexport var v2Title = \"cover-module--v2Title--dc2bc\";\nexport var v2TitleContainer = \"cover-module--v2TitleContainer--8b799\";","import React from \"react\"\nimport { ReactSVG } from \"react-svg\"\n\nimport { graphql, Link } from \"gatsby\"\nimport { CoverArticleFieldsFragment } from \"../../../../graphql-types\"\n\nimport * as styles from \"./cover.module.scss\"\nimport { dateFormat } from \"../../../components/common/functions/functions\"\nimport { useLocale } from \"../../../context/locale-context\"\nimport useWindowWidth from \"../../../hooks/use-window-width\"\nimport linkedin from \"../../../../static/vectors/linkedin.svg\"\nimport twitter from \"../../../../static/vectors/twitter.svg\"\n\ntype CoverProps = {\n  data: any\n  fields: CoverArticleFieldsFragment\n  searchRequestSlug: string\n}\n\nconst Cover: React.FC<CoverProps> = ({ data, fields, searchRequestSlug }) => {\n  const { locale } = useLocale()\n  const isMobile = useWindowWidth() <= 825\n  const isOnBrowser = typeof window !== \"undefined\"\n\n  const displaySocialContent = (className?): JSX.Element => {\n    return (\n      <ul className={className}>\n        <a\n          className={styles.socialButton}\n          href={`https://twitter.com/intent/tweet?url=${isOnBrowser && window.location.href}&text=${data.title}`}\n          target=\"_blank\"\n          aria-label=\"Twitter\"\n          title=\"Share on Twitter\"\n        >\n          <li>\n            <ReactSVG src={twitter} />\n          </li>\n        </a>\n        <a\n          className={styles.socialButton}\n          href={`https://www.linkedin.com/sharing/share-offsite/?mini=true&url=${\n            isOnBrowser && window.location.href\n          }&summary=${data.title}`}\n          target=\"_blank\"\n          aria-label=\"LinkedIn\"\n          title=\"Share on LinkedIn\"\n        >\n          <li>\n            <ReactSVG src={linkedin} />\n          </li>\n        </a>\n      </ul>\n    )\n  }\n\n  const displayTags = (): JSX.Element => {\n    return (\n      <span className={styles.sectionContent}>\n        <strong>\n          {data.tags.map((tag, index) => {\n              return (\n                <div key={index} className={styles.tag}>\n                  <Link to={`/${searchRequestSlug}?query=${tag.label}`} target=\"_blank\">\n                    {tag.label}\n                  </Link>\n              </div>\n            )\n          })}\n        </strong>\n      </span>\n    )\n  }\n\n  const displayImg = (image, classes?): JSX.Element => {\n    if (!image) return\n    return image.format === \"svg\" ? (\n      <ReactSVG src={image.url} className={classes} />\n    ) : (\n      <img src={image.url} alt={image.alt || \"\"} className={classes} />\n    )\n  }\n\n  const displayPartners = (): JSX.Element => {\n    return (\n        <ul className={styles.sectionContent} style={data.partners.length > 4 ? {display: \"grid\", gridTemplateColumns: \"repeat(5, 1fr)\", gap: \"10px\"} : {display: \"flex\", flexWrap: \"wrap\", gap: \"10px\"}}>\n          {\n            data.partners.map((partner, index) => {\n              return (\n                <li key={index} className={styles.partnerButton}>\n                  <a href={partner.link} target=\"_blank\" className={styles.partnerLink} aria-label=\"Partner link\">\n                    {displayImg(partner.logo, styles.imageW100)}\n                  </a>\n                </li>\n              )\n            })\n          }\n        </ul>\n    )\n  }\n\n  return (\n    <section className={styles.v2Container}>\n        <div className={styles.v2TitleContainer}>\n          <p className={styles.v2Category}>{data.category.label}</p>\n          <h1 className={styles.v2Title}>{data.articleTitle}</h1>\n        </div>\n        <div className={styles.v2ThumbnailContainer}>\n          <div\n            className={styles.v2ImageContainer}\n            style={{ backgroundImage: `url(${data.image.url})` }}\n          >\n          </div>\n          <div className={styles.v2ThumbnailTextContainer}>\n            <p className={styles.v2ImageDescription}>{data.description}</p>\n          </div>\n        </div>\n        <div className={styles.v2DetailsContainer}>\n          <div className={styles.v2PartnersContainer}>\n            <p className={styles.v2PartnersTitle}>\n              {fields.partners}\n            </p>\n            {displayPartners()}\n          </div>\n          <div className={styles.v2PostedContainer}>\n            <p className={styles.v2PostedTitle}>\n              {fields.posted}\n            </p>\n            <p className={styles.v2PostedDate}>\n              {dateFormat(data.date, locale)}\n            </p>\n          </div>\n          <div className={styles.v2TagsContainer} style={{ maxWidth: isMobile ? \"100%\" : \"300px\" }}>\n            <p className={styles.v2TagsTitle}>\n              {fields.tags}\n            </p>\n            <div className={styles.v2Tags}>\n              {displayTags()}\n            </div>\n          </div>\n          <div className={styles.v2ShareContainer}>\n            <p className={styles.v2ShareTitle}>\n              {fields.shareOn}\n            </p>\n            <div>\n              {displaySocialContent(styles.v2ShareContent)}\n            </div>\n          </div>\n        </div>\n      </section>\n    )\n  }\n\nexport const fragment = graphql`\n  fragment CoverArticleFields on DatoCmsFieldsArticlePage {\n    shareOn\n    posted\n    wordsBy\n    tags\n    partners\n  }\n`\n\nexport default Cover\n","import React, { useEffect } from \"react\"\nimport TagManager from \"react-gtm-module\"\n\nimport { graphql } from \"gatsby\"\nimport { ArticleQuery, DatoCmsAllLocalesForDatoCmsArticleSlug, DatoCmsSlugsConfiguration } from \"../../../graphql-types\"\n\nimport * as config from \"../../../config.js\"\nimport * as styles from \"./article-page.module.scss\"\nimport Layout from \"../../components/layout/layout\"\nimport SEO from \"../../components/seo\"\nimport HrefLangLinks from \"../../components/layout/href-lang-links/href-lang-links\"\nimport Cover from \"./cover/cover\"\nimport RichDatoCmsContent from \"../../components/common/jsx/rich-dato-cms-content/rich-dato-cms-content\"\nimport ReadAlso from \"./read-also/read-also\"\nimport useSlugValue from \"../../hooks/use-slug-value\"\nimport * as stylesNewsletter from \"../../components/newsletter/newsletter.module.scss\"\n\ntype ArticlePageProps = {\n  data: ArticleQuery\n  pageContext: {\n    locale: string\n    defaultLocale: string\n    slugs: DatoCmsSlugsConfiguration\n    id: string\n    articlePageSlug: string\n    allSlugLocales: [DatoCmsAllLocalesForDatoCmsArticleSlug]\n  }\n}\n\nconst ArticlePage: React.FC<ArticlePageProps> = ({ data, pageContext }) => {\n  useEffect(() => {\n    if (config.google_tag_manager_id) {\n      TagManager.initialize({ gtmId: config.google_tag_manager_id })\n      TagManager.dataLayer({\n        dataLayer: {\n          environment: process.env.NODE_ENV,\n          language: pageContext.locale,\n          pageTemplate: \"articles\",\n          categorieArticle: article.category.label,\n          articleTag: article.tags.map(art => Object.values(art)).join(\", \"),\n        },\n      })\n    }\n  }, [])\n\n  const article = data.datoCmsArticle\n  const breadcrumb = [\n    {\n      link: data.datoCmsSlugsConfiguration.projectsNewsInsightsPageSlug,\n      title: data.datoCmsPniPage.headerTitle,\n    },\n    {\n      link: `${data.datoCmsSlugsConfiguration.projectsNewsInsightsPageSlug}/${article.slug}`,\n      title: article.articleTitle,\n    },\n  ]\n  const pniSlug = useSlugValue(pageContext.slugs._allProjectsNewsInsightsPageSlugLocales, pageContext.locale)\n\n  return (\n    <Layout\n      pageContext={pageContext}\n      allSlugLocales={pageContext.allSlugLocales}\n      currentRoute={pniSlug}\n      headerConfig={data.datoCmsHeader}\n      footerConfig={data.datoCmsFooter}\n    >\n      <Cover\n        data={article}\n        fields={data.datoCmsFieldsArticlePage}\n        searchRequestSlug={\n          pageContext.locale === pageContext.defaultLocale ? pniSlug : `${pageContext.locale}/${pniSlug}`\n        }\n      />\n      <section className={styles.container}>\n        <RichDatoCmsContent data={article.richContent} />\n      </section>\n\n      {article.readAlsoArticles.length > 0 && (\n        <ReadAlso\n          title={article.readAlsoTitle}\n          readAlsoArticles={article.readAlsoArticles}\n          locale={pageContext.locale}\n          projectsNewsInsightsPageSlug={data.datoCmsSlugsConfiguration.projectsNewsInsightsPageSlug}\n        />\n      )}\n      <section className={stylesNewsletter.container}  style={{ marginTop: \"64px\" }}>\n        <div className={stylesNewsletter.iframe} id=\"newsletter\">\n          {pageContext.locale === pageContext.defaultLocale ? (\n            <iframe\n              title=\"Landing Page\"\n              src=\"https://f.inno.keolis.com/f/l/?q=BSLqpzmY16RtCSEShgohLdWayZ7VLugElOIBd2us19BPYmcYHtWnKpZ_ghOHlwepKS8vEt2XF5fgJVpUTxggfGgh-u3ecnw4-iMJYaJL4PUWZ0fQ30PVivkfxCsaGeXFURFY1n9rGUovvmn4gjhnLYdWzv1jAMrtWxpTPOZmjilw2he_luP-qSjZukWgwL7LDF2AE08YfAU1ZfHF9nGi1cx52MZS_6zv-5JbE27ctJ5w4kkP_keKx-Cw5tdC2TvE\"\n            />\n          ) : (\n            <iframe\n              title=\"Landing Page\"\n              src=\"https://f.inno.keolis.com/f/l/?q=BSLqpzmY16RtCSEShgohLTb9NHftVXSchI5U5X7tFck1wSvnK6Zju4LY9embQyGwFPQdea4JaeTvJx99yXHXclaUhOvyWW_WeYDVvlSeXvuqssfSD2RlonLzJpgW8R20QGbQNQqp7rusHzAE9gDZIjcD53XmVjJPoxHfCcN2-4__pURFfpdMI14KVPoBL9VUVewRCg07AwrLLZ33NS3YaE_sOSd8bVgxSs-DXSo3dHT9AsYS-1K3UrI9nal2LqNc\"\n            />\n          )}\n        </div>\n      </section>\n    </Layout>\n  )\n}\n\nexport const Head: React.FC<ArticlePageProps> = ({ data, pageContext }) => {\n  const defaultDomain = \"https://innovation.keolis.com\"\n  return (\n    <>\n      <SEO\n        title={data.datoCmsArticle.title}\n        description={data.datoCmsArticle.metaDescription}\n        locale={pageContext.locale}\n      />\n      {typeof window !== \"undefined\" && (\n        <link\n          rel=\"canonical\"\n          href={data.datoCmsArticle.isCanonical ? data.datoCmsArticle.urlCanonical : window.location.href}\n        />\n      )}\n      {typeof window !== \"undefined\" && (\n        <>\n          {/*<link\n            rel=\"canonical\"\n            href={data.datoCmsPage.isCanonical ? data.datoCmsPage.urlCanonical : window.location.href}\n          />*/}\n          <HrefLangLinks\n            defaultDomain={window.location.origin}\n            defaultLocale={pageContext.defaultLocale}\n            slugs={[pageContext.slugs._allProjectsNewsInsightsPageSlugLocales, pageContext.allSlugLocales]}\n          />\n        </>\n      )}\n    </>\n  )\n}\n\nexport const pageQuery = graphql`\n  query Article($locale: String!, $id: String!) {\n    datoCmsGlobalConfiguration {\n      locales\n    }\n    datoCmsSlugsConfiguration(locale: $locale) {\n      projectsNewsInsightsPageSlug\n    }\n    datoCmsPniPage(locale: $locale) {\n      ...HeaderPNIFields\n    }\n    datoCmsHeader(locale: $locale) {\n      ...HeaderFields\n    }\n    datoCmsFooter(locale: $locale) {\n      ...FooterFields\n    }\n    datoCmsArticle(locale: $locale, id: { eq: $id }) {\n      ...ArticleFields\n    }\n    datoCmsArticleReceiveNewsletter(locale: $locale) {\n      ...ArticleReceiveNewsletterFields\n    }\n    datoCmsFieldsArticlePage(locale: $locale) {\n      ...CoverArticleFields\n    }\n  }\n`\n\nexport const fragment = graphql`\n  fragment ArticleFields on DatoCmsArticle {\n    __typename\n    id\n    title\n    metaDescription\n    slug\n    isCanonical\n    urlCanonical\n    articleTitle\n    description\n    author\n    preposition\n    authorPosition\n    date\n    thumbnailImage {\n      alt\n      format\n      url\n    }\n    thumbnailTitle\n    thumbnailBackgroundColor {\n      hex\n    }\n    thumbnailTextColor {\n      hex\n    }\n    thumbnailIconColor {\n      hex\n    }\n    thumbnailCircleColor {\n      hex\n    }\n    category {\n      label\n    }\n    tags {\n      label\n    }\n    partners {\n      link\n      logo {\n        alt\n        format\n        title\n        url\n      }\n    }\n    image {\n      alt\n      format\n      title\n      url\n    }\n    richContent {\n      ...EmbedSocialMediaV2Fields\n      ...ArticleStructuredTextFields\n      ...ArticleImageFields\n      ...ArticleQuoteFields\n      ...ArticleLargeKeyFigureFields\n      ...ArticleKeyFigureRowFields\n      ...ArticleKeyFigureRowV2Fields\n      ...ArticleImageTextOverlayFields\n      ...ArticleEmbedFields\n      ...ArticleSliderFields\n      ...ArticleVideoFields\n      ...ArticlePdfFields\n      ...FramedTextFields\n    }\n    readAlsoTitle\n    readAlsoArticles {\n      ...ReadAlsoFields\n    }\n  }\n`\n\nexport default ArticlePage\n","// extracted by mini-css-extract-plugin\nexport var container = \"article-page-module--container--38415\";","import React, { TouchEvent } from \"react\"\n\nimport { graphql } from \"gatsby\"\nimport { ReadAlsoFieldsFragment } from \"../../../../graphql-types\"\n\nimport * as styles from \"./read-also.module.scss\"\nimport useWindowWidth from \"../../../hooks/use-window-width\"\nimport ArticleCard from \"../../../components/home/articleCard/articleCard\"\nimport { truncateText } from \"../../../tools/functions\"\nimport BackArrowSvg from \"../../../../static/vectors/backArrowV2.svg\"\nimport ArrowSvg from \"../../../../static/vectors/arrowV2.svg\"\n\ntype ReadAlsoProps = {\n  title: string\n  readAlsoArticles: ReadAlsoFieldsFragment[]\n  locale: string\n  projectsNewsInsightsPageSlug: string\n}\n\nconst ReadAlso: React.FC<ReadAlsoProps> = ({\n  title,\n  readAlsoArticles: articles,\n  locale,\n  projectsNewsInsightsPageSlug,\n}) => {\n  const defaultLocale = \"fr\"\n  const isMobile = useWindowWidth() <= 825\n  const isTablet = useWindowWidth() <= 1300\n  const [currentIndex, setCurrentIndex] = React.useState(0)\n  const [touchStart, setTouchStart] = React.useState<number | null>(null)\n\n  const handlePrevClick = () => {\n    setCurrentIndex((prev) => Math.max(0, prev - 1))\n  }\n\n  const handleNextClick = () => {\n    setCurrentIndex((prev) => Math.min(articles.length - (isMobile ? 1 : isTablet ? 2 : 3), prev + 1))\n  }\n\n  const handleTouchStart = (e: TouchEvent) => {\n    setTouchStart(e.touches[0].clientX)\n  }\n\n  const handleTouchEnd = (e: TouchEvent) => {\n    if (touchStart === null) return\n\n    const touchEnd = e.changedTouches[0].clientX\n    const diff = touchStart - touchEnd\n\n    if (Math.abs(diff) > 50) { // minimum swipe distance\n      if (diff > 0) {\n        // Swipe left\n        handleNextClick()\n      } else {\n        // Swipe right\n        handlePrevClick()\n      }\n    }\n    setTouchStart(null)\n  }\n\n  const visibleArticles = isMobile \n    ? articles.slice(currentIndex, currentIndex + 1)\n    : isTablet\n      ? articles.slice(currentIndex, currentIndex + 2)\n      : articles.slice(currentIndex, currentIndex + 3)\n    \n  const canScrollLeft = currentIndex > 0\n  const canScrollRight = currentIndex < articles.length - (isMobile ? 1 : isTablet ? 2 : 3)\n\n  return (\n    <section className={styles.container}>\n      <h2 className={styles.sectionTitle}>\n        {title}\n      </h2>\n      <div \n        className={styles.articlesContainer}\n        onTouchStart={handleTouchStart}\n        onTouchEnd={handleTouchEnd}\n      >\n        <div className={styles.carouselButtons}>\n          <button \n            className={`${styles.prevButton} `}\n            aria-label=\"Previous slide\"\n            onClick={handlePrevClick}\n            disabled={!canScrollLeft}\n          >\n            <img src={BackArrowSvg} alt=\"Previous\" />\n          </button>\n          <button \n            className={`${styles.nextButton} `}\n            aria-label=\"Next slide\"\n            onClick={handleNextClick}\n            disabled={!canScrollRight}\n          >\n            <img src={ArrowSvg} alt=\"Next\" />\n          </button>\n        </div>\n        {visibleArticles.map((article, index) => (\n          <div key={article.slug || index} className={styles.articleCardContainer}>\n            <ArticleCard \n              image={article.thumbnailImage?.url ?? article.image?.url ?? \"\"}\n              title={article.thumbnailTitle?.trim() ? article.thumbnailTitle : article.articleTitle}\n              infos={truncateText(article.description, 210)} \n              bgColor={article.thumbnailBackgroundColor?.hex ?? \"#162B44\"}\n              textColor={article.thumbnailTextColor?.hex ?? \"#FFFFFF\"}\n              iconColor={article.thumbnailIconColor?.hex ?? \"#162B44\"}\n              circleColor={article.thumbnailCircleColor?.hex ?? \"#FFFF74\"}\n              link={locale === defaultLocale\n                ? `/${projectsNewsInsightsPageSlug}/${article.slug}`\n                : `/${locale}/${projectsNewsInsightsPageSlug}/${article.slug}`}\n              style={!isMobile && index % 2 === 1 ? {marginTop: \"96px\"} : {}}\n            />\n          </div>\n        ))}\n      </div>\n    </section>\n  )\n}\n\nexport const fragment = graphql`\n  fragment ReadAlsoFields on DatoCmsArticle {\n    articleTitle\n    author\n    preposition\n    authorPosition\n    description\n    date\n    slug\n    category {\n      label\n    }\n    image {\n      alt\n      format\n      title\n      url\n    }\n    thumbnailImage {\n      alt\n      format\n      url\n    }\n    thumbnailTitle\n    thumbnailBackgroundColor {\n      hex\n    }\n    thumbnailTextColor {\n      hex\n    }\n    thumbnailIconColor {\n      hex\n    }\n    thumbnailCircleColor {\n      hex\n    }\n  }\n`\n\nexport default ReadAlso\n","// extracted by mini-css-extract-plugin\nexport var articleCardContainer = \"read-also-module--articleCardContainer--3d2ac\";\nexport var articlesContainer = \"read-also-module--articlesContainer--5a6f4\";\nexport var carouselButtons = \"read-also-module--carouselButtons--9392b\";\nexport var container = \"read-also-module--container--f0645\";\nexport var nextButton = \"read-also-module--nextButton--e3740\";\nexport var prevButton = \"read-also-module--prevButton--d5961\";\nexport var sectionTitle = \"read-also-module--sectionTitle--8f45a\";","// extracted by mini-css-extract-plugin\nexport var arrow = \"newsletter-module--arrow--088a4\";\nexport var arrowContainer = \"newsletter-module--arrowContainer--f7928\";\nexport var circle = \"newsletter-module--circle--cb565\";\nexport var container = \"newsletter-module--container--5650b\";\nexport var content = \"newsletter-module--content--19d79\";\nexport var emailErrorMessage = \"newsletter-module--emailErrorMessage--0b697\";\nexport var emailInput = \"newsletter-module--emailInput--376c3\";\nexport var errorCircle = \"newsletter-module--errorCircle--da95e\";\nexport var errorMessage = \"newsletter-module--errorMessage--ac077\";\nexport var form = \"newsletter-module--form--975dd\";\nexport var formContainer = \"newsletter-module--formContainer--6a9a7\";\nexport var iframe = \"newsletter-module--iframe--10433\";\nexport var image = \"newsletter-module--image--78e87\";\nexport var label = \"newsletter-module--label--e702c\";\nexport var moveArrow = \"newsletter-module--moveArrow--1f9a8\";\nexport var submitButton = \"newsletter-module--submitButton--fedc4\";\nexport var subtitle = \"newsletter-module--subtitle--4c774\";\nexport var successMessage = \"newsletter-module--successMessage--ceb1e\";\nexport var title = \"newsletter-module--title--3a208\";","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHZpZXdCb3g9IjAgMCAxOCAxOCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTQuMzg4ODMgMTcuMzkwMkM0LjM4ODkxIDE3LjQ3MDEgNC4zNzMxMyAxNy41NDkyIDQuMzQyNCAxNy42MjNDNC4zMTE2NyAxNy42OTY4IDQuMjY2NTkgMTcuNzYzOCA0LjIwOTc1IDE3LjgyMDNDNC4xNTI5IDE3Ljg3NjggNC4wODU0IDE3LjkyMTUgNC4wMTExMSAxNy45NTIxQzMuOTM2ODIgMTcuOTgyNiAzLjg1NzIgMTcuOTk4MyAzLjc3NjggMTcuOTk4MkgxLjE3Mjk1QzEuMDkyNTYgMTcuOTk4MyAxLjAxMjkzIDE3Ljk4MjYgMC45Mzg2NDMgMTcuOTUyMUMwLjg2NDM1MyAxNy45MjE1IDAuNzk2ODUyIDE3Ljg3NjggMC43NDAwMDQgMTcuODIwM0MwLjY4MzE1NiAxNy43NjM4IDAuNjM4MDc4IDE3LjY5NjggMC42MDczNDkgMTcuNjIzQzAuNTc2NjIgMTcuNTQ5MiAwLjU2MDg0NCAxNy40NzAxIDAuNTYwOTI0IDE3LjM5MDJWNi41NDU3M0MwLjU2MDkyNCA2LjQ2NTkyIDAuNTc2NzU5IDYuMzg2ODkgMC42MDc1MjMgNi4zMTMxNkMwLjYzODI4OCA2LjIzOTQzIDAuNjgzMzc5IDYuMTcyNDUgMC43NDAyMTkgNi4xMTYwNEMwLjc5NzA1OSA2LjA1OTYzIDAuODY0NTMzIDYuMDE0OSAwLjkzODc4NCA1Ljk4NDQyQzEuMDEzMDMgNS45NTM5MyAxLjA5MjYxIDUuOTM4MjggMS4xNzI5NSA1LjkzODM2SDMuNzc2OEMzLjg1NzE0IDUuOTM4MjggMy45MzY3MiA1Ljk1MzkzIDQuMDEwOTcgNS45ODQ0MkM0LjA4NTIyIDYuMDE0OSA0LjE1MjY5IDYuMDU5NjMgNC4yMDk1MyA2LjExNjA0QzQuMjY2MzcgNi4xNzI0NSA0LjMxMTQ2IDYuMjM5NDMgNC4zNDIyMyA2LjMxMzE2QzQuMzcyOTkgNi4zODY4OSA0LjM4ODgzIDYuNDY1OTIgNC4zODg4MyA2LjU0NTczVjE3LjM5MDJaTTIuNDc0ODggNC45MTU3OUMxLjk4NTQ2IDQuOTE1OTEgMS41MDcgNC43NzE4NSAxLjEwMDAyIDQuNTAxODJDMC42OTMwMzQgNC4yMzE3OSAwLjM3NTgwNyAzLjg0NzkyIDAuMTg4NDYgMy4zOTg3N0MwLjAwMTExMzAzIDIuOTQ5NjMgLTAuMDQ3OTM2OSAyLjQ1NTM4IDAuMDQ3NTEzOCAxLjk3ODUzQzAuMTQyOTY0IDEuNTAxNjkgMC4zNzg2MjggMS4wNjM2OCAwLjcyNDY5NyAwLjcxOTkwM0MxLjA3MDc3IDAuMzc2MTIzIDEuNTExNjkgMC4xNDIwMTkgMS45OTE3MSAwLjA0NzE5OTVDMi40NzE3MyAtMC4wNDc2MTk4IDIuOTY5MjcgMC4wMDExMDU2NiAzLjQyMTQxIDAuMTg3MjEzQzMuODczNTUgMC4zNzMzMiA0LjI1OTk3IDAuNjg4NDQ5IDQuNTMxOCAxLjA5Mjc0QzQuODAzNjMgMS40OTcwMyA0Ljk0ODY1IDEuOTcyMzIgNC45NDg1MyAyLjQ1ODVDNC45NDgzNyAzLjExMDE3IDQuNjg3NyAzLjczNTEgNC4yMjM4NCA0LjE5NTg5QzMuNzU5OTcgNC42NTY2OSAzLjEzMDg4IDQuOTE1NjMgMi40NzQ4OCA0LjkxNTc5Wk0xNy45OTgyIDE3LjQzOTJDMTcuOTk4MiAxNy41ODc0IDE3LjkzODkgMTcuNzI5NiAxNy44MzM0IDE3LjgzNDVDMTcuNzI3OCAxNy45MzkzIDE3LjU4NDcgMTcuOTk4MiAxNy40MzU1IDE3Ljk5ODJIMTQuNjQxMkMxNC40OTE5IDE3Ljk5ODIgMTQuMzQ4OCAxNy45MzkzIDE0LjI0MzMgMTcuODM0NUMxNC4xMzc3IDE3LjcyOTYgMTQuMDc4NCAxNy41ODc0IDE0LjA3ODQgMTcuNDM5MlYxMi4zNTI5QzE0LjA3ODQgMTEuNTkzOSAxNC4zMDI5IDkuMDI5MDEgMTIuMDgyNCA5LjAyOTAxQzEwLjM2IDkuMDI5MDEgMTAuMDEzOSAxMC43ODU5IDkuOTQwODcgMTEuNTczOVYxNy40NDFDOS45NDA4NyAxNy41ODkyIDkuODgxNTggMTcuNzMxNCA5Ljc3NjA0IDE3LjgzNjNDOS42NzA1MSAxNy45NDExIDkuNTI3MzcgMTggOS4zNzgxMiAxOEg2LjY3NTcxQzYuNTI2NDYgMTggNi4zODMzMyAxNy45NDExIDYuMjc3NzkgMTcuODM2M0M2LjE3MjI1IDE3LjczMTQgNi4xMTI5NiAxNy41ODkyIDYuMTEyOTYgMTcuNDQxVjYuNDk2NzhDNi4xMTMxMyA2LjM0ODYyIDYuMTcyNDkgNi4yMDY1OSA2LjI3ODAxIDYuMTAxODhDNi4zODM1MiA1Ljk5NzE3IDYuNTI2NTcgNS45MzgzNiA2LjY3NTcxIDUuOTM4MzZIOS4zNzgxMkM5LjUyNzI2IDUuOTM4MzYgOS42NzAzMSA1Ljk5NzE3IDkuNzc1ODMgNi4xMDE4OEM5Ljg4MTM1IDYuMjA2NTkgOS45NDA3MSA2LjM0ODYyIDkuOTQwODcgNi40OTY3OFY3LjQ0MzE5QzEwLjU3OTEgNi40OTA3MyAxMS41MjgxIDUuNzU2NDUgMTMuNTQ5MSA1Ljc1NjQ1QzE4LjAyMzggNS43NTY0NSAxNy45OTgyIDkuOTA4OTUgMTcuOTk4MiAxMi4xOTFWMTcuNDM5MloiIGZpbGw9ImJsYWNrIi8+Cjwvc3ZnPgo=\"","export default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAyMCAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0yMCAxLjg5MzA1QzE5LjI2MzkgMi4yMTQyOSAxOC40NzQxIDIuNDMyMTYgMTcuNjQ0MiAyLjUyOTQyQzE4LjQ5MTUgMi4wMjk2OCAxOS4xNDAyIDEuMjM3MDIgMTkuNDQ3NiAwLjI5NTM5OEMxOC42NTI3IDAuNzU4MTkzIDE3Ljc3NTQgMS4wOTQyNCAxNi44NDA2IDEuMjc2NDFDMTYuMDkyIDAuNDg5ODk1IDE1LjAyNzEgMCAxMy44NDYxIDBDMTEuNTgwMyAwIDkuNzQzMTIgMS44MDkzNyA5Ljc0MzEyIDQuMDM5NjlDOS43NDMxMiA0LjM1NjAxIDkuNzc5MzYgNC42NjQ5NiA5Ljg0OTM2IDQuOTYwMzlDNi40NDAwMSA0Ljc5MTc0IDMuNDE2ODQgMy4xODMwMSAxLjM5MzQ3IDAuNzM4NDk1QzEuMDM5NzcgMS4zMzQyNSAwLjgzODU2NCAyLjAyODQyIDAuODM4NTY0IDIuNzY5NDNDMC44Mzg1NjQgNC4xNzE0IDEuNTYzNDMgNS40MDg0MSAyLjY2MzI0IDYuMTMyMTNDMS45OTA4NSA2LjEwOTk5IDEuMzU4NDcgNS45Mjc4MiAwLjgwNDgzOCA1LjYyNTAyVjUuNjc1NDlDMC44MDQ4MzggNy42MzI1NSAyLjIxOTU4IDkuMjY1OSA0LjA5NTQ2IDkuNjM3NjRDMy43NTE3NyA5LjcyODczIDMuMzg5MzUgOS43NzkxOSAzLjAxNDQyIDkuNzc5MTlDMi43NDk0OCA5Ljc3OTE5IDIuNDkzMjcgOS43NTMzNSAyLjI0MjA2IDkuNzA0MTFDMi43NjQ0NSAxMS4zMTA0IDQuMjc5MTkgMTIuNDc4NSA2LjA3Mzg3IDEyLjUxMDVDNC42NzAzNyAxMy41OTM3IDIuOTAwNjkgMTQuMjM3NCAwLjk3ODU2NCAxNC4yMzc0QzAuNjQ3Mzg3IDE0LjIzNzQgMC4zMjExNzcgMTQuMjE3NyAwIDE0LjE4MkMxLjgxNTkyIDE1LjMzMDQgMy45NzE3NyAxNiA2LjI4ODgzIDE2QzEzLjgzNjIgMTYgMTcuOTYxNyA5Ljg0MzIxIDE3Ljk2MTcgNC41MDM3NEwxNy45NDc5IDMuOTgwNjNDMTguNzU0IDMuNDE0MzkgMTkuNDUxMyAyLjcwMjk3IDIwIDEuODkzMDVaIiBmaWxsPSJibGFjayIvPgo8L3N2Zz4K\""],"names":["obj","_warn","_warn2","__esModule","default","Snippets","tags","_ref","id","events","dataLayer","dataLayerName","preview","gtm_auth","auth","gtm_preview","iframe","script","JSON","stringify","slice","dataLayerVar","this","_dataLayer","module","exports","_Snippets","_Snippets2","TagManager","dataScript","document","createElement","innerHTML","gtm","args","snippets","noScript","noscript","initialize","gtmId","_ref$events","undefined","_ref$dataLayerName","_ref$auth","_ref$preview","head","appendChild","insertBefore","childNodes","body","_ref2","_ref2$dataLayerName","window","push","_TagManager","_TagManager2","Object","defineProperty","value","s","console","warn","newsDate","props","React","href","link","className","double","style","assign","padding","textDecoration","image","backgroundImage","backgroundSize","backgroundPosition","borderRadius","fullscreedMode","backgroundColor","bgColor","color","textColor","title","styles","type","date","moment","format","infos","circleColor","ReactSVG","src","addCross","beforeInjection","svg","querySelectorAll","forEach","path","setAttribute","iconColor","sectionContent","socialButton","data","fields","searchRequestSlug","locale","useLocale","isMobile","useWindowWidth","isOnBrowser","category","label","articleTitle","url","description","partners","length","display","gridTemplateColumns","gap","flexWrap","map","partner","index","key","target","classes","alt","displayImg","logo","posted","dateFormat","maxWidth","tag","Link","to","shareOn","location","twitter","linkedin","Head","pageContext","SEO","datoCmsArticle","metaDescription","rel","isCanonical","urlCanonical","HrefLangLinks","defaultDomain","origin","defaultLocale","slugs","_allProjectsNewsInsightsPageSlugLocales","allSlugLocales","useEffect","config","google_tag_manager_id","environment","process","language","pageTemplate","categorieArticle","article","articleTag","art","values","join","pniSlug","datoCmsSlugsConfiguration","projectsNewsInsightsPageSlug","datoCmsPniPage","headerTitle","slug","useSlugValue","Layout","currentRoute","headerConfig","datoCmsHeader","footerConfig","datoCmsFooter","Cover","datoCmsFieldsArticlePage","RichDatoCmsContent","richContent","readAlsoArticles","ReadAlso","readAlsoTitle","stylesNewsletter","marginTop","articles","isTablet","_React$useState","currentIndex","setCurrentIndex","_React$useState2","touchStart","setTouchStart","handlePrevClick","prev","Math","max","handleNextClick","min","visibleArticles","canScrollLeft","canScrollRight","onTouchStart","e","touches","clientX","onTouchEnd","touchEnd","changedTouches","diff","abs","onClick","disabled","BackArrowSvg","ArrowSvg","_article$thumbnailIma","_article$thumbnailIma2","_article$image","_article$thumbnailTit","_article$thumbnailBac","_article$thumbnailBac2","_article$thumbnailTex","_article$thumbnailTex2","_article$thumbnailIco","_article$thumbnailIco2","_article$thumbnailCir","_article$thumbnailCir2","ArticleCard","thumbnailImage","thumbnailTitle","trim","truncateText","thumbnailBackgroundColor","hex","thumbnailTextColor","thumbnailIconColor","thumbnailCircleColor","container"],"sourceRoot":""}