fontdue-js 2.25.1 → 2.26.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 +8 -0
- package/dist/__generated__/CartOrderCompleteOrderMutation.graphql.d.ts +1 -1
- package/dist/__generated__/CartOrderCompleteOrderMutation.graphql.js +9 -3
- package/dist/__generated__/CartOrderRemoveDiscountMutation.graphql.d.ts +1 -1
- package/dist/__generated__/CartOrderRemoveDiscountMutation.graphql.js +9 -3
- package/dist/__generated__/CartOrderUpdateMutation.graphql.d.ts +1 -1
- package/dist/__generated__/CartOrderUpdateMutation.graphql.js +9 -3
- package/dist/__generated__/CartQuery.graphql.d.ts +1 -1
- package/dist/__generated__/CartQuery.graphql.js +10 -4
- package/dist/__generated__/CartStateUpdateMutation.graphql.d.ts +1 -1
- package/dist/__generated__/CartStateUpdateMutation.graphql.js +9 -3
- package/dist/__generated__/CharacterViewerIDQuery.graphql.d.ts +1 -1
- package/dist/__generated__/CharacterViewerIDQuery.graphql.js +9 -3
- package/dist/__generated__/CharacterViewerSlugQuery.graphql.d.ts +1 -1
- package/dist/__generated__/CharacterViewerSlugQuery.graphql.js +9 -3
- package/dist/__generated__/CharacterViewerStyleRefetchQuery.graphql.d.ts +1 -1
- package/dist/__generated__/CharacterViewerStyleRefetchQuery.graphql.js +9 -3
- package/dist/__generated__/CheckoutUpdateCustomerMutation.graphql.d.ts +1 -1
- package/dist/__generated__/CheckoutUpdateCustomerMutation.graphql.js +9 -3
- package/dist/__generated__/CheckoutUpdateOrderMutation.graphql.d.ts +1 -1
- package/dist/__generated__/CheckoutUpdateOrderMutation.graphql.js +9 -3
- package/dist/__generated__/CollectionAa_Query.graphql.d.ts +1 -1
- package/dist/__generated__/CollectionAa_Query.graphql.js +9 -3
- package/dist/__generated__/FontFamiliesQuery.graphql.d.ts +1 -1
- package/dist/__generated__/FontFamiliesQuery.graphql.js +9 -3
- package/dist/__generated__/PrecartAddToCartMutation.graphql.d.ts +1 -1
- package/dist/__generated__/PrecartAddToCartMutation.graphql.js +9 -3
- package/dist/__generated__/StoreModalCartQuery.graphql.d.ts +1 -1
- package/dist/__generated__/StoreModalCartQuery.graphql.js +10 -4
- package/dist/__generated__/StoreModalContainerQuery.graphql.d.ts +1 -1
- package/dist/__generated__/StoreModalContainerQuery.graphql.js +9 -3
- package/dist/__generated__/StoreModalIndexQuery.graphql.d.ts +1 -1
- package/dist/__generated__/StoreModalIndexQuery.graphql.js +9 -3
- package/dist/__generated__/StoreModalProductQuery.graphql.d.ts +1 -1
- package/dist/__generated__/StoreModalProductQuery.graphql.js +9 -3
- package/dist/__generated__/StoreModalProductRefetchQuery.graphql.d.ts +1 -1
- package/dist/__generated__/StoreModalProductRefetchQuery.graphql.js +9 -3
- package/dist/__generated__/TestFontsFormUpdateCustomerMutation.graphql.d.ts +1 -1
- package/dist/__generated__/TestFontsFormUpdateCustomerMutation.graphql.js +9 -3
- package/dist/__generated__/TypeTesterStandaloneChangedStylesQuery.graphql.d.ts +1 -1
- package/dist/__generated__/TypeTesterStandaloneChangedStylesQuery.graphql.js +9 -3
- package/dist/__generated__/TypeTesterStandaloneQuery.graphql.d.ts +1 -1
- package/dist/__generated__/TypeTesterStandaloneQuery.graphql.js +9 -3
- package/dist/__generated__/TypeTestersChangedStylesQuery.graphql.d.ts +1 -1
- package/dist/__generated__/TypeTestersChangedStylesQuery.graphql.js +9 -3
- package/dist/__generated__/TypeTestersIDQuery.graphql.d.ts +1 -1
- package/dist/__generated__/TypeTestersIDQuery.graphql.js +9 -3
- package/dist/__generated__/TypeTestersRefetchQuery.graphql.d.ts +1 -1
- package/dist/__generated__/TypeTestersRefetchQuery.graphql.js +9 -3
- package/dist/__generated__/TypeTestersSlugQuery.graphql.d.ts +1 -1
- package/dist/__generated__/TypeTestersSlugQuery.graphql.js +9 -3
- package/dist/__generated__/useFontStyle_fontStyle.graphql.d.ts +2 -1
- package/dist/__generated__/useFontStyle_fontStyle.graphql.js +8 -2
- package/dist/__tests__/fontLoader.test.js +108 -0
- package/dist/components/TypeTester/TypeTesterVariableAxes.js +17 -4
- package/dist/components/TypeTester/index.js +8 -1
- package/dist/components/useFont.d.ts +1 -4
- package/dist/components/useFontStyle.js +1 -1
- package/dist/fontLoader.d.ts +21 -1
- package/dist/fontLoader.js +37 -2
- package/dist/fontdue.css +1 -0
- package/dist/hooks.d.ts +1 -0
- package/dist/hooks.js +14 -0
- package/fontdue.css +2 -1
- package/package.json +1 -1
package/dist/fontLoader.js
CHANGED
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.isFontLoaded = isFontLoaded;
|
|
7
7
|
exports.loadFont = loadFont;
|
|
8
|
+
exports.selectFontSource = selectFontSource;
|
|
8
9
|
const cache = new Map();
|
|
9
10
|
const loaded = new Set();
|
|
10
11
|
function isFontLoaded(fontFamily) {
|
|
@@ -22,9 +23,43 @@ async function loadFont(fontFamily, sources, verticalMetrics) {
|
|
|
22
23
|
});
|
|
23
24
|
return promise;
|
|
24
25
|
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Pick the best `FontSource` for the current browser from a list emitted by
|
|
29
|
+
* the backend's `webfontSources` field.
|
|
30
|
+
*
|
|
31
|
+
* The backend already returns sources in CSS `src:` priority order
|
|
32
|
+
* (dedicated COLRv1 → COLRv0 → SVG → sbix → bundled → outline-fallback,
|
|
33
|
+
* within format). The job here is to drop entries whose color tech the
|
|
34
|
+
* browser can't render — without this, fetching e.g. an SVG-in-OpenType
|
|
35
|
+
* file in Chrome pins a face Chrome can only render as outline.
|
|
36
|
+
*
|
|
37
|
+
* Sources with no `tech` tag are kept unconditionally (outline / universal).
|
|
38
|
+
* If every tech-tagged source is filtered out, falls back to the unfiltered
|
|
39
|
+
* list — the browser will at least try to render something rather than the
|
|
40
|
+
* fallback font.
|
|
41
|
+
*
|
|
42
|
+
* `techSupportCheck` is injectable for tests; defaults to
|
|
43
|
+
* `CSS.supports("font-tech(color-<tech>)")`.
|
|
44
|
+
*/
|
|
45
|
+
function selectFontSource(sources) {
|
|
46
|
+
let techSupportCheck = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultTechSupport;
|
|
47
|
+
const valid = sources.filter(s => s != null && s.url != null);
|
|
48
|
+
const supported = valid.filter(s => !s.tech || techSupportCheck(s.tech));
|
|
49
|
+
const candidates = supported.length > 0 ? supported : valid;
|
|
50
|
+
return candidates.find(s => s.format === 'woff2') ?? candidates[0] ?? null;
|
|
51
|
+
}
|
|
52
|
+
function defaultTechSupport(tech) {
|
|
53
|
+
// SSR or very old browsers without CSS.supports: be optimistic, don't drop
|
|
54
|
+
// tech-tagged sources. Filtering exists to *prevent* loading a file the
|
|
55
|
+
// browser can't render, not to forbid sources we're unsure about.
|
|
56
|
+
if (typeof CSS === 'undefined' || typeof CSS.supports !== 'function') {
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
return CSS.supports(`font-tech(color-${tech})`);
|
|
60
|
+
}
|
|
25
61
|
async function doLoadFont(fontFamily, sources, verticalMetrics) {
|
|
26
|
-
const
|
|
27
|
-
const source = validSources.find(s => s.format === 'woff2') ?? validSources[0];
|
|
62
|
+
const source = selectFontSource(sources);
|
|
28
63
|
if (!source || !source.url) throw new Error(`No font sources for ${fontFamily}`);
|
|
29
64
|
const response = await fetch(source.url);
|
|
30
65
|
if (!response.ok) throw new Error(`Failed to fetch font: ${response.status}`);
|
package/dist/fontdue.css
CHANGED
package/dist/hooks.d.ts
CHANGED
package/dist/hooks.js
CHANGED
|
@@ -3,8 +3,22 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
exports.useDebouncedValue = useDebouncedValue;
|
|
6
7
|
exports.useNewPortalElement = void 0;
|
|
7
8
|
var _react = require("react");
|
|
9
|
+
// Returns a copy of `value` that only updates `delay` ms after `value` stops
|
|
10
|
+
// changing. Useful for trailing UI that shouldn't react to rapid changes mid
|
|
11
|
+
// interaction (e.g. the variable-font instance name while a slider is dragged).
|
|
12
|
+
// NOTE: detects changes by reference, so callers must update `value`
|
|
13
|
+
// immutably — an object mutated in place won't trigger an update.
|
|
14
|
+
function useDebouncedValue(value, delay) {
|
|
15
|
+
const [debounced, setDebounced] = (0, _react.useState)(value);
|
|
16
|
+
(0, _react.useEffect)(() => {
|
|
17
|
+
const timer = setTimeout(() => setDebounced(value), delay);
|
|
18
|
+
return () => clearTimeout(timer);
|
|
19
|
+
}, [value, delay]);
|
|
20
|
+
return debounced;
|
|
21
|
+
}
|
|
8
22
|
const useNewPortalElement = () => {
|
|
9
23
|
const elementRef = (0, _react.useRef)(document.createElement('div'));
|
|
10
24
|
(0, _react.useEffect)(() => {
|
package/fontdue.css
CHANGED
|
@@ -674,7 +674,8 @@ div[data-component='TypeTesters'] {
|
|
|
674
674
|
.type-tester__variable-axes__value {
|
|
675
675
|
margin-left: 10px;
|
|
676
676
|
margin-right: 16px;
|
|
677
|
-
width
|
|
677
|
+
/* width is reserved per-axis inline (in ch) for the widest value in range,
|
|
678
|
+
so the number changing never reflows the slider. */
|
|
678
679
|
text-align: right;
|
|
679
680
|
font-feature-settings: 'tnum' 1;
|
|
680
681
|
}
|