fontdue-js 2.17.2 → 2.18.2

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 (64) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/__generated__/CartItemProduct_product.graphql.d.ts +1 -1
  3. package/dist/__generated__/CartItemProduct_product.graphql.js +16 -10
  4. package/dist/__generated__/CartOrderCompleteOrderMutation.graphql.d.ts +1 -1
  5. package/dist/__generated__/CartOrderCompleteOrderMutation.graphql.js +16 -10
  6. package/dist/__generated__/CartOrderRemoveDiscountMutation.graphql.d.ts +1 -1
  7. package/dist/__generated__/CartOrderRemoveDiscountMutation.graphql.js +16 -10
  8. package/dist/__generated__/CartOrderUpdateMutation.graphql.d.ts +1 -1
  9. package/dist/__generated__/CartOrderUpdateMutation.graphql.js +16 -10
  10. package/dist/__generated__/CartQuery.graphql.d.ts +1 -1
  11. package/dist/__generated__/CartQuery.graphql.js +16 -10
  12. package/dist/__generated__/CartStateRemoveDiscountMutation.graphql.d.ts +1 -1
  13. package/dist/__generated__/CartStateRemoveDiscountMutation.graphql.js +37 -29
  14. package/dist/__generated__/CartStateUpdateMutation.graphql.d.ts +1 -1
  15. package/dist/__generated__/CartStateUpdateMutation.graphql.js +79 -66
  16. package/dist/__generated__/CheckoutUpdateCustomerMutation.graphql.d.ts +2 -1
  17. package/dist/__generated__/CheckoutUpdateCustomerMutation.graphql.js +16 -10
  18. package/dist/__generated__/CheckoutUpdateOrderMutation.graphql.d.ts +1 -1
  19. package/dist/__generated__/CheckoutUpdateOrderMutation.graphql.js +16 -10
  20. package/dist/__generated__/CouponCodeInputApplyCouponMutation.graphql.d.ts +1 -1
  21. package/dist/__generated__/CouponCodeInputApplyCouponMutation.graphql.js +37 -29
  22. package/dist/__generated__/NewsletterSignupQuery.graphql.d.ts +3 -1
  23. package/dist/__generated__/NewsletterSignupQuery.graphql.js +16 -4
  24. package/dist/__generated__/NewsletterSignupUpdateCustomerMutation.graphql.d.ts +2 -1
  25. package/dist/__generated__/NewsletterSignupUpdateCustomerMutation.graphql.js +1 -1
  26. package/dist/__generated__/PrecartAddToCartMutation.graphql.d.ts +1 -1
  27. package/dist/__generated__/PrecartAddToCartMutation.graphql.js +21 -15
  28. package/dist/__generated__/StoreModalCartQuery.graphql.d.ts +1 -1
  29. package/dist/__generated__/StoreModalCartQuery.graphql.js +27 -21
  30. package/dist/__generated__/StoreModalProductQuery.graphql.d.ts +1 -1
  31. package/dist/__generated__/StoreModalProductQuery.graphql.js +117 -79
  32. package/dist/__generated__/StoreModalProductSummaryRefetchQuery.graphql.d.ts +1 -1
  33. package/dist/__generated__/StoreModalProductSummaryRefetchQuery.graphql.js +39 -4
  34. package/dist/__generated__/StoreModalProductSummary_viewer.graphql.d.ts +13 -1
  35. package/dist/__generated__/StoreModalProductSummary_viewer.graphql.js +37 -2
  36. package/dist/__generated__/StoreModalUnifiedCheckoutCompleteOrderMutation.graphql.d.ts +1 -1
  37. package/dist/__generated__/StoreModalUnifiedCheckoutCompleteOrderMutation.graphql.js +10 -4
  38. package/dist/__generated__/StoreModalUnifiedCheckoutUpdateCustomerMutation.graphql.d.ts +2 -1
  39. package/dist/__generated__/StoreModalUnifiedCheckoutUpdateCustomerMutation.graphql.js +10 -4
  40. package/dist/__generated__/StoreModalUnifiedCheckoutUpdateOrderMutation.graphql.d.ts +1 -1
  41. package/dist/__generated__/StoreModalUnifiedCheckoutUpdateOrderMutation.graphql.js +36 -28
  42. package/dist/__generated__/StoreModalUnifiedCheckout_order.graphql.d.ts +2 -1
  43. package/dist/__generated__/StoreModalUnifiedCheckout_order.graphql.js +9 -3
  44. package/dist/__generated__/TestFontsFormUpdateCustomerMutation.graphql.d.ts +2 -1
  45. package/dist/__generated__/TestFontsFormUpdateCustomerMutation.graphql.js +16 -10
  46. package/dist/__generated__/TestFontsForm_Query.graphql.d.ts +3 -1
  47. package/dist/__generated__/TestFontsForm_Query.graphql.js +16 -4
  48. package/dist/__generated__/productState_Query.graphql.d.ts +29 -1
  49. package/dist/__generated__/productState_Query.graphql.js +24 -5
  50. package/dist/__generated__/productState_collectionBundle.graphql.d.ts +41 -0
  51. package/dist/__generated__/productState_collectionBundle.graphql.js +88 -0
  52. package/dist/__generated__/productState_node.graphql.d.ts +29 -1
  53. package/dist/__generated__/productState_node.graphql.js +20 -2
  54. package/dist/components/Cart/CartItem/CartItemProduct.js +3 -3
  55. package/dist/components/CharacterViewer/index.js +22 -2
  56. package/dist/components/NewsletterSignup/index.js +62 -19
  57. package/dist/components/Root/productState.js +35 -7
  58. package/dist/components/StoreModalProductSummary/index.js +21 -9
  59. package/dist/components/StripeProvider/index.d.ts +1 -2
  60. package/dist/components/StripeProvider/index.js +7 -10
  61. package/dist/components/TestFontsForm/index.js +60 -12
  62. package/dist/components/elements/StoreModalUnifiedCheckout.js +4 -4
  63. package/dist/relay/environment.js +5 -1
  64. package/package.json +3 -1
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  /**
8
- * @generated SignedSource<<955383975fd3e6c3d1aead410f172705>>
8
+ * @generated SignedSource<<7fdadb278562d0302596d82154638f19>>
9
9
  * @lightSyntaxTransform
10
10
  * @nogrep
11
11
  */
