2024-11-20

This commit is contained in:
gcch 2024-11-20 07:59:09 +01:00
commit 730299812d
64 changed files with 912 additions and 693 deletions

36
composer.lock generated
View file

@ -646,7 +646,7 @@
},
{
"name": "illuminate/collections",
"version": "v11.32.0",
"version": "v11.33.2",
"source": {
"type": "git",
"url": "https://github.com/illuminate/collections.git",
@ -701,7 +701,7 @@
},
{
"name": "illuminate/conditionable",
"version": "v11.32.0",
"version": "v11.33.2",
"source": {
"type": "git",
"url": "https://github.com/illuminate/conditionable.git",
@ -747,7 +747,7 @@
},
{
"name": "illuminate/contracts",
"version": "v11.32.0",
"version": "v11.33.2",
"source": {
"type": "git",
"url": "https://github.com/illuminate/contracts.git",
@ -795,7 +795,7 @@
},
{
"name": "illuminate/macroable",
"version": "v11.32.0",
"version": "v11.33.2",
"source": {
"type": "git",
"url": "https://github.com/illuminate/macroable.git",
@ -841,16 +841,16 @@
},
{
"name": "illuminate/support",
"version": "v11.32.0",
"version": "v11.33.2",
"source": {
"type": "git",
"url": "https://github.com/illuminate/support.git",
"reference": "213bc04ed2a75dac441e602df4568154c36a3670"
"reference": "3e248061e77b67cdf868411e68cf17de524e3d1d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/illuminate/support/zipball/213bc04ed2a75dac441e602df4568154c36a3670",
"reference": "213bc04ed2a75dac441e602df4568154c36a3670",
"url": "https://api.github.com/repos/illuminate/support/zipball/3e248061e77b67cdf868411e68cf17de524e3d1d",
"reference": "3e248061e77b67cdf868411e68cf17de524e3d1d",
"shasum": ""
},
"require": {
@ -913,7 +913,7 @@
"issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework"
},
"time": "2024-11-14T16:30:16+00:00"
"time": "2024-11-19T19:46:19+00:00"
},
{
"name": "laravel/helpers",
@ -3537,15 +3537,15 @@
},
{
"name": "wpackagist-plugin/woocommerce",
"version": "9.4.1",
"version": "9.4.2",
"source": {
"type": "svn",
"url": "https://plugins.svn.wordpress.org/woocommerce/",
"reference": "tags/9.4.1"
"reference": "tags/9.4.2"
},
"dist": {
"type": "zip",
"url": "https://downloads.wordpress.org/plugin/woocommerce.9.4.1.zip"
"url": "https://downloads.wordpress.org/plugin/woocommerce.9.4.2.zip"
},
"require": {
"composer/installers": "^1.0 || ^2.0"
@ -4762,12 +4762,12 @@
"source": {
"type": "git",
"url": "https://github.com/Roave/SecurityAdvisories.git",
"reference": "d521fa951b3fc37146a2fe9aef1b06c0af78fd3f"
"reference": "b33a18b5d222c63472a4b41f6fa3e15e591c9595"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/d521fa951b3fc37146a2fe9aef1b06c0af78fd3f",
"reference": "d521fa951b3fc37146a2fe9aef1b06c0af78fd3f",
"url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/b33a18b5d222c63472a4b41f6fa3e15e591c9595",
"reference": "b33a18b5d222c63472a4b41f6fa3e15e591c9595",
"shasum": ""
},
"conflict": {
@ -5287,7 +5287,7 @@
"rap2hpoutre/laravel-log-viewer": "<0.13",
"react/http": ">=0.7,<1.9",
"really-simple-plugins/complianz-gdpr": "<6.4.2",
"redaxo/source": "<=5.17.1",
"redaxo/source": "<5.18",
"remdex/livehelperchat": "<4.29",
"reportico-web/reportico": "<=8.1",
"rhukster/dom-sanitizer": "<1.0.7",
@ -5354,7 +5354,7 @@
"squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1",
"ssddanbrown/bookstack": "<24.05.1",
"starcitizentools/citizen-skin": ">=2.6.3,<2.31",
"statamic/cms": "<4.46|>=5.3,<5.6.2",
"statamic/cms": "<=5.16",
"stormpath/sdk": "<9.9.99",
"studio-42/elfinder": "<=2.1.64",
"studiomitte/friendlycaptcha": "<0.1.4",
@ -5596,7 +5596,7 @@
"type": "tidelift"
}
],
"time": "2024-11-19T00:20:23+00:00"
"time": "2024-11-19T21:04:39+00:00"
},
{
"name": "sebastian/diff",

22
cute.ts Normal file
View file

@ -0,0 +1,22 @@
const etapes = [
"┌(・ω・)┘",
"└(・ω・)┐",
"┌(;・ω・)┘",
"└(;・ω・)┐",
"┌(;・ω・;)┘",
"└(;・ω・;)┐",
];
const assigneTexte = (texte: string): void => ELEMENTS.BOUTON_CODE_PROMO.textContent = texte;
let index = 0;
const z = {};
const callback = () => {
if (!ELEMENTS.BOUTON_CODE_PROMO.hasAttribute(ATTRIBUT_CHARGEMENT)) {
ELEMENTS.BOUTON_CODE_PROMO.textContent = "Apply";
clearInterval(z.interval);
}
assigneTexte(etapes.at(index) ?? "Loading...");
index = index + 1 === etapes.length - 1 ? 0 : index + 1;
};
callback();
z.interval = setInterval(callback, 500);

View file

@ -8,7 +8,10 @@
"packageManager": "pnpm@9.13.2",
"main": "index.js",
"keywords": [],
"scripts": { "knip": "knip", "test": "echo \"Error: no test specified\" && exit 1" },
"scripts": {
"knip": "knip",
"test": "echo \"Error: no test specified\" && exit 1"
},
"dependencies": {
"@mobily/ts-belt": "4.0.0-rc.5",
"@sentry/browser": "8.39.0",
@ -26,16 +29,16 @@
"@sentry/types": "8.39.0",
"@swc/cli": "0.5.1",
"@types/eslint__js": "^8.42.3",
"@types/node": "^22.9.0",
"@types/node": "^22.9.1",
"better-typescript-lib": "^2.9.0",
"browserslist": "^4.24.2",
"eslint": "^9.15.0",
"eslint-plugin-oxlint": "^0.11.1",
"eslint-plugin-perfectionist": "^4.0.2",
"eslint-plugin-oxlint": "^0.12.0",
"eslint-plugin-perfectionist": "^4.0.3",
"fdir": "^6.4.2",
"globals": "^15.12.0",
"knip": "^5.37.1",
"oxlint": "^0.11.1",
"oxlint": "^0.12.0",
"picomatch": "^4.0.2",
"prettier": "^3.3.3",
"prettier-plugin-pkg": "^0.18.1",
@ -53,7 +56,7 @@
"vite-plugin-manifest-sri": "^0.2.0",
"vite-plugin-node-polyfills": "^0.22.0",
"vite-plugin-valibot-env": "^0.8.7",
"vite-tsconfig-paths": "^5.1.2",
"vite-tsconfig-paths": "^5.1.3",
"wp-types": "^4.67.0"
},
"browserslist": [
@ -66,8 +69,15 @@
"ios >0 and last 3 years"
],
"knip": {
"entry": ["web/app/themes/haiku-atelier-2024/src/scripts/*.ts"],
"project": ["web/app/themes/haiku-atelier-2024/src/scripts/**/*.{js,ts,d.ts}"]
"entry": [
"web/app/themes/haiku-atelier-2024/src/scripts/*.ts"
],
"project": [
"web/app/themes/haiku-atelier-2024/src/scripts/**/*.{js,ts,d.ts}"
]
},
"trustedDependencies": ["@biomejs/biome", "@parcel/watcher"]
"trustedDependencies": [
"@biomejs/biome",
"@parcel/watcher"
]
}

161
pnpm-lock.yaml generated
View file

@ -52,8 +52,8 @@ importers:
specifier: ^8.42.3
version: 8.42.3
'@types/node':
specifier: ^22.9.0
version: 22.9.0
specifier: ^22.9.1
version: 22.9.1
better-typescript-lib:
specifier: ^2.9.0
version: 2.9.0(typescript@5.7.0-dev.20241105)
@ -64,11 +64,11 @@ importers:
specifier: ^9.15.0
version: 9.15.0(jiti@2.4.0)
eslint-plugin-oxlint:
specifier: ^0.11.1
version: 0.11.1
specifier: ^0.12.0
version: 0.12.0
eslint-plugin-perfectionist:
specifier: ^4.0.2
version: 4.0.2(eslint@9.15.0(jiti@2.4.0))(typescript@5.7.0-dev.20241105)
specifier: ^4.0.3
version: 4.0.3(eslint@9.15.0(jiti@2.4.0))(typescript@5.7.0-dev.20241105)
fdir:
specifier: ^6.4.2
version: 6.4.2(picomatch@4.0.2)
@ -77,10 +77,10 @@ importers:
version: 15.12.0
knip:
specifier: ^5.37.1
version: 5.37.1(@types/node@22.9.0)(typescript@5.7.0-dev.20241105)
version: 5.37.1(@types/node@22.9.1)(typescript@5.7.0-dev.20241105)
oxlint:
specifier: ^0.11.1
version: 0.11.1
specifier: ^0.12.0
version: 0.12.0
picomatch:
specifier: ^4.0.2
version: 4.0.2
@ -122,19 +122,19 @@ importers:
version: 8.15.0(eslint@9.15.0(jiti@2.4.0))(typescript@5.7.0-dev.20241105)
vite:
specifier: ^5.4.11
version: 5.4.11(@types/node@22.9.0)(sass-embedded@1.81.0)(sass@1.80.6)
version: 5.4.11(@types/node@22.9.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.3)(vite@5.4.11(@types/node@22.9.0)(sass-embedded@1.81.0)(sass@1.80.6))
version: 0.22.0(rollup@4.27.3)(vite@5.4.11(@types/node@22.9.1)(sass-embedded@1.81.0)(sass@1.80.6))
vite-plugin-valibot-env:
specifier: ^0.8.7
version: 0.8.7(valibot@1.0.0-beta.7(typescript@5.7.0-dev.20241105))(vite@5.4.11(@types/node@22.9.0)(sass-embedded@1.81.0)(sass@1.80.6))
version: 0.8.7(valibot@1.0.0-beta.7(typescript@5.7.0-dev.20241105))(vite@5.4.11(@types/node@22.9.1)(sass-embedded@1.81.0)(sass@1.80.6))
vite-tsconfig-paths:
specifier: ^5.1.2
version: 5.1.2(typescript@5.7.0-dev.20241105)(vite@5.4.11(@types/node@22.9.0)(sass-embedded@1.81.0)(sass@1.80.6))
specifier: ^5.1.3
version: 5.1.3(typescript@5.7.0-dev.20241105)(vite@5.4.11(@types/node@22.9.1)(sass-embedded@1.81.0)(sass@1.80.6))
wp-types:
specifier: ^4.67.0
version: 4.67.0
@ -622,43 +622,43 @@ packages:
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
engines: {node: '>= 8'}
'@oxlint/darwin-arm64@0.11.1':
resolution: {integrity: sha512-S+cHn49fT+qSJXhQ3Z4EG/5ENp2dAUbS2sMNkhgkLqlO8aYl0TR9R7omU3vpU/beu8ePnV+mdVlJYGjsPIMGtg==}
'@oxlint/darwin-arm64@0.12.0':
resolution: {integrity: sha512-UydkjcAImpmBn8JYaMPg0zJrwgWJMGvJagvCnyPfyiBRWAN83Kq+BDgJZgIq+2Te6kvlnoiHWNJKVJmpy0f0BA==}
cpu: [arm64]
os: [darwin]
'@oxlint/darwin-x64@0.11.1':
resolution: {integrity: sha512-LPuF0D8uu30KIVEeVuGwIPwHwJRQ1i1otwFFH7tRsNXPgMgZJ4VgriyH22i6RWwBtclJoCSBLtGK6gLZ0oZBvw==}
'@oxlint/darwin-x64@0.12.0':
resolution: {integrity: sha512-bxLyiAiHzXB56w7cf50YNPpZlK+PMxA8GgHutRSoNK/Z/BR/xsibNLs/9YNUnjHB+PF19+EbIRtJxoHjmbRr8g==}
cpu: [x64]
os: [darwin]
'@oxlint/linux-arm64-gnu@0.11.1':
resolution: {integrity: sha512-CYBE+GRIPs5e+raD2pdicuBn6Y6E1xAnyWQ/kHE4GEWDAQZY0Um2VYEUTGH2ObwJ3uXr6jeJ16HOKJvr0S8a8w==}
'@oxlint/linux-arm64-gnu@0.12.0':
resolution: {integrity: sha512-jVkmfoMjPKFDIZySmpykwrCmx5xhpLJdMpUAR8ycEkFRJFp5qKLWZd6cEjiMb7gxmWN6qcCvDVTF/zEs3aRpyQ==}
cpu: [arm64]
os: [linux]
'@oxlint/linux-arm64-musl@0.11.1':
resolution: {integrity: sha512-iYXF5N5Gv+lc2wt90kxXy/W0cn7IEWu3UPzewIjPGDH8ajDckvGzZx6pTGYJnTyMh7U6hUKwOBFPVLMWI7UwKQ==}
'@oxlint/linux-arm64-musl@0.12.0':
resolution: {integrity: sha512-8VdV1nKYDj7AFaw1a03Ih43/+pUS/hhMZbTFLRMpvlVp1cPtdB77c+bl/OdiJ/BwNTzLIzr/GrospwCoEJkQKg==}
cpu: [arm64]
os: [linux]
'@oxlint/linux-x64-gnu@0.11.1':
resolution: {integrity: sha512-D0tT8X0CsK/bpdkGdLSmsGftG3VndjyAUJuNGt56JYn0UfuPDkhQcLgUlkANHzNRXJ84tLQKhpf/MUDUHPB5cg==}
'@oxlint/linux-x64-gnu@0.12.0':
resolution: {integrity: sha512-MacAt8N4XU5DeoHcseXLom/z+B0seecCz8vGAH4ppF2EH49o7NbN7VvFsw2nZ2QNO/4vw+pdS1BHXLTr9lY6zQ==}
cpu: [x64]
os: [linux]
'@oxlint/linux-x64-musl@0.11.1':
resolution: {integrity: sha512-WekaLYk8WLT7Di8+nyPvtqs9OlMoO6KjFDMlqqLDWQTk9ffjn8e76PCRigF3w39jQ70qP3c8k8cNKNw5ROuFcg==}
'@oxlint/linux-x64-musl@0.12.0':
resolution: {integrity: sha512-/ZBDJ9wpUE6bB05nniQl29kD5vJUMg6n75LdHD8F6ThXfsHGI/n7Je3gzggnXokgf9UQpTUPWrWlfEuWVCBMag==}
cpu: [x64]
os: [linux]
'@oxlint/win32-arm64@0.11.1':
resolution: {integrity: sha512-/CN/bFtI33vB8uemOkZxlNRf6Q7CftP2pSO7a6Q2niG4NC99YRPj7ctXcPF0jGR0NQUhGZk7ajM4G/0MKcRdag==}
'@oxlint/win32-arm64@0.12.0':
resolution: {integrity: sha512-hY1ya9dv8VY8113YSSDfMs/989aFmoA2fIZco8uxTxIEVl9nGY6tDtpgKZqUIiGrrMbDO8BBb1G5jsekmfexbA==}
cpu: [arm64]
os: [win32]
'@oxlint/win32-x64@0.11.1':
resolution: {integrity: sha512-0hLl0z6adYTvLIOPC5uyo+EAwNITkzi4AY4xImykQW8H89GhiV9Xl8MPJeZQMWSz7ajI1I2+hRsvA0QAzeBsxA==}
'@oxlint/win32-x64@0.12.0':
resolution: {integrity: sha512-NHLJolo4sZk3nu/bPNuaJ+6p5DdHoRuZAjyuSO6CnLgpmZcYqx7LgngA/x2oB/bLgi4Hv9twjHjODc5Ce5o14g==}
cpu: [x64]
os: [win32]
@ -1028,8 +1028,8 @@ packages:
'@types/json-schema@7.0.15':
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
'@types/node@22.9.0':
resolution: {integrity: sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==}
'@types/node@22.9.1':
resolution: {integrity: sha512-p8Yy/8sw1caA8CdRIQBG5tiLHmxtQKObCijiAa9Ez+d4+PRffM4054xbju0msf+cvhJpnFEeNjxmVT/0ipktrg==}
'@typescript-eslint/eslint-plugin@8.15.0':
resolution: {integrity: sha512-+zkm9AR1Ds9uLWN3fkoeXgFppaQ+uEVtfOV62dDmsy9QCNqlRHWNEck4yarvRNrvRcHQLGfqBNui3cimoz8XAg==}
@ -1504,11 +1504,11 @@ packages:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
engines: {node: '>=10'}
eslint-plugin-oxlint@0.11.1:
resolution: {integrity: sha512-FcPCoFMipwg0a+tUCWhx/mJFW+RkZtFkvbFVwmMW172NyvjifdNaMWAduB8qRczFEHWAElHG/nB+3L8ylMC6mQ==}
eslint-plugin-oxlint@0.12.0:
resolution: {integrity: sha512-D/NhQrgjBbTb0pfCy0/upPzrhyy8OadHitYD317ZMru9RlpCfz5PkQQnb1qOSPWIu1+1MtRMs/aL4zN11M3TPQ==}
eslint-plugin-perfectionist@4.0.2:
resolution: {integrity: sha512-zWdgyg2SdHqhp/P9d9vKwo5qD9is28xMAGzBslHqkZz5mVIikjyz1qvuJ4yS7Wrsf4KlbGorORefb4Kbe7Puzg==}
eslint-plugin-perfectionist@4.0.3:
resolution: {integrity: sha512-CyafnreF6boy4lf1XaF72U8NbkwrfjU/mOf1y6doaDMS9zGXhUU1DSk+ZPf/rVwCf1PL1m+rhHqFs+IcB8kDmA==}
engines: {node: ^18.0.0 || >=20.0.0}
peerDependencies:
eslint: '>=8.0.0'
@ -2112,8 +2112,8 @@ packages:
os-browserify@0.3.0:
resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==}
oxlint@0.11.1:
resolution: {integrity: sha512-yVTkBmSvn1mo69vxBdNASOGFd1oqWzpaIWPFPIXNAHxgrW7FjotKuJ71j/pqtZH/sVSRWTpQFdmBa3CIuBEILg==}
oxlint@0.12.0:
resolution: {integrity: sha512-M0vWq8KYtp4vpweRxcdCiVO8QFwzoRyp5bWTMrEL/0Z+GDKCMJltac7H3T3T09FIiktOZLvID733d7OcKk/caw==}
engines: {node: '>=14.*'}
hasBin: true
@ -2228,6 +2228,10 @@ packages:
resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==}
engines: {node: '>=4'}
postcss-selector-parser@7.0.0:
resolution: {integrity: sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==}
engines: {node: '>=4'}
postcss-sorting@8.0.2:
resolution: {integrity: sha512-M9dkSrmU00t/jK7rF6BZSZauA5MAaBW4i5EnJXspMwt4iqTh/L9j6fgMnbElEOfyRyfLfVbIHj/R52zHzAPe1Q==}
peerDependencies:
@ -2685,8 +2689,8 @@ packages:
peerDependencies:
stylelint: ^14.0.0 || ^15.0.0 || ^16.0.0
stylelint-scss@6.9.0:
resolution: {integrity: sha512-oWOR+g6ccagfrENecImGmorWWjVyWpt2R8bmkhOW8FkNNPGStZPQMqb8QWMW4Lwu9TyPqmyjHkkAsy3weqsnNw==}
stylelint-scss@6.10.0:
resolution: {integrity: sha512-y03if6Qw9xBMoVaf7tzp5BbnYhYvudIKzURkhSHzcHG0bW0fAYvQpTUVJOe7DyhHaxeThBil4ObEMvGbV7+M+w==}
engines: {node: '>=18.12.0'}
peerDependencies:
stylelint: ^16.0.2
@ -2859,8 +2863,8 @@ packages:
valibot: '>=0.30 <=0.42 || >=1.0.0-beta.0 <=1.0.0-beta.7'
vite: '>=2 <=6.0.0-beta.10'
vite-tsconfig-paths@5.1.2:
resolution: {integrity: sha512-gEIbKfJzSEv0yR3XS2QEocKetONoWkbROj6hGx0FHM18qKUojhvcokQsxQx5nMkelZq2n37zbSGCJn+FSODSjA==}
vite-tsconfig-paths@5.1.3:
resolution: {integrity: sha512-0bz+PDlLpGfP2CigeSKL9NFTF1KtXkeHGZSSaGQSuPZH77GhoiQaA8IjYgOaynSuwlDTolSUEU0ErVvju3NURg==}
peerDependencies:
vite: '*'
peerDependenciesMeta:
@ -3286,28 +3290,28 @@ snapshots:
'@nodelib/fs.scandir': 2.1.5
fastq: 1.17.1
'@oxlint/darwin-arm64@0.11.1':
'@oxlint/darwin-arm64@0.12.0':
optional: true
'@oxlint/darwin-x64@0.11.1':
'@oxlint/darwin-x64@0.12.0':
optional: true
'@oxlint/linux-arm64-gnu@0.11.1':
'@oxlint/linux-arm64-gnu@0.12.0':
optional: true
'@oxlint/linux-arm64-musl@0.11.1':
'@oxlint/linux-arm64-musl@0.12.0':
optional: true
'@oxlint/linux-x64-gnu@0.11.1':
'@oxlint/linux-x64-gnu@0.12.0':
optional: true
'@oxlint/linux-x64-musl@0.11.1':
'@oxlint/linux-x64-musl@0.12.0':
optional: true
'@oxlint/win32-arm64@0.11.1':
'@oxlint/win32-arm64@0.12.0':
optional: true
'@oxlint/win32-x64@0.11.1':
'@oxlint/win32-x64@0.12.0':
optional: true
'@parcel/watcher-android-arm64@2.5.0':
@ -3610,7 +3614,7 @@ snapshots:
'@types/json-schema@7.0.15': {}
'@types/node@22.9.0':
'@types/node@22.9.1':
dependencies:
undici-types: 6.19.8
@ -4216,11 +4220,11 @@ snapshots:
escape-string-regexp@4.0.0: {}
eslint-plugin-oxlint@0.11.1:
eslint-plugin-oxlint@0.12.0:
dependencies:
jsonc-parser: 3.3.1
eslint-plugin-perfectionist@4.0.2(eslint@9.15.0(jiti@2.4.0))(typescript@5.7.0-dev.20241105):
eslint-plugin-perfectionist@4.0.3(eslint@9.15.0(jiti@2.4.0))(typescript@5.7.0-dev.20241105):
dependencies:
'@typescript-eslint/types': 8.15.0
'@typescript-eslint/utils': 8.15.0(eslint@9.15.0(jiti@2.4.0))(typescript@5.7.0-dev.20241105)
@ -4642,11 +4646,11 @@ snapshots:
kleur@4.1.5: {}
knip@5.37.1(@types/node@22.9.0)(typescript@5.7.0-dev.20241105):
knip@5.37.1(@types/node@22.9.1)(typescript@5.7.0-dev.20241105):
dependencies:
'@nodelib/fs.walk': 1.2.8
'@snyk/github-codeowners': 1.1.0
'@types/node': 22.9.0
'@types/node': 22.9.1
easy-table: 1.2.0
enhanced-resolve: 5.17.1
fast-glob: 3.3.2
@ -4833,16 +4837,16 @@ snapshots:
os-browserify@0.3.0: {}
oxlint@0.11.1:
oxlint@0.12.0:
optionalDependencies:
'@oxlint/darwin-arm64': 0.11.1
'@oxlint/darwin-x64': 0.11.1
'@oxlint/linux-arm64-gnu': 0.11.1
'@oxlint/linux-arm64-musl': 0.11.1
'@oxlint/linux-x64-gnu': 0.11.1
'@oxlint/linux-x64-musl': 0.11.1
'@oxlint/win32-arm64': 0.11.1
'@oxlint/win32-x64': 0.11.1
'@oxlint/darwin-arm64': 0.12.0
'@oxlint/darwin-x64': 0.12.0
'@oxlint/linux-arm64-gnu': 0.12.0
'@oxlint/linux-arm64-musl': 0.12.0
'@oxlint/linux-x64-gnu': 0.12.0
'@oxlint/linux-x64-musl': 0.12.0
'@oxlint/win32-arm64': 0.12.0
'@oxlint/win32-x64': 0.12.0
p-cancelable@3.0.0: {}
@ -4939,6 +4943,11 @@ snapshots:
cssesc: 3.0.0
util-deprecate: 1.0.2
postcss-selector-parser@7.0.0:
dependencies:
cssesc: 3.0.0
util-deprecate: 1.0.2
postcss-sorting@8.0.2(postcss@8.4.49):
dependencies:
postcss: 8.4.49
@ -5331,7 +5340,7 @@ snapshots:
postcss-scss: 4.0.9(postcss@8.4.49)
stylelint: 16.10.0(typescript@5.7.0-dev.20241105)
stylelint-config-recommended: 14.0.1(stylelint@16.10.0(typescript@5.7.0-dev.20241105))
stylelint-scss: 6.9.0(stylelint@16.10.0(typescript@5.7.0-dev.20241105))
stylelint-scss: 6.10.0(stylelint@16.10.0(typescript@5.7.0-dev.20241105))
optionalDependencies:
postcss: 8.4.49
@ -5345,7 +5354,7 @@ snapshots:
postcss: 8.4.49
postcss-scss: 4.0.9(postcss@8.4.49)
stylelint: 16.10.0(typescript@5.7.0-dev.20241105)
stylelint-scss: 6.9.0(stylelint@16.10.0(typescript@5.7.0-dev.20241105))
stylelint-scss: 6.10.0(stylelint@16.10.0(typescript@5.7.0-dev.20241105))
stylelint-config-standard-scss@13.1.0(postcss@8.4.49)(stylelint@16.10.0(typescript@5.7.0-dev.20241105)):
dependencies:
@ -5374,7 +5383,7 @@ snapshots:
dependencies:
stylelint: 16.10.0(typescript@5.7.0-dev.20241105)
stylelint-scss@6.9.0(stylelint@16.10.0(typescript@5.7.0-dev.20241105)):
stylelint-scss@6.10.0(stylelint@16.10.0(typescript@5.7.0-dev.20241105)):
dependencies:
css-tree: 3.0.1
is-plain-object: 5.0.0
@ -5382,7 +5391,7 @@ snapshots:
mdn-data: 2.12.2
postcss-media-query-parser: 0.2.3
postcss-resolve-nested-selector: 0.1.6
postcss-selector-parser: 6.1.2
postcss-selector-parser: 7.0.0
postcss-value-parser: 4.2.0
stylelint: 16.10.0(typescript@5.7.0-dev.20241105)
@ -5563,39 +5572,39 @@ snapshots:
vite-plugin-manifest-sri@0.2.0: {}
vite-plugin-node-polyfills@0.22.0(rollup@4.27.3)(vite@5.4.11(@types/node@22.9.0)(sass-embedded@1.81.0)(sass@1.80.6)):
vite-plugin-node-polyfills@0.22.0(rollup@4.27.3)(vite@5.4.11(@types/node@22.9.1)(sass-embedded@1.81.0)(sass@1.80.6)):
dependencies:
'@rollup/plugin-inject': 5.0.5(rollup@4.27.3)
node-stdlib-browser: 1.2.1
vite: 5.4.11(@types/node@22.9.0)(sass-embedded@1.81.0)(sass@1.80.6)
vite: 5.4.11(@types/node@22.9.1)(sass-embedded@1.81.0)(sass@1.80.6)
transitivePeerDependencies:
- rollup
vite-plugin-valibot-env@0.8.7(valibot@1.0.0-beta.7(typescript@5.7.0-dev.20241105))(vite@5.4.11(@types/node@22.9.0)(sass-embedded@1.81.0)(sass@1.80.6)):
vite-plugin-valibot-env@0.8.7(valibot@1.0.0-beta.7(typescript@5.7.0-dev.20241105))(vite@5.4.11(@types/node@22.9.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.7(typescript@5.7.0-dev.20241105)
vite: 5.4.11(@types/node@22.9.0)(sass-embedded@1.81.0)(sass@1.80.6)
vite: 5.4.11(@types/node@22.9.1)(sass-embedded@1.81.0)(sass@1.80.6)
vite-tsconfig-paths@5.1.2(typescript@5.7.0-dev.20241105)(vite@5.4.11(@types/node@22.9.0)(sass-embedded@1.81.0)(sass@1.80.6)):
vite-tsconfig-paths@5.1.3(typescript@5.7.0-dev.20241105)(vite@5.4.11(@types/node@22.9.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.7.0-dev.20241105)
optionalDependencies:
vite: 5.4.11(@types/node@22.9.0)(sass-embedded@1.81.0)(sass@1.80.6)
vite: 5.4.11(@types/node@22.9.1)(sass-embedded@1.81.0)(sass@1.80.6)
transitivePeerDependencies:
- supports-color
- typescript
vite@5.4.11(@types/node@22.9.0)(sass-embedded@1.81.0)(sass@1.80.6):
vite@5.4.11(@types/node@22.9.1)(sass-embedded@1.81.0)(sass@1.80.6):
dependencies:
esbuild: 0.21.5
postcss: 8.4.49
rollup: 4.27.3
optionalDependencies:
'@types/node': 22.9.0
'@types/node': 22.9.1
fsevents: 2.3.3
sass: 1.80.6
sass-embedded: 1.81.0

View file

@ -1,38 +1,30 @@
@charset "UTF-8";
#panneau-panier {
border-right: 1px solid var(--couleur-noir);
}
#panneau-panier > div {
place-content: center;
}
#panneau-panier .panneau__grille-produits {
display: flex;
flex-flow: column nowrap;
}
#panneau-panier .panneau__grille-produits__produit {
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr;
border-bottom: 1px solid var(--couleur-noir);
}
#panneau-panier .panneau__grille-produits__produit__illustratif {
border-right: 1px solid var(--couleur-noir);
}
#panneau-panier .panneau__grille-produits__produit__illustratif picture {
overflow: hidden;
}
#panneau-panier .panneau__grille-produits__produit__illustratif img {
aspect-ratio: 1;
height: auto;
}
#panneau-panier .panneau__grille-produits .detail-produit {
display: flex;
flex-flow: column nowrap;
@ -42,7 +34,6 @@
padding: 0 var(--espace-xl);
font-style: italic;
}
#panneau-panier .panneau__grille-produits .detail-produit__nom-prix {
display: flex;
flex-flow: row nowrap;
@ -51,37 +42,29 @@
font-size: var(--espace-l);
line-height: var(--hauteur-ligne-moitie);
}
#panneau-panier .panneau__grille-produits .detail-produit__nom-prix span {
min-width: 4rem;
font-weight: 600;
font-style: initial;
}
#panneau-panier .panneau__grille-produits .detail-produit__description {
margin-bottom: var(--espace-l);
text-transform: lowercase;
}
#panneau-panier .panneau__grille-produits .detail-produit__actions {
display: grid;
grid-template-columns: 0.25fr auto 0.25fr;
grid-template-rows: 1fr 1fr;
font-weight: 500;
font-style: initial;
/* Bouton d'addition de quantité */
/*
* 1. Cache les flèches d'augmentation/diminution sur Firefox.
* 2. Cache les flèches d'augmentation/diminution sur Chrome/Edge/Safari.
*/
/* Bouton de suppression de quantité */
/* Bouton de suppression du Produit du Panier */
}
#panneau-panier .panneau__grille-produits .detail-produit__actions button:first-of-type {
grid-column: 1;
min-width: 3rem;
@ -89,8 +72,7 @@
border: 1px solid var(--couleur-noir);
border-bottom: initial;
}
#panneau-panier .panneau__grille-produits .detail-produit__actions input[type="number"] {
#panneau-panier .panneau__grille-produits .detail-produit__actions input[type=number] {
grid-column: 2;
width: 100%;
text-align: center;
@ -98,12 +80,10 @@
border: initial;
border-top: 1px solid var(--couleur-noir);
}
#panneau-panier .panneau__grille-produits .detail-produit__actions input[type="number"]::-webkit-outer-spin-button, #panneau-panier .panneau__grille-produits .detail-produit__actions input[type="number"]::-webkit-inner-spin-button {
#panneau-panier .panneau__grille-produits .detail-produit__actions input[type=number]::-webkit-outer-spin-button, #panneau-panier .panneau__grille-produits .detail-produit__actions input[type=number]::-webkit-inner-spin-button {
margin: 0; /* 2 */
appearance: none; /* 2 */
}
#panneau-panier .panneau__grille-produits .detail-produit__actions button:nth-of-type(2) {
grid-column: 3;
min-width: 3rem;
@ -111,7 +91,6 @@
border: 1px solid var(--couleur-noir);
border-bottom: initial;
}
#panneau-panier .panneau__grille-produits .detail-produit__actions button:last-of-type {
grid-column: span 3;
grid-row: 2;
@ -119,19 +98,16 @@
text-transform: lowercase;
border: 1px solid var(--couleur-noir);
}
#panneau-panier .panneau__instructions-code-promo {
width: 100%;
padding: var(--espace-l) var(--espace-xl);
text-align: center;
border-bottom: 1px solid var(--couleur-noir);
/*
* 1. Nécessaire pour ne pas qu'un espace vertical non souhaité apparaisse.
* 2. Applique une marge entre les instructions et le code promo de notre choix.
*/
}
#panneau-panier .panneau__instructions-code-promo__instructions {
resize: vertical;
display: block; /* 1 */
@ -144,52 +120,52 @@
background: initial;
border: 1px solid transparent;
}
#panneau-panier .panneau__instructions-code-promo__code-promo {
display: flex;
flex-flow: row nowrap;
flex-flow: row wrap;
width: fit-content;
place-content: center;
margin: auto;
/*
* 1. Longueur minimale pour le Bouton n'ait pas à changer de taille quel que soit son texte
*/
}
#panneau-panier .panneau__instructions-code-promo__code-promo input {
width: 20rem;
}
#panneau-panier .panneau__instructions-code-promo__code-promo button {
padding: var(--espace-xs) var(--espace-xl);
text-transform: lowercase;
border: 1px solid var(--couleur-noir);
border-left: initial;
min-width: 9rem; /* 1 */
}
#panneau-panier .panneau__instructions-code-promo__code-promo__message {
margin-top: var(--espace-m);
flex-basis: 100%;
}
#panneau-panier .panneau__sous-totaux {
width: min(30rem, 100%);
margin: auto;
padding: var(--espace-l) var(--espace-xl);
text-align: center;
}
#panneau-panier .panneau__sous-totaux__ligne {
display: flex;
flex-flow: row nowrap;
justify-content: space-between;
font-style: italic;
}
#panneau-panier .panneau__sous-totaux__ligne strong {
text-align: right;
text-transform: lowercase;
}
#panneau-panier .panneau__sous-totaux__ligne#sous-total-livraison p:last-of-type {
text-align: right;
}
#panneau-panier .panneau__sous-totaux__ligne#sous-total-livraison p:last-of-type span {
color: grey;
}
#panneau-panier .panneau__sous-totaux__conditions-livraison {
margin-top: var(--espace-l);
font-size: 0.8rem;
@ -197,7 +173,6 @@
color: grey;
letter-spacing: var(--espacement-inter-lettres-etendu-s);
}
#panneau-panier .panneau__pied-de-page {
align-content: center;
padding: var(--espace-l) 0;
@ -209,7 +184,6 @@
letter-spacing: 2px;
background: var(--couleur-noir);
}
#panneau-panier .panneau__pied-de-page span {
margin-left: var(--espace-l);
font-style: initial;
@ -221,27 +195,22 @@
right: 0;
height: fit-content;
}
#panneau-informations-client > * {
align-content: center;
text-align: center;
}
#panneau-informations-client .panneau__paypal-express {
--hauteur-images-bouton: 18px;
--hauteur-bouton: calc(var(--hauteur-images-bouton) * 2);
--longueur-bouton: 250px;
--espacement-inter-images: var(--espace-xs);
padding: var(--espace-xl);
border-bottom: 1px solid var(--couleur-noir);
}
#panneau-informations-client .panneau__paypal-express p {
margin-bottom: var(--espace-s);
font-style: italic;
}
#panneau-informations-client .panneau__paypal-express button {
display: flex;
column-gap: var(--espacement-inter-images);
@ -252,20 +221,16 @@
margin: auto;
background: var(--couleur-noir);
}
#panneau-informations-client .panneau__paypal-express button img {
height: var(--hauteur-images-bouton);
background: inherit;
}
#panneau-informations-client .panneau__paypal-express button img:first-of-type {
margin-top: -1px;
}
#panneau-informations-client .panneau__formulaires {
padding: var(--espace-xl) 0;
}
#panneau-informations-client .panneau__formulaires .panneau__formulaires__separation-adresses {
position: relative;
display: flex;
@ -278,11 +243,9 @@
font-size: 0.8rem;
font-style: italic;
}
#panneau-informations-client .panneau__formulaires .panneau__formulaires__separation-adresses label {
text-transform: lowercase;
}
#panneau-informations-client .panneau__formulaires .panneau__formulaires__paiement .formulaire__paiement__attente-renseignement-formulaires {
align-content: center;
width: 100%;
@ -292,20 +255,16 @@
color: grey;
text-align: center;
}
#panneau-informations-client .panneau__formulaires .panneau__formulaires__paiement .formulaire__paiement__attente-renseignement-formulaires p + p {
margin-top: 1lh;
}
#panneau-informations-client .formulaire {
margin: auto;
padding: 0 var(--espace-xl);
}
#panneau-informations-client .formulaire + .formulaire {
margin-top: var(--espace-xl);
}
#panneau-informations-client .formulaire .formulaire__titre {
margin-bottom: var(--espace-m);
font-size: 1.25rem;
@ -313,13 +272,11 @@
font-style: italic;
letter-spacing: 1px;
}
#panneau-informations-client .formulaire .formulaire__champs {
width: fit-content;
margin: auto;
text-align: left;
}
#panneau-informations-client .formulaire .formulaire__champs .formulaire__champs__champ {
display: flex;
flex-flow: row nowrap;
@ -327,25 +284,20 @@
place-items: center;
justify-content: space-between;
}
#panneau-informations-client .formulaire .formulaire__champs .formulaire__champs__champ + .formulaire__champs__champ {
margin-top: var(--espace-l);
}
#panneau-informations-client .formulaire label {
width: 7rem;
font-weight: 400;
text-transform: lowercase;
}
#panneau-informations-client .formulaire label:has(+ :is(input:required, select:required)) {
font-weight: 600;
}
#panneau-informations-client .formulaire input {
width: 15rem;
}
#panneau-informations-client .panneau__pied-de-page {
align-content: center;
padding: var(--espace-l) 0;
@ -357,7 +309,6 @@
letter-spacing: 2px;
background: var(--couleur-noir);
}
#panneau-informations-client .panneau__pied-de-page button {
font: inherit;
color: inherit;
@ -371,24 +322,20 @@
#page-panier {
/* Dimensions */
--menu-section-hauteur: var(--menu-categories-produits-hauteur);
/* Marges */
--menu-section-marges-bloc-debut: var(--en-tete-hauteur); /* 1 */
position: relative;
display: flex;
flex-flow: row wrap;
min-height: calc(100svh - var(--en-tete-hauteur) - var(--pied-de-page-hauteur));
margin-top: var(--menu-section-marges-bloc-debut);
}
#page-panier .panneau {
flex: 1 1 30rem;
min-width: 30rem;
border-top: 1px solid var(--couleur-noir);
border-bottom: 1px solid var(--couleur-noir);
}
#page-panier .panneau__en-tete {
position: sticky;
z-index: 2;
@ -401,7 +348,6 @@
text-align: center;
background: var(--couleur-noir);
}
#page-panier .panneau__en-tete h2 {
font-weight: 450;
font-style: italic;
@ -410,7 +356,6 @@
letter-spacing: 1px;
background: var(--couleur-noir);
}
#page-panier .panier-vide {
display: none;
flex-basis: 100%;
@ -418,21 +363,19 @@
min-height: calc(100svh - var(--en-tete-hauteur) - var(--pied-de-page-hauteur));
text-align: center;
}
#page-panier .panier-vide p {
font-size: 1.25rem;
}
#page-panier .panier-vide a {
display: inline-block;
margin-top: var(--espace-m);
font-size: initial;
}
#page-panier[data-contient-articles="false"] .panneau {
#page-panier[data-contient-articles=false] .panneau {
display: none;
}
#page-panier[data-contient-articles="false"] .panier-vide {
#page-panier[data-contient-articles=false] .panier-vide {
display: block;
}
/*# sourceMappingURL=page-panier.css.map */

