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/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.0",
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",
@@ -0,0 +1,10 @@
1
+ import { defineConfig } from 'vitest/config';
2
+ import path from 'path';
3
+
4
+ export default defineConfig({
5
+ test: {
6
+ alias: {
7
+ '__generated__': path.resolve(__dirname, 'src/__generated__'),
8
+ },
9
+ },
10
+ });