@@ -161,6 +161,13 @@ const node = function () {
161
161
  "kind": "ScalarField",
162
162
  "name": "cssUrl",
163
163
  "storageKey": null
164
+ },
165
+ v13 = {
166
+ "alias": null,
167
+ "args": null,
168
+ "kind": "ScalarField",
169
+ "name": "totalStyles",
170
+ "storageKey": null
164
171
  };
165
172
  return {
166
173
  "fragment": {
@@ -521,13 +528,7 @@ const node = function () {
521
528
  "kind": "ScalarField",
522
529
  "name": "isVariableFont",
523
530
  "storageKey": null
524
- }, {
525
- "alias": null,
526
- "args": null,
527
- "kind": "ScalarField",
528
- "name": "totalStyles",
529
- "storageKey": null
530
- }],
531
+ }, v13 /*: any*/],
531
532
  "type": "FontCollection",
532
533
  "abstractKey": null
533
534
  }, {
@@ -567,6 +568,11 @@ const node = function () {
567
568
  }],
568
569
  "type": "FontStyle",
569
570
  "abstractKey": null
571
+ }, {
572
+ "kind": "InlineFragment",
573
+ "selections": [v2 /*: any*/, v13 /*: any*/],
574
+ "type": "CollectionBundle",
575
+ "abstractKey": null
570
576
  }, {
571
577
  "kind": "InlineFragment",
572
578
  "selections": [{
@@ -686,12 +692,12 @@ const node = function () {
686
692
  }]
687
693
  },
688
694
  "params": {
689
- "cacheID": "7257fc5aa23250270ae452fe00cecbeb",
695
+ "cacheID": "b284cc8ceb665cc1bd54161535f2607d",
690
696
  "id": null,
691
697
  "metadata": {},
692
698
  "name": "TestFontsFormUpdateCustomerMutation",
693
699
  "operationKind": "mutation",
694
- "text": "mutation TestFontsFormUpdateCustomerMutation(\n $input: UpdateCustomerInput!\n) {\n updateCustomer(input: $input) {\n order {\n ...CartOrder_order\n id\n }\n }\n}\n\nfragment CartItemAdditionalLicenses_licenses on License {\n id\n name\n}\n\nfragment CartItemAdditionalLicenses_orderItem on OrderItem {\n licenseSelections {\n license {\n id\n }\n id\n }\n}\n\nfragment CartItemLicense_selection on LicenseSelection {\n id\n license {\n id\n name\n licenseVariables {\n id\n ...CartItemVariable_variable\n }\n }\n licenseVariable {\n id\n }\n ...CartItemVariable_selection\n}\n\nfragment CartItemProduct_product on SkuProduct {\n __isSkuProduct: __typename\n __typename\n ...CollectionAa_product\n ...FontStyle_fontStyle\n ... on FontStyle {\n family {\n name\n cssUrl\n id\n }\n name\n variableInstances {\n name\n }\n }\n ... on Bundle {\n name\n }\n ... on FontCollection {\n name\n isVariableFont\n totalStyles\n featureStyle {\n family {\n cssUrl\n id\n }\n id\n }\n }\n}\n\nfragment CartItemVariable_selection on LicenseSelection {\n id\n variableText\n license {\n id\n }\n licenseVariable {\n ...VariableTableAmounts_variable\n id\n name\n variableType\n licenseOptions {\n id\n }\n }\n licenseOption {\n ...VariableTableAmounts_option\n id\n name\n amount\n }\n}\n\nfragment CartItemVariable_variable on LicenseVariable {\n id\n licenseOptions {\n id\n name\n amount\n }\n}\n\nfragment CartItem_node on OrderItem {\n ...CartItemAdditionalLicenses_orderItem\n id\n price {\n ...Price_price\n }\n sku {\n price {\n ...Price_price\n }\n product {\n ...CartItemProduct_product\n __typename\n ... on Licenseable {\n __isLicenseable: __typename\n licenses {\n ...CartItemAdditionalLicenses_licenses\n id\n licenseVariables {\n id\n licenseOptions {\n id\n }\n }\n }\n }\n ... on Node {\n __isNode: __typename\n id\n }\n }\n id\n }\n licenseSelections {\n ...CartItemLicense_selection\n id\n license {\n id\n }\n licenseVariable {\n id\n }\n licenseOption {\n id\n }\n variableText\n }\n}\n\nfragment CartOrder_order on Order {\n ...Checkout_order\n ...Download_order\n ...CartTotals_order\n ...CartState_order\n id\n orderItems {\n ...CartItem_node\n id\n licenseSelections {\n license {\n id\n }\n licenseVariable {\n id\n variableType\n }\n licenseOption {\n id\n }\n variableText\n id\n }\n }\n orderVariableSelections {\n orderVariable {\n id\n }\n orderVariableOption {\n id\n }\n id\n }\n discount {\n id\n }\n customer {\n email\n name\n anonymous\n id\n }\n billingIdentity {\n ...IdentityBox_identity\n }\n licenseeIdentity {\n ...IdentityBox_identity\n }\n licenseeIsBillingIdentity\n stripePaymentMethod {\n card {\n last4\n brand\n }\n }\n stripePaymentIntent {\n status\n }\n canCompleteWithCoupon\n completedWithCoupon\n}\n\nfragment CartState_order on Order {\n id\n orderItems {\n id\n licenseSelections {\n license {\n id\n }\n licenseVariable {\n id\n }\n licenseOption {\n id\n }\n variableText\n id\n }\n }\n orderVariableSelections {\n orderVariable {\n id\n }\n orderVariableOption {\n id\n }\n countryCode\n id\n }\n}\n\nfragment CartTotals_order on Order {\n subtotal {\n ...Price_price\n }\n discount {\n amount {\n amount\n ...Price_price\n }\n coupon {\n ...CouponText_coupon\n id\n }\n id\n }\n discountedSubtotal {\n ...Price_price\n }\n total {\n amount\n ...Price_price\n }\n taxRate\n taxes {\n ...Price_price\n }\n taxName\n gstIncluded\n}\n\nfragment Checkout_order on Order {\n canCompleteWithCoupon\n customer {\n name\n email\n newsletterOptIn\n id\n }\n billingIdentity {\n name\n organization\n email\n phoneNullable\n street\n locality\n sublocality\n country\n administrativeArea\n zip\n vatNumber\n }\n licenseeIdentity {\n name\n organization\n email\n phoneNullable\n street\n locality\n sublocality\n country\n administrativeArea\n zip\n vatNumber\n }\n licenseeIsBillingIdentity\n}\n\nfragment CollectionAa_product on SkuProduct {\n __isSkuProduct: __typename\n __typename\n ... on FontCollection {\n featureStyle {\n ...FontStyle_fontStyle\n id\n }\n }\n ... on Bundle {\n fontStyles {\n ...FontStyle_fontStyle\n id\n }\n }\n}\n\nfragment CouponText_coupon on Coupon {\n type\n percentAmount\n creditAmount {\n amount\n currency\n }\n creditAmountRemaining {\n amount\n currency\n }\n}\n\nfragment Download_order on Order {\n id\n archiveUrl\n customer {\n email\n id\n }\n completedWithCoupon\n}\n\nfragment FontStyle_fontStyle on FontStyle {\n cssFamily\n name\n}\n\nfragment IdentityBox_identity on Identity {\n email\n phoneFormatted\n addressFormatted\n vatNumber\n}\n\nfragment Price_price on Money {\n amount\n currency\n}\n\nfragment VariableTableAmounts_option on LicenseOption {\n amounts\n}\n\nfragment VariableTableAmounts_variable on LicenseVariable {\n units\n}\n"
700
+ "text": "mutation TestFontsFormUpdateCustomerMutation(\n $input: UpdateCustomerInput!\n) {\n updateCustomer(input: $input) {\n order {\n ...CartOrder_order\n id\n }\n }\n}\n\nfragment CartItemAdditionalLicenses_licenses on License {\n id\n name\n}\n\nfragment CartItemAdditionalLicenses_orderItem on OrderItem {\n licenseSelections {\n license {\n id\n }\n id\n }\n}\n\nfragment CartItemLicense_selection on LicenseSelection {\n id\n license {\n id\n name\n licenseVariables {\n id\n ...CartItemVariable_variable\n }\n }\n licenseVariable {\n id\n }\n ...CartItemVariable_selection\n}\n\nfragment CartItemProduct_product on SkuProduct {\n __isSkuProduct: __typename\n __typename\n ...CollectionAa_product\n ...FontStyle_fontStyle\n ... on FontStyle {\n family {\n name\n cssUrl\n id\n }\n name\n variableInstances {\n name\n }\n }\n ... on Bundle {\n name\n }\n ... on FontCollection {\n name\n isVariableFont\n totalStyles\n featureStyle {\n family {\n cssUrl\n id\n }\n id\n }\n }\n ... on CollectionBundle {\n name\n totalStyles\n }\n}\n\nfragment CartItemVariable_selection on LicenseSelection {\n id\n variableText\n license {\n id\n }\n licenseVariable {\n ...VariableTableAmounts_variable\n id\n name\n variableType\n licenseOptions {\n id\n }\n }\n licenseOption {\n ...VariableTableAmounts_option\n id\n name\n amount\n }\n}\n\nfragment CartItemVariable_variable on LicenseVariable {\n id\n licenseOptions {\n id\n name\n amount\n }\n}\n\nfragment CartItem_node on OrderItem {\n ...CartItemAdditionalLicenses_orderItem\n id\n price {\n ...Price_price\n }\n sku {\n price {\n ...Price_price\n }\n product {\n ...CartItemProduct_product\n __typename\n ... on Licenseable {\n __isLicenseable: __typename\n licenses {\n ...CartItemAdditionalLicenses_licenses\n id\n licenseVariables {\n id\n licenseOptions {\n id\n }\n }\n }\n }\n ... on Node {\n __isNode: __typename\n id\n }\n }\n id\n }\n licenseSelections {\n ...CartItemLicense_selection\n id\n license {\n id\n }\n licenseVariable {\n id\n }\n licenseOption {\n id\n }\n variableText\n }\n}\n\nfragment CartOrder_order on Order {\n ...Checkout_order\n ...Download_order\n ...CartTotals_order\n ...CartState_order\n id\n orderItems {\n ...CartItem_node\n id\n licenseSelections {\n license {\n id\n }\n licenseVariable {\n id\n variableType\n }\n licenseOption {\n id\n }\n variableText\n id\n }\n }\n orderVariableSelections {\n orderVariable {\n id\n }\n orderVariableOption {\n id\n }\n id\n }\n discount {\n id\n }\n customer {\n email\n name\n anonymous\n id\n }\n billingIdentity {\n ...IdentityBox_identity\n }\n licenseeIdentity {\n ...IdentityBox_identity\n }\n licenseeIsBillingIdentity\n stripePaymentMethod {\n card {\n last4\n brand\n }\n }\n stripePaymentIntent {\n status\n }\n canCompleteWithCoupon\n completedWithCoupon\n}\n\nfragment CartState_order on Order {\n id\n orderItems {\n id\n licenseSelections {\n license {\n id\n }\n licenseVariable {\n id\n }\n licenseOption {\n id\n }\n variableText\n id\n }\n }\n orderVariableSelections {\n orderVariable {\n id\n }\n orderVariableOption {\n id\n }\n countryCode\n id\n }\n}\n\nfragment CartTotals_order on Order {\n subtotal {\n ...Price_price\n }\n discount {\n amount {\n amount\n ...Price_price\n }\n coupon {\n ...CouponText_coupon\n id\n }\n id\n }\n discountedSubtotal {\n ...Price_price\n }\n total {\n amount\n ...Price_price\n }\n taxRate\n taxes {\n ...Price_price\n }\n taxName\n gstIncluded\n}\n\nfragment Checkout_order on Order {\n canCompleteWithCoupon\n customer {\n name\n email\n newsletterOptIn\n id\n }\n billingIdentity {\n name\n organization\n email\n phoneNullable\n street\n locality\n sublocality\n country\n administrativeArea\n zip\n vatNumber\n }\n licenseeIdentity {\n name\n organization\n email\n phoneNullable\n street\n locality\n sublocality\n country\n administrativeArea\n zip\n vatNumber\n }\n licenseeIsBillingIdentity\n}\n\nfragment CollectionAa_product on SkuProduct {\n __isSkuProduct: __typename\n __typename\n ... on FontCollection {\n featureStyle {\n ...FontStyle_fontStyle\n id\n }\n }\n ... on Bundle {\n fontStyles {\n ...FontStyle_fontStyle\n id\n }\n }\n}\n\nfragment CouponText_coupon on Coupon {\n type\n percentAmount\n creditAmount {\n amount\n currency\n }\n creditAmountRemaining {\n amount\n currency\n }\n}\n\nfragment Download_order on Order {\n id\n archiveUrl\n customer {\n email\n id\n }\n completedWithCoupon\n}\n\nfragment FontStyle_fontStyle on FontStyle {\n cssFamily\n name\n}\n\nfragment IdentityBox_identity on Identity {\n email\n phoneFormatted\n addressFormatted\n vatNumber\n}\n\nfragment Price_price on Money {\n amount\n currency\n}\n\nfragment VariableTableAmounts_option on LicenseOption {\n amounts\n}\n\nfragment VariableTableAmounts_variable on LicenseVariable {\n units\n}\n"
695
701
  }
696
702
  };