View file

@ -1 +1 @@
{"version":3,"sourceRoot":"","sources":["../../../src/sass/layouts/_panneau-panier.scss","../../../src/sass/layouts/_panneau-informations-client.scss","../../../src/sass/pages/page-panier.scss"],"names":[],"mappings":";AAEA;EACE;;AAEA;EACE;;AAIF;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGA;EACE;;AAEA;EACE;;AAGF;EACE;EACA;;AAMN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAIJ;EACE;EACA;;AAIF;EACE;EACA;EACA;EACA;EACA;AAEA;AASA;AAAA;AAAA;AAAA;AAkBA;AASA;;AAnCA;EACE;EACA;EACA;EACA;EACA;;AAOF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAKJ;EACE;EACA;EACA;EACA;EACA;;AAIF;EACE;EACA;EACA;EACA;EACA;;AAOR;EACE;EACA;EACA;EACA;AAEA;AAAA;AAAA;AAAA;;AAIA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;;AAKN;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAKA;EACE;;AAEA;EACE;;AAMR;EACE;EACA;EACA;EACA;EACA;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;;ACtNN;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAIF;EAEE;EACA;EACA;EAGA;EAEA;EACA;;AAEA;EACE;EACA;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;AAMN;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAKF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGE;EACE;;AAOV;EACE;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAIA;EACE;;AAKN;EACE;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;;AC1JN;AAAA;AAAA;AAAA;AAIA;AACE;EACA;AAEA;EACA;EAEA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAKN;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;;AAKF;EACE;;AAGF;EACE","file":"page-panier.css"}
{"version":3,"sourceRoot":"","sources":["../../../src/sass/layouts/_panneau-panier.scss","../../../src/sass/layouts/_panneau-informations-client.scss","../../../src/sass/pages/page-panier.scss"],"names":[],"mappings":";AAEA;EACE;;AAEA;EACE;;AAIF;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGA;EACE;;AAEA;EACE;;AAGF;EACE;EACA;;AAMN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAIJ;EACE;EACA;;AAIF;EACE;EACA;EACA;EACA;EACA;AAEA;AASA;AAAA;AAAA;AAAA;AAmBA;AASA;;AApCA;EACE;EACA;EACA;EACA;EACA;;AAOF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EAEE;EACA;;AAKJ;EACE;EACA;EACA;EACA;EACA;;AAIF;EACE;EACA;EACA;EACA;EACA;;AAOR;EACE;EACA;EACA;EACA;AAEA;AAAA;AAAA;AAAA;;AAIA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;AAMA;AAAA;AAAA;;AAJA;EACE;;AAMF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAKN;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAKA;EACE;;AAEA;EACE;;AAMR;EACE;EACA;EACA;EACA;EACA;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;;ACjON;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAIF;EAEE;EACA;EACA;EAGA;EAEA;EACA;;AAEA;EACE;EACA;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;AAMN;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAKF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGE;EACE;;AAOV;EACE;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAIA;EACE;;AAKN;EACE;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;;AC1JN;AAAA;AAAA;AAAA;AAIA;AACE;EACA;AAEA;EACA;EAEA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAKN;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;;AAKF;EACE;;AAGF;EACE","file":"page-panier.css"}

File diff suppressed because one or more lines are too long

View file

