2024-09-22

This commit is contained in:
gcch 2024-09-22 10:20:21 +02:00
commit f60f20dccf
514 changed files with 1968 additions and 1111 deletions

View file

@ -87,6 +87,7 @@
}
:root {
/* Couleurs */
--couleur-blanc: #fff;
--couleur-gris: #eceaeb;
--couleur-bordeaux: #490918;
--couleur-jaune: #ebffb8;
@ -144,13 +145,15 @@ body {
}
/**
* Force l'héritage des styles pour ces éléments
* 1. Force l'héritage des styles pour ces éléments.
* 2. Utilise la couleur primaire du site.
*/
button,
input,
select,
textarea {
font: inherit;
font: inherit; /* 1 */
accent-color: var(--couleur-jaune); /* 2 */
}
/**

View file

@ -1 +1 @@
{"version":3,"sourceRoot":"","sources":["../../src/sass/base/polices/_lato.scss","../../src/sass/base/polices/_myriad.scss","../../src/sass/abstracts/_variables.scss","../../src/sass/base/_base.scss","../../src/sass/base/_typographie.scss","../../src/sass/base/elements/_boutons.scss","../../src/sass/base/elements/_images.scss","../../src/sass/base/elements/_liens.scss","../../src/sass/base/elements/_listes.scss","../../src/sass/layouts/_en-tete.scss","../../src/sass/layouts/_menu-categories-produits.scss","../../src/sass/layouts/_colonnes-photos.scss","../../src/sass/layouts/_grille-produits.scss","../../src/sass/layouts/_informations-produit.scss","../../src/sass/layouts/_produits-similaires.scss","../../src/sass/layouts/_pied-de-page.scss"],"names":[],"mappings":";AAAA;EACE;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA,KACE;;AChGJ;EACE;EACA;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA,KACE;;AChBJ;AACE;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;AAEA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;;;AClBF;AAAA;AAAA;AAAA;AAAA;AAKA;EACE;EACA;EACA;EACA;;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AAAA;AAAA;EAGE;EACA;EACA;EACA;EACA;;;AAGF;AAAA;AAAA;AAAA;AAIA;EACE;EACA;;;AAGF;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;EAIE;;;AAGF;AAAA;AAAA;AAGA;EACE;;;ACtDF;EACE;EACA;EACA;;;ACHF;AAAA;AAAA;AAGA;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;;ACfJ;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;EAEE;EACA;;;AAGF;EACE;EACA;;;ACbF;AAAA;AAAA;AAAA;AAAA;AAKA;AACE;EACA;EAEA;EACA;EACA;EACA;EACA;EACA,YACE,kHAK4B;EAE9B;AAEA;AAMA;AAAA;AAAA;;AALA;EAEE;;AAMF;AACE;EACA;EACA;AAEA;EACA;EAEA;EACA;AAEA;AAMA;AAKA;;AAVA;EAEE;;AAIF;EACE;;AAIF;EACE;IACE;;;AAMJ;EACE;IACE;;;;AClER;AAAA;AAAA;AAAA;AAAA;AAKA;EACE;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAMA;AACE;EACA;AAEA;EACA;AAEA;EACA;;AAEA;EACE;EACA,qLAEkE;;;AC5BxE;AACE;EACA;EACA;AAEA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAWA;;AATA;EACE;;AAEA;AAAA;EAEE;;AAKJ;EACE;EACA;EACA;EACA;EACA;AAUA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AARA;EACE;EACA;EACA;EACA;EACA;;AAYF;AACE;EACA;AAEA;EACA;EACA;EACA;AAEA;EACA;EAEA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;IACE;;;AAMR;EACE;EACA;EACA;EACA;EACA;AAEA;AAAA;AAAA;;AAGA;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;ACvGR;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AACE;EACA;EACA;AAEA;EACA;EACA;EAEA;EACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAOA;EACE;EACA;EACA;AAEA;AAAA;AAAA;;AAGA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAMA;AAAA;AAAA;AAAA;AAAA;;AAJA;EACE;;AAQF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EAEE;EACA;;AAGF;EACE;IACE;IACA;;;AAKN;EACE;;AAGF;EACE;;;AC/ER;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AACE;EACA;AAEA;EACA;EACA;AAAA;AAAA;AAIA;EACA;EAEA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGA;EACE;;AAMF;EACE;;;AC5CR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EAEI;IACE;IACA;IACA;;;AAMR;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;;AC9EV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AACE;EAEA;EAGA;EACA;EAGA;EAEA;EACA;EACA;EACA;EACA;AAuGA;AAyGA;;AA9MA;EACE;EACA;EACA;EACA;EACA;AAEA;AAAA;AAAA;;AAGA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAKN;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;;AACA;EACE;;AAGF;EACE;;AAMR;EACE;;AAEA;EACE;;AAMN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;AAEA;AAMA;AAwCA;AAqBA;;AAlEA;EACE;EACA;;AAIF;EACE;AAEA;;AACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EAEI;IACE;IACA;;;AAKN;EAEI;IACE;IACA;;;AAOR;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;IACE;;;AAKN;EACE;;AAeJ;EACE;;AAKJ;EACE;EACA;EACA;AAEA;;AACA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;AAEA;;AAEE;EACE;IACE;;;;AAQZ;EACE;IACE;;EAGF;IACE;;;AC3QJ;EACE;EACA;EACA;EACA,qBACE;EAEF;EACA;AAEA;;AACA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EAEI;IACE;IACA;IACA;;;AAMR;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;;AC7FZ;AAAA;AAAA;AAGA;AACE;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA","file":"main.css"}
{"version":3,"sourceRoot":"","sources":["../../src/sass/base/polices/_lato.scss","../../src/sass/base/polices/_myriad.scss","../../src/sass/abstracts/_variables.scss","../../src/sass/base/_base.scss","../../src/sass/base/_typographie.scss","../../src/sass/base/elements/_boutons.scss","../../src/sass/base/elements/_images.scss","../../src/sass/base/elements/_liens.scss","../../src/sass/base/elements/_listes.scss","../../src/sass/layouts/_en-tete.scss","../../src/sass/layouts/_menu-categories-produits.scss","../../src/sass/layouts/_colonnes-photos.scss","../../src/sass/layouts/_grille-produits.scss","../../src/sass/layouts/_informations-produit.scss","../../src/sass/layouts/_produits-similaires.scss","../../src/sass/layouts/_pied-de-page.scss"],"names":[],"mappings":";AAAA;EACE;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA,KACE;;AChGJ;EACE;EACA;EACA;EACA;EACA;EACA,KACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA,KACE;;AChBJ;AACE;EACA;EACA;EACA;EACA;EACA;AAEA;EACA;EACA;AAEA;EACA;EACA;AAEA;EACA;EACA;EACA;EACA;EACA;;;ACnBF;AAAA;AAAA;AAAA;AAAA;AAKA;EACE;EACA;EACA;EACA;;;AAGF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AAAA;AAAA;EAGE;EACA;EACA;EACA;EACA;;;AAGF;AAAA;AAAA;AAAA;AAIA;EACE;EACA;;;AAGF;AAAA;AAAA;AAAA;AAIA;AAAA;AAAA;AAAA;EAIE;EACA;;;AAGF;AAAA;AAAA;AAGA;EACE;;;ACxDF;EACE;EACA;EACA;;;ACHF;AAAA;AAAA;AAGA;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;;ACfJ;AAAA;AAAA;AAAA;AAAA;AAKA;AAAA;EAEE;EACA;;;AAGF;EACE;EACA;;;ACbF;AAAA;AAAA;AAAA;AAAA;AAKA;AACE;EACA;EAEA;EACA;EACA;EACA;EACA;EACA,YACE,kHAK4B;EAE9B;AAEA;AAMA;AAAA;AAAA;;AALA;EAEE;;AAMF;AACE;EACA;EACA;AAEA;EACA;EAEA;EACA;AAEA;AAMA;AAKA;;AAVA;EAEE;;AAIF;EACE;;AAIF;EACE;IACE;;;AAMJ;EACE;IACE;;;;AClER;AAAA;AAAA;AAAA;AAAA;AAKA;EACE;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAMA;AACE;EACA;AAEA;EACA;AAEA;EACA;;AAEA;EACE;EACA,qLAEkE;;;AC5BxE;AACE;EACA;EACA;AAEA;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAWA;;AATA;EACE;;AAEA;AAAA;EAEE;;AAKJ;EACE;EACA;EACA;EACA;EACA;AAUA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AARA;EACE;EACA;EACA;EACA;EACA;;AAYF;AACE;EACA;AAEA;EACA;EACA;EACA;AAEA;EACA;EAEA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;IACE;;;AAMR;EACE;EACA;EACA;EACA;EACA;AAEA;AAAA;AAAA;;AAGA;EACE;EACA;;AAEA;EACE;;AAGF;EACE;;;ACvGR;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AACE;EACA;EACA;AAEA;EACA;EACA;EAEA;EACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAOA;EACE;EACA;EACA;AAEA;AAAA;AAAA;;AAGA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAMA;AAAA;AAAA;AAAA;AAAA;;AAJA;EACE;;AAQF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EAEE;EACA;;AAGF;EACE;IACE;IACA;;;AAKN;EACE;;AAGF;EACE;;;AC/ER;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AACE;EACA;AAEA;EACA;EACA;AAAA;AAAA;AAIA;EACA;EAEA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGA;EACE;;AAMF;EACE;;;AC5CR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EAEI;IACE;IACA;IACA;;;AAMR;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;;AC9EV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA;AACE;EAEA;EAGA;EACA;EAGA;EAEA;EACA;EACA;EACA;EACA;AAuGA;AAyGA;;AA9MA;EACE;EACA;EACA;EACA;EACA;AAEA;AAAA;AAAA;;AAGA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAKN;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;AAEA;;AACA;EACE;;AAGF;EACE;;AAMR;EACE;;AAEA;EACE;;AAMN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;AAEA;AAMA;AAwCA;AAqBA;;AAlEA;EACE;EACA;;AAIF;EACE;AAEA;;AACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EAEI;IACE;IACA;;;AAKN;EAEI;IACE;IACA;;;AAOR;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;IACE;;;AAKN;EACE;;AAeJ;EACE;;AAKJ;EACE;EACA;EACA;AAEA;;AACA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;AAEA;;AAEE;EACE;IACE;;;;AAQZ;EACE;IACE;;EAGF;IACE;;;AC3QJ;EACE;EACA;EACA;EACA,qBACE;EAEF;EACA;AAEA;;AACA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EAEI;IACE;IACA;IACA;;;AAMR;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;;AC7FZ;AAAA;AAAA;AAGA;AACE;EACA;EACA;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA","file":"main.css"}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,243 @@
@charset "UTF-8";
#panneau-panier {
border-right: 1px solid var(--couleur-noir);
}
#panneau-panier > div {
place-content: center;
}
#panneau-panier .panneau__grille-produits {
display: flex;
flex-flow: column nowrap;
}
#panneau-panier .panneau__grille-produits__produit {
display: grid;
grid-template-columns: fit-content(100%) auto;
grid-template-rows: 1fr;
border-bottom: 1px solid var(--couleur-noir);
}
#panneau-panier .panneau__grille-produits__produit__illustratif {
padding: 1rem;
text-align: center;
border-right: 1px solid var(--couleur-noir);
}
#panneau-panier .panneau__grille-produits__produit__illustratif img {
aspect-ratio: 1;
width: fit-content;
margin: auto;
}
#panneau-panier .panneau__grille-produits .detail-produit {
display: flex;
flex-flow: column nowrap;
place-content: center;
width: fit-content;
margin: auto;
}
#panneau-panier .panneau__grille-produits .detail-produit__nom-prix {
display: flex;
flex-flow: row nowrap;
justify-content: space-between;
margin-bottom: 0.33rem;
}
#panneau-panier .panneau__grille-produits .detail-produit__description {
margin-bottom: 1rem;
}
#panneau-panier .panneau__grille-produits .detail-produit__actions {
display: grid;
grid-template-columns: 0.25fr 0.5fr 0.25fr;
grid-template-rows: 1fr 1fr;
place-content: center;
border: 1px solid var(--couleur-noir);
}
#panneau-panier .panneau__grille-produits .detail-produit__actions button:first-of-type {
grid-column: 1;
width: 3rem;
}
#panneau-panier .panneau__grille-produits .detail-produit__actions input {
grid-column: 2;
text-align: center;
background: initial;
border: initial;
border-right: 1px solid var(--couleur-noir);
border-left: 1px solid var(--couleur-noir);
}
#panneau-panier .panneau__grille-produits .detail-produit__actions button:nth-of-type(2) {
grid-column: 3;
width: 3rem;
}
#panneau-panier .panneau__grille-produits .detail-produit__actions button:last-of-type {
grid-column: span 3;
grid-row: 2;
padding: 0.25rem;
text-transform: lowercase;
border-top: 1px solid var(--couleur-noir);
}
#panneau-panier .panneau__emballages {
width: 100%;
padding: 1rem 0;
font-style: italic;
text-align: center;
letter-spacing: 0.5px;
border-bottom: 1px solid var(--couleur-noir);
}
#panneau-panier .panneau__emballages__conteneur {
width: fit-content;
margin: auto;
}
#panneau-panier .panneau__emballages__titre-prix p {
display: flex;
justify-content: space-between;
width: 100%;
}
#panneau-panier .panneau__emballages__titre-prix p span {
font-weight: 600;
font-style: initial;
}
#panneau-panier .panneau__emballages__choix {
display: flex;
flex-flow: row nowrap;
gap: 2rem;
text-transform: lowercase;
/**
* 1. Pour un alignement parfait du label avec la case à cocher.
*/
}
#panneau-panier .panneau__emballages__choix__ligne {
display: flex;
flex-flow: row nowrap;
gap: 1ch;
place-items: center;
}
#panneau-panier .panneau__emballages__choix input, #panneau-panier .panneau__emballages__choix label {
cursor: pointer;
}
#panneau-panier .panneau__emballages__choix input[type=radio] {
width: 1rem;
height: 1rem;
appearance: none;
border: 1px solid var(--couleur-noir);
}
#panneau-panier .panneau__emballages__choix input[type=radio]:checked {
background: var(--couleur-jaune);
}
#panneau-panier .panneau__emballages__choix input[type=radio]:checked::before {
content: "x";
position: relative;
bottom: 25%;
left: 25%;
}
#panneau-panier .panneau__emballages__choix label {
padding-top: 1px; /* 1 */
font-size: 0.9rem;
}
#panneau-panier .panneau__instructions-code-promo {
width: 100%;
padding: 1rem 0;
text-align: center;
border-bottom: 1px solid var(--couleur-noir);
/**
* 1. Nécessaire pour ne pas qu'un espace vertical non souhaité apparaisse.
* 2. Applique une marge entre les instructions et le code promo de notre choix.
*/
}
#panneau-panier .panneau__instructions-code-promo__instructions {
resize: vertical;
display: block; /* 1 */
margin: auto; /* 1 */
margin-bottom: 0.5rem; /* 2 */
padding: 0.5rem;
font-size: 0.8rem;
font-weight: 450;
letter-spacing: 0.5px;
background: initial;
border: 1px solid transparent;
}
#panneau-panier .panneau__instructions-code-promo__code-promo {
display: flex;
flex-flow: row nowrap;
width: fit-content;
margin: auto;
}
#panneau-panier .panneau__instructions-code-promo__code-promo input {
width: 30ch;
padding: 0.25rem;
background: var(--couleur-gris);
border: 1px solid var(--couleur-noir);
}
#panneau-panier .panneau__instructions-code-promo__code-promo input::placeholder {
text-transform: lowercase;
}
#panneau-panier .panneau__instructions-code-promo__code-promo button {
padding: 0.25rem 2rem;
color: var(--couleur-blanc);
text-transform: lowercase;
background: var(--couleur-noir);
border: 1px solid var(--couleur-noir);
border-left: initial;
}
#panneau-panier .panneau__sous-totaux {
width: fit-content;
margin: auto;
padding: 1rem 0;
text-align: center;
}
#panneau-panier .panneau__sous-totaux p + p {
margin-top: 1rem;
}
#panneau-panier .panneau__sous-totaux__ligne {
display: flex;
flex-flow: row nowrap;
justify-content: space-between;
font-style: italic;
}
#panneau-panier .panneau__sous-totaux__ligne strong {
font-weight: 600;
text-transform: lowercase;
}
#panneau-panier .panneau__sous-totaux__ligne.sous-total strong {
font-style: normal;
}
#panneau-panier .panneau__sous-totaux__conditions-livraison {
font-size: 0.8rem;
font-weight: 450;
color: grey;
}
/**
* 1. Applique une marge supérieure égale à la hauteur de l'en-tête pour qu'elle puisse s'afficher
* correctement.
*/
#page-panier {
/* Dimensions */
--menu-section-hauteur: var(--menu-categories-produits-hauteur);
/* Marges */
--menu-section-marges-bloc-debut: var(--en-tete-hauteur); /* 1 */
display: flex;
flex-flow: row wrap;
margin-top: var(--menu-section-marges-bloc-debut);
}
#page-panier .panneau {
flex-basis: 50%;
border-top: 1px solid var(--couleur-noir);
border-bottom: 1px solid var(--couleur-noir);
}
#page-panier .panneau__en-tete {
position: sticky;
top: var(--menu-section-marges-bloc-debut);
display: block;
align-content: center;
min-height: var(--menu-categories-produits-hauteur);
max-height: var(--menu-categories-produits-hauteur);
color: var(--couleur-gris);
text-align: center;
background: var(--couleur-noir);
}
#page-panier .panneau__en-tete h2 {
font-weight: 450;
font-style: italic;
color: var(--couleur-gris);
text-transform: uppercase;
letter-spacing: 1px;
background: var(--couleur-noir);
}
/*# sourceMappingURL=page-panier.css.map */