697
703
  }();
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @generated SignedSource<<2b508e476eab7361bd3e3adc71e33eec>>
2
+ * @generated SignedSource<<ee5a584fb3013fee58346747b616f67d>>
3
3
  * @lightSyntaxTransform
4
4
  * @nogrep
5
5
  */
@@ -10,6 +10,8 @@ export type TestFontsForm_Query$data = {
10
10
  readonly settings: {
11
11
  readonly eulaAgreementLabel: string | null;
12
12
  readonly newsletterOptInLabel: string | null;
13
+ readonly recaptchaEnabled: boolean;
14
+ readonly recaptchaSiteKey: string | null;
13
15
  } | null;
14
16
  readonly testFonts: {
15
17
  readonly archiveUrl: string | null;
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  /**
8
- * @generated SignedSource<<2b508e476eab7361bd3e3adc71e33eec>>
8
+ * @generated SignedSource<<ee5a584fb3013fee58346747b616f67d>>
9
9
  * @lightSyntaxTransform
10
10
  * @nogrep
11
11
  */
@@ -39,6 +39,18 @@ const node = function () {
39
39
  "kind": "ScalarField",
40
40
  "name": "newsletterOptInLabel",
41
41
  "storageKey": "newsletterOptInLabel(format:\"HTML\")"
42
+ }, {
43
+ "alias": null,
44
+ "args": null,
45
+ "kind": "ScalarField",
46
+ "name": "recaptchaEnabled",
47
+ "storageKey": null
48
+ }, {
49
+ "alias": null,
50
+ "args": null,
51
+ "kind": "ScalarField",
52
+ "name": "recaptchaSiteKey",
53
+ "storageKey": null
42
54
  }],
43
55
  "storageKey": null
44
56
  },
