2024-11-29
This commit is contained in:
parent
8b74ebf97c
commit
700299157c
66 changed files with 478 additions and 451 deletions
4
.vscode/settings.json
vendored
4
.vscode/settings.json
vendored
|
|
@ -29,6 +29,8 @@
|
|||
"ETATS",
|
||||
"etendu",
|
||||
"exts",
|
||||
"Fenetre",
|
||||
"FENETRE",
|
||||
"formatte",
|
||||
"generique",
|
||||
"geometricprecision",
|
||||
|
|
@ -44,12 +46,14 @@
|
|||
"multiformats",
|
||||
"paypal",
|
||||
"phpstan",
|
||||
"Planifiee",
|
||||
"prenom",
|
||||
"presentes",
|
||||
"problemes",
|
||||
"Proprietes",
|
||||
"rafraichissement",
|
||||
"rapprochee",
|
||||
"recalcul",
|
||||
"reponse",
|
||||
"requete",
|
||||
"resultat",
|
||||
|
|
|
|||
3
TODO.md
3
TODO.md
|
|
@ -3,14 +3,13 @@
|
|||
- [-] Bouton « Réinitialiser » pour les Adresses
|
||||
- Emails
|
||||
- Gestion des erreurs sur le Panier
|
||||
- Ajouter une flèche pour revenir en haut de la page
|
||||
- Menu Mobile
|
||||
- Reprendre pour suivre la maquette initiale
|
||||
- PayPal à faire
|
||||
- Styles pour les focus à faire
|
||||
- Boutons
|
||||
- Champs
|
||||
- Envoyer des emails aux deux clients
|
||||
- Reporter toutes les erreurs
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
89
composer.lock
generated
89
composer.lock
generated
|
|
@ -2288,16 +2288,16 @@
|
|||
},
|
||||
{
|
||||
"name": "symfony/clock",
|
||||
"version": "v7.1.6",
|
||||
"version": "v7.2.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/clock.git",
|
||||
"reference": "97bebc53548684c17ed696bc8af016880f0f098d"
|
||||
"reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/clock/zipball/97bebc53548684c17ed696bc8af016880f0f098d",
|
||||
"reference": "97bebc53548684c17ed696bc8af016880f0f098d",
|
||||
"url": "https://api.github.com/repos/symfony/clock/zipball/b81435fbd6648ea425d1ee96a2d8e68f4ceacd24",
|
||||
"reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
|
@ -2342,7 +2342,7 @@
|
|||
"time"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/clock/tree/v7.1.6"
|
||||
"source": "https://github.com/symfony/clock/tree/v7.2.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
|
@ -2358,7 +2358,7 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-09-25T14:20:29+00:00"
|
||||
"time": "2024-09-25T14:21:43+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/deprecation-contracts",
|
||||
|
|
@ -2899,20 +2899,21 @@
|
|||
},
|
||||
{
|
||||
"name": "symfony/translation",
|
||||
"version": "v7.1.6",
|
||||
"version": "v7.2.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/translation.git",
|
||||
"reference": "b9f72ab14efdb6b772f85041fa12f820dee8d55f"
|
||||
"reference": "dc89e16b44048ceecc879054e5b7f38326ab6cc5"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/translation/zipball/b9f72ab14efdb6b772f85041fa12f820dee8d55f",
|
||||
"reference": "b9f72ab14efdb6b772f85041fa12f820dee8d55f",
|
||||
"url": "https://api.github.com/repos/symfony/translation/zipball/dc89e16b44048ceecc879054e5b7f38326ab6cc5",
|
||||
"reference": "dc89e16b44048ceecc879054e5b7f38326ab6cc5",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.2",
|
||||
"symfony/deprecation-contracts": "^2.5|^3",
|
||||
"symfony/polyfill-mbstring": "~1.0",
|
||||
"symfony/translation-contracts": "^2.5|^3.0"
|
||||
},
|
||||
|
|
@ -2973,7 +2974,7 @@
|
|||
"description": "Provides tools to internationalize your application",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/translation/tree/v7.1.6"
|
||||
"source": "https://github.com/symfony/translation/tree/v7.2.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
|
@ -2989,7 +2990,7 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-09-28T12:35:13+00:00"
|
||||
"time": "2024-11-12T20:47:56+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/translation-contracts",
|
||||
|
|
@ -3071,16 +3072,16 @@
|
|||
},
|
||||
{
|
||||
"name": "symfony/uid",
|
||||
"version": "v7.1.6",
|
||||
"version": "v7.2.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/uid.git",
|
||||
"reference": "65befb3bb2d503bbffbd08c815aa38b472999917"
|
||||
"reference": "2d294d0c48df244c71c105a169d0190bfb080426"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/uid/zipball/65befb3bb2d503bbffbd08c815aa38b472999917",
|
||||
"reference": "65befb3bb2d503bbffbd08c815aa38b472999917",
|
||||
"url": "https://api.github.com/repos/symfony/uid/zipball/2d294d0c48df244c71c105a169d0190bfb080426",
|
||||
"reference": "2d294d0c48df244c71c105a169d0190bfb080426",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
|
@ -3125,7 +3126,7 @@
|
|||
"uuid"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/uid/tree/v7.1.6"
|
||||
"source": "https://github.com/symfony/uid/tree/v7.2.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
|
@ -3141,7 +3142,7 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-09-25T14:20:29+00:00"
|
||||
"time": "2024-09-25T14:21:43+00:00"
|
||||
},
|
||||
{
|
||||
"name": "timber/timber",
|
||||
|
|
@ -3247,16 +3248,16 @@
|
|||
},
|
||||
{
|
||||
"name": "twig/twig",
|
||||
"version": "v3.15.0",
|
||||
"version": "v3.16.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/twigphp/Twig.git",
|
||||
"reference": "2d5b3964cc21d0188633d7ddce732dc8e874db02"
|
||||
"reference": "475ad2dc97d65d8631393e721e7e44fb544f0561"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/twigphp/Twig/zipball/2d5b3964cc21d0188633d7ddce732dc8e874db02",
|
||||
"reference": "2d5b3964cc21d0188633d7ddce732dc8e874db02",
|
||||
"url": "https://api.github.com/repos/twigphp/Twig/zipball/475ad2dc97d65d8631393e721e7e44fb544f0561",
|
||||
"reference": "475ad2dc97d65d8631393e721e7e44fb544f0561",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
|
@ -3267,6 +3268,7 @@
|
|||
"symfony/polyfill-php81": "^1.29"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpstan/phpstan": "^2.0",
|
||||
"psr/container": "^1.0|^2.0",
|
||||
"symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0"
|
||||
},
|
||||
|
|
@ -3310,7 +3312,7 @@
|
|||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/twigphp/Twig/issues",
|
||||
"source": "https://github.com/twigphp/Twig/tree/v3.15.0"
|
||||
"source": "https://github.com/twigphp/Twig/tree/v3.16.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
|
@ -3322,7 +3324,7 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-11-17T15:59:19+00:00"
|
||||
"time": "2024-11-29T08:27:05+00:00"
|
||||
},
|
||||
{
|
||||
"name": "vlucas/phpdotenv",
|
||||
|
|
@ -5889,16 +5891,16 @@
|
|||
},
|
||||
{
|
||||
"name": "symfony/console",
|
||||
"version": "v7.1.8",
|
||||
"version": "v7.2.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/console.git",
|
||||
"reference": "ff04e5b5ba043d2badfb308197b9e6b42883fcd5"
|
||||
"reference": "23c8aae6d764e2bae02d2a99f7532a7f6ed619cf"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/console/zipball/ff04e5b5ba043d2badfb308197b9e6b42883fcd5",
|
||||
"reference": "ff04e5b5ba043d2badfb308197b9e6b42883fcd5",
|
||||
"url": "https://api.github.com/repos/symfony/console/zipball/23c8aae6d764e2bae02d2a99f7532a7f6ed619cf",
|
||||
"reference": "23c8aae6d764e2bae02d2a99f7532a7f6ed619cf",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
|
@ -5962,7 +5964,7 @@
|
|||
"terminal"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/console/tree/v7.1.8"
|
||||
"source": "https://github.com/symfony/console/tree/v7.2.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
|
@ -5978,20 +5980,20 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-11-06T14:23:19+00:00"
|
||||
"time": "2024-11-06T14:24:19+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/filesystem",
|
||||
"version": "v7.1.6",
|
||||
"version": "v7.2.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/filesystem.git",
|
||||
"reference": "c835867b3c62bb05c7fe3d637c871c7ae52024d4"
|
||||
"reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/filesystem/zipball/c835867b3c62bb05c7fe3d637c871c7ae52024d4",
|
||||
"reference": "c835867b3c62bb05c7fe3d637c871c7ae52024d4",
|
||||
"url": "https://api.github.com/repos/symfony/filesystem/zipball/b8dce482de9d7c9fe2891155035a7248ab5c7fdb",
|
||||
"reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
|
@ -6028,7 +6030,7 @@
|
|||
"description": "Provides basic utilities for the filesystem",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/filesystem/tree/v7.1.6"
|
||||
"source": "https://github.com/symfony/filesystem/tree/v7.2.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
|
@ -6044,7 +6046,7 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-10-25T15:11:02+00:00"
|
||||
"time": "2024-10-25T15:15:23+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/polyfill-intl-grapheme",
|
||||
|
|
@ -6290,16 +6292,16 @@
|
|||
},
|
||||
{
|
||||
"name": "symfony/string",
|
||||
"version": "v7.1.8",
|
||||
"version": "v7.2.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/string.git",
|
||||
"reference": "591ebd41565f356fcd8b090fe64dbb5878f50281"
|
||||
"reference": "446e0d146f991dde3e73f45f2c97a9faad773c82"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/string/zipball/591ebd41565f356fcd8b090fe64dbb5878f50281",
|
||||
"reference": "591ebd41565f356fcd8b090fe64dbb5878f50281",
|
||||
"url": "https://api.github.com/repos/symfony/string/zipball/446e0d146f991dde3e73f45f2c97a9faad773c82",
|
||||
"reference": "446e0d146f991dde3e73f45f2c97a9faad773c82",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
|
@ -6357,7 +6359,7 @@
|
|||
"utf8"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/string/tree/v7.1.8"
|
||||
"source": "https://github.com/symfony/string/tree/v7.2.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
|
@ -6373,7 +6375,7 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-11-13T13:31:21+00:00"
|
||||
"time": "2024-11-13T13:31:26+00:00"
|
||||
},
|
||||
{
|
||||
"name": "szepeviktor/phpstan-wordpress",
|
||||
|
|
@ -6406,6 +6408,7 @@
|
|||
"suggest": {
|
||||
"swissspidy/phpstan-no-private": "Detect usage of internal core functions, classes and methods"
|
||||
},
|
||||
"default-branch": true,
|
||||
"type": "phpstan-extension",
|
||||
"extra": {
|
||||
"phpstan": {
|
||||
|
|
@ -6433,7 +6436,7 @@
|
|||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/szepeviktor/phpstan-wordpress/issues",
|
||||
"source": "https://github.com/szepeviktor/phpstan-wordpress/tree/2.x"
|
||||
"source": "https://github.com/szepeviktor/phpstan-wordpress/tree/v2.0.0"
|
||||
},
|
||||
"time": "2024-11-17T13:12:31+00:00"
|
||||
},
|
||||
|
|
|
|||
102
pnpm-lock.yaml
generated
102
pnpm-lock.yaml
generated
|
|
@ -65,13 +65,13 @@ importers:
|
|||
version: 4.24.2
|
||||
eslint:
|
||||
specifier: ^9.15.0
|
||||
version: 9.15.0(jiti@2.4.0)
|
||||
version: 9.15.0(jiti@2.4.1)
|
||||
eslint-plugin-oxlint:
|
||||
specifier: ^0.13.2
|
||||
version: 0.13.2
|
||||
eslint-plugin-perfectionist:
|
||||
specifier: ^4.1.2
|
||||
version: 4.1.2(eslint@9.15.0(jiti@2.4.0))(typescript@5.8.0-dev.20241122)
|
||||
version: 4.1.2(eslint@9.15.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)
|
||||
fdir:
|
||||
specifier: ^6.4.2
|
||||
version: 6.4.2(picomatch@4.0.2)
|
||||
|
|
@ -122,22 +122,22 @@ importers:
|
|||
version: 5.8.0-dev.20241122
|
||||
typescript-eslint:
|
||||
specifier: ^8.16.0
|
||||
version: 8.16.0(eslint@9.15.0(jiti@2.4.0))(typescript@5.8.0-dev.20241122)
|
||||
version: 8.16.0(eslint@9.15.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)
|
||||
vite:
|
||||
specifier: ^6.0.1
|
||||
version: 6.0.1(@types/node@22.10.1)(jiti@2.4.0)(sass-embedded@1.81.0)(sass@1.80.6)
|
||||
version: 6.0.1(@types/node@22.10.1)(jiti@2.4.1)(sass-embedded@1.81.0)(sass@1.80.6)
|
||||
vite-plugin-manifest-sri:
|
||||
specifier: ^0.2.0
|
||||
version: 0.2.0
|
||||
vite-plugin-node-polyfills:
|
||||
specifier: ^0.22.0
|
||||
version: 0.22.0(rollup@4.27.4)(vite@6.0.1(@types/node@22.10.1)(jiti@2.4.0)(sass-embedded@1.81.0)(sass@1.80.6))
|
||||
version: 0.22.0(rollup@4.27.4)(vite@6.0.1(@types/node@22.10.1)(jiti@2.4.1)(sass-embedded@1.81.0)(sass@1.80.6))
|
||||
vite-plugin-valibot-env:
|
||||
specifier: ^0.9.1
|
||||
version: 0.9.1(valibot@1.0.0-beta.9(typescript@5.8.0-dev.20241122))(vite@6.0.1(@types/node@22.10.1)(jiti@2.4.0)(sass-embedded@1.81.0)(sass@1.80.6))
|
||||
version: 0.9.1(valibot@1.0.0-beta.9(typescript@5.8.0-dev.20241122))(vite@6.0.1(@types/node@22.10.1)(jiti@2.4.1)(sass-embedded@1.81.0)(sass@1.80.6))
|
||||
vite-tsconfig-paths:
|
||||
specifier: ^5.1.3
|
||||
version: 5.1.3(typescript@5.8.0-dev.20241122)(vite@6.0.1(@types/node@22.10.1)(jiti@2.4.0)(sass-embedded@1.81.0)(sass@1.80.6))
|
||||
version: 5.1.3(typescript@5.8.0-dev.20241122)(vite@6.0.1(@types/node@22.10.1)(jiti@2.4.1)(sass-embedded@1.81.0)(sass@1.80.6))
|
||||
wp-types:
|
||||
specifier: ^4.67.0
|
||||
version: 4.67.0
|
||||
|
|
@ -1905,8 +1905,8 @@ packages:
|
|||
resolution: {integrity: sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ==}
|
||||
engines: {node: '>=10'}
|
||||
|
||||
jiti@2.4.0:
|
||||
resolution: {integrity: sha512-H5UpaUI+aHOqZXlYOaFP/8AzKsg+guWu+Pr3Y8i7+Y3zr1aXAvCvTAQ1RxSc6oVD8R8c7brgNtTVP91E7upH/g==}
|
||||
jiti@2.4.1:
|
||||
resolution: {integrity: sha512-yPBThwecp1wS9DmoA4x4KR2h3QoslacnDR8ypuFM962kI4/456Iy1oHx2RAgh4jfZNdn0bctsdadceiBUgpU1g==}
|
||||
hasBin: true
|
||||
|
||||
js-tokens@4.0.0:
|
||||
|
|
@ -2771,8 +2771,8 @@ packages:
|
|||
resolution: {integrity: sha512-lbDrTLVsHhOMljPscd0yitpozq7Ga2M5Cvez5AjGg8GASBjtt6iERCAJ93yommPmz62fb45oFIXHEZ3u9bfJEA==}
|
||||
engines: {node: '>=14.16'}
|
||||
|
||||
ts-api-utils@1.4.2:
|
||||
resolution: {integrity: sha512-ZF5gQIQa/UmzfvxbHZI3JXN0/Jt+vnAfAviNRAMc491laiK6YCLpCW9ft8oaCRFOTxCZtUTE6XB0ZQAe3olntw==}
|
||||
ts-api-utils@1.4.3:
|
||||
resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==}
|
||||
engines: {node: '>=16'}
|
||||
peerDependencies:
|
||||
typescript: '>=4.2.0'
|
||||
|
|
@ -3183,9 +3183,9 @@ snapshots:
|
|||
'@esbuild/win32-x64@0.24.0':
|
||||
optional: true
|
||||
|
||||
'@eslint-community/eslint-utils@4.4.1(eslint@9.15.0(jiti@2.4.0))':
|
||||
'@eslint-community/eslint-utils@4.4.1(eslint@9.15.0(jiti@2.4.1))':
|
||||
dependencies:
|
||||
eslint: 9.15.0(jiti@2.4.0)
|
||||
eslint: 9.15.0(jiti@2.4.1)
|
||||
eslint-visitor-keys: 3.4.3
|
||||
|
||||
'@eslint-community/regexpp@4.12.1': {}
|
||||
|
|
@ -3637,32 +3637,32 @@ snapshots:
|
|||
dependencies:
|
||||
undici-types: 6.20.0
|
||||
|
||||
'@typescript-eslint/eslint-plugin@8.16.0(@typescript-eslint/parser@8.16.0(eslint@9.15.0(jiti@2.4.0))(typescript@5.8.0-dev.20241122))(eslint@9.15.0(jiti@2.4.0))(typescript@5.8.0-dev.20241122)':
|
||||
'@typescript-eslint/eslint-plugin@8.16.0(@typescript-eslint/parser@8.16.0(eslint@9.15.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122))(eslint@9.15.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)':
|
||||
dependencies:
|
||||
'@eslint-community/regexpp': 4.12.1
|
||||
'@typescript-eslint/parser': 8.16.0(eslint@9.15.0(jiti@2.4.0))(typescript@5.8.0-dev.20241122)
|
||||
'@typescript-eslint/parser': 8.16.0(eslint@9.15.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)
|
||||
'@typescript-eslint/scope-manager': 8.16.0
|
||||
'@typescript-eslint/type-utils': 8.16.0(eslint@9.15.0(jiti@2.4.0))(typescript@5.8.0-dev.20241122)
|
||||
'@typescript-eslint/utils': 8.16.0(eslint@9.15.0(jiti@2.4.0))(typescript@5.8.0-dev.20241122)
|
||||
'@typescript-eslint/type-utils': 8.16.0(eslint@9.15.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)
|
||||
'@typescript-eslint/utils': 8.16.0(eslint@9.15.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)
|
||||
'@typescript-eslint/visitor-keys': 8.16.0
|
||||
eslint: 9.15.0(jiti@2.4.0)
|
||||
eslint: 9.15.0(jiti@2.4.1)
|
||||
graphemer: 1.4.0
|
||||
ignore: 5.3.2
|
||||
natural-compare: 1.4.0
|
||||
ts-api-utils: 1.4.2(typescript@5.8.0-dev.20241122)
|
||||
ts-api-utils: 1.4.3(typescript@5.8.0-dev.20241122)
|
||||
optionalDependencies:
|
||||
typescript: 5.8.0-dev.20241122
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/parser@8.16.0(eslint@9.15.0(jiti@2.4.0))(typescript@5.8.0-dev.20241122)':
|
||||
'@typescript-eslint/parser@8.16.0(eslint@9.15.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)':
|
||||
dependencies:
|
||||
'@typescript-eslint/scope-manager': 8.16.0
|
||||
'@typescript-eslint/types': 8.16.0
|
||||
'@typescript-eslint/typescript-estree': 8.16.0(typescript@5.8.0-dev.20241122)
|
||||
'@typescript-eslint/visitor-keys': 8.16.0
|
||||
debug: 4.3.7
|
||||
eslint: 9.15.0(jiti@2.4.0)
|
||||
eslint: 9.15.0(jiti@2.4.1)
|
||||
optionalDependencies:
|
||||
typescript: 5.8.0-dev.20241122
|
||||
transitivePeerDependencies:
|
||||
|
|
@ -3673,13 +3673,13 @@ snapshots:
|
|||
'@typescript-eslint/types': 8.16.0
|
||||
'@typescript-eslint/visitor-keys': 8.16.0
|
||||
|
||||
'@typescript-eslint/type-utils@8.16.0(eslint@9.15.0(jiti@2.4.0))(typescript@5.8.0-dev.20241122)':
|
||||
'@typescript-eslint/type-utils@8.16.0(eslint@9.15.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)':
|
||||
dependencies:
|
||||
'@typescript-eslint/typescript-estree': 8.16.0(typescript@5.8.0-dev.20241122)
|
||||
'@typescript-eslint/utils': 8.16.0(eslint@9.15.0(jiti@2.4.0))(typescript@5.8.0-dev.20241122)
|
||||
'@typescript-eslint/utils': 8.16.0(eslint@9.15.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)
|
||||
debug: 4.3.7
|
||||
eslint: 9.15.0(jiti@2.4.0)
|
||||
ts-api-utils: 1.4.2(typescript@5.8.0-dev.20241122)
|
||||
eslint: 9.15.0(jiti@2.4.1)
|
||||
ts-api-utils: 1.4.3(typescript@5.8.0-dev.20241122)
|
||||
optionalDependencies:
|
||||
typescript: 5.8.0-dev.20241122
|
||||
transitivePeerDependencies:
|
||||
|
|
@ -3696,19 +3696,19 @@ snapshots:
|
|||
is-glob: 4.0.3
|
||||
minimatch: 9.0.5
|
||||
semver: 7.6.3
|
||||
ts-api-utils: 1.4.2(typescript@5.8.0-dev.20241122)
|
||||
ts-api-utils: 1.4.3(typescript@5.8.0-dev.20241122)
|
||||
optionalDependencies:
|
||||
typescript: 5.8.0-dev.20241122
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@typescript-eslint/utils@8.16.0(eslint@9.15.0(jiti@2.4.0))(typescript@5.8.0-dev.20241122)':
|
||||
'@typescript-eslint/utils@8.16.0(eslint@9.15.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)':
|
||||
dependencies:
|
||||
'@eslint-community/eslint-utils': 4.4.1(eslint@9.15.0(jiti@2.4.0))
|
||||
'@eslint-community/eslint-utils': 4.4.1(eslint@9.15.0(jiti@2.4.1))
|
||||
'@typescript-eslint/scope-manager': 8.16.0
|
||||
'@typescript-eslint/types': 8.16.0
|
||||
'@typescript-eslint/typescript-estree': 8.16.0(typescript@5.8.0-dev.20241122)
|
||||
eslint: 9.15.0(jiti@2.4.0)
|
||||
eslint: 9.15.0(jiti@2.4.1)
|
||||
optionalDependencies:
|
||||
typescript: 5.8.0-dev.20241122
|
||||
transitivePeerDependencies:
|
||||
|
|
@ -4244,11 +4244,11 @@ snapshots:
|
|||
dependencies:
|
||||
jsonc-parser: 3.3.1
|
||||
|
||||
eslint-plugin-perfectionist@4.1.2(eslint@9.15.0(jiti@2.4.0))(typescript@5.8.0-dev.20241122):
|
||||
eslint-plugin-perfectionist@4.1.2(eslint@9.15.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122):
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 8.16.0
|
||||
'@typescript-eslint/utils': 8.16.0(eslint@9.15.0(jiti@2.4.0))(typescript@5.8.0-dev.20241122)
|
||||
eslint: 9.15.0(jiti@2.4.0)
|
||||
'@typescript-eslint/utils': 8.16.0(eslint@9.15.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)
|
||||
eslint: 9.15.0(jiti@2.4.1)
|
||||
natural-orderby: 5.0.0
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
|
@ -4263,9 +4263,9 @@ snapshots:
|
|||
|
||||
eslint-visitor-keys@4.2.0: {}
|
||||
|
||||
eslint@9.15.0(jiti@2.4.0):
|
||||
eslint@9.15.0(jiti@2.4.1):
|
||||
dependencies:
|
||||
'@eslint-community/eslint-utils': 4.4.1(eslint@9.15.0(jiti@2.4.0))
|
||||
'@eslint-community/eslint-utils': 4.4.1(eslint@9.15.0(jiti@2.4.1))
|
||||
'@eslint-community/regexpp': 4.12.1
|
||||
'@eslint/config-array': 0.19.0
|
||||
'@eslint/core': 0.9.0
|
||||
|
|
@ -4300,7 +4300,7 @@ snapshots:
|
|||
natural-compare: 1.4.0
|
||||
optionator: 0.9.4
|
||||
optionalDependencies:
|
||||
jiti: 2.4.0
|
||||
jiti: 2.4.1
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
|
|
@ -4638,7 +4638,7 @@ snapshots:
|
|||
|
||||
isomorphic-timers-promises@1.0.1: {}
|
||||
|
||||
jiti@2.4.0: {}
|
||||
jiti@2.4.1: {}
|
||||
|
||||
js-tokens@4.0.0: {}
|
||||
|
||||
|
|
@ -4674,7 +4674,7 @@ snapshots:
|
|||
easy-table: 1.2.0
|
||||
enhanced-resolve: 5.17.1
|
||||
fast-glob: 3.3.2
|
||||
jiti: 2.4.0
|
||||
jiti: 2.4.1
|
||||
js-yaml: 4.1.0
|
||||
minimist: 1.2.8
|
||||
picocolors: 1.1.1
|
||||
|
|
@ -5517,7 +5517,7 @@ snapshots:
|
|||
'@tokenizer/token': 0.3.0
|
||||
ieee754: 1.2.1
|
||||
|
||||
ts-api-utils@1.4.2(typescript@5.8.0-dev.20241122):
|
||||
ts-api-utils@1.4.3(typescript@5.8.0-dev.20241122):
|
||||
dependencies:
|
||||
typescript: 5.8.0-dev.20241122
|
||||
|
||||
|
|
@ -5535,12 +5535,12 @@ snapshots:
|
|||
dependencies:
|
||||
prelude-ls: 1.2.1
|
||||
|
||||
typescript-eslint@8.16.0(eslint@9.15.0(jiti@2.4.0))(typescript@5.8.0-dev.20241122):
|
||||
typescript-eslint@8.16.0(eslint@9.15.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122):
|
||||
dependencies:
|
||||
'@typescript-eslint/eslint-plugin': 8.16.0(@typescript-eslint/parser@8.16.0(eslint@9.15.0(jiti@2.4.0))(typescript@5.8.0-dev.20241122))(eslint@9.15.0(jiti@2.4.0))(typescript@5.8.0-dev.20241122)
|
||||
'@typescript-eslint/parser': 8.16.0(eslint@9.15.0(jiti@2.4.0))(typescript@5.8.0-dev.20241122)
|
||||
'@typescript-eslint/utils': 8.16.0(eslint@9.15.0(jiti@2.4.0))(typescript@5.8.0-dev.20241122)
|
||||
eslint: 9.15.0(jiti@2.4.0)
|
||||
'@typescript-eslint/eslint-plugin': 8.16.0(@typescript-eslint/parser@8.16.0(eslint@9.15.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122))(eslint@9.15.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)
|
||||
'@typescript-eslint/parser': 8.16.0(eslint@9.15.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)
|
||||
'@typescript-eslint/utils': 8.16.0(eslint@9.15.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)
|
||||
eslint: 9.15.0(jiti@2.4.1)
|
||||
optionalDependencies:
|
||||
typescript: 5.8.0-dev.20241122
|
||||
transitivePeerDependencies:
|
||||
|
|
@ -5592,33 +5592,33 @@ snapshots:
|
|||
|
||||
vite-plugin-manifest-sri@0.2.0: {}
|
||||
|
||||
vite-plugin-node-polyfills@0.22.0(rollup@4.27.4)(vite@6.0.1(@types/node@22.10.1)(jiti@2.4.0)(sass-embedded@1.81.0)(sass@1.80.6)):
|
||||
vite-plugin-node-polyfills@0.22.0(rollup@4.27.4)(vite@6.0.1(@types/node@22.10.1)(jiti@2.4.1)(sass-embedded@1.81.0)(sass@1.80.6)):
|
||||
dependencies:
|
||||
'@rollup/plugin-inject': 5.0.5(rollup@4.27.4)
|
||||
node-stdlib-browser: 1.3.0
|
||||
vite: 6.0.1(@types/node@22.10.1)(jiti@2.4.0)(sass-embedded@1.81.0)(sass@1.80.6)
|
||||
vite: 6.0.1(@types/node@22.10.1)(jiti@2.4.1)(sass-embedded@1.81.0)(sass@1.80.6)
|
||||
transitivePeerDependencies:
|
||||
- rollup
|
||||
|
||||
vite-plugin-valibot-env@0.9.1(valibot@1.0.0-beta.9(typescript@5.8.0-dev.20241122))(vite@6.0.1(@types/node@22.10.1)(jiti@2.4.0)(sass-embedded@1.81.0)(sass@1.80.6)):
|
||||
vite-plugin-valibot-env@0.9.1(valibot@1.0.0-beta.9(typescript@5.8.0-dev.20241122))(vite@6.0.1(@types/node@22.10.1)(jiti@2.4.1)(sass-embedded@1.81.0)(sass@1.80.6)):
|
||||
dependencies:
|
||||
kleur: 4.1.5
|
||||
log-symbols: 7.0.0
|
||||
valibot: 1.0.0-beta.9(typescript@5.8.0-dev.20241122)
|
||||
vite: 6.0.1(@types/node@22.10.1)(jiti@2.4.0)(sass-embedded@1.81.0)(sass@1.80.6)
|
||||
vite: 6.0.1(@types/node@22.10.1)(jiti@2.4.1)(sass-embedded@1.81.0)(sass@1.80.6)
|
||||
|
||||
vite-tsconfig-paths@5.1.3(typescript@5.8.0-dev.20241122)(vite@6.0.1(@types/node@22.10.1)(jiti@2.4.0)(sass-embedded@1.81.0)(sass@1.80.6)):
|
||||
vite-tsconfig-paths@5.1.3(typescript@5.8.0-dev.20241122)(vite@6.0.1(@types/node@22.10.1)(jiti@2.4.1)(sass-embedded@1.81.0)(sass@1.80.6)):
|
||||
dependencies:
|
||||
debug: 4.3.7
|
||||
globrex: 0.1.2
|
||||
tsconfck: 3.1.4(typescript@5.8.0-dev.20241122)
|
||||
optionalDependencies:
|
||||
vite: 6.0.1(@types/node@22.10.1)(jiti@2.4.0)(sass-embedded@1.81.0)(sass@1.80.6)
|
||||
vite: 6.0.1(@types/node@22.10.1)(jiti@2.4.1)(sass-embedded@1.81.0)(sass@1.80.6)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
- typescript
|
||||
|
||||
vite@6.0.1(@types/node@22.10.1)(jiti@2.4.0)(sass-embedded@1.81.0)(sass@1.80.6):
|
||||
vite@6.0.1(@types/node@22.10.1)(jiti@2.4.1)(sass-embedded@1.81.0)(sass@1.80.6):
|
||||
dependencies:
|
||||
esbuild: 0.24.0
|
||||
postcss: 8.4.49
|
||||
|
|
@ -5626,7 +5626,7 @@ snapshots:
|
|||
optionalDependencies:
|
||||
'@types/node': 22.10.1
|
||||
fsevents: 2.3.3
|
||||
jiti: 2.4.0
|
||||
jiti: 2.4.1
|
||||
sass: 1.80.6
|
||||
sass-embedded: 1.81.0
|
||||
|
||||
|
|
|
|||
|
|
@ -233,7 +233,7 @@ button.bouton-blanc-sur-noir {
|
|||
button.bouton-retour-haut {
|
||||
position: fixed;
|
||||
right: var(--espace-xl);
|
||||
bottom: calc(var(--espace-xl) + var(--pied-de-page-hauteur));
|
||||
bottom: calc(var(--espace-l) + var(--pied-de-page-hauteur));
|
||||
transform: rotate(180deg);
|
||||
padding: var(--espace-m);
|
||||
visibility: hidden;
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1,67 +1,41 @@
|
|||
{
|
||||
"_animations.Qm6pdIPC.js": {
|
||||
"file": "animations.Qm6pdIPC.js",
|
||||
"name": "animations",
|
||||
"imports": [
|
||||
"_utils.DNv5smZT.js"
|
||||
],
|
||||
"integrity": "sha512-jRjNX07vm4GLWnKD033PE+nHjYx9KSQx5+wJonXCXerQrHe0yHfpmgiHs1fnPaXkWskasrU8cUc7538+xRfT2Q=="
|
||||
},
|
||||
"_api.DpNqIphF.js": {
|
||||
"file": "api.DpNqIphF.js",
|
||||
"name": "api",
|
||||
"integrity": "sha512-mTfL4gtvoz3qjZQc7YT1SR3vveP++WDx2k4ZRvGymQqyphpGVy449QeScFaoHKn1foAIA6tVv3zyLPRRxNe8DA=="
|
||||
},
|
||||
"_belt_Option-91f3b350.y_XblYXp.js": {
|
||||
"file": "belt_Option-91f3b350.y_XblYXp.js",
|
||||
"name": "belt_Option-91f3b350",
|
||||
"imports": [
|
||||
"_utils.DNv5smZT.js"
|
||||
],
|
||||
"integrity": "sha512-eOwGPCcuN6HDz5c6hr2qmF+V4eJBx3M7Vq/TnUlpNIbkrm2Czsltx8suxRUwui4TzdEt4t6AJXfkO/gQrPzM6A=="
|
||||
},
|
||||
"_exports.1ijyAKMZ.js": {
|
||||
"file": "exports.1ijyAKMZ.js",
|
||||
"name": "exports",
|
||||
"integrity": "sha512-rJhZSofSl3JPZZ+GhoqNey/Yq1PI4SLzLm9zb6x2wNb+XrqHY//eaKKfWFpTDTAq3kb5GA83kQAQCbTIT87dqw=="
|
||||
},
|
||||
"_gardes.CgXTclcl.js": {
|
||||
"file": "gardes.CgXTclcl.js",
|
||||
"_gardes.CUgVnuaB.js": {
|
||||
"file": "gardes.CUgVnuaB.js",
|
||||
"name": "gardes",
|
||||
"integrity": "sha512-OBCB0p698NhCHDMxxmkgijBmjufwF2NDjZl1j1SlohZYzT/fRqoUURBwr97o1d/d9lx3V86U6dYtn5O5vHFIdQ=="
|
||||
"integrity": "sha512-vm0IriyudxmLFDDV6rB6o7rCqTsT2I7Rupjru5IX6WuTx8WZ+Pvm8Xnml4qUvhIAcDjM1NnOohGItitNxLKYHA=="
|
||||
},
|
||||
"_index-0eef19ec.BdWpJoEP.js": {
|
||||
"file": "index-0eef19ec.BdWpJoEP.js",
|
||||
"name": "index-0eef19ec",
|
||||
"imports": [
|
||||
"_utils.DNv5smZT.js",
|
||||
"_belt_Option-91f3b350.y_XblYXp.js"
|
||||
],
|
||||
"integrity": "sha512-Tt1Dy4aNY2HiBRTMaY+p12kI46gAAjn0hDK1PyErTNZQchQrynv3RUt8/OKM6iyr0we/wsdae62uEQCVsHR7+w=="
|
||||
},
|
||||
"_index-c1cc4c86.BsIfgdq2.js": {
|
||||
"file": "index-c1cc4c86.BsIfgdq2.js",
|
||||
"_index-c1cc4c86.RjqwfILA.js": {
|
||||
"file": "index-c1cc4c86.RjqwfILA.js",
|
||||
"name": "index-c1cc4c86",
|
||||
"imports": [
|
||||
"_belt_Option-91f3b350.y_XblYXp.js",
|
||||
"_utils.DNv5smZT.js"
|
||||
"_utils.DS2YS0tX.js"
|
||||
],
|
||||
"integrity": "sha512-AR5N1q+q6bqLw0ABJvuY/Q5pPJv/Kt8VRNzU64eiAGoqVQLLNUFaXYytAFZAi/O3qGbveSm6vhV9TbIG08lCwg=="
|
||||
"integrity": "sha512-H92M5EOab0KcEZ7HG5eU3A04CJhqcemVErVxHIP9cFW4hFUMiL3qB+lv4cQQ7AszeOfbMINXqggZvaG8wfIZfA=="
|
||||
},
|
||||
"_index.CuMLbxmh.js": {
|
||||
"file": "index.CuMLbxmh.js",
|
||||
"name": "index",
|
||||
"integrity": "sha512-u/eN65V2Mf+6bp8PJqdo4/z5+Ht+17xIrQG7BPsZWCM8BNgBh9Sllb+qTa1gAqj+f8zUsADoUA93twZvBTU6nQ=="
|
||||
},
|
||||
"_messages.B4HRoo_h.js": {
|
||||
"file": "messages.B4HRoo_h.js",
|
||||
"_messages.Qx8X6YMT.js": {
|
||||
"file": "messages.Qx8X6YMT.js",
|
||||
"name": "messages",
|
||||
"imports": [
|
||||
"_validation.CuPxXgCV.js",
|
||||
"_utils.DNv5smZT.js",
|
||||
"_validation.p-hUfG_o.js",
|
||||
"_utils.DS2YS0tX.js",
|
||||
"_exports.1ijyAKMZ.js"
|
||||
],
|
||||
"integrity": "sha512-6Z51Hgtxxrk+R2ym+m5pryKII+Okf0KF1lfw1fnfI5JQpMOtYNXcfN3u0I2+yKrTn9PQu6G8XPLwiXdlG0BFdQ=="
|
||||
"integrity": "sha512-PGSWoFfZPADzB4i4pFN468IMt8tYXQrFXOL8sPN5QSBLEu7F4jEFJZ1Ym5iSpomPaXLLIIg2HmXT50yBq8SiHA=="
|
||||
},
|
||||
"_nombres.n4VPN7qr.js": {
|
||||
"file": "nombres.n4VPN7qr.js",
|
||||
|
|
@ -71,33 +45,30 @@
|
|||
],
|
||||
"integrity": "sha512-tplE1x3QotJwjR/88Gked0Naxkl+PwUtPNjSDoWwIyl/3Y5jyCSbcBSAvcPNG5K0CyJRnozj5aUiVXazKm50XA=="
|
||||
},
|
||||
"_reseau.BY8-4gXm.js": {
|
||||
"file": "reseau.BY8-4gXm.js",
|
||||
"_reseau.C8CWV2JS.js": {
|
||||
"file": "reseau.C8CWV2JS.js",
|
||||
"name": "reseau",
|
||||
"imports": [
|
||||
"_index.CuMLbxmh.js",
|
||||
"_validation.CuPxXgCV.js",
|
||||
"_api.DpNqIphF.js",
|
||||
"_utils.DNv5smZT.js",
|
||||
"_exports.1ijyAKMZ.js"
|
||||
"_utils.DS2YS0tX.js",
|
||||
"_api.DpNqIphF.js"
|
||||
],
|
||||
"integrity": "sha512-CovkZ+/wMng2pkuwwix7gEHlZWoGStc/77MrDGhRTZdUtfrdwTkeisXNdtvrb0gM5HnjAlFm8JLlfhI4ov3fog=="
|
||||
"integrity": "sha512-HUpopU/Kk2R5l1fNpuKaUBAXYyG1/ofIRXmEfXHTElg7E8vbyWAde8b1ZLR4t6iKwl3mhraHzRlPbcjkS3RQEw=="
|
||||
},
|
||||
"_utils.DNv5smZT.js": {
|
||||
"file": "utils.DNv5smZT.js",
|
||||
"_utils.DS2YS0tX.js": {
|
||||
"file": "utils.DS2YS0tX.js",
|
||||
"name": "utils",
|
||||
"imports": [
|
||||
"_exports.1ijyAKMZ.js"
|
||||
],
|
||||
"integrity": "sha512-sfRBh+WliazJoVRpuqpOcgYR5UMBsUKexeLsOR88eVsmWFpagj9iMCAerlFRz171Id2ikIVK/Y9kUjHmEFCuVw=="
|
||||
"integrity": "sha512-MpJC/uObUIE48VQyU7cfHHe1oTqniZuIThTp/gXSNBQuWjwwIe5FbCJBeR0+6Ab/oL9nHgMP9lkSb//iVjPPew=="
|
||||
},
|
||||
"_validation.CuPxXgCV.js": {
|
||||
"file": "validation.CuPxXgCV.js",
|
||||
"_validation.p-hUfG_o.js": {
|
||||
"file": "validation.p-hUfG_o.js",
|
||||
"name": "validation",
|
||||
"imports": [
|
||||
"_utils.DNv5smZT.js"
|
||||
"_utils.DS2YS0tX.js"
|
||||
],
|
||||
"integrity": "sha512-tznL8NmgoWlo00JJsZaoYA69cCZdCb/wpxB49f6V+tPmm+lcWqN9ugtg4VEv1eQJGJ9hLDtrpm7vrBSzIj0PCA=="
|
||||
"integrity": "sha512-JiBgCO1G2lYlIBrQ7JQaqIynKpti44CoSRZt5JUluqbzEx6d7RGdtrxvTQOZI71tu4mKeFnViC8rZhlFRyabTw=="
|
||||
},
|
||||
"web/app/themes/haiku-atelier-2024/src/scripts/gaffe.ts": {
|
||||
"file": "gaffe.js",
|
||||
|
|
@ -108,7 +79,7 @@
|
|||
"_api.DpNqIphF.js",
|
||||
"_exports.1ijyAKMZ.js"
|
||||
],
|
||||
"integrity": "sha512-Ytv7YxquAHWEukHDAUnuQvhyeqoxasaesRX6YRDBi0LTmbmPd3PxbcaLAIQ9J0FsFnywyRr8dyfO9abtB7fX3g=="
|
||||
"integrity": "sha512-4MYUCOMO0X3HFwN7ubugRTcF0GkMRxsLS0ziTYQewm523z3vWPPAXs9hhGJHjt2jhZY8m1wyadKCJCvBHnVqCA=="
|
||||
},
|
||||
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-bouton-panier.ts": {
|
||||
"file": "scripts-bouton-panier.js",
|
||||
|
|
@ -116,12 +87,12 @@
|
|||
"src": "web/app/themes/haiku-atelier-2024/src/scripts/scripts-bouton-panier.ts",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_utils.DNv5smZT.js",
|
||||
"_messages.B4HRoo_h.js",
|
||||
"_utils.DS2YS0tX.js",
|
||||
"_messages.Qx8X6YMT.js",
|
||||
"_exports.1ijyAKMZ.js",
|
||||
"_validation.CuPxXgCV.js"
|
||||
"_validation.p-hUfG_o.js"
|
||||
],
|
||||
"integrity": "sha512-iG6P+98eu+x1s4ON57LdWH+DkkLXG5OICEFxoDXCr6k0X47ToYChMiLKlex1ILE0TB34lBQ+GiMAizLArz2k8A=="
|
||||
"integrity": "sha512-O2UStDYJI8sYbmVPxIyKcv0LGLbW6e/NnBl5mWF07XE6LrsJCl+6aopsTQso+Rum66nDaBtBmDGXP+ugZx2vRg=="
|
||||
},
|
||||
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-bouton-retour-sommet.ts": {
|
||||
"file": "scripts-bouton-retour-sommet.js",
|
||||
|
|
@ -129,12 +100,11 @@
|
|||
"src": "web/app/themes/haiku-atelier-2024/src/scripts/scripts-bouton-retour-sommet.ts",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_utils.DNv5smZT.js",
|
||||
"_utils.DS2YS0tX.js",
|
||||
"_exports.1ijyAKMZ.js",
|
||||
"_index-c1cc4c86.BsIfgdq2.js",
|
||||
"_belt_Option-91f3b350.y_XblYXp.js"
|
||||
"_index-c1cc4c86.RjqwfILA.js"
|
||||
],
|
||||
"integrity": "sha512-wHWc6eAG1Mx+7lvIcks07qKx1Do70/prEa62AGOad5JO2zCP33O7PhiPzcq79zceO9el+fDEz5LiMpsDqvAgww=="
|
||||
"integrity": "sha512-eSgUhUMFGH3+lb8VHA7SMxEKH1hennA3ioZtwQRgam4A0PkArixOH6dWVnssBK5m0JS6SI5MSdYw7bbsKO3Iig=="
|
||||
},
|
||||
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-menu-categories.ts": {
|
||||
"file": "scripts-menu-categories.js",
|
||||
|
|
@ -143,10 +113,10 @@
|
|||
"isEntry": true,
|
||||
"imports": [
|
||||
"_index.CuMLbxmh.js",
|
||||
"_utils.DNv5smZT.js",
|
||||
"_utils.DS2YS0tX.js",
|
||||
"_exports.1ijyAKMZ.js"
|
||||
],
|
||||
"integrity": "sha512-zsicg9FCUX8+2jnJk6xXVH4+fcv6YX/kh8eGgsnUrNUB99fHk7zEZ08IF0/4zh6W22moc+8BZbgXp+8u4OeG3g=="
|
||||
"integrity": "sha512-bBtWkcglfOQX2zrtNSjjqbtgvIs/NU5LQCvUUHNSN+vSBZMUfooTPsbhns68cydEkXdIiz1gN4bOJm4NCb2BIQ=="
|
||||
},
|
||||
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-menu-mobile.ts": {
|
||||
"file": "scripts-menu-mobile.js",
|
||||
|
|
@ -154,12 +124,11 @@
|
|||
"src": "web/app/themes/haiku-atelier-2024/src/scripts/scripts-menu-mobile.ts",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_utils.DNv5smZT.js",
|
||||
"_utils.DS2YS0tX.js",
|
||||
"_exports.1ijyAKMZ.js",
|
||||
"_index-c1cc4c86.BsIfgdq2.js",
|
||||
"_belt_Option-91f3b350.y_XblYXp.js"
|
||||
"_index-c1cc4c86.RjqwfILA.js"
|
||||
],
|
||||
"integrity": "sha512-VnI22OX11MgovPxoms9yzXyOe4ua58dYH+uLXKI2U9TE0gR2fiwUwxlaR5RaU3IdqEo5//89fZSLVxnMke9rDw=="
|
||||
"integrity": "sha512-I+HieuVa3p0OLDdzNJhRu12fNnKtH0JVInJT+zheNGEFRl03ckB0O261xXeF4hzoGFMRq0r3kMwQ0BiJcaMBvg=="
|
||||
},
|
||||
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-a-propos.ts": {
|
||||
"file": "scripts-page-a-propos.js",
|
||||
|
|
@ -167,12 +136,11 @@
|
|||
"src": "web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-a-propos.ts",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_utils.DNv5smZT.js",
|
||||
"_utils.DS2YS0tX.js",
|
||||
"_exports.1ijyAKMZ.js",
|
||||
"_index-c1cc4c86.BsIfgdq2.js",
|
||||
"_belt_Option-91f3b350.y_XblYXp.js"
|
||||
"_index-c1cc4c86.RjqwfILA.js"
|
||||
],
|
||||
"integrity": "sha512-eAiZkJwn+Tf5URID69tQVpymDTFHIIiI656wWpbJ+ddfR1mpxVblxIwBQTqScop2bnJlc76rttZpStjKOADbRw=="
|
||||
"integrity": "sha512-wkbRCz77c1NXq/bAIzaGkNsSfKqN+gQxpA8t/VEQCfmQNHJsScjdodSuOefw9WhQQwQpE5CY6QauG7MDOLtRug=="
|
||||
},
|
||||
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-accueil.ts": {
|
||||
"file": "scripts-page-accueil.js",
|
||||
|
|
@ -180,13 +148,12 @@
|
|||
"src": "web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-accueil.ts",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_utils.DNv5smZT.js",
|
||||
"_utils.DS2YS0tX.js",
|
||||
"_nombres.n4VPN7qr.js",
|
||||
"_exports.1ijyAKMZ.js",
|
||||
"_index-c1cc4c86.BsIfgdq2.js",
|
||||
"_belt_Option-91f3b350.y_XblYXp.js"
|
||||
"_index-c1cc4c86.RjqwfILA.js"
|
||||
],
|
||||
"integrity": "sha512-9JpaEKsYNltIO6Fwf84bqS4QdE25tRczV09TcKnGB3Kw9O80ATwElB51dNTxwP6XwJB0OZoQrMRDziHh4zh0yw=="
|
||||
"integrity": "sha512-GF+2quJeXyU5difx44vjv4/eLm7EGD6RS1jTzj68+HzLf0i3kHcFMxCwYLM5I7Eu0FvDq/DNRTHdH86aRKJQww=="
|
||||
},
|
||||
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-boutique.ts": {
|
||||
"file": "scripts-page-boutique.js",
|
||||
|
|
@ -195,16 +162,13 @@
|
|||
"isEntry": true,
|
||||
"imports": [
|
||||
"_index.CuMLbxmh.js",
|
||||
"_validation.CuPxXgCV.js",
|
||||
"_validation.p-hUfG_o.js",
|
||||
"_api.DpNqIphF.js",
|
||||
"_utils.DNv5smZT.js",
|
||||
"_animations.Qm6pdIPC.js",
|
||||
"_reseau.BY8-4gXm.js",
|
||||
"_exports.1ijyAKMZ.js",
|
||||
"_index-0eef19ec.BdWpJoEP.js",
|
||||
"_belt_Option-91f3b350.y_XblYXp.js"
|
||||
"_utils.DS2YS0tX.js",
|
||||
"_reseau.C8CWV2JS.js",
|
||||
"_exports.1ijyAKMZ.js"
|
||||
],
|
||||
"integrity": "sha512-3kF55bNdRSwZDTQHBm7jb6EO4RNQSPV/JHAvyGTyZSNtuPvnXk414E8ECpLeOLzH+afwpkTtgI68pWjoKYCagw=="
|
||||
"integrity": "sha512-hkKU+xO2o23KphBXVN7Im7knCzLn4VpgazebmRRJSclm4x1ZX4Q4NwK2K5JpHjzIEyMbAg4UiR8tLkH8EU3kew=="
|
||||
},
|
||||
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-panier.ts": {
|
||||
"file": "scripts-page-panier.js",
|
||||
|
|
@ -212,20 +176,18 @@
|
|||
"src": "web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-panier.ts",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_utils.DNv5smZT.js",
|
||||
"_messages.B4HRoo_h.js",
|
||||
"_utils.DS2YS0tX.js",
|
||||
"_messages.Qx8X6YMT.js",
|
||||
"_nombres.n4VPN7qr.js",
|
||||
"_index.CuMLbxmh.js",
|
||||
"_validation.CuPxXgCV.js",
|
||||
"_validation.p-hUfG_o.js",
|
||||
"_api.DpNqIphF.js",
|
||||
"_animations.Qm6pdIPC.js",
|
||||
"_reseau.BY8-4gXm.js",
|
||||
"_reseau.C8CWV2JS.js",
|
||||
"_exports.1ijyAKMZ.js",
|
||||
"_index-c1cc4c86.BsIfgdq2.js",
|
||||
"_gardes.CgXTclcl.js",
|
||||
"_belt_Option-91f3b350.y_XblYXp.js"
|
||||
"_index-c1cc4c86.RjqwfILA.js",
|
||||
"_gardes.CUgVnuaB.js"
|
||||
],
|
||||
"integrity": "sha512-7oZPpY06yidFju+WmSgSNKZeUUgoowheMZkiDF0AMIw6EnJF2uQIR2yWsPhgEPE5QHwqcPDMpfB00N4KIYh4hA=="
|
||||
"integrity": "sha512-xWRO6G9WQM4CwzVGBh9FYmHX+fslOq25ELZZZtSgm3Q6wEfCk4uages0uJ2enzKi47OadCASXPx9jNOdWn/fMA=="
|
||||
},
|
||||
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-produit.ts": {
|
||||
"file": "scripts-page-produit.js",
|
||||
|
|
@ -234,16 +196,15 @@
|
|||
"isEntry": true,
|
||||
"imports": [
|
||||
"_index.CuMLbxmh.js",
|
||||
"_validation.p-hUfG_o.js",
|
||||
"_api.DpNqIphF.js",
|
||||
"_utils.DNv5smZT.js",
|
||||
"_gardes.CgXTclcl.js",
|
||||
"_messages.B4HRoo_h.js",
|
||||
"_reseau.BY8-4gXm.js",
|
||||
"_validation.CuPxXgCV.js",
|
||||
"_utils.DS2YS0tX.js",
|
||||
"_reseau.C8CWV2JS.js",
|
||||
"_gardes.CUgVnuaB.js",
|
||||
"_messages.Qx8X6YMT.js",
|
||||
"_exports.1ijyAKMZ.js",
|
||||
"_index-0eef19ec.BdWpJoEP.js",
|
||||
"_belt_Option-91f3b350.y_XblYXp.js"
|
||||
"_index-c1cc4c86.RjqwfILA.js"
|
||||
],
|
||||
"integrity": "sha512-mk2TzSoaVhfvCK/fna+S/wfq4pAU14NAAJrjfp2IHtEQFUA2SEzv6qbJH3DJ7p5Ty+64ZkJLeeRoVTYm4dvM+A=="
|
||||
"integrity": "sha512-aqdkuZjhvcdnGLbqGdmYphpDjDprtPrwsr6kTBUQ0LZ78gLuQmhQTVUA4k7/f8FyEhNYt6l4QjtUXEKrIAfLAg=="
|
||||
}
|
||||
}
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
import{B as a}from"./utils.DNv5smZT.js";const i=t=>{const e={callback:()=>{if(!t.element.hasAttribute(t.attribut)){clearInterval(e.interval);return}t.element.textContent=e.etapes.at(e.index)??"Loading...",e.index=e.index+1>e.etapes.length-1?0:e.index+1},etapes:t.etapes,index:0,interval:setInterval(()=>{},2147483647)};return e},o=(t,e)=>{const n=i({attribut:a,element:t,etapes:["Loading","Loading.","Loading..","Loading..."]});n.callback(),n.interval=setInterval(n.callback,e)};export{o as l};
|
||||
//# sourceMappingURL=animations.Qm6pdIPC.js.map
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"animations.Qm6pdIPC.js","sources":["../../src/scripts/lib/animations.ts"],"sourcesContent":["/** Fonctions pour la création de simples animations JavaScript. */\n\nimport { ATTRIBUT_CHARGEMENT } from \"../constantes/dom\";\n\n// Types\ninterface AnimationCycleTexte {\n callback: () => void;\n etapes: Array<string>;\n index: number;\n interval: NodeJS.Timeout;\n}\n\ninterface ParametresAnimationCycleTexte {\n attribut: string;\n element: HTMLElement;\n etapes: Array<string>;\n}\n\n/**\n * Créer le nécessaire pour une animation s'exécutant jusqu'à ce que un interval soit manuellement arrêté. L'animation\n * consiste en la mise à jour d'un texte avec l'utilisation de toutes les valeurs d'un tableau, une par une.\n *\n * @param args Les paramètres nécessaires pour la création de l'animation.\n * @returns Un objet contenant les informations de l'animation, notamment l'interval utilisable pour son arrêt.\n */\nconst lanceAnimationCycleTexte = (args: ParametresAnimationCycleTexte): AnimationCycleTexte => {\n const animation: AnimationCycleTexte = {\n callback: (): void => {\n // Arrête le cycle quand l'Attribut de chargement n'est plus présent\n if (!args.element.hasAttribute(args.attribut)) {\n clearInterval(animation.interval);\n return;\n }\n\n // Change le texte\n args.element.textContent = animation.etapes.at(animation.index) ?? \"Loading...\";\n // Incrémente ou réinitialise l'index\n animation.index = animation.index + 1 > animation.etapes.length - 1 ? 0 : animation.index + 1;\n },\n etapes: args.etapes,\n index: 0,\n interval: setInterval(() => {}, 2147483647),\n };\n\n return animation;\n};\n\nexport const lanceAnimationCycleLoading = (element: HTMLElement, delai: number): void => {\n const animation = lanceAnimationCycleTexte({\n attribut: ATTRIBUT_CHARGEMENT,\n element: element,\n etapes: [\n \"Loading\",\n \"Loading.\",\n \"Loading..\",\n \"Loading...\",\n ],\n });\n animation.callback();\n animation.interval = setInterval(animation.callback, delai);\n};\n"],"names":["ATTRIBUT_CHARGEMENT","lanceAnimationCycleTexte","args","animation","lanceAnimationCycleLoading","element","delai"],"mappings":"AAyBA,OAAA,KAAAA,MAAA,sBAAA,MAAMC,EAA4BC,GAA6D,CAC7F,MAAMC,EAAiC,CACrC,SAAU,IAAY,CAEpB,GAAI,CAACD,EAAK,QAAQ,aAAaA,EAAK,QAAQ,EAAG,CAC7C,cAAcC,EAAU,QAAQ,EAChC,MAAA,CAIFD,EAAK,QAAQ,YAAcC,EAAU,OAAO,GAAGA,EAAU,KAAK,GAAK,aAEzDA,EAAA,MAAQA,EAAU,MAAQ,EAAIA,EAAU,OAAO,OAAS,EAAI,EAAIA,EAAU,MAAQ,CAC9F,EACA,OAAQD,EAAK,OACb,MAAO,EACP,SAAU,YAAY,IAAM,CAAA,EAAI,UAAU,CAC5C,EAEO,OAAAC,CACT,EAEaC,EAA6B,CAACC,EAAsBC,IAAwB,CACvF,MAAMH,EAAYF,EAAyB,CACzC,SAAUD,EACV,QAAAK,EACA,OAAQ,CACN,UACA,WACA,YACA,YAAA,CACF,CACD,EACDF,EAAU,SAAS,EACnBA,EAAU,SAAW,YAAYA,EAAU,SAAUG,CAAK,CAC5D"}
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
import{at as f,aq as h}from"./utils.DNv5smZT.js";function l(n,r,i){for(var t=new Array(i),e=0,u=r;e<i;)t[e]=n[u],e=e+1|0,u=u+1|0;return t}function v(n,r){for(;;){var i=r,t=n,e=t.length,u=e===0?1:e,o=u-i.length|0;if(o===0)return t.apply(null,i);if(o>=0)return function(a,c){return function(p){return v(a,c.concat([p]))}}(t,i);r=l(i,u,0|-o),n=t.apply(null,l(i,0,u))}}function d(n,r){var i=n.length;if(i===1)return n(r);switch(i){case 1:return n(r);case 2:return function(t){return n(r,t)};case 3:return function(t,e){return n(r,t,e)};case 4:return function(t,e,u){return n(r,t,e,u)};case 5:return function(t,e,u,o){return n(r,t,e,u,o)};case 6:return function(t,e,u,o,a){return n(r,t,e,u,o,a)};case 7:return function(t,e,u,o,a,c){return n(r,t,e,u,o,a,c)};default:return v(n,[r])}}function _(n){return n.length===1?n:function(r){return d(n,r)}}var s={contents:0};function E(n){return s.contents=s.contents+1|0,n+"/"+s.contents}function w(n){return n==null?!1:typeof n.RE_EXN_ID=="string"}function y(n){if(n!==void 0)return f(n);throw{RE_EXN_ID:"Not_found",Error:new Error}}function D(n,r,i){return n!==void 0?i(f(n)):r}function N(n,r){if(n!==void 0)return h(r(f(n)))}function g(n,r){if(n!==void 0)return r(f(n))}function x(n,r){return g(n,_(r))}function U(n,r){return n!==void 0?f(n):r}function b(n){return n!==void 0}function I(n){return n===void 0}export{d as _,U as a,I as b,E as c,b as d,g as e,x as f,y as g,D as h,w as i,N as m};
|
||||
//# sourceMappingURL=belt_Option-91f3b350.y_XblYXp.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
|
|
@ -0,0 +1,2 @@
|
|||
const s=e=>t=>t instanceof e,n=s(HTMLSelectElement),c=e=>e.status===500;export{n as a,c as e};
|
||||
//# sourceMappingURL=gardes.CUgVnuaB.js.map
|
||||
|
|
@ -1 +1 @@
|
|||
{"version":3,"file":"gardes.CgXTclcl.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"}
|
||||
{"version":3,"file":"gardes.CUgVnuaB.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","estReponse500","reponse"],"mappings":"AAEA,MAAMA,EAAqCC,GAAiCC,GAC1EA,aAAmBD,EAERE,EAAuBH,EAA8B,iBAAiB,EAItEI,EAAiBC,GAA+BA,EAAQ,SAAW"}
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
const s=e=>t=>t instanceof e,n=s(HTMLSelectElement),o=e=>e instanceof Error,c=e=>e.status===500;export{n as a,o as b,c as e};
|
||||
//# sourceMappingURL=gardes.CgXTclcl.js.map
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1,2 +0,0 @@
|
|||
import{_ as W,i as x,c as z,g as D,a,b as U,d as S,f as $,m as M,e as i,h as E}from"./belt_Option-91f3b350.y_XblYXp.js";import{aq as u,ar as R,as as k,at as e,au as q,av as y}from"./utils.DNv5smZT.js";var A=z("Promise.JsError");function F(n,r){return n.catch(function(t){return W(r,x(t)?t:{RE_EXN_ID:A,_1:t})})}function G(n){}function T(n){return u(n)}function I(n){}function J(n){if(n!=null)return u(n)}function O(n){if(n)return n}function o(n,r){return $(n==null?void 0:u(n),function(t){if(r(t))return u(t)})}function X(){if(arguments.length===1){const n=arguments;return function(t){return o(t,n[0])}}return o(arguments[0],arguments[1])}function j(n){try{return u(n(void 0))}catch{return}}function w(n){return F(n.then(function(r){return u(r)}),function(r){return Promise.resolve(void 0)})}var f=M;function B(){if(arguments.length===1){const n=arguments;return function(t){return f(t,n[0])}}return f(arguments[0],arguments[1])}var s=i;function C(){if(arguments.length===1){const n=arguments;return function(t){return s(t,n[0])}}return s(arguments[0],arguments[1])}var c=E;function H(){if(arguments.length===2){const n=arguments;return function(t){return c(t,n[0],n[1])}}return c(arguments[0],arguments[1],arguments[2])}function m(n,r){if(n!==void 0)return k(r(e(n)))}function K(){if(arguments.length===1){const n=arguments;return function(t){return m(t,n[0])}}return m(arguments[0],arguments[1])}function g(n,r){return i(n,function(t){if(r(t))return u(t)})}function L(){if(arguments.length===1){const n=arguments;return function(t){return g(t,n[0])}}return g(arguments[0],arguments[1])}var l=a;function Q(){if(arguments.length===1){const n=arguments;return function(t){return l(t,n[0])}}return l(arguments[0],arguments[1])}var V=D;function Y(n){return a(n,null)}function Z(n){return a(n,void 0)}function h(n,r){return n!==void 0?{TAG:0,_0:e(n)}:{TAG:1,_0:r}}function nn(){if(arguments.length===1){const n=arguments;return function(t){return h(t,n[0])}}return h(arguments[0],arguments[1])}function v(n,r,t){return n!==void 0?r(e(n)):t(void 0)}function tn(){if(arguments.length===2){const n=arguments;return function(t){return v(t,n[0],n[1])}}return v(arguments[0],arguments[1],arguments[2])}var rn=U,en=S;function d(n,r){return n!==void 0&&r(e(n)),n}function un(){if(arguments.length===1){const n=arguments;return function(t){return d(t,n[0])}}return d(arguments[0],arguments[1])}function _(n,r){return E(n,!1,function(t){return q(t,r)})}function an(){if(arguments.length===1){const n=arguments;return function(t){return _(t,n[0])}}return _(arguments[0],arguments[1])}function p(n,r){if(n!==void 0&&r!==void 0)return[e(n),e(r)]}function on(){if(arguments.length===1){const n=arguments;return function(t){return p(t,n[0])}}return p(arguments[0],arguments[1])}function N(n,r,t){if(n!==void 0&&r!==void 0)return u(t(e(n),e(r)))}function fn(){if(arguments.length===2){const n=arguments;return function(t){return N(t,n[0],n[1])}}return N(arguments[0],arguments[1],arguments[2])}function b(n,r,t){return n!==void 0?r(e(n)):t(void 0)}function sn(){if(arguments.length===2){const n=arguments;return function(t){return b(t,n[0],n[1])}}return b(arguments[0],arguments[1],arguments[2])}function cn(n){return R(n,[],function(r,t){return i(r,function(P){if(t!==void 0)return y(P,[e(t)])})})}const mn=n=>n;var hn={__proto__:null,Some:mn,None:void 0,placeholder:G,makeSome:T,makeNone:I,fromNullable:J,fromFalsy:O,fromPredicate:X,fromExecution:j,fromPromise:w,map:B,flatMap:C,mapWithDefault:H,mapNullable:K,filter:L,getWithDefault:Q,getExn:V,toNullable:Y,toUndefined:Z,toResult:nn,match:tn,isNone:rn,isSome:en,tap:un,contains:an,zip:on,zipWith:fn,fold:sn,all:cn};export{hn as P,C as f,Q as g,un as t};
|
||||
//# sourceMappingURL=index-c1cc4c86.BsIfgdq2.js.map
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,2 @@
|
|||
import{aG as o,aH as a,aI as $,aJ as A,aK as G,aL as M}from"./utils.DS2YS0tX.js";function v(n,t,r){for(var e=new Array(r),u=0,i=t;u<r;)e[u]=n[i],u=u+1|0,i=i+1|0;return e}function R(n,t){for(;;){var r=t,e=n,u=e.length,i=u===0?1:u,f=i-r.length|0;if(f===0)return e.apply(null,r);if(f>=0)return function(c,m){return function(S){return R(c,m.concat([S]))}}(e,r);t=v(r,i,0|-f),n=e.apply(null,v(r,0,i))}}function U(n,t){var r=n.length;if(r===1)return n(t);switch(r){case 1:return n(t);case 2:return function(e){return n(t,e)};case 3:return function(e,u){return n(t,e,u)};case 4:return function(e,u,i){return n(t,e,u,i)};case 5:return function(e,u,i,f){return n(t,e,u,i,f)};case 6:return function(e,u,i,f,c){return n(t,e,u,i,f,c)};case 7:return function(e,u,i,f,c,m){return n(t,e,u,i,f,c,m)};default:return R(n,[t])}}function X(n){return n.length===1?n:function(t){return U(n,t)}}var g={contents:0};function k(n){return g.contents=g.contents+1|0,n+"/"+g.contents}function F(n){return n==null?!1:typeof n.RE_EXN_ID=="string"}function J(n){if(n!==void 0)return o(n);throw{RE_EXN_ID:"Not_found",Error:new Error}}function I(n,t,r){return n!==void 0?r(o(n)):t}function T(n,t){if(n!==void 0)return a(t(o(n)))}function s(n,t){if(n!==void 0)return t(o(n))}function q(n,t){return s(n,X(t))}function l(n,t){return n!==void 0?o(n):t}function H(n){return n!==void 0}function K(n){return n===void 0}var L=k("Promise.JsError");function O(n,t){return n.catch(function(r){return U(t,F(r)?r:{RE_EXN_ID:L,_1:r})})}function j(n){}function B(n){return a(n)}function C(n){}function Q(n){if(n!=null)return a(n)}function V(n){if(n)return n}function h(n,t){return q(n==null?void 0:a(n),function(r){if(t(r))return a(r)})}function Y(){if(arguments.length===1){const n=arguments;return function(r){return h(r,n[0])}}return h(arguments[0],arguments[1])}function Z(n){try{return a(n(void 0))}catch{return}}function nn(n){return O(n.then(function(t){return a(t)}),function(t){return Promise.resolve(void 0)})}var d=T;function tn(){if(arguments.length===1){const n=arguments;return function(r){return d(r,n[0])}}return d(arguments[0],arguments[1])}var _=s;function rn(){if(arguments.length===1){const n=arguments;return function(r){return _(r,n[0])}}return _(arguments[0],arguments[1])}var p=I;function en(){if(arguments.length===2){const n=arguments;return function(r){return p(r,n[0],n[1])}}return p(arguments[0],arguments[1],arguments[2])}function N(n,t){if(n!==void 0)return A(t(o(n)))}function un(){if(arguments.length===1){const n=arguments;return function(r){return N(r,n[0])}}return N(arguments[0],arguments[1])}function E(n,t){return s(n,function(r){if(t(r))return a(r)})}function on(){if(arguments.length===1){const n=arguments;return function(r){return E(r,n[0])}}return E(arguments[0],arguments[1])}var b=l;function fn(){if(arguments.length===1){const n=arguments;return function(r){return b(r,n[0])}}return b(arguments[0],arguments[1])}var an=J;function cn(n){return l(n,null)}function sn(n){return l(n,void 0)}function D(n,t){return n!==void 0?{TAG:0,_0:o(n)}:{TAG:1,_0:t}}function mn(){if(arguments.length===1){const n=arguments;return function(r){return D(r,n[0])}}return D(arguments[0],arguments[1])}function w(n,t,r){return n!==void 0?t(o(n)):r(void 0)}function gn(){if(arguments.length===2){const n=arguments;return function(r){return w(r,n[0],n[1])}}return w(arguments[0],arguments[1],arguments[2])}var ln=K,vn=H;function y(n,t){return n!==void 0&&t(o(n)),n}function hn(){if(arguments.length===1){const n=arguments;return function(r){return y(r,n[0])}}return y(arguments[0],arguments[1])}function P(n,t){return I(n,!1,function(r){return G(r,t)})}function dn(){if(arguments.length===1){const n=arguments;return function(r){return P(r,n[0])}}return P(arguments[0],arguments[1])}function W(n,t){if(n!==void 0&&t!==void 0)return[o(n),o(t)]}function _n(){if(arguments.length===1){const n=arguments;return function(r){return W(r,n[0])}}return W(arguments[0],arguments[1])}function x(n,t,r){if(n!==void 0&&t!==void 0)return a(r(o(n),o(t)))}function pn(){if(arguments.length===2){const n=arguments;return function(r){return x(r,n[0],n[1])}}return x(arguments[0],arguments[1],arguments[2])}function z(n,t,r){return n!==void 0?t(o(n)):r(void 0)}function Nn(){if(arguments.length===2){const n=arguments;return function(r){return z(r,n[0],n[1])}}return z(arguments[0],arguments[1],arguments[2])}function En(n){return $(n,[],function(t,r){return s(t,function(e){if(r!==void 0)return M(e,[o(r)])})})}const bn=n=>n;var wn={__proto__:null,Some:bn,None:void 0,placeholder:j,makeSome:B,makeNone:C,fromNullable:Q,fromFalsy:V,fromPredicate:Y,fromExecution:Z,fromPromise:nn,map:tn,flatMap:rn,mapWithDefault:en,mapNullable:un,filter:on,getWithDefault:fn,getExn:an,toNullable:cn,toUndefined:sn,toResult:mn,match:gn,isNone:ln,isSome:vn,tap:hn,contains:dn,zip:_n,zipWith:pn,fold:Nn,all:En};export{wn as P,rn as f,fn as g,hn as t};
|
||||
//# sourceMappingURL=index-c1cc4c86.RjqwfILA.js.map
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1,2 +0,0 @@
|
|||
import{o as n,s as e,p as c,i as l,n as s,l as M,c as r,f as o,d as i,e as m,u as d,g as p,h as P,t as b,v as y,q as h,j as x,W as I}from"./validation.CuPxXgCV.js";import{aO as S,ao as g}from"./utils.DNv5smZT.js";import{a0 as j}from"./exports.1ijyAKMZ.js";const v="bouton_panier",A="contenu_panier",z="revalidation_livraison",u={MajBoutonPanier:"maj_bouton_panier",MajContenuPanier:"maj_contenu_panier",RevalidationLivraison:"revalidation_livraison"},N={INVISIBLE:"invisible",VISIBLE:"visible"},B=n({address_1:e(),address_2:e(),city:e(),company:e(),country:e(),email:e(),first_name:e(),last_name:e(),phone:e(),postcode:e(),state:e()}),C=n({address_1:e(),address_2:e(),city:e(),company:e(),country:e(),first_name:e(),last_name:e(),phone:e(),postcode:e(),state:e()}),E=n({code:e(),discount_type:e(),totals:n({currency_code:e(),currency_decimal_separator:e(),currency_minor_unit:c(s(),l()),currency_prefix:e(),currency_suffix:e(),currency_symbol:e(),currency_thousand_separator:e(),total_discount:e(),total_discount_tax:e()})}),W=n({key:e(),name:e(),quantity:s()}),R=n({currency_code:e(),currency_decimal_separator:e(),currency_minor_unit:s(),currency_prefix:e(),currency_suffix:e(),currency_symbol:e(),currency_thousand_separator:e(),delivery_time:e(),description:e(),instance_id:s(),meta_data:r(o()),method_id:e(),name:e(),price:e(),rate_id:e(),selected:i(),taxes:e()}),T=r(R),L=n({destination:M(C,["company","first_name","last_name","phone"]),items:r(W),name:e(),package_id:s(),shipping_rates:T}),O=n({currency_code:e(),currency_decimal_separator:e(),currency_minor_unit:s(),currency_prefix:e(),currency_suffix:e(),currency_symbol:e(),currency_thousand_separator:e(),line_subtotal:e(),line_subtotal_tax:e(),line_total:e(),line_total_tax:e()}),f=n({backorders_allowed:i(),catalog_visibility:m(N),description:e(),extensions:o(),id:s(),images:r(o()),item_data:r(o()),key:e(),low_stock_remaining:d([p()]),name:e(),permalink:c(e(),P()),prices:o(),quantity:s(),quantity_limits:o(),short_description:e(),show_backorder_badge:i(),sku:e(),sold_individually:i(),totals:O,type:e(),variation:r(o())}),k=n({currency_code:e(),currency_decimal_separator:e(),currency_minor_unit:s(),currency_prefix:e(),currency_suffix:e(),currency_symbol:e(),currency_thousand_separator:e(),tax_lines:r(o()),total_discount:e(),total_discount_tax:e(),total_fees:e(),total_fees_tax:e(),total_items:e(),total_items_tax:e(),total_price:e(),total_shipping:c(d([e(),p()]),b(Number)),total_shipping_tax:d([e(),p()]),total_tax:e()}),F=n({billing_address:B,coupons:r(E),cross_sells:o(),errors:o(),extensions:o(),fees:o(),has_calculated_shipping:i(),items:r(f),items_count:c(s(),l()),items_weight:c(s(),l()),needs_payment:i(),needs_shipping:i(),payment_methods:o(),payment_requirements:o(),shipping_address:C,shipping_rates:r(L),totals:k});m(u);const q=n({quantiteProduits:s()}),w=n({donnees:q,type:c(e(),y(u.MajBoutonPanier))}),V=n({produits:r(f),sousTotalProduits:s(),sousTotalReduction:s(),totalPanier:s()}),D=n({donnees:V,type:c(e(),y(u.MajContenuPanier))}),U=(a,t)=>(a.postMessage(t),a),H=a=>{const t=new BroadcastChannel(v);t.postMessage({donnees:{quantiteProduits:a.quantiteProduits},type:u.MajBoutonPanier}),t.close()},J=a=>{const t=new BroadcastChannel(A);t.postMessage({donnees:{produits:a.produits,sousTotalProduits:a.sousTotalProduits,sousTotalReduction:a.sousTotalReduction,totalPanier:a.totalPanier},type:u.MajContenuPanier}),t.close()},K=(a,t)=>j(new BroadcastChannel(a),_=>U(_,t),_=>_.close()),Q=a=>S.of(h(w,a.data)).ifLeft(t=>g(t)),X=a=>S.of(h(D,a.data)).ifLeft(t=>g(t)),Z=(a,t)=>x(a,I).map(_=>_.body.code===t).orDefault(!1);export{v as N,B as W,C as a,z as b,F as c,T as d,K as e,H as f,J as g,A as h,X as i,Z as r,Q as v};
|
||||
//# sourceMappingURL=messages.B4HRoo_h.js.map
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,2 @@
|
|||
import{o as a,l as y,a as p,s as e,u as d,p as i,k as x,g as u,q as h,n as t,i as m,r as I,c as r,f as o,d as c,e as S,h as j,t as v,v as g,w as C,j as A}from"./validation.p-hUfG_o.js";import{aF as f,I as M}from"./utils.DS2YS0tX.js";import{a0 as E}from"./exports.1ijyAKMZ.js";const W="bouton_panier",B="contenu_panier",X="revalidation_livraison",l={MajBoutonPanier:"maj_bouton_panier",MajContenuPanier:"maj_contenu_panier",RevalidationLivraison:"revalidation_livraison"},N=a({code:e(),data:a({status:t()}),message:e()}),R=a({body:N,status:t()}),T=a({code:y("rest_invalid_param"),data:a({details:a({billing_address:p(a({code:e(),data:d([u(),e()]),message:e()})),shipping_address:p(a({code:e(),data:d([u(),e()]),message:e()}))}),params:a({billing_address:p(e()),shipping_address:p(e())}),status:y(400)}),message:i(e(),h("Invalid parameter(s):"),h("_address"))}),Z=s=>x(T,s),L={INVISIBLE:"invisible",VISIBLE:"visible"},k=a({address_1:e(),address_2:e(),city:e(),company:e(),country:e(),email:e(),first_name:e(),last_name:e(),phone:e(),postcode:e(),state:e()}),P=a({address_1:e(),address_2:e(),city:e(),company:e(),country:e(),first_name:e(),last_name:e(),phone:e(),postcode:e(),state:e()}),q=a({code:e(),discount_type:e(),totals:a({currency_code:e(),currency_decimal_separator:e(),currency_minor_unit:i(t(),m()),currency_prefix:e(),currency_suffix:e(),currency_symbol:e(),currency_thousand_separator:e(),total_discount:e(),total_discount_tax:e()})}),w=a({key:e(),name:e(),quantity:t()}),O=a({currency_code:e(),currency_decimal_separator:e(),currency_minor_unit:t(),currency_prefix:e(),currency_suffix:e(),currency_symbol:e(),currency_thousand_separator:e(),delivery_time:e(),description:e(),instance_id:t(),meta_data:r(o()),method_id:e(),name:e(),price:e(),rate_id:e(),selected:c(),taxes:e()}),V=r(O),D=a({destination:I(P,["company","first_name","last_name","phone"]),items:r(w),name:e(),package_id:t(),shipping_rates:V}),U=a({currency_code:e(),currency_decimal_separator:e(),currency_minor_unit:t(),currency_prefix:e(),currency_suffix:e(),currency_symbol:e(),currency_thousand_separator:e(),line_subtotal:e(),line_subtotal_tax:e(),line_total:e(),line_total_tax:e()}),b=a({backorders_allowed:c(),catalog_visibility:S(L),description:e(),extensions:o(),id:t(),images:r(o()),item_data:r(o()),key:e(),low_stock_remaining:d([u()]),name:e(),permalink:i(e(),j()),prices:o(),quantity:t(),quantity_limits:o(),short_description:e(),show_backorder_badge:c(),sku:e(),sold_individually:c(),totals:U,type:e(),variation:r(o())}),G=a({currency_code:e(),currency_decimal_separator:e(),currency_minor_unit:t(),currency_prefix:e(),currency_suffix:e(),currency_symbol:e(),currency_thousand_separator:e(),tax_lines:r(o()),total_discount:e(),total_discount_tax:e(),total_fees:e(),total_fees_tax:e(),total_items:e(),total_items_tax:e(),total_price:e(),total_shipping:i(d([e(),u()]),v(Number)),total_shipping_tax:d([e(),u()]),total_tax:e()}),ee=a({billing_address:k,coupons:r(q),cross_sells:o(),errors:o(),extensions:o(),fees:o(),has_calculated_shipping:c(),items:r(b),items_count:i(t(),m()),items_weight:i(t(),m()),needs_payment:c(),needs_shipping:c(),payment_methods:o(),payment_requirements:o(),shipping_address:P,shipping_rates:r(D),totals:G});S(l);const F=a({quantiteProduits:t()}),Y=a({donnees:F,type:i(e(),g(l.MajBoutonPanier))}),$=a({produits:r(b),sousTotalProduits:t(),sousTotalReduction:t(),totalPanier:t()}),z=a({donnees:$,type:i(e(),g(l.MajContenuPanier))}),H=(s,n)=>(s.postMessage(n),s),ae=s=>{const n=new BroadcastChannel(W);n.postMessage({donnees:{quantiteProduits:s.quantiteProduits},type:l.MajBoutonPanier}),n.close()},se=s=>{const n=new BroadcastChannel(B);n.postMessage({donnees:{produits:s.produits,sousTotalProduits:s.sousTotalProduits,sousTotalReduction:s.sousTotalReduction,totalPanier:s.totalPanier},type:l.MajContenuPanier}),n.close()},te=(s,n)=>E(new BroadcastChannel(s),_=>H(_,n),_=>_.close()),ne=s=>f.of(C(Y,s.data)).ifLeft(n=>M(n)),oe=s=>f.of(C(z,s.data)).ifLeft(n=>M(n)),re=(s,n)=>A(s,R).map(_=>_.body.code===n).orDefault(!1);export{W as N,k as W,P as a,X as b,te as c,ee as d,Z as e,V as f,ae as g,se as h,B as i,oe as j,re as r,ne as v};
|
||||
//# sourceMappingURL=messages.Qx8X6YMT.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
File diff suppressed because one or more lines are too long
|
|
@ -1,2 +1,2 @@
|
|||
import{r as o,S as a,a as r,A as s}from"./utils.DNv5smZT.js";import{N as d,v as E}from"./messages.B4HRoo_h.js";import{a0 as N}from"./exports.1ijyAKMZ.js";import"./validation.CuPxXgCV.js";const u=()=>{const e=N(o(a),r),t=new BroadcastChannel(d);t.onmessage=i=>{E(i).ifRight(n=>{e.textContent=`cart (${String(n.donnees.quantiteProduits)})`,e.setAttribute(s,String(n.donnees.quantiteProduits>0))})},document.addEventListener("visibilitychange",()=>{t.close()})};document.addEventListener("DOMContentLoaded",()=>{u()});
|
||||
import{r as o,S as a,a as r,A as s}from"./utils.DS2YS0tX.js";import{N as d,v as E}from"./messages.Qx8X6YMT.js";import{a0 as N}from"./exports.1ijyAKMZ.js";import"./validation.p-hUfG_o.js";const u=()=>{const e=N(o(a),r),t=new BroadcastChannel(d);t.onmessage=i=>{E(i).ifRight(n=>{e.textContent=`cart (${String(n.donnees.quantiteProduits)})`,e.setAttribute(s,String(n.donnees.quantiteProduits>0))})},document.addEventListener("visibilitychange",()=>{t.close()})};document.addEventListener("DOMContentLoaded",()=>{u()});
|
||||
//# sourceMappingURL=scripts-bouton-panier.js.map
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
import{b as n,h as u,c as s,d as O}from"./utils.DNv5smZT.js";import{a0 as d}from"./exports.1ijyAKMZ.js";import{t as R}from"./index-c1cc4c86.BsIfgdq2.js";import"./belt_Option-91f3b350.y_XblYXp.js";const e={BOUTON_RETOUR_SOMMET:n("#bouton-retour-haut"),CORPS_HTML:n("body"),IMAGE_BOUTON:n("#bouton-retour-haut img")},o=2;let a=e.CORPS_HTML.getBoundingClientRect().height/window.innerHeight,i=window.scrollY,r=!1;const T=()=>window.scrollY,l=t=>{t?(e.BOUTON_RETOUR_SOMMET.setAttribute(s,""),e.IMAGE_BOUTON.removeAttribute(O)):(e.BOUTON_RETOUR_SOMMET.removeAttribute(s),e.IMAGE_BOUTON.setAttribute(O,"")),r=!1},_=()=>{l(i>window.innerHeight*o),new ResizeObserver(t=>{d(u(t),R(m=>{a=e.CORPS_HTML.getBoundingClientRect().height/window.innerHeight,i=T()}))}).observe(e.CORPS_HTML),window.addEventListener("scroll",()=>{i=T(),!(a<o)&&(r||(r=!0,requestAnimationFrame(()=>l(i>window.innerHeight*o))))})},E=()=>{e.BOUTON_RETOUR_SOMMET.addEventListener("click",t=>{t.preventDefault(),window.scrollTo({behavior:"smooth",top:0})})};document.addEventListener("DOMContentLoaded",()=>{E(),_()});
|
||||
import{b as i,c as M,h as l,d as O,e as T,f as s}from"./utils.DS2YS0tX.js";import{a0 as u}from"./exports.1ijyAKMZ.js";import{t as R}from"./index-c1cc4c86.RjqwfILA.js";const e={BOUTON_MENU_MOBILE:i(M),BOUTON_RETOUR_SOMMET:i("#bouton-retour-haut"),CORPS_HTML:i("body"),IMAGE_BOUTON:i("#bouton-retour-haut img")},o=2;let E=e.CORPS_HTML.getBoundingClientRect().height/window.innerHeight,n=window.scrollY,r=!1;const _=()=>window.scrollY,a=t=>{t?(e.BOUTON_RETOUR_SOMMET.setAttribute(O,""),e.BOUTON_RETOUR_SOMMET.setAttribute(T,"99"),e.IMAGE_BOUTON.removeAttribute(s)):(e.BOUTON_RETOUR_SOMMET.removeAttribute(O),e.BOUTON_RETOUR_SOMMET.setAttribute(T,"-2"),e.IMAGE_BOUTON.setAttribute(s,"")),r=!1},U=()=>{window.addEventListener("scroll",()=>{n=_(),!(E<o)&&(r||(r=!0,requestAnimationFrame(()=>a(n>window.innerHeight*o))))}),new ResizeObserver(t=>{u(l(t),R(B=>{E=e.CORPS_HTML.getBoundingClientRect().height/window.innerHeight,n=_()}))}).observe(e.CORPS_HTML),a(n>window.innerHeight*o)},d=()=>{e.BOUTON_RETOUR_SOMMET.addEventListener("click",t=>{t.preventDefault(),window.scrollTo({behavior:"smooth",top:0}),e.BOUTON_MENU_MOBILE.focus({preventScroll:!0})})};document.addEventListener("DOMContentLoaded",()=>{d(),U()});
|
||||
//# sourceMappingURL=scripts-bouton-retour-sommet.js.map
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -1,2 +1,2 @@
|
|||
import{z as a}from"./index.CuMLbxmh.js";import{b as i,e as o,R as E,f as u,g as R}from"./utils.DNv5smZT.js";import"./exports.1ijyAKMZ.js";document.addEventListener("DOMContentLoaded",()=>{const e=i(u),t=o(R);E.forEachWithIndex([t.at(0),t.at(-1)],(n,r)=>{r&&new IntersectionObserver(E.forEach(s=>{s.boundingClientRect.top<=0||a([s.isIntersecting,n]).with([!0,0],()=>e.removeAttribute("data-entrees-presentes-debut")).with([!0,1],()=>e.removeAttribute("data-entrees-presentes-fin")).with([!1,0],()=>e.setAttribute("data-entrees-presentes-debut","")).with([!1,1],()=>e.setAttribute("data-entrees-presentes-fin","")).run()}),{root:null,threshold:.9}).observe(r)})});
|
||||
import{z as i}from"./index.CuMLbxmh.js";import{b as a,g as o,R as E,i as u,j as R}from"./utils.DS2YS0tX.js";import"./exports.1ijyAKMZ.js";document.addEventListener("DOMContentLoaded",()=>{const e=a(u),t=o(R);E.forEachWithIndex([t.at(0),t.at(-1)],(n,r)=>{r&&new IntersectionObserver(E.forEach(s=>{s.boundingClientRect.top<=0||i([s.isIntersecting,n]).with([!0,0],()=>e.removeAttribute("data-entrees-presentes-debut")).with([!0,1],()=>e.removeAttribute("data-entrees-presentes-fin")).with([!1,0],()=>e.setAttribute("data-entrees-presentes-debut","")).with([!1,1],()=>e.setAttribute("data-entrees-presentes-fin","")).run()}),{root:null,threshold:.9}).observe(r)})});
|
||||
//# sourceMappingURL=scripts-menu-categories.js.map
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1,2 +1,2 @@
|
|||
import{b as m,e as L,R as T,l as _,m as o,C as N,n as c,o as p,p as f,q as i}from"./utils.DNv5smZT.js";import{a0 as a}from"./exports.1ijyAKMZ.js";import{P as E}from"./index-c1cc4c86.BsIfgdq2.js";import"./belt_Option-91f3b350.y_XblYXp.js";const u=m(p),I=L(f),S=L(i),s=new Map;T.forEachWithIndex(I,(l,r)=>{a(r,E.flatMap(t=>t.getAttribute(_)),E.tap(t=>{s.set(t,[r,S[l]])}))});document.addEventListener("DOMContentLoaded",()=>{u.addEventListener("click",l=>{const r=l.target;a(r,E.fromPredicate(t=>t.className===N),E.mapNullable(t=>t.parentElement),E.flatMap(t=>t.getAttribute(_)),E.tap(t=>{a(E.fromNullable(s.get(t)),E.tap(T.forEach(e=>e.removeAttribute(o))))})),a(r,E.fromPredicate(t=>t.className===c),E.flatMap(t=>t.getAttribute(_)),E.tap(t=>{if(r.hasAttribute(o)){a(E.fromNullable(s.get(t)),E.tap(T.forEach(e=>e.removeAttribute(o))));return}a(Array.from(s.values()),T.flat,T.forEach(e=>e.removeAttribute(o))),a(E.fromNullable(s.get(t)),E.tap(T.forEach(e=>e.toggleAttribute(o))))}))})});
|
||||
import{b as N,g as L,R as T,m as l,n as o,C as m,o as c,p as f,q as p,s as u}from"./utils.DS2YS0tX.js";import{a0 as a}from"./exports.1ijyAKMZ.js";import{P as E}from"./index-c1cc4c86.RjqwfILA.js";const I=N(f),i=L(p),S=L(u),s=new Map;T.forEachWithIndex(i,(_,r)=>{a(r,E.flatMap(t=>t.getAttribute(l)),E.tap(t=>{s.set(t,[r,S[_]])}))});document.addEventListener("DOMContentLoaded",()=>{I.addEventListener("click",_=>{const r=_.target;a(r,E.fromPredicate(t=>t.className===m),E.mapNullable(t=>t.parentElement),E.flatMap(t=>t.getAttribute(l)),E.tap(t=>{a(E.fromNullable(s.get(t)),E.tap(T.forEach(e=>e.removeAttribute(o))))})),a(r,E.fromPredicate(t=>t.className===c),E.flatMap(t=>t.getAttribute(l)),E.tap(t=>{if(r.hasAttribute(o)){a(E.fromNullable(s.get(t)),E.tap(T.forEach(e=>e.removeAttribute(o))));return}a(Array.from(s.values()),T.flat,T.forEach(e=>e.removeAttribute(o))),a(E.fromNullable(s.get(t)),E.tap(T.forEach(e=>e.toggleAttribute(o))))}))})});
|
||||
//# sourceMappingURL=scripts-page-a-propos.js.map
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -1,2 +1,2 @@
|
|||
import{b as i,e as S,s as l,t as g,R as N,u as s,d as m}from"./utils.DNv5smZT.js";import{e as O}from"./nombres.n4VPN7qr.js";import{a0 as G}from"./exports.1ijyAKMZ.js";import{P as L}from"./index-c1cc4c86.BsIfgdq2.js";import"./belt_Option-91f3b350.y_XblYXp.js";const c=()=>{const e={CONTENEUR_STORYTELLING:i(".storytelling__conteneur"),IMAGES_STORYTELLING:S(l),STORYTELLING:i(g)};let E=e.IMAGES_STORYTELLING.at(0)?.getBoundingClientRect().height??0,n=0;const r=(t,T)=>{t.toggleAttribute(s,T),t.toggleAttribute(m,T)},I=()=>{console.time(),E=G(N.getBy(e.IMAGES_STORYTELLING,t=>!t.hasAttribute(s)),L.map(t=>t.getBoundingClientRect().height),L.getWithDefault(0)),e.CONTENEUR_STORYTELLING.style.minHeight=`${String(E*e.IMAGES_STORYTELLING.length+61)}px`,e.CONTENEUR_STORYTELLING.style.maxHeight=`${String(E*e.IMAGES_STORYTELLING.length+61)}px`,console.timeEnd()},o=()=>{n=e.STORYTELLING.scrollTop,e.IMAGES_STORYTELLING.forEach((t,T)=>{const a=E*T,R=E*(T+1);r(t,!O(n,a,R))})};new ResizeObserver(()=>{I(),o()}).observe(e.STORYTELLING),e.STORYTELLING.addEventListener("scroll",()=>o())};document.addEventListener("DOMContentLoaded",()=>{c()});
|
||||
import{b as o,g as S,t as g,u as l,R as N,v as i,f as O}from"./utils.DS2YS0tX.js";import{e as G}from"./nombres.n4VPN7qr.js";import{a0 as m}from"./exports.1ijyAKMZ.js";import{P as s}from"./index-c1cc4c86.RjqwfILA.js";const c=()=>{const e={CONTENEUR_STORYTELLING:o(".storytelling__conteneur"),IMAGES_STORYTELLING:S(g),STORYTELLING:o(l)};let E=e.IMAGES_STORYTELLING.at(0)?.getBoundingClientRect().height??0,n=0;const r=(t,T)=>{t.toggleAttribute(i,T),t.toggleAttribute(O,T)},I=()=>{E=m(N.getBy(e.IMAGES_STORYTELLING,t=>!t.hasAttribute(i)),s.map(t=>t.getBoundingClientRect().height),s.getWithDefault(0)),e.CONTENEUR_STORYTELLING.style.minHeight=`${String(E*e.IMAGES_STORYTELLING.length+61)}px`,e.CONTENEUR_STORYTELLING.style.maxHeight=`${String(E*e.IMAGES_STORYTELLING.length+61)}px`},L=()=>{n=e.STORYTELLING.scrollTop,e.IMAGES_STORYTELLING.forEach((t,T)=>{const a=E*T,R=E*(T+1);r(t,!G(n,a,R))})};new ResizeObserver(()=>{I(),L()}).observe(e.STORYTELLING),e.STORYTELLING.addEventListener("scroll",()=>L())};document.addEventListener("DOMContentLoaded",()=>{c()});
|
||||
//# sourceMappingURL=scripts-page-accueil.js.map
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
{"version":3,"file":"scripts-page-accueil.js","sources":["../../src/scripts/scripts-page-accueil.ts"],"sourcesContent":["// Scripts pour la Page d'accueil\n\nimport { A, O, pipe } from \"@mobily/ts-belt\";\n\nimport {\n ATTRIBUT_ARIA_HIDDEN,\n ATTRIBUT_CACHE,\n SELECTEUR_CONTENEUR_STORYTELLING,\n SELECTEUR_IMAGES_STORYTELLING,\n} from \"./constantes/dom.ts\";\nimport { estEntreDeuxNombres } from \"./lib/nombres.ts\";\nimport { recupereEleOuLeve, recupereElesOuLeve } from \"./lib/utils.ts\";\n\nconst initialiseScrollStorytelling = (): void => {\n const E = {\n /** Le conteneur des images du storytelling. */\n CONTENEUR_STORYTELLING: recupereEleOuLeve<HTMLElement>(\".storytelling__conteneur\"),\n /** Les images du storytelling. */\n IMAGES_STORYTELLING: recupereElesOuLeve<HTMLDivElement>(SELECTEUR_IMAGES_STORYTELLING),\n /** Le bloc contenant le storytelling. */\n STORYTELLING: recupereEleOuLeve<HTMLElement>(SELECTEUR_CONTENEUR_STORYTELLING),\n };\n\n /** La hauteur d'une image du storytelling. */\n let hauteurImage = E.IMAGES_STORYTELLING.at(0)?.getBoundingClientRect().height ?? 0;\n /** La position du défilement (en pixels) du Conteneur des images du storytelling. */\n let positionDefilementConteneur = 0;\n\n /**\n * TODO\n * @param image\n * @param visible\n */\n const changeVisibiliteImage = (image: HTMLDivElement, visible: boolean) => {\n image.toggleAttribute(ATTRIBUT_CACHE, visible);\n image.toggleAttribute(ATTRIBUT_ARIA_HIDDEN, visible);\n };\n\n /**\n * TODO\n */\n const majDimensions = (): void => {\n console.time();\n hauteurImage = pipe(\n A.getBy(E.IMAGES_STORYTELLING, (i: HTMLDivElement) => !i.hasAttribute(ATTRIBUT_CACHE)),\n O.map((i: HTMLDivElement) => i.getBoundingClientRect().height),\n O.getWithDefault(0),\n );\n E.CONTENEUR_STORYTELLING.style.minHeight = `${String(hauteurImage * E.IMAGES_STORYTELLING.length + 61)}px`;\n E.CONTENEUR_STORYTELLING.style.maxHeight = `${String(hauteurImage * E.IMAGES_STORYTELLING.length + 61)}px`;\n console.timeEnd();\n };\n\n /**\n * TODO\n */\n const majImages = (): void => {\n // Met à jour la position du défilement dans le Conteneur\n positionDefilementConteneur = E.STORYTELLING.scrollTop;\n\n // Met à jour l'attribut de visibilité des images en fonction du défilement\n E.IMAGES_STORYTELLING.forEach((image: HTMLDivElement, index: number): void => {\n const debutYImage = hauteurImage * index;\n const finYImage = hauteurImage * (index + 1);\n\n changeVisibiliteImage(image, !estEntreDeuxNombres(positionDefilementConteneur, debutYImage, finYImage));\n });\n };\n\n // Initialise l'Observateur de Redimensionnement (ResizeObserver)\n new ResizeObserver((): void => {\n majDimensions();\n majImages();\n }).observe(E.STORYTELLING);\n\n // Initialise la mise à jour des images au défilement sur le Conteneur\n E.STORYTELLING.addEventListener(\"scroll\", (): void => majImages());\n};\n\ndocument.addEventListener(\"DOMContentLoaded\", (): void => {\n initialiseScrollStorytelling();\n});\n"],"names":["initialiseScrollStorytelling","E","recupereEleOuLeve","recupereElesOuLeve","SELECTEUR_IMAGES_STORYTELLING","SELECTEUR_CONTENEUR_STORYTELLING","hauteurImage","positionDefilementConteneur","changeVisibiliteImage","image","visible","ATTRIBUT_CACHE","ATTRIBUT_ARIA_HIDDEN","majDimensions","pipe","A","i","O","majImages","index","debutYImage","finYImage","estEntreDeuxNombres"],"mappings":"mQAaA,MAAMA,EAA+B,IAAY,CAC/C,MAAMC,EAAI,CAER,uBAAwBC,EAA+B,0BAA0B,EAEjF,oBAAqBC,EAAmCC,CAA6B,EAErF,aAAcF,EAA+BG,CAAgC,CAC/E,EAGI,IAAAC,EAAeL,EAAE,oBAAoB,GAAG,CAAC,GAAG,wBAAwB,QAAU,EAE9EM,EAA8B,EAO5B,MAAAC,EAAwB,CAACC,EAAuBC,IAAqB,CACnED,EAAA,gBAAgBE,EAAgBD,CAAO,EACvCD,EAAA,gBAAgBG,EAAsBF,CAAO,CACrD,EAKMG,EAAgB,IAAY,CAChC,QAAQ,KAAK,EACEP,EAAAQ,EACbC,EAAE,MAAMd,EAAE,oBAAsBe,GAAsB,CAACA,EAAE,aAAaL,CAAc,CAAC,EACrFM,EAAE,IAAKD,GAAsBA,EAAE,wBAAwB,MAAM,EAC7DC,EAAE,eAAe,CAAC,CACpB,EACEhB,EAAA,uBAAuB,MAAM,UAAY,GAAG,OAAOK,EAAeL,EAAE,oBAAoB,OAAS,EAAE,CAAC,KACpGA,EAAA,uBAAuB,MAAM,UAAY,GAAG,OAAOK,EAAeL,EAAE,oBAAoB,OAAS,EAAE,CAAC,KACtG,QAAQ,QAAQ,CAClB,EAKMiB,EAAY,IAAY,CAE5BX,EAA8BN,EAAE,aAAa,UAG7CA,EAAE,oBAAoB,QAAQ,CAACQ,EAAuBU,IAAwB,CAC5E,MAAMC,EAAcd,EAAea,EAC7BE,EAAYf,GAAgBa,EAAQ,GAE1CX,EAAsBC,EAAO,CAACa,EAAoBf,EAA6Ba,EAAaC,CAAS,CAAC,CAAA,CACvG,CACH,EAGA,IAAI,eAAe,IAAY,CACfR,EAAA,EACJK,EAAA,CAAA,CACX,EAAE,QAAQjB,EAAE,YAAY,EAGzBA,EAAE,aAAa,iBAAiB,SAAU,IAAYiB,GAAW,CACnE,EAEA,SAAS,iBAAiB,mBAAoB,IAAY,CAC3BlB,EAAA,CAC/B,CAAC"}
|
||||
{"version":3,"file":"scripts-page-accueil.js","sources":["../../src/scripts/scripts-page-accueil.ts"],"sourcesContent":["// Scripts pour la Page d'accueil\n\nimport { A, O, pipe } from \"@mobily/ts-belt\";\n\nimport {\n ATTRIBUT_ARIA_HIDDEN,\n ATTRIBUT_CACHE,\n SELECTEUR_CONTENEUR_STORYTELLING,\n SELECTEUR_IMAGES_STORYTELLING,\n} from \"./constantes/dom.ts\";\nimport { estEntreDeuxNombres } from \"./lib/nombres.ts\";\nimport { recupereEleOuLeve, recupereElesOuLeve } from \"./lib/utils.ts\";\n\nconst initialiseScrollStorytelling = (): void => {\n const E = {\n /** Le conteneur des images du storytelling. */\n CONTENEUR_STORYTELLING: recupereEleOuLeve<HTMLElement>(\".storytelling__conteneur\"),\n /** Les images du storytelling. */\n IMAGES_STORYTELLING: recupereElesOuLeve<HTMLDivElement>(SELECTEUR_IMAGES_STORYTELLING),\n /** Le bloc contenant le storytelling. */\n STORYTELLING: recupereEleOuLeve<HTMLElement>(SELECTEUR_CONTENEUR_STORYTELLING),\n };\n\n /** La hauteur d'une image du storytelling. */\n let hauteurImage = E.IMAGES_STORYTELLING.at(0)?.getBoundingClientRect().height ?? 0;\n /** La position du défilement (en pixels) du Conteneur des images du storytelling. */\n let positionDefilementConteneur = 0;\n\n /**\n * TODO\n * @param image\n * @param visible\n */\n const changeVisibiliteImage = (image: HTMLDivElement, visible: boolean) => {\n image.toggleAttribute(ATTRIBUT_CACHE, visible);\n image.toggleAttribute(ATTRIBUT_ARIA_HIDDEN, visible);\n };\n\n /**\n * TODO\n */\n const majDimensions = (): void => {\n hauteurImage = pipe(\n A.getBy(E.IMAGES_STORYTELLING, (i: HTMLDivElement) => !i.hasAttribute(ATTRIBUT_CACHE)),\n O.map((i: HTMLDivElement) => i.getBoundingClientRect().height),\n O.getWithDefault(0),\n );\n E.CONTENEUR_STORYTELLING.style.minHeight = `${String(hauteurImage * E.IMAGES_STORYTELLING.length + 61)}px`;\n E.CONTENEUR_STORYTELLING.style.maxHeight = `${String(hauteurImage * E.IMAGES_STORYTELLING.length + 61)}px`;\n };\n\n /**\n * TODO\n */\n const majImages = (): void => {\n // Met à jour la position du défilement dans le Conteneur\n positionDefilementConteneur = E.STORYTELLING.scrollTop;\n\n // Met à jour l'attribut de visibilité des images en fonction du défilement\n E.IMAGES_STORYTELLING.forEach((image: HTMLDivElement, index: number): void => {\n const debutYImage = hauteurImage * index;\n const finYImage = hauteurImage * (index + 1);\n\n changeVisibiliteImage(image, !estEntreDeuxNombres(positionDefilementConteneur, debutYImage, finYImage));\n });\n };\n\n // Initialise l'Observateur de Redimensionnement (ResizeObserver)\n new ResizeObserver((): void => {\n majDimensions();\n majImages();\n }).observe(E.STORYTELLING);\n\n // Initialise la mise à jour des images au défilement sur le Conteneur\n E.STORYTELLING.addEventListener(\"scroll\", (): void => majImages());\n};\n\ndocument.addEventListener(\"DOMContentLoaded\", (): void => {\n initialiseScrollStorytelling();\n});\n"],"names":["initialiseScrollStorytelling","E","recupereEleOuLeve","recupereElesOuLeve","SELECTEUR_IMAGES_STORYTELLING","SELECTEUR_CONTENEUR_STORYTELLING","hauteurImage","positionDefilementConteneur","changeVisibiliteImage","image","visible","ATTRIBUT_CACHE","ATTRIBUT_ARIA_HIDDEN","majDimensions","pipe","A","i","O","majImages","index","debutYImage","finYImage","estEntreDeuxNombres"],"mappings":"wNAaA,MAAMA,EAA+B,IAAY,CAC/C,MAAMC,EAAI,CAER,uBAAwBC,EAA+B,0BAA0B,EAEjF,oBAAqBC,EAAmCC,CAA6B,EAErF,aAAcF,EAA+BG,CAAgC,CAC/E,EAGI,IAAAC,EAAeL,EAAE,oBAAoB,GAAG,CAAC,GAAG,wBAAwB,QAAU,EAE9EM,EAA8B,EAO5B,MAAAC,EAAwB,CAACC,EAAuBC,IAAqB,CACnED,EAAA,gBAAgBE,EAAgBD,CAAO,EACvCD,EAAA,gBAAgBG,EAAsBF,CAAO,CACrD,EAKMG,EAAgB,IAAY,CACjBP,EAAAQ,EACbC,EAAE,MAAMd,EAAE,oBAAsBe,GAAsB,CAACA,EAAE,aAAaL,CAAc,CAAC,EACrFM,EAAE,IAAKD,GAAsBA,EAAE,wBAAwB,MAAM,EAC7DC,EAAE,eAAe,CAAC,CACpB,EACEhB,EAAA,uBAAuB,MAAM,UAAY,GAAG,OAAOK,EAAeL,EAAE,oBAAoB,OAAS,EAAE,CAAC,KACpGA,EAAA,uBAAuB,MAAM,UAAY,GAAG,OAAOK,EAAeL,EAAE,oBAAoB,OAAS,EAAE,CAAC,IACxG,EAKMiB,EAAY,IAAY,CAE5BX,EAA8BN,EAAE,aAAa,UAG7CA,EAAE,oBAAoB,QAAQ,CAACQ,EAAuBU,IAAwB,CAC5E,MAAMC,EAAcd,EAAea,EAC7BE,EAAYf,GAAgBa,EAAQ,GAE1CX,EAAsBC,EAAO,CAACa,EAAoBf,EAA6Ba,EAAaC,CAAS,CAAC,CAAA,CACvG,CACH,EAGA,IAAI,eAAe,IAAY,CACfR,EAAA,EACJK,EAAA,CAAA,CACX,EAAE,QAAQjB,EAAE,YAAY,EAGzBA,EAAE,aAAa,iBAAiB,SAAU,IAAYiB,GAAW,CACnE,EAEA,SAAS,iBAAiB,mBAAoB,IAAY,CAC3BlB,EAAA,CAC/B,CAAC"}
|
||||
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
|
|
@ -1,2 +1,2 @@
|
|||
import{z as U}from"./index.CuMLbxmh.js";import{h as g,i as v}from"./api.DpNqIphF.js";import{r as S,aw as D,ax as P,b as E,J as p,ay as M,az as w,a as F,aA as H,aB as f,aC as y,aD as B,aE as G,aF as x,R as i,aG as J,e as j,aH as k,aI as _,aJ as m,F as O,T as l,z as W,aK as V,aL as X,al as q,ao as z}from"./utils.DNv5smZT.js";import{a as K,e as Q,b as $}from"./gardes.CgXTclcl.js";import{f as Y,c as Z}from"./messages.B4HRoo_h.js";import{t as ee}from"./reseau.BY8-4gXm.js";import{o as N,a as d,n as A,c as te,s as C,j as re}from"./validation.CuPxXgCV.js";import{a0 as n}from"./exports.1ijyAKMZ.js";import{l as se}from"./index-0eef19ec.BdWpJoEP.js";import"./belt_Option-91f3b350.y_XblYXp.js";const ae=N({attribute:C(),value:C()}),oe=N({id:d(A()),quantity:d(A()),variation:d(te(ae))}),L=_etats,ne=a=>{a.forEach(r=>{r[0].setAttribute(m,"false"),r[1].setAttribute(O,"true")})},c=n(S(D),F),R=S(P),Ee=E(H),ie=n(p(M),f),ce=n(p(w),f),ue=()=>{const a=E(y),r=E(B),o=E(G),t=E(x),e=i.flat([E(J),j(k)]),s=()=>Number(t.getAttribute(_));i.forEachWithIndex([e.at(0),e.at(-1)],(u,I)=>{I&&(new IntersectionObserver(i.forEach(T=>U([T.isIntersecting,u]).with([!0,0],()=>a.removeAttribute("data-images-presentes-debut")).with([!0,1],()=>a.removeAttribute("data-images-presentes-fin")).with([!1,0],()=>a.setAttribute("data-images-presentes-debut","")).with([!1,1],()=>a.setAttribute("data-images-presentes-fin","")).otherwise(()=>{})),{root:null,rootMargin:"100% 0% 100% 0%",threshold:.5}).observe(I),i.forEachWithIndex(e,(T,h)=>new IntersectionObserver(i.forEach(b=>{b.isIntersecting&&t.setAttribute(_,String(T))}),{root:null,rootMargin:"100% 0% 100% 0%",threshold:.5}).observe(h)),r.addEventListener("click",()=>e[s()-1]?.scrollIntoView({behavior:"smooth",block:"nearest",inline:"center"})),o.addEventListener("click",()=>e[s()+1]?.scrollIntoView({behavior:"smooth",block:"nearest",inline:"center"})))})},Te=()=>{const a=new Map;ie.forEach((r,o)=>{const t=r.getAttribute("id"),e=ce[o];if(!t)throw new Error("Le lien ne dispose pas d'ID !");if(!e)throw new Error("Le lien ne dispose pas de section correspondante !");a.set(t,[r,e]),r.addEventListener("click",s=>{s.preventDefault();const u=r.getAttribute(m)==="true";ne(n(a.values(),Array.from)),!u&&(r.setAttribute(m,"true"),e.removeAttribute(O))})}),R.ifRight(r=>r.addEventListener("change",o=>{const t=n(l.fromNullable(o.target),e=>e.filter(K));n(t,e=>e.map(s=>s.validity.valid),e=>e.ifJust(s=>c.toggleAttribute(W,!s))),n(t,e=>e.chain(s=>l.fromNullable(s.selectedOptions[0])),e=>e.chain(s=>l.fromNullable(s.getAttribute(V))),e=>e.ifJust(s=>{Ee.textContent=`${s}€`}))})),c.addEventListener("click",r=>le())},le=()=>{c.textContent="Adding...";const a=R.map(o=>o.value).orDefault(String(L.idProduit)),r={id:Number(a),quantity:1};re(r,oe).map(o=>{fetch(g,{body:JSON.stringify(o),credentials:"same-origin",headers:{Accept:"application/json","Content-Type":"application/json",[v]:L.nonce},method:"POST",mode:"same-origin",signal:AbortSignal.timeout(5e3)}).then(async t=>{Q(t)&&X("500 Server Error"),n(await t.json(),e=>ee(e,Z),q.getUnsafe("items_count"),se.tap(e=>{c.textContent="Added to cart!",Y({quantiteProduits:e})}))}).catch(t=>{$(t)?(z(t),console.error(t)):console.error("e n'est pas une Erreur ?!",t),c.textContent="Add to cart"})}).ifLeft(o=>console.error(o.issues))};document.addEventListener("DOMContentLoaded",()=>{Te(),ue()});
|
||||
import{z as O,N as n}from"./index.CuMLbxmh.js";import{o as m,a as _,n as N,c as D,s as R,j as U,V as g}from"./validation.p-hUfG_o.js";import{h as P}from"./api.DpNqIphF.js";import{b as i,R as o,g as I,r as v,ar as M,as as F,at as B,au as w,av as H,aw as G,ax as y,ay as J,az as V,aA as x,aB as k,aC as l,aD as C,G as h,V as q,B as u,aE as W,D as S,E as L,F as d,a1 as X,I as c,ac as j,f as z}from"./utils.DS2YS0tX.js";import{E as A,l as $,e as Q,p as K,c as Y}from"./reseau.C8CWV2JS.js";import{a as Z}from"./gardes.CUgVnuaB.js";import{g as ee,d as te}from"./messages.Qx8X6YMT.js";import{a0 as p}from"./exports.1ijyAKMZ.js";import{t as re}from"./index-c1cc4c86.RjqwfILA.js";const Ee=m({attribute:R(),value:R()}),ae=m({id:_(N()),quantity:_(N()),variation:_(D(Ee))}),f=_etats,se=s=>j(s,t=>{t.at(0)?.setAttribute(z,"false"),t.at(1)?.setAttribute(h,"true")}),e={BOUTON_AJOUT_PANIER:i(F),CONTENEUR_FLECHES_DEFILEMENT:i(B),FLECHE_DEFILEMENT_DROITE:i(w),FLECHE_DEFILEMENT_GAUCHE:i(H),IMAGES:o.flat([i(G),I(y)]),LIENS_ONGLETS:I(J),PHOTOS_PRODUIT:i(V),PRIX_PRODUIT:i(x),SECTIONS_CONTENUS:I(k),SELECTEUR_VARIATION:v(M)},ie=()=>{const s=()=>Number(e.PHOTOS_PRODUIT.getAttribute(l));o.forEachWithIndex([e.IMAGES.at(0),e.IMAGES.at(-1)],(t,r)=>{r&&(new IntersectionObserver(o.forEach(a=>O([a.isIntersecting,t]).with([!0,0],()=>e.CONTENEUR_FLECHES_DEFILEMENT.removeAttribute("data-images-presentes-debut")).with([!0,1],()=>e.CONTENEUR_FLECHES_DEFILEMENT.removeAttribute("data-images-presentes-fin")).with([!1,0],()=>e.CONTENEUR_FLECHES_DEFILEMENT.setAttribute("data-images-presentes-debut","")).with([!1,1],()=>e.CONTENEUR_FLECHES_DEFILEMENT.setAttribute("data-images-presentes-fin","")).otherwise(()=>{})),{root:null,rootMargin:"100% 0% 100% 0%",threshold:.5}).observe(r),o.forEachWithIndex(e.IMAGES,(a,E)=>new IntersectionObserver(o.forEach(T=>{T.isIntersecting&&e.PHOTOS_PRODUIT.setAttribute(l,String(a))}),{root:null,rootMargin:"100% 0% 100% 0%",threshold:.5}).observe(E)),e.FLECHE_DEFILEMENT_GAUCHE.addEventListener("click",()=>e.IMAGES[s()-1]?.scrollIntoView({behavior:"smooth",block:"nearest",inline:"center"})),e.FLECHE_DEFILEMENT_DROITE.addEventListener("click",()=>e.IMAGES[s()+1]?.scrollIntoView({behavior:"smooth",block:"nearest",inline:"center"})))})},ne=()=>{const s=new Map;e.LIENS_ONGLETS.forEach((t,r)=>{const a=t.getAttribute("id"),E=e.SECTIONS_CONTENUS[r];if(!a)throw new Error("Le lien ne dispose pas d'ID !");if(!E)throw new Error("Le lien ne dispose pas de section correspondante !");s.set(a,[t,E]),t.addEventListener("click",T=>{T.preventDefault();const b=t.getAttribute(C)==="true";se(p(s.values(),Array.from)),!b&&(t.setAttribute(C,"true"),E.removeAttribute(h))})}),e.SELECTEUR_VARIATION.ifRight(t=>t.addEventListener("change",r=>{const a=q.fromNullable(r.target).filter(Z);a.map(E=>E.validity.valid).ifJust(E=>e.BOUTON_AJOUT_PANIER.toggleAttribute(u,!E)),a.chainNullable(E=>E.selectedOptions[0]).chainNullable(E=>E.getAttribute(W)).ifJust(E=>{e.PRIX_PRODUIT.textContent=`${E}€`})})),e.BOUTON_AJOUT_PANIER.addEventListener("click",()=>oe())},oe=()=>{const s={id:e.SELECTEUR_VARIATION.map(t=>Number(t.value)).orDefault(f.idProduit),quantity:1};A.liftEither(U(s,ae)).ifRight(()=>{e.BOUTON_AJOUT_PANIER.setAttribute(u,""),e.BOUTON_AJOUT_PANIER.setAttribute(S,""),$(e.BOUTON_AJOUT_PANIER,500)}).chain(t=>Q(K({corps:JSON.stringify(t),nonce:f.nonce,route:P}))).chain(t=>A(async({throwE:r})=>O(await Y(t)).with({status:500},()=>r(new L("500 Server Error"))).with({status:400},()=>r(new d("400 Bad Request Error"))).with({status:201},a=>a.body).otherwise(a=>r(new Error(`Erreur inconnue ${String(a.status)}`))))).chain(t=>A.liftEither(U(t,te))).ifRight(t=>p(X(t,"items_count"),re(r=>{e.BOUTON_AJOUT_PANIER.textContent="Added to cart!",ee({quantiteProduits:r})}))).ifLeft(t=>{O(t).with(n.instanceOf(g),r=>{c(r),console.error(r.issues)}).with(n.instanceOf(L),n.instanceOf(d),r=>{c(r),console.error(r)}).with(n.instanceOf(DOMException),n.instanceOf(TypeError),n.instanceOf(Error),r=>{c(r),console.error(r)}).exhaustive(),e.BOUTON_AJOUT_PANIER.textContent="Add to cart"}).finally(()=>{e.BOUTON_AJOUT_PANIER.removeAttribute(S),e.BOUTON_AJOUT_PANIER.removeAttribute(u)}).run()};document.addEventListener("DOMContentLoaded",()=>{ne(),ie()});
|
||||
//# sourceMappingURL=scripts-page-produit.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
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
|
|
@ -69,7 +69,7 @@ button {
|
|||
&.bouton-retour-haut {
|
||||
position: fixed;
|
||||
right: var(--espace-xl);
|
||||
bottom: calc(var(--espace-xl) + var(--pied-de-page-hauteur));
|
||||
bottom: calc(var(--espace-l) + var(--pied-de-page-hauteur));
|
||||
transform: rotate(180deg);
|
||||
padding: var(--espace-m);
|
||||
visibility: hidden;
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ export const ATTRIBUT_LIVRAISON_VALIDEE = "data-livraison-validee";
|
|||
export const ATTRIBUT_MENU_MOBILE_ACTIVE = "data-menu-mobile-active";
|
||||
export const ATTRIBUT_PAGE = "data-page";
|
||||
export const ATTRIBUT_PRIX = "data-prix";
|
||||
export const ATTRIBUT_TABINDEX = "tabindex";
|
||||
|
||||
// En-tête
|
||||
export const SELECTEUR_BOUTON_MENU_MOBILE = "#bouton-menu-mobile";
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ const creeTransportFetch = (options: BrowserTransportOptions): Transport => {
|
|||
/* Créé la configuration Sentry */
|
||||
const client = new BrowserClient({
|
||||
dsn: import.meta.env.VITE_GLITCHTIP_NSD,
|
||||
environment: "development",
|
||||
environment: "production",
|
||||
integrations: [
|
||||
breadcrumbsIntegration(),
|
||||
dedupeIntegration(),
|
||||
|
|
@ -63,6 +63,7 @@ const client = new BrowserClient({
|
|||
httpContextIntegration(),
|
||||
linkedErrorsIntegration(),
|
||||
],
|
||||
sendDefaultPii: true,
|
||||
stackParser: defaultStackParser,
|
||||
tracesSampleRate: 0.01,
|
||||
transport: creeTransportFetch,
|
||||
|
|
|
|||
|
|
@ -97,10 +97,7 @@ export const leveNonExistingKeyError = (message: string): never => {
|
|||
* @param erreur
|
||||
* @returns L'ID Sentry de l'évènement capturé.
|
||||
*/
|
||||
export const reporteErreur = <E extends Error>(erreur: E): string => {
|
||||
console.error(erreur);
|
||||
return captureException(erreur);
|
||||
};
|
||||
export const reporteErreur = <E extends Error>(erreur: E): string => captureException(erreur);
|
||||
|
||||
/**
|
||||
* Reporte une Erreur, sous forme d'erreur console et au service GlitchTip, puis la lève sous forme
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ import {
|
|||
} from "../constantes/messages-utilisateur";
|
||||
import { lanceAnimationCycleLoading } from "../lib/animations";
|
||||
import { eitherJsonParse, eitherSessionStorageGet } from "../lib/dom";
|
||||
import { BadRequestError, leveErreur, NonExistingKeyError, ServerError } from "../lib/erreurs";
|
||||
import { BadRequestError, leveErreur, NonExistingKeyError, reporteErreur, ServerError } from "../lib/erreurs";
|
||||
import { ErreurAdresseInvalide } from "../lib/erreurs/adresses";
|
||||
import { emetUniqueMessageCanal } from "../lib/messages";
|
||||
import { diviseParCent, formateEnEuros } from "../lib/nombres";
|
||||
|
|
@ -194,10 +194,12 @@ export const initialiseBoutonCalculLivraison = (): void => {
|
|||
(erreur: BadRequestError | ErreurAdresseInvalide | FetchErrors | ServerError | ValiError<AnySchema>) => {
|
||||
match(erreur)
|
||||
.with(P.instanceOf(ValiError), e => {
|
||||
reporteErreur(e);
|
||||
console.error(e.issues);
|
||||
E.MESSAGE_ADRESSES.textContent = ERREUR_GENERIQUE_SOUMISSION_ADRESSES;
|
||||
})
|
||||
.with(P.instanceOf(ErreurAdresseInvalide), e => {
|
||||
reporteErreur(e);
|
||||
console.error(e, e.problemes);
|
||||
match(e.problemes)
|
||||
.when(p => pipe(dictValues(p), arrayFind(c => c === "The provided postcode is not valid")), () => {
|
||||
|
|
@ -208,10 +210,12 @@ export const initialiseBoutonCalculLivraison = (): void => {
|
|||
});
|
||||
})
|
||||
.with(P.instanceOf(ServerError), P.instanceOf(BadRequestError), e => {
|
||||
reporteErreur(e);
|
||||
console.error(e);
|
||||
E.MESSAGE_ADRESSES.textContent = ERREUR_GENERIQUE_SOUMISSION_ADRESSES;
|
||||
})
|
||||
.with(P.instanceOf(DOMException), P.instanceOf(TypeError), P.instanceOf(Error), e => {
|
||||
reporteErreur(e);
|
||||
console.error(e);
|
||||
E.MESSAGE_ADRESSES.textContent = ERREUR_GENERIQUE_RESEAU;
|
||||
})
|
||||
|
|
@ -261,8 +265,14 @@ export const initialiseBoutonCreationCommande = (): void => {
|
|||
// Traite de manière différenciée les Erreurs
|
||||
.ifLeft((erreur: NonExistingKeyError | SyntaxError | ValiError<AnySchema>) => {
|
||||
match(erreur)
|
||||
.with(P.instanceOf(ValiError), e => console.error(e.issues))
|
||||
.with(P.instanceOf(SyntaxError), P.instanceOf(NonExistingKeyError), e => console.error(e))
|
||||
.with(P.instanceOf(ValiError), e => {
|
||||
reporteErreur(e);
|
||||
console.error(e.issues);
|
||||
})
|
||||
.with(P.instanceOf(SyntaxError), P.instanceOf(NonExistingKeyError), e => {
|
||||
reporteErreur(e);
|
||||
console.error(e);
|
||||
})
|
||||
.exhaustive();
|
||||
|
||||
// Nettoie un stockage de session erronné
|
||||
|
|
@ -381,6 +391,7 @@ export const initialiseBoutonCreationCommande = (): void => {
|
|||
.ifLeft((erreur: BadRequestError | DOMException | ServerError | TypeError | ValiError<AnySchema>) => {
|
||||
match(erreur)
|
||||
.with(P.instanceOf(ValiError), e => {
|
||||
reporteErreur(e);
|
||||
console.error("ValiError", e.issues);
|
||||
E.MESSAGE_ADRESSES.textContent = ERREUR_GENERIQUE_CREATION_COMMANDE;
|
||||
})
|
||||
|
|
@ -390,11 +401,15 @@ export const initialiseBoutonCreationCommande = (): void => {
|
|||
P.instanceOf(ServerError),
|
||||
P.instanceOf(TypeError),
|
||||
e => {
|
||||
reporteErreur(e);
|
||||
console.error(e);
|
||||
E.MESSAGE_ADRESSES.textContent = ERREUR_GENERIQUE_CREATION_COMMANDE;
|
||||
},
|
||||
)
|
||||
.otherwise(e => console.error("erreur inconnu", e));
|
||||
.otherwise(e => {
|
||||
reporteErreur(e);
|
||||
console.error("erreur inconnu", e);
|
||||
});
|
||||
|
||||
// Désactive l'animation de chargement et rend le Bouton de nouveau cliquable
|
||||
E.BOUTON_ACTIONS_FORMULAIRE.removeAttribute(ATTRIBUT_CHARGEMENT);
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ import {
|
|||
import { NOM_CANAL_REVALIDATION_LIVRAISON } from "../constantes/messages";
|
||||
import { lanceAnimationCycleLoading } from "../lib/animations";
|
||||
import { accorderCibleASelecteur } from "../lib/dom";
|
||||
import { ServerError } from "../lib/erreurs";
|
||||
import { reporteErreur, ServerError } from "../lib/erreurs";
|
||||
import { ErreurCodePromoInvalide } from "../lib/erreurs/codes-promo";
|
||||
import { estReponse500 } from "../lib/gardes";
|
||||
import { emetUniqueMessageCanal, reponseEstCodeErreurWC } from "../lib/messages";
|
||||
|
|
@ -149,19 +149,25 @@ export const initialiseElementsCodePromo = (): void => {
|
|||
|
||||
// Traite les Erreurs et affiche un Message à l'Utilisateur
|
||||
match(erreur)
|
||||
.with(P.instanceOf(ValiError), e => console.error("ValiError", e.issues))
|
||||
.with(P.instanceOf(ValiError), e => {
|
||||
reporteErreur(e);
|
||||
console.error("ValiError", e.issues);
|
||||
})
|
||||
.with(P.instanceOf(ErreurCodePromoInvalide), e => {
|
||||
E.MESSAGE_CODE_PROMO.textContent = "This promo code does not exist.";
|
||||
reporteErreur(e);
|
||||
console.error(e);
|
||||
})
|
||||
.with(P.instanceOf(ServerError), e => {
|
||||
E.MESSAGE_CODE_PROMO.textContent =
|
||||
"Sorry, something went wrong! Please refresh the page and try again.";
|
||||
reporteErreur(e);
|
||||
console.error(e);
|
||||
})
|
||||
.with(P.instanceOf(TypeError), e => {
|
||||
E.MESSAGE_CODE_PROMO.textContent =
|
||||
"Sorry, something went wrong! Please refresh the page and try again.";
|
||||
reporteErreur(e);
|
||||
console.error(e);
|
||||
})
|
||||
.exhaustive();
|
||||
|
|
@ -223,9 +229,18 @@ export const initialiseElementsCodePromo = (): void => {
|
|||
})
|
||||
.ifLeft(erreur =>
|
||||
match(erreur)
|
||||
.with(P.instanceOf(ValiError), e => console.error("retour ajout code promo", e.issues))
|
||||
.with(P.instanceOf(ServerError), e => console.error("retour ajout code promo", e))
|
||||
.with(P.instanceOf(TypeError), e => console.error("retour ajout code promo", e))
|
||||
.with(P.instanceOf(ValiError), e => {
|
||||
reporteErreur(e);
|
||||
console.error("retour ajout code promo", e.issues);
|
||||
})
|
||||
.with(P.instanceOf(ServerError), e => {
|
||||
reporteErreur(e);
|
||||
console.error("retour ajout code promo", e);
|
||||
})
|
||||
.with(P.instanceOf(TypeError), e => {
|
||||
reporteErreur(e);
|
||||
console.error("retour ajout code promo", e);
|
||||
})
|
||||
.exhaustive()
|
||||
)
|
||||
.finally(() => {
|
||||
|
|
|
|||
|
|
@ -147,6 +147,7 @@ export const initialiseActionsEntreesPanier = (): void => {
|
|||
// Réactive les Boutons
|
||||
// pipe(entrees, arrayMap(recupereElementsEntreePanier), majActivationBoutons(true));
|
||||
})
|
||||
// TODO: ifLeft ?
|
||||
.run();
|
||||
});
|
||||
})
|
||||
|
|
@ -200,6 +201,7 @@ export const initialiseActionsEntreesPanier = (): void => {
|
|||
// Réactive les Boutons
|
||||
// pipe(entrees, arrayMap(recupereElementsEntreePanier), majActivationBoutons(true));
|
||||
})
|
||||
// TODO: ifLeft ?
|
||||
.run();
|
||||
});
|
||||
})
|
||||
|
|
@ -255,6 +257,7 @@ export const initialiseActionsEntreesPanier = (): void => {
|
|||
// Réactive les Boutons
|
||||
// pipe(entrees, arrayMap(recupereElementsEntreePanier), majActivationBoutons(true));
|
||||
})
|
||||
// TODO: ifLeft ?
|
||||
.run();
|
||||
});
|
||||
})
|
||||
|
|
|
|||
|
|
@ -4,7 +4,12 @@ import { pipe } from "@mobily/ts-belt";
|
|||
import { head as arrayHead } from "@mobily/ts-belt/Array";
|
||||
import { tap as optionTap } from "@mobily/ts-belt/Option";
|
||||
|
||||
import { ATTRIBUT_ACTIF, ATTRIBUT_ARIA_HIDDEN } from "./constantes/dom";
|
||||
import {
|
||||
ATTRIBUT_ACTIF,
|
||||
ATTRIBUT_ARIA_HIDDEN,
|
||||
ATTRIBUT_TABINDEX,
|
||||
SELECTEUR_BOUTON_MENU_MOBILE,
|
||||
} from "./constantes/dom";
|
||||
import { recupereEleOuLeve } from "./lib/utils";
|
||||
|
||||
/**
|
||||
|
|
@ -17,61 +22,91 @@ import { recupereEleOuLeve } from "./lib/utils";
|
|||
*/
|
||||
|
||||
const E = {
|
||||
BOUTON_MENU_MOBILE: recupereEleOuLeve<HTMLButtonElement>(SELECTEUR_BOUTON_MENU_MOBILE),
|
||||
BOUTON_RETOUR_SOMMET: recupereEleOuLeve<HTMLButtonElement>("#bouton-retour-haut"),
|
||||
CORPS_HTML: recupereEleOuLeve<HTMLBodyElement>("body"),
|
||||
IMAGE_BOUTON: recupereEleOuLeve<HTMLImageElement>("#bouton-retour-haut img"),
|
||||
};
|
||||
|
||||
const RATIO_MINIMUM_FENETRE_PAR_ECRAN = 2;
|
||||
/** Le ratio minimum hauteur de page/hauteur de la fenêtre à atteindre pour que le Bouton soit nécessaire. */
|
||||
const RATIO_MINIMUM_PAGE_PAR_FENETRE = 2;
|
||||
|
||||
/** Le ratio actuel hauteur de page/hauteur de la fenêtre. */
|
||||
let ratioActuel = E.CORPS_HTML.getBoundingClientRect().height / window.innerHeight;
|
||||
/** La position actuelle du défilement vertical dans la page. */
|
||||
let defilementY = window.scrollY;
|
||||
/** Indique qu'une étape de rafraîchissement via `requestAnimationFrame` a déjà été demandée. */
|
||||
let etapePlanifiee = false;
|
||||
|
||||
/**
|
||||
* Retourne la position du défilement vertical dans la page.
|
||||
*
|
||||
* @returns Un nombre en pixels.
|
||||
*/
|
||||
const majDefilementY = (): number => window.scrollY;
|
||||
|
||||
/**
|
||||
* @param estVisible
|
||||
*/
|
||||
const majVisibiliteBouton = (estVisible: boolean): void => {
|
||||
if (estVisible) {
|
||||
E.BOUTON_RETOUR_SOMMET.setAttribute(ATTRIBUT_ACTIF, "");
|
||||
E.BOUTON_RETOUR_SOMMET.setAttribute(ATTRIBUT_TABINDEX, "99");
|
||||
E.IMAGE_BOUTON.removeAttribute(ATTRIBUT_ARIA_HIDDEN);
|
||||
} else {
|
||||
E.BOUTON_RETOUR_SOMMET.removeAttribute(ATTRIBUT_ACTIF);
|
||||
E.BOUTON_RETOUR_SOMMET.setAttribute(ATTRIBUT_TABINDEX, "-2");
|
||||
E.IMAGE_BOUTON.setAttribute(ATTRIBUT_ARIA_HIDDEN, "");
|
||||
}
|
||||
etapePlanifiee = false;
|
||||
};
|
||||
|
||||
/**
|
||||
* Initialise le cycle de mises à jour du Bouton en fonction de la position du défilement dans la page et le recalcul
|
||||
* de ces données au redimensionnement de la fenêtre.
|
||||
*
|
||||
* @returns void
|
||||
*/
|
||||
const initialiseObservationFenetre = (): void => {
|
||||
majVisibiliteBouton(defilementY > window.innerHeight * RATIO_MINIMUM_FENETRE_PAR_ECRAN);
|
||||
window.addEventListener("scroll", (): void => {
|
||||
// Met à jour la valeur du défilement vertical dans la page
|
||||
defilementY = majDefilementY();
|
||||
// Vérifie que le Ratio soit le bon
|
||||
if (ratioActuel < RATIO_MINIMUM_PAGE_PAR_FENETRE) return;
|
||||
// Attend la prochaine étape
|
||||
if (etapePlanifiee) return;
|
||||
|
||||
new ResizeObserver(entrees => {
|
||||
etapePlanifiee = true;
|
||||
requestAnimationFrame((): void =>
|
||||
majVisibiliteBouton(defilementY > (window.innerHeight * RATIO_MINIMUM_PAGE_PAR_FENETRE))
|
||||
);
|
||||
});
|
||||
|
||||
new ResizeObserver((entrees: Array<ResizeObserverEntry>): void => {
|
||||
pipe(
|
||||
arrayHead(entrees),
|
||||
optionTap(_ => {
|
||||
optionTap((_): void => {
|
||||
ratioActuel = E.CORPS_HTML.getBoundingClientRect().height / window.innerHeight;
|
||||
defilementY = majDefilementY();
|
||||
}),
|
||||
);
|
||||
}).observe(E.CORPS_HTML);
|
||||
|
||||
window.addEventListener("scroll", () => {
|
||||
// Met à jour la valeur du défilement
|
||||
defilementY = majDefilementY();
|
||||
// Vérifie que le Ratio est le bon
|
||||
if (ratioActuel < RATIO_MINIMUM_FENETRE_PAR_ECRAN) return;
|
||||
// Attend la prochaine étape
|
||||
if (etapePlanifiee) return;
|
||||
|
||||
etapePlanifiee = true;
|
||||
requestAnimationFrame(() =>
|
||||
majVisibiliteBouton(defilementY > (window.innerHeight * RATIO_MINIMUM_FENETRE_PAR_ECRAN))
|
||||
);
|
||||
});
|
||||
// Déclenche la première mise à jour
|
||||
majVisibiliteBouton(defilementY > window.innerHeight * RATIO_MINIMUM_PAGE_PAR_FENETRE);
|
||||
};
|
||||
|
||||
/**
|
||||
* Navigue au sommet de la page et focus sur le premier élément de la page qui peut le recevoir.
|
||||
*
|
||||
* @returns void
|
||||
*/
|
||||
const initialiseBoutonRetourSommet = (): void => {
|
||||
E.BOUTON_RETOUR_SOMMET.addEventListener("click", (evenement: Event) => {
|
||||
E.BOUTON_RETOUR_SOMMET.addEventListener("click", (evenement: Event): void => {
|
||||
evenement.preventDefault();
|
||||
|
||||
window.scrollTo({ behavior: "smooth", top: 0 });
|
||||
E.BOUTON_MENU_MOBILE.focus({ preventScroll: true });
|
||||
});
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -40,7 +40,6 @@ const initialiseScrollStorytelling = (): void => {
|
|||
* TODO
|
||||
*/
|
||||
const majDimensions = (): void => {
|
||||
console.time();
|
||||
hauteurImage = pipe(
|
||||
A.getBy(E.IMAGES_STORYTELLING, (i: HTMLDivElement) => !i.hasAttribute(ATTRIBUT_CACHE)),
|
||||
O.map((i: HTMLDivElement) => i.getBoundingClientRect().height),
|
||||
|
|
@ -48,7 +47,6 @@ const initialiseScrollStorytelling = (): void => {
|
|||
);
|
||||
E.CONTENEUR_STORYTELLING.style.minHeight = `${String(hauteurImage * E.IMAGES_STORYTELLING.length + 61)}px`;
|
||||
E.CONTENEUR_STORYTELLING.style.maxHeight = `${String(hauteurImage * E.IMAGES_STORYTELLING.length + 61)}px`;
|
||||
console.timeEnd();
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ import {
|
|||
} from "./constantes/dom.ts";
|
||||
import { lanceAnimationCycleLoading } from "./lib/animations.ts";
|
||||
import { html } from "./lib/dom.ts";
|
||||
import { BadRequestError, ServerError } from "./lib/erreurs.ts";
|
||||
import { BadRequestError, reporteErreur, ServerError } from "./lib/erreurs.ts";
|
||||
import { creeReponseSimplifiee, getBackendAvecParametresUrl } from "./lib/reseau.ts";
|
||||
import { WCV3ProductsArgsSchema, WCV3ProductsSchema } from "./lib/schemas/api/v3/products.ts";
|
||||
import { recupereEleOuLeve } from "./lib/utils.ts";
|
||||
|
|
@ -145,8 +145,14 @@ const initialisePageBoutique = (): void => {
|
|||
// 7. Traite les Erreurs et affiche un Message à l'Utilisateur
|
||||
.ifLeft((erreur: APIProductsErrors) => {
|
||||
match(erreur)
|
||||
.with(P.instanceOf(ValiError), e => console.error("ValiError", e.issues))
|
||||
.otherwise(e => console.error("Erreur", e));
|
||||
.with(P.instanceOf(ValiError), e => {
|
||||
reporteErreur(e);
|
||||
console.error("ValiError", e.issues);
|
||||
})
|
||||
.otherwise(e => {
|
||||
reporteErreur(e);
|
||||
console.error("Erreur", e);
|
||||
});
|
||||
|
||||
E.BOUTON_PLUS_DE_PRODUITS.textContent = "Error, try again?";
|
||||
})
|
||||
|
|
|
|||
|
|
@ -1,15 +1,22 @@
|
|||
// Scripts pour la Page Produit
|
||||
|
||||
import { A, D, F, pipe } from "@mobily/ts-belt";
|
||||
import { type Either, Maybe } from "purify-ts";
|
||||
import { match } from "ts-pattern";
|
||||
import { A, pipe } from "@mobily/ts-belt";
|
||||
import { forEach as arrayForEach } from "@mobily/ts-belt/Array";
|
||||
import { get as dictGet } from "@mobily/ts-belt/Dict";
|
||||
import { tap as optionTap } from "@mobily/ts-belt/Option";
|
||||
import { EitherAsync, Maybe } from "purify-ts";
|
||||
import { match, P } from "ts-pattern";
|
||||
import { type AnySchema, ValiError } from "valibot";
|
||||
|
||||
import type { WCStoreCart } from "./lib/types/api/cart";
|
||||
import type { WCStoreCartAddItemArgs } from "./lib/types/api/cart-add-item.ts";
|
||||
import type { FetchErrors } from "./lib/types/reseau";
|
||||
|
||||
import { ENTETE_WC_NONCE, ROUTE_API_AJOUTE_ARTICLE_PANIER } from "./constantes/api.ts";
|
||||
import { ROUTE_API_AJOUTE_ARTICLE_PANIER } from "./constantes/api.ts";
|
||||
import {
|
||||
ATTRIBUT_ARIA_HIDDEN,
|
||||
ATTRIBUT_ARIA_SELECTED,
|
||||
ATTRIBUT_CHARGEMENT,
|
||||
ATTRIBUT_DESACTIVE,
|
||||
ATTRIBUT_HIDDEN,
|
||||
ATTRIBUT_INDEX_IMAGE_ACTIVE,
|
||||
|
|
@ -26,19 +33,14 @@ import {
|
|||
SELECTEUR_SECTIONS_CONTENUS,
|
||||
SELECTEUR_SELECTEUR_QUANTITE,
|
||||
} from "./constantes/dom";
|
||||
import { recupereElementOuLeve, recupereElementsOuLeve } from "./lib/dom.ts";
|
||||
import { leveServerError, reporteErreur } from "./lib/erreurs.ts";
|
||||
import { estError, estHTMLSelectElement, estReponse500 } from "./lib/gardes.ts";
|
||||
import { lanceAnimationCycleLoading } from "./lib/animations.ts";
|
||||
import { BadRequestError, reporteErreur, ServerError } from "./lib/erreurs.ts";
|
||||
import { estHTMLSelectElement } from "./lib/gardes.ts";
|
||||
import { emetMessageMajBoutonPanier } from "./lib/messages.ts";
|
||||
import { traiteReponseBackendWCSelonCodesHTTP } from "./lib/reseau.ts";
|
||||
import { creeReponseSimplifiee, eitherAsyncFetch, postBackend } from "./lib/reseau.ts";
|
||||
import { WCStoreCartAddItemArgsSchema } from "./lib/schemas/api/cart-add-item.ts";
|
||||
import { WCStoreCartSchema } from "./lib/schemas/api/cart.ts";
|
||||
import {
|
||||
recupereElementDocumentEither,
|
||||
recupereElementsDocumentEither,
|
||||
recupereEleOuLeve,
|
||||
recupereElesOuLeve,
|
||||
} from "./lib/utils.ts";
|
||||
import { recupereElementDocumentEither, recupereEleOuLeve, recupereElesOuLeve } from "./lib/utils.ts";
|
||||
import { eitherParse } from "./lib/validation.ts";
|
||||
|
||||
type EnsembleLienContenu = [HTMLAnchorElement, HTMLElement];
|
||||
|
|
@ -55,97 +57,81 @@ type EtatsPage = {
|
|||
const ETATS_PAGE: EtatsPage = _etats;
|
||||
|
||||
/**
|
||||
* Fonction utilitaire pour déplier toutes les sections de la Boîte des Informations Produit, en ajustant les attributs correspondants.
|
||||
* Fonction utilitaire pour déplier toutes les sections de la Boîte des Informations Produit en ajustant les attributs
|
||||
* correspondants.
|
||||
*/
|
||||
const deplieToutesSections = (ensembleLiensContenus: Array<EnsembleLienContenu>): void => {
|
||||
ensembleLiensContenus.forEach(ensemble => {
|
||||
ensemble[0].setAttribute(ATTRIBUT_ARIA_SELECTED, "false");
|
||||
ensemble[1].setAttribute(ATTRIBUT_HIDDEN, "true");
|
||||
const deplieToutesSections = (ensembleLiensContenus: Array<EnsembleLienContenu>): void =>
|
||||
arrayForEach(ensembleLiensContenus, (ensemble: EnsembleLienContenu): void => {
|
||||
ensemble.at(0)?.setAttribute(ATTRIBUT_ARIA_HIDDEN, "false");
|
||||
ensemble.at(1)?.setAttribute(ATTRIBUT_HIDDEN, "true");
|
||||
});
|
||||
};
|
||||
|
||||
// Éléments d'intérêt
|
||||
/** Le Bouton permettant l'ajout d'un Produit dans le Panier. */
|
||||
const BOUTON_AJOUT_PANIER: HTMLButtonElement = pipe(
|
||||
recupereElementDocumentEither<HTMLButtonElement>(SELECTEUR_BOUTON_AJOUT_PANIER),
|
||||
recupereElementOuLeve,
|
||||
);
|
||||
/** Le Sélecteur de Variation de Produit. */
|
||||
const SELECTEUR_VARIATION: Either<SyntaxError, HTMLSelectElement> = recupereElementDocumentEither<HTMLSelectElement>(
|
||||
SELECTEUR_SELECTEUR_QUANTITE,
|
||||
);
|
||||
const PRIX_PRODUIT: HTMLParagraphElement = recupereEleOuLeve<HTMLParagraphElement>(
|
||||
SELECTEUR_PRIX_PRODUIT,
|
||||
);
|
||||
/** */
|
||||
const LIENS_ONGLETS: Array<HTMLAnchorElement> = pipe(
|
||||
recupereElementsDocumentEither<HTMLAnchorElement>(SELECTEUR_LIENS_ONGLETS),
|
||||
recupereElementsOuLeve,
|
||||
);
|
||||
/** */
|
||||
const SECTIONS_CONTENUS: Array<HTMLElement> = pipe(
|
||||
recupereElementsDocumentEither<HTMLElement>(SELECTEUR_SECTIONS_CONTENUS),
|
||||
recupereElementsOuLeve,
|
||||
);
|
||||
|
||||
const initialiseFlechesDefilementImages = (): void => {
|
||||
const CONTENEUR_FLECHES_DEFILEMENT = recupereEleOuLeve<HTMLDivElement>(
|
||||
SELECTEUR_CONTENEUR_FLECHES_DEFILEMENT,
|
||||
);
|
||||
const FLECHE_DEFILEMENT_GAUCHE = recupereEleOuLeve<HTMLButtonElement>(
|
||||
SELECTEUR_FLECHE_DEFILEMENT_GAUCHE,
|
||||
);
|
||||
const FLECHE_DEFILEMENT_DROITE = recupereEleOuLeve<HTMLButtonElement>(
|
||||
SELECTEUR_FLECHE_DEFILEMENT_DROITE,
|
||||
);
|
||||
const PHOTOS_PRODUIT = recupereEleOuLeve<HTMLElement>(SELECTEUR_PHOTOS_PRODUIT);
|
||||
const IMAGES = A.flat([
|
||||
const E = {
|
||||
BOUTON_AJOUT_PANIER: recupereEleOuLeve<HTMLButtonElement>(SELECTEUR_BOUTON_AJOUT_PANIER),
|
||||
CONTENEUR_FLECHES_DEFILEMENT: recupereEleOuLeve<HTMLDivElement>(SELECTEUR_CONTENEUR_FLECHES_DEFILEMENT),
|
||||
FLECHE_DEFILEMENT_DROITE: recupereEleOuLeve<HTMLButtonElement>(SELECTEUR_FLECHE_DEFILEMENT_DROITE),
|
||||
FLECHE_DEFILEMENT_GAUCHE: recupereEleOuLeve<HTMLButtonElement>(SELECTEUR_FLECHE_DEFILEMENT_GAUCHE),
|
||||
IMAGES: A.flat([
|
||||
recupereEleOuLeve<HTMLImageElement>(SELECTEUR_IMAGE_COLONNE_GAUCHE),
|
||||
recupereElesOuLeve<HTMLImageElement>(SELECTEUR_IMAGES_COLONNE_DROITE),
|
||||
]);
|
||||
]),
|
||||
LIENS_ONGLETS: recupereElesOuLeve<HTMLAnchorElement>(SELECTEUR_LIENS_ONGLETS),
|
||||
PHOTOS_PRODUIT: recupereEleOuLeve<HTMLElement>(SELECTEUR_PHOTOS_PRODUIT),
|
||||
PRIX_PRODUIT: recupereEleOuLeve<HTMLParagraphElement>(SELECTEUR_PRIX_PRODUIT),
|
||||
SECTIONS_CONTENUS: recupereElesOuLeve<HTMLElement>(SELECTEUR_SECTIONS_CONTENUS),
|
||||
SELECTEUR_VARIATION: recupereElementDocumentEither<HTMLSelectElement>(SELECTEUR_SELECTEUR_QUANTITE),
|
||||
};
|
||||
|
||||
const recupereIndexImageCourante = (): number => Number(PHOTOS_PRODUIT.getAttribute(ATTRIBUT_INDEX_IMAGE_ACTIVE));
|
||||
const initialiseFlechesDefilementImages = (): void => {
|
||||
const recupereIndexImageCourante = (): number => Number(E.PHOTOS_PRODUIT.getAttribute(ATTRIBUT_INDEX_IMAGE_ACTIVE));
|
||||
|
||||
// Affiche et cache en fonction de la position de défilement
|
||||
A.forEachWithIndex([IMAGES.at(0), IMAGES.at(-1)], (index, image) => {
|
||||
A.forEachWithIndex([E.IMAGES.at(0), E.IMAGES.at(-1)], (index, image) => {
|
||||
if (!image) return;
|
||||
|
||||
// Change les attributs gérant l'affichage des flèches de défilement
|
||||
// Change les attributs gérants l'affichage des flèches de défilement
|
||||
new IntersectionObserver(
|
||||
A.forEach(entree =>
|
||||
match([entree.isIntersecting, index])
|
||||
.with([true, 0], () => CONTENEUR_FLECHES_DEFILEMENT.removeAttribute("data-images-presentes-debut"))
|
||||
.with([true, 1], () => CONTENEUR_FLECHES_DEFILEMENT.removeAttribute("data-images-presentes-fin"))
|
||||
.with([false, 0], () => CONTENEUR_FLECHES_DEFILEMENT.setAttribute("data-images-presentes-debut", ""))
|
||||
.with([false, 1], () => CONTENEUR_FLECHES_DEFILEMENT.setAttribute("data-images-presentes-fin", ""))
|
||||
.with([true, 0], () => E.CONTENEUR_FLECHES_DEFILEMENT.removeAttribute("data-images-presentes-debut"))
|
||||
.with([true, 1], () => E.CONTENEUR_FLECHES_DEFILEMENT.removeAttribute("data-images-presentes-fin"))
|
||||
.with([false, 0], () => E.CONTENEUR_FLECHES_DEFILEMENT.setAttribute("data-images-presentes-debut", ""))
|
||||
.with([false, 1], () => E.CONTENEUR_FLECHES_DEFILEMENT.setAttribute("data-images-presentes-fin", ""))
|
||||
.otherwise(() => void 0)
|
||||
),
|
||||
{ root: null, rootMargin: "100% 0% 100% 0%", threshold: 0.5 },
|
||||
).observe(image);
|
||||
|
||||
// Change l'index de l'Image active en fonction du défilement
|
||||
A.forEachWithIndex(IMAGES, (index, image) =>
|
||||
A.forEachWithIndex(E.IMAGES, (index, image) =>
|
||||
new IntersectionObserver(
|
||||
A.forEach(entree => {
|
||||
if (!entree.isIntersecting) return;
|
||||
PHOTOS_PRODUIT.setAttribute(ATTRIBUT_INDEX_IMAGE_ACTIVE, String(index));
|
||||
E.PHOTOS_PRODUIT.setAttribute(ATTRIBUT_INDEX_IMAGE_ACTIVE, String(index));
|
||||
}),
|
||||
{ root: null, rootMargin: "100% 0% 100% 0%", threshold: 0.5 },
|
||||
).observe(image));
|
||||
|
||||
// Défile au clic sur les flèches
|
||||
FLECHE_DEFILEMENT_GAUCHE.addEventListener("click", () =>
|
||||
IMAGES[recupereIndexImageCourante() - 1]?.scrollIntoView({
|
||||
E.FLECHE_DEFILEMENT_GAUCHE.addEventListener(
|
||||
"click",
|
||||
() =>
|
||||
E.IMAGES[recupereIndexImageCourante() - 1]?.scrollIntoView({
|
||||
behavior: "smooth",
|
||||
block: "nearest",
|
||||
inline: "center",
|
||||
}));
|
||||
FLECHE_DEFILEMENT_DROITE.addEventListener("click", () =>
|
||||
IMAGES[recupereIndexImageCourante() + 1]?.scrollIntoView({
|
||||
}),
|
||||
);
|
||||
E.FLECHE_DEFILEMENT_DROITE.addEventListener(
|
||||
"click",
|
||||
() =>
|
||||
E.IMAGES[recupereIndexImageCourante() + 1]?.scrollIntoView({
|
||||
behavior: "smooth",
|
||||
block: "nearest",
|
||||
inline: "center",
|
||||
}));
|
||||
}),
|
||||
);
|
||||
});
|
||||
};
|
||||
|
||||
|
|
@ -153,23 +139,26 @@ const gereBoiteInformationsProduit = (): void => {
|
|||
const onglets = new Map<string, EnsembleLienContenu>();
|
||||
|
||||
// Créé la Map avec les ensembles Lien-Contenu
|
||||
LIENS_ONGLETS.forEach((lien, index) => {
|
||||
E.LIENS_ONGLETS.forEach((lien, index): void => {
|
||||
const idOnglet: null | string = lien.getAttribute("id");
|
||||
const sectionCorrespondante: HTMLElement | undefined = SECTIONS_CONTENUS[index];
|
||||
const sectionCorrespondante: HTMLElement | undefined = E.SECTIONS_CONTENUS[index];
|
||||
|
||||
if (!idOnglet) throw new Error("Le lien ne dispose pas d'ID !");
|
||||
if (!sectionCorrespondante) throw new Error("Le lien ne dispose pas de section correspondante !");
|
||||
|
||||
onglets.set(idOnglet, [lien, sectionCorrespondante]);
|
||||
|
||||
lien.addEventListener("click", e => {
|
||||
lien.addEventListener("click", (evenement: Event): void => {
|
||||
// Empêche la pollution de l'historique de navigation
|
||||
e.preventDefault();
|
||||
evenement.preventDefault();
|
||||
|
||||
// Sauvegarde l'état d'ouverture de la section avant de toutes les fermer
|
||||
const estAncienOngletCourant: boolean = lien.getAttribute(ATTRIBUT_ARIA_SELECTED) === "true";
|
||||
deplieToutesSections(pipe(onglets.values(), Array.from<EnsembleLienContenu>));
|
||||
|
||||
// Ne fais rien de plus si l'onglet sélectionné était le courant
|
||||
if (estAncienOngletCourant) return;
|
||||
|
||||
// Ouvre le nouvel onglet sélectionné
|
||||
lien.setAttribute(ATTRIBUT_ARIA_SELECTED, "true");
|
||||
sectionCorrespondante.removeAttribute(ATTRIBUT_HIDDEN);
|
||||
|
|
@ -177,108 +166,117 @@ const gereBoiteInformationsProduit = (): void => {
|
|||
});
|
||||
|
||||
// Ajoute des Écouteurs d'Événements
|
||||
SELECTEUR_VARIATION.ifRight(selecteur =>
|
||||
selecteur.addEventListener("change", evenement => {
|
||||
const cibleSelecteur = pipe(
|
||||
Maybe.fromNullable(evenement.target),
|
||||
cibleEvenement => cibleEvenement.filter(estHTMLSelectElement),
|
||||
);
|
||||
E.SELECTEUR_VARIATION.ifRight(selecteur =>
|
||||
selecteur.addEventListener("change", (evenement: Event): void => {
|
||||
const cibleSelecteur: Maybe<HTMLSelectElement> = Maybe
|
||||
.fromNullable(evenement.target)
|
||||
.filter(estHTMLSelectElement);
|
||||
|
||||
// Active le Bouton si le Sélecteur est valide
|
||||
pipe(
|
||||
cibleSelecteur,
|
||||
element => element.map(v => v.validity.valid),
|
||||
validite => validite.ifJust((v: boolean) => BOUTON_AJOUT_PANIER.toggleAttribute(ATTRIBUT_DESACTIVE, !v)),
|
||||
);
|
||||
cibleSelecteur
|
||||
.map(v => v.validity.valid)
|
||||
.ifJust((v: boolean) => E.BOUTON_AJOUT_PANIER.toggleAttribute(ATTRIBUT_DESACTIVE, !v));
|
||||
|
||||
// Met à jour le prix affiché pour la Variation
|
||||
pipe(
|
||||
cibleSelecteur,
|
||||
selecteur => selecteur.chain(s => Maybe.fromNullable(s.selectedOptions[0])),
|
||||
option => option.chain(e => Maybe.fromNullable(e.getAttribute(ATTRIBUT_PRIX))),
|
||||
prix =>
|
||||
prix.ifJust(p => {
|
||||
PRIX_PRODUIT.textContent = `${p}€`;
|
||||
}),
|
||||
);
|
||||
cibleSelecteur
|
||||
.chainNullable(s => s.selectedOptions[0])
|
||||
.chainNullable(e => e.getAttribute(ATTRIBUT_PRIX))
|
||||
.ifJust(p => {
|
||||
E.PRIX_PRODUIT.textContent = `${p}€`;
|
||||
});
|
||||
})
|
||||
);
|
||||
BOUTON_AJOUT_PANIER.addEventListener("click", _ => ajouteProduitAuPanier());
|
||||
E.BOUTON_AJOUT_PANIER.addEventListener("click", (): void => ajouteProduitAuPanier());
|
||||
};
|
||||
|
||||
const ajouteProduitAuPanier = () => {
|
||||
// Déclenche l'etat de chargement
|
||||
BOUTON_AJOUT_PANIER.textContent = "Adding...";
|
||||
|
||||
const ajouteProduitAuPanier = (): void => {
|
||||
// Construis les arguments de la requête au backend
|
||||
const idProduit: string = SELECTEUR_VARIATION
|
||||
.map(selecteur => selecteur.value)
|
||||
.orDefault(String(ETATS_PAGE.idProduit));
|
||||
const args: WCStoreCartAddItemArgs = {
|
||||
id: Number(idProduit),
|
||||
const argsRequete: WCStoreCartAddItemArgs = {
|
||||
id: E.SELECTEUR_VARIATION
|
||||
.map((selecteur: HTMLSelectElement): number => Number(selecteur.value))
|
||||
// Récupère l'ID du Produit de la Page pour les Produits simples
|
||||
.orDefault(ETATS_PAGE.idProduit),
|
||||
quantity: 1,
|
||||
};
|
||||
|
||||
// Exécute la requête
|
||||
eitherParse<typeof WCStoreCartAddItemArgsSchema>(args, WCStoreCartAddItemArgsSchema)
|
||||
.map((args: WCStoreCartAddItemArgs) => {
|
||||
fetch(ROUTE_API_AJOUTE_ARTICLE_PANIER, {
|
||||
body: JSON.stringify(args),
|
||||
credentials: "same-origin",
|
||||
headers: {
|
||||
Accept: "application/json",
|
||||
"Content-Type": "application/json",
|
||||
[ENTETE_WC_NONCE]: ETATS_PAGE.nonce,
|
||||
},
|
||||
method: "POST",
|
||||
mode: "same-origin",
|
||||
signal: AbortSignal.timeout(5000),
|
||||
// Réalise la Requête et traite sa Réponse
|
||||
void EitherAsync
|
||||
// 1. Valide les arguments de la Requête
|
||||
.liftEither(eitherParse(argsRequete, WCStoreCartAddItemArgsSchema))
|
||||
// 2. Exécute un Effet pour empêcher les requêtes concurrentes et lancer une animation de chargement
|
||||
.ifRight(() => {
|
||||
// Désactive le Bouton pour empêcher des requêtes concurrentes
|
||||
E.BOUTON_AJOUT_PANIER.setAttribute(ATTRIBUT_DESACTIVE, "");
|
||||
E.BOUTON_AJOUT_PANIER.setAttribute(ATTRIBUT_CHARGEMENT, "");
|
||||
|
||||
// Lance un cycle d'animation sur le texte de chargement
|
||||
lanceAnimationCycleLoading(E.BOUTON_AJOUT_PANIER, 500);
|
||||
})
|
||||
.then(async (reponse: Response) => {
|
||||
// Traite le cas d'erreur 500
|
||||
if (estReponse500(reponse)) leveServerError("500 Server Error");
|
||||
|
||||
pipe(
|
||||
// Récupère la Réponse
|
||||
await reponse.json(),
|
||||
// Traite tous les codes HTTPs possibles
|
||||
(corpsReponse: unknown) =>
|
||||
traiteReponseBackendWCSelonCodesHTTP<WCStoreCart, typeof WCStoreCartSchema>(
|
||||
corpsReponse,
|
||||
WCStoreCartSchema,
|
||||
),
|
||||
// Récupère le nombre de Produits dans la Panier
|
||||
D.getUnsafe("items_count"),
|
||||
// Déclenche les effets pour la mise à jour de l'IU
|
||||
F.tap((nombreArticlesPanier: number) => {
|
||||
BOUTON_AJOUT_PANIER.textContent = "Added to cart!";
|
||||
emetMessageMajBoutonPanier({ quantiteProduits: nombreArticlesPanier });
|
||||
|
||||
// TODO: Prévoir un cas où ce Timeout est annulé quand l'Utilisateur agit avant sur le Sélecteur
|
||||
// setTimeout(() => {
|
||||
// SELECTEUR_VARIATION.ifRight(selecteur => {
|
||||
// selecteur.value = selecteur.options.item(0)?.value ?? "--";
|
||||
// });
|
||||
// BOUTON_AJOUT_PANIER.toggleAttribute(ATTRIBUT_DESACTIVE, true);
|
||||
// BOUTON_AJOUT_PANIER.textContent = "Add to cart";
|
||||
// }, 3000);
|
||||
// 3. Exécute la requête via fetch sous forme d'EitherAsync
|
||||
.chain((args: WCStoreCartAddItemArgs) =>
|
||||
eitherAsyncFetch(
|
||||
postBackend({
|
||||
corps: JSON.stringify(args),
|
||||
nonce: ETATS_PAGE.nonce,
|
||||
route: ROUTE_API_AJOUTE_ARTICLE_PANIER,
|
||||
}),
|
||||
);
|
||||
)
|
||||
)
|
||||
// 4. Traite les cas d'Erreurs et récupère le Corps de la Réponse
|
||||
.chain((reponse: Response) =>
|
||||
EitherAsync<BadRequestError | ServerError, unknown>(async ({ throwE }) =>
|
||||
// Simplifie les données à matcher
|
||||
match(await creeReponseSimplifiee(reponse))
|
||||
.with({ status: 500 }, () => throwE(new ServerError("500 Server Error")))
|
||||
.with({ status: 400 }, () => throwE(new BadRequestError("400 Bad Request Error")))
|
||||
.with({ status: 201 }, r => r.body)
|
||||
.otherwise(erreur => throwE(new Error(`Erreur inconnue ${String(erreur.status)}`)))
|
||||
)
|
||||
)
|
||||
// 5. Vérifie le Schéma de la Réponse
|
||||
.chain((corpsReponse: unknown) => EitherAsync.liftEither(eitherParse(corpsReponse, WCStoreCartSchema)))
|
||||
// 6. Exécute un Effet pour la mise à jour du DOM avec les Résultats
|
||||
.ifRight((panier: WCStoreCart) =>
|
||||
pipe(
|
||||
dictGet(panier, "items_count"),
|
||||
optionTap((totalArticles: number) => {
|
||||
E.BOUTON_AJOUT_PANIER.textContent = "Added to cart!";
|
||||
emetMessageMajBoutonPanier({ quantiteProduits: totalArticles });
|
||||
}),
|
||||
)
|
||||
)
|
||||
.ifLeft(
|
||||
(erreur: BadRequestError | FetchErrors | ServerError | ValiError<AnySchema>) => {
|
||||
match(erreur)
|
||||
.with(P.instanceOf(ValiError), e => {
|
||||
reporteErreur(e);
|
||||
console.error(e.issues);
|
||||
// E.MESSAGE_ADRESSES.textContent = ERREUR_GENERIQUE_SOUMISSION_ADRESSES;
|
||||
})
|
||||
.catch((e: unknown) => {
|
||||
if (estError(e)) {
|
||||
.with(P.instanceOf(ServerError), P.instanceOf(BadRequestError), e => {
|
||||
reporteErreur(e);
|
||||
console.error(e);
|
||||
} else {
|
||||
console.error("e n'est pas une Erreur ?!", e);
|
||||
}
|
||||
BOUTON_AJOUT_PANIER.textContent = "Add to cart";
|
||||
});
|
||||
// E.MESSAGE_ADRESSES.textContent = ERREUR_GENERIQUE_SOUMISSION_ADRESSES;
|
||||
})
|
||||
.ifLeft(e => console.error(e.issues));
|
||||
.with(P.instanceOf(DOMException), P.instanceOf(TypeError), P.instanceOf(Error), e => {
|
||||
reporteErreur(e);
|
||||
console.error(e);
|
||||
// E.MESSAGE_ADRESSES.textContent = ERREUR_GENERIQUE_RESEAU;
|
||||
})
|
||||
.exhaustive();
|
||||
|
||||
E.BOUTON_AJOUT_PANIER.textContent = "Add to cart";
|
||||
},
|
||||
)
|
||||
.finally((): void => {
|
||||
// Désactive l'animation de chargement et rend le Bouton de nouveau cliquable
|
||||
E.BOUTON_AJOUT_PANIER.removeAttribute(ATTRIBUT_CHARGEMENT);
|
||||
E.BOUTON_AJOUT_PANIER.removeAttribute(ATTRIBUT_DESACTIVE);
|
||||
})
|
||||
.run();
|
||||
};
|
||||
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
document.addEventListener("DOMContentLoaded", (): void => {
|
||||
gereBoiteInformationsProduit();
|
||||
initialiseFlechesDefilementImages();
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue