fontdue-js 2.19.2 → 2.20.0

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.
Files changed (123) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +11 -10
  3. package/dist/__generated__/CartItemProduct_product.graphql.d.ts +1 -7
  4. package/dist/__generated__/CartItemProduct_product.graphql.js +11 -36
  5. package/dist/__generated__/CartOrderCompleteOrderMutation.graphql.d.ts +1 -1
  6. package/dist/__generated__/CartOrderCompleteOrderMutation.graphql.js +65 -23
  7. package/dist/__generated__/CartOrderRemoveDiscountMutation.graphql.d.ts +1 -1
  8. package/dist/__generated__/CartOrderRemoveDiscountMutation.graphql.js +65 -23
  9. package/dist/__generated__/CartOrderUpdateMutation.graphql.d.ts +1 -1
  10. package/dist/__generated__/CartOrderUpdateMutation.graphql.js +65 -23
  11. package/dist/__generated__/CartQuery.graphql.d.ts +1 -1
  12. package/dist/__generated__/CartQuery.graphql.js +119 -87
  13. package/dist/__generated__/CartStateUpdateMutation.graphql.d.ts +1 -1
  14. package/dist/__generated__/CartStateUpdateMutation.graphql.js +65 -23
  15. package/dist/__generated__/CharacterViewerIDQuery.graphql.d.ts +1 -1
  16. package/dist/__generated__/CharacterViewerIDQuery.graphql.js +40 -26
  17. package/dist/__generated__/CharacterViewerSlugQuery.graphql.d.ts +1 -1
  18. package/dist/__generated__/CharacterViewerSlugQuery.graphql.js +40 -26
  19. package/dist/__generated__/CharacterViewerStyleRefetchQuery.graphql.d.ts +1 -1
  20. package/dist/__generated__/CharacterViewerStyleRefetchQuery.graphql.js +62 -41
  21. package/dist/__generated__/CharacterViewer_collection.graphql.d.ts +1 -3
  22. package/dist/__generated__/CharacterViewer_collection.graphql.js +6 -13
  23. package/dist/__generated__/CharacterViewer_family.graphql.d.ts +1 -2
  24. package/dist/__generated__/CharacterViewer_family.graphql.js +2 -8
  25. package/dist/__generated__/CharacterViewer_style.graphql.d.ts +2 -1
  26. package/dist/__generated__/CharacterViewer_style.graphql.js +6 -2
  27. package/dist/__generated__/CheckoutUpdateCustomerMutation.graphql.d.ts +1 -1
  28. package/dist/__generated__/CheckoutUpdateCustomerMutation.graphql.js +65 -23
  29. package/dist/__generated__/CheckoutUpdateOrderMutation.graphql.d.ts +1 -1
  30. package/dist/__generated__/CheckoutUpdateOrderMutation.graphql.js +65 -23
  31. package/dist/__generated__/CollectionAa_Query.graphql.d.ts +1 -1
  32. package/dist/__generated__/CollectionAa_Query.graphql.js +57 -3
  33. package/dist/__generated__/Family_node.graphql.d.ts +1 -2
  34. package/dist/__generated__/Family_node.graphql.js +2 -8
  35. package/dist/__generated__/FontFamiliesQuery.graphql.d.ts +1 -1
  36. package/dist/__generated__/FontFamiliesQuery.graphql.js +80 -31
  37. package/dist/__generated__/FontStyle_fontStyle.graphql.d.ts +2 -3
  38. package/dist/__generated__/FontStyle_fontStyle.graphql.js +4 -12
  39. package/dist/__generated__/PrecartAddToCartMutation.graphql.d.ts +1 -1
  40. package/dist/__generated__/PrecartAddToCartMutation.graphql.js +71 -29
  41. package/dist/__generated__/ServerConfigProviderQuery.graphql.d.ts +24 -0
  42. package/dist/__generated__/ServerConfigProviderQuery.graphql.js +108 -0
  43. package/dist/__generated__/StoreModalCartQuery.graphql.d.ts +1 -1
  44. package/dist/__generated__/StoreModalCartQuery.graphql.js +108 -76
  45. package/dist/__generated__/StoreModalContainerQuery.graphql.d.ts +4 -7
  46. package/dist/__generated__/StoreModalContainerQuery.graphql.js +58 -25
  47. package/dist/__generated__/StoreModalFamily_collection.graphql.d.ts +1 -2
  48. package/dist/__generated__/StoreModalFamily_collection.graphql.js +2 -8
  49. package/dist/__generated__/StoreModalIndexItem_fontCollection.graphql.d.ts +1 -4
  50. package/dist/__generated__/StoreModalIndexItem_fontCollection.graphql.js +2 -17
  51. package/dist/__generated__/StoreModalIndexQuery.graphql.d.ts +1 -1
  52. package/dist/__generated__/StoreModalIndexQuery.graphql.js +48 -9
  53. package/dist/__generated__/StoreModalProductQuery.graphql.d.ts +1 -1
  54. package/dist/__generated__/StoreModalProductQuery.graphql.js +85 -41
  55. package/dist/__generated__/StoreModalProductRefetchQuery.graphql.d.ts +1 -1
  56. package/dist/__generated__/StoreModalProductRefetchQuery.graphql.js +78 -34
  57. package/dist/__generated__/TestFontsFormUpdateCustomerMutation.graphql.d.ts +1 -1
  58. package/dist/__generated__/TestFontsFormUpdateCustomerMutation.graphql.js +65 -23
  59. package/dist/__generated__/TypeTesterStandaloneChangedStylesQuery.graphql.d.ts +1 -1
  60. package/dist/__generated__/TypeTesterStandaloneChangedStylesQuery.graphql.js +55 -7
  61. package/dist/__generated__/TypeTesterStandaloneQuery.graphql.d.ts +1 -1
  62. package/dist/__generated__/TypeTesterStandaloneQuery.graphql.js +56 -8
  63. package/dist/__generated__/TypeTester_fontStyle.graphql.d.ts +1 -4
  64. package/dist/__generated__/TypeTester_fontStyle.graphql.js +2 -17
  65. package/dist/__generated__/TypeTestersChangedStylesQuery.graphql.d.ts +1 -1
  66. package/dist/__generated__/TypeTestersChangedStylesQuery.graphql.js +55 -7
  67. package/dist/__generated__/TypeTestersIDQuery.graphql.d.ts +1 -1
  68. package/dist/__generated__/TypeTestersIDQuery.graphql.js +55 -7
  69. package/dist/__generated__/TypeTestersRefetchQuery.graphql.d.ts +1 -1
  70. package/dist/__generated__/TypeTestersRefetchQuery.graphql.js +55 -7
  71. package/dist/__generated__/TypeTestersSlugQuery.graphql.d.ts +1 -1
  72. package/dist/__generated__/TypeTestersSlugQuery.graphql.js +55 -7
  73. package/dist/__generated__/useFontStyle_fontStyle.graphql.d.ts +28 -0
  74. package/dist/__generated__/useFontStyle_fontStyle.graphql.js +94 -0
  75. package/dist/__tests__/collectionBundleSelection.test.js +0 -1
  76. package/dist/components/Cart/CartItem/CartItemProduct.js +3 -9
  77. package/dist/components/CharacterViewer/index.js +5 -11
  78. package/dist/components/ConfigContext.d.ts +13 -0
  79. package/dist/components/ConfigContext.js +6 -2
  80. package/dist/components/ConsentBanner/consent.d.ts +18 -0
  81. package/dist/components/ConsentBanner/consent.js +93 -0
  82. package/dist/components/ConsentBanner/index.d.ts +3 -0
  83. package/dist/components/ConsentBanner/index.js +84 -0
  84. package/dist/components/Family/index.js +2 -5
  85. package/dist/components/FontStyle/index.js +2 -8
  86. package/dist/components/FontdueProvider/FontdueProviderClientComponent.js +14 -1
  87. package/dist/components/FontdueProvider/index.js +1 -2
  88. package/dist/components/FontdueProvider/index.server.js +1 -2
  89. package/dist/components/ServerConfigProvider/index.d.ts +8 -0
  90. package/dist/components/ServerConfigProvider/index.js +41 -0
  91. package/dist/components/StoreModal/StoreModalContainer.js +15 -17
  92. package/dist/components/StoreModal/StoreModalFamily.js +1 -5
  93. package/dist/components/StoreModal/StoreModalIndexItem.js +6 -11
  94. package/dist/components/Tracking/index.d.ts +2 -0
  95. package/dist/components/Tracking/index.js +166 -0
  96. package/dist/components/TypeTester/TypeTesterSlider.js +10 -3
  97. package/dist/components/TypeTester/index.js +2 -5
  98. package/dist/components/TypeTester/useTypeTesterStyler.js +27 -85
  99. package/dist/components/UrlContext.d.ts +3 -0
  100. package/dist/components/UrlContext.js +15 -0
  101. package/dist/components/elements/StoreModalContainer/index.d.ts +2 -6
  102. package/dist/components/elements/StoreModalContainer/index.js +3 -8
  103. package/dist/components/elements/StoreModalFamily/index.d.ts +0 -1
  104. package/dist/components/elements/StoreModalFamily/index.js +1 -2
  105. package/dist/components/useConsent.d.ts +9 -0
  106. package/dist/components/useConsent.js +26 -0
  107. package/dist/components/useFont.d.ts +29 -0
  108. package/dist/components/useFont.js +77 -0
  109. package/dist/components/useFontLoaded.d.ts +24 -0
  110. package/dist/components/useFontLoaded.js +60 -0
  111. package/dist/components/useFontStyle.d.ts +3 -4
  112. package/dist/components/useFontStyle.js +24 -16
  113. package/dist/deepMerge.d.ts +4 -0
  114. package/dist/deepMerge.js +24 -0
  115. package/dist/fontLoader.d.ts +13 -0
  116. package/dist/fontLoader.js +55 -0
  117. package/dist/fontdue.css +65 -0
  118. package/dist/hooks/useAutofit.d.ts +20 -0
  119. package/dist/hooks/useAutofit.js +114 -0
  120. package/dist/react-ranger.js +5 -1
  121. package/dist/reducer.d.ts +0 -4
  122. package/dist/reducer.js +0 -11
  123. package/package.json +5 -2