@@ -100,15 +112,15 @@ const node = function () {
100
112
  }]
101
113
  },
102
114
  "params": {
103
- "cacheID": "d7935ae01719384130b5923be45bb47a",
115
+ "cacheID": "328cab794a68cbe666374e901da4d26b",
104
116
  "id": null,
105
117
  "metadata": {},
106
118
  "name": "TestFontsForm_Query",
107
119
  "operationKind": "query",
108
- "text": "query TestFontsForm_Query {\n viewer {\n settings {\n eulaAgreementLabel(format: HTML)\n newsletterOptInLabel(format: HTML)\n }\n testFonts {\n archiveUrl\n }\n id\n }\n}\n"
120
+ "text": "query TestFontsForm_Query {\n viewer {\n settings {\n eulaAgreementLabel(format: HTML)\n newsletterOptInLabel(format: HTML)\n recaptchaEnabled\n recaptchaSiteKey\n }\n testFonts {\n archiveUrl\n }\n id\n }\n}\n"
109
121
  }
110
122
  };
111
123
  }();
112
- node.hash = "b8838ac445fa9addb19af5a2d653e979";
124
+ node.hash = "cd43f0cacc4dcf01cf94fb1ff97197ca";
113
125
  var _default = node;
114
126
  exports.default = _default;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @generated SignedSource<<6bc8d1858ae4cfb7afe57f90ca54cd9d>>
