├── 20231005_gridviz_GDRmagis_gaffuri.pdf ├── AfficheDestrem.jpg ├── Prez_1.png ├── README.md ├── TextBI.png ├── _config.yml ├── affiche_Viglino2024.png ├── affiche_webinaire_aumond.png ├── affiche_webinaire_douet.png ├── affiche_webinaire_kerouanton.png ├── affiche_webinaire_malbertelli.png ├── affiche_webinaire_malbertelli_old.png ├── affiche_webinaire_roulier.png ├── affiche_webinaire_viglino.png ├── affiche_webinaire_ysebaert.png ├── ansart.jpg ├── cartogeovis14_malbertelli.md ├── cartogeoviz1-kerouanton.md ├── cartogeoviz10-masson.md ├── cartogeoviz11-ansart.md ├── cartogeoviz12_GaelleSutton.md ├── cartogeoviz13_viglino.md ├── cartogeoviz15-roulier.md ├── cartogeoviz16-ljegou.md ├── cartogeoviz17-viry.md ├── cartogeoviz17-viry_files └── libs │ ├── bootstrap │ ├── bootstrap-icons.css │ ├── bootstrap-icons.woff │ ├── bootstrap.min.css │ └── bootstrap.min.js │ ├── clipboard │ └── clipboard.min.js │ └── quarto-html │ ├── anchor.min.js │ ├── popper.min.js │ ├── quarto-syntax-highlighting.css │ ├── quarto.js │ ├── tippy.css │ └── tippy.umd.min.js ├── cartogeoviz18-viglino.md ├── cartogeoviz19-ysebaert.md ├── cartogeoviz2-riviere.md ├── cartogeoviz3-aumond.md ├── cartogeoviz4-touatijegou.md ├── cartogeoviz5-douet.md ├── cartogeoviz6-rajerison.md ├── cartogeoviz7-LucasDestrem.md ├── cartogeoviz7-gautier.md ├── cartogeoviz8-gaffuri.md ├── cartogeoviz9-benrebah.md ├── gridviz.png ├── img_reporte.PNG ├── magrit-cinema.png ├── meta_Riviere.PNG ├── obsplot.jpeg ├── visuelWebinaireGautier.png ├── visuelWebinaireNTLJ.png ├── visuel_ljegou2024.png ├── wK6ptWN7.jpg ├── webinaire.PNG └── webinaire_BenRebah.PNG /20231005_gridviz_GDRmagis_gaffuri.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/magisAR9/webinaires/1963239df66bab6e7b2fcfa4739d9fc570dd398f/20231005_gridviz_GDRmagis_gaffuri.pdf -------------------------------------------------------------------------------- /AfficheDestrem.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/magisAR9/webinaires/1963239df66bab6e7b2fcfa4739d9fc570dd398f/AfficheDestrem.jpg -------------------------------------------------------------------------------- /Prez_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/magisAR9/webinaires/1963239df66bab6e7b2fcfa4739d9fc570dd398f/Prez_1.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Webinaires "Carte blanche" :globe_with_meridians: 2 | 3 | ![alt tag](https://raw.githubusercontent.com/magisAR9/webinaires/main/webinaire.PNG) 4 | 5 | Dans le cadre de ses activité, l'AR9 propose une série de Webinaires mensuels sous la forme d'une "Carte blanche", un temps consacré à **l'exploration et aux discussions sur les formes contemporaines de cartographies et de géovisualisations de données**. L'objectif de ces temps d'échange est à la fois de permettre des **présentations** de travaux, de réalisations ou d'expérimentations cartographiques diversifiées et **des échanges collectifs** sur les leviers et les enjeux actuels de la représentation de données spatiales tant d'un point de vue conceptuel, opérationnel, méthodologique que technique. 6 | 7 | ## Format :information_desk_person: 8 | 9 | **Durée :** À partir de 12h30, pour 30mn de présentation en mode visioconférence + 30 mn d'échanges et de discussions.
Le webinaire est animé et modéré par l'un·e des porteur·es de l'AR 9 (Françoise, Anne-Christine, Boris, Etienne, Nicolas ou Robin). 10 |
11 | 12 | ## Prochain Webinaire 13 | 14 | 15 | ## Webinaires à venir :calendar: 16 | 17 | décembre 2024 : _pas de webinaire_ 18 |
19 | - Carte blanche #21 - 20 | 21 | 22 | ## Webinaires passés 23 | 24 | #### Carte blanche #20. 12 novembre 2024 : **Ronan YSEBAERT**, 25 |
[Mise en place d'une plateforme de géovisualisation des locations Airbnb en Ile-de-France : enjeux et perspectives](https://magisar9.github.io/webinaires/cartogeoviz19-ysebaert.html), Univ. Paris Cité/UAR RIATE. 26 | 27 | #### Carte blanche #19. 15 octobre 2024 : **Jean-Marc VIGLINO**, 28 |
[Ma Carte](https://magisar9.github.io/webinaires/cartogeoviz18-viglino.html), Univ. Gustave Eiffel/IGN : Technologies autour de MaCarte. 29 | 30 | #### Carte blanche #18. 2 octobre 2024 : **Lucas DESTREM**, Cartographe indépendant,
31 | :arrow_forward: [Expérimentations cartographiques](https://github.com/magisAR9/webinaires/blob/main/cartogeoviz7-LucasDestrem.md)
32 | 33 | #### Carte blanche #17. 24 septembre 2024 : [**Matthieu Viry**](https://mthh.github.io/portfolio/), Ingénieur de recherche en informatique, UAR RIATE,
34 | :arrow_forward: [Magrit Nouvelle version](https://magisar9.github.io/webinaires/cartogeoviz17-viry.html)
35 | 36 | #### Carte blanche #16. Juin 2024 : [**Laurent JÉGOU**](https://lisst.univ-tlse2.fr/accueil/hn-equipes-de-recherche/centre-interdisciplinaire-detudes-urbaines-cieu/laurent-jegou#/), MCF, UMR LISST, Université Toulouse-Jean Jaurès,
37 | 38 | :arrow_forward: [Des cartes et des couleurs : enquête sur les gradients](https://github.com/magisAR9/webinaires/blob/main/cartogeoviz16-ljegou.md)
39 | 40 | #### Carte blanche #15. Juin 2024 : [**Frédéric ROULIER**](https://www.u-picardie.fr/edysan/_listing-personnel/frederic-roulier/), MCF, UMR 7058 EDYSAN, Université de Picardie Jules Verne, 41 | 42 | :arrow_forward: [MapMorphy, un logiciel de morphométrie géométrique pour les données cartographiques](https://github.com/magisAR9/webinaires/blob/main/cartogeoviz15-roulier.md) 43 | 44 | #### Carte blanche #14. Mai 2024 : [**Marion ALBERTELLI**](https://www.linkedin.com/in/marion-albertelli-06659749), post-doctorante, Univ. Gustave Eiffel/UMR LVMT & UMR 8504 Géographie-cités 45 | 46 | :arrow_forward: [Cartographier et analyser les pratiques des V.T.C. dans les quartiers de gare](https://github.com/magisAR9/webinaires/blob/main/cartogeovis14_malbertelli.md) 47 | 48 | #### Carte blanche #13. Avril 2024 : [**Jean-Marc VIGLINO**](https://twitter.com/jmviglino), Ingénieur IGN, Univ. Gustave Eiffel/IGN France 49 | 50 | :arrow_forward: [ol-ext et cie](https://github.com/magisAR9/webinaires/blob/main/cartogeoviz13_viglino.md) 51 | 52 | #### Carte blanche #12. Mars 2024 : **Gaëlle SUTTON**, [Cartographe indépendante](https://gsutton.fr/) 53 | 54 | :arrow_forward: [Mon activité de cartographe indépendante](https://github.com/magisAR9/webinaires/blob/main/cartogeoviz12_GaelleSutton.md) 55 | 56 | #### Carte blanche #11. Février 2024 : **Thomas ANSART**, [Atelier de cartographie de Sciences Po](https://thomasansart.info/) 57 | 58 | :arrow_forward: [Ce que le code a apporté dans ma pratique de la dataviz](https://magisar9.github.io/webinaires/cartogeoviz11-ansart.html) 59 | 60 | #### Carte blanche #10. Janvier 2024 : **Maxime MASSON**, [UMR LIUPPA, Equipe T2I](https://liuppa.univ-pau.fr/fr/organisation/equipes-de-recherche/equipe-t2i.html) 61 | 62 | :arrow_forward: [TextBI : Une plateforme interactive pour la visualisation de données multidimensionnelles issues des réseaux sociaux](https://github.com/magisAR9/webinaires/blob/main/cartogeoviz10-masson.md) 63 | 64 | #### Carte blanche #9. Novembre 2023 : [**Maher BEN REBAH**](https://www.linkedin.com/in/ben-rebah-maher-37831160/?originalSubdomain=fr)**, Mourad Ben Cheikh, Mohamed Ben Guiza et Alia Gana** (UMR LADYSS) 65 | 66 | :arrow_forward: [ELYSSA : Cartographier et analyser le vote en Tunisie depuis 2011](https://github.com/magisAR9/webinaires/blob/main/cartogeoviz9-benrebah.md)
67 | 68 | #### Carte blanche #8. Octobre 2023 : [**Julien GAFFURI**](https://github.com/jgaffuri), Eurostats, [\@julgaf](https://twitter.com/julgaf) 69 | 70 | :arrow_forward: [Gridviz: Une bibliothèque pour la cartographie en ligne de données carroyées](https://github.com/magisAR9/webinaires/blob/main/cartogeoviz8-gaffuri.md)
71 | 72 | #### Carte blanche #7 Septembre 2023 : **Jean-Philippe GAUTIER** 73 | 74 | :arrow_forward: [www.cartostat.eu, une application web de cartographie statistique](https://github.com/magisAR9/webinaires/blob/main/cartogeoviz7-gautier.md)
75 | 76 | #### Carte blanche #6. Juillet 2023 : **Najla TOUATI** et **Laurent JÉGOU** (UMR LISST) 77 | 78 | :arrow_forward: [De la carte climatique au chorotype climatique : propositions de modèles graphiques](https://github.com/magisAR9/webinaires/blob/main/cartogeoviz4-touatijegou.md) [Ressources](https://bbb-prod-rp.unistra.fr/playback/presentation/2.3/99470eae0814dfe5c9cca017ea6e2edc6966dada-1688636333439) 79 | 80 | #### Carte blanche #5. Mai 2023 : [**RAJERISON Mathieu**](https://datagistips.hypotheses.org/author/datagistips), Cerema, [\@datagistips](https://twitter.com/datagistips)
81 | 82 | :arrow_forward: [Génération (de) cartes](https://github.com/magisAR9/webinaires/blob/main/cartogeoviz6-rajerison.md) 83 | 84 | #### Carte blanche #4. Avril 2023 : [**DOUET Aurélie**](https://geographie-cites.cnrs.fr/membres/aurelie-douet/), IE UMR Géographie-cités, [\@CartoDouet](https://twitter.com/CartoDouet/)
85 | 86 | :arrow_forward: [na.rm=TRUE. Requête, interactivité et gestion des données manquantes](https://github.com/magisAR9/webinaires/blob/main/cartogeoviz5-douet.md)\* 87 | 88 | #### Carte blanche #3. Février 2023 [AUMOND Pierre](https://pagespro.univ-gustave-eiffel.fr/pierre-aumond) (CR, Univ. Gustave Eiffel-CEREMA/UMRAE), [\@SoundCartograp1](https://twitter.com/SoundCartograp1)
89 | 90 | :arrow_forward: [Cartographie du paysage sonore urbain](https://github.com/magisAR9/webinaires/blob/main/cartogeoviz3-aumond.md)
91 | 92 | #### Carte blanche #2. Décembre 2022 [Philippe RIVIERE](https://observablehq.com/@fil) (Visions carto, Observable)
93 | 94 | :arrow_forward: [Faire des cartes statistiques avec Observable Plot](https://github.com/magisAR9/webinaires/blob/main/cartogeoviz2-riviere.md)
95 | 96 | #### Carte blanche #1. Novembre 2022 [Colin KEROUANTON](https://colinkerouanton.netlify.app/) (IR, PACTE)
97 | 98 | :arrow_forward: [Effets spéciaux pour questions spatiales\_](https://github.com/magisAR9/webinaires/blob/main/cartogeoviz1-kerouanton.md)
99 | 100 |
101 | 102 | ## Intervenir dans le webinaire Carte blanche 103 | 104 | Si vous êtes intéressé.e.s à venir présenter vos travaux ou expérimentations cartographiques vous êtes les bienvenus ! Que vous soyez dans le monde académique, dans le secteur privé ou passionné de cartographie et de géovisualisation contactez le collectif de l'AR9 :[\@ collectif de l'AR](mailto:robin.cura@parisgeo.cnrs.fr,francoise.bahoken@univ-eiffel.fr,anne-christine.bronner@misha.fr,etienne.come@univ-eiffel.fr,boris.mericskay@univ-rennes2.fr,nicolas.lambert@cnrs.fr). 105 | 106 | **Informations nécessaires sur votre intervention :**
- un titre ; - une image ; - un résumé de 3-4 lignes ; - vos noms, prénoms \@ et affiliations. 107 | 108 | Ces informations sont à nous envoyer par email, elles seront ensuite mises en ligne sur ce dépôt. 109 | -------------------------------------------------------------------------------- /TextBI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/magisAR9/webinaires/1963239df66bab6e7b2fcfa4739d9fc570dd398f/TextBI.png -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | plugins: 2 | - jemoji 3 | -------------------------------------------------------------------------------- /affiche_Viglino2024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/magisAR9/webinaires/1963239df66bab6e7b2fcfa4739d9fc570dd398f/affiche_Viglino2024.png -------------------------------------------------------------------------------- /affiche_webinaire_aumond.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/magisAR9/webinaires/1963239df66bab6e7b2fcfa4739d9fc570dd398f/affiche_webinaire_aumond.png -------------------------------------------------------------------------------- /affiche_webinaire_douet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/magisAR9/webinaires/1963239df66bab6e7b2fcfa4739d9fc570dd398f/affiche_webinaire_douet.png -------------------------------------------------------------------------------- /affiche_webinaire_kerouanton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/magisAR9/webinaires/1963239df66bab6e7b2fcfa4739d9fc570dd398f/affiche_webinaire_kerouanton.png -------------------------------------------------------------------------------- /affiche_webinaire_malbertelli.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/magisAR9/webinaires/1963239df66bab6e7b2fcfa4739d9fc570dd398f/affiche_webinaire_malbertelli.png -------------------------------------------------------------------------------- /affiche_webinaire_malbertelli_old.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/magisAR9/webinaires/1963239df66bab6e7b2fcfa4739d9fc570dd398f/affiche_webinaire_malbertelli_old.png -------------------------------------------------------------------------------- /affiche_webinaire_roulier.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/magisAR9/webinaires/1963239df66bab6e7b2fcfa4739d9fc570dd398f/affiche_webinaire_roulier.png -------------------------------------------------------------------------------- /affiche_webinaire_viglino.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/magisAR9/webinaires/1963239df66bab6e7b2fcfa4739d9fc570dd398f/affiche_webinaire_viglino.png -------------------------------------------------------------------------------- /affiche_webinaire_ysebaert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/magisAR9/webinaires/1963239df66bab6e7b2fcfa4739d9fc570dd398f/affiche_webinaire_ysebaert.png -------------------------------------------------------------------------------- /ansart.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/magisAR9/webinaires/1963239df66bab6e7b2fcfa4739d9fc570dd398f/ansart.jpg -------------------------------------------------------------------------------- /cartogeovis14_malbertelli.md: -------------------------------------------------------------------------------- 1 | **Webinaire Carte Blanche #14. mardi 14 mai 2024 (12h30-13h30)**
2 | _Cartographier et analyser les pratiques des V.T.C. dans les quartiers de gare_
3 | par [Marion Albertelli](https://www.linkedin.com/in/marion-albertelli-06659749/?originalSubdomain=fr), L.V.M.T. & UMR 8504 Géographie-cités. 4 | 5 | ![alt text](https://raw.githubusercontent.com/magisAR9/webinaires/main/affiche_webinaire_malbertelli.png) 6 | 7 | **Résumé** : Dans le cadre d’un travail de thèse réalisé en partenariat avec SNCF Gares & Connexions sur l’insertion urbaine des gares françaises, 8 | Marion Albertelli a questionné les échelles territoriales de trente gares françaises en termes d’accessibilité et de services de mobilité. Les gares 9 | sont considérées par les acteurs régionaux et métropolitains comme des pôles majeurs pour l’organisation et la gestion des mobilités alternatives aux 10 | véhicules motorisés individuels. L’un des résultats de cette recherche est que les nouvelles formes de mobilité partagées restent en marge de la gestion 11 | des pôles d’échanges des gares ferroviaires. Grâce à l’obtention d’une base de données permettant le suivi de V.T.C. réalisant des trajets à destination 12 | ou depuis cinq gares de la région parisienne sur une année (07.2017-07.2018), des cartes de chaleurs sur les parcours de V.T.C. dans les quartiers de gare 13 | ont pu être réalisées. Elles ont permis de visualiser leurs pratiques dans des quartiers très contraints par la densité de flux et de services de mobilité. 14 | 15 | **Accès** 16 | [Lien](https://univ-eiffel.zoom.us/j/89871486576)
17 | -ID de réunion : 898 7148 6576 | Code secret : AR9m@gis 18 | 19 | **Ressources**
20 | - ![image](https://github.com/magisAR9/webinaires/assets/13615192/aec667d0-bba6-4657-98cd-24d4eb59b9e2) [Support de la présentation](https://sharedocs.huma-num.fr/wl/?id=DH5OdW047FrPIpGVNREe1p4mc1kgQdVZ) 21 | 22 | - 📺 [Video du webinaire](https://sharedocs.huma-num.fr/wl/?id=tvVe622MLDnYyPMWotNc13bvuxou7Ofn) 23 | 24 | 25 | Retour à l'accueil des [Webinaires Cartes Blanches](https://github.com/magisAR9/webinaires) 26 | -------------------------------------------------------------------------------- /cartogeoviz1-kerouanton.md: -------------------------------------------------------------------------------- 1 | **Webinaire Carte Blanche #1. Mardi 8 novembre 2022 (12h30-13h30)**
2 | _Effets spéciaux pour questions spatiales_ par [Colin KEROUANTON](https://colinkerouanton.netlify.app/) (IR CNRS, UMR PACTE)
3 | 4 | ![alt text](https://raw.githubusercontent.com/magisAR9/webinaires/main/affiche_webinaire_kerouanton.png) 5 | 6 | **Résumé** : À partir de données de mobilité GPS récoltées et traitées par un collectif de recherche (ANR Mobi’Kids), nous avons conçu une série de géo-visualisations à l’aide de scripts R et du logiciel de 3D Blender. J’exposerai dans cette première séance « Carte blanche », mon point de vue sur la conception de ces géo-visualisations comme valorisation de résultats scientifiques. Ces résultats sont issus d’un long processus itératif entre plan d’échantillonnage, récolte de données, traitement de la donnée, visualisation puis re-traitement de la donnée etc. Enfin je montrerai l’importance des questions autour des mobilités, dans le processus itératif et ainsi dans le façonnement de nos géo-visualisations.* 7 | 8 | **Accès Zoom**
9 | [Lien](https://cnrs.zoom.us/j/97232935796?pwd=UnhxWFlBKytoWmtFampWcVpkZGlDQT09)
10 | -ID de réunion : 972 3293 5796 | Code secret : 6J92Ww
11 | 12 | **Ressources**
13 | 📺 [Vidéo du Webinaire](https://pewflix.com/w/2zEZTPx5BGJafRNCR4Pu3Z)
14 | 15 | Retour à l'accueil des [Webinaires Cartes Blanches](https://github.com/magisAR9/webinaires) 16 | -------------------------------------------------------------------------------- /cartogeoviz10-masson.md: -------------------------------------------------------------------------------- 1 | **Webinaire Carte Blanche #10. jeudi 18 janvier 2024 (12h30-13h30)**
2 | _TextBI : Une plateforme interactive pour la visualisation de données multidimensionnelles issues des réseaux sociaux_
3 | par **Maxime MASSON[^1]**, Christian Sallaberry[^1], Marie-Noelle Bessagnet[^1], Philippe Roose[^1], Annig Le Parc Lacayrelle[^1], Rodrigo Agerri[^2] 4 | 5 | ![alt text](TextBI.png) 6 | 7 | **Résumé** : 8 | TextBI est un tableau de bord interactif destiné à visualiser des indicateurs multidimensionnels sur de grandes quantités de données multilingues issues des réseaux sociaux. 9 | Il cible quatre dimensions principales d’analyse : spatiale, temporelle, thématique et personnelle, tout en intégrant des données contextuelles comme le sentiment et l'engagement. 10 | Offrant plusieurs modes de visualisation, cet outil s'insère dans un cadre plus large visant à guider les diverses étapes de traitement de données des réseaux sociaux. 11 | Bien qu'il soit riche en fonctionnalités, il est conçu pour être intuitif, même pour des utilisateurs non informaticiens. 12 | Son application a été testée dans le domaine du tourisme en utilisant des données de Twitter (aujourd’hui X) mais il a été conçu pour être générique et adaptable à de multiples domaines. 13 | 14 | **Accès Zoom**
15 | [Lien](https://pantheonsorbonne.zoom.us/j/91396916407)
16 | -ID de réunion : 913 9691 6407 | Code secret : AR9m@gis
17 | 18 | **Ressources**
19 | 📺 [Vidéo](https://sharedocs.huma-num.fr/wl/?id=2wbh1xgHSTcvjieceg2JyGve1G3jEI1z) 20 | 21 | 22 | [^1]: [LIUPPA, E2S, Université de Pau et des Pays de l'Adour (UPPA), Pau, France](https://liuppa.univ-pau.fr/fr/organisation/equipes-de-recherche/equipe-t2i.html) 23 | [^2]: [Centre HiTZ - Ixa, Université du Pays Basque UPV/EHU, Donostia-San Sebastian, Espagne](https://ixa.ehu.eus/) 24 | 25 | Retour à l'accueil des [Webinaires Cartes Blanches](https://github.com/magisAR9/webinaires) 26 | -------------------------------------------------------------------------------- /cartogeoviz11-ansart.md: -------------------------------------------------------------------------------- 1 | **Webinaire Carte Blanche #11. Mardi 6 février 2024 (12h30-13h30)**
2 | _Ce que le code a apporté dans ma pratique de la dataviz_ par [Thomas Ansart](https://thomasansart.info/) (Atelier de cartographie de Sciences Po)
3 | 4 | ![alt text](./ansart.jpg) 5 | 6 | **Résumé** : Au regard d’une décennie d’expérience en dataviz, j’aimerais revenir sur les raisons qui m’ont poussé à l’acquisition progressive de compétences en code ainsi que sur plusieurs projets/outils représentatifs de l’évolution de ma pratique.* 7 | 8 | **Suppprt de présentation** 9 | 10 | https://sharedocs.huma-num.fr/wl/?id=RGD0WN7lx9Z0jYD8SSMKSxdWuYmRFx8T 11 | 12 | **Vidéo** 13 | 14 | https://sharedocs.huma-num.fr/wl/?id=7w35yvuTOmwOBULuuBEJ9BcCWJwTMPrS 15 | 16 | Retour à l'accueil des [Webinaires Cartes Blanches](https://github.com/magisAR9/webinaires) 17 | -------------------------------------------------------------------------------- /cartogeoviz12_GaelleSutton.md: -------------------------------------------------------------------------------- 1 | # Webinaire Carte Blanche #12. Jeudi 21 mars 2024 2 | 3 | ## Mon activité de cartographe indépendante avec [Gaëlle Sutton](https://gsutton.fr/) 4 | 5 | ![alt text](./Prez_1.png) 6 | 7 | **Résumé** : Cartographe spécialisée dans la gestion des risques naturels depuis 5 ans, Gaëlle Sutton à d'abord travaillé dans le domaine des télécommunications avant de me diriger vers le freelance. 8 | Cartographe en freelance, elle collabore sur des projets variés ainsi qu'avec différents acteurs (presse et édition, chercheurs, collectivités territoriales, industrie et particuliers) pour l'élaboration de crtes et de visualisation de données au style très soignés. 9 | Gaëlle reviendra sur son parcours, ses missions et son métier de cartographe indépendante avec un focus sur les choix graphiques et la dimension esthétique de ces réalisations. 10 | 11 | ## Informations des connexion 12 | Rejoindre Zoom Réunion 13 | https://cnrs.zoom.us/j/96225408994?pwd=eFFNbTJPVXFPMFRQMUVKTitvSUo5dz09 14 | 15 | ID de réunion: 962 2540 8994 16 | Code secret: Yx64FP 17 | 18 | ## Support de présentation (à venir) 19 | 20 | ## Vidéo du Webinaire : 21 | 22 | 📺 https://sharedocs.huma-num.fr/wl/?id=WwIno7uVlMk9zT16Da4nGPNY9NBP2neQ 23 | 24 | Retour à l'accueil des [Webinaires Cartes Blanches](https://github.com/magisAR9/webinaires) 25 | -------------------------------------------------------------------------------- /cartogeoviz13_viglino.md: -------------------------------------------------------------------------------- 1 | **Webinaire Carte Blanche #14. Jeudi 4 avril 2024 (12h30-13h30)**
2 | _ol-ext et cie._
3 | par Jean-Marc VIGLINO, Ingénieur IGN, Chef de secteur Express, Univ. Gustave Eiffel, IGN France
4 | [@jmviglino](https://twitter.com/jmviglino), [github/Viglino](https://github.com/Viglino) 5 | 6 | ![alt text](https://raw.githubusercontent.com/magisAR9/webinaires/main/affiche_webinaire_viglino.png) 7 | 8 | 9 | **Résumé** : Au cours de mes divers projets de développements cartographiques, j'ai été amené à reverser des outils ou des ressources sur Github que je me propose de vous détailler aujourd'hui. 10 |
**Ol-ext** est une librairie de fonctionnalités développées au-dessus d'Openlayers. Initialement conçue comme un terrain de jeu pour me familiariser avec l'outil, elle s'est au fil des ans étoffée de différentes fonctionnalités transverses que j'utilise dans différents projets cartographiques, certaines utiles, d'autres futiles mais toujours indispensables. 11 |
**Font-GIS** est un ensemble d’icônes et police orienté SIG. 12 |
Je partage également différents styles pour le **vecteur tuilé de l’IGN** et un 13 | **cours pour la _conception de cartes en lignes_**. 14 |
Enfin, je vous présenterai une application qui utilise ses ressources pour jouer sur une carte en ligne. 15 | 16 | - 📺 [Video du webinaire](https://bbb-prod-rp.unistra.fr/playback/presentation/2.3/99470eae0814dfe5c9cca017ea6e2edc6966dada-1712226351790)
17 | 18 | **Ressources**
19 | - [github/Viglino](https://github.com/Viglino) 20 | 21 | - [Ol-ext](https://github.com/Viglino/ol-ext) : bibliothèque d'extension pour Openlayers 22 | 23 | - [#30dayMapChallenge 2022](https://viglino.github.io/MapChallenge2022/) 24 | 25 | - [#30dayMapChallenge 2023](https://viglino.github.io/MapChallenge2023/) 26 | 27 | - [Vagabondage, jeu de rôle sur une carte](https://viglino.github.io/vagabondage/) 28 | 29 | 30 | Retour à l'accueil des [Webinaires Cartes Blanches](https://github.com/magisAR9/webinaires) 31 | -------------------------------------------------------------------------------- /cartogeoviz15-roulier.md: -------------------------------------------------------------------------------- 1 | **Webinaire Carte Blanche #15. lundi 3 juin 2024 (12h30-13h30)**
2 | _[MapMorphy](https://mapmorphy.fr/), un logiciel de morphométrie géométrique pour les données cartographiques_
3 | par [Frédéric Roulier](https://www.u-picardie.fr/edysan/_listing-personnel/frederic-roulier/), MCF Université de Picardie Jules Verne/UMR CNRS 7058 EDYSAN. 4 | 5 | ![alt text](https://raw.githubusercontent.com/magisAR9/webinaires/main/affiche_webinaire_roulier.png) 6 | 7 | **Résumé** : MapMorphy est un logiciel conçu pour l’analyse morphométrique de plusieurs cartes géographiques ou structures spatiales. Il propose à l’utilisateur une interface graphique simple d’utilisation pour la comparaison de deux ou de plusieurs conformations cartographiques correspondant par exemple à des représentations cognitives de l’espace, à des cartes anciennes ou, d’une manière générale, à des structures codées selon des points homologues. 8 | 9 | **Ressource** :
10 | 📺 [video](https://bit.ly/3Kqxqo8) 11 | 12 | **Accès au webinaire** 13 | - [Lien](https://univ-eiffel.zoom.us/j/89871486576)
14 | - ID de réunion : 898 7148 6576 | Code secret : AR9m@gis
15 | 16 | Retour à l'accueil des [Webinaires Cartes Blanches](https://github.com/magisAR9/webinaires) 17 | -------------------------------------------------------------------------------- /cartogeoviz16-ljegou.md: -------------------------------------------------------------------------------- 1 | **Webinaire Carte Blanche #16. Mardi 25 juin 2024 (12h30-13h30)**
2 | _Des cartes et des couleurs : enquête sur les gradients_ par [Laurent Jegou](https://ljegou.github.io/), MCF, UMR LISST, Université Toulouse-Jean Jaurès.
3 | 4 | ![alt text](./visuel_ljegou2024.png) 5 | 6 | **Résumé** : Mes recherches s'intéressent depuis longtemps aux usages de la couleur en cartographie thématique. J'ai d'abord proposé de jouer sur les gradients pour exprimer plus de sens, en se basant notamment sur un outil d'analyse de la fréquence et des relations colorées dans les images, ce qui permet aussi de sortir des gradients prêts à l'emploi qui deviennent des poncifs et standardisent un peu trop les cartes thématiques. Dernièrement, je propose d'évaluer la progression lumineuse des gradients standards et de l'adapter en luminosité pour suivre la progression des valeurs représentées, ce qui permet de mieux exprimer les valeurs de la variable. Une enquête en ligne tend à montrer que c'est bien le cas : les données sont plus lisibles lorsque le gradient leur est adapté. 7 |
8 | 9 | Le préprint : [https://hal.science/hal-04270875](https://hal.science/hal-04270875) 10 | 11 | Le carnet interactif : [https://observablehq.com/@ljegou/color-gradients-values-adapted-lum](https://observablehq.com/@ljegou/color-gradients-values-adapted-lum) 12 | 13 | La présentation : [https://github.com/ljegou/geotests/blob/master/WebinaireCarteBlanche16_Mardi_25_juin_2024.pdf](https://github.com/ljegou/geotests/blob/master/WebinaireCarteBlanche16_Mardi_25_juin_2024.pdf) 14 | 15 | [Trace video du webinaire](https://bbb-prod-rp.unistra.fr/playback/presentation/2.3/99470eae0814dfe5c9cca017ea6e2edc6966dada-1719308957319) 16 | 17 | Retour à l'accueil des [Webinaires Cartes Blanches](https://github.com/magisAR9/webinaires) 18 | -------------------------------------------------------------------------------- /cartogeoviz17-viry.md: -------------------------------------------------------------------------------- 1 | ## Webinaire Carte Blanche #17 2 | 3 | **La nouvelle version de Magrit** 4 | 5 | **Mardi 24 septembre 2024 (12h30-13h30)** 6 | 7 | 8 | 9 | Par [Matthieu Viry](https://mthh.github.io/portfolio/), ingénieur de recherche en informatique CNRS à l'UAR [RIATE](https://riate.cnrs.fr/). 10 | 11 | ![Capture d'écran du logiciel Magrit, 2024](magrit-cinema.png) 12 | 13 | 14 | **Résumé** : Ce webinaire présente l'application de cartographie thématique Magrit et en particulier les nouveautés offertes par la version 2 de l'application, sortie en juillet 2024 : nouvelles fonctionnalités relatives à la préparation des données, nouvelles possibilités de représentations, personnalisation accrue des cartes réalisées, etc. 15 | Ce webinaire s'articulera en 3 principaux temps : un retour sur les choix effectués et ayant permis d'aboutir à une nouvelle version de l'application, un cas d'étude réel (réalisation d'une carte à partir de données disponibles en Open Data) puis une présentation des nombreuses perspectives d'évolution (ajouts de nouvelles fonctionnalités d'analyse statistiques, etc.). 16 | 17 | **Ressources** : 18 | 19 | - [MAGRIT](https://magrit.cnrs.fr/) 20 | 21 | - [Documentation](https://magrit.cnrs.fr/documentation.html) 22 | 23 | - [Dépot Github](https://github.com/riatelab/magrit) 24 | 25 |
26 | 27 | 📺 [Vidéo du Webinaire](https://sharedocs.huma-num.fr/wl/?id=cw6jUGyiTn1C1Z50eP6G1D7mgODWSPbY) 28 | 29 | Retour à l'accueil des [Webinaires Cartes Blanches](https://github.com/magisAR9/webinaires) 30 | -------------------------------------------------------------------------------- /cartogeoviz17-viry_files/libs/bootstrap/bootstrap-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/magisAR9/webinaires/1963239df66bab6e7b2fcfa4739d9fc570dd398f/cartogeoviz17-viry_files/libs/bootstrap/bootstrap-icons.woff -------------------------------------------------------------------------------- /cartogeoviz17-viry_files/libs/bootstrap/bootstrap.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v5.3.1 (https://getbootstrap.com/) 3 | * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 5 | */ 6 | !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e()}(this,(function(){"use strict";const t=new Map,e={set(e,i,n){t.has(e)||t.set(e,new Map);const s=t.get(e);s.has(i)||0===s.size?s.set(i,n):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(s.keys())[0]}.`)},get:(e,i)=>t.has(e)&&t.get(e).get(i)||null,remove(e,i){if(!t.has(e))return;const n=t.get(e);n.delete(i),0===n.size&&t.delete(e)}},i="transitionend",n=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),s=t=>{t.dispatchEvent(new Event(i))},o=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(n(t)):null,a=t=>{if(!o(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},l=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),c=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?c(t.parentNode):null},h=()=>{},d=t=>{t.offsetHeight},u=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,f=[],p=()=>"rtl"===document.documentElement.dir,m=t=>{var e;e=()=>{const e=u();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(f.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of f)t()})),f.push(e)):e()},g=(t,e=[],i=t)=>"function"==typeof t?t(...e):i,_=(t,e,n=!0)=>{if(!n)return void g(t);const o=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let r=!1;const a=({target:n})=>{n===e&&(r=!0,e.removeEventListener(i,a),g(t))};e.addEventListener(i,a),setTimeout((()=>{r||s(e)}),o)},b=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},v=/[^.]*(?=\..*)\.|.*/,y=/\..*/,w=/::\d+$/,A={};let E=1;const T={mouseenter:"mouseover",mouseleave:"mouseout"},C=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function O(t,e){return e&&`${e}::${E++}`||t.uidEvent||E++}function x(t){const e=O(t);return t.uidEvent=e,A[e]=A[e]||{},A[e]}function k(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function L(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=I(t);return C.has(o)||(o=t),[n,s,o]}function S(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=L(e,i,n);if(e in T){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=x(t),c=l[a]||(l[a]={}),h=k(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=O(r,e.replace(v,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return P(s,{delegateTarget:r}),n.oneOff&&N.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return P(n,{delegateTarget:t}),i.oneOff&&N.off(t,n.type,e),e.apply(t,[n])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function D(t,e,i,n,s){const o=k(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function $(t,e,i,n){const s=e[i]||{};for(const[o,r]of Object.entries(s))o.includes(n)&&D(t,e,i,r.callable,r.delegationSelector)}function I(t){return t=t.replace(y,""),T[t]||t}const N={on(t,e,i,n){S(t,e,i,n,!1)},one(t,e,i,n){S(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=L(e,i,n),a=r!==e,l=x(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))$(t,l,i,e.slice(1));for(const[i,n]of Object.entries(c)){const s=i.replace(w,"");a&&!e.includes(s)||D(t,l,r,n.callable,n.delegationSelector)}}else{if(!Object.keys(c).length)return;D(t,l,r,o,s?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=u();let s=null,o=!0,r=!0,a=!1;e!==I(e)&&n&&(s=n.Event(e,i),n(t).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());const l=P(new Event(e,{bubbles:o,cancelable:!0}),i);return a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function P(t,e={}){for(const[i,n]of Object.entries(e))try{t[i]=n}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>n})}return t}function M(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function j(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const F={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${j(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${j(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const n of i){let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=M(t.dataset[n])}return e},getDataAttribute:(t,e)=>M(t.getAttribute(`data-bs-${j(e)}`))};class H{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=o(e)?F.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...o(e)?F.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[n,s]of Object.entries(e)){const e=t[n],r=o(e)?"element":null==(i=e)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(s).test(r))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${r}" but expected type "${s}".`)}var i}}class W extends H{constructor(t,i){super(),(t=r(t))&&(this._element=t,this._config=this._getConfig(i),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.remove(this._element,this.constructor.DATA_KEY),N.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){_(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return e.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.1"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const B=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?i.trim():null}return n(e)},z={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode.closest(e);for(;n;)i.push(n),n=n.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!l(t)&&a(t)))},getSelectorFromElement(t){const e=B(t);return e&&z.findOne(e)?e:null},getElementFromSelector(t){const e=B(t);return e?z.findOne(e):null},getMultipleElementsFromSelector(t){const e=B(t);return e?z.find(e):[]}},R=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,n=t.NAME;N.on(document,i,`[data-bs-dismiss="${n}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),l(this))return;const s=z.getElementFromSelector(this)||this.closest(`.${n}`);t.getOrCreateInstance(s)[e]()}))},q=".bs.alert",V=`close${q}`,K=`closed${q}`;class Q extends W{static get NAME(){return"alert"}close(){if(N.trigger(this._element,V).defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),N.trigger(this._element,K),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=Q.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}R(Q,"close"),m(Q);const X='[data-bs-toggle="button"]';class Y extends W{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=Y.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}N.on(document,"click.bs.button.data-api",X,(t=>{t.preventDefault();const e=t.target.closest(X);Y.getOrCreateInstance(e).toggle()})),m(Y);const U=".bs.swipe",G=`touchstart${U}`,J=`touchmove${U}`,Z=`touchend${U}`,tt=`pointerdown${U}`,et=`pointerup${U}`,it={endCallback:null,leftCallback:null,rightCallback:null},nt={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class st extends H{constructor(t,e){super(),this._element=t,t&&st.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return it}static get DefaultType(){return nt}static get NAME(){return"swipe"}dispose(){N.off(this._element,U)}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),g(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&g(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(N.on(this._element,tt,(t=>this._start(t))),N.on(this._element,et,(t=>this._end(t))),this._element.classList.add("pointer-event")):(N.on(this._element,G,(t=>this._start(t))),N.on(this._element,J,(t=>this._move(t))),N.on(this._element,Z,(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const ot=".bs.carousel",rt=".data-api",at="next",lt="prev",ct="left",ht="right",dt=`slide${ot}`,ut=`slid${ot}`,ft=`keydown${ot}`,pt=`mouseenter${ot}`,mt=`mouseleave${ot}`,gt=`dragstart${ot}`,_t=`load${ot}${rt}`,bt=`click${ot}${rt}`,vt="carousel",yt="active",wt=".active",At=".carousel-item",Et=wt+At,Tt={ArrowLeft:ht,ArrowRight:ct},Ct={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},Ot={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class xt extends W{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=z.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===vt&&this.cycle()}static get Default(){return Ct}static get DefaultType(){return Ot}static get NAME(){return"carousel"}next(){this._slide(at)}nextWhenVisible(){!document.hidden&&a(this._element)&&this.next()}prev(){this._slide(lt)}pause(){this._isSliding&&s(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?N.one(this._element,ut,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void N.one(this._element,ut,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?at:lt;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&N.on(this._element,ft,(t=>this._keydown(t))),"hover"===this._config.pause&&(N.on(this._element,pt,(()=>this.pause())),N.on(this._element,mt,(()=>this._maybeEnableCycle()))),this._config.touch&&st.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of z.find(".carousel-item img",this._element))N.on(t,gt,(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(ct)),rightCallback:()=>this._slide(this._directionToOrder(ht)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new st(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=Tt[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=z.findOne(wt,this._indicatorsElement);e.classList.remove(yt),e.removeAttribute("aria-current");const i=z.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(yt),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n=t===at,s=e||b(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=e=>N.trigger(this._element,e,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r(dt).defaultPrevented)return;if(!i||!s)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";s.classList.add(c),d(s),i.classList.add(l),s.classList.add(l),this._queueCallback((()=>{s.classList.remove(l,c),s.classList.add(yt),i.classList.remove(yt,c,l),this._isSliding=!1,r(ut)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return z.findOne(Et,this._element)}_getItems(){return z.find(At,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return p()?t===ct?lt:at:t===ct?at:lt}_orderToDirection(t){return p()?t===lt?ct:ht:t===lt?ht:ct}static jQueryInterface(t){return this.each((function(){const e=xt.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}N.on(document,bt,"[data-bs-slide], [data-bs-slide-to]",(function(t){const e=z.getElementFromSelector(this);if(!e||!e.classList.contains(vt))return;t.preventDefault();const i=xt.getOrCreateInstance(e),n=this.getAttribute("data-bs-slide-to");return n?(i.to(n),void i._maybeEnableCycle()):"next"===F.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),N.on(window,_t,(()=>{const t=z.find('[data-bs-ride="carousel"]');for(const e of t)xt.getOrCreateInstance(e)})),m(xt);const kt=".bs.collapse",Lt=`show${kt}`,St=`shown${kt}`,Dt=`hide${kt}`,$t=`hidden${kt}`,It=`click${kt}.data-api`,Nt="show",Pt="collapse",Mt="collapsing",jt=`:scope .${Pt} .${Pt}`,Ft='[data-bs-toggle="collapse"]',Ht={parent:null,toggle:!0},Wt={parent:"(null|element)",toggle:"boolean"};class Bt extends W{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=z.find(Ft);for(const t of i){const e=z.getSelectorFromElement(t),i=z.find(e).filter((t=>t===this._element));null!==e&&i.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Ht}static get DefaultType(){return Wt}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>Bt.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(N.trigger(this._element,Lt).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(Pt),this._element.classList.add(Mt),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Mt),this._element.classList.add(Pt,Nt),this._element.style[e]="",N.trigger(this._element,St)}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(N.trigger(this._element,Dt).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,d(this._element),this._element.classList.add(Mt),this._element.classList.remove(Pt,Nt);for(const t of this._triggerArray){const e=z.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(Mt),this._element.classList.add(Pt),N.trigger(this._element,$t)}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(Nt)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=r(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(Ft);for(const e of t){const t=z.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=z.find(jt,this._config.parent);return z.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=Bt.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}N.on(document,It,Ft,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of z.getMultipleElementsFromSelector(this))Bt.getOrCreateInstance(t,{toggle:!1}).toggle()})),m(Bt);var zt="top",Rt="bottom",qt="right",Vt="left",Kt="auto",Qt=[zt,Rt,qt,Vt],Xt="start",Yt="end",Ut="clippingParents",Gt="viewport",Jt="popper",Zt="reference",te=Qt.reduce((function(t,e){return t.concat([e+"-"+Xt,e+"-"+Yt])}),[]),ee=[].concat(Qt,[Kt]).reduce((function(t,e){return t.concat([e,e+"-"+Xt,e+"-"+Yt])}),[]),ie="beforeRead",ne="read",se="afterRead",oe="beforeMain",re="main",ae="afterMain",le="beforeWrite",ce="write",he="afterWrite",de=[ie,ne,se,oe,re,ae,le,ce,he];function ue(t){return t?(t.nodeName||"").toLowerCase():null}function fe(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function pe(t){return t instanceof fe(t).Element||t instanceof Element}function me(t){return t instanceof fe(t).HTMLElement||t instanceof HTMLElement}function ge(t){return"undefined"!=typeof ShadowRoot&&(t instanceof fe(t).ShadowRoot||t instanceof ShadowRoot)}const _e={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];me(s)&&ue(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});me(n)&&ue(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function be(t){return t.split("-")[0]}var ve=Math.max,ye=Math.min,we=Math.round;function Ae(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function Ee(){return!/^((?!chrome|android).)*safari/i.test(Ae())}function Te(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),s=1,o=1;e&&me(t)&&(s=t.offsetWidth>0&&we(n.width)/t.offsetWidth||1,o=t.offsetHeight>0&&we(n.height)/t.offsetHeight||1);var r=(pe(t)?fe(t):window).visualViewport,a=!Ee()&&i,l=(n.left+(a&&r?r.offsetLeft:0))/s,c=(n.top+(a&&r?r.offsetTop:0))/o,h=n.width/s,d=n.height/o;return{width:h,height:d,top:c,right:l+h,bottom:c+d,left:l,x:l,y:c}}function Ce(t){var e=Te(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function Oe(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&ge(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function xe(t){return fe(t).getComputedStyle(t)}function ke(t){return["table","td","th"].indexOf(ue(t))>=0}function Le(t){return((pe(t)?t.ownerDocument:t.document)||window.document).documentElement}function Se(t){return"html"===ue(t)?t:t.assignedSlot||t.parentNode||(ge(t)?t.host:null)||Le(t)}function De(t){return me(t)&&"fixed"!==xe(t).position?t.offsetParent:null}function $e(t){for(var e=fe(t),i=De(t);i&&ke(i)&&"static"===xe(i).position;)i=De(i);return i&&("html"===ue(i)||"body"===ue(i)&&"static"===xe(i).position)?e:i||function(t){var e=/firefox/i.test(Ae());if(/Trident/i.test(Ae())&&me(t)&&"fixed"===xe(t).position)return null;var i=Se(t);for(ge(i)&&(i=i.host);me(i)&&["html","body"].indexOf(ue(i))<0;){var n=xe(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function Ie(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Ne(t,e,i){return ve(t,ye(e,i))}function Pe(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function Me(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const je={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,i=t.state,n=t.name,s=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=be(i.placement),l=Ie(a),c=[Vt,qt].indexOf(a)>=0?"height":"width";if(o&&r){var h=function(t,e){return Pe("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:Me(t,Qt))}(s.padding,i),d=Ce(o),u="y"===l?zt:Vt,f="y"===l?Rt:qt,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],m=r[l]-i.rects.reference[l],g=$e(o),_=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,b=p/2-m/2,v=h[u],y=_-d[c]-h[f],w=_/2-d[c]/2+b,A=Ne(v,w,y),E=l;i.modifiersData[n]=((e={})[E]=A,e.centerOffset=A-w,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&Oe(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Fe(t){return t.split("-")[1]}var He={top:"auto",right:"auto",bottom:"auto",left:"auto"};function We(t){var e,i=t.popper,n=t.popperRect,s=t.placement,o=t.variation,r=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,h=t.roundOffsets,d=t.isFixed,u=r.x,f=void 0===u?0:u,p=r.y,m=void 0===p?0:p,g="function"==typeof h?h({x:f,y:m}):{x:f,y:m};f=g.x,m=g.y;var _=r.hasOwnProperty("x"),b=r.hasOwnProperty("y"),v=Vt,y=zt,w=window;if(c){var A=$e(i),E="clientHeight",T="clientWidth";A===fe(i)&&"static"!==xe(A=Le(i)).position&&"absolute"===a&&(E="scrollHeight",T="scrollWidth"),(s===zt||(s===Vt||s===qt)&&o===Yt)&&(y=Rt,m-=(d&&A===w&&w.visualViewport?w.visualViewport.height:A[E])-n.height,m*=l?1:-1),s!==Vt&&(s!==zt&&s!==Rt||o!==Yt)||(v=qt,f-=(d&&A===w&&w.visualViewport?w.visualViewport.width:A[T])-n.width,f*=l?1:-1)}var C,O=Object.assign({position:a},c&&He),x=!0===h?function(t,e){var i=t.x,n=t.y,s=e.devicePixelRatio||1;return{x:we(i*s)/s||0,y:we(n*s)/s||0}}({x:f,y:m},fe(i)):{x:f,y:m};return f=x.x,m=x.y,l?Object.assign({},O,((C={})[y]=b?"0":"",C[v]=_?"0":"",C.transform=(w.devicePixelRatio||1)<=1?"translate("+f+"px, "+m+"px)":"translate3d("+f+"px, "+m+"px, 0)",C)):Object.assign({},O,((e={})[y]=b?m+"px":"",e[v]=_?f+"px":"",e.transform="",e))}const Be={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:be(e.placement),variation:Fe(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,We(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,We(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var ze={passive:!0};const Re={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=fe(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,ze)})),a&&l.addEventListener("resize",i.update,ze),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,ze)})),a&&l.removeEventListener("resize",i.update,ze)}},data:{}};var qe={left:"right",right:"left",bottom:"top",top:"bottom"};function Ve(t){return t.replace(/left|right|bottom|top/g,(function(t){return qe[t]}))}var Ke={start:"end",end:"start"};function Qe(t){return t.replace(/start|end/g,(function(t){return Ke[t]}))}function Xe(t){var e=fe(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Ye(t){return Te(Le(t)).left+Xe(t).scrollLeft}function Ue(t){var e=xe(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function Ge(t){return["html","body","#document"].indexOf(ue(t))>=0?t.ownerDocument.body:me(t)&&Ue(t)?t:Ge(Se(t))}function Je(t,e){var i;void 0===e&&(e=[]);var n=Ge(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=fe(n),r=s?[o].concat(o.visualViewport||[],Ue(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(Je(Se(r)))}function Ze(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function ti(t,e,i){return e===Gt?Ze(function(t,e){var i=fe(t),n=Le(t),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=Ee();(c||!c&&"fixed"===e)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+Ye(t),y:l}}(t,i)):pe(e)?function(t,e){var i=Te(t,!1,"fixed"===e);return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}(e,i):Ze(function(t){var e,i=Le(t),n=Xe(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=ve(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=ve(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+Ye(t),l=-n.scrollTop;return"rtl"===xe(s||i).direction&&(a+=ve(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(Le(t)))}function ei(t){var e,i=t.reference,n=t.element,s=t.placement,o=s?be(s):null,r=s?Fe(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case zt:e={x:a,y:i.y-n.height};break;case Rt:e={x:a,y:i.y+i.height};break;case qt:e={x:i.x+i.width,y:l};break;case Vt:e={x:i.x-n.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?Ie(o):null;if(null!=c){var h="y"===c?"height":"width";switch(r){case Xt:e[c]=e[c]-(i[h]/2-n[h]/2);break;case Yt:e[c]=e[c]+(i[h]/2-n[h]/2)}}return e}function ii(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=void 0===n?t.placement:n,o=i.strategy,r=void 0===o?t.strategy:o,a=i.boundary,l=void 0===a?Ut:a,c=i.rootBoundary,h=void 0===c?Gt:c,d=i.elementContext,u=void 0===d?Jt:d,f=i.altBoundary,p=void 0!==f&&f,m=i.padding,g=void 0===m?0:m,_=Pe("number"!=typeof g?g:Me(g,Qt)),b=u===Jt?Zt:Jt,v=t.rects.popper,y=t.elements[p?b:u],w=function(t,e,i,n){var s="clippingParents"===e?function(t){var e=Je(Se(t)),i=["absolute","fixed"].indexOf(xe(t).position)>=0&&me(t)?$e(t):t;return pe(i)?e.filter((function(t){return pe(t)&&Oe(t,i)&&"body"!==ue(t)})):[]}(t):[].concat(e),o=[].concat(s,[i]),r=o[0],a=o.reduce((function(e,i){var s=ti(t,i,n);return e.top=ve(s.top,e.top),e.right=ye(s.right,e.right),e.bottom=ye(s.bottom,e.bottom),e.left=ve(s.left,e.left),e}),ti(t,r,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}(pe(y)?y:y.contextElement||Le(t.elements.popper),l,h,r),A=Te(t.elements.reference),E=ei({reference:A,element:v,strategy:"absolute",placement:s}),T=Ze(Object.assign({},v,E)),C=u===Jt?T:A,O={top:w.top-C.top+_.top,bottom:C.bottom-w.bottom+_.bottom,left:w.left-C.left+_.left,right:C.right-w.right+_.right},x=t.modifiersData.offset;if(u===Jt&&x){var k=x[s];Object.keys(O).forEach((function(t){var e=[qt,Rt].indexOf(t)>=0?1:-1,i=[zt,Rt].indexOf(t)>=0?"y":"x";O[t]+=k[i]*e}))}return O}function ni(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?ee:l,h=Fe(n),d=h?a?te:te.filter((function(t){return Fe(t)===h})):Qt,u=d.filter((function(t){return c.indexOf(t)>=0}));0===u.length&&(u=d);var f=u.reduce((function(e,i){return e[i]=ii(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[be(i)],e}),{});return Object.keys(f).sort((function(t,e){return f[t]-f[e]}))}const si={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,m=i.allowedAutoPlacements,g=e.options.placement,_=be(g),b=l||(_!==g&&p?function(t){if(be(t)===Kt)return[];var e=Ve(t);return[Qe(t),e,Qe(e)]}(g):[Ve(g)]),v=[g].concat(b).reduce((function(t,i){return t.concat(be(i)===Kt?ni(e,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:m}):i)}),[]),y=e.rects.reference,w=e.rects.popper,A=new Map,E=!0,T=v[0],C=0;C=0,S=L?"width":"height",D=ii(e,{placement:O,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),$=L?k?qt:Vt:k?Rt:zt;y[S]>w[S]&&($=Ve($));var I=Ve($),N=[];if(o&&N.push(D[x]<=0),a&&N.push(D[$]<=0,D[I]<=0),N.every((function(t){return t}))){T=O,E=!1;break}A.set(O,N)}if(E)for(var P=function(t){var e=v.find((function(e){var i=A.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return T=e,"break"},M=p?3:1;M>0&&"break"!==P(M);M--);e.placement!==T&&(e.modifiersData[n]._skip=!0,e.placement=T,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function oi(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function ri(t){return[zt,qt,Rt,Vt].some((function(e){return t[e]>=0}))}const ai={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=ii(e,{elementContext:"reference"}),a=ii(e,{altBoundary:!0}),l=oi(r,n),c=oi(a,s,o),h=ri(l),d=ri(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},li={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.offset,o=void 0===s?[0,0]:s,r=ee.reduce((function(t,i){return t[i]=function(t,e,i){var n=be(t),s=[Vt,zt].indexOf(n)>=0?-1:1,o="function"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[Vt,qt].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=r}},ci={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=ei({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},hi={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,p=i.tetherOffset,m=void 0===p?0:p,g=ii(e,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),_=be(e.placement),b=Fe(e.placement),v=!b,y=Ie(_),w="x"===y?"y":"x",A=e.modifiersData.popperOffsets,E=e.rects.reference,T=e.rects.popper,C="function"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,O="number"==typeof C?{mainAxis:C,altAxis:C}:Object.assign({mainAxis:0,altAxis:0},C),x=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,k={x:0,y:0};if(A){if(o){var L,S="y"===y?zt:Vt,D="y"===y?Rt:qt,$="y"===y?"height":"width",I=A[y],N=I+g[S],P=I-g[D],M=f?-T[$]/2:0,j=b===Xt?E[$]:T[$],F=b===Xt?-T[$]:-E[$],H=e.elements.arrow,W=f&&H?Ce(H):{width:0,height:0},B=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},z=B[S],R=B[D],q=Ne(0,E[$],W[$]),V=v?E[$]/2-M-q-z-O.mainAxis:j-q-z-O.mainAxis,K=v?-E[$]/2+M+q+R+O.mainAxis:F+q+R+O.mainAxis,Q=e.elements.arrow&&$e(e.elements.arrow),X=Q?"y"===y?Q.clientTop||0:Q.clientLeft||0:0,Y=null!=(L=null==x?void 0:x[y])?L:0,U=I+K-Y,G=Ne(f?ye(N,I+V-Y-X):N,I,f?ve(P,U):P);A[y]=G,k[y]=G-I}if(a){var J,Z="x"===y?zt:Vt,tt="x"===y?Rt:qt,et=A[w],it="y"===w?"height":"width",nt=et+g[Z],st=et-g[tt],ot=-1!==[zt,Vt].indexOf(_),rt=null!=(J=null==x?void 0:x[w])?J:0,at=ot?nt:et-E[it]-T[it]-rt+O.altAxis,lt=ot?et+E[it]+T[it]-rt-O.altAxis:st,ct=f&&ot?function(t,e,i){var n=Ne(t,e,i);return n>i?i:n}(at,et,lt):Ne(f?at:nt,et,f?lt:st);A[w]=ct,k[w]=ct-et}e.modifiersData[n]=k}},requiresIfExists:["offset"]};function di(t,e,i){void 0===i&&(i=!1);var n,s,o=me(e),r=me(e)&&function(t){var e=t.getBoundingClientRect(),i=we(e.width)/t.offsetWidth||1,n=we(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=Le(e),l=Te(t,r,i),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==ue(e)||Ue(a))&&(c=(n=e)!==fe(n)&&me(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:Xe(n)),me(e)?((h=Te(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=Ye(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}function ui(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var fi={placement:"bottom",modifiers:[],strategy:"absolute"};function pi(){for(var t=arguments.length,e=new Array(t),i=0;iNumber.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(F.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...g(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:e}){const i=z.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>a(t)));i.length&&b(i,e,t===Ti,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=qi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=z.find(Ni);for(const i of e){const e=qi.getInstance(i);if(!e||!1===e._config.autoClose)continue;const n=t.composedPath(),s=n.includes(e._menu);if(n.includes(e._element)||"inside"===e._config.autoClose&&!s||"outside"===e._config.autoClose&&s)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,n=[Ei,Ti].includes(t.key);if(!n&&!i)return;if(e&&!i)return;t.preventDefault();const s=this.matches(Ii)?this:z.prev(this,Ii)[0]||z.next(this,Ii)[0]||z.findOne(Ii,t.delegateTarget.parentNode),o=qi.getOrCreateInstance(s);if(n)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),s.focus())}}N.on(document,Si,Ii,qi.dataApiKeydownHandler),N.on(document,Si,Pi,qi.dataApiKeydownHandler),N.on(document,Li,qi.clearMenus),N.on(document,Di,qi.clearMenus),N.on(document,Li,Ii,(function(t){t.preventDefault(),qi.getOrCreateInstance(this).toggle()})),m(qi);const Vi="backdrop",Ki="show",Qi=`mousedown.bs.${Vi}`,Xi={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},Yi={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Ui extends H{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return Xi}static get DefaultType(){return Yi}static get NAME(){return Vi}show(t){if(!this._config.isVisible)return void g(t);this._append();const e=this._getElement();this._config.isAnimated&&d(e),e.classList.add(Ki),this._emulateAnimation((()=>{g(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(Ki),this._emulateAnimation((()=>{this.dispose(),g(t)}))):g(t)}dispose(){this._isAppended&&(N.off(this._element,Qi),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=r(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),N.on(t,Qi,(()=>{g(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){_(t,this._getElement(),this._config.isAnimated)}}const Gi=".bs.focustrap",Ji=`focusin${Gi}`,Zi=`keydown.tab${Gi}`,tn="backward",en={autofocus:!0,trapElement:null},nn={autofocus:"boolean",trapElement:"element"};class sn extends H{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return en}static get DefaultType(){return nn}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),N.off(document,Gi),N.on(document,Ji,(t=>this._handleFocusin(t))),N.on(document,Zi,(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,N.off(document,Gi))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=z.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===tn?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?tn:"forward")}}const on=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",rn=".sticky-top",an="padding-right",ln="margin-right";class cn{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,an,(e=>e+t)),this._setElementAttributes(on,an,(e=>e+t)),this._setElementAttributes(rn,ln,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,an),this._resetElementAttributes(on,an),this._resetElementAttributes(rn,ln)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(s))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&F.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=F.getDataAttribute(t,e);null!==i?(F.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(o(t))e(t);else for(const i of z.find(t,this._element))e(i)}}const hn=".bs.modal",dn=`hide${hn}`,un=`hidePrevented${hn}`,fn=`hidden${hn}`,pn=`show${hn}`,mn=`shown${hn}`,gn=`resize${hn}`,_n=`click.dismiss${hn}`,bn=`mousedown.dismiss${hn}`,vn=`keydown.dismiss${hn}`,yn=`click${hn}.data-api`,wn="modal-open",An="show",En="modal-static",Tn={backdrop:!0,focus:!0,keyboard:!0},Cn={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class On extends W{constructor(t,e){super(t,e),this._dialog=z.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new cn,this._addEventListeners()}static get Default(){return Tn}static get DefaultType(){return Cn}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||N.trigger(this._element,pn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(wn),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(N.trigger(this._element,dn).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(An),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){N.off(window,hn),N.off(this._dialog,hn),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Ui({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=z.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),d(this._element),this._element.classList.add(An),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,N.trigger(this._element,mn,{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){N.on(this._element,vn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())})),N.on(window,gn,(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),N.on(this._element,bn,(t=>{N.one(this._element,_n,(e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(wn),this._resetAdjustments(),this._scrollBar.reset(),N.trigger(this._element,fn)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(N.trigger(this._element,un).defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(En)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(En),this._queueCallback((()=>{this._element.classList.remove(En),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=p()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=p()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=On.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}N.on(document,yn,'[data-bs-toggle="modal"]',(function(t){const e=z.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),N.one(e,pn,(t=>{t.defaultPrevented||N.one(e,fn,(()=>{a(this)&&this.focus()}))}));const i=z.findOne(".modal.show");i&&On.getInstance(i).hide(),On.getOrCreateInstance(e).toggle(this)})),R(On),m(On);const xn=".bs.offcanvas",kn=".data-api",Ln=`load${xn}${kn}`,Sn="show",Dn="showing",$n="hiding",In=".offcanvas.show",Nn=`show${xn}`,Pn=`shown${xn}`,Mn=`hide${xn}`,jn=`hidePrevented${xn}`,Fn=`hidden${xn}`,Hn=`resize${xn}`,Wn=`click${xn}${kn}`,Bn=`keydown.dismiss${xn}`,zn={backdrop:!0,keyboard:!0,scroll:!1},Rn={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class qn extends W{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return zn}static get DefaultType(){return Rn}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||N.trigger(this._element,Nn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new cn).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Dn),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(Sn),this._element.classList.remove(Dn),N.trigger(this._element,Pn,{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(N.trigger(this._element,Mn).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add($n),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove(Sn,$n),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new cn).reset(),N.trigger(this._element,Fn)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new Ui({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():N.trigger(this._element,jn)}:null})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_addEventListeners(){N.on(this._element,Bn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():N.trigger(this._element,jn))}))}static jQueryInterface(t){return this.each((function(){const e=qn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}N.on(document,Wn,'[data-bs-toggle="offcanvas"]',(function(t){const e=z.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this))return;N.one(e,Fn,(()=>{a(this)&&this.focus()}));const i=z.findOne(In);i&&i!==e&&qn.getInstance(i).hide(),qn.getOrCreateInstance(e).toggle(this)})),N.on(window,Ln,(()=>{for(const t of z.find(In))qn.getOrCreateInstance(t).show()})),N.on(window,Hn,(()=>{for(const t of z.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&qn.getOrCreateInstance(t).hide()})),R(qn),m(qn);const Vn={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Kn=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Qn=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,Xn=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!Kn.has(i)||Boolean(Qn.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},Yn={allowList:Vn,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},Un={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Gn={entry:"(string|element|function|null)",selector:"(string|element)"};class Jn extends H{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Yn}static get DefaultType(){return Un}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},Gn)}_setContent(t,e,i){const n=z.findOne(i,t);n&&((e=this._resolvePossibleFunction(e))?o(e)?this._putElementInTemplate(r(e),n):this._config.html?n.innerHTML=this._maybeSanitize(e):n.textContent=e:n.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=[].concat(...n.body.querySelectorAll("*"));for(const t of s){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const n=[].concat(...t.attributes),s=[].concat(e["*"]||[],e[i]||[]);for(const e of n)Xn(e,s)||t.removeAttribute(e.nodeName)}return n.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return g(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Zn=new Set(["sanitize","allowList","sanitizeFn"]),ts="fade",es="show",is=".modal",ns="hide.bs.modal",ss="hover",os="focus",rs={AUTO:"auto",TOP:"top",RIGHT:p()?"left":"right",BOTTOM:"bottom",LEFT:p()?"right":"left"},as={allowList:Vn,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},ls={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class cs extends W{constructor(t,e){if(void 0===vi)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return as}static get DefaultType(){return ls}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),N.off(this._element.closest(is),ns,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=N.trigger(this._element,this.constructor.eventName("show")),e=(c(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:n}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(i),N.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))N.on(t,"mouseover",h);this._queueCallback((()=>{N.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(this._isShown()&&!N.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))N.off(t,"mouseover",h);this._activeTrigger.click=!1,this._activeTrigger[os]=!1,this._activeTrigger[ss]=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),N.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(ts,es),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(ts),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Jn({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(ts)}_isShown(){return this.tip&&this.tip.classList.contains(es)}_createPopper(t){const e=g(this._config.placement,[this,t,this._element]),i=rs[e.toUpperCase()];return bi(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return g(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,...g(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)N.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===ss?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===ss?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");N.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?os:ss]=!0,e._enter()})),N.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?os:ss]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},N.on(this._element.closest(is),ns,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=F.getDataAttributes(this._element);for(const t of Object.keys(e))Zn.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:r(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,i]of Object.entries(this._config))this.constructor.Default[e]!==i&&(t[e]=i);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=cs.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m(cs);const hs={...cs.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},ds={...cs.DefaultType,content:"(null|string|element|function)"};class us extends cs{static get Default(){return hs}static get DefaultType(){return ds}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=us.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}m(us);const fs=".bs.scrollspy",ps=`activate${fs}`,ms=`click${fs}`,gs=`load${fs}.data-api`,_s="active",bs="[href]",vs=".nav-link",ys=`${vs}, .nav-item > ${vs}, .list-group-item`,ws={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},As={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class Es extends W{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return ws}static get DefaultType(){return As}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=r(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(N.off(this._config.target,ms),N.on(this._config.target,ms,bs,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,n=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:n,behavior:"smooth"});i.scrollTop=n}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},n=(this._rootElement||document.documentElement).scrollTop,s=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&t){if(i(o),!n)return}else s||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=z.find(bs,this._config.target);for(const e of t){if(!e.hash||l(e))continue;const t=z.findOne(decodeURI(e.hash),this._element);a(t)&&(this._targetLinks.set(decodeURI(e.hash),e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(_s),this._activateParents(t),N.trigger(this._element,ps,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))z.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(_s);else for(const e of z.parents(t,".nav, .list-group"))for(const t of z.prev(e,ys))t.classList.add(_s)}_clearActiveClass(t){t.classList.remove(_s);const e=z.find(`${bs}.${_s}`,t);for(const t of e)t.classList.remove(_s)}static jQueryInterface(t){return this.each((function(){const e=Es.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}N.on(window,gs,(()=>{for(const t of z.find('[data-bs-spy="scroll"]'))Es.getOrCreateInstance(t)})),m(Es);const Ts=".bs.tab",Cs=`hide${Ts}`,Os=`hidden${Ts}`,xs=`show${Ts}`,ks=`shown${Ts}`,Ls=`click${Ts}`,Ss=`keydown${Ts}`,Ds=`load${Ts}`,$s="ArrowLeft",Is="ArrowRight",Ns="ArrowUp",Ps="ArrowDown",Ms="Home",js="End",Fs="active",Hs="fade",Ws="show",Bs=":not(.dropdown-toggle)",zs='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',Rs=`.nav-link${Bs}, .list-group-item${Bs}, [role="tab"]${Bs}, ${zs}`,qs=`.${Fs}[data-bs-toggle="tab"], .${Fs}[data-bs-toggle="pill"], .${Fs}[data-bs-toggle="list"]`;class Vs extends W{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),N.on(this._element,Ss,(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?N.trigger(e,Cs,{relatedTarget:t}):null;N.trigger(t,xs,{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(Fs),this._activate(z.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),N.trigger(t,ks,{relatedTarget:e})):t.classList.add(Ws)}),t,t.classList.contains(Hs)))}_deactivate(t,e){t&&(t.classList.remove(Fs),t.blur(),this._deactivate(z.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),N.trigger(t,Os,{relatedTarget:e})):t.classList.remove(Ws)}),t,t.classList.contains(Hs)))}_keydown(t){if(![$s,Is,Ns,Ps,Ms,js].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=this._getChildren().filter((t=>!l(t)));let i;if([Ms,js].includes(t.key))i=e[t.key===Ms?0:e.length-1];else{const n=[Is,Ps].includes(t.key);i=b(e,t.target,n,!0)}i&&(i.focus({preventScroll:!0}),Vs.getOrCreateInstance(i).show())}_getChildren(){return z.find(Rs,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=z.getElementFromSelector(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains("dropdown"))return;const n=(t,n)=>{const s=z.findOne(t,i);s&&s.classList.toggle(n,e)};n(".dropdown-toggle",Fs),n(".dropdown-menu",Ws),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(Fs)}_getInnerElement(t){return t.matches(Rs)?t:z.findOne(Rs,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=Vs.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}N.on(document,Ls,zs,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),l(this)||Vs.getOrCreateInstance(this).show()})),N.on(window,Ds,(()=>{for(const t of z.find(qs))Vs.getOrCreateInstance(t)})),m(Vs);const Ks=".bs.toast",Qs=`mouseover${Ks}`,Xs=`mouseout${Ks}`,Ys=`focusin${Ks}`,Us=`focusout${Ks}`,Gs=`hide${Ks}`,Js=`hidden${Ks}`,Zs=`show${Ks}`,to=`shown${Ks}`,eo="hide",io="show",no="showing",so={animation:"boolean",autohide:"boolean",delay:"number"},oo={animation:!0,autohide:!0,delay:5e3};class ro extends W{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return oo}static get DefaultType(){return so}static get NAME(){return"toast"}show(){N.trigger(this._element,Zs).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(eo),d(this._element),this._element.classList.add(io,no),this._queueCallback((()=>{this._element.classList.remove(no),N.trigger(this._element,to),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&(N.trigger(this._element,Gs).defaultPrevented||(this._element.classList.add(no),this._queueCallback((()=>{this._element.classList.add(eo),this._element.classList.remove(no,io),N.trigger(this._element,Js)}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(io),super.dispose()}isShown(){return this._element.classList.contains(io)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){N.on(this._element,Qs,(t=>this._onInteraction(t,!0))),N.on(this._element,Xs,(t=>this._onInteraction(t,!1))),N.on(this._element,Ys,(t=>this._onInteraction(t,!0))),N.on(this._element,Us,(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=ro.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return R(ro),m(ro),{Alert:Q,Button:Y,Carousel:xt,Collapse:Bt,Dropdown:qi,Modal:On,Offcanvas:qn,Popover:us,ScrollSpy:Es,Tab:Vs,Toast:ro,Tooltip:cs}})); 7 | //# sourceMappingURL=bootstrap.bundle.min.js.map -------------------------------------------------------------------------------- /cartogeoviz17-viry_files/libs/clipboard/clipboard.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * clipboard.js v2.0.11 3 | * https://clipboardjs.com/ 4 | * 5 | * Licensed MIT © Zeno Rocha 6 | */ 7 | !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return b}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),r=n.n(e);function c(t){try{return document.execCommand(t)}catch(t){return}}var a=function(t){t=r()(t);return c("cut"),t};function o(t,e){var n,o,t=(n=t,o="rtl"===document.documentElement.getAttribute("dir"),(t=document.createElement("textarea")).style.fontSize="12pt",t.style.border="0",t.style.padding="0",t.style.margin="0",t.style.position="absolute",t.style[o?"right":"left"]="-9999px",o=window.pageYOffset||document.documentElement.scrollTop,t.style.top="".concat(o,"px"),t.setAttribute("readonly",""),t.value=n,t);return e.container.appendChild(t),e=r()(t),c("copy"),t.remove(),e}var f=function(t){var e=1.anchorjs-link,.anchorjs-link:focus{opacity:1}",A.sheet.cssRules.length),A.sheet.insertRule("[data-anchorjs-icon]::after{content:attr(data-anchorjs-icon)}",A.sheet.cssRules.length),A.sheet.insertRule('@font-face{font-family:anchorjs-icons;src:url(data:n/a;base64,AAEAAAALAIAAAwAwT1MvMg8yG2cAAAE4AAAAYGNtYXDp3gC3AAABpAAAAExnYXNwAAAAEAAAA9wAAAAIZ2x5ZlQCcfwAAAH4AAABCGhlYWQHFvHyAAAAvAAAADZoaGVhBnACFwAAAPQAAAAkaG10eASAADEAAAGYAAAADGxvY2EACACEAAAB8AAAAAhtYXhwAAYAVwAAARgAAAAgbmFtZQGOH9cAAAMAAAAAunBvc3QAAwAAAAADvAAAACAAAQAAAAEAAHzE2p9fDzz1AAkEAAAAAADRecUWAAAAANQA6R8AAAAAAoACwAAAAAgAAgAAAAAAAAABAAADwP/AAAACgAAA/9MCrQABAAAAAAAAAAAAAAAAAAAAAwABAAAAAwBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMCQAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAg//0DwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAAIAAAACgAAxAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADAAAAAIAAgAAgAAACDpy//9//8AAAAg6cv//f///+EWNwADAAEAAAAAAAAAAAAAAAAACACEAAEAAAAAAAAAAAAAAAAxAAACAAQARAKAAsAAKwBUAAABIiYnJjQ3NzY2MzIWFxYUBwcGIicmNDc3NjQnJiYjIgYHBwYUFxYUBwYGIwciJicmNDc3NjIXFhQHBwYUFxYWMzI2Nzc2NCcmNDc2MhcWFAcHBgYjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAAADACWAAEAAAAAAAEACAAAAAEAAAAAAAIAAwAIAAEAAAAAAAMACAAAAAEAAAAAAAQACAAAAAEAAAAAAAUAAQALAAEAAAAAAAYACAAAAAMAAQQJAAEAEAAMAAMAAQQJAAIABgAcAAMAAQQJAAMAEAAMAAMAAQQJAAQAEAAMAAMAAQQJAAUAAgAiAAMAAQQJAAYAEAAMYW5jaG9yanM0MDBAAGEAbgBjAGgAbwByAGoAcwA0ADAAMABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAP) format("truetype")}',A.sheet.cssRules.length)),h=document.querySelectorAll("[id]"),t=[].map.call(h,function(A){return A.id}),i=0;i\]./()*\\\n\t\b\v\u00A0]/g,"-").replace(/-{2,}/g,"-").substring(0,this.options.truncate).replace(/^-+|-+$/gm,"").toLowerCase()},this.hasAnchorJSLink=function(A){var e=A.firstChild&&-1<(" "+A.firstChild.className+" ").indexOf(" anchorjs-link "),A=A.lastChild&&-1<(" "+A.lastChild.className+" ").indexOf(" anchorjs-link ");return e||A||!1}}}); 9 | // @license-end -------------------------------------------------------------------------------- /cartogeoviz17-viry_files/libs/quarto-html/popper.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @popperjs/core v2.11.7 - MIT License 3 | */ 4 | 5 | !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Popper={})}(this,(function(e){"use strict";function t(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function n(e){return e instanceof t(e).Element||e instanceof Element}function r(e){return e instanceof t(e).HTMLElement||e instanceof HTMLElement}function o(e){return"undefined"!=typeof ShadowRoot&&(e instanceof t(e).ShadowRoot||e instanceof ShadowRoot)}var i=Math.max,a=Math.min,s=Math.round;function f(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map((function(e){return e.brand+"/"+e.version})).join(" "):navigator.userAgent}function c(){return!/^((?!chrome|android).)*safari/i.test(f())}function p(e,o,i){void 0===o&&(o=!1),void 0===i&&(i=!1);var a=e.getBoundingClientRect(),f=1,p=1;o&&r(e)&&(f=e.offsetWidth>0&&s(a.width)/e.offsetWidth||1,p=e.offsetHeight>0&&s(a.height)/e.offsetHeight||1);var u=(n(e)?t(e):window).visualViewport,l=!c()&&i,d=(a.left+(l&&u?u.offsetLeft:0))/f,h=(a.top+(l&&u?u.offsetTop:0))/p,m=a.width/f,v=a.height/p;return{width:m,height:v,top:h,right:d+m,bottom:h+v,left:d,x:d,y:h}}function u(e){var n=t(e);return{scrollLeft:n.pageXOffset,scrollTop:n.pageYOffset}}function l(e){return e?(e.nodeName||"").toLowerCase():null}function d(e){return((n(e)?e.ownerDocument:e.document)||window.document).documentElement}function h(e){return p(d(e)).left+u(e).scrollLeft}function m(e){return t(e).getComputedStyle(e)}function v(e){var t=m(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function y(e,n,o){void 0===o&&(o=!1);var i,a,f=r(n),c=r(n)&&function(e){var t=e.getBoundingClientRect(),n=s(t.width)/e.offsetWidth||1,r=s(t.height)/e.offsetHeight||1;return 1!==n||1!==r}(n),m=d(n),y=p(e,c,o),g={scrollLeft:0,scrollTop:0},b={x:0,y:0};return(f||!f&&!o)&&(("body"!==l(n)||v(m))&&(g=(i=n)!==t(i)&&r(i)?{scrollLeft:(a=i).scrollLeft,scrollTop:a.scrollTop}:u(i)),r(n)?((b=p(n,!0)).x+=n.clientLeft,b.y+=n.clientTop):m&&(b.x=h(m))),{x:y.left+g.scrollLeft-b.x,y:y.top+g.scrollTop-b.y,width:y.width,height:y.height}}function g(e){var t=p(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function b(e){return"html"===l(e)?e:e.assignedSlot||e.parentNode||(o(e)?e.host:null)||d(e)}function x(e){return["html","body","#document"].indexOf(l(e))>=0?e.ownerDocument.body:r(e)&&v(e)?e:x(b(e))}function w(e,n){var r;void 0===n&&(n=[]);var o=x(e),i=o===(null==(r=e.ownerDocument)?void 0:r.body),a=t(o),s=i?[a].concat(a.visualViewport||[],v(o)?o:[]):o,f=n.concat(s);return i?f:f.concat(w(b(s)))}function O(e){return["table","td","th"].indexOf(l(e))>=0}function j(e){return r(e)&&"fixed"!==m(e).position?e.offsetParent:null}function E(e){for(var n=t(e),i=j(e);i&&O(i)&&"static"===m(i).position;)i=j(i);return i&&("html"===l(i)||"body"===l(i)&&"static"===m(i).position)?n:i||function(e){var t=/firefox/i.test(f());if(/Trident/i.test(f())&&r(e)&&"fixed"===m(e).position)return null;var n=b(e);for(o(n)&&(n=n.host);r(n)&&["html","body"].indexOf(l(n))<0;){var i=m(n);if("none"!==i.transform||"none"!==i.perspective||"paint"===i.contain||-1!==["transform","perspective"].indexOf(i.willChange)||t&&"filter"===i.willChange||t&&i.filter&&"none"!==i.filter)return n;n=n.parentNode}return null}(e)||n}var D="top",A="bottom",L="right",P="left",M="auto",k=[D,A,L,P],W="start",B="end",H="viewport",T="popper",R=k.reduce((function(e,t){return e.concat([t+"-"+W,t+"-"+B])}),[]),S=[].concat(k,[M]).reduce((function(e,t){return e.concat([t,t+"-"+W,t+"-"+B])}),[]),V=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function q(e){var t=new Map,n=new Set,r=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach((function(e){if(!n.has(e)){var r=t.get(e);r&&o(r)}})),r.push(e)}return e.forEach((function(e){t.set(e.name,e)})),e.forEach((function(e){n.has(e.name)||o(e)})),r}function C(e){return e.split("-")[0]}function N(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&o(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function I(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function _(e,r,o){return r===H?I(function(e,n){var r=t(e),o=d(e),i=r.visualViewport,a=o.clientWidth,s=o.clientHeight,f=0,p=0;if(i){a=i.width,s=i.height;var u=c();(u||!u&&"fixed"===n)&&(f=i.offsetLeft,p=i.offsetTop)}return{width:a,height:s,x:f+h(e),y:p}}(e,o)):n(r)?function(e,t){var n=p(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(r,o):I(function(e){var t,n=d(e),r=u(e),o=null==(t=e.ownerDocument)?void 0:t.body,a=i(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),s=i(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),f=-r.scrollLeft+h(e),c=-r.scrollTop;return"rtl"===m(o||n).direction&&(f+=i(n.clientWidth,o?o.clientWidth:0)-a),{width:a,height:s,x:f,y:c}}(d(e)))}function F(e,t,o,s){var f="clippingParents"===t?function(e){var t=w(b(e)),o=["absolute","fixed"].indexOf(m(e).position)>=0&&r(e)?E(e):e;return n(o)?t.filter((function(e){return n(e)&&N(e,o)&&"body"!==l(e)})):[]}(e):[].concat(t),c=[].concat(f,[o]),p=c[0],u=c.reduce((function(t,n){var r=_(e,n,s);return t.top=i(r.top,t.top),t.right=a(r.right,t.right),t.bottom=a(r.bottom,t.bottom),t.left=i(r.left,t.left),t}),_(e,p,s));return u.width=u.right-u.left,u.height=u.bottom-u.top,u.x=u.left,u.y=u.top,u}function U(e){return e.split("-")[1]}function z(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function X(e){var t,n=e.reference,r=e.element,o=e.placement,i=o?C(o):null,a=o?U(o):null,s=n.x+n.width/2-r.width/2,f=n.y+n.height/2-r.height/2;switch(i){case D:t={x:s,y:n.y-r.height};break;case A:t={x:s,y:n.y+n.height};break;case L:t={x:n.x+n.width,y:f};break;case P:t={x:n.x-r.width,y:f};break;default:t={x:n.x,y:n.y}}var c=i?z(i):null;if(null!=c){var p="y"===c?"height":"width";switch(a){case W:t[c]=t[c]-(n[p]/2-r[p]/2);break;case B:t[c]=t[c]+(n[p]/2-r[p]/2)}}return t}function Y(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function G(e,t){return t.reduce((function(t,n){return t[n]=e,t}),{})}function J(e,t){void 0===t&&(t={});var r=t,o=r.placement,i=void 0===o?e.placement:o,a=r.strategy,s=void 0===a?e.strategy:a,f=r.boundary,c=void 0===f?"clippingParents":f,u=r.rootBoundary,l=void 0===u?H:u,h=r.elementContext,m=void 0===h?T:h,v=r.altBoundary,y=void 0!==v&&v,g=r.padding,b=void 0===g?0:g,x=Y("number"!=typeof b?b:G(b,k)),w=m===T?"reference":T,O=e.rects.popper,j=e.elements[y?w:m],E=F(n(j)?j:j.contextElement||d(e.elements.popper),c,l,s),P=p(e.elements.reference),M=X({reference:P,element:O,strategy:"absolute",placement:i}),W=I(Object.assign({},O,M)),B=m===T?W:P,R={top:E.top-B.top+x.top,bottom:B.bottom-E.bottom+x.bottom,left:E.left-B.left+x.left,right:B.right-E.right+x.right},S=e.modifiersData.offset;if(m===T&&S){var V=S[i];Object.keys(R).forEach((function(e){var t=[L,A].indexOf(e)>=0?1:-1,n=[D,A].indexOf(e)>=0?"y":"x";R[e]+=V[n]*t}))}return R}var K={placement:"bottom",modifiers:[],strategy:"absolute"};function Q(){for(var e=arguments.length,t=new Array(e),n=0;n=0?-1:1,i="function"==typeof n?n(Object.assign({},t,{placement:e})):n,a=i[0],s=i[1];return a=a||0,s=(s||0)*o,[P,L].indexOf(r)>=0?{x:s,y:a}:{x:a,y:s}}(n,t.rects,i),e}),{}),s=a[t.placement],f=s.x,c=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=f,t.modifiersData.popperOffsets.y+=c),t.modifiersData[r]=a}},se={left:"right",right:"left",bottom:"top",top:"bottom"};function fe(e){return e.replace(/left|right|bottom|top/g,(function(e){return se[e]}))}var ce={start:"end",end:"start"};function pe(e){return e.replace(/start|end/g,(function(e){return ce[e]}))}function ue(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=n.boundary,i=n.rootBoundary,a=n.padding,s=n.flipVariations,f=n.allowedAutoPlacements,c=void 0===f?S:f,p=U(r),u=p?s?R:R.filter((function(e){return U(e)===p})):k,l=u.filter((function(e){return c.indexOf(e)>=0}));0===l.length&&(l=u);var d=l.reduce((function(t,n){return t[n]=J(e,{placement:n,boundary:o,rootBoundary:i,padding:a})[C(n)],t}),{});return Object.keys(d).sort((function(e,t){return d[e]-d[t]}))}var le={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,i=void 0===o||o,a=n.altAxis,s=void 0===a||a,f=n.fallbackPlacements,c=n.padding,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.flipVariations,h=void 0===d||d,m=n.allowedAutoPlacements,v=t.options.placement,y=C(v),g=f||(y===v||!h?[fe(v)]:function(e){if(C(e)===M)return[];var t=fe(e);return[pe(e),t,pe(t)]}(v)),b=[v].concat(g).reduce((function(e,n){return e.concat(C(n)===M?ue(t,{placement:n,boundary:p,rootBoundary:u,padding:c,flipVariations:h,allowedAutoPlacements:m}):n)}),[]),x=t.rects.reference,w=t.rects.popper,O=new Map,j=!0,E=b[0],k=0;k=0,S=R?"width":"height",V=J(t,{placement:B,boundary:p,rootBoundary:u,altBoundary:l,padding:c}),q=R?T?L:P:T?A:D;x[S]>w[S]&&(q=fe(q));var N=fe(q),I=[];if(i&&I.push(V[H]<=0),s&&I.push(V[q]<=0,V[N]<=0),I.every((function(e){return e}))){E=B,j=!1;break}O.set(B,I)}if(j)for(var _=function(e){var t=b.find((function(t){var n=O.get(t);if(n)return n.slice(0,e).every((function(e){return e}))}));if(t)return E=t,"break"},F=h?3:1;F>0;F--){if("break"===_(F))break}t.placement!==E&&(t.modifiersData[r]._skip=!0,t.placement=E,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function de(e,t,n){return i(e,a(t,n))}var he={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,s=void 0===o||o,f=n.altAxis,c=void 0!==f&&f,p=n.boundary,u=n.rootBoundary,l=n.altBoundary,d=n.padding,h=n.tether,m=void 0===h||h,v=n.tetherOffset,y=void 0===v?0:v,b=J(t,{boundary:p,rootBoundary:u,padding:d,altBoundary:l}),x=C(t.placement),w=U(t.placement),O=!w,j=z(x),M="x"===j?"y":"x",k=t.modifiersData.popperOffsets,B=t.rects.reference,H=t.rects.popper,T="function"==typeof y?y(Object.assign({},t.rects,{placement:t.placement})):y,R="number"==typeof T?{mainAxis:T,altAxis:T}:Object.assign({mainAxis:0,altAxis:0},T),S=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,V={x:0,y:0};if(k){if(s){var q,N="y"===j?D:P,I="y"===j?A:L,_="y"===j?"height":"width",F=k[j],X=F+b[N],Y=F-b[I],G=m?-H[_]/2:0,K=w===W?B[_]:H[_],Q=w===W?-H[_]:-B[_],Z=t.elements.arrow,$=m&&Z?g(Z):{width:0,height:0},ee=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},te=ee[N],ne=ee[I],re=de(0,B[_],$[_]),oe=O?B[_]/2-G-re-te-R.mainAxis:K-re-te-R.mainAxis,ie=O?-B[_]/2+G+re+ne+R.mainAxis:Q+re+ne+R.mainAxis,ae=t.elements.arrow&&E(t.elements.arrow),se=ae?"y"===j?ae.clientTop||0:ae.clientLeft||0:0,fe=null!=(q=null==S?void 0:S[j])?q:0,ce=F+ie-fe,pe=de(m?a(X,F+oe-fe-se):X,F,m?i(Y,ce):Y);k[j]=pe,V[j]=pe-F}if(c){var ue,le="x"===j?D:P,he="x"===j?A:L,me=k[M],ve="y"===M?"height":"width",ye=me+b[le],ge=me-b[he],be=-1!==[D,P].indexOf(x),xe=null!=(ue=null==S?void 0:S[M])?ue:0,we=be?ye:me-B[ve]-H[ve]-xe+R.altAxis,Oe=be?me+B[ve]+H[ve]-xe-R.altAxis:ge,je=m&&be?function(e,t,n){var r=de(e,t,n);return r>n?n:r}(we,me,Oe):de(m?we:ye,me,m?Oe:ge);k[M]=je,V[M]=je-me}t.modifiersData[r]=V}},requiresIfExists:["offset"]};var me={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,r=e.name,o=e.options,i=n.elements.arrow,a=n.modifiersData.popperOffsets,s=C(n.placement),f=z(s),c=[P,L].indexOf(s)>=0?"height":"width";if(i&&a){var p=function(e,t){return Y("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:G(e,k))}(o.padding,n),u=g(i),l="y"===f?D:P,d="y"===f?A:L,h=n.rects.reference[c]+n.rects.reference[f]-a[f]-n.rects.popper[c],m=a[f]-n.rects.reference[f],v=E(i),y=v?"y"===f?v.clientHeight||0:v.clientWidth||0:0,b=h/2-m/2,x=p[l],w=y-u[c]-p[d],O=y/2-u[c]/2+b,j=de(x,O,w),M=f;n.modifiersData[r]=((t={})[M]=j,t.centerOffset=j-O,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!=typeof r||(r=t.elements.popper.querySelector(r)))&&N(t.elements.popper,r)&&(t.elements.arrow=r)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function ve(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function ye(e){return[D,L,A,P].some((function(t){return e[t]>=0}))}var ge={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,i=t.modifiersData.preventOverflow,a=J(t,{elementContext:"reference"}),s=J(t,{altBoundary:!0}),f=ve(a,r),c=ve(s,o,i),p=ye(f),u=ye(c);t.modifiersData[n]={referenceClippingOffsets:f,popperEscapeOffsets:c,isReferenceHidden:p,hasPopperEscaped:u},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":u})}},be=Z({defaultModifiers:[ee,te,oe,ie]}),xe=[ee,te,oe,ie,ae,le,he,me,ge],we=Z({defaultModifiers:xe});e.applyStyles=ie,e.arrow=me,e.computeStyles=oe,e.createPopper=we,e.createPopperLite=be,e.defaultModifiers=xe,e.detectOverflow=J,e.eventListeners=ee,e.flip=le,e.hide=ge,e.offset=ae,e.popperGenerator=Z,e.popperOffsets=te,e.preventOverflow=he,Object.defineProperty(e,"__esModule",{value:!0})})); 6 | 7 | -------------------------------------------------------------------------------- /cartogeoviz17-viry_files/libs/quarto-html/quarto-syntax-highlighting.css: -------------------------------------------------------------------------------- 1 | /* quarto syntax highlight colors */ 2 | :root { 3 | --quarto-hl-ot-color: #003B4F; 4 | --quarto-hl-at-color: #657422; 5 | --quarto-hl-ss-color: #20794D; 6 | --quarto-hl-an-color: #5E5E5E; 7 | --quarto-hl-fu-color: #4758AB; 8 | --quarto-hl-st-color: #20794D; 9 | --quarto-hl-cf-color: #003B4F; 10 | --quarto-hl-op-color: #5E5E5E; 11 | --quarto-hl-er-color: #AD0000; 12 | --quarto-hl-bn-color: #AD0000; 13 | --quarto-hl-al-color: #AD0000; 14 | --quarto-hl-va-color: #111111; 15 | --quarto-hl-bu-color: inherit; 16 | --quarto-hl-ex-color: inherit; 17 | --quarto-hl-pp-color: #AD0000; 18 | --quarto-hl-in-color: #5E5E5E; 19 | --quarto-hl-vs-color: #20794D; 20 | --quarto-hl-wa-color: #5E5E5E; 21 | --quarto-hl-do-color: #5E5E5E; 22 | --quarto-hl-im-color: #00769E; 23 | --quarto-hl-ch-color: #20794D; 24 | --quarto-hl-dt-color: #AD0000; 25 | --quarto-hl-fl-color: #AD0000; 26 | --quarto-hl-co-color: #5E5E5E; 27 | --quarto-hl-cv-color: #5E5E5E; 28 | --quarto-hl-cn-color: #8f5902; 29 | --quarto-hl-sc-color: #5E5E5E; 30 | --quarto-hl-dv-color: #AD0000; 31 | --quarto-hl-kw-color: #003B4F; 32 | } 33 | 34 | /* other quarto variables */ 35 | :root { 36 | --quarto-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; 37 | } 38 | 39 | pre > code.sourceCode > span { 40 | color: #003B4F; 41 | } 42 | 43 | code span { 44 | color: #003B4F; 45 | } 46 | 47 | code.sourceCode > span { 48 | color: #003B4F; 49 | } 50 | 51 | div.sourceCode, 52 | div.sourceCode pre.sourceCode { 53 | color: #003B4F; 54 | } 55 | 56 | code span.ot { 57 | color: #003B4F; 58 | font-style: inherit; 59 | } 60 | 61 | code span.at { 62 | color: #657422; 63 | font-style: inherit; 64 | } 65 | 66 | code span.ss { 67 | color: #20794D; 68 | font-style: inherit; 69 | } 70 | 71 | code span.an { 72 | color: #5E5E5E; 73 | font-style: inherit; 74 | } 75 | 76 | code span.fu { 77 | color: #4758AB; 78 | font-style: inherit; 79 | } 80 | 81 | code span.st { 82 | color: #20794D; 83 | font-style: inherit; 84 | } 85 | 86 | code span.cf { 87 | color: #003B4F; 88 | font-style: inherit; 89 | } 90 | 91 | code span.op { 92 | color: #5E5E5E; 93 | font-style: inherit; 94 | } 95 | 96 | code span.er { 97 | color: #AD0000; 98 | font-style: inherit; 99 | } 100 | 101 | code span.bn { 102 | color: #AD0000; 103 | font-style: inherit; 104 | } 105 | 106 | code span.al { 107 | color: #AD0000; 108 | font-style: inherit; 109 | } 110 | 111 | code span.va { 112 | color: #111111; 113 | font-style: inherit; 114 | } 115 | 116 | code span.bu { 117 | font-style: inherit; 118 | } 119 | 120 | code span.ex { 121 | font-style: inherit; 122 | } 123 | 124 | code span.pp { 125 | color: #AD0000; 126 | font-style: inherit; 127 | } 128 | 129 | code span.in { 130 | color: #5E5E5E; 131 | font-style: inherit; 132 | } 133 | 134 | code span.vs { 135 | color: #20794D; 136 | font-style: inherit; 137 | } 138 | 139 | code span.wa { 140 | color: #5E5E5E; 141 | font-style: italic; 142 | } 143 | 144 | code span.do { 145 | color: #5E5E5E; 146 | font-style: italic; 147 | } 148 | 149 | code span.im { 150 | color: #00769E; 151 | font-style: inherit; 152 | } 153 | 154 | code span.ch { 155 | color: #20794D; 156 | font-style: inherit; 157 | } 158 | 159 | code span.dt { 160 | color: #AD0000; 161 | font-style: inherit; 162 | } 163 | 164 | code span.fl { 165 | color: #AD0000; 166 | font-style: inherit; 167 | } 168 | 169 | code span.co { 170 | color: #5E5E5E; 171 | font-style: inherit; 172 | } 173 | 174 | code span.cv { 175 | color: #5E5E5E; 176 | font-style: italic; 177 | } 178 | 179 | code span.cn { 180 | color: #8f5902; 181 | font-style: inherit; 182 | } 183 | 184 | code span.sc { 185 | color: #5E5E5E; 186 | font-style: inherit; 187 | } 188 | 189 | code span.dv { 190 | color: #AD0000; 191 | font-style: inherit; 192 | } 193 | 194 | code span.kw { 195 | color: #003B4F; 196 | font-style: inherit; 197 | } 198 | 199 | .prevent-inlining { 200 | content: " { 9 | // Find any conflicting margin elements and add margins to the 10 | // top to prevent overlap 11 | const marginChildren = window.document.querySelectorAll( 12 | ".column-margin.column-container > *, .margin-caption, .aside" 13 | ); 14 | 15 | let lastBottom = 0; 16 | for (const marginChild of marginChildren) { 17 | if (marginChild.offsetParent !== null) { 18 | // clear the top margin so we recompute it 19 | marginChild.style.marginTop = null; 20 | const top = marginChild.getBoundingClientRect().top + window.scrollY; 21 | if (top < lastBottom) { 22 | const marginChildStyle = window.getComputedStyle(marginChild); 23 | const marginBottom = parseFloat(marginChildStyle["marginBottom"]); 24 | const margin = lastBottom - top + marginBottom; 25 | marginChild.style.marginTop = `${margin}px`; 26 | } 27 | const styles = window.getComputedStyle(marginChild); 28 | const marginTop = parseFloat(styles["marginTop"]); 29 | lastBottom = top + marginChild.getBoundingClientRect().height + marginTop; 30 | } 31 | } 32 | }; 33 | 34 | window.document.addEventListener("DOMContentLoaded", function (_event) { 35 | // Recompute the position of margin elements anytime the body size changes 36 | if (window.ResizeObserver) { 37 | const resizeObserver = new window.ResizeObserver( 38 | throttle(() => { 39 | layoutMarginEls(); 40 | if ( 41 | window.document.body.getBoundingClientRect().width < 990 && 42 | isReaderMode() 43 | ) { 44 | quartoToggleReader(); 45 | } 46 | }, 50) 47 | ); 48 | resizeObserver.observe(window.document.body); 49 | } 50 | 51 | const tocEl = window.document.querySelector('nav.toc-active[role="doc-toc"]'); 52 | const sidebarEl = window.document.getElementById("quarto-sidebar"); 53 | const leftTocEl = window.document.getElementById("quarto-sidebar-toc-left"); 54 | const marginSidebarEl = window.document.getElementById( 55 | "quarto-margin-sidebar" 56 | ); 57 | // function to determine whether the element has a previous sibling that is active 58 | const prevSiblingIsActiveLink = (el) => { 59 | const sibling = el.previousElementSibling; 60 | if (sibling && sibling.tagName === "A") { 61 | return sibling.classList.contains("active"); 62 | } else { 63 | return false; 64 | } 65 | }; 66 | 67 | // fire slideEnter for bootstrap tab activations (for htmlwidget resize behavior) 68 | function fireSlideEnter(e) { 69 | const event = window.document.createEvent("Event"); 70 | event.initEvent("slideenter", true, true); 71 | window.document.dispatchEvent(event); 72 | } 73 | const tabs = window.document.querySelectorAll('a[data-bs-toggle="tab"]'); 74 | tabs.forEach((tab) => { 75 | tab.addEventListener("shown.bs.tab", fireSlideEnter); 76 | }); 77 | 78 | // fire slideEnter for tabby tab activations (for htmlwidget resize behavior) 79 | document.addEventListener("tabby", fireSlideEnter, false); 80 | 81 | // Track scrolling and mark TOC links as active 82 | // get table of contents and sidebar (bail if we don't have at least one) 83 | const tocLinks = tocEl 84 | ? [...tocEl.querySelectorAll("a[data-scroll-target]")] 85 | : []; 86 | const makeActive = (link) => tocLinks[link].classList.add("active"); 87 | const removeActive = (link) => tocLinks[link].classList.remove("active"); 88 | const removeAllActive = () => 89 | [...Array(tocLinks.length).keys()].forEach((link) => removeActive(link)); 90 | 91 | // activate the anchor for a section associated with this TOC entry 92 | tocLinks.forEach((link) => { 93 | link.addEventListener("click", () => { 94 | if (link.href.indexOf("#") !== -1) { 95 | const anchor = link.href.split("#")[1]; 96 | const heading = window.document.querySelector( 97 | `[data-anchor-id=${anchor}]` 98 | ); 99 | if (heading) { 100 | // Add the class 101 | heading.classList.add("reveal-anchorjs-link"); 102 | 103 | // function to show the anchor 104 | const handleMouseout = () => { 105 | heading.classList.remove("reveal-anchorjs-link"); 106 | heading.removeEventListener("mouseout", handleMouseout); 107 | }; 108 | 109 | // add a function to clear the anchor when the user mouses out of it 110 | heading.addEventListener("mouseout", handleMouseout); 111 | } 112 | } 113 | }); 114 | }); 115 | 116 | const sections = tocLinks.map((link) => { 117 | const target = link.getAttribute("data-scroll-target"); 118 | if (target.startsWith("#")) { 119 | return window.document.getElementById(decodeURI(`${target.slice(1)}`)); 120 | } else { 121 | return window.document.querySelector(decodeURI(`${target}`)); 122 | } 123 | }); 124 | 125 | const sectionMargin = 200; 126 | let currentActive = 0; 127 | // track whether we've initialized state the first time 128 | let init = false; 129 | 130 | const updateActiveLink = () => { 131 | // The index from bottom to top (e.g. reversed list) 132 | let sectionIndex = -1; 133 | if ( 134 | window.innerHeight + window.pageYOffset >= 135 | window.document.body.offsetHeight 136 | ) { 137 | sectionIndex = 0; 138 | } else { 139 | sectionIndex = [...sections].reverse().findIndex((section) => { 140 | if (section) { 141 | return window.pageYOffset >= section.offsetTop - sectionMargin; 142 | } else { 143 | return false; 144 | } 145 | }); 146 | } 147 | if (sectionIndex > -1) { 148 | const current = sections.length - sectionIndex - 1; 149 | if (current !== currentActive) { 150 | removeAllActive(); 151 | currentActive = current; 152 | makeActive(current); 153 | if (init) { 154 | window.dispatchEvent(sectionChanged); 155 | } 156 | init = true; 157 | } 158 | } 159 | }; 160 | 161 | const inHiddenRegion = (top, bottom, hiddenRegions) => { 162 | for (const region of hiddenRegions) { 163 | if (top <= region.bottom && bottom >= region.top) { 164 | return true; 165 | } 166 | } 167 | return false; 168 | }; 169 | 170 | const categorySelector = "header.quarto-title-block .quarto-category"; 171 | const activateCategories = (href) => { 172 | // Find any categories 173 | // Surround them with a link pointing back to: 174 | // #category=Authoring 175 | try { 176 | const categoryEls = window.document.querySelectorAll(categorySelector); 177 | for (const categoryEl of categoryEls) { 178 | const categoryText = categoryEl.textContent; 179 | if (categoryText) { 180 | const link = `${href}#category=${encodeURIComponent(categoryText)}`; 181 | const linkEl = window.document.createElement("a"); 182 | linkEl.setAttribute("href", link); 183 | for (const child of categoryEl.childNodes) { 184 | linkEl.append(child); 185 | } 186 | categoryEl.appendChild(linkEl); 187 | } 188 | } 189 | } catch { 190 | // Ignore errors 191 | } 192 | }; 193 | function hasTitleCategories() { 194 | return window.document.querySelector(categorySelector) !== null; 195 | } 196 | 197 | function offsetRelativeUrl(url) { 198 | const offset = getMeta("quarto:offset"); 199 | return offset ? offset + url : url; 200 | } 201 | 202 | function offsetAbsoluteUrl(url) { 203 | const offset = getMeta("quarto:offset"); 204 | const baseUrl = new URL(offset, window.location); 205 | 206 | const projRelativeUrl = url.replace(baseUrl, ""); 207 | if (projRelativeUrl.startsWith("/")) { 208 | return projRelativeUrl; 209 | } else { 210 | return "/" + projRelativeUrl; 211 | } 212 | } 213 | 214 | // read a meta tag value 215 | function getMeta(metaName) { 216 | const metas = window.document.getElementsByTagName("meta"); 217 | for (let i = 0; i < metas.length; i++) { 218 | if (metas[i].getAttribute("name") === metaName) { 219 | return metas[i].getAttribute("content"); 220 | } 221 | } 222 | return ""; 223 | } 224 | 225 | async function findAndActivateCategories() { 226 | const currentPagePath = offsetAbsoluteUrl(window.location.href); 227 | const response = await fetch(offsetRelativeUrl("listings.json")); 228 | if (response.status == 200) { 229 | return response.json().then(function (listingPaths) { 230 | const listingHrefs = []; 231 | for (const listingPath of listingPaths) { 232 | const pathWithoutLeadingSlash = listingPath.listing.substring(1); 233 | for (const item of listingPath.items) { 234 | if ( 235 | item === currentPagePath || 236 | item === currentPagePath + "index.html" 237 | ) { 238 | // Resolve this path against the offset to be sure 239 | // we already are using the correct path to the listing 240 | // (this adjusts the listing urls to be rooted against 241 | // whatever root the page is actually running against) 242 | const relative = offsetRelativeUrl(pathWithoutLeadingSlash); 243 | const baseUrl = window.location; 244 | const resolvedPath = new URL(relative, baseUrl); 245 | listingHrefs.push(resolvedPath.pathname); 246 | break; 247 | } 248 | } 249 | } 250 | 251 | // Look up the tree for a nearby linting and use that if we find one 252 | const nearestListing = findNearestParentListing( 253 | offsetAbsoluteUrl(window.location.pathname), 254 | listingHrefs 255 | ); 256 | if (nearestListing) { 257 | activateCategories(nearestListing); 258 | } else { 259 | // See if the referrer is a listing page for this item 260 | const referredRelativePath = offsetAbsoluteUrl(document.referrer); 261 | const referrerListing = listingHrefs.find((listingHref) => { 262 | const isListingReferrer = 263 | listingHref === referredRelativePath || 264 | listingHref === referredRelativePath + "index.html"; 265 | return isListingReferrer; 266 | }); 267 | 268 | if (referrerListing) { 269 | // Try to use the referrer if possible 270 | activateCategories(referrerListing); 271 | } else if (listingHrefs.length > 0) { 272 | // Otherwise, just fall back to the first listing 273 | activateCategories(listingHrefs[0]); 274 | } 275 | } 276 | }); 277 | } 278 | } 279 | if (hasTitleCategories()) { 280 | findAndActivateCategories(); 281 | } 282 | 283 | const findNearestParentListing = (href, listingHrefs) => { 284 | if (!href || !listingHrefs) { 285 | return undefined; 286 | } 287 | // Look up the tree for a nearby linting and use that if we find one 288 | const relativeParts = href.substring(1).split("/"); 289 | while (relativeParts.length > 0) { 290 | const path = relativeParts.join("/"); 291 | for (const listingHref of listingHrefs) { 292 | if (listingHref.startsWith(path)) { 293 | return listingHref; 294 | } 295 | } 296 | relativeParts.pop(); 297 | } 298 | 299 | return undefined; 300 | }; 301 | 302 | const manageSidebarVisiblity = (el, placeholderDescriptor) => { 303 | let isVisible = true; 304 | let elRect; 305 | 306 | return (hiddenRegions) => { 307 | if (el === null) { 308 | return; 309 | } 310 | 311 | // Find the last element of the TOC 312 | const lastChildEl = el.lastElementChild; 313 | 314 | if (lastChildEl) { 315 | // Converts the sidebar to a menu 316 | const convertToMenu = () => { 317 | for (const child of el.children) { 318 | child.style.opacity = 0; 319 | child.style.overflow = "hidden"; 320 | } 321 | 322 | nexttick(() => { 323 | const toggleContainer = window.document.createElement("div"); 324 | toggleContainer.style.width = "100%"; 325 | toggleContainer.classList.add("zindex-over-content"); 326 | toggleContainer.classList.add("quarto-sidebar-toggle"); 327 | toggleContainer.classList.add("headroom-target"); // Marks this to be managed by headeroom 328 | toggleContainer.id = placeholderDescriptor.id; 329 | toggleContainer.style.position = "fixed"; 330 | 331 | const toggleIcon = window.document.createElement("i"); 332 | toggleIcon.classList.add("quarto-sidebar-toggle-icon"); 333 | toggleIcon.classList.add("bi"); 334 | toggleIcon.classList.add("bi-caret-down-fill"); 335 | 336 | const toggleTitle = window.document.createElement("div"); 337 | const titleEl = window.document.body.querySelector( 338 | placeholderDescriptor.titleSelector 339 | ); 340 | if (titleEl) { 341 | toggleTitle.append( 342 | titleEl.textContent || titleEl.innerText, 343 | toggleIcon 344 | ); 345 | } 346 | toggleTitle.classList.add("zindex-over-content"); 347 | toggleTitle.classList.add("quarto-sidebar-toggle-title"); 348 | toggleContainer.append(toggleTitle); 349 | 350 | const toggleContents = window.document.createElement("div"); 351 | toggleContents.classList = el.classList; 352 | toggleContents.classList.add("zindex-over-content"); 353 | toggleContents.classList.add("quarto-sidebar-toggle-contents"); 354 | for (const child of el.children) { 355 | if (child.id === "toc-title") { 356 | continue; 357 | } 358 | 359 | const clone = child.cloneNode(true); 360 | clone.style.opacity = 1; 361 | clone.style.display = null; 362 | toggleContents.append(clone); 363 | } 364 | toggleContents.style.height = "0px"; 365 | const positionToggle = () => { 366 | // position the element (top left of parent, same width as parent) 367 | if (!elRect) { 368 | elRect = el.getBoundingClientRect(); 369 | } 370 | toggleContainer.style.left = `${elRect.left}px`; 371 | toggleContainer.style.top = `${elRect.top}px`; 372 | toggleContainer.style.width = `${elRect.width}px`; 373 | }; 374 | positionToggle(); 375 | 376 | toggleContainer.append(toggleContents); 377 | el.parentElement.prepend(toggleContainer); 378 | 379 | // Process clicks 380 | let tocShowing = false; 381 | // Allow the caller to control whether this is dismissed 382 | // when it is clicked (e.g. sidebar navigation supports 383 | // opening and closing the nav tree, so don't dismiss on click) 384 | const clickEl = placeholderDescriptor.dismissOnClick 385 | ? toggleContainer 386 | : toggleTitle; 387 | 388 | const closeToggle = () => { 389 | if (tocShowing) { 390 | toggleContainer.classList.remove("expanded"); 391 | toggleContents.style.height = "0px"; 392 | tocShowing = false; 393 | } 394 | }; 395 | 396 | // Get rid of any expanded toggle if the user scrolls 397 | window.document.addEventListener( 398 | "scroll", 399 | throttle(() => { 400 | closeToggle(); 401 | }, 50) 402 | ); 403 | 404 | // Handle positioning of the toggle 405 | window.addEventListener( 406 | "resize", 407 | throttle(() => { 408 | elRect = undefined; 409 | positionToggle(); 410 | }, 50) 411 | ); 412 | 413 | window.addEventListener("quarto-hrChanged", () => { 414 | elRect = undefined; 415 | }); 416 | 417 | // Process the click 418 | clickEl.onclick = () => { 419 | if (!tocShowing) { 420 | toggleContainer.classList.add("expanded"); 421 | toggleContents.style.height = null; 422 | tocShowing = true; 423 | } else { 424 | closeToggle(); 425 | } 426 | }; 427 | }); 428 | }; 429 | 430 | // Converts a sidebar from a menu back to a sidebar 431 | const convertToSidebar = () => { 432 | for (const child of el.children) { 433 | child.style.opacity = 1; 434 | child.style.overflow = null; 435 | } 436 | 437 | const placeholderEl = window.document.getElementById( 438 | placeholderDescriptor.id 439 | ); 440 | if (placeholderEl) { 441 | placeholderEl.remove(); 442 | } 443 | 444 | el.classList.remove("rollup"); 445 | }; 446 | 447 | if (isReaderMode()) { 448 | convertToMenu(); 449 | isVisible = false; 450 | } else { 451 | // Find the top and bottom o the element that is being managed 452 | const elTop = el.offsetTop; 453 | const elBottom = 454 | elTop + lastChildEl.offsetTop + lastChildEl.offsetHeight; 455 | 456 | if (!isVisible) { 457 | // If the element is current not visible reveal if there are 458 | // no conflicts with overlay regions 459 | if (!inHiddenRegion(elTop, elBottom, hiddenRegions)) { 460 | convertToSidebar(); 461 | isVisible = true; 462 | } 463 | } else { 464 | // If the element is visible, hide it if it conflicts with overlay regions 465 | // and insert a placeholder toggle (or if we're in reader mode) 466 | if (inHiddenRegion(elTop, elBottom, hiddenRegions)) { 467 | convertToMenu(); 468 | isVisible = false; 469 | } 470 | } 471 | } 472 | } 473 | }; 474 | }; 475 | 476 | const tabEls = document.querySelectorAll('a[data-bs-toggle="tab"]'); 477 | for (const tabEl of tabEls) { 478 | const id = tabEl.getAttribute("data-bs-target"); 479 | if (id) { 480 | const columnEl = document.querySelector( 481 | `${id} .column-margin, .tabset-margin-content` 482 | ); 483 | if (columnEl) 484 | tabEl.addEventListener("shown.bs.tab", function (event) { 485 | const el = event.srcElement; 486 | if (el) { 487 | const visibleCls = `${el.id}-margin-content`; 488 | // walk up until we find a parent tabset 489 | let panelTabsetEl = el.parentElement; 490 | while (panelTabsetEl) { 491 | if (panelTabsetEl.classList.contains("panel-tabset")) { 492 | break; 493 | } 494 | panelTabsetEl = panelTabsetEl.parentElement; 495 | } 496 | 497 | if (panelTabsetEl) { 498 | const prevSib = panelTabsetEl.previousElementSibling; 499 | if ( 500 | prevSib && 501 | prevSib.classList.contains("tabset-margin-container") 502 | ) { 503 | const childNodes = prevSib.querySelectorAll( 504 | ".tabset-margin-content" 505 | ); 506 | for (const childEl of childNodes) { 507 | if (childEl.classList.contains(visibleCls)) { 508 | childEl.classList.remove("collapse"); 509 | } else { 510 | childEl.classList.add("collapse"); 511 | } 512 | } 513 | } 514 | } 515 | } 516 | 517 | layoutMarginEls(); 518 | }); 519 | } 520 | } 521 | 522 | // Manage the visibility of the toc and the sidebar 523 | const marginScrollVisibility = manageSidebarVisiblity(marginSidebarEl, { 524 | id: "quarto-toc-toggle", 525 | titleSelector: "#toc-title", 526 | dismissOnClick: true, 527 | }); 528 | const sidebarScrollVisiblity = manageSidebarVisiblity(sidebarEl, { 529 | id: "quarto-sidebarnav-toggle", 530 | titleSelector: ".title", 531 | dismissOnClick: false, 532 | }); 533 | let tocLeftScrollVisibility; 534 | if (leftTocEl) { 535 | tocLeftScrollVisibility = manageSidebarVisiblity(leftTocEl, { 536 | id: "quarto-lefttoc-toggle", 537 | titleSelector: "#toc-title", 538 | dismissOnClick: true, 539 | }); 540 | } 541 | 542 | // Find the first element that uses formatting in special columns 543 | const conflictingEls = window.document.body.querySelectorAll( 544 | '[class^="column-"], [class*=" column-"], aside, [class*="margin-caption"], [class*=" margin-caption"], [class*="margin-ref"], [class*=" margin-ref"]' 545 | ); 546 | 547 | // Filter all the possibly conflicting elements into ones 548 | // the do conflict on the left or ride side 549 | const arrConflictingEls = Array.from(conflictingEls); 550 | const leftSideConflictEls = arrConflictingEls.filter((el) => { 551 | if (el.tagName === "ASIDE") { 552 | return false; 553 | } 554 | return Array.from(el.classList).find((className) => { 555 | return ( 556 | className !== "column-body" && 557 | className.startsWith("column-") && 558 | !className.endsWith("right") && 559 | !className.endsWith("container") && 560 | className !== "column-margin" 561 | ); 562 | }); 563 | }); 564 | const rightSideConflictEls = arrConflictingEls.filter((el) => { 565 | if (el.tagName === "ASIDE") { 566 | return true; 567 | } 568 | 569 | const hasMarginCaption = Array.from(el.classList).find((className) => { 570 | return className == "margin-caption"; 571 | }); 572 | if (hasMarginCaption) { 573 | return true; 574 | } 575 | 576 | return Array.from(el.classList).find((className) => { 577 | return ( 578 | className !== "column-body" && 579 | !className.endsWith("container") && 580 | className.startsWith("column-") && 581 | !className.endsWith("left") 582 | ); 583 | }); 584 | }); 585 | 586 | const kOverlapPaddingSize = 10; 587 | function toRegions(els) { 588 | return els.map((el) => { 589 | const boundRect = el.getBoundingClientRect(); 590 | const top = 591 | boundRect.top + 592 | document.documentElement.scrollTop - 593 | kOverlapPaddingSize; 594 | return { 595 | top, 596 | bottom: top + el.scrollHeight + 2 * kOverlapPaddingSize, 597 | }; 598 | }); 599 | } 600 | 601 | let hasObserved = false; 602 | const visibleItemObserver = (els) => { 603 | let visibleElements = [...els]; 604 | const intersectionObserver = new IntersectionObserver( 605 | (entries, _observer) => { 606 | entries.forEach((entry) => { 607 | if (entry.isIntersecting) { 608 | if (visibleElements.indexOf(entry.target) === -1) { 609 | visibleElements.push(entry.target); 610 | } 611 | } else { 612 | visibleElements = visibleElements.filter((visibleEntry) => { 613 | return visibleEntry !== entry; 614 | }); 615 | } 616 | }); 617 | 618 | if (!hasObserved) { 619 | hideOverlappedSidebars(); 620 | } 621 | hasObserved = true; 622 | }, 623 | {} 624 | ); 625 | els.forEach((el) => { 626 | intersectionObserver.observe(el); 627 | }); 628 | 629 | return { 630 | getVisibleEntries: () => { 631 | return visibleElements; 632 | }, 633 | }; 634 | }; 635 | 636 | const rightElementObserver = visibleItemObserver(rightSideConflictEls); 637 | const leftElementObserver = visibleItemObserver(leftSideConflictEls); 638 | 639 | const hideOverlappedSidebars = () => { 640 | marginScrollVisibility(toRegions(rightElementObserver.getVisibleEntries())); 641 | sidebarScrollVisiblity(toRegions(leftElementObserver.getVisibleEntries())); 642 | if (tocLeftScrollVisibility) { 643 | tocLeftScrollVisibility( 644 | toRegions(leftElementObserver.getVisibleEntries()) 645 | ); 646 | } 647 | }; 648 | 649 | window.quartoToggleReader = () => { 650 | // Applies a slow class (or removes it) 651 | // to update the transition speed 652 | const slowTransition = (slow) => { 653 | const manageTransition = (id, slow) => { 654 | const el = document.getElementById(id); 655 | if (el) { 656 | if (slow) { 657 | el.classList.add("slow"); 658 | } else { 659 | el.classList.remove("slow"); 660 | } 661 | } 662 | }; 663 | 664 | manageTransition("TOC", slow); 665 | manageTransition("quarto-sidebar", slow); 666 | }; 667 | const readerMode = !isReaderMode(); 668 | setReaderModeValue(readerMode); 669 | 670 | // If we're entering reader mode, slow the transition 671 | if (readerMode) { 672 | slowTransition(readerMode); 673 | } 674 | highlightReaderToggle(readerMode); 675 | hideOverlappedSidebars(); 676 | 677 | // If we're exiting reader mode, restore the non-slow transition 678 | if (!readerMode) { 679 | slowTransition(!readerMode); 680 | } 681 | }; 682 | 683 | const highlightReaderToggle = (readerMode) => { 684 | const els = document.querySelectorAll(".quarto-reader-toggle"); 685 | if (els) { 686 | els.forEach((el) => { 687 | if (readerMode) { 688 | el.classList.add("reader"); 689 | } else { 690 | el.classList.remove("reader"); 691 | } 692 | }); 693 | } 694 | }; 695 | 696 | const setReaderModeValue = (val) => { 697 | if (window.location.protocol !== "file:") { 698 | window.localStorage.setItem("quarto-reader-mode", val); 699 | } else { 700 | localReaderMode = val; 701 | } 702 | }; 703 | 704 | const isReaderMode = () => { 705 | if (window.location.protocol !== "file:") { 706 | return window.localStorage.getItem("quarto-reader-mode") === "true"; 707 | } else { 708 | return localReaderMode; 709 | } 710 | }; 711 | let localReaderMode = null; 712 | 713 | const tocOpenDepthStr = tocEl?.getAttribute("data-toc-expanded"); 714 | const tocOpenDepth = tocOpenDepthStr ? Number(tocOpenDepthStr) : 1; 715 | 716 | // Walk the TOC and collapse/expand nodes 717 | // Nodes are expanded if: 718 | // - they are top level 719 | // - they have children that are 'active' links 720 | // - they are directly below an link that is 'active' 721 | const walk = (el, depth) => { 722 | // Tick depth when we enter a UL 723 | if (el.tagName === "UL") { 724 | depth = depth + 1; 725 | } 726 | 727 | // It this is active link 728 | let isActiveNode = false; 729 | if (el.tagName === "A" && el.classList.contains("active")) { 730 | isActiveNode = true; 731 | } 732 | 733 | // See if there is an active child to this element 734 | let hasActiveChild = false; 735 | for (child of el.children) { 736 | hasActiveChild = walk(child, depth) || hasActiveChild; 737 | } 738 | 739 | // Process the collapse state if this is an UL 740 | if (el.tagName === "UL") { 741 | if (tocOpenDepth === -1 && depth > 1) { 742 | el.classList.add("collapse"); 743 | } else if ( 744 | depth <= tocOpenDepth || 745 | hasActiveChild || 746 | prevSiblingIsActiveLink(el) 747 | ) { 748 | el.classList.remove("collapse"); 749 | } else { 750 | el.classList.add("collapse"); 751 | } 752 | 753 | // untick depth when we leave a UL 754 | depth = depth - 1; 755 | } 756 | return hasActiveChild || isActiveNode; 757 | }; 758 | 759 | // walk the TOC and expand / collapse any items that should be shown 760 | 761 | if (tocEl) { 762 | walk(tocEl, 0); 763 | updateActiveLink(); 764 | } 765 | 766 | // Throttle the scroll event and walk peridiocally 767 | window.document.addEventListener( 768 | "scroll", 769 | throttle(() => { 770 | if (tocEl) { 771 | updateActiveLink(); 772 | walk(tocEl, 0); 773 | } 774 | if (!isReaderMode()) { 775 | hideOverlappedSidebars(); 776 | } 777 | }, 5) 778 | ); 779 | window.addEventListener( 780 | "resize", 781 | throttle(() => { 782 | if (!isReaderMode()) { 783 | hideOverlappedSidebars(); 784 | } 785 | }, 10) 786 | ); 787 | hideOverlappedSidebars(); 788 | highlightReaderToggle(isReaderMode()); 789 | }); 790 | 791 | // grouped tabsets 792 | window.addEventListener("pageshow", (_event) => { 793 | function getTabSettings() { 794 | const data = localStorage.getItem("quarto-persistent-tabsets-data"); 795 | if (!data) { 796 | localStorage.setItem("quarto-persistent-tabsets-data", "{}"); 797 | return {}; 798 | } 799 | if (data) { 800 | return JSON.parse(data); 801 | } 802 | } 803 | 804 | function setTabSettings(data) { 805 | localStorage.setItem( 806 | "quarto-persistent-tabsets-data", 807 | JSON.stringify(data) 808 | ); 809 | } 810 | 811 | function setTabState(groupName, groupValue) { 812 | const data = getTabSettings(); 813 | data[groupName] = groupValue; 814 | setTabSettings(data); 815 | } 816 | 817 | function toggleTab(tab, active) { 818 | const tabPanelId = tab.getAttribute("aria-controls"); 819 | const tabPanel = document.getElementById(tabPanelId); 820 | if (active) { 821 | tab.classList.add("active"); 822 | tabPanel.classList.add("active"); 823 | } else { 824 | tab.classList.remove("active"); 825 | tabPanel.classList.remove("active"); 826 | } 827 | } 828 | 829 | function toggleAll(selectedGroup, selectorsToSync) { 830 | for (const [thisGroup, tabs] of Object.entries(selectorsToSync)) { 831 | const active = selectedGroup === thisGroup; 832 | for (const tab of tabs) { 833 | toggleTab(tab, active); 834 | } 835 | } 836 | } 837 | 838 | function findSelectorsToSyncByLanguage() { 839 | const result = {}; 840 | const tabs = Array.from( 841 | document.querySelectorAll(`div[data-group] a[id^='tabset-']`) 842 | ); 843 | for (const item of tabs) { 844 | const div = item.parentElement.parentElement.parentElement; 845 | const group = div.getAttribute("data-group"); 846 | if (!result[group]) { 847 | result[group] = {}; 848 | } 849 | const selectorsToSync = result[group]; 850 | const value = item.innerHTML; 851 | if (!selectorsToSync[value]) { 852 | selectorsToSync[value] = []; 853 | } 854 | selectorsToSync[value].push(item); 855 | } 856 | return result; 857 | } 858 | 859 | function setupSelectorSync() { 860 | const selectorsToSync = findSelectorsToSyncByLanguage(); 861 | Object.entries(selectorsToSync).forEach(([group, tabSetsByValue]) => { 862 | Object.entries(tabSetsByValue).forEach(([value, items]) => { 863 | items.forEach((item) => { 864 | item.addEventListener("click", (_event) => { 865 | setTabState(group, value); 866 | toggleAll(value, selectorsToSync[group]); 867 | }); 868 | }); 869 | }); 870 | }); 871 | return selectorsToSync; 872 | } 873 | 874 | const selectorsToSync = setupSelectorSync(); 875 | for (const [group, selectedName] of Object.entries(getTabSettings())) { 876 | const selectors = selectorsToSync[group]; 877 | // it's possible that stale state gives us empty selections, so we explicitly check here. 878 | if (selectors) { 879 | toggleAll(selectedName, selectors); 880 | } 881 | } 882 | }); 883 | 884 | function throttle(func, wait) { 885 | let waiting = false; 886 | return function () { 887 | if (!waiting) { 888 | func.apply(this, arguments); 889 | waiting = true; 890 | setTimeout(function () { 891 | waiting = false; 892 | }, wait); 893 | } 894 | }; 895 | } 896 | 897 | function nexttick(func) { 898 | return setTimeout(func, 0); 899 | } 900 | -------------------------------------------------------------------------------- /cartogeoviz17-viry_files/libs/quarto-html/tippy.css: -------------------------------------------------------------------------------- 1 | .tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1} -------------------------------------------------------------------------------- /cartogeoviz17-viry_files/libs/quarto-html/tippy.umd.min.js: -------------------------------------------------------------------------------- 1 | !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],t):(e=e||self).tippy=t(e.Popper)}(this,(function(e){"use strict";var t={passive:!0,capture:!0},n=function(){return document.body};function r(e,t,n){if(Array.isArray(e)){var r=e[t];return null==r?Array.isArray(n)?n[t]:n:r}return e}function o(e,t){var n={}.toString.call(e);return 0===n.indexOf("[object")&&n.indexOf(t+"]")>-1}function i(e,t){return"function"==typeof e?e.apply(void 0,t):e}function a(e,t){return 0===t?e:function(r){clearTimeout(n),n=setTimeout((function(){e(r)}),t)};var n}function s(e,t){var n=Object.assign({},e);return t.forEach((function(e){delete n[e]})),n}function u(e){return[].concat(e)}function c(e,t){-1===e.indexOf(t)&&e.push(t)}function p(e){return e.split("-")[0]}function f(e){return[].slice.call(e)}function l(e){return Object.keys(e).reduce((function(t,n){return void 0!==e[n]&&(t[n]=e[n]),t}),{})}function d(){return document.createElement("div")}function v(e){return["Element","Fragment"].some((function(t){return o(e,t)}))}function m(e){return o(e,"MouseEvent")}function g(e){return!(!e||!e._tippy||e._tippy.reference!==e)}function h(e){return v(e)?[e]:function(e){return o(e,"NodeList")}(e)?f(e):Array.isArray(e)?e:f(document.querySelectorAll(e))}function b(e,t){e.forEach((function(e){e&&(e.style.transitionDuration=t+"ms")}))}function y(e,t){e.forEach((function(e){e&&e.setAttribute("data-state",t)}))}function w(e){var t,n=u(e)[0];return null!=n&&null!=(t=n.ownerDocument)&&t.body?n.ownerDocument:document}function E(e,t,n){var r=t+"EventListener";["transitionend","webkitTransitionEnd"].forEach((function(t){e[r](t,n)}))}function O(e,t){for(var n=t;n;){var r;if(e.contains(n))return!0;n=null==n.getRootNode||null==(r=n.getRootNode())?void 0:r.host}return!1}var x={isTouch:!1},C=0;function T(){x.isTouch||(x.isTouch=!0,window.performance&&document.addEventListener("mousemove",A))}function A(){var e=performance.now();e-C<20&&(x.isTouch=!1,document.removeEventListener("mousemove",A)),C=e}function L(){var e=document.activeElement;if(g(e)){var t=e._tippy;e.blur&&!t.state.isVisible&&e.blur()}}var D=!!("undefined"!=typeof window&&"undefined"!=typeof document)&&!!window.msCrypto,R=Object.assign({appendTo:n,aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},{animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},{allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999}),k=Object.keys(R);function P(e){var t=(e.plugins||[]).reduce((function(t,n){var r,o=n.name,i=n.defaultValue;o&&(t[o]=void 0!==e[o]?e[o]:null!=(r=R[o])?r:i);return t}),{});return Object.assign({},e,t)}function j(e,t){var n=Object.assign({},t,{content:i(t.content,[e])},t.ignoreAttributes?{}:function(e,t){return(t?Object.keys(P(Object.assign({},R,{plugins:t}))):k).reduce((function(t,n){var r=(e.getAttribute("data-tippy-"+n)||"").trim();if(!r)return t;if("content"===n)t[n]=r;else try{t[n]=JSON.parse(r)}catch(e){t[n]=r}return t}),{})}(e,t.plugins));return n.aria=Object.assign({},R.aria,n.aria),n.aria={expanded:"auto"===n.aria.expanded?t.interactive:n.aria.expanded,content:"auto"===n.aria.content?t.interactive?null:"describedby":n.aria.content},n}function M(e,t){e.innerHTML=t}function V(e){var t=d();return!0===e?t.className="tippy-arrow":(t.className="tippy-svg-arrow",v(e)?t.appendChild(e):M(t,e)),t}function I(e,t){v(t.content)?(M(e,""),e.appendChild(t.content)):"function"!=typeof t.content&&(t.allowHTML?M(e,t.content):e.textContent=t.content)}function S(e){var t=e.firstElementChild,n=f(t.children);return{box:t,content:n.find((function(e){return e.classList.contains("tippy-content")})),arrow:n.find((function(e){return e.classList.contains("tippy-arrow")||e.classList.contains("tippy-svg-arrow")})),backdrop:n.find((function(e){return e.classList.contains("tippy-backdrop")}))}}function N(e){var t=d(),n=d();n.className="tippy-box",n.setAttribute("data-state","hidden"),n.setAttribute("tabindex","-1");var r=d();function o(n,r){var o=S(t),i=o.box,a=o.content,s=o.arrow;r.theme?i.setAttribute("data-theme",r.theme):i.removeAttribute("data-theme"),"string"==typeof r.animation?i.setAttribute("data-animation",r.animation):i.removeAttribute("data-animation"),r.inertia?i.setAttribute("data-inertia",""):i.removeAttribute("data-inertia"),i.style.maxWidth="number"==typeof r.maxWidth?r.maxWidth+"px":r.maxWidth,r.role?i.setAttribute("role",r.role):i.removeAttribute("role"),n.content===r.content&&n.allowHTML===r.allowHTML||I(a,e.props),r.arrow?s?n.arrow!==r.arrow&&(i.removeChild(s),i.appendChild(V(r.arrow))):i.appendChild(V(r.arrow)):s&&i.removeChild(s)}return r.className="tippy-content",r.setAttribute("data-state","hidden"),I(r,e.props),t.appendChild(n),n.appendChild(r),o(e.props,e.props),{popper:t,onUpdate:o}}N.$$tippy=!0;var B=1,H=[],U=[];function _(o,s){var v,g,h,C,T,A,L,k,M=j(o,Object.assign({},R,P(l(s)))),V=!1,I=!1,N=!1,_=!1,F=[],W=a(we,M.interactiveDebounce),X=B++,Y=(k=M.plugins).filter((function(e,t){return k.indexOf(e)===t})),$={id:X,reference:o,popper:d(),popperInstance:null,props:M,state:{isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},plugins:Y,clearDelayTimeouts:function(){clearTimeout(v),clearTimeout(g),cancelAnimationFrame(h)},setProps:function(e){if($.state.isDestroyed)return;ae("onBeforeUpdate",[$,e]),be();var t=$.props,n=j(o,Object.assign({},t,l(e),{ignoreAttributes:!0}));$.props=n,he(),t.interactiveDebounce!==n.interactiveDebounce&&(ce(),W=a(we,n.interactiveDebounce));t.triggerTarget&&!n.triggerTarget?u(t.triggerTarget).forEach((function(e){e.removeAttribute("aria-expanded")})):n.triggerTarget&&o.removeAttribute("aria-expanded");ue(),ie(),J&&J(t,n);$.popperInstance&&(Ce(),Ae().forEach((function(e){requestAnimationFrame(e._tippy.popperInstance.forceUpdate)})));ae("onAfterUpdate",[$,e])},setContent:function(e){$.setProps({content:e})},show:function(){var e=$.state.isVisible,t=$.state.isDestroyed,o=!$.state.isEnabled,a=x.isTouch&&!$.props.touch,s=r($.props.duration,0,R.duration);if(e||t||o||a)return;if(te().hasAttribute("disabled"))return;if(ae("onShow",[$],!1),!1===$.props.onShow($))return;$.state.isVisible=!0,ee()&&(z.style.visibility="visible");ie(),de(),$.state.isMounted||(z.style.transition="none");if(ee()){var u=re(),p=u.box,f=u.content;b([p,f],0)}A=function(){var e;if($.state.isVisible&&!_){if(_=!0,z.offsetHeight,z.style.transition=$.props.moveTransition,ee()&&$.props.animation){var t=re(),n=t.box,r=t.content;b([n,r],s),y([n,r],"visible")}se(),ue(),c(U,$),null==(e=$.popperInstance)||e.forceUpdate(),ae("onMount",[$]),$.props.animation&&ee()&&function(e,t){me(e,t)}(s,(function(){$.state.isShown=!0,ae("onShown",[$])}))}},function(){var e,t=$.props.appendTo,r=te();e=$.props.interactive&&t===n||"parent"===t?r.parentNode:i(t,[r]);e.contains(z)||e.appendChild(z);$.state.isMounted=!0,Ce()}()},hide:function(){var e=!$.state.isVisible,t=$.state.isDestroyed,n=!$.state.isEnabled,o=r($.props.duration,1,R.duration);if(e||t||n)return;if(ae("onHide",[$],!1),!1===$.props.onHide($))return;$.state.isVisible=!1,$.state.isShown=!1,_=!1,V=!1,ee()&&(z.style.visibility="hidden");if(ce(),ve(),ie(!0),ee()){var i=re(),a=i.box,s=i.content;$.props.animation&&(b([a,s],o),y([a,s],"hidden"))}se(),ue(),$.props.animation?ee()&&function(e,t){me(e,(function(){!$.state.isVisible&&z.parentNode&&z.parentNode.contains(z)&&t()}))}(o,$.unmount):$.unmount()},hideWithInteractivity:function(e){ne().addEventListener("mousemove",W),c(H,W),W(e)},enable:function(){$.state.isEnabled=!0},disable:function(){$.hide(),$.state.isEnabled=!1},unmount:function(){$.state.isVisible&&$.hide();if(!$.state.isMounted)return;Te(),Ae().forEach((function(e){e._tippy.unmount()})),z.parentNode&&z.parentNode.removeChild(z);U=U.filter((function(e){return e!==$})),$.state.isMounted=!1,ae("onHidden",[$])},destroy:function(){if($.state.isDestroyed)return;$.clearDelayTimeouts(),$.unmount(),be(),delete o._tippy,$.state.isDestroyed=!0,ae("onDestroy",[$])}};if(!M.render)return $;var q=M.render($),z=q.popper,J=q.onUpdate;z.setAttribute("data-tippy-root",""),z.id="tippy-"+$.id,$.popper=z,o._tippy=$,z._tippy=$;var G=Y.map((function(e){return e.fn($)})),K=o.hasAttribute("aria-expanded");return he(),ue(),ie(),ae("onCreate",[$]),M.showOnCreate&&Le(),z.addEventListener("mouseenter",(function(){$.props.interactive&&$.state.isVisible&&$.clearDelayTimeouts()})),z.addEventListener("mouseleave",(function(){$.props.interactive&&$.props.trigger.indexOf("mouseenter")>=0&&ne().addEventListener("mousemove",W)})),$;function Q(){var e=$.props.touch;return Array.isArray(e)?e:[e,0]}function Z(){return"hold"===Q()[0]}function ee(){var e;return!(null==(e=$.props.render)||!e.$$tippy)}function te(){return L||o}function ne(){var e=te().parentNode;return e?w(e):document}function re(){return S(z)}function oe(e){return $.state.isMounted&&!$.state.isVisible||x.isTouch||C&&"focus"===C.type?0:r($.props.delay,e?0:1,R.delay)}function ie(e){void 0===e&&(e=!1),z.style.pointerEvents=$.props.interactive&&!e?"":"none",z.style.zIndex=""+$.props.zIndex}function ae(e,t,n){var r;(void 0===n&&(n=!0),G.forEach((function(n){n[e]&&n[e].apply(n,t)})),n)&&(r=$.props)[e].apply(r,t)}function se(){var e=$.props.aria;if(e.content){var t="aria-"+e.content,n=z.id;u($.props.triggerTarget||o).forEach((function(e){var r=e.getAttribute(t);if($.state.isVisible)e.setAttribute(t,r?r+" "+n:n);else{var o=r&&r.replace(n,"").trim();o?e.setAttribute(t,o):e.removeAttribute(t)}}))}}function ue(){!K&&$.props.aria.expanded&&u($.props.triggerTarget||o).forEach((function(e){$.props.interactive?e.setAttribute("aria-expanded",$.state.isVisible&&e===te()?"true":"false"):e.removeAttribute("aria-expanded")}))}function ce(){ne().removeEventListener("mousemove",W),H=H.filter((function(e){return e!==W}))}function pe(e){if(!x.isTouch||!N&&"mousedown"!==e.type){var t=e.composedPath&&e.composedPath()[0]||e.target;if(!$.props.interactive||!O(z,t)){if(u($.props.triggerTarget||o).some((function(e){return O(e,t)}))){if(x.isTouch)return;if($.state.isVisible&&$.props.trigger.indexOf("click")>=0)return}else ae("onClickOutside",[$,e]);!0===$.props.hideOnClick&&($.clearDelayTimeouts(),$.hide(),I=!0,setTimeout((function(){I=!1})),$.state.isMounted||ve())}}}function fe(){N=!0}function le(){N=!1}function de(){var e=ne();e.addEventListener("mousedown",pe,!0),e.addEventListener("touchend",pe,t),e.addEventListener("touchstart",le,t),e.addEventListener("touchmove",fe,t)}function ve(){var e=ne();e.removeEventListener("mousedown",pe,!0),e.removeEventListener("touchend",pe,t),e.removeEventListener("touchstart",le,t),e.removeEventListener("touchmove",fe,t)}function me(e,t){var n=re().box;function r(e){e.target===n&&(E(n,"remove",r),t())}if(0===e)return t();E(n,"remove",T),E(n,"add",r),T=r}function ge(e,t,n){void 0===n&&(n=!1),u($.props.triggerTarget||o).forEach((function(r){r.addEventListener(e,t,n),F.push({node:r,eventType:e,handler:t,options:n})}))}function he(){var e;Z()&&(ge("touchstart",ye,{passive:!0}),ge("touchend",Ee,{passive:!0})),(e=$.props.trigger,e.split(/\s+/).filter(Boolean)).forEach((function(e){if("manual"!==e)switch(ge(e,ye),e){case"mouseenter":ge("mouseleave",Ee);break;case"focus":ge(D?"focusout":"blur",Oe);break;case"focusin":ge("focusout",Oe)}}))}function be(){F.forEach((function(e){var t=e.node,n=e.eventType,r=e.handler,o=e.options;t.removeEventListener(n,r,o)})),F=[]}function ye(e){var t,n=!1;if($.state.isEnabled&&!xe(e)&&!I){var r="focus"===(null==(t=C)?void 0:t.type);C=e,L=e.currentTarget,ue(),!$.state.isVisible&&m(e)&&H.forEach((function(t){return t(e)})),"click"===e.type&&($.props.trigger.indexOf("mouseenter")<0||V)&&!1!==$.props.hideOnClick&&$.state.isVisible?n=!0:Le(e),"click"===e.type&&(V=!n),n&&!r&&De(e)}}function we(e){var t=e.target,n=te().contains(t)||z.contains(t);"mousemove"===e.type&&n||function(e,t){var n=t.clientX,r=t.clientY;return e.every((function(e){var t=e.popperRect,o=e.popperState,i=e.props.interactiveBorder,a=p(o.placement),s=o.modifiersData.offset;if(!s)return!0;var u="bottom"===a?s.top.y:0,c="top"===a?s.bottom.y:0,f="right"===a?s.left.x:0,l="left"===a?s.right.x:0,d=t.top-r+u>i,v=r-t.bottom-c>i,m=t.left-n+f>i,g=n-t.right-l>i;return d||v||m||g}))}(Ae().concat(z).map((function(e){var t,n=null==(t=e._tippy.popperInstance)?void 0:t.state;return n?{popperRect:e.getBoundingClientRect(),popperState:n,props:M}:null})).filter(Boolean),e)&&(ce(),De(e))}function Ee(e){xe(e)||$.props.trigger.indexOf("click")>=0&&V||($.props.interactive?$.hideWithInteractivity(e):De(e))}function Oe(e){$.props.trigger.indexOf("focusin")<0&&e.target!==te()||$.props.interactive&&e.relatedTarget&&z.contains(e.relatedTarget)||De(e)}function xe(e){return!!x.isTouch&&Z()!==e.type.indexOf("touch")>=0}function Ce(){Te();var t=$.props,n=t.popperOptions,r=t.placement,i=t.offset,a=t.getReferenceClientRect,s=t.moveTransition,u=ee()?S(z).arrow:null,c=a?{getBoundingClientRect:a,contextElement:a.contextElement||te()}:o,p=[{name:"offset",options:{offset:i}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!s}},{name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(e){var t=e.state;if(ee()){var n=re().box;["placement","reference-hidden","escaped"].forEach((function(e){"placement"===e?n.setAttribute("data-placement",t.placement):t.attributes.popper["data-popper-"+e]?n.setAttribute("data-"+e,""):n.removeAttribute("data-"+e)})),t.attributes.popper={}}}}];ee()&&u&&p.push({name:"arrow",options:{element:u,padding:3}}),p.push.apply(p,(null==n?void 0:n.modifiers)||[]),$.popperInstance=e.createPopper(c,z,Object.assign({},n,{placement:r,onFirstUpdate:A,modifiers:p}))}function Te(){$.popperInstance&&($.popperInstance.destroy(),$.popperInstance=null)}function Ae(){return f(z.querySelectorAll("[data-tippy-root]"))}function Le(e){$.clearDelayTimeouts(),e&&ae("onTrigger",[$,e]),de();var t=oe(!0),n=Q(),r=n[0],o=n[1];x.isTouch&&"hold"===r&&o&&(t=o),t?v=setTimeout((function(){$.show()}),t):$.show()}function De(e){if($.clearDelayTimeouts(),ae("onUntrigger",[$,e]),$.state.isVisible){if(!($.props.trigger.indexOf("mouseenter")>=0&&$.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(e.type)>=0&&V)){var t=oe(!1);t?g=setTimeout((function(){$.state.isVisible&&$.hide()}),t):h=requestAnimationFrame((function(){$.hide()}))}}else ve()}}function F(e,n){void 0===n&&(n={});var r=R.plugins.concat(n.plugins||[]);document.addEventListener("touchstart",T,t),window.addEventListener("blur",L);var o=Object.assign({},n,{plugins:r}),i=h(e).reduce((function(e,t){var n=t&&_(t,o);return n&&e.push(n),e}),[]);return v(e)?i[0]:i}F.defaultProps=R,F.setDefaultProps=function(e){Object.keys(e).forEach((function(t){R[t]=e[t]}))},F.currentInput=x;var W=Object.assign({},e.applyStyles,{effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow)}}),X={mouseover:"mouseenter",focusin:"focus",click:"click"};var Y={name:"animateFill",defaultValue:!1,fn:function(e){var t;if(null==(t=e.props.render)||!t.$$tippy)return{};var n=S(e.popper),r=n.box,o=n.content,i=e.props.animateFill?function(){var e=d();return e.className="tippy-backdrop",y([e],"hidden"),e}():null;return{onCreate:function(){i&&(r.insertBefore(i,r.firstElementChild),r.setAttribute("data-animatefill",""),r.style.overflow="hidden",e.setProps({arrow:!1,animation:"shift-away"}))},onMount:function(){if(i){var e=r.style.transitionDuration,t=Number(e.replace("ms",""));o.style.transitionDelay=Math.round(t/10)+"ms",i.style.transitionDuration=e,y([i],"visible")}},onShow:function(){i&&(i.style.transitionDuration="0ms")},onHide:function(){i&&y([i],"hidden")}}}};var $={clientX:0,clientY:0},q=[];function z(e){var t=e.clientX,n=e.clientY;$={clientX:t,clientY:n}}var J={name:"followCursor",defaultValue:!1,fn:function(e){var t=e.reference,n=w(e.props.triggerTarget||t),r=!1,o=!1,i=!0,a=e.props;function s(){return"initial"===e.props.followCursor&&e.state.isVisible}function u(){n.addEventListener("mousemove",f)}function c(){n.removeEventListener("mousemove",f)}function p(){r=!0,e.setProps({getReferenceClientRect:null}),r=!1}function f(n){var r=!n.target||t.contains(n.target),o=e.props.followCursor,i=n.clientX,a=n.clientY,s=t.getBoundingClientRect(),u=i-s.left,c=a-s.top;!r&&e.props.interactive||e.setProps({getReferenceClientRect:function(){var e=t.getBoundingClientRect(),n=i,r=a;"initial"===o&&(n=e.left+u,r=e.top+c);var s="horizontal"===o?e.top:r,p="vertical"===o?e.right:n,f="horizontal"===o?e.bottom:r,l="vertical"===o?e.left:n;return{width:p-l,height:f-s,top:s,right:p,bottom:f,left:l}}})}function l(){e.props.followCursor&&(q.push({instance:e,doc:n}),function(e){e.addEventListener("mousemove",z)}(n))}function d(){0===(q=q.filter((function(t){return t.instance!==e}))).filter((function(e){return e.doc===n})).length&&function(e){e.removeEventListener("mousemove",z)}(n)}return{onCreate:l,onDestroy:d,onBeforeUpdate:function(){a=e.props},onAfterUpdate:function(t,n){var i=n.followCursor;r||void 0!==i&&a.followCursor!==i&&(d(),i?(l(),!e.state.isMounted||o||s()||u()):(c(),p()))},onMount:function(){e.props.followCursor&&!o&&(i&&(f($),i=!1),s()||u())},onTrigger:function(e,t){m(t)&&($={clientX:t.clientX,clientY:t.clientY}),o="focus"===t.type},onHidden:function(){e.props.followCursor&&(p(),c(),i=!0)}}}};var G={name:"inlinePositioning",defaultValue:!1,fn:function(e){var t,n=e.reference;var r=-1,o=!1,i=[],a={name:"tippyInlinePositioning",enabled:!0,phase:"afterWrite",fn:function(o){var a=o.state;e.props.inlinePositioning&&(-1!==i.indexOf(a.placement)&&(i=[]),t!==a.placement&&-1===i.indexOf(a.placement)&&(i.push(a.placement),e.setProps({getReferenceClientRect:function(){return function(e){return function(e,t,n,r){if(n.length<2||null===e)return t;if(2===n.length&&r>=0&&n[0].left>n[1].right)return n[r]||t;switch(e){case"top":case"bottom":var o=n[0],i=n[n.length-1],a="top"===e,s=o.top,u=i.bottom,c=a?o.left:i.left,p=a?o.right:i.right;return{top:s,bottom:u,left:c,right:p,width:p-c,height:u-s};case"left":case"right":var f=Math.min.apply(Math,n.map((function(e){return e.left}))),l=Math.max.apply(Math,n.map((function(e){return e.right}))),d=n.filter((function(t){return"left"===e?t.left===f:t.right===l})),v=d[0].top,m=d[d.length-1].bottom;return{top:v,bottom:m,left:f,right:l,width:l-f,height:m-v};default:return t}}(p(e),n.getBoundingClientRect(),f(n.getClientRects()),r)}(a.placement)}})),t=a.placement)}};function s(){var t;o||(t=function(e,t){var n;return{popperOptions:Object.assign({},e.popperOptions,{modifiers:[].concat(((null==(n=e.popperOptions)?void 0:n.modifiers)||[]).filter((function(e){return e.name!==t.name})),[t])})}}(e.props,a),o=!0,e.setProps(t),o=!1)}return{onCreate:s,onAfterUpdate:s,onTrigger:function(t,n){if(m(n)){var o=f(e.reference.getClientRects()),i=o.find((function(e){return e.left-2<=n.clientX&&e.right+2>=n.clientX&&e.top-2<=n.clientY&&e.bottom+2>=n.clientY})),a=o.indexOf(i);r=a>-1?a:r}},onHidden:function(){r=-1}}}};var K={name:"sticky",defaultValue:!1,fn:function(e){var t=e.reference,n=e.popper;function r(t){return!0===e.props.sticky||e.props.sticky===t}var o=null,i=null;function a(){var s=r("reference")?(e.popperInstance?e.popperInstance.state.elements.reference:t).getBoundingClientRect():null,u=r("popper")?n.getBoundingClientRect():null;(s&&Q(o,s)||u&&Q(i,u))&&e.popperInstance&&e.popperInstance.update(),o=s,i=u,e.state.isMounted&&requestAnimationFrame(a)}return{onMount:function(){e.props.sticky&&a()}}}};function Q(e,t){return!e||!t||(e.top!==t.top||e.right!==t.right||e.bottom!==t.bottom||e.left!==t.left)}return F.setDefaultProps({plugins:[Y,J,G,K],render:N}),F.createSingleton=function(e,t){var n;void 0===t&&(t={});var r,o=e,i=[],a=[],c=t.overrides,p=[],f=!1;function l(){a=o.map((function(e){return u(e.props.triggerTarget||e.reference)})).reduce((function(e,t){return e.concat(t)}),[])}function v(){i=o.map((function(e){return e.reference}))}function m(e){o.forEach((function(t){e?t.enable():t.disable()}))}function g(e){return o.map((function(t){var n=t.setProps;return t.setProps=function(o){n(o),t.reference===r&&e.setProps(o)},function(){t.setProps=n}}))}function h(e,t){var n=a.indexOf(t);if(t!==r){r=t;var s=(c||[]).concat("content").reduce((function(e,t){return e[t]=o[n].props[t],e}),{});e.setProps(Object.assign({},s,{getReferenceClientRect:"function"==typeof s.getReferenceClientRect?s.getReferenceClientRect:function(){var e;return null==(e=i[n])?void 0:e.getBoundingClientRect()}}))}}m(!1),v(),l();var b={fn:function(){return{onDestroy:function(){m(!0)},onHidden:function(){r=null},onClickOutside:function(e){e.props.showOnCreate&&!f&&(f=!0,r=null)},onShow:function(e){e.props.showOnCreate&&!f&&(f=!0,h(e,i[0]))},onTrigger:function(e,t){h(e,t.currentTarget)}}}},y=F(d(),Object.assign({},s(t,["overrides"]),{plugins:[b].concat(t.plugins||[]),triggerTarget:a,popperOptions:Object.assign({},t.popperOptions,{modifiers:[].concat((null==(n=t.popperOptions)?void 0:n.modifiers)||[],[W])})})),w=y.show;y.show=function(e){if(w(),!r&&null==e)return h(y,i[0]);if(!r||null!=e){if("number"==typeof e)return i[e]&&h(y,i[e]);if(o.indexOf(e)>=0){var t=e.reference;return h(y,t)}return i.indexOf(e)>=0?h(y,e):void 0}},y.showNext=function(){var e=i[0];if(!r)return y.show(0);var t=i.indexOf(r);y.show(i[t+1]||e)},y.showPrevious=function(){var e=i[i.length-1];if(!r)return y.show(e);var t=i.indexOf(r),n=i[t-1]||e;y.show(n)};var E=y.setProps;return y.setProps=function(e){c=e.overrides||c,E(e)},y.setInstances=function(e){m(!0),p.forEach((function(e){return e()})),o=e,m(!1),v(),l(),p=g(y),y.setProps({triggerTarget:a})},p=g(y),y},F.delegate=function(e,n){var r=[],o=[],i=!1,a=n.target,c=s(n,["target"]),p=Object.assign({},c,{trigger:"manual",touch:!1}),f=Object.assign({touch:R.touch},c,{showOnCreate:!0}),l=F(e,p);function d(e){if(e.target&&!i){var t=e.target.closest(a);if(t){var r=t.getAttribute("data-tippy-trigger")||n.trigger||R.trigger;if(!t._tippy&&!("touchstart"===e.type&&"boolean"==typeof f.touch||"touchstart"!==e.type&&r.indexOf(X[e.type])<0)){var s=F(t,f);s&&(o=o.concat(s))}}}}function v(e,t,n,o){void 0===o&&(o=!1),e.addEventListener(t,n,o),r.push({node:e,eventType:t,handler:n,options:o})}return u(l).forEach((function(e){var n=e.destroy,a=e.enable,s=e.disable;e.destroy=function(e){void 0===e&&(e=!0),e&&o.forEach((function(e){e.destroy()})),o=[],r.forEach((function(e){var t=e.node,n=e.eventType,r=e.handler,o=e.options;t.removeEventListener(n,r,o)})),r=[],n()},e.enable=function(){a(),o.forEach((function(e){return e.enable()})),i=!1},e.disable=function(){s(),o.forEach((function(e){return e.disable()})),i=!0},function(e){var n=e.reference;v(n,"touchstart",d,t),v(n,"mouseover",d),v(n,"focusin",d),v(n,"click",d)}(e)})),l},F.hideAll=function(e){var t=void 0===e?{}:e,n=t.exclude,r=t.duration;U.forEach((function(e){var t=!1;if(n&&(t=g(n)?e.reference===n:e.popper===n.popper),!t){var o=e.props.duration;e.setProps({duration:r}),e.hide(),e.state.isDestroyed||e.setProps({duration:o})}}))},F.roundArrow='',F})); 2 | 3 | -------------------------------------------------------------------------------- /cartogeoviz18-viglino.md: -------------------------------------------------------------------------------- 1 | **Webinaire Carte blanche #18. mardi 15 octobre 2024 (12h30-13h30)** 2 | 3 | _Technologies autour de Ma Carte_ 4 | 5 | par Jean-Marc VIGLINO, [@jmviglino](https://twitter.com/jmviglino), Ingénieur IGN, Chef de secteur Express, Univ. Gustave Eiffel, IGN France. 6 | 7 | 8 | 9 | ![alt text](https://raw.githubusercontent.com/magisAR9/webinaires/main/affiche_Viglino2024.png) 10 | 11 | **Résumé** : Depuis 2008, l’[IGN](https://www.ign.fr/) développe pour [Édugéo](https://www.edugeo.fr/), en partenariat avec l’Éducation Nationale, des outils de cartographie 12 | et de [publication de cartes en ligne](https://macarte.ign.fr/). Depuis 2023, ces outils sont disponibles en [Opensource sur Github](https://github.com/IGNF-Ma-carte). 13 | Je vous propose de faire un tour d’horizon des solutions mises en place et de vous présenter les outils disponibles pour la création des cartes et de widgets carto 14 | à intégrer sur vos sites. 15 | 16 | 📺 [Video du webinaire](https://sharedocs.huma-num.fr/wl/?id=4oLuNMCNsoVe7P0QEr0ICdM87TrVrNa0)
17 | 18 | **Ressources**
19 | - [github/Viglino](https://github.com/Viglino) 20 | - [Ma carte IGN](https://macarte.ign.fr/) 21 | - Github du projet [./IGNF-Ma-carte](https://github.com/IGNF-Ma-carte) 22 | 23 | Retour à l'accueil des [Webinaires Cartes Blanches](https://github.com/magisAR9/webinaires) 24 | -------------------------------------------------------------------------------- /cartogeoviz19-ysebaert.md: -------------------------------------------------------------------------------- 1 | **Webinaire Carte Blanche #20. mardi 12 novembre 2024 (12h30-13h30)** 2 | 3 | _Mise en place d'une plateforme de géovisualisation des locations Airbnb en Ile-de-France : enjeux et perspectives_ 4 | 5 | par [Ronan Ysebaert](https://rysebaert.gitpages.huma-num.fr/cv/) [1], Louis Laurian [2], Marianne Guerois [3] et Malika Madelin [4] 6 | 7 | ![alt text](https://raw.githubusercontent.com/magisAR9/webinaires/main/affiche_webinaire_ysebaert.png) 8 | 9 | 10 | **Résumé** : Cette communication présente les principaux résultats issus de la construction d’une plateforme de géovisualisation des hébergements Airbnb en région parisienne. Ce site web a été développé pour rendre accessible une collection de cartes et graphiques inédits à l’échelle régionale. Il vise à documenter la diffusion de l’offre de ces locations de courte durée, en particulier au-delà des quartiers centraux, ce phénomène ayant été rarement étudié dans les banlieues proches ou lointaines des grandes métropoles touristiques alors qu’il tend à s’y déployer. Plus largement, ce site-prototype a rassemblé un collectif d’acteurs scientifiques et institutionnels, pour qui la plateforme représente un levier d’action pour la mutualisation de données, d’indicateurs et de visualisations utiles à la prise de décision, dans un contexte de crise du logement aiguë (cf colloque ci-dessous). Se pose ainsi en corollaire la question de la pérénisation de la démarche et son extension à d’éventuels autres terrains d’étude. 11 | 12 | [1] Université Paris Cité, UAR RIATE - [2] CNRS, UAR RIATE - [3] Université Paris Cité, UMR Géographie-Cités - [4] Université Paris Cité, UMR PRODIG 13 | 14 | - 📺 [Video du webinaire](https://podv2.unistra.fr/video/57098-ar920mp4/)
15 | 16 | **Ressources** : 17 | - [Riate airbnb](https://riate-airbnb.gitpages.huma-num.fr/website/) : la plateforme de visualisation 18 | - [Locations meublées touristiques dans le Grand Paris](https://riate-airbnb.gitpages.huma-num.fr/colloque/) : colloque organisé conjointement par le [RIATE](https://riate.cnrs.fr/) et l’[APUR](https://www.apur.org/fr) (septembre 2023) 19 | - [github/rysebaert](https://github.com/rysebaert) 20 | - [github/riatelab](https://github.com/riatelab) 21 | 22 | Retour à l'accueil des [Webinaires Cartes Blanches](https://github.com/magisAR9/webinaires) 23 | -------------------------------------------------------------------------------- /cartogeoviz2-riviere.md: -------------------------------------------------------------------------------- 1 | **Webinaire Carte Blanche #2. Mercredi 7 décembre 2023 (12h30-13h30)** 2 | _Faire des cartes statistiques avec Observable Plot_ par [Philippe RIVIERE](https://observablehq.com/@fil) (Visions Carto, Observable)
3 | 4 | ![image](obsplot.jpeg) 5 | 6 | **Résumé** : Observable Plot est une librairie JavaScript gratuite et open-source qui permet de visualiser rapidement des données tabulaires. Elle dispose d'une API concise et mémorisable pour favoriser la fluidité. Plot ne propose pas des types de graphiques clé en main. Au lieu de cela, l'api met à disposition des "marques" (points, lignes, barres...) qu'il est possible de transformer et combiner. Et aujourd'hui Plot introduit les marques géographiques 🌏 pour permettre la réalisation de cartes statistiques. C'est cette nouvelle fonctionnalité que que Philippe Rivière présente lors de ce wébinaire. 7 | 8 | 9 | **Ressources**
10 | - [Observable Plot sur Github](https://github.com/observablehq/plot)
11 | - [Observable Notebooks](https://observablehq.com/collection/@observablehq/plot)
12 | - [Cheatsheets](https://observablehq.com/collection/@observablehq/plot-cheatsheets)
13 | 14 | 📺 [Vidéo du Webinaire](https://sharedocs.huma-num.fr/wl/?id=cw6jUGyiTn1C1Z50eP6G1D7mgODWSPbY)
15 | 16 | Retour à l'accueil des [Webinaires Cartes Blanches](https://github.com/magisAR9/webinaires) 17 | -------------------------------------------------------------------------------- /cartogeoviz3-aumond.md: -------------------------------------------------------------------------------- 1 | **Webinaire Carte Blanche #3. Jeudi 2 février 2023 (12h30-13h30)**
2 | _Cartographie du paysage sonore urbain_
3 | par Pierre AUMOND, CR Univ. Gustave Eiffel, CEREMA, UMRAE,
4 | [@SoundCartograp1](https://twitter.com/SoundCartograp1), [Soundcartography](https://soundcartography.wordpress.com/) 5 | 6 | ![alt text](https://raw.githubusercontent.com/magisAR9/webinaires/main/affiche_webinaire_aumond.png) 7 | 8 | _Carte issue de la sélection de l’agrément sonore un jour de semaine au lieu du positionnement du curseur, 9 | avec représentation de la présence des trois types de sources sonores._
10 | Source : Projet Ademe Cart_ASUR 11 | 12 | **Résumé** : La cartographie des environnements sonores est périlleuse car il y a une imbrication de messages sonores diffus 13 | provenant d'une grande variété de sources. La complexité augmente encore lorsqu'il s'agit d'intégrer une partie sensible liée 14 | à leur perception par les individus. Des travaux relatifs à ce sujet seront présentés et commentés. 15 | 16 | **Accès Zoom**
17 | [Lien](https://univ-eiffel.zoom.us/j/87680547058)
18 | -ID de réunion : 876 8054 7058 | Code secret : AR9m@gis
19 | 20 | **Ressources**
21 | 📺 [Video du webinaire](https://bit.ly/3KoOBrs)
22 | 23 | Retour à l'accueil des [Webinaires Cartes Blanches](https://github.com/magisAR9/webinaires) 24 | -------------------------------------------------------------------------------- /cartogeoviz4-touatijegou.md: -------------------------------------------------------------------------------- 1 | **Webinaire Carte Blanche #4. Jeudi 6 juillet 2023 (12h30-13h30)**
2 | _De la carte climatique au chorotype climatique : propositions de modèles graphiques_ par [Najla TOUATI](https://lisst.univ-tlse2.fr/accueil/hn-accompagnement-de-la-recherche/najla-touati#/) et [JEGOU Laurent](https://ljegou.github.io/), UMR LISST (CNRS-Universté Toulouse 2 Jean Jaurès)
3 | 4 | ![alt text](https://raw.githubusercontent.com/magisAR9/webinaires/main/visuelWebinaireNTLJ.png) 5 | 6 | **Résumé** : La place de la chorématique dans les représentations et l’analyse des données localisées sera discutée en se fondant sur un travail autour de la représentation du climat urbain. Comment articuler  les différentes représentations pour analyser, informer, communiquer, intégrer les documents de planification urbaine ? 7 | 8 | [Trace vidéo du webinaire](https://bbb-prod-rp.unistra.fr/playback/presentation/2.3/99470eae0814dfe5c9cca017ea6e2edc6966dada-1688636333439)
9 | 10 | Retour à l'accueil des [Webinaires Cartes Blanches](https://github.com/magisAR9/webinaires) 11 | -------------------------------------------------------------------------------- /cartogeoviz5-douet.md: -------------------------------------------------------------------------------- 1 | **Webinaire Carte Blanche #5. lundi 17 avril 2023 (12h30-13h30)**
2 | _na.rm=TRUE. Requête, interactivité et gestion des données manquantes_
3 | par [Aurélie DOUET](https://geographie-cites.cnrs.fr/membres/aurelie-douet/), [CartoDouet](https://twitter.com/CartoDouet), IE UMR Géographie-Cités, Paris.
4 | 5 | ![alt text](https://raw.githubusercontent.com/magisAR9/webinaires/main/affiche_webinaire_douet.png) 6 | 7 | **Résumé** : L’équipe du Mobiliscope travaille sur le développement d’une interface de requêtage qui permettrait 8 | aux utilisateurs de choisir, parmi des critères socio-démographiques, une sous-population à afficher dans cette 9 | géovisualisation de la ségrégation intra-urbaine sur 24h. Cette nouvelle fonctionnalité implique le calcul à la 10 | volée des indicateurs et indices proposés dans l’outil à partir d’une sous-population non connue à l’avance. 11 | Si la gestion des données manquantes en traitement statistique est une étape obligée, l’interactivité implique 12 | une nouvelle difficulté : celle de ne pas disposer d’une information précise sur les données (in)disponibles 13 | issues d’un ensemble massif de requêtes et croisements possibles. Lors de ce webinaire, j’exposerai les 14 | difficultés rencontrées et les choix envisagés pour ce travail en cours. 15 | 16 | 17 | **Accès Zoom**
18 | [Lien](https://univ-eiffel.zoom.us/j/89871486576)
19 | -ID de réunion : 898 7148 6576 | Code secret : AR9m@gis
20 | 21 | **Ressources**
22 | 📺 [Vidéo du Webinaire](https://bit.ly/3L6kq8p)
23 | - [mobiliscope](https://mobiliscope.cnrs.fr/fr)
24 | - [github.com/.../mobiliscope](https://github.com/Geographie-cites/mobiliscope) (migration prochaine vers Gitlab)
25 | - [introjs](https://introjs.com/) 26 | - [R/testthat](https://cloud.r-project.org/web/packages/testthat/index.html) 27 | 28 | Retour à l'accueil des [Webinaires Cartes Blanches](https://github.com/magisAR9/webinaires) 29 | -------------------------------------------------------------------------------- /cartogeoviz6-rajerison.md: -------------------------------------------------------------------------------- 1 | **Webinaire Carte Blanche #6. lundi 11 Mai avril 2023 (12h30-13h30)**
2 | Génération (de) cartes
3 | par [Mathieu RAJERISON](https://datagistips.hypotheses.org/author/datagistips), [@datagistips](https://twitter.com/datagistips), CEREMA
4 | 5 | 6 | **Ressources**
7 | 8 | ![alt text](https://datagistips.hypotheses.org/files/2020/04/avec-chiffres-1-1038x576.png) 9 | 10 | 11 | **Ressources**
12 | 📺 [Vidéo du Webinaire](https://sharedocs.huma-num.fr/wl/?id=yYq7rFkpzTvIY7WZri8lR79XiDkAonRC&fmode=open)
13 | [Slides](https://docs.google.com/presentation/d/1mkjf5gvuUMKLbaBIo0Yr9uNfnehT1ID2Jtc1piVx8g4)
14 | 15 | Retour à l'accueil des [Webinaires Cartes Blanches](https://github.com/magisAR9/webinaires) 16 | -------------------------------------------------------------------------------- /cartogeoviz7-LucasDestrem.md: -------------------------------------------------------------------------------- 1 | **Webinaire Carte Blanche #18. Mercredi 02 octobre 2024 (12h30-13h30)**
2 | _Expérimentations cartographiques_
3 | par [Lucas DESTREM](https://www.lucasdestrem.com/), Géographe et cartographe

4 | 5 |
6 | 7 | ![alt text](https://raw.githubusercontent.com/magisAR9/webinaires/main/AfficheDestrem.jpg) 8 | 9 | **Résumé** : Passionné par les questions patrimoniales, intéressé par les projets et politiques de développement local et notamment par les thématiques de la culture, de la démocratie, des mobilités et de la communication institutionnelle et territoriale, j'ai créé la micro-entreprise GéoGraphismes, qui me permet d'assurer des missions tout à fait hybrides, au croisement de la cartographie/infographie et de la production de contenus de vulgarisation et médiation. Parallèlement, je mène régulièrement différents projets éditoriaux. 10 | 11 | **Replay**
12 | 13 | - 📺 Video du webinaire: https://sharedocs.huma-num.fr/wl/?id=poLEnaqfDwV3dOMtTerWqZqyu6doUdGi
14 | 15 | Retour à l'accueil des [Webinaires Cartes Blanches](https://github.com/magisAR9/webinaires) 16 | -------------------------------------------------------------------------------- /cartogeoviz7-gautier.md: -------------------------------------------------------------------------------- 1 | **Webinaire Carte Blanche #7. Jeudi 7 septembre 2023 (12h30-13h30)** 2 | _[www.cartostat.eu](http://www.cartostat.eu/), une application web de cartographie statistique_ par Jean-Philippe GAUTIER
3 | 4 | ![alt text](visuelWebinaireGautier.png) 5 | 6 | **Résumé** : Jean-Philippe Gautier présentera une application web de cartographie statistique automatique, dont quelques résultats sont entreposés sur http://www.cartostat.eu/. Les choix graphiques et statistiques que cette automatisation implique seront soumis à la critique, de même que l'on pourra, plus généralement, s'interroger sur le sens, l'utilité et les perspectives d'une industrialisation de la cartographie statistique élémentaire. 7 | La séquence débute avec [une démonstration vidéo de 25 minutes préenregistrée](https://podv2.unistra.fr/media/videos/02d91dc5c809fd175b161f28b3576e8b60a408fde4dd4e58dbe722ffde03252d/52549/720p_video1116348838.mp4)* qui présente l'application. 8 | * solution adoptée pour sécuriser une connexion internet instable. 9 | -------------------------------------------------------------------------------- /cartogeoviz8-gaffuri.md: -------------------------------------------------------------------------------- 1 | **Webinaire Carte Blanche #8. jeudi 5 Octobre 2023 (12h30-13h30)**
2 | Gridviz: Une bibliothèque pour la cartographie en ligne de données carroyées
3 | par [Julien Gaffuri]([https://datagistips.hypotheses.org/author/datagistips](https://jgaffuri.github.io/)), [@julgaf](https://twitter.com/julgaf), [@julgaf@mapstodon.space](https://mapstodon.space/@julgaf) Eurostat
4 | 5 | 6 | Gridviz est une bibliothèque JavaScript qui permet de visualiser des données quadrillées (ou tout ensemble de données tabulaires avec une position x/y) dans le navigateur dans une grande variété styles cartographiques avancés. 7 | Contrairement aux outils traditionnels de cartographie web à base de données matricielles, Gridviz effectu tout le rendu tout côté client, à la volée. 8 | 9 | 10 | **Ressources**
11 | 12 | - 📺 [Vidéo du Webinaire](https://sharedocs.huma-num.fr/wl/?id=RNW9k65Ziq5YhjFfriIvYH1kTGXEAwKs) 13 | - [Slides](./20231005_gridviz_GDRmagis_gaffuri.pdf) 14 | - [https://jgaffuri.github.io/](https://jgaffuri.github.io/) 15 | - [https://eurostat.github.io/gridviz/](https://eurostat.github.io/gridviz/) 16 | 17 | 18 | 19 | Retour à l'accueil des [Webinaires Cartes Blanches](https://github.com/magisAR9/webinaires) 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /cartogeoviz9-benrebah.md: -------------------------------------------------------------------------------- 1 | **Webinaire Carte Blanche #9. mardi 7 novembre 2023 (12h30-13h30)**
2 | _ELYSSA : Cartographier et analyser le vote en Tunisie_
3 | par [Maher BEN REBAH](https://www.linkedin.com/in/ben-rebah-maher-37831160/?originalSubdomain=fr), Mourad Ben Cheikh, Mohamed Ben Guiza, Alia Gana, 4 | UMR 7533 LADYSS. 5 | 6 | ![alt text](webinaire_BenRebah.PNG) 7 | 8 | **Résumé** : 9 | ELYSSA (_ELectoral information and analYSis System for the enhancement of democracy_) est une plateforme qui vise à faciliter l'accès à l'information électorale, en mettant à la disposition de différentes catégories d'utilisateurs (ONG, médias, acteurs politiques, institutions de coopération) des outils d’analyse et de visualisation du vote et du changement politique en Tunisie post-2011 à une échelle très fine (les centres du vote). 10 | Outre l’accès aux données, la plateforme ELYSSA permet une cartographie exploratoire et analytique du vote à travers 3 principaux modules : 11 | La visualisation multiscalaire des résultats électoraux 12 | La visualisation des séries temporelles (évolution du vote) 13 | Le croisement du vote avec les données socio-économiques 14 | S’adressant, essentiellement, à un public non expert, la plateforme propose des supports méthodologiques et des commentaires des cartes réalisées. 15 | 16 | **Accès Zoom**
17 | [Lien](https://univ-eiffel.zoom.us/j/89871486576)
18 | -ID de réunion : 898 7148 6576 | Code secret : AR9m@gis
19 | 20 | **Ressources**
21 | 📺 [Vidéo](https://sharedocs.huma-num.fr/wl/?id=DCwTF9E7BcrkbNdl5jafA2oRSk7S8xVc) 22 | 23 | Retour à l'accueil des [Webinaires Cartes Blanches](https://github.com/magisAR9/webinaires) 24 | -------------------------------------------------------------------------------- /gridviz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/magisAR9/webinaires/1963239df66bab6e7b2fcfa4739d9fc570dd398f/gridviz.png -------------------------------------------------------------------------------- /img_reporte.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/magisAR9/webinaires/1963239df66bab6e7b2fcfa4739d9fc570dd398f/img_reporte.PNG -------------------------------------------------------------------------------- /magrit-cinema.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/magisAR9/webinaires/1963239df66bab6e7b2fcfa4739d9fc570dd398f/magrit-cinema.png -------------------------------------------------------------------------------- /meta_Riviere.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/magisAR9/webinaires/1963239df66bab6e7b2fcfa4739d9fc570dd398f/meta_Riviere.PNG -------------------------------------------------------------------------------- /obsplot.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/magisAR9/webinaires/1963239df66bab6e7b2fcfa4739d9fc570dd398f/obsplot.jpeg -------------------------------------------------------------------------------- /visuelWebinaireGautier.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/magisAR9/webinaires/1963239df66bab6e7b2fcfa4739d9fc570dd398f/visuelWebinaireGautier.png -------------------------------------------------------------------------------- /visuelWebinaireNTLJ.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/magisAR9/webinaires/1963239df66bab6e7b2fcfa4739d9fc570dd398f/visuelWebinaireNTLJ.png -------------------------------------------------------------------------------- /visuel_ljegou2024.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/magisAR9/webinaires/1963239df66bab6e7b2fcfa4739d9fc570dd398f/visuel_ljegou2024.png -------------------------------------------------------------------------------- /wK6ptWN7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/magisAR9/webinaires/1963239df66bab6e7b2fcfa4739d9fc570dd398f/wK6ptWN7.jpg -------------------------------------------------------------------------------- /webinaire.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/magisAR9/webinaires/1963239df66bab6e7b2fcfa4739d9fc570dd398f/webinaire.PNG -------------------------------------------------------------------------------- /webinaire_BenRebah.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/magisAR9/webinaires/1963239df66bab6e7b2fcfa4739d9fc570dd398f/webinaire_BenRebah.PNG --------------------------------------------------------------------------------