@@ -14,7 +14,6 @@ _vitest.vi.mock('react-relay', () => ({
14
14
  function makeState() {
15
15
  let overrides = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
16
16
  return {
17
- stylesheets: [],
18
17
  cartOpen: false,
19
18
  precartOpen: false,
20
19
  selectedSkuIds: {},
@@ -6,29 +6,23 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = CartItemProduct;
7
7
  var _CartItemProduct_product2 = _interopRequireDefault(require("../../../__generated__/CartItemProduct_product.graphql"));
8
8
  var _react = _interopRequireDefault(require("react"));
9
- var _Stylesheet = _interopRequireDefault(require("../../Stylesheet"));
10
9
  var _CollectionAa = require("../../CollectionAa");
11
10
  var _FontStyle = _interopRequireDefault(require("../../FontStyle"));
12
11
  var _reactRelay = require("react-relay");
13
12
  var _utils = require("../../../utils");
14
13
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
14
  function CartItemProduct(_ref) {
16
- var _product$family, _product$featureStyle, _product$featureStyle2, _product$name, _product$variableInst;
15
+ var _product$name, _product$variableInst;
17
16
  let {
18
17
  product: productKey
19
18
  } = _ref;
20
- const product = (0, _reactRelay.useFragment)((_CartItemProduct_product2.default.hash && _CartItemProduct_product2.default.hash !== "b28cd421e634ecb1162252d953233456" && console.error("The definition of 'CartItemProduct_product' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _CartItemProduct_product2.default), productKey);
21
- let productCss;
22
- if ((product === null || product === void 0 ? void 0 : product.__typename) === 'FontStyle') productCss = (_product$family = product.family) === null || _product$family === void 0 ? void 0 : _product$family.cssUrl;
23
- if ((product === null || product === void 0 ? void 0 : product.__typename) === 'FontCollection') productCss = (_product$featureStyle = product.featureStyle) === null || _product$featureStyle === void 0 ? void 0 : (_product$featureStyle2 = _product$featureStyle.family) === null || _product$featureStyle2 === void 0 ? void 0 : _product$featureStyle2.cssUrl;
19
+ const product = (0, _reactRelay.useFragment)((_CartItemProduct_product2.default.hash && _CartItemProduct_product2.default.hash !== "a3931102e3ec08c57abd262038b5d74a" && console.error("The definition of 'CartItemProduct_product' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _CartItemProduct_product2.default), productKey);
24
20
  let productName = (product === null || product === void 0 ? void 0 : product.name) ?? '??';
25
21
  if ((product === null || product === void 0 ? void 0 : product.__typename) === 'FontStyle' && product.family) productName = `${product.family.name} ${product.name}`;
26
22
  if (((product === null || product === void 0 ? void 0 : product.__typename) === 'Bundle' || (product === null || product === void 0 ? void 0 : product.__typename) === 'CollectionBundle') && product.fontCollection && !((_product$name = product.name) !== null && _product$name !== void 0 && _product$name.startsWith(product.fontCollection.name))) productName = `${product.fontCollection.name} ${product.name}`;
27
23
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
28
24
  className: "cart-item__aa"
29
- }, product ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Stylesheet.default, {
30
- href: productCss
31
- }), ['FontCollection', 'Bundle', 'CollectionBundle'].indexOf(product.__typename) >= 0 ? /*#__PURE__*/_react.default.createElement(_CollectionAa.CollectionAa, {
25
+ }, product ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, ['FontCollection', 'Bundle', 'CollectionBundle'].indexOf(product.__typename) >= 0 ? /*#__PURE__*/_react.default.createElement(_CollectionAa.CollectionAa, {
32
26
  product: product
33
27
  }) : /*#__PURE__*/_react.default.createElement(_FontStyle.default, {
34
28
  fontStyle: product
@@ -17,7 +17,6 @@ var _reactRelay = require("react-relay");
17
17
  var _resizeObserver = _interopRequireDefault(require("@react-hook/resize-observer"));
18
18
  var _utils = require("../../utils");
19
19
  var _useFontStyle = _interopRequireDefault(require("../useFontStyle"));
20
- var _Stylesheet = _interopRequireDefault(require("../Stylesheet"));
21
20
  var _useSerializablePreloadedQuery = _interopRequireDefault(require("../../relay/useSerializablePreloadedQuery"));
22
21
  var _StyleSelect = _interopRequireDefault(require("./StyleSelect"));
23
22
  var _Checkbox = _interopRequireDefault(require("../Checkbox"));
@@ -143,7 +142,7 @@ function flattenCharacterList(charSet, glyphNames) {
143
142
  }))
144
143
  };
145
144
  }
146
- _CharacterViewer_family2.default.hash && _CharacterViewer_family2.default.hash !== "02c42505dc4e330bb7c9034ba54e12f6" && console.error("The definition of 'CharacterViewer_family' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _CharacterViewer_family2.default;
145
+ _CharacterViewer_family2.default.hash && _CharacterViewer_family2.default.hash !== "162b1a99fe187b20ee8560018cd5b3ce" && console.error("The definition of 'CharacterViewer_family' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _CharacterViewer_family2.default;
147
146
  function areCombiningChars(input) {
148
147
  for (const char of input) {
149
148
  const codePoint = char.codePointAt(0);
@@ -171,8 +170,8 @@ function CharacterViewerComponent(_ref3) {
171
170
  let {
172
171
  collection: collectionKey
173
172
  } = _ref3;
174
- const collection = (0, _reactRelay.useFragment)((_CharacterViewer_collection2.default.hash && _CharacterViewer_collection2.default.hash !== "806e33bb73206ac443c6880d2941131d" && console.error("The definition of 'CharacterViewer_collection' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _CharacterViewer_collection2.default), collectionKey);
175
- const [fontStyle, refetchFontStyle] = (0, _reactRelay.useRefetchableFragment)((_CharacterViewer_style2.default.hash && _CharacterViewer_style2.default.hash !== "cd4bc4064dd23132ba3bf3d207fe6cb9" && console.error("The definition of 'CharacterViewer_style' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _CharacterViewer_style2.default), collection.featureStyle);
173
+ const collection = (0, _reactRelay.useFragment)((_CharacterViewer_collection2.default.hash && _CharacterViewer_collection2.default.hash !== "c2116c3c2c795e5306c3a2a0ecd60137" && console.error("The definition of 'CharacterViewer_collection' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _CharacterViewer_collection2.default), collectionKey);
174
+ const [fontStyle, refetchFontStyle] = (0, _reactRelay.useRefetchableFragment)((_CharacterViewer_style2.default.hash && _CharacterViewer_style2.default.hash !== "8cbf3328030930b88b3ec3601aaf7c45" && console.error("The definition of 'CharacterViewer_style' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _CharacterViewer_style2.default), collection.featureStyle);
176
175
  let families = [];
177
176
  if (collection.collectionType === 'family') families = [collection];
178
177
  if (collection.collectionType === 'superfamily' && collection.children) families = collection.children;
@@ -201,9 +200,7 @@ function CharacterViewerComponent(_ref3) {
201
200
  let {
202
201
  style
203
202
  } = (0, _useFontStyle.default)({
204
- fontFamily: `${fontStyle === null || fontStyle === void 0 ? void 0 : fontStyle.cssFamily} ${fontStyle === null || fontStyle === void 0 ? void 0 : fontStyle.name}`,
205
- fontWeight: '400',
206
- fontStyle: 'normal'
203
+ fontStyle: fontStyle
207
204
  });
208
205
  if (variableSettings) {
209
206
  style = {
@@ -326,10 +323,7 @@ function CharacterViewerComponent(_ref3) {
326
323
  '--line-gap': fontStyle.verticalMetrics.lineGap ?? undefined,
327
324
  '--monitor-width': monitorWidth
328
325
  }
329
- }, families.filter(coll => coll.collectionType === 'family').map(coll => /*#__PURE__*/_react.default.createElement(_Stylesheet.default, {
330
- key: coll.id,
331
- href: coll.cssUrl
332
- })), /*#__PURE__*/_react.default.createElement("div", {
326
+ }, /*#__PURE__*/_react.default.createElement("div", {
333
327
  className: "character-viewer__character-map"
334
328
  }, /*#__PURE__*/_react.default.createElement("div", {
335
329
  className: "character-viewer__monitor"
@@ -8,12 +8,19 @@ interface FormConfig {
8
8
  interface StripeConfig {
9
9
  appearance?: Appearance;
10
10
  }
11
+ interface SegmentAnalytics {
12
+ page: Function;
13
+ setAnonymousId: Function;
14
+ }
11
15
  interface SegmentConfig {
12
16
  writeKey?: string;
17
+ analytics?: () => SegmentAnalytics;
13
18
  integrations?: Record<string, boolean>;
14
19
  }
15
20
  interface TrackingConfig {
16
21
  enabled?: boolean;
22
+ consentRequired?: boolean;
23
+ consentMessage?: string;
17
24
  segment?: SegmentConfig;
18
25
  }
19
26
  export interface Config {
@@ -88,6 +95,9 @@ export declare const makeConfig: (config?: Config) => {
88
95
  };
89
96
  tracking: {
90
97
  enabled: boolean;
98
+ consentRequired: boolean;
99
+ consentMessage: string | undefined;
100
+ segment: SegmentConfig | undefined;
91
101
  };
92
102
  };
93
103
  declare const _default: React.Context<{
@@ -155,6 +165,9 @@ declare const _default: React.Context<{
155
165
  };
156
166
  tracking: {
157
167
  enabled: boolean;
168
+ consentRequired: boolean;
169
+ consentMessage: string | undefined;
170
+ segment: SegmentConfig | undefined;
158
171
  };
159
172
  }>;
160
173
  export default _default;
@@ -59,7 +59,7 @@ const makeTypeTesterConfig = config => {
59
59
  };
60
60
  };
61
61
  const makeConfig = config => {
62
- var _config$form, _config$storeModal, _config$storeModal2, _config$storeModal3, _config$stripe, _config$tracking;
62
+ var _config$form, _config$storeModal, _config$storeModal2, _config$storeModal3, _config$stripe, _config$tracking, _config$tracking2, _config$tracking3, _config$tracking4;
63
63
  return {
64
64
  typeTester: makeTypeTesterConfig(config === null || config === void 0 ? void 0 : config.typeTester),
65
65
  form: {
@@ -74,7 +74,11 @@ const makeConfig = config => {
74
74
  appearance: (config === null || config === void 0 ? void 0 : (_config$stripe = config.stripe) === null || _config$stripe === void 0 ? void 0 : _config$stripe.appearance) ?? null
75
75
  },
76
76
  tracking: {
77
- enabled: (config === null || config === void 0 ? void 0 : (_config$tracking = config.tracking) === null || _config$tracking === void 0 ? void 0 : _config$tracking.enabled) ?? false // Explicit opt-in required
77
+ enabled: (config === null || config === void 0 ? void 0 : (_config$tracking = config.tracking) === null || _config$tracking === void 0 ? void 0 : _config$tracking.enabled) ?? false,
78
+ // Explicit opt-in required
79
+ consentRequired: (config === null || config === void 0 ? void 0 : (_config$tracking2 = config.tracking) === null || _config$tracking2 === void 0 ? void 0 : _config$tracking2.consentRequired) ?? false,
80
+ consentMessage: config === null || config === void 0 ? void 0 : (_config$tracking3 = config.tracking) === null || _config$tracking3 === void 0 ? void 0 : _config$tracking3.consentMessage,
81
+ segment: config === null || config === void 0 ? void 0 : (_config$tracking4 = config.tracking) === null || _config$tracking4 === void 0 ? void 0 : _config$tracking4.segment
78
82
  }
79
83
  };
80
84
  };
@@ -0,0 +1,18 @@
1
+ export declare function setClientAnonymousId(id: string): void;
2
+ export declare function getClientAnonymousId(): string | undefined;
3
+ /** Parse the _fontdue_cc cookie and check if it contains the given category. */
4
+ export declare function hasConsent(category: string): boolean;
5
+ /** Set the _fontdue_cc cookie with the given categories. */
6
+ export declare function setConsent(categories: string[]): void;
7
+ /**
8
+ * Call callback when the given consent category is granted.
9
+ * If already granted, calls immediately. Otherwise polls (500ms) and
10
+ * listens for the fontdue:consent event. Returns a cleanup function.
11
+ */
12
+ export declare function onConsent(category: string, callback: () => void): () => void;
13
+ /**
14
+ * Activate blocked scripts for the given consent category.
15
+ * Finds all <script type="text/plain" data-consent-category="<category>">
16
+ * elements and replaces them with executable copies.
17
+ */
18
+ export declare function activateScripts(category: string): void;
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.activateScripts = activateScripts;
7
+ exports.getClientAnonymousId = getClientAnonymousId;
8
+ exports.hasConsent = hasConsent;
9
+ exports.onConsent = onConsent;
10
+ exports.setClientAnonymousId = setClientAnonymousId;
11
+ exports.setConsent = setConsent;
12
+ const CONSENT_COOKIE = '_fontdue_cc';
13
+ const CONSENT_EVENT = 'fontdue:consent';
14
+ const MAX_AGE = 60 * 60 * 24 * 365; // 1 year
15
+
16
+ /** Store the client-generated anonymous_id so it can be sent with consent events. */
17
+ let clientAnonymousId;
18
+ function setClientAnonymousId(id) {
19
+ clientAnonymousId = id;
20
+ }
21
+ function getClientAnonymousId() {
22
+ return clientAnonymousId;
23
+ }
24
+
25
+ /** Parse the _fontdue_cc cookie and check if it contains the given category. */
26
+ function hasConsent(category) {
27
+ const match = document.cookie.match(new RegExp('(?:^|;\\s*)' + CONSENT_COOKIE + '=([^;]*)'));
28
+ if (!match) return false;
29
+ return match[1].split(',').includes(category);
30
+ }
31
+
32
+ /** Set the _fontdue_cc cookie with the given categories. */
33
+ function setConsent(categories) {
34
+ document.cookie = CONSENT_COOKIE + '=' + categories.join(',') + ';path=/;max-age=' + MAX_AGE + ';SameSite=Lax;Secure';
35
+ window.dispatchEvent(new CustomEvent(CONSENT_EVENT, {
36
+ detail: {
37
+ categories
38
+ }
39
+ }));
40
+ }
41
+
42
+ /**
43
+ * Call callback when the given consent category is granted.
44
+ * If already granted, calls immediately. Otherwise polls (500ms) and
45
+ * listens for the fontdue:consent event. Returns a cleanup function.
46
+ */
47
+ function onConsent(category, callback) {
48
+ if (hasConsent(category)) {
49
+ callback();
50
+ return () => {};
51
+ }
52
+ let called = false;
53
+ const check = () => {
54
+ if (!called && hasConsent(category)) {
55
+ called = true;
56
+ callback();
57
+ cleanup();
58
+ }
59
+ };
60
+ const interval = setInterval(check, 500);
61
+ window.addEventListener(CONSENT_EVENT, check);
62
+ const cleanup = () => {
63
+ clearInterval(interval);
64
+ window.removeEventListener(CONSENT_EVENT, check);
65
+ };
66
+ return cleanup;
67
+ }
68
+
69
+ /**
70
+ * Activate blocked scripts for the given consent category.
71
+ * Finds all <script type="text/plain" data-consent-category="<category>">
72
+ * elements and replaces them with executable copies.
73
+ */
74
+ function activateScripts(category) {
75
+ const scripts = document.querySelectorAll(`script[type="text/plain"][data-consent-category="${category}"]`);
76
+ scripts.forEach(blocked => {
77
+ var _blocked$parentNode;
78
+ const script = document.createElement('script');
79
+
80
+ // Copy all attributes except type and data-consent-category
81
+ for (const attr of Array.from(blocked.attributes)) {
82
+ if (attr.name !== 'type' && attr.name !== 'data-consent-category') {
83
+ script.setAttribute(attr.name, attr.value);
84
+ }
85
+ }
86
+
87
+ // Copy inline content
88
+ if (blocked.textContent) {
89
+ script.textContent = blocked.textContent;
90
+ }
91
+ (_blocked$parentNode = blocked.parentNode) === null || _blocked$parentNode === void 0 ? void 0 : _blocked$parentNode.replaceChild(script, blocked);
92
+ });
93
+ }
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const ConsentBanner: () => React.JSX.Element | null;
3
+ export default ConsentBanner;
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _ConfigContext = _interopRequireDefault(require("../ConfigContext"));
9
+ var _UrlContext = require("../UrlContext");
10
+ var _consent = require("./consent");
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
13
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
14
+ const DEFAULT_MESSAGE = 'We use cookies to analyze site usage and improve your\u00A0experience.';
15
+ const ConsentBanner = () => {
16
+ const config = (0, _react.useContext)(_ConfigContext.default);
17
+ const url = (0, _UrlContext.useFontdueUrl)();
18
+
19
+ // Start dismissed to avoid hydration mismatch (server has no document.cookie).
20
+ // Check on the client in useEffect.
21
+ const [dismissed, setDismissed] = (0, _react.useState)(true);
22
+ (0, _react.useEffect)(() => {
23
+ if (!config.tracking.consentRequired) return;
24
+ if (!document.cookie.includes('_fontdue_cc=')) {
25
+ setDismissed(false);
26
+ }
27
+ }, [config.tracking.consentRequired]);
28
+ if (dismissed) return null;
29
+ const message = config.tracking.consentMessage || DEFAULT_MESSAGE;
30
+ const sendConsentEvent = categories => {
31
+ // Fire a tracking event so the server sets the _fontdue_state cookie
32
+ // on this response (rather than waiting for the next page load).
33
+ // Include the client anonymous_id so it gets synced to the cookie.
34
+ const body = {
35
+ event: 'Consent Granted',
36
+ properties: {
37
+ categories: categories.join(',')
38
+ }
39
+ };
40
+ const anonId = (0, _consent.getClientAnonymousId)();
41
+ if (anonId) body.anonymous_id = anonId;
42
+ fetch(`${url}/api/track`, {
43
+ method: 'POST',
44
+ headers: {
45
+ 'Content-Type': 'application/json'
46
+ },
47
+ credentials: 'include',
48
+ body: JSON.stringify(body)
49
+ }).catch(() => {});
50
+ };
51
+ const handleAcceptAll = () => {
52
+ (0, _consent.setConsent)(['necessary', 'analytics']);
53
+ (0, _consent.activateScripts)('analytics');
54
+ if (config.tracking.enabled) {
55
+ sendConsentEvent(['necessary', 'analytics']);
56
+ }
57
+ setDismissed(true);
58
+ };
59
+ const handleReject = () => {
60
+ (0, _consent.setConsent)(['necessary']);
61
+ setDismissed(true);
62
+ };
63
+ return /*#__PURE__*/_react.default.createElement("div", {
64
+ className: "fontdue-consent-banner",
65
+ role: "region",
66
+ "aria-label": "Cookie consent"
67
+ }, /*#__PURE__*/_react.default.createElement("div", {
68
+ className: "fontdue-consent-banner__container"
69
+ }, /*#__PURE__*/_react.default.createElement("p", {
70
+ className: "fontdue-consent-banner__message"
71
+ }, message), /*#__PURE__*/_react.default.createElement("div", {
72
+ className: "fontdue-consent-banner__actions"
73
+ }, /*#__PURE__*/_react.default.createElement("button", {
74
+ type: "button",
75
+ className: "fontdue-consent-banner__button fontdue-consent-banner__button--secondary",
76
+ onClick: handleReject
77
+ }, "Necessary only"), /*#__PURE__*/_react.default.createElement("button", {
78
+ type: "button",
79
+ className: "fontdue-consent-banner__button fontdue-consent-banner__button--primary",
80
+ onClick: handleAcceptAll
81
+ }, "Accept all"))));
82
+ };
83
+ var _default = ConsentBanner;
84
+ exports.default = _default;
@@ -12,7 +12,6 @@ var _SelectButton = _interopRequireDefault(require("../SelectButton"));
12
12
  var _SKUPrice = _interopRequireDefault(require("../SKUPrice"));
13
13
  var _Price = require("../Price");
14
14
  var _FamilyList = _interopRequireDefault(require("./FamilyList"));
15
- var _Stylesheet = _interopRequireDefault(require("../Stylesheet"));
16
15
  var _reducer = require("../../reducer");
17
16
  var _utils = require("../../utils");
18
17
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
@@ -24,7 +23,7 @@ function Family(_ref) {
24
23
  node: nodeKey,
25
24
  size
26
25
  } = _ref;
27
- const node = (0, _reactRelay.useFragment)((_Family_node2.default.hash && _Family_node2.default.hash !== "da6c597ec8c8b1672cb1596281a7fc2a" && console.error("The definition of 'Family_node' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _Family_node2.default), nodeKey);
26
+ const node = (0, _reactRelay.useFragment)((_Family_node2.default.hash && _Family_node2.default.hash !== "5c49167e8bf2458ab72604ff960636b2" && console.error("The definition of 'Family_node' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _Family_node2.default), nodeKey);
28
27
  const precartOpen = (0, _reactRedux.useSelector)(state => state.precartOpen);
29
28
  const selector = node.sku ? (0, _reducer.isSelected)(node.sku.id) : () => false;
30
29
  const selected = (0, _reactRedux.useSelector)(selector);
@@ -35,9 +34,7 @@ function Family(_ref) {
35
34
  "data-size": size,
36
35
  "data-selected": selected,
37
36
  "data-buy-button-hovered": buyButtonIsHovered
38
- }, /*#__PURE__*/_react.default.createElement(_Stylesheet.default, {
39
- href: node.cssUrl
40
- }), /*#__PURE__*/_react.default.createElement("div", {
37
+ }, /*#__PURE__*/_react.default.createElement("div", {
41
38
  className: "font-family-block__wrapper"
42
39
  }, node.sku && /*#__PURE__*/_react.default.createElement("div", {
43
40
  className: "font-family-block__select-button"
@@ -17,18 +17,12 @@ function FontStyle(_ref) {
17
17
  children,
18
18
  ...rest
19
19
  } = _ref;
20
- const fontStyle = (0, _reactRelay.useFragment)((_FontStyle_fontStyle2.default.hash && _FontStyle_fontStyle2.default.hash !== "c745ef2ecf5b7f3d0793bea2024d1e69" && console.error("The definition of 'FontStyle_fontStyle' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _FontStyle_fontStyle2.default), fontStyleKey);
21
- const {
22
- cssFamily,
23
- name
24
- } = fontStyle;
20
+ const fontStyle = (0, _reactRelay.useFragment)((_FontStyle_fontStyle2.default.hash && _FontStyle_fontStyle2.default.hash !== "7891603bea1a3e40f40297bf1697eb3c" && console.error("The definition of 'FontStyle_fontStyle' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _FontStyle_fontStyle2.default), fontStyleKey);
25
21
  const {
26
22
  style: fontStyleStyle,
27
23
  loaded
28
24
  } = (0, _useFontStyle.default)({
29
- fontFamily: `${cssFamily} ${name}`,
30
- fontWeight: '400',
31
- fontStyle: 'normal'
25
+ fontStyle
32
26
  });
33
27
  const renderProps = {
34
28
  ...rest,
@@ -6,15 +6,20 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.default = FontdueProviderClientComponent;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
+ var _reactErrorBoundary = require("react-error-boundary");
9
10
  var _reactRedux = require("react-redux");
10
11
  var _reactRelay = require("react-relay");
11
12
  var _environment = require("../../relay/environment");
12
13
  var _ConfigContext = _interopRequireWildcard(require("../ConfigContext"));
13
14
  var _reducer = require("../../reducer");
14
15
  var _ComponentsContext = _interopRequireDefault(require("../ComponentsContext"));
16
+ var _UrlContext = _interopRequireDefault(require("../UrlContext"));
15
17
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
16
18
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
17
19
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
20
+ const ConsentBanner = /*#__PURE__*/(0, _react.lazy)(() => Promise.resolve().then(() => _interopRequireWildcard(require('../ConsentBanner'))));
21
+ const Tracking = /*#__PURE__*/(0, _react.lazy)(() => Promise.resolve().then(() => _interopRequireWildcard(require('../Tracking'))));
22
+ const ServerConfigProvider = /*#__PURE__*/(0, _react.lazy)(() => Promise.resolve().then(() => _interopRequireWildcard(require('../ServerConfigProvider'))));
18
23
  function FontdueProviderClientComponent(_ref) {
19
24
  let {
20
25
  children,
@@ -38,7 +43,15 @@ function FontdueProviderClientComponent(_ref) {
38
43
  fallback: null
39
44
  }, /*#__PURE__*/_react.default.createElement(_ConfigContext.default.Provider, {
40
45
  value: configValue
46
+ }, /*#__PURE__*/_react.default.createElement(_UrlContext.default.Provider, {
47
+ value: url ?? (typeof process !== 'undefined' ? process.env.NEXT_PUBLIC_FONTDUE_URL : undefined) ?? ''
41
48
  }, /*#__PURE__*/_react.default.createElement(_ComponentsContext.default.Provider, {
42
49
  value: components ?? {}
43
- }, children)))));
50
+ }, children, /*#__PURE__*/_react.default.createElement(_reactErrorBoundary.ErrorBoundary, {
51
+ fallback: null
52
+ }, /*#__PURE__*/_react.default.createElement(_react.Suspense, {
53
+ fallback: null
54
+ }, /*#__PURE__*/_react.default.createElement(ServerConfigProvider, {
55
+ codeConfig: config
56
+ }, /*#__PURE__*/_react.default.createElement(ConsentBanner, null), /*#__PURE__*/_react.default.createElement(Tracking, null))))))))));
44
57
  }
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var _react = _interopRequireDefault(require("react"));
8
- var _Stylesheet = require("../Stylesheet");
9
8
  var _TestModeBanner = _interopRequireDefault(require("../TestModeBanner"));
10
9
  var _ThemeConfig = _interopRequireDefault(require("../ThemeConfig"));
11
10
  var _FontdueProviderClientComponent = _interopRequireDefault(require("./FontdueProviderClientComponent"));
@@ -15,7 +14,7 @@ const FontdueProvider = _ref => {
15
14
  children,
16
15
  ...rest
17
16
  } = _ref;
18
- return /*#__PURE__*/_react.default.createElement(_FontdueProviderClientComponent.default, rest, /*#__PURE__*/_react.default.createElement(_Stylesheet.StylesheetContainer, null), /*#__PURE__*/_react.default.createElement(_TestModeBanner.default, null), /*#__PURE__*/_react.default.createElement(_ThemeConfig.default, null), children);
17
+ return /*#__PURE__*/_react.default.createElement(_FontdueProviderClientComponent.default, rest, /*#__PURE__*/_react.default.createElement(_TestModeBanner.default, null), /*#__PURE__*/_react.default.createElement(_ThemeConfig.default, null), children);
19
18
  };
20
19
  var _default = FontdueProvider;
21
20
  exports.default = _default;
@@ -11,7 +11,6 @@ Object.defineProperty(exports, "FontdueProvider_props", {
11
11
  });
12
12
  exports.default = FontdueProvider;
13
13
  var _react = _interopRequireDefault(require("react"));
14
- var _Stylesheet = require("../Stylesheet");
15
14
  var _TestModeBanner = _interopRequireDefault(require("../TestModeBanner"));
16
15
  var _index = _interopRequireDefault(require("../ThemeConfig/index.server"));
17
16
  var _FontdueProviderClientComponent = _interopRequireWildcard(require("./FontdueProviderClientComponent"));
@@ -23,5 +22,5 @@ async function FontdueProvider(_ref) {
23
22
  children,
24
23
  ...rest
25
24
  } = _ref;
26
- return /*#__PURE__*/_react.default.createElement(_FontdueProviderClientComponent.default, rest, /*#__PURE__*/_react.default.createElement(_Stylesheet.StylesheetContainer, null), /*#__PURE__*/_react.default.createElement(_TestModeBanner.default, null), /*#__PURE__*/_react.default.createElement(_index.default, null), children);
25
+ return /*#__PURE__*/_react.default.createElement(_FontdueProviderClientComponent.default, rest, /*#__PURE__*/_react.default.createElement(_TestModeBanner.default, null), /*#__PURE__*/_react.default.createElement(_index.default, null), children);
27
26
  }
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import { Config } from '../ConfigContext';
3
+ interface Props {
4
+ codeConfig?: Config;
5
+ children: React.ReactNode;
6
+ }
7
+ declare const ServerConfigProvider: ({ codeConfig, children }: Props) => React.JSX.Element;
8
+ export default ServerConfigProvider;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ 'use client';
3
+
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _ServerConfigProviderQuery2 = _interopRequireDefault(require("../../__generated__/ServerConfigProviderQuery.graphql"));
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _reactRelay = require("react-relay");
11
+ var _ConfigContext = _interopRequireWildcard(require("../ConfigContext"));
12
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
13
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
14
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
+ const query = (_ServerConfigProviderQuery2.default.hash && _ServerConfigProviderQuery2.default.hash !== "b20ad9bdada6a425ee660a8662a78840" && console.error("The definition of 'ServerConfigProviderQuery' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _ServerConfigProviderQuery2.default);
16
+ const ServerConfigProvider = _ref => {
17
+ var _data$viewer, _data$viewer$fontdueC;
18
+ let {
19
+ codeConfig,
20
+ children
21
+ } = _ref;
22
+ const data = (0, _reactRelay.useLazyLoadQuery)(query, {});
23
+ const tracking = (_data$viewer = data.viewer) === null || _data$viewer === void 0 ? void 0 : (_data$viewer$fontdueC = _data$viewer.fontdueConfig) === null || _data$viewer$fontdueC === void 0 ? void 0 : _data$viewer$fontdueC.tracking;
24
+
25
+ // Server config is the base; code config overrides.
26
+ const merged = {
27
+ ...codeConfig,
28
+ tracking: {
29
+ enabled: tracking === null || tracking === void 0 ? void 0 : tracking.enabled,
30
+ consentRequired: tracking === null || tracking === void 0 ? void 0 : tracking.consentRequired,
31
+ consentMessage: (tracking === null || tracking === void 0 ? void 0 : tracking.consentMessage) ?? undefined,
32
+ ...(codeConfig === null || codeConfig === void 0 ? void 0 : codeConfig.tracking)
33
+ }
34
+ };
35
+ const configValue = (0, _ConfigContext.makeConfig)(merged);
36
+ return /*#__PURE__*/_react.default.createElement(_ConfigContext.default.Provider, {
37
+ value: configValue
38
+ }, children);
39
+ };
40
+ var _default = ServerConfigProvider;
41
+ exports.default = _default;
@@ -9,9 +9,9 @@ var _react = _interopRequireWildcard(require("react"));
9
9
  var _reactRedux = require("react-redux");
10
10
  var _StoreModalContainer = _interopRequireDefault(require("../elements/StoreModalContainer"));
11
11
  var _reactRelay = require("react-relay");
12
- var _relayRuntime = require("relay-runtime");
13
12
  var _StoreModalCheckoutContext = _interopRequireDefault(require("./StoreModalCheckoutContext"));
14
13
  var _CheckoutSteps = _interopRequireDefault(require("../Cart/CheckoutSteps"));
14
+ var _useFontStyle = _interopRequireDefault(require("../useFontStyle"));
15
15
  var _StoreModalLoadingScreen = _interopRequireDefault(require("../elements/StoreModalLoadingScreen"));
16
16
  var _ConfigContext = _interopRequireDefault(require("../ConfigContext"));
17
17
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
@@ -37,24 +37,20 @@ const getBackLink = (history, currentRoute) => {
37
37
  if (!previous) return null;
38
38
  return getPageTitle(previous.name);
39
39
  };
40
- function getFontData(fontStyle) {
41
- if (!fontStyle) return null;
42
- const {
43
- name,
44
- cssFamily,
45
- family
46
- } = fontStyle;
47
- return {
48
- name: `${cssFamily} ${name}`,
49
- cssUrl: (family === null || family === void 0 ? void 0 : family.cssUrl) ?? null
50
- };
51
- }
52
40
  const StoreModalContainer = _ref => {
53
- var _currentOrder, _currentOrder$orderIt, _settings, _settings2;
41
+ var _settings, _settings2, _currentOrder, _currentOrder$orderIt;
54
42
  let {
55
43
  children
56
44
  } = _ref;
57
- const data = (0, _reactRelay.useLazyLoadQuery)((_StoreModalContainerQuery2.default.hash && _StoreModalContainerQuery2.default.hash !== "dd4757b9238f5ae8689c7191b4abe64c" && console.error("The definition of 'StoreModalContainerQuery' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _StoreModalContainerQuery2.default), {});
45
+ const data = (0, _reactRelay.useLazyLoadQuery)((_StoreModalContainerQuery2.default.hash && _StoreModalContainerQuery2.default.hash !== "ae784b9ab1842dacc5857b045b399701" && console.error("The definition of 'StoreModalContainerQuery' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _StoreModalContainerQuery2.default), {});
46
+ const uiFontStyle = (_settings = data.viewer.settings) === null || _settings === void 0 ? void 0 : _settings.uiFontStyle;
47
+ const uiFontStyleBold = (_settings2 = data.viewer.settings) === null || _settings2 === void 0 ? void 0 : _settings2.uiFontStyleBold;
48
+ (0, _useFontStyle.default)({
49
+ fontStyle: uiFontStyle
50
+ });
51
+ (0, _useFontStyle.default)({
52
+ fontStyle: uiFontStyleBold
53
+ });
58
54
  const dispatch = (0, _reactRedux.useDispatch)();
59
55
  const orderItemCount = ((_currentOrder = data.viewer.currentOrder) === null || _currentOrder === void 0 ? void 0 : (_currentOrder$orderIt = _currentOrder.orderItems) === null || _currentOrder$orderIt === void 0 ? void 0 : _currentOrder$orderIt.length) ?? 0;
60
56
  const showCartButton = orderItemCount > 0;
@@ -90,6 +86,8 @@ const StoreModalContainer = _ref => {
90
86
  };
91
87
  const [checkoutStep, setCheckoutStep] = (0, _react.useState)(_CheckoutSteps.default.Customer);
92
88
  const [checkoutError, setCheckoutError] = (0, _react.useState)(null);
89
+ const regularName = uiFontStyle ? `${uiFontStyle.cssFamily} ${uiFontStyle.name}` : null;
90
+ const boldName = uiFontStyleBold ? `${uiFontStyleBold.cssFamily} ${uiFontStyleBold.name}` : null;
93
91
  return /*#__PURE__*/_react.default.createElement(_StoreModalCheckoutContext.default.Provider, {
94
92
  value: {
95
93
  checkoutStep,
@@ -105,8 +103,8 @@ const StoreModalContainer = _ref => {
105
103
  showCartButton: showCartButton,
106
104
  orderItemCount: orderItemCount,
107
105
  fonts: {
108
- regular: getFontData((_settings = data.viewer.settings) === null || _settings === void 0 ? void 0 : _settings.uiFontStyle),
109
- bold: getFontData((_settings2 = data.viewer.settings) === null || _settings2 === void 0 ? void 0 : _settings2.uiFontStyleBold)
106
+ regular: regularName,
107
+ bold: boldName
110
108
  },
111
109
  routeName: currentRoute
112
110
  }, {
@@ -9,7 +9,6 @@ var _react = _interopRequireWildcard(require("react"));
9
9
  var _reactRelay = require("react-relay");
10
10
  var _StoreModalFamilyButton = _interopRequireDefault(require("./StoreModalFamilyButton"));
11
11
  var _StoreModalStyleButton = _interopRequireDefault(require("./StoreModalStyleButton"));
12
- var _Stylesheet = _interopRequireDefault(require("../Stylesheet"));
13
12
  var _StoreModalFamily = _interopRequireDefault(require("../elements/StoreModalFamily"));
14
13
  var _StoreModalBundleButton = _interopRequireDefault(require("./StoreModalBundleButton"));
15
14
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
@@ -37,13 +36,10 @@ function StoreModalFamily(_ref) {
37
36
  onSelect,
38
37
  title
39
38
  } = _ref;
40
- const collection = (0, _reactRelay.useFragment)((_StoreModalFamily_collection2.default.hash && _StoreModalFamily_collection2.default.hash !== "9c85d32d917e909af575bdda90949c0b" && console.error("The definition of 'StoreModalFamily_collection' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _StoreModalFamily_collection2.default), collectionKey);
39
+ const collection = (0, _reactRelay.useFragment)((_StoreModalFamily_collection2.default.hash && _StoreModalFamily_collection2.default.hash !== "73d00dd2b57a2b44a86ee085b4313d77" && console.error("The definition of 'StoreModalFamily_collection' appears to have changed. Run `relay-compiler` to update the generated files to receive the expected data."), _StoreModalFamily_collection2.default), collectionKey);
41
40
  const fontStyles = (0, _react.useMemo)(() => stylesGrouped(collection), [collection]);
42
41
  if ((fontStyles === null || fontStyles === void 0 ? void 0 : fontStyles.length) === 0 && collection.collectionType === 'superfamily' && !collection.sku) return null;
43
42
  return /*#__PURE__*/_react.default.createElement(_StoreModalFamily.default, null, {
44
- stylesheet: collection.cssUrl && /*#__PURE__*/_react.default.createElement(_Stylesheet.default, {
45
- href: collection.cssUrl
46
- }) || null,
47
43
  title,
48
44
  familyButton: /*#__PURE__*/_react.default.createElement(_StoreModalFamilyButton.default, {
49
45
  collection: collection,