fontdue-js 2.19.0 → 2.19.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +5 -0
- package/dist/__tests__/collectionBundleSelection.test.d.ts +1 -0
- package/dist/__tests__/collectionBundleSelection.test.js +1181 -0
- package/dist/fontdue.css +190 -126
- package/dist/reducer.js +4 -0
- package/dist/utils.js +2 -2
- package/package.json +5 -2
- package/vitest.config.ts +10 -0
package/dist/reducer.js
CHANGED
|
@@ -82,6 +82,10 @@ const collectionSkuIdWithDiscount = (state, skuId) => {
|
|
|
82
82
|
const differences = (0, _utils.collectionSkuIdsDifferences)(state, skuId);
|
|
83
83
|
const collectionId = Object.keys(differences).filter(collSkuId => differences[collSkuId] <= state.skuPrices[skuId]).reduce((smallest, key) => {
|
|
84
84
|
if (!smallest || differences[key] < differences[smallest]) return key;
|
|
85
|
+
// When differences are equal, prefer a collection that is not the
|
|
86
|
+
// SKU being selected — this ensures collection bundles are preferred
|
|
87
|
+
// over selecting the family itself at the same price
|
|
88
|
+
if (differences[key] === differences[smallest] && smallest === skuId && key !== skuId) return key;
|
|
85
89
|
return smallest;
|
|
86
90
|
}, null);
|
|
87
91
|
if (collectionId) return [collectionId, differences[collectionId]];
|
package/dist/utils.js
CHANGED
|
@@ -47,8 +47,8 @@ const collectionSkuIdsDifferences = (state, skuId) => Object.keys(state.collecti
|
|
|
47
47
|
}).reduce((acc, collectionSkuId) => {
|
|
48
48
|
const coll = state.collectionStyleSkus[collectionSkuId];
|
|
49
49
|
const selectedSkuIdsInColl = Object.keys(state.selectedSkuIds).filter(selectedSkuId => state.selectedSkuIds[selectedSkuId] === true && collContainsSkuId(coll, selectedSkuId));
|
|
50
|
-
const sumOfSelectedSkuIdsInColl = selectedSkuIdsInColl.map(selectedSkuId => state.skuPrices[selectedSkuId]).reduce((acc, price) => acc + price, 0);
|
|
51
|
-
acc[collectionSkuId] = state.skuPrices[collectionSkuId] - sumOfSelectedSkuIdsInColl;
|
|
50
|
+
const sumOfSelectedSkuIdsInColl = selectedSkuIdsInColl.map(selectedSkuId => state.skuPrices[selectedSkuId] ?? 0).reduce((acc, price) => acc + price, 0);
|
|
51
|
+
acc[collectionSkuId] = (state.skuPrices[collectionSkuId] ?? 0) - sumOfSelectedSkuIdsInColl;
|
|
52
52
|
return acc;
|
|
53
53
|
}, {});
|
|
54
54
|
exports.collectionSkuIdsDifferences = collectionSkuIdsDifferences;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fontdue-js",
|
|
3
|
-
"version": "2.19.
|
|
3
|
+
"version": "2.19.1",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"build": "npm run relay && run-p build-js build-css build-ts",
|
|
6
6
|
"build-js": "babel src --out-dir dist --extensions .ts,.tsx,.js,.jsx",
|
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
"build-css": "sass --load-path=node_modules --no-source-map src/index.scss dist/fontdue.css",
|
|
9
9
|
"relay": "relay-compiler",
|
|
10
10
|
"update-unicode-data": "node src/scripts/updateUnicodeData.js",
|
|
11
|
+
"test": "vitest run",
|
|
12
|
+
"test:watch": "vitest",
|
|
11
13
|
"prepublishOnly": "npm run build"
|
|
12
14
|
},
|
|
13
15
|
"author": "Fontdue",
|
|
@@ -60,7 +62,8 @@
|
|
|
60
62
|
"react-dom": "^19.0.0",
|
|
61
63
|
"relay-compiler": "^18.0.0",
|
|
62
64
|
"sass": "^1.62",
|
|
63
|
-
"typescript": "^5.9"
|
|
65
|
+
"typescript": "^5.9",
|
|
66
|
+
"vitest": "^4.1.1"
|
|
64
67
|
},
|
|
65
68
|
"relay": {
|
|
66
69
|
"src": "./src",
|