{"version":3,"sources":["reducers/auth/index.js","reduxStore.js","img/fede-world.png","Components/Header/index.js","img/flag-en.png","img/flag-fr.png","img/spinner-fede.gif","img/interculturalite.jpg","Components/Common/index.js","provider/authProvider.js","services/GraphService.js","Components/Home/index.js","routes/index.js","Components/Main/index.js","img/logo-partners.png","Components/Footer/index.js","Components/Login/index.js","img/home.png","i18n.js","App.js","serviceWorker.js","index.js"],"names":["initialState","aadResponse","combineReducers","aadLoginReducer","state","action","type","payload","middleware","routerMiddleware","createBrowserHistory","thunkMiddleware","store","createStore","auth","applyMiddleware","lngs","en","nativeName","flag","fr","Header","authenticationState","login","logout","account","useTranslation","t","i18n","Navbar","collapseOnSelect","expand","bg","variant","className","Brand","href","target","rel","Image","src","fedeWorld","title","fluid","style","height","Toggle","Collapse","id","Nav","NavDropdown","Object","keys","map","lng","Item","fontWeight","resolvedLanguage","onClick","changeLanguage","margin","AuthenticationState","Authenticated","name","Link","icon","faSignInAlt","faPhoneAlt","faFacebookF","faTwitter","faLinkedinIn","SpinnerFede","spinner","width","alt","Subheader","params","Container","backgroundImage","toUpperCase","BreadcrumbFede","crumbs","Breadcrumb","key","path","length","active","Error404","Helmet","titleTemplate","ModalUpdateFede","props","Modal","size","centered","closeButton","Title","Body","Footer","Button","onHide","ModalFede","SidebarRight","sourceType","screenName","options","config","authority","clientId","redirectUri","window","location","origin","validateAuthority","postLogoutRedirectUri","system","cache","cacheLocation","storeAuthStateInCookie","authenticationParameters","scopes","replace","hash","prompt","extraScopesToConsent","extraQueryParameters","domain_hint","loginHint","loginType","LoginType","Redirect","tokenRefreshUri","authProvider","MsalAuthProvider","pedagogieSiteId","getAuthenticatedClient","a","version","getAccessToken","token","client","Client","init","defaultVersion","debugLogging","done","accessToken","getSharepointList","siteId","listId","api","get","response","value","console","error","listEducationSchools","Home","Component","useState","isLoading","setIsLoading","schools","setSchools","categories","setCategories","modalShow","setModalShow","useEffect","educationSchools","res","grouped","reduce","result","currentValue","fields","Category","push","fetchData","marginTop","marginBottom","Row","Col","lg","md","Fragment","show","fontSize","color","backgroundColor","padding","Accordion","cat","Card","as","eventKey","trim","item","Docurl","Main","routes","exact","render","filter","match","includes","rest","param","partners","activeKey","disabled","Date","getFullYear","Login","setValidated","InProgress","event","currentTarget","use","LanguageDetector","initReactI18next","fallbackLng","debug","interpolation","escapeValue","resources","translation","header","language","apps","footer","rules","legal","home","space","update","schoolupdate","index","App","provider","reduxStore","forceLogin","accountInfo","Unauthenticated","Boolean","hostname","ReactDOM","document","getElementById","navigator","serviceWorker","ready","then","registration","unregister","catch","message"],"mappings":"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","file":"static/js/main.4cb32610.chunk.js","sourcesContent":["import { combineReducers } from 'redux';\n\nconst initialState = {\n    aadResponse: null,\n  };\n  \nconst aadLoginReducer = (state = initialState, action) => {\n    switch (action.type) {\n        case 'AAD_LOGIN_SUCCESS':\n            return { ...state, aadResponse: action.payload };\n        case 'AAD_LOGOUT_SUCCESS':\n            return { ...state, aadResponse: null };\n        default:\n        return state;\n    }\n};\n\n\nexport default combineReducers({ aadLoginReducer });","import { createStore, combineReducers, applyMiddleware } from 'redux'\nimport thunkMiddleware  from 'redux-thunk';\nimport { createLogger } from 'redux-logger';\nimport { routerMiddleware } from 'connected-react-router';\nimport auth from './reducers/auth'\nimport { createBrowserHistory } from \"history\";\n\nlet middleware = [ \n    routerMiddleware(createBrowserHistory()), \n    thunkMiddleware, \n]\n\nif (process.env.NODE_ENV === 'development') {\n    middleware = [...middleware, createLogger()];\n}\n\nconst store = createStore(\n    combineReducers({\n        //router: connectRouter(history),\n        auth,\n        /* Replace book with the name of the resource type */\n    }),\n    applyMiddleware(...middleware)\n);\n\nexport default store;","export default __webpack_public_path__ + \"static/media/fede-world.926578ab.png\";","import React from \"react\";\nimport { Navbar, Nav, NavDropdown, Image } from 'react-bootstrap';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\nimport { faSignInAlt, faPhoneAlt,  } from '@fortawesome/free-solid-svg-icons'\nimport { faFacebookF, faTwitter, faLinkedinIn } from \"@fortawesome/free-brands-svg-icons\"\nimport { AuthenticationState } from 'react-aad-msal';\nimport fedeWorld from '../../img/fede-world.png';\nimport FrenchFlag from '../../img/flag-fr.png';\nimport EnglishFlag from '../../img/flag-en.png';\nimport { useTranslation } from 'react-i18next';\n\nconst lngs = {\n    en: { nativeName: 'English', flag: EnglishFlag },\n    fr: { nativeName: 'French', flag: FrenchFlag }\n};\n\nfunction Header({ authenticationState, login, logout, account }) {\n\n    const { t, i18n } = useTranslation();\n\n    return (\n    <Navbar collapseOnSelect expand=\"lg\" bg=\"dark\" variant=\"dark\">\n        <div className=\"container\">\n            <Navbar.Brand href=\"https://fede.education\" target=\"_blank\" rel=\"noopener noreferrer\">\n                <Image src={fedeWorld} title=\"Logo partners\" fluid style={{height: \"40px\"}} />\n            </Navbar.Brand>\n            <Navbar.Toggle aria-controls=\"responsive-navbar-nav\" />\n            <Navbar.Collapse id=\"responsive-navbar-nav\">\n            <Nav className=\"mr-auto\">\n                <NavDropdown title={t('header.language')} id=\"collasible-nav-dropdown\">\n                    {Object.keys(lngs).map((lng) => (\n                        <NavDropdown.Item key={lng} style={{ fontWeight: i18n.resolvedLanguage === lng ? 'bold' : 'normal' }} type=\"submit\" onClick={() => i18n.changeLanguage(lng)}>\n                        {/*console.log(lngs[lng])*/}\n                        <Image src={lngs[lng].flag} title=\"country flag\" fluid style={{height: \"14px\", margin: \"4px\"}} />\n                        {lngs[lng].nativeName}\n                        </NavDropdown.Item>\n                    ))}\n                </NavDropdown>\n                {/*<NavDropdown title=\"Français\" id=\"collasible-nav-dropdown\">\n                    <NavDropdown.Item href=\"#\"><img src={frFlag} alt=\"Français\" /> Français</NavDropdown.Item>\n                    <NavDropdown.Item href=\"#\"><img src={enFlag} alt=\"English\" /> English</NavDropdown.Item>\n    </NavDropdown>*/}\n            </Nav>\n\n            <Nav>\n                {\n                    authenticationState === AuthenticationState.Authenticated ? \n                    (\n                        <NavDropdown title={account.account.name} id=\"collasible-nav-dropdown\">\n                            {/*<NavDropdown.Item href=\"https://account.activedirectory.windowsazure.com/\">{t('header.apps')}</NavDropdown.Item>\n                            <NavDropdown.Divider />*/}\n                            <NavDropdown.Item href=\"#\" onClick={logout}>{t('header.logout')}</NavDropdown.Item>\n                        </NavDropdown>\n\n                    ) : (\n                        <Nav.Link href=\"#\" onClick={login}>\n                            <span>\n                                <FontAwesomeIcon icon={faSignInAlt} /> {t('header.login')}\n                            </span>\n                        </Nav.Link>\n                    )\n                }\n                <Nav.Link \n                    href=\"https://www.fede.education/contact/\" \n                    target=\"_blank\"\n                >\n                    <span>\n                        <FontAwesomeIcon icon={faPhoneAlt} /> Contact\n                    </span>\n                </Nav.Link>\n                <Nav.Link \n                    href=\"https://www.facebook.com/fede.education\" \n                    target=\"_blank\"\n                >\n                    <FontAwesomeIcon icon={faFacebookF} />\n                </Nav.Link>\n                <Nav.Link \n                    href=\"https://twitter.com/FEDE_OING\" \n                    target=\"_blank\"\n                >\n                   <FontAwesomeIcon icon={faTwitter} />\n                </Nav.Link>\n                <Nav.Link \n                    href=\"https://www.linkedin.com/school/federation-for-education-in-europe/\" \n                    target=\"_blank\"\n                >\n                   <FontAwesomeIcon icon={faLinkedinIn} />\n                </Nav.Link>\n            </Nav>\n            </Navbar.Collapse>\n        </div>\n        </Navbar>\n    );\n}\n  \nexport default Header;","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAMCAIAAADgcHrrAAABVUlEQVR4AZ1SA6xdQRCd2EntNn5xrVgvqG3b7rdt27Zt27Ztm/NPvlXezOyOcfYSS0gw88gIHzpkTqSyQK6unbxvHwjCshEBmZr+Y2fPTvv40IBzAQuFXFaG5O/fk4lkQba2tbx3LwjCguXLyxD+JMoPH/LEhL9/PhFpi7yPb376duDOHZ6eTkxs2btXTksrqWXXLhAEqMFSNl2nT3NgIDMSbYkeEbqj2DpfSUn/QlpRevO6ivM5t4jxjY1xRcU6at66FbTR3hAWlu3qSkw0S1T/1xRN5EX032n/N+QyJNgYe2N7YAAkFiABNswMnIAWMFuBhEjmw4fwdb51D7C64gWhFNElysrqxwtWX7kSf+3O9fOqKAYSEXFO2LYNBGHBcvOmQXV1Y7qGhotA8PXiM8KfUnrsmOlrpe3bn6H7Ar1/b+K3dSsIwrIRAWpqdp42NkpHjswBv6pHgBoqr2IAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAMCAIAAADgcHrrAAAAXElEQVR4Ad3NtRGAUAAE0UWqphUa/Jri7m4pby7dOR9CSCGBlF5dB+w4Dls+pP0ySHmn7rOkbySvmeXtNTtl3/0+SyDlNdPPhxjSfjE9a+19Y1ZvST8ApdR9pqAB3d0pO7qOCbAAAAAASUVORK5CYII=\"","export default __webpack_public_path__ + \"static/media/spinner-fede.fdbcbf57.gif\";","export default __webpack_public_path__ + \"static/media/interculturalite.cd1bad85.jpg\";","import React, { useState } from 'react';\nimport spinner from '../../img/spinner-fede.gif'\nimport { Container, Breadcrumb, Modal, Button, Form } from 'react-bootstrap';\nimport { TwitterTimelineEmbed } from 'react-twitter-embed';\nimport schoolLogo from '../../img/generic-school-logo.png';\nimport interLogo from '../../img/interculturalite.jpg';\n//import bannerPeps from '../../img/banner-peps_fr.gif';\nimport { Helmet } from 'react-helmet'\n\nconst SpinnerFede = () => {\n    return (\n        <div id=\"spinner\">\n            <img src={spinner} width=\"100\" alt=\"Spinner\" /><span className=\"sr-only\">Loading...</span>\n        </div>\n    )\n}\n\nconst Subheader = ({ params }) => {\n    \n    return (\n        <Container fluid id={ params.bg } className=\"subheader d-none d-sm-block\" style={{ backgroundImage: \"url('/img/bg-login.jpg')\" }}>\n            <h1 className=\"text-center\">{ params.title.toUpperCase() }</h1>\n        </Container>\n    )\n}\n\nconst BreadcrumbFede = ({ crumbs }) => {\n\n    return (\n    <Container fluid id=\"breadcrumb\" className=\"shadow-sm p-3 mb-5 bg-white rounded d-none d-sm-block\">\n        <Container>\n            <Breadcrumb>\n                <Breadcrumb.Item href=\"https://www.fede.education/\">FEDEration for European Education</Breadcrumb.Item>\n                {crumbs.map(({ name, path }, key) =>\n                    key + 1 === crumbs.length ? (\n                        <Breadcrumb.Item key={key} active>\n                            {name}\n                        </Breadcrumb.Item>\n                    ) : (\n                        <Breadcrumb.Item key={key} href={path}>\n                            {name}\n                        </Breadcrumb.Item>\n                    )\n                )}\n            </Breadcrumb>\n        </Container>\n    </Container>\n    )\n\n}\n\nconst Error404 = () => {\n    return (\n    <Container>\n        <Helmet\n            titleTemplate=\"%s | Intranet FEDE\"\n        >\n            <title>404</title>\n        </Helmet>\n        <div className=\"heading_font text-center align-middle error_page\">\n            <div className=\"error_404\">404</div>\n            <div className=\"h2\">The page you are looking for does not exist.</div>\n        </div>\n    </Container>\n    )\n\n}\n\nconst ModalUpdateFede = (props) => {\n    return (\n      <Modal\n        {...props}\n        size=\"lg\"\n        aria-labelledby=\"contained-modal-title-vcenter\"\n        centered\n      >\n        <Modal.Header closeButton>\n          <Modal.Title id=\"contained-modal-title-vcenter\" className=\"text-danger\">\n            12/03/2025 : Nouveautés / Latest News\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body className=\"allModal\">\n\n        <span>\n\n          Dans le cadre de la rentrée 2025-2026, les équipes de la FEDE vous présentent les nouveautés pédagogiques ainsi que les principes et règles applicables concernant le recours à une IA générative dans le cadre des examens FEDE.\n          <br/><br/>\n          \n          La première session d’examens concernée par ces évolutions est la session de janvier 2026.\n          <br/><br/>\n\n          <span className=\"secondTitle\">Nouveautés pédagogiques</span>\n            <li>Nouveaux diplômes</li>\n            <li>Mise à jour de référentiels - Unités d’Enseignement D (UE D) et A (UE A)</li>\n            <li>Diplômes retirés du catalogue</li>\n            <li>Formation de formateur</li>\n          <br/>\n\n          <span className=\"secondTitle\">Principes et règles d’utilisation de l’IA dans le cadre des examens FEDE</span>\n            <li>Rappel des règles de base des examens FEDE</li>\n            <li>L’IA et le dossier professionnel : enjeux des règles et bonnes pratiques</li>\n          <br/>\n\n          Nous vous remercions de consulter les documents synthétiques suivant : \n          <br/>\n          <a href=\"https://cdefede.sharepoint.com/:b:/s/CommunicationPdagogie/EXC-QTusxVpPjUPjy4frDPwBAHyRhlEW2jqxLA-egDooQw?e=XLYtrg\" target=\"_blank\">FEDE - Nouveautés pédagogiques - 2025-2026</a><br/>\n          <a href=\"https://cdefede.sharepoint.com/:b:/s/CommunicationPdagogie/EYVnd7gWgoJGgeSXJoA2AGgBMchN2n0OocLQGwk5XXP0Yg?e=n8pPEs\" target=\"_blank\">FEDE - Règles examens IA - 2025-2026</a><br/>\n\n        </span>\n        <br/><hr/><br/>\n\n        <span>\n\n        As we approach the 2025-2026 academic year, the FEDE teams are pleased to introduce the latest educational updates as well as the principles and regulations regarding the use of generative AI in FEDE examinations.\n          <br/><br/>\n        The first examination session affected by these changes will take place in January 2026.\n          <br/><br/>  \n\n          <span className=\"secondTitle\">FEDE educational updates</span>\n            <li>New degrees</li>\n            <li>Update of syllabi – teaching units D (TU D) and A (TU A)</li>\n            <li>Degrees removed from the catalogue</li>\n            <li>Trainer training</li>\n          <br/>\n\n          <span className=\"secondTitle\">Principles and rules for AI use in FEDE examinations</span>\n            <li>Reminder of the basic rules for FEDE examinations</li>\n            <li>AI and the professional report: key issues, regulations, and best practices</li>\n          <br/>\n\n          Please consult the following summary document :<br/>\n          <a href=\"https://cdefede.sharepoint.com/:b:/s/CommunicationPdagogie/EUd5aA72ZIZFiensOpnXWhQB2xTHUGy_4WU4m3k1R3ggLA?e=HgUZpQ\" target=\"_blank\">FEDE - Educational News - 2025-2026</a><br/>\n          <a href=\"https://cdefede.sharepoint.com/:b:/s/CommunicationPdagogie/EdcBH439l0hDtACJTGEwhMgBPObCbrQvQaPW6ZxzlgLK8Q?e=jdMT43\" target=\"_blank\">FEDE - Rules Examinations IA - 2025-2026</a><br/>\n\n        </span>\n        </Modal.Body>\n        <Modal.Footer>\n          <Button onClick={props.onHide} variant=\"fede\">Fermer</Button>\n        </Modal.Footer>\n      </Modal>\n    );\n}\n\nconst ModalFede = (props) => {\n    return (\n      <Modal\n        {...props}\n        size=\"sm\"\n        aria-labelledby=\"contained-modal-title-vcenter\"\n        centered\n      >\n        <Modal.Header closeButton>\n          <Modal.Title id=\"contained-modal-title-vcenter\" className=\"text-danger\">\n            Attention\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body>\n          <p className=\"text-justify\">\n            Votre compte n'est associé à aucune école.\n            Merci de contacter la FEDE à l'adresse <a href=\"mailto:mailbox@fede.education\">mailbox@fede.education</a> pour corriger cela, en indiquant le nom de votre école.\n          </p>\n        </Modal.Body>\n        <Modal.Footer>\n          <Button onClick={props.onHide} variant=\"fede\">Fermer</Button>\n        </Modal.Footer>\n      </Modal>\n    );\n}\n\nconst ModalChooseSchoolFede = (props) => {\n    console.log(props)\n    const [schoolId, setSchoolId] = useState(null);\n    const [validated, setValidated] = useState(false);\n    \n    const handleSubmit = (event) => {\n        const form = event.currentTarget;\n        \n        if (form.checkValidity() === false) {\n          \n        } \n        setValidated(true);\n        props.onSchoolSelected(schoolId)\n        props.onHide();\n        \n        event.preventDefault();\n        event.stopPropagation();\n    }\n\n    const handleChange = (event) => {\n        setSchoolId(event.target.value)\n        event.preventDefault();\n        event.stopPropagation();\n    }\n\n    return (\n      <Modal\n        {...props}\n        aria-labelledby=\"contained-modal-title-vcenter\"\n        centered\n      >\n        <Modal.Header>\n          <Modal.Title id=\"contained-modal-title-vcenter\" className=\"text-info\">\n            Attention\n          </Modal.Title>\n        </Modal.Header>\n        <Modal.Body>\n            <p className=\"text-justify\">Votre compte est associé à plusieres écoles. Merci de selection quelle école vous souhaitez gerer.</p>\n            <Form validated={validated} onSubmit={handleSubmit}>\n                <Form.Group controlId=\"selectSchool\">\n                    <Form.Label>Choisir l'école</Form.Label>\n                    <Form.Control as=\"select\" onChange={handleChange}>\n                        <option>Selectionner une école  </option>\n                        {props.schools.map((school, idx) => (\n                            <option key={idx} value={school.id}>{school.name}</option>\n                        ))}\n                    </Form.Control>    \n                </Form.Group>\n                <Button type=\"submit\" variant=\"fede\">Valider</Button>\n            </Form>\n        </Modal.Body>\n      </Modal>\n    );\n}\n  \nconst SchoolContext = React.createContext(null);\n\nconst SidebarRight = () => {\n    return(\n        <div>\n            <TwitterTimelineEmbed\n                sourceType=\"profile\"\n                screenName=\"FEDE_OING\"\n                options={{height: 500}}\n            />\n      </div>\n    );\n}\n\nconst SidebarLeft = () => {\n    return (\n    <div>\n        <div className=\"shadow p-3 mb-5 bg-white rounded fede-box\"><img src={schoolLogo} className=\"mx-auto d-block\" alt=\"Logo\"/></div>\n        {/* <div className=\"shadow mb-5 bg-white rounded\">\n          <a href=\"https://peps.fede.education/\" title=\"Programme PEPS\" target=\"_blank\" rel=\"noopener noreferrer\">\n            <img src={bannerPeps} className=\"mx-auto d-block img-fluid\" alt=\"Banner Programme Peps\"/>\n          </a>\n        </div> */}\n    </div>\n    );\n}\n\nexport {\n    SpinnerFede,\n    Subheader,\n    BreadcrumbFede,\n    Error404,\n    ModalFede,\n    ModalChooseSchoolFede,\n    SchoolContext,\n    SidebarRight,\n    SidebarLeft,\n    ModalUpdateFede\n};\n","// authProvider.js\nimport { MsalAuthProvider, LoginType } from 'react-aad-msal';\nimport { Logger, LogLevel } from \"msal\";\n\n// Msal Configurations\nconst config = {\n  auth: {\n    authority: 'https://login.microsoftonline.com/fede.education',\n    clientId: '0fd4db93-fcca-4ccf-806b-38c6961bc1a0',\n    redirectUri: window.location.origin,\n    validateAuthority: true, \n    postLogoutRedirectUri: 'https://www.fede.education/',\n    //navigateToLoginRequestUrl: false\n  },\n  system: {},\n  cache: {\n    cacheLocation: \"localStorage\",\n    storeAuthStateInCookie: true\n  }\n};\n\nif(process.env.NODE_ENV === 'development') {\n  config.system.logger = new Logger(\n    (logLevel, message, containsPii) => {\n      console.log(\"[MSAL]\", message);\n    },\n    {\n      level: LogLevel.Verbose,\n      piiLoggingEnabled: false\n    }\n  );\n}\n\n// Authentication Parameters\nconst authenticationParameters = {\n  scopes: [\n    'https://graph.microsoft.com/.default',\n  ],\n  state: window.location.href.replace(window.location.hash,\"\"),\n  //forceRefresh: true,\n  prompt: 'select_account',\n  extraScopesToConsent: [],\n  extraQueryParameters: {domain_hint: 'fede.education'},\n  loginHint: null\n}\n\n// Options\nconst options = {\n  loginType: LoginType.Redirect,\n  tokenRefreshUri: window.location.origin + '/auth.html'\n}\n\nexport const authProvider = new MsalAuthProvider(config, authenticationParameters, options)","import \"isomorphic-fetch\";\r\nimport { Client } from \"@microsoft/microsoft-graph-client\";\r\nimport { authProvider } from '../provider/authProvider';\r\n\r\n\r\nconst pedagogieSiteId = \"cdefede.sharepoint.com,154568af-45ff-4d4f-982e-f56b26eafd04,e9b45774-b78a-4da1-a710-0adff9161baa\";\r\nconst intranetListId  = \"78b5264e-2061-41f1-aca8-16980cdf6155\";\r\nconst pedagogieSiteUrl  = \"https://cdefede.sharepoint.com/:b:/r/sites/CommunicationPdagogie/Documents%20partages\";\r\n\r\nconst getAuthenticatedClient = async (version = null)  => {\r\n    const token =  await authProvider.getAccessToken();\r\n\r\n    const client = Client.init({\r\n        defaultVersion: (version) ? version : \"v1.0\",\r\n        debugLogging: false,\r\n        authProvider: (done) => {\r\n            done(null, token.accessToken);\r\n        },\r\n    });\r\n  \r\n    return client;\r\n}\r\n\r\nconst groupSpListByCategories = (list) => {\r\n    return list.reduce((result, currentValue) => {\r\n        (result[currentValue.fields.Category] = result[currentValue.fields.Category] || []).push(currentValue.fields);\r\n        return result;\r\n    }, {}); \r\n}\r\n  \r\nconst getSharepointList = async () => {\r\n    try {\r\n        const siteId = pedagogieSiteId;\r\n        const listId = intranetListId;\r\n\r\n        const client = await getAuthenticatedClient();\r\n\r\n        const response = await client.api(`/sites/${siteId}/lists/${listId}/items`)\r\n                              .expand(\"fields\")\r\n                              .get();\r\n                          \r\n        return response.value;\r\n\r\n    } catch (error) {\r\n        console.error(error);\r\n    }\r\n}\r\n\r\nconst path_ext = (absPath) => {\r\n    return absPath.replace(pedagogieSiteUrl, \"\").split('?')[0]\r\n}\r\n\r\nconst getSharepointItem = async (absPath) => {\r\n    try {\r\n\r\n        const siteId = pedagogieSiteId;\r\n        const relPath = path_ext(absPath);\r\n\r\n        const client = await getAuthenticatedClient();\r\n\r\n        const response = await client.api(`/sites/${siteId}/drive/root:/${relPath}`)\r\n                              .select(\"id\", \"name\", \"webUrl\")\r\n                              .get();\r\n                          \r\n        return response;\r\n\r\n    } catch (error) {\r\n        console.error(error);\r\n    }\r\n}\r\n\r\nconst getEducationSchool = async (schoolId) => {\r\n    try {\r\n\r\n        const client = await getAuthenticatedClient();\r\n      \r\n        let response = await client.api(`/education/schools/${schoolId}`)\r\n                              .get();\r\n\r\n        return response;\r\n\r\n    } catch (error) {\r\n        console.error(error);\r\n    }\r\n}\r\n\r\nconst listEducationSchools = async () => {\r\n    try {\r\n\r\n        const client = await getAuthenticatedClient(\"beta\");\r\n        \r\n        let response = await client.api(`/education/me/schools`)\r\n                              .get();\r\n\r\n        return response.value;\r\n\r\n    } catch (error) {\r\n        console.error(error);\r\n    }\r\n}\r\n\r\n\r\nconst getMe = async () => {\r\n    try {\r\n\r\n        const client = await getAuthenticatedClient();\r\n      \r\n        let response = await client.api(`/me`)\r\n        .select(\"displayName\", \"givenName\", \"surname\")\r\n        .get();\r\n\r\n        return response;\r\n\r\n    } catch (error) {\r\n        console.error(error);\r\n    }\r\n}\r\n\r\n\r\nconst getUserSchoolsInToken = async () => {\r\n    const idToken =  await authProvider.getIdToken();\r\n       \r\n    if(idToken.idToken.claims.hasOwnProperty(\"extn.fedeSchoolGid\")){\r\n      return JSON.parse(idToken.idToken.claims[\"extn.fedeSchoolGid\"]);\r\n    } \r\n}\r\n\r\nexport {\r\n    getSharepointList,\r\n    getEducationSchool,\r\n    listEducationSchools,\r\n    groupSpListByCategories,\r\n    getUserSchoolsInToken,\r\n    getSharepointItem,\r\n    getMe\r\n}","import React, { useState, useEffect } from \"react\";\nimport { Accordion, Card, Button, Container, Row, Col } from 'react-bootstrap';\n//import { authProvider } from '../../provider/authProvider';\nimport { SpinnerFede, SidebarRight, ModalFede, ModalUpdateFede }  from '../Common';\n//import { Link } from \"react-router-dom\";\nimport { Helmet } from 'react-helmet'\nimport { getSharepointList, groupSpListByCategories, listEducationSchools } from '../../services/GraphService';\nimport { useTranslation } from 'react-i18next';\n\nfunction Home() {\n    const [isLoading, setIsLoading] = useState(true);\n    const [schools, setSchools] = useState(null);\n    const [categories, setCategories] = useState(null);\n    const [modalShow, setModalShow] = useState(false);\n    const { t, i18n } = useTranslation();\n\n    useEffect(() => {\n      \n      const fetchData = async () => {\n          try {\n            const educationSchools =  await listEducationSchools();\n            const res = await getSharepointList();\n            const grouped =  groupSpListByCategories(res);\n            setCategories(grouped);\n            setSchools(educationSchools);\n            if(!educationSchools || educationSchools.length === 0){\n              setModalShow(true);\n            }\n            setIsLoading(false);\n      \n          } catch (error) {\n              console.error(error);\n          }\n\n      };\n\n      fetchData();\n\n    }, []);\n    \n    return (    \n      <Container style={{marginTop: \"20px\", marginBottom: \"200px\"}}>\n        <Helmet\n            titleTemplate=\"%s | Intranet FEDE\"\n        >\n            <title>{t('home.index')}</title>\n        </Helmet>\n        <Row>\n          <Col lg={6} md={12}>\n            {isLoading && (<SpinnerFede />)}\n            {!isLoading && (\n              <React.Fragment>\n                {!schools && (\n                  <ModalFede \n                    show={modalShow}\n                    onHide={() => setModalShow(false)}\n                  />\n                )}\n                {<ModalUpdateFede \n                    show={modalShow}\n                    onHide={() => setModalShow(false)}\n                  />}\n                <h2 style={{fontSize: \"1.5rem\", color: \"white\", backgroundColor: \"#86bf57\", padding: \".75rem 1.25rem\"}}>{t('home.space')}</h2>\n                {/*<ul style={{padding: \"1.25rem\"}}>\n                  <li key=\"account\">\n                    <Link\n                      key=\"account-link\"\n                      to={{\n                        pathname: `/account/${authProvider.account.accountIdentifier}`,\n                        //search: \"?sort=name\",\n                        //hash: \"#the-hash\",\n                        state: { fromDashboard: true }\n                      }}\n                    >\n                      {t('home.update')}\n                    </Link>\n                  </li>\n                  {schools && schools.map((school, idx) => (\n                    <li key={idx}>\n                      <Link\n                        key={idx}\n                        to={{\n                          pathname: `/schools/${school.id}`,\n                          //search: \"?sort=name\",\n                          //hash: \"#the-hash\",\n                          state: { fromDashboard: true }\n                        }}\n                      >\n                        {t('home.schoolupdate')} : { school.displayName}\n                      </Link>\n                    </li>\n                      ))}\n                </ul>*/}\n                {categories && (\n                  <Accordion>\n                    {Object.keys(categories).map((cat) => (  \n                      <Card key={cat}>\n                        <Card.Header>\n                          <Accordion.Toggle as={Button} variant=\"link\" eventKey={cat.trim()}>\n                            {cat}\n                          </Accordion.Toggle>\n                        </Card.Header>\n                        <Accordion.Collapse eventKey={cat.trim()}>\n                          <Card.Body>\n                            <ul>\n                              {categories[cat].map(item => (\n                                <li key={item.id}>\n                                  <a href={ item.Docurl } title={ item.Title } target=\"_blank\" rel=\"noopener noreferrer\">{ item.Title }</a>\n                                </li>\n                              ))}\n                            </ul>\n                          </Card.Body>\n                        </Accordion.Collapse>\n                      </Card>\n                  ))}\n                  </Accordion>\n                )}\n              </React.Fragment>\n            )}\n          </Col>\n          <Col className=\"d-none d-lg-block\"><SidebarRight /></Col>\n        </Row>\n      </Container>\n    );\n}\n\nexport default Home;","import Home from '../Components/Home';\n//import Account from '../Components/Account';\n//import School from '../Components/School';\n//import Login from '../Components/Login';\n\nexport default [\n    { path: \"/\", name: \"Accueil\", Component: Home, bg: \"subheader-bg-hp\" },\n    //{ path: \"/account/:accountId\", name: \"Modifier votre profil\", Component: Account, bg: \"subheader-bg-hp\" },\n    //{ path: \"/schools/:schoolId\", name: \"Modifier votre école\", Component: School, bg: \"subheader-bg-hp\" }\n];","import React from \"react\";\nimport routes from \"../../routes\";\nimport {\n  Switch,\n  Route\n} from \"react-router-dom\";\nimport { Subheader, BreadcrumbFede, Error404 }  from '../Common';\n\n\nfunction Main() {\n\n    return (    \n      <div>\n        <Switch>\n          {routes.map(({ path, name, Component }, key) => (\n            <Route\n              exact\n              path={path}\n              key={key}\n              render={props => {\n                const crumbs = routes\n                  .filter(({ path }) => props.match.path.includes(path))\n                  .map(({ path, ...rest }) => ({\n                    path: Object.keys(props.match.params).length\n                      ? Object.keys(props.match.params).reduce(\n                        (path, param) => path.replace(\n                          `:${param}`, props.match.params[param]\n                        ), path\n                        )\n                      : path,\n                    ...rest\n                  }));\n                return (\n                  <React.Fragment>\n                    <Subheader params={{title: crumbs[crumbs.length - 1].name, bg: crumbs[crumbs.length - 1].bg}} /> \n                    <BreadcrumbFede crumbs={crumbs} />\n                    <Component {...props}  />\n                  </React.Fragment>\n                );\n              }}\n            />\n          ))}\n          <Route path=\"*\">\n            <Error404 />\n          </Route>\n        </Switch>\n      </div>\n \n    );\n}\n\nexport default Main;","export default __webpack_public_path__ + \"static/media/logo-partners.c9f9c8c5.png\";","import React from \"react\";\nimport { Container, Row, Col, Image, Nav } from 'react-bootstrap';\nimport partners from '../../img/logo-partners.png';\nimport { useTranslation } from 'react-i18next';\n\nfunction Footer() {\n\n    const { t, i18n } = useTranslation();\n\n    return (\n    <div id=\"footer\">\n       <Container id=\"fede-footer\">\n            <Row id=\"partners\">\n                <Col className=\"text-center\">\n                    <Image src={partners} title=\"Logo partners\" fluid />\n                </Col>\n            </Row>\n            <Row>\n                <Col></Col>\n                <Col></Col>\n                <Col></Col>\n                <Col></Col>\n            </Row>\n      </Container>\n      <Container fluid className=\"footer-copyright\">\n          <Container>\n            <Nav\n                activeKey=\"/home\"\n                //onSelect={(selectedKey) => alert(`selected ${selectedKey}`)}\n            >    \n                <Nav.Item>\n                    <Nav.Link eventKey=\"disabled\" disabled>Copyright © {new Date().getFullYear()} Fédération Européenne Des Ecoles</Nav.Link>\n                </Nav.Item>\n                <Nav.Item className=\"d-none d-lg-block\">\n                    <Nav.Link href=\"https://fede.education/statuts-fede/\" target=\"_blank\">STATUS FEDE</Nav.Link>\n                </Nav.Item>\n                <Nav.Item className=\"d-none d-lg-block\">\n                    <Nav.Link href=\"https://fede.education/reglement-interieur/\" target=\"_blank\">{t('footer.rules')}</Nav.Link>\n                </Nav.Item>\n                <Nav.Item className=\"d-none d-lg-block\">\n                    <Nav.Link href=\"https://fede.education/faq/\" target=\"_blank\">FAQ</Nav.Link>\n                </Nav.Item>\n                <Nav.Item className=\"d-none d-lg-block\">\n                    <Nav.Link href=\"https://fede.education/contact-us/\" target=\"_blank\">CONTACT</Nav.Link>\n                </Nav.Item>\n                <Nav.Item className=\"d-none d-lg-block\">\n                    <Nav.Link href=\"https://fede.education/mentions-legales/\" target=\"_blank\">{t('footer.legal')}</Nav.Link>\n                </Nav.Item>\n            </Nav>\n            </Container>\n      </Container>\n    </div>\n    );\n}\n  \nexport default Footer;","import React, { useState } from \"react\";\nimport { Container, Col, Row, Image, Card, Button  } from 'react-bootstrap';\nimport home from '../../img/home.png';\nimport fedeWorld from '../../img/fede-world.png';\nimport { Helmet } from 'react-helmet'\n//import { authProvider } from '../../provider/authProvider';\nimport { AuthenticationState } from 'react-aad-msal';\n\n  \nfunction Login({ login, error, authenticationState }) {\n    const [validated, setValidated] = useState(false);\n    //const [email, setEmail] = useState(\"\");\n \n\n\n    const handleSubmit = (event) => {\n        const form = event.currentTarget;\n        //console.log(form.checkValidity())\n        // if (form.checkValidity() === false) {\n        //   event.preventDefault();\n        //   event.stopPropagation();\n        // } \n        // const authenticationParameters = {...getAuthenticationParameters(), loginHint:  email}\n        // setAuthenticationParameters(authenticationParameters);\n        login();\n       \n        setValidated(true);\n    }\n\n    return (\n        <Container>\n            <Helmet\n                titleTemplate=\"%s | Intranet FEDE\"\n            >\n                <title>Connexion</title>\n            </Helmet>\n            {authenticationState !== AuthenticationState.InProgress && (\n            <React.Fragment>\n                <Row>\n                    <Col><Image className=\"rounded float-left\" src={home} title=\"Home\" style={{ width: \"30px\" }}/><h4>Bienvenue dans votre Espace membre</h4></Col>\n                </Row>\n                <Row id=\"login\">\n                    <Col className=\"align-self-center d-none d-sm-none d-md-block\">\n                        <Image src={fedeWorld} title=\"Logo partners\" fluid />\n                    </Col>\n                    <Col className=\"align-self-center\" md={6}>\n                        <Card>\n                            <Card.Body>\n                                {/*<Form noValidate validated={validated} onSubmit={handleSubmit}>\n                                     <Form.Group controlId=\"formEmail\">\n                                        <Form.Label>Email</Form.Label>\n                                        <Form.Control \n                                            type=\"email\" \n                                            placeholder=\"Adresse e-mail\" \n                                            value={email}\n                                            required\n                                            onChange={e => setEmail(e.target.value)}\n                                        />\n                                        <Form.Control.Feedback type=\"invalid\">\n                                            Merci d`entrer une adresse e-mail valide\n                                        </Form.Control.Feedback>\n                                    </Form.Group> \n                                    <Button variant=\"fede\" type=\"submit\">\n                                        Se connecter\n                                    </Button> \n                                </Form>*/}\n                                <p className=\"font-weight-bolder text-justify\">Vous devez être identifié pour accéder à cette section.</p>\n                                <p>\n                                    {error && (\n                                        <p className=\"text-danger\">Vous n'avez pas la permission. Contacter la FEDE pour demander les droits d'accès à l'intranet : <a href=\"mailto:mailbox@fede.education\">mailbox@fede.education</a></p>\n                                    ) }\n                                </p>\n                                <Button variant=\"fede\" type=\"submit\" size=\"lg\" onClick={handleSubmit}>\n                                    Se connecter\n                                </Button>\n                            </Card.Body>\n                        </Card>\n                    </Col>\n                </Row>\n            </React.Fragment>\n            )}\n        </Container>\n    );\n}\n  \nexport default Login;","export default \"data:image/png;base64,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\"","import i18n from 'i18next';\r\nimport LanguageDetector from 'i18next-browser-languagedetector';\r\nimport { initReactI18next } from 'react-i18next';\r\n\r\ni18n\r\n  // load translation using http -> see /public/locales\r\n  // learn more: https://github.com/i18next/i18next-http-backend\r\n  //.use(Backend)\r\n  // detect user language\r\n  // learn more: https://github.com/i18next/i18next-browser-languageDetector\r\n  .use(LanguageDetector)\r\n  // pass the i18n instance to react-i18next.\r\n  .use(initReactI18next)\r\n  // init i18next\r\n  // for all options read: https://www.i18next.com/overview/configuration-options\r\n  .init({\r\n    fallbackLng: 'fr',\r\n    debug: true,\r\n\r\n    interpolation: {\r\n      escapeValue: false, // not needed for react as it escapes by default\r\n    },\r\n    resources: {\r\n      fr: {\r\n        translation: {\r\n          header: {\r\n            language: 'Langues',\r\n            apps: 'Applications FEDE',\r\n            logout: 'Se deconnecter',\r\n            login: 'Se connecter',\r\n          },\r\n          footer: {\r\n            rules: 'REGLEMENT INTERIEUR',\r\n            legal: 'MENTION LEGAL'\r\n          },\r\n          home: {\r\n            space: 'ESPACE MEMBRE',\r\n            update: 'Modifier votre profil personnel',\r\n            schoolupdate: 'Modifier les informations de votre école',\r\n            index: 'Accueil'\r\n          }\r\n        }\r\n      },\r\n      en: {\r\n        translation: {\r\n          header: {\r\n            language: 'Languages',\r\n            apps: 'FEDE Applications',\r\n            logout: 'Logout',\r\n            login: 'Login',\r\n          },\r\n          footer: {\r\n            rules: 'INTERNAL RULES',\r\n            legal: 'LEGAL NOTICE'\r\n          },\r\n          home: {\r\n            space: 'MEMBER SPACE',\r\n            update: 'Update your profile',\r\n            schoolupdate: 'Update school informations',\r\n            index: 'Homepage'\r\n          }\r\n        }\r\n      },\r\n    }\r\n  });\r\n\r\nexport default i18n;","import React from \"react\";\nimport 'bootstrap/dist/css/bootstrap.min.css';\nimport './App.css';\nimport store from './reduxStore';\nimport Header from './Components/Header';\nimport Main from './Components/Main';\nimport Footer from './Components/Footer';\nimport Login from './Components/Login';\nimport { AzureAD, AuthenticationState } from 'react-aad-msal';\nimport { authProvider } from './provider/authProvider';\nimport {BrowserRouter as Router } from \"react-router-dom\";\nimport './i18n';\n\nfunction App() {\n\n    return (\n    <AzureAD provider={authProvider} reduxStore={store} forceLogin={true}>\n\n        {\n            ({login, logout, authenticationState, error, accountInfo}) => {\n            switch (authenticationState) {\n                case AuthenticationState.Authenticated:\n                return (<Router><Header authenticationState={authenticationState} login={login} logout={logout} account={accountInfo} /><Main /><Footer /></Router>);\n                case AuthenticationState.Unauthenticated:\n                return (\n                    <Router>\n                        <Header authenticationState={authenticationState} login={login} logout={logout} account={accountInfo}  />\n                        <Login login={login} error={error} authenticationState={authenticationState} />\n                        <Footer />\n                    </Router>\n                );\n                // case AuthenticationState.InProgress:\n                // return (<p>Authenticating...</p>);\n            }\n            }\n        }\n    </AzureAD>\n    );\n}\n\n  \nexport default App;\n  \n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n  window.location.hostname === 'localhost' ||\n    // [::1] is the IPv6 localhost address.\n    window.location.hostname === '[::1]' ||\n    // 127.0.0.0/8 are considered localhost for IPv4.\n    window.location.hostname.match(\n      /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n    )\n);\n\nexport function register(config) {\n  if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n    // The URL constructor is available in all browsers that support SW.\n    const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n    if (publicUrl.origin !== window.location.origin) {\n      // Our service worker won't work if PUBLIC_URL is on a different origin\n      // from what our page is served on. This might happen if a CDN is used to\n      // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n      return;\n    }\n\n    window.addEventListener('load', () => {\n      const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n      if (isLocalhost) {\n        // This is running on localhost. Let's check if a service worker still exists or not.\n        checkValidServiceWorker(swUrl, config);\n\n        // Add some additional logging to localhost, pointing developers to the\n        // service worker/PWA documentation.\n        navigator.serviceWorker.ready.then(() => {\n          console.log(\n            'This web app is being served cache-first by a service ' +\n              'worker. To learn more, visit https://bit.ly/CRA-PWA'\n          );\n        });\n      } else {\n        // Is not localhost. Just register service worker\n        registerValidSW(swUrl, config);\n      }\n    });\n  }\n}\n\nfunction registerValidSW(swUrl, config) {\n  navigator.serviceWorker\n    .register(swUrl)\n    .then(registration => {\n      registration.onupdatefound = () => {\n        const installingWorker = registration.installing;\n        if (installingWorker == null) {\n          return;\n        }\n        installingWorker.onstatechange = () => {\n          if (installingWorker.state === 'installed') {\n            if (navigator.serviceWorker.controller) {\n              // At this point, the updated precached content has been fetched,\n              // but the previous service worker will still serve the older\n              // content until all client tabs are closed.\n              console.log(\n                'New content is available and will be used when all ' +\n                  'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n              );\n\n              // Execute callback\n              if (config && config.onUpdate) {\n                config.onUpdate(registration);\n              }\n            } else {\n              // At this point, everything has been precached.\n              // It's the perfect time to display a\n              // \"Content is cached for offline use.\" message.\n              console.log('Content is cached for offline use.');\n\n              // Execute callback\n              if (config && config.onSuccess) {\n                config.onSuccess(registration);\n              }\n            }\n          }\n        };\n      };\n    })\n    .catch(error => {\n      console.error('Error during service worker registration:', error);\n    });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n  // Check if the service worker can be found. If it can't reload the page.\n  fetch(swUrl, {\n    headers: { 'Service-Worker': 'script' },\n  })\n    .then(response => {\n      // Ensure service worker exists, and that we really are getting a JS file.\n      const contentType = response.headers.get('content-type');\n      if (\n        response.status === 404 ||\n        (contentType != null && contentType.indexOf('javascript') === -1)\n      ) {\n        // No service worker found. Probably a different app. Reload the page.\n        navigator.serviceWorker.ready.then(registration => {\n          registration.unregister().then(() => {\n            window.location.reload();\n          });\n        });\n      } else {\n        // Service worker found. Proceed as normal.\n        registerValidSW(swUrl, config);\n      }\n    })\n    .catch(() => {\n      console.log(\n        'No internet connection found. App is running in offline mode.'\n      );\n    });\n}\n\nexport function unregister() {\n  if ('serviceWorker' in navigator) {\n    navigator.serviceWorker.ready\n      .then(registration => {\n        registration.unregister();\n      })\n      .catch(error => {\n        console.error(error.message);\n      });\n  }\n}\n","import 'react-app-polyfill/ie9';\nimport 'react-app-polyfill/ie11';\nimport 'react-app-polyfill/stable';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\nimport './i18n';\n\nReactDOM.render(\n\n    <App /> \n  ,\n  document.getElementById('root')\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}