View file

@ -0,0 +1 @@
{"version":3,"sourceRoot":"","sources":["../../../src/sass/layouts/_panneau-panier.scss","../../../src/sass/pages/page-panier.scss"],"names":[],"mappings":";AAEA;EACE;;AAEA;EACE;;AAIF;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGA;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAMN;EACE;EACA;EACA;EACA;EACA;;AAIA;EACE;EACA;EACA;EACA;;AAGF;EACE;;AAIF;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAOR;EACE;EACA;EACA;EACA;EACA;EACA;;AAGA;EACE;EACA;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;EACA;EACA;AAgCA;AAAA;AAAA;;AA9BA;EACE;EACA;EACA;EACA;;AAGF;EACE;;AAIF;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EACE;EACA;EACA;EACA;;AAQN;EACE;EACA;;AAMN;EACE;EACA;EACA;EACA;AAEA;AAAA;AAAA;AAAA;;AAIA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;;AAKN;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;AAIJ;EACE;EACA;EACA;;;AClPN;AAAA;AAAA;AAAA;AAIA;AACE;EACA;AAEA;EACA;EAEA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA","file":"page-panier.css"}

View file

@ -16,7 +16,7 @@
"name": "index"
},
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/api.ts": {
"file": "api.js",
"file": "api2.js",
"name": "api",
"src": "web/app/themes/haiku-atelier-2024/src/scripts/constantes/api.ts",
"isEntry": true
@ -39,7 +39,7 @@
]
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/api.ts": {
"file": "api2.js",
"file": "api.js",
"name": "api",
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/api.ts",
"isEntry": true,
@ -145,11 +145,5 @@
"_Either.js",
"_exports.js"
]
},
"web/app/themes/haiku-atelier-2024/src/scripts/types/api/cart-add-item.ts": {
"file": "cart-add-item.js",
"name": "cart-add-item",
"src": "web/app/themes/haiku-atelier-2024/src/scripts/types/api/cart-add-item.ts",
"isEntry": true
}
}

View file

@ -1,2 +1,3 @@
const E="wp-json",T=`/${E}/wc/store/cart`,t=`/${E}/wc/store/cart/add-item`,s="Nonce",_="retry-after",I="x-sentry-rate-limits";export{s as E,t as R,T as a,I as b,_ as c};
import{c as R}from"./api2.js";import{r as F}from"./Either.js";const H="application/json",S="Content-Type",y=Symbol(),w=Symbol();function C(t={}){var e;return(e=Object.entries(t).find(([o])=>o.toLowerCase()===S.toLowerCase()))===null||e===void 0?void 0:e[1]}function P(t){return/^application\/.*json.*/.test(t)}const u=function(t,e,o=!1){return Object.entries(e).reduce((c,[i,l])=>{const f=t[i];return Array.isArray(f)&&Array.isArray(l)?c[i]=o?[...f,...l]:l:typeof f=="object"&&typeof l=="object"?c[i]=u(f,l,o):c[i]=l,c},{...t})},g={options:{},errorType:"text",polyfills:{},polyfill(t,e=!0,o=!1,...c){const i=this.polyfills[t]||(typeof self<"u"?self[t]:null)||(typeof global<"u"?global[t]:null);if(e&&!i)throw new Error(t+" is not defined");return o&&i?new i(...c):i}};function L(t,e=!1){g.options=e?t:u(g.options,t)}function N(t,e=!1){g.polyfills=e?t:u(g.polyfills,t)}function I(t){g.errorType=t}const J=t=>e=>t.reduceRight((o,c)=>c(o),e)||e;class x extends Error{}const U=t=>{const e=Object.create(null);t=t._addons.reduce((r,s)=>s.beforeRequest&&s.beforeRequest(r,t._options,e)||r,t);const{_url:o,_options:c,_config:i,_catchers:l,_resolvers:f,_middlewares:m,_addons:E}=t,d=new Map(l),D=u(i.options,c);let j=o;const v=J(m)((r,s)=>(j=r,i.polyfill("fetch")(r,s)))(o,D),b=new Error,A=v.catch(r=>{throw{[y]:r}}).then(r=>{var s;if(!r.ok){const n=new x;if(n.cause=b,n.stack=n.stack+`
CAUSE: `+b.stack,n.response=r,n.status=r.status,n.url=j,r.type==="opaque")throw n;const a=i.errorType==="json"||((s=r.headers.get("Content-Type"))===null||s===void 0?void 0:s.split(";")[0])==="application/json";return(i.errorType?a?r.text():r[i.errorType]():Promise.resolve(r.body)).then(h=>{throw n.message=typeof h=="string"?h:r.statusText,h&&(a&&typeof h=="string"?(n.text=h,n.json=JSON.parse(h)):n[i.errorType]=h),n})}return r}),O=r=>r.catch(s=>{const n=Object.prototype.hasOwnProperty.call(s,y),a=n?s[y]:s,T=a?.status&&d.get(a.status)||d.get(a?.name)||n&&d.has(y)&&d.get(y);if(T)return T(a,t);const h=d.get(w);if(h)return h(a,t);throw a}),_=r=>s=>O(r?A.then(n=>n&&n[r]()).then(n=>s?s(n):n):A.then(n=>s?s(n):n)),M={_wretchReq:t,_fetchReq:v,_sharedState:e,res:_(null),json:_("json"),blob:_("blob"),formData:_("formData"),arrayBuffer:_("arrayBuffer"),text:_("text"),error(r,s){return d.set(r,s),this},badRequest(r){return this.error(400,r)},unauthorized(r){return this.error(401,r)},forbidden(r){return this.error(403,r)},notFound(r){return this.error(404,r)},timeout(r){return this.error(408,r)},internalError(r){return this.error(500,r)},fetchError(r){return this.error(y,r)}},q=E.reduce((r,s)=>({...r,...typeof s.resolver=="function"?s.resolver(r):s.resolver}),M);return f.reduce((r,s)=>s(r,t),q)},k={_url:"",_options:{},_config:g,_catchers:new Map,_resolvers:[],_deferred:[],_middlewares:[],_addons:[],addon(t){return{...this,_addons:[...this._addons,t],...t.wretch}},errorType(t){return{...this,_config:{...this._config,errorType:t}}},polyfills(t,e=!1){return{...this,_config:{...this._config,polyfills:e?t:u(this._config.polyfills,t)}}},url(t,e=!1){if(e)return{...this,_url:t};const o=this._url.split("?");return{...this,_url:o.length>1?o[0]+t+"?"+o[1]:this._url+t}},options(t,e=!1){return{...this,_options:e?t:u(this._options,t)}},headers(t){const e=t?Array.isArray(t)?Object.fromEntries(t):"entries"in t?Object.fromEntries(t.entries()):t:{};return{...this,_options:u(this._options,{headers:e})}},accept(t){return this.headers({Accept:t})},content(t){return this.headers({[S]:t})},auth(t){return this.headers({Authorization:t})},catcher(t,e){const o=new Map(this._catchers);return o.set(t,e),{...this,_catchers:o}},catcherFallback(t){return this.catcher(w,t)},resolve(t,e=!1){return{...this,_resolvers:e?[t]:[...this._resolvers,t]}},defer(t,e=!1){return{...this,_deferred:e?[t]:[...this._deferred,t]}},middlewares(t,e=!1){return{...this,_middlewares:e?t:[...this._middlewares,...t]}},fetch(t=this._options.method,e="",o=null){let c=this.url(e).options({method:t});const i=C(c._options.headers),l=this._config.polyfill("FormData",!1),f=typeof o=="object"&&!(l&&o instanceof l)&&(!c._options.headers||!i||P(i));return c=o?f?c.json(o,i):c.body(o):c,U(c._deferred.reduce((m,E)=>E(m,m._url,m._options),c))},get(t=""){return this.fetch("GET",t)},delete(t=""){return this.fetch("DELETE",t)},put(t,e=""){return this.fetch("PUT",e,t)},post(t,e=""){return this.fetch("POST",e,t)},patch(t,e=""){return this.fetch("PATCH",e,t)},head(t=""){return this.fetch("HEAD",t)},opts(t=""){return this.fetch("OPTIONS",t)},body(t){return{...this,_options:{...this._options,body:t}}},json(t,e){const o=C(this._options.headers);return this.content(e||P(o)&&o||H).body(JSON.stringify(t))}};function p(t="",e={}){return{...k,_url:t,_options:e}}p.default=p;p.options=L;p.errorType=I;p.polyfills=N;p.WretchError=x;fetch(R,{credentials:"same-origin",headers:{"Content-Type":"application/json"},method:"GET",mode:"same-origin",signal:AbortSignal.timeout(5e3)}).then(F);p(R).content("application/json").options({credentials:"same-origin",mode:"same-origin",signal:AbortSignal.timeout(5e3)}).get().json().catch();
//# sourceMappingURL=api.js.map