2
+ * @generated SignedSource<<b4e88c2638ba792951d57f4750391bdc>>
3
3
  * @lightSyntaxTransform
4
4
  * @nogrep
5
5
  */
@@ -67,6 +67,34 @@ export type productState_Query$data = {
67
67
  };
68
68
  } | null;
69
69
  }> | null;
70
+ readonly collectionBundles: ReadonlyArray<{
71
+ readonly id: string;
72
+ readonly memberCollections: ReadonlyArray<{
73
+ readonly fontStyles: ReadonlyArray<{
74
+ readonly id: string;
75
+ readonly sku: {
76
+ readonly id: string;
77
+ readonly price: {
78
+ readonly amount: number;
79
+ };
80
+ } | null;
81
+ }>;
82
+ readonly id: string;
83
+ readonly sku: {
84
+ readonly id: string;
85
+ readonly price: {
86
+ readonly amount: number;
87
+ };
88
+ } | null;
89
+ }> | null;
90
+ readonly name: string;
91
+ readonly sku: {
92
+ readonly id: string;
93
+ readonly price: {
94
+ readonly amount: number;
95
+ };
96
+ } | null;
97
+ }> | null;
70
98
  readonly fontStyles: ReadonlyArray<{
71
99
  readonly id: string;
72
100
  readonly sku: {
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  /**
8
- * @generated SignedSource<<6bc8d1858ae4cfb7afe57f90ca54cd9d>>
8
+ * @generated SignedSource<<b4e88c2638ba792951d57f4750391bdc>>
9
9
  * @lightSyntaxTransform
10
10
  * @nogrep
11
11
  */
@@ -92,6 +92,25 @@ const node = function () {
92
92
  "storageKey": null
93
93
  },
94
94
  v8 = {
95
+ "alias": null,
96
+ "args": null,
97
+ "concreteType": "CollectionBundle",
98
+ "kind": "LinkedField",
99
+ "name": "collectionBundles",
100
+ "plural": true,
101
+ "selections": [v3 /*: any*/, v4 /*: any*/, v5 /*: any*/, {
102
+ "alias": null,
103
+ "args": null,
104
+ "concreteType": "FontCollection",
105
+ "kind": "LinkedField",
106
+ "name": "memberCollections",
107
+ "plural": true,
108
+ "selections": [v3 /*: any*/, v5 /*: any*/, v6 /*: any*/],
109
+ "storageKey": null
110
+ }],
111
+ "storageKey": null
112
+ },
113
+ v9 = {
95
114
  "alias": null,
96
115
  "args": [{
97
116
  "kind": "Literal",
@@ -120,7 +139,7 @@ const node = function () {
120
139
  "plural": false,
121
140
  "selections": [{
122
141
  "kind": "InlineFragment",
123
- "selections": [v2 /*: any*/, v3 /*: any*/, v4 /*: any*/, v5 /*: any*/, v6 /*: any*/, v7 /*: any*/, v8 /*: any*/],
142
+ "selections": [v2 /*: any*/, v3 /*: any*/, v4 /*: any*/, v5 /*: any*/, v6 /*: any*/, v7 /*: any*/, v8 /*: any*/, v9 /*: any*/],
124
143
  "type": "FontCollection",
125
144
  "abstractKey": null
126
145
  }],
@@ -143,7 +162,7 @@ const node = function () {
143
162
  "plural": false,
144
163
  "selections": [v2 /*: any*/, v3 /*: any*/, {
145
164
  "kind": "InlineFragment",
146
- "selections": [v4 /*: any*/, v5 /*: any*/, v6 /*: any*/, v7 /*: any*/, v8 /*: any*/],
165
+ "selections": [v4 /*: any*/, v5 /*: any*/, v6 /*: any*/, v7 /*: any*/, v8 /*: any*/, v9 /*: any*/],
147
166
  "type": "FontCollection",
148
167
  "abstractKey": null
149
168
  }],
@@ -151,12 +170,12 @@ const node = function () {
151
170
  }]
152
171
  },
153
172
  "params": {
154
- "cacheID": "90025dc788ad02719883b403aa953c6d",
173
+ "cacheID": "46b69511613049f8b0186da9dd74c579",
155
174
  "id": null,
156
175
  "metadata": {},
157
176
  "name": "productState_Query",
158
177
  "operationKind": "query",
159
- "text": "query productState_Query(\n $id: ID!\n) {\n node(id: $id) {\n __typename\n ... on FontCollection {\n __typename\n id\n name\n sku {\n id\n price {\n amount\n }\n }\n fontStyles {\n id\n sku {\n id\n price {\n amount\n }\n }\n }\n bundles {\n id\n name\n sku {\n id\n price {\n amount\n }\n }\n fontStyles {\n id\n sku {\n id\n price {\n amount\n }\n }\n }\n }\n children(collectionTypes: [FAMILY]) {\n id\n name\n sku {\n id\n price {\n amount\n }\n }\n fontStyles {\n id\n sku {\n id\n price {\n amount\n }\n }\n }\n bundles {\n id\n name\n sku {\n id\n price {\n amount\n }\n }\n fontStyles {\n id\n sku {\n id\n price {\n amount\n }\n }\n }\n }\n }\n }\n id\n }\n}\n"
178
+ "text": "query productState_Query(\n $id: ID!\n) {\n node(id: $id) {\n __typename\n ... on FontCollection {\n __typename\n id\n name\n sku {\n id\n price {\n amount\n }\n }\n fontStyles {\n id\n sku {\n id\n price {\n amount\n }\n }\n }\n bundles {\n id\n name\n sku {\n id\n price {\n amount\n }\n }\n fontStyles {\n id\n sku {\n id\n price {\n amount\n }\n }\n }\n }\n collectionBundles {\n id\n name\n sku {\n id\n price {\n amount\n }\n }\n memberCollections {\n id\n sku {\n id\n price {\n amount\n }\n }\n fontStyles {\n id\n sku {\n id\n price {\n amount\n }\n }\n }\n }\n }\n children(collectionTypes: [FAMILY]) {\n id\n name\n sku {\n id\n price {\n amount\n }\n }\n fontStyles {\n id\n sku {\n id\n price {\n amount\n }\n }\n }\n bundles {\n id\n name\n sku {\n id\n price {\n amount\n }\n }\n fontStyles {\n id\n sku {\n id\n price {\n amount\n }\n }\n }\n }\n }\n }\n id\n }\n}\n"
160
179
  }
161
180
  };
162
181
  }();
@@ -0,0 +1,41 @@
1
+ /**
2
+ * @generated SignedSource<<c1a8446af3677d58e3851338c54cf16e>>
3
+ * @lightSyntaxTransform
4
+ * @nogrep
5
+ */
6
+ import { ReaderFragment } from 'relay-runtime';
7
+ import { FragmentRefs } from "relay-runtime";
8
+ export type productState_collectionBundle$data = {
9
+ readonly id: string;
10
+ readonly memberCollections: ReadonlyArray<{
11
+ readonly fontStyles: ReadonlyArray<{
12
+ readonly id: string;
13
+ readonly sku: {
14
+ readonly id: string;
15
+ readonly price: {
16
+ readonly amount: number;
17
+ };
18
+ } | null;
19
+ }>;
20
+ readonly id: string;
21
+ readonly sku: {
22
+ readonly id: string;
23
+ readonly price: {
24
+ readonly amount: number;
25
+ };
26
+ } | null;
27
+ }> | null;
28
+ readonly name: string;
29
+ readonly sku: {
30
+ readonly id: string;
31
+ readonly price: {
32
+ readonly amount: number;
33
+ };
34
+ } | null;
35
+ };
36
+ export type productState_collectionBundle$key = {
37
+ readonly " $data"?: productState_collectionBundle$data;
38
+ readonly " $fragmentSpreads": FragmentRefs<"productState_collectionBundle">;
39
+ };
40
+ declare const node: ReaderFragment;
41
+ export default node;
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ /**
8
+ * @generated SignedSource<<c1a8446af3677d58e3851338c54cf16e>>
9
+ * @lightSyntaxTransform
10
+ * @nogrep
11
+ */
12
+
13
+ /* tslint:disable */
14
+ /* eslint-disable */
15
+ // @ts-nocheck
16
+
17
+ const node = function () {
18
+ var v0 = {
19
+ "alias": null,
20
+ "args": null,
21
+ "kind": "ScalarField",
22
+ "name": "id",
23
+ "storageKey": null
24
+ },
25
+ v1 = {
26
+ "alias": null,
27
+ "args": null,
28
+ "concreteType": "Sku",
29
+ "kind": "LinkedField",
30
+ "name": "sku",
31
+ "plural": false,
32
+ "selections": [v0 /*: any*/, {
33
+ "alias": null,
34
+ "args": null,
35
+ "concreteType": "Money",
36
+ "kind": "LinkedField",
37
+ "name": "price",
38
+ "plural": false,
39
+ "selections": [{
40
+ "alias": null,
41
+ "args": null,
42
+ "kind": "ScalarField",
43
+ "name": "amount",
44
+ "storageKey": null
45
+ }],
46
+ "storageKey": null
47
+ }],
48
+ "storageKey": null
49
+ };
50
+ return {
51
+ "argumentDefinitions": [],
52
+ "kind": "Fragment",
53
+ "metadata": {
54
+ "mask": false
55
+ },
56
+ "name": "productState_collectionBundle",
57
+ "selections": [v0 /*: any*/, {
58
+ "alias": null,
59
+ "args": null,
60
+ "kind": "ScalarField",
61
+ "name": "name",
62
+ "storageKey": null
63
+ }, v1 /*: any*/, {
64
+ "alias": null,
65
+ "args": null,
66
+ "concreteType": "FontCollection",
67
+ "kind": "LinkedField",
68
+ "name": "memberCollections",
69
+ "plural": true,
70
+ "selections": [v0 /*: any*/, v1 /*: any*/, {
71
+ "alias": null,
72
+ "args": null,
73
+ "concreteType": "FontStyle",
74
+ "kind": "LinkedField",
75
+ "name": "fontStyles",
76
+ "plural": true,
77
+ "selections": [v0 /*: any*/, v1 /*: any*/],
78
+ "storageKey": null
79
+ }],
80
+ "storageKey": null
81
+ }],
82
+ "type": "CollectionBundle",
83
+ "abstractKey": null
84
+ };
85
+ }();
86
+ node.hash = "6744aa8f57d14b0111a0c49f488d7b03";
87
+ var _default = node;
88
+ exports.default = _default;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @generated SignedSource<<516d3d7a123f16a93143726e2a11f81d>>
2
+ * @generated SignedSource<<89ccca0787788a2ceb37d58b6ab5340a>>
3
3
  * @lightSyntaxTransform
4
4
  * @nogrep
5
5
  */
@@ -63,6 +63,34 @@ export type productState_node$data = {
63
63
  };
64
64
  } | null;
65
65
  }> | null;
66
+ readonly collectionBundles: ReadonlyArray<{
67
+ readonly id: string;
68
+ readonly memberCollections: ReadonlyArray<{
69
+ readonly fontStyles: ReadonlyArray<{
70
+ readonly id: string;
71
+ readonly sku: {
72
+ readonly id: string;
73
+ readonly price: {
74
+ readonly amount: number;
75
+ };
76
+ } | null;
77
+ }>;
78
+ readonly id: string;
79
+ readonly sku: {
80
+ readonly id: string;
81
+ readonly price: {
82
+ readonly amount: number;
83
+ };
84
+ } | null;
85
+ }> | null;
86
+ readonly name: string;
87
+ readonly sku: {
88
+ readonly id: string;
89
+ readonly price: {
90
+ readonly amount: number;
91
+ };
92
+ } | null;
93
+ }> | null;
66
94
  readonly fontStyles: ReadonlyArray<{
67
95
  readonly id: string;
68
96
  readonly sku: {
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  /**
8
- * @generated SignedSource<<516d3d7a123f16a93143726e2a11f81d>>
8
+ * @generated SignedSource<<89ccca0787788a2ceb37d58b6ab5340a>>
9
9
  * @lightSyntaxTransform
10
10
  * @nogrep
11
11
  */
@@ -82,6 +82,24 @@ const node = function () {
82
82
  },
83
83
  "name": "productState_node",
84
84
  "selections": [v0 /*: any*/, v1 /*: any*/, v2 /*: any*/, v3 /*: any*/, v4 /*: any*/, {
85
+ "alias": null,
86
+ "args": null,
87
+ "concreteType": "CollectionBundle",
88
+ "kind": "LinkedField",
89
+ "name": "collectionBundles",
90
+ "plural": true,
91
+ "selections": [v0 /*: any*/, v1 /*: any*/, v2 /*: any*/, {
92
+ "alias": null,
93
+ "args": null,
94
+ "concreteType": "FontCollection",
95
+ "kind": "LinkedField",
96
+ "name": "memberCollections",
97
+ "plural": true,
98
+ "selections": [v0 /*: any*/, v2 /*: any*/, v3 /*: any*/],
99
+ "storageKey": null
100
+ }],
101
+ "storageKey": null
102
+ }, {
85
103
  "alias": null,
86
104
  "args": [{
87
105
  "kind": "Literal",
@@ -99,6 +117,6 @@ const node = function () {
99
117
  "abstractKey": null
100
118
  };
101
119
  }();
102
- node.hash = "aab1ef07e0192a0d22a4c300084d9d05";
120
+ node.hash = "a1e172db45ca550a254819d877497d12";
103
121
  var _default = node;
104
122
  exports.default = _default;
@@ -17,7 +17,7 @@ function CartItemProduct(_ref) {
17
17
  let {
18
18
  product: productKey
19
19
  } = _ref;
20
- const product = (0, _reactRelay.useFragment)((_CartItemProduct_product2.default.hash && _CartItemProduct_product2.default.hash !== "93463fc6e5eab6e2f910904bf0c2393e" && 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);
20
+ const product = (0, _reactRelay.useFragment)((_CartItemProduct_product2.default.hash && _CartItemProduct_product2.default.hash !== "22f49bcb8a461d2d3eefc4f8ba1e575c" && 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
21
  let productCss;
22
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
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;
@@ -27,7 +27,7 @@ function CartItemProduct(_ref) {
27
27
  className: "cart-item__aa"
28
28
  }, product ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Stylesheet.default, {
29
29
  href: productCss
30
- }), ['FontCollection', 'Bundle'].indexOf(product.__typename) >= 0 ? /*#__PURE__*/_react.default.createElement(_CollectionAa.CollectionAa, {
30
+ }), ['FontCollection', 'Bundle', 'CollectionBundle'].indexOf(product.__typename) >= 0 ? /*#__PURE__*/_react.default.createElement(_CollectionAa.CollectionAa, {
31
31
  product: product
32
32
  }) : /*#__PURE__*/_react.default.createElement(_FontStyle.default, {
33
33
  fontStyle: product
@@ -37,7 +37,7 @@ function CartItemProduct(_ref) {
37
37
  className: "cart-item__name"
38
38
  }, productName), product !== null && product !== void 0 && product.isVariableFont || product !== null && product !== void 0 && (_product$variableInst = product.variableInstances) !== null && _product$variableInst !== void 0 && _product$variableInst.length ? /*#__PURE__*/_react.default.createElement("div", {
39
39
  className: "cart-item__label"
40
- }, "Variable font") : (product === null || product === void 0 ? void 0 : product.__typename) === 'FontCollection' && /*#__PURE__*/_react.default.createElement("div", {
40
+ }, "Variable font") : ((product === null || product === void 0 ? void 0 : product.__typename) === 'FontCollection' || (product === null || product === void 0 ? void 0 : product.__typename) === 'CollectionBundle') && /*#__PURE__*/_react.default.createElement("div", {
41
41
  className: "cart-item__label"
42
42
  }, "(", (0, _utils.pluralize)(product.totalStyles ?? 0, 'style'), ")")));
43
43
  }
@@ -159,6 +159,14 @@ function areCombiningChars(input) {
159
159
  }
160
160
  return true;
161
161
  }
162
+
163
+ // Arabic positional features that don't render correctly in Safari
164
+ // These require text shaping that Safari doesn't properly support with ZWJ
165
+ const UNSUPPORTED_POSITIONAL_FEATURES = ['init', 'medi', 'fina'];
166
+ function hasUnsupportedPositionalFeatures(features) {
167
+ if (!features) return false;
168
+ return features.some(f => UNSUPPORTED_POSITIONAL_FEATURES.includes(f));
169
+ }
162
170
  function CharacterViewerComponent(_ref3) {
163
171
  let {
164
172
  collection: collectionKey
@@ -277,15 +285,27 @@ function CharacterViewerComponent(_ref3) {
277
285
  const groups = (0, _react.useMemo)(() => {
278
286
  var _collection$glyphGrou;
279
287
  return (_collection$glyphGrou = collection.glyphGroups) === null || _collection$glyphGrou === void 0 ? void 0 : _collection$glyphGrou.map(_ref5 => {
288
+ var _characterSets$filter;
280
289
  let {
281
290
  name,
282
291
  characterSets
283
292
  } = _ref5;
284
293
  return {
285
294
  name,
286
- characterSets: characterSets === null || characterSets === void 0 ? void 0 : characterSets.map(charSet => flattenCharacterList(charSet, fontStyle.glyphNames)).filter(_utils.notEmpty)
295
+ characterSets: characterSets
296
+ // Filter out character sets with Arabic positional features (init, medi, fina)
297
+ // These don't render correctly in Safari due to text shaping limitations
298
+ === null || characterSets
299
+ // Filter out character sets with Arabic positional features (init, medi, fina)
300
+ // These don't render correctly in Safari due to text shaping limitations
301
+ === void 0 ? void 0 : (_characterSets$filter = characterSets
302
+ // Filter out character sets with Arabic positional features (init, medi, fina)
303
+ // These don't render correctly in Safari due to text shaping limitations
304
+ .filter(charSet => !hasUnsupportedPositionalFeatures(charSet.features))) === null || _characterSets$filter === void 0 ? void 0 : _characterSets$filter.map(charSet => flattenCharacterList(charSet, fontStyle.glyphNames)).filter(_utils.notEmpty)
287
305
  };
288
- });
306
+ })
307
+ // Filter out groups that have no character sets left after filtering
308
+ .filter(group => group.characterSets && group.characterSets.length > 0);
289
309
  }, [collection, fontStyle]);
290
310
  return /*#__PURE__*/_react.default.createElement("div", {
291
311
  className: "character-viewer",