@ -39,10 +39,10 @@
"name": "index",
"integrity": "sha512-cxTw0sKKut2H95JwMgiKgEVLyZ0QswK/HydKTapcqcs3w6xHIHNUpYBLdRzEYdeRfHKUsA0kvPNBXBk/QeazjQ=="
},
"_index.DKC_Jv5v.js": {
"file": "index.DKC_Jv5v.js",
"_index.DxUTT09Y.js": {
"file": "index.DxUTT09Y.js",
"name": "index",
"integrity": "sha512-FnNBV2ecIkPlV7wsbCaK1Hc8B4+HEgZvdZrMBVdKa7JAnwDm6gH9PpuM7z/KfTM6Ee+bDTJeyJnZbRpjOfvlLA=="
"integrity": "sha512-ktQDmsOsv0yimT9VIoz9bZriykTetX5qhLN5BMGkJXvqxj9Z1rKiZ1wbDVj3r6bWs4/S0PGPSJevtJyGx+vcow=="
},
"_pipe.XPB0wEfw.js": {
"file": "pipe.XPB0wEfw.js",
@ -68,7 +68,14 @@
"name": "dom",
"src": "web/app/themes/haiku-atelier-2024/src/scripts/constantes/dom.ts",
"isEntry": true,
"integrity": "sha512-xjjWPpOvFbqRaz8tTHQddCsAUitaALWYAqg54uc6zi1ZEMq3m4+DwuL6NtupZJj1yM52vGcALkzUaWIcmh2wqg=="
"integrity": "sha512-ldPkBLWjE77dp7raA0LauVQS11/w/N0RpOCtgmJu3PQfwEezQS4iVPnp10lZGduIClmliT7WPpbqrZchRTpITw=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/erreurs.ts": {
"file": "erreurs.js",
"name": "erreurs",
"src": "web/app/themes/haiku-atelier-2024/src/scripts/constantes/erreurs.ts",
"isEntry": true,
"integrity": "sha512-cXQkAzCU4YB9DhSISYUNfuR3eHjrl1TUQH2zyeCUL6FjuU7iLntlvYKMD1weSH4N9B0J+kd9Kf+aZQ8I7YgmWg=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/messages.ts": {
"file": "messages3.js",
@ -114,17 +121,24 @@
"_Either.wHNxn7Os.js",
"_exports.3IcOsN8u.js"
],
"integrity": "sha512-RVlTwrCnvAW250x/R9UG3yxyQ0p+fnLIe3HUZN8rIGnWpg0yd3YGpVSClQGPohi2YNPppWS74J3zWlmdRP7qiw=="
"integrity": "sha512-nNoNk0nD88HRS8LqyIx5kV9MOZBIbcHO4IaumhTh6T3p34OdBIJtM8QQVngu6X/jPdCbMFDj9uajXKAgMkE8bQ=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/erreurs.ts": {
"file": "erreurs.js",
"file": "erreurs2.js",
"name": "erreurs",
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/erreurs.ts",
"isEntry": true,
"imports": [
"_exports.3IcOsN8u.js"
],
"integrity": "sha512-tiEWQ6pmEHs+n04C+vJHPXibpUZ+9ZA5iH4nQzN5jvgK6R058rm+q8dO8Lwem25Jh+cSo8np4/c76yVXI5zl/w=="
"integrity": "sha512-Ta/Bb2Do3/sj5Dpq5mLujPDpoZdgCiyvArjHPNRaJ359JvWcL6fczyLPYAJE4VCGGbKHneDhk/e5aHIzxHJscA=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/erreurs/codes-promo.ts": {
"file": "codes-promo.js",
"name": "codes-promo",
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/erreurs/codes-promo.ts",
"isEntry": true,
"integrity": "sha512-mvZ1WtE7fS/BRIPVI1pBdQNkZ+oimmfdowcG0kdixTM/8UW+MrPuC/vMRgO3lWoBiYEPun/19vwaV656LRhijg=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/gardes.ts": {
"file": "gardes.js",
@ -151,10 +165,12 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/messages.ts",
"isEntry": true,
"imports": [
"_index.DKC_Jv5v.js",
"_index.DxUTT09Y.js",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/messages.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/erreurs.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/erreurs.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/messages.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/validation.ts",
"_Either.wHNxn7Os.js",
"_exports.3IcOsN8u.js",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart.ts",
@ -163,7 +179,7 @@
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-coupons.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/couts-livraison.ts"
],
"integrity": "sha512-94orRrPxJFN+qWNi1NyL15PG3iKx9mivWneHmduvAzPFzhJOl2UpJFX80rIGGOQKx76DvkrNs0r8Lz0S5E/lXA=="
"integrity": "sha512-eNfGzO+xLfiHFnNdNdE+zBcnvpPz/wE6vXX1rKbYVlFuf2gPC9kxCEwQnH+BijivLi/JkqkrtXv+m/92RShOrA=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/nombres.ts": {
"file": "nombres.js",
@ -179,14 +195,14 @@
"isEntry": true,
"imports": [
"_index.CeK6pfoJ.js",
"_index.DKC_Jv5v.js",
"_index.DxUTT09Y.js",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/api.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/erreurs.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/erreurs.ts",
"_pipe.XPB0wEfw.js",
"_exports.3IcOsN8u.js"
],
"integrity": "sha512-jamYkNXH2680XzDhjyTyaJhA5N6Qbgj9L5NPBpQ94nmQQKIWOnlhB5ECY3ulny2PX4fmgUVWZskYOgkx/DrbjA=="
"integrity": "sha512-F8X+ITTTDvOk6ZjYd3qIAYkZlcJ6ZgDpbSCPAJM6Q8kcxuz0OtGVREa+iOntaFU8fiLpPvx7aA4z6u0G0oFjoQ=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/adresses.ts": {
"file": "adresses.js",
@ -194,9 +210,9 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/adresses.ts",
"isEntry": true,
"imports": [
"_index.DKC_Jv5v.js"
"_index.DxUTT09Y.js"
],
"integrity": "sha512-hp7nWc3CrWm2+zbU0mlAqbILcj5jeIp3bNBLiD1ZJCZkQYBttIyEA26+1m5s0smj4zPCYh7cnGoxqFd8/XeLRQ=="
"integrity": "sha512-H+aWaFlRjfS2cY3XWyOArYWnFBAV0weV9FMIEvTEFHiEeojtEkK++tJliJLQug2xOYPoMr6BwV3+TuRK+nSSng=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-add-item.ts": {
"file": "cart-add-item.js",
@ -204,9 +220,9 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-add-item.ts",
"isEntry": true,
"imports": [
"_index.DKC_Jv5v.js"
"_index.DxUTT09Y.js"
],
"integrity": "sha512-mbHXCUexMdgzCAGOEVUQaIPaMQiI04HXWCQEx9L541qkkLJVKQGD4TWVRuHmetCyNuOJ4B3etIEHv9M3jqveXA=="
"integrity": "sha512-ym6kcAMCCgjH0vatLjbKnTQ2231MGzFV5eNBlxFoDflkKKxPe8xHvnjJbJSTNXFFFTQammafUY3iPqVQ7WdrxA=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-apply-coupon.ts": {
"file": "cart-apply-coupon.js",
@ -214,9 +230,9 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-apply-coupon.ts",
"isEntry": true,
"imports": [
"_index.DKC_Jv5v.js"
"_index.DxUTT09Y.js"
],
"integrity": "sha512-qUrpZo097VcnjC5rGxl7boGS7m8evPkHAnsYn1jHKzKVGBRLu+W5bdjXAGzIdaB7TmUBC+xxbANZx79F/xL+wQ=="
"integrity": "sha512-MPKrUdFgPDWEPG0o82PDqPKArhbB6OVTdmeEoSKYjM+PvNsoVM0OeY+pujz5nGkU/daHBd4HriBQqV/dvcW6ww=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-coupons.ts": {
"file": "cart-coupons.js",
@ -224,9 +240,9 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-coupons.ts",
"isEntry": true,
"imports": [
"_index.DKC_Jv5v.js"
"_index.DxUTT09Y.js"
],
"integrity": "sha512-Xgd5HYn6SPOvNb1VVKEjVaSng7kwIQYrDQs288KrtXf4DTOVymIhvXl/o6diMCGsCuPVoh67cK9eFckdCbs/Dg=="
"integrity": "sha512-qdooRawTXSQsJWbwGQ5HHFzG39Cw7eFpUDgCqzQqWs8zhVQYvvunO1n4fwXWttekDr7VVChj6IzjUmv4JMdTdA=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-remove-coupon.ts": {
"file": "cart-remove-coupon.js",
@ -234,9 +250,9 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-remove-coupon.ts",
"isEntry": true,
"imports": [
"_index.DKC_Jv5v.js"
"_index.DxUTT09Y.js"
],
"integrity": "sha512-i4ks7+X0CnmjMd2CRT5ytUC4LBvu4lEHKzJkTqdeYnAG7mlFkdjbrifNU/UqvO6ZLA293f2/pNvV8XrXDp7erw=="
"integrity": "sha512-fuTTvmIWBTDpR47Wlc4bwacRjTqAa7PZpqHWBz+aAj1zTYnwIQdd/tujRGmDPx8GNiIOaz1w0jyhRyz8YZL82Q=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-remove-item.ts": {
"file": "cart-remove-item.js",
@ -244,9 +260,9 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-remove-item.ts",
"isEntry": true,
"imports": [
"_index.DKC_Jv5v.js"
"_index.DxUTT09Y.js"
],
"integrity": "sha512-97h5QCYr2tffzqwnv+45xT8RViFIYVdtHeT/xdarjjYS6lSF6F8mjwo0o9szKwb1wXry5vvvLfzEzWphl+649w=="
"integrity": "sha512-KaWApeBMfdizR8XIwwdVlPigDiuSAkVntzfoVoPx2+L74qnIRlqVzC/h8wmR5iLtJiRHUf8onWKZWTy/YJi0GA=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-update-customer.ts": {
"file": "cart-update-customer.js",
@ -254,10 +270,10 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-update-customer.ts",
"isEntry": true,
"imports": [
"_index.DKC_Jv5v.js",
"_index.DxUTT09Y.js",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/adresses.ts"
],
"integrity": "sha512-6YBAVIuC4+D6f2ro2U4nVUHk3hEIqs2+Z0MtGRzL3/1ZdM+oGqF5WyNYLU96qRAlSohmUzbhoONqpb+WVJVsbA=="
"integrity": "sha512-1vsGL4zPWg3ip4cdi+gB+QlHhjCAwn3ETg/rAGJrlDFOoNHLzkaC4Z4iJwVRMzlsISvKAHYuwQxFv1tSF26raA=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-update-item.ts": {
"file": "cart-update-item.js",
@ -265,9 +281,9 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-update-item.ts",
"isEntry": true,
"imports": [
"_index.DKC_Jv5v.js"
"_index.DxUTT09Y.js"
],
"integrity": "sha512-gjO4tVbq4MQ3PJpSDl11Uw9wFXN2dq580DH9Br8fZCJvTT15Liw4bewqcXjOlFMQSeyh2o5DfJTEpeNNFUbWcQ=="
"integrity": "sha512-enT7JXW/as+17/IgNE8HTIWumHyycCfOA1A2ViB2BX2+Sb5+yg941ATZCMF00/yIzgy/0po/HPITeEhUcTxCQA=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart.ts": {
"file": "cart.js",
@ -275,13 +291,13 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart.ts",
"isEntry": true,
"imports": [
"_index.DKC_Jv5v.js",
"_index.DxUTT09Y.js",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/cart.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/adresses.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-coupons.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/couts-livraison.ts"
],
"integrity": "sha512-Vij49uAaSPn0pnPskrurveRYMvbODXDXfGCeRaW8A0hUJNPtopBdhMslppSpom3UoEOg8iRh4Pr0FUmUB7oThQ=="
"integrity": "sha512-nkAa5GpdXm5SEv5taFhiOdunn7bOKm61N1kVyEHzPGM4sa1irsAzExc5RMXEsEjim4ZA7RseBjo6pngFXFxpIg=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/couts-livraison.ts": {
"file": "couts-livraison.js",
@ -289,20 +305,20 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/couts-livraison.ts",
"isEntry": true,
"imports": [
"_index.DKC_Jv5v.js",
"_index.DxUTT09Y.js",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/adresses.ts"
],
"integrity": "sha512-YuWaVfcugmGKrrcrxarYURiOQuOvqG+woBDw79SAa/DkvoV9j8s26xkuHV0lPCSWGmJ+lIhP0r9DeMxVqq6oeQ=="
"integrity": "sha512-Wba/eKVlVqEczLMMk3dl0p9KUI7dhNomuSIqltE35s+m9svN/k+dMr49WEyFYlchuQLH6Om19wm0VmnLPvOZmg=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/erreurs.ts": {
"file": "erreurs2.js",
"file": "erreurs3.js",
"name": "erreurs",
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/erreurs.ts",
"isEntry": true,
"imports": [
"_index.DKC_Jv5v.js"
"_index.DxUTT09Y.js"
],
"integrity": "sha512-kx+Bf9zzHdCwB0vxBE+/KLElyW0soM0ki0d3lT/b40LweGGJD5OyEF1fdc54RqLEvXT2/XDksDRUGdwKdLudrQ=="
"integrity": "sha512-/iSqgsgUyBySdgT4/xxOppkIw5kwUV6Ka0auhf2ZeSdqk6QETJm0bj5Ydt3wWdPyncFIlva3ousWwTkw5Sp7Mg=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/products.ts": {
"file": "products3.js",
@ -310,10 +326,10 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/products.ts",
"isEntry": true,
"imports": [
"_index.DKC_Jv5v.js",
"_index.DxUTT09Y.js",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/products.ts"
],
"integrity": "sha512-frGqySW9ausejkcUyAeJZNecXA5vq9/XfvDiYe8ccJb96v2kZdCQaHCdGVbYJPb0wOF/JdVUsNfTTeSu7U8DcA=="
"integrity": "sha512-Mr2P09suX7KY2cCzn+cqLdRLDHPDJC/RIsFFlB0VudZZoIE9unlsB3BjSvlzmKrBly5QP3jgnq2+7dKqSHlzMw=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/v3/orders.ts": {
"file": "orders2.js",
@ -321,11 +337,11 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/v3/orders.ts",
"isEntry": true,
"imports": [
"_index.DKC_Jv5v.js",
"_index.DxUTT09Y.js",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/orders.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/adresses.ts"
],
"integrity": "sha512-SqTZk6JurX847irpPtuz4+pFmu52sZ5PtytHR63XJ3foElbLgMdyorTU6P8jc0OELmL6qAsSNTpmWufkbJKqAA=="
"integrity": "sha512-moB98oUqT6LBlhauPLs5NaX25U/sAMuCRVbfu231Ld/mvdCW4xAd9MUd4l/wrHPckLGSDcU/1jlGPcilj5QmzQ=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/v3/products.ts": {
"file": "products.js",
@ -333,10 +349,10 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/v3/products.ts",
"isEntry": true,
"imports": [
"_index.DKC_Jv5v.js",
"_index.DxUTT09Y.js",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/products.ts"
],
"integrity": "sha512-nDODvHALLqwSzO0AKoZzYVKPg4BGO8VBwJGEMyEgjNO2NBDHrGD85/ptRVgWEZdYHcAHu2mGw10KXkcb+0QEnQ=="
"integrity": "sha512-/3pK99mes4gepaV1xY0662S9Wat4PYzOz/0433XYMmGmWzZHUhZ8lEWC2DH8ohCJv09LrvVGOPcFAvlM23KdxQ=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/messages.ts": {
"file": "messages2.js",
@ -344,7 +360,7 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/messages.ts",
"isEntry": true,
"imports": [
"_index.DKC_Jv5v.js",
"_index.DxUTT09Y.js",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/messages.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/cart.ts",
@ -352,7 +368,7 @@
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-coupons.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/couts-livraison.ts"
],
"integrity": "sha512-Z1k+lR05ggnpPfMRz+rkIz/hgZaOSn4QEoMO0gn9PqfulMuAwc+Enbm+4tHey/kPnYVthqLVU9JD45T6WwFkgw=="
"integrity": "sha512-DRQfMEltCFFPp1xUw26z4CbypxMn//NWQEsKGc98p9UTSaoSNUy7rDWR7JJYM5mnZvglEu+jEzzrKXCrZvQB2w=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/types/api/v3/orders.ts": {
"file": "orders.js",
@ -380,7 +396,7 @@
"_Either.wHNxn7Os.js",
"_exports.3IcOsN8u.js"
],
"integrity": "sha512-x3y5f8DNLaNwFU4OIZWHmBHwTKsay8L54ocQdNS+YtIALQETdiLIU3DWBhcflJQagMHjs18d7GHMBAU91t6z+Q=="
"integrity": "sha512-lFwvitUqFysRtTgYXkj89gMr6p7ZYAbJcWYdOM8enxrgeI+P5TRMgHa1cGI/odo1eUoLMZAY/ETPefDB6F6jEA=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/lib/validation.ts": {
"file": "validation.js",
@ -388,10 +404,10 @@
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/validation.ts",
"isEntry": true,
"imports": [
"_index.DKC_Jv5v.js",
"_index.DxUTT09Y.js",
"_Either.wHNxn7Os.js"
],
"integrity": "sha512-Dhmgzl/XrIuQ1eQdlXuLMdzZpBFlSVPMsGPJV24H4uetPrFJS5ifvqOCuL2vYT50sK8boIg2OSWzRSbDO2l/ZQ=="
"integrity": "sha512-U0Sy/QxwPcY4OUTn9k7ece4cny1Ll3yog6ruooDxnpcirIJAhl2GbEanmqCF1blDxuoTtm9rKS6bGpGsIPprEg=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-bouton-panier.ts": {
"file": "scripts-bouton-panier.js",
@ -408,15 +424,17 @@
"web/app/themes/haiku-atelier-2024/src/scripts/lib/erreurs.ts",
"_exports.3IcOsN8u.js",
"_Either.wHNxn7Os.js",
"_index.DKC_Jv5v.js",
"_index.DxUTT09Y.js",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/erreurs.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/messages.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/cart.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/adresses.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-coupons.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/couts-livraison.ts"
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/couts-livraison.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/validation.ts"
],
"integrity": "sha512-mHc6AtX1ym8HmptAgpbetiNRV1BLrBYZaz5ERTFv38/uFGTgaF6eR3I+51YLVSL84di4HeU/JmhYgUPmzIXRdg=="
"integrity": "sha512-owPlbtZQELd8iFvAjd99yep2RtfOCDCUR6rLSY3iqiO4Jroo0EODLGeKKCemJB/yC2TmNio/oPRg4/v4GqKNZA=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-menu-categories.ts": {
"file": "scripts-menu-categories.js",
@ -433,7 +451,7 @@
"_pipe.XPB0wEfw.js",
"_Either.wHNxn7Os.js"
],
"integrity": "sha512-j3ILSBME932tOctTi7Zh/O0nNcWVK6CZXnP0cDwVutrUSuIgQZUedocLvyZoqhqEZDE3bDylXvbOdmL97ovovw=="
"integrity": "sha512-psMOuhAkU7+jxe9h1Aj21zDO6K3lAhY6syq7TswuJ1a4vHtk81NtFnL6g7u02xM7b+4NZ908PZKhrqu6UlU9/Q=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-menu-mobile.ts": {
"file": "scripts-menu-mobile.js",
@ -449,7 +467,7 @@
"_pipe.XPB0wEfw.js",
"_Either.wHNxn7Os.js"
],
"integrity": "sha512-ug1m3ReK/rEWNlcqtQSpt4mUMSkEFt9vqH+TDliSml0CQNHdyFx5k5/+B9gwpBCu7aJi0WLxExOzO1JnnKhb3Q=="
"integrity": "sha512-jfXGu7m6fl9WAyW+/q7jIvIzt0BAHzr6/3jdUnmpjl4fk6BBreYq4dCdAYBkdor0SYiojl9CP7K4UAjviu8Fow=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-a-propos.ts": {
"file": "scripts-page-a-propos.js",
@ -466,7 +484,7 @@
"_exports.3IcOsN8u.js",
"_Either.wHNxn7Os.js"
],
"integrity": "sha512-i8fpg/m7dfAfi1JtF5Dg+JqmW7Me3NkOtlhjVyQnatzYO+KAmbifg/6hLnJmPlKnNoDcpLzWWurmp+LUUayt5w=="
"integrity": "sha512-zgCzDeT+sbnhtQa6JjC+5mfYJJFc5jaY7eHYW7aXBkzVxfit6zkxVH+tjLFE5W4agDvvB9x+h/72vW+EWp3uWg=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-accueil.ts": {
"file": "scripts-page-accueil.js",
@ -483,7 +501,7 @@
"_pipe.XPB0wEfw.js",
"_Either.wHNxn7Os.js"
],
"integrity": "sha512-h+g7IEbO5YmdMbcfG4JK+FISSSVIy0VQJRL8JQXY/kyy76KIYosJOMmWbi+Xf9wIFJmkQdS8/eUIbwmfztYqOA=="
"integrity": "sha512-XYeWeT8w4HlKIc9z3CvH16ZZ2lb5kHlxO2e0pSTL5hiyOF5JT21aQMO0OaA1izcpulUIjT+cMorXIK3/hHs2/w=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-boutique.ts": {
"file": "scripts-page-boutique.js",
@ -492,7 +510,7 @@
"isEntry": true,
"imports": [
"_index.CeK6pfoJ.js",
"_index.DKC_Jv5v.js",
"_index.DxUTT09Y.js",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/api.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/dom.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/dom.ts",
@ -510,7 +528,7 @@
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/products.ts",
"_belt_Option-91f3b350.cBye8bLJ.js"
],
"integrity": "sha512-uNYyKGhjHeqYncjAyE+T/e7QBoQ/f9UvdSiQDykcwh166q7omicesrkD2sIlLz/N439aSMU26A09bm+GRe6elg=="
"integrity": "sha512-tn2cf3wz6jENK1aJWUlAx2ExPnKYCf5zXmDw4DJyshzRgdj0Polb9K7SwYh3Uqf2Ek8rh74MQKX2q7zPFbWA9A=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-panier-code-promo.ts": {
"file": "scripts-page-panier-code-promo.js",
@ -519,12 +537,15 @@
"isEntry": true,
"imports": [
"_index.CeK6pfoJ.js",
"_index.DKC_Jv5v.js",
"_index.DxUTT09Y.js",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/api.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/dom.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/erreurs.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/dom.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/erreurs.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/erreurs/codes-promo.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/gardes.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/messages.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/reseau.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-apply-coupon.ts",
@ -535,13 +556,15 @@
"_pipe.XPB0wEfw.js",
"_Either.wHNxn7Os.js",
"_exports.3IcOsN8u.js",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/messages.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/erreurs.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/messages.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/cart.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/adresses.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-coupons.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/couts-livraison.ts"
],
"integrity": "sha512-22TkRIZOEsST92UYKs46BLpB7h9wrAHlaPGzlEtapPuHZRDzN5KDgh/iWTC9Wy16m/4MMTCJ42UNZD3cGIpgOg=="
"integrity": "sha512-Dcq5CmQJWGUY0FPDHu4fI5COKoVMxA0I0zUpOpPIS6IQ8HXCvzQjH+18wNzCpbqNB/L0mrILXsSVmLmpeLGEWw=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-panier.ts": {
"file": "scripts-page-panier.js",
@ -550,7 +573,7 @@
"isEntry": true,
"imports": [
"_index.CeK6pfoJ.js",
"_index.DKC_Jv5v.js",
"_index.DxUTT09Y.js",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/api.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/dom.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/messages.ts",
@ -572,18 +595,20 @@
"_index-0eef19ec.DoJSf22Z.js",
"_Either.wHNxn7Os.js",
"_exports.3IcOsN8u.js",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/messages.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/erreurs.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/messages.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/adresses.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/cart.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-coupons.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/orders.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/erreurs.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/erreurs/codes-promo.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-apply-coupon.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-remove-coupon.ts",
"_MaybeAsync.AE1jnxuc.js",
"_belt_Option-91f3b350.cBye8bLJ.js"
],
"integrity": "sha512-pjdI16uzECwZBDM0wQrEmMY5cAcToOu2qjDsct0nuz5TqNsP8VqtQ36TqPKJ7ADy+LKVyaajCqpUr4KaErg2Dg=="
"integrity": "sha512-nv6WicLF3qhp2tyjzl7Ns5Yyfon9onWi/u5nxsvBRT6oEpdb9h5rXxDx3ydC6OsMR9n/B1wdXsuxxHTmECqX/w=="
},
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-produit.ts": {
"file": "scripts-page-produit.js",
@ -599,24 +624,24 @@
"web/app/themes/haiku-atelier-2024/src/scripts/lib/gardes.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/messages.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/reseau.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-add-item.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/utils.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/validation.ts",
"_pipe.XPB0wEfw.js",
"_index-0eef19ec.DoJSf22Z.js",
"_Either.wHNxn7Os.js",
"_exports.3IcOsN8u.js",
"_index.DKC_Jv5v.js",
"_index.DxUTT09Y.js",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/messages.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/messages.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/erreurs.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/messages.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/cart.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/adresses.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-coupons.ts",
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/couts-livraison.ts",
"_belt_Option-91f3b350.cBye8bLJ.js"
],
"integrity": "sha512-AfazFsXwZx7Jw4OFVOqn67aMHb33rZaKnWzJWhXb065QNCmsGpBpTpXIN+MceSmx/b/6uKsieqH6PwFKyIk9jw=="
"integrity": "sha512-lUQ7gg9r4XVBz+5ivZvD+nP+ncAJ4I78VpiJJE3NSWecpGYoyN/2/LvWzQr8maRyf7Ox4+aJRrbHIaQZVul/fQ=="
}
}

View file

@ -1,4 +1,4 @@
import { o as object, s as string } from "./index.DKC_Jv5v.js";
import { o as object, s as string } from "./index.DxUTT09Y.js";
const WCStoreBillingAddressSchema = object({
address_1: string(),
address_2: string(),

View file

@ -1,4 +1,4 @@
import { o as object, c as optional, n as number, b as array, s as string } from "./index.DKC_Jv5v.js";
import { o as object, c as optional, n as number, b as array, s as string } from "./index.DxUTT09Y.js";
const WCStoreCartAddItemArgsItemsSchema = object({
/** Variation attribute name. */
attribute: string(),

View file

@ -1,4 +1,4 @@
import { o as object, c as optional, s as string } from "./index.DKC_Jv5v.js";
import { o as object, c as optional, s as string } from "./index.DxUTT09Y.js";
const WCStoreCartApplyCouponArgsSchema = object({
/** Unique identifier for the coupon within the basket */
code: optional(string())

View file

@ -1,4 +1,4 @@
import { o as object, s as string, a as pipe, i as integer, n as number } from "./index.DKC_Jv5v.js";
import { o as object, s as string, a as pipe, j as integer, n as number } from "./index.DxUTT09Y.js";
const WCStoreCartCouponsSchema = object({
/** The coupon's unique code. */
code: string(),

View file

@ -1,4 +1,4 @@
import { o as object, c as optional, s as string } from "./index.DKC_Jv5v.js";
import { o as object, c as optional, s as string } from "./index.DxUTT09Y.js";
const WCStoreCartRemoveCouponArgsSchema = object({
/** Unique identifier for the coupon within the basket */
code: optional(string())

View file

@ -1,4 +1,4 @@
import { o as object, s as string } from "./index.DKC_Jv5v.js";
import { o as object, s as string } from "./index.DxUTT09Y.js";
const WCStoreCartRemoveItemArgsSchema = object({
/** Unique identifier (key) for the basket item. */
key: string()

View file

@ -1,4 +1,4 @@
import { o as object, c as optional } from "./index.DKC_Jv5v.js";
import { o as object, c as optional } from "./index.DxUTT09Y.js";
import { W as WCStoreBillingAddressSchema, a as WCStoreShippingAddressSchema } from "./adresses.js";
const WCStoreCartUpdateCustomerArgsSchema = object({
billing_address: optional(WCStoreBillingAddressSchema),

View file

@ -1,4 +1,4 @@
import { o as object, s as string, a as pipe, m as minValue, n as number } from "./index.DKC_Jv5v.js";
import { o as object, s as string, a as pipe, m as minValue, n as number } from "./index.DxUTT09Y.js";
const WCStoreCartUpdateItemArgsSchema = object({
/** Unique identifier (key) for the basket item to update. */
key: string(),

View file

@ -1,4 +1,4 @@
import { o as object, d as boolean, e as enum_, s as string, u as unknown, n as number, b as array, f as union, a as pipe, g as null_, h as url, i as integer } from "./index.DKC_Jv5v.js";
import { o as object, d as boolean, e as enum_, s as string, u as unknown, n as number, b as array, f as union, a as pipe, g as null_, h as url, j as integer } from "./index.DxUTT09Y.js";
import { C as CATALOG_VISIBILITIES } from "./cart2.js";
import { W as WCStoreBillingAddressSchema, a as WCStoreShippingAddressSchema } from "./adresses.js";
import { W as WCStoreCartCouponsSchema } from "./cart-coupons.js";

View file

@ -0,0 +1,10 @@
class ErreurCodePromoInvalide extends Error {
constructor(message) {
super(`Code promo « ${message} » invalide.`);
this.name = "ErreurCodePromoInvalide";
}
}
export {
ErreurCodePromoInvalide as E
};
//# sourceMappingURL=codes-promo.js.map

View file

@ -0,0 +1 @@
{"version":3,"file":"codes-promo.js","sources":["../../src/scripts/lib/erreurs/codes-promo.ts"],"sourcesContent":["/** Types d'Erreurs liés aux codes promos */\n\nexport class ErreurCodePromoInvalide extends Error {\n constructor(message: string) {\n super(`Code promo « ${message} » invalide.`);\n this.name = \"ErreurCodePromoInvalide\";\n }\n}\n"],"names":[],"mappings":"AAEO,MAAM,gCAAgC,MAAM;AAAA,EACjD,YAAY,SAAiB;AACrB,UAAA,gBAAgB,OAAO,cAAc;AAC3C,SAAK,OAAO;AAAA,EAAA;AAEhB;"}

View file

@ -1,4 +1,4 @@
import { o as object, j as omit, b as array, s as string, n as number, u as unknown, d as boolean } from "./index.DKC_Jv5v.js";
import { o as object, k as omit, b as array, s as string, n as number, u as unknown, d as boolean } from "./index.DxUTT09Y.js";
import { a as WCStoreShippingAddressSchema } from "./adresses.js";
const WCStoreShippingRateItemSchema = object({
key: string(),

View file

@ -2,17 +2,18 @@ const ATTRIBUT_ARIA_HIDDEN = "aria-hidden";
const ATTRIBUT_ARIA_SELECTED = "aria-selected";
const ATTRIBUT_CACHE = "data-cache";
const ATTRIBUT_CLE_PANIER = "data-cle-panier";
const ATTRIBUT_CODE_PROMO_PRESENT = "data-code-promo-present";
const ATTRIBUT_CONTIENT_ARTICLES = "data-contient-articles";
const ATTRIBUT_DESACTIVE = "disabled";
const ATTRIBUT_ENSEMBLE_EPINGLE_BOITE_ACTIF = "data-ensemble-epingle-boite-actif";
const ATTRIBUT_HIDDEN = "hidden";
const ATTRIBUT_MENU_MOBILE_ACTIVE = "data-menu-mobile-active";
const ATTRIBUT_PAGE = "data-page";
const ATTRIBUT_ID_CATEGORIE_PRODUITS = "data-id-categorie-produits";
const ATTRIBUT_ID_ENSEMBLE_EPINGLE_BOITE = "data-id-ensemble-epingle-boite";
const ATTRIBUT_ENSEMBLE_EPINGLE_BOITE_ACTIF = "data-ensemble-epingle-boite-actif";
const ATTRIBUT_INDEX_IMAGE_ACTIVE = "data-index-image-active";
const ATTRIBUT_MENU_MOBILE_ACTIVE = "data-menu-mobile-active";
const ATTRIBUT_PAGE = "data-page";
const ATTRIBUT_PRIX = "data-prix";
const ATTRIBUT_CODE_PROMO_PRESENT = "data-code-promo-present";
const ATTRIBUT_CHARGEMENT = "data-chargement";
const SELECTEUR_BOUTON_MENU_MOBILE = "#bouton-menu-mobile";
const SELECTEUR_BOUTON_PANIER = ".compte-panier a[rel='cart']";
const SELECTEUR_MENU_MOBILE = "#menu-mobile";
@ -43,6 +44,7 @@ const SELECTEUR_INSTRUCTIONS_CLIENT = "#panneau-panier #instructions-client";
const SELECTEUR_ENSEMBLE_CODE_PROMO = "#panneau-panier #ensemble-code-promo";
const SELECTEUR_CHAMP_CODE_PROMO = "#panneau-panier #champ-code-promo";
const SELECTEUR_BOUTON_CODE_PROMO = "#panneau-panier #bouton-code-promo";
const SELECTEUR_MESSAGE_CODE_PROMO = "#panneau-panier .panneau__instructions-code-promo__code-promo__message";
const SELECTEUR_CONTENEUR_STORYTELLING = ".storytelling";
const SELECTEUR_IMAGES_STORYTELLING = ".storytelling__image";
const SELECTEUR_GRILLE_PRODUITS = "#page-boutique .grille-produits";
@ -61,42 +63,44 @@ const SELECTEUR_IMAGE_COLONNE_GAUCHE = ".colonne-gauche img";
const SELECTEUR_IMAGES_COLONNE_DROITE = ".colonne-droite img";
const SELECTEUR_PRIX_PRODUIT = ".selecteur-produit__prix";
export {
ATTRIBUT_MENU_MOBILE_ACTIVE as $,
SELECTEUR_BOUTON_MENU_MOBILE as $,
ATTRIBUT_CONTIENT_ARTICLES as A,
SELECTEUR_BOUTON_CODE_PROMO as B,
ATTRIBUT_CLE_PANIER as C,
SELECTEUR_BOUTON_SOUSTRACTION_QUANTITE as D,
SELECTEUR_CHAMP_QUANTITE_LIGNE_PANIER as E,
SELECTEUR_BOUTON_ADDITION_QUANTITE as F,
SELECTEUR_BOUTON_SUPPRESSION_PANIER as G,
SELECTEUR_PRIX_LIGNE_PANIER as H,
ATTRIBUT_DESACTIVE as I,
ATTRIBUT_CODE_PROMO_PRESENT as J,
SELECTEUR_BOUTON_AJOUT_PANIER as K,
SELECTEUR_SELECTEUR_QUANTITE as L,
SELECTEUR_LIENS_ONGLETS as M,
SELECTEUR_SECTIONS_CONTENUS as N,
SELECTEUR_PRIX_PRODUIT as O,
SELECTEUR_CONTENEUR_FLECHES_DEFILEMENT as P,
SELECTEUR_FLECHE_DEFILEMENT_GAUCHE as Q,
SELECTEUR_FLECHE_DEFILEMENT_DROITE as R,
SELECTEUR_BOUTON_SUPPRESSION_PANIER as B,
SELECTEUR_PRIX_LIGNE_PANIER as C,
ATTRIBUT_DESACTIVE as D,
SELECTEUR_BOUTON_CODE_PROMO as E,
SELECTEUR_CHAMP_CODE_PROMO as F,
SELECTEUR_ENSEMBLE_CODE_PROMO as G,
SELECTEUR_MESSAGE_CODE_PROMO as H,
SELECTEUR_TOTAL_REDUCTION as I,
SELECTEUR_TOTAL_REDUCTION_VALEUR as J,
ATTRIBUT_CHARGEMENT as K,
ATTRIBUT_CODE_PROMO_PRESENT as L,
SELECTEUR_BOUTON_AJOUT_PANIER as M,
SELECTEUR_SELECTEUR_QUANTITE as N,
SELECTEUR_LIENS_ONGLETS as O,
SELECTEUR_SECTIONS_CONTENUS as P,
SELECTEUR_PRIX_PRODUIT as Q,
SELECTEUR_CONTENEUR_FLECHES_DEFILEMENT as R,
SELECTEUR_BOUTON_PANIER as S,
SELECTEUR_PHOTOS_PRODUIT as T,
SELECTEUR_IMAGE_COLONNE_GAUCHE as U,
SELECTEUR_IMAGES_COLONNE_DROITE as V,
ATTRIBUT_INDEX_IMAGE_ACTIVE as W,
ATTRIBUT_ARIA_SELECTED as X,
ATTRIBUT_PRIX as Y,
SELECTEUR_BOUTON_MENU_MOBILE as Z,
SELECTEUR_MENU_MOBILE as _,
SELECTEUR_FLECHE_DEFILEMENT_GAUCHE as T,
SELECTEUR_FLECHE_DEFILEMENT_DROITE as U,
SELECTEUR_PHOTOS_PRODUIT as V,
SELECTEUR_IMAGE_COLONNE_GAUCHE as W,
SELECTEUR_IMAGES_COLONNE_DROITE as X,
ATTRIBUT_INDEX_IMAGE_ACTIVE as Y,
ATTRIBUT_ARIA_SELECTED as Z,
ATTRIBUT_PRIX as _,
SELECTEUR_MENU_CATEGORIES_PRODUITS as a,
ATTRIBUT_ID_ENSEMBLE_EPINGLE_BOITE as a0,
ATTRIBUT_ENSEMBLE_EPINGLE_BOITE_ACTIF as a1,
CLASS_BOUTON_FERMETURE_BOITE_TEXTE as a2,
CLASS_EPINGLE as a3,
SELECTEUR_CONTENEUR_STORYTELLING_A_PROPOS as a4,
SELECTEUR_EPINGLE as a5,
SELECTEUR_BOITE_TEXTE as a6,
SELECTEUR_MENU_MOBILE as a0,
ATTRIBUT_MENU_MOBILE_ACTIVE as a1,
ATTRIBUT_ID_ENSEMBLE_EPINGLE_BOITE as a2,
ATTRIBUT_ENSEMBLE_EPINGLE_BOITE_ACTIF as a3,
CLASS_BOUTON_FERMETURE_BOITE_TEXTE as a4,
CLASS_EPINGLE as a5,
SELECTEUR_CONTENEUR_STORYTELLING_A_PROPOS as a6,
SELECTEUR_EPINGLE as a7,
SELECTEUR_BOITE_TEXTE as a8,
SELECTEUR_ENTREE_MENU_CATEGORIES_PRODUITS as b,
SELECTEUR_CONTENEUR_STORYTELLING as c,
SELECTEUR_IMAGES_STORYTELLING as d,
@ -117,10 +121,10 @@ export {
SELECTEUR_FORMULAIRE_PANIER as s,
SELECTEUR_FORMULAIRE_FACTURATION as t,
SELECTEUR_BOUTON_ACTIONS_FORMULAIRE as u,
SELECTEUR_TOTAL_REDUCTION as v,
SELECTEUR_TOTAL_REDUCTION_VALEUR as w,
SELECTEUR_INSTRUCTIONS_CLIENT as x,
SELECTEUR_ENSEMBLE_CODE_PROMO as y,
SELECTEUR_CHAMP_CODE_PROMO as z
SELECTEUR_INSTRUCTIONS_CLIENT as v,
ATTRIBUT_CLE_PANIER as w,
SELECTEUR_BOUTON_SOUSTRACTION_QUANTITE as x,
SELECTEUR_CHAMP_QUANTITE_LIGNE_PANIER as y,
SELECTEUR_BOUTON_ADDITION_QUANTITE as z
};
//# sourceMappingURL=dom.js.map

File diff suppressed because one or more lines are too long

View file

@ -1,4 +1,4 @@
import { e as creeSyntaxError, f as reporteEtLeveErreur, g as ErreurEntreeInexistante, h as ERREUR_SYNTAXE_INVALIDE, i as ERREUR_SELECTEUR_INEXISTANT } from "./erreurs.js";
import { e as creeSyntaxError, f as reporteEtLeveErreur, g as ErreurEntreeInexistante, h as ERREUR_SYNTAXE_INVALIDE, i as ERREUR_SELECTEUR_INEXISTANT } from "./erreurs2.js";
import { p as pipe } from "./pipe.XPB0wEfw.js";
import { E as Either, r as right, l as left, M as Maybe } from "./Either.wHNxn7Os.js";
import "./exports.3IcOsN8u.js";

View file

@ -1,88 +1,5 @@
import { c as captureException } from "./exports.3IcOsN8u.js";
const ERREUR_SYNTAXE_INVALIDE = (selecteur) => `Le selecteur "${selecteur}" est invalide`;
const ERREUR_SELECTEUR_INEXISTANT = (selecteur) => `La requête "${selecteur}" n'a retourné aucun Élément.`;
const creeSyntaxError = (message) => new SyntaxError(message);
class BadRequestError extends Error {
constructor(message = "400 BadRequestError") {
super(message);
this.name = "BadRequestError";
}
}
class UnauthorizedError extends Error {
constructor(message = "401 UnauthorizedError") {
super(message);
this.name = "UnauthorizedError";
}
}
class NotFoundError extends Error {
constructor(message = "404 NotFoundError") {
super(message);
this.name = "NotFoundError";
}
}
class ServerError extends Error {
constructor(message = "500 ServerError") {
super(message);
this.name = "ServerError";
}
}
class UnknownError extends Error {
constructor(message) {
super(JSON.stringify(message));
this.name = "UnknownError";
}
}
class CleNonTrouveError extends Error {
constructor(message) {
super(JSON.stringify(message));
this.name = "CleNonTrouveError";
}
}
class NonExistingKeyError extends Error {
constructor(message) {
super(JSON.stringify(message));
this.name = "NonExistingKeyError";
}
}
const ErreurInconnue = (erreur) => new UnknownError(erreur);
const ErreurEntreeInexistante = (message) => new NonExistingKeyError(message);
const leveErreur = (erreur) => {
throw erreur;
};
const leveBadRequestError = (erreur) => {
throw new BadRequestError(`(${erreur.code}) ${erreur.message}`);
};
const leveUnauthorizedError = (erreur) => {
throw new UnauthorizedError(`(${erreur.code}) ${erreur.message}`);
};
const leveNotFoundError = (erreur) => {
throw new NotFoundError(`(${erreur.code}) ${erreur.message}`);
};
const leveServerError = (message) => {
throw new ServerError(message);
};
const reporteErreur = (erreur) => {
console.error(erreur);
return captureException(erreur);
};
const reporteEtLeveErreur = (erreur) => {
reporteErreur(erreur);
throw erreur;
};
const ERREUR_CODE_PROMO_INVALIDE = "woocommerce_rest_cart_coupon_error";
export {
CleNonTrouveError as C,
ErreurInconnue as E,
ServerError as S,
leveErreur as a,
leveBadRequestError as b,
leveUnauthorizedError as c,
leveNotFoundError as d,
creeSyntaxError as e,
reporteEtLeveErreur as f,
ErreurEntreeInexistante as g,
ERREUR_SYNTAXE_INVALIDE as h,
ERREUR_SELECTEUR_INEXISTANT as i,
leveServerError as l,
reporteErreur as r
ERREUR_CODE_PROMO_INVALIDE as E
};
//# sourceMappingURL=erreurs.js.map

File diff suppressed because one or more lines are too long

View file

@ -1,17 +1,88 @@
import { l as is, o as object, n as number, s as string } from "./index.DKC_Jv5v.js";
const WCErrorBodySchema = object({
code: string(),
data: object({
status: number()
}),
message: string()
});
const WCErrorSchema = object({
body: WCErrorBodySchema,
status: number()
});
const estWCError = (donnees) => is(WCErrorSchema, donnees);
import { c as captureException } from "./exports.3IcOsN8u.js";
const ERREUR_SYNTAXE_INVALIDE = (selecteur) => `Le selecteur "${selecteur}" est invalide`;
const ERREUR_SELECTEUR_INEXISTANT = (selecteur) => `La requête "${selecteur}" n'a retourné aucun Élément.`;
const creeSyntaxError = (message) => new SyntaxError(message);
class BadRequestError extends Error {
constructor(message = "400 BadRequestError") {
super(message);
this.name = "BadRequestError";
}
}
class CleNonTrouveError extends Error {
constructor(message) {
super(JSON.stringify(message));
this.name = "CleNonTrouveError";
}
}
class NonExistingKeyError extends Error {
constructor(message) {
super(JSON.stringify(message));
this.name = "NonExistingKeyError";
}
}
class NotFoundError extends Error {
constructor(message = "404 NotFoundError") {
super(message);
this.name = "NotFoundError";
}
}
class ServerError extends Error {
constructor(message = "500 ServerError") {
super(message);
this.name = "ServerError";
}
}
class UnauthorizedError extends Error {
constructor(message = "401 UnauthorizedError") {
super(message);
this.name = "UnauthorizedError";
}
}
class UnknownError extends Error {
constructor(message) {
super(JSON.stringify(message));
this.name = "UnknownError";
}
}
const ErreurInconnue = (erreur) => new UnknownError(erreur);
const ErreurEntreeInexistante = (message) => new NonExistingKeyError(message);
const leveErreur = (erreur) => {
throw erreur;
};
const leveBadRequestError = (erreur) => {
throw new BadRequestError(`(${erreur.code}) ${erreur.message}`);
};
const leveUnauthorizedError = (erreur) => {
throw new UnauthorizedError(`(${erreur.code}) ${erreur.message}`);
};
const leveNotFoundError = (erreur) => {
throw new NotFoundError(`(${erreur.code}) ${erreur.message}`);
};
const leveServerError = (message) => {
throw new ServerError(message);
};
const reporteErreur = (erreur) => {
console.error(erreur);
return captureException(erreur);
};
const reporteEtLeveErreur = (erreur) => {
reporteErreur(erreur);
throw erreur;
};
export {
estWCError as e
CleNonTrouveError as C,
ErreurInconnue as E,
ServerError as S,
leveErreur as a,
leveBadRequestError as b,
leveUnauthorizedError as c,
leveNotFoundError as d,
creeSyntaxError as e,
reporteEtLeveErreur as f,
ErreurEntreeInexistante as g,
ERREUR_SYNTAXE_INVALIDE as h,
ERREUR_SELECTEUR_INEXISTANT as i,
leveServerError as l,
reporteErreur as r
};
//# sourceMappingURL=erreurs2.js.map

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,18 @@
import { o as object, n as number, i as is, s as string } from "./index.DxUTT09Y.js";
const WCErrorBodySchema = object({
code: string(),
data: object({
status: number()
}),
message: string()
});
const WCErrorSchema = object({
body: WCErrorBodySchema,
status: number()
});
const estWCError = (donnees) => is(WCErrorSchema, donnees);
export {
WCErrorSchema as W,
estWCError as e
};
//# sourceMappingURL=erreurs3.js.map

View file

@ -0,0 +1 @@
{"version":3,"file":"erreurs3.js","sources":["../../src/scripts/lib/schemas/api/erreurs.ts"],"sourcesContent":["import * as v from \"valibot\";\n\nimport type { WCError } from \"../../types/api/erreurs\";\n\nexport const WCErrorBodySchema = v.object({\n code: v.string(),\n data: v.object({\n status: v.number(),\n }),\n message: v.string(),\n});\n\nexport const WCErrorSchema = v.object({\n body: WCErrorBodySchema,\n status: v.number(),\n});\n\nexport const estWCError = (donnees: unknown): donnees is WCError => v.is(WCErrorSchema, donnees);\n"],"names":["v.object","v.string","v.number","v.is"],"mappings":";AAIa,MAAA,oBAAoBA,OAAS;AAAA,EACxC,MAAMC,OAAS;AAAA,EACf,MAAMD,OAAS;AAAA,IACb,QAAQE,OAAS;AAAA,EAAA,CAClB;AAAA,EACD,SAASD,OAAS;AACpB,CAAC;AAEY,MAAA,gBAAgBD,OAAS;AAAA,EACpC,MAAM;AAAA,EACN,QAAQE,OAAS;AACnB,CAAC;AAEM,MAAM,aAAa,CAAC,YAAyCC,GAAK,eAAe,OAAO;"}

File diff suppressed because one or more lines are too long

View file

@ -606,10 +606,10 @@ export {
union as f,
null_ as g,
url as h,
integer as i,
omit as j,
maxValue as k,
is as l,
is as i,
integer as j,
omit as k,
maxValue as l,
minValue as m,
number as n,
object as o,
@ -618,4 +618,4 @@ export {
unknown as u,
value as v
};
//# sourceMappingURL=index.DKC_Jv5v.js.map
//# sourceMappingURL=index.DxUTT09Y.js.map

View file

@ -1,7 +1,9 @@
import { p as parse } from "./index.DKC_Jv5v.js";
import { p as parse } from "./index.DxUTT09Y.js";
import { N as NOM_CANAL_BOUTON_PANIER, T as TYPES_MESSAGES, a as NOM_CANAL_CONTENU_PANIER } from "./messages3.js";
import { r as reporteErreur } from "./erreurs.js";
import { r as reporteErreur } from "./erreurs2.js";
import { W as WCErrorSchema } from "./erreurs3.js";
import { M as MessageMajBoutonPanierSchema, a as MessageMajContenuPanierSchema } from "./messages2.js";
import { e as eitherParse } from "./validation.js";
import { E as Either } from "./Either.wHNxn7Os.js";
import "./exports.3IcOsN8u.js";
import "./cart.js";
@ -37,10 +39,12 @@ const valideMessageMajBoutonPanier = (evenementMessage) => Either.of(
const valideMessageMajContenuPanier = (evenementMessage) => Either.of(
parse(MessageMajContenuPanierSchema, evenementMessage.data)
).ifLeft((erreur) => reporteErreur(erreur));
const reponseEstCodeErreurWC = (reponse, codeErreurWC) => eitherParse(reponse, WCErrorSchema).map((v) => v.body.code === codeErreurWC).orDefault(false);
export {
emetMessageMajContenuPanier as a,
valideMessageMajContenuPanier as b,
emetMessageMajBoutonPanier as e,
reponseEstCodeErreurWC as r,
valideMessageMajBoutonPanier as v
};
//# sourceMappingURL=messages.js.map

View file

@ -1 +1 @@
{"version":3,"file":"messages.js","sources":["../../src/scripts/lib/messages.ts"],"sourcesContent":["import { Either } from \"purify-ts\";\nimport { parse, type ValiError } from \"valibot\";\n\nimport type {\n MessageMajBoutonPanier,\n MessageMajBoutonPanierDonnees,\n MessageMajContenuPanier,\n MessageMajContenuPanierDonnees,\n} from \"./types/messages\";\n\nimport { NOM_CANAL_BOUTON_PANIER, NOM_CANAL_CONTENU_PANIER, TYPES_MESSAGES } from \"../constantes/messages.ts\";\nimport { reporteErreur } from \"./erreurs.ts\";\nimport { MessageMajBoutonPanierSchema, MessageMajContenuPanierSchema } from \"./schemas/messages.ts\";\n\n// Émissions\nexport const emetMessageMajBoutonPanier = (args: MessageMajBoutonPanierDonnees): void => {\n const canal = new BroadcastChannel(NOM_CANAL_BOUTON_PANIER);\n canal.postMessage({\n donnees: {\n quantiteProduits: args.quantiteProduits,\n },\n type: TYPES_MESSAGES.MajBoutonPanier,\n } as MessageMajBoutonPanier);\n canal.close();\n};\n\nexport const emetMessageMajContenuPanier = (args: MessageMajContenuPanierDonnees): void => {\n const canal = new BroadcastChannel(NOM_CANAL_CONTENU_PANIER);\n canal.postMessage({\n donnees: {\n produits: args.produits,\n sousTotalPanier: args.sousTotalPanier,\n totalPanier: args.totalPanier,\n },\n type: TYPES_MESSAGES.MajContenuPanier,\n } as MessageMajContenuPanier);\n canal.close();\n};\n\n// Validations\nexport const valideMessageMajBoutonPanier = (\n evenementMessage: MessageEvent<unknown>,\n): Either<ValiError<typeof MessageMajBoutonPanierSchema>, MessageMajBoutonPanier> =>\n Either\n .of<ValiError<typeof MessageMajBoutonPanierSchema>, MessageMajBoutonPanier>(\n parse(MessageMajBoutonPanierSchema, evenementMessage.data),\n )\n .ifLeft(erreur => reporteErreur(erreur));\n\nexport const valideMessageMajContenuPanier = (\n evenementMessage: MessageEvent<unknown>,\n): Either<ValiError<typeof MessageMajContenuPanierSchema>, MessageMajContenuPanier> =>\n Either\n .of<ValiError<typeof MessageMajContenuPanierSchema>, MessageMajContenuPanier>(\n parse(MessageMajContenuPanierSchema, evenementMessage.data),\n )\n .ifLeft(erreur => reporteErreur(erreur));\n"],"names":[],"mappings":";;;;;;;;;;;AAea,MAAA,6BAA6B,CAAC,SAA8C;AACjF,QAAA,QAAQ,IAAI,iBAAiB,uBAAuB;AAC1D,QAAM,YAAY;AAAA,IAChB,SAAS;AAAA,MACP,kBAAkB,KAAK;AAAA,IACzB;AAAA,IACA,MAAM,eAAe;AAAA,EAAA,CACI;AAC3B,QAAM,MAAM;AACd;AAEa,MAAA,8BAA8B,CAAC,SAA+C;AACnF,QAAA,QAAQ,IAAI,iBAAiB,wBAAwB;AAC3D,QAAM,YAAY;AAAA,IAChB,SAAS;AAAA,MACP,UAAU,KAAK;AAAA,MACf,iBAAiB,KAAK;AAAA,MACtB,aAAa,KAAK;AAAA,IACpB;AAAA,IACA,MAAM,eAAe;AAAA,EAAA,CACK;AAC5B,QAAM,MAAM;AACd;AAGa,MAAA,+BAA+B,CAC1C,qBAEA,OACG;AAAA,EACC,MAAM,8BAA8B,iBAAiB,IAAI;AAC3D,EACC,OAAO,CAAA,WAAU,cAAc,MAAM,CAAC;AAE9B,MAAA,gCAAgC,CAC3C,qBAEA,OACG;AAAA,EACC,MAAM,+BAA+B,iBAAiB,IAAI;AAC5D,EACC,OAAO,CAAA,WAAU,cAAc,MAAM,CAAC;"}
{"version":3,"file":"messages.js","sources":["../../src/scripts/lib/messages.ts"],"sourcesContent":["import { pipe } from \"@mobily/ts-belt\";\nimport { Either } from \"purify-ts\";\nimport { parse, type ValiError } from \"valibot\";\n\nimport type {\n MessageMajBoutonPanier,\n MessageMajBoutonPanierDonnees,\n MessageMajContenuPanier,\n MessageMajContenuPanierDonnees,\n} from \"./types/messages\";\n\nimport { NOM_CANAL_BOUTON_PANIER, NOM_CANAL_CONTENU_PANIER, TYPES_MESSAGES } from \"../constantes/messages.ts\";\nimport { reporteErreur } from \"./erreurs.ts\";\nimport { WCErrorSchema } from \"./schemas/api/erreurs.ts\";\nimport { MessageMajBoutonPanierSchema, MessageMajContenuPanierSchema } from \"./schemas/messages.ts\";\nimport { ReponseSimplifiee } from \"./types/reseau\";\nimport { eitherParse } from \"./validation.ts\";\n\nexport const canalPostMessage = (canal: BroadcastChannel, message: any): BroadcastChannel => {\n canal.postMessage(message);\n return canal;\n};\n\n// Émissions\nexport const emetMessageMajBoutonPanier = (args: MessageMajBoutonPanierDonnees): void => {\n const canal = new BroadcastChannel(NOM_CANAL_BOUTON_PANIER);\n canal.postMessage({\n donnees: {\n quantiteProduits: args.quantiteProduits,\n },\n type: TYPES_MESSAGES.MajBoutonPanier,\n } as MessageMajBoutonPanier);\n canal.close();\n};\n\nexport const emetMessageMajContenuPanier = (args: MessageMajContenuPanierDonnees): void => {\n const canal = new BroadcastChannel(NOM_CANAL_CONTENU_PANIER);\n canal.postMessage({\n donnees: {\n produits: args.produits,\n sousTotalPanier: args.sousTotalPanier,\n totalPanier: args.totalPanier,\n },\n type: TYPES_MESSAGES.MajContenuPanier,\n } as MessageMajContenuPanier);\n canal.close();\n};\n\n/**\n * Émet un unique message vers un BroadcastChannel (canal) généré sur le moment puis le ferme.\n *\n * @param nomCanal Le nom du BroadcastChannel pour lequel le message est émis.\n * @param message Le message émis.\n * @return void\n */\nexport const emetUniqueMessageCanal = <M>(nomCanal: string, message: M): void =>\n pipe(new BroadcastChannel(nomCanal), canal => canalPostMessage(canal, message), canal => canal.close());\n\n// Validations\nexport const valideMessageMajBoutonPanier = (\n evenementMessage: MessageEvent<unknown>,\n): Either<ValiError<typeof MessageMajBoutonPanierSchema>, MessageMajBoutonPanier> =>\n Either\n .of<ValiError<typeof MessageMajBoutonPanierSchema>, MessageMajBoutonPanier>(\n parse(MessageMajBoutonPanierSchema, evenementMessage.data),\n )\n .ifLeft(erreur => reporteErreur(erreur));\n\nexport const valideMessageMajContenuPanier = (\n evenementMessage: MessageEvent<unknown>,\n): Either<ValiError<typeof MessageMajContenuPanierSchema>, MessageMajContenuPanier> =>\n Either\n .of<ValiError<typeof MessageMajContenuPanierSchema>, MessageMajContenuPanier>(\n parse(MessageMajContenuPanierSchema, evenementMessage.data),\n )\n .ifLeft(erreur => reporteErreur(erreur));\n\n// Correspondances\nexport const reponseEstCodeErreurWC = (reponse: ReponseSimplifiee, codeErreurWC: string): boolean =>\n eitherParse(reponse, WCErrorSchema)\n .map(v => v.body.code === codeErreurWC)\n .orDefault(false);\n"],"names":[],"mappings":";;;;;;;;;;;;;AAwBa,MAAA,6BAA6B,CAAC,SAA8C;AACjF,QAAA,QAAQ,IAAI,iBAAiB,uBAAuB;AAC1D,QAAM,YAAY;AAAA,IAChB,SAAS;AAAA,MACP,kBAAkB,KAAK;AAAA,IACzB;AAAA,IACA,MAAM,eAAe;AAAA,EAAA,CACI;AAC3B,QAAM,MAAM;AACd;AAEa,MAAA,8BAA8B,CAAC,SAA+C;AACnF,QAAA,QAAQ,IAAI,iBAAiB,wBAAwB;AAC3D,QAAM,YAAY;AAAA,IAChB,SAAS;AAAA,MACP,UAAU,KAAK;AAAA,MACf,iBAAiB,KAAK;AAAA,MACtB,aAAa,KAAK;AAAA,IACpB;AAAA,IACA,MAAM,eAAe;AAAA,EAAA,CACK;AAC5B,QAAM,MAAM;AACd;AAaa,MAAA,+BAA+B,CAC1C,qBAEA,OACG;AAAA,EACC,MAAM,8BAA8B,iBAAiB,IAAI;AAC3D,EACC,OAAO,CAAA,WAAU,cAAc,MAAM,CAAC;AAE9B,MAAA,gCAAgC,CAC3C,qBAEA,OACG;AAAA,EACC,MAAM,+BAA+B,iBAAiB,IAAI;AAC5D,EACC,OAAO,CAAA,WAAU,cAAc,MAAM,CAAC;AAGpC,MAAM,yBAAyB,CAAC,SAA4B,iBACjE,YAAY,SAAS,aAAa,EAC/B,IAAI,CAAA,MAAK,EAAE,KAAK,SAAS,YAAY,EACrC,UAAU,KAAK;"}

View file

@ -1,4 +1,4 @@
import { e as enum_, o as object, a as pipe, v as value, s as string, n as number, b as array } from "./index.DKC_Jv5v.js";
import { e as enum_, o as object, a as pipe, v as value, s as string, n as number, b as array } from "./index.DxUTT09Y.js";
import { T as TYPES_MESSAGES } from "./messages3.js";
import { a as WCStoreCartItemSchema } from "./cart.js";
import "./cart2.js";

View file

@ -1,4 +1,4 @@
import { o as object, a as pipe, b as array, s as string, e as enum_, f as union, c as optional, d as boolean, u as unknown, i as integer, n as number, g as null_ } from "./index.DKC_Jv5v.js";
import { o as object, a as pipe, b as array, s as string, e as enum_, f as union, c as optional, d as boolean, u as unknown, j as integer, n as number, g as null_ } from "./index.DxUTT09Y.js";
import { T as TAX_STATUSES, O as ORDER_STATUSES } from "./orders3.js";
import { W as WCStoreBillingAddressSchema, a as WCStoreShippingAddressSchema } from "./adresses.js";
const WCV3OrdersCouponLineMetaDataSchema = object({

View file

@ -1,4 +1,4 @@
import { o as object, c as optional, e as enum_, a as pipe, m as minValue, n as number, k as maxValue, b as array, s as string, d as boolean, f as union, u as unknown, i as integer, g as null_, h as url } from "./index.DKC_Jv5v.js";
import { o as object, c as optional, e as enum_, a as pipe, m as minValue, n as number, l as maxValue, b as array, s as string, d as boolean, f as union, u as unknown, j as integer, g as null_, h as url } from "./index.DxUTT09Y.js";
import { A as ATTRIBUTES_RELATIONS, C as CATALOG_VISIBILITIES, a as CATEGORY_OPERATORS, P as PRODUCTS_CONTEXTES, D as DATE_COLUMN_VALUES, O as ORDER_VALUES, b as ORDERBY_VALUES, R as RATINGS, c as PRODUCT_STATUTES, S as STOCK_STATUSES, T as TAG_OPERATORS, d as PRODUCT_TYPES, B as BACKORDERS_SETTINGS, e as TAX_STATUTES } from "./products2.js";
const WCV3ProductsArgsSchema = object({
// Date ISO8601

View file

@ -1,4 +1,4 @@
import { o as object, c as optional, e as enum_, a as pipe, m as minValue, n as number, k as maxValue, b as array, s as string, u as unknown, d as boolean, f as union, i as integer, g as null_ } from "./index.DKC_Jv5v.js";
import { o as object, c as optional, e as enum_, a as pipe, m as minValue, n as number, l as maxValue, b as array, s as string, u as unknown, d as boolean, f as union, j as integer, g as null_ } from "./index.DxUTT09Y.js";
import { A as ATTRIBUTES_RELATIONS, C as CATALOG_VISIBILITIES, a as CATEGORY_OPERATORS, P as PRODUCTS_CONTEXTES, D as DATE_COLUMN_VALUES, O as ORDER_VALUES, b as ORDERBY_VALUES, R as RATINGS, S as STOCK_STATUSES, T as TAG_OPERATORS, d as PRODUCT_TYPES } from "./products2.js";
object({
// Date ISO8601

View file

@ -1,8 +1,8 @@
import { z, N } from "./index.CeK6pfoJ.js";
import { p as parse } from "./index.DKC_Jv5v.js";
import { p as parse } from "./index.DxUTT09Y.js";
import { E as ENTETE_WC_NONCE } from "./api.js";
import { b as leveBadRequestError, c as leveUnauthorizedError, d as leveNotFoundError, E as ErreurInconnue, a as leveErreur } from "./erreurs.js";
import { e as estWCError } from "./erreurs2.js";
import { b as leveBadRequestError, c as leveUnauthorizedError, d as leveNotFoundError, E as ErreurInconnue, a as leveErreur } from "./erreurs2.js";
import { e as estWCError } from "./erreurs3.js";
import { p as pipe } from "./pipe.XPB0wEfw.js";
import "./exports.3IcOsN8u.js";
const getBackendAvecParametresUrl = (args) => fetch(

File diff suppressed because one or more lines are too long

View file

@ -4,16 +4,18 @@ import { r as recupereElementOuLeve } from "./dom2.js";
import { v as valideMessageMajBoutonPanier } from "./messages.js";
import { r as recupereElementDocumentEither } from "./utils.js";
import { p as pipe } from "./pipe.XPB0wEfw.js";
import "./erreurs.js";
import "./erreurs2.js";
import "./exports.3IcOsN8u.js";
import "./Either.wHNxn7Os.js";
import "./index.DKC_Jv5v.js";
import "./index.DxUTT09Y.js";
import "./erreurs3.js";
import "./messages2.js";
import "./cart.js";
import "./cart2.js";
import "./adresses.js";
import "./cart-coupons.js";
import "./couts-livraison.js";
import "./validation.js";
const initialiseBoutonPanier = () => {
const BOUTON_PANIER = pipe(
recupereElementDocumentEither(SELECTEUR_BOUTON_PANIER),

View file

@ -1 +1 @@
{"version":3,"file":"scripts-bouton-panier.js","sources":["../../src/scripts/scripts-bouton-panier.ts"],"sourcesContent":["/**\n * Scripts pour la mise à jour trans-fenêtres/trans-onglets du Bouton du Panier.\n */\n\nimport { pipe } from \"@mobily/ts-belt\";\n\nimport type { MessageMajBoutonPanier } from \"./lib/types/messages\";\n\nimport { ATTRIBUT_CONTIENT_ARTICLES, SELECTEUR_BOUTON_PANIER } from \"./constantes/dom.ts\";\nimport { NOM_CANAL_BOUTON_PANIER } from \"./constantes/messages.ts\";\nimport { recupereElementOuLeve } from \"./lib/dom.ts\";\nimport { valideMessageMajBoutonPanier } from \"./lib/messages.ts\";\nimport { recupereElementDocumentEither } from \"./lib/utils.ts\";\n\nconst initialiseBoutonPanier = (): void => {\n /** Le « Bouton » vers le Panier dont le texte est un indicateur du nombre de Produits dedans. */\n const BOUTON_PANIER: HTMLAnchorElement = pipe(\n recupereElementDocumentEither<HTMLAnchorElement>(SELECTEUR_BOUTON_PANIER),\n recupereElementOuLeve,\n );\n const CANAL_BOUTON_PANIER: BroadcastChannel = new BroadcastChannel(NOM_CANAL_BOUTON_PANIER);\n\n CANAL_BOUTON_PANIER.onmessage = (evenementMessage: MessageEvent<unknown>): void => {\n valideMessageMajBoutonPanier(evenementMessage)\n // Met à jour le Bouton du Panier\n .ifRight((message: MessageMajBoutonPanier) => {\n BOUTON_PANIER.textContent = `cart (${String(message.donnees.quantiteProduits)})`;\n BOUTON_PANIER.setAttribute(ATTRIBUT_CONTIENT_ARTICLES, String(message.donnees.quantiteProduits > 0));\n });\n };\n\n // Ferme le BroadcastChannel à la fermeture de la page\n document.addEventListener(\"visibilitychange\", (): void => {\n CANAL_BOUTON_PANIER.close();\n });\n};\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n initialiseBoutonPanier();\n});\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAcA,MAAM,yBAAyB,MAAY;AAEzC,QAAM,gBAAmC;AAAA,IACvC,8BAAiD,uBAAuB;AAAA,IACxE;AAAA,EACF;AACM,QAAA,sBAAwC,IAAI,iBAAiB,uBAAuB;AAEtE,sBAAA,YAAY,CAAC,qBAAkD;AACjF,iCAA6B,gBAAgB,EAE1C,QAAQ,CAAC,YAAoC;AAC5C,oBAAc,cAAc,SAAS,OAAO,QAAQ,QAAQ,gBAAgB,CAAC;AAC7E,oBAAc,aAAa,4BAA4B,OAAO,QAAQ,QAAQ,mBAAmB,CAAC,CAAC;AAAA,IAAA,CACpG;AAAA,EACL;AAGS,WAAA,iBAAiB,oBAAoB,MAAY;AACxD,wBAAoB,MAAM;AAAA,EAAA,CAC3B;AACH;AAEA,SAAS,iBAAiB,oBAAoB,MAAM;AAC3B,yBAAA;AACzB,CAAC;"}
{"version":3,"file":"scripts-bouton-panier.js","sources":["../../src/scripts/scripts-bouton-panier.ts"],"sourcesContent":["/**\n * Scripts pour la mise à jour trans-fenêtres/trans-onglets du Bouton du Panier.\n */\n\nimport { pipe } from \"@mobily/ts-belt\";\n\nimport type { MessageMajBoutonPanier } from \"./lib/types/messages\";\n\nimport { ATTRIBUT_CONTIENT_ARTICLES, SELECTEUR_BOUTON_PANIER } from \"./constantes/dom.ts\";\nimport { NOM_CANAL_BOUTON_PANIER } from \"./constantes/messages.ts\";\nimport { recupereElementOuLeve } from \"./lib/dom.ts\";\nimport { valideMessageMajBoutonPanier } from \"./lib/messages.ts\";\nimport { recupereElementDocumentEither } from \"./lib/utils.ts\";\n\nconst initialiseBoutonPanier = (): void => {\n /** Le « Bouton » vers le Panier dont le texte est un indicateur du nombre de Produits dedans. */\n const BOUTON_PANIER: HTMLAnchorElement = pipe(\n recupereElementDocumentEither<HTMLAnchorElement>(SELECTEUR_BOUTON_PANIER),\n recupereElementOuLeve,\n );\n const CANAL_BOUTON_PANIER: BroadcastChannel = new BroadcastChannel(NOM_CANAL_BOUTON_PANIER);\n\n CANAL_BOUTON_PANIER.onmessage = (evenementMessage: MessageEvent<unknown>): void => {\n valideMessageMajBoutonPanier(evenementMessage)\n // Met à jour le Bouton du Panier\n .ifRight((message: MessageMajBoutonPanier) => {\n BOUTON_PANIER.textContent = `cart (${String(message.donnees.quantiteProduits)})`;\n BOUTON_PANIER.setAttribute(ATTRIBUT_CONTIENT_ARTICLES, String(message.donnees.quantiteProduits > 0));\n });\n };\n\n // Ferme le BroadcastChannel à la fermeture de la page\n document.addEventListener(\"visibilitychange\", (): void => {\n CANAL_BOUTON_PANIER.close();\n });\n};\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n initialiseBoutonPanier();\n});\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAcA,MAAM,yBAAyB,MAAY;AAEzC,QAAM,gBAAmC;AAAA,IACvC,8BAAiD,uBAAuB;AAAA,IACxE;AAAA,EACF;AACM,QAAA,sBAAwC,IAAI,iBAAiB,uBAAuB;AAEtE,sBAAA,YAAY,CAAC,qBAAkD;AACjF,iCAA6B,gBAAgB,EAE1C,QAAQ,CAAC,YAAoC;AAC5C,oBAAc,cAAc,SAAS,OAAO,QAAQ,QAAQ,gBAAgB,CAAC;AAC7E,oBAAc,aAAa,4BAA4B,OAAO,QAAQ,QAAQ,mBAAmB,CAAC,CAAC;AAAA,IAAA,CACpG;AAAA,EACL;AAGS,WAAA,iBAAiB,oBAAoB,MAAY;AACxD,wBAAoB,MAAM;AAAA,EAAA,CAC3B;AACH;AAEA,SAAS,iBAAiB,oBAAoB,MAAM;AAC3B,yBAAA;AACzB,CAAC;"}

View file

@ -2,7 +2,7 @@ import { z } from "./index.CeK6pfoJ.js";
import { a as SELECTEUR_MENU_CATEGORIES_PRODUITS, b as SELECTEUR_ENTREE_MENU_CATEGORIES_PRODUITS } from "./dom.js";
import { a as recupereElementDansDocumentOuLeve, b as recupereElementsDansDocumentOuLeve } from "./utils.js";
import { R as Ra } from "./dom2.js";
import "./erreurs.js";
import "./erreurs2.js";
import "./exports.3IcOsN8u.js";
import "./pipe.XPB0wEfw.js";
import "./Either.wHNxn7Os.js";

View file

@ -1,10 +1,10 @@
var __defProp = Object.defineProperty;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
import { Z as SELECTEUR_BOUTON_MENU_MOBILE, _ as SELECTEUR_MENU_MOBILE, $ as ATTRIBUT_MENU_MOBILE_ACTIVE } from "./dom.js";
import { $ as SELECTEUR_BOUTON_MENU_MOBILE, a0 as SELECTEUR_MENU_MOBILE, a1 as ATTRIBUT_MENU_MOBILE_ACTIVE } from "./dom.js";
import { a as recupereElementDansDocumentOuLeve } from "./utils.js";
import "./dom2.js";
import "./erreurs.js";
import "./erreurs2.js";
import "./exports.3IcOsN8u.js";
import "./pipe.XPB0wEfw.js";
import "./Either.wHNxn7Os.js";

View file

@ -1,9 +1,9 @@
import { a0 as ATTRIBUT_ID_ENSEMBLE_EPINGLE_BOITE, a1 as ATTRIBUT_ENSEMBLE_EPINGLE_BOITE_ACTIF, a2 as CLASS_BOUTON_FERMETURE_BOITE_TEXTE, a3 as CLASS_EPINGLE, a4 as SELECTEUR_CONTENEUR_STORYTELLING_A_PROPOS, a5 as SELECTEUR_EPINGLE, a6 as SELECTEUR_BOITE_TEXTE } from "./dom.js";
import { a2 as ATTRIBUT_ID_ENSEMBLE_EPINGLE_BOITE, a3 as ATTRIBUT_ENSEMBLE_EPINGLE_BOITE_ACTIF, a4 as CLASS_BOUTON_FERMETURE_BOITE_TEXTE, a5 as CLASS_EPINGLE, a6 as SELECTEUR_CONTENEUR_STORYTELLING_A_PROPOS, a7 as SELECTEUR_EPINGLE, a8 as SELECTEUR_BOITE_TEXTE } from "./dom.js";
import { a as recupereElementDansDocumentOuLeve, b as recupereElementsDansDocumentOuLeve } from "./utils.js";
import { k as some, q as reduceU, w as nullable_to_opt, v as valFromOption, g as equal, x as concat, R as Ra } from "./dom2.js";
import { p as pipe } from "./pipe.XPB0wEfw.js";
import { _ as _1, i as is_extension, c as create, g as getExn, b as getWithDefault$1, d as isNone, a as isSome, f as flatMap$1, e as mapU, h as flatMapU, m as mapWithDefaultU } from "./belt_Option-91f3b350.cBye8bLJ.js";
import "./erreurs.js";
import "./erreurs2.js";
import "./exports.3IcOsN8u.js";
import "./Either.wHNxn7Os.js";
var t = create("Promise.JsError");

View file

@ -2,7 +2,7 @@ import { c as SELECTEUR_CONTENEUR_STORYTELLING, d as SELECTEUR_IMAGES_STORYTELLI
import { e as estEntreDeuxNombres } from "./nombres.js";
import { a as recupereElementDansDocumentOuLeve, b as recupereElementsDansDocumentOuLeve } from "./utils.js";
import "./dom2.js";
import "./erreurs.js";
import "./erreurs2.js";
import "./exports.3IcOsN8u.js";
import "./pipe.XPB0wEfw.js";
import "./Either.wHNxn7Os.js";

View file

@ -1,9 +1,9 @@
import { z, N } from "./index.CeK6pfoJ.js";
import { p as parse } from "./index.DKC_Jv5v.js";
import { p as parse } from "./index.DxUTT09Y.js";
import { R as ROUTE_API_NOUVELLE_PRODUCTS } from "./api.js";
import { g as SELECTEUR_BOUTON_PLUS_PRODUITS, h as SELECTEUR_GRILLE_PRODUITS, i as ATTRIBUT_ID_CATEGORIE_PRODUITS, j as ATTRIBUT_PAGE, k as ATTRIBUT_HIDDEN } from "./dom.js";
import { h as html } from "./dom2.js";
import { l as leveServerError } from "./erreurs.js";
import { l as leveServerError } from "./erreurs2.js";
import { e as estReponse500 } from "./gardes.js";
import { g as getBackendAvecParametresUrl, t as traiteReponseBackendWCSelonCodesHTTP } from "./reseau.js";
import { W as WCV3ProductsArgsSchema, a as WCV3ProductsSchema } from "./products.js";
@ -13,7 +13,7 @@ import { p as pipe } from "./pipe.XPB0wEfw.js";
import { t as tap } from "./index-0eef19ec.DoJSf22Z.js";
import { E as Either } from "./Either.wHNxn7Os.js";
import "./exports.3IcOsN8u.js";
import "./erreurs2.js";
import "./erreurs3.js";
import "./products2.js";
import "./belt_Option-91f3b350.cBye8bLJ.js";
const ETATS_PAGE = _etats;

View file

@ -1,10 +1,13 @@
import { z, N } from "./index.CeK6pfoJ.js";
import { V as ValiError } from "./index.DKC_Jv5v.js";
import { V as ValiError } from "./index.DxUTT09Y.js";
import { e as ROUTE_API_APPLIQUE_COUPON, f as ROUTE_API_RETIRE_COUPON } from "./api.js";
import { B as SELECTEUR_BOUTON_CODE_PROMO, z as SELECTEUR_CHAMP_CODE_PROMO, y as SELECTEUR_ENSEMBLE_CODE_PROMO, q as SELECTEUR_TOTAL_PANIER, v as SELECTEUR_TOTAL_REDUCTION, w as SELECTEUR_TOTAL_REDUCTION_VALEUR, I as ATTRIBUT_DESACTIVE, J as ATTRIBUT_CODE_PROMO_PRESENT, k as ATTRIBUT_HIDDEN } from "./dom.js";
import { E as SELECTEUR_BOUTON_CODE_PROMO, F as SELECTEUR_CHAMP_CODE_PROMO, G as SELECTEUR_ENSEMBLE_CODE_PROMO, H as SELECTEUR_MESSAGE_CODE_PROMO, q as SELECTEUR_TOTAL_PANIER, I as SELECTEUR_TOTAL_REDUCTION, J as SELECTEUR_TOTAL_REDUCTION_VALEUR, D as ATTRIBUT_DESACTIVE, K as ATTRIBUT_CHARGEMENT, L as ATTRIBUT_CODE_PROMO_PRESENT, k as ATTRIBUT_HIDDEN } from "./dom.js";
import { E as ERREUR_CODE_PROMO_INVALIDE } from "./erreurs.js";
import { d as correspondCibleSelecteur, i as identity } from "./dom2.js";
import { S as ServerError } from "./erreurs.js";
import { S as ServerError } from "./erreurs2.js";
import { E as ErreurCodePromoInvalide } from "./codes-promo.js";
import { e as estReponse500 } from "./gardes.js";
import { r as reponseEstCodeErreurWC } from "./messages.js";
import { p as postBackend } from "./reseau.js";
import { W as WCStoreCartSchema } from "./cart.js";
import { W as WCStoreCartApplyCouponArgsSchema } from "./cart-apply-coupon.js";
@ -15,7 +18,9 @@ import { E as EitherAsync } from "./MaybeAsync.AE1jnxuc.js";
import { p as pipe } from "./pipe.XPB0wEfw.js";
import { M as Maybe } from "./Either.wHNxn7Os.js";
import "./exports.3IcOsN8u.js";
import "./erreurs2.js";
import "./messages3.js";
import "./erreurs3.js";
import "./messages2.js";
import "./cart2.js";
import "./adresses.js";
import "./cart-coupons.js";
@ -25,26 +30,51 @@ const ELEMENTS = {
BOUTON_CODE_PROMO: recupereElementDansDocumentOuLeve(SELECTEUR_BOUTON_CODE_PROMO),
CHAMP_CODE_PROMO: recupereElementDansDocumentOuLeve(SELECTEUR_CHAMP_CODE_PROMO),
ENSEMBLE_CODE_PROMO: recupereElementDansDocumentOuLeve(SELECTEUR_ENSEMBLE_CODE_PROMO),
MESSAGE_CODE_PROMO: recupereElementDansDocumentOuLeve(SELECTEUR_MESSAGE_CODE_PROMO),
TOTAL_PANIER: recupereElementDansDocumentOuLeve(SELECTEUR_TOTAL_PANIER),
TOTAL_REDUCTION_LIGNE: recupereElementDansDocumentOuLeve(SELECTEUR_TOTAL_REDUCTION),
TOTAL_REDUCTION_VALEUR: recupereElementDansDocumentOuLeve(SELECTEUR_TOTAL_REDUCTION_VALEUR)
};
const initialiseElementsCodePromo = () => {
const recupereCodePromoValeur = () => Maybe.fromFalsy(ELEMENTS.CHAMP_CODE_PROMO.value.trim()).extractNullable();
const recupereCodePromoPresent = () => ELEMENTS.ENSEMBLE_CODE_PROMO.hasAttribute(ATTRIBUT_CODE_PROMO_PRESENT);
ELEMENTS.ENSEMBLE_CODE_PROMO.addEventListener(
"click",
(evenement) => z({
const recupereValeurCodePromo = () => Maybe.fromFalsy(ELEMENTS.CHAMP_CODE_PROMO.value.trim()).extractNullable();
const recuperePresenceCodePromo = () => ELEMENTS.ENSEMBLE_CODE_PROMO.hasAttribute(ATTRIBUT_CODE_PROMO_PRESENT);
ELEMENTS.ENSEMBLE_CODE_PROMO.addEventListener("click", (evenement) => z({
cible: evenement.target,
codePromoPresent: recupereCodePromoPresent(),
codePromoValeur: recupereCodePromoValeur()
codePromoPresent: recuperePresenceCodePromo(),
valeurCodePromo: recupereValeurCodePromo()
}).with(
{
cible: N.when((cible) => correspondCibleSelecteur(cible, SELECTEUR_BOUTON_CODE_PROMO)),
cible: N.when(
(cible) => correspondCibleSelecteur(cible, SELECTEUR_BOUTON_CODE_PROMO)
),
codePromoPresent: false,
codePromoValeur: N.string
valeurCodePromo: N.string
},
({ codePromoValeur }) => void EitherAsync.liftEither(eitherParse({ code: codePromoValeur }, WCStoreCartApplyCouponArgsSchema)).map(
({ valeurCodePromo }) => void EitherAsync.liftEither(eitherParse({ code: valeurCodePromo }, WCStoreCartApplyCouponArgsSchema)).ifRight(() => {
ELEMENTS.BOUTON_CODE_PROMO.setAttribute(ATTRIBUT_DESACTIVE, "");
ELEMENTS.BOUTON_CODE_PROMO.setAttribute(ATTRIBUT_CHARGEMENT, "");
ELEMENTS.MESSAGE_CODE_PROMO.textContent = "";
const animation = {
callback: () => {
if (!ELEMENTS.BOUTON_CODE_PROMO.hasAttribute(ATTRIBUT_CHARGEMENT)) {
clearInterval(animation.interval);
return;
}
ELEMENTS.BOUTON_CODE_PROMO.textContent = animation.etapes.at(animation.index) ?? "Loading...";
animation.index = animation.index + 1 > animation.etapes.length - 1 ? 0 : animation.index + 1;
},
etapes: [
"Loading",
"Loading.",
"Loading..",
"Loading..."
],
index: 0,
interval: 0
};
animation.callback();
animation.interval = setInterval(animation.callback, 500);
}).map(
(args) => postBackend({
corps: JSON.stringify(args),
nonce: ETATS_PAGE.nonce,
@ -53,28 +83,65 @@ const initialiseElementsCodePromo = () => {
).chain(
(reponse) => EitherAsync(async ({ throwE }) => {
if (estReponse500(reponse)) throwE(new ServerError("500 Server Error"));
return await reponse.json();
const reponseSimplifiee = {
body: await reponse.json(),
status: reponse.status
};
return z(reponseSimplifiee).with({
body: N.when(() => reponseEstCodeErreurWC(reponseSimplifiee, ERREUR_CODE_PROMO_INVALIDE)),
status: 400
}, () => throwE(new ErreurCodePromoInvalide(recupereValeurCodePromo() ?? ""))).with({ status: 200 }, () => reponseSimplifiee.body).run();
})
).chain((corpsReponse) => EitherAsync.liftEither(eitherParse(corpsReponse, WCStoreCartSchema))).ifRight((panier) => {
const totalReduction = pipe(Number(panier.totals.total_discount) / 100, String, (v) => `-${v}`);
const totalPanier = pipe(Number(panier.totals.total_price) / 100, String, (v) => `${v}`);
ELEMENTS.BOUTON_CODE_PROMO.textContent = "Remove";
ELEMENTS.ENSEMBLE_CODE_PROMO.toggleAttribute(ATTRIBUT_CODE_PROMO_PRESENT);
ELEMENTS.CHAMP_CODE_PROMO.toggleAttribute(ATTRIBUT_DESACTIVE);
ELEMENTS.CHAMP_CODE_PROMO.value = panier.coupons[0]?.code ?? "";
ELEMENTS.ENSEMBLE_CODE_PROMO.toggleAttribute(ATTRIBUT_CODE_PROMO_PRESENT);
ELEMENTS.BOUTON_CODE_PROMO.textContent = "Remove";
ELEMENTS.TOTAL_PANIER.textContent = totalPanier;
ELEMENTS.TOTAL_REDUCTION_LIGNE.toggleAttribute(ATTRIBUT_HIDDEN);
ELEMENTS.TOTAL_REDUCTION_VALEUR.textContent = totalReduction;
}).ifLeft(
(erreur) => z(erreur).with(N.instanceOf(ValiError), (e) => console.error("retour ajout code promo", e.issues)).with(N.instanceOf(ServerError), (e) => console.error("retour ajout code promo", e)).with(N.instanceOf(TypeError), (e) => console.error("retour ajout code promo", e)).exhaustive()
).run()
}).ifLeft((erreur) => {
ELEMENTS.BOUTON_CODE_PROMO.textContent = "Apply";
z(erreur).with(N.instanceOf(ValiError), (e) => console.error("ValiError", e.issues)).with(N.instanceOf(ErreurCodePromoInvalide), (e) => {
ELEMENTS.MESSAGE_CODE_PROMO.textContent = "This promo code does not exist.";
console.error(e);
}).with(N.instanceOf(ServerError), (e) => console.error(e)).with(N.instanceOf(TypeError), (e) => console.error(e)).exhaustive();
}).finally(() => {
ELEMENTS.BOUTON_CODE_PROMO.removeAttribute(ATTRIBUT_CHARGEMENT);
ELEMENTS.BOUTON_CODE_PROMO.removeAttribute(ATTRIBUT_DESACTIVE);
}).run()
).with(
{
cible: N.when((cible) => correspondCibleSelecteur(cible, SELECTEUR_BOUTON_CODE_PROMO)),
codePromoPresent: true,
codePromoValeur: N.string
valeurCodePromo: N.string
},
({ codePromoValeur }) => void EitherAsync.liftEither(eitherParse({ code: codePromoValeur }, WCStoreCartRemoveCouponArgsSchema)).map(
({ valeurCodePromo }) => void EitherAsync.liftEither(eitherParse({ code: valeurCodePromo }, WCStoreCartRemoveCouponArgsSchema)).ifRight(() => {
ELEMENTS.BOUTON_CODE_PROMO.setAttribute(ATTRIBUT_DESACTIVE, "");
ELEMENTS.BOUTON_CODE_PROMO.setAttribute(ATTRIBUT_CHARGEMENT, "");
const animation = {
callback: () => {
if (!ELEMENTS.BOUTON_CODE_PROMO.hasAttribute(ATTRIBUT_CHARGEMENT)) {
clearInterval(animation.interval);
return;
}
ELEMENTS.BOUTON_CODE_PROMO.textContent = animation.etapes.at(animation.index) ?? "Loading...";
animation.index = animation.index + 1 > animation.etapes.length - 1 ? 0 : animation.index + 1;
},
etapes: [
"Loading",
"Loading.",
"Loading..",
"Loading..."
],
index: 0,
interval: 0
};
animation.callback();
animation.interval = setInterval(animation.callback, 500);
}).map(
(args) => postBackend({
corps: JSON.stringify(args),
nonce: ETATS_PAGE.nonce,
@ -87,18 +154,21 @@ const initialiseElementsCodePromo = () => {
})
).chain((corpsReponse) => EitherAsync.liftEither(eitherParse(corpsReponse, WCStoreCartSchema))).ifRight((panier) => {
const totalPanier = pipe(Number(panier.totals.total_price) / 100, String, (v) => `${v}`);
ELEMENTS.BOUTON_CODE_PROMO.textContent = "Apply";
ELEMENTS.CHAMP_CODE_PROMO.toggleAttribute(ATTRIBUT_DESACTIVE);
ELEMENTS.CHAMP_CODE_PROMO.value = "";
ELEMENTS.ENSEMBLE_CODE_PROMO.toggleAttribute(ATTRIBUT_CODE_PROMO_PRESENT);
ELEMENTS.ENSEMBLE_CODE_PROMO.reset();
ELEMENTS.CHAMP_CODE_PROMO.toggleAttribute(ATTRIBUT_DESACTIVE);
ELEMENTS.CHAMP_CODE_PROMO.textContent = "";
ELEMENTS.BOUTON_CODE_PROMO.textContent = "Apply";
ELEMENTS.TOTAL_PANIER.textContent = totalPanier;
ELEMENTS.TOTAL_REDUCTION_LIGNE.toggleAttribute(ATTRIBUT_HIDDEN);
ELEMENTS.TOTAL_REDUCTION_VALEUR.textContent = "-0€";
}).ifLeft(
(erreur) => z(erreur).with(N.instanceOf(ValiError), (e) => console.error("retour ajout code promo", e.issues)).with(N.instanceOf(ServerError), (e) => console.error("retour ajout code promo", e)).with(N.instanceOf(TypeError), (e) => console.error("retour ajout code promo", e)).exhaustive()
).run()
).with(N._, identity)
);
).finally(() => {
ELEMENTS.BOUTON_CODE_PROMO.removeAttribute(ATTRIBUT_CHARGEMENT);
ELEMENTS.BOUTON_CODE_PROMO.removeAttribute(ATTRIBUT_DESACTIVE);
}).run()
).with(N._, identity));
};
export {
initialiseElementsCodePromo as i

File diff suppressed because one or more lines are too long

View file

@ -1,10 +1,10 @@
import { z } from "./index.CeK6pfoJ.js";
import { p as parse, V as ValiError } from "./index.DKC_Jv5v.js";
import { p as parse, V as ValiError } from "./index.DxUTT09Y.js";
import { a as ROUTE_API_RETIRE_ARTICLE_PANIER, b as ROUTE_API_MAJ_ARTICLE_PANIER, c as ROUTE_API_MAJ_CLIENT, d as ROUTE_API_NOUVELLE_COMMANDES } from "./api.js";
import { l as SELECTEUR_ENTREES_PANIER, m as SELECTEUR_CONTENEUR_PANIER, n as SELECTEUR_SOUS_TOTAL_PRODUITS, o as SELECTEUR_SOUS_TOTAL_LIVRAISON_COUT, p as SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE, q as SELECTEUR_TOTAL_PANIER, r as SELECTEUR_BOUTON_SEPARATION_ADRESSES, s as SELECTEUR_FORMULAIRE_PANIER, t as SELECTEUR_FORMULAIRE_FACTURATION, u as SELECTEUR_BOUTON_ACTIONS_FORMULAIRE, v as SELECTEUR_TOTAL_REDUCTION, w as SELECTEUR_TOTAL_REDUCTION_VALEUR, x as SELECTEUR_INSTRUCTIONS_CLIENT, y as SELECTEUR_ENSEMBLE_CODE_PROMO, z as SELECTEUR_CHAMP_CODE_PROMO, B as SELECTEUR_BOUTON_CODE_PROMO, C as ATTRIBUT_CLE_PANIER, D as SELECTEUR_BOUTON_SOUSTRACTION_QUANTITE, E as SELECTEUR_CHAMP_QUANTITE_LIGNE_PANIER, F as SELECTEUR_BOUTON_ADDITION_QUANTITE, G as SELECTEUR_BOUTON_SUPPRESSION_PANIER, A as ATTRIBUT_CONTIENT_ARTICLES, H as SELECTEUR_PRIX_LIGNE_PANIER, k as ATTRIBUT_HIDDEN, I as ATTRIBUT_DESACTIVE } from "./dom.js";
import { l as SELECTEUR_ENTREES_PANIER, m as SELECTEUR_CONTENEUR_PANIER, n as SELECTEUR_SOUS_TOTAL_PRODUITS, o as SELECTEUR_SOUS_TOTAL_LIVRAISON_COUT, p as SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE, q as SELECTEUR_TOTAL_PANIER, r as SELECTEUR_BOUTON_SEPARATION_ADRESSES, s as SELECTEUR_FORMULAIRE_PANIER, t as SELECTEUR_FORMULAIRE_FACTURATION, u as SELECTEUR_BOUTON_ACTIONS_FORMULAIRE, v as SELECTEUR_INSTRUCTIONS_CLIENT, w as ATTRIBUT_CLE_PANIER, x as SELECTEUR_BOUTON_SOUSTRACTION_QUANTITE, y as SELECTEUR_CHAMP_QUANTITE_LIGNE_PANIER, z as SELECTEUR_BOUTON_ADDITION_QUANTITE, B as SELECTEUR_BOUTON_SUPPRESSION_PANIER, A as ATTRIBUT_CONTIENT_ARTICLES, C as SELECTEUR_PRIX_LIGNE_PANIER, k as ATTRIBUT_HIDDEN, D as ATTRIBUT_DESACTIVE } from "./dom.js";
import { N as NOM_CANAL_BOUTON_PANIER, a as NOM_CANAL_CONTENU_PANIER } from "./messages3.js";
import { r as recupereElementOuLeve, a as recupereElementsAvecSelecteur, e as eitherSessionStorageGet, b as eitherJsonParse, c as recupereElementAvecSelecteur } from "./dom2.js";
import { l as leveServerError, r as reporteErreur, a as leveErreur } from "./erreurs.js";
import { l as leveServerError, r as reporteErreur, a as leveErreur } from "./erreurs2.js";
import { e as estReponse500, a as estError } from "./gardes.js";
import { e as emetMessageMajBoutonPanier, a as emetMessageMajContenuPanier, v as valideMessageMajBoutonPanier, b as valideMessageMajContenuPanier } from "./messages.js";
import { p as postBackend, t as traiteReponseBackendWCSelonCodesHTTP } from "./reseau.js";
@ -21,12 +21,14 @@ import { p as pipe } from "./pipe.XPB0wEfw.js";
import { l } from "./index-0eef19ec.DoJSf22Z.js";
import { M as Maybe, E as Either } from "./Either.wHNxn7Os.js";
import "./exports.3IcOsN8u.js";
import "./erreurs3.js";
import "./messages2.js";
import "./erreurs2.js";
import "./adresses.js";
import "./cart2.js";
import "./cart-coupons.js";
import "./orders3.js";
import "./erreurs.js";
import "./codes-promo.js";
import "./cart-apply-coupon.js";
import "./cart-remove-coupon.js";
import "./MaybeAsync.AE1jnxuc.js";
@ -51,10 +53,6 @@ const SOUS_TOTAL_LIVRAISON_PRESTATAIRE = pipe(
recupereElementDocumentEither(SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE),
recupereElementOuLeve
);
recupereElementDansDocumentOuLeve(SELECTEUR_TOTAL_REDUCTION);
recupereElementDansDocumentOuLeve(
SELECTEUR_TOTAL_REDUCTION_VALEUR
);
const INSTRUCTIONS_CLIENT = recupereElementDansDocumentOuLeve(
SELECTEUR_INSTRUCTIONS_CLIENT
);
@ -66,15 +64,6 @@ const BOUTON_SEPARATION_ADRESSES = pipe(
recupereElementDocumentEither(SELECTEUR_BOUTON_SEPARATION_ADRESSES),
recupereElementOuLeve
);
recupereElementDansDocumentOuLeve(
SELECTEUR_ENSEMBLE_CODE_PROMO
);
recupereElementDansDocumentOuLeve(
SELECTEUR_CHAMP_CODE_PROMO
);
recupereElementDansDocumentOuLeve(
SELECTEUR_BOUTON_CODE_PROMO
);
const FORMULAIRE_PANIER = pipe(
recupereElementDocumentEither(SELECTEUR_FORMULAIRE_PANIER),
recupereElementOuLeve
@ -149,8 +138,8 @@ const initialiseMajEntreesPanier = () => {
emetMessageMajBoutonPanier({ quantiteProduits: panier.items_count });
emetMessageMajContenuPanier({
produits: panier.items,
sousTotalPanier: Number(panier.totals.total_price) / 100,
totalPanier: Number(panier.totals.total_items) / 100
sousTotalPanier: Number(panier.totals.total_items) / 100,
totalPanier: Number(panier.totals.total_price) / 100
});
entree.remove();
})
@ -189,8 +178,8 @@ const initialiseMajEntreesPanier = () => {
emetMessageMajBoutonPanier({ quantiteProduits: panier.items_count });
emetMessageMajContenuPanier({
produits: panier.items,
sousTotalPanier: Number(panier.totals.total_price) / 100,
totalPanier: Number(panier.totals.total_items) / 100
sousTotalPanier: Number(panier.totals.total_items) / 100,
totalPanier: Number(panier.totals.total_price) / 100
});
})
);
@ -229,8 +218,8 @@ const initialiseMajEntreesPanier = () => {
emetMessageMajBoutonPanier({ quantiteProduits: panier.items_count });
emetMessageMajContenuPanier({
produits: panier.items,
sousTotalPanier: Number(panier.totals.total_price) / 100,
totalPanier: Number(panier.totals.total_items) / 100
sousTotalPanier: Number(panier.totals.total_items) / 100,
totalPanier: Number(panier.totals.total_price) / 100
});
})
);
@ -260,8 +249,7 @@ const initialiseMajContenuPanier = () => {
valideMessageMajContenuPanier(message).chain(propEither("donnees")).ifRight((donnees) => {
donnees.produits.forEach((ligne) => {
ENTREES_PANIER_EITHER.ifRight((entrees) => {
Maybe.fromNullable(entrees.find((entree) => entree.getAttribute(ATTRIBUT_CLE_PANIER) === ligne.key)).ifJust(
(entree) => {
Maybe.fromNullable(entrees.find((entree) => entree.getAttribute(ATTRIBUT_CLE_PANIER) === ligne.key)).ifJust((entree) => {
const recupereElementDansEntree = recupereElementDansEntreePanierOuLeve(entree);
const prixLigne = recupereElementDansEntree(SELECTEUR_PRIX_LIGNE_PANIER);
const champQuantite = recupereElementDansEntree(
@ -271,9 +259,8 @@ const initialiseMajContenuPanier = () => {
prixLigne.textContent = `${String(Number(ligne.totals.line_subtotal) / 100)}`;
champQuantite.setAttribute("value", String(ligne.quantity));
majEtatsActivationBoutons(entrees);
}
);
SOUS_TOTAL_PRODUITS.textContent = `${String(donnees.totalPanier)}`;
});
SOUS_TOTAL_PRODUITS.textContent = `${String(donnees.sousTotalPanier)}`;
TOTAL_PANIER.textContent = `${String(donnees.totalPanier)}`;
});
});

File diff suppressed because one or more lines are too long

View file

@ -1,23 +1,23 @@
import { z } from "./index.CeK6pfoJ.js";
import { g as ROUTE_API_AJOUTE_ARTICLE_PANIER, E as ENTETE_WC_NONCE } from "./api.js";
import { K as SELECTEUR_BOUTON_AJOUT_PANIER, L as SELECTEUR_SELECTEUR_QUANTITE, M as SELECTEUR_LIENS_ONGLETS, N as SELECTEUR_SECTIONS_CONTENUS, O as SELECTEUR_PRIX_PRODUIT, P as SELECTEUR_CONTENEUR_FLECHES_DEFILEMENT, Q as SELECTEUR_FLECHE_DEFILEMENT_GAUCHE, R as SELECTEUR_FLECHE_DEFILEMENT_DROITE, T as SELECTEUR_PHOTOS_PRODUIT, U as SELECTEUR_IMAGE_COLONNE_GAUCHE, V as SELECTEUR_IMAGES_COLONNE_DROITE, W as ATTRIBUT_INDEX_IMAGE_ACTIVE, X as ATTRIBUT_ARIA_SELECTED, k as ATTRIBUT_HIDDEN, I as ATTRIBUT_DESACTIVE, Y as ATTRIBUT_PRIX } from "./dom.js";
import { M as SELECTEUR_BOUTON_AJOUT_PANIER, N as SELECTEUR_SELECTEUR_QUANTITE, O as SELECTEUR_LIENS_ONGLETS, P as SELECTEUR_SECTIONS_CONTENUS, Q as SELECTEUR_PRIX_PRODUIT, R as SELECTEUR_CONTENEUR_FLECHES_DEFILEMENT, T as SELECTEUR_FLECHE_DEFILEMENT_GAUCHE, U as SELECTEUR_FLECHE_DEFILEMENT_DROITE, V as SELECTEUR_PHOTOS_PRODUIT, W as SELECTEUR_IMAGE_COLONNE_GAUCHE, X as SELECTEUR_IMAGES_COLONNE_DROITE, Y as ATTRIBUT_INDEX_IMAGE_ACTIVE, Z as ATTRIBUT_ARIA_SELECTED, k as ATTRIBUT_HIDDEN, D as ATTRIBUT_DESACTIVE, _ as ATTRIBUT_PRIX } from "./dom.js";
import { r as recupereElementOuLeve, f as recupereElementsOuLeve, R as Ra } from "./dom2.js";
import { l as leveServerError, r as reporteErreur } from "./erreurs.js";
import { l as leveServerError, r as reporteErreur } from "./erreurs2.js";
import { b as estHTMLSelectElement, e as estReponse500, a as estError } from "./gardes.js";
import { e as emetMessageMajBoutonPanier } from "./messages.js";
import { t as traiteReponseBackendWCSelonCodesHTTP } from "./reseau.js";
import { W as WCStoreCartSchema } from "./cart.js";
import { W as WCStoreCartAddItemArgsSchema } from "./cart-add-item.js";
import { W as WCStoreCartSchema } from "./cart.js";
import { r as recupereElementDocumentEither, a as recupereElementDansDocumentOuLeve, c as recupereElementsDocumentEither, b as recupereElementsDansDocumentOuLeve, y } from "./utils.js";
import { e as eitherParse } from "./validation.js";
import { p as pipe } from "./pipe.XPB0wEfw.js";
import { l } from "./index-0eef19ec.DoJSf22Z.js";
import { M as Maybe } from "./Either.wHNxn7Os.js";
import "./exports.3IcOsN8u.js";
import "./index.DKC_Jv5v.js";
import "./index.DxUTT09Y.js";
import "./messages3.js";
import "./erreurs3.js";
import "./messages2.js";
import "./erreurs2.js";
import "./cart2.js";
import "./adresses.js";
import "./cart-coupons.js";

File diff suppressed because one or more lines are too long

View file

@ -1,5 +1,5 @@
import { l as values, m as fromArray, g as equal, n as get$1, u as unsafeDeleteKey, o as forEachU, p as mapU, q as reduceU, t as append, a as recupereElementsAvecSelecteur, c as recupereElementAvecSelecteur, r as recupereElementOuLeve, f as recupereElementsOuLeve } from "./dom2.js";
import { C as CleNonTrouveError } from "./erreurs.js";
import { C as CleNonTrouveError } from "./erreurs2.js";
import { p as pipe } from "./pipe.XPB0wEfw.js";
import { M as Maybe } from "./Either.wHNxn7Os.js";
import "./exports.3IcOsN8u.js";

View file

@ -1,4 +1,4 @@
import { p as parse } from "./index.DKC_Jv5v.js";
import { p as parse } from "./index.DxUTT09Y.js";
import { E as Either } from "./Either.wHNxn7Os.js";
const eitherParse = (valeur, schema) => Either.encase(() => parse(schema, valeur));
export {

View file

@ -145,19 +145,29 @@
&__code-promo {
display: flex;
flex-flow: row nowrap;
flex-flow: row wrap;
width: fit-content;
place-content: center;
margin: auto;
input {
width: 20rem;
}
/*
* 1. Longueur minimale pour le Bouton n'ait pas à changer de taille quel que soit son texte
*/
button {
padding: var(--espace-xs) var(--espace-xl);
text-transform: lowercase;
border: 1px solid var(--couleur-noir);
border-left: initial;
min-width: 9rem; /* 1 */
}
&__message {
margin-top: var(--espace-m);
flex-basis: 100%;
}
}
}

View file

@ -4,18 +4,19 @@ export const ATTRIBUT_ARIA_HIDDEN = "aria-hidden";
export const ATTRIBUT_ARIA_SELECTED = "aria-selected";
export const ATTRIBUT_CACHE = "data-cache";
export const ATTRIBUT_CLE_PANIER = "data-cle-panier";
export const ATTRIBUT_CODE_PROMO_PRESENT = "data-code-promo-present";
export const ATTRIBUT_CONTIENT_ARTICLES = "data-contient-articles";
export const ATTRIBUT_DESACTIVE = "disabled";
export const ATTRIBUT_ENSEMBLE_EPINGLE_BOITE_ACTIF = "data-ensemble-epingle-boite-actif";
export const ATTRIBUT_HIDDEN = "hidden";
export const ATTRIBUT_INDEX = "data-index";
export const ATTRIBUT_MENU_MOBILE_ACTIVE = "data-menu-mobile-active";
export const ATTRIBUT_PAGE = "data-page";
export const ATTRIBUT_ID_CATEGORIE_PRODUITS = "data-id-categorie-produits";
export const ATTRIBUT_ID_ENSEMBLE_EPINGLE_BOITE = "data-id-ensemble-epingle-boite";
export const ATTRIBUT_ENSEMBLE_EPINGLE_BOITE_ACTIF = "data-ensemble-epingle-boite-actif";
export const ATTRIBUT_INDEX = "data-index";
export const ATTRIBUT_INDEX_IMAGE_ACTIVE = "data-index-image-active";
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_CODE_PROMO_PRESENT = "data-code-promo-present";
export const ATTRIBUT_CHARGEMENT = "data-chargement";
// En-tête
export const SELECTEUR_BOUTON_MENU_MOBILE = "#bouton-menu-mobile";
@ -55,6 +56,7 @@ export const SELECTEUR_INSTRUCTIONS_CLIENT = "#panneau-panier #instructions-clie
export const SELECTEUR_ENSEMBLE_CODE_PROMO = "#panneau-panier #ensemble-code-promo";
export const SELECTEUR_CHAMP_CODE_PROMO = "#panneau-panier #champ-code-promo";
export const SELECTEUR_BOUTON_CODE_PROMO = "#panneau-panier #bouton-code-promo";
export const SELECTEUR_MESSAGE_CODE_PROMO = "#panneau-panier .panneau__instructions-code-promo__code-promo__message";
// Accueil
export const SELECTEUR_CONTENEUR_STORYTELLING = ".storytelling";

View file

@ -0,0 +1 @@
export const ERREUR_CODE_PROMO_INVALIDE = "woocommerce_rest_cart_coupon_error";

View file

@ -0,0 +1,8 @@
/** Types d'Erreurs liés aux codes promos */
export class ErreurCodePromoInvalide extends Error {
constructor(message: string) {
super(`Code promo « ${message} » invalide.`);
this.name = "ErreurCodePromoInvalide";
}
}

View file

@ -1,3 +1,4 @@
import { pipe } from "@mobily/ts-belt";
import { Either } from "purify-ts";
import { parse, type ValiError } from "valibot";
@ -10,7 +11,15 @@ import type {
import { NOM_CANAL_BOUTON_PANIER, NOM_CANAL_CONTENU_PANIER, TYPES_MESSAGES } from "../constantes/messages.ts";
import { reporteErreur } from "./erreurs.ts";
import { WCErrorSchema } from "./schemas/api/erreurs.ts";
import { MessageMajBoutonPanierSchema, MessageMajContenuPanierSchema } from "./schemas/messages.ts";
import { ReponseSimplifiee } from "./types/reseau";
import { eitherParse } from "./validation.ts";
export const canalPostMessage = (canal: BroadcastChannel, message: any): BroadcastChannel => {
canal.postMessage(message);
return canal;
};
// Émissions
export const emetMessageMajBoutonPanier = (args: MessageMajBoutonPanierDonnees): void => {
@ -37,6 +46,16 @@ export const emetMessageMajContenuPanier = (args: MessageMajContenuPanierDonnees
canal.close();
};
/**
* Émet un unique message vers un BroadcastChannel (canal) généré sur le moment puis le ferme.
*
* @param nomCanal Le nom du BroadcastChannel pour lequel le message est émis.
* @param message Le message émis.
* @return void
*/
export const emetUniqueMessageCanal = <M>(nomCanal: string, message: M): void =>
pipe(new BroadcastChannel(nomCanal), canal => canalPostMessage(canal, message), canal => canal.close());
// Validations
export const valideMessageMajBoutonPanier = (
evenementMessage: MessageEvent<unknown>,
@ -55,3 +74,9 @@ export const valideMessageMajContenuPanier = (
parse(MessageMajContenuPanierSchema, evenementMessage.data),
)
.ifLeft(erreur => reporteErreur(erreur));
// Correspondances
export const reponseEstCodeErreurWC = (reponse: ReponseSimplifiee, codeErreurWC: string): boolean =>
eitherParse(reponse, WCErrorSchema)
.map(v => v.body.code === codeErreurWC)
.orDefault(false);

View file

@ -0,0 +1,4 @@
export interface ReponseSimplifiee {
body: unknown;
status: number;
}

View file

@ -10,22 +10,28 @@ import { ValiError } from "valibot";
import type { WCStoreCart } from "./lib/types/api/cart";
import type { WCStoreCartApplyCouponArgs } from "./lib/types/api/cart-apply-coupon";
import type { WCStoreCartRemoveCouponArgs } from "./lib/types/api/cart-remove-coupon";
import type { ReponseSimplifiee } from "./lib/types/reseau";
import { ROUTE_API_APPLIQUE_COUPON, ROUTE_API_RETIRE_COUPON } from "./constantes/api";
import {
ATTRIBUT_CHARGEMENT,
ATTRIBUT_CODE_PROMO_PRESENT,
ATTRIBUT_DESACTIVE,
ATTRIBUT_HIDDEN,
SELECTEUR_BOUTON_CODE_PROMO,
SELECTEUR_CHAMP_CODE_PROMO,
SELECTEUR_ENSEMBLE_CODE_PROMO,
SELECTEUR_MESSAGE_CODE_PROMO,
SELECTEUR_TOTAL_PANIER,
SELECTEUR_TOTAL_REDUCTION,
SELECTEUR_TOTAL_REDUCTION_VALEUR,
} from "./constantes/dom";
import { ERREUR_CODE_PROMO_INVALIDE } from "./constantes/erreurs";
import { correspondCibleSelecteur } from "./lib/dom";
import { ServerError } from "./lib/erreurs";
import { ErreurCodePromoInvalide } from "./lib/erreurs/codes-promo";
import { estReponse500 } from "./lib/gardes";
import { reponseEstCodeErreurWC } from "./lib/messages";
import { postBackend } from "./lib/reseau";
import { WCStoreCartSchema } from "./lib/schemas/api/cart";
import { WCStoreCartApplyCouponArgsSchema } from "./lib/schemas/api/cart-apply-coupon";
@ -47,7 +53,8 @@ const ETATS_PAGE: EtatsPage = _etats;
const ELEMENTS = {
BOUTON_CODE_PROMO: recupereElementDansDocumentOuLeve<HTMLButtonElement>(SELECTEUR_BOUTON_CODE_PROMO),
CHAMP_CODE_PROMO: recupereElementDansDocumentOuLeve<HTMLInputElement>(SELECTEUR_CHAMP_CODE_PROMO),
ENSEMBLE_CODE_PROMO: recupereElementDansDocumentOuLeve<HTMLDivElement>(SELECTEUR_ENSEMBLE_CODE_PROMO),
ENSEMBLE_CODE_PROMO: recupereElementDansDocumentOuLeve<HTMLFormElement>(SELECTEUR_ENSEMBLE_CODE_PROMO),
MESSAGE_CODE_PROMO: recupereElementDansDocumentOuLeve<HTMLParagraphElement>(SELECTEUR_MESSAGE_CODE_PROMO),
TOTAL_PANIER: recupereElementDansDocumentOuLeve<HTMLParagraphElement>(SELECTEUR_TOTAL_PANIER),
TOTAL_REDUCTION_LIGNE: recupereElementDansDocumentOuLeve<HTMLDivElement>(SELECTEUR_TOTAL_REDUCTION),
TOTAL_REDUCTION_VALEUR: recupereElementDansDocumentOuLeve<HTMLSpanElement>(SELECTEUR_TOTAL_REDUCTION_VALEUR),
@ -55,30 +62,61 @@ const ELEMENTS = {
export const initialiseElementsCodePromo = (): void => {
// Récupère le code promo s'il existe
const recupereCodePromoValeur = (): null | string =>
const recupereValeurCodePromo = (): null | string =>
Maybe.fromFalsy(ELEMENTS.CHAMP_CODE_PROMO.value.trim()).extractNullable();
const recupereCodePromoPresent = (): boolean =>
const recuperePresenceCodePromo = (): boolean =>
ELEMENTS.ENSEMBLE_CODE_PROMO.hasAttribute(ATTRIBUT_CODE_PROMO_PRESENT);
// Créé la délégation d'Événements
ELEMENTS.ENSEMBLE_CODE_PROMO.addEventListener(
"click",
(evenement: Event) =>
ELEMENTS.ENSEMBLE_CODE_PROMO.addEventListener("click", (evenement: Event) =>
match({
cible: evenement.target,
codePromoPresent: recupereCodePromoPresent(),
codePromoValeur: recupereCodePromoValeur(),
codePromoPresent: recuperePresenceCodePromo(),
valeurCodePromo: recupereValeurCodePromo(),
})
// Un code promo doit être ajouté
.with(
{
cible: P.when(cible => correspondCibleSelecteur<HTMLButtonElement>(cible, SELECTEUR_BOUTON_CODE_PROMO)),
cible: P.when((cible: EventTarget | null) =>
correspondCibleSelecteur<HTMLButtonElement>(cible, SELECTEUR_BOUTON_CODE_PROMO)
),
codePromoPresent: false,
codePromoValeur: P.string,
valeurCodePromo: P.string,
},
({ codePromoValeur }) =>
({ valeurCodePromo }) =>
void EitherAsync
.liftEither(eitherParse({ code: codePromoValeur }, WCStoreCartApplyCouponArgsSchema))
.liftEither(eitherParse({ code: valeurCodePromo }, WCStoreCartApplyCouponArgsSchema))
.ifRight(() => {
// Désactive le Bouton pour empêcher des requêtes concurrentes
ELEMENTS.BOUTON_CODE_PROMO.setAttribute(ATTRIBUT_DESACTIVE, "");
ELEMENTS.BOUTON_CODE_PROMO.setAttribute(ATTRIBUT_CHARGEMENT, "");
ELEMENTS.MESSAGE_CODE_PROMO.textContent = "";
// Lance un cycle d'animation sur le texte de chargement
const animation = {
callback: () => {
if (!ELEMENTS.BOUTON_CODE_PROMO.hasAttribute(ATTRIBUT_CHARGEMENT)) {
clearInterval(animation.interval);
return;
}
ELEMENTS.BOUTON_CODE_PROMO.textContent = animation.etapes.at(animation.index)
?? "Loading...";
animation.index = animation.index + 1 > animation.etapes.length - 1 ? 0 : animation.index + 1;
},
etapes: [
"Loading",
"Loading.",
"Loading..",
"Loading...",
],
index: 0,
interval: 0,
};
animation.callback();
animation.interval = setInterval(animation.callback, 500);
})
// Réalise la requête auprès du backend
.map((args: WCStoreCartApplyCouponArgs) =>
postBackend({
corps: JSON.stringify(args),
@ -86,32 +124,59 @@ export const initialiseElementsCodePromo = (): void => {
route: ROUTE_API_APPLIQUE_COUPON,
})
)
// Traite les cas d'Erreur
.chain((reponse: Response) =>
EitherAsync<ServerError, unknown>(async ({ throwE }) => {
EitherAsync<ErreurCodePromoInvalide | ServerError, unknown>(async ({ throwE }) => {
if (estReponse500(reponse)) throwE(new ServerError("500 Server Error"));
return await reponse.json();
const reponseSimplifiee: ReponseSimplifiee = {
body: await reponse.json(),
status: reponse.status,
};
return match(reponseSimplifiee)
.with({
body: P.when(() => reponseEstCodeErreurWC(reponseSimplifiee, ERREUR_CODE_PROMO_INVALIDE)),
status: 400,
}, () => throwE(new ErreurCodePromoInvalide(recupereValeurCodePromo() ?? "")))
.with({ status: 200 }, () => reponseSimplifiee.body)
.run();
})
)
// Vérifie le Schéma de la Réponse du backend
.chain((corpsReponse: unknown) => EitherAsync.liftEither(eitherParse(corpsReponse, WCStoreCartSchema)))
// Déclenche les mises à jour du DOM avec les données du nouveau Panier
.ifRight((panier: WCStoreCart) => {
const totalReduction = pipe(Number(panier.totals.total_discount) / 100, String, v => `-${v}`);
const totalPanier = pipe(Number(panier.totals.total_price) / 100, String, v => `${v}`);
ELEMENTS.BOUTON_CODE_PROMO.textContent = "Remove";
ELEMENTS.ENSEMBLE_CODE_PROMO.toggleAttribute(ATTRIBUT_CODE_PROMO_PRESENT);
ELEMENTS.CHAMP_CODE_PROMO.toggleAttribute(ATTRIBUT_DESACTIVE);
ELEMENTS.CHAMP_CODE_PROMO.value = panier.coupons[0]?.code ?? "";
ELEMENTS.ENSEMBLE_CODE_PROMO.toggleAttribute(ATTRIBUT_CODE_PROMO_PRESENT);
ELEMENTS.BOUTON_CODE_PROMO.textContent = "Remove";
ELEMENTS.TOTAL_PANIER.textContent = totalPanier;
ELEMENTS.TOTAL_REDUCTION_LIGNE.toggleAttribute(ATTRIBUT_HIDDEN);
ELEMENTS.TOTAL_REDUCTION_VALEUR.textContent = totalReduction;
})
.ifLeft(erreur =>
.ifLeft(erreur => {
// Rétablis le texte d'origine
ELEMENTS.BOUTON_CODE_PROMO.textContent = "Apply";
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))
.exhaustive()
)
.with(P.instanceOf(ValiError), e => console.error("ValiError", e.issues))
.with(P.instanceOf(ErreurCodePromoInvalide), e => {
ELEMENTS.MESSAGE_CODE_PROMO.textContent = "This promo code does not exist.";
console.error(e);
})
.with(P.instanceOf(ServerError), e => console.error(e))
.with(P.instanceOf(TypeError), e => console.error(e))
.exhaustive();
})
.finally(() => {
// Désactive l'animation de chargement et rend le Bouton de nouveau cliquable
ELEMENTS.BOUTON_CODE_PROMO.removeAttribute(ATTRIBUT_CHARGEMENT);
ELEMENTS.BOUTON_CODE_PROMO.removeAttribute(ATTRIBUT_DESACTIVE);
})
.run(),
)
// Un code promo doit être retiré
@ -119,11 +184,38 @@ export const initialiseElementsCodePromo = (): void => {
{
cible: P.when(cible => correspondCibleSelecteur<HTMLButtonElement>(cible, SELECTEUR_BOUTON_CODE_PROMO)),
codePromoPresent: true,
codePromoValeur: P.string,
valeurCodePromo: P.string,
},
({ codePromoValeur }) =>
({ valeurCodePromo }) =>
void EitherAsync
.liftEither(eitherParse({ code: codePromoValeur }, WCStoreCartRemoveCouponArgsSchema))
.liftEither(eitherParse({ code: valeurCodePromo }, WCStoreCartRemoveCouponArgsSchema))
.ifRight(() => {
ELEMENTS.BOUTON_CODE_PROMO.setAttribute(ATTRIBUT_DESACTIVE, "");
ELEMENTS.BOUTON_CODE_PROMO.setAttribute(ATTRIBUT_CHARGEMENT, "");
const animation = {
callback: () => {
if (!ELEMENTS.BOUTON_CODE_PROMO.hasAttribute(ATTRIBUT_CHARGEMENT)) {
clearInterval(animation.interval);
return;
}
ELEMENTS.BOUTON_CODE_PROMO.textContent = animation.etapes.at(animation.index)
?? "Loading...";
animation.index = animation.index + 1 > animation.etapes.length - 1 ? 0 : animation.index + 1;
},
etapes: [
"Loading",
"Loading.",
"Loading..",
"Loading...",
],
index: 0,
interval: 0,
};
animation.callback();
animation.interval = setInterval(animation.callback, 500);
})
.map((args: WCStoreCartRemoveCouponArgs) =>
postBackend({
corps: JSON.stringify(args),
@ -141,10 +233,12 @@ export const initialiseElementsCodePromo = (): void => {
.ifRight((panier: WCStoreCart) => {
const totalPanier = pipe(Number(panier.totals.total_price) / 100, String, v => `${v}`);
ELEMENTS.BOUTON_CODE_PROMO.textContent = "Apply";
ELEMENTS.CHAMP_CODE_PROMO.toggleAttribute(ATTRIBUT_DESACTIVE);
ELEMENTS.CHAMP_CODE_PROMO.value = "";
ELEMENTS.ENSEMBLE_CODE_PROMO.toggleAttribute(ATTRIBUT_CODE_PROMO_PRESENT);
ELEMENTS.ENSEMBLE_CODE_PROMO.reset();
ELEMENTS.CHAMP_CODE_PROMO.toggleAttribute(ATTRIBUT_DESACTIVE);
ELEMENTS.CHAMP_CODE_PROMO.textContent = "";
ELEMENTS.BOUTON_CODE_PROMO.textContent = "Apply";
ELEMENTS.TOTAL_PANIER.textContent = totalPanier;
ELEMENTS.TOTAL_REDUCTION_LIGNE.toggleAttribute(ATTRIBUT_HIDDEN);
ELEMENTS.TOTAL_REDUCTION_VALEUR.textContent = "-0€";
@ -156,9 +250,12 @@ export const initialiseElementsCodePromo = (): void => {
.with(P.instanceOf(TypeError), e => console.error("retour ajout code promo", e))
.exhaustive()
)
.finally(() => {
ELEMENTS.BOUTON_CODE_PROMO.removeAttribute(ATTRIBUT_CHARGEMENT);
ELEMENTS.BOUTON_CODE_PROMO.removeAttribute(ATTRIBUT_DESACTIVE);
})
.run(),
)
// Ne rien faire en dehors de ces deux situations
.with(P._, identity),
);
.with(P._, identity));
};

View file

@ -1,12 +1,10 @@
import { D, F, pipe } from "@mobily/ts-belt";
import { Either, EitherAsync, Maybe } from "purify-ts";
import { match, P } from "ts-pattern";
import { Either, Maybe } from "purify-ts";
import { match } from "ts-pattern";
import { parse, ValiError } from "valibot";
import type { MessageMajContenuPanierSchema } from "./lib/schemas/messages.ts";
import type { WCStoreCart, WCStoreCartItem, WCStoreShippingRateShippingRate } from "./lib/types/api/cart";
import type { WCStoreCartApplyCouponArgs } from "./lib/types/api/cart-apply-coupon";
import type { WCStoreCartRemoveCouponArgs } from "./lib/types/api/cart-remove-coupon";
import type { WCStoreCartRemoveItemArgs } from "./lib/types/api/cart-remove-item";
import type { WCStoreCartUpdateCustomerArgs } from "./lib/types/api/cart-update-customer";
import type { WCStoreCartUpdateItemArgs } from "./lib/types/api/cart-update-item";
@ -14,29 +12,23 @@ import type { WCV3Order, WCV3OrdersArgs } from "./lib/types/api/v3/orders.ts";
import type { MessageMajBoutonPanierDonnees, MessageMajContenuPanierDonnees } from "./lib/types/messages";
import {
ROUTE_API_APPLIQUE_COUPON,
ROUTE_API_MAJ_ARTICLE_PANIER,
ROUTE_API_MAJ_CLIENT,
ROUTE_API_NOUVELLE_COMMANDES,
ROUTE_API_RETIRE_ARTICLE_PANIER,
ROUTE_API_RETIRE_COUPON,
} from "./constantes/api.ts";
import {
ATTRIBUT_CLE_PANIER,
ATTRIBUT_CODE_PROMO_PRESENT,
ATTRIBUT_CONTIENT_ARTICLES,
ATTRIBUT_DESACTIVE,
ATTRIBUT_HIDDEN,
SELECTEUR_BOUTON_ACTIONS_FORMULAIRE,
SELECTEUR_BOUTON_ADDITION_QUANTITE,
SELECTEUR_BOUTON_CODE_PROMO,
SELECTEUR_BOUTON_SEPARATION_ADRESSES,
SELECTEUR_BOUTON_SOUSTRACTION_QUANTITE,
SELECTEUR_BOUTON_SUPPRESSION_PANIER,
SELECTEUR_CHAMP_CODE_PROMO,
SELECTEUR_CHAMP_QUANTITE_LIGNE_PANIER,
SELECTEUR_CONTENEUR_PANIER,
SELECTEUR_ENSEMBLE_CODE_PROMO,
SELECTEUR_ENTREES_PANIER,
SELECTEUR_FORMULAIRE_FACTURATION,
SELECTEUR_FORMULAIRE_PANIER,
@ -46,8 +38,6 @@ import {
SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE,
SELECTEUR_SOUS_TOTAL_PRODUITS,
SELECTEUR_TOTAL_PANIER,
SELECTEUR_TOTAL_REDUCTION,
SELECTEUR_TOTAL_REDUCTION_VALEUR,
} from "./constantes/dom.ts";
import { NOM_CANAL_BOUTON_PANIER, NOM_CANAL_CONTENU_PANIER } from "./constantes/messages.ts";
import {
@ -57,7 +47,7 @@ import {
recupereElementOuLeve,
recupereElementsAvecSelecteur,
} from "./lib/dom.ts";
import { type CleNonTrouveError, leveErreur, leveServerError, reporteErreur, ServerError } from "./lib/erreurs.ts";
import { type CleNonTrouveError, leveErreur, leveServerError, reporteErreur } from "./lib/erreurs.ts";
import { estError, estReponse500 } from "./lib/gardes.ts";
import {
emetMessageMajBoutonPanier,
@ -66,8 +56,6 @@ import {
valideMessageMajContenuPanier,
} from "./lib/messages.ts";
import { postBackend, traiteReponseBackendWCSelonCodesHTTP } from "./lib/reseau.ts";
import { WCStoreCartApplyCouponArgsSchema } from "./lib/schemas/api/cart-apply-coupon.ts";
import { WCStoreCartRemoveCouponArgsSchema } from "./lib/schemas/api/cart-remove-coupon.ts";
import { WCStoreCartRemoveItemArgsSchema } from "./lib/schemas/api/cart-remove-item.ts";
import { WCStoreCartUpdateCustomerArgsSchema } from "./lib/schemas/api/cart-update-customer.ts";
import { WCStoreCartUpdateItemArgsSchema } from "./lib/schemas/api/cart-update-item.ts";
@ -121,10 +109,6 @@ const SOUS_TOTAL_LIVRAISON_PRESTATAIRE: HTMLSpanElement = pipe(
recupereElementDocumentEither<HTMLSpanElement>(SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE),
recupereElementOuLeve,
);
const SOUS_TOTAL_REDUCTION_LIGNE: HTMLDivElement = recupereElementDansDocumentOuLeve(SELECTEUR_TOTAL_REDUCTION);
const SOUS_TOTAL_REDUCTION_VALEUR: HTMLSpanElement = recupereElementDansDocumentOuLeve(
SELECTEUR_TOTAL_REDUCTION_VALEUR,
);
const INSTRUCTIONS_CLIENT: HTMLTextAreaElement = recupereElementDansDocumentOuLeve(
SELECTEUR_INSTRUCTIONS_CLIENT,
);
@ -136,15 +120,6 @@ const BOUTON_SEPARATION_ADRESSES: HTMLInputElement = pipe(
recupereElementDocumentEither<HTMLInputElement>(SELECTEUR_BOUTON_SEPARATION_ADRESSES),
recupereElementOuLeve,
);
const ENSEMBLE_CODE_PROMO: HTMLDivElement = recupereElementDansDocumentOuLeve(
SELECTEUR_ENSEMBLE_CODE_PROMO,
);
const CHAMP_CODE_PROMO: HTMLInputElement = recupereElementDansDocumentOuLeve(
SELECTEUR_CHAMP_CODE_PROMO,
);
const BOUTON_CODE_PROMO: HTMLButtonElement = recupereElementDansDocumentOuLeve(
SELECTEUR_BOUTON_CODE_PROMO,
);
const FORMULAIRE_PANIER: HTMLFormElement = pipe(
recupereElementDocumentEither<HTMLFormElement>(SELECTEUR_FORMULAIRE_PANIER),
recupereElementOuLeve,
@ -263,8 +238,8 @@ const initialiseMajEntreesPanier = (): void => {
// Émet un Message avec le nouveau contenu du Panier
emetMessageMajContenuPanier({
produits: panier.items,
sousTotalPanier: Number(panier.totals.total_price) / 100,
totalPanier: Number(panier.totals.total_items) / 100,
sousTotalPanier: Number(panier.totals.total_items) / 100,
totalPanier: Number(panier.totals.total_price) / 100,
});
// Retire l'entrée du Panier du DOM
entree.remove();
@ -322,8 +297,8 @@ const initialiseMajEntreesPanier = (): void => {
// Émet un Message avec le nouveau contenu du Panier
emetMessageMajContenuPanier({
produits: panier.items,
sousTotalPanier: Number(panier.totals.total_price) / 100,
totalPanier: Number(panier.totals.total_items) / 100,
sousTotalPanier: Number(panier.totals.total_items) / 100,
totalPanier: Number(panier.totals.total_price) / 100,
});
}),
);
@ -378,8 +353,8 @@ const initialiseMajEntreesPanier = (): void => {
// Émet un Message avec le nouveau contenu du Panier
emetMessageMajContenuPanier({
produits: panier.items,
sousTotalPanier: Number(panier.totals.total_price) / 100,
totalPanier: Number(panier.totals.total_items) / 100,
sousTotalPanier: Number(panier.totals.total_items) / 100,
totalPanier: Number(panier.totals.total_price) / 100,
});
}),
);
@ -421,8 +396,9 @@ const initialiseMajContenuPanier = (): void => {
donnees.produits.forEach((ligne: WCStoreCartItem) => {
// Met à jour les entrées du Panier
ENTREES_PANIER_EITHER.ifRight((entrees: Array<HTMLElement>) => {
Maybe.fromNullable(entrees.find(entree => entree.getAttribute(ATTRIBUT_CLE_PANIER) === ligne.key)).ifJust(
(entree: HTMLElement) => {
Maybe
.fromNullable(entrees.find(entree => entree.getAttribute(ATTRIBUT_CLE_PANIER) === ligne.key))
.ifJust((entree: HTMLElement) => {
// Fonction utilitaire
const recupereElementDansEntree = recupereElementDansEntreePanierOuLeve(entree);
@ -439,11 +415,10 @@ const initialiseMajContenuPanier = (): void => {
// Réactive les Boutons
majEtatsActivationBoutons(entrees);
},
);
});
// Met à jour les totaux du Panier
SOUS_TOTAL_PRODUITS.textContent = `${String(donnees.totalPanier)}`;
SOUS_TOTAL_PRODUITS.textContent = `${String(donnees.sousTotalPanier)}`;
TOTAL_PANIER.textContent = `${String(donnees.totalPanier)}`;
});
});

View file

@ -82,7 +82,8 @@
spellcheck="true"
></textarea>
<div
<form
action=""
class="panneau__instructions-code-promo__code-promo"
{{ code_promo ? "data-code-promo-present" : "" }}
id="ensemble-code-promo"
@ -105,7 +106,9 @@
>
{{ code_promo ? "Remove" : "Apply" }}
</button>
</div>
<p class="panneau__instructions-code-promo__code-promo__message"></p>
</form>
</div>
<div class="panneau__sous-totaux">