File diff suppressed because one or more lines are too long

View file

@ -1,3 +1,2 @@
import{a as R}from"./api.js";import{r as F}from"./Either.js";const H="application/json",S="Content-Type",y=Symbol(),w=Symbol();function C(t={}){var e;return(e=Object.entries(t).find(([o])=>o.toLowerCase()===S.toLowerCase()))===null||e===void 0?void 0:e[1]}function P(t){return/^application\/.*json.*/.test(t)}const u=function(t,e,o=!1){return Object.entries(e).reduce((a,[i,l])=>{const f=t[i];return Array.isArray(f)&&Array.isArray(l)?a[i]=o?[...f,...l]:l:typeof f=="object"&&typeof l=="object"?a[i]=u(f,l,o):a[i]=l,a},{...t})},g={options:{},errorType:"text",polyfills:{},polyfill(t,e=!0,o=!1,...a){const i=this.polyfills[t]||(typeof self<"u"?self[t]:null)||(typeof global<"u"?global[t]:null);if(e&&!i)throw new Error(t+" is not defined");return o&&i?new i(...a):i}};function L(t,e=!1){g.options=e?t:u(g.options,t)}function N(t,e=!1){g.polyfills=e?t:u(g.polyfills,t)}function I(t){g.errorType=t}const J=t=>e=>t.reduceRight((o,a)=>a(o),e)||e;class x extends Error{}const U=t=>{const e=Object.create(null);t=t._addons.reduce((r,s)=>s.beforeRequest&&s.beforeRequest(r,t._options,e)||r,t);const{_url:o,_options:a,_config:i,_catchers:l,_resolvers:f,_middlewares:m,_addons:E}=t,d=new Map(l),D=u(i.options,a);let j=o;const v=J(m)((r,s)=>(j=r,i.polyfill("fetch")(r,s)))(o,D),b=new Error,A=v.catch(r=>{throw{[y]:r}}).then(r=>{var s;if(!r.ok){const n=new x;if(n.cause=b,n.stack=n.stack+`
CAUSE: `+b.stack,n.response=r,n.status=r.status,n.url=j,r.type==="opaque")throw n;const c=i.errorType==="json"||((s=r.headers.get("Content-Type"))===null||s===void 0?void 0:s.split(";")[0])==="application/json";return(i.errorType?c?r.text():r[i.errorType]():Promise.resolve(r.body)).then(h=>{throw n.message=typeof h=="string"?h:r.statusText,h&&(c&&typeof h=="string"?(n.text=h,n.json=JSON.parse(h)):n[i.errorType]=h),n})}return r}),O=r=>r.catch(s=>{const n=Object.prototype.hasOwnProperty.call(s,y),c=n?s[y]:s,T=c?.status&&d.get(c.status)||d.get(c?.name)||n&&d.has(y)&&d.get(y);if(T)return T(c,t);const h=d.get(w);if(h)return h(c,t);throw c}),_=r=>s=>O(r?A.then(n=>n&&n[r]()).then(n=>s?s(n):n):A.then(n=>s?s(n):n)),M={_wretchReq:t,_fetchReq:v,_sharedState:e,res:_(null),json:_("json"),blob:_("blob"),formData:_("formData"),arrayBuffer:_("arrayBuffer"),text:_("text"),error(r,s){return d.set(r,s),this},badRequest(r){return this.error(400,r)},unauthorized(r){return this.error(401,r)},forbidden(r){return this.error(403,r)},notFound(r){return this.error(404,r)},timeout(r){return this.error(408,r)},internalError(r){return this.error(500,r)},fetchError(r){return this.error(y,r)}},q=E.reduce((r,s)=>({...r,...typeof s.resolver=="function"?s.resolver(r):s.resolver}),M);return f.reduce((r,s)=>s(r,t),q)},k={_url:"",_options:{},_config:g,_catchers:new Map,_resolvers:[],_deferred:[],_middlewares:[],_addons:[],addon(t){return{...this,_addons:[...this._addons,t],...t.wretch}},errorType(t){return{...this,_config:{...this._config,errorType:t}}},polyfills(t,e=!1){return{...this,_config:{...this._config,polyfills:e?t:u(this._config.polyfills,t)}}},url(t,e=!1){if(e)return{...this,_url:t};const o=this._url.split("?");return{...this,_url:o.length>1?o[0]+t+"?"+o[1]:this._url+t}},options(t,e=!1){return{...this,_options:e?t:u(this._options,t)}},headers(t){const e=t?Array.isArray(t)?Object.fromEntries(t):"entries"in t?Object.fromEntries(t.entries()):t:{};return{...this,_options:u(this._options,{headers:e})}},accept(t){return this.headers({Accept:t})},content(t){return this.headers({[S]:t})},auth(t){return this.headers({Authorization:t})},catcher(t,e){const o=new Map(this._catchers);return o.set(t,e),{...this,_catchers:o}},catcherFallback(t){return this.catcher(w,t)},resolve(t,e=!1){return{...this,_resolvers:e?[t]:[...this._resolvers,t]}},defer(t,e=!1){return{...this,_deferred:e?[t]:[...this._deferred,t]}},middlewares(t,e=!1){return{...this,_middlewares:e?t:[...this._middlewares,...t]}},fetch(t=this._options.method,e="",o=null){let a=this.url(e).options({method:t});const i=C(a._options.headers),l=this._config.polyfill("FormData",!1),f=typeof o=="object"&&!(l&&o instanceof l)&&(!a._options.headers||!i||P(i));return a=o?f?a.json(o,i):a.body(o):a,U(a._deferred.reduce((m,E)=>E(m,m._url,m._options),a))},get(t=""){return this.fetch("GET",t)},delete(t=""){return this.fetch("DELETE",t)},put(t,e=""){return this.fetch("PUT",e,t)},post(t,e=""){return this.fetch("POST",e,t)},patch(t,e=""){return this.fetch("PATCH",e,t)},head(t=""){return this.fetch("HEAD",t)},opts(t=""){return this.fetch("OPTIONS",t)},body(t){return{...this,_options:{...this._options,body:t}}},json(t,e){const o=C(this._options.headers);return this.content(e||P(o)&&o||H).body(JSON.stringify(t))}};function p(t="",e={}){return{...k,_url:t,_options:e}}p.default=p;p.options=L;p.errorType=I;p.polyfills=N;p.WretchError=x;fetch(R,{credentials:"same-origin",headers:{"Content-Type":"application/json"},method:"GET",mode:"same-origin",signal:AbortSignal.timeout(5e3)}).then(F);p(R).content("application/json").options({credentials:"same-origin",mode:"same-origin",signal:AbortSignal.timeout(5e3)}).get().json().catch();
const E="wp-json",T=`/${E}/wc/store/cart`,t=`/${E}/wc/store/cart/add-item`,s="Nonce",_="retry-after",I="x-sentry-rate-limits";export{I as E,t as R,_ as a,s as b,T as c};
//# sourceMappingURL=api2.js.map

File diff suppressed because one or more lines are too long

View file

@ -1 +0,0 @@
//# sourceMappingURL=cart-add-item.js.map

View file

@ -1 +0,0 @@
{"version":3,"file":"cart-add-item.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}

View file

@ -1 +1 @@
{"version":3,"file":"chunk-7BKSRZNG.js","sources":["../../../../../../node_modules/.pnpm/remeda@2.12.1/node_modules/remeda/dist/chunk-ANXBDSUI.js","../../../../../../node_modules/.pnpm/remeda@2.12.1/node_modules/remeda/dist/chunk-7BKSRZNG.js"],"sourcesContent":["var e={done:!0,hasNext:!1},s={done:!1,hasNext:!1},a=()=>e,o=t=>({hasNext:!0,next:t,done:!1});export{s as a,a as b,o as c};\n","import{a as s}from\"./chunk-ANXBDSUI.js\";function x(t,...o){let n=t,u=o.map(e=>\"lazy\"in e?f(e):void 0),p=0;for(;p<o.length;){if(u[p]===void 0||!B(n)){let i=o[p];n=i(n),p+=1;continue}let r=[];for(let i=p;i<o.length;i++){let l=u[i];if(l===void 0||(r.push(l),l.isSingle))break}let a=[];for(let i of n)if(A(i,a,r))break;let{isSingle:y}=r.at(-1);n=y?a[0]:a,p+=r.length}return n}function A(t,o,n){if(n.length===0)return o.push(t),!1;let u=t,p=s,e=!1;for(let[r,a]of n.entries()){let{index:y,items:i}=a;if(i.push(u),p=a(u,y,i),a.index+=1,p.hasNext){if(p.hasMany??!1){for(let l of p.next)if(A(l,o,n.slice(r+1)))return!0;return e}u=p.next}if(!p.hasNext)break;p.done&&(e=!0)}return p.hasNext&&o.push(u),e}function f(t){let{lazy:o,lazyArgs:n}=t,u=o(...n);return Object.assign(u,{isSingle:o.single??!1,index:0,items:[]})}function B(t){return typeof t==\"string\"||typeof t==\"object\"&&t!==null&&Symbol.iterator in t}export{x as a};\n"],"names":["s","x","t","o","n","u","e","f","p","B","i","l","a","A","y","r"],"mappings":"AAAG,IAAwBA,EAAE,CAAC,KAAK,GAAG,QAAQ,EAAE,ECAR,SAASC,EAAEC,KAAKC,EAAE,CAAC,IAAIC,EAAEF,EAAEG,EAAEF,EAAE,IAAIG,GAAG,SAASA,EAAEC,EAAED,CAAC,EAAE,MAAM,EAAEE,EAAE,EAAE,KAAKA,EAAEL,EAAE,QAAQ,CAAC,GAAGE,EAAEG,CAAC,IAAI,QAAQ,CAACC,EAAEL,CAAC,EAAE,CAAC,IAAIM,EAAEP,EAAEK,CAAC,EAAEJ,EAAEM,EAAEN,CAAC,EAAEI,GAAG,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAA,EAAG,QAAQE,EAAEF,EAAEE,EAAEP,EAAE,OAAOO,IAAI,CAAC,IAAIC,EAAEN,EAAEK,CAAC,EAAE,GAAGC,IAAI,SAAS,EAAE,KAAKA,CAAC,EAAEA,EAAE,UAAU,KAAK,CAAC,IAAIC,EAAE,GAAG,QAAQF,KAAKN,EAAE,GAAGS,EAAEH,EAAEE,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,SAASE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAEV,EAAEU,EAAEF,EAAE,CAAC,EAAEA,EAAEJ,GAAG,EAAE,MAAM,CAAC,OAAOJ,CAAC,CAAC,SAASS,EAAEX,EAAEC,EAAEC,EAAE,CAAC,GAAGA,EAAE,SAAS,EAAE,OAAOD,EAAE,KAAKD,CAAC,EAAE,GAAG,IAAIG,EAAEH,EAAEM,EAAER,EAAEM,EAAE,GAAG,OAAO,CAACS,EAAEH,CAAC,IAAIR,EAAE,QAAS,EAAC,CAAC,GAAG,CAAC,MAAMU,EAAE,MAAMJ,CAAC,EAAEE,EAAE,GAAGF,EAAE,KAAKL,CAAC,EAAEG,EAAEI,EAAEP,EAAES,EAAEJ,CAAC,EAAEE,EAAE,OAAO,EAAEJ,EAAE,QAAQ,CAAC,GAAGA,EAAE,SAAS,GAAG,CAAC,QAAQG,KAAKH,EAAE,KAAK,GAAGK,EAAEF,EAAER,EAAEC,EAAE,MAAMW,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,OAAOT,CAAC,CAACD,EAAEG,EAAE,IAAI,CAAC,GAAG,CAACA,EAAE,QAAQ,MAAMA,EAAE,OAAOF,EAAE,GAAG,CAAC,OAAOE,EAAE,SAASL,EAAE,KAAKE,CAAC,EAAEC,CAAC,CAAC,SAASC,EAAEL,EAAE,CAAC,GAAG,CAAC,KAAKC,EAAE,SAASC,CAAC,EAAEF,EAAEG,EAAEF,EAAE,GAAGC,CAAC,EAAE,OAAO,OAAO,OAAOC,EAAE,CAAC,SAASF,EAAE,QAAQ,GAAG,MAAM,EAAE,MAAM,CAAE,CAAA,CAAC,CAAC,CAAC,SAASM,EAAEP,EAAE,CAAC,OAAO,OAAOA,GAAG,UAAU,OAAOA,GAAG,UAAUA,IAAI,MAAM,OAAO,YAAYA,CAAC","x_google_ignoreList":[0,1]}
{"version":3,"file":"chunk-7BKSRZNG.js","sources":["../../../../../../node_modules/.pnpm/remeda@2.14.0/node_modules/remeda/dist/chunk-ANXBDSUI.js","../../../../../../node_modules/.pnpm/remeda@2.14.0/node_modules/remeda/dist/chunk-7BKSRZNG.js"],"sourcesContent":["var e={done:!0,hasNext:!1},s={done:!1,hasNext:!1},a=()=>e,o=t=>({hasNext:!0,next:t,done:!1});export{s as a,a as b,o as c};\n","import{a as s}from\"./chunk-ANXBDSUI.js\";function x(t,...o){let n=t,u=o.map(e=>\"lazy\"in e?f(e):void 0),p=0;for(;p<o.length;){if(u[p]===void 0||!B(n)){let i=o[p];n=i(n),p+=1;continue}let r=[];for(let i=p;i<o.length;i++){let l=u[i];if(l===void 0||(r.push(l),l.isSingle))break}let a=[];for(let i of n)if(A(i,a,r))break;let{isSingle:y}=r.at(-1);n=y?a[0]:a,p+=r.length}return n}function A(t,o,n){if(n.length===0)return o.push(t),!1;let u=t,p=s,e=!1;for(let[r,a]of n.entries()){let{index:y,items:i}=a;if(i.push(u),p=a(u,y,i),a.index+=1,p.hasNext){if(p.hasMany??!1){for(let l of p.next)if(A(l,o,n.slice(r+1)))return!0;return e}u=p.next}if(!p.hasNext)break;p.done&&(e=!0)}return p.hasNext&&o.push(u),e}function f(t){let{lazy:o,lazyArgs:n}=t,u=o(...n);return Object.assign(u,{isSingle:o.single??!1,index:0,items:[]})}function B(t){return typeof t==\"string\"||typeof t==\"object\"&&t!==null&&Symbol.iterator in t}export{x as a};\n"],"names":["s","x","t","o","n","u","e","f","p","B","i","l","a","A","y","r"],"mappings":"AAAG,IAAwBA,EAAE,CAAC,KAAK,GAAG,QAAQ,EAAE,ECAR,SAASC,EAAEC,KAAKC,EAAE,CAAC,IAAIC,EAAEF,EAAEG,EAAEF,EAAE,IAAIG,GAAG,SAASA,EAAEC,EAAED,CAAC,EAAE,MAAM,EAAEE,EAAE,EAAE,KAAKA,EAAEL,EAAE,QAAQ,CAAC,GAAGE,EAAEG,CAAC,IAAI,QAAQ,CAACC,EAAEL,CAAC,EAAE,CAAC,IAAIM,EAAEP,EAAEK,CAAC,EAAEJ,EAAEM,EAAEN,CAAC,EAAEI,GAAG,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAA,EAAG,QAAQE,EAAEF,EAAEE,EAAEP,EAAE,OAAOO,IAAI,CAAC,IAAIC,EAAEN,EAAEK,CAAC,EAAE,GAAGC,IAAI,SAAS,EAAE,KAAKA,CAAC,EAAEA,EAAE,UAAU,KAAK,CAAC,IAAIC,EAAE,GAAG,QAAQF,KAAKN,EAAE,GAAGS,EAAEH,EAAEE,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,SAASE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAEV,EAAEU,EAAEF,EAAE,CAAC,EAAEA,EAAEJ,GAAG,EAAE,MAAM,CAAC,OAAOJ,CAAC,CAAC,SAASS,EAAEX,EAAEC,EAAEC,EAAE,CAAC,GAAGA,EAAE,SAAS,EAAE,OAAOD,EAAE,KAAKD,CAAC,EAAE,GAAG,IAAIG,EAAEH,EAAEM,EAAER,EAAEM,EAAE,GAAG,OAAO,CAACS,EAAEH,CAAC,IAAIR,EAAE,QAAS,EAAC,CAAC,GAAG,CAAC,MAAMU,EAAE,MAAMJ,CAAC,EAAEE,EAAE,GAAGF,EAAE,KAAKL,CAAC,EAAEG,EAAEI,EAAEP,EAAES,EAAEJ,CAAC,EAAEE,EAAE,OAAO,EAAEJ,EAAE,QAAQ,CAAC,GAAGA,EAAE,SAAS,GAAG,CAAC,QAAQG,KAAKH,EAAE,KAAK,GAAGK,EAAEF,EAAER,EAAEC,EAAE,MAAMW,EAAE,CAAC,CAAC,EAAE,MAAM,GAAG,OAAOT,CAAC,CAACD,EAAEG,EAAE,IAAI,CAAC,GAAG,CAACA,EAAE,QAAQ,MAAMA,EAAE,OAAOF,EAAE,GAAG,CAAC,OAAOE,EAAE,SAASL,EAAE,KAAKE,CAAC,EAAEC,CAAC,CAAC,SAASC,EAAEL,EAAE,CAAC,GAAG,CAAC,KAAKC,EAAE,SAASC,CAAC,EAAEF,EAAEG,EAAEF,EAAE,GAAGC,CAAC,EAAE,OAAO,OAAO,OAAOC,EAAE,CAAC,SAASF,EAAE,QAAQ,GAAG,MAAM,EAAE,MAAM,CAAE,CAAA,CAAC,CAAC,CAAC,SAASM,EAAEP,EAAE,CAAC,OAAO,OAAOA,GAAG,UAAU,OAAOA,GAAG,UAAUA,IAAI,MAAM,OAAO,YAAYA,CAAC","x_google_ignoreList":[0,1]}

View file

@ -1,2 +1,2 @@
import{x as m}from"./chunk-7BKSRZNG.js";import{e as n,f as a,g as c,h as o}from"./erreurs.js";import{E as s,r as E,l as i}from"./Either.js";import"./exports.js";function p(e){return e!==null}function l(e){return e===void 0?!0:typeof e=="string"||Array.isArray(e)?e.length===0:Object.keys(e).length===0}const f=e=>e,L=e=>r=>s.encase(()=>e.querySelector(r)).mapLeft(t=>n(c(r))).chain(t=>p(t)?E(t):i(n(o(r)))),R=e=>r=>s.encase(()=>m(e.querySelectorAll(r),Array.from)).mapLeft(t=>n(c(r))).chain(t=>l(t)?i(n(o(r))):E(t)),S=e=>e.caseOf({Left:a,Right:f}),g=e=>e.caseOf({Left:a,Right:f});export{L as a,S as b,g as c,R as r};
import{x as m}from"./chunk-7BKSRZNG.js";import{e as n,f as a,g as c,h as o}from"./erreurs.js";import{E as s,r as E,l as i}from"./Either.js";import"./exports.js";function p(e){return e!==null}function l(e){return e===void 0?!0:typeof e=="string"||Array.isArray(e)?e.length===0:Object.keys(e).length===0}const f=e=>e,L=e=>r=>s.encase(()=>e.querySelector(r)).mapLeft(t=>n(c(r))).chain(t=>p(t)?E(t):i(n(o(r)))),R=e=>r=>s.encase(()=>m(e.querySelectorAll(r),Array.from)).mapLeft(t=>n(c(r))).chain(t=>l(t)?i(n(o(r))):E(t)),S=e=>e.caseOf({Left:a,Right:f}),g=e=>e.caseOf({Left:a,Right:f});export{g as a,R as b,L as c,S as r};
//# sourceMappingURL=dom2.js.map

File diff suppressed because one or more lines are too long

View file

@ -1,2 +1,2 @@
import{c as o}from"./exports.js";const u=r=>`Le selecteur "${r}" est invalide`,d=r=>`La requête "${r}" n'a retourné aucun Élément.`,h=r=>new SyntaxError(r);class s extends Error{constructor(e="400 BadRequestError"){super(e),this.name="BadRequestError"}}class t extends Error{constructor(e="401 UnauthorizedError"){super(e),this.name="UnauthorizedError"}}class n extends Error{constructor(e="404 NotFoundError"){super(e),this.name="NotFoundError"}}class a extends Error{constructor(e="500 ServerError"){super(e),this.name="ServerError"}}class E extends Error{constructor(e){super(JSON.stringify(e)),this.name="UnknownError"}}const i=r=>new E(r),l=r=>{throw r},w=r=>{throw new s(`(${r.code}) ${r.message}`)},m=r=>{throw new t(`(${r.code}) ${r.message}`)},p=r=>{throw new n(`(${r.code}) ${r.message}`)},v=r=>{throw new a(`(${r.code}) ${r.message}`)},R=r=>o(r),S=r=>{throw o(r),r};export{i as E,m as a,p as b,v as c,l as d,h as e,S as f,u as g,d as h,w as l,R as r};
import{$ as o}from"./exports.js";const u=r=>`Le selecteur "${r}" est invalide`,d=r=>`La requête "${r}" n'a retourné aucun Élément.`,h=r=>new SyntaxError(r);class s extends Error{constructor(e="400 BadRequestError"){super(e),this.name="BadRequestError"}}class t extends Error{constructor(e="401 UnauthorizedError"){super(e),this.name="UnauthorizedError"}}class n extends Error{constructor(e="404 NotFoundError"){super(e),this.name="NotFoundError"}}class E extends Error{constructor(e="500 ServerError"){super(e),this.name="ServerError"}}class a extends Error{constructor(e){super(JSON.stringify(e)),this.name="UnknownError"}}const i=r=>new a(r),l=r=>{throw r},w=r=>{throw new s(`(${r.code}) ${r.message}`)},m=r=>{throw new t(`(${r.code}) ${r.message}`)},p=r=>{throw new n(`(${r.code}) ${r.message}`)},v=r=>{throw new E(r)},R=r=>o(r),S=r=>{throw o(r),r};export{i as E,w as a,m as b,p as c,l as d,h as e,S as f,u as g,d as h,v as l,R as r};
//# sourceMappingURL=erreurs.js.map

View file

@ -1 +1 @@
{"version":3,"file":"erreurs.js","sources":["../../src/scripts/lib/erreurs.ts"],"sourcesContent":["/**\n * Fonctions pour la création d'Erreurs.\n */\n\nimport { captureException } from \"@sentry/browser\";\n\nimport type { WCErrorBody } from \"../types/api/erreurs\";\n\n/* Messages d'erreur */\nexport const ERREUR_SYNTAXE_INVALIDE = (selecteur: string): string => `Le selecteur \"${selecteur}\" est invalide`;\nexport const ERREUR_SELECTEUR_INEXISTANT = (selecteur: string): string =>\n `La requête \"${selecteur}\" n'a retourné aucun Élément.`;\n\n/* Création d'erreurs */\nexport const creeSyntaxError = (message: string): SyntaxError => new SyntaxError(message);\n\n/* Types d'erreurs */\nexport class BadRequestError extends Error {\n constructor(message = \"400 BadRequestError\") {\n super(message);\n this.name = \"BadRequestError\";\n }\n}\nexport class UnauthorizedError extends Error {\n constructor(message = \"401 UnauthorizedError\") {\n super(message);\n this.name = \"UnauthorizedError\";\n }\n}\nexport class NotFoundError extends Error {\n constructor(message = \"404 NotFoundError\") {\n super(message);\n this.name = \"NotFoundError\";\n }\n}\nexport class ServerError extends Error {\n constructor(message = \"500 ServerError\") {\n super(message);\n this.name = \"ServerError\";\n }\n}\nexport class UnknownError extends Error {\n constructor(message: unknown) {\n super(JSON.stringify(message));\n this.name = \"UnknownError\";\n }\n}\n\n/* Fonction utilitaire pour créer ou lever des Erreurs */\nexport const Erreur = (message: string): Error => new Error(message);\nexport const ErreurInconnue = (erreur: unknown): UnknownError => new UnknownError(erreur);\n\n/* eslint-disable-next-line @typescript-eslint/no-unnecessary-type-parameters -- Permet d'indiquer\nle type d'Erreur à l'appel de la fonction. */\nexport const leveErreur = <E extends Error = Error>(erreur: E): never => {\n throw erreur;\n};\nexport const leveBadRequestError = (erreur: WCErrorBody): never => {\n throw new BadRequestError(`(${erreur.code}) ${erreur.message}`);\n};\nexport const leveUnauthorizedError = (erreur: WCErrorBody): never => {\n throw new UnauthorizedError(`(${erreur.code}) ${erreur.message}`);\n};\nexport const leveNotFoundError = (erreur: WCErrorBody): never => {\n throw new NotFoundError(`(${erreur.code}) ${erreur.message}`);\n};\nexport const leveServerError = (erreur: WCErrorBody): never => {\n throw new ServerError(`(${erreur.code}) ${erreur.message}`);\n};\nexport const leveUnknownError = (erreur: unknown): never => {\n throw new UnknownError(erreur);\n};\n\n/* eslint-disable-next-line @typescript-eslint/no-unnecessary-type-parameters -- Permet d'indiquer\nle type d'Erreur à l'appel de la fonction. */\nexport const reporteErreur = <E extends Error>(erreur: E): string => captureException(erreur);\n\n/**\n * Reporte une Erreur au service GlitchTip puis la lève sous forme d'Exception.\n * @param erreur\n */\n/* eslint-disable-next-line @typescript-eslint/no-unnecessary-type-parameters -- Permet d'indiquer\nle type d'Erreur à l'appel de la fonction. */\nexport const reporteEtLeveErreur = <E extends Error>(erreur: E): never => {\n captureException(erreur);\n throw erreur;\n};\n"],"names":["ERREUR_SYNTAXE_INVALIDE","selecteur","ERREUR_SELECTEUR_INEXISTANT","creeSyntaxError","message","BadRequestError","UnauthorizedError","NotFoundError","ServerError","UnknownError","ErreurInconnue","erreur","leveErreur","leveBadRequestError","leveUnauthorizedError","leveNotFoundError","leveServerError","reporteErreur","captureException","reporteEtLeveErreur"],"mappings":"iCASO,MAAMA,EAA2BC,GAA8B,iBAAiBA,CAAS,iBACnFC,EAA+BD,GAC1C,eAAeA,CAAS,gCAGbE,EAAmBC,GAAiC,IAAI,YAAYA,CAAO,EAGjF,MAAMC,UAAwB,KAAM,CACzC,YAAYD,EAAU,sBAAuB,CAC3C,MAAMA,CAAO,EACb,KAAK,KAAO,iBACd,CACF,CACO,MAAME,UAA0B,KAAM,CAC3C,YAAYF,EAAU,wBAAyB,CAC7C,MAAMA,CAAO,EACb,KAAK,KAAO,mBACd,CACF,CACO,MAAMG,UAAsB,KAAM,CACvC,YAAYH,EAAU,oBAAqB,CACzC,MAAMA,CAAO,EACb,KAAK,KAAO,eACd,CACF,CACO,MAAMI,UAAoB,KAAM,CACrC,YAAYJ,EAAU,kBAAmB,CACvC,MAAMA,CAAO,EACb,KAAK,KAAO,aACd,CACF,CACO,MAAMK,UAAqB,KAAM,CACtC,YAAYL,EAAkB,CACtB,MAAA,KAAK,UAAUA,CAAO,CAAC,EAC7B,KAAK,KAAO,cACd,CACF,CAIO,MAAMM,EAAkBC,GAAkC,IAAIF,EAAaE,CAAM,EAI3EC,EAAuCD,GAAqB,CACjE,MAAAA,CACR,EACaE,EAAuBF,GAA+B,CAC3D,MAAA,IAAIN,EAAgB,IAAIM,EAAO,IAAI,KAAKA,EAAO,OAAO,EAAE,CAChE,EACaG,EAAyBH,GAA+B,CAC7D,MAAA,IAAIL,EAAkB,IAAIK,EAAO,IAAI,KAAKA,EAAO,OAAO,EAAE,CAClE,EACaI,EAAqBJ,GAA+B,CACzD,MAAA,IAAIJ,EAAc,IAAII,EAAO,IAAI,KAAKA,EAAO,OAAO,EAAE,CAC9D,EACaK,EAAmBL,GAA+B,CACvD,MAAA,IAAIH,EAAY,IAAIG,EAAO,IAAI,KAAKA,EAAO,OAAO,EAAE,CAC5D,EAOaM,EAAkCN,GAAsBO,EAAiBP,CAAM,EAQ/EQ,EAAwCR,GAAqB,CACxE,MAAAO,EAAiBP,CAAM,EACjBA,CACR"}
{"version":3,"file":"erreurs.js","sources":["../../src/scripts/lib/erreurs.ts"],"sourcesContent":["/**\n * Fonctions pour la création d'Erreurs.\n */\n\nimport { captureException } from \"@sentry/browser\";\n\nimport type { WCErrorBody } from \"../types/api/erreurs\";\n\n/* Messages d'erreur */\nexport const ERREUR_SYNTAXE_INVALIDE = (selecteur: string): string => `Le selecteur \"${selecteur}\" est invalide`;\nexport const ERREUR_SELECTEUR_INEXISTANT = (selecteur: string): string =>\n `La requête \"${selecteur}\" n'a retourné aucun Élément.`;\n\n/* Création d'erreurs */\nexport const creeSyntaxError = (message: string): SyntaxError => new SyntaxError(message);\n\n/* Types d'erreurs */\nexport class BadRequestError extends Error {\n constructor(message = \"400 BadRequestError\") {\n super(message);\n this.name = \"BadRequestError\";\n }\n}\nexport class UnauthorizedError extends Error {\n constructor(message = \"401 UnauthorizedError\") {\n super(message);\n this.name = \"UnauthorizedError\";\n }\n}\nexport class NotFoundError extends Error {\n constructor(message = \"404 NotFoundError\") {\n super(message);\n this.name = \"NotFoundError\";\n }\n}\nexport class ServerError extends Error {\n constructor(message = \"500 ServerError\") {\n super(message);\n this.name = \"ServerError\";\n }\n}\nexport class UnknownError extends Error {\n constructor(message: unknown) {\n super(JSON.stringify(message));\n this.name = \"UnknownError\";\n }\n}\n\n/* Fonction utilitaire pour créer ou lever des Erreurs */\nexport const Erreur = (message: string): Error => new Error(message);\nexport const ErreurInconnue = (erreur: unknown): UnknownError => new UnknownError(erreur);\n\n/* eslint-disable-next-line @typescript-eslint/no-unnecessary-type-parameters -- Permet d'indiquer\nle type d'Erreur à l'appel de la fonction. */\nexport const leveErreur = <E extends Error = Error>(erreur: E): never => {\n throw erreur;\n};\nexport const leveBadRequestError = (erreur: WCErrorBody): never => {\n throw new BadRequestError(`(${erreur.code}) ${erreur.message}`);\n};\nexport const leveUnauthorizedError = (erreur: WCErrorBody): never => {\n throw new UnauthorizedError(`(${erreur.code}) ${erreur.message}`);\n};\nexport const leveNotFoundError = (erreur: WCErrorBody): never => {\n throw new NotFoundError(`(${erreur.code}) ${erreur.message}`);\n};\nexport const leveServerError = (message: string): never => {\n throw new ServerError(message);\n};\nexport const leveUnknownError = (erreur: unknown): never => {\n throw new UnknownError(erreur);\n};\n\n/* eslint-disable-next-line @typescript-eslint/no-unnecessary-type-parameters -- Permet d'indiquer\nle type d'Erreur à l'appel de la fonction. */\nexport const reporteErreur = <E extends Error>(erreur: E): string => captureException(erreur);\n\n/**\n * Reporte une Erreur au service GlitchTip puis la lève sous forme d'Exception.\n * @param erreur\n */\n/* eslint-disable-next-line @typescript-eslint/no-unnecessary-type-parameters -- Permet d'indiquer\nle type d'Erreur à l'appel de la fonction. */\nexport const reporteEtLeveErreur = <E extends Error>(erreur: E): never => {\n captureException(erreur);\n throw erreur;\n};\n"],"names":["ERREUR_SYNTAXE_INVALIDE","selecteur","ERREUR_SELECTEUR_INEXISTANT","creeSyntaxError","message","BadRequestError","UnauthorizedError","NotFoundError","ServerError","UnknownError","ErreurInconnue","erreur","leveErreur","leveBadRequestError","leveUnauthorizedError","leveNotFoundError","leveServerError","reporteErreur","captureException","reporteEtLeveErreur"],"mappings":"iCASO,MAAMA,EAA2BC,GAA8B,iBAAiBA,CAAS,iBACnFC,EAA+BD,GAC1C,eAAeA,CAAS,gCAGbE,EAAmBC,GAAiC,IAAI,YAAYA,CAAO,EAGjF,MAAMC,UAAwB,KAAM,CACzC,YAAYD,EAAU,sBAAuB,CAC3C,MAAMA,CAAO,EACb,KAAK,KAAO,iBACd,CACF,CACO,MAAME,UAA0B,KAAM,CAC3C,YAAYF,EAAU,wBAAyB,CAC7C,MAAMA,CAAO,EACb,KAAK,KAAO,mBACd,CACF,CACO,MAAMG,UAAsB,KAAM,CACvC,YAAYH,EAAU,oBAAqB,CACzC,MAAMA,CAAO,EACb,KAAK,KAAO,eACd,CACF,CACO,MAAMI,UAAoB,KAAM,CACrC,YAAYJ,EAAU,kBAAmB,CACvC,MAAMA,CAAO,EACb,KAAK,KAAO,aACd,CACF,CACO,MAAMK,UAAqB,KAAM,CACtC,YAAYL,EAAkB,CACtB,MAAA,KAAK,UAAUA,CAAO,CAAC,EAC7B,KAAK,KAAO,cACd,CACF,CAIO,MAAMM,EAAkBC,GAAkC,IAAIF,EAAaE,CAAM,EAI3EC,EAAuCD,GAAqB,CACjE,MAAAA,CACR,EACaE,EAAuBF,GAA+B,CAC3D,MAAA,IAAIN,EAAgB,IAAIM,EAAO,IAAI,KAAKA,EAAO,OAAO,EAAE,CAChE,EACaG,EAAyBH,GAA+B,CAC7D,MAAA,IAAIL,EAAkB,IAAIK,EAAO,IAAI,KAAKA,EAAO,OAAO,EAAE,CAClE,EACaI,EAAqBJ,GAA+B,CACzD,MAAA,IAAIJ,EAAc,IAAII,EAAO,IAAI,KAAKA,EAAO,OAAO,EAAE,CAC9D,EACaK,EAAmBZ,GAA2B,CACnD,MAAA,IAAII,EAAYJ,CAAO,CAC/B,EAOaa,EAAkCN,GAAsBO,EAAiBP,CAAM,EAQ/EQ,EAAwCR,GAAqB,CACxE,MAAAO,EAAiBP,CAAM,EACjBA,CACR"}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,4 +1,4 @@
import{x as gt}from"./chunk-7BKSRZNG.js";import{b as me,c as ge}from"./api.js";import{i as J,t as _t,a as Ge,D as ae,l as f,g as yt,G as h,C as Et,f as O,o as _e,b as C,d as We,e as V,r as Ye,S as Ke,h as k,j as ce,n as vt,k as Xe,m,u as St,p as B,q as ye,s as ue,v as Ee,w as bt,x as kt,y as ze,z as It,A as Z,B as Je,E as ve,F as y,H as Tt,I as Se,J as q,K as Ve,L as be,M as wt,N as ke,O as le,P as Rt,Q as Nt,R as P,T as Ct,U as $,V as Ot,W as $t,X as Pt,Y as Ie,Z as G,_ as Dt,$ as Ft}from"./exports.js";function xt(t,e,n=250,r,s,o,i){if(!o.exception||!o.exception.values||!i||!J(i.originalException,Error))return;const a=o.exception.values.length>0?o.exception.values[o.exception.values.length-1]:void 0;a&&(o.exception.values=Ht(Q(t,e,s,i.originalException,r,o.exception.values,a,0),n))}function Q(t,e,n,r,s,o,i,a){if(o.length>=n+1)return o;let c=[...o];if(J(r[s],Error)){Te(i,a);const u=t(e,r[s]),d=c.length;we(u,s,d,a),c=Q(t,e,n,r[s],s,[u,...c],u,d)}return Array.isArray(r.errors)&&r.errors.forEach((u,d)=>{if(J(u,Error)){Te(i,a);const l=t(e,u),g=c.length;we(l,`errors[${d}]`,g,a),c=Q(t,e,n,u,s,[l,...c],l,g)}}),c}function Te(t,e){t.mechanism=t.mechanism||{type:"generic",handled:!0},t.mechanism={...t.mechanism,...t.type==="AggregateError"&&{is_exception_group:!0},exception_id:e}}function we(t,e,n,r){t.mechanism=t.mechanism||{type:"generic",handled:!0},t.mechanism={...t.mechanism,type:"chained",source:e,exception_id:n,parent_id:r}}function Ht(t,e){return t.map(n=>(n.value&&(n.value=_t(n.value,e)),n))}const Mt=/^(?:(\w+):)\/\/(?:(\w+)(?::(\w+)?)?@)([\w.-]+)(?::(\d+))?\/(.+)/;function Lt(t){return t==="http"||t==="https"}function W(t,e=!1){const{host:n,path:r,pass:s,port:o,projectId:i,protocol:a,publicKey:c}=t;return`${a}://${c}${e&&s?`:${s}`:""}@${n}${o?`:${o}`:""}/${r&&`${r}/`}${i}`}function Ut(t){const e=Mt.exec(t);if(!e){Ge(()=>{console.error(`Invalid Sentry Dsn: ${t}`)});return}const[n,r,s="",o="",i="",a=""]=e.slice(1);let c="",u=a;const d=u.split("/");if(d.length>1&&(c=d.slice(0,-1).join("/"),u=d.pop()),u){const l=u.match(/^\d+/);l&&(u=l[0])}return Ze({host:o,pass:s,path:c,projectId:u,port:i,protocol:n,publicKey:r})}function Ze(t){return{protocol:t.protocol,publicKey:t.publicKey||"",pass:t.pass||"",host:t.host,port:t.port||"",path:t.path||"",projectId:t.projectId}}function jt(t){if(!ae)return!0;const{port:e,projectId:n,protocol:r}=t;return["protocol","publicKey","host","projectId"].find(i=>t[i]?!1:(f.error(`Invalid Sentry Dsn: ${i} missing`),!0))?!1:n.match(/^\d+$/)?Lt(r)?e&&isNaN(parseInt(e,10))?(f.error(`Invalid Sentry Dsn: Invalid port ${e}`),!1):!0:(f.error(`Invalid Sentry Dsn: Invalid protocol ${r}`),!1):(f.error(`Invalid Sentry Dsn: Invalid projectId ${n}`),!1)}function Bt(t){const e=typeof t=="string"?Ut(t):Ze(t);if(!(!e||!jt(e)))return e}class b extends Error{constructor(e,n="warn"){super(e),this.message=e,this.name=new.target.prototype.constructor.name,Object.setPrototypeOf(this,new.target.prototype),this.logLevel=n}}const A={},Re={};function w(t,e){A[t]=A[t]||[],A[t].push(e)}function R(t,e){Re[t]||(e(),Re[t]=!0)}function S(t,e){const n=t&&A[t];if(n)for(const r of n)try{r(e)}catch(s){ae&&f.error(`Error while triggering instrumentation handler.
import{x as gt}from"./chunk-7BKSRZNG.js";import{E as me,a as ge}from"./api2.js";import{i as J,t as _t,c as Ge,D as ae,l as f,g as yt,G as h,C as Et,f as O,o as _e,a as C,b as We,d as V,r as Ye,S as Ke,e as k,h as ce,n as vt,j as Xe,k as m,u as St,m as B,p as ye,q as ue,s as Ee,v as bt,w as kt,x as ze,y as It,z as Z,A as Je,B as ve,E as y,F as Tt,H as Se,I as q,J as Ve,K as be,L as wt,M as ke,N as le,O as Rt,P as Nt,Q as P,R as Ct,U as $,T as Ot,V as $t,W as Ie,X as Pt,Y as G,Z as Dt,_ as Ft}from"./exports.js";function xt(t,e,n=250,r,s,o,i){if(!o.exception||!o.exception.values||!i||!J(i.originalException,Error))return;const a=o.exception.values.length>0?o.exception.values[o.exception.values.length-1]:void 0;a&&(o.exception.values=Ht(Q(t,e,s,i.originalException,r,o.exception.values,a,0),n))}function Q(t,e,n,r,s,o,i,a){if(o.length>=n+1)return o;let c=[...o];if(J(r[s],Error)){Te(i,a);const u=t(e,r[s]),d=c.length;we(u,s,d,a),c=Q(t,e,n,r[s],s,[u,...c],u,d)}return Array.isArray(r.errors)&&r.errors.forEach((u,d)=>{if(J(u,Error)){Te(i,a);const l=t(e,u),g=c.length;we(l,`errors[${d}]`,g,a),c=Q(t,e,n,u,s,[l,...c],l,g)}}),c}function Te(t,e){t.mechanism=t.mechanism||{type:"generic",handled:!0},t.mechanism={...t.mechanism,...t.type==="AggregateError"&&{is_exception_group:!0},exception_id:e}}function we(t,e,n,r){t.mechanism=t.mechanism||{type:"generic",handled:!0},t.mechanism={...t.mechanism,type:"chained",source:e,exception_id:n,parent_id:r}}function Ht(t,e){return t.map(n=>(n.value&&(n.value=_t(n.value,e)),n))}const Mt=/^(?:(\w+):)\/\/(?:(\w+)(?::(\w+)?)?@)([\w.-]+)(?::(\d+))?\/(.+)/;function Lt(t){return t==="http"||t==="https"}function W(t,e=!1){const{host:n,path:r,pass:s,port:o,projectId:i,protocol:a,publicKey:c}=t;return`${a}://${c}${e&&s?`:${s}`:""}@${n}${o?`:${o}`:""}/${r&&`${r}/`}${i}`}function Ut(t){const e=Mt.exec(t);if(!e){Ge(()=>{console.error(`Invalid Sentry Dsn: ${t}`)});return}const[n,r,s="",o="",i="",a=""]=e.slice(1);let c="",u=a;const d=u.split("/");if(d.length>1&&(c=d.slice(0,-1).join("/"),u=d.pop()),u){const l=u.match(/^\d+/);l&&(u=l[0])}return Ze({host:o,pass:s,path:c,projectId:u,port:i,protocol:n,publicKey:r})}function Ze(t){return{protocol:t.protocol,publicKey:t.publicKey||"",pass:t.pass||"",host:t.host,port:t.port||"",path:t.path||"",projectId:t.projectId}}function jt(t){if(!ae)return!0;const{port:e,projectId:n,protocol:r}=t;return["protocol","publicKey","host","projectId"].find(i=>t[i]?!1:(f.error(`Invalid Sentry Dsn: ${i} missing`),!0))?!1:n.match(/^\d+$/)?Lt(r)?e&&isNaN(parseInt(e,10))?(f.error(`Invalid Sentry Dsn: Invalid port ${e}`),!1):!0:(f.error(`Invalid Sentry Dsn: Invalid protocol ${r}`),!1):(f.error(`Invalid Sentry Dsn: Invalid projectId ${n}`),!1)}function Bt(t){const e=typeof t=="string"?Ut(t):Ze(t);if(!(!e||!jt(e)))return e}class b extends Error{constructor(e,n="warn"){super(e),this.message=e,this.name=new.target.prototype.constructor.name,Object.setPrototypeOf(this,new.target.prototype),this.logLevel=n}}const A={},Re={};function w(t,e){A[t]=A[t]||[],A[t].push(e)}function R(t,e){Re[t]||(e(),Re[t]=!0)}function S(t,e){const n=t&&A[t];if(n)for(const r of n)try{r(e)}catch(s){ae&&f.error(`Error while triggering instrumentation handler.
Type: ${t}
Name: ${yt(r)}
Error:`,s)}}function At(t){const e="console";w(e,t),R(e,qt)}function qt(){"console"in h&&Et.forEach(function(t){t in h.console&&O(h.console,t,function(e){return _e[t]=e,function(...n){S("console",{args:n,level:t});const s=_e[t];s&&s.apply(h.console,n)}})})}const ee=h;function Gt(){if(!("fetch"in ee))return!1;try{return new Headers,new Request("http://www.example.com"),new Response,!0}catch{return!1}}function Ne(t){return t&&/^function\s+\w+\(\)\s+\{\s+\[native code\]\s+\}$/.test(t.toString())}function Qe(){if(typeof EdgeRuntime=="string")return!0;if(!Gt())return!1;if(Ne(ee.fetch))return!0;let t=!1;const e=ee.document;if(e&&typeof e.createElement=="function")try{const n=e.createElement("iframe");n.hidden=!0,e.head.appendChild(n),n.contentWindow&&n.contentWindow.fetch&&(t=Ne(n.contentWindow.fetch)),e.head.removeChild(n)}catch(n){ae&&f.warn("Could not create sandbox iframe for pure fetch check, bailing to window.fetch: ",n)}return t}function et(t,e){const n="fetch";w(n,t),R(n,()=>Wt(void 0,e))}function Wt(t,e=!1){e&&!Qe()||O(h,"fetch",function(n){return function(...r){const{method:s,url:o}=Yt(r),i={args:r,fetchData:{method:s,url:o},startTimestamp:C()*1e3};S("fetch",{...i});const a=new Error().stack;return n.apply(h,r).then(async c=>(S("fetch",{...i,endTimestamp:C()*1e3,response:c}),c),c=>{throw S("fetch",{...i,endTimestamp:C()*1e3,error:c}),We(c)&&c.stack===void 0&&(c.stack=a,V(c,"framesToPop",1)),c})}})}function te(t,e){return!!t&&typeof t=="object"&&!!t[e]}function Ce(t){return typeof t=="string"?t:t?te(t,"url")?t.url:t.toString?t.toString():"":""}function Yt(t){if(t.length===0)return{method:"GET",url:""};if(t.length===2){const[n,r]=t;return{url:Ce(n),method:te(r,"method")?String(r.method).toUpperCase():"GET"}}const e=t[0];return{url:Ce(e),method:te(e,"method")?String(e.method).toUpperCase():"GET"}}let H=null;function Kt(t){const e="error";w(e,t),R(e,Xt)}function Xt(){H=h.onerror,h.onerror=function(t,e,n,r,s){return S("error",{column:r,error:s,line:n,msg:t,url:e}),H&&!H.__SENTRY_LOADER__?H.apply(this,arguments):!1},h.onerror.__SENTRY_INSTRUMENTED__=!0}let M=null;function zt(t){const e="unhandledrejection";w(e,t),R(e,Jt)}function Jt(){M=h.onunhandledrejection,h.onunhandledrejection=function(t){return S("unhandledrejection",t),M&&!M.__SENTRY_LOADER__?M.apply(this,arguments):!0},h.onunhandledrejection.__SENTRY_INSTRUMENTED__=!0}function Vt(){return"npm"}function Zt(t){const e=[];function n(){return t===void 0||e.length<t}function r(i){return e.splice(e.indexOf(i),1)[0]||Promise.resolve(void 0)}function s(i){if(!n())return Ye(new b("Not adding Promise because buffer limit was reached."));const a=i();return e.indexOf(a)===-1&&e.push(a),a.then(()=>r(a)).then(null,()=>r(a).then(null,()=>{})),a}function o(i){return new Ke((a,c)=>{let u=e.length;if(!u)return a(!0);const d=setTimeout(()=>{i&&i>0&&a(!1)},i);e.forEach(l=>{k(l).then(()=>{--u||(clearTimeout(d),a(!0))},c)})})}return{$:e,add:s,drain:o}}function X(t){if(!t)return{};const e=t.match(/^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/);if(!e)return{};const n=e[6]||"",r=e[8]||"";return{host:e[4],path:e[5],protocol:e[2],search:n,hash:r,relative:e[5]+n+r}}const Qt=["fatal","error","warning","log","info","debug"];function en(t){return t==="warn"?"warning":Qt.includes(t)?t:"log"}function D(t,e=[]){return[t,e]}function tn(t,e){const[n,r]=t;return[n,[...r,e]]}function Oe(t,e){const n=t[1];for(const r of n){const s=r[0].type;if(e(r,s))return!0}return!1}function ne(t){return h.__SENTRY__&&h.__SENTRY__.encodePolyfill?h.__SENTRY__.encodePolyfill(t):new TextEncoder().encode(t)}function nn(t){const[e,n]=t;let r=JSON.stringify(e);function s(o){typeof r=="string"?r=typeof o=="string"?r+o:[ne(r),o]:r.push(typeof o=="string"?ne(o):o)}for(const o of n){const[i,a]=o;if(s(`

File diff suppressed because one or more lines are too long

View file

@ -1,2 +1,2 @@
const n=e=>t=>t instanceof e,s=n(HTMLSelectElement),o=e=>e instanceof Error;export{o as a,s as e};
const s=e=>t=>t instanceof e,n=s(HTMLSelectElement),o=e=>e instanceof Error,c=e=>e.status===500;export{c as a,o as b,n as e};
//# sourceMappingURL=gardes.js.map

View file

@ -1 +1 @@
{"version":3,"file":"gardes.js","sources":["../../src/scripts/lib/gardes.ts"],"sourcesContent":["import type { Constructor } from \"../types/classes\";\n\nconst estElement = <T extends HTMLElement>(typeElement: Constructor<T>) => (element: unknown): element is T =>\n element instanceof typeElement;\n\nexport const estHTMLSelectElement = estElement<HTMLSelectElement>(HTMLSelectElement);\n\nexport const estError = (erreur: unknown): erreur is Error => erreur instanceof Error;\n"],"names":["estElement","typeElement","element","estHTMLSelectElement","estError","erreur"],"mappings":"AAEA,MAAMA,EAAqCC,GAAiCC,GAC1EA,aAAmBD,EAERE,EAAuBH,EAA8B,iBAAiB,EAEtEI,EAAYC,GAAqCA,aAAkB"}
{"version":3,"file":"gardes.js","sources":["../../src/scripts/lib/gardes.ts"],"sourcesContent":["import type { Constructor } from \"../types/classes\";\n\nconst estElement = <T extends HTMLElement>(typeElement: Constructor<T>) => (element: unknown): element is T =>\n element instanceof typeElement;\n\nexport const estHTMLSelectElement = estElement<HTMLSelectElement>(HTMLSelectElement);\n\nexport const estError = (erreur: unknown): erreur is Error => erreur instanceof Error;\n\nexport const estReponse500 = (reponse: Response): boolean => reponse.status === 500;\n"],"names":["estElement","typeElement","element","estHTMLSelectElement","estError","erreur","estReponse500","reponse"],"mappings":"AAEA,MAAMA,EAAqCC,GAAiCC,GAC1EA,aAAmBD,EAERE,EAAuBH,EAA8B,iBAAiB,EAEtEI,EAAYC,GAAqCA,aAAkB,MAEnEC,EAAiBC,GAA+BA,EAAQ,SAAW"}

View file

@ -1,2 +1,2 @@
import{a as g,E as M}from"./api.js";import{E as h,r as o,l as f,M as p,n as u,j as c}from"./Either.js";var l;const y={liftEither(i){if(i.isRight())return Promise.resolve(i.extract());throw i.extract()},fromPromise(i){return i.then(y.liftEither)},throwE(i){throw i}};class m{constructor(t){this.runPromise=t,this[l]="EitherAsync",this["fantasy-land/chain"]=this.chain,this["fantasy-land/alt"]=this.alt,this.then=(r,e)=>this.run().then(r,e)}leftOrDefault(t){return this.run().then(r=>r.leftOrDefault(t))}orDefault(t){return this.run().then(r=>r.orDefault(t))}join(){return n(async t=>{const r=await this;if(r.isRight()){const e=await r.extract();return t.liftEither(e)}return t.liftEither(r)})}ap(t){return n(async r=>{const e=await t;if(e.isRight()){const a=await this.run();return a.isRight()?e.extract()(a.extract()):r.liftEither(a)}return r.liftEither(e)})}alt(t){return n(async r=>{const e=await this.run();if(e.isRight())return e.extract();{const a=await t;return r.liftEither(a)}})}extend(t){return n(async r=>{const e=await this.run();if(e.isRight()){const a=n.liftEither(e);return r.liftEither(o(t(a)))}return r.liftEither(e)})}async run(){try{return o(await this.runPromise(y))}catch(t){return f(t)}}bimap(t,r){return n(async e=>{const a=await this.run();try{return await e.liftEither(a.bimap(t,r))}catch(P){throw await P}})}map(t){return n(r=>this.runPromise(r).then(t))}mapLeft(t){return n(async r=>{try{return await this.runPromise(r)}catch(e){throw await t(e)}})}chain(t){return n(async r=>{const e=await this.runPromise(r);return r.fromPromise(t(e))})}chainLeft(t){return n(async r=>{try{return await this.runPromise(r)}catch(e){return r.fromPromise(t(e))}})}toMaybeAsync(){return s(async({liftMaybe:t})=>{const r=await this.run();return t(r.toMaybe())})}swap(){return n(async t=>{const r=await this.run();return r.isRight()&&t.throwE(r.extract()),t.liftEither(o(r.extract()))})}ifLeft(t){return n(async r=>{const e=await this.run();return e.ifLeft(t),r.liftEither(e)})}ifRight(t){return n(async r=>{const e=await this.run();return e.ifRight(t),r.liftEither(e)})}void(){return this.map(t=>{})}caseOf(t){return this.run().then(r=>r.caseOf(t))}finally(t){return n(({fromPromise:r})=>r(this.run().finally(t)))}}l=Symbol.toStringTag;const n=Object.assign(i=>new m(i),{fromPromise:i=>n(({fromPromise:t})=>t(i())),liftEither:i=>n(({liftEither:t})=>t(i)),lefts:i=>Promise.all(i.map(t=>t.run())).then(h.lefts),rights:i=>Promise.all(i.map(t=>t.run())).then(h.rights),sequence:i=>n(async t=>{let r=[];for await(const e of i){if(e.isLeft())return t.liftEither(e);r.push(e.extract())}return t.liftEither(o(r))}),all:i=>n.fromPromise(async()=>Promise.all(i).then(h.sequence))});m.prototype.constructor=n;var w;const E={liftMaybe(i){if(i.isJust())return Promise.resolve(i.extract());throw u},fromPromise(i){return i.then(E.liftMaybe)}};class b{constructor(t){this.runPromise=t,this[w]="MaybeAsync",this["fantasy-land/chain"]=this.chain,this["fantasy-land/filter"]=this.filter,this["fantasy-land/alt"]=this.alt}orDefault(t){return this.run().then(r=>r.orDefault(t))}join(){return s(async t=>{const r=await this.run();if(r.isJust()){const e=await r.extract();return t.liftMaybe(e)}return t.liftMaybe(u)})}ap(t){return s(async r=>{const e=await t;if(e.isJust()){const a=await this.run();return a.isJust()?e.extract()(a.extract()):r.liftMaybe(u)}return r.liftMaybe(u)})}alt(t){return s(async r=>{const e=await this.run();if(e.isJust())return e.extract();{const a=await t;return r.liftMaybe(a)}})}extend(t){return s(async r=>{const e=await this.run();if(e.isJust()){const a=s.liftMaybe(e);return r.liftMaybe(c(t(a)))}return r.liftMaybe(u)})}filter(t){return s(async r=>{const e=await this.run();return r.liftMaybe(e.filter(t))})}async run(){try{return c(await this.runPromise(E))}catch{return u}}map(t){return s(r=>this.runPromise(r).then(t))}chain(t){return s(async r=>{const e=await this.runPromise(r);return r.fromPromise(t(e))})}toEitherAsync(t){return n(async({liftEither:r})=>{const e=await this.run();return r(e.toEither(t))})}ifJust(t){return s(async r=>{const e=await this.run();return e.ifJust(t),r.liftMaybe(e)})}ifNothing(t){return s(async r=>{const e=await this.run();return e.ifNothing(t),r.liftMaybe(e)})}void(){return this.map(t=>{})}caseOf(t){return this.run().then(r=>r.caseOf(t))}finally(t){return s(({fromPromise:r})=>r(this.run().finally(t)))}then(t,r){return this.run().then(t,r)}}w=Symbol.toStringTag;const s=Object.assign(i=>new b(i),{catMaybes:i=>Promise.all(i).then(p.catMaybes),fromPromise:i=>s(({fromPromise:t})=>t(i())),liftMaybe:i=>s(({liftMaybe:t})=>t(i))});b.prototype.constructor=s;const x=_etats,d=()=>fetch(g,{credentials:"same-origin",headers:{Accept:"application/json","Content-Type":"application/json",[M]:x.nonce},method:"GET",mode:"same-origin",signal:AbortSignal.timeout(5e3)}).then(o).catch(f);n.fromPromise(d).map(i=>i.json()).ifLeft(i=>{console.error(i)});
import{c as g,b as M}from"./api2.js";import{E as h,r as o,l as f,M as p,n as u,j as c}from"./Either.js";var l;const y={liftEither(i){if(i.isRight())return Promise.resolve(i.extract());throw i.extract()},fromPromise(i){return i.then(y.liftEither)},throwE(i){throw i}};class m{constructor(t){this.runPromise=t,this[l]="EitherAsync",this["fantasy-land/chain"]=this.chain,this["fantasy-land/alt"]=this.alt,this.then=(r,e)=>this.run().then(r,e)}leftOrDefault(t){return this.run().then(r=>r.leftOrDefault(t))}orDefault(t){return this.run().then(r=>r.orDefault(t))}join(){return n(async t=>{const r=await this;if(r.isRight()){const e=await r.extract();return t.liftEither(e)}return t.liftEither(r)})}ap(t){return n(async r=>{const e=await t;if(e.isRight()){const a=await this.run();return a.isRight()?e.extract()(a.extract()):r.liftEither(a)}return r.liftEither(e)})}alt(t){return n(async r=>{const e=await this.run();if(e.isRight())return e.extract();{const a=await t;return r.liftEither(a)}})}extend(t){return n(async r=>{const e=await this.run();if(e.isRight()){const a=n.liftEither(e);return r.liftEither(o(t(a)))}return r.liftEither(e)})}async run(){try{return o(await this.runPromise(y))}catch(t){return f(t)}}bimap(t,r){return n(async e=>{const a=await this.run();try{return await e.liftEither(a.bimap(t,r))}catch(P){throw await P}})}map(t){return n(r=>this.runPromise(r).then(t))}mapLeft(t){return n(async r=>{try{return await this.runPromise(r)}catch(e){throw await t(e)}})}chain(t){return n(async r=>{const e=await this.runPromise(r);return r.fromPromise(t(e))})}chainLeft(t){return n(async r=>{try{return await this.runPromise(r)}catch(e){return r.fromPromise(t(e))}})}toMaybeAsync(){return s(async({liftMaybe:t})=>{const r=await this.run();return t(r.toMaybe())})}swap(){return n(async t=>{const r=await this.run();return r.isRight()&&t.throwE(r.extract()),t.liftEither(o(r.extract()))})}ifLeft(t){return n(async r=>{const e=await this.run();return e.ifLeft(t),r.liftEither(e)})}ifRight(t){return n(async r=>{const e=await this.run();return e.ifRight(t),r.liftEither(e)})}void(){return this.map(t=>{})}caseOf(t){return this.run().then(r=>r.caseOf(t))}finally(t){return n(({fromPromise:r})=>r(this.run().finally(t)))}}l=Symbol.toStringTag;const n=Object.assign(i=>new m(i),{fromPromise:i=>n(({fromPromise:t})=>t(i())),liftEither:i=>n(({liftEither:t})=>t(i)),lefts:i=>Promise.all(i.map(t=>t.run())).then(h.lefts),rights:i=>Promise.all(i.map(t=>t.run())).then(h.rights),sequence:i=>n(async t=>{let r=[];for await(const e of i){if(e.isLeft())return t.liftEither(e);r.push(e.extract())}return t.liftEither(o(r))}),all:i=>n.fromPromise(async()=>Promise.all(i).then(h.sequence))});m.prototype.constructor=n;var w;const b={liftMaybe(i){if(i.isJust())return Promise.resolve(i.extract());throw u},fromPromise(i){return i.then(b.liftMaybe)}};class E{constructor(t){this.runPromise=t,this[w]="MaybeAsync",this["fantasy-land/chain"]=this.chain,this["fantasy-land/filter"]=this.filter,this["fantasy-land/alt"]=this.alt}orDefault(t){return this.run().then(r=>r.orDefault(t))}join(){return s(async t=>{const r=await this.run();if(r.isJust()){const e=await r.extract();return t.liftMaybe(e)}return t.liftMaybe(u)})}ap(t){return s(async r=>{const e=await t;if(e.isJust()){const a=await this.run();return a.isJust()?e.extract()(a.extract()):r.liftMaybe(u)}return r.liftMaybe(u)})}alt(t){return s(async r=>{const e=await this.run();if(e.isJust())return e.extract();{const a=await t;return r.liftMaybe(a)}})}extend(t){return s(async r=>{const e=await this.run();if(e.isJust()){const a=s.liftMaybe(e);return r.liftMaybe(c(t(a)))}return r.liftMaybe(u)})}filter(t){return s(async r=>{const e=await this.run();return r.liftMaybe(e.filter(t))})}async run(){try{return c(await this.runPromise(b))}catch{return u}}map(t){return s(r=>this.runPromise(r).then(t))}chain(t){return s(async r=>{const e=await this.runPromise(r);return r.fromPromise(t(e))})}toEitherAsync(t){return n(async({liftEither:r})=>{const e=await this.run();return r(e.toEither(t))})}ifJust(t){return s(async r=>{const e=await this.run();return e.ifJust(t),r.liftMaybe(e)})}ifNothing(t){return s(async r=>{const e=await this.run();return e.ifNothing(t),r.liftMaybe(e)})}void(){return this.map(t=>{})}caseOf(t){return this.run().then(r=>r.caseOf(t))}finally(t){return s(({fromPromise:r})=>r(this.run().finally(t)))}then(t,r){return this.run().then(t,r)}}w=Symbol.toStringTag;const s=Object.assign(i=>new E(i),{catMaybes:i=>Promise.all(i).then(p.catMaybes),fromPromise:i=>s(({fromPromise:t})=>t(i())),liftMaybe:i=>s(({liftMaybe:t})=>t(i))});E.prototype.constructor=s;const x=_etats,d=()=>fetch(g,{credentials:"same-origin",headers:{Accept:"application/json","Content-Type":"application/json",[M]:x.nonce},method:"GET",mode:"same-origin",signal:AbortSignal.timeout(5e3)}).then(o).catch(f);n.fromPromise(d).map(i=>i.json()).ifLeft(i=>{console.error(i)});
//# sourceMappingURL=gestion-panier.js.map

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,2 +1,2 @@
import{r as e,a as r}from"./dom2.js";import"./chunk-7BKSRZNG.js";import"./erreurs.js";import"./exports.js";import"./Either.js";const p=e(document),u=r(document);export{p as a,u as r};
import{b as e,c as r}from"./dom2.js";import"./chunk-7BKSRZNG.js";import"./erreurs.js";import"./exports.js";import"./Either.js";const p=e(document),u=r(document);export{p as a,u as r};
//# sourceMappingURL=utils.js.map

View file

@ -0,0 +1,58 @@
<?php
/**
* Le modèle de la Page Panier (« Cart »).
*/
declare(strict_types=1);
use Timber\Timber;
use function Crell\fp\pipe;
// Importe la fonction pour récupérer les informations affichées des Produits dans le Panier
require_once __DIR__ . "/src/inc/TraitementInformations.php";
// Contexte et modèles
$contexte = Timber::context();
$modeles = ["panier.twig"];
// Récupère les informations affichés des Produits du Panier
$panier = [];
$sous_total_panier = WC()->cart->get_subtotal();
$total_panier = WC()->cart->get_total("");
foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) {
$panier[$cart_item_key] = [
"cle" => $cart_item_key,
"id_variation" => $cart_item["variation_id"],
"image" => pipe(
$cart_item["data"]?->get_image_id(),
fn($id) => wp_get_attachment_image($id, "medium", false, ["loading" => "lazy"]),
),
"prix" => $cart_item["data"]?->get_price(),
"quantite" => $cart_item["quantity"],
"titre" => $cart_item["data"]?->get_title(),
];
}
$contexte["total_panier"] = $total_panier;
$contexte["sous_total_panier"] = $sous_total_panier;
$contexte["produits_panier"] = $panier;
// echo "<br><br><br><pre>";
// print_r(WC()->cart->get_cart());
// print_r($panier);
// echo "</pre>";
// Charge les styles de la page
function charge_styles_page_panier(): void {
wp_enqueue_style(
handle: "haiku-atelier-2024-styles-page-panier",
src: get_template_directory_uri() . "/assets/css/pages/page-panier.css",
deps: [],
ver: filemtime(get_template_directory() . "/assets/css/pages/page-panier.css"),
media: false,
);
}
add_action("wp_enqueue_scripts", "charge_styles_page_panier");
// Rendu
Timber::render(filenames: $modeles, data: $contexte);

View file

@ -21,8 +21,6 @@ function desactive_images_produit_woocommerce(): void {
* Désactive les champs liés aux images Produit de l'administration.
*/
function desactive_champs_admin_images_produit_woocommerce(): void {
// Désactive le champ « Image Produit »
remove_meta_box("postimagediv", "product", "side");
// Désactive le champ « Galerie d'images du Produit »
remove_meta_box("woocommerce-product-images", "product", "side");
}

View file

@ -2,6 +2,7 @@
:root {
/* Couleurs */
--couleur-blanc: #fff;
--couleur-gris: #eceaeb;
--couleur-bordeaux: #490918;
--couleur-jaune: #ebffb8;

View file

@ -41,13 +41,15 @@ body {
}
/**
* Force l'héritage des styles pour ces éléments
* 1. Force l'héritage des styles pour ces éléments.
* 2. Utilise la couleur primaire du site.
*/
button,
input,
select,
textarea {
font: inherit;
font: inherit; /* 1 */
accent-color: var(--couleur-jaune); /* 2 */
}
/**

View file

@ -0,0 +1,250 @@
// Styles pour le panneau « Your cart » du Panier
#panneau-panier {
border-right: 1px solid var(--couleur-noir);
> div {
place-content: center;
}
// Grille des Produits du Panier
.panneau__grille-produits {
display: flex;
flex-flow: column nowrap;
&__produit {
display: grid;
grid-template-columns: fit-content(100%) auto;
grid-template-rows: 1fr;
border-bottom: 1px solid var(--couleur-noir);
// Illustration du Produit
&__illustratif {
padding: 1rem;
text-align: center;
border-right: 1px solid var(--couleur-noir);
img {
aspect-ratio: 1;
width: fit-content;
margin: auto;
}
}
}
// Détail d'un Produit
.detail-produit {
display: flex;
flex-flow: column nowrap;
place-content: center;
width: fit-content;
margin: auto;
// padding: 2rem 0;
&__nom-prix {
display: flex;
flex-flow: row nowrap;
justify-content: space-between;
margin-bottom: 0.33rem;
}
&__description {
margin-bottom: 1rem;
}
// Sélecteur de quantité et bouton de suppression du Panier
&__actions {
display: grid;
grid-template-columns: 0.25fr 0.5fr 0.25fr;
grid-template-rows: 1fr 1fr;
place-content: center;
border: 1px solid var(--couleur-noir);
button:first-of-type {
grid-column: 1;
width: 3rem;
}
input {
grid-column: 2;
text-align: center;
background: initial;
border: initial;
border-right: 1px solid var(--couleur-noir);
border-left: 1px solid var(--couleur-noir);
}
button:nth-of-type(2) {
grid-column: 3;
width: 3rem;
}
button:last-of-type {
grid-column: span 3;
grid-row: 2;
padding: 0.25rem;
text-transform: lowercase;
border-top: 1px solid var(--couleur-noir);
}
}
}
}
// Choix des emballages
.panneau__emballages {
width: 100%;
padding: 1rem 0;
font-style: italic;
text-align: center;
letter-spacing: 0.5px;
border-bottom: 1px solid var(--couleur-noir);
// Un conteneur est nécessaire pour la bordure inférieure
&__conteneur {
width: fit-content;
margin: auto;
}
&__titre-prix p {
display: flex;
justify-content: space-between;
width: 100%;
span {
font-weight: 600;
font-style: initial;
}
}
&__choix {
display: flex;
flex-flow: row nowrap;
gap: 2rem;
text-transform: lowercase;
&__ligne {
display: flex;
flex-flow: row nowrap;
gap: 1ch;
place-items: center;
}
input, label {
cursor: pointer;
}
// TODO: Utiliser un SVG plutôt qu'un « x » ?
input[type="radio"] {
width: 1rem;
height: 1rem;
appearance: none;
border: 1px solid var(--couleur-noir);
&:checked {
background: var(--couleur-jaune);
&::before {
content: "x";
position: relative;
bottom: 25%;
left: 25%;
}
}
}
/**
* 1. Pour un alignement parfait du label avec la case à cocher.
*/
label {
padding-top: 1px; /* 1 */
font-size: 0.9rem;
}
}
}
// Instructions pour la commande et code promo
.panneau__instructions-code-promo {
width: 100%;
padding: 1rem 0;
text-align: center;
border-bottom: 1px solid var(--couleur-noir);
/**
* 1. Nécessaire pour ne pas qu'un espace vertical non souhaité apparaisse.
* 2. Applique une marge entre les instructions et le code promo de notre choix.
*/
&__instructions {
resize: vertical;
display: block; /* 1 */
margin: auto; /* 1 */
margin-bottom: 0.5rem; /* 2 */
padding: 0.5rem;
font-size: 0.8rem;
font-weight: 450;
letter-spacing: 0.5px;
background: initial;
border: 1px solid transparent;
}
&__code-promo {
display: flex;
flex-flow: row nowrap;
width: fit-content;
margin: auto;
input {
width: 30ch;
padding: 0.25rem;
background: var(--couleur-gris);
border: 1px solid var(--couleur-noir);
&::placeholder {
text-transform: lowercase;
}
}
button {
padding: 0.25rem 2rem;
color: var(--couleur-blanc);
text-transform: lowercase;
background: var(--couleur-noir);
border: 1px solid var(--couleur-noir);
border-left: initial;
}
}
}
.panneau__sous-totaux {
width: fit-content;
margin: auto;
padding: 1rem 0;
text-align: center;
p + p {
margin-top: 1rem;
}
&__ligne {
display: flex;
flex-flow: row nowrap;
justify-content: space-between;
font-style: italic;
strong {
font-weight: 600;
text-transform: lowercase;
}
&.sous-total strong {
font-style: normal;
}
}
&__conditions-livraison {
font-size: 0.8rem;
font-weight: 450;
color: grey;
}
}
}

View file

@ -0,0 +1,49 @@
// Styles pour la page Panier (« Cart »)
@forward "../layouts/panneau-panier";
/**
* 1. Applique une marge supérieure égale à la hauteur de l'en-tête pour qu'elle puisse s'afficher
* correctement.
*/
#page-panier {
/* Dimensions */
--menu-section-hauteur: var(--menu-categories-produits-hauteur);
/* Marges */
--menu-section-marges-bloc-debut: var(--en-tete-hauteur); /* 1 */
display: flex;
flex-flow: row wrap;
margin-top: var(--menu-section-marges-bloc-debut);
.panneau {
flex-basis: 50%;
border-top: 1px solid var(--couleur-noir);
border-bottom: 1px solid var(--couleur-noir);
// En-têtes de panneau (« Your cart / Your info >)
&__en-tete {
position: sticky;
top: var(--menu-section-marges-bloc-debut);
display: block;
align-content: center;
min-height: var(--menu-categories-produits-hauteur);
max-height: var(--menu-categories-produits-hauteur);
color: var(--couleur-gris);
text-align: center;
background: var(--couleur-noir);
h2 {
font-weight: 450;
font-style: italic;
color: var(--couleur-gris);
text-transform: uppercase;
letter-spacing: 1px;
background: var(--couleur-noir);
}
}
&:first-of-type {}
}
}

View file

@ -0,0 +1,115 @@
{% extends "base.twig" %}
{% block contenu %}
<main id="page-panier">
<section class="panneau" id="panneau-panier">
<header class="panneau__en-tete">
<h2>Your cart</h2>
</header>
<div class="panneau__grille-produits">
{% for produit in produits_panier %}
<article class="panneau__grille-produits__produit">
<div class="panneau__grille-produits__produit__illustratif">
{{ produit.image }}
</div>
<div class="panneau__grille-produits__produit__textuel detail-produit">
<h3 class="detail-produit__nom-prix">{{ produit.titre }}. <span>{{ produit.prix }} €</span></h3>
<p class="detail-produit__description">size 8</p>
<div class="detail-produit__actions">
<button type="button">-</button>
<input type="number" value="1" />
<button type="button">+</button>
<button type="button">Remove</button>
</div>
</div>
</article>
{% endfor %}
</div>
<div class="panneau__emballages">
<div class="panneau__emballages__conteneur">
<div class="panneau__emballages__titre-prix">
<p>Gift Bag <span>5 €</span></p>
</div>
<form class="panneau__emballages__choix">
<div class="panneau__emballages__choix__ligne">
<label for="emballages-tous-produits">To all products</label>
<input
id="emballages-tous-produits"
name="emballages"
type="radio"
value="emballages-tous-produits"
>
</div>
<div class="panneau__emballages__choix__ligne">
<label for="emballages-produits-specifiques">To specific products</label>
<input
id="emballages-produits-specifiques"
name="emballages"
type="radio"
value="emballages-produits-specifiques"
>
</div>
</form>
</div>
</div>
<div class="panneau__instructions-code-promo">
<textarea
class="panneau__instructions-code-promo__instructions"
cols="80"
id="instructions"
maxlength="2000"
minlength="10"
name="instructions"
placeholder="Add special instructions for your order: specify the products you want wrapped and how (i.e. all in one bag or separated), a gift message, etc."
resizable="false"
rows="3"
spellcheck="true"
></textarea>
<div class="panneau__instructions-code-promo__code-promo">
<input
id="code-promo"
name="code-promo"
placeholder="Discount code or gift card"
type="text"
maxlength="20"
minlength="3"
>
<button for="code-promo" type="button">Apply</button>
</div>
</div>
<div class="panneau__sous-totaux">
<p class="panneau__sous-totaux__ligne sous-total">
Subtotal: <strong>{{ sous_total_panier }} €</strong>
</p>
<p class="panneau__sous-totaux__ligne">
Shipping: <strong>Enter your shipping address.</strong>
</p>
<p class="panneau__sous-totaux__conditions-livraison">
Belgium and France: free shipping.<br>
Worldwide: free shipping on orders above 150 €.
</p>
</div>
<footer class="panneau__pied-de-page">
<p>Total: <span>{{ total_panier }} €</span></p>
</footer>
</section>
<section class="panneau" id="panneau-informations-client">
<header class="panneau__en-tete">
<h2>Your info</h2>
</header>
</section>
</main>
{% endblock contenu %}

View file

@ -2,7 +2,12 @@
<section class="logo">
<figure>
<picture>
<img alt="Haiku Atelier's Logo" src="{{ site.theme.link }}/assets/img/logos/logo-lines.svg" />
<img
alt="Haiku Atelier's Logo"
height="25.6"
src="{{ site.theme.link }}/assets/img/logos/logo-lines.svg"
width="80"
/>
</picture>
</figure>
</section>
@ -25,9 +30,8 @@
</nav>
<section class="compte-panier">
<a class="lien-bouton lien-compte" href="#">Account</a>
{# Bouton « Panier » avec l'indicateur de quantité de Produits #}
<a class="lien-bouton" data-contient-articles="{{ articles_presents }}" href="#" rel="cart">
<a class="lien-bouton" data-contient-articles="{{ articles_presents }}" href="{{ pages.cart.lien }}" rel="cart">
cart ({{ quantite_articles }})
</a